(57)【要約】本発明は、命令制御装置、機能ユニット、プログラム変換装置および言語処理装置とに関する。本発明の目的は、安価に、かつ柔軟に機能の変更および追加を達成することにある。そのために、本発明にかかわる命令制御装置は、基本ブロック毎に、入力オペランドおよび出力オペランドの数の積算値の列が個別に生成された後に、全ての入力オペランドと出力オペランドとに、これらの積算値の列に含まれる個々の積算値以降の順位の入力レジスタと出力レジスタとが重複なく対応付けられ、さらに、これらの入力レジスタと出力レジスタとの集合毎に、物理レジスタが割り付けられることによって構成される。
2004012079.tif 000002
【特許請求の範囲】
【請求項１】
機械語の列からなる基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとを抽出し、これらの入力オペランドおよび出力オペランドの数の積算値の列を個別に生成するオペランド数積算手段と、
前記基本ブロック毎に割り付けが更新されるべき仮想的な入力レジスタと出力レジスタとを管理し、かつ前記入力オペランドと前記出力オペランドとに、前記積算値の列に含まれる個々の対応する積算値以降の順位の入力レジスタと出力レジスタとを重複なく対応付ける仮想割り付け手段と、
前記基本ブロックに含まれ得る命令の機能を有する機能ユニットとの情報の引き渡しに供される物理レジスタを管理し、かつ前記全ての命令の出力オペランドに個別に対応付けられた出力レジスタと、これらの命令の入力オペランドが個別に引き渡されるべき入力オペランドに対応付けられた入力レジスタとの集合毎に、これらの物理レジスタを割り付けるオペランド引き渡し手段と
を備えたことを特徴とする命令制御装置。
【請求項２】
請求の範囲１に記載の命令制御装置において、
前記オペランド数積算手段は、
前記積算値毎に含まれる入力オペランドの数として、即値オペランドの数を積算せず、
前記オペランド引き渡し手段は、
前記機能ユニットに、前記オペランド数積算手段によって数が積算されなかった即値オペランドを引き渡す
ことを特徴とする命令制御装置。
【請求項３】
請求の範囲１に記載の命令制御装置において、
前記オペランド数積算手段は、
前記基本ブロック毎に、前記入力オペランドの内、即値オペランドと他の入力オペランドとの数の積算値を個別に生成し、
前記オペランド引き渡し手段は、
前記即値オペランドと前記他の入力オペランドとに個別に物理レジスタを割り付け、個々の即値オペランドに割り付けられた物理レジスタにその即値オペランドを格納する
ことを特徴とする命令制御装置。
【請求項４】
請求の範囲１に記載の命令制御装置において、
前記仮想割り付け手段は、
前記入力オペランドの列と前記出力オペランドの列とに含まれるオペランドの内、先行する直近の基本ブロックに含まれる命令のオペランドに対する入力レジスタと出力レジスタとの既存の対応付けを維持する
ことを特徴とする命令制御装置。
【請求項５】
請求の範囲１に記載の命令制御装置において、
前記物理レジスタの内、特定の物理レジスタは、
前記基本ブロックに含まれる個々の命令の出力オペランドに予め対応付けられ、
前記オペランド引き渡し手段は、
前記集合毎に含まれる個々の命令の出力オペランドに対応付けられた出力レジスタと、その出力オペランドが引き渡されるべき入力レジスタとに、前記特定の物理レジスタの内、その出力オペランドに予め対応付けられた特定の物理レジスタを優先的に割り付ける
ことを特徴とする命令制御装置。
【請求項６】
請求の範囲１に記載の命令制御装置において、
前記オペランド引き渡し手段は、
前記基本ブロックに含まれる命令の入力オペランドの内、その基本ブロックの内部において依存関係がない入力オペランドに対する既存の物理レジスタの割り付けを維持する
ことを特徴とする命令制御装置。
【請求項７】
請求の範囲１に記載の命令制御装置において、
前記仮想割り付け手段は、
前記機能ユニットの内、前記基本ブロックに含まれる個々の命令の機能を有する機能ユニットに対応したキャッシュメモリに、その命令の操作符号と、この命令の入力オペランドと出力オペランドとにそれぞれ対応付けられた入力レジスタと出力レジスタとの基準アドレスとからなるレコードを格納し、
前記オペランド引き渡し手段は、
前記機能ユニットに対応するキャッシュメモリに格納された最先のレコードに含まれる基準アドレスより一義的に定まり、これらのレコードに対応する命令の実行に必要な数の入力オペランドおよび出力オペランドに対応付けられた入力レジスタと出力レジスタとの集合毎に、前記物理レジスタを割り付ける
ことを特徴とする命令制御装置。
【請求項８】
請求の範囲７に記載の命令制御装置において、
前記基本ブロックの列に対して、これらの基本ブロック毎に、前記キャッシュメモリに最先に格納された操作符号を有する命令が格納された記憶領域を示すキャッシュアドレスと、主記憶の記憶領域の内、これらの命令が個別に格納された記憶領域のアドレスとが格納された分岐先テーブルを有し、
前記オペランド引き渡し手段は、
前記機能ユニットの内、特定の機能ユニットによって有効な分岐が行われるときに、分岐先を示すアドレスに対応して前記分岐先テーブルに格納されたキャッシュアドレスに前記キャッシュメモリの読み出しポインタを更新する
ことを特徴とする命令制御装置。
【請求項９】
請求の範囲１に記載の命令制御装置において、
前記基本ブロックは、
前記機械語の列に含まれ得る命令の機能を有する機能ユニット毎に対応し、その機械語に含まれる命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部が個別にパックされた語の列として構成された
ことを特徴とする命令制御装置。
【請求項１０】
請求の範囲９に記載の命令制御装置において、
前記機械語の列に含まれ得る特定の命令は、
操作符号が即値オペランドとして含まれ、その操作符号に代えて入力オペランドと出力オペランドとの数の組み合わせが配置されることによって構成された
ことを特徴とする命令制御装置。
【請求項１１】
請求の範囲９に記載の命令制御装置において、
前記操作符号には、
対応する機能ユニットの識別子またはこれらの機能ユニットの異同を意味する情報がパックされた
ことを特徴とする命令制御装置。
【請求項１２】
請求の範囲９に記載の命令制御装置において、
前記操作符号は、
対応する機能ユニットが異なる場合に値が重複し得る語として構成された
ことを特徴とする命令制御装置。
【請求項１３】
請求の範囲９に記載の命令制御装置において、
前記基本ブロックに含まれる分岐命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部は、
この基本ブロックの先頭もしくは末尾にパックされた
ことを特徴と命令制御装置。
【請求項１４】
請求の範囲１に記載の命令制御装置において、
前記基本ブロックは、
語長が一定である語の列として構成された
ことを特徴とする命令制御装置。
【請求項１５】
請求の範囲８に記載の命令制御装置において、
前記基本ブロックは、
語長が一定である語の列として構成された
ことを特徴とする命令制御装置。
【請求項１６】
請求の範囲９に記載の命令制御装置において、
前記基本ブロックは、
語長が一定である語の列として構成された
ことを特徴とする命令制御装置。
【請求項１７】
請求の範囲１に記載の命令制御装置において、
前記汎用レジスタは、
前記物理レジスタの一部として構成された
ことを特徴とする命令制御装置。
【請求項１８】
請求の範囲８に記載の命令制御装置において、
前記汎用レジスタは、
前記物理レジスタの一部として構成された
ことを特徴とする命令制御装置。
【請求項１９】
請求の範囲９に記載の命令制御装置において、
前記汎用レジスタは、
前記物理レジスタの一部として構成された
ことを特徴とする命令制御装置。
【請求項２０】
操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリに格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリに格納され、かつ実行が可能な命令を順次選択するスケジューラと、
前記スケジューラによって選択された命令を前記キャッシュメモリから取得し、この命令のオペランドを示す識別子を前記命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う処理手段とを備え、
前記スケジューラは、
前記キャッシュメモリに格納された命令の内、前記選択された命令とその命令が属する基本ブロックの番号とをこのキャッシュメモリに順次格納し、その基本ブロックの実行の反復にこの基本ブロックの番号を読み替えて適用する
ことを特徴とする機能ユニット。
【請求項２１】
操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリに格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリに格納され、かつ実行が可能な命令を順次選択するスケジューラと、
前記スケジューラによって選択された命令を前記キャッシュメモリから取得し、この命令のオペランドを示す識別子を前記命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う処理手段とを備え、
前記スケジューラは、
前記実行が可能な命令の内、特定の操作符号を有する命令を優先して選択する
ことを特徴とする機能ユニット。
【請求項２２】
操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリに格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリに格納され、かつ実行が可能な命令を順次選択するスケジューラと、
前記スケジューラによって選択された命令を前記キャッシュメモリから取得し、この命令のオペランドを示す識別子を前記命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う処理手段とを備え、
前記スケジューラは、
前記キャッシュメモリに格納された命令の内、特定の操作符号を有する命令については、その命令の即値オペランドまたはこの即値オペランドに対して規定の相関性を有する情報が外部から与えられ、またはその外部に引き渡すことができたときに選択する
ことを特徴とする機能ユニット。
【請求項２３】
機械語の列を基本ブロックの列に区分し、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとに併せて、これらの命令の操作符号を抽出する機械語分解手段と、
前記基本ブロック毎に、前記機械語分解手段によって抽出された個々の操作符号をその操作符号に適応した処理を行うべき機能ユニット毎に区分する命令区分手段と、
前記機械語分解手段によって抽出された入力オペランドおよび出力オペランドと、前記命令区分手段によって区分された操作符号とが前記機能ユニットの順に前記基本ブロック毎にパックされ、かつ命令制御に適合した形式の語の列に前記機械語の列を変換する変換手段と
を備えたことを特徴とするプログラム変換装置。
【請求項２４】
アセンブラ言語で記述され、かつアセンブリ命令に該当しない命令の列を基本ブロックの列に区分し、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとの識別子に併せて、これらの命令の記号命令を抽出する原始プログラム分解手段と、
前記基本ブロック毎に、前記原始プログラム分解手段によって抽出された個々の記号命令をその記号命令に適応した処理を行うべき機能ユニット毎に区分する命令区分手段と、
前記原始プログラム分解手段によって抽出された識別子と、前記命令区分手段４２によって区分された記号命令とに個別に対応した入力オペランド、出力オペランドおよび操作符号が前記機能ユニットの順に前記基本ブロック毎にパックされ、かつ前記命令の列の命令制御に適合した形式の機械語の列にその命令の列を変換する変換手段と
を備えたことを特徴とする言語処理装置。
【発明の詳細な説明】
【技術分野】  本発明は、情報処理装置において、機械語の列を基本ブロック毎に解読し、かつ物理レジスタに対するオペランドの割り付けを主導的に行う命令制御装置と、その命令制御装置によってオペランドが確定した命令の機能を実現する機能ユニットと、この命令制御装置に適合した機械語の列に、既成のロードモジュールと規定のアセンブラ言語で記述された原始プログラムとをそれぞれ変換するプログラム変換装置と言語処理装置とに関する。
【背景技術】  近年、高速のデータ通信を実現する技術の確立と、情報化社会の進展と共に、画像その他の多様な情報を効率的に、あるいは実時間で柔軟に処理できる技術の要求が高まり、ＲＩＳＣアーキテクチャの利点を損なうことなく機能の追加や変更が可能なプロセッサの研究や開発が進められつつある。
しかし、これらのプロセッサの多く（以下、「第一の従来例」という。）は、既存のＡＬＵ部にかかわる機能の追加や変更を単に可能とすることによって構成されているために、下記の点で機能の追加や変更が十分には達成されていなかった。
・  拡張されるべき命令の実行レイテンシにかかわる自由度が確保され難い。
・  パイプラインの基本的な構成や動作の変更が許容され難い。
・  転送命令および分岐命令の追加や変更が実現され難い。
・  機械語の形式の変更に制約があるために、オペランド（イミーディエイトデータを含む。）の数および語長の変更が許容されない場合が多い。
・  スーパスカラ、分岐予測、アウトオブオーダ等の技法に馴染み難く、これらの技法が適用されても高速化が図られ難い。
さらに、上述した機能の追加や変更を可能とする技術としては、下記の「ＴＴＡｓ」や「ＢＩＳＣアーキテクチャ」が提案されている。
・  オペランドに該当するレジスタの組み合わせ毎に命令が定義され、これらの命令がレジスタ転送命令の組み合わせとして実現される「ＴＴＡｓ」（以下、「第二の従来例」という。）
・  命令コードを有する点で「ＴＴＡｓ」と異なり、かつ命令体系がレジスタ間転送命令と「操作符号」を示すイミーディエイトデータの組み合わせとして構成される「ＢＩＳＣアーキテクチャ」（以下、「第三の従来例」という。）
しかし、上述した「第二の従来例」では、機能の種類が限定されるために、機能の変更および追加は、必ずしも自在には達成されなかった。
また、上述した「第三の従来例」では、第二の従来例に比べて、命令のレイテンシの如何にかかわらず機能の追加や変更にかかわる自由度が高く確保され、かつ分岐命令だけではなく転送命令の追加が可能であるにもかかわらず、分岐予測その他の技術の適用による高速化が達成され難く、しかも、機械語に冗長な情報が含まれるために主記憶の記憶領域の利用効率が低かった。
さらに、「第三の従来例」では、割り込み処理の起動に先行して内部の各部の情報が保存されなければならないために、ハードウエアの構成が複雑化し、その割り込み処理の起動が無用に遅れる可能性があった。
【発明の開示】
本発明は、ＲＩＳＣアーキテクチャの利点が損なわれることなく、安価に、かつ柔軟に所望の命令によって達成されるべき機能の変更と、新規な機能を有する命令の追加とが達成される命令制御装置、機能ユニット、プログラム変換装置および言語処理装置を提供することを目的とする。
また、本発明の目的は、性能の低下やコストの増加を伴うことなく、多様な分野に対する情報処理技術の適用が可能となる点にある。
さらに、本発明の目的は、即値オペランドの形式や語長が物理レジスタの数や語長に整合しない場合であっても、オペランドの数や組み合わせの如何にかかわらず、機能ユニットによる機能分散の下で個々の命令が効率的に実行される点にある。
また、本発明の目的は、機能ユニットに対して、即値オペランドと、その即値オペランドに該当しない入力オペランドとが個別に引き渡される場合に比べて、命令制御にかかわる処理の簡略化が図られる点にある。
さらに、本発明の目的は、物理レジスタの間における無用なデータの転送が回避され、かつ応答性および信頼性が高められる点にある。
また、本発明の目的は、共通の基本ブロックおよび後続する基本ブロックに含まれる命令の入力オペランドとして個々の出力オペランドが効率的に引き渡される点にある。
さらに、本発明の目的は、物理レジスタの管理にかかわる処理が無用に複雑化することなく、命令制御が効率的に達成される点にある。
また、本発明の目的は、命令の実行に必要なオペランドの数および組み合わせの如何にかかわらず、性能が低下することなく多様な命令の効率的な実行が可能となる点にある。
さらに、本発明の目的は、分岐の高速化が図られる点にある。
また、本発明の目的は、プリデコードおよび命令制御の効率が向上し、かつ総合的な処理速度が高められる点にある。
さらに、本発明の目的は、基本的な命令の形式が変更されることなく、多様な機能の追加や変更が柔軟に達成される点にある。
また、本発明の目的は、プリデコードおよび命令制御の効率が高められる点にある。
さらに、本発明の目的は、主記憶の語長や基本的な命令の語長が変更されることなく、多様な機能の追加や変更が柔軟に達成される点にある。
また、本発明の目的は、機械語の構成の簡略化と短縮とが図られる点にある。
さらに、本発明の目的は、固定語長の命令体系を有する多様な情報処理装置に対する柔軟な適応が可能となる点にある。
また、本発明の目的は、構成の簡略化と応答性の向上とが図られる点にある。
さらに、本発明の目的は、反復処理の効率が高められる点にある。
また、本発明の目的は、特定の操作符号を有する命令を適用したプログラマの意図の通りに、この命令以降の依存関係が効率的に、かつ早期に保証される点にある。
さらに、本発明の目的は、機能の追加や変更に応じて行われるべき複数の機能ユニットの間の機能分散や負荷分散が柔軟に達成される点にある。
また、本発明の目的は、既存のオブジェクトプログラムやロードモジュールの有効な活用が図られる点にある。
さらに、本発明の目的は、既存の原始プログラムの有効な活用が図られる点にある。
上述した目的は、機械語の列からなる基本ブロック毎に、入力オペランドと出力オペランドとが抽出され、これらの入力オペランドおよび出力オペランドの数の積算値の列が個別に生成された後に、全ての入力オペランドと出力オペランドとに、積算値の列に含まれる個々の積算値以降の順位の仮想的な入力レジスタと出力レジスタとが重複なく対応付けられ、さらに、全ての命令の出力オペランドに個別に対応付けられた出力レジスタと、これらの命令の入力オペランドが個別に引き渡されるべき入力オペランドに対応付けられた入力レジスタとの集合毎に、これらの物理レジスタが割り付けられる点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、基本ブロック毎に含まれる何れの機械語についても、その機械語の実行を可能とする機能を具備した機能ユニット、またはその機能ユニットの前段に配置されたキャッシュメモリに対する分配が全てのオペランドの識別子が含まれることなく可能となり、かつ上記の仮想的な入力レジスタおよび出力レジスタと、物理レジスタとの管理の形態がこれらの機械語の列に整合する限り、これらの機能ユニットによる機能分散の下で並行して効率的に実行される。
上述した目的は、積算値毎に含まれる入力オペランドの数として即値オペランドの数が積算されず、かつ機能ユニットには、このように数が積算されなかった即値オペランドが引き渡される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、機能ユニットに対する即値オペランドの引き渡しが物理レジスタを介することなく達成される。
上述した目的は、基本ブロック毎に、入力オペランドの内、即値オペランドと他の入力オペランドとの数の積算値が個別に生成され、これらの即値オペランドと他の入力オペランドとに個別に物理レジスタが割り付けられ、個々の即値オペランドに割り付けられた物理レジスタにその即値オペランドが格納される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、基本ブロック毎に含まれ得る個々の命令に対応した機能ユニットに対して、全ての入力オペランドが物理レジスタを介して引き渡される。
上述した目的は、入力オペランドの列と出力オペランドの列とに含まれるオペランドの内、先行する直近の基本ブロックに含まれる命令のオペランドに対する入力レジスタと出力レジスタとの既存の対応付けが維持される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、何れかの基本ブロックで確定され、かつ何らかの物理レジスタに格納されたオペランドは、その基本ブロックに後続する基本ブロックに含まれる個々の命令に対応した機能ユニットに対しても、この物理レジスタを介して引き渡される。
上述した目的は、特定の物理レジスタが基本ブロックに含まれる個々の命令の出力オペランドに予め対応付けられ、既述の集合毎に含まれる個々の命令の出力オペランドに対応付けられた出力レジスタと、その出力オペランドが引き渡されるべき入力レジスタとに、その出力オペランドに予め対応付けられた特定の物理レジスタが優先的に割り付けられる点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、何れの基本ブロックに含まれる命令についても、その命令の出力オペランドの格納と、この基本ブロックに含まれる他の命令に対応した機能ユニットに対するその出力オペランドの引き渡しに供される物理レジスタが、各命令ブロックに含まれる命令の順序に適応した物理レジスタに一義的に設定される。
上述した目的は、基本ブロックに含まれる命令の入力オペランドの内、その基本ブロックの内部において依存関係がない入力オペランドに対する既存の物理レジスタの割り付けが維持される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、先行する基本ブロックに含まれる命令の出力オペランドは、その基本ブロックに後続する単一または複数の基本ブロックに含まれる命令の入力オペランドに該当し得る限り、他の物理レジスタに転送され、あるいは複写されることなく、これらの後続する基本ブロックに対して効率的に引き渡される。
上述した目的は、機能ユニットに対応したキャッシュメモリに、命令の操作符号と、この命令の入力オペランドと出力オペランドとにそれぞれ対応付けられた入力レジスタと出力レジスタとの基準アドレスとからなるレコードが格納され、これらのキャッシュメモリに格納された最先のレコードに含まれる基準アドレスより一義的に定まり、これらのレコードに対応する命令の実行に必要な数の入力オペランドおよび出力オペランドに対応付けられた入力レジスタと出力レジスタとの集合毎に、物理レジスタが割り付けられる点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、基本ブロック毎に含まれる何れの機械語も、その機械語の実行を可能とする機能を具備した機能ユニットに対応したキャッシュメモリに、全てのオペランドの識別子が含まれることなく分配され、これらの機能ユニットによる機能分散の下で並行して実行される。
上述した目的は、分岐先テーブルには、基本ブロック毎に、キャッシュメモリに最先に格納された操作符号を有する命令が格納された記憶領域を示すキャッシュアドレスと、主記憶の記憶領域の内、これらの命令が個別に格納された記憶領域のアドレスとが格納され、かつ特定の機能ユニットによって有効な分岐が行われるときに、分岐先を示すアドレスに対応して分岐先テーブルに格納されたキャッシュアドレスにキャッシュメモリの読み出しポインタが更新される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、分岐先に該当する基本ブロックの全ての命令が個々のキャッシュメモリに区分されて蓄積されている限り、その分岐先に対する分岐は、これらのキャッシュメモリの読み出しポインタの更新によって達成される。
上述した目的は、機械語の列に含まれ得る命令の機能を有する機能ユニット毎に対応し、その機械語に含まれる命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部が個別にパックされた語の列として基本ブロックが構成される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、基本ブロック毎に含まれる個々の命令が対応する機能ユニット、またはこれらの機能ユニットに対応するキャッシュメモリに配分されるために行われるべき処理の手順は、上述した操作符号と入力オペランドと出力オペランドとの全てが何ら個別にパックされない場合に比べて、簡略化される。
上述した目的は、操作符号が即値オペランドとして含まれ、その操作符号に代えて、入力オペランドと出力オペランドとの数の組み合わせが配置されることによって、機械語の列に含まれ得る特定の命令が構成される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、本来的に操作符号が配置されるべきフィールドの語長では表現され得ない程度に、上記の特定の命令と共通の機能ユニットを介して達成されるべき機能の数および組み合わせが多数に亘る場合であっても、その機能ユニットが既述の即値オペランドとして与えられた操作符号と、本来的な操作符号に代えて与えられた入力オペランドと出力オペランドとの数の組み合わせとを識別できる限り、所望の機能の追加や変更が可能となる。
上述した目的は、操作符号に対応する機能ユニットの識別子またはこれらの機能ユニットの異同を意味する情報がその操作符号にパックされた点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、全ての操作符号が基本ブロック毎にパックされて与えられる場合であっても、これらの操作符号は、上述した情報に基づいて簡便に区分され、かつ対応する機能ユニットに分配される。
上述した目的は、操作符号に対応する機能ユニットが異なる場合に値が重複し得る語としてその操作符号が構成される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、何れかの機能ユニットによって達成されるべき機能の数や組み合わせが多数であっても、主記憶に格納されるべき機械語の語長の変更が回避され得る。
上述した目的は、基本ブロックに含まれる分岐命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部がこの基本ブロックの先頭もしくは末尾にパックされる点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、何れの基本ブロックにも、演算命令の列と転送命令の列とが分岐命令を含まない命令の列として与えられるので、このような分岐命令が基本ブロック内における既定の位置に基づいて特定され、かつ対応する機能ユニットに分配される限り、これらの演算命令および転送命令との区分は、両者の命令の境界に付加され、かつ語長が短くて簡便に識別が可能なデリミッタに基づいて効率的に達成される。
上述した目的は、語長が一定である語の列として基本ブロックが構成される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、主記憶の語長や命令の形式が基本的に変更されることなく、既述の命令制御が達成される。
上述した目的は、物理レジスタの一部として汎用レジスタが構成される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、汎用レジスタに格納された入力オペランドと、汎用レジスタに保持されるべき出力オペランドとの何れも、物理レジスタとの間で無用に転送されることなく、他の基本ブロックと相互に引き渡される。
上述した目的は、キャッシュメモリに一旦格納された命令の内、実行が可能となった命令とその命令が属する基本ブロックの番号とがこのキャッシュメモリに順次格納され、その基本ブロックの実行の反復にこの基本ブロックの番号が読み替えられて適用される点に特徴がある機能ユニットによって達成される。
このような機能ユニットでは、何れの基本ブロックに属する命令の列についても、反復して実行されるべき順序は、先行して行われた実行の過程において、実際に実行が可能となった順序の通りに設定される。
上述した目的は、実行が可能な命令の内、特定の操作符号を有する命令がスケジューラによって優先して選択される点に特徴がある機能ユニットによって達成される。
このような機能ユニットでは、キャッシュメモリに格納され、かつ後続して実行されるべき基本ブロックの一連の命令の列に上述した特定の操作符号を有する命令が含まれる場合には、その特定の操作符号を有する命令は、実行に必要な全てのオペランドが揃い次第、先行する基本ブロックに含まれる命令より優先的に実行される。
上述した目的は、特定の操作符号を有する命令の即値オペランドまたはこの即値オペランドに対して規定の相関性を有する情報が外部から与えられ、またはその外部に引き渡すことができたときに、この命令が選択される点に特徴がある機能ユニットによって達成される。
このような機能ユニットは、上述した情報が交換されることによって、既述の特定の操作符号を有する命令の実行にかかわる機能や負荷を分担する他の機能ユニットまたは装置に同期して作動する。
上述した目的は、機械語の列が基本ブロックの列に区分され、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとに併せて、これらの命令の操作符号が抽出された後に、基本ブロック毎に、これらの抽出された個々の操作符号がその操作符号に適応した処理を行うべき機能ユニット毎に区分され、さらに、これらの入力オペランド、出力オペランドおよび操作符号が機能ユニットの順に基本ブロック毎にパックされ、かつ命令制御に適合した形式の機械語の列に変換される点に特徴があるプログラム変換装置によって達成される。
このようなプログラム変換装置では、既存の機械語、または所望の形式の機械語は、これらの機械語に対応した原始プログラムのアセンブリングが再試行されなくても、本発明にかかわる命令制御によって実行される。
上述した目的は、アセンブラ言語で記述された命令の列が基本ブロックの列に区分され、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとの識別子に併せて、これらの命令の記号命令が抽出された後に、基本ブロック毎に、個々の記号命令がその記号命令に適応した処理を行うべき機能ユニット毎に区分され、さらに、同様にして抽出された識別子と、これらの記号命令とに個別に対応した入力オペランド、出力オペランドおよび操作符号が機能ユニットの順に基本ブロック毎にパックされ、かつ命令の列の命令制御に適合した形式の機械語の列に変換される点に特徴がある言語処理装置によって達成される。
このような言語処理装置では、アセンブラ言語で記述された既存の原始プログラム、または所望のアセンブラ言語で記述された原始プログラムは、これらの原始プログラムに本来的に適合したアセンブラに基づくアセンブリングが行われなくても、本発明にかかわる命令制御の下で実行が可能な機械語の列に直接変換される。
【図面の簡単な説明】  図１は、本発明にかかわる命令制御装置の原理ブロック図である。
図２は、本発明にかかわる機能ユニットの原理ブロック図である。
図３は、本発明にかかわるプログラム変換装置の原理ブロック図である。
図４は、本発明にかかわる言語処理装置の原理ブロック図である。
図５は、本発明の第一ないし第五の実施形態を示す図である。
図６ａ〜６ｃは、本発明の第一の実施形態の動作を説明する図（１）である。
図７は、本発明の第一の実施形態の動作を説明する図（２）である。
図８は、本発明の第一の実施形態の動作を説明する図（３）である。
図９は、レジスタ管理部の詳細な構成を示す図である。
図１０は、ＰＢテーブルの構成を示す図である。
図１１は、本発明の第四の実施形態の動作を説明する図である。
図１２は、本発明の第六の実施形態の動作フローチャートである。
【発明を実施するための最良の形態】  まず、本発明にかかかわる命令制御装置の原理を説明する。
図１は、本発明にかかわる命令制御装置の原理ブロック図である。
図１に示す命令制御装置は、オペランド数積算手段１１、仮想割り付け手段１２、分岐先テーブル１２Ｔ−１〜１２Ｔ−ｎ、機能ユニット１３−１〜１３−ｎ、キャッシュメモリ１３Ｃ−１〜１３Ｃ−ｎおよびオペランド引き渡し手段１４から構成される。
本発明にかかわる第一の命令制御装置の原理は、下記の通りである。
オペランド数積算手段１１は、機械語の列からなる基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとを抽出し、これらの入力オペランドおよび出力オペランドの数の積算値の列を個別に生成する。仮想割り付け手段１２は、基本ブロック毎に割り付けが更新されるべき仮想的な入力レジスタと出力レジスタとを管理し、かつ入力オペランドと出力オペランドとに、積算値の列に含まれる個々の積算値以降の順位の入力レジスタと出力レジスタとを重複なく対応付ける。オペランド引き渡し手段１４は、基本ブロックに含まれ得る命令の機能を有する機能ユニット１３−１〜１３−ｎとの情報の引き渡しに供される物理レジスタを管理し、かつ全ての命令の出力オペランドに個別に対応付けられた出力レジスタと、これらの命令の入力オペランドが個別に引き渡されるべき入力オペランドに対応付けられた入力レジスタとの集合毎に、これらの物理レジスタを割り付ける。
このような命令制御装置では、基本ブロック毎に含まれる何れの機械語についても、その機械語の実行を可能とする機能を具備した機能ユニット、またはその機能ユニットの前段に配置されたキャッシュメモリに対する分配が全てのオペランドの識別子が含まれることなく可能となり、かつ上記の仮想的な入力レジスタおよび出力レジスタと、物理レジスタとの管理の形態がこれらの機械語の列に整合する限り、これらの機能ユニットによる機能分散の下で並行して効率的に実行される。
また、基本ブロック毎に含まれる全ての機械語の全ての入力オペランドおよび出力オペランドは、上記の仮想的な入力レジスタおよび出力レジスタと、物理レジスタとの管理の形態がこれらの機械語の列に整合する限り、一旦、これらの入力レジスタと出力レジスタとに対応付けられた後に、該当する基本ブロック内の依存関係と、他の基本ブロックとの間とにおける依存関係が共に解消される形態で物理レジスタに割り付けられる。
さらに、基本ブロック毎に含まれ得る個々の機械語については、その機械語に対応した機能ユニットが備えられ、このような機能ユニットの識別が可能な形式で与えられる限り、オペランドの数や組み合わせの如何にかかわらず、命令制御を実現するハードウエアの基本的な構成が変更されることなく多様な機能にかかわる柔軟な追加および変更が可能となる。
したがって、構成が標準化されるにもかかわらず、性能の低下やコストの増加を伴うことなく、多様な分野に対する情報処理技術の適用が可能となる。
本発明にかかわる第二の命令制御装置の原理は、下記の通りである。
オペランド数積算手段１１は、積算値毎に含まれる入力オペランドの数として、即値オペランドの数を積算しない。オペランド引き渡し手段１４は、機能ユニット１３−１〜１３−ｎに、オペランド数積算手段１１によって数が積算されなかった即値オペランドを引き渡す。
このような命令制御装置では、機能ユニット１３−１〜１３−ｎに対する即値オペランドの引き渡しは、物理レジスタを介することなく達成される。
したがって、このような即値オペランドの形式や語長が物理レジスタの数や語長に整合しない場合であっても、個々の命令は、オペランドの数や組み合わせの如何にかかわらず、機能ユニット１３−１〜１３−ｎによる機能分散の下で効率的に実行される。
本発明にかかわる第三の命令制御装置の原理は、下記の通りである。
オペランド数積算手段１１は、基本ブロック毎に、入力オペランドの内、即値オペランドと他の入力オペランドとの数の積算値を個別に生成する。オペランド引き渡し手段１４は、即値オペランドと他の入力オペランドとに個別に物理レジスタを割り付け、かつ個々の即値オペランドに割り付けられた物理レジスタにその即値オペランドを格納する。
このような命令制御装置では、基本ブロック毎に含まれ得る個々の命令に対応した機能ユニットには、全ての入力オペランドが物理レジスタを介して引き渡される。
したがって、機能ユニットに対して、即値オペランドと、その即値オペランドに該当しない入力オペランドとが個別に引き渡される場合に比べて、命令制御にかかわる処理の簡略化が図られる。
本発明にかかわる第四の命令制御装置の原理は、下記の通りである。
仮想割り付け手段１２は、入力オペランドの列と出力オペランドの列とに含まれるオペランドの内、先行する直近の基本ブロックに含まれる命令のオペランドに対する入力レジスタと出力レジスタとの既存の対応付けを維持する。
このような命令制御装置では、何れかの基本ブロックで確定され、かつ何らかの物理レジスタに格納されたオペランドは、その基本ブロックに後続する基本ブロックに含まれる個々の命令に対応した機能ユニットに対しても、この物理レジスタを介して引き渡される。
したがって、物理レジスタの間における無用なデータの転送が回避され、かつ応答性および信頼性が高められる。
本発明にかかわる第五の命令制御装置の原理は、下記の通りである。
物理レジスタの内、特定の物理レジスタは、基本ブロックに含まれる個々の命令の出力オペランドに予め対応付けられる。オペランド引き渡し手段１４は、集合毎に含まれる個々の命令の出力オペランドに対応付けられた出力レジスタと、その出力オペランドが引き渡されるべき入力レジスタとに、特定の物理レジスタの内、その出力オペランドに予め対応付けられた特定の物理レジスタを優先的に割り付ける。
このような命令制御装置では、何れの基本ブロックに含まれる命令も、その命令の出力オペランドの格納と、この基本ブロックに含まれる他の命令に対応した機能ユニットに対するその出力オペランドの引き渡しに供される物理レジスタは、各命令ブロックに含まれる命令の順序に適応した物理レジスタに一義的に設定される。
したがって、上述した出力オペランドは、共通の基本ブロックおよび後続する基本ブロックに含まれる命令の入力オペランドとして、効率的に引き渡される。
本発明にかかわる第六の命令制御装置の原理は、下記の通りである。
オペランド引き渡し手段１４は、基本ブロックに含まれる命令の入力オペランドの内、その基本ブロックの内部において依存関係がない入力オペランドに対する既存の物理レジスタの割り付けを維持する。
このような命令制御装置では、先行する基本ブロックに含まれる命令の出力オペランドは、その基本ブロックに後続する単一または複数の基本ブロックに含まれる命令の入力オペランドに該当し得る限り、他の物理レジスタに転送され、あるいは複写されることなく、これらの後続する基本ブロックに対して効率的に引き渡される。
したがって、物理レジスタの管理にかかわる処理が無用に複雑化することなく、命令制御が効率的に達成される。
本発明にかかわる第七の命令制御装置の原理は、下記の通りである。
仮想割り付け手段１２は、機能ユニット１３−１〜１３−ｎの内、基本ブロックに含まれる個々の命令の機能を有する機能ユニットに対応したキャッシュメモリに、その命令の操作符号と、この命令の入力オペランドと出力オペランドとにそれぞれ対応付けられた入力レジスタと出力レジスタとの基準アドレスとからなるレコードを格納する。オペランド引き渡し手段１４は、機能ユニット１３−１〜１３−ｎに対応するキャッシュメモリ１３Ｃ−１〜１３Ｃ−ｎに格納された最先のレコードに含まれる基準アドレスより一義的に定まり、これらのレコードに対応する命令の実行に必要な数の入力オペランドおよび出力オペランドに対応付けられた入力レジスタと出力レジスタとの集合毎に、物理レジスタを割り付ける。
このような命令制御装置では、基本ブロック毎に含まれる何れの機械語も、その機械語の実行を可能とする機能を具備した機能ユニットに対応したキャッシュメモリに、全てのオペランドの識別子が含まれることなく分配され、これらの機能ユニットによる機能分散の下で並行して実行される。
したがって、個々の命令に対応した機能ユニットとキャッシュが備えられる限り、これらの命令の実行に必要なオペランドの数および組み合わせの如何にかかわらず、性能が低下することなく多様な命令の効率的な実行が可能となる。
本発明にかかわる第八の命令制御装置の原理は、下記の通りである。
分岐先テーブル１２Ｔ−１〜１２Ｔ−ｎには、基本ブロックの列に対して、これらの基本ブロック毎に、キャッシュメモリ１３Ｃ−１〜１３Ｃ−ｎに最先に格納された操作符号を有する命令が格納された記憶領域を示すキャッシュアドレスと、主記憶の記憶領域の内、これらの命令が個別に格納された記憶領域のアドレスとが格納される。オペランド引き渡し手段１４は、機能ユニット１３−１〜１３−ｎの内、特定の機能ユニットによって有効な分岐が行われるときに、分岐先を示すアドレスに対応して分岐先テーブル１２Ｔ−１〜１２Ｃ−ｎに格納されたキャッシュアドレスにキャッシュメモリ１３Ｃ−１〜１３Ｃ−ｎの読み出しポインタを更新する。
このような命令制御装置では、分岐先に該当する基本ブロックの全ての命令がキャッシュメモリ１３Ｃ−１〜１３Ｃ−ｎに区分されて蓄積されている限り、その分岐先に対する分岐は、これらのキャッシュメモリ１３Ｃ−１〜１３Ｃ−ｎの読み出しポインタの更新によって達成される。
したがって、分岐が有効に行われるべきことが確定した時点で分岐先に該当する基本ブロックの命令が主記憶からあらためて読み出され、かつキャッシュメモリ１３Ｃ−１〜１３Ｃ−ｎに配分されて格納されなければならない場合に比べて、分岐の高速化が図られる。
本発明にかかわる第九の命令制御装置の原理は、下記の通りである。
基本ブロックは、機械語の列に含まれ得る命令の機能を有する機能ユニット毎に対応し、その機械語に含まれる命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部が個別にパックされた語の列として構成される。
このような命令制御装置では、基本ブロック毎に含まれる個々の命令が対応する機能ユニット、またはこれらの機能ユニットに対応するキャッシュメモリに配分されるために行われるべき処理の手順は、上述した操作符号と入力オペランドと出力オペランドとの全てが何ら個別にパックされない場合に比べて、簡略化される。
したがって、プリデコードおよび命令制御の効率が向上し、かつ総合的な処理速度が高められる。
本発明にかかわる第十の命令制御装置の原理は、下記の通りである。
機械語の列に含まれ得る特定の命令は、操作符号が即値オペランドとして含まれ、その操作符号に代えて入力オペランドと出力オペランドとの数の組み合わせが配置されることによって構成される。
このような命令制御装置では、本来的に操作符号が配置されるべきフィールドの語長では表現され得ない程度に、上記の特定の命令と共通の機能ユニットを介して達成されるべき機能の数および組み合わせが多数に亘る場合であっても、その機能ユニットが既述の即値オペランドとして与えられた操作符号と、本来的な操作符号に代えて与えられた入力オペランドと出力オペランドとの数の組み合わせとを識別できる限り、所望の機能の追加や変更が可能となる。
したがって、基本的な命令の体系が変更されることなく、多様な機能の追加や変更が柔軟に達成される。
本発明にかかわる第十一の命令制御装置の原理は、下記の通りである。
操作符号には、対応する機能ユニットの識別子またはこれらの機能ユニットの異同を意味する情報がパックされる。
このような命令制御装置では、全ての操作符号が基本ブロック毎にパックされて与えられる場合であっても、これらの操作符号は、上述した情報に基づいて簡便に区分され、かつ対応する機能ユニットに分配される。
したがって、プリデコードおよび命令制御の効率が高められる。
本発明にかかわる第十二の命令制御装置の原理は、下記の通りである。
操作符号は、対応する機能ユニットが異なる場合に値が重複し得る語として構成される。
このような命令制御装置では、何れかの機能ユニットによって達成されるべき機能の数や組み合わせが多数であっても、主記憶に格納されるべき機械語の語長の変更が回避され得る。
したがって、主記憶の語長や基本的な命令の語長が変更されることなく、多様な機能の追加や変更が柔軟に達成される。
本発明にかかわる第十三の命令制御装置の原理は、下記の通りである。
基本ブロックに含まれる分岐命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部は、この基本ブロックの先頭もしくは末尾にパックされる。
このような命令制御装置では、何れの基本ブロックにも、演算命令の列と転送命令の列とが分岐命令を含まない命令の列として与えられるので、このような分岐命令が基本ブロック内における既定の位置に基づいて特定され、かつ対応する機能ユニットに分配される限り、これらの演算命令および転送命令との区分は、両者の命令の境界に付加され、かつ語長が短くて簡便に識別が可能なデリミッタに基づいて効率的に達成される。
したがって、主記憶に基本ブロック毎に格納されるべき機械語の構成の簡略化と短縮とが図られる。
本発明にかかわる第十四の命令制御装置の原理は、下記の通りである。
基本ブロックは、語長が一定である語の列として構成される。
このような命令制御装置では、主記憶の語長や命令の形式が基本的に変更されることなく、既述の命令制御が達成される。
したがって、本発明は、固定語長の命令体系を有する多様な情報処理装置に対する柔軟な適用が可能となる。
本発明にかかわる第十五の命令制御装置の原理は、下記の通りである。
汎用レジスタは、物理レジスタの一部として構成される。
このような命令制御装置では、汎用レジスタに格納された入力オペランドと、汎用レジスタに保持されるべき出力オペランドとの何れも、物理レジスタとの間で無用に転送されることなく、他の基本ブロックと相互に引き渡される。
したがって、構成の簡略化と応答性の向上とが図られる。
図２は、本発明にかかわる機能ユニットの原理ブロック図である。
図２に示す機能ユニットは、キャッシュメモリ２１、スケジューラ２２および処理手段２３から構成される。
本発明にかかわる第一の機能ユニットの原理は、下記の通りである。
スケジューラ２２は、操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリ２１に格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリ２１に格納され、かつ実行が可能な命令を順次選択する。処理手段２３は、スケジューラ２２によって選択された命令をキャッシュメモリ２１から取得し、この命令のオペランドを示す識別子を命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う。スケジューラ２２は、キャッシュメモリ２１に格納された命令の内、選択された命令とその命令が属する基本ブロックの番号とをこのキャッシュメモリ２１に順次格納し、その基本ブロックの実行の反復にこの基本ブロックの番号を読み替えて適用する。
このような機能ユニットでは、例えば、何れの基本ブロックに属する命令の列についても、反復して実行されるべき順序が「先行して行われた実行の過程において、実際に実行が可能となった順序」の通りに設定され、あるいは、「オペレーションの結果」がすぐに利用されないオペレーションに比べて、「その結果がすぐに利用されるオペレーション」の順序が優先される。
したがって、反復処理の効率が高められる。
本発明にかかわる第二の機能ユニットの原理は、下記の通りである。
スケジューラ２２は、操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリ２１に格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリ２１に格納され、かつ実行が可能な命令を順次選択する。処理手段２３は、スケジューラ２２によって選択された命令をキャッシュメモリ２１から取得し、この命令のオペランドを示す識別子を命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う。スケジューラ２２は、実行が可能な命令の内、特定の操作符号を有する命令を優先して選択する。
このような機能ユニットでは、キャッシュメモリ２１に格納され、かつ後続して実行されるべき基本ブロックの一連の命令の列に上述した特定の操作符号を有する命令が含まれる場合には、その特定の操作符号を有する命令は、実行に必要な全てのオペランドが揃い次第、先行する基本ブロックに含まれる命令より優先的に実行される。
したがって、この特定の操作符号を有する命令以降の依存関係は、この命令を適用したプログラマの意図の通りに、効率的に、かつ早期に保証される。
本発明にかかわる第三の機能ユニットの原理は、下記の通りである。
スケジューラ２２は、操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリ２１に格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリ２１に格納され、かつ実行が可能な命令を順次選択する。処理手段２３は、スケジューラ２２によって選択された命令をキャッシュメモリ２１から取得し、この命令のオペランドを示す識別子を命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う。スケジューラ２２は、キャッシュメモリ２１に格納された命令の内、特定の操作符号を有する命令については、その命令の即値オペランドまたはこの即値オペランドに対して規定の相関性を有する情報が外部から与えられ、またはその外部に引き渡すことができたときに選択する。
このような機能ユニットは、上述した情報が交換されることによって、既述の特定の操作符号を有する命令の実行にかかわる機能や負荷を分担する他の機能ユニットまたは装置に同期して作動する。
したがって、機能の追加や変更に応じて行われるべき複数の機能ユニットの間の機能分散や負荷分散が柔軟に達成される。
図３は、本発明にかかわるプログラム変換装置の原理ブロック図である。
図３に示すプログラム変換装置は、機会部分解手段３１、命令区分手段３２および変換手段３３から構成される。
本発明にかかわるプログラム変換装置の原理は、下記の通りである。
機械語分解手段３１は、機械語の列を基本ブロックの列に区分し、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとに併せて、これらの命令の操作符号を抽出する。命令区分手段３２は、基本ブロック毎に、機械語分解手段３１によって抽出された個々の操作符号をその操作符号に適応した処理を行うべき機能ユニット毎に区分する。変換手段３３は、機械語分解手段３１によって抽出された入力オペランドおよび出力オペランドと、命令区分手段３２によって区分された操作符号とが機能ユニットの順に基本ブロック毎にパックされ、かつ命令制御に適合した形式の語の列に機械語の列を変換する。
このようなプログラム変換装置では、既存の機械語、または所望の形式の機械語は、これらの機械語に対応した原始プログラムのアセンブリングが再試行されなくても、本発明にかかわる命令制御の下で実行される。
したがって、既存のオブジェクトプログラムやロードモジュールの有効な活用が図られる。
図４は、本発明にかかわる言語処理装置の原理ブロック図である。
図４に示す言語処理装置は、原始プログラム分解手段４１、命令区分手段４２および変換手段４３から構成される。
本発明にかかわる言語処理装置の原理は、下記の通りである。
原始プログラム分解手段４１は、アセンブラ言語で記述され、かつアセンブリ命令に該当しない命令の列を基本ブロックの列に区分し、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとの識別子に併せて、これらの命令の記号命令を抽出する。命令区分手段４２は、基本ブロック毎に、原始プログラム分解手段４１によって抽出された個々の記号命令をその記号命令に適応した処理を行うべき機能ユニット毎に区分する。変換手段４３は、原始プログラム分解手段４１によって抽出された識別子と、命令区分手段４２によって区分された記号命令とに個別に対応した入力オペランド、出力オペランドおよび操作符号が機能ユニットの順に基本ブロック毎にパックされ、かつ命令の列の命令制御に適合した形式の機械語の列にその命令の列を変換する。
このような言語処理装置では、アセンブラ言語で記述された既存の原始プログラム、または所望のアセンブラ言語で記述された原始プログラムは、これらの原始プログラムに本来的に適合したアセンブラに基づくアセンブリングが行われなくても、本発明にかかわる命令制御の下で実行が可能な機械語の列に直接変換される。
したがって、既存の原始プログラムの有効な活用が図られる。
以下、図面に基づいて本発明の実施形態について詳細に説明する。
図５は、本発明の第一ないし第五の実施形態を示す図である。
図において、外部バス５０には二次キャッシュメモリ（以下、「二次キャッシュ」という。）５１が接続され、その二次キャッシュ５１の読み出しポートはプリデコーダ５２の入力に接続される。そのプリデコーダ５２の第一ないし第十の出力には、キャッシュメモリ（以下、単に「キャッシュ」という。）５３Ｉｍｄ、５３ＩＢＩ、５３ＡＬＵ、５３ＩＭＵ、５３ＬＳＵ、５３ＦＰＵ、５３ＦＢＩ、５３ＥＩｍｄ、５３ＥＸＵ、５３ＥＢＩの第一の入力に接続され、そのプリデコーダ５２の入出力ポートはコントロールユニット６０の対応するポートに接続される。キャッシュ５３Ｉｍｄ、５３ＥＩｍｄの出力はそれぞれレジスタ５４Ｉｍｄ、５４ＥＩｍｄの入力に接続され、かつキャッシュ５３ＡＬＵ、５３ＩＭＵ、５３ＬＳＵ、５３ＦＰＵ、５３ＥＸＵにはそれぞれポストスケジューラ５５ＡＬＵ、５５ＩＭＵ、５５ＬＳＵ、５５ＦＰＵ、５５ＥＸＵが縦続接続される。レジスタ５４Ｉｍｄの出力はポストスケジューラ５５ＡＬＵ、５５ＩＭＵ、５５ＬＳＵ、５５ＦＰＵの第一の入力に接続され、かつレジスタ５４ＥＩｍｄの出力はポストスケジューラ５５ＥＩｍｄの第一の入力に接続される。キャッシュ５３ＩＢＩ、５３ＦＢＩ、５３ＥＢＩの出力はそれぞれレジスタ管理部５６ＩＢＩ、５６ＦＢＩ、５６ＥＢＩの対応する入力ポートに接続され、そのレジスタ管理部５６ＩＢＩのポートはポストスケジューラ５５ＡＬＵ、５５ＩＭＵ、５５ＬＳＵの第二の入力に接続される。レジスタ管理部５６ＦＢＩの出力はポストスケジューラ５５ＬＳＵ、５５ＦＰＵの第二の入力に接続され、かつレジスタ管理部５６ＥＢＩの出力はポストスケジューラ５５ＥＸＵの第二の入力に接続される。ポストスケジューラ５５ＡＬＵ、５５ＩＭＵ、５５ＬＳＵ、５５ＦＰＵ、５５ＥＸＵの出力は、それぞれ機能ユニット５７ＡＬＵ、５７ＩＭＵ、５７ＬＳＵ、５７ＦＰＵ、５７ＥＸＵの入力に接続される。これらの機能ユニット５７ＡＬＵ、５７ＩＭＵのオペランド端子と機能ユニット５７ＬＳＵの第一のオペランド端子とはレジスタファイル５８Ｉの対応する入出力端子に接続され、かつ機能ユニット５７ＬＳＵの第二のオペランド端子と機能ユニット５７ＦＰＵのオペランド端子とはレジスタファイル５８Ｆの対応する入出力端子に接続される。機能ユニット５７ＥＸＵのオペランド端子はレジスタファイル５８Ｅの対応する入出力端子に接続され、その機能ユニット５７ＥＸＵの同期出力は機能ユニット５７ＬＳＵの同期入力に接続される。この機能ユニット５７ＬＳＵの第三のオペランド端子はデータキャッシュメモリ５９の一方のポートに接続され、そのデータキャッシュメモリ５９の他方のポートは二次キャッシュ５１の対応するポートに接続される。
なお、上記の各部の符号に付加された添え文字「Ｉｍｄ」、「ＩＢＩ」、「ＡＬＵ」、「ＩＭＵ」、「ＬＳＵ」、「ＦＰＵ」、「ＦＢＩ」、「ＥＩｍｄ」、「ＥＸＵ」、「ＥＢＩ」は、それぞれ「整数イミーディエイトデータ」、「整数系バス命令」、「算術論理演算ユニット」、「整数ミスクユニット」、「ロードストアユニット」、「浮動小数点演算ユニット」、「浮動小数点系バス命令」、「拡張イミーディエイトデータ」、「拡張演算ユニット」、「拡張系バス命令」を意味する。なお、「バス命令」については、簡単のため、後述する。
図６ａ〜６ｃは、本発明の第一の実施形態の動作を脱明する図（１）である。
図７は、本発明の第一の実施形態の動作を説明する図（２）である。
図８は、本発明の第一の実施形態の動作を説明する図（３）である。
［実施形態１］
以下、図５〜図８を参照して本発明の第一の実施形態の動作を説明する。
二次キャッシュ５１には、所定の言語処理系によって予め生成され、かつ図示されない主記憶の所定の記憶領域に格納された機械語の列が外部バス５０を介して順次格納される。なお、このような言語処理系については、アセンブラのみに限定されず、「上述した機械語の列をロードモジュールとして直接生成するコンパイラ（リンカやロケータを含む。）」と、『「本発明が適用されることなく構成されたプロセッサ（ＲＩＳＣプロセッサでなくてもよい。）が実行可能なロードモジュール」に所定の変換処理を施すプログラム変換系』との何れであってもよい。
また、上述した機械語の列は、例えば、その機械語に対応する原始プログラムが図６ａ（１）〜（１２）に列記された命令の列から構成される場合には、図６ｂに示されるように、一般的なＲＩＳＣプロセッサに適合したプログラムブロックｐｂ１、ｐｂ２に区分される。しかし、本実施形態では、これらの機械語の列は、図６ｃに示すように、下記の点でこれらのプログラムブロックｐｂ１、ｐｂ２と異なるプログラムブロックＰＢ１、ＰＢ２に対応した機械語の順列（以下、「集合機械語列」と称し、プログラムブロックとの対応関係を明示するために、対応するプログラムブロックと共通の識別子「ＰＢ１」、「ＰＢ２」を付与して示す。）として、与えられる。
・  分岐命令が含まれる場合には、その分岐命令は先頭に配置される。
・  転送命令が末尾に一括して配置される。
・  これらの分岐命令と転送命令の列との間に、演算命令が配置される。
さらに、集合機械語列ＰＢ１、ＰＢ２は、図７に示すように、下記の通りに構成される。
（１）一定の語長（ここでは、簡単のため３２ビット長であると仮定する。）の語の列として構成される。
（２）これらの語の全ての下位オーダの７ビットには、それぞれ該当する機械語の記号命令（ニーモニックコード）に対応する「操作符号」（図７では、図６に示す機械語との対応関係を明確に示すため、記号命令で表記する。）が配置される（図７（１））。
（３）その７ビットの上位に隣接する１ビットには、対応する集合機械語列に最先に含まれる演算命令または転送命令にこの７ビットで示される操作符号が該当する場合に限って、論理値が「１」に設定される単一のビットからなるセパレータＦが配置される（図７（２））。
（４）先頭の語の上位２４（＝３２−７−１）ビットには、ＭＳＢ側より順にパックされた下記の情報（以下、「制御情報」という。）が配置される。
▲１▼該当する集合機械語列の構成の変更や拡張に供されるスペアビットＥ（ここでは、簡単のため、論理値が常に「０」に設定されると仮定する。）（図７（３））
▲２▼該当する集合機械語列の実行が完了した後に行われるべき処理（例えば、無分岐、条件分岐、無条件分岐、「サブルーチンへの無条件分岐」、「サブルーチンからの復帰」等々の何れか）の形態ＮｘＳｔａｔｅ（図７（４））
▲３▼該当する集合機械語列にオペランドとして含まれるイミーディエイトデータの語数ＮＩｍｄＷ（図７（５））
▲４▼該当する集合機械語列に含まれる浮動小数点系バス命令の語数ＮＩＢＩＷ（図７（６））
▲５▼該当する集合機械語列に含まれる整数バス系命令の語数ＮＦＢＩＷ（図７（７））
▲６▼プログラムブロックに対応した集合機械語列の先頭の語であること意味する特定のビットパターン（図７（８））
（５）先頭の語に後続する全ての語の上位２４（＝３２−７−１）ビット（以下、「オペランド群」という。）には、下記のオペランドがＭＳＢ側から順にパックされる（ただし、余剰のフィールドには、既定のダミーワードがパックされる）。
▲１▼該当する集合機械語列にその集合機械語列の先頭から順に配置された分岐命令、演算命令、転送命令の列（以下、「被包含命令列」という。）の入力オペランドに該当する汎用レジスタ（ここでは、簡単のため、６４個のレジスタの何れかに該当すると仮定する。）を示す６（＝ｌｏｇ２６４）ビット長の識別子の列（図７（９））
なお、このような入力オペランドを示す識別子については、同一の集合機械語列に含まれる何らかの命令の出力オペランドに等しい場合には、図７に示すように、上述した６４個の汎用レジスタの内、これらの命令の順に個別に予め対応付けられた第５６（＝６４−８）（集合機械語列当たりに含まれ得る命令の最大の数（＝８）に対して一義的に定まる。）ないし第６４の汎用レジスタ（以下、「特定の汎用レジスタ」という。）の識別子に該当する。
▲２▼被包含命令列の入力オペランドに該当するイミーディエイトデータ（以下、「即値オペランド」という。）の値（ここでは、簡単のため、８ビット長の整数のみであると仮定する。）の列（図７（１０））
▲３▼被包含命令列の出力オペランドに該当する汎用レジスタ（ここでは、簡単のため、６４個のレジスタの集合として構成されると仮定する。）を示す６（＝ｌｏｇ２６４）ビット長の識別子の列（図７（１１））
なお、以下では、「オペランド群」に配置され、かつ上述した入力オペランドまたは出力オペランドにそれぞれ該当する汎用レジスタの識別子の列については、単に「バス命令」という。
また、レジスタ管理部５６ＩＢＩには、図９に示すように、下記のレジスタフリーバッファ６１Ｉ、レジスタフリーリスト６２Ｉ、汎用レジスタ管理テーブル６３Ｉおよび機能レジスタ管理テーブル６４Ｉｉ、６４Ｉｏが備えられる。
（１）既述のプログラムブロック毎に対応したプッシュアップメモリとして構成され、かつ『レジスタファイル５８Ｉに備えられた複数の物理レジスタの内、「対応するプログラムブロック（分岐予測の下で、実際には実行されない可能性がある。）に含まれる何れの命令のオペランド」にも割り付けられないために、「後続するプログラムブロック（分岐予測の下で、実際には実行されない可能性がある。）に含まれる何らかのオペランド」として割り付けられ得る物理レジスタ（以下、「未確定空レジスタ」という。）』の識別子の列が格納されるレジスタフリーバッファ６１Ｉ
（２）既述のプログラムブロック毎に対応したプッシュアップメモリとして構成され、かつ『レジスタファイル５８Ｉに備えられた複数の物理レジスタの内、「対応するプログラムブロックに含まれる何れの命令のオペランド」にも割り付けられないことが確定しているために、「後続して実行されるプログラムブロック（分岐予測の下で、実際には実行されない可能性がある。）に含まれる何らかのオペランド」として割り付けられ得る物理レジスタ（以下、「確定空レジスタ」という。）』の識別子の列が格納されるレジスタフリーリスト６２Ｉ
（３）既述のプログラムブロック毎に対応したプッシュダウンメモリとして構成され、かつ「レジスタファイル５８Ｉに備えられた複数の物理レジスタの内、対応するプログラムブロックにおいて個々の汎用レジスタとして適用されるべき物理レジスタ（以下、「汎用物理レジスタ」という。）」の識別子の列が格納される汎用レジスタ管理テーブル６３Ｉ
（４）既述のプログラムブロック毎に対応し、かつサイクリックに参照されると共に、「個々の入力オペランドと出力オペランドとに暫定的に対応付けられ得る最大の数の仮想的な機能レジスタ」に個別に対応した語の集合として構成されると共に、『レジスタファイル５８Ｉに備えられた複数の物理レジスタの内、「この対応するプログラムブロックに含まれる入力オペランドの列と出力オペランドの列とに実体的に割り付けられた物理レジスタ（以下、「実体レジスタ」という。）』の識別子の列がそれぞれ格納される機能レジスタ管理テーブル６４Ｉｉ、６４Ｉｏ
ここに、「機能レジスタ」とは、『個々のプログラムブロック毎に、オペランドに論理的に対応付けられ得る仮想的なレジスタであり、かつ入力オペランドと出力オペランドとにそれぞれ対応付けられ得る所定の数の「入力機能レジスタ」と「出力機能レジスタ」との集合』を意味する。
さらに、機能レジスタ管理テーブル６４Ｉｉ、６４Ｉｏは、ポストスケジューラ５５ＡＬＵ、５５ＩＭＵ、５５ＬＳＵに、『これらの全ての語（プログラムブロック毎に対応する。）について、有効な「実体レジスタ」の識別子が格納されているか否かを示す二値情報（ここでは、簡単のため、真偽がそれぞれ論理値「１」、「０」で示されると仮定する。）の集合からなる「オペランドステータス」』を並行して分配する。
ところで、上述した集合機械語列は、二次キャッシュ５１に一旦格納された後に、プリデコーダ５２とコントロールユニット６０との連係の下で下記の通りに区分され、かつキャッシュ５３Ｉｍｄ、５３ＩＢＩ、５３ＡＬＵ、５３ＩＭＵ、５３ＬＳＵ、５３ＦＰＵ、５３ＦＢＩ、５３ＥＩｍｄ、５３ＥＸＵ、５３ＥＢＩに配分（ディスパッチ）される。
プリデコーダ５２は、集合機械語列の各語の下位７ビットに配置された操作符号の列から既述のセパレータＦの論理値に基づいて分岐命令の操作符号と、演算命令のみの操作符号の列と、転送命令のみの操作符号の列とを抽出し、かつ下記の「分岐命令語」と、「演算命令語」の列と、「転送命令語」の列とを生成する。
・  該当する集合機械語列として示されるプログラムブロックに付与された「ＰＢ番号」（後述する第三の実施形態が合わせて組み込まれない限り、このプログラムブロックの如何にかかわらず、「０」であってもよい。）に併せて、上述した分岐命令の操作符号（または、この操作符号語に対応し、かつ分岐命令の種別を示すユニークな「変換オペレーションコード」）がＭＳＢ側から順にパックされてなる「分岐命令語」
・  上述した「ＰＢ番号」に併せて、個々の演算命令の操作符号（または、この操作符号語に対応し、かつ演算命令の種別を示すユニークな「変換オペレーションコード」）がＭＳＢ側から順にパックされてなる「演算命令語」の列
・  上述した「ＰＢ番号」に併せて、個々の転送命令の操作符号（または、この操作符号語に対応し、かつ転送命令の種別を示すユニークな「変換オペレーションコード」）がＭＳＢ側から順にパックされてなる「転送命令語」の列
さらに、プリデコーダ５２は、これらの「分岐命令語」、「演算命令語」および「転送命令語」の全てに下記の処理を施すことによって、上述した「分岐命令語」、「演算命令語」の列および「転送命令語」の列を確定する。
・  個々の命令語に含まれる操作符号に適応した演算対象が予め格納されるべき汎用レジスタ（以下、単に「入力オペランド」という。）の数Ｎｉと、演算結果が格納されるべき汎用レジスタ（以下、単に「出力オペランド」という。）の数Ｎｏと、その演算対象として与えられるべきイミーディエイトデータ（以下、「即値オペランド」という。）の数ＮＩとを求める。
・  「分岐命令語」には、このようにして求められた「入力オペランド」（例えば、分岐条件の有無や態様だけではなく、主記憶上における分岐先のアドレスの算出や特定に際して参照されるべき情報が格納される汎用レジスタに該当する。）の数Ｎｉ（該当するプログラムブロック内におけるその数Ｎｉの積算値ΣＮｉに等しい。）に併せて、「即値オペランド」（主記憶上における分岐先のアドレス等を示す。）の数ＮＩ（該当するプログラムブロック内におけるその数ＮＩの積算値ΣＮＩに等しい。）をパックする。
・  「演算命令語」と「転送命令語」とには、該当するプログラムブロック内における上述した「入力オペランド」、「出力オペランド」および「即値オペランド」の数Ｎｉ、Ｎｏ、ＮＩの積算値ΣＮｉ、ΣＮｏ、ΣＮＩを順次パックする。
なお、以下では、上述した「分岐命令語」、「演算命令語」および「転送命令語」の何れかに該当する命令語については、簡単のため、「機能別命令語」という。
また、プリデコーダ５２は、このようにしてプログラムブロック毎に求められ、そのプログラムブロックに含まれる一連の命令に対して個別に求められた既述の積算値ΣＮｉ、ΣＮｏの列と、該当するプログラムブロックを示すＰＢ番号とをコントロールユニット６０に引き渡す。
さらに、プリデコーダ５２は、上述した処理の手順に基づいて『該当するプログラムブロックに含まれる「入力オペランド」、「出力オペランド」および「即値オペランド」の数の個々の総数ΣＴＯＴＡＬＮｉ、ΣＴＯＴＡＬＮｏ、ΣＴＯＴＡＬＮＩ』が確定すると、上述した処理に並行して下記の処理を行う。
・  これらの総数ΣＴＯＴＡＬＮｉ、ΣＴＯＴＡＬＮｏ、ΣＴＯＴＡＬＮＩと該当する集合機械語列の先頭に含まれる「制御情報」とに基づいて、その集合機械語列の「オペランド群」を区分することによって、この「オペランド群」から「入力オペランド」に該当する汎用レジスタの識別子の列Ｓｉと、「即値オペランド」の値の列ＳＩとに併せて、「出力オペランド」に該当する汎用レジスタの識別子の列Ｓｏとを抽出する。
・  これらの「入力オペランド」および「出力オペランド」にそれぞれ該当する汎用レジスタの識別子の列Ｓｉ、Ｓｏをキャッシュ５３ＩＢＩに格納し、かつ「即値オペランド」の値の列ＳＩをキャッシュ５３Ｉｍｄに格納する。
一方、レジスタ５４Ｉｍｄは、このようにしてキャッシュ５３Ｉｍｄに格納された「即値オペランド」の値の列ＳＩをプログラムブロック単位に順次読み出し、その列ＳＩに含まれる全ての「即値オペランド」をポストスケジューラ５５ＡＬＵ、５５ＩＭＵ、５５ＬＳＵ、５５ＦＰＵに並行して分配する。
なお、このような「即値オペランド」の値の列ＳＩには、その先頭部から順に含まれる「即値オペランド」が有効であるか否かを個別に示す二値情報（ここでは、簡単のため、真偽がそれぞれ論理値「１」、「０」で示されると仮定する。）の集合からなる「イミーディエイトステータス」に併せて、個々の無効な「即値オペランド」に相当する部位に配置された「フィラー」が含まれる。
また、レジスタ管理部５６ＩＢＩに備えられたレジスタフリーリスト６２Ｉには、レジスタファイル５８Ｉに備えられた複数の物理レジスタの内、既述の「確定空レジスタ」に該当する全ての物理レジスタの識別子がプログラムブロック毎に先行して格納される。
さらに、レジスタ管理部５６ＩＢＩは、プログラムブロック単位に下記の処理を行う。
（１）キャッシュ５３ＩＢＩに最先に格納され、かつ該当するプログラムブロックに含まれる一連の命令の「入力オペランド」と「出力オペランド」にそれぞれ該当する汎用レジスタの識別子の列Ｓｉ、Ｓｏを参照する。
（２）上述した識別子の列Ｓｏに含まれる個々の識別子で示され、かつ「出力オペランド」に相当する汎用レジスタに、下記の方針に基づいて物理レジスタを割り付ける。
▲１▼該当するプログラムブロックに対応する機能レジスタ管理テーブル６４Ｉｏのレコードのフィールドの内、これらのフィールドの先頭が上述した識別子の列Ｓｏに含まれる識別子の数（「０」であってもよい。）に亘って連なるフィールドと、レジスタフリーバッファ６１Ｉとに、レジスタフリーリスト６２Ｉに格納されている個々の「確定空レジスタ」の識別子を移す（図８（１））。
▲２▼残りのフィールドには、既定のダミー物理レジスタ番号（ここでは、簡単のため、「０」であると仮定する。）
（３）上述した識別子の列Ｓｉに含まれる個々の識別子で示され、かつ「入力オペランド」に相当する汎用レジスタに、下記の方針に基づいて物理レジスタを割り付ける。
▲１▼該当する識別子が『既述の「特定の汎用レジスタ」の何れかに該当すること』を意味する「５６」以上であるか否かを判別する。
▲２▼その判別の結果が偽である場合には、該当するプログラムブロックに対応する機能レジスタ管理テーブル６４Ｉｉのレコードのフィールドの内、この識別子の列Ｓｉに各識別子が含まれている順位のフィールド（以下、「入力機能レジスタフィールド」という。）に、『汎用レジスタテーブル６３Ｉのフィールドの内、その識別子に対応するフィールドに格納された（先行するプログラムブロックにおける共通の汎用レジスタに割り付けられていたことを意味する。）「汎用物理レジスタ」の識別子』を複写する（図８（２））。
▲３▼上述した判別の結果が真である場合には、同じプログラムブロックに対応する機能レジスタ管理テーブル６４Ｉｏのレコードを構成するフィールドの内、該当する識別子と「５６」との差に等しい順位に対応したフィールドに格納されている（共通のプログラムブロックに含まれる他の命令の出力オペランドに割り付けられたことを意味する。）物理レジスタの番号を複写する（図８（３））。
▲４▼上述した判別の結果の如何にかかわらず、該当する汎用レジスタテーブル６３Ｉの残りのフィールドには、上述したダミー物理レジスタ番号を格納する。
（４）レジスタフリーリスト６２Ｉにこれらの「汎用物理レジスタ」の識別子を格納する（図８（４））。
（５）汎用レジスタ管理テーブル６３Ｉに、『これらの「汎用物理レジスタ」の識別子が既述の「確定空レジスタ」の識別子で置換される（図８（４））ことによってなる語』を格納することによって、その汎用レジスタ管理テーブル６３Ｉを更新する。
ポストスケジューラ５５ＡＬＵ、５５ＩＭＵ、５５ＬＳＵは、それぞれ既述の通りにプリデコーダ５２によって生成され、かつキャッシュ５３ＡＬＵ、５３ＩＭＵ、５３ＬＳＵに格納された「分岐命令語」、「演算命令語」の列および「転送命令語」の列に含まれる個々の「機能別命令語」に適応した処理を下記の通りに並行して行う。
なお、以下では、ポストスケジューラ５５ＡＬＵ、５５ＩＭＵ、５５ＬＳＵと、キャッシュ５３ＡＬＵ、５３ＩＭＵ、５３ＬＳＵと、機能ユニット５７ＡＬＵ、５７ＩＭＵ、５７ＬＳＵとの動作については、添え文字「ＡＬＵ」「ＩＭＵ」、「ＬＳＵ」に代えて、『これらの動作が共通であり、かつ並行して行われることを意味する添え文字「Ｐ」』を適用して記述する。
「機能別命令語」にパックされた積算値ΣＮｉ、ΣＮｏは、その「機能別命令語」に適応した機能を実現する機能ユニット５７Ｐによってプログラムブロック毎に参照されるべき「入力オペランド」と「出力オペランド」とを意味し、かつ機能レジスタ管理テーブル６４Ｉｉ、６４Ｉｏの該当するレコードのフィールドの内、これらの「入力オペランド」と「出力オペランド」とに対応したフィールドを意味する。
さらに、この「機能別命令語」にパックされた積算値ΣＮＩは、その「機能別命令語」に適応した機能を実現する機能ユニット５７Ｐによってプログラムブロック毎に最先に参照されるべき「即値オペランド」の識別子を意味する。
ポストスケジューラ５５Ｐは、キャッシュ５３Ｐに格納された「機能別命令語」をプログラムブロック単位に参照することによって、下記の処理を行う。
（１）該当する「機能別命令語」にパックされた操作符号に応じて機能ユニット５７Ｐが行うべき処理の過程で参照されるべき入力オペランドおよび即値オペランドの数Ｎｉ、Ｎｏと、その処理の結果として生成されるべき出力オペランドの数ＮＩとを特定する。
（２）この「機能別命令語」にパックされた積算値ΣＮｉ、ΣＮｏおよび積算値ΣＮＩを参照し、下記の論理値の全てが「１」である（全てのオペランドが確定したことを意味する。）か否かを判別する。
・  既述の「オペランドステータス」のΣＮｉ番目以降にパックされたＮｉビットの論理値
・  この「オペランドステータス」のΣＮｏ番目以降にパックされたＮｏビットの論理値
・  既述の「イミーディエイトステータス」のΣＮＩ番目以降にパックされたＮＩビットの論理値
（３）この判別の結果が偽である場合には、該当する「機能別命令語」にかかわる処理を保留する。
（４）その判別の結果が真である場合には、下記の識別子と「即値オペランド」とに併せて、該当する「機能別命令語」にパックされた操作符号とからなる「命令」を機能ユニット５７Ｐに引き渡す。
・  機能レジスタ管理テーブル６４ＩｉのΣＮｉ番目以降のフィールドに格納されているＮｉ個の「実体レジスタ」（入力オペランドに割り付けられた物理レジスタを意味する。）の識別子
・  機能レジスタ管理テーブル６４ＩｏのΣＮｏ番目以降のフィールドに格納されているＮｏ個の「実体レジスタ」（出力オペランドに割り付けられた物理レジスタを意味する。）の識別子
・  既述の「即値オペランド」の値の列ＳＩにΣＮＩ番目以降に配置されたＮＩ個の「即値オペランド」（入力オペランドとして参照される。）
機能ユニット５７Ｐは、このようにしてポストスケジューラ５５Ｐによって引き渡された「命令」に応じて、下記の方針に基づいてその「命令」に適応した処理を行う。
・  レジスタファイル５８Ｐに備えられた物理レジスタの内、上述したＮｉ個の識別子で示される個々の「実体レジスタ」の内容と、上述したＮＩ個の「即値オペランド」の値とを入力オペランドとして参照する。
・  レジスタファイル５８Ｐに備えられた物理レジスタの内、上述したＮｏ個の識別子で示される個々の「実体レジスタ」に出力オペランドを格納する。
すなわち、プログラムブロック毎に含まれる全ての命令は、対応する機能ユニット毎に分類され、かつ既述の操作符号と積算値ΣＮｉ、ΣＮｏ、ΣＮＩとからなる「命令」としてその機能ユニットに引き渡された後に、これらの機能ユニットにおいて、機能レジスタ管理テーブル６４Ｉｉ、６４ＩｏのΣＮｉ番目以降およびΣＮｏ番目以降のフィールドに格納された所望の数の「実体レジスタ」として特定された入力オペランドおよび出力オペランドに併せて、既述の「即値オペランド」の値の列ＳＩのΣＮＩ番目以降に配置された所望の数の「即値オペランド」が適用されることによって、並行して実行される。
また、上述した処理（図８（１）〜（５））の過程では、個々の機能レジスタには、機能レジスタ管理テーブル６４Ｉｉ、６４Ｉｏを介してプログラムブロック毎に、該当するプログラムブロックの内部における依存関係と、先行するプログラムブロックおよび後続するプログラムブロックとの間における依存関係との双方が解消される形態で、空の物理レジスタが適宜オペランドに割り付けられる。
また、本実施形態によれば、既述のスペアビットＥの論理値に応じて、図７に示す機械語の形式とは異なる形式の機械語が並行して適用され得るだけではなく、例えば、図５に点線で示されるように、このような異なる形式の機械語、あるいはセパレータＦと共に付加された所望の操作符号に対応し得る機能ユニット５７ＦＰＵ（５７ＥＸＵ）に併せて、これらの機能ユニット５７ＦＰＵ（５７ＥＸＵ）に対応するキャッシュ５３ＦＰＵ、５３ＦＢＩ、ポストスケジューラ５５ＦＰＵおよびレジスタ管理部５６ＦＢＩ（キャッシュ５３ＥＩｍｄ、５３ＥＸＵ、５３ＥＢＩ、レジスタ５４ＥＩｍｄ、ポストスケジューラ５５ＥＸＵ、レジスタ管理部５６ＥＢＩおよびレジスタファイル５８Ｅ）が容易に付加され得る。
なお、「このように命令が拡張され、あるいは機能ユニットが増設された場合における機能ユニット５７ＦＰＵ（５７ＥＸＵ）と、キャッシュ５３ＦＰＵ、５３ＦＢＩ、ポストスケジューラ５５ＦＰＵおよびレジスタ管理部５６ＦＢＩ（キャッシュ５３ＥＩｍｄ、５３ＥＸＵ、５３ＥＢＩ、レジスタ５４ＥＩｍｄ、ポストスケジューラ５５ＥＸＵ、レジスタ管理部５６ＥＢＩおよびレジスタファイル５８Ｅ）との連係」については、「機能ユニット５７Ｐと、キャッシュ５３Ｉｍｄ、５３Ｐ、レジスタ５４Ｉｍｄ、ポストスケジューラ５５Ｐおよびレジスタ管理部５６ＩＢＩとの間における既述の連係」と同じであるので、ここでは、その説明を省略する。
すなわち、機械語が冗長な情報を含むことなく構成されるにもかかわらず、従来例に比べて、機械語のフォーマットの柔軟な変更が可能となり、かつ割り込み処理の起動に先行して内部の各部の情報が新規に保存される必要がない。
したがって、本実施形態によれば、ＲＩＳＣアーキテクチャの利点が損なわれることなく、かつ以下に列記されるように、機能の柔軟な追加や変更が可能となる。
・  拡張が可能な命令の実行レイテンシにかかわる自由度が確保される。
・  パイプラインの基本的な構成や動作の変更が容易となる。
・  転送命令、分岐命令その他の多様な命令の追加が容易である。
・  オペランド（即値オペランドを含む。）の数および語長の変更が命令毎に容易に実現される。
・  スーパスカラ、分岐予測、アウトオブオーダ実行等の技法に馴染み安く、これらの技法の適用による高速化が容易に達成される。
・  主記憶の記憶領域の利用効率が高められる。
・  ハードウエアの構成が複雑化することなく、その割り込み処理の起動の高速化が図られる。
なお、本実施形態では、機能ユニット５７Ｐに与えられるべき「即値オペランド」は、キャッシュ５３Ｉｍｄおよびレジスタ５４Ｉｍｄを介して適宜引き渡されたいる。
しかし、本発明はこのような構成に限定されず、これらの「即値オペランド」は、例えば、下記の何れの形態で機能ユニット５７Ｐに引き渡されてもよい。
・  プリデコーダ５２によって既述の「機能別命令語」の一部にパックされ、かつキャッシュ５３Ｐおよびポストスケジューラ５５Ｐを介して引き渡される。
・  物理レジスタの内、何れかの「確定空レジスタ」に格納され、その「確定空レジスタ」の識別子として引き渡される。
また、本実施形態では、汎用レジスタに割り付けられた物理レジスタが後続するプログラムブロックに引き継がれることによって、先行するプログラムブロックとの依存関係が保証されている。
しかし、本発明はこのような構成に限定されず、処理量（応答性）の低下が許容される場合には、汎用レジスタに割り付けられた物理レジスタがプログラムブロック毎に所望のアルゴリズムに基づいて更新され、異なる物理レジスタが割り付けられた汎用レジスタの内容はその汎用レジスタに先行して割り付けられた物理レジスタから適宜転送（複写）されてもよい。
さらに、本実施形態では、既述の出力機能レジスタに割り付けられる物理レジスタはプログラムブロック毎に更新され、かつ個々のプログラムブロックに含まれる一連の命令の出力オペランドはこのようにして割り付けられた物理レジスタに適宜格納されている。
しかし、本発明はこのような構成に限定されず、例えば、これらの出力オペランドは、全てのプログラムブロックに共通に割り付けられた物理レジスタに格納され、かつ後続するプログラムブロックに含まれる一連の命令の実行に先行して適宜退避され、あるいは依存関係の保証を可能とする適切な物理レジスタに転送されてもよい。
また、本実施形態では、図７に示す集合機械語列ＰＢ１、ＰＢ２に含まれる各語の下位オーダには、セパレータＦによって対応する機能ユニット毎に区分された操作符号の列が配置されている。
しかし、本発明はこのような構成に限定されず、集合機械語列ＰＢ１、ＰＢ２を構成する各語には、対応する機能ユニットの如何にかかわらず付与されたユニークな操作符号が格納されることが許容される場合には、上記のセパレータＦが含まれなくてもよい。
さらに、本実施形態では、各プログラムブロック毎に含まれる個々の命令の入力オペランド、出力オペランドおよび即値オペランドの数の積算値ΣＮｉ、ΣＮｏ、ΣＮＩは、プリデコーダ５２によって自立的に求められている。
しかし、本発明はこのような構成に限定されず、例えば、図７に示す各語の下位オーダの７ビットに「該当する命令の入力オペランド、出力オペランドおよび即値オペランドの数Ｎｉ、Ｎｏ、ＮＩ」がパックされ、かつ操作符号が「この命令の即値オペランド」として設定されることによって、上述した積算値ΣＮｉ、ΣＮｏ、ΣＮＩを求めるためにプリデコーダ５２によって行われるべき処理の簡略化が図られてもよい。
また、本実施形態では、既述のセパレータＦの論理値は、集合機械語列毎に含まれる操作符号の内、機能ユニット５７ＡＬＵ、５７ＩＭＵ、５７ＬＳＵに対応する最先の操作符号に付加されたセパレータＦに限って、「１」に設定されている。
しかし、このようなセパレータＦについては、集合機械語列に含まれる各語の語長の範囲で許容される限り、対応する機能ユニットを示すユニークな識別子と、これらの語の順に含まれる操作符号に対応した機能ユニットが変化する度に論理値が反転する単一のビットとの何れで代替されてもよい。
さらに、本実施形態では、個々の集合機械語列には、分岐命令に相当する語が末尾に配置されている。
しかし、このような分岐命令に相当する語は、該当する分岐命令が実行されるべき順序がプログラムブロック毎に適正に維持される限り、集合機械語列の如何なる位置に配置されてもよい。
また、本実施形態では、命令の語長が一定であるＲＩＳＣアーキテクチャのコンピュータに本発明が適用されている。
しかし、本発明は、このようなコンピュータに限定されず、例えば、可変語長の命令体系が適用されたコンピュータにも同様に適用可能である。
［実施形態２］
以下、図５を参照して本発明の第二の実施形態の動作を説明する。
コントロールユニット６０は、『キャッシュ５３ＡＬＵ、５３ＩＭＵ、５３ＬＳＵの記憶領域の内、これらのキャッシュ５３ＡＬＵ、５３ＩＭＵ、５３ＬＳＵに、プログラムブロック毎に含まれる最先の「分岐命令語」、「演算命令語」および「転送命令語」が書き込まれるべき記憶領域のポインタＷＰＡＬＵ、ＷＰＩＭＵ、ＷＰＬＳＵ』と、「このプログラムブロックの集合機械語列が格納された主記憶の記憶領域のポインタＭＰ」とを下記の値として識別する。
・  ＷＰＡＬＵ＝『プリデコーダ５２によって命令語が書き込まれた「キャッシュ５３ＡＬＵの記憶領域」の先頭アドレス』
・  ＷＰＩＭＵ＝『プリデコーダ５２によってキャッシュ５３ＩＭＵに書き込まれた「分岐命令語」の数の積算値』−『これらの「分岐命令語」の内、ポストスケジューラ５５ＩＭＵの配下で機能ユニット５７ＩＭＵによって実行された「分岐命令語」の数の積算値』
・  ＷＰＬＳＵ＝『プリデコーダ５２によってキャッシュ５３ＬＳＵに書き込まれた「転送命令語」の数の積算値』−『これらの「転送命令語」の内、ポストスケジューラ５５ＬＳＵの配下で機能ユニット５７ＬＳＵによって実行された「転送命令語」の数の積算値』
・  ＭＰ＝『主記憶の記憶領域の内、二次キャッシュ５１を介してプリデコーダ５２によってプログラムブロック毎に読み出された集合機械語列の先頭の語が格納された記憶領域のアドレス』
なお、これらのポインタＷＰＡＬＵ、ＷＰＩＭＵ、ＷＰＬＳＵ、ＭＰの識別を可能とするために、プリデコーダ５２とコントロールユニット６０とによって行われるべき処理の形態については、キャッシュ５３ＡＬＵ、５３ＩＭＵ、５３ＬＳＵのアドレッシングその他に応じて多様であり、本発明の特徴ではないので、ここでは、その詳細な説明を省略する。
さらに、コントロールユニット６０は、既述の「演算命令語」、「分岐命令語」および「転送命令語」の集合としてキャッシュ５３ＡＬＵ、５３ＩＭＵ、５３ＬＳＵにそれぞれ蓄積され得る最大の数のプログラムブロックに亘って、上述したポインタＭＰ、ＷＰＡＬＵ、ＷＰＩＭＵ、ＷＰＬＳＵの集合をプログラムブロック毎に適宜対応付け、例えば、図１０に示すＰＢテーブル９１に登録する。
機能ユニット５７ＩＭＵは、有効な分岐を行うべき場合には、コントロールユニット６０に、主記憶上における分岐先を示すポインタＭＰを引き渡す。
コントロールユニット６０は、上述したＰＢテーブル９１にそのポインタＭＰが登録されているか否かを判別し、この判別の結果が真である場合に限って、ポストスケジューラ５５ＡＬＵ、５５ＩＭＵ、５５ＬＳＵに、このポインタＭＰに対応付けられてＰＢテーブル９１に登録されているポインタＷＰＡＬＵ、ＷＰＩＭＵ、ＷＰＬＳＵを引き渡す。
ポストスケジューラ５５ＡＬＵ、５５ＩＭＵ、５５ＬＳＵは、上述した分岐に先行して実行されるべき「機能物命令語」０を実行した後に、キャッシュ５３６ＡＬＵ、５３ＩＭＵ、５３ＬＳＵの記憶領域の内、これらのポインタＷＰＡＬＵ、ＷＰＩＭＵ、ＷＰＬＳＵで示される記憶領域に格納された格納された「演算命令語」の列、「分岐命令語」および「転送命令語」の列を新たなプログラムブロックとして識別する。
なお、このようにして識別されたプログラムブロックの実行の過程におけるキャッシュ５３Ｉｍｄ、５３ＩＢＩ、レジスタ５４Ｉｍｄおよびレジスタ管理部５６ＩＢＩの動作については、基本的に既述の第一の実施形態と同じであるので、ここでは、その説明を省略する。
したがって、本実施形態によれば、分岐に応じてキャッシュ５３Ｐに既に蓄積されている「機能別命令語」の列が有効に参照され、処理の効率が総合的に高められる。
［実施形態３］
以下、図５を参照して本発明の第三の実施形態の動作を説明する。
本実施形態の特徴は、ポストスケジューラ５５Ｐによって行われる下記の処理の手順にある。
ポストスケジューラ５５Ｐは、『機能ユニット５７Ｐによって実行されるために必要なオペランドの全てが確定した「機能別命令語」』を順次キャッシュ５３Ｐに書き込む。
なお、以下では、このようにして順次書き込まれた「機能別命令語」については、簡単のため、「再格納機能別命令語」という。
さらに、ポストスケジューラ５５Ｐは、ポストスケジューラ５５ＩＭＵの主導（またはそのポストスケジューラ５５ＩＭＵと機能ユニット５７ＩＭＵとの連係）の下で、「他のプログラムブロックに分岐することなく、該当するプログラムブロックを反復して実行すべきこと」が識別されると、上述した「再格納機能別命令語」にパックされた「ＰＢ番号」を他の「ＰＢ番号」（例えば、既定の定数との和として与えられる。）に読み替えつつこの「再格納機能別命令語」の列の再実行を図る。
このような「再格納機能別命令語」の列は、先行して実際に実行が可能となった順序で上述した「機能別命令語」が並び替えられることによって得られる。
したがって、本実施形態によれば、同じプログラムブロックの実行が反復される過程では、先行して早く実行が可能となった命令から順に優先的に実行される。
［実施形態４］
図１１は、本発明の第四の実施形態の動作を説明する図である。
以下、図５および図１１を参照して本発明の第四の実施形態の動作を説明する。
本実施形態では、機能ユニット５７ＡＬＵによって実現されるべき演算命令として、先行するプログラムブロックに含まれる加算命令「ＡＤＤ」等の演算命令より優先して実行されるべき優先加算命令「ｐＡＤＤ」が付加される。
このような優先加算命令「ｐＡＤＤ」は、例えば、図１１（１）に示すように、加算命令「ＡＤＤ」が含まれてなるプログラムブロックＡに後続して実行されるべきプログラムブロックＢに含まれる。
ポストスケジューラ５５ＡＬＵは、プログラムブロックＡに含まれる演算命令が実行されるべき状態であっても、コントロールユニット６０およびレジスタ管理部５６ＩＢＩと連係することによって、下記の条件が成立するか否かを判別する。
・  後続するプログラムブロックＢに含まれる全ての「演算命令語」（以下、「後続演算命令」という。）が既にキャッシュ５３ＡＬＵに格納されている。
・  これらの「後続演算命令」の全てのオペランドに対する物理レジスタの割り付けが完了している。
この判別の結果が真である場合には、ポストスケジューラ５５ＡＬＵは、これらの「後続演算命令」に既述の優先加算命令「ｐＡＤＤ」が含まれるが否がを判別する。
さらに、ポストスケジューラ５５ＡＬＵは、この判別の結果が真である場合には、該当する優先加算命令「ｐＡＤＤ」を優先的に選択し、かつ機能ユニット５７ＡＬＵにこの優先加算命令「ｐＡＤＤ」の実行を要求する。
なお、機能ユニット５７ＡＬＵには、優先加算命令「ｐＡＤＤ」の実行を可能とする機能が予め具備され（あるいは新たに付加され）、かつプログラムブロックＢの入力オペランドと出力オペランドとに対する物理レジスタの割り付けは、プログラムブロックＡの実行が完了する前であってもパイプライン方式に基づいて先行して行われると仮定する。
すなわち、例えば、図１１（２）に示されるように、プログラムブロックＡに含まれるにもかかわらず、プログラムブロックＢに含まれる何れの命令との間にも依存関係がない加算命令「ＡＤＤ」より優先して、そのプログラムブロックＢに含まれる優先加算命令「ｐＡＤＤ」が実行される。
したがって、本実施形態によれば、既述の第一の実施形態に新たな機能を実現する優先加算命令「ｐＡＤＤ」が付加されることによって、このプログラムブロックＢにおいて優先加算命令「ｐＡＤＤ」に後続する減算命令「ＳＵＢ」と、さらに後続する分岐命令「ＢＺ」との依存関係（レジスタｒ６→ｒ８）が早期に保証される。
［実施形態５］
以下、図５を参照して本発明の第五の実施形態の動作を説明する。
本実施形態には、既述の機能ユニット５７ＥＸＵに併せて、その機能ユニット５７ＥＸＵと連係するキャッシュ５３ＥＩｍｄ、５３ＥＸＵ、５３ＥＢＩ、レジスタ５４ＥＩｍｄ、ポストスケジューラ５５ＥＸＵ、レジスタ管理部５６ＥＢＩおよびレジスタファイル５８Ｅが備えられる。
機能ユニット５７ＥＸＵは、例えば、機能ユニット５７ＬＳＵによって所定の転送命令が実行されるべき契機、その転送命令の転送先、転送元および転送の対象の何れかを出力オペランドとして特定する機能を有する。
機能ユニット５７ＬＳＵ、５７ＥＸＵは、これらの機能ユニット５７ＬＳＵ、５７ＥＸＵの連係の下で行われるべき転送命令を示す個別の、あるいは共通の「転送命令語」が与えられると、個別に所定の処理を行う。
しかし、機能ユニット５７ＬＳＵは、機能ユニット５７ＥＸＵによって特定され、かつ与えられるべき出力オペランド（上述した契機、転送先、転送元、転送の対象の何れか）が与えられる時点まで、該当する「転送命令語」の実行またはその実行の開始を保留する。
このように本実施形態によれば、複数の機能ユニットの連係の下で所望の機能を実現する命令の追加や変更が柔軟に達成され、これらの機能ユニットの内、何れか一方が既存の機能ユニットである場合には、その既存の機能ユニットの機能が無用に複雑化し、あるいは変更されることが回避される。
図１２は、本発明の第六の実施形態の動作フローチャートである。
［実施形態６］
以下、図６、図７および図１２を参照して本発明の第六の実施形態の動作を説明する。
本実施形態の特徴は、下記の「プログラム変換」を実現する処理の手順にある。
本実施形態では、図６ｂに示すように、ＲＩＳＣアーキテクチャに適合したアセンブラ言語で記載された原始プログラムがアセンブルされることによって生成され、かつ「３アドレス方式」に基づく機械語の列が上述した「プログラム変換」の対象として与えられる。
このような機械語の列は、下記の手順に基づいて処理される。
（１）「上述した第一ないし第五の実施形態の何れかにかかわるコンピュータにおいて、単一のプログラムブロック当たりに含まれることが許容される命令の最大の数ＮＭＡＸ」が与えられ、下記の条件の全てが成立する部分機械語列に、上述した機械語の列を分割する（図１２（１））。
・  分岐命令が何ら含まれず、あるいは単一の分岐命令が含まれる。
・  分岐命令が含まれる場合には、その分岐命令の分岐先は、該当する部分機械語列に含まれない。
・  含まれる機械語の数は、上述した最大の数ＮＭＡＸ以下である。
（２）全ての部分機械語列に対して下記の処理を施す。
▲１▼該当する部分機械語列に含まれる個々の機械語を『「分岐命令」、「演算命令」、（「浮動小数点演算命令」、「拡張命令」）および「転送命令」に相当する機械語』の各列（以下、「一次変換機械語列」という。）に変換する（図１２（２））。
▲２▼その「一次変換機械語列」に含まれる「操作符号（オペレーションコード）」の列（以下、「操作符号列」という。）、入力オペランドの列（以下、「入力オペランド列」という。）、即値オペランドの列（以下、「即値オペランド列」という。）および出力オペランドの列（以下、「出力オペランド列」という。）を生成する（図１２（３））。
▲３▼この「入力オペランド列」に含まれる入力オペランドの内、「出力オペランド列」に含まれ、かつ該当する機械語より先行する機械語の出力オペランド（以下、「被依存出力オペランド」という。）に該当する入力オペランド（以下、「依存入力オペランド」という。）を全て特定する（図１２（４））。
▲４▼これらの特定された「被依存出力オペランド」と「依存入力オペランド」との対の全てに対して下記の処理を施す。
・  該当する部分機械語列に含まれる機械語の内、「被依存出力オペランド」を含む機械語のその部分機械語列における順位Ｋ（≧０）を特定する（図１２（５））。
・  「５６＋Ｋ」で示される仮想的な汎用レジスタの番号に「依存入力オペランド」を置換する（図１２（６））。
▲５▼これらの「操作符号列」、「入力オペランド列」、「即値オペランド列」、「出力オペランド列」の構成等に基づいて既述の「制御情報」を求める（図１２（７））。
▲６▼下記の形式に適合した語の列として図７に示す集合機械語列を生成する（図１２（８））。
・  「操作符号列」に含まれる個々の「操作符号」が既述のセパレータＦと共に個々の語の下位の８ビットに配置される。
・  上述した「制御情報」が先頭の語の上位オーダにパックされる。
・  上述した「入力オペランド列」、「即値オペランド列」、「出力オペランド列」からなる「オペランド群」（だだし、余剰のフィールドには、既述の「ダミー物理レジスタ番号」が適宜が配置される。）が第二番目以降の一連の語の上位オーダにパックされる。
このように本実施形態によれば、ＲＩＳＣアーキテクチャに適合した所望のプロセッサが実行し得る機械語の列は、上述した第一ないし第五の実施形態の何れかにかかわるコンピュータによって実行可能な機械語に変換される。
ここに、「実行可能」とは、該当する機械語の実行に必要な全ての条件が成立した状態のみに限定されず、実行の過程でこれらの条件が成立すると見なし得ること、またはそのために発行の対象となりもしくはなったことも意味する。
したがって、既存のロードモジュールは、原始プログラムが参照されることなく速やかに、かつ効率的に有効なロードモジュールとして活用される。
なお、本実施形態では、既存のロードモジュール（機械語の列）が本発明にかかわるコンピュータによって実行可能なロードモジュールに直接変換されている。
しかし、このようなコンピュータによって実行可能なロードモジュールは、所望のアセンブリ言語で記述された原始プログラム（ソースプログラム）がシンボルの領域で直接変換され、かつアセンブルされることによって生成されてもよい。
また、本実施形態では、原始プログラムが図７に示す形式の機械語に変換されている。
しかし、本発明はこのような構成に限定されず、例えば、上述した原理プログラムが既述のバス命令やオペレーションコードに直接分解され、かつプリデコードの結果として得られたデータと同様に対応するキャッシュメモリに適宜格納されてもよい。
さらに、上述した各実施形態では、プログラムブロック毎に対応した集合機械語列が３アドレス方式の機械語の列として生成されている。
しかし、本発明はこのような３アドレス方式に限定されず、２アドレス方式、１アドレス方式、０アドレス方式の命令形式に適合したプロセッサだけではなく、これらの方式の組み合わせに適合したプロセッサにも同様に適用可能である。
また、上述した各実施形態では、ＲＩＳＣアーキテクチャに基づいて構成されたプロセッサに本発明が適用されている。
しかし、本発明は、このようなプロセッサに限定されず、ＣＩＳＣアーキテクチャに基づいて構成されたプロセッサにも同様に適用可能である。
さらに、上述した各実施形態では、汎用のプロセッサに本発明が適用されている。
しかし、本発明は、このようなプロセッサに限定されず、例えば、音声処理、画像処理その他の目的に供されるＤＳＰその他の専用プロセッサにも同様に適用可能である。
また、上述した各実施形態では、個々の機能ユニットに対応するキャッシュメモリの数が「１」となっている。
しかし、本発明はこのような構成に限定されず、例えば、操作符号語その他に基づいて適正な対や組み合わせが識別される限り、単一または複数の機能ユニットが複数のキャッシュメモリに対応付けられ、あるいは複数の機能ユニットが単一または複数のキャッシュメモリに対応付けられてもよい。
さらに、上述した各実施形態では、「基本ブロック」が定義されていないが、このような「基本ブロック」は、入口と出口とがそれぞれその「基本ブロック」の先頭と末尾の命令のみである限り、必ずしも分岐命令が含まれなくてもよい。
また、このような「基本ブロック」については、例えば、「既述のロードモジュールに対応した原始プログラムが構造化言語で記載されず、かつ何らモジュール化されていないために、入口が必ずしも確定しない場合」には、その入口が動的に予測されることによって適宜識別されてもよい。
さらに、本発明は、上述した実施形態に限定されるものではなく、本発明の範囲において、多様な形態による実施形態が可能であり、かつ構成装置の一部もしくは全てに如何なる改良が施されてもよい。
【産業上の利用の可能性】
上述したように本発明にかかわる第一の命令制御装置では、性能の低下やコストの増加を伴うことなく、多様な分野に対する情報処理技術の適用が可能となる。
また、本発明にかかわる第二の命令制御装置では、即値オペランドの形式や語長が物理レジスタの数や語長に整合しない場合であっても、個々の命令は、オペランドの数や組み合わせの如何にかかわらず、複数の機能ユニットによる機能分散の下で効率的に実行される。
さらに、本発明にかかわる第三の命令制御装置では、命令制御にかかわる処理の簡略化が図られる。
また、本発明にかかわる第四の命令制御装置では、物理レジスタの間における無用なデータの転送が回避され、かつ応答性および信頼性が高められる。
さらに、本発明にかかわる第五の命令制御装置では、共通の基本ブロックの内部および後続する基本ブロックとの間における出力オペランドの引き渡しが効率的に行われる。
また、本発明にかかわる第六の命令制御装置では、物理レジスタの管理にかかわる処理が無用に複雑化することなく、命令制御が効率的に達成される。
さらに、本発明にかかわる第七の命令制御装置では、性能が低下することなく、多様な命令の効率的な実行が可能となる。
また、本発明にかかわる第八の命令制御装置では、分岐の高速化が図られる。
さらに、本発明にかかわる第九の命令制御装置では、プリデコードおよび命令制御の効率が向上し、かつ総合的な処理速度が高められる。
また、本発明にかかわる第十の命令制御装置では、基本的な命令の形式が変更されることなく、多様な機能の追加や変更が柔軟に達成される。
さらに、本発明にかかわる第十一の命令制御装置では、プリデコードおよび命令制御の効率が高められる。
また、本発明にかかわる第十二の命令制御装置では、主記憶の語長や基本的な命令の語長が変更されることなく、多様な機能の追加や変更が柔軟に達成される。
さらに、本発明にかかわる第十三の命令制御装置では、機械語の構成の簡略化と短縮とが図られる。
また、本発明にかかわる第十四の命令制御装置では、固定語長の命令体系を有する多様な情報処理装置に対する柔軟な適応が可能となる。
さらに、本発明にかかわる第十五の命令制御装置では、構成の簡略化と応答性の向上とが図られる。
また、本発明にかかわる第一の機能ユニットでは、反復処理の効率が高められる。
さらに、本発明にかかわる第二の機能ユニットでは、複数の基本ブロックの間にける依存関係が効率的に、かつ早期に保証される。
また、本発明にかかわる第三の機能ユニットでは、機能の追加や変更に必要な複数の機能ユニットの間の機能分散や負荷分散が柔軟に達成される。
さらに、本発明にかかわるプログラム変換装置では、既存のオブジェクトプログラムやロードモジュールの有効な活用が可能となる。
また、本発明にかかわる言語処理装置の原理では、既存の原始プログラムの有効な活用が可能となる。
したがって、これらの発明が適用された情報処理系と、その情報処理系が組み込まれ、もしくはこの情報処理系と連係して作動するシステムまたは機器では、所望の仕様や性能に柔軟に適応した形態でハードウエアとソフトウエアとの間における機能分散および負荷分散が達成され、かつ仕様や機能の変更に併せて、付加価値の向上にかかわる自由度が高く確保される。
【図１】
2004012079.tif 000003
【図２】
2004012079.tif 000004
【図３】
2004012079.tif 000005
【図４】
2004012079.tif 000006
【図５】
2004012079.tif 000007
2004012079.tif 000008
【図７】
2004012079.tif 000009
【図８】
2004012079.tif 000010
【図９】
2004012079.tif 000011
【図１０】
2004012079.tif 000012
【図１１】
2004012079.tif 000013
【図１２】
2004012079.tif 000014
【国際調査報告】
2004012079.tif 000015
2004012079.tif 000016