JP3670043B2 - スーパースカラ・プロセッサにおける命令の前復号および操向機構 - Google Patents
スーパースカラ・プロセッサにおける命令の前復号および操向機構 Download PDFInfo
- Publication number
- JP3670043B2 JP3670043B2 JP01353395A JP1353395A JP3670043B2 JP 3670043 B2 JP3670043 B2 JP 3670043B2 JP 01353395 A JP01353395 A JP 01353395A JP 1353395 A JP1353395 A JP 1353395A JP 3670043 B2 JP3670043 B2 JP 3670043B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- predecode
- bit
- bundled
- 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
- 238000000034 method Methods 0.000 claims description 20
- 230000007704 transition Effects 0.000 claims 1
- 230000009977 dual effect Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 8
- 101001024286 Homo sapiens Notchless protein homolog 1 Proteins 0.000 description 6
- 102100035358 Notchless protein homolog 1 Human genes 0.000 description 6
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003068 static effect Effects 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/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/3802—Instruction 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/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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
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)
- Memory System Of A Hierarchy Structure (AREA)
Description
【産業上の利用分野】
本発明は、スーパースカラ・プロセッサで実行される前復号命令および操向命令に関する。
【0002】
【従来の技術】
大部分の現代のシステムは、中央演算処理装置(CPU)とメイン・メモリとを含む。CPUが命令およびオペランドを復号して実行できる速度は、命令およびオペランドをメイン・メモリからCPUに転送できる速度に依存する。CPUが命令およびオペランドをメイン・メモリから得るために必要とされる時間を短縮する試みとして、多数のコンピュータ・システムは、CPUとメイン・メモリの間にキャッシュ・メモリを含む。
【0003】
キャッシュ・メモリとは、近い将来にCPUによって使用されると考えられるメイン・メモリの内容のその部分を一時的に保持するために使用される小型の高速バッファ・メモリである。キャッシュ・メモリの主な目的は、データ取出しの場合であれ、命令取出しの場合であれ、メモリ・アクセスを実行するのに必要な時間を短縮することである。キャッシュ・メモリに位置する情報は、メイン・メモリに位置する情報よりもずっと短い時間でアクセスすることができる。したがって、キャッシュ・メモリを含むCPUは、命令およびオペランドが取り出され、及び/又は記憶されるのを待つのに必要な時間がかなり短い。
【0004】
キャッシュ・メモリは、1以上のデータ・ワードの多数のブロックから構成される。各ブロックには、それがメイン・メモリのどのブロックのコピーであるかを固有に識別するアドレス・タグが関連付けられる。プロセッサがメモリ参照を行うたびに、要求されたデータのコピーがキャッシュ・メモリに存在しているかどうかを確認するためにアドレス・タグの比較が行われる。所望のメモリ・ブロックがキャッシュ・メモリ中にない場合、そのブロックはメイン・メモリから検索され、キャッシュ・メモリに格納され、プロセッサに供給される。命令を記憶するために使用されるキャッシュ・メモリを一般に命令キャッシュと呼ぶ。プログラム・カウンタを使用して、どの命令を実行のために取り出すべきかが、決定される。
【0005】
いくつかのコンピュータ・システムでは、命令の並列実行(命令の「バンドリング」と呼ばれる)を使用して、コンピュータの動作を高速化することができる。命令の並列実行を行うプロセッサは、スーパースカラ・プロセッサと呼ぶことができる。スーパースカラ・コンピュータは一般に、1つ以上の実行ユニットを使用して命令のバンドリングを行う。実行ユニットとは、例えば、論理演算ユニット(ALU)、又は浮動小数点演算ユニット(FPU)である。
【0006】
【発明が解決しようとする課題】
多数の実行ユニットを使用しても、どの命令がバンドリングできるかに依然として制限がある。例えば、ある命令は他の命令と競合する。このタイプの競合は様々な形をとる。2つの命令が共に同じ限られたプロセッサ資源を使用するとき資源の競合が発生する。例えば、これは、両方の命令が同じ実行ユニットを使用する必要があるときに発生する。交互に、データの依存性によって結果として競合になることもある。すなわち、1つの命令が、次の命令で使用されるべき結果を生成するとき、2つの命令をバンドリングすることはできない。又、手順の依存性によって結果として競合になることもある。例えば、分岐命令の次の命令を分岐命令とバンドリングすることはできない。なぜなら、この命令の実行は、この分岐が選択されるかどうかに依存するからである。2つ以上の命令がバンドリングできるかどうかを判定するには一般に、まず命令を復号する必要がある。これは、例えば、命令復号ユニットで行うことができる。
【0007】
適当な実行ユニットへの命令を復号、及び操向するための性能上の悪影響を最小限に抑えるために様々な方法が開発されている。例えば、コンパイラ技法を使用して、命令復号ユニットが2つ以上の命令をバンドリングできるかどうかを判定するのを助けることができる。すなわち、コンパイル時に、コンパイラは、命令復号/操向ハードウェアによって使用されるべき実際の命令演算コード(opコード)中の1つ以上のビットを符号化することができる。これらのビットは、命令を他の命令といかにバンドリングできるかに関する情報を復号ハードウェアに提供する。前復号情報は、実際には、命令セット・アーキテクチャの一部として使用される。しかし、復号ハードウェアによって必要とされる情報はプロセッサに依存する。従って、そのようなビット符号化は、異なるプロセッサがコードの再コンパイルなしに命令演算コードを最適に実行する柔軟性を制限することがある。
【0008】
あるシステムでは、整数演算論理ユニット(ALU)、又は浮動小数点演算ユニット(FPU)のどちらかに命令を操向するために、復号ハードウェアによって使用される命令キャッシュに前復号された専用ビットが格納される。例えば、E.DeLano、W.Walker、J.Yetter、M.Forsyth著「(高速スカラ PA-RISC プロセッサ)High Speed Superscalar PA-RISC Processor」IEEE,1992,pp.116-121を参照されたい。
【0009】
【課題を解決するための手段】
本発明の好適実施例によれば、コンピュータ・システムが提供される。この計算システムは、メイン・メモリ、命令キャッシュ、及びプロセッサを含む。プロセッサは、メモリ・インタフェース手段、前復号手段、インタフェース手段、第1の論理演算ユニット、第2の論理演算ユニット、及び操向手段を含む。メモリ・インタフェース手段は、メイン・メモリに接続され、メイン・メモリから命令を取り出す。好適実施例では、メモリ・インタフェース手段は、命令をダブル・ワードで一度に2つずつメイン・メモリから取り出す。
【0010】
前復号手段は、メモリ・インタフェース手段に接続され、命令を前復号して前復号ビットを生成する。前復号ビットは、命令をバンドリングできるかどうか、及びいかにバンドリングできるかを示す。好適実施例では、前復号ビットは、バンドリングされた各対ごとに、特定の命令が第1の整数論理演算ユニットと第2の整数論理演算ユニットのうちのどちらに操向されるかを識別する。前復号手段は、3つの前復号レジスタを含む。第1の前復号レジスタは、現在復号されている命令対の偶数ワード命令を保持する。第2の前復号レジスタは、現在復号されている命令対の奇数ワード命令を保持する。第3の前復号レジスタは、以前に前復号された命令対の奇数ワード命令を保持する。
【0011】
インタフェース手段は、前復号手段および命令キャッシュに接続される。インタフェース手段は、命令および前復号ビットを命令キャッシュに格納し、前復号ビットと共に命令を命令キャッシュから取り出す。操向手段は、インタフェース手段、第1の論理演算ユニット、及び第2の論理演算ユニットに接続される。操向手段は、各命令を実行するために前記命令を第1の整数論理演算ユニットと第2の整数論理演算ユニットのうちの一方に操向する。操向手段は、前復号ビットを使用して命令を操向する。好適実施例では、操向手段は状態マシンを含む。状態マシンの現在状態は、操向手段がどちらの前復号ビットを使用して命令を操向するかを決定する。
【0012】
本発明の好適実施例では、プロセッサは、操向手段に接続された浮動小数点演算ユニットも含む。操向手段は、浮動小数点命令を浮動小数点演算ユニットに操向する。好適実施例ではまた、前復号手段によって生成される前復号ビットは、2つの連続命令を実行するために前記命令をバンドリングできるかどうかも示す。更に、前復号手段によって生成される前復号ビットは、実行するためにバンドリングできる2つの連続命令が非整列命令であるか、それとも整列命令であるかを示す。
【0013】
本発明の好適実施例は、命令の効率的なバンドリングおよび操向をスーパースカラ・プロセッサで実施する。
【0014】
【実施例】
図1は、コンピュータ・システムの簡略ブロック図を示す。プロセッサ12、及びメモリ11は、バス10に接続されるように示されている。プロセッサ12は、命令キャッシュ13およびデータ・キャッシュ14を使用する。命令キャッシュ13は、プロセッサ12用の命令を静的ランダム・アクセス・メモリ(SRAM)に格納する。データ・キャッシュ14は、プロセッサ12用のデータをSRAMに格納する。
【0015】
図2は、プロセッサ12の簡略ブロック図を示す。プロセッサ12は、システム・バス・インタフェース論理26、命令キャッシュ・インタフェース論理24、データ・キャッシュ・インタフェース論理25、論理演算ユニット(ALU)22、変換索引バッファ(TLB)21、及び補助キャッシュ23を含むように示されている。システム・バス・インタフェース論理26は、システム・バス10とのインタフェースをプロセッサ12に提供する。命令キャッシュ・インタフェース論理24は、命令キャッシュ13とのインタフェースをプロセッサ12に提供する。データ・キャッシュ・インタフェース論理25は、データ・キャッシュ14とのインタフェースをプロセッサ12に提供する。補助キャッシュ23は、論理演算ユニット22にデータを提供するためにデータ・キャッシュ14と並列に使用される。変換索引バッファ21は、仮想アドレスを実アドレスにマップして、補助キャッシュ23およびデータ・キャッシュ14内に格納されたデータにアクセスするために使用すべきキャッシュ・タグを生成するために使用される。
【0016】
図3は、プロセッサ12内の前復号命令、及び操向命令に関連する論理ブロックの簡略ブロック図である。本発明の好適実施例では、システム・バス・インタフェース26は、メモリ11とプロセッサ12の間で64ビット幅ダブルワード転送を実施する。各ダブルワードは2つの32ビット命令を含む。ダブルワードの上位ビット(ビット[0:31])を占めるダブルワード中の命令を偶数ワード命令と呼ぶ。ダブルワードの下位ビット(ビット[32:63])を占めるダブルワード中の命令を奇数ワード命令と呼ぶ。
【0017】
ワードがメモリ11から検索され、データ経路54に沿って命令キャッシュに送られると、前復号論理ユニット44は、各ダブルワードと共に格納すべき、データ経路55上に置かれる前復号ビットを生成する。前復号ビットの特性および機能を以下で更に説明する。
【0018】
前復号論理ユニット44は、ダブルワード中の情報に基づいて前復号ビットを生成する。ダブルワードがメモリから取り出されると、偶数ワード命令はデータ経路60を介して、偶数ワード命令レジスタ40に置かれる。奇数ワード命令はデータ経路61を介して、奇数ワード命令レジスタ41に置かれる。次のダブルワードがメモリから取り出されると、新しい偶数ワード命令が偶数ワード命令レジスタ40に置かれる。新しい奇数ワード命令は奇数ワード命令レジスタ41に置かれる。以前に奇数ワード命令レジスタ41にあった奇数ワード命令は、奇数ワード命令レジスタ43に移動される。以下で更に説明するように、前復号論理ユニット44は、偶数ワード命令レジスタ40、奇数ワード命令レジスタ41、及び奇数ワード命令レジスタ43中の命令に基づいて、データ経路55上に置かれる前復号ビットを生成する。
【0019】
命令キャッシュ・インタフェース24は、データ経路54上で受け取られたダブルワードをデータ経路55上の前復号ビットと共に命令キャッシュ13に格納する。アドレス線51は、命令キャッシュ13中のメモリ位置にアドレスするために使用される。64ビット幅データ経路52は、プロセッサ12と命令キャッシュ13の間でダブルワード命令を転送するために使用される。ダブルワードと共に格納された前復号ビットは、ダブルワードと同時に、データ経路53に沿って命令キャッシュ13とプロセッサ12の間で転送される。命令キャッシュ13は、関連するダブルワードと共に前復号ビットを格納する。
【0020】
ダブルワード内の命令を実行するためにプロセッサ12によって前記ダブルワードが命令キャッシュ13から検索されると、偶数ワード命令が、受信偶数ワード命令レジスタ30に置かれ、奇数ワード命令が、受信奇数ワード命令レジスタ31に置かれる。次のダブルワードがプロセッサ12によって命令キャッシュ13から検索されると、新しい偶数ワード命令が、受信偶数ワード命令レジスタ30に置かれ、新しい奇数ワード命令が、受信奇数ワード命令レジスタ31に置かれる。以前に、受受信偶数ワード命令レジスタ30にあった偶数ワード命令は、保存偶数ワード命令レジスタ32に移動される。以前に、受信奇数ワード命令レジスタ31にあった奇数ワード命令は、保存奇数ワード命令レジスタ33に移動される。
【0021】
操向論理ユニット34は、受信偶数ワード命令レジスタ30、保存偶数ワード命令レジスタ32、受信奇数ワード命令レジスタ31、及び保存奇数ワード命令レジスタ33中の命令を実行するために論理演算ユニット(ALU)36、ALU 37、または浮動小数点演算ユニット(FPU)35に前記命令を転送する。操向論理ユニットは、データ経路56上で受け取られた前復号されたビットと、同じく二重状態マシン45から受け取られた状態情報に基づいて決定を下す。好適実施例では、操向論理ユニット34はまた、これが浮動小数点命令であるかどうかを確認するために、保存奇数レジスタ33から単一のビットも検索する。
【0022】
本発明の好適実施例には、6つの命令の類別がある。第1の類別は、ロード/格納(ldst)命令である。ldst命令を実行すると、結果として情報がメモリ/キャッシュからロードされ、あるいはメモリ/キャッシュに格納される。この第1の類別には、例えば、整数と浮動小数点をロードし、あるいは格納する命令が含まれる。
【0023】
第2の類別は、演算/論理(alu)命令である。第2の類別には、例えば、加算、減算、論理「OR」、及び論理「AND」を実行する命令が含まれる。
【0024】
第3の類別は、マスク/マージ/シフト(mms)命令である。第3の類別には、たとえば1つ以上のレジスタ内でデータを累積し、抽出し、シフトする命令が含まれる。
【0025】
第4の類別は浮動小数点(flop)命令である。第4の類別には、例えば、浮動小数点に関する加算、乗算、除算、平方根を実行する命令が含まれる。
【0026】
第5の類別は分岐(br)命令である。第5の類別には、例えば、比較および分岐、加算および分岐、ならびに分岐およびリンクの命令が含まれる。
【0027】
第6の類別はシステム(sys)命令である。第6の類別には、例えば、TLB値の挿入、データ・キャッシュのフラッシュ、制御レジスタとの間の移動、及び空間レジスタとの間の移動を行う命令が含まれる。
【0028】
本発明の好適実施例では、FPU 35、ALU 36、及びALU 37はそれぞれ、ある類別の命令しか実行しない。特に、FPU 35は第4の類別の命令(flop命令)しか実行しない。ALU 36は、第2の類別の命令(alu命令)、第3の類別の命令(mms命令)、及び第5の類別の命令(br命令)を実行する。ALU 37は、第1の類別の命令(ldst命令)、及び第2の類別の命令(alu命令)を実行する。第6の類別の命令(sys命令)を実行するにはALU 36とALU 37の両方が必要である。
【0029】
本発明の好適実施例では、前復号論理ユニット44は、2つの命令のあらゆるダブルワードに関して6つの前復号ビットを生成する。前復号ビットは、命令の整列およびバンドリングを示す。整列命令がバンドリングされると、これは、現在のダブルワードの偶数ワード中の命令が、現在のダブルワードの奇数ワード中の命令と同時に実行される予定であることを意味する。非整列命令がバンドリングされると、これは、現在のダブルワードの偶数ワード中の命令が、以前のダブルワードの奇数ワード中の命令と同時に実行される予定であることを意味する。
【0030】
第1(ビット0)前復号ビット(EFLOP)が、セットされると、偶数ワード命令が、整列ダブルワードに関する浮動小数点演算であることを示す。第2(ビット1)の前復号ビット(AL02)は、セットされると、2つのダブルワード整列命令がバンドリングされ、奇数ワード命令がALU 37に操向されることを示す。第3(ビット2)の前復号ビット(AL01)が、セットされると、2つのダブルワード整列命令がバンドリングされ、奇数ワード命令がALU 36に操向されることを示す。第4(ビット3)の前復号ビット(NLE2)が、セットされると、2つのダブルワード非整列命令がバンドリングされ、偶数ワード命令がALU 37に操向されることを示す。第5(ビット4)の前復号ビット(NLE1)が、セットされると、2つのダブルワード非整列命令がバンドリングされ、偶数ワード命令がALU 36に操向されることを示す。第6(ビット5)の前復号ビット(ALDUAL)が、セットされると、2つのダブルワード整列命令がバンドリングされることを示す。
【0031】
前復号ビットの符号化は前復号論理ユニット44によって以下のように実行される。ダブルワードがメモリから取り出されると、偶数ワード命令が偶数ワード命令レジスタ40に置かれる。奇数ワード命令は奇数ワード命令レジスタ41に置かれる。単一命令サイクル内で、前復号論理ユニット44は、偶数ワード命令レジスタ40に置かれた偶数ワード命令と、奇数ワード命令レジスタ41に置かれた奇数ワード命令とから成る整列ダブルワードに適用される前復号ビットを生成する。生成された前復号ビットはまた、奇数ワード命令レジスタ43に置かれた奇数ワード命令と、偶数ワード命令レジスタ40に置かれた偶数ワード命令とから成る非整列ダブルワードにも適用される。生成された前復号ビットは、最初にメモリから取り出されたダブルワードと共に命令キャッシュに格納されるように命令キャッシュ・インタフェース24に送られる。
【0032】
前復号論理ユニット44は、偶数ワード命令レジスタ40に置かれた偶数ワード命令が浮動小数点命令であるとき、EFLOPビットをセットする。
【0033】
前復号論理ユニット44は、奇数ワード命令レジスタ41に置かれた奇数ワード命令がロード/格納命令、またはalu演算命令であるとき、AL02ビットをセットする。しかし、このビットをセットする場合、偶数ワード命令レジスタ40に置かれた偶数ワード命令と奇数ワード命令レジスタ41に置かれた奇数ワード命令の間に依存性があってはならない。AL02ビットのセットを妨げる3つの依存性がある。第1の依存性は、例えば、偶数ワード・レジスタ40中の偶数ワード命令が特定のレジスタをセットして、奇数ワード・レジスタ41中の奇数ワード命令がそのレジスタを使用する場合に発生するレジスタ・セット/使用依存性である。第2の依存性は、例えば、偶数ワード・レジスタ40中の偶数ワード命令が繰上り/借りビットをセットし、奇数ワード・レジスタ41中の奇数ワード命令がその繰上り/借りビットを使用する時に発生する繰上り/借りセット/使用依存性である。第3の依存性は、例えば、偶数ワード・レジスタ40中の偶数ワード命令が分岐命令、またはシステム命令であるときに発生する分岐/システム依存性である。分岐の次の命令を分岐命令と共にバンドリングすることはできない。システム命令と共にバンドリングできるものはない。
【0034】
前復号論理ユニット44は、奇数ワード命令レジスタ41に置かれた奇数ワード命令がmms命令、分岐命令、またはalu演算命令であるとき、AL01ビットをセットする。しかし、このビットをセットする場合、偶数ワード命令レジスタ40に置かれた偶数ワード命令と奇数ワード命令レジスタ41に置かれた奇数ワード命令の間に依存性があってはならない。
【0035】
前復号論理ユニット44は、偶数ワード命令レジスタ40に置かれた偶数ワード命令がロード/格納命令、またはalu演算命令であるとき、NLE2ビットをセットする。しかし、このビットをセットする場合、奇数ワード命令レジスタ43に置かれた奇数ワード命令と偶数ワード命令レジスタ40に置かれた偶数ワード命令の間に依存性があってはならない。
【0036】
前復号論理ユニット44は、偶数ワード命令レジスタ40に置かれた偶数ワード命令がmms命令、分岐命令、またはalu演算命令であるとき、NLE1ビットをセットする。しかし、このビットをセットする場合、奇数ワード命令レジスタ43に置かれた奇数ワード命令と偶数ワード命令レジスタ40に置かれた偶数ワード命令の間に依存性があってはならない。
【0037】
前復号論理ユニット44は、偶数ワード命令レジスタ40に置かれた偶数ワード命令を、奇数ワード命令レジスタ41に置かれた奇数ワード命令と共にバンドリングできるとき、ALDUALビットをセットする。しかし、このビットをセットする場合、偶数ワード命令レジスタ40に置かれた偶数ワード命令と奇数ワード命令レジスタ41に置かれた奇数ワード命令の間に依存性があってはならない。ALDUALビットは操向には使用されない。
【0038】
図4は、二重状態マシン45の状態図を示す。偶数ワード命令への分岐があるときは必ず、二重状態マシン45は状態101に入る。命令キャッシュ13から検索されたダブルワードからの命令がバンドリングされる限り、二重状態マシンは状態101のままである。ダブルワード中の2つの命令がバンドリングされないとき、二重状態マシン45は状態102に入る。命令キャッシュ13から検索された非整列命令がバンドリングされる限り、二重状態マシンは状態102のままである。非整列命令がバンドリングされないとき、二重状態マシン45は状態103に入る。保存偶数ワード・レジスタ32、及び保存奇数ワード命令レジスタ33から検索されたダブルワードからの次の整列命令がバンドリングされる場合、二重状態マシンは状態101に入る。状態103にあり、保存偶数ワード命令レジスタ32、及び保存奇数ワード命令レジスタ33からの次の整列命令がバンドリングされない場合、二重状態マシン45は状態102に入る。
【0039】
奇数ワード命令への分岐があるときは必ず、二重状態マシン45は状態104に入る。状態104では、命令をバンドリングすることはできない。奇数ワード命令の実行後、二重状態マシン45は状態101に入る。
【0040】
操向論理ユニット34は、データ経路56上で受け取られた前復号ビットと、同じく二重状態マシン45から受け取られた状態情報に基づいて、受信偶数ワード命令レジスタ30、保存偶数ワード命令レジスタ32、受信奇数ワード命令レジスタ31、及び保存奇数ワード命令レジスタ33中の命令をALU 36、ALU 37、又はFPU 35に操向する。好適実施例では、操向論理ユニット34はまた、これが浮動小数点命令であるかどうかを確認するために、保存奇数レジスタ33から単一のビットも検索する。
【0041】
操向表1は、二重状態マシン45が状態101または状態103にあり、整列命令がバンドリングされるとき、ALU 36、ALU 37、またはFPU 35のうちのどれによってどの命令が実行されるかを示す。
【0042】
【表1】
【0043】
上記の操向表1の第1列は、偶数ワード命令レジスタ30にある命令のタイプを示す。命令のタイプの前に記入された「e」は、それがダブルワード中の偶数命令であることを示す。上記の操向表1の第2列は、奇数ワード命令レジスタ31にある命令のタイプを示す。命令のタイプの前に記入された「o」は、それがダブルワード中の奇数命令であることを示す。操向表1の第3列は、偶数ワード命令レジスタ30、及び奇数ワード命令レジスタ31に格納されたダブルワードに関する前復号ビットEFLOPの値を示す。第3列の「0」は、ビットEFLOPがクリアされていることを示す。第3列の「1」は、ビットEFLOPがセットされていることを示す。操向表1の第4列は、偶数ワード命令レジスタ30、及び奇数ワード命令レジスタ31に格納されたダブルワードに関する前復号ビットAL01の値を示す。操向表1の第5列は、偶数ワード命令レジスタ30、及び奇数ワード命令レジスタ31に格納されたダブルワードに関する前復号ビットAL02の値を示す。操向表1の第6列は、偶数ワード命令レジスタ30、及び奇数ワード命令レジスタ31に格納されたダブルワードに関する前復号ビットNLE1の値を示す。第6列の「X」値は、NLE1ビットがクリアされているか、セットされているかは重要でないことを示す。操向表1の第7列は、偶数ワード命令レジスタ30、及び奇数ワード命令レジスタ31に格納されたダブルワードに関する前復号ビットNLE2の値を示す。操向表1の第8列は、ALU 36に操向される列1または列2からの命令を示す。第8列の「X」値は、どの命令がALU 36に操向されるかは重要でないことを示す。操向表1の第9列は、ALU 37に操向される列1または列2からの命令を示す。第9列の「X」値は、どの命令がALU 37に操向されるかは重要でないことを示す。操向表1の第10列は、FPU 35に操向される列1または列2からの命令を示す。第10列の「X」値は、どの命令がFPU 35に操向されるかは重要でないことを示す。
【0044】
操向表2は、二重状態マシン45が状態102にあり、非整列命令がバンドリングされるとき、ALU 36、ALU 37、またはFPU 35のうちのどれによってどの命令が実行されるかを示す。
【0045】
【表2】
【0046】
上記の操向表2の第1列は、奇数ワード命令レジスタ33にある命令のタイプを示す。命令のタイプの前に記入された「o」は、それがダブルワード中の奇数命令であることを示す。上記の操向表2の第2列は、偶数ワード命令レジスタ30にある命令のタイプを示す。命令のタイプの前に記入された「e」は、それがダブルワード中の偶数命令であることを示す。操向表2の第3列は、偶数ワード命令レジスタ30、及び奇数ワード命令レジスタ33に格納されたダブルワードに関する前復号ビットEFLOPの値を示す。操向表2の第4列は、偶数ワード命令レジスタ30、及び奇数ワード命令レジスタ33に格納されたダブルワードに関する前復号ビットAL01の値を示す。操向表2の第5列は、偶数ワード命令レジスタ30、及び奇数ワード命令レジスタ33に格納されたダブルワードに関する前復号ビットAL02の値を示す。操向表2の第6列は、偶数ワード命令レジスタ30、及び奇数ワード命令レジスタ33に格納されたダブルワードに関する前復号ビットNLE1の値を示す。操向表2の第7列は、偶数ワード命令レジスタ30、及び奇数ワード命令レジスタ33に格納されたダブルワードに関する前復号ビットNLE2の値を示す。操向表2の第8列は、ALU 36に操向される列1または列2からの命令を示す。操向表2の第9列は、ALU 37に操向される列1または列2からの命令を示す。ステアリング表2の第10列は、FPU 35に操向される列1または列2からの命令を示す。
【0047】
以下の表3は、7つのダブルワードがメモリ11から取り出され、命令キャッシュ13に置かれた際、前復号論理ユニット44によって生成される7つのダブルワードに関する前復号ビットを示す。
【0048】
【表3】
【0049】
第1のダブルワードの場合、2つのダブルワード整列命令をバンドリングすることができ、奇数ワード命令がALU 37に操向されることを示す前復号ビットAL02がセットされる。又、2つのダブルワード整列命令がバンドリングされることを示す前復号ビットALDUALもセットされる。
【0050】
第2のダブルワードの場合、2つのダブルワード非整列命令をバンドリングすることができ、偶数ワード命令がALU 36に操向されることを示す前復号ビットNLE1がセットされる。
【0051】
第3のダブルワードの場合、偶数ワード命令が、整列ダブルワードに関する浮動小数点演算であることを示す前復号ビットEFLOPがセットされる。又、2つのダブルワード整列命令をバンドリングすることができ、奇数ワード命令がALU 36に操向されることを示す前復号ビットAL01もセットされる。又、2つのダブルワード整列命令がバンドリングされることを示す前復号ビットALDUALもセットされる。
【0052】
第4のダブルワードの場合、2つのダブルワード非整列命令をバンドリングすることができ、偶数ワード命令がALU 37に操向されることを示す前復号ビットNLE2がセットされる。
【0053】
第5のダブルワードの場合、前復号ビットはセットされず、バンドリングが不可能であることを示す。
【0054】
第6のダブルワードの場合、偶数ワード命令が、整列ダブルワードに関する浮動小数点演算であることを示す前復号ビットEFLOPがセットされる。又、2つのダブルワード整列命令をバンドリングすることができ、奇数ワード命令がALU 36に操向されることを示す前復号ビットAL01もセットされる。又、2つのダブルワード整列命令がバンドリングされることを示す前復号ビットALDUALもセットされる。
【0055】
第7のダブルワードの場合、前復号ビットはセットされず、バンドリングが不可能であることを示す。
【0056】
以下の表4は、最初の8回の実行サイクル中の上記の7つのワードに関する操向を示す。
【0057】
【表4】
【0058】
表4の第1列はサイクルを示す。表4の第2列は、二重状態マシン45の現在の状態を示す。「1」の値は、二重状態マシン45が状態101であることを示す。「2」の値は、二重状態マシン45が状態102であることを示す。「3」の値は、二重状態マシン45が状態103であることを示す。「4」の値は、二重状態マシン45が状態104であることを示す。第3列は、偶数ワード命令レジスタ30に置かれた命令を示す。第4列は、奇数ワード命令レジスタ31に置かれた命令を示す。第5列は、偶数ワード命令レジスタ32に置かれた命令を示す。第6列は、奇数ワード命令レジスタ33に置かれた命令を示す。第7列は、ALU 36に操向すべき列3、列4、列5、または列6からの命令を示す。第7列の「X」値は、どの命令がALU 36に送られるかは重要でないことを示す。第8列は、ALU 37に操向すべき列3、列4、列5、または列6からの命令を示す。第9列は、FPU 35に送るべき列3、列4、列5、または列6からの命令を示す。
【0059】
前記の議論は、本発明の単なる典型的な方法および実施例を開示し説明したものである。当業者には理解されるように、本発明は、その趣旨または本質的な特性から逸脱することなく他の特定の形で実施することができる。従って、本発明の開示は、特許請求の範囲で述べた本発明の範囲の例示を目的とするものであり、制限を目的とするものではない。
【0060】
以下に、本発明の実施態様を列挙する。
【0061】
1.計算システムにおいて、命令を実行するために第1の整数論理演算ユニット、第2の整数論理演算ユニット、および浮動小数点演算ユニットに前記命令を操向する方法において、
(a)メイン・メモリから命令を取り出すステップと、
(b)命令を前復号して、命令をバンドリングできるかどうか、及びいかにバンドリングできるかを示す前復号ビットを生成するステップと、
(c)命令および前復号ビットを命令キャッシュに格納するステップと、
(d)前復号ビットと共に命令を命令キャッシュから取り出すステップと、
(e)各命令を実行するために、前復号ビットを使用して第1の整数論理演算ユニット、第2の整数論理演算ユニット、および浮動小数点演算ユニットのうちの1つに前記命令を操向するステップとを含むことを特徴とする方法。
【0062】
2.ステップ(b)において、前復号ビットが、2つの連続命令を実行するために前記命令をバンドリングできるかどうかを示すことを特徴とする前項1に記載の方法。
【0063】
3.ステップ(b)において、前復号ビットが、実行するためにバンドリングできる2つの連続命令が非整列命令であるか、それとも整列命令であるかを示すことを特徴とする前項2に記載の方法。
【0064】
4.ステップ(a)において、命令が、メイン・メモリからダブル・ワードで1度に2つずつ取り出されることを特徴とする前項1に記載の方法。
【0065】
5.ステップ(b)において、更に前復号ビットが、第1の整数論理演算ユニット、第2の整数論理演算ユニット、及び浮動小数点演算ユニットのうちのどれに特定の命令を操向すべきかも、バンドリングされる各命令対ごとに識別することを特徴とする前項1に記載の方法。
【0066】
6.コンピュータ・システムにおいて、
メイン・メモリと、
命令キャッシュと、
メイン・メモリおよび命令キャッシュに結合されたプロセッサとを備え、前記プロセッサは、
メイン・メモリから命令を取り出すためにメイン・メモリに結合されたメモリ・インタフェース手段と、
命令を前復号して、命令をバンドリングできるかどうか、及びいかにバンドリングできるかを示す前復号ビットを生成するために、メモリ・インタフェース手段に結合された前復号手段と、
命令および前復号ビットを命令キャッシュに格納し、前復号ビットと共に命令を命令キャッシュから取り出すために前復号手段、及び命令キャッシュに結合されたインタフェース手段と、
第1の論理演算ユニットと、
第2の論理演算ユニットと、
各命令を実行するために、命令を操向するための前復号ビットを使用して、第1の整数論理演算ユニット、及び第2の整数論理演算ユニットのうちの一方に前記命令を操向するために、インタフェース手段、第1の論理演算ユニット、及び第2の論理演算ユニットに結合された操向手段とを含むことを特徴とするコンピュータ・システム。
【0067】
7.前復号手段によって生成される前復号ビットが、2つの連続命令を実行するために前記命令をバンドリングできるかどうかを示すことを特徴とする前項6に記載のコンピュータ・システム。
【0068】
8.前復号手段によって生成される前復号ビットが、実行するためにバンドリングできる2つの連続命令が非整列命令であるか、又は整列命令であるかを示すことを特徴とする前項7に記載のコンピュータ・システム。
【0069】
9.メモリ・インタフェース手段が、メイン・メモリからダブルワードで一度に2つずつ命令を取り出すことを特徴とする前項8に記載のコンピュータ・システム。
【0070】
10.前復号手段によって生成される前復号ビットが、第1の整数論理演算ユニット、及び第2の整数論理演算ユニットのうちのどれに特定の命令を操向すべきかを、バンドリングされる各命令対ごとに識別することを特徴とする前項6に記載のコンピュータ・システム。
【0071】
11.前復号手段が、
現在復号中の命令対の偶数ワード命令を保持するための第1の前復号レジスタと、
現在復号中の命令対の奇数ワード命令を保持するための第2の前復号レジスタと、
以前に前復号された命令対の奇数ワード命令を保持するための第3の前復号レジスタとを含むことを特徴とする前項6に記載のコンピュータ・システム。
【0072】
12.現在の状態が、操向手段がどちらの前復号ビットを使用して命令を操向するかを決定する状態マシンを操向手段が含むことを特徴とする前項6に記載のコンピュータ・システム。
【0073】
13.プロセッサが更に、浮動小数点命令を浮動小数点プロセッサに操向する操向手段に結合された浮動小数点演算ユニットをも含むことを特徴とする前項6に記載のコンピュータ・システム。
【0074】
14.計算システムにおいて、第1の整数論理演算ユニット、及び第2の整数論理演算ユニットに命令を操向する方法において、
(a)メイン・メモリから命令を取り出すステップと、
(b)命令を前復号して、命令をバンドリングできるかどうか、及びいかにバンドリングできるかを示す前復号ビットを生成するステップと、
(c)命令および前復号ビットを命令キャッシュに格納するステップと、
(d)前復号ビットと共に命令を命令キャッシュから取り出すステップと、
(e)前復号ビットを使用して第1の整数論理演算ユニット、及び第2の整数論理演算ユニットのうちの一方に各命令を操向するステップとを含むことを特徴とする方法。
【0075】
15.ステップ(b)において、前復号ビットが、2つの連続命令を実行するために前記命令をバンドリングできるかどうかを示すことを特徴とする前項14に記載の方法。
【0076】
16.ステップ(b)において、前復号ビットが、実行するためにバンドリングできる2つの連続命令が非整列命令であるか、又は整列命令であるかを示すことを特徴とする前項14に記載の方法。
【0077】
17.ステップ(a)において、命令が、メイン・メモリからダブル・ワードで1度に2つずつ取り出されることを特徴とする前項14に記載の方法。
【0078】
18.ステップ(b)において、前復号ビットが更に、第1の整数論理演算ユニット、及び第2の整数論理演算ユニットのうちのどれに特定の命令を操向すべきかも、バンドリングされる各命令対ごとに識別することを特徴とする前項14に記載の方法。
【0079】
【発明の効果】
本発明は上述のように構成し、前復号手段は、メモリ・インタフェース手段に接続され、命令を前復号して前復号ビットを生成する。前復号ビットは、命令をバンドリングできるかどうか、及びいかにバンドリングできるかを示し、バンドリングされた各対ごとに、特定の命令が第1の整数論理演算ユニットと第2の整数論理演算ユニットのうちのどちらに操向されるかを識別する。前復号手段は、3つの前復号レジスタを含む。第1の前復号レジスタは、現在復号されている命令対の偶数ワード命令を保持する。第2の前復号レジスタは、現在復号されている命令対の奇数ワード命令を保持する。第3の前復号レジスタは、以前に前復号された命令対の奇数ワード命令を保持する。
【0080】
インタフェース手段は、前復号手段および命令キャッシュに接続される。インタフェース手段は、命令および前復号ビットを命令キャッシュに格納し、前復号ビットと共に命令を命令キャッシュから取り出す。操向手段は、インタフェース手段、第1の論理演算ユニット、及び第2の論理演算ユニットに接続される。操向手段は、各命令を実行するために前記命令を第1の整数論理演算ユニットと第2の整数論理演算ユニットのうちの一方に操向する。操向手段は、前復号ビットを使用して命令を操向する。好適実施例では、操向手段は状態マシンを含む。状態マシンの現在状態は、操向手段がどちらの前復号ビットを使用して命令を操向するかを決定する。
【0081】
本発明の好適実施例では、プロセッサは、操向手段に接続された浮動小数点演算ユニットも含む。操向手段は、浮動小数点命令を浮動小数点演算ユニットに操向する。また、前復号手段によって生成される前復号ビットは、2つの連続命令を実行するために前記命令をバンドリングできるかどうかも示す。更に、前復号手段によって生成される前復号ビットは、実行するためにバンドリングできる2つの連続命令が非整列命令であるか、それとも整列命令であるかを示す。
【0082】
以上の構成により、命令演算コードを最適に実行する柔軟性を制限することなく、命令の効率的なバンドリングおよび操向をスーパースカラ・プロセッサで実施することが可能となる。
【図面の簡単な説明】
【図1】本発明の好適実施例による、命令キャッシュ、及びデータキャッシュを有するコンピュータ・システムの簡略ブロック図を示す。
【図2】本発明の好適実施例による、図1に示すプロセッサの簡略ブロック図を示す。
【図3】本発明の好適実施例による、図1に示すプロセッサ内の命令の前復号、及び操向に関連する論理ブロックの簡略ブロック図を示す。
【図4】本発明の好適実施例による、図3に示す状態マシンに対する状態図を示す。
【符号の説明】
10 バス
11 メモリ
12 プロセッサ
13 命令キャッシュ
14 データ・キャッシュ
21 変換索引バッファ(TLB)
22 論理演算ユニット(ALU)
23 補助キャッシュ
24 命令キャッシュ・インターフェース
25 データ・キャッシュ・インターフェース
26 システム・バス・インタフェース
30 受信偶数ワード命令レジスタ
31 受信奇数ワード命令レジスタ
32 保存偶数ワード命令レジスタ
33 保存奇数ワード命令レジスタ
34 操向論理ユニット
35 浮動小数点演算ユニット(FPU)
36,37 整数論理演算ユニット(INT ALU)
40 偶数ワード命令レジスタ
41,43 奇数ワード命令レジスタ
44 前復号論理ユニット
45 二重状態マシン
Claims (9)
- コンピュータ・システムにおいて、
メイン・メモリと、
命令キャッシュと、
前記メイン・メモリおよび前記命令キャッシュに結合されたプロセッサ
とを備え、
前記プロセッサが、
前記メイン・メモリから命令を取り出すために、前記メイン・メモリに結合されたメモリ・インタフェース手段と、
前記命令を前復号して、前復号ビットを生成するために、前記メモリ・インタフェース手段に結合された前復号手段であって、前記前復号ビットは、前記命令をバンドリングすることができるか否か、及び、どのようにして前記命令をバンドリングすることができるかを示し、前記前復号ビットは、さらに、実行のためにバンドリングすることが可能な2つの連続する命令が整列しているか、非整列であるかを示すことからなる、前復号手段と、
前記命令および前記前復号ビットを前記命令キャッシュに格納し、及び、前記前復号ビットと共に前記命令を前記命令キャッシュから取り出すために、前記前復号手段及び前記命令キャッシュに結合されたインタフェース手段と、
第1の論理演算ユニットと、
第2の論理演算ユニットと、
各命令を実行するために、各命令を、前記第1の論理演算ユニットと前記第2の論理演算ユニットのうちの一方に操向するべく、前記インタフェース手段と前記第1の論理演算ユニットと前記第2の論理演算ユニットとに結合された操向手段であって、前記前復号ビットを使用して、それらの各命令を操向する操向手段
を備えることからなる、コンピュータ・システム。 - 前記前復号手段によって生成される前復号ビットは、バンドリングされた命令の対の各々について、ある特定の命令が、前記第1の論理演算ユニットと前記第2の論理演算ユニットのいずれに操向されるかを識別する、請求項1のコンピュータ・システム。
- 前記前復号手段が、
現在復号されつつある命令対の偶数ワード命令を保持するための第1の前復号レジスタと、
現在復号されつつある命令対の奇数ワード命令を保持するための第2の前復号レジスタと、
以前に前復号された命令対の奇数ワード命令を保持するための第3の前復号レジスタ
を備えることからなる、請求項1または2のコンピュータ・システム。 - 前記操向手段が状態マシンを備え、該状態マシンは、命令がバンドリングされるか否かによりその状態を遷移させ、該状態マシンの現在の状態により、前記操向手段がどの前復号ビットを使用して命令を操向するかが決定されることからなる、請求項1乃至3のいずれかのコンピュータ・システム。
- 前記プロセッサが更に、前記操向手段に結合された浮動小数点演算ユニットを備え、前記操向手段が、浮動小数点命令を前記浮動小数点演算ユニットに操向するよう動作可能であることからなる、請求項2乃至4のいずれかのコンピュータ・システム。
- コンピュータ・システムにおいて、第1の論理演算ユニット、第2の論理演算ユニット、及び浮動小数点演算ユニットに、実行のために命令を操向する方法において、
(a)メイン・メモリから命令を取り出すステップと、
(b)前記命令を前復号して、前記命令をバンドリングできるかどうか、及び、どのようにしてバンドリングできるかを示す前復号ビットを生成するステップであって、前記前復号ビットは、実行のためにバンドリングすることが可能な2つの連続する命令が整列しているか、非整列であるかを示すことからなる、ステップと、
(c)前記命令および前復号ビットを命令キャッシュに格納するステップと、
(d)前記前復号ビットと共に前記命令を前記命令キャッシュから取り出すステップと、
(e)前記前復号ビットを使用して、前記第1の論理演算ユニットと前記第2の論理演算ユニットと前記浮動小数点演算ユニットのうちの1つに、実行のために前記命令の各々を操向するステップ
を含む、方法。 - 前記ステップ(b)において、前記前復号ビットが、さらに、2つの連続する命令を実行のためにバンドリングできるかどうかを示すことからなる、請求項6の方法。
- 前記ステップ(b)において、前記前復号ビットが、さらに、前記第1の論理演算ユニットと前記第2の論理演算ユニットと前記浮動小数点演算ユニットのうちのどれにある特定の命令を操向するかを、バンドリングされた命令の対の各々について識別する、請求項6または7の方法。
- 前記ステップ(a)において、前記メイン・メモリからダブルワードで一度に2つの命令が取り出される、請求項6乃至8のいずれかの方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US194899 | 1994-02-14 | ||
US08/194,899 US5974534A (en) | 1994-02-14 | 1994-02-14 | Predecoding and steering mechanism for instructions in a superscalar processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07253887A JPH07253887A (ja) | 1995-10-03 |
JP3670043B2 true JP3670043B2 (ja) | 2005-07-13 |
Family
ID=22719320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP01353395A Expired - Fee Related JP3670043B2 (ja) | 1994-02-14 | 1995-01-31 | スーパースカラ・プロセッサにおける命令の前復号および操向機構 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5974534A (ja) |
EP (1) | EP0667571B1 (ja) |
JP (1) | JP3670043B2 (ja) |
DE (1) | DE69510966T2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829031A (en) * | 1996-02-23 | 1998-10-27 | Advanced Micro Devices, Inc. | Microprocessor configured to detect a group of instructions and to perform a specific function upon detection |
EP0855648A3 (en) * | 1997-01-24 | 1999-12-22 | Texas Instruments Inc. | Data processing with parallel or sequential execution of program instructions |
GB2332075B (en) * | 1997-12-06 | 2002-08-07 | Mitel Corp | Optimized instruction storage and distribution for parallel processors architectures |
EP1050810A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | A computer system comprising multiple functional units |
EP1102165A1 (en) * | 1999-11-15 | 2001-05-23 | Texas Instruments Incorporated | Microprocessor with execution packet spanning two or more fetch packets |
US7039790B1 (en) | 1999-11-15 | 2006-05-02 | Texas Instruments Incorporated | Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit |
EP1367485B1 (en) * | 2002-05-31 | 2012-10-31 | STMicroelectronics Limited | Pipelined processing |
AT500858B8 (de) * | 2004-08-17 | 2007-02-15 | Martin Schoeberl | Instruction cache für echtzeitsysteme |
US9201801B2 (en) * | 2010-09-15 | 2015-12-01 | International Business Machines Corporation | Computing device with asynchronous auxiliary execution unit |
CN102495726B (zh) | 2011-11-15 | 2015-05-20 | 无锡德思普科技有限公司 | 机会多线程方法及处理器 |
CN103187955B (zh) * | 2011-12-31 | 2016-08-03 | 意法半导体研发(上海)有限公司 | 共栅共源驱动电路 |
US9766895B2 (en) * | 2014-02-06 | 2017-09-19 | Optimum Semiconductor Technologies, Inc. | Opportunity multithreading in a multithreaded processor with instruction chaining capability |
US9558000B2 (en) * | 2014-02-06 | 2017-01-31 | Optimum Semiconductor Technologies, Inc. | Multithreading using an ordered list of hardware contexts |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4295193A (en) * | 1979-06-29 | 1981-10-13 | International Business Machines Corporation | Machine for multiple instruction execution |
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
US5129067A (en) * | 1989-06-06 | 1992-07-07 | Advanced Micro Devices, Inc. | Multiple instruction decoder for minimizing register port requirements |
JP2725450B2 (ja) * | 1989-08-28 | 1998-03-11 | 日本電気株式会社 | マイクロプロセッサ |
JP2818249B2 (ja) * | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
DE69130588T2 (de) * | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
JPH0476626A (ja) * | 1990-07-13 | 1992-03-11 | Toshiba Corp | マイクロコンピュータ |
US5337415A (en) * | 1992-12-04 | 1994-08-09 | Hewlett-Packard Company | Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency |
-
1994
- 1994-02-14 US US08/194,899 patent/US5974534A/en not_active Expired - Lifetime
-
1995
- 1995-01-31 JP JP01353395A patent/JP3670043B2/ja not_active Expired - Fee Related
- 1995-02-03 DE DE69510966T patent/DE69510966T2/de not_active Expired - Lifetime
- 1995-02-03 EP EP95300682A patent/EP0667571B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5974534A (en) | 1999-10-26 |
DE69510966T2 (de) | 1999-12-09 |
EP0667571B1 (en) | 1999-07-28 |
EP0667571A3 (en) | 1995-12-13 |
JPH07253887A (ja) | 1995-10-03 |
DE69510966D1 (de) | 1999-09-02 |
EP0667571A2 (en) | 1995-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0651323B1 (en) | Microprocessors load/store functional units and data caches | |
EP2524303B1 (en) | Mapping between registers used by multiple instruction sets | |
USH1291H (en) | Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions | |
EP0782071B1 (en) | Data processor | |
US7739480B2 (en) | Method and apparatus for obtaining a scalar value directly from a vector register | |
US5471628A (en) | Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode | |
US6701424B1 (en) | Method and apparatus for efficient loading and storing of vectors | |
US5790821A (en) | Control bit vector storage for storing control vectors corresponding to instruction operations in a microprocessor | |
EP0380849B1 (en) | Method and data processing unit for preprocessing implied specifiers in a pipelined processor | |
EP0380847B1 (en) | Method and data processing unit for decoding multiple specifiers in a variable length instruction architecture | |
US5675758A (en) | Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations | |
US5881307A (en) | Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor | |
EP0381469A2 (en) | Method and data processing unit for pipeline processing of register and register modifying specifiers within the same instruction | |
JP3670043B2 (ja) | スーパースカラ・プロセッサにおける命令の前復号および操向機構 | |
JPH0496825A (ja) | データ・プロセッサ | |
EP1261914B1 (en) | Processing architecture having an array bounds check capability | |
EP1680735B1 (en) | Apparatus and method that accomodate multiple instruction sets and multiple decode modes | |
EP1367485B1 (en) | Pipelined processing | |
CN111984313A (zh) | 矢量位转置 | |
EP1367484B1 (en) | Instruction encoding | |
EP1235139B1 (en) | System and method for supporting precise exceptions in a data processor having a clustered architecture | |
Horst et al. | Multiple instruction issue in the nonstop cyclone system | |
Katz et al. | PIPE: A HIGH PERFORMANCE VLSI PROCESSOR IMPLEMENTATION GL Craig JR Goodman | |
JPH01147722A (ja) | 情報処理装置のパイプライン処理方式 | |
IE901518A1 (en) | Pipeline processing of register and register modifying¹specifiers within the same instruction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040924 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041012 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050107 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050113 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050311 |
|
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: 20050412 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050413 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090422 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090422 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100422 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100422 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110422 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110422 Year of fee payment: 6 |
|
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: 20110422 Year of fee payment: 6 |
|
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: 20110422 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120422 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120422 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130422 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130422 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140422 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |