(57)【特許請求の範囲】
【請求項１】
（ａ）同時に実行可能な小命令を組み合わせたＶＬＩＷ命令を記憶する命令メモリと、
（ｂ）前記命令メモリから前記ＶＬＩＷ命令をフェッチする命令フェッチユニットと、
（ｃ）前記命令フェッチユニットにおいてフェッチされた前記ＶＬＩＷ命令の前記小命令にレジスタを割り当てるレジスタ割り当てユニットと、
（ｄ）前記レジスタを割り当てられた前記小命令を対応する計算ユニットに送るイシューユニットと、
（ｅ）複数の前記レジスタから構成されるキューと
を備えたキューＶＬＩＷプロセッサにおいて、
前記レジスタ割り当てユニットは、前記キューの先頭を示すポインタと最後尾を示すポインタを参考にして前記小命令に前記レジスタを割り当てることを特徴とするキューＶＬＩＷプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＶＬＩＷプロセッサに関するもので、キュー〔Ｑｕｅｕｅ、ＦＩＦＯ（先入れ先出し）方式のメモリ〕をアキュムレータとして用いた、キューＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）プロセッサに関するものである。ここで、アキュムレータとは主に計算の途中結果を入れる高速なメモリであり、一般のプロセッサではレジスタ又は汎用レジスタと呼ばれるものに相当する。
【０００２】
【従来の技術】
電子計算機の一般のプロセッサは、ランダムアクセスメモリの一種であるレジスタをアキュムレータとして使ったプロセッサである。この計算機を高速化するために、並列に実行できる命令（ここでは小命令と呼ぶ）を一定個組にして、一つの大きな命令（ＶＬＩＷ命令と呼ぶ）として実行するＶＬＩＷプロセッサが開発されている。ここでは、これを本発明と区別するためにレジスタＶＬＩＷプロセッサと呼ぶ。
【０００３】
【発明が解決しようとする課題】
しかしながら、レジスタＶＬＩＷプロセッサの場合、一つ一つの小命令でレジスタを指定しなければならないので、命令長が長くなる、プログラム長が長くなるレジスタ従属性が発生する、またレジスタの抽象化が難しいためプロセス切替えが遅くなる、などの問題点があった。これらの問題点は、ハードウェアを複雑にしてスピードを下げる、消費電力を上げる、並列性を下げる、通信トラフィックを上げるなど、更なる問題を引き起こすため、特に、インターネット化の進展が著しい現在では、大きな課題となっていた。
【０００４】
本発明は、上記状況に鑑みて、ＶＬＩＷ命令長を短くしてメモリやプロセッサのハードウェアを少なくし、並列性を増した高速なコンピュータ、キューＶＬＩＷプロセッサを提供することを目的とする。
【０００５】
【課題を解決するための手段】
本発明は、上記した目的を達成するために、
〔１〕キューＶＬＩＷプロセッサにおいて、同時に実行可能な小命令を組み合わせたＶＬＩＷ命令を記憶する命令メモリと、前記命令メモリから前記ＶＬＩＷ命令をフェッチする命令フェッチユニットと、前記命令フェッチユニットにおいてフェッチされた前記ＶＬＩＷ命令の前記小命令にレジスタを割り当てるレジスタ割り当てユニットと、前記レジスタを割り当てられた前記小命令を対応する計算ユニットに送るイシューユニットと、複数の前記レジスタから構成されるキューとを備えたキューＶＬＩＷプロセッサにおいて、前記レジスタ割り当てユニットは、前記キューの先頭を示すポインタと最後尾を示すポインタを参考にして前記小命令に前記レジスタを割り当てることを特徴とする。
【０００６】
すなわち、本発明では、
（１）ＶＬＩＷプロセッサにおいて、計算の基本原理としてキュー計算法を用いる。その結果、小命令でレジスタ指定が不要となり小命令（キュー小命令）長、ＶＬＩＷ命令（キューＶＬＩＷ命令）長が短くなり、また並列性も増す。
【０００７】
（２）ＶＬＩＷプロセッサにおいて、少なくとも命令メモリと、命令フェッチユニットと、レジスタ割り当てユニットと、イシューユニットと、キューと、計算ユニットと、データメモリとを備え、前記キューをアキュムレータとして用い、同時に実行可能な命令を組み合わせてキューＶＬＩＷ命令として並列処理をする。
【０００８】
（３）上記（２）記載のＶＬＩＷプロセッサにおいて、前記命令フェッチユニットは前記命令メモリからキューＶＬＩＷ命令をフェッチし、それを前記レジスタ割り当てユニットに送り、ここでキュー小命令にレジスタを割り当て、前記イシューユニットに渡す。そのイシューユニットは小命令を前記計算ユニットに送り、その計算ユニットはその命令を実行する。
【０００９】
（４）上記（３）記載のキューＶＬＩＷプロセッサにおいて、前記計算ユニットでの計算時に、必要ならば前記データメモリからデータを読み出したり格納したりする。
【００１０】
（５）前記キューを前と後ろがつながった循環キューとして実現することも可能である。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら詳細に説明する。
【００１２】
まず、基本的なキュープロセッサについて説明する。
【００１３】
キュー計算法は計算の途中結果をキューから取り出し、計算し、その結果をキューに入れる計算方法である。
【００１４】
図１は、データの流れによって計算方法を示すデータフロープログラムグラフである。
【００１５】
メモリＭにあるデータａ，ｂ，ｃ，ｄがメモリから取り出されて、ｅ＝ａｂ／（ｃ＋ｄ）の計算がなされ、それがメモリに格納されるプログラムとなっている。図１において、ｌｄやｓｔはロードストア命令でメモリからデータを転送する命令、＊，＋等は計算命令である。
【００１６】
キュー計算法では、命令の実行を図１の破線で示す順序で行う。計算には途中結果を入れるアキュムレータとしてキューを用いる。このプログラムをニモニック形式で書くと以下のようになる。
【００１７】
ｌｄ  ａ
ｌｄ  ｂ
ｌｄ  ｃ
１ｄ  ｄ
ｍｕｌ
ａｄｄ
ｄｉｖ
ｓｔ  ｅ
このように、ｍｕｌ、ａｄｄなどの命令にレジスタ指定がないことが特徴である。これをシリアルキュープログラムと呼ぶ。プログラムは８ステップで終わる。
【００１８】
キュー計算法では、図２に示すように、キューのテールにデータを入れ、ヘッドから取り出すことを原則とする。そのため、計算命令はヘッドからデータを取り出して計算し、その計算結果をキューのテールに入れる。データは消費型のデータであり、一度取り出されるとそのデータは消滅する。
【００１９】
次に、キュープロセッサの基本原理について説明する。
【００２０】
ＶＬＩＷプロセッサは、同時に実行可能なＶＬＩＷ小命令を組み合わせてそれを一つの大きなＶＬＩＷ命令として実行する並列プロセッサである。それぞれのＶＬＩＷ命令は同数の小命令を含み、これらは同時に実行される。
【００２１】
ＶＬＩＷプロセッサでは、命令長が一定であるのでその取扱が簡単なこと（命令長の違いを考慮しなくて良いので命令のフェッチや取扱いが簡単、小命令の切り出しが簡単）、並列に実行できる命令が一ＶＬＩＷ命令で示されているので、並列実行可能な命令を探す必要がないことなどから、ハードウェアの簡単化が図れるなど多くの特徴を持っている。
【００２２】
一方、一ＶＬＩＷ命令を構成するに足る小命令が無い場合（並列性がない場合）でも、一ＶＬＩＷを構成しなくてはならないので、そこにｎｏｐなどの無駄命令を挿入する必要がある。
【００２３】
キュー小命令は、レジスタ指定部が必要ないので命令長が短くなる。それゆえ、キュー命令を小命令としたＶＬＩＷ命令もその長さが小さくなる。このＶＬＩＷ命令の短縮化はプログラムを小さくするので、今日のようなプログラムやデータをインターネットで交換する時代には、通信量を減少させるので好都合である。
【００２４】
図１において、横に並んでいる命令は同時に実行できる命令である。キュープログラムではこの順で縦に命令を並べるので、プログラムには同時に実行できる命令が並んで出てくる傾向がある。すなわち、キュープログラムは潜在的に並列処理に向いており、それゆえこれをもとにＶＬＩＷプログラムを構成することは容易である。
【００２５】
例えば、上記のプログラムを、２並列のＶＬＩＷ命令として実現すると以下のようになる。
【００２６】
ｌｄ  ａ  ｌｄ  ｂ
ｌｄ  ｃ  ｌｄ  ｄ
ｍｕｌ  ａｄｄ
ｄｉｖ  ｎｏｐ
ｓｔ  ｅ  ｎｏｐ
ここで、横に並んだ命令群が一つのＶＬＩＷ命令であり、ｎｏｐは不足した命令を埋めるための何もしない命令である。この場合、５ステップで実行が終わる。
【００２７】
キューＶＬＩＷプロセッサを構成するには、命令にキューのワードを割り当て、実行時に同時にキューにアクセスできる機構が必要である。
【００２８】
次に、キューＶＬＩＷプロセッサの構成について説明する。
【００２９】
図３は本発明の実施例を示すキューＶＬＩＷプロセッサの構成図である。
【００３０】
この図において、１は命令メモリ、２は命令フェッチユニット（ＩＦＵ）、３はレジスタ割り当てユニット（ＲＡＵ）、４はイシュー（Ｉｓｓｕｅ）ユニット（ＩＵ）、５はキュー、６はＱＨ（キューの先頭ポインタ）、７はＱＴ（キューの最後尾ポインタ）、８は計算ユニット（ＣＵ）（ロードユニット８Ａ，ストアユニット８Ｂ，数値演算ユニット８Ｃ，Ｍｕｌユニット８Ｄ，Ｄｉｖユニット８Ｅ，ＦＰユニット８Ｆ，ブランチユニット８Ｇなど）、９はデータメモリである。
【００３１】
ここでキュー５は円形状のレジスタとその一部をキューとして使うためのキューの先頭を示すポインタＱＨ６、キューの最後尾を示すポインタＱＴ７よりなっている（循環キュー）。ポインタＱＨ６とポインタＱＴ７に囲まれたところがキュー５にデータが入っているところである。
【００３２】
そのキューＶＬＩＷプロセッサの動作は以下のようである。
【００３３】
命令フェッチユニット（ＩＦＵ）２は命令メモリ１からＶＬＩＷ命令をフェッチし、それをレジスタ割り当てユニット（ＲＡＵ）３に渡す。そこで、レジスタ割り当てユニット（ＲＡＵ）３はポインタＱＨ６とポインタＱＴ７を参考にして小命令にレジスタを割り当てる。図ではｌｄ  ｃ→ｌｄ  ２，ｃのようにキューの２番の語が命令に割り当てられている。その後、この命令はイシューユニット４を経由して計算ユニット（ＣＵ）８に送られ、計算される。このとき必要ならばデータメモリ９からデータが読み出されたり、データメモリ９にデータが格納されたりする。
【００３４】
このように構成したので、本発明によれば、ＶＬＩＷ命令長が短くなり、プログラム長が一般のプロセッサ用と比べて半分以下になることが期待される。
【００３５】
また、ＶＬＩＷ命令長が短くなると、それだけハードウェアが簡単になり、その分クロック周波数を上げることが出来る。多くの並列性が含まれるのが当然である。このように、メモリやプロセッサのハードウェアが少なくてすむ高速なコンピュータが実現できる。
【００３６】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づいて種々の変形が可能であり、これらを本発明の範囲から排除するものではない。
【００３７】
【発明の効果】
以上、詳細に説明したように、本発明では、以下のような効果を奏することができる。
【００３８】
（Ａ）ＶＬＩＷ命令長が短くなるので、プログラム長が一般のプロセッサ用と比べて半分以下になることが期待される。
【００３９】
（Ｂ）また、ＶＬＩＷ命令長が短くなると、それだけハードウェアが簡単になり、その分クロック周波数を上げることができる。これにより、メモリやプロセッサのハードウェアが少なくてすむ高速なコンピュータを構成できる。
【００４０】
（Ｃ）キューのワードが命令ではコンパイラ時に割り当てられていないので抽象化されており、プロセス切り替えが簡単化され高速化されることが期待できる。
【００４１】
（Ｄ）プログラム長が短くなるので、プログラムをインターネットを通して交換する場合、インターネットのトラフィックを少なくすることが期待できる。
【図面の簡単な説明】
【図１】  本発明にかかるデータの流れによって計算方法を示すデータフロープログラムグラフである。
【図２】  本発明にかかる命令の実行によるキューの内容の推移を示す図である。
【図３】  本発明の実施例を示すキューＶＬＩＷプロセッサの構成図である。
【符号の説明】
１    命令メモリ
２    命令フェッチユニット（ＩＦＵ）
３    レジスタ割り当てユニット（ＲＡＵ）
４    イシューユニット（ＩＵ）
５    キュー
６    ＱＨ（キューの先頭ポインタ）
７    ＱＴ（キューの最後尾のポインタ）
８    計算ユニット（ＣＵ）
９    データメモリ
【図１】
0003696531.tif 000002
【図２】
0003696531.tif 000003
【図３】
0003696531.tif 000004