(57)【要約】プロセッサ間のデータ通信において、プロセッサ間の無駄なデータ転送を排除し、性能低下を防ぐ。また、マルチプロセッサのインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐ。データキャッシュ２６を備えた複数のプロセッサ５０と主メモリ１３とがバス１０により接続されたマルチプロセッサシステムにおいて、データアクセスに関する情報を記憶する領域を備え、この情報にしたがって、データキャッシュ２６に対して、ロード命令およびストア命令を発行するデータ転送エンジン１１を備え、各プロセッサ５０は、データキャッシュの共有に関する情報を記憶し、アクセスすべきアドレスを受け付けると、この情報を参照して、どのプロセッサにアクセスすべきかを判断する判断手段２２を備える。
2003048955.tif 000002
【特許請求の範囲】
【請求項１】
データキャッシュを備えた複数のプロセッサとメインメモリとがバスにより接続されたマルチプロセッサシステムにおいて、
アクセスすべきデータキャッシュまたはメインメモリを特定するための情報と、アクセスすべきアドレスを特定するための情報と、アクセス種を指定するための情報とを関連付けて記憶する領域を複数備え、
前記領域に記録された情報にしたがって、データキャッシュまたはメインメモリに対して、ロード命令およびストア命令を発行するデータ転送エンジンを備えたことを特徴とするマルチプロセッサシステム。
【請求項２】
請求項１に記載のマルチプロセッサシステムにおいて、
前記データ転送エンジンは、データを一時的に格納するバッファ領域を備え、
前記発行したロード命令に基づいてデータキャッシュまたはメインメモリから読み出したデータを前記バッファ領域に格納し、
前記バッファ領域に格納したデータを前記発行したストア命令とともにデータキャッシュまたはメインメモリに送信することを特徴とするマルチプロセッサシステム。
【請求項３】
データキャッシュを備えた複数のプロセッサがバスにより接続されたマルチプロセッサシステムにおいて、
各プロセッサは、
他のいずれのプロセッサとデータキャッシュの共有を行なうか否かの設定をするための領域と、共有するデータキャッシュのサイズを設定するための領域と、
アクセスすべきアドレスを受け付けると上記２つの領域を参照して、どのプロセッサにアクセスすべきかを判断する判断手段とを備えることを特徴とするマルチプロセッサシステム。
【請求項４】
請求項３に記載のマルチプロセッサシステムにおいて、
前記データキャッシュの共有は、バンク・インタリーブ方式により行なうことを特徴とするマルチプロセッサシステム。
【請求項５】
請求項３または４に記載のマルチプロセッサシステムにおいて、
判断手段は、アクセス種がロードの場合、他のプロセッサへのアクセスを行なわないように判断することを特徴とするマルチプロセッサシステム。
【請求項６】
データキャッシュを備えた複数のプロセッサとメインメモリとがバスにより接続されたマルチプロセッサシステムにおいて、
アクセスすべきデータキャッシュまたはメインメモリを特定するための情報と、アクセスすべきアドレスを特定するための情報と、アクセス種を指定するための情報とを関連付けて記憶する領域を複数備え、前記領域に記録された情報にしたがって、データキャッシュまたはメインメモリに対して、ロード命令およびストア命令を発行するデータ転送エンジンを備え、
各プロセッサは、他のいずれのプロセッサとデータキャッシュの共有を行なうか否かの設定をするための領域と、共有するデータキャッシュのサイズを設定するための領域と、アクセスすべきアドレスを受け付けると上記２つの領域を参照して、どのプロセッサにアクセスすべきかを判断する判断手段とを備えたことを特徴とするマルチプロセッサシステム。
【発明の詳細な説明】
技術分野
本発明は、マルチプロセッサシステムにかかり、特に、プロセッサ間通信を高速に行なうための技術に関する。
背景技術
実時間処理という高い処理能力が必要なメディア処理などでは、複数のプロセッサ、コ・プロセッサ等を備えたマルチプロセッサ環境において、その処理を分割し、分割した処理を各プロセッサに割り当てて並列実行させるソフトウェア・パイプラインを用いることが主流になりつつある。
このようなマルチプロセッサ環境で、分割された処理を協調して並列実行する場合、プロセッサ間でのデータの受渡しが必要となる。そこで、従来は、複数のプロセッサでメモリを共有し、そのメモリに対してアクセスする等の方式を用いて、プロセッサ間でのデータの受渡しを実現している。
一般的には、一つのメインメモリや２次レベルキャッシュメモリを、複数のプロセッサが共有することにより、これを実現している。しかしながら、このような２次レベル以下に共有メモリを有する構造におけるアクセス・レイテンシは、１次レベルのキャッシュメモリに対するそれに比べ、数倍から数１０倍大きく、これに伴い、プロセッサの性能も著しく低下する。
これを回避するため、様々なアプローチがなされている。例えば、複数のプロセッサ間で共有型のデータキャッシュを持ち、ブロードキャストのアクセス方式を用いる方式（特開平１０−２５４７７９）、ストア・スルー方式のキャッシュメモリとスヌープ制御によりデータ整合性を保つ方式（特開平８−２９７６４２）、共有型データキャッシュに固定アドレスによるインタリーブ型キャッシュを使用する方式（特開平３−１７２９６０）等である。
ところで、ブロードキャスト方式、あるいは、ストア・スルー型キャッシュメモリとスヌープ制御を用いる方式では、データ転送が必要のないプロセッサに対して無駄なアクセスが発生し、冗長な転送によって性能が２分の１から１０分の１程度、低下するという問題がある。更にスヌープ方式の場合、スヌープ専用のアドレスタグをもつことにより、チップ面積の増加にもつながる。また、固定アドレスによるインタリーブ方式では、インタリーブ構成が固定化されているため、データ転送が効率よく分散されるとは限らず、一つのインタリーブ・キャッシュにアクセスが集中することにより、逆にキャッシュメモリの使用効率が落ち、平均で２分の１の性能しか得ることが出来ない。
発明の開示
本発明の第１の目的は、プロセッサ間のデータ通信において、プロセッサ間の無駄なデータ転送を排除し、性能低下を防ぐことにある。
また、本発明の第２の目的は、プロセッサ間で、共有のインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことにある。
上記課題を解決するため、本発明の第１の態様によれば、データキャッシュを備えた複数のプロセッサとメインメモリとがバスにより接続されたマルチプロセッサシステムにおいて、アクセスすべきデータキャッシュまたはメインメモリを特定するための情報と、アクセスすべきアドレスを特定するための情報と、アクセス種を指定するための情報とを関連付けて記憶する領域を複数備え、前記領域に記録された情報にしたがって、データキャッシュまたはメインメモリに対して、ロード命令およびストア命令を発行するデータ転送エンジンを備えたことを特徴とするマルチプロセッサシステムが提供される。
また、上記課題を解決するため、本発明の第２の態様によれば、データキャッシュを備えた複数のプロセッサがバスにより接続されたマルチプロセッサシステムにおいて、各プロセッサは、他のいずれのプロセッサとデータキャッシュの共有を行なうか（共有を行なわない場合も含む）を設定するための領城と、共有するデータキャッシュのサイズを設定するための領域とを備え、アクセスすべきアドレスを受け付けると上記２つの領域を参照して、どのプロセッサにアクセスすべきかを判断する判断手段を備えることを特徴とするマルチプロセッサシステムが提供される。
発明を実施するための最良の形態
本発明の実施の形態について図面を参照して詳細に説明する。
まず、本発明の第１の実施形態について図１を参照して説明する。図１は、本実施形態におけるマルチプロセッサシステムの構成を説明するためのブロック図である。
本図に示すように、本マルチプロセッサシステムは、内部にデータキャッシュ２を備えるプロセッサ１が、内部バス１０にＮＰ個接続され、主メモリ１３を共有している。このとき、主メモリ１３は、主メモリの制御回路とインタフェースとを備える主メモリ制御部１２を介して、内部バス１０に接続されている。さらに、内部バス１０には、本実施形態の特徴部分であるデータ転送エンジン１１が接続されている。
データ転送エンジン１１は、内部バス１０に接続されたプロセッサ１内のデータキャッシュ２、あるいは、主メモリ１３に対してロード／ストア命令を発行し、プロセッサ１ａと他のプロセッサ１ｂとの間（１ａと１ｂとは異なるプロセッサ１を表す）、あるいは、プロセッサ１と主メモリ１３との間のデータ転送を制御する機能を有している。
図１において、各プロセッサ１は、データキャッシュ２と、ロード・ストア制御部３とＣＰＵ４と、内部バス制御部５とを備えている。
データキャッシュ２は、主メモリ１３のデータの一部を格納するデータメモリとアドレスデータを格納するタグメモリとを備えて構成される一般的なデータキャッシュとすることができる。
ロード・ストア制御部３は、データキャッシュ２にアクセスするための制御回路である。ロードストア制御部３とデータキャッシュ２との間における制御信号、メモリアドレス、ストアデータ、ロードデータ等のやり取りはパス６を介して行なわれる。
ＣＰＵ４は、例えば、汎用ＣＰＵ、特定用途の専用コ・プロセッサ等とすることができる。
本実施形態において、ロード・ストア制御部３に対するデータキャッシュ２へのアクセス要求の発行経路は２通りある。一方は、ＣＰＵ４が発行元となり、パス７を介してロード・ストア制御部３に通知される通常のロード・ストア要求であり、他方は、内部バス制御部５が発行元となり、パス８を介してロード・ストア制御部３に通知されるロード／ストア要求である。
ただし、内部バス制御部５が発行元となるロード／ストア要求は、内部バス制御部５がリクエスト・マスターとなって発行するのではなく、データ転送エンジン１１がリクエスト・マスターとなり、内部バス１０を介して各プロセッサ１内の内部バス制御部５に発行するものである。このとき、内部バス制御部５は内部バス１０上のスレーブ・モジュールとして動作する。
ロード・ストア制御部３はこれら２種のロード／ストア要求を調停し、パス６を介してデータキャッシュ２にアクセスする。
すなわち、本実施形態において、プロセッサ１ａとプロセッサ１ｂと間の通信（例えば、あるプロセッサ１ａのデータキャッシュ２ａの内容を、他のプロセッサ１ｂのデータキャッシュ２ｂに転送する場合）、あるいは、プロセッサ１のデータキャッシュ２と主メモリ１３との間のデータ通信（例えば、データのプリフェッチを行なう場合）が必要になった場合には、データ転送エンジン１１が、転送元のデータをリードし、転送先にライトする処理を制御する。
ここで、データ転送エンジン１１について説明する。データ転送エンジン１１は、マルチプロセッサシステム内の各プロセッサ１に対して、内部バス１０を介して、データキャッシュ２のデータをリードするロード命令と、データキャッシュ２にデータをライトするストア命令とを発行可能なエンジンである。また、主メモリ制御部１２を介して主メモリ１３に対しても同様にロード命令とストア命令とを発行可能である。ここで、本アクセスに対して、スレーブとなるプロセッサ１あるいは主メモリ制御部１２は、識別情報を持っているものとし、データ転送エンジン１１は、その識別情報を用い、各プロセッサ１あるいは主メモリ制御部１２に対して、アクセスすることが可能である。
図１に示すように、データ転送エンジン１１は、例えば、内部バスインタフェース１１１と、アドレス発生部１１２と、バッファ１１３とを備えて構成することができる。
アドレス発生部１１２は、内部バス１０に接続されたモジュール（プロセッサ１内のデータキャッシュ２、主メモリ１３）に対して、データのリード／ライトを行なうためのアドレスを生成する。また、アドレス発生部１１２は、どのモジュールに対してアクセスするかを指定する選択信号も生成する。
これらの処理を行なうため、アドレス発生部１１２は、開始アドレス、幅、ピッチ、繰り返し数、モジュールの識別情報、バッファ１１３のエントリ番号（格納場所を特定するための情報）、アクセス種としてリード／ライトを示すレジスタ群を備えている。これらのレジスタを１セットとして、アドレス発生部１１２は、複数のセットを保持することができる。各レジスタの値は、例えば、オペレーティングシステムを介して、ソフトウェアで設定できるようにすることができる。
アドレス発生部１１２は、図１に示すように、レジスタに設定された開始アドレス、幅、ピッチ、繰り返し数（これらを「アドレス生成情報」と称す）を元にアドレスを生成して、２次元の領域１２１を特定するアドレスを生成することができる。そして、識別情報でどのプロセッサ１あるいは主メモリ１３に対してアクセスするか判定することができる。生成したアドレスと選択信号とは、内部バスインタフェース１１１に送信する。もちろん、アドレス発生部が生成するアドレス生成情報はこれに限られない。
データ転送エンジン１１は、ライトアクセス時（レジスタによりライトが示されているとき）には、エントリ番号に応じてバッファからデータをリードし、内部バスインタフェース１１１に転送する。内部バスインタフェース１１１は、入力されたアドレスと選択信号とを基に出力先を特定し、バッファ１１３からリードしたデータを内部バス１０を介して出力する。
リードアクセス時（レジスタによりリードが示されているとき）は、内部バス１０を介して読みだしたデータをバッファ１１３に転送し、バッファ１１３は、レジスタで設定されたエントリ番号に対してデータを格納する。
例えば、アドレス発生器１１２のレジスタに２つのセットが設定されており、それぞれ、１）アドレス生成情報：Ａ０，認識情報：プロセッサ０，エントリ番号：Ｂ０，リード／ライト：リード２）アドレス生成情報：Ａ１，認識情報：プロセッサ１，エントリ番号：Ｂ０，リード／ライト：ライトであったとする。これは、プロセッサ０からアドレス生成情報Ａ０で特定されるアドレス領域のデータをリードしてバッファのエントリ番号Ｂ０に格納し、プロセッサ１のアドレス生成情報Ａ１で特定されるアドレス領域にバッファのエントリ番号Ｂ０に格納してあるデータをライトすること、すなわち、プロセッサ０からプロセッサ１にデータを転送することを示している。
このようにすることで、データ転送エンジン１１は、プロセッサ１ａとプロセッサ１ｂとの間のデータ転送あるいはプロセッサ１と主メモリ１３との間のデータ転送を、プロセッサ１のＣＰＵ４における処理と並列に実現することが可能となる。このとき、データ転送エンジン１１は、特定の転送元から特定の転送先に、必要とするデータのみを転送するため、余分なデータ転送によるトラヒックは発生しないことになる。
なお、データ転送エンジン１１の起動方法は、割込みやポーリングにより行い、これによりプロセッサ間の同期をとる。
ところで、ＣＰＵ４あるいは内部バス制御部５が発行する要求がストア命令の場合、ロード・ストア制御部３はデータキャッシュ２に対しパス６を介してライト処理を行う。
データキャッシュ２がキャッシュヒットした場合、ストアデータを直接データキャッシュ２に書き込む。データキャッシュ２がキャッシュミスした場合、ロード・ストア制御部３は、パス９を介してそのキャッシュミス・アドレスを内部バス制御部５に転送し、内部バス制御部５は、内部バス１０を介して、主メモリ制御部１２にそのアドレスに対するリード要求を発行する。
主メモリ制御部１２は、一般的な主メモリ・インタフェースを持ち、パス１４を経由して要求アドレスに対するデータを主メモリ１３から読出し、再び、内部バス１０を経由してプロセッサ１内の内部バス制御部５に転送する。転送されたデータは、パス９を経由してロード・ストア制御部３に転送され、データキャッシュ２に対してキャッシュ・フィル処理を実行する。この一連のシーケンスは一般のデータキャッシュのフィル方式と同様である。
データキャッシュ２へのアクセス要求がロード命令の場合も、一般的なデータキャッシュの制御と同様である。この場合、ロード・ストア制御部５はパス６を介してデータキャッシュ２に対してロードアクセスを行う。
データキャッシュ２がキャッシュヒットの場合、データキャッシュ２からデータを読出し、アクセスの要求元であるＣＰＵ４若しくは内部バス制御部５に対してパス７もしくはパス８を介してロードデータを返送する。データキャッシュミスの場合、ストア時のキャッシュミスと同様のシーケンスをとり、データキャッシュ２に対してフィルを終了した時点、あるいはキャッシュ・フィルと同時に、ロード要求に対応するアドレスのデータをＣＰＵ４もしくは内部バス制御部５に返送する。
このような処理により、確実に、対象とするデータをデータキャッシュ２内に留めておくことができる。すなわち、例えば、データキャッシュ２へのプリフェッチとして動作することができる。
次に、本発明の第２の実施形態について説明する。
本実施形態におけるマルチプロセッサシステムは、ローカルのデータキャッシュを備える複数のプロセッサ間でデータキャッシュを共有するインタリーブ方式を採用するが、システム内のどのプロセッサとデータキャッシュ共有をするか、および、共有に際し、どのようなサイズでデータキャッシュを割り振るかを設定することができる。
図２は、第２の実施形態におけるマルチプロセッサシステムの構成を説明するためのブロック図である。
本図において、マルチプロセッサシステムは、ローカルなデータキャッシュ２６を備えたＮＰ個のプロセッサ２０がグローバルバス２８によりバス接続されて構成される。
各プロセッサ２０は、データキャッシュ２６と、ＣＰＵ４と、ロード・ストア制御部２１と、マッピング制御部２２とを備えている。また、グローバルバス２８には、バス調停を行なうためのアービタ２５が設けられている。
ここで、ロード・ストア制御部２１は、ローカル（自プロセッサ内）のＣＰＵ４またはデータキャッシュ２６を共有する他のプロセッサ２０のＣＰＵ４から発行されるデータキャッシュ２６へのロード命令およびストア命令を処理する。
マッピング制御部２２は、データキャッシュ２６に対するロードあるいはストアに際し、グローバルバス２８上のどのプロセッサ２０のデータキャッシュ２６をアクセスするかの判定を行う。
ロード・ストア制御部２１は、マッピング制御部２２が自身のプロセッサ２０（ローカルのプロセッサ２０）内のデータキャッシュ２６をアクセスすると判定したときは、ローカルバス２７を介して、ローカルのデータキャッシュ２６にアクセスする。
一方、マッピング制御部２２が、他のプロセッサ２０（グローバルバス２８により接続された他のプロセッサ２０）内のデータキャッシュ２６をアクセスすると判定したときは、グローバルバス２８を経由して、対象となる他のプロセッサ２０内のデータキャッシュ２６にアクセスする。
次に、図３を参照して、マッピング制御部２２についてさらに詳細に説明する。
マッピング制御部２２は、どのプロセッサ２０とデータキャッシュ共有するかを示す共有プロセッサ・レジスタ３３と、どのようなサイズでデータキャッシュを割り振るかを示すバウンダリ・レジスタ３０と、バウンダリ・レジスタ３０の値に応じて、ロード・ストア制御部２１から入力されたアドレス２３をシフトさせるシフタ３１とを備えている。
また、マルチプロセッサ内の各プロセッサ２０には、プロセッサを識別するためのプロセッサＩＤが付されており、マッピング制御部２２は、自身のプロセッサ２０を示すプロセッサＩＤ３６を保持する。
さらに、マッピング制御部２２は、シフタ３１の出力と、プロセッサＩＤ３６と、共有プロセッサ・レジスタ３３の値とに基づいてプロセッサ選択信号２４をアビータ２５に出力するセレクタ３４を備えている。
なお、共有プロセッサ・レジスタ３３およびバウンダリ・レジスタ３０の値は、例えば、本マルチプロセッサシステムを制御するオペレーティングシステムを介して設定するようにすることができる。例えば、本マルチプロセッサシステムで実行されるアプリケーションソフトウェアは、そのアプリケーションソフトウェアの実行に適したデータキャッシュ共有が可能なように、共有プロセッサ・レジスタ３３およびバウンダリ・レジスタ３０の値を設定するようにする。
ここで、本実施形態において、共有プロセッサ・レジスタ３３で用いるフォーマットの一例について説明する。上述のように、共有プロセッサ・レジスタ３３は、プロセッサ２０が、グローバルバス２８に接続された複数のプロセッサ２０のうちどのプロセッサ２０とデータキャッシュ共有を行なうかを指定するためのレジスタである。
ＮＰ個のプロセッサ２０から構成されるマルチプロセッサシステムの場合、共有プロセッサ・レジスタ３３のビット幅はｌｏｇ２（ＮＰ）とする。そして、共有プロセッサ・レジスタ３３の全ビットが“０”の時、他のプロセッサ２０とはデータキャッシュを共有しないものとし、共有プロセッサ・レジスタ３３の下位１ビットのみを“１”とする時、下位１ビットを除いたプロセッサＩＤ３６が等しいプロセッサ２０とデータキャッシュ共有を行うものとする。この場合、２つのプロセッサ２０でデータキャッシュ共有を行うことになる。なお、各プロセッサ２０には０ｘ０から昇順のプロセッサＩＤ３６が与えられているものとする。
同様に、下位ｍビットを除いたプロセッサＩＤ３６が等しいプロセッサ２０群とデータキャッシュ共有する場合には、共有プロセッサ・レジスタ３３の下位側からｍビットを“１”とする。すなわち、共有は２、４、８…個のプロセッサ間で行なわれることになり、最大２ｍ個のプロセッサ２０間でデータキャッシュ共有を行なうことになる。プロセッサ２０が他の全プロセッサ２０とデータキャッシュ共有を行う場合には、共有プロセッサ・レジスタ３３の全ビットを“１”とする。なお、互いにデータキャッシュ共有を行なうプロセッサ２０同士は、それぞれの共有プロセッサ・レジスタ３３に同じ値が設定されることになる。
次に、本実施形態において、データキャッシュ２６のサイズの割り振りを示すレジスタであるバウンダリ・レジスタ３０で用いるフォーマットの一例について説明する。なお、各データキャッシュ２６のサイズが定まれば、各データキャッシュ２６のアドレスの境界が求められる（データキャッシュ２６のアドレスは、共有を行なうプロセッサ２０のプロセッサＩＤの順に割り当てるものとする。）
ここでは、データキャッシュの割り振りサイズの最小単位である最小アドレス・バウンダリＣ（バイト）をあらかじめ定めておく。最小アドレス・バウンダリＣについても、例えば、オペレーティングシステムを介して設定できるようにすることができる。
このとき、データキャッシュ共有において最小アドレス・バウンダリＣでバンク・インタリーブ構成をとる場合、バウンダリ・レジスタ３０の全ビットを“０”とする。そして、、データキャッシュ２６のサイズを最小アドレス・バウンダリＣの２倍とするたびに、バウンダリ・レジスタ３０の下位ビットから順に“１”としていく。例えば、バウンダリ・レジスタ３０の下位２ビットのみが“１”のプロセッサ２０のデータキャッシュ２６は、最小アドレス・バウンダリＣの４倍のサイズが設定されていることになる。
なお、バウンダリ・レジスタ３０および共有プロセッサ・レジスタ３３のフォーマットは上記の例に限られない。
次に、マッピング制御部２２の処理について説明する。
マッピング制御部２２に入力されたアドレス２３は、シフタ３１において、バウンダリ・レジスタ３０の値等に基づいてシフトされ、シフトアドレス３５となる。
ここで、シフトアドレス３５は、＜ｌｏｇ２（最小アドレス・バウンダリＣ）＋Σ｛バウンダリ・レジスタ３０｝＋ｌｏｇ２（ＮＰ）−１：ｌｏｇ２（最小アドレス・バウンダリＣ）＋Σ｛バウンダリ・レジスタ３０｝＞となる。
ここで、Σ｛バウンダリ・レジスタ３０｝は、インタリーブするアドレス空間を指定している。Σ｛バウンダリ・レジスタ３０｝は、例えば、バウンダリ・レジスタが３ビットで表現されている場合、Σ｛ビット０、ビット１、ビット２｝を示す。最小アドレス・バウンダリＣを１ＫＢとした場合のシフトアドレス３５は、以下のようになる。
バウンダリレジスタ＝０００：＜１２：１０＞
バウンダリレジスタ＝００１：＜１３：１１＞
バウンダリレジスタ＝０１１：＜１４：１２＞
バウンダリレジスタ＝１１１：＜１５：１３＞
例えば、プロセッサ数ＮＰが８、バウンダリ・レジスタ３０の値が０ｘ０１１、最小アドレス境界Ｃが１ＫＢの場合に、入力されたアドレスが＜３１：０＞であるとすると、シフトアドレス３５は、＜ｌｏｇ２（１ＫＢ）＋Σ｛０，１，１｝＋ｌｏｇ２（８）−１：ｌｏｇ２（１ＫＢ）＋Σ｛０，１，１｝＞、すなわちアドレス＜１４：１２＞となる。
シフトアドレス３５およびプロセッサＩＤ３６は、セレクタ３４に入力される。セレクタ３４は、共有プロセッサ・レジスタ３３の値を元に、アクセスすべきプロセッサＩＤを示すプロセッサ選択信号２４を生成し、アビータ２５に送信する。
セレクタ３４では、ビット毎に共有プロセッサ・レジスタ３３の値を調べ、共有プロセッサ・レジスタ３３の値が“１”ならばシフトアドレス３５の値を選択し、共有プロセッサ・レジスタ３３の値が“０”ならばプロセッサＩＤ３６の値を選択することによりプロセッサ選択信号２４生成を生成していく。
例えば、プロセッサＩＤ３６が０ｘ１０１のプロセッサ２０が、４つのプロセッサ２０でデータキャッシュ共有し（共有プロセッサ・レジスタ３３＝０ｘ０１１）、シフトアドレス３５が０ｘ０１０の場合、１ビット目はシフトアドレス３５の“０”が選択され、２ビット目もシフトアドレス３５の“１”が選択され、３ビット目は、プロセッサＩＤ３６の１が選択される結果、アクセス・プロセッサＩＤ２４は０ｘ１１０となる。これは、プロセッサＩＤが０ｘ１１０のプロセッサ２０のデータキャッシュ２６に対してアクセスすべきことを示している。
マッピング制御部２２が、ローカルのプロセッサ２０内のデータキャッシュ２６をアクセスすると判定した場合、ロード・ストア制御部２１は、ローカルバス２７を使用して、ローカルのデータキャッシュ２６に対してロード命令あるいはストア命令を実行する。
マッピング制御部２２が、他のプロセッサ２０内のデータキャッシュ２６をアクセスすると判定した場合、ロード・ストア制御部２１は、アービタ２５に対しバス権を求め、バス権が得られると、グローバルバス２８を使用して、他のプロセッサ２０内のデータキャッシュ２６に対してに対してロード命令あるいはストア命令を実行する。
アクセス対象となったデータキャッシュ２６は、ローカルバス２７からのアクセスあるいはグローバルバス２８からのアクセスの調停後、実際にデータキャッシュ２６内のデータメモリおよびタグメモリへのアクセスを行う。
本方式を用いたマルチプロセッサシステムのさらなる具体例を図４と図５とを参照して説明する。
本例において、マルチプロセッサシステムは、８つのプロセッサ（プロセッサＩＤは、０ｘ０００から０ｘ１１１であるとする）からなるシステムで、最小アドレス・バウンダリＣを１ＫＢとする。
図４において、プロセッサ０（０ｘ０００）およびプロセッサ１（０ｘ００１）は、シェアド・レジスタ４２が、０ｘ０００であり、データキャッシュ共有を行なわないことを示している。このとき、バウンダリ・レジスタ４１の値は意味を持たない。また、プロセッサ２（０ｘ０１０）およびプロセッサ３（０ｘ０１１）は、シェアド・レジスタ４２が、０ｘ００１（プロセッサＩＤの上位２ビットが等しいプロセッサ）であり、互いに２つのプロセッサでデータキャッシュ共有を行なうことを示している。そして、バウンダリ・レジスタ４１は、いずれも０ｘ０１１（Ｃ×４＝４ＫＢ）である。さらにプロセッサ４（０ｘ１００）とプロセッサ５（０ｘ１０１）とプロセッサ６（０ｘ１１０）とプロセッサ７（０ｘ１１１）とは、、シェアド・レジスタ４２が、０ｘ０１１（プロセッサＩＤの上位１ビットが等しいプロセッサ）であり、互いに４つのプロセッサでデータキャッシュ共有を行なうことを示している。そして、バウンダリ・レジスタ４１は、いずれも０ｘ０００（Ｃ×１＝１ＫＢ）である。
図５は、図４で示されるマルチプロセッサシステムのデータキャッシュ共有のイメージを示す図である。
本図に示すように、プロセッサ０（０ｘ０００）とプロセッサ１（０ｘ００１）とは、それぞれ分散型のデータキャッシュとして定義される（符号４５、４６）。プロセッサ２（０ｘ０１０）とプロセッサ３（０ｘ０１１）とは、共有型データキャッシュにて接続されたマルチプロセッサとして動作し、０番地から４ＫＢ−１番地までをプロセッサ−２に（０ｘ０１０）割り当て、４ＫＢから８ＫＢ−１までをプロセッサ３に割り当てたインタリーブ構成をとる（符号４７）。プロセッサ４（０ｘ１００）〜プロセッサ７（０ｘ１１１）は、共有型データキャッシュにて接続されたマルチプロセッサとして動作し、そのインタリーブアドレス境界は１ＫＢとなる（符号４８）。
このように、本実施形態によれば、ローカルのデータキャッシュを備える複数のプロセッサ間でデータキャッシュを共有するインタリーブ方式において、システム内のどのプロセッサとデータキャッシュ共有をするか、および、共有に際し、どのようなサイズでデータキャッシュを割り振るかを設定することができる。
これにより、本マルチプロセッサシステムで実行されるアプリケーションソフトウェアは、その実行に適したデータキャッシュ共有が可能になり、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことができる。
ここで、フロアプランの制約から、各プロセッサ２０は、物理的に遠い位置に配置されることがあり、さらにバス調停も加わるため、ローカルのデータキャッシュ２６をアクセスするレイテンシに対して、一般に、他のプロセッサのデータキャッシュ２６にアクセスするレイテンシは大きくなる。また、プロセッサ２０のストールサイクル数を増大させる原因は、主としてロード命令である。したがって、ローカル以外のアクセスに関しては、ストア命令のみを実行可能とする制約を持つことにより、アービタ２５とグローバルバス２８の論理規模を削減することも可能である。
図６に本発明の第３の実施形態について示す。基本構成は、先に述べた２つの実施例を組み合わせた構成であり、ＮＰ個のプロセッサ５０が、内部バス１０とグローバルバス２８により接続されたマルチプロセッサシステムである。第１の実施形態および第２の実施形態と同じ部位には同じ符号を付している。ロード・ストア制御部５１は、第１の実施形態におけるロード・ストア制御部３と第２の実施形態におけるロード・ストア制御部２１との両方の機能を備えている。
第１の実施形態のデータ転送エンジン１１によるデータ転送は、割込みやポーリングによって実行されるため、起動までのオーバヘッドが発生する。しかしながら、プロセッサ５０とは独立にデータ転送が可能なため、大容量なデータの高速転送が可能である。第２の実施形態のグローバルバス２８とアービタ２５とを用いた共有型データキャッシュ方式では、大容量のデータ転送、および小容量データ転送も可能であるが、他のプロセッサのデータキャッシュ２６に対するロード命令に関しては、レイテンシが大きい。本実施形態は、これらの２つの特徴を考慮し、アプリケーションソフトウァアにより使い分けが実現可能な構成である。
上述のように、本発明の第１の実施形態によれば、プロセッサ間のデータ通信において、プロセッサ間の無駄なデータ転送を排除し、性能低下を防ぐことができる。
また、本発明の第２の実施形態によれば、マルチプロセッサのインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことができる。
産業上の利用可能性
本発明は、データキャッシュを備えた複数のプロセッサ間のデータ通信であって、プロセッサ間の無駄なデータ転送を排除し、また、マルチプロセッサのインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことを目的とするマルチプロセッサシステムのデータ通信に適用可能である。
【図面の簡単な説明】
図１は、本発明の第１の実施形態の構成を説明するためのブロック図である。
図２は、本発明の第２の実施形態の構成を説明するためのブロック図である。
図３は、本発明の第２の実施形態におけるマッピング制御部２２を説明するためのブロック図である。
図４は、本発明の第２の実施形態におけるバウンダリ・レジスタ４１および共有プロセッサ・レジスタ３３を説明するための図である。
図５は、本発明の第２の実施形態におけるプロセッサ１のデータキャッシュを共有について説明するための図である。
図６は、本発明の第３の実施形態の構成を説明するためのブロック図である。
【図１】
2003048955.tif 000003
【図２】
2003048955.tif 000004
【図３】
2003048955.tif 000005
【図４】
2003048955.tif 000006
【図５】
2003048955.tif 000007
【図６】
2003048955.tif 000008
【国際調査報告】
2003048955.tif 000009
2003048955.tif 000010
2003048955.tif 000011
2003048955.tif 000012
2003048955.tif 000013
2003048955.tif 000014