説明

メモリの微小タイリング

【課題】メモリの微小タイリングを提供する。
【解決手段】一実施形態によると、メモリコントローラが開示される。メモリコントローラは、割り当て論理とトランザクションアセンブラを含む。割り当て論理は、メモリチャネルへのアクセスリクエストを受信する。トランザクションアセンブラは、リクエストを1以上の更なるリクエストと結合してチャネル内の2以上の個別にアクセス可能なサブチャネルへとアクセスする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムに関し、特に本発明はメモリのアクセス制御に関する。
【背景技術】
【0002】
統合メモリアーキテクチャ(UMA)が実施されたコンピュータシステムを特徴付けるものは、ビデオメモリとしてメインメモリにアクセスするグラフィックスコントローラである。しかし、CPUのキャッシュの伝送線容量要件によってUMAグラフィックスシステムのメモリ効率は制約される。たとえば、グラフィックスコントローラが一度に一個もしくは二、三個のピクセルまたはテクセル上で動作できるので、グラフィックス系にとっての理想メモリアクセス容量は4乃至16バイトである。しかしながら、大半のメモリアーキテクチャは、CPUのメモリ効率を最適化するために64バイトのCPUキャッシュ伝送線容量用に最適化されている。その結果、平均的に、メモリから読み出されたデータの著しい量がグラフィックスコントローラに利用されないことが起こり得る。
【0003】
ディスクリートグラフィックスコントローラの製造者らは、より幅の狭いメモリチャネルを用いることによりこの過剰読み出しを最小化している。しかし、この解決法は、UMAに基づいた統合グラフィックスコントローラには用い得ない。
【発明を実施するための最良の形態】
【0004】
メモリリクエスト結合メカニズムを記載する。本発明の以下の詳細な説明において、本発明の完全な理解を得るための数多くの具体的詳細を述べる。しかし、本発明はこれらの具体的詳細を用いずに実施され得ることが当業者には明らかになるであろう。他の例においては、本発明を曖昧にしないために周知の構成と装置をブロック図形式において示し、詳細には示さない。
【0005】
明細書において「一実施形態」もしくは「ある実施形態」と述べた場合、当該実施形態に関連して記載された特定の特徴、構造、もしくは特性が、発明の実施形態の少なくとも一つに含まれることを示す。明細書の各所において「一実施形態においては」との成句が現れるが、必ずしも全てが同一の実施形態を示さない。
【0006】
図1は、コンピュータシステム100の一実施形態のブロック図である。コンピュータシステム100は、インターフェース105に接続された中央演算処理装置(CPU)102を含む。一実施形態においては、CPU102は、カリフォルニア州サンタクララ所在のインテル社から入手できるペンティアム(登録商標)IVプロセッサのペンティアム(登録商標)系列のプロセッサである。または、他のCPUを用いてよい。たとえば、CPU102を多数の処理コアを用いて実施してよい。更に他の実施形態においては、コンピュータシステム100は、多数のCPU102を含んでよい。
【0007】
更なる実施形態においては、インターフェース105にはチップセット107も接続される。チップセット107は、メモリ制御コンポーネント110を含む。メモリ制御コンポーネント110は、メインシステムメモリ115に接続されたメモリコントローラ112を含んでよい。メインシステムメモリ115には、データとCPU102またはシステム100に含まれるその他の装置により実行される指示シーケンスが格納される。一実施形態においては、メインシステムメモリ115は動的ランダムアクセスメモリ(DRAM)を含むが、しかしメインシステムメモリ115をその他の種のメモリを用いて実施してよい。多数のCPU及び/又は多数のシステムメモリ等の更なる装置もインターフェース105に接続してよい。
【0008】
メモリ制御コンポーネント110をインターフェースを介して入出力(I/O)制御コンポーネント140に接続してよい。I/O制御コンポーネント140はコンピュータシステム100内のI/O装置へのインターフェースである。周辺コンポーネントインターコネクト(PCI)エクスプレス、アクセラレーテッドグラフィクスポート(AGP)、ユニバーサルシリアルバス(USB)、ロウピンカウント(LPC)バス等のI/Oバス、もしくはその他のいかなるI/Oバス(不図示)においても、I/O制御コンポーネント140は標準のI/O動作を支持してよい。
【0009】
一実施形態によると、グラフィックスコントローラ160がチップセット107と通信し、コンピュータシステム100に接続された表示モニター(不図示)に映像グラフィックスを提供するために実施される。グラフィックスコントローラ160はビデオメモリとしてメインメモリ115にアクセスする。上記したように、グラフィックス系のメモリアクセス容量は理想的には4乃至16バイトであることが多く、一方でメモリアーキテクチャはCPUメモリ効率を最適化するために64バイトCPU伝送線容量用に最適化されているので、グラフィックスシステムとCPUの両方を支持するメモリ装置のメモリ効率には制約がある。
【0010】
微小タイリング
一実施形態によると、メモリ制御コンポーネント110は、64バイトのメモリトランザクションを維持しつつ、グラフィックス装置用にメモリリクエストの容量を小さくすることを目的とした微小タイリングを特徴とする。DDR DRAM技術に基づいたもの等の標準的なメモリチャネルは、物理幅が約mビットである。メモリトランザクションは、全論理幅であるM=m*T/8バイトに対してTビットの伝送量を含む。各トランザクションにおけるバイトは、連続的なアドレスを有すると考えられる。以下の議論においては、幅という用語により論理幅を示す。
【0011】
微小タイリングによると、Mバイト幅のチャネルが、幅NがそれぞれM/SバイトであるS個のサブチャネルに分割され、Nバイトのデータが各サブチャネル上を伝送される。各サブチャネルに対してアドレスを与えてよく、各々のアドレスのビットのうちのあるビット数Iがその他のサブチャネルに与えられたアドレスのうちの該当ビットと異なればよい。各サブチャネル上を伝送されるデータは、連続したアドレス領域を表していると考えられる。しかし、各サブチャネル上のデータのブロックは、必ずしも連続的なアドレス領域からのものでない。各サブチャネルは、チャネルの全メモリ位置のうちのサブセットを含む。
【0012】
図2は、微小タイリングを支持するメモリ制御コンポーネント110の一実施形態を示す。一実施形態においては、マルチチャネルメモリサブシステムは、各チャネルについて微小タイリング用のメモリコントローラを備える。それゆえ、図2に示すように、メモリ制御コンポーネント110は、メモリコントローラ112を2個(メモリコントローラ1と2)、つまり2つのチャネルの各々に対して1個含む。各チャネルはS個のサブチャネルを含み、それぞれがNバイト幅である。それゆえ、各チャネルは、M=N*Sバイト幅である。
【0013】
本図において、メモリの読み出しもしくは書き込みリクエストは、2×2個のピクセルもしくはテクセルの配列を示し得る2×2個の正方形の配列として記述される。サブチャネルに割り当てられる以前のリクエストが示されている。サブチャネルへ割り当てられた後、リクエストにはサブチャネルへ割り当てられたことを示す0乃至S−1の番号が与えられる。読み出しトランザクションの場合、メモリ制御コンポーネント110に接続されたリクエスタ205へとNバイトのリターンが発生する。
【0014】
メモリ制御コンポーネント110は、メモリコントローラ112へと接続されたチャネル割り当て論理210を含む。チャネル割り当て210はリクエスタ205から受け取った各リクエストをメモリコントローラ112を介してメモリチャネル240へと割り当てる。更に、各メモリコントローラ112は、サブチャネル割り当て215と、リオーダバッファ220と、トランザクションアセンブラ230とを含む。それゆえ、リクエストは、図2に示すメモリコントローラ1又はメモリコントローラ2に割り当てられる。
【0015】
サブチャネルアサインメント215は、各リクエストをメモリチャネル240内のサブチャネルへと割り当てる。リオーダバッファ220は、リクエストを収集することにより、トランザクションアセンブラ230による各メモリ240のサブチャネルへのメモリアクセスをアセンブルする試みを可能にする。一実施形態によると、各サブチャネルは、等しくNバイト幅を有する。
【0016】
図2に示すシステムの動作中、アドレスAにおいてNバイトのデータブロックを読み出す、もしくは書き込むためのリクエストがメモリコントローラ(1又は2)に入力し、サブチャネルに割り当てられるか、もしくはリオーダバッファ220に保存される。一実施形態においては、特定的サブチャネル割り当てsを以下の処理により定義してよい。リクエストのアドレスAを右にP=log(N)ビット分だけ移行させて新たな整数値A(〜)(たとえば、A(〜)=A>>P)を得て、sをA(〜)の最下位のQ=log(S)ビット(たとえば、s=A(〜)&((1<<Q)−1))とする。
【0017】
メモリコントローラは、リオーダバッファ220から読み出しリクエストをS個、各サブチャネルに対して1個選択することによりメモリ読み出しトランザクションを生成する。メモリコントローラは、リオーダバッファ220から書き込みリクエストをS個、各サブチャネルに対して1個選択することによりメモリ書き込みトランザクションを生成する。共有アドレスラインにより表されるアドレス部分は、トランザクション内の全てのサブチャネルリクエストについて同じである。
【0018】
図3は、物理アドレスにおけるアドレスビットの解釈についての一実施形態である。P個のサブチャネルデータアドレスビットより上位のアドレスビットの共有・独立アドレスビット及びサブチャネル選択ビットへの分割は任意であるので、図3に示す共有・独立アドレスビット及びサブチャネル選択ビットの選択方法は例示目的のものである。独立アドレスビットはサブチャネル毎に異なり、また必ずしも連続的でない。サブチャネルへ送られるアドレスビットは、当該サブチャネルの共有アドレスビットと独立アドレスビットである。
【0019】
図4は、16バイトのリクエスト4個から64バイトのトランザクションをアセンブルするメモリ制御コンポーネント110の一実施形態を単一のチャネルだけを含めて示す。図4は、各サブチャネルのリオーダ待ち行列として実施されるリオーダバッファ220を示す。しかし、その他の実施形態においては、リオーダバッファ220をその他のメカニズムとして実施してよい。
【0020】
本実施形態においては、トランザクションアセンブラ230は、各サブチャネルに対して1個存在する16Bのリクエストから64Bのメモリリクエストを構成する。メモリリクエストを構成する16バイトのリクエストの全てが同一の共有アドレスビットを有する。それゆえ、アセンブラ230は、待ち行列を調べ、リクエストが共通の共有アドレスを有するかに基づいて単一のトランザクションにアセンブルすることができるリクエストを探す。
【0021】
図4に示す実施形態においては、アセンブラ230は、サブチャネル1cに対してはリクエストを見つけることができない。トランザクションを生成しようとするとき、メモリコントローラは、全てが同一の共有アドレスセグメントを有するようには(たとえば、各共有アドレスビットの値がリクエストの全部について同一であるようには)各サブチャネルに対してリクエストを探し出すことができないことがある。
【0022】
対応する待ち行列においてサブチャネルに対するリクエストが見つからない場合、当該サブチャネルからの、もしくは当該サブチャネルへの伝送は行われないことになる。一実施形態においては、サブチャネルに対するリクエストが見つからない場合、任意の位置から読み出して読み出し結果を廃棄する。別の実施形態においては、サブチャネル毎に、当該チャネルに対応するリクエストが得られない場合にサブチャネルへの電力を下げるために用いる制御線を更に設けてよい。
【0023】
微小タイリングメモリのサブチャネルは、共有アドレスビットとI個の独立アドレスビットにより決定されるいくつかのドレス領域内の不連続なメモリアドレスにアクセスすることができる。Iを適切に選択することにより、独立サブチャネル同士の同時並行性と情報量効率が向上し、各サブチャネルに対してIビットのアドレス信号を繰り返すコストにも釣り合う。
【0024】
図5Aと5Bは、微小タイリングのパフォーマンス利益を示す。各図は、タイリングされたアドレス空間における三角形のラスタライゼーションを示しており、各小正方形が4バイトのピクセルもしくはテクセルを表す。図5Aは、標準的メモリシステムにおいてリクエストがそれぞれ64バイトである場合の過剰読み出しを表す。4×4個のピクセルを含む各ブロックは、メモリの64バイト配列ブロックを表す。三角形は、57個のピクセルにまたがる。標準的なメモリサブシステムにおいては、これら57個のピクセルはメモリの中の11個の(64バイトである)ブロックに含まれる。それゆえ、これら57個のピクセルにアクセスするためには、余分に119個のピクセル分の使用されないデータにアクセスする(たとえば、32%の効率性となる)。
【0025】
図5Bは、リクエストがそれぞれ16バイトであり、当該リクエストの全部を微小タイリングアセンブラが利用して、使用されないサブチャネルが発生することなく64バイトのメモリトランザクションを構成することができた場合における過剰読み出しを示す。この場合、三角形は2×2個のピクセルを含む23個の配列に接触し、35個のピクセル分のデータが余分にアクセスされる(たとえば、62%の効率性となる)。微小タイリングの効果は、完全にポピュレートされるメモリトランザクションを構成できるアセンブラの性能に依存する。
【0026】
微小タイリングリクエストのマッピング
上述したように、特定的サブチャネル割り当てsを、リクエストのアドレスAを右にP=log(N)ビット分移行させて新たな整数値A(〜)(たとえば、A(〜)=A>>P)を得て、sをA(〜)の最下位のQ=log(S)ビット(たとえば、s=A(〜)&((1<<Q)−1))とすることにより定義してよい。図6は、線形アドレス空間の場合における特定的サブチャネル割り当ての一実施形態を示す。本実施形態においては、チャネルは4つのサブチャネルから構成されてよい(S=4)。
【0027】
図6は、線形アドレス空間の一部における、あるアドレスAについてのサブチャネル割り当てを示しており、各小ブロックはNバイトを表す。ブロック0はサブチャネル0に割り当てられるアドレス領域を表し、ブロック1はサブチャネル1に割り当てられるアドレス領域を表し、ブロック2はサブチャネル2に割り当てられるアドレス領域を表し、ブロック3はサブチャネル3に割り当てられるアドレス領域を表す。
【0028】
図7は、特定的サブチャネル割り当ての別の実施形態を、二次元にタイリングされたアドレス空間において、再びあるアドレスAについて示す。二次元アドレス空間タイリング法は数多く存在し、より高次元のタイリングも可能であることに注意されたい。
【0029】
リクエストアドレスがサブチャネル全体に対して均等に分配されなければ特定的サブチャネル割り当ての実施は上手く行われない。たとえば、図8は、グラフィックスアプリケーションで用いられる典型的なタイリングを施されたアドレス空間における特定的サブチャネル割り当ての一実施形態を示す。
【0030】
図8には、三角形の輪郭が含まれており、三角形のレンダリングの最中にアクセスされるNバイトのブロックが示される。三角形の左側の辺と底辺に沿ったブロックへのアクセスリクエストはサブチャネル間で均等に分配されないことに注意されたい。結果として、トランザクションアセンブラ230は、全てのサブチャネルに対するリクエストを含む完全なトランザクションをアセンブルすることができない。
【0031】
一実施形態によると、リクエストアドレスがサブチャネル全てに対して均等に分配される可能性を最大化し、それゆえ微小タイリングの情報量減少性を向上させることを目的として微小タイリングアーキテクチャに対して非特定的サブチャネル割り当てを行ってよい。
【0032】
図9は、微小タイリングを実施するメモリコントローラの別の実施形態を示す。この実施形態は、各メモリコントローラにおいてサブチャネル割り当て215に接続されたマッピング論理950を設ける。上記と同様に、図9は、各サブチャネルに対してリオーダ待ち行列として実施されるリオーダバッファ220を示す。この構成には2つのチャネルが含まれ、それゆえ2つのメモリコントローラが含まれる。各チャネルは4つのサブチャネルを含んでおり、それぞれが16バイト幅である。それゆえ、各チャネルは64バイト幅である。
【0033】
一実施形態にいては、マッピング論理950は、パターンの繰り返しを低減するためにはリクエストをいかにサブチャネルへと割り当てるべきかを示すサブチャネル割り当て215へと入力信号を送信する。結果として、オブジェクトがサブチャネル全てについて均等に描画され、ホットスポットが回避されるようにマッピングは変更される。別の実施形態においては、マッピング論理950はアドレス空間の異なる領域に対して異なるマッピングを行う。アドレス空間のある領域に対して行われたマッピングは、当該領域内のデータが関心の対象でなくなったときから、時間経過にしたがって変化させてよい。
【0034】
図10は、非特定的サブチャネルマッピングの一実施形態を示しており、ブロックは図8について上記したと同じ内容である。この場合、三角形の左側の辺と底辺に沿ったブロックへのアクセスリクエストは、サブチャネル間でより均等に分配される。このサブチャネル割り当ての効果は、微小タイリングリクエストをより効率的にメモリチャネルへとポピュレートすることにより情報量を減少させることである。同様に、線形アドレス空間の場合、適切に選択した非特定的サブチャネル割り当てマッピングにより、特にメモリアクセスが通常Mバイトの倍数分にまたがる場合においては、情報量を減少させることができる。
【0035】
図11は、コンピュータシステム100の別の実施形態を示す。この実施形態においては、チップセット107は独立したメモリ制御コンポーネントとI/O制御コンポーネントに対置される単一の制御ハブ1120を含む。それゆえ、メモリコントローラ112は、CPU102内に含めてよく、メモリ115がCPU102に接続されてよい。このような実施形態において、グラフィックスコントローラ160は制御ハブ1120に接続されてよく、CPU102を介してメインメモリ115にアクセスする。
【0036】
前出の記載を読了後、当業者には本発明の多様な改良や変更が必ず明らかとなるであろうが、例示目的で示され記載されたいかなる特定の実施形態も制限的なものであることを全く意図されていないことが理解されるであろう。それゆえ、多様な実施形態の詳細への言及により請求の範囲を限定することは意図されておらず、請求の範囲においては、発明にとって必須であると見做される特徴だけが記載される。
【図面の簡単な説明】
【0037】
発明は、例として説明し、添付図面における図に限定されない。図面においては、類似の参照番号により類似の要素が示される。
【0038】
【図1】図1は、コンピュータシステムの一実施形態のブロック図である。
【0039】
【図2】図2は、メモリコントローラの一実施形態を示す。
【0040】
【図3】図3は、論理仮想アドレスの一実施形態を示す。
【0041】
【図4】図4は、メモリコントローラの別の実施形態を示す。
【0042】
【図5A−5B】図5Aと5Bは、パフォーマンス利益を示す。
【0043】
【図6】図6は、特定的サブチャネル割り当ての一実施形態を示す。
【0044】
【図7】図7は、特定的サブチャネル割り当ての別の実施形態を示す。
【0045】
【図8】図8は、特定的サブチャネル割り当ての別の実施形態を示す。
【0046】
【図9】図9は、メモリコントローラの別の実施形態を示す。
【0047】
【図10】図10は、非特定的サブチャネル割り当ての一実施形態を示す。
【0048】
【図11】図11は、コンピュータシステムの別の実施形態を示す。

【特許請求の範囲】
【請求項1】
1つのメモリ位置への1つのアクセスリクエストを受信する割り当て論理と、
前記リクエストを1以上の更なるリクエストと結合して、前記チャネル内の2以上の個別にアドレス指定可能なサブチャネルへとアクセスするための1つのトランザクションアセンブラと
を含むメモリコントローラ。
【請求項2】
前記複数のサブチャネルへのリクエストのそれぞれは、1つの独立アドレス要素と1つの共有アドレス要素とを含む、
請求項1に記載のメモリコントローラ。
【請求項3】
1つのサブチャネルリクエストの前記独立アドレス要素は、1つのサブチャネルと関連付けられる、
請求項2に記載のメモリコントローラ。
【請求項4】
1つの第1サブチャネルへと与えられた1つの第1サブチャネルリクエストは、1つの第2サブチャネルへと与えられた1つの第2サブチャネルリクエストとは異なる複数の独立アドレスビットを有する1つの第1アドレスを含む、
請求項1に記載のメモリコントローラ。
【請求項5】
各サブチャネルへと伝送されるデータは、1つの連続データブロックを表す、
請求項1に記載のメモリコントローラ。
【請求項6】
各サブチャネルの前記複数のデータブロックは、1つの連続的アドレス領域からのものではない、
請求項5に記載のメモリコントローラ。
【請求項7】
前記複数のサブチャネルリクエストを保存する1つのリオーダバッファを更に含む、
請求項1に記載のメモリコントローラ。
【請求項8】
前記リオーダバッファは、前記2以上のサブチャネルのそれぞれに対して1つ関連付けられる待ち行列を含む、
請求項6に記載のメモリコントローラ。
【請求項9】
各待ち行列には、関連付けられた1つのサブチャネルへと伝送される複数のサブチャネルリクエストが保存される、
請求項8に記載にメモリコントローラ。
【請求項10】
前記複数の待ち行列のそれぞれに保存された前記複数のサブチャネルリクエストをアセンブルして該複数のサブチャネルリクエストを前記関連付けられたサブチャネルへと伝送する1つのトランザクションアセンブラを更に含む、
請求項8に記載のメモリコントローラ。
【請求項11】
前記割り当て論理へと接続され、前記複数のサブチャネルへの非特定的割り当てを行うマッピング論理を更に含む、
請求項1に記載のメモリコントローラ。
【請求項12】
前記複数のサブチャネルのそれぞれに対して1つ接続される制御線を更に含み、各制御線は、対応する1つのサブチャネルへの電力を、前記チャネルへの対応するリクエストがないときには低減させる、
請求項1に記載のメモリコントローラ。
【請求項13】
1つのメモリコントローラにおいて、該メモリコントローラに接続された1つのメモリチャネルへの1つのアクセスリクエストを受信することと、
前記リクエストを前記メモリチャネル内の個別にアクセス可能な1つの対応するサブチャネルへと割り当てることと、
前記リクエストを、1以上の更なるリクエストと結合して、前記サブチャネルへとアクセスすることと
を含む、方法。
【請求項14】
前記メモリコントローラが、各サブチャネルに対して1つの書き込みサブチャネルリクエストを選択することにより、1つの書き込みトランザクションを生成すること
を更に含む、請求項13に記載の方法。
【請求項15】
前記メモリコントローラが、各サブチャネルに対して1つの読み出しサブチャネルリクエストを選択することにより、1つの読み出しトランザクションを生成すること
を更に含む請求項13に記載の方法。
【請求項16】
前記リクエストを1つのサブチャネルに割り当てた後に、該リクエストを1つのリオーダバッファに保存すること
を更に含む、請求項13に記載の方法。
【請求項17】
前記リオーダバッファに保存された前記複数のサブチャネルリクエストをアセンブルすることと、
前記複数のリクエストを対応するサブチャネルへ伝送することと
を更に含む、請求項16に記載の方法。
【請求項18】
1以上のチャネルを有する1つのメモリ装置と、
前記メモリ装置に接続された1つのチップセットであって、1つのメモリ位置への1つのアクセスリクエストを受信して該リクエストを1以上の更なるリクエストと結合して前記チャネル内の2以上の個別にアドレス指定可能なサブチャネルへとアクセスする1つのメモリコントローラを含む、チップセットと
を含むシステム。
【請求項19】
前記メモリコントローラは、
前記リクエストを1つのサブチャネルへと割り当てる割り当て論理と、
前記サブチャネルリクエストを保存する1つのリオーダバッファと
を更に含む、
請求項18に記載のシステム。
【請求項20】
前記メモリコントローラは、1つの共有アドレスに基づいて、前記複数の待ち行列のそれぞれに保存された前記複数のサブチャネルリクエストを結合して、該複数のサブチャネルリクエストを、対応する前記サブチャネルへと伝送する1つのトランザクションアセンブラを更に含む、
請求項19に記載のシステム。
【請求項21】
前記メモリコントローラは、前記割り当て論理に接続されて、前記複数のサブチャネルへの非特定的割り当てを行うマッピング論理を更に含む、
請求項20に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2012−104161(P2012−104161A)
【公開日】平成24年5月31日(2012.5.31)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−32512(P2012−32512)
【出願日】平成24年2月17日(2012.2.17)
【分割の表示】特願2008−518483(P2008−518483)の分割
【原出願日】平成18年6月23日(2006.6.23)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】