(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-08
(54)【発明の名称】メモリユニットにデータオペランドを格納する方法、およびメモリユニット内のデータオペランドにアクセスする方法
(51)【国際特許分類】
G06F 12/06 20060101AFI20241031BHJP
G06F 12/0875 20160101ALI20241031BHJP
G06F 13/16 20060101ALI20241031BHJP
G06F 9/34 20180101ALI20241031BHJP
【FI】
G06F12/06 522A
G06F12/0875 102
G06F13/16 510A
G06F9/34 350A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024533081
(86)(22)【出願日】2021-12-03
(85)【翻訳文提出日】2024-07-30
(86)【国際出願番号】 ES2021070873
(87)【国際公開番号】W WO2023099796
(87)【国際公開日】2023-06-08
(81)【指定国・地域】
(71)【出願人】
【識別番号】524207611
【氏名又は名称】バルセロナ・スーパーコンピューティング・センター - セントロ・ナシオナル・デ・スペルコンプタシオン
【氏名又は名称原語表記】BARCELONA SUPERCOMPUTING CENTER - CENTRO NACIONAL DE SUPERCOMPUTACION
(74)【代理人】
【識別番号】100145403
【氏名又は名称】山尾 憲人
(74)【代理人】
【識別番号】100135703
【氏名又は名称】岡部 英隆
(74)【代理人】
【識別番号】100161883
【氏名又は名称】北出 英敏
(72)【発明者】
【氏名】デイビス,ジョン ディー
(72)【発明者】
【氏名】ウォラック,スティーブン
(72)【発明者】
【氏名】ズラスキー,ジェラルド
【テーマコード(参考)】
5B033
5B160
5B205
【Fターム(参考)】
5B033DB09
5B160MB00
5B160MM18
5B205LL12
(57)【要約】
本発明は、コンピュータのメモリユニットにオペランドを格納し、コンピュータのメモリユニット内のオペランドにアクセスする方法に関し、具体的には、N個の独立制御チャネル、メモリキャッシュ、およびタグストアを備えたメインメモリユニットに格納されたデータオペランドにアクセスする方法に関し、方法は、物理アドレスをタグストアと比較するステップを含み、キャッシュタグはチャネルを参照するN個のステータスビットを含み、また、N個の独立制御チャネルを備えたメインメモリユニットにデータオペランドを書き込む方法に関する。
【特許請求の範囲】
【請求項1】
処理ユニット(104)及びメインメモリユニット(100)を備えるコンピュータに格納されるデータオペランドにアクセスする方法であって、前記メインメモリユニット(100)は、
複数の行に操作可能に配置されたデータワードを格納するように構成されたメモリ(102)であって、前記行は、N個の列に操作可能に分割され、Nは1より大きい、メモリ(102)と、
1つ以上のワードで構成されるデータブロックを前記メモリ(102)から読み取りまたは前記メモリ(102)へ書き込みするように構成されたメモリコントローラ(107)であって、前記メモリコントローラ(107)は、前記メモリコントローラ(107)によって取得されたブロックを格納するように構成されたメモリキャッシュ(103)、および前記メモリキャッシュ(103)に格納された前記ブロックのタグを格納するように構成されたタグストア(106)を備える、メモリコントローラ(107)と、
を備え、前記メモリ(102)は、前記メモリ(102)にデータワードを書き込むように構成された書き込みバッファ(109)、および格納バッファをさらに備え、
前記メモリ(102)は、前記メモリキャッシュ(103)を介して前記処理ユニット(104)とデータ通信し、前記メモリキャッシュ(103)は、N個の独立制御チャネルを介して前記メモリ(102)とデータ通信し、各チャネルは1つ以上の列にアクセスするように構成され、
前記方法は、前記処理ユニット(104)が前記オペランドへのアクセスを要求すると、前記メモリコントローラ(107)が、
前記処理ユニット(104)から、前記オペランドの物理アドレス(201)を受信するステップと、
前記物理アドレス(201)を前記タグストア(106)の前記タグと比較するステップと、
前記メモリキャッシュ(103)から前記オペランドを含む1つ以上のブロックを読み取るステップと、
を含み、
前記物理アドレス(201)は行インデックスを含み、
前記タグは、N個のステータスビットを含み、それぞれチャネルを参照する、
方法。
【請求項2】
前記物理アドレス(201)を前記タグと比較するステップの後、メモリキャッシュミスがある場合、前記方法は、前記メモリコントローラ(107)が、
前記タグステータスビットがアクティブな前記チャネルのそれぞれからブロックを読み取るステップと、
前記ブロックを前記メモリキャッシュ(103)に書き込むステップと、
を含む、請求項1に記載の方法。
【請求項3】
前記ブロックを読み取るステップは、増加する物理アドレス(201)に応じて残りのチャネルからブロックを読み取るステップを含む、請求項2に記載の方法。
【請求項4】
前記メモリ(102)は、マルチプレクサ(101)を含み、前記方法は、前記メモリコントローラ(107)が、前記マルチプレクサ(101)を用いて行内のワードを選択するステップを含む、請求項1から請求項3のいずれか一項に記載の方法。
【請求項5】
2つ以上のワードが同じ列かつ異なる行に配置された前記オペランドを含む場合、前記メモリコントローラ(107)は、アウトオブオーダ命令として読み取り操作または書き込み操作を実行する、請求項1から請求項4のいずれか一項に記載の方法。
【請求項6】
前記オペランドがベクトル参照である場合、前記処理ユニット(104)のアクセス要求は、前記ベクトル参照のストライドおよび長さの情報を含む、請求項1から請求項5のいずれか一項に記載の方法。
【請求項7】
前記メモリユニットは、2、4または8個のチャネルを含む、請求項1から請求項6のいずれか一項に記載の方法。
【請求項8】
前記メモリユニットは、広帯域幅メモリ(HBM)メモリユニットである、請求項1から請求項7のいずれか一項に記載の方法。
【請求項9】
前記処理ユニット(104)は、複数の処理コアを備える、請求項1から請求項8のいずれか一項に記載の方法。
【請求項10】
前記メモリユニットは、メモリコントローラ(107)処理ユニットを備える、請求項1から請求項9のいずれか一項に記載の方法。
【請求項11】
処理ユニット(104)を備えるコンピュータのメインメモリユニット(100)にデータオペランドを書き込む方法であって、前記メインメモリユニット(100)は、
複数の行に操作可能に配置されたデータワードを格納するように構成されたメモリ(102)であって、前記行は、N個の列に操作可能に分割され、Nは1より大きい、メモリ(102)と、
1つ以上のワードで構成されるデータブロックを前記メモリ(102)から読み取りまたは前記メモリ(102)へ書き込むように構成されたメモリコントローラ(107)であって、前記メモリコントローラ(107)は、前記メモリコントローラ(107)によって取得されたブロックを格納するように構成されたメモリキャッシュ(103)、および前記メモリキャッシュ(103)に格納された前記ブロックのタグを格納するように構成されたタグストア(106)を備える、メモリコントローラ(107)と、
を備え、前記メモリ(102)は、前記メモリ(102)にデータワードを書き込むように構成された書き込みバッファ(109)、および格納バッファをさらに備え、
前記メモリ(102)は、前記メモリキャッシュ(103)を介して前記処理ユニット(104)とデータ通信し、前記メモリキャッシュ(103)は、N個の独立制御チャネルを介して前記メモリ(102)とデータ通信し、各チャネルは1つ以上の列にアクセスするように構成され、
前記方法は、前記処理ユニット(104)が前記オペランドの書き込みを要求すると、前記メモリコントローラ(107)が、
前記処理ユニット(104)から前記オペランドの物理アドレス(201)を受信するステップであって、前記物理アドレス(201)は、N個の有効ビットとN個のダーティビットを含む、受信するステップと、
前記処理ユニット(104)から前記オペランドを受信するステップと、
アドレスがアクティブな有効ビットとアクティブなダーティビットを含む前記オペランドを含む1つ以上のブロックを前記メモリキャッシュ(103)に書き込むステップと、
前記タグストア(106)の前記タグを更新するステップと、
を含む、方法。
【請求項12】
前記オペランドがベクトルオペランドであり、前記オペランドが前記キャッシュに格納されていない場合、前記方法は、
前記処理ユニット(104)からの前記オペランドを前記メモリ(102)の前記書き込みバッファ(109)に書き込むステップを含む、請求項11に記載の方法。
【請求項13】
前記オペランドがベクトルオペランドであり、前記オペランドが前記キャッシュに格納されている場合、前記方法は、
前記オペランドを含む1つ以上のチャネルの前記有効ビットを非アクティブに設定するステップと、
前記処理ユニット(104)からの前記オペランドを前記メモリ(102)の前記書き込みバッファ(109)に書き込むステップと、
を含む、請求項11に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータのメモリユニットにオペランドを格納し、アクセスする方法に関し、具体的には、N個の独立して制御されるチャネル、メモリキャッシュ、およびタグストアを備えるメインメモリユニットに格納されたデータオペランドにアクセスする方法であって、当該方法は、物理アドレスをタグストアと比較するステップを含み、キャッシュタグは、N個の独立チャネルを参照するN個のステータスビットを備える、方法、およびN個の独立して制御されるチャネルを備えるメインメモリユニットにデータオペランドを書き込む方法に関する。
【背景技術】
【0002】
現在のコンピュータシステムでは、物理データを参照する主な方法は、まず参照先のオペランドを含むキャッシュブロックにアクセスすることであり、通常、キャッシュブロックには、順番にアドレス指定された複数のオペランドが含まれる。次に、キャッシュブロック内のオペランドが参照される(ロードおよび/またはストア)。これは、参照が本質的に連続的である場合に非常にうまく機能する。ただし、後続の参照が連続していない場合は、パフォーマンスに重大な影響が出る可能性がある。その理由は、1つのキャッシュ参照には参照されるオペランドが1つしか含まれないからである。このような状況が発生すると、1つのオペランドのみが使用されている場合でも、すべてのオペランドを読み取るのに必要なメモリ帯域幅と電力が消費される。ほとんどのシステムでは、システム上の個々のプロセッサは、再利用されるデータや、すでに使用されているデータに近いデータへのアクセスを最適化するために、ローカルキャッシュ構造を備えている。
【0003】
ただし、非常に高性能なコンピューティングシステムでは、ベクトルデータ構造が使用されることがよくある。ベクトルは値の配列、またはより広義には、任意の大きなデータ構造を意味する。配列を操作するプログラムでは、多くの場合、1つ以上のベクトルの値の文字列を使用して計算を実行し、結果を別のベクトルに書き込む。このアクセスパターンは、汎用コンピュータで一般的に見られるアクセスパターンとは異なり、数百万要素のベクトルがある場合、それぞれの値にアクセスすると、キャッシュに保持されているデータが単純に上書きされる。
【0004】
これは既知の状況であり、ストリーミング操作をサポートするハードウェアを提供することがよく行われる。このようなハードウェアは、ベクトルから連続した値が要求されることを通知され、可能な限り効率的な方法で事前にデータをフェッチし、プリフェッチされたデータを何らかの形式のバッファリングに保持して、要求されたときに必要なデータを迅速に提供できるようにする。技術分野では、ベクトルの連続する値間の距離は「ストライド」として知られている。連続する値は任意の正または負の整数であってもよく、ベクトルロードとベクトルストアの両方に有効である。
【0005】
現代のほとんどのコンピューティングシステムでは、ダイナミックランダムアクセスメモリ(DRAM)メモリユニットが使用されている。DRAMメモリの特徴は、読み取りアクセスによってメモリダイが複数の内部バッファの1つを選択し、完全な内部データ行をDRAMページからその行バッファに読み取ることである。行バッファは、メモリバンクから読み取られた最後の行によって形成されるメモリユニットの高速キャッシュを意味するものと理解され、物理的には、これはメモリバンクの読み取り/書き込みインタフェースのセンスアンプのセルによって実装されることがよくある。これらの内部バッファは、多くの場合ページと呼ばれる。データを格納するページを選択することを、そのページを開くという。新しいページが必要で、使用可能なページがすべて使用中である場合は、ページを選択して閉じ、他のデータを保持するために新しいページを開く必要がある。すでに行バッファ内にあるデータが要求された場合、メインのDRAMアレイを読み取らずに、DRAMのロジックによって非常に迅速にデータが提供される。DRAMダイは一般に少数の行バッファを提供し、行バッファからデータを読み取る方がメモリアレイ自体から読み取るよりも高速で、消費電力も少なくなる。したがって、DRAM操作には、i)行バッファにすでに存在するDRAMページに対する操作、ii)ページを開いて当該行バッファで操作を実行すること、iii)すべての行バッファが使用されている場合に、閉じるページを選択し、新しいページを開いて当該行バッファで操作を実行すること、という3つの主なレイテンシが関係する。
【0006】
単一のプロセッサからの単一のアクセスストリームに対しては、有用な適応型ヒューリスティックを構築することは可能であるが、マルチプロセッサシステムの一般的な使用では、数十または数百のプロセッサからのアクセスがメモリシステムを本質的にランダムな要求のセットとして認識するため、これははるかに困難になる。メモリコントローラは、最適なパフォーマンスを得るためにメモリ要求を統合して並べ替えるために限定的なバッファリングを追加したが、ウィンドウサイズは制限されている。同様に、キャッシュとストアバッファは書き込み結合メカニズムとして機能し、DRAM書き込み回数を削減する。
【0007】
したがって、特定のアクセスパターンのセットに対してメモリユニットを最適に使用する方法が必要である。
【発明の概要】
【0008】
従来技術に見られる課題を克服するために、本発明は、処理ユニットとメインメモリユニットとを備えるコンピュータに格納されたデータオペランドにアクセスする方法であって、メインメモリユニットは、
複数の行に操作可能に配置されたデータワードを格納するように構成されたメモリであって、行は、N個の列に操作可能に分割され、Nは1より大きい、メモリと、
1つ以上のワードで構成されるデータブロックをメモリから読み取りまたはメモリへ書き込みするように構成されたメモリコントローラであって、メモリコントローラは、メモリコントローラによって取得されたブロックを格納するように構成されたメモリキャッシュ、およびメモリキャッシュに格納されたブロックのタグを格納するように構成されたタグストアを備える、メモリコントローラと、
を備え、メモリは、メモリにデータワードを書き込むように構成された書き込みバッファ、および格納バッファをさらに備え、
メモリは、メモリキャッシュを介して処理ユニットとデータ通信し、メモリキャッシュは、N個の独立制御チャネルを介してメモリとデータ通信し、各チャネルは1つ以上の列にアクセスするように構成され、
方法は、処理ユニットがオペランドへのアクセスを要求すると、メモリコントローラが、
処理ユニットから、オペランドの物理アドレスを受信するステップと、
物理アドレスをタグストアのタグと比較するステップと、
メモリキャッシュからオペランドを含む1つ以上のブロックを読み取るステップと、
を含み、
物理アドレスは行インデックスを含み、
タグは、N個のステータスビットを含み、それぞれチャネルを参照する、方法を提供する。
【0009】
本開示全体を通じて、特許請求の範囲に記載された方法は、ネットワーク化されたコンピュータおよび複数の処理ユニットを備えたコンピュータを含む、あらゆるタイプのコンピュータまたはコンピュータシステムを対象としていることが理解されるべきである。オペランドとは、コンピュータのメモリに格納され、プロセッサが計算または処理時に使用するデータ要素と理解されるべきである。オペランドは、データ要素のサイズに関係なく、計算または処理のデータ単位であると理解されるべきである。オペランドの例としては、整数、特に大きな整数、ベクトル、行列などがある。データワード、または単にワードとは、特定のプロセッサまたはメモリ設計で使用されるデータの自然な単位と理解されるべきである。データブロック、またはブロックとは、単一の書き込みまたは読み取り命令に応答してメモリユニットへ送信するまたはメモリユニットから送信される1つ以上のワードを含むデータ要素と理解されるべきである。アクセスとは、メモリからデータを読み取るか、メモリにデータを書き込むか、またはその両方の操作であると理解されるべきである。
【0010】
好ましくは、処理ユニットは、プロセッサと、要求されたオペランドを検索するために順次アクセスされる、階層的にレベルに配置された複数の処理キャッシュとを含む。一実施形態では、方法が実行されるメモリユニットは、処理キャッシュ、特にL3キャッシュ、またはレベル3キャッシュとして構成される。
【0011】
メインメモリユニット、または単にメモリユニットは、メモリ本体、好ましくはデータを格納する複数のチップで実装されるメモリセルのアレイ、および他の制御および/またはアクセス回路を備える。メモリユニットは、好ましくは従来のダイナミックランダムアクセスメモリ(DRAM)メモリユニットであり、より好ましい実施形態では、HBM(広帯域幅メモリ)である。HBMとは、シリコン貫通電極(TSV)によって垂直に相互接続された、最大8個、または場合によってはそれ以上のDRAMダイを積み重ねることによって実現される、3Dスタック同期ダイナミックランダムアクセスメモリ(SDRAM)用の高速コンピュータメモリインターフェイスであると理解されるべきである。処理キャッシュは、メモリチップからのデータを一時的に格納し、メモリユニットの書き込みおよび読み取り操作を容易にするように構成されたメモリユニットの特定のストレージ要素であるメモリキャッシュと混同しないように留意すべきである。データは従来の方法でデータワードとしてメモリに格納され、行と列に操作可能に配置される。これらの列は、N個のチャネルまたはバスによってアクセスされ、各チャネルは1つ以上の列にアクセスするように構成される。ブロックは、チャネルの帯域幅と同じ特定のサイズを有し、これは行のサイズと数Nに依存する。メモリユニットは、メモリキャッシュに現在格納されている要素の更新されたリストを保持するように構成されたストレージ要素であるタグストアをさらに含む。メモリキャッシュのエントリは、それぞれのタグによって識別される。各タグは、各ブロックのメモリ内の物理アドレスから生成され、N個のステータスビットを含み、各ビットはチャネルに対応し、タグによって、オペランドを含むブロックを読み取ることができるチャネルが識別される。一方、物理アドレスは、ブロックの行を識別するインデックスを含む。
【0012】
メモリユニット上で実行される操作、すなわち、処理ユニットからオペランドの物理アドレスを受信し、オペランドの物理アドレスをタグストアのタグと比較し、メモリキャッシュからオペランドを読み取り、好ましくはブロックを処理ユニットに送信する操作は、実施形態ではプロセッサを含むメモリコントローラによって実行される。
【0013】
好適には、各選択的読み取りまたは書き込みには独自の物理アドレスがあり、特許請求の範囲に記載された方法に従ってメモリからオペランドが取得されると、チャネルの独立した操作により、データの行全体を読み取るのではなく、行内の1つ以上のブロックを選択的に読み取ることができる。これは、要求されたオペランドが異なる行に属する複数のワードに格納されている場合に特に好適であり、従来のプロセスでは、各行を個別に読み取り、行の単一のブロックを格納する必要がある。したがって、本発明は、従来の方法よりもメモリアクセスに必要な時間を短縮し、消費エネルギーを低減する。
【0014】
オペランドの物理アドレスを受信し、それをタグストアのタグと比較した後、一致またはキャッシュヒットがあれば、要求されたブロックはすでにメモリキャッシュに格納されており、メモリコントローラはブロックの物理アドレスに一致するキャッシュエントリを読み取って、それを処理ユニットに送信するだけで済む。一致しない場合、つまりキャッシュミスが発生した場合、メモリコントローラはメモリからブロックを取得する必要がある。
【0015】
特定の実施形態では、物理アドレスをタグと比較するステップの後、メモリキャッシュミスがある場合、方法は、メモリコントローラが、タグステータスビットがアクティブである各チャネルからブロックを読み取るステップと、ブロックをメモリキャッシュに書き込むステップとを含む。メモリからの読み取りは、N個のチャネルすべてが同時にアクセスできるブロック(それらが属する行に関係なく)を読み取ることによって実行される。つまり、同じ列に格納されている2つのワードは、対応するチャネルによって同時にアクセスできないため、読み取りは2つの異なるアクセスで実行する必要がある。
【0016】
特定の実施形態では、ブロックを読み取るステップは、増加する物理アドレスに応じて各チャネルからブロックを読み取るステップを含む。通常、処理ユニットによって実行されるプロセスと操作は、短時間内に複数のオペランドを要求するが、これらのオペランドはメモリの隣接する場所に格納されることがよくある。参照の局所性を活用するために、メモリコントローラは要求されたブロックだけでなく、物理メモリの昇順で後続のいくつかのブロックも読み取る。別の実施形態では、ブロックを読み取るステップは、減少する物理アドレスに応じて各チャネルからブロックを読み取ることを含む。
【0017】
特定の実施形態では、メモリはマルチプレクサを含み、方法は、メモリコントローラが、マルチプレクサを用いて行内のワードを選択するステップを含む。マルチプレクサは、チャネルの選択を可能にして効率化する論理回路の好ましい実施形態である。
【0018】
特定の実施形態では、2つ以上のワードが同じ列かつ異なる行に配置されたオペランドを含む場合、メモリコントローラはアウトオブオーダ命令として読み取り操作または書き込み操作を実行する。前述のケースと同様に、メモリからの読み取り操作では、チャネルによって同時にアクセスできない2つ以上のブロックの読み取りが必要になる場合がある。言い換えると、ワードは同じ列かつ異なる行に格納されており、このような場合、読み取りには2回以上のアクセスが必要になる。プロセスのレイテンシを最小限に抑えるために、メモリコントローラによって実行される操作では、残りのデータを待機しながら、使用可能なデータを使用して計算またはプロセスをアウトオブオーダ命令として実行してもよい。
【0019】
特定の実施形態では、オペランドがベクトル参照である場合、処理ユニットのアクセス要求は、ベクトル参照のストライドおよび長さの情報を含む。好ましくは、オペランドがベクトルである場合は、各ベクトル要素についての物理アドレスが存在する。この方法は、ベクトル参照などの大きなオペランドを処理する場合に特に好適である。ベクトル参照はストライドと長さによって定められ、これらの値の特定の組み合わせでは、メモリへのアクセス時間が短縮される。
【0020】
特定の実施形態では、メモリユニットは2、4、または8個のチャネルを含む。好適には、チャネル数が多いほどブロックの粒度が高くなり、メモリからの不要なデータ読み取りが少なくなる。
【0021】
特定の実施形態では、メモリユニットは、広帯域幅メモリ(HBM)メモリユニットである。広帯域幅メモリを利用すれば、スペースと電力効率に優れた非常に高性能なメモリシステムを構築できる。HBMは、複数のDRAMダイを垂直に積み重ね、スタックされた全てのダイを通じて、ベースダイへと至る相互接続により、広帯域幅を提供する。ベースダイは、ダイへのアクセスを管理し、アセンブリが接続されているシステムへのデータを提示するコントローラロジックを収容する。現在のHBMメモリユニットにはすでに1024ビットインターフェイスと8チャネルを有し、非常に高速なデータアクセスが可能になっているが、HBM製品の次の世代では容量と帯域幅が向上する。他の実施形態では、メモリユニットは、NVRAM、3D XPoint、NANDフラッシュなどの異なるタイプのストレージである。別の実施形態では、メモリユニットは、メモリ技術の組み合わせ、例えばHBMメモリと3D XPointメモリの組み合わせを備える。
【0022】
特定の実施形態では、処理ユニットは複数の処理コアを備える。好適には、本方法のパフォーマンスは、主にベクトルで計算する大規模なマルチコアコンピューティングシステムで最大化され、すべての計算がデータの線形配列に対してベクトルのような方法で実行されるため、はるかに優れた動作のアクセスパターンを示す。
【0023】
特定の実施形態では、メモリユニットはメモリコントローラ処理ユニットを備える。好適には、メモリコントローラは、密結合された処理ユニットを備え、処理ユニット上で実行されるプログラムがさまざまなアクセス戦略を実装できるようにできる。今後のプログラムフェーズで望ましい戦略は、アプリケーションソフトウェアとメモリコントローラ処理ユニット上で実行されるソフトウェア間のプロトコルによって設定されてもよい。好ましい実施形態では、メモリコントローラ処理ユニットは、メモリコントローラCPU(MCPU)である。さらなるMCPUをプロビジョニングして、オペレーティングシステム(OS)サービス、およびデーモン、サービスおよびOS関連サービスなどのその他の管理機能を実行することもできる。同様に、アクセラレータを備えたメモリ構造は、複数の役割を果たすことができ、例えば、共有L2キャッシュはキャッシュウェイを使用してスクラッチパッドを提供できる。
【0024】
特定の実施形態では、方法はキャッシュブロックのプリフェッチを含む。
【0025】
特定の実施形態では、方法はベクトル参照を含む。
【0026】
本発明の第2の発明の態様では、本発明は、処理ユニットをさらに備えるコンピュータのメインメモリユニットにデータオペランドを書き込む方法であって、メインメモリユニットは、
複数の行に操作可能に配置されたデータワードを格納するように構成されたメモリであって、行は、N個の列に操作可能に分割され、Nは1より大きい、メモリと、
1つ以上のワードで構成されるデータブロックをメモリから読み取りまたはメモリへ書き込むように構成されたメモリコントローラであって、メモリコントローラは、メモリコントローラによって取得されたブロックを格納するように構成されたメモリキャッシュ、およびメモリキャッシュに格納されたブロックのタグを格納するように構成されたタグストアを備える、メモリコントローラと、
を備え、メモリは、メモリにデータワードを書き込むように構成された書き込みバッファ、および格納バッファをさらに備え、
メモリは、メモリキャッシュを介して処理ユニットとデータ通信し、メモリキャッシュは、N個の独立制御チャネルを介してメモリとデータ通信し、各チャネルは1つ以上の列にアクセスするように構成され、
方法は、処理ユニットがオペランドの書き込みを要求すると、メモリコントローラが、
処理ユニットからオペランドの物理アドレスを受信するステップであって、物理アドレスは、N個の有効ビットとN個のダーティビットを含む、受信するステップと、
処理ユニットからオペランドを受信するステップと、
アドレスがアクティブな有効ビットとアクティブなダーティビットを含むオペランドを含む1つ以上のブロックをメモリキャッシュに書き込むステップと、
タグストアのタグを更新するステップと、
を含む、方法を提供する。
【0027】
特定の実施形態では、オペランドがベクトルオペランドであり、オペランドがキャッシュに格納されていない場合、方法は、
処理ユニットからのオペランドをメモリの書き込みバッファに書き込むステップを含む。
【0028】
特定の実施形態では、オペランドがベクトルオペランドであり、オペランドがキャッシュに格納されている場合、方法は、
オペランドを含む1つ以上のチャネルの有効ビットを非アクティブに設定するステップと、
処理ユニットからのオペランドをメモリの書き込みバッファに書き込むステップと、
を含む。
【図面の簡単な説明】
【0029】
前述の利点および特徴、ならびにその他の利点および特徴は、添付の図面を参照しながら、例示的な実施形態の以下の詳細な説明からより完全に理解されるであろう。添付の図面は、例示として考慮されるべきであり、限定として考慮されるべきではない。
【0030】
【
図1】
図1は、メインメモリユニットおよび処理ユニットの図を表す。
【
図2】
図2は、ブロックの物理アドレスおよびキャッシュタグの図を表す。
【
図4】
図4は、チャネルとオペランドを含む3つのメモリ行の内容の図を表す。
【発明を実施するための形態】
【0031】
本明細書全体を通じて、本発明の一実施形態のさまざまな部分またはステップは、明示的に説明されていなくても、他の実施形態で説明されている部分またはステップと自由に組み合わせることが、そのような組み合わせに害がない限り、できることが理解されるであろう。
【0032】
本発明の好ましい例は、複数のリクエスタ間でメモリ操作を調整するメカニズムを提供する。これにより、i)メモリ階層が再定式化されて、キャッシュラインの代わりにベクトルが提示され、ii)ベクトルを分析することで、DRAMシステムを仮想的に拡張し、オンチップで追加のDRAM行バッファ容量を提供できる、というような複数の利点が得られる。前者は、非ユニットストライドデータ構造を操作して計算ユニットに提示し、チップ上で有用なデータのみを移動する、より効率的な方法を提供する。後者は、より大きな粒度のデータチャンク、DRAMページに対するエネルギー要件を低減し、より大きな仮想インタリーブメモリサブシステムを作成する。これにより、そうでなければDRAM内で何回も再度開かれ、閉じられることになるホットDRAMページへのリクエストのレイテンシとエネルギーが削減される。
【0033】
説明の例は、HBMメモリユニット(100)および従来の処理ユニット(104)を備える従来のコンピュータに実装されている。一例では、HBMメモリユニット(100)は、メモリコントローラ(107)、1024ビット幅のインタフェース、それぞれが128ビットのデータを提供できる8つの独立制御チャネル(したがって、この例ではN=8)、および128ビット幅のメモリキャッシュを有する。別の例では、HBMメモリユニットは、4つのチャネルを備え、そのそれぞれが256ビットであり、合計1024ビット(N=4)になる。さらに別の例では、HBMメモリユニットは、8つのチャネルを備え、そのそれぞれが256ビットであり、合計2048ビット(N=8)になる。
図4に示され、以下の例で使用される、好ましい例では、メモリは512ビット幅のインタフェースおよび4つのチャネル(N=4)を有し、それぞれ128ビットを提供する。通常、キャッシュブロックには多数のオペランド(通常は最大8個の64ビットオペランド(または最大16個の32ビットオペランド))を含めることができる。
【0034】
図1は、HBMメモリユニット(102)と、方法に含まれるプロセスの図を示す。512ビットメモリは、4:1マルチプレクサ(101)を介してメモリキャッシュとデータ通信し、メモリキャッシュ(103)は、4:1マルチプレクサ(105)を介して処理ユニット(104)とデータ通信する。
【0035】
この例では、オペランドアクセス方法は
図3に示すように実装されており、次のように説明される。処理ユニットは、
図2の上部に示すように、物理アドレス(201)を含むオペランドについての要求を発行する。当該物理アドレスは、オペランドが格納されているブロックを示す行インデックスを含む。物理アドレス(201)はメモリコントローラ(107)によって受信され、タグストアのタグ(202)と比較される。好ましくは、物理アドレス(201)は、処理ユニット(104)の変換ルックアサイドバッファ(TLB)によって発行される。
【0036】
要求されたオペランドがキャッシュに格納されている場合、メモリコントローラ(107)は、メモリキャッシュ(103)からエントリを単に読み取り、処理ユニット(104)に送信する。オペランドがメモリキャッシュ(103)に格納されていない場合、メモリコントローラ(107)は、メモリ(102)にアクセスし、チャネルから可能な限り多くのブロックを同時に読み取る。つまり、メモリの行内のブロックの位置に応じて、異なる行のオペランドが、それらが異なる列に格納されている場合、同時に読み取られる可能性がある。
【0037】
したがって、オペランドが同じ行の4つのメモリブロックにまたがる場合、メモリコントローラ(107)は4つのチャネルすべてを同時に読み取る。また、オペランドが、例えばチャネル2からアクセス可能な単一のブロックに格納されている場合、メモリコントローラ(107)は、残りのチャネルのデータを無視して、このチャネル2のみを読み取る。
【0038】
そして、メモリコントローラ(107)は、ブロックをメモリキャッシュ(103)に書き込み、処理ユニット(104)に送信する。上記の場合、チャネル2のオペランドはメモリから読み取られ、キャッシュに格納される。チャネル2に対応するタグストア(106)のタグ(202)の有効ビット1は論理「1」に設定され、メモリキャッシュ(103)にオペランドが存在することを示す。それぞれチャネル3、1、0に対応する有効ビット3、1、0は、論理「0」に設定される。これは、メモリキャッシュ(103)に、物理アドレス(201)によって参照されるメモリ位置のチャネル3、1、および0のオペランドが含まれていないことを示す。
【0039】
図4は、実施例に係るメモリ(102)の簡略図を示す。この例では、メモリ(102)は、4つのチャネルと512ビットの行を有し、各行は、4つの128ビットのデータブロック(N=4)を含み、各ブロックは、2つの64ビットのオペランドを含み、各オペランドは、物理アドレス(201)を有する。便宜上、
図4には3つの行のみが表示され、オペランドにはA-Xのラベルが付けられ、それぞれの物理アドレスは数字0-23で表される。
【0040】
次に、参照の種類に応じていくつかの具体的な例を説明する。以下のすべての例では、メモリ(102)が
図4のように構成されているものとし、HBMメモリユニットの読み取りは4つのチャネル(N=4)を読み取る。さらに、「foo」という用語は任意の名前のプレースホルダとして使用される。特許請求の範囲に記載された方法の要件に従って、仮想チャネルは独立して制御できる。これは、HBMの読み取りまたは書き込みを4つの独立した読み取りまたは書き込みとして扱うことができることを意味する。独立とは、互いに独立した4つの物理アドレスを意味する。
【0041】
<スカラーロード>
スカラーロードの場合、スカラー参照<G>を処理ユニット(104)レジスタにロードする命令の実行時に、処理ユニット(104)は、このオペランド「G」の物理アドレス(201)を生成し、これはタグストア(106)にアクセスするために使用され、タグストア(106)の出力は、物理アドレス(201)のタグフィールドと比較される。次に、有効ビットが検査され、有効ビットが「1」である場合、オペランド「G」がメモリキャッシュ(103)に格納されており、キャッシュヒットがあることを意味する。この場合、キャッシュマルチプレクサ(105)がオペランドを取得し、その後、処理ユニット(104)の対応するレジスタに送信される。
【0042】
有効ビットが「0」の場合、オペランド「G」がメモリキャッシュ(103)に格納されておらず、キャッシュミスが発生していることを意味する。このような場合、オペランド「G」をHBMメモリ(102)から取得する必要がある。メモリアクセスはコストがかかるため、参照の局所性は先読み(look-ahead)操作によって活用される。つまり、メモリコントローラ(107)は、要求されたオペランドを含むブロックと、増加する物理アドレスに従って後続のブロックをロードする。メモリ(102)は独立制御チャネルによってアクセスされるため、メモリコントローラ(107)は、オペランド「G」が格納されているチャネルおよび行にアクセスし、
図4によれば、これは、オペランド「G」および「H」を含む行0およびチャネル3である。また、先読みプロセスは、チャネル0、チャネル1およびチャネル2によってアクセスできる内容を取得し、これは増加する物理アドレスに従って行1にあり、つまりオペランド「I」から「N」である。これらのオペランドは、メモリキャッシュ(103)に書き込まれ、タグストア(106)がそれに応じて更新され、対応するチャネルの有効ビットが「1」に設定され、残りの有効ビットが「0」に設定される。
【0043】
<ベクトルロード>
ベクトルロード命令では、複数のオペランドが同じ命令でロードされる。このため、命令には、i)ベクトルの第1オペランドの開始アドレス、ii)ベクトルの長さ、または要求されたオペランドの数、およびiii)ベクトルのストライド、または連続するオペランド間の距離、が含まれている必要がある。一例では、オペランド「C」から始まり、長さが4オペランド、ストライドが1のベクトルが要求される。したがって、要求されたオペランドは「C」、「D」、「E」、および「F」(以下、ベクトル_1)である。したがって、2つのチャネル(チャネル2と1)のみが読み取られる。チャネル0と3は読み取られない。開始アドレスが「A」でストライドが4の場合、要求されるオペランドは「A」、「E」、「I」、および「M」(以下、ベクトル_2)になる。
【0044】
ベクトル_1が要求されると、処理ユニット(104)によって各オペランドに1つずつ、計4つの物理アドレスが生成される。後続のアクセスプロセスはスカラーロードの場合と同じであるが、4つの「C」、「D」、「E」、および「F」オペランドすべてを含むチャネル_1とチャネル_2のみが読み取られる点が異なる。そして、タグストア(106)の内容が更新され、チャネル_1とチャネル_2の有効ビットがそれぞれ「1」に設定される。
【0045】
ベクトル_2ではオペランドが異なる行に格納されるため、メモリコントローラ(107)は2つのアクセス操作を実行する必要がある。1つはチャネル_0とチャネル_2の行_0に対して、もう1つはチャネル_0とチャネル_2の行_1に対してである。
【0046】
オペランドを読み取るプロセスは、以下のように、上述の場合と同じコンピュータで実行される例について同様に説明される。処理ユニット(104)は、オペランドとオペランドの物理アドレス(201)の両方を生成する。オペランドは、処理ユニット(104)のレジスタにロードされ、そこから書き込みバッファ(109)とキャッシュ(103)に送られ、アドレス(201)はタグストア(106)に送られ、タグストアはN個の有効ビットとN個のダーティビットを持つタグ(202)を生成する。ダーティビットの目的は従来のメモリ構成と同じであるが、ここではアドレス(201)は各チャネルに1つのダーティビットを備える。オペランドがキャッシュ(103)に格納されていない場合、オペランドの新しいエントリが作成され、いくつかの例では、書き込みバッファ(109)もオペランドをメモリ(102)に書き込む。
【0047】
オペランドを書き込む必要があるキャッシュブロックがすでに使用されている場合は、まずキャッシュブロックの内容がメモリ(102)に書き込まれ、次にオペランドがキャッシュ(103)に書き込まれる。また、各チャネルのダーティビットのおかげで、アクティブなダーティビットを持つブロックのみが対応するチャネルを通じて書き込まれる。
【0048】
スカラーオペランドは長さ1のベクトルオペランドとみなすことができるため、書き込まれるチャネルはダーティとしてマークされたチャネルのみになる。1つのチャネルのみがダーティである場合、1つのワードのみがメモリに書き戻される(102)。したがって、書き込みまたは格納プロセスはベクトルオペランドの場合と同様であるが、オペランドがキャッシュ(103)にない場合、オペランドは書き込みバッファ(109)のチャネルに直接送られ、書き込みバッファ(109)にデータを書き込めなくなった場合はメモリ(102)書き込み操作が実行されるという違いがある。逆に、オペランドがキャッシュ(103)内にある場合、対応する有効ビットは論理「0」に設定され、上記の処理が実行される。
【符号の説明】
【0049】
100 メインメモリユニット
101 メモリマルチプレクサ
102 メモリ
103 メモリキャッシュ
104 処理装置
105 キャッシュマルチプレクサ
106 タグストア
107 メモリコントローラ
109 メモリ書き込みバッファ
201 物理アドレス
202 タグ
【国際調査報告】