JP2000222209A - プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 - Google Patents

プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体

Info

Publication number
JP2000222209A
JP2000222209A JP11333978A JP33397899A JP2000222209A JP 2000222209 A JP2000222209 A JP 2000222209A JP 11333978 A JP11333978 A JP 11333978A JP 33397899 A JP33397899 A JP 33397899A JP 2000222209 A JP2000222209 A JP 2000222209A
Authority
JP
Japan
Prior art keywords
instruction
register
information
area
unit
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
JP11333978A
Other languages
English (en)
Other versions
JP4125847B2 (ja
Inventor
Takehito Heiji
岳人 瓶子
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 JP33397899A priority Critical patent/JP4125847B2/ja
Publication of JP2000222209A publication Critical patent/JP2000222209A/ja
Application granted granted Critical
Publication of JP4125847B2 publication Critical patent/JP4125847B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 複数の命令を1のサイクルにおいて実行する
プロセッサにおいて、並列処理を行う場合に、実行サイ
クル数を削減することができるプロセッサ及びコンパイ
ル装置を提供する。 【解決手段】 レジスタR0〜R31は、それぞれ上位
32ビットの領域と下位32ビットの領域に分かれてい
る。レジスタ書込制御部431は、1のサイクルで発行
された各命令における書き込むレジスタと書き込み位置
(上位又は下位のいずれか)を示す情報をセレクタ43
21、4322へ出力する。セレクタ4321、432
2は、それぞれ、第1演算部44、第2演算部45又は
第3演算部46から出力される各データのうちいずれか
1のデータを選択し、選択したデータをいずれか1のレ
ジスタの上位及び下位へそれぞれ書き込む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサ、コン
パイル装置及びコンパイルプログラムを記録している記
録媒体に関し、特に前記プロセッサにおける並列処理に
おいて実行サイクル数の削減を図る技術に関する。
【0002】
【従来の技術】近年、マイクロプロセッサが組み込まれ
ている製品が高機能化し、また高速化することに伴い、
さらに高い処理性能を持つマイクロプロセッサ(以下、
単に「プロセッサ」という。)が望まれている。一般
に、プロセッサ上での複数の命令のスループットを高め
るために、次に示すパイプライン方式が採用されてい
る。パイプライン方式によると、命令は、連続して実行
される複数の小さい単位命令に分割され、命令が実行さ
れる過程は、連続する複数の小さい過程(ステージと呼
ばれる)に分割され、プロセッサは、各ステージに対応
する別々の実行部(ハードウェア)を有する。各単位命
令が、各ステージにおいて各実行部により順次実行され
ることより、1命令が実行される。前記命令に続く命令
が実行される場合には、前記命令より1ステージ分だけ
遅れて、各単位命令が、各ステージにおいて各実行部に
より実行される。このようにして、複数の命令が並行し
て実行される。
【0003】また、さらなる性能向上のために、個々の
命令レベルで並列処理を行う方式が採用されている。こ
こで、命令レベルでの並列処理とは、1マシンサイクル
において複数の命令を同時に実行することであり、ダイ
ナミックスケジューリングによるものとスタティックス
ケジューリングによるものとがある。ダイナミックスケ
ジューリングによるものの代表例としてスーパースカラ
方式がある。この方式では、プロセッサ上で複数の命令
が実行されるときに、命令コードが解読され、その後、
解読された命令コードにより、プロセッサの命令発行制
御部(ハードウェア)が複数の命令間の依存関係を解析
して並列実行可能か否かを判定し、プロセッサは、並列
実行可能な適切な組み合わせの命令を並列実行する。
【0004】スタティックスケジューリングによるもの
の代表例としてVLIW(VeryLong Inst
ruction Word)方式がある。この方式は、
実行形式コード生成時にコンパイラ等により静的に複数
の命令間の依存関係を解析し、解析結果に基づいて命令
コードの移動を行って実行効率の良い命令ストリームを
生成する。一般のVLIW方式では、同時実行可能な複
数の命令を一つの固定長の命令供給単位(ここでは「パ
ケット」と呼ぶ)に記述する。
【0005】上記のいずれのスケジューリング方法にお
いても、命令並列処理に際して発生するデータの依存関
係によるハザードが回避される。具体的には、それぞれ
の命令においてデータが参照されるレジスタ名及びデー
タが格納されるレジスタ名に関する情報を基にして、あ
るレジスタに値を格納する命令とその格納値を参照する
命令とが同一サイクル内において発行されないように制
御される。上記ダイナミックスケジューリングの場合に
は、実行時に前記命令発行制御部が、上記2命令を並列
実行せず逐次実行するように制御する。上記スタティッ
クスケジューリングの場合には、コンパイル時にコンパ
イラが、同一サイクルに発行される命令グループ内にデ
ータ依存関係にある命令の組み合わせが含まれないよう
にスケジューリングする。
【0006】近年、信号処理性能強化のため、基本命令
に加えて、基本命令よりも大きいサイズのデータを扱う
メディア処理命令を採用するプロセッサが増えてきてい
る。メディア処理命令では、基本命令で扱うレジスタよ
りも大きい幅を持つレジスタに複数のデータを格納し、
それらのデータを並列に処理することにより信号処理性
能の向上を図っている。メディア処理命令を備えるプロ
セッサの中には、メディア処理命令専用のレジスタを備
えるのではなく、レジスタを基本命令とメディア処理命
令で共用し、基本命令においてはレジスタの一部にのみ
書き込みを行うようにしているプロセッサがある。
【0007】
【発明が解決しようとする課題】このようなプロセッサ
において、命令コード中に示されたレジスタ名を参照す
ることにより複数の命令間の依存関係を解析する前述の
命令発行制御方法を用いると、例えばあるレジスタの上
位半分のみを更新する命令と、そのレジスタの下位半分
のみを参照する命令との間には、命令コード中に示され
るレジスタ名が同一であるので、データ依存の関係が存
在するとみなされ、これらの命令は並列実行せず逐次実
行されることになるという問題点がある。ここで、デー
タ依存の関係とは、ある資源にデータを格納する命令
と、そのデータを参照する命令との間の依存関係をい
う。
【0008】上記の問題点を解決するために、本発明
は、複数の命令を1のサイクルにおいて実行するプロセ
ッサにおいて、並列処理を行う場合に、実行サイクル数
を削減することができるプロセッサ、コンパイル装置及
びコンパイルプログラムを記録している記録媒体を提供
することを目的とする。
【0009】
【課題を解決するための手段】上記目的を達成するため
に、本発明は、複数の命令を1のサイクルにおいて実行
するプロセッサであって、レジスタと命令読出手段と解
読手段とアクセス手段とを含み、前記命令読出手段は、
外部のプログラムから少なくとも第1命令と第2命令と
を含む複数の命令を読み出し、前記第1命令は、1のレ
ジスタの全部又は部分である第1領域へのアクセス指示
を含み、前記第2命令は、前記レジスタの全部又は部分
である第2領域へのアクセス指示を含み、ここで、前記
第1領域が前記レジスタの全部の領域である場合には、
前記第2領域は前記レジスタの部分の領域であり、前記
第2領域が前記レジスタの全部の領域である場合には、
前記第1領域は前記レジスタの部分の領域であり、ま
た、前記2個のアクセス指示のうち少なくとも1個は、
前記レジスタの全部又は部分の領域へのデータの格納の
指示であり、前記解読手段は、1のサイクルにおいて、
読み出された命令毎に命令を解読し、命令に含まれる少
なくともレジスタとレジスタの領域とに関する解読情報
を出力し、前記解読情報は、少なくとも前記レジスタと
前記第1領域と前記第2領域とに関する情報を含み、前
記アクセス手段は、1のサイクルにおいて、前記解読情
報に含まれる前記レジスタの前記第1領域へのアクセス
と、前記レジスタの前記第2領域へのアクセスとを実行
する。
【0010】ここで、前記各命令は、並列実行の可否を
示す並列実行情報を含み、前記解読手段は、前記命令に
含まれている並列実行情報を基にして、1のサイクルに
おいて実行する命令の集合を決定する命令発行制御部
と、読み出された前記複数の命令のうち、前記集合に含
まれる命令を解読し、他の命令の解読を停止する命令解
読部とを含むように構成してもよい。
【0011】ここで、前記解読情報は、命令に含まれる
オペコードを含み、前記プロセッサは、さらに、1のサ
イクルにおいて、前記解読情報に含まれるオペコードと
レジスタとレジスタの領域とに関する情報とに基づい
て、命令毎に演算又はメモリアクセスを行い、演算情報
を生成する演算手段を含み、前記演算情報は、前記第1
命令による第1演算情報と、前記第2命令による第2演
算情報とを含み、レジスタへデータを格納する前記アク
セス手段は、前記第1演算情報と、前記第2演算情報
と、他の命令による演算情報とのうちの1の演算情報を
選択し、選択した演算情報の前記第1領域に対応する情
報を1のレジスタの前記第1領域へ書き込む第1選択部
と、前記第1演算情報と、前記第2演算情報と、他の命
令による演算情報とのうちの1の演算情報を選択し、選
択した演算情報の前記第2領域に対応する情報を1のレ
ジスタの前記第2領域へ書き込む第2選択部と、1のサ
イクルにおいて、前記解読情報に含まれる前記レジスタ
と前記第1領域とに関する情報に基づいて、前記第1選
択部に対して、前記第1演算情報を選択し、前記第1演
算情報を前記レジスタの前記第1領域へ書き込むように
制御し、前記解読情報に含まれる前記レジスタと前記第
2領域とに関する情報に基づいて、前記第2選択部に対
して、前記第2演算情報を選択し、前記第2演算情報を
前記レジスタの前記第2領域へ書き込むように制御する
レジスタ書込制御部とを含むように構成してもよい。
【0012】ここで、前記第1命令に含まれるアクセス
の対象となる前記第1領域と、前記第2命令に含まれる
アクセスの対象となる前記第2領域とは、交わりがな
く、それぞれ部分の領域であり、前記第1命令は、前記
レジスタの第1領域へのデータの格納指示を含み、前記
第2命令は、前記レジスタの前記第2領域からのデータ
の参照指示を含み、前記アクセス手段は、1のサイクル
において、レジスタの第1領域へのデータの格納と、前
記レジスタの第2領域からのデータの参照とを実行する
ように構成してもよい。
【0013】ここで、前記第1命令に含まれるアクセス
の対象となる前記第1領域と、前記第2命令に含まれる
アクセスの対象となる前記第2領域とは、交わりがな
く、それぞれ部分の領域であり、前記第1命令は、前記
レジスタの第1領域へのデータの格納指示を含み、前記
第2命令は、前記レジスタの前記第2領域へのデータの
格納指示を含み、前記アクセス手段は、1のサイクルに
おいて、レジスタの第1領域へのデータの格納と、前記
レジスタの第2領域へのデータの格納とを実行するよう
に構成してもよい。
【0014】ここで、前記第1命令に含まれるアクセス
の対象となる前記第1領域と、前記第2命令に含まれる
アクセスの対象となる前記第2領域とは、第3領域にお
いて重なりを有し、前記第1命令は、前記レジスタの第
1領域へのデータの格納指示を含み、前記第2命令は、
前記レジスタの前記第2領域へのデータの格納指示を含
み、前記アクセス手段は、1のサイクルにおいて、レジ
スタの第1領域から第3領域を除く領域へのデータの格
納と、レジスタの第3領域へのデータの格納と、前記レ
ジスタの第2領域から第3領域を除く領域へのデータの
格納とを実行するように構成してもよい。
【0015】ここで、前記アクセス手段は、前記プログ
ラム内において、第1命令及び第2命令のうち、後方に
記録されている命令により、前記レジスタの第3領域へ
のデータの格納を行うように決定するように構成しても
よい。ここで、前記アクセス手段は、あらかじめ命令の
種類毎に優先度を記憶しており、前記優先度を用いて、
第1命令及び第2命令のうち、いずれの命令により、前
記レジスタの第3領域へのデータの格納を行うかを決定
するように構成してもよい。
【0016】ここで、前記解読手段は、命令解読部と命
令発行制御部とを含み、前記命令解読部は、1のサイク
ルにおいて、読み出される命令毎に、命令の解読又は解
読の停止の指示により、命令を解読し命令に含まれる少
なくともレジスタとレジスタの領域とに関する解読情報
を出力し、又は命令の解読を停止し、ここで、前記解読
される複数の命令には、少なくとも前記第1命令と前記
第2命令とが含まれ、前記解読情報は、少なくとも前記
レジスタと前記第1領域と前記第2領域とに関する情報
を含み、前記命令発行制御部は、1のサイクルにおい
て、読み出される命令毎に、命令を解読する指示を前記
命令解読部へ出力することにより、前記命令解読部に対
して各命令を解読するように制御し、前記命令解読部に
よる各命令の解読後に、前記レジスタと前記第1領域と
前記第2領域とに関する情報を含む解読情報を受け取
り、前記第1領域と前記第2領域とが同一領域であるか
否かを判断し、同一領域であると判断する場合に、前記
第2命令の解読を停止する指示を前記命令解読部へ出力
することにより、前記命令解読部に対して前記第2命令
の解読を停止するように制御するように構成してもよ
い。
【0017】ここで、前記命令発行制御部は、命令の種
類と、前記命令がデータを参照し又はデータを格納する
レジスタの領域との組を複数個含む参照格納資源表を含
み、前記命令発行制御部は、前記解読情報から、前記参
照格納資源表を用いて、各命令に含まれるレジスタの領
域に関する情報を取得するように構成してもよい。ま
た、本発明は、高級言語により記述されたソースプログ
ラムからオブジェクトコードを生成するコンパイル装置
であって、高級言語により記述されたソースプログラム
を記憶している記憶手段と、前記記憶手段からソースプ
ログラムを読み出し、読み出したソースプログラムに翻
訳処理を施して、レジスタに関する情報を含む1以上の
実行形式命令から構成される実行形式プログラムを生成
する実行形式コード生成手段と、前記実行形式プログラ
ム中の1以上の実行形式命令を、各実行形式命令に含ま
れるレジスタの一部分の領域に関する情報に基づいて、
並列実行できる複数の実行形式命令が隣接するように並
べ換える命令スケジューリング手段と、並べ換えられた
各実行形式命令を基にして、オブジェクトコードを生成
するオブジェクトコード生成手段とを含む。
【0018】ここで、前記命令スケジューリング手段
は、前記1以上の実行形式命令について、各実行形式命
令が並べられている順序と、各実行形式命令に含まれる
レジスタの一部分の領域に関する情報とに基づいて、各
実行形式命令間の依存関係を示す依存関係情報を生成す
る依存関係解析部と、生成された前記依存関係情報に基
づいて、並列実行可能な命令の集合を決定し、また、前
記実行形式命令を再配置する命令再配置部と、前記決定
された集合毎に、並列実行の可否を示す並列実行情報を
付加する実行境界付加部とを含むように構成してもよ
い。
【0019】ここで、前記依存関係解析部は、実行形式
命令の種類と、前記実行形式命令がデータを参照し、又
はデータを格納するレジスタの一部分の領域との組を複
数個含む参照格納資源表と、各実行形式命令に含まれる
レジスタの一部分の領域に関する情報を参照格納資源表
から取得する資源取得部と、各実行形式命令が並べられ
ている順序と、前記取得したレジスタの一部分の領域に
関する情報とに基づいて、各実行形式命令間の依存関係
を示す依存関係情報を生成する依存関係生成部とを含む
ように構成してもよい。
【0020】
【発明の実施の形態】本発明の実施の形態として、コン
パイル装置及びプロセッサが組み込まれている応用装置
から構成されるプログラム実行システムについて、図面
を用いて詳細に説明する。 I 実施の形態1 本発明に係る1の実施の形態としてのプログラム実行シ
ステム400について説明する。プログラム実行システ
ム400は、図1に示すように、コンパイル装置200
及び応用装置300から構成される。
【0021】コンパイル装置200は、ソースコード記
憶部130、コンパイル部210及びオブジェクトコー
ド記憶部140から構成され、ソースコード記憶部13
0に記憶されているプログラムであるソースコードをコ
ンパイルしてオブジェクトコードを生成し、生成したオ
ブジェクトコードをオブジェクトコード記憶部140へ
書き込む。ここで、前記コンパイルは、命令の並列スケ
ジューリングを含んでいる。ここで、ソースコードは、
高級言語で記述されている。
【0022】応用装置300は、プロセッサ310、R
OM320、RAM330、入力部340、出力部35
0から構成され、コンパイル装置200により生成され
たオブジェクトコードがあらかじめRAM330に記憶
されており、プロセッサ310は、RAM330に記憶
されているオブジェクトコードを読み出して実行する。
応用装置300は、一例としてMPEGデコーダであ
る。
【0023】以下において、プロセッサ310及びコン
パイル装置200について説明する。なお、応用装置3
00及びその構成要素(プロセッサ310を除く)は、
本発明の主題ではないので、説明を省略する。 1 プロセッサ310 プロセッサ310は、コンパイル装置により静的な並列
スケジューリングが施されたオブジェクトコードを実行
することを前提としたプロセッサである。
【0024】ここでは、プロセッサ310が解読実行す
る命令の構成について説明し、その後、プロセッサ31
0の構成及び動作について説明する。 1.1 命令のフォーマット プロセッサ310が解読し実行する命令の構成について
説明する。ここで、前記命令は、オブジェクトコード記
憶部140に記憶されているオブジェクトコード(以
下、単に、命令と呼ぶ)である。
【0025】図2は、プロセッサ310が解読し実行す
る命令のフォーマットを示す図である。この図におい
て、5個の命令15〜19が示されている。プロセッサ
310が解読し実行する各命令は、1個又は2個の命令
構成要素(ここでは「ユニット」と呼ぶ。)により構成
され、各ユニットは、21ビットからなる。つまり、1
個のユニットから構成される21ビット命令と、2個の
ユニットから構成される42ビット命令との2種類の命
令フォーマットが存在する。図2に示される命令15〜
17は、21ビット命令であり、命令18〜19は、4
2ビット命令である。
【0026】各命令は、並列実行境界情報10とフォー
マット情報11とオペコード部12とオペランド部13
とを含む。フォーマット情報11は、1ビットからな
り、命令が21ビット命令及び42ビット命令のいずれ
の命令であるかを示す。フォーマット情報11が“0”
である場合には、命令は、1個のユニットからなる21
ビット命令である。フォーマット情報11が“1”であ
る場合には、命令は、そのユニットとそれに後続するユ
ニットとを連結して構成される2個のユニットからなる
42ビット命令である。
【0027】並列実行境界情報10は、1ビットからな
り、並列実行境界情報10が含まれる命令とそれに後続
する命令との間に並列実行の境界が存在するか否かを示
すものである。具体的には、並列実行境界情報10が
“1”の場合には、その命令と後続命令との間に並列実
行の境界が存在し、並列実行境界情報10が“0”の場
合には、並列実行の境界が存在しないことを示す。な
お、この並列実行境界情報10の利用方法の詳細につい
ては、後で述べる。
【0028】各命令からフォーマット情報11と並列実
行境界情報10とを除いた残りの部分であるオペコード
部12とオペランド部13とにおいて、各命令のオペレ
ーションが指定される。各命令のオペレーションの指定
において、21ビット命令では19ビットの長さ、42
ビット命令では40ビットの長さが使用できる。具体的
には、命令15〜19において、“Op1”、“Op
2”、“Op3”により示されるフィールドは、オペコ
ード部であり、オペレーションの種類を表すオペコード
が指定される。“Rs”及び“Rd”で示されるフィー
ルドは、オペランド部であり、“Rs”で示されるフィ
ールドでは、ソースオペランドとなるレジスタのレジス
タ番号が指定され、“Rd”で示されるフィールドで
は、デスティネーションオペランドとなるレジスタのレ
ジスタ番号が指定される。
【0029】また、命令16及び命令18において、
“imm5”及び“imm32”で示されるフィールド
は、オペランド部であり、それぞれ5ビットと32ビッ
トの演算用定数オペランドが指定される。命令17及び
命令19において、“disp13”及び“disp3
1”で示されるフィールドは、オペランド部であり、そ
れぞれ13ビットと31ビットの変位(ディスプレース
メント)が指定される。
【0030】32ビットの定数などの長い定数を扱う転
送命令や演算命令、大きなディスプレースメントを指定
する分岐命令は42ビット命令で定義され、それらを除
く他の命令は21ビット命令で定義される。なお、図2
を見てわかるように、42ビット命令の構成要素である
2個のユニットのうち、後ろの方のユニット(2番目の
ユニット)には、長い定数やディスプレースメントの一
部のみが配置され、オペコードは配置されない。 1.2 アーキテクチャの概要 次に、プロセッサ310のアーキテクチャの概要につい
て説明する。
【0031】プロセッサ310は、コンパイル装置によ
り静的な並列スケジューリングが施されたオブジェクト
コードを実行することを前提としている。プロセッサ3
10へ供給される命令の単位と、プロセッサ310にお
いて実行される命令の単位とについて、図3を用いて説
明する。プロセッサ310においては、サイクル毎に6
4ビット固定長の命令が供給される。ここでは、1個の
命令供給単位を「パケット」と呼び、1個の命令供給単
位は、3個のユニットを含む。なお、3個分のユニット
の長さは63ビットであるが、残りの1ビットについて
は使用しない。
【0032】命令供給単位の一例を図3に示す。この図
において、符号521、522及び523は、それぞれ
命令供給単位を示しており、命令供給単位521は、ユ
ニットA501、ユニットB502及びユニットC50
3を含み、命令供給単位522は、ユニットD504、
ユニットE505及びユニットF506を含み、命令供
給単位523は、ユニットG507、ユニットH508
及びユニットI509を含む。また、この図において、
符号511、512、513及び514は、並列実行の
境界を示している。
【0033】プロセッサ310においては、1サイクル
で並列実行の境界までのユニットにより示される命令が
同時に実行される。ここで、同時に実行される1個以上
の命令を「実行グループ」と呼ぶ。つまり、各サイクル
において並列実行境界情報が“1”である命令までの命
令が並列実行されることになる。実行グループの一例を
図3に示す。この図において、符号531、532、5
33及び534は、それぞれ実行グループを示してい
る。実行グループ531は、ユニットA541及びユニ
ットB542を含み、実行グループ532は、ユニット
C543、ユニットD544、ユニットE545及びユ
ニットF546を含み、実行グループ533は、ユニッ
トG547を含み、実行グループ534は、ユニットH
548及びユニットI549とを含む。
【0034】ユニットA541及びユニットB542に
より示される命令が並列実行される。次に、ユニットC
543、ユニットD544、ユニットE545及びユニ
ットF546により示される命令が並列実行される。次
に、ユニットG547により示される命令が実行され
る。次に、ユニットH548及びユニットI549によ
り示される命令が並列実行される。
【0035】プロセッサ310へ供給されながら実行さ
れずに残ったユニットは、命令バッファに蓄積され、次
のサイクル以降で実行の対象となる。つまり、プロセッ
サ310のアーキテクチャでは、固定長のパケット単位
で命令を供給しておき、静的に求められた並列実行の境
界を示す情報を元に、各サイクルにおいて並列度に応じ
た適切な数のユニットを実行していく、ということにな
る。この手法をとることにより、従来の固定長命令のV
LIW方式のプロセッサで発生していた無動作命令(n
op命令)が全く無くなり、コードサイズを削減するこ
とができる。
【0036】また、プロセッサ310は、“add”命
令(加算)や“ld”命令(メモリからのロード)など
の基本命令に加えて、SIMD(Single Instructionst
ream Multiple Data stream )型の処理を行うSIMD
命令を実行する。このSIMD命令によってデータ並列
を実現し、信号処理性能の向上を図っている。基本命令
が32ビット長のデータを扱うのに対して、SIMD命
令では64ビット長のデータを扱う。ただし、SIMD
命令専用のレジスタファイルは用意されておらず、64
ビット幅の汎用レジスタを基本命令とSIMD命令とで
共用する。基本命令実行時には、汎用レジスタの下位3
2ビットしか使用されない。
【0037】SIMD命令には、“vaddw”命令
(32ビットデータの加算を2個含む。)、“vadd
h”命令(16ビットデータの加算を4個含む。)など
のデータ並列演算命令や、“vchng”命令(64ビ
ットレジスタの上位32ビットと下位32ビットとを入
れ換える。)などのデータの転送や組み替えを行う命令
が含まれる。 1.3 プロセッサ310のハードウェア構成 次に、プロセッサ310のハードウェア構成について図
4を用いて説明する。ここで、図4は、プロセッサ31
0のハードウェア構成を示すブロック図である。
【0038】プロセッサ310は、1サイクルに最大3
個の命令を並列実行するプロセッサであり、大きく分け
て、命令供給発行部20、解読部30、実行部40から
構成される。 1.3.1 命令供給発行部20 命令供給発行部20は、命令フェッチ部21、命令バッ
ファ22及び命令レジスタ23から構成され、図示して
いない外部メモリ(応用装置300においては、RAM
330)から命令群を読み出し、解読部30へ供給す
る。 (1)命令フェッチ部21 命令フェッチ部21は、32ビットのIA(インストラ
クションアドレス)バス及び64ビットのID(インス
トラクションデータ)バスを通じて、前記外部メモリと
接続されている。
【0039】命令フェッチ部21は、PC部42からア
ドレスを受け取る。次に、IAバス及びIDバスを通じ
て、前記アドレスにより示される位置に格納されている
ユニット群を前記外部メモリからフェッチする。ここ
で、前記ユニット群は、3個のユニットからなる。次
に、フェッチしたユニット群の最上位に1ビットの情報
を付加して、64ビット長のパケットを生成し、生成し
たパケットを命令バッファ22に供給する。なお、64
ビットのパケットの最上位に付加された1ビットの情報
が使用されることはない。 (2)命令バッファ22 命令バッファ22は、63ビットのバッファを2個備え
ており、命令フェッチ部21からパケットの供給を受
け、パケットの最上位の1ビットを除去した残りの63
ビットを蓄積する。命令バッファ22は、63ビットの
バッファを2個備えているので、最大6個のユニットを
蓄積できる。命令バッファ22はキュー構造をとってお
り、命令バッファ22に蓄積されたユニットは、蓄積さ
れた順に命令レジスタ23の適切なレジスタに出力され
る。
【0040】また、命令バッファ22は、制御信号線K
41を介して、後述する解読部30の命令発行制御部3
1に接続されており、命令発行制御部31から発行され
ずに残ったユニットを示す情報を受け取る。前記情報を
受け取った場合には、前記情報により示される発行され
ずに残ったユニットを含めて、蓄積された順に蓄積され
たユニットを命令レジスタ23の適切なレジスタに出力
する。 (3)命令レジスタ23 命令レジスタ23は、図4に示すように、命令レジスタ
A231、命令レジスタB232、命令レジスタC23
3及び命令レジスタD234から構成される。命令レジ
スタA231〜D234は、それぞれ21ビットレジス
タであり、命令バッファ22から送られてきたユニット
をこれらの命令レジスタの順に保持する。
【0041】図5は、命令レジスタ23及びその周辺の
構成要素の構成を示すブロック図である。この図におい
て、符号K12、K13、K21、K22、K31、K
32、K33、K41により示される破線は、制御信号
線を表す。この図に示すように、命令レジスタA231
及び命令レジスタB232は、それぞれ、制御信号線K
21及びK22を介して、後述する命令発行制御部31
と接続されている。 1.3.2 解読部30 解読部30は、図4に示すように、命令発行制御部31
と命令デコーダ32とから構成され、命令レジスタ23
に保持されている命令を解読し、その解読結果に応じ
て、解読結果及び制御信号を実行部40へ出力する。 (1)命令発行制御部31 命令発行制御部31は、命令レジスタ23を構成する2
個のレジスタ(命令レジスタA231〜B232)に保
持されている各ユニットについて、当該ユニット内の並
列実行境界情報とフォーマット情報とを参照することに
より、2個のユニットを2個の命令として扱うように制
御し、又は2個のユニットを1個の命令として扱うよう
に制御し、また、並列実行の境界を越えたユニットにつ
いては、そのユニットの発行を無効化するように制御す
る。
【0042】具体的には、命令発行制御部31は、図6
に示すように、OR回路X1、X2を含む。OR回路X
1は、制御信号線K21を介して、命令レジスタA23
1に接続されている。また、OR回路X2は、制御信号
線K21を介して、命令レジスタA231に接続されて
おり、制御信号線K22を介して、命令レジスタB23
2に接続されている。
【0043】OR回路X1は、制御信号線K21を介し
て、命令レジスタA231に格納されているユニットに
含まれる並列実行境界情報とフォーマット情報とを取得
し、取得した並列実行境界情報とフォーマット情報とに
OR演算を施して無動作命令フラグを生成する。ここ
で、無動作命令フラグは、1ビットからなり、“0”又
は“1”の値をとる。OR回路X1は、生成した無動作
命令フラグを第2命令デコーダ34へ出力する。
【0044】OR回路X2は、制御信号線K21を介し
て、命令レジスタA231に格納されているユニットに
含まれる並列実行境界情報を取得し、制御信号線K22
を介して、命令レジスタB232に格納されているユニ
ットに含まれる並列実行境界情報とフォーマット情報と
を取得し、命令レジスタA231に格納されているユニ
ットに含まれる並列実行境界情報と、命令レジスタB2
32に格納されているユニットに含まれる並列実行境界
情報と、命令レジスタB232に格納されているユニッ
トに含まれるフォーマット情報とにOR演算を施して無
動作命令フラグを生成する。ここで、無動作命令フラグ
は、1ビットからなり、“0”又は“1”の値をとる。
OR回路X2は、生成した無動作命令フラグを第3命令
デコーダ35へ出力する。
【0045】このように、命令発行制御部31は、並列
実行境界情報とフォーマット情報とを参照することによ
り、必要に応じて各命令デコーダへ出力される無動作フ
ラグを設定する。これにより、各命令デコーダにおい
て、命令としてのデコードが無効化される。命令発行制
御部31は、また、各ユニットの並列実行境界情報を用
いて、命令レジスタ23に格納されたユニットの内どこ
までを1サイクルで発行するかを決定し、発行されずに
残ったユニットを示す情報を制御信号線K41を介して
命令バッファ22へ伝達する。
【0046】図5からわかるように、命令デコーダは3
個あり、命令レジスタA231、B232及びC233
は、それぞれ、命令デコーダ33、命令デコーダ34及
び命令デコーダ35に対応しているので、命令としてデ
コードされる可能性のあるユニットは、命令レジスタA
231、命令レジスタB232及び命令レジスタC23
3に格納されたユニットのみである。そこで、ユニット
内の情報を参照して、これらのユニットの中で、42ビ
ット命令の2ユニット目にあたるものや発行されずに残
るものに関しては、命令発行制御部31は、そのユニッ
トの命令としてのデコードを無効化する。42ビット命
令の2ユニット目にあたるユニットは、直前のユニット
が構成する命令の定数オペランドの一部として直接出力
される。
【0047】命令発行制御部31の動作について、具体
例を用いて説明する。図7に示すように、命令レジスタ
A231のユニット(ユニット1)のフォーマット情報
が“1”である場合には、ユニット1と命令レジスタB
232のユニット(ユニット2)とを連結して42ビッ
ト命令とするので、命令発行制御部31は、ユニット2
の命令としてのデコードを無効化するために、“1”が
セットされた無動作命令フラグを制御信号線K12を介
して第2命令デコーダ34へ出力する。このとき、第2
命令デコーダ34は、ユニット2をデコードしない。ユ
ニット2は、ユニット1が構成する命令の定数オペラン
ドの一部として出力される。
【0048】また、図8に示すように、命令レジスタA
231のユニット1のフォーマット情報が“0”、命令
レジスタB232のユニット2のフォーマット情報が
“1”である場合には、ユニット2と命令レジスタC2
33のユニット(ユニット3)とを連結して42ビット
命令とするので、命令発行制御部31は、ユニット3の
命令としてのデコードを無効化するために、“1”がセ
ットされた無動作命令フラグを制御信号線K13を介し
て第3命令デコーダ35へ出力する。このとき、第3命
令デコーダ35は、ユニット3をデコードしない。ユニ
ット3は、ユニット2が構成する命令の定数オペランド
51の一部として出力される。
【0049】このように、命令発行制御部31は、フォ
ーマット情報を参照することにより、必要に応じて各命
令デコーダの無動作フラグを設定し、命令のデコードを
無効化する。次に、図9に示すように、命令レジスタA
231のユニット1の並列実行境界情報が“1”であ
り、フォーマット情報が“0”である場合には、このサ
イクルではユニット1までしか発行されないので、命令
発行制御部31は、ユニット2とユニット3との命令と
してのデコードを無効化するために、“1”がセットさ
れた無動作命令フラグをそれぞれ制御信号線K12、K
13を介して第2命令デコーダ34と第3命令デコーダ
35とへ出力する。このとき、第2命令デコーダ34と
第3命令デコーダ35とは、ユニット2とユニット3と
をデコードしない。ユニット1のみが命令として出力さ
れる。
【0050】また、図10に示すように、命令レジスタ
A231のユニット1の並列実行境界情報が“0”であ
り、命令レジスタB232のユニット2の並列実行境界
情報が“1”であり、ユニット1とユニット2とのフォ
ーマット情報が共に“0”である場合には、このサイク
ルではユニット1からユニット2までの命令しか発行さ
れないので、命令発行制御部31は、ユニット3の命令
としてのデコードを無効化するために、“1”がセット
された無動作命令フラグを制御信号線K13を介して第
3命令デコーダ35へ出力する。このとき、第3命令デ
コーダ35は、ユニット3をデコードしない。
【0051】このように、命令発行制御部31は、命令
レジスタに格納されている各ユニットの並列実行境界情
報を参照することにより、必要に応じて各命令デコーダ
の無動作命令フラグを設定し、命令のデコードを無効化
する。 (2)命令デコーダ32 命令デコーダ32は、図4に示すように、第1命令デコ
ーダ33、第2命令デコーダ34及び第3命令デコーダ
35から構成される。
【0052】第1命令デコーダ33は、図5に示すよう
に、命令レジスタA231から21ビットのユニットを
読み出し、読み出したユニットを解読して、前記ユニッ
トが構成する命令の動作に関する制御信号を生成し、生
成した制御信号を実行部40へ出力し、命令内に置かれ
た定数オペランドを実行部40のデータバス48に転送
する。ここで、第1命令デコーダ33は、1サイクル
に、1個の命令の解読と、制御信号の出力と、定数オペ
ランドの転送とを行う。
【0053】第2命令デコーダ34は、命令発行制御部
31から制御信号線K12を介して無動作命令フラグを
受け取る。受け取った無動作命令フラグが“0”である
場合には、第2命令デコーダ34は、第1命令デコーダ
33と同様に、命令レジスタB232から21ビットの
ユニットを読み出し命令を解読して制御信号を生成し、
生成した制御信号を実行部40へ出力し、命令内に置か
れた定数オペランドを実行部40のデータバス48に転
送する。ここで、第2命令デコーダ34は、1サイクル
に、1個の命令の解読と、制御信号の出力と、定数オペ
ランドの転送とを行う。受け取った無動作命令フラグが
“1”である場合には、第2命令デコーダ34は、無動
作命令としての制御信号を実行部40へ出力する。
【0054】命令レジスタA231と命令レジスタB2
32に格納される各ユニットが42ビット命令を構成す
る場合において、図2の命令フォーマットに示すよう
に、42ビット命令を構成する2つのユニットのうち、
2番目のユニットには定数オペランドの一部しか配置さ
れない。つまり、この2番目のユニットにはオペコード
が存在しないため、この2番目のユニットを第2命令デ
コーダ34に入力する必要がない。そこで、42ビット
命令の定数オペランド50は、図5に示すように、第1
命令デコーダ33が出力したユニット内の定数オペラン
ド50aと、命令レジスタB232から無条件に直接転
送された定数オペランド50bとが連結されて構成され
るものということになる。
【0055】第3命令デコーダ35は、第2命令デコー
ダ34と同様に、命令発行制御部31から制御信号線K
13を介して無動作命令フラグを受け取る。受け取った
無動作命令フラグが“0”である場合には、第3命令デ
コーダ35は、第1命令デコーダ33と同様に、命令レ
ジスタC233から21ビットのユニットを読み出し命
令を解読して制御信号を生成し、生成した制御信号を実
行部40へ出力し、命令内に置かれた定数オペランドを
実行部40のデータバス48に転送する。ここで、第3
命令デコーダ35は、1サイクルに、1個の命令の解読
と、制御信号の出力と、定数オペランドの転送とを行
う。受け取った無動作命令フラグが“1”である場合に
は、第3命令デコーダ35は、無動作命令としての制御
信号を実行部40へ出力する。
【0056】また、上記と同様に、命令レジスタC23
3と命令レジスタD234に格納される各ユニットが4
2ビット命令を構成する場合において、42ビット命令
の定数オペランド52は、図5に示すように、第3命令
デコーダ35が出力したユニット内の定数52aと、命
令レジスタD234から無条件に直接転送された定数5
2bとが連結されて構成されるものということになる。
【0057】上記に説明するように、第2命令デコーダ
34は、命令レジスタA231に格納されたユニットの
並列実行境界情報が“1”であるか、またはそのユニッ
トのフォーマット情報が“1”であるときに無効化され
る。また、第3命令デコーダ35は、命令レジスタA2
31に格納されたユニットもしくは命令レジスタB23
2に格納されたユニットの並列実行境界情報が“1”で
あるか、または命令レジスタB232に格納されたユニ
ットのフォーマット情報が“1”であるときに無効化さ
れる。 1.3.3 実行部40 実行部40は、解読部30での解読結果に基づいて、最
大3つの命令を並列実行する回路ユニットであり、実行
制御部41、PC(プログラムカウンタ)部42、レジ
スタファイル43、第1演算部44、第2演算部45、
第3演算部46、オペランドアクセス部47及びデータ
バス48、49からなる。また、データバス48は、L
1バス、R1バス、L2バス、R2バス、L3バス、R
3バスからなり、データバス49は、D1バス、D2バ
ス、D3バスからからなる。 (1)実行制御部41 実行制御部41は、解読部30の第1命令デコーダ3
3、第2命令デコーダ34又は第3命令デコーダ35か
ら制御信号を受け取り、受け取った制御信号に基づいて
実行部40の各構成要素42〜49を制御する。実行制
御部41は、制御回路や配線から構成され、前記制御回
路は、タイミング制御、動作許可禁止制御、ステータス
管理、割り込み制御等を行う。 (2)PC部42 PC部42は、次に解読実行すべき命令が置かれている
外部メモリ上の位置を示すアドレスを保持している。P
C部42は、保持している前記アドレスを命令供給発行
部20の命令フェッチ部21へ出力する。 (3)第1演算部44、第2演算部45及び第3演算部
46 第1演算部44、第2演算部45及び第3演算部46
は、それぞれ2個のデータに対して算術論理演算を行う
ALU及び乗算器と、シフト演算を行うバレルシフタ
と、入力データの上位32ビットと下位32ビットとを
入れ換えるスワッパを内部に有する。
【0058】第1演算部44は、L1バス及びR1バス
を介してレジスタR0〜R31に格納されている値を取
得し、R1バスを介して第1命令デコーダ33及び命令
レジスタB232から出力される定数オペランドを取得
し、これらの取得した値を用いて、実行制御部41によ
る制御の下で演算を実行し、その演算結果を上位32ビ
ットと下位32ビットとに分け、演算結果の上位32ビ
ットと下位32ビットデータをD1バスを介してそれぞ
れセレクタ4321とセレクタ4322とへ転送する。
セレクタ4321とセレクタ4322とについては、後
述する。
【0059】第2演算部45は、第1演算部44と同様
に、L2バス及びR2バスを介してレジスタR0〜R3
1に格納されている値を取得し、R2バスを介して第2
命令デコーダ34及び命令レジスタC233から出力さ
れる定数オペランドを取得し、これらの取得した値を用
いて、実行制御部41による制御の下で演算を実行し、
その演算結果を上位32ビットと下位32ビットとに分
け、演算結果の上位32ビットと下位32ビットのデー
タをD2バスを介してそれぞれセレクタ4321とセレ
クタ4322とへ転送する。
【0060】第3演算部46は、第1演算部44と同様
に、L3バス及びR3バスを介してレジスタR0〜R3
1に格納されている値を取得し、R3バスを介して第3
命令デコーダ35及び命令レジスタD234から出力さ
れる定数オペランドを取得し、これらの取得した値を用
いて、実行制御部41による制御の下で演算を実行し、
その演算結果を上位32ビットと下位32ビットとに分
け、演算結果の上位32ビットと下位32ビットのデー
タをD3バスを介してそれぞれセレクタ4321とセレ
クタ4322とへ転送する。 (4)オペランドアクセス部47 オペランドアクセス部47は、レジスタファイル43と
前記外部メモリとの間でオペランドの転送を行う回路で
ある。
【0061】具体的には、例えば、命令内で、オペコー
ドとして“ld”(ロード)が置かれていた場合には、
オペランドアクセス部47は、前記外部メモリに置かれ
ていた1ワード(32ビット)のデータを取得し、取得
したデータをD1〜D3バスのいずれかを介してレジス
タファイル43内の指定されたレジスタに書き込む。ま
た、命令内で、オペコードとして“st”(ストア)が
置かれていた場合には、オペランドアクセス部47は、
レジスタファイル43の指定されたレジスタの格納値を
L1〜L3バスのいずれかを介して取得し、取得した格
納値を前記外部メモリに書き込む。 (5)レジスタファイル43 レジスタファイル43は、図11に示すように、32個
の64ビットレジスタR0〜R31と、セレクタ432
1、4322と、レジスタ書込制御部431とを含んで
おり、セレクタ4321、4322は、それぞれ制御信
号線K61、K62を介して、レジスタ書込制御部43
1と接続されている。図11は、レジスタファイル43
及びその周辺の構成要素の構成を示すブロック図であ
る。このブロック図は、レジスタファイル43中の1つ
のレジスタR0に着目した図になっている。
【0062】レジスタR0〜R31に格納された値は、
第1命令デコーダ33、第2命令デコーダ34及び第3
命令デコーダ35での解読結果に基づいて、データバス
48を経由して第1演算部44、第2演算部45、第3
演算部46及びオペランドアクセス部47に転送され、
第1演算部44、第2演算部45、第3演算部46及び
オペランドアクセス部47において演算又はオペランド
アクセスが施され、これらの結果がデータバス49を経
由してレジスタファイル43に送られ、レジスタR0〜
R31に格納される。
【0063】なお、レジスタファイル43へ書き込まれ
るデータには、第1演算部44〜第3演算部46から出
力されるデータとオペランドアクセス部47から出力さ
れるデータとがあるが、オペランドアクセス部47から
出力されるデータのパスに関しては、図11において、
図面を簡素化し構成を明確にするために、省略してい
る。実際には、オペランドアクセス部47の出力は、第
1演算部44〜第3演算部46の出力パスのいずれか一
つを介してレジスタに転送されることになる。
【0064】レジスタ書込制御部431は、当該サイク
ルで発行された最大3つの各命令の書き込みレジスタ番
号と書き込み位置を示す情報とを含むセレクタ制御情報
をセレクタ4321、4322へ出力する。ここで、書
き込み位置を示す情報とは、その命令が上位32ビット
の領域にのみ書き込む命令であるか、下位32ビットの
領域のみに書き込む命令であるか、もしくは64ビット
全体の領域に書き込む命令であるかの情報である。
【0065】また、複数の命令があるレジスタの同一の
位置(領域)に書き込む命令であった場合には、プログ
ラムにおける命令の順序の情報をもとに、順序が後方
(図3のユニット番号の順を参照)の命令の書き込みの
みを行うようにセレクタを制御し、順序が先の命令の書
込は行わないようにセレクタを制御する。実際には、プ
ログラムにおける命令の順序にしたがって、第1演算部
44、第2演算部45、第3演算部46の順に命令が発
行されるので、プログラムの後方の命令により演算を実
行する第3演算部46の演算結果の書き込みが最も優先
され、次に第2演算部45の演算結果の書き込みが優先
されることになる。
【0066】セレクタ4321は、第1演算部44から
出力される上位32ビットデータと、第2演算部45か
ら出力される上位32ビットデータと、第3演算部46
から出力される上位32ビットデータを受け取り、レジ
スタ書込制御部から出力されるセレクタ制御情報を制御
信号線K61を介して受け取り、前記セレクタ制御情報
に基づいて、第1演算部44から出力される上位32ビ
ットデータと、第2演算部45から出力される上位32
ビットデータと、第3演算部46から出力される上位3
2ビットデータとのうちから1のデータを選択し、選択
したデータをレジスタR0〜R31のいずれか1のレジ
スタ(このレジスタは、セレクタ制御情報により指定さ
れる)の上位32ビットへ書き込む。
【0067】セレクタ4322は、セレクタ4321と
同様に、第1演算部44から出力される下位32ビット
データと、第2演算部45から出力される下位32ビッ
トデータと、第3演算部46から出力される下位32ビ
ットデータと受け取り、レジスタ書込制御部から出力さ
れるセレクタ制御情報を制御信号線K62を介して受け
取り、前記セレクタ制御情報に基づいて、第1演算部4
4から出力される下位32ビットデータと、第2演算部
45から出力される下位32ビットデータと、第3演算
部46から出力される下位32ビットデータとのうちか
ら1のデータを選択し、選択したデータをレジスタR0
〜R31のいずれか1のレジスタ(このレジスタは、セ
レクタ制御情報により指定される)の下位32ビットへ
書き込む。
【0068】以上説明したように、レジスタファイル4
3内の64ビットレジスタへの書き込みは、上位32ビ
ットの領域と下位32ビットの領域についてそれぞれ独
立に制御される。第1演算部44〜第3演算部46の演
算結果は、上位32ビットと下位32ビットに分けら
れ、それぞれセレクタ4321とセレクタ4322に転
送される。セレクタ4321とセレクタ4322とは、
レジスタ書込制御部431の制御に基づいてレジスタに
書き込むべき64ビットデータの上位32ビットデータ
と下位32ビットデータとをそれぞれ独立に選択する。 (6)データバス48及びデータバス49 上記PC部42、レジスタファイル43、第1演算部4
4、第2演算部45、第3演算部46及びオペランドア
クセス部47は、図4に示すように、データバス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の出力ポートに接続
されている。 1.4 プロセッサ310の動作 次に、命令群を解読実行する場合を具体的な一例として
取り上げ、プロセッサ310の動作について説明する。 (1)命令群の一例 図12は、64ビットデータを扱う処理の一例を示すフ
ローチャートである。
【0069】本図中、“upper”はレジスタの上位
32ビットを表し、“lower”はレジスタの下位3
2ビットを表す。基本命令では“lower”のみを参
照および更新し、SIMD命令のみが“upper”も
含めて参照および更新することになる。本図に示されて
いる命令群は、レジスタR2の上位とレジスタR3の上
位とを加算して、加算結果をレジスタR3の上位に格納
する演算と、レジスタR2の下位とレジスタR3の下位
とを加算して、加算結果をレジスタR3の下位に格納す
る演算とを独立に行い(ステップS100)、レジスタ
R0の下位に定数“0x12345678”(0xは、
以下に続く数文字列が16進数であることを表す)を転
送し(ステップS101)、レジスタR0の上位と下位
とを入れ換え(ステップS102)、レジスタR1に格
納されている値をアドレスとして示される外部メモリ上
の位置に格納されている値をレジスタR0の下位に格納
し(ステップS103)、最後に、レジスタR3の上位
とレジスタR0の上位とを加算して、加算結果をレジス
タR0の上位に格納する演算と、レジスタR3の下位と
レジスタR0の下位とを加算して、加算結果をレジスタ
R0の下位に格納する演算とを独立に行う(ステップS
104)ことを示している。
【0070】上記に示す命令群によると、まずステップ
S100にてレジスタR2とレジスタR3の間でSIM
D型の処理を行ない、次にステップS101〜ステップ
S103にてレジスタR0に64ビットデータを設定し
(上位は即値、下位は外部メモリから設定)、最後にス
テップS104にてレジスタR0とレジスタR3の間で
SIMD型の処理を行なっている。
【0071】図13は、図12に示す処理をプロセッサ
310に行わせる場合において、前記処理を実行形式コ
ードにより表現する場合のプログラムP60の内容とプ
ログラムP60の実行の順序とを示す図である。プログ
ラムP60は、5個の命令P61〜P65から構成され
ており、命令供給単位としては2個のパケット60、6
1から構成されている。パケット60は、2個の命令P
61〜P62を含み、パケット61は、3個の命令P6
3〜P665を含んでいる。
【0072】命令P61は、ステップS100に対応
し、命令P62は、ステップS101に対応し、命令P
63は、ステップS102に対応し、命令P64は、ス
テップS103に対応し、命令P65は、ステップS1
04に対応する。プログラムP60の各命令の処理内容
は、実行形式コードの各フィールドにおいてニーモニッ
クで表現されている。具体的には、命令P61及びP6
5におけるニーモニック“vaddw”は、2つの64
ビットレジスタの上位と上位との32ビット加算と、前
記2つの64ビットレジスタの下位と下位との32ビッ
ト加算との2つを独立にかつ並列に行なうSIMD型の
加算を表す。命令P62におけるニーモニック“mo
v”は、定数およびレジスタの格納値を別のレジスタの
下位32ビットへの転送を表す。命令P63におけるニ
ーモニック“vchng”は、1個の64ビットレジス
タの上位32ビットと下位32ビットとを入れ換えを表
す。命令P64におけるニーモニック“ld”は、外部
メモリからレジスタの下位32ビットへの転送を表して
いる。
【0073】ここで、“Rn”(n=0〜31)は、レ
ジスタファイル43の中の一つのレジスタを示す。ま
た、各命令の並列実行境界情報とフォーマット情報とに
ついても、それぞれ“0”又は“1”で示している。プ
ログラムP60の各命令は、図13に示すように、3個
の実行グループに分けられる。実行グループG11に
は、命令P61及びP62が含まれ、実行グループG1
2には、命令P63及びP64が含まれ、実行グループ
G13には、命令P65が含まれ、各実行グループ毎に
実行がされる。
【0074】すなわち、実行グループG11に含まれる
命令が実行され、実行グループG11に含まれる命令の
実行が完了すると、実行グループG12に含まれる命令
が実行される。次に、実行グループG12に含まれる命
令の実行が完了すると、実行グループG13に含まれる
命令が実行される。実行グループG11に含まれる命令
の実行においては、命令P61とP62とが並行して実
行される。また、実行グループG12に含まれる命令の
実行においては、命令P63とP64とが並行して実行
される。 (2)命令群を実行する場合のプロセッサ310の動作 図12に示す処理を実行する場合において、各実行グル
ープごとのプロセッサ310の動作を説明する。 (命令のフェッチ)命令フェッチ部21は、パケット6
0を外部メモリからフェッチし、命令バッファ22は、
パケット60を蓄積し、次に、命令フェッチ部21は、
パケット61を外部メモリからフェッチし、命令バッフ
ァ22は、パケット61を蓄積する。命令バッファ22
に蓄積されているパケット60内の命令P61が命令レ
ジスタA231へ転送され、命令P62の上位及び下位
がそれぞれ命令レジスタB232及び命令レジスタC2
33へ転送される。命令バッファ22に蓄積されている
パケット61内の命令P63が命令レジスタD234へ
転送される。 (実行グループG11の実行)次に、命令発行制御部3
1が各ユニットの並列実行境界情報とフォーマット情報
とを参照して発行を制御する。具体的には、2番目のユ
ニットのフォーマット情報が“1”であるので、2番目
のユニットと3番目のユニットを連結して1つの命令と
して扱う。また、1番目のユニットの並列実行境界情報
が“0”であり、2番目のユニットの並列実行境界情報
が“1”であるので、1番目から3番目のユニットまで
の2個の命令を1サイクルで並列実行すべき命令として
発行する。
【0075】実行部40では、レジスタR2とレジスタ
R3との間で、それぞれのレジスタの上位と上位、下位
と下位がそれぞれ独立に加算され、それぞれの加算結果
がレジスタR3の上位と下位とに格納され、レジスタR
0の下位32ビットに定数“0x12345678”が
転送される。パケット61内の命令P63〜P65は、
発行されずに残ったので命令バッファ22に蓄積されて
いる。 (実行グループG12の実行)命令バッファ22に蓄積
されているパケット61内の命令P63が命令レジスタ
A231へ転送され、命令P64が命令レジスタB23
2へ転送され、命令P65が命令レジスタC233へ転
送される。
【0076】命令発行制御部31は、3個のユニット共
フォーマット情報が“0”であるので、いずれのユニッ
トも21ビット命令として発行を制御する。また、1番
目のユニットの並列実行境界情報が“0”であり、2番
目のユニットの並列実行境界情報が“1”であるので、
1番目のユニットから2番目のユニットまでの2個の命
令を発行するように制御する。3番目のユニットは、発
行されずに残ったので命令バッファ22に蓄積される。
【0077】実行部40では、第1演算部44にてレジ
スタR0の格納値の上位32ビットと下位32ビットと
を入れ換えた結果が生成され、またオペランドアクセス
部47にて外部メモリ内においてレジスタR1で示され
るアドレスにより示される位置から32ビットデータを
読み込み、これらのデータが共にレジスタファイル43
に転送される。
【0078】次に、レジスタR0の上位に書き込むのは
“vchng”命令のみであるので、レジスタ書込制御
部431は、この命令“vchng”の結果、すなわち
第1演算部44の出力が選択されるようにセレクタ43
21を制御し、レジスタR0の下位については、2つの
命令共結果を書き込もうとするが、プログラム中の順序
として“ld”命令の方が後方であるため、この“l
d”命令の結果、すなわちオペランドアクセス部47の
出力が選択されるようにセレクタ4322を制御する。
これによって、具体的には、このサイクルが完了した時
点で、レジスタR0の上位32ビットには定数“0x1
2345678”が、下位32ビットにはメモリ内にお
いてレジスタR1の格納値で示されるアドレスにより示
される位置の格納値が格納されていることになる。
【0079】このようにして、同一サイクルにおいて、
あるレジスタの一部の領域を変更する命令と、そのレジ
スタの一部または全部の領域を変更する命令とを同時に
実行することが可能となる。なお、このような実行形式
コードを生成するコンパイル装置と、その命令スケジュ
ーリング方法については、後で述べる。 (実行グループG13の実行)命令バッファ22に蓄積
されていた1個のユニット(命令P65)が命令レジス
タA231に転送される。このユニットは、フォーマッ
ト情報が“0”であるので21ビット命令であり、並列
実行境界情報が“1”であるため、命令発行制御部31
は、1つの21ビット命令を発行する。これで、供給さ
れたユニットはすべて発行されたことになる。
【0080】実行部40は、レジスタR3とレジスタR
0との間で、上位と上位、下位と下位をそれぞれ独立に
加算し、それぞれの加算結果をレジスタR0の上位と下
位とに格納する。以上のようにして、プロセッサ310
において図12に示す処理を行うプログラムは3つの実
行グループG11〜G13により実行される。ここで、
それぞれの実行グループは同時に実行できず、実行グル
ープ毎に順次実行される。 1.5 従来のプロセッサとの比較 次に、図12に示す処理を、従来のプロセッサにより実
行する場合について説明し、プロセッサ310の場合と
比較する。
【0081】図14は、図12に示す処理を従来のプロ
セッサに行わせる場合において、前記処理を実行形式コ
ードにより表現する場合のプログラムP70の内容とプ
ログラムP70の実行の順序とを示す図である。このプ
ログラムP70は、図13に示すプログラムP60と同
様に、2個のパケット70、71から構成されている。
パケット70には、命令P71〜72が含まれ、パケッ
ト71には、命令P73〜P75が含まれる。各命令の
処理内容は、図13に示すコードと同様に、各フィール
ドにおいてニーモニックで表現されている。
【0082】命令P70〜75は、それぞれ、命令P6
0〜P65に対応して同様の命令である。なお、プログ
ラムP70とプログラムP60との相違は、命令P73
における“vchng”命令の並列実行境界情報が
“1”であり、命令P63における“vchng”命令
の並列実行境界情報が“0”である点のみである。この
相違が発生する理由は、命令P73における“vchn
g”命令と命令P74における“ld”命令のデスティ
ネーションレジスタが共にレジスタR0であり、従来の
コンパイル装置は、従来のプロセッサの構成では前記2
個の命令は同時実行できないと判断し、このような実行
形式コードを出力する。このため、図14に示すよう
に、4つの実行グループG21〜G24が順に実行され
ることとなる。実行グループG21には、命令P71及
びP72が含まれ、実行グループG22には、命令P7
3が含まれ、実行グループG23には、命令P74が含
まれ、実行グループG24には、命令P75が含まる。
【0083】このように、従来のプロセッサでは、レジ
スタへの書き込みを上位と下位で独立して制御していな
いため、同一のレジスタに書き込む2つの命令間にハザ
ードが生じ、同時実行することができない。したがっ
て、図12に示す処理の例のように、レジスタR0をデ
スティネーションレジスタとする命令が4個含まれる場
合には、最低でも4つの実行グループに分かれる。ここ
で、それぞれの実行グループは同時に実行できず、実行
グループ毎に順次実行される。
【0084】以上説明したように、プロセッサ310に
おいては、従来のプロセッサと比較すると、実行サイク
ル数が1サイクル減少する。 2 コンパイル装置200 コンパイル装置200は、プロセッサ310により実行
されるコードを生成する。 2.1 用語と対象プロセッサ ここでは、用いる用語、対象プロセッサ、コンパイル装
置200の構成及び動作について説明する。
【0085】まず、本説明で用いる用語の説明を行な
う。「オブジェクトコード」とは、再配置可能情報を含
んだ対象プロセッサ向け機械語プログラムである。連結
編集がされ、未確定アドレスが決定されることにより実
行形式コードに変換される。「プレデセッサ」とは、あ
る命令を実行する為に、それ以前に実行しておく必要の
ある命令である。
【0086】次に、コンパイル装置200が対象とする
プロセッサについて、説明する。コンパイル装置200
が対象とするプロセッサは、上記で説明したプロセッサ
310である。このプロセッサは、コンパイル装置20
0により付与された並列実行境界情報を参照することに
より実行グループを生成し、プロセッサ自体では並列実
行可能か否かの判定を行なわない。したがって、並列実
行境界と並列実行境界との間、すなわち1個の実行グル
ープ内において、同時実行可能な命令が正しく配置され
ていることは、コンパイル装置200が保証する。
【0087】ここで、並列実行境界と並列実行境界との
間に配置できる命令に対する制限は以下の通りである。
命令は、以下に示す3条件が満たされた場合にのみ並列
実行ができる。 (条件1)1個の実行グループ中の命令の総数は3を越
えない。 (条件2)プロセッサの命令デコーダは1個の実行グル
ープ中の3ユニット目までしか、命令としてデコードす
ることができない(図5参照)。 (条件3)1個の実行グループ中の命令が使用する対象
プロセッサ内の資源の総和は、ALUユニット3個、メ
モリアクセスユニット1個及び分岐ユニット1個の和を
越えない。
【0088】また、対象プロセッサは1個の実行グルー
プ中の命令を必ずしも同時に実行するわけではない。命
令の供給が追いつかないなどの理由で実行グループを2
回以上に分けて実行することもある。このためコンパイ
ル装置200は、1個の実行グループが2回以上に分割
されて実行される場合であっても、プログラムの意味動
作が正しくなるように、命令群中の命令順を設定する必
要がある。 2.2 コンパイル装置200の構成 コンパイル装置200の構成について、図15を用いて
説明する。ここで、図15は、コンパイル装置200の
構成を示すブロック図である。
【0089】コンパイル装置200は、前述したよう
に、ソースコード記憶部130、コンパイル部210及
びオブジェクトコード記憶部140から構成され、ソー
スコード記憶部130に記憶されている高級言語で書か
れたソースコードからオブジェクトコードを生成してオ
ブジェクトコード記憶部140に書き込むプログラム処
理装置である。コンパイル部210は、コンパイラ上流
部100、アセンブラコード生成部101、命令スケジ
ューリング部102、オブジェクトコード生成部103
を含む。
【0090】コンパイル装置200は、具体的には、プ
ロセッサ、ROM、RAM、ハードディスク装置などか
ら構成される。コンパイル装置200の各構成要素は、
コンピュータプログラムを前記プロセッサに実行させる
ものである。 2.2.1 コンパイラ上流部100及びアセンブラコ
ード生成部101 コンパイラ上流部100は、ソースコード記憶部130
からファイル形式で保存されている高級言語ソースコー
ドを読み込み、構文解析及び意味解析を行なって内部形
式コードを生成する。また、必要に応じて、最終的に生
成される実行形式コードのサイズやその実行時間が短く
なるように内部形式コードを最適化する。
【0091】アセンブラコード生成部101は、コンパ
イラ上流部100により生成され、また最適化された内
部形式コードからアセンブラコードを生成する。コンパ
イラ上流部100及びアセンブラコード生成部101で
の処理は本発明の主眼ではなく、また、従来のコンパイ
ル装置で行なわれてきた処理と同等であり、公知である
ので、詳細についての説明は省略する。 2.2.2 命令スケジューリング部102 命令スケジューリング部102は、アセンブラコード生
成部101で生成されたアセンブラコードに対し命令間
の依存関係の解析、命令スケジューリング(命令順の並
べ替え)及び並列実行境界の付加を行ない、アセンブラ
コードを対象プロセッサ向けに並列化する。命令スケジ
ューリング部102は、依存関係解析部110、命令再
配置部111及び実行境界付加部112から構成され
る。なお、ここでは簡単のため命令スケジューリング部
102は基本ブロック単位で動作することとする。
【0092】ここで、基本ブロックとは、実行が先頭の
命令から始まり、必ず最後の命令まで実行される一連の
命令列のことであり、この命令列は、当該命令列の途中
から当該命令列の外へ制御を移す命令を含まない。ま
た、当該命令列の外から当該命令列の途中へ制御が移さ
れて入り込んでくることもない。 (1)依存関係解析部110 依存関係解析部110は、アセンブラコード生成部10
1により生成されたアセンブラコードを基にして、基本
ブロックに含まれる命令毎に、基本ブロックに含まれる
命令間の依存関係を解析し、各命令に対応するノード
(節)と、各依存関係に対応するエッジ(矢印、direct
ed edge)とから構成され命令間の依存関係を示す依存
グラフを生成する。なお、依存グラフの生成方法は公知
であり、例えば、論文 Instruction scheduling in the
TOBEY compiler (R.J.Blainey, IBMJ.RES.DEVELOP. VO
L.38 NO.5 SEPTEMBER 1994) に開示されているので、詳
細についての説明は省略する。
【0093】命令間の依存関係には以下の3種類があ
る。 ・データ依存関係 ある資源にデータを格納する命令と、同じ資源からデー
タを参照する命令との間の依存関係。 ・逆依存関係 ある資源からデータを参照する命令と、同じ資源にデー
タを格納する命令との間の依存関係。 ・出力依存関係 ある資源にデータを格納する命令と、同じ資源にデータ
を格納する命令との間の依存関係。
【0094】いずれの依存関係にある命令も、元の命令
順を変更するとプログラムの意味が異なってしまう為、
命令を並べ替えるときにおいても依存関係は守る必要が
ある。依存グラフを説明するためのプログラムP80を
図16に示す。プログラムP80は、アセンブラコード
により表現されており、命令P81〜P87を含む。
【0095】また、プログラムP80に対応する依存グ
ラフG100を視覚的に表現したものを図17に示す。
依存グラフG100は、ノードN101〜N107、エ
ッジE101〜E106を含む。ノードN101〜N1
07は、それぞれ命令P81〜P87に対応している。
エッジE101〜E106は、それぞれ有向エッジであ
る。エッジE103は、逆依存関係を示すエッジであ
り、他のエッジは、データ依存関係を示すエッジであ
る。
【0096】ノードN101とノードN102とは、ノ
ードN101からノードN102へ向かうエッジE10
1を介して接続されている。ノードN102とノードN
103とは、ノードN102からノードN103へ向か
うエッジE102を介して接続されている。ノードN1
03とノードN104とは、ノードN103からノード
N104へ向かうエッジE103を介して接続されてい
る。ノードN104とノードN106とは、ノードN1
04からノードN106へ向かうエッジE104を介し
て接続されている。ノードN105とノードN106と
は、ノードN105からノードN106へ向かうエッジ
E105を介して接続されている。ノードN106とノ
ードN107とは、ノードN106からノードN107
へ向かうエッジE107を介して接続されている。
【0097】なお、図17において、依存グラフG10
0を分かりやすいように視覚的に表現しているが、依存
グラフの実体は、絵ではなく、ノードとエッジとから構
成されるデータの集合であることに注意を要する。従来
の依存解析方法では、レジスタ1個を1つの資源として
扱い、アセンブラコードに記述されたオペランドである
レジスタ名を参照することによって依存関係を解析す
る。
【0098】それに対して、コンパイル装置200の依
存関係解析部110は、対象プロセッサの命令セットの
特徴、すなわち64ビットレジスタの一部分の領域のみ
にデータを格納する命令、または前記一部分の領域から
データを参照する命令が存在することを踏まえて、レジ
スタの一部分の領域を1つの資源として扱う。具体的に
は、依存関係解析部110は、64ビットレジスタの上
位32ビットの領域と下位32ビットの領域とを独立し
た資源として扱う。例えば、ある64ビットレジスタの
全体を参照する命令については、そのレジスタの上位と
下位との2つの資源を共に参照する命令であると認識す
る。また、あるレジスタの下位32ビットのみを参照す
る命令については、下位32ビットの資源のみを参照す
る命令であると認識し、そのレジスタの下位32ビット
の資源は、そのレジスタの上位32ビットの資源とは全
く依存関係がないものと認識する。
【0099】また、依存関係解析部110は、内部に図
18に示すような参照格納資源テーブルT100を有し
ている。参照格納資源テーブルT100は、オペランド
にレジスタRnとレジスタRmとを含む命令の種類と、
前記命令のタイプとから構成される組を複数個含んでい
る。ここで、n=0〜31、m=0〜31である。
【0100】命令のタイプとは、以下に示す8個のケー
スの組合せである。参照格納資源テーブルT100にお
いて、○印は、対応するケースが前記組合せに含まれる
ことを示し、×印は、対応するケースが前記組合せに含
まれないことを示す。例えば、参照格納資源テーブルT
100において、命令の種類「mov Rn、Rm」に
対応するタイプは、ケース2及びケース8に○印が付さ
れており、他のケースには、×印が付されてるので、前
記命令は、「レジスタRnの下位32ビットからデータ
を参照し、レジスタRmの下位32ビットにデータを格
納する」タイプの命令であることを示している。 (ケース1)命令は、レジスタRnの上位32ビットか
らデータを参照する。 (ケース2)命令は、レジスタRnの下位32ビットか
らデータを参照する。 (ケース3)命令は、レジスタRmの上位32ビットか
らデータを参照する。 (ケース4)命令は、レジスタRmの下位32ビットか
らデータを参照する。 (ケース5)命令は、レジスタRnの上位32ビットに
データを格納する。 (ケース6)命令は、レジスタRnの下位32ビットに
データを格納する。 (ケース7)命令は、レジスタRmの上位32ビットに
データを格納する。 (ケース8)命令は、レジスタRmの下位32ビットに
データを格納する。
【0101】依存関係解析部110は、参照格納資源テ
ーブルT100を参照することにより、命令がどのタイ
プであるかを知り、これにより、命令がどの資源からデ
ータを参照しまた、どの資源にデータを格納するかの情
報を得て、この情報を基にしてノード(節)間のエッジ
(矢印)からなる依存関係を生成する。このように、レ
ジスタの上位32ビットと下位32ビットとを独立に管
理することにより、レジスタ名のみを参照する方法に比
べて、より厳密な依存関係を求めることができる。これ
によって、依存グラフ中の不要なエッジ(矢印)を削減
し、各命令間の並列実行の可能性をより高めることがで
きる。
【0102】例えば、あるレジスタの上位32ビットの
みにデータを格納する命令と同じレジスタの下位32ビ
ットのみからデータを参照する命令とからなる命令群が
ある場合、従来の依存グラフ生成方法ではレジスタ名に
て依存を認識するため、これらの2つの命令間にはデー
タ依存関係があるものと判断する。このため、これらの
2つの命令は同時実行はされない。
【0103】一方、依存関係解析部110は、これらの
2つの命令間にはデータ依存関係は存在しないと判断
し、これらの2つの命令を同時実行することが可能とな
る。なお、具体例については、コンパイル装置200の
具体的動作と共に、後で述べる。 (2)命令再配置部111 命令再配置部111は、依存関係解析部110により生
成された依存グラフを用いて、基本ブロック内の命令を
並べ替え、対象プロセッサ向けの並列化されたアセンブ
ラコードを生成する。命令再配置部111は、命令集合
化部120を含む。
【0104】命令再配置部111の処理の詳細につい
て、図19に示すフローチャートを用いて説明する。命
令再配置部111は、依存関係解析部110が生成した
依存グラフの全てのノードについて、以下の処理(ステ
ップS2〜S10)を繰り返す(ループ1:ステップS
1〜S11)。
【0105】まず、命令再配置部111は、現時点で配
置候補となり得るノードを候補ノードとして依存グラフ
より抽出し、候補ノードから構成される配置候補集合を
生成する。ここで配置候補となり得るノードとは、「プ
レデセッサが全て配置完了済み」であるノードである
(ステップS2)。次に、命令再配置部111は、配置
候補集合の全ての候補ノードについて、以下の処理(ス
テップS4〜S8)を繰り返す(ループ2:ステップS
3〜S9)。
【0106】命令再配置部111は、配置候補集合から
現時点で配置することが最良と思われる候補ノード(以
下、単に「最良ノード」と呼ぶ。)を取り出す(ステッ
プS4)。最良ノードの決定方法については後述する。
続いて最良ノードが、実際に配置可能か否かを判断し、
可能な場合には(ステップS5)、仮配置ノード集合に
前記最良ノードを仮配置する(ステップS6)。この判
断は、最良ノードが前述の演算器の制約、命令数の制約
および命令デコーダの制約を満たすかどうかによって決
定する。
【0107】続いて、現時点で仮配置されている仮配置
ノード集合を調べ、更に命令を仮配置することができる
か否かを判断する。配置不可と判断された場合は(ステ
ップS7)、ループ2を終了し処理をステップS10へ
移す。配置可能と判断された場合(ステップS7)、最
良ノードが配置されたことによって新たに配置候補とな
り得るノードが生じたか否かを判断し、新たな配置候補
が生じた場合はこれを配置候補集合に追加する(ステッ
プS8)。ステップS8で新たに配置候補にできるの
は、「(現在配置しようとしている)最良ノードのみを
プレデセッサとして持ち、且つ、最良ノードとの依存関
係が逆依存もしくは出力依存」のノードである。つまり
ここで新たな配置候補になることができるノードは、最
良ノードと同じサイクルで実行することはできるが、最
良ノードより前のサイクルでは実行できないノードであ
る。
【0108】ループ2が終了した後、仮配置ノード集合
に含まれているノードを配置ノードとして確定する(ス
テップS10)。具体的には、仮配置ノード集合に含ま
れているノードに対応する命令を元の命令列から取り出
し、実行境界付加部112へ渡すための新たな命令列に
再配置する。この段階で配置候補集合の一部の命令が、
同時に実行する命令群としてまとめられ確定したことに
なる。ステップS3〜ステップS10により示される一
連の処理は、命令集合化部120を構成する。
【0109】次に、ステップS4における最良ノードの
決定方法について述べる。最良ノードは、依存グラフ、
仮配置ノード集合を参照して、基本ブロック内の命令全
体を最も短時間で実行できるであろう命令をヒューリス
ティックに選び出す。ここでは現時点での依存グラフに
おいて依存グラフの終端までの命令の実行時間総和が最
も多いものを選ぶ。この条件に合致する命令が多数ある
場合には、元の命令順が早い命令を最良ノードとする。 (3)実行境界付加部112 実行境界付加部112は、命令再配置部111のステッ
プS9で配置が確定した命令群の末尾の命令に並列実行
境界を付加し、並列実行境界が付加された命令群を出力
する。 2.2.3 オブジェクトコード生成部103 オブジェクトコード生成部103は、命令スケジューリ
ング部102により出力された命令群(アセンブラコー
ド)をオブジェクトコードに変換し、オブジェクトコー
ドをファイルとしてオブジェクトコード記憶部140へ
書き込む。 2.3 コンパイル装置200の動作 次に、コンパイル装置200の特徴的な構成要素の動作
について、具体的な命令群を用いて説明する。
【0110】コンパイル装置200の動作を説明するた
めに一例として用いるプログラムP90を図20に示
す。プログラムP90は、ソースコードからコンパイラ
上流部100及びアセンブラコード生成部101を経て
生成されたアセンブラコードであり、命令P91〜P9
7を含む。命令P91〜P97の意味は以下の通りであ
る。 ・命令P91…レジスタR0の上位32ビットとレジス
タR1の上位32ビットとを加算して、加算結果をレジ
スタR1の上位32ビットに格納し、レジスタR0の下
位32ビットとレジスタR1の下位32ビットとを加算
して、結果をレジスタR1の下位32ビットに格納する
SIMD命令。 ・命令P92…レジスタR2の上位32ビットとレジス
タR1の上位32ビットとを加算して、加算結果をレジ
スタR1の上位32ビットに格納するSIMD命令。 ・命令P93…レジスタR1の下位32ビットをレジス
タR3の下位32ビットに転送する基本命令。 ・命令P94…レジスタR1の下位32ビットに定数0
x3を加算して、加算結果をレジスタR1の下位32ビ
ットに格納する基本命令。 ・命令P95…レジスタR3の下位32ビットをレジス
タR4の下位32ビットをアドレスとして示されるメモ
リ上の位置に格納する基本命令。 ・命令P96…定数0x1234をレジスタR5の下位
32ビットに転送する基本命令。 ・命令P97…レジスタR5の下位32ビットをレジス
タR6の下位32ビットをアドレスとして示されるメモ
リ上の位置に格納する基本命令。
【0111】命令スケジューリング部102の動作につ
いて説明する。命令スケジューリング部102は、プロ
グラムP90を入力として受け取る。次に、依存関係解
析部110が起動され、依存関係解析部110は、プロ
グラムP90を基にして、図21に示す依存グラフG1
20を生成する。この際、前述のように、依存関係解析
部110は、コンパイラ内部に保有している参照格納資
源テーブルT100を参照することにより、64ビット
レジスタの上位32ビットと下位32ビットとを独立の
資源としてとらえて依存関係を検出する。
【0112】例えば、命令P92と命令P93との依存
関係の解析においては、依存関係解析部110は、命令
P92をレジスタR1の上位32ビットにデータを格納
する命令として認識し、命令P93をレジスタR1の下
位32ビットからデータを参照する命令として認識す
る。このように、命令P92と命令P93との間におい
て、同一の資源に関する依存関係が存在しないので、依
存関係解析部110は、これら2命令の間には依存関係
は無いものとみなし、依存グラフG120において、こ
の2命令間のエッジ(矢印)を生成しない。
【0113】依存グラフG120は、ノードN121〜
N127、エッジE121〜E126を含む。ノードN
121〜N127は、それぞれ命令P91〜P97に対
応している。エッジE121〜E126は、それぞれ有
向エッジである。エッジE123は、逆依存関係を示す
エッジであり、他のエッジは、データ依存関係を示すエ
ッジである。
【0114】ノードN121とノードN122とは、ノ
ードN121からノードN122へ向かうエッジE12
1を介して接続されている。ノードN121とノードN
123とは、ノードN121からノードN123へ向か
うエッジE122を介して接続されている。ノードN1
22とノードN124とは、ノードN122からノード
N124へ向かうエッジE124を介して接続されてい
る。ノードN123とノードN124とは、ノードN1
23からノードN124へ向かうエッジE123を介し
て接続されている。ノードN123とノードN125と
は、ノードN123からノードN125へ向かうエッジ
E125を介して接続されている。ノードN126とノ
ードN127とは、ノードN126からノードN127
へ向かうエッジE126を介して接続されている。
【0115】なお、図21において、依存グラフG12
0を視覚的に表現しているが、依存グラフG100と同
様に、依存グラフの実体は、絵ではなく、ノードとエッ
ジとから構成されるデータの集合であることに注意を要
する。次に、命令再配置部111が起動される。命令再
配置部111は、図19に示すフローチャートのステッ
プS3〜S9で示されるループ2が終了する度に、ステ
ップS10において、単数または複数の命令を含むグル
ープを配置ノードとして確定する。このグループは、同
一サイクルに並列実行可能な命令の集合であり、「実行
グループ」と呼ぶ。以下に、図19に示すフローチャー
トのステップに沿って、各実行グループ毎に具体的に説
明する。 (実行グループ1の決定)命令再配置部111は、この
時点でプレデセッサの無いノードはノードN121及び
N126であるので、ノードN121及びN126を候
補ノードとする配置候補集合を生成する(ステップS
2)。次に、ノードN121を最良ノードとして選ぶ
(ステップS4)。続いて、ノードN121が配置可能
か否かを判定し、ここではノードN121は配置可能と
判定され(ステップS5)、ノードN121を仮配置す
る(ステップS6)。次に、命令再配置部111は、配
置状態判定をし、ここでは更に配置が可能と判断され
(ステップS7)、新たな配置候補は生じないので(ス
テップS8)、制御はループ2の先頭に戻る(ステップ
S9、S3)。まだ配置候補集合にノードがあるので、
命令再配置部111は、ループ2を繰り返す(ステップ
S3〜S9)。
【0116】次に、配置候補集合にはノードN126し
か残っていないので、命令再配置部111は、ノードN
126を最良ノードとして選ぶ(ステップS4)。続い
て、命令再配置部111は、ノードN126が配置可能
か否かを判定し、ここでは配置可能と判定し(ステップ
S5)、仮配置ノード集合にノードN126を最良ノー
ドとして仮配置する(ステップS6)。次に、配置状態
判定を行い、ここでは更に配置が可能と判断する(ステ
ップS7)。新たな配置候補は生じないので(ステップ
S8)、制御はループ2の先頭に戻る(ステップS9、
S3)。この時点で配置候補集合が空なのでループ2を
終了し、制御はステップS10に移る。命令再配置部1
11は、仮配置ノード集合にある命令を配置する(ステ
ップS10)。
【0117】以上で、1番目の実行グループを求める処
理を終わる。未配置ノードが残っているので、命令再配
置部111は、さらにループ1を繰り返す(ステップS
10、S1)。 (実行グループ2の決定)次に、命令再配置部111
は、この時点でプレデセッサの無いノードはノードN1
22、N123、N127であるので、ノードN12
2、N123、N127を候補ノードとする配置候補集
合を生成する(ステップS2)。次に、ノードN122
を最良ノードとして選ぶ(ステップS4)。続いて、ノ
ードN122が配置可能か否かを判定し、ここでは配置
可能と判定し(ステップS5)、ノードN122を仮配
置する(ステップS6)。次に、命令再配置部111
は、配置状態判定をし、ここでは更に配置が可能と判定
する(ステップS7)。次に、新たな配置候補は生じな
いので(ステップS8)、ループ2の先頭に戻る(ステ
ップS9、S3)。命令再配置部111は、まだ配置候
補集合にノードがあるのでループ2を繰り返す(ステッ
プS3〜S9)。
【0118】次に、命令再配置部111は、ノードN1
23を最良ノードとして選ぶ(ステップS4)。続い
て、ノードN123が配置可能か否かを判定し、ここで
は配置可能と判定し(ステップS5)。ノードN123
を仮配置する(ステップS6)。次に、命令再配置部1
11は、配置状態判定をし、ここでは更に配置が可能と
判断する。(ステップS7)。新たな配置候補は生じな
いので(ステップS8)、制御はループ2の先頭に戻る
(ステップS9、S3)。まだ配置候補集合にノードが
あるので、命令再配置部111は、ループ2を繰り返す
(ステップS3〜S9)。
【0119】次に、配置候補集合にはノードN127し
か残っていないので、命令再配置部111は、ノードN
127を最良ノードとして選ぶ(ステップS4)。続い
て、ノードN127が配置可能か否かを判定し、ここで
は配置可能と判定し(ステップS5)。ノードN127
を仮配置する(ステップS6)。次に、命令再配置部1
11は、配置状態判定を行い、すでに対象プロセッサの
並列度の上限である3命令が仮配置されているので、こ
れ以上の配置は不可能と判定し(ステップS7)、ルー
プ2を中断し、制御をステップS10に移す。命令再配
置部111は、仮配置ノード集合にある命令を配置する
(ステップS10)。
【0120】以上により、2番目の実行グループを求め
る処理を終わる。未配置ノードが残っているので、命令
再配置部111は、ループ1を繰り返す(ステップS1
0、S1)。 (実行グループ3の決定)この時点でプレデセッサの無
いノードはノードN124、N125であるので命令再
配置部111は、ノードN124、N125を候補ノー
ドとする配置候補集合を生成する(ステップS2)。以
降の処理内容は上記の実行サイクル1の場合と同様であ
るので省略する。こうして、これら2つのノードが3番
目の実行グループの配置命令として配置される。
【0121】次に、実行境界付加部112が起動され
る。実行境界付加部112は、命令再配置部111で配
置された各実行グループの最後の命令の並列実行境界情
報を“1”にセットし、並列実行境界が付加された命令
群を出力する。続いて、オブジェクトコード生成部10
3が起動され、オブジェクトコード生成部103は、実
行境界付加部112から出力された命令群をオブジェク
トコードに変換し、オブジェクトコードをファイルとし
てオブジェクトコード記憶部140へ書き込む。
【0122】このようにして生成された最終的な実行形
式コードであるプログラムP100と実行の順序を図2
2に示す。なお、図22においては、プログラムはニー
モニックにより表現されているが、実際には、64ビッ
ト単位にまとめられたビット列である。プログラムP1
00は、7個の命令P101〜P107から構成されて
おり、命令供給単位としては3個のパケット150、1
51、152から構成されている。パケット150は、
3個の命令P101〜P103を含み、パケット151
は、3個の命令P104〜P106を含み、パケット1
52は、1個の命令P107を含んでいる。命令P10
1〜P107は、それぞれ並列実行境界情報と、フォー
マット情報と、命令コードとを含んでいる。
【0123】命令P101は、命令P91に対応し、命
令P102は、命令P96に対応し、命令P103は、
命令P92に対応し、命令P104は、命令P93に対
応し、命令P105は、命令P97に対応し、命令P1
06は、命令P94に対応し、命令P107は、命令P
95に対応している。命令P102と命令P105と命
令P107とにおいて、並列実行境界情報は、それそ
れ”1”であり、並列実行境界であることを示すしてい
る。
【0124】上記に説明するように、3個の実行グルー
プG91、G92、G93が生成され、実行グループG
91は、命令P91と命令P96とを含み、実行グルー
プG92は、命令P92と命令P93と命令P97とを
含み、実行グループG93は、命令P94と命令P95
とを含む。実行グループG91とG92とG93とは、
この順に実行される。実行グループG91内において
は、命令P91と命令P96とが同時に実行される。実
行グループG92内においては、命令P92と命令P9
3と命令P97とが同時に実行される。実行グループG
93内においては、命令P94と命令P95とが同時に
実行される。 2.4 従来のコンパイル装置との比較 次に、図20に示すプログラムP90を、従来のコンパ
イル装置により処理した場合について、本発明に係るコ
ンパイル装置200の場合と比較する。
【0125】従来のコンパイル装置も、依存関係を解析
するブロックにて依存グラフを生成する。しかし、本発
明の場合と異なり、アセンブラコードに記述されたレジ
スタ名を参照し、レジスタ全体を一つの資源として扱っ
て、各命令においてデータが格納される資源又はデータ
が参照される資源に関する情報を求め、その情報を基に
して命令間の依存関係を検出する。
【0126】例えば、図20に示すプログラムP90に
含まれる命令P92と命令P93との依存関係解析にお
いて、まず命令P92はレジスタR1にデータを格納す
る命令として認識され、命令P93はレジスタR1から
データを参照する命令として認識される。これにより、
これら2命令の間にはレジスタR1に関してデータ依存
関係があるとみなされ、依存グラフにおいては、この2
命令にそれぞれ相当する2ノード(節)間において、デ
ータ依存関係に相当するエッジ(矢印)が生成される。
このようにして生成された依存グラフG130を図23
に示す。依存グラフG130は、図20に示すプログラ
ムP90に対応している。
【0127】依存グラフG130は、ノードN131〜
N137、エッジE131〜E136を含む。ノードN
131〜N137は、それぞれ命令P91〜P97に対
応している。エッジE131〜E136は、それぞれ有
向エッジである。エッジE134は、逆依存関係を示す
エッジであり、他のエッジは、データ依存関係を示すエ
ッジである。
【0128】ノードN131とノードN132とは、ノ
ードN131からノードN132へ向かうエッジE13
1を介して接続されている。ノードN132とノードN
133とは、ノードN132からノードN133へ向か
うエッジE132を介して接続されている。ノードN1
32とノードN134とは、ノードN132からノード
N134へ向かうエッジE133を介して接続されてい
る。ノードN133とノードN134とは、ノードN1
33からノードN134へ向かうエッジE134を介し
て接続されている。ノードN133とノードN135と
は、ノードN133からノードN135へ向かうエッジ
E135を介して接続されている。ノードN136とノ
ードN137とは、ノードN136からノードN137
へ向かうエッジE136を介して接続されている。
【0129】なお、図23において、依存グラフG13
0を視覚的に表現しているが、依存グラフG100と同
様に、依存グラフの実体は、絵ではなく、ノードとエッ
ジとから構成されるデータの集合であることに注意を要
する。従来のコンパイル装置により生成された最終的な
実行形式コードであるプログラムP110と実行の順序
を図24に示す。
【0130】プログラムP110は、7個の命令P11
1〜P117から構成されており、命令供給単位として
は3個のパケット160、161、162から構成され
ている。パケット160は、3個の命令P111〜P1
13を含み、パケット161は、3個の命令P114〜
P116を含み、パケット162は、1個の命令P11
7を含んでいる。命令P111〜P117は、それぞれ
並列実行境界情報と、フォーマット情報と、命令コード
とを含んでいる。
【0131】命令P111は、命令P91に対応し、命
令P112は、命令P96に対応し、命令P113は、
命令P92に対応し、命令P114は、命令P97に対
応し、命令P115は、命令P93に対応し、命令P1
16は、命令P94に対応し、命令P117は、命令P
95に対応している。命令P112と命令P114と命
令P116と命令P117とにおいて、並列実行境界情
報は、それそれ”1”であり、並列実行境界であること
を示すしている。
【0132】3個の実行グループG111、G112、
G113、G114が生成され、実行グループG111
は、命令P91と命令P96とを含み、実行グループG
112は、命令P92と命令P97とを含み、実行グル
ープG113は、命令P93と命令P94とを含み、実
行グループG114は、命令P95を含む。実行グルー
プG111とG112とG113とG114とは、この
順に実行される。実行グループG111内においては、
命令P91と命令P96とが同時に実行される。実行グ
ループG112内においては、命令P92と命令P97
とが同時に実行される。実行グループG113内におい
ては、命令P93と命令P94とが同時に実行される。
実行グループG114内においては、命令P95が実行
される。
【0133】図22と図24を比較して明らかなよう
に、本発明のコンパイル装置200においては、従来の
コンパイル装置と比べると、実行グループ数が1つ減っ
ている増えている。つまり、実行サイクル数が1サイク
ル減っていることになる。このように本発明のコンパイ
ル装置200において、実行グループ数が減っているの
は、コンパイル装置200の依存関係解析部110が、
レジスタの一部分の領域を用いて命令間の依存関係を解
析するためであり、依存グラフにおいて厳密には真のデ
ータ依存関係の無い前述の2命令間にエッジ(矢印)を
生成しないことによる。 II 実施の形態2 上述の実施の形態1におけるプロセッサ310は、コン
パイル装置200により実行形式コード生成時に静的に
複数の命令間の依存関係が解析され、解析結果に基づい
て命令コードが移動されて生成された命令ストリームを
実行する。プロセッサ310は、いわゆるスタティック
スケジューリングに基づくプロセッサである。
【0134】以下においては、並列実行の可否をハード
ウェアで動的に決定するダイナミックスケジューリング
に基づくプロセッサ500についての実施の形態につい
て説明する。なお、プロセッサ500は、図示されてい
ない。プロセッサ500は、最大3命令を並列実行する
スーパースカラ方式のプロセッサである。
【0135】プロセッサ500が解読し実行する命令の
フォーマットは、図2に示す命令フォーマットから、並
列実行境界情報を取り除いたものである。命令の供給と
発行とは、プロセッサ310と同様になされるが、命令
内に並列実行境界情報が無いので、各サイクルにおいて
どの命令まで発行可能であるかどうかの検出およびその
制御はプロセッサ500が行なう。 1.1 プロセッサ500の構成 プロセッサ500のハードウェア構成については、その
大部分はプロセッサ310のハードウェア構成と同一で
あるが、命令の発行制御の方法のみが異なる。以下にお
いて、プロセッサ310との相違点を中心として説明す
る。
【0136】相違点は、図4に示す命令レジスタ23、
命令デコーダ32および命令発行制御部31周辺の構成
である。プロセッサ310では、コンパイル装置により
並列実行の可否が静的に解析され、その結果として命令
のフォーマットは、並列実行境界情報を含むので、命令
発行制御部31は、図6に示すように、命令レジスタA
231及び命令レジスタB232にそれぞれ含まれる並
列実行境界情報とフォーマット情報と(合わせて4ビッ
トの情報)を読み出し、第2命令デコーダ34及び第3
命令デコーダ35に対して無動作命令フラグを出力する
という、非常に単純な構成になっている。本実施の形態
のプロセッサ500では、並列実行の可否の解析を、後
述する命令発行制御部171で行なう。
【0137】図25は、本実施の形態のプロセッサ50
0の命令レジスタ170及びその周辺の構成要素の構成
を示すブロック図である。プロセッサ500は、プロセ
ッサ310の命令レジスタ23、命令発行制御部31、
命令デコーダ32に代えて、命令レジスタ170、命令
発行制御部171、命令デコーダ175(図示していな
い)を備えている。
【0138】命令レジスタ170は、命令レジスタA1
701、命令レジスタB1702、命令レジスタC17
03及び命令レジスタD1704を含んでいる。命令デ
コーダ175は、第1命令デコーダ172、第2命令デ
コーダ173及び第3命令デコーダ174を含んでい
る。命令発行制御部171は、命令レジスタ170に含
まれる各命令レジスタに格納されているユニットのフォ
ーマット情報を読み出し、第1命令デコーダ172、第
2命令デコーダ173及び第3命令デコーダ174から
各解読結果を受け取る。次に、命令レジスタA170
1、命令レジスタB1702、命令レジスタC1703
及び命令レジスタD1704に格納されている各命令の
並列実行の可否を判断し、その判断結果に基づいて、第
2命令デコーダ173及び第3命令デコーダ174に対
して、“1”にセットされた無動作命令フラグを出力す
る。つまり、その命令デコーダの解読結果を無効化す
る。その後、各命令デコーダから実行制御部41へ各命
令の制御信号が送られる。
【0139】具体的には、命令発行制御部171は、ま
ず命令レジスタA1701と命令レジスタB1702に
格納されたユニットのフォーマット情報をそれぞれ制御
信号線K21及びK22を介して読み出し、命令レジス
タA1701のユニットのフォーマット情報が“1”の
場合には、第2命令デコーダ173へ出力する無動作命
令フラグを“1”にセットし、無動作命令フラグを制御
信号線K12を介して第2命令デコーダ173へ出力す
る。また、命令レジスタA1701のユニットのフォー
マット情報が“0”であり、かつ命令レジスタB170
2のユニットのフォーマット情報が“1”の場合には、
第3命令デコーダ174へ出力する無動作命令フラグを
“1”にセットし、無動作命令フラグを制御信号線K1
3を介して第3命令デコーダ174へ出力する。
【0140】これらと並行して、命令発行制御部171
は、各命令デコーダ172〜174の解読結果をそれぞ
れ制御信号線K51、K52、K53を介して受け取
り、並列実行の可否を判断する。具体的には、命令発行
制御部171は、まず第1命令デコーダ172の解読結
果のオペコードとオペランドから、この命令(前記オペ
コードとオペランドにより示される命令、第1命令と呼
ぶ。)がどのレジスタのどの部分にデータを格納し、又
はどの部分からデータを参照する命令であるかの情報を
得る。命令発行制御部171は、参照格納資源テーブル
T100と同じテーブルを有しており、このテーブルを
用いて、64ビットレジスタの上位32ビットと下位3
2ビットとをそれぞれ独立の資源とみなし、オペコード
に基づいて、それぞれの資源からデータを参照するか又
はそれぞれの資源にデータを格納するかを判断する。
【0141】続いて、次に他の各命令デコーダにより有
効に命令が解読された場合の解読結果を参照する。具体
的には、第2命令デコーダ173へ出力する無動作命令
フラグが“1”にセットされていない場合には、第2命
令デコーダ173の解読結果を参照し(ここで、解読さ
れた命令を第2命令と呼ぶ。)、1番目の命令と同様に
資源の参照及び格納に関する情報を得る。
【0142】また、第2命令デコーダ173へ出力する
無動作命令フラグが“1”にセットされており、かつ第
3命令デコーダ174へ出力する無動作命令フラグが
“1”にセットされていない場合には、第3命令デコー
ダ174の解読結果を参照し(ここで、解読された命令
を第2命令と呼ぶ。)、1番目の命令と同様に資源の参
照及び格納に関する情報を得る。
【0143】ここで、資源の参照及び格納に関する情報
は、実施の形態1に示すコンパイル装置200の参照格
納資源テーブルT100から得られる情報と同等であ
る。上記の第1命令及び第2命令の2命令の資源の格納
および参照に関する情報から、これらの2命令の間にデ
ータ依存の関係があるかどうかを判断し、データ依存の
関係があった場合には、第2命令は第1命令と同時に実
行することができないので、第2命令を解読する命令デ
コーダ以降の命令デコーダの無動作命令フラグを“1”
にセットし、当該命令デコーダへ出力する。
【0144】同様にして、第3の命令の存在を検出し、
第3の命令が存在する場合には、第1の命令と第3の命
令との間の依存関係及び第2の命令と第3の命令との間
の依存関係を解析し、データ依存関係が存在する場合に
は、第3の命令を解読する命令デコーダの無動作命令フ
ラグを“1”にセットして当該命令デコーダへ出力す
る。次に、当該サイクルで同時実行不可能な命令に関し
ては、その命令デコーダは、無動作命令を含む制御信号
を実行制御部41へ送る。
【0145】最後に、命令発行制御部171は、このサ
イクルで発行されたユニット数の情報を制御信号線K4
1を介して命令バッファ22に送り、命令バッファ22
は、この情報をもとに命令バッファ中の有効なユニット
を示す状態を次の状態に遷移する。1.2 プロセッサ
500の動作次に、プロセッサ500の動作について、
具体的な例を示して説明する。例としては、図20に示
すアセンブラコードによる表現されているプログラムP
90を用いる。プログラムP90は、アセンブラ(アセ
ンブル装置)により出力されたアセンブラコードであ
る。
【0146】プログラムP90は、プロセッサ500に
対応するコンパイル装置によって命令の並べ替えが施さ
れる。この命令の並べ替えは、プロセッサ500の命令
発行制御部171の動作を考慮して、より高い並列度で
実行することを目的として行なわれる。前記コンパイル
装置によってプログラムP90に対して命令の並べ替え
を施し、64ビットずつのパケットにパックして生成さ
れたプログラムP120(実行形式コードにより表現さ
れてる)を図26に示す。
【0147】プログラムP120は、7個の命令P12
1〜P127から構成されており、命令供給単位として
は3個のパケット180、181、182から構成され
ている。パケット180は、3個の命令P121〜P1
23を含み、パケット181は、3個の命令P124〜
P126を含み、パケット182は、1個の命令P12
7を含んでいる。命令P121〜P127は、それぞれ
並列実行境界情報と、フォーマット情報と、命令コード
とを含んでいる。
【0148】命令P121は、命令P91に対応し、命
令P122は、命令P96に対応し、命令P123は、
命令P92に対応し、命令P124は、命令P93に対
応し、命令P125は、命令P97に対応し、命令P1
26は、命令P94に対応し、命令P127は、命令P
95に対応している。以下に、プロセッサ500が図2
6に示すプログラムP120(実行形式コード)を実行
する際の各サイクルにおける動作について説明する。 (第1サイクルの動作)パケット180がメモリから供
給され、パケット180内の3つのユニットが順に命令
レジスタ170に転送される。具体的には、命令P12
1(“vaddw”命令を含む)が命令レジスタA17
01に、命令P122(“mov”命令を含む)が命令
レジスタB1702に、命令P123(“vaddh
i”命令を含む)が命令レジスタC1703に転送され
る。
【0149】次に、命令発行制御部171は、以下に示
すようにして、命令の発行を制御する。命令発行制御部
171は、まず、各命令レジスタに格納されているフォ
ーマット情報を参照して適切な命令デコーダの無動作命
令フラグをセットするが、上記3個の命令レジスタに格
納されているユニットのフォーマット情報は共に“0”
であるので、フォーマット情報による制御は行なわな
い。
【0150】次に、命令発行制御部171は、各命令デ
コーダの解読結果を参照して各命令の格納または参照す
る資源に関する情報を得る。具体的には、命令発行制御
部171は、命令P121に含まれる“vaddw”命
令が、レジスタR0及びレジスタR1の上位32ビット
及び下位32ビットを共に参照してレジスタR1の上位
32ビット及び下位32ビットにデータを格納する命令
であると判断し、命令P122に含まれる“mov”命
令が、レジスタR5の下位32ビットにデータを格納す
る命令であると判断し、命令P123に含まれる“va
ddhi”命令が、レジスタR2及びレジスタR1の上
位32ビットを参照し、レジスタR1の上位32ビット
にデータを格納する命令であると判断する。
【0151】次に、命令発行制御部171は、各命令間
にデータ依存関係が存在するかどうかを判定する。具体
的には、まず、命令発行制御部171は、命令P121
に含まれる“vaddw”命令と命令P122に含まれ
る“mov”命令との間にはデータ依存関係が存在しな
いので、命令P121と命令P122とは同時実行可能
と判断する。次に、命令P121に含まれる“vadd
w”命令と命令P123に含まれる“vaddhi”命
令との間にはレジスタR1の上位32ビットに関してデ
ータ依存が存在すると判定するので、このサイクルで
“vaddhi”命令の発行は不可能であると判断し、
第3命令デコーダ174へ出力する無動作命令フラグを
“1”にセットし、無動作命令フラグを第3命令デコー
ダ174へ出力する。
【0152】以上の命令発行制御部171による制御に
より、このサイクルでは命令P121に含まれる“va
ddw”命令と命令P122に含まれる“mov”命令
の2命令が発行されることになる。次に、命令発行制御
部171は、2個のユニットを発行したという情報を命
令バッファ22へ送る。残った命令P123に含まれる
“vaddhi”命令は、命令バッファ22に蓄積され
る。
【0153】実行部40は、レジスタR0及びレジスタ
R1について、上位及び下位それぞれ独立に加算を行
い、これらの加算結果をレジスタR1の上位及び下位に
格納し、レジスタR5の下位32ビットに定数0x12
34を転送する。 (第2サイクルの動作)パケット181がメモリから供
給され、命令バッファ22に蓄積されている“vadd
hi”命令と、パケット181内の各ユニットが順に命
令レジスタ170に転送される。具体的には、命令P1
23に含まれる“vaddhi”命令が命令レジスタA
1701に、命令P124に含まれる“mov”命令以
降のパケット181内の各ユニットが命令レジスタB1
702からD1704へ順に格納されていく。
【0154】次に、命令発行制御部171は命令の発行
を制御する。具体的には、第1サイクルの場合と同様に
命令レジスタ内の全てのユニットのフォーマット情報が
“0”であるので、命令発行制御部171はフォーマッ
ト情報による制御は行なわない。次に、命令発行制御部
171は、各命令デコーダの解読結果を参照して各命令
が格納または参照する資源に関する情報を得る。そし
て、第1サイクルの場合と同様に各命令間の依存関係を
解析する。
【0155】この場合、命令P123に含まれる“va
ddhi”命令のデスティネーションレジスタがレジス
タR1であり、命令P124に含まれる“mov”命令
のソースレジスタもレジスタR1であるが、“vadd
hi”命令はレジスタR1の上位32ビットのみに格納
する命令であり、“mov”命令はレジスタR1の下位
32ビットのみを参照する命令であるので、命令発行制
御部171は、これらの命令の間にはデータ依存関係は
存在しないと判定する。同様に、命令P125に含まれ
る“st”命令についても上記2つの命令との間にデー
タ依存関係が存在しないと判定し、このサイクルでは3
つの命令デコーダ全ての解読結果が有効となり、3個の
命令を発行する。次に、命令発行制御部171は、3個
のユニットを発行したという情報を命令バッファ22に
送る。残った命令P126に含まれる“add”命令は
命令バッファ22に蓄積される。
【0156】実行部40は、レジスタR2とレジスタR
1とのそれぞれ上位32ビットを加算し、その加算結果
をレジスタR1の上位32ビットに格納し、レジスタR
1の下位32ビットをレジスタR3の下位32ビットに
転送し、レジスタR5の下位32ビットをレジスタR6
の下位32ビットをアドレスとして示されるメモリ内の
位置に転送する。
【0157】(第3サイクルの動作)パケット182が
メモリから供給され、命令バッファ22に蓄積されてい
る“add”命令(命令P126に含まれる)と、パケ
ット182内のユニットである“st”命令(命令P1
27に含まれる)が順に命令レジスタ170(命令レジ
スタA1701及び命令レジスタB1702)に転送さ
れる。
【0158】そして、上記に説明した各サイクルと同様
にして、命令発行制御部171は制御を行い、このサイ
クルでは、命令レジスタ170に転送された2つの命令
を同時に発行する。これにより、供給されたユニットは
全て発行されたことになる。実行部40は、レジスタR
1の下位32ビットに定数0x3を加算し、その加算結
果をレジスタR1の下位32ビットに格納し、レジスタ
R3の下位32ビットをレジスタR4の下位32ビット
をアドレスとして示されるメモリ内の位置に転送する。
【0159】プロセッサ500が実際に実行するサイク
ルG121、G122、G133を図26に示す。サイ
クルG121は、命令P121と命令P122とを含
む。サイクルG122は、命令P123と命令P124
と命令P125とを含む。サイクルG123は、命令P
126と命令P127とを含む。以上のようにして、プ
ロセッサ500は、図26に示すプログラムP120
(実行形式コード)を3サイクルで実行する。
【0160】ここで、プロセッサ500と従来のプロセ
ッサとにおいて、プログラムP120を実行させた場合
について比較する。従来のプロセッサの場合、第1サイ
クルにおいては、プロセッサ500と同様に動作する。
第2サイクルにおいて、従来のプロセッサは、命令レジ
スタAに格納されている命令P123に含まれる“va
ddhi”命令と命令レジスタBに格納されている命令
P123に含まれる“mov”命令との間の依存関係を
判定する際に、命令コード内のレジスタ番号を参照し
て、レジスタ全体を1つの資源として扱い、各命令が格
納または参照する資源に関する情報を得る。具体的に
は、“vaddhi”命令はレジスタR2とレジスタR
1を参照してレジスタR1に格納する命令であると判断
し、“mov”命令はレジスタR1を参照してレジスタ
R3に格納する命令であると判断する。このため、これ
ら2つの命令間にはレジスタR1に関してデータ依存が
存在すると判断し、これら2つの命令は、同時実行され
ない。つまり、このサイクルでは“vaddhi”命令
のみが発行されることになる。
【0161】これにより、図26に示すプログラムP1
20(実行形式コード)を従来のプロセッサにて実行す
ると、図27に示すように、サイクルG131〜G13
4の4サイクルを要することになる。サイクルG131
は、命令P121及びP122を含み、サイクルG13
2は、命令P123を含み、サイクルG133は、命令
P124、P125及びP126を含み、サイクルG1
34は、命令P127を含む。
【0162】以上説明したように、従来のプロセッサに
よると、本発明のプロセッサ500の場合に比べて1サ
イクル増えていることが分かる。図26に示すプログラ
ムP120(実行形式コード)内の命令をコンパイル装
置によってどのように並べ替えても、従来のプロセッサ
においてこのコードの実行を4サイクルより縮めること
はできない。 III その他の変形例 以上、本発明に係るプロセッサおよびコンパイル装置に
ついて、実施の形態に基づいて説明したが、本発明はこ
れらの実施の形態に限られないことは勿論である。次の
ように構成してもよい。 (1)上記実施の形態のコンパイル装置では、依存関係
解析部110は、参照格納資源テーブルT100を参照
して、命令と命令との間におけるレジスタの一部分の領
域に関する依存関係を解析するとしているが、この構成
に限らない。
【0163】命令再配置部111が、図19に示すフロ
ーチャートのステップS2において、配置候補集合を生
成する際に、参照格納資源テーブルT100を参照し
て、真に他の命令に依存していない命令の集合を求め
る、という構成にしてもよい。このように構成する場合
においても、レジスタの一部分の領域を資源とした依存
関係の検出ができるので、従来の方法に比べてより厳密
な候補ノードの抽出が可能となり、並列実行の可能性が
向上する。こうして、対象プロセッサでの実行サイクル
数を削減するという上記実施の形態と同様の有意な効果
が得られる。 (2)上記実施の形態のプロセッサおよびコンパイル装
置では、レジスタを上位と下位の2つの部分に分割し、
それぞれを1つの資源として扱っていたが、本発明はこ
の分割方法に限定されるものではない。レジスタを3つ
以上の部分に分割してもよい。また、それぞれの資源を
分割するビット幅を同一としなくてもよい。これを実現
するためには、プロセッサでは、図11に示すレジスタ
ファイル及びその周辺の構成を前記分割に合致するよう
に変更すればよい。また、コンパイル装置の命令スケジ
ューリング部及びスーパースカラプロセッサの命令発行
制御部では、図18に示す参照格納資源テーブルT10
0を前記分割に合致するように変更すればよい。 (3)上記実施の形態のプロセッサでは、同一サイクル
において、複数の命令が1個のレジスタの同一の部分の
領域にデータを書き込もうとする場合には、レジスタ書
込制御部431は、プログラムにおける順番が後方の命
令の実行結果の書き込みを優先するように制御している
が、本発明は、この優先順位付けの方法に限定されるも
のではない。例えば、命令で指定されたオペレーション
の種類によって、どちらの命令の実行結果の書き込みを
優先するかを選択する構成にしてもよい。具体的には、
レジスタ書込制御部431は、命令の種類毎に優先度を
あらかじめ記憶しており、前記複数の命令の優先度を読
み出し、読み出した優先度の最も高い命令について、前
記レジスタの同一の部分へのデータの格納を行うように
決定する。 (4)上記実施の形態のプロセッサでは、3個の命令を
同時実行するように構成していたが、本発明はこの同時
実行命令数に限定されるものではない。例えば、2個の
命令を同時発行する構成にしてもよい。さらに多くの命
令を同時発行する構成にしてもよい。 (5)上記実施の形態のプロセッサでは、可変長の命令
を実行するとしているが、本発明はこの命令フォーマッ
トに限定されるものではない。固定長の命令フォーマッ
トを採用してもよく、この場合においても、同様の効果
を奏する。 (6)本発明は、本実施の形態に示し上記に説明する手
順を含むコンパイル方法であるとしてもよい。また、前
記コンパイル方法をコンピュータにより実現するコンパ
イルプログラムであるしてもよいし、前記コンパイルプ
ログラムからなるデジタル信号であるとしてもよい。ま
た、本発明は、前記コンパイルプログラムをコンピュー
タ読み取り可能な記録媒体、例えば、フロッピーディス
ク、ハードディスク、CD―ROM、MO、DVDなど
の記録媒体、に記録したものとしてもよいし、これらの
記録媒体としてもよい。また、本発明は、前記コンパイ
ルプログラムを、インターネットを代表とするネットワ
ークを経由して伝送するものとしてもよい。 (7)本発明は、本実施の形態に示すコンパイル装置に
より生成された実行形式コードをコンピュータ読み取り
可能な記録媒体、例えば、フロッピーディスク、ハード
ディスク、CD―ROM、MO、DVD、半導体メモリ
などに記録したものとしてもよいし、これらの記録媒体
としてもよい。 (8)本発明は、上記に示す複数の実施の形態、これら
の複数の変形例、又は複数の実施の形態及びこれらの複
数の変形例の一部を組み合わるとしてもよい。
【0164】
【発明の効果】上記に説明するように、本発明は、複数
の命令を1のサイクルにおいて実行するプロセッサであ
って、レジスタと命令読出手段と解読手段とアクセス手
段とを含み、前記命令読出手段は、外部のプログラムか
ら少なくとも第1命令と第2命令とを含む複数の命令を
読み出し、前記第1命令は、1のレジスタの全部又は部
分である第1領域へのアクセス指示を含み、前記第2命
令は、前記レジスタの全部又は部分である第2領域への
アクセス指示を含み、ここで、前記第1領域が前記レジ
スタの全部の領域である場合には、前記第2領域は前記
レジスタの部分の領域であり、前記第2領域が前記レジ
スタの全部の領域である場合には、前記第1領域は前記
レジスタの部分の領域であり、また、前記2個のアクセ
ス指示のうち少なくとも1個は、前記レジスタの全部又
は部分の領域へのデータの格納の指示であり、前記解読
手段は、1のサイクルにおいて、読み出された命令毎に
命令を解読し、命令に含まれる少なくともレジスタとレ
ジスタの領域とに関する解読情報を出力し、前記解読情
報は、少なくとも前記レジスタと前記第1領域と前記第
2領域とに関する情報を含み、前記アクセス手段は、1
のサイクルにおいて、前記解読情報に含まれる前記レジ
スタの前記第1領域へのアクセスと、前記レジスタの前
記第2領域へのアクセスとを実行する。
【0165】この構成によると、プログラム中におい
て、1のレジスタの前記第1部分をアクセスする命令と
同じレジスタの前記第2部分をアクセスする別の命令が
ある場合に、前記2個の命令を1のサイクルにおいて実
行することができるので、従来のプロセッサと比較する
と、実行サイクル数を削減することができる。ここで、
前記各命令は、並列実行の可否を示す並列実行情報を含
み、前記解読手段は、前記命令に含まれている並列実行
情報を基にして、1のサイクルにおいて実行する命令の
集合を決定する命令発行制御部と、読み出された前記複
数の命令のうち、前記集合に含まれる命令を解読し、他
の命令の解読を停止する命令解読部とを含むように構成
してもよい。
【0166】この構成によると、命令に含まれる並列実
行情報を基にして、1のサイクルに含まれない命令の解
読を停止して、1のサイクルに含まれる命令のみを実行
することができる。ここで、前記解読情報は、命令に含
まれるオペコードを含み、前記プロセッサは、さらに、
1のサイクルにおいて、前記解読情報に含まれるオペコ
ードとレジスタとレジスタの領域とに関する情報とに基
づいて、命令毎に演算又はメモリアクセスを行い、演算
情報を生成する演算手段を含み、前記演算情報は、前記
第1命令による第1演算情報と、前記第2命令による第
2演算情報とを含み、レジスタへデータを格納する前記
アクセス手段は、前記第1演算情報と、前記第2演算情
報と、他の命令による演算情報とのうちの1の演算情報
を選択し、選択した演算情報の前記第1領域に対応する
情報を1のレジスタの前記第1領域へ書き込む第1選択
部と、前記第1演算情報と、前記第2演算情報と、他の
命令による演算情報とのうちの1の演算情報を選択し、
選択した演算情報の前記第2領域に対応する情報を1の
レジスタの前記第2領域へ書き込む第2選択部と、1の
サイクルにおいて、前記解読情報に含まれる前記レジス
タと前記第1領域とに関する情報に基づいて、前記第1
選択部に対して、前記第1演算情報を選択し、前記第1
演算情報を前記レジスタの前記第1領域へ書き込むよう
に制御し、前記解読情報に含まれる前記レジスタと前記
第2領域とに関する情報に基づいて、前記第2選択部に
対して、前記第2演算情報を選択し、前記第2演算情報
を前記レジスタの前記第2領域へ書き込むように制御す
るレジスタ書込制御部とを含むように構成してもよい。
【0167】この構成によると、1のサイクルにおい
て、別々の命令による別々の演算情報を、それぞれ1の
レジスタの第1領域と第2領域とに書き込むことができ
るので、前記2個の命令を1のサイクルにおいて実行す
ることができる。ここで、前記第1命令に含まれるアク
セスの対象となる前記第1領域と、前記第2命令に含ま
れるアクセスの対象となる前記第2領域とは、交わりが
なく、それぞれ部分の領域であり、前記第1命令は、前
記レジスタの第1領域へのデータの格納指示を含み、前
記第2命令は、前記レジスタの前記第2領域からのデー
タの参照指示を含み、前記アクセス手段は、1のサイク
ルにおいて、レジスタの第1領域へのデータの格納と、
前記レジスタの第2領域からのデータの参照とを実行す
るように構成してもよい。
【0168】この構成によると、1のレジスタの前記第
1部分へデータを格納する命令と同じレジスタの前記第
2部分からデータを参照する別の命令がある場合に、前
記2個の命令を1のサイクルにおいて実行することがで
きるので、従来のプロセッサと比較すると、実行サイク
ル数を削減することができる。ここで、前記第1命令に
含まれるアクセスの対象となる前記第1領域と、前記第
2命令に含まれるアクセスの対象となる前記第2領域と
は、交わりがなく、それぞれ部分の領域であり、前記第
1命令は、前記レジスタの第1領域へのデータの格納指
示を含み、前記第2命令は、前記レジスタの前記第2領
域へのデータの格納指示を含み、前記アクセス手段は、
1のサイクルにおいて、レジスタの第1領域へのデータ
の格納と、前記レジスタの第2領域へのデータの格納と
を実行するように構成してもよい。
【0169】この構成によると、1のレジスタの前記第
1部分へデータを格納する命令と同じレジスタの前記第
2部分へデータを格納する別の命令がある場合に、前記
2個の命令を1のサイクルにおいて実行することができ
るので、従来のプロセッサと比較すると、実行サイクル
数を削減することができる。ここで、前記第1命令に含
まれるアクセスの対象となる前記第1領域と、前記第2
命令に含まれるアクセスの対象となる前記第2領域と
は、第3領域において重なりを有し、前記第1命令は、
前記レジスタの第1領域へのデータの格納指示を含み、
前記第2命令は、前記レジスタの前記第2領域へのデー
タの格納指示を含み、前記アクセス手段は、1のサイク
ルにおいて、レジスタの第1領域から第3領域を除く領
域へのデータの格納と、レジスタの第3領域へのデータ
の格納と、前記レジスタの第2領域から第3領域を除く
領域へのデータの格納とを実行するように構成してもよ
い。
【0170】この構成によると、1のレジスタの一部に
データを格納する命令と、同じレジスタの一部または全
部にデータを格納する命令とを、同一サイクルにおい
て、実行することができるので、同一サイクルにおいて
1のレジスタに対して、1の命令でしか書き込むことの
できない従来のプロセッサと比較すると、実行サイクル
数を削減することができる。
【0171】ここで、前記アクセス手段は、前記プログ
ラム内において、第1命令及び第2命令のうち、後方に
記録されている命令により、前記レジスタの第3領域へ
のデータの格納を行うように決定するように構成しても
よい。この構成によると、後方に記録されている有効な
命令のみによりデータを格納することができる。
【0172】ここで、前記アクセス手段は、あらかじめ
命令の種類毎に優先度を記憶しており、前記優先度を用
いて、第1命令及び第2命令のうち、いずれの命令によ
り、前記レジスタの第3領域へのデータの格納を行うか
を決定するように構成してもよい。この構成によると、
優先度の高い命令のみによりデータを格納することがで
きる。
【0173】ここで、前記解読手段は、命令解読部と命
令発行制御部とを含み、前記命令解読部は、1のサイク
ルにおいて、読み出される命令毎に、命令の解読又は解
読の停止の指示により、命令を解読し命令に含まれる少
なくともレジスタとレジスタの領域とに関する解読情報
を出力し、又は命令の解読を停止し、ここで、前記解読
される複数の命令には、少なくとも前記第1命令と前記
第2命令とが含まれ、前記解読情報は、少なくとも前記
レジスタと前記第1領域と前記第2領域とに関する情報
を含み、前記命令発行制御部は、1のサイクルにおい
て、読み出される命令毎に、命令を解読する指示を前記
命令解読部へ出力することにより、前記命令解読部に対
して各命令を解読するように制御し、前記命令解読部に
よる各命令の解読後に、前記レジスタと前記第1領域と
前記第2領域とに関する情報を含む解読情報を受け取
り、前記第1領域と前記第2領域とが同一領域であるか
否かを判断し、同一領域であると判断する場合に、前記
第2命令の解読を停止する指示を前記命令解読部へ出力
することにより、前記命令解読部に対して前記第2命令
の解読を停止するように制御するように構成してもよ
い。
【0174】この構成によると、2個の命令においてア
クセスされるレジスタの各部分が同一である場合に、前
記2個の命令間に依存関係がないとみなして、2個の命
令のうちの1個の命令の解読を停止するので、2個の命
令においてアクセスされるレジスタの各部分が異なる場
合には、前記2個の命令を1のサイクルにおいて実行で
きる。その結果、2個の命令を並列実行できる場合が増
え、従来のプロセッサと比較すると、実行サイクル数を
削減することができる。
【0175】ここで、前記命令発行制御部は、命令の種
類と、前記命令がデータを参照し又はデータを格納する
レジスタの領域との組を複数個含む参照格納資源表を含
み、前記命令発行制御部は、前記解読情報から、前記参
照格納資源表を用いて、各命令に含まれるレジスタの領
域に関する情報を取得するように構成してもよい。この
構成によると、参照格納資源表から、各命令に含まれる
レジスタの領域に関する情報を取得することができる。
【0176】また、本発明は、高級言語により記述され
たソースプログラムからオブジェクトコードを生成する
コンパイル装置であって、高級言語により記述されたソ
ースプログラムを記憶している記憶手段と、前記記憶手
段からソースプログラムを読み出し、読み出したソース
プログラムに翻訳処理を施して、レジスタに関する情報
を含む1以上の実行形式命令から構成される実行形式プ
ログラムを生成する実行形式コード生成手段と、前記実
行形式プログラム中の1以上の実行形式命令を、各実行
形式命令に含まれるレジスタの一部分の領域に関する情
報に基づいて、並列実行できる複数の実行形式命令が隣
接するように並べ換える命令スケジューリング手段と、
並べ換えられた各実行形式命令を基にして、オブジェク
トコードを生成するオブジェクトコード生成手段とを含
む。
【0177】この構成によると、各実行形式命令におい
てアクセスされるレジスタの部分を単位として、複数の
実行形式命令を並べ換えるので、このコンパイル装置に
より出力されたオブジェクトコードを、対象プロセッサ
において実行する場合に、複数の実行形式命令において
並列実行できる場合が増え、実行サイクル数を削減する
ことができる。このように、このコンパイル装置は、よ
り実行サイクル数の少ない実行コードを生成することが
できる。
【0178】ここで、前記命令スケジューリング手段
は、前記1以上の実行形式命令について、各実行形式命
令が並べられている順序と、各実行形式命令に含まれる
レジスタの一部分の領域に関する情報とに基づいて、各
実行形式命令間の依存関係を示す依存関係情報を生成す
る依存関係解析部と、生成された前記依存関係情報に基
づいて、並列実行可能な命令の集合を決定し、また、前
記実行形式命令を再配置する命令再配置部と、前記決定
された集合毎に、並列実行の可否を示す並列実行情報を
付加する実行境界付加部とを含むように構成してもよ
い。
【0179】この構成によると、各実行形式命令におい
てアクセスされるレジスタの部分を単位として、複数の
実行形式命令間の依存関係を解析して、並列実行可能な
命令の集合毎に並行実行情報を付加し、複数の実行形式
命令を並べ換えて前記実行形式命令を再配置するので、
このコンパイル装置により出力されたオブジェクトコー
ドを、対象プロセッサにおいて実行することにより、プ
ロセッサは、前記並行実行情報により容易に並行実行で
きる命令の集合を検出でき、また複数の実行形式命令に
おいて並列実行できる場合が増え、実行サイクル数を削
減することができる。このように、このコンパイル装置
は、より実行サイクル数の少ない実行コードを生成する
ことができる。
【0180】ここで、前記依存関係解析部は、実行形式
命令の種類と、前記実行形式命令がデータを参照し、又
はデータを格納するレジスタの一部分の領域との組を複
数個含む参照格納資源表と、各実行形式命令に含まれる
レジスタの一部分の領域に関する情報を参照格納資源表
から取得する資源取得部と、各実行形式命令が並べられ
ている順序と、前記取得したレジスタの一部分の領域に
関する情報とに基づいて、各実行形式命令間の依存関係
を示す依存関係情報を生成する依存関係生成部とを含む
ように構成してもよい。
【0181】この構成によると、参照格納資源表を用い
て各実行形式命令間の依存関係を生成することができ
る。また、高級言語により記述されたソースプログラム
を記憶している記憶手段を備えるコンパイル装置により
用いられ、前記ソースプログラムからオブジェクトコー
ドを生成するコンパイルプログラムを記録しているコン
ピュータ読み取り可能な記録媒体であって、前記コンパ
イルプログラムは、前記記憶手段からソースプログラム
を読み出し、読み出したソースプログラムに翻訳処理を
施して、レジスタに関する情報を含む1以上の実行形式
命令から構成される実行形式プログラムを生成する実行
形式コード生成ステップと、前記実行形式プログラム中
の1以上の実行形式命令を、各実行形式命令に含まれる
レジスタの一部分の領域に関する情報に基づいて、並列
実行できる複数の実行形式命令が隣接するように並べ換
える命令スケジューリングステップと、並べ換えられた
各実行形式命令を基にして、オブジェクトコードを生成
するオブジェクトコード生成ステップとを含む。
【0182】ここで、前記命令スケジューリングステッ
プは、前記1以上の実行形式命令について、各実行形式
命令が並べられている順序と、各実行形式命令に含まれ
るレジスタの一部分の領域に関する情報とに基づいて、
各実行形式命令間の依存関係を示す依存関係情報を生成
する依存関係解析サブステップと、生成された前記依存
関係情報に基づいて、並列実行可能な命令の集合を決定
し、また、前記実行形式命令を再配置する命令再配置サ
ブステップと、前記決定された集合毎に、並列実行の可
否を示す並列実行情報を付加する実行境界付加サブステ
ップとを含むように構成してもよい。
【0183】ここで、前記コンパイル装置は、実行形式
命令の種類と、前記実行形式命令がデータを参照し、又
はデータを格納するレジスタの一部分の領域との組を複
数個含む参照格納資源表を有し、前記依存関係解析サブ
ステップは、各実行形式命令に含まれるレジスタの一部
分の領域に関する情報を参照格納資源表から取得する資
源取得サブステップと、各実行形式命令が並べられてい
る順序と、前記取得したレジスタの一部分の領域に関す
る情報とに基づいて、各実行形式命令間の依存関係を示
す依存関係情報を生成する依存関係生成サブステップと
を含むように構成してもよい。
【0184】この記録媒体に記録されているコンパイル
プログラムをコンピュータにより実行することにより、
前記コンパイル装置と同様の効果を奏することは明らか
である。
【図面の簡単な説明】
【図1】本発明に係る1の実施の形態としてのプログラ
ム実行システム400の構成を示すブロック図である。
【図2】図1に示すプログラム実行システム400を構
成する応用装置300に組み込まれているプロセッサ3
10が実行する命令のデータ構造を示す。
【図3】プロセッサ310における命令供給単位と、実
行グループの一例を示す。
【図4】プロセッサ310のハードウェア構成を示すブ
ロック図である。
【図5】プロセッサ310の命令レジスタ23及びその
周辺の構成要素の構成を示すブロック図である。
【図6】プロセッサ310の命令発行制御部31及びそ
の周辺の構成要素の構成を示すブロック図である。
【図7】命令レジスタA231のユニット(ユニット
1)のフォーマット情報が“1”である場合における、
プロセッサ310の命令発行制御部31及びその周辺の
構成要素の動作を示す。
【図8】命令レジスタA231のユニット1のフォーマ
ット情報が“0”、命令レジスタB232のユニット2
のフォーマット情報が“1”である場合におけるプロセ
ッサ310の命令発行制御部31及びその周辺の構成要
素の動作を示す。
【図9】命令レジスタA231のユニット1の並列実行
境界情報が“1”であり、フォーマット情報が“0”で
ある場合におけるプロセッサ310の命令発行制御部3
1及びその周辺の構成要素の動作を示す。
【図10】命令レジスタA231のユニット1の並列実
行境界情報が“0”であり、命令レジスタB232のユ
ニット2の並列実行境界情報が“1”であり、ユニット
1とユニット2とのフォーマット情報が共に“0”であ
る場合おけるプロセッサ310の命令発行制御部31及
びその周辺の構成要素の動作を示す。
【図11】プロセッサ310のレジスタファイル43及
びその周辺の構成要素の構成を示すブロック図である。
【図12】プロセッサ310の動作について説明するた
めの、64ビットデータを扱う処理の一例を示すフロー
チャートである。
【図13】図12に示す処理をプロセッサ310に行わ
せる場合のプログラムの実行形式コードの例と実行順序
とを示す。
【図14】図12に示す処理を従来のプロセッサに行わ
せる場合のプログラムの実行形式コードの例と実行順序
とを示す。
【図15】コンパイル装置200の構成を示すブロック
図である。
【図16】依存グラフを説明するためのプログラムP8
0を示す。
【図17】プログラムP80に対応する依存グラフG1
00を視覚的に表現したものである。
【図18】参照格納資源テーブルの一例を示す。
【図19】命令再配置部111の処理の詳細を示すフロ
ーチャートである。
【図20】コンパイル装置200の動作を説明するため
に一例として用いるプログラムP90を示す。
【図21】プログラムP90を基にして、依存関係解析
部110により生成された依存グラフG120を視覚的
に表現したものである。
【図22】プログラムP90に対応し、コンパイル装置
200により生成された実行形式コードとその実行グル
ープとを示す。
【図23】従来のコンパイル装置により生成された依存
グラフG130を視覚的に表現したものである。プログ
ラムP90に対応している。
【図24】従来のコンパイル装置により生成された最終
的な実行形式コードであるプログラムP110と実行の
順序とを示す。
【図25】本発明に係る別の1の実施の形態としてのプ
ロセッサ500の命令レジスタ170及びその周辺の構
成要素の構成を示すブロック図である。
【図26】プロセッサ500に対応するコンパイル装置
によって命令の並べ替えが施されて生成されたプログラ
ムP120と各サイクルで実行される命令を示す。
【図27】プログラムP120を従来のプロセッサにて
実行する場合におけるサイクルを示す。
【符号の説明】
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 データバス 100 コンパイラ上流部 101 アセンブラコード生成部 102 命令スケジューリング部 103 オブジェクトコード生成部 110 依存関係解析部 111 命令再配置部 112 実行境界付加部 120 命令集合化部 130 ソースコード記憶部 140 オブジェクトコード記憶部 170 命令レジスタ 171 命令発行制御部 172 命令デコーダ 173 第1命令デコーダ 174 第2命令デコーダ 175 第3命令デコーダ 200 コンパイル装置 210 コンパイル部 231 命令レジスタA 232 命令レジスタB 233 命令レジスタC 234 命令レジスタD 300 応用装置 310 プロセッサ 400 プログラム実行システム 500 プロセッサ 1701 命令レジスタA 1702 命令レジスタB 1703 命令レジスタC 1704 命令レジスタD

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 複数の命令を1のサイクルにおいて実行
    するプロセッサであって、 レジスタと命令読出手段と解読手段とアクセス手段とを
    含み、 前記命令読出手段は、外部のプログラムから少なくとも
    第1命令と第2命令とを含む複数の命令を読み出し、 前記第1命令は、1のレジスタの全部又は部分である第
    1領域へのアクセス指示を含み、前記第2命令は、前記
    レジスタの全部又は部分である第2領域へのアクセス指
    示を含み、ここで、前記第1領域が前記レジスタの全部
    の領域である場合には、前記第2領域は前記レジスタの
    部分の領域であり、前記第2領域が前記レジスタの全部
    の領域である場合には、前記第1領域は前記レジスタの
    部分の領域であり、また、前記2個のアクセス指示のう
    ち少なくとも1個は、前記レジスタの全部又は部分の領
    域へのデータの格納の指示であり、 前記解読手段は、1のサイクルにおいて、読み出された
    命令毎に命令を解読し、命令に含まれる少なくともレジ
    スタとレジスタの領域とに関する解読情報を出力し、 前記解読情報は、少なくとも前記レジスタと前記第1領
    域と前記第2領域とに関する情報を含み、 前記アクセス手段は、1のサイクルにおいて、前記解読
    情報に含まれる前記レジスタの前記第1領域へのアクセ
    スと、前記レジスタの前記第2領域へのアクセスとを実
    行することを特徴とするプロセッサ。
  2. 【請求項2】 前記各命令は、並列実行の可否を示す並
    列実行情報を含み、 前記解読手段は、 前記命令に含まれている並列実行情報を基にして、1の
    サイクルにおいて実行する命令の集合を決定する命令発
    行制御部と、 読み出された前記複数の命令のうち、前記集合に含まれ
    る命令を解読し、他の命令の解読を停止する命令解読部
    とを含むことを特徴とする請求項1に記載のプロセッ
    サ。
  3. 【請求項3】 前記解読情報は、命令に含まれるオペコ
    ードを含み、 前記プロセッサは、さらに、 1のサイクルにおいて、前記解読情報に含まれるオペコ
    ードとレジスタとレジスタの領域とに関する情報とに基
    づいて、命令毎に演算又はメモリアクセスを行い、演算
    情報を生成する演算手段を含み、 前記演算情報は、前記第1命令による第1演算情報と、
    前記第2命令による第2演算情報とを含み、 レジスタへデータを格納する前記アクセス手段は、 前記第1演算情報と、前記第2演算情報と、他の命令に
    よる演算情報とのうちの1の演算情報を選択し、選択し
    た演算情報の前記第1領域に対応する情報を1のレジス
    タの前記第1領域へ書き込む第1選択部と、 前記第1演算情報と、前記第2演算情報と、他の命令に
    よる演算情報とのうちの1の演算情報を選択し、選択し
    た演算情報の前記第2領域に対応する情報を1のレジス
    タの前記第2領域へ書き込む第2選択部と、 1のサイクルにおいて、前記解読情報に含まれる前記レ
    ジスタと前記第1領域とに関する情報に基づいて、前記
    第1選択部に対して、前記第1演算情報を選択し、前記
    第1演算情報を前記レジスタの前記第1領域へ書き込む
    ように制御し、前記解読情報に含まれる前記レジスタと
    前記第2領域とに関する情報に基づいて、前記第2選択
    部に対して、前記第2演算情報を選択し、前記第2演算
    情報を前記レジスタの前記第2領域へ書き込むように制
    御するレジスタ書込制御部とを含むことを特徴とする請
    求項2に記載のプロセッサ。
  4. 【請求項4】 前記第1命令に含まれるアクセスの対象
    となる前記第1領域と、前記第2命令に含まれるアクセ
    スの対象となる前記第2領域とは、交わりがなく、それ
    ぞれ部分の領域であり、 前記第1命令は、前記レジスタの第1領域へのデータの
    格納指示を含み、前記第2命令は、前記レジスタの前記
    第2領域からのデータの参照指示を含み、 前記アクセス手段は、1のサイクルにおいて、レジスタ
    の第1領域へのデータの格納と、前記レジスタの第2領
    域からのデータの参照とを実行することを特徴とする請
    求項2に記載のプロセッサ。
  5. 【請求項5】 前記解読情報は、命令に含まれるオペコ
    ードを含み、 前記プロセッサは、さらに、 1のサイクルにおいて、前記解読情報に含まれるオペコ
    ードとレジスタとレジスタの領域とに関する情報とに基
    づいて、命令毎に演算又はメモリアクセスを行い、演算
    情報を生成する演算手段を含み、 前記演算情報は、前記第1命令による第1演算情報と、
    前記第2命令による第2演算情報とを含み、 レジスタへデータを格納する前記アクセス手段は、 前記第1演算情報と、前記第2演算情報と、他の命令に
    よる演算情報とのうちの1の演算情報を選択し、選択し
    た演算情報の前記第1領域に対応する情報を1のレジス
    タの前記第1領域へ書き込む第1選択部と、 前記第1演算情報と、前記第2演算情報と、他の命令に
    よる演算情報とのうちの1の演算情報を選択し、選択し
    た演算情報の前記第2領域に対応する情報を1のレジス
    タの前記第2領域へ書き込む第2選択部と、 1のサイクルにおいて、前記解読情報に含まれる前記レ
    ジスタと前記第1領域とに関する情報に基づいて、前記
    第1選択部に対して、前記第1演算情報を選択し、前記
    第1演算情報を前記レジスタの前記第1領域へ書き込む
    ように制御し、前記解読情報に含まれる前記レジスタと
    前記第2領域とに関する情報に基づいて、前記第2選択
    部に対して、前記第2演算情報を選択し、前記第2演算
    情報を前記レジスタの前記第2領域へ書き込むように制
    御するレジスタ書込制御部とを含むことを特徴とする請
    求項4に記載のプロセッサ。
  6. 【請求項6】 前記第1命令に含まれるアクセスの対象
    となる前記第1領域と、前記第2命令に含まれるアクセ
    スの対象となる前記第2領域とは、交わりがなく、それ
    ぞれ部分の領域であり、 前記第1命令は、前記レジスタの第1領域へのデータの
    格納指示を含み、前記第2命令は、前記レジスタの前記
    第2領域へのデータの格納指示を含み、 前記アクセス手段は、1のサイクルにおいて、レジスタ
    の第1領域へのデータの格納と、前記レジスタの第2領
    域へのデータの格納とを実行することを特徴とする請求
    項2に記載のプロセッサ。
  7. 【請求項7】 前記解読情報は、命令に含まれるオペコ
    ードを含み、 前記プロセッサは、さらに、 1のサイクルにおいて、前記解読情報に含まれるオペコ
    ードとレジスタとレジスタの領域とに関する情報とに基
    づいて、命令毎に演算又はメモリアクセスを行い、演算
    情報を生成する演算手段を含み、 前記演算情報は、前記第1命令による第1演算情報と、
    前記第2命令による第2演算情報とを含み、 レジスタへデータを格納する前記アクセス手段は、 前記第1演算情報と、前記第2演算情報と、他の命令に
    よる演算情報とのうちの1の演算情報を選択し、選択し
    た演算情報の前記第1領域に対応する情報を1のレジス
    タの前記第1領域へ書き込む第1選択部と、 前記第1演算情報と、前記第2演算情報と、他の命令に
    よる演算情報とのうちの1の演算情報を選択し、選択し
    た演算情報の前記第2領域に対応する情報を1のレジス
    タの前記第2領域へ書き込む第2選択部と、 1のサイクルにおいて、前記解読情報に含まれる前記レ
    ジスタと前記第1領域とに関する情報に基づいて、前記
    第1選択部に対して、前記第1演算情報を選択し、前記
    第1演算情報を前記レジスタの前記第1領域へ書き込む
    ように制御し、前記解読情報に含まれる前記レジスタと
    前記第2領域とに関する情報に基づいて、前記第2選択
    部に対して、前記第2演算情報を選択し、前記第2演算
    情報を前記レジスタの前記第2領域へ書き込むように制
    御するレジスタ書込制御部とを含むことを特徴とする請
    求項6に記載のプロセッサ。
  8. 【請求項8】 前記第1命令に含まれるアクセスの対象
    となる前記第1領域と、前記第2命令に含まれるアクセ
    スの対象となる前記第2領域とは、第3領域において重
    なりを有し、 前記第1命令は、前記レジスタの第1領域へのデータの
    格納指示を含み、前記第2命令は、前記レジスタの前記
    第2領域へのデータの格納指示を含み、 前記アクセス手段は、1のサイクルにおいて、レジスタ
    の第1領域から第3領域を除く領域へのデータの格納
    と、レジスタの第3領域へのデータの格納と、前記レジ
    スタの第2領域から第3領域を除く領域へのデータの格
    納とを実行することを特徴とする請求項2に記載のプロ
    セッサ。
  9. 【請求項9】 前記アクセス手段は、前記プログラム内
    において、第1命令及び第2命令のうち、後方に記録さ
    れている命令により、前記レジスタの第3領域へのデー
    タの格納を行うように決定することを特徴とする請求項
    8に記載のプロセッサ。
  10. 【請求項10】 前記アクセス手段は、あらかじめ命令
    の種類毎に優先度を記憶しており、前記優先度を用い
    て、第1命令及び第2命令のうち、いずれの命令によ
    り、前記レジスタの第3領域へのデータの格納を行うか
    を決定することを特徴とする請求項8に記載のプロセッ
    サ。
  11. 【請求項11】 前記解読情報は、命令に含まれるオペ
    コードを含み、 前記プロセッサは、さらに、 1のサイクルにおいて、前記解読情報に含まれるオペコ
    ードとレジスタとレジスタの領域とに関する情報とに基
    づいて、命令毎に演算又はメモリアクセスを行い、演算
    情報を生成する演算手段を含み、 前記演算情報は、前記第1命令による第1演算情報と、
    前記第2命令による第2演算情報とを含み、 レジスタへデータを格納する前記アクセス手段は、 前記第1演算情報と、前記第2演算情報と、他の命令に
    よる演算情報とのうちの1の演算情報を選択し、選択し
    た演算情報の前記第1領域に対応する情報を1のレジス
    タの前記第1領域へ書き込む第1選択部と、 前記第1演算情報と、前記第2演算情報と、他の命令に
    よる演算情報とのうちの1の演算情報を選択し、選択し
    た演算情報の前記第2領域に対応する情報を1のレジス
    タの前記第2領域へ書き込む第2選択部と、 1のサイクルにおいて、前記解読情報に含まれる前記レ
    ジスタと前記第1領域とに関する情報に基づいて、前記
    第1選択部に対して、前記第1演算情報を選択し、前記
    第1演算情報を前記レジスタの前記第1領域へ書き込む
    ように制御し、前記解読情報に含まれる前記レジスタと
    前記第2領域とに関する情報に基づいて、前記第2選択
    部に対して、前記第2演算情報を選択し、前記第2演算
    情報を前記レジスタの前記第2領域へ書き込むように制
    御するレジスタ書込制御部とを含むことを特徴とする請
    求項8に記載のプロセッサ。
  12. 【請求項12】 前記解読手段は、命令解読部と命令発
    行制御部とを含み、 前記命令解読部は、1のサイクルにおいて、読み出され
    る命令毎に、命令の解読又は解読の停止の指示により、
    命令を解読し命令に含まれる少なくともレジスタとレジ
    スタの領域とに関する解読情報を出力し、又は命令の解
    読を停止し、 ここで、前記解読される複数の命令には、少なくとも前
    記第1命令と前記第2命令とが含まれ、前記解読情報
    は、少なくとも前記レジスタと前記第1領域と前記第2
    領域とに関する情報を含み、 前記命令発行制御部は、 1のサイクルにおいて、読み出される命令毎に、命令を
    解読する指示を前記命令解読部へ出力することにより、
    前記命令解読部に対して各命令を解読するように制御
    し、 前記命令解読部による各命令の解読後に、前記レジスタ
    と前記第1領域と前記第2領域とに関する情報を含む解
    読情報を受け取り、前記第1領域と前記第2領域とが同
    一領域であるか否かを判断し、同一領域であると判断す
    る場合に、前記第2命令の解読を停止する指示を前記命
    令解読部へ出力することにより、前記命令解読部に対し
    て前記第2命令の解読を停止するように制御することを
    特徴とする請求項1に記載のプロセッサ。
  13. 【請求項13】 前記命令発行制御部は、 命令の種類と、前記命令がデータを参照し又はデータを
    格納するレジスタの領域との組を複数個含む参照格納資
    源表を含み、 前記命令発行制御部は、前記解読情報から、前記参照格
    納資源表を用いて、各命令に含まれるレジスタの領域に
    関する情報を取得することを特徴とする請求項12に記
    載のプロセッサ。
  14. 【請求項14】 前記解読情報は、命令に含まれるオペ
    コードを含み、 前記プロセッサは、さらに、 1のサイクルにおいて、前記解読情報に含まれるオペコ
    ードとレジスタとレジスタの領域とに関する情報とに基
    づいて、命令毎に演算又はメモリアクセスを行い、演算
    情報を生成する演算手段を含み、 前記演算情報は、前記第1命令による第1演算情報と、
    前記第2命令による第2演算情報とを含み、 レジスタへデータを格納する前記アクセス手段は、 前記第1演算情報と、前記第2演算情報と、他の命令に
    よる演算情報とのうちの1の演算情報を選択し、選択し
    た演算情報の前記第1領域に対応する情報を1のレジス
    タの前記第1領域へ書き込む第1選択部と、 前記第1演算情報と、前記第2演算情報と、他の命令に
    よる演算情報とのうちの1の演算情報を選択し、選択し
    た演算情報の前記第2領域に対応する情報を1のレジス
    タの前記第2領域へ書き込む第2選択部と、 1のサイクルにおいて、前記解読情報に含まれる前記レ
    ジスタと前記第1領域とに関する情報に基づいて、前記
    第1選択部に対して、前記第1演算情報を選択し、前記
    第1演算情報を前記レジスタの前記第1領域へ書き込む
    ように制御し、前記解読情報に含まれる前記レジスタと
    前記第2領域とに関する情報に基づいて、前記第2選択
    部に対して、前記第2演算情報を選択し、前記第2演算
    情報を前記レジスタの前記第2領域へ書き込むように制
    御するレジスタ書込制御部とを含むことを特徴とする請
    求項13に記載のプロセッサ。
  15. 【請求項15】 高級言語により記述されたソースプロ
    グラムからオブジェクトコードを生成するコンパイル装
    置であって、 高級言語により記述されたソースプログラムを記憶して
    いる記憶手段と、 前記記憶手段からソースプログラムを読み出し、読み出
    したソースプログラムに翻訳処理を施して、レジスタに
    関する情報を含む1以上の実行形式命令から構成される
    実行形式プログラムを生成する実行形式コード生成手段
    と、 前記実行形式プログラム中の1以上の実行形式命令を、
    各実行形式命令に含まれるレジスタの一部分の領域に関
    する情報に基づいて、並列実行できる複数の実行形式命
    令が隣接するように並べ換える命令スケジューリング手
    段と、 並べ換えられた各実行形式命令を基にして、オブジェク
    トコードを生成するオブジェクトコード生成手段とを含
    むことを特徴とするコンパイル装置。
  16. 【請求項16】 前記命令スケジューリング手段は、 前記1以上の実行形式命令について、各実行形式命令が
    並べられている順序と、各実行形式命令に含まれるレジ
    スタの一部分の領域に関する情報とに基づいて、各実行
    形式命令間の依存関係を示す依存関係情報を生成する依
    存関係解析部と、 生成された前記依存関係情報に基づいて、並列実行可能
    な命令の集合を決定し、また、前記実行形式命令を再配
    置する命令再配置部と、 前記決定された集合毎に、並列実行の可否を示す並列実
    行情報を付加する実行境界付加部とを含むことを特徴と
    する請求項15に記載のコンパイル装置。
  17. 【請求項17】 前記依存関係解析部は、 実行形式命令の種類と、前記実行形式命令がデータを参
    照し、又はデータを格納するレジスタの一部分の領域と
    の組を複数個含む参照格納資源表と、 各実行形式命令に含まれるレジスタの一部分の領域に関
    する情報を参照格納資源表から取得する資源取得部と、 各実行形式命令が並べられている順序と、前記取得した
    レジスタの一部分の領域に関する情報とに基づいて、各
    実行形式命令間の依存関係を示す依存関係情報を生成す
    る依存関係生成部とを含むことを特徴とする請求項16
    に記載のコンパイル装置。
  18. 【請求項18】 高級言語により記述されたソースプロ
    グラムを記憶している記憶手段を備えるコンパイル装置
    により用いられ、前記ソースプログラムからオブジェク
    トコードを生成するコンパイルプログラムを記録してい
    るコンピュータ読み取り可能な記録媒体であって、 前記コンパイルプログラムは、 前記記憶手段からソースプログラムを読み出し、読み出
    したソースプログラムに翻訳処理を施して、レジスタに
    関する情報を含む1以上の実行形式命令から構成される
    実行形式プログラムを生成する実行形式コード生成ステ
    ップと、 前記実行形式プログラム中の1以上の実行形式命令を、
    各実行形式命令に含まれるレジスタの一部分の領域に関
    する情報に基づいて、並列実行できる複数の実行形式命
    令が隣接するように並べ換える命令スケジューリングス
    テップと、 並べ換えられた各実行形式命令を基にして、オブジェク
    トコードを生成するオブジェクトコード生成ステップと
    を含むことを特徴とする記録媒体。
  19. 【請求項19】 前記命令スケジューリングステップ
    は、 前記1以上の実行形式命令について、各実行形式命令が
    並べられている順序と、各実行形式命令に含まれるレジ
    スタの一部分の領域に関する情報とに基づいて、各実行
    形式命令間の依存関係を示す依存関係情報を生成する依
    存関係解析サブステップと、 生成された前記依存関係情報に基づいて、並列実行可能
    な命令の集合を決定し、また、前記実行形式命令を再配
    置する命令再配置サブステップと、 前記決定された集合毎に、並列実行の可否を示す並列実
    行情報を付加する実行境界付加サブステップとを含むこ
    とを特徴とする請求項18に記載の記録媒体。
  20. 【請求項20】 前記コンパイル装置は、 実行形式命令の種類と、前記実行形式命令がデータを参
    照し、又はデータを格納するレジスタの一部分の領域と
    の組を複数個含む参照格納資源表を有し、 前記依存関係解析サブステップは、 各実行形式命令に含まれるレジスタの一部分の領域に関
    する情報を参照格納資源表から取得する資源取得サブス
    テップと、 各実行形式命令が並べられている順序と、前記取得した
    レジスタの一部分の領域に関する情報とに基づいて、各
    実行形式命令間の依存関係を示す依存関係情報を生成す
    る依存関係生成サブステップとを含むことを特徴とする
    請求項19に記載の記録媒体。
JP33397899A 1998-11-27 1999-11-25 プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体 Expired - Lifetime JP4125847B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP33397899A JP4125847B2 (ja) 1998-11-27 1999-11-25 プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP33718698 1998-11-27
JP10-337186 1998-11-27
JP33397899A JP4125847B2 (ja) 1998-11-27 1999-11-25 プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体

Related Child Applications (3)

Application Number Title Priority Date Filing Date
JP2007164849A Division JP4709806B2 (ja) 1998-11-27 2007-06-22 プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体
JP2007164850A Division JP4457127B2 (ja) 1998-11-27 2007-06-22 プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体
JP2008076369A Division JP4295804B2 (ja) 1998-11-27 2008-03-24 プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体

Publications (2)

Publication Number Publication Date
JP2000222209A true JP2000222209A (ja) 2000-08-11
JP4125847B2 JP4125847B2 (ja) 2008-07-30

Family

ID=26574690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33397899A Expired - Lifetime JP4125847B2 (ja) 1998-11-27 1999-11-25 プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体

Country Status (1)

Country Link
JP (1) JP4125847B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1176224A1 (en) 2000-07-24 2002-01-30 Nissan Motor Co., Ltd. Nitrided maraging steel and method of manufacturing thereof
JP2008503836A (ja) * 2004-06-24 2008-02-07 インテル コーポレイション 複数の入力命令をベクトル化する方法及び装置
JP2013101638A (ja) * 2006-05-10 2013-05-23 Qualcomm Inc ハードウェアエンドループ情報の命令へのコード化
CN116881194A (zh) * 2023-09-01 2023-10-13 腾讯科技(深圳)有限公司 处理器、数据处理方法及计算机设备

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1176224A1 (en) 2000-07-24 2002-01-30 Nissan Motor Co., Ltd. Nitrided maraging steel and method of manufacturing thereof
JP2008503836A (ja) * 2004-06-24 2008-02-07 インテル コーポレイション 複数の入力命令をベクトル化する方法及び装置
US7802076B2 (en) 2004-06-24 2010-09-21 Intel Corporation Method and apparatus to vectorize multiple input instructions
JP2011165216A (ja) * 2004-06-24 2011-08-25 Intel Corp 複数の入力命令をベクトル化する方法及び装置
JP2013101638A (ja) * 2006-05-10 2013-05-23 Qualcomm Inc ハードウェアエンドループ情報の命令へのコード化
CN116881194A (zh) * 2023-09-01 2023-10-13 腾讯科技(深圳)有限公司 处理器、数据处理方法及计算机设备
CN116881194B (zh) * 2023-09-01 2023-12-22 腾讯科技(深圳)有限公司 处理器、数据处理方法及计算机设备

Also Published As

Publication number Publication date
JP4125847B2 (ja) 2008-07-30

Similar Documents

Publication Publication Date Title
JP4295804B2 (ja) プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体
JP3797471B2 (ja) マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
US7076638B2 (en) Processor, compiler and compilation method
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
JP3832623B2 (ja) マルチスレッドvliwプロセッサにおいて機能単位を割り当てるための方法および装置
JP2002333978A (ja) Vliw型プロセッサ
JP2006338616A (ja) コンパイラ装置
JP3777541B2 (ja) マルチスレッドvliwプロセッサにおけるパケット分割の方法および装置
US20060190703A1 (en) Programmable delayed dispatch in a multi-threaded pipeline
US6324639B1 (en) Instruction converting apparatus using parallel execution code
JP3749233B2 (ja) パイプラインでの命令実行方法及び装置
US6799266B1 (en) Methods and apparatus for reducing the size of code with an exposed pipeline by encoding NOP operations as instruction operands
US7010677B2 (en) Data processor speeding up repeat processing by inhibiting remaining instructions after a break in a repeat block
JP4125847B2 (ja) プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体
JP4457127B2 (ja) プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体
KR101154077B1 (ko) 시간 고정형 프로세서 및 그의 제어 방법
JP4709806B2 (ja) プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体
JP3451921B2 (ja) プロセッサ
JP3553845B2 (ja) プロセッサ、コンパイラ、コイパイル方法及び記録媒体
US6886091B1 (en) Replacing VLIW operation with equivalent operation requiring fewer issue slots
EP0545927B1 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
JP3737573B2 (ja) Vliwプロセッサ
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
CN111026442B (zh) 一种cpu中用于消除程序无条件跳转开销的方法及装置
EP1113356B1 (en) Method and apparatus for reducing the size of code in a processor with an exposed pipeline

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060906

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070305

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070424

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080324

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080415

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080509

R150 Certificate of patent or registration of utility model

Ref document number: 4125847

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110516

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110516

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120516

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120516

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130516

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130516

Year of fee payment: 5

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

EXPY Cancellation because of completion of term