JPH11282674A - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JPH11282674A
JPH11282674A JP8336898A JP8336898A JPH11282674A JP H11282674 A JPH11282674 A JP H11282674A JP 8336898 A JP8336898 A JP 8336898A JP 8336898 A JP8336898 A JP 8336898A JP H11282674 A JPH11282674 A JP H11282674A
Authority
JP
Japan
Prior art keywords
instruction
unit
word
processor
register
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.)
Granted
Application number
JP8336898A
Other languages
English (en)
Other versions
JP3451921B2 (ja
Inventor
Takehito Heiji
岳人 瓶子
Tetsuya Tanaka
哲也 田中
Nobuo Higaki
信生 桧垣
Shuichi Takayama
秀一 高山
Kensuke Kotani
謙介 小谷
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP08336898A priority Critical patent/JP3451921B2/ja
Priority to US09/280,777 priority patent/US6324639B1/en
Publication of JPH11282674A publication Critical patent/JPH11282674A/ja
Application granted granted Critical
Publication of JP3451921B2 publication Critical patent/JP3451921B2/ja
Priority to US10/720,030 priority patent/USRE41751E1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】 VLIW方式のような静的な並列スケジュー
リングを前提としたプロセッサにおいて、コードサイズ
の削減を図る。また、可変長命令方式におけるハードウ
ェア複雑化の問題点を克服し、性能向上とコード効率向
上の両立を図る。 【解決手段】 命令構成要素内にフォーマット情報を持
ち、それを参照することによりいくつの命令構成要素を
連結して一つの命令を構成するのかを決定する。ハード
ウェア簡単化のため、命令構成要素内のフォーマット情
報を参照することにより、後続する命令構成要素の命令
としての解読を無効化する機構を備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサに関
し、特に並列処理による実行サイクル数の削減とコード
効率の向上を図る技術に関する。
【0002】
【従来の技術】近年のマイクロプロセッサ応用製品の高
機能化及び高速化に伴い、高い処理性能を持つマイクロ
プロセッサ(以下、単に「プロセッサ」という。)が望
まれている。そして、これを実現する技術の1つとして
1サイクルに複数の命令を同時に実行するものがあり、
VLIW(Very Long Instruction Word)方式のプロセ
ッサもその技術の1つである。
【0003】このVLIW方式のプロセッサは、実行コ
ード生成時にコンパイラ等により静的に命令間の依存関
係を解析し、命令コードの移動を行って実行効率の良い
命令ストリームを生成するものである。この方式は、動
的に命令間の依存関係を解析するスーパースカラ方式の
プロセッサと比べてハードウェアを簡略化でき、このた
め動作周波数を上げやすいという長所を有する。
【0004】しかし、VLIW方式では、一般に命令を
固定長として取り扱うため、次のような問題がある。
【0005】すなわち、長い定数を扱う命令の指定には
多くのビット数を必要とするが、レジスタ間演算命令の
指定にはそれほど多くのビット数を必要としない等、命
令毎に指定に必要なビット数にばらつきがある。ところ
が、VLIW方式では命令を固定長として取り扱うた
め、短いビット数しか必要としない命令を指定するのに
必要以上のビット数を用いざるを得ず、コードサイズが
大きくなってしまう。
【0006】そして、この問題を解決する1つの手段と
して、命令長を可変とすることが考えられる。
【0007】図13は、1つの命令が1個または2個の
命令構成要素(ここでは「ユニット」と呼ぶ)にて構成
され、3つの命令を同時実行可能なプロセッサの命令レ
ジスタ周辺の構成を示すブロック図である。同図におい
て、破線は制御信号を表している。図13においてユニ
ットキュー50は、ユニットの並びであり、命令メモリ
等から供給された順にユニットを命令レジスタに転送し
ていく。
【0008】この構成では、命令レジスタA52aと命
令レジスタB52b、命令レジスタC52cと命令レジ
スタD52d、命令レジスタE52eと命令レジスタF
52fがそれぞれ対になっており、命令は常に命令レジ
スタA52a、命令レジスタC52c又は命令レジスタ
E52eの3つのレジスタのいずれかを先頭として命令
レジスタに格納され、2つのユニットを連結して1つの
命令を構成する場合にのみ、対となっているもう一方の
命令レジスタにユニットが転送される。したがって、命
令レジスタA52aに転送されたユニットがそのユニッ
ト単体で命令を構成する場合には、命令レジスタB52
bにはユニットが転送されないことになる。
【0009】図13を見るとわかるように、この構成で
はユニットキュー50の各ユニットがいずれの命令レジ
スタに転送されるのかが一意に決まっていない。また、
各命令レジスタへ転送されるユニットがユニットキュー
50のいずれのユニットなのかが一意に決まっていな
い。そこで、セレクタ51a〜51dを制御して転送す
るユニットを選択することになる。さらに、これらのセ
レクタの制御は全体を一度に決定することができず、ま
ずセレクタ51a、セレクタ51bの制御が決定され、
命令レジスタCへ転送されるユニットが決定してから、
このユニット内の命令長に関する情報を参照して、図中
破線で示すようにセレクタ51c、セレクタ51dの制
御を決定する。
【0010】
【発明が解決しようとする課題】しかしながら、上記従
来のプロセッサでは、ユニットキューから命令レジスタ
への転送の際の遅延が大幅に大きくなるという問題点が
あった。これは、先行する命令レジスタに転送されたユ
ニット内の命令長に関する情報を参照しなければ、当該
命令レジスタに関するセレクタの制御を決定できないか
らである。また、並列度が増すに従って、転送すべき命
令レジスタの数が増加するので、この遅延はさらに大き
くなっていく。
【0011】一方、ユニットキュー内のユニットと命令
レジスタとの対応を一対一とし、図13に示したプロセ
ッサで問題となっていたユニットキューから命令レジス
タへの転送におけるセレクタによる遅延の問題を解消す
る技術として、図14に示すものがある。このプロセッ
サでは、命令を構成する可能性のある全てのユニットの
組み合わせについてデコードしておき、先行する命令デ
コーダから出力される命令長の情報によって、デコード
結果を選択して使用する。具体的には、図中破線で示す
ように、第1命令デコーダ53dが出力する情報により
セレクタ51eの制御を決定し、上記情報と第2命令デ
コーダ53eまたは第3命令デコーダ53fが出力する
情報によりセレクタ51fの制御を決定する。
【0012】ところが、3つの命令を同時実行するため
に、2ユニット長の命令を解読するデコーダを5つも必
要とし、ハードウェアが非常に大きくなるという問題点
がある。
【0013】そこで、本発明はかかる問題点を鑑みてな
されたものであり、命令レベルの並列実行に際して、ハ
ードウェア複雑化の問題を克服しつつ、性能向上とコー
ド効率向上を両立するプロセッサを提供することを目的
とする。
【0014】
【課題を解決するための手段】上記目的を達成するため
に請求項1記載のプロセッサは、一語が複数でかつ所定
数の語素からなる複合命令を実行するVLIW方式のプ
ロセッサであって、実行の単位となる単位命令が一また
は複数の前記語素から構成され、かつ前記単位命令を構
成する前記語素の数が少なくとも二通りあることを特徴
とする。
【0015】これによって、各命令の指定に必要なビッ
ト数に応じた命令長の命令フォーマットにて命令を指定
することができ、コードサイズを削減することができ
る。
【0016】ここで請求項2記載のプロセッサは、請求
項1記載のプロセッサにおいて、前記単位命令を構成す
る前記語素の数に関する語数情報が、前記単位命令内に
明示的に含まれることを特徴とする。
【0017】これによって、命令の発行制御部におい
て、命令長を特定することが容易になり、命令発行制御
を行うハードウェアを単純化することができる。
【0018】また上記目的を達成するために請求項3記
載のプロセッサは、一語が複数の語素からなる複合命令
を実行し、実行の単位となる単位命令が一または複数の
前記語素から構成され、かつ前記単位命令を構成する前
記語素の数が少なくとも二通りあるプロセッサであっ
て、記憶装置から前記複合命令を読み出す複合命令読み
出し手段と、前記複合命令読み出し手段により読み出さ
れた前記複合命令中の前記語素から、いずれかの前記語
素内に含まれる前記単位命令を構成する前記語素の数に
関する語数情報に基づいて、前記単位命令を組み立てて
解読する解読手段とを備えることを特徴とする。
【0019】これによって、各命令の指定に必要なビッ
ト数に応じた命令長の命令フォーマットにて命令を指定
することができ、コードサイズを削減することができ
る。
【0020】また請求項4記載のプロセッサは、請求項
3記載のプロセッサにおいて、前記解読手段は、前記語
素の一定数ごとに区切られた前記複合命令をそれぞれ解
読する複数の単位解読手段と、前記語数情報に基づいて
前記単位解読手段のいくつかの解読を無効化する解読制
御手段とから構成されることを特徴とする。
【0021】これによって、命令の発行部のハードウェ
アを単純化することができ、命令長を可変とすることに
よりハードウェアが複雑になり、遅延が増大して性能が
低下するという問題点を克服している。
【0022】また請求項5記載のプロセッサは、請求項
4記載のプロセッサにおいて、前記解読制御手段は、前
記語数情報に基づいて、命令中のオペレーションに関す
る記述を解読していない前記単位解読手段に対して前記
無効化を行うことを特徴とする。
【0023】これによって、命令の発行部のハードウェ
アを単純化することができ、命令長を可変とすることに
よりハードウェアが複雑になり、遅延が増大して性能が
低下する、という問題点を克服している。
【0024】さらに請求項6記載のプロセッサは、請求
項5記載のプロセッサにおいて、前記一定数は、前記単
位命令を構成する前記語素の最小の数であることを特徴
とする。
【0025】また請求項7記載のプロセッサは、請求項
3から請求項6のいずれか1項に記載のプロセッサにお
いて、一語が複数でかつ所定数の語素からなる複合命令
を実行するVLIW方式のプロセッサであって、さら
に、前記複合命令が一語に含み得る前記単位命令の数に
等しい数の、前記単位命令を実行する実行手段を備える
ことを特徴とする。
【0026】また請求項8記載のプロセッサは、請求項
1から請求項7のいずれか1項に記載のプロセッサにお
いて、前記単位命令は、第1の数の前記語素から構成さ
れる単位命令と、前記第1の数より大きい第2の数の前
記語素から構成される単位命令とがあり、前記第2の数
の前記語素から構成される単位命令の内にあって、前記
第1の数の前記語素から構成される単位命令に相当する
部分からはみ出す部分の語素には、命令中の数値に関す
る記述のみが配置されることを特徴とする。
【0027】これによって、命令解読器の入力ビット幅
を短くすることができ、ハードウェアを単純化すること
ができる。
【0028】さらに請求項9記載のプロセッサは、請求
項1または請求項2記載のプロセッサにおいて、前記複
合命令中の前記単位命令と該単位命令に後続する単位命
令とが並列に実行できるか否かを示す並列実行情報が、
前記複合命令内に明示的に含まれることを特徴とする。
【0029】これによって、各命令の指定に必要なビッ
ト数に応じた命令長の命令フォーマットにて命令を指定
することができると共に、一般のVLIWなどで並列実
行可能な命令が存在しない場合に挿入される無動作命令
の挿入が不要となり、コードサイズを削減することがで
きる。
【0030】また請求項10記載のプロセッサは、請求
項9記載のプロセッサにおいて、前記並列実行情報が、
並列に実行できる前記単位命令の群と後続する前記群と
の境界に関する情報であることを特徴とする。
【0031】さらに請求項11記載のプロセッサは、請
求項9または請求項10記載のプロセッサにおいて、記
憶装置から前記複合命令を読み出す複合命令読み出し手
段と、前記複合命令読み出し手段により読み出された前
記複合命令中の前記語素から、前記語数情報と前記並列
実行情報とに基づいて前記命令単位を組み立てて解読す
る解読手段とを備えることを特徴とする。
【0032】これによって、各命令の指定に必要なビッ
ト数に応じた命令長の命令フォーマットにて命令を指定
することができると共に、一般のVLIWなどで並列実
行可能な命令が存在しない場合に挿入される無動作命令
の挿入が不要となり、コードサイズを削減することがで
きる。
【0033】また請求項12記載のプロセッサは、請求
項11記載のプロセッサにおいて、前記解読手段は、前
記語素の一定数ごとに区切られた前記複合命令をそれぞ
れ解読する複数の単位解読手段と、前記語数情報と前記
並列実行情報とに基づいて前記単位解読手段のいくつか
の解読を無効化する解読制御手段とから構成されること
を特徴とする。
【0034】これによって、各命令の指定に必要なビッ
ト数に応じた命令長の命令フォーマットにて命令を指定
することができると共に、一般のVLIWなどで並列実
行可能な命令が存在しない場合に挿入される無動作命令
の挿入が不要となり、コードサイズを削減することがで
きる。さらに、命令の発行部のハードウェアを単純化す
ることができ、命令長を可変とすることによりハードウ
ェアが複雑になり、遅延が増大して性能が低下するとい
う問題点を克服している。
【0035】
【発明の実施の形態】以下、本発明に係るプロセッサの
実施の形態について、図面を用いて詳細に説明する。 (命令フォーマットとアーキテクチャの概要)まず、本
プロセッサが解読実行する命令(特許請求の範囲に記載
する「単位命令」に相当する。)の構造について説明す
る。
【0036】図1(a)〜図1(e)は本プロセッサの
命令フォーマットを示す図である。本プロセッサの各命
令は、21ビットの命令構成要素(ここでは「ユニッ
ト」と呼ぶ。特許請求の範囲に記載する「語素」に相当
する。)にて構成されており、ユニット1つで構成され
る21ビット命令とユニット2つで構成される42ビッ
ト命令の2種類の命令フォーマットが存在する。各命令
がいずれの長さの命令であるかは、1ビットのフォーマ
ット情報11によって決定される。具体的には、フォー
マット情報11が“0”の時はそのユニット単体で21
ビット命令となり、フォーマット情報11が“1”の時
はそのユニットとそれに後続するユニットとを連結して
42ビット命令となる。
【0037】また、各命令には1ビットの並列実行境界
情報10を持たせてある。この情報は、この命令とそれ
に後続する命令との間に並列実行の境界が存在するか否
かを示すものである。具体的には、並列実行境界情報1
0が“1”の時はその命令と後続命令の間に並列実行の
境界が存在し、並列実行境界情報10が“0”の時には
並列実行の境界が存在しないことになる。この情報の利
用方法については後で述べる。
【0038】各命令の命令長からフォーマット情報11
と並列実行境界情報10を除いた部分にてオペレーショ
ンを指定する。21ビット命令では19ビット、42ビ
ット命令では40ビットの長さを使用することができる
ことになる。具体的には、“Op1”、“Op2”、
“Op3”のフィールドでは、オペレーションの種類を
表すオペコードを、“Rs”のフィールドでは、ソース
オペランドとなるレジスタのレジスタ番号を、“Rd”
のフィールドでは、デスティネーションオペランドとな
るレジスタのレジスタ番号を指定する。また、“imm
5”及び“imm32”のフィールドでは、それぞれ5
ビットと32ビットの演算用定数オペランドを指定す
る。そして、“disp13”及び“disp31”の
フィールドでは、それぞれ13ビットと31ビットの変
位(ディスプレースメント)を指定する。
【0039】32ビットの定数などの長い定数を扱う転
送命令や演算命令、大きなディスプレースメントを指定
する分岐命令は42ビット命令で定義され、それらを除
くほとんどの命令は21ビット命令で定義されている。
なお、図1を見てわかるように、42ビット命令の構成
要素である2つのユニットのうち、後ろの方のユニット
すなわち2番目のユニットには、長い定数やディスプレ
ースメントの一部のみが配置され、オペコードは配置さ
れない。
【0040】次に、本プロセッサのアーキテクチャの概
要について説明する。本プロセッサは、静的な並列スケ
ジューリングを前提としたプロセッサであって、命令の
供給と発行の概念は図2のようになる。
【0041】命令の供給は、同図(a)に示すように毎
サイクル64ビット固定長の命令供給単位(ここでは
「パケット」と呼ぶ。特許請求の範囲に記載する「複合
命令」に相当する。)でユニットを3個ずつ供給する。
ユニット3個分の長さは63ビットであるが、残りの1
ビットについては使用しない。そして、命令の実行は、
同図(b)に示すように1サイクルで並列実行の境界ま
でのユニット(ここでは「実行単位」と呼ぶ)を同時実
行する。つまり、各サイクルにおいて並列実行境界情報
10が“1”である命令までの命令を並列実行すること
になる。供給されながら実行されずに残ったユニット
は、命令バッファに蓄積され、次のサイクル以降で実行
の対象となる。
【0042】つまり、このアーキテクチャでは、固定長
のパケット単位で命令を供給しておき、静的に求めた情
報を元に、各サイクルにおいて並列度に応じた適切な数
のユニットを発行していく、ということになる。この手
法をとることにより、通常の固定長命令のVLIW方式
で発生していた無動作命令(nop命令)が全く無くな
り、コードサイズを削減することができる。
【0043】また、命令内のフォーマット情報11の値
によって、2つのユニットを1命令として実行する場合
と1つのユニットを1命令として実行する場合がある。
この手法をとることにより、命令の指定に多くのビット
数を必要とする一部の命令に対してのみ長い命令フォー
マットを使用し、他のほとんどの命令については短い命
令フォーマットで指定することができるので、さらにコ
ードサイズを削減することができる。具体例については
後に述べる。 (プロセッサのハードウェア構成)次に、本プロセッサ
のハードウェア構成を説明する。
【0044】図3は、本発明に係るプロセッサのハード
ウェア構成を示すブロック図である。
【0045】本プロセッサは、1サイクルに最大3つの
命令を並列実行するプロセッサであり、大きく分けて、
命令供給発行部20、解読部30、実行部40から構成
される。
【0046】命令供給発行部20は、図示されていない
外部メモリから命令群を供給し、解読部30に出力する
ものであり、命令フェッチ部21、命令バッファ22及
び命令レジスタ23からなる。
【0047】命令フェッチ部21は、32ビットのIA
(インストラクションアドレス)バス及び64ビットの
ID(インストラクションデータ)バスを通じて図示さ
れていない外部メモリからユニットのブロックをフェッ
チし、内部の命令キャッシュに保持すると共に、PC部
42から出力されたアドレスに相当するユニット群を命
令バッファ22に供給する。
【0048】命令バッファ22は、63ビットのバッフ
ァを2個備えており、命令フェッチ部21によって供給
されたユニットを蓄積しておくために用いられる。命令
バッファ22へは、命令フェッチ部21から64ビット
単位でパケットが供給される。ここで、パケットの最上
位の1ビットの情報は使用されない。命令バッファ22
に蓄積されたユニットは、命令レジスタ23の適切なレ
ジスタに出力される。なお、命令バッファ22について
は、別の図面においてさらに詳細な構成を示している。
【0049】命令レジスタ23は、4個の21ビットレ
ジスタからなり、命令バッファ22から送られてきたユ
ニットを保持するためのものである。命令レジスタ23
周辺については、別の図面においてさらに詳細な構成を
示している。
【0050】解読部30は、命令レジスタ23に保持さ
れた命令を解読し、その解読結果に応じた制御信号を実
行部40に出力するものであり、大きく分けて、命令発
行制御部31と命令デコーダ32からなる。
【0051】命令発行制御部31は、命令レジスタ23
の4個のレジスタに保持されたユニットに対して、ユニ
ット内の並列実行境界情報10とフォーマット情報11
を参照することによって、2つのユニットを1つの命令
として扱うように制御したり、並列実行の境界を越えた
ユニットについては、そのユニットの発行を無効化した
りといった発行に関する制御を行う。なお、命令発行制
御部31については、別の図面においてさらに詳細な動
作説明を行う。
【0052】命令デコーダ32は、命令レジスタ23に
格納された命令群を解読する装置であり、第1命令デコ
ーダ33、第2命令デコーダ34及び第3命令デコーダ
35からなる。これらのデコーダは、基本的に1サイク
ルに1つの命令を解読し、実行部40に制御信号を与え
る。また、命令内に置かれた定数オペランドについて
は、各命令デコーダから実行部40のデータバス48に
転送される。
【0053】実行部40は、解読部30での解読結果に
基づいて、最大3つの命令を並列実行する回路ユニット
であり、実行制御部41、PC部42、レジスタファイ
ル43、第1演算部44、第2演算部45、第3演算部
46、オペランドアクセス部47及びデータバス48、
49からなる。
【0054】実行制御部41は、解読部30での解読結
果に基づいて実行部40の各構成要素42〜49を制御
する制御回路や配線の総称であり、タイミング制御、動
作許可禁止制御、ステータス管理、割り込み制御等の回
路を有する。
【0055】PC(プログラムカウンタ)部42は、次
に解読実行すべき命令が置かれている図示されていない
外部メモリ上のアドレスを命令供給発行部20の命令フ
ェッチ部21に出力する。
【0056】レジスタファイル43は、R0〜R31の
32個の32ビットレジスタから構成される。これらの
レジスタに格納された値は、第1命令デコーダ33、第
2命令デコーダ34及び第3命令デコーダ35での解読
結果に基づいて、データバス48を経由して第1演算部
44、第2演算部45及び第3演算部46に転送され、
そこで演算が施され、又はそこを単に通過した後に、デ
ータバス49を経由してレジスタファイル43またはオ
ペランドアクセス部47に送られる。
【0057】第1演算部44、第2演算部45及び第3
演算部46は、それぞれ2個の32ビットデータに対し
て算術論理演算を行うALUや乗算器と、シフト演算を
行うバレルシフタを内部に有し、実行制御部41による
制御の下で演算を実行する。
【0058】オペランドアクセス部47は、レジスタフ
ァイル43と図示されていない外部メモリとの間でオペ
ランドの転送を行う回路である。具体的には、例えば、
命令内で、オペコードとして“ld”(ロード)が置か
れていた場合には、外部メモリに置かれていた1ワード
(32ビット)のデータがオペランドアクセス部47を
経てレジスタファイル43の指定されたレジスタにロー
ドされ、また、オペコードとして“st”(ストア)が
置かれていた場合には、レジスタファイル43の指定さ
れたレジスタの格納値が外部メモリにストアされる。
【0059】上記PC部42、レジスタファイル43、
第1演算部44、第2演算部45、第3演算部46及び
オペランドアクセス部47は、図示されるように、デー
タバス48(L1バス、R1バス、L2バス、R2バ
ス、L3バス、R3バス)及びデータバス49(D1バ
ス、D2バス、D3バス)で接続されている。なお、L
1バス及びR1バスはそれぞれ第1演算部44の2つの
入力ポートに、L2バス及びR2バスはそれぞれ第2演
算部45の2つの入力ポートに、L3バス及びR3バス
はそれぞれ第3演算部46の2つの入力ポートに、D1
バス、D2バス及びD3バスはそれぞれ第1演算部4
4、第2演算部45及び第3演算部46の出力ポートに
接続されている。 (命令バッファの詳細な構成)次に、命令バッファ22
の詳細な構成を説明する。
【0060】図4は、命令バッファ22の詳細な構成を
示すブロック図である。命令バッファ22は命令バッフ
ァA221及び命令バッファB222の2個の63ビッ
トのバッファからなり、それぞれ3個ずつのユニットを
保持することができる。命令バッファA221はバッフ
ァA0、A1及びA2からなり、それぞれ1個ずつのユ
ニットを保持することができる。同様に、命令バッファ
BはバッファB0、B1及びB2からなる。
【0061】命令バッファ22には、命令フェッチ部2
1から64ビット単位でパケットが供給される。ただ
し、パケットの最上位の1ビットの情報は使用されな
い。この際、命令バッファA221と命令バッファB2
22にまたがって供給されることはなく、いずれかのバ
ッファに63ビット単位で供給されることになる。命令
バッファ22に蓄えられたユニットは供給された順序を
保っており、その順序やいずれのバッファが有効である
かについては命令バッファ制御部223により、状態と
して管理されている。
【0062】命令バッファ制御部223は、毎サイクル
バッファ内の有効なユニットを順に命令レジスタ23に
転送するため、セレクタ224a〜224dの制御を行
う。この制御により、命令バッファ22内の先頭の4つ
のユニットが命令レジスタ23に転送される。さらに、
命令レジスタ23に転送したユニットの中でどれだけの
ユニットが発行されずに残ったか、という解読部30の
命令発行制御部31からの情報と、命令フェッチ部21
から転送されてきたユニットの内いずれのユニットが有
効かという情報とを元に、命令バッファ22の状態の更
新を行う。
【0063】具体的には、まず命令バッファ22が空の
状態で、あるパケットの2番目のユニットに分岐した場
合には、命令フェッチ部21からそのパケットが供給さ
れ、供給されたパケットは命令バッファA221に転送
される。そのパケットの先頭のユニットは無効なので、
命令バッファ制御部223の制御により、命令バッファ
22の状態としてバッファA1及びバッファA2のみが
有効な状態となる。
【0064】次のサイクルで命令バッファ22から命令
レジスタ23に転送したユニットが全く発行されず、命
令フェッチ部21から64ビットの有効なパケットが供
給された場合には、そのパケットは命令バッファB22
2に転送され、命令バッファ22の状態は、バッファA
1、A2、B0、B1及びB2が有効な状態となる。
【0065】さらに、次のサイクルでは、命令バッファ
22に空きがないので、命令フェッチ部21からの供給
は受け付けず、命令レジスタ23へは、順にバッファA
1、バッファA2、バッファB0、バッファB1のユニ
ットを転送する。
【0066】このように、命令バッファ22に63ビッ
ト単位で空きがある場合にのみ命令フェッチ部21から
パケットの供給を行い、供給された順を管理しておき、
各サイクルにおいて、供給された順に先頭の4つのユニ
ットを命令レジスタ23に転送していく。 (命令レジスタ23周辺の構成と命令発行制御部31の
動作)次に、命令レジスタ23周辺の構成を示し、命令
発行制御部31の詳細な動作を説明する。
【0067】図5は、命令レジスタ23周辺の構成を示
すブロック図である。図中、破線の矢印は制御信号を表
す。
【0068】命令レジスタ23は命令レジスタA23
1、命令レジスタB232、命令レジスタC233及び
命令レジスタD234の4個の21ビットレジスタから
なる。命令レジスタ23には、命令バッファ22からユ
ニットが供給されるわけだが、わかりやすくするために
命令バッファ22から供給されるユニットの並びである
ユニットキュー50という概念を考える。そして、ここ
では命令レジスタ23にはユニットキュー50からユニ
ットが供給されると考える。
【0069】図5を見るとわかるように、あるユニット
がいずれの命令レジスタ23に転送されるかどうかは、
ユニットキュー50での位置(順序)によって一意に決
まる。つまり、ユニット1は命令レジスタA231へ、
ユニット2は命令レジスタB232へ転送されることに
なる。これにより、ユニットキュー50から命令レジス
タ23への転送を行う際に、図13の従来例において存
在したようなユニットの選択を行うセレクタが不要とな
り、ハードウェアが単純化されており、遅延も最小限に
抑えられている。
【0070】図中33〜35の各命令デコーダは、21
ビットのユニットを入力とし、それを解読して、そのユ
ニットが構成する命令の動作に関する制御信号を実行制
御部41に出力するとともに、ユニット内に配置された
定数オペランドを出力する。図1の命令フォーマットか
らわかるように、42ビット命令を構成する2つのユニ
ットのうち、2番目のユニットには定数オペランドの一
部しか配置されない。つまり、このユニットにはオペコ
ードが存在しないため、命令デコーダに入力する必要が
ない。そこで、各命令の定数オペランドは、図5に示さ
れるように、命令デコーダが出力したユニット内の定数
と、命令レジスタから無条件に直接転送された定数とを
連結したものということになる。図5の60〜62が各
命令の定数オペランドである。
【0071】また、各命令デコーダには、制御信号とし
て1ビットの無動作命令フラグが入力される。このフラ
グを“1”にセットすると、そのデコーダは出力として
無動作命令を出力する。つまり、無動作命令フラグをセ
ットすることにより、その命令デコーダの命令としての
デコードを無効化することができる。
【0072】ここで、命令レジスタ23に格納されたユ
ニットを組み合わせて命令として発行する制御を行う命
令発行制御部31の動作について説明する。
【0073】命令発行制御部31は、命令レジスタA2
31及び命令レジスタB232に格納された各ユニット
の並列実行境界情報10とフォーマット情報11を参照
することにより命令デコーダの制御を行う。
【0074】まず、これらの情報から、命令レジスタ2
3に格納されたユニットの内どこまでをこのサイクルで
発行するのかを求める。そして、どれだけのユニットが
発行されずに残ったのかの情報を命令バッファ22内の
命令バッファ制御部223に伝達する。
【0075】次に命令デコーダ32を制御し、このサイ
クルで発行される命令についてのみ解読を行うように制
御する。図5からわかるように、命令としてデコードさ
れる可能性のあるユニットは、命令レジスタA231、
命令レジスタB232及び命令レジスタC233に格納
されたユニットのみである。そこで、ユニット内の情報
を参照して、これらのユニットの中で、42ビット命令
の2ユニット目にあたるものや発行されずに残るものに
関しては、そのユニットの命令としてのデコードを無効
化する。42ビット命令の2ユニット目にあたるユニッ
トは、直前のユニットが構成する命令の定数オペランド
の一部として直接出力される。
【0076】具体的には、命令レジスタA231のユニ
ット(ユニット1)のフォーマット情報11が“1”の
ときには、ユニット1と命令レジスタB232のユニッ
ト(ユニット2)とを連結して42ビット命令となるの
で、ユニット2の命令としてのデコードを無効化する、
すなわち第2命令デコーダ34の無動作命令フラグを
“1”にセットする。図5において、命令発行制御部3
1から第2命令デコーダ34への破線がこの動作に相当
する。ユニット2は、ユニット1が構成する命令の定数
オペランド60の一部として直接出力される。
【0077】また、ユニット1のフォーマット情報11
が“0”、ユニット2のフォーマット情報が“1”の時
は、ユニット2と命令レジスタC233のユニット(ユ
ニット3)とを連結して42ビット命令となるので、ユ
ニット3の命令としてのデコードをキャンセルする、す
なわち第3命令デコーダ35の無動作命令フラグを
“1”にセットする。図5において、命令発行制御部3
1から第3命令デコーダ35への破線がこの動作に相当
する。ユニット3は、ユニット2が構成する命令の定数
オペランド61の一部として直接出力される。
【0078】このように、フォーマット情報11を参照
することにより、必要に応じて命令デコーダの無動作フ
ラグを設定し、命令としてのデコードを無効化する。
【0079】それから、ユニット1の並列実行境界情報
10が“1”、フォーマット情報11が“0”のとき
は、このサイクルではユニット1までしか発行されない
ので、ユニット2とユニット3の命令としてのデコード
を無効化する、すなわち第2命令デコーダ34と第3命
令デコーダ35の無動作命令フラグを共に“1”にセッ
トする。図5において、命令発行制御部31から第2命
令デコーダ34と第3命令デコーダ35への破線がこの
動作に相当する。
【0080】また、ユニット1の並列実行境界情報10
が“0”、ユニット2の並列実行境界情報10が
“1”、フォーマット情報11が共に“0”のときは、
このサイクルではユニット2までしか発行されないの
で、ユニット3の命令としてのデコードを無効化する、
すなわち第3命令デコーダ35の無動作命令フラグを共
に“1”にセットする。図5において、命令発行制御部
31から第3命令デコーダ35への破線がこの動作に相
当する。
【0081】このように、並列実行境界情報10を参照
することにより、必要に応じて命令デコーダの無動作フ
ラグを設定し、命令としてのデコードを無効化する。
【0082】以上のような命令発行制御を実現する命令
発行制御部31とその周辺回路の構成を図6に示す。
【0083】前述のように命令発行制御部31は命令レ
ジスタA231及び命令レジスタB232に格納された
ユニットの並列実行境界情報10とフォーマット情報1
1を参照し、第2命令デコーダ34及び第3命令デコー
ダ35の命令としてのデコードを無効化するかどうかを
決定する無動作命令フラグとなる制御信号を出力する。
【0084】図6のような回路構成をとることにより、
第2命令デコーダ34は、命令レジスタA231に格納
されたユニットの並列実行境界情報10が“1”である
か、またはそのユニットのフォーマット情報11が
“1”であるときに無効化される。また、第3命令デコ
ーダ35は、命令レジスタA231に格納されたユニッ
トもしくは命令レジスタB232に格納されたユニット
の並列実行境界情報10が“1”であるか、または命令
レジスタB232に格納されたユニットのフォーマット
情報11が“1”であるときに無効化される。
【0085】このように、図1に示したような命令フォ
ーマットをとり、図6に示したような単純な回路を用意
するだけで、必要最低限の情報を参照して高速な命令発
行制御を行うことができる。
【0086】以上で述べたような命令発行制御の方法を
とることにより、1サイクルで同時発行可能な命令の命
令長の組み合わせに多少の制限が生じる。本プロセッサ
で同時発行可能な命令の命令長の組み合わせを図7に示
す。
【0087】図7を見るとわかるように、本プロセッサ
では、ユニットの並びの先頭から3つ目までのユニット
についてのみ命令としてデコードすることができる。つ
まり、図中(a)〜(h)のパターンについて発行する
ことができる。最大で4つのユニットを同時に発行でき
ることになる。ただし、4つのユニットを発行するパタ
ーンの内、図中(i)、(j)のパターンについては同
時発行することができない。 (従来の命令発行制御方法との比較)ここで、本実施形
態のプロセッサと本発明によらない従来のプロセッサと
の比較を行う。
【0088】まず、図13に示した従来例において、ユ
ニットキュー50から命令レジスタへの転送において、
セレクタによる遅延が問題となっていたが、本発明のプ
ロセッサでは、ユニットキュー50内のユニットと各命
令レジスタが一対一に対応しているため、図13におい
て存在していたセレクタ51a〜51dが不要となり、
上記遅延の問題が解決されている。
【0089】また、図13の構成では、並列度が増して
転送すべき命令レジスタが増加していくに従って、セレ
クタが増加し遅延がさらに大きくなっていくのに対し
て、本発明のプロセッサでは、ユニットキュー50と命
令レジスタの対応は一対一なので、遅延が大きくなるこ
とはない。
【0090】一方、この可変長命令方式をスーパースカ
ラ方式にて並列実行を行うプロセッサに適用したものも
提案されている。例えば、論文 The Approach to Multi
pleInstruction Execution in the GMICRO/400 Process
or (PROCEEDINGS, The Eighth TRON Project Symposiu
m(International), 1991参照)にて開示されているGM
ICRO/400がある。この技術は、図14の概念を
とりながらもハードウェアを削減するために制限を設け
ている。
【0091】図15は、GMICRO/400で採用さ
れている命令発行制御方法をとった場合の命令レジスタ
周辺の構成を示すブロック図である。図15において、
破線は制御信号を表し、54a及び54bは命令内に指
定された定数オペランドを表す。命令デコーダは、入力
された命令を解読し、その結果その命令の実行を制御す
る信号を実行制御部に出力すると共に、命令内に指定さ
れた定数オペランドを出力する。
【0092】GMICRO/400の命令発行制御方法
では、ユニット1とユニット2を連結したもの、ユニッ
ト2及びユニット3をそれぞれ一旦デコードしておき、
第1命令デコーダ53iの解読によって1番目の命令が
1ユニット長の命令なのか2ユニット長の命令なのかが
判明した時点で、セレクタ51gおよびセレクタ51h
を制御することにより、第2命令デコーダ53jもしく
は第3命令デコーダ53kの解読結果を選択して使用す
る。
【0093】図15を見るとわかるように、GMICR
O/400では、図14の構成に対して、同時実行可能
な命令数を3から2に減らすことにより、第4命令デコ
ーダ53gと第5命令デコーダ53hを削除している。
また、第2命令デコーダ53jと第3命令デコーダk
は、入力ビット幅を1ユニット長とし、ハードウェア削
減を図っている。しかし、これによって、同時実行され
る2番目の命令は1ユニット長の命令のみという制限が
発生する。
【0094】以上のようなハードウェア削減を図って
も、2命令同時発行を可能にするために3つの命令デコ
ーダを必要としており、依然としてハードウェア量が多
いという問題点がある。
【0095】また、図15の構成では、第1命令デコー
ダ53iの解読が完了するまでセレクタ51g、51h
の制御を決定することができない。このセレクタの制御
が決定するまで、2番目の命令として第2命令デコーダ
53jと第3命令デコーダ53kのいずれの解読結果を
用いるかを決定できず、オペランドとなるレジスタの格
納値の読み出しを開始できない。オペランドとなる可能
性のある全てのレジスタの格納値を先行的に読み出して
おき、それを選択して使用する方法も考えられるが、レ
ジスタファイルの読み出しポート数が増加するため実用
的ではない。このように、図15の構成では読み出すレ
ジスタを確定するまでの遅延が大きくなる。実際、GM
ICRO/400では命令解読ステージの直後のステー
ジでは演算の実行は行わず、オペランドを読み出すステ
ージとしている。
【0096】さらに、図15の構成にて並列度が増して
同時発行可能なユニット数が増加していくと、セレクタ
の数が増し、制御が複雑化するという問題点がある。
【0097】以上に述べたように、スタティックスケジ
ューリングによってさらなる並列化を実現し、性能向上
を図ることができるが、コードサイズが大きくなるとい
う問題点がある。また、コードサイズを削減する手段と
して可変長命令方式があるが、ハードウェアが複雑にな
るという問題点がある。
【0098】そして、図15に示したGMICRO/4
00の例においては、命令デコーダを3つ用意しても最
大2命令しが同時実行できないのに対して、本発明のプ
ロセッサの命令発行制御方法を用いると、3つの命令デ
コーダにて最大3命令を同時実行することができる。逆
に、本発明において、最大2命令を同時発行する構成を
想定した場合、2個の命令デコーダにて構成することが
できる。具体的な命令レジスタ周辺の構成は図16のよ
うになる。これにより、ハードウェアを削減することが
できる。
【0099】また、図15の構成では、第1命令デコー
ダ53iの解読が完了するまでセレクタ51g、51h
の制御を決定することができず、2番目の命令として第
2命令デコーダ53jと第3命令デコーダ53kのいず
れの解読結果を用いるかを決定できない。そのため、オ
ペランドとなるレジスタを確定するまでの遅延が大きく
なる。これに対して、本発明のプロセッサの構成では、
他のデコーダの解読結果を待たずに、オペランドとなる
レジスタを確定することができるため、解読ステージの
前半にオペランドとなるレジスタの読み出しを開始する
ことができる。その結果、解読ステージの完了時点で、
オペランドとなるレジスタの読み出しも完了させておく
ことができる。これによって、解読ステージの直後のス
テージで演算を実行することができ、実行効率を高める
ことができる。
【0100】さらに、本発明の構成では、同時発行可能
なユニット数が増加しても単純にデコーダの数を増して
いけばよいのに対して、図15の構成では、同時発行可
能なユニット数が増加していくと、セレクタの数が増し
て制御が複雑化するという問題点がある。
【0101】それから、命令フォーマットの違いによる
差異として次のものがある。本発明では図1のように、
2ユニット長の命令の2番目のユニットには定数オペラ
ンドの一部のみが配置されるため、図5のように2番目
のユニットは命令デコーダには入力されずに直接オペラ
ンドとして出力される。このため、すべての命令デコー
ダは1ユニット長の命令を解読するだけでよい。これに
対して、GMICRO/400では、2ユニット長の命
令の2番目のユニットにもオペコードが配置されるた
め、図15の構成で第1命令デコーダ53iは2ユニッ
ト長の命令を解読する必要があり、本発明の構成に比べ
てハードウェアが増加している。 (プロセッサの動作)次に、具体的な命令を解読実行し
た場合の本実施形態のプロセッサの動作について説明す
る。
【0102】図8は、32ビットの定数を扱う処理の一
例を示すフローチャートである。本図に示されている処
理は、32ビットの定数“0x87654321”をレ
ジスタR1に転送し(ステップS100)、レジスタR
5の格納値をレジスタR0に転送し(ステップS10
1)、レジスタR0の格納値にレジスタR1の格納値を
加え(ステップS102)、レジスタR3の格納値にレ
ジスタR2の格納値を加え(ステップS103)、レジ
スタR0の格納値をメモリ内のレジスタR4の格納値で
示されるアドレスに格納し(ステップS104)、レジ
スタR0の格納値をレジスタR6に転送し(ステップS
105)、最後にレジスタR3の格納値をレジスタR7
に転送する(ステップS106)というものである。
【0103】図9は、図8に示された処理を本プロセッ
サに行わせるプログラムの実行コードの例と実行イメー
ジを示す図である。
【0104】このプログラムは、7個の命令で構成され
ており、命令供給単位としては3個のパケット70〜7
2から構成されている。各命令の処理内容は、実行コー
ドの各フィールドに置かれたニーモニックで表現されて
いる。具体的には、ニーモニック“mov”は、定数及
びレジスタの格納値のレジスタへの転送を表し、ニーモ
ニック“add”は、定数及びレジスタの格納値とレジ
スタの格納値との加算を表し、ニーモニック“st”
は、レジスタの格納値のメモリへの転送を表している。
【0105】なお、定数は16進数で表現されている。
また、“Rn(n=0〜31)”はレジスタファイル4
3の中の一つのレジスタを示す。そして、各命令の並列
実行境界情報10とフォーマット情報11についても
“0”又は“1”で示してある。
【0106】図9(b)を用いて、図8に示された処理
における各実行単位ごとの本プロセッサの動作を説明す
る。 (実行単位1)パケット70がメモリから供給され、パ
ケット70内のユニットが順に命令レジスタ23に転送
される。次に、命令発行制御部31が各ユニットの並列
実行境界情報10とフォーマット情報11を参照して発
行を制御する。具体的には、1番目のユニットのフォー
マット情報11が“1”であるので、1番目のユニット
と2番目のユニットを連結して1つの命令として扱う。
つまり、第2命令デコーダ34の無動作命令フラグを
“1”にセットして、命令としてのデコードを無効化す
る。また、1番目のユニットの並列実行境界情報10が
“0”であり、3番目のユニットの並列実行境界情報1
0が“1”であるので、3番目のユニットまでの2個の
命令を発行する。供給されたすべてのユニットを発行す
るため、命令バッファ22にはユニットは蓄積されな
い。
【0107】実行部40では、レジスタR1に定数“0
x87654321”が転送され、レジスタR5の格納
値がレジスタR0に転送される。 (実行単位2)パケット71がメモリから供給され、パ
ケット71内のユニットが順に命令レジスタ23に転送
される。3個のユニット共フォーマット情報11が
“0”であるので、いずれのユニットも21ビット命令
となる。また、1番目のユニットの並列実行境界情報1
0が“0”であり、2番目のユニットの並列実行境界情
報10が“1”であるので、2番目のユニットまでの2
個の命令を発行する。3番目のユニットは、発行されず
に残ったので命令バッファ22に蓄積される。
【0108】実行部40では、レジスタR0の格納値に
レジスタR1の格納値が加えられてレジスタR0に格納
され、レジスタR3の格納値にレジスタR2の格納値が
加えられてレジスタR3に格納される。 (実行単位3)パケット72がメモリから供給され、命
令バッファ22に蓄積されていた1個のユニットとパケ
ット72内の2個のユニットとが順に命令レジスタ23
に転送される。3個のユニット共フォーマット情報11
が“0”であるので、いずれのユニットも21ビット命
令となる。また、1番目のユニットの並列実行境界情報
10と2番目のユニットの並列実行境界情報が“0”で
あり、3番目のユニットの並列実行境界情報10が
“1”であるので、3番目のユニットまでの3個の命令
を発行する。これで、供給されたユニットはすべて発行
されたことになる。
【0109】実行部40では、レジスタR0の格納値が
メモリ内のレジスタR4の格納値で示されるアドレスに
転送され、レジスタR0の格納値がレジスタR6に転送
され、レジスタR3の格納値がレジスタR7に転送され
る。
【0110】以上のようにして、本プロセッサにおいて
図8に示した処理を行うプログラムは3つの実行単位で
実行される。実行コードは、42ビット命令が1個と2
1ビット命令が6個で構成されていたので、コードサイ
ズは168ビットである。 (従来の固定長VLIW方式のプロセッサとの比較)次
に、図8に示した処理を、従来技術の1つとして挙げた
命令長が固定のVLIW方式のプロセッサに行わせた場
合を仮定して、本発明に係るプロセッサの場合と比較す
る。
【0111】毎サイクル固定長の命令を固定個数発行す
る単純なVLIW方式では、32ビットの定数を転送す
る命令を1命令で指定できるような命令長にすると、非
常にコードサイズが大きくなってしまうため、命令長は
32ビットとし、32ビットの定数の転送は16ビット
ずつ2命令に分けて行うことにする。
【0112】図10は、図8に示された処理を、命令長
が32ビット固定のVLIW方式のプロセッサに行わせ
るプログラムの実行コードの例と実行イメージを示す図
である。
【0113】このプログラムは、4個のパケット73〜
76から構成されている。各命令の処理内容は、図9に
示したコードと同様に、各フィールドに置かれたニーモ
ニックで表現されている。ただし、ニーモニック“se
thi”は、16ビットの定数をレジスタの上位16ビ
ットに格納することを表し、ニーモニック“setl
o”は、16ビットの定数をレジスタの下位16ビット
に格納することを表し、ニーモニック“nop”は、何
もしない命令であることを表している。
【0114】図10(a)の実行コードと同図(b)の
実行イメージとを比較するとわかるように、VLIW方
式では、各サイクル供給された命令がそのまま発行され
る。つまり、毎サイクル32ビット命令が3個発行され
ることになる。並列実行可能な命令が存在しない場合
は、あらかじめソフトウェアで“nop”命令を挿入し
ておく必要がある。そのため、この例でも4個の“no
p”命令が挿入されて、コードサイズは32ビット命令
が12個なので384ビットとなっており、本発明に係
るプロセッサの場合のコードサイズよりも大幅に大きい
ものになっている。
【0115】また、32ビットの定数のレジスタへの転
送を2命令に分けて行っているために新たな依存関係が
生じ、実行単位の数が4つとなっている。どのような命
令並べ替えを行っても実行単位の数を減らすことはでき
ない。これによって、本発明に係るプロセッサの場合に
比べて実行サイクル数が1サイクル増加する。 (従来の並列実行境界の情報を固定長命令内に持つプロ
セッサとの比較)次に、図8に示した処理を、従来技術
の1つとして挙げた命令長が固定であり並列実行の境界
であるか否かの情報を命令内に持つ方式のプロセッサに
行わせた場合を仮定して、本発明に係るプロセッサの場
合と比較する。
【0116】この方式では、命令長が32ビットのモデ
ルと40ビットのモデルを考える。命令長が32ビット
のモデルでは、図10のVLIW方式の場合と同様に、
32ビットの定数のレジスタへの転送は2命令に分けて
行う。それに対して命令長が40ビットのモデルでは、
32ビットの定数のレジスタへの転送を含むすべての種
類の演算を1命令で指定することができる。
【0117】図11は、図8に示された処理を、命令長
が32ビット固定であり並列実行の境界の情報を命令内
に持つ方式のプロセッサに行わせるプログラムの実行コ
ードの例と実行イメージを示す図である。
【0118】このプログラムは、8個の命令で構成され
ており、命令供給単位としては3個のパケット77〜7
9から構成されている。各命令の処理内容は、実行コー
ドの各フィールドに置かれたニーモニックで表現されて
いる。32ビットの定数のレジスタへの転送は、図10
の命令長32ビット固定のVLIW方式の場合と同様に
16ビットずつ2個の命令に分けて行う。
【0119】図11を見ると分かるように、このモデル
でも図10のVLIW方式の場合と同様に32ビットの
定数のレジスタへの転送を2命令に分けて実行している
ため、新たな依存関係が生じ、実行サイクル数が本発明
に係るプロセッサの場合に比べて1サイクル増加してい
る。
【0120】コードサイズに関しては、“nop”命令
の挿入が発生しないため、図10のVLIW方式の場合
のコードサイズから丁度“nop”命令の分だけ削減さ
れており、32ビット命令が8個で256ビットとなっ
ている。しかし、依然として本発明に係るプロセッサの
場合のコードサイズに比べると大きい。
【0121】次に、命令長を40ビット固定としたモデ
ルとの比較を行う。図12は、図8に示された処理を、
命令長が40ビット固定であり並列実行の境界の情報を
命令内に持つ方式のプロセッサに行わせるプログラムの
実行コードの例と実行イメージを示す図である。
【0122】このプログラムは、7個の命令で構成され
ており、命令供給単位としては3個のパケット80〜8
2から構成されている。各命令の処理内容は、実行コー
ドの各フィールドに置かれたニーモニックで表現されて
いる。32ビットの定数のレジスタへの転送について
も、1命令で指定することが可能である。
【0123】図12を見ると分かるように、このモデル
では32ビットの定数のレジスタへの転送を1命令で指
定することができるため、実行単位の数は3つであり、
実行サイクル数は本発明に係るプロセッサの場合と同じ
である。
【0124】命令数は本発明に係るプロセッサの場合と
同じだが、本発明に係るプロセッサの場合は長いビット
数を必要としない命令については21ビット命令で指定
できるのに対し、このモデルではすべての命令を40ビ
ット命令で指定する必要があるため、コードサイズは4
0ビット命令が7個で280ビットとなっており、本発
明に係るプロセッサの場合に比べて大きくなっている。
【0125】以上、本発明に係るプロセッサについて、
実施形態に基づいて説明したが、本発明はこれらの実施
形態に限られないことは勿論である。即ち、 (1)上記実施の形態では、静的なスケジューリングを
前提としていたが、本発明はこれに限定されるものでは
ない。つまり、スーパースカラ方式のように動的なスケ
ジューリングを行うプロセッサにも適用することができ
る。この場合は、命令フォーマット内の並列実行境界情
報を無くし、解読部の中に動的に並列実行可能か否かを
検出する並列実行可否検出装置を持たせ、本実施形態に
おいて命令発行制御部にて並列実行境界情報を参照して
行っていた制御を、並列実行可否検出装置の出力を参照
して行えばよい。このような構成にしても、可変長命令
方式においてハードウェアを簡単化できるという本発明
の有意性は保たれる。 (2)上記実施の形態では、3個の命令を同時実行する
ように構成していたが、本発明はこの同時実行命令数に
限定されるものではない。例えば、2個の命令を同時発
行する構成にしてもよい。この場合は、解読部と命令レ
ジスタ周辺の構成を図16のブロック図に示すように変
更し、実行部の演算器の構成を適宜変更すればよい。 (3)上記実施の形態では、図1の命令フォーマットか
らわかるように、ユニット1個または2個にて1個の命
令を構成していたが、本発明はこのユニット数に限定さ
れるものではない。つまり、3個以上のユニットを連結
して1個の命令を構成するような命令フォーマットを定
義してもよい。例えば、1〜4個の単位命令にて命令を
構成する場合には、命令内のフォーマット情報を2ビッ
トにすればよい。 (4)上記実施の形態では、図1の命令フォーマットか
らわかるように、ユニット1個または2個にて1個の命
令を構成していたが、必ずしもユニット単体で構成され
る命令が存在する必要はない。例えば、1命令が2個ま
たは3個のユニットから構成されるとしてもよい。この
場合には、命令レジスタと命令デコーダおよび定数オペ
ランドを結ぶ配線を変更すればよい。 (5)上記実施の形態では、図1の命令フォーマットか
らわかるように、命令内に並列実行の境界であるか否か
の情報を持たせていたが、この情報は必ずしも必要では
ない。つまり、命令内にはフォーマットに関する情報の
みをもち、並列実行可能な命令が存在しない場合には
“nop”命令を配置するという方法をとってもよい。
この場合においても、各命令の指定に必要な長さの命令
フォーマットにて命令を指定することができるという本
発明の有意性が保たれる。 (6)上記実施の形態では、図1の命令フォーマットか
らわかるように、42ビット命令を構成する2つのユニ
ットのうち2番目のユニットには定数オペランドの一部
のみを配置するようになっていたが、このユニットにオ
ペコードを配置しても構わない。そのためには、図5に
おいて直接定数オペランドの一部として出力していたユ
ニットを命令デコーダへ入力するように変更し、命令デ
コーダの入力ビット幅を増加させればよい。 (7)上記実施の形態では、命令バッファの構成として
図4に示すものとしたが、本発明はこの構成およびバッ
ファのサイズに限定されるものではない。例えば、一本
の単純なキュー構造の命令バッファを用いてもよい。
【0126】
【発明の効果】以上の説明から明らかなように、本発明
のプロセッサは、一語が複数でかつ所定数の語素からな
る複合命令を実行するVLIW方式のプロセッサであっ
て、実行の単位となる単位命令が一または複数の前記語
素から構成され、かつ前記単位命令を構成する前記語素
の数が少なくとも二通りあることを特徴とする。
【0127】これによって、各命令の指定に必要なビッ
ト数に応じた命令長の命令フォーマットにて命令を指定
することができ、コードサイズを削減することができ
る。
【0128】また本発明のプロセッサは、一語が複数で
かつ所定数の語素からなる複合命令を実行するVLIW
方式のプロセッサであって、実行の単位となる単位命令
が一または複数の前記語素から構成され、かつ前記単位
命令を構成する前記語素の数が少なくとも二通りあり、
前記複合命令中の前記単位命令と該単位命令に後続する
単位命令とが並列に実行できるか否かを示す並列実行情
報が、前記複合命令内に明示的に含まれることを特徴と
する。
【0129】これによって、各命令の指定に必要なビッ
ト数に応じた命令長の命令フォーマットにて命令を指定
することができると共に、一般のVLIWなどで並列実
行可能な命令が存在しない場合に挿入される無動作命令
の挿入が不要となり、コードサイズを削減することがで
きる。
【0130】また本発明のプロセッサは、一語が複数の
語素からなる複合命令を実行し、実行の単位となる単位
命令が一または複数の前記語素から構成され、かつ前記
単位命令を構成する前記語素の数が少なくとも二通りあ
るプロセッサであって、記憶装置から前記複合命令を読
み出す複合命令読み出し手段と、前記複合命令読出し手
段により読出された前記複合命令中の前記語素から、い
ずれかの前記語素内に含まれ前記単位命令を構成する前
記語素の数に関する語数情報に基づいて、前記命令単位
を組み立てて解読する解読手段とを備え、前記単位命令
は、第1の数の前記語素から構成される単位命令と、前
記第1の数より大きい第2の数の前記語素から構成され
る単位命令とがあり、前記第2の数の前記語素から構成
される単位命令の内にあって、前記第1の数の前記語素
から構成される単位命令に相当する部分からはみ出す部
分の語素には、命令中の数値に関する記述のみが配置さ
れることを特徴とする。
【0131】これによって、数値に関する記述に関して
は命令デコーダに入力せず、直接定数オペランドとして
出力することができ、命令デコーダを簡単化することが
できる。これにより、ハードウェアを単純化することが
できる。
【0132】また本発明のプロセッサは、一語が複数の
語素からなる複合命令を実行し、実行の単位となる単位
命令が一または複数の前記語素から構成され、かつ前記
単位命令を構成する前記語素の数が少なくとも二通りあ
るプロセッサであって、記憶装置から前記複合命令を読
み出す複合命令読み出し手段と、前記複合命令読出し手
段により読出された前記複合命令中の前記語素から、い
ずれかの前記語素内に含まれ前記単位命令を構成する前
記語素の数に関する語数情報に基づいて、前記命令単位
を組み立てて解読する解読手段とを備え、前記解読手段
は、前記語素の一定数ごとに区切られた前記複合命令を
それぞれ解読する複数の単位解読手段と、前記語数情報
に基づいて前記単位解読手段のいくつかの解読を無効化
する解読制御手段とから構成されることを特徴とする。
【0133】これによって、命令の供給部から命令の発
行部への単位命令の転送の際のセレクタによる遅延を解
消し、またハードウェアを単純化することができる。よ
って、命令長を可変とすることによりハードウェアが複
雑になり、遅延が増大して性能が低下する、という問題
点を克服している。さらに、この命令発行制御方法で
は、並列度が増して同時発行可能な命令数が増えても、
単位命令の命令レジスタへの転送の遅延が増加しないと
いうメリットがある。
【0134】さらに、GMICRO/400で採用され
ている構成に対してデコーダの数を減らすことができ
る。また、解読ステージの前半にオペランドの読み出し
を開始することができるため、解読ステージが完了する
時点でオペランドの読み出しを完了させておくことがで
き、実行効率を高めることができる。
【図面の簡単な説明】
【図1】本発明の実施形態に係るプロセッサが実行する
命令の構造を示す図
【図2】同プロセッサにおける命令の供給と発行の概念
を示す図
【図3】同プロセッサのハードウェア構成を示すブロッ
ク図
【図4】同プロセッサの命令バッファ22の詳細な構成
を示すブロック図
【図5】同プロセッサの命令レジスタ23周辺の構成を
示すブロック図
【図6】同プロセッサの命令発行制御部31とその周辺
の回路構成を示す図
【図7】同プロセッサが同時発行可能な命令群の命令長
の組み合わせを示す図
【図8】32ビットの定数を扱う処理の一例を示すフロ
ーチャート
【図9】図8に示された処理を図3のプロセッサに行わ
せるプログラムの実行コードの例と実行イメージを示す
【図10】図8に示された処理を命令長が32ビット固
定のVLIW方式の従来のプロセッサに行わせるプログ
ラムの実行コードの例と実行イメージを示す図
【図11】図8に示された処理を、命令長32ビット固
定で命令内に並列実行境界の情報を持たせる方式の従来
のプロセッサに行わせるプログラムの実行コードの例と
実行イメージを示す図
【図12】図8に示された処理を、命令長40ビット固
定で命令内に並列実行境界の情報を持たせる方式の従来
のプロセッサに行わせるプログラムの実行コードの例と
実行イメージを示す図
【図13】従来のプロセッサにおける命令レジスタ周辺
の構成を示すブロック図
【図14】従来のプロセッサにおける命令レジスタ周辺
の構成を示すブロック図
【図15】従来のプロセッサの一例であるGMICRO
/400における命令レジスタ周辺の構成を示すブロッ
ク図
【図16】本発明の別の実施形態のプロセッサにおける
命令レジスタ23周辺の構成を示すブロック図
【符号の説明】
10 並列実行境界情報 11 フォーマット情報 20 命令供給発行部 21 命令フェッチ部 22 命令バッファ 23 命令レジスタ 30 解読部 31 命令発行制御部 32 命令デコーダ 33 第1命令デコーダ 34 第2命令デコーダ 35 第3命令デコーダ 40 実行部 41 実行制御部 42 PC部 43 レジスタファイル 44 第1演算部 45 第2演算部 46 第3演算部 47 オペランドアクセス部 48、49 データバス 50 ユニットキュー 221 命令バッファA 222 命令バッファB 223 命令バッファ制御部 224a〜224d セレクタ 231 命令レジスタA 232 命令レジスタB 233 命令レジスタC 234 命令レジスタD
フロントページの続き (72)発明者 高山 秀一 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 小谷 謙介 大阪府門真市大字門真1006番地 松下電器 産業株式会社内

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 一語が複数でかつ所定数の語素からなる
    複合命令を実行するVLIW方式のプロセッサであっ
    て、 実行の単位となる単位命令が一または複数の前記語素か
    ら構成され、かつ前記単位命令を構成する前記語素の数
    が少なくとも二通りあることを特徴とするプロセッサ。
  2. 【請求項2】 前記単位命令を構成する前記語素の数に
    関する語数情報が、前記単位命令内に明示的に含まれる
    ことを特徴とする請求項1記載のプロセッサ。
  3. 【請求項3】 一語が複数の語素からなる複合命令を実
    行し、実行の単位となる単位命令が一または複数の前記
    語素から構成され、かつ前記単位命令を構成する前記語
    素の数が少なくとも二通りあるプロセッサであって、 記憶装置から前記複合命令を読み出す複合命令読み出し
    手段と、 前記複合命令読み出し手段により読み出された前記複合
    命令中の前記語素から、いずれかの前記語素内に含まれ
    る前記単位命令を構成する前記語素の数に関する語数情
    報に基づいて、前記単位命令を組み立てて解読する解読
    手段とを備えることを特徴とするプロセッサ。
  4. 【請求項4】 前記解読手段は、 前記語素の一定数ごとに区切られた前記複合命令をそれ
    ぞれ解読する複数の単位解読手段と、 前記語数情報に基づいて前記単位解読手段のいくつかの
    解読を無効化する解読制御手段とから構成されることを
    特徴とする請求項3記載のプロセッサ。
  5. 【請求項5】 前記解読制御手段は、前記語数情報に基
    づいて、命令中のオペレーションに関する記述を解読し
    ていない前記単位解読手段に対して前記無効化を行うこ
    とを特徴とする請求項4記載のプロセッサ。
  6. 【請求項6】 前記一定数は、前記単位命令を構成する
    前記語素の最小の数であることを特徴とする請求項5記
    載のプロセッサ。
  7. 【請求項7】 前記プロセッサは、一語が複数でかつ所
    定数の語素からなる複合命令を実行するVLIW方式の
    プロセッサであって、 さらに、前記複合命令が一語に含み得る前記単位命令の
    数に等しい数の、前記単位命令を実行する実行手段を備
    えることを特徴とする請求項3から6のいずれか1項に
    記載のプロセッサ。
  8. 【請求項8】 前記単位命令は、第1の数の前記語素か
    ら構成される単位命令と、前記第1の数より大きい第2
    の数の前記語素から構成される単位命令とがあり、 前記第2の数の前記語素から構成される単位命令の内に
    あって、前記第1の数の前記語素から構成される単位命
    令に相当する部分からはみ出す部分の語素には、命令中
    の数値に関する記述のみが配置されることを特徴とする
    請求項1から7のいずれか1項に記載のプロセッサ。
  9. 【請求項9】 前記複合命令中の前記単位命令と該単位
    命令に後続する単位命令とが並列に実行できるか否かを
    示す並列実行情報が、前記複合命令内に明示的に含まれ
    ることを特徴とする請求項1または2記載のプロセッ
    サ。
  10. 【請求項10】 前記並列実行情報が、並列に実行でき
    る前記単位命令の群と後続する前記群との境界に関する
    情報であることを特徴とする請求項9記載のプロセッ
    サ。
  11. 【請求項11】 前記プロセッサは、 記憶装置から前記複合命令を読み出す複合命令読み出し
    手段と、 前記複合命令読み出し手段により読み出された前記複合
    命令中の前記語素から、前記語数情報と前記並列実行情
    報とに基づいて前記命令単位を組み立てて解読する解読
    手段とを備えることを特徴とする請求項9または10記
    載のプロセッサ。
  12. 【請求項12】 前記解読手段は、 前記語素の一定数ごとに区切られた前記複合命令をそれ
    ぞれ解読する複数の単位解読手段と、 前記語数情報と前記並列実行情報とに基づいて前記単位
    解読手段のいくつかの解読を無効化する解読制御手段と
    から構成されることを特徴とする請求項11記載のプロ
    セッサ。
JP08336898A 1998-03-30 1998-03-30 プロセッサ Expired - Fee Related JP3451921B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP08336898A JP3451921B2 (ja) 1998-03-30 1998-03-30 プロセッサ
US09/280,777 US6324639B1 (en) 1998-03-30 1999-03-29 Instruction converting apparatus using parallel execution code
US10/720,030 USRE41751E1 (en) 1998-03-30 2003-11-24 Instruction converting apparatus using parallel execution code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP08336898A JP3451921B2 (ja) 1998-03-30 1998-03-30 プロセッサ

Publications (2)

Publication Number Publication Date
JPH11282674A true JPH11282674A (ja) 1999-10-15
JP3451921B2 JP3451921B2 (ja) 2003-09-29

Family

ID=13800496

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08336898A Expired - Fee Related JP3451921B2 (ja) 1998-03-30 1998-03-30 プロセッサ

Country Status (1)

Country Link
JP (1) JP3451921B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1251425A2 (en) * 2001-04-18 2002-10-23 Fujitsu Limited Very long instruction word information processing device and system
JP2007531133A (ja) * 2004-03-31 2007-11-01 イセラ・インコーポレーテッド 二重経路プロセッサの処理制御のための装置および方法
JP2007531134A (ja) * 2004-03-31 2007-11-01 イセラ・インコーポレーテッド 非対称二重経路処理のための装置および方法
US7401204B1 (en) 1999-10-01 2008-07-15 Fujitsu Limited Parallel Processor efficiently executing variable instruction word
JP2011181100A (ja) * 2011-05-19 2011-09-15 Panasonic Corp プロセッサ、及び並列命令実行対応デバッグ装置
US8484441B2 (en) 2004-03-31 2013-07-09 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401204B1 (en) 1999-10-01 2008-07-15 Fujitsu Limited Parallel Processor efficiently executing variable instruction word
EP1251425A2 (en) * 2001-04-18 2002-10-23 Fujitsu Limited Very long instruction word information processing device and system
EP1251425A3 (en) * 2001-04-18 2003-01-02 Fujitsu Limited Very long instruction word information processing device and system
JP2007531133A (ja) * 2004-03-31 2007-11-01 イセラ・インコーポレーテッド 二重経路プロセッサの処理制御のための装置および方法
JP2007531134A (ja) * 2004-03-31 2007-11-01 イセラ・インコーポレーテッド 非対称二重経路処理のための装置および方法
US7949856B2 (en) 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit
US8484441B2 (en) 2004-03-31 2013-07-09 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths
US8484442B2 (en) 2004-03-31 2013-07-09 Icera Inc. Apparatus and method for control processing in dual path processor
US9047094B2 (en) 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
US9477475B2 (en) 2004-03-31 2016-10-25 Nvidia Technology Uk Limited Apparatus and method for asymmetric dual path processing
JP2011181100A (ja) * 2011-05-19 2011-09-15 Panasonic Corp プロセッサ、及び並列命令実行対応デバッグ装置

Also Published As

Publication number Publication date
JP3451921B2 (ja) 2003-09-29

Similar Documents

Publication Publication Date Title
US5163139A (en) Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
US6490673B1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
KR100267097B1 (ko) 슈퍼스칼라 프로세서에서 간단한 비의존성 파이프라인 인터록 제어로서 판독되는 지연된 저장 데이터
US6418527B1 (en) Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6829696B1 (en) Data processing system with register store/load utilizing data packing/unpacking
US7600096B2 (en) Coprocessor extension architecture built using a novel split-instruction transaction model
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
US5881307A (en) Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
JP2816248B2 (ja) データプロセッサ
EP1102163A2 (en) Microprocessor with improved instruction set architecture
EP1470476A2 (en) Configurable data processor with multi-length instruction set architecture
US6950926B1 (en) Use of a neutral instruction as a dependency indicator for a set of instructions
US9021236B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
KR19980079301A (ko) 레지스터 파일 판독을 감소시키는 벡터 프로세서 디자인
US7139899B2 (en) Selected register decode values for pipeline stage register addressing
CN108139911B (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
US6324639B1 (en) Instruction converting apparatus using parallel execution code
JPH11282674A (ja) プロセッサ
US7010677B2 (en) Data processor speeding up repeat processing by inhibiting remaining instructions after a break in a repeat block
US20020116599A1 (en) Data processing apparatus
US6889320B1 (en) Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
US7024540B2 (en) Methods and apparatus for establishing port priority functions in a VLIW processor
CN111984314A (zh) 使用位反转顺序的矢量存储
CN111984313A (zh) 矢量位转置
US20070055851A1 (en) Zero overhead branching and looping in time stationary processors

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070718

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080718

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090718

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090718

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100718

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120718

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120718

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130718

Year of fee payment: 10

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees