マルチタイリングを用いたメモリアクセス
【課題】タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作する。
【解決手段】アドレス前スウィズル回路330は、アクセス制御信号に従い、プロセッサにより提供されるアドレスビットを調整する。データステアリング回路310は、メモリにおけるN個のサブチャネルに接続し、アクセス制御信号、調整済みアドレスビット、および、N個のサブチャネルに関連付けられたサブチャネル識別子に従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作する。タイル状メモリアクセスは、水平および垂直のタイル状メモリアクセスを含む。アドレス後スウィズル回路3350〜3353は、調整済みアドレスビットを用い、アクセス制御信号およびサブチャネル識別子に従い、N個のサブチャネルに対するサブチャネルアドレスビットを生成する。
【解決手段】アドレス前スウィズル回路330は、アクセス制御信号に従い、プロセッサにより提供されるアドレスビットを調整する。データステアリング回路310は、メモリにおけるN個のサブチャネルに接続し、アクセス制御信号、調整済みアドレスビット、および、N個のサブチャネルに関連付けられたサブチャネル識別子に従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作する。タイル状メモリアクセスは、水平および垂直のタイル状メモリアクセスを含む。アドレス後スウィズル回路3350〜3353は、調整済みアドレスビットを用い、アクセス制御信号およびサブチャネル識別子に従い、N個のサブチャネルに対するサブチャネルアドレスビットを生成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、マイクロプロセッサの分野に関し、より詳しくは、メモリ構成に関する。
【背景技術】
【0002】
典型的なプロセッサシステムにおいて、メモリは、通常、線形にアドレス指定された記憶素子アレイとして構成される。この構成は、プログラム内の命令が順次実行されるので、コードまたはプログラム記憶領域に適している。しかし、特定のタイプのデータ記憶、または、特定のメモリ動作にとっては、線形構成は非効率的な場合もある。
【0003】
特定のアプリケーションに影響されるデータ構造に従いメモリが構成されることは、多くの用途において望ましいかもしれない。例えば、グラフィックおよびイメージングアプリケーションでは、基本データ構造は二次元(2−D)配列である。二次元配列は、基本データブロックを提供することに加え、多次元配列を構築するために用いられてよい。既存のメモリ構成を用いて2−D配列にアクセスすると、非効率の原因となる処理オーバーヘッドを招く可能性がある。さらに、通常、スクリーンリフレッシュは、一度に1本のスキャンラインに対して行われるので、メモリ構成が線形になるほどメリットが大きい。
【図面の簡単な説明】
【0004】
本発明の実施形態は、以下の説明および添付の図面を参照することで最も良く理解できよう。添付の図面は、本発明の実施形態を図示する目的で用いられる。
【図1A】本発明の一実施形態が実施されうるシステムを示す図である。
【図1B】本発明の一実施形態に係るグラフィックシステムを示す図である。
【図1C】本発明の一実施形態に係るサーバ/コンピュータシステムを示す図である。
【図2A】本発明の一実施形態に係るタイル状メモリアクセスを示す図である。
【図2B】本発明の一実施形態に係るメモリサブチャネルを伴うタイル状メモリアクセスを示す図である。
【図3A】本発明の一実施形態に係るアクセスコントローラを示す図である。
【図3B】本発明の一実施形態に係るアクセスコントローラを用いた垂直のタイル状メモリアクセスを示す図である。
【図3C】本発明の一実施形態に係るアクセスコントローラを用いた水平のタイル状メモリアクセスを示す図である
【図3D】本発明の一実施形態に係るアクセスコントローラを用いた非タイル状メモリアクセスを示す図である。
【図4】本発明の一実施形態に係るアドレス前スウィズル(swizzle)回路を示す図である。
【図5】本発明の一実施形態に係るアドレス後スウィズル回路を示す図である。
【図6A】本発明の一実施形態に係るデータステアリング回路の設定を示す図である。
【図6B】本発明の一実施形態に係るデータステアリング回路を示す図である。
【図7】本発明の一実施形態に係るメモリにアクセスするプロセスを示すフローチャートである。
【図8】本発明の一実施形態に係るデータステアリング回路の設定を選択するプロセスを示すフローチャートである。
【図9】本発明の一実施形態に係るN群のサブチャネルアドレスビットを生成するプロセスを示すフローチャートである。
【発明を実施するための形態】
【0005】
本発明の一実施形態は、メモリアクセスを制御する技術である。データステアリング回路は、メモリにおけるN個のサブチャネルに接続し、アクセス制御信号と、N個のサブチャネルに関連付けられたサブチャネル識別子とに従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプデータを動的に操作する。タイル状メモリアクセスは、水平および垂直のタイル状メモリアクセスである。アドレス前スウィズル回路は、アドレスラインを調整して特定のタイプのアクセスに適合させる。データステアリング回路は、アクセス制御信号と、調整済みアドレスビットとに従い設定される。アドレス後スウィズル回路は、アクセス制御信号と、サブチャネル識別子とに従い、N個のサブチャネルに対するサブチャネルアドレスビットを生成する。
【0006】
以下の説明には、数多くの特定の詳細が記載されている。しかしながら、本発明の実施形態は、それらの特定の詳細がなくても実施できることを理解されたい。また、他の例において、本記載の理解をあいまいにしないよう、よく知られた回路、構造および技術は、示されていない。
【0007】
本発明の一実施形態は、フローチャート、フロー図、構造図またはブロック図として通常表されるプロセスとして説明されてよい。フローチャートは、複数の動作をシーケンシャルプロセスとして記載する場合もあるが、動作の多くは、並行してまたは同時に実行されてよい。フローチャートにおけるループまたは繰り返しは、一回の繰り返しにより示される。ループインデックス(単数または複数)あるいはループカウンタ(単数または複数)は、関連するカウンタまたはポインタをアップデートするよう維持される。さらに、動作の順番は入れ替えてよい。動作が完了するとプロセスは終了する。プロセスは、方法、プログラム、手順などに対応してよい。ブロック図は、構成要素、アイテム、コンポーネント、デバイス、ユニット、サブユニット、構造、方法、プロセス、機能、動作、機能性、または、タスクなどを示すブロックまたはモジュールを含んでよい。機能または動作は、自動または手動で実行されてよい。
【0008】
図1Aは、本発明の一実施形態が実施されうるシステム10を示す図である。システム10は、10ギガビットイーサネット(登録商標)を用いたLAN(Local Area Network)アプリケーションを表す。システム10は、2つのキャンパス20および40と、リンク22とを有する。
【0009】
キャンパス20および40のそれぞれは、ネットワークインターコネクトを用いてパソコン(PC)、ワークステーション、および、サーバとリンクする企業を表す。それらは、10ギガビットイーサネットダウンリンクに分割される複数の1000BASE−Xまたは1000BASE−Tセグメントの集まりを有してよい。リンク22は、長距離(40kmなど)にわたって2つのキャンパス20および40を接続する単一モードファイバリンクであってよい。パケットまたはデータの送信は、リード・ソロモン符号のようなエラー訂正符号を用いたエラー訂正方式により実行されてよい。
【0010】
キャンパス20および40のインフラは同様である。各キャンパス内のネットワークは、ビル、データセンター、または、コンピュータ室を網羅してよい。キャンパス20は、スイッチ/ルータ24およびスイッチ/ルータ28のようなスイッチ/ルータと、LAN30とを有してよい。キャンパス40は、スイッチ/ルータ42およびスイッチ/ルータ46のようなスイッチ/ルータと、LAN48とを有してよい。スイッチ/ルータ24および42は、一般的に、対応するキャンパスの端に配置される。それらは、リンク22を介し互いに接続される。スイッチ/ルータ24および28は、毎秒10ギガビット(Gbps)までの速度で、短距離(30から80メートル)にわたりマルチモードファイバリンク26を介し接続される。スイッチ/ルータ28は、LAN30に接続される。同様に、スイッチ/ルータ42および46は、毎秒10ギガビット(Gbps)までの速度で、短距離(30から80メートル)にわたりマルチモードファイバリンク44を介し接続される。スイッチ/ルータ46は、LAN48に接続される。
【0011】
LAN30は、サーバ32、および、パソコン(PC)/ワークステーション34のようなサーバ、PC、または、ワークステーションとの接続性を提供する。同様に、LAN48は、サーバ50、および、PC/ワークステーション52のようなサーバ、PC、または、ワークステーションとの接続性を提供する。サーバ32または50は、コンピューティング環境をサポートする特定の動作を提供する。それらは、さまざまなプリンタに接続されたプリントサーバ、テープドライブ、RAID(redundant arrays of inexpensive disks)のような大容量記憶装置に接続された記憶装置サーバ、ビデオ、オーディオまたはグラフィックのようなマルチメディアサービスを提供するメディアサーバ、または、特定の機能を有するいかなるサーバであってよい。各サーバは、一般的に、対応するLANとのネットワーク接続性を有する1つ以上のネットワークインターフェースカード(NIC)を有する。
【0012】
図1Bは、本発明の一実施形態が実施されうるグラフィックシステム60を示す図である。グラフィックシステム60は、グラフィックコントローラ65、メモリコントローラ70、メモリ80、ピクセルプロセッサ85、ディスプレイプロセッサ90、デジタル・アナログコンバータ(DAC)95、および、ディスプレイモニタ97を有する。
【0013】
グラフィックコントローラ65は、高速線描、二次元(2−D)および三次元(3−D)グラフィック描画機能、シェーディング、アンチエイリアシング、ポリゴン描画、透明効果、色空間変換、アルファブレンディング、彩度キーイングなどのグラフィック動作を実行するグラフィック能力を有するプロセッサである。メモリコントローラ(MC)70は、メモリ制御機能を実行する。MC70は、メモリアクセスを制御するアクセスコントローラ75を有してよい。アクセスコントローラ75は、タイル状および非タイル状メモリアクセスを含むメモリ80へのアクセス制御を提供する。メモリ80は、SRAMまたはDRAMメモリデバイスを含む。メモリデバイスは、N個のサブチャネル820から82Nに編成されてよい。サブチャネル820から82Nは、アクセスコントローラ75と接続してよい。メモリデバイスは、グラフィックコントローラ65によって処理されるグラフィックデータを格納する。
【0014】
ピクセルプロセッサ85は、幾何学的計算、アフィン変換、モデルビュープロジェクション、3−Dクリッピングなどの特殊で複雑なグラフィック機能を実行できる特殊グラフィックエンジンである。ピクセルプロセッサ85は、メモリコントローラ70を介して、メモリ80および/またはグラフィックコントローラ65にアクセスする。ディスプレイプロセッサ90は、グラフィックデータの表示を処理し、パレットテーブルルックアップ、同期、バックライトコントローラ、ビデオ処理などのディスプレイ関連機能を実行する。DAC95は、デジタルディスプレイデジタルデータをディスプレイモニタ97へのアナログビデオ信号に変換する。ディスプレイモニタ97は、表示用スクリーンにグラフィック情報を表示するディスプレイモニタである。ディスプレイモニタは、ブラウン管(CRT)モニタ、テレビ(TV)セット、液晶ディスプレイ(LCD)、フラットパネル、または、デジタルCRTであってよい。
【0015】
図1Cは、本発明の一実施形態が実施されうるワークステーション34/52を示す図である。ワークステーション34/52は、プロセッサユニット110、メモリコントローラ(MC)120、メモリ130、入力/出力コントローラ(IOC)140、インターコネクト145、大容量記憶インターフェース150、入力/出力(I/Oデバイス1471から147k)、および、ネットワークインターフェースカード(NIC)160を有してよい。ワークステーション34/52は、上記構成要素をほぼ有するとみてよい。
【0016】
プロセッサ110は、ハイパースレッディング、セキュリティ、ネットワーク、デジタルメディアテクノロジー、シングルコアプロセッサ、マルチコアプロセッサ、組込みプロセッサ、モバイルプロセッサ、マイクロコントローラ、デジタルシグナルプロセッサ、スーパースカラーコンピュータ、ベクトルプロセッサ、単一命令多重データ(SIMD)コンピュータ、複雑命令セットコンピュータ(CISC)、縮小命令セットコンピュータ(RISC)、超長命令語(VLIW)を用いるプロセッサのようないかなるタイプのアーキテクチャ、または、ハイブリッドアーキテクチャのCPUを表す。
【0017】
MC120は、メモリ130およびIOC140のようなメモリおよび入力/出力デバイスの制御および設定を提供する。MC120は、グラフィック、メディア、単独実行モード、ホストと周辺バスとのインターフェース、メモリ制御、パワーマネジメントなどの多数の機能を集積したチップセットに集積されてよい。MC120、または、MC120におけるメモリコントローラの機能は、プロセッサユニット110に集積されてよい。いくつかの実施形態では、プロセッサユニット110の内部または外部にあるメモリコントローラは、プロセッサユニット110におけるすべてのコアまたはプロセッサに対して機能しうる。他の実施形態では、プロセッサユニット110における異なるコアまたはプロセッサに対して個別に機能しうる別々の部分を含んでよい。MC120は、メモリ130へのアクセスを制御するアクセスコントローラ125を有してよい。アクセスコントローラ125は、1つのメモリアクセスを、タイル状および非タイル状メモリアクセスへと動的に設定することができる。
【0018】
メモリ130は、システムコードおよびデータを格納する。メモリ130は、一般的に、DRAM(ダイナミックRAM)、SRAM(スタティックRAM)、または、リフレッシュされる必要がないタイプを含めた他のいかなるタイプのメモリであってよい。メインメモリ130は、図1Bに示されたメモリ80に用いられるものと同様の、DRAMのようなメモリデバイスの複数のチャネルを有してよい。DRAMは、毎秒8.5ギガバイト(GB/s)の帯域幅を有するメモリデバイスを含んでよい。DRAMは、SDRAM(シンクロナスDRAM)、SDR(Single Data Rate)SDRAM、EDO(Extended Data Out)DRAM、DDR(Double Data Rate)SDRAM、DDR2(Double Data Rate Two)SDRAM、RDRAM R(Rambus DRAM)、XDR(Extreme Data Rate)、または、XDRIIであってよい。RDRAMおよびXDRは、Rambus社の登録商標である。DDRは、クロックの立上りおよび立下りエッジの両方でデータを転送することによって転送速度を2倍にし、DIMM(Dual In Line Memory Module)にパッケージされてよい。これによって、フロントサイドバス(FSB)の周波数を上げずに転送速度を効果的に2倍にする。DDR2は、オンダイターミネーションなどのさまざまな技法を用いてデータレートを高めることにより、チップ、プリフェッチバッファ、および、オフチップドライバにおける過剰な信号ノイズを除去する。オフチップドライバは、キャリブレーション技術を用いてデータストローブ間の差を校正してよい。キャリブレーションにより、バッファインピーダンスに対するランプ電圧が最適化され、その結果、立上りおよび立下りエッジにおけるオーバーシュートおよびアンダーシュートを抑制する。XDRまたはXDRIIは、計測可能な高速ポイントツーポイント双方向データ信号に対してはDRSL(Differential Rambus Signaling Levels)を用い、複数のデバイスへのソース同期バスアドレスおよびコマンド信号に対してはRSL(Rambus Signaling Level)を用いる。メモリ130で用いられるメモリデバイスは、100MHz、133MHz、166MHz、266MHz、333MHz、400MHz、1GHzまたは、8GHzまでの計測可能ないかなる適切なクロック周波数で動作してよい。これらは、BGA(Ball Grid Array)、DIMM、スティックまたはモジュールを含むいかなるパッケージング技術でパッケージされてよい。一実施形態では、メモリ130は、N個のサブチャネル1320から132Nを有する。N個のサブチャネル1320から132Nのそれぞれは、1つ以上のメモリデバイスに対応してよい。N個のサブチャネル1320から132Nは、アクセスコントローラ125と接続してよい。
【0019】
グラフィックプロセッサ135は、グラフィック機能を提供するプロセッサである。グラフィックプロセッサ135は、MC120に一体化されることにより、GMC(Graphics and Memory Controller)を形成してよい。グラフィックプロセッサ135は、グラフィックコントローラ用に設定されたAGP(Accelerated Graphics Port)またはPCI Expressポートのようなグラフィックポートを介し、MC120と接続するGPA(Graphics Performance Accelerator)カードのようなグラフィックカードであってよい。グラフィックプロセッサ135は、プログレッシブスキャンモニタ、TV−Outデバイス、および、TMDS(Transition Minimized Differential Signaling)コントローラなどのディスプレイモニタ137へのインターフェースを提供する。ディスプレイモニタ137は、CRT(ブラウン管)モニタ、テレビセット、液晶ディスプレイ(LCD)、フラットパネル、および、デジタルCRTなどのいかなるディスプレイデバイスであってよい。
【0020】
IOC140は、I/O機能をサポートするよう設計された多数の機能性を有する。IOC140は、MC120と共にチップセットに集積されるか、または、MC120とは独立してI/O機能を実行してよい。IOC140は、PCI(peripheral component interconnect)バスインターフェース、プロセッサインターフェース、割り込みコントローラ、DMA(ダイレクトメモリアクセス)コントローラ、パワーマネジメントロジック、タイマ、SMBus(システムマネジメントバス)、USB(universal serial bus)インターフェース、大容量記憶インターフェース、LPC(ローピンカウント)インターフェース、無線インターコネクト、DMI(direct media interface)などの多数のインターフェースおよびI/O機能を含んでよい。
【0021】
インターコネクト145は、周辺デバイスとのインターフェースを提供する。インターコネクト145は、ポイントツーポイントであってよく、または、複数のデバイスに接続されてよい。明確にする目的からすべてのインターコネクトを示してはいない。インターコネクト145は、いかなるインターコネクト、または、PCI(Peripheral Component Interconnect)、PCI Express、 USB(Universal Serial Bus)、SCSI(Small、Computer System Interface)、シリアルSCSI、および、DMI(Direct Media Interface)などのバスを含むこともあると考えられる。
【0022】
大容量記憶インターフェース150は、コード、プログラム、ファイル、データ、および、アプリケーションのようなアーカイブ情報を格納する大容量記憶装置と接続する。大容量記憶インターフェースは、SCSI、シリアルSCSI、ATA(Advanced Technology Attachment)(パラレルおよび/またはシリアル)、IDE(Integrated Drive Electronics)、拡張IDE、ATAPI(ATA Packet Interface)などを含んでよい。大容量記憶装置は、CD−ROM152、DVD153、フロッピー(登録商標)ドライブ154、ハードドライブ155、テープドライブ156、および、他のいかなる磁気または光記憶装置を含んでよい。大容量記憶装置は、マシンアクセス可能媒体を読み取るメカニズムを提供する。
【0023】
I/Oデバイス1471から147kは、I/O機能を実行するI/Oデバイスを含む。I/Oデバイス1471から147kの例は、入力デバイス(例えば、キーボード、マウス、トラックボール、ポインティングデバイスなど)、メディアカード(オーディオ、ビデオ、グラフィックなど)、ネットワークカードのためのコントローラ、および、他のいかなる周辺コントローラを含む。
【0024】
NIC160は、ワークステーション34/52へのネットワーク接続性を提供する。NIC160は、通信トランザクション処理の一部としての割り込みを生じさせる可能性がある。一実施形態では、NIC160は、32ビットおよび64ビットのPCI(peripheral component interconnect)バス規格の両方と互換性がある。一般的に、NIC160は、PCIローカルバス改訂版2.2、PCI−Xローカルバス改訂版1.0、または、PCI−Express規格と互換性があってよい。処理システム内には複数のNIC160が存在してよい。一般的に、NIC160は、標準的なイーサネット(登録商標)最小および最大フレームサイズ(64から1518バイト)フレームフォーマット、および、IEEE(米国電気電子学会)802.2LLC(Local Link Control)仕様をサポートする。NIC160は、また、全二重ギガビットイーサネット(登録商標)インターフェース、フレームベースフローコントロール、および、ワイヤードイーサネット(登録商標)の物理層およびデータリンク層を規定する他の規格もサポートしてよい。NIC160は、IEEE802.3abにより規定される銅線ギガビットイーサネット(登録商標)、または、IEEE802.3zにより規定される光ファイバギガビットイーサネット(登録商標)をサポートしてよい。
【0025】
NIC160は、SCSI(Small Computer System Interface)ホストアダプタ、または、FC(Fiber Channel)ホストアダプタのようなホストバスアダプタ(HBA)であってもよい。SCSIホストアダプタは、ボード上のハードウェアおよびファームウェアを含み、SCSIトランザクション、または、アダプタBIOS(Basic Input/Output System)を実行してSCSIデバイスからブートするか、または、SCSIホストアダプタを設定してよい。FCホストアダプタは、ファイバチャネルバスと接続するよう用いられてよい。NIC160は、1ギガビット/秒のFC−SAN(Fiber Channelのストレージエリアネットワーク)との自動高速ネゴシエーションにより高速(2ギガビット/秒)で動作してよい。NIC160は、適切なファームウェアまたはソフトウェアによってサポートされることにより、ローカルおよびリモートHBAのディスカバリ、レポート、および、管理に対して帯域内FCまたは帯域外インターネットプロトコル(IP)サポートの両方を提供してよい。NIC160は、フレームレベル多重化および故障フレーム再構築、ファブリックサポート用オンボードコンテキストキャッシュ、および、ハードウェアパリティおよびCRC(巡回冗長符号)サポートによるエンドツーエンドのデータ保護を有してよい。
【0026】
図2Aは、本発明の一実施形態に係るタイル状メモリアクセス200Aを示す図である。タイル状メモリアクセス200Aは、メモリの矩形領域205を含む。矩形領域205は、メモリブロックのメモリアドレス指定の論理表現である。タイル状メモリアクセス200Aは、P列およびQ行からなる二次元配列として編成される多数のメモリブロックを含む。図示された例では、Pが4つ、および、Qが4つである。各ブロックは、バイト数を有してよい。この例では、各ブロックは、16バイトを含む。当業者であれば知っているように、矩形領域205は、行と列との数が同じであれば、いかなる数の行および列によるいかなる数のブロックを有してよい。さらに、各ブロックは、いかなるバイト数を有してよい。
【0027】
メモリのアドレス指定はバイト指向なので、連続したブロックのアドレスは、16または000010Hずつずれていく。ただし、Hは、16進表記を示す。以下では、アドレスは、16進表記である。矩形領域205は、4×4の二次元(2−D)配列で編成された16の連続するブロックを有する。この4×4の2−D配列をタイルと称する。第1のブロックのアドレスを000とすると、以降のブロックのアドレスは、図に示すように010、020、030、040などとなる。
【0028】
領域205は、64バイトのメモリアクセスに対してよい。これは、4つのキャッシュラインに対応する。メモリアクセスには2つのタイプがあり、一方はタイル状メモリアクセス、もう一方は、非タイル状メモリアクセスである。典型的な非タイル状メモリアクセスでは、8つの隣り合ってアドレス指定された8バイトブロックが1つずつ転送される。本発明のタイル状メモリアクセスでは、隣り合ってアドレス指定されたバイトは、連続的にアドレス指定されない。タイル状メモリアクセスは、2つのタイプを有し、一方は、水平のタイル状メモリアクセス、もう一方は、垂直のタイル状メモリアクセスである。本質的には、非タイル状メモリアクセスと、水平のタイル状メモリアクセスとの相違は、サブチャネルにおけるデータの分布の仕方にある。非タイル状メモリアクセスのバイト順と、タイル状メモリアクセスのバイト順とは異なる。タイル状領域にアクセスするアプリケーションは、バイト順がしかるべく並べ替えられる限り、非タイル状アクセスを使用してよい。
【0029】
メモリ領域205では、水平アクセス210、および、垂直アクセス220という2つのタイプのメモリアクセスが存在する。水平アクセス210は、4つの水平アクセス212、214、216、218を含む。それぞれの水平アクセスは、1×64バイトブロックに対応する。水平アクセス210は、単一のスキャンラインのピクセル値を示すデータが連続してアクセスされるディスプレイリフレッシュのようなメモリ動作に適するかもしれない。垂直アクセス220は、4つの垂直アクセス222、224、226、228を含む。各アクセスは、4×16バイトブロックに対応する。垂直アクセスパターンは、レンダリングなどのグラフィックまたはイメージング動作に適するかもしれない。
【0030】
図2Bは、本発明の一実施形態に係るメモリサブチャネルを有するタイル状メモリアクセス200Bを示す図である。タイル状メモリアクセス200Bは、メモリ245の領域と、メモリのサブチャネルとを含んでよい。サブチャネルは、矩形領域205のような1ブロックまたはタイル状の複数のブロックに対応するよう割り当てられるメモリデバイスの論理的区分である。説明を簡単にすべく、矩形領域205は、N個のサブチャネル250、251、252、254に割り当てられるN×Nブロックに分割される四角い領域であってよい。各サブチャネルにおける物理的メモリデバイスの数は、メモリデバイスの構成と、矩形領域205におけるブロックのサイズとに依存する。例えば、各デバイスが1バイト幅で編成され、各ブロックが2バイトを含み、4×4ブロックが存在する場合、4つのサブチャネルが存在し、各サブチャネルは、2つのメモリデバイスに対応してよい。
【0031】
メモリ245のタイル状領域は、4×4ブロックに分割されてよい。ブロックは、行または列が異なるサブチャネル割り当てを含みうるようにサブチャネルに対して割り当てられてよい。各行は、各サブチャネルに割り当てられたメモリブロックを含んでよく、各列も、各サブチャネルに割り当てられたメモリブロックを含んでよい。この例では、4つのサブチャネル250、251、252、253は、図のように、垂直方向および水平方向にブロックに割り当てられる。タイル状メモリアクセス200Bは、水平のタイル状メモリアクセス260と、垂直のタイル状メモリアクセス270とを含んでよい。水平のタイル状メモリアクセス260は、水平のタイル状メモリアクセス262、264、266、268を含んでよい。それぞれのメモリアクセスは、メモリブロックを水平方向にアクセスする。同様に、垂直のタイル状メモリアクセス270は、垂直のタイル状メモリアクセス272、274、276、278を含んでよい。それぞれのメモリアクセスは、メモリブロックを垂直方向にアクセスする。
【0032】
メモリ245のタイル状領域のブロックへのサブチャネルの割り当ては、プロセッサ110から生成されたアドレスビットと、個々のサブチャネルにおけるアドレスビットとの間のマッピングに影響を及ぼすことがある。以下では、プロセッサ110またはメモリコントローラ120によって生成されたアドレスビットは、32ビットアドレス範囲および16バイトデータについてビットA31−A4を含むと仮定する。当業者に知られているように、いかなるアドレス範囲およびいかなるデータサイズを用いてもよい。
【0033】
タイル状ブロック245に示されるマッピングは、以下のとおりである。
・サブチャネル0は、ブロック000−00F、090−09F、060−06F、0F0−0FFに割り当てられる。
・サブチャネル1は、ブロック040−04F、0D0−0DF、020−02F、0B0−0BFに割り当てられる。
・サブチャネル2は、ブロック080−08F、010−01F、0E0−0EF、070−07Fに割り当てられる。
・サブチャネル3は、ブロック0C0−0CF、050−05F、0A0−0AF、030−03Fに割り当てられる。
【0034】
各行および各列がサブチャネルのそれぞれに割り当てられたブロックを含む限り、他のマッピングまたは割り当てが用いられてよいことに留意されたい。
【0035】
サブチャネルは、サブチャネル識別子によって識別されてよい。4つのサブチャネルに対し、サブチャネル識別子は、SC1とSC0との2ビットを含んでよい。各16バイトブロックがマッピングされるサブチャネルは、16バイトブロックのベースアドレスの論理関数であってよい。上記マッピングでは、このような関数は、XOR(排他的論理和)関数である。この関数を用い、サブチャネル識別子のビットは、以下のようなアドレスビットA7−A4の関数として定義されてよい。
SC1=A4 XOR A7 (1a)
SC0=A5 XOR A6 (1b)
【0036】
これらの方程式は、上記割り当てまたはマッピングに適用できることに留意されたい。他の割り当てまたはマッピングに対しては、異なる方程式が存在しうる。あるいは、アドレスビットがA5−A4、および、対応するサブチャネル識別子ビットがSC1およびSC0とすると、アドレスビットA7−A6が得られる。上記割り当てまたはマッピングについては、垂直のタイル状メモリアクセスに対してアドレスビットA7−A6は以下のように得られる。
A7= A4 XOR SC1 (2a)
A6= A5、XOR SC0 (2b)
【0037】
図3Aは、本発明の一実施形態に係る、図1B/1Cに示されたアクセスコントローラ75/125を示す図である。アクセスコントローラ75/125は、データステアリング回路310、デコーディング回路320、アドレス前スウィズル回路330、アドレス後スウィズル回路3350から3353、および、サブチャネルインターフェース3400から3403を有する。この例示的実施形態では、データ転送350として示される、サブチャネル間におけるそれぞれ8バイトの8つの転送があると仮定する。それらの転送は、64バイトの転送360に対応する。アドレス前スウィズル回路330は、アクセスコントローラ75/125の内部にあってよく、または、アクセスコントローラ75/125の外部にあるタイル状メモリアクセスを要求する構成要素内に配置されてよい。
【0038】
水平のタイル状メモリアクセス、または、非タイル状メモリアクセスでは、アドレスビットA7−A6は、アクセスされるべきタイル内の行を符号化する。垂直のタイル状メモリアクセスでは、アドレスビットA5−A4は、アクセスされるべき列を符号化する。アドレス前スウィズル回路330は、垂直のアクセスでアクセスされるべき列のスペックの一実施形態を示す。この実施形態では、アドレスビットA6およびA7は、垂直アクセスの間は、アドレスビットA5およびA4とそれぞれ置き換え可能である。
【0039】
タイル状メモリアクセスは、図2Bに示すような水平および垂直のタイル状メモリアクセスを含む。アクセス制御信号は、タイル状メモリアクセスを選択するタイル状制御信号(TILED)と、タイル状制御信号がアサートされた場合、垂直のタイル状メモリアクセスを選択する垂直制御信号(VERT)とを含む。TILEDが無効にされるかまたはデアサートされると、VERTは、無視される。
【0040】
デコーディング回路320は、アクセス制御信号TILEDおよびVERTを復号化する。TILEDおよびVERTの一方がデアサートされる(例えば論理0になる)と、デコーディング回路320の出力VERT'は、非タイル状または水平のタイル状メモリアクセスモードを有効にする。TILEDおよびVERTがどちらもアサートされる(例えば論理1になる)と、デコーディング回路320の出力VERT'は、垂直のタイル状アクセスモードを有効にする。一実施形態では、デコーディング回路320は、ANDゲートによって実装されてよい。
【0041】
データステアリング回路310は、アクセス制御信号に従い、データステアリングのための設定を選択する。データステアリング回路310は、メモリアクセスタイプが非タイル状メモリアクセス、水平のタイル状メモリアクセス、または、コンディショニングアドレスビットの第1組の値を有する垂直のタイル状メモリアクセスである場合には、第1の設定を選択する。コンディショングアドレスビットは、アクセスタイプに従うメモリ構成に影響を与えるべく用いられるアドレスビットである。この例示的実施形態では、コンディショニングアドレスビットは、A7およびA6である。データステアリング回路310は、メモリアクセスタイプがコンディショニングアドレスビットの他の値の組を有する垂直のタイル状メモリアクセスである場合には、3つの設定のうちの1つを選択する。
【0042】
アドレス後スウィズル回路3350から3353は、N個のサブチャネルインターフェース3400から3403に結合され、アクセス制御信号およびサブチャネル識別子に従い、N個のサブチャネルへのサブチャネルアドレスビットを生成する。この例示的実施形態では、アドレスラインは、A31−A6と仮定する。これらのアドレスビットは、プロセッサユニット110、グラフィックコントローラ65、または、MC70/120によって発行される。アドレスビットA31−A8は、サブチャネルインターフェース3400から3403までを介し、変更されずにメモリサブチャネルまで直接送られる。アドレスビットA7−A6は、個別のサブチャネルへの適切なアドレスビットを生成するために用いられる。サブチャネル識別子は、コンフィギュレーションレジスタに格納されてよく、各サブチャネルに対して固有である。一実施形態では、サブチャネル識別子は、Pビットを含み、ただし、P=log2(N)であり、Nは、サブチャネルの数である。例えば、図3Aに示すようにP=4である場合、サブチャネル識別子は、SC1とSC0との2ビットを含む。したがって、サブチャネルインターフェース3400から3403までは、値00、01、10、11をそれぞれ有するサブチャネル識別子ビットSC1およびSC0に関連付けられる。
【0043】
サブチャネルインターフェース3400から3403までは、図1B/1Cに示すサブチャネル820から82N/1320から1323のようなメモリ80/130の対応するサブチャネルと接続する。上述のごとく、サブチャネル820から82N/1320から1323は、メモリのタイル状領域のブロックに割り当てられる、メモリ80/130におけるメモリデバイスの論理的分割である。サブチャネルインターフェース3400から3403までのそれぞれは、1つのサブチャネル識別子に関連付けられる。
【0044】
図3Bは、本発明の一実施形態に係るアクセスコントローラ75/125を用いる垂直のタイル状メモリアクセスを示す図である。垂直のタイル状転送では、TILEDおよびVERTの両方がアサートされる。デコーディング回路320の出力VERT'もアサートされる。アドレス前スウィズル回路330は、アクセスされるべき列番号をアドレスラインA7−A6に設定する。アドレス後スウィズル回路3350から3353は、アドレスビットA7−A6を復号化し、サブチャネルインターフェース3400から3403までを介して、個別のサブチャネルへのアドレスビットA7−A6を生成する。アドレス前スウィズル回路330、および、アドレス後スウィズル回路3350から3353は、図4および図5にそれぞれ示されている。
【0045】
垂直のタイル状メモリアクセスでは、VERT'信号およびアドレスビットA7−A6は、データステアリング回路310についての4つの設定のうちの1つを選択する。4つの設定のうちの1つは、恒等置換マッピングに対応する。他の3つの設定は、非恒等置換マッピングに対応する。水平のタイル状メモリアクセスおよび非タイル状メモリアクセスにおいて用いられるマッピングとは異なるのであれば、他のいかなるマッピングが用いられてよいことに留意されたい。データステアリング回路310の4つの設定は図6Aに示されている。
【0046】
アドレス前スウィズル回路330は、4つの4垂直アドレスに対応する4つのサブチャネル3400から3403に対して2つのアドレスビットAD7−AD6を生成する。アドレスビットA31−A8はそのまま通過され、各サブチャネルにおけるアドレス後スウィズル回路3350から3353によって復号化されたAD7−AD6と組み合わされることにより、4つのサブチャネルに対して完全なアドレスビットが提供される。
【0047】
データ転送350は、8つの転送を含む。各転送は、メモリにおけるタイル状領域の垂直の列に対応する。データ転送は、64バイト転送360に対応するよう、データステアリング回路310を介して行われる。TILED信号は、行単位で行われる64バイト転送のアクセスを選択する。すなわち、64バイト転送が8×8バイトアレイであり、アレイの第1の行が転送の最初の8バイトであるとみなすと、第2の行は、転送の2番目の8バイト、などと考えられ、このような一対の行が各サブチャネルに送られる。
【0048】
図3Cは、本発明の一実施形態に係る、アクセスコントローラ75/125を用いた水平のタイル状メモリアクセスを示す図である。水平のタイル状転送では、VERTは無効にされるかデアサートされる。デコーディング回路320の出力であるVERT'も無効にされるかデアサートされる。アドレス前スウィズル回路330は、アクセスされるタイルの行を示すアドレスビットA7−A6をそのまま変更せずにしておく。アサートされたVERT信号は、サブチャネルインターフェース3400から3403を介し、アドレスビットA7およびA6を変更なしで個々のサブチャネルへ送るよう、アドレス後スウィズル回路3350から3353を調整する。
【0049】
水平のタイル状メモリアクセスでは、VERT'信号は、データステアリング回路310について第1の設定を選択する。第1の設定は、恒等置換マッピングに対応する。図3Cに示された例では、この恒等置換マッピングは、サブチャネル側のポート番号0、1、2、3をプロセッサ側のポート番号0、1、2、3にそれぞれマッピングする。
【0050】
データ転送350は、8つの転送を含む。各転送は、メモリにおけるタイル状領域の水平の行に対応する。データ転送は、64バイト転送360に対応するよう、データステアリング回路310を介して行われる。TILED信号は、行単位で行われる64バイト転送のアクセスを選択する。すなわち、64バイト転送が8×8バイトアレイであるとみなし、アレイの第1の行は転送の最初の8バイトであるとみなす場合、第2の行は、転送の2番目の8バイトである、などと考えられ、このような一対の行が各サブチャネルに送られる。
【0051】
図3Dは、本発明の一実施形態に係る、アクセスコントローラ75/125を用いた非タイル状メモリアクセスを示す図である。非タイル状転送では、TILEDは、無効にされるかデアサートされる。デコーディング回路320の出力であるVERT'も無効にされるかデアサートされる。アドレス前スウィズル回路330は、アクセスされるタイルの行を示すアドレスビットA7−A6をそのまま変更せずにしておく。VERT信号は、サブチャネルインターフェース3400から3403を介し、アドレスビットA7−A6を変更なしで個々のサブチャネルへ送るよう、アドレス後スウィズル回路3350から3353を調整する。
【0052】
非タイル状メモリアクセスでは、VERT'信号は、データステアリング回路310について第1の設定を選択する。第1の設定は、恒等置換マッピングに対応する。図3Dに示された例では、この恒等置換マッピングは、サブチャネル側のポート番号0、1、2、3をプロセッサ側のポート番号0、1、2、3にそれぞれマッピングする。
【0053】
データ転送350は、8つの転送を含む。各転送は、メモリにおけるタイル状領域の水平の行に対応する。データ転送は、64バイト転送360に対応するよう、データステアリング回路310を介して行われる。TILED信号は、列単位で行われる64バイト転送のアクセスを選択する。すなわち、64バイト転送が8×8バイトアレイであるとみなし、アレイの第1の行は転送の最初の8バイトであるとみなす場合、第2の行は、転送の2番目の8バイトである、などと考えられ、そのアレイからの一対の列が各サブチャネルに送られる。
【0054】
図4は、本発明の一実施形態に係る、図3Aに示されるアドレス前スウィズル回路330を示す図である。
【0055】
本質的には、アドレス前スウィズル回路330は、アクセス制御信号に基づき、最下位K共通アドレスビットを復号化してアドレスビット回路A7−A6にそれぞれ対応するアドレスビットAD7−AD6にするデコーダを有する。図3Aに示される例では、アドレス前スウィズル回路330は、4つのアドレスビットA7−A4を含む最下位4アドレスビットA31−A4を復号化し、アドレスビットAD7−AD6をアドレス後スウィズル回路3350から3353に供給する。
【0056】
アドレス前スウィズル回路330は、2つの2対1マルチプレクサ410および420を有する。マルチプレクサ410への入力は、アドレスビットA7およびA4である。マルチプレクサ420への入力は、アドレスビットA5およびA6である。マルチプレクサのどちらもVERT'信号によって選択される。VERT'信号がLOWの場合は、メモリアクセスが非タイル状メモリアクセスかまたは水平のタイル状アクセスであることを示し、マルチプレクサ410および420は、A7およびA6に対応する0入力をそれぞれ選択する。VERT'信号がHIGHの場合は、メモリアクセスが垂直のタイル状メモリアクセスであることを示し、マルチプレクサ410および420は、A4およびA5に対応する1入力をそれぞれ選択する。したがって、アドレス前スウィズル回路330は、メモリアクセスが非タイル状または水平のタイル状アクセス、あるいは、垂直のタイル状メモリアクセスかどうかによって、A7−A6またはA4−A5というようにアドレスビットAD7およびAD6を提供する。
【0057】
図5は、本発明の一実施形態に係る、図3Aに示されたアドレス後スウィズル回路335i(i=0,...3)を示す。本実施形態では、サブチャネルインターフェース3400から3403にサブチャネル識別子が設けられてよい。サブチャネルインターフェース3400から3403は、インターフェース回路においてローカルにサブチャネル識別子(例えばSC1およびSC0ビット)を設けてよい。インターフェース回路は、MC120の内部にあっても外部にあってもよい。他の実施形態では、サブチャネル識別子は、初期化またはブートアップシーケンスの間の設定手順の一部として、コンフィグレーションレジスタに設けられてよい。
【0058】
アドレス後スウィズル回路335iは、N個のサブチャネルデコーダ5200から520N−1を有してよく、この場合、Nは、サブチャネルの数を示す。N個のサブチャネルデコーダ5200から520N−1は、本質的に同じである。N個のサブチャネルデコーダ5200から520N−1それぞれへの入力は、アドレス前スウィズル回路330のAD7−AD6ビット、および、サブチャネル識別子ビット、すなわち、対応するサブチャネルにおけるSC1およびSC0である。N個のサブチャネルデコーダ5200から520N−1の出力は、サブチャネルのメモリデバイスに供給されるべきアドレスビットA7−A6である。N=4の場合、サブチャネルのメモリデバイスに供給されるべきA7−A6ビットは4グループ存在する。
【0059】
N個のサブチャネルデコーダのそれぞれは、アクセス制御信号(TILED、VERTなど)、および、対応するサブチャネル識別子(SC1およびSC0など)に基づき、K個のサブチャネルアドレスビット(A7−A6ビット)を生成する(N=2K)。説明を簡潔にすべく、すべてのサブチャネルデコーダは示していない。サブチャネルデコーダ5200は、2つのXORゲート5320および5340と、2つの2対1マルチプレクサ5420および5440とを有する。2つのXORゲート5320および5340は、サブチャネル0において、AD7−AD6ビットと、サブチャネル識別子ビットSC10およびSC00とに対してXOR演算を実行する。マルチプレクサへの入力0は、AD7−AD6ビットである。マルチプレクサ536への入力1は、XORゲート5320および5340の出力である。サブチャネルデコーダ5200は、本質的に、方程式(2a)および(2b)によって提供される論理関数を実装する。他のサブチャネルデコーダも同様の構成要素を有する。例えば、サブチャネルデコーダ5203は、XORゲート5323および5343と、2対1のマルチプレクサ5343とを有する。サブチャネルデコーダ5203は、アドレスA7−A6をサブチャネル3 3403に供給する。
【0060】
VERT'信号は、すべてのマルチプレクサ5420および5440の選択入力に接続される。VERT'が無効にされるかまたはデアサートされる場合は、メモリアクセスタイプが水平のタイル状メモリアクセスまたは非タイル状メモリアクセスであることを示し、マルチプレクサ5420および5440は、AD7−AD6アドレスビットである0入力を選択し、これらは、元のアドレスビットA7−A6と同じである。
【0061】
VERT'がアサートされる場合は、メモリアクセスタイプが垂直のタイル状メモリアクセスであることを示し、マルチプレクサ5420および5440は、XORゲート5320、5340、...5323、5343の出力に対応する1入力を選択する。XORゲート5320、...5343は、方程式(2a)および(2b)により提供されるような、サブチャネル識別子SC10、SC00、...、SC13、SC03と、元はアドレスビットA4−A5であるアドレスビットAD7およびAD6との間でXOR演算を実行する。したがって、サブチャネル3400から3403に送られる、生成されたA7−A6アドレスビットは、垂直のタイル状メモリアクセスについて適切に計算されたアドレスビットと一致する。
【0062】
図6Aは、本発明の一実施形態に係るデータステアリング回路310の設定600を示す図である。設定600は、設定またはマッピング610、620、630および640を含む。
【0063】
データステアリング回路310は、MC120のデータバスと接続し、MC120とプロセッサユニット110との間でのデータ転送を実行する。データステアリング回路310は、メモリにおけるN個のサブチャネルに接続し、アクセス制御信号と、N個のサブチャネルに関連付けられたサブチャネル識別子とに従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作する。データステアリング回路310は、プロセッサ側のN個のポートとサブチャネル側のN個のポートとを接続するスイッチネットワークとして構成されてもよい。図6Aに示すように、これらのポートは、(0、1、2、3)と番号が付されている。したがって、スイッチの設定は、一方の側におけるポート数を示す一組の数から、他方の側のポート数を示す他の組の数へのマッピングと考えてよい。このマッピングは、置換関数とみなされてよい。
【0064】
設定610は、単一性置換であり、一方の側のポート0、1、2、3が他方の側のポート0、1、2、3にそれぞれマッピングされる。この設定は、非タイル状メモリアクセス、水平のタイル状メモリアクセス、および、アドレスビットAD7およびAD6がそれぞれ0に等しい垂直のタイル状メモリアクセスのそれぞれによって用いられる。
【0065】
設定620は、非単一性置換であり、一方の側のポート0、1、2、3が他方の側のポート1、0、3、2にそれぞれマッピングされる。この設定は、AD7が1に等しく、AD6が0に等しいアドレスビットを有する垂直のタイル状メモリアクセスによって用いられる。
【0066】
設定630は、非単一性置換であり、一方の側のポート0、1、2、3は、他方の側のポート2、3、0、1にそれぞれマッピングされる。この設定は、AD7が0に等しく、AD6が1に等しいアドレスビットを有する垂直のタイル状メモリアクセスによって用いられる。
【0067】
設定640は、非単一性置換であり、一方の側のポート0、1、2、3は、他方の側のポート3、2、1、0にそれぞれマッピングされる。この設定は、AD7およびAD6が1にそれぞれ等しいアドレスビットを有する垂直のタイル状メモリアクセスによって用いられる。
【0068】
図6Bは、本発明の一実施形態に係るデータステアリング回路310を示す図である。データステアリング回路310は、双方向転送のための複数の回路を含む。説明を簡単にすべく、一方向についての回路のみを示す。この回路では、データ転送は、インポート0、1、2、3からアウトポート0、1、2、3へと行われる。これらの回路の2つが双方向転送を提供するよう用いられる場合、アウトポート0、1、2、3およびインポート0、1、2、3において必要に応じてトリステートバッファが用いられてよい。
【0069】
データステアリング回路310は、XORゲート6520、6540、6521、6541、6522、6542、6523、6543と、2対1マルチプレクサ6620、6640、6631、6641、6622、6642、6623、6643と、4対1マルチプレクサ6700、6701、6702、6703とを有する。XORゲート6520、6540、6521、6541、6522、6542、6523、6543は、ハードコードされたサブチャネル識別子00、01、10、11を用いてアドレスビットAD7およびAD6に対してそれぞれXOR演算を実行する。2対1マルチプレクサ6620、6640、6631、6641、6622、6642、6623、6643の入力を選択するためにVERT'信号が用いられる。図に示すように、4対1マルチプレクサ6700、6701、6702、6703の入力を選択するために2対1マルチプレクサ6620、6640、6631、6641、6622、6642、6623、6643の出力を対にして用いる。
【0070】
VERT'信号がLOWの場合は、メモリアクセスタイプが非タイル状メモリアクセスまたは水平のタイル状メモリアクセスであることを示し、2対1マルチプレクサ6620、6640、6631、6641、6622、6642、6623、6643は、サブチャネル識別子00、01、10、11を選択する。4対1マルチプレクサ6700、6701、6702、6703の入力を選択するためにこれらの出力が用いられる場合、アウトポート0、1、2、3は、単一性置換マッピングに対応してインポート0、1、2、3にそれぞれマッピングされるという結果になる。
【0071】
VERT'信号がHIGHの場合は、メモリアクセスタイプが垂直のタイル状メモリアクセスであることを示し、2対1マルチプレクサ6620、6640、6631、6641、6622、6642、6623、6643は、XORゲートの出力を選択する。したがって、マッピングの結果は、アドレスビットAD7およびAD6の値に基づく。
【0072】
AD7およびAD6が00である場合、XORゲートの出力は、00、01、10、11となり、VERT'信号がLOWである場合と同じになる。したがって、AD7およびAD6が00の場合については、アウトポート0、1、2、3は、図6Aに示されるような設定610で表された単一性置換マッピングに対応してインポート0、1、2、3にそれぞれマッピングされるという結果になる。
【0073】
AD7およびAD6が01の場合は、XORゲートの出力は、01、00、11および10になる。したがって、AD7およびAD6が01の場合については、アウトポート0、1、2、3は、図6Aに示されるような設定620に対応し、インポート1、0、3、2にそれぞれマッピングされるという結果になる。
【0074】
AD7およびAD6が10の場合、XORゲートの出力は、10、11、00、01になる。したがって、AD7およびAD6が10の場合については、アウトポート0、1、2、3は、図6Aに示されるような設定630に対応し、インポート2、3、0、1にそれぞれマッピングされるという結果になる。
【0075】
AD7およびAD6が11の場合、XORゲートの出力は、11、10、01、00になる。したがって、AD7およびAD6が11の場合については、アウトポート0、1、2、3は、図6Aに示されるような設定640に対応し、インポート3、2、1、0にそれぞれマッピングされるという結果になる。
【0076】
図7は、本発明の一実施形態に係るメモリにアクセスするプロセス700を示すフローチャートである。プロセス700は、リードアクセスを示すことに留意されたい。ライトアクセスも同様に得られてよい。
【0077】
開始後、プロセス700は、アクセス制御信号に従いアドレスビットの調整を行う(ブロック710)。アクセス制御信号は、TILED制御信号がアサートされたとき、タイル状メモリアクセスを選択するタイル状制御信号と、垂直のタイル状メモリアクセスを選択する垂直の制御信号とを含んでよい。次に、プロセス700は、メモリにおけるN個のサブチャネルに接続し、アクセス制御信号および調整済みアドレスビットに従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作する(ブロック720)。タイル状メモリアクセスは、水平および垂直のタイル状メモリアクセスを含む。
【0078】
次に、プロセス700は、アクセス制御信号およびサブチャネル識別子に従い、N個のサブチャネルに対するサブチャネルアドレスビットを生成する(ブロック730)。
【0079】
次に、プロセス700は、メモリアクセスがタイル状かどうかを決定する(ブロック740)。そうであれば、プロセス700は、行単位でメモリにアクセスし(ブロック750)、終了する。相でない場合、プロセス700は、列単位でメモリにアクセスし(ブロック760)、その後終了する。
【0080】
図8は、本発明の一実施形態に係るデータステアリング回路についての設定を選択するプロセス720を示す。
【0081】
開始後、プロセス720は、メモリアクセスタイプが垂直のタイル状かどうかを決定する(ブロック810)。垂直のタイル状でない場合、プロセス720は、データステアリング回路についての第1の設定を選択する(ブロック820)し、終了する。垂直のタイル状の場合、プロセス720は、調整済みアドレスビットが00であるかどうか決定する(ブロック830)。00である場合、プロセス720は、ブロック820へと進む。00でない場合、プロセス720は、データステアリング回路についての調整済みアドレスビットに従い、3つの設定のうちの1つを選択し(ブロック840)、その後終了する。一般的に、第1の設定は、一方の側のポートから他方の側のポートへの恒等置換マッピングに対応する。他の3つ(2つ)の設定は、非恒等置換マッピングに対応する。
【0082】
図9は、N群のサブチャネルアドレスビットを生成する図7に示されたプロセス730を表すフローチャートである。
【0083】
開始後、プロセス730は、メモリアクセスタイプが垂直のタイル状かどうかを決定する(ブロック920)。垂直のタイル状である場合、プロセス730は、調整済みアドレスビットの論理関数と、対応するサブチャネル識別子とを含むN群のサブチャネルアドレスビットを生成し(ブロック930)、その後終了する。垂直のタイル状でない場合、プロセス730は、調整済みアドレスビットを含むN群のサブチャネルアドレスビットを生成し(ブロック940)、その後終了する。本質的に、アクセスタイプが水平のタイル状かまたは非タイル状メモリアクセスである場合、サブチャネルに送られる調整済みアドレスビットは、同じビット部分における元のアドレスビットと同じである。
【0084】
本発明の実施形態の構成要素は、ハードウェア、ファームウェア、ソフトウェア、または、それらのいかなる組合せによって実装されてよい。ハードウェアとは、一般的に、電子、電磁、光、電子光学、機械、エレクトロメカニカルパーツ、コンポーネント、または、デバイスなどの物理的構造を有する構成要素のことを指す。ソフトウェアとは、一般的に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、式などのことを指す。ファームウェアとは、一般的に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、式など、ハードウェア構造(フラッシュメモリなど)で実装または実現されるもののことを指す。ファームウェアの例は、マイクロコード、書換え可能型制御記憶、マイクロプログラム構造などを含んでよい。本発明の一実施形態における構成要素は、ソフトウェアまたはファームウェアに実装されると、本質的に、必要なタスクを実行するコードセグメントとなる。ソフトウェア/ファームウェアは、本発明の一実施形態に記載された動作を実行する実際のコードか、または、動作をエミュレートまたはシミュレートするコードを含んでよい。プログラムまたはコードセグメントは、プロセッサまたはマシンアクセス可能媒体に格納されるか、または、搬送波で表されるコンピュータデータ信号か、または、キャリアによって変調される信号により、伝送媒体上を伝送されてよい。「プロセッサ可読またはアクセス可能媒体」、または、「マシン可読またはアクセス可能媒体」は、情報を格納、伝送、または、転送できるいかなる媒体を含んでよい。プロセッサ可読またはマシンアクセス可能媒体の例は、電子回路、半導体メモリデバイス、ROM(リードオンリーメモリ)、フラッシュメモリ、EROM(消去可能ROM)、EPROM(消去可能プログラマブルROM)、フロッピー(登録商標)ディスケット、CD−ROM、光ディスク、ハードディスク、光ファイバ媒体、無線周波数(RF)リンクなどを含む。マシンアクセス可能媒体は、製品に組み込まれてよい。マシンアクセス可能媒体は、マシンによってアクセスされると、上記動作をマシンに実行させるデータを含んでよい。マシンアクセス可能媒体にはプログラムコードが埋め込まれていてよい。プログラムコードは、上記動作を実行するマシン可読コードを含んでよい。
【0085】
本発明の一部またはすべては、ハードウェア、ソフトウェア、または、ファームウェア、あるいは、それらのいかなる組合せによって実装されてよい。ハードウェア、ソフトウェア、または、ファームウェアの構成要素は、互いに結合されたいくつかのモジュールを有してよい。ハードウェアモジュールは、機械、電気、光、電磁、または、いかなる物理的接続によって他のモジュールに結合されてよい。ソフトウェアモジュールは、関数、手続き、方法、サブプログラムまたはサブルーチンコール、ジャンプ、リンク、パラメータ、変数および引き数引き渡し、ファンクションリターンなどによって他のモジュールに結合されてよい。ソフトウェアモジュールは、他のモジュールに結合されて変数、パラメータ、引き数、指針などを受信し、および/または、結果、アップデートされた変数、指針などを生成するかまたは送ってよい。ファームウェアモジュールは、上記のようなハードウェアとソフトウェアとの結合方法のいかなる組み合わせによって他のモジュールと結合される。ハードウェア、ソフトウェア、または、ファームウェアモジュールは、他のハードウェア、ソフトウェア、または、ファームウェアモジュールのうちのいかなるものと結合されてよい。装置は、ハードウェア、ソフトウェア、および、ファームウェアモジュールのいかなる組合せも含みうる。
【0086】
これまでいくつかの実施形態に関して本発明を説明してきたが、本発明は記載された実施形態に限定されず、添付の請求項の範囲内での修正および変更を伴い実施できることが当業者には理解できるであろう。したがって、記載は、限定ではなく例としてみなされるべきである。
【技術分野】
【0001】
本発明の実施形態は、マイクロプロセッサの分野に関し、より詳しくは、メモリ構成に関する。
【背景技術】
【0002】
典型的なプロセッサシステムにおいて、メモリは、通常、線形にアドレス指定された記憶素子アレイとして構成される。この構成は、プログラム内の命令が順次実行されるので、コードまたはプログラム記憶領域に適している。しかし、特定のタイプのデータ記憶、または、特定のメモリ動作にとっては、線形構成は非効率的な場合もある。
【0003】
特定のアプリケーションに影響されるデータ構造に従いメモリが構成されることは、多くの用途において望ましいかもしれない。例えば、グラフィックおよびイメージングアプリケーションでは、基本データ構造は二次元(2−D)配列である。二次元配列は、基本データブロックを提供することに加え、多次元配列を構築するために用いられてよい。既存のメモリ構成を用いて2−D配列にアクセスすると、非効率の原因となる処理オーバーヘッドを招く可能性がある。さらに、通常、スクリーンリフレッシュは、一度に1本のスキャンラインに対して行われるので、メモリ構成が線形になるほどメリットが大きい。
【図面の簡単な説明】
【0004】
本発明の実施形態は、以下の説明および添付の図面を参照することで最も良く理解できよう。添付の図面は、本発明の実施形態を図示する目的で用いられる。
【図1A】本発明の一実施形態が実施されうるシステムを示す図である。
【図1B】本発明の一実施形態に係るグラフィックシステムを示す図である。
【図1C】本発明の一実施形態に係るサーバ/コンピュータシステムを示す図である。
【図2A】本発明の一実施形態に係るタイル状メモリアクセスを示す図である。
【図2B】本発明の一実施形態に係るメモリサブチャネルを伴うタイル状メモリアクセスを示す図である。
【図3A】本発明の一実施形態に係るアクセスコントローラを示す図である。
【図3B】本発明の一実施形態に係るアクセスコントローラを用いた垂直のタイル状メモリアクセスを示す図である。
【図3C】本発明の一実施形態に係るアクセスコントローラを用いた水平のタイル状メモリアクセスを示す図である
【図3D】本発明の一実施形態に係るアクセスコントローラを用いた非タイル状メモリアクセスを示す図である。
【図4】本発明の一実施形態に係るアドレス前スウィズル(swizzle)回路を示す図である。
【図5】本発明の一実施形態に係るアドレス後スウィズル回路を示す図である。
【図6A】本発明の一実施形態に係るデータステアリング回路の設定を示す図である。
【図6B】本発明の一実施形態に係るデータステアリング回路を示す図である。
【図7】本発明の一実施形態に係るメモリにアクセスするプロセスを示すフローチャートである。
【図8】本発明の一実施形態に係るデータステアリング回路の設定を選択するプロセスを示すフローチャートである。
【図9】本発明の一実施形態に係るN群のサブチャネルアドレスビットを生成するプロセスを示すフローチャートである。
【発明を実施するための形態】
【0005】
本発明の一実施形態は、メモリアクセスを制御する技術である。データステアリング回路は、メモリにおけるN個のサブチャネルに接続し、アクセス制御信号と、N個のサブチャネルに関連付けられたサブチャネル識別子とに従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプデータを動的に操作する。タイル状メモリアクセスは、水平および垂直のタイル状メモリアクセスである。アドレス前スウィズル回路は、アドレスラインを調整して特定のタイプのアクセスに適合させる。データステアリング回路は、アクセス制御信号と、調整済みアドレスビットとに従い設定される。アドレス後スウィズル回路は、アクセス制御信号と、サブチャネル識別子とに従い、N個のサブチャネルに対するサブチャネルアドレスビットを生成する。
【0006】
以下の説明には、数多くの特定の詳細が記載されている。しかしながら、本発明の実施形態は、それらの特定の詳細がなくても実施できることを理解されたい。また、他の例において、本記載の理解をあいまいにしないよう、よく知られた回路、構造および技術は、示されていない。
【0007】
本発明の一実施形態は、フローチャート、フロー図、構造図またはブロック図として通常表されるプロセスとして説明されてよい。フローチャートは、複数の動作をシーケンシャルプロセスとして記載する場合もあるが、動作の多くは、並行してまたは同時に実行されてよい。フローチャートにおけるループまたは繰り返しは、一回の繰り返しにより示される。ループインデックス(単数または複数)あるいはループカウンタ(単数または複数)は、関連するカウンタまたはポインタをアップデートするよう維持される。さらに、動作の順番は入れ替えてよい。動作が完了するとプロセスは終了する。プロセスは、方法、プログラム、手順などに対応してよい。ブロック図は、構成要素、アイテム、コンポーネント、デバイス、ユニット、サブユニット、構造、方法、プロセス、機能、動作、機能性、または、タスクなどを示すブロックまたはモジュールを含んでよい。機能または動作は、自動または手動で実行されてよい。
【0008】
図1Aは、本発明の一実施形態が実施されうるシステム10を示す図である。システム10は、10ギガビットイーサネット(登録商標)を用いたLAN(Local Area Network)アプリケーションを表す。システム10は、2つのキャンパス20および40と、リンク22とを有する。
【0009】
キャンパス20および40のそれぞれは、ネットワークインターコネクトを用いてパソコン(PC)、ワークステーション、および、サーバとリンクする企業を表す。それらは、10ギガビットイーサネットダウンリンクに分割される複数の1000BASE−Xまたは1000BASE−Tセグメントの集まりを有してよい。リンク22は、長距離(40kmなど)にわたって2つのキャンパス20および40を接続する単一モードファイバリンクであってよい。パケットまたはデータの送信は、リード・ソロモン符号のようなエラー訂正符号を用いたエラー訂正方式により実行されてよい。
【0010】
キャンパス20および40のインフラは同様である。各キャンパス内のネットワークは、ビル、データセンター、または、コンピュータ室を網羅してよい。キャンパス20は、スイッチ/ルータ24およびスイッチ/ルータ28のようなスイッチ/ルータと、LAN30とを有してよい。キャンパス40は、スイッチ/ルータ42およびスイッチ/ルータ46のようなスイッチ/ルータと、LAN48とを有してよい。スイッチ/ルータ24および42は、一般的に、対応するキャンパスの端に配置される。それらは、リンク22を介し互いに接続される。スイッチ/ルータ24および28は、毎秒10ギガビット(Gbps)までの速度で、短距離(30から80メートル)にわたりマルチモードファイバリンク26を介し接続される。スイッチ/ルータ28は、LAN30に接続される。同様に、スイッチ/ルータ42および46は、毎秒10ギガビット(Gbps)までの速度で、短距離(30から80メートル)にわたりマルチモードファイバリンク44を介し接続される。スイッチ/ルータ46は、LAN48に接続される。
【0011】
LAN30は、サーバ32、および、パソコン(PC)/ワークステーション34のようなサーバ、PC、または、ワークステーションとの接続性を提供する。同様に、LAN48は、サーバ50、および、PC/ワークステーション52のようなサーバ、PC、または、ワークステーションとの接続性を提供する。サーバ32または50は、コンピューティング環境をサポートする特定の動作を提供する。それらは、さまざまなプリンタに接続されたプリントサーバ、テープドライブ、RAID(redundant arrays of inexpensive disks)のような大容量記憶装置に接続された記憶装置サーバ、ビデオ、オーディオまたはグラフィックのようなマルチメディアサービスを提供するメディアサーバ、または、特定の機能を有するいかなるサーバであってよい。各サーバは、一般的に、対応するLANとのネットワーク接続性を有する1つ以上のネットワークインターフェースカード(NIC)を有する。
【0012】
図1Bは、本発明の一実施形態が実施されうるグラフィックシステム60を示す図である。グラフィックシステム60は、グラフィックコントローラ65、メモリコントローラ70、メモリ80、ピクセルプロセッサ85、ディスプレイプロセッサ90、デジタル・アナログコンバータ(DAC)95、および、ディスプレイモニタ97を有する。
【0013】
グラフィックコントローラ65は、高速線描、二次元(2−D)および三次元(3−D)グラフィック描画機能、シェーディング、アンチエイリアシング、ポリゴン描画、透明効果、色空間変換、アルファブレンディング、彩度キーイングなどのグラフィック動作を実行するグラフィック能力を有するプロセッサである。メモリコントローラ(MC)70は、メモリ制御機能を実行する。MC70は、メモリアクセスを制御するアクセスコントローラ75を有してよい。アクセスコントローラ75は、タイル状および非タイル状メモリアクセスを含むメモリ80へのアクセス制御を提供する。メモリ80は、SRAMまたはDRAMメモリデバイスを含む。メモリデバイスは、N個のサブチャネル820から82Nに編成されてよい。サブチャネル820から82Nは、アクセスコントローラ75と接続してよい。メモリデバイスは、グラフィックコントローラ65によって処理されるグラフィックデータを格納する。
【0014】
ピクセルプロセッサ85は、幾何学的計算、アフィン変換、モデルビュープロジェクション、3−Dクリッピングなどの特殊で複雑なグラフィック機能を実行できる特殊グラフィックエンジンである。ピクセルプロセッサ85は、メモリコントローラ70を介して、メモリ80および/またはグラフィックコントローラ65にアクセスする。ディスプレイプロセッサ90は、グラフィックデータの表示を処理し、パレットテーブルルックアップ、同期、バックライトコントローラ、ビデオ処理などのディスプレイ関連機能を実行する。DAC95は、デジタルディスプレイデジタルデータをディスプレイモニタ97へのアナログビデオ信号に変換する。ディスプレイモニタ97は、表示用スクリーンにグラフィック情報を表示するディスプレイモニタである。ディスプレイモニタは、ブラウン管(CRT)モニタ、テレビ(TV)セット、液晶ディスプレイ(LCD)、フラットパネル、または、デジタルCRTであってよい。
【0015】
図1Cは、本発明の一実施形態が実施されうるワークステーション34/52を示す図である。ワークステーション34/52は、プロセッサユニット110、メモリコントローラ(MC)120、メモリ130、入力/出力コントローラ(IOC)140、インターコネクト145、大容量記憶インターフェース150、入力/出力(I/Oデバイス1471から147k)、および、ネットワークインターフェースカード(NIC)160を有してよい。ワークステーション34/52は、上記構成要素をほぼ有するとみてよい。
【0016】
プロセッサ110は、ハイパースレッディング、セキュリティ、ネットワーク、デジタルメディアテクノロジー、シングルコアプロセッサ、マルチコアプロセッサ、組込みプロセッサ、モバイルプロセッサ、マイクロコントローラ、デジタルシグナルプロセッサ、スーパースカラーコンピュータ、ベクトルプロセッサ、単一命令多重データ(SIMD)コンピュータ、複雑命令セットコンピュータ(CISC)、縮小命令セットコンピュータ(RISC)、超長命令語(VLIW)を用いるプロセッサのようないかなるタイプのアーキテクチャ、または、ハイブリッドアーキテクチャのCPUを表す。
【0017】
MC120は、メモリ130およびIOC140のようなメモリおよび入力/出力デバイスの制御および設定を提供する。MC120は、グラフィック、メディア、単独実行モード、ホストと周辺バスとのインターフェース、メモリ制御、パワーマネジメントなどの多数の機能を集積したチップセットに集積されてよい。MC120、または、MC120におけるメモリコントローラの機能は、プロセッサユニット110に集積されてよい。いくつかの実施形態では、プロセッサユニット110の内部または外部にあるメモリコントローラは、プロセッサユニット110におけるすべてのコアまたはプロセッサに対して機能しうる。他の実施形態では、プロセッサユニット110における異なるコアまたはプロセッサに対して個別に機能しうる別々の部分を含んでよい。MC120は、メモリ130へのアクセスを制御するアクセスコントローラ125を有してよい。アクセスコントローラ125は、1つのメモリアクセスを、タイル状および非タイル状メモリアクセスへと動的に設定することができる。
【0018】
メモリ130は、システムコードおよびデータを格納する。メモリ130は、一般的に、DRAM(ダイナミックRAM)、SRAM(スタティックRAM)、または、リフレッシュされる必要がないタイプを含めた他のいかなるタイプのメモリであってよい。メインメモリ130は、図1Bに示されたメモリ80に用いられるものと同様の、DRAMのようなメモリデバイスの複数のチャネルを有してよい。DRAMは、毎秒8.5ギガバイト(GB/s)の帯域幅を有するメモリデバイスを含んでよい。DRAMは、SDRAM(シンクロナスDRAM)、SDR(Single Data Rate)SDRAM、EDO(Extended Data Out)DRAM、DDR(Double Data Rate)SDRAM、DDR2(Double Data Rate Two)SDRAM、RDRAM R(Rambus DRAM)、XDR(Extreme Data Rate)、または、XDRIIであってよい。RDRAMおよびXDRは、Rambus社の登録商標である。DDRは、クロックの立上りおよび立下りエッジの両方でデータを転送することによって転送速度を2倍にし、DIMM(Dual In Line Memory Module)にパッケージされてよい。これによって、フロントサイドバス(FSB)の周波数を上げずに転送速度を効果的に2倍にする。DDR2は、オンダイターミネーションなどのさまざまな技法を用いてデータレートを高めることにより、チップ、プリフェッチバッファ、および、オフチップドライバにおける過剰な信号ノイズを除去する。オフチップドライバは、キャリブレーション技術を用いてデータストローブ間の差を校正してよい。キャリブレーションにより、バッファインピーダンスに対するランプ電圧が最適化され、その結果、立上りおよび立下りエッジにおけるオーバーシュートおよびアンダーシュートを抑制する。XDRまたはXDRIIは、計測可能な高速ポイントツーポイント双方向データ信号に対してはDRSL(Differential Rambus Signaling Levels)を用い、複数のデバイスへのソース同期バスアドレスおよびコマンド信号に対してはRSL(Rambus Signaling Level)を用いる。メモリ130で用いられるメモリデバイスは、100MHz、133MHz、166MHz、266MHz、333MHz、400MHz、1GHzまたは、8GHzまでの計測可能ないかなる適切なクロック周波数で動作してよい。これらは、BGA(Ball Grid Array)、DIMM、スティックまたはモジュールを含むいかなるパッケージング技術でパッケージされてよい。一実施形態では、メモリ130は、N個のサブチャネル1320から132Nを有する。N個のサブチャネル1320から132Nのそれぞれは、1つ以上のメモリデバイスに対応してよい。N個のサブチャネル1320から132Nは、アクセスコントローラ125と接続してよい。
【0019】
グラフィックプロセッサ135は、グラフィック機能を提供するプロセッサである。グラフィックプロセッサ135は、MC120に一体化されることにより、GMC(Graphics and Memory Controller)を形成してよい。グラフィックプロセッサ135は、グラフィックコントローラ用に設定されたAGP(Accelerated Graphics Port)またはPCI Expressポートのようなグラフィックポートを介し、MC120と接続するGPA(Graphics Performance Accelerator)カードのようなグラフィックカードであってよい。グラフィックプロセッサ135は、プログレッシブスキャンモニタ、TV−Outデバイス、および、TMDS(Transition Minimized Differential Signaling)コントローラなどのディスプレイモニタ137へのインターフェースを提供する。ディスプレイモニタ137は、CRT(ブラウン管)モニタ、テレビセット、液晶ディスプレイ(LCD)、フラットパネル、および、デジタルCRTなどのいかなるディスプレイデバイスであってよい。
【0020】
IOC140は、I/O機能をサポートするよう設計された多数の機能性を有する。IOC140は、MC120と共にチップセットに集積されるか、または、MC120とは独立してI/O機能を実行してよい。IOC140は、PCI(peripheral component interconnect)バスインターフェース、プロセッサインターフェース、割り込みコントローラ、DMA(ダイレクトメモリアクセス)コントローラ、パワーマネジメントロジック、タイマ、SMBus(システムマネジメントバス)、USB(universal serial bus)インターフェース、大容量記憶インターフェース、LPC(ローピンカウント)インターフェース、無線インターコネクト、DMI(direct media interface)などの多数のインターフェースおよびI/O機能を含んでよい。
【0021】
インターコネクト145は、周辺デバイスとのインターフェースを提供する。インターコネクト145は、ポイントツーポイントであってよく、または、複数のデバイスに接続されてよい。明確にする目的からすべてのインターコネクトを示してはいない。インターコネクト145は、いかなるインターコネクト、または、PCI(Peripheral Component Interconnect)、PCI Express、 USB(Universal Serial Bus)、SCSI(Small、Computer System Interface)、シリアルSCSI、および、DMI(Direct Media Interface)などのバスを含むこともあると考えられる。
【0022】
大容量記憶インターフェース150は、コード、プログラム、ファイル、データ、および、アプリケーションのようなアーカイブ情報を格納する大容量記憶装置と接続する。大容量記憶インターフェースは、SCSI、シリアルSCSI、ATA(Advanced Technology Attachment)(パラレルおよび/またはシリアル)、IDE(Integrated Drive Electronics)、拡張IDE、ATAPI(ATA Packet Interface)などを含んでよい。大容量記憶装置は、CD−ROM152、DVD153、フロッピー(登録商標)ドライブ154、ハードドライブ155、テープドライブ156、および、他のいかなる磁気または光記憶装置を含んでよい。大容量記憶装置は、マシンアクセス可能媒体を読み取るメカニズムを提供する。
【0023】
I/Oデバイス1471から147kは、I/O機能を実行するI/Oデバイスを含む。I/Oデバイス1471から147kの例は、入力デバイス(例えば、キーボード、マウス、トラックボール、ポインティングデバイスなど)、メディアカード(オーディオ、ビデオ、グラフィックなど)、ネットワークカードのためのコントローラ、および、他のいかなる周辺コントローラを含む。
【0024】
NIC160は、ワークステーション34/52へのネットワーク接続性を提供する。NIC160は、通信トランザクション処理の一部としての割り込みを生じさせる可能性がある。一実施形態では、NIC160は、32ビットおよび64ビットのPCI(peripheral component interconnect)バス規格の両方と互換性がある。一般的に、NIC160は、PCIローカルバス改訂版2.2、PCI−Xローカルバス改訂版1.0、または、PCI−Express規格と互換性があってよい。処理システム内には複数のNIC160が存在してよい。一般的に、NIC160は、標準的なイーサネット(登録商標)最小および最大フレームサイズ(64から1518バイト)フレームフォーマット、および、IEEE(米国電気電子学会)802.2LLC(Local Link Control)仕様をサポートする。NIC160は、また、全二重ギガビットイーサネット(登録商標)インターフェース、フレームベースフローコントロール、および、ワイヤードイーサネット(登録商標)の物理層およびデータリンク層を規定する他の規格もサポートしてよい。NIC160は、IEEE802.3abにより規定される銅線ギガビットイーサネット(登録商標)、または、IEEE802.3zにより規定される光ファイバギガビットイーサネット(登録商標)をサポートしてよい。
【0025】
NIC160は、SCSI(Small Computer System Interface)ホストアダプタ、または、FC(Fiber Channel)ホストアダプタのようなホストバスアダプタ(HBA)であってもよい。SCSIホストアダプタは、ボード上のハードウェアおよびファームウェアを含み、SCSIトランザクション、または、アダプタBIOS(Basic Input/Output System)を実行してSCSIデバイスからブートするか、または、SCSIホストアダプタを設定してよい。FCホストアダプタは、ファイバチャネルバスと接続するよう用いられてよい。NIC160は、1ギガビット/秒のFC−SAN(Fiber Channelのストレージエリアネットワーク)との自動高速ネゴシエーションにより高速(2ギガビット/秒)で動作してよい。NIC160は、適切なファームウェアまたはソフトウェアによってサポートされることにより、ローカルおよびリモートHBAのディスカバリ、レポート、および、管理に対して帯域内FCまたは帯域外インターネットプロトコル(IP)サポートの両方を提供してよい。NIC160は、フレームレベル多重化および故障フレーム再構築、ファブリックサポート用オンボードコンテキストキャッシュ、および、ハードウェアパリティおよびCRC(巡回冗長符号)サポートによるエンドツーエンドのデータ保護を有してよい。
【0026】
図2Aは、本発明の一実施形態に係るタイル状メモリアクセス200Aを示す図である。タイル状メモリアクセス200Aは、メモリの矩形領域205を含む。矩形領域205は、メモリブロックのメモリアドレス指定の論理表現である。タイル状メモリアクセス200Aは、P列およびQ行からなる二次元配列として編成される多数のメモリブロックを含む。図示された例では、Pが4つ、および、Qが4つである。各ブロックは、バイト数を有してよい。この例では、各ブロックは、16バイトを含む。当業者であれば知っているように、矩形領域205は、行と列との数が同じであれば、いかなる数の行および列によるいかなる数のブロックを有してよい。さらに、各ブロックは、いかなるバイト数を有してよい。
【0027】
メモリのアドレス指定はバイト指向なので、連続したブロックのアドレスは、16または000010Hずつずれていく。ただし、Hは、16進表記を示す。以下では、アドレスは、16進表記である。矩形領域205は、4×4の二次元(2−D)配列で編成された16の連続するブロックを有する。この4×4の2−D配列をタイルと称する。第1のブロックのアドレスを000とすると、以降のブロックのアドレスは、図に示すように010、020、030、040などとなる。
【0028】
領域205は、64バイトのメモリアクセスに対してよい。これは、4つのキャッシュラインに対応する。メモリアクセスには2つのタイプがあり、一方はタイル状メモリアクセス、もう一方は、非タイル状メモリアクセスである。典型的な非タイル状メモリアクセスでは、8つの隣り合ってアドレス指定された8バイトブロックが1つずつ転送される。本発明のタイル状メモリアクセスでは、隣り合ってアドレス指定されたバイトは、連続的にアドレス指定されない。タイル状メモリアクセスは、2つのタイプを有し、一方は、水平のタイル状メモリアクセス、もう一方は、垂直のタイル状メモリアクセスである。本質的には、非タイル状メモリアクセスと、水平のタイル状メモリアクセスとの相違は、サブチャネルにおけるデータの分布の仕方にある。非タイル状メモリアクセスのバイト順と、タイル状メモリアクセスのバイト順とは異なる。タイル状領域にアクセスするアプリケーションは、バイト順がしかるべく並べ替えられる限り、非タイル状アクセスを使用してよい。
【0029】
メモリ領域205では、水平アクセス210、および、垂直アクセス220という2つのタイプのメモリアクセスが存在する。水平アクセス210は、4つの水平アクセス212、214、216、218を含む。それぞれの水平アクセスは、1×64バイトブロックに対応する。水平アクセス210は、単一のスキャンラインのピクセル値を示すデータが連続してアクセスされるディスプレイリフレッシュのようなメモリ動作に適するかもしれない。垂直アクセス220は、4つの垂直アクセス222、224、226、228を含む。各アクセスは、4×16バイトブロックに対応する。垂直アクセスパターンは、レンダリングなどのグラフィックまたはイメージング動作に適するかもしれない。
【0030】
図2Bは、本発明の一実施形態に係るメモリサブチャネルを有するタイル状メモリアクセス200Bを示す図である。タイル状メモリアクセス200Bは、メモリ245の領域と、メモリのサブチャネルとを含んでよい。サブチャネルは、矩形領域205のような1ブロックまたはタイル状の複数のブロックに対応するよう割り当てられるメモリデバイスの論理的区分である。説明を簡単にすべく、矩形領域205は、N個のサブチャネル250、251、252、254に割り当てられるN×Nブロックに分割される四角い領域であってよい。各サブチャネルにおける物理的メモリデバイスの数は、メモリデバイスの構成と、矩形領域205におけるブロックのサイズとに依存する。例えば、各デバイスが1バイト幅で編成され、各ブロックが2バイトを含み、4×4ブロックが存在する場合、4つのサブチャネルが存在し、各サブチャネルは、2つのメモリデバイスに対応してよい。
【0031】
メモリ245のタイル状領域は、4×4ブロックに分割されてよい。ブロックは、行または列が異なるサブチャネル割り当てを含みうるようにサブチャネルに対して割り当てられてよい。各行は、各サブチャネルに割り当てられたメモリブロックを含んでよく、各列も、各サブチャネルに割り当てられたメモリブロックを含んでよい。この例では、4つのサブチャネル250、251、252、253は、図のように、垂直方向および水平方向にブロックに割り当てられる。タイル状メモリアクセス200Bは、水平のタイル状メモリアクセス260と、垂直のタイル状メモリアクセス270とを含んでよい。水平のタイル状メモリアクセス260は、水平のタイル状メモリアクセス262、264、266、268を含んでよい。それぞれのメモリアクセスは、メモリブロックを水平方向にアクセスする。同様に、垂直のタイル状メモリアクセス270は、垂直のタイル状メモリアクセス272、274、276、278を含んでよい。それぞれのメモリアクセスは、メモリブロックを垂直方向にアクセスする。
【0032】
メモリ245のタイル状領域のブロックへのサブチャネルの割り当ては、プロセッサ110から生成されたアドレスビットと、個々のサブチャネルにおけるアドレスビットとの間のマッピングに影響を及ぼすことがある。以下では、プロセッサ110またはメモリコントローラ120によって生成されたアドレスビットは、32ビットアドレス範囲および16バイトデータについてビットA31−A4を含むと仮定する。当業者に知られているように、いかなるアドレス範囲およびいかなるデータサイズを用いてもよい。
【0033】
タイル状ブロック245に示されるマッピングは、以下のとおりである。
・サブチャネル0は、ブロック000−00F、090−09F、060−06F、0F0−0FFに割り当てられる。
・サブチャネル1は、ブロック040−04F、0D0−0DF、020−02F、0B0−0BFに割り当てられる。
・サブチャネル2は、ブロック080−08F、010−01F、0E0−0EF、070−07Fに割り当てられる。
・サブチャネル3は、ブロック0C0−0CF、050−05F、0A0−0AF、030−03Fに割り当てられる。
【0034】
各行および各列がサブチャネルのそれぞれに割り当てられたブロックを含む限り、他のマッピングまたは割り当てが用いられてよいことに留意されたい。
【0035】
サブチャネルは、サブチャネル識別子によって識別されてよい。4つのサブチャネルに対し、サブチャネル識別子は、SC1とSC0との2ビットを含んでよい。各16バイトブロックがマッピングされるサブチャネルは、16バイトブロックのベースアドレスの論理関数であってよい。上記マッピングでは、このような関数は、XOR(排他的論理和)関数である。この関数を用い、サブチャネル識別子のビットは、以下のようなアドレスビットA7−A4の関数として定義されてよい。
SC1=A4 XOR A7 (1a)
SC0=A5 XOR A6 (1b)
【0036】
これらの方程式は、上記割り当てまたはマッピングに適用できることに留意されたい。他の割り当てまたはマッピングに対しては、異なる方程式が存在しうる。あるいは、アドレスビットがA5−A4、および、対応するサブチャネル識別子ビットがSC1およびSC0とすると、アドレスビットA7−A6が得られる。上記割り当てまたはマッピングについては、垂直のタイル状メモリアクセスに対してアドレスビットA7−A6は以下のように得られる。
A7= A4 XOR SC1 (2a)
A6= A5、XOR SC0 (2b)
【0037】
図3Aは、本発明の一実施形態に係る、図1B/1Cに示されたアクセスコントローラ75/125を示す図である。アクセスコントローラ75/125は、データステアリング回路310、デコーディング回路320、アドレス前スウィズル回路330、アドレス後スウィズル回路3350から3353、および、サブチャネルインターフェース3400から3403を有する。この例示的実施形態では、データ転送350として示される、サブチャネル間におけるそれぞれ8バイトの8つの転送があると仮定する。それらの転送は、64バイトの転送360に対応する。アドレス前スウィズル回路330は、アクセスコントローラ75/125の内部にあってよく、または、アクセスコントローラ75/125の外部にあるタイル状メモリアクセスを要求する構成要素内に配置されてよい。
【0038】
水平のタイル状メモリアクセス、または、非タイル状メモリアクセスでは、アドレスビットA7−A6は、アクセスされるべきタイル内の行を符号化する。垂直のタイル状メモリアクセスでは、アドレスビットA5−A4は、アクセスされるべき列を符号化する。アドレス前スウィズル回路330は、垂直のアクセスでアクセスされるべき列のスペックの一実施形態を示す。この実施形態では、アドレスビットA6およびA7は、垂直アクセスの間は、アドレスビットA5およびA4とそれぞれ置き換え可能である。
【0039】
タイル状メモリアクセスは、図2Bに示すような水平および垂直のタイル状メモリアクセスを含む。アクセス制御信号は、タイル状メモリアクセスを選択するタイル状制御信号(TILED)と、タイル状制御信号がアサートされた場合、垂直のタイル状メモリアクセスを選択する垂直制御信号(VERT)とを含む。TILEDが無効にされるかまたはデアサートされると、VERTは、無視される。
【0040】
デコーディング回路320は、アクセス制御信号TILEDおよびVERTを復号化する。TILEDおよびVERTの一方がデアサートされる(例えば論理0になる)と、デコーディング回路320の出力VERT'は、非タイル状または水平のタイル状メモリアクセスモードを有効にする。TILEDおよびVERTがどちらもアサートされる(例えば論理1になる)と、デコーディング回路320の出力VERT'は、垂直のタイル状アクセスモードを有効にする。一実施形態では、デコーディング回路320は、ANDゲートによって実装されてよい。
【0041】
データステアリング回路310は、アクセス制御信号に従い、データステアリングのための設定を選択する。データステアリング回路310は、メモリアクセスタイプが非タイル状メモリアクセス、水平のタイル状メモリアクセス、または、コンディショニングアドレスビットの第1組の値を有する垂直のタイル状メモリアクセスである場合には、第1の設定を選択する。コンディショングアドレスビットは、アクセスタイプに従うメモリ構成に影響を与えるべく用いられるアドレスビットである。この例示的実施形態では、コンディショニングアドレスビットは、A7およびA6である。データステアリング回路310は、メモリアクセスタイプがコンディショニングアドレスビットの他の値の組を有する垂直のタイル状メモリアクセスである場合には、3つの設定のうちの1つを選択する。
【0042】
アドレス後スウィズル回路3350から3353は、N個のサブチャネルインターフェース3400から3403に結合され、アクセス制御信号およびサブチャネル識別子に従い、N個のサブチャネルへのサブチャネルアドレスビットを生成する。この例示的実施形態では、アドレスラインは、A31−A6と仮定する。これらのアドレスビットは、プロセッサユニット110、グラフィックコントローラ65、または、MC70/120によって発行される。アドレスビットA31−A8は、サブチャネルインターフェース3400から3403までを介し、変更されずにメモリサブチャネルまで直接送られる。アドレスビットA7−A6は、個別のサブチャネルへの適切なアドレスビットを生成するために用いられる。サブチャネル識別子は、コンフィギュレーションレジスタに格納されてよく、各サブチャネルに対して固有である。一実施形態では、サブチャネル識別子は、Pビットを含み、ただし、P=log2(N)であり、Nは、サブチャネルの数である。例えば、図3Aに示すようにP=4である場合、サブチャネル識別子は、SC1とSC0との2ビットを含む。したがって、サブチャネルインターフェース3400から3403までは、値00、01、10、11をそれぞれ有するサブチャネル識別子ビットSC1およびSC0に関連付けられる。
【0043】
サブチャネルインターフェース3400から3403までは、図1B/1Cに示すサブチャネル820から82N/1320から1323のようなメモリ80/130の対応するサブチャネルと接続する。上述のごとく、サブチャネル820から82N/1320から1323は、メモリのタイル状領域のブロックに割り当てられる、メモリ80/130におけるメモリデバイスの論理的分割である。サブチャネルインターフェース3400から3403までのそれぞれは、1つのサブチャネル識別子に関連付けられる。
【0044】
図3Bは、本発明の一実施形態に係るアクセスコントローラ75/125を用いる垂直のタイル状メモリアクセスを示す図である。垂直のタイル状転送では、TILEDおよびVERTの両方がアサートされる。デコーディング回路320の出力VERT'もアサートされる。アドレス前スウィズル回路330は、アクセスされるべき列番号をアドレスラインA7−A6に設定する。アドレス後スウィズル回路3350から3353は、アドレスビットA7−A6を復号化し、サブチャネルインターフェース3400から3403までを介して、個別のサブチャネルへのアドレスビットA7−A6を生成する。アドレス前スウィズル回路330、および、アドレス後スウィズル回路3350から3353は、図4および図5にそれぞれ示されている。
【0045】
垂直のタイル状メモリアクセスでは、VERT'信号およびアドレスビットA7−A6は、データステアリング回路310についての4つの設定のうちの1つを選択する。4つの設定のうちの1つは、恒等置換マッピングに対応する。他の3つの設定は、非恒等置換マッピングに対応する。水平のタイル状メモリアクセスおよび非タイル状メモリアクセスにおいて用いられるマッピングとは異なるのであれば、他のいかなるマッピングが用いられてよいことに留意されたい。データステアリング回路310の4つの設定は図6Aに示されている。
【0046】
アドレス前スウィズル回路330は、4つの4垂直アドレスに対応する4つのサブチャネル3400から3403に対して2つのアドレスビットAD7−AD6を生成する。アドレスビットA31−A8はそのまま通過され、各サブチャネルにおけるアドレス後スウィズル回路3350から3353によって復号化されたAD7−AD6と組み合わされることにより、4つのサブチャネルに対して完全なアドレスビットが提供される。
【0047】
データ転送350は、8つの転送を含む。各転送は、メモリにおけるタイル状領域の垂直の列に対応する。データ転送は、64バイト転送360に対応するよう、データステアリング回路310を介して行われる。TILED信号は、行単位で行われる64バイト転送のアクセスを選択する。すなわち、64バイト転送が8×8バイトアレイであり、アレイの第1の行が転送の最初の8バイトであるとみなすと、第2の行は、転送の2番目の8バイト、などと考えられ、このような一対の行が各サブチャネルに送られる。
【0048】
図3Cは、本発明の一実施形態に係る、アクセスコントローラ75/125を用いた水平のタイル状メモリアクセスを示す図である。水平のタイル状転送では、VERTは無効にされるかデアサートされる。デコーディング回路320の出力であるVERT'も無効にされるかデアサートされる。アドレス前スウィズル回路330は、アクセスされるタイルの行を示すアドレスビットA7−A6をそのまま変更せずにしておく。アサートされたVERT信号は、サブチャネルインターフェース3400から3403を介し、アドレスビットA7およびA6を変更なしで個々のサブチャネルへ送るよう、アドレス後スウィズル回路3350から3353を調整する。
【0049】
水平のタイル状メモリアクセスでは、VERT'信号は、データステアリング回路310について第1の設定を選択する。第1の設定は、恒等置換マッピングに対応する。図3Cに示された例では、この恒等置換マッピングは、サブチャネル側のポート番号0、1、2、3をプロセッサ側のポート番号0、1、2、3にそれぞれマッピングする。
【0050】
データ転送350は、8つの転送を含む。各転送は、メモリにおけるタイル状領域の水平の行に対応する。データ転送は、64バイト転送360に対応するよう、データステアリング回路310を介して行われる。TILED信号は、行単位で行われる64バイト転送のアクセスを選択する。すなわち、64バイト転送が8×8バイトアレイであるとみなし、アレイの第1の行は転送の最初の8バイトであるとみなす場合、第2の行は、転送の2番目の8バイトである、などと考えられ、このような一対の行が各サブチャネルに送られる。
【0051】
図3Dは、本発明の一実施形態に係る、アクセスコントローラ75/125を用いた非タイル状メモリアクセスを示す図である。非タイル状転送では、TILEDは、無効にされるかデアサートされる。デコーディング回路320の出力であるVERT'も無効にされるかデアサートされる。アドレス前スウィズル回路330は、アクセスされるタイルの行を示すアドレスビットA7−A6をそのまま変更せずにしておく。VERT信号は、サブチャネルインターフェース3400から3403を介し、アドレスビットA7−A6を変更なしで個々のサブチャネルへ送るよう、アドレス後スウィズル回路3350から3353を調整する。
【0052】
非タイル状メモリアクセスでは、VERT'信号は、データステアリング回路310について第1の設定を選択する。第1の設定は、恒等置換マッピングに対応する。図3Dに示された例では、この恒等置換マッピングは、サブチャネル側のポート番号0、1、2、3をプロセッサ側のポート番号0、1、2、3にそれぞれマッピングする。
【0053】
データ転送350は、8つの転送を含む。各転送は、メモリにおけるタイル状領域の水平の行に対応する。データ転送は、64バイト転送360に対応するよう、データステアリング回路310を介して行われる。TILED信号は、列単位で行われる64バイト転送のアクセスを選択する。すなわち、64バイト転送が8×8バイトアレイであるとみなし、アレイの第1の行は転送の最初の8バイトであるとみなす場合、第2の行は、転送の2番目の8バイトである、などと考えられ、そのアレイからの一対の列が各サブチャネルに送られる。
【0054】
図4は、本発明の一実施形態に係る、図3Aに示されるアドレス前スウィズル回路330を示す図である。
【0055】
本質的には、アドレス前スウィズル回路330は、アクセス制御信号に基づき、最下位K共通アドレスビットを復号化してアドレスビット回路A7−A6にそれぞれ対応するアドレスビットAD7−AD6にするデコーダを有する。図3Aに示される例では、アドレス前スウィズル回路330は、4つのアドレスビットA7−A4を含む最下位4アドレスビットA31−A4を復号化し、アドレスビットAD7−AD6をアドレス後スウィズル回路3350から3353に供給する。
【0056】
アドレス前スウィズル回路330は、2つの2対1マルチプレクサ410および420を有する。マルチプレクサ410への入力は、アドレスビットA7およびA4である。マルチプレクサ420への入力は、アドレスビットA5およびA6である。マルチプレクサのどちらもVERT'信号によって選択される。VERT'信号がLOWの場合は、メモリアクセスが非タイル状メモリアクセスかまたは水平のタイル状アクセスであることを示し、マルチプレクサ410および420は、A7およびA6に対応する0入力をそれぞれ選択する。VERT'信号がHIGHの場合は、メモリアクセスが垂直のタイル状メモリアクセスであることを示し、マルチプレクサ410および420は、A4およびA5に対応する1入力をそれぞれ選択する。したがって、アドレス前スウィズル回路330は、メモリアクセスが非タイル状または水平のタイル状アクセス、あるいは、垂直のタイル状メモリアクセスかどうかによって、A7−A6またはA4−A5というようにアドレスビットAD7およびAD6を提供する。
【0057】
図5は、本発明の一実施形態に係る、図3Aに示されたアドレス後スウィズル回路335i(i=0,...3)を示す。本実施形態では、サブチャネルインターフェース3400から3403にサブチャネル識別子が設けられてよい。サブチャネルインターフェース3400から3403は、インターフェース回路においてローカルにサブチャネル識別子(例えばSC1およびSC0ビット)を設けてよい。インターフェース回路は、MC120の内部にあっても外部にあってもよい。他の実施形態では、サブチャネル識別子は、初期化またはブートアップシーケンスの間の設定手順の一部として、コンフィグレーションレジスタに設けられてよい。
【0058】
アドレス後スウィズル回路335iは、N個のサブチャネルデコーダ5200から520N−1を有してよく、この場合、Nは、サブチャネルの数を示す。N個のサブチャネルデコーダ5200から520N−1は、本質的に同じである。N個のサブチャネルデコーダ5200から520N−1それぞれへの入力は、アドレス前スウィズル回路330のAD7−AD6ビット、および、サブチャネル識別子ビット、すなわち、対応するサブチャネルにおけるSC1およびSC0である。N個のサブチャネルデコーダ5200から520N−1の出力は、サブチャネルのメモリデバイスに供給されるべきアドレスビットA7−A6である。N=4の場合、サブチャネルのメモリデバイスに供給されるべきA7−A6ビットは4グループ存在する。
【0059】
N個のサブチャネルデコーダのそれぞれは、アクセス制御信号(TILED、VERTなど)、および、対応するサブチャネル識別子(SC1およびSC0など)に基づき、K個のサブチャネルアドレスビット(A7−A6ビット)を生成する(N=2K)。説明を簡潔にすべく、すべてのサブチャネルデコーダは示していない。サブチャネルデコーダ5200は、2つのXORゲート5320および5340と、2つの2対1マルチプレクサ5420および5440とを有する。2つのXORゲート5320および5340は、サブチャネル0において、AD7−AD6ビットと、サブチャネル識別子ビットSC10およびSC00とに対してXOR演算を実行する。マルチプレクサへの入力0は、AD7−AD6ビットである。マルチプレクサ536への入力1は、XORゲート5320および5340の出力である。サブチャネルデコーダ5200は、本質的に、方程式(2a)および(2b)によって提供される論理関数を実装する。他のサブチャネルデコーダも同様の構成要素を有する。例えば、サブチャネルデコーダ5203は、XORゲート5323および5343と、2対1のマルチプレクサ5343とを有する。サブチャネルデコーダ5203は、アドレスA7−A6をサブチャネル3 3403に供給する。
【0060】
VERT'信号は、すべてのマルチプレクサ5420および5440の選択入力に接続される。VERT'が無効にされるかまたはデアサートされる場合は、メモリアクセスタイプが水平のタイル状メモリアクセスまたは非タイル状メモリアクセスであることを示し、マルチプレクサ5420および5440は、AD7−AD6アドレスビットである0入力を選択し、これらは、元のアドレスビットA7−A6と同じである。
【0061】
VERT'がアサートされる場合は、メモリアクセスタイプが垂直のタイル状メモリアクセスであることを示し、マルチプレクサ5420および5440は、XORゲート5320、5340、...5323、5343の出力に対応する1入力を選択する。XORゲート5320、...5343は、方程式(2a)および(2b)により提供されるような、サブチャネル識別子SC10、SC00、...、SC13、SC03と、元はアドレスビットA4−A5であるアドレスビットAD7およびAD6との間でXOR演算を実行する。したがって、サブチャネル3400から3403に送られる、生成されたA7−A6アドレスビットは、垂直のタイル状メモリアクセスについて適切に計算されたアドレスビットと一致する。
【0062】
図6Aは、本発明の一実施形態に係るデータステアリング回路310の設定600を示す図である。設定600は、設定またはマッピング610、620、630および640を含む。
【0063】
データステアリング回路310は、MC120のデータバスと接続し、MC120とプロセッサユニット110との間でのデータ転送を実行する。データステアリング回路310は、メモリにおけるN個のサブチャネルに接続し、アクセス制御信号と、N個のサブチャネルに関連付けられたサブチャネル識別子とに従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作する。データステアリング回路310は、プロセッサ側のN個のポートとサブチャネル側のN個のポートとを接続するスイッチネットワークとして構成されてもよい。図6Aに示すように、これらのポートは、(0、1、2、3)と番号が付されている。したがって、スイッチの設定は、一方の側におけるポート数を示す一組の数から、他方の側のポート数を示す他の組の数へのマッピングと考えてよい。このマッピングは、置換関数とみなされてよい。
【0064】
設定610は、単一性置換であり、一方の側のポート0、1、2、3が他方の側のポート0、1、2、3にそれぞれマッピングされる。この設定は、非タイル状メモリアクセス、水平のタイル状メモリアクセス、および、アドレスビットAD7およびAD6がそれぞれ0に等しい垂直のタイル状メモリアクセスのそれぞれによって用いられる。
【0065】
設定620は、非単一性置換であり、一方の側のポート0、1、2、3が他方の側のポート1、0、3、2にそれぞれマッピングされる。この設定は、AD7が1に等しく、AD6が0に等しいアドレスビットを有する垂直のタイル状メモリアクセスによって用いられる。
【0066】
設定630は、非単一性置換であり、一方の側のポート0、1、2、3は、他方の側のポート2、3、0、1にそれぞれマッピングされる。この設定は、AD7が0に等しく、AD6が1に等しいアドレスビットを有する垂直のタイル状メモリアクセスによって用いられる。
【0067】
設定640は、非単一性置換であり、一方の側のポート0、1、2、3は、他方の側のポート3、2、1、0にそれぞれマッピングされる。この設定は、AD7およびAD6が1にそれぞれ等しいアドレスビットを有する垂直のタイル状メモリアクセスによって用いられる。
【0068】
図6Bは、本発明の一実施形態に係るデータステアリング回路310を示す図である。データステアリング回路310は、双方向転送のための複数の回路を含む。説明を簡単にすべく、一方向についての回路のみを示す。この回路では、データ転送は、インポート0、1、2、3からアウトポート0、1、2、3へと行われる。これらの回路の2つが双方向転送を提供するよう用いられる場合、アウトポート0、1、2、3およびインポート0、1、2、3において必要に応じてトリステートバッファが用いられてよい。
【0069】
データステアリング回路310は、XORゲート6520、6540、6521、6541、6522、6542、6523、6543と、2対1マルチプレクサ6620、6640、6631、6641、6622、6642、6623、6643と、4対1マルチプレクサ6700、6701、6702、6703とを有する。XORゲート6520、6540、6521、6541、6522、6542、6523、6543は、ハードコードされたサブチャネル識別子00、01、10、11を用いてアドレスビットAD7およびAD6に対してそれぞれXOR演算を実行する。2対1マルチプレクサ6620、6640、6631、6641、6622、6642、6623、6643の入力を選択するためにVERT'信号が用いられる。図に示すように、4対1マルチプレクサ6700、6701、6702、6703の入力を選択するために2対1マルチプレクサ6620、6640、6631、6641、6622、6642、6623、6643の出力を対にして用いる。
【0070】
VERT'信号がLOWの場合は、メモリアクセスタイプが非タイル状メモリアクセスまたは水平のタイル状メモリアクセスであることを示し、2対1マルチプレクサ6620、6640、6631、6641、6622、6642、6623、6643は、サブチャネル識別子00、01、10、11を選択する。4対1マルチプレクサ6700、6701、6702、6703の入力を選択するためにこれらの出力が用いられる場合、アウトポート0、1、2、3は、単一性置換マッピングに対応してインポート0、1、2、3にそれぞれマッピングされるという結果になる。
【0071】
VERT'信号がHIGHの場合は、メモリアクセスタイプが垂直のタイル状メモリアクセスであることを示し、2対1マルチプレクサ6620、6640、6631、6641、6622、6642、6623、6643は、XORゲートの出力を選択する。したがって、マッピングの結果は、アドレスビットAD7およびAD6の値に基づく。
【0072】
AD7およびAD6が00である場合、XORゲートの出力は、00、01、10、11となり、VERT'信号がLOWである場合と同じになる。したがって、AD7およびAD6が00の場合については、アウトポート0、1、2、3は、図6Aに示されるような設定610で表された単一性置換マッピングに対応してインポート0、1、2、3にそれぞれマッピングされるという結果になる。
【0073】
AD7およびAD6が01の場合は、XORゲートの出力は、01、00、11および10になる。したがって、AD7およびAD6が01の場合については、アウトポート0、1、2、3は、図6Aに示されるような設定620に対応し、インポート1、0、3、2にそれぞれマッピングされるという結果になる。
【0074】
AD7およびAD6が10の場合、XORゲートの出力は、10、11、00、01になる。したがって、AD7およびAD6が10の場合については、アウトポート0、1、2、3は、図6Aに示されるような設定630に対応し、インポート2、3、0、1にそれぞれマッピングされるという結果になる。
【0075】
AD7およびAD6が11の場合、XORゲートの出力は、11、10、01、00になる。したがって、AD7およびAD6が11の場合については、アウトポート0、1、2、3は、図6Aに示されるような設定640に対応し、インポート3、2、1、0にそれぞれマッピングされるという結果になる。
【0076】
図7は、本発明の一実施形態に係るメモリにアクセスするプロセス700を示すフローチャートである。プロセス700は、リードアクセスを示すことに留意されたい。ライトアクセスも同様に得られてよい。
【0077】
開始後、プロセス700は、アクセス制御信号に従いアドレスビットの調整を行う(ブロック710)。アクセス制御信号は、TILED制御信号がアサートされたとき、タイル状メモリアクセスを選択するタイル状制御信号と、垂直のタイル状メモリアクセスを選択する垂直の制御信号とを含んでよい。次に、プロセス700は、メモリにおけるN個のサブチャネルに接続し、アクセス制御信号および調整済みアドレスビットに従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作する(ブロック720)。タイル状メモリアクセスは、水平および垂直のタイル状メモリアクセスを含む。
【0078】
次に、プロセス700は、アクセス制御信号およびサブチャネル識別子に従い、N個のサブチャネルに対するサブチャネルアドレスビットを生成する(ブロック730)。
【0079】
次に、プロセス700は、メモリアクセスがタイル状かどうかを決定する(ブロック740)。そうであれば、プロセス700は、行単位でメモリにアクセスし(ブロック750)、終了する。相でない場合、プロセス700は、列単位でメモリにアクセスし(ブロック760)、その後終了する。
【0080】
図8は、本発明の一実施形態に係るデータステアリング回路についての設定を選択するプロセス720を示す。
【0081】
開始後、プロセス720は、メモリアクセスタイプが垂直のタイル状かどうかを決定する(ブロック810)。垂直のタイル状でない場合、プロセス720は、データステアリング回路についての第1の設定を選択する(ブロック820)し、終了する。垂直のタイル状の場合、プロセス720は、調整済みアドレスビットが00であるかどうか決定する(ブロック830)。00である場合、プロセス720は、ブロック820へと進む。00でない場合、プロセス720は、データステアリング回路についての調整済みアドレスビットに従い、3つの設定のうちの1つを選択し(ブロック840)、その後終了する。一般的に、第1の設定は、一方の側のポートから他方の側のポートへの恒等置換マッピングに対応する。他の3つ(2つ)の設定は、非恒等置換マッピングに対応する。
【0082】
図9は、N群のサブチャネルアドレスビットを生成する図7に示されたプロセス730を表すフローチャートである。
【0083】
開始後、プロセス730は、メモリアクセスタイプが垂直のタイル状かどうかを決定する(ブロック920)。垂直のタイル状である場合、プロセス730は、調整済みアドレスビットの論理関数と、対応するサブチャネル識別子とを含むN群のサブチャネルアドレスビットを生成し(ブロック930)、その後終了する。垂直のタイル状でない場合、プロセス730は、調整済みアドレスビットを含むN群のサブチャネルアドレスビットを生成し(ブロック940)、その後終了する。本質的に、アクセスタイプが水平のタイル状かまたは非タイル状メモリアクセスである場合、サブチャネルに送られる調整済みアドレスビットは、同じビット部分における元のアドレスビットと同じである。
【0084】
本発明の実施形態の構成要素は、ハードウェア、ファームウェア、ソフトウェア、または、それらのいかなる組合せによって実装されてよい。ハードウェアとは、一般的に、電子、電磁、光、電子光学、機械、エレクトロメカニカルパーツ、コンポーネント、または、デバイスなどの物理的構造を有する構成要素のことを指す。ソフトウェアとは、一般的に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、式などのことを指す。ファームウェアとは、一般的に、論理構造、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、関数、式など、ハードウェア構造(フラッシュメモリなど)で実装または実現されるもののことを指す。ファームウェアの例は、マイクロコード、書換え可能型制御記憶、マイクロプログラム構造などを含んでよい。本発明の一実施形態における構成要素は、ソフトウェアまたはファームウェアに実装されると、本質的に、必要なタスクを実行するコードセグメントとなる。ソフトウェア/ファームウェアは、本発明の一実施形態に記載された動作を実行する実際のコードか、または、動作をエミュレートまたはシミュレートするコードを含んでよい。プログラムまたはコードセグメントは、プロセッサまたはマシンアクセス可能媒体に格納されるか、または、搬送波で表されるコンピュータデータ信号か、または、キャリアによって変調される信号により、伝送媒体上を伝送されてよい。「プロセッサ可読またはアクセス可能媒体」、または、「マシン可読またはアクセス可能媒体」は、情報を格納、伝送、または、転送できるいかなる媒体を含んでよい。プロセッサ可読またはマシンアクセス可能媒体の例は、電子回路、半導体メモリデバイス、ROM(リードオンリーメモリ)、フラッシュメモリ、EROM(消去可能ROM)、EPROM(消去可能プログラマブルROM)、フロッピー(登録商標)ディスケット、CD−ROM、光ディスク、ハードディスク、光ファイバ媒体、無線周波数(RF)リンクなどを含む。マシンアクセス可能媒体は、製品に組み込まれてよい。マシンアクセス可能媒体は、マシンによってアクセスされると、上記動作をマシンに実行させるデータを含んでよい。マシンアクセス可能媒体にはプログラムコードが埋め込まれていてよい。プログラムコードは、上記動作を実行するマシン可読コードを含んでよい。
【0085】
本発明の一部またはすべては、ハードウェア、ソフトウェア、または、ファームウェア、あるいは、それらのいかなる組合せによって実装されてよい。ハードウェア、ソフトウェア、または、ファームウェアの構成要素は、互いに結合されたいくつかのモジュールを有してよい。ハードウェアモジュールは、機械、電気、光、電磁、または、いかなる物理的接続によって他のモジュールに結合されてよい。ソフトウェアモジュールは、関数、手続き、方法、サブプログラムまたはサブルーチンコール、ジャンプ、リンク、パラメータ、変数および引き数引き渡し、ファンクションリターンなどによって他のモジュールに結合されてよい。ソフトウェアモジュールは、他のモジュールに結合されて変数、パラメータ、引き数、指針などを受信し、および/または、結果、アップデートされた変数、指針などを生成するかまたは送ってよい。ファームウェアモジュールは、上記のようなハードウェアとソフトウェアとの結合方法のいかなる組み合わせによって他のモジュールと結合される。ハードウェア、ソフトウェア、または、ファームウェアモジュールは、他のハードウェア、ソフトウェア、または、ファームウェアモジュールのうちのいかなるものと結合されてよい。装置は、ハードウェア、ソフトウェア、および、ファームウェアモジュールのいかなる組合せも含みうる。
【0086】
これまでいくつかの実施形態に関して本発明を説明してきたが、本発明は記載された実施形態に限定されず、添付の請求項の範囲内での修正および変更を伴い実施できることが当業者には理解できるであろう。したがって、記載は、限定ではなく例としてみなされるべきである。
【特許請求の範囲】
【請求項1】
アクセス制御信号に従い、プロセッサにより提供されるアドレスビットを調整するアドレス前スウィズル回路と、
前記アドレス前スウィズル回路に結合され、前記アクセス制御信号、調整済み前記アドレスビット、および、N個のサブチャネルに関連付けられたサブチャネル識別子に従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作するよう、メモリにおける前記N個のサブチャネルに接続するデータステアリング回路と、
前記アドレス前スウィズル回路および前記N個のサブチャネルに結合され、前記調整済みアドレスビットを用い、前記アクセス制御信号および前記サブチャネル識別子に従い、前記N個のサブチャネルに対するサブチャネルアドレスビットを生成するアドレス後スウィズル回路と、
を備え、
前記タイル状メモリアクセスは、水平のタイル状メモリアクセスおよび垂直のタイル状メモリアクセスを含む、
装置。
【請求項2】
前記アクセス制御信号は、
前記タイル状メモリアクセスを選択するタイル状制御信号と、
前記タイル状制御信号がアサートされた場合、前記垂直のタイル状メモリアクセスを選択する垂直制御信号と、
を含む、請求項1に記載の装置。
【請求項3】
前記アドレス前スウィズル回路は、K個の最下位共通アドレスビットを選択するデータセレクタを有し、Kは、Log2(N)に等しい、請求項1に記載の装置。
【請求項4】
前記メモリアクセスタイプが前記垂直のタイル状メモリアクセスの場合、前記アドレス後スウィズル回路は、前記調整済みアドレスビットの論理関数と、対応するサブチャネル識別子とを有するN群のサブチャネルアドレスビットを生成する、請求項1に記載の装置。
【請求項5】
前記メモリアクセスタイプが前記水平のタイル状メモリアクセス、または、非タイル状メモリアクセスの場合、前記アドレス後スウィズル回路は、前記調整済みアドレスビットを有するN群のサブチャネルアドレスビットを生成する、請求項1に記載の装置。
【請求項6】
前記メモリアクセスタイプが前記非タイル状メモリアクセス、前記水平のタイル状メモリアクセス、および、前記調整済みアドレスビットの第1組の値を有する前記垂直のタイル状メモリアクセスの場合、前記アクセス制御信号および前記調整済みアドレスビットは、前記データステアリング回路についての第1の設定を選択する、請求項1に記載の装置。
【請求項7】
前記メモリアクセスタイプが前記調整済みアドレスビットの前記第1組の値とは異なる3組の値のうちの1つを有する前記垂直のタイル状メモリアクセスの場合、前記アクセス制御信号および前記調整済みアドレスビットは、3つの設定のうちの1つを選択する、請求項6に記載の装置。
【請求項8】
前記第1の設定は、恒等置換マッピングに対応し、前記3つの設定のうちの前記1つは、非恒等置換マッピングに対応する、請求項7に記載の装置。
【請求項9】
前記タイル状メモリアクセスは、前記メモリに行単位でアクセスし、前記非タイル状メモリアクセスは、前記メモリに列単位でアクセスする、請求項1に記載の装置。
【請求項10】
アクセス制御信号に従い、プロセッサにより提供されるアドレスビットを調整する段階と、
前記アクセス制御信号、調整済み前記アドレスビット、および、N個のサブチャネルに関連付けられたサブチャネル識別子に従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作するよう、メモリにおける前記N個のサブチャネルに接続する段階と、
前記アクセス制御信号、前記調整済みアドレスビット、および、前記サブチャネル識別子に従い、前記N個のサブチャネルに対するサブチャネルアドレスビットを生成する段階と、
を備え、
前記タイル状メモリアクセスは、水平のタイル状メモリアクセスおよび垂直のタイル状メモリアクセスを含む、
る方法。
【請求項11】
前記アクセス制御信号は、
前記タイル状メモリアクセスを選択するタイル状制御信号と、
前記タイル状制御信号がアサートされた場合、前記垂直のタイル状メモリアクセスを選択する垂直制御信号と、
を含む、請求項10に記載の方法。
【請求項12】
前記サブチャネルアドレスビットを生成する段階は、K個のアドレスビットを選択する段階を有し、Kは、Log2(N)に等しい、請求項10に記載の方法。
【請求項13】
前記サブチャネルアドレスビットを生成する段階は、
前記メモリアクセスタイプが前記垂直のタイル状メモリアクセスの場合、最下位2*K個の調整済みアドレスビットの論理関数および対応するサブチャネル識別子を有するN群のサブチャネルアドレスビットを生成する段階と、
前記メモリアクセスタイプが前記水平のタイル状メモリアクセス、または、非タイル状のメモリアクセスの場合、前記調整済みアドレスビットを有するN群のサブチャネルアドレスビットを生成する段階と、
を有する、請求項12に記載の方法。
【請求項14】
前記接続する段階は、
前記メモリアクセスタイプが、前記非タイル状メモリアクセス、前記水平のタイル状メモリアクセス、および、前記調整済みアドレスビットの第1組の値を有する前記垂直のタイル状メモリアクセスの場合、第1の設定を選択する段階と、
前記メモリアクセスタイプが、前記調整済みアドレスビットの前記第1組の値とは異なる3組の値のうちの1つを有する前記垂直のタイル状メモリの場合、3つの設定のうちの1つを選択する段階と、
を有する、請求項10に記載の方法。
【請求項15】
前記第1の設定は、恒等置換マッピングに対応し、前記3つの設定のうちの前記1つは、非恒等置換マッピングに対応する、請求項14に記載の方法。
【請求項16】
前記メモリアクセスタイプが前記タイル状メモリアクセスの場合、前記メモリに行単位でアクセスする段階と、
前記メモリアクセスタイプが前記非タイル状メモリアクセスの場合、前記メモリに列単位でアクセスする段階と、
をさらに備える、請求項10に記載の方法。
【請求項17】
システムであって、
プロセッサと、
メモリにおけるN個のサブチャネル内に形成され、DDR(Double Data Rate)SDRAM(同期型随時書き込み読み出しメモリ)である複数のメモリデバイスと、
前記プロセッサおよび前記複数のメモリデバイスに結合され、アクセスコントローラを有するメモリコントローラと、を備え、
前記アクセスコントローラは、
アクセス制御信号に従い、プロセッサにより提供されるアドレスビットを調整するアドレス前スウィズル回路と、
前記アドレス前スウィズル回路に結合され、前記アクセス制御信号、調整済み前記アドレスビット、および、N個のサブチャネルに関連付けられたサブチャネル識別子に従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作するよう、前記メモリにおける前記N個のサブチャネルに接続するデータステアリング回路と、
前記アドレス前スウィズル回路および前記N個のサブチャネルに結合され、前記調整済みアドレスビットを用い、前記アクセス制御信号および前記サブチャネル識別子に従い、前記N個のサブチャネルに対するサブチャネルアドレスビットを生成するアドレス後スウィズル回路と、
を有し、
前記タイル状メモリアクセスは、水平のタイル状メモリアクセスおよび垂直のタイル状メモリアクセスを含む、
システム。
【請求項18】
前記アクセス制御信号は、
前記タイル状メモリアクセスを選択するタイル状制御信号と、
前記タイル状制御信号がアサートされた場合、前記垂直のタイル状メモリアクセスを選択する垂直制御信号と、
を含む、請求項17に記載のシステム。
【請求項19】
前記アドレス前スウィズル回路は、最下位2*KのアドレスビットからKの共通アドレスビットを選択するデータセレクタを有し、Kは、Log2(N)に等しい、請求項17に記載のシステム。
【請求項20】
前記メモリアクセスタイプが前記垂直のタイル状メモリアクセスの場合、前記アドレス後スウィズル回路は、前記調整済みアドレスビットの論理関数および対応するサブチャネル識別子を有するN群のサブチャネルアドレスビットを生成する、請求項19に記載のシステム。
【請求項21】
前記メモリアクセスタイプが前記水平のタイル状メモリアクセス、または、非タイル状メモリアクセスの場合、前記アドレス後スウィズル回路は、前記調整済みアドレスビットを有するN群のサブチャネルアドレスビットを生成する、請求項19に記載のシステム。
【請求項22】
前記メモリアクセスタイプが前記非タイル状メモリアクセス、前記水平のタイル状メモリアクセス、および、前記調整済みアドレスビットの第1組の値を有する前記垂直のタイル状メモリの場合、前記アクセス制御信号および前記調整済みアドレスビットは、前記データステアリング回路についての第1の設定を選択する、請求項17に記載のシステム。
【請求項23】
前記メモリアクセスタイプが前記調整済みアドレスビットの前記第1組の値とは異なる3組の値のうちの1つを有する前記垂直のタイル状メモリの場合、前記アクセス制御信号および前記調整済みアドレスビットは、3つの設定のうちの1つを選択する、請求項22に記載のシステム。
【請求項24】
前記第1の設定は、恒等置換マッピングに対応し、前記3つの設定のうちの前記1つは、非恒等置換マッピングに対応する、請求項23に記載のシステム。
【請求項25】
前記タイル状メモリアクセスは、前記メモリに行単位でアクセスし、前記非タイル状メモリアクセスは、前記メモリに列単位でアクセスする、請求項17に記載のシステム。
【請求項1】
アクセス制御信号に従い、プロセッサにより提供されるアドレスビットを調整するアドレス前スウィズル回路と、
前記アドレス前スウィズル回路に結合され、前記アクセス制御信号、調整済み前記アドレスビット、および、N個のサブチャネルに関連付けられたサブチャネル識別子に従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作するよう、メモリにおける前記N個のサブチャネルに接続するデータステアリング回路と、
前記アドレス前スウィズル回路および前記N個のサブチャネルに結合され、前記調整済みアドレスビットを用い、前記アクセス制御信号および前記サブチャネル識別子に従い、前記N個のサブチャネルに対するサブチャネルアドレスビットを生成するアドレス後スウィズル回路と、
を備え、
前記タイル状メモリアクセスは、水平のタイル状メモリアクセスおよび垂直のタイル状メモリアクセスを含む、
装置。
【請求項2】
前記アクセス制御信号は、
前記タイル状メモリアクセスを選択するタイル状制御信号と、
前記タイル状制御信号がアサートされた場合、前記垂直のタイル状メモリアクセスを選択する垂直制御信号と、
を含む、請求項1に記載の装置。
【請求項3】
前記アドレス前スウィズル回路は、K個の最下位共通アドレスビットを選択するデータセレクタを有し、Kは、Log2(N)に等しい、請求項1に記載の装置。
【請求項4】
前記メモリアクセスタイプが前記垂直のタイル状メモリアクセスの場合、前記アドレス後スウィズル回路は、前記調整済みアドレスビットの論理関数と、対応するサブチャネル識別子とを有するN群のサブチャネルアドレスビットを生成する、請求項1に記載の装置。
【請求項5】
前記メモリアクセスタイプが前記水平のタイル状メモリアクセス、または、非タイル状メモリアクセスの場合、前記アドレス後スウィズル回路は、前記調整済みアドレスビットを有するN群のサブチャネルアドレスビットを生成する、請求項1に記載の装置。
【請求項6】
前記メモリアクセスタイプが前記非タイル状メモリアクセス、前記水平のタイル状メモリアクセス、および、前記調整済みアドレスビットの第1組の値を有する前記垂直のタイル状メモリアクセスの場合、前記アクセス制御信号および前記調整済みアドレスビットは、前記データステアリング回路についての第1の設定を選択する、請求項1に記載の装置。
【請求項7】
前記メモリアクセスタイプが前記調整済みアドレスビットの前記第1組の値とは異なる3組の値のうちの1つを有する前記垂直のタイル状メモリアクセスの場合、前記アクセス制御信号および前記調整済みアドレスビットは、3つの設定のうちの1つを選択する、請求項6に記載の装置。
【請求項8】
前記第1の設定は、恒等置換マッピングに対応し、前記3つの設定のうちの前記1つは、非恒等置換マッピングに対応する、請求項7に記載の装置。
【請求項9】
前記タイル状メモリアクセスは、前記メモリに行単位でアクセスし、前記非タイル状メモリアクセスは、前記メモリに列単位でアクセスする、請求項1に記載の装置。
【請求項10】
アクセス制御信号に従い、プロセッサにより提供されるアドレスビットを調整する段階と、
前記アクセス制御信号、調整済み前記アドレスビット、および、N個のサブチャネルに関連付けられたサブチャネル識別子に従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作するよう、メモリにおける前記N個のサブチャネルに接続する段階と、
前記アクセス制御信号、前記調整済みアドレスビット、および、前記サブチャネル識別子に従い、前記N個のサブチャネルに対するサブチャネルアドレスビットを生成する段階と、
を備え、
前記タイル状メモリアクセスは、水平のタイル状メモリアクセスおよび垂直のタイル状メモリアクセスを含む、
る方法。
【請求項11】
前記アクセス制御信号は、
前記タイル状メモリアクセスを選択するタイル状制御信号と、
前記タイル状制御信号がアサートされた場合、前記垂直のタイル状メモリアクセスを選択する垂直制御信号と、
を含む、請求項10に記載の方法。
【請求項12】
前記サブチャネルアドレスビットを生成する段階は、K個のアドレスビットを選択する段階を有し、Kは、Log2(N)に等しい、請求項10に記載の方法。
【請求項13】
前記サブチャネルアドレスビットを生成する段階は、
前記メモリアクセスタイプが前記垂直のタイル状メモリアクセスの場合、最下位2*K個の調整済みアドレスビットの論理関数および対応するサブチャネル識別子を有するN群のサブチャネルアドレスビットを生成する段階と、
前記メモリアクセスタイプが前記水平のタイル状メモリアクセス、または、非タイル状のメモリアクセスの場合、前記調整済みアドレスビットを有するN群のサブチャネルアドレスビットを生成する段階と、
を有する、請求項12に記載の方法。
【請求項14】
前記接続する段階は、
前記メモリアクセスタイプが、前記非タイル状メモリアクセス、前記水平のタイル状メモリアクセス、および、前記調整済みアドレスビットの第1組の値を有する前記垂直のタイル状メモリアクセスの場合、第1の設定を選択する段階と、
前記メモリアクセスタイプが、前記調整済みアドレスビットの前記第1組の値とは異なる3組の値のうちの1つを有する前記垂直のタイル状メモリの場合、3つの設定のうちの1つを選択する段階と、
を有する、請求項10に記載の方法。
【請求項15】
前記第1の設定は、恒等置換マッピングに対応し、前記3つの設定のうちの前記1つは、非恒等置換マッピングに対応する、請求項14に記載の方法。
【請求項16】
前記メモリアクセスタイプが前記タイル状メモリアクセスの場合、前記メモリに行単位でアクセスする段階と、
前記メモリアクセスタイプが前記非タイル状メモリアクセスの場合、前記メモリに列単位でアクセスする段階と、
をさらに備える、請求項10に記載の方法。
【請求項17】
システムであって、
プロセッサと、
メモリにおけるN個のサブチャネル内に形成され、DDR(Double Data Rate)SDRAM(同期型随時書き込み読み出しメモリ)である複数のメモリデバイスと、
前記プロセッサおよび前記複数のメモリデバイスに結合され、アクセスコントローラを有するメモリコントローラと、を備え、
前記アクセスコントローラは、
アクセス制御信号に従い、プロセッサにより提供されるアドレスビットを調整するアドレス前スウィズル回路と、
前記アドレス前スウィズル回路に結合され、前記アクセス制御信号、調整済み前記アドレスビット、および、N個のサブチャネルに関連付けられたサブチャネル識別子に従い、タイル状および非タイル状メモリアクセスを含むメモリアクセスタイプのデータを動的に操作するよう、前記メモリにおける前記N個のサブチャネルに接続するデータステアリング回路と、
前記アドレス前スウィズル回路および前記N個のサブチャネルに結合され、前記調整済みアドレスビットを用い、前記アクセス制御信号および前記サブチャネル識別子に従い、前記N個のサブチャネルに対するサブチャネルアドレスビットを生成するアドレス後スウィズル回路と、
を有し、
前記タイル状メモリアクセスは、水平のタイル状メモリアクセスおよび垂直のタイル状メモリアクセスを含む、
システム。
【請求項18】
前記アクセス制御信号は、
前記タイル状メモリアクセスを選択するタイル状制御信号と、
前記タイル状制御信号がアサートされた場合、前記垂直のタイル状メモリアクセスを選択する垂直制御信号と、
を含む、請求項17に記載のシステム。
【請求項19】
前記アドレス前スウィズル回路は、最下位2*KのアドレスビットからKの共通アドレスビットを選択するデータセレクタを有し、Kは、Log2(N)に等しい、請求項17に記載のシステム。
【請求項20】
前記メモリアクセスタイプが前記垂直のタイル状メモリアクセスの場合、前記アドレス後スウィズル回路は、前記調整済みアドレスビットの論理関数および対応するサブチャネル識別子を有するN群のサブチャネルアドレスビットを生成する、請求項19に記載のシステム。
【請求項21】
前記メモリアクセスタイプが前記水平のタイル状メモリアクセス、または、非タイル状メモリアクセスの場合、前記アドレス後スウィズル回路は、前記調整済みアドレスビットを有するN群のサブチャネルアドレスビットを生成する、請求項19に記載のシステム。
【請求項22】
前記メモリアクセスタイプが前記非タイル状メモリアクセス、前記水平のタイル状メモリアクセス、および、前記調整済みアドレスビットの第1組の値を有する前記垂直のタイル状メモリの場合、前記アクセス制御信号および前記調整済みアドレスビットは、前記データステアリング回路についての第1の設定を選択する、請求項17に記載のシステム。
【請求項23】
前記メモリアクセスタイプが前記調整済みアドレスビットの前記第1組の値とは異なる3組の値のうちの1つを有する前記垂直のタイル状メモリの場合、前記アクセス制御信号および前記調整済みアドレスビットは、3つの設定のうちの1つを選択する、請求項22に記載のシステム。
【請求項24】
前記第1の設定は、恒等置換マッピングに対応し、前記3つの設定のうちの前記1つは、非恒等置換マッピングに対応する、請求項23に記載のシステム。
【請求項25】
前記タイル状メモリアクセスは、前記メモリに行単位でアクセスし、前記非タイル状メモリアクセスは、前記メモリに列単位でアクセスする、請求項17に記載のシステム。
【図1A】
【図1B】
【図1C】
【図2A】
【図2B】
【図3A】
【図3B】
【図3C】
【図3D】
【図4】
【図5】
【図6A】
【図6B】
【図7】
【図8】
【図9】
【図1B】
【図1C】
【図2A】
【図2B】
【図3A】
【図3B】
【図3C】
【図3D】
【図4】
【図5】
【図6A】
【図6B】
【図7】
【図8】
【図9】
【公開番号】特開2012−113732(P2012−113732A)
【公開日】平成24年6月14日(2012.6.14)
【国際特許分類】
【出願番号】特願2012−26518(P2012−26518)
【出願日】平成24年2月9日(2012.2.9)
【分割の表示】特願2009−544315(P2009−544315)の分割
【原出願日】平成19年12月28日(2007.12.28)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
【公開日】平成24年6月14日(2012.6.14)
【国際特許分類】
【出願日】平成24年2月9日(2012.2.9)
【分割の表示】特願2009−544315(P2009−544315)の分割
【原出願日】平成19年12月28日(2007.12.28)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
[ Back to top ]