JPH07182169A - 並列処理型コンピュータ - Google Patents

並列処理型コンピュータ

Info

Publication number
JPH07182169A
JPH07182169A JP32780693A JP32780693A JPH07182169A JP H07182169 A JPH07182169 A JP H07182169A JP 32780693 A JP32780693 A JP 32780693A JP 32780693 A JP32780693 A JP 32780693A JP H07182169 A JPH07182169 A JP H07182169A
Authority
JP
Japan
Prior art keywords
instruction
code
parallel processing
compressed
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP32780693A
Other languages
English (en)
Inventor
Yayoi Abe
弥生 安部
Yoichiro Takeuchi
陽一郎 竹内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP32780693A priority Critical patent/JPH07182169A/ja
Publication of JPH07182169A publication Critical patent/JPH07182169A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】並列処理型コンピュータにおいてメモリにロー
ドされるプログラムサイズを小さくしてメモリのフリー
エリアを増やす。 【構成】複数フィールドからなる並列処理命令の命令記
述部から無実行命令NOP部分を適宜取り除くことによ
り、メモリ10にロードされるプログラムの命令コード
部分のサイズを圧縮しておく。このプログラムの並列処
理命令を実行する際に、圧縮された命令コードが1命令
のみであるかどうかを命令記述情報部14の内容から判
断する。1命令のみであれば、命令復元部20によりそ
の命令以外の並列処理命令フィールドをNOPで埋めて
実行すべき並列処理命令を復元する。復元された命令は
命令キャッシュ30に一旦格納され、キャッシュ30内
の復元された並列処理命令が実行ユニット60で順次実
行される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、ベリーロングインス
トラクションワード(以下VLIWと略記する)型など
の並列処理型コンピュータにおいて、メインメモリにロ
ードされるプログラムの命令コード部分のサイズを圧縮
しておき、メインメモリにロードされたプログラムの各
命令が実行される時点で圧縮された命令コードを復元す
るシステムに関する。
【0002】
【従来の技術】たとえばVLIW型並列処理コンピュー
タにおいて実行されるシーケンシャルな命令コードに
は、命令記述以外の部分に無実行命令(以下NOPと略
記する)が埋め込まれる。
【0003】
【発明が解決しようとする課題】並列処理プログラムに
おけるシーケンシャルなコードでは、命令実行を行なわ
ないNOPが多くなるために、プログラムの機能の割に
命令記述部のサイズが大きくなる。
【0004】大規模なプログラムの場合、メインメモリ
にロードされたプログラム中のNOP部分がメモリを無
駄食いするから、プログラム実行時に多くのメモリが必
要となる。すると、プログラム実行中に使用できる残り
のメモリ容量が少なくなり(つまりメモリが圧迫さ
れ)、必要な処理ができなくなるという問題が起こり得
る。
【0005】たとえばメインメモリ4メガバイトを装備
したコンピュータにおいて、オペレーティングシステム
(以下OSと略記する)が起動したあとのメモリのフリ
ーエリアが2.5メガバイトであったとする。このコン
ピュータのOS上でNOPを多く含むプログラムを起動
したところメモリのフリーエリアが1.8メガバイトし
か残らなかったとしたら、このプログラムで2メガバイ
トのフリーエリアを必要とする処理は行なうことができ
ない(0.2メガバイトのメモリ不足)。
【0006】とくにプログラム開発中において、デバッ
グ等のためにコードの大部分がシーケンシャル実行用に
なっていてプログラム中に存在するNOPの割合が多い
場合に、上記メモリ不足が起きやすい。このメモリ不足
が起きた場合、コンピュータ本体のメモリを増設しない
限り(そのコンピュータ自体およびOSがそのメモリ増
設に対応していることが前提)、デバッグができず、プ
ログラム開発が中断してしまう。
【0007】またデバッグ終了後のプログラムに対して
は、その起動後にユーザが使えるメモリのフリーエリア
サイズは大きいほど望ましい。この発明の目的は、メモ
リにロードされるプログラムサイズを小さくしてメモリ
のフリーエリアを増やすことのできる並列処理型コンピ
ュータを提供することである。
【0008】
【課題を解決するための手段】複数フィールドからなる
並列処理命令の命令記述部から無実行命令NOP部分を
適宜取り除くことにより、メモリにロードされるプログ
ラムの命令コード部分のサイズを圧縮しておく。このプ
ログラムの並列処理命令を実行する際に、圧縮された命
令コードが1命令のみであるかどうかを命令記述情報部
の内容から判断する。1命令のみであれば、命令復元部
により、その命令以外の並列処理命令フィールドをNO
Pで埋めて実行すべき並列処理命令を復元する。復元さ
れた命令は命令キャッシュまたは命令バッファに一旦格
納され、キャッシュまたはバッファ内の復元された並列
処理命令が実行ユニットで順次実行される。
【0009】
【作用】メモリにロードされるプログラムは圧縮されて
いるから、圧縮された分だけメモリのフリーエリアは広
くなっている。圧縮された命令はそのままでは実行でき
ないので、実行前に除去されたNOPを再挿入する復元
が行なわれる。実行の度に(実行直前に)圧縮命令を逐
次復元するようにしたから、並列処理命令の実行に差し
障りはない一方で、メモリのフリーエリアをより広くで
きる。
【0010】
【実施例】図1は、この発明の一実施例に係るVLIW
型並列処理コンピュータ100の構成を示すブロック図
である。このコンピュータ100は、メインメモリ1
0、命令キャッシュ30、命令レジスタ群40、命令デ
コーダ50、命令実行ユニット60、レジスタファイル
(汎用レジスタ群)70、およびデータキャッシュ80
を備えている。
【0011】命令実行ユニット60は、たとえば、最大
4命令を並列処理するために4つの命令実行ユニット
(フィールド#1〜#4)を備えている。実行ユニット
60の各フィールド#1〜#4では、レジスタファイル
70を利用しながら与えられた命令が別々に実行され、
その実行結果がデータキャッシュ80あるいはメモリ1
0のデータ格納部16に書き込まれるようになってい
る。
【0012】コンピュータ100で並列処理されるプロ
グラムは、そのプログラムを使用するときに、外部記憶
装置(ハードディスクなど)90からインターフェイス
(I/F)92を介してメインメモリ10に読み込まれ
る。
【0013】この際、外部記憶装置90に格納されたプ
ログラム中の命令群が予めコンパイラ等により圧縮され
ているときは、このプログラムはそのままメモリ10に
読み込まれる。しかし、このプログラム中の命令群がま
だ圧縮されていないときは、このプログラムをメモリ1
0に読み込む過程において、たとえばOSに組み込まれ
バックグラウンドで走っている圧縮処理プログラムある
いはコンピュータ100自体に組み込まれた圧縮処理ロ
ジック回路により、プログラム中の命令群を圧縮しなが
ら、メモリ10にロードする。(圧縮の方法は図5を参
照して後述する。)メインメモリ10は、命令格納部1
2、命令記述情報部14、およびデータ格納部16を含
んでいる。上記プログラムの圧縮された命令はメモリ1
0の命令格納部12に格納され、命令の圧縮状態に関す
る情報は命令記述情報部14に格納され、このプログラ
ムで使用されるデータはデータ格納部16に格納され
る。データ格納部16に格納されたデータD10は、適
宜、データキャッシュ80を介して、あるいは直接に、
命令実行ユニット60に供給される。
【0014】メモリ10にロードされた命令は圧縮され
ているので、命令格納部12および命令記述情報部14
で消費されるメモリの量は、圧縮しない場合よりも少な
くなっている。すなわち、命令圧縮によりメモリが節約
されている。(もとのプログラムがNOPを多く含めば
含むほど、メモリ節約量は大きくなる。)メモリ10に
ロードされた圧縮されている命令は、その実行前に元の
形に復元しなければならない(そうしないと正常な並列
処理が行なわれず、エラーがでる)。この命令復元を行
なうために、コンピュータ100は、命令復元部20お
よび命令記述復元割込発生部22を備えている。
【0015】すなわち、命令記述情報部14の内容に対
応して圧縮された命令の実行時に、割込発生部22が、
割り込みD22を発生させる。すると命令復元部20
は、命令記述情報部14からの情報D14に基づき命令
格納部12からの圧縮された命令D12を元の形に復元
し、復元された命令D20を命令キャッシュ30(ある
いは命令レジスタ群40)に格納する。
【0016】命令キャッシュ30に格納された復元命令
D20は、命令レジスタ群(命令バッファ)40の命令
パイプに投入され、ここから順に命令D40が命令デコ
ーダ50に送り出される。
【0017】命令D40はデコーダ30によりデコード
される。デコードされた命令(適宜NOPを含む4つの
並列処理命令)D50は実行ユニット60のフィールド
#1〜#4に同時に投入され、並列処理される。
【0018】実行ユニット60での処理結果D60はデ
ータキャッシュ80あるいはデータ格納部16に書き込
まれる。こうして、命令キャッシュ30あるいは命令レ
ジスタ群40に詰め込まれた(圧縮復元後の)命令群
が、実行ユニット60のフィールド#1〜#4において
次々と並列実行される。
【0019】図5は、図1の並列処理コンピュータが扱
う命令の圧縮処理を説明するフローチャートである。こ
の命令圧縮は、実行プログラムを生成する際のコンパイ
ラによる処理(リンクを行なう前後の処理)でもよい
し、コンピュータ100がプログラムをメモリ10にロ
ードする時に行なう処理でもよい。また図6は、4つの
命令フィールド#1〜#4からなるVLIW命令1〜5
がどのように圧縮されるかの一例を示している。
【0020】ここでは、デバッグを行なうため高級言語
のソースプログラム(C言語で記載されたソースコード
等)をシーケンシャルな命令コードになるようにコンパ
イルしリンクした場合を想定している。
【0021】まず、並列実行型VLIWマシンのシーケ
ンシャル実行用命令コード(ロードモジュール)が入力
され(ステップST40)、入力された命令コード中に
同時実行する命令がいくつあるかがチェックされる(ス
テップST42)。
【0022】例えば図6の命令1で示すように同時実行
する命令が1つ(ADD)だけの場合(ステップST4
4、イエス)、命令記述情報部14には「1命令のみ実
行」を示すとともにこの1命令の位置をビット「1」で
示す情報「1000」が書き込まれる(ステップST4
6)。
【0023】同時実行する命令が1つの場合、命令記述
情報部14の4ビット情報の各ビットの和(Σ#1〜#
4)は1であり、これが「1命令のみ実行」を示す。ま
た命令記述情報部14の4ビット情報「1000」中の
「1」の位置が同時実行する命令(ADD)のフィール
ド#1を示し、「0」の位置が命令復元時に無実行命令
NOPが挿入されるフィールド#2〜#4を示す。
【0024】命令記述情報部14に「1命令のみ実行」
を示す情報「1000」が書き込まれると、入力された
命令コードからNOPを取り除いた命令(ADD)だけ
が命令格納部12に格納される(ステップST48)。
こうして命令1の圧縮(NOPの除去)が終了する。
【0025】命令1は入力された命令コードの最終命令
ではないので(ステップST52、ノー)次の命令2が
取り込まれ(ステップST54)、その命令の同時実行
命令数がチェックされる(ステップST42)。この場
合も同時実行命令は1つだけ(SUB)である(ステッ
プST44、イエス)。すると図6に示すように、命令
記述情報部14には「1命令のみ実行」を示すとともに
この1命令の位置をビット「1」で示す情報「001
0」が書き込まれる(ステップST46)。
【0026】命令記述情報部14に「1命令のみ実行」
を示す情報「0010」が書き込まれると、入力された
命令コードからNOPを取り除いた命令(SUB)だけ
が命令格納部12に格納される(ステップST48)。
こうして命令2の圧縮(NOPの除去)が終了する。
【0027】同様に、図6の命令3に対する命令圧縮処
理が行なわれる(情報部14には「1000」が書き込
まれ、格納部12にはSUBが格納される)。一方、図
6の命令4で示すように同時実行する命令が複数(AD
DとMUL)の場合(ステップST44、ノー)、命令
記述情報部14には、複数の「並列実行命令あり(つま
り同時実行命令が2以上)」を示すとともにこれら複数
命令の位置をビット「1」で示す情報「0110」が書
き込まれる(ステップST56)。
【0028】命令記述情報部14に[複数命令同時実
行」を示す情報「0110」が書き込まれると(和Σ#
1〜#4は2以上)、入力された命令4そのもの(NO
P、ADD、MUL、NOP)がメモリ10(命令格納
部12)の所定アドレス(0X1000〜0X100
3)に格納される(ステップST58)。この場合は命
令4の圧縮(NOPの除去)は行なわれず、命令記述情
報部14には命令4を格納した場所の先頭アドレス(0
X1000)が書き込まれる(ステップST60)。
【0029】あるいは、命令記述情報部14に[複数命
令同時実行」を示す情報「0110」を書き込んだあと
(和Σ#1〜#4は2以上)、入力された命令4からN
OPを取り除いたもの(ADD、MUL)をメモリ10
の所定アドレス(0X1000〜0X1001)に格納
するようにしてもよい(ステップST58)。この場合
は命令4の圧縮(NOPの除去)が行なわれており、命
令記述情報部14には命令4の実行命令本体(ADD、
MUL)を格納した場所の先頭アドレス(0X100
0)が書き込まれる(ステップST60)。
【0030】なお、ステップST44でノーとなる場合
(同時実行命令が1命令のみでない場合)としては、同
時実行命令が複数ある場合に限定はされない。たとえば
OSがスーパバイザモードで使用する特殊な長い命令
(通常の命令が32ビット固定長命令である場合に特種
命令が32〜128ビットの可変長命令であるときな
ど)の場合、「1命令のみの実行」としては扱かわれず
(ステップST44、ノー)、この特殊命令の格納先が
命令記述情報部14に格納され(ステップST56)、
そのあとこの特殊命令がメモリ10の所定箇所に格納さ
れる(ステップST60)。
【0031】命令4は入力された命令コードの最終命令
ではないので(ステップST52、ノー)次の命令5が
取り込まれ(ステップST54)、その命令の同時実行
命令数がチェックされる(ステップST42)。この場
合は同時実行命令は1つだけ(ADD)であり(ステッ
プST44、イエス)、命令記述情報部14には「1命
令のみ実行」を示すとともにこの1命令の位置をビット
「1」で示す情報「1000」が書き込まれる(ステッ
プST46)。命令記述情報部14に情報「1000」
が書き込まれると、入力された命令コードからNOPを
取り除いた命令(ADD)だけが命令格納部12に格納
される(ステップST48)。こうして命令5の圧縮
(NOPの除去)が終了する。
【0032】命令5が最終命令であれば(ステップST
52、イエス)命令の圧縮処理は終了する。図5のステ
ップST40〜ST60の処理が済むと、図6の左側に
示した非圧縮並列処理命令1〜5(32ビット命令を4
つ並列に処理する128ビットVLIW命令)は図6の
右側に示すように圧縮され、圧縮された命令とその命令
記述情報がメモリ10に格納される。
【0033】図5の処理の結果として命令格納部12に
格納される命令コードの合計サイズは、削除したNOP
の分、元の並列処理命令コードの合計サイズよりも小さ
くなる。命令記述情報部14のビットサイズは命令格納
部12に格納されなかったNOPよりも小さいので、命
令記述情報部14の存在によるメモリ10の消費量より
も、NOPを格納しなかったことによるメモリ10の節
約量の方が大きい。
【0034】また、命令記述情報部14の4ビットを命
令格納部12に格納される32ビット命令の一部として
取り込めば、命令記述情報部14によるメモリの消費は
なくなり(この場合、各命令は28ビットで記述される
ことになる)、NOP削除によるメモリ節約分がそのま
まフリーエリアとしてメインメモリ10に残る。
【0035】図2は、図1の並列処理コンピュータ10
0において実行される処理を説明するフローチャートで
ある。また図3は、図2におけるNOP復元処理の一例
を示すフローチャートである。この処理は、命令復元部
20内のハードウエアロジックまたはコンピュータ10
0のマイクロコードで実行できる。
【0036】まず、圧縮された命令1(図6参照)が命
令復元部20に取り込まれ(ステップST10)、引き
続き取り込んだ命令1の命令記述情報部14の内容がチ
ェックされる(ステップST12)。
【0037】4ビット情報部14の各ビット中の「1」
の和Σ#1〜#4が1ならば、圧縮された命令1は同時
実行命令数が1つだけであると判定され(ステップST
14、イエス)、命令1に対応する命令格納部12の内
容(命令ADD)が読み出される(ステップST1
6)。
【0038】すると、NOP復元処理に入る(ステップ
ST18)。すなわち図3に示すように、まず命令記述
情報部14のビット1の位置に該当するフィールド#1
が検出される(ステップST181)。続いて、図7に
示すように、検出されたビット1の位置に該当するフィ
ールド#1に読み出された命令ADDが配置され、残り
のフィールド#2〜#4にNOPが挿入される(ステッ
プST182)。
【0039】こうして正規の並列処理命令(128ビッ
トVLIW命令)に復元された命令1は、命令キャッシ
ュ30(または命令レジスタ群40)にロードされる
(ステップST20)。
【0040】命令1が最終命令でないときは(ステップ
ST22、ノー)、次の命令2が命令復元部20に取り
込まれ(ステップST24)、取り込んだ命令2の命令
記述情報部14の内容がチェックされる(ステップST
12)。
【0041】4ビット情報部14の各ビット中の「1」
の和Σ#1〜#4が1なので、圧縮された命令2は同時
実行命令数が1つだけであると判定され(ステップST
14、イエス)、命令2に対応する命令格納部12の内
容(命令SUB)が読み出される(ステップST1
6)。
【0042】すると、命令2のNOPが復元され(ステ
ップST18)、復元された並列処理命令2は、命令キ
ャッシュ30(または命令レジスタ群40)にロードさ
れる(ステップST20)。
【0043】同様にして、命令3のNOPが復元され
(ステップST18)、復元された並列処理命令3は、
命令キャッシュ30(または命令レジスタ群40)にロ
ードされる(ステップST20)。
【0044】次に、非圧縮命令4(図6参照)が命令復
元部20に取り込まれ(ステップST10)、取り込ん
だ命令4の命令記述情報部14の内容がチェックされる
(ステップST12)。
【0045】ここでは4ビット情報部14の各ビット中
の「1」の和Σ#1〜#4が2なので、命令4は同時実
行命令数が2つあると判定される(ステップST14、
ノー)。すると図1の命令記述復元割込発生部22によ
り割り込みが発生する(ステップST26)。
【0046】この割り込みが生じると、命令復元部20
は、命令格納部12の内容(0x1000)から、命令
4の格納先アドレス(0x1000から連続する4アド
レス分)を算出する(ステップST28)。すると図7
に示す命令4の格納先アドレス(0x1000〜0x1
003)から命令4の内容(NOP、ADD、MUL、
NOP)が読み出される(ステップST30)。
【0047】こうして読み出された並列処理命令4は、
命令キャッシュ30(または命令レジスタ群40)にロ
ードされる(ステップST32)。なお、命令4もNO
P除去の圧縮を受けている場合は(つまり4ビット情報
部14の各ビット中の「1」の和Σ#1〜#4が3以下
の場合は)、命令4中の実行命令(ADD、MUL)を
その格納先アドレス(図6下中央の0x1000〜0x
1001)から読み出してから(ステップST30)、
読み出された実行命令(ADD、MUL)にNOPを付
加する復元処理(図3のステップST181〜ST18
2)を行なってもよい。
【0048】この場合、情報部14中で最初にビット
「1」が立っているフィールド(#2)に最初の格納先
アドレス(0x1000)の命令(ADD)が配置さ
れ、情報部14中で2番目にビット「1」が立っている
フィールド(#3)に次の格納先アドレス(0x100
1)の命令(MUL)が配置され、情報部14中ビット
「0」のフィールド(#1、#4)にNOPが配置され
る。
【0049】命令4が最終命令でないときは(ステップ
ST22、ノー)、次の命令5が命令復元部20に取り
込まれ(ステップST24)、取り込んだ命令5の命令
記述情報部14の内容がチェックされる(ステップST
12)。4ビット情報部14の各ビット中の「1」の和
Σ#1〜#4は1なので、圧縮された命令5は同時実行
命令数が1つだけであると判定され(ステップST1
4、イエス)、命令5に対応する命令格納部12の内容
(命令ADD)が読み出される(ステップST16)。
すると、命令5のNOPが復元され(ステップST1
8)、復元された並列処理命令5が、命令キャッシュ3
0(または命令レジスタ群40)にロードされる(ステ
ップST20)。
【0050】命令5が最終命令であるときは(ステップ
ST22、イエス)、命令キャッシュ30(または命令
レジスタ群40)にロードされた命令1〜5が順次図1
の命令デコーダ50でデコードされ、デコードされた命
令1〜5が実行ユニット60のフィールド#1〜#4で
並列に同時処理される(ステップST34)。
【0051】図2の処理の結果、メインメモリ10に読
み込まれた命令1〜5が圧縮された命令(サイズ小)で
あっても、命令キャッシュ30あるいは命令レジスタ群
40に書き込まれた実行直前の命令1〜5は、図10に
示すような非圧縮の復元命令となっている。命令実行ユ
ニット60は、この復元命令1〜5をフィールド#1〜
#4で並列実行する。
【0052】なお、復元された命令1〜5が全て命令キ
ャッシュ30に格納され終わるまで待つのではなく、適
当な数の復元命令がキャッシュ30(又はレジスタ4
0)に溜まったら実行ユニット60で命令実行(ステッ
プST34)を開始するようにしてもよい。この場合は
ステップST22の前に命令実行ステップが挿入され
る。
【0053】また、命令キャッシュ30あるいは命令レ
ジスタ群40に書き込まれた復元命令1〜5はその実行
後は消滅してもエラーは生じない。したがって、復元さ
れた後続命令(命令6以降)を次々と命令キャッシュ3
0あるいは命令レジスタ群40に書き込んで、命令キャ
ッシュ30あるいは命令レジスタ群40内の実行済み旧
命令(命令1〜5)をどんどん消去することができる。
このため命令キャッシュ30あるいは命令レジスタ群4
0が多数の復元命令でオーバーフローしてエラーを出す
ことはない。
【0054】もし、コンピュータ100が4キロバイト
の命令キャッシュ30を備えており、実行ユニット60
のフィールド#1〜#4で実行される各命令が32ビッ
ト(4バイト)固定長であるとすれば、キャッシュ30
は復元後の32ビット命令を最大1000個持つことが
できる。コンピュータ100で処理しようとするプログ
ラムモジュール中の命令数が1000個以内(4ワード
構成のVLIW命令で数えれば250個以内)ならば、
復元後の非圧縮命令は全て命令キャッシュ30に収まっ
てしまう。この場合は上記復元命令のオーバーフローは
生じない。
【0055】必要な復元命令が全て命令キャッシュ30
に収まったあとは、もはや命令復元処理は不要となるか
ら、命令復元のためにコンピュータ100全体の処理速
度が落ちることはない。このことから、コンピュータ1
00で実行されるプログラム中の命令数に対して、命令
キャッシュ30は十分な記憶容量を持っていることが望
ましい。
【0056】なお、コンピュータ100が汎用レジスタ
(または命令レジスタ)を豊富に持っており、これらの
レジスタ中に必要な復元命令の大部分を保持できるな
ら、大容量の命令キャッシュ30は必ずしも必要ではな
い。
【0057】図6の例では命令記述情報部14を命令実
行ユニット60のフィールド数と同数のビット構成と
し、圧縮命令のフィールド位置情報も情報部14に含ま
せている。このため図8に示すような圧縮前の命令1〜
5が圧縮された後これを復元すると、図10に示すよう
に元通りの命令1〜5が得られる。
【0058】ここで、命令1のようにVLIW命令が実
行命令を1つしか含まないときは、この実行命令(AD
D)がフィールド#1〜#4のどこで実行されても、ソ
フトウエア上は、その処理結果は同じになる(ハードウ
エア上では、同一フィールドでの連続命令実行に伴いハ
ザードの問題が起きる可能性があるが、ここではハザー
ドは起きないと仮定する)。この場合、命令記述情報部
14は必ずしも実行命令(ADD)のフィールド位置情
報を含んでいる必要はない。
【0059】そのような場合では、命令記述情報部14
は「VLIW命令が実行命令を1つしか含まない」かど
うかを区別する情報だけを持てばよく、情報部14を1
ビットフラグで構成することができる。
【0060】図8は、命令記述情報部14を1ビットフ
ラグで構成した場合に、VLIW命令がどのように圧縮
されるかを例示している。すなわち、命令1では実行命
令が1つだけであるから(図5のステップST44、イ
エス)、情報部14のフラグが「0」とされ(ステップ
ST46)、命令格納部12に実行命令(ADD)が格
納される(ステップST48)。
【0061】一方、命令4では実行命令が1つだけでは
ないから(ステップST44、ノー)、情報部14のフ
ラグが「1」とされ(ステップST56)、命令格納部
12に命令4の格納先先頭アドレス(0x1000)が
格納される(ステップST58)。このあとこの先頭ア
ドレスから連続する4アドレス(0x1000〜0x1
003)に命令4がそのまま格納される(ステップST
60)。
【0062】図4は、図8の例におけるNOP復元処理
の例を示している。すなわち、命令1の情報部14のフ
ラグが「0」である場合(図2のステップST16)、
格納部12から実行命令(ADD)を取り出してこれを
所定フィールド、たとえばフィールド#1におく。しか
る後に残りフィールド#2〜#4をNOPで埋めて(ス
テップST18)、図9に示すように命令1を復元す
る。復元された命令1は、命令キャッシュ30または命
令レジスタ40に転送される(ステップST20)。
【0063】一方、命令4の情報部14のフラグが
「1」である場合、命令復元割込を発生させる(図2の
ステップST26)。続いてメモリ10のアドレス0x
1000〜0x1003を計算し(ステップST2
8)、そのアドレスから実行命令(NOP、ADD、M
UL、NOP)を取り出して(ステップST30)、こ
れをフィールド#1〜#4に配置する。こうして得られ
た図9に示すような命令4は、命令キャッシュ30また
は命令レジスタ40に転送される(ステップST3
2)。
【0064】図8のように命令記述情報部14が1ビッ
ト構成の例では、VLIW命令中の実行命令が1つだけ
の場合、実行命令(命令1のADD、命令2のSUBな
ど)のフィールド位置を特定できない。したがって、こ
の場合の命令復元処理においては、命令復元に一定の規
則を設けておく必要が生じる。
【0065】図11は、第1の命令復元規則にしたがっ
て復元されたVLIW命令群の例である。ここでは、フ
ィールド#1に1クロック処理命令(ADD、SUB)
を集め、フィールド#2にNOPまたは2クロック処理
命令(MUL)を集め、フィールド#3〜#4にNOP
または図示しない3クロック以上の処理命令を集めてい
る。この例ではフィールド#1での連続命令処理におい
てハザードが生じないことを仮定している。
【0066】図12は、第2の命令復元規則にしたがっ
て復元されたVLIW命令群の例である。ここでは、フ
ィールド#1にNOPまたは第1の命令(ADD)を集
め、フィールド#2にNOPまたは第2の命令(SU
B)を集め、フィールド#3にNOPまたは第3の命令
(MUL)を集め、フィールド#4にNOPまたは図示
しない第4の命令(割り算命令DIVなど)を集めてい
る。
【0067】図13は、第3の命令復元規則にしたがっ
て復元されたVLIW命令群の例である。ここでは、4
命令(命令1〜4)処理を1サイクルとし、各フィール
ドは1サイクル中で1回はNOP以外の命令を実行する
ようにしている。
【0068】なお前述した実施例においては、4ビット
(または1ビット)命令記述部14は32ビット命令格
納部12の他に用意されているが、この命令記述部14
は32ビット命令格納部12の一部に組み込んでもよ
い。たとえば32ビット中4ビット(または1ビット)
を命令記述部14のために用い、残り(28ビット〜3
1ビット)をADD、SUBなどの命令記述のために用
いるようにしてもよい。
【0069】上述した実施例によれば、VLIW型コン
ピュータでシーケンシャルなコードを実行する場合に命
令記述部分を圧縮できるので、大規模なプログラムのシ
ーケンシャルな実行を少ない実メモリで実行できる。
【0070】この際、並列度の高い命令(デバッグ時の
シーケンシャルコードではNOPが多くなる)ほどサイ
ズ圧縮効果は高い。なお、この発明は、VLIW型に限
らず、命令コード中に適宜NOPが挿入されたプログラ
ムを実行時にメモリに読み込む他方式の並列処理型コン
ピュータ(スーパースカラ型コンピュータ等)にも応用
可能である。
【0071】
【発明の効果】この発明によれば、メモリにロードされ
る並列処理プログラムの命令コードは圧縮されているか
ら、圧縮された分だけメモリのフリーエリアは広くなっ
ている。圧縮された命令は、その実行の度に本来の命令
に逐次復元される。このため、並列処理命令の実行に差
し障りはない一方で、広いフリーエリアがメモリに確保
できる。換言すれば、並列処理コンピュータおける大規
模プログラムのシーケンシャルな実行を、より少ないメ
モリで行なうことができる。
【図面の簡単な説明】
【図1】図1は、この発明の一実施例に係るVLIW型
並列処理コンピュータの構成を示すブロック図。
【図2】図2は、図1の並列処理コンピュータにおいて
実行される処理を説明するフローチャート。
【図3】図3は、図2におけるNOP復元処理の一例を
説明するフローチャート。
【図4】図4は、図2におけるNOP復元処理の他例を
説明するフローチャート。
【図5】図5は、図1の並列処理コンピュータが扱う命
令の圧縮処理を説明するフローチャート。
【図6】図6は、4つの命令フィールドからなるVLI
W命令がどのように圧縮されるかの一例を説明する図。
【図7】図7は、図6の例において圧縮されたVLIW
命令がどのように復元されるかを説明する図。
【図8】図8は、4つの命令フィールドからなるVLI
W命令がどのように圧縮されるかの他例を説明する図。
【図9】図9は、図8の例において圧縮されたVLIW
命令がどのように復元されるかを説明する図。
【図10】図10は、4つの命令フィールドからなるV
LIW命令がオリジナル通りに復元された場合を例示す
る図。
【図11】図11は、4つの命令フィールドからなるV
LIW命令が第1の所定規則(フィールド1に1クロッ
ク処理命令を集める)に従い復元された場合を例示する
図。
【図12】図12は、4つの命令フィールドからなるV
LIW命令が第2の所定規則(同じ演算命令は同じフィ
ールドに集める)に従い復元された場合を例示する図。
【図13】図13は、4つの命令フィールドからなるV
LIW命令がモディファイされて復元された場合を例示
する図。
【符号の説明】
10…メインメモリ、12…命令格納部、14…命令記
述情報部、16…データ格納部、20…命令復元部、2
2…命令記述復元割込発生部、30…命令キャッシュ、
40…命令レジスタ群(命令バッファ)、50…命令デ
コーダ、60…命令実行ユニット(4並列処理)、70
…レジスタファイル(汎用レジスタ群)、80…データ
キャッシュ、90…外部記憶装置、92…インターフェ
イス、100…VLIW型並列処理コンピュータ。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 無実行命令以外の命令を含む情報を格納
    する命令格納部および無実行命令を付加するかどうかを
    示す情報を格納する命令記述情報部を記憶するメモリ
    と;前記命令記述情報部の内容が無実行命令の付加を示
    す場合に、前記命令格納部の命令に無実行命令を付加し
    て複数命令からなる命令コードを生成する命令生成手段
    と;複数の命令実行フィールドを持ち、これらの命令実
    行フィールドにおいて、前記命令生成手段で生成された
    命令コードを並列に実行する命令実行手段とを具備した
    ことを特徴とする並列処理型コンピュータ。
  2. 【請求項2】 前記メモリは、無実行命令以外の命令を
    複数含む命令コードを格納する複数命令領域を持ち、 前記命令生成手段は、前記命令記述情報部の内容が無実
    行命令の付加以外を示す場合に前記複数命令領域に格納
    された命令コードを取り出す命令取出手段を含み、 前記命令実行手段が、前記命令生成手段により生成され
    た命令コードとともに前記命令取出手段により取り出さ
    れた命令コードを実行するように構成されることを特徴
    とする請求項1に記載の並列処理型コンピュータ。
  3. 【請求項3】 複数命令からなる並列処理命令コードが
    無実行命令以外の命令を1つだけ含む場合に、この並列
    処理命令コードから無実行命令を取り除くことによりこ
    の並列処理命令コードのコードサイズを圧縮し、 コードサイズが圧縮されたことを示す命令記述情報をこ
    の圧縮された並列処理命令コードとともに保存し、 前記命令記述情報が、保存された前記並列処理命令コー
    ドはコードサイズが圧縮されていることを示す場合に、
    この圧縮された命令コードに無実行命令を付加すること
    により並列処理命令コードを復元しながら実行するよう
    に構成したことを特徴とする並列処理型コンピュータシ
    ステム。
  4. 【請求項4】 命令記述情報部および命令格納部を具備
    し、 並列処理命令コードから無実行命令部分を適宜取り除く
    ことによりこの並列処理命令コードのコードサイズを圧
    縮し、 このコードサイズが圧縮されたことに関する情報を前記
    命令記述情報部に記述し、 このコードサイズが圧縮された命令コードを前記命令格
    納部に記述することを特徴とする並列処理型コンピュー
    タシステム。
  5. 【請求項5】 命令記述情報部、命令格納部、命令記述
    復元割込部および命令復元部を具備し、並列処理命令コ
    ードから無実行命令部分を適宜取り除くことによりこの
    並列処理命令コードのコードサイズを圧縮し、 このコードサイズが圧縮されたことに関する情報を前記
    命令記述情報部に記述し、 このコードサイズが圧縮された命令コードを前記命令格
    納部に記述し、 前記命令記述情報部に記述された情報に基づき前記命令
    格納部に記述された圧縮命令コードに無実行命令を挿入
    することで元の並列処理命令コードを復元し、 前記復元された元の並列処理命令コードを逐次実行する
    ことを特徴とする並列処理型コンピュータシステム。
JP32780693A 1993-12-24 1993-12-24 並列処理型コンピュータ Pending JPH07182169A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP32780693A JPH07182169A (ja) 1993-12-24 1993-12-24 並列処理型コンピュータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP32780693A JPH07182169A (ja) 1993-12-24 1993-12-24 並列処理型コンピュータ

Publications (1)

Publication Number Publication Date
JPH07182169A true JPH07182169A (ja) 1995-07-21

Family

ID=18203203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32780693A Pending JPH07182169A (ja) 1993-12-24 1993-12-24 並列処理型コンピュータ

Country Status (1)

Country Link
JP (1) JPH07182169A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07105003A (ja) * 1993-08-13 1995-04-21 Masayuki Shimizu Vliwプロセッサの命令発行方式及び圧縮符号展開部
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
JP2006500673A (ja) * 2002-09-24 2006-01-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理装置、処理方法及びコンパイラ
KR100528844B1 (ko) * 1996-06-05 2006-01-27 선 마이크로시스템즈 인코퍼레이티드 감소된런-타임메모리공간의요구를가지고아키텍쳐스페시픽코드를실행하기위한컴퓨터시스템및방법
JPWO2006121046A1 (ja) * 2005-05-12 2008-12-18 日本電気株式会社 プロセッサアレイ、プロセッサエレメント複合体、マイクロ命令制御装置およびマイクロ命令制御方法
WO2010024162A1 (ja) * 2008-08-29 2010-03-04 日本電気株式会社 情報処理装置および情報処理方法
US8583895B2 (en) 1996-05-15 2013-11-12 Nytell Software LLC Compressed instruction format for use in a VLIW processor
US9619235B2 (en) 2011-06-01 2017-04-11 Fujitsu Limited Compressing detected current and preceding instructions with the same operation code and operand patterns

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07105003A (ja) * 1993-08-13 1995-04-21 Masayuki Shimizu Vliwプロセッサの命令発行方式及び圧縮符号展開部
US8583895B2 (en) 1996-05-15 2013-11-12 Nytell Software LLC Compressed instruction format for use in a VLIW processor
KR100528844B1 (ko) * 1996-06-05 2006-01-27 선 마이크로시스템즈 인코퍼레이티드 감소된런-타임메모리공간의요구를가지고아키텍쳐스페시픽코드를실행하기위한컴퓨터시스템및방법
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
JP2006500673A (ja) * 2002-09-24 2006-01-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理装置、処理方法及びコンパイラ
US7574583B2 (en) 2002-09-24 2009-08-11 Silicon Hive B.V. Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
JPWO2006121046A1 (ja) * 2005-05-12 2008-12-18 日本電気株式会社 プロセッサアレイ、プロセッサエレメント複合体、マイクロ命令制御装置およびマイクロ命令制御方法
JP4530042B2 (ja) * 2005-05-12 2010-08-25 日本電気株式会社 プロセッサアレイ、プロセッサエレメント複合体、マイクロ命令制御装置およびマイクロ命令制御方法
WO2010024162A1 (ja) * 2008-08-29 2010-03-04 日本電気株式会社 情報処理装置および情報処理方法
JP2010055550A (ja) * 2008-08-29 2010-03-11 Nec Corp 情報処理装置および情報処理方法
US8386693B2 (en) 2008-08-29 2013-02-26 Nec Corporation Information processing device and information processing method
US9619235B2 (en) 2011-06-01 2017-04-11 Fujitsu Limited Compressing detected current and preceding instructions with the same operation code and operand patterns

Similar Documents

Publication Publication Date Title
JP3093629B2 (ja) 命令シーケンスを実行するための方法および装置
US7458069B2 (en) System and method for fusing instructions
JP3424202B2 (ja) プロセッサ内で命令を発行するための方法および装置
US5911057A (en) Superscalar microprocessor having combined register and memory renaming circuits, systems, and methods
US6694427B1 (en) Method system and apparatus for instruction tracing with out of order processors
US7473293B2 (en) Processor for executing instructions containing either single operation or packed plurality of operations dependent upon instruction status indicator
US8578351B2 (en) Hybrid mechanism for more efficient emulation and method therefor
US20040030962A1 (en) Generation of trace elements within a data processing apparatus
US6009509A (en) Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
US20090006811A1 (en) Method and System for Expanding a Conditional Instruction into a Unconditional Instruction and a Select Instruction
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
JPH09146770A (ja) 命令を実行する方法およびマイクロプロセッサ
JPH10283187A (ja) プロセッサのアーキテクチャ状態を維持するための方法および装置
JPH10283180A (ja) プロセッサ内で命令をディスパッチする方法および装置
JP3130446B2 (ja) プログラム変換装置及びプロセッサ
CN113703832A (zh) 一种立即数转移指令的执行方法、装置及介质
JPH07182169A (ja) 並列処理型コンピュータ
US7844799B2 (en) Method and system for pipeline reduction
US6681321B1 (en) Method system and apparatus for instruction execution tracing with out of order processors
JP2001142699A (ja) パイプラインプロセッサにおける命令データの転送メカニズム
JP2007532990A (ja) ヘルパーサブスレッドを含むスレッドの実行の明示的ソフトウェア制御のための方法及び構造
EP3871081B1 (en) Register renaming-based techniques for block-based processors
US7155718B1 (en) Method and apparatus to suspend and resume on next instruction for a microcontroller
US6959377B2 (en) Method and system for managing registers
Sasanka et al. Alp: Efficient support for all levels of parallelism for complex media applications