JP2002063031A - アーキテクチャ切替え・再構成対応プロセッサ - Google Patents

アーキテクチャ切替え・再構成対応プロセッサ

Info

Publication number
JP2002063031A
JP2002063031A JP2000248191A JP2000248191A JP2002063031A JP 2002063031 A JP2002063031 A JP 2002063031A JP 2000248191 A JP2000248191 A JP 2000248191A JP 2000248191 A JP2000248191 A JP 2000248191A JP 2002063031 A JP2002063031 A JP 2002063031A
Authority
JP
Japan
Prior art keywords
instruction
processor
information
architecture
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.)
Pending
Application number
JP2000248191A
Other languages
English (en)
Inventor
Ken Ota
謙 太田
Toshiyuki Kawachi
利之 河内
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.)
FAINAAKU KK
Original Assignee
FAINAAKU KK
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 FAINAAKU KK filed Critical FAINAAKU KK
Priority to JP2000248191A priority Critical patent/JP2002063031A/ja
Publication of JP2002063031A publication Critical patent/JP2002063031A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】アーキテクチャの異る複数種類のプロセッサ向
けソフトウエアプログラムを、単一のハードウエア上で
高い実行速度を維持したまま、プロセッサアーキテクチ
ャを随時切替えながら実行することができるプロセッサ
システムを経済的に実現する。 【解決手段】仮想プロセッサ毎の独立したコンテキスト
を持つプログラムカウンタを設け、該カウンタが生成す
るアドレス情報を基に主記憶から取得した非ネイティブ
命令を命令分類化手段によってその属性毎に分類し、該
分類された群毎に予め定められた番地情報を参照番地と
して命令合成情報メモリを読み出しネイティブな実行制
御情報を合成し実行するが、仮想プロセッサの選択・切
替えは、前記命令分類化手段および前記命令合成情報メ
モリの活性化部分を選択的に切替えることで遂行し、そ
のタイミングは前記命令合成情報メモリから出力される
切替え許可信号に同期することで適切なものとする。

Description

【発明の詳細な説明】
【0001】
【発明が属する技術分野】本発明は、アーキテクチャの
異なる複数種類のプロセッサ命令セットを同一のハード
ウエアで実行できるようにするためのプロセッサアーキ
テクチャ変換部を備え、該プロセッサアーキテクチャ変
換部におけるプロセッサアーキテクチャの構成情報が幾
つかの記憶手段に集約されて格納されているため、容易
にプロセッサアーキテクチャを切替えたり再構成したり
する事が可能な、アーキテクチャ切替え・再構成対応プ
ロセッサに関するものである。
【0002】
【従来の技術】従来、いかなるプロセッサもそのハード
ウエアアーキテクチャに固有であり直接実行可能な命令
セット(これをネイティブ命令セットと呼ぶ)をひとつ
備え、これ以外のアーキテクチャの命令セット(非ネイ
ティブアーキテクチャ)向けソフトウエアプログラムを
直接実行することは不可能であった。非ネイティブアー
キテクチャ向けソフトウエアプログラムを実行する際に
考慮する項目としては、前記の命令セットの差異の他
に、例外処理に代表されるプロセッサハードウエアアー
キテクチャ固有の手続き型処理の差異がある。これらの
処理は一般にプロセッサハードウエアによって自動的に
実行されるため、その手続きのための命令を外部から取
り込むことがない。従って、単純な命令変換では、例外
処理に関る非ネイティブアーキテクチャ向けソフトウエ
アプログラムを実行することは不可能である。このよう
な観点から、あるプロセッサにおいて、非ネイティブア
ーキテクチャ向けソフトウエアプログラムを実行する場
合、非ネイティブな命令をネイティブな命令に変換する
命令変換処理に加えて、プロセッサハードウエア固有の
機能を仮想的に実現する手段を併せ持つ必要があった。
【0003】この命令変換及びハードウエア固有機能の
仮想的実現は、大別するとソフトウエアにより実現する
ものと、ハードウエアにより実現するものに分類するこ
とが出来る。ソフトウエアによるものは、さらに次の2
つの方法に分類することができる。即ち、第一のソフト
ウエアにより実現する方法は、非ネイティブ命令セット
で記述されたアプリケーションプログラムを実行する時
に、命令を実際に実行するプロセッサ自身が、そのネイ
ティブな命令セットによって予め記述され、準備された
所定の命令変換ソフトウエアプログラムによって、アプ
リケーションプログラムを非ネイティブ命令セットから
ネイティブ命令セットへ逐次変換しては実行するもので
ある。第二のソフトウエアにより実現する方法は、命令
を実際に実行するプロセッサ自身またはその他のアーキ
テクチャのプロセッサの上で走る所定の命令変換プログ
ラムによって、アプリケーションプログラムの実行前に
非ネイティブ命令セットからネイティブ命令セットに変
換しておき、実行ユニットがアプリケーションプログラ
ムを実行する時には、この予め変換済みのネイティブ命
令セットアプリケーションプログラムを読み込んで実行
するものである。
【0004】ソフトウエアにより実現する第一の方法に
は、命令変換作業に相当数のクロック時間を消費してし
まうため、命令変換と実行を同時に行う性質上、高速な
実行が出来ないという大きな問題があった。この問題を
解決するために、一旦変換して生成したネイティブ命令
を一時記憶領域(これを変換後命令キャッシュメモリと
呼ぶ)に保持し、当該命令を再び実行する必要が有った
場合は再度非ネイティブ命令からの変換をする事無く、
この変換後のネイティブ命令を該一時記憶領域から読み
出して実行することで、平均実行速度として、あたかも
ネイティブ命令プログラムを実行しているかのごとき速
度を実現する方法も提案されている。
【0005】しかしながら、この方法では、十分な実行
速度性能を達成するためには、大容量の前記一時記憶領
域を備える必要があり、特にネイティブ命令セットがV
LIW(Very Long Instruction
Word、超長命令語)型である場合は、法外な容量
が要求されるという大きな問題があった。その理由は、
前記一時記憶領域に変換済みのネイティブ命令が存在し
ない場合は、やはり相当数のクロック時間を消費して命
令変換作業を行わざるを得ないため、前記一時記憶領域
の容量を越えるような大きなサイズのプログラムの実質
的実行速度は改善されない為である。今日のコンピュー
タシステムにおいては総実行プログラム容量がシステム
の主記憶容量と同等以上の100MB(メガバイト)を
越えることは珍しくなく、従ってこのような環境でも非
ネイティブ命令セットプログラムの実行に際しても十分
な実行速度を確保するには、主記憶容量並に大容量の前
記一時記憶領域が求められ、経済的に大きな問題となっ
ていた。
【0006】ソフトウエアにより実現する第二の方法に
は、非ネイティブ命令セットアプリケーションプログラ
ム上において命令部分とデータ部分との正確な分別に基
づいて、命令部分のみを適切に変換しなければならない
こと、さらに命令変換前後で命令部分の占めるプログラ
ムの長さが異なる場合(大抵の場合これに該当し、該当
しないことは極めて稀である)は、命令部分とデータ部
分の単純な連結が不可能となるため、データ部分を参照
している全ての命令を正確に抽出しては所定の修正が必
要であるにも関らず、このようなソフトウエア処理アル
ゴリズムの構築は大変困難であり、命令変換の精度・信
頼性が劣るという点で大きな問題があった。
【0007】一方、ハードウエアによる命令変換として
最も容易な方法はテーブル参照法である。この方法は非
ネイティブ命令からネイティブ命令への対応を定めた所
定の参照テーブルを予め準備し、非ネイティブ命令セッ
トの任意の命令バイナリ値を参照アドレスとしてテーブ
ル参照し、これに該当するひとつ以上のネイティブ命令
を読み出すものである。この方法によれば、ソフトウエ
アによる変換に比べ極めて高速に命令変換することが可
能であり、変換に伴う若干の時間遅れがあるものの、ア
プリケーションプログラムの実行速度としては何らネイ
ティブ命令セットのプログラムを実行している場合と遜
色なく非ネイティブ命令セットアプリケーションプログ
ラムを実行することが可能である。
【0008】しかしこの方法にも以下のような欠点があ
る。即ち、テーブル参照法により変換する場合、基本的
に1対1の命令変換が想定される。一般にCISC型
(Complex Instruction Set
Computer、複雑な命令セットを備えたコンピュ
ータ)命令セットには、複雑な計算を要するメモリアド
レス計算、メモリアクセス、演算等の機能の単独または
これらの複合や反復という極めて複雑な処理を1命令で
実行する類の命令が散見されるが、このような複雑な命
令をRISC型(Reduced Instructi
on Set Computer、省略された命令セッ
トを備えたコンピュータ)命令セットに変換する場合
は、1対多の命令変換が不可避であるから、この場合単
純な1対1テーブル参照法を用いることが出来ない。こ
こであえて1対多変換を行うテーブル参照法を行おうと
するならば、これには極めて大きな容量の参照テーブル
(一般的にはメモリ)を要することになり、経済的な困
難が生じる。
【0009】参照テーブル容量を少なく抑えるために、
命令語の一定部分で特定の意味を持つフィールド情報
(演算に用いるレジスタ指定やメモリアクセス用アドレ
ッシングモードを指定する情報等)のみを別途、専用の
組み合わせ論理回路により抽出する一方、本来の命令語
長から前記フィールド部分を除く残りの部分の命令バイ
ナリ情報に基づいてテーブル参照し、変換された命令語
と前記抽出された情報とを合成して、ネイティブ命令語
へ変換する方法も提案されている。しかし多くの、特に
命令ビット長が小さなCISC型命令セットでは、命令
語の一部分で特定の意味を持つフィールド情報の位置や
長さが命令によって異なり一定でないため、この方法を
適用することは困難であった。従ってこのような場合、
命令語の全てのバイナリを参照アドレスとしてテーブル
参照するしかなく、結果的に大きな参照テーブル容量が
必要となる。たとえば16ビットを基本長とするCIS
C型命令セットを単純なテーブル参照によって128ビ
ットのVLIW型命令セットに1対1変換する場合で
も、1MB(メガバイト)もの容量の参照テーブルが必
要となり、経済的に本方式の採用が困難となる。これが
32ビットを基本長とするCISC型命令セットを変換
するとなると、要求される参照テーブル容量は64GB
(ギガバイト)となり、もはや今日の半導体技術ではワ
ンチップへの集積は不可能な容量となる。
【0010】テーブル参照法の持つもうひとつの大きな
問題として、手続き型処理の対応が不可能な点が挙げら
れる。例えば、変換前の非ネイティブ命令が複数の基本
機能命令の反復で構成され、特定の条件が成立した場合
にその命令実行を完了する類のCISC型命令であった
場合は、非ネイティブ命令とネイティブ命令の対応関係
を定めただけのテーブル参照法では、例え1対多のテー
ブル参照を以ってしても実行不可能である。それはテー
ブル参照法では命令(バイナリ値)対命令(バイナリ
値)の対応関係を定義しているのであって、選択された
ネイティブ命令がどのような順序や条件(手続き)で実
行されるかは定義されていないからである。また、テー
ブル参照法では任意の非ネイティブ命令が与えられて初
めてネイティブ命令に変換が出来るのであるが、外部割
込みなどの例外処理が発生した時にプロセッサハードウ
エアが自動的に実行するコンテキスト情報の退避・復帰
処理、ステータス情報の更新、割込みベクタ情報の取得
などの各種処理は外部から命令を取り込んで実行するも
のではないので、そもそも命令変換という単純な概念で
は解決不可能である。
【0011】このような問題から、特にCISC型命令
セットをRISC型命令セットに変換する場合、テーブ
ル参照を用いない専用の組み合わせ論理回路による命令
セットアーキテクチャ変換が一般的に使われる。この方
法によればテーブル参照法では解決できなかった手続き
型処理に関しても、専用の手順回路(ステートマシン)
を構築することで対応可能となる。しかしこの場合は、
組み合わせ論理が固定されているが故に、異なる非ネイ
ティブな命令セットアーキテクチャを同一プロセッサ上
で実行しようとする場合、対象となる非ネイティブ命令
セットアーキテクチャ毎の専用命令変換回路が必要とな
り、経済的な困難が生じる。また、実行する非ネイティ
ブ命令セットアーキテクチャをプロセッサの運用現場で
自由に変更する事なども不可能であった。
【0012】
【発明が解決しようとする課題】本発明が解決しようと
する問題点は、上述した従来からある非ネイティブ命令
セットの実行が可能なプロセッサシステムのうち、特に
実行速度性能に優れているハードウエアにより命令・ア
ーキテクチャ変換を行う場合に存在した多くの問題、即
ち、テーブル参照法では大きな容量のテーブル(メモ
リ)を要する上に、外部割り込み例外処理等のプロセッ
サアーキテクチャ固有の手続き型処理機能の完全な再現
が不可能であったり、組み合わせ論理回路ではその論理
が固定されているので論理の再構成が困難である上に、
複数の非ネイティブ命令セットアーキテクチャに対応す
るにはその数だけの組み合わせ論理回路が必要となるた
め大きな回路規模が要求され経済上の不利がある、等で
ある。
【0013】これらを総合的に解決することによって、
実行ユニットのネイティブな命令セットアーキテクチャ
に依らず、複数の異なる非ネイティブな命令セット用プ
ログラムを同一のプロセッサ上で、低価格で、高い実行
速度性能を維持したまま、かつ動的に非ネイティブ命令
セットを切替えながら実行可能となり、さらに必要に応
じて本発明を応用したプロセッサシステムの運用現場に
おいても実行対象の非ネイティブ命令セットを選択・変
更することさえ可能となる。
【0014】
【課題を解決するための手段】本発明に関るアーキテク
チャ切替え・再構成対応プロセッサは、命令記憶手段に
接続され、命令を実行する為の実行ユニットを備え、命
令を該命令記憶手段から取得する番地を生成するための
命令取得番地生成手段を持ち、前記取得された命令の特
性を表す一以上のプロパティについてグループ判定する
手段を持ち、非ネイティブ命令からネイティブ命令を合
成するために必要なプロセッサアーキテクチャ構成情報
を格納するための記憶手段を持ち、前記判定されたグル
ープ情報をもとに前記プロセッサアーキテクチャ構成情
報記憶手段からネイティブ命令合成情報を参照し、前記
参照されたネイティブ命令合成に必要な情報をもとに前
記取得された非ネイティブ命令から命令パラメータフィ
ールドを抜き出す手段を持ち、前記抜き出された命令パ
ラメータフィールドと前記参照されたネイティブ命令合
成情報をもとに一以上のネイティブ命令を合成する手段
を持ち、前記ネイティブ命令合成作業が完了していない
間は前記実行ユニットを待機させる手段を持ち、手続き
処理を行う命令のための手続き型処理実行手段を持ち、
割込み等の例外処理実行のための手続き型処理実行手段
を持ち、前記プロセッサアーキテクチャの切替えまたは
前記割込み等の例外処理の実行を命令合成処理の適切な
処理境界でのみ開始する手段を持ち、プロセッサアーキ
テクチャに固有のハードウェア仕様の差異を補正するた
めの演算手段を持ち、実行ユニットにおいて分岐が発生
した際にプロセッサの処理が正しく分岐するように前記
命令取得番地生成手段を制御する手段を持ち、前記プロ
セッサアーキテクチャ構成情報記憶手段への参照開始位
置を指定する手段を備えることで、複数の仮想プロセッ
サアーキテクチャの切替えを可能にし、異なるプロセッ
サアーキテクチャ向けのソフトウエアを前記実行ユニッ
トで実行できることを主要な特徴とする。
【0015】ただし、前記アーキテクチャ切替え・再構
成対応プロセッサにおいて、前記プロセッサアーキテク
チャ構成情報記憶手段はRAMであっても良いし、不揮
発性メモリであっても良い。また、バイト並び換え手段
を備えることで、バイト並びのエンディアンが異なるプ
ロセッサアーキテクチャ向けソフトウエアの実行も可能
となる。命令合成作業前命令緩衝記憶手段を命令変換・
合成処理部の前に、または命令合成作業後命令緩衝記憶
手段を前記命令変換・合成処理部の後ろに備えること
で、命令変換・合成処理の並列性が高まり、命令合成処
理をパイプライン化した場合や命令処理の分岐が発生し
た場合の実行速度性能の向上を図ることも可能となる。
勿論、前記した、ふたつの命令緩衝記憶手段を共に備え
ても良い。
【0016】前記した手続き型処理は、具体的には命令
合成情報記憶手段に予め記憶された情報に従って実行す
ることが可能である。また、分岐命令を合成する際に算
出された分岐先情報を一時的に記憶する一時的記憶手段
を設置し、実行ユニットにおいて分岐が発生した場合は
前記分岐先情報を前記一時的記憶手段から読み出し、前
記命令取得番地生成手段に代入し、前記プロセッサの処
理を正しく分岐させても良い。プロセッサアーキテクチ
ャに固有のハードウェア仕様の差異を補正するための演
算に必要な情報を一時的に記憶するための作業用記憶手
段を持つことも出来る。また、命令合成情報記憶手段が
出力する情報に従って、バスサイクルがアトミックであ
るかどうかを外部に知らせるための手段を持たせても良
い。
【0017】更にプロセッサアーキテクチャ毎のコンテ
キスト情報を退避・復帰する手続き型処理実行手段を別
途持つことで、プロセッサアーキテクチャ切替えを動的
に行うことが出来る様になる。また時分割時間計数手段
を持たせることで、該時間計数手段が生成するタイミン
グを基にプロセッサアーキテクチャ切替えを自動的に行
うことも可能となる。こうすることで見かけ上、複数の
プロセッサが同時に動作しているかのごとく動作させる
ことが可能となる。新たにメモリ管理ユニットを持ち、
該メモリ管理ユニットによる命令領域判定を基にプロセ
ッサアーキテクチャ切替えを行うことも可能である。プ
ロセッサアーキテクチャ切替えの為の専用の命令を定義
し、該命令の実行によってプロセッサアーキテクチャ切
替えに関る手続きを開始させても良い。実行ユニットが
複数の演算実行手段およびメモリアクセス手段を持ち、
更に命令配分発送手段も持つことで、前記命令配分発送
手段によって組み合わされる複数のネイティブ命令を前
記実行ユニットにて同時に実行することも可能となる。
課題を解決するためのその他の手段については、後述す
る実施例の説明中でより詳細に述べている。
【0018】
【発明の実施の形態】一または複数の異なる非ネイティ
ブ命令セットアーキテクチャ向けソフトウエアプログラ
ムを同一の実行ユニットハードウエア上で、単独または
同時に実行するという目的を、本発明に関るアーキテク
チャ切替え・再構成対応プロセッサを、実行ユニットと
命令記憶領域(命令用1次キャッシュメモリ)の間に接
続し、命令を該命令用1次キャッシュメモリから取得す
る番地を生成するための命令取得番地生成手段(プログ
ラムカウンタ)を設置し、前記取得された命令の特性を
表す一以上の命令プロパティについてグループ判定する
手段を設置し、非ネイティブ命令からネイティブ命令を
合成するために必要なプロセッサアーキテクチャ構成情
報を格納するための記憶手段(命令合成情報記憶部メモ
リ)を設置し、前記判定されたグループ情報をもとに前
記プロセッサアーキテクチャ構成情報記憶手段からネイ
ティブ命令合成情報を参照し、前記参照されたネイティ
ブ命令合成に必要な情報をもとに前記取得された非ネイ
ティブ命令から命令パラメータフィールドを抜き出す手
段(フィールド抜出部)を設置し、前記抜き出された命
令パラメータフィールドと前記参照されたネイティブ命
令合成情報をもとに一以上のネイティブ命令を合成する
手段(命令合成部)を持ち、前記ネイティブ命令合成作
業が完了していない間は、前記実行ユニットを待機さ
せ、手続き処理を行う類の命令のための手続き型処理や
割込み等の例外処理実行のための手続き型処理は、前記
命令合成情報記憶部から読み出される命令合成情報を順
次実行することで達成され、同時に前記命令合成情報記
憶部から読み出される適切な制御信号によって前記プロ
セッサアーキテクチャの切替えまたは前記割込み等の例
外処理の実行を命令合成処理の適切な処理境界でのみ開
始するようにし、プロセッサアーキテクチャに固有のハ
ードウェア仕様の差異を補正するための演算手段として
ビット再配列回路、バイト再配列回路、数値拡張回路、
加減算回路等を持ち、前記実行ユニットで分岐が発生し
た際にプロセッサの処理が正しく分岐するように、非ネ
イティブ分岐命令からネイティブ分岐命令を合成する際
にその分岐先番地情報を同時に予め計算し、これを作業
用メモリに一時記憶しておき、実際に分岐が発生した場
合には前記プログラムカウンタに前記計算済分岐先番地
情報を代入する回路を設置する、という構成で実現し
た。
【0019】
【実施例】図1は、本発明のアーキテクチャ切替え・再
構成対応プロセッサの実施例の詳細なブロックダイアグ
ラムであって、100、2000、5200、5300
は、図2と同様である。図2はアーキテクチャ切替え・
再構成対応プロセッサの実施方法の上位構成を示した説
明図であって、1000、3000、5000は図13
と同様である。図2の実施例では、命令用、データ用の
1次キャッシュメモリ(5200、5300)と命令・
データ記憶部1000の中間に命令・データ共有型の2
次キャッシュメモリ5100が設置されているが、これ
らはシステムに要求される性能と経済的要請を考慮し、
省略することも可能である。
【0020】本発明のアーキテクチャ切替え・再構成対
応プロセッサ5000は、実行ユニット2000と命令
を格納した1次キャッシュメモリ5200の中間に接続
され、実行ユニット2000が該命令用1次キャッシュ
メモリ5200から、データバス5220を通して命令
を取得する際に、必要に応じて命令バイナリを適宜変換
することで、実行ユニット2000が本来もつネイティ
ブな命令セットとは異なる非ネイティブな命令セット
(該非ネイティブ命令セットがそのアーキテクチャとし
て想定するプロセッサを、仮想プロセッサと呼ぶ)で記
述されたアプリケーションソフトウエアプログラムを、
実行ユニット2000の上で実行可能にしてしまうよう
に設計されている。
【0021】なお、実行ユニット2000はその内部に
は該ネイティブ命令を解釈・実行するための命令デコー
ダを備え、それ自身単独でネイティブ命令の実行が可能
なタイプであっても良いし、命令を解釈・実行するため
の命令デコーダを備えず、実行ユニット内部の各種演算
器等の実行を制御するためのゲート信号(実行制御情
報)を直接入力するタイプでも良い。図1に示す実行ユ
ニットの実施例では汎用のレジスタファイル2500の
周辺に、各種算術・論理演算を実行する為の演算実行部
が二あり(2110、2120)、その他分岐実行部2
210、二のメモリアクセス実行部2310、2320
等がある。これらの実行部の機能は一般的なプロセッサ
のそれと変わらないので、ここでは説明を省略する。ま
た、演算実行部やメモリアクセス実行部の数、またレジ
スタファイルのビット幅や数等はシステムに要求される
性能によって変わるが、これらの詳細な仕様の差異は本
発明の本質とは関りが無い。フラグ制御部2220、フ
ラグレジスタ2700に関しては後ほど詳しく説明す
る。
【0022】図13は本発明プロセッサのコンピュータ
システムへの応用例を示した説明図である。図13で
は、各種内外部接続周辺機器4000は周辺機器インタ
ーフェース回路3000を通して、命令・データ記憶部
1000(これはシステムの主記憶である)とアーキテ
クチャ切替え・再構成対応プロセッサ5000とを接続
するバスに接続されている。命令・データ記憶部100
0には周辺機器インターフェース回路3000を通して
各種内外部接続周辺機器4000から取得された、様々
なプロセッサアーキテクチャに対応したソフトウエアプ
ログラムやデータが格納されている。
【0023】図1に示す通り、プロセッサアーキテクチ
ャ変換部100には、プログラムカウンタ400が含ま
れ、ここで生成された命令アドレス情報402を受けて
プリフェッチアドレス生成部230が生成するアドレス
情報が命令用アドレスバス5210に出力され、命令用
1次キャッシュメモリ5200上の該アドレスに格納さ
れている非ネイティブ命令を命令用データバス5220
を通じて取得し、プリフェッチ命令緩衝記憶部200に
格納する。この一連の命令取得動作は基本的には、実行
ユニット2000の動作状態に依らず、プリフェッチ命
令緩衝記憶部200に蓄積されている命令の量が、定め
られたしきい値を下回った場合に実行される。一方、実
行ユニット2000がデータアクセス(読み書き両動作
を含む)を行う時には、実行ユニット2000が出力す
るデータ用アドレスバス2010情報は、データ用1次
キャッシュメモリ5300のアドレスバス5310に直
接出力され、該データアクセスバス動作のアドレス情報
として利用され、該データアクセスに関るデータはデー
タ用データバス2020、データ用バイト並び換え部2
20、データ用データバス5320を通じて読み書きさ
れる。こうした、命令取得アクセスとデータ読み書きア
クセスが独立かつ同時に実行されるシステムは、ハーバ
ードアーキテクチャとして知られている。(なお、ここ
で”アドレス情報999”のように符号を付してある名
称は対応する実施例説明図に示された機能部間を入出力
する物理信号の名称であり、媒体を介して伝達される概
念的”情報”の意味ではない。以下同様。)
【0024】命令用1次キャッシュメモリ5200に用
いられるメモリは、特にそれが同期型メモリである場合
などは、データアクセスアドレスが2のべき乗の整数倍
境界から始まる連続するアドレスのデータを、2のべき
乗の長さ(4、8、16バイトなど)を持つデータパケ
ットとして読み出す方が高速であるという理由から、プ
ロセッサアーキテクチャ変換部100が命令用1次キャ
ッシュメモリ5200から命令を取得する際にも、プリ
フェッチアドレス生成部230は命令アドレス情報40
2の増加に先行しつつも、常に2のべき乗の整数倍とな
るようなアドレスから始まり、予め定められた長さ(こ
れも2のべき乗)の命令列データを連続して取得するよ
うに動作するのが望ましい。該予め定められた1回のア
クセスで連続して取得する命令列長は、代表的な例では
プリフェッチ命令緩衝記憶部200の記憶容量の半分の
容量が採用される。従って、例えば1回のアクセスで連
続して取得する命令列長が8バイトである場合のプリフ
ェッチ命令緩衝記憶部200の典型的な記憶容量は16
バイトということになる。
【0025】プログラムカウンタ400が出力する命令
アドレス情報402に基づいてプリフェッチ命令緩衝記
憶部200から1バイト以上の非ネイティブ命令が読み
出され、命令用バイト並び換え部210を経由して命令
変換・合成部300に送られると、該命令は命令グルー
プ判定部310とフィールド抽出部320に同時に供給
され、それぞれ命令グループ判定部310においては非
ネイティブ命令のグループ化が、フィールド抽出部32
0においては該非ネイティブ命令バイナリからの特定の
情報フィールドの抽出が行われる。
【0026】図3に命令グループ判定部310の実施例
を示す。命令のグループ化とは、演算機能、メモリアク
セスモード、命令語長、拡張語長とその数などの幾つか
の独立した特性(以下プロパティと表す)を基準にし
て、非ネイティブ命令セットに含まれる命令を同じプロ
パティを持つ命令同士でグループ化することである。こ
れは主にテーブル参照法によって実現されるが、一般に
プロセッサの命令語バイナリ上で一のプロパティを決定
するフィールドの位置やビット幅はプロセッサアーキテ
クチャ毎に概ね一定であるから、この性質を利用して、
各プロパティを決定するフィールドを抜き出し(グルー
プ化フィールド抜出部315、316)、該抜き出しフ
ィールドをアドレスとして、プロパティ毎に独立した参
照テーブル(グループ化情報記憶部317、318)を
参照することで前記のグループ化の目的が達成される。
(これを分割テーブル参照法と呼ぶことにする。)各参
照テーブルの容量は、それを参照する際のアドレスビッ
ト幅で決定されるが、前記抜き出しフィールドのビット
幅は非ネイティブプロセッサ命令語の基本幅の高々数分
の一程度(一般的には二分の一以下)であるから、該非
ネイティブプロセッサ命令語の基本幅全体に等しいビッ
ト幅のアドレスを持った参照テーブル(従来法)に比べ
て、遥かに小さい容量で済む。(計算例を後述する。)
【0027】図3において、第一のプロパティ用参照テ
ーブル(グループ化情報記憶部317)の参照出力の一
部または全部が、第二のプロパティ用参照テーブル(グ
ループ化情報記憶部318)の参照出力を選択するグル
ープ情報選択部319に接続されているが、これは一の
非ネイティブプロセッサ命令アーキテクチャであって
も、各プロパティ決定フィールドは常に独立している訳
ではなく、命令によっては、あるプロパティの定義はそ
の他のプロパティの状態に依存する場合が有るからであ
る。例えば第二のプロパティの定義が第一のプロパティ
の状態に依存する場合、図3のような構成を採ること
で、第二の参照テーブルからの出力される複数の参照出
力18、19から正しい一の出力を、第一の参照テーブ
ルからの参照出力に基づいて選択することが可能とな
る。
【0028】次に、上記の分割テーブル参照法に必要な
参照テーブル容量の簡単な見積もりの計算例を示す。仮
に対象とする非ネイティブプロセッサ命令語の基本幅が
16ビットであり、必要なテーブル参照出力が8ビット
であったとすると、従来の単純なテーブル参照法では、
2^16=65536バイトの参照テーブルが必要とな
る。(ここでm^nはmのn乗を示す。)一方、本発明
のフィールド分割したテーブル参照法では、単純な例と
して仮に該16ビット命令語の上位8ビットと下位8ビ
ットの2つのフィールドに分解でき、該下位8ビットの
フィールドの定義は該上位8ビットのフィールドの状態
に依存して4種類から選択される場合、必要とされる参
照テーブルの総容量は、2^8+2^8*4=1280
バイトとなる。
【0029】非ネイティブ命令セットを切替える場合
は、アーキテクチャ選択情報375の指示に基づいて、
各参照テーブルの参照ページを切替える(より具体的に
はテーブル参照アドレスの最上位のひとつ以上のビット
状態を切替える)と共に、各参照テーブルを参照する際
のアドレス情報として使われるフィールド情報をグルー
プ化フィールド抜出部315、316にて抜き出す為の
諸条件(該フィールドの非ネイティブ命令語におけるビ
ット位置やビット幅情報であり、グループ化フィールド
抜出情報記憶部388内に非ネイティブ命令セット毎に
予め登録されている)を選択・切替えることで、瞬時に
非ネイティブ命令セットアーキテクチャを切替えること
が出来る。
【0030】命令グループ判定部310の目的は、命令
が持つ幾つかのプロパティに着目し、同じプロパティを
持つ命令同士でグループ化し、与えられた非ネイティブ
命令がどのグループに属するかを判定することであるか
ら、この目的を達成する限りにおいては、必ずしも上記
した分割テーブル参照法による必要は無く、従来法同様
の一の参照テーブルのみによりグループ化を達成する
(これを非分割テーブル参照法と呼ぶ)ことは可能であ
る。即ち必要なプロパティの数だけの出力を備えた、一
の参照テーブルを用いるのである。(例えば、16ビッ
トの非ネイティブ命令語から8ビットのプロパティを3
つ取り出す場合、16ビットのアドレス入力と24ビッ
ト幅のデータ出力を持った参照テーブルひとつで良
い。)非分割テーブル参照法では上記の計算に示す通
り、必要な参照テーブル容量が極めて大きくなり経済的
に不利であるから、この意味では分割テーブル参照法の
使用が望ましいが、もし大きな参照テーブル容量が許容
される場合は、非分割テーブル参照法を以って命令グル
ープ判定を行うことも本発明の実施例の範囲である。本
発明に関る命令グループ判定として要求されることは、
参照テーブルの数ではなく、与えられた非ネイティブ命
令から、グループ化された一以上のプロパティ情報を求
めることだからである。なお、非分割テーブル参照法の
場合であっても、非ネイティブ命令セットを切替える手
法は、分割テーブル参照法の場合と同様に、テーブル参
照ページを切替えることで実現される。命令グループ判
定手段のその他の方法としては、小さい参照テーブル容
量で柔軟なプロパティのグループ分類に対応可能な点
で、特許出願済の特願2000−238009に示され
た装置が特に望ましい。
【0031】命令グループ判定部310で用いる参照テ
ーブル(グループ化情報記憶部317、318)やグル
ープ化フィールド抜出情報記憶部388、また後述する
命令合成情報記憶部340や制御情報記憶部380とし
て一般的にはメモリ素子類が採用されるが、選択対象と
する非ネイティブ命令セットアーキテクチャを、製品の
製造時に再構成し(これも製品の設計時の構成に関ら
ず、製造時に独自に構成される意から再構成に含める)
その後固定しても良い場合はROM(リードオンリーメ
モリ、各種マスク方式を含む)等や組み合わせ論理回路
等によるバイナリ変換回路を、製品の製造後一度だけ再
構成したい場合はアンチフューズ方式のROM等を、製
品の製造後も僅かな頻度ながらも再構成を繰り返したい
場合はEPROM(電気的なプログラム可能なROM、
紫外線消去方式、電気的消去方式、フラッシュ型電気的
消去方式などを含む)やFRAM(強誘電体型RAM)
等を、製品の運用現場で頻繁に再構成したい場合はRA
M(ランダムアクセスメモリ、スタティック型、ダイナ
ミック型を含む)等やフリップ・フロップによるレジス
タ等を採用することが可能である。なお、本発明の主旨
はアーキテクチャの構成に必要な情報が記憶手段に格納
されていることであるから、その再構成が静的(システ
ムリセット後に、1度のみに限って再構成するなどの低
い頻度の再構成)か動的(システム運転中の頻繁な再構
成)か、再構成場所が製造現場か運用現場かに関らない
ことに注意したい。
【0032】命令グループ判定によって得られるプロパ
ティのひとつとして、非ネイティブ命令の命令語長(何
バイト命令かの情報で、図1に示す命令長情報404に
相当)が挙げられる。このプロパティも、図3には示さ
れていない、第三のグループ化フィールド抜出部、第三
のグループ化情報記憶部、第二のグループ情報選択部を
以って得ることが可能である。こうして求められた命令
長情報404はプログラムカウンタ400に送られ、次
の非ネイティブ命令の格納番地を算出する目的で利用さ
れる。
【0033】これまで、命令グループ判定部310では
命令を幾つかのプロパティについてグループ化すると説
明してきたが、実際には命令長情報404を除くグルー
プ化されたプロパティに関しては、与えられたプロパテ
ィが取り得る全グループに対し一対一の対応で任意の番
号が付与され、これを以って、与えられた非ネイティブ
命令に関して、着目するプロパティがどんなグループで
あるかが判断される。プロパティに付与される番号はプ
ロパティのグループの同定に利用すると同時に、次段に
設置された命令合成情報記憶部340での命令合成情報
を参照する際の参照アドレス情報(以下、これを命令合
成エントリ情報と呼ぶ)として利用される。
【0034】命令グループ判定部310でグループ化さ
れた命令合成エントリ情報は、次に合成制御部330、
命令合成情報記憶部340に伝達される。図4に命令合
成情報記憶部周辺の詳細な実施例を示す。合成制御部3
30に入力される演算エントリ情報312およびメモリ
アクセスエントリ情報314は命令グループ判定部31
0でグループ化され生成された命令合成エントリ情報で
あって、前者は主に基本演算(四則演算や論理演算な
ど)の種別毎に対応して命令合成情報記憶部340に格
納されている命令合成情報の格納番地を示し、後者は命
令の実行に伴い演算操作の対象となるデータ(これをオ
ペランドと呼ぶ)を命令・データ記憶部1000等のメ
モリとプロセッサ間で転送する必要がある場合のメモリ
アクセス動作に関する命令合成情報の命令合成情報記憶
部340における格納番地を示している。合成制御部3
30の目的は、これに入力されるアーキテクチャ選択情
報375他、各種許可信号等の状態に基づいて、適切な
命令合成エントリ情報を選択し、命令合成エントリ情報
339として命令合成情報記憶部340に供することで
ある。なお、合成制御部330が演算エントリ情報31
2ないしメモリアクセスエントリ情報314を選択する
と言う条件が成立した場合、実際にどちらのエントリ情
報(312または314)を選択するかは両情報の状態
で決まる。即ち、メモリアクセスが必要な場合、これを
表す特定の値をメモリアクセスエントリ情報314が保
持し、これによって演算エントリ情報312より優先的
に選択される。そしてメモリアクセスエントリ情報31
4が指示するメモリアクセス処理向け命令を合成する過
程で適宜演算エントリ情報312が参照され、対応した
演算命令が合成挿入される。もし演算が不要な命令であ
った場合、演算エントリ情報312はこれを表す特定の
値を保持し、その結果、演算命令は合成されない。(な
お、ここでの”命令を合成”するという表現は幾つかの
情報を寄せ集めて新たなネイティブ命令を生成するとい
う意味で使っている。しかし、他の説明の箇所では幾つ
かの命令を混合する行為を”命令を合成”すると表現し
ている場合もあるので注意されたい。)
【0035】命令合成情報記憶部340は一般的にはメ
モリ素子類が使用される。命令合成エントリ情報339
をアドレスとしてメモリ参照し、アドレスデコーダ40
で選択され同時に読み出される複数の情報が、実行ユニ
ット2000で実行するネイティブ命令ないし実行制御
情報(以下単にネイティブ命令と表記する。なお、ネイ
ティブ命令とは実行ユニットが独自の命令デコーダを備
える場合、これによって該実行ユニットが直接実行する
ことが可能な命令のことであり、一方、実行制御情報と
は実行ユニットが独自の命令デコーダを備えない場合、
該実行ユニットに含まれる演算器を直接制御する為のゲ
ート制御情報である。一般に実行制御情報はエンコード
された前記ネイティブ命令より遥かに長い語長をもつ。
そこで、情報語長を短縮するために、実行制御情報の一
部をエンコードする方法も考えられる。)を合成する為
の元情報として利用される。命令合成情報記憶部340
から読み出される命令合成情報の実施例としては以下の
ものが挙げられる。即ち、ネイティブ命令コード41、
次番地情報42、フィールド抜出制御情報1〜343A
〜43C、次命令取込46、切替許可47、割込許可4
8、実行属性49である。
【0036】ネイティブ命令コード41は命令合成部3
50におけるネイティブ命令を合成する際の基本となる
情報で、該情報をネイティブ命令の合成用テンプレート
とし、該テンプレートの必要な部分に、必要に応じて任
意の追加情報を付加し、最終的なネイティブ命令を合成
する。ここで言う追加情報とは、ネイティブ命令語の上
で特定なビット位置に含まれる、該命令オペレーション
に必要なパラメータとしてのレジスタ番号情報、アドレ
ッシングモード指定情報、即値数値情報、分岐命令等で
使われる絶対番地情報や相対番地情報等の各種情報であ
る。
【0037】これらの情報は非ネイティブ命令語からネ
イティブ命令語を合成するに際し、必ずしもバイナリ変
換が必要ではなく、該非ネイティブ命令語上の特定の位
置から特定のビット幅で抽出したままのビット列(これ
をフィールドと呼ぶ)として、ネイティブ命令語の特定
の位置に挿入して利用することができる情報である。ま
たこれらの情報は一の非ネイティブ命令セットの上で必
ずしも常に一定のビット位置、ビット幅を占めていると
は限らず、まして対象となる非ネイティブ命令セットが
異なると、殆どの場合全く異なるビット位置、ビット幅
を占めるため、その可能性に応じて予め一以上の比較的
小さなビット幅のフィールド抜出機321、322、3
23を設け、これを適宜選択・切替えて命令合成部35
0に供することになる。フィールド抜出部320に含ま
れる個々のフィールド抜出機を制御するための情報(非
ネイティブ命令語上のビット位置やビット幅、また図4
では示されていないが情報選択部357、358等の制
御信号等)は、命令合成情報記憶部340から読み出さ
れるフィールド抜出制御情報(図4の実施例では43A
〜43C)の一部として与えられる。
【0038】追加情報の付加方法は色々考えられるが、
図4に示す実施例では、ネイティブ命令コード41は変
換後のネイティブ命令語の基本長と同じビット長を持
ち、該ネイティブ命令語上の予め予定されている特定ビ
ット位置の情報を、必要に応じ、フィールド抜出部32
0によって非ネイティブ命令語から抜き出された情報で
置換する(情報選択部357、358等で選択する)手
法が採られている。この他、実行ユニットのアーキテク
チャによっては前記追加情報に対応するネイティブ命令
語上のフィールド位置が命令に依らず常に一定である場
合もあり、このような場合、情報選択部357、358
等を持たず、またネイティブ命令コード41の長さに関
しても、変換後のネイティブ命令語の総ビット長から前
記追加情報のビット長分を差し引いた長さで済ます方法
なども考えられる。
【0039】命令合成部350において合成されるネイ
ティブ命令情報には、上記したような該ネイティブ命令
の基本語の中に埋め込まれる種類の情報の他、フィール
ド抜出部320によって非ネイティブ命令語から抜き出
されたりプログラムカウンタ400や作業用記憶部50
0からの情報を元に、命令合成部350で加工しネイテ
ィブ命令語の拡張語として新たに生成される情報も有り
得る。非ネイティブ命令語の一部やその拡張語からの情
報を元にする場合は、フィールド抜出機323を通って
情報選択部351に供せられ、プログラムカウンタ40
0や作業用記憶部500からの情報は直接該情報選択部
351に供せられるが、これらの情報を適切に選択し、
ビット再配列回路352、バイト再配列回路354、数
値拡張回路355、加算回路356などの各種演算機に
て前記選択した情報を加工し、情報選択部359にて選
択し、ネイティブ命令の拡張語として該ネイティブ命令
の基本語に付加し、実行ユニット2000が実行可能な
命令列(実行制御情報)を生成する。拡張語は常に生成
される訳ではなく、それが必要な場合にのみ、必要な情
報を、必要な演算で加工し、基本ネイティブ命令語に付
加される。どのような時に、どのような情報を、どのよ
うに加工するかを指示する信号は、命令合成情報記憶部
340から読み出される、図4ではフィールド抜出制御
情報3(43C)の一部として示されている命令合成情
報であり、これを以って、情報選択部351、359の
制御を行ったり、各演算機352、354、355、3
56の動作制御を行ったり、作業用記憶部500の参照
の際の番地情報とすることになる。
【0040】図4の実施例に示す命令合成部350に含
まれる四の演算器の内、バイト再配列部354を除く、
三の演算器の目的とその使用例は以下の通りである。
【0041】ビット再配列部352は、例えばプロセッ
サアーキテクチャ毎に異なるコンデションコードフラグ
レジスタ(プロセッサアーキテクチャによって呼び方が
異なるが、ここでは一般的な名称に統一し、以下単にC
CRと表す)の中のフラグの配置順の差異を吸収する目
的で使われる。ある仮想プロセッサのアーキテクチャで
はCCRの中にC、V、N、Zと言うフラグ(個々のフ
ラグの意味はここでは重要ではないので説明を省略す
る)が表記の順番に並んでいる一方で、実行ユニット2
000のハードウエアがネイティブに備えるCCRでは
N、Z、V、Cと並んでいると仮定する。非ネイティブ
ソフトウエアプログラムの中で、以下のような処理を実
行しようとすると、非ネイティブ命令セットアーキテク
チャとネイティブ命令セットアーキテクチャのCCR上
のフラグの配置の違いから、単純な命令変換では変換前
の非ネイティブ命令プログラムと変換後のネイティブ命
令では異なった動作をする可能性があることが想像でき
よう。(両命令セットアーキテクチャの文法は適当に仮
定したものである。両アーキテクチャの差異を強調する
ために、ソースコードでのレジスタの名前やオペランド
の出現順を変えてある。) 変換前の非ネイティブ命令プログラム: MOVE #8,D0 ;レジスタDOに即値8を代入 AND D0,CCR ;DOとCCRの論理積をCCRに代入 BCS Label ;CがセットしていればLabelへ分岐 変換後のネイティブ命令プログラム: LDI R0,8 ;レジスタROに即値8を代入 AND CCR,CCR,R0 ;ROとCCRの論理積をCCRに代入 JCS Label ;CがセットしていればLabelへ分岐
【0042】この問題は、任意の命令のオペランド(デ
スティネーション/格納先またはソース/参照元いずれ
の場合でも)にCCRが指定された場合は、該命令の実
行に先立って、該命令に関る何れかのオペランドのビッ
ト配列を適切に再配列しておくことで解決される。即ち
上記の例を使って説明すると、変換後のネイティブ命令
プログラムコードの中の、ROとCCRの論理積を求め
る命令を、以下の様な2命令として分割変換するのであ
る。 変換後のネイティブ命令プログラム:(上記の論理積部分のみを抽出) ST WORK,R0 ;作業用記憶部500上の任意の ; 番地WORKにR0を格納 ANDI CCR,CCR,IMM ;即値IMMとCCRの論理積を ; CCRに代入する ここで、IMMとは、該ANDI命令合成の際に作業用
記憶部500の番地WORKから読み出され、ビット再
配列部352で適切にビット並びが再配列され、情報選
択部359を通って、該ANDI命令に付加された拡張
語である。
【0043】図5にビット再配列部352の実施例を示
す。本実施例はビット再配列の自由度を最大限に実現す
るものである。ここで仮想プロセッサのCCR、実行ユ
ニットのCCR共に幅が32ビットであると仮定する
と、ビット再配列部352の出力信号の全32ビットに
対して、32対1の情報選択回路(一般には32入力1
出力型マルチプレクサ)を一づつ設置する。(合計32
個の設置。)各情報選択回路は5ビットのビット選択情
報をもつため、32個の回路では合計160ビットのビ
ット選択情報(図5ではビット配列変換情報353と記
す)が必要となる。この情報は対象となる仮想プロセッ
サのアーキテクチャに依存して変わるので、制御情報記
憶部380に予め必要なアーキテクチャ数だけ登録して
おき、アーキテクチャ選択情報375に基づき、適宜選
択・切替える。
【0044】ここでもし本ビット再配列部352の使用
目的をCCRの再配列のみに限定し、再配列の対象とな
るコンデションコードフラグの数を高々8ビット程度に
制限すれば(殆どの汎用プロセッサが備えるコンデショ
ンコードフラグの数は8ビット程度以下であるから、こ
の制限は妥当である)、上記したビット選択情報のビッ
ト総数は160から96に低減することが可能である。
更に最大8ビットのコンデションコードフラグの何れ
も、ビット再配列部352の出力ビットの1箇所でのみ
選択されるという制限を加えると、数学的な順列の考察
から、必要なビット選択情報のビット総数は20程度と
なる。このようにビット再配列部のその他の実施例は再
配列の自由度や変換速度への要求に合わせて如何様にも
提案可能であるが、本発明において重要なことは、与え
られたデータのビット配列を(許容される自由度や速度
の範囲で)配置し直して、仮想プロセッサ・実行ユニッ
ト間で受け渡すことが可能な手段を備えることであるか
ら、ビット再配列部352の実施方法の詳細が如何よう
であっても本発明の実施例の範囲内である。
【0045】上記で説明したビット再配列手段の実施例
では、仮想プロセッサにとってのCCRが、実行ユニッ
ト2000が本来備える実CCRとは個別の何らかの実
体のあるレジスタとして実現されている訳ではなく、仮
想プロセッサにとってのCCRを仮想的にイメージ(想
定)し、該仮想的CCRイメージとの演算が必要な場合
にのみ、そのイメージから実体のあるCCRへの変換を
ビット再配列部352を通して行い、所定の演算を遂行
するものである。従って、実行ユニット2000内の演
算器2110や2120で何らかの演算を実行し、これ
に伴って実行ユニット2000が本来備える実体のある
CCR(図6では実体フラグレジスタ2710に相当)
の状態が更新された場合であっても、該仮想CCRイメ
ージの状態が即座に更新されるわけではないことに注意
しなければならない。
【0046】即ち、図5のビット再配列部352の実施
例を仮想的CCRの実現手段として利用する場合は、該
仮想的CCRを演算の対象とする都度、意識的な手続き
処理を追加実行しなければならないと言う処理の煩雑さ
が伴う。(この意識的な手続き処理とは、前述したよう
な、作業用記憶部500に演算オペランド値を一時的に
格納し該オペランド値をビット再配列部352で変換す
る等の手続き処理であるが、これら処理は予め命令合成
情報記憶部340に準備されている所定の手続きが、必
要な場合に自動的に呼び出されて実行されるものである
から、ユーザーアプリケーションの記述の上で意識する
必要は無い。)この手続きの煩雑さを解消する為に、仮
想的CCRを擬似的に実現する事のみに用途を限定した
ビット再配列手段を実行ユニット2000内に設置し、
実行ユニット2000内での演算の結果が即座に反映さ
れるような実体を持った仮想CCRを設置することで、
CCRとの演算が必要な場合は、該実体を持った仮想C
CRを直接対象に演算を行う方法が考えられる。図1の
実施例に示した実行ユニット2000内のフラグ制御部
2220がこれに相当する。
【0047】フラグ制御部2220のより詳細な実施例
を図6示す。本実施例では、フラグ制御部2220の主
な目的をCCRの再配列に限定した上で、実行ユニット
2000が本来備える実体フラグレジスタ2710(こ
れはフラグレジスタ部2700に含まれる)のCCR情
報を元に、このビットを再配列し、仮想プロセッサのC
CRを仮想フラグレジスタ2720(これもフラグレジ
スタ部2700に含まれる実体のあるレジスタ)上に実
現する機能を提供している。フラグ制御部2220は、
実体フラグレジスタ2710と仮想フラグレジスタ27
20との間に設置される。このように接続することで、
実行ユニット2000内の演算実行部2110、212
0が何らかの演算の実行に伴って実体フラグレジスタ2
710に対し状態の更新動作を行う際に、更新動作と同
期してビット配列を適切に再配置し、仮想フラグレジス
タ2720の状態を更新することが可能となる。こうし
て、実体フラグレジスタ2710の更新と仮想フラグレ
ジスタ2720の更新は同時ないしはほぼ同時に行われ
る。実体フラグレジスタ2710の更新から仮想フラグ
レジスタ2720の更新までの遅れ時間は回路の実装に
依存するが、適切な実装によりゼロクロックの遅れ(即
ち同時)にする事は容易である。演算のオペランドとし
てCCRを読み書きする場合は、こうして実現された仮
想フラグレジスタ2720を実体フラグレジスタ271
0に代わって読み書きすることで、直接該演算の対象と
して取扱うことが可能となる。上述した、CCRとレジ
スタとの演算時の問題も、複数命令に分解する事無く、
原プログラムのまま変換して、直接CCR(仮想フラグ
レジスタ2720)とレジスタを演算すれば良いのであ
る。
【0048】本実施例に示すフラグ制御部2220に含
まれる各ビット回路には、図5に示したビット再配列部
352の実施例の場合と同様の32対1の第一の情報選
択回路に加えて、新たな4対1の第二の情報選択回路が
縦列に接続されている。該第二の情報選択回路に入力さ
れ選択可能な情報は、固定値の0または1、実行ユニッ
ト2000が本来備える実体フラグレジスタ2710の
任意のビット状態、及び仮想フラグレジスタ2720か
ら読み出される任意のデータ語の自ビット位置の現在情
報である。これらを適宜選択することで、仮想フラグレ
ジスタ2720の任意のビットを任意の固定値(0また
は1)に強制的にセットしたり、実行ユニット2000
から渡されるデータの任意ビットの状態を反映させた
り、現在値を保持する等、実行ユニットが更新する実体
CCRの状態に基づきながらビット再配列した仮想CC
Rを適切に更新する為に必要な機能が提供されている。
こうして仮想フラグレジスタ2720という実体を持っ
たレジスタの上に仮想プロセッサが持つべきCCRを再
現することが可能となっている。なお、図6の実施例で
は仮想フラグレジスタ2720として読み出し・書き込
みの各専用データポートを持った記憶手段(レジスタ)
を使うことで、任意のビットの現在値を保持する機能を
実現しているが、もしビット毎の書き込み許可制御信号
を持つ記憶手段を仮想フラグレジスタ2720として使
う場合は、読み出しと書き込みのデータポートは兼用す
ることが出来る。
【0049】前記第二の情報選択回路において、どの入
力信号を選択するかを指示する情報(図6ではビット状
態制御情報と記す)は、図1や図4には示されていない
が、命令合成情報記憶部340から読み出される命令合
成情報の中の実行属性49(これは命令配分・発送部7
00から出力される実行制御2050情報の一部でもあ
る)の一部であり、これによって実行命令単位で仮想フ
ラグレジスタ2720の状態を必要に応じて適切に(命
令によって更新するフラグの種類や、更新する場合の値
が異なることに注意)制御することが可能となる。ま
た、実装する仮想フラグレジスタ2720の数に関して
は、システムで実行する仮想プロセッサないしタスクの
数と同数以上設置し、これら複数レジスタの内の適切な
一を仮想プロセッサないしタスクの選択情報に基づいて
選択すると言う第一の方法、実レジスタは一のみである
が仮想プロセッサないしタスクが切替わる度に実行ユニ
ット外部の何れかの記憶手段に対し仮想フラグレジスタ
2720の内容を退避・復帰させる第二の方法等が考え
れれる。
【0050】この様に、仮想プロセッサと実行ユニット
間のコンデションコードフラグレジスタ(CCR)のビ
ット配列の違いを補正する目的に限ると、ビット再配列
部352を使った方法より、フラグ制御部2220を使
った方法が仮想CCRの再現性(リアルタイム性)がよ
り高く優れているが、この事によってビット再配列部3
52が不要になる訳ではない。プロセッサアーキテクチ
ャ以外のハードウエア、例えば周辺機器用インターフェ
ース回路等に含まれる様々な制御レジスタ等に関して、
仮想的に実現したいシステムと実体システムのハードウ
エア(周辺機器用インターフェース回路3000等)と
の間にある差異を補正する目的で、ビット再配列部35
2は有効に利用することが可能である。
【0051】命令合成部350に含まれる数値拡張部3
55の目的は、非ネイティブ命令語に含まれる即値や分
岐オフセット等(これらは大抵符号付の整数である)
が、データの基本長(例えば32ビット)に満たない短
いビット幅(例えば6ビットや10ビットなど)で与え
られる場合、それを実行ユニット2000が扱うことが
可能な、該即値等より長いビット幅(例えば16ビット
や32ビット)を持った即値に変換することである。プ
ロセッサアーキテクチャの差異から、実行ユニット20
00が扱える即値の幅が必ずしも、仮想プロセッサの扱
う即値の幅と一致しないからである。同様に、符号無し
の短い正数即値等を符号無しで長い正数に拡張したい場
合もある。(符号なし負数の拡張も理論的には有り得る
が、一般的なプロセッサに適応する例は殆ど無い。)こ
の様に、短いビット幅の数値を、より長いビット幅の数
値に拡張するのが数値拡張部355の目的であるが、そ
の実施方法は符号付きか無しかに関らず、ごく平易な技
術であるため、ここでは説明を省略する。
【0052】次に数値拡張部355の利用法の一例を示
す。前出の例と同じく、仮想プロセッサ・実行ユニット
の両アーキテクチャの文法は適当に仮定している。 変換前の非ネイティブ命令プログラム: MOVEQ #3,D0 ;レジスタDOに即値3を代入 ; (即値の幅は8ビット) 変換後のネイティブ命令プログラム: LDI R0,IMM ;レジスタROに即値IMMを代入 ここで即値IMMは、フィールド抜出機323により非
ネイティブ命令語から抜き出され、数値拡張部355に
て32ビットに数値拡張した、ネイティブ命令語LDI
への拡張語である。
【0053】命令合成部350に含まれる加算部356
の目的は、主に仮想プロセッサ・実行ユニットの両アー
キテクチャ設計仕様の差異から生じる、プログラムカウ
ンタの動作の違いを補正・吸収することである。一般的
にプロセッサの持つ分岐命令、メモリアクセス命令等に
は、その命令の実行時におけるプログラムカウンタの値
に対して相対的な距離(これをオフセットと呼ぶ)だけ
離れた番地をアクセスする類のアドレッシングモード
(プログラムカウンタ相対アドレッシングモードと呼
ぶ)を備える場合がある。命令基本語バイナリの中また
は拡張語の中の数値(一般的には符号付き)としてオフ
セット値は与えられ、これが命令実行時のプログラムカ
ウンタの値に加算されるのであるが、本質的にプログラ
ムカウンタによる命令取得(フェッチ)動作は、取得し
た命令の実行動作に先行するものであるから、一般的な
プロセッサの実装においてはこれらの動作をパイプライ
ン処理するのが常であり、その結果、命令実行時のプロ
グラムカウンタは該命令の取得番地より幾分番地先行し
た(大きな)値を保持している。プロセッサアーキテク
チャの設計仕様が異なる(即ちパイプライン設計が異な
る)と、この番地先行値が異なることは必然である。
(ただし、パイプライン設計が異なっても、該番地先行
値を一定に保つことは、意図的な設計をすれば可能では
ある。)
【0054】図1に示した本実施例では、プログラムカ
ウンタ相対の分岐命令やメモリアクセス命令等では、プ
ログラムカウンタ400に対する相対アクセスとして実
行する様に設計されている。仮想プロセッサが仮定する
プログラムカウンタと実際のプロセッサの物理的プログ
ラムカウンタ(この場合はプログラムカウンタ400)
の間では、振る舞いが異なる可能性があるから、前述し
た番地先行値の補正が必要となる場合がある。このよう
な目的で加算部356は利用される。その他、本加算部
356は汎用の演算機として、実行ユニット2000に
代わって演算を実行する等の用途で利用することも可能
であろう。なお、ここでは加算部という名称を採用して
いる該加算部356は、必ずしも加算のみに限定してい
るわけではなく、符号付数値の扱いを考慮すれば、暗黙
的に減算機能も包括している。従って、該加算部356
は加減算部と呼んでも良い。
【0055】次に加算部356の利用法の一例を示す。
前出の例と同じく、仮想プロセッサ・実行ユニットの両
アーキテクチャの文法は適当に仮定している。 変換前の非ネイティブ命令プログラム: BRA Offset ;プログラムカウンタの現在値に ; Offsetを加算した番地へ分岐 変換後のネイティブ命令プログラム: J Label ;Labelの番地へ分岐 ここでLabelはネイティブ命令語Jへの拡張語で、
フィールド抜出機323により非ネイティブ命令語から
抜き出された値Offsetと、プログラムカウンタ4
00の現在値、及び補正値(図4に示されていない)を
加算部356にて加算して得られた即値(絶対番地)で
ある。
【0056】実行ユニット2000における分岐命令の
実行によって処理の分岐が発生した場合、これを知らせ
る情報は、例えば図1の実施例では制御情報2080に
含まれ、実行ユニット2000からプロセッサアーキテ
クチャ変換部100に伝達される。これを受けて、プロ
セッサアーキテクチャ変換部100はプログラムカウン
タ400の値を適切に分岐(非連続値をロード)させ
る。
【0057】図4の実施例では、生成したネイティブ命
令基本語への拡張語を出力する情報選択部359の出力
情報は作業用記憶部500にも供されている。これによ
って、実行ユニット2000にて分岐命令の分岐が発生
した際に、命令取得番地を生成しているプログラムカウ
ンタ400の生成番地を分岐させる為にロードする分岐
先番地を、予め命令合成部350で計算し、作業用記憶
部500に蓄積しておくことで、分岐実行検出時に該分
岐命令に対応する分岐先番地を作業用記憶部500から
読み出してプログラムカウンタ400にロードさせ、正
しい分岐を実現させるのである。実行された分岐命令に
対応する正しい分岐先番地情報を作業用記憶部500か
ら取得する方法は、例えば、プログラムカウンタ400
の分岐先番地を計算・生成する際に、これに対応する適
当なタグ情報を同時に生成し、命令の実行属性の一とし
て実行ユニットに送り、一方、該タグ情報と該プログラ
ムカウンタ分岐先番地情報を一対に関連付けながら両情
報を作業用記憶部500に記憶させ、実行ユニット20
00が分岐実行の際に該分岐命令に対応し出力するタグ
情報を以って作業用記憶部500上のタグ情報を参照
し、対応するプログラムカウンタ分岐先番地情報を取得
する、等の方法で実現可能である。
【0058】また、命令合成部350から合成後命令緩
衝記憶部600、命令配分・発送部700、分岐実行部
2210へと連なる処理のパイプラインの段数に対応し
た段数の先入れ先出し(FIFO、ファーストイン・フ
ァーストアウト)型記憶手段を作業用記憶部500とは
別個に設置し、これを作業用記憶部500に代えて前記
分岐先番地情報の格納先とし、分岐が発生した時点で該
先入れ先出し型記憶手段から読み出されている分岐先番
地情報をプログラムカウンタ400にロードすること
で、前述したような特別なタグ情報を付加する事無く正
しい分岐が実行出来る。(分岐先番地情報格納手段の第
二の実施例。)何れの記憶手段を分岐先番地情報の格納
手段として採用した場合であっても、命令合成作業時に
分岐先番地情報を予め計算しておき、一時的記憶手段に
記憶させておく点では共通しており、本発明の実施例の
範囲である。
【0059】もし実行ユニットにて分岐が発生した場
合、実行ユニット2000は自己制御によってパイプラ
イン上の実行途中の命令は破棄し、実行制御情報205
0に該情報が有効である事を示す(それが有効か無効か
を示す信号は実行制御情報2050に含まれている)新
たな命令列が入力されるまで、実行ユニット2000自
身を待機させる(命令の実行が一時停止される)。同時
に、プリフェッチ命令緩衝記憶部200に取得蓄積され
ている命令や合成後命令緩衝記憶部600に蓄積されて
いる合成済ネイティブ命令は破棄される。またプログラ
ムカウンタ400は作業用記憶部500から正しい命令
分岐先番地を取得し、これをロードして該仮想プロセッ
サの処理を該分岐先番地へ分岐させる。その後、命令用
1次キャッシュメモリ5200ないし命令・データ記憶
部1000から新たな命令を取得し、命令変換を再開す
る。プロセッサアーキテクチャ変換部100内におい
て、分岐先の命令の変換が完了し、これに対応するネイ
ティブ命令が合成後命令緩衝記憶部600に蓄積し、命
令配分・発送部700を経由して有効なネイティブ命令
が再び実行制御情報2050に出力されると、実行ユニ
ットは一時停止していた命令の実行を再開させる。こう
して、分岐命令動作が正しく遂行される。なお、上述し
たような分岐発生時に実行ユニット2000を待機させ
る手段は実施が容易であり、またその実施方法として
は、前記した実行制御情報2050にそれ自身が有効か
無効かを示す情報を付加する方法(これは見方を変える
と、実行ユニット待機時には、何も実行しない事を指示
する命令を発行しているとも考えられる)以外にも様々
な方法があるが、何れの方法であっても本発明の実施例
の範囲である。
【0060】上記の説明から理解できるように、本発明
の実施例によれば、仮想プロセッサ向けソフトウエアプ
ログラムを実行前に取得しプリフェッチ命令緩衝記憶部
200に格納し命令変換・合成部300で命令合成する
という一連の動作は全て、プロセッサアーキテクチャ変
換部100内部において自由に制御可能である。従っ
て、プログラムカウンタ400の増分値制御回路周辺に
新に分岐予測機能を付加させることも可能である。分岐
予測機能とは、ある与えられた分岐命令の次に既定で変
換(デコード)作業を開始する命令として、通常プロセ
ッサの様に該分岐命令の格納番地上で連続している隣接
命令を常に採るのではなく、該分岐命令の分岐先番地や
過去の分岐履歴に基づいて判断し、該隣接命令と該分岐
先命令の内、より適切と予想される方の命令を既定とし
て変換(デコード)作業を開始する機能である。
【0061】上記の実施例の説明では分岐が検出される
と緩衝記憶部200、600上の命令は破棄されると説
明したが、場合によってはこれを破棄しない別の実施例
も考えられる。即ち、分岐検出時、該分岐先の非ネイテ
ィブ命令に対応するネイティブ命令が既に合成済みで、
合成後命令緩衝記憶部600上に蓄積されている場合、
新たに命令を命令用1次キャッシュメモリ5200から
読み込んで再度合成するという一連の作業を繰り返す事
無く、単に合成後命令緩衝記憶部600からネイティブ
命令を読み出す位置情報(ネイティブ命令読み出しポイ
ンタ)を調整するだけで、合成済みの該分岐先ネイティ
ブ命令を短時間に実行ユニット2000に送る事も可能
である。また、合成済みの分岐先ネイティブ命令が蓄積
されていない場合でも、該分岐先の非ネイティブ命令自
体はプリフェッチ命令緩衝記憶部200に蓄積済の場合
も有り得る。このような場合も、新たに該命令を命令用
1次キャッシュメモリ5200から取得しなおす事無
く、単にプリフェッチ命令緩衝記憶部200から非ネイ
ティブ命令を読み出す位置情報(非ネイティブ命令読み
出しポインタ)を調整するだけで、命令変換・合成部3
00に該非ネイティブ命令を送る事も可能となる。
【0062】こうして命令合成部350で合成されたネ
イティブ命令は、次段に接続された合成後命令緩衝記憶
部600に一旦保持され(図4では例としてロード命令
61A、演算命令62A、ストア命令63Aとそれらに
関連するパラメータフィールド61C、62B、62
C、63B、63C、拡張語61E、63E、実行属性
61F、62F、63F等と示されている)、先入れ先
出し(FIFO、ファーストイン・ファーストアウト)
の順序で、命令配分・発送部700に送られる。命令配
分・発送部700は所謂ディスパッチユニットと呼ばれ
るもので、命令合成部350で合成された複数のネイテ
ィブ命令の内、お互いに依存関係の無い複数の命令を同
時に実行できるように組み合わせ、これに対応させて実
行ユニット2000が備える複数の実行部の内の一部を
適切に組み合わせ選択して、該組み合わせ命令を実行制
御情報2050として実行ユニット2000に随時発行
する機能を提供する。命令配分・発送部700の機能
は、今日のスーパースカラ技術に基づいたプロセッサに
一般的に使われているディスパッチユニットと特に変わ
りは無いので、その詳細については説明を省略する。な
お、実行ユニット2000が内部に命令デコーダを備
え、そのネイティブな命令を直接実行出来る場合は、プ
リフェッチ命令緩衝記憶部200から読み出されたネイ
ティブ命令を命令配分・発送部700に供することで、
ネイティブ命令に関しても上記の命令並列実行機能を利
用することが可能となる。
【0063】合成後命令緩衝記憶部600は、プロセッ
サアーキテクチャ変換の目的からすれば必ずしも必須な
機能ではないが、実行ユニット2000による命令取得
タイミングに関らず、これに先行してプロセッサアーキ
テクチャ変換部100内で命令変換作業を進められる利
点をもたらす意味で、合成後命令緩衝記憶部600は装
備した方が有利であろう。なお、合成後命令緩衝記憶部
600から出力される合成命令緩衝記憶満杯信号368
は、合成後命令緩衝記憶部600の記憶域が満杯(また
は、満杯に対して予め決められたしきい値分、例えば満
杯の80%など)になった時に、命令合成を一次休止さ
せることを前段に要請する信号で、これを例えば合成制
御部330にて参照することで、同目的が達成される。
【0064】図4の実施例では、フィールド抜出部32
0は3個のフィールド抜出機を備えていたが、前述した
とおり、この数やその大きさ(ビット幅)等の仕様は、
実行ユニット2000の持つネイティブ命令セットアー
キテクチャや、対象とする非ネイティブ命令セットアー
キテクチャなどによって変わり得る。従って何れの形態
であっても本発明の実施例の範囲内である。また、命令
合成部350が備える演算機能の実施例として、図4で
はビット再配列352、バイト再配列354、数値拡張
355、加算356を挙げたが、場合によってはその他
の演算機能、例えば四則演算、論理演算、ビットシフ
ト、ビット間演算等を追加することも可能であるが、こ
れらの場合においても本発明の実施例の範囲内である。
【0065】図4に示す実施例の中では、命令合成情報
記憶部340が実行属性49という情報を出力してい
る。これには例えばメモリアクセスを行う命令におい
て、バスサイクルの境界が何処にあるかを示すバスサイ
クル境界信号(実施例の説明図には示されていないが、
アーキテクチャ切替え・再構成対応プロセッサ5000
の出力するバス制御信号の一として含まれる)の制御に
関る情報も含まれる。バスサイクル境界信号は、本発明
の主旨には必須ではない機能ではあるが、もし仮想プロ
セッサがアトミックなバスサイクル(Read−Mod
ify&Write、指定された番地を読み、値を変更
して、書き込むという一連の動作が、如何なる場合も分
離不可能なバスサイクル)を実行する命令を備えてお
り、かつシステムが該バスサイクルを要求する場合(こ
れは、マルチマスターシステムにおいて、セマフォが使
われる等の場合が多い)、実行中のバスサイクルが分離
不可能か否かを外部に表示する必要があり、その目的で
利用される。バスサイクル境界信号は、命令合成情報記
憶部340が出力する実行属性情報49に含まれるバス
境界制御情報を、メモリアクセス命令実行時までのパイ
プライン分だけ適切に遅延させることで生成される。命
令合成情報記憶部340はネイティブ命令を合成する度
に、実行属性情報49に含まれるバス境界制御情報を通
じて、該命令がアトミックバスサイクルを要求するもの
であるか否かを示すので、命令に含まれるバスサイクル
単位でバスサイクル境界信号を適切に制御することが可
能である。なお実行属性情報49には、前記バス境界制
御情報以外にも、命令に関る様々な属性情報が含まれ
る。
【0066】命令合成情報記憶部340が出力する他の
信号に、次番地情報342、次命令取込み許可信号34
6、アーキテクチャ切替え許可信号347、内部割込み
許可信号348がある。これらはぞれぞれ、命令合成情
報記憶部340から読み出される次番地情報42、次命
令取込46、切替許可47、割込許可48の各出力情報
に対応しており、何れも合成制御部330での制御に必
要な情報として利用される。なお、命令合成情報記憶部
340の番地(エントリ)を連続して参照する為に専用
の参照番地生成手段(これはプロセッサの命令取得の為
のプログラムカウンタと同様な原理で動作するカウンタ
で良い)を設置することで、次番地情報342を廃し、
これに代えても良い。
【0067】合成制御部330の周辺のより詳細な実施
例を図7に示す。合成制御部330の主要な動作は、演
算エントリ情報312、メモリアクセスエントリ情報3
14、アーキテクチャ切替え時実行エントリ情報37
1、割込み時実行エントリ情報372、次番地情報34
2の内の何れかひとつのエントリ情報を選択(マルチプ
レクス)し、アーキテクチャ選択情報375と合成し
て、命令合成エントリ情報339を得、次段の命令合成
情報記憶部340に供することである。
【0068】前記選択されたエントリ情報とアーキテク
チャ選択情報375とを合成する方法の、最も簡単な第
一の実施例として、仮に前記選択されたエントリ情報が
10ビット幅で、アーキテクチャ選択情報375が2ビ
ット幅であった場合、前記選択されたエントリ情報の上
位ビットにアーキテクチャ選択情報375を単純にビッ
ト連結し、合計12ビット幅の命令合成エントリ情報3
39を作る方法が考えられる。前記選択されたエントリ
情報とアーキテクチャ選択情報375との合成方法の第
二の実施例として、前記選択されたエントリ情報(例え
ば10ビット幅)の上位に例えば2ビット分拡張(2ビ
ットのゼロ値拡張で良い)した12ビット幅の拡張エン
トリ情報を作り、該拡張エントリ情報の上位例えば5ビ
ット部分に加算する為の値を保持するレジスタを複数
(予想される仮想プロセッサアーキテクチャの数分で、
例えば4個)設け、アーキテクチャ選択情報375の指
定に基づいて前記複数レジスタの一を選択しこれが保持
する値を、前記拡張エントリ情報の上位に加算するとい
う方法も考えられる。この方法によれば、各仮想プロセ
ッサアーキテクチャに対応するネイティブ命令合成に必
要な情報を、命令合成情報記憶部340上のより小さな
ブロックの任意の境界から配置できる。(第二の実施例
での配置境界のブロック長は2^(12−5)=128
ワードであるのに対し、第一の実施例での配置境界のブ
ロック長は2^10=1024ワードである。)第二の
実施例の方が第一の実施例と比べて、特に仮想プロセッ
サアーキテクチャ間で必要とする命令合成情報記憶部3
40の記憶容量の差が大きい場合、命令合成情報記憶部
340の記憶容量をより有効に利用できる点で優れてい
る。
【0069】上記説明ではエントリ情報の拡張をビット
上位側で拡張するとしたが、下位側への拡張でも同様の
効果は得られる。ここで重要なことは、前記選択された
エントリ情報とアーキテクチャ選択情報375と適切に
合成し、各仮想プロセッサアーキテクチャ毎に独立し、
かつお互いに重複しない領域を命令合成情報記憶部34
0上に確保し参照できるような参照番地情報、即ちエン
トリ情報を生成する手段を持つことである。従ってこれ
を達成するエントリ情報生成手段は、如何なる方法であ
っても本発明の実施例の範囲内である。
【0070】合成制御部330において選択するエント
リ情報は、アーキテクチャ切替え許可信号347、アー
キテクチャ切替え要求信号374、内部割込み許可信号
348、外部割込み要求信号1030、割込み許可タス
ク信号373、合成命令緩衝記憶満杯信号368の各信
号の状態の組み合わせで決定される。
【0071】先ず、合成命令緩衝記憶満杯信号368が
アサート(活性状態)である時は、命令エントリ情報選
択部332は命令合成エントリ情報339として“何も
しない”事を指示するエントリ情報を生成し、合成命令
緩衝記憶部600の満杯状態が解除されるまで、一切の
命令合成作業を停止させることをプロセッサアーキテク
チャ変換部100システムに指示する。ただし必要が有
れば、たとえ合成命令緩衝記憶満杯信号368がアクテ
ィブであっても、割込み等の内外部要求が入った場合に
限って、合成命令緩衝記憶部600上の蓄積済命令の適
切な命令境界で命令破棄した上で、該割込み処理に対応
する命令変換・合成作業に移れる様に設計することも可
能である。
【0072】合成命令緩衝記憶満杯信号368がアクテ
ィブでない時は、命令エントリ情報選択部332は、ア
ーキテクチャ切替えに関る要求・許可信号や割込み処理
に関る要求・許可信号の状態の評価をもとに、適切な処
理に対応するエントリ情報を命令合成エントリ情報33
9に出力する。もし、アーキテクチャ切替え及び割込み
処理に関る処理が何れも選択されない場合、命令エント
リ情報選択部332は、命令合成情報記憶部340が出
力する次番地情報342か命令グループ判定部310が
出力する演算エントリ情報312、メモリアクセスエン
トリ情報314の何れか適切な情報を選択し、命令合成
エントリ情報339に出力する。該三者の何れの情報が
選択されるかは、主に次番地情報342の状態によって
決定される。即ち、次番地情報342は、演算エントリ
情報312またはメモリアクセスエントリ情報314を
選択することを指示する為の予め定められた特殊な値を
持つことが出来、もし次番地情報342がこれらの値を
保持する場合は対応するエントリ情報を選択し、次番地
情報342が該特殊値以外の値を保持する場合は次番地
情報342の値そのものを選択するのである。
【0073】プログラムカウンタ400によって番地指
定され、プリフェッチ命令緩衝記憶部200から取得さ
れた非ネイティブ命令は、命令グループ判定部310に
て適切にグループ判定され、次にこれに対応して出力さ
れる演算エントリ情報312ないしメモリアクセスエン
トリ情報314が指示する第一のエントリ番地を始点と
して命令合成情報記憶部340が参照読み出しされ、該
読み出された情報を基に、先ず第一のネイティブ命令が
合成される。該非ネイティブ命令が該第一のネイティブ
命令に変換されるだけで不十分(不完全)な場合、該第
一のネイティブ命令を合成する際に同時に命令合成情報
記憶部340から読み出された次番地情報342は、第
二のネイティブ命令を合成するのに必要な第二のエント
リ番地情報を保持している。この事が第二のネイティブ
命令の合成が必要である事を指示している。該指示に従
い該第二のエントリ番地情報を以って再び命令合成情報
記憶部340が参照読み出しされ、第二のネイティブ命
令が合成される。このように、必要な数のネイティブ命
令が全て合成されたか未だ不足しており追加のネイティ
ブ命令合成が必要かは、前述の要領に従い、ネイティブ
命令合成の都度読み出される次番地情報342を調べる
ことで判断される。一の非ネイティブ命令に対応する複
数のネイティブ命令を合成している間は、次命令取込み
許可信号346はネゲート(非活性状態)であり、プロ
グラムカウンタ400は一定の現在値を保持している。
【0074】必要な数のネイティブ命令の合成が完了す
ると、最後に命令合成情報記憶部340から読み出され
た次番地情報342は演算エントリ情報312ないしメ
モリアクセスエントリ情報314を選択することを指示
する値を保持している。また同時に次命令取込み許可信
号346もアサート状態になり、プログラムカウンタ4
00の値を更新することを指示している。これを受けて
プログラムカウンタ400の値は更新され、この新しい
非ネイティブ命令取得番地を以って、新しい非ネイティ
ブ命令がプリフェッチ命令緩衝記憶部200から取得さ
れ、命令グループ判定部310にて適切にグループ判定
され、これに対応して出力される演算エントリ情報31
2ないしメモリアクセスエントリ情報314が命令合成
エントリ情報339として選択される。以下、前述した
一連のネイティブ命令合成動作が反復される。
【0075】上記の実施例の説明では、命令合成情報記
憶部340から読み出される次番地情報342と次命令
取込み許可信号346は同じタイミングで変化するとさ
れていた。それならば、次命令取込み許可信号346を
廃止し、代わりに次番地情報342が演算エントリ情報
312ないしメモリアクセスエントリ情報314を選択
することを指示する値を保持した場合にのみプログラム
カウンタ400の値を更新するような論理を持った第二
の実施例も考案できる。また次命令取込み許可信号34
6は廃止せず、命令グループ判定部310の出力する演
算エントリ情報312、メモリアクセスエントリ情報3
14、命令長情報404等の値を一旦保持するレジスタ
をそれぞれの情報信号線上に挿入設置する事でパイプラ
インを構成し、これによって命令グループ判定部310
からの判定情報が確定し該レジスタに保持され、後続の
合成制御部330、命令合成情報記憶部340等でネイ
ティブ命令の合成が開始されたら、直ちに次命令取込み
許可信号346をアサートし、関連するひとつまたは複
数のネイティブ命令の合成の完了を待たずに、プログラ
ムカウンタ400の更新およびプリフェッチ命令緩衝記
憶部200からの次非ネイティブ命令の取得、命令グル
ープ判定部310でのグループ判定作業を先行処理させ
るという、第三の実施例も考案できる。何れの場合で
も、非ネイティブ命令からネイティブ命令を合成するの
に関る手順は同一と言う点で本発明の実施例の範囲内で
ある。
【0076】プログラムカウンタ400の構成並びにそ
の動作は極一般的なカウンタのそれと同一であって説明
するまでもないが、図7の実施例として示されている図
を元に簡単に説明すると、レジスタ410はプログラム
カウンタ400の出力する命令アドレス情報402を保
持するレジスタで、静止状態ではその値自身が情報選択
部412を通って再びレジスタ410に保持されること
で一定値を保つ。もし、命令グループ判定部310が出
力する命令長情報404の値だけプログラムカウンタ4
00の値を増加させたい場合は、論理ゲート336の出
力をアサートすることで、情報選択部412にて加算器
414の出力が選択され、これがレジスタ410に保持
され増加が実行される。また、プログラムカウンタ40
0にプログラムカウンタの分岐先情報をロードしたい場
合は、同図では省略されている別の制御信号をアサート
し、情報選択部412にて作業用記憶部500からの読
み出し情報を選択し、カウンタ410にロードする。
【0077】実行対象のプロセッサアーキテクチャを選
択・変更する場合は、アーキテクチャ選択情報375を
更新することで直ちに変更が実行される。しかし、上記
したように、一の非ネイティブ命令から複数のネイティ
ブ命令の合成を行っている途中で、アーキテクチャ選択
情報375を切替えるのは望ましくない。切替え前後で
変換命令セットのコヒーレンシ(同一性)が保てなくな
るからである。従って、仮想プロセッサアーキテクチャ
の変更、即ちアーキテクチャ選択情報375の更新は、
命令合成作業の適切な境界で実行されなければならな
い。これを実現するのが、プロセッサアーキテクチャ選
択情報発生部370並びに合成制御部330に含まれる
論理回路である。これらは同時に、プロセッサアーキテ
クチャを選択・変更する際に要求される可能性のある、
コンテキスト切替えに関る手続き処理を実現する手段と
しても機能する。
【0078】プロセッサアーキテクチャ選択情報発生部
370はタイムカウンタ部385が出力するカウンタ上
位ビット情報383、並びに制御情報記憶部380が出
力するタスク優先度情報382、タスク・プロセッサア
ーキテクチャ対応情報384に基づき、アーキテクチャ
切替え時実行エントリ情報371、割込み時実行エント
リ情報372、割込み許可タスク信号373、アーキテ
クチャ切替え要求信号374、アーキテクチャ選択情報
375、現在エンディアン情報212等を出力する。
【0079】タイムカウンタ部385は、所謂フリーラ
ンニングカウンタで、適当なクロック信号381を分周
カウントし、分周に伴って変化するカウンタの上位幾ビ
ット分かを出力したものが、カウンタ上位ビット情報3
83である。カウンタ上位ビット情報383はプロセッ
サアーキテクチャを切替えるタイミングを決める元情報
として利用される。これは、タイムシェアリング(時分
割)手法を利用して、実行対象となる各プロセッサアー
キテクチャ毎に設定された優先順位情報を基にその優先
順位に従った実行時間割り当てを行い、タイムカウンタ
部385が発生するタイミングに合わせて実行対象のプ
ロセッサアーキテクチャを選択・変更することを狙って
いる。
【0080】図8に時分割手法によりプロセッサアーキ
テクチャ切替えを行う実施例のタイミングを示す。先ず
本実施例では、3つのタスク(タスク1〜3)が時分割
で擬似並列実行処理されていると仮定する。どのタスク
にどの程度の実行時間を割り当てるかを指示するのがタ
スク優先度情報382である。一方、どのタスクにどの
プロセッサアーキテクチャを割り当てるかを指示するの
がタスク・プロセッサアーキテクチャ対応情報384で
ある。タイムカウンタ部385が出力するカウンタ上位
ビット情報383、及びタスク優先度情報382に基づ
いて、該3つのタスク1〜3に対する選択信号が生成さ
れる。タスク1信号377、タスク2信号378、タス
ク3信号379は、図7には示されない、プロセッサア
ーキテクチャ選択情報発生部370内の信号で、それぞ
れタスク1〜3に対する選択信号である。なお、複数の
タスク選択信号が同時にアサートされることはない。タ
スク優先度情報382を再設定することで、該三の信号
に割り当てられる時間配分が変化する。このような機能
を実現する論理回路は容易に、かつ様々な構成が実施可
能であるので、ここではその詳細な実施例の説明は省略
する。
【0081】プロセッサアーキテクチャ切替え前後での
詳細な動作を説明するために、図8のタスク1からタス
ク2に切り替わる時点に注目し、その時間を拡大した図
で説明する。タスク1信号377、タスク2信号37
8、タスク3信号379の何れかが変化すると、アーキ
テクチャ切替え要求信号374がアサートされる。しか
しこの時点で実行中の命令合成作業(この例では命令5
3に関る)が直ちに中断されることはない。該命令合成
作業が完了し、アーキテクチャ切替え許可信号347が
アサートされ、その結果論理ゲート334から第一のア
サートパルスが出力されると、これを受けた命令エント
リ情報選択部332はアーキテクチャ切替え時実行エン
トリ情報371を選択し命令合成エントリ情報339に
出力する。この時アーキテクチャ切替え時実行エントリ
情報371は現在実行選択中のプロセッサアーキテクチ
ャAに対応した、アーキテクチャ切替え時に実行すべ
き、コンテキスト退避に関る作業のエントリ番地情報
(コンテキスト退避作業11)を保持しているので、命
令53の実行に引き続き、該作業11が即座に開始され
る。この作業の間、アーキテクチャ切替え許可信号34
7はアサートされない。
【0082】該コンテキスト退避作業11に含まれる最
後の処理を実行する段になると、アーキテクチャ切替え
許可信号347は再びアサートされ、その結果論理ゲー
ト334から第二のアサートパルスが出力され、これを
受けたプロセッサアーキテクチャ選択情報発生部370
はアーキテクチャ選択情報375をプロセッサアーキテ
クチャAからプロセッサアーキテクチャBに切替えると
共に、アーキテクチャ切替え時実行エントリ情報371
には、新たに選択したプロセッサアーキテクチャBのた
めのアーキテクチャ切替え時に実行すべき、コンテキス
ト復帰に関る作業のエントリ番地情報(コンテキスト復
帰作業12)を出力する。ただし、命令エントリ情報選
択部332での選択はアーキテクチャ切替え時実行エン
トリ情報371のまま変化しない。アーキテクチャ選択
情報375が変わることで、命令合成情報記憶部340
を参照する際の基準となるエントリ番地がプロセッサア
ーキテクチャA用のそれからプロセッサアーキテクチャ
B用のそれに変わり、先ず最初の作業としてプロセッサ
アーキテクチャBのためのコンテキスト復帰作業12が
開始される。この作業の間、アーキテクチャ切替え許可
信号347はアサートされない。コンテキスト復帰作業
12の実行に伴い、プログラムカウンタ400にはプロ
セッサアーキテクチャB用の値がリロードされるので、
これを受けて、プリフェッチ命令緩衝記憶部200上の
命令の破棄し、該新しいプログラムカウンタ400の値
を基にして、命令用1次キャッシュメモリ5200から
非ネイティブ命令をプリフェッチ命令緩衝記憶部200
に再取得するという作業が開始される。
【0083】該コンテキスト退避作業12に含まれる最
後の処理を実行する段になると、アーキテクチャ切替え
許可信号347はまたもアサートされ、その結果論理ゲ
ート334から第三のアサートパルスが出力され、これ
を受けたプロセッサアーキテクチャ選択情報発生部37
0は、アーキテクチャ切替え時実行エントリ情報371
には、プロセッサアーキテクチャBのためのアーキテク
チャ切替え時に実行すべき、コンテキスト退避に関る作
業のエントリ番地情報を出力する。また同時に、命令エ
ントリ情報選択部332は演算エントリ情報312ない
しメモリアクセスエントリ情報314を選択し命令合成
エントリ情報339に出力する。こうして、プロセッサ
アーキテクチャB用の命令(命令71、72、...、
実行ユニット2000にとっては非ネイティブな命令)
をネイティブ命令へ変換し実行するという通常の作業が
再開される。
【0084】上記のコンテキストの退避・復帰に必要な
手続きは全てネイティブ命令プログラムとして命令合成
情報記憶部340に予め準備されており、コンテキスト
の退避・復帰に関る作業の実行中は、該プログラムを単
に実行しているだけであって、何らかの非ネイティブ命
令を外部から取得しこれを命令合成している訳ではな
い。ただし、そのような動作の違いを実現する為に、特
別なモード切替機能を設け、該モード切替によって命令
変換・合成部300の振る舞いを切替えているのでな
く、命令変換・合成部300は常に通常の命令合成作業
を行っている時と全く同じ状態で動作しており、単にコ
ンテキストの退避・復帰作業中には次命令取込み許可信
号346がアサートされないようにプログラムされてい
るだけであることに注意したい。
【0085】図8における、上述したタスク1からタス
ク2に切り替わる時点以外のタスク切替え個所での切替
え処理も、上述した手順と全く同様に実行される。ただ
し、図8の例ではタスク3からタスク1に切替わる際、
仮想プロセッサアーキテクチャの切替えが伴わないこと
に注意したい。(アーキテクチャAからアーキテクチャ
Aへの切替え。)このような場合、コンテキストの退避
・復帰作業は必須ではない(純粋なソフトウエア処理で
対応できる)が、本プロセッサが備えるタスク切替えに
伴う自動コンテキスト退避・復帰機能は利用した方が実
行速度性能の点で有利である。更に、システムアプリケ
ーションによっては、アーキテクチャ切替え時において
さえも必ずしもコンテキスト退避・復帰を必要としない
場合も有ろう。(特に、一度プロセッサアーキテクチャ
を切替えた後はシステムリセットをかけるまでは2度と
切替えない場合など。)そのような場合は、命令合成情
報記憶部340上の命令合成情報から、アーキテクチャ
切替え時に伴う一連のコンテキスト退避・復帰に関る手
続き処理指定情報を削除すれば良い。
【0086】プロセッサは一般に、外部割込み処理を始
めとする各種の例外処理機能を備えている。本発明のア
ーキテクチャ切替え・再構成対応プロセッサの場合も、
この機能への対応が要求される。プロセッサアーキテク
チャが異なると例外処理に関る仕様も異なるのが普通で
ある。即ち、例外要因やその種類、数、例外処理ベクタ
テーブルのメモリ空間上での配置位置や、その構造体の
構造が異なるのである。プロセッサアーキテクチャ変換
部はこのような例外処理仕様の差異も吸収し、仮想的に
実現する機能を提供しなければならない。例外処理に関
る処理はその殆どが、プロセッサ自身の持つハードウエ
アステートマシン(順序回路)で制御された手続き型処
理であり、メモリからその手順を示す命令を取得し実行
しているわけではない。本発明のアーキテクチャ切替え
・再構成対応プロセッサが提供する仮想プロセッサにお
いても、例外処理は該仮想プロセッサ用命令(実行ユニ
ット2000にとっては非ネイティブ命令)に依らず実
現されなければならない。
【0087】そのような要求に応える方法が、前記した
仮想プロセッサアーキテクチャ切替えに伴うコンテキス
ト退避・復帰処理で利用した手法である。即ち、各仮想
プロセッサの例外処理に関る手続き型処理は、全て命令
合成情報記憶部340上の命令合成情報として準備して
おき、例外処理実行の要求があった場合、通常の非ネイ
ティブ命令合成作業に代え、該例外処理に関る命令合成
情報を読み出し実行するのである。図7の実施例に記さ
れた論理ゲート335周辺に注目すると、論理ゲート3
34の出力がネゲート、即ちアーキテクチャ切替え処理
を実行していない時で、かつ内部割込み許可信号348
がアサートされ、割込み許可タスク信号373がアサー
トされている場合に限って、外部割込み要求信号103
0のアサートは命令エントリ情報選択部332に伝達さ
れるという論理になっている。そして、これを受けた命
令エントリ情報選択部332は割込み時実行エントリ情
報372を選択し、命令合成エントリ情報339に出力
して、これを命令合成情報記憶部340に伝達する。割
込み許可タスク信号373とは、どのタスクにおいて割
込みを許可するかを示した信号で、例えば図8の例で
は、タスク1を実行している時間だけ割込み実行を許可
しているので、タスク1信号377と同じ波形として割
込み許可タスク信号373が変化する。
【0088】図8の割込み処理前後の時点に注目し、そ
の時間を拡大した図で説明する。システムの外部デバイ
スによって外部割込み要求信号1030が任意の時点で
アサートされる。この例では説明を簡単にする為に、割
込み許可タスク信号373がアサートされている間に外
部割込み要求信号1030が発生したものとする。しか
しこの時点で実行中の命令合成作業(この例では命令3
3に関る)が直ちに中断されることはない。該命令合成
作業が完了し、内部割込み許可信号348がアサートさ
れ、その結果論理ゲート335から第一のアサートパル
ス(図には示されていない)が出力されると、これを受
けた命令エントリ情報選択部332は割込み時実行エン
トリ情報372を選択し命令合成エントリ情報339に
出力する。この時割込み時実行エントリ情報372は現
在実行選択中のプロセッサアーキテクチャAに対応し
た、割込み発生時に実行すべき一連の手続き型処理作
業、即ちコンテキスト退避13及び割込みベクタ取得1
4に関る作業のエントリ番地情報(コンテキスト退避作
業13)を保持しているので、命令33の実行に引き続
き、該作業13が即座に開始される。この作業の間、内
部割込み許可信号348はアサートされない。
【0089】該コンテキスト退避作業13に含まれる最
後の処理を実行すると、引続き命令合成情報記憶部34
0からは該割込みに対応する割込みベクタ取得作業14
(該割込みに対応するハンドラソフトウエアルーチンの
実行エントリ番地を、プロセッサアーキテクチャ毎に予
め定められたベクタテーブルから取得する作業)に関る
命令合成情報が読み出され、実行される。割込みベクタ
取得作業14の実行に伴い、プログラムカウンタ400
には取得された該割込みハンドラルーチン実行エントリ
番地がリロードされるので、これを受けて、プリフェッ
チ命令緩衝記憶部200上の命令の破棄し、新しいプロ
グラムカウンタ400の値を基にして、命令用1次キャ
ッシュメモリ5200から該割込みハンドラルーチンに
対応する非ネイティブ命令をプリフェッチ命令緩衝記憶
部200に再取得するという作業が開始される。この作
業の間も内部割込み許可信号348はアサートされな
い。
【0090】該割込みベクタ取得作業14に含まれる最
後の処理を実行する段になると、内部割込み許可信号3
48はアサートされ、その結果論理ゲート335から第
二のアサートパルス(図には示されていない)が出力さ
れると、これを受けてた命令エントリ情報選択部332
は演算エントリ情報312ないしメモリアクセスエント
リ情報314を選択し命令合成エントリ情報339に出
力する。こうして、プロセッサアーキテクチャA用の命
令(実行ユニット2000にとっては非ネイティブな命
令)で記述された割込みハンドラプログラム(命令9
1、92、...)が、ネイティブ命令への変換され実
行ユニット2000で実行されるという通常の形式で実
行される。システムの構成によってそのタイミングは多
少異なるものの、割込みハンドラルーチンの実行に伴っ
て、外部割込み要求信号1030はネゲートされる。
【0091】割込みハンドラルーチンの実行中は、これ
も仮想プロセッサアーキテクチャによって仕様は様々で
あるが、必要な場合は内部割込み許可信号348(即
ち、割込み許可信号48)を出して、他の割込み要因の
為の多重割込み処理を許可することも可能である。ただ
し、割込みハンドラルーチンの実行中に不用意に内部割
込み許可信号348を出すと、該割込み要因自身によっ
て2重に割込みを受け付けてしまう場合が有ることに注
意しなければならない。これはアーキテクチャ変換機能
を備えた本発明の固有の問題ではなく、一般的なプロセ
ッサで起こり得る問題である。通常はこの問題を解決す
るためには、割込みレベルなどの概念を導入し、実行中
の割込み処理と同じレベル以下の優先度を持った割込み
は受け付けないようにする。同様の手法は本発明の実施
例においても導入可能である。即ち、外部割込み要求信
号1030は複数ビット幅のエンコードされた優先順位
を持った割込み要求情報とし、論理ゲート335に代え
て所定のビット幅のバイナリ比較器を設置し、これで外
部からの割込み要求レベルと現在受付中の割込みレベル
を比較し、外部からの割込み要求レベルがより高い場合
のみ新たに割込み受付けを示すアサートパルスを命令エ
ントリ情報選択部332に対して送付するようにするの
である。また別の実施例として、外部割込み要求信号1
030自身の本数を複数にする形態(ただし優先順位で
エンコードせずに、割り込み要因の数だけの外部割込み
要求信号を持つ形態)も有りうる。この場合は、やはり
論理ゲート335周辺を変更して、割込み処理実行中の
外部割込み要求信号1030線に関しては、例え内部割
込み許可信号348がアサートされても、該外部割込み
要求信号1030線によって多重に割込みを許可するこ
とが無い論理にする。
【0092】割込みハンドラルーチンの実行が完了する
と、一般的なプロセッサでは、割込みルーチンから割込
み前のプログラムに復帰するための専用命令を実行する
ことで、該割込み発生によって実行したコンテキスト退
避13に対応するコンテキスト復帰処理15を行う。こ
の処理は該専用命令の実行によって遂行されるものであ
るから、何らその他の通常の命令合成作業と変わらない
手順で、該専用命令を合成・実行することができる。該
専用命令が通常の非ネイティブ命令と異なるのは、それ
が割込み処理復帰用のコンテキスト復帰処理15である
事と、その実行の間は内部割込み許可信号348がアサ
ートされない事程度である。これらは全て、命令合成情
報記憶部340上の命令合成指示情報として指定する事
が可能である。こうして、割込み処理からの復帰用のコ
ンテキスト復帰処理15が完了すると引続き、該割込み
受け付け前の通常処理命令34から、通常の命令合成・
実行が再開される。
【0093】なお、任意の割込み要求を受付け、これに
対応する処理を実行している間は、プロセッサアーキテ
クチャは切替わるべきではない。このような要請から、
図7に示す実施例では、プロセッサアーキテクチャ選択
情報発生部370が論理ゲート335の振る舞いを見
て、任意の割込み処理が実行されている事を検知する
と、カウンタ制御信号387をアサートし、これによっ
てタイムカウンタ385の動作を一時停止させておく機
能が搭載されている。
【0094】図8の例では説明を簡単にする為、外部割
込み要求信号1030は割込み許可タスク信号373が
アサートされている間に発生したと仮定したが、実際に
は割込み許可タスク信号373がネゲートされている間
に発生する可能性も十分にある。図7に示す実施例で
は、論理ゲート335周辺の論理から、割込み許可タス
ク信号373がアサートされるまで該外部割込み要求は
保留され、タスク及びプロセッサアーキテクチャが切替
わって後に、初めて該外部割込み要求が受理される。し
かし、割込み要求に対しては即座にこれを受理し、対応
するハンドラルーチンを大きな遅延なく実行しなければ
ならないシステムアプリケーションも有ろう。このよう
な要請に対しては、先ず割込み許可タスク信号373を
廃止し、代わりに内部割込み処理をどのプロセッサアー
キテクチャで実行するかを定める情報(仮にこれを割込
み実行アーキテクチャ情報と呼ぶ)を設け、外部割込み
要求信号1030のアサート時に内部割込み許可信号3
48がアサートされた場合は、該割込み実行アーキテク
チャ情報とアーキテクチャ選択情報375を比較し、も
し両者が異なっていたら、前記アーキテクチャ切替えに
関るコンテキスト保存・復帰作業を行い、続いて前記割
込み処理に関る割込みベクタ取得処理、割込みハンドラ
ルーチン実行を順次行った後に、再度前記アーキテクチ
ャ切替えに関るコンテキスト保存・復帰作業を行い、割
込み前の通常のプログラム実行状態に復帰することが可
能となる。前記アーキテクチャ情報比較でもし両者が一
致していた場合は、前記アーキテクチャ切替えに関るコ
ンテキスト保存・復帰作業は省略して、割込み許可タス
ク信号373を使った通常の割込み処理と同様の手順で
割込み処理をしても良いし、前記アーキテクチャ情報比
較で両者が異なっていた場合と全く同じ手順を実行して
も良い。
【0095】以上の実施例の説明では、命令合成に関る
コヒーレンシが保てるようにする配慮から、適切な命令
合成作業の処理境界でのみプロセッサアーキテクチャ切
替えや割込み処理を挿入する手段として、各実行許可信
号(347や348)に基づき、現在実行中の命令合成
作業の適切な処理境界に同期して、アーキテクチャ切替
え及び割込み処理を開始する方法を示した。しかし、そ
の他の実施例として、任意のタイミングで発生したアー
キテクチャ切替えまたは割込み処理要求を、命令変換作
業とは非同期に受理し、該受理時点で処理中の命令合成
作業は即時中断するとともに、該命令変換作業によって
既に合成された一部のネイティブ命令を破棄するという
手法も考えられる。
【0096】この場合の注意点として、一の非ネイティ
ブ命令に関り合成される全てのネイティブ命令の合成が
完了した命令についてのみ、実行ユニットがこれを取得
・実行できることを保証する手段が必要となる。その第
一の実施例は、合成後命令緩衝記憶部600に蓄積され
ている命令は必ず一の非ネイティブ命令に関る全てのネ
イティブ命令の合成が完了したもののみである事とし、
これを保証するため、一の非ネイティブ命令に関るネイ
ティブ命令の合成過程で途中合成または部分的に合成さ
れたネイティブ命令は合成後命令緩衝記憶部600とは
異なる一時記憶域に格納し、該非ネイティブ命令に関る
全てのネイティブ命令の合成が完了した後に、これら全
ての合成されたネイティブ命令を合成後命令緩衝記憶部
600に一括転送する方法である。第二の実施例は、命
令合成部350で合成された命令は、たとえこれが途中
合成・部分合成命令であっても、直ちに合成後命令緩衝
記憶部600に格納するかわりに、合成後命令緩衝記憶
部600に蓄積される個々のネイティブ命令にはそれが
有効か無効かを示す情報フラグを持たせ、無効なネイテ
ィブ命令については実行ユニット2000がこれを所得
できないようにした上で、命令合成部350が一の非ネ
イティブ命令に関る全てのネイティブ命令の合成を完了
した後に、これに関るネイティブ命令群の全ての有効フ
ラグをセットし、実行ユニット2000による取得を許
可する方法である。
【0097】プロセッサアーキテクチャ切替えや割込み
例外処理などで必要となる手続き型処理を実現する為
の、別の実施例も考えられる。即ち、上述した実施例の
説明では、命令合成情報記憶部340の記憶手段(より
具体的にはメモリ類)に予め格納されたネイティブ命令
合成情報列を取得し、これを基にネイティブ命令を合成
する事によって、プロセッサアーキテクチャ切替えや割
込み例外処理などで必要となる手続き型処理を遂行した
が、該別の実施例では、命令合成情報記憶部340とは
独立した該手続き型処理専用の命令記憶手段を別途用意
し、ここに予め格納したネイティブまたは非ネイティブ
な命令列によって、該手続き型処理を実行する手法が考
えられる。何れの実施例にも共通の概念は、必要な手続
き型処理を指示するための(命令自身または命令合成の
為の情報の)記憶手段を備え、これによって得られる手
続き処理命令列(プログラム)を実行ユニット2000
が実行するすることで、目的の手続き型処理を実現する
と言うことである。
【0098】これまで、割込み処理に関しては、命令合
成情報記憶部340から読み出される命令合成情報に基
づいて合成した実行ユニット2000用のネイティブソ
フトウエア命令の実行によって必要な手続き処理を行う
内部割込み処理について説明を行ったが、命令合成処理
を使わずに、一般のプロセッサ同様、必要な処理を全て
ハードウエア順序回路で制御する方法も考えられる。し
かし割込み処理に求められる手続き型処理の定義の柔軟
さや定義の再構成の容易さ、また該手続き型処理専用の
ハードウエアを最小で済ませられる点などを考えると、
命令合成処理を利用した割込み処理実装の方が優れてい
る。
【0099】プロセッサアーキテクチャ切替えに関して
は、これまでの実施例の説明では、クロック信号381
を適当に分周して作ったタイミングを基にした時分割法
によるものと仮定して説明してきた。しかし、プロセッ
サアーキテクチャ切替えは、この他の様々な要因によっ
てなす事も可能である。例えばプロセッサアーキテクチ
ャ切替えを促す専用の命令を定義し、これの実行によっ
てプロセッサアーキテクチャ切替えを開始する方法であ
る。前記したようにプロセッサアーキテクチャ切替えに
伴うコンテキスト退避・復帰などの手続き処理を命令合
成作業の一環としてネイティブ命令の実行によって行う
場合、この専用の命令によりプロセッサアーキテクチャ
を切替える方法は、特に実現が容易である。与えられた
命令セットで未定義な適当な命令バイナリ語を、アーキ
テクチャ切替え命令と定め、該命令バイナリが入力され
た場合は命令変換・合成部300にて、プロセッサアー
キテクチャ切替えの手続き処理を開始させれば良いので
ある。
【0100】その他、プロセッサアーキテクチャ外部選
択情報1040というプロセッサアーキテクチャ変換部
100外から伝達される入力情報によって直接プロセッ
サアーキテクチャを切替えることも可能である。この情
報を直接、アーキテクチャ選択情報375として使うこ
とは可能ではあるが、この方法は前述した通り、プロセ
ッサアーキテクチャ切替えを頻繁に行うシステムにおい
ては大変危険である。それは命令合成作業と非同期で切
替える上に、コンテキストの保存・復帰を伴わないから
である。従って、一般的な環境では、プロセッサアーキ
テクチャ外部選択情報1040で直接プロセッサアーキ
テクチャを切替える場合であっても、該プロセッサアー
キテクチャ外部選択情報1040は先ず一旦プロセッサ
アーキテクチャ選択情報発生部370に入力し、ここ
で、命令合成作業に同期させ、適切なタイミングにおい
てのみ切替えを実施するようにするのである。
【0101】こうすることで、プロセッサアーキテクチ
ャ外部選択情報1040は、プロセッサアーキテクチャ
変換部100の外部端子として、ユーザーがスイッチ等
を使って直接選択することも可能であるが、これにメモ
リアクセス領域判定手段(より具体的にはメモリ管理ユ
ニット)を接続することで、非ネイティブ命令取得の際
にアクセスした番地情報を基に、プロセッサアーキテク
チャを切替えてしまうと言う、他の実施例も考えられ
る。
【0102】図9はこの目的で用いることが出来る簡易
なメモリ管理ユニットの実施例である。プロセッサアー
キテクチャ変換部100が出力する命令用アドレスバス
5210の上位mビット情報は、プロセッサアーキテク
チャ選択部5600の中にあるプログラム配置アドレス
情報記憶部5610が保持する複数のプログラム配置ア
ドレス情報と比較され、もし一致する場合は比較器56
31〜5633の各出力信号がアサートされる。この情
報を基に符号化部5620にて、選択するプロセッサア
ーキテクチャの選択コードを決定し、プロセッサアーキ
テクチャ外部選択情報1040とする。なお、本実施例
では命令用キャッシュメモリとデータ用キャッシュメモ
リが分離されているので直接命令用アドレスバス521
0のみを評価できたが、もし命令とデータが混在する共
有型メモリであった場合は、実行ユニットが出力する、
命令アクセスとデータアクセスを識別する信号を基に、
命令アクセスバスサイクルのアドレス情報のみを評価す
るように制限をかける必要がある。こうして、プログラ
ム配置アドレス情報記憶部5610に予め設定されたプ
ログラム配置アドレス情報と命令用アドレスバス521
0が一致した場合、対応するプロセッサアーキテクチャ
が選択される。ただし、この手法を用いる場合、プロセ
ッサアーキテクチャ切替えに伴うコンテキスト保存・復
帰作業が終了した後、プロセッサアーキテクチャを切替
える要因となった、該命令取得バスサイクルを再発行さ
せる等の新たな処理が必要である。なお、上記でアドレ
ス比較に供されたアドレス上位のビット幅mはプロセッ
サアーキテクチャ毎に可変設定しても良い。また、プロ
グラム配置アドレス情報記憶部5610の複数の異なる
アドレス情報に同一のプロセッサアーキテクチャ選択情
報を設定して、不連続の任意のアドレス空間に渡って同
一のプロセッサアーキテクチャを割り当てしても良い。
【0103】図9に示す他のユニットの内、プロセッサ
・ハードウエアアクセス検出部5700は、複数プロセ
ッサアーキテクチャ向けソフトウエアの命令合成・実行
には直接関りのないユニットである。このプロセッサ・
ハードウエアアクセス検出部5700の目的は、任意の
プロセッサアーキテクチャが、特定のハードウエア資源
領域をアクセスしたことを検出することである。ハード
ウエア配置アドレス情報記憶部5710とアドレス比較
器5731〜5733の動作は上記のプロセッサアーキ
テクチャ選択部5600内のアドレス情報記憶部561
0とアドレス比較器5631〜5633と同様である。
ハードウエアアクセス検出信号5750を外部割込み要
求信号1030に接続することで、ハードウエア配置ア
ドレス情報記憶部5710に予め設定した何れかのハー
ドウエア配置アドレス情報とデータ用アドレスバス20
10・5310が一致した場合、指定のハードウエアが
アクセスされたと判断され、これを割込み情報としてプ
ロセッサに知らせ、これを受けたプロセッサは該割込み
ハンドラソフトウエアで適切な処理を行うことが可能と
なる。また、この際のアーキテクチャ選択情報375を
調べ、予め指定した特定のプロセッサアーキテクチャの
アクセスのみをその処理の対象にすることもできる。更
に、ハードウエアアクセス検出信号5750を外部割込
み要求信号1030のみならずプロセッサアーキテクチ
ャ外部選択情報1040にも接続することで、該ハード
ウエアアクセスに対応するソフトウエア処理を特定のプ
ロセッサアーキテクチャで実行させることも可能であ
る。なお、アドレス比較に供されるアドレス上位のビッ
ト幅kはハードウエア配置アドレス情報毎に可変設定し
ても良い。
【0104】図9に示すもうひとつの他の要素は、簡易
メモリ管理ユニット部5800である。本ユニットも、
複数プロセッサアーキテクチャ向けソフトウエアの命令
合成・実行には直接関りのないユニットである。本ユニ
ットの目的も、一般的なプロセッサが備えるメモリ管理
ユニットと同様な、論理アドレス空間と物理アドレス空
間とのマッピングであるが、複数のプロセッサアーキテ
クチャに対応するための変更が加えられている。即ち、
アドレスマッピングを定めたアドレス変換参照テーブル
5810を参照する際のアドレス情報として、アドレス
バス5210または5310から得た上位nビットを直
接使うのでなく、番地生成部5820にて該上位nビッ
ト情報にアーキテクチャ選択情報375を合成するので
ある。こうすることで、プロセッサアーキテクチャ毎に
固有のアドレスマッピングを定義することが可能とな
る。また、アーキテクチャ選択情報375に代えてタス
ク選択情報を用いることで、タスク毎の固有のアドレス
マッピングを定義することも可能となる。なお、アドレ
ス参照に供されるアドレス上位のビット幅nは適当に可
変設定しても良い。図1に示した実施例では命令用とデ
ータ用に分離した1次キャッシュの構成を採った為、ア
ドレスバスがそれぞれ命令用とデータ用に分かれてい
る。このような場合、メモリ管理ユニット部5800は
命令用とデータ用のそれぞれのアドレスバスに個別に設
置(即ち合計2個設置)するのが一般的である。
【0105】図1に示されたユニットの内の、バイト並
び換え部210、220、及び図4のバイト再配列部3
54の目的は、仮想プロセッサと実行ユニット2000
の間で、アドレス空間上のバイト並び順に関るエンディ
アン型が異なる場合、これを補正することにある。ただ
し、データ用バイト並び換え部220に関しては、これ
に加え、データサイズとデータ配置番地に対応した適切
なバイトデータをメモリのデータバスから選択し、実行
ユニットのデータバス2020の所定のビット位置に接
続するという別の目的も持っている。従って、実行対象
の仮想プロセッサが何れも実行ユニット2000と同じ
エンディアン型であった場合(即ちエンディアン切替え
が不要の場合)は、命令用バイト並び換え部210及び
バイト再配列部354は省略可能であるが、データ用バ
イト並び換え部220は省略出来ない。(ただしデータ
用バイト並び換え部220の内、エンディアン型に依存
する部分は、一方のエンディアン型のみ省略可能であ
る。)
【0106】図10はデータ用バイト並び換え部220
において選択し得るバイト並び換えのパターンを示して
いる。命令やオペランドデータのデータバス幅を32ビ
ットと仮定し、それを8ビット毎に四の区分(ポート)
に分け、並び換え部前後のデータバスの四の8ビットデ
ータポート間で所定の順序で入れ替えを行う。データ用
バイト並び換え部220が制御するデータアクセスに関
しては、現在エンディアン情報212に加え、実行する
バスサイクルに関して実行ユニット2000が出力する
データサイズ2015情報(これはデータのビット長を
示している)、及び該バスサイクルのオペランドデータ
が配置される番地(の最下位2ビット情報、即ち最寄の
4の整数倍番地に対するオフセット値)に依存して適切
なバイト並び換えパターンが選択・切替えられなければ
ならない。なお、現在エンディアン情報212は、アー
キテクチャ選択情報375に同期して、プロセッサアー
キテクチャ選択情報発生部370から出力され、データ
サイズ2015情報はデータ用アドレスバス2010の
変化に同期して、実行ユニット2000から出力され
る。
【0107】図10の表は、仮想プロセッサがビッグエ
ンディアン型かリトルエンディアン型か、また扱うデー
タサイズが何ビットか、それがどの番地に配置されるか
に依存して、データバス5320側とデータバス202
0側の各8ビットポート間がどの様に接続されるのかを
示している。ここでの考え方の第一の基本は、エンディ
アン型に関らず、データバス2020側(即ち実行ユニ
ット2000側)では、8ビットデータはバスのビット
7〜0を、16ビットデータはバスのビット15〜0
を、32ビットデータはバスのビット31〜0を使うと
言うこと、第二の基本は、データバス5320側(即ち
メモリ側)では、番地の割付はエンディアン型に依存
し、ビッグエンディアン型ではデータの上位桁ビット側
に小さい番地を割り付け、リトルエンディアン型ではデ
ータの下位桁ビット側に小さい番地を割り付けると言う
ことである。16ビットや32ビットデータのアクセス
の際、データ配置番地の指定によっては、32ビットバ
ス境界をまたいでアクセスする場合も有り得るが、この
ような場合にはバスサイクルが2回に分割され、更にビ
ッグエンディアン型とリトルエンディアン型では第一及
び第二のバスサイクルで転送されるデータの上位桁ビッ
ト、下位桁ビットの順序が逆になることに注意したい。
図10はデータバス幅が32ビットであることを前提に
しているが、もしこれが16ビットや64ビットであっ
た場合でも、上記の二の基本の考え方を適用すること
で、正しく対応することが出来るので、何れのビット数
の場合であっても本発明の実施例の範囲内である。
【0108】図11は命令用バイト並び換え部210及
びバイト再配列部354における選択し得るバイト並び
換えのパターンを示している。バイト並び換えの制御に
はデータサイズ2015情報に代わって命令語サイズ情
報または拡張語サイズ情報が利用される。命令用バイト
並び換え部210が命令語サイズ情報を参照し、バイト
再配列部354が拡張語サイズ情報を参照する。命令語
サイズ情報は、図7などには示されていないが、アーキ
テクチャ選択情報375等に同期して、プロセッサアー
キテクチャ選択情報発生部370等から出力される情報
で、プロセッサアーキテクチャに依存して決まる、該プ
ロセッサアーキテクチャにおける命令の基本語長情報で
ある。従って命令用バイト並び換え部210の制御に関
しては、命令取得毎に変化するものではない。拡張語サ
イズ情報は、図3などには示されていないが、命令グル
ープ判定部310等から出力される情報で、与えられた
命令を変換・合成・実行するために行う命令グループ判
定処理の結果として判断される値で、該命令に含まれる
拡張語の長さを示す情報である。従ってバイト再配列部
354の制御に関しては、命令取得毎に変化する可能性
がある。
【0109】図11の表は、仮想プロセッサがビッグエ
ンディアン型かリトルエンディアン型か、扱う語長が何
ビットか、更にメモリ上に格納される該仮想プロセッサ
プログラムの命令語列が該メモリ上でビッグエンディア
ン型順序で格納されるかリトルエンディアン型順序で格
納されるかに依存して、該バイト並び換え部・バイト再
配列部の入力ポート側と出力ポート側の各8ビットポー
ト間がどの様に接続されるのかを示している。命令用バ
イト並び換え部210、バイト再配列部354における
バイト並び換え方法は、データ用バイト並び換え部22
0におけるそれと異なっている点に注意されたい。ま
ず、命令用バイト並び換え部210、バイト再配列部3
54ではメモリに直接接続されている訳ではないので、
命令語のメモリ上での絶対的な配置アドレス(即ち、4
の整数倍番地に対するオフセット値)という概念は適用
されない。加えて、プリフェッチ命令緩衝記憶部200
や情報選択部351から命令語列を取得する際には、こ
れからバイト並び換えを行おうとする命令語列の先頭の
命令語が常に入力ポートの一端に整列されている(ビッ
グエンディアン型では最上位桁ビット側に、リトルエン
ディアン型では最下位桁ビット側に、それぞれ整列され
る)ことを前提としている。これは、命令語列を正しく
解釈し実行する為には必要な前提であるが、プログラム
カウンタ400が生成する命令アドレス情報402に基
づいてプリフェッチ命令緩衝記憶部200上の適切なバ
イト境界から命令語列を取得する機構が、この前提を保
証している。
【0110】更に、図11の表で特に注意しなければな
らないのは、バイト並び換え方法が、メモリ上に命令語
列を格納する際のエンディアン型に依存する点である。
例えばリトルエンディアン型の仮想プロセッサ用プログ
ラムを入出力周辺機器(例えばハードディスク等)から
読み出し、命令・データ記憶部1000(主記憶)に格
納する際、これを制御する時のプロセッサアーキテクチ
ャがビッグエンディアン型であった場合などは、該リト
ルエンディアン型命令語列をビッグエンディアン型アド
レス空間の小さい番地から順に格納すると、本来メモリ
データバスの下位桁ビット側に格納されるべきバイト命
令語が、上位桁ビット側に格納されてしまうので、これ
を補正する必要があるのである。現実的なオペレーショ
ンシステムソフトウエアの実装を考えると、例えマルチ
仮想プロセッサのシステムにおいても、プログラムの入
出力に関るタスクは常に一定のオペレーションシステム
の一定のデバイスドライバ(即ち、一定のプロセッサア
ーキテクチャ)を用いる方が望ましく、その結果、主記
憶にロード(格納)されるプログラムのエンディアン型
に関らず一定のエンディアン順序でプログラムがロード
されることになる。こうして、ソフトウエア、ハードウ
エアの実装上、図11の表の命令語列の格納順序につい
ては、何れか一方のみを実装すれば良いこととなる。し
かし、もし仮想プロセッサのプログラムを主記憶にロー
ドする際に、該仮想プロセッサのエンディアン型に合わ
せた適切な順序で命令語バイト列をロードする手段を設
置できるならば、図11の表から、もはや命令用バイト
並び換え部210、バイト再配列部354は省略するこ
とが可能であることが判る。(エンディアン型が常に一
致しているから、命令語のバイト列を並び替える必要が
無い。)前記の、現実的なオペレーションシステムの実
装法で、常に一定のプロセッサアーキテクチャのデバイ
スドライバでプログラムを入出力する場合においても、
例えばプログラムのファイルの属性情報等から、該プロ
グラムがどちらのエンディアン型を想定しているかが事
前に判定できれば、それに合わせた適切な順序でプログ
ラムを主記憶にロードすることも可能となり、命令用バ
イト並び換え部210、バイト再配列部354を省略す
ることも可能であろう。
【0111】以下は上述した実施例の説明に対する補足
であって、本発明に関る、特にこれまで説明されてな
い、その他の実施例について触れている。
【0112】実行対象のプロセッサアーキテクチャ毎
(ないしはタスク毎)に固有の全てのコンテキスト情報
(内部情報)は、プロセッサアーキテクチャ(ないしは
タスク)切替えの際に作業用記憶部500等に一時的に
退避しても良いが、特にプログラムカウンタ400、仮
想フラグレジスタ2720などの固有のハードウエアに
直結しているレジスタのコンテキスト情報は、実行対象
のプロセッサアーキテクチャ(ないしはタスク)の数と
同数の物理レジスタを設けて、これらレジスタを切替え
ても良い。必要なことは、プロセッサアーキテクチャ毎
(ないしはタスク毎)の固有のコンテキスト情報を一時
退避するための手段をアーキテクチャ切替え・再構成対
応プロセッサ5000の内外部に設けることである。
【0113】作業用記憶部500をプロセッサアーキテ
クチャ(またはタスク)毎のコンテキスト情報の格納手
段として利用する考えを拡張すると、実行ユニット20
00が備える汎用レジスタ(レジスタファイル250
0)に代わって、作業用記憶部500上に確保した特定
の領域を、特定なプロセッサアーキテクチャの為の汎用
レジスタの実体として利用する方法も考えられる。この
方法を使うことで、プロセッサアーキテクチャ(または
タスク)の切替えに伴うコンテキスト情報の退避・復帰
作業を軽減させる効果が得られる上に、実行ユニット2
000が備える汎用レジスタの数が該プロセッサアーキ
テクチャが期待する汎用レジスタの数に満たない場合に
これを補填する事も可能となる。
【0114】これまで図1などの実施例の説明におい
て、実行ユニット2000が命令を取得するバスとオペ
ランドデータを入出力するバスは分離された、所謂ハー
バードバスアーキテクチャを前提にしてきた。これは、
1次キャッシュメモリとして命令、データ専用型のキャ
ッシュメモリを前提にしていたことに起因する。もし、
実行ユニット2000が命令を取得するバスがオペラン
ドデータを入出力するバスと共通の、所謂ユニファイド
バスアーキテクチャである場合(即ち、キャッシュメモ
リを設置せずにプロセッサアーキテクチャ変換部100
を命令・データ記憶部1000に直結する場合や、命令
・データ共有型の1次キャッシュメモリを採用する場
合)は、命令用バスとデータ用バスを統合するマルチプ
レクサをデータバスとアドレスバスに個別に設置し、既
定では命令用バスを選択し、オペランドアクセス要求が
発生した場合のみデータ用バスを選択する機能を搭載す
ることで対応可能である。
【0115】これまで図1などの実施例の説明におい
て、本発明のアーキテクチャ切替え・再構成対応プロセ
ッサ5000の中心的部分であるプロセッサアーキテク
チャ変換部100は、実行速度性能向上を目的として、
これに接続される命令・データ記憶部1000(通常の
システムにおいてはこれは主記憶等に対応する)との間
に1次・2次のキャッシュメモリを挿入する事を前提に
してきた。しかし、キャッシュメモリを廃しプロセッサ
アーキテクチャ変換部100を命令・データ記憶部10
00に直接接続する応用形態も考えられる。また、命令
・データ共有型2次キャッシュメモリのみを廃し、命
令、データ各専用の1次キャッシュメモリを残す形態、
命令・データ共有型1次キャッシュメモリのみ残す形態
等の様々な応用形態が考えられるが、これらの形態であ
っても本発明を応用した実施例の範囲内である。
【0116】パイプライン手法を使った設計は今日のプ
ロセッサ設計時の常套的技術であるから、上述の本発明
に関る様々な実施例の説明ではパイプラインに関する説
明を省略してある。パイプラインを何段で構成するか、
何処に各パイプライン段を区切るためのレジスタを設置
するかは、製品に要求される最大動作周波数や製品価格
等の営業的な要請を考慮して決められるものであり、本
発明の主旨には関らないから、どのようなパイプライン
構成を採った場合であっても、本発明の実施例の範囲内
である。
【0117】本発明によるアーキテクチャ切替え・再構
成対応プロセッサ5000は、汎用プロセッサに一般的
に使われる実行ユニット2000と命令・データ記憶手
段(システムの主記憶である命令・データ記憶部100
0、またはキャッシュメモリ5100、5200、53
00)の間にプロセッサアーキテクチャ変換部100を
挿入接続することで、実行ユニット2000が本来実行
不可能な非ネイティブな命令セットのプログラムの実行
をも可能にした物である。従って、プロセッサアーキテ
クチャ変換部100を実行ユニット2000やこれら命
令・データ記憶手段とは個別の集積回路として形成し、
これらをプリント基板上で結線するという実施形態も考
えられるが、この形態は各集積回路間の配線量が膨大と
なり、集積度や経済性の点で劣る上、動作速度性能も低
下してしまう。むしろプロセッサアーキテクチャ変換部
100を含む全てのユニット、または命令・データ記憶
部1000(主記憶メモリ)等を除いた主要なユニット
(各種キャッシュメモリ等を含む)を、積極的にワンチ
ップ(モノリシック)へ集積すべきであろう。図9に示
したメモリ管理ユニット部(5600、5700、58
00)などのオプションユニットもこれと同様である。
【0118】本発明によるアーキテクチャ切替え・再構
成対応プロセッサ5000は特殊な半導体プロセスを要
求しない論理回路で実施可能あるから、本アーキテクチ
ャ切替え・再構成対応プロセッサ5000の一部または
全部の論理回路を、論理再構成可能な論理素子(FPG
A、フィールド・プログラマブル・ゲート・アレイ等)
で構成することも可能であるが、こうした場合も本発明
を実施する為に用いる回路素子(言わば材料)が変わっ
ただけであるから、本発明の実施例の範囲内である。
【0119】
【発明の効果】以上説明したように本発明のアーキテク
チャ切替え・再構成対応プロセッサは、プロセッサアー
キテクチャ変換に必要な諸々の情報を、その内部の比較
的小さな容量の記憶手段上に集約的に用意すれば良いた
め、変換の対象とする仮想プロセッサアーキテクチャを
容易に追加したり再構成したりできる特徴を備え、同一
のハードウエア資源で複数種類のプロセッサアーキテク
チャ向けソフトウエアが実行出来るシステムが簡単に構
築できるという利点がある。また 容易かつ高速にプロ
セッサアーキテクチャ変換定義情報が切替えでき、複数
の異なるプロセッサアーキテクチャ向けソフトウエアを
擬似的に同時に一のプロセッサで実行可能なため、オペ
レーションシステムの仕様は定まっているものの標準と
なるプロセッサアーキテクチャが定まらずに複数のプロ
セッサアーキテクチャ向けソフトウエアが混乱している
環境や、標準となるプロセッサアーキテクチャが変更に
なったオペレーションシステムで、旧来のプロセッサ向
けオペレーションシステムプラットホームで開発された
多くのソフトウエア資産を、そのまま新しいプロセッサ
向けオペレーションシステムの上で、性能を落とさずに
再利用したい用途にも適用できる。
【0120】図12はアーキテクチャ切替え・再構成対
応プロセッサ5000を応用したシステムのソフトウエ
ア階層の例を示している。図12では、既定のプロセッ
サアーキテクチャ(もし実行ユニット2000が専用命
令デコーダを持ち、直接命令を実行出来るタイプである
場合は、これが既定のアーキテクチャとなる。そうでな
い場合は、複数の仮想プロセッサの内の任意で主要に運
用するアーキテクチャを既定のアーキテクチャとす
る。)は既定プロセッサD−Coreと表記されてい
る。実行ユニット/既定プロセッサD−Coreを含む
実ハードウエア9000の上で走るオペレーションシス
テムOS−Dは、カーネル層9100とAPI/ドライ
バ層9200から成り立ち、そのAPI関数呼び出しを
通して、OS−D用アプリケーションソフトウエア93
00が実行される。本発明のアーキテクチャ切替え・再
構成対応プロセッサ5000を応用したシステムにおい
ては、非ネイティブなプロセッサアーキテクチャである
ところの仮想プロセッサV−Core用のソフトウエア
が実行可能である。仮想プロセッサV−Core用のオ
ペレーションシステムOS−Vもそのひとつである。図
12(a)の例では、オペレーションシステムOS−V
が実行されるために必要なハードウエア環境は、実行ユ
ニット/既定プロセッサD−Coreの実行するソフト
ウエアによって仮想的に実現される。その環境の上で仮
想プロセッサV−Core用のオペレーションシステム
OS−V(カーネル層9510、API/ドライバ層9
520)が実行され、更にそのAPI関数呼び出しを通
して、OS−V用アプリケーションソフトウエア953
0が実行される。こうして、ひとつのハードウエア環境
の上で、異なるプロセッサアーキテクチャ用の、異なる
オペレーションシステム向けアプリケーションソフトウ
エアが(時分割などで、擬似的ではあるが)同時に実行
される。
【0121】上記の例は、仮想プロセッサV−Core
用のオペレーションシステムOS−Vさえも、実行ユニ
ット/既定プロセッサD−Core用のオペレーション
システムOS−Dの上で実行する場合の説明であるが、
もし、両オペレーションシステムのAPIが統一されて
いれば、図12(b)のようにOS−V用アプリケーシ
ョンソフトウエア9530はオペレーションシステムO
S−Vが無くてもオペレーションシステムOS−DのA
PI関数を直接呼び出すことで、OS−D用アプリケー
ションソフトウエア9300と対等に実行される。この
ように同じAPIを持ったオペレーションシステムが異
なるアーキテクチャのプロセッサの上で実行されている
例は、特に組み込み用途などの小規模なシステムで散見
される。
【0122】このような環境では、大きな主記憶領域を
備えることは困難である場合が多いが、本発明のアーキ
テクチャ切替え・再構成対応プロセッサ5000は、ア
ーキテクチャ変換のために主記憶領域を多く予約するよ
うなことなく、異なるプロセッサ用命令セットで記述さ
れたアプリケーションソフトウエアがネイティブな環境
と遜色無い性能で実行できるようになるため、特に有用
である。
【0123】本発明によるアーキテクチャ切替え・再構
成対応プロセッサ5000では、様々な命令セットが実
行可能になる上に、実行対象の仮想プロセッサのアーキ
テクチャも簡単に再構成可能である。この為、本発明は
プロセッサの命令セットはプロセッサハードウエア固有
のものであるという従来の概念を払拭する進歩的なもの
と言う事が出来よう。
【0124】実行可能な仮想プロセッサが容易に再構成
できることを積極的に利用すると、既存の特定の命令セ
ットを選択するのみならず、ユーザーが所望のオリジナ
ルな命令セットを自由に定義し、意図的に再構成すると
いう使い方もできよう。即ち、同一のハードウエアシス
テム上で、作業目的に合わせた最適な命令セットを選択
したり、ある固有の作業目的専用の命令をカスタム定義
することで、ある時は実行速度よりもプログラム容量の
高効率化を重視したプログラムを構成したり、またある
時は逆にプログラム容量の効率化よりも実行速度の高性
能化を重視したプログラムを構成したりするのである。
このようなシステム運用現場での命令セットの使い分け
は、命令セットが固定されていた従来のプロセッサでは
全く考えられなかったことである。
【図面の簡単な説明】
【図1】アーキテクチャ切替え・再構成対応プロセッサ
の実施方法を詳細に示した説明図である。
【図2】アーキテクチャ切替え・再構成対応プロセッサ
の実施方法を示した説明図である。
【図3】命令グループ判定部310の実施方法を示した
説明図である。
【図4】命令合成情報記憶部340周辺の詳細な実施方
法を示した説明図である。
【図5】ビット再配列部352の実施方法を示した説明
図である。
【図6】フラグ制御部2220の実施方法を示した説明
図である。
【図7】合成制御部330周辺のより詳細な実施方法を
示した説明図である。
【図8】時分割手法によりプロセッサアーキテクチャ切
替えを行う実施方法のタイミングを示した説明図であ
る。
【図9】簡易なメモリ管理ユニットの実施方法を示した
説明図である。
【図10】データ用バイト並び換え部220でのバイト
並び換えパターンを示した説明図である。
【図11】命令用バイト並び換え部210、バイト再配
列部354でのバイト並び換えパターンを示した説明図
である。
【図12】アーキテクチャ切替え・再構成対応プロセッ
サを使ったシステムのソフトウエア階層の例を示した説
明図である。
【図13】アーキテクチャ切替え・再構成対応プロセッ
サを含むシステムの応用例を示した説明図である。
【符号の説明】
100 プロセッサアーキテクチャ変換部 200 プリフェッチ命令緩衝記憶部 210 命令用バイト並び換え部 220 データ用バイト並び換え部 300 命令変換・合成部 310 命令グループ判定部 340 命令合成情報記憶部 350 命令合成部 400 プログラムカウンタ 500 作業用記憶部 600 合成後命令緩衝記憶部 700 命令配分・発送部 1000 命令・データ記憶部(メモリ) 2000 実行ユニット 3000 周辺機器用インターフェース回路 4000 内外部接続周辺機器 5000 アーキテクチャ切替え・再構成対応プロセ
ッサ5000 5100 命令・データ共有型2次キャッシュメモリ 5200 命令用1次キャッシュメモリ 5300 データ用1次キャッシュメモリ

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサが行う各種処理を実行する実
    行ユニットを持ち、 命令記憶手段に接続され、 命令を前記命令記憶手段から取得する番地を生成するた
    めの命令取得番地生成手段を備え、 前記取得された命令の特性を表す一以上のプロパティに
    ついてグループ判定する手段を備え、 前記取得された命令から前記実行ユニットが直接実行可
    能なネイティブ命令を合成するために必要なプロセッサ
    アーキテクチャ構成情報を格納するための記憶手段を備
    え、 前記判定されたグループ情報をもとに前記プロセッサア
    ーキテクチャ構成情報記憶手段からネイティブ命令合成
    情報を参照し、 前記参照されたネイティブ命令合成情報をもとに前記取
    得された命令から命令パラメータフィールドを抜き出す
    手段を備え、 前記抜き出された命令パラメータフィールドと前記参照
    されたネイティブ命令合成情報をもとに一以上のネイテ
    ィブ命令を合成する手段を備え、 前記ネイティブ命令を合成する作業が完了していない間
    は前記実行ユニットにおける実行を待機させる手段を備
    え、 手続き処理を行う命令のための手続き型処理実行手段を
    備え、 プロセッサアーキテクチャに固有の割込み等の例外処理
    実行のための手続き型処理実行手段を備え、 プロセッサアーキテクチャに固有のコンディションコー
    ドフラグレジスタの仕様の差異を補正するためのビット
    再配列手段を備え、 プロセッサアーキテクチャに固有のその他のハードウェ
    ア仕様の差異を補正するための数値拡張、加減算等の演
    算手段を備え、 前記プロセッサアーキテクチャの切替えまたは前記割込
    み等の例外処理の実行を前記命令合成処理の適切な処理
    境界でのみ開始させる為の手段を備え、 前記実行ユニットにおける命令分岐が発生した際に前記
    命令取得番地生成手段を制御し命令取得番地を不連続に
    更新する手段を備え、 前記プロセッサアーキテクチャ構成情報記憶手段への参
    照開始位置を指定する手段を持ち、前記参照開始位置を
    更新することで複数のプロセッサアーキテクチャを切替
    え、異なるプロセッサアーキテクチャ向けのソフトウエ
    アの実行が可能であることを特徴とするアーキテクチャ
    切替え・再構成対応プロセッサ。
  2. 【請求項2】 前記命令の特性を表す一以上のプロパテ
    ィについてグループ判定する手段は、取得した前記命令
    語を複数の部分的ビットフィールドに分解し、前記分解
    された複数のビットフィールドの値を参照番地として個
    別のグループ化情報記憶手段を参照することによってグ
    ループ判定を行うことを特徴とした請求項1記載のアー
    キテクチャ切替え・再構成対応プロセッサ。
  3. 【請求項3】 前記命令の特性を表す一以上のプロパテ
    ィについてグループ判定する手段は、特願2000−2
    38009に示された装置であることを特徴とした請求
    項1記載のアーキテクチャ切替え・再構成対応プロセッ
    サ。
  4. 【請求項4】 前記プロセッサアーキテクチャ構成情報
    記憶手段はRAMであることを特徴とする請求項1記載
    のアーキテクチャ切替え・再構成対応プロセッサ。
  5. 【請求項5】 前記プロセッサアーキテクチャ構成情報
    記憶手段は不揮発性メモリであることを特徴とする請求
    項1記載のアーキテクチャ切替え・再構成対応プロセッ
    サ。
  6. 【請求項6】 データのバイト並び換え手段を備えるこ
    とを特徴とした請求項1記載のアーキテクチャ切替え・
    再構成対応プロセッサ。
  7. 【請求項7】 命令のバイト並び換え手段を備えること
    を特徴とした請求項1記載のアーキテクチャ切替え・再
    構成対応プロセッサ。
  8. 【請求項8】 命令合成作業前命令緩衝記憶手段または
    命令合成作業後命令緩衝記憶手段またはその両方を備え
    ることを特徴とした請求項1記載のアーキテクチャ切替
    え・再構成対応プロセッサ。
  9. 【請求項9】 前記手続き型処理は前記命令合成情報記
    憶手段に予め記憶された情報に従って実行されることを
    特徴とした請求項1記載のアーキテクチャ切替え・再構
    成対応プロセッサ。
  10. 【請求項10】 前記プロセッサアーキテクチャに固有
    のハードウェア仕様の差異を補正するための演算手段と
    してビット再配列手段、バイト再配列手段、数値拡張手
    段または加減算手段の何れかの一または複数の手段を備
    えることを特徴とした請求項1記載のアーキテクチャ切
    替え・再構成対応プロセッサ。
  11. 【請求項11】 プロセッサアーキテクチャに固有のハ
    ードウェア仕様の差異を補正するための演算に必要な情
    報を一時的に記憶するための作業用記憶手段を持つこと
    を特徴とした請求項1記載のアーキテクチャ切替え・再
    構成対応プロセッサ。
  12. 【請求項12】 分岐命令に対応するネイティブ命令を
    合成する際に同時に算出された分岐先情報を記憶する一
    時記憶手段を持ち、 実行ユニットにおける分岐を検出した場合は前記分岐先
    情報を前記一時記憶手段から読み出し、 命令取得番地生成手段に代入し、 プロセッサの処理を正しく分岐させることを特徴とした
    請求項1記載のアーキテクチャ切替え・再構成対応プロ
    セッサ。
  13. 【請求項13】 前記命令合成情報記憶手段が出力する
    情報に従って、バスサイクルがアトミックであるかどう
    かを外部に知らせるための手段を持つことを特徴とした
    請求項1記載のアーキテクチャ切替え・再構成対応プロ
    セッサ。
  14. 【請求項14】 プロセッサアーキテクチャ毎のコンテ
    キスト情報を退避・復帰する手続き型処理実行手段を持
    ち、プロセッサアーキテクチャ切替えをプロセッサの運
    転中に動的に行うことが出来ることを特徴とした請求項
    1記載のアーキテクチャ切替え・再構成対応プロセッ
    サ。
  15. 【請求項15】 時分割時間計数手段を持ち、該時間計
    数手段が生成するタイミングを基にプロセッサアーキテ
    クチャ切替えを行うことを特徴とした請求項1記載のア
    ーキテクチャ切替え・再構成対応プロセッサ。
  16. 【請求項16】 メモリ管理ユニットを持ち、該メモリ
    管理ユニットによる命令領域判定を基にプロセッサアー
    キテクチャ切替えを行うことを特徴とした請求項1記載
    のアーキテクチャ切替え・再構成対応プロセッサ。
  17. 【請求項17】 プロセッサアーキテクチャを切替える
    ことを指示する為の命令を持ち、該命令を実行すること
    で、プロセッサアーキテクチャ切替えを開始することを
    特徴とした請求項1記載のアーキテクチャ切替え・再構
    成対応プロセッサ。
  18. 【請求項18】 実行ユニットが複数の演算実行手段お
    よびメモリアクセス手段を持ち、更に命令配分発送手段
    も持つことで、前記命令配分発送手段によって組み合わ
    される複数のネイティブ命令を前記実行ユニットにて同
    時に実行することが可能であることを特徴とした請求項
    1記載のアーキテクチャ切替え・再構成対応プロセッ
    サ。
JP2000248191A 2000-08-18 2000-08-18 アーキテクチャ切替え・再構成対応プロセッサ Pending JP2002063031A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000248191A JP2002063031A (ja) 2000-08-18 2000-08-18 アーキテクチャ切替え・再構成対応プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000248191A JP2002063031A (ja) 2000-08-18 2000-08-18 アーキテクチャ切替え・再構成対応プロセッサ

Publications (1)

Publication Number Publication Date
JP2002063031A true JP2002063031A (ja) 2002-02-28

Family

ID=18738140

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000248191A Pending JP2002063031A (ja) 2000-08-18 2000-08-18 アーキテクチャ切替え・再構成対応プロセッサ

Country Status (1)

Country Link
JP (1) JP2002063031A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010061584A (ja) * 2008-09-05 2010-03-18 Canon Inc デバイスドライバの作成方法及びプログラム
JP2013191089A (ja) * 2012-03-14 2013-09-26 Fujitsu Ltd 例外処理方法、プログラム及び装置
JP2016539423A (ja) * 2013-11-27 2016-12-15 シャンハイ シンハオ マイクロエレクトロニクス カンパニー リミテッド 命令セット変換システム及び方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010061584A (ja) * 2008-09-05 2010-03-18 Canon Inc デバイスドライバの作成方法及びプログラム
JP2013191089A (ja) * 2012-03-14 2013-09-26 Fujitsu Ltd 例外処理方法、プログラム及び装置
JP2016539423A (ja) * 2013-11-27 2016-12-15 シャンハイ シンハオ マイクロエレクトロニクス カンパニー リミテッド 命令セット変換システム及び方法

Similar Documents

Publication Publication Date Title
JP3547139B2 (ja) プロセッサ
US6925553B2 (en) Staggering execution of a single packed data instruction using the same circuit
US5179530A (en) Architecture for integrated concurrent vector signal processor
US20180189066A1 (en) Processor
US5826089A (en) Instruction translation unit configured to translate from a first instruction set to a second instruction set
US5752073A (en) Digital signal processor architecture
US20110231616A1 (en) Data processing method and system
US9798543B2 (en) Fast mapping table register file allocation algorithm for SIMT processors
JPH10134036A (ja) マルチメディア信号プロセッサの単一命令多重データ処理
KR20100032441A (ko) 조건부 명령을 비조건부 명령 및 선택 명령으로 확장하기 위한 방법 및 시스템
CN101802779A (zh) 具有可重新组构的浮点单元的处理器
JP2002539519A (ja) Vliwプロセッサにおけるレジスタ・アドレッシングの間接制御を提供するためのレジスタファイル索引付け方法及び装置
JP2017538213A (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
US20140331032A1 (en) Streaming memory transpose operations
JPH10228376A (ja) 複数レジスタ命令を処理する方法及びプロセッサ
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
JP2669158B2 (ja) データ処理装置
US6012138A (en) Dynamically variable length CPU pipeline for efficiently executing two instruction sets
JP2002063031A (ja) アーキテクチャ切替え・再構成対応プロセッサ
JP2556182B2 (ja) デ−タ処理装置
JP2620519B2 (ja) オペレーションの処理システムおよび方法
JP2668456B2 (ja) ビット検索回路及びそれを備えたデータ処理装置
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
JP2504312B2 (ja) プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置