JPWO2003048955A1 - マルチプロセッサシステム - Google Patents
マルチプロセッサシステム Download PDFInfo
- Publication number
- JPWO2003048955A1 JPWO2003048955A1 JP2003550079A JP2003550079A JPWO2003048955A1 JP WO2003048955 A1 JPWO2003048955 A1 JP WO2003048955A1 JP 2003550079 A JP2003550079 A JP 2003550079A JP 2003550079 A JP2003550079 A JP 2003550079A JP WO2003048955 A1 JPWO2003048955 A1 JP WO2003048955A1
- Authority
- JP
- Japan
- Prior art keywords
- processor
- data cache
- data
- cache
- multiprocessor system
- 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
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/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0851—Cache with interleaved addressing
Abstract
プロセッサ間のデータ通信において、プロセッサ間の無駄なデータ転送を排除し、性能低下を防ぐ。また、マルチプロセッサのインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐ。データキャッシュ26を備えた複数のプロセッサ50と主メモリ13とがバス10により接続されたマルチプロセッサシステムにおいて、データアクセスに関する情報を記憶する領域を備え、この情報にしたがって、データキャッシュ26に対して、ロード命令およびストア命令を発行するデータ転送エンジン11を備え、各プロセッサ50は、データキャッシュの共有に関する情報を記憶し、アクセスすべきアドレスを受け付けると、この情報を参照して、どのプロセッサにアクセスすべきかを判断する判断手段22を備える。
Description
技術分野
本発明は、マルチプロセッサシステムにかかり、特に、プロセッサ間通信を高速に行なうための技術に関する。
背景技術
実時間処理という高い処理能力が必要なメディア処理などでは、複数のプロセッサ、コ・プロセッサ等を備えたマルチプロセッサ環境において、その処理を分割し、分割した処理を各プロセッサに割り当てて並列実行させるソフトウェア・パイプラインを用いることが主流になりつつある。
このようなマルチプロセッサ環境で、分割された処理を協調して並列実行する場合、プロセッサ間でのデータの受渡しが必要となる。そこで、従来は、複数のプロセッサでメモリを共有し、そのメモリに対してアクセスする等の方式を用いて、プロセッサ間でのデータの受渡しを実現している。
一般的には、一つのメインメモリや2次レベルキャッシュメモリを、複数のプロセッサが共有することにより、これを実現している。しかしながら、このような2次レベル以下に共有メモリを有する構造におけるアクセス・レイテンシは、1次レベルのキャッシュメモリに対するそれに比べ、数倍から数10倍大きく、これに伴い、プロセッサの性能も著しく低下する。
これを回避するため、様々なアプローチがなされている。例えば、複数のプロセッサ間で共有型のデータキャッシュを持ち、ブロードキャストのアクセス方式を用いる方式(特開平10−254779)、ストア・スルー方式のキャッシュメモリとスヌープ制御によりデータ整合性を保つ方式(特開平8−297642)、共有型データキャッシュに固定アドレスによるインタリーブ型キャッシュを使用する方式(特開平3−172960)等である。
ところで、ブロードキャスト方式、あるいは、ストア・スルー型キャッシュメモリとスヌープ制御を用いる方式では、データ転送が必要のないプロセッサに対して無駄なアクセスが発生し、冗長な転送によって性能が2分の1から10分の1程度、低下するという問題がある。更にスヌープ方式の場合、スヌープ専用のアドレスタグをもつことにより、チップ面積の増加にもつながる。また、固定アドレスによるインタリーブ方式では、インタリーブ構成が固定化されているため、データ転送が効率よく分散されるとは限らず、一つのインタリーブ・キャッシュにアクセスが集中することにより、逆にキャッシュメモリの使用効率が落ち、平均で2分の1の性能しか得ることが出来ない。
発明の開示
本発明の第1の目的は、プロセッサ間のデータ通信において、プロセッサ間の無駄なデータ転送を排除し、性能低下を防ぐことにある。
また、本発明の第2の目的は、プロセッサ間で、共有のインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことにある。
上記課題を解決するため、本発明の第1の態様によれば、データキャッシュを備えた複数のプロセッサとメインメモリとがバスにより接続されたマルチプロセッサシステムにおいて、アクセスすべきデータキャッシュまたはメインメモリを特定するための情報と、アクセスすべきアドレスを特定するための情報と、アクセス種を指定するための情報とを関連付けて記憶する領域を複数備え、前記領域に記録された情報にしたがって、データキャッシュまたはメインメモリに対して、ロード命令およびストア命令を発行するデータ転送エンジンを備えたことを特徴とするマルチプロセッサシステムが提供される。
また、上記課題を解決するため、本発明の第2の態様によれば、データキャッシュを備えた複数のプロセッサがバスにより接続されたマルチプロセッサシステムにおいて、各プロセッサは、他のいずれのプロセッサとデータキャッシュの共有を行なうか(共有を行なわない場合も含む)を設定するための領城と、共有するデータキャッシュのサイズを設定するための領域とを備え、アクセスすべきアドレスを受け付けると上記2つの領域を参照して、どのプロセッサにアクセスすべきかを判断する判断手段を備えることを特徴とするマルチプロセッサシステムが提供される。
発明を実施するための最良の形態
本発明の実施の形態について図面を参照して詳細に説明する。
まず、本発明の第1の実施形態について図1を参照して説明する。図1は、本実施形態におけるマルチプロセッサシステムの構成を説明するためのブロック図である。
本図に示すように、本マルチプロセッサシステムは、内部にデータキャッシュ2を備えるプロセッサ1が、内部バス10にNP個接続され、主メモリ13を共有している。このとき、主メモリ13は、主メモリの制御回路とインタフェースとを備える主メモリ制御部12を介して、内部バス10に接続されている。さらに、内部バス10には、本実施形態の特徴部分であるデータ転送エンジン11が接続されている。
データ転送エンジン11は、内部バス10に接続されたプロセッサ1内のデータキャッシュ2、あるいは、主メモリ13に対してロード/ストア命令を発行し、プロセッサ1aと他のプロセッサ1bとの間(1aと1bとは異なるプロセッサ1を表す)、あるいは、プロセッサ1と主メモリ13との間のデータ転送を制御する機能を有している。
図1において、各プロセッサ1は、データキャッシュ2と、ロード・ストア制御部3とCPU4と、内部バス制御部5とを備えている。
データキャッシュ2は、主メモリ13のデータの一部を格納するデータメモリとアドレスデータを格納するタグメモリとを備えて構成される一般的なデータキャッシュとすることができる。
ロード・ストア制御部3は、データキャッシュ2にアクセスするための制御回路である。ロードストア制御部3とデータキャッシュ2との間における制御信号、メモリアドレス、ストアデータ、ロードデータ等のやり取りはパス6を介して行なわれる。
CPU4は、例えば、汎用CPU、特定用途の専用コ・プロセッサ等とすることができる。
本実施形態において、ロード・ストア制御部3に対するデータキャッシュ2へのアクセス要求の発行経路は2通りある。一方は、CPU4が発行元となり、パス7を介してロード・ストア制御部3に通知される通常のロード・ストア要求であり、他方は、内部バス制御部5が発行元となり、パス8を介してロード・ストア制御部3に通知されるロード/ストア要求である。
ただし、内部バス制御部5が発行元となるロード/ストア要求は、内部バス制御部5がリクエスト・マスターとなって発行するのではなく、データ転送エンジン11がリクエスト・マスターとなり、内部バス10を介して各プロセッサ1内の内部バス制御部5に発行するものである。このとき、内部バス制御部5は内部バス10上のスレーブ・モジュールとして動作する。
ロード・ストア制御部3はこれら2種のロード/ストア要求を調停し、パス6を介してデータキャッシュ2にアクセスする。
すなわち、本実施形態において、プロセッサ1aとプロセッサ1bと間の通信(例えば、あるプロセッサ1aのデータキャッシュ2aの内容を、他のプロセッサ1bのデータキャッシュ2bに転送する場合)、あるいは、プロセッサ1のデータキャッシュ2と主メモリ13との間のデータ通信(例えば、データのプリフェッチを行なう場合)が必要になった場合には、データ転送エンジン11が、転送元のデータをリードし、転送先にライトする処理を制御する。
ここで、データ転送エンジン11について説明する。データ転送エンジン11は、マルチプロセッサシステム内の各プロセッサ1に対して、内部バス10を介して、データキャッシュ2のデータをリードするロード命令と、データキャッシュ2にデータをライトするストア命令とを発行可能なエンジンである。また、主メモリ制御部12を介して主メモリ13に対しても同様にロード命令とストア命令とを発行可能である。ここで、本アクセスに対して、スレーブとなるプロセッサ1あるいは主メモリ制御部12は、識別情報を持っているものとし、データ転送エンジン11は、その識別情報を用い、各プロセッサ1あるいは主メモリ制御部12に対して、アクセスすることが可能である。
図1に示すように、データ転送エンジン11は、例えば、内部バスインタフェース111と、アドレス発生部112と、バッファ113とを備えて構成することができる。
アドレス発生部112は、内部バス10に接続されたモジュール(プロセッサ1内のデータキャッシュ2、主メモリ13)に対して、データのリード/ライトを行なうためのアドレスを生成する。また、アドレス発生部112は、どのモジュールに対してアクセスするかを指定する選択信号も生成する。
これらの処理を行なうため、アドレス発生部112は、開始アドレス、幅、ピッチ、繰り返し数、モジュールの識別情報、バッファ113のエントリ番号(格納場所を特定するための情報)、アクセス種としてリード/ライトを示すレジスタ群を備えている。これらのレジスタを1セットとして、アドレス発生部112は、複数のセットを保持することができる。各レジスタの値は、例えば、オペレーティングシステムを介して、ソフトウェアで設定できるようにすることができる。
アドレス発生部112は、図1に示すように、レジスタに設定された開始アドレス、幅、ピッチ、繰り返し数(これらを「アドレス生成情報」と称す)を元にアドレスを生成して、2次元の領域121を特定するアドレスを生成することができる。そして、識別情報でどのプロセッサ1あるいは主メモリ13に対してアクセスするか判定することができる。生成したアドレスと選択信号とは、内部バスインタフェース111に送信する。もちろん、アドレス発生部が生成するアドレス生成情報はこれに限られない。
データ転送エンジン11は、ライトアクセス時(レジスタによりライトが示されているとき)には、エントリ番号に応じてバッファからデータをリードし、内部バスインタフェース111に転送する。内部バスインタフェース111は、入力されたアドレスと選択信号とを基に出力先を特定し、バッファ113からリードしたデータを内部バス10を介して出力する。
リードアクセス時(レジスタによりリードが示されているとき)は、内部バス10を介して読みだしたデータをバッファ113に転送し、バッファ113は、レジスタで設定されたエントリ番号に対してデータを格納する。
例えば、アドレス発生器112のレジスタに2つのセットが設定されており、それぞれ、1)アドレス生成情報:A0,認識情報:プロセッサ0,エントリ番号:B0,リード/ライト:リード2)アドレス生成情報:A1,認識情報:プロセッサ1,エントリ番号:B0,リード/ライト:ライトであったとする。これは、プロセッサ0からアドレス生成情報A0で特定されるアドレス領域のデータをリードしてバッファのエントリ番号B0に格納し、プロセッサ1のアドレス生成情報A1で特定されるアドレス領域にバッファのエントリ番号B0に格納してあるデータをライトすること、すなわち、プロセッサ0からプロセッサ1にデータを転送することを示している。
このようにすることで、データ転送エンジン11は、プロセッサ1aとプロセッサ1bとの間のデータ転送あるいはプロセッサ1と主メモリ13との間のデータ転送を、プロセッサ1のCPU4における処理と並列に実現することが可能となる。このとき、データ転送エンジン11は、特定の転送元から特定の転送先に、必要とするデータのみを転送するため、余分なデータ転送によるトラヒックは発生しないことになる。
なお、データ転送エンジン11の起動方法は、割込みやポーリングにより行い、これによりプロセッサ間の同期をとる。
ところで、CPU4あるいは内部バス制御部5が発行する要求がストア命令の場合、ロード・ストア制御部3はデータキャッシュ2に対しパス6を介してライト処理を行う。
データキャッシュ2がキャッシュヒットした場合、ストアデータを直接データキャッシュ2に書き込む。データキャッシュ2がキャッシュミスした場合、ロード・ストア制御部3は、パス9を介してそのキャッシュミス・アドレスを内部バス制御部5に転送し、内部バス制御部5は、内部バス10を介して、主メモリ制御部12にそのアドレスに対するリード要求を発行する。
主メモリ制御部12は、一般的な主メモリ・インタフェースを持ち、パス14を経由して要求アドレスに対するデータを主メモリ13から読出し、再び、内部バス10を経由してプロセッサ1内の内部バス制御部5に転送する。転送されたデータは、パス9を経由してロード・ストア制御部3に転送され、データキャッシュ2に対してキャッシュ・フィル処理を実行する。この一連のシーケンスは一般のデータキャッシュのフィル方式と同様である。
データキャッシュ2へのアクセス要求がロード命令の場合も、一般的なデータキャッシュの制御と同様である。この場合、ロード・ストア制御部5はパス6を介してデータキャッシュ2に対してロードアクセスを行う。
データキャッシュ2がキャッシュヒットの場合、データキャッシュ2からデータを読出し、アクセスの要求元であるCPU4若しくは内部バス制御部5に対してパス7もしくはパス8を介してロードデータを返送する。データキャッシュミスの場合、ストア時のキャッシュミスと同様のシーケンスをとり、データキャッシュ2に対してフィルを終了した時点、あるいはキャッシュ・フィルと同時に、ロード要求に対応するアドレスのデータをCPU4もしくは内部バス制御部5に返送する。
このような処理により、確実に、対象とするデータをデータキャッシュ2内に留めておくことができる。すなわち、例えば、データキャッシュ2へのプリフェッチとして動作することができる。
次に、本発明の第2の実施形態について説明する。
本実施形態におけるマルチプロセッサシステムは、ローカルのデータキャッシュを備える複数のプロセッサ間でデータキャッシュを共有するインタリーブ方式を採用するが、システム内のどのプロセッサとデータキャッシュ共有をするか、および、共有に際し、どのようなサイズでデータキャッシュを割り振るかを設定することができる。
図2は、第2の実施形態におけるマルチプロセッサシステムの構成を説明するためのブロック図である。
本図において、マルチプロセッサシステムは、ローカルなデータキャッシュ26を備えたNP個のプロセッサ20がグローバルバス28によりバス接続されて構成される。
各プロセッサ20は、データキャッシュ26と、CPU4と、ロード・ストア制御部21と、マッピング制御部22とを備えている。また、グローバルバス28には、バス調停を行なうためのアービタ25が設けられている。
ここで、ロード・ストア制御部21は、ローカル(自プロセッサ内)のCPU4またはデータキャッシュ26を共有する他のプロセッサ20のCPU4から発行されるデータキャッシュ26へのロード命令およびストア命令を処理する。
マッピング制御部22は、データキャッシュ26に対するロードあるいはストアに際し、グローバルバス28上のどのプロセッサ20のデータキャッシュ26をアクセスするかの判定を行う。
ロード・ストア制御部21は、マッピング制御部22が自身のプロセッサ20(ローカルのプロセッサ20)内のデータキャッシュ26をアクセスすると判定したときは、ローカルバス27を介して、ローカルのデータキャッシュ26にアクセスする。
一方、マッピング制御部22が、他のプロセッサ20(グローバルバス28により接続された他のプロセッサ20)内のデータキャッシュ26をアクセスすると判定したときは、グローバルバス28を経由して、対象となる他のプロセッサ20内のデータキャッシュ26にアクセスする。
次に、図3を参照して、マッピング制御部22についてさらに詳細に説明する。
マッピング制御部22は、どのプロセッサ20とデータキャッシュ共有するかを示す共有プロセッサ・レジスタ33と、どのようなサイズでデータキャッシュを割り振るかを示すバウンダリ・レジスタ30と、バウンダリ・レジスタ30の値に応じて、ロード・ストア制御部21から入力されたアドレス23をシフトさせるシフタ31とを備えている。
また、マルチプロセッサ内の各プロセッサ20には、プロセッサを識別するためのプロセッサIDが付されており、マッピング制御部22は、自身のプロセッサ20を示すプロセッサID36を保持する。
さらに、マッピング制御部22は、シフタ31の出力と、プロセッサID36と、共有プロセッサ・レジスタ33の値とに基づいてプロセッサ選択信号24をアビータ25に出力するセレクタ34を備えている。
なお、共有プロセッサ・レジスタ33およびバウンダリ・レジスタ30の値は、例えば、本マルチプロセッサシステムを制御するオペレーティングシステムを介して設定するようにすることができる。例えば、本マルチプロセッサシステムで実行されるアプリケーションソフトウェアは、そのアプリケーションソフトウェアの実行に適したデータキャッシュ共有が可能なように、共有プロセッサ・レジスタ33およびバウンダリ・レジスタ30の値を設定するようにする。
ここで、本実施形態において、共有プロセッサ・レジスタ33で用いるフォーマットの一例について説明する。上述のように、共有プロセッサ・レジスタ33は、プロセッサ20が、グローバルバス28に接続された複数のプロセッサ20のうちどのプロセッサ20とデータキャッシュ共有を行なうかを指定するためのレジスタである。
NP個のプロセッサ20から構成されるマルチプロセッサシステムの場合、共有プロセッサ・レジスタ33のビット幅はlog2(NP)とする。そして、共有プロセッサ・レジスタ33の全ビットが“0”の時、他のプロセッサ20とはデータキャッシュを共有しないものとし、共有プロセッサ・レジスタ33の下位1ビットのみを“1”とする時、下位1ビットを除いたプロセッサID36が等しいプロセッサ20とデータキャッシュ共有を行うものとする。この場合、2つのプロセッサ20でデータキャッシュ共有を行うことになる。なお、各プロセッサ20には0x0から昇順のプロセッサID36が与えられているものとする。
同様に、下位mビットを除いたプロセッサID36が等しいプロセッサ20群とデータキャッシュ共有する場合には、共有プロセッサ・レジスタ33の下位側からmビットを“1”とする。すなわち、共有は2、4、8…個のプロセッサ間で行なわれることになり、最大2m個のプロセッサ20間でデータキャッシュ共有を行なうことになる。プロセッサ20が他の全プロセッサ20とデータキャッシュ共有を行う場合には、共有プロセッサ・レジスタ33の全ビットを“1”とする。なお、互いにデータキャッシュ共有を行なうプロセッサ20同士は、それぞれの共有プロセッサ・レジスタ33に同じ値が設定されることになる。
次に、本実施形態において、データキャッシュ26のサイズの割り振りを示すレジスタであるバウンダリ・レジスタ30で用いるフォーマットの一例について説明する。なお、各データキャッシュ26のサイズが定まれば、各データキャッシュ26のアドレスの境界が求められる(データキャッシュ26のアドレスは、共有を行なうプロセッサ20のプロセッサIDの順に割り当てるものとする。)
ここでは、データキャッシュの割り振りサイズの最小単位である最小アドレス・バウンダリC(バイト)をあらかじめ定めておく。最小アドレス・バウンダリCについても、例えば、オペレーティングシステムを介して設定できるようにすることができる。
このとき、データキャッシュ共有において最小アドレス・バウンダリCでバンク・インタリーブ構成をとる場合、バウンダリ・レジスタ30の全ビットを“0”とする。そして、、データキャッシュ26のサイズを最小アドレス・バウンダリCの2倍とするたびに、バウンダリ・レジスタ30の下位ビットから順に“1”としていく。例えば、バウンダリ・レジスタ30の下位2ビットのみが“1”のプロセッサ20のデータキャッシュ26は、最小アドレス・バウンダリCの4倍のサイズが設定されていることになる。
なお、バウンダリ・レジスタ30および共有プロセッサ・レジスタ33のフォーマットは上記の例に限られない。
次に、マッピング制御部22の処理について説明する。
マッピング制御部22に入力されたアドレス23は、シフタ31において、バウンダリ・レジスタ30の値等に基づいてシフトされ、シフトアドレス35となる。
ここで、シフトアドレス35は、<log2(最小アドレス・バウンダリC)+Σ{バウンダリ・レジスタ30}+log2(NP)−1:log2(最小アドレス・バウンダリC)+Σ{バウンダリ・レジスタ30}>となる。
ここで、Σ{バウンダリ・レジスタ30}は、インタリーブするアドレス空間を指定している。Σ{バウンダリ・レジスタ30}は、例えば、バウンダリ・レジスタが3ビットで表現されている場合、Σ{ビット0、ビット1、ビット2}を示す。最小アドレス・バウンダリCを1KBとした場合のシフトアドレス35は、以下のようになる。
バウンダリレジスタ=000:<12:10>
バウンダリレジスタ=001:<13:11>
バウンダリレジスタ=011:<14:12>
バウンダリレジスタ=111:<15:13>
例えば、プロセッサ数NPが8、バウンダリ・レジスタ30の値が0x011、最小アドレス境界Cが1KBの場合に、入力されたアドレスが<31:0>であるとすると、シフトアドレス35は、<log2(1KB)+Σ{0,1,1}+log2(8)−1:log2(1KB)+Σ{0,1,1}>、すなわちアドレス<14:12>となる。
シフトアドレス35およびプロセッサID36は、セレクタ34に入力される。セレクタ34は、共有プロセッサ・レジスタ33の値を元に、アクセスすべきプロセッサIDを示すプロセッサ選択信号24を生成し、アビータ25に送信する。
セレクタ34では、ビット毎に共有プロセッサ・レジスタ33の値を調べ、共有プロセッサ・レジスタ33の値が“1”ならばシフトアドレス35の値を選択し、共有プロセッサ・レジスタ33の値が“0”ならばプロセッサID36の値を選択することによりプロセッサ選択信号24生成を生成していく。
例えば、プロセッサID36が0x101のプロセッサ20が、4つのプロセッサ20でデータキャッシュ共有し(共有プロセッサ・レジスタ33=0x011)、シフトアドレス35が0x010の場合、1ビット目はシフトアドレス35の“0”が選択され、2ビット目もシフトアドレス35の“1”が選択され、3ビット目は、プロセッサID36の1が選択される結果、アクセス・プロセッサID24は0x110となる。これは、プロセッサIDが0x110のプロセッサ20のデータキャッシュ26に対してアクセスすべきことを示している。
マッピング制御部22が、ローカルのプロセッサ20内のデータキャッシュ26をアクセスすると判定した場合、ロード・ストア制御部21は、ローカルバス27を使用して、ローカルのデータキャッシュ26に対してロード命令あるいはストア命令を実行する。
マッピング制御部22が、他のプロセッサ20内のデータキャッシュ26をアクセスすると判定した場合、ロード・ストア制御部21は、アービタ25に対しバス権を求め、バス権が得られると、グローバルバス28を使用して、他のプロセッサ20内のデータキャッシュ26に対してに対してロード命令あるいはストア命令を実行する。
アクセス対象となったデータキャッシュ26は、ローカルバス27からのアクセスあるいはグローバルバス28からのアクセスの調停後、実際にデータキャッシュ26内のデータメモリおよびタグメモリへのアクセスを行う。
本方式を用いたマルチプロセッサシステムのさらなる具体例を図4と図5とを参照して説明する。
本例において、マルチプロセッサシステムは、8つのプロセッサ(プロセッサIDは、0x000から0x111であるとする)からなるシステムで、最小アドレス・バウンダリCを1KBとする。
図4において、プロセッサ0(0x000)およびプロセッサ1(0x001)は、シェアド・レジスタ42が、0x000であり、データキャッシュ共有を行なわないことを示している。このとき、バウンダリ・レジスタ41の値は意味を持たない。また、プロセッサ2(0x010)およびプロセッサ3(0x011)は、シェアド・レジスタ42が、0x001(プロセッサIDの上位2ビットが等しいプロセッサ)であり、互いに2つのプロセッサでデータキャッシュ共有を行なうことを示している。そして、バウンダリ・レジスタ41は、いずれも0x011(C×4=4KB)である。さらにプロセッサ4(0x100)とプロセッサ5(0x101)とプロセッサ6(0x110)とプロセッサ7(0x111)とは、、シェアド・レジスタ42が、0x011(プロセッサIDの上位1ビットが等しいプロセッサ)であり、互いに4つのプロセッサでデータキャッシュ共有を行なうことを示している。そして、バウンダリ・レジスタ41は、いずれも0x000(C×1=1KB)である。
図5は、図4で示されるマルチプロセッサシステムのデータキャッシュ共有のイメージを示す図である。
本図に示すように、プロセッサ0(0x000)とプロセッサ1(0x001)とは、それぞれ分散型のデータキャッシュとして定義される(符号45、46)。プロセッサ2(0x010)とプロセッサ3(0x011)とは、共有型データキャッシュにて接続されたマルチプロセッサとして動作し、0番地から4KB−1番地までをプロセッサ−2に(0x010)割り当て、4KBから8KB−1までをプロセッサ3に割り当てたインタリーブ構成をとる(符号47)。プロセッサ4(0x100)〜プロセッサ7(0x111)は、共有型データキャッシュにて接続されたマルチプロセッサとして動作し、そのインタリーブアドレス境界は1KBとなる(符号48)。
このように、本実施形態によれば、ローカルのデータキャッシュを備える複数のプロセッサ間でデータキャッシュを共有するインタリーブ方式において、システム内のどのプロセッサとデータキャッシュ共有をするか、および、共有に際し、どのようなサイズでデータキャッシュを割り振るかを設定することができる。
これにより、本マルチプロセッサシステムで実行されるアプリケーションソフトウェアは、その実行に適したデータキャッシュ共有が可能になり、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことができる。
ここで、フロアプランの制約から、各プロセッサ20は、物理的に遠い位置に配置されることがあり、さらにバス調停も加わるため、ローカルのデータキャッシュ26をアクセスするレイテンシに対して、一般に、他のプロセッサのデータキャッシュ26にアクセスするレイテンシは大きくなる。また、プロセッサ20のストールサイクル数を増大させる原因は、主としてロード命令である。したがって、ローカル以外のアクセスに関しては、ストア命令のみを実行可能とする制約を持つことにより、アービタ25とグローバルバス28の論理規模を削減することも可能である。
図6に本発明の第3の実施形態について示す。基本構成は、先に述べた2つの実施例を組み合わせた構成であり、NP個のプロセッサ50が、内部バス10とグローバルバス28により接続されたマルチプロセッサシステムである。第1の実施形態および第2の実施形態と同じ部位には同じ符号を付している。ロード・ストア制御部51は、第1の実施形態におけるロード・ストア制御部3と第2の実施形態におけるロード・ストア制御部21との両方の機能を備えている。
第1の実施形態のデータ転送エンジン11によるデータ転送は、割込みやポーリングによって実行されるため、起動までのオーバヘッドが発生する。しかしながら、プロセッサ50とは独立にデータ転送が可能なため、大容量なデータの高速転送が可能である。第2の実施形態のグローバルバス28とアービタ25とを用いた共有型データキャッシュ方式では、大容量のデータ転送、および小容量データ転送も可能であるが、他のプロセッサのデータキャッシュ26に対するロード命令に関しては、レイテンシが大きい。本実施形態は、これらの2つの特徴を考慮し、アプリケーションソフトウァアにより使い分けが実現可能な構成である。
上述のように、本発明の第1の実施形態によれば、プロセッサ間のデータ通信において、プロセッサ間の無駄なデータ転送を排除し、性能低下を防ぐことができる。
また、本発明の第2の実施形態によれば、マルチプロセッサのインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことができる。
産業上の利用可能性
本発明は、データキャッシュを備えた複数のプロセッサ間のデータ通信であって、プロセッサ間の無駄なデータ転送を排除し、また、マルチプロセッサのインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことを目的とするマルチプロセッサシステムのデータ通信に適用可能である。
【図面の簡単な説明】
図1は、本発明の第1の実施形態の構成を説明するためのブロック図である。
図2は、本発明の第2の実施形態の構成を説明するためのブロック図である。
図3は、本発明の第2の実施形態におけるマッピング制御部22を説明するためのブロック図である。
図4は、本発明の第2の実施形態におけるバウンダリ・レジスタ41および共有プロセッサ・レジスタ33を説明するための図である。
図5は、本発明の第2の実施形態におけるプロセッサ1のデータキャッシュを共有について説明するための図である。
図6は、本発明の第3の実施形態の構成を説明するためのブロック図である。
本発明は、マルチプロセッサシステムにかかり、特に、プロセッサ間通信を高速に行なうための技術に関する。
背景技術
実時間処理という高い処理能力が必要なメディア処理などでは、複数のプロセッサ、コ・プロセッサ等を備えたマルチプロセッサ環境において、その処理を分割し、分割した処理を各プロセッサに割り当てて並列実行させるソフトウェア・パイプラインを用いることが主流になりつつある。
このようなマルチプロセッサ環境で、分割された処理を協調して並列実行する場合、プロセッサ間でのデータの受渡しが必要となる。そこで、従来は、複数のプロセッサでメモリを共有し、そのメモリに対してアクセスする等の方式を用いて、プロセッサ間でのデータの受渡しを実現している。
一般的には、一つのメインメモリや2次レベルキャッシュメモリを、複数のプロセッサが共有することにより、これを実現している。しかしながら、このような2次レベル以下に共有メモリを有する構造におけるアクセス・レイテンシは、1次レベルのキャッシュメモリに対するそれに比べ、数倍から数10倍大きく、これに伴い、プロセッサの性能も著しく低下する。
これを回避するため、様々なアプローチがなされている。例えば、複数のプロセッサ間で共有型のデータキャッシュを持ち、ブロードキャストのアクセス方式を用いる方式(特開平10−254779)、ストア・スルー方式のキャッシュメモリとスヌープ制御によりデータ整合性を保つ方式(特開平8−297642)、共有型データキャッシュに固定アドレスによるインタリーブ型キャッシュを使用する方式(特開平3−172960)等である。
ところで、ブロードキャスト方式、あるいは、ストア・スルー型キャッシュメモリとスヌープ制御を用いる方式では、データ転送が必要のないプロセッサに対して無駄なアクセスが発生し、冗長な転送によって性能が2分の1から10分の1程度、低下するという問題がある。更にスヌープ方式の場合、スヌープ専用のアドレスタグをもつことにより、チップ面積の増加にもつながる。また、固定アドレスによるインタリーブ方式では、インタリーブ構成が固定化されているため、データ転送が効率よく分散されるとは限らず、一つのインタリーブ・キャッシュにアクセスが集中することにより、逆にキャッシュメモリの使用効率が落ち、平均で2分の1の性能しか得ることが出来ない。
発明の開示
本発明の第1の目的は、プロセッサ間のデータ通信において、プロセッサ間の無駄なデータ転送を排除し、性能低下を防ぐことにある。
また、本発明の第2の目的は、プロセッサ間で、共有のインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことにある。
上記課題を解決するため、本発明の第1の態様によれば、データキャッシュを備えた複数のプロセッサとメインメモリとがバスにより接続されたマルチプロセッサシステムにおいて、アクセスすべきデータキャッシュまたはメインメモリを特定するための情報と、アクセスすべきアドレスを特定するための情報と、アクセス種を指定するための情報とを関連付けて記憶する領域を複数備え、前記領域に記録された情報にしたがって、データキャッシュまたはメインメモリに対して、ロード命令およびストア命令を発行するデータ転送エンジンを備えたことを特徴とするマルチプロセッサシステムが提供される。
また、上記課題を解決するため、本発明の第2の態様によれば、データキャッシュを備えた複数のプロセッサがバスにより接続されたマルチプロセッサシステムにおいて、各プロセッサは、他のいずれのプロセッサとデータキャッシュの共有を行なうか(共有を行なわない場合も含む)を設定するための領城と、共有するデータキャッシュのサイズを設定するための領域とを備え、アクセスすべきアドレスを受け付けると上記2つの領域を参照して、どのプロセッサにアクセスすべきかを判断する判断手段を備えることを特徴とするマルチプロセッサシステムが提供される。
発明を実施するための最良の形態
本発明の実施の形態について図面を参照して詳細に説明する。
まず、本発明の第1の実施形態について図1を参照して説明する。図1は、本実施形態におけるマルチプロセッサシステムの構成を説明するためのブロック図である。
本図に示すように、本マルチプロセッサシステムは、内部にデータキャッシュ2を備えるプロセッサ1が、内部バス10にNP個接続され、主メモリ13を共有している。このとき、主メモリ13は、主メモリの制御回路とインタフェースとを備える主メモリ制御部12を介して、内部バス10に接続されている。さらに、内部バス10には、本実施形態の特徴部分であるデータ転送エンジン11が接続されている。
データ転送エンジン11は、内部バス10に接続されたプロセッサ1内のデータキャッシュ2、あるいは、主メモリ13に対してロード/ストア命令を発行し、プロセッサ1aと他のプロセッサ1bとの間(1aと1bとは異なるプロセッサ1を表す)、あるいは、プロセッサ1と主メモリ13との間のデータ転送を制御する機能を有している。
図1において、各プロセッサ1は、データキャッシュ2と、ロード・ストア制御部3とCPU4と、内部バス制御部5とを備えている。
データキャッシュ2は、主メモリ13のデータの一部を格納するデータメモリとアドレスデータを格納するタグメモリとを備えて構成される一般的なデータキャッシュとすることができる。
ロード・ストア制御部3は、データキャッシュ2にアクセスするための制御回路である。ロードストア制御部3とデータキャッシュ2との間における制御信号、メモリアドレス、ストアデータ、ロードデータ等のやり取りはパス6を介して行なわれる。
CPU4は、例えば、汎用CPU、特定用途の専用コ・プロセッサ等とすることができる。
本実施形態において、ロード・ストア制御部3に対するデータキャッシュ2へのアクセス要求の発行経路は2通りある。一方は、CPU4が発行元となり、パス7を介してロード・ストア制御部3に通知される通常のロード・ストア要求であり、他方は、内部バス制御部5が発行元となり、パス8を介してロード・ストア制御部3に通知されるロード/ストア要求である。
ただし、内部バス制御部5が発行元となるロード/ストア要求は、内部バス制御部5がリクエスト・マスターとなって発行するのではなく、データ転送エンジン11がリクエスト・マスターとなり、内部バス10を介して各プロセッサ1内の内部バス制御部5に発行するものである。このとき、内部バス制御部5は内部バス10上のスレーブ・モジュールとして動作する。
ロード・ストア制御部3はこれら2種のロード/ストア要求を調停し、パス6を介してデータキャッシュ2にアクセスする。
すなわち、本実施形態において、プロセッサ1aとプロセッサ1bと間の通信(例えば、あるプロセッサ1aのデータキャッシュ2aの内容を、他のプロセッサ1bのデータキャッシュ2bに転送する場合)、あるいは、プロセッサ1のデータキャッシュ2と主メモリ13との間のデータ通信(例えば、データのプリフェッチを行なう場合)が必要になった場合には、データ転送エンジン11が、転送元のデータをリードし、転送先にライトする処理を制御する。
ここで、データ転送エンジン11について説明する。データ転送エンジン11は、マルチプロセッサシステム内の各プロセッサ1に対して、内部バス10を介して、データキャッシュ2のデータをリードするロード命令と、データキャッシュ2にデータをライトするストア命令とを発行可能なエンジンである。また、主メモリ制御部12を介して主メモリ13に対しても同様にロード命令とストア命令とを発行可能である。ここで、本アクセスに対して、スレーブとなるプロセッサ1あるいは主メモリ制御部12は、識別情報を持っているものとし、データ転送エンジン11は、その識別情報を用い、各プロセッサ1あるいは主メモリ制御部12に対して、アクセスすることが可能である。
図1に示すように、データ転送エンジン11は、例えば、内部バスインタフェース111と、アドレス発生部112と、バッファ113とを備えて構成することができる。
アドレス発生部112は、内部バス10に接続されたモジュール(プロセッサ1内のデータキャッシュ2、主メモリ13)に対して、データのリード/ライトを行なうためのアドレスを生成する。また、アドレス発生部112は、どのモジュールに対してアクセスするかを指定する選択信号も生成する。
これらの処理を行なうため、アドレス発生部112は、開始アドレス、幅、ピッチ、繰り返し数、モジュールの識別情報、バッファ113のエントリ番号(格納場所を特定するための情報)、アクセス種としてリード/ライトを示すレジスタ群を備えている。これらのレジスタを1セットとして、アドレス発生部112は、複数のセットを保持することができる。各レジスタの値は、例えば、オペレーティングシステムを介して、ソフトウェアで設定できるようにすることができる。
アドレス発生部112は、図1に示すように、レジスタに設定された開始アドレス、幅、ピッチ、繰り返し数(これらを「アドレス生成情報」と称す)を元にアドレスを生成して、2次元の領域121を特定するアドレスを生成することができる。そして、識別情報でどのプロセッサ1あるいは主メモリ13に対してアクセスするか判定することができる。生成したアドレスと選択信号とは、内部バスインタフェース111に送信する。もちろん、アドレス発生部が生成するアドレス生成情報はこれに限られない。
データ転送エンジン11は、ライトアクセス時(レジスタによりライトが示されているとき)には、エントリ番号に応じてバッファからデータをリードし、内部バスインタフェース111に転送する。内部バスインタフェース111は、入力されたアドレスと選択信号とを基に出力先を特定し、バッファ113からリードしたデータを内部バス10を介して出力する。
リードアクセス時(レジスタによりリードが示されているとき)は、内部バス10を介して読みだしたデータをバッファ113に転送し、バッファ113は、レジスタで設定されたエントリ番号に対してデータを格納する。
例えば、アドレス発生器112のレジスタに2つのセットが設定されており、それぞれ、1)アドレス生成情報:A0,認識情報:プロセッサ0,エントリ番号:B0,リード/ライト:リード2)アドレス生成情報:A1,認識情報:プロセッサ1,エントリ番号:B0,リード/ライト:ライトであったとする。これは、プロセッサ0からアドレス生成情報A0で特定されるアドレス領域のデータをリードしてバッファのエントリ番号B0に格納し、プロセッサ1のアドレス生成情報A1で特定されるアドレス領域にバッファのエントリ番号B0に格納してあるデータをライトすること、すなわち、プロセッサ0からプロセッサ1にデータを転送することを示している。
このようにすることで、データ転送エンジン11は、プロセッサ1aとプロセッサ1bとの間のデータ転送あるいはプロセッサ1と主メモリ13との間のデータ転送を、プロセッサ1のCPU4における処理と並列に実現することが可能となる。このとき、データ転送エンジン11は、特定の転送元から特定の転送先に、必要とするデータのみを転送するため、余分なデータ転送によるトラヒックは発生しないことになる。
なお、データ転送エンジン11の起動方法は、割込みやポーリングにより行い、これによりプロセッサ間の同期をとる。
ところで、CPU4あるいは内部バス制御部5が発行する要求がストア命令の場合、ロード・ストア制御部3はデータキャッシュ2に対しパス6を介してライト処理を行う。
データキャッシュ2がキャッシュヒットした場合、ストアデータを直接データキャッシュ2に書き込む。データキャッシュ2がキャッシュミスした場合、ロード・ストア制御部3は、パス9を介してそのキャッシュミス・アドレスを内部バス制御部5に転送し、内部バス制御部5は、内部バス10を介して、主メモリ制御部12にそのアドレスに対するリード要求を発行する。
主メモリ制御部12は、一般的な主メモリ・インタフェースを持ち、パス14を経由して要求アドレスに対するデータを主メモリ13から読出し、再び、内部バス10を経由してプロセッサ1内の内部バス制御部5に転送する。転送されたデータは、パス9を経由してロード・ストア制御部3に転送され、データキャッシュ2に対してキャッシュ・フィル処理を実行する。この一連のシーケンスは一般のデータキャッシュのフィル方式と同様である。
データキャッシュ2へのアクセス要求がロード命令の場合も、一般的なデータキャッシュの制御と同様である。この場合、ロード・ストア制御部5はパス6を介してデータキャッシュ2に対してロードアクセスを行う。
データキャッシュ2がキャッシュヒットの場合、データキャッシュ2からデータを読出し、アクセスの要求元であるCPU4若しくは内部バス制御部5に対してパス7もしくはパス8を介してロードデータを返送する。データキャッシュミスの場合、ストア時のキャッシュミスと同様のシーケンスをとり、データキャッシュ2に対してフィルを終了した時点、あるいはキャッシュ・フィルと同時に、ロード要求に対応するアドレスのデータをCPU4もしくは内部バス制御部5に返送する。
このような処理により、確実に、対象とするデータをデータキャッシュ2内に留めておくことができる。すなわち、例えば、データキャッシュ2へのプリフェッチとして動作することができる。
次に、本発明の第2の実施形態について説明する。
本実施形態におけるマルチプロセッサシステムは、ローカルのデータキャッシュを備える複数のプロセッサ間でデータキャッシュを共有するインタリーブ方式を採用するが、システム内のどのプロセッサとデータキャッシュ共有をするか、および、共有に際し、どのようなサイズでデータキャッシュを割り振るかを設定することができる。
図2は、第2の実施形態におけるマルチプロセッサシステムの構成を説明するためのブロック図である。
本図において、マルチプロセッサシステムは、ローカルなデータキャッシュ26を備えたNP個のプロセッサ20がグローバルバス28によりバス接続されて構成される。
各プロセッサ20は、データキャッシュ26と、CPU4と、ロード・ストア制御部21と、マッピング制御部22とを備えている。また、グローバルバス28には、バス調停を行なうためのアービタ25が設けられている。
ここで、ロード・ストア制御部21は、ローカル(自プロセッサ内)のCPU4またはデータキャッシュ26を共有する他のプロセッサ20のCPU4から発行されるデータキャッシュ26へのロード命令およびストア命令を処理する。
マッピング制御部22は、データキャッシュ26に対するロードあるいはストアに際し、グローバルバス28上のどのプロセッサ20のデータキャッシュ26をアクセスするかの判定を行う。
ロード・ストア制御部21は、マッピング制御部22が自身のプロセッサ20(ローカルのプロセッサ20)内のデータキャッシュ26をアクセスすると判定したときは、ローカルバス27を介して、ローカルのデータキャッシュ26にアクセスする。
一方、マッピング制御部22が、他のプロセッサ20(グローバルバス28により接続された他のプロセッサ20)内のデータキャッシュ26をアクセスすると判定したときは、グローバルバス28を経由して、対象となる他のプロセッサ20内のデータキャッシュ26にアクセスする。
次に、図3を参照して、マッピング制御部22についてさらに詳細に説明する。
マッピング制御部22は、どのプロセッサ20とデータキャッシュ共有するかを示す共有プロセッサ・レジスタ33と、どのようなサイズでデータキャッシュを割り振るかを示すバウンダリ・レジスタ30と、バウンダリ・レジスタ30の値に応じて、ロード・ストア制御部21から入力されたアドレス23をシフトさせるシフタ31とを備えている。
また、マルチプロセッサ内の各プロセッサ20には、プロセッサを識別するためのプロセッサIDが付されており、マッピング制御部22は、自身のプロセッサ20を示すプロセッサID36を保持する。
さらに、マッピング制御部22は、シフタ31の出力と、プロセッサID36と、共有プロセッサ・レジスタ33の値とに基づいてプロセッサ選択信号24をアビータ25に出力するセレクタ34を備えている。
なお、共有プロセッサ・レジスタ33およびバウンダリ・レジスタ30の値は、例えば、本マルチプロセッサシステムを制御するオペレーティングシステムを介して設定するようにすることができる。例えば、本マルチプロセッサシステムで実行されるアプリケーションソフトウェアは、そのアプリケーションソフトウェアの実行に適したデータキャッシュ共有が可能なように、共有プロセッサ・レジスタ33およびバウンダリ・レジスタ30の値を設定するようにする。
ここで、本実施形態において、共有プロセッサ・レジスタ33で用いるフォーマットの一例について説明する。上述のように、共有プロセッサ・レジスタ33は、プロセッサ20が、グローバルバス28に接続された複数のプロセッサ20のうちどのプロセッサ20とデータキャッシュ共有を行なうかを指定するためのレジスタである。
NP個のプロセッサ20から構成されるマルチプロセッサシステムの場合、共有プロセッサ・レジスタ33のビット幅はlog2(NP)とする。そして、共有プロセッサ・レジスタ33の全ビットが“0”の時、他のプロセッサ20とはデータキャッシュを共有しないものとし、共有プロセッサ・レジスタ33の下位1ビットのみを“1”とする時、下位1ビットを除いたプロセッサID36が等しいプロセッサ20とデータキャッシュ共有を行うものとする。この場合、2つのプロセッサ20でデータキャッシュ共有を行うことになる。なお、各プロセッサ20には0x0から昇順のプロセッサID36が与えられているものとする。
同様に、下位mビットを除いたプロセッサID36が等しいプロセッサ20群とデータキャッシュ共有する場合には、共有プロセッサ・レジスタ33の下位側からmビットを“1”とする。すなわち、共有は2、4、8…個のプロセッサ間で行なわれることになり、最大2m個のプロセッサ20間でデータキャッシュ共有を行なうことになる。プロセッサ20が他の全プロセッサ20とデータキャッシュ共有を行う場合には、共有プロセッサ・レジスタ33の全ビットを“1”とする。なお、互いにデータキャッシュ共有を行なうプロセッサ20同士は、それぞれの共有プロセッサ・レジスタ33に同じ値が設定されることになる。
次に、本実施形態において、データキャッシュ26のサイズの割り振りを示すレジスタであるバウンダリ・レジスタ30で用いるフォーマットの一例について説明する。なお、各データキャッシュ26のサイズが定まれば、各データキャッシュ26のアドレスの境界が求められる(データキャッシュ26のアドレスは、共有を行なうプロセッサ20のプロセッサIDの順に割り当てるものとする。)
ここでは、データキャッシュの割り振りサイズの最小単位である最小アドレス・バウンダリC(バイト)をあらかじめ定めておく。最小アドレス・バウンダリCについても、例えば、オペレーティングシステムを介して設定できるようにすることができる。
このとき、データキャッシュ共有において最小アドレス・バウンダリCでバンク・インタリーブ構成をとる場合、バウンダリ・レジスタ30の全ビットを“0”とする。そして、、データキャッシュ26のサイズを最小アドレス・バウンダリCの2倍とするたびに、バウンダリ・レジスタ30の下位ビットから順に“1”としていく。例えば、バウンダリ・レジスタ30の下位2ビットのみが“1”のプロセッサ20のデータキャッシュ26は、最小アドレス・バウンダリCの4倍のサイズが設定されていることになる。
なお、バウンダリ・レジスタ30および共有プロセッサ・レジスタ33のフォーマットは上記の例に限られない。
次に、マッピング制御部22の処理について説明する。
マッピング制御部22に入力されたアドレス23は、シフタ31において、バウンダリ・レジスタ30の値等に基づいてシフトされ、シフトアドレス35となる。
ここで、シフトアドレス35は、<log2(最小アドレス・バウンダリC)+Σ{バウンダリ・レジスタ30}+log2(NP)−1:log2(最小アドレス・バウンダリC)+Σ{バウンダリ・レジスタ30}>となる。
ここで、Σ{バウンダリ・レジスタ30}は、インタリーブするアドレス空間を指定している。Σ{バウンダリ・レジスタ30}は、例えば、バウンダリ・レジスタが3ビットで表現されている場合、Σ{ビット0、ビット1、ビット2}を示す。最小アドレス・バウンダリCを1KBとした場合のシフトアドレス35は、以下のようになる。
バウンダリレジスタ=000:<12:10>
バウンダリレジスタ=001:<13:11>
バウンダリレジスタ=011:<14:12>
バウンダリレジスタ=111:<15:13>
例えば、プロセッサ数NPが8、バウンダリ・レジスタ30の値が0x011、最小アドレス境界Cが1KBの場合に、入力されたアドレスが<31:0>であるとすると、シフトアドレス35は、<log2(1KB)+Σ{0,1,1}+log2(8)−1:log2(1KB)+Σ{0,1,1}>、すなわちアドレス<14:12>となる。
シフトアドレス35およびプロセッサID36は、セレクタ34に入力される。セレクタ34は、共有プロセッサ・レジスタ33の値を元に、アクセスすべきプロセッサIDを示すプロセッサ選択信号24を生成し、アビータ25に送信する。
セレクタ34では、ビット毎に共有プロセッサ・レジスタ33の値を調べ、共有プロセッサ・レジスタ33の値が“1”ならばシフトアドレス35の値を選択し、共有プロセッサ・レジスタ33の値が“0”ならばプロセッサID36の値を選択することによりプロセッサ選択信号24生成を生成していく。
例えば、プロセッサID36が0x101のプロセッサ20が、4つのプロセッサ20でデータキャッシュ共有し(共有プロセッサ・レジスタ33=0x011)、シフトアドレス35が0x010の場合、1ビット目はシフトアドレス35の“0”が選択され、2ビット目もシフトアドレス35の“1”が選択され、3ビット目は、プロセッサID36の1が選択される結果、アクセス・プロセッサID24は0x110となる。これは、プロセッサIDが0x110のプロセッサ20のデータキャッシュ26に対してアクセスすべきことを示している。
マッピング制御部22が、ローカルのプロセッサ20内のデータキャッシュ26をアクセスすると判定した場合、ロード・ストア制御部21は、ローカルバス27を使用して、ローカルのデータキャッシュ26に対してロード命令あるいはストア命令を実行する。
マッピング制御部22が、他のプロセッサ20内のデータキャッシュ26をアクセスすると判定した場合、ロード・ストア制御部21は、アービタ25に対しバス権を求め、バス権が得られると、グローバルバス28を使用して、他のプロセッサ20内のデータキャッシュ26に対してに対してロード命令あるいはストア命令を実行する。
アクセス対象となったデータキャッシュ26は、ローカルバス27からのアクセスあるいはグローバルバス28からのアクセスの調停後、実際にデータキャッシュ26内のデータメモリおよびタグメモリへのアクセスを行う。
本方式を用いたマルチプロセッサシステムのさらなる具体例を図4と図5とを参照して説明する。
本例において、マルチプロセッサシステムは、8つのプロセッサ(プロセッサIDは、0x000から0x111であるとする)からなるシステムで、最小アドレス・バウンダリCを1KBとする。
図4において、プロセッサ0(0x000)およびプロセッサ1(0x001)は、シェアド・レジスタ42が、0x000であり、データキャッシュ共有を行なわないことを示している。このとき、バウンダリ・レジスタ41の値は意味を持たない。また、プロセッサ2(0x010)およびプロセッサ3(0x011)は、シェアド・レジスタ42が、0x001(プロセッサIDの上位2ビットが等しいプロセッサ)であり、互いに2つのプロセッサでデータキャッシュ共有を行なうことを示している。そして、バウンダリ・レジスタ41は、いずれも0x011(C×4=4KB)である。さらにプロセッサ4(0x100)とプロセッサ5(0x101)とプロセッサ6(0x110)とプロセッサ7(0x111)とは、、シェアド・レジスタ42が、0x011(プロセッサIDの上位1ビットが等しいプロセッサ)であり、互いに4つのプロセッサでデータキャッシュ共有を行なうことを示している。そして、バウンダリ・レジスタ41は、いずれも0x000(C×1=1KB)である。
図5は、図4で示されるマルチプロセッサシステムのデータキャッシュ共有のイメージを示す図である。
本図に示すように、プロセッサ0(0x000)とプロセッサ1(0x001)とは、それぞれ分散型のデータキャッシュとして定義される(符号45、46)。プロセッサ2(0x010)とプロセッサ3(0x011)とは、共有型データキャッシュにて接続されたマルチプロセッサとして動作し、0番地から4KB−1番地までをプロセッサ−2に(0x010)割り当て、4KBから8KB−1までをプロセッサ3に割り当てたインタリーブ構成をとる(符号47)。プロセッサ4(0x100)〜プロセッサ7(0x111)は、共有型データキャッシュにて接続されたマルチプロセッサとして動作し、そのインタリーブアドレス境界は1KBとなる(符号48)。
このように、本実施形態によれば、ローカルのデータキャッシュを備える複数のプロセッサ間でデータキャッシュを共有するインタリーブ方式において、システム内のどのプロセッサとデータキャッシュ共有をするか、および、共有に際し、どのようなサイズでデータキャッシュを割り振るかを設定することができる。
これにより、本マルチプロセッサシステムで実行されるアプリケーションソフトウェアは、その実行に適したデータキャッシュ共有が可能になり、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことができる。
ここで、フロアプランの制約から、各プロセッサ20は、物理的に遠い位置に配置されることがあり、さらにバス調停も加わるため、ローカルのデータキャッシュ26をアクセスするレイテンシに対して、一般に、他のプロセッサのデータキャッシュ26にアクセスするレイテンシは大きくなる。また、プロセッサ20のストールサイクル数を増大させる原因は、主としてロード命令である。したがって、ローカル以外のアクセスに関しては、ストア命令のみを実行可能とする制約を持つことにより、アービタ25とグローバルバス28の論理規模を削減することも可能である。
図6に本発明の第3の実施形態について示す。基本構成は、先に述べた2つの実施例を組み合わせた構成であり、NP個のプロセッサ50が、内部バス10とグローバルバス28により接続されたマルチプロセッサシステムである。第1の実施形態および第2の実施形態と同じ部位には同じ符号を付している。ロード・ストア制御部51は、第1の実施形態におけるロード・ストア制御部3と第2の実施形態におけるロード・ストア制御部21との両方の機能を備えている。
第1の実施形態のデータ転送エンジン11によるデータ転送は、割込みやポーリングによって実行されるため、起動までのオーバヘッドが発生する。しかしながら、プロセッサ50とは独立にデータ転送が可能なため、大容量なデータの高速転送が可能である。第2の実施形態のグローバルバス28とアービタ25とを用いた共有型データキャッシュ方式では、大容量のデータ転送、および小容量データ転送も可能であるが、他のプロセッサのデータキャッシュ26に対するロード命令に関しては、レイテンシが大きい。本実施形態は、これらの2つの特徴を考慮し、アプリケーションソフトウァアにより使い分けが実現可能な構成である。
上述のように、本発明の第1の実施形態によれば、プロセッサ間のデータ通信において、プロセッサ間の無駄なデータ転送を排除し、性能低下を防ぐことができる。
また、本発明の第2の実施形態によれば、マルチプロセッサのインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことができる。
産業上の利用可能性
本発明は、データキャッシュを備えた複数のプロセッサ間のデータ通信であって、プロセッサ間の無駄なデータ転送を排除し、また、マルチプロセッサのインタリーブ型キャッシュを使用する方式において、インタリーブ構成の固定化に起因するキャッシュメモリの使用効率低下を防ぐことを目的とするマルチプロセッサシステムのデータ通信に適用可能である。
【図面の簡単な説明】
図1は、本発明の第1の実施形態の構成を説明するためのブロック図である。
図2は、本発明の第2の実施形態の構成を説明するためのブロック図である。
図3は、本発明の第2の実施形態におけるマッピング制御部22を説明するためのブロック図である。
図4は、本発明の第2の実施形態におけるバウンダリ・レジスタ41および共有プロセッサ・レジスタ33を説明するための図である。
図5は、本発明の第2の実施形態におけるプロセッサ1のデータキャッシュを共有について説明するための図である。
図6は、本発明の第3の実施形態の構成を説明するためのブロック図である。
Claims (6)
- データキャッシュを備えた複数のプロセッサとメインメモリとがバスにより接続されたマルチプロセッサシステムにおいて、
アクセスすべきデータキャッシュまたはメインメモリを特定するための情報と、アクセスすべきアドレスを特定するための情報と、アクセス種を指定するための情報とを関連付けて記憶する領域を複数備え、
前記領域に記録された情報にしたがって、データキャッシュまたはメインメモリに対して、ロード命令およびストア命令を発行するデータ転送エンジンを備えたことを特徴とするマルチプロセッサシステム。 - 請求項1に記載のマルチプロセッサシステムにおいて、
前記データ転送エンジンは、データを一時的に格納するバッファ領域を備え、
前記発行したロード命令に基づいてデータキャッシュまたはメインメモリから読み出したデータを前記バッファ領域に格納し、
前記バッファ領域に格納したデータを前記発行したストア命令とともにデータキャッシュまたはメインメモリに送信することを特徴とするマルチプロセッサシステム。 - データキャッシュを備えた複数のプロセッサがバスにより接続されたマルチプロセッサシステムにおいて、
各プロセッサは、
他のいずれのプロセッサとデータキャッシュの共有を行なうか否かの設定をするための領域と、共有するデータキャッシュのサイズを設定するための領域と、
アクセスすべきアドレスを受け付けると上記2つの領域を参照して、どのプロセッサにアクセスすべきかを判断する判断手段とを備えることを特徴とするマルチプロセッサシステム。 - 請求項3に記載のマルチプロセッサシステムにおいて、
前記データキャッシュの共有は、バンク・インタリーブ方式により行なうことを特徴とするマルチプロセッサシステム。 - 請求項3または4に記載のマルチプロセッサシステムにおいて、
判断手段は、アクセス種がロードの場合、他のプロセッサへのアクセスを行なわないように判断することを特徴とするマルチプロセッサシステム。 - データキャッシュを備えた複数のプロセッサとメインメモリとがバスにより接続されたマルチプロセッサシステムにおいて、
アクセスすべきデータキャッシュまたはメインメモリを特定するための情報と、アクセスすべきアドレスを特定するための情報と、アクセス種を指定するための情報とを関連付けて記憶する領域を複数備え、前記領域に記録された情報にしたがって、データキャッシュまたはメインメモリに対して、ロード命令およびストア命令を発行するデータ転送エンジンを備え、
各プロセッサは、他のいずれのプロセッサとデータキャッシュの共有を行なうか否かの設定をするための領域と、共有するデータキャッシュのサイズを設定するための領域と、アクセスすべきアドレスを受け付けると上記2つの領域を参照して、どのプロセッサにアクセスすべきかを判断する判断手段とを備えたことを特徴とするマルチプロセッサシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001369009 | 2001-12-03 | ||
JP2001369009 | 2001-12-03 | ||
PCT/JP2002/012523 WO2003048955A1 (fr) | 2001-12-03 | 2002-11-29 | Systeme multiprocesseur |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2003048955A1 true JPWO2003048955A1 (ja) | 2005-08-11 |
Family
ID=19178486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003550079A Pending JPWO2003048955A1 (ja) | 2001-12-03 | 2002-11-29 | マルチプロセッサシステム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2003048955A1 (ja) |
WO (1) | WO2003048955A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5625536B2 (ja) * | 2010-06-24 | 2014-11-19 | 富士通株式会社 | キャッシュ装置、及び情報処理装置 |
CN113222115B (zh) * | 2021-04-30 | 2024-03-01 | 西安邮电大学 | 面向卷积神经网络的共享缓存阵列 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5710907A (en) * | 1995-12-22 | 1998-01-20 | Sun Microsystems, Inc. | Hybrid NUMA COMA caching system and methods for selecting between the caching modes |
US6434649B1 (en) * | 1998-10-14 | 2002-08-13 | Hitachi, Ltd. | Data streamer |
US6314491B1 (en) * | 1999-03-01 | 2001-11-06 | International Business Machines Corporation | Peer-to-peer cache moves in a multiprocessor data processing system |
US6754776B2 (en) * | 2001-05-17 | 2004-06-22 | Fujitsu Limited | Method and system for logical partitioning of cache memory structures in a partitoned computer system |
-
2002
- 2002-11-29 JP JP2003550079A patent/JPWO2003048955A1/ja active Pending
- 2002-11-29 WO PCT/JP2002/012523 patent/WO2003048955A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2003048955A1 (fr) | 2003-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10949347B2 (en) | Multiple data channel memory module architecture | |
TWI651620B (zh) | 用於處理多個交易之資料處理系統及方法 | |
US5754800A (en) | Multi processor system having dynamic priority based on row match of previously serviced address, number of times denied service and number of times serviced without interruption | |
JP4316016B2 (ja) | 複数のシステムバスを有するコンピュータシステムにおいてメモリコヒーレンスを維持するためのシステムおよび方法 | |
US7124410B2 (en) | Distributed allocation of system hardware resources for multiprocessor systems | |
US7120755B2 (en) | Transfer of cache lines on-chip between processing cores in a multi-core system | |
US6633967B1 (en) | Coherent translation look-aside buffer | |
JP2010191638A (ja) | キャッシュ装置 | |
US6260117B1 (en) | Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency | |
US6751705B1 (en) | Cache line converter | |
JPH1145225A (ja) | バス管理装置及びそれを有する複合機器の制御装置 | |
US20060080398A1 (en) | Direct access of cache lock set data without backing memory | |
US10198357B2 (en) | Coherent interconnect for managing snoop operation and data processing apparatus including the same | |
US6988167B2 (en) | Cache system with DMA capabilities and method for operating same | |
US6567900B1 (en) | Efficient address interleaving with simultaneous multiple locality options | |
JP2000067024A (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
EP0926600B1 (en) | Computer system with processor and memory hierarchy and its operating method | |
JP5439808B2 (ja) | 複数バスを有するシステムlsi | |
US6240487B1 (en) | Integrated cache buffers | |
JPWO2003048955A1 (ja) | マルチプロセッサシステム | |
EP0611462B1 (en) | Memory unit including a multiple write cache | |
JP2005346582A (ja) | システムlsi及び画像処理装置 | |
EP3992802A1 (en) | Input/output device operational modes for a system with memory pools | |
US8015326B2 (en) | Central processing apparatus, control method therefor and information processing system | |
CN116126242A (zh) | 一种写数据方法、装置、设备及介质 |