(57)【要約】【課題】  データ・コヒーレンシを保ちつつ、ライト・アクセスを含むメモリ・アクセスの効率化を図る。【解決手段】  バス１０、１１と、バスに接続するメモリ１７、メモリ・コントローラ１６、キャッシュを有する第１デバイス１３、および第２デバイス１５を備え、メモリ・コントローラは、キャッシュのデータおよび第２デバイスがメモリにライト・アクセスする場合におけるライト・データを一時記憶するためのバッファ２０を含むことを特徴とするメモリ・システムを提供する。メモリ・コントローラのバッファに、キャッシュのデータおよび第２デバイスがメモリにライト・アクセスする場合におけるライト・データを一時記憶することにより、第２デバイスのライト・アクセス・リトライをなくしつつ同時にデータ・コヒーレンシを保つことができる。【選択図】  図２
2006164077.tif 000002
【特許請求の範囲】
【請求項１】
バスと、
バスに接続するメモリ、メモリ・コントローラ、キャッシュを有する第１デバイス、および第２デバイスを備え、
メモリ・コントローラは、キャッシュのデータおよび第２デバイスがメモリにライト・アクセスする場合におけるライト・データを一時記憶するためのバッファを含むことを特徴とするメモリ・システム。
【請求項２】
さらに、前記ライト・データが前記キャッシュのデータとキャッシュ・ヒットする場合に、前記ライト・データを前記バッファに一時記憶させるための制御回路を備える、請求項１のメモリ・システム。
【請求項３】
前記制御回路は、前記キャッシュ・ヒットの場合に、前記第１デバイスからのアクセス・リトライ要求に応じて前記第２デバイスがリトライしないようにするためのリトライ制御回路を含む、請求項２のメモリ・システム。
【請求項４】
さらに、前記ライト・データの前記バッファへの書き込み位置を記憶し、その書き込み位置での前記ライト・データに上書きすることなく、前記キャッシュのデータを前記バッファに一時記憶させるためのタグ制御回路を備える、請求項３のメモリ・システム。
【請求項５】
前記バッファに一時記憶されるキャッシュ・データは、キャッシュにおいて既に更新されたデータである、請求項４のメモリ・システム。
【請求項６】
前記タグ制御回路は、前記バッファに記憶された前記ライト・データおよび前記キャッシュのデータを連続するデータとして前記メモリへ書き込ませる、請求項５のメモリ・システム。
【請求項７】
前記バスはＣＰＵローカル・バスおよびシステム・バスを含み、該２つのバスがバス・ブリッジで接続され、前記第１デバイスは前記ＣＰＵローカル・バスに接続するＣＰＵを含む、請求項１のメモリ・システム。
【請求項８】
バスと、バスに接続するメモリ、メモリ・コントローラ、キャッシュを有する第１デバイス、および第２デバイスを備え、さらにメモリ・コントローラがバッファを有するメモリ・システムにおいて、
第２デバイスがメモリにライト・アクセスする場合に、メモリ・システムを制御するための方法であって、
（ａ）ライト・アクセスにおけるライト・データのアドレスとキャッシュ中のデータのアドレスを比較するステップと、
（ｂ）前記２つのアドレスが一致した場合に、キャッシュ中の一致したアドレスのデータ変更の有無を確認するステップと、
（ｃ）前記データ変更がある場合に、第２デバイスにリトライ・アクセスをさせることなく、前記ライト・データをバッファに一時記憶するステップと、
（ｄ）キャッシュ中の前記変更データを、一時記憶された前記ライト・データに上書きすることなく、バッファに一時記憶するステップと、
（ｅ）バッファに一時記憶された前記変更データおよび前記ライト・データを連続するデータとしてメモリに書き込むステップと、
を備える方法。
【請求項９】
前記比較ステップ（ａ）は、前記第１デバイスのキャッシュが前記第２デバイスのライト・アクセスを監視するステップを含む、請求項８の方法。    
【請求項１０】
バスを介して、メモリ、バッファを有するメモリ・コントローラ、複数のバス・マスタおよびキャッシュ・メモリが相互に接続するシステムにおいて、スヌープ方式でデータ・コヒーレンシを保つための方法であって、
バス・マスタのライト・アクセスがスヌープ・ヒットし、かつヒットしたキャッシュ・メモリのデータが更新されている場合に、バス・マスタによるアクセス・リトライを発生させることなく、バス・マスタのライト・データおよびキャシュ・メモリの更新データをバッファに一時記憶した後に連続するデータとしてメモリに書き込むステップを備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはメモリ・システムとその制御方法に関し、特にデータ・コヒーレンシを保ちつつバスを介したメモリへのライト・アクセスを効率化する方法に関する。
【背景技術】
【０００２】
パーソナル・コンピュータ（ＰＣ）などのシステムでは、バスを介してＣＰＵやメモリ（ＤＲＡＭ等）等のデバイスが相互に接続する。各デバイスは、マスタ・デバイス（バス・マスタ）となって、データが記憶されるメモリにアクセスする。ＤＲＡＭなどのメモリ（システム・メモリ）は大きな記憶容量を持っているが、そのアクセス速度は遅い。頻繁に利用するデータへのアクセスの高速化を図るため、ＣＰＵはＳＲＡＭ等からなるキャッシュ・メモリ（以下、単に”キャッシュ”と呼ぶ。）を使用する。キャッシュは、記憶容量は小さいが、ＤＲＡＭなどのシステム・メモリに比べて高速アクセスが可能である。
【０００３】
キャッシュを有するシステムでは、キャッシュとメイン・メモリとの間でコヒーレンシ（データの同一性）を保つ必要がある。このデータ・コヒーレンシを保つための方式（アルゴリズム）としてスヌープ（snoop）方式がある。図１は従来のスヌープ動作を説明するための図である。図１ではＣＰＵバス１とシステムバス２がバスブリッジ３で接続する。ＣＰＵバス１にはＣＰＵ＃０とＣＰＵ＃２が接続する。２つのＣＰＵはキャッシュを有している。システムバス２にはデバイス＃２とメモリ・コントローラおよびメモリが接続する。
【０００４】
スヌープ方式では、キャッシュを持つＣＰＵ＃０は、他のデバイス＃２（マスタ・デバイス）からのデータ・アクセス４のアドレスを監視（スヌープ５）する（図１（ａ））。ＣＰＵ＃０は、そのアクセス・アドレスが自己のキャッシュ内のデータのアドレスと一致し、かつデータ状態が標準ＭＥＳＩプロトコル等で変更（更新）済みである場合、リトライ要求６を出す（図１（ｂ））。リトライ要求６に応じて、マスタデバイス＃２の進行中のアクセスが中断される（図１（ｂ））。さらに、キャッシュ内の一致したアドレスを含む連続するアドレスの複数データで構成されるキャッシュ・ラインがメモリに先に書き戻される（図１（ｃ）、（ｄ））。その後、マスタデバイス＃２が再度メモリにアクセスしてデータを転送することで、データのコヒーレンシが保たれる（図１（ｅ）、（ｆ））。
【０００５】
図１の動作から明らかなように、監視している（スヌープ）デバイスからのリトライ要求が発生すると、転送途中のデバイスはアクセスを中断し、その後再度アクセスする必要がある。すなわち、ライト・アクセスでのスヌープ・ヒットによるオーバーヘッドが発生する。この動作により、バス利用率の低下や、デバイスの待ち時間の増加が生ずる。
【０００６】
スヌープ方式を利用するマルチ・プロセッサ・システムにおいて、メモリ・アクセスの高速化を図るための従来技術が、例えば、日本国の公開特許公報06-222993に開示されている。しかし、この公報は、スヌープ・ヒットした場合のアクセス・リトライによる動作遅延やバス利用率の低下を改善する技術を開示するものではない。
【特許文献１】公開特許公報 06-222993
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、データ・コヒーレンシを保ちつつ、ライト・アクセスを含むメモリ・アクセスの効率化を図ることである。
【０００８】
本発明の目的は、スヌープ・モードにおいて、ライト・アクセスでのキャッシュ・ヒット（スヌープ・ヒット）が生じた場合に、アクセス・リトライ時のオーバーヘッドによる不具合（動作遅延、バス利用率の低下など）を軽減することである。
【課題を解決するための手段】
【０００９】
本発明は、バスと、バスに接続するメモリ、メモリ・コントローラ、キャッシュを有する第１デバイス、および第２デバイスを備え、メモリ・コントローラは、キャッシュのデータおよび第２デバイスがメモリにライト・アクセスする場合におけるライト・データを一時記憶するためのバッファを含むことを特徴とするメモリ・システムを提供する。
【発明の効果】
【００１０】
本発明は、メモリ・コントローラのバッファに、キャッシュのデータおよび第２デバイスがメモリにライト・アクセスする場合におけるライト・データを一時記憶することにより、第２デバイスのライト・アクセス・リトライをなくし、同時にデータ・コヒーレンシを保つことができる。
【００１１】
本発明は、ライト・アクセス・リトライをなくすことができるので、オーバーヘッドによる不具合（動作遅延、バス利用率の低下など）を軽減することができる。
【発明を実施するための最良の形態】
【００１２】
本発明について図面を引用しながら説明する。図２は、本発明の方法（動作）の概要を説明するための図である。図２ではＣＰＵバス１０とシステムバス１２がバスブリッジ１３で接続する。ＣＰＵバス１０にはＣＰＵ＃０（１３）とＣＰＵ＃２（１４）が接続する。２つのＣＰＵはキャッシュを有している。システムバス１２にはデバイス＃２（１５）とメモリ・コントローラ（１６）およびメモリ（１７）が接続する。メモリ（１７）はＤＲＡＭなどのシステム・メモリである。メモリ・コントローラ（１６）はデータの一時記憶用のバッファ２０を持つ。なお、図２ではＣＰＵバス１０とシステムバス１２の２つのバスが存在する構成を示しているが、１つのシステムバスに各デバイスが接続する構成であってもよい。また、接続するデバイス数は、バスを占有可能なマスタデバイスが最低２以上あればいくつであってもかまわない。
【００１３】
スヌープ方式では、キャッシュを持つＣＰＵ＃０（１３）は、他のマスタデバイス＃２（１５）からのデータ・アクセス１８のアドレスを監視（スヌープ１９）する（図２（ａ））。ＣＰＵ＃０（１３）は、そのアクセス・アドレスが自己のキャッシュ内のデータのアドレスと一致し、かつデータ状態が標準ＭＥＳＩプロトコル等で変更（更新）済みである場合、リトライ要求６を出すが、マスタデバイス＃２（１５）は進行中のアクセスを中断しない。デバイス＃２（１５）はライト・データをメモリ・コントローラ内のバッファ２０に書き込む（図２（ｂ））。ＣＰＵ＃０のキャッシュ内の一致したアドレスのデータがバッファ２０に書き戻される（図２（ｃ）、（ｄ））。その後、バッファ２０のライト・データおよびキャッシュ・データが１つの連続するデータとしてメモリ（１７）に書き込まれる（図１（ｄ））。
【００１４】
このように、本発明では、ライト・アクセス時のスヌープ・ヒットによるリトライ要求に対応したバス・アクセスの中断を必要としない。キャッシュ・データの書き戻し処理を後回しにして、メモリコントローラ内のバッファに一時記憶することにより、データコヒーレンシを維持する。これにより、図１の従来方式に比べて、システムバス１１上のアービトレーション（arbitration）やアドレスフェーズを削減できる。さらに、メモリコントローラ１６とメモリ１７間のメモリバスにおいても、３回のRASアドレス転送、２回のCASアドレス転送、２回のデータ転送期間（連続データ転送を１期間として数えた場合）を、それぞれ１回に削減できる。ライトアクセスの開始から完了までを考えた場合、バス構成やメモリのスピードに依存するが、約２０〜３０％のアクセス時間の削減が可能となる。
【００１５】
図３は本発明の構成を示す機能ブロック図である。図３は、リトライ制御回路１０１、アービトレーション回路１０２、メモリ・コントローラ１０４、タグ制御回路１０６、バッファ１０８を含む。なお、タグ制御回路１０６とバッファ１０８は実際にはメモリ・コントローラ１０４に内臓されるが、説明のために異なるブロックとして記載している。これらの回路はいずれもシステム・バス（図２の１１）に接続する。
【００１６】
リトライ制御回路１０１は、アドレスリトライ信号を監視し、他のデバイスへの分配をする回路である。ライトアクセス時のスヌープヒットによるリトライ信号入力があった場合、リトライ出力をアサート（assert）せず、Retry-Hold信号及び、対応するPriority信号をアサートする。ライトアクセス時のスヌープヒット以外におけるリトライ入力は、そのままリトライ出力とする。アービトレーション回路１０２は、リトライ制御回路１０１からのPriority信号に対応して、デバイスのからのリクエストを最優先にする機能を持つ。Priority信号が無い場合は、通常のアービトレーションを行う。メモリ・コントローラ１０４は、メモリのタイミングをコントロールする。通常のDRAMコントロール回路が該当する。アクセス終了時にAccess Complete信号を出力する。
【００１７】
タグ制御回路１０６は、スヌープヒット時のライト・データについて、バッファ１０８内の書き込みデータ位置を記録する。バッファ１０８はキャシュラインサイズ（例えば３２バイト）と同じサイズを単位としている。したがって、例えば３２バイトのキャッシュ・ラインの場合、下位５ビット（２の５乗＝３２）の対応する位置がデータ位置として記録される。さらに、タグ制御回路１０６は、その後に続くキャッシュからのデータ（キャッシュアウトデータ）を、バッファ１０８のライトデータ以外に書き込むためのWrite Strobe信号を発生する。また、タグ制御回路１０６は、キャッシュアウトデータをバッファ１０８にラッチした後に、メモリへの書き込むためのOutput Select信号を発生する。バッファ１０８は、タグ制御回路１０６のWrite Strobe信号により、バス上のデータ（ライト・データ、キャッシュアウトデータ）をラッチする。また、バッファ１０８は、Output Select信号により、ラッチしたデータをメモリへ出力する。
【００１８】
図３の各信号の説明を以下に示す。
・Retry-Hold     ：ライトアクセス時のリトライを受け付けた事を示す。
キャッシュアウトアクセスが終了したときにクリアされる。
・Priority-X     ：ライトアクセス時のリトライを受け付けた時に、次のアク
セスがリトライ発行デバイスとなるようにデバイス-X の
プライオリティを最高にする信号
・Access Complete：メモリアクセスサイクルの終了を示す信号
・Data Strobe    ：バスからのデータ入力及び、メモリへのデータ出力の
タイミング信号
・Data DIR      ：データの転送方向を示す信号
・Write Strobe  ：アドレス、バイトイネーブルにより、どのバイトをラッ
チするか指定する信号
・Output Select ：メモリライト時に、どのデータを出力するのかを指定する
信号
・Bus Request   ：各デバイスからのバスリクエスト信号
・Bus Grant     ：各デバイスへのバスグラント信号
・Retry from X  ：キャッシュ付きデバイス-X からのリトライ信号
・Retry to X    ：デバイス-X へのリトライ信号
【００１９】
次に、図３の構成における本発明の動作を説明する。
（ａ）デバイスＣ（Device#2)は、アービトレーション回路１０２にBus Request C信号（１１０）を出力し、その返信としてBus Grant C信号（１１２）を受け取る。さらに、デバイスＣ（Device#2)は、メモリへ書き込みをするために、バスにアドレス（Bus Address１１４）を出力する。
（ｂ）デバイスＡ（CPU#0）等の各キャッシュは、バス上のアドレス（Bus Address１１４）を監視（スヌープ）する。
（ｃ）ここで、デバイスＡ（CPU#0）のキャッシュ中のアドレスがヒット（スヌープ・ヒット）したとすると、デバイスＡ（CPU#0）はリトライ制御回路１０１へのRetry from A信号（１１６）を活性化する。
（ｄ）リトライ制御回路１０１は、メモリ・コントローラ１０４から、デバイスＣ（Device＃2）からのアクセスがライト・アクセスであることを示すWrite Access信号（１１８）を受け取る。この場合、リトライ制御回路１０１は、Retry from A信号（１１６）を受けても、デバイスＣのライト・アクセスを中断させるための信号であるRetry to C信号（１２０）を活性化しない。
（ｅ）リトライ制御回路１０１は、タグ制御回路１０６へのRetry Hold信号（１２２）を活性化する。また、リトライ制御回路１０１は、Retry from A信号（１１６）を受け取ったデバイスＡ（CPU#0）に対応するPriority-A信号（１２４）をアービトレーション回路１０２に送る（活性化する）。
【００２０】
（ｆ）デバイスＣ（Device#2）は、Bus Address信号（１１４）、Byte Enable信号（１２６）、Bus Control信号（１２８）を用いて、メモリ・コントローラ１０４を制御して、Bus Data In(１３０)上のライト・データをバッファ１０８へ書き込む。書き込み位置は、メモリ・コントローラ１０４からのData Strobe信号およびData DIR信号（１３４）を受けたタグ制御回路１０６が出力するWrite Strobe信号（１３６）により指定される。具体的には、書き込み位置は、Bus Address（１３８）の下位５ビット（３２バイト・キャッシュラインの場合）とByte Enable信号（１４０）のデータ幅に依存する。この時、タグ制御回路１０６に書き込まれたバイト位置情報が記録される。
（ｇ）メモリ・コントローラ１０４は、Retry Hold信号（１２２）を受け取っているので、メモリへの書き込みをせずに、キャッシュからのキャッシュ（データ）・アウトを待つ。また、メモリ・コントローラ１０４は、デバイスＣ（Device#2）によるバッファ１０８への書き込みが終了すると、Access Complete信号（１４４）をActive（活性）にする。
（ｈ）Retryを要求していたデバイスＡ（CPU#0)は、キャッシュ・アウトを要求する。Priority-A信号（１２４）を受け取ったアービトレーション回路１０２は、デバイスＡ（CPU#0)からのBus Request A（１４６）の優先順位を最高位にする。デバイスＡ（CPU#0)のキャッシュ・アウトは、デバイスＣ（Device#2)のアクセスの直後に受け付けられる。
【００２１】
（ｉ）デバイスＡ（CPU#0)は、スヌープ・ヒットしたデータをバッファ１０８にキャッシュ・アウトする。この時、Write Strobe信号１３６によって、先にデバイスＣによって書き込まれたデータに上書きしないように書き込み位置が決められる。
（ｊ）デバイスＡ（CPU#0)によるバッファ１０８への書き込みが終わると、メモリ・コントローラ１０４は、Access Complete信号（１４４）をリトライ制御回路１０１へ出力する。
（ｋ）リトライ制御回路１０１は、活性化していたRetry-Hold信号（１２２）とPriority-A信号（１２４）を非活性化する。
（ｌ）メモリ・コントローラ１０４は、バッファ１０８にラッチされたデータ（ライト・アクセス・データおよびキャッシュ・アウト・データ）をタグ制御回路１０６のアドレス（ＴＡＧ）情報に基づき、一連のデータとしてメモリへ書き込む。これにより、データ・コヒーレンシが保たれつつ、ライト・アクセス動作が完了する。
【図面の簡単な説明】
【００２２】
【図１】従来のスヌープ動作を説明するための図である。
【図２】本発明の方法（動作）の概要を説明するための図である。
【図３】本発明の構成を示す機能ブロック図である。
【符号の説明】
【００２３】
１、１０    ＣＰＵバス
２、１２    システムバス
３、１３    バスブリッジ
４    データ・アクセス
５    スヌープ
６    リトライ要求
１３    ＣＰＵ＃０
１４    ＣＰＵ＃２
１５    デバイス＃２
１６    メモリ・コントローラ
１７    メモリ
２０    バッファ
１０１    リトライ制御回路
１０２    アービトレーション回路
１０４    メモリ・コントローラ
１０６    タグ制御回路
１０８    バッファ
【図１】
2006164077.tif 000003
【図２】
2006164077.tif 000004
【図３】
2006164077.tif 000005