[go: up one dir, main page]

JP3451921B2 - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JP3451921B2
JP3451921B2 JP08336898A JP8336898A JP3451921B2 JP 3451921 B2 JP3451921 B2 JP 3451921B2 JP 08336898 A JP08336898 A JP 08336898A JP 8336898 A JP8336898 A JP 8336898A JP 3451921 B2 JP3451921 B2 JP 3451921B2
Authority
JP
Japan
Prior art keywords
instruction
unit
length
processor
bit length
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.)
Expired - Fee Related
Application number
JP08336898A
Other languages
English (en)
Other versions
JPH11282674A (ja
Inventor
岳人 瓶子
哲也 田中
信生 桧垣
秀一 高山
謙介 小谷
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 Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
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)

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

Claims (27)

    (57)【特許請求の範囲】
  1. 【請求項1】 可変長のビット長からなる実行単位に含ま
    れる可変長のビット長からなる単位命令を並列実行でき
    るプロセッサであって、 命令を順次フェッチし、出力する命令供給発行部と、 複数の解読手段を備え、前記命令供給発行部より出力さ
    れた命令を解読する解読部と、 前記解読部により解読された命令を実行する実行部とを
    備え、 前記単位命令のうち最小のビット長の単位命令以外は、
    前記解読手段により解読される部分と前記解読手段によ
    り解読されない部分とを有し、 前記実行単位の最大ビット長は、前記複数の解読手段の
    合計のビット長よりも大きいことを特徴とするプロセッ
    サ。
  2. 【請求項2】 前記実行単位が最大ビット長の場合には、
    前記実行単位の最後の単位命令が最大ビット長からなる
    単位命令であることを特徴とする請求項1記載のプロセ
    ッサ。
  3. 【請求項3】 最大のビット長の前記単位命令は、最小の
    ビット長の単位命令と同じビット長のオペレーションを
    含んだ語素と定数のみで構成された語素からなり、 前記単位命令はビット長に関わらず1つの解読手段によ
    って前記最小のビット長の部分が解読されることを特徴
    とする請求項1又は2記載のプロセッサ。
  4. 【請求項4】 前記プロセッサは、さらに、前記解読部に
    よって解読する対象となる命令を格納する命令レジスタ
    を有し、 前記命令レジスタと前記解読手段とは1対1に対応して
    いることを特徴とする請求項2から3のいずれかに記載
    のプロセッサ。
  5. 【請求項5】 前記解読手段は、前記最大のビット長の単
    位命令を解読する場合には、前記定数を格納した前記命
    令レジスタに対応する解読手段を無効化することを特徴
    とする請求項4記載のプロセッサ。
  6. 【請求項6】 前記単位命令が1または複数の語素から構
    成されることを特徴とする請求項1から5いずれかに記
    載のプロセッサ。
  7. 【請求項7】前記命令発行供給部は所定数の語素を単位
    として、前記解読部に命令を出力し、 前記単位命令の各々は、前記所定数の語素における場所
    により、前記複数の解読手段のいずれに入力されるかが
    一意に決まることを特徴とする請求項6記載のプロセッ
    サ。
  8. 【請求項8】 前記実行単位に、並列度に関する情報が明
    示的に付与されることを特徴とする請求項1から7いず
    れかに記載のプロセッサ。
  9. 【請求項9】 前記並列度に関する情報が、前記実行単位
    の境界に関する情報であることを特徴とする請求項8記
    載のプロセッサ。
  10. 【請求項10】 単位命令の長さに関する情報が、各々の
    単位命令中に明示的に付与されることを特徴とする請求
    項1から9いずれかに記載のプロセッサ。
  11. 【請求項11】 前記解読部が発行する解読結果の長さを
    制御する命令発行制御部をさらに備えることを特徴とす
    る請求項1から10いずれかに記載のプロセッサ。
  12. 【請求項12】 前記解読手段の各々の解読結果を有効と
    するか無効とするかを決定する命令発行制御部をさらに
    備えることを特徴とする請求項1から11いずれかに記
    載のプロセッサ。
  13. 【請求項13】 前記プロセッサが実行する命令列が、前
    記実行単位へと静的にスケジューリングされることを特
    徴とする請求項1から12いずれかに記載のプロセッ
    サ。
  14. 【請求項14】 可変長のビット長からなる実行単位に含
    まれる可変長のビット長からなる単位命令を最大N
    (N:2以上の整数)個並列実行できるプロセッサであ
    って、 前記実行単位のビット長は、命令フェッチする命令長に
    は限られず可変であり、 前記単位命令のうち最大のビット長のものをN個並列実
    行する実行単位のビット長よりも短い所定のビット長以
    下の実行単位のみを解読することを特徴とするプロセッ
    サ。
  15. 【請求項15】前記命令フェッチする命令長よりも長い
    実行単位を解読することが可能であることを特徴とする
    請求項14記載のプロセッサ。
  16. 【請求項16】 可変長のビット長からなる実行単位に含
    まれる可変長のビット長からなる単位命令を最大N
    (N:2以上の整数)個並列実行できるプロセッサであ
    って、 前記実行単位には、並列度に関する情報が明示的に付与
    されており、 前記単位命令のうち最大のビット長のものをN個並列実
    行する実行単位のビット長よりも短い所定のビット長以
    下の実行単位のみを解読することを特徴とするプロセッ
    サ。
  17. 【請求項17】 前記プロセッサは命令を解読する解読部
    を有し、 前記解読部には、前記単位命令のうち最大のビット長の
    ものをN個並列実行する実行単位のビット長よりも短い
    ビット長の命令が供給されることを特徴とする請求項1
    4から16いずれかに記載のプロセッサ。
  18. 【請求項18】 可変長のビット長からなる実行単位に含
    まれる可変長のビット長からなる単位命令を最大N個並
    列実行できるプロセッサであって、 前記単位命令の長さは最大をMビット(M:2以上の整
    数)として複数通りあ り、 第1の固定長のビット長を単位として命令フェッチし、
    第2の固定長のビット長を単位として出力する命令供給
    発行部と、 前記命令供給発行部より出力された前記第2の固定長の
    ビット長のうち、可変長のビット長の解読結果を発行す
    る解読部とを備え、 前記第2の固定長は、M×Nビットより短い長さに制限
    されていることを特徴とするプロセッサ。
  19. 【請求項19】 前記第2の固定長が前記第1の固定長よ
    りも長いことを特徴とする請求項18記載のプロセッ
    サ。
  20. 【請求項20】 前記プロセッサが並列に実行する前記単
    位命令のビット長の組み合わせが所定の制限を満たすよ
    うに、前記実行単位が静的にスケジューリングされてい
    ることを特徴とする請求項19記載のプロセッサ。
  21. 【請求項21】 前記所定の制限は、前記第2の固定長の
    ビット長を全て発行する場合には、前記第2の固定長の
    ビット長のうち最後尾にはビット長がMビットからなる
    単位命令が配置される制限であることを特徴とする請求
    項20記載のプロセッサ。
  22. 【請求項22】 前記所定の制限は、前記解読部へ出力さ
    れるビット長のうちオペコードが先頭から所定長以内に
    配置されるように設けられた制限であることを特徴とす
    る請求項20記載のプロセッサ。
  23. 【請求項23】 前記実行単位に、並列度に関する情報が
    明示的に付与されることを特徴とする請求項14または
    18記載のプロセッサ。
  24. 【請求項24】前記並列度に関する情報が、前記実行単
    位の境界であることを特徴とする請求項23記載のプロ
    セッサ。
  25. 【請求項25】 単位命令の長さに関する情報が、各々の
    単位命令中に明示的に付与されることを特徴とする請求
    項14から24いずれかに記載のプロセッサ。
  26. 【請求項26】前記解読部が発行する解読結果の長さを
    制御する命令発行制御部をさらに備えることを特徴とす
    る請求項17から22いずれかに記載のプロセッサ。
  27. 【請求項27】前記プロセッサが実行する命令列が、前
    記実行単位へと静的にスケジューリングされることを特
    徴とする請求項14から26いずれかに記載のプロセッ
    サ。
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 JPH11282674A (ja) 1999-10-15
JP3451921B2 true 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)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3730455B2 (ja) 1999-10-01 2006-01-05 富士通株式会社 情報処理装置及び情報処理方法
JP2002318687A (ja) * 2001-04-18 2002-10-31 Fujitsu Ltd 情報処理装置及び計算機システム
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
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
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
JP2011181100A (ja) * 2011-05-19 2011-09-15 Panasonic Corp プロセッサ、及び並列命令実行対応デバッグ装置

Also Published As

Publication number Publication date
JPH11282674A (ja) 1999-10-15

Similar Documents

Publication Publication Date Title
US6829696B1 (en) Data processing system with register store/load utilizing data packing/unpacking
US7937559B1 (en) System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
US5922066A (en) Multifunction data aligner in wide data width processor
US5923862A (en) Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions
US7600096B2 (en) Coprocessor extension architecture built using a novel split-instruction transaction model
EP1102163A2 (en) Microprocessor with improved instruction set architecture
EP1126368A2 (en) Microprocessor with non-aligned circular addressing
JP2816248B2 (ja) データプロセッサ
US5881307A (en) Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
JPH117387A (ja) Vliwプロセッサ
JP2002333978A (ja) Vliw型プロセッサ
JPH09311786A (ja) データ処理装置
JPH11249894A (ja) 処理デバイスに命令ストリームを供給する方法及び装置
US7139899B2 (en) Selected register decode values for pipeline stage register addressing
JP2001134436A (ja) 効率的な粒度のシフトとマージの一方または両方の命令をそなえたプロセッサの回路、システム及び方法
CN108139911B (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
CN113924550A (zh) 直方图运算
JP3789583B2 (ja) データ処理装置
US5941984A (en) Data processing device
JP3451921B2 (ja) プロセッサ
JP3412462B2 (ja) プロセッサ
JP2002544587A (ja) デジタル信号プロセッサ計算コア
US6889320B1 (en) Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
US6438680B1 (en) Microprocessor
US7024540B2 (en) Methods and apparatus for establishing port priority functions in a VLIW processor

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