JP2002259119A - 階層型命令を実行する計算機 - Google Patents

階層型命令を実行する計算機

Info

Publication number
JP2002259119A
JP2002259119A JP2001062274A JP2001062274A JP2002259119A JP 2002259119 A JP2002259119 A JP 2002259119A JP 2001062274 A JP2001062274 A JP 2001062274A JP 2001062274 A JP2001062274 A JP 2001062274A JP 2002259119 A JP2002259119 A JP 2002259119A
Authority
JP
Japan
Prior art keywords
instruction
computer
data
local
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2001062274A
Other languages
English (en)
Other versions
JP3541356B2 (ja
Inventor
Itaru Nakagawa
格 中川
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.)
National Institute of Advanced Industrial Science and Technology AIST
Original Assignee
National Institute of Advanced Industrial Science and Technology AIST
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 National Institute of Advanced Industrial Science and Technology AIST filed Critical National Institute of Advanced Industrial Science and Technology AIST
Priority to JP2001062274A priority Critical patent/JP3541356B2/ja
Publication of JP2002259119A publication Critical patent/JP2002259119A/ja
Application granted granted Critical
Publication of JP3541356B2 publication Critical patent/JP3541356B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 (修正有) 【課題】機械語に翻訳されたコンピュータプログラムに
おいて、最大数十ステップ離れた部分を比較することに
よって見出される並列演算可能性を利用できる方法及び
装置を提供することによって、命令レベル並列性をより
有効に活用した高性能計算機を実現する。 【解決手段】一つまたは複数の命令解釈・オペランド取
得回路と、複数の命令実行部をもつ計算機構成であっ
て、命令実行部は、命令実行開始のたびに初期化される
ローカルレジスタとローカルメモリを持ち、機械語命令
のオペコード部分には、命令実行部で新たに解釈実行さ
れる機械語命令体系によるプログラムが書かれる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、計算機の動作機構
(コンピュータアーキテクチャ)に関する。
【0002】
【従来の技術】本発明は計算機分野、特に高性能計算機
分野に関するものである。従来、高速計算機は使用する
トランジスタの性能向上に伴ってその性能を上げるだけ
でなく、命令実行各段階を分散した回路に分担させるこ
とにより、より一層の性能向上を達成してきた。後者の
性能向上の典型的例としては、命令の解析、オペランド
の取得、計算の実行、オペランドの格納に関して独立し
て回路を設け、各命令をパイプライン状に実行すること
により、後続命令を、先行命令の終了を待たずに開始さ
せることを可能とし、各命令の実行所要時間よりもはる
かに短い命令実行開始間隔を実現した。また、上記各ス
テージ用の回路を各複数個用意することにより各クロッ
ク毎に複数の命令を実行開始することで更なる性能向上
が計られた。これらの場合は、同時に実行される命令
が、プログラムの機能上、相互に依存しないかどうかを
実行時に判定する複雑な回路が必要となるため、大規模
な判定回路の採用によってのみ可能となった。
【0003】また同時に、パイプライン動作、並列動作
が円滑に行えるように、計算機の命令は縮小命令セット
と呼ばれるものに再設計され、各命令の動作が外形的に
は極めて類型的になるように工夫されている。一方で、
そのような考慮をせずに過去に確立された命令体系の計
算機においては、実行時に縮小命令セットに翻訳して実
行することで性能向上を実現している。縮小命令セット
としてはさまざまな形式が提案・実用化されているが、
著しい特徴として、メモリからのデータ取出し・データ
書込み命令が専用に設けられ、データ読出し・書込みと
他の計算動作との複合命令がすべて排除されていること
が挙げられる。これはメモリ読出し・書込み動作を複合
的に行う算術演算命令が外形的に他の命令と大きく異な
るものであって、パイプライン動作に著しい悪影響を与
えると考えられたからである。
【0004】上記方法で計算機の性能を更に向上させる
手段としては、命令乱発行という手法が用いられてい
る。すなわち、同時に実行できる命令の探索を、更に先
まで拡張して行うことにより、出来るだけ同時実行命令
の数を増加させることである。命令乱発行によって並列
可能実行命令数が増加する場合を図2に示す。図2では、
左に、プログラムに記述された命令の流れを、右にはデ
ータの依存関係によって決定される命令の流れを示して
いる。その図によると、命令1、命令2、命令3は並列実
行可能であるが、命令4は命令1と命令2の結果を利用す
るために、同時には実行できない。一方命令5は命令1、
命令2、命令3と同時に実行できる。したがって、命令4
は命令1、命令2、命令3の完了を待たなければ実行開始
できない、すなわち、プログラムの流れの通りに実行し
なければならないが、命令5は命令1、命令2、命令3と同
時に実行開始することが出来、命令4に後続する命令で
あるにもかかわらず、命令4よりも先に実行しても構わ
ない。
【0005】このような状況に関して現在のコンパイラ
は、命令4と命令5を交換してもプログラムの機能に変化
がないことが明らかならば、実行コードとして、既に命
令順序を変更したものを生成するが、命令間依存性の決
定が実行時にしか明らかにされない場合には、当然、命
令順序を変更しない。命令間依存性の決定が実行時にし
か明らかにされない場合とは、一つにはデータ相互の依
存関係が実行時にしか決定できない場合で、メモリから
読込むデータ位置が、それまでの計算結果によって決定
される場合がそうである。また、命令の流れが実行時に
決定される、すなわち命令5の実行が命令4までの実行に
よって決定され、命令4の結果によっては命令5の代わり
に他の命令が実行される構造となっているときにも生ず
る。
【0006】
【発明が解決しようとする課題】プログラムに関する基
礎的な研究によると、同時に実行できる命令を無制限に
探索できると仮定すれば、極めて多い命令数が並列実行
可能であると結論されている。たとえば、H. -H. Leeに
よる文献("Quantifying Instruction-Level Parallelis
m on an EPIC Architectur" ISPASS-2000Technical Pap
er)によると、SPECint95ベンチマーク用に選択された標
準的プログラム群では、最大72.6の並列性が見出されて
いる。一方において、現実の計算機における命令探索深
さを仮定して並列性を求めると、10以下であることが多
く、命令探索深さを増加させても、同時発行可能命令数
は極めてゆっくりとしか増加しないことが報告されてい
る。これは、実行される命令の流れの上で大きく離れた
所に同時実行可能な命令があることを意味する。
【0007】現在の高性能計算機では、並列実行可能な
命令を取り出すために、命令乱発行が採用され、実行命
令の数を最大にする努力が払われているが、上記の性質
により、同時実行可能な命令の平均検出数をわずかに増
加させるためにも、命令探索深さを大幅に増加させる必
要があり、そのために同時実行可能かどうかの判定回路
が極度に増加するという問題点がある。たとえば、同時
に4命令について同時実行可能かを判定する回路を持
ち、実行中もしくは何らかの理由により実行待機中の命
令が100ある場合には、4×100の組み合わせについて、
命令実行順序を変更して良いかどうかの判定をしなけれ
ばならない。
【0008】一方、現在の高性能計算機においては、計
算速度を向上させる他の方法として、プログラムを互い
に干渉しないいくつかの処理部分に分けて、プロセスま
たはスレッドと呼ばれる処理単位にし、それぞれを別の
プロセッサに割り当てる方法も採用されている。この場
合は複数のプロセッサを用意しなければならないが、多
くのプログラムでは、プロセッサ間の通信機構を考えて
もなお、比較的容易に性能向上を果たすことが出来る。
このように複数のプロセスまたはスレッドに分けられる
処理は、単一の命令ストリームとして見ると、少なくと
も数千命令以上離れた所にまとまって存在する並列実行
可能なコードを抽出することに他ならない。この方法で
も、ある程度以上多数のプロセッサで実行を試みると、
性能向上が急速に鈍化することが報告されている。
【0009】以上二つの従来手法を概観すると、命令ス
トリーム上で数十命令以下程度離れた所にある並列実行
可能な命令は乱発行により計算速度向上に利用でき、一
方で数千命令以上程度離れた所に集中してある並列実行
可能な命令群に関しては、プロセスもしくはスレッドを
利用してマルチプロセッサ環境で計算速度向上を図るこ
とが出来る。現在の技術では、数十から数千命令離れた
所での並列性を利用する有効な手段が存在しない。
【0010】このギャップを埋めるためには、従来の命
令で数十命令にも相当する単位を一命令として相互の並
列実行可能性を判断する方法が望まれるが、従来の技術
では実行することが出来ない。大規模複雑な処理に対応
した命令としては例えばVAX計算機におけるEDIT命令な
どが存在するが、単一目的のための大規模命令であり、
多様な命令実行のための機構を備えた大規模命令ではな
いために、計算プログラム全体の並列度向上の手段とし
ては使えない。
【0011】
【課題を解決するための手段】本発明では、計算機の命
令に二階層型命令を導入し、データ処理に関するものは
二階層型命令によって処理することにより、この問題を
解決するものである。計算機の構造もそれに応じて、従
来の計算機に対応する上位計算機構造と、従来の計算機
の命令実行部に対応する下位計算機構造の二階層とな
る。計算機の命令には、命令で行う計算内容を指定する
オペコード部と、命令で参照するデータを指定するオペ
ランド部と、次に実行する命令を指定する部分の3部分
が存在し、いずれかの部分が欠けているときには、その
内容が暗黙のルールで決定されている。二階層型命令で
は、上位計算機構造の命令解析部は、命令で行う計算内
容についての処理を行わず、もっぱら参照するデータの
決定、割り付けと、次に実行する命令の決定のみを行
う。すなわち、命令の並列実行に影響する部分だけを上
位計算機構造の命令解析部が処理する。
【0012】命令で行う具体的な計算内容は下位計算機
構造の命令によって書かれたプログラムによって実行さ
れるが、そのプログラムは上位計算機構造の命令のオペ
ランド部分に直接埋め込まれるか、オペランド部分で指
示されたアドレス位置に置かれる。下位命令によって書
かれたプログラムは、ローカルレジスタ、ローカルプロ
グラム記憶、そして必要な場合には少量のローカルデー
タ記憶をもつ、独立した下位計算機構造によって実行さ
れる。このような下位命令実行計算機を複数用意するこ
とにより、複数の上位命令を同時実行することが出来
る。
【0013】
【発明の実施の形態】本発明を実現する計算機の構造の
一例を図1に示す。全体は大きくメモリ1、一つまたは複
数の命令解析部2、複数の命令実行部3に分かれている。
割り込み回路・クロック回路等、計算機を構成するのに
必要ではあるが、以下の説明に不要な多くの回路は、図
から省かれている。
【0014】メモリ1は計算に必要なプログラムとデー
タを記憶する回路であるが、実際の多くの計算機構造と
同じく、キャッシュメモリを利用した階層的記憶システ
ムであってもかまわず、その場合には図1でメモリ1と書
かれているものは、キャッシュメモリとキャッシュ制御
回路を示し、計算機の次のメモリ階層が該メモリに接続
されている。キャッシュメモリを採用するときには更
に、該キャッシュメモリをプログラム用キャッシュメモ
リとデータ用キャッシュメモリとに分割することが可能
である。
【0015】命令解析部2はメモリ1から命令を取り出し
て解析する回路である。命令解析部にはグローバルレジ
スタファイル4が付属し、またアドレス計算用の演算回
路を内蔵している。複数の命令を並行して解析すること
を可能とするためには、複数の命令解析部2を設け、グ
ローバルレジスタファイル4を共有すれば良い。複数の
スレッドを高速で切り替えるか、並行して実行すること
を意図する場合は、グローバルレジスタファイル4とプ
ログラムカウンタを複数セット用意して、各スレッドに
対応させれば良い。グローバルレジスタファイル4はデ
ータ記憶用のレジスタファイルと、アドレス情報記憶用
のレジスタファイルに分かれている構造も可能である。
アドレス計算用の演算回路は、出来うるならば、従来の
計算機の命令が実行している、アドレス計算以外の一般
的な演算をも実行できるようになっていることが望まし
い。これは、該計算機の命令(以下では上位命令と略
す)をコーディングする際に、該命令のオペコード部に
対応する下位計算機構造の命令(以下では下位命令と略
す)による適当な大きさのプログラムが作製できず、結
果としてたった一命令の下位命令に対応する上位命令を
コーディングする必要があった場合、上位命令の解読、
下位命令の実行部分割り当て、および下位命令の解読と
いう複雑な手順を経なければいけないオーバーヘッドを
回避するために、上位命令の命令解読部2で命令を直接
実行できるようにするためである。
【0016】命令実行部3は上位計算機構造にとっての
命令実行部3であり、同時に下位計算機構造にとっては
計算機構造全体を意味し、下位命令のプログラムを解釈
実行する回路である。この部分には演算解釈・実行部
5、ローカルプログラム記憶6、ローカルレジスタファイ
ル7があり、また必要に応じて少量のローカルデータ記
憶8がある。ローカルレジスタファイル7は、下位計算機
構造が使用するレジスタファイルである。各レジスタに
は、下位命令による実行プログラム開始時には、初期デ
ータがセットされているか、不定もしくはゼロなどの既
定値にセットされている。初期データは、該実行プログ
ラムがソースオペランドとして利用する、メモリ1中の
データもしくはグローバルレジスタファイル4中のデー
タである。また、該実行プログラム終了時にローカルレ
ジスタに残されたデータのうち、上位命令のオペランド
部で指定されたものは、デスティネーションオペランド
として、メモリ1もしくはグローバルレジスタに転写さ
れる。ローカルレジスタファイル7のサイズは、従来の
計算機と同様、8〜32本が適当である。
【0017】ローカルデータ記憶8はレジスタ指定方式
になじまないデータ、すなわちインデックス修飾アドレ
ス指定が必要なデータや、ビット列データなどの処理を
下位命令で効率良くコーディングするために利用され
る。計算機性能のバランスを考えない実装では、ローカ
ルデータ記憶8は多い方が良いのは当然であるが、極端
に大きな実装を採用すると、ローカルデータ記憶8の回
路規模が大きくなること、メモリ1からローカルデータ
記憶8へのデータ移動量が増大すること、下位命令のフ
ォーマットにおいて、アドレス指定のためのフィールド
が増加すること、ローカルデータ記憶8へのアクセス時
間がローカルレジスタへのアクセス時間に比べて著しく
大きくなり、簡単なパイプライン動作が実現できなくな
ること等の理由から、計算機全体の性能にとって好まし
くなくなる。以上の点から、ローカルデータ記憶8のサ
イズはローカルレジスタファイル7のサイズに比べて1〜
16倍程度であることが望ましい。
【0018】ローカルプログラム記憶6は下位命令によ
る実行プログラムを記憶する回路であり、演算解釈・実
行部5に該実行プログラムを供給する。該実行プログラ
ムのローカルプログラム記憶6への書き込みの具体的手
続きは、上位命令の命令解析部2が、上位命令の中から
該実行プログラムを抽出して該ローカルプログラム記憶
6に転送する方法であっても良いし、該実行プログラム
のメモリ内での位置を上位命令の命令解析部2が下位計
算機構造のメモリ制御回路に通知して、メモリ1から直
接該下位計算機構造のローカルプログラム記憶6に転送
しても良い。ローカルプログラム記憶6の大きさは、計
算機性能のバランスを考慮しない場合には大きい方が望
ましいが、ローカルプログラム記憶6が極端に大きい
と、下位命令のフォーマットにおいて、分岐アドレスに
要する命令フィールドが大きくなること、ローカルプロ
グラム記憶6へのアクセス時間がローカルレジスタへの
アクセス時間に比して大きくなることなどの欠点を持つ
ようになる。また、大きなローカルプログラム記憶サイ
ズを充分に利用する下位命令実行プログラムの構成が困
難になり、本来の利点すらも充分に活用されないことも
予想される。従って、ローカルプログラム記憶6のサイ
ズは、ローカルレジスタファイル7のサイズに比して0.5
〜4倍程度であることが望ましい。下位命令実行プログ
ラム12には制御命令があり、その結果命令の流れのルー
プ化等が可能であるため、下位命令実行プログラムの開
始から終了までの命令ストリームは、オペコード部10で
指示されたプログラムサイズよりもはるかに長くなり得
る。
【0019】この計算機が実行する二階層型命令の一般
的フォーマットを図3に示す。図3において、オペランド
部9は、該命令が使用するデータがメモリ1またはグロー
バルレジスタファイル4のどこにあり、それが命令実行
部3のローカルレジスタファイル7、ローカルデータ記憶
8にどのように配置されるかを記述する部分である。即
値データは該命令内に直接記述されるが、それはオペラ
ンド部9であっても良いし、即値データ用のフィールド
が設けられても良い。下位命令中に直接即値データを記
述する方式は、可能ではあるが、下位命令の命令コード
をコンパクトにするのを妨げるために望ましくない。例
外として、小さな数値の即値データについては、下位命
令の命令コードに直接記述する方式を取ることも可能で
ある。
【0020】メモリ1中の連続した位置にあるデータが
複数のローカルレジスタに対応するときには、該上位命
令が、該複数データを使用することを記述する部分と、
該複数データの中の各データが、それぞれどのローカル
レジスタに対応するのかを記述する部分は、独立したも
のにできることが望ましい。これは上位命令の命令乱発
行判断に際して、実行中もしくは何らかの理由により実
行待機中の上位命令が利用するデータと、現在解析中の
上位命令のオペランド部9が指定するデータの間で、デ
ータ利用上の依存性が生じるか否かを比較する回路の規
模を縮小するためには、利用するデータを努めて大きな
ブロック単位で管理することが望ましいからである。こ
のような記述法を具体的に実現する方法としては、ある
データブロックが該命令で使用されることを宣言するフ
ィールドと、該データブロックの各部分がそれぞれロー
カルレジスタの第何番に対応するかを記述する複数のフ
ィールドが、オペランド部9にこの順序で記述されるよ
うにすれば良い。
【0021】オペコード部10は該上位命令によって実行
される下位命令実行プログラム12自体または、下位命
令実行プログラム12の存在する場所を記述する部分で
ある。下位命令セットはすべての上位命令で共通であっ
ても良いが、オペコード部10で指示される下位命令実行
プログラム12が従来の計算機方式における命令で高々
数十命令の長さに相当する処理単位であり、このような
処理単位においては、使用命令の種類において偏った分
布をすることが予想されるため、上記命令フォーマット
で示した空白部に、下位命令セット選択情報を書いて、
上位命令一つ毎に異なった命令セットを指示することも
可能である。例としては、整数演算、浮動小数点演算、
ビット演算等に重点をおいた下位命令セットを各々用意
して、上位命令毎に選択する事が考えられる。このよう
にする利点としては、一つの上位命令で使用する命令セ
ットが小さくなるため、下位命令セットをコンパクトに
することが挙げられる。具体的な例としては、下位命令
セットのフィールド中の特定のビットが0の時には、使
用頻度の高い整数演算および論理演算等と分岐命令を含
む汎用命令であると解釈し、1の時には整数演算、浮動
小数点演算、ビット演算等のいずれかに特化した命令で
あると解釈するように命令解釈部を構成し、特化した下
位命令セットの選択は上位命令中の空白フィールドに特
化下位命令選択フィールドを設け、そのフィールドの値
で指示できるようにすることが可能である。選択する特
化命令セットを15種類とすれば、下位命令のビット長が
16ビットでも、19ビットの長さを持っているのと同じ命
令コーディングが可能になる。また、このような方式を
とる場合には特化命令セットの追加によって命令の追加
が容易になるので、基本命令セットのビットパターンコ
ーディングに際して、将来の命令拡張のための余裕を考
える必要性が少なくなり、高密度なコーディングが可能
となる。特化命令セットの選択は、下位命令実行プログ
ラムの実行中は変更されないため、CMOS回路を採用する
限り、回路が複雑になっても、消費電力の増加は最小限
に押さえられる。
【0022】後続命令位置記述部11は、該命令の実行後
に実行されるべき命令のアドレスまたは、条件分岐など
の場合には、該命令の実行後に実行されるべき命令の位
置に相当する複数のアドレス位置および該複数のアドレ
スの選択条件を記述する部分である。後続命令が該命令
の直後に記述される通常の場合には、後続命令位置は、
該命令の先頭位置に該命令の全長を加算すれば求まるた
め、その加算操作で決定できることを示す情報が書かれ
ても良いし、また命令の全長に関する情報自体が記述さ
れていても良い。
【0023】図3の命令フォーマットには空白の位置が
あるが、そこには、不定長である上記3部分の長さに関
する情報の他に、上位命令のフォーマット選択情報、特
化命令セットの選択情報等の情報を置くことが出来る。
また、空白部分は、一つの連続したビット列でなく、分
散していても良い。
【0024】上記命令を実行するには以下の順での処理
が行われる。第1段階として命令の読み出しが行われ
る。該命令は不定長であり、場合によっては100バイト
を越える長さであることを予定しているために、命令の
読み出しは一クロックサイクルで完了しないことが通常
であるが、命令の先頭部分から読み出すに従って、命令
に関する各処理が可能となった段階で、次段階以降の処
理が開始される。
【0025】第2段階として、後続命令位置記述部11が
解読される。これによって後続命令の位置が決定できる
場合には、後続命令の読み出しと解析を、該命令の実行
と並行して行うことが可能である。後続命令が並列実行
可能である場合には、引き続き実行段階にまで進むこと
が可能である。また、後続命令の中の後続命令位置記述
部11が読み出されれば、後続命令の更に後に続く命令の
読み出しが可能となるため、後続命令が並列実行可能で
なくても、更に後に続く命令に関して並列実行可能であ
るかどうかの検査を進めることができ、上位命令単位で
命令乱発行が可能となる。上位命令の命令解析部2が一
つしかない構成では、第2段階を以下に述べる第3段階よ
りも早く実行する利点は少なく、次の第3段階と同時か
または、それよりも遅れて実行することが出来る。
【0026】後続命令が分岐命令の場合であって、分岐
条件の決定が該命令の下位命令実行プログラム12の実行
をせずに決定できる場合には、その決定に従って分岐す
れば良い。後続命令が分岐命令の場合であって、分岐条
件の決定が該命令の下位命令実行プログラム12の実行に
よって決定される場合には、該下位命令実行プログラム
12の実行を待つことも可能であるが、一定のアルゴリズ
ムのもとに分岐結果を予測して、後続命令の位置を仮に
決定し、仮決定の後続命令の実行を行う投機実行も可能
である。この場合には、予測した分岐結果が実際に決定
されたものと異なった場合には、投機実行にかかわる状
態変化が全て復帰できるように措置することが必要であ
るが、その技術は既に広く知られている。特に本発明の
場合には、ローカルレジスタファイル7およびローカル
データ記憶8からメモリ1およびグローバルレジスタファ
イル4へのデータ書込みを抑止すれば、該命令の実行結
果はメモリ1およびグローバルレジスタには反映され
ず、投機命令の取消しは容易である。更に命令解析部
2、命令実行部3の資源が豊富にある場合には、分岐・非
分岐両者の場合に相当する複数の後続命令に対し同時に
投機実行を行うことも可能である。
【0027】第3段階では、オペランド部が解釈実行さ
れる。この段階において、該命令が使用するデータが、
実行中もしくは実行待機中の先行命令によって変更され
る予定であり、なおかつその変更が完了していないかど
うかが判断される。変更が完了してないことが判明した
場合には、該命令は実行待機状態となり、後続命令の解
釈に移行する。そのような障害がないと判明した場合に
は、該命令の実行準備に移行する。具体的には、アイド
ル状態の命令実行部3があるかどうかが調べられ、それ
が存在する場合には、命令実行部3のローカルレジスタ
ファイル7およびローカルデータ記憶8へデータの書き込
みが行われる。アイドル状態の命令実行部3がない場合
には、ここで待機状態に移行することも可能であり、ま
た、データをデータキャッシュに移動して待機すること
も可能である。また、アイドル状態の命令実行部3が一
つしかない場合にも、アイドル状態の命令実行部3がな
いときと同じ処置をするような設定にすれば、優先的な
処理を要する割り込みによる上位命令実行が、最低一つ
あるアイドル状態の命令実行部3で処理できるため、割
り込み応答が、迅速かつ確実になり、割り込みの機能を
重要視する場合には望ましい方法となる。第4段階とし
て、命令実行部3が実行すべき下位命令実行プログラム1
2が、命令実行部3のローカルプログラム記憶6に読み込
まれる。この段階は第3段階と並行して行うことも可能
である。
【0028】第5段階として、命令実行部3が下位命令実
行プログラム12を実行する。該下位命令実行プログラム
12が使用するデータ領域はローカルレジスタファイル7
およびローカルデータ記憶8だけであり、計算機のメモ
リ1およびグローバルレジスタ4には直接アクセスできな
い。該下位命令実行プログラム12が必要とする入力デー
タは命令解析部2によってローカルレジスタファイル7お
よびローカルデータ記憶8に書き込まれる。また該下位
命令実行プログラム12が出力するデータはローカルレジ
スタファイル7またはローカルデータ記憶8に書き込まれ
た後、メモリ1もしくはグローバルレジスタ4に書き込ま
れる。
【0029】入力データの書き込みは該下位命令実行プ
ログラム12開始前が望ましいが、入力データ書き込みが
すべて完了する前に該下位命令実行プログラム12を実行
開始することも可能である。
【0030】該下位命令実行プログラム12の出力データ
は、オペランド部9で指示された対応関係にもとづき、
メモリ1およびグローバルレジスタ4に書きこまれる。出
力データをメモリ1およびグローバルレジスタ4に書き込
むタイミングは、下位命令実行プログラム12の実行終了
時点か、該データがローカルレジスタまたはローカルデ
ータ記憶8に書き込まれた時点か、または該下位命令実
行プログラム12によって指示された時点かが自由に選択
できる。該下位命令実行プログラム終了時点で書き込む
ことの利点は、該下位命令実行プログラム12が正常に終
了したときに限って、実行結果をメモリ1およびグロー
バルレジスタファイル4に反映させることが出来るた
め、上位命令自体をアトミック命令として取り扱うこと
が可能になることである。該データがローカルレジスタ
ファイル7またはローカルデータ記憶8に書き込まれた時
点で、該データをメモリ1もしくはグローバルレジスタ4
に反映させることの利点は、該データが確定するのを待
っていた後続命令の開始が最も早く行われることであ
る。
【0031】また、特定のローカルレジスタを、ベクト
ルレジスタのように使用する、すなわち、該ローカルレ
ジスタからの読込み動作によって、該ローカルレジスタ
に書込まれていたデータにメモリ1上で隣接するデータ
が、該ローカルレジスタに新たに書込まれたり、該レジ
スタへの書込み動作によって、メモリ1上にに該データ
が互いに連続するように書込まれたりするように構成す
ることは容易である。このような構成を取る場合には、
上記読込み書込み動作によって引き起こされるメモリ1
の読込み書込みがどの範囲にとどまるかは、オペランド
部9に明示的にかかれていなければならない。また、ベ
クトル読込み動作を連続して行っても読込みに間に合う
ようにデータが供給できるようには、普通は保証できな
いので、その場合に備えて該下位命令実行プログラム12
の実行を中断する機構がなければならない。
【0032】以上の動作が終了した後、命令実行部3は
新たな命令が実行できる状態になる。終了時にローカル
レジスタファイル7およびローカルデータ記憶8に書かれ
ているデータは破棄され、同一の命令実行部3で実行さ
れる別の命令に直接渡されることはない。このような制
限を設けることにより、後続命令をいずれの命令実行部
3で実行しても同じ効果が得られるようになる。
【0033】命令実行部3の構成は、すべて同一である
ことが望ましいが、特定の下位命令セットを選択したと
きには、それを実行できる命令実行部3が限られている
構成も可能である。このような構成にすると、回路規模
が節約できる反面、命令実行部割り当てが若干複雑にな
る。また、浮動小数点演算ユニット、特に浮動小数点割
り算ユニットのような、大規模な回路を必要とするもの
については、複数の命令実行部3で共有する構成を取る
ことも可能である。
【0034】
【発明の効果】本発明による効果は以下に掲げるとおり
である。第一に、従来の計算機の設計手法では利用困難
であった、命令ストリーム上で数十から数千命令離れた
所にまとまって存在する並列実行可能命令群による並列
性を、従来計算機の多数命令に相当する処理を上位命令
の一命令にまとめて記述することによって利用可能と
し、プログラムが本来持つ並列実行可能性を充分に引き
出すことが出来る。
【0035】第二に、分岐命令のうち、近いアドレスに
分岐する命令の多くが下位命令による実行プログラム中
の分岐として実現されるため、上位命令による分岐処理
と、下位命令による分岐処理が並列実行され、計算機性
能の向上をもたらす。また、上位命令解析部2での分岐
処理頻度が減少するため、より高度な分岐予測判断が、
命令実行の流れを阻害せずに実装可能となる。
【0036】第三に、該計算機の命令解析部2が実行す
べきオペランド相互依存性の検査が大幅に減少するた
め、処理能力を増強することが出来る。この利点は、主
に二つの効果から構成されている。一つには、従来の計
算機でレジスタ間演算として実現されている命令の多く
は、下位命令実行プログラム内のレジスタ間演算となる
ため、該計算機の命令解釈部2でデータ依存関係を判断
する必要がなくなる。従来の計算機ではレジスタ間演算
が、実行命令数の30%から60%を占めているが、そ
の多くが下位計算機の命令に変換され、上位命令のオペ
ランド部9に何ら対応するコードが必要なくなるので、
命令解析部2が実行すべきデータ依存性検査が大きく減
少する。また、上位命令で利用するメモリ1中のデータ
は、それが複数のローカルレジスタに配置されるべきも
のであっても、メモリ1中で一つの連続したブロックに
配置されていれば一度のデータ依存関係判断で済むた
め、判断の回数が減少する。これは、従来の技術では、
データの参照自体が複数の命令で行われるため、一度の
参照にまとめることは原理的に不可能であった。さら
に、データをベクトルデータとして参照するときにも、
同様の理由により、一度のデータ依存判断で済む。以上
の理由によってデータ依存判断の回数が減ることは、デ
ータ依存の判断をする際に参照しなければならない、実
行中および実行待機中の命令のデータ数も減少している
ことを意味するため、データ依存判断の組み合わせの数
は二重の意味で削減される。
【0037】第四に、下位命令実行開始までのオーバー
ヘッドが従来の計算機よりも増加するとは言え、下位命
令によるプログラム実行中は、メモリ1を直接参照する
ことが一切ないため、ロード・ストア命令による命令実
行パイプラインの乱れが少なくなり、下位命令プログラ
ム内での下位命令の並列実行が容易になり、結果として
計算速度が向上する。更に、命令フォーマットの大きな
部分を占めるロード・ストア命令や分岐命令では、ロー
カルデータ記憶8やローカルプログラム記憶6が小さいた
め、下位命令フォーマットでのアドレス指定フィールド
が小さくなり、結果として下位命令のエンコードに必要
なビット数が減少し、コンパクトなコードを生成する事
が出来る。
【0038】具体的には従来の計算機では、縮小命令セ
ット・アーキテクチャで命令が設計されている場合の多
くは、一命令を32ビットのデータで表現している。一部
のアーキテクチャでは、16ビットで命令を表現すること
によりコンパクトなコードを実現しているが、16ビット
で表現できる命令の種類を制限したり、3レジスタ命令
を2レジスタ命令に制限して表現能力を落としたり、命
令の種類によっては暗黙のレジスタ指定を行ったりして
いる。このような制限は一般的には命令の表現能力を制
限するため望ましくないのであるが、コンパクトなコー
ドを生成するために採用されている。反面、制御命令、
メモリとのデータ移動命令、即値命令などのために、命
令コードの50〜75%を使用している。本発明による下位
計算機構造の命令では、分岐等制御命令においては、命
令の飛び先アドレスのビット数は下位命令実行プログラ
ム12の最大サイズで決定され、6〜8ビットで十分であ
り、制御命令のコード数は極めて小さい。また、ローカ
ルデータ記憶8とのデータ移動命令においても、ローカ
ルデータ記憶のサイズが小さいため、絶対番地指定をし
ても、下位命令のアドレスフィールドは8〜12ビット程
度になり、コード数は極めて小さい。即値命令は、該計
算機の命令解釈部2が即値データをローカルレジスタフ
ァイル7に予めセットするため、下位命令が即値データ
を記述する必要がなくなり、極めて小さなコード数とな
る。以上のことより、これらの命令に割り当てるコード
が大幅に減少し、命令の表現能力を過度に制約すること
なく16ビットの下位命令を実現することが出来る。
【0039】第五に、ベクトルデータの参照時には、ロ
ーカルレジスタへのアクセスがメモリ1へのアクセスを
引き起こすが、オペランド部9でベクトル型のデータ参
照をすることが明示されているために、メモリ1へのア
クセス予測が実行時に可能となる。これにより、データ
キャッシュをデータバッファとして運用すれば、メモリ
1のアクセス速度が遅い通常の場合でも、計算中断なし
に実行することが容易となる。
【0040】第六に、命令実行部3がそれぞれ独立した
計算機回路であるため、上位命令同士の並列動作を容易
に実現する事が出来る。第七に、大規模データベースを
操作するプログラムにおいては、データの参照・書換え
を含む一連の動作が連続して行われる、アトミック操作
が要求されるが、上位命令は、命令実行中のメモリへの
書出しを抑止さえすれば自動的にアトミック命令となる
ため、アトミック操作の内容が該計算機の上位命令の一
命令として記述できる規模である限り、アトミック命令
としての性質が、自動的に実現できる。その結果、アト
ミック命令を実現するための多くの補助的な命令シーク
エンスが省略でき、大幅な性能向上が実現できる。
【図面の簡単な説明】
【図1】本発明による二階層機械語命令を実行する計算
機の構造の一例を示す構成図である。
【図2】命令乱発行によって並列可能実行命令数が増加
する場合の、命令間の相互依存性の一例を示した図であ
る。
【図3】二階層型命令の一般的フォーマットを示した図
である。
【符号の説明】
1 メモリ 2 命令解析部 3 命令実行部 4 グローバルレジスタファイル 5 命令解釈・実行部 6 ローカルプログラム記憶 7 ローカルレジスタファイル 8 ローカルデータ記憶 9 オペランド部 10 オペコード部 11 後続命令位置記述部 12 下位命令実行プログラム

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 計算機のための命令のオペランド部分に
    直接埋め込まれるか、オペランド部分で指示されたアド
    レス位置に置かれた下位命令を含む階層型命令を実行す
    るために上位計算機構造と複数の下位計算機構造とから
    構成される計算機であって、 前記上位計算機構造は、命令の並列実行に影響する部分
    だけを実行し、 前記下位計算機構造は、前記下位命令を処理して、具体
    的な計算内容を実行する、ことから成る計算機。
  2. 【請求項2】 前記上位計算機構造の命令解析部は、命
    令で行う計算内容についての処理を行わず、もっぱら参
    照するデータの決定、割り付けと、次に実行する命令の
    決定のみを行う請求項1に記載の計算機。
  3. 【請求項3】 前記複数の下位計算機構造は、それぞれ
    独立して下位命令を実行するために、ローカルレジス
    タ、ローカルプログラム記憶、及びローカルデータ記憶
    を有している請求項1又は2に記載の計算機。
  4. 【請求項4】 グローバルレジスタファイルおよびメモ
    リを備える計算機において、ローカルレジスタファイ
    ル、ローカルプログラム記憶、および必要に応じて少量
    のローカルデータ記憶を備え、データ参照方式として該
    ローカルレジスタと該ローカルデータ記憶への参照のみ
    を備える命令セットを実行する下位計算機構造を、該計
    算機の命令実行部として複数備え、該計算機の命令のう
    ち該下位計算機構造で実行させる命令は、命令フォーマ
    ットのオペコード部に該下位計算機構造の実行プログラ
    ムもしくは実行プログラムの格納位置を記述し、命令フ
    ォーマットのオペランド部に該計算機のグローバルレジ
    スタおよびメモリのデータ、および即値データの、該下
    位計算機構造のローカルレジスタおよびローカルデータ
    記憶への対応を記述したものである計算機。
  5. 【請求項5】 計算機の一命令中に記述されるオペラン
    ド部で、下位計算機構造の同一の番号で指定されるロー
    カルレジスタに、物理的に二つのレジスタ回路を対応さ
    せ、一方を読出し専用、他方を書込み専用とし、該命令
    による下位計算機構造の実行プログラムの命令実行に際
    して、該番号のレジスタが読出しレジスタとして指定さ
    れた場合には読出し専用レジスタからデータを読み、該
    番号のレジスタが書込みレジスタとして指定された場合
    には書込み専用レジスタにデータを書込むように動作す
    ることが、該計算機での命令のオペランド部により指定
    できる請求項4に記載の計算機。
  6. 【請求項6】 計算機の命令のオペランド部において指
    定された下位計算機構造の読出しもしくは書込み専用レ
    ジスタが、該計算機の命令のオペランド部において、メ
    モリ上の連続する複数のデータに対応付けられ、ローカ
    ルレジスタへの読出しもしくは書込みアクセスが、ベク
    トル読出しもしくはベクトル書込みとなる動作を指定で
    きる請求項5に記載の計算機。
  7. 【請求項7】 計算機の一命令で、メモリ領域の一ブロ
    ックに連続して存在するデータが読み込みまたは書き込
    みされ、なおかつ該データが下位計算機構造の複数のロ
    ーカルレジスタに対応する時、命令のオペランド部にお
    いて、該データが読み込みまたは書き込みされることを
    記述する部分と、該データの各部分が対応するローカル
    レジスタの番号とを記述する部分が分離している請求項
    4〜6のいずれかに記載の計算機。
