(57)【要約】【課題】複数のＣＰＵと複数のメモリを持つシステムにおいて、これらＣＰＵ及びメモリの間で効率よくデータを伝達する手段を提供する。【解決手段】縦に配置された複数のバスと横に配置された複数のバスが格子状に配置されたバス網と、スイッチとメモリからなる複数のローカルメモリからなり、ローカルメモリは、縦のバスと横にのバスの交点に配置され、ローカルメモリのスイッチは、メモリと縦のバスの間、又は、メモリと横のバスとの間、又は、縦のバスと横バスの間で、データを伝達する。ＣＰＵもＣＰＵコアとスイッチからなり、交点に配置し、スイッチは、ＣＰＵコアと縦のバス、又は、ＣＰＵと横のバスに接続する。これにより、ＣＰＵは、任意のローカルメモリにアクセスする事が出来る。【選択図】図４
2015035117.tif 000002
【特許請求の範囲】
【請求項１】
縦に配置された複数のバスと横に配置された複数のバスが格子状に配置されたバス網と、スイッチとメモリからなる複数のメモリブロックと、ＣＰＵからなり、ローカルメモリは、縦に配置されたバスと横に配置されたバスの交点に、配置され、少なくとも一つのＣＰＵが、縦、又は、横のバスに接続され、ローカルメモリのスイッチは、メモリと縦のバスの間、又は、メモリと横のバスとの間、又は、縦のバスと横バスの間で、データを伝達する機能を持つ事を特徴とした半導体装置。
【請求項２】
縦に配置された複数のバスと横に配置された複数のバスが格子状に配置されたバス網と、スイッチとメモリからなる複数のローカルメモリと、スイッチとＣＰＵ−Ｃｏｒｅからなる一つ又は複数のＣＰＵからなり、ローカルメモリは、縦に配置されたバスと横に配置されたバスの交点に配置され、ローカルメモリのスイッチは、メモリと縦のバスの間、又は、メモリと横のバスとの間、又は、縦のバスと横バスの間でデータを伝達し、ＣＰＵは、縦に配置されたのバスと横に配置されたのバスの交点に配置され、ＣＰＵのスイッチは、ＣＰＵ−Ｃｏｒｅと縦のバスの間、又は、ＣＰＵ−Ｃｏｒｅと横のバスとの間でデータを伝達することを特徴とした半導体装置。
【請求項３】
請求項２記載の半導体装置において、
前記バスには１個のＣＰＵしか接続されない事を特徴とした半導体装置。
【請求項４】
請求項２記載の半導体装置において、
本半導体装置の外部に接続する為のインターフェイスとスイッチからなる外部接続インターフェイスが、縦に配置されたバスと横に配置されたバスの交点に配置され、外部接続インターフェイスのスイッチは、インターフェイスと縦のバスの間、又は、インターフェイスと横のバスとの間でデータを伝達することを特徴とした半導体装置。
【請求項５】
請求項２記載の半導体装置において、
ＣＰＵが配置された場所に、ＣＰＵの代わりに、本チップの外部にあるＣＰＵと接続する為のインターフェイスとスイッチからなるＣＰＵインターフェイスを配置し、ＣＰＵインターフェイスのスイッチは、
インターフェイスと縦のバスの間、又は、インターフェイスと横のバスとの間でデータを伝達することを特徴とした半導体装置。
【請求項６】
請求項２記載の半導体装置において、
ローカルメモリとＣＰＵには、コントローラと、伝達するデータを一次記憶する為のバッファーメモリが追加され、縦及び横に配置されるバスは、データバスとコントロールバスからなる事を特徴とした半導体装置。
【請求項７】
請求項６記載の半導体装置において、
バッファーメモリはそれぞれ独立して動作する複数の端子を持ち、スイッチにおいて、これら端子は、メモリ、又は、縦のデータバス、又は、横のデータバスに接される事を特徴とする半導体装置。
【請求項８】
請求項２記載の半導体装置において、
制御信号又はメモリデータ転送を行う動作において、ＣＰＵ又はローカルメモリがデータをバスに送り出しＣＰＵ又はメモリがこのデータを受信し、一つの動作を完了する事を特徴とした半導体装置。
【請求項９】
請求項２記載の半導体装置において、
ＣＰＵを介さずに、ローカルメモリから他のローカルメモリにメモリデータを伝達する事が出来ることを特徴とした半導体装置。
【請求項１０】
請求項２記載の半導体装置において、
ローカルメモリはメモリマネージメントを持ち、ローカルメモリ内のメモリを分割し、分割されたそれぞれの状態を記憶し、ＣＰＵはメモリマネージメントを持ち、ＣＰＵ内のＣＰＵ−Ｃｏｒｅに付随するキャッシュメモリを分割し、分割されたそれぞれの状態を記憶することを特徴とした半導体装置。
【請求項１１】
請求項１０記載の半導体装置於いて、
ローカルメモリ内のメモリーマネジメントは、メモリ内のデータがＣＰＵに伝達されている場合、その伝達先の場所を記憶し、ＣＰＵ内のメモリマネージメントは、キャッシュメモリ内のデータの伝達元の場所を記憶している事を特徴とする半導体装置。
【請求項１２】
請求項６記載の半導体装置において、
一つのコントロールバスに接続する一つのＣＰＵと複数のローカルメモリがあり、それぞれのローカルメモリからＣＰＵにコントロールバスを使うリクエストを伝達するリクエストシグナルが配置された事を特徴とする半導体装置。
【請求項１３】
請求項２記載の半導体装置において、
各ＣＰＵ、各ローカルメモリは、それぞれが電源管理機能を持ち、それぞれの内部の電源管理を行う事を特徴とした半導体装置
【請求項１４】
請求項６記載の半導体装置において、
各ＣＰＵ、各ローカルメモリは、それぞれが電源管理機能を持ち、それぞれのコントローラは常に動作可能状態であり、そえぞれのコントローラから電源管理機能に指示し、電源管理を行う事を特徴とする半導体装置。
【請求項１５】
請求項２記載の半導体装置において、
請求項２によって示された機能を一つのセグメントとして、これを横方向、又は、縦方向、又は、マトリックスに配置し、複数バスの一部はは隣のセグメントまで延し、隣のセグメントの一部のローカルメモリに接続する事を特徴とした半導体装置。
【請求項１６】
請求項１５記載の半導体装置において、
複数個配置されたセグメントの集団の両端のセグメントの1部のバスはお互いに接続され、トーラスを形成する事を特徴とする半導体装置。
【請求項１７】
請求項２記載の半導体装置において、
ＣＰＵとローカルメモリから成るマトリックスに、横方向に配置されたバスとローカルメモリとこのバスを管理する機能から成るマトリックスを隣接して配置し、縦方向のバスは、両者のマトリックスが共有する事を特徴とする半導体装置。
【請求項１８】
請求項１記載の半導体装置において、
各ローカルメモリは、メモリ、スイッチに加えて、コントローラ、バッファメモリ、メモリマネージメント、電源管理機能の一部、又は複数を搭載した事を特徴とした半導体装置。
【請求項１９】
請求項１記載の半導体装置において、
ＣＰＵが接続されない横方向のバスに、バス管理機能を接続したことを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
ある機能を持つ装置（例えばＣＰＵ）と、前記と異なる機能を持つ装置（例えば半導体メモリ）など、複数の機能で構成される情報処理装置に於いて、それら装置の間で、情報を伝達する方法に関するものである。ここで言うＣＰＵとは、ＣＰＵそれ自身と、そこに付随する個別のキャッシュメモリも含む。
【背景技術】
【０００２】
近年、複数のＣＰＵを搭載し分散処理を行うことにより、性能の向上を図っている。そして、複数ＣＰＵ、複数のメモリの間に、クロスバーを設置し、ＣＰＵから任意のメモリにアクセスする事が一般的に行われている。しかし、複数のＣＰＵが一つのメモリにアクセスする競合が発生し、必要な情報をメモリからＣＰＵに伝達できず、十分な性能が発揮できない状況となっている。
この問題を解決する為に、ＣＰＵ、メモリなどの各機能ブロックに夫々ルーターを設け、これをマトリックス上に配置し、情報の伝達を行う方式も提案されているが、これは実用に至っていない。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１９８１２９  キャッシュシステム
【特許文献２】特開２００９−１１０５１２  ネットワークオンチップ、およびネットワークオンチップで以ってデータを処理する方法
【発明の概要】
【発明が解決しようとする課題】
【０００４】
図１にクロスバーを採用した従来例を示す。現在のコンピュータは、複数のＣＰＵを持ち、メモリ（図１では、共有キャッシュメモリ ＳＣ０〜ＳＣ３）は共有され、これをクロスバー装置によって、ＣＰＵから所望のメモリにアクセスする方式が一般的である。これは、メモリの分割が少ないと、アクセスが競合（同じメモリに、複数のＣＰＵからのアクセス）する事が多くなり、アクセスが競合した場合は、その間、ＣＰＵは、待ち状態となってしまうので、性能の向上は限定的である。メモリの分割を増やせば、この問題を解決できるが、クロスバーが複雑になり、現実的でない。ＣＰＵの数をｍ、メモリの分割数をｎとすると、この場合のスイッチの数は、ｍ×ｎ となり、分割は増やせない。一般的には、ＣＰＵの数は、４個程度であり、メモリの分割も４個程度で、スイッチの数は、１６個程度である。
【０００５】
図２は、第２の従来例である。各機能を２次元に配置し、これをルーターで接続する方法も提案されている。この方式では、アクセスの競合は防げるが、データを転送するのに、多数のルーターを介すので、転送速度などの点で問題がある。
【０００６】
本発明は、メモリの分割数を増やし、かつ、そのメモリに容易にアクセスできる技術を提供する物である。
【課題を解決するための手段】
【０００７】
本発明の手段を、図．３に示す。バスを格子状に配置し、其の交点に複数のローカルメモリＬＭ００〜ＬＭ３３（１０２）を配置する。ローカルメモリ（１０２）は、スイッチＳＷ（１１１）が搭載され、このスイッチにより、内部のメモリ（１１３）は、縦に配置されたバスＢｕｓ−ｙ（１０３）又は横にに配置されたバスＢｕｓ−ｘ（１０４）に接続される。またこのスイッチＳＷ（１１１）は、縦のバスＢｕｓ−ｙ（１０３）と横のバスＢｕｓ−ｘ（１０４）を接続する機能も持ち、縦のバスから横のバスへ、又は、横のバスから縦のバスへのデータ転送機能を行う。このバス、ローカルメモリからなるマトリックスの外側には、CPU０〜ＣＰＵ３（１０１）が配置される。
【０００８】
図１と比較し、図３でのデータの配置を説明する。図１におけるＳＣ０のデータは、ＬＭ００、ＬＭ０１、ＬＭ０２、ＬＭ０３に、４分割して搭載される。ＳＣ１〜ＳＣ３のデータも同様である
【０００９】
ＣＰＵ０がローカルメモリにアクセスする場合を考える。ローカルメモリＬＭ００〜ＬＭ０３にアクセスできるのは当然であるが、ＬＭ００〜ＬＭ０３以外ローカルメモリにも、ローカルメモリＬＭ００〜ＬＭ０３のスイッチＳＷ(１１１)を介し、横方向に配置されたバスを介してアクセスできる。この様に、ＣＰＵはどのローカルメモリにもアクセスできる。
【００１０】
更なる手段を図４に示す。図３との相違点は、ローカルメモリの一部をCPUに置き換え、かつ、同一のバスには、１個のＣＰＵしか接続しない形とした。その結果として、図４ではＣＰＵを斜めに配置している。こうする事により、CPUから見て横方向に配置されているローカルメモリにも、スイッチＳＷ（１１１）を介さず、直接アクセスで切る様になる。図３と比較すると、メモリの分割は、4分割から、３分割になるが、どちらを選ぶかはトレードオフである。
【発明の効果】
【００１１】
図１に示す従来例では、ＣＰＵ４個に対し、メモリ（ＳＣ０〜ＳＣ３）も４個であり、同一メモリにアクセスが重なる競合の恐れが多い。一方、本発明では、それぞれのメモリは４分割され、全体では１６個のローカルメモリとなっているので、競合の恐れは軽減される。これを実現する為のスイッチの数も１６個である。図１における従来例のクロスバーにおけるスイッチSW（３０２）の数も16個であり、従来例と比べ複雑にせず、性能が向上する。
なお、今回の図面、説明は、簡略化の為、２次元で説明しているが、原理的には、以後の実施例を含めて、３次元でも可能であり。効果も同等、またはそれ以上である。
【図面の簡単な説明】
【００１２】
【図１】現在、実施されてるクロスバー方式の従来例の説明図である。
【図２】現在の課題を解決する為に、既に提案されている技術を説明した図である。
【図３】本発明の要素を示した物である。
【図４】本発明の別に要素を示した物である。
【図５】本発明の第１の実施例である。
【図６】本発明の第２の実施例である。
【図７】本発明の第３の実施例である。
【図８】本発明の第３の実施例の動作を示すものである。
【図９】本発明の第３の実施例の別の動作を示すものである。
【図１０】本発明の第４の実施例である。
【図１１】本発明の第４の実施例の動作を示すものである。
【図１２】本発明の第５の実施例である。
【図１３】本発明の第６の実施例である。
【図１４】本発明の第７の実施例である。
【図１５】本発明の第７の実施例の別の例である。
【図１６】本発明の第８の実施例である。
【図１７】本発明の第９の実施例である。
【発明を実施するための形態】
【００１３】
第１の実施形態として、これらＣＰＵ、ローカルメモリ、及び、バスは一つの半導体チップ上に形成される。第2の実施形態として、ＣＰＵ、ローカルメモリがそれぞれに半導体チップで製造され、セラミック基板上に、これらＣＰＵ、ローカルメモリを配置しても良い。第３の実施形態として、それぞれのＣＰＵ、メモリを個別に半導体チップで製造し、データバスを格子状に配線したセラミック基板に配置しても良い。
以下の実施例においても、実施形態と述べる。
【実施例】
【００１４】
（第１の実施例）
図５は、図４を元とした実施例である。
ここでは、具体的なコンピュータとしての機能を実現する為に、外部メモリＤＩＭＭ（１２２）とデータストレージ、ユーザー入出力装置（１２３）との接続方法を示した。このために、外部接続インターフェイス Ｅ−Ｉ／Ｏ０３（１２１）、Ｅ−Ｉ／Ｏ１０（１２１）、Ｅ−Ｉ／Ｏ２１（１２１）、Ｅ−Ｉ／Ｏ３２（１２１）、を備えた。ＤＩＭＭ０は、Ｅ−Ｉ／Ｏ０３に接続し、ＤＩＭＭ１は、Ｅ−Ｉ／Ｏ１０に接続し、ＤＩＭＭ２は、Ｅ−Ｉ／Ｏ２１に接続し、ＤＩＭＭ３は、Ｅ−Ｉ／Ｏ３２に接続する。よって、例えば、ＤＩＭＭ０は、Ｅ−Ｉ／Ｏ０３を介して、チップ内のローカルメモリとデータの交換が出来る。其の方法は、ＣＰＵとローカルメモリのデータの交換と同様である。ここで重要な事は、それぞれのＣＰＵがローカルメモリにアクセスしている状態においても、ＣＰＵがアクセスしていないローカルメモリとの間で、ＤＩＭＭは、データの交換ができる事である。この様に、ＣＰＵ、及び、DIMMは、多くの場合、競合せずに動作できる事である。図５の場合、ＣＰＵ４個、外部入出力装置４個に対し、ローカルメモリは１２個であり、競合を避けるには、ローカルメモリの数が不十分かも知れない。これは、ＤＩＭＭとローカルメモリのデータ交換の頻度にも依存する。もし、競合が多く発生する場合は、４×４＝１６のマトリックスから、８×８＝６４のマトリックスとすることも有効である。この場合、ＣＰＵは８個、外部入出力装置８個、ローカルメモリは４８個となり、十分なローカルメモリが確保できる。この様に、多くのＣＰＵを持つシステムに於いて、本発明はより効果的である。
【００１５】
（第２の実施例）
第２の実施例を図６に示す。コンピュータの性能向上には、ローカルメモリの容量を大きくする事の効果がある。ローカルメモリの容量を大きくするには、チップ面積を大きくする事で実現できるが、チップ面積の増大には限界がある。
また、ＣＰＵチップに搭載するメモリは、ＳＲＡＭが一般的であるがであるが、ＳＲＡＭはセルの面積が大きく大容量化が難しい事が欠点である。大容量化の為には、ＤＲＡＭの採用が効果的であるが、プロセス工程が違う欠点がある。これら状況を鑑み、メモリの大容量化のために、ＣＰＵとメモリとを別チップにする事が有効である。二つのチップにすることにより、チップ面積を大きくする事が出来る。また、ＣＰＵチップとメモリチップは、それぞれ最適なプロセス工程を選ぶ事が出来るので、メモリには、ＤＲＡＭの採用も可能となる。理論的には、ＤＲＡＭのセル面積は、ＳＲＡＭの１／８程度である。よって、ローカルメモリにＳＲＡＭの替わりにＤＲＡＭを採用する事で、８倍の容量とする事が出来る。以下に、図６を用いて詳細に説明する。
図５においてＣＰＵが配置されていた場所に、ＣＰＵ（１３２）とローカルメモリ（１０２）を接続する為のＣＰＵインターフェイス Ｃ−Ｉ／Ｆ（１３３）を配置する。CPUチップ（１３１）とメモリチップ（１３０）は、セラミックス基板などの上に配置され、CPUインターフェイス Ｃ−Ｉ／Ｆ（１３３）→セラミックス基板の配線→ＣＰＵチップ（１３１）内のＣＰＵ（１３２）の経路で接続する。
この構成により、ＣＰＵは、あたかも、ＣＰＵインターフェイスを配置した場所に存在すると同様に機能する。これにより、メモリの大容量化と本発明を、同時に実現できる。
【００１６】
（第３の実施例） 
（第３の実施例） 第３の実施例を図７に示す。図７は、図３の一部を詳細に示した物である。 図７の新しい点は、バッファーメモリ ＢＭ（１４１）を追加し、これに伴い、スイッチＳＷ（１１１）をスイッチＳＷ（１４３）に変更したことと、コントローラー ＣＯＮＴ（１４２）を追加したことである。ＣＰＵ（１０１）とローカルメモリ ＬＭ（１０２）は、スイッチＳＷ（１４３）、内部ＣＰＵ−Ｃｏｒｅ（１１２）、内部メモリ ＭＥＭ （１１３）からなるが、これらを制御するコントローラーが必要である。 ＣＰＵ、バス、メモリの転送速度が同じではない恐れがある。また、例えば、Ｂｕｓ‐ｙ０ → ＬＭ０３のスイッチ → ＢＵＳ‐ｘ３にデータを送る場合を考えると、Ｂｕｓ‐ｘ３は他のＣＰＵが使用しており、使えない場合もある。よって、一時的にデータを蓄えるバッファーメモリが有効である。
バスの構成は、Ｄａｔａ−ＢｕｓとＣｏｎｔｒｏｌ−Ｂｕｓに分けられる。 Ｄａｔａ−Ｂｕｓは、大量のデータを転送するので、３２ビット〜５１２ビット程度の幅を持つ。それでも、転送するデータが多量の為、使われている割合は高い。一方ＣｏｎｔｒｏｌーＢｕｓは、制御信号を転送するが、これはデータ量が少ない。よって、８ビット幅程度でも、使われている割合は低い。よって、２に分けルコとにより、Ｃｏｎｔｒｏｌ−Ｂｕｓは待ち時間は殆どなくデータを目的の所に速やかに送る事が出来る。
【００１７】
次に、この動作を図８で説明する。ここではＣＰＵ００がローカルメモリ ＬＭ２３にＲｅａｄを行う場合を考える。
第１の動作（１６８）
先ず、ＣＰＵ００のＣＯＮＴは、Ｒｅａｄの信号をＣｏｎｔｒｏｌ Ｂｕｓ‐ｙ０（１４６）に送り出す。このデータには
動作を示すデータ；Ｒｅａｄ
自分自身と目的のリーカルメモリを示すＢｌｏｃｋデータ；００−２３、
アドレス ；ｘｘｘｘ
が含まれる。
第２の動作（１６９）
ＬＭ０３のＣＯＮＴは、Ｃｏｎｔｒｏｌ Ｂｕｓ‐ｙ０（１４６）上のデータが、自分を介し、Ｃｏｎｔｒｏｌ Ｂｕｓ‐ｘ３を介しＬＭ２３にデータを送るべきデータと認識し、これらデータを自分のＣＯＮＴに取り込む。
これで第１＋第２の動作は完了し、次の動作に移る。
第３の動作（１７０）
ＬＭ０３のＣＯＮＴは、同様のデータをＣｏｎｔｒｏｌ Ｂｕｓ‐ｘ３に送り出す。
第４の動作（１７１）
ＬＭ２３のコントローラは、このデータは自分所に向けられたものであることを判断し、データを取り込む。
これで第３＋第4の動作は完了し、次の動作に移る。
第５の動作（１７２）
取り込んだデータから、ＬＭ２３のメモリの情報をＣＰＵ００に送る事を認識し、
認識した事を示すデータ；Ａｃｋ
自分自身と送るべき先のＣＰＵ００のＢｌｏｃｋ；２３−００
アドレス；ｘｘｘｘ
をＣｏｎｔｒｏｌ Ｂｕｓ‐ｘ３に送り出す。
第６の動作（１７３）
ＬＭ０３は、これは自分自身を介し、Ｃｏｎｔｒｏｌ Ｂｕｓ‐ｙ０を介し、ＣＰＵ００に伝えるデータである事を認識し、データをＣＯＮＴに取り込む。
これで第５＋第６の動作は完了し、次の動作に移る。
第７の動作（１７４）
ＬＭ０３のＣＯＮＴは、取り込んだデータをＣｏｎｔｒｏｌ Ｂｕｓ‐ｙ０に送り出す。
第８の動作（１７５）
ＣＰＵ００のＣＯＮＴは、これは自分自身に向けられたデータであることを認識し、取り込み、ＬＭ２３からＤａｔａ‐Ｂｕｓを通じてメモリのデータが送られてくる事を判別し、これに備える。
これで第７＋第８の動作は完了し、次の動作に移る。
第9の動作（１７６）
ＬＭ２３は、確認信号をＣｏｎｔｒｏｌ Ｂｕｓを介して送ると同時に、アドレスで指定されたメモリ ＭＥＭ （１１３）内のデータをＤａｔａ Ｂｕｓ‐ｘ３に送り出す。このとき、メモリデータと一緒に、自分自身、送信先であるＣＰＵの位置を示す ２３−００の信号、アドレスを送る。
第10の動作（１７７）
ＬＭ０３は、これらのデータは、自分自身を介し、Ｄａｔａ Ｂｕｓ‐ｙ０を介し、ＣＰＵ００に伝える物として認識し、自分のバッファーメモリＢＭ（１４１）に取り込む。
これで第９＋第１０の動作は完了し、次の動作に移る。
第１１の動作（１７８）
ＬＭ０３は、受取ったデータをＤａｔａ Ｂｕｓ‐ｙ０に送り出す。送り出すタイミングとしては、Ｄａｔａ Ｂｕｓ‐ｙ０が空き状態であれば、第10の動作が完了前でも、開始可能である。
第１２の動作（１７９）
ＣＰＵ００は、Ｄａｔａ Ｂｕｓ‐ｙ０のデータは自分自身に向けられたものである事を認識し、データを取り込み、さらに、メモリデータをバッファーメモリからＣＰＵ内のキャッシュメモリに取り込む。
これで第１１＋第１２の動作は完了し、第１の動作（１６８）〜第１２（１７９）の動作の全体の動作が完了する。
【００１８】
この動作の特徴は、Ｒｅａｄなどの動作の目的、目的とするローカルメモリの位置情報等をバスに送り出すと、受取る側はこれらデータで、受信を判断し、データを受取り、これで一つの動作は完了する。これを繰り返す事により、目的のローカルメモリに到達し、ローカルメモリからＣＰＵへのメモリのデータの移動も同様な方法で行う。それぞれのローカルメモリが自律して、これら動作を行うので、ＣＰＵの負担が軽減される所に特徴がある。
【００１９】
第3の実施例における他の動作を、図７、図９で説明する。この動作は、ＣＰＵ００から命令を出し、ＬＭ２３のメモリのデータをＬＭ２０に移動する場合を示す。
第１の動作（１8１）
ＣＰＵ００は、メモリデータを移動するためのデータをＣｏｎｔｒｏｌ Ｂｕｓ‐ｙ０に送り出す。このデータには、
動作を示すデータ；Ｍｏｖｅ
自分自身、移動元、移動先のBlockデータ；００−２３−３０
アドレス；ｘｘｘｘ
を含む。
以下、ＬＭ２３がデータを受信するまでの第１の動作〜第４の動作は、図9の説明と同様なので、これを省略する。
第５の動作（１８５）
ＬＭ２３は、受信した情報とデータを送れる事をＣｏｎｔｒｏｌ Ｂｕｓ‐ｙ３（１５０）に送り出す。
第6の動作（１８６）
ＬＭ３０は、Ｃｏｎｔｒｏｌ Ｂｕｓ‐３ｙに送り出されたデータは、自分自身に送られたデータである事を確認し、データを取り込む。これで第５＋第６の動作は完了する。
第７の動作（１８７）
ＬＭ３０は、データを受信可能である事を確認し、確認データ Ａｃｋ を送信する。 一方、Ｄａｔａ Ｂｕｓ‐ｙ３を介し、送られてくるメモリのデータを受信する準備をする。
第８の動産（１８８）
ＬＭ２３は、ＬＭ３０からの確認データを受信する。
これで、第７＋第８の動作が完了する。
第９の動作（１８９）
ＬＭ２３は、メモリのメモリデータと他の必要なデータをＤａｔａ Ｂｕｓ‐ｙ３に送り出す。
第10の動作（１９０）
ＬＭ３は、データを受信し、メモリデータをメモリに書き込む。
これで第９＋第１０の動作は完了する。
第１１の動作（１９１）
第１０の動作、すなわち、ＬＭ２３からＬＭ３０にデータの移動が終わった事を確認し、確認のデータ ＡｃｋをＣｏｎｔｒｏｌ Ｂｕｓ−ｘ０に送り出す。
第１２の動作（１９２）
ＣＰＵ００は、ＬＭ３０からのデータを受信し、目的の動作が完了したことを確認する。
第１１＋第12の動作が完了し、かつ、第１の動作（１８１）〜第１２の動作（１９２）の一連の動作が完了し、目的が完了する。
この様に、本発明においては、ＣＰＵの負担が少なく、ローカルメモリからローカルメモリへデータの移動が可能となる。
複数のＣＰＵから同一のメモリにアクセスする競合をなくすことは、性能の向上に欠かせない。この為には、メモリ上に適切にデータを配置する事が重要である。データを適切に配置するには、メモリ間で直接データを移動する事が必要となるが、本発明は、このための手法を提供するものでもある。
【００２０】
ローカルメモリ ＬＭ は、複数のＣＰＵで共有されるメモリである。一方、ＣＰＵは、そのＣＰＵの近くに配置しそのＣＰＵが専有して使うキャッシュメモリを持つ。この様に２種のメモリを持つ。よって、一つのデータが２箇所に存在する事がある。ＣＰＵがローカルメモリから自分のキャッシュにデータを取り込み、ＣＰＵが処理し、このデータを書き換えた場合、キャッシュメモリ上のデータとローカルメモリとのデータは違ってしまう。この問題は、キャッシュの一貫性保証（キャッシュコヒーレンシ）として知られている。本実施例では、この問題の対処方法を示す。
【００２１】
図１０は、図４の一部を詳細に示した物であり、キャッシュコヒーレンシを解決する為の機能が追加されている。それぞれのＣＰＵ、ローカルメモリには、メモリを管理する メモリマネージメント ＭＭ （２０１）が備える。
ローカルメモリ内のメモリＭＥＭ（１４４）は、大きな容量であるので、これを分割して管理する。例えば、メモリＭＥＭ（１４４）が８ＭＢ程度あれば、これを１０００分割し、８ＫＢ程度とする。ローカルメモリ内のメモリマネージメントＭＭは、分割された８KB程度のメモリをそれぞれ管理する。具体的には、
１）それぞれに分割されたメモリにおけるデータの存在の可否
２）ＣＰＵのキャッシュメモリに移動している場合は、移動先の場所の記憶
を行う。
一方、ＣＰＵ（１０１）におけるＣＰＵ‐Ｃｏｒｅ内のキャッシュメモリも分割されているが、ＣＰＵ（１０１）内のメモリマネジメントＭＭ（２０１）は、ＣＰＵ‐Ｃｏｒｅ内の分割されたキャッシュメモリを管理する。具体的には、
１）それぞれに分割されたメモリにおけるデータの存在の可否
２）移動元の場所の記憶
を行う。
この様な管理の下で、データを移動した場合は、移動元のデータは存在しないものとして、管理する。この様にすることで、同一であるべきデータが複数場所に存在する事は避けられ、キャッシュコヒーレンシの問題は避けられる。ここでは、簡素な方法をしめしたが、一般には、ＭＥＳＩ方式、ＭＯＥＳＩ方式などがある。これらの場合においても、これら方式に必要な情報をメモリマネージメントＭＭに記憶する事が出来る。
今回は、メモリマネージメントＭＭを設けたが、ローカルメモリのメモリＭＥＭ（１４４）の一部、又は、バッファーメモリの一部をこの管理に当てることも可能である。
【００２２】
次に図１０、図１１で動作の説明を行う。
一つの例として、ＣＰＵ００がＬＭ２３にＲｅａｄの動作を行ったが、ＬＭ２３内の目的データは、ＣＰＵ２２のキャッシュメモリに移動されていた場合の動作を説明する。
第1の動作（２１１）＋第２の動作（２１２）
ＣＰＵ００のＣＯＮＴは、Ｒｅａｄ及びその他のデータをＣｏｎｔｒｏｌ Ｂｕｓ‐ｙ０に送り出す。ＬＭ０３は、これらデータが自分自身を経由して伝達されるべき物として認識し、データを受信して、動作が完了する。
第３の動作（２１３）＋第４の動作（１２４）
ＬＭ０３のＣＯＮＴは、受信したデータをＣｏｎｔｒｏｌ Ｂｕｓ‐ｘ３に送り出す。ＬＭ２３は、これらデータは自分にむけられたものとして認識し、データを受信して、動作が完了する。
第５の動作（２１５）＋第６の動作（２１６）
ＬＭ２３において、メモリマネージメントＭＭ（２０１）によって、受信したデータを元に、必要とされるデータの状態を確認する。今回の場合は、必要とされるデータは、ＣＰＵ２２に移動されている事を認識する。この結果を受けて、受信したＲｅａｄ及びその他の情報にＣＰＵ２２の場所を示す情報を加えて、Ｃｏｎｔｒｏｌ Ｂｕｓ‐ｙ２に送り出す。ＬＭ２２は、これらデータが自分に向けられたものである事を認識し、データを受信して、動作を完了する。
第７の動作（（２１７）＋第８の動作（２１８）
ＣＰＵ２２において、メモリマネージメント（２０１）内容から必要とされるデータがキャッシュメモリに存在し、かつ、移動できることを確認し、受信したデータに、これらデータを加え、Ｃｏｎｔｒｏｌ Ｂｕｓ‐ｘ２に送り出す。ＬＭ０２は、これらデータが自分自身を経由するデータである事を認識し、受信し、動作は完了する。
第９の動作（２１９）＋第10の動作（２２０）
ＬＭ０２は、受信したデータをＣｏｎｔｒｏｌ Ｂｕｓ‐ｙ０に送り出す。ＣＰＵ００はこれらデータは自分自身に向けられたものであることを認識し、データを受信する。受信したデータを元に、ＣＰＵ２２のキャッシュメモリのデータを受取る準備し、動作を完了する。
第１１の動作（２２１）＋第１２の動作（２２２）
ＣＰＵ２２は、キャッシュメモリ内の目的のデータをＤａｔａ Ｂｕｓ‐ｘ２に送り出す。このとき、Ｃｏｎｔｒｏｌ Ｂｕｓ を介して受信したデータも一緒に送り出す。また、メモリマネージメント内の情報を書き換える。ＬＭ０２は、これらデータが自分を経由するデータである事を認識し、受信し、動作が完了する。
第１３の動作（２２３）＋第１４の動作（２２４）
ＬＭ０２は、受信したデータをＤａｔａ Ｂｕａ‐ｙ０に送り出す。ＣＰＵ００は、このデータを受信し、キャッシュメモリに移動し、動作が完了する。
第１５の動作（２２５）＋第１６の動作（２２６）
ＣＰＵ２２は、ＬＭ２３から移動してきたＣＰＵ‐Ｃｏｒｅのキャッシュメモリの情報がＣＰＵ００に移動した事を、Ｃｏｎｔｒｏｌ Ｂｕｓ‐ｙ２を介してＬＭ２３に伝え、ＬＭ２３のメモリマネーメントＭＭ内のデータの移動先のデータを書き換える。これにより、一連の動作が完了する。これで動作は完了する。
これら第１の動作（２１１）から第１６の動作（２２６）は完了する。ＣＰＵ００は目的のデータを得た。また、一つデータが２箇所に存在する事も避けることが出来る。
【００２３】
（第５の実施例）
図7、図１０におけるコントロールバス Ｃｏｎｔｒｏｌ Ｂｕｓ には、複数の入力、複数の出力が接続される。複数の出力が同時に一つのＣｏｎｔｒｏｌ Ｂｕｓに恐れがある。よって、このＣｏｎｔｒｏｌ Ｂｕｓを管理する必要がある。そこで、図３を見ると、各バスには、1個のＣＰＵのみが接続される。よって、Ｃｏｎｔｒｏｌ Ｂｕｓの管理は、ＣＰＵに任せる。そして、ローカルメモリがＣｏｎｔｒｏｌ Ｂｕｓにデータを送り出す時は、ＣＰＵにバスを使う要求を送る事が必要となる。この要求をＣＰＵに送る為に信号線を設ける。これを図１２に示す。ローカルメモリからＣＰＵに要求を送る信号線Ｒ‐ＳＩＧ０１（２３６）、Ｒ‐ＳＩＧ２１（２３７）、Ｒ‐ＳＩＧ３１（２３８）を設けた。これら信号線は、ローカルメモリが出力となり、ＣＰＵが入力となる、単方向性の信号線である。
【００２４】
（第６の実施例）
本発明は、多数のＣＰＵ、ローカルメモリで構成されるが、常に全てのＣＰＵ、メモリが動作しているとは限らない。よって、図１３に示す様に、ＣＰＵ、ローカルメモリに電源管理機能ＰＭ（２９１）を搭載し、これにより、各機能の電源のオン／オフ、電源電圧の調整、メモリのスリープモードのオン／オフなどを行う。これら指示をコントローラＣＯＮＴ（１４２）が電源管理機能ＰＭ（２９１）に伝え、ＣＰＵ（１０１）、ローカルメモリ（１０２）内で、自律的に電源の管理を行う。 一方、状況の変化は他のＣＰＵ、ローカルメモリからもたらされるので、ＣＯＮＴ（１４２）は常に動作状態にしておき、常に、状況の変化に対応できる様にしておく。尚、ＣＯＮＴ（１４２）とこれにつながる Ｃｏｎｔｒｏｌ Ｂｕｓを常時稼動状態にしておいても、そのビット幅は、8ビット程度であり、ＣＯＮＴ（１４２）の能力は低いので、電力の消費は少ない。
ローカルメモリの場合、メモリMEM（１４４）内にデータは無く、また、中継地点として使われる可能性が無い場合には、全ての機能すなわち、スイッチＳＷ（１１１）,バッファーメモリＢＭ（１４１）、メモリマネージメントＭＭ（２０１）、メモリＭＥＭ（１４４）の電源をオフにする。また、ＭＥＭ（１４４）にデータは存在するが、このメモリーにアクセスはなく、中継地点として使われる事が無い場合は、ＭＥＭ（１４４）はデータ保持状態として、スイッチＳＷ（１１１）、バッファーメモリＢＭ（１４１）、メモリマネージメントＭＭ（２０１）は電源をオフにする。この様に、状況を判断し、必要な機能の電源をオフにする。また、逆に、必要となったときは電源をオンにする。これにより、消費電力の削減をする。
【００２５】
（第７の実施例）
ＣＰＵを増やし、コンピュータを大きくする事を検討する。図４の例では、ＣＰＵは4個で４×４のアレイである。ＣＰＵを８個に増やす場合は、同じようにＣＰＵを斜めに配置し、８×８とする方法も一つの手法である。ここではもう一つの方法を図１４に示す。
図４に示すＣＰＵとローカルメモリの集団を一つのセグメントとする。これらの１６個のセグメント（ＳＥＧ００〜ＳＥＧ３３）を４×４のマトリックスに配置する。この配置を図１４にしめす。図１４では１６個のセグメントの一部を表示していない。
図１4で、バスの接続について説明する。例えば、ＳＥＧ１１（２４６）のＣＰＵ１１に注目して考える。ＣＰＵ００は横方向のバスに接続し、このバスには、ＳＥＧ１１内のＬＭ０１、ＬＭ２１、ＬＭ３１が接続される。更に、隣のＳＥＧ０１（２４５）内のＬＭ２１,ＬＭ３１に接続し、更に、ＳＥＧ２１（２４７）内のＬＭ０１にも接続される。この様に、ＣＰＵが存在する自分のセグメント越えてＣＰＵの両側のローカルメモリにも接続する。
一方、ＳＥＧ２１（２４７）のＣＰＵ１１を見ると、これも同様に、ＳＥＧ２１（２４７）を超えてバス が配線され、ＳＥＧ１１（２４６）のＬＭ２１,ＬＭ３１、及び、ＳＥＧ３１のＬＭ０１にも接続される。
ＳＥＧ２１のＬＭ０１は、ＳＥＧ１１内のＣＰＵ１１とＳＥＧ２１内のＣＰＵ１１の双方からアクセス可能となる。すなわち、ローカルメモリは、横方向に配置されら二つのバスに接続される。同様な配置は縦方向にも適用され、ローカルメモリは、横方向のバス2本と、縦方向のバス2本と合計４本のバスに接続される。
さらに、ＳＥＧ０１（２４５）の横方向のバス（ａ）はＳＥＧ３１（２４８）の横方向のバス（ｃ）に接続し、同じように ｂ は、ｄに接続する。これは他の横方向のバスでも同様であり、縦方向のバスにも適用する。これで２次元トーラスを実現し、すべてのＣＰＵは、其の位置に依存せずに、ＣＰＵの上下左右の12個のローカルメモリのデータを直接アクセスできる。更には、ローカルメモリ内のスイッチを一回介すだけで、ＣＰＵを中心とする５×５＝２５個のローカルメモリにアクセス可能となる。
図１５に他の例を示す。図14との違いを書きに示す。
ＣＰＵからの横方向のバスの配線に注目すると、図14の場合は、ＣＰＵから１本のバスが左右に延びる。図15ではＣＰＵから２本のバスの配線され、１本は右に、他は反対側に延びる。縦のバスも同様の配置である。
【００２６】
（第８の実施例）
第１の実施例（図５）では、ＣＰＵの他に、Ｅ‐Ｉ／Ｆを設けたために、更にローカルメモリの数が少なくなる。１６図を用いて、この改善例を示す。図１６ではローカルメモリＬＭ０４（１０２）〜ＬＭ３５（１０２）が追加されている。そして、バスコントローラＢ‐ＣＯＮＴｙ０（（２６１）〜Ｂ‐ＣＯＮＴｘ５（２７０）が追加されている。例えば、第5の実施例で示したように、Ｃｏｎｔｒｏｌ Ｂｕｓの管理はＣＰＵが行っていたが、図１４では、バスコントローラＢ‐ＣＯＮＴｙ０（（２６１）〜Ｂ‐ＣＯＮＴｘ５（２７０）が管理する。
この例では、全ての バスにバスコントローラが配置されているが、Ｂｕｓ‐ｘ４、Ｂｕｓ‐ｘ５のバス以外には、ＣＰＵが接続されているので、Ｂ‐ＣＯＮＴｘ４、Ｂ‐ＣＯＮＴｘ５以外は、CPUで管理する事により、削除が可能である。
【００２７】
（第９の実施例）
第９の実施例を図１７に示す。図１７では、マトリックスはローカルメモリＬＭ（１０２）だけで構成される。マトリックス内にはＣＰＵが無いので、バスを管理するためのバスコントローラＢ‐ＣＯＮＴｙ０（２８１）〜Ｂ‐ＣＯＮＴｘ３を配置する。このマトリックスの外に、ＣＰＵ（１０１）と外部インターフェイス（１２１）を接続する。この利点を説明する。例えば、第一の実施例（図５）では、ローカルメモリのアレイの中に、ローカルメモリと置き換える形で、ＣＰＵが配置される。よって、ローカルメモリとＣＰＵの形状、すなわち、縦と横のサイズは同じくする事が必要となる。しかし、ＣＰＵとローカルメモリではその機能が異なるので、必ずしも同じとはならない。図１７の例では、ＣＰＵの縦方向の大きさは、自由になので、任意の形状、すなわち、任意の大きさに出来る。これは、外部インターフェイスに於いても同様である。
【産業上の利用可能性】
【００２８】
本発明は、ＣＰＵとメモリからなるコンピュータに使われる汎用的な技術であり、広く使われると思われる。特に多くのＣＰＵを搭載するスーパーコンピュータなどの大型システムは、ＣＰＵとメモリの配置方法とそれに生じるデータの移動が、課題として顕在化している。中間レベルには、サーバーなどがあるが、この分野も複数ＣＰＵの技術が使われ、その数は増える方向であり、ＣＰＵとメモリの配置方法とそれによるデータの移動が課題である。さらに、小型の組み込み用の分野においても、ＣＰＵを4個搭載は一般的であり、最近では8個搭載のコンピュータが現れており、同様の課題をかかえている。この様に、多くのコンピュータにおける共通の課題を解決する手段であり、今後、広く採用される可能性が高いと思われる。
【符号の説明】
【００２９】
１００ 半導体チップ
１０１ ＣＰＵ
１０２ ローカルメモリ ＬＭ
１０３ 縦のバス
１０４ 横のバス 
１１１ スイッチ ＳＷ
１１２ ＣＰＵ‐Ｃｏｒｅ
１１３ メモリ ＭＥＭ
１１５ 半導体チップ
１２０ 半導体チップ
１２１ 外部接続インターフェイス
１２２ デュアル・インライン・メモリ・モジュール ＤＩＭＭ
１２３ データストレージ・ユーザー入出力装置
１３０ 半導体メモリチップ
１３１ 半導体ＣＰＵチップ
１３２ ＣＰＵ
１３３ ＣＰＵインターフェイス Ｃ‐Ｉ／Ｆ
１４１ バッファーメモリ ＢＭ
１４２ コントローラー ＣＯＮＴ
１４３ スイッチＳＷ
１４５ 縦のデータバス Ｄａｔａ Ｂｕｓ‐ｙ０
１４６ 縦のコントロールバス Ｃｏｎｔｒｏｌ Ｂｕｓ‐ｙ０
１４７ 横のデータバス Ｄａｔａ Ｂｕｓ‐ｘ３
１４８ 横のコントロールバス Ｃｏｎｔｒｏｌ Ｂｕｓ‐ｘ３
１４９ 縦のデータバス Data Ｂｕｓ‐ｙ３
１５０ 縦のコントロールバス Ｃｏｎｔｒｏｌ Bus‐y３
１５１ 横のデータバス Ｄａｔａ Ｂｕｓ‐ｘ０
１５２ 横のコントロールバス Ｃｏｎｔｒｏｌ Ｂｕｓ‐ｘ０
１５３ 横のデータバス Ｄａｔａ Ｂｕｓ‐ｘ２
１５４ 横のコントロールバス Ｃｏｎｔｒｏｌ Ｂｕｓ‐ｘ２
１６１ ＣＰＵ００において実行される動作
１６２ ＬＭ０３において実行われる動作
１６３ ＬＭ２３において実行される動作
１６４ ＬＭ０３において実行される動作
１６５ ＣＰＵ２２において実行される動作
１６６ ＬＭ０２における実行される動作
１６８〜１７９ 動作のながれ
１８１〜１９２ 動作のながれ
２０１ メモリマネージメント ＭＭ
２１１〜２２４ 動作のながれ
２３１ 横のコントロールバス
２３２ 横のデータバス
２３６〜２３７ リクエストシグナル
２４１〜２５２ セグメント
２４１ａ〜２５１ａ セグメント
２６０ 半導体チップ
２６１〜２７０ バスコントローラ Ｂ‐ＣＯＮＴ
２８０ 半導体チップ
２８１〜２８８ バスコントローラ Ｂ‐ＣＯＮＴ
２９１ 電源管理機能 ＰＭ
３００ 半導体チップ
３０１ クロスバー
３０２ スイッチＳＷ
３０３ 共有メモリ ＳＣ
３０４ ＣＰＵ
３１０ 半導体チップ
３１１ ルーター
３１２ ＩＰブロック
【図１】
2015035117.tif 000003
【図２】
2015035117.tif 000004
【図３】
2015035117.tif 000005
【図４】
2015035117.tif 000006
【図５】
2015035117.tif 000007
【図６】
2015035117.tif 000008
【図７】
2015035117.tif 000009
【図８】
2015035117.tif 000010
【図９】
2015035117.tif 000011
【図１０】
2015035117.tif 000012
【図１１】
2015035117.tif 000013
【図１２】
2015035117.tif 000014
【図１３】
2015035117.tif 000015
【図１４】
2015035117.tif 000016
【図１５】
2015035117.tif 000017
【図１６】
2015035117.tif 000018
【図１７】
2015035117.tif 000019