JP2000148472A - マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体 - Google Patents
マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体Info
- Publication number
- JP2000148472A JP2000148472A JP10327385A JP32738598A JP2000148472A JP 2000148472 A JP2000148472 A JP 2000148472A JP 10327385 A JP10327385 A JP 10327385A JP 32738598 A JP32738598 A JP 32738598A JP 2000148472 A JP2000148472 A JP 2000148472A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- microinstruction
- micro
- derived
- length data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012217 deletion Methods 0.000 claims abstract description 16
- 230000037430 deletion Effects 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims description 44
- 230000001133 acceleration Effects 0.000 claims description 11
- 238000001514 detection method Methods 0.000 abstract description 17
- 238000012937 correction Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 230000000717 retained effect Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/30181—Instruction operation extension or modification
-
- 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
- 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/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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)
Abstract
(57)【要約】
【課題】 分岐命令を使用することなく可変長データを
処理可能とし、可変長データを扱うソフトウェア命令の
高速化を図ることが可能なマイクロプロセッサ装置を提
供する。 【解決手段】 命令分割部2は命令供給部1から供給さ
れたマイクロ命令が可変長データを扱うためのマイクロ
命令である場合、そのマイクロ命令を通常のデータ長を
扱う複数個の派生マイクロ命令に分割する。リザベーシ
ョンステーション5は派生マイクロ命令を分割順に実行
ユニット6及び冗長命令検出部9に供給する。冗長命令
検出部9は残り派生マイクロ命令を監視する。命令削除
制御部8は冗長な派生マイクロ命令をリザベーションス
テーション5から削除する。命令終了操作部7はリオー
ダバッファ4内の冗長な派生マイクロ命令を実行完了状
態にセットする。
処理可能とし、可変長データを扱うソフトウェア命令の
高速化を図ることが可能なマイクロプロセッサ装置を提
供する。 【解決手段】 命令分割部2は命令供給部1から供給さ
れたマイクロ命令が可変長データを扱うためのマイクロ
命令である場合、そのマイクロ命令を通常のデータ長を
扱う複数個の派生マイクロ命令に分割する。リザベーシ
ョンステーション5は派生マイクロ命令を分割順に実行
ユニット6及び冗長命令検出部9に供給する。冗長命令
検出部9は残り派生マイクロ命令を監視する。命令削除
制御部8は冗長な派生マイクロ命令をリザベーションス
テーション5から削除する。命令終了操作部7はリオー
ダバッファ4内の冗長な派生マイクロ命令を実行完了状
態にセットする。
Description
【0001】
【発明の属する技術分野】本発明はマイクロプロセッサ
装置及びそのソフトウェア命令高速化方法並びにその制
御プログラムを記録した記録媒体に関し、特に可変長デ
ータを扱うソフトウェア命令の高速化方法に関する。
装置及びそのソフトウェア命令高速化方法並びにその制
御プログラムを記録した記録媒体に関し、特に可変長デ
ータを扱うソフトウェア命令の高速化方法に関する。
【0002】
【従来の技術】従来、このソフトウェア命令の高速化方
法としては、スーパスカラ構成のプロセッサがある。こ
のスーパスカラ構成のプロセッサとは、CISC(Co
mplex Instruction Set Com
puter)アーキテクチャが持つ複雑な命令をRIS
C(Reduced Instruction Set
Computer)の命令セットに似た垂直型のマイク
ロ命令で実現するプロセッサのことである。
法としては、スーパスカラ構成のプロセッサがある。こ
のスーパスカラ構成のプロセッサとは、CISC(Co
mplex Instruction Set Com
puter)アーキテクチャが持つ複雑な命令をRIS
C(Reduced Instruction Set
Computer)の命令セットに似た垂直型のマイク
ロ命令で実現するプロセッサのことである。
【0003】すなわち、図10に示すように、スーパス
カラ構成のプロセッサ20は命令フェッチ動作によって
メモリ(図示せず)から読出されたCISC命令をデコ
ードして解読するCISC命令解読部21と、CISC
命令解読部21の解読結果にしたがってそのCISC命
令を実現するRISC命令群を供給するRISC命令供
給部22と、このRISC命令群を実行するプロセッサ
本体23とから構成されている。ここで、プロセッサ本
体23はRISC命令セットが動作するプロセッサであ
る。
カラ構成のプロセッサ20は命令フェッチ動作によって
メモリ(図示せず)から読出されたCISC命令をデコ
ードして解読するCISC命令解読部21と、CISC
命令解読部21の解読結果にしたがってそのCISC命
令を実現するRISC命令群を供給するRISC命令供
給部22と、このRISC命令群を実行するプロセッサ
本体23とから構成されている。ここで、プロセッサ本
体23はRISC命令セットが動作するプロセッサであ
る。
【0004】これらRISC命令供給部22及びプロセ
ッサ本体23における一般的なハードウェア構成を図1
1に示す。図において、従来のスーパスカラ構成のプロ
セッサは命令供給部1と、レジスタリネーム部3と、リ
オーダバッファ4と、リザベーションステーション5
と、実行ユニット6とから構成されている。
ッサ本体23における一般的なハードウェア構成を図1
1に示す。図において、従来のスーパスカラ構成のプロ
セッサは命令供給部1と、レジスタリネーム部3と、リ
オーダバッファ4と、リザベーションステーション5
と、実行ユニット6とから構成されている。
【0005】命令供給部1は図示せぬ主記憶または命令
キャッシュから取出したソフトウェア命令を解析し、ソ
フトウェア命令に対応して構築されている垂直型のマイ
クロ命令(RISC命令)を供給する。また、命令供給
部1はマイクロ命令を識別するための識別子(以下、マ
イクロタグとする)を、マイクロ命令に付加して供給す
る。
キャッシュから取出したソフトウェア命令を解析し、ソ
フトウェア命令に対応して構築されている垂直型のマイ
クロ命令(RISC命令)を供給する。また、命令供給
部1はマイクロ命令を識別するための識別子(以下、マ
イクロタグとする)を、マイクロ命令に付加して供給す
る。
【0006】レジスタリネーム部3は命令供給部1から
送られてきたマイクロ命令と先行マイクロ命令とのレジ
スタ干渉をチェックし、レジスタ干渉を回避すべくリソ
ースレジスタ番号の付け直し(以下、この付け直し処理
をレジスタリネームとする)を行う。
送られてきたマイクロ命令と先行マイクロ命令とのレジ
スタ干渉をチェックし、レジスタ干渉を回避すべくリソ
ースレジスタ番号の付け直し(以下、この付け直し処理
をレジスタリネームとする)を行う。
【0007】リオーダバッファ4はレジスタリネーム部
3から出力されるマイクロ命令を格納し、格納したマイ
クロ命令の実行完了を待ち合わせる。また、リオーダバ
ッファ4は格納したマイクロ命令に対応して実行結果を
格納するフィールドと実行完了を示すフィールドとを持
ち、実行が完了したマイクロ命令から登録順に実行結果
をソフトウェアビジブルレジスタ(図示せず)に書込ん
でいき(以下、この書込み処理をグラジュエイトとす
る)、ソフトウェアビジブルレジスタへの格納が終了し
た時点で、登録されていたエントリを解放してマイクロ
命令の処理を完了する。
3から出力されるマイクロ命令を格納し、格納したマイ
クロ命令の実行完了を待ち合わせる。また、リオーダバ
ッファ4は格納したマイクロ命令に対応して実行結果を
格納するフィールドと実行完了を示すフィールドとを持
ち、実行が完了したマイクロ命令から登録順に実行結果
をソフトウェアビジブルレジスタ(図示せず)に書込ん
でいき(以下、この書込み処理をグラジュエイトとす
る)、ソフトウェアビジブルレジスタへの格納が終了し
た時点で、登録されていたエントリを解放してマイクロ
命令の処理を完了する。
【0008】リザベーションステーション5はリオーダ
バッファ4から供給されるマイクロ命令を格納し、マイ
クロ命令で使用するリソースの監視を行い、命令で使用
するリソース全てが参照可能となったマイクロ命令から
順次、実行ユニット6に供給してマイクロ命令の実行を
指示する。つまり、リザベーションステーション5にお
いてマイクロ命令発行の追い越しが行われ、命令のアウ
トオブオーダ実行が可能となる。
バッファ4から供給されるマイクロ命令を格納し、マイ
クロ命令で使用するリソースの監視を行い、命令で使用
するリソース全てが参照可能となったマイクロ命令から
順次、実行ユニット6に供給してマイクロ命令の実行を
指示する。つまり、リザベーションステーション5にお
いてマイクロ命令発行の追い越しが行われ、命令のアウ
トオブオーダ実行が可能となる。
【0009】実行ユニット6はリザベーションステーシ
ョン5から供給されたマイクロ命令を実行し、実行が終
了した時点で実行結果と実行完了報告とをリオーダバッ
ファ4に送出し、該当マイクロ命令の完了を通知する。
但し、上記のスーパスカラ構成のプロセッサ20におい
て実行されるマイクロ命令の並列処理の個数や実行ユニ
ット数は、プロセッサによって異なっている。
ョン5から供給されたマイクロ命令を実行し、実行が終
了した時点で実行結果と実行完了報告とをリオーダバッ
ファ4に送出し、該当マイクロ命令の完了を通知する。
但し、上記のスーパスカラ構成のプロセッサ20におい
て実行されるマイクロ命令の並列処理の個数や実行ユニ
ット数は、プロセッサによって異なっている。
【0010】
【発明が解決しようとする課題】上述した従来のスーパ
スカラ構成のプロセッサでは、CISCアーキテクチャ
が持つ複雑な命令をRISCの命令セットに似た垂直型
のマイクロ命令で実現しているので、実行命令の並列度
が上がるために性能が向上するという利点がある。しか
しながら、このプロセッサではパイプ段数が多くかつマ
イクロ命令が垂直型であるため、マイクロ命令の分岐性
能が水平型のマイクロ命令に比べて極端に悪化するとい
う問題がある。
スカラ構成のプロセッサでは、CISCアーキテクチャ
が持つ複雑な命令をRISCの命令セットに似た垂直型
のマイクロ命令で実現しているので、実行命令の並列度
が上がるために性能が向上するという利点がある。しか
しながら、このプロセッサではパイプ段数が多くかつマ
イクロ命令が垂直型であるため、マイクロ命令の分岐性
能が水平型のマイクロ命令に比べて極端に悪化するとい
う問題がある。
【0011】ここで、水平型マイクロ命令とはプロセッ
サ装置において垂直型のマイクロ命令が使用される以前
からプロセッサ装置で用いられているマイクロ命令であ
り、1個のマイクロ命令の命令語長が長く、複数の動作
指定フィールドからなるハードウェア制御情報であり、
1命令中に存在する各フィールドが各演算器の動作を規
定している。
サ装置において垂直型のマイクロ命令が使用される以前
からプロセッサ装置で用いられているマイクロ命令であ
り、1個のマイクロ命令の命令語長が長く、複数の動作
指定フィールドからなるハードウェア制御情報であり、
1命令中に存在する各フィールドが各演算器の動作を規
定している。
【0012】そのため、スーパスカラ構成のようなハー
ドウェア構成には適応することができない。また、分岐
命令に関しても、垂直型のマイクロ命令には分岐成立か
不成立の2種類の方向しかなく、分岐が成立した場合に
は後続命令を全てキャンセルして分岐先アドレスにて新
規に命令フェッチを開始する動作となるのに対し、水平
型のマイクロ命令では実行するマイクロ命令中に次のマ
イクロ命令のアドレスが含まれているため、分岐成功/
不成功という概念がない。
ドウェア構成には適応することができない。また、分岐
命令に関しても、垂直型のマイクロ命令には分岐成立か
不成立の2種類の方向しかなく、分岐が成立した場合に
は後続命令を全てキャンセルして分岐先アドレスにて新
規に命令フェッチを開始する動作となるのに対し、水平
型のマイクロ命令では実行するマイクロ命令中に次のマ
イクロ命令のアドレスが含まれているため、分岐成功/
不成功という概念がない。
【0013】よって、水平型のマイクロ命令では命令の
分岐を、次マイクロ命令のアドレスの数bitをあるレ
ジスタの値とすり替えることによって実現しており、こ
れによって複数の次マイクロ命令のアドレス指定が可能
となっている。
分岐を、次マイクロ命令のアドレスの数bitをあるレ
ジスタの値とすり替えることによって実現しており、こ
れによって複数の次マイクロ命令のアドレス指定が可能
となっている。
【0014】図12は4方向への分岐を行う場合のマイ
クロ命令の流れを示す図である。垂直型のマイクロ命令
では、図12(a)に示すように、処理Aを実行する流
れの途中で処理Dを実行するために、分岐命令a〜cで
夫々分岐を行わなければならないのに対し、水平型のマ
イクロ命令では、図12(b)に示すように、処理Dに
直接分岐することが可能である。
クロ命令の流れを示す図である。垂直型のマイクロ命令
では、図12(a)に示すように、処理Aを実行する流
れの途中で処理Dを実行するために、分岐命令a〜cで
夫々分岐を行わなければならないのに対し、水平型のマ
イクロ命令では、図12(b)に示すように、処理Dに
直接分岐することが可能である。
【0015】例えば、命令取出しから命令終了までのパ
イプ段数が8段のパイプラインでは垂直型の分岐命令が
分岐成功の時に7Tくらいかけて分岐ターゲットを取出
しているので、処理Dの命令取出しまでに21Tの時間
を必要とする。逆に、水平型では4方向のアドレス差し
替えを可能とした場合に、1個の分岐命令で処理A〜処
理Dに分岐することが可能である。
イプ段数が8段のパイプラインでは垂直型の分岐命令が
分岐成功の時に7Tくらいかけて分岐ターゲットを取出
しているので、処理Dの命令取出しまでに21Tの時間
を必要とする。逆に、水平型では4方向のアドレス差し
替えを可能とした場合に、1個の分岐命令で処理A〜処
理Dに分岐することが可能である。
【0016】一方、CISCアーキテクチャを実現する
マイクロプロセッサでは使用頻度が高く、実行時間が長
い可変長データを扱う命令をいかに高速に実行できるか
がプロセッサ性能を上げるための課題となっている。し
かしながら、可変長データ命令はマイクロプログラムで
実現する必要があり、しかもデータ長を判断しながらメ
モリアクセスを行う必要があるため、従来の技術ではど
うしても分岐命令が介在してしまい、性能向上が難しい
という問題がある。
マイクロプロセッサでは使用頻度が高く、実行時間が長
い可変長データを扱う命令をいかに高速に実行できるか
がプロセッサ性能を上げるための課題となっている。し
かしながら、可変長データ命令はマイクロプログラムで
実現する必要があり、しかもデータ長を判断しながらメ
モリアクセスを行う必要があるため、従来の技術ではど
うしても分岐命令が介在してしまい、性能向上が難しい
という問題がある。
【0017】すなわち、従来の技術ではマイクロ命令で
データ長を判断しながらデータ処理を行っているので、
動作クロックが高速になればなるほど、パイプ段数が多
くなる。よって、分岐成功の場合のターゲット命令の取
出しに時間がかかってしまうため、動作クロックを早く
しても、分岐命令が多く含まれる場合には命令自体の実
行クロック数が多くなってしまい、クロックの向上に比
例して命令性能をあげることが難しくなる。
データ長を判断しながらデータ処理を行っているので、
動作クロックが高速になればなるほど、パイプ段数が多
くなる。よって、分岐成功の場合のターゲット命令の取
出しに時間がかかってしまうため、動作クロックを早く
しても、分岐命令が多く含まれる場合には命令自体の実
行クロック数が多くなってしまい、クロックの向上に比
例して命令性能をあげることが難しくなる。
【0018】そこで、本発明の目的は上記の問題点を解
消し、分岐命令を使用することなく可変長データを処理
することができ、可変長データを扱うソフトウェア命令
の高速化を図ることができるマイクロプロセッサ装置及
びそのソフトウェア命令高速化方法並びにその制御プロ
グラムを記録した記録媒体を提供することにある。
消し、分岐命令を使用することなく可変長データを処理
することができ、可変長データを扱うソフトウェア命令
の高速化を図ることができるマイクロプロセッサ装置及
びそのソフトウェア命令高速化方法並びにその制御プロ
グラムを記録した記録媒体を提供することにある。
【0019】
【課題を解決するための手段】本発明によるマイクロプ
ロセッサ装置は、可変長データを扱うマイクロ命令を少
なくとも実行するマイクロプロセッサ装置であって、前
記可変長データが取り得る最大のデータを処理するため
の派生マイクロ命令群を発行するよう構成している。
ロセッサ装置は、可変長データを扱うマイクロ命令を少
なくとも実行するマイクロプロセッサ装置であって、前
記可変長データが取り得る最大のデータを処理するため
の派生マイクロ命令群を発行するよう構成している。
【0020】本発明による他のマイクロプロセッサ装置
は、可変長データを扱うマイクロ命令を少なくとも実行
するマイクロプロセッサ装置であって、前記可変長デー
タを扱うマイクロ命令を検出した時にそのマイクロ命令
を前記可変長データが取り得る最大のデータを処理する
ための派生マイクロ命令群に分割して発行する分割手段
を備えている。
は、可変長データを扱うマイクロ命令を少なくとも実行
するマイクロプロセッサ装置であって、前記可変長デー
タを扱うマイクロ命令を検出した時にそのマイクロ命令
を前記可変長データが取り得る最大のデータを処理する
ための派生マイクロ命令群に分割して発行する分割手段
を備えている。
【0021】本発明によるソフトウェア命令高速化方法
は、可変長データを扱うマイクロ命令を少なくとも実行
するマイクロプロセッサ装置のソフトウェア命令高速化
方法であって、前記可変長データが取り得る最大のデー
タを処理するための派生マイクロ命令群を発行するよう
にしている。
は、可変長データを扱うマイクロ命令を少なくとも実行
するマイクロプロセッサ装置のソフトウェア命令高速化
方法であって、前記可変長データが取り得る最大のデー
タを処理するための派生マイクロ命令群を発行するよう
にしている。
【0022】本発明による他のソフトウェア命令高速化
方法は、可変長データを扱うマイクロ命令を少なくとも
実行するマイクロプロセッサ装置のソフトウェア命令高
速化方法であって、前記可変長データを扱うマイクロ命
令を検出した時にそのマイクロ命令を前記可変長データ
が取り得る最大のデータを処理するための派生マイクロ
命令群に分割して発行するステップを備えている。
方法は、可変長データを扱うマイクロ命令を少なくとも
実行するマイクロプロセッサ装置のソフトウェア命令高
速化方法であって、前記可変長データを扱うマイクロ命
令を検出した時にそのマイクロ命令を前記可変長データ
が取り得る最大のデータを処理するための派生マイクロ
命令群に分割して発行するステップを備えている。
【0023】本発明によるソフトウェア命令高速化制御
プログラムを記録した記録媒体は、可変長データを扱う
マイクロ命令を少なくとも実行するマイクロプロセッサ
装置に前記マイクロ命令を実行させるためのソフトウェ
ア命令高速化制御プログラムを記録した記録媒体であっ
て、前記ソフトウェア命令高速化制御プログラムは前記
マイクロプロセッサ装置に、前記可変長データが取り得
る最大のデータを処理するための派生マイクロ命令群を
発行させている。
プログラムを記録した記録媒体は、可変長データを扱う
マイクロ命令を少なくとも実行するマイクロプロセッサ
装置に前記マイクロ命令を実行させるためのソフトウェ
ア命令高速化制御プログラムを記録した記録媒体であっ
て、前記ソフトウェア命令高速化制御プログラムは前記
マイクロプロセッサ装置に、前記可変長データが取り得
る最大のデータを処理するための派生マイクロ命令群を
発行させている。
【0024】本発明による他のソフトウェア命令高速化
制御プログラムを記録した記録媒体は、可変長データを
扱うマイクロ命令を少なくとも実行するマイクロプロセ
ッサ装置に前記マイクロ命令を実行させるためのソフト
ウェア命令高速化制御プログラムを記録した記録媒体で
あって、前記ソフトウェア命令高速化制御プログラムは
前記マイクロプロセッサ装置に、前記可変長データを扱
うマイクロ命令を検出した時にそのマイクロ命令を前記
可変長データが取り得る最大のデータを処理するための
派生マイクロ命令群に分割して発行させている。
制御プログラムを記録した記録媒体は、可変長データを
扱うマイクロ命令を少なくとも実行するマイクロプロセ
ッサ装置に前記マイクロ命令を実行させるためのソフト
ウェア命令高速化制御プログラムを記録した記録媒体で
あって、前記ソフトウェア命令高速化制御プログラムは
前記マイクロプロセッサ装置に、前記可変長データを扱
うマイクロ命令を検出した時にそのマイクロ命令を前記
可変長データが取り得る最大のデータを処理するための
派生マイクロ命令群に分割して発行させている。
【0025】すなわち、本発明のマイクロプロセッサ装
置は、可変長データを扱うソフトウェア命令を垂直型マ
イクロ命令で実現しているスーパスカラ構成のプロセッ
サにおいて、ソフトウェア命令内で扱うデータ長をマイ
クロ命令にて計算しながら処理することを行わずに、可
変長データが取り得る最大のデータを処理するためのマ
イクロ命令群を投機的に発行している。
置は、可変長データを扱うソフトウェア命令を垂直型マ
イクロ命令で実現しているスーパスカラ構成のプロセッ
サにおいて、ソフトウェア命令内で扱うデータ長をマイ
クロ命令にて計算しながら処理することを行わずに、可
変長データが取り得る最大のデータを処理するためのマ
イクロ命令群を投機的に発行している。
【0026】その際、データ処理の行程において投機的
に発行されたマイクロ命令の冗長を検出した場合にはハ
ードウェアにて冗長命令を制御することによって、処理
時間の増加につながるマイクロ命令の分岐命令を使用す
ることなく、可変長データを扱うソフトウェア命令の高
速化を図ることが可能となる。
に発行されたマイクロ命令の冗長を検出した場合にはハ
ードウェアにて冗長命令を制御することによって、処理
時間の増加につながるマイクロ命令の分岐命令を使用す
ることなく、可変長データを扱うソフトウェア命令の高
速化を図ることが可能となる。
【0027】より具体的には、命令分割部が可変長デー
タを扱うマイクロ命令を認識した時に、可変長データの
データ長を確認することなく、可変長データが取り得る
最大データ長がアクセス可能な分の基本マイクロ命令に
分割して投機的に発行している。
タを扱うマイクロ命令を認識した時に、可変長データの
データ長を確認することなく、可変長データが取り得る
最大データ長がアクセス可能な分の基本マイクロ命令に
分割して投機的に発行している。
【0028】冗長命令検出部は命令分割部で分割された
マイクロ命令が実行ユニットで実行される度に可変長デ
ータの残データ長を計算する。これによって、処理すべ
きデータがなくなると、冗長命令検出部は投機的に供給
された冗長なマイクロ命令を処理するように命令削除制
御部と命令終了操作部とに指示を出す。
マイクロ命令が実行ユニットで実行される度に可変長デ
ータの残データ長を計算する。これによって、処理すべ
きデータがなくなると、冗長命令検出部は投機的に供給
された冗長なマイクロ命令を処理するように命令削除制
御部と命令終了操作部とに指示を出す。
【0029】命令削除制御部は冗長命令検出部から冗長
命令の処理指示を受けると、リザベーションステーショ
ンに残っている冗長なマイクロ命令をリザベーションス
テーションから全て削除する。命令終了操作部は冗長命
令検出部から冗長命令の処理指示を受けると、リオーダ
バッファ内に存在する冗長なマイクロ命令を実行終了状
態にする。
命令の処理指示を受けると、リザベーションステーショ
ンに残っている冗長なマイクロ命令をリザベーションス
テーションから全て削除する。命令終了操作部は冗長命
令検出部から冗長命令の処理指示を受けると、リオーダ
バッファ内に存在する冗長なマイクロ命令を実行終了状
態にする。
【0030】これによって、垂直型のマイクロ命令にお
ける実行時間増加の原因ともいえる分岐命令を使用せず
に、可変長データが処理可能となるので、可変長データ
を扱うソフトウェア命令が高速に実行可能となり、性能
向上につながる。
ける実行時間増加の原因ともいえる分岐命令を使用せず
に、可変長データが処理可能となるので、可変長データ
を扱うソフトウェア命令が高速に実行可能となり、性能
向上につながる。
【0031】
【発明の実施の形態】次に、本発明の一実施例について
図面を参照して説明する。図1は本発明の一実施例によ
るスーパスカラ構成のプロセッサの構成を示すブロック
図である。図において、本発明の一実施例によるスーパ
スカラ構成のプロセッサは命令供給部1と、命令分割部
2と、レジスタリネーム部3と、リオーダバッファ4
と、リザベーションステーション5と、実行ユニット6
と、命令終了操作部7と、命令削除制御部8と、冗長命
令検出部9とから構成されている。
図面を参照して説明する。図1は本発明の一実施例によ
るスーパスカラ構成のプロセッサの構成を示すブロック
図である。図において、本発明の一実施例によるスーパ
スカラ構成のプロセッサは命令供給部1と、命令分割部
2と、レジスタリネーム部3と、リオーダバッファ4
と、リザベーションステーション5と、実行ユニット6
と、命令終了操作部7と、命令削除制御部8と、冗長命
令検出部9とから構成されている。
【0032】図2及び図3は本発明の一実施例によるス
ーパスカラ構成のプロセッサの動作を示すフローチャー
トである。これら図1〜図3を参照して本発明の一実施
例によるスーパスカラ構成のプロセッサの動作について
説明する。
ーパスカラ構成のプロセッサの動作を示すフローチャー
トである。これら図1〜図3を参照して本発明の一実施
例によるスーパスカラ構成のプロセッサの動作について
説明する。
【0033】尚、図2及び図3に示す処理動作は本発明
の一実施例によるスーパスカラ構成のプロセッサの各部
が図示せぬ制御メモリに記録されたプログラムを実行す
ることで実現され、制御メモリとしてはROM(リード
オンリメモリ)やIC(集積回路)メモリが使用可能で
ある。
の一実施例によるスーパスカラ構成のプロセッサの各部
が図示せぬ制御メモリに記録されたプログラムを実行す
ることで実現され、制御メモリとしてはROM(リード
オンリメモリ)やIC(集積回路)メモリが使用可能で
ある。
【0034】命令供給部1は図示せぬ主記憶または命令
キャッシュから取出したソフトウェア命令を解析し、ソ
フトウェア命令に対応して構築されている垂直型のマイ
クロ命令(RISC命令)を供給する(図2ステップS
1)。また、命令供給部1はマイクロ命令を識別するた
めの識別子(以下、マイクロタグとする)を、マイクロ
命令に付加して供給する。
キャッシュから取出したソフトウェア命令を解析し、ソ
フトウェア命令に対応して構築されている垂直型のマイ
クロ命令(RISC命令)を供給する(図2ステップS
1)。また、命令供給部1はマイクロ命令を識別するた
めの識別子(以下、マイクロタグとする)を、マイクロ
命令に付加して供給する。
【0035】命令分割部2は命令供給部1から供給され
たマイクロ命令が可変長データを扱うためのマイクロ命
令でないことを認識すると(図2ステップS2)、マイ
クロ命令を分割することなく、レジスタリネーム部3と
リオーダバッファ4とを経てリザベーションステーショ
ン5に供給する(図2ステップS3)。
たマイクロ命令が可変長データを扱うためのマイクロ命
令でないことを認識すると(図2ステップS2)、マイ
クロ命令を分割することなく、レジスタリネーム部3と
リオーダバッファ4とを経てリザベーションステーショ
ン5に供給する(図2ステップS3)。
【0036】命令分割部2は命令供給部1から供給され
たマイクロ命令が可変長データを扱うためのマイクロ命
令であることを認識すると(図2ステップS2)、命令
供給部1に対してマイクロ命令の供給抑止を指示し(図
2ステップS4)、可変長データ用マイクロ命令を通常
のデータ長を扱う複数個の基本マイクロ命令に分割しな
がら(以下、分割によって発生した基本マイクロ命令を
派生マイクロ命令とする)、レジスタリネーム部3とリ
オーダバッファ4とを経てリザベーションステーション
5に供給する(図2ステップS5,S6)。
たマイクロ命令が可変長データを扱うためのマイクロ命
令であることを認識すると(図2ステップS2)、命令
供給部1に対してマイクロ命令の供給抑止を指示し(図
2ステップS4)、可変長データ用マイクロ命令を通常
のデータ長を扱う複数個の基本マイクロ命令に分割しな
がら(以下、分割によって発生した基本マイクロ命令を
派生マイクロ命令とする)、レジスタリネーム部3とリ
オーダバッファ4とを経てリザベーションステーション
5に供給する(図2ステップS5,S6)。
【0037】派生マイクロ命令数は可変長データ用マイ
クロ命令で扱える最大値のデータを基本マイクロ命令で
実現することができるだけの命令数とする。例えば、可
変長データ用マイクロ命令が最大で64バイトのデータ
をアクセスし、基本マイクロ命令が8バイトデータのア
クセスを行う場合、可変長データ用マイクロ命令は8個
の基本マイクロ命令に分割される。
クロ命令で扱える最大値のデータを基本マイクロ命令で
実現することができるだけの命令数とする。例えば、可
変長データ用マイクロ命令が最大で64バイトのデータ
をアクセスし、基本マイクロ命令が8バイトデータのア
クセスを行う場合、可変長データ用マイクロ命令は8個
の基本マイクロ命令に分割される。
【0038】また、命令分割部2では派生マイクロ命令
に対し、派生マイクロ命令であることを示すフラグと分
割順序を表すフラグとをマイクロタグに添付する。この
場合、派生マイクロ命令におけるマイクロタグは元の可
変長データ用マイクロ命令に付随していた値をそのまま
継承する。
に対し、派生マイクロ命令であることを示すフラグと分
割順序を表すフラグとをマイクロタグに添付する。この
場合、派生マイクロ命令におけるマイクロタグは元の可
変長データ用マイクロ命令に付随していた値をそのまま
継承する。
【0039】可変長データ用マイクロ命令以外の場合に
は分割したことを表すフラグを無効にし、分割順序を表
すフラグを0クリアする(以下、分割したことを表すフ
ラグと分割順序を表すフラグとを併せて拡張タグとす
る)。
は分割したことを表すフラグを無効にし、分割順序を表
すフラグを0クリアする(以下、分割したことを表すフ
ラグと分割順序を表すフラグとを併せて拡張タグとす
る)。
【0040】命令分割部2から供給されたマイクロ命令
はマイクロタグ及び拡張タグを伴い、レジスタリネーム
部3とリオーダバッファ4とリザベーションステーショ
ン5とを経て実行ユニット6と冗長命令検出部9とに供
給される。
はマイクロタグ及び拡張タグを伴い、レジスタリネーム
部3とリオーダバッファ4とリザベーションステーショ
ン5とを経て実行ユニット6と冗長命令検出部9とに供
給される。
【0041】リザベーションステーション5では拡張タ
グから派生マイクロ命令でないと判断すると(図3ステ
ップS7)、マイクロ命令を実行ユニット6に供給し
(図3ステップS8)、そのマイクロ命令を実行ユニッ
ト6で実行する(図3ステップS9)。
グから派生マイクロ命令でないと判断すると(図3ステ
ップS7)、マイクロ命令を実行ユニット6に供給し
(図3ステップS8)、そのマイクロ命令を実行ユニッ
ト6で実行する(図3ステップS9)。
【0042】実行ユニット6はマイクロ命令の実行が完
了すると、実行完了状態となるようにリオーダバッファ
4内の実行状態を示すフィールドを実行完了状態にセッ
トし(図3ステップS10)、マイクロ命令の実行を終
了する。
了すると、実行完了状態となるようにリオーダバッファ
4内の実行状態を示すフィールドを実行完了状態にセッ
トし(図3ステップS10)、マイクロ命令の実行を終
了する。
【0043】一方、リザベーションステーション5では
拡張タグから派生マイクロ命令であると判断すると(図
3ステップS7)、拡張タグの分割順を表すフラグに従
い、派生マイクロ命令を分割順に実行ユニット6及び冗
長命令検出部9に供給するように制御する(図3ステッ
プS11)。
拡張タグから派生マイクロ命令であると判断すると(図
3ステップS7)、拡張タグの分割順を表すフラグに従
い、派生マイクロ命令を分割順に実行ユニット6及び冗
長命令検出部9に供給するように制御する(図3ステッ
プS11)。
【0044】冗長命令検出部9では派生マイクロ命令群
の最初の命令を受取ったことを拡張タグによって認識す
ると(図3ステップS12)、本来の可変長データ用マ
イクロ命令で処理するはずのデータ長を調べて格納して
おき(図3ステップS13)、実行ユニット6で同一の
マイクロタグを持つ派生マイクロ命令で処理されたデー
タ長を減算していく(図3ステップS14)。
の最初の命令を受取ったことを拡張タグによって認識す
ると(図3ステップS12)、本来の可変長データ用マ
イクロ命令で処理するはずのデータ長を調べて格納して
おき(図3ステップS13)、実行ユニット6で同一の
マイクロタグを持つ派生マイクロ命令で処理されたデー
タ長を減算していく(図3ステップS14)。
【0045】この減算結果において、冗長命令検出部9
は残データ長が0以下になった場合(派生マイクロ命令
がなくなった場合)(図3ステップS16)、最後に処
理を行った可変長データ用マイクロ命令のマイクロタグ
(以下、バブルマイクロタグとする)と、拡張タグ(以
下、バブル拡張タグとする)と、冗長な派生マイクロ命
令とが存在することを示す信号(以下、バブル指示とす
る)を命令終了操作部7と命令削除制御部8とに送出す
る。
は残データ長が0以下になった場合(派生マイクロ命令
がなくなった場合)(図3ステップS16)、最後に処
理を行った可変長データ用マイクロ命令のマイクロタグ
(以下、バブルマイクロタグとする)と、拡張タグ(以
下、バブル拡張タグとする)と、冗長な派生マイクロ命
令とが存在することを示す信号(以下、バブル指示とす
る)を命令終了操作部7と命令削除制御部8とに送出す
る。
【0046】命令削除制御部8はバブル指示とバブルマ
イクロタグとを受取ると、リザベーションステーション
5に格納されている全てのマイクロ命令におけるマイク
ロタグとバブルマイクロタグとの一致を調べ、一致して
いるマイクロ命令(冗長な派生マイクロ命令)をリザベ
ーションステーション5から削除する(図3ステップS
17)。
イクロタグとを受取ると、リザベーションステーション
5に格納されている全てのマイクロ命令におけるマイク
ロタグとバブルマイクロタグとの一致を調べ、一致して
いるマイクロ命令(冗長な派生マイクロ命令)をリザベ
ーションステーション5から削除する(図3ステップS
17)。
【0047】命令終了操作部7ではバブル指示とバブル
タグとバブル拡張タグとを受けると、リオーダバッファ
4に格納されている全てのマイクロ命令に対して、マイ
クロタグ及び拡張タグをバブルマイクロタグ及びバブル
拡張タグと比較する。
タグとバブル拡張タグとを受けると、リオーダバッファ
4に格納されている全てのマイクロ命令に対して、マイ
クロタグ及び拡張タグをバブルマイクロタグ及びバブル
拡張タグと比較する。
【0048】その比較結果において、マイクロタグとバ
ブルマイクロタグとが一致し、かつ拡張タグがバブル拡
張タグよりも大きいマイクロ命令を見つけると、命令終
了操作部7はそのマイクロ命令を冗長な派生マイクロ命
令と判断し、実行完了状態となるようにリオーダバッフ
ァ4内の実行状態を示すフィールドを実行完了状態にセ
ットする(図3ステップS15)。
ブルマイクロタグとが一致し、かつ拡張タグがバブル拡
張タグよりも大きいマイクロ命令を見つけると、命令終
了操作部7はそのマイクロ命令を冗長な派生マイクロ命
令と判断し、実行完了状態となるようにリオーダバッフ
ァ4内の実行状態を示すフィールドを実行完了状態にセ
ットする(図3ステップS15)。
【0049】図4は本発明の一実施例で用いるマイクロ
命令形式の一例を示す図である。図において、基本形態
11は演算結果を格納するレジスタ番号を表すWフィー
ルドと、2種類の演算リソースレジスタを表すXフィー
ルド及びYフィールドと、演算動作を規定するオペコー
ドとの4種類のフィールドから構成される。
命令形式の一例を示す図である。図において、基本形態
11は演算結果を格納するレジスタ番号を表すWフィー
ルドと、2種類の演算リソースレジスタを表すXフィー
ルド及びYフィールドと、演算動作を規定するオペコー
ドとの4種類のフィールドから構成される。
【0050】基本マイクロ命令の一つであるload命
令12はXフィールドで示されるレジスタをベースアド
レス、Yフィールドで示されるレジスタをインデックス
レジスタとして、加算したメモリアドレスから8バイト
データをWフィールドで指定されたレジスタに格納す
る。
令12はXフィールドで示されるレジスタをベースアド
レス、Yフィールドで示されるレジスタをインデックス
レジスタとして、加算したメモリアドレスから8バイト
データをWフィールドで指定されたレジスタに格納す
る。
【0051】それに対して、可変長データ用マイクロ命
令であるlodm命令13は1バイトから64バイトま
での可変長データを扱えるマイクロ命令と定義され、X
フィールドで示されるレジスタをベースアドレスとし
て、そのアドレスで指定されるメモリデータを、Yフィ
ールドで指定されたレジスタに格納されているデータ長
(1バイトから64バイト)だけロードし、ロードデー
タはWフィールドで指定されたレジスタを先頭にした連
番のレジスタに格納する。
令であるlodm命令13は1バイトから64バイトま
での可変長データを扱えるマイクロ命令と定義され、X
フィールドで示されるレジスタをベースアドレスとし
て、そのアドレスで指定されるメモリデータを、Yフィ
ールドで指定されたレジスタに格納されているデータ長
(1バイトから64バイト)だけロードし、ロードデー
タはWフィールドで指定されたレジスタを先頭にした連
番のレジスタに格納する。
【0052】また、lodmf命令14はXフィールド
で指定されたレジスタをベースレジスタとしてメモリロ
ードを行い、8バイトのロードデータをWフィールドで
指定されたレジスタに書込む。このlodmf命令14
において、Yフィールドで指定されたレジスタの内容は
load命令とは異なりアドレス計算時のインデックス
レジスタとしては使用せずに、可変長データのデータ長
を管理している冗長命令検出部9に渡す。
で指定されたレジスタをベースレジスタとしてメモリロ
ードを行い、8バイトのロードデータをWフィールドで
指定されたレジスタに書込む。このlodmf命令14
において、Yフィールドで指定されたレジスタの内容は
load命令とは異なりアドレス計算時のインデックス
レジスタとしては使用せずに、可変長データのデータ長
を管理している冗長命令検出部9に渡す。
【0053】図5は図1の命令分割部2における可変長
データ用マイクロ命令(以下、lodm命令とする)を
基本マイクロ命令(以下、load命令とする)に分割
した際に生成される派生マイクロ命令とそれに対応する
マイクロタグ及び拡張タグとを示す図である。図におい
て、命令(1)のlodmf命令はレジスタ番号B0の
レジスタをベースレジスタとしてメモリロードを行い、
ロードデータをレジスタ番号R0のレジスタに書込む。
データ用マイクロ命令(以下、lodm命令とする)を
基本マイクロ命令(以下、load命令とする)に分割
した際に生成される派生マイクロ命令とそれに対応する
マイクロタグ及び拡張タグとを示す図である。図におい
て、命令(1)のlodmf命令はレジスタ番号B0の
レジスタをベースレジスタとしてメモリロードを行い、
ロードデータをレジスタ番号R0のレジスタに書込む。
【0054】命令(2)から命令(8)まではWフィー
ルドのレジスタ番号を1づつ加算し、インデックスとし
て固定値の8を順次加算していく。つまり、命令(1)
から命令(8)までを全て実行した場合にはレジスタ番
号B0で示されているベースアドレスから64バイトの
連続したメモリデータがレジスタ番号R0からR7まで
の連続したレジスタに書込まれることになり、lodm
命令で最大データ長を扱った場合と同様な結果となる。
ルドのレジスタ番号を1づつ加算し、インデックスとし
て固定値の8を順次加算していく。つまり、命令(1)
から命令(8)までを全て実行した場合にはレジスタ番
号B0で示されているベースアドレスから64バイトの
連続したメモリデータがレジスタ番号R0からR7まで
の連続したレジスタに書込まれることになり、lodm
命令で最大データ長を扱った場合と同様な結果となる。
【0055】また、拡張タグに関しては派生マイクロ命
令であることを示すビットを有効にして分割順を表すフ
ィールドに0から7までを命令(1)から命令(8)に
対して順次つけていく。
令であることを示すビットを有効にして分割順を表すフ
ィールドに0から7までを命令(1)から命令(8)に
対して順次つけていく。
【0056】このように、命令分割部2においてlod
m命令から派生した8個の派生マイクロ命令は順次レジ
スタリネーム部3に送られ、通常のマイクロ命令と同様
に処理されていく。
m命令から派生した8個の派生マイクロ命令は順次レジ
スタリネーム部3に送られ、通常のマイクロ命令と同様
に処理されていく。
【0057】派生マイクロ命令が通常のマイクロ命令と
異なる特殊な処理となるのはリザベーションステーショ
ン5から命令が供給された場合であり、以下にその特殊
動作について記述する。
異なる特殊な処理となるのはリザベーションステーショ
ン5から命令が供給された場合であり、以下にその特殊
動作について記述する。
【0058】図5において、冗長命令検出部9と実行ユ
ニット6とにlodmf命令が供給されると、実行ユニ
ット6は上述したようにlodmf命令におけるメモリ
ロード処理を行い、冗長命令検出部9はマイクロタグと
拡張タグとを記憶し、可変長データのデータ長であるY
フィールドで指定されたレジスタの内容から8を減算し
た結果を残データ長として保持するとともに、減算結果
が0以下かどうかをチェックする。
ニット6とにlodmf命令が供給されると、実行ユニ
ット6は上述したようにlodmf命令におけるメモリ
ロード処理を行い、冗長命令検出部9はマイクロタグと
拡張タグとを記憶し、可変長データのデータ長であるY
フィールドで指定されたレジスタの内容から8を減算し
た結果を残データ長として保持するとともに、減算結果
が0以下かどうかをチェックする。
【0059】減算結果が0以下であった場合には実行ユ
ニット6において同時に行われているメモリロード処理
にて可変長データ処理がすでに終了したことを意味する
ので、lodmf命令以降の冗長な派生命令を無効化す
るために、命令削除制御部8にバブル指示とバブルマイ
クロタグとを送り、同時に命令制御操作部7にバブル指
示とバブルマイクロタグ及びバブル拡張タグとを送出す
る。
ニット6において同時に行われているメモリロード処理
にて可変長データ処理がすでに終了したことを意味する
ので、lodmf命令以降の冗長な派生命令を無効化す
るために、命令削除制御部8にバブル指示とバブルマイ
クロタグとを送り、同時に命令制御操作部7にバブル指
示とバブルマイクロタグ及びバブル拡張タグとを送出す
る。
【0060】演算結果が0以下でない場合には処理すべ
き可変長データが残っていることを意味するので、冗長
命令検出部9ではデータ長から8減算した結果を保持
し、lodmf命令の後続となる派生マイクロ命令がリ
ザベーションステーション5から供給されるのを待つ。
き可変長データが残っていることを意味するので、冗長
命令検出部9ではデータ長から8減算した結果を保持
し、lodmf命令の後続となる派生マイクロ命令がリ
ザベーションステーション5から供給されるのを待つ。
【0061】その後、冗長命令検出部9では派生マイク
ロ命令が供給される度に、保持していた残データ長から
8づつ減算し、減算結果が0以下かどうかをチェックす
る。減算結果が0以下の場合にはlodmf命令で行っ
た後続の冗長な派生マイクロ命令の無効化を行い、0以
下でない場合には残データ長を更新して次の派生マイク
ロ命令がリザベーションステーション5から送られてく
るのを待つ。但し、リザベーションステーション5から
送られてきた最終の派生マイクロ命令(拡張タグの分割
順を示すフィールドが7である派生マイクロ命令)を認
識した場合には、残データ長の減算結果で0以下を検出
した場合でもバブル指示は報告しない。
ロ命令が供給される度に、保持していた残データ長から
8づつ減算し、減算結果が0以下かどうかをチェックす
る。減算結果が0以下の場合にはlodmf命令で行っ
た後続の冗長な派生マイクロ命令の無効化を行い、0以
下でない場合には残データ長を更新して次の派生マイク
ロ命令がリザベーションステーション5から送られてく
るのを待つ。但し、リザベーションステーション5から
送られてきた最終の派生マイクロ命令(拡張タグの分割
順を示すフィールドが7である派生マイクロ命令)を認
識した場合には、残データ長の減算結果で0以下を検出
した場合でもバブル指示は報告しない。
【0062】図6及び図7は図1の命令終了操作部7と
命令削除制御部8と冗長命令検出部9とにおける処理動
作を示す図である。これら図6及び図7を参照して、バ
ブル指示が冗長命令検出部9から報告された場合に、リ
ザベーションステーション5及びリオーダバッファ4で
行われる冗長な派生マイクロ命令の扱いについて説明す
る。
命令削除制御部8と冗長命令検出部9とにおける処理動
作を示す図である。これら図6及び図7を参照して、バ
ブル指示が冗長命令検出部9から報告された場合に、リ
ザベーションステーション5及びリオーダバッファ4で
行われる冗長な派生マイクロ命令の扱いについて説明す
る。
【0063】尚、以下の説明では実施例の一つの例とし
てリザベーションステーション5のエントリ数を8、リ
オーダバッファ4のエントリ数を16、可変長データの
データ長を32バイトとし、派生マイクロ命令やマイク
ロタグ及び拡張タグは図6における命令(1)から命令
(8)までの内容で生成されたものとする。
てリザベーションステーション5のエントリ数を8、リ
オーダバッファ4のエントリ数を16、可変長データの
データ長を32バイトとし、派生マイクロ命令やマイク
ロタグ及び拡張タグは図6における命令(1)から命令
(8)までの内容で生成されたものとする。
【0064】図6(a)は実行ユニットに可変長データ
の24バイトから8バイトのデータを処理するための派
生マイクロ命令[図5における命令(4)]が供給され
た時のリザベーションステーション5の状態を表す。
の24バイトから8バイトのデータを処理するための派
生マイクロ命令[図5における命令(4)]が供給され
た時のリザベーションステーション5の状態を表す。
【0065】この状態において、冗長命令検出部9から
命令削除制御部8に対してバブル指示とバブルマイクロ
タグとが送られると、命令削除制御部8ではリザベーシ
ョンステーション5の全てのエントリ(Entry)の
マイクロタグとバブルタグとの一致チェックを行い、エ
ントリ0からエントリ3の4つのエントリで一致を検出
する。
命令削除制御部8に対してバブル指示とバブルマイクロ
タグとが送られると、命令削除制御部8ではリザベーシ
ョンステーション5の全てのエントリ(Entry)の
マイクロタグとバブルタグとの一致チェックを行い、エ
ントリ0からエントリ3の4つのエントリで一致を検出
する。
【0066】一致が検出されたエントリにあるマイクロ
命令は処理する必要がない冗長な命令であるため、実行
ユニット6への無駄な供給やリザベーションステーショ
ン5のエントリの無駄な使用時間を削除するために、リ
ザベーションステーション5内から削除して図6(b)
の状態にする。
命令は処理する必要がない冗長な命令であるため、実行
ユニット6への無駄な供給やリザベーションステーショ
ン5のエントリの無駄な使用時間を削除するために、リ
ザベーションステーション5内から削除して図6(b)
の状態にする。
【0067】図7(a)は実行ユニットに可変長データ
の24バイトから8バイトのデータを処理するための派
生マイクロ命令[図5における命令(4)]が供給され
た時のリオーダバッファ4の状態を表す。
の24バイトから8バイトのデータを処理するための派
生マイクロ命令[図5における命令(4)]が供給され
た時のリオーダバッファ4の状態を表す。
【0068】この状態において、冗長命令検出部9から
命令終了操作部7に対してバブル指示とバブルマイクロ
タグとバブル拡張タグとが送られると、命令終了操作部
7ではリオーダバッファ4の全てのエントリに格納され
ているマイクロタグ及び拡張タグをバブルマイクロタグ
及びバブル拡張タグと比較する。
命令終了操作部7に対してバブル指示とバブルマイクロ
タグとバブル拡張タグとが送られると、命令終了操作部
7ではリオーダバッファ4の全てのエントリに格納され
ているマイクロタグ及び拡張タグをバブルマイクロタグ
及びバブル拡張タグと比較する。
【0069】この比較結果において、マイクロタグとバ
ブルマイクロタグとが一致し、かつ拡張タグがバブル拡
張タグよりも大きいエントリを冗長な派生マイクロ命令
と判断する。図7(a)の例ではエントリ4からエント
リ7の派生マイクロ命令が冗長であると判断される。
ブルマイクロタグとが一致し、かつ拡張タグがバブル拡
張タグよりも大きいエントリを冗長な派生マイクロ命令
と判断する。図7(a)の例ではエントリ4からエント
リ7の派生マイクロ命令が冗長であると判断される。
【0070】冗長な派生マイクロ命令はリオーダバッフ
ァ4において強制的に実行完了状態にするとともに、オ
ペレーションコードをload命令からnop命令に書
換えてグラジュエイト時にレジスタへの演算結果の書込
みを抑止する。
ァ4において強制的に実行完了状態にするとともに、オ
ペレーションコードをload命令からnop命令に書
換えてグラジュエイト時にレジスタへの演算結果の書込
みを抑止する。
【0071】この動作において、リザベーションステー
ション5内で削除されたマイクロ命令をリオーダバッフ
ァ4で完了を待ち続けてグラジュエイトがストールする
ことを防ぐとともに、演算結果を持たない冗長な派生マ
イクロ命令でレジスタを不正に更新することを防ぐ。
ション5内で削除されたマイクロ命令をリオーダバッフ
ァ4で完了を待ち続けてグラジュエイトがストールする
ことを防ぐとともに、演算結果を持たない冗長な派生マ
イクロ命令でレジスタを不正に更新することを防ぐ。
【0072】以上説明したように、本発明の一実施例で
は垂直型マイクロ命令における実行時間増加の原因とも
いえる分岐命令を使用せずに、可変長データを処理する
ことができるため、可変長データを扱うソフトウェア命
令が高速に実行可能となり、性能向上につながる。
は垂直型マイクロ命令における実行時間増加の原因とも
いえる分岐命令を使用せずに、可変長データを処理する
ことができるため、可変長データを扱うソフトウェア命
令が高速に実行可能となり、性能向上につながる。
【0073】図8及び図9は本発明の一実施例による具
体的な処理動作を示す図である。これら図8及び図9を
参照して本発明の一実施例による具体的な処理動作につ
いて説明する。
体的な処理動作を示す図である。これら図8及び図9を
参照して本発明の一実施例による具体的な処理動作につ
いて説明する。
【0074】以下にデータ長を計算しながらメモリロー
ドを行う従来の分岐命令を使った場合の実行時間と本発
明を用いた場合の実行時間の比較をタイムチャートを参
照して行う。
ドを行う従来の分岐命令を使った場合の実行時間と本発
明を用いた場合の実行時間の比較をタイムチャートを参
照して行う。
【0075】タイムチャートを作成するうえでのハード
ウェア構成例はロード・ストアユニット1個とレジスタ
間の演算を行うレジスタ演算ユニット1個と分岐ユニッ
ト1個とする。
ウェア構成例はロード・ストアユニット1個とレジスタ
間の演算を行うレジスタ演算ユニット1個と分岐ユニッ
ト1個とする。
【0076】また、ステージ段数はマイクロ命令フェッ
チから実行結果をリオーダバッファ4に書込むまでとし
た場合に、ロード・ストアユニットで9段、レジスタ実
行ユニットで7段、分岐ユニットで6段であり、リオー
ダバッファ4へ同時に登録できる命令数を4個、リオー
ダバッファ4からグラジュエイトできる命令数を4個と
している。
チから実行結果をリオーダバッファ4に書込むまでとし
た場合に、ロード・ストアユニットで9段、レジスタ実
行ユニットで7段、分岐ユニットで6段であり、リオー
ダバッファ4へ同時に登録できる命令数を4個、リオー
ダバッファ4からグラジュエイトできる命令数を4個と
している。
【0077】また、命令分割部2における派生マイクロ
命令は1クロックサイクルで4個の派生マイクロ命令を
生成可能としている。さらに、タイムチャートを作成す
る場合に扱った可変長データは8バイトとしている。
命令は1クロックサイクルで4個の派生マイクロ命令を
生成可能としている。さらに、タイムチャートを作成す
る場合に扱った可変長データは8バイトとしている。
【0078】図8(a)はマイクロ命令でデータ長を計
算しながらメモリロードを行うマイクロ命令コーディン
グである。動作概要はload命令でメモリからロード
してくる度にsub命令にてデータ長から8を減算して
残データ長を作成する。
算しながらメモリロードを行うマイクロ命令コーディン
グである。動作概要はload命令でメモリからロード
してくる度にsub命令にてデータ長から8を減算して
残データ長を作成する。
【0079】この残データ長を分岐命令で判定し、残デ
ータ長が0以下になった場合には可変長データ処理を終
了して分岐する。この動作を可変長データが取り得る最
大値まで行う。
ータ長が0以下になった場合には可変長データ処理を終
了して分岐する。この動作を可変長データが取り得る最
大値まで行う。
【0080】図8(b)は図8(a)のマイクロプログ
ラムを上記のハードウェア構成で実行した場合のタイム
チャートである。T1でフェッチされた4個のマイクロ
命令はT2においてレジスタリネームされ、T3におい
てリオーダバッファ4に格納される。
ラムを上記のハードウェア構成で実行した場合のタイム
チャートである。T1でフェッチされた4個のマイクロ
命令はT2においてレジスタリネームされ、T3におい
てリオーダバッファ4に格納される。
【0081】T4でリザベーションステーション5に格
納され、T5において夫々の命令が実行ユニット6に供
給されるが、命令(3)のbra命令は先行する命令
(2)のsub命令の実行結果を判定するためにリザベ
ーションステーション5内で待たされ、命令(2)のs
ub命令の実行結果が確定したT6において分岐ユニッ
トに供給される。
納され、T5において夫々の命令が実行ユニット6に供
給されるが、命令(3)のbra命令は先行する命令
(2)のsub命令の実行結果を判定するためにリザベ
ーションステーション5内で待たされ、命令(2)のs
ub命令の実行結果が確定したT6において分岐ユニッ
トに供給される。
【0082】分岐ユニットに供給された命令(3)のb
ra命令は命令(2)のsub命令の演算結果が0であ
ることを判定すると、分岐先命令のフェッチをT8にお
いて実行する。分岐先命令である命令(7)のand命
令はT8でフェッチされた後にT15においてグラジュ
エイトされる。
ra命令は命令(2)のsub命令の演算結果が0であ
ることを判定すると、分岐先命令のフェッチをT8にお
いて実行する。分岐先命令である命令(7)のand命
令はT8でフェッチされた後にT15においてグラジュ
エイトされる。
【0083】図9(a)は本発明の一実施例を利用した
場合のマイクロ命令コーディングと、実際に実行される
マイクロプログラムを示している。命令(1)のlod
m命令は可変長データを扱うマイクロ命令であり、本発
明の一実施例によって命令(1)−1のlodmf命令
から命令(1)−8のload命令まで、合計8個に分
割される。命令(2)のand命令は上記の図8(a)
における命令(7)の分岐先命令と同一な命令を示して
いる。
場合のマイクロ命令コーディングと、実際に実行される
マイクロプログラムを示している。命令(1)のlod
m命令は可変長データを扱うマイクロ命令であり、本発
明の一実施例によって命令(1)−1のlodmf命令
から命令(1)−8のload命令まで、合計8個に分
割される。命令(2)のand命令は上記の図8(a)
における命令(7)の分岐先命令と同一な命令を示して
いる。
【0084】図9(b)は図8(b)で用いたハードウ
ェア構成を用いて実行した場合のタイムチャートであ
る。T1でフェッチされた命令(1)のlodm命令と
命令(2)のand命令とはT2においてレジスタリネ
ームが行われるが、命令(1)のlodm命令が派生マ
イクロ命令を生成することによって命令(2)のand
命令のレジスタリネームは待たされる。
ェア構成を用いて実行した場合のタイムチャートであ
る。T1でフェッチされた命令(1)のlodm命令と
命令(2)のand命令とはT2においてレジスタリネ
ームが行われるが、命令(1)のlodm命令が派生マ
イクロ命令を生成することによって命令(2)のand
命令のレジスタリネームは待たされる。
【0085】T2における命令(1)のlodm命令の
分割は4命令同時に行われる。T3ではT2で生成され
た4個の派生マイクロ命令をリオーダバッファ4に格納
するとともに、残り4個の派生マイクロ命令の生成も行
う。
分割は4命令同時に行われる。T3ではT2で生成され
た4個の派生マイクロ命令をリオーダバッファ4に格納
するとともに、残り4個の派生マイクロ命令の生成も行
う。
【0086】T4では命令(1)のlodm命令の分割
によって待たされていた命令(2)のand命令がレジ
スタリネームされる。T5においてロード・ストアユニ
ットに供給された命令(1)−1のlodmf命令によ
って冗長命令検出部9において残データ長が0以下であ
ることが検出されると、リザベーションステーション5
内にある命令(1)−2のload命令から命令(1)
−8のload命令までが冗長と判断されるとともに、
リオーダバッファ4においても強制終了対象であると判
断され、T6においてリザベーションステーション5か
ら削除され、リオーダバッファ4において命令終了状態
となる。
によって待たされていた命令(2)のand命令がレジ
スタリネームされる。T5においてロード・ストアユニ
ットに供給された命令(1)−1のlodmf命令によ
って冗長命令検出部9において残データ長が0以下であ
ることが検出されると、リザベーションステーション5
内にある命令(1)−2のload命令から命令(1)
−8のload命令までが冗長と判断されるとともに、
リオーダバッファ4においても強制終了対象であると判
断され、T6においてリザベーションステーション5か
ら削除され、リオーダバッファ4において命令終了状態
となる。
【0087】その後、命令(1)−1のlodmf命令
が終了するT10においてグラジュエイトが開始され、
命令(2)のand命令のグラジュエイトはT12で行
われる。
が終了するT10においてグラジュエイトが開始され、
命令(2)のand命令のグラジュエイトはT12で行
われる。
【0088】以上説明したように、本発明の一実施例に
よるスーパスカラ構成のプロセッサでは図8(b)と図
9(b)とで比較した通り、可変長データ処理が高速化
されることがわかる。
よるスーパスカラ構成のプロセッサでは図8(b)と図
9(b)とで比較した通り、可変長データ処理が高速化
されることがわかる。
【0089】このように、命令分割部2が可変長データ
を扱うマイクロ命令を認識した時に可変長データのデー
タ長を確認することなく、可変長データが取り得る最大
データ長がアクセス可能な分の基本マイクロ命令に分割
して投機的に発行することによって、垂直型のマイクロ
命令における実行時間増加の原因ともいえる分岐命令を
使用せずに、可変長データを処理することができる。
を扱うマイクロ命令を認識した時に可変長データのデー
タ長を確認することなく、可変長データが取り得る最大
データ長がアクセス可能な分の基本マイクロ命令に分割
して投機的に発行することによって、垂直型のマイクロ
命令における実行時間増加の原因ともいえる分岐命令を
使用せずに、可変長データを処理することができる。
【0090】また、冗長命令検出部9において命令分割
部2で分割されたマイクロ命令が実行ユニット6で実行
される度に可変長データの残データ長を計算し、処理す
べきデータがなくなると、投機的に供給された冗長なマ
イクロ命令を処理するように命令削除制御部8と命令終
了操作部7とに指示を出し、命令削除制御部8がリザベ
ーションステーション5に残っている冗長なマイクロ命
令を全て削除するとともに、命令終了操作部7がリオー
ダバッファ4内に存在する冗長なマイクロ命令を実行終
了状態にすることによって、垂直型のマイクロ命令にお
ける実行時間増加の原因ともいえる分岐命令を使用せず
に、可変長データが処理可能となるので、可変長データ
を扱うソフトウェア命令を高速に実行することができ、
性能の向上を図ることができる。
部2で分割されたマイクロ命令が実行ユニット6で実行
される度に可変長データの残データ長を計算し、処理す
べきデータがなくなると、投機的に供給された冗長なマ
イクロ命令を処理するように命令削除制御部8と命令終
了操作部7とに指示を出し、命令削除制御部8がリザベ
ーションステーション5に残っている冗長なマイクロ命
令を全て削除するとともに、命令終了操作部7がリオー
ダバッファ4内に存在する冗長なマイクロ命令を実行終
了状態にすることによって、垂直型のマイクロ命令にお
ける実行時間増加の原因ともいえる分岐命令を使用せず
に、可変長データが処理可能となるので、可変長データ
を扱うソフトウェア命令を高速に実行することができ、
性能の向上を図ることができる。
【0091】
【発明の効果】以上説明したように本発明によれば、可
変長データを扱うマイクロ命令を少なくとも実行するマ
イクロプロセッサ装置において、可変長データが取り得
る最大のデータを処理するための派生マイクロ命令群を
発行することによって、分岐命令を使用することなく可
変長データを処理することができ、可変長データを扱う
ソフトウェア命令の高速化を図ることができるという効
果がある。
変長データを扱うマイクロ命令を少なくとも実行するマ
イクロプロセッサ装置において、可変長データが取り得
る最大のデータを処理するための派生マイクロ命令群を
発行することによって、分岐命令を使用することなく可
変長データを処理することができ、可変長データを扱う
ソフトウェア命令の高速化を図ることができるという効
果がある。
【図1】本発明の一実施例によるスーパスカラ構成のプ
ロセッサの構成を示すブロック図である。
ロセッサの構成を示すブロック図である。
【図2】本発明の一実施例によるスーパスカラ構成のプ
ロセッサの動作を示すフローチャートである。
ロセッサの動作を示すフローチャートである。
【図3】本発明の一実施例によるスーパスカラ構成のプ
ロセッサの動作を示すフローチャートである。
ロセッサの動作を示すフローチャートである。
【図4】本発明の一実施例で用いるマイクロ命令形式の
一例を示す図である。
一例を示す図である。
【図5】図1の命令分割部における可変長データ用マイ
クロ命令を基本マイクロ命令に分割した際に生成される
派生マイクロ命令とそれに対応するマイクロタグ及び拡
張タグとを示す図である。
クロ命令を基本マイクロ命令に分割した際に生成される
派生マイクロ命令とそれに対応するマイクロタグ及び拡
張タグとを示す図である。
【図6】(a)及び(b)は図1の命令終了操作部と命
令削除制御部と冗長命令検出部とにおける処理動作を示
す図である。
令削除制御部と冗長命令検出部とにおける処理動作を示
す図である。
【図7】(a)及び(b)は図1の命令終了操作部と命
令削除制御部と冗長命令検出部とにおける処理動作を示
す図である。
令削除制御部と冗長命令検出部とにおける処理動作を示
す図である。
【図8】(a)はマイクロ命令でデータ長を計算しなが
らメモリロードを行うマイクロ命令コーディングを示す
図、(b)は(a)のマイクロプログラムを実行した場
合のタイムチャートである。
らメモリロードを行うマイクロ命令コーディングを示す
図、(b)は(a)のマイクロプログラムを実行した場
合のタイムチャートである。
【図9】(a)は本発明の一実施例を利用した場合のマ
イクロ命令コーディングと、実際に実行されるマイクロ
プログラムを示す図、(b)は(b)のマイクロプログ
ラムを実行した場合のタイムチャートである。
イクロ命令コーディングと、実際に実行されるマイクロ
プログラムを示す図、(b)は(b)のマイクロプログ
ラムを実行した場合のタイムチャートである。
【図10】従来例によるスーパスカラ構成のプロセッサ
の構成を示すブロック図である。
の構成を示すブロック図である。
【図11】図10のRISC命令供給部及びプロセッサ
本体における一般的なハードウェア構成を示すブロック
図である。
本体における一般的なハードウェア構成を示すブロック
図である。
【図12】従来例による4方向への分岐を行う場合のマ
イクロ命令の流れを示す図である。
イクロ命令の流れを示す図である。
1 命令供給部 2 命令分割部 3 レジスタリネーム部 4 リオーダバッファ 5 リザベーションステーション 6 実行ユニット 7 命令終了操作部 8 命令削除制御部 9 冗長命令検出部 11 基本形態 12 load命令 13 lodm命令 14 lodmf命令
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成11年12月20日(1999.12.
20)
20)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0019
【補正方法】変更
【補正内容】
【0019】
【課題を解決するための手段】本発明によるマイクロプ
ロセッサ装置は、可変長データを扱うマイクロ命令を少
なくとも実行するマイクロプロセッサ装置であって、前
記可変長データを扱うマイクロ命令の検出時に当該マイ
クロ命令を前記可変長データが取り得る最大のデータを
処理するための派生マイクロ命令群を発行するよう構成
し、当該マイクロ命令を各々予め設定された固定データ
長を扱う複数の基本マイクロ命令に分割して前記派生マ
イクロ命令群とするよう構成している。
ロセッサ装置は、可変長データを扱うマイクロ命令を少
なくとも実行するマイクロプロセッサ装置であって、前
記可変長データを扱うマイクロ命令の検出時に当該マイ
クロ命令を前記可変長データが取り得る最大のデータを
処理するための派生マイクロ命令群を発行するよう構成
し、当該マイクロ命令を各々予め設定された固定データ
長を扱う複数の基本マイクロ命令に分割して前記派生マ
イクロ命令群とするよう構成している。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0020
【補正方法】変更
【補正内容】
【0020】本発明による他のマイクロプロセッサ装置
は、可変長データを扱うマイクロ命令を少なくとも実行
するマイクロプロセッサ装置であって、前記可変長デー
タを扱うマイクロ命令を検出した時にそのマイクロ命令
を前記可変長データが取り得る最大のデータを処理する
ための派生マイクロ命令群に分割して発行する分割手段
を備え、当該マイクロ命令を各々予め設定された固定デ
ータ長を扱う複数の基本マイクロ命令に分割して前記派
生マイクロ命令群とするよう構成している。
は、可変長データを扱うマイクロ命令を少なくとも実行
するマイクロプロセッサ装置であって、前記可変長デー
タを扱うマイクロ命令を検出した時にそのマイクロ命令
を前記可変長データが取り得る最大のデータを処理する
ための派生マイクロ命令群に分割して発行する分割手段
を備え、当該マイクロ命令を各々予め設定された固定デ
ータ長を扱う複数の基本マイクロ命令に分割して前記派
生マイクロ命令群とするよう構成している。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0021
【補正方法】変更
【補正内容】
【0021】本発明によるソフトウェア命令高速化方法
は、可変長データを扱うマイクロ命令を少なくとも実行
するマイクロプロセッサ装置のソフトウェア命令高速化
方法であって、前記可変長データを扱うマイクロ命令の
検出時にそのマイクロ命令を前記可変長データが取り得
る最大のデータを処理するための派生マイクロ命令群を
発行するようにし、当該マイクロ命令を各々予め設定さ
れた固定データ長を扱う複数の基本マイクロ命令に分割
して前記派生マイクロ命令群とするようにしている。
は、可変長データを扱うマイクロ命令を少なくとも実行
するマイクロプロセッサ装置のソフトウェア命令高速化
方法であって、前記可変長データを扱うマイクロ命令の
検出時にそのマイクロ命令を前記可変長データが取り得
る最大のデータを処理するための派生マイクロ命令群を
発行するようにし、当該マイクロ命令を各々予め設定さ
れた固定データ長を扱う複数の基本マイクロ命令に分割
して前記派生マイクロ命令群とするようにしている。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0022
【補正方法】変更
【補正内容】
【0022】本発明によるソフトウェア命令高速化方法
は、可変長データを扱うマイクロ命令を少なくとも実行
するマイクロプロセッサ装置のソフトウェア命令高速化
方法であって、前記可変長データを扱うマイクロ命令を
検出した時にそのマイクロ命令を前記可変長データが取
り得る最大のデータを処理するための派生マイクロ命令
群に分割して発行するステップを備えし、当該マイクロ
命令を各々予め設定された固定データ長を扱う複数の基
本マイクロ命令に分割して前記派生マイクロ命令群とす
るようにしている。
は、可変長データを扱うマイクロ命令を少なくとも実行
するマイクロプロセッサ装置のソフトウェア命令高速化
方法であって、前記可変長データを扱うマイクロ命令を
検出した時にそのマイクロ命令を前記可変長データが取
り得る最大のデータを処理するための派生マイクロ命令
群に分割して発行するステップを備えし、当該マイクロ
命令を各々予め設定された固定データ長を扱う複数の基
本マイクロ命令に分割して前記派生マイクロ命令群とす
るようにしている。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0023
【補正方法】削除
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0024
【補正方法】削除
Claims (14)
- 【請求項1】 可変長データを扱うマイクロ命令を少な
くとも実行するマイクロプロセッサ装置であって、前記
可変長データが取り得る最大のデータを処理するための
派生マイクロ命令群を発行するよう構成したことを特徴
とするマイクロプロセッサ装置。 - 【請求項2】 前記発行された派生マイクロ命令の冗長
を検出した時にその冗長な派生マイクロ命令を実行終了
状態とするよう構成したことを特徴とする請求項1記載
のマイクロプロセッサ装置。 - 【請求項3】 前記発行された派生マイクロ命令を保持
しておき、前記発行された派生マイクロ命令の冗長を検
出した時にその冗長な派生マイクロ命令を削除するよう
構成したことを特徴とする請求項1または請求項2記載
のマイクロプロセッサ装置。 - 【請求項4】 可変長データを扱うマイクロ命令を少な
くとも実行するマイクロプロセッサ装置であって、前記
可変長データを扱うマイクロ命令を検出した時にそのマ
イクロ命令を前記可変長データが取り得る最大のデータ
を処理するための派生マイクロ命令群に分割して発行す
る分割手段を有することを特徴とするマイクロプロセッ
サ装置。 - 【請求項5】 前記分割手段で分割されて発行された派
生マイクロ命令の冗長を検出する検出手段と、前記検出
手段が前記派生マイクロ命令の冗長を検出した時にその
冗長な派生マイクロ命令を実行終了状態とする終了操作
手段とを含むことを特徴とする請求項4記載のマイクロ
プロセッサ装置。 - 【請求項6】 前記分割手段で分割されて発行された派
生マイクロ命令を保持する保持手段と、前記検出手段が
前記派生マイクロ命令の冗長を検出した時にその冗長な
派生マイクロ命令を前記保持手段から削除する削除手段
とを含むことを特徴とする請求項5記載のマイクロプロ
セッサ装置。 - 【請求項7】 可変長データを扱うマイクロ命令を少な
くとも実行するマイクロプロセッサ装置のソフトウェア
命令高速化方法であって、前記可変長データが取り得る
最大のデータを処理するための派生マイクロ命令群を発
行するようにしたことを特徴とするソフトウェア命令高
速化方法。 - 【請求項8】 前記発行された派生マイクロ命令の冗長
を検出した時にその冗長な派生マイクロ命令を実行終了
状態とするようにしたことを特徴とする請求項7記載の
ソフトウェア命令高速化方法。 - 【請求項9】 前記発行された派生マイクロ命令を保持
しておき、前記発行された派生マイクロ命令の冗長を検
出した時にその冗長な派生マイクロ命令を削除するよう
にしたことを特徴とする請求項7または請求項8記載の
ソフトウェア命令高速化方法。 - 【請求項10】 可変長データを扱うマイクロ命令を少
なくとも実行するマイクロプロセッサ装置のソフトウェ
ア命令高速化方法であって、前記可変長データを扱うマ
イクロ命令を検出した時にそのマイクロ命令を前記可変
長データが取り得る最大のデータを処理するための派生
マイクロ命令群に分割して発行するステップを有するこ
とを特徴とするソフトウェア命令高速化方法。 - 【請求項11】 分割されて発行された派生マイクロ命
令の冗長を検出するステップと、前記派生マイクロ命令
の冗長が検出された時にその冗長な派生マイクロ命令を
実行終了状態とするステップとを含むことを特徴とする
請求項10記載のソフトウェア命令高速化方法。 - 【請求項12】 分割されて発行された派生マイクロ命
令を保持するステップと、前記派生マイクロ命令の冗長
が検出された時にその冗長な派生マイクロ命令を前記保
持手段から削除する削除手段とを含むことを特徴とする
請求項11記載のソフトウェア命令高速化方法。 - 【請求項13】 可変長データを扱うマイクロ命令を少
なくとも実行するマイクロプロセッサ装置に前記マイク
ロ命令を実行させるためのソフトウェア命令高速化制御
プログラムを記録した記録媒体であって、前記ソフトウ
ェア命令高速化制御プログラムは前記マイクロプロセッ
サ装置に、前記可変長データが取り得る最大のデータを
処理するための派生マイクロ命令群を発行させることを
特徴とするソフトウェア命令高速化制御プログラムを記
録した記録媒体。 - 【請求項14】 可変長データを扱うマイクロ命令を少
なくとも実行するマイクロプロセッサ装置に前記マイク
ロ命令を実行させるためのソフトウェア命令高速化制御
プログラムを記録した記録媒体であって、前記ソフトウ
ェア命令高速化制御プログラムは前記マイクロプロセッ
サ装置に、前記可変長データを扱うマイクロ命令を検出
した時にそのマイクロ命令を前記可変長データが取り得
る最大のデータを処理するための派生マイクロ命令群に
分割して発行させることを特徴とするソフトウェア命令
高速化制御プログラムを記録した記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10327385A JP3110404B2 (ja) | 1998-11-18 | 1998-11-18 | マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体 |
US09/440,134 US6502187B1 (en) | 1998-11-18 | 1999-11-15 | Pipeline computer dividing a variable-length data-handling instruction into fixed-length data-handling instructions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10327385A JP3110404B2 (ja) | 1998-11-18 | 1998-11-18 | マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000148472A true JP2000148472A (ja) | 2000-05-30 |
JP3110404B2 JP3110404B2 (ja) | 2000-11-20 |
Family
ID=18198568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10327385A Expired - Fee Related JP3110404B2 (ja) | 1998-11-18 | 1998-11-18 | マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6502187B1 (ja) |
JP (1) | JP3110404B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013521551A (ja) * | 2010-03-05 | 2013-06-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マシン状態に基づいた命令の分割 |
KR20200084229A (ko) * | 2019-01-02 | 2020-07-10 | 엘에스일렉트릭(주) | Plc 명령어 스캔 분할 처리 방법 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7039798B2 (en) * | 2000-11-29 | 2006-05-02 | Intel Corporation | Method and apparatus to enable cross platform configuration |
US6963961B1 (en) * | 2001-07-09 | 2005-11-08 | Lsi Logic Corporation | Increasing DSP efficiency by independent issuance of store address and data |
US20050232303A1 (en) * | 2002-04-26 | 2005-10-20 | Koen Deforche | Efficient packet processing pipeline device and method |
US20070283129A1 (en) * | 2005-12-28 | 2007-12-06 | Stephan Jourdan | Vector length tracking mechanism |
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
EP2523101B1 (en) | 2006-11-14 | 2014-06-04 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
GB2486738B (en) * | 2010-12-24 | 2018-09-19 | Qualcomm Technologies Int Ltd | Instruction execution |
EP2689327B1 (en) | 2011-03-25 | 2021-07-28 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
KR101966712B1 (ko) | 2011-03-25 | 2019-04-09 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
CN103649931B (zh) | 2011-05-20 | 2016-10-12 | 索夫特机械公司 | 用于支持由多个引擎执行指令序列的互连结构 |
KR101639853B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 |
KR101703401B1 (ko) | 2011-11-22 | 2017-02-06 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
US9952840B2 (en) * | 2012-05-15 | 2018-04-24 | International Business Machines Corporation | Conditional sequential selection of external reference resolutions |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
WO2014151043A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
WO2014151018A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for executing multithreaded instructions grouped onto blocks |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
JP5847781B2 (ja) * | 2013-09-25 | 2016-01-27 | シャープ株式会社 | 機器操作管理装置、遠隔操作システム、機器操作管理装置の制御方法、制御プログラム、端末装置 |
CN111813446A (zh) * | 2019-04-12 | 2020-10-23 | 杭州中天微系统有限公司 | 一种数据加载和存储指令的处理方法和处理装置 |
US11029953B2 (en) * | 2019-06-26 | 2021-06-08 | Intel Corporation | Branch prediction unit in service of short microcode flows |
US11748101B2 (en) * | 2021-07-13 | 2023-09-05 | Arm Limited | Handling of single-copy-atomic load/store instruction with a memory access request shared by micro-operations |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4103329A (en) * | 1976-12-28 | 1978-07-25 | International Business Machines Corporation | Data processing system with improved bit field handling |
JPS5922142A (ja) | 1982-07-27 | 1984-02-04 | Nec Corp | デ−タ処理装置 |
JP2554270B2 (ja) | 1988-06-18 | 1996-11-13 | 富士通株式会社 | 情報処理装置 |
JPH02189633A (ja) | 1989-01-18 | 1990-07-25 | Nec Corp | 情報処理装置 |
JPH05265755A (ja) | 1992-03-24 | 1993-10-15 | Nec Corp | 並列命令実行方式 |
US5404473A (en) * | 1994-03-01 | 1995-04-04 | Intel Corporation | Apparatus and method for handling string operations in a pipelined processor |
US5822602A (en) * | 1996-07-23 | 1998-10-13 | S3 Incorporated | Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity |
US5828875A (en) * | 1997-05-29 | 1998-10-27 | Telefonaktiebolaget Lm Ericsson | Unroll of instructions in a micro-controller |
US6032252A (en) * | 1997-10-28 | 2000-02-29 | Advanced Micro Devices, Inc. | Apparatus and method for efficient loop control in a superscalar microprocessor |
-
1998
- 1998-11-18 JP JP10327385A patent/JP3110404B2/ja not_active Expired - Fee Related
-
1999
- 1999-11-15 US US09/440,134 patent/US6502187B1/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013521551A (ja) * | 2010-03-05 | 2013-06-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マシン状態に基づいた命令の分割 |
KR20200084229A (ko) * | 2019-01-02 | 2020-07-10 | 엘에스일렉트릭(주) | Plc 명령어 스캔 분할 처리 방법 |
KR102200592B1 (ko) * | 2019-01-02 | 2021-01-11 | 엘에스일렉트릭(주) | Plc 명령어 스캔 분할 처리 방법 |
Also Published As
Publication number | Publication date |
---|---|
JP3110404B2 (ja) | 2000-11-20 |
US6502187B1 (en) | 2002-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3110404B2 (ja) | マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体 | |
JP3871884B2 (ja) | 記憶からロードへの転送のための機構 | |
KR100592122B1 (ko) | 가상 레지스터 번호들을 이용하여 논리적 레지스터 번호들을 물리적 레지스터 번호들로 맵핑시키도록 구성된 프로세서 | |
US5758051A (en) | Method and apparatus for reordering memory operations in a processor | |
US7003629B1 (en) | System and method of identifying liveness groups within traces stored in a trace cache | |
KR100234646B1 (ko) | 다중 인스트럭션 실행 방법 및 수퍼스칼라 마이크로프로세서 | |
US6052776A (en) | Branch operation system where instructions are queued until preparations is ascertained to be completed and branch distance is considered as an execution condition | |
JPH10283181A (ja) | プロセッサ内で命令を発行するための方法および装置 | |
US6378062B1 (en) | Method and apparatus for performing a store operation | |
JPH10283180A (ja) | プロセッサ内で命令をディスパッチする方法および装置 | |
US6338134B1 (en) | Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data | |
US5930491A (en) | Identification of related instructions resulting from external to internal translation by use of common ID field for each group | |
EP0094535B1 (en) | Pipe-line data processing system | |
US8972701B2 (en) | Setting zero bits in architectural register for storing destination operand of smaller size based on corresponding zero flag attached to renamed physical register | |
US6266763B1 (en) | Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values | |
US6108771A (en) | Register renaming with a pool of physical registers | |
US6625725B1 (en) | Speculative reuse of code regions | |
US6230262B1 (en) | Processor configured to selectively free physical registers upon retirement of instructions | |
US10042646B2 (en) | System and method of merging partial write result during retire phase | |
US7844799B2 (en) | Method and system for pipeline reduction | |
CN114116002A (zh) | 一种存储重命名的实现方法、处理器及计算机设备 | |
KR100263013B1 (ko) | 슈퍼 스칼라 컴퓨터 시스템의 리네임 레지스터 와 구조화된레지스터를 관리하는 방법 및 컴퓨터 시스템 | |
JP2001092657A (ja) | 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体 | |
US7694110B1 (en) | System and method of implementing microcode operations as subroutines | |
US20030182538A1 (en) | Method and system for managing registers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |