JP4179677B2 - マルチプロセッサ装置 - Google Patents
マルチプロセッサ装置 Download PDFInfo
- Publication number
- JP4179677B2 JP4179677B2 JP25165298A JP25165298A JP4179677B2 JP 4179677 B2 JP4179677 B2 JP 4179677B2 JP 25165298 A JP25165298 A JP 25165298A JP 25165298 A JP25165298 A JP 25165298A JP 4179677 B2 JP4179677 B2 JP 4179677B2
- Authority
- JP
- Japan
- Prior art keywords
- shared
- bus
- cpu
- global
- terminal
- 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.)
- Expired - Fee Related
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
この発明は複数のプロセッサユニットをグローバルバスに接続したマルチプロセッサ装置に関するものである。
【0002】
【従来の技術】
図21は従来のマルチプロセッサ装置を示すブロック図である。図において、1,1Aはプロセッサユニットであり、各プロセッサはCPU5とライトスルー機能で、かつ書き込み監視機能を有するキャッシュメモリ6を有している。各プロセッサ1,1Aのキャッシュメモリ6は、共通のグローバルバス2に接続され、このグローバルバス2はインタフェース3を介して外部メモリ4に接続されている。なお、ここで問題としているのはデータキャッシュであり、命令キャッシュは問題としないので図示を省略する。
【0003】
次の動作について説明する。
CPU5は処理に必要なデータをグローバルバス2、インタフェース3を介して外部メモリ4との間でやり取りを行うが、そのグローバルバス2、インタフェース3は処理動作速度が遅いため、この速度がボトルネックとなり、CPU5は本来の処理速度が出なかった。
【0004】
そこで、CPU5がよく使う外部メモリ4の内容を該CPUの近くで保持することにより速度向上を計る手法が考えられた。ローカルキャッシュメモリ6は、CPU5の近くに設けられ該CPUがよく使う外部メモリ4の内容を記録したメモリである。
【0005】
以下、このローカルキャッシュメモリ6の動作について記述する。
1.ローカルキャッシュメモリによる読み出し。
いま、CPU5が外部メモリ4の0013番地を読みにいった場合、ローカルキャッシュメモリ6は自身が0013番地の内容をもっているかを確認する。もしあれば、CPU5に対して0013番地の内容を返す。その結果、CPU5は動作の遅いグローバルバス2、インタフェース3を使用しないで高速に動作できる。
【0006】
もし、0013番地の内容がローカルキャッシュメモリ6の中にない場合、ローカルキャッシュメモリ6は自分自身がもっているCPU5が今後当分の間使用しないであろうメモリの内容を選び出し(選出法はこの発明の本質ではないので説明を省略する)、これを消去(後述するがメモリに書き込み後キャッシュから消去)して、空いたところに0013番地とその内容を転送する。こうすることにより、CPU5が2回目以降、0013番地を読みにいった場合、ローカルキャッシュメモリ6が0013番地の内容を持っているので、高速に読み出すことができる。この機構をパージという。
【0007】
2.ローカルキャッシュメモリによる書き込み。
CPU5が外部メモリ4に対して書き込みを実施する場合、二つの方法がある。一つはライトバック法(Write Back)と呼ばれる方法で、もう一つはライトスルー法(Write Through)と呼ばれる方法である。
【0008】
まず、ライトスルー法について説明する。CPU5が外部メモリ4の0013番地に対して書き込みをしたとき、読み込みの時と同様にローカルキャッシュメモリ6が0013番地の内容を持っているかどうかを確認する。ローカルキャッシュメモリ6が0013番地の内容をもっていれば該ローカルキャッシュメモリ内の0013番地の内容を書き換えると共に、外部メモリ4に対しても書き換えを実施する。ローカルキャッシュメモリ6が0013番地の内容を持っていない場合は、ローカルキャッシュメモリ6はCPU5が使用しないと判断した他の内容を消去し、空いた場所に0013番地の内容を書くと共に外部メモリ4にも書き込む。この結果、書き込みの度に動作の遅いグローバルバス2、インタフェース3を使用することになる。
【0009】
次にライトバック法について説明する。このライトバック法はライトスルー法とは書き込みのタイミングが異なる。すなわち、書き込み時、ローカルキャッシュメモリ6には書き込みを実施するが、外部メモリ4に書き込みはせず、ローカルキャッシュメモリ6がこの内容をパージするときに書き込む。この結果、パージするときのみ、動作の遅いグローバルバス2、インタフェース3を使用することになり、ライトスルー法より処理動作が速くなる。
【0010】
3.マルチプロセッサ装置でのローカルキャッシュメモリの応用について
上記ローカルキャッシュメモリをマルチプロセッサで応用する場合、ライトスルー法で処理し、かつ他のCPUの書き込み内容を監視する「監視機能」を持たなければならない。
【0011】
まず、ライトスルー法を使用しなければならない理由(つまり、ライトバック法ではいけない理由)は、ライトバック法で0013番地を書き込んだ場合、その内容がパージされるまで外部メモリ4に書き込まれない。その結果、他のCPUが0013番地を読みにいってもパージされるまで他のCPUは古い内容しか読めないからである。
【0012】
一方、ライトスルー法にしたとしても、他のCPUが0013番地の内容を持っていた場合、その内容は変化されない。従って、ローカルキャッシュメモリ6は他のローカルキャッシュメモリの書き込みを監視し、書き込みがあった場合、自分がもっているローカルキャッシュメモリのアドレス情報と比較して同じ内容があった場合にこの内容を無効化しなければならなくなる。
【0013】
マルチプロセッサ装置でのキャッシュメモリ構成では、このローカルキャッシュメモリごと、またはローカルキャッシュメモリと共有メモリとの間の同一性を保つため、これまでいろいろな方法が考えられた。例えば、特公平2−22757号公報及び特公平4−175946号公報は、データの共有/非共有によってアクセスするメモリを分け、共有データを上記方法で書き込みを監視し、これによって、ローカルキャッシュメモリを無効化する技術を採用している。
【0014】
米国特許明細書第4939641号公報は、キャッシュメモリの中に共有/非共有情報を置き、非共有ならライトバック法で、共有ならライトスルー法でキャッシュを読み書きする方法が紹介されている。これらをまとめて「書き込み監視付き」マルチプロセッサおよび、キャッシュメモリという構成は、数限りないほどあり、中には「監視機能つき」を前提条件としたものがある。
【0015】
【発明が解決しようとする課題】
従来のマルチプロセッサ装置は以上のように構成されているので、次のような課題があった。
【0016】
一つ目は監視処理のための時間。
監視処理が書き込みの度に実施されると、その処理の間、CPUはローカルキャッシュメモリを使用できなくなり、CPUの動作速度が落ちる結果になる。例えば、ある処理の読み込み数が1,000,000回、1読み込みあたり1クロック(Clock)、書き込み数が10,000回、1書き込みあたり(ライトスルーであるため、すべての書き込みをバスを通して実施するとして)4クロック、書き込みに対する監視処理に2クロックかかったとする。この処理を5つのCPUが同時に行った場合、全CPUの書き込みが5[CPU]×10,000[回]=50,000回になるため、監視処理が100,000クロック必要となる。監視処理を除いた時間が1, 000, 000+10,000×4=1,040,000クロックであるため、監視処理のために処理時間が10%近く長くなることになる。
【0017】
同じ例で、書き込み回数が200回であった場合の監視処理を除いた処理時間は1,080,000クロックとなり、監視処理の時間は200,000クロックとなり20%程度長くなる。更に書き込み回数200回かつ10のCPUであった場合、その監視処理の時間は400,000クロックとなり、40%近く長くなる。上記の例のように一般に、監視処理時間はCPUおよびキャッシュメモリの数と、その書き込み回数に比例する。
【0018】
二つ目はライトバックキャッシュにできないことによる処理速度の低下。
上記と同じ処理を実施して、書き込み処理のうち50%がキャッシュメモリにヒットしたとし、そのときの書き込み処理の時間が1クロックであったとすると、その処理時間(監視時間を除いた)は1,000,000×1クロック+10,000×5×4クロック=1,025,000クロックとなり、2%程度短くなる。書き込み回数が倍になった場合、同様に1,050,000クロックとなり、同様に3%程度短くなる。ヒット率が高くなれば、ライトバックキャッシュの時間は更に短くなる。しかし、マルチプロセッサでは、前途のごとく、ライトバックキャッシュでは他のCPUは古い内容しか読めないため、速度の遅くなるライトスルーキャッシュしか使用できなかった。
【0019】
三つ目はコストの問題。
もし仮に、書き込み監視機能つきマルチプロセッサシステムを1チップについて実現した場合、この監視処理は、キャッシュメモリの機能を増やすことになる。監視機能の追加はこれまでライブラリ化されている通常のキャッシュメモリが使えないまたは改定を要することを意味する。仮に改定を要する場合はその分だけ設計時間の増大となる。また、機能付加によってチップレイアウト面積は増加する。設計時間の増大、レイアウト面積の増大の結果、チップ開発コスト、作成コストともに上昇する。
【0020】
この監視処理をチップ外部部品で調達するにも問題がある。もし、単なるライトキャッシュまたはライトスルーのみのキャッシュであれば、安価で手に入る。これは、現在シングルプロセッサの需要が多く、しかもシングルプロセッサの書き込み監視を必要としないからである。
【0021】
しかし、上記のような何らかの「書き込み監視」機能付きのキャッシュメモリはなかなか安価には入手できない。これは、現在マルチプロセッサが特殊分野でしか活用されず、その市場が小さく、その結果、部品は少量生産となり、高くなるからである。
【0022】
この発明は上記従来の課題を解消するためになされたもので、キャッシュメモリの書き込み監視処理を必要とせず、バスの負荷軽減、データキャッシュの負荷軽減を図り、データキャッシュの高速化処理を実現したマルチプロセッサ装置を得ることを目的とする。
【0023】
【課題を解決するための手段】
この発明に係るマルチプロセッサ装置は、共有バス端子と非共有バス端子とを有するCPUと、前記非共有バス端子に接続され自己のCPUのみに用いる非共有情報を記憶したローカルキャッシュメモリとを備えたプロセッサユニットと、複数の前記プロセッサユニットのそれぞれのCPUの共有バス端子をグローバル共有バスに接続するローカル共有バスと、複数の前記プロセッサユニットのそれぞれのローカルキャッシュメモリのバス端子をグローバル非共有バスに接続するローカル非共有バスと、前記グローバル共有バスを前記全てのプロセッサユニットのCPUが用いる共有情報を記憶した外部の共有メモリに接続する共有インタフェースと、前記グローバル非共有バスを前記全てのプロセッサユニットのCPUが用いる非共有情報を記憶した外部の非共有メモリに接続する非共有インタフェースとを備えたものである。
【0024】
この発明に係るマルチプロセッサ装置は、共有インタフェースの内部側におけるグローバル共有バスの途中にグローバル共有キャッシュメモリを設けたものである。
【0025】
この発明に係るマルチプロセッサ装置は、グローバル共有バスとグローバル非共有バスを、共有情報記憶領域と非共有情報記憶領域とを有する外部のメモリに接続する共用インタフェースを備えたものである。
【0026】
この発明に係るマルチプロセッサ装置のローカルキャッシュメモリは、ライトスルー機能を有するものである。
【0027】
この発明に係るマルチプロセッサ装置のローカルキャッシュメモリは、ライトバック機能を有するものである。
【0029】
この発明に係るマルチプロセッサ装置は、共有バス端子と2つ以上の非共有バス端子とを有するCPUと、前記各非共有バス端子に接続され自己のCPUのみに用いる非共有情報を記憶したローカルキャッシュメモリとを備えたプロセッサユニットと、複数の前記プロセッサユニットのそれぞれのCPUの共有バス端子をグローバル共有バスに接続するローカル共有バスと、前記複数の前記プロセッサユニットのそれぞれの2つ以上のローカルキャッシュメモリの非共有バス端子を別個独立したグローバル非共有バスに接続するローカル非共有バスと、前記グローバル共有バスを前記全てのプロセッサユニットのCPUが用いる共有情報を記憶した外部の共有メモリに接続する共有インタフェースと、前記グローバル非共有バスを前記全てのプロセッサユニットのCPUが用いる非共有情報を記憶した外部の別個独立した非共有メモリに接続する非共有インタフェースとを備えたものである。
【0030】
この発明に係るマルチプロセッサ装置は、共有バス端子と非共有バス端子および外部装置バス端子とを有するCPUと、前記各非共有バス端子に接続され自己のCPUのみに用いる非共有情報を記憶したローカルキャッシュメモリとを備えたプロセッサユニットと、前記プロセッサユニットのCPUの共有バス端子をグローバル共有バスに接続するローカル共有バスと、前記ローカルキャッシュメモリの非共有バス端子をグローバル非共有バスに接続するローカル非共有バスと、前記外部装置バス端子をグローバル外部装置バスに接続するローカル外部装置バスと、前記グローバル共有バスを前記全てのプロセッサユニットのCPUが用いる共有情報を記憶した外部の共有メモリに接続する共有インタフェースと、前記グローバル非共有バスを前記全てのプロセッサユニットのCPUが用いる非共有情報を記憶した外部の非共有メモリに接続する非共有インタフェースと、前記グローバル外部装置バスを前記全てのプロセッサユニットのCPUが用いる共有情報を記憶した外部装置に接続する外部装置インタフェースとを備えたものである。
【0031】
この発明に係るマルチプロセッサ装置は、ローカルキャッシュメモリの入力側または出力側に接続したローカルメモリを備えたものである。
【0032】
この発明に係るマルチプロセッサ装置は、アドレス端子、データ端子、コントロール端子を有するCPU本体と、前記アドレス端子からのアドレス情報を入力とし、共有/非共有かを判断する共有/非共有判定回路と、この共有/非共有判定回路からの出力を入力とし、共有の場合には前記CPU本体の各バス端子を共有バス端子に接続し、非共有の場合には前記CPU本体の各バス端子を非共有バス端子に接続する共有/非共有バス選択装置と、前記非共有バス端子に接続され自己のCPUのみに用いる非共有情報を記憶したローカルキャッシュメモリとを備えたCPUを用いるものである。
【0033】
この発明に係るマルチプロセッサ装置の共有/非共有判定回路は、入力がアドレスの上位、出力がそのアドレスブロックの共有/非共有判定であるRAMである。
【0034】
この発明に係るマルチプロセッサ装置の共有/非共有判定回路は、CPUの近傍のポインタテーブルの中に備えられた共有/非共有ビットを直接または間接的に送られることにより、セグメントごとに共有/非共有を判定するものである。
【0035】
この発明に係るマルチプロセッサ装置のCPUは、メモリアクセス時のセグメント情報からデータの共有/非共有を判断してアクセスするバスを決定するものである。
【0036】
この発明に係るマルチプロセッサ装置のCPUは、ユーザーの情報から共有/非共有データを別々の命令でアクセスさせることよってバスを選択するものである。
【0037】
この発明に係るマルチプロセッサ装置は、異なるCPUの各バス端子を、グローバル非共有バスとグローバル共有バスおよびグローバル外部装置バスに接続したものである。
【0038】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態1.
図1はこの発明の実施の形態1によるマルチプロセッサ装置の構成を示すブロック図であり、ライトバックキャッシュ使用、共有キャッシュなしの場合である。
【0039】
ここで、まず、「共有」とは、各CPUが使用・転送・格納する資源でなく、単に「共有データ」を転送・格納する資源である。また、「非共有」とは単一CPUのみが使用・転送・格納する資源でなく、単に「非共有データ」を転送・格納する資源である。単一CPUのみが使用する資源を「専用」資源とし、複数のCPUが使用する資源を「共用」資源とする。
【0040】
図1において、11は命令又はアクセスしようとするアドレスによって読み書きするデータが共有データか、非共有データかを判断し、その結果によってバスを選択することが可能な装置を備えた第iCPUである。この判断方法については実施の形態10以降で説明する。この第iCPU11は第(i,1)共有バス端子と第(i,1)非共有バス端子をもち、これらは命令またはアクセスしようとするCPUが共有データか非共有データかを判断することによりバスが選択されるようになっている。
【0041】
12は、他のCPUからの書き込み監視機能をもたない第(i,1)ローカルキャッシュメモリである。ここで、第(i,1)ローカルキャッシュメモリ12はデータの受け渡しのみを実施する。これは、前述のごとく、プログラムは原則書きかえる必要がないためで、この図には命令キャッシュ(Instruction Cache)は省略されている。この第(i,1)ローカルキャッシュメモリ12は、第(i,1)CPU側バス端子12aと第(i,1)CPU外部側バス端子12bをもつ。第(i,1)CPU側バス端子12aは第(i,1)非共有バス端子11bに接続されている。この第(i,1)ローカルキャッシュメモリ12は第iCPU11の専用資源である。
【0042】
13aは、第(i,1)ローカルキャッシュメモリ12の第(i,1)外部側バス端子12bに接続された第(i,1)ローカル非共有バス、13bは第iCPU11の第(i,1)共有バス端子11aに接続された第(i,1)ローカル共有バスである。
【0043】
14は第iCPU11、第(i,1)ローカルキャッシュメモリ12、第(i,1)ローカル非共有バス13a、第(i,1)ローカル共有バス13bを含む第iプロセッサユニットである。
【0044】
第iプロセッサユニット14は第(i,1)ユニット非共有バス端子14aと第(i,1)ユニット共有バス端子14bをもち、それぞれの端子は第(i,1)ローカル非共有バス13aと第(i,1)ローカル共有バス13bに接続されている。ここでプロセッサユニットの総数をI個とする。14Aは第iプロセッサユニット14の隣にある第i+1プロセッサユニットであり、第iプロセッサユニット14と同一構成である。
【0045】
15aは第1グローバル非共有バスであり、第iプロセッサユニット14の第(i,1)ユニット非共有バス端子14aに接続されている。この第1グローバル非共有バス15aは、各CPUから外部の非共有メモリ19aへ非共有データを転送するためのバスである。各ローカル非共有バス端子14aからのアクセス要求に対して調停を実施する図示せぬバスアービタ装置を備えている。この資源は各CPU(プロセッサユニット)共用である。
【0046】
15bは第1グローバル共有バスであり、第iプロセッサユニット14の第(i,1)ユニット共有バス端子14bに接続されている。この第1グローバル共有バスは、各CPUから外部の共有メモリ19bへの共有データの転送をするためのバスである。この第1グローバル共有バス15bは、各ローカル共有バス端子14bからのアクセス要求に対して調停を実施する図示せぬバスアービタ装置を備えている。この資源は各CPU(プロセッサユニット)共用である。
【0047】
17aは第1非共有インタフェースであり、ここから外部の非共有メモリ19aなどとアクセスする。この資源は各CPU(プロセッサユニット)共用である。
【0048】
17bは第1共有インタフェースであり、ここから外部の共有メモリ19bなどとアクセスする。この資源は各CPU(プロセッサユニット)共用である。
【0049】
上記非共有メモリ19aは非共有データを格納するメモリである。この非共有メモリ19aは各プロセッサユニット専用でなく、各プロセッサユニットで共用であってかまわない。この(共用の)非共有メモリ19aへの各CPUからの書き込み領域は、たとえばアドレスで分割されているものとする。具体的には、たとえば非共有メモリ19aがアドレス0000〜7FFFまでに割り当てられていたとすると、第1CPUはその使用する領域を0000〜0FFF、第2CPUはその使用する領域を1000〜1FFFといった具合に割り当てられているものとする。従って、この例で非共有メモリ19aの領域を0000〜0FFFは第1CPU「専用」になる。
【0050】
19bは共有メモリである。この共有メモリは共有データを格納するためのメモリである。この共有メモリと非共有メモリのアドレスマップ上の領域は重ならないようにする。
【0051】
(上記の構成におけるインタフェースから外の世界の制約)
ここで、第1非共有インタフェース17aと第1共有インタフェース17bから先のバス構成についてはこの発明の本質ではない。従って、あるメモリブロックは第1非共有インタフェース17a経由しか読めないようにしても良いし、また、別のメモリブロックはどちらからも読めるようにしても良い。ただし、共有データがおかれるメモリブロックは第1共有インタフェース経由でアクセスできるようにしておき、非共有データは同じように第1非共有インタフェース経由でアクセスしなければならない。
【0052】
以下、説明のため便宜上共有メモリ19bと非共有メモリ19aが図のように置かれた場合について説明する。
【0053】
(非共有データ・ワークエリアの説明)
本発明は、該当処理しか使わない内容(ワークエリアの内容)をローカルキャッシュで閉じさせ、さらに複数の処理で使用する内容は一つのメモリにのみ書いて各ローカルキャッシュにはいれないようして、書き込み監視処理をなくすことにより高速化及び低コスト化を図るようにしたもので、ここでは、5つのCPUが5科目の平均点を求めるプログラムを例にとって説明する。
【0054】
マルチプロセッサにおけるメモリの内容には書き込み共有すべき内容と書き込み共有する必要のない内容がある。例えば、ある得点データベースがあり、5つのCPUが「英語」「数学」「国語」「理科」「社会」の平均点を求めるものとする。
【0055】
このとき、「英語」の総得点を格納するメモリと、サンプル数を格納するメモリが必要になるが、これらは他の「数学」等の平均点を求めるのには必要がない。これら他の処理に必要でない格納領域を一般にワークエリアという。このワークエリアの内容は、他のCPUが知る必要がないので第(i,1)ローカルキャッシュメモリ12に格納するようにする。
【0056】
この動作を説明する。CPUはワークエリアにアクセスしにいくとき、CPUはこのアクセスを「非共有データ」と判断し、第(i,1)CPU非共有バス端子を選択しアクセスを実施する。第(i,1)ローカルキャッシュメモリ12は、CPUからのアクセス情報に従い、該当アドレスの内容があるかを検索し、あればその内容をCPUに返す。該当アクセスの内容がない場合、キャッシュメモリは第(i,1)ローカル非共有バス13a,第1グローバル非共有バス15a,第1非共有インタフェース17aを経由して、非共有メモリ19aにアクセスを要求する。
【0057】
調停によって、第1グローバル非共有バス15aがあき、第(i,1)ローカルキャッシュメモリ12が非共有メモリ19aの該当アドレスを取り出したとき、第(i,1)ローカルキャッシュメモリ12はその内容のコピーを取り込む。この時、非共有メモリ19aの非共有領域は、各CPUで「専用に」なっているため、他のCPUからの書き込みもなく、各CPUへの影響もない。
【0058】
2回目以降、第(i,1)ローカルキャッシュメモリ12が取り込んだアドレスの内容を持っている間は、第iCPU11は第(i,1)ローカルキャッシュメモリ12にのみアクセスする。また、この第(i,1)ローカルキャッシュメモリ12の内容は他のCPUが知る必要がないので、たとえ第(i,1)ローカルキャッシュメモリ12の内容が書き変わったとしても他のCPUは第(i,1)ローカルキャッシュメモリ12を書き込み監視する必要がない。
【0059】
(共有データの説明とその動作)
一方、このあと各科目の総平均点から、各科目の難易度を知るため、偏差値を取ったとする。このとき、求められた各科目の平均点は偏差値を求めるために必要なので共有すべきである。これら後の他のCPU(他の処理)が必要とする内容は第(i,1)ローカル共有バス13bから第1グローバル共有バス15b、第1共有インタフェース17bを通して共有メモリ19bとアクセスし、ローカルキャッシュメモリ12に格納しない。
【0060】
この動作を説明する。第iCPU11は共有データと判断し、これによって第(i,1)CPU共有バス端子11aを選択する。これに接続されている第(i,1)ローカル共有バス13bから、第iCPU11は第1グローバル共有バス15b,第1共有インタフェース17bを経由して共有メモリ19bにアクセスを要求する。調停によって、第1グローバル共有バス15bがあき、第iCPU11が共有メモリ19bの該当アドレスを取り出す。
【0061】
この動作が書き込みであった場合、書き込み監視装置が要らないことについて説明する。第iCPU11からの書き込みが完了した段階で、共有メモリ19bはもっとも最新の書き込み情報が格納されていることになる。一方、その直後に他のCPUが同じアドレスのデータを共有メモリ19bに読みにいくとき、共有メモリ19bは確実に最新の内容をもっており、他のCPUは最新の内容を得ることができる。また、共有データを取り込むローカルなキャッシュメモリがどこにもないので、これまで並列処理では暗黙の了解となっていた書き込み監視を実施する必要がない。
【0062】
(共有と非共有をわけ、共有をキャッシュメモリに取り込まないことの効果1)
ワークエリアの内容は書き換えの度に他のCPUが書き換えられたことを知る必要がないので、第(i,1)ローカルキャッシュメモリ12はライトスルーキャッシュである必要がなく、ライトバックキャッシュであってよい。つまり、ワークエリアの内容は第(i,1)ローカルキャッシュメモリ12の中で閉じることとなる。通常、ワークエリアのアクセス回数は非常に多い。
【0063】
なお、この第(i,1)ローカルキャッシュメモリ12に書き込む内容は、処理のはじめから終わりまで書き込みを必要としない内容(定数等)も第(i,1)ローカルキャッシュメモリ12経由でアクセスしても良い。これは、内容を変更しないため、他の処理に影響しないからである。
【0064】
(共有と非共有をわけ、共有をキャッシュメモリに取り込まないことの効果2)
共有すべき内容と非共有の内容によってアクセスする内容を分けることにより、第(i,1)ローカルキャッシュメモリ12は監視機能のいらないライトバックキャッシュで良いことが判った。そこで、読み込み1,000,000回、このうち5,000回が共有バス経由、書き込み10,000回、このうち5,000回が共有バス経由とし、ローカルキャッシュ経由の読み書きはライトバックキャッシュを使用したとして、1クロック、共有バス経由の読み書きは4クロックかかるものとすると、この処理にかかる時間は(995,000+5,000)×1+(5,000+5,000)×4=1,004,000クロックとなり、従来の監視機能を必要とする場合の時間1,140,000に比べ約10%程度速くなることが判る。
【0065】
また、従来ではライトスルーキャッシュでしか対応できなかったが、この実施の形態1ではローカルキャッシュはライトバックキャッシュとライトスルーキャッシュのいずれもが使える(性能的にはライトバックキャッシュの方がよいが何らかの設計的理由でライトスルーキャッシュにしてもよい)。
【0066】
(共有と非共有をわけ、共有をキャッシュメモリに取り込まないことの効果3)
先に示したように第(i,1)ローカルキャッシュメモリ12は、マルチプロセッサに関する特殊な書き込み監視を必要としない。これは、高価なマルチマイクロプロセッサ専用のキャッシュメモリを使用せず、汎用のキャッシュメモリを使えることを意味する。この機能を持たないキャッシュメモリを使用することにより、コストを削減できる。
【0067】
実施の形態2.
ライトバックキャッシュ使用、共有キャッシュありの場合
図2は発明の実施の形態2に係るマルチプロセッサ装置を示すブロック図であり、前記図1に示した実施の形態1と同一の部分については同一符号を付して重複説明を省略する。この実施の形態2では第1共有インタフェース17bより内部において第1グローバル共有バス15bの途中に第1グローバル共有キャッシュメモリ16を設けたものである。
【0068】
この構成では、第iCPU11が第1グローバル共有キャッシュメモリ16に書き込みを実施した直後に第(i+1)CPU(不図示)が同じアドレスの内容を読みにいっても、第1グローバル共有キャッシュメモリ16の直前に更新された内容を取り込むことになるので、新しい内容が読み込める。また、第1グローバル共有キャッシュメモリ16を搭載することで処理を更に高速化できる。
【0069】
そこで、共有データの読み書きは、第1グローバル共有キャッシュメモリ16があることにより、2クロックで実施するものとして、実施の形態1と同じ処理で時間を比較すると、処理時間は(995,000+5,000)×1+(5,000+5,000)×2=1,002,000クロックとなり、実施の形態1に比べ若干ではあるが速くなる。しかし、これはあくまでも共有データの読み書きが少ない場合で、一般に、共有データの読み書きが多い場合、実施の形態2の方が速くなる。
【0070】
実施の形態3.
ライトバックキャッシュ使用、インタフェース1個の場合
図3は発明の実施の形態3に係るマルチプロセッサ装置を示すブロック図であり、前記図1に示した実施の形態1と同一の部分については同一符号を付して重複説明を省略する。この実施の形態3では第1グローバル非共有バス15aと第1グローバル共有バス15bを共有インタフェース37を介して共有/非共有メモリ39に接続したもので、この共有/非共有メモリ39は共有/非共有領域が重ならないようになっている。
【0071】
次に動作について説明する。
第iCPU11が非共有データにアクセスする場合、まず第(i,1)CPU非共有バス端子から、第(i,1)キャッシュメモリ12にアクセス要求をする。第(i,1)キャッシュメモリ12は自分自身にアクセスし、内容が存在しない場合は第1グローバル非共有バス15a、共有インタフェース37を経由して共有/非共有メモリ39の第iCPU11の専用の非共有領域にアクセスしにいく。この第iCPU11の「専用の」非共有領域は他のCPUからの書き込みをしないし、第iCPU11自身も他のCPUの領域に書き込みにいかない。また、この第iCPU11専用の非共有領域は、共有領域としての書き込みをしないので、第iCPU11に対して書き込みデータは100%保証される。したがって、当然書き込み監視は要らない。
【0072】
一方、共有データアクセスの場合は、第iCPU11はCPU共有バス端子からアクセスを開始し、第1グローバル共有バス15b、共有インタフェース37を経由して共有/非共有メモリ39の割り当てられた共有領域へアクセスする。共有データが書き込まれた場合、内容は即座に他のCPUの読み込みに反映されるので、書き込み監視は要らない。
【0073】
この方法では共有インタフェース37に共有データと非共有データの両方が通ることになる。しかし特に第(i,1)ローカルキャッシュメモリ12へのヒット率が高く、また、共有データの読み書きが少ない場合、バスの使用率が低くなり、この方法は有効となる。
【0074】
マルチマイクロプロセッサ系を一つのチップに収納したい場合、面積を少しでも小さく設計しなければならない。要求された面積を満足しなければならず、バスを2本も走らすことができない場合、図4に示すように、第1グローバル非共有バス15aと第1グローバル共有バス15bを1つにして第1グローバルバス35とすることができる。この実施の形態3は実施の形態2と同様の効果を示すが、実施の形態3の方がバス使用率が高くなるので、処理がやや遅くなる。
【0075】
実施の形態4.
ライトバックキャッシュ使用、インタフェース1個、共有キャッシュ付きの場合
図5は発明の実施の形態4に係るマルチプロセッサ装置を示すブロック図であり、前記図3に示した実施の形態3と同一の部分については同一符号を付して重複説明を省略する。この実施の形態4では共有インタフェース37より内部において第1グローバル共有バス15bの途中に第1グローバル共有キャッシュメモリ16を設けたものである。
【0076】
このような形態が有効なのはローカルキャッシュメモリ12のヒット率が高く(バス使用率が低く)、また共有データの読み書きが多い場合である。このときに面積縮小を図るためにこのような構成を取ってもよい。この実施の形態4は実施の形態2と同様の効果を示すが、実施の形態4の方がバス利用率が高くなるのでやや遅くなる。
【0077】
また、図6に示すように、第1グローバル非共有バス15aと第1グローバル共有バス15bを1つにして第1グローバルバス35としてもよい。この場合、第1グローバルバス35の途中に設けた第1グローバルキャッシュメモリ16は非共有データも取り込むこととなるため、なるべく大容量の方がよい。なお、この実施の形態4も原理的には実施の形態3と同じなので、書き込み監視は一切必要としない。
【0078】
実施の形態5.
再帰的構成の場合
図7は発明の実施の形態5に係るマルチプロセッサ装置を示すブロック図であり、この実施の形態5では実施の形態1に示すプロセッサユニット14,14A・・の複数により再帰プロセッサユニット54,54Aを構成したものである。54aは第1(再帰)ユニット非共有バス端子であり、これは第(i,1)ユニット非共有バス端子14aと同等、54bは第1(再帰)ユニット共有バス端子であり、これは第(i,1)ユニット共有バス端子14bと同等である。
【0079】
55aは第1(再帰)グローバル非共有バスであり、これは第1グローバルバス15aと同等、55bは第1(再帰)グローバル共有バスであり、これは第1グローバル共有バス15bと同等である。
【0080】
57aは第1(再帰)非共有インタフェースであり、これは第1非共有インタフェース17aと同等、57bは第1(再帰)共有インタフェースであり、これは第1共有インタフェース17bと同等である。
【0081】
図から明らかなように、実施の形態1のプロセッサユニット14と、再帰プロセッサユニット54の構造は再帰的に同じであることが判る。この結果、更にこの再帰プロセッサユニット54を1つのプロセッサユニットとして、二重、三重の再帰が可能となる。また、再帰プロセッサユニット54を実施の形態1の場合で示したが、実施の形態2をベースにした構成にしてもよい。このように、再帰を行うことにより目的に合わせて多様な構成が組める。
【0082】
実施の形態6.
非共有バスの多バス化
図8は発明の実施の形態6に係るマルチプロセッサ装置を示すブロック図であり、前記図1に示した実施の形態1と同一の部分については同一符号を付して重複説明を省略する。また、この実施の形態6では実施の形態1について述べるが実施の形態2〜4でも同じことができるので、これら形態の説明は省略する。
【0083】
第iCPU11は2つのCPU非共有バス端子11b,11cを持っている。従来分を第(i,1)CPU非共有バス端子11b、増設分を第(i,2)CPU非共有バス端子11cとする。62は第(i,2)CPU非共有バス端子11cに接続した第(i,2)ローカルキャッシュメモリであり、その機能は第(i,1)ローカルキャッシュメモリ12と変わらない。この第(i,2)ローカルキャッシュメモリ62は第(i,2)CPU側バス端子62aと第(i,2)バス側バス端子62bをもつ。第(i,2)CPU側バス端子62aは第iCPU11の増設された第(i,2)CPU非共有バス端子11cに接続されている。63aは第(i,2)ローカル非共有バスであり、増設された第(i,2)ローカルキャッシュメモリ62の第(i,2)バス側バス端子62bに接続されている。
【0084】
第iプロセッサユニット14は増設された第(i,2)ユニット非共有バス端子14cを持ち、第(i,2)ローカル非共有バス63aが接続されている。65aは増設された第2グローバル非共有バス、67aは増設された第2非共有インタフェース、69aは第2非共有インタフェース67aに接続された第2非共有メモリである。
【0085】
なお、図示しないが第1非共有メモリ19aおよび第2非共有メモリ69aは、共有データ格納用メモリとして第1非共有インタフェース17aまたは第2非共有インタフェース67aからアクセスできるようにしてもよい。また、それぞれのグローバルインタフェースに他の装置がつながっていてもかまわない。
【0086】
次に動作について説明する。
例えば、キャッシュメモリが2つ分のアドレス情報を格納することができるときに3つ以上のアドレスを読み出す場合、パージが起こりやすくなる。パージが発生すると、第1グローバル非共有バス15aの使用率が高くなり混雑する。ここで、混雑するというのは第iCPU11が第1グローバル非共有バス15aを使用したいのに他のCPUが第1グローバル非共有バス15aを使用しているため、使用できず、自分が使用できるまで待たなければいけない状態をいう(この状態ではCPUが待たされるため処理能力が落ちる)。
【0087】
このような、非共有データのためのアドレスを多く使用し、かつ第(i,1)ローカルキャッシュメモリ12の容量が小さい結果、パージが発生し、バスが混雑する場合、この実施の形態6のように第2グローバル非共有バス65aを増設することによりバス負荷を軽減できる。
【0088】
第iCPU11は、非共有データをアクセスするときに、従来分、増設分のどちらのバスを使用するかを選択する。この選択の最も簡単な方法はアドレスが偶数/奇数によって振り分ける方法がある。仮に第(i,2)非共有バス端子を選択したとして、第iCPU11は第(i,2)ローカルキャッシュメモリ62を通して第2非共有インタフェース67aを通って第2非共有メモリ69aにアクセスする。
【0089】
一方、このとき第(i+1)CPU(不図示)等の他のCPUが第1グローバル非共有バス15aから第1非共有インタフェース17aを通って第1非共有データ格納用メモリ19aへ行くパスはあいている。その結果、他のCPUがこのパスを使用することができる。
【0090】
この実施の形態6では、バス使用のタイミングもあるが、2つのCPUが非共有データ用メモリにアクセスできる。その結果、待ち時間が減り、バスの混雑度が減り、処理速度が向上する。ここでは、グローバル非共有バスを1本増設した場合について述べたが、同じ様にバスの数を増やせばより混雑度が減る。このような構成は多チップで構成するよりも系全体で1チップ構成した方がよい。理由として、1つのチップの出入口(ピン)は現在の技術では高々300本程度であり、無限にバスを増やすことができないからである。
【0091】
ここで、一般にプロセッサユニットの数(CPUの数)以上のバスを増設しても意味はない。例えば10CPUのために100本バスを用意しても一度に使用するバスの数が高々CPUの数(10本)なので残り90本は未使用の状態になる。一般に、最適なバスの数は以下のように表せられる。
グローバルバス数=CPU×(単位時間内の平均非共有データアクセス数×アクセス時間/単位時間)
【0092】
実施の形態7.
共有バスの多バス化
図示しないが、実施の形態6を応用し、グローバル共有バスの多バス化をしてもよい。この場合も実施の形態6と同じ効果が期待できる。
【0093】
実施の形態8.
遅い周辺機器のための外部I/Oバス
図9はこの発明の実施の形態8に係るマルチプロセッサ装置を示すブロック図であり、前記図1に示した実施の形態1と同一の部分については同一符号を付して重複説明を省略する。
【0094】
11は第iCPUである。この第iCPU11は第(i,1)CPU外部装置バス端子11dをもつ。73cは第(i,1)ローカル外部装置バスで、第(i,1)CPU外部装置バス端子11dに接続されている。14は第iプロセッサユニットであり、新たに第(i,1)ユニット外部装置バス端子14dが増設され、内部で第(i,1)ローカル外部装置バス73cに接続されている。75cは第1グローバル外部装置バスである。この第1グローバル外部装置バス75cは、それぞれの第iプロセッサユニット14の第(i,1)ユニット外部装置バス端子14dに接続されている。77cは第1外部装置インタフェース、79Cは外部装置である。この外部装置79Cはアクセス時間が非常にかかるものとする。
【0095】
バスの停止の説明
この実施の形態8では、遅い外部装置79Cにアクセスしたことによるバスの停止を回避することができる。ここでバスの停止について説明する。実施の形態1のような回路で、共有インタフェース17bの外に遅い外部装置19bがあり、そのアクセス時間が10,000クロックであったとする。第1CPUが第1グローバル共有バス15bを通して、この遅い外部装置19bにアクセスしたとき、他のCPUは、第1CPUのアクセスが終了するまで第1グローバル共有バス15bを使用できない。
【0096】
その結果、他のCPUが第1グローバル共有バスをアクセス使用とすると、第1CPUのアクセス完了まで最悪10,000クロック待たされることになる。アクセス完了までの間は誰も何もすることができなくなるためバスが停止した状態になる。最悪例としてCPUが10個あったとして、各CPUは1,000,000クロックの間に1回外部装置のアクセスを実施したとする。外部装置アクセスのための時間は10,000クロック×1[回]×10[CPU]=100,000クロックとなり、約10%の時間がバスの停止時間となってしまう。この結果、全てのCPUは最大10%程度の速度下が起こる。この実施の形態8では、このようなバスの停止を回避するため、外部装置用のバスを増設したものである。
【0097】
次に動作について説明する。
第iCPU11はアクセスする番地情報から(または命令から)、この番地が外部装置79cに割り当てられた番地かを判断する。外部装置79cに割り当てられた番地であると判断した場合、第iCPU11は第(i,1)CPU外部装置バス端子11dからアクセスを開始して、これが第iプロセッサユニット14の増設された第(i,1)ユニット外部装置バス端子14dを通り、第1グローバル外部装置バス75c、第1外部装置インタフェース77cを通って外部装置79cにアクセスすることになり、このときは第1グローバル共有バス15bと第1グローバル非共有バス15aは一切使用しない。
【0098】
この結果、他のCPUが共有/非共有データをアクセスしにいっても全くバスの停止に巻き込まれることなく、速度を落とさずに処理を実行し続けることができる。また、この実施の形態8では実施の形態1について述べたが、別に実施の形態1に限ったことでなく、実施の形態2〜4でも同じことが言える。また、実施の形態5のように再帰的構成も可能で、実施の形態6又は実施の形態7のようにバスを多重化することもできる。
【0099】
実施の形態9.
非共有データをローカルメモリに入れる。
図10はこの発明の実施の形態9に係るマルチプロセッサ装置を示すブロック図であり、前記図1に示した実施の形態1と同一の部分については同一符号を付して重複説明を省略する。
【0100】
ここで、非共有データ、その中でもワークエリアはある一定の番地にのみアロケートさせるようにしておく。CPUがワークエリアにアクセスするとき、番地情報から第(i,1)ローカルメモリ86にアクセスするようにする。この第(i,1)ローカルメモリ86は第iCPU11の専用となる。ワークエリア自体は該当処理(CPU)で閉じているので、別に外に出す必要がない。外に出す必要がなければ第1グローバルバス35を使用しなくても良い。その結果、バス使用率が極端に減ることになる。
【0101】
また、ワークエリアのためのローカルメモリ86が小さい場合、第1グローバルバスにぶらさがったメモリをワークエリアとして使用してもよい。また、図11のようにローカルメモリ86が遅い場合は第(i,1)ローカルキャッシュメモリ12を通してアクセスさせるようにしても良い。いずれにせよこの実施の形態9では、バス使用率が下がるので、より高速化が期待できる。バス使用率が下がると、実施の形態3又は4を実施するのに有利となる。この実施の形態3又は4を実施することは面積縮小につながる。図10、図11はこの観点から実施の形態3をベースにしている。実施の形態3をベースにした場合、非常に簡単な構成になる。
【0102】
実施の形態10.
共有/非共有の判定方法1 〜アドレスによる判定 その1〜
これまでは、CPUが共有/非共有を判定できることを前提にして実施の形態を記述してきたが、この実施の形態からは、これまでの実施の形態を構成するに当たり、どのようなCPUが適当であるか、または一般のCPUであってもどのような周辺回路をつければよいかについて説明する。
【0103】
図12はこの発明の実施の形態10に係るマルチプロセッサ装置を示すブロック図であり、11は実施の形態1の(あるいはこれをベースとした実施の形態の)CPUである。101は第iCPU本体部である。この第iCPU本体部101自体は共有/非共有の判定をする機能を必要とはしない。第iCPU本体部101はアクセスしようとする番地を示す第iCPU本体アドレスバス端子101a、番地から読み出した情報を搬送し、又は書き込む情報を伝達する第iCPU本体データバス端子101b、読む、又は書く等の第iCPU本体制御情報を出力する第iCPU本体制御バス端子101cを有する。
【0104】
102は第iアドレス共有/非共有バス選択装置で、CPU本体部101の第iCPU本体アドレスバス端子101aに接続された第iCPUアドレス選択装置CPU側端子102a、第iアドレス選択装置共有側端子102b、第iアドレス選択装置非共有側端子102c、第iアドレス選択装置判定入力端子102dを有する。この第iアドレス共有/非共有バス選択装置102は第iアドレス選択装置判定入力端子102dに「共有」という情報が入れば、第iCPUアドレス選択装置CPU側端子102aと第iアドレス選択装置共有側端子102bを接続し、第iアドレス選択装置判定入力端子102dに「非共有」という情報が入れば、第iCPUアドレス選択装置CPU側端子102aと第iアドレス選択装置非共有側端子102cを接続する。
【0105】
103は第iデータ共有/非共有バス選択装置で、CPU本体部101の第iCPU本体データバス端子101bに接続された第iCPUデータ選択装置CPU側端子103a、第iデータ選択装置共有側端子103b、第iデータ選択装置非共有側端子103c、第iデータ選択装置判定入力端子103dを有する。この第iデータ共有/非共有バス選択装置103は第iデータ選択装置判定入力端子103dに「共有」という情報が入れば、第iCPUデータ選択装置CPU側端子103aと第iデータ選択装置共有側端子103bを接続し、第iデータ選択装置判定入力端子103dに「非共有」という情報が入れば、第iCPUデータ選択装置CPU側端子103aと第iデータ選択装置非共有側端子103cを接続する。
【0106】
104は第i制御共有/非共有バス選択装置で、CPU本体部101の第iCPU本体制御バス端子101cに接続された第iCPU制御選択装置CPU側端子104a、第i制御選択装置共有側端子104b、第i制御選択装置非共有側端子104c、第i制御選択装置判定入力端子104dを有する。この第i制御共有/非共有バス選択装置104は第i制御選択装置判定入力端子104dに「共有」という情報が入れば、第iCPU制御選択装置CPU側端子104aと第i制御選択装置共有側端子104bを接続し、第i制御選択装置判定入力端子104dに「非共有」という情報が入れば、第iCPU制御選択装置CPU側端子104aと第i制御選択装置非共有側端子104cを接続する。
【0107】
第iCPU11は第(i,1)CPU側共有バス端子11aと第(i,1)CPU側非共有バス端子11bを有する。この第iCPU11の第(i,1)CPU側共有バス端子11bからの配線は、第iCPU11の内部でアドレス、データ、制御の3つに分けられ、それぞれ第iアドレス共有/非共有バス選択装置102の第iアドレス選択装置共有側端子102b、第iデータ共有/非共有バス選択装置103の第iデータ選択装置共有側端子103b、第i制御共有/非共有バス選択装置104の第i制御選択装置共有側端子104bに接続されている。
【0108】
また、第iCPU11の第(i,1)CPU側非共有バス端子11aからの配線は、第iCPU11の内部でアドレス、データ、制御の3つに分けられ、それぞれ第iアドレス共有/非共有バス選択装置102の第iアドレス選択装置非共有側端子102c、第iデータ共有/非共有バス選択装置103の第iデータ選択装置非共有側端子103c、第i制御共有/非共有バス選択装置104の第i制御選択装置非共有側端子104cに接続されている。
【0109】
105は第i共有/非共有判定装置であり、第iCPU本体アドレスバス端子101aに接続されたアドレスバス入力端子105aを有するとともに、第iアドレス共有/非共有バス選択装置102、第iデータ共有/非共有バス選択装置103、及び第i制御共有/非共有バス選択装置104のそれぞれの第iアドレス選択装置判定入力端子102d、第iデータ選択装置判定入力端子103d、第i制御選択装置判定入力端子104dに接続された第i選択判定出力端子105bを有する。この第i共有/非共有判定装置105は固定された回路でよい。
アクセスする番地情報で共有/非共有を分ける
【0110】
この実施の形態10は、共有又は非共有をアクセスするアドレス(番地)から知るという非常にシンプルな方法である。ユーザーはあらかじめ共有データを置くアドレス(例えば0000番地〜7FFF番地)、非共有データを置くアドレス(例えば8000番地〜FFFF番地)と分けておく。ユーザーは、この分けた番地情報に従ってプログラムを作成する。第iCPU本体部101はプログラム解読中にデータアクセス命令を受け取ると、制御バス入出力から「リード」又は「ライト」という情報を出力し、かつリードの場合はアドレスバス入出力からアクセスするアドレスを出力し、ライトの場合はアドレスバス入出力からアクセスするアドレスを出力すると共に、データバス入出力から書き込むデータを出力する。
【0111】
次に、第i共有/非共有判定装置105は第iCPU本体部101が出力したデータ情報を受け取り、これが共有されたデータの割り当てられたアドレスか非共有データの割り当てられたアドレスかを判定する。その結果を第i選択判定出力端子105bを通して第iアドレス共有/非共有バス選択装置102、第iデータ共有/非共有バス選択装置103、及び第i制御共有/非共有バス選択装置104のそれぞれの第iアドレス選択装置判定入力端子102d、第iデータ選択装置判定入力端子103d、第i制御選択装置判定入力端子104dに「共有データにアクセスした」「非共有データにアクセスした」という情報を伝達する。第iアドレス共有/非共有バス選択装置102、第iデータ共有/非共有バス選択装置103、及び第i制御共有/非共有バス選択装置104は、この結果に応答してバスを接続する。
【0112】
上記のように共有/非共有を、その割り付ける番地によって分けることは、第i共有/非共有判定装置105の論理回路の単純化に非常に有効である。0000〜7FFFと8000〜FFFFで共有/非共有を分けた場合、第i共有/非共有判定装置105はアドレスの最上位線にせいぜいインバータを一つ加えれば実現できる。このように、共有/非共有を分ける機能的負荷はそんなに多くない。その結果、従来例に比べ、機能的負荷の削減ができることになる。
【0113】
また、第iCPU本体部を一般の共有・ 非共有の判定をもたないCPUにおきかえ、各共有/非共有判定装置および判定装置を周辺回路としてもよい。通常の(共有/非共有の判定をもたない)CPUに置き換えることができるため安価な部品で作成できる。各共有/非共有判定装置105は、単なるセレクタであるので、部品としては増えるが安価なもので作成できる。ただしこの方法はCPU作成時に作り込むことになるため、ユーザーは共有と非共有のメモリ割り当てを変更できない。
【0114】
実施の形態11.
共有/非共有の判定方法2〜アドレスによる判定 その2〜
図13はこの発明の実施の形態11を示すもので、この実施の形態11では、共有/非共有判定装置として、入力をアドレス、出力をそのアドレス(ブロック)に対する共有/非共有を格納した第i共有/非共有判定RAM115を使用している。
【0115】
この実施の形態11では、アクセスしようとする番地の上位(例えば8bit)を高速な第i共有/非共有判定RAM115に入力する。第i共有/非共有判定RAM115には該当番地が共有であるか非共有であるかの情報が納められ、その結果をそのまま共有/非共有決定線に伝達する。図示しないが、この第i共有/非共有判定RAM115の情報を書き換えるのは簡単で、例えば上位8bitが“00”であれば第i共有/非共有判定RAM115にアクセスできるようにしておく。
【0116】
このようにすることにより、ユーザーがある程度の共有/非共有領域を指定できる。ただし、いくらでも第i共有/非共有判定RAM115が大きければ問題はないが、第i共有/非共有判定RAM115は有限である。その結果、1バイト単位に共有/非共有判定を設定することはまず不可能である。また、この方法であれば、アドレスの上位しか見ていないため、固定されたブロック境界、固定された長さしか指定できない。
【0117】
実施の形態12.
共有/非共有の判定方法3〜アドレスによる判定 その3〜
図14はこの発明の実施の形態12を示すもので、第iCPU本体部101はアクセスしようとする番地を示す第iCPU本体アドレスバス端子101a、番地から読み出した情報を搬送し、又は書き込む情報を伝達する第iCPU本体データバス端子101b、読む、又は書く等の第iCPU本体制御情報を出力する第iCPU本体制御バス端子101cを有する。
【0118】
127は第iアドレスデコーダである。この第iアドレスデコーダ127は、番地によってアクセスする装置を決定するもので、「JdgReg」「PTbl」「Other」という信号線を持つ。この実施の形態では、0000−00FF番地が指定されれば「JdgReg」に“許可”という信号を送り、0100−03FFであれば「PTbl」信号に“許可”という信号を送り、それ以外の場合には「Other」に“許可”を送る。これら出力は各装置の動作を制御することになるので、図中では制御信号線のひとつとして扱う。
【0119】
第iアドレス共有/非共有バス選択装置122、第iデータ共有/非共有バス選択装置123、及び第i制御共有/非共有バス選択装置124は、それぞれ動作許可端子Enをもち、この動作許可端子Enに“許可”という入力が入れば、実施の形態10で説明した動作をし、入力信号が“許可”でなければ、第iCPU本体部101の第iCPU本体アドレスバス端子101a、第iCPU本体データバス端子101b、第iCPU本体制御バス端子101cを各第iアドレス・データ・制御選択装置共有側端子、第iアドレス・データ・制御選択装置非共有側端子のどちらにも接続しない。
【0120】
この装置の動作許可端子Enは第iアドレスデコーダ127の「Other」端子と接続され、第iCPU本体部101が0400−FFFFにアクセスする場合に接続動作し、0000−03FFの場合はすべてのバスを切り離す。
【0121】
第i共有/非共有判定装置125は、アドレス入力端子125aとデータ入力端子125bと制御入力端子125cを持ち、これは第iCPU本体部101の第iCPU本体アドレスバス端子101a、第iCPU本体データバス端子101b、第iCPU本体制御バス端子101cに接続されている。この装置はCPU本体制御バスの「JdgReg」という信号線に接続されている。この装置は、ラッチを一つ持ち、CPUが0000−00FFをアクセスするときに第iアドレスデコーダによって「JdgReg」端子から“許可”信号が出力されることにより動作し、この時にアクセス可能となる。
【0122】
126は第iポインタテーブル格納メモリである。この装置はアドレス入力端子126aとデータ入力端子126bと制御入力端子126cを有し、これは第iCPU本体部101の第iCPU本体アドレスバス端子101a、第iCPU本体データバス端子101b、第iCPU本体制御バス端子101cに接続されている。この装置はCPU本体制御バスの「PTbl」という信号線に接続されている。この装置は、ラッチを一つ持ち、CPUが0100−03FFをアクセスするときに第iアドレスデコーダ127によって「PTbl」端子から“許可”信号が出力されることにより動作し、この時にアクセス可能となる。
【0123】
より説明をわかりやすくするために、第iCPU本体部101から見たときのこの実施の形態12のメモリマップを第15図に示す。
【0124】
この実施の形態12はメモリ管理を「ハンドル」と呼ばれる方法でソフトウェア的に実施しているコンピュータ構成(この内容についてはApple Computer編集、「Inside Macintosh Vol I,II」(バークレイ出版)に詳しく記述されている)に適用している。
【0125】
まず、メモリの一部分をブロックとして使用する場合(例えば、0400〜04FF番地)、ポインタテーブルにそのメモリブロックの先頭番地(0400番地)とその長さ(256Byte=0100(Hex)Byte)を組にしてポインタテーブルのとある番地(ここで0010番地に「0400」、0014番地に「0100」)を記述する。このメモリブロックにアクセスするときは、ソフトウエア的にメモリブロックの先頭番地の内容の置かれたポインタテーブル上の番地(0010番地)でアクセスするものである。ポインタテーブル上の番地を「ハンドル」という。故に、ユーザーの作成したプログラムがこのメモリブロックのある場所(先頭から8番目)にアクセスするときはハンドル(0010番地)の内容(0010番地の内容は0400)を読み込み、更にこの内容(0010番地の内容である0400番地)からの加算値(8−1)を足した番地(0407番地)にアクセスしにいく。この実施の形態で使用されるコンピュータ構成はこれらを全てソフトウェアで実施する。
【0126】
この実施の形態は、このポインタテーブルの情報に「共有/非共有」bitを加えたもので、この共有/非共有bitを加えた場合の動作を図16において説明する。ユーザーの作成したプログラムがこのメモリブロックのある場所(先頭から8番目)にアクセスするときはハンドル(0010番地)の内容(0010番地の内容は0400)を読み込む(ステップST121)。
【0127】
このとき、第iアドレスデコーダ127は第iポインタテーブルにのみアクセスを“許可”し、第iCPU本体部101はポインタテーブルから番地0100の内容を読み込むことができる。 一方、 第iアドレス共有/非共有バス選択装置122、第iデータ共有/非共有バス選択装置123、及び第i制御共有/非共有バス選択装置124は、動作許可されていないのでバスを切り離す。次に、同様に共有bitを読み込む(ステップST122)。
【0128】
この次に、読み込んだ共有情報を(0000−00FFの任意の番地にアクセスすることにより)第i共有/非共有判定装置125にアクセスする(ステップST123)。このとき、各共有/非共有バス選択装置122,123,124は依然バスを切り離したままである。
【0129】
最後のステップST124で、第iCPU本体部101がハンドルの内容(0010番地の内容である0400番地)からの加算値(8−1)を足した番地(0407番地)にアクセスしにいくとき、アドレスデコーダによって各共有/非共有バス選択装置122,123,124は動作を開始し、共有または非共有を判定することにより所望のバスへ接続する。
【0130】
(更に境界自由度を持たせられる)
この実施の形態12と実施の形態11とを見比べた場合、実施の形態11では、固定された境界及び長さでの共有/非共有のみが設定できたが、この実施の形態12では任意の境界(先頭番地)及び任意の長さで共有、非共有の設定をすることができる。なお、この実施の形態12の注意点として、他のCPUの非共有領域にアクセスしないようにしなければならない。また、共有/非共有の判定はCPUがソフトウェア的に担当する(ハード的に担当することはむづかしい)ことになるため、メモリアクセスがやや遅くなる。
【0131】
図示しないが、内部のとあるレジスタの書き込み内容をそのまま即座に外部へ出力できる第iCPU本体部101(というCPU部品)であれば、第i共有/非共有判定装置125をこのレジスタでかねることができ(たとえばレジスタBとする)、その結果、ステップST123が省略できるため高速となる。同様のことをチップとして構成する場合、第iCPU本体部101からアルミ配線をたった一本引き出して各共有、非共有選択端子に接続してやれば可能である。
【0132】
なお、この例でメモリブロックの確保・削除・変更が発生した場合について簡単に述べる。ポインタテーブルは本来各CPUの共有情報であるが、このシステム系でポインタテーブル情報はよく参照される場合が多く、メモリブロックの確保・削除・変更(以下変更のみで説明)に伴う書き込みされることはまれである。メモリブロックの変更があった場合、その変更を発生したCPUがあらかじめ共有領域のどこかに変更したハンドルとその内容を書いておき、その後で全CPUに一斉に割り込みをかけさせ、全CPUがその内容をよむことにより第iポインタテーブル格納メモリ126の内容を改定すればよい。
【0133】
実施の形態13.
共有/非共有の判定方法4〜アドレスによる判定 その4〜
実施の形態10〜12では、単体使用CPU(CPU本体部)をそのまま使用して実施の形態1〜9に示すマルチプロセッサ装置に適用する方法を記述した。実施の形態13では単体使用CPU自体に必要な機能を載せて改良することにより、マルチプロセッサ装置に適用する場合を述べる。
この実施の形態13では、単体使用CPU(CPU本体部)はセグメントにてメモリ管理を実施するCPUについて、共有/非共有判定を実施するための改良適用法について述べる。セグメント自体は実施の形態12のメモリブロックとかわらない。セグメントはセグメントディスクリプタ(図15に示す実施の形態12のポインタテーブルに相当する)によって記述され、セグメントディスクリプタは先頭番地(例えば0400番地)、長さ(例えば0100バイト)、ステータス情報bit等をもつ。セグメントディスクリプタはセグメントディスクリプタテーブル(実施の形態12のポインタテーブルに相当)に配置され、それぞれにセグメント番号(0,1,2,...で与えられ、実施の形態12のハンドルに相当)が打たれている。CPUがメモリにアクセスする場合は、1命令で、このセグメント番号(例えば7)の格納アドレスから先頭番地(セグメント7の先頭番地、0400番地)とステータスビットを読み込み、更にその番地(0400番地)からの相対番地(8−1)を加算して(0407番地)メモリにアクセスしにいく。そしてこの方法の特徴的なことはソフトウェア的には1命令でハード的にこの処理を実施することである。
【0134】
(単体CPU(CPU本体部)の改定方針)
しかし、一般的にこのようなセグメント管理によってメモリアクセスを実施するCPUは、外部に対して「セグメントを読む」か「セグメントデイスクリプタを読む」かを出力しない。また、いま「どのセグメントをよんでいるか」を出カしない。このため、外部でセグメントによる共有/非共有判定ができない。安易な方法として、実施の形態10をべースにして共有するセグメントを共有領城に、非共有セグメントを非共有領域に配置する方法が簡単であるが、融通が効かない。
【0135】
実施の形態12のようにメモリアクセス時にソフトウェア的に共有/非共有装置に書きこむようにすると、今度は過去の豊富なソフトウェア互換性がなくなる。そこで、この実施の形態ではブラックボックスとなっているCPUから、機能上もっていて中で閉じている配線を外部に引き出すという簡単な改訂を実施することにより、この単体のCPUにも共有/非共有判定ができるようにしたものである。
【0136】
図17は実施の形態13によるマルチプロセッサ装置を示すブロック図であり、図において、386はセグメントによってメモリにアクセスするCPU本体部である。このCPU本体部386は、セグメントディスクリプタテーブルを読みにいくか、これ以外を読みにいくかを決定する“Sgr”端子131dを持っ。このSgr端子131dはセグメントディスクリプタテーブルを読みにいくときは“ReadSGT”という情報を電気的に出力し、一方でセグメントを読みにいくときは“AccMem”という情報を出力する。CPU本体部386は、Sgr端子131dがAccMemの情報を出力するとき、アクセスするセグメント番号を出力するためのセグメント番号出力“SN0”端子131eをもつ。
【0137】
このSN0端子131eはCPUが実際にメモリをアクセスする(Sgr:AccMem)ときにセグメント番号を出力する。機能上、これらの端子に相当する信号はCPU本体部内に存在するはずであり、これらをアルミ配線で引き出すことはそんなに労力はかからない。
【0138】
136はセグメントディスクリプタテーブルで、RAMである。このセグメントディスクリプタテーブルは“許可(EN)”信号をもち、CPU本体部386のSgr端子131dに接続されている。セグメントディスクリプタテーブル136は“許可(EN)”入力が“ReadSDT”となったとき(Sgr:ReadSDTになったときで、CPUがセグメントディスクリブタテーブルを読みにいったとき)に動作し、CPUの要求に対してセグメントディスクリプタを出力する。許可ENがReadSDT以外のときは何もせず何も出力しない。
【0139】
135は共有/非共有判定装置でRAMであり、セグメント番号を入力端子135aと共有/非共有判定出力端子135bをもつ。この共有/非共有判定装置自体は実施の形態11と変わらず、差分は入力がアドレスの上位8ビットではなく、CPU本体部386のSN0端子から出力される(アクセスする)セグメント番号である。実施の形態11と同じように、共有/非共有判定装置135は、入力されたセグメント(実施の形態11でいうアドレス上位8ビット)に対応する共有/非共有情報をもっており、与えられたセグメント番号の共有/非共有情報を共有/非共有判定出力に出力する機能をもつ。
【0140】
122,123,124の各共有/非共有バス選択装置は、動作許可端子を持つが、この動作許可端子はCPU本体部386のSgr端子に接続され、動作許可端子が“AccMem”であれば共有/非共有判定入力の情報にしたがってバス接続を実施し、動作許可信号がこれ以外の場合には動作せず、すべてのバスを切り離す。
【0141】
次に動作について説明する。
CPU本体部386は1つのソフトウェア的メモリアクセス命令でセグメントディスクリプタテーブルを読むという動作とセグメント自体にアクセスする動作を実施する。まず、CPU本体部386がセグメントディスクリプタテーブル136にアクセスする揚合、CPU本体部386は所定のアクセス手順にしたがってメモリアクセス要求を出力するとともに、Sgr端子131dから“ReadSDT”という信号を出カする。各共有/非共有バス選択装置122,123,124は、Sgr端子131dに接続された動作許可信号に入力される信号が“ReadSDT”であるため、動作せず、すべてのバスを切り離す。共有/非共有判定装置135は動作するかもしれないが、各共有/非共有バス選択装置122,123,124が動作しないため、出力は無効となる。一方、セグメントディスクリプタテーブル136は、EN信号が“ReadSDT”となるため動作を開始し、CPU本体部386に対してセグメントディスクリプタを送信する。
【0142】
次に、CPU本体部386がセグメントにアクセスする場合、CPU本体部386のSgr端子131dから“ReadMem”が出力されるとともにSN0端子131eからアクセスするセグメントの番号が出力される。このときセグメントディスクリプタテーブル136はEN信号が“ReadMem”であるため動作せず、何も出力しない。一方、共有/非共有判定装置135はCPU本体部386のSN0端子131eから出力されたセグメント番号を入力し、RAMとして中に蓄えられている情報から、該当セグメントの共有/非共有判定を出力する。各共有/非共有バス選択装置122,123,124は動作許可端子に“AccMem”が入力されているため、それぞれの共有/非共有判定入力からの結果に従い、各バスの接続を行う。このとき、ソフトウェア的には何も変更の必要がない。
【0143】
この実施の形態13によれば、単体使用のCPU(CPU本体部)に最小限の、しかもなるべく労力の少ない改訂を実施することにより、共有/非共有の判定を可能にした。この実施の形態13の場合、ここでいう労力とは“Sgr”端子131dに相当する端子を出すことと、“SN0”端子131eに相当する端子を出すことで、アルミ配線を外に出す以外の労カはない。しかも、これら端子は機能上、上記セグメント管埋を実施する単体使用のCPUには存在するはずで、さらに単体のCPUの機能を搭載する必要がない。その結果、比較的安く改訂できる。
【0144】
また、上記の方法であれば、内部および外部のハード的な付加はあってもソフトウェア的には何も付加するものはない。これはこれまでの過去のソフトウェア資産を承継できることを意味する。また、実施の形態10にセグメント管理を実施する単体のCPUを載せた場合は共有するセグメントは共有領域に、非共有のセグメントは非共有領域に置くという制約がついていたが、この実施の形態13ではそのような制約がなくなり、融通が利くという利点がある。
【0145】
なお、ここでも実施の形態12と同じく、セグメントの生成、変更、消去という処理およびこれに伴う共有/非共有判定装置135内の整合性を保った情報の変更がありうるが、これについては処理中まれに起こることと、特許の本質ではないため説明を省略する。
【0146】
実施の形態13ではCPU本体部386は、単体のチップであることを前提としたが、図18に示すように、別に共有/非共有判定装置135を含んだものでもよい。この結果、CPU本体部386は“Sgr”端子と“共有/非共有判定”端子131fをもつこととなる。
【0147】
実施の形態13ではCPU本体部386は、単体のチップであることを前提としたが、図19に示すように、別に共有/非共有判定装置135およびセグメントディスクリブタテーブル136を含んだものでもよい。この結果、CPU本体部386は“共有/非共有判定”端子131fのみをもつこととなる。
【0148】
図18、図19に示した共有/非共有端子131fは共有/非共有判定装置135というRAMによって決定されるものでなくてもよい。たとえば固定された回路であってもよい。また、実施の形態13以降で内部に組み入れられた共有/非共有判定装置135はセグメントで判断するように適用したが、これ以外の判断材料であってもよい。
【0149】
以上、実施の形態13では共有/非共有の判定をセグメント番号によって判定するCPUを用いて、この発明のCPUおよびキャッシュ構成に適用した。図18、図19では共有/非共有判定装置135はCPUの中に設けてもよいことを示した。また、共有/非共有判定装置135は固定されたものであってもよいとしたが、命令によって共有/非共有を分けるようにしてもよい。
【0150】
実施の形態14.
(複合システム)
第20図は実施の形態14によるマルチプロセッサ装置を示すブロック図である。この実施の形態14は実施の形態4、実施の形態8をべースにしたもので、図において、171は実施の形態12のCPUである。172は実施の形態13のCPUである。
【0151】
この実施の形態14は、9個以上の異なるコンピュータシステムを一つのシステムとして融合させる方法である。この実施の形態14を便用すれば、図で明らかなように2個以上のコンピュータシステムを一つのシステムとして融合することが可能である。この効果として、2個のシステムで一つのデータを共有することができる。このCPUは、別に実施の形態12、実施の形態13に限ったものでなくてもよい。最低でも、共有データと非共有データをはっきりと分けて、これに応じてバスを選択することのできるCPUであれば、この発明によるCPUおよびキャッシュ構成を組める。
【0152】
【発明の効果】
以上のように、この発明によれば、CPUで共有データ又は非共有データを分け、これに応じてバスを分けるように構成したので、キャッシュメモリから書き込み監視機能を取り除くことが出来るため、キャッシュメモリの負荷削減及び高速化が可能となり、かつキャッシュメモリもライトバック機能を持ったものに変更できるという効果がある。
【0153】
この発明によれば、共有データバスにキャッシュメモリを備えるように構成したので、より高速化を図ることができる効果がある。
【0154】
この発明によれば、共有バスとグローバルバスを一つにするように構成したので、チップ面積を縮小することができる効果がある。
【0155】
この発明によれば、キャッシュメモリを備えた共有バスとグローバルバスをつなぐように構成したので、チップの面積を縮小することができる効果がある。
【0156】
この発明によれば、CPUで共有データ又は非共有データを分け、これに応じてバスを分けるように構成したプロセッサユニットの複数で一つの再帰プロセッサユニットを構成したので、再帰的に構成することができる効果がある。
【0157】
この発明によれば、グローバルバスを多バス化するように構成したので、グローバルバスの混雑度を削減し、より高速化を図ることができる効果がある。
【0158】
この発明によれば、共有バスを多バス化するように構成したので、共有バスの混雑度を削減し、より高速化を図ることができる効果がある。
【0159】
この発明によれば、I/Oバスを設置するように構成したので、遅い周辺回路にアクセスした場合のアクセス完了までのバスの停止を回避し、その結果、高速化できるできる効果がある。
【0160】
この発明によれば、CPUの周辺に非共有データを設けるように構成したので、より高速化を図ることができる効果がある。
【0161】
この発明によれば、ユーザーが共有/非共有をアドレスによって回路的に振り分けるように構成したので、CPUが共有/非共有情報を知ることができる効果がある。
【0162】
この発明によれば、ブロックごとに共有/非共有情報を振り分けるように構成したので、ユーザーは自由な共有/非共有の割り振りができる効果がある。
【0163】
この発明によれば、CPUは、メモリアクセス時のセグメント情報からデータの共有/非共有を判断してアクセスするバスを決定するように構成したので、ハンドルを用いたコンピュータ構成にも適用できる効果がある。
【0164】
この発明によれば、CPUは、ユーザーの情報から共有/非共有データを別々の命令でアクセスさせることよってバスを選択するように構成したので、セグメントを用いたコンピュータ構成にも適用できる効果がある。
【0165】
この発明によれば、異なるCPUの各バス端子を、グローバル非共有バスとグローバル共有バスおよびグローバル外部装置バスに接続して構成したので、異なるCPUを一つのマルチプロセッサ系に載せることができる効果がある。
【図面の簡単な説明】
【図1】 この発明の実施の形態1によるマルチプロセッサ装置のブロック図である。
【図2】 この発明の実施の形態2によるマルチプロセッサ装置のブロック図である。
【図3】 この発明の実施の形態3によるマルチプロセッサ装置のブロック図である。
【図4】 この発明の実施の形態3による他のマルチプロセッサ装置のブロック図である。
【図5】 この発明の実施の形態4によるマルチプロセッサ装置のブロック図である。
【図6】 この発明の実施の形態4による他のマルチプロセッサ装置のブロック図である。
【図7】 この発明の実施の形態5によるマルチプロセッサ装置のブロック図である。
【図8】 この発明の実施の形態6によるマルチプロセッサ装置のブロック図である。
【図9】 この発明の実施の形態8によるマルチプロセッサ装置のブロック図である。
【図10】 この発明の実施の形態9のマルチプロセッサ装置のブロック図である。
【図11】 この発明の実施の形態9による他のマルチプロセッサ装置のブロック図である。
【図12】 この発明の実施の形態10によるマルチプロセッサ装置のブロック図である。
【図13】 この発明の実施の形態11によるマルチプロセッサ装置のブロック図である。
【図14】 この発明の実施の形態12によるマルチプロセッサ装置のブロック図である。
【図15】 実施の形態12のメモリマップである。
【図16】 実施の形態12のメモリアクセスソフトウェアである。
【図17】 この発明の実施の形態13によるマルチプロセッサ装置のブロック図である。
【図18】 この発明の実施の形態13による他のマルチプロセッサ装置のブロック図である。
【図19】 この発明の実施の形態13による更に他のマルチプロセッサ装置のブロック図である。
【図20】 この発明の実施の形態14によるマルチプロセッサ装置のブロック図である。
【図21】 従来のマルチプロセッサ装置のブロック図である。
【符号の説明】
11 CPU、11a 共有バス端子、11b,11c 非共有バス端子、12,62 ローカルキャッシュメモリ、13a,63a ローカル非共有バス、13b ローカル共有バス、14プロセッサユニット、15a,55a,65aグローバル非共有バス、15b,55b グローバル共有バス,16 共有キャッシュメモリ、17a,57a,67a 非共有インタフェース、17b,37,57b 共有インタフェース、19a,69a 非共有メモリ、39 外部メモリ、54 再帰プロセッサユニット。
Claims (14)
- 共有バス端子と非共有バス端子とを有するCPUと、前記非共有バス端子に接続され自己のCPUのみに用いる非共有情報を記憶したローカルキャッシュメモリとを備えたプロセッサユニットと、複数の前記プロセッサユニットのそれぞれのCPUの共有バス端子をグローバル共有バスに接続するローカル共有バスと、複数の前記プロセッサユニットのそれぞれのローカルキャッシュメモリのバス端子をグローバル非共有バスに接続するローカル非共有バスと、前記グローバル共有バスを前記全てのプロセッサユニットのCPUが用いる共有情報を記憶した外部の共有メモリに接続する共有インタフェースと、前記グローバル非共有バスを前記全てのプロセッサユニットのCPUが用いる非共有情報を記憶した外部の非共有メモリに接続する非共有インタフェースとを備えたマルチプロセッサ装置。
- 共有インタフェースより内部側におけるグローバル共有バスの途中にグローバル共有キャッシュメモリを設けたことを特徴とする請求項1記載のマルチプロセッサ装置。
- グローバル共有バスとグローバル非共有バスを、共有情報記憶領域と非共有情報記憶領域とを有する外部のメモリに接続する共有インタフェースを備えたことを特徴とする請求項1または請求項2記載のマルチプロセッサ装置。
- ローカルキャッシュメモリはライトスルー機能を有することを特徴とする請求項1から請求項3のうちのいずれか1項記載のマルチプロセッサ装置。
- ローカルキャッシュメモリはライトバック機能を有することを特徴とする請求項1から請求項3のうちのいずれか1項記載のマルチプロセッサ装置。
- 共有バス端子と2つ以上の非共有バス端子とを有するCPUと、前記各非共有バス端子に接続され自己のCPUのみに用いる非共有情報を記憶したローカルキャッシュメモリとを備えたプロセッサユニットと、複数の前記プロセッサユニットのそれぞれのCPUの共有バス端子をグローバル共有バスに接続するローカル共有バスと、複数の前記プロセッサユニットのそれぞれの2つ以上のローカルキャッシュメモリの非共有バス端子を別個独立したグローバル非共有バスに接続するローカル非共有バスと、前記グローバル共有バスを前記全てのプロセッサユニットのCPUが用いる共有情報を記憶した外部の共有メモリに接続する共有インタフェースと、前記グローバル非共有バスのそれぞれを該バスに接続された前記全てのプロセッサユニットのCPUが用いる非共有情報を記憶した外部の別個独立した非共有メモリに接続する2つ以上の非共有インタフェースとを備えたマルチプロセッサ装置。
- 共有バス端子と非共有バス端子および外部装置バス端子とを有するCPUと、前記各非共有バス端子に接続され自己のCPUのみに用いる非共有情報を記憶したローカルキャッシュメモリとを備えたプロセッサユニットと、複数の前記プロセッサユニットのそれぞれのCPUの共有バス端子をグローバル共有バスに接続するローカル共有バスと、複数の前記プロセッサユニットのそれぞれのローカルキャッシュメモリの非共有バス端子をグローバル非共有バスに接続するローカル非共有バスと、複数の前記プロセッサユニットのそれぞれの外部装置バス端子をグローバル外部装置バスに接続するローカル外部装置バスと、前記グローバル共有バスを前記全てのプロセッサユニットのCPUが用いる共有情報を記憶した外部の共有メモリに接続する共有インタフェースと、前記グローバル非共有バスを前記全てのプロセッサユニットのCPUが用いる非共有情報を記憶した外部の非共有メモリに接続する非共有インタフェースと、前記グローバル外部装置バスを前記全てのプロセッサユニットのCPUが用いる共有情報を記憶した外部装置に接続する外部装置インタフェースとを備えたマルチプロセッサ装置。
- ローカルキャッシュメモリの入力側または出力側に接続したローカルメモリを備えたことを特徴とする請求項1から請求項7記載のうちのいずれか1項記載のマルチプロセッサ装置。
- アドレス端子、データ端子、コントロール端子を有するCPU本体と、前記アドレス端子からのアドレス情報を入力とし、共有/非共有かを判断する共有/非共有判定回路と、この共有/非共有判定回路からの出力を入力とし、共有の場合には前記CPU本体の各バス端子を共有バス端子に接続し、非共有の場合には前記CPU本体の各バス端子を非共有バス端子に接続する共有/非共有バス選択装置と、前記非共有バス端子に接続され自己のCPUのみに用いる非共有情報を記憶したローカルキャッシュメモリとを備えたプロセッサユニットを用いることを特徴とする請求項1から請求項8記載のうちのいずれか1項記載のマルチプロセッサ装置。
- 共有/非共有判定回路は、入力がアドレスの上位、出力がそのアドレスブロックの共有/非共有判定であるRAMであることを特徴とする請求項9記載のマルチプロセッサ装置。
- 共有/非共有判定回路は、CPUの近傍のポインタテーブルの中に備えられた共有/非共有ビットを直接または間接的に送られることにより、セグメントごとに共有/非共有を判定することを特徴とする請求項9記載のマルチプロセッサ装置。
- CPUは、メモリアクセス時のセグメント情報からデータの共有/非共有を判断してアクセスするバスを決定することを特徴とする請求項1から請求項8記載のうちのいずれか1項記載のマルチプロセッサ装置。
- CPUは、ユーザーの情報から共有/非共有データを別々の命令でアクセスさせることよってバスを選択することを特徴とする請求項1から請求項8記載のうちのいずれか1項記載のマルチプロセッサ装置。
- 異なるCPUの各バス端子を、グローバル非共有バスとグローバル共有バスおよびグローバル外部装置バスに接続したことを特徴とする請求項1から請求項8記載のうちのいずれか1項記載のマルチプロセッサ装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25165298A JP4179677B2 (ja) | 1998-09-04 | 1998-09-04 | マルチプロセッサ装置 |
US09/247,519 US6253290B1 (en) | 1998-09-04 | 1999-02-10 | Multiprocessor system capable of circumventing write monitoring of cache memories |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25165298A JP4179677B2 (ja) | 1998-09-04 | 1998-09-04 | マルチプロセッサ装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008141295A Division JP2008204488A (ja) | 2008-05-29 | 2008-05-29 | マルチプロセッサ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000082049A JP2000082049A (ja) | 2000-03-21 |
JP4179677B2 true JP4179677B2 (ja) | 2008-11-12 |
Family
ID=17226014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25165298A Expired - Fee Related JP4179677B2 (ja) | 1998-09-04 | 1998-09-04 | マルチプロセッサ装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6253290B1 (ja) |
JP (1) | JP4179677B2 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434672B1 (en) * | 2000-02-29 | 2002-08-13 | Hewlett-Packard Company | Methods and apparatus for improving system performance with a shared cache memory |
GB0015276D0 (en) * | 2000-06-23 | 2000-08-16 | Smith Neale B | Coherence free cache |
US6851024B1 (en) * | 2000-08-17 | 2005-02-01 | Hewlett-Packard Development Company, L.P. | Exclusive caching in computer systems |
JP4394298B2 (ja) * | 2001-02-20 | 2010-01-06 | 日本電気株式会社 | マルチプロセッサシステムとその共有メモリ制御方法、及び共有メモリ制御プログラム |
US7555561B2 (en) * | 2001-03-19 | 2009-06-30 | The Aerospace Corporation | Cooperative adaptive web caching routing and forwarding web content data broadcasting method |
GB2386441B (en) * | 2002-03-12 | 2006-09-27 | Advanced Risc Mach Ltd | Bus interface selection by page table attributes |
JP2004171209A (ja) * | 2002-11-19 | 2004-06-17 | Matsushita Electric Ind Co Ltd | 共有メモリデータ転送装置 |
US7039765B1 (en) | 2002-12-19 | 2006-05-02 | Hewlett-Packard Development Company, L.P. | Techniques for cache memory management using read and write operations |
JP4100256B2 (ja) * | 2003-05-29 | 2008-06-11 | 株式会社日立製作所 | 通信方法および情報処理装置 |
JP4729490B2 (ja) | 2003-09-04 | 2011-07-20 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | データ処理システム |
US7647476B2 (en) * | 2006-03-14 | 2010-01-12 | Intel Corporation | Common analog interface for multiple processor cores |
WO2011161829A1 (ja) * | 2010-06-25 | 2011-12-29 | 富士通株式会社 | マルチコアプロセッサシステム、制御プログラム、および制御方法 |
US20130159630A1 (en) * | 2011-12-20 | 2013-06-20 | Ati Technologies Ulc | Selective cache for inter-operations in a processor-based environment |
WO2016139787A1 (ja) * | 2015-03-04 | 2016-09-09 | 株式会社日立製作所 | ストレージシステム及びデータ書込み制御方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4939641A (en) | 1988-06-30 | 1990-07-03 | Wang Laboratories, Inc. | Multi-processor system with cache memories |
JPH0222757A (ja) | 1988-07-12 | 1990-01-25 | Hitachi Ltd | マルチプロセッサのメモリシステム |
JPH04175946A (ja) | 1990-11-09 | 1992-06-23 | Hitachi Ltd | マルチプロセッサ・データ処理システムおよびそれに用いられるキャッシュ装置 |
US5890216A (en) * | 1995-04-21 | 1999-03-30 | International Business Machines Corporation | Apparatus and method for decreasing the access time to non-cacheable address space in a computer system |
GB2318657B (en) * | 1997-07-15 | 1998-09-02 | Ncipher Corp Limited | Microprocessor cache consistency |
-
1998
- 1998-09-04 JP JP25165298A patent/JP4179677B2/ja not_active Expired - Fee Related
-
1999
- 1999-02-10 US US09/247,519 patent/US6253290B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2000082049A (ja) | 2000-03-21 |
US6253290B1 (en) | 2001-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3765586B2 (ja) | 多重プロセッサコンピューターシステムのアーキテクチャ | |
US7120755B2 (en) | Transfer of cache lines on-chip between processing cores in a multi-core system | |
US5524235A (en) | System for arbitrating access to memory with dynamic priority assignment | |
KR920004402B1 (ko) | 디지탈 데이타 프로세서용 버스 인터페이스 회로 | |
TW390986B (en) | Cache memory system | |
US5265233A (en) | Method and apparatus for providing total and partial store ordering for a memory in multi-processor system | |
US5561779A (en) | Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system | |
JP4179677B2 (ja) | マルチプロセッサ装置 | |
US5696937A (en) | Cache controller utilizing a state machine for controlling invalidations in a network with dual system busses | |
US6453388B1 (en) | Computer system having a bus interface unit for prefetching data from system memory | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
US20060179174A1 (en) | Method and system for preventing cache lines from being flushed until data stored therein is used | |
JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
JP2000235520A (ja) | キャッシュ・データ管理方法 | |
US20060179175A1 (en) | Method and system for cache utilization by limiting prefetch requests | |
US6587922B2 (en) | Multiprocessor system | |
US6101589A (en) | High performance shared cache | |
US5638537A (en) | Cache system with access mode determination for prioritizing accesses to cache memory | |
US20030105929A1 (en) | Cache status data structure | |
US5455925A (en) | Data processing device for maintaining coherency of data stored in main memory, external cache memory and internal cache memory | |
JP7158390B2 (ja) | コンペアアンドスワップトランザクション | |
US6098113A (en) | Apparatus and method for address translation and allocation for a plurality of input/output (I/O) buses to a system bus | |
US7328310B2 (en) | Method and system for cache utilization by limiting number of pending cache line requests | |
KR920004401B1 (ko) | 디지탈 데이타 프로세싱 시스템내의 프로세서와 특수명령 프로세서간의 인터페이스 | |
JP2008204488A (ja) | マルチプロセッサ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050822 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060123 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070508 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070625 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20071101 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080408 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080529 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080819 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080826 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110905 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110905 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110905 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120905 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130905 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |