JP3864509B2 - マルチプロセッサシステム - Google Patents
マルチプロセッサシステム Download PDFInfo
- Publication number
- JP3864509B2 JP3864509B2 JP22223197A JP22223197A JP3864509B2 JP 3864509 B2 JP3864509 B2 JP 3864509B2 JP 22223197 A JP22223197 A JP 22223197A JP 22223197 A JP22223197 A JP 22223197A JP 3864509 B2 JP3864509 B2 JP 3864509B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- memory
- processor
- access request
- data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明は計算機システム、特に、複数のプロセッサを接続するマルチプロセッサシステムに関する。
【0002】
【従来の技術】
従来の多くの主記憶共有型マルチプロセッサにおいては、数台のプロセッサユニットとメモリユニットをバスで接続し、プロセッサユニット内のキャッシュ内容の一貫性を保証するために、スヌープキャッシュ方式を採用するのが一般的である。こういった計算機システムは、”Ben Catanzaro, ”Multiprocessor System Architectures”, Sun Microsystems, 1994”(参考文献1と呼ぶ)、あるいは、“Don Anderson/Tom Shanley、”PENTIUM PROCESSOR SYSTEM ARCHITECTURE Second Edition“,MINDSHARE,INC.,1995”(参考文献2と呼ぶ)などにその例を見ることができる。これらの従来例においては、複数のプロセッサユニットおよびメモリユニットは1本のバスで接続されている。またプロセッサユニット間はコヒーレンシ報告バスで接続されており、コヒーレンシ報告バスは、1本の共用通知線および1本のダーティ通知線から成る。動作フローは以下の通りである。尚、他キャッシュの状態検査を必要とするメモリアクセス要求をここではコヒーレントリード要求と呼ぶ。またコヒーレントリード要求に応答して各々のキャッシュが該当するキャッシュラインの状態をコヒーレントリード要求元に返答することをここではコヒーレンシ報告と呼ぶ。
【0003】
(1) いずれかのデータを要求するプロセッサユニットがコヒーレントリード要求をプロセッサユニットおよび主記憶を接続するバスに送出する。
【0004】
(2) 各プロセッサユニットはバス上にコヒーレントリード要求を観測した場合、プロセッサユニット間を接続するコヒーレンシ報告バスに対して返答を行う。各プロセッサユニットは、例えば当該データをクリーン状態で保持していた場合は、共用通知線をアサートする。例えば当該データをダーティで保持していた場合は、ダーティ通知線をアサートする。要求元プロセッサユニットでは、所定のサイクルに共用通知線およびダーティ通知線を検査する。所定のサイクルとは、各従来例によって異なり、参考文献1の例ではコヒーレントリード要求をバス上に送付してから固定サイクル後、参考文献2の例では、メモリからのデータリターンが返答されるまでとなっている。もし共用通知線がアサートされている場合は、少なくとも1つのプロセッサユニットがデータを共用していると判断し、自キャッシュの次状態を決定する。もしダーティ通知線がアサートされている場合は、少なくとも1つのプロセッサユニットが最新のデータを保持していると判断し、自キャッシュの次状態およびデータ送付元を決定する。このように、複数のプロセッサユニットからのコヒーレンシ報告を基に自キャッシュの状態あるいは最新データの送付元を決定する処理をここではコヒーレンシ報告の集計と呼ぶ。
【0005】
(3) メモリユニットがその要求が指定するデータをコヒーレントリード要求元のプロセッサユニットに送付する。
【0006】
(3’) いずれかのプロセッサユニットが、その要求が指定するデータを更新済みであるときには、メモリユニットに代わってそのプロセッサユニットがコヒーレントリード要求元のプロセッサユニットにデータを送信する。
【0007】
このようにバスによるwired論理を用いて複数のプロセッサからの状態報告の集計を行う方式をここではバス集計方式と呼ぶ。
【0008】
また特開平7−281956号公報(参考文献3と呼ぶ)においては、コヒーレントリード要求が同時に複数個オーバラップして実行される場合のコヒーレンシ報告集計方式について開示している。この従来例においては、複数のプロセッサユニットと1つのメモリユニットが1本のバスで接続されており、各プロセッサユニットとメモリユニットは別々のコヒーレンシ報告線により接続されている。コヒーレントリード時の動作フローは以下のようになる。
【0009】
(1) いずれかのデータを要求するプロセッサユニットがコヒーレントリード要求をプロセッサユニットおよびメモリユニットを接続するバスに送出する。
【0010】
(2) 各プロセッサがメモリユニットに対して、コヒーレンシ報告線を経由してコヒーレンシ報告を送付する。メモリユニットにおいては、各プロセッサから送付されたコヒーレンシ報告を集計し、コヒーレントリード要求元キャッシュの次状態を決定する。
【0011】
(3) メモリユニットがその要求が指定するデータをコヒーレントリード要求元のプロセッサユニットに送付する。これと同時にバス上に設けられた状態報告線によりコヒーレントリード要求元プロセッサユニットに対しキャッシュの次状態の通知を行う。
【0012】
(3’) いずれかのプロセッサユニットが、その要求が指定するデータを更新済みであるときには、主記憶に代わってそのプロセッサユニットがコヒーレントリード要求元のプロセッサユニットにデータを送信する。
【0013】
このような方式をここではユニット集中集計方式と呼ぶ。
【0014】
ところで、スヌープキャッシュ方式を実現するにあたって上記従来例ではコヒーレントリード要求を各プロセッサユニットおよびメモリユニットを接続するバスにより配布することを前提としている。これは少数台のプロセッサを安価に接続するためには有効な手段ではあるが、プロセッサユニット数、あるいは、主記憶ユニット数が増加すると、バスのトラフィックが増加し性能向上が困難となる。また、大規模なマルチプロセッサシステムを構成する際には、ドライブするべきユニット数が増加し、かつ、物理的な広がりが大きくなるため動作周波数を向上させることが困難となる。そこで、特開平9−138782号公報(参考文献4と呼ぶ)ではバスの代わりに、並列にアドレスおよびデータが転送可能な相互結合網(具体的にはクロスバ網)を用いてスヌープ処理を行う方法が開示されている。この従来例においては、コヒーレントリード要求の配布方法については開示しているが、コヒーレンシ報告の送付方法、および、集計方法に関しては開示していない。
【0015】
【発明が解決しようとする課題】
上記従来例のうち、バス集計方式に関しては、コヒーレンシ報告をバスで行うため、動作周波数を向上することが困難である。また、コヒーレントリード要求が同時に複数個オーバラップして実行されるようなシステムにおいては、コヒーレンシ報告の集計が完了するまで、次のコヒーレンシ報告を送付することができないため、オーバラップ可能なコヒーレントリード要求数が限定される。ユニット集中集計方式に関しては、主記憶容量を複数個設けた場合、および、スループットを高めるために主記憶制御ユニットが複数個設けた場合に対応できない。
【0016】
さらにいずれの従来例においても、上記に述べたクロスバ網などの相互結合網を利用したスヌープ方式には適用することができない。
【0017】
本発明の目的は、複数のプロセッサユニット、および、複数のメモリユニットを備えるマルチプロセッサシステムにおいて、コヒーレントリード要求が同時に複数個オーバラップして実行される場合に、オーバラップ可能なコヒーレントリード要求の数を限定することなく、コヒーレンシ報告の集計を行う機構を提供することである。
【0018】
本発明のより具体的な目的は、並列にアドレスおよびデータが転送可能な相互結合網を介して複数のプロセッサユニット、および、複数のメモリユニットが接続されるマルチプロセッサシステムにおいて、コヒーレントリード要求が同時に複数個オーバラップして実行される場合に、オーバラップ可能なコヒーレントリード要求の数を限定することなく、コヒーレンシ報告の集計を行う機構を提供することである。
【0019】
本発明の他のより具体的な目的は、プロセッサユニットと上記コヒーレンシ報告の集計を行う機構間のピン数をできるだけ少なく実現することである。
【0020】
【課題を解決するための手段】
本願発明の上記目的を達成するために、複数のプロセッサユニットの間にコヒーレンシ報告を転送するための第2の相互結合網を設け、該第2の相互結合網は全てのプロセッサユニットからのコヒーレンシ報告を集計し、コヒーレントリード要求元プロセッサユニットに集計結果を送付する。
【0021】
本願発明の他の目的を達成するために、プロセッサおよびメモリユニットを結合する第1の相互結合網から、コヒーレンシ報告の集計に必要な情報をコヒーレントリード発行時にコヒーレンシ報告集計を行う機構が得る手段を設ける。
【0022】
【発明の実施の形態】
以下、本発明に係わるマルチプロセッサシステムを図面に示したいくつかの実施の形態を参照してさらに詳細に説明する。なお、以下においては、同じ参照番号は同じものもしくは類似のものを表わすものとする。また、発明の第2の実施の形態以降においては、発明の第1の実施の形態との相違点を主に説明するに止める。
【0023】
<発明の実施の形態1>
(1)装置の構成
図1は、本発明になるマルチプロセッサシステムの全体構成で、2つのプロセッサボード10−0〜1、2つのメモリボード60−0〜1、入出力装置等の周辺装置を含むユニット(図示せず)、および、これらを接続するSC(System Connection)ボード30から構成される。メモリボード60−0〜1の各々は、プログラムおよびデータを保持する主記憶61、および、主記憶制御回路70を備え、主記憶61は主記憶制御回路70によりSCボード30と接続される。2つのメモリボード60−0〜1は64B単位にインタリーブされている。このインタリーブ単位はプロセッサボード10−0〜1内キャッシュ12のラインサイズにより定まる。プロセッサボード10−0〜1の各々は、プログラム命令を主記憶61から順次読み出し、順次それらの命令を実行するCPUコア11と、主記憶61の一部分の写しを格納するキャッシュ12と、これを制御するキャッシュ制御回路20、とを備える。キャッシュ制御回路20は、キャッシュ12のアクセスを制御するキャッシュアクセス制御回路21を備え、トランザクション送信回路22、および、トランザクション受信回路23により、SCボード30と接続される。SCボード30は、プロセッサボード10−0〜1間、あるいは、プロセッサボード10−0〜1−メモリボード60−0〜1間でアドレスおよびデータを通信するためのクロスバユニット40、および、本発明で特徴的なユニットであるコヒーレンシ報告集計ユニット50から構成される。クロスバユニット40とプロセッサボード10−0〜1、あるいは、メモリボード60−0〜1は8B幅の1対1の信号線L100−0〜3およびL400−0〜3で接続される。また、コヒーレンシ報告集計ユニット50とプロセッサボード10−0〜1も1対1の信号線L101−0〜1、L500−0〜1により接続される。この信号線L101−0〜1、L500−0〜1は後述するコヒーレンシ報告、および、その制御線であり、片道(3ビット+若干の制御線)である。コヒーレンシ報告集計ユニット50とメモリボード60−0〜1の各々は後述するメモリデータ転送を制御する信号線L501−0〜1により接続される。クロスバユニット40とコヒーレンシ報告集計ユニット50は、集計機能に必要な信号を伝達するための信号線L450、L540により接続される。クロスバユニット40は、スヌープ処理のためのマルチキャスト機能を持つ。クロスバユニット40内を通るアドレスおよびデータの1単位をここではSCトランザクション、あるいは、単にトランザクションと呼ぶ。
【0024】
本実施の形態においては、クロスバユニット40のポート0とコヒーレンシ報告集計ユニット50のポート0には、プロセッサボード10−0が接続される。同様に、クロスバユニット40のポート1とコヒーレンシ報告集計ユニット50のポート1には、プロセッサボード10−1が接続される。メモリボード60−0、および、メモリボード60−1は、クロスバユニット40およびコヒーレンシ報告集計ユニット50のポート2、3にそれぞれ接続される。
【0025】
以下では、まずメモリアクセスの動作概要を図9、および、図10を用いて説明し、この動作フローの各々のステップの詳細動作を図1〜図8を用いて説明する。
【0026】
(2)動作概要
以下では、CPUコア11によるメモリロードあるいはストア命令実行時で、キャッシュ12がミスした場合のシステム動作概要を説明する。尚、キャッシュ12がヒットした場合の動作は一般的なキャッシュを持つプロセッサシステムと同様である。本実施の形態において、キャッシュ12はストアイン方式を採用する。またキャッシュラインの取り得る状態は、「ダーティ」、「クリーン」、「共有」、「無効」の4状態とする。これは一般にMESIプロトコルと呼ばれるものと同一である。「ダーティ」、あるいは、「クリーン」の状態をあるキャッシュラインが示している場合、このラインは他のキャッシュ12からはキャッシングされていないことが保証される。「クリーン」あるいは「共有」の状態をあるキャッシュラインが示している場合、このライン内のデータは主記憶61上のデータと一致していることが保証される。各キャッシュライン状態の遷移に関しては、例えば参考文献2を参照されたい。但し、本実施の形態では次の点がこの参考文献記載のものと異なる。すなわち、他プロセッサボード10−0〜1からのコヒーレントリード要求に対して「ダーティ」状態でヒットした場合、自キャッシュ12の次状態を「共有」ではなく「無効」にし、主記憶61には書き戻さない。
【0027】
プロセッサボード10−0においてキャッシュミスが発生した場合の動作概要を最新のデータが主記憶中にある場合、および、プロセッサボード10−1内キャッシュ12にある場合に分けて図9、および、図10を用いて説明する。
【0028】
まず図9を用いて最新のデータが主記憶中にある場合(この場合を動作ケース1と呼ぶ)について説明する。このケースにおいては、プロセッサボード10−0内のCPUコア11がロード命令を発行し、そのデータがプロセッサボード10−0およびプロセッサボード10−1のキャッシュ12には存在しないことを仮定する。まずプロセッサボード10−0内のCPUコア11はメモリロード要求をキャッシュアクセス制御回路21に対して送付する(ステップA)。キャッシュアクセス制御回路21がキャッシュミスと判断し(ステップB)、トランザクション送信回路22がコヒーレントリード要求としてデータリードトランザクションをクロスバユニット40に対して送付する(ステップC)。クロスバユニット40ではこれを全プロセッサボード10−0〜1、および、指定されたメモリボード60−0に対してマルチキャストする(ステップD)。コヒーレントリード要求を受け取ったプロセッサボード10−0〜1の各々は(ステップE)、内部のキャッシュ12の状態を検査し、検査結果をコヒーレンシ報告CSR (Cohrency Status Report)としてコヒーレンシ報告集計ユニット50に送付する(ステップF)。コヒーレンシ報告集計ユニット50は、全てのコヒーレンシ報告を受け取った時点でこれを集計し、その集計結果CSS(Coherency Status Summary)をコヒーレントリード要求元プロセッサボード10−0へ送付する(ステップH)。またこれと同時にメモリボード60−0に対してメモリデータの転送許可通知を送付する(ステップH)。ステップE/Fと並行して、コヒーレントリード要求を受け取ったメモリボード60−0は、内部の主記憶61をアクセスする。コヒーレンシ報告集計ユニット50から転送許可通知を受けたら、得られたデータをデータトランザクションとして、クロスバユニット40へ送付する(ステップI)。クロスバユニット40はデータトランザクションをコヒーレントリード要求元のプロセッサボード10−0へ送付する(ステップJ)。CSSおよびメモリデータを受け取ったプロセッサボード10−0は、データおよび状態をキャッシュ12へ登録し、またデータをCPUコア11へ返答する(ステップL)。
【0029】
次に図10を用いて最新のデータが他プロセッサボード10−0〜1内キャッシュ12にある場合(この場合を動作ケース2と呼ぶ)について説明する。このケースにおいては、プロセッサボード10−0内のCPUコア11がストア命令を発行し、そのデータがプロセッサボード10−1のキャッシュ12内に「ダーティ」で存在することを仮定する。まずプロセッサボード10−0内のCPUコア11はストア要求をキャッシュアクセス制御回路21に対して送付する(ステップA)。キャッシュアクセス制御回路21がキャッシュミスと判断し(ステップB)、トランザクション送信回路22がコヒーレントリード要求としてデータリード−無効トランザクションをクロスバユニット40に対して送付する(ステップC)。クロスバユニット40ではこれを全プロセッサボード10−0〜1、および、指定されたメモリボード60−0に対してマルチキャストする(ステップD)。コヒーレントリード要求を受け取ったプロセッサボード10−1(ステップE)において内部のキャッシュ12を検査した結果、最新のデータを保持しているとキャッシュアクセス制御回路21が判断した場合、その結果をCSRとしてコヒーレンシ報告集計ユニット50に送付する(ステップF)。さらに、キャッシュ12から読み出した最新のデータをデータトランザクションとして、クロスバユニット40へ送付する(ステップG)。クロスバユニット40はデータトランザクションをコヒーレントリード要求元であるプロセッサボード10−0に送付する(ステップJ)。プロセッサボード10−0におけるステップE/Fの動作は動作ケース1の場合と同様である。全プロセッサボード10−0〜1からCSRを受け取ったコヒーレンシ報告集計ユニット50は、CSRを集計し集計結果をCSSとしてプロセッサボード10−0に送付する。さらに、コヒーレンシ報告集計ユニット50は、集計結果CSSにより主記憶61からのデータ転送が不要と判断できるため、データ転送抑止通知をメモリボード60−0に対して送付する(ステップH)。コヒーレントリード要求を受け取ったメモリボード60−0は、データ転送抑止通知が到着しているため、データトランザクションをクロスバユニット40に送付することなく処理を完了する(ステップI)。CSSおよびデータを受け取ったプロセッサボード10−0は動作ケース1と同様に、キャッシュ12に対してデータおよび状態を登録し、かつ、CPUコア11からのストアデータを格納する(ステップL)。
【0030】
キャッシュ12内データの主記憶61に対する書き戻しは、キャッシュラインの置換時、あるいは、命令による強制的なフラッシュにより行われる。この動作に関しては、従来技術と差がないため、必要な回路および説明を省略する。
【0031】
(3)動作の詳細
以下では、キャッシュミス時の動作の詳細を、図9における動作ケース1および図10における動作ケース2に関して説明する。文章中の各項番のうちアルファベット部は、図9、あるいは、図10の各ステップと対応している。以下で特に動作ケースの指示がない動作内容については、共通の動作となる。
【0032】
(3−A)キャッシュアクセス
図2を用いてキャッシュアクセス時の動作を説明する。CPUコア11内において実行中の命令がメモリアクセス命令、すなわちデータロード命令、あるいは、データストア命令であった場合、キャッシュ制御回路20内のキャッシュアクセス制御回路21に対して、信号線L110を経由してアドレスを、信号線L111を経由してアクセス種類、および、トランザクション識別子TXIDを送付する。ここで、アクセス種類とは命令ロード、データロード、データストアの区別を指す。
【0033】
動作ケース1においては、CPUコア11はアクセス種類としてデータロードを信号線L111を経由してキャッシュアクセス制御回路21に送付する。
【0034】
動作ケース2においては、CPUコア11はアクセス種類としてデータストアを信号線L111を経由してキャッシュアクセス制御回路21に送付する。
【0035】
(3−B)キャッシュミス判定
図2を用いてキャッシュミス判定時の動作を説明する。キャッシュアクセス制御回路21においては、送付されたアドレスを基にキャッシュ12を信号線L212を経由してアクセスし、キャッシュラインの状態を調べる。もし、指定されたアドレスに対応するキャッシュラインが存在しないか、存在してもその状態が有効でなかったらキャッシュ12がミスしたと判定し、信号線L214を経由してアドレスを、信号線L215を経由してトランザクション種類を、信号線L213を経由してトランザクション識別子TXID、および、自ポート番号0をトランザクション送信回路22に送付する。トランザクション種類は、CPUコア11から信号線L111経由で送付されたアクセス種により定められ、命令ロードの場合は命令リード、データロードの場合はデータリード、データストアの場合はデータリード−無効化となる。キャッシュ12の検査方法に関しては従来のキャッシュ制御方式と同様の技術であるため、ここでは説明を省略する。
【0036】
動作ケース1においては、CPUコア11からのアクセス種がデータロードであるため、トランザクション種はデータリードとなる。
【0037】
動作ケース2においては、 PUコアからのアクセス種がデータロードであるため、トランザクション種はデータリード−無効化となる。
【0038】
(3−C)SCトランザクション発行
図3および図5を用いてSCトランザクションの発行動作について説明する。キャッシュアクセス制御回路21から送付されたトランザクション種およびアドレスを基にコヒーレントリード要求となるSCトランザクションを生成し、SCボード内クロスバユニット40に対して発行する。SCトランザクションのフォーマットを図5に示す。SCトランザクションはデータ線L100−0〜3をヘッダサイクルT0、アドレスサイクルT1、データサイクルT2に分けて使用する。ヘッダサイクルT0はクロスバユニット40に対する指示を示しており、配布モードを示すヘッダ種T3、配布先を示すヘッダポート番号T4から成る。尚、ヘッダサイクルT0はクロスバユニット40に対する指示を示しており、クロスバユニット40から各ボード10−0〜1、60−0〜1に対しては出力されない。アドレスサイクルT1はプロセッサボード10−0〜1、あるいは、メモリボード60−0〜1に対する指示を示しており、各フィールドの意味としては、TX種T5は信号線L215を経由して指示されたトランザクション種、アドレスT6は信号線L214を経由して指示されたアドレス、ポート番号T7およびTXID T8は信号線L213を経由して指示されたものである。データサイクルT2中のデータはメモリボード60−0〜1からのデータリターン時、あるいはプロセッサボード10−0〜1からのプロセッサボード間転送時に送付されるべきデータを保持しており、64Bデータを送付する際は、8サイクルを要する。ただし、本実施の形態ではクロスバユニット40と各ボードを接続する信号線L100−0〜3、L400−0〜3の幅は片道8Bである。コヒーレントリード要求を送付する場合は、データサイクルT2は不要である。
【0039】
トランザクション送信回路22では、信号線L215を経由して指示されたトランザクション種を用い、ヘッダ生成回路においてヘッダ種T3を生成する。これはトランザクション種に対して一意に定まるものであり、表1の関係がある。
【0040】
【表1】
【0041】
トランザクション種がデータリード、あるいは、データリード−無効化の場合、ヘッダポート番号T4としてアクセスを行うメモリボード60−0〜1のポート番号を生成する必要がある。これはメモリボード60−0〜1のインタリーブ方法、および、アクセスするアドレスにより定まる。本実施の形態においては64B毎にインタリーブしているため、アドレスの下位7ビット目が0の場合ポート番号2を、アドレスの下位7ビット目が1の場合、ポート番号3を示す。この変換は信号線L214を経由してアドレスを受けた主記憶ポート番号生成回路220により行われ、生成されたヘッダポート番号T4はヘッダ生成回路221によりヘッダ種T3とマージされ、信号線L221を経由してヘッダサイクルT0を保持するレジスタ226に格納される。
【0042】
アドレスサイクルT1を保持するレジスタ225には、信号線L215を経由して通知されたトランザクション種、信号線L214を経由して通知されたアドレス、信号線L213を経由して通知されたポート番号およびTXID、がマージされて格納される。
【0043】
ヘッダサイクルT0、アドレスサイクルT1が揃ったところで、ヘッダサイクルT0、アドレスサイクルT1の順にセレクタ227は選択して信号線L100−i(i=0,1)、SCトランザクションとしてクロスバユニット40に送出する。
【0044】
またコヒーレントリード要求のアドレスサイクルT1の送付時には、TXIDT8、および、アドレスT6をトランザクション受信回路23へも信号線L220を経由して送付する。トランザクション受信回路23では、受け取ったTXID T8、および、アドレスT6をリードデータキュー230のTXIDフィールド231、および、ADDRフィールド231へそれぞれ格納する。
【0045】
動作ケース1においてトランザクション種がデータリードであるため、ヘッダサイクルT0におけるヘッダ種T3はMMCとなる。動作ケース2においてトランザクション種がデータリード−無効化であるため、ヘッダサイクルT0におけるヘッダ種T3は同様にMMCとなる。またいずれの動作ケースにおいてもアクセスするアドレスの下位7ビット目が0の場合を仮定し、ヘッダサイクルT0におけるヘッダポート番号T4は2となる。
【0046】
(3−D)マルチキャスト
プロセッサボード10−0からSCトランザクションを受け取ったクロスバユニット40は、これをヘッダサイクルT0の指示に従い、プロセッサボード10−0〜1、あるいは、メモリボード60−0〜1へ送付する。以下ではマルチキャスト時の動作について説明する。
【0047】
図6はクロスバユニット40の内部構造を示している。INQ 401−0〜2はプロセッサボード10−0〜1、メモリボード60−0〜1の各々から送付されたSCトランザクションを一時的に格納するキューである。図6においては、図面の都合上3ポートしか図示していない。INQCTL 402−0〜2はINQ 401−0〜2内に存在するSCトランザクションのヘッダサイクルT0をデコードし、ヘッダ種T3が1対1転送を指示している場合、出力ポート403−0〜2のアービタARB404−0〜2へ調停要求を送付する。また、ヘッダ種T3がマルチキャスト転送を指示している場合、本発明で特徴的なマルチキャストアービタMCARB 406へ調停要求を送付する。 信号線L402〜2はINQCTL 402−0〜2からの調停要求を送付するのに使用される。MCARB 406はマルチキャスト転送のためのアービタである。MCQ408はMCARB 406の調停結果を保持するキューであり、調停順序に応じてin−orderで管理される。MCDQ409はMCARB 406の調停結果により選択されたSCトランザクションのアドレスサイクルT1およびデータサイクルT2を保持するキューであり、MCQ408と連動して管理される。ID送付回路410は、MCQ408の内容を基にコヒーレンシ報告集計ユニット50に対して、CSSを送付すべきポート番号を送付する。ARB404−0〜2は各INQCTL 402−0〜2、および、MCARB 406からの調停要求を調停する回路である。信号線L403〜2およびL409はINQ 401−0〜2、および、MCDQ409からSCトランザクションのアドレスサイクルT1およびデータサイクルT2を送付するのに使用される。
【0048】
以下で動作ケース1におけるコヒーレントリード要求の送付動作について説明する。まず、プロセッサボード10−0が接続されている入力ポート400−0にSCトランザクションが到着し、INQ401−0へ格納される。INQCTL402−0はINQ401−0の先頭からSCトランザクションのヘッダサイクルT0を解釈する。この場合ヘッダサイクルT0はMMCであり、ヘッダポート番号T4は指定すべきメモリボード60−0〜1の接続されているポート番号すなわち「2」を示している。ヘッダ種T3がMMCであることを解釈すると、INQCTL402−0は信号線L402−0を経由して、調停要求、ヘッダ種T3、および、ヘッダポート番号T4をMCARB 406へ送付する。MCARB 406では、他INQCTL 402−1〜2からの調停要求との調停を行い、INQCTL402−0からの調停要求が勝利した場合、SCトランザクションの配付先、勝利したポート番号、ヘッダポート番号T4、ID送付の有無をMCQ408へ格納する。この場合SCトランザクションの配付先はポート0、ポート1、ポート2であり、勝利したポート番号は0、ヘッダポート番号T4は2、ID送付の有無は1である。ID送付の有無はヘッダ種T3がMMCの時のみ「1」であり、これ以外の場合「0」である。セレクタ407はMCARB406の調停結果を受け取り、調停結果の示す入力ポート、すなわち、入力ポート400−0から信号線L403−0を経由して送付されたアドレスサイクルT1を選択し、MCDQ409へ格納する。
【0049】
コヒーレンシ報告集計ユニット50からのビジー信号540がアサートされていない場合、MCQ408の先頭に格納されているSCトランザクション配付先のARB404−0〜2へ信号線L408を経由して調停要求を送付する。またMCDQ409は先頭のSCトランザクションを信号線L409経由で各出力ポート403−0〜2へ送付する。コヒーレンシ報告集計ユニット50からのビジー信号540がアサートされている場合、MCQ408からの調停要求の送付は行わない。各ARB404−0〜2では受け取った調停要求を調停し、MCQ408からの調停要求が勝利した場合、セレクタ405−0〜2を制御し、MCDQ409から信号線L409を経由して送付されたSCトランザクションを、信号線L400−0〜2経由で送付先であるプロセッサボード10−0、プロセッサボード10−1、メモリボード60−0へ送付する。もしMCQ408からの調停要求が敗北した場合、各ARB404−0〜2において次の調停機会では、必ずMCQ408からの調停要求が勝利するように制御する。全ARBにおいて調停が勝利したらMCQ408、および、MCDQ409は先頭をデキューする。上記制御により、コヒーレントリード要求は、MCARB 406において計算機システム内での順序が付けられ、この順に従い各プロセッサボード10−0〜1、あるいは、メモリボード60−0〜1に送付される。ただし、その到着時刻は必ずしも同時でなくても構わない。
【0050】
コヒーレンシ報告集計ユニット50からのビジー信号540がアサートされていない場合、MCQ408の先頭エントリにおけるID送付の有無の情報に従い、ID送付回路410はMCQ408内の勝利したポート番号、および、ヘッダポート番号T4を信号線450を経由してコヒーレンシ報告集計ユニット50へ送付する。コヒーレンシ報告集計ユニット50からのビジー信号540がアサートされている場合、この送付は行わない 。
【0051】
動作ケース2においても動作ケース1と同様の動作を行う。
【0052】
(3−E)スヌープアドレス受信
図4はトランザクション受信回路の内部構造を示している。TXデコーダ236はクロスバユニット40から送付されるSCトランザクションの解釈を行い、受け取ったSCトランザクションがコヒーレントリード要求の場合、スヌープアドレスキュー235にこれを格納する。受け取ったSCトランザクションがデータリターンあるいはプロセッサボード間転送であった場合に、リードデータキュー230はSCトランザクション中のデータサイクルT2を格納する。また(3−C)で述べたように、リードデータキュー230はトランザクション送信回路22から送付されたTXIDおよびアドレスを格納し、さらにコヒーレンシ報告集計ユニット50から送付されたコヒーレンシ報告の集計結果CSSを格納し、データ到着制御を行う。この動作は(3−K)で詳しく述べる。
【0053】
動作ケース1におけるスヌープアドレス受信時、クロスバユニット40より信号線L400−i(i=0,1)を経由してSCトランザクションを受け取った各プロセッサボード10−iは、これをTXデコーダ236で解釈する。SCトランザクション中アドレスサイクルT1のTX種T5がデータリードであるため、 TXデコーダ236は信号線L237経由でSCトランザクションをスヌープアドレスキュー235に送付し、これを格納する。スヌープアドレスキュー235はin−orderで管理され、キューの先頭から信号線L231を経由して、キャッシュアクセス制御回路21へコヒーレントリード要求を送付する。
【0054】
動作ケース2におけるスヌープアドレス受信時も、SCトランザクション中アドレスサイクルT1のTX種T5がデータリード−無効化であるため、動作内容は上記と同様である。
【0055】
(3−F)コヒーレンシ報告発行
図2を用いてコヒーレンシ報告発行動作の内、キャッシュアクセスの動作を説明する。信号線L231を経由してコヒーレントリード要求を受け取ったキャッシュアクセス制御回路21は、信号線L212を用いてキャッシュ12をアクセスし、キャッシュラインの状態を信号線L120経由で得る。またキャッシュラインの状態はトランザクション送信回路22にも送付される。この際、キャッシュアクセス制御回路21はトランザクション種を信号線L215経由でトランザクション送信回路22に送付する。キャッシュアクセス制御回路21では、コヒーレントリード要求中のトランザクション種、および、得られたキャッシュラインの状態により、もし必要があればキャッシュラインの状態の更新を行う。更新が必要な場合とは、例えばトランザクション種がデータリード−無効化であり、キャッシュライン状態が「無効」以外であった場合は、キャッシュラインの状態を「無効」に更新する。トランザクション種がデータリードで、キャッシュラインの状態が「クリーン」の場合、キャッシュラインの状態を「共有」に更新する。トランザクション種がデータリードで、キャッシュラインの状態が「ダーティ」の場合、キャッシュラインの状態を「無効」に更新する。キャッシュ状態更新の具体的な動作については従来のスヌープキャッシュと同様の制御であるため、詳細な説明は省略する。
【0056】
次に図3を用いてコヒーレンシ報告の発行動作を説明する。トランザクション送信回路22においてコヒーレンシ報告生成回路222は、上述のようにキャッシュ12から信号線L120経由でキャッシュラインの状態を受け取り、キャッシュアクセス制御回路21から信号線L215経由でトランザクション種を受け取る。これらを基に表2に従いコヒーレンシ報告CSRを生成する。
【0057】
【表2】
【0058】
生成したコヒーレンシ報告CSRはコヒーレンシ報告格納用レジスタ223に格納され、信号線L101−i(i=0,1)を経由して、コヒーレンシ報告集計ユニット50に送付される。
【0059】
動作ケース1において、プロセッサボード10−0の動作としては、コヒーレンシ報告生成回路222が受け取るキャッシュの状態は「無効」であり、トランザクション種はデータリードであるため、生成するコヒーレンシ報告はDONEとなる。プロセッサボード10−1の動作も同様である。
【0060】
動作ケース2において、プロセッサボード10−0の動作としては、コヒーレンシ報告生成回路222が受け取るキャッシュの状態は「無効」であり、トランザクション種はデータリード−無効化であるため、生成するコヒーレンシ報告はDONEとなる。プロセッサボード10−1の動作としては、コヒーレンシ報告生成回路222が受け取るキャッシュラインの状態は「ダーティ」であり、トランザクション種はデータリード−無効化であるため、生成するコヒーレンシ報告はDIRTYとなる。
【0061】
(3−G)データトランザクション発行
キャッシュアクセス制御回路21において、コヒーレントリード要求に対してキャッシュラインの状態が「ダーティ」であった場合、プロセッサボード10−0〜1間でのデータ転送のためのSCトランザクションを生成し、クロスバユニット40経由で、コヒーレントリード要求元プロセッサボード10−0〜1に送付する必要がある。
【0062】
図2において、(3−F)で述べたようにスヌープアドレスキュー235から信号線L231経由でコヒーレントリード要求を受け付けたキャッシュアクセス制御回路21は、キャッシュ12をアクセスし、キャッシュライン状態を信号線L120経由で得る。キャッシュライン状態が「ダーティ」であった場合、キャッシュアクセス制御回路21は、信号線L231経由でトランザクション種としてプロセッサボード間転送をトランザクション送信回路22に送付する。また、コヒーレントリード要求のアドレス部分を信号線L214経由で、コヒーレントリード要求中のポート番号およびTXIDを信号線L213経由でトランザクション送信回路22に送付する。
【0063】
トランザクション送信回路22では、(3−C)で述べた手順に従い、信号線L100−i(i=0,1)経由でクロスバユニット40に対してプロセッサボード間転送トランザクションを送付する。ただし、以下の点が(3−C)の手順と異なる。まず、ヘッダ生成回路221においてヘッダポート番号を信号線L213を経由して送付されたポート番号とする。また、信号線L120経由でキャッシュから送付されたデータをレジスタ224に格納し、SCトランザクションのアドレスサイクルT1の後にデータサイクルT2として付加する。
【0064】
上記動作は、動作ケース1のプロセッサボード10−1での動作となる。
【0065】
(3−H)コヒーレンシ報告集計
図7を用いてコヒーレンシ報告集計の動作を説明する。コヒーレンシ報告集計ユニット50において、CSRQ503−0〜1は各プロセッサボード10−0〜1から送付されたコヒーレンシ報告CSRを一時的に格納するキューであり、in−orderで管理される。DIDQ501はコヒーレンシ報告の集計結果CSSを送付すべきポート番号を格納しているキューであり、MIDQ502はデータ転送の許可あるいは抑止通知を送付すべきポート番号を格納しているキューである。DIDQ501およびMIDQ502はin−orderで管理される。集計回路507はCSRQ503−0〜1の内容を集計する回路であり、発火回路506により起動される。抑止信号生成回路508は集計回路によって得られたCSSを基にメモリボード60−0〜1に対してデータ転送許可通知、あるいは、抑止通知を送付する。
【0066】
以下で動作フローを説明する。コヒーレンシ報告集計ユニット50は、まず(3−D)で述べた様に、クロスバユニット40から信号線L450経由で集計したCSSの送付先ポート番号、および、データ転送抑止に使用するメモリボードポート番号を受け取り、これをDIDQ501およびMIDQ502にそれぞれ格納する。次に(3−F)で述べた様に、プロセッサボード10−0〜1の各々から信号線L101−0〜1経由でコヒーレンシ報告CSRを受け取り、各々のポートに対応するCSRQ503−0〜1に格納する。CSRQ503−0〜1の先頭に有効なCSRが存在しているか否かが信号線L503−0〜1を経由して発火回路506に通知される。また、どのポートにプロセッサボード10−0〜1が接続されているかを示す集計マスク505の内容が、信号線L505を経由して発火回路506に通知される。集計マスク505の各々のビットは、各ポートに対応し、「1」の場合はそのポートにプロセッサボード10−0〜1が接続されていることを示す。本実施の形態においては、集計マスクのビットはいずれも「1」である。発火回路506においては、集計マスクが「1」であるポートの全てにおいて、対応するCSRQ503−0〜1の先頭にCSRが存在することが信号線L503−0〜1で通知された場合、CSRの集計が可能であると判断し、信号線L506を用い集計回路507を起動する。集計回路507には信号線L503−0〜1を経由してCSRQ503−0〜1からCSRが送付される。また集計マスク505の内容が信号線L505を経由して送付される。さらに信号線L511を経由してDIDQ501から送付先ポート番号の存在が通知される。集計回路507は、表3の条件に従いCSRの集計を行いCSSの生成を行う。ただし、集計マップ501のビットが「0」であるポートに対するCSRは、全て「DONE」であるとみなす。
【0067】
【表3】
【0068】
集計回路507は、さらにCSSが生成された時点で、信号線L511を経由して送付されたDIDQ501の先頭の内容が有効であるか否かを調べ、もし有効でなければCSSをERRに置き換える。集計回路507は、生成したCSSを信号線L507を経由してDeMUX504(デマルチプレクサ)へ送付する。またDIDQ501はその先頭の内容を信号線L511を経由して送付先ポート番号をDeMUX504へ送付する。DeMUX504は通知された送付先ポート番号に従い、CSSを信号線L500−0〜1を経由してプロセッサボード10−0〜1へ送付する。また集計回路507は生成したCSSを信号線L507を経由して抑止信号生成回路508へ送付する。抑止信号生成回路508は、CSSがDIRTYの場合、抑止通知を、それ以外の場合転送許可通知を、信号線L508を経由してDeMUX510に送付する。MIDDQ502はその先頭のメモリボードポート番号を信号線L502を経由してDeMUX510へ送付する。DeMUX510は指定されたメモリポート番号の示すメモリボード60−0〜1に対して、抑止通知あるいは転送許可通知を信号線L501−0〜1経由で送付する。
【0069】
キャッシュ12アクセスの遅延などの理由であるプロセッサボード10−i(i=0,1)からのCSRの到着が遅れた場合、他プロセッサボード10−j(j=0,1)に対応するCSRQ503−j(j=0,1)がオーバフローする可能性がある。このオーバフローを避けるためにコヒーレンシ報告集計ユニット50から各々のプロセッサボード10−0〜1に対してCSRQ503−0〜1のビジーを伝える方法が考えられる。しかしこの場合コヒーレンシ報告集計ユニット50のピン数およびプロセッサボード10−0〜1のピン数が増大する。そこで本実施の形態では、まずDIDQ501およびMIDQ502のキュー長を、CSRQ503−0〜1のキュー長に比べて同じか少なくしておき、DIDQ501がオーバフローしそうな場合は、ビジーをクロスバユニット40に通知し、コヒーレントリード要求のマルチキャストを抑止する。こうすることで同時に存在し得るCSRの最大数をDIDQ501に登録されている数に制限できるためCSRQ503−0〜1のオーバフローを避けることができる。この方式を採用することでクロスバユニット40とコヒーレンシ報告集計ユニット50の間に1本のビジー信号L540のみが必要となり、全てのCSRQ503−0〜1のビジー線が不要となる。動作としては、ビジー制御回路500がDIDQ501に登録されている数を管理し、オーバフローしそうな場合はビジー信号L540をアサートする。ビジー信号L540アサート時の動作は(3−D)で説明したようにマルチキャストを抑止する。
【0070】
集計マスク505の設定については、種々の方式があり得る。本実施の形態では、システムの立ち上げ時にプロセッサボード10−0〜1の各々が一定期間信号線L101−0〜1を経由して固定パターン、例えばDONEをコヒーレンシ報告集計ユニット50に送付しておき、コヒーレンシ報告集計ユニット50内のマスク生成回路504では、これを観測して指定された固定パターン、例えばDONEを送付しているプロセッサボード10−0〜1に対応する集計マスク504のビットに「1」を設定し、これ以外のビットには「0」を設定する。これ以外にも、集計マスクを保持しているレジスタをあるI/O空間にマッピングしておき、CPUコア11がこのI/O空間に対して書き込みを行うことで、設定を行うといった方式があり得る。
【0071】
動作ケース1において上記動作は、クロスバユニット40の送付内容によりDIDQ501には「0」が、MIDQ502には「2」が格納される。プロセッサボード10−0〜1から送付されるCSRが全てDONEであり、集計回路507により生成されるCSSはDONEとなる。これをプロセッサボード10−0に送付する。また転送許可信号をメモリボード60−0に対して送付する。
【0072】
動作ケース2において上記動作は、クロスバユニット40の送付内容によりDIDQには「0」が、MIDQには「2」が格納される。プロセッサボード10−0から送付されるCSRはDONEであり、プロセッサボード10−1から送付されるCSRはDIRTYであるため、集計回路507により生成されるCSSはDIRTYとなる。これをプロセッサボード10−0に送付する。また転送抑止信号をメモリボード60−0に対して送付する。
【0073】
本実施の形態では、クロスバユニット40は、CSSの送付先ポート番号及びデータ転送抑止に使用するメモリポート番号をコヒーレンシ報告集計ユニット50へ送付していた。上記ポート番号は、各プロセッサボード10−0〜1がコヒーレントリードトランザクション中のアドレスサイクルT1を基に生成し、生成した上記ポート番号をCSRの送付時に各プロセッサボード10−0〜1がコヒーレンシ報告集計ユニット50へ信号線L101−0〜1を経由して送付することは可能である。しかし、この場合、信号線L101−0〜1が増加するためコヒーレンシ報告集計ユニット50のピン数が増加する。そこで、本実施の形態では、上記ポート番号をコヒーレントリードトランザクションの送付時に、クロスバユニット40から送付している。これにより、コヒーレンシ報告集計ユニット50のピン数を削減することができる。
【0074】
(3−I)データトランザクション発行/データ転送抑止
図8を用いてメモリボード60−0〜1におけるデータトランザクション発行およびデータ転送抑止の動作を説明する。メモリボード60−0〜1は主記憶61と主記憶制御回路70を備え、主記憶制御回路70内にはコヒーレントリードのためのアドレスおよびデータを保持するコヒーレントリードキュー701と、命令リードのためのアドレスおよびデータを保持する命令リードキュー706を備える。コヒーレントリードキュー701と命令リードキュー706はそれぞれSCトランザクションを受けた順にin−orderで処理される。コヒーレントリードキュー701と命令リードキュー706が分かれているのは、コヒーレントリードに関してはデータのプロセッサボード10−0〜1への転送を抑止可能とするためである。
【0075】
主記憶制御回路70内のTXデコーダ700は信号線L400−i(i=0,1)経由でクロスバユニット40からSCトランザクションを受け取り、TX種T5をデコードし、もしデータリードあるいはデータリード−無効化であればコヒーレントリードキュー701に、アドレスサイクルT1中のアドレスT6、ポート番号T7、TXIDT8を、ADDRフィールド703、DIDフィールド714、TXIDフィールド702、それぞれ格納する。TX種T5が命令リードであれば命令リードキュー706に、アドレスサイクルT1中のアドレスT6、ポート番号T7、TXIDT8を、ADDRフィールド708、DIDフィールド715、TXIDフィールド707に、それぞれ格納する。コヒーレントリードキュー701は先頭からADDRを信号線L713経由で調停/セレクタ710へ送付し、調停に勝利した場合、主記憶61に信号線L710経由でADDRを送付し、主記憶61をアクセスする。アクセスした結果得られたデータは信号線L610経由でコヒーレントリードキュー701に送付され、該当するエントリに格納される。これと並行して主記憶制御回路70は、コヒーレンシ報告集計ユニット50から信号線L501−i(i=0,1)を経由して抑止通知あるいは転送許可通知を受け取り、コヒーレントリードキュー701のENフィールド705に順次格納する。コヒーレントリードキュー701の先頭エントリのDATAフィールド704、および、ENフィールド705が有効になったら、トランザクション生成回路711へコヒーレントリードキュー701の先頭エントリの内容を信号線L701を経由して送付する。トランザクション生成回路711においては、ENフィールド705がもし抑止である場合は、コヒーレントリードキュー701からデキューするのみで、データをプロセッサボード10−0〜1に対して送付しない。もしENフィールド705が転送許可である場合は、コヒーレントリードキュー701の内容によりSCトランザクションを生成する。この際、ヘッダサイクルT0におけるヘッダ種T3はSU、ヘッダポート番号T4はDIDフィールド714の内容となる。アドレスサイクルT1のTX種T5はデータリターン、アドレスT6はADDRフィールド703の内容、ポート番号T7はDIDフィールド714の内容、TXIDT8はTXIDフィールド702の内容、となる。データサイクルT2はDATAフィールド704の内容を8サイクルに分けて送付する。トランザクション生成回路711は生成したSCトランザクションを調停/セレクタ713へ信号線L711を経由して送付し、調停/セレクタ713は調停に勝利したSCトランザクションを、信号線L100−i(i=0,1)経由で主記憶制御回路70からクロスバユニット40へ送付する。命令リードキュー706の動作については、ENフィールド705が存在せず、したがって、データリターンの抑止がないこと以外はコヒーレントリードキュー701の動作と同じである。
【0076】
動作ケース1の場合はTX種T5がデータリードである。またコヒーレンシ報告集計ユニット50からは転送許可通知が送付されるため、SCトランザクションとしてデータリターンをクロスバユニット40へ送付する。
【0077】
動作ケース2の場合はTX種T5がデータリード−無効化である。またコヒーレンシ報告集計ユニット50からは転送抑止通知が送付されるため、SCトランザクションを送付せず、コヒーレントリードキューのデキューのみを行う。
【0078】
(3−J)1対1転送
以下では図6を用いて、動作ケース1においてメモリボード60−0からプロセッサボード10−0へのデータリターントランザクション処理時のクロスバユニット40の動作について説明する。クロスバユニット40は信号線L100−2を経由してSCトランザクションをメモリボード60−0から受け取り、INQ401−2へ格納する。INQCTL402−2はINQ401−2の先頭エントリに関して、ヘッダサイクルT0の解釈を行い、ヘッダ種T3がSUである場合、ヘッダサイクルT0のヘッダポート番号T4により指定される出力ポート0403−0に対応するARB404−0へ信号線L402−2を経由して調停要求を送付する。ARB404−0では調停処理を行い、もしINQCTL402−2からの要求が勝利した場合、ARB404−0はセレクタ405−0へ調停結果を信号線L404−0を経由して通知し、セレクタ405−0はINQ401−2から信号線L403−2を経由して送付されるアドレスサイクルT1およびデータサイクルT2を選択し、信号線L400−0を経由してプロセッサボード10−0へSCトランザクションを送付する。
【0079】
動作ケース2におけるプロセッサボード間転送時も、SCトランザクションの発行元がプロセッサボード10−1であり、SCトランザクションを受け付ける入力ポートが入力ポート400−1であることを除けば、上記と同様のフローとなる。
【0080】
尚、命令リード時に送付されるSCトランザクションにおいてヘッダ種T3はQMとなるが、この送付動作もここで説明したヘッダ種T3がSU時の動作と同様である。
【0081】
(3−K)データ/状態受信
以下では図4を用いてプロセッサボード10−0〜1におけるデータおよびCSSの受信制御について説明する。トランザクション受信回路23内のリードデータキュー230は、データのリターンおよびCSSの到着を待ち合わせるためのキューである。リードデータキュー230におけるTXIDフィールド231およびADDRフィールド232はコヒーレントリード要求発行時にトランザクション送信回路22から送付されるTXIDおよびアドレスを格納する。またDATAフィールド233はデータリターントランザクションあるいはプロセッサボード間転送トランザクションのデータサイクルT2を格納する。CSSフィールド234はCSSを格納する。TXIDフィールド、ADDRフィールド、CSSフィールドの格納はin−orderで行う。DATAフィールドの格納はout−of−orderで行い、格納すべきエントリはTXIDをキーとして検索する。リードデータキューのデキューはin−orderで行う。
【0082】
動作ケース1におけるデータ/CSS受信動作について説明する。トランザクション受信回路23は、信号線L400i−i(i=0,1)を経由して送付されたSCトランザクションを、TXデコーダ236において解釈し、Tx種T5がデータリターンであるため、アドレスサイクルT1内TXIDT8の内容と同一のTXIDフィールド231の内容を持つリードデータキュー230のエントリへ、SCトランザクションのデータサイクルT2を信号線L236を経由して格納する。またこれとは非同期にトランザクション受信回路23はコヒーレンシ報告集計ユニット50から信号線L500−i(i=0,1)経由で送付されたCSSを受け取り、これを順次リードデータキュー230のCSSフィールド234へ格納する。ここで、CSSの到着はコヒーレントリード要求の発行順に返答されることを期待しており、データリターンは、コヒーレントリード要求の発行順序とは無関係に返答されても構わない。リードデータキュー230の先頭において、DATAフィールド233およびCSSフィールド234が有効となった場合、このエントリの内容を全て、信号線L230経由でキャッシュアクセス制御回路21へ送付する。
【0083】
動作ケース2においては、TX種T5がデータリターンではなくプロセッサボード間転送であるが、動作は上記と同様である。
【0084】
(3−L)キャッシュ登録/CPUコア返答
図2においてトランザクション受信回路23から信号線L230経由でリターンデータを受け取ったキャッシュアクセス制御回路21では、ADDRフィールドの示すアドレスを用いてキャッシュ12へデータおよびキャッシュ状態を格納する。格納するキャッシュ状態は、もしCSSフィールドがDONEであった場合は「クリーン」、SHAREDであった場合は「共有」、DIRTYであった場合は「ダーティ」である。また、CPUコア11に対してTXID、および、リターンデータを信号線L210を経由して送付する。この動作は従来のスヌープキャッシュの制御とほぼ同一であるため、詳細な説明は省略する。
【0085】
図11は実施の形態1の実装図を示している。1つのプロセッサボード10−i(i=0,1)は1枚のボード上に実装される。また1つのメモリボード60−i(i=0,1)も1枚のボード上に実装される。またクロスバユニット40とコヒーレンシ報告集計ユニット50は、同じSCボード上に実装される。これらボードをバックプレーン80へ挿入することで計算機システムを構築する。プロセッサボード10−0〜1、あるいは、メモリボード60−0〜1はSCボード30のポート数が許す限りは増設可能であり、また最小限のシステムまでは縮退が可能である。
【0086】
<発明の実施の形態1の変形>
(1)実施の形態1では、キャッシュ12の制御方式としてストアイン方式を前提としたが、これをストアスルーにしても構わない。この場合、キャッシュの状態としてDIRTY状態が存在しなくなることを除けば、動作フロー自体は同じである。
【0087】
(2)実施の形態1では、プロセッサボード10−0〜1、および、メモリボード60−0〜1の数をそれぞれ2としているが、これはさらに多数台のボードを接続しても構わない。この場合、クロスバユニット40およびコヒーレンシ報告集計ユニット50において入力ポートおよび出力ポートに関わる回路を増やすことで実現できる。
【0088】
(3)実施の形態1では、クロスバユニット40およびコヒーレンシ報告集計ユニット50を同一のボードに実装しているが、これを別々のボードに実装しても構わない。また、クロスバユニット40あるいはコヒーレンシ報告集計ユニット50のいずれか、あるいは、両方をバックプレーン上に実装しても構わない。
【0089】
(4)実施の形態1では、コヒーレントリード要求を発行したプロセッサボード10−i(i=0,1)以外のプロセッサボード10−j(j=0,1)が最新のデータを保持していた場合、メモリボード60−0〜1からのデータ転送を抑止していた。これは、コヒーレンシ報告の集計完了がメモリボード60−0〜1における主記憶のアクセスより早いことを前提としている。もしコヒーレンシ報告の集計が設計上早く行うことができない場合、それだけメモリボード60−0〜1からのデータリターントランザクション送付が遅延してしまう。これを避けるには、メモリボード60−0〜1においてはデータ転送の抑止を行わず、そのままデータトランザクションをプロセッサボード10−0〜1へ送付する。プロセッサボード10−0〜1においては、メモリボード60−0〜1からのデータリターンによるデータ、および、他プロセッサボード10−0〜1からのプロセッサボード間転送によるデータの双方をトランザクション受信回路23中のリードデータキュー内DATAフィールドに保持する。CSSが到着した時点で、CSSがDIRTYであればプロセッサボード間転送によるデータを有効とし、それ以外の場合はデータリターンによるデータを有効とする、という方式が考えられる。
【0090】
<発明の実施の形態2>
実施の形態1は、各プロセッサボード10−0〜1中にCPUコア11が1つしかない例であった。この場合、計算機システム全体におけるCPUコア11の数を増加させるためには、クロスバユニット40およびコヒーレンシ報告集計ユニット50のポート数を増加させる必要がある。しかし、ピン数、および、ゲート数の制約によりポート数の増加は限度がある。そこで1つのプロセッサボード10−0〜1に複数のCPUコア11を搭載する場合を考える。
【0091】
(1)装置の構成
図12および図13を用いて実施の形態2におけるプロセッサボード10−0〜1の構成を説明する。図12においてCPUコア11、キャッシュ制御回路20、キャッシュ12をまとめてプロセッサユニット13−0〜1と呼び、プロセッサボード10−0〜1はこのプロセッサユニット13−0〜1を2つ備え、プロセッサユニット13−0〜1とSCボード間にSCインタフェース回路24を設けたことが実施の形態1と異なる。図13においてSCインタフェース回路24は、各プロセッサユニット13−0〜1からのSCトランザクションを受け付けるTXQ240−0〜1、CSRをプロセッサボード10−0〜1内部で集計するためのローカル集計回路244、コヒーレンシ報告集計ユニット50からのCSSをプロセッサユニットのどちらに送付するかを示すSRCQ248を備える。ローカル集計回路244に関連する構成要素として、各々のプロセッサユニット13−0〜1からのCSRを格納するLCSRQ242−0〜1、および、各々のプロセッサユニット13−0〜1が存在するか否かを示すローカル集計マップ243を備える。ローカル集計マップはどのプロセッサユニット13−0〜1が実装されているかを対応するビットにより示す。このような構成により、SCボード30のポート数を増やすことなく、CPUコア11の台数を増加させることができる。以下では、コヒーレントリード要求の処理において実施の形態1と異なる点についてのみ述べ、同じ動作を行うものについては説明を省略する。
【0092】
(3−C)SCトランザクション発行
実施の形態1において、SCトランザクション中のTXIDT8はCPUコア11から信号線L111を経由して送付されるものであった。本実施の形態においては、これをCPUコア11から送付されるTXIDに自プロセッサユニット識別子PUIDを付加する。PUIDはプロセッサユニット13−0〜1のプロセッサボード10−0〜1内における実装位置によって定まる。PUIDはトランザクション送信回路22においてアドレスサイクルT1を生成する際にTXIDT8に付加される。
【0093】
また実施の形態1においては、SCトランザクションが生成された後に信号線L100−i(i=0,1)を経由してクロスバユニット40に送付していたが、これを本実施の形態では、信号線L130−0〜1を経由してSCインタフェース回路24に送付する。SCインタフェース回路24は、受け取ったSCトランザクションを対応するTXQ240−0〜1に格納する。TXQ240−0〜1の各々の先頭からSCトランザクションが読み出され、これが調停/セレクタ245へ送付される。調停/セレクタ245はSCトランザクションの調停を行い、勝利した方を信号線L100−i(i−0,1)を経由してクロスバユニット40へ送付する。またSCトランザクションをクロスバユニット40へ送付した際に、このアドレスサイクルT1中のTXID中のPUIDを信号線L245経由でSRCQ248に格納する。これは、後述するCSSの到着時に返答すべきプロセッサユニット13−0〜1を特定するためである。
【0094】
(3−E)スヌープアドレス受信
実施の形態1においては、クロスバユニット40が信号線L400−i(i=0,1)を経由して送付したSCトランザクションを直接トランザクション受信回路23が受信していたが、本実施の形態においては、これをSCインタフェース回路24が受信する。SCインタフェース回路24においては、受信制御回路246においてアドレスサイクルT1を解釈し、TX種T5がコヒーレントリード要求であった場合は、信号線L132−0〜1を経由してプロセッサユニット13−0〜1の各々に対してSCトランザクションを送付する。
【0095】
(3−F)コヒーレンシ報告発行
実施の形態1では生成したCSRをコヒーレンシ報告集計ユニット50のみで集計していたが、これをそのまま適用すると、コヒーレンシ報告集計ユニット50内にプロセッサユニット13−i(iは任意の整数)対応にCSRQ503−i(iは任意の整数)を持つ必要が生じるため、コヒーレンシ報告集計ユニット50に実装可能なゲート数によりCPUコア11数の増加に制限が生じる。そこで本実施の形態においては、まずプロセッサボード10−0〜1単位にCSRの集計を行い、集計結果をさらにコヒーレンシ報告集計ユニット50へ送付し、全体の集計を行う。表3に示した集計アルゴリズムは、任意個のCSSに対して、どのCSSから集計アルゴリズムを適用しても結果は変わらないという性質を持つ。この性質を利用することでプロセッサボード10−0〜1内でローカルにCSSの集計が可能となる。
【0096】
実施の形態1ではトランザクション送信回路22が生成したCSSを信号線L101−i(i=0,1)を経由してコヒーレンシ報告集計ユニット50に送付していたが、これを信号線L130−0〜1を経由してSCインタフェース回路24に送付する。SCインタフェース回路24では受け取ったCSRをLCSRQ242−0〜1に格納する。LCSRQ242−0〜1はin−orderで制御される。LCSRQ242−0〜1の各々の先頭から、内容をローカル集計回路244に送付する。ローカル集計回路244においては、ローカル集計マップ243が「0」であるビットに対応するLCSRQ242−0〜1の内容は常にDONEであるとみなし、表3のアルゴリズムに基づいて集計を行う。生成したCSSはプロセッサボード10−0〜1単位のCSRとして信号線L101−i(i=0,1)を経由してコヒーレンシ報告集計ユニット50へ送付する。
【0097】
(3−G)データトランザクション発行
実施の形態1における動作ケース2の場合のプロセッサボード10−1においては、SCトランザクションが生成された後に信号線L100−1を経由してクロスバユニット40に送付していたが、これを本実施の形態では、信号線L130−0〜1を経由してSCインタフェース回路24に送付するよう変更する。SCインタフェース回路24は、受け取ったSCトランザクションを対応するTXQ240−0〜1に格納する。TXQ240−0〜1の各々からクロスバユニット40へのSCトランザクション発行は本実施の形態における(3−C)の動作と同様である。ただし、PUIDのSRCQ248への送付は行わない。
【0098】
(3−K)データ/状態受信
実施の形態1におけるプロセッサボード10−0において、クロスバユニット40からのSCトランザクションは信号線L400−0を経由して直接トランザクション受信回路23により受信されたが、本実施の形態においてはまずSCインタフェース回路24によりSCトランザクションが受信され、受信制御回路246によりアドレスサイクルT1が解釈される。アドレスサイクルT1中のTX種T5がデータリターン、あるいは、プロセッサ間転送の場合、TXIDT8中のPUIDが指定するプロセッサユニット13−0〜1へ、信号線L132−0〜1を経由してSCトランザクションを送付する。
【0099】
また実施の形態1においては、コヒーレンシ報告集計ユニット50からのCSSは信号線L500−i(i=0,1)を経由して直接トランザクション受信回路23により受信されたが、本実施例においてはまずSCインタフェース回路24によりCSSが受信され、SRCQ248の先頭の内容が指示するプロセッサユニット13−0〜1に対して、信号線L133−0〜1を経由してCSSを送付する。
【0100】
データおよびCSSを受け取ったプロセッサユニット13−0〜1の動作は、実施の形態1におけるプロセッサボード10−0〜1の動作と同様である。
【0101】
<発明の実施の形態3>
実施の形態1においては、クロスバユニット40から送付されたコヒーレントリード要求の順序に従い、コヒーレンシ報告集計ユニット50では全てのCSRの到着後にCSRの集計および送付を行っていた。これに対して実施の形態3においては、「CSSの確定後にCSRの集計を行い」、「コヒーレントリード要求の順序とは無関係にCSSの送付を行う」点が異なる。すなわち、コヒーレンシ報告集計の性質を考えると、少なくとも1つのプロセッサボード10−0〜1からのCSRがSHAREDであれば、他のCSRの結果に依らずCSSはSHAREDと確定する。また1つのプロセッサボード10−0〜1からのCSRがDIRYTであれば他のCSRの内容に依らずCSSはDIRTYと確定する。ただし、この場合実施の形態1で示した不正なCSRの組合せがないことを前提としている。そこで、まず不正なCSRの組合せがないことを前提にCSSが確定次第CSSをプロセッサボード10−0〜1に送付する。全CSRの到着後不正なCSRの組合せが検出された場合は、CSSが既に発行されている/いないに関わらずERRをCSSとして、プロセッサボード10−0〜1に送付する。これにより、実施の形態1においては、あるプロセッサボード10−i(i=0,1)のコヒーレンシ報告が大きく遅延した場合、全てのCSSの発行が遅れるのに対して、この実施の形態では他の後続のCSSの発行は遅延したCSRに依らず行えるため、データのCPUコア11へのリターンを早めることができる。尚、各プロセッサボード10−0〜1からのコヒーレンシ報告集計ユニット50へのCSRの送付は実施の形態1と同様に、コヒーレントリード要求の順序に従う。
【0102】
(1)装置の構成
実施の形態3においては、実施の形態1とはコヒーレンシ報告集計ユニット50の構成が異なる。図14にコヒーレンシ報告集計ユニット50の内部構成を示す。コヒーレンシ報告集計ユニット50は、出力ポート対応にポート集計回路525−0〜1を有する。ポート集計回路525−0〜1は、CSRテーブル526および集計回路530を備え、CSRテーブル526は、TXIDフィールド527、MIDフィールド528、入力ポートの各々に対応するCSRフィールド529−0〜1を備える。また、入力ポート側にはプロセッサボード10−0〜1からのCSRをどのポート集計回路に格納するかを指示するための、DIDQ521−0〜1を備える。以下では、コヒーレントリード要求の処理において実施の形態1と異なる点についてのみ述べる。
【0103】
(3−F)コヒーレンシ報告発行
実施の形態1においては、プロセッサボード10−0〜1からコヒーレンシ報告集計ユニット50へは信号線L101−0〜1を経由してCSRのみを送付していた。これに対し実施の形態3においては、TXIDをCSRに付加して送付する。すなわち、コヒーレンシ報告生成回路222においては、実施の形態1と同様にCSRを生成した後、信号線L213を経由して送付されるTXIDを取り込み(取り込む線に関しては図示していない)、これをCSRに付加し、信号線L101−0〜1を経由してコヒーレンシ報告集計ユニット50に送付する。
【0104】
(3−H)コヒーレンシ報告集計
コヒーレンシ報告集計ユニット50は、まず実施の形態1の(3−D)で述べたように、クロスバユニット40から信号線L450経由で集計すべきCSRの送付先ポート番号、および、データ転送抑止に使用するメモリボードポート番号を受け取り、まずメモリボードポート番号は送付先ポート番号の指定するポート集計回路525−0〜1内のCSRテーブル526内MIDフィールド528に格納する。また送付先ポート番号はDIDQ521−0〜1の各々に格納する。次に実施の形態3の(3−F)で述べたように、プロセッサボード10−0〜1の各々から信号線L101−0〜1を経由してCSRおよびTXIDを受け取り、各入力ポートに対応するDIDQ521−0〜1の指示するポート集計回路525−0〜1内のCSRテーブル526の入力ポートに対応するCSRフィールド529−0〜1、および、TXIDフィールド527へ格納する。CSRテーブル526はenqueue, dequeueはin−orderで管理し、集計およびCSSの送付はout−of−orderで管理する。集計回路530は、CSRテーブル526の全エントリを検査し、表4に従いCSSの生成を行う。
【0105】
【表4】
【0106】
集計回路530は、生成したCSSおよびTXIDフィールド527中のTXIDを信号線L500−0〜1を経由して、対応するプロセッサボード10−0〜1へ送付する。また、実施の形態1と同様に生成したCSSを基にメモリボード60−0〜1に対する抑止通知、あるいは、転送可能通知を生成し、これにTXIDフィールド527中のTXIDを付加して、CSSを生成したエントリのMIDフィールド528が指示するメモリボード60−0〜1へ信号線L530−0〜1、調停/セレクタ531〜532、信号線L501−0〜1を経由して発行する。もし複数のエントリにおいてCSSが確定したら、CSRテーブル526の先頭に近いものから優先してCSSの発行を行う。また集計回路530は、CSRエントリ526の先頭において全てのCSRフィールド529−0〜1が有効であるか否かを検査し、もし有効であった場合は、不正なCSRの組合せがないか検査する。不正なCSRの組合せとは、DIRTYのCSRが存在しており、かつ、その他のCSRがDONE以外の場合である。不正なCSRの組合せを検出した場合、対応するプロセッサボード10−0〜1へCSSとしてERRを信号線L500−0〜1を経由して送付し、当該エントリをデキューする。また不正なCSRの組合せが存在しない場合、当該エントリをデキューする。
【0107】
(3−I)データトランザクション発行/データ転送抑止
実施の形態1においては、図8においてメモリボード60−i(i=0,1)は信号線L501−i(i=0,1)を経由してコヒーレンシ報告集計ユニット50から、コヒーレントリードトランザクションを受け取った順に、転送許可あるいは転送抑止通知を受け取っていた。本実施の形態では、転送許可あるいは転送抑止通知はコヒーレントリードトランザクションの到着順とは無関係に到着する代わりに、対応するトランザクションのTXIDが付加される。したがって、主記憶制御回路70においては、信号線L501−i(i=0,1)経由で転送許可あるいは転送抑止通知を受け取った際に、付加されているTXIDを基にコヒーレントリードキュー701を検索し、TXIDフィールド702に同じ内容を持つエントリに対して、そのENフィールド705に転送許可あるいは転送抑止通知を格納する。
【0108】
(3−K)データ/状態受信
実施の形態1においては、図4においてトランザクション受信回路23は信号線L500−i(i=0,1)を経由してコヒーレンシ報告集計ユニット50から、コヒーレントリードトランザクションを受け取った順に、CSSを受け取っていた。本実施の形態では、CSSはコヒーレントリードトランザクションの発行順とは無関係に到着する代わりに、対応するトランザクションのTXIDが付加される。したがって、トランザクション受信回路23においては、信号線L500−i(i=0,1)経由でCSSを受け取った際に、付加されているTXIDを基にリードデータキュー230を検索し、TXIDフィールド231に同じ内容を持つエントリに対して、そのCSSフィールド234にCSSを格納する。
【0109】
また実施の形態1においては信号線L230を経由してリードデータキュー230の先頭エントリからその内容をキャッシュアクセス制御回路21へ送付していたが、本実施の形態においては、DATAフィールド233、および、CSSフィールド234がout−of−orderで有効となるため、両方が揃ったエントリからその内容を信号線L230を経由してキャッシュアクセス制御回路21へ送付する。
【0110】
<実施の形態3の変形例>
(1)実施の形態3において、プロセッサボード10−0〜1からコヒーレンシ報告集計ユニット50へのCSRの送付の際、TXIDを付加して送付していた。これは、クロスバユニット40においてはヘッダサイクルT0で得られる情報のみしかコヒーレンシ報告集計ユニット50には送付していないため、アドレスサイクルT1に含まれるTXIDについては、プロセッサボード10−0〜1から送付している。しかしTXIDを送付するためには、このための信号線をプロセッサボード10−0〜1とコヒーレンシ報告集計ユニット50の間に設けるか、あるいは、複数サイクルをかけてCSSおよびTXIDを送付する必要がある。これを避けるためには、クロスバユニット40(図6)におけるID送付回路410においてMCDQ409内のアドレスサイクルT1を解釈し、TXIDT8を信号線L450を経由して送付する方法が考えられる。この場合、必要となる信号線の追加はクロスバユニット40とコヒーレンシ報告ユニットに限定されるため、ピン数の増加を抑えることができる。
【0111】
<発明の実施の形態4> (バス結合)
実施の形態1は、コヒーレントリード要求、および、データリターン、プロセッサボード間転送がクロスバユニット40という「並列にトランザクションを送付可能な相互結合網」を用いて転送している。本実施の形態においては、これをバスに置き換えた場合について述べる。この構成により、メモリボード60−0〜1が複数存在するような計算機システムにおいて、コヒーレントリード要求が同時に複数個オーバラップ可能なマルチプロセッサシステムを安価に提供できる。
【0112】
(1)装置の構成
図15は実施の形態4における計算機システムの全体構成である。実施の形態1ではクロスバユニット40を用いていたのと異なり、プロセッサボード10−0〜1の各々、および、メモリボード60−0〜1の各々をバス31で接続している。コヒーレンシ報告集計ユニット50とプロセッサボード10−0〜1、あるいは、メモリボード60−0〜1との接続形態は実施の形態と同様であるが、実施の形態1ではクロスバユニット40とコヒーレンシ報告集計ユニット50が接続されていたのに対して、バス31とコヒーレンシ報告集計ユニット50が信号線L310で接続されている点が異なる。図16は本実施の形態におけるコヒーレンシ報告集計ユニット50の内部構成を示している。実施の形態1とは異なり、コヒーレンシ報告集計ユニット50はDIDQ501およびMIDQ502を登録するためにTX種デコーダ540、および、主記憶ポート番号生成回路550を備える。また、プロセッサボード10−0〜1においてトランザクション送信回路22(図3)は、ヘッダ生成回路221、主記憶ポート番号生成回路220、ヘッダサイクルT0を保持するレジスタ226が必要なくなるが、これに関しては図示していない。またバス31を用いたことによりバスアービタが必要となるが、これについては従来技術で実現可能であるため、図示および説明を省略する。
【0113】
(3−C)SCトランザクション発行
実施の形態1と比較して、ヘッダサイクルT0の生成に関する動作が全て不要となる。
【0114】
(3−H)コヒーレンシ報告集計
実施の形態1と比較して、DIDQ501およびMIDQ502の格納方法が異なる。実施の形態1ではクロスバユニット40に送付されるヘッダサイクルT0内の情報を用いて、クロスバユニット40がCSSを送付すべきポート番号および抑止信号を送付すべきメモリボード60−0〜1のポート番号を決定し、コヒーレンシ報告集計ユニット50に対して送付していた。本実施の形態においては、クロスバユニット40の代わりにバスを用いているためヘッダサイクルT0が存在しない。したがってバス上のアドレスサイクルT1の一部を用いて上記情報を得る必要がある。
【0115】
バス31上にトランザクションが送付された場合、コヒーレンシ報告集計ユニット50はこれを検出し、信号線L310を経由してトランザクションにおけるアドレスサイクルT1中のTX種T5、アドレスT6、ポート番号T7を取り込む。主記憶ポート番号生成回路550は、信号線L310を経由してアドレスT6を取り込み、実施の形態1における(3−C)の処理と同様にアドレスからメモリボード60−0〜1のポート番号を生成する。TX種デコーダはTX種T5をデコードし、TX種T5がコヒーレントリード要求である、すなわち、データリードあるいはデータリード−無効化であることを検出すると、信号線L310経由でポート番号をDIDQ501に格納し、上記で得たメモリボードポート番号を信号線L550を経由してMIDQへ格納する。
【0116】
CSRの集計、抑止信号の送付動作に関しては、実施の形態1と同様である。
【0117】
【発明の効果】
本発明によれば、複数のプロセッサユニット、および、複数のメモリユニットを備えるマルチプロセッサシステムにおいて、コヒーレントリード要求が同時に複数個オーバラップして実行される場合に、オーバラップ可能なコヒーレントリード要求の数を限定することなく、コヒーレンシ報告の集計を行うことができる。
【0118】
さらに、本発明のよれば、並列にアドレスおよびデータが転送可能な相互結合網を介して複数のプロセッサユニット、および、複数のメモリユニットが接続されるマルチプロセッサシステムにおいて、コヒーレントリード要求が同時に複数個オーバラップして実行される場合に、オーバラップ可能なコヒーレントリード要求の数を限定することなく、コヒーレンシ報告の集計を行うことができる。
【0119】
さらに本発明によれば、プロセッサユニットと上記コヒーレンシ報告の集計を行う機構間のピン数をできるだけ少なくすることができる。
【図面の簡単な説明】
【図1】本発明によるマルチプロセッサシステムの概略ブロック図。
【図2】図1の装置に使用するプロセッサボードの概略ブロック図。
【図3】図2の装置に使用するトランザクション送信回路の概略ブロック図。
【図4】図1の装置に使用するトランザクション受信回路の概略ブロック図。
【図5】図1の装置に使用するトランザクションフォーマット。
【図6】図1の装置に使用するクロスバユニットの概略ブロック図。
【図7】図1の装置に使用するコヒーレンシ報告集計ユニットの概略ブロック図。
【図8】図1の装置に使用するメモリボードの概略ブロック図。
【図9】動作ケース1におけるコヒーレンシ動作フロー図。
【図10】動作ケース2におけるコヒーレンシ動作フロー図。
【図11】図1の装置の概略実装図。
【図12】図1の装置に使用するプロセッサボードの概略ブロック図。
【図13】図1の装置に使用するSCインタフェース回路の概略ブロック図。
【図14】図1の装置に使用するコヒーレンシ報告集計ユニットの概略ブロック図。
【図15】本発明によるマルチプロセッサシステムの概略ブロック図。
【図16】図15の装置に使用するコヒーレンシ報告集計ユニットの概略ブロック図。
【符号の説明】
10−0〜1…プロセッサボード0〜1
20…キャッシュ制御回路
30…SCボード
40…クロスバユニット
50…コヒーレンシ報告集計ユニット
60−0〜1…メモリボード0〜1
70…主記憶制御回路。
Claims (16)
- それぞれプロセッサを有する複数のプロセッサユニットと、
上記複数のプロセッサユニットにより共有される複数のメモリユニットと、
上記複数のプロセッサユニットと上記複数のメモリユニットとの間でアドレス若しくはデータ、又はその双方を送付する第1の相互結合網と、
上記複数のプロセッサユニットを相互に接続する第2の相互結合網とを有し、
上記複数のプロセッサユニットの各々は、キャッシュメモリと、上記第1の相互結合網を介して受理したキャッシュ検査を要するメモリアクセス要求に応答して、該キャッシュメモリの状態を基に、キャッシュ検査報告を上記第2の相互結合網に送付するキャッシュ検査報告手段とを有し、
上記第2の相互結合網は、上記複数のプロセッサユニットから受理した上記キャッシュ検査報告を集計して、上記キャッシュ検査を要するメモリアクセス要求の発行元である上記複数のプロセッサユニットのいずれかの上記キャッシュメモリの状態を定める情報を発生するキャッシュ検査報告集計手段と、該情報を上記キャッシュ検査を要するメモリアクセス要求の発行元に送付する手段を有することを特徴とするマルチプロセッサシステム。 - 上記第1の相互結合網は、上記第2の相互結合網との間にキャッシュ検査を要するメモリアクセス要求の発行元を通知する手段を有し、
上記第2の相互結合網は、上記キャッシュ検査報告集計手段が発生する上記情報を上記メモリアクセス要求の発行元を通知する手段により指定される上記複数のプロセッサユニットのいずれかに送付することを特徴とする請求項1に記載のマルチプロセッサシステム。 - 上記第1の相互結合網は、並列に上記アドレス若しくは上記データ、又はその双方を、上記複数のプロセッサユニット若しくはそのいずれか、又は上記複数のメモリユニットのいずれかに送付する手段を有する請求項1又は請求項2のいずれかに記載のマルチプロセッサシステム。
- 上記第1の相互結合網は、上記キャッシュ検査を要するメモリアクセス要求を、上記複数のプロセッサユニット又は上記複数のメモリユニットのいずれかに送付する手段を有し、
上記複数のプロセッサユニット及び上記複数のメモリユニットが上記キャッシュ検査を要するメモリアクセス要求を受理する順序が一致することを特徴とする請求項3記載のマルチプロセッサシステム。 - 上記第2の相互結合網は、上記複数のプロセッサユニットのいずれが存在しているかを識別する手段を有し、
上記キャッシュ検査報告集計手段は、上記識別する手段を用いて、上記キャッシュ検査を要するメモリアクセス要求の発行元の上記キャッシュメモリの状態を定める上記情報を発生することを特徴とする請求項1乃至請求項3のいずれかに記載のマルチプロセッサシステム。 - 上記識別する手段は、上記マルチプロセッサの立ち上げ時に、上記複数のプロセッサユニットから送付される存在信号により設定されることを特徴とする請求項5に記載のマルチプロセッサシステム。
- 上記複数のプロセッサユニットは、
複数の上記プロセッサと、
複数の上記キャッシュメモリと、
上記複数のプロセッサのいずれのプロセッサが存在しているかを識別する識別手段とを有し、
上記キャッシュ検査報告手段は、上記複数のキャッシュメモリの状態を基に、該複数のキャッシュメモリのキャッシュ検査報告を集計して上記第2の相互結合網へ送付する手段を有し、
上記複数のプロセッサは、上記キャッシュ検査を要するメモリアクセス要求に応答して、上記複数のキャッシュメモリの状態を基に、上記複数のキャッシュメモリのキャッシュ検査報告を上記キャッシュ検査報告手段に送付し、
上記キャッシュ検査報告手段は、上記複数のキャッシュメモリのキャッシュ検査報告と上記識別手段とを用いて、上記プロセッサユニットのキャッシュ検査報告を発生することを特徴とする請求項1乃至請求項4のいずれかに記載のマルチプロセッサシステム。 - 上記複数のプロセッサユニットの各々は、上記キャッシュ検査を要するメモリアクセス要求を受理した順序で、上記キャッシュメモリの状態を上記第2の相互結合網に送付し、
上記第2の相互結合網は、上記メモリアクセス要求の発行元の上記キャッシュメモリの状態を定める上記情報を上記メモリアクセス要求の発行元を通知する手段により指定される上記複数のプロセッサユニットのいずれかに、上記メモリアクセス要求の発行元の通知と同じ順序で送付することを特徴とする請求項2に記載のマルチプロセッサシステム。 - 上記複数のプロセッサユニットは、上記キャッシュ検査を要するメモリアクセス要求に応答して、最新のデータを上記キャッシュ検査を要するメモリアクセス要求の発行元に送付する手段を有し、
上記複数のメモリユニットは、上記メモリアクセス要求に応答して上記複数のメモリユニットが保持するデータを上記キャッシュ検査を要するメモリアクセス要求の発行元へ送付する動作を抑止する手段を有し、
上記第2の相互結合網は、上記キャッシュ検査を要するメモリアクセス要求の発行元の上記キャッシュメモリの状態を定める上記情報により、上記複数のメモリユニットのいずれかに、上記プロセッサユニットへのデータ転送の抑止を通知する手段を有する請求項1乃至請求項8いずれかに記載のマルチプロセッサシステム。 - 上記複数のプロセッサユニットは、上記キャッシュ検査を要するメモリアクセス要求に応答して、最新のデータを上記キャッシュ検査を要するメモリアクセス要求の発行元に送付する手段と、
上記第2の相互結合網により通知された、上記キャッシュ検査を要するメモリアクセス要求の発行元の上記キャッシュメモリの状態を定める上記情報に応じて、上記プロセッサユニットから送付された上記最新のデータと、上記メモリユニットから送付されたデータとを選択する手段とを備える請求項1乃至請求項9のいずれかに記載のマルチプロセッサシステム。 - 上記第1の相互結合網は、共有バスであることを特徴とする請求項1乃至請求項10のいずれかに記載のマルチプロセッサシステム。
- 上記第2の相互結合網は、内部のビジー状態を上記第1の相互結合網に通知する手段
を有し、
上記第1の相互結合網は、上記第2の相互結合網のビジー状態により、上記キャッシュ検査を要するメモリアクセス要求を上記複数のプロセッサユニット及び上記複数のメモリユニットに送付することを抑止する手段を有する請求項1乃至請求項10いずれかに記載のマルチプロセッサシステム。 - 上記第2の相互結合網は、上記キャッシュ検査を要するメモリアクセス要求の発行元の上記キャッシュメモリの状態を定める上記情報を発生する際に、キャッシュ状態の一貫性が保証されていないことを検出し、その一貫性が保証されない場合には上記複数のプロセッサユニットのいずれかにエラー報告を送付する手段を有する請求項1乃至請求項12のいずれかに記載のマルチプロセッサシステム。
- 上記第2の相互結合網は、上記メモリアクセス要求の発行元を通知する手段により上記複数のプロセッサユニットのいずれかが指定される以前に、上記複数のプロセッサユニットから上記キャッシュメモリの状態を受け取った際に、上記複数のプロセッサユニットのいずれかにエラー通知を送付する手段を備える請求項2記載のマルチプロセッサシステム。
- 上記第1の結合網又は上記第2の相互結合網は、集積回路に実装されることを特徴とする請求項1乃至請求項14のいずれかに記載のマルチプロセッサシステム。
- 上記複数のプロセッサユニットのいずれか、又は上記複数のメモリユニットのいずれかが、上記第1の相互結合網、又は上記第2の相互結合網と独立に着脱可能であることを特徴とする請求項1乃至請求項15のいずれかに記載のマルチプロセッサシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22223197A JP3864509B2 (ja) | 1997-08-19 | 1997-08-19 | マルチプロセッサシステム |
US09/134,336 US6263405B1 (en) | 1997-08-19 | 1998-08-14 | Multiprocessor system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22223197A JP3864509B2 (ja) | 1997-08-19 | 1997-08-19 | マルチプロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1165928A JPH1165928A (ja) | 1999-03-09 |
JP3864509B2 true JP3864509B2 (ja) | 2007-01-10 |
Family
ID=16779179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22223197A Expired - Fee Related JP3864509B2 (ja) | 1997-08-19 | 1997-08-19 | マルチプロセッサシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US6263405B1 (ja) |
JP (1) | JP3864509B2 (ja) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000010860A (ja) * | 1998-06-16 | 2000-01-14 | Hitachi Ltd | キャッシュメモリ制御回路及びプロセッサ及びプロセッサシステム及び並列プロセッサシステム |
JP3764015B2 (ja) * | 1999-12-13 | 2006-04-05 | 富士通株式会社 | メモリアクセス方法及びマルチプロセッサシステム |
US6631474B1 (en) * | 1999-12-31 | 2003-10-07 | Intel Corporation | System to coordinate switching between first and second processors and to coordinate cache coherency between first and second processors during switching |
US6928520B2 (en) * | 2000-04-30 | 2005-08-09 | Hewlett-Packard Development Company, L.P. | Memory controller that provides memory line caching and memory transaction coherency by using at least one memory controller agent |
US6725334B2 (en) * | 2000-06-09 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method and system for exclusive two-level caching in a chip-multiprocessor |
US6668308B2 (en) * | 2000-06-10 | 2003-12-23 | Hewlett-Packard Development Company, L.P. | Scalable architecture based on single-chip multiprocessing |
US6775686B1 (en) * | 2000-08-30 | 2004-08-10 | Motorola, Inc. | High availability redundant array of data storage elements that bridges coherency traffic |
US6725342B1 (en) * | 2000-09-26 | 2004-04-20 | Intel Corporation | Non-volatile mass storage cache coherency apparatus |
US6785767B2 (en) | 2000-12-26 | 2004-08-31 | Intel Corporation | Hybrid mass storage system and method with two different types of storage medium |
US7275135B2 (en) * | 2001-08-31 | 2007-09-25 | Intel Corporation | Hardware updated metadata for non-volatile mass storage cache |
US6973544B2 (en) * | 2002-01-09 | 2005-12-06 | International Business Machines Corporation | Method and apparatus of using global snooping to provide cache coherence to distributed computer nodes in a single coherent system |
KR100474704B1 (ko) * | 2002-04-29 | 2005-03-08 | 삼성전자주식회사 | 데이터의 버스트 동시쓰기가 가능한 프로세서 이중화 장치 |
US7000041B2 (en) * | 2003-03-31 | 2006-02-14 | Intel Corporation | Method and an apparatus to efficiently handle read completions that satisfy a read request |
JP4956900B2 (ja) * | 2005-03-07 | 2012-06-20 | 富士通株式会社 | アドレススヌープ方法及びマルチプロセッサシステム |
US7461239B2 (en) * | 2006-02-02 | 2008-12-02 | International Business Machines Corporation | Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines |
JP4297969B2 (ja) | 2006-02-24 | 2009-07-15 | 富士通株式会社 | 記録制御装置および記録制御方法 |
US20070245171A1 (en) * | 2006-03-27 | 2007-10-18 | Patrick Ohly | Methods and apparatus to perform distributed memory checking |
JP4829038B2 (ja) * | 2006-08-17 | 2011-11-30 | 富士通株式会社 | マルチプロセッサシステム |
JP5115075B2 (ja) * | 2007-07-25 | 2013-01-09 | 富士通株式会社 | 転送装置、転送装置を有する情報処理装置及び制御方法 |
US20110161585A1 (en) * | 2009-12-26 | 2011-06-30 | Sailesh Kottapalli | Processing non-ownership load requests hitting modified line in cache of a different processor |
US20110213935A1 (en) * | 2010-03-01 | 2011-09-01 | Arm Limited | Data processing apparatus and method for switching a workload between first and second processing circuitry |
US8418187B2 (en) * | 2010-03-01 | 2013-04-09 | Arm Limited | Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system |
US8533505B2 (en) | 2010-03-01 | 2013-09-10 | Arm Limited | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
US8751833B2 (en) | 2010-04-30 | 2014-06-10 | Arm Limited | Data processing system |
JP5375876B2 (ja) * | 2011-05-19 | 2013-12-25 | 富士通株式会社 | マルチプロセッサシステム |
US9436605B2 (en) | 2013-12-20 | 2016-09-06 | Intel Corporation | Cache coherency apparatus and method minimizing memory writeback operations |
DE102014201682A1 (de) * | 2014-01-30 | 2015-07-30 | Robert Bosch Gmbh | Verfahren zur Koexistenz von Software mit verschiedenen Sicherheitsstufen in einem Multicore-Prozessorsystem |
JP2019053617A (ja) * | 2017-09-15 | 2019-04-04 | 株式会社東芝 | システムlsiおよびシステムlsiの故障検出方法 |
US11445020B2 (en) * | 2020-03-24 | 2022-09-13 | Arm Limited | Circuitry and method |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2073185A1 (en) * | 1990-01-05 | 1991-07-06 | Won S. Kim | Parallel processor memory system |
JPH0776942B2 (ja) * | 1991-04-22 | 1995-08-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチプロセッサ・システムおよびそのデータ伝送装置 |
EP0553743A1 (en) * | 1992-01-31 | 1993-08-04 | Motorola, Inc. | A cache controller |
US5559987A (en) * | 1994-06-30 | 1996-09-24 | Digital Equipment Corporation | Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system |
US6038644A (en) * | 1996-03-19 | 2000-03-14 | Hitachi, Ltd. | Multiprocessor system with partial broadcast capability of a cache coherent processing request |
-
1997
- 1997-08-19 JP JP22223197A patent/JP3864509B2/ja not_active Expired - Fee Related
-
1998
- 1998-08-14 US US09/134,336 patent/US6263405B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH1165928A (ja) | 1999-03-09 |
US6263405B1 (en) | 2001-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3864509B2 (ja) | マルチプロセッサシステム | |
US6675265B2 (en) | Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants | |
US6622217B2 (en) | Cache coherence protocol engine system and method for processing memory transaction in distinct address subsets during interleaved time periods in a multiprocessor system | |
US6925537B2 (en) | Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants | |
US6751710B2 (en) | Scalable multiprocessor system and cache coherence method | |
US6738868B2 (en) | System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes | |
US6697919B2 (en) | System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system | |
US6748498B2 (en) | Scalable multiprocessor system and cache coherence method implementing store-conditional memory transactions while an associated directory entry is encoded as a coarse bit vector | |
US6640287B2 (en) | Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests | |
US6209065B1 (en) | Mechanism for optimizing generation of commit-signals in a distributed shared-memory system | |
US6279084B1 (en) | Shadow commands to optimize sequencing of requests in a switch-based multi-processor system | |
US8041774B2 (en) | Early issue of transaction ID | |
US6101420A (en) | Method and apparatus for disambiguating change-to-dirty commands in a switch based multi-processing system with coarse directories | |
US6154816A (en) | Low occupancy protocol for managing concurrent transactions with dependencies | |
US6108752A (en) | Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency | |
US5887146A (en) | Symmetric multiprocessing computer with non-uniform memory access architecture | |
US7991964B2 (en) | Pre-coherence channel | |
US6085276A (en) | Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies | |
US6122714A (en) | Order supporting mechanisms for use in a switch-based multi-processor system | |
US6249520B1 (en) | High-performance non-blocking switch with multiple channel ordering constraints | |
US7603523B2 (en) | Method and apparatus for filtering snoop requests in a point-to-point interconnect architecture | |
US20090037665A1 (en) | Hiding conflict, coherence completion and transaction id elements of a coherence protocol | |
US20020129208A1 (en) | System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing | |
US6622218B2 (en) | Cache coherence protocol engine and method for efficient processing of interleaved memory transactions in a multiprocessor system | |
US20030076831A1 (en) | Mechanism for packet component merging and channel assignment, and packet decomposition and channel reassignment in a multiprocessor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040330 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040330 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20040330 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060417 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060829 |
|
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: 20060912 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060925 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091013 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101013 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111013 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121013 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121013 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131013 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |