(57)【要約】【課題】監視処理のために処理時間が必要、ライトバックキャッシュにできないことにより処理速度の低下、安価なキャシュメモリを使用できないためコストアップになる等の課題があった。【解決手段】ＣＰＵ１１の共有バス端子１１ａをグローバル共有バス１５ｂに接続し、ローカルキャッシュメモリ１２のバス端子をグローバル非共有バス１５ａに接続し、前記グローバル共有バスを前記ＣＰＵが用いる共有情報を記憶した外部の共有メモリ１９ｂに接続し、前記グローバル非共有バス１５ａを前記ＣＰＵが用いる非共有情報を記憶した外部の非共有メモリ１９ａに接続したものである。【選択図】図１
2008204488.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
前記ＣＰＵに接続され、このＣＰＵ毎の情報を専ら記憶する第１のキャッシュメモリとを含むプロセッサユニットと、
複数の前記プロセッサユニットのそれぞれを接続する第１の共有バスと、
複数の前記プロセッサユニットに接続され、複数の前記プロセッサユニットに共有される情報を記憶する第２のキャッシュメモリと、
前記第１の共有バスに接続され、複数の前記プロセッサユニットに共有される共有情報を記憶する外部メモリをアクセスする制御信号を出力するインタフェース部と、
を備えたマルチプロセッサ装置。
【請求項２】
前記第２のキャッシュメモリは、前記第１のキャッシュメモリより下位に位置づけされるキャッシュメモリであり、前記第１の共有バスに接続されることを特徴とする、請求項１に記載のマルチプロセッサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は複数のプロセッサユニットをグローバルバスに接続したマルチプロセッサ装置に関するものである。
【背景技術】
【０００２】
図２１は従来のマルチプロセッサ装置を示すブロック図である。図において、１，１Ａはプロセッサユニットであり、各プロセッサはＣＰＵ５とライトスルー機能で、かつ書き込み監視機能を有するキャッシュメモリ６を有している。各プロセッサ１，１Ａのキャッシュメモリ６は、共通のグローバルバス２に接続され、このグローバルバス２はインタフェース３を介して外部メモリ４に接続されている。なお、ここで問題としているのはデータキャッシュであり、命令キャッシュは問題としないので図示を省略する。
【０００３】
次の動作について説明する。
ＣＰＵ５は処理に必要なデータをグローバルバス２、インタフェース３を介して外部メモリ４との間でやり取りを行うが、そのグローバルバス２、インタフェース３は処理動作速度が遅いため、この速度がボトルネックとなり、ＣＰＵ５は本来の処理速度が出なかった。
【０００４】
そこで、ＣＰＵ５がよく使う外部メモリ４の内容を該ＣＰＵの近くで保持することにより速度向上を計る手法が考えられた。ローカルキャッシュメモリ６は、ＣＰＵ５の近くに設けられ該ＣＰＵがよく使う外部メモリ４の内容を記録したメモリである。
【０００５】
以下、このローカルキャッシュメモリ６の動作について記述する。
１．ローカルキャッシュメモリによる読み出し。
【０００６】
いま、ＣＰＵ５が外部メモリ４の００１３番地を読みにいった場合、ローカルキャッシュメモリ６は自身が００１３番地の内容をもっているかを確認する。もしあれば、ＣＰＵ５に対して００１３番地の内容を返す。その結果、ＣＰＵ５は動作の遅いグローバルバス２、インタフェース３を使用しないで高速に動作できる。
【０００７】
もし、００１３番地の内容がローカルキャッシュメモリ６の中にない場合、ローカルキャッシュメモリ６は自分自身がもっているＣＰＵ５が今後当分の間使用しないであろうメモリの内容を選び出し（選出法はこの発明の本質ではないので説明を省略する）、これを消去（後述するがメモリに書き込み後キャッシュから消去）して、空いたところに００１３番地とその内容を転送する。こうすることにより、ＣＰＵ５が２回目以降、００１３番地を読みにいった場合、ローカルキャッシュメモリ６が００１３番地の内容を持っているので、高速に読み出すことができる。この機構をパージという。
【０００８】
２．ローカルキャッシュメモリによる書き込み。
ＣＰＵ５が外部メモリ４に対して書き込みを実施する場合、二つの方法がある。一つはライトバック法（Ｗｒｉｔｅ Ｂａｃｋ）と呼ばれる方法で、もう一つはライトスルー法（Ｗｒｉｔｅ Ｔｈｒｏｕｇｈ）と呼ばれる方法である。
【０００９】
まず、ライトスルー法について説明する。ＣＰＵ５が外部メモリ４の００１３番地に対して書き込みをしたとき、読み込みの時と同様にローカルキャッシュメモリ６が００１３番地の内容を持っているかどうかを確認する。ローカルキャッシュメモリ６が００１３番地の内容をもっていれば該ローカルキャッシュメモリ内の００１３番地の内容を書き換えると共に、外部メモリ４に対しても書き換えを実施する。ローカルキャッシュメモリ６が００１３番地の内容を持っていない場合は、ローカルキャッシュメモリ６はＣＰＵ５が使用しないと判断した他の内容を消去し、空いた場所に００１３番地の内容を書くと共に外部メモリ４にも書き込む。この結果、書き込みの度に動作の遅いグローバルバス２、インタフェース３を使用することになる。
【００１０】
次にライトバック法について説明する。このライトバック法はライトスルー法とは書き込みのタイミングが異なる。すなわち、書き込み時、ローカルキャッシュメモリ６には書き込みを実施するが、外部メモリ４に書き込みはせず、ローカルキャッシュメモリ６がこの内容をパージするときに書き込む。この結果、パージするときのみ、動作の遅いグローバルバス２、インタフェース３を使用することになり、ライトスルー法より処理動作が速くなる。
【００１１】
３．マルチプロセッサ装置でのローカルキャッシュメモリの応用について
上記ローカルキャッシュメモリをマルチプロセッサで応用する場合、ライトスルー法で処理し、かつ他のＣＰＵの書き込み内容を監視する「監視機能」を持たなければならない。
【００１２】
まず、ライトスルー法を使用しなければならない理由（つまり、ライトバック法ではいけない理由）は、ライトバック法で００１３番地を書き込んだ場合、その内容がパージされるまで外部メモリ４に書き込まれない。その結果、他のＣＰＵが００１３番地を読みにいってもパージされるまで他のＣＰＵは古い内容しか読めないからである。
【００１３】
一方、ライトスルー法にしたとしても、他のＣＰＵが００１３番地の内容を持っていた場合、その内容は変化されない。従って、ローカルキャッシュメモリ６は他のローカルキャッシュメモリの書き込みを監視し、書き込みがあった場合、自分がもっているローカルキャッシュメモリのアドレス情報と比較して同じ内容があった場合にこの内容を無効化しなければならなくなる。
【００１４】
マルチプロセッサ装置でのキャッシュメモリ構成では、このローカルキャッシュメモリごと、またはローカルキャッシュメモリと共有メモリとの間の同一性を保つため、これまでいろいろな方法が考えられた。例えば、特公平２−２２７５７号公報及び特公平４−１７５９４６号公報は、データの共有／非共有によってアクセスするメモリを分け、共有データを上記方法で書き込みを監視し、これによって、ローカルキャッシュメモリを無効化する技術を採用している。
【００１５】
米国特許明細書第４９３９６４１号公報は、キャッシュメモリの中に共有／非共有情報を置き、非共有ならライトバック法で、共有ならライトスルー法でキャッシュを読み書きする方法が紹介されている。これらをまとめて「書き込み監視付き」マルチプロセッサおよび、キャッシュメモリという構成は、数限りないほどあり、中には「監視機能つき」を前提条件としたものがある。
【特許文献１】特公平２−２２７５７号公報
【特許文献２】特公平４−１７５９４６号公報
【特許文献３】米国特許明細書第４９３９６４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
従来のマルチプロセッサ装置は以上のように構成されているので、次のような課題があった。
【００１７】
一つ目は監視処理のための時間。
監視処理が書き込みの度に実施されると、その処理の間、ＣＰＵはローカルキャッシュメモリを使用できなくなり、ＣＰＵの動作速度が落ちる結果になる。例えば、ある処理の読み込み数が１，０００，０００回、１読み込みあたり１クロック（Ｃｌｏｃｋ）、書き込み数が１０，０００回、１書き込みあたり（ライトスルーであるため、すべての書き込みをバスを通して実施するとして）４クロック、書き込みに対する監視処理に２クロックかかったとする。この処理を５つのＣＰＵが同時に行った場合、全ＣＰＵの書き込みが５［ＣＰＵ］×１０，０００［回］＝５０，０００回になるため、監視処理が１００，０００クロック必要となる。監視処理を除いた時間が１, ０００, ０００＋１０，０００×４＝１，０４０，０００クロックであるため、監視処理のために処理時間が１０％近く長くなることになる。
【００１８】
同じ例で、書き込み回数が２００回であった場合の監視処理を除いた処理時間は１，０８０，０００クロックとなり、監視処理の時間は２００，０００クロックとなり２０％程度長くなる。更に書き込み回数２００回かつ１０のＣＰＵであった場合、その監視処理の時間は４００，０００クロックとなり、４０％近く長くなる。上記の例のように一般に、監視処理時間はＣＰＵおよびキャッシュメモリの数と、その書き込み回数に比例する。
【００１９】
二つ目はライトバックキャッシュにできないことによる処理速度の低下。
上記と同じ処理を実施して、書き込み処理のうち５０％がキャッシュメモリにヒットしたとし、そのときの書き込み処理の時間が１クロックであったとすると、その処理時間（監視時間を除いた）は１，０００，０００×１クロック＋１０，０００×５×４クロック＝１，０２５，０００クロックとなり、２％程度短くなる。書き込み回数が倍になった場合、同様に１，０５０，０００クロックとなり、同様に３％程度短くなる。ヒット率が高くなれば、ライトバックキャッシュの時間は更に短くなる。しかし、マルチプロセッサでは、前途のごとく、ライトバックキャッシュでは他のＣＰＵは古い内容しか読めないため、速度の遅くなるライトスルーキャッシュしか使用できなかった。
【００２０】
三つ目はコストの問題。
もし仮に、書き込み監視機能つきマルチプロセッサシステムを１チップについて実現した場合、この監視処理は、キャッシュメモリの機能を増やすことになる。監視機能の追加はこれまでライブラリ化されている通常のキャッシュメモリが使えないまたは改定を要することを意味する。仮に改定を要する場合はその分だけ設計時間の増大となる。また、機能付加によってチップレイアウト面積は増加する。設計時間の増大、レイアウト面積の増大の結果、チップ開発コスト、作成コストともに上昇する。
【００２１】
この監視処理をチップ外部部品で調達するにも問題がある。もし、単なるライトキャッシュまたはライトスルーのみのキャッシュであれば、安価で手に入る。これは、現在シングルプロセッサの需要が多く、しかもシングルプロセッサの書き込み監視を必要としないからである。
【００２２】
しかし、上記のような何らかの「書き込み監視」機能付きのキャッシュメモリはなかなか安価には入手できない。これは、現在マルチプロセッサが特殊分野でしか活用されず、その市場が小さく、その結果、部品は少量生産となり、高くなるからである。
【００２３】
この発明は上記従来の課題を解消するためになされたもので、キャッシュメモリの書き込み監視処理を必要とせず、バスの負荷軽減、データキャッシュの負荷軽減を図り、データキャッシュの高速化処理を実現したマルチプロセッサ装置を得ることを目的とする。
【課題を解決するための手段】
【００２４】
この発明に係るマルチプロセッサ装置は、ＣＰＵと、ＣＰＵに接続され、このＣＰＵ毎の情報を専ら記憶する第１のキャッシュメモリとを含むプロセッサユニットと、複数のプロセッサユニットのそれぞれを接続する第１の共有バスと、複数のプロセッサユニットに接続され、複数のプロセッサユニットに共有される情報を記憶する第２のキャッシュメモリと、第１の共有バスに接続され、複数のプロセッサユニットに共有される共有情報を記憶する外部メモリをアクセスする制御信号を出力するインタフェース部と、を備えたものである。
【００２５】
この発明に係るマルチプロセッサ装置の第２のキャッシュメモリは、第１のキャッシュメモリより下位に位置づけされるキャッシュメモリであり、第１の共有バスに接続されるものである。
【発明の効果】
【００２６】
この発明によれば、共有データバスにキャッシュメモリを備えるように構成したので、より高速化を図ることができる効果がある。
【発明を実施するための最良の形態】
【００２７】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１によるマルチプロセッサ装置の構成を示すブロック図であり、ライトバックキャッシュ使用、共有キャッシュなしの場合である。
【００２８】
ここで、まず、「共有」とは、各ＣＰＵが使用・転送・格納する資源でなく、単に「共有データ」を転送・格納する資源である。また、「非共有」とは単一ＣＰＵのみが使用・転送・格納する資源でなく、単に「非共有データ」を転送・格納する資源である。単一ＣＰＵのみが使用する資源を「専用」資源とし、複数のＣＰＵが使用する資源を「共用」資源とする。
【００２９】
図１において、１１は命令又はアクセスしようとするアドレスによって読み書きするデータが共有データか、非共有データかを判断し、その結果によってバスを選択することが可能な装置を備えた第ｉＣＰＵである。この判断方法については実施の形態１０以降で説明する。この第ｉＣＰＵ１１は第（ｉ，１）共有バス端子と第（ｉ，１）非共有バス端子をもち、これらは命令またはアクセスしようとするＣＰＵが共有データか非共有データかを判断することによりバスが選択されるようになっている。
【００３０】
１２は、他のＣＰＵからの書き込み監視機能をもたない第（ｉ，１）ローカルキャッシュメモリである。ここで、第（ｉ，１）ローカルキャッシュメモリ１２はデータの受け渡しのみを実施する。これは、前述のごとく、プログラムは原則書きかえる必要がないためで、この図には命令キャッシュ（Ｉｎｓｔｒｕｃｔｉｏｎ Ｃａｃｈｅ）は省略されている。この第（ｉ，１）ローカルキャッシュメモリ１２は、第（ｉ，１）ＣＰＵ側バス端子１２ａと第（ｉ，１）ＣＰＵ外部側バス端子１２ｂをもつ。第（ｉ，１）ＣＰＵ側バス端子１２ａは第（ｉ，１）非共有バス端子１１ｂに接続されている。この第（ｉ，１）ローカルキャッシュメモリ１２は第ｉＣＰＵ１１の専用資源である。
【００３１】
１３ａは、第（ｉ，１）ローカルキャッシュメモリ１２の第（ｉ，１）外部側バス端子１２ｂに接続された第（ｉ，１）ローカル非共有バス、１３ｂは第ｉＣＰＵ１１の第（ｉ，１）共有バス端子１１ａに接続された第（ｉ，１）ローカル共有バスである。
【００３２】
１４は第ｉＣＰＵ１１、第（ｉ，１）ローカルキャッシュメモリ１２、第（ｉ，１）ローカル非共有バス１３ａ、第（ｉ，１）ローカル共有バス１３ｂを含む第ｉプロセッサユニットである。
【００３３】
第ｉプロセッサユニット１４は第（ｉ，１）ユニット非共有バス端子１４ａと第（ｉ，１）ユニット共有バス端子１４ｂをもち、それぞれの端子は第（ｉ，１）ローカル非共有バス１３ａと第（ｉ，１）ローカル共有バス１３ｂに接続されている。ここでプロセッサユニットの総数をＩ個とする。１４Ａは第ｉプロセッサユニット１４の隣にある第ｉ＋１プロセッサユニットであり、第ｉプロセッサユニット１４と同一構成である。
【００３４】
１５ａは第１グローバル非共有バスであり、第ｉプロセッサユニット１４の第（ｉ，１）ユニット非共有バス端子１４ａに接続されている。この第１グローバル非共有バス１５ａは、各ＣＰＵから外部の非共有メモリ１９ａへ非共有データを転送するためのバスである。各ローカル非共有バス端子１４ａからのアクセス要求に対して調停を実施する図示せぬバスアービタ装置を備えている。この資源は各ＣＰＵ（プロセッサユニット）共用である。
【００３５】
１５ｂは第１グローバル共有バスであり、第ｉプロセッサユニット１４の第（ｉ，１）ユニット共有バス端子１４ｂに接続されている。この第１グローバル共有バスは、各ＣＰＵから外部の共有メモリ１９ｂへの共有データの転送をするためのバスである。この第１グローバル共有バス１５ｂは、各ローカル共有バス端子１４ｂからのアクセス要求に対して調停を実施する図示せぬバスアービタ装置を備えている。この資源は各ＣＰＵ（プロセッサユニット）共用である。
【００３６】
１７ａは第１非共有インタフェースであり、ここから外部の非共有メモリ１９ａなどとアクセスする。この資源は各ＣＰＵ（プロセッサユニット）共用である。
【００３７】
１７ｂは第１共有インタフェースであり、ここから外部の共有メモリ１９ｂなどとアクセスする。この資源は各ＣＰＵ（プロセッサユニット）共用である。
【００３８】
上記非共有メモリ１９ａは非共有データを格納するメモリである。この非共有メモリ１９ａは各プロセッサユニット専用でなく、各プロセッサユニットで共用であってかまわない。この（共用の）非共有メモリ１９ａへの各ＣＰＵからの書き込み領域は、たとえばアドレスで分割されているものとする。具体的には、たとえば非共有メモリ１９ａがアドレス００００〜７ＦＦＦまでに割り当てられていたとすると、第１ＣＰＵはその使用する領域を００００〜０ＦＦＦ、第２ＣＰＵはその使用する領域を１０００〜１ＦＦＦといった具合に割り当てられているものとする。従って、この例で非共有メモリ１９ａの領域を００００〜０ＦＦＦは第１ＣＰＵ「専用」になる。
【００３９】
１９ｂは共有メモリである。この共有メモリは共有データを格納するためのメモリである。この共有メモリと非共有メモリのアドレスマップ上の領域は重ならないようにする。
【００４０】
（上記の構成におけるインタフェースから外の世界の制約）
ここで、第１非共有インタフェース１７ａと第１共有インタフェース１７ｂから先のバス構成についてはこの発明の本質ではない。従って、あるメモリブロックは第１非共有インタフェース１７ａ経由しか読めないようにしても良いし、また、別のメモリブロックはどちらからも読めるようにしても良い。ただし、共有データがおかれるメモリブロックは第１共有インタフェース経由でアクセスできるようにしておき、非共有データは同じように第１非共有インタフェース経由でアクセスしなければならない。
【００４１】
以下、説明のため便宜上共有メモリ１９ｂと非共有メモリ１９ａが図のように置かれた場合について説明する。
【００４２】
（非共有データ・ワークエリアの説明）
本発明は、該当処理しか使わない内容（ワークエリアの内容）をローカルキャッシュで閉じさせ、さらに複数の処理で使用する内容は一つのメモリにのみ書いて各ローカルキャッシュにはいれないようして、書き込み監視処理をなくすことにより高速化及び低コスト化を図るようにしたもので、ここでは、５つのＣＰＵが５科目の平均点を求めるプログラムを例にとって説明する。
【００４３】
マルチプロセッサにおけるメモリの内容には書き込み共有すべき内容と書き込み共有する必要のない内容がある。例えば、ある得点データベースがあり、５つのＣＰＵが「英語」「数学」「国語」「理科」「社会」の平均点を求めるものとする。
【００４４】
このとき、「英語」の総得点を格納するメモリと、サンプル数を格納するメモリが必要になるが、これらは他の「数学」等の平均点を求めるのには必要がない。これら他の処理に必要でない格納領域を一般にワークエリアという。このワークエリアの内容は、他のＣＰＵが知る必要がないので第（ｉ，１）ローカルキャッシュメモリ１２に格納するようにする。
【００４５】
この動作を説明する。ＣＰＵはワークエリアにアクセスしにいくとき、ＣＰＵはこのアクセスを「非共有データ」と判断し、第（ｉ，１）ＣＰＵ非共有バス端子を選択しアクセスを実施する。第（ｉ，１）ローカルキャッシュメモリ１２は、ＣＰＵからのアクセス情報に従い、該当アドレスの内容があるかを検索し、あればその内容をＣＰＵに返す。該当アクセスの内容がない場合、キャッシュメモリは第（ｉ，１）ローカル非共有バス１３ａ，第１グローバル非共有バス１５ａ，第１非共有インタフェース１７ａを経由して、非共有メモリ１９ａにアクセスを要求する。
【００４６】
調停によって、第１グローバル非共有バス１５ａがあき、第（ｉ，１）ローカルキャッシュメモリ１２が非共有メモリ１９ａの該当アドレスを取り出したとき、第（ｉ，１）ローカルキャッシュメモリ１２はその内容のコピーを取り込む。この時、非共有メモリ１９ａの非共有領域は、各ＣＰＵで「専用に」なっているため、他のＣＰＵからの書き込みもなく、各ＣＰＵへの影響もない。
【００４７】
２回目以降、第（ｉ，１）ローカルキャッシュメモリ１２が取り込んだアドレスの内容を持っている間は、第ｉＣＰＵ１１は第（ｉ，１）ローカルキャッシュメモリ１２にのみアクセスする。また、この第（ｉ，１）ローカルキャッシュメモリ１２の内容は他のＣＰＵが知る必要がないので、たとえ第（ｉ，１）ローカルキャッシュメモリ１２の内容が書き変わったとしても他のＣＰＵは第（ｉ，１）ローカルキャッシュメモリ１２を書き込み監視する必要がない。
【００４８】
（共有データの説明とその動作）
一方、このあと各科目の総平均点から、各科目の難易度を知るため、偏差値を取ったとする。このとき、求められた各科目の平均点は偏差値を求めるために必要なので共有すべきである。これら後の他のＣＰＵ（他の処理）が必要とする内容は第（ｉ，１）ローカル共有バス１３ｂから第１グローバル共有バス１５ｂ、第１共有インタフェース１７ｂを通して共有メモリ１９ｂとアクセスし、ローカルキャッシュメモリ１２に格納しない。
【００４９】
この動作を説明する。第ｉＣＰＵ１１は共有データと判断し、これによって第（ｉ，１）ＣＰＵ共有バス端子１１ａを選択する。これに接続されている第（ｉ，１）ローカル共有バス１３ｂから、第ｉＣＰＵ１１は第１グローバル共有バス１５ｂ，第１共有インタフェース１７ｂを経由して共有メモリ１９ｂにアクセスを要求する。調停によって、第１グローバル共有バス１５ｂがあき、第ｉＣＰＵ１１が共有メモリ１９ｂの該当アドレスを取り出す。
【００５０】
この動作が書き込みであった場合、書き込み監視装置が要らないことについて説明する。第ｉＣＰＵ１１からの書き込みが完了した段階で、共有メモリ１９ｂはもっとも最新の書き込み情報が格納されていることになる。一方、その直後に他のＣＰＵが同じアドレスのデータを共有メモリ１９ｂに読みにいくとき、共有メモリ１９ｂは確実に最新の内容をもっており、他のＣＰＵは最新の内容を得ることができる。また、共有データを取り込むローカルなキャッシュメモリがどこにもないので、これまで並列処理では暗黙の了解となっていた書き込み監視を実施する必要がない。
【００５１】
（共有と非共有をわけ、共有をキャッシュメモリに取り込まないことの効果１）
ワークエリアの内容は書き換えの度に他のＣＰＵが書き換えられたことを知る必要がないので、第（ｉ，１）ローカルキャッシュメモリ１２はライトスルーキャッシュである必要がなく、ライトバックキャッシュであってよい。つまり、ワークエリアの内容は第（ｉ，１）ローカルキャッシュメモリ１２の中で閉じることとなる。通常、ワークエリアのアクセス回数は非常に多い。
【００５２】
なお、この第（ｉ，１）ローカルキャッシュメモリ１２に書き込む内容は、処理のはじめから終わりまで書き込みを必要としない内容（定数等）も第（ｉ，１）ローカルキャッシュメモリ１２経由でアクセスしても良い。これは、内容を変更しないため、他の処理に影響しないからである。
【００５３】
（共有と非共有をわけ、共有をキャッシュメモリに取り込まないことの効果２）
共有すべき内容と非共有の内容によってアクセスする内容を分けることにより、第（ｉ，１）ローカルキャッシュメモリ１２は監視機能のいらないライトバックキャッシュで良いことが判った。そこで、読み込み１，０００，０００回、このうち５，０００回が共有バス経由、書き込み１０，０００回、このうち５，０００回が共有バス経由とし、ローカルキャッシュ経由の読み書きはライトバックキャッシュを使用したとして、１クロック、共有バス経由の読み書きは４クロックかかるものとすると、この処理にかかる時間は（９９５，０００＋５，０００）×１＋（５，０００＋５，０００）×４＝１，００４，０００クロックとなり、従来の監視機能を必要とする場合の時間１，１４０，０００に比べ約１０％程度速くなることが判る。
【００５４】
また、従来ではライトスルーキャッシュでしか対応できなかったが、この実施の形態１ではローカルキャッシュはライトバックキャッシュとライトスルーキャッシュのいずれもが使える（性能的にはライトバックキャッシュの方がよいが何らかの設計的理由でライトスルーキャッシュにしてもよい）。
【００５５】
（共有と非共有をわけ、共有をキャッシュメモリに取り込まないことの効果３）
先に示したように第（ｉ，１）ローカルキャッシュメモリ１２は、マルチプロセッサに関する特殊な書き込み監視を必要としない。これは、高価なマルチマイクロプロセッサ専用のキャッシュメモリを使用せず、汎用のキャッシュメモリを使えることを意味する。この機能を持たないキャッシュメモリを使用することにより、コストを削減できる。
実施の形態２．
ライトバックキャッシュ使用、共有キャッシュありの場合
図２は発明の実施の形態２に係るマルチプロセッサ装置を示すブロック図であり、前記図１に示した実施の形態１と同一の部分については同一符号を付して重複説明を省略する。この実施の形態２では第１共有インタフェース１７ｂより内部において第１グローバル共有バス１５ｂの途中に第１グローバル共有キャッシュメモリ１６を設けたものである。
【００５６】
この構成では、第ｉＣＰＵ１１が第１グローバル共有キャッシュメモリ１６に書き込みを実施した直後に第（ｉ＋１）ＣＰＵ（不図示）が同じアドレスの内容を読みにいっても、第１グローバル共有キャッシュメモリ１６の直前に更新された内容を取り込むことになるので、新しい内容が読み込める。また、第１グローバル共有キャッシュメモリ１６を搭載することで処理を更に高速化できる。
【００５７】
そこで、共有データの読み書きは、第１グローバル共有キャッシュメモリ１６があることにより、２クロックで実施するものとして、実施の形態１と同じ処理で時間を比較すると、処理時間は（９９５，０００＋５，０００）×１＋（５，０００＋５，０００）×２＝１，００２，０００クロックとなり、実施の形態１に比べ若干ではあるが速くなる。しかし、これはあくまでも共有データの読み書きが少ない場合で、一般に、共有データの読み書きが多い場合、実施の形態２の方が速くなる。
実施の形態３．
ライトバックキャッシュ使用、インタフェース１個の場合
図３は発明の実施の形態３に係るマルチプロセッサ装置を示すブロック図であり、前記図１に示した実施の形態１と同一の部分については同一符号を付して重複説明を省略する。この実施の形態３では第１グローバル非共有バス１５ａと第１グローバル共有バス１５ｂを共有インタフェース３７を介して共有／非共有メモリ３９に接続したもので、この共有／非共有メモリ３９は共有／非共有領域が重ならないようになっている。
【００５８】
次に動作について説明する。
第ｉＣＰＵ１１が非共有データにアクセスする場合、まず第（ｉ，１）ＣＰＵ非共有バス端子から、第（ｉ，１）キャッシュメモリ１２にアクセス要求をする。第（ｉ，１）キャッシュメモリ１２は自分自身にアクセスし、内容が存在しない場合は第１グローバル非共有バス１５ａ、共有インタフェース３７を経由して共有／非共有メモリ３９の第ｉＣＰＵ１１の専用の非共有領域にアクセスしにいく。この第ｉＣＰＵ１１の「専用の」非共有領域は他のＣＰＵからの書き込みをしないし、第ｉＣＰＵ１１自身も他のＣＰＵの領域に書き込みにいかない。また、この第ｉＣＰＵ１１専用の非共有領域は、共有領域としての書き込みをしないので、第ｉＣＰＵ１１に対して書き込みデータは１００％保証される。したがって、当然書き込み監視は要らない。
【００５９】
一方、共有データアクセスの場合は、第ｉＣＰＵ１１はＣＰＵ共有バス端子からアクセスを開始し、第１グローバル共有バス１５ｂ、共有インタフェース３７を経由して共有／非共有メモリ３９の割り当てられた共有領域へアクセスする。共有データが書き込まれた場合、内容は即座に他のＣＰＵの読み込みに反映されるので、書き込み監視は要らない。
【００６０】
この方法では共有インタフェース３７に共有データと非共有データの両方が通ることになる。しかし特に第（ｉ，１）ローカルキャッシュメモリ１２へのヒット率が高く、また、共有データの読み書きが少ない場合、バスの使用率が低くなり、この方法は有効となる。
【００６１】
マルチマイクロプロセッサ系を一つのチップに収納したい場合、面積を少しでも小さく設計しなければならない。要求された面積を満足しなければならず、バスを２本も走らすことができない場合、図４に示すように、第１グローバル非共有バス１５ａと第１グローバル共有バス１５ｂを１つにして第１グローバルバス３５とすることができる。この実施の形態３は実施の形態２と同様の効果を示すが、実施の形態３の方がバス使用率が高くなるので、処理がやや遅くなる。
実施の形態４．
ライトバックキャッシュ使用、インタフェース１個、共有キャッシュ付きの場合
図５は発明の実施の形態４に係るマルチプロセッサ装置を示すブロック図であり、前記図３に示した実施の形態３と同一の部分については同一符号を付して重複説明を省略する。この実施の形態４では共有インタフェース３７より内部において第１グローバル共有バス１５ｂの途中に第１グローバル共有キャッシュメモリ１６を設けたものである。
【００６２】
このような形態が有効なのはローカルキャッシュメモリ１２のヒット率が高く（バス使用率が低く）、また共有データの読み書きが多い場合である。このときに面積縮小を図るためにこのような構成を取ってもよい。この実施の形態４は実施の形態２と同様の効果を示すが、実施の形態４の方がバス利用率が高くなるのでやや遅くなる。
【００６３】
また、図６に示すように、第１グローバル非共有バス１５ａと第１グローバル共有バス１５ｂを１つにして第１グローバルバス３５としてもよい。この場合、第１グローバルバス３５の途中に設けた第１グローバルキャッシュメモリ１６は非共有データも取り込むこととなるため、なるべく大容量の方がよい。なお、この実施の形態４も原理的には実施の形態３と同じなので、書き込み監視は一切必要としない。
実施の形態５．
再帰的構成の場合
図７は発明の実施の形態５に係るマルチプロセッサ装置を示すブロック図であり、この実施の形態５では実施の形態１に示すプロセッサユニット１４，１４Ａ・・の複数により再帰プロセッサユニット５４，５４Ａを構成したものである。５４ａは第１（再帰）ユニット非共有バス端子であり、これは第（ｉ，１）ユニット非共有バス端子１４ａと同等、５４ｂは第１（再帰）ユニット共有バス端子であり、これは第（ｉ，１）ユニット共有バス端子１４ｂと同等である。
【００６４】
５５ａは第１（再帰）グローバル非共有バスであり、これは第１グローバルバス１５ａと同等、５５ｂは第１（再帰）グローバル共有バスであり、これは第１グローバル共有バス１５ｂと同等である。
【００６５】
５７ａは第１（再帰）非共有インタフェースであり、これは第１非共有インタフェース１７ａと同等、５７ｂは第１（再帰）共有インタフェースであり、これは第１共有インタフェース１７ｂと同等である。
【００６６】
図から明らかなように、実施の形態１のプロセッサユニット１４と、再帰プロセッサユニット５４の構造は再帰的に同じであることが判る。この結果、更にこの再帰プロセッサユニット５４を１つのプロセッサユニットとして、二重、三重の再帰が可能となる。また、再帰プロセッサユニット５４を実施の形態１の場合で示したが、実施の形態２をベースにした構成にしてもよい。このように、再帰を行うことにより目的に合わせて多様な構成が組める。
実施の形態６．
非共有バスの多バス化
図８は発明の実施の形態６に係るマルチプロセッサ装置を示すブロック図であり、前記図１に示した実施の形態１と同一の部分については同一符号を付して重複説明を省略する。また、この実施の形態６では実施の形態１について述べるが実施の形態２〜４でも同じことができるので、これら形態の説明は省略する。
【００６７】
第ｉＣＰＵ１１は２つのＣＰＵ非共有バス端子１１ｂ，１１ｃを持っている。従来分を第（ｉ，１）ＣＰＵ非共有バス端子１１ｂ、増設分を第（ｉ，２）ＣＰＵ非共有バス端子１１ｃとする。６２は第（ｉ，２）ＣＰＵ非共有バス端子１１ｃに接続した第（ｉ，２）ローカルキャッシュメモリであり、その機能は第（ｉ，１）ローカルキャッシュメモリ１２と変わらない。この第（ｉ，２）ローカルキャッシュメモリ６２は第（ｉ，２）ＣＰＵ側バス端子６２ａと第（ｉ，２）バス側バス端子６２ｂをもつ。第（ｉ，２）ＣＰＵ側バス端子６２ａは第ｉＣＰＵ１１の増設された第（ｉ，２）ＣＰＵ非共有バス端子１１ｃに接続されている。６３ａは第（ｉ，２）ローカル非共有バスであり、増設された第（ｉ，２）ローカルキャッシュメモリ６２の第（ｉ，２）バス側バス端子６２ｂに接続されている。
【００６８】
第ｉプロセッサユニット１４は増設された第（ｉ，２）ユニット非共有バス端子１４ｃを持ち、第（ｉ，２）ローカル非共有バス６３ａが接続されている。６５ａは増設された第２グローバル非共有バス、６７ａは増設された第２非共有インタフェース、６９ａは第２非共有インタフェース６７ａに接続された第２非共有メモリである。
【００６９】
なお、図示しないが第１非共有メモリ１９ａおよび第２非共有メモリ６９ａは、共有データ格納用メモリとして第１非共有インタフェース１７ａまたは第２非共有インタフェース６７ａからアクセスできるようにしてもよい。また、それぞれのグローバルインタフェースに他の装置がつながっていてもかまわない。
【００７０】
次に動作について説明する。
例えば、キャッシュメモリが２つ分のアドレス情報を格納することができるときに３つ以上のアドレスを読み出す場合、パージが起こりやすくなる。パージが発生すると、第１グローバル非共有バス１５ａの使用率が高くなり混雑する。ここで、混雑するというのは第ｉＣＰＵ１１が第１グローバル非共有バス１５ａを使用したいのに他のＣＰＵが第１グローバル非共有バス１５ａを使用しているため、使用できず、自分が使用できるまで待たなければいけない状態をいう（この状態ではＣＰＵが待たされるため処理能力が落ちる）。
【００７１】
このような、非共有データのためのアドレスを多く使用し、かつ第（ｉ，１）ローカルキャッシュメモリ１２の容量が小さい結果、パージが発生し、バスが混雑する場合、この実施の形態６のように第２グローバル非共有バス６５ａを増設することによりバス負荷を軽減できる。
【００７２】
第ｉＣＰＵ１１は、非共有データをアクセスするときに、従来分、増設分のどちらのバスを使用するかを選択する。この選択の最も簡単な方法はアドレスが偶数／奇数によって振り分ける方法がある。仮に第（ｉ，２）非共有バス端子を選択したとして、第ｉＣＰＵ１１は第（ｉ，２）ローカルキャッシュメモリ６２を通して第２非共有インタフェース６７ａを通って第２非共有メモリ６９ａにアクセスする。
【００７３】
一方、このとき第（ｉ＋１）ＣＰＵ（不図示）等の他のＣＰＵが第１グローバル非共有バス１５ａから第１非共有インタフェース１７ａを通って第１非共有データ格納用メモリ１９ａへ行くパスはあいている。その結果、他のＣＰＵがこのパスを使用することができる。
【００７４】
この実施の形態６では、バス使用のタイミングもあるが、２つのＣＰＵが非共有データ用メモリにアクセスできる。その結果、待ち時間が減り、バスの混雑度が減り、処理速度が向上する。ここでは、グローバル非共有バスを１本増設した場合について述べたが、同じ様にバスの数を増やせばより混雑度が減る。このような構成は多チップで構成するよりも系全体で１チップ構成した方がよい。理由として、１つのチップの出入口（ピン）は現在の技術では高々３００本程度であり、無限にバスを増やすことができないからである。
【００７５】
ここで、一般にプロセッサユニットの数（ＣＰＵの数）以上のバスを増設しても意味はない。例えば１０ＣＰＵのために１００本バスを用意しても一度に使用するバスの数が高々ＣＰＵの数（１０本）なので残り９０本は未使用の状態になる。一般に、最適なバスの数は以下のように表せられる。
【００７６】
グローバルバス数＝ＣＰＵ×（単位時間内の平均非共有データアクセス数×アクセス時間／単位時間）
実施の形態７．
共有バスの多バス化
図示しないが、実施の形態６を応用し、グローバル共有バスの多バス化をしてもよい。この場合も実施の形態６と同じ効果が期待できる。
実施の形態８．
遅い周辺機器のための外部Ｉ／Ｏバス
図９はこの発明の実施の形態８に係るマルチプロセッサ装置を示すブロック図であり、前記図１に示した実施の形態１と同一の部分については同一符号を付して重複説明を省略する。
【００７７】
１１は第ｉＣＰＵである。この第ｉＣＰＵ１１は第（ｉ，１）ＣＰＵ外部装置バス端子１１ｄをもつ。７３ｃは第（ｉ，１）ローカル外部装置バスで、第（ｉ，１）ＣＰＵ外部装置バス端子１１ｄに接続されている。１４は第ｉプロセッサユニットであり、新たに第（ｉ，１）ユニット外部装置バス端子１４ｄが増設され、内部で第（ｉ，１）ローカル外部装置バス７３ｃに接続されている。７５ｃは第１グローバル外部装置バスである。この第１グローバル外部装置バス７５ｃは、それぞれの第ｉプロセッサユニット１４の第（ｉ，１）ユニット外部装置バス端子１４ｄに接続されている。７７ｃは第１外部装置インタフェース、７９Ｃは外部装置である。この外部装置７９Ｃはアクセス時間が非常にかかるものとする。
【００７８】
バスの停止の説明
この実施の形態８では、遅い外部装置７９Ｃにアクセスしたことによるバスの停止を回避することができる。ここでバスの停止について説明する。実施の形態１のような回路で、共有インタフェース１７ｂの外に遅い外部装置１９ｂがあり、そのアクセス時間が１０，０００クロックであったとする。第１ＣＰＵが第１グローバル共有バス１５ｂを通して、この遅い外部装置１９ｂにアクセスしたとき、他のＣＰＵは、第１ＣＰＵのアクセスが終了するまで第１グローバル共有バス１５ｂを使用できない。
【００７９】
その結果、他のＣＰＵが第１グローバル共有バスをアクセス使用とすると、第１ＣＰＵのアクセス完了まで最悪１０，０００クロック待たされることになる。アクセス完了までの間は誰も何もすることができなくなるためバスが停止した状態になる。最悪例としてＣＰＵが１０個あったとして、各ＣＰＵは１，０００，０００クロックの間に１回外部装置のアクセスを実施したとする。外部装置アクセスのための時間は１０，０００クロック×１［回］×１０［ＣＰＵ］＝１００，０００クロックとなり、約１０％の時間がバスの停止時間となってしまう。この結果、全てのＣＰＵは最大１０％程度の速度下が起こる。この実施の形態８では、このようなバスの停止を回避するため、外部装置用のバスを増設したものである。
【００８０】
次に動作について説明する。
第ｉＣＰＵ１１はアクセスする番地情報から（または命令から）、この番地が外部装置７９ｃに割り当てられた番地かを判断する。外部装置７９ｃに割り当てられた番地であると判断した場合、第ｉＣＰＵ１１は第（ｉ，１）ＣＰＵ外部装置バス端子１１ｄからアクセスを開始して、これが第ｉプロセッサユニット１４の増設された第（ｉ，１）ユニット外部装置バス端子１４ｄを通り、第１グローバル外部装置バス７５ｃ、第１外部装置インタフェース７７ｃを通って外部装置７９ｃにアクセスすることになり、このときは第１グローバル共有バス１５ｂと第１グローバル非共有バス１５ａは一切使用しない。
【００８１】
この結果、他のＣＰＵが共有／非共有データをアクセスしにいっても全くバスの停止に巻き込まれることなく、速度を落とさずに処理を実行し続けることができる。また、この実施の形態８では実施の形態１について述べたが、別に実施の形態１に限ったことでなく、実施の形態２〜４でも同じことが言える。また、実施の形態５のように再帰的構成も可能で、実施の形態６又は実施の形態７のようにバスを多重化することもできる。
実施の形態９．
非共有データをローカルメモリに入れる。
【００８２】
図１０はこの発明の実施の形態９に係るマルチプロセッサ装置を示すブロック図であり、前記図１に示した実施の形態１と同一の部分については同一符号を付して重複説明を省略する。
【００８３】
ここで、非共有データ、その中でもワークエリアはある一定の番地にのみアロケートさせるようにしておく。ＣＰＵがワークエリアにアクセスするとき、番地情報から第（ｉ，１）ローカルメモリ８６にアクセスするようにする。この第（ｉ，１）ローカルメモリ８６は第ｉＣＰＵ１１の専用となる。ワークエリア自体は該当処理（ＣＰＵ）で閉じているので、別に外に出す必要がない。外に出す必要がなければ第１グローバルバス３５を使用しなくても良い。その結果、バス使用率が極端に減ることになる。
【００８４】
また、ワークエリアのためのローカルメモリ８６が小さい場合、第１グローバルバスにぶらさがったメモリをワークエリアとして使用してもよい。また、図１１のようにローカルメモリ８６が遅い場合は第（ｉ，１）ローカルキャッシュメモリ１２を通してアクセスさせるようにしても良い。いずれにせよこの実施の形態９では、バス使用率が下がるので、より高速化が期待できる。バス使用率が下がると、実施の形態３又は４を実施するのに有利となる。この実施の形態３又は４を実施することは面積縮小につながる。図１０、図１１はこの観点から実施の形態３をベースにしている。実施の形態３をベースにした場合、非常に簡単な構成になる。
実施の形態１０．
共有／非共有の判定方法1 〜アドレスによる判定  その１〜
これまでは、ＣＰＵが共有／非共有を判定できることを前提にして実施の形態を記述してきたが、この実施の形態からは、これまでの実施の形態を構成するに当たり、どのようなＣＰＵが適当であるか、または一般のＣＰＵであってもどのような周辺回路をつければよいかについて説明する。
【００８５】
図１２はこの発明の実施の形態１０に係るマルチプロセッサ装置を示すブロック図であり、１１は実施の形態１の（あるいはこれをベースとした実施の形態の）ＣＰＵである。１０１は第ｉＣＰＵ本体部である。この第ｉＣＰＵ本体部１０１自体は共有／非共有の判定をする機能を必要とはしない。第ｉＣＰＵ本体部１０１はアクセスしようとする番地を示す第ｉＣＰＵ本体アドレスバス端子１０１ａ、番地から読み出した情報を搬送し、又は書き込む情報を伝達する第ｉＣＰＵ本体データバス端子１０１ｂ、読む、又は書く等の第ｉＣＰＵ本体制御情報を出力する第ｉＣＰＵ本体制御バス端子１０１ｃを有する。
【００８６】
１０２は第ｉアドレス共有／非共有バス選択装置で、ＣＰＵ本体部１０１の第ｉＣＰＵ本体アドレスバス端子１０１ａに接続された第ｉＣＰＵアドレス選択装置ＣＰＵ側端子１０２ａ、第ｉアドレス選択装置共有側端子１０２ｂ、第ｉアドレス選択装置非共有側端子１０２ｃ、第ｉアドレス選択装置判定入力端子１０２ｄを有する。この第ｉアドレス共有／非共有バス選択装置１０２は第ｉアドレス選択装置判定入力端子１０２ｄに「共有」という情報が入れば、第ｉＣＰＵアドレス選択装置ＣＰＵ側端子１０２ａと第ｉアドレス選択装置共有側端子１０２ｂを接続し、第ｉアドレス選択装置判定入力端子１０２ｄに「非共有」という情報が入れば、第ｉＣＰＵアドレス選択装置ＣＰＵ側端子１０２ａと第ｉアドレス選択装置非共有側端子１０２ｃを接続する。
【００８７】
１０３は第ｉデータ共有／非共有バス選択装置で、ＣＰＵ本体部１０１の第ｉＣＰＵ本体データバス端子１０１ｂに接続された第ｉＣＰＵデータ選択装置ＣＰＵ側端子１０３ａ、第ｉデータ選択装置共有側端子１０３ｂ、第ｉデータ選択装置非共有側端子１０３ｃ、第ｉデータ選択装置判定入力端子１０３ｄを有する。この第ｉデータ共有／非共有バス選択装置１０３は第ｉデータ選択装置判定入力端子１０３ｄに「共有」という情報が入れば、第ｉＣＰＵデータ選択装置ＣＰＵ側端子１０３ａと第ｉデータ選択装置共有側端子１０３ｂを接続し、第ｉデータ選択装置判定入力端子１０３ｄに「非共有」という情報が入れば、第ｉＣＰＵデータ選択装置ＣＰＵ側端子１０３ａと第ｉデータ選択装置非共有側端子１０３ｃを接続する。
【００８８】
１０４は第ｉ制御共有／非共有バス選択装置で、ＣＰＵ本体部１０１の第ｉＣＰＵ本体制御バス端子１０１ｃに接続された第ｉＣＰＵ制御選択装置ＣＰＵ側端子１０４ａ、第ｉ制御選択装置共有側端子１０４ｂ、第ｉ制御選択装置非共有側端子１０４ｃ、第ｉ制御選択装置判定入力端子１０４ｄを有する。この第ｉ制御共有／非共有バス選択装置１０４は第ｉ制御選択装置判定入力端子１０４ｄに「共有」という情報が入れば、第ｉＣＰＵ制御選択装置ＣＰＵ側端子１０４ａと第ｉ制御選択装置共有側端子１０４ｂを接続し、第ｉ制御選択装置判定入力端子１０４ｄに「非共有」という情報が入れば、第ｉＣＰＵ制御選択装置ＣＰＵ側端子１０４ａと第ｉ制御選択装置非共有側端子１０４ｃを接続する。
【００８９】
第ｉＣＰＵ１１は第（ｉ，１）ＣＰＵ側共有バス端子１１ａと第（ｉ，１）ＣＰＵ側非共有バス端子１１ｂを有する。この第ｉＣＰＵ１１の第（ｉ，１）ＣＰＵ側共有バス端子１１ｂからの配線は、第ｉＣＰＵ１１の内部でアドレス、データ、制御の３つに分けられ、それぞれ第ｉアドレス共有／非共有バス選択装置１０２の第ｉアドレス選択装置共有側端子１０２ｂ、第ｉデータ共有／非共有バス選択装置１０３の第ｉデータ選択装置共有側端子１０３ｂ、第ｉ制御共有／非共有バス選択装置１０４の第ｉ制御選択装置共有側端子１０４ｂに接続されている。
【００９０】
また、第ｉＣＰＵ１１の第（ｉ，１）ＣＰＵ側非共有バス端子１１ａからの配線は、第ｉＣＰＵ１１の内部でアドレス、データ、制御の３つに分けられ、それぞれ第ｉアドレス共有／非共有バス選択装置１０２の第ｉアドレス選択装置非共有側端子１０２ｃ、第ｉデータ共有／非共有バス選択装置１０３の第ｉデータ選択装置非共有側端子１０３ｃ、第ｉ制御共有／非共有バス選択装置１０４の第ｉ制御選択装置非共有側端子１０４ｃに接続されている。
【００９１】
１０５は第ｉ共有／非共有判定装置であり、第ｉＣＰＵ本体アドレスバス端子１０１ａに接続されたアドレスバス入力端子１０５ａを有するとともに、第ｉアドレス共有／非共有バス選択装置１０２、第ｉデータ共有／非共有バス選択装置１０３、及び第ｉ制御共有／非共有バス選択装置１０４のそれぞれの第ｉアドレス選択装置判定入力端子１０２ｄ、第ｉデータ選択装置判定入力端子１０３ｄ、第ｉ制御選択装置判定入力端子１０４ｄに接続された第ｉ選択判定出力端子１０５ｂを有する。この第ｉ共有／非共有判定装置１０５は固定された回路でよい。
【００９２】
アクセスする番地情報で共有／非共有を分ける
この実施の形態１０は、共有又は非共有をアクセスするアドレス（番地）から知るという非常にシンプルな方法である。ユーザーはあらかじめ共有データを置くアドレス（例えば００００番地〜７ＦＦＦ番地）、非共有データを置くアドレス（例えば８０００番地〜ＦＦＦＦ番地）と分けておく。ユーザーは、この分けた番地情報に従ってプログラムを作成する。第ｉＣＰＵ本体部１０１はプログラム解読中にデータアクセス命令を受け取ると、制御バス入出力から「リード」又は「ライト」という情報を出力し、かつリードの場合はアドレスバス入出力からアクセスするアドレスを出力し、ライトの場合はアドレスバス入出力からアクセスするアドレスを出力すると共に、データバス入出力から書き込むデータを出力する。
【００９３】
次に、第ｉ共有／非共有判定装置１０５は第ｉＣＰＵ本体部１０１が出力したデータ情報を受け取り、これが共有されたデータの割り当てられたアドレスか非共有データの割り当てられたアドレスかを判定する。その結果を第ｉ選択判定出力端子１０５ｂを通して第ｉアドレス共有／非共有バス選択装置１０２、第ｉデータ共有／非共有バス選択装置１０３、及び第ｉ制御共有／非共有バス選択装置１０４のそれぞれの第ｉアドレス選択装置判定入力端子１０２ｄ、第ｉデータ選択装置判定入力端子１０３ｄ、第ｉ制御選択装置判定入力端子１０４ｄに「共有データにアクセスした」「非共有データにアクセスした」という情報を伝達する。第ｉアドレス共有／非共有バス選択装置１０２、第ｉデータ共有／非共有バス選択装置１０３、及び第ｉ制御共有／非共有バス選択装置１０４は、この結果に応答してバスを接続する。
【００９４】
上記のように共有／非共有を、その割り付ける番地によって分けることは、第ｉ共有／非共有判定装置１０５の論理回路の単純化に非常に有効である。００００〜７ＦＦＦと８０００〜ＦＦＦＦで共有／非共有を分けた場合、第ｉ共有／非共有判定装置１０５はアドレスの最上位線にせいぜいインバータを一つ加えれば実現できる。このように、共有／非共有を分ける機能的負荷はそんなに多くない。その結果、従来例に比べ、機能的負荷の削減ができることになる。
【００９５】
また、第ｉＣＰＵ本体部を一般の共有・ 非共有の判定をもたないＣＰＵにおきかえ、各共有／非共有判定装置および判定装置を周辺回路としてもよい。通常の（共有／非共有の判定をもたない）ＣＰＵに置き換えることができるため安価な部品で作成できる。各共有／非共有判定装置１０５は、単なるセレクタであるので、部品としては増えるが安価なもので作成できる。ただしこの方法はＣＰＵ作成時に作り込むことになるため、ユーザーは共有と非共有のメモリ割り当てを変更できない。
実施の形態１１．
共有／非共有の判定方法２〜アドレスによる判定  その２〜
図１３はこの発明の実施の形態１１を示すもので、この実施の形態１１では、共有／非共有判定装置として、入力をアドレス、出力をそのアドレス（ブロック）に対する共有／非共有を格納した第ｉ共有／非共有判定ＲＡＭ１１５を使用している。
【００９６】
この実施の形態１１では、アクセスしようとする番地の上位（例えば８ｂｉｔ）を高速な第ｉ共有／非共有判定ＲＡＭ１１５に入力する。第ｉ共有／非共有判定ＲＡＭ１１５には該当番地が共有であるか非共有であるかの情報が納められ、その結果をそのまま共有／非共有決定線に伝達する。図示しないが、この第ｉ共有／非共有判定ＲＡＭ１１５の情報を書き換えるのは簡単で、例えば上位８ｂｉｔが“００”であれば第ｉ共有／非共有判定ＲＡＭ１１５にアクセスできるようにしておく。
【００９７】
このようにすることにより、ユーザーがある程度の共有／非共有領域を指定できる。ただし、いくらでも第ｉ共有／非共有判定ＲＡＭ１１５が大きければ問題はないが、第ｉ共有／非共有判定ＲＡＭ１１５は有限である。その結果、１バイト単位に共有／非共有判定を設定することはまず不可能である。また、この方法であれば、アドレスの上位しか見ていないため、固定されたブロック境界、固定された長さしか指定できない。
実施の形態１２．
共有／非共有の判定方法３〜アドレスによる判定  その３〜
図１４はこの発明の実施の形態１２を示すもので、第ｉＣＰＵ本体部１０１はアクセスしようとする番地を示す第ｉＣＰＵ本体アドレスバス端子１０１ａ、番地から読み出した情報を搬送し、又は書き込む情報を伝達する第ｉＣＰＵ本体データバス端子１０１ｂ、読む、又は書く等の第ｉＣＰＵ本体制御情報を出力する第ｉＣＰＵ本体制御バス端子１０１ｃを有する。
【００９８】
１２７は第ｉアドレスデコーダである。この第ｉアドレスデコーダ１２７は、番地によってアクセスする装置を決定するもので、「ＪｄｇＲｅｇ」「ＰＴｂｌ」「Ｏｔｈｅｒ」という信号線を持つ。この実施の形態では、００００−００ＦＦ番地が指定されれば「ＪｄｇＲｅｇ」に“許可”という信号を送り、０１００−０３ＦＦであれば「ＰＴｂｌ」信号に“許可”という信号を送り、それ以外の場合には「Ｏｔｈｅｒ」に“許可”を送る。これら出力は各装置の動作を制御することになるので、図中では制御信号線のひとつとして扱う。
【００９９】
第ｉアドレス共有／非共有バス選択装置１２２、第ｉデータ共有／非共有バス選択装置１２３、及び第ｉ制御共有／非共有バス選択装置１２４は、それぞれ動作許可端子Ｅｎをもち、この動作許可端子Ｅｎに“許可”という入力が入れば、実施の形態１０で説明した動作をし、入力信号が“許可”でなければ、第ｉＣＰＵ本体部１０１の第ｉＣＰＵ本体アドレスバス端子１０１ａ、第ｉＣＰＵ本体データバス端子１０１ｂ、第ｉＣＰＵ本体制御バス端子１０１ｃを各第ｉアドレス・データ・制御選択装置共有側端子、第ｉアドレス・データ・制御選択装置非共有側端子のどちらにも接続しない。
【０１００】
この装置の動作許可端子Ｅｎは第ｉアドレスデコーダ１２７の「Ｏｔｈｅｒ」端子と接続され、第ｉＣＰＵ本体部１０１が０４００−ＦＦＦＦにアクセスする場合に接続動作し、００００−０３ＦＦの場合はすべてのバスを切り離す。
【０１０１】
第ｉ共有／非共有判定装置１２５は、アドレス入力端子１２５ａとデータ入力端子１２５ｂと制御入力端子１２５ｃを持ち、これは第ｉＣＰＵ本体部１０１の第ｉＣＰＵ本体アドレスバス端子１０１ａ、第ｉＣＰＵ本体データバス端子１０１ｂ、第ｉＣＰＵ本体制御バス端子１０１ｃに接続されている。この装置はＣＰＵ本体制御バスの「ＪｄｇＲｅｇ」という信号線に接続されている。この装置は、ラッチを一つ持ち、ＣＰＵが００００−００ＦＦをアクセスするときに第ｉアドレスデコーダによって「ＪｄｇＲｅｇ」端子から“許可”信号が出力されることにより動作し、この時にアクセス可能となる。
【０１０２】
１２６は第ｉポインタテーブル格納メモリである。この装置はアドレス入力端子１２６ａとデータ入力端子１２６ｂと制御入力端子１２６ｃを有し、これは第ｉＣＰＵ本体部１０１の第ｉＣＰＵ本体アドレスバス端子１０１ａ、第ｉＣＰＵ本体データバス端子１０１ｂ、第ｉＣＰＵ本体制御バス端子１０１ｃに接続されている。この装置はＣＰＵ本体制御バスの「ＰＴｂｌ」という信号線に接続されている。この装置は、ラッチを一つ持ち、ＣＰＵが０１００−０３ＦＦをアクセスするときに第ｉアドレスデコーダ１２７によって「ＰＴｂｌ」端子から“許可”信号が出力されることにより動作し、この時にアクセス可能となる。
【０１０３】
より説明をわかりやすくするために、第ｉＣＰＵ本体部１０１から見たときのこの実施の形態１２のメモリマップを第１５図に示す。
【０１０４】
この実施の形態１２はメモリ管理を「ハンドル」と呼ばれる方法でソフトウェア的に実施しているコンピュータ構成（この内容についてはＡｐｐｌｅ Ｃｏｍｐｕｔｅｒ編集、「Ｉｎｓｉｄｅ Ｍａｃｉｎｔｏｓｈ Ｖｏｌ Ｉ，ＩＩ」（バークレイ出版）に詳しく記述されている）に適用している。
【０１０５】
まず、メモリの一部分をブロックとして使用する場合（例えば、０４００〜０４ＦＦ番地）、ポインタテーブルにそのメモリブロックの先頭番地（０４００番地）とその長さ（２５６Ｂｙｔｅ＝０１００（Ｈｅｘ）Ｂｙｔｅ）を組にしてポインタテーブルのとある番地（ここで００１０番地に「０４００」、００１４番地に「０１００」）を記述する。このメモリブロックにアクセスするときは、ソフトウエア的にメモリブロックの先頭番地の内容の置かれたポインタテーブル上の番地（００１０番地）でアクセスするものである。ポインタテーブル上の番地を「ハンドル」という。故に、ユーザーの作成したプログラムがこのメモリブロックのある場所（先頭から８番目）にアクセスするときはハンドル（００１０番地）の内容（００１０番地の内容は０４００）を読み込み、更にこの内容（００１０番地の内容である０４００番地）からの加算値（８−１）を足した番地（０４０７番地）にアクセスしにいく。この実施の形態で使用されるコンピュータ構成はこれらを全てソフトウェアで実施する。
【０１０６】
この実施の形態は、このポインタテーブルの情報に「共有／非共有」ｂｉｔを加えたもので、この共有／非共有ｂｉｔを加えた場合の動作を図１６において説明する。ユーザーの作成したプログラムがこのメモリブロックのある場所（先頭から８番目）にアクセスするときはハンドル（００１０番地）の内容（００１０番地の内容は０４００）を読み込む（ステップＳＴ１２１）。
【０１０７】
このとき、第ｉアドレスデコーダ１２７は第ｉポインタテーブルにのみアクセスを“許可”し、第ｉＣＰＵ本体部１０１はポインタテーブルから番地０１００の内容を読み込むことができる。 一方、 第ｉアドレス共有／非共有バス選択装置１２２、第ｉデータ共有／非共有バス選択装置１２３、及び第ｉ制御共有／非共有バス選択装置１２４は、動作許可されていないのでバスを切り離す。次に、同様に共有ｂｉｔを読み込む（ステップＳＴ１２２）。
【０１０８】
この次に、読み込んだ共有情報を（００００−００ＦＦの任意の番地にアクセスすることにより）第ｉ共有／非共有判定装置１２５にアクセスする（ステップＳＴ１２３）。このとき、各共有／非共有バス選択装置１２２，１２３，１２４は依然バスを切り離したままである。
【０１０９】
最後のステップＳＴ１２４で、第ｉＣＰＵ本体部１０１がハンドルの内容（００１０番地の内容である０４００番地）からの加算値（８−１）を足した番地（０４０７番地）にアクセスしにいくとき、アドレスデコーダによって各共有／非共有バス選択装置１２２，１２３，１２４は動作を開始し、共有または非共有を判定することにより所望のバスへ接続する。
【０１１０】
（更に境界自由度を持たせられる）
この実施の形態１２と実施の形態１１とを見比べた場合、実施の形態１１では、固定された境界及び長さでの共有／非共有のみが設定できたが、この実施の形態１２では任意の境界（先頭番地）及び任意の長さで共有、非共有の設定をすることができる。なお、この実施の形態１２の注意点として、他のＣＰＵの非共有領域にアクセスしないようにしなければならない。また、共有／非共有の判定はＣＰＵがソフトウェア的に担当する（ハード的に担当することはむづかしい）ことになるため、メモリアクセスがやや遅くなる。
【０１１１】
図示しないが、内部のとあるレジスタの書き込み内容をそのまま即座に外部へ出力できる第ｉＣＰＵ本体部１０１（というＣＰＵ部品）であれば、第ｉ共有／非共有判定装置１２５をこのレジスタでかねることができ（たとえばレジスタＢとする）、その結果、ステップＳＴ１２３が省略できるため高速となる。同様のことをチップとして構成する場合、第ｉＣＰＵ本体部１０１からアルミ配線をたった一本引き出して各共有、非共有選択端子に接続してやれば可能である。
【０１１２】
なお、この例でメモリブロックの確保・削除・変更が発生した場合について簡単に述べる。ポインタテーブルは本来各ＣＰＵの共有情報であるが、このシステム系でポインタテーブル情報はよく参照される場合が多く、メモリブロックの確保・削除・変更（以下変更のみで説明）に伴う書き込みされることはまれである。メモリブロックの変更があった場合、その変更を発生したＣＰＵがあらかじめ共有領域のどこかに変更したハンドルとその内容を書いておき、その後で全ＣＰＵに一斉に割り込みをかけさせ、全ＣＰＵがその内容をよむことにより第ｉポインタテーブル格納メモリ１２６の内容を改定すればよい。
実施の形態１３．
共有／非共有の判定方法４〜アドレスによる判定  その４〜
実施の形態１０〜１２では、単体使用ＣＰＵ（ＣＰＵ本体部）をそのまま使用して実施の形態１〜９に示すマルチプロセッサ装置に適用する方法を記述した。実施の形態１３では単体使用ＣＰＵ自体に必要な機能を載せて改良することにより、マルチプロセッサ装置に適用する場合を述べる。
【０１１３】
この実施の形態１３では、単体使用ＣＰＵ（ＣＰＵ本体部）はセグメントにてメモリ管理を実施するＣＰＵについて、共有／非共有判定を実施するための改良適用法について述べる。セグメント自体は実施の形態１２のメモリブロックとかわらない。セグメントはセグメントディスクリプタ（図１５に示す実施の形態１２のポインタテーブルに相当する）によって記述され、セグメントディスクリプタは先頭番地（例えば０４００番地）、長さ（例えば０１００バイト）、ステータス情報ｂｉｔ等をもつ。セグメントディスクリプタはセグメントディスクリプタテーブル（実施の形態１２のポインタテーブルに相当）に配置され、それぞれにセグメント番号（０，１，２，．．．で与えられ、実施の形態１２のハンドルに相当）が打たれている。ＣＰＵがメモリにアクセスする場合は、１命令で、このセグメント番号（例えば７）の格納アドレスから先頭番地（セグメント７の先頭番地、０４００番地）とステータスビットを読み込み、更にその番地（０４００番地）からの相対番地（８−１）を加算して（０４０７番地）メモリにアクセスしにいく。そしてこの方法の特徴的なことはソフトウェア的には１命令でハード的にこの処理を実施することである。
【０１１４】
（単体ＣＰＵ（ＣＰＵ本体部）の改定方針）
しかし、一般的にこのようなセグメント管理によってメモリアクセスを実施するＣＰＵは、外部に対して「セグメントを読む」か「セグメントデイスクリプタを読む」かを出力しない。また、いま「どのセグメントをよんでいるか」を出カしない。このため、外部でセグメントによる共有／非共有判定ができない。安易な方法として、実施の形態１０をべースにして共有するセグメントを共有領城に、非共有セグメントを非共有領域に配置する方法が簡単であるが、融通が効かない。
【０１１５】
実施の形態１２のようにメモリアクセス時にソフトウェア的に共有／非共有装置に書きこむようにすると、今度は過去の豊富なソフトウェア互換性がなくなる。そこで、この実施の形態ではブラックボックスとなっているＣＰＵから、機能上もっていて中で閉じている配線を外部に引き出すという簡単な改訂を実施することにより、この単体のＣＰＵにも共有／非共有判定ができるようにしたものである。
【０１１６】
図１７は実施の形態１３によるマルチプロセッサ装置を示すブロック図であり、図において、３８６はセグメントによってメモリにアクセスするＣＰＵ本体部である。このＣＰＵ本体部３８６は、セグメントディスクリプタテーブルを読みにいくか、これ以外を読みにいくかを決定する“Ｓｇｒ”端子１３１ｄを持っ。このＳｇｒ端子１３１ｄはセグメントディスクリプタテーブルを読みにいくときは“ＲｅａｄＳＧＴ”という情報を電気的に出力し、一方でセグメントを読みにいくときは“ＡｃｃＭｅｍ”という情報を出力する。ＣＰＵ本体部３８６は、Ｓｇｒ端子１３１ｄがＡｃｃＭｅｍの情報を出力するとき、アクセスするセグメント番号を出力するためのセグメント番号出力“ＳＮ０”端子１３１ｅをもつ。
【０１１７】
このＳＮ０端子１３１ｅはＣＰＵが実際にメモリをアクセスする（Ｓｇｒ：ＡｃｃＭｅｍ）ときにセグメント番号を出力する。機能上、これらの端子に相当する信号はＣＰＵ本体部内に存在するはずであり、これらをアルミ配線で引き出すことはそんなに労力はかからない。
【０１１８】
１３６はセグメントディスクリプタテーブルで、ＲＡＭである。このセグメントディスクリプタテーブルは“許可（ＥＮ）”信号をもち、ＣＰＵ本体部３８６のＳｇｒ端子１３１ｄに接続されている。セグメントディスクリプタテーブル１３６は“許可（ＥＮ）”入力が“ＲｅａｄＳＤＴ”となったとき（Ｓｇｒ：ＲｅａｄＳＤＴになったときで、ＣＰＵがセグメントディスクリブタテーブルを読みにいったとき）に動作し、ＣＰＵの要求に対してセグメントディスクリプタを出力する。許可ＥＮがＲｅａｄＳＤＴ以外のときは何もせず何も出力しない。
【０１１９】
１３５は共有／非共有判定装置でＲＡＭであり、セグメント番号を入力端子１３５ａと共有／非共有判定出力端子１３５ｂをもつ。この共有／非共有判定装置自体は実施の形態１１と変わらず、差分は入力がアドレスの上位８ビットではなく、ＣＰＵ本体部３８６のＳＮ０端子から出力される（アクセスする）セグメント番号である。実施の形態１１と同じように、共有／非共有判定装置１３５は、入力されたセグメント（実施の形態１１でいうアドレス上位８ビット）に対応する共有／非共有情報をもっており、与えられたセグメント番号の共有／非共有情報を共有／非共有判定出力に出力する機能をもつ。
【０１２０】
１２２，１２３，１２４の各共有／非共有バス選択装置は、動作許可端子を持つが、この動作許可端子はＣＰＵ本体部３８６のＳｇｒ端子に接続され、動作許可端子が“ＡｃｃＭｅｍ”であれば共有／非共有判定入力の情報にしたがってバス接続を実施し、動作許可信号がこれ以外の場合には動作せず、すべてのバスを切り離す。
【０１２１】
次に動作について説明する。
ＣＰＵ本体部３８６は１つのソフトウェア的メモリアクセス命令でセグメントディスクリプタテーブルを読むという動作とセグメント自体にアクセスする動作を実施する。まず、ＣＰＵ本体部３８６がセグメントディスクリプタテーブル１３６にアクセスする揚合、ＣＰＵ本体部３８６は所定のアクセス手順にしたがってメモリアクセス要求を出力するとともに、Ｓｇｒ端子１３１ｄから“ＲｅａｄＳＤＴ”という信号を出カする。各共有／非共有バス選択装置１２２，１２３，１２４は、Ｓｇｒ端子１３１ｄに接続された動作許可信号に入力される信号が“ＲｅａｄＳＤＴ”であるため、動作せず、すべてのバスを切り離す。共有／非共有判定装置１３５は動作するかもしれないが、各共有／非共有バス選択装置１２２，１２３，１２４が動作しないため、出力は無効となる。一方、セグメントディスクリプタテーブル１３６は、ＥＮ信号が“ＲｅａｄＳＤＴ”となるため動作を開始し、ＣＰＵ本体部３８６に対してセグメントディスクリプタを送信する。
【０１２２】
次に、ＣＰＵ本体部３８６がセグメントにアクセスする場合、ＣＰＵ本体部３８６のＳｇｒ端子１３１ｄから“ＲｅａｄＭｅｍ”が出力されるとともにＳＮ０端子１３１ｅからアクセスするセグメントの番号が出力される。このときセグメントディスクリプタテーブル１３６はＥＮ信号が“ＲｅａｄＭｅｍ”であるため動作せず、何も出力しない。一方、共有／非共有判定装置１３５はＣＰＵ本体部３８６のＳＮ０端子１３１ｅから出力されたセグメント番号を入力し、ＲＡＭとして中に蓄えられている情報から、該当セグメントの共有／非共有判定を出力する。各共有／非共有バス選択装置１２２，１２３，１２４は動作許可端子に“ＡｃｃＭｅｍ”が入力されているため、それぞれの共有／非共有判定入力からの結果に従い、各バスの接続を行う。このとき、ソフトウェア的には何も変更の必要がない。
【０１２３】
この実施の形態１３によれば、単体使用のＣＰＵ（ＣＰＵ本体部）に最小限の、しかもなるべく労力の少ない改訂を実施することにより、共有／非共有の判定を可能にした。この実施の形態１３の場合、ここでいう労力とは“Ｓｇｒ”端子１３１ｄに相当する端子を出すことと、“ＳＮ０”端子１３１ｅに相当する端子を出すことで、アルミ配線を外に出す以外の労カはない。しかも、これら端子は機能上、上記セグメント管埋を実施する単体使用のＣＰＵには存在するはずで、さらに単体のＣＰＵの機能を搭載する必要がない。その結果、比較的安く改訂できる。
【０１２４】
また、上記の方法であれば、内部および外部のハード的な付加はあってもソフトウェア的には何も付加するものはない。これはこれまでの過去のソフトウェア資産を承継できることを意味する。また、実施の形態１０にセグメント管理を実施する単体のＣＰＵを載せた場合は共有するセグメントは共有領域に、非共有のセグメントは非共有領域に置くという制約がついていたが、この実施の形態１３ではそのような制約がなくなり、融通が利くという利点がある。
【０１２５】
なお、ここでも実施の形態１２と同じく、セグメントの生成、変更、消去という処理およびこれに伴う共有／非共有判定装置１３５内の整合性を保った情報の変更がありうるが、これについては処理中まれに起こることと、特許の本質ではないため説明を省略する。
【０１２６】
実施の形態１３ではＣＰＵ本体部３８６は、単体のチップであることを前提としたが、図１８に示すように、別に共有／非共有判定装置１３５を含んだものでもよい。この結果、ＣＰＵ本体部３８６は“Ｓｇｒ”端子と“共有／非共有判定”端子１３１ｆをもつこととなる。
【０１２７】
実施の形態１３ではＣＰＵ本体部３８６は、単体のチップであることを前提としたが、図１９に示すように、別に共有／非共有判定装置１３５およびセグメントディスクリブタテーブル１３６を含んだものでもよい。この結果、ＣＰＵ本体部３８６は“共有／非共有判定”端子１３１ｆのみをもつこととなる。
【０１２８】
図１８、図１９に示した共有／非共有端子１３１ｆは共有／非共有判定装置１３５というＲＡＭによって決定されるものでなくてもよい。たとえば固定された回路であってもよい。また、実施の形態１３以降で内部に組み入れられた共有／非共有判定装置１３５はセグメントで判断するように適用したが、これ以外の判断材料であってもよい。
【０１２９】
以上、実施の形態１３では共有／非共有の判定をセグメント番号によって判定するＣＰＵを用いて、この発明のＣＰＵおよびキャッシュ構成に適用した。図１８、図１９では共有／非共有判定装置１３５はＣＰＵの中に設けてもよいことを示した。また、共有／非共有判定装置１３５は固定されたものであってもよいとしたが、命令によって共有／非共有を分けるようにしてもよい。
実施の形態１４．
（複合システム）
第２０図は実施の形態１４によるマルチプロセッサ装置を示すブロック図である。この実施の形態１４は実施の形態４、実施の形態８をべースにしたもので、図において、１７１は実施の形態１２のＣＰＵである。１７２は実施の形態１３のＣＰＵである。
【０１３０】
この実施の形態１４は、９個以上の異なるコンピュータシステムを一つのシステムとして融合させる方法である。この実施の形態１４を便用すれば、図で明らかなように２個以上のコンピュータシステムを一つのシステムとして融合することが可能である。この効果として、２個のシステムで一つのデータを共有することができる。このＣＰＵは、別に実施の形態１２、実施の形態１３に限ったものでなくてもよい。最低でも、共有データと非共有データをはっきりと分けて、これに応じてバスを選択することのできるＣＰＵであれば、この発明によるＣＰＵおよびキャッシュ構成を組める。
【図面の簡単な説明】
【０１３１】
【図１】この発明の実施の形態１によるマルチプロセッサ装置のブロック図である。
【図２】この発明の実施の形態２によるマルチプロセッサ装置のブロック図である。
【図３】この発明の実施の形態３によるマルチプロセッサ装置のブロック図である。
【図４】この発明の実施の形態３による他のマルチプロセッサ装置のブロック図である。
【図５】この発明の実施の形態４によるマルチプロセッサ装置のブロック図である。
【図６】この発明の実施の形態４による他のマルチプロセッサ装置のブロック図である。
【図７】この発明の実施の形態５によるマルチプロセッサ装置のブロック図である。
【図８】この発明の実施の形態６によるマルチプロセッサ装置のブロック図である。
【図９】この発明の実施の形態８によるマルチプロセッサ装置のブロック図である。
【図１０】この発明の実施の形態９のマルチプロセッサ装置のブロック図である。
【図１１】この発明の実施の形態９による他のマルチプロセッサ装置のブロック図である。
【図１２】この発明の実施の形態１０によるマルチプロセッサ装置のブロック図である。
【図１３】この発明の実施の形態１１によるマルチプロセッサ装置のブロック図である。
【図１４】この発明の実施の形態１２によるマルチプロセッサ装置のブロック図である。
【図１５】実施の形態１２のメモリマップである。
【図１６】実施の形態１２のメモリアクセスソフトウェアである。
【図１７】この発明の実施の形態１３によるマルチプロセッサ装置のブロック図である。
【図１８】この発明の実施の形態１３による他のマルチプロセッサ装置のブロック図である。
【図１９】この発明の実施の形態１３による更に他のマルチプロセッサ装置のブロック図である。
【図２０】この発明の実施の形態１４によるマルチプロセッサ装置のブロック図である。
【図２１】従来のマルチプロセッサ装置のブロック図である。
【符号の説明】
【０１３２】
１１  ＣＰＵ、１１ａ  共有バス端子、１１ｂ，１１ｃ  非共有バス端子、１２，６２  ローカルキャッシュメモリ、１３ａ，６３ａ  ローカル非共有バス、１３ｂ  ローカル共有バス、１４  プロセッサユニット、１５ａ，５５ａ，６５ａ  グローバル非共有バス、１５ｂ，５５ｂ  グローバル共有バス，１６  共有キャッシュメモリ、１７ａ，５７ａ，６７ａ  非共有インタフェース、１７ｂ，３７，５７ｂ  共有インタフェース、１９ａ，６９ａ  非共有メモリ、３９  外部メモリ、５４  再帰プロセッサユニット。
【図１】
2008204488.tif 000003
【図２】
2008204488.tif 000004
【図３】
2008204488.tif 000005
【図４】
2008204488.tif 000006
【図５】
2008204488.tif 000007
【図６】
2008204488.tif 000008
【図７】
2008204488.tif 000009
【図８】
2008204488.tif 000010
【図９】
2008204488.tif 000011
【図１０】
2008204488.tif 000012
【図１１】
2008204488.tif 000013
【図１２】
2008204488.tif 000014
【図１３】
2008204488.tif 000015
【図１４】
2008204488.tif 000016
【図１５】
2008204488.tif 000017
【図１６】
2008204488.tif 000018
【図１７】
2008204488.tif 000019
【図１８】
2008204488.tif 000020
【図１９】
2008204488.tif 000021
【図２０】
2008204488.tif 000022
【図２１】
2008204488.tif 000023