JP2001062274A 2001-03-06 2001-03-06 階層型命令を実行する計算機 Expired - Lifetime JP3541356B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001062274A JP3541356B2 (ja) 2001-03-06 2001-03-06 階層型命令を実行する計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001062274A JP3541356B2 (ja) 2001-03-06 2001-03-06 階層型命令を実行する計算機

Publications (2)

Publication Number Publication Date
JP2002259119A true JP2002259119A (ja) 2002-09-13
JP3541356B2 JP3541356B2 (ja) 2004-07-07

Family

ID=18921435

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001062274A Expired - Lifetime JP3541356B2 (ja) 2001-03-06 2001-03-06 階層型命令を実行する計算機

Country Status (1)

Country Link
JP (1) JP3541356B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007052811A (ja) * 2006-10-23 2007-03-01 Tops Systems:Kk マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法
JP2009211222A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007052811A (ja) * 2006-10-23 2007-03-01 Tops Systems:Kk マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法
JP4528993B2 (ja) * 2006-10-23 2010-08-25 株式会社トプスシステムズ マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法
JP2009211222A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP4621749B2 (ja) * 2008-03-01 2011-01-26 株式会社東芝 メモリシステム
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
US9201717B2 (en) 2008-03-01 2015-12-01 Kabushiki Kaisha Toshiba Memory system
US10901625B2 (en) 2008-03-01 2021-01-26 Toshiba Memory Corporation Memory system
US11409442B2 (en) 2008-03-01 2022-08-09 Kioxia Corporation Memory system
US12032831B2 (en) 2008-03-01 2024-07-09 Kioxia Corporation Memory system

Also Published As

Publication number Publication date
JP3541356B2 (ja) 2004-07-07

Similar Documents

Publication Publication Date Title
US10248395B2 (en) Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
EP3350705B1 (en) Initiating instruction block execution using a register access instruction
US7793081B2 (en) Implementing instruction set architectures with non-contiguous register file specifiers
US9311095B2 (en) Using register last use information to perform decode time computer instruction optimization
US6988183B1 (en) Methods for increasing instruction-level parallelism in microprocessors and digital system
US8918623B2 (en) Implementing instruction set architectures with non-contiguous register file specifiers
US5448746A (en) System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
EP1296227B1 (en) Valid instruction dispatching and execution
US6799315B2 (en) High speed virtual machine and compiler
US6675376B2 (en) System and method for fusing instructions
US6157996A (en) Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6631514B1 (en) Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
US20100058034A1 (en) Creating register dependencies to model hazardous memory dependencies
US8499293B1 (en) Symbolic renaming optimization of a trace
US7849292B1 (en) Flag optimization of a trace
US20150227371A1 (en) Processors with Support for Compact Branch Instructions & Methods
US7228528B2 (en) Building inter-block streams from a dynamic execution trace for a program
US7937564B1 (en) Emit vector optimization of a trace
US6286094B1 (en) Method and system for optimizing the fetching of dispatch groups in a superscalar processor
JP3541356B2 (ja) 階層型命令を実行する計算機
Krick et al. The evolution of instruction sequencing
JPH06214785A (ja) マイクロプロセッサ
JPH04506878A (ja) データ処理装置
JP7506718B2 (ja) ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20031222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040210

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: 20040309

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040318

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3541356

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20100409

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20140409

Year of fee payment: 10

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term