JP3849951B2 - 主記憶共有型マルチプロセッサ - Google Patents

主記憶共有型マルチプロセッサ Download PDF

Info

Publication number
JP3849951B2
JP3849951B2 JP05991497A JP5991497A JP3849951B2 JP 3849951 B2 JP3849951 B2 JP 3849951B2 JP 05991497 A JP05991497 A JP 05991497A JP 5991497 A JP5991497 A JP 5991497A JP 3849951 B2 JP3849951 B2 JP 3849951B2
Authority
JP
Japan
Prior art keywords
command
node
main memory
circuit
address
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.)
Expired - Fee Related
Application number
JP05991497A
Other languages
English (en)
Other versions
JPH10240707A (ja
Inventor
俊明 垂井
宏一 岡澤
康行 岡田
亨 庄内
俊夫 大河内
英也 明石
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP05991497A priority Critical patent/JP3849951B2/ja
Priority to US09/030,957 priority patent/US6088770A/en
Publication of JPH10240707A publication Critical patent/JPH10240707A/ja
Priority to US09/506,810 priority patent/US6546471B1/en
Application granted granted Critical
Publication of JP3849951B2 publication Critical patent/JP3849951B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0826Limited pointers directories; State-only directories without pointers
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は情報処理装置、特に、パーソナルコンピュータ(PC)、ワークステーション(WS)、サーバ機等に用いられる主記憶共有型の並列計算機システムに係り、特に、主記憶の制御方式に関する。
【0002】
【従来の技術】
近年PC,WSの上位機種及びサーバ機などでは、主記憶共有型のマルチプロセッサ(SMP)構成が広まっており、性能を向上させるために、20〜30台以上の多数台のプロセッサの間で主記憶を共有することが重要な課題になってきている。
主記憶共有型のマルチプロセッサの構成方法として広く使われている方式として共有バスがあるが、バスではバスのスループットがネックになるため、接続可能なプロセッサの数は高々8台程度である。従って、多数台のプロセッサを接続する方式としては適さない。
【0003】
現在行われている、多数台のプロセッサを接続する主記憶共有マルチプロセッサの構成方法には、大きく2つの方式がある。
その一つに、クロスバスイッチによる構成があり、例えば、「進化したシステム・アーキテクチャ」(SunWorld誌1996年1月号第29頁〜第32頁)に開示されている。
この方式では、プロセッサと主記憶を持つ各ボードを、高速なクロスバスイッチで接続し、プロセッサ間のキャッシュ一貫性を保持する。
この方式では、キャッシュ一貫性の保持が高速にできるという利点が有る。
しかし、キャッシュの一貫性を保持するためのトランザクションが全プロセッサにブロードキャストされるため、クロスバスイッチにかかるトラフィックが非常に高く、性能的に隘路になるとともに、高速なスイッチが必要になるためコスト高を招くという欠点がある。
さらに、キャッシュ一貫性保持のためのトランザクションをブロードキャストしなければならないため、台数が非常に多いシステムを実現することは困難であり、数十台程度が限度である。
以下ではこの方式をスイッチ型SMP(Symmetrical Multi Processor)と呼ぶ。
【0004】
それに対して、ディレクトリ方式によるマルチプロセッサの構成があり、たとえば「The Stanford FLASH Multiprocessor」(第21回ISCA Proceedings)に開示されている。
この方式では、主記憶のデータライン毎に、そのデータラインがどこのプロセッサのキャッシュに接続されているかを示すビットマップであるディレクトリを設けることにより、必要なプロセッサにのみキャッシュ一貫性を保持するためのトランザクションを送る。
それにより、スイッチにかかるトラフィックを大幅に削減することができ、スイッチのハードウェアコストを削減することができる。
しかし、キャッシュ一貫性を保持するためのトランザクションを出す際には、必ず、主記憶に置かれたディレクトリの内容をチェックしなければならないため、アクセスレーテンシが大幅に増えるという欠点がある。
さらに、ディレクトリを置くためのメモリのコストが高くなると言う欠点を持つ。
【0005】
上記のようにスイッチ型SMPとディレクトリ方式は一長一短である。
一般にスイッチ型SMPの方がハードウェア規模は大きくなり、台数が多くなった場合のスケーラビリティは良くないが、高性能を達成できる。
したがって、PCやサーバ機等の、台数のそれほど多くない(30台程度までの)システムでは、スイッチ型SMPで実現する方が得策である。
【0006】
ここで、主記憶共有型マルチプロセッサを構成する上でのもう一つの問題点として、信頼性の問題がある。
従来の主記憶共有型マルチプロセッサは、システム全体で一つのOSを持つ。この方式は、システムの全てのプロセッサを一つのOSで管理できるため、柔軟なシステム運用(負荷分散等)をできるという利点を持つ。
しかし、多数台のプロセッサを主記憶共有のマルチプロセッサ構成で接続した場合、システムの信頼性が低下するという欠点を持つ。
複数のプロセッサをネットワークで接続したクラスタ構成のサーバや、MPP(Massively Parallel Processors)では、ノード毎にOSは別なので、OSなどのバグ等のためにシステムダウンしても、システムダウンするのは当該のノードのみである。
それに対して主記憶共有型のマルチプロセッサで、システム全体を1つのOSで制御する場合、あるプロセッサがシステムバグ等のためにダウンすると、OSがダウンしてしまうため、全てのプロセッサが影響を受けてしまう。
【0007】
上記の問題を避けるために、主記憶共有型のマルチプロセッサにおいて、複数のOSを走らせる方式が「Hive:Fault Containment for Shared−Memory Multiprocessors」(第15回 ACM Symposium on Operating Systems Principles)において開示されている。
この方式では、ディレクトリ方式の主記憶共有のマルチプロセッサに、以下の2つの機構を持たせる。
(1)システム全体を複数のセル(パーティション)にわけ、各パーティション毎に、独立したOSを走らせる。全体のアドレス空間は一つであり、OSごとに担当するアドレス範囲が異なる。
(2)主記憶のページ毎に書き込みアクセス可能なプロセッサを表すビットマップを設け、書き込みアクセスをビットマップが1であるプロセッサのみに許す。
各プロセッサの主記憶に書き込みが行われる場合(Fetch&Invalidate命令によりデータがキャッシングされる場合、もしくはWriteBack要求が到来した場合)、ビットマップの内容がチェックされ、ビットマップが1であるプロセッサからのアクセスのみが許される。
上記の(1)の機構により、たとえ、1つのパーティションのOSがダウンしても、他のパーティションがダウンする事を避けることができる。
さらに、(2)の機構を設けることにより、バグにより暴走したパーティションのプロセッサが、他のパーティションが使用するデータを破壊することを防止することができる。
以上のように、主記憶共有型のマルチプロセッサ内を複数のパーティションに分けることにより、システムの信頼性を大幅に向上させることができる。
【0008】
【発明が解決しようとする課題】
上記従来技術で述べた、スイッチ型SMPを構成し、さらにSMP内をパーティションに分けようとする場合、以下に示す3つの問題点がある。
【0009】
(A)ローカル主記憶のアクセスが遅い
プロセッサが同一ボード内の主記憶をアクセスする場合、理想的にはクロスバスイッチを経由せずに高速にアクセスを行うことができるはずである。
しかし、実際は、必ず他のプロセッサへのキャッシュ一貫性保持のためのトランザクションを出し、他のプロセッサのキャッシュのチェック(以下ではこの処理をCCC:Cache Coherent Checkと呼ぶ)を行わなければならない。
なぜなら、他のプロセッサのキャッシュの上に、アクセスされたデータのコピーがキャッシングされている可能性があるからである。
実際に他のプロセッサのキャッシュにデータがキャッシングされていた場合は、上記のCCCは無駄にはならない。
しかし、アクセスされたデータが、他のプロセッサから一回もアクセスされていないローカルなデータの場合は、該当するデータが他のプロセッサのキャッシュ上にキャッシングされている可能性は0であり、本来は、CCCの処理は全く不要である。
そのため、無駄なCCCのために、アクセスレーテンシを増加させてしまうのみならず、スイッチ上のトラフィックを増大させてしまうという問題点がある。
【0010】
ディレクトリ方式では、キャッシュライン単位でどのプロセッサにキャッシングされているかが管理されているため、無駄なCCCは生じない。
しかし、先に述べたように、ディレクトリのためのハードウェア量が多いのみならず、ディレクトリを管理するためのオーバヘッドが非常に大きいという欠点を持つ。
たとえば、16プロセッサ、4GB主記憶、64B/ラインのシステムのディレクトリとしては、
4GB/64B*16bit=128MB
もの主記憶が必要になる。
従って、大幅なハードウェア量の削減が必要になる。
【0011】
(B)パーティションのアドレスが0番地から始まらない
上記の従来のパーティション管理機構では、システム全体でアドレス空間が一つである。従って、各パーティションの分担するアドレスが0番地から始まらない。
例えば、パーティション数が2、各パーティションの主記憶容量が1MBとすると、パーティション0は0番地から1M番地までのアドレス空間を持つのに対し、パーティション1は1M番地から2M番地までのアドレス空間を持たなければならないことになる。
既存のOSは、アドレスが0番地から主記憶が実装されていることを前提としているため、上記の制限は従来OSを使用する場合、大きな障害になる。
【0012】
(C)パーティション管理のためのハードウェア量が多い
上記従来例のパーティション管理機構を用いる場合、4KBのページ毎に、各プロセッサが該当するページへのアクセスを許されるかどうかがビットマップで記憶されている。
したがって、該当するビットマップのハードウェア量が非常に大きいという問題点がある。
例えば、プロセッサの台数を16台、システムの主記憶容量を4GBとすると、
4GB/4KB×16=16MB
ものメモリがパーティション管理のために必要になり、コストの増大を招く。
【0013】
従って、
本発明の第一の目的は、他のプロセッサから全くアクセスされていないローカルなデータを、他のノードへのCCCを行わずに高速にアクセスすることが可能な、主記憶共有型のマルチプロセッサを、少ないハードウェアオーバヘッドで実現することである。
本発明のもう一つの目的は、主記憶共有型のマルチプロセッサをパーティションに分けた際に、各パーティションの持つローカルな主記憶が独立したアドレス空間を持つことによりローカルな主記憶を0番地から始めることができ、かつ、必要な領域を共有することができる主記憶共有型のマルチプロセッサを構成することである。
本発明のさらなる目的は、上記のパーティション管理を少ないハードウェア量で実現することである。
【0014】
【課題を解決するための手段】
上記目的を達成するため、本発明は、
1つ以上のCPU、キャッシュと、主記憶を備える複数のノードと、ノード間を結ぶネットワークとからなり、ネットワークを用いてノード間でキャッシュコヒーレント制御を行う主記憶共有型マルチプロセッサにおいて、
各ノードは、自ノードの主記憶の各ページ対応に、該当するページが他のノードからアクセスされたかどうかを記憶する第1のビットが1ビット割り当てられ、該第1のビットはシステムの初期化時にリセットされ、主記憶の該当するページが他のノードからアクセスされた場合に、ハードウェアによりセットされるテーブルと、自ノードのCPUが自ノードの主記憶をアクセスする際に、アクセスするページに該当する前記テーブルの前記第1のビットを検査し、該第1のビットがセットされていた場合には他のノードへのキャッシュコヒーレント制御を行い、該第1のビットがセットされていなかった場合には他のノードへのキャッシュコヒーレント制御を行わない手段を備えるようにしている。
【0015】
さらに、システムソフトウェアが主記憶のページをアロケートする際に、アロケートするページに対応する前記テーブルのビットを該システムソフトウェアがリセットするようにしている。
【0016】
また、前記テーブルに、前記主記憶の各ページ対応に該ページに対してキャッシュコヒーレント制御が必要で無いことを記憶する第2のビットを1ビット割り当て、
前記手段は、自ノードのCPUが自ノードの主記憶をアクセスする際に該第2のビットを検査し、該ビットがセットされていない場合には、前記第1のビットの値にしたがって他のノードへのキャッシュコヒーレント制御の要否を判断し、前記第2のビットがセットされていた場合には他のノードへのキャッシュコヒーレント制御を行わないようにしている。
【0017】
1つ以上のCPU、キャッシュと、主記憶を備える複数のノードと、ノード間を結ぶネットワークとからなり、ネットワークを使ってノード間でキャッシュコヒーレント制御を行い、主記憶を共有している各ノードを1つ以上のノードからなる複数のパーティションに分けることが可能な主記憶共有型マルチプロセッサにおいて、
各ノードの主記憶を、全ノードからアクセス可能な共有領域と、パーティション内からのみアクセス可能なローカル領域に分割し、各々の領域について別個の開始アドレスを指定するようにしている。
【0018】
さらに、前記各ノードは、アクセスされたアドレスがローカル領域であるか共有領域であるかを判定する手段と、パーティション内にどのノードが含まれているかを判定する手段を備え、
他のノードへキャッシュコヒーレンス制御のためのコマンドを出すとき、共有領域へのアクセスコマンドに関しては、システム内の全ノードにコマンドをブロードキャストし、ローカル領域へのアクセスコマンドに関しては、パーティション内のノードにのみコマンドをマルチキャストするようにしている。
【0019】
また、前記各パーティションのローカル領域のアドレスが0番地から始まるようにしている。
また、他のノードからキャッシュコヒーレントコマンドが到来した際に、アクセスアドレスがローカル領域か共有領域かを判定する手段と、アクセス元のノードがパーティション内かパーティション外かを判定する手段を備え、
ローカル領域にパーティション外のノードからコマンドが到来したと判定された場合には、アクセスを抑止し、エラーを報告するようにしている。
また、前記各ノードは前記共有領域の構成情報を記憶するレジスタを備えるようにしている。
また、前記共有領域の構成情報は、共有領域の開始アドレスと、1プロセッサの担当する共有領域の大きさからなるようにしている。
また、前記共有領域の構成情報は、共有領域の開始アドレスと終了アドレスの組からなるようにしている。
また、前記各ノードは、パーティションの構成情報を記憶する手段として、パーティション内のノードの分布をビットマップで記憶する手段を備えるようにしている。
【0020】
【発明の実施の形態】
以下、本発明に係る主記憶共有型マルチプロセッサを、図面に示した実施の形態を参照してさらに詳細に説明する。
【0021】
(1)装置の概要
図1は本発明に係る主記憶共有型マルチプロセッサのブロック図である。
本システムは64ノードのシステムであり、複数のノード、例えば100、200(これらはノード0、ノード63と呼ぶことがある)が、ネットワーク900により接続される。各ノードは同じ構造を有する。
すなわち、各ノードは、CPU110〜112、(部分)主記憶160、主記憶アクセス回路130、ネットワークコマンド送信/受信回路180/190を持つ。180、190、900については、公知の技術であるので内部の説明は省略する。
主記憶160は、このシステムに共通の主記憶の一部を構成し、各ノードで実行されるプログラムおよびデータの一部を保持するもので、このシステムはいわゆる分散共有メモリ型の並列計算機システムである。
主記憶は、ローカル主記憶161、共有主記憶162に分けられ、ベースアドレスレジスタ1610、1620により、それぞれ別個のアドレスを指定できる。
ベースアドレスレジスタ1610、1620はシステムの立ち上げ時に、システムのアドレスマップに応じて、後に述べるパーティション/主記憶構成情報レジスタ150とともにセットされる。
図ではノード内のCPUはバスにより接続されているが、バス以外の結合方式、例えば一対一結合、スイッチによる結合でもよい。
これらノード内の接続方法については公知の技術であるので内部構造の詳細な説明は行わない。
【0022】
主記憶アクセス回路130は、CPUから主記憶アクセス命令が発行されたときに、他のノードへのCCCのためのネットワークコマンドの発行、他ノードへの主記憶アクセスコマンドの発行、自ノード内の主記憶のアクセス、および、他のノードから送られてきたCCCコマンド、主記憶アクセスコマンドを実行するための回路である。
先ず、送信側の回路を説明すると、131はCPUから送られてきたバスコマンドの受信/バスコマンドの分類を行うための回路である。
132はCPUからアクセスされたアドレスが内部(ノード内の主記憶のアドレス)かリモート(他のノードが持つ主記憶のアドレス)かを判断するための回路である。
132はパーティション構成情報150の内容を用いて内部/リモートを判断する。
132、150は本実施の形態に特有の回路である。
【0023】
138は自ノード内の主記憶の各ページの属性(他のノードからアクセスされたか否か、及び他のノードへのCCCが不要であるかどうか)を、記憶するためのテーブルRAT(Remote Access Table)、133はCPUからアクセスされたアドレスのRATの値をチェックし、必要な動作を起動するための回路、148は他のノードからアクセスされたページのRATの値を変更するための回路である。
これらの138、133、148は本実施の形態に特有の回路である。
【0024】
137はRATを初期化等のためにCPUからアクセスするための回路である。
134はCCCコマンド、他ノード主記憶アクセスコマンド、他ノードへの返答コマンド等のネットワークコマンドを生成するための回路である。
139はアクセスアドレス、アクセスコマンドより、ネットワークコマンドをどのノードに出すかを判断する回路である。
139は本実施の形態に特有の動作を行う。
135はCPUが自ノードの主記憶上のデータをアクセスする際に、他ノードへ出したCCCの内容を記憶し、他のノードから帰ってきたCCCに対する返答コマンドを集計するためのCCC待ち合わせ回路A、136はCPUがアクセスした自ノードの主記憶160の内容をアクセスするための主記憶アクセス回路Aである。
【0025】
次に受信側の回路を説明すると、141はネットワークコマンドのアドレス、送信元ノード番号と、パーティション構成情報150の内容の整合性をチェックするための回路であり、本実施の形態に特有の回路である。
142は他のノードから送られてきたネットワークコマンドの分類を行う回路、147は他のノードから送られてきたコマンドのアクセスアドレスが内部かリモートかを判断する回路である。147は、本実施の形態に特有の回路である。143は他のノードから送られてきたCCCコマンドなどを、ノード内のバスに出力するための回路である。
144は、他のノードへのデータフェッチ要求の回答を集計し、CPUに返送するデータを選択するための回路である。
145は、他のノードが自ノード内の主記憶をアクセスした際に、自ノードのバスに出したCCCコマンドの内容を記憶し、自ノードのバスからの返答を待ち合わせるためのCCC待ち回路B、146は、他のノードからの要求に応じて自ノード内の主記憶160をアクセスするための回路である。
149は他のノードからのアクセスコマンドが来た際に、アクセス元のノード番号を一時的に記憶するためのラッチである。返答先のノード番号を知るために用いられる。
【0026】
(2)バス、ネットワークコマンドの説明
ノード内のバス上では、以下の6つのコマンドが使われる。括弧内はこの実施例で使われる略号である。
・Fetch(F)
データのライン転送を要求する。
CPUの読み出しコマンドがミスした場合に出される。CCCコマンドの一つである。
・Fetch&Invalidate(FI)
データのライン転送と同時に、他のキャッシュ上のデータの無効化を要求する。CPUの書き込みコマンドがミスした場合に出される。CCCコマンドの一つである。
・Invalidate(I)
他のキャッシュ上のデータの無効化を要求する。
CPUが、他のキャッシュと共有されているキャッシュラインに対して書き込み要求を出した場合に出される。CCCコマンドの一つである。
・WriteBack(WB)
キャッシュラインの書き戻しを要求する。リプレースにより、データが追い出されたときに生じる。
・Data(D)
データ転送を要求する。
F,FIコマンドへの返答。
・NoData(ND)
F,FIコマンドに対し、どのCPUもDコマンドを出さない状態。
これは、バス上では明示的なコマンドとしては存在しないが、便宜的にコマンドとして扱う。
バス上では、コマンドに付随して、アドレスが転送され、さらにWB,Dコマンドではデータ(キャッシュライン)が転送される。
【0027】
ネットワークコマンドは以下の7種類が存在する。
バスコマンドと同じものについては意味の説明を略する。
・Fetch(F)
・Fetch&Invalidate(FI)
・Invalidate(I)
・WriteBack(WB)
・Data(D)
F,FIコマンドに対し、キャッシュ上のデータを返送するためのコマンド。
・DataMem(DM)
F,FIコマンドに対し、主記憶上のデータを返送するためのコマンド。
ここで、他のいずれかのノードのキャッシュよりDコマンドが来た場合は、DMコマンドで返送されたデータは無視されなければならない。
・NoData(ND)
F,FIコマンドに対し、該当するノードではどのCPUもDコマンドを出さないことを示す返答。
【0028】
図6、図7にバスコマンドのフォーマットを示す。
図6はF,FI,I,NDコマンドであり、コマンドの他に、宛先ノード番号を表すビットマップ、アクセス元ノード番号、アクセスアドレスを含む。
ここで、宛先ノード番号はビットマップで表されているため、複数のビットを立てることにより、特定の複数のノード(例えばパーティション内のノード)に向けたマルチキャスト、さらには、全ビットを立てることにより、システムの全プロセッサに向けたブロードキャストを容易に実現することができる。
図7はWB,D,DMコマンドのフォーマットであり、上記の情報の他にキャッシュラインのデータを含む。
【0029】
(3)CPUのからのアクセスに対する動作
以下では、CPUからのアクセスに対する主記憶をアクセス回路130の動作を場合に分けて順に説明する。
共有バス上にコマンドが出されると、バスコマンド受信/バスコマンド分類回路131は、アクセスされたアドレスをリモート判定回路132に送り、アクセスされたコマンドが自ノードの主記憶のアドレスをアクセスしているか(内部)、他ノードの主記憶のアドレスをアクセスしているか(リモート)を判断する。
リモート判定回路132では、パーティション/主記憶構成情報150の内容を使用し、内部/リモートの判定を行う。
【0030】
図5にパーティション/主記憶構成情報150の内容を示す。
パーティション/主記憶構成情報150は、パーティション内にどのノードが属しているかを示すビットマップ1500、パーティション内のノードの数を表すレジスタ1506を持ち、さらに、共有領域に関しては、共有領域の先頭アドレス(ベースアドレス)1501、1ノードあたりの共有領域の大きさ1502を記憶する。
ここでは、各ノードの共有領域は、全て同じ大きさである。
さらに、ローカル領域に関しては、パーティション内の各ノードに対して、ローカル領域の開始アドレス1503と終了アドレス1504を記憶する。
パーティションレジスタ1500の該当するビットが1であるノードに対してのみこの情報は有効である。
各ノード毎に別個のレジスタを持つことにより、ローカル領域に関しては各ノードの主記憶容量は異なっても良い。
【0031】
リモート判定回路132では、アクセスアドレスをAとすると、Aが自ノードのローカル領域の開始アドレス1503と終了アドレス1504の間にあるかを調べる。
さらに、自ノードの番号をN、共有領域ベースアドレスレジスタ1501の内容をB、共有領域サイズ/ノード レジスタ1502の内容をSとすると、
B+S×N≦A<B+S×(N+1)
であるかどうかを調べる。
いずれかが成り立つ場合はバスコマンド受信/バスコマンド分類回路131に、アクセスされたアドレスが内部であることを、そうでない場合はリモートの主記憶であることを知らせる。
その後、バスコマンド受信/バスコマンド分類回路131は、アクセスコマンド、アクセスアドレスが内部であるかリモートであるかによって、異なった動作をする。
【0032】
(A)内部アドレスへのF、FIコマンドの場合
まず、131aを通してRATチェック回路133にアクセスアドレス、コマンドが送られる。
RATチェック回路133では、アクセスされたページに該当するRAT138の内容をチェックし、他のノードへのCCCが要るかどうかを判断する。
【0033】
図3にRATの詳細を示す。
RATでは、ページ毎にA,Nの2つのビットを記憶するメモリである。
Aビットは他のノードへのCCCが必要であるかどうかを示す。
Aが0の場合、該当するページが他のノードからアクセスされていない(従って他のノードへのCCCは不要である)ことを示し、Aが1の場合該当するページが他のノードからアクセスされたこと(従って、他のノードへのCCCが必要であること)を示す。
Aビットは立ち上げ時に0に初期化されるほか、ソフトウェアがあるページを割り当てる際にソフトウェアにより0にリセットされる。
【0034】
図9に本実施例におけるページ割り当てのアルゴリズムを示す。
これにより、ページがシステムソフトウェアにより回収され、再利用された場合にも、RATが正しく動作することを保証することができる。
Aビットはハードウェア(RAT変更回路148)で1にセットされる。これについては後ほど述べる。
【0035】
Nビットは通常のキャッシュコヒーレント管理が不要であるページを示すのに用いる。
Nビットが0の場合該当するページは通常のキャッシュコヒーレント管理の対象になることを示し、Nが1の場合は、該当するページは(パージ、フラッシュ等の命令を用いて)ソフトウェアによりコヒーレント管理が行われるため通常のキャッシュコヒーレント管理は不要であることを示す。
Nビットが1のページに対しては、他のノードへのCCCのためのコマンドは出されない。
I/O領域や、数値計算の配列がおかれる領域などで有効である。
Nビットはアプリケーションソフトウェアが定義したアドレス情報に基づき、システムソフトウエアが管理する。
【0036】
図2にRATチェック回路133の詳細を示す。
先ず、1333、1334でアクセスされたページに該当するRATの値が読み出しされた後、ゲート1335により、A=1かつN=0であるかどうか(すなわち、他のノードへのCCCが必要であるかどうか)を判断する。
他のノードへのCCCが必要である場合、スイッチ1330、信号133aを通してネットワークコマンド生成回路134に他ノードへのコマンドを出すことを依頼するとともに、他ノードへのCCCが必要で、かつコマンドがFかFIの場合(コマンドデコード回路1332およびゲート1336により判断する)スイッチ1331、信号133bを通してCCC待ち回路AにCCCの結果を待ちあわせることを依頼する。
それに対して、他ノードへのCCCが必要でない場合(A=0もしくはN=1の場合)は、ゲート1337でコマンドがFかFIかどうかが判断され、FかFIで外部へのCCCが不要な場合には、スイッチ1338、信号133cを通じて主記憶アクセス回路A136に主記憶の内容を読み出すことを依頼する。
すなはち、外部へのCCCを省略し、即座に主記憶をアクセスできる。
【0037】
(A1)他のノードへのCCCが不要の場合
この場合、信号133cを通じて主記憶アクセス回路A136にアクセスアドレスが伝えられる。
主記憶アクセス回路A136はアクセスされたデータラインを自ノード内の主記憶160から読み出し(ローカル領域161、共有領域162の何れの場合も同じである)、読み出されたデータを136a、143を通じて自ノード内のCPUに返す。
【0038】
(A2)他のノードへのCCCが必要な場合
先ず、信号133aを通じてネットワークコマンド生成回路134に他のノードにF,FIコマンドを送出することを依頼する。
それと同時に信号133bを通じてCCC待ち回路A135に対して他のノードからの返答を待ち合わせることを依頼する。
ネットワークコマンド生成回路134は、宛先生成回路139により判断されたノードにコマンドを送付する。
ここで、注意しなければならないのは、宛先ノードは図6、図7に示すように全ての(64個の)ノードに対応するビットマップで表されるため、複数のノードを指定すればブロードキャスト、マルチキャストを指定することができる。
【0039】
図11に宛先生成回路139の構成を示す。
宛先生成回路では、先ず、アクセスアドレスが内部であるかリモートであるか(リモート判定回路1391)が判断され、さらに、アクセスアドレスが共有メモリであるかどうかが(共有メモリ判定回路1392)が判断される。
1391の動作は132と同一である。
共有メモリ判定回路1392では、アクセスアドレスをA、共有領域ベースアドレスレジスタ1501の内容をB、共有領域サイズ/ノード レジスタ1502の内容をSとすると、
B≦A<B+S×64
で有るかどうかが調べられる(アクセスアドレスが上記の範囲内に入っていれば共有メモリである)。
さらに、回路1394により、アクセスアドレスのhomeノードが求められる。homeノードとは、アクセスアドレスを主記憶上に持つノードである。
具体的には以下の手順で求められる(以下ではアクセスアドレスをAとする)。
・Aと全てのノードに対応するローカル領域レジスタ1503、1504の値が比較され、Aが何れかのノードHLの開始アドレスと終了アドレスの間に有る場合、HLがhomeノードである(Aはローカル領域である)。
・さらに、共有領域ベースアドレスレジスタ1501の内容をB、共有領域サイズ/ノード レジスタ1502の内容をSとすると、以下の計算を行う。
HS=(A−B)/S (小数点以下切り捨て)
HSが0以上64未満の場合、HSがhomeノード番号である(Aは共有領域である)。
【0040】
セレクタ1390は、上記の判断結果、及び、アクセスコマンドにより、図12に示す動作をする。
つまり、コマンドがF、FI、Iの場合は、共有領域の場合は全ノードへブロードキャストするためオール1のビットマップ1393aが選ばれ(ここでは説明を簡単にするため64個全ノードが実装されているとするが、実装されているノードが64未満でも、ビットマップを変えることにより対応できる)、ローカル領域の場合は、パーティション内のノードにのみマルチキャストするため、パーティションレジスタ1500の内容が選ばれる。
D、NDコマンドの場合、及びリモート主記憶からのDMコマンドの場合、アクセス元ノード番号レジスタ149の値をデコードした(ビットマップにした)結果が選ばれ、アクセス元のノードに結果が返送される。
リモートの主記憶へのWBコマンドの場合は、回路1394で求められたhomeノード番号をデコードした結果が選ばれ、データをhomeノードに書き戻す。
内部のアドレスへのWB、NDコマンドはエラーである(あり得ないはずである)。
この場合、F,FIコマンドであるので、ローカル領域の場合はパーティション内の全ノードにマルチキャストされ、、共有領域の場合はシステム内の全ノードにブロードキャストされる。
他ノードへF,FIコマンドを出した結果は、DもしくはNDコマンドにより、返送される。
他のノードより返送されたコマンドはネットワークコマンドチェック回路141でパーティション/主記憶構成情報150との整合性をチェックされた後、ネットワークコマンド分類回路142に送付される。
【0041】
ネットワークコマンド分類回路142は、コマンドの種類、アクセスされたアドレスが内部(自ノードの主記憶)かリモート(他ノードの主記憶)か(リモート判定回路147を用いてを判断される、リモート判定回路147の動作は132と全く同一である)に応じ、該当する出力にコマンドを出す。
内部アドレスへのN、NDコマンドの場合は、信号142aを通じてCCC待ち回路A(135)にコマンドを送る。
【0042】
図14にネットワークコマンドチェック回路141の詳細を示す。
ネットワークコマンドチェック回路141では、ローカル領域へのパーティション外のノードへのアクセスをエラーとして検出するための回路である(ローカル領域を他のパーティションからの不正なアクセスから守るために、ローカル領域へはパーティション内のノードからのみしかアクセスが許されない)。
まず、アクセスアドレスが共有メモリか否かが共有メモリ判定回路1410により判断される(共有メモリ判定回路1410の動作は、1392と同一である)。
さらに、パーティション内外判定回路1411によりアクセス元のノードがパーティションの中であるかどうかが判断される。
具体的には、ネットワークコマンドのアクセス元ノード番号をデコーダ1412でデコードした結果と、パーティションレジスタ1500(パーティション内のノードを表すビットマップ)をAND−ORゲートでゲートした結果により、アクセス元のノード番号に相当するビットがパーティションレジスタ1500の中で立っているかどうかがチェックされる。
その結果、正しいアクセスの場合、つまりアクセスアドレスが共有メモリであるか、アクセス元のノードがパーティション内である場合は、スイッチ1415を通じてアクセスコマンドがネットワークコマンド分類回路142に送られる。
不正なアクセスの場合は、ゲート1416により、エラーが報告される(スイッチ1415によりアクセスは抑止される)。
これにより、ローカル領域への他のパーティションからの不正なアクセスを防止することができる。
【0043】
内部のアドレスに対して他のノードへF,FIコマンドを出した結果としては、全てのノードからNDが返る場合と、1つ以上のノードからDコマンドが返る(それ以外のノードからはNDが返る)場合に分けられる。
他のノードからの返答はCCC待ち回路A(135)で集計され、該当する動作がとられる。
【0044】
図10にCCC待ち回路A(135)の詳細を示す。
信号133bを通じて与えられたCCCアドレスはレジスタ13506に蓄えられる。
後に他のノードからCCCの返答(DもしくはNDコマンド)が来ると、先ず、コンパレータ13507でCCCアドレス13506と比較される。
比較した結果が一致した場合は、コマンドがDであるかNDであるかが、デコーダ13500とゲート13501、13502で判断される。
Dコマンドが(1つでも)到来した場合(つまり他のキャッシュから最新のデータが送られて来た場合)は、フリップフロップ(FF)13504がセットされ、Dコマンドが到来したことが記憶されると同時に、ラッチ13514にDコマンドの内容が記憶される(Dコマンドにより送られてきた値は、後にCPUに返される)。
それとは別に、D、NDコマンドが1個到来する毎に、ゲート13503を通じてカウンタ13505がカウントアップされ、今までに何個の返答が来たかが数えられる。
カウンタの値が信号13511aで示される、期待される返答数と一致すると、全ての返答が返ったとして、CCCの待ち合わせが終了する。
【0045】
その際にフリップフロップ13504が1の場合、スイッチ13515がONになり、ラッチ13514に記憶されていたDコマンドにより返送されたデータが信号135b、バスコマンド生成回路143を通じてCPUに返される。
それに対して、フリップフロップ13504が0の場合(全てのノードからNoDataコマンドが返された場合)は、スイッチ13516がONになり、信号135aを通じて、CCCアドレスレジスタ13506に記憶されていたアクセスアドレスが主記憶アクセス回路A(136)に伝えられ、主記憶上のデータをアクセスすることが依頼される。
【0046】
信号13511aで示される期待される返答数は、次の手順で求められる。
まず、CCCアドレスレジスタ13506で記憶されているアクセスアドレスが共有主記憶であるかどうかが、共有メモリ判定回路13508で判断され(共有メモリ判定回路13508の動作は1392と同一である)、セレクタ13511に伝えられる。
セレクタ13511は、アクセスアドレスが共有メモリの場合は64(システムの全ノード数、ただし、実装されているノード数が64未満の場合は実装されているノード数を指定する)を出力し、アクセスアドレスが共有メモリでない(ローカルメモリの場合)はパーティション内ノード数レジスタ1506の値を出力する。
これにより、該当するデータをアクセスするノードの数を求めることができる。
【0047】
(A2a)他のノードからの回答が全てNDの場合
CCC待ち回路A(135)より信号135aを通じて主記憶アクセス回路A(136)に、自ノード上の主記憶160をアクセスすることが依頼され、アクセスされたデータがCPUに返される。
【0048】
(A2b)何れかのノードよりDコマンドが返ってきた場合
CCC待ち回路A(135)より、信号135b、バスコマンド生成回路143を通じて、Dコマンドにより返送された最新のデータが、CPUに返される。
【0049】
(B)内部アドレスへのIコマンドの場合
この場合、RATチェック回路135により、他のノードへのCCCの要不要がチェックされるところまでは(A)と同様である。
【0050】
(B1)他のノードへのCCCが必要な場合
信号133aを通じてネットワークコマンド生成回路134に他のノードへのIコマンドの生成を依頼する(Iコマンドに返答はない)。
ネットワークコマンド生成回路134は宛先生成回路139の指定するノードにコマンドを送る。
つまり、ローカル領域へのIコマンドの場合、パーティション内の全ノードにマルチキャストされ、共有領域へのIコマンドの場合、システムの全ノードにブロードキャストされる。
【0051】
(B2)他のノードへのCCCが不要な場合
Iコマンドの場合、主記憶のデータアクセスは不要なので何も起こらない。
すなわち、コマンドデコード回路1332は0を出力するため、ゲート1337の出力は0であり、信号133cには何も出力されない。
【0052】
(C)内部アドレスへのWBコマンドの場合
この場合、バスコマンド受信/バスコマンド分類回路131は信号131cを通じて主記憶アクセス回路136に、書き戻されたデータを主記憶160に書き込むことを依頼する。
【0053】
(D)リモートアドレスへのF,FIコマンドの場合
この場合、信号131bを通じてネットワークコマンド生成回路に、他ノードへF,FIコマンドを生成する事を要求する。
ネットワークコマンド生成回路134は宛先生成回路139の指定するノードにコマンドを送る。
つまり、ローカル領域へのF,FIコマンドの場合、パーティション内の全ノードにマルチキャストされ、共有領域へのF,FIコマンドの場合、システムの全ノードにブロードキャストされる。
リモートアドレスへのF,FIに対しては、D,DM,NDの3種のコマンドが到来する。
ネットワークコマンド分類回路142は、リモートアドレスに対するD,DM,NDコマンドが到来した場合は、信号142eを通じて返答集計回路144に送出する。
【0054】
この場合、返答されるコマンドの組み合わせとしては、
(あ)homeノードからDMコマンドが、その他のノードからは全てNDが返る場合
(い)homeノードからDMコマンドが、他の何れか一つ以上のノードからDコマンドが返る(その他のノードからはNDコマンドが返る)場合
(う)homeノードを含む何れか1つ以上のノードからDコマンドが返る(その他のノードからはNDコマンドが返る)場合
に分けられる。
(あ)ではDMコマンドより送られたhomeノードの主記憶から読み出された値が使われるのに対し、(い)では、他のノードのキャッシュの上のデータを優先しなければならず(なぜならキャッシュ上のデータは変更されている可能性があるため)、DMコマンドでhomeノードの主記憶から送られたデータは捨てられ、Dコマンドによりキャッシュから送られたデータが活用される。
(う)では、Dコマンドにより何れかのノードのキャッシュから送られてきたデータが用いられる。
各ノードからの返答は返答集計回路144で集計され、(あ)(い)(う)の何れかの場合であるかが判断され、アクセスされた結果(データライン)がアクセス元のCPUに返される。
【0055】
図13に返答集計回路144の詳細を示す。
先ず、他ノードから送られてきたコマンドが14400によりデコードされる。
Dコマンドの場合はラッチ14401によりDコマンドの内容(アドレス、データ)が記憶されるとともに、フリップフロップ14403によりDコマンドが1つ以上到来したことが記憶される。
DMコマンドの場合はラッチ14402によりDMコマンドの内容が記憶される。それと並行して、D、DM、NDコマンドが1つ到来する毎に、ゲート14404を通じてカウンタ14405がカウントアップされ、到着した返答の数を数える。
カウンタの値が信号14413aで示される期待される返答数と一致した場合(コンパレータ14406で判断される)、全ての返答が到着したと判断し、Dコマンドが一つでも来ていた場合(フリップフロップ14403が1の時)はゲート14408、スイッチ14410によりDコマンドの内容が、信号144aを通じてバスコマンド生成回路143に供給される。
それに対しDコマンドが一つも来ていなかった場合は、ゲート14407、スイッチ14409により、DMコマンドの内容がバスコマンド生成回路に供給される。
これにより、Dコマンドが一つ以上来ていた場合は、Dコマンドにより返送された他のノードのキャッシュ上のデータがアクセスを行ったCPUに返され、Dコマンドが一つも来ていなかった場合は、DMコマンドにより返送された、homeノードの主記憶上の値がアクセスを行ったCPUに返される。
1411、1413等の期待される返答数を求める回路は、アドレスラッチ14414にラッチされたアクセスアドレスに対して、CCCの返答の数を求める。
詳細な動作は、CCC待ち回路A(135)の回路(13508、13511等)と全く同一である。
【0056】
(E)リモートアドレスへのIコマンドの場合
この場合はRATのチェックは行われず、信号131bにより直接ネットワークコマンド生成回路134に他のノードへのコマンドの送出の依頼が行われる。
その後の動作は(B1)と同様である。
【0057】
(F)リモートアドレスへのWBコマンドの場合
この場合、バスコマンド受信/バスコマンド分類回路131は信号131bを通じてネットワークコマンド生成回路134に、WBコマンドを送付することを依頼する。
宛先生成回路が出す宛先は、homeノードであり、WBコマンドはhomeノードに送られる。
【0058】
(4)他のノードからのアクセスに対する動作
ここでは、主記憶アクセス回路130が、ネットワーク900を通じて送られてきた、他のノードからのコマンドに対してどのように動作するかを述べる。
ここで、D,DM,NDコマンドに対する動作は既に(3)で述べてあるので、その他のF,FI,I,WBに対する動作を述べる。
他のノードから送られてきたコマンドは、ネットワークコマンドチェック回路141によりチェックされた後、ネットワークコマンド分類回路142に送られる。
ネットワークコマンド分類回路142では、アクセスコマンドの種類、アクセスアドレスが内部かリモートか(リモート判定回路147により判断される)により、該当する出力にコマンドを送る。
また、F,FI,Iコマンドの場合は、アクセス元ノード番号レジスタ149にアクセス元ノード番号をセットする。
【0059】
(A)内部アドレスへのF,FIコマンドの場合
ネットワークコマンド分類回路142は、信号142dを通じてバスコマンド生成回路143にバスコマンドの生成を依頼する。
バスコマンド生成回路143は、ノード内の共有バス120を通じてノード内のCPUにF,FIコマンドを出す。
それと同時に、信号142cを通じてCCC待ち回路B(145)に、ノード内の共有バスに出されたコマンドを待ち合わせることを依頼する。
【0060】
図15にCCC待ち回路B(145)の詳細を示す。
信号142cを通じて送られてきた、CCCを行うアドレスは、CCCアドレスレジスタ1451に記憶される。
後にノード内の共有バス120からバスコマンド受信/バスコマンド分類回路131を通じて、CCCの返答(DもしくはNDコマンド)が来ると、先ず、コンパレータ1452でCCCアドレス1451と比較される。
比較した結果が一致した場合は、コマンドがNDであるかどうかが、デコーダ1450とゲート1453で判断される。
NDコマンドが返送された場合は、スイッチ1455を通じて、CCCアドレスレジスタ1451に記憶されていたアクセスアドレスが、信号145aを通して主記憶アクセス回路B146に伝えられ、主記憶上のデータをアクセスすることが依頼される。
【0061】
ノード内の共有バスに出したF,FIコマンドの結果は、D(ノード内のいずれかのCPUのキャッシュに該当するデータがある場合)、もしくはND(ノード内の何れのCPUのキャッシュにも該当するデータが無い場合)により返送される。
Dコマンドの場合は、データも同時に返送される。
バスコマンド受信/バスコマンド分類回路131は、コマンド、および、アクセスアドレスが内部であるか、リモートであるか(リモート判定回路132により判定される)に応じて、該当する出力にコマンドを送る。
【0062】
(Aa)内部アドレスへのアクセスに対し、Dコマンドが返送された場合
自ノードのキャッシュ上にアクセスデータがあった場合、バスコマンド受信/バスコマンド分類回路131は、Dコマンド(コマンド、アドレス、データ)を、信号131bを通じて、ネットワークコマンド生成回路134に送る。
ネットワークコマンド生成回路134は、アクセス元のノードにアクセスデータをDコマンドを用いて返送する(宛先生成回路139は、アクセス元ノード番号149を選択する)。
これにより、自ノードのCPUのキャッシュ上のデータがアクセス元のノードに返送される。
【0063】
(Ab)内部アドレスへのアクセスに対し、NDコマンドが返送された場合。
【0064】
自ノードのキャッシュ上にはアクセスデータが無かった場合、バスコマンド受信/バスコマンド分類回路131は、NDコマンドを信号131dを通じてCCC待ち回路B(145)に送付する。
CCC待ち回路Bは信号145aを通じて、主記憶アクセス回路B(146)に主記憶160上のアクセスアドレスの内容(キャッシュライン)を読み出すことを依頼する。
主記憶アクセス回路B(146)は、信号160aを通じてアクセスラインを読み出すと、信号146aを通じてネットワークコマンド生成回路134に送る。
ネットワークコマンド生成回路134は、アクセス元のノードにアクセスデータをDMコマンドを用いて返送する(宛先生成回路139は、アクセス元ノード番号149を選択する)。
これにより、自ノードの主記憶上のデータがアクセス元のノードに返送される。
それと同時に、主記憶アクセス回路B(146)は、信号146bを通じてRAT変更回路148にアクセスされたページに該当する、RAT138のAビットに1を設定することを依頼する。
【0065】
図4にRAT変更回路148の詳細を示す。
アクセスされたアドレスのページ番号に対応するRATのAビットに1が書き込まれる。
【0066】
(B)内部アドレスへのIコマンドの場合
ネットワークコマンド分類回路142は、信号142dを通じてバスコマンド生成回路143にバスコマンドの生成を依頼する。
バスコマンド生成回路143は、ノード内の共有バス120を通じてノード内のCPUにIコマンドを出す(Iコマンドには返答は無い)。
【0067】
(C)内部アドレスへのWBコマンドの場合
ネットワークコマンド分類回路142は、信号142bを通じて、主記憶アクセス回路B(146)に、WBされたデータを主記憶に書き込むことを依頼する。
主記憶アクセス回路B(146)は、信号160aを通じて主記憶160へWBされたデータを書き込む。
それと同時に、主記憶アクセス回路B(146)は、信号146bを通じてRAT変更回路148にアクセスされたページに該当する,RAT138のAビットに1を設定することを依頼する。
【0068】
(D)リモートアドレスへのF,FIコマンドの場合
ネットワークコマンド分類回路142は、信号142dを通じてバスコマンド生成回路143にバスコマンドの生成を依頼する。
バスコマンド生成回路143は、ノード内の共有バス120を通じてノード内のCPUにF,FIコマンドを出す。
ノード内の共有バスに出したF,FIコマンドの結果は、D(ノード内のいずれかのCPUのキャッシュに該当するデータがある場合)、もしくはND(ノード内の何れのCPUのキャッシュにも該当するデータが無い場合)により返送される。
Dコマンドの場合は、データも同時に返送される。
【0069】
リモートアドレスに対するD,NDコマンドの場合、何れの場合も、バスコマンド受信/バスコマンド分類回路131は、Dコマンド(コマンド、アドレス、データ)もしくはNDコマンド(コマンド、アドレス)を、信号131bを通じて、ネットワークコマンド生成回路134に送る。
ネットワークコマンド生成回路134は、アクセス元のノードにアクセス結果をD又はNDコマンドを用いて返送する(宛先生成回路139は、アクセス元ノード番号149を選択する)。
これにより、Dコマンドの場合、自ノードのCPUのキャッシュ上のデータがアクセス元のノードに返送され、NDコマンドの場合、自ノードのCPUのキャッシュ上には該当するデータが無いことが伝えられる。
【0070】
(E)リモートアドレスへのIコマンドの場合
この場合、内部アドレスへのIコマンドの場合(B)と全く同じ動作を行う。
【0071】
(F)リモートアドレスへのWBコマンドの場合
他のノードからリモートアドレスへのWBコマンドが来ることはあり得ない。
【0072】
ネットワークコマンド分類回路142はエラーを報告する。
【0073】
以上述べた手順によりクロスバネットワークにより接続されたノード間でキャッシュコヒーレンスをとることができる。
その際に、リモートアクセステーブル(RAT)138を用いて他のノードへのCCCを削減することができる。
さらに、主記憶共有マルチプロセッサ内をパーティションに分ける際に、主記憶を、各パーティションのローカル領域/パーティション間共有領域の2つに分け、ローカル領域に対しては各パーティション間で独立したアドレス空間とすることにより、各パーティションのアドレスを0番地より始めるようにすることができる。
さらに、パーティション/主記憶構成情報150をレジスタにより記憶することにより、少ないハードウェア量でパーティションの管理を実現することができる。
【0074】
<変形例>
本発明は以上の実施の形態に限定されるのではなくいろいろの変形例にも適用可能である。
例えば、
(1)以上においては、ノード内のCPUはバス120により接続されているが、その他の接続形態(スイッチによる接続、主記憶アクセス回路130への一対一接続)も可能である。
(2)また、以上においては、RAT148は、主記憶アクセス回路130に内蔵される、専用メモリにより、構成されているが、外付けのメモリにすることも可能である。
さらに、RATを物理的にはローカル主記憶161上に置くことも可能である。
さらに、この場合、RATの内容を主記憶アクセス回路130内にキャッシングする事も可能である。
【0075】
(3)上記実施の形態において、パーティション/主記憶構成情報150では、共有領域の構成情報は、共有領域ベースアドレス1501及び、共有領域サイズ/ノード レジスタ1502の2つのレジスタにより記憶されている。
しかし、ローカル領域レジスタ1503、1504のように、ノード毎に開始アドレス、終了アドレスの組で覚えることも可能である(これにより、各ノードの共有領域の大きさを変えることができる)。
この場合、上記実施の形態においては共有領域ベースアドレス1501及び、共有領域サイズ/ノードレジスタ1502を用いて計算で求めていた、共有メモリ判定回路、homeノード判定回路は、コンパレータにより構成することができる。
【0076】
(4)以上においては、ノード内の各CPU(110〜112)は独立したキャッシュを持っているが、複数のCPUに共有される外付けの2次キャッシュを持たせることも可能である。
各ノードの主記憶アクセス回路130に、CPUのキャッシュTAGのコピーを持ち、他のノードから到来するキャッシュコヒーレントトランザクションをフィルタリングする事も可能である。
【0077】
(5)以上においては、ノード間はクロスバネットワークにより接続されているが、他の形式のネットワーク(多段網等)により接続することも可能である。
(6)上記実施の形態においては、他のノードへのネットワークコマンドを出す際に、宛先のノードをビットマップにより指定することにより、ブロードキャスト、マルチキャストを指示しているが、ネットワークコマンド生成回路134が、宛先のノード毎に複数のコマンドを出すことにより、ブロードキャスト、マルチキャストを実現することも可能である。
【0078】
【発明の効果】
本発明によれば、主記憶共有型のマルチプロセッサにおいて、リモートアクセステーブル(RAT)を置くことにより、少ないハードウェア量の追加により、自ノード内の主記憶をアクセスする際に、他のノードからアクセスされていないページに関しては、ノード間のCCCを省くことができる。
従って、アクセスレーテンシを削減するとともに、ノード間のネットワークにかかるトラフィックを削減することができる。
さらに、本発明によれば、主記憶共有マルチプロセッサ内を複数のパーティションに分ける際に、主記憶をパーティション毎のローカルな領域とパーティション間で共有される領域に分け、ローカル領域に対しては各ノードのアドレス空間を独立することにより、各パーティションの開始アドレスを0番地から始めることを可能にすることができる。
さらに、各パーティションのローカル領域、共有領域の範囲をレジスタにより記憶することにより、パーティション管理のためのハードウェア量を従来のページ毎の管理と比較して大幅に削減することができる。
【図面の簡単な説明】
【図1】本発明のキャッシュコヒーレンス保持機構を持つ主記憶共有型マルチプロセッサである。
【図2】各ノードのRATチェック回路のブロック図である。
【図3】各ノードのRATのブロック図である。
【図4】各ノードのRAT変更回路のブロック図である。
【図5】各ノードにおいて、パーティション/主記憶構成情報を表すレジスタ群の詳細図である。
【図6】ネットワーク上の、F,FI,I,NDコマンドのパケットフォーマットである。
【図7】ネットワーク上の、WB,D,DMコマンドのパケットフォーマットである。
【図8】各ノードの主記憶のブロック図である。
【図9】本発明のマルチプロセッサシステムにおいて、主記憶のページをアロケートする際のフロー図である。
【図10】各ノードのCCC待ち回路Aのブロック図である。
【図11】各ノードの宛先生成回路のブロック図である。
【図12】各ノードの宛先生成回路内の、宛先セレクタの入力と出力の関係の表を示す図である。
【図13】各ノードの返答集計回路のブロック図である。
【図14】各ノードのネットワークコマンドチェック回路のブロック図である。
【図15】各ノードのCCC待ち回路Bのブロック図である。
【符号の説明】
100、200 ノード
110〜112 CPU
110a〜112a キャッシュ
120 バス
131 バスコマンド受信/バスコマンド分類回路
132、147 リモート判定回路
133 RATチェック回路
134 ネットワークコマンド生成回路
135 CCC待ち回路A
136 主記憶アクセス回路A
137 RATアクセス回路
138 RAT(Remote Access Table)
139 宛先生成回路
141 ネットワークコマンドチェック回路
142 ネットワークコマンド分類回路
143 バスコマンド生成回路
144 返答集計回路
145 CCC待ち回路B
146 主記憶アクセス回路B
148 RAT変更回路
149 アクセス元ノード番号レジスタ
150 パーティション/主記憶構成情報
160 主記憶
161 ローカル主記憶
162 共有主記憶
180 ネットワークコマンド送信回路
190 ネットワークコマンド受信回路
900 ノード間クロスバネットワーク

Claims (3)

  1. 1つ以上のCPU、キャッシュと、主記憶を備える複数のノードと、ノード間を結ぶネットワークとからなり、ネットワークを用いてノード間でキャッシュコヒーレントチェックのためのコマンドとその応答のやり取りを行ってキャッシュコヒーレント制御を行う主記憶共有型マルチプロセッサにおいて、
    前記各ノードは、自ノードの主記憶の各ページ対応に、該当するページが他のノードからアクセスされたかどうかを記憶する第1のビットが1ビット割り当てられ、該第1のビットはシステムの初期化時にリセットされ、主記憶の該当するページが他のノードからアクセスされた場合に、ハードウェアによりセットされるテーブルと、
    自ノードのCPUが自ノードの主記憶をアクセスする際に、アクセスするページに該当する前記テーブルの前記第1のビットを検査し、該第1のビットがセットされていた場合には他のノードへのキャッシュコヒーレントチェックのためのコマンドの送出を行い、該第1のビットがセットされていなかった場合には他のノードへのキャッシュコヒーレントチェックのためのコマンドの送出を行わない手段を備えることを特徴とする主記憶共有型マルチプロセッサ。
  2. 請求項1記載の主記憶共有型マルチプロセッサにおいて、
    システムソフトウェアが主記憶のページをアロケートする際に、アロケートするページに対応する前記テーブルのビットを該システムソフトウェアがリセットすることを特徴とする主記憶共有型マルチプロセッサ。
  3. 請求項1記載の主記憶共有型マルチプロセッサにおいて、
    前記テーブルに、前記主記憶の各ページ対応に該ページに対してキャッシュコヒーレント制御が必要で無いことを記憶する第2のビットを1ビット割り当て、
    前記手段は、自ノードのCPUが自ノードの主記憶をアクセスする際に該第2のビットを検査し、該ビットがセットされていない場合には、前記第1のビットの値にしたがって他のノードへのキャッシュコヒーレント制御の要否を判断し、前記第2のビットがセットされていた場合には他のノードへのキャッシュコヒーレントチェックのためのコマンドの送出を行わないことを特徴とする主記憶共有型マルチプロセッサ。
JP05991497A 1997-02-27 1997-02-27 主記憶共有型マルチプロセッサ Expired - Fee Related JP3849951B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP05991497A JP3849951B2 (ja) 1997-02-27 1997-02-27 主記憶共有型マルチプロセッサ
US09/030,957 US6088770A (en) 1997-02-27 1998-02-26 Shared memory multiprocessor performing cache coherency
US09/506,810 US6546471B1 (en) 1997-02-27 2000-02-18 Shared memory multiprocessor performing cache coherency

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP05991497A JP3849951B2 (ja) 1997-02-27 1997-02-27 主記憶共有型マルチプロセッサ

Publications (2)

Publication Number Publication Date
JPH10240707A JPH10240707A (ja) 1998-09-11
JP3849951B2 true JP3849951B2 (ja) 2006-11-22

Family

ID=13126885

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05991497A Expired - Fee Related JP3849951B2 (ja) 1997-02-27 1997-02-27 主記憶共有型マルチプロセッサ

Country Status (2)

Country Link
US (2) US6088770A (ja)
JP (1) JP3849951B2 (ja)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870239B1 (en) * 1998-06-30 2011-01-11 Emc Corporation Method and system for securing network access to dynamically updateable data stored in a data storage system
US6286111B1 (en) * 1998-09-01 2001-09-04 International Business Machines Corporation Retry mechanism for remote operation failure in distributed computing environment
JP3976432B2 (ja) 1998-12-09 2007-09-19 エヌイーシーコンピュータテクノ株式会社 データ処理装置およびデータ処理方法
JP4123621B2 (ja) * 1999-02-16 2008-07-23 株式会社日立製作所 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法
US6449699B2 (en) * 1999-03-29 2002-09-10 International Business Machines Corporation Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
US6412047B2 (en) * 1999-10-01 2002-06-25 Stmicroelectronics, Inc. Coherency protocol
US6681320B1 (en) 1999-12-29 2004-01-20 Intel Corporation Causality-based memory ordering in a multiprocessing environment
US7343622B1 (en) * 2000-04-27 2008-03-11 Raytheon Company Multi-level secure multi-processor computer architecture
US6684343B1 (en) * 2000-04-29 2004-01-27 Hewlett-Packard Development Company, Lp. Managing operations of a computer system having a plurality of partitions
US7039901B2 (en) * 2001-01-24 2006-05-02 Texas Instruments Incorporated Software shared memory bus
US7007267B2 (en) * 2001-01-24 2006-02-28 Texas Instruments Incorporated Transparent shared memory access in a software development system
US6925634B2 (en) * 2001-01-24 2005-08-02 Texas Instruments Incorporated Method for maintaining cache coherency in software in a shared memory system
US7380085B2 (en) * 2001-11-14 2008-05-27 Intel Corporation Memory adapted to provide dedicated and or shared memory to multiple processors and method therefor
US6757785B2 (en) * 2001-11-27 2004-06-29 International Business Machines Corporation Method and system for improving cache performance in a multiprocessor computer
US6934835B2 (en) * 2002-01-09 2005-08-23 International Business Machines Corporation Building block removal from partitions
US6823498B2 (en) 2002-01-09 2004-11-23 International Business Machines Corporation Masterless building block binding to partitions
US6910108B2 (en) * 2002-01-09 2005-06-21 International Business Machines Corporation Hardware support for partitioning a multiprocessor system to allow distinct operating systems
US7051180B2 (en) 2002-01-09 2006-05-23 International Business Machines Corporation Masterless building block binding to partitions using identifiers and indicators
US6826653B2 (en) 2002-02-06 2004-11-30 Hewlett-Packard Development Company, L.P. Block data mover adapted to contain faults in a partitioned multiprocessor system
US20040022022A1 (en) * 2002-08-02 2004-02-05 Voge Brendan A. Modular system customized by system backplane
US7051166B2 (en) * 2003-04-21 2006-05-23 Hewlett-Packard Development Company, L.P. Directory-based cache coherency scheme for reducing memory bandwidth loss
US7966389B2 (en) 2003-04-22 2011-06-21 Hewlett-Packard Development Company, L.P. System and method for application programming interface for extended intelligent platform management
US7305654B2 (en) * 2003-09-19 2007-12-04 Lsi Corporation Test schedule estimator for legacy builds
JP4507563B2 (ja) * 2003-11-10 2010-07-21 株式会社日立製作所 マルチプロセッサシステム
JP4119380B2 (ja) 2004-02-19 2008-07-16 株式会社日立製作所 マルチプロセッサシステム
JP2005250830A (ja) * 2004-03-04 2005-09-15 Hitachi Ltd プロセッサおよび主記憶共有マルチプロセッサ
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
WO2006031551A2 (en) 2004-09-10 2006-03-23 Cavium Networks Selective replication of data structure
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7970980B2 (en) * 2004-12-15 2011-06-28 International Business Machines Corporation Method and apparatus for accessing memory in a computer system architecture supporting heterogeneous configurations of memory structures
US7290094B2 (en) * 2005-05-17 2007-10-30 International Business Machines Corporation Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy
JP4831599B2 (ja) 2005-06-28 2011-12-07 ルネサスエレクトロニクス株式会社 処理装置
US7647469B2 (en) * 2005-07-22 2010-01-12 International Business Machines Corporation Method of assigning virtual import/export element addresses
JP5163128B2 (ja) * 2006-01-31 2013-03-13 富士通株式会社 共有メモリ型マルチプロセッサにおける手続の呼び出し方法、手続の呼び出しプログラム、記録媒体、およびマルチプロセッサ
US7493468B2 (en) * 2006-06-01 2009-02-17 International Business Machines Corporation Method for broadcasting instructions/data to a plurality of processors in a multiprocessor device via aliasing
JP5171118B2 (ja) * 2007-06-13 2013-03-27 キヤノン株式会社 演算処理装置及びその制御方法
US20090125706A1 (en) * 2007-11-08 2009-05-14 Hoover Russell D Software Pipelining on a Network on Chip
US8261025B2 (en) 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US7873701B2 (en) * 2007-11-27 2011-01-18 International Business Machines Corporation Network on chip with partitions
US7958314B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output I/O) hub/chipset resources
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8429353B2 (en) * 2008-05-20 2013-04-23 Oracle America, Inc. Distributed home-node hub
US8438578B2 (en) 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US7650488B2 (en) * 2008-06-18 2010-01-19 Intel Corporation Communication between processor core partitions with exclusive read or write to descriptor queues for shared memory space
US7743375B2 (en) * 2008-06-27 2010-06-22 International Business Machines Corporation Information handling system including dynamically merged physical partitions
US8234458B2 (en) * 2008-12-09 2012-07-31 Nvidia Corporation System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message
KR101574257B1 (ko) * 2009-06-01 2015-12-03 시게이트 테크놀로지 엘엘씨 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
US8364922B2 (en) * 2009-12-21 2013-01-29 International Business Machines Corporation Aggregate symmetric multiprocessor system
JP5573829B2 (ja) * 2011-12-20 2014-08-20 富士通株式会社 情報処理装置およびメモリアクセス方法
JP5590022B2 (ja) 2011-12-28 2014-09-17 富士通株式会社 情報処理装置、制御方法および制御プログラム
US9710275B2 (en) * 2012-11-05 2017-07-18 Nvidia Corporation System and method for allocating memory of differing properties to shared data objects
CN103049422B (zh) * 2012-12-17 2013-11-27 浪潮电子信息产业股份有限公司 一种具有多cache一致性域的多处理器节点系统构建方法
US9703697B2 (en) * 2012-12-27 2017-07-11 Intel Corporation Sharing serial peripheral interface flash memory in a multi-node server system on chip platform environment
JP2014160502A (ja) * 2014-04-28 2014-09-04 Fujitsu Ltd 情報処理装置およびメモリアクセス方法
JP5800058B2 (ja) * 2014-05-26 2015-10-28 富士通株式会社 情報処理装置、制御方法および制御プログラム
US9678872B2 (en) * 2015-01-16 2017-06-13 Oracle International Corporation Memory paging for processors using physical addresses
US10691375B2 (en) * 2015-01-30 2020-06-23 Hewlett Packard Enterprise Development Lp Memory network to prioritize processing of a memory access request
US10635307B2 (en) 2015-06-30 2020-04-28 International Business Machines Corporation Memory state indicator
US10884945B2 (en) 2015-06-30 2021-01-05 International Business Machines Corporation Memory state indicator check operations
CN109416682B (zh) * 2016-06-30 2020-12-15 华为技术有限公司 用于管理数据库的系统和方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5117350A (en) * 1988-12-15 1992-05-26 Flashpoint Computer Corporation Memory address mechanism in a distributed memory architecture
US4985825A (en) * 1989-02-03 1991-01-15 Digital Equipment Corporation System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
JPH08320828A (ja) * 1995-05-24 1996-12-03 Nec Eng Ltd マルチプロセッサシステム
JP3754112B2 (ja) * 1995-07-06 2006-03-08 株式会社日立製作所 プロセッサ間データ一貫性保証装置
US5710907A (en) * 1995-12-22 1998-01-20 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US5829034A (en) * 1996-07-01 1998-10-27 Sun Microsystems, Inc. Method and apparatus for a coherence transformer with limited memory for connecting computer system coherence domains
US5956754A (en) * 1997-03-03 1999-09-21 Data General Corporation Dynamic shared user-mode mapping of shared memory
US6456628B1 (en) * 1998-04-17 2002-09-24 Intelect Communications, Inc. DSP intercommunication network

Also Published As

Publication number Publication date
US6546471B1 (en) 2003-04-08
JPH10240707A (ja) 1998-09-11
US6088770A (en) 2000-07-11

Similar Documents

Publication Publication Date Title
JP3849951B2 (ja) 主記憶共有型マルチプロセッサ
JP3987162B2 (ja) 読取り−共有トランザクションのための強化ブロッキング・メカニズムを含むマルチプロセス・システム
US6510496B1 (en) Shared memory multiprocessor system and method with address translation between partitions and resetting of nodes included in other partitions
Archibald et al. Cache coherence protocols: Evaluation using a multiprocessor simulation model
KR100465583B1 (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는 비정형 메모리 액세스 데이터 처리 시스템 및 이 시스템에서의 통신 방법
US6789173B1 (en) Node controller for performing cache coherence control and memory-shared multiprocessor system
US6457100B1 (en) Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls
EP0817071B9 (en) A multiprocessing system configured to detect and efficiently provide for migratory data access patterns
JP2819982B2 (ja) 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム
US7577816B2 (en) Remote translation mechanism for a multinode system
US5950228A (en) Variable-grained memory sharing for clusters of symmetric multi-processors using private and shared state tables
CA2414438C (en) System and method for semaphore and atomic operation management in a multiprocessor
US5692149A (en) Block replacement method in cache only memory architecture multiprocessor
US20010013089A1 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
JPH10187470A (ja) スピンロック動作を最適化する装置を含むマルチプロセス・システム
US20050144399A1 (en) Multiprocessor system, and consistency control device and consistency control method in multiprocessor system
JPH10187645A (ja) プロセス・ノードの多数のサブノード内にコヒーレンス状態で格納するように構成されたマルチプロセス・システム
EP0764905B1 (en) An invalidation bus optimisation for multiprocessors using directory-based coherence protocols
US6950913B2 (en) Methods and apparatus for multiple cluster locking
US6671792B1 (en) Share masks and alias for directory coherency
US6970963B2 (en) Apparatus and method for synchronizing multiple accesses to common resources
JPH07152647A (ja) 共有メモリマルチプロセッサ
JP2000067009A (ja) 主記憶共有型マルチプロセッサ
JPH10187631A (ja) 拡張された対称マルチプロセッサ・アーキテクチャ
US7073004B2 (en) Method and data processing system for microprocessor communication in a cluster-based multi-processor network

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040218

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040318

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060410

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: 20060815

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060825

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: 20090908

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100908

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100908

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110908

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120908

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees