(57)【特許請求の範囲】
【請求項１】
少なくともメインメモリとプロセッサを有するコンピュータ方式において、
前記メインメモリから分岐条件とともに命令フェッチインストラクション中で指定された命令数のフェッチを当該命令フェッチインストラクションの実行によって行い、前記命令フェッチインストラクション以外の命令は前記プロセッサに送る命令フェッチユニットを備えたことを特徴とするプログラムによって命令をフェッチするコンピュータ方式。
【請求項２】
請求項１記載のプログラムによって命令をフェッチするコンピュータ方式において、前記命令フェッチインストラクションが他の処理命令の中に置かれることを特徴とするプログラムによって命令をフェッチするコンピュータ方式。
【請求項３】
請求項１記載のプログラムによって命令をフェッチするコンピュータ方式において、前記命令フェッチユニットが前記プロセッサとお互いに同期をとりながらプログラムを実行することを特徴とするプログラムによって命令をフェッチするコンピュータ方式。
【請求項４】
請求項３記載のプログラムによって命令をフェッチするコンピュータ方式において、前記同期には分岐条件のやりとりを含むことを特徴とするプログラムによって命令をフェッチするコンピュータ方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムによって命令を実行するコンピュータ方式に関するものである。
【０００２】
【従来の技術】
一般にコンピュータはプログラムカウンタで示される命令をメインメモリからフェッチし、それを実行することによって、プログラムを実行する。
ここでフェッチとはメインメモリにおかれた命令をプロセッサに持ってくることを言う。
【０００３】
今日の計算機性能の向上には、めざましいものがある。しかし、従来のコンピュータの逐次処理では限界があり、さらなる処理速度の向上には並列処理などの方法が不可欠である。
従来、このような分野の技術としては、以下の文献に開示されるものがあった。
【０００４】
（１）壺井彰久他、“ＰＮスーパースカラプロセッサのパルテノンシステムによるＬＳＩ設計”情報処理学会  第４８回全国大会、２Ｃ−３，１９９４．
（２）Ｍｉｋｅ  Ｊｏｈｎｓｏｎ：Ｓｕｐｅｒｓｃａｌａｒ  ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  ｄｅｓｉｇｎ．Ｐｒｅｎｔｉｃｅ  Ｈａｌｌ．
そこで、従来型ＰＮプロセッサについて図３を用いて説明する。
【０００５】
図３において、１００は命令メモリであり、演算ユニット（ＡＵ）命令１０１、分岐制御ユニット（ＢＵ）命令１０２、転送ユニット（ＴＵ）命令１０３を有している。１０４はデータメモリ、２０１は演算ユニット（ＡＵ）、２０２は分岐制御ユニット（ＢＵ）、２０３は転送ユニット（ＴＵ）、２０４はレジスタファイルである。
【０００６】
このように、従来のＰＮプロセッサは、演算ユニット（ＡＵ）２０１、転送ユニット（ＴＵ）２０３、分岐制御ユニット（ＢＵ）２０２の３ユニットで構成される。そして、分岐制御ユニット（ＢＵ）２０２は比較命令や分岐命令を実行し、各ユニットのプログラムの実行の流れを制御する。実行の流れ制御は、分岐命令の実行によって次に実行する命令群を変えることによってなされる。命令のフェッチは、この実行用の命令を供給するという考え方に沿って、命令実行に従属した形で行われる。
【０００７】
また、各ユニットは独立して動作しているので、ユニット間で実行する命令に依存関係がある時は、トークンを送受信することでその依存関係を保つ。
このトークンの送受信はトークンカウンタ（ＴＣ：Ｔｏｋｅｎ  Ｃｏｕｎｔｅｒ）を用いることで実現している。また、このトークンの送受信は該当するユニット内の自ユニットに対するトークンカウンタ（ＴＣ）をインクリメント、デクリメントすることで行う。
【０００８】
各ユニットは、それぞれ３２ｂｉｔのアドレスバスと、３２ｂｉｔの命令バスを持ち、それぞれ独立して命令フェッチを行う。つまり、３ユニットで構成した場合、命令フェッチだけでも最低、１９２本ものピンが必要となる。
本願発明者等は、簡単な命令セットを持ったＣＰＵで、命令を機能別に並列に実行するＰＮ（Ｐａｒａｌｌｅｌ  Ｎｅｕｍａｎｎ）コンピュータの開発研究を行ってきた。スーパースカラプロセッサは命令を動的に解析し、並列に実行するが、ＰＮコンピュータはプログラムをコンパイル時に静的に解析し、機能別に分け並列に実行する。
【０００９】
したがって、コンパイラにより並列度の抽出が高度に行われ、また、実行時にスケジューリングを行わないので、実行時間が短くなりハードウエアが簡単になるという利点を有する。その上、元来別々のハードウエア上で実行される、演算、実行、分岐の３命令を実行するハードウエアに分け、そのユニットで並列に実行するので、ハードウエアの増加を最小限に抑えながら、パフォーマンスを上げることができる。
【００１０】
【発明が解決しようとする課題】
しかしながら、上記したＰＮコンピュータには命令群が三つあるので、そのためのバスが多くなり、これがＩＣのピン数を増やし、また命令フェッチは命令実行に従属した形で行われるので、命令フェッチを独自に制御することができなかった。
【００１１】
本発明は、上記状況に鑑みてなされたものであり、バス数を最小限に保ちながら命令フェッチをソフトウエアで制御できるようにすることを目的とする。
【００１２】
【課題を解決するための手段】
本発明は、上記目的を達成するために、
（１）少なくともメインメモリとプロセッサを有するコンピュータ方式において、前記メインメモリから分岐条件とともに命令フェッチインストラクション中で指定された命令数のフェッチを当該命令フェッチインストラクションの実行によって行い、前記命令フェッチインストラクション以外の命令は前記プロセッサに送る命令フェッチユニットを備えるようにしたものである。
【００１３】
（２）上記（１）記載のプログラムによって命令をフェッチするコンピュータ方式において、前記命令フェッチインストラクションが他の処理命令の中に置かれるようにしたものである。
（３）上記（１）記載のプログラムによって命令をフェッチするコンピュータ方式において、前記命令フェッチユニットがプロセッサとお互いに同期をとりながらプログラムを実行するようにしたものである。
【００１４】
（４）上記（３）記載のプログラムによって命令をフェッチするコンピュータ方式において、前記同期に分岐条件のやりとりを含むようにしたものである。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら説明する。
図１は、本発明の実施例を示すプログラムによって命令をフェッチするコンピュータ方式の概略構成図である。
この実施例では、図１に示すように、コンピュータは、メインメモリ１、命令フェッチユニット２、命令キュー３、プロセッサ４から構成されている。
【００１６】
このコンピュータのプログラムは、メインメモリ１の中身として示すように、“命令フェッチインストラクション”を先頭にして、次に加算やロード等の処理命令が続く形式で構成される。
ここで、例えば、図１中“Ｆ  ｍ３，７”は、メインメモリ１のｍ３番地から７個の命令をフェッチし、それをプロセッサ４に送る“命令フェッチインストラクション”である。
【００１７】
この命令自身は、一つ前の“命令フェッチインストラクション”“Ｆｍ  ２，９”が命令フェッチユニット２で実行されることによって、命令フェッチユニット２にフェッチされる。
すなわち、命令フェッチユニット２内に“Ｆ  ｍ２，９”がそれ以前の命令フェッチインストラクションによってフェッチされ、現在この命令を実行することによって、ｍ２番地からの命令をフェッチしている様子を示している。“命令フェッチインストラクション”実行によってフェッチされた“命令フェッチインストラクション”以外の命令は、命令キュー３を通してプロセッサ４に送られる。プロセッサ４は送られてきた命令を実行する。一番最初の“命令フェッチインストラクション”、すなわち、電源投入時やリセット時の“命令フェッチインストラクション”は、ハードウエア的に決まった番地から、またはリセットベクトルのような方式によってフェッチされる。
【００１８】
プログラムの実行制御は、フェッチ先を変える機能を持つ“命令フェッチインストラクション”、すなわち、“フェッチ分岐インストラクション”によって行われる。フェッチ分岐インストラクションは“ＣＦ  ｍ６．７，ｍ９．１４，”のような形式をした命令であり、処理命令の実行結果（正とか負等）により分岐条件が決定されたとき、条件が成立しなければ、ｍ６番地から始まる７命令をフェッチし、条件が成立したときにはｍ９番地からの１４命令をフェッチする命令である。“フェッチ分岐インストラクション”では、スピードを上げるために分岐、不分岐を予測し、分岐条件が設定される前に命令を前もってフェッチし、分岐条件が決定されたときフェッチ結果を修正する機能を持たせることもできる。命令フェッチインストラクションと処理命令は、分岐条件や処理命令群実行終了などの情報をやりとりしながら、すなわち同期を取りながら実行される。
【００１９】
【実施例】
今回、ＮＴＴが開発したパルテノンシステムを用いてＰＮプロセッサの設計、試作を行った。ここでは、ＰＮプロセッサの試作の段階で生じた、ピン数とゲート数の制限という物理的制約に対する対処法について述べる。
以下、本発明の実施例を示すＶＬＩＷ型フェッチＰＮプロセッサについて図２を参照しながら説明する。
【００２０】
図２において、１１は命令メモリ、１２はデータメモリ、１３はフェッチユニット（ＦＵ）、１４はＡＵキュー、１５はＴＵキュー、１６は演算ユニット（ＡＵ）、１７は転送ユニット（ＴＵ）、１８はレジスタファイル（ＧＰＲ，ＳＰＲ）である。
今回設計したＰＮプロセッサは限られたピン数で設計しなければならないので、従来の各ユニットごとにアドレスを指定しフェッチする方式をやめ、演算ユニット（ＡＵ）１６と転送ユニット（ＴＵ）１７の命令を結合し、一つのアドレスで演算ユニット（ＡＵ）１６と転送ユニット（ＴＵ）１７の命令をフェッチするＶＬＩＷ型のフェッチを採用した。また、従来の分岐制御ユニット（ＢＵ）の代わりに、フェッチとフェッチ先の変更を行うフェッチユニット（ＦＵ：Ｆｅｔｃｈ  Ｕｎｉｔ）１３を付加した。演算ユニット（ＡＵ）１６、転送ユニット（ＴＵ）１７はフェッチユニット（ＦＵ）１３がフェッチした命令をそのまま実行するだけである。
【００２１】
ＶＬＩＷ方式では命令の依存関係を調べ、並列に実行できる命令を抽出して一つの長命令に合成する。該当する命令がないところにはＮＯＰ命令が挿入されるので、プログラムサイズは大きくなる。一方、ＰＮ方式は、命令の実行をトークンの送受信によって制御しているため、プログラムサイズを小さくすることができるという利点がある。
【００２２】
命令のフェッチは、フェッチユニット（ＦＵ）１３がブロックごとに行い、ブロックの先頭アドレスには、命令フェッチインストラクションを置く。命令フェッチインストラクションでは、次にフェッチするブロックを指定する。
（ａ）無条件フェッチ
フェッチするブロックの先頭アドレスと、そこからフェッチする命令の個数を指定する。
【００２３】
（ｂ）条件フェッチ
フェッチするブロックの先頭アドレスと、そこからフェッチする命令の個数をそれぞれ二つ指定する。条件フェッチでは、プロセッサステータスワード（ＰＳＷ）により条件を判断し、条件が成立した場合、指定されたアドレスから、フェッチ個数分命令をフェッチし、条件が偽の場合は、もう一方の指定アドレスからのフェッチ個数分フェッチする。
【００２４】
ブロックの２番目以降のアドレスにはＡＵ、ＴＵ命令を置く。
ＶＬＩＷ方式ではフェッチした順番に各ユニット同時に実行していけばよいのだが、ＰＮ方式ではユニット間で命令に依存関係があるとき、トークンによって命令の実行を制御しているので、各ユニットが独立して動作できなければならない。そこでフェッチした演算ユニット（ＡＵ）１６、転送ユニット（ＴＵ）１７を、それぞれのキュー１４，１５に入れ、各ユニットが独立してキューから命令を取り出し、命令を実行できるようにした。
【００２５】
上記したように、本発明では、ＰＮプロセッサの試作の段階で生じる物理的制約の問題点を挙げ、その対処法を述べた。
ピン数の制限によりフェッチ方法をＶＬＩＷ型で行った結果、各ユニットごと必要であったアドレスバスを一つにし、ＰＮプロセッサの特徴により、ＶＬＩＷよりもプログラムサイズを小さくすることができるという利点があることが分かった。
【００２６】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づいて並列コンピュータなどに適用するなど種々の変形が可能であり、これらを本発明の範囲から排除するものではない。
【００２７】
【発明の効果】
以上、詳細に説明したように、本発明によれば、以下のような効果を奏することができる。
（Ａ）ハードウエアの増加を最小限に抑えながら、パフォーマンスを上げることができるプログラムによって命令をフェッチするコンピュータ方式を提供することができる。
【００２８】
（Ｂ）ピン数の制限によりフェッチ方法をＶＬＩＷ型で行った結果、各ユニットごと必要であったアドレスバスを一つにし、ＰＮプロセッサの特徴により、ＶＬＩＷよりもプログラムサイズを小さくすることができる。
（Ｃ）命令フェッチがソフトウエアで制御できる。
【図面の簡単な説明】
【図１】本発明の実施例を示すプログラムによって命令をフェッチするコンピュータ方式の概略構成図である。
【図２】本発明の実施例を示すＶＬＩＷ型フェッチＰＮプロセッサの全体構成図である。
【図３】従来型ＰＮプロセッサの全体構成図である。
【符号の説明】
１    メインメモリ
２    命令フェッチユニット
３    命令キュー
４    プロセッサ
１１    命令メモリ
１２    データメモリ
１３    フェッチユニット（ＦＵ）
１４    ＡＵキュー
１５    ＴＵキュー
１６    演算ユニット（ＡＵ）
１７    転送ユニット（ＴＵ）
１８    レジスタファイル（ＧＰＲ，ＳＰＲ）
【図１】
0003566469.tif 000002
【図２】
0003566469.tif 000003
【図３】
0003566469.tif 000004