JP3799423B2 - 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置 - Google Patents
命令制御装置、機能ユニット、プログラム変換装置および言語処理装置 Download PDFInfo
- Publication number
- JP3799423B2 JP3799423B2 JP2004524095A JP2004524095A JP3799423B2 JP 3799423 B2 JP3799423 B2 JP 3799423B2 JP 2004524095 A JP2004524095 A JP 2004524095A JP 2004524095 A JP2004524095 A JP 2004524095A JP 3799423 B2 JP3799423 B2 JP 3799423B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- operand
- control device
- basic block
- operands
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 61
- 230000006870 function Effects 0.000 claims description 101
- 230000015654 memory Effects 0.000 claims description 83
- 238000012546 transfer Methods 0.000 claims description 45
- 238000007726 management method Methods 0.000 claims description 36
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 239000000284 extract Substances 0.000 claims description 3
- 238000000354 decomposition reaction Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 20
- 230000008859 change Effects 0.000 description 19
- 230000010365 information processing Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000004043 responsiveness Effects 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 239000000126 substance Substances 0.000 description 5
- 238000007667 floating Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000000593 degrading effect Effects 0.000 description 2
- 238000012905 input function Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
しかし、これらのプロセッサの多く(以下、「第一の従来例」という。)は、既存のALU部にかかわる機能の追加や変更を単に可能とすることによって構成されているために、下記の点で機能の追加や変更が十分には達成されていなかった。
・ 拡張されるべき命令の実行レイテンシにかかわる自由度が確保され難い。
・ パイプラインの基本的な構成や動作の変更が許容され難い。
・ 転送命令および分岐命令の追加や変更が実現され難い。
・ 機械語の形式の変更に制約があるために、オペランド(イミーディエイトデータを含む。)の数および語長の変更が許容されない場合が多い。
・ スーパスカラ、分岐予測、アウトオブオーダ等の技法に馴染み難く、これらの技法が適用されても高速化が図られ難い。
さらに、上述した機能の追加や変更を可能とする技術としては、下記の「TTAs」や「BISCアーキテクチャ」が提案されている。
・ オペランドに該当するレジスタの組み合わせ毎に命令が定義され、これらの命令がレジスタ転送命令の組み合わせとして実現される「TTAs」(以下、「第二の従来例」という。)
・ 命令コードを有する点で「TTAs」と異なり、かつ命令体系がレジスタ間転送命令と「操作符号」を示すイミーディエイトデータの組み合わせとして構成される「BISCアーキテクチャ」(以下、「第三の従来例」という。)
しかし、上述した「第二の従来例」では、機能の種類が限定されるために、機能の変更および追加は、必ずしも自在には達成されなかった。
また、上述した「第三の従来例」では、第二の従来例に比べて、命令のレイテンシの如何にかかわらず機能の追加や変更にかかわる自由度が高く確保され、かつ分岐命令だけではなく転送命令の追加が可能であるにもかかわらず、分岐予測その他の技術の適用による高速化が達成され難く、しかも、機械語に冗長な情報が含まれるために主記憶の記憶領域の利用効率が低かった。
さらに、「第三の従来例」では、割り込み処理の起動に先行して内部の各部の情報が保存されなければならないために、ハードウエアの構成が複雑化し、その割り込み処理の起動が無用に遅れる可能性があった。
また、本発明の目的は、性能の低下やコストの増加を伴うことなく、多様な分野に対する情報処理技術の適用が可能となる点にある。
さらに、本発明の目的は、即値オペランドの形式や語長が物理レジスタの数や語長に整合しない場合であっても、オペランドの数や組み合わせの如何にかかわらず、機能ユニットによる機能分散の下で個々の命令が効率的に実行される点にある。
また、本発明の目的は、機能ユニットに対して、即値オペランドと、その即値オペランドに該当しない入力オペランドとが個別に引き渡される場合に比べて、命令制御にかかわる処理の簡略化が図られる点にある。
さらに、本発明の目的は、物理レジスタの間における無用なデータの転送が回避され、かつ応答性および信頼性が高められる点にある。
また、本発明の目的は、共通の基本ブロックおよび後続する基本ブロックに含まれる命令の入力オペランドとして個々の出力オペランドが効率的に引き渡される点にある。
さらに、本発明の目的は、物理レジスタの管理にかかわる処理が無用に複雑化することなく、命令制御が効率的に達成される点にある。
また、本発明の目的は、命令の実行に必要なオペランドの数および組み合わせの如何にかかわらず、性能が低下することなく多様な命令の効率的な実行が可能となる点にある。
さらに、本発明の目的は、分岐の高速化が図られる点にある。
また、本発明の目的は、プリデコードおよび命令制御の効率が向上し、かつ総合的な処理速度が高められる点にある。
さらに、本発明の目的は、基本的な命令の形式が変更されることなく、多様な機能の追加や変更が柔軟に達成される点にある。
また、本発明の目的は、プリデコードおよび命令制御の効率が高められる点にある。
さらに、本発明の目的は、主記憶の語長や基本的な命令の語長が変更されることなく、多様な機能の追加や変更が柔軟に達成される点にある。
また、本発明の目的は、機械語の構成の簡略化と短縮とが図られる点にある。
さらに、本発明の目的は、固定語長の命令体系を有する多様な情報処理装置に対する柔軟な適応が可能となる点にある。
また、本発明の目的は、構成の簡略化と応答性の向上とが図られる点にある。
さらに、本発明の目的は、反復処理の効率が高められる点にある。
また、本発明の目的は、特定の操作符号を有する命令を適用したプログラマの意図の通りに、この命令以降の依存関係が効率的に、かつ早期に保証される点にある。
さらに、本発明の目的は、機能の追加や変更に応じて行われるべき複数の機能ユニットの間の機能分散や負荷分散が柔軟に達成される点にある。
また、本発明の目的は、既存のオブジェクトプログラムやロードモジュールの有効な活用が図られる点にある。
さらに、本発明の目的は、既存の原始プログラムの有効な活用が図られる点にある。
上述した目的は、機械語の列からなる基本ブロック毎に、入力オペランドと出力オペランドとが抽出され、これらの入力オペランドおよび出力オペランドの数の積算値の列が個別に生成された後に、全ての入力オペランドと出力オペランドとに、積算値の列に含まれる個々の積算値以降の順位の仮想的な入力レジスタと出力レジスタとが重複なく対応付けられ、さらに、全ての命令の出力オペランドに個別に対応付けられた出力レジスタと、これらの命令の入力オペランドが個別に引き渡されるべき入力オペランドに対応付けられた入力レジスタとの集合毎に、これらの物理レジスタが割り付けられる点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、基本ブロック毎に含まれる何れの機械語についても、その機械語の実行を可能とする機能を具備した機能ユニット、またはその機能ユニットの前段に配置されたキャッシュメモリに対する分配が全てのオペランドの識別子が含まれることなく可能となり、かつ上記の仮想的な入力レジスタおよび出力レジスタと、物理レジスタとの管理の形態がこれらの機械語の列に整合する限り、これらの機能ユニットによる機能分散の下で並行して効率的に実行される。
上述した目的は、積算値毎に含まれる入力オペランドの数として即値オペランドの数が積算されず、かつ機能ユニットには、このように数が積算されなかった即値オペランドが引き渡される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、機能ユニットに対する即値オペランドの引き渡しが物理レジスタを介することなく達成される。
上述した目的は、基本ブロック毎に、入力オペランドの内、即値オペランドと他の入力オペランドとの数の積算値が個別に生成され、これらの即値オペランドと他の入力オペランドとに個別に物理レジスタが割り付けられ、個々の即値オペランドに割り付けられた物理レジスタにその即値オペランドが格納される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、基本ブロック毎に含まれ得る個々の命令に対応した機能ユニットに対して、全ての入力オペランドが物理レジスタを介して引き渡される。
上述した目的は、入力オペランドの列と出力オペランドの列とに含まれるオペランドの内、先行する直近の基本ブロックに含まれる命令のオペランドに対する入力レジスタと出力レジスタとの既存の対応付けが維持される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、何れかの基本ブロックで確定され、かつ何らかの物理レジスタに格納されたオペランドは、その基本ブロックに後続する基本ブロックに含まれる個々の命令に対応した機能ユニットに対しても、この物理レジスタを介して引き渡される。
上述した目的は、特定の物理レジスタが基本ブロックに含まれる個々の命令の出力オペランドに予め対応付けられ、既述の集合毎に含まれる個々の命令の出力オペランドに対応付けられた出力レジスタと、その出力オペランドが引き渡されるべき入力レジスタとに、その出力オペランドに予め対応付けられた特定の物理レジスタが優先的に割り付けられる点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、何れの基本ブロックに含まれる命令についても、その命令の出力オペランドの格納と、この基本ブロックに含まれる他の命令に対応した機能ユニットに対するその出力オペランドの引き渡しに供される物理レジスタが、各命令ブロックに含まれる命令の順序に適応した物理レジスタに一義的に設定される。
上述した目的は、基本ブロックに含まれる命令の入力オペランドの内、その基本ブロックの内部において依存関係がない入力オペランドに対する既存の物理レジスタの割り付けが維持される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、先行する基本ブロックに含まれる命令の出力オペランドは、その基本ブロックに後続する単一または複数の基本ブロックに含まれる命令の入力オペランドに該当し得る限り、他の物理レジスタに転送され、あるいは複写されることなく、これらの後続する基本ブロックに対して効率的に引き渡される。
上述した目的は、機能ユニットに対応したキャッシュメモリに、命令の操作符号と、この命令の入力オペランドと出力オペランドとにそれぞれ対応付けられた入力レジスタと出力レジスタとの基準アドレスとからなるレコードが格納され、これらのキャッシュメモリに格納された最先のレコードに含まれる基準アドレスより一義的に定まり、これらのレコードに対応する命令の実行に必要な数の入力オペランドおよび出力オペランドに対応付けられた入力レジスタと出力レジスタとの集合毎に、物理レジスタが割り付けられる点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、基本ブロック毎に含まれる何れの機械語も、その機械語の実行を可能とする機能を具備した機能ユニットに対応したキャッシュメモリに、全てのオペランドの識別子が含まれることなく分配され、これらの機能ユニットによる機能分散の下で並行して実行される。
上述した目的は、分岐先テーブルには、基本ブロック毎に、キャッシュメモリに最先に格納された操作符号を有する命令が格納された記憶領域を示すキャッシュアドレスと、主記憶の記憶領域の内、これらの命令が個別に格納された記憶領域のアドレスとが格納され、かつ特定の機能ユニットによって有効な分岐が行われるときに、分岐先を示すアドレスに対応して分岐先テーブルに格納されたキャッシュアドレスにキャッシュメモリの読み出しポインタが更新される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、分岐先に該当する基本ブロックの全ての命令が個々のキャッシュメモリに区分されて蓄積されている限り、その分岐先に対する分岐は、これらのキャッシュメモリの読み出しポインタの更新によって達成される。
上述した目的は、機械語の列に含まれ得る命令の機能を有する機能ユニット毎に対応し、その機械語に含まれる命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部が個別にパックされた語の列として基本ブロックが構成される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、基本ブロック毎に含まれる個々の命令が対応する機能ユニット、またはこれらの機能ユニットに対応するキャッシュメモリに配分されるために行われるべき処理の手順は、上述した操作符号と入力オペランドと出力オペランドとの全てが何ら個別にパックされない場合に比べて、簡略化される。
上述した目的は、操作符号が即値オペランドとして含まれ、その操作符号に代えて、入力オペランドと出力オペランドとの数の組み合わせが配置されることによって、機械語の列に含まれ得る特定の命令が構成される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、本来的に操作符号が配置されるべきフィールドの語長では表現され得ない程度に、上記の特定の命令と共通の機能ユニットを介して達成されるべき機能の数および組み合わせが多数に亘る場合であっても、その機能ユニットが既述の即値オペランドとして与えられた操作符号と、本来的な操作符号に代えて与えられた入力オペランドと出力オペランドとの数の組み合わせとを識別できる限り、所望の機能の追加や変更が可能となる。
上述した目的は、操作符号に対応する機能ユニットの識別子またはこれらの機能ユニットの異同を意味する情報がその操作符号にパックされた点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、全ての操作符号が基本ブロック毎にパックされて与えられる場合であっても、これらの操作符号は、上述した情報に基づいて簡便に区分され、かつ対応する機能ユニットに分配される。
上述した目的は、操作符号に対応する機能ユニットが異なる場合に値が重複し得る語としてその操作符号が構成される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、何れかの機能ユニットによって達成されるべき機能の数や組み合わせが多数であっても、主記憶に格納されるべき機械語の語長の変更が回避され得る。
上述した目的は、基本ブロックに含まれる分岐命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部がこの基本ブロックの先頭もしくは末尾にパックされる点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、何れの基本ブロックにも、演算命令の列と転送命令の列とが分岐命令を含まない命令の列として与えられるので、このような分岐命令が基本ブロック内における既定の位置に基づいて特定され、かつ対応する機能ユニットに分配される限り、これらの演算命令および転送命令との区分は、両者の命令の境界に付加され、かつ語長が短くて簡便に識別が可能なデリミッタに基づいて効率的に達成される。
上述した目的は、語長が一定である語の列として基本ブロックが構成される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、主記憶の語長や命令の形式が基本的に変更されることなく、既述の命令制御が達成される。
上述した目的は、物理レジスタの一部として汎用レジスタが構成される点に特徴がある命令制御装置によって達成される。
このような命令制御装置では、汎用レジスタに格納された入力オペランドと、汎用レジスタに保持されるべき出力オペランドとの何れも、物理レジスタとの間で無用に転送されることなく、他の基本ブロックと相互に引き渡される。
上述した目的は、キャッシュメモリに一旦格納された命令の内、実行が可能となった命令とその命令が属する基本ブロックの番号とがこのキャッシュメモリに順次格納され、その基本ブロックの実行の反復にこの基本ブロックの番号が読み替えられて適用される点に特徴がある機能ユニットによって達成される。
このような機能ユニットでは、何れの基本ブロックに属する命令の列についても、反復して実行されるべき順序は、先行して行われた実行の過程において、実際に実行が可能となった順序の通りに設定される。
上述した目的は、実行が可能な命令の内、特定の操作符号を有する命令がスケジューラによって優先して選択される点に特徴がある機能ユニットによって達成される。
このような機能ユニットでは、キャッシュメモリに格納され、かつ後続して実行されるべき基本ブロックの一連の命令の列に上述した特定の操作符号を有する命令が含まれる場合には、その特定の操作符号を有する命令は、実行に必要な全てのオペランドが揃い次第、先行する基本ブロックに含まれる命令より優先的に実行される。
上述した目的は、特定の操作符号を有する命令の即値オペランドまたはこの即値オペランドに対して規定の相関性を有する情報が外部から与えられ、またはその外部に引き渡すことができたときに、この命令が選択される点に特徴がある機能ユニットによって達成される。
このような機能ユニットは、上述した情報が交換されることによって、既述の特定の操作符号を有する命令の実行にかかわる機能や負荷を分担する他の機能ユニットまたは装置に同期して作動する。
上述した目的は、機械語の列が基本ブロックの列に区分され、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとに併せて、これらの命令の操作符号が抽出された後に、基本ブロック毎に、これらの抽出された個々の操作符号がその操作符号に適応した処理を行うべき機能ユニット毎に区分され、さらに、これらの入力オペランド、出力オペランドおよび操作符号が機能ユニットの順に基本ブロック毎にパックされ、かつ命令制御に適合した形式の機械語の列に変換される点に特徴があるプログラム変換装置によって達成される。
このようなプログラム変換装置では、既存の機械語、または所望の形式の機械語は、これらの機械語に対応した原始プログラムのアセンブリングが再試行されなくても、本発明にかかわる命令制御によって実行される。
上述した目的は、アセンブラ言語で記述された命令の列が基本ブロックの列に区分され、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとの識別子に併せて、これらの命令の記号命令が抽出された後に、基本ブロック毎に、個々の記号命令がその記号命令に適応した処理を行うべき機能ユニット毎に区分され、さらに、同様にして抽出された識別子と、これらの記号命令とに個別に対応した入力オペランド、出力オペランドおよび操作符号が機能ユニットの順に基本ブロック毎にパックされ、かつ命令の列の命令制御に適合した形式の機械語の列に変換される点に特徴がある言語処理装置によって達成される。
このような言語処理装置では、アセンブラ言語で記述された既存の原始プログラム、または所望のアセンブラ言語で記述された原始プログラムは、これらの原始プログラムに本来的に適合したアセンブラに基づくアセンブリングが行われなくても、本発明にかかわる命令制御の下で実行が可能な機械語の列に直接変換される。
図2は、本発明にかかわる機能ユニットの原理ブロック図である。
図3は、本発明にかかわるプログラム変換装置の原理ブロック図である。
図4は、本発明にかかわる言語処理装置の原理ブロック図である。
図5は、本発明の第一ないし第五の実施形態を示す図である。
図6a〜6cは、本発明の第一の実施形態の動作を説明する図(1)である。
図7は、本発明の第一の実施形態の動作を説明する図(2)である。
図8は、本発明の第一の実施形態の動作を説明する図(3)である。
図9は、レジスタ管理部の詳細な構成を示す図である。
図10は、PBテーブルの構成を示す図である。
図11は、本発明の第四の実施形態の動作を説明する図である。
図12は、本発明の第六の実施形態の動作フローチャートである。
図1は、本発明にかかわる命令制御装置の原理ブロック図である。
図1に示す命令制御装置は、オペランド数積算手段11、仮想割り付け手段12、分岐先テーブル12T−1〜12T−n、機能ユニット13−1〜13−n、キャッシュメモリ13C−1〜13C−nおよびオペランド引き渡し手段14から構成される。
本発明にかかわる第一の命令制御装置の原理は、下記の通りである。
オペランド数積算手段11は、機械語の列からなる基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとを抽出し、これらの入力オペランドおよび出力オペランドの数の積算値の列を個別に生成する。仮想割り付け手段12は、基本ブロック毎に割り付けが更新されるべき仮想的な入力レジスタと出力レジスタとを管理し、かつ入力オペランドと出力オペランドとに、積算値の列に含まれる個々の積算値以降の順位の入力レジスタと出力レジスタとを重複なく対応付ける。オペランド引き渡し手段14は、基本ブロックに含まれ得る命令の機能を有する機能ユニット13−1〜13−nとの情報の引き渡しに供される物理レジスタを管理し、かつ全ての命令の出力オペランドに個別に対応付けられた出力レジスタと、これらの命令の入力オペランドが個別に引き渡されるべき入力オペランドに対応付けられた入力レジスタとの集合毎に、これらの物理レジスタを割り付ける。
このような命令制御装置では、基本ブロック毎に含まれる何れの機械語についても、その機械語の実行を可能とする機能を具備した機能ユニット、またはその機能ユニットの前段に配置されたキャッシュメモリに対する分配が全てのオペランドの識別子が含まれることなく可能となり、かつ上記の仮想的な入力レジスタおよび出力レジスタと、物理レジスタとの管理の形態がこれらの機械語の列に整合する限り、これらの機能ユニットによる機能分散の下で並行して効率的に実行される。
また、基本ブロック毎に含まれる全ての機械語の全ての入力オペランドおよび出力オペランドは、上記の仮想的な入力レジスタおよび出力レジスタと、物理レジスタとの管理の形態がこれらの機械語の列に整合する限り、一旦、これらの入力レジスタと出力レジスタとに対応付けられた後に、該当する基本ブロック内の依存関係と、他の基本ブロックとの間とにおける依存関係が共に解消される形態で物理レジスタに割り付けられる。
さらに、基本ブロック毎に含まれ得る個々の機械語については、その機械語に対応した機能ユニットが備えられ、このような機能ユニットの識別が可能な形式で与えられる限り、オペランドの数や組み合わせの如何にかかわらず、命令制御を実現するハードウエアの基本的な構成が変更されることなく多様な機能にかかわる柔軟な追加および変更が可能となる。
したがって、構成が標準化されるにもかかわらず、性能の低下やコストの増加を伴うことなく、多様な分野に対する情報処理技術の適用が可能となる。
本発明にかかわる第二の命令制御装置の原理は、下記の通りである。
オペランド数積算手段11は、積算値毎に含まれる入力オペランドの数として、即値オペランドの数を積算しない。オペランド引き渡し手段14は、機能ユニット13−1〜13−nに、オペランド数積算手段11によって数が積算されなかった即値オペランドを引き渡す。
このような命令制御装置では、機能ユニット13−1〜13−nに対する即値オペランドの引き渡しは、物理レジスタを介することなく達成される。
したがって、このような即値オペランドの形式や語長が物理レジスタの数や語長に整合しない場合であっても、個々の命令は、オペランドの数や組み合わせの如何にかかわらず、機能ユニット13−1〜13−nによる機能分散の下で効率的に実行される。
本発明にかかわる第三の命令制御装置の原理は、下記の通りである。
オペランド数積算手段11は、基本ブロック毎に、入力オペランドの内、即値オペランドと他の入力オペランドとの数の積算値を個別に生成する。オペランド引き渡し手段14は、即値オペランドと他の入力オペランドとに個別に物理レジスタを割り付け、かつ個々の即値オペランドに割り付けられた物理レジスタにその即値オペランドを格納する。
このような命令制御装置では、基本ブロック毎に含まれ得る個々の命令に対応した機能ユニットには、全ての入力オペランドが物理レジスタを介して引き渡される。
したがって、機能ユニットに対して、即値オペランドと、その即値オペランドに該当しない入力オペランドとが個別に引き渡される場合に比べて、命令制御にかかわる処理の簡略化が図られる。
本発明にかかわる第四の命令制御装置の原理は、下記の通りである。
仮想割り付け手段12は、入力オペランドの列と出力オペランドの列とに含まれるオペランドの内、先行する直近の基本ブロックに含まれる命令のオペランドに対する入力レジスタと出力レジスタとの既存の対応付けを維持する。
このような命令制御装置では、何れかの基本ブロックで確定され、かつ何らかの物理レジスタに格納されたオペランドは、その基本ブロックに後続する基本ブロックに含まれる個々の命令に対応した機能ユニットに対しても、この物理レジスタを介して引き渡される。
したがって、物理レジスタの間における無用なデータの転送が回避され、かつ応答性および信頼性が高められる。
本発明にかかわる第五の命令制御装置の原理は、下記の通りである。
物理レジスタの内、特定の物理レジスタは、基本ブロックに含まれる個々の命令の出力オペランドに予め対応付けられる。オペランド引き渡し手段14は、集合毎に含まれる個々の命令の出力オペランドに対応付けられた出力レジスタと、その出力オペランドが引き渡されるべき入力レジスタとに、特定の物理レジスタの内、その出力オペランドに予め対応付けられた特定の物理レジスタを優先的に割り付ける。
このような命令制御装置では、何れの基本ブロックに含まれる命令も、その命令の出力オペランドの格納と、この基本ブロックに含まれる他の命令に対応した機能ユニットに対するその出力オペランドの引き渡しに供される物理レジスタは、各命令ブロックに含まれる命令の順序に適応した物理レジスタに一義的に設定される。
したがって、上述した出力オペランドは、共通の基本ブロックおよび後続する基本ブロックに含まれる命令の入力オペランドとして、効率的に引き渡される。
本発明にかかわる第六の命令制御装置の原理は、下記の通りである。
オペランド引き渡し手段14は、基本ブロックに含まれる命令の入力オペランドの内、その基本ブロックの内部において依存関係がない入力オペランドに対する既存の物理レジスタの割り付けを維持する。
このような命令制御装置では、先行する基本ブロックに含まれる命令の出力オペランドは、その基本ブロックに後続する単一または複数の基本ブロックに含まれる命令の入力オペランドに該当し得る限り、他の物理レジスタに転送され、あるいは複写されることなく、これらの後続する基本ブロックに対して効率的に引き渡される。
したがって、物理レジスタの管理にかかわる処理が無用に複雑化することなく、命令制御が効率的に達成される。
本発明にかかわる第七の命令制御装置の原理は、下記の通りである。
仮想割り付け手段12は、機能ユニット13−1〜13−nの内、基本ブロックに含まれる個々の命令の機能を有する機能ユニットに対応したキャッシュメモリに、その命令の操作符号と、この命令の入力オペランドと出力オペランドとにそれぞれ対応付けられた入力レジスタと出力レジスタとの基準アドレスとからなるレコードを格納する。オペランド引き渡し手段14は、機能ユニット13−1〜13−nに対応するキャッシュメモリ13C−1〜13C−nに格納された最先のレコードに含まれる基準アドレスより一義的に定まり、これらのレコードに対応する命令の実行に必要な数の入力オペランドおよび出力オペランドに対応付けられた入力レジスタと出力レジスタとの集合毎に、物理レジスタを割り付ける。
このような命令制御装置では、基本ブロック毎に含まれる何れの機械語も、その機械語の実行を可能とする機能を具備した機能ユニットに対応したキャッシュメモリに、全てのオペランドの識別子が含まれることなく分配され、これらの機能ユニットによる機能分散の下で並行して実行される。
したがって、個々の命令に対応した機能ユニットとキャッシュが備えられる限り、これらの命令の実行に必要なオペランドの数および組み合わせの如何にかかわらず、性能が低下することなく多様な命令の効率的な実行が可能となる。
本発明にかかわる第八の命令制御装置の原理は、下記の通りである。
分岐先テーブル12T−1〜12T−nには、基本ブロックの列に対して、これらの基本ブロック毎に、キャッシュメモリ13C−1〜13C−nに最先に格納された操作符号を有する命令が格納された記憶領域を示すキャッシュアドレスと、主記憶の記憶領域の内、これらの命令が個別に格納された記憶領域のアドレスとが格納される。オペランド引き渡し手段14は、機能ユニット13−1〜13−nの内、特定の機能ユニットによって有効な分岐が行われるときに、分岐先を示すアドレスに対応して分岐先テーブル12T−1〜12C−nに格納されたキャッシュアドレスにキャッシュメモリ13C−1〜13C−nの読み出しポインタを更新する。
このような命令制御装置では、分岐先に該当する基本ブロックの全ての命令がキャッシュメモリ13C−1〜13C−nに区分されて蓄積されている限り、その分岐先に対する分岐は、これらのキャッシュメモリ13C−1〜13C−nの読み出しポインタの更新によって達成される。
したがって、分岐が有効に行われるべきことが確定した時点で分岐先に該当する基本ブロックの命令が主記憶からあらためて読み出され、かつキャッシュメモリ13C−1〜13C−nに配分されて格納されなければならない場合に比べて、分岐の高速化が図られる。
本発明にかかわる第九の命令制御装置の原理は、下記の通りである。
基本ブロックは、機械語の列に含まれ得る命令の機能を有する機能ユニット毎に対応し、その機械語に含まれる命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部が個別にパックされた語の列として構成される。
このような命令制御装置では、基本ブロック毎に含まれる個々の命令が対応する機能ユニット、またはこれらの機能ユニットに対応するキャッシュメモリに配分されるために行われるべき処理の手順は、上述した操作符号と入力オペランドと出力オペランドとの全てが何ら個別にパックされない場合に比べて、簡略化される。
したがって、プリデコードおよび命令制御の効率が向上し、かつ総合的な処理速度が高められる。
本発明にかかわる第十の命令制御装置の原理は、下記の通りである。
機械語の列に含まれ得る特定の命令は、操作符号が即値オペランドとして含まれ、その操作符号に代えて入力オペランドと出力オペランドとの数の組み合わせが配置されることによって構成される。
このような命令制御装置では、本来的に操作符号が配置されるべきフィールドの語長では表現され得ない程度に、上記の特定の命令と共通の機能ユニットを介して達成されるべき機能の数および組み合わせが多数に亘る場合であっても、その機能ユニットが既述の即値オペランドとして与えられた操作符号と、本来的な操作符号に代えて与えられた入力オペランドと出力オペランドとの数の組み合わせとを識別できる限り、所望の機能の追加や変更が可能となる。
したがって、基本的な命令の体系が変更されることなく、多様な機能の追加や変更が柔軟に達成される。
本発明にかかわる第十一の命令制御装置の原理は、下記の通りである。
操作符号には、対応する機能ユニットの識別子またはこれらの機能ユニットの異同を意味する情報がパックされる。
このような命令制御装置では、全ての操作符号が基本ブロック毎にパックされて与えられる場合であっても、これらの操作符号は、上述した情報に基づいて簡便に区分され、かつ対応する機能ユニットに分配される。
したがって、プリデコードおよび命令制御の効率が高められる。
本発明にかかわる第十二の命令制御装置の原理は、下記の通りである。
操作符号は、対応する機能ユニットが異なる場合に値が重複し得る語として構成される。
このような命令制御装置では、何れかの機能ユニットによって達成されるべき機能の数や組み合わせが多数であっても、主記憶に格納されるべき機械語の語長の変更が回避され得る。
したがって、主記憶の語長や基本的な命令の語長が変更されることなく、多様な機能の追加や変更が柔軟に達成される。
本発明にかかわる第十三の命令制御装置の原理は、下記の通りである。
基本ブロックに含まれる分岐命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部は、この基本ブロックの先頭もしくは末尾にパックされる。
このような命令制御装置では、何れの基本ブロックにも、演算命令の列と転送命令の列とが分岐命令を含まない命令の列として与えられるので、このような分岐命令が基本ブロック内における既定の位置に基づいて特定され、かつ対応する機能ユニットに分配される限り、これらの演算命令および転送命令との区分は、両者の命令の境界に付加され、かつ語長が短くて簡便に識別が可能なデリミッタに基づいて効率的に達成される。
したがって、主記憶に基本ブロック毎に格納されるべき機械語の構成の簡略化と短縮とが図られる。
本発明にかかわる第十四の命令制御装置の原理は、下記の通りである。
基本ブロックは、語長が一定である語の列として構成される。
このような命令制御装置では、主記憶の語長や命令の形式が基本的に変更されることなく、既述の命令制御が達成される。
したがって、本発明は、固定語長の命令体系を有する多様な情報処理装置に対する柔軟な適用が可能となる。
本発明にかかわる第十五の命令制御装置の原理は、下記の通りである。
汎用レジスタは、物理レジスタの一部として構成される。
このような命令制御装置では、汎用レジスタに格納された入力オペランドと、汎用レジスタに保持されるべき出力オペランドとの何れも、物理レジスタとの間で無用に転送されることなく、他の基本ブロックと相互に引き渡される。
したがって、構成の簡略化と応答性の向上とが図られる。
図2は、本発明にかかわる機能ユニットの原理ブロック図である。
図2に示す機能ユニットは、キャッシュメモリ21、スケジューラ22および処理手段23から構成される。
本発明にかかわる第一の機能ユニットの原理は、下記の通りである。
スケジューラ22は、操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリ21に格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリ21に格納され、かつ実行が可能な命令を順次選択する。処理手段23は、スケジューラ22によって選択された命令をキャッシュメモリ21から取得し、この命令のオペランドを示す識別子を命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う。スケジューラ22は、キャッシュメモリ21に格納された命令の内、選択された命令とその命令が属する基本ブロックの番号とをこのキャッシュメモリ21に順次格納し、その基本ブロックの実行の反復にこの基本ブロックの番号を読み替えて適用する。
このような機能ユニットでは、例えば、何れの基本ブロックに属する命令の列についても、反復して実行されるべき順序が「先行して行われた実行の過程において、実際に実行が可能となった順序」の通りに設定され、あるいは、「オペレーションの結果」がすぐに利用されないオペレーションに比べて、「その結果がすぐに利用されるオペレーション」の順序が優先される。
したがって、反復処理の効率が高められる。
本発明にかかわる第二の機能ユニットの原理は、下記の通りである。
スケジューラ22は、操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリ21に格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリ21に格納され、かつ実行が可能な命令を順次選択する。処理手段23は、スケジューラ22によって選択された命令をキャッシュメモリ21から取得し、この命令のオペランドを示す識別子を命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う。スケジューラ22は、実行が可能な命令の内、特定の操作符号を有する命令を優先して選択する。
このような機能ユニットでは、キャッシュメモリ21に格納され、かつ後続して実行されるべき基本ブロックの一連の命令の列に上述した特定の操作符号を有する命令が含まれる場合には、その特定の操作符号を有する命令は、実行に必要な全てのオペランドが揃い次第、先行する基本ブロックに含まれる命令より優先的に実行される。
したがって、この特定の操作符号を有する命令以降の依存関係は、この命令を適用したプログラマの意図の通りに、効率的に、かつ早期に保証される。
本発明にかかわる第三の機能ユニットの原理は、下記の通りである。
スケジューラ22は、操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリ21に格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリ21に格納され、かつ実行が可能な命令を順次選択する。処理手段23は、スケジューラ22によって選択された命令をキャッシュメモリ21から取得し、この命令のオペランドを示す識別子を命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う。スケジューラ22は、キャッシュメモリ21に格納された命令の内、特定の操作符号を有する命令については、その命令の即値オペランドまたはこの即値オペランドに対して規定の相関性を有する情報が外部から与えられ、またはその外部に引き渡すことができたときに選択する。
このような機能ユニットは、上述した情報が交換されることによって、既述の特定の操作符号を有する命令の実行にかかわる機能や負荷を分担する他の機能ユニットまたは装置に同期して作動する。
したがって、機能の追加や変更に応じて行われるべき複数の機能ユニットの間の機能分散や負荷分散が柔軟に達成される。
図3は、本発明にかかわるプログラム変換装置の原理ブロック図である。
図3に示すプログラム変換装置は、機会部分解手段31、命令区分手段32および変換手段33から構成される。
本発明にかかわるプログラム変換装置の原理は、下記の通りである。
機械語分解手段31は、機械語の列を基本ブロックの列に区分し、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとに併せて、これらの命令の操作符号を抽出する。命令区分手段32は、基本ブロック毎に、機械語分解手段31によって抽出された個々の操作符号をその操作符号に適応した処理を行うべき機能ユニット毎に区分する。変換手段33は、機械語分解手段31によって抽出された入力オペランドおよび出力オペランドと、命令区分手段32によって区分された操作符号とが機能ユニットの順に基本ブロック毎にパックされ、かつ命令制御に適合した形式の語の列に機械語の列を変換する。
このようなプログラム変換装置では、既存の機械語、または所望の形式の機械語は、これらの機械語に対応した原始プログラムのアセンブリングが再試行されなくても、本発明にかかわる命令制御の下で実行される。
したがって、既存のオブジェクトプログラムやロードモジュールの有効な活用が図られる。
図4は、本発明にかかわる言語処理装置の原理ブロック図である。
図4に示す言語処理装置は、原始プログラム分解手段41、命令区分手段42および変換手段43から構成される。
本発明にかかわる言語処理装置の原理は、下記の通りである。
原始プログラム分解手段41は、アセンブラ言語で記述され、かつアセンブリ命令に該当しない命令の列を基本ブロックの列に区分し、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとの識別子に併せて、これらの命令の記号命令を抽出する。命令区分手段42は、基本ブロック毎に、原始プログラム分解手段41によって抽出された個々の記号命令をその記号命令に適応した処理を行うべき機能ユニット毎に区分する。変換手段43は、原始プログラム分解手段41によって抽出された識別子と、命令区分手段42によって区分された記号命令とに個別に対応した入力オペランド、出力オペランドおよび操作符号が機能ユニットの順に基本ブロック毎にパックされ、かつ命令の列の命令制御に適合した形式の機械語の列にその命令の列を変換する。
このような言語処理装置では、アセンブラ言語で記述された既存の原始プログラム、または所望のアセンブラ言語で記述された原始プログラムは、これらの原始プログラムに本来的に適合したアセンブラに基づくアセンブリングが行われなくても、本発明にかかわる命令制御の下で実行が可能な機械語の列に直接変換される。
したがって、既存の原始プログラムの有効な活用が図られる。
以下、図面に基づいて本発明の実施形態について詳細に説明する。
図5は、本発明の第一ないし第五の実施形態を示す図である。
図において、外部バス50には二次キャッシュメモリ(以下、「二次キャッシュ」という。)51が接続され、その二次キャッシュ51の読み出しポートはプリデコーダ52の入力に接続される。そのプリデコーダ52の第一ないし第十の出力には、キャッシュメモリ(以下、単に「キャッシュ」という。)53Imd、53IBI、53ALU、53IMU、53LSU、53FPU、53FBI、53EImd、53EXU、53EBIの第一の入力に接続され、そのプリデコーダ52の入出力ポートはコントロールユニット60の対応するポートに接続される。キャッシュ53Im d、53EImdの出力はそれぞれレジスタ54Imd、54EImdの入力に接続され、かつキャッシュ53ALU、53IMU、53LSU、53FPU、53EXUにはそれぞれポストスケジューラ55ALU、55IMU、55LSU、55FPU、55EXUが縦続接続される。レジスタ54Imdの出力はポストスケジューラ55ALU、55IMU、55LSU、55FPUの第一の入力に接続され、かつレジスタ54EImdの出力はポストスケジューラ55EImdの第一の入力に接続される。キャッシュ53IBI、53FBI、53EBIの出力はそれぞれレジスタ管理部56IBI、56FBI、56EBIの対応する入力ポートに接続され、そのレジスタ管理部56IBIのポートはポストスケジューラ55ALU、55IMU、55LSUの第二の入力に接続される。レジスタ管理部56FBIの出力はポストスケジューラ55LSU、55FPUの第二の入力に接続され、かつレジスタ管理部56EBIの出力はポストスケジューラ55EXUの第二の入力に接続される。ポストスケジューラ55ALU、55IMU、55LSU、55FPU、55EXUの出力は、それぞれ機能ユニット57ALU、57IMU、57LSU、57FPU、57EXUの入力に接続される。これらの機能ユニット57ALU、57I MUのオペランド端子と機能ユニット57LSUの第一のオペランド端子とはレジスタファイル58Iの対応する入出力端子に接続され、かつ機能ユニット57LS Uの第二のオペランド端子と機能ユニット57FPUのオペランド端子とはレジスタファイル58Fの対応する入出力端子に接続される。機能ユニット57EXUのオペランド端子はレジスタファイル58Eの対応する入出力端子に接続され、その機能ユニット57EXUの同期出力は機能ユニット57LSUの同期入力に接続される。この機能ユニット57LSUの第三のオペランド端子はデータキャッシュメモリ59の一方のポートに接続され、そのデータキャッシュメモリ59の他方のポートは二次キャッシュ51の対応するポートに接続される。
なお、上記の各部の符号に付加された添え文字「Imd」、「IBI」、「ALU」、「IMU」、「LSU」、「FPU」、「FBI」、「EImd」、「EXU」、「EBI」は、それぞれ「整数イミーディエイトデータ」、「整数系バス命令」、「算術論理演算ユニット」、「整数ミスクユニット」、「ロードストアユニット」、「浮動小数点演算ユニット」、「浮動小数点系バス命令」、「拡張イミーディエイトデータ」、「拡張演算ユニット」、「拡張系バス命令」を意味する。なお、「バス命令」については、簡単のため、後述する。
図6a〜6cは、本発明の第一の実施形態の動作を脱明する図(1)である。
図7は、本発明の第一の実施形態の動作を説明する図(2)である。
図8は、本発明の第一の実施形態の動作を説明する図(3)である。
[実施形態1]
以下、図5〜図8を参照して本発明の第一の実施形態の動作を説明する。
二次キャッシュ51には、所定の言語処理系によって予め生成され、かつ図示されない主記憶の所定の記憶領域に格納された機械語の列が外部バス50を介して順次格納される。なお、このような言語処理系については、アセンブラのみに限定されず、「上述した機械語の列をロードモジュールとして直接生成するコンパイラ(リンカやロケータを含む。)」と、『「本発明が適用されることなく構成されたプロセッサ(RISCプロセッサでなくてもよい。)が実行可能なロードモジュール」に所定の変換処理を施すプログラム変換系』との何れであってもよい。
また、上述した機械語の列は、例えば、その機械語に対応する原始プログラムが図6a(1)〜(12)に列記された命令の列から構成される場合には、図6bに示されるように、一般的なRISCプロセッサに適合したプログラムブロックpb1、pb2に区分される。しかし、本実施形態では、これらの機械語の列は、図6cに示すように、下記の点でこれらのプログラムブロックpb1、pb2と異なるプログラムブロックPB1、PB2に対応した機械語の順列(以下、「集合機械語列」と称し、プログラムブロックとの対応関係を明示するために、対応するプログラムブロックと共通の識別子「PB1」、「PB2」を付与して示す。)として、与えられる。
・ 分岐命令が含まれる場合には、その分岐命令は先頭に配置される。
・ 転送命令が末尾に一括して配置される。
・ これらの分岐命令と転送命令の列との間に、演算命令が配置される。
さらに、集合機械語列PB1、PB2は、図7に示すように、下記の通りに構成される。
(1)一定の語長(ここでは、簡単のため32ビット長であると仮定する。)の語の列として構成される。
(2)これらの語の全ての下位オーダの7ビットには、それぞれ該当する機械語の記号命令(ニーモニックコード)に対応する「操作符号」(図7では、図6に示す機械語との対応関係を明確に示すため、記号命令で表記する。)が配置される(図7(1))。
(3)その7ビットの上位に隣接する1ビットには、対応する集合機械語列に最先に含まれる演算命令または転送命令にこの7ビットで示される操作符号が該当する場合に限って、論理値が「1」に設定される単一のビットからなるセパレータFが配置される(図7(2))。
(4)先頭の語の上位24(=32−7−1)ビットには、MSB側より順にパックされた下記の情報(以下、「制御情報」という。)が配置される。
▲1▼該当する集合機械語列の構成の変更や拡張に供されるスペアビットE(ここでは、簡単のため、論理値が常に「0」に設定されると仮定する。)(図7(3))
▲2▼該当する集合機械語列の実行が完了した後に行われるべき処理(例えば、無分岐、条件分岐、無条件分岐、「サブルーチンへの無条件分岐」、「サブルーチンからの復帰」等々の何れか)の形態NxState(図7(4))
▲3▼該当する集合機械語列にオペランドとして含まれるイミーディエイトデータの語数NImdW(図7(5))
▲4▼該当する集合機械語列に含まれる浮動小数点系バス命令の語数NIBIW(図7(6))
▲5▼該当する集合機械語列に含まれる整数バス系命令の語数NFBIW(図7(7))
▲6▼プログラムブロックに対応した集合機械語列の先頭の語であること意味する特定のビットパターン(図7(8))
(5)先頭の語に後続する全ての語の上位24(=32−7−1)ビット(以下、「オペランド群」という。)には、下記のオペランドがMSB側から順にパックされる(ただし、余剰のフィールドには、既定のダミーワードがパックされる)。
▲1▼該当する集合機械語列にその集合機械語列の先頭から順に配置された分岐命令、演算命令、転送命令の列(以下、「被包含命令列」という。)の入力オペランドに該当する汎用レジスタ(ここでは、簡単のため、64個のレジスタの何れかに該当すると仮定する。)を示す6(=log264)ビット長の識別子の列(図7(9))
なお、このような入力オペランドを示す識別子については、同一の集合機械語列に含まれる何らかの命令の出力オペランドに等しい場合には、図7に示すように、上述した64個の汎用レジスタの内、これらの命令の順に個別に予め対応付けられた第56(=64−8)(集合機械語列当たりに含まれ得る命令の最大の数(=8)に対して一義的に定まる。)ないし第64の汎用レジスタ(以下、「特定の汎用レジスタ」という。)の識別子に該当する。
▲2▼被包含命令列の入力オペランドに該当するイミーディエイトデータ(以下、「即値オペランド」という。)の値(ここでは、簡単のため、8ビット長の整数のみであると仮定する。)の列(図7(10))
▲3▼被包含命令列の出力オペランドに該当する汎用レジスタ(ここでは、簡単のため、64個のレジスタの集合として構成されると仮定する。)を示す6(=log264)ビット長の識別子の列(図7(11))
なお、以下では、「オペランド群」に配置され、かつ上述した入力オペランドまたは出力オペランドにそれぞれ該当する汎用レジスタの識別子の列については、単に「バス命令」という。
また、レジスタ管理部56IBIには、図9に示すように、下記のレジスタフリーバッファ61I、レジスタフリーリスト62I、汎用レジスタ管理テーブル63Iおよび機能レジスタ管理テーブル64Ii、64Ioが備えられる。
(1)既述のプログラムブロック毎に対応したプッシュアップメモリとして構成され、かつ『レジスタファイル58Iに備えられた複数の物理レジスタの内、「対応するプログラムブロック(分岐予測の下で、実際には実行されない可能性がある。)に含まれる何れの命令のオペランド」にも割り付けられないために、「後続するプログラムブロック(分岐予測の下で、実際には実行されない可能性がある。)に含まれる何らかのオペランド」として割り付けられ得る物理レジスタ(以下、「未確定空レジスタ」という。)』の識別子の列が格納されるレジスタフリーバッファ61I
(2)既述のプログラムブロック毎に対応したプッシュアップメモリとして構成され、かつ『レジスタファイル58Iに備えられた複数の物理レジスタの内、「対応するプログラムブロックに含まれる何れの命令のオペランド」にも割り付けられないことが確定しているために、「後続して実行されるプログラムブロック(分岐予測の下で、実際には実行されない可能性がある。)に含まれる何らかのオペランド」として割り付けられ得る物理レジスタ(以下、「確定空レジスタ」という。)』の識別子の列が格納されるレジスタフリーリスト62I
(3)既述のプログラムブロック毎に対応したプッシュダウンメモリとして構成され、かつ「レジスタファイル58Iに備えられた複数の物理レジスタの内、対応するプログラムブロックにおいて個々の汎用レジスタとして適用されるべき物理レジスタ(以下、「汎用物理レジスタ」という。)」の識別子の列が格納される汎用レジスタ管理テーブル63I
(4)既述のプログラムブロック毎に対応し、かつサイクリックに参照されると共に、「個々の入力オペランドと出力オペランドとに暫定的に対応付けられ得る最大の数の仮想的な機能レジスタ」に個別に対応した語の集合として構成されると共に、『レジスタファイル58Iに備えられた複数の物理レジスタの内、「この対応するプログラムブロックに含まれる入力オペランドの列と出力オペランドの列とに実体的に割り付けられた物理レジスタ(以下、「実体レジスタ」という。)』の識別子の列がそれぞれ格納される機能レジスタ管理テーブル64Ii、64Io
ここに、「機能レジスタ」とは、『個々のプログラムブロック毎に、オペランドに論理的に対応付けられ得る仮想的なレジスタであり、かつ入力オペランドと出力オペランドとにそれぞれ対応付けられ得る所定の数の「入力機能レジスタ」と「出力機能レジスタ」との集合』を意味する。
さらに、機能レジスタ管理テーブル64Ii、64Ioは、ポストスケジューラ55ALU、55IMU、55LSUに、『これらの全ての語(プログラムブロック毎に対応する。)について、有効な「実体レジスタ」の識別子が格納されているか否かを示す二値情報(ここでは、簡単のため、真偽がそれぞれ論理値「1」、「0」で示されると仮定する。)の集合からなる「オペランドステータス」』を並行して分配する。
ところで、上述した集合機械語列は、二次キャッシュ51に一旦格納された後に、プリデコーダ52とコントロールユニット60との連係の下で下記の通りに区分され、かつキャッシュ53Imd、53IBI、53ALU、53IMU、53LSU、53FPU、53FBI、53EImd、53EXU、53EBIに配分(ディスパッチ)される。
プリデコーダ52は、集合機械語列の各語の下位7ビットに配置された操作符号の列から既述のセパレータFの論理値に基づいて分岐命令の操作符号と、演算命令のみの操作符号の列と、転送命令のみの操作符号の列とを抽出し、かつ下記の「分岐命令語」と、「演算命令語」の列と、「転送命令語」の列とを生成する。
・ 該当する集合機械語列として示されるプログラムブロックに付与された「PB番号」(後述する第三の実施形態が合わせて組み込まれない限り、このプログラムブロックの如何にかかわらず、「0」であってもよい。)に併せて、上述した分岐命令の操作符号(または、この操作符号語に対応し、かつ分岐命令の種別を示すユニークな「変換オペレーションコード」)がMSB側から順にパックされてなる「分岐命令語」
・ 上述した「PB番号」に併せて、個々の演算命令の操作符号(または、この操作符号語に対応し、かつ演算命令の種別を示すユニークな「変換オペレーションコード」)がMSB側から順にパックされてなる「演算命令語」の列
・ 上述した「PB番号」に併せて、個々の転送命令の操作符号(または、この操作符号語に対応し、かつ転送命令の種別を示すユニークな「変換オペレーションコード」)がMSB側から順にパックされてなる「転送命令語」の列
さらに、プリデコーダ52は、これらの「分岐命令語」、「演算命令語」および「転送命令語」の全てに下記の処理を施すことによって、上述した「分岐命令語」、「演算命令語」の列および「転送命令語」の列を確定する。
・ 個々の命令語に含まれる操作符号に適応した演算対象が予め格納されるべき汎用レジスタ(以下、単に「入力オペランド」という。)の数Niと、演算結果が格納されるべき汎用レジスタ(以下、単に「出力オペランド」という。)の数Noと、その演算対象として与えられるべきイミーディエイトデータ(以下、「即値オペランド」という。)の数NIとを求める。
・ 「分岐命令語」には、このようにして求められた「入力オペランド」(例えば、分岐条件の有無や態様だけではなく、主記憶上における分岐先のアドレスの算出や特定に際して参照されるべき情報が格納される汎用レジスタに該当する。)の数Ni(該当するプログラムブロック内におけるその数Niの積算値ΣNiに等しい。)に併せて、「即値オペランド」(主記憶上における分岐先のアドレス等を示す。)の数NI(該当するプログラムブロック内におけるその数NIの積算値ΣNIに等しい。)をパックする。
・ 「演算命令語」と「転送命令語」とには、該当するプログラムブロック内における上述した「入力オペランド」、「出力オペランド」および「即値オペランド」の数Ni、No、NIの積算値ΣNi、ΣNo、ΣNIを順次パックする。
なお、以下では、上述した「分岐命令語」、「演算命令語」および「転送命令語」の何れかに該当する命令語については、簡単のため、「機能別命令語」という。
また、プリデコーダ52は、このようにしてプログラムブロック毎に求められ、そのプログラムブロックに含まれる一連の命令に対して個別に求められた既述の積算値ΣNi、ΣNoの列と、該当するプログラムブロックを示すPB番号とをコントロールユニット60に引き渡す。
さらに、プリデコーダ52は、上述した処理の手順に基づいて『該当するプログラムブロックに含まれる「入力オペランド」、「出力オペランド」および「即値オペランド」の数の個々の総数ΣTOTALNi、ΣTOTALNo、ΣTOTALNI』が確定すると、上述した処理に並行して下記の処理を行う。
・ これらの総数ΣTOTALNi、ΣTOTALNo、ΣTOTALNIと該当する集合機械語列の先頭に含まれる「制御情報」とに基づいて、その集合機械語列の「オペランド群」を区分することによって、この「オペランド群」から「入力オペランド」に該当する汎用レジスタの識別子の列Siと、「即値オペランド」の値の列SIとに併せて、「出力オペランド」に該当する汎用レジスタの識別子の列Soとを抽出する。
・ これらの「入力オペランド」および「出力オペランド」にそれぞれ該当する汎用レジスタの識別子の列Si、Soをキャッシュ53IBIに格納し、かつ「即値オペランド」の値の列SIをキャッシュ53Imdに格納する。
一方、レジスタ54Imdは、このようにしてキャッシュ53Imdに格納された「即値オペランド」の値の列SIをプログラムブロック単位に順次読み出し、その列SIに含まれる全ての「即値オペランド」をポストスケジューラ55ALU、55IMU、55LSU、55FPUに並行して分配する。
なお、このような「即値オペランド」の値の列SIには、その先頭部から順に含まれる「即値オペランド」が有効であるか否かを個別に示す二値情報(ここでは、簡単のため、真偽がそれぞれ論理値「1」、「0」で示されると仮定する。)の集合からなる「イミーディエイトステータス」に併せて、個々の無効な「即値オペランド」に相当する部位に配置された「フィラー」が含まれる。
また、レジスタ管理部56IBIに備えられたレジスタフリーリスト62Iには、レジスタファイル58Iに備えられた複数の物理レジスタの内、既述の「確定空レジスタ」に該当する全ての物理レジスタの識別子がプログラムブロック毎に先行して格納される。
さらに、レジスタ管理部56IBIは、プログラムブロック単位に下記の処理を行う。
(1)キャッシュ53IBIに最先に格納され、かつ該当するプログラムブロックに含まれる一連の命令の「入力オペランド」と「出力オペランド」にそれぞれ該当する汎用レジスタの識別子の列Si、Soを参照する。
(2)上述した識別子の列Soに含まれる個々の識別子で示され、かつ「出力オペランド」に相当する汎用レジスタに、下記の方針に基づいて物理レジスタを割り付ける。
▲1▼該当するプログラムブロックに対応する機能レジスタ管理テーブル64Ioのレコードのフィールドの内、これらのフィールドの先頭が上述した識別子の列Soに含まれる識別子の数(「0」であってもよい。)に亘って連なるフィールドと、レジスタフリーバッファ61Iとに、レジスタフリーリスト62Iに格納されている個々の「確定空レジスタ」の識別子を移す(図8(1))。
▲2▼残りのフィールドには、既定のダミー物理レジスタ番号(ここでは、簡単のため、「0」であると仮定する。)
(3)上述した識別子の列Siに含まれる個々の識別子で示され、かつ「入力オペランド」に相当する汎用レジスタに、下記の方針に基づいて物理レジスタを割り付ける。
▲1▼該当する識別子が『既述の「特定の汎用レジスタ」の何れかに該当すること』を意味する「56」以上であるか否かを判別する。
▲2▼その判別の結果が偽である場合には、該当するプログラムブロックに対応する機能レジスタ管理テーブル64Iiのレコードのフィールドの内、この識別子の列Siに各識別子が含まれている順位のフィールド(以下、「入力機能レジスタフィールド」という。)に、『汎用レジスタテーブル63Iのフィールドの内、その識別子に対応するフィールドに格納された(先行するプログラムブロックにおける共通の汎用レジスタに割り付けられていたことを意味する。)「汎用物理レジスタ」の識別子』を複写する(図8(2))。
▲3▼上述した判別の結果が真である場合には、同じプログラムブロックに対応する機能レジスタ管理テーブル64Ioのレコードを構成するフィールドの内、該当する識別子と「56」との差に等しい順位に対応したフィールドに格納されている(共通のプログラムブロックに含まれる他の命令の出力オペランドに割り付けられたことを意味する。)物理レジスタの番号を複写する(図8(3))。
▲4▼上述した判別の結果の如何にかかわらず、該当する汎用レジスタテーブル63Iの残りのフィールドには、上述したダミー物理レジスタ番号を格納する。
(4)レジスタフリーリスト62Iにこれらの「汎用物理レジスタ」の識別子を格納する(図8(4))。
(5)汎用レジスタ管理テーブル63Iに、『これらの「汎用物理レジスタ」の識別子が既述の「確定空レジスタ」の識別子で置換される(図8(4))ことによってなる語』を格納することによって、その汎用レジスタ管理テーブル63Iを更新する。
ポストスケジューラ55ALU、55IMU、55LSUは、それぞれ既述の通りにプリデコーダ52によって生成され、かつキャッシュ53ALU、53IMU、53LS Uに格納された「分岐命令語」、「演算命令語」の列および「転送命令語」の列に含まれる個々の「機能別命令語」に適応した処理を下記の通りに並行して行う。
なお、以下では、ポストスケジューラ55ALU、55IMU、55LSUと、キャッシュ53ALU、53IMU、53LSUと、機能ユニット57ALU、57IMU、57LS Uとの動作については、添え文字「ALU」「IMU」、「LSU」に代えて、『これらの動作が共通であり、かつ並行して行われることを意味する添え文字「P」』を適用して記述する。
「機能別命令語」にパックされた積算値ΣNi、ΣNoは、その「機能別命令語」に適応した機能を実現する機能ユニット57Pによってプログラムブロック毎に参照されるべき「入力オペランド」と「出力オペランド」とを意味し、かつ機能レジスタ管理テーブル64Ii、64Ioの該当するレコードのフィールドの内、これらの「入力オペランド」と「出力オペランド」とに対応したフィールドを意味する。
さらに、この「機能別命令語」にパックされた積算値ΣNIは、その「機能別命令語」に適応した機能を実現する機能ユニット57Pによってプログラムブロック毎に最先に参照されるべき「即値オペランド」の識別子を意味する。
ポストスケジューラ55Pは、キャッシュ53Pに格納された「機能別命令語」をプログラムブロック単位に参照することによって、下記の処理を行う。
(1)該当する「機能別命令語」にパックされた操作符号に応じて機能ユニット57Pが行うべき処理の過程で参照されるべき入力オペランドおよび即値オペランドの数Ni、Noと、その処理の結果として生成されるべき出力オペランドの数NIとを特定する。
(2)この「機能別命令語」にパックされた積算値ΣNi、ΣNoおよび積算値ΣNIを参照し、下記の論理値の全てが「1」である(全てのオペランドが確定したことを意味する。)か否かを判別する。
・ 既述の「オペランドステータス」のΣNi番目以降にパックされたNiビットの論理値
・ この「オペランドステータス」のΣNo番目以降にパックされたNoビットの論理値
・ 既述の「イミーディエイトステータス」のΣNI番目以降にパックされたNIビットの論理値
(3)この判別の結果が偽である場合には、該当する「機能別命令語」にかかわる処理を保留する。
(4)その判別の結果が真である場合には、下記の識別子と「即値オペランド」とに併せて、該当する「機能別命令語」にパックされた操作符号とからなる「命令」を機能ユニット57Pに引き渡す。
・ 機能レジスタ管理テーブル64IiのΣNi番目以降のフィールドに格納されているNi個の「実体レジスタ」(入力オペランドに割り付けられた物理レジスタを意味する。)の識別子
・ 機能レジスタ管理テーブル64IoのΣNo番目以降のフィールドに格納されているNo個の「実体レジスタ」(出力オペランドに割り付けられた物理レジスタを意味する。)の識別子
・ 既述の「即値オペランド」の値の列SIにΣNI番目以降に配置されたNI個の「即値オペランド」(入力オペランドとして参照される。)
機能ユニット57Pは、このようにしてポストスケジューラ55Pによって引き渡された「命令」に応じて、下記の方針に基づいてその「命令」に適応した処理を行う。
・ レジスタファイル58Pに備えられた物理レジスタの内、上述したNi個の識別子で示される個々の「実体レジスタ」の内容と、上述したNI個の「即値オペランド」の値とを入力オペランドとして参照する。
・ レジスタファイル58Pに備えられた物理レジスタの内、上述したNo個の識別子で示される個々の「実体レジスタ」に出力オペランドを格納する。
すなわち、プログラムブロック毎に含まれる全ての命令は、対応する機能ユニット毎に分類され、かつ既述の操作符号と積算値ΣNi、ΣNo、ΣNIとからなる「命令」としてその機能ユニットに引き渡された後に、これらの機能ユニットにおいて、機能レジスタ管理テーブル64Ii、64IoのΣNi番目以降およびΣNo番目以降のフィールドに格納された所望の数の「実体レジスタ」として特定された入力オペランドおよび出力オペランドに併せて、既述の「即値オペランド」の値の列SIのΣNI番目以降に配置された所望の数の「即値オペランド」が適用されることによって、並行して実行される。
また、上述した処理(図8(1)〜(5))の過程では、個々の機能レジスタには、機能レジスタ管理テーブル64Ii、64Ioを介してプログラムブロック毎に、該当するプログラムブロックの内部における依存関係と、先行するプログラムブロックおよび後続するプログラムブロックとの間における依存関係との双方が解消される形態で、空の物理レジスタが適宜オペランドに割り付けられる。
また、本実施形態によれば、既述のスペアビットEの論理値に応じて、図7に示す機械語の形式とは異なる形式の機械語が並行して適用され得るだけではなく、例えば、図5に点線で示されるように、このような異なる形式の機械語、あるいはセパレータFと共に付加された所望の操作符号に対応し得る機能ユニット57FPU(57EXU)に併せて、これらの機能ユニット57FPU(57EXU)に対応するキャッシュ53FPU、53FBI、ポストスケジューラ55FPUおよびレジスタ管理部56FBI(キャッシュ53EImd、53EXU、53EBI、レジスタ54EImd、ポストスケジューラ55EXU、レジスタ管理部56EBIおよびレジスタファイル58E)が容易に付加され得る。
なお、「このように命令が拡張され、あるいは機能ユニットが増設された場合における機能ユニット57FPU(57EXU)と、キャッシュ53FPU、53FBI、ポストスケジューラ55FPUおよびレジスタ管理部56FBI(キャッシュ53EI md、53EXU、53EBI、レジスタ54EImd、ポストスケジューラ55EXU、レジスタ管理部56EBIおよびレジスタファイル58E)との連係」については、「機能ユニット57Pと、キャッシュ53Imd、53P、レジスタ54Imd、ポストスケジューラ55Pおよびレジスタ管理部56IBIとの間における既述の連係」と同じであるので、ここでは、その説明を省略する。
すなわち、機械語が冗長な情報を含むことなく構成されるにもかかわらず、従来例に比べて、機械語のフォーマットの柔軟な変更が可能となり、かつ割り込み処理の起動に先行して内部の各部の情報が新規に保存される必要がない。
したがって、本実施形態によれば、RISCアーキテクチャの利点が損なわれることなく、かつ以下に列記されるように、機能の柔軟な追加や変更が可能となる。
・ 拡張が可能な命令の実行レイテンシにかかわる自由度が確保される。
・ パイプラインの基本的な構成や動作の変更が容易となる。
・ 転送命令、分岐命令その他の多様な命令の追加が容易である。
・ オペランド(即値オペランドを含む。)の数および語長の変更が命令毎に容易に実現される。
・ スーパスカラ、分岐予測、アウトオブオーダ実行等の技法に馴染み安く、これらの技法の適用による高速化が容易に達成される。
・ 主記憶の記憶領域の利用効率が高められる。
・ ハードウエアの構成が複雑化することなく、その割り込み処理の起動の高速化が図られる。
なお、本実施形態では、機能ユニット57Pに与えられるべき「即値オペランド」は、キャッシュ53Imdおよびレジスタ54Imdを介して適宜引き渡されたいる。
しかし、本発明はこのような構成に限定されず、これらの「即値オペランド」は、例えば、下記の何れの形態で機能ユニット57Pに引き渡されてもよい。
・ プリデコーダ52によって既述の「機能別命令語」の一部にパックされ、かつキャッシュ53Pおよびポストスケジューラ55Pを介して引き渡される。
・ 物理レジスタの内、何れかの「確定空レジスタ」に格納され、その「確定空レジスタ」の識別子として引き渡される。
また、本実施形態では、汎用レジスタに割り付けられた物理レジスタが後続するプログラムブロックに引き継がれることによって、先行するプログラムブロックとの依存関係が保証されている。
しかし、本発明はこのような構成に限定されず、処理量(応答性)の低下が許容される場合には、汎用レジスタに割り付けられた物理レジスタがプログラムブロック毎に所望のアルゴリズムに基づいて更新され、異なる物理レジスタが割り付けられた汎用レジスタの内容はその汎用レジスタに先行して割り付けられた物理レジスタから適宜転送(複写)されてもよい。
さらに、本実施形態では、既述の出力機能レジスタに割り付けられる物理レジスタはプログラムブロック毎に更新され、かつ個々のプログラムブロックに含まれる一連の命令の出力オペランドはこのようにして割り付けられた物理レジスタに適宜格納されている。
しかし、本発明はこのような構成に限定されず、例えば、これらの出力オペランドは、全てのプログラムブロックに共通に割り付けられた物理レジスタに格納され、かつ後続するプログラムブロックに含まれる一連の命令の実行に先行して適宜退避され、あるいは依存関係の保証を可能とする適切な物理レジスタに転送されてもよい。
また、本実施形態では、図7に示す集合機械語列PB1、PB2に含まれる各語の下位オーダには、セパレータFによって対応する機能ユニット毎に区分された操作符号の列が配置されている。
しかし、本発明はこのような構成に限定されず、集合機械語列PB1、PB2を構成する各語には、対応する機能ユニットの如何にかかわらず付与されたユニークな操作符号が格納されることが許容される場合には、上記のセパレータFが含まれなくてもよい。
さらに、本実施形態では、各プログラムブロック毎に含まれる個々の命令の入力オペランド、出力オペランドおよび即値オペランドの数の積算値ΣNi、ΣNo、ΣNIは、プリデコーダ52によって自立的に求められている。
しかし、本発明はこのような構成に限定されず、例えば、図7に示す各語の下位オーダの7ビットに「該当する命令の入力オペランド、出力オペランドおよび即値オペランドの数Ni、No、NI」がパックされ、かつ操作符号が「この命令の即値オペランド」として設定されることによって、上述した積算値ΣNi、ΣNo、ΣNIを求めるためにプリデコーダ52によって行われるべき処理の簡略化が図られてもよい。
また、本実施形態では、既述のセパレータFの論理値は、集合機械語列毎に含まれる操作符号の内、機能ユニット57ALU、57IMU、57LSUに対応する最先の操作符号に付加されたセパレータFに限って、「1」に設定されている。
しかし、このようなセパレータFについては、集合機械語列に含まれる各語の語長の範囲で許容される限り、対応する機能ユニットを示すユニークな識別子と、これらの語の順に含まれる操作符号に対応した機能ユニットが変化する度に論理値が反転する単一のビットとの何れで代替されてもよい。
さらに、本実施形態では、個々の集合機械語列には、分岐命令に相当する語が末尾に配置されている。
しかし、このような分岐命令に相当する語は、該当する分岐命令が実行されるべき順序がプログラムブロック毎に適正に維持される限り、集合機械語列の如何なる位置に配置されてもよい。
また、本実施形態では、命令の語長が一定であるRISCアーキテクチャのコンピュータに本発明が適用されている。
しかし、本発明は、このようなコンピュータに限定されず、例えば、可変語長の命令体系が適用されたコンピュータにも同様に適用可能である。
[実施形態2]
以下、図5を参照して本発明の第二の実施形態の動作を説明する。
コントロールユニット60は、『キャッシュ53ALU、53IMU、53LSUの記憶領域の内、これらのキャッシュ53ALU、53IMU、53LSUに、プログラムブロック毎に含まれる最先の「分岐命令語」、「演算命令語」および「転送命令語」が書き込まれるべき記憶領域のポインタWPALU、WPIMU、WPLSU』と、「このプログラムブロックの集合機械語列が格納された主記憶の記憶領域のポインタMP」とを下記の値として識別する。
・ WPALU=『プリデコーダ52によって命令語が書き込まれた「キャッシュ53ALUの記憶領域」の先頭アドレス』
・ WPIMU=『プリデコーダ52によってキャッシュ53IMUに書き込まれた「分岐命令語」の数の積算値』−『これらの「分岐命令語」の内、ポストスケジューラ55IMUの配下で機能ユニット57IMUによって実行された「分岐命令語」の数の積算値』
・ WPLSU=『プリデコーダ52によってキャッシュ53LSUに書き込まれた「転送命令語」の数の積算値』−『これらの「転送命令語」の内、ポストスケジューラ55LSUの配下で機能ユニット57LSUによって実行された「転送命令語」の数の積算値』
・ MP=『主記憶の記憶領域の内、二次キャッシュ51を介してプリデコーダ52によってプログラムブロック毎に読み出された集合機械語列の先頭の語が格納された記憶領域のアドレス』
なお、これらのポインタWPALU、WPIMU、WPLSU、MPの識別を可能とするために、プリデコーダ52とコントロールユニット60とによって行われるべき処理の形態については、キャッシュ53ALU、53IMU、53LSUのアドレッシングその他に応じて多様であり、本発明の特徴ではないので、ここでは、その詳細な説明を省略する。
さらに、コントロールユニット60は、既述の「演算命令語」、「分岐命令語」および「転送命令語」の集合としてキャッシュ53ALU、53IMU、53LSUにそれぞれ蓄積され得る最大の数のプログラムブロックに亘って、上述したポインタMP、WPALU、WPIMU、WPLSUの集合をプログラムブロック毎に適宜対応付け、例えば、図10に示すPBテーブル91に登録する。
機能ユニット57IMUは、有効な分岐を行うべき場合には、コントロールユニット60に、主記憶上における分岐先を示すポインタMPを引き渡す。
コントロールユニット60は、上述したPBテーブル91にそのポインタMPが登録されているか否かを判別し、この判別の結果が真である場合に限って、ポストスケジューラ55ALU、55IMU、55LSUに、このポインタMPに対応付けられてPBテーブル91に登録されているポインタWPALU、WPIMU、WPLS Uを引き渡す。
ポストスケジューラ55ALU、55IMU、55LSUは、上述した分岐に先行して実行されるべき「機能物命令語」0を実行した後に、キャッシュ536ALU、53I MU、53LSUの記憶領域の内、これらのポインタWPALU、WPIMU、WPLSUで示される記憶領域に格納された格納された「演算命令語」の列、「分岐命令語」および「転送命令語」の列を新たなプログラムブロックとして識別する。
なお、このようにして識別されたプログラムブロックの実行の過程におけるキャッシュ53Imd、53IBI、レジスタ54Imdおよびレジスタ管理部56IBIの動作については、基本的に既述の第一の実施形態と同じであるので、ここでは、その説明を省略する。
したがって、本実施形態によれば、分岐に応じてキャッシュ53Pに既に蓄積されている「機能別命令語」の列が有効に参照され、処理の効率が総合的に高められる。
[実施形態3]
以下、図5を参照して本発明の第三の実施形態の動作を説明する。
本実施形態の特徴は、ポストスケジューラ55Pによって行われる下記の処理の手順にある。
ポストスケジューラ55Pは、『機能ユニット57Pによって実行されるために必要なオペランドの全てが確定した「機能別命令語」』を順次キャッシュ53Pに書き込む。
なお、以下では、このようにして順次書き込まれた「機能別命令語」については、簡単のため、「再格納機能別命令語」という。
さらに、ポストスケジューラ55Pは、ポストスケジューラ55IMUの主導(またはそのポストスケジューラ55IMUと機能ユニット57IMUとの連係)の下で、「他のプログラムブロックに分岐することなく、該当するプログラムブロックを反復して実行すべきこと」が識別されると、上述した「再格納機能別命令語」にパックされた「PB番号」を他の「PB番号」(例えば、既定の定数との和として与えられる。)に読み替えつつこの「再格納機能別命令語」の列の再実行を図る。
このような「再格納機能別命令語」の列は、先行して実際に実行が可能となった順序で上述した「機能別命令語」が並び替えられることによって得られる。
したがって、本実施形態によれば、同じプログラムブロックの実行が反復される過程では、先行して早く実行が可能となった命令から順に優先的に実行される。
[実施形態4]
図11は、本発明の第四の実施形態の動作を説明する図である。
以下、図5および図11を参照して本発明の第四の実施形態の動作を説明する。
本実施形態では、機能ユニット57ALUによって実現されるべき演算命令として、先行するプログラムブロックに含まれる加算命令「ADD」等の演算命令より優先して実行されるべき優先加算命令「pADD」が付加される。
このような優先加算命令「pADD」は、例えば、図11(1)に示すように、加算命令「ADD」が含まれてなるプログラムブロックAに後続して実行されるべきプログラムブロックBに含まれる。
ポストスケジューラ55ALUは、プログラムブロックAに含まれる演算命令が実行されるべき状態であっても、コントロールユニット60およびレジスタ管理部56IBIと連係することによって、下記の条件が成立するか否かを判別する。
・ 後続するプログラムブロックBに含まれる全ての「演算命令語」(以下、「後続演算命令」という。)が既にキャッシュ53ALUに格納されている。
・ これらの「後続演算命令」の全てのオペランドに対する物理レジスタの割り付けが完了している。
この判別の結果が真である場合には、ポストスケジューラ55ALUは、これらの「後続演算命令」に既述の優先加算命令「pADD」が含まれるが否がを判別する。
さらに、ポストスケジューラ55ALUは、この判別の結果が真である場合には、該当する優先加算命令「pADD」を優先的に選択し、かつ機能ユニット57AL Uにこの優先加算命令「pADD」の実行を要求する。
なお、機能ユニット57ALUには、優先加算命令「pADD」の実行を可能とする機能が予め具備され(あるいは新たに付加され)、かつプログラムブロックBの入力オペランドと出力オペランドとに対する物理レジスタの割り付けは、プログラムブロックAの実行が完了する前であってもパイプライン方式に基づいて先行して行われると仮定する。
すなわち、例えば、図11(2)に示されるように、プログラムブロックAに含まれるにもかかわらず、プログラムブロックBに含まれる何れの命令との間にも依存関係がない加算命令「ADD」より優先して、そのプログラムブロックBに含まれる優先加算命令「pADD」が実行される。
したがって、本実施形態によれば、既述の第一の実施形態に新たな機能を実現する優先加算命令「pADD」が付加されることによって、このプログラムブロックBにおいて優先加算命令「pADD」に後続する減算命令「SUB」と、さらに後続する分岐命令「BZ」との依存関係(レジスタr6→r8)が早期に保証される。
[実施形態5]
以下、図5を参照して本発明の第五の実施形態の動作を説明する。
本実施形態には、既述の機能ユニット57EXUに併せて、その機能ユニット57EXUと連係するキャッシュ53EImd、53EXU、53EBI、レジスタ54EImd、ポストスケジューラ55EXU、レジスタ管理部56EBIおよびレジスタファイル58Eが備えられる。
機能ユニット57EXUは、例えば、機能ユニット57LSUによって所定の転送命令が実行されるべき契機、その転送命令の転送先、転送元および転送の対象の何れかを出力オペランドとして特定する機能を有する。
機能ユニット57LSU、57EXUは、これらの機能ユニット57LSU、57EXUの連係の下で行われるべき転送命令を示す個別の、あるいは共通の「転送命令語」が与えられると、個別に所定の処理を行う。
しかし、機能ユニット57LSUは、機能ユニット57EXUによって特定され、かつ与えられるべき出力オペランド(上述した契機、転送先、転送元、転送の対象の何れか)が与えられる時点まで、該当する「転送命令語」の実行またはその実行の開始を保留する。
このように本実施形態によれば、複数の機能ユニットの連係の下で所望の機能を実現する命令の追加や変更が柔軟に達成され、これらの機能ユニットの内、何れか一方が既存の機能ユニットである場合には、その既存の機能ユニットの機能が無用に複雑化し、あるいは変更されることが回避される。
図12は、本発明の第六の実施形態の動作フローチャートである。
[実施形態6]
以下、図6、図7および図12を参照して本発明の第六の実施形態の動作を説明する。
本実施形態の特徴は、下記の「プログラム変換」を実現する処理の手順にある。
本実施形態では、図6bに示すように、RISCアーキテクチャに適合したアセンブラ言語で記載された原始プログラムがアセンブルされることによって生成され、かつ「3アドレス方式」に基づく機械語の列が上述した「プログラム変換」の対象として与えられる。
このような機械語の列は、下記の手順に基づいて処理される。
(1)「上述した第一ないし第五の実施形態の何れかにかかわるコンピュータにおいて、単一のプログラムブロック当たりに含まれることが許容される命令の最大の数NMAX」が与えられ、下記の条件の全てが成立する部分機械語列に、上述した機械語の列を分割する(図12(1))。
・ 分岐命令が何ら含まれず、あるいは単一の分岐命令が含まれる。
・ 分岐命令が含まれる場合には、その分岐命令の分岐先は、該当する部分機械語列に含まれない。
・ 含まれる機械語の数は、上述した最大の数NMAX以下である。
(2)全ての部分機械語列に対して下記の処理を施す。
▲1▼該当する部分機械語列に含まれる個々の機械語を『「分岐命令」、「演算命令」、(「浮動小数点演算命令」、「拡張命令」)および「転送命令」に相当する機械語』の各列(以下、「一次変換機械語列」という。)に変換する(図12(2))。
▲2▼その「一次変換機械語列」に含まれる「操作符号(オペレーションコード)」の列(以下、「操作符号列」という。)、入力オペランドの列(以下、「入力オペランド列」という。)、即値オペランドの列(以下、「即値オペランド列」という。)および出力オペランドの列(以下、「出力オペランド列」という。)を生成する(図12(3))。
▲3▼この「入力オペランド列」に含まれる入力オペランドの内、「出力オペランド列」に含まれ、かつ該当する機械語より先行する機械語の出力オペランド(以下、「被依存出力オペランド」という。)に該当する入力オペランド(以下、「依存入力オペランド」という。)を全て特定する(図12(4))。
▲4▼これらの特定された「被依存出力オペランド」と「依存入力オペランド」との対の全てに対して下記の処理を施す。
・ 該当する部分機械語列に含まれる機械語の内、「被依存出力オペランド」を含む機械語のその部分機械語列における順位K(≧0)を特定する(図12(5))。
・ 「56+K」で示される仮想的な汎用レジスタの番号に「依存入力オペランド」を置換する(図12(6))。
▲5▼これらの「操作符号列」、「入力オペランド列」、「即値オペランド列」、「出力オペランド列」の構成等に基づいて既述の「制御情報」を求める(図12(7))。
▲6▼下記の形式に適合した語の列として図7に示す集合機械語列を生成する(図12(8))。
・ 「操作符号列」に含まれる個々の「操作符号」が既述のセパレータFと共に個々の語の下位の8ビットに配置される。
・ 上述した「制御情報」が先頭の語の上位オーダにパックされる。
・ 上述した「入力オペランド列」、「即値オペランド列」、「出力オペランド列」からなる「オペランド群」(だだし、余剰のフィールドには、既述の「ダミー物理レジスタ番号」が適宜が配置される。)が第二番目以降の一連の語の上位オーダにパックされる。
このように本実施形態によれば、RISCアーキテクチャに適合した所望のプロセッサが実行し得る機械語の列は、上述した第一ないし第五の実施形態の何れかにかかわるコンピュータによって実行可能な機械語に変換される。
ここに、「実行可能」とは、該当する機械語の実行に必要な全ての条件が成立した状態のみに限定されず、実行の過程でこれらの条件が成立すると見なし得ること、またはそのために発行の対象となりもしくはなったことも意味する。
したがって、既存のロードモジュールは、原始プログラムが参照されることなく速やかに、かつ効率的に有効なロードモジュールとして活用される。
なお、本実施形態では、既存のロードモジュール(機械語の列)が本発明にかかわるコンピュータによって実行可能なロードモジュールに直接変換されている。
しかし、このようなコンピュータによって実行可能なロードモジュールは、所望のアセンブリ言語で記述された原始プログラム(ソースプログラム)がシンボルの領域で直接変換され、かつアセンブルされることによって生成されてもよい。
また、本実施形態では、原始プログラムが図7に示す形式の機械語に変換されている。
しかし、本発明はこのような構成に限定されず、例えば、上述した原理プログラムが既述のバス命令やオペレーションコードに直接分解され、かつプリデコードの結果として得られたデータと同様に対応するキャッシュメモリに適宜格納されてもよい。
さらに、上述した各実施形態では、プログラムブロック毎に対応した集合機械語列が3アドレス方式の機械語の列として生成されている。
しかし、本発明はこのような3アドレス方式に限定されず、2アドレス方式、1アドレス方式、0アドレス方式の命令形式に適合したプロセッサだけではなく、これらの方式の組み合わせに適合したプロセッサにも同様に適用可能である。
また、上述した各実施形態では、RISCアーキテクチャに基づいて構成されたプロセッサに本発明が適用されている。
しかし、本発明は、このようなプロセッサに限定されず、CISCアーキテクチャに基づいて構成されたプロセッサにも同様に適用可能である。
さらに、上述した各実施形態では、汎用のプロセッサに本発明が適用されている。
しかし、本発明は、このようなプロセッサに限定されず、例えば、音声処理、画像処理その他の目的に供されるDSPその他の専用プロセッサにも同様に適用可能である。
また、上述した各実施形態では、個々の機能ユニットに対応するキャッシュメモリの数が「1」となっている。
しかし、本発明はこのような構成に限定されず、例えば、操作符号語その他に基づいて適正な対や組み合わせが識別される限り、単一または複数の機能ユニットが複数のキャッシュメモリに対応付けられ、あるいは複数の機能ユニットが単一または複数のキャッシュメモリに対応付けられてもよい。
さらに、上述した各実施形態では、「基本ブロック」が定義されていないが、このような「基本ブロック」は、入口と出口とがそれぞれその「基本ブロック」の先頭と末尾の命令のみである限り、必ずしも分岐命令が含まれなくてもよい。
また、このような「基本ブロック」については、例えば、「既述のロードモジュールに対応した原始プログラムが構造化言語で記載されず、かつ何らモジュール化されていないために、入口が必ずしも確定しない場合」には、その入口が動的に予測されることによって適宜識別されてもよい。
さらに、本発明は、上述した実施形態に限定されるものではなく、本発明の範囲において、多様な形態による実施形態が可能であり、かつ構成装置の一部もしくは全てに如何なる改良が施されてもよい。
また、本発明にかかわる第二の命令制御装置では、即値オペランドの形式や語長が物理レジスタの数や語長に整合しない場合であっても、個々の命令は、オペランドの数や組み合わせの如何にかかわらず、複数の機能ユニットによる機能分散の下で効率的に実行される。
さらに、本発明にかかわる第三の命令制御装置では、命令制御にかかわる処理の簡略化が図られる。
また、本発明にかかわる第四の命令制御装置では、物理レジスタの間における無用なデータの転送が回避され、かつ応答性および信頼性が高められる。
さらに、本発明にかかわる第五の命令制御装置では、共通の基本ブロックの内部および後続する基本ブロックとの間における出力オペランドの引き渡しが効率的に行われる。
また、本発明にかかわる第六の命令制御装置では、物理レジスタの管理にかかわる処理が無用に複雑化することなく、命令制御が効率的に達成される。
さらに、本発明にかかわる第七の命令制御装置では、性能が低下することなく、多様な命令の効率的な実行が可能となる。
また、本発明にかかわる第八の命令制御装置では、分岐の高速化が図られる。
さらに、本発明にかかわる第九の命令制御装置では、プリデコードおよび命令制御の効率が向上し、かつ総合的な処理速度が高められる。
また、本発明にかかわる第十の命令制御装置では、基本的な命令の形式が変更されることなく、多様な機能の追加や変更が柔軟に達成される。
さらに、本発明にかかわる第十一の命令制御装置では、プリデコードおよび命令制御の効率が高められる。
また、本発明にかかわる第十二の命令制御装置では、主記憶の語長や基本的な命令の語長が変更されることなく、多様な機能の追加や変更が柔軟に達成される。
さらに、本発明にかかわる第十三の命令制御装置では、機械語の構成の簡略化と短縮とが図られる。
また、本発明にかかわる第十四の命令制御装置では、固定語長の命令体系を有する多様な情報処理装置に対する柔軟な適応が可能となる。
さらに、本発明にかかわる第十五の命令制御装置では、構成の簡略化と応答性の向上とが図られる。
また、本発明にかかわる第一の機能ユニットでは、反復処理の効率が高められる。
さらに、本発明にかかわる第二の機能ユニットでは、複数の基本ブロックの間にける依存関係が効率的に、かつ早期に保証される。
また、本発明にかかわる第三の機能ユニットでは、機能の追加や変更に必要な複数の機能ユニットの間の機能分散や負荷分散が柔軟に達成される。
さらに、本発明にかかわるプログラム変換装置では、既存のオブジェクトプログラムやロードモジュールの有効な活用が可能となる。
また、本発明にかかわる言語処理装置の原理では、既存の原始プログラムの有効な活用が可能となる。
したがって、これらの発明が適用された情報処理系と、その情報処理系が組み込まれ、もしくはこの情報処理系と連係して作動するシステムまたは機器では、所望の仕様や性能に柔軟に適応した形態でハードウエアとソフトウエアとの間における機能分散および負荷分散が達成され、かつ仕様や機能の変更に併せて、付加価値の向上にかかわる自由度が高く確保される。
Claims (24)
- 機械語の列からなる基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとを抽出し、これらの入力オペランドおよび出力オペランドの数の積算値の列を個別に生成するオペランド数積算手段と、
前記基本ブロック毎に割り付けが更新されるべき仮想的な入力レジスタと出力レジスタとを管理し、かつ前記入力オペランドと前記出力オペランドとに、前記積算値の列に含まれる個々の対応する積算値以降の順位の入力レジスタと出力レジスタとを重複なく対応付ける仮想割り付け手段と、
前記基本ブロックに含まれ得る命令の機能を有する機能ユニットとの情報の引き渡しに供される物理レジスタを管理し、かつ前記全ての命令の出力オペランドに個別に対応付けられた出力レジスタと、これらの命令の入力オペランドが個別に引き渡されるべき入力オペランドに対応付けられた入力レジスタとの集合毎に、これらの物理レジスタを割り付けるオペランド引き渡し手段と
を備えたことを特徴とする命令制御装置。 - 請求の範囲1に記載の命令制御装置において、
前記オペランド数積算手段は、
前記積算値毎に含まれる入力オペランドの数として、即値オペランドの数を積算せず、
前記オペランド引き渡し手段は、
前記機能ユニットに、前記オペランド数積算手段によって数が積算されなかった即値オペランドを引き渡す
ことを特徴とする命令制御装置。 - 請求の範囲1に記載の命令制御装置において、
前記オペランド数積算手段は、
前記基本ブロック毎に、前記入力オペランドの内、即値オペランドと他の入力オペランドとの数の積算値を個別に生成し、
前記オペランド引き渡し手段は、
前記即値オペランドと前記他の入力オペランドとに個別に物理レジスタを割り付け、個々の即値オペランドに割り付けられた物理レジスタにその即値オペランドを格納する
ことを特徴とする命令制御装置。 - 請求の範囲1に記載の命令制御装置において、
前記仮想割り付け手段は、
前記入力オペランドの列と前記出力オペランドの列とに含まれるオペランドの内、先行する直近の基本ブロックに含まれる命令のオペランドに対する入力レジスタと出力レジスタとの既存の対応付けを維持する
ことを特徴とする命令制御装置。 - 請求の範囲1に記載の命令制御装置において、
前記物理レジスタの内、特定の物理レジスタは、
前記基本ブロックに含まれる個々の命令の出力オペランドに予め対応付けられ、
前記オペランド引き渡し手段は、
前記集合毎に含まれる個々の命令の出力オペランドに対応付けられた出力レジスタと、その出力オペランドが引き渡されるべき入力レジスタとに、前記特定の物理レジスタの内、その出力オペランドに予め対応付けられた特定の物理レジスタを優先的に割り付ける
ことを特徴とする命令制御装置。 - 請求の範囲1に記載の命令制御装置において、
前記オペランド引き渡し手段は、
前記基本ブロックに含まれる命令の入力オペランドの内、その基本ブロックの内部において依存関係がない入力オペランドに対する既存の物理レジスタの割り付けを維持する
ことを特徴とする命令制御装置。 - 請求の範囲1に記載の命令制御装置において、
前記仮想割り付け手段は、
前記機能ユニットの内、前記基本ブロックに含まれる個々の命令の機能を有する機能ユニットに対応したキャッシュメモリに、その命令の操作符号と、この命令の入力オペランドと出力オペランドとにそれぞれ対応付けられた入力レジスタと出力レジスタとの基準アドレスとからなるレコードを格納し、
前記オペランド引き渡し手段は、
前記機能ユニットに対応するキャッシュメモリに格納された最先のレコードに含まれる基準アドレスより一義的に定まり、これらのレコードに対応する命令の実行に必要な数の入力オペランドおよび出力オペランドに対応付けられた入力レジスタと出力レジスタとの集合毎に、前記物理レジスタを割り付ける
ことを特徴とする命令制御装置。 - 請求の範囲7に記載の命令制御装置において、
前記基本ブロックの列に対して、これらの基本ブロック毎に、前記キャッシュメモリに最先に格納された操作符号を有する命令が格納された記憶領域を示すキャッシュアドレスと、主記憶の記憶領域の内、これらの命令が個別に格納された記憶領域のアドレスとが格納された分岐先テーブルを有し、
前記オペランド引き渡し手段は、
前記機能ユニットの内、特定の機能ユニットによって有効な分岐が行われるときに、分岐先を示すアドレスに対応して前記分岐先テーブルに格納されたキャッシュアドレスに前記キャッシュメモリの読み出しポインタを更新する
ことを特徴とする命令制御装置。 - 請求の範囲1に記載の命令制御装置において、
前記基本ブロックは、
前記機械語の列に含まれ得る命令の機能を有する機能ユニット毎に対応し、その機械語に含まれる命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部が個別にパックされた語の列として構成された
ことを特徴とする命令制御装置。 - 請求の範囲9に記載の命令制御装置において、
前記機械語の列に含まれ得る特定の命令は、
操作符号が即値オペランドとして含まれ、その操作符号に代えて入力オペランドと出力オペランドとの数の組み合わせが配置されることによって構成された
ことを特徴とする命令制御装置。 - 請求の範囲9に記載の命令制御装置において、
前記操作符号には、
対応する機能ユニットの識別子またはこれらの機能ユニットの異同を意味する情報がパックされた
ことを特徴とする命令制御装置。 - 請求の範囲9に記載の命令制御装置において、
前記操作符号は、
対応する機能ユニットが異なる場合に値が重複し得る語として構成された
ことを特徴とする命令制御装置。 - 請求の範囲9に記載の命令制御装置において、
前記基本ブロックに含まれる分岐命令の操作符号と入力オペランドと出力オペランドとの全てまたは一部は、
この基本ブロックの先頭もしくは末尾にパックされた
ことを特徴と命令制御装置。 - 請求の範囲1に記載の命令制御装置において、
前記基本ブロックは、
語長が一定である語の列として構成された
ことを特徴とする命令制御装置。 - 請求の範囲8に記載の命令制御装置において、
前記基本ブロックは、
語長が一定である語の列として構成された
ことを特徴とする命令制御装置。 - 請求の範囲9に記載の命令制御装置において、
前記基本ブロックは、
語長が一定である語の列として構成された
ことを特徴とする命令制御装置。 - 請求の範囲1に記載の命令制御装置において、
前記汎用レジスタは、
前記物理レジスタの一部として構成された
ことを特徴とする命令制御装置。 - 請求の範囲8に記載の命令制御装置において、
前記汎用レジスタは、
前記物理レジスタの一部として構成された
ことを特徴とする命令制御装置。 - 請求の範囲9に記載の命令制御装置において、
前記汎用レジスタは、
前記物理レジスタの一部として構成された
ことを特徴とする命令制御装置。 - 操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリに格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリに格納され、かつ実行が可能な命令を順次選択するスケジューラと、
前記スケジューラによって選択された命令を前記キャッシュメモリから取得し、この命令のオペランドを示す識別子を前記命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う処理手段とを備え、
前記スケジューラは、
前記キャッシュメモリに格納された命令の内、前記選択された命令とその命令が属する基本ブロックの番号とをこのキャッシュメモリに順次格納し、その基本ブロックの実行の反復にこの基本ブロックの番号を読み替えて適用する
ことを特徴とする機能ユニット。 - 操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリに格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリに格納され、かつ実行が可能な命令を順次選択するスケジューラと、
前記スケジューラによって選択された命令を前記キャッシュメモリから取得し、この命令のオペランドを示す識別子を前記命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う処理手段とを備え、
前記スケジューラは、
前記実行が可能な命令の内、特定の操作符号を有する命令を優先して選択する
ことを特徴とする機能ユニット。 - 操作符号と、仮想的なレジスタの識別子として示されるオペランドとから構成され、かつ命令先取りの下で特定された基本ブロックの番号と共にキャッシュメモリに格納された命令の内、命令制御の下で実行されるべき基本ブロックの番号と共にそのキャッシュメモリに格納され、かつ実行が可能な命令を順次選択するスケジューラと、
前記スケジューラによって選択された命令を前記キャッシュメモリから取得し、この命令のオペランドを示す識別子を前記命令制御の下で物理的なレジスタに変換しつつその命令の操作符号に適合した処理を行う処理手段とを備え、
前記スケジューラは、
前記キャッシュメモリに格納された命令の内、特定の操作符号を有する命令については、その命令の即値オペランドまたはこの即値オペランドに対して規定の相関性を有する情報が外部から与えられ、またはその外部に引き渡すことができたときに選択する
ことを特徴とする機能ユニット。 - 機械語の列を基本ブロックの列に区分し、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとに併せて、これらの命令の操作符号を抽出する機械語分解手段と、
前記基本ブロック毎に、前記機械語分解手段によって抽出された個々の操作符号をその操作符号に適応した処理を行うべき機能ユニット毎に区分する命令区分手段と、
前記機械語分解手段によって抽出された入力オペランドおよび出力オペランドと、前記命令区分手段によって区分された操作符号とが前記機能ユニットの順に前記基本ブロック毎にパックされ、かつ命令制御に適合した形式の語の列に前記機械語の列を変換する変換手段と
を備えたことを特徴とするプログラム変換装置。 - アセンブラ言語で記述され、かつアセンブリ命令に該当しない命令の列を基本ブロックの列に区分し、これらの基本ブロック毎に、その基本ブロックに含まれる全ての命令の入力オペランドと出力オペランドとの識別子に併せて、これらの命令の記号命令を抽出する原始プログラム分解手段と、
前記基本ブロック毎に、前記原始プログラム分解手段によって抽出された個々の記号命令をその記号命令に適応した処理を行うべき機能ユニット毎に区分する命令区分手段と、
前記原始プログラム分解手段によって抽出された識別子と、前記命令区分手段42によって区分された記号命令とに個別に対応した入力オペランド、出力オペランドおよび操作符号が前記機能ユニットの順に前記基本ブロック毎にパックされ、かつ前記命令の列の命令制御に適合した形式の機械語の列にその命令の列を変換する変換手段と
を備えたことを特徴とする言語処理装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2002/007726 WO2004012079A1 (ja) | 2002-07-30 | 2002-07-30 | 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2004012079A1 JPWO2004012079A1 (ja) | 2005-11-24 |
JP3799423B2 true JP3799423B2 (ja) | 2006-07-19 |
Family
ID=30795882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004524095A Expired - Fee Related JP3799423B2 (ja) | 2002-07-30 | 2002-07-30 | 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20050283588A1 (ja) |
JP (1) | JP3799423B2 (ja) |
AU (1) | AU2002368121A1 (ja) |
WO (1) | WO2004012079A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2069928A1 (en) * | 2006-10-02 | 2009-06-17 | Transitive Limited | Computer system and method of adapting a computer system to support a register window architecture |
JP5226328B2 (ja) * | 2007-03-27 | 2013-07-03 | パナソニック株式会社 | コード変換装置 |
GB2466984B (en) | 2009-01-16 | 2011-07-27 | Imagination Tech Ltd | Multi-threaded data processing system |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
GB2538237B (en) * | 2015-05-11 | 2018-01-10 | Advanced Risc Mach Ltd | Available register control for register renaming |
GB2576572B (en) * | 2018-08-24 | 2020-12-30 | Advanced Risc Mach Ltd | Processing of temporary-register-using instruction |
US10831478B2 (en) * | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
US10831502B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Migration of partially completed instructions |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03135630A (ja) * | 1989-10-20 | 1991-06-10 | Nec Corp | 命令スケジューリング方式 |
US5694564A (en) * | 1993-01-04 | 1997-12-02 | Motorola, Inc. | Data processing system a method for performing register renaming having back-up capability |
CN1264087C (zh) * | 1999-09-08 | 2006-07-12 | 关一 | 寄存器再命名方法 |
-
2002
- 2002-07-30 AU AU2002368121A patent/AU2002368121A1/en not_active Abandoned
- 2002-07-30 WO PCT/JP2002/007726 patent/WO2004012079A1/ja active Application Filing
- 2002-07-30 JP JP2004524095A patent/JP3799423B2/ja not_active Expired - Fee Related
-
2005
- 2005-01-28 US US11/044,631 patent/US20050283588A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JPWO2004012079A1 (ja) | 2005-11-24 |
US20050283588A1 (en) | 2005-12-22 |
AU2002368121A1 (en) | 2004-02-16 |
WO2004012079A1 (ja) | 2004-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101966712B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 | |
KR101620676B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 | |
KR101638225B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 | |
US7363467B2 (en) | Dependence-chain processing using trace descriptors having dependency descriptors | |
US10013391B1 (en) | Architecture emulation in a parallel processing environment | |
US7383422B2 (en) | Very long instruction word (VLIW) computer having an efficient instruction code format | |
US7003629B1 (en) | System and method of identifying liveness groups within traces stored in a trace cache | |
JP6849274B2 (ja) | 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック | |
KR101594502B1 (ko) | 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 | |
JP6761565B2 (ja) | アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置 | |
JP5145809B2 (ja) | 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム | |
US20050198476A1 (en) | Parallel multithread processor (PMT) with split contexts | |
EP0737915A1 (en) | Method and apparatus for improving system performance in a data processing system | |
JP2015191660A (ja) | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 | |
WO2016210027A1 (en) | Decoupled processor instruction window and operand buffer | |
US20130339711A1 (en) | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor | |
CN104252336A (zh) | 基于解码时间指令优化来形成指令组的方法和系统 | |
KR20180021165A (ko) | 프로세서 명령어 창에 대한 명령어 블록의 대량 할당 | |
US20050283588A1 (en) | Instruction control apparatus, function unit, program conversion apparatus, and language processing apparatus | |
US6393546B1 (en) | Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values | |
JPH10105402A (ja) | パイプライン方式のプロセッサ | |
TW201606645A (zh) | 在處理器管線中管理指令順序 | |
CN110806900B (zh) | 一种访存指令处理方法及处理器 | |
EP1220091B1 (en) | Circuit and method for instruction compression and dispersal in VLIW processors | |
US20040006687A1 (en) | Processor and instruction control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060328 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060330 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090512 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090512 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |