JP2000250811A - メモリコントローラ及びコンピュータシステム - Google Patents

メモリコントローラ及びコンピュータシステム

Info

Publication number
JP2000250811A
JP2000250811A JP11055459A JP5545999A JP2000250811A JP 2000250811 A JP2000250811 A JP 2000250811A JP 11055459 A JP11055459 A JP 11055459A JP 5545999 A JP5545999 A JP 5545999A JP 2000250811 A JP2000250811 A JP 2000250811A
Authority
JP
Japan
Prior art keywords
access request
memory
transaction
dependency
control means
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.)
Pending
Application number
JP11055459A
Other languages
English (en)
Inventor
Tadanobu Toba
忠信 鳥羽
Shuji Kikuchi
修司 菊地
Satoshi Muraoka
諭 村岡
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 JP11055459A priority Critical patent/JP2000250811A/ja
Publication of JP2000250811A publication Critical patent/JP2000250811A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 主記憶からのデータ読み出しのレイテンシを
削減し、プロセッサ等のデータ要求元のデータ待ちによ
るシステム性能の低下を防ぎ、システム全体の処理性能
を向上させる。 【解決手段】 受け付けたトランザクション毎に独立し
た制御を行えるトランザクション制御部10を設け、各
トランザクション毎に、可能になった時点で、主記憶4
へのメモリアクセス要求を、メモリ制御部11に出力す
る。この際、データ読み出しトランザクションについて
は、スヌープ結果が確定するのを待たずに、メモリ制御
部11にメモリアクセス要求を出力し、メモリアクセス
を開始する。その後、スヌープ結果によりトランザクシ
ョンがキャンセルされた場合は、主記憶4から読み出し
たデータをバス2上に出力するのを中止する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、計算やデータ処理
に利用されるコンピュータシステムに関し、特に、デー
タアクセス速度の向上が図れるメモリコントローラおよ
びコンピュータシステムに関する。
【0002】
【従来の技術】従来、一般的なコンピュータシステムで
は、メモリは階層化されており、例えば、高速メモリを
用いたプロセッサ内部の専用キャッシュメモリ(上位レ
ベルメモリ)と安価なDRAM等を実装した大容量・低
速の主記憶(下位レベルメモリ)の2レベルで構成され
る。
【0003】この場合、プロセッサが必要とするデータ
が、キャッシュ内のブロックに存在することをヒットと
呼び、ない場合をミスと呼ぶ。ミスの場合は、一段下の
記憶階層である主記憶から、必要なデータを取得するこ
とになる。
【0004】主記憶は、キャッシュに比べて低速であ
り、キャッシュミスに伴う主記憶へのアクセスは、コン
ピュータシステムの処理性能を劣化させる主要因になっ
ている。
【0005】特に、主記憶とメモリコントローラとの間
のメモリバスは、比較的配線長が長くなり、回路実装上
動作周波数を上げることが困難であるため、最近では、
プロセッサ動作周波数とメモリバス動作周波数の格差が
広がっており、プロセッサ動作周波数が向上してもメモ
リバス速度がボトルネックになって全体性能が伸びなく
なってきている。
【0006】また、キャッシュミスによる主記憶へのア
クセスのうち、主記憶からのデータ読み出し要求(ロー
ド要求)では、要求を出したプロセッサが、読み出しデ
ータを受け取るまで処理を止めることになるので、この
待ち時間が大きくなるとコンピュータシステム全体の処
理性能を劣化させることになる。
【0007】このような問題に対しては、キャッシュ容
量を増やし、キャッシュメモリにおける容量性ミスを削
減することで、主記憶へのアクセス頻度を削減すること
が考えられる。例えば、特開平1−251250号公報
には、マルチプロセッサシステムにおいて、各プロセッ
サのキャッシュメモリを共有使用することで、1つのプ
ロセッサから見たときの、キャッシュメモリの見かけ上
の容量を増大させる方式が記載されている。
【0008】キャッシュ容量を増大させる方式は、デー
タの移動が比較的少ないアプリケーションが実行される
場合は効果的である。しかし、近年のビジネス一般向け
データサーバやインターネット上のWEBサーバなどの
ように、大量のデータのコピーや移動が頻繁に起きるア
プリケーションを実行するコンピュータシステムにおい
ては、キャッシュミスが頻繁に発生することになり性能
の改善が少ない。
【0009】特に、リレーショナルデータベースシステ
ム(RDBS)では、データの検索・更新が頻繁に行わ
れ、その度にメモリ内でのデータの複写/移動が発生
し、プロセッサは、データの複写/移動のためにデータ
のロード・ストアを頻繁に行う必要がある。そのデータ
量も非常に大きく、1GB以上のデータを短時間にリー
ド/ライトすることも珍しくなくなってきている。
【0010】このような場合、キャッシュ容量を増加さ
せ、主記憶へのアクセス頻度を削減することによって処
理性能の向上を図ろうとするのは現実的ではない。
【0011】また、主記憶の高速化方式としては、複数
のメモリバンクを設けて、複数のメモリバンクに対して
同時にアクセスを行うインターリーブ方式もある。例え
ば、特開平10−228417号公報には、マルチバン
ク・インターリーブ形の主記憶において、主記憶内の処
理の並行性を最適にする順序で主記憶に対しアクセス要
求を出し、主記憶の稼働率を上げる方法が記載されてい
る。
【0012】
【発明が解決しようとする課題】一方、キャッシュメモ
リを持つプロセッサを使ったマルチプロセッサシステム
では、各プロセッサが持つキャッシュメモリ同士や主記
憶との間でのデータの一貫性(コヒーレンシやコンシス
テンシイ)が問題になる。
【0013】例えば、あるプロセッサ(第1のプロセッ
サ)が、あるキャッシュラインを更新状態(ダーティ)
で保持している際に、別のプロセッサ(第2のプロセッ
サ)がこのキャッシュラインのアドレスにライトを行う
場合、最新のデータは主記憶ではなく第1のプロセッサ
のキャッシュにあるため、メモリコントローラが第2の
プロセッサから受け取ったライトのアクセス要求(以
下、トランザクションという)をそのまま実行すると、
主記憶のデータに矛盾が生じる可能性がある。そのた
め、第2のプロセッサが発行したライト・トランザクシ
ョンは一旦キャンセルし、第1のプロセッサのキャッシ
ュにある最新のデータを主記憶に書き戻してから、再び
第2のプロセッサからライト・トランザクションを発行
してもらう必要がある。
【0014】このような処理を実現する方式として、バ
ス・スヌープ方式がある。この方式では、各プロセッサ
は、バス上のトランザクションの監視(バス・スヌー
プ)を行い、バス上に送出されたトランザクションの対
象データが、自己のキャッシュ・ブロック内に存在する
か否かの判断を行い、その結果を、例えば、スヌープ・
レスポンス信号として出力する。メモリコントローラ
は、このスヌープ・レスポンス信号を受けて、必要に応
じて、受け取っているトランザクションを取り消す。
【0015】各プロセッサでのバス・スヌープ処理に
は、実装に応じた所定の時間が必要になるので、通常、
メモリコントローラは、バス・スヌープの結果が確定す
るまで、受け付けたトランザクションによるメモリアク
セスを行うことはできない。
【0016】つまり、マルチプロセッサシステムにおい
ては、主記憶データに矛盾を生じさせないため、他のプ
ロセッサからのスヌープ結果を待ってから、メモリアク
セスを実行しなければならない。従って、スヌープ結果
が得られるまでの時間が長くなると、それだけ、主記憶
へのアクセスに要する時間が長くなってしまう。
【0017】本発明の目的は、主記憶へのアクセス、特
に、主記憶からのデータ読み出しのレイテンシを少なく
することにある。
【0018】
【課題を解決するための手段】本発明に係るメモリコン
トローラは、キャッシュを備えた複数のプロセッサとメ
モリとの間のデータ入出力を制御するものである。そし
て、本発明に係る第1のメモリコントローラは、読み出
し要求を受けた場合は、各プロセッサから当該要求につ
いてのスヌープ結果が通知される前に、メモリに対する
データ読み出し処理を開始し、書き込み要求を受けた場
合は、各プロセッサから当該要求についてのスヌープ結
果が通知されるのを待って、メモリに対するデータ書き
込み処理を開始することを特徴とする。
【0019】また、本発明に係る第2のメモリコントロ
ーラは、各プロセッサからメモリへのアクセス要求を受
け取る手段と、受け取ったアクセス要求を格納するアク
セス要求制御手段と、各プロセッサからスヌープ結果を
受け取る手段と、メモリに対するアクセスを制御するメ
モリ制御手段とを備え、前記アクセス要求制御手段は、
メモリからデータを読み出すアクセス要求を格納した場
合、スヌープ結果が確定する前に、前記メモリ制御手段
に、メモリアクセス要求を出力することを特徴とする。
【0020】この場合に、プロセッサとメモリとの間で
転送されるデータを一時的に格納するデータバッファ手
段と、当該データの入出力を制御するデータバッファ制
御手段とを更に備えるようにしてもよい。そして、スヌ
ープ結果により、受け取ったアクセス要求が取り消され
た場合は、データバッファ手段から、読み出し要求を発
行したプロセッサに対するデータの出力を中止するよう
にしてもよい。
【0021】また、前記アクセス要求制御手段を複数備
え、各アクセス要求制御手段は、それぞれ独立して、メ
モリアクセス要求を前記メモリ制御手段に出力するよう
にしてもよい。
【0022】更に、複数のアクセス要求間の依存関係を
管理する依存関係管理手段を有し、前記アクセス要求制
御手段は、当該依存関係に基づいて、メモリアクセス要
求を出力するようにしてもよい。
【0023】また、前記アクセス要求制御手段は、それ
ぞれ、当該アクセス要求制御手段が格納するアクセス要
求と、他のアクセス要求制御手段が格納するアクセス要
求との依存関係を管理する依存関係管理手段を有し、当
該依存関係に基づいて、メモリアクセス要求を出力する
ようにしてもよい。
【0024】この場合に、前記依存関係管理手段は、先
行するアクセス要求と後続のアクセス要求とで対象ブロ
ックアドレスが等しい場合に、後続のアクセス要求は、
先行するアクセス要求に依存するとして管理するように
してもよい。
【0025】また、前記依存関係管理手段は、特定のア
クセス要求(例えば、後述する順序マーカトランザクシ
ョン)について、当該特定のアクセス要求は、先行する
すべてのアクセス要求に依存し、後続のアクセス要求
は、すべて当該特定のアクセス要求に依存するとして管
理するようにしてもよい。
【0026】また、前記アクセス要求制御手段は、それ
ぞれ、他のアクセス要求制御手段にアクセス要求が格納
される際、当該アクセス要求と、自己が格納するアクセ
ス要求を比較し、その結果に基づいて、他のアクセス要
求制御手段に、依存関係をセットするための信号を出力
し、自己が格納するアクセス要求をスヌープ結果により
取り消す場合、及び、自己が格納するアクセス要求をメ
モリに送信した場合に、他のアクセス要求制御手段に、
依存関係をクリアするための信号を出力するようにして
もよい。
【0027】本発明に係るコンピュータシステムは、キ
ャッシュを備えた複数のプロセッサと、前述した本発明
に係るメモリコントローラと、当該メモリコントローラ
に制御されるメモリとを備えたことを特徴とする。
【0028】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しつつ詳細に説明する。
【0029】図1は、本発明によるコンピュータシステ
ムの構成を示す図である。同図に示すように、本発明に
よるコンピュータシステムは、複数のプロセッサ1と、
メモリコントローラ3と、主記憶4と、外部バスコント
ローラ5と、外部記憶装置6と、その他の周辺装置7と
を備える。
【0030】複数のプロセッサ1、メモリコントローラ
3及び外部バスコントローラ5は、バス2に接続されて
いる。また、外部バスコントローラ5、外部記憶装置6
及び周辺装置7は、外部バスに接続されている。
【0031】なお、各構成要素間の接続形態は、バス方
式に限られず、他の方式、例えば、スイッチマトリクス
を使ったものであってもよい。また、図1では、外部バ
スコントローラ5をバス2に接続した場合を示している
が、外部バスコントローラ5をメモリコントローラ3と
直接接続できるようにしてもよい。
【0032】プロセッサ1は、それぞれ、キャッシュを
備えている。当該キャッシュは、バス2を監視し、スヌ
ープ結果を通知できるものであれば、内部キャッシュで
あっても外部キャッシュであってもよい。
【0033】メモリコントローラ3は、プロセッサ1や
外部バスコントローラ5からの主記憶4に対するアクセ
スを受け付けて、主記憶4に対するアクセスを制御す
る。外部バスコントローラ5は、プロセッサ1や主記憶
4と、外部記憶装置6や周辺装置7との間でのデータの
やり取りを制御する。
【0034】外部記憶装置6には、例えば、ハードディ
スク装置、フロッピィディスク装置、CD−ROM装置
等が該当する。また、周辺装置7には、例えば、CRT
ディスプレイや液晶ディスプレイを制御する表示制御装
置や、ネットワークに接続するためのネットワーク接続
装置等が該当する。
【0035】図1に示すように、本発明によるメモリコ
ントローラ3は、バス制御部8と、トランザクション入
力部9と、トランザクション制御部10と、メモリ制御
部11と、データバッファ13と、データバッファ制御
部12とを備える。
【0036】バス制御部8は、信号15により、バス2
上の信号の監視や制御等を行う。トランザクション入力
部9は、信号14により、プロセッサ1や外部バスコン
トローラ5からの主記憶4に対するトランザクションを
検知し、受け付ける。トランザクション制御部10は、
受け付けたトランザクションを格納し、順序制御を行
う。メモリ制御部11は、主記憶4の入出力制御を行
う。データバッファ13は、信号16、18によりプロ
セッサ1等と主記憶4との間で転送されるデータを一時
的に格納する。データバッファ制御部12は、バス2と
データバッファ13との間やデータバッファ13と主記
憶4との間でのデータ転送制御を行う。
【0037】次に、図1に示したシステムの動作につい
て説明する。
【0038】トランザクション入力部9は、バス信号1
4により、トランザクションが送出されたことを検出す
ると、当該トランザクションが、プロセッサ1や外部バ
スコントローラ5に接続されている周辺装置等から主記
憶4に対するトランザクションであるか否かを判別し、
主記憶4に対するトランザクションであった場合は、当
該トランザクションをトランザクション制御部10に渡
す。
【0039】トランザクション制御部10は、複数のト
ランザクション制御器(以下、単に制御器という)を備
え、一制御器が一トランザクションを独立して処理す
る。トランザクション制御部10の各制御器は、受け付
けたトランザクションの種類やコヒーレント制御の要・
不要等の情報に基づいて、所定のタイミングで、メモリ
制御部11へメモリアクセス要求信号を出力する。
【0040】また、トランザクション制御部10は、信
号19により、データバッファ制御部12からデータバ
ッファ13の稼動状況を受け、トランザクションに応じ
たデータバッファ13の使用を指示する。
【0041】なお、データバッファ13に空き領域がな
かったり、トランザクション制御部10のすべての制御
器が使用中である等、メモリコントローラ3のリソース
が不足している場合は、信号20等を使って、バス制御
部8に対しリソース不足であることが伝えられる。リソ
ース不足の通知を受けたバス制御部8は、リソース不足
で処理できないトランザクションを発行したプロセッサ
1等に対して、当該トランザクションの再発行を依頼す
る。
【0042】メモリ制御部11は、トランザクション制
御部10からのメモリアクセス要求信号を受けると、信
号17、18によって、主記憶4に対するアクセスを行
う。
【0043】次に、本発明のトランザクション制御の方
法について説明する。本発明の方法との対比のため、ま
ず、FIFO(First In First Out)を使ったトランザ
クション制御方式について説明する。
【0044】図2は、FIFOを使ったトランザクショ
ン制御方式を示す図である。この方式では、受け付けた
トランザクションを、受け付け順に、FIFO方式のレ
ジスタに格納する。そして、受け付け順に、各プロセッ
サからのスヌープ結果を待ち、主記憶へのアクセスが許
可されたトランザクションについて、メモリアクセス要
求を発行する。
【0045】図2において、まず、トランザクション入
力部41は、受付けたトランザクションの種類を判別
し、主記憶に対するアクセスであれば、そのトランザク
ションをFIFO43へ格納する。FIFO制御部42
は、格納された順に、各プロセッサからのスヌープ結果
をバス制御部8を介して受け取る。FIFO制御部42
は、受け取ったスヌープ結果を調べ、メモリアクセスが
許可された場合は、FIFO43に格納されたトランザ
クションについてのメモリアクセス開始をメモリ制御部
46に指示する。メモリ制御部46は、FIFO43に
格納された順序に従いメモリアクセスを開始する。デー
タバッファ制御部44は、FIFO制御部42の制御の
下、データバッファ45の制御を行う。
【0046】この方式の場合、FIFO43によりトラ
ンザクションの順序保証が行われ、スヌープ期間が終了
するまでメモリアクセス処理は開始されず、すべてのト
ランザクションは、一様に、少なくともスヌープ期間待
たされることになる。
【0047】図3は、本発明によるトランザクション制
御方式を示す図である。この場合、トランザクション制
御部10は、複数の制御器0〜nを持ち、それぞれが1
個のトランザクションを格納する。また、各制御器は、
それぞれがスヌープ結果を受け取り、主記憶へのアクセ
スが許可された場合は、それぞれ独立に、メモリアクセ
ス要求を発行する。
【0048】図3において、まず、トランザクション入
力部9が、受け付けたトランザクションの種類を判別
し、主記憶に対するアクセスであれば、そのトランザク
ションをトランザクション制御部10の空いている制御
器にセットする。そのため、トランザクション入力部9
は、トランザクション制御部10の各制御器の稼動状況
を監視し、適当な制御器を選択する。
【0049】トランザクション制御部10内の各制御器
は、トランザクションが格納されると、所定のタイミン
グで、メモリ制御部11に対し、メモリアクセス要求を
出力する。各制御器は、トランザクションの種類(読み
出しか、書き込みか)、スヌープ結果(コヒーレント制
御が必要な場合)、トランザクション間の依存関係(後
述)等に基づいて、メモリアクセス要求を出力するタイ
ミングを制御する。各制御器がメモリアクセス要求を出
力するタイミング及び条件については後述する。
【0050】また、トランザクション制御部10内の各
制御器は、それぞれバス制御部8からスヌープ結果を受
け取り、独立にスヌープ結果を監視する。例えば、スヌ
ープ結果が、各プロセッサから所定のタイミングで返さ
れるシステムにおいては、各制御器が、当該タイミング
にあわせて、スヌープ結果を調べることで、現在格納さ
れているトランザクションを取り消す必要があるか否か
を判断する。
【0051】以上の構成により、各トランザクション毎
に並行してスヌープ結果の監視が可能になり、受け付け
順に拘束されることなく主記憶へのアクセス要求を出力
することが可能となる。
【0052】トランザクション制御部10内のメモリ処
理要求アービタは、各制御器0〜nからのメモリアクセ
ス要求を監視する。そして、いずれかの制御器からメモ
リアクセス要求があれば、メモリ制御部11に対し、メ
モリアクセス要求を出力する。なお、複数の制御器から
メモリアクセス要求が同時に発生した場合、予め決めら
れたルールにより調停し、いずれかのメモリアクセス要
求をメモリ制御部11へ出力する。
【0053】次に、各制御器がメモリアクセス要求を出
力するタイミングについて説明する。各制御部0〜n
は、主記憶4に対する書き込み要求(ストア・トランザ
クション)については、コヒーレント制御が必要な場合
は、スヌープ結果が通知されるのを待って、当該トラン
ザクションを取り消す必要がないことを確認してから、
実行を開始する。
【0054】一方、主記憶4からの読み出し要求(ロー
ド・トランザクション)については、各プロセッサから
のスヌープ結果を待たずに、メモリアクセス要求を出力
し、主記憶4からの読み出し処理を開始する。これは、
ロード・トランザクションは、主記憶4の内容を更新し
ないことに着目したものである。
【0055】そして、主記憶4からの読み出し処理を開
始した後に、スヌープ結果の判定を行い、スヌープ結果
によりそのトランザクションを取り消す必要がある場合
は、データバッファ制御部12に対し、バス2へのデー
タ出力を中止する指示を伝え、主記憶4より読み出した
データを破棄(無効化)する。一方、スヌープ結果によ
りそのトランザクションを取り消す必要がない場合は、
そのまま、主記憶4から読み出したデータをバス2へ出
力する。これにより、ロード・トランザクションについ
ては、レイテンシを削減することが可能になる。
【0056】図4は、バス2上にトランザクションが送
出されてから、主記憶4に対するアクセスを実行可能に
なるまでのタイミングを示す図である。ここでは、バス
2上にトランザクションが送出された後、Rサイクル後
に、スヌープ結果を示すスヌープ・レスポンス信号が返
されるとする。また、トランザクション情報が正しく受
信されたことを確認するために、Sサイクル必要である
とする。
【0057】同図に示すように、トランザクションが時
間Tにおいてバス上に送信されると、スヌープ・レスポ
ンス信号は時刻(T+R)に返されるので、ストアの場
合、主記憶アクセスを開始できるのは、時刻(T+R+
1)からとなる。
【0058】一方、ロードの場合は、トランザクション
情報が正しく受信されたことが確認できれば、主記憶ア
クセスを開始できるので、時刻(T+S+1)から処理
を開始する。
【0059】このように、ストアとロードでは、メモリ
アクセスを開始可能なタイミングが異なることになり、
図3に示した構成においては、各トランザクションは、
個別に可能となった時点で独立に、メモリアクセス要求
を送信するため、先に受け付けたストア・トランザクシ
ョンがスヌープ結果を待つ間に、後から入力されたロー
ド・トランザクションがストア・トランザクションを追
い越してメモリアクセスすることが可能となる。
【0060】図5は、ストア・トランザクションとロー
ド・トランザクションが連続して発行された場合の例を
示す図である。この場合も、バス2上にトランザクショ
ンが送出された後、Rサイクル後に、スヌープ結果を示
すスヌープ・レスポンス信号が返され、トランザクショ
ン情報が正しく受信されたことを確認するために、Sサ
イクル必要であるとする。
【0061】同図に示すように、時刻Tにストア・トラ
ンザクションが発行され、時刻(T+2)にロード・ト
ランザクションが発行された場合、先行するストアが処
理可能になるのは時刻(T+R+1)であり、続くロー
ドが処理可能になるのは時刻(T+S+3)である。こ
の場合の両者の時刻差は、(T+R+1)−(T+S+
3)=(R−S−2)となる。
【0062】従って、例えば、S=2の場合、R>4な
る条件では、ストアよりロードが先に処理可能となり、
トランザクションの順序が入れ替わって実行され、ロー
ドが優先的に処理されることになる。そのため、データ
要求元のロードレイテンシを削減することができ、総合
的な処理能力を向上させることが可能になる。
【0063】なお、このようなトランザクションの入れ
替えは、無条件に行える訳ではない。例えば、同じブロ
ックアドレスを対象とするトランザクションについて
は、トランザクションの処理順序が逆転することによる
矛盾を防止するため、順序を入れ替えないようにする必
要がある。このため、トランザクションの対象となるブ
ロックアドレスの比較を行うことにより、前後のトラン
ザクションの依存関係を解析して、管理する。
【0064】次に、このようなトランザクション間の依
存関係の管理方式について説明する。
【0065】図6は、トランザクション間の依存関係を
管理する方式を説明する図である。本方式では、各制御
器に格納されたトランザクション間の依存関係をマトリ
クス(以下、依存マトリクスという)で表す。依存マト
リクスの要素は、個々の制御器が保持するトランザクシ
ョン間の依存・非依存関係を表す依存フラグDijによっ
て構成される。なお、図6は、制御器が8つ(制御器0
〜7)設けられた場合の例を示している。
【0066】依存フラグDijは、制御器j(に格納され
ているトランザクション)に対する、制御器i(に格納
されているトランザクション)の依存関係を表してい
る。例えば、依存フラグD07は、制御器0の制御器7に
対する依存関係を表す。
【0067】依存フラグDijがセットされている場合
は、制御器iは、制御器jに依存しており、制御器iに
格納されているトランザクションは、制御器jに格納さ
れているトランザクションより後に実行されなければな
らない。
【0068】図7は、依存関係を表す依存フラグの状態
遷移の様子を示す図である。同図に示すように、依存フ
ラグは、それぞれ、「非依存(NotDepend)」と「依存
(Depend)」の2つの状態を有している。
【0069】まず、メモリコントローラがリセットされ
ると、依存フラグは、「非依存」状態に初期化される。
そして、依存セット条件が偽の間は、「非依存」状態が
維持される。
【0070】「非依存」状態において、依存セット条件
が真になると、「依存」状態に遷移する。そして、クリ
ア条件が偽の間、「依存」状態が維持される。また、
「依存」状態において、クリア条件が真になると、「非
依存」状態に遷移する。
【0071】次に、依存フラグDijのセット/クリア条
件について説明する。
【0072】まず、セット条件について説明する。制御
器iに格納する新規トランザクションが、他の制御器j
に既に保持されているトランザクションと、同じブロッ
クアドレスを有する場合は、制御器iは制御器jに依存
するので、Dijをセットする。
【0073】例えば、制御器0にトランザクションが既
に格納されている状態で、新規トランザクションが制御
器7に格納される場合に、制御器7に格納される新規ト
ランザクションのブロックアドレスと、制御器0が保持
しているトランザクションのブロックアドレスが等しい
と、依存フラグD70がセットされ、「依存」状態とな
る。一方、両者が等しくないと、D70はセットされず、
「非依存」状態のままになる。
【0074】また、依存フラグDijのクリアは、以下の
条件で行う。
【0075】制御器iに保持されたトランザクションが
スヌープの結果によりキャンセルされた場合、又は、当
該トランザクションを主記憶に送信した場合、D0i〜D
7i(但し、Diiを除く)をクリアするとともに、Di7〜
Di0(但し、Diiを除く)をクリアする。
【0076】例えば、制御器2に格納されているトラン
ザクションがスヌープの結果によりキャンセルされた場
合は、依存フラグD02,D12,D32,D42,D52,D6
2,D72をクリアするとともに、依存フラグD27,D2
6,D25,D24,D23,D21,D20をクリアする。
【0077】以上のような依存フラグのセット/クリア
制御を行い、依存フラグDi7〜Di0(但し、Diiを除
く)がクリアされている場合に限り、制御器iに入った
トランザクションをメモリ制御部11に送信するように
制御すれば、依存関係があるトランザクションの処理順
序が入れ替わることを防止できる。
【0078】次に、図3に示した構成における、依存マ
トリックスの具体的な実現方法について説明する。
【0079】図3に示した構成においては、トランザク
ション制御部10内の各制御器が、それぞれ、依存マト
リクスの一部分を備える。すなわち、各制御器は、図6
に示す依存マトリクスの横軸方向の依存フラグの集合を
格納する依存レジスタDR(図6では、太枠で表示)を
備える。
【0080】例えば、制御器0は、依存フラグD07〜D
01で構成される依存レジスタDR0を備える。また、制
御器1は、依存フラグD17〜D12,D10で構成される依
存レジスタDR1を備える。
【0081】そして、ある制御器iに新しいトランザク
ションを格納する時に、制御器iが備える依存レジスタ
DRi内の各フラグは、以下のようにしてセットされ
る。
【0082】まず、既にトランザクションを保持してい
る制御器は、それぞれ、トランザクション入力部9が新
規に受け付けたトランザクションを監視し、自己が保持
しているトランザクションと新規トランザクションとの
依存関係を調べ、自分の保持しているトランザクション
と依存関係があると判断した場合は、新規トランザクシ
ョンが格納される制御器へ、セット信号を出力する。
【0083】新規トランザクションが格納される制御器
は、他の制御器からのセット信号に基づいて、自己が備
える依存レジスタ内の対応する依存フラグをセットす
る。
【0084】例えば、新規トランザクションが制御器1
に格納される場合、先行するトランザクションが既に格
納されている制御器0は、自分が保持するトランザクシ
ョンと制御器1に格納されるトランザクションとが依存
関係を有すると判断すると、制御器1に対してセット信
号を出力し、制御器1は、当該セット信号を受けて、依
存レジスタDR1内の依存フラグD10をセットする。
【0085】また、各制御器は、自分が保持しているト
ランザクションがスヌープの結果によりキャンセルされ
た場合、又は、そのトランザクションを主記憶に送信し
た場は、他の制御器に対して、クリア信号を出力する。
それと同時に、自己が保持している依存レジスタをクリ
アする。クリア信号を受けた各制御器は、対応する依存
フラグをクリアする。
【0086】例えば、制御器6が保持していたトランザ
クションを主記憶に送信すると、他の制御器に対して、
クリア信号を出力して、依存フラグD06〜D76をクリア
させるととともに、依存レジスタDR6、すなわち、依
存フラグD67〜D60をクリアする。
【0087】トランザクションが格納される制御器は、
前述したタイミングでメモリアクセス要求を出力する
際、自己の依存レジスタをチェックし、すべての依存フ
ラグがクリアされているとき、すなわち、自己のトラン
ザクションが、他のトランザクションに依存していない
場合に、メモリアクセス要求をメモリ処理要求アービタ
に出力する。
【0088】従って、各制御器は、自己の依存レジスタ
内の依存フラグのいずれかがセットされている間は、メ
モリアクセス要求を出力しないので、依存関係があるト
ランザクションに関しては、トランザクションの入れ替
えが発生することはない。つまり、以上説明した依存マ
トリクス機構により、矛盾を生じることなく、ロード・
トランザクションの優先制御を実現できる。
【0089】以上では、トランザクション間に依存関係
がある場合に、当該トランザクションの入れ替えを防止
していたが、ソフトウェアによる意識的なトランザクシ
ョンの追い越し禁止制御を可能にするため、特別なトラ
ンザクション(以下、順序マーカトランザクションとい
う)を設けるようにしてもよい。この順序マーカトラン
ザクションは、例えば、マルチプロセッサシステムにお
いて、ソフトウェアが各プロセッサ間の同期制御を実現
するため利用することができる。
【0090】このような順序マーカトランザクションを
サポートしたメモリコントローラに対して、順序マーカ
トランザクションが発行されると、順序マーカトランザ
クションより前に発行されたトランザクションは、必
ず、順序マーカトランザクションより前に、実行され、
順序マーカトランザクションが発行された後に、発行さ
れたトランザクションは、必ず、順序マーカトランザク
ションより後に実行される。
【0091】このような順序制御も、前述した依存マト
リックスを使って実現することができる。すなわち、メ
モリコントローラ3が受け付けるトランザクションに、
前述した順序マーカトランザクションを含めた場合、依
存フラグのセット条件に以下の条件を追加すればよい。
なお、クリア条件は変わらない。
【0092】まず、制御器iに格納する新規トランザク
ションが順序マーカトランザクションの場合、他の制御
器jに保持されている先行するトランザクションに依存
させるため、依存フラグDijをセットする。これによ
り、順序マーカトランザクションは、それ以前に発行さ
れたトランザクションより前には実行されないことが保
証される。
【0093】また、制御器iに新規トランザクションを
格納する際、他の制御器jが有効な順序マーカトランザ
クションを保持している場合は、依存フラグDijをセッ
トする。これにより、順序マーカトランザクションに後
続するトランザクションは、順序マーカトランザクショ
ンより前には実行されないことが保証されることにな
る。
【0094】以上の条件による依存フラグのセット制御
は、図3に示した構成においては、次のように行われ
る。まず、既にトランザクションを保持している制御器
は、それぞれ、トランザクション入力部9が新規に受け
付けたトランザクションを監視し、新規トランザクショ
ンが順序マーカトランザクションの場合は、新規トラン
ザクションが格納される制御器へ、セット信号を出力す
る。順序マーカトランザクションが格納される制御器
は、他の制御器からのセット信号に基づいて、自己が備
える依存レジスタの対応する依存フラグをセットする。
【0095】例えば、制御器6に新規トランザクション
として順序マーカトランザクションが格納される場合、
先行するトランザクションが格納されている制御器1
は、制御器6に対して、セット信号を出力し、制御器6
は、当該セット信号を受けて、依存レジスタDR6内の
依存フラグD61をセットする。
【0096】また、既に順序マーカトランザクションを
保持している制御器は、他の制御器に新規トランザクシ
ョンが格納される際には、その制御器に対して、セット
信号を出力する。新規トランザクションが格納される制
御器は、他の制御器からのセット信号に基づいて、自己
が備える依存レジスタの対応する依存フラグをセットす
る。
【0097】例えば、制御器7に新規トランザクション
が格納される場合、既に順序マーカトランザクションが
格納されている制御器6は、制御器7に対して、セット
信号を出力し、制御器7は、当該セット信号を受けて、
依存レジスタDR7内の依存フラグD76をセットする。
【0098】以上のような依存フラグのセット制御によ
り、順序マーカトランザクションより前に発行されたト
ランザクションは、必ず、順序マーカトランザクション
より前に、実行され、順序マーカトランザクションが発
行された後に、発行されたトランザクションは、必ず、
順序マーカトランザクションより後に実行されるように
なる。
【0099】以上説明した実施形態によれば、コンピュ
ータシステムの性能を左右する主記憶からのデータ読み
出し(ロード要求)のレイテンシを少なくし、コンピュ
ータシステムの総合的な処理能力の向上を図ることが可
能になる。
【0100】
【発明の効果】以上詳細に説明したように、本発明によ
れば、プロセッサが主記憶に対してロード命令を発行し
た場合等のデータ読み出しレイテンシを削減することが
でき、コンピュータシステムにおける総合性能の向上が
図れる。
【図面の簡単な説明】
【図1】 本発明によるコンピュータシステムの構成を
示す図である。
【図2】 FIFOを使ったトランザクション制御方式
を示す図である。
【図3】 本発明によるトランザクション制御方式を示
す図である。
【図4】 バス上にトランザクションが送出されてか
ら、メモリに対するアクセスを実行可能になるまでのタ
イミングを示す図である。
【図5】 ストア・トランザクションとロード・トラン
ザクションが連続して発行された場合の例を示す図であ
る。
【図6】 トランザクション間の依存関係を管理する依
存マトリックスを示す図である。
【図7】 トランザクション間の依存関係を表す依存フ
ラグの状態遷移図である。
【符号の説明】
1・・・プロセッサ 2・・・バス 3・・・メモリコントローラ 4・・・主記憶 5・・・外部バスコントローラ 6・・・外部記憶装置 7・・・周辺装置 8・・・バス制御部 9・・・トランザクション入力部 10・・・トランザクション制御部 11・・・メモリ制御部 12・・・データバッファ制御部 13・・・データバッファ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 村岡 諭 神奈川県横浜市戸塚区吉田町292番地 株 式会社日立製作所生産技術研究所内 Fターム(参考) 5B005 JJ11 KK13 MM01 MM22 NN01 NN71 PP21 PP26 QQ01

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 キャッシュを備えた複数のプロセッサと
    メモリとの間のデータ入出力を制御するメモリコントロ
    ーラにおいて、 読み出し要求を受けた場合は、各プロセッサから当該要
    求についてのスヌープ結果が通知される前に、メモリに
    対するデータ読み出し処理を開始し、 書き込み要求を受けた場合は、各プロセッサから当該要
    求についてのスヌープ結果が通知されるのを待って、メ
    モリに対するデータ書き込み処理を開始することを特徴
    とするメモリコントローラ。
  2. 【請求項2】 キャッシュを備えた複数のプロセッサと
    メモリとの間のデータ入出力を制御するメモリコントロ
    ーラであって、 各プロセッサからメモリへのアクセス要求を受け取る手
    段と、 受け取ったアクセス要求を格納するアクセス要求制御手
    段と、 各プロセッサからスヌープ結果を受け取る手段と、 メモリに対するアクセスを制御するメモリ制御手段とを
    備え、 前記アクセス要求制御手段は、メモリからデータを読み
    出すアクセス要求を格納した場合、スヌープ結果が確定
    する前に、前記メモリ制御手段に、メモリアクセス要求
    を出力することを特徴とするメモリコントローラ。
  3. 【請求項3】 前記アクセス要求制御手段を複数備え、 各アクセス要求制御手段は、それぞれ独立して、メモリ
    アクセス要求を前記メモリ制御手段に出力することを特
    徴とする請求項2に記載のメモリコントローラ。
  4. 【請求項4】 複数のアクセス要求間の依存関係を管理
    する依存関係管理手段を更に有し、 前記アクセス要求制御手段は、当該依存関係に基づい
    て、メモリアクセス要求を出力することを特徴とする請
    求項3に記載のメモリコントローラ。
  5. 【請求項5】 前記アクセス要求制御手段は、それぞ
    れ、 当該アクセス要求制御手段が格納するアクセス要求と、
    他のアクセス要求制御手段が格納するアクセス要求との
    依存関係を管理する依存関係管理手段を有し、当該依存
    関係に基づいて、メモリアクセス要求を出力することを
    特徴とする請求項3に記載のメモリコントローラ。
  6. 【請求項6】 前記依存関係管理手段は、 先行するアクセス要求と後続のアクセス要求とで対象ブ
    ロックアドレスが等しい場合に、後続のアクセス要求
    は、先行するアクセス要求に依存するとして管理するこ
    とを特徴とする請求項5に記載のメモリコントローラ。
  7. 【請求項7】 前記依存関係管理手段は、 特定のアクセス要求について、当該特定のアクセス要求
    は、先行するすべてのアクセス要求に依存し、 後続のアクセス要求は、すべて当該特定のアクセス要求
    に依存するとして管理することを特徴とする請求項5に
    記載のメモリコントローラ。
  8. 【請求項8】 前記アクセス要求制御手段は、 他のアクセス要求制御手段にアクセス要求が格納される
    際、当該アクセス要求と、自己が格納するアクセス要求
    を比較し、その結果に基づいて、他のアクセス要求制御
    手段に、依存関係をセットするための信号を出力し、 自己が格納するアクセス要求をスヌープ結果により取り
    消す場合、及び、自己が格納するアクセス要求をメモリ
    に送信した場合に、他のアクセス要求制御手段に、依存
    関係をクリアするための信号を出力することを特徴とす
    る請求項5に記載のメモリコントローラ。
  9. 【請求項9】 キャッシュを備えた複数のプロセッサ
    と、 請求項1〜8のいずれか一項に記載のメモリコントロー
    ラと、 当該メモリコントローラに制御されるメモリとを備えた
    ことを特徴とするコンピュータシステム。
JP11055459A 1999-03-03 1999-03-03 メモリコントローラ及びコンピュータシステム Pending JP2000250811A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11055459A JP2000250811A (ja) 1999-03-03 1999-03-03 メモリコントローラ及びコンピュータシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11055459A JP2000250811A (ja) 1999-03-03 1999-03-03 メモリコントローラ及びコンピュータシステム

Publications (1)

Publication Number Publication Date
JP2000250811A true JP2000250811A (ja) 2000-09-14

Family

ID=12999200

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11055459A Pending JP2000250811A (ja) 1999-03-03 1999-03-03 メモリコントローラ及びコンピュータシステム

Country Status (1)

Country Link
JP (1) JP2000250811A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9183149B2 (en) 2012-04-17 2015-11-10 Samsung Electronics Co., Ltd. Multiprocessor system and method for managing cache memory thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9183149B2 (en) 2012-04-17 2015-11-10 Samsung Electronics Co., Ltd. Multiprocessor system and method for managing cache memory thereof

Similar Documents

Publication Publication Date Title
US5796977A (en) Highly pipelined bus architecture
US6519685B1 (en) Cache states for multiprocessor cache coherency protocols
US5909699A (en) Method and apparatus for supporting read, write, and invalidation operations to memory which maintain cache consistency
US5761731A (en) Method and apparatus for performing atomic transactions in a shared memory multi processor system
US5426765A (en) Multiprocessor cache abitration
EP0856796B1 (en) Variable-grained memory sharing for clusters of symmetric multi-processors
US7228389B2 (en) System and method for maintaining cache coherency in a shared memory system
US5983326A (en) Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
US5774700A (en) Method and apparatus for determining the timing of snoop windows in a pipelined bus
US7469321B2 (en) Software process migration between coherency regions without cache purges
US5797026A (en) Method and apparatus for self-snooping a bus during a boundary transaction
JPH10187645A (ja) プロセス・ノードの多数のサブノード内にコヒーレンス状態で格納するように構成されたマルチプロセス・システム
JPH10149342A (ja) プリフェッチ動作を実行するマルチプロセス・システム
JPH10187470A (ja) スピンロック動作を最適化する装置を含むマルチプロセス・システム
US20120221812A1 (en) Method for preserving memory affinity in a non-uniform memory access data processing system
JP2004506981A (ja) マルチプロセッサにおけるセマフォおよびアトミック動作の管理のためのシステムおよび方法
JPH10143483A (ja) ミグラトリ・データ・アクセス・パターンを検出し、効果的に提供するように構成されたマルチプロセスシステム
JPH10143476A (ja) プリフェッチ動作を開始するソフトウエアを実行するマルチプロセス・システム
US7051163B2 (en) Directory structure permitting efficient write-backs in a shared memory computer system
US6412047B2 (en) Coherency protocol
JPH06318174A (ja) キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法
US5701422A (en) Method for ensuring cycle ordering requirements within a hierarchical bus system including split-transaction buses
JP2000250811A (ja) メモリコントローラ及びコンピュータシステム
JPH0962580A (ja) マルチプロセッサ装置
JP2517859B2 (ja) 並列プロセス管理方法