JPH09274567A - プログラムの実行制御方法及びそのためのプロセッサ - Google Patents

プログラムの実行制御方法及びそのためのプロセッサ

Info

Publication number
JPH09274567A
JPH09274567A JP8487596A JP8487596A JPH09274567A JP H09274567 A JPH09274567 A JP H09274567A JP 8487596 A JP8487596 A JP 8487596A JP 8487596 A JP8487596 A JP 8487596A JP H09274567 A JPH09274567 A JP H09274567A
Authority
JP
Japan
Prior art keywords
instruction
circuit
mode
instructions
executed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP8487596A
Other languages
English (en)
Inventor
Yoshiko Tamaoki
由子 玉置
Masanao Ito
昌尚 伊藤
Naonobu Sukegawa
直伸 助川
Shigeo Nagashima
重夫 長島
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP8487596A priority Critical patent/JPH09274567A/ja
Publication of JPH09274567A publication Critical patent/JPH09274567A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】VLIW方式とスーパースカラ方式のプログラ
ムの実行を可能とする。 【解決手段】処理モードビット200と、複数の演算処
理ユニット21〜26と、命令間依存関係解決回路13
とを備え、スーパースカラ処理モード時は、依存関係解
決回路13と演算処理ユニット21〜26の一部のみを
使用し、VLIW処理モード時は、依存関係解決回路1
3を使用しないで、全ての演算処理ユニットを使用す
る。割込発生時はスーパースカラモードに切り替えた上
で割り込み処理ソフトを実行する。モード切り替えは、
先行するモードで実行された命令の演算が終了したこと
を検出してから、プログラム状態語内に保持されたスー
パスカラかVLIW処理モードかを示すモードビットを
ハードで更新して行う。とくにシステムソフトウエア
は、スーパースカラ処理モードで実行する。アプリケー
ションプログラムはなるべくVLIEW処理用に生成す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術の分野】本発明は、システムソフト
ウエアおよびアプリケーションプログラムの実行制御方
法およびスーパースカラ処理用のプログラムとVLIW
命令用のプログラムを切り替えて実行するプロセッサに
関する。
【0002】
【従来の技術】プロセッサ性能を向上させるためには、
(1)複数の演算処理ユニットを効率的に並列動作さ
せ、(2)かつプロセッサの動作周波数を向上させる必
要がある。現在、プロセッサ構成方式の主流となってい
るスーパースカラ方式のプロセッサは、概念的には順次
実行されるべき命令を並列に実行するもので、より具体
的には、(1)を実現するために複数の演算処理ユニッ
トを備え、同時に複数の命令をデコードして発行し、さ
らに命令間の依存関係を検査するハードを備え、依存関
係のない命令間で命令実行の追越しを行うための機構を
備えている(「情報科学コアカリキュラム講座 コンピ
ュータアーキテクチャI」、富田真治著、丸善出版)。
しかしスーパースカラ方式には、演算処理ユニットの数
を増やそうとすると、複数の演算処理ユニットに同時に
命令を発行する回路および複数の命令間の依存解析を行
う回路の規模が大きくなる。これがネックとなって、プ
ロセッサの動作周波数が低下してしまい、全体として性
能を向上させることができないという問題がある。
【0003】この問題を解決するために近年注目されて
いるVLIW方式のプロセッサは、以下の特徴を備えて
いる(「情報科学コアカリキュラム講座 コンピュータ
アーキテクチャI」、富田真治著、丸善出版)。
【0004】(1)複数の小命令を集めて1つの命令を
構成する長命令形式を採ることにより、各小命令フィー
ルドごとにあらかじめ定まった演算処理ユニットに対し
て小命令を発行することができ、複雑な命令発行回路を
用意する必要がなくなる。
【0005】(2)命令間の依存解析をソフトウェアが
あらかじめ行い、相互に依存関係のある命令は、それら
の命令を実行する演算処理ユニットのレイテンシを考慮
して、十分離して配置するというスケジューリング利技
術を併用すると、ハードウェアで依存解析の回路を用意
する必要がなくなる。そのため、VLIW方式のプロセ
ッサでは動作周波数を落すことなく、演算処理ユニット
の数を増やすことができる。
【0006】
【発明が解決しようとする課題】VLIEW命令用のプ
ロセッサの改良が進むにつれ、VLIW方式のプロセッ
サが備える演算処理ユニットの数が増大する傾向にあ
り、さらに演算処理ユニットのレイテンシも改良され
る。ところが、あるVLIW方式のプロセッサでは、そ
のVLIEW方式のプロセッサが備える演算処理ユニッ
トの数と一致しない小命令フィールドを有するVLIW
命令により構成された他のVLIEW方式のプロセッサ
用のプログラムは正しく動作しない。そのプロセッサの
演算処理ユニットのレイテンシと一致しないレイテンシ
の演算処理ユニットを有する他のVLIEW方式のプロ
セッサ用に作成されたプログラムについても同じであ
る。そのためあるVLIW方式のプロセッサ用に作成さ
れたプログラムは次の世代のVLIWプロセッサでは実
行できず、このためVLIW方式のプロセッサ用のプロ
グラムの移行が進み難いという問題が知られている。
【0007】従って、本発明の目的は、他のプロセッサ
用に作成された、ソフトウエアもアプリケーションプロ
グラムもVLIW方式のプロセッサに移行しやすくする
ような、VLIW方式のプロセッサのためのプログラム
の実行制御方法およびそれに適したプロセッサを提供す
ることにある。
【0008】
【課題を解決するための手段】本発明者の検討の結果、
上記問題を回避するには、システムソフトウェア(オペ
レーティングシステム)はスーパースカラ処理に適した
逐次実行型の命令により構成し、アプリケーションプロ
グラムはVLIEW用の命令により構成することが望ま
しいと判断するに至った。
【0009】すなわち、上記の問題は、アプリケーショ
ンプログラムに関してよりも、システムソフトウェアに
関してより重大である。何故ならユーザアプリケーショ
ンプログラムは、高級言語で記述されたソースプログラ
ムからコンパイルされることが多い。したがって、ある
VLIEW方式のプロセッサ用にコンパイルされたアプ
リケーションプログラムのソースプログラムがある場合
には、そのソースプログラムを新たなVLIEW方式の
プロセッサで実行可能なプログラムにリコンパイルする
ことが可能である。このため、異なるVLIW方式のプ
ロセッサの間でのアプリケーションプログラムの移行は
比較的容易である。しかし、システムソフトウェアは機
械語に近いレベルで記述されることが多いため、このプ
ログラムを異なるVLIWプロセッサ間で移行するため
には、もとのシステムソフトウエアのリコーディングと
デバッギングを要し、しかも、この処理が膨大な工数を
必要とする。従って、システムソフトウエアはアプリケ
ーションプログラムよりも異なるVLIWプロセッサ間
で移行しにくいという問題を有する。もしシステムソフ
トウエアが概念的には順次実行すべき命令列からなる、
スーパスカラ処理に適合したプログラムにより作成され
ていれば、それを実行すべきスーパスカラ処理用のプロ
セッサが変化しても、そのソフトウエアに関しては上に
述べた問題はない。
【0010】従って、本発明者は、正しく動作すること
が要求されるシステムソフトウェアをスーパースカラ処
理用に作成することが望ましく、一方、高い実行性能が
要求されるアプリケーションプログラムはVLIEW用
の命令で構成することにより、VLIEW処理の利点を
利用することが望ましく、従って、これらの2種のプロ
グラムを実行できるプロセッサを実現することが望まし
いと考えるに至った。
【0011】その結果、上記の問題を解決するために本
発明によるプログラム実行制御方法では、複数の演算処
理ユニットと、該演算処理ユニットと同数の複数の命令
デコーダとを備えるプロセッサに適用され、複数の逐次
実行すべき命令により構成されたオペレーティングシス
テムを、上記演算処理ユニットの一部と上記複数の命令
デコーダの一部とを使用してスーパースカラ処理により
実行するように制御し、複数のVLIW命令により構成
されたアプリケーションプログラムを、上記複数の演算
処理ユニットと上記複数の命令デコーダとを用いて実行
するように制御する。
【0012】より望ましくは、上記複数のVLIWは、
相互に依存関係を有する命令を実質的に含まないが、上
記複数の逐次実行すべき命令は相互に依存関係を有する
命令を含む場合において、上記オペレーティングシステ
ムの実行の制御においては、上記プロセッサに含まれた
命令間の依存関係を解決する回路をさらに用いて、上記
オペレーティングシステムを実行するように制御し、上
記アプリケーションプログラムの実行の制御において
は、上記依存関係解決回路を使用しないで上記アプリケ
ーションプログラムを実行するように制御する。もちろ
ん、本発明は、アプリケーションプログラムとしてスー
パスカラ処理用に作成されたものがある場合には、その
ようなアプリケーションプログラムをスーパスカラ処理
にて実行することを排除するものではない。
【0013】さらに、本発明によるプロセッサは、複数
の演算処理ユニットを備え、その内の一部を用いて逐次
実行型の命令列を並列に実行するスーパースカラ処理方
式で動作するモードと上記複数の演算処理ユニットを用
いてVLIW命令列を実行するVLIW処理方式で動作
するモードとを備える。またあらかじめ定められたオペ
コードの命令が出現したときにモードの切替を行う回路
を備える。さらに、本発明によるプロセッサは、上記複
数の演算処理ユニットに対応する複数の命令デコーダ回
路を有し、スーパースカラモード時には、上記複数の演
算処理ユニットのうち一部の演算処理ユニット群とそれ
らに対応する一部の命令デコーダ回路および依存関係解
決回路を使用する。VLIW処理モード時には、上記複
数の演算処理ユニットと上記複数の命令デコード回路と
を使用する。
【0014】またモード切り替え時には、新たな命令の
発行を中断し、実行中の全ての命令が終了してからモー
ドを切り替える回路を備える。さらに割込が発生したと
きには、命令の発行を中断し、実行中の全ての命令の終
了を待ち、その割り込み発生時点でプロセッサがVLI
W処理モードで動作したときには、スーパスカラモード
に切り替える回路を備える。
【0015】
【発明の実施の形態】以下、本発明に係わるVLIW命
令用のプロセッサを図面に示した実施の形態を参照して
更に詳細に説明する。
【0016】図1を参照するに、プロセッサ1では、図
示されない主記憶に保持された命令は、命令キャッシュ
3にキャッシュされ、さらに命令フェッチ回路7により
取り出され、デコード回路9でデコードされる。デコー
ドされた命令が指定する演算は、複数(本実施の形態で
は、例えば6)の演算処理ユニット21から26の一部
あるいは全部を使用して実行される。ここで、演算処理
ユニット21および24は浮動小数点演算ユニット(F
U)、22および25は固定小数点演算ユニット(X
U)、23および26はメモリアクセスユニット(A
U)である。各演算処理ユニット21〜26はレジスタ
群15とに信号線61〜66を介して接続され、さら
に、データキャッシュ5に線48、49を介して接続さ
れ、レジスタ群15あるいはデータキャッシュ5との間
で処理すべきデータあるいは処理の結果得られたデータ
をやりとりする。
【0017】本プロセッサ1は、VLIWモードとスー
パースカラ(以下SSと略記)モードを切り替えて動作
可能に構成されている点に特徴がある。VLIWモード
ではデコード回路9は、命令バッファ7より長命令(V
LIW命令とも呼ぶ)の各小命令フィールドを独立にデ
コードする。本実施の形態では、VLIWモードでは、
命令間の依存関係がソフトウエア的に解決された命令列
を実行するモードである。具体的には、本実施例で使用
する長命令内の各小命令の間あるいは異なる長命令の間
では、命令間の依存関係が実質的に存在しないように長
命令列がスケジュールされていると仮定する。デコード
回路9は、それぞれの小命令のデコード結果を直ちに信
号線51〜56を介して対応する演算処理ユニット21
〜26に送出することにより、それらの命令を発行す
る。これらの演算処理ユニットは、送出された小命令を
直ちに実行する。
【0018】一方SSモードは、ソフトウエアにより依
存関係が解決されていない命令列を複数ずつ並列に実行
するモードである。具体的には、本実施の形態では、こ
のモードでは実行される命令列は、逐次実行されるべき
命令列よりなると仮定する。デコード回路9は、命令フ
ェッチ回路7によりフェッチされた逐次実行型の複数の
命令の内、あらかじめ定めた数(本実施例では例えば
3)の命令を並列にデコードし、それぞれの命令のデコ
ード結果を信号線51〜53を介してリザベーションス
テーションと呼ばれる依存関係解決回路13に送出する
ことにより、それらの命令を発行する。本実施の形態で
は、スーパスカラ処理されるべき命令列は、ソフトウエ
アにより依存関係が解決されていない命令列と仮定する
ので、この依存関係を解決するための回路として依存関
係解決回路13が設けられている。
【0019】依存関係解決回路13はこれらの命令間の
依存解析を行い、実行可能な命令を選択し、それぞれの
命令の実行結果を、それぞれの命令が要求する処理を実
行可能な演算処理ユニット21〜23のいずれかに、線
45から47およびセレクタ48から50、および信号
線57〜59の内の適当なものを介して送出する。すな
わち、デコーダ回路91から93により解読された複数
の命令の各々と、演算処理ユニット21から23により
実行中の先行命令のいずれかとの間の依存解析が依存関
係解決回路13において行われる。例えば、その命令が
いずれかの先行命令の演算により更新されるレジスタ群
15内のデータを利用するときには、その命令とその先
行命令との間に依存関係があることになる。いずれかの
解読された命令に対してこの依存関係があると判断され
たときには、その解読された命令の演算の開始を遅延す
る。その先行命令の実行結果がその先行命令を実行して
いる演算処理ユニットからその依存関係解決回路13装
置に転送された時点で、その命令を実行可能と判断し、
その命令を実行すべき演算処理ユニット21〜23のい
ずれかに信号線57〜59を介して送出する。このため
に、演算処理ユニット57〜59は、そこでの演算にお
り得られる演算結果を、レジスタ群15内のいずれかに
書き込むとともに、依存関係解決回路13装置に転送す
るようになっている。上記実行可能と判断された命令を
いずれかの演算処理ユニットに送出するためには、依存
関係解決回路13からその命令を複数の演算処理ユニッ
ト21から23の内、その命令を実行可能なものに分配
する回路が使用される。しかし、本実施の形態では、簡
単化のためにこの回路は図示していない。
【0020】なお、依存関係解決回路(リザベーション
ステーション)の実現方法は公知であり、「並列計算機
構成論」(富田真治著、昭晃堂)pp。55−59に記
されたトマスロの方法などが知られている。上記あらか
じめ定めた数は、全ての演算処理ユニット21から26
の数より小となるように定められている。これにより、
依存関係解決回路13の回路規模が大きくならないよう
にしている。本実施の形態では、プロセッサの内部構造
の内、本発明の実施に本質的に重要な部分を主として説
明する。実際には、スーパスカラ処理あるいはVLIW
処理を実行するに必要なそれ自体公知の回路は簡単化の
ために説明を省略した。
【0021】図2は、本プロセッサで実行される2種類
の命令の形式を示している。102は、スーパースカラ
モードで実行される逐次実行型のスカラ命令を示し、こ
の命令は、オペコードOPCとオペランドOPRからな
る。以下において、システムプログラムはこのフォーマ
ットの命令により構成されていると仮定する。101
は、長命令を示し、この命令は、演算処理ユニット21
〜26に対応した小命令フィールドF1、X1、A1、
F2、X2、A2を有する。各小命令はオペコードOP
CとオペランドOPRからなり、各小命令はスーパース
カラ命令と全く同じ形式を有している。以下では、ユー
ザプロセス(アプリケーションプログラム)は、このフ
ォーマットの命令により構成されていると仮定する。な
お本実施の形態では説明の簡単化のため分岐命令の形式
および分岐命令に対する装置動作の説明は省略する。
【0022】以下、プロセッサ1の動作を詳細に説明す
る。図4は、命令制御回路11の構成図である。命令制
御回路11は、公知のプロセッサと同様に、プログラム
状態語(PSW)200を内部に保持し、このPSWを
システムソフトウエアにより書き換えることにより、こ
のプロセッサ1での命令の実行を制御する。PSW20
0には、処理モードを示すモードビットMおよび次命令
のアドレスである命令アドレスIAをそれぞれ保持する
フィールドがある。PSW200内にはこれら以外にも
特権/非特権モードやアドレス変換モード等を示すビッ
トがあるのが普通であるが、本発明とは関係しないため
それらの詳細は省略する。Mビットが0の時SSモー
ド、1の時VLIWモードとする。
【0023】M=1の時、分岐命令処理/命令要求回路
224は、命令アドレスIAをPSW200から読み、
線39−0を介して命令フェッチ回路7(図1)に送出
し、さらに、PSW200内の命令アドレスIAをカウ
ントアップする。モードビットMは、信号線39−1、
41によってそれぞれ命令フェッチ回路7(図1)、セ
レクタ48〜50(図1)にも送出される。
【0024】図3を参照するに、命令フェッチ回路7に
は、複数の演算処理ユニット57−56に対応して複数
の命令バッファ(IBUF)71〜76が設けられてい
る。これらの命令バッファ71から76は、複数の長命
令の内の異なるフィールドを分散して保持するのに使用
され、さらに、それぞれ複数の逐次実行型のスカラ命令
を保持するのに使用される。命令要求回路79には、信
号線39−0により次命令のアドレスIAを得、信号線
77により命令バッファ71〜76にバッファリングさ
れている命令の数を得、命令バッファ71〜76が空に
ならないように命令キャッシュ3に対し命令フェッチ要
求35−0を送出する。こうしてフェッチされた命令が
長命令101(図2)の場合、その長命令の小命令フィ
ールドF1、X1、A1、F2、X2、A2の各々が信
号線35−1〜35−6を介して命令バッファ71〜7
6にバッファリングされる。命令バッファ71〜76は
異なる長命令に属する複数の小命令を保持可能である。
命令バッファ71〜73はそこに保持された複数の小命
令の内の先頭の小命令を線88−1から88−3を介し
てセレクタ81から83に毎サイクル供給し、命令バッ
ファ74〜76はそこに保持された複数の小命令の内の
先頭の小命令を線37−4から37−6を介してデコー
ド回路9に毎サイクル供給する。切り替え回路78は、
信号線39−1がVLIWモードを示しているとき、セ
レクタ81〜83が信号線81−1〜81−3を選択す
るよう制御する。従って、これらのバッファ内に保持さ
れた複数の長命令は、1クロックごとに信号線37−1
〜37−6を介してデコード回路9に送出される。
【0025】デコード回路9は、複数の演算処理ユニッ
ト21から26(図1)に対応する複数のデコード回路
91から96を有し、これらのデコード回路91〜96
は、それぞれに線37−1〜37−6を介して与えられ
た小命令をデコードし、デコード結果を毎サイクル線5
1〜56に送出する。図1において、セレクタ48から
50は、命令制御回路11から線41を介して与えられ
たモードビットMが1のときには、線51から53を選
択する。この結果、デコーダ回路91から96により出
力された複数の小命令のデコード結果は、線57から5
9および線54から56を介して複数の演算処理ユニッ
ト21から26に与えられる。本実施の形態では、VL
IWモードで実行される長命令からなるプログラムはソ
フトウェアにより命令間の依存関係のないことが保証さ
れていると仮定しているので、各演算処理ユニット21
〜26はこれらのデコード結果が指定する処理を直ちに
実行する。以上と同様にしてVLIWモードの後続の長
命令も処理される。
【0026】VLIWモードで動作中に何らかの要因で
割込が発生したとする。例えば、プロセッサ1の外部か
ら割込信号が、図1の信号線2を介して与えられたと仮
定する。図4において、割込処理回路221がこの割り
込み信号により起動され、分岐命令処理/命令要求回路
224は、この割り込み信号に応答して、信号線39−
0を介し、命令フェッチを中断する指示を命令フェッチ
回路7に送出する。図3において、命令フェッチ回路7
では、命令要求回路79が、この信号39−0に応答し
て命令のフェッチを中断する。さらに、全ての命令バッ
ファ71〜76は、この信号39−0に応答して、それ
らに保持されている命令を無効にする。分岐命令処理/
命令要求回路224は、上記割り込み信号に応答して、
信号線44−0を介し、命令発行を中止する指示を全て
のデコーダ回路91から96に送出する。これらのデコ
ーダ回路は、そこで解読された命令を転送することを中
止する。
【0027】図1において演算処理ユニット21〜23
は、現在実行中の命令があるかを信号線42に送出して
いる。同様に、演算処理ユニット24〜26は、現在実
行中の命令があるかを信号線43を介して命令制御回路
11に通知している。上記命令発行を中止する指示に従
って、デコーダ回路91から96が命令の発行を中止す
ると、各演算処理ユニット21〜26はそこで実行中の
命令の演算が終了下地点でと、実行する命令が無くな
る。したがって、いずれ信号線42、43はいずれも
「実行中命令なし」を表示するようになる。図4におい
てAND回路201は、信号線42、43がいずれも
「実行中命令なし」を表示したときに信号線204に1
を送出する。セレクタ202は、PSW200より線2
03を介して与えられるMビットが1の時、信号線20
4を選択して信号線205を介して割込処理回路221
とPSWロード命令処理回路223へ「実行中の命令な
し」を通知する。
【0028】割込処理回路221は、起動された後、信
号線205が「実行中命令なし」を表示するまで待って
から、PSW200の内容を、主記憶(図示せず)内の
割込要因ごとのPSW退避領域(図示せず)に退避し、
信号線221を介して、PSW200内の命令アドレス
IAに、その割込要因を処理すべきシステムソフトウェ
アの命令アドレスを設定し、さらに、PSW200内の
モードビットMが1であれば、Mに0を設定する。すな
わち割込が発生すると、この割込要因を処理すべきシス
テムソフトウェアをSSモードで実行するために、ハー
ドウエアにより強制的にSSモードに切り替えられる。
図5の301〜306が以上のフローを示している。
【0029】上記割込要因を処理すべきシステムソフト
ウェアはSSモードで動作し、図5の処理307〜31
1、312a、312b、313a、313bを実行す
る。すなわち、それまで実行していたVLIWプログラ
ムが使用していた、レジスタ群15内のデータを退避
し、線2からの割込の要因を処理する(ステップ307
から308)。こうして割り込み処理が完了すると、新
たに実行すべきプログラムを起動する。割り込み時に実
行されていたプログラムがシステムソフトウエアである
ときには、そのシステムプログラムを選択する。また、
割り込まれたプログラムがアプリケーションプログラム
の場合には、新たにディスパッチすべきユーザプロセス
を選択する。このように、割り込み処理後はシステムソ
フトウエアも選択されうるが、図5のステップ309
は、簡単化のために、割り込まれたプログラムがユーザ
プロセスである場合に割り込み処理後にユーザプロセス
を選択することを図示している。ステップ310以降の
処理もユーザプロセスがステップ309で選択される場
合について示しているが、システムソフトウエアがステ
ップ309で選択された場合にも同様の処理がなされ
る。
【0030】さて、選択したプロセスのレジスタ環境を
回復し、予め退避しておいたそのプロセスのPSWをロ
ードする(ステップ310)。本実施例では、システム
プログラムはスーパスカラ処理モードで実行される。一
方、アプリケーションプログラムは、VLIW処理モー
ドで実行されることが望ましいが、スーパスカラ処理用
に作成されたアプリケーションプログラムの実行を禁止
するのではない。従って、選択されるプロセスがスーパ
スカラ処理用のプロセスである場合もあり得る。従っ
て、選択されたプロセスの種別を判別し(ステップ31
1)、選択したプロセスがVLIWモードで動作するプ
ロセスであればM=1のPSWをロードする。PSWが
ロードされるとユーザプロセスは実行を再開する(ステ
ップ312a、313a)。選択されたユーザプロセス
がSSモードで動作するプロセスであればM=0のPS
Wをロードする。PSWがロードされるとユーザプロセ
スは実行を再開する(ステップ312b、313b)。
ステップ309でシステムソフトウエアが選択されたと
きには、以上のステップ310以降の内、ステップ31
0、312b、313bが実行されることは明らかであ
る。
【0031】選択されたプログラムがSSモードで実行
すべきプログラムであるときの装置動作をを以下詳細に
説明する。図4において、割込処理回路221によりP
SW200のMビットには0が設定され、SSモードへ
と切り替えられる。M=0の時、命令要求回路224は
IAを読み39−0に命令アドレスとして送出し、IA
を更新する。Mビットの値は信号線39−1、41によ
って各々命令フェッチ回路7、セレクタ48〜50にも
送出される。
【0032】図3において命令要求回路79は、信号線
39−0により次命令のアドレスを得、信号線77によ
り命令バッファ71〜76の命令バッファにバッファリ
ングされている命令の数を得、命令バッファ71〜76
が空にならないように命令キャッシュ3に対し命令フェ
ッチ要求35−0を送出する。フェッチされた命令は図
2の102の形式を有し、それぞれの命令が信号線35
−1〜6を介して命令バッファ71〜76に順次バッフ
ァリングされる。
【0033】切り替え回路78は信号線39−1がSS
モードを示しているとき、セレクタ81〜83が信号線
71〜73と信号線74〜76を交互に選択するよう制
御する。よってフェッチされた命令は命令バッファ71
〜76にバッファリングされた後、2クロックごとに3
命令ずつ信号線37−1〜3に送出される。
【0034】デコード回路9においては、デコード回路
91〜93は各々与えられた命令をデコードし、毎サイ
クル線51〜53にデコード結果を送出する。デコード
回路91〜93のいずれか一つがデコードした命令がP
SWロード命令の場合、その解読情報が信号線44−1
から44−3の一つを介して命令制御回路11に送出さ
れる。
【0035】信号線51〜53に送出された複数の解読
された命令の各々と、演算処理ユニット21から23に
より実行中の先行命令のいずれかとの間との間の依存解
析が依存関係解決回路13において行われ、実行可能と
判断された命令は、その命令を実行すべき演算処理ユニ
ット21〜23のいずれかに信号線57〜59を介して
送出される。演算処理ユニット21〜23はレジスタ群
15およびデータキャッシュ5と信号線61〜63、4
8を介してデータをやりとりして命令を実行する。演算
処理ユニット23が実行すべき命令がPSWロード命令
の場合、ロードされたデータは信号線48を介し、命令
制御回路11に入力される。
【0036】命令が実行され、演算結果データが信号線
61〜63によりレジスタ群15に書込まれると、デー
タが書込まれたことが同じく信号線61〜63を介して
依存関係解決回路13にも伝えられる。依存関係解決回
路13は伝えられた演算結果により実行可能となる命令
があるか調べ、あればそれを信号線45〜47に送出す
る。依存関係解決回路13により、SSモードにおいて
デコード回路91〜93でデコードされ、演算処理ユニ
ット21〜23で実行される命令間の依存関係は保証さ
れる。
【0037】図5の処理307が実行されるときには、
PSWのMビットはSSモードを示しており、それまで
実行されていたVLIWモードの処理結果は全てレジス
タに反映されている。よって、レジスタ退避処理307
を行なっても失われる処理結果はなく、また後に中断さ
れたVLIWモードのプログラムを再開したときも正し
く動作させることができる。フロー307〜311は上
述のごとく依存関係解決回路13の制御により、演算処
理ユニット21〜23を用いて正しく動作することがで
きる。
【0038】図5の処理312aまたは312bにおい
てPSWロード命令を実行すると、デコード回路91〜
93のいずれかがその命令を検出して図4のPSWロー
ド命令処理回路223に信号線44−1から44−3の
いずれかを介して通知する。PSWロード命令処理回路
223は信号線212、命令要求回路224、信号線3
9−0を介して命令のフェッチを中断させ、信号線20
5に「実行中命令なし」の通知が来るのを待つ。ここで
Mビットが0の時、セレクタ202は信号線42の値を
選択するよう制御される。よって演算処理ユニット21
〜23の全てにおいて「実行中命令なし」となったとき
にPSWロード命令処理回路223はその旨の通知を受
けることになる。
【0039】信号線205を受け取ると、PSWロード
命令処理回路223は、信号線48を介して受け取った
値を信号線213を介してPSWに設定する。設定され
たMビットが0の場合、ディスパッチされたプロセスは
引続きSSモードで実行される。設定されたMビットが
1の場合、ディスパッチされたプロセスはVLIWモー
ドで実行される。いずれの場合も、それまで実行されて
いたSSモードの処理結果は全てレジスタに反映されて
いるため、プロセスは正しく動作することができる。
【0040】以上から明らかなように、本実施の形態で
は、ソフトウエアにより命令間の競合が解決されていな
いプログラムは、プロセッサ内の命令間の依存関係解決
回路を使用して実行でき、ソフトウエアにより命令間の
競合が解決されていないプログラムはこの回路を使用す
ることなく実行できる。
【0041】また、システムソフトウェアはスーパース
カラ処理方式で、かつ、依存関係解決回路を使用して動
作させることにより、リコーディングやデバッギングを
行なうことなく正しく動作することを保証し、一方リコ
ンパイルが可能なアプリケーションプログラムについて
はVLIW方式によりこの依存関係解決回路を使用する
ことなく高い並列度で実行できる。
【0042】とくに本発明のプロセッサにおいて、VL
IWモードのアプリケーションプログラムからシステム
ソフトウェアに切り替わる割込の際に、先行する命令の
実行を全て終了してからハードにより強制的にスーパー
スカラモードに切り替える方法を採用すると、従来のシ
ステムソフトウェアを、処理モードを意識したコーディ
ングを追加することなく、本発明のプロセッサは実行で
きる。
【0043】さらに、従来プロセッサ動作周波数向上の
ネックであった命令間依存解析回路は、少ない演算処理
ユニット間でしかインタラクションを設けないようにす
るため、演算処理ユニットの数を増加させても動作周波
数向上の妨げにはならない。
【0044】
【発明の効果】本発明によるプログラムの実行制御方法
では、システムソフトウエアを逐次実行型の命令により
構成し、スーパスカラ処理により実行できるので、VL
IW用プロセッサが新しいプロセッサへと改良されたと
しても、そのシステムソフトウエアをその新しいプロセ
ッサに移行するのは比較的容易である。さらに、アプリ
ケーションプログラムはVLIW命令により構成するこ
とにより、VLIW処理プロセッサの高性能を利用で
き、かつ、新しい世代のプロセッサにはリコンパイルに
より移行することが比較的容易である。
【0045】さらに、本発明によるプロセッサでは、逐
次実行型の命令により構成されたシステムソフトウエア
をスーパスカラ処理により実行でき、VLIW命令によ
り構成されたアプリケーションプログラムはVLIW処
理により実行できる。
【図面の簡単な説明】
【図1】本発明に係るプロセッサの全体構成図。
【図2】図1のプロセッサが実行する複数種類の命令形
式を示す図。
【図3】図1のプロセッサ中の命令フェッチ回路および
デコード回路の構成図。
【図4】図1のプロセッサ中の命令制御回路の構成図
【図5】図1のプロセッサにより実行される、VLIW
モードの処理とスーパースカラモードの処理のフローチ
ャート。
【符号の説明】
200:プログラム状態語(PSW)、71〜76:命
令バッファ、91〜96:命令デコーダ、21〜26:
演算処理ユニット。
フロントページの続き (72)発明者 長島 重夫 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】複数の演算処理ユニットと、該演算処理ユ
    ニットと同数の複数の命令デコーダとを備えるプロセッ
    サにおいて、 複数の逐次実行すべき命令により構成されたオペレーテ
    ィングシステムを、上記演算処理ユニットの一部と上記
    複数の命令デコーダの一部とを使用してスーパースカラ
    処理により実行するように制御し、 複数のVLIW命令により構成されたアプリケーション
    プログラムを、上記複数の演算処理ユニットと上記複数
    の命令デコーダとを用いて実行するように制御するプロ
    グラムの実行制御方法。
  2. 【請求項2】上記複数の逐次実行すべき命令は相互に依
    存関係を有する命令を含み、 上記複数のVLIWは、相互に依存関係を有する命令を
    実質的に含まず、 上記プロセッサは、命令間の依存関係を解決する回路を
    さらに有し、 上記オペレーティングシステムの実行の制御において
    は、上記依存関係解決回路をさらに用いて上記オペレー
    ティングシステム実行するように制御し、 上記アプリケーションプログラムの実行の制御において
    は、上記依存関係解決回路を使用しないで上記アプリケ
    ーションプログラムを実行するように制御する請求項1
    記載のプログラムの実行制御方法。
  3. 【請求項3】複数の演算処理ユニットと、 複数の逐次実行すべき命令により構成された第1のプロ
    グラムを、上記演算処理ユニットの一部を用いてスーパ
    ースカラ処理で実行し、複数のVLIW命令により構成
    された第2のプログラムを、上記複数の演算処理ユニッ
    トを用いてVLIW処理により実行するように該第1、
    第2のプログラムの実行を制御する回路とを有するプロ
    セッサ。
  4. 【請求項4】複数の演算処理ユニットと、 該演算処理ユニットと同数の複数の命令デコーダと、 命令間の依存関係を解決する回路とを備え、 上記依存関係解決回路は上記演算処理ユニットの一部お
    よび上記命令デコーダの一部とに接続され、 上記複数の演算処理ユニットと上記複数の命令デコーダ
    は一対一に接続されているプロセッサ。
  5. 【請求項5】上記一部の命令デコーダにより実行すべき
    第1のプログラムを構成する複数の命令を解読し、解読
    された該複数の命令を、上記一部の演算処理ユニットお
    よび上記依存関係解決回路とを用いて実行する第1のモ
    ードと、上記複数の命令デコーダにより実行すべき第2
    のプログラムを構成する複数の命令を解読し、解読され
    た該複数の命令を、上記複数の演算処理ユニットを用
    い、上記依存関係解決回路を用いないで実行する第2の
    モードとを切り替えるように、プログラムの実行を制御
    する回路をさらに有する請求項4記載のプロセッサ。
  6. 【請求項6】上記第2のプログラムは、VLIW命令に
    より構成されている請求項5記載のプロセッサ。
  7. 【請求項7】命令の発行を中止する回路および実行中の
    命令の有無を監視する回路とをさらに有し、 上記制御回路は、モード切り替時には、上記命令発行中
    止回路により命令の発行を中止し、上記監視回路により
    実行中の命令が全て終了するのを待った後、モードを切
    り替える回路を有する請求項5記載のプロセッサ。
  8. 【請求項8】上記制御回路は、割込発生時は、上記命令
    発行中止回路により命令の発行を中止し、上記監視回路
    により実行中の命令が全て終了するのを待った後、モー
    ドが上記第2のモードであった場合に、もう一方のモー
    ドに切り替えるよう構成されている請求項5記載のプロ
    セッサ。
JP8487596A 1996-04-08 1996-04-08 プログラムの実行制御方法及びそのためのプロセッサ Pending JPH09274567A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8487596A JPH09274567A (ja) 1996-04-08 1996-04-08 プログラムの実行制御方法及びそのためのプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8487596A JPH09274567A (ja) 1996-04-08 1996-04-08 プログラムの実行制御方法及びそのためのプロセッサ

Publications (1)

Publication Number Publication Date
JPH09274567A true JPH09274567A (ja) 1997-10-21

Family

ID=13842975

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8487596A Pending JPH09274567A (ja) 1996-04-08 1996-04-08 プログラムの実行制御方法及びそのためのプロセッサ

Country Status (1)

Country Link
JP (1) JPH09274567A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330791A (ja) * 1999-05-03 2000-11-30 Stmicroelectronics Sa コンピュータシステムおよびその動作方法
JP2000330790A (ja) * 1999-05-03 2000-11-30 Stmicroelectronics Sa コンピュータシステム動作方法、コンピュータシステムにおける命令スケジューリング方法およびコンピュータシステム
JP2000353091A (ja) * 1999-05-03 2000-12-19 Stmicroelectronics Sa コンピュータシステムにおける命令実行方法およびコンピュータシステム
US6807624B1 (en) 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
US7127594B2 (en) 2001-09-03 2006-10-24 Matsushita Electric Industrial Co., Ltd. Multiprocessor system and program optimizing method
JP2007164354A (ja) * 2005-12-12 2007-06-28 Nec Corp 情報処理装置およびその制御方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807624B1 (en) 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
US7127591B2 (en) 1998-12-17 2006-10-24 Fujitsu Limited Instruction control device and method therefor
US7275146B2 (en) 1998-12-17 2007-09-25 Fujitsu Limited Instruction control device and method therefor
US7313674B2 (en) 1998-12-17 2007-12-25 Fujitsu Limited Instruction control device and method therefor
JP2000330791A (ja) * 1999-05-03 2000-11-30 Stmicroelectronics Sa コンピュータシステムおよびその動作方法
JP2000330790A (ja) * 1999-05-03 2000-11-30 Stmicroelectronics Sa コンピュータシステム動作方法、コンピュータシステムにおける命令スケジューリング方法およびコンピュータシステム
JP2000353091A (ja) * 1999-05-03 2000-12-19 Stmicroelectronics Sa コンピュータシステムにおける命令実行方法およびコンピュータシステム
US7127594B2 (en) 2001-09-03 2006-10-24 Matsushita Electric Industrial Co., Ltd. Multiprocessor system and program optimizing method
JP2007164354A (ja) * 2005-12-12 2007-06-28 Nec Corp 情報処理装置およびその制御方法

Similar Documents

Publication Publication Date Title
CN108027767B (zh) 寄存器读取/写入排序
US6061710A (en) Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
US5815724A (en) Method and apparatus for controlling power consumption in a microprocessor
JP5047542B2 (ja) マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム)
US5488729A (en) Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
JP4642305B2 (ja) マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置
JP3595504B2 (ja) マルチスレッド式プロセッサにおけるコンピュータ処理方法
TWI590153B (zh) 用於多線串處理之方法
US8145797B2 (en) Simultaneous multi-threaded (SMT) processor supporting thread-execution-state-sensitive supervisory commands
CN108027773B (zh) 存储器访问指令顺序编码的生成和使用
US6944850B2 (en) Hop method for stepping parallel hardware threads
JP2000029731A (ja) 命令レベル及びタスクレベル並行処理のソフトウェア制御可変ミックスを与える2重モ―ドvliwア―キテクチャ
US20120173849A1 (en) Methods and Apparatus for Scalable Array Processor Interrupt Detection and Response
US20020083373A1 (en) Journaling for parallel hardware threads in multithreaded processor
US6301655B1 (en) Exception processing in asynchronous processor
JPH087678B2 (ja) 異なるアーキテクチヤのインストラクシヨンを処理するコンピユータ及びその結果の通信方法
KR20040069352A (ko) 멀티-스레딩 프로세서에서 스레드의 실행을 정지시키기위한 시스템 및 방법
JP2001306324A (ja) マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
US6687812B1 (en) Parallel processing apparatus
CA2060555A1 (en) System and method for draining an instruction pipeline
JPH0766329B2 (ja) 情報処理装置
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
CN100541421C (zh) 由专用指令配置的处理器和用于这种处理器的分配方法
EP1444571B1 (en) Hidden job start preparation in an instruction-parallel processor system