JP2003280984A - マップテーブルを使用して入出力モジュールにアクセスする方法 - Google Patents

マップテーブルを使用して入出力モジュールにアクセスする方法

Info

Publication number
JP2003280984A
JP2003280984A JP2003043570A JP2003043570A JP2003280984A JP 2003280984 A JP2003280984 A JP 2003280984A JP 2003043570 A JP2003043570 A JP 2003043570A JP 2003043570 A JP2003043570 A JP 2003043570A JP 2003280984 A JP2003280984 A JP 2003280984A
Authority
JP
Japan
Prior art keywords
entry
memory
cell
address
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003043570A
Other languages
English (en)
Other versions
JP2003280984A5 (ja
JP4445708B2 (ja
Inventor
Ashish Gupta
アシシュ・ガプタ
Sharma Debendra Das
デベンドラ・ダス・シャーマ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2003280984A publication Critical patent/JP2003280984A/ja
Publication of JP2003280984A5 publication Critical patent/JP2003280984A5/ja
Application granted granted Critical
Publication of JP4445708B2 publication Critical patent/JP4445708B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】マップテーブルを使用して入出力モジュールに
アクセスする方法を提供すること。 【解決手段】連続した論理アドレス空間を使用して、複
数のメモリにインタリーブ方式でアクセスし、複数の入
出力モジュールにアクセスする本方法は、複数のエント
リを含むマップテーブルを設ける。エントリは、メモリ
タイプエントリか入出力タイプエントリのエントリタイ
プ識別子、またはモジュール識別子のエントリ項目を含
む。つぎに第1の論理アドレスを受信し、アドレスビッ
トの第1のセットに基づいてエントリのタイプを決定す
る。エントリタイプ識別子が入出力タイプエントリを示
す場合、第2のセットに基づいて識別されたエントリの
エントリ項目を識別し、メモリタイプエントリを示す場
合、第3のセットに基づいて識別されたエントリのエン
トリ項目を識別し、識別されたモジュールにアクセスす
る。

Description

【発明の詳細な説明】 【0001】 【発明の属する技術分野】本発明は概して、コンピュー
タシステムのセルマップに関する。本発明は特に、セル
マップを使用して入出力モジュールを仮想化するととと
もにメモリをインタリーブするシステムおよび方法に関
する。 【0002】 【従来の技術】本願は、2000年4月29日付けで出
願された「MEMORY ADDRESS INTERLEAVING AND OFFSET B
ITS FOR CELL INTERLEAVING OF MEMORY」と題する、下
に示す特許文献1の米国特許出願に関連する。 【0003】歴史的に見て、主メモリは物理的に中央バ
ス上に配置されてきた。この種のシステム内では、完全
な物理アドレスからなるメモリ要求がメモリサブシステ
ムに転送され、データが戻される。分散メモリシステム
では、主メモリは多くの異なるセルにわたって物理的に
分散される。セルはいくつかのプロセッサ、入出力(I
/O)装置、セルコントローラ、およびメモリからなり
得る。 【0004】分散システムでは、メモリをインタリーブ
してもしなくてもよい。従来技術によるメモリをインタ
リーブするシステムおよび方法は、たとえば、下に示す
特許文献2のWilliams他に1996年6月25日付けで
発行された「METHODS AND APPARATUS FOR INTERLEAVING
MEMORY TRANSACTIONS INTO AN ARBITRARY NUMBER OFBA
NKS」、および特許文献3のBrockmann他に1994年3
月8日付けで発行された「FLEXIBLE N-WAY MEMORY INTE
RLEAVING」に説明および記載されており、これらは本発
明の所有者に譲渡されている。メモリが複数の物理的な
セルに分割される、または複数の物理的なセルにわたっ
て分割される非インタリーブアクセス方法では、まず第
1のセルのすべてのメモリに順次アクセスし、次いで第
2のセル中の利用可能なすべてのメモリに順次アクセス
し、以下同様を行うことにより、連続したメモリ空間が
1つにまとめられたブロックとしてアドレス指定され
る。各セルが可能な限りの最大メモリ量で構成されてい
た場合、システムからそのメモリは1つの連続したメモ
リブロックのように見え、1つの連続したメモリブロッ
クとしてアドレス指定される。しかし、すべてのセルが
最大メモリ容量に構成されているわけではない場合、こ
の非インタリーブ方式では、セル内のメモリブロックの
損失に対応してメモリ空間内に穴が生じうる。また、非
インタリーブメモリでは、命令およびデータの双方が順
次使用される傾向があるため、特定のセルへの複数の順
次アクセスが必要である。ローカルに格納される場合に
は恩恵を受けるが、別のセルにおけるリモートメモリに
連続してもしくは頻繁にアクセスするプロセッサは、ロ
ーカルセルおよびリモートセルの双方、ならびに接続ネ
ットワークにおける処理リソースおよび通信リソースを
含む相当なオーバヘッドを消費する。かなり続くと、こ
れらリソースが他の処理に利用できなくなり、システム
パフォーマンスが劣化することになり得る。 【0005】代替として、分散メモリシステム内のメモ
リにインタリーブプロトコルを介してアクセスすること
ができる。いくつかのセルにわたりメモリをインタリー
ブすると、より均等にメモリにアクセスすることができ
る。たとえば、システムがバスシステムを介して共に接
続された2個のセルを含み、各セルがメモリおよび4個
の別個のプロセッサを含む場合、セル1におけるメモリ
をセル2におけるメモリでインタリーブすることによ
り、システム中の8個すべてのプロセッサがより均等に
各メモリロケーションにアクセスする。2個のセルにメ
モリをインタリーブすることはまた、メモリロケーショ
ンにアクセスする際の各プロセッサの待ち時間遅延が一
貫するように保証する。2つのメモリロケーションにメ
モリをインタリーブすると、プロセッサがメモリにアク
セスしようと試みるか、またはメモリから情報を検索し
ようと試みる場合のボトルネックの可能性も減少する。 【0006】インタリーブの一例として、システムに包
含されるメモリが0、1、2、および3とラベルの付い
た4個のセルに分散するものと仮定する。さらに、セル
0およびセル1はそれぞれ8ギガバイト(GB)のメモ
リを含み、セル2およびセル3はそれぞれ4GBのメモ
リを含むものと仮定する。したがって、システム全体と
しては24GBのメモリを含む。分散メモリは以下のよ
うにインタリーブすることができる。4個のセルはそれ
ぞれ少なくとも4GBのメモリを含むため、最初のイン
タリーブエントリであるエントリ0は、セル0、1、
2、および3それぞれからの4GBのメモリ、総計で1
6GBのメモリを含む。ここで、セル2およびセル3で
利用可能なすべてのメモリがインタリーブエントリ0に
使用されてしまった。セル0およびセル1それぞれは4
GBの未使用メモリを含む。インタリーブエントリ1
は、セル0からの4GBのメモリを含むとともにセル1
からの4GBのメモリを含む。したがって、インタリー
ブエントリ1は、セル0から4GBかつセル1から4G
Bで、8GBのメモリを含む。ここで、4個のセルにお
ける24GBのメモリが2個のインタリーブエントリに
分割された。ここで4個のセルからの24GBのメモリ
は、以下のような1つの連続ブロックとして見ることが
できる。GB0〜15はセル0、1、2、および3の下
半分に配置され、GB16〜23はセル0〜1の上部分
に配置される。このインタリーブはキャッシュラインレ
ベルで行われる。プロセッサからは、24GBの情報は
1つの連続したブロックに見える。24GBの情報は、
1つの連続したブロックとして見えるが、物理的には4
個の異なるセルに分散されている。 【0007】大型コンピュータシステムは、セルマップ
を使用してプロセッサアクセスを分散させてホットスポ
ットを回避している。セルマップは、セル/ノードベー
スのシステムについて宛先モジュールを見つけるために
使用されている。セルマップを使用してメモリをセルに
インタリーブし、より均等なアクセスパターンをメモリ
に提供している。セルマップエントリは、1、2、4、
8、16、32、および64ウェイインタリーブを提供
するために使用されてきた。セルマップエントリのサイ
ズが、メモリがインタリーブされるウェイ数を決める。 【0008】上述したいくつかの従来のシステムは、セ
ルマップを使用して仮想化およびメモリのインタリーブ
を実施していた。メモリのインタリーブは概して細粒で
あり、隣接するキャッシュラインへの2つのアドレスが
異なるモジュールに行く。このような細粒度アクセスは
通常、入出力(I/O)仮想化には必要ない。 【0009】従来のシステムでは、メモリのマッピング
およびI/Oのマッピングに別個のリソースが使用され
ていた。システムのトポロジおよびアーキテクチャに応
じて、またシステムの現在のニーズに応じて、システム
が“フリップフロップ”して所望のメモリまたはI/O
オペレーションを提供していた。また、インタリーブド
メモリのプログラミングモデルとI/Oモジュールをマ
ッピングするプログラミングモデルは全く異なってい
る。 【0010】 【特許文献1】米国特許出願第09/563,018号 【特許文献2】米国特許第5,530,837号 【特許文献3】米国特許第5,293,607号 【0011】 【発明が解決しようとする課題】単一のセルマップ構造
を使用してメモリのインタリーブおよびI/Oモジュー
ルの仮想化を提供することが望ましい。 【0012】 【課題を解決するための手段】本発明の一形態は、連続
した論理アドレス空間を使用してインタリーブされた複
数のメモリおよび複数の入出力モジュールにアクセスす
る方法を提供する。少なくとも1つのマップテーブルが
設けられる。少なくとも1つのマップテーブルは複数の
エントリを含む。各エントリは、エントリタイプ識別子
および複数のエントリ項目を含む。各エントリ項目はモ
ジュール識別子を含む。各エントリは、メモリタイプエ
ントリおよび入出力タイプエントリのうちの一方であ
る。最初の論理アドレスを受信する。最初の論理アドレ
スは複数のアドレスビットを含む。アドレスビットの第
1の組に基づいて少なくとも1つのマップテーブルにお
けるエントリが識別される。識別されたエントリのエン
トリタイプ識別子に基づいて、識別されたエントリのタ
イプが決定される。エントリタイプ識別子が入出力タイ
プエントリを示す場合には、アドレスビットの第2の組
に基づいて、識別されたエントリのエントリ項目が識別
される。エントリタイプ識別子がメモリタイプエントリ
を示す場合には、アドレスビットの第3の組に基づい
て、識別されたエントリのエントリ項目が識別される。
識別されたエントリ項目のモジュール識別子によって識
別されるモジュールがアクセスされる。 【0013】 【発明の実施の形態】以下の好ましい実施形態の詳細な
説明では、本発明の一部をなし、本発明を実施し得る特
定の実施形態を例として示す添付図面を参照する。本発
明の範囲から逸脱することなく他の実施形態を利用する
ことができるとともに、構造的または論理的な変更を行
い得ることを理解されたい。したがって以下の詳細な説
明は、限定を意味するものと解釈すべきではなく、本発
明の範囲は併記の特許請求の範囲によって定義される。 【0014】図1は、クロスバー125を介して接続さ
れた4個のセル105、110、115、および120
を含む処理システムまたはノード100を示すブロック
図である。各セルは対応するメモリブロックを有する。
すなわち、セル105にはメモリ130、セル110に
はメモリ135、セル115にはメモリ140、またセ
ル120にはメモリ145がある。各セルはまた、4個
のプロセッサ(セル105の場合、150、155、1
60、および165と符号が付与される)と、入出力
(I/O)モジュール(セル105の場合では170と
符号が付与される)と、セルコントローラ(セル105
では175と符号が付与される)とを備える。 【0015】4個のプロセッサ150〜165それぞれ
およびI/Oモジュール170は、メモリ130へのア
クセスを要求する。セルコントローラ175は、I/O
モジュール170およびプロセッサ150〜165の双
方とメモリ130との間のインタフェースである。メモ
リアクセスデバイス(たとえば、プロセッサ150〜1
65のいずれか、またはI/Oモジュール170)がメ
モリの正確な部分にアクセスするために、セルコントロ
ーラ175が、メモリアクセスデバイスが知っている論
理メモリアドレスを物理アドレスに変換する。物理アド
レスは、セルコントローラ175にメモリ要求のルーテ
ィング方法がわかるようにする。セル1中の任意のメモ
リアクセスデバイスは、セル115のメモリ140、セ
ル120のメモリ145、またはセル110のメモリ1
35にもアクセスすることができる。セルコントローラ
175は、セルマップを使用して、メモリアクセスデバ
イスからの論理メモリアドレスを変換して、適切なメモ
リにアクセスするために使用することのできる適切な物
理アドレスにする。一実施形態では、セルコントローラ
175は、各メモリアクセスデバイスごとに異なるセル
マップを含む。図1に示す実施形態では、セルコントロ
ーラ175は、取り付けられたメモリアクセスデバイス
ごとに1つずつ、合わせて5つの異なるセルマップを含
む。 【0016】セルマップの一実施形態は、複数の行およ
び複数の列を有するテーブルであり、各行がインタリー
ブエントリに対応し、行中の各列がシステムにおけるセ
ルの1つを識別するエントリ項目に対応する。 【0017】図2は、4個のセル:セル0、セル1、セ
ル2、およびセル3にメモリが分散した分散メモリシス
テム200を示す。セル0は総計で8ギガバイト(G
B)のメモリを含み、セル1は6GBのメモリを含み、
セル2は4GBのメモリを含み、セル3は2GBのメモ
リを含む。一実施形態では、これら4個のセルへのイン
タリーブは、以下のようにして達成される。まず、イン
タリーブに利用可能なメモリ量が最小なのはどのセルか
について査定を行う。この場合、セル3は2GBのメモ
リしか含まない。したがって、インタリーブエントリ0
は、セル0、1、2、および3から2GBのメモリ、総
計で8GBのメモリをインタリーブする。その結果得ら
れるインタリーブエントリを図3の行305に示す。図
3中、各行は最大8個のセルメモリを識別する。行30
5の上には、3ビットの8つの組み合わせがあり、3ビ
ットの各組み合わせが行305(および行310)にお
ける8つのエントリ項目の1つに関連付けられる。3ビ
ットのこれら組み合わせを使用して特定のエントリ項目
を識別するが、これについてさらに詳細に後述する。 【0018】次に、査定を行って、利用可能な任意のセ
ルに残っている最小のメモリ量を決定する。この場合、
セル2における2GBである。セル0、セル1、および
セル2にわたるインタリーブは、図4に示す3つのイン
タリーブエントリを使用することによって提供される。
インタリーブエントリ1、2、および3(図4中の3ビ
ット組み合わせの下にある最初の3行それぞれ)は、セ
ル0の二番目の2GBブロック、セル1の二番目の2G
Bブロック、およびセル2の一番上の2GB部分に使用
される。この時点において、インタリーブエントリ0
は、総計8GBの情報をアドレス指定するが、インタリ
ーブエントリ1、2、および3はそれぞれ2GBの情報
を含む。セル3のメモリリソースは、インタリーブエン
トリ0で完全に使用されてしまった。セル2のメモリリ
ソースは、インタリーブエントリ3の完成を通して使い
尽くされた。 【0019】本プロセスにおける次のステップは、割り
当てられずに残っている任意のセルのメモリを識別する
ことである。この場合、セル1に2GBのメモリが残っ
ている。インタリーブエントリ4は、通常であれば、セ
ル0からの2GBのメモリおよびセル1からの2GBの
メモリを含むことになろう。この配列により、すでにマ
ッピングされた14GBに4GBが追加され、総計で1
8GBになる。しかし、一実施形態では、各テーブルエ
ントリがグループサイズの整数倍で、すなわち16GB
で始まることが好ましい。したがって、セル0およびセ
ル1における4GBが1つのインタリーブエントリを占
めることができるようにするには、次に2GBを追加す
る必要がある。このため、インタリーブエントリ4(図
示せず)は、セル0にある一番上の2GBを表し、マッ
ピングする。ここで、今までに定義されたインタリーブ
エントリ(0、1、2、3、および4)は16GBのメ
モリを含むことになる。インタリーブエントリ5(図示
せず)は、セル1にある残りの2GBおよびセル0にお
ける残りの2GBをマッピングする。これは、これまで
にエントリ0、1、2、3、および4に割り当てられた
16GBが4GBの倍数であるため差し支えない。要約
すると、セル0〜セル3に含まれる20GBのメモリは
ここで、6つのインタリーブエントリに含められる。最
初のインタリーブエントリは、4個のセルそれぞれから
2GBずつ、合わせて8GBの情報を含む。インタリー
ブエントリ1、2、3、および4は2GBを含み、イン
タリーブエントリ5は4GBを有する。 【0020】インタリーブグループは、所与のメモリ範
囲でのインタリーブに制限される同量のメモリを有する
複数のセルのユニットとして定義される。インタリーブ
グループは1つまたは複数のインタリーブエントリで構
成される。インタリーブグループ0は、インタリーブエ
ントリ0内にある8GB、換言すれば4個のセルそれぞ
れからの2GBで構成される。インタリーブグループ1
は、インタリーブエントリ1、2、および3内にある6
GB、換言すればセル0からの2GB、セル1からの2
GB、およびセル2からの2GBで構成される。インタ
リーブグループ2は、セル0の一番上の2GB(すなわ
ち、インタリーブエントリ4)で構成される。インタリ
ーブグループ3は、セル0およびセル1それぞれからの
2GBで構成される(すなわち、インタリーブエントリ
5)。 【0021】所望の物理メモリが配置されている特定の
セルを識別するには、入力メモリアドレスからの第1の
アドレスビットの組を使用してセルマップの行を識別
し、入力メモリアドレスからの第2のアドレスビットの
組を使用して識別された行にインデックスを付け、エン
トリ項目を識別する。一実施形態では、44ビットメモ
リアドレスが使用され、アドレスビット29〜43が第
1のアドレスビットの組に対応し、ビット6〜8が第2
のアドレスビットの組に対応する。3ビット(たとえ
ば、ビット6〜8)を使用して、8列すなわち8個のエ
ントリ項目を有するエントリにインデックスを付ける。
16エントリ項目を有するエントリの場合には、4ビッ
ト(たとえば、ビット6〜9)をインデックス付けに使
用する。同様に、エントリサイズが倍になるごとに、追
加のインデックス付けビットを1個使用する。 【0022】インタリーブは、アクセスされた連続メモ
リ量が少なく保たれる場合に最も効果的である。キャッ
シュラインインタリーブでは、セルマップはキャッシュ
ラインが配置されるセルを示す。このため、インタリー
ブエントリ0(図3における行305)を再び参照する
と、キャッシュラインがセル0、1、2、および3の間
でインタリーブされた場合、行305はどのようにセル
がテーブル内で表されるかを示す。一実施形態では、行
305の上にある複数の3ビット組み合わせでの3ビッ
トは、入力論理メモリアドレスのアドレスビット6〜8
に対応する。入力アドレスのこれら3ビットを使用し
て、行にインデックスを付け、エントリ項目の1つを識
別する。行305における各エントリ項目は、4個のセ
ルの1つを識別する。図3に示すように、メモリアドレ
スのビット6〜8が000である場合、これは、メモリ
の物理アドレスがセル0にあることをセルコントローラ
に示す。メモリアドレスのビット6〜8の値が001で
ある場合、これはメモリの物理アドレスがセル1にある
ことをセルコントローラに示す。同様に、セルコントロ
ーラは、メモリアドレスのビット6〜8について可能な
他の6つの値それぞれを使用して、テーブルからのセル
を識別する。 【0023】再び図1を参照して、4個のセルを有する
単一ノードを示す。各セルはそれぞれのメモリデバイス
を有する。しかし、システム全体が2個の4セルノード
を有する場合には、それぞれメモリを有する8個のセル
が利用可能である。これらセルにセル0〜セル7とラベ
ルを付ける場合、メモリを8個すべてのセルにわたって
インタリーブすることができるであろう。図3の行31
0は、どのようにメモリを8個すべてのセルにインタリ
ーブすることができるかを示す。この場合、3ビット指
示子(メモリアドレスのビット6〜8)は、8個のセル
のうちいずれがメモリの物理アドレスを含むかを示す。
したがって、行310は8ウェイインタリーブを示し、
行305は4ウェイインタリーブを示す。 【0024】システムが3セル構成を有する場合、セル
マップは、3ウェイインタリーブを示す図4に示すよう
になる。3個のセルは、セルマップにおいて3行にわた
って効率的にマッピングされる。1行目の1列目は、セ
ル0の値を含む。1行目の2列目は、セル1の値を含
む。1行目の3列目は、セル2の値を含む。このシーケ
ンスは、最後のセルが3行目の最後の列で終わるまで繰
り返される。 【0025】セルマップの行は、マスク、コンパレー
タ、およびメモリアクセスデバイスからのメモリアドレ
スビットの組み合わせを介してセルコントローラによっ
て識別される。マスクを使用して、適切な行の決定に関
係のないアドレスのビットをマスクする。コンパレータ
は、マスクしたアドレス部分を整合値と比較して、セル
マップの対応する行を識別する。 【0026】図5は、シングルキャッシュラインインタ
リーブの場合の64ウェイインタリーブドセルマップエ
ントリを示すブロック図である。図5におけるセルマッ
プエントリは64ウェイインタリーブであるため、メモ
リアドレスの6ビット(たとえば、ビット6〜11)を
エントリへのインデックス付けに使用する。エントリイ
ネーブルブロック510は、入力メモリアドレスのビッ
ト29〜ビット43を含むアドレス部分505を使用し
てセルマップの適切な行を識別する。アドレス範囲は、
行選択に使用するアドレス部分505から決定される。
図5に示すように、エントリイネーブルブロック510
は、以下の式Iを実行する。 【0027】 【数1】 Entry_enable=((ADDR AND MASK)==cmp) 式I 【0028】式Iに示すように、エントリイネーブルブ
ロック510は、アドレス部分505をマスクしてアド
レスの最下位ビットを破棄し、マスクされたアドレスを
その行の比較値または整合値である「cmp」と比較す
る。比較における値が等しい場合、Entry_ena
bleに、マッチする行を示す論理的に真の値が割り当
てられる。値が等しくない場合、Entry_enab
leに、マッチしない行であることを示す偽の論理値が
割り当てられる。 【0029】行が選択されると、メモリアドレスのビッ
ト6〜11を使用して、セルマップのその行内の64個
のエントリ項目の1つを識別し、「CELL」および
「Cell_Addr」が決定され、出力される。「C
ELL」は、セルを一意に識別するセルIDを表し、
「Cell_Addr」はセルアドレスを表し、これに
ついてさらに詳細に後述する。図5に示すように、アド
レス部分515は、アドレスビット6〜11および29
〜42を含み、アドレスビット6〜11および29〜4
2を使用して適切なセルIDおよびセルアドレスを決定
する。アドレス入力520に示すように、さらなる入力
によってさらなるテーブルエントリ項目を選択すること
ができる。図5に示すように、以下の式IIに示すような
比較を行うことによって列が選択される。 【0030】 【数2】 Column_Select=(ADDR[11:6]==0x0) 式II 【0031】式IIからわかるように、メモリアドレスの
ビット6〜11を、列に対応する16進数の値(たとえ
ば、この場合では0x0であり、これは一列目に対応す
る)と比較する。比較している値が等しい場合、Col
umn_Selectは、マッチングを示す真の論理値
を含む。比較している値が等しくない場合、Colum
n_Selectは、マッチングがないことを示す偽の
論理値を含む。 【0032】エントリイネーブルブロック510でのコ
ンパレータおよびマスクの使用について、図6を参照し
てさらに詳細に述べる。図6は、十進数の0〜16を表
す二進数を示す。0〜16の範囲の10進数は4つの異
なるグループ:0〜3を含むグループ605、4〜7を
含むグループ610、8〜11を含むグループ615、
および12〜15を含むグループ620に分けられてい
る。マスクを効果的に使用するために、種々のグループ
を識別する方法が必要である。この場合、最初の2ビッ
ト、すなわち最上位2ビット(最左端の2ビット)を使
用して各種グループを区別することができることがわか
る。グループ605に表示される4つの数はそれぞれ0
0で始まり、グループ610の中の数はそれぞれ01で
始まり、グループ615の中の数はそれぞれ10で始ま
り、グループ620の中の数はそれぞれ11で始まる。
したがって、1100からなるマスクが確立される。重
要な各ビットには「1」を配置し、重要ではない、すな
わち「無関係な」各ビットには「0」を配置する。コン
パレータは、メモリブロックの開始アドレスに等しくセ
ットされる。マスクを使用して、4つのグループ605
〜620のいずれに所望のビットシーケンスが存在する
かを判定する。2つの最上位ビットの比較により、セル
マップ内の特定の行が決定される。 【0033】コンパレータおよびマスクの使用をさらに
説明するため、いくつかの例を考察する。図7を参照す
ると、ノードは4個のセルを含み、セル0は5GBのメ
モリを有し、セル1は3GB、セル2も3GB、またセ
ル3も3GBのメモリを有する。16進数表記では、1
GBは0X000_40000000である。図7のイ
ンタリーブエントリ0は、4個のセルそれぞれから2G
B、総計8GBのメモリを含む。このメモリブロックの
範囲は0GBから最大8GBである。コンパレータは、
0X000_00000000に等しい。マスクの値
は、メモリロケーションが8GBよりも大きいかどうか
を判定するために調べる必要のあるビットを識別するこ
とによって決定される。値が8GBを越えるかどうかを
判定するために調べなければならない各ビット位置に、
「1」を配置する。このため、16進数表記では、マス
クは0Xffe_00000000に等しい。16進数
表記での最下位の8つの数で表されるビットは、メモリ
ロケーションの値が8GBを越えているかどうかの判定
に必要ないため、調べる必要はない。したがってマスク
は、メモリアクセスデバイスの1つからのメモリ値が8
GBを越えるか否かを判定するために調べる必要のある
ビット位置のみを含む。確立されたこのマスクおよびコ
ンパレータを使用すると、0〜8GBの範囲にあるいず
れのアクセスもインタリーブエントリ0しか起動しな
い。対応するセルマップの適切な行内において、セル番
号は0、1、2、3、0、1、2、3として識別され得
る。これは、図3における行305と同様である。この
構成は、セル0〜3の間での4ウェイインタリーブを達
成する。インタリーブエントリ1の場合、ここでも4個
すべてのセルが使用されるが、今度は各セルから1GB
のメモリのみが使用される。この場合、コンパレータ値
は、8GBに等しい0X002_00000000に等
しい。これは、このインタリーブエントリの開始値であ
る。この場合のマスク値は、0Xfff_000000
00である。インタリーブエントリ1が確立されると、
セル0に2GBが残る。 【0034】概して、インタリーブは、まず最大のブロ
ックにわたって行われるため、続いて次のインタリーブ
ブロックのサイズはより小さい。セル0に残っている2
GBは、通常であれば、図7に示す1GBチャンクに分
けられる。しかし、この場合、インタリーブエントリ0
およびインタリーブエントリ1に含まれる12GBは、
セル0に残っている2GBで割り切れる。したがって、
インタリーブエントリ2は、セル0に残っている2GB
のメモリを含むことになり、コンパレータ値は12GB
である0X003_00000000になり、マスク値
は0Xfff_80000000になる。 【0035】最後の例として、図8に示すように、ノー
ドが3個のセルを含み、各セルが2GBのメモリを含む
場合、インタリーブは以下のように行われる。インタリ
ーブエントリ0の場合、コンパレータは0X000_0
0000000、すなわち0GBである。マスクは0X
fff_80000000である。これにより、セル0
の最初のGBおよびセル1の最初のGBの間でインタリ
ーブすることができるようになる。この場合の行エント
リは、0の後に1が続き、行の全長にわたりこれが交互
になったものからなる。これは、ここでもセル0から1
GBおよびセル1から1GBというメモリの最初の2G
Bにわたり2ウェイでインタリーブする。 【0036】インタリーブエントリ1の場合、コンパレ
ータ値は0X000_80000000であり、これは
すなわち2GBに等しい。この場合のマスク値は、0X
fff_80000000である。対応するセルマップ
行は、行の全長にわたって1と2が交互になったもので
あり、これにより、セル1からの2番目のGBおよびセ
ル2からの最初のGBにわたり2ウェイインタリーブす
ることができる。 【0037】インタリーブエントリ2は、0X001_
00000000のコンパレータ値を有し、これは4G
Bに等しい。マスク値は、0Xfff_8000000
0である。このインタリーブエントリのセルマップ内の
対応する行は、行の全長にわたって2と0が交互になっ
たものである。このインタリーブエントリは、セル2お
よびセル0にわたり2ウェイでインタリーブし、最後の
2GBのメモリを含む。 【0038】一実施形態では、セルコントローラは、セ
ルIDだけの場合よりも、より多くの情報をセルマップ
エントリ項目から取得する。たとえば、セルコントロー
ラをセル0に送る(direct)いくつかのセルマップエン
トリ項目がありうる。セル0に含まれるメモリは、様々
なインタリーブエントリに分けられている場合がある。
一実施形態では、セルマップエントリ項目は、セル0の
メモリ内のどこに要求される情報が格納されているかの
指示もセルコントローラに供給する。本発明の一形態で
は、CELL_ADDRすなわちセルアドレスを使用し
て、セルコントローラを特定のメモリアクセスのために
セルメモリ内の特定の512メガバイト(MB)領域に
送る。セルアドレス式の一実施形態を以下の式IIIで提
供する。 【0039】 【数3】 CELL_ADDR=((ADDR[42:29]&CHUNK_MASK)>> インタリーブ+CHUNK_START 式III 【0040】アドレスビット29〜42は、特定のセル
内のどこからデータの読み出しを開始するかを決定する
際に使用される。式IIIに含まれるCHUNK_MAS
Kは、先に考察したマスクの逆(inverse:インバー
ス)である。CHUNK_MASKの目的は、セルコン
トローラをメモリブロックの正確な部分に導くことであ
る。マスクしたアドレス部分は右シフト(記号「>>」
で表される)され、インタリーブに使用されていたビッ
トを削除する(式IIIでは「インタリーブ」と表され
る)。セルマップテーブルが8列を含む場合、3つのイ
ンタリーブビットが列の識別に使用される。セルマップ
が16列を有する場合、列の識別に4ビットが使用され
る。 【0041】CHUNK_STARTは、他のインタリ
ーブエントリ専用の、または他のインタリーブエントリ
によって以前使用されていたメモリの量である。たとえ
ば、再び図2のインタリーブエントリ1を参照すると、
インタリーブエントリ1は、インタリーブエントリ0が
4個のセルそれぞれから2GBを占めた後に来た。した
がって、セル0の2番目の2GB部分がアドレス指定さ
れている場合、CHUNK_STARTはインタリーブ
エントリ0に含まれた2GBである。あるいは、引き続
き図2を参照すると、セル0における2GBおよびセル
1における2GBを含むインタリーブエントリ5は、セ
ル0およびセル1の双方における4GBのCHUNK_
STARTを有する。要約すると、CELL_ADDR
式は、メモリアクセスデバイスからのアドレスビットを
使用し、所与のブロック内の特定のメモリロケーション
に到達するようにするオフセットに等しいメモリ量を追
加し、右シフトしてインタリーブにすでに使用しており
ブロック内のロケーションを決定するためにもはや必要
のないビットを削除し、他のインタリーブエントリ内の
インタリーブにあてられていたセルメモリを追加する。 【0042】図9は、セルマップ900の一実施形態の
図である。セルマップ900は、複数のエントリ904
をそれぞれ含むモジュールIDテーブル912およびチ
ャンク開始テーブル914を含む。各エントリ904は
複数のエントリ項目910を含む。代替の実施形態で
は、モジュールID情報およびチャンク開始情報を単一
テーブルに組み込むことができる。別の代替実施形態で
は、セルマップ900はチャンク開始テーブル914を
含まない。各エントリ904におけるエントリ項目91
0中の数は、インタリーブのウェイ数に基づく。たとえ
ば、16ウェイインタリーブの場合、モジュールIDテ
ーブル912およびチャンク開始テーブル914はそれ
ぞれ、エントリ904毎に少なくとも16個のエントリ
項目910をそれぞれ含むことになる(図9に示すよう
に)。また、64ウェイインタリーブの場合、モジュー
ルIDテーブル912およびチャンク開始テーブル91
4はそれぞれ、エントリ904毎に少なくとも64個の
エントリ項目910を含むことになる。一実施形態で
は、モジュールIDテーブル912における各エントリ
項目910は、宛先モジュール識別のために8ビットモ
ジュールID値を含み、チャンク開始テーブル914に
おける各エントリ項目910は、メモリロケーションの
識別に使用されるチャンク開始値を含む。受信した各入
力アドレス902に基づき、後述するように、適切なモ
ジュールID値916およびチャンク開始値918が識
別され、セルマップ900から出力される。 【0043】以下の表1は、セルマップベースシステム
の一実施形態を実施する擬似コードを含む。 【0044】 【表1】 【0045】上記表1の場合、以下の仮定を行う。すな
わち、アドレスサイズの実施は50ビット(すなわち、
ビット0〜49)である;各エントリ904は16ウェ
イインタリーブされる(したがって、エントリ904内
でのインデックス付けのために4ビットが必要であ
る);システムはシングルキャッシュラインインタリー
ブを実行している;キャッシュラインサイズは64バイ
トである(よって、アドレスビット6〜9がエントリ9
04内のインデックス付けに使用される);おおよそ3
2〜64のエントリ904が各プロセッサインタフェー
スに設けられる;かつ、最小アドレス指定可能メモリは
1/2GBである(よって、アドレスマスク(Addr
ess Mask)はビット29〜49を使用する)。 【0046】上記仮定は一例のシステムに基づき、かつ
特定の実施に基づいて変更を行いうることが理解されよ
う。たとえば、キャッシュラインサイズが64バイトで
はなく128バイトである場合には、入力アドレス90
2のビット7〜10がエントリ904内のインデックス
付けに使用される。キャッシュラインサイズが256バ
イトである場合は、入力アドレス902のビット8〜1
1がエントリ904内のインデックス付けに使用され
る。キャッシュラインサイズが倍になるごとに、4つの
インデックス付けビットがそれぞれ左に1ビット位置分
シフトする。別の例では、最小アドレス指定可能メモリ
が1/2GBではなく64メガバイト(MB)である場
合、アドレスマスク(Address Mask)は、
ビット29〜49ではなくビット24〜49を使用す
る。種々のキャッシュラインサイズおよび異なる最小ア
ドレス指定可能メモリサイズの他に、種々のアドレスサ
イズ、シングルキャッシュラインインタリーブではなく
マルチキャッシュラインインタリーブ、およびインタリ
ーブの種々のウェイ数を含むがこれらに限定されない他
の変更を行うこともできる。 【0047】表1に列挙される最初の項目はIncom
ing_Address[49:0]であり、これは入
力アドレス902として図9に表される。一実施形態で
は、入力アドレス902はプロセッサアドレスであり、
0〜49の番号が付けられた50ビットを含む。入力ア
ドレス902は、第1のアドレス部分902A、第2の
アドレス部分902B、および第3のアドレス部分90
2Cを含む。 【0048】表1に列挙される2番目の項目は、Add
ress Match[49:29]である。一実施形
態では、セルマップ900における各エントリ904
は、Address Match[49:29]の特定
の値に関連付けられる。 【0049】表1に列挙する3番目の項目は、Addr
ess Mask[49:29]である。Addres
s Mask[49:29]は、入力アドレス902か
ら関連するビットを抽出するためにセルコントローラ
(たとえば、セルコントローラ175)により使用され
る。一実施形態では、入力アドレス902のビット29
〜49は第1のアドレス部分902Aと呼ばれる。セル
コントローラ175は、マスクされた第1のアドレス部
分902Aを、Address Match値と比較し
てマッチするエントリ904を識別する。 【0050】モジュールIDテーブル912におけるエ
ントリ904は、表1に列挙される4番目の項目で表さ
れ、この項目はModule_id_table_in
_entry[エントリにおけるインタリーブのMax
_waysBits_per_module_id]
である。Module_id_table_in_en
tryの括弧内の値は、モジュールIDテーブル912
におけるエントリ904のビットサイズを表す。各モジ
ュールIDに8ビットを使用し(すなわち、Bits_
per_module_id=8)、かつエントリ90
4が16ウェイインタリーブされる(すなわち、エント
リにおけるインタリーブのMax_Ways=16)と
仮定すると、モジュールIDテーブル912の各エント
リ904に必要なビット数は128(すなわち、8×1
6)になる。64ウェイインタリーブエントリ904の
場合、モジュールIDテーブルエントリ904のサイズ
は512ビット(すなわち、64×8)になる。モジュ
ールIDにつき8ビットを使用すると、256個のモジ
ュールを一意に識別することができる。特定の実施に応
じて、モジュールIDにつき他のビット数を使用しても
よい。 【0051】チャンク開始テーブル914のエントリ9
04は、表1に列挙される5番目の項目で表され、この
項目はChunk_start_table_in_e
ntry[エントリにおけるインタリーブのMax_W
ays0.5GBのチャンクすべてをアドレス指定す
るために必要なビット数]である。Chunk_sta
rt_table_in_entryの括弧内の値は、
チャンク開始テーブル914におけるエントリ904の
ビットサイズを表す。すべての1/2GBチャンクをア
ドレス指定するために8ビットが使用され、かつエント
リ904が16ウェイインタリーブされる(すなわち、
エントリにおけるインタリーブのMax_ways=1
6)と仮定すると、チャンク開始テーブル914の各エ
ントリ904に必要なビット数は128(すなわち、8
×16)になる。64ウェイインタリーブエントリ90
4の場合、チャンク開始テーブルエントリ904のサイ
ズは512ビット(すなわち、64×8)になる。 【0052】表1に列挙される6番目の項目は、Hit
_for_that_entry=((Incomin
g_Address[49:29]]&Address
Mask[49:29])==Address Ma
tch[49:29])である。一実施形態では、セル
マップ900における各エントリ904は、Addre
ss Match[49:29]の特定の値に関連付け
られ、表1に列挙される6番目の項目のようなヒット式
が、ヒットが識別されるまで、セルマップ900におけ
る各エントリ904について実行される。変数Hit_
for_that_entryは、(Incoming
_Address[49:29]]&Address
Mask[49:29])とAddress Matc
h[49:29]の比較に応じて、真の論理値かあるい
は偽の論理値のいずれかを含むことになる。(Inco
ming_Address[49:29]]&Addr
ess Mask[49:29])の値とAddres
s Match[49:29]の値が等しくない場合、
Hit_for_that_entryは、偽の論理値
になり、マッチしないエントリであることを示す。(I
ncoming_Address[49:29]]&A
ddress Mask[49:29])の値とAdd
ress Match[49:29]の値が等しい場
合、Hit_for_that_entryは、真の論
理値になり、マッチするエントリであることを示す。 【0053】モジュールIDテーブル912の各エント
リ904の場合、チャンク開始テーブル914に対応す
るエントリ904がある。ヒットがエントリ904に対
して生成される場合、モジュールIDテーブルエントリ
からのモジュールID値916が出力され、対応するチ
ャンク開始テーブルエントリからチャンク開始番号91
8が出力される。一実施形態では、チャンク開始番号9
18は、モジュールID値916によって識別されるメ
モリ内のメモリロケーションを識別するための1/2G
Bの倍数である。エントリ904内の適切なモジュール
ID値916およびチャンク開始番号918を識別する
ための式は、表1の7番目および8番目の項目に列挙さ
れる。 【0054】表1に列挙される7番目の項目は、Phy
sical_destination_module=
Module_id_table_in_entry
[Incoming_Address[9:6]]であ
る。この項目が示すように、入力アドレス902のビッ
ト6〜9を使用して、モジュールIDテーブル912で
マッチするエントリ904における16個のエントリ項
目910の1つを識別する。一実施形態では、入力アド
レス902のビット6〜9は第3のアドレス部分902
Cと呼ばれる。識別されたエントリ項目910からのモ
ジュールID値は、変数Physical_desti
nation_moduleに格納される。64ウェイ
インタリーブエントリ904を有するモジュールIDテ
ーブル912の場合、モジュールIDテーブルエントリ
904にインデックスを付ける式は、Physical
_destination_module=Modul
e_id_table_in_entry[Incom
ing_Address[11:6]]である。この場
合、第3のアドレス部分902Cはアドレスビット6〜
11を含み、これらのアドレスビットを使用してモジュ
ールIDテーブルエントリ904にインデックスを付け
る。 【0055】表1に列挙される8番目の項目は、Chu
nk_start=Chunk_start_tabl
e_in_entry[Incoming_Addre
ss[9:6]]である。この項目が示すように、入力
アドレス902の第3のアドレス部分902Cを使用し
て、チャンク開始テーブル914でマッチするエントリ
904における16個のエントリ項目910の1つを識
別する。識別されたエントリ項目910からのチャンク
開始番号が変数chunk_startに格納される。
64ウェイインタリーブエントリ904を有するチャン
ク開始テーブル914の場合には、チャンク開始テーブ
ルエントリ904にインデックスを付けるための式は、
Chunk_start=Chunk_start_t
able_in_entry[Incoming_Ad
dress[11:6]]である。この場合、第3のア
ドレス部分902Cはアドレスビット6〜11を含み、
これらのアドレスビットをチャンク開始テーブルエント
リ904へのインデックス付けに使用する。上述したよ
うに、一実施形態では、特定のメモリロケーションを識
別するために、チャンク開始値をセルアドレス式(たと
えば、式III)で使用する。 【0056】セルマップ900等のセルマップを使用し
てI/O仮想化を達成するため、メモリに使用されるエ
ントリ904とI/Oに使用されるエントリ904とを
区別する機構が設けられる。また、I/Oタイプエント
リ904の場合、モジュールIDテーブル912へのイ
ンデックス付けに使用する種々のアドレスビットの組の
選択に複数のオプションを提供することができる。した
がって、メモリタイプエントリとI/Oタイプエントリ
とを区別するために、かつI/Oに追加のインデックス
オプションを提供するために、追加の状態がセルマップ
900に設けられる。一実施形態では、セルマップ90
0がチャンク開始テーブル914を含む場合、メモリタ
イプエントリ904のみが関連するエントリをチャンク
開始テーブル914に含み、チャンク番号はI/Oタイ
プエントリ904で使用されない。 【0057】一実施形態では、セルマップ900におけ
るエントリ904は、1ビットのエントリタイプ識別子
906を含む。本発明の一形態では、エントリタイプ識
別子906の値が0である場合、エントリ904はメモ
リタイプエントリであり、エントリタイプ識別子906
の値が1の場合、エントリ904はI/Oタイプエント
リである。また、一実施形態では、エントリ904は2
ビットのインデックス選択識別子908を含む。インデ
ックス選択識別子908の2ビットは、可能な4つの異
なる値を提供し、これらの値を使用して、I/Oテーブ
ルエントリ904についてモジュールIDテーブル91
2にインデックスを付けるためのアドレスビットの組を
選択する。 【0058】セルマップ900におけるメモリタイプエ
ントリ904の場合、ヒットロジック、モジュールID
識別、およびチャンク開始番号識別は、上述したものと
同じである。具体的には、表1の6番目の項目に示すよ
うに、Hit_for_that_entry=((I
ncoming_Address[49:29]]&A
ddress Mask[49:29])==Addr
ess Match[49:29])である。よって、
入力アドレス902のビット29〜49(すなわち、第
1のアドレス部分902A)を使用して、セルマップ9
00におけるマッチするエントリ904を識別する。ま
た、表1の7番目および8番目の項目に示すように、入
力アドレス902のビット6〜9(すなわち、第3のア
ドレス部分902C)を使用して、モジュールIDテー
ブル912におけるメモリタイプエントリ904および
チャンク開始テーブル914におけるチャンク開始エン
トリ904にインデックスを付ける。 【0059】一実施形態では、I/Oタイプエントリ9
04の場合、ヒットロジックはメモリタイプエントリ9
04の場合に使用したものと同じであるが、より少ない
数のアドレスビットが比較される。本発明の一形態で
は、これは、AddressMatchレジスタおよび
Address Maskレジスタにおいてより多くの
ビットをマスクすることによって達成される。また、I
/Oタイプエントリ904の場合、モジュールIDテー
ブル912へのインデックスは、メモリタイプエントリ
904の場合とは別様に選択される。第2のアドレス部
分902Bと呼ぶ、I/Oタイプエントリ904にイン
デックスを付けるために使用される入力アドレスビット
の組は、そのエントリ904のインデックス選択識別子
908に基づいて選択される。以下の表2は、本発明の
一実施形態によるインデックス選択識別子908の値お
よびインデックス付けに使用される対応する入力アドレ
スビットを示す。 【0060】 【表2】 【0061】ヒットが決定された(すなわち、セルマッ
プ900におけるエントリ904が第1のアドレス部分
902に基づいて識別された)後、識別されたエントリ
904内の特定のエントリ項目910がインデックス値
に基づいて選択される。以下の表3は、本発明の一実施
形態によるモジュールIDテーブル912におけるエン
トリ904にインデックスを付けるための擬似コードを
含む。 【0062】 【表3】 【0063】最初の「switch」コードセグメント
は、マッチするエントリ904についてインデックス選
択識別子908の値に基づいてindex_modul
e_table_ioに値を割り当てる。次に、入力ア
ドレスのビット6〜9(すなわち、第3のアドレス部分
902C)に基づいてindex_module_ta
ble_memに値を割り当てる。2番目の「swit
ch」コードセグメントは、マッチするエントリ904
のエントリタイプ906に基づいてindex_mod
ule_tableに値を割り当てる。エントリ904
がメモリ(MEM)タイプエントリである場合、ind
ex_module_tableにはindex_mo
dule_table_memの値が割り当てられる。
エントリがI/Oタイプエントリである場合、inde
x_module_tableにはindex_mod
ule_table_ioの値が割り当てられる。最後
に、index_module_tableに割り当て
られた値を、マッチするエントリ904(すなわち、M
odule_id_table_in_entry)の
インデックスとして使用して、エントリ904における
16個のエントリ項目910の1つを識別する。識別さ
れたエントリ項目904は、変数「Physical
Destination Module」に割り当てら
れるモジュールを識別するための識別情報を含む。メモ
リタイプエントリ904の場合、対応するエントリ90
4からのチャンク開始値およびチャンク開始テーブル9
14におけるエントリ項目910もまた上述のように識
別される。 【0064】よって、セルマップエントリ904のタイ
プに応じて、適切なモジュール情報が抽出および使用さ
れる。代替の実施形態では、複数のエントリ904を連
結して、より多数のモジュールを仮想化することができ
る。 【0065】本発明の一実施形態は、セルマップ900
を使用してI/Oモジュール170の仮想化およびメモ
リインタリーブを提供する。本発明の一形態では、I/
Oモジュール170は、周辺コンポーネント相互接続
(PCI)デバイス等の複数のI/Oカードまたはデバ
イスを制御するようにそれぞれ構成されたI/Oコント
ローラである。したがって、入力アドレス902が第1
のI/Oモジュールに向けられ、かつセルマップ900
を使用してアクセスを第2のI/Oモジュールにリダイ
レクトされる場合、第2のI/Oモジュール下のI/O
デバイスは、ソフトウェアからは第1のI/Oモジュー
ル下のI/Oデバイスと同じように見えるはずである。
代替の実施形態では、仮想化をI/Oカードまたはデバ
イスのレベルにまで拡張することができる。 【0066】本発明の一形態は、同じセルマップインフ
ラストラクチャをメモリインタリーブおよびI/O仮想
化の双方に使用することにより、メモリインタリーブ化
およびI/O仮想化に別個の構造を設計する必要性をな
くす。本発明の一実施形態では、仮想化することのでき
るモジュールの数に制限がない。本発明の一形態は、ソ
フトウェア介入なしで、または最小限のサポートでI/
Oモジュール170を変更可能なシステムを構築できる
ようにする。一実施形態では、本発明は、I/Oの仮想
化において、従来提供されているシステムよりも高い柔
軟性を提供する。また、本発明の一形態では、単一のセ
ルマップエントリ904を使用して複数のI/Oモジュ
ール170を仮想化することができ、またセルマップエ
ントリ904をメモリ目的とI/O目的とで交換して使
用することができる。この発明は、例として次のような
実施形態を含む。 【0067】(1) 連続した論理アドレス空間を使用
して、複数のメモリ(130、135、140、14
5)にインタリーブ方式でアクセスし、複数の入出力モ
ジュール(170)にアクセスする方法であって、複数
のエントリ(904)を含む少なくとも1つのマップテ
ーブル(900)を設けることであって、前記エントリ
(904)はそれぞれエントリタイプ識別子(906)
および複数のエントリ項目(910)を含み、前記エン
トリ項目(910)はそれぞれモジュール識別子を含
み、前記エントリ(904)はそれぞれメモリタイプエ
ントリおよび入出力タイプエントリの一方であり、複数
のアドレスビット(902A〜902C)を含む第1の
論理アドレス(902)を受信することと、前記アドレ
スビットの第1の組に基づいて、前記少なくとも1つの
マップテーブルにおけるエントリを識別することと、前
記識別されたエントリの前記エントリタイプ識別子に基
づいて、前記識別されたエントリのタイプを決定するこ
とと、前記エントリタイプ識別子が入出力タイプエント
リを示す場合、前記アドレスビットの第2の組に基づい
て前記識別されたエントリにおけるエントリ項目を識別
することと、前記エントリタイプ識別子がメモリタイプ
エントリを示す場合、前記アドレスビットの第3の組に
基づいて前記識別されたエントリにおけるエントリ項目
を識別することと、前記識別されたエントリ項目の前記
モジュール識別子によって識別されたモジュールにアク
セスすることとを含む方法。 【0068】(2) 前記少なくとも1つのマップテー
ブルにおける各入出力タイプエントリは、インデックス
選択識別子(908)をさらに含み、前記識別されたエ
ントリの前記インデックス選択識別子に基づいて、前記
第2のアドレスビットの組に使用するアドレスビットを
識別することをさらに含む(1)記載の方法。 【0069】(3) 前記インデックス選択識別子はそ
れぞれ、複数のインデックス値の1つであり、前記イン
デックス値はそれぞれアドレスブロックサイズに対応す
る(2)記載の方法。 【0070】(4) 前記第1のアドレスビットの組
は、前記第2のアドレスビットの組よりも上位のビット
を含み、前記第2のアドレスビットの組は、前記第3の
アドレスビットの組よりも上位のビットを含む(1)記
載の方法。 【0071】(5) 前記少なくとも1つのマップテー
ブルに複数のメモリオフセット値(914)を格納する
ことと、前記第1の論理アドレスに基づいて前記メモリ
オフセット値(914)の1つを識別することとをさら
に含み、前記エントリタイプ識別子がメモリタイプエン
トリを示す場合、前記識別されたエントリ項目の前記モ
ジュール識別子によって識別される前記モジュールは、
前記識別されたメモリオフセット値に少なくとも部分的
に基づいてメモリロケーションにおいてアクセスされる
(1)記載の方法。 【0072】(6) マルチビットマスク値を設けるこ
とと、複数のマルチビット整合値を設けることと、前記
マルチビットマスク値を使用して前記第1の論理アドレ
スから前記第1のアドレスビットの組を抽出すること
と、該抽出された第1のアドレスビットの組を前記複数
のマルチビット整合値と比較してマッチングを識別する
こととをさらに含む(1)記載の方法。 【0073】(7) 前記メモリはそれぞれ少なくとも
1つのメモリセグメントを含み、前記メモリセグメント
はグループに編成され、各グループの前記メモリセグメ
ントは均等なサイズを有し、また前記少なくとも1つの
マップテーブルにおける各メモリタイプエントリは、前
記メモリセグメントグループの1つに対応する(1)記
載の方法。 【0074】(8) 連続した論理アドレス空間を複数
のモジュールにマッピングする方法であって、前記複数
のモジュールはメモリ(130、135、140、14
5)および入出力モジュール(170)を含み、前記論
理アドレス空間における各論理アドレス(902)は第
1、第2、および第3のアドレス部分(902A〜90
2C)を含み、複数のエントリ(904)を含むマップ
テーブル(900)を設けることであって、前記エント
リ(904)はそれぞれエントリタイプ識別子(90
6)および複数のエントリ項目(910)を含み、前記
エントリ(904)はそれぞれメモリタイプエントリお
よび入出力タイプエントリの一方であり、前記各エント
リ項目(910)は前記複数のモジュールの1つを識別
するモジュール識別子を含み、論理アドレスの組を前記
エントリのそれぞれに関連付けることであって、個々の
エントリそれぞれに関連付けられる前記論理アドレスの
組は、前記第1のアドレス部分について共通する値を含
み、前記第1のアドレス部分についての前記共通の値は
前記エントリそれぞれごとに異なり、前記エントリに関
連する前記論理アドレスの組の前記第2および前記第3
のアドレス部分に基づいて各エントリ内のエントリ項目
にインデックスを付けることであって、インデックス付
けに使用される前記アドレス部分の選択は、前記エント
リの前記エントリタイプ識別子に基づく、を含む方法。 【0075】(9) 連続した論理アドレス空間を使用
して複数のモジュールへのアクセスを提供するシステム
(100)であって、前記モジュールはメモリ(13
0、135、140、145)および入出力モジュール
(170)を含み、複数のエントリ(904)を含む少
なくとも1つのマップテーブル(900)であって、前
記エントリ(904)はそれぞれエントリタイプ識別子
(906)および複数のエントリ項目(910)を含
み、前記エントリ(904)はそれぞれメモリタイプエ
ントリおよび入出力タイプエントリの一方であり、前記
エントリ項目(910)はそれぞれ複数のモジュールの
1つを識別する、少なくとも1つのマップテーブル(9
00)と、論理アドレスを受信するコントローラ(17
5)であって、受信した論理アドレス(902)の第1
の部分に基づいて前記少なくとも1つのマップテーブル
におけるエントリを識別し、該識別されたエントリの前
記エントリタイプ識別子および前記受信した論理アドレ
スの第2の部分に基づいて前記識別されたエントリにお
けるエントリ項目を選択し、該選択されたエントリ項目
によって識別されるモジュールに基づいてモジュール識
別情報を出力するように構成されるコントローラ(17
5)とを備えるシステム。 【0076】(10) 前記第2の部分のロケーション
は、前記識別されたエントリのタイプに基づいて、前記
受信した論理アドレス内で変化する(9)記載のシステ
ム。 【0077】好ましい実施形態の説明を目的として、本
発明の特定の実施形態を本明細書に図示し説明したが、
本発明の範囲から逸脱することなく図示し説明した特定
の実施形態を多種多様な代替および/または同等の実施
で置き換えてもよいことが当業者には理解されよう。化
学、機械、電気機械、電気、およびコンピュータの分野
における当業者は、本発明が非常に広範囲の実施形態に
おいて実施されうることをたやすく理解しよう。本願
は、本明細書に述べた好ましい実施形態のあらゆる改変
または変形を網羅するものである。したがって、本発明
は特許請求の範囲およびその等価物によってのみ制限さ
れるものと明らかに意図される。
【図面の簡単な説明】 【図1】4個のセルおよび1個のクロスバーを含むノー
ドを示すブロック図である。 【図2】メモリが4個のセルに分散する分散メモリシス
テムを示すブロック図である。 【図3】4ウェイインタリーブおよび8ウェイインタリ
ーブを示すテーブルである。 【図4】3ウェイインタリーブを示すテーブルである。 【図5】シングルキャッシュラインインタリーブの64
ウェイインタリーブドセルマップエントリを示すブロッ
ク図である。 【図6】インタリーブグループの間での顕著な特徴を識
別するチャートである。 【図7】2のべき乗ではないメモリ量を含むセルにわた
るインタリーブのブロック図である。 【図8】3個のセルにわたるインタリーブのブロック図
である。 【図9】本発明の一実施形態によるメモリインタリーブ
およびI/O仮想化を提供するセルマップの図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 デベンドラ・ダス・シャーマ アメリカ合衆国95050カリフォルニア州サ ンタ・クララ、アカシア・コート 2043 Fターム(参考) 5B014 FA01 HB28 5B045 BB16 BB28 BB29 DD01 DD10 5B060 AB26 AC10 HA01 MM01

Claims (1)

  1. 【特許請求の範囲】 【請求項1】 連続した論理アドレス空間を使用して、
    複数のメモリにインタリーブ方式でアクセスし、複数の
    入出力モジュールにアクセスする方法であって、 複数のエントリを含む少なくとも1つのマップテーブル
    を設けることであって、前記エントリはそれぞれエント
    リタイプ識別子および複数のエントリ項目を含み、前記
    エントリ項目はそれぞれモジュール識別子を含み、前記
    エントリはそれぞれメモリタイプエントリおよび入出力
    タイプエントリの一方であり、 複数のアドレスビットを含む第1の論理アドレスを受信
    することと、 前記アドレスビットの第1の組に基づいて、前記少なく
    とも1つのマップテーブルにおけるエントリを識別する
    ことと、 前記識別されたエントリの前記エントリタイプ識別子に
    基づいて、前記識別されたエントリのタイプを決定する
    ことと、 前記エントリタイプ識別子が入出力タイプエントリを示
    す場合、前記アドレスビットの第2の組に基づいて前記
    識別されたエントリにおけるエントリ項目を識別するこ
    とと、 前記エントリタイプ識別子がメモリタイプエントリを示
    す場合、前記アドレスビットの第3の組に基づいて前記
    識別されたエントリにおけるエントリ項目を識別するこ
    とと、 前記識別されたエントリ項目の前記モジュール識別子に
    よって識別されたモジュールにアクセスすることと、を
    含む方法。
JP2003043570A 2002-02-22 2003-02-21 マップテーブルを使用して入出力モジュールにアクセスする方法 Expired - Fee Related JP4445708B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/080,739 2002-02-22
US10/080,739 US6807603B2 (en) 2002-02-22 2002-02-22 System and method for input/output module virtualization and memory interleaving using cell map

Publications (3)

Publication Number Publication Date
JP2003280984A true JP2003280984A (ja) 2003-10-03
JP2003280984A5 JP2003280984A5 (ja) 2006-04-06
JP4445708B2 JP4445708B2 (ja) 2010-04-07

Family

ID=27752849

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003043570A Expired - Fee Related JP4445708B2 (ja) 2002-02-22 2003-02-21 マップテーブルを使用して入出力モジュールにアクセスする方法

Country Status (2)

Country Link
US (1) US6807603B2 (ja)
JP (1) JP4445708B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060015589A1 (en) * 2004-07-16 2006-01-19 Ang Boon S Generating a service configuration
US20060015772A1 (en) * 2004-07-16 2006-01-19 Ang Boon S Reconfigurable memory system
EP1825433A4 (en) * 2004-11-23 2010-01-06 Efficient Memory Technology METHOD AND APPARATUS FOR MULTIPLE INTERLAYING ADDRESSING INTERLACES OF PAGINATED MEMORIES AND INTELLIGENT MEMORY BANKS
US8190809B2 (en) * 2004-11-23 2012-05-29 Efficient Memory Technology Shunted interleave for accessing plural memory banks, particularly those having partially accessed cells containing data for cache lines
US20130232304A1 (en) * 2012-03-05 2013-09-05 Qualcomm Incorporated Accelerated interleaved memory data transfers in microprocessor-based systems, and related devices, methods, and computer-readable media
US10140223B2 (en) * 2016-06-27 2018-11-27 Qualcomm Incorporated System and method for odd modulus memory channel interleaving
US11562101B2 (en) * 2017-11-13 2023-01-24 Intel Corporation On-device bitstream validation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293607A (en) 1991-04-03 1994-03-08 Hewlett-Packard Company Flexible N-way memory interleaving
US5530837A (en) 1994-03-28 1996-06-25 Hewlett-Packard Co. Methods and apparatus for interleaving memory transactions into an arbitrary number of banks
US5655113A (en) * 1994-07-05 1997-08-05 Monolithic System Technology, Inc. Resynchronization circuit for a memory system and method of operating same
EP0931290A1 (en) 1997-03-21 1999-07-28 International Business Machines Corporation Address mapping for system memory
EP1050819A1 (en) 1999-05-03 2000-11-08 Sgs Thomson Microelectronics Sa Computer memory access
US6526459B1 (en) * 1999-11-10 2003-02-25 Ati International Srl Allocation of input/output bus address space to native input/output devices
US6480943B1 (en) 2000-04-29 2002-11-12 Hewlett-Packard Company Memory address interleaving and offset bits for cell interleaving of memory

Also Published As

Publication number Publication date
JP4445708B2 (ja) 2010-04-07
US6807603B2 (en) 2004-10-19
US20030163657A1 (en) 2003-08-28

Similar Documents

Publication Publication Date Title
US6754776B2 (en) Method and system for logical partitioning of cache memory structures in a partitoned computer system
JP4348093B2 (ja) マップテーブルを用いてメモリにインタリーブ方式でアクセスする方法
KR910001736B1 (ko) 멀티프로세싱 시스템
JP4006436B2 (ja) 種々のキャッシュ・レベルにおける連想セットの重畳一致グループを有するマルチレベル・キャッシュ
JP3640978B2 (ja) ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置
US5123101A (en) Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss
US7330958B2 (en) Method and apparatus for translating a virtual address to a real address using blocks of contiguous page table entries
US5230045A (en) Multiple address space system including address translator for receiving virtual addresses from bus and providing real addresses on the bus
US6493812B1 (en) Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache
US20070094450A1 (en) Multi-level cache architecture having a selective victim cache
TWI273431B (en) Apparatus for the plurality of hosts to share a collection of memory sectors, and method and program storage device for managing memory sectors used by a host
JPH11232173A (ja) ローカルメモリに組み込んでいるリモートキャッシュとcc−NUMA(キャッシュ整合型の不均一メモリアクセス)アーキテクチュアを有するデータ処理システム
US8751751B2 (en) Method and apparatus for minimizing cache conflict misses
US6480943B1 (en) Memory address interleaving and offset bits for cell interleaving of memory
WO2000017780A1 (en) Methods for searching a knowledge base
JP2003280984A (ja) マップテーブルを使用して入出力モジュールにアクセスする方法
CN113377689B (zh) 一种路由表项查找、存储方法及网络芯片
JP4240610B2 (ja) 計算機システム
JP2008512758A (ja) 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法
JP2006510992A (ja) ライン幅を選択的に変更することが可能なメモリ
US6185554B1 (en) Methods for searching a knowledge base
US7133997B2 (en) Configurable cache
JP3672822B2 (ja) 知識ベースのサーチ方法
CN113986780A (zh) 一种自由映射方法、装置、存储介质及电子设备
JPH07152710A (ja) マルチプロセサシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060203

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090402

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100105

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100118

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130122

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130122

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130122

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130122

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350