(57)【特許請求の範囲】
【請求項１】
複数の基本命令をまとめて一命令語として並列処理する並列処理プロセッサにおいて，
基本命令は同一タイミングで処理することの可否を指定する命令継続指定ビットを設けたものとし，
複数の基本命令を基本命令毎に格納する命令バッファと，該命令バッファの基本命令をそれぞれに演算する演算部と，それぞれの演算部の演算結果を格納するレジスタ，該命令継続指定ビットの値を判別して基本命令のうち同一タイミングで処理を行ってはならない基本命令の演算部への入力を抑止する命令抑止部とを備え，
前記命令抑止部は同一タイミングで処理をしてはならないことを指示された基本命令より後の基本命令の演算部への入力は抑止し，それ以前の同一タイミングで演算できる引き続く基本命令を一命令語とみなし，同一タイミングで演算部に入力して並列処理するものであり，
前記一命令語にＭ個の前記基本命令が含まれるとした時，Ｍビットからなる命令拡張制御レジスタと，Ｍ個の基本命令のうち有効な基本命令の位置を表すマスクパターンを該命令拡張制御レジスタにセットし，該命令拡張制御レジスタを参照して命令語を生成する命令語生成部とを備え，
入力された基本命令に対して，該マスクパターンを参照し，有効であることを示すマスクパターンに対応する位置に該基本命令をセットし，有効でないことを示すマスクパターンに対応する位置に無操作命令もしくはなにも命令を与えないことによりＭ個の基本命令をもつ命令語を生成することを特徴とする並列処理プロセッサ。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は，複数の基本命令を一命令として並列処理する並列処理プロセッサに関する。
【０００２】
計算機システムでは，パイプライン処理等で複数命令を並列処理し，高速化を計っている。
従来は複数命令をまとめて固定長の一命令にし，複数命令を並列処理する長形式命令語方式がとられているが，可変長でないため，基本命令の数が少ない場合にはキャッシュメモリに保持したときのヒット率の低下をまねいていた。また，スーパースカラ方式等で命令並列度に応じて並列処理することも行われているが，並列度が大きくなるのに応じてレジスタ数を増大させる必要がある。
【０００３】
本発明は，並列処理が可能な一連の基本命令を認識し，それを可変長の一命令として扱うことにより効率よく命令の並列処理を行うことができる並列処理プロセッサを提供する。
【０００４】
【従来の技術】
図７は従来の長形式命令語の実行方法を示す。
図７において，
２００は命令語であって，Ｎビットの基本命令をＭ個もつ固定長の長形式命令語であり，Ｍ＝６の場合を示す。図７では１タイミングで並列処理する基本命令１，基本命令２、基本命令３を含み，ＮＯＰ１，ＮＯＰ２，ＮＯＰ３（ＮＯＰは何も処理をしないことを指示する無操作命令である）を持たせ固定長の長形式命令語としたものである。
【０００５】
２０１はデコーダであって，デコーダ１，デコーダ２，デコーダ３，デコーダ４，デコーダ５，デコーダ６を持つものである。命令語２００の各基本命令語に対応して設けられ，それぞれの基本命令をデコードするものである。
【０００６】
２０２は演算器であって，演算器１，演算器２，演算器３，演算器４，演算器５，演算器６を持ち，それぞれ  デコーダ１，デコーダ２，デコーダ３，デコーダ４，デコーダ５，デコーダ６でデコードされた命令を演算処理するものである。
【０００７】
２０３はレジスタであって，レジスタ１，レジスタ２，レジスタ３，レジスタ４，レジスタ５，レジスタ６を持ち，それぞれ演算器１，演算器２，演算器３，演算器４，演算器５，演算器６の演算結果を保持するものである。各レジスタは複数本の個別のレジスタを複数本備え，レジスタ空間を構成している。例えば，レジスタ１で１レジスタ空間を構成し，１２８ビットの個別レジスタを６４本備える等である。
【０００８】
図７の構成の動作を説明する。
命令語２００のＮビットの基本命令１，基本命令２，基本命令３，ＮＯＰ１，ＮＯＰ２，ＮＯＰ３は同じタイミングでそれぞれ並列にデコーダ１，デコーダ２，デコーダ３，デコーダ４，デコーダ５，デコーダ６に入力され，それぞれ，演算器１，演算器２，演算器３，演算器４，演算器５，演算器６に入力される。
【０００９】
そして，基本命令１，基本命令２，基本命令３はそれぞれの演算器で演算処理され，演算結果はそれぞれレジスタ１，レジスタ２，レジスタ３に保持される。ＮＯＰ１，ＮＯＰ２，ＮＯＰ３はそれぞれ処理を行わない指示であるので，演算されることはない。
【００１０】
図８は従来の長形式命令語の生成方法の説明図である。
図８において，
２１０は命令語生成プログラムであって，８個の基本命令語の固定長の長形式命令語を生成するプログラムである。
【００１１】
２２１は命令語生成プログラム２１０の第１行の記述で生成された命令語である。
２２２は命令語生成プログラム２１０の第２行の記述で生成された命令語である。
【００１２】
２２３は命令語生成プログラム２１０の第３行の記述で生成された命令語である。
２２４は命令語生成プログラム２１０の第４行の記述で生成された命令語である。
【００１３】
２２５は命令語生成プログラム２１０の第５行の記述で生成された命令語である。
２２６は命令語生成プログラム２１０の第６行の記述で生成された命令語である。
【００１４】
２２７は命令語生成プログラム２１０の第７行の記述で生成された命令語である。
命令語生成プログラム２１０の第１行の記述「ａｄｄ  ＆  ｓｕｂ」の記述により，第１番目の基本命令語が「ａｄｄ」，第２番目の基本命令語が「ｓｕｂ」，第３番目〜第８番目の基本命令語がＮＯＰ（無操作命令）の長形式命令語２２１が生成される。
【００１５】
同様に，命令語生成プログラム２１０の第２行の記述「ｌｏａｄ  ＆  ｓｔｏｒｅ」の記述により，第１番目の基本命令語が「ｌｏａｄ」，第２番目の基本命令語が「ｓｔｏｒｅ」，第３番目〜第８番目の基本命令語がＮＯＰ（無操作命令）の長形式命令語２２２が生成される。
【００１６】
命令語２２３のように基本命令語が「ｌｏａｄ」命令のみで６個続くような場合にも，命令語生成プログラム２１０は第３行のように「ｌｏａｄ」命令を繰り返して記述する。
【００１７】
同様に，命令語生成プログラム２１０の第５行，第６行，第７行の記述により，長形式命令語２２４，２２５，２２６，２２７が生成される。
【００１８】
【発明が解決しようとする課題】
従来の長形式命令語による複数命令の並列処理方法は，固定長であったため，並列処理する基本命令数が所定の数に達しない場合には，ＮＯＰ命令を付加して所定の長さにする必要があった。そのため，命令並列度の低いプログラムに対しては，ＮＯＰが多くなり，メモリの使用効率を悪化させ，キャッシュメモリのヒット率の低下，命令フェッチ機構の負荷の増大等をまねいていた。
【００１９】
一方，スーパースカラ方式では命令実行時の並列度に応じて，同時に実行される命令の長さが任意に変更されるので，効率の悪化は生じないが，並列度に応じて，必要なレジスタ数をどのようにして増加させるかが大きな課題とされている。
【００２０】
本発明は，長形式命令語を可変長として処理することができるようにして限られた数レジスタで効率良く並列処理することのできる並列処理プロセッサおよび並列実行方法を提供することを目的とする。
【００２１】
【課題を解決するための手段】
本発明は，複数の基本命令をまとめて一命令語として並列処理する並列処理プロセッサにおいて，基本命令は同一タイミングで処理することの可否を指定する命令継続指定ビットを設けたものとし，複数の基本命令を基本命令毎に格納する命令バッファと，該命令バッファの基本命令をそれぞれに演算する演算部と，それぞれの演算部の演算結果を格納するレジスタ，該命令継続指定ビットの値を判別して基本命令のうち同一タイミングで処理を行ってはならない基本命令の演算部への入力を抑止する命令抑止部とを備え，前記命令抑止部は同一タイミングで処理をしてはならないことを指示された基本命令より後の基本命令の演算部への入力は抑止し，それ以前の同一タイミングで演算できる引き続く基本命令を一命令語とみなし，同一タイミングで演算部に入力して並列処理するものであり，
前記一命令語にＭ個の前記基本命令が含まれるとした時，Ｍビットからなる命令拡張制御レジスタと，Ｍ個の基本命令のうち有効な基本命令の位置を表すマスクパターンを該命令拡張制御レジスタにセットし，該命令拡張制御レジスタを参照して命令語を生成する命令語生成部とを備え，入力された基本命令に対して，該マスクパターンを参照し，有効であることを示すマスクパターンに対応する位置に該基本命令をセットし，有効でないことを示すマスクパターンに対応する位置に無操作命令もしくはなにも命令を与えないことによりＭ個の基本命令をもつ命令語を生成する構成をもつ。
【００２２】
図１は本発明の基本構成を示す。
図１  （ａ）において，
１は並列処理プロセッサである。
【００２３】
２は命令語であって，複数の基本命令を含むものである。図１は基本命令が６個で一命令を構成する場合を例として説明する。
２’は命令バッファであって，命令語２の各基本命令を入力して保持するものである。
３は命令抑止部であって，抑止器１，抑止器２，抑止器３，抑止器４，抑止器５，抑止器６，・・・，抑止器Ｍを持つものである。各抑止器は命令語２のそれぞれに対応する位置の基本命令を命令バッファ２’より入力し，命令語の各基本命令の持つ命令継続指定ビットに従って，同一タイミングで実行することのできない基本命令の実行を抑止するものである。命令継続指定ビットは例えば，０であれば同一タイミングで実行するものとし，１は同一タイミングで実行できる一連の基本命令の終了を示すものである。
【００２４】
４はデコーダ部であって，各抑止器に対応するデコーダ１，デコーダ２，デコーダ３，デコーダ４，デコーダ５，デコーダ６，・・・，デコーダＭを持ち，それぞれに対応する抑止器の判定結果に応じて入力される命令語２の基本命令をデコードするものである。
【００２５】
５は演算部であって，演算器１，演算器２，演算器３，演算器４，演算器５，演算器６，・・・，演算器Ｍを持ち，各演算器はそれぞれに対応するデコーダの演算結果を入力するものである。
【００２６】
６はレジスタ部であって，レジスタ空間１，レジスタ空間２，レジスタ空間３，レジスタ空間４，レジスタ空間５，レジスタ空間６，・・・，レジスタ空間Ｍを持ち，各レジスタ空間はそれぞれに対応する演算器の演算結果を保持するものである。
【００２７】
命令語２において，
１０，１１は命令継続指定ビットである。
【００２８】
【作用】
図１  （ａ）の動作を説明する。
命令抑止部３の各抑止器（１〜Ｍ）はそれぞれに対応する位置の基本命令を入力する。各抑止器は，入力したそれぞれの基本命令の命令継続抑止ビットの値を判定する。例えば，値が０であれば同一タイミングで並列処理する命令であるとし，値が１であればその後に続く基本命令はデコーダへの入力を抑止する（命令継続抑止ビットの値１の基本命令までデコーダに入力する）。
【００２９】
そこで，デコーダ部４は，それぞれのデコーダに入力された基本命令をデコードし，それぞれに接続される演算器（１〜Ｍ）に基本命令を入力する。演算部５はそれぞれの演算器（１〜Ｍ）において入力された命令を演算処理する。レジスタ部６はそれぞれに接続されている演算器の演算結果を対応するレジスタに格納する。
【００３０】
図１  （ｂ）は本発明で並列処理する命令語の長さと同じタイミングで並列処理できる基本命令数とレジスタ空間数の関係についての説明図である。
図１  （ｂ）は，レジスタ空間数がＭ個であるとする。また，命令語に含まれる基本命令語の長さはＮビットであり，命令語に含まれる基本命令数はＰ個であるとする。
【００３１】
値０の命令継続ビットが引き続く基本命令列とその一連の命令継続ビットに続いて現れる値１の命令継続ビットの基本命令まで一命令語とみなし，最大Ｍ個（Ｐ＝１，２，・・・，Ｍ）まで，同一タイミングで処理することができる。即ち，並列できる１命令語の長さはＰ＝１，２，・・・，Ｍの場合のＭ組が可能である。
【００３２】
図２は本発明の動作例である。
図２  （ａ）は動作例であり，図２  （ｂ）はレジスタ空間の説明図である。
図２  （ａ）において，
２１は命令語１であって，基本命令１，基本命令２，基本命令３，基本命令４，基本命令５を持つものである。基本命令１の命令継続ビットは０，基本命令２の命令継続ビットは１であって，基本命令１と基本命令２は前回に処理されたものである。
【００３３】
２２は命令語２であって，命令語１に続く命令であって，基本命令１，基本命令２，基本命令３，基本命令４，基本命令５，基本命令６を持つものである。
命令語１（２１）の基本命令１から基本命令５および命令語２（２２）の基本命令１から基本命令４まで命令継続ビットは０であり，命令語２（２２）の基本命令５で命令継続ビットが１になるので，命令語１（２１）の基本命令３から基本命令２（２２）の基本命令５までが今回の処理の対象になる。命令語２（２２）の基本命令６より後の命令は次回に処理される。
【００３４】
２９は命令バッファであって，命令語の基本命令を入力して保持するものである。
３０は命令抑止部であって，抑止器１〜抑止器８を備えるものである。
【００３５】
３１はデコーダ部であって，デコーダ１〜デコーダ８を備えるものである。
３２は演算部であって，演算器１〜演算器８を備えるものである。
３３はレジスタ部であって，レジスタ空間１〜レジスタ空間８を備えるものである。
【００３６】
図２  （ａ）において，命令語１（２１）の基本命令２までが，前回のタイミングで処理されている。今回のタイミングで命令抑止部３０の各抑止器はそれぞれ対応する基本命令を入力する。抑止器１は命令語１（２１）の基本命令３，抑止器２は基本命令４，抑止器３は基本命令語５，および，抑止器４は次の命令語２（２２）の基本命令１，抑止器５は基本命令２，抑止器６は基本命令３，抑止器７は基本命令４，抑止器８は基本命令５を入力する。そこで，それぞれの抑止器は命令継続ビットを判定し，命令継続ビットが０の引き続く基本命令および命令継続ビットが１になる命令語２（２２）の基本命令６までの基本命令を抑止することなくそれぞれに接続されるデコーダに転送する。図２  （ａ）は抑止されない基本命令数とレジスタ空間数は同じであるが，例えば，命令語２（２２）の基本命令４の命令継続ビットが１であるとすれば，その基本命令４までがデコーダに転送される。
【００３７】
デコーダ部３１の各デコーダはそれぞれに入力された基本命令をデコードし，演算部３２の各演算器はそれぞれの命令を演算処理し，レジスタ部３３のレジスタ空間はそれぞれに接続される演算器の演算結果を保持する。
【００３８】
図２  （ｂ）はレジスタ空間の説明図である。
４０はレジスタ空間１であって，個別レジスタ４５を複数個（例えば６４個）もつものである。
【００３９】
４１はレジスタ空間２である。
４２はレジスタ空間Ｍである。
４５は個別レジスタであって，例えば１２８ビットのレジスタである。
【００４０】
図２  （ｂ）は１レジスタ空間に例えば１２８ビットの個別レジスタを６４本もつことを表している。
なお，上記の説明において，命令バッファ中の命令継続ビットがすべて０の場合には，命令形式の例外が検出され，オペレーティングシステムに対して，命令の先頭アドレスが通知される。オペレーティングシステムは，この「ハードウェアの許容範囲を越える長い命令語」を適当な長さに分割して再実行する。あるいは命令バッファに保持した基本命令を順次シミュレートすることにより各基本命令語を実行する。
【００４１】
本発明によれば，固定長の長形式命令語であっても，可変長命令語として扱うことができる。そして，同じタイミングで並列処理できる基本命令が少ない場合には，次の命令語で同じタイミングで処理できる基本命令を並列処理できる。そのため，並列処理の実行速度が速くなるとともに，命令語を固定長にするために付加するＮＯＰ命令等が少なくなりメモリの利用効率を向上させることができる。
【００４２】
【実施例】
図３は本発明の実施例構成を示す。
図３において，
５１は現命令語である。
【００４３】
Ａ０は基本命令であって，命令継続指定ビットが０のものである。
Ａ１は基本命令であって，命令継続指定ビットが０のものである。
Ａ２は基本命令であって，命令継続指定ビットが０のものである。
【００４４】
Ａ３は基本命令であって，命令継続指定ビットが０のものである。
Ａ４は基本命令であって，命令継続指定ビットが０のものである。
Ａ５は基本命令であって，命令継続指定ビットが１のものである。
【００４５】
５２は次命令語である。
Ｂ０は基本命令であって，命令継続指定ビットが０のものである。
Ｂ１は基本命令であって，命令継続指定ビットが０のものである。
【００４６】
５５は並列処理プロセッサである。
５８は命令バッファであって，８個のバッファ（６０，６１，６２，６３，６４，６５，６６，６７）を備えるものである。図３は，それぞれのバッファに基本命令（Ａ０），基本命令（Ａ１），基本命令（Ａ２），基本命令（Ａ３），基本命令（Ａ４），基本命令（Ａ５），基本命令（Ｂ０），基本命令（Ｂ１）を格納した状態を示す。
【００４７】
７１は命令継続指定ビット検出器であって，バッファ６０の基本命令（Ａ０）の命令継続指定ビット（０）を入力して，その値を検出するものである。
７２は命令継続指定ビット検出器であって，バッファ６１，６２の基本命令（Ａ０，Ａ１）の命令継続指定ビットを入力して，その値を検出するものである。
【００４８】
７３は命令継続指定ビット検出器であって，バッファ６０，６１，６２の基本命令（Ａ０，Ａ１，Ａ２）の命令継続指定ビットを入力して，その値を検出するものである。
【００４９】
７４は命令継続指定ビット検出器であって，バッファ６０，６１，６２，６３の基本命令（Ａ０，Ａ１，Ａ２，Ａ３）の命令継続指定ビットを入力して，その値を検出するものである。
【００５０】
７５は命令継続指定ビット検出器であって，バッファ６０，６１，６２，６３，６４の基本命令（Ａ０，Ａ１，Ａ２，Ａ３，Ａ４）の命令継続指定ビットを入力して，その値を検出するものである。
【００５１】
７６は命令継続指定ビット検出器であって，バッファ６０，６１，６２，６３，６４，６５の基本命令（Ａ０，Ａ１，Ａ２，Ａ３，Ａ４，Ａ５）の命令継続指定ビットを入力して，その値を検出するものである。
【００５２】
７７は命令継続指定ビット検出器であって，バッファ６０，６１，６２，６３，６４，６５，６６の基本命令（Ａ０，Ａ１，Ａ２，Ａ３，Ａ４，Ａ５，Ｂ０）の命令継続指定ビットを入力して，その値を検出するものである。
【００５３】
８０は命令抑止部であって，抑止器８１〜８７を備え，各命令継続指定ビット検出器（７１〜７７）の検出値に応じて入力した基本命令の通過もしくは抑止を行うものである。
【００５４】
８１は抑止器１であって，バッファ６１の基本命令（Ａ１）を入力し，命令継続指定ビット検出器７１の検出値に応じて入力した基本命令（Ａ１）の通過もしくは抑止を行うものである。
【００５５】
８２は抑止器２であって，バッファ６２の基本命令（Ａ２）を入力し，命令継続指定ビット検出器７２の検出値に応じて入力した基本命令（Ａ２）の通過もしくは抑止を行うものである。
【００５６】
８３は抑止器３であって，バッファ６３の基本命令（Ａ３）を入力し，命令継続指定ビット検出器７３の検出値に応じて入力した基本命令（Ａ３）の通過もしくは抑止を行うものである。
【００５７】
８４は抑止器４であって，バッファ６４の基本命令（Ａ４）を入力し，命令継続指定ビット検出器７４の検出値に応じて入力した基本命令（Ａ４）の通過もしくは抑止を行うものである。
【００５８】
８５は抑止器５であって，バッファ６５の基本命令（Ａ５）を入力し，命令継続指定ビット検出器７５の検出値に応じて入力した基本命令（Ａ５）の通過もしくは抑止を行うものである。
【００５９】
８６は抑止器６であって，バッファ６６の基本命令（Ｂ０）を入力し，命令継続指定ビット検出器７６の検出値に応じて入力した基本命令（Ｂ０）の通過もしくは抑止を行うものである。
【００６０】
８７は抑止器７であって，バッファ６７の基本命令（Ｂ１）を入力し，命令継続指定ビット検出器７７の検出値に応じて入力した基本命令（Ｂ１）の通過もしくは抑止を行うものである。
【００６１】
９０はデコーダ部であって，デコーダ１，デコーダ２，デコーダ３，デコーダ４，デコーダ５，デコーダ６，デコーダ７，デコーダ８を備えるものである。
１００は演算部であって，演算器１，演算器２，演算器３，演算器４，演算器５，演算器６，演算器７，演算器８を備えるものである。
【００６２】
１１０は  レジスタ部であって，レジスタ空間１，レジスタ空間２，レジスタ空間３，レジスタ空間４，レジスタ空間５，レジスタ空間６，レジスタ空間７，レジスタ空間８を備えるものである。
【００６３】
図３の構成の動作を説明する。
命令バッファ５８の各バッファ（６０，６１，６２，６３，６４，６５，６６，６７）はそれぞれ，基本命令Ａ０，Ａ１，Ａ２，Ａ３，Ａ４，Ａ５，Ｂ０，Ｂ１を入力する。
【００６４】
基本命令Ａ０は直接デコーダ１に入力される。
命令継続指定ビット検出器７１は基本命令Ａ０の命令継続指定ビット（０）  を入力する。そして，抑止器は命令継続指定ビット検出器７１の検出結果と基本命令Ａ１を入力する。命令継続指定ビットが０なので抑止器８１は基本命令Ａ１を通過させてデコーダ２に入力する。
【００６５】
命令継続指定ビット検出器７２は基本命令Ａ０，Ａ１の命令継続指定ビット（０）  を入力する。そして，抑止器８２は基本命令Ａ２および命令継続指定ビット検出器７２の検出結果を入力する。命令継続指定ビットが全て０なので抑止器８２は基本命令Ａ２を通過させてデコーダ３に入力する。
【００６６】
命令継続指定ビット検出器７３は基本命令Ａ０，Ａ１，Ａ２の命令継続指定ビット（０）  を入力する。そして，抑止器８３は基本命令Ａ３と命令継続指定ビット検出器７３の検出結果を入力する。命令継続指定ビットが全て０なので基本命令Ａ３を通過させてデコーダ４に入力する。
【００６７】
命令継続指定ビット検出器７４は基本命令Ａ０，Ａ１，Ａ２，Ａ３の命令継続指定ビット（０）  を入力する。そして，抑止器８４は基本命令Ａ４と命令継続指定ビット検出器７４の検出結果を入力する。抑止器８４は命令継続指定ビットが全て０なので基本命令Ａ４を通過させてデコーダ５に入力する。
【００６８】
命令継続指定ビット検出器７５は基本命令Ａ０，Ａ１，Ａ２，Ａ３，Ａ４の命令継続指定ビット（０）  を入力する。そして，抑止器８５は基本命令Ａ５と命令継続指定ビット検出器７５の検出結果を入力する。抑止器８５は命令継続指定ビットが全て０なので基本命令Ａ５を通過させてデコーダ６に入力する。
【００６９】
命令継続指定ビット検出器７６は基本命令Ａ０，Ａ１，Ａ２，Ａ３，Ａ４の命令継続指定ビット（０）  と基本命令Ａ５の命令継続指定ビット（１）  を入力する。そして，抑止器８６は基本命令Ｂ０と命令継続指定ビット検出器７６の検出結果を入力する。抑止器８６は命令継続指定ビットに１があるので基本命令Ｂ０の通過を抑止する。
【００７０】
命令継続指定ビット検出器７７は基本命令Ａ０，Ａ１，Ａ２，Ａ３，Ａ４の命令継続指定ビット（０）  と基本命令Ａ５の命令継続指定ビット（１）  と基本命令Ｂ０の命令継続指定ビット（０）  を入力する。そして，抑止器８７は基本命令Ｂ１と命令継続指定ビット検出器７７の検出結果を入力する。抑止器８７は命令継続指定ビットに１があるので基本命令Ｂ１の通過を抑止する。
【００７１】
デコーダ１，デコーダ２，デコーダ３，デコーダ４，デコーダ５，ダコーダ６はそれぞれに入力された基本命令（Ａ０，Ａ１，Ａ２，Ａ３，Ａ４，Ａ５）をデコードする。各デコーダでデコードされた基本命令はそれぞれに接続される演算器に入力され，演算される。そして，演算結果はそれぞれの演算器（１〜６）に接続されるレジスタ空間（１〜６）に保持される。
【００７２】
図４は本発明の実施例１であって，レジスタ間でデータ転送を行う場合の構成を示す。
図４において，
１２０は長形式命令語であって，Ｎビットの基本命令語１２１がＰ個（Ｐ＝１，２，・・・・，Ｍ（最大レジスタ空間数））で構成され，それぞれに命令継続指定ビットを持つものである。
【００７３】
１２１は基本命令語である。
１３０はデコーダ部であって，デコーダ１，デコーダ２，デコーダ３，デコーダ４，デコーダ５，デコーダ６により構成されるものである。
【００７４】
１３１は演算部であって，演算器１，演算器２，演算器３，演算器４，演算器５，演算器６により構成されるものである。
１３２はレジスタ部であって，レジスタ空間１，レジスタ空間２，レジスタ空間３，レジスタ空間４，レジスタ空間５，レジスタ空間６により構成されるものである。
【００７５】
１３３はバッファレジスタであって，前段のレジスタ空間のバッファレジスタのデータを複写して保持し，演算器１の指示によりレジスタ空間１に入力するものである。
【００７６】
１３４はバッファレジスタであって，演算器１の指示によりレジスタ空間１のデータを受け取り，保持するものである。
１３５はバッファレジスタであって，バッファレジスタ１３４のデータを複写して保持し，演算器２の指示によりレジスタ空間２に入力するものである。
【００７７】
１３６はバッファレジスタであって，演算器２の指示によりレジスタ空間２のデータを受け取り，保持するものである。
１３７はバッファレジスタであって，バッファレジスタ１３６のデータを複写して保持し，演算器３の指示によりレジスタ空間３に入力するものである。
【００７８】
１３８はバッファレジスタであって，演算器３の指示によりレジスタ空間３のデータを受け取り，保持するものである。
１３９はバッファレジスタであって，バッファレジスタ１３８のデータを複写して保持し，演算器４の指示によりレジスタ空間４に入力するものである。
【００７９】
１４０はバッファレジスタであって，演算器４の指示によりレジスタ空間４のデータを受け取り，保持するものである。
１４１はバッファレジスタであって，バッファレジスタ１４０のデータを複写して保持し，演算器５の指示によりレジスタ空間５に入力するものである。
【００８０】
１４２はバッファレジスタであって，演算器５の指示によりレジスタ空間５のデータを受け取り，保持するものである。
１４３はバッファレジスタであって，バッファレジスタ１４２のデータを複写して保持し，演算器６の指示によりレジスタ空間６に入力するものである。
【００８１】
１４４はバッファレジスタであって，演算器６の指示によりレジスタ空間６のデータを受け取り，保持するものである。バッファレジスタ１４４のデータは後段のバッファレジスタに複写される。
【００８２】
１４６は長形式命令語であって，その基本命令１はバッファレジスタ  （ａ）１３４にレジスタ空間１の内容を保持させるストア命令（ｓｔｏｒｅ  Ｒｅｇ→ａ）を含むものである。
【００８３】
１４７は長形式命令語であって，その基本命令２はバッファレジスタ  （ｂ）１３５の内容をレジスタ空間２にロードする命令（Ｌｏａｄ  ｂ→Ｒｅｇ）を含むものである。
【００８４】
レジスタ空間の間でデータ転送を行う場合には，まずデータを送信するレジスタ空間に対応する基本命令に，次のような操作を行う。レジスタ空間１からレジスタ空間２に転送する場合を例として説明する。
【００８５】
まず，長形式命令語１４６の基本命令１にバッファレジスタａ（バッファレジスタ１３４）にレジスタ空間１の内容をストアする命令（ｓｔｏｒｅ  Ｒｅｇ→ａ）をセットし（基本命令１へのセットは転送プログラムの記述に従ってコンパイラによりなされる），バッファレジスタ（ａ）  にレジスタ空間１の内容を保持させる。次にデータを受け取るレジスタ空間２に対応する基本命令２にバッファレジスタｂの内容をレジスタ空間２にロードする命令（ｌｏａｄ  Ｒｅｇ→ｂ）をセットし（基本命令２へのセットは，転送プログラムに従ってコンパイラによりなされる），バッファレジスタｂの内容をレジスタ空間２にロードする。
【００８６】
図５は本発明の実施例２である。
図５において，
１５０はフェッチした命令語（Ｉ）であり，基本命令となるものである。
【００８７】
１５１は命令拡張制御レジスタ設定の基本命令語であって，命令拡張制御レジスタ１５２に命令語における基本命令語の繰り返しパターンを表すマスクパターンを設定するものである。
【００８８】
１５２は命令拡張制御レジスタであって，基本命令Ｉを繰り返す長形式命令語において，基本命令Ｉのある位置を表すビットと基本命令Ｉでない命令であることを識別するビットにより構成されるマスクパターンを持つものである。
【００８９】
１５３は命令語生成部であって，フェッチした基本命令語（Ｉ）１５０と命令拡張制御レジスタ１５２のマスクパターンにより命令語１５４を生成するものである。
【００９０】
１５４は実行される長形式の命令語である。
本実施例２では，命令語の最大サイズをＭ（基本命令がＭ個）とした時，基本命令語の位置（１，２，・・・，Ｍ）に１ビットずつ対応させたＭビットの命令拡張制御レジスタ設定の基本命令語１５１を設ける。そして，命令語に繰り返される基本命令語Ｉ（１５０）をフェッチした場合には，フェッチした命令Ｉを基本命令とするか，あるいはＮＯＰもしくはなにも命令をセットしないかを表すビットパターンを命令拡張制御レジスタにセットしておく。受け取った基本命令語が命令拡張制御レジスタ１５２のマスクパターンに従うものであるかないかは，例えば，フェッチした命令語が一命令語のみの場合には，マスクパターンに従って繰り返される基本命令であると判定する。そして，その命令Ｉをフェッチすると，命令拡張制御レジスタ設定の基本命令語１５１を参照し，命令拡張制御レジスタ１５２のビット位置Ｋの値が０であれば位置Ｋに対応する基本命令語をＮＯＰとする。パターンの途中から最後まで値０が続く場合には基本命令をなにもセットしなくて良い（図６参照）。また位置Ｋの値が１であれば基本命令をＩと見なすことにより，長形式の命令語１５４を実行する。
【００９１】
図６は本発明の実施例２の命令語生成方法の説明図である。
図６において，
１６０は命令語生成プログラムである。
【００９２】
第１行「ｓｅｔｌｅｎ  ００１１１１１１００」は命令拡張制御レジスタにマスクパターン「１１１１１１００」を設定する基本命令語である。
第２行は基本命令語が「ａｄｄ  ＆  ｓｕｂ」の基本命令語「ａｄｄ」と基本命令語「ｓｕｂ」の２個の基本命令語により構成される命令語１７１を生成する記述である。
【００９３】
第３行「ｌｏａｄ  ＆  ｓｔｏｒｅ」は基本命令語「ｌｏａｄ」と基本命令語「ｓｔｏｒｅ」の２個の基本命令語により構成される命令語１７２を生成する記述である。
【００９４】
第４行の「ｌｏａｄ」は基本命令語が「ｌｏａｄ」のみであり，それが６個繰り返される命令語１７３を生成する記述である。
第４行の「ｌｏａｄ」は基本命令語が「ｌｏａｄ」のみであり，それが６個繰り返される命令語１７３を生成する記述である。
【００９５】
第５行の「ａｄｄ」は基本命令語が「ａｄｄ」のみであり，それが６個繰り返される命令語１７４を生成する記述である。
第６行の「ｍｕｌｔ」は基本命令語が「ｍｕｌｔ」のみであり，それが６個繰り返される命令語１７５を生成する記述である。
【００９６】
第７行の「ｓｔｏｒｅ」は基本命令語が「ｓｔｏｒｅ」のみであり，それが６個繰り返される命令語１７６を生成する記述である。
第８行「ｂｒａｎｃｈ  ＆  ｎｏｐ」は基本命令語「ｂｒａｎｃｈ」と基本命令語が「ｎｏｐ」の２個の基本命令語により構成される命令語を作成するものである。
【００９７】
図５を参照し，図６の本発明の実施例２の命令語生成方法について説明する。
命令拡張制御レジスタ設定の基本命令語１５１（図６の命令語生成プログラム１６０の第１行の命令）を入力し，命令拡張制御レジスタにその命令で与えられているマスクパターン（１１１１１１００）を設定する（図５のマスクパターン（１１０１１１１１）とはマスクパターンが異なる）。
【００９８】
第２行目の命令語のプログラムの記述「ａｄｄ  ＆  ｓｕｂ」は２基本命令の記述なので，マスクパターンに従う命令語生成はせずに，命令語１７１を生成する。
【００９９】
第３行目も同様にプログラムの記述「ｌｏａｄ  ＆  ｓｔｏｒｅ」が２基本命令の記述なので，マスクパターンにはよらずに命令語１７２を生成する。
第４行「ｌｏａｄ」の記述に従ってフェッチした命令語が１基本命令のみであるので，命令語生成部１５３は命令拡張制御レジスタ１５２を参照し，マスクパターンに従って基本命令語「ｌｏａｄ」を６個繰り返す命令語１７３を生成する。
【０１００】
第５行の記述に従って，同様にフェッチした命令語も１基本命令「ａｄｄ」のみであるので，命令拡張制御レジスタ１５２のマスクパターンに従って，命令語生成部１５３が命令語１７４を生成する。
【０１０１】
第６行の記述に従ってフェッチした命令語も基本命令「ｍｕｌｔ」のみであるので，命令拡張制御レジスタ１５２のマスクパターンが参照されて命令語生成部１５３により命令語１７５が生成される。
【０１０２】
第７行の記述に従って，フェッチした命令語「ｓｔｏｒｅ」も１基本命令だけなので命令拡張制御レジスタ１５２のマスクパターンが参照されて命令語１７６が生成される。
【０１０３】
第８行は「ｂｒａｎｃｈ」命令のみで良いのであるが，基本命令語が「ｂｒａｎｃｈ」命令１語であると，命令拡張制御レジスタが参照され「ｂｒａｎｃｈ」命令を６個繰り返す命令語が生成されるので，それを防ぐために基本命令語に「ｎｏｐ」を付与して２個の基本命令の記述とし，命令語１７７を生成する。
【０１０４】
なお，本発明では，図６の各命令語のように命令語の基本命令から後に基本命令が続かない場合にはなにも基本命令を加える必要はい。
本実施例の命令語生成プログラム１６０を図８の従来の命令語生成プログラム２１０と比較すると，従来の命令語生成プログラム２１０では合計で２９個の基本命令語の記述を必要とするのに対して，本発明では合計で１１個の基本命令の記述て良い。また，従来の命令語では，多数のＮＯＰ命令を付け加えて固定長の命令語とする必要があるのに対して，本発明では，図６のようにその必要がないので，メモリの使用効率が大幅に向上する。またキャッシュメモリ等におけるヒット率が高くなる。
【０１０５】
【発明の効果】
本発明によれば，固定長の長形式命令語であっても，可変長命令語として扱うことができる。そして，同じタイミングで並列処理できる基本命令が少ない場合には，次の命令語で同じタイミングで処理できる基本命令を並列処理できる。そのため，並列処理の実行速度が速くなるとともに，命令語を固定長にするために付加するＮＯＰ命令等が少なくなりメモリの利用効率を大幅に向上させることができる。また，キャッシュメモリにおけるヒット率も高くなる。
【図面の簡単な説明】
【図１】本発明の基本構成を示す図である。
【図２】本発明の動作例を示す図である。
【図３】本発明の実施例構成を示す図である。
【図４】本発明の実施例１を示す図である。
【図５】本発明の実施例２を示す図である。
【図６】本発明の実施例２の命令語生成方法を示す図である。
【図７】従来の長形式命令語の実行方法を示す図である。
【図８】従来の長形式命令語の生成方法を示す図である。
【符号の説明】
１：並列処理プロセッサ
２：命令語
２’：命令バッファ
３：命令抑止部
４：デコーダ
５：演算部
６：レジスタ部
１０，１１：命令継続指定ビット
【図１】
0003569338.tif 000002
【図２】
0003569338.tif 000003
【図３】
0003569338.tif 000004
【図４】
0003569338.tif 000005
【図５】
0003569338.tif 000006
【図６】
0003569338.tif 000007
【図７】
0003569338.tif 000008
【図８】
0003569338.tif 000009