(57)【特許請求の範囲】
【請求項１】
システムバスを介しアクセス可能なメインメモリと、
複数のプロセッサであって、該プロセッサの１以上が関連するキャッシュメモリを有するプロセッサと、
前記複数のプロセッサを接続するシステムバスと、
前記複数のプロセッサの第１プロセッサに関連し、前記システムバスを介し前記複数のプロセッサによりアクセス可能な非キャッシュローカルメモリと、
を有するマルチプロセッサシステムであって、
前記非キャッシュローカルメモリは、前記第１プロセッサによってアクセスされるよう構成され、さらに当該マルチプロセッサシステムの前記複数のプロセッサの他のプロセッサによってアクセスされるよう構成され、
前記非キャッシュローカルメモリは、前記第１プロセッサと直接に双方向通信するための第１ポートと、前記システムバスを介し前記他のプロセッサと双方向通信するための第２ポートとを有し、
前記非キャッシュローカルメモリは、前記メインメモリとは別のメモリであるマルチプロセッサシステム。
【請求項２】
前記非キャッシュローカルメモリは、各データブロックに第１状態ビットと第２状態ビットとが割り当てられているデータブロックに情報を格納するよう構成され、
前記第１状態ビットと前記第２状態ビットとは、前記非キャッシュローカルメモリと１以上のキャッシュメモリとの間のコヒーレンシを維持するため設けられる、請求項１記載のマルチプロセッサシステム。
【請求項３】
前記第１状態ビットは、あるデータブロックが共有されているか示すよう構成され、
前記第２状態ビットは、前記あるデータブロックが無効であるか示すよう構成される、請求項２記載のマルチプロセッサシステム。
【請求項４】
当該システムは、前記データブロックがもともと格納されている前記非キャッシュローカルメモリに前記第１及び第２状態ビットを格納するよう構成される、請求項２又は３記載のマルチプロセッサシステム。
【請求項５】
前記非キャッシュローカルメモリは、当該システムのキャッシュコヒーレンス粒度に対応するブロックサイズによりデータを格納するよう構成される、請求項２記載のマルチプロセッサシステム。
【請求項６】
システムバスに接続される複数のプロセッサであって、該プロセッサの各々がキャッシュメモリを有する前記複数のプロセッサと、前記システムバスを介しアクセス可能なメインメモリとを有するマルチプロセッサシステムにおいてデータを処理する方法であって、
前記システムバスを介し前記複数のプロセッサによりアクセス可能であって、関連する非キャッシュローカルメモリを第１プロセッサに備えるステップと、
前記非キャッシュローカルメモリが第１ポートを介し前記第１プロセッサによって直接に双方向にアクセス可能とされ、前記システムバスと第２ポートとを介しその他のプロセッサによって双方向にアクセス可能とされる前記第１ポートと前記第２ポートとを有するように、前記非キャッシュローカルメモリを設定するステップと、
を有し、
前記非キャッシュローカルメモリは、前記メインメモリとは別のメモリとして備えられる方法。
【請求項７】
第１及び第２状態ビットを前記非キャッシュローカルメモリに格納されている各データブロックに割り当てるステップをさらに有し、
前記第１及び第２状態ビットは、前記非キャッシュローカルメモリとキャッシュメモリとの間のコヒーレンシを維持するよう動作する、請求項６記載の方法。
【請求項８】
前記第１状態ビットは、あるデータブロックが共有されているか示し、
前記第２状態ビットは、前記あるデータブロックが無効であるか示す、請求項７記載の方法。
【請求項９】
前記データブロックがもともと格納されている前記非キャッシュローカルメモリに前記第１及び第２状態ビットを格納するステップをさらに有する、請求項８記載の方法。
【請求項１０】
第１プロセッサと該第１プロセッサに関連する非キャッシュローカルメモリとの間のリード処理は、
アクセスされる前記データブロックの状態を決定し、前記データブロックが無効であると判断される場合、関連するキャッシュメモリに格納されている変更されたデータブロックを有する前記１以上の他のプロセッサのそれぞれから、前記システムバスを介し変更されたデータブロックを抽出し、無効状態ビットをクリアし、共有状態ビットを設定し、当該リード処理を完了するステップを有する、請求項８又は９記載の方法。
【請求項１１】
第１プロセッサと該第１プロセッサに関連する非キャッシュローカルメモリとの間のライト処理は、
書き込みされる前記データブロックの状態を決定し、前記データブロックが無効又は共有されていると判断される場合、他の何れかのプロセッサが変更されたデータブロックを有するか判断し、そうである場合、該プロセッサに前記変更されたデータブロックを前記非キャッシュローカルメモリに書き戻すようリクエストし、その他のプロセッサのそれぞれの各自のメモリにおいて前記データブロックを無効化し、無効状態ビットをクリアし、当該ライト処理を完了するステップを有する、請求項８又は９記載の方法。
【請求項１２】
前記非キャッシュローカルメモリは、前記システムのキャッシュコヒーレンス粒度に対応するブロックサイズによりデータを格納する、請求項６記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ローカルメモリを有するプロセッサシステムに関し、より詳細には、マルチプロセッサシステムにおけるローカルメモリデータのコヒーレントなキャッシュ処理に関する。
【背景技術】
【０００２】
プロセッサシステムのスピードとより多くのデータを処理する能力を向上させる継続的な動機がある。このスピードを向上させる動機のために使用されるパラレル化が増大しており、これにより、パフォーマンスを向上させるため、複数のより複雑さの低いルーチンが同時に実行されるとき、複雑なプログラムが実行される。スピードを向上するのに使用される他のツールは、キャッシュメモリを設けることである。
【０００３】
キャッシュメモリは、メインシステムメモリからのデータ及び命令の頻繁に使用されている部分のコピーを近接して接続される低遅延キャッシュメモリに格納することによって機能する。このことは、頻繁な間隔によりアクセスされるデータ又は命令がキャッシュメモリから取得され、これにより、メインシステムメモリにアクセスする必要が解消されることを意味する。従って、新しい各リード及びライトコマンドが発行されると、システムは、情報がキャッシュに格納されているか判断するため、まずキャッシュメモリを検索する。当該情報がキャッシュメモリにおいて利用可能である場合、メインシステムメモリへのアクセスは不要であり、当該コマンドがはるかに容易に処理又はデータアクセスされる。
【０００４】
１以上のプロセッサキャッシュとメインシステムメモリとのデータコピーの間のコヒーレンシ又は整合性を保証する必要性が、キャッシュメモリシステムにおいて固有なものである。コヒーレンシを保証する１つの方法は、すべてのキャッシュブロックの状態情報を含む“ＭＥＳＩ”プロトコルである。状態情報は、キャッシュラインがＭＥＳＩ（Ｍｏｄｉｆｉｅｄ，Ｓｈａｒｅｄ，Ｅｘｃｌｕｓｉｖｅ  ａｎｄ  Ｉｎｖａｌｉｄ）であるか示すことを含む。
【０００５】
ＭＥＳＩシステムでは、共有されていないキャッシュラインがアクセスされると、それはｅｘｃｌｕｓｉｖｅ（Ｅ）としてマークされる。以降のリードは状態を変更せず、以降のキャッシュラインへのライトは状態をｍｏｄｉｆｉｅｄ（Ｍ）に変更する。マルチプロセッサシステムの他のプロセッサがキャッシュデータを自らのキャッシュにロードする場合、キャッシュラインは、ｓｈａｒｅｄ（Ｓ）とマークされる。プロセッサが共有されたキャッシュにデータを書き込むことを所望する場合、無効化コマンドが他のすべてのプロセッサ又は共有データのコピーを有する少なくとも他のすべてのプロセッサに送信されねばならない。プロセッサがｍｏｄｉｆｉｅｄキャッシュラインからデータをロードすることが可能となる前、ｍｏｄｉｆｉｅｄキャッシュラインを有するプロセッサは、データをメモリに書き込み、当該データをｓｈａｒｅｄ（Ｓ）とマークする必要がある。ｉｎｖａｌｉｄ（Ｉ）とマークされたキャッシュラインへの読み書きは、キャッシュミスを生じさせる。
【０００６】
上述したＭＥＳＩプロトコルなどのプロトコルは、キャッシュメモリがコヒーレントに維持され、それらをマルチプロセッサシステムのソフトウェアに透過にすることを保証する。キャッシュメモリ及びキャッシュメモリコヒーレンシに関するさらなる詳細は、“Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ａ  Ｑｕａｎｔｉｔａｔｉｖｅ  Ａｐｐｒｏａｃｈ，Ｔｈｉｒｄ  Ｅｄｉｔｉｏｎ，Ｊｏｈｎ  Ｌ．Ｈｅｎｎｅｓｓｙ  ａｎｄ  Ｄａｖｉｄ  Ａ．  Ｐａｔｔｅｒｓｏｎ，２００３”の刊行物に求めることができる。
【０００７】
キャッシュメモリは上述した効果を提供するが、それらは設計を複雑化するという問題点を有し、他のタイプの記憶装置と比較して相対的に高価なものにする傾向がある。例えば、キャッシュメモリは、提示されたアドレスに対してタグをチェックするコンパレータと、マッチする方法を選択するセレクタとを必要とする。キャッシュメモリはまた、データの置換を管理するためＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）ビットを有し、変更されたデータの書き戻しを管理するためのコピーバック機能を必要とする。キャッシュメモリはまた、ビットがキャッシュメモリにおいてアクセスされる方法のため、他のタイプのメモリより大きな電力を消費する傾向がある。さらに、キャッシュにおいてデータがヒット又はミスである方法は、置換ポリシー（典型的にはＬＲＵ）に依存し、ソフトウェアについて予測することは困難である。
【０００８】
デジタル信号処理に使用されるプロセッサなどのプロセッサシステムはまた、処理スピードを向上させる手段としてローカルメモリを使用する。ローカルメモリは、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの独立したメインメモリによるのではなく、プロセッサとローカルメモリの間で直接的に行われるリード及び／又はライト処理を可能にする。ローカルメモリは当該ローカルメモリにアクセス可能なプロセッサに関して処理速度を向上させることを可能にするが、それはマルチプロセッサシステムにさらなる効果を提供するものではない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、ローカルメモリデータのコヒーレントなキャッシュ処理が提供されるマルチプロセッサシステムを提供することである。
【課題を解決するための手段】
【００１０】
本発明の第１の特徴によると、複数のプロセッサであって、該プロセッサの１以上が係るキャッシュメモリを有するプロセッサと、前記複数のプロセッサを接続するシステムバスと、前記複数のプロセッサの１つに係るローカルメモリとを有するマルチプロセッサシステムであって、前記ローカルメモリは、該メモリに係るプロセッサによってアクセスされるよう構成され、さらに当該マルチプロセッサシステムの前記プロセッサの他のプロセッサによってアクセスされるよう構成されるマルチプロセッサシステムが提供される。
【００１１】
本発明は、予測可能なタイミング動作を有し、高速であって、低電力で安価であるローカルメモリを提供するという効果を有し、またマルチプロセッサシステムの他のプロセッサがローカルメモリにアクセスすることを可能にするという効果を享受する。
【００１２】
本発明の他の特徴によると、システムバスに接続される複数のプロセッサであって、該プロセッサの少なくとも１つがキャッシュメモリを有するプロセッサを有するマルチプロセッサシステムにおいてデータを処理する方法であって、係るプロセッサに接続されるローカルメモリを提供するステップと、前記ローカルメモリが該ローカルメモリに係るプロセッサによって直接アクセス可能となり、前記システムバスを介しその他のプロセッサの１以上によってアクセス可能となるように、前記ローカルメモリを設定するステップとを有する方法が提供される。
【発明を実施するための最良の形態】
【００１３】
図１は、本発明によるマルチプロセッサシステム１を示す。マルチプロセッサシステム１は、複数のプロセッサ２１〜２５と、システムバス３０と、メインシステムメモリ４０とを有する。各プロセッサ２１〜２５は、各自のキャッシュメモリ４１〜４５に接続され、各キャッシュメモリ４１〜４５は、さらにシステムバス３０に接続される。上述したように、キャッシュメモリ４１〜４５は、各自のプロセッサ２１〜２５によって頻繁に使用されるデータ又は命令のコピーを格納し、これにより、プロセッサ２１〜２５がリード又はライト処理中にメインシステムメモリ４０にアクセスすることを不要にする。
【００１４】
プロセッサ２５は、複数のデータブロック（図示せず）を有するローカルメモリ５０に接続される。本発明によると、ローカルメモリ５０は、それに係るプロセッサ２５との接続用の第１ポート５１を有する。さらに、ローカルメモリ５０は、システムバス３０に接続される第２ポート５２を有し、これにより、その他のプロセッサ２１〜２４の１以上がローカルメモリ５０にアクセスすることを可能にする。
【００１５】
好適な実施例は、ローカルメモリ５０に加えてキャッシュメモリ４５に接続されるプロセッサ２５を示しているが、キャッシュメモリ４５は任意的なものであり、プロセッサ２５は単にローカルメモリ５０のみに接続することが可能であるということに留意されたい。さらに、好適な実施例のマルチプロセッサシステムは、ローカルメモリ５０を有する１つのみのプロセッサ２５により示されているが、その他のプロセッサ２１〜２４の１以上がまた各ローカルメモリに接続可能であるということが理解されるであろうということが留意される。
【００１６】
従って、ローカルメモリ５０の第２ポート５２はその他のプロセッサ２１〜２４がそれに係るプロセッサ２５に加えて、ローカルメモリ５０にアクセスすることを可能にすることは理解されるであろう（プロセッサ２５とローカルメモリ５０との間のアクセスほどは高速でないが）。
【００１７】
本発明は、ソフトウェアに透過な方法により、その他のプロセッサ２１〜２４によるローカルメモリ５０へのデータのキャッシュ処理を可能にする。これは、ローカルメモリ及びキャッシュコヒーレンシによるシステムをプログラムすることを容易にする。
【００１８】
ローカルメモリ５０のコヒーレンシは、第１及び第２状態ビットをローカルメモリ５０のすべてのブロックに関連付けることによって可能とされる。好ましくは、ローカルメモリの各データブロックは、システムのキャッシュコヒーレンシ粒度と同一のサイズ（典型的には、３２又は６４バイト）を有する。
【００１９】
第１状態ビットは、Ｓｈａｒｅｄビットと呼ばれ、システムの他のプロセッサがｒｅａｄ−ｓｈａｒｅｄコマンドによりブロックを読み込むときに設定される。
【００２０】
第２状態ビットは、Ｉｎｖａｌｉｄビットと呼ばれ、システムの他のプロセッサがｒｅａｄ−ｅｘｃｌｕｓｉｖｅコマンドによりデータブロックを読み込み、又はデータブロックに対してアップグレードコマンドを発行するときに設定される。
【００２１】
ローカルメモリ５０に係るプロセッサ２５、すなわち、ローカルメモリ５０を所有するプロセッサ２５は、プロセッサ２５がそれのローカルメモリ５０にアクセスするときは常に、Ｓｈａｒｅｄ及びＩｎｖａｌｉｄビットをチェックする。
【００２２】
図２は、Ｒｅａｄ処理がプロセッサ２５によりそれのローカルメモリ５０に対して実行されることを示すフローチャートを示す。ステップ２０１において、プロセッサ２５は、ローカルメモリ５０においてアクセスされているデータブロックのＩｎｖａｌｉｄビットをチェックする。Ｉｎｖａｌｉｄビットが設定されていない場合、ステップ２０７において、プロセッサ２５は単にリード処理を続ける。しかしながら、Ｉｎｖａｌｉｄビットが設定されている場合、ステップ２０３において、プロセッサ２５はシステムバス３０を介しｌｏｏｋｕｐ−ｃａｃｈｅ−ａｎｄ−ｕｐｇｒａｄｅコマンドを発行する。ｌｏｏｋｕｐ−ｃａｃｈｅ−ａｎｄ−ｕｐｇｒａｄｅコマンドは、ｍｏｄｉｆｉｅｄ状態によりデータブロックを保持するプロセッサ２１〜２５にｍｏｄｉｆｉｅｄデータブロックをローカルメモリ５０に送り返すようリクエストする。ステップ２０４においてｍｏｄｆｉｅｄデータブロックが受信された後、ステップ２０５においてＩｎｖａｌｉｄビットがクリアされ、ステップ２０６においてＳｈａｒｅｄビットが設定される。その後ステップ２０７において、リード処理が通常通りに完了される。データブロックを提供したプロセッサ２１〜２５は、各自のキャッシュメモリ４１〜４５にｓｈａｒｅｄ状態によりデータブロックのコピーを維持するため、Ｓｈａｒｅｄビットが設定されることに留意されたい。上記から、プロセッサ２５はまたそれのローカルメモリに格納されているデータをキャッシュ処理することが可能であるということに留意されたい。これは、メモリアドレスでなく命令のオペコードに基づき、ローカルとシステムメモリとの間で選択するプロセッサにおいて行われるかもしれない。
【００２３】
図３は、ローカルメモリ５０に対するライト処理を示すフローチャートを示す。ステップ３０１において、ライト処理を行うプロセッサ２５が書き込まれるデータブロックのＩｎｖａｌｉｄ及びＳｈａｒｅｄビットの両方をチェックする。ステップ３０２において、プロセッサ２５は、これらのビットの１つが設定されているか決定する。これらのビットの１つが設定されている場合、ステップ３０３において、プロセッサ２５はシステムバスを介しｌｏｏｋｕｐ−ｃａｃｈｅ−ａｎｄ−ｉｎｖａｌｉｄａｔｅコマンドを発行する。ｌｏｏｋｕｐ−ｃａｃｈｅ−ａｎｄ−ｉｎｖａｌｉｄａｔｅコマンドは、各自のキャッシュメモリ４１〜４５にキャッシュされているデータブロックを有するプロセッサ２１〜２５にデータブロックを無効化することをリクエストする。
【００２４】
プロセッサ２１〜２５の１つがｍｏｄｉｆｉｅｄ状態によるデータブロックを有する場合、各プロセッサは、無効化前にｍｏｄｉｆｉｅｄデータブロックをローカルメモリ５０に書き戻す。ローカルメモリ５０においてｍｏｄｉｆｉｅｄデータブロックが受け付けされた後、ステップ３０７において、Ｉｎｖａｌｉｄａｔｅビットがクリアされ、ステップ３０８において、ライト処理が完了される。
【００２５】
ステップ３０４〜３０６はｍｏｄｉｆｉｅｄ状態によりデータブロックを有する各プロセッサによって実行されることが理解される。
【００２６】
ステップ３０２において、Ｉｎｖａｌｉｄ又はＳｈａｒｅｄビットの何れも設定されていない場合、ステップ３０８において、ライト処理は通常通りに続けられる。
【００２７】
データのコピーバックは、ローカルメモリにおけるそれのデータブロックのＩｎｖａｌｉｄビットをリセットする（それは、“ｖｉｃｔｉｍｉｚｅｄ”されるため）。これは、新たなデータブロックがデータキャッシュにロードされるときは常に、新たなデータのためのスペースを設けるため、古いデータがデータキャッシュから削除される。この古いデータは、ｖｉｃｔｉｍｉｚｅｄされたと言われる。古いデータがプロセッサによって変更された場合、当該データは、そのソースとなるメモリに書き戻される、すなわち、コピーバックされる必要がある。
【００２８】
第１及び第２の状態ビット、すなわち、ＳｈａｒｅｄビットとＩｎｖａｌｉｄビットは、データがもともと格納されている場所に格納され、それがキャッシュされている場所には格納されない。すなわち、第１及び第２状態ビットはローカルメモリに格納され、キャッシュメモリには格納されない。
【００２９】
“ｒｅａｄ−ｓｈａｒｅｄ”、“ｒｅａｄ−ｅｘｃｌｕｓｉｖｅ”、“ｌｏｏｋｕｐ−ｃａｃｈｅ−ａｎｄ−ｕｐｇｒａｄｅ”及び“ｌｏｏｋｕｐ−ｃａｃｈｅ−ａｎｄ−ｉｎｖａｌｉｄａｔｅ”処理は、キャッシュコヒーレンシをサポートする典型的なバスプロトコルにおいて見つけられるすべてのコマンドである。特に、
・ｒｅａｄ−ｓｈａｒｅｄは、それを読み込む意図によりデータを読み込むのに使用される。
・ｒｅａｄ−ｅｘｃｌｕｓｉｖｅは、それを変更する意図によりデータを読み込むのに使用される。
・ｌｏｏｋｕｐ−ｃａｃｈｅ−ａｎｄ−ｕｐｇｒａｄｅは、ｍｏｄｉｆｉｅｄ状態によるデータを有するプロセッサにそれをｓｈａｒｅｄ状態に戻すことをリクエストする。
・ｌｏｏｋｕｐ−ｃａｃｈｅ−ａｎｄ−ｉｎｖａｌｉｄａｔｅは、それのキャッシュにデータを有するプロセッサにキャッシュからそれを削除するようリクエストする。
【００３０】
上述した本発明は、ローカルメモリを有するプロセッサがキャッシュコヒーレンシによりシステムに搭載可能となる方法を示す。その他のプロセッサは、ソフトウェアがこれを認識する必要なくデータをローカルメモリにキャッシュすることが可能である。
【００３１】
さらに、本発明は、ローカルメモリデータのコヒーレントなキャッシュ処理を提供するという効果を有し、ローカルメモリは、典型的にはキャッシュより設計が容易であり、予測可能なタイミング動作を有し、より高速である。さらに、ローカルメモリは少ない電力しか使用せず、より安価である。
【００３２】
上述した実施例は本発明を限定するものでなく、説明するものであって、当業者は添付した請求項の範囲から逸脱することなく、他の多数の実施例を構成可能であるということに留意すべきである。“有する”という用語は、請求項にリストされた以外の要素又はステップの存在を排除するものでなく、“ある”という用語は複数を排除するものでなく、単一のプロセッサ又は他のユニットが、請求項に記載された複数のユニットの機能を実現するかもしれない。請求項における参照符号は、その範囲を制限するためのものとして解釈されるべきでない。
【図面の簡単な説明】
【００３３】
【図１】図１は、本発明の好適な実施例によるマルチプロセッサシステムのハイレベルな図を示す。
【図２】図２は、本発明によるｒｅａｄ処理を示すフローチャートを示す。
【図３】図３は、本発明によるｗｒｉｔｅ処理を示すフローチャートを示す。
【図１】
0005587539.tif 000002
【図２】
0005587539.tif 000003
【図３】
0005587539.tif 000004