JPH11272464A - 投機的境界不整列ロ―ド操作方法及び装置 - Google Patents
投機的境界不整列ロ―ド操作方法及び装置Info
- Publication number
- JPH11272464A JPH11272464A JP11025970A JP2597099A JPH11272464A JP H11272464 A JPH11272464 A JP H11272464A JP 11025970 A JP11025970 A JP 11025970A JP 2597099 A JP2597099 A JP 2597099A JP H11272464 A JPH11272464 A JP H11272464A
- Authority
- JP
- Japan
- Prior art keywords
- data
- access
- instruction
- cache
- misaligned
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
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)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【課題】 本発明の一態様は、データ・キャッシュとレ
ジスタ・ファイルとを有するスーパースカラ・プロセッ
サにおいてロード命令を処理する方法に関する。 【解決手段】 一実施形態では、この方法は、キャッシ
ュ内で不整列であるデータのブロックにアクセスする不
整列ロード命令をディスパッチするステップと、整列命
令のディスパッチを続けながら、前記不整列ロード命令
に応答して前記キャッシュへの先頭アクセスと最終アク
セスを生成するステップと、前記先頭アクセスから取り
出されたデータを前記最終アクセスからのデータが入手
可能になるまで記憶するステップと、前記先頭アクセス
及び最終アクセスからのデータを前記ロード命令が必要
とする順序に再組立てするステップと、前記再組立てさ
れたデータを前記レジスタ・ファイルに記憶するステッ
プとを含む。
ジスタ・ファイルとを有するスーパースカラ・プロセッ
サにおいてロード命令を処理する方法に関する。 【解決手段】 一実施形態では、この方法は、キャッシ
ュ内で不整列であるデータのブロックにアクセスする不
整列ロード命令をディスパッチするステップと、整列命
令のディスパッチを続けながら、前記不整列ロード命令
に応答して前記キャッシュへの先頭アクセスと最終アク
セスを生成するステップと、前記先頭アクセスから取り
出されたデータを前記最終アクセスからのデータが入手
可能になるまで記憶するステップと、前記先頭アクセス
及び最終アクセスからのデータを前記ロード命令が必要
とする順序に再組立てするステップと、前記再組立てさ
れたデータを前記レジスタ・ファイルに記憶するステッ
プとを含む。
Description
【0001】
【発明の属する技術分野】本発明は、一般にはコンピュ
ータ・プロセッサの分野に関し、より詳細には、単一の
マイクロプロセッサ・チップ上に集積されたプロセッサ
に関する。さらに詳細には、本発明は境界不整列メモリ
・データの投機的アクセスに関する。
ータ・プロセッサの分野に関し、より詳細には、単一の
マイクロプロセッサ・チップ上に集積されたプロセッサ
に関する。さらに詳細には、本発明は境界不整列メモリ
・データの投機的アクセスに関する。
【0002】
【従来の技術】マイクロプロセッサの一層の高速化は、
現在のプロセッサ設計の主要な目標の1つである。プロ
セッサのパフォーマンスを向上させるために多くの異な
る技法が採用されてきた。プロセッサ・パフォーマンス
を大幅に向上させる1つの技法は、キャッシュ・メモリ
の使用である。本明細書では、キャッシュ・メモリと
は、マイクロプロセッサ自体の上に形成されており、そ
の結果、マイクロプロセッサ・チップから離れた位置に
あるRAMや磁気ディスクなどの他のタイプのメモリよ
りもアクセス時間がはるかに高速な1組の記憶場所を指
す。頻繁に使用されるデータのコピーをキャッシュに記
憶することによって、プロセッサはそのデータが必要な
ときにキャッシュにアクセスすることができ、その情報
を入手するために「オフ・チップ(チップ外)」まで行
く必要がなく、その結果、プロセッサのパフォーマンス
が大幅に強化される。
現在のプロセッサ設計の主要な目標の1つである。プロ
セッサのパフォーマンスを向上させるために多くの異な
る技法が採用されてきた。プロセッサ・パフォーマンス
を大幅に向上させる1つの技法は、キャッシュ・メモリ
の使用である。本明細書では、キャッシュ・メモリと
は、マイクロプロセッサ自体の上に形成されており、そ
の結果、マイクロプロセッサ・チップから離れた位置に
あるRAMや磁気ディスクなどの他のタイプのメモリよ
りもアクセス時間がはるかに高速な1組の記憶場所を指
す。頻繁に使用されるデータのコピーをキャッシュに記
憶することによって、プロセッサはそのデータが必要な
ときにキャッシュにアクセスすることができ、その情報
を入手するために「オフ・チップ(チップ外)」まで行
く必要がなく、その結果、プロセッサのパフォーマンス
が大幅に強化される。
【0003】しかし、キャッシュ・メモリには特定の問
題が付随する。1つの問題は、キャッシュ・メモリ内の
データがキャッシュ境界に対して不整列になる場合に起
こる。多くの新たなソフトウェア・コンパイラがこの不
整列の問題を回避すべく努めているにもかかわらず、F
ORTRANプログラミング言語においてよく知られた
COMMON文など、特定のタイプの操作は、キャッシ
ュ境界不整列を頻繁に生じさせるため、プロセッサは完
全なソフトウェア機能を維持するために境界不整列キャ
ッシュ・データを扱う能力を備えなければならない。キ
ャッシュ・メモリにおける不整列データの問題につい
て、図1及び図2を参照しながら詳述する。
題が付随する。1つの問題は、キャッシュ・メモリ内の
データがキャッシュ境界に対して不整列になる場合に起
こる。多くの新たなソフトウェア・コンパイラがこの不
整列の問題を回避すべく努めているにもかかわらず、F
ORTRANプログラミング言語においてよく知られた
COMMON文など、特定のタイプの操作は、キャッシ
ュ境界不整列を頻繁に生じさせるため、プロセッサは完
全なソフトウェア機能を維持するために境界不整列キャ
ッシュ・データを扱う能力を備えなければならない。キ
ャッシュ・メモリにおける不整列データの問題につい
て、図1及び図2を参照しながら詳述する。
【0004】図1は、IBMコーポレイションから入手
可能なPOWER PCファミリのプロセッサで使用さ
れているキャッシュ・メモリなど、従来のキャッシュ・
メモリの中身を示す図である。図のように、キャッシュ
100は、いくつかの「キャッシュ・ライン」を含み、
各キャッシュ・ラインは128バイト幅である。しか
し、任意の1回のアクセス中にキャッシュから読み取る
ことができるのは最大8バイトである。本明細書では、
「ワード」という用語は4バイトのデータ・ブロックを
指し、「ダブル・ワード」という用語は8バイトのデー
タ・ブロックを指す。図1に、キャッシュ・ライン0内
のダブル・ワードを示す。最初のワードはxxabであ
り、2番目のワードはcdxxである。ただし、a、
b、c、及びdは所望のバイトのデータであり、「x」
は不要なバイトのデータを表す。従来、プロセッサでは
プロセッサの実行ユニットとキャッシュ・メモリとの間
でnビット幅の転送を行うことができるように設計され
ている。例示のために、図1に示すキャッシュにアクセ
スするプロセッサで32ビット、すなわち1ワード幅の
データ転送が可能であるものと仮定する。単一のロード
命令によって、キャッシュ100の任意のキャッシュ・
ライン中の任意のワードを取り出すことができる。同様
に、単一のストア命令によって任意のキャッシュ・ライ
ンに任意のワードを書き込むことができる。プロセッサ
がバイトa、b、c、及びdを含むワードを必要とする
場合、必要なデータはすべてキャッシュ・ラインの単一
のダブル・ワードに入っているため、キャッシュから4
バイトのデータをすべて入手するのに単一のロード命令
だけで済むことが上記から明らかなはずである。
可能なPOWER PCファミリのプロセッサで使用さ
れているキャッシュ・メモリなど、従来のキャッシュ・
メモリの中身を示す図である。図のように、キャッシュ
100は、いくつかの「キャッシュ・ライン」を含み、
各キャッシュ・ラインは128バイト幅である。しか
し、任意の1回のアクセス中にキャッシュから読み取る
ことができるのは最大8バイトである。本明細書では、
「ワード」という用語は4バイトのデータ・ブロックを
指し、「ダブル・ワード」という用語は8バイトのデー
タ・ブロックを指す。図1に、キャッシュ・ライン0内
のダブル・ワードを示す。最初のワードはxxabであ
り、2番目のワードはcdxxである。ただし、a、
b、c、及びdは所望のバイトのデータであり、「x」
は不要なバイトのデータを表す。従来、プロセッサでは
プロセッサの実行ユニットとキャッシュ・メモリとの間
でnビット幅の転送を行うことができるように設計され
ている。例示のために、図1に示すキャッシュにアクセ
スするプロセッサで32ビット、すなわち1ワード幅の
データ転送が可能であるものと仮定する。単一のロード
命令によって、キャッシュ100の任意のキャッシュ・
ライン中の任意のワードを取り出すことができる。同様
に、単一のストア命令によって任意のキャッシュ・ライ
ンに任意のワードを書き込むことができる。プロセッサ
がバイトa、b、c、及びdを含むワードを必要とする
場合、必要なデータはすべてキャッシュ・ラインの単一
のダブル・ワードに入っているため、キャッシュから4
バイトのデータをすべて入手するのに単一のロード命令
だけで済むことが上記から明らかなはずである。
【0005】次に図2を参照すると、同じデータがキャ
ッシュ100に記憶されている様子が図示されている。
しかし、今度はデータがキャッシュ境界を基準にして不
整列になっている。具体的には、必要なワードのバイト
a、b、及びcはキャッシュ・ライン0に記憶されてい
るが、バイトdはキャッシュ・ライン1に記憶されてい
ることがわかる。今度は、プロセッサは4バイトのデー
タをすべて入手するためにはキャッシュに2回アクセス
しなければならない。さらに、データはキャッシュから
2回の別々のアクセスで戻されるため、プロセッサのア
ーキテクチャ・レジスタの1つに書き込む前にデータを
組み立て直さなければならない。
ッシュ100に記憶されている様子が図示されている。
しかし、今度はデータがキャッシュ境界を基準にして不
整列になっている。具体的には、必要なワードのバイト
a、b、及びcはキャッシュ・ライン0に記憶されてい
るが、バイトdはキャッシュ・ライン1に記憶されてい
ることがわかる。今度は、プロセッサは4バイトのデー
タをすべて入手するためにはキャッシュに2回アクセス
しなければならない。さらに、データはキャッシュから
2回の別々のアクセスで戻されるため、プロセッサのア
ーキテクチャ・レジスタの1つに書き込む前にデータを
組み立て直さなければならない。
【0006】図3は、キャッシュ・アクセスから戻され
た不整列データを再組立てする従来の回路を示す略図で
ある。回路300は、一般にはロード・フォーマッタと
呼ばれる。フォーマッタは、回路300の他の構成要素
を動作させるための必要な制御信号を供給するフォーマ
ッタ制御論理回路302を含む。フォーマッタ300に
は、ローテータ304と、マージ・ラッチ306と、マ
ルチプレクサ308も含まれている。ローテータ304
は、キャッシュからデータを受け取り、フォーマット制
御論理回路302から受け取った信号に応じて、データ
をローテータ304の任意の所望の8ビット記憶場所に
桁送りすることができる8バイト・ブロックに構成す
る。この例の場合、バイトa、b、及びcはローテータ
の左端の位置まで循環桁送りしてからマージ・ラッチ3
06に渡され、マージ・ラッチ306はプロセッサがキ
ャッシュ・ライン1への2回目のアクセスを行う間、そ
のデータを保持する。プロセッサがキャッシュ・ライン
1にアクセスすると、プロセッサはバイトdを取り出
し、それをローテータ304に渡し、ローテータ304
はそれを左から4番目のバイト位置まで循環桁送りす
る。その後、マージ・ラッチ306からバイトa、b、
及びcと共にマルチプレクサ308に直接渡される。こ
のようにして、データは適切に再組立てされてから、プ
ロセッサ上のアーキテクチャ・レジスタに渡される。
た不整列データを再組立てする従来の回路を示す略図で
ある。回路300は、一般にはロード・フォーマッタと
呼ばれる。フォーマッタは、回路300の他の構成要素
を動作させるための必要な制御信号を供給するフォーマ
ッタ制御論理回路302を含む。フォーマッタ300に
は、ローテータ304と、マージ・ラッチ306と、マ
ルチプレクサ308も含まれている。ローテータ304
は、キャッシュからデータを受け取り、フォーマット制
御論理回路302から受け取った信号に応じて、データ
をローテータ304の任意の所望の8ビット記憶場所に
桁送りすることができる8バイト・ブロックに構成す
る。この例の場合、バイトa、b、及びcはローテータ
の左端の位置まで循環桁送りしてからマージ・ラッチ3
06に渡され、マージ・ラッチ306はプロセッサがキ
ャッシュ・ライン1への2回目のアクセスを行う間、そ
のデータを保持する。プロセッサがキャッシュ・ライン
1にアクセスすると、プロセッサはバイトdを取り出
し、それをローテータ304に渡し、ローテータ304
はそれを左から4番目のバイト位置まで循環桁送りす
る。その後、マージ・ラッチ306からバイトa、b、
及びcと共にマルチプレクサ308に直接渡される。こ
のようにして、データは適切に再組立てされてから、プ
ロセッサ上のアーキテクチャ・レジスタに渡される。
【0007】スーパースカラ・プロセッサは、命令を非
プログラム順序(アウト・オブ・オーダー)で実行する
ことができるため、従来のスカラ・プロセッサよりすぐ
れたパフォーマンス上の利点が得られる。この方法によ
り、実行速度の遅い命令を保留にしている間にプロセッ
サ上の他の資源を使用して実行することができる後続命
令が、実行の遅い方の命令によって停止することがなく
なる。
プログラム順序(アウト・オブ・オーダー)で実行する
ことができるため、従来のスカラ・プロセッサよりすぐ
れたパフォーマンス上の利点が得られる。この方法によ
り、実行速度の遅い命令を保留にしている間にプロセッ
サ上の他の資源を使用して実行することができる後続命
令が、実行の遅い方の命令によって停止することがなく
なる。
【0008】
【発明が解決しようとする課題】しかし、キャッシュ・
メモリへの不整列アクセスは、キャッシュからデータが
順序外れ(アウト・オブ・オーダー)で返される可能性
があるため、スーパースカラ処理には適さない。具体的
には、再び上記の例を参照すると、何らかの理由で2番
目のロード命令が最初のロード命令より前に完了した場
合、バイトdを含むデータが先にフォーマッタに入り、
その後でバイトa、b、及びcを含むデータが入ること
になる。この場合、データを再組立てするときに、バイ
トの順序が不正になる。この問題の1つの解決策は、不
整列キャッシュ・アクセス命令を投機的に実行できない
ようにすることである。言い換えると、スーパースカラ
・プロセッサが、キャッシュへの不整列アクセスが行わ
れようとしていることを認識すると、スーパースカラ・
プロセッサは、その不整列キャッシュ・アクセス命令の
後に続く命令の発行を中止し、そのキャッシュ・アクセ
ス命令の前に発行された命令が完了するのを待つ間停止
する。完了すると、2つのキャッシュ・アクセス命令を
プログラム順(イン・オーダー)に処理する。このよう
にして、不整列キャッシュ・アクセスがプログラム順
(イン・オーダー)に完了するように保証される。これ
によって上記の問題は解決されるが、プロセッサのパフ
ォーマンスも低下する。したがって、本発明の1つの目
的は、不整列キャッシュ・アクセス命令の投機的実行を
可能にするスーパースカラ・プロセッサを提供すること
である。本発明の他の目的及び利点は、以下の開示に鑑
みれば明らかになろう。
メモリへの不整列アクセスは、キャッシュからデータが
順序外れ(アウト・オブ・オーダー)で返される可能性
があるため、スーパースカラ処理には適さない。具体的
には、再び上記の例を参照すると、何らかの理由で2番
目のロード命令が最初のロード命令より前に完了した場
合、バイトdを含むデータが先にフォーマッタに入り、
その後でバイトa、b、及びcを含むデータが入ること
になる。この場合、データを再組立てするときに、バイ
トの順序が不正になる。この問題の1つの解決策は、不
整列キャッシュ・アクセス命令を投機的に実行できない
ようにすることである。言い換えると、スーパースカラ
・プロセッサが、キャッシュへの不整列アクセスが行わ
れようとしていることを認識すると、スーパースカラ・
プロセッサは、その不整列キャッシュ・アクセス命令の
後に続く命令の発行を中止し、そのキャッシュ・アクセ
ス命令の前に発行された命令が完了するのを待つ間停止
する。完了すると、2つのキャッシュ・アクセス命令を
プログラム順(イン・オーダー)に処理する。このよう
にして、不整列キャッシュ・アクセスがプログラム順
(イン・オーダー)に完了するように保証される。これ
によって上記の問題は解決されるが、プロセッサのパフ
ォーマンスも低下する。したがって、本発明の1つの目
的は、不整列キャッシュ・アクセス命令の投機的実行を
可能にするスーパースカラ・プロセッサを提供すること
である。本発明の他の目的及び利点は、以下の開示に鑑
みれば明らかになろう。
【0009】
【課題を解決するための手段】本発明の一実施形態で
は、ロードやストアなどのキャッシュ・アクセス命令に
は、各命令に、先頭、最終、または非不整列命令として
標識を付けるタグが付加される。ディスパッチ時に、命
令が不整列キャッシュ・アクセスであることが認識され
た場合、その命令にロード/ストア・ユニット制御論理
回路によって「先頭」のタグが付けられる。それと同時
に、ロード/ストア・ユニット論理回路によって操作さ
れる不整列/ビジー・ラッチにビットが設定される。必
要なデータ・アクセスのために2番目のキャッシュ・ア
クセス命令がディスパッチされると、その命令には「最
終」としてタグが付けられる。「最終」キャッシュ・ア
クセス命令がディスパッチされた後は、「先頭」と「最
終」の命令が完了するまで不整列キャッシュ・アクセス
命令はそれ以上ディスパッチされない。しかし、他の整
列キャッシュ・アクセス命令は実行することができ、完
了できる。このようにして、プロセッサは先頭と最終の
キャッシュ・アクセス命令の保留中でも命令の投機的実
行を行うことができる。
は、ロードやストアなどのキャッシュ・アクセス命令に
は、各命令に、先頭、最終、または非不整列命令として
標識を付けるタグが付加される。ディスパッチ時に、命
令が不整列キャッシュ・アクセスであることが認識され
た場合、その命令にロード/ストア・ユニット制御論理
回路によって「先頭」のタグが付けられる。それと同時
に、ロード/ストア・ユニット論理回路によって操作さ
れる不整列/ビジー・ラッチにビットが設定される。必
要なデータ・アクセスのために2番目のキャッシュ・ア
クセス命令がディスパッチされると、その命令には「最
終」としてタグが付けられる。「最終」キャッシュ・ア
クセス命令がディスパッチされた後は、「先頭」と「最
終」の命令が完了するまで不整列キャッシュ・アクセス
命令はそれ以上ディスパッチされない。しかし、他の整
列キャッシュ・アクセス命令は実行することができ、完
了できる。このようにして、プロセッサは先頭と最終の
キャッシュ・アクセス命令の保留中でも命令の投機的実
行を行うことができる。
【0010】整列命令は、マージ・ラッチを使用する必
要がなく、したがって先頭及び最終命令の処理を妨害せ
ずに、フォーマッタを通ってプロセッサ・レジスタに進
むことができる。先頭命令が終了すると、その命令はフ
ォーマッタに渡され、フォーマッタはデータをマージ・
ラッチに記憶する。任意の数の整列キャッシュ・アクセ
スがフォーマッタを通って進むことができると同時に、
先頭のアクセスからのデータがマージ・ラッチに記憶さ
れる。「最終」命令が終了してフォーマッタに渡される
と、ロード/ストア・ユニット制御論理回路はそのデー
タをマージ・ラッチ内に記憶されているデータとマージ
すべきであることを認識する。マージが行われ、次にそ
の再組立てされたデータがプロセッサ上のレジスタに渡
される。その後、不整列/ビジー・ラッチがクリアされ
て、後続の不整列キャッシュ・アクセス命令のディスパ
ッチが可能になる。所与の時点でプロセッサ内で保留に
することができる不整列キャッシュ・アクセス命令は1
つだけであるため、マージ・ラッチが改変される危険は
ない。先頭キャッシュ・アクセス命令の前に最終キャッ
シュ・アクセス命令が終了してフォーマッタに渡された
場合、そのデータは単純に廃棄される。本発明の特定の
一形態では、先頭命令の前に最終命令が終了する場合、
ミスキュー・テーブルを使用して最終命令のデータを保
持する。
要がなく、したがって先頭及び最終命令の処理を妨害せ
ずに、フォーマッタを通ってプロセッサ・レジスタに進
むことができる。先頭命令が終了すると、その命令はフ
ォーマッタに渡され、フォーマッタはデータをマージ・
ラッチに記憶する。任意の数の整列キャッシュ・アクセ
スがフォーマッタを通って進むことができると同時に、
先頭のアクセスからのデータがマージ・ラッチに記憶さ
れる。「最終」命令が終了してフォーマッタに渡される
と、ロード/ストア・ユニット制御論理回路はそのデー
タをマージ・ラッチ内に記憶されているデータとマージ
すべきであることを認識する。マージが行われ、次にそ
の再組立てされたデータがプロセッサ上のレジスタに渡
される。その後、不整列/ビジー・ラッチがクリアされ
て、後続の不整列キャッシュ・アクセス命令のディスパ
ッチが可能になる。所与の時点でプロセッサ内で保留に
することができる不整列キャッシュ・アクセス命令は1
つだけであるため、マージ・ラッチが改変される危険は
ない。先頭キャッシュ・アクセス命令の前に最終キャッ
シュ・アクセス命令が終了してフォーマッタに渡された
場合、そのデータは単純に廃棄される。本発明の特定の
一形態では、先頭命令の前に最終命令が終了する場合、
ミスキュー・テーブルを使用して最終命令のデータを保
持する。
【0011】
【発明の実施の形態】図4は、本発明により情報を処理
するプロセッサ・システム10を示すブロック図であ
る。好ましい実施形態では、プロセッサ10は米国テキ
サス州オースチンのIBMコーポレイションのPowe
rPCプロセッサなどの単一集積回路スーパースカラ・
マイクロプロセッサである。したがって、後で詳述する
ように、プロセッサ10は様々なユニット、レジスタ、
バッファ、メモリ、及びその他の部分を含み、それらは
すべて集積回路によって形成されている。また、好まし
い実施形態では、プロセッサ10は縮小命令セット・コ
ンピューティング(「RISC」)技法に従って動作す
る。図1に示すように、システム・バス11がプロセッ
サ10のバス・インタフェース・ユニット(「BI
U」)12に接続されている。BIU12は、プロセッ
サ10とシステム・バス11との間の情報の伝送を制御
する。
するプロセッサ・システム10を示すブロック図であ
る。好ましい実施形態では、プロセッサ10は米国テキ
サス州オースチンのIBMコーポレイションのPowe
rPCプロセッサなどの単一集積回路スーパースカラ・
マイクロプロセッサである。したがって、後で詳述する
ように、プロセッサ10は様々なユニット、レジスタ、
バッファ、メモリ、及びその他の部分を含み、それらは
すべて集積回路によって形成されている。また、好まし
い実施形態では、プロセッサ10は縮小命令セット・コ
ンピューティング(「RISC」)技法に従って動作す
る。図1に示すように、システム・バス11がプロセッ
サ10のバス・インタフェース・ユニット(「BI
U」)12に接続されている。BIU12は、プロセッ
サ10とシステム・バス11との間の情報の伝送を制御
する。
【0012】BIU12は、プロセッサ10の命令キャ
ッシュ14とデータ・キャッシュ16とに接続されてい
る。命令キャッシュ14は、シーケンサ・ユニット18
に命令を出力する。シーケンサ・ユニット18は、命令
キャッシュ14からのこのような命令に応答して、プロ
セッサ10の他の実行回路に命令を選択的に出力する。
ッシュ14とデータ・キャッシュ16とに接続されてい
る。命令キャッシュ14は、シーケンサ・ユニット18
に命令を出力する。シーケンサ・ユニット18は、命令
キャッシュ14からのこのような命令に応答して、プロ
セッサ10の他の実行回路に命令を選択的に出力する。
【0013】好ましい実施形態では、プロセッサ10の
実行回路は、ディスパッチ・ユニット46と完了ユニッ
ト48の実行ユニットを含むシーケンサ・ユニット18
に加えて、複数の実行ユニット、すなわち分岐ユニット
20と、固定小数点ユニットA(「FXUA」)22
と、固定小数点ユニットB(「FXUB」)24と、複
素固定小数点ユニット(「CFXU」)26と、ロード
/ストア・ユニット(「LSU」)28と、浮動小数点
ユニット(「FPU」)30とを含む。FXUA22、
FXUB24、CFXU26、及びLSU28は、それ
ぞれのソース・オペランド情報を汎用アーキテクチャ・
レジスタ(「GPR」)32及び固定小数点リネーム・
バッファ34から入力する。さらに、FXUA22とF
XUB24は、キャリー・ビット(「CA」)レジスタ
42から「キャリー・ビット」を入力する。FXUA2
2、FXUB24、CFXU26、及びLSU28は、
それぞれの演算の結果(目的オペランド情報)を出力し
て、固定小数点リネーム・バッファ34に記憶する。ま
た、CFXU26は、特殊目的レジスタ(「SPR」)
40との間でソース・オペランド情報と目的オペランド
情報を入出力する。
実行回路は、ディスパッチ・ユニット46と完了ユニッ
ト48の実行ユニットを含むシーケンサ・ユニット18
に加えて、複数の実行ユニット、すなわち分岐ユニット
20と、固定小数点ユニットA(「FXUA」)22
と、固定小数点ユニットB(「FXUB」)24と、複
素固定小数点ユニット(「CFXU」)26と、ロード
/ストア・ユニット(「LSU」)28と、浮動小数点
ユニット(「FPU」)30とを含む。FXUA22、
FXUB24、CFXU26、及びLSU28は、それ
ぞれのソース・オペランド情報を汎用アーキテクチャ・
レジスタ(「GPR」)32及び固定小数点リネーム・
バッファ34から入力する。さらに、FXUA22とF
XUB24は、キャリー・ビット(「CA」)レジスタ
42から「キャリー・ビット」を入力する。FXUA2
2、FXUB24、CFXU26、及びLSU28は、
それぞれの演算の結果(目的オペランド情報)を出力し
て、固定小数点リネーム・バッファ34に記憶する。ま
た、CFXU26は、特殊目的レジスタ(「SPR」)
40との間でソース・オペランド情報と目的オペランド
情報を入出力する。
【0014】FPU30は、そのソース・オペランド情
報を浮動小数点アーキテクチャ・レジスタ(「FP
R」)36と浮動小数点リネーム・バッファ38から入
力する。FPU30は演算の結果(目的オペランド情
報)を出力して浮動小数点リネーム・バッファ38内の
選択された項目に記憶する。
報を浮動小数点アーキテクチャ・レジスタ(「FP
R」)36と浮動小数点リネーム・バッファ38から入
力する。FPU30は演算の結果(目的オペランド情
報)を出力して浮動小数点リネーム・バッファ38内の
選択された項目に記憶する。
【0015】シーケンサ・ユニット18は、GPR32
及びFPR36との間で情報を入出力する。シーケンサ
・ユニット18から、分岐ユニット20が命令と、プロ
セッサ10の現在の状態を示す信号とを入力する。分岐
ユニット20は、このような命令及び信号に応答して、
プロセッサ10によって実行される命令のシーケンスを
記憶する適切なメモリ・アドレスを示す信号を(シーケ
ンサ・ユニット18に)出力する。シーケンサ・ユニッ
ト18は、分岐ユニット20からのこのような信号に応
答して、命令キャッシュ14からの指示された命令シー
ケンスを入力する。命令シーケンスのうちの1つまたは
複数の命令が命令キャッシュ14に記憶されていない場
合、命令キャッシュ14はシステム・バス11に接続さ
れているシステム・メモリ39から(BIU12とシス
テム・バス11を介して)その命令を入力する。
及びFPR36との間で情報を入出力する。シーケンサ
・ユニット18から、分岐ユニット20が命令と、プロ
セッサ10の現在の状態を示す信号とを入力する。分岐
ユニット20は、このような命令及び信号に応答して、
プロセッサ10によって実行される命令のシーケンスを
記憶する適切なメモリ・アドレスを示す信号を(シーケ
ンサ・ユニット18に)出力する。シーケンサ・ユニッ
ト18は、分岐ユニット20からのこのような信号に応
答して、命令キャッシュ14からの指示された命令シー
ケンスを入力する。命令シーケンスのうちの1つまたは
複数の命令が命令キャッシュ14に記憶されていない場
合、命令キャッシュ14はシステム・バス11に接続さ
れているシステム・メモリ39から(BIU12とシス
テム・バス11を介して)その命令を入力する。
【0016】シーケンサ・ユニット18は命令キャッシ
ュ14からの命令入力に応答して、ディスパッチ・ユニ
ット46を介して、実行ユニット20、22、24、2
6、28、及び30のうちから選択された実行ユニット
に選択的にディスパッチする。各実行ユニットは、特定
の命令クラスの1つまたは複数の命令を実行する。たと
えば、FXUA22とFXUB24はソース・オペラン
ドに対して加算や減算、AND、OR、XORなどの第
1のクラスの固定小数点数値演算を実行する。CFXU
20はソース・オペランドに対して固定小数点乗算や除
算など第2のクラスの固定小数点演算を実行する。FP
U30は、ソース・オペランドに対して浮動小数点乗算
や除算などの浮動小数点演算を実行する。
ュ14からの命令入力に応答して、ディスパッチ・ユニ
ット46を介して、実行ユニット20、22、24、2
6、28、及び30のうちから選択された実行ユニット
に選択的にディスパッチする。各実行ユニットは、特定
の命令クラスの1つまたは複数の命令を実行する。たと
えば、FXUA22とFXUB24はソース・オペラン
ドに対して加算や減算、AND、OR、XORなどの第
1のクラスの固定小数点数値演算を実行する。CFXU
20はソース・オペランドに対して固定小数点乗算や除
算など第2のクラスの固定小数点演算を実行する。FP
U30は、ソース・オペランドに対して浮動小数点乗算
や除算などの浮動小数点演算を実行する。
【0017】プロセッサ10は、実行ユニット20、2
2、24、26、28、及び30のうちの様々な実行ユ
ニットで同時に複数の命令を処理することによって高パ
フォーマンスを実現する。したがって、各命令はいくつ
かの段階から成るシーケンスとして処理され、各段階は
他の命令の段階と並列して実行可能である。このような
技術は「パイプライン処理」と呼ばれる。好ましい実施
形態の重要な態様では、命令は通常6段階、すなわち、
フェッチ、デコード、ディスパッチ、実行、完了、及び
ライトバックの各段階で処理される。
2、24、26、28、及び30のうちの様々な実行ユ
ニットで同時に複数の命令を処理することによって高パ
フォーマンスを実現する。したがって、各命令はいくつ
かの段階から成るシーケンスとして処理され、各段階は
他の命令の段階と並列して実行可能である。このような
技術は「パイプライン処理」と呼ばれる。好ましい実施
形態の重要な態様では、命令は通常6段階、すなわち、
フェッチ、デコード、ディスパッチ、実行、完了、及び
ライトバックの各段階で処理される。
【0018】好ましい実施形態では、各命令は命令処理
の各段階を完了するのに1マシン・サイクルを必要とす
る。それにもかかわらず、ある種の命令(たとえばCF
XU26によって実行される複素固定小数点命令)は、
複数のサイクルを必要とすることがある。したがって、
特定の命令の実行と段階と完了段階との間に、先行命令
の完了に要する時間の変動に応じて変動する遅延が生じ
ることがある。
の各段階を完了するのに1マシン・サイクルを必要とす
る。それにもかかわらず、ある種の命令(たとえばCF
XU26によって実行される複素固定小数点命令)は、
複数のサイクルを必要とすることがある。したがって、
特定の命令の実行と段階と完了段階との間に、先行命令
の完了に要する時間の変動に応じて変動する遅延が生じ
ることがある。
【0019】LSU28は、ロード命令に応答して、デ
ータ・キャッシュ16から情報を入力し、その情報をリ
ネーム・バッファ34及び38のうちの選択されたリネ
ーム・バッファにコピーする。その情報がデータ・キャ
ッシュ16に記憶されていない場合、データ・キャッシ
ュ16はその情報をシステム・バス11に接続されてい
るシステム・メモリ39から(BIU12とシステム・
バス11を介して)入力する。さらに、データ・キャッ
シュ16は、データ・キャッシュ16からシステム・バ
ス11に接続されているシステム・メモリ39に(BI
U12とシステム・バス11)を介して情報を出力する
ことができる。LSU28はストア命令に応答して、G
PR32及びFPR36のうちの選択されたレジスタか
ら情報を入力し、その情報をデータ・キャッシュ16ま
たはメモリにコピーする。
ータ・キャッシュ16から情報を入力し、その情報をリ
ネーム・バッファ34及び38のうちの選択されたリネ
ーム・バッファにコピーする。その情報がデータ・キャ
ッシュ16に記憶されていない場合、データ・キャッシ
ュ16はその情報をシステム・バス11に接続されてい
るシステム・メモリ39から(BIU12とシステム・
バス11を介して)入力する。さらに、データ・キャッ
シュ16は、データ・キャッシュ16からシステム・バ
ス11に接続されているシステム・メモリ39に(BI
U12とシステム・バス11)を介して情報を出力する
ことができる。LSU28はストア命令に応答して、G
PR32及びFPR36のうちの選択されたレジスタか
ら情報を入力し、その情報をデータ・キャッシュ16ま
たはメモリにコピーする。
【0020】実行ユニット、たとえばFXUA22、F
XUB24、リネーム・バッファ34、及びディスパッ
チ・ユニット46の間の対話の例として、ディスパッチ
・ユニット46からFXUA22に命令「add c,
a,b」をディスパッチするものとする。ディスパッチ
・ユニット46は、当業者ならよくわかるように、FX
UA22にオペランド「a」と「b」のタグを供給して
FXUA22にこれらのオペランドのデータをどこから
取り出すことができるかを示す。たとえば、6個のリネ
ーム・バッファのあるシステムでは、ディスパッチ・ユ
ニット46は「a」のオペランドに6ビットのタグ10
0000を使用して適切にタグを付けてリネーム・バッ
ファ1にあることを示すことができる。さらに、010
000というタグを適切に使用して、オペランド「b」
がリネーム・バッファ2にあることを示すことができ
る。FXUA22は、GPR32には書き込まないた
め、ディスパッチ・ユニット46はリネーム・バッファ
3に入れる「加算」命令の結果のために、001000
などの演算の対象のリネーム・バッファ・タグを使用し
なければならない。
XUB24、リネーム・バッファ34、及びディスパッ
チ・ユニット46の間の対話の例として、ディスパッチ
・ユニット46からFXUA22に命令「add c,
a,b」をディスパッチするものとする。ディスパッチ
・ユニット46は、当業者ならよくわかるように、FX
UA22にオペランド「a」と「b」のタグを供給して
FXUA22にこれらのオペランドのデータをどこから
取り出すことができるかを示す。たとえば、6個のリネ
ーム・バッファのあるシステムでは、ディスパッチ・ユ
ニット46は「a」のオペランドに6ビットのタグ10
0000を使用して適切にタグを付けてリネーム・バッ
ファ1にあることを示すことができる。さらに、010
000というタグを適切に使用して、オペランド「b」
がリネーム・バッファ2にあることを示すことができ
る。FXUA22は、GPR32には書き込まないた
め、ディスパッチ・ユニット46はリネーム・バッファ
3に入れる「加算」命令の結果のために、001000
などの演算の対象のリネーム・バッファ・タグを使用し
なければならない。
【0021】次に図5を参照すると、本発明の一実施形
態によりロード命令を処理する回路を示す略図が図示さ
れている。回路200は、キャッシュ206内のデータ
にアクセスするのに必要な有効アドレスの計算に使用さ
れる加算器202などの論理回路を含む。当然ながら、
本発明は当技術分野で周知のいくつものメモリ・アドレ
ス指定方式に適合する。例示のために、本発明の動作を
POWER PCマイクロプロセッサ・アーキテクチャ
を例にして説明する。POWER PCアーキテクチャ
については、IBM Microelectronicsから入手可能な
「PowerPC Microprocessor Family: the Programming E
nvironment」(資料番号MPRPPCFPE−01)な
どの様々な出版物に詳しく記載されている。加算器20
2によって生成された有効アドレスはデータ・ユニット
204に渡される。データ・ユニットには、キャッシュ
206に物理的にアクセスするのに必要な制御論理回路
が含まれている。データ・ユニット204は不整列/ビ
ジー・ラッチ208も含み、このラッチは回路200が
現在不整列ロード命令を処理しているかどうかを追跡す
る。本発明のこの機能については、本明細書で詳述す
る。
態によりロード命令を処理する回路を示す略図が図示さ
れている。回路200は、キャッシュ206内のデータ
にアクセスするのに必要な有効アドレスの計算に使用さ
れる加算器202などの論理回路を含む。当然ながら、
本発明は当技術分野で周知のいくつものメモリ・アドレ
ス指定方式に適合する。例示のために、本発明の動作を
POWER PCマイクロプロセッサ・アーキテクチャ
を例にして説明する。POWER PCアーキテクチャ
については、IBM Microelectronicsから入手可能な
「PowerPC Microprocessor Family: the Programming E
nvironment」(資料番号MPRPPCFPE−01)な
どの様々な出版物に詳しく記載されている。加算器20
2によって生成された有効アドレスはデータ・ユニット
204に渡される。データ・ユニットには、キャッシュ
206に物理的にアクセスするのに必要な制御論理回路
が含まれている。データ・ユニット204は不整列/ビ
ジー・ラッチ208も含み、このラッチは回路200が
現在不整列ロード命令を処理しているかどうかを追跡す
る。本発明のこの機能については、本明細書で詳述す
る。
【0022】キャッシュ206は、キャッシュ206か
らフォーマッタ210にデータを渡す、この場合は64
ビットであるデータ線に接続された出力端子を有する。
フォーマッタの設計と動作は当技術分野で周知であり、
本明細書では本発明を例示するのに必要な程度までしか
説明しない。この実施形態では、フォーマッタ210
は、64ビット・データ線から所与の8ビット境界に沿
ってデータを再配置または「循環桁送り」するように調
整されたローテータ212を含む。言い換えると、64
ビット・データ線から受け取った任意のバイトのデータ
を、ローテータ212に入っているダブル・ワード内の
下位または上位位置に配置し直すことができる。本明細
書では、「ダブル・ワード」という用語は8バイト・セ
グメントのデータを指し、「ワード」という用語は4バ
イト・セグメントを指すものとする。
らフォーマッタ210にデータを渡す、この場合は64
ビットであるデータ線に接続された出力端子を有する。
フォーマッタの設計と動作は当技術分野で周知であり、
本明細書では本発明を例示するのに必要な程度までしか
説明しない。この実施形態では、フォーマッタ210
は、64ビット・データ線から所与の8ビット境界に沿
ってデータを再配置または「循環桁送り」するように調
整されたローテータ212を含む。言い換えると、64
ビット・データ線から受け取った任意のバイトのデータ
を、ローテータ212に入っているダブル・ワード内の
下位または上位位置に配置し直すことができる。本明細
書では、「ダブル・ワード」という用語は8バイト・セ
グメントのデータを指し、「ワード」という用語は4バ
イト・セグメントを指すものとする。
【0023】ローテータ212の出力端子はマージ・ラ
ッチ214とマルチプレクサ216の両方に接続されて
いる。マージ・ラッチ214が使用されるのは、不整列
データ・ロードの場合のみである。マルチプレクサ21
6はローテータ212からのデータを、必要であればマ
ージ・ラッチ214を通過させてリネーム・レジスタ・
ファイル218に入れる。マルチプレクサ216は、デ
ータをローテータ212とマージ・ラッチ214から同
時に通過させるように設計されている。したがって、マ
ルチプレクサは不整列ロード命令によって取り出された
データを再組立てしてからリネーム・レジスタ・ファイ
ルに渡す。
ッチ214とマルチプレクサ216の両方に接続されて
いる。マージ・ラッチ214が使用されるのは、不整列
データ・ロードの場合のみである。マルチプレクサ21
6はローテータ212からのデータを、必要であればマ
ージ・ラッチ214を通過させてリネーム・レジスタ・
ファイル218に入れる。マルチプレクサ216は、デ
ータをローテータ212とマージ・ラッチ214から同
時に通過させるように設計されている。したがって、マ
ルチプレクサは不整列ロード命令によって取り出された
データを再組立てしてからリネーム・レジスタ・ファイ
ルに渡す。
【0024】最後に、従来のように、ロード命令の完了
後、リネーム・レジスタ・ファイル218内の、その完
了した命令のための適切なレジスタからデータがGPR
レジスタ・ファイル220内の対応するレジスタに渡さ
れる。当然ながら、リネーム・レジスタ218とGPR
レジスタ・ファイル220とは必ずしも物理的に分離し
たレジスタ・ファイルである必要はなく、統合されたレ
ジスタ・ファイルとすることもでき、その中のレジスタ
に記憶されたデータを、レジスタに関連づけられた状況
ビットの状況に応じてリネーム・データまたはGPRデ
ータとして指定できることが、当業者ならわかるであろ
う。
後、リネーム・レジスタ・ファイル218内の、その完
了した命令のための適切なレジスタからデータがGPR
レジスタ・ファイル220内の対応するレジスタに渡さ
れる。当然ながら、リネーム・レジスタ218とGPR
レジスタ・ファイル220とは必ずしも物理的に分離し
たレジスタ・ファイルである必要はなく、統合されたレ
ジスタ・ファイルとすることもでき、その中のレジスタ
に記憶されたデータを、レジスタに関連づけられた状況
ビットの状況に応じてリネーム・データまたはGPRデ
ータとして指定できることが、当業者ならわかるであろ
う。
【0025】本発明の実施形態によると、ロード/スト
ア・ユニット(図示せず)はロード命令を実行すると
き、命令が回路200を通過する間にその命令を追跡す
るために使用する先頭/最終タグも命令に関連づける。
特定の実施形態では、先頭/最終タグは命令に付加され
る2ビット幅のデータ・セグメントである。図6は、本
発明の一形態による先頭/最終タグの機能を示す表であ
る。この実施形態では、先頭バイトと最終バイトの両方
が低になることはできない。先頭ビットが低で最終ビッ
トが高の場合、ロード命令は「最終」としてマークさ
れ、不整列命令にとって必要なキャッシュ206への2
回目のデータ・アクセスを示す。先頭ビットが高で最終
ビットが低の場合、命令は「先頭」としてマークされ、
不整列命令のキャッシュ206への最初のデータ・アク
セスを示す。先頭ビットと最終ビットの両方が高の場
合、命令は不整列ではなく、回路200を正常に通過す
ることができる。
ア・ユニット(図示せず)はロード命令を実行すると
き、命令が回路200を通過する間にその命令を追跡す
るために使用する先頭/最終タグも命令に関連づける。
特定の実施形態では、先頭/最終タグは命令に付加され
る2ビット幅のデータ・セグメントである。図6は、本
発明の一形態による先頭/最終タグの機能を示す表であ
る。この実施形態では、先頭バイトと最終バイトの両方
が低になることはできない。先頭ビットが低で最終ビッ
トが高の場合、ロード命令は「最終」としてマークさ
れ、不整列命令にとって必要なキャッシュ206への2
回目のデータ・アクセスを示す。先頭ビットが高で最終
ビットが低の場合、命令は「先頭」としてマークされ、
不整列命令のキャッシュ206への最初のデータ・アク
セスを示す。先頭ビットと最終ビットの両方が高の場
合、命令は不整列ではなく、回路200を正常に通過す
ることができる。
【0026】本発明の動作について、図7及び図8を参
照しながら詳述する。図7はキャッシュ・メモリ206
の論理内容の一部を示す図である。この場合、キャッシ
ュ・メモリ206の各ラインは128バイト幅であり、
ダブル・ワード単位でアドレス指定可能である。キャッ
シュ・ライン400には1ダブル・ワードのみが図示さ
れていることを理解されたい。この例では、キャッシュ
・ライン400のうち、バイトa、b、c、及びdを含
むワードにアクセスしたいとする。このデータはキャッ
シュ・ライン400で整列しており、単一のロード命令
を発行してそれを取り出すことができる。
照しながら詳述する。図7はキャッシュ・メモリ206
の論理内容の一部を示す図である。この場合、キャッシ
ュ・メモリ206の各ラインは128バイト幅であり、
ダブル・ワード単位でアドレス指定可能である。キャッ
シュ・ライン400には1ダブル・ワードのみが図示さ
れていることを理解されたい。この例では、キャッシュ
・ライン400のうち、バイトa、b、c、及びdを含
むワードにアクセスしたいとする。このデータはキャッ
シュ・ライン400で整列しており、単一のロード命令
を発行してそれを取り出すことができる。
【0027】次に図5及び図8を参照すると、データは
キャッシュ・ライン境界にまたがっているため不整列に
なっている。しかし、データがダブル・ワード境界に整
列していない場合も、データはキャッシュ・ライン内で
不整列になることがあることがわかるであろう。また、
POWERPCアーキテクチャに従って、キャッシュの
各アクセスによってダブル・ワードが返されることもわ
かるであろう。バイトa、b、c、dをロードしようと
する命令がディスパッチされた場合、キャッシュ206
へのアクセスが、キャッシュ・ライン400に1回とキ
ャッシュ・ライン402に1回の、2回必要になること
がわかる。この場合、データ・ユニット204内の論理
回路が、命令が必要とするデータが不整列であることを
認識する。さらに、この論理回路はデータを入手するた
めに必要な2つの「プリミティブ」命令LD1及びLD
2を生成する。プリミティブ命令は、LSUが、必要な
キャッシュ・アクセスを行うために内部的にのみ使用す
る。図9に示すように、LD1は「先頭」としてマーク
され、LD2は「最終」としてマークされる。それと同
時に、データ・ユニット204が不整列/ビジー・ラッ
チ208に1ビットをアサートする。これによって、デ
ィスパッチ・ユニットが不整列命令をそれ以上発行しな
いように停止させる。しかし、整列ロード命令など他の
命令は、依然としてディスパッチ可能であり、回路20
0によって処理することができる。これは、整列命令は
マージ・ラッチ214の使用を必要としないためであ
る。したがって、前に不整列命令が最初のキャッシュ・
アクセスからデータをマージ・ラッチ214に書き込ん
でおり、2回目のアクセスからデータが取り出されるの
を待っていた場合、整列命令は、マージ・ラッチ214
に記憶されているデータを乱すことなく、そのデータを
マルチプレクサ216を介してローテータ212から渡
すことができ、リネーム・レジスタに入れることができ
ることになる。他の実施形態では、本発明のこの機能
は、複数のマージ・ラッチを設けて、プロセッサ内で複
数の不整列命令を同時に保留状態にしておくことができ
るように拡張される。当然ながら、各不整列命令の先頭
タグと最終タグを追跡する手段も同様に拡張されること
になる。
キャッシュ・ライン境界にまたがっているため不整列に
なっている。しかし、データがダブル・ワード境界に整
列していない場合も、データはキャッシュ・ライン内で
不整列になることがあることがわかるであろう。また、
POWERPCアーキテクチャに従って、キャッシュの
各アクセスによってダブル・ワードが返されることもわ
かるであろう。バイトa、b、c、dをロードしようと
する命令がディスパッチされた場合、キャッシュ206
へのアクセスが、キャッシュ・ライン400に1回とキ
ャッシュ・ライン402に1回の、2回必要になること
がわかる。この場合、データ・ユニット204内の論理
回路が、命令が必要とするデータが不整列であることを
認識する。さらに、この論理回路はデータを入手するた
めに必要な2つの「プリミティブ」命令LD1及びLD
2を生成する。プリミティブ命令は、LSUが、必要な
キャッシュ・アクセスを行うために内部的にのみ使用す
る。図9に示すように、LD1は「先頭」としてマーク
され、LD2は「最終」としてマークされる。それと同
時に、データ・ユニット204が不整列/ビジー・ラッ
チ208に1ビットをアサートする。これによって、デ
ィスパッチ・ユニットが不整列命令をそれ以上発行しな
いように停止させる。しかし、整列ロード命令など他の
命令は、依然としてディスパッチ可能であり、回路20
0によって処理することができる。これは、整列命令は
マージ・ラッチ214の使用を必要としないためであ
る。したがって、前に不整列命令が最初のキャッシュ・
アクセスからデータをマージ・ラッチ214に書き込ん
でおり、2回目のアクセスからデータが取り出されるの
を待っていた場合、整列命令は、マージ・ラッチ214
に記憶されているデータを乱すことなく、そのデータを
マルチプレクサ216を介してローテータ212から渡
すことができ、リネーム・レジスタに入れることができ
ることになる。他の実施形態では、本発明のこの機能
は、複数のマージ・ラッチを設けて、プロセッサ内で複
数の不整列命令を同時に保留状態にしておくことができ
るように拡張される。当然ながら、各不整列命令の先頭
タグと最終タグを追跡する手段も同様に拡張されること
になる。
【0028】LD1からのデータをフォーマッタ210
が受け取ると、そのデータは必要に応じてローテータ2
12で循環桁送りされ、マージ・ラッチ214に入れら
れ、そこに記憶されたまま最終ロード命令からのデータ
を待つ。前述のように、整列命令はそれぞれのデータを
処理するためにフォーマッタ210を継続して使用する
ことができる。LD2からのデータをフォーマッタ21
0が受け取ると、そのデータはローテータ212で循環
桁送りされ、マルチプレクサ216に渡される。この時
点で、マージ・ラッチ214からのデータもマルチプレ
クサ216に渡され、そこでバイトa、b、c、及びd
から成る必要なワードに再組立てされる。次に、そのデ
ータが従来のスーパースカラ技法に従ってリネーム・レ
ジスタ・ファイル218及びGPR220に渡される。
が受け取ると、そのデータは必要に応じてローテータ2
12で循環桁送りされ、マージ・ラッチ214に入れら
れ、そこに記憶されたまま最終ロード命令からのデータ
を待つ。前述のように、整列命令はそれぞれのデータを
処理するためにフォーマッタ210を継続して使用する
ことができる。LD2からのデータをフォーマッタ21
0が受け取ると、そのデータはローテータ212で循環
桁送りされ、マルチプレクサ216に渡される。この時
点で、マージ・ラッチ214からのデータもマルチプレ
クサ216に渡され、そこでバイトa、b、c、及びd
から成る必要なワードに再組立てされる。次に、そのデ
ータが従来のスーパースカラ技法に従ってリネーム・レ
ジスタ・ファイル218及びGPR220に渡される。
【0029】プロセッサは、アウト・オブ・オーダー処
理命令を実行するため、最終ロード命令からのデータ
を、先頭命令からのデータより前にフォーマッタ210
に渡すことがある。この場合、フォーマッタ210内の
論理回路が、マージ・ラッチ214に有効データが入っ
ていないことを認識し、したがって、最終ロード命令に
よって渡されたデータを廃棄する。先頭の命令からのデ
ータがマージ・ラッチに記憶された後、最終命令からの
データが再びフォーマッタに渡される。当然ながら、プ
ロセッサはこの状況で、ディスパッチ・ユニットが元の
不整列ロード命令を再発行する必要なしに、最終命令か
らのデータを再送する何らかの手段を備えなければなら
ない。当業者ならこれを実現する多くの適合する方法を
考えつくであろう。たとえば、本発明の一実施形態で
は、先頭命令からのデータがマージ・ラッチに入ってい
ない場合、「ミスキュー」テーブルを使用して最終命令
からデータを再送する。これについて図10を参照しな
がら以下に詳述する。
理命令を実行するため、最終ロード命令からのデータ
を、先頭命令からのデータより前にフォーマッタ210
に渡すことがある。この場合、フォーマッタ210内の
論理回路が、マージ・ラッチ214に有効データが入っ
ていないことを認識し、したがって、最終ロード命令に
よって渡されたデータを廃棄する。先頭の命令からのデ
ータがマージ・ラッチに記憶された後、最終命令からの
データが再びフォーマッタに渡される。当然ながら、プ
ロセッサはこの状況で、ディスパッチ・ユニットが元の
不整列ロード命令を再発行する必要なしに、最終命令か
らのデータを再送する何らかの手段を備えなければなら
ない。当業者ならこれを実現する多くの適合する方法を
考えつくであろう。たとえば、本発明の一実施形態で
は、先頭命令からのデータがマージ・ラッチに入ってい
ない場合、「ミスキュー」テーブルを使用して最終命令
からデータを再送する。これについて図10を参照しな
がら以下に詳述する。
【0030】図10は、本発明の一実施形態によるミス
キュー・テーブルの論理内容を示す図である。図のよう
に、ミスキュー・テーブル内の各項目は命令の先頭/最
終タグと命令の実アドレスを含む。設計上の選択肢とし
て妥当性ビット、状況ビットなどの他の情報も含めるこ
とができる。本発明の一実施形態では、命令がディスパ
ッチされるたびに、ミスキュー・テーブル600内の項
目が作成される。命令がデータ・キャッシュ内でヒット
すると、次のサイクルでその命令の項目がミスキュー・
テーブル600から除去される。しかし、命令がデータ
・キャッシュ内でミスした場合は、実アドレスとその他
の情報がミスキュー・テーブル600に残る。プロセッ
サはミスキュー・テーブル内の項目を絶えず走査し、各
サイクルで、プロセッサはテーブルに記憶されている実
アドレスにあるキャッシュにアクセスを試みる。最終的
に、ミスキュー・テーブル内の各項目についてキャッシ
ュ内でデータが入手可能になり、レジスタ・ファイルに
渡される。
キュー・テーブルの論理内容を示す図である。図のよう
に、ミスキュー・テーブル内の各項目は命令の先頭/最
終タグと命令の実アドレスを含む。設計上の選択肢とし
て妥当性ビット、状況ビットなどの他の情報も含めるこ
とができる。本発明の一実施形態では、命令がディスパ
ッチされるたびに、ミスキュー・テーブル600内の項
目が作成される。命令がデータ・キャッシュ内でヒット
すると、次のサイクルでその命令の項目がミスキュー・
テーブル600から除去される。しかし、命令がデータ
・キャッシュ内でミスした場合は、実アドレスとその他
の情報がミスキュー・テーブル600に残る。プロセッ
サはミスキュー・テーブル内の項目を絶えず走査し、各
サイクルで、プロセッサはテーブルに記憶されている実
アドレスにあるキャッシュにアクセスを試みる。最終的
に、ミスキュー・テーブル内の各項目についてキャッシ
ュ内でデータが入手可能になり、レジスタ・ファイルに
渡される。
【0031】本発明の一実施形態によると、最終アクセ
スからのデータが先頭アクセスからのデータよりも前に
フォーマッタに渡される場合、キャッシュ・ミスと同様
に扱われる。したがって、各サイクルで、プロセッサは
ミスキュー・テーブル600を走査し、ミスキュー・テ
ーブル600に記憶されている最終命令のアドレスのキ
ャッシュ・データにアクセスし、それをフォーマッタに
渡す。フォーマッタはキャッシュ制御論理回路から受け
取った妥当性信号に応答する。キャッシュが最終命令の
データを、先頭命令からのデータが入手可能になる前に
フォーマッタに渡した場合、そのデータの妥当性信号は
アサートされない。したがって、フォーマッタはそのデ
ータを廃棄し、最終命令の項目はミスキュー・テーブル
600に残ることになる。先頭命令からのデータが入手
可能になり、フォーマッタに渡された後、後続のサイク
ルで、最終命令からのデータが再びフォーマッタに渡さ
れるが、今度は妥当性信号がアサートされる。フォーマ
ッタは次に先頭命令と最終命令からのデータを処理し、
完了テーブル論理回路に信号を戻し、ミスキュー・テー
ブル600から先頭項目と最終項目を除去する。
スからのデータが先頭アクセスからのデータよりも前に
フォーマッタに渡される場合、キャッシュ・ミスと同様
に扱われる。したがって、各サイクルで、プロセッサは
ミスキュー・テーブル600を走査し、ミスキュー・テ
ーブル600に記憶されている最終命令のアドレスのキ
ャッシュ・データにアクセスし、それをフォーマッタに
渡す。フォーマッタはキャッシュ制御論理回路から受け
取った妥当性信号に応答する。キャッシュが最終命令の
データを、先頭命令からのデータが入手可能になる前に
フォーマッタに渡した場合、そのデータの妥当性信号は
アサートされない。したがって、フォーマッタはそのデ
ータを廃棄し、最終命令の項目はミスキュー・テーブル
600に残ることになる。先頭命令からのデータが入手
可能になり、フォーマッタに渡された後、後続のサイク
ルで、最終命令からのデータが再びフォーマッタに渡さ
れるが、今度は妥当性信号がアサートされる。フォーマ
ッタは次に先頭命令と最終命令からのデータを処理し、
完了テーブル論理回路に信号を戻し、ミスキュー・テー
ブル600から先頭項目と最終項目を除去する。
【0032】最終アクセスによってキャッシュからデー
タが取り出された後、ロード命令は完了可能になる。完
了時、不整列/ビジー・ラッチ208内のビットがクリ
アされ、ロード/ストア・ユニットは後続の不整列命令
を発行できるようになる。
タが取り出された後、ロード命令は完了可能になる。完
了時、不整列/ビジー・ラッチ208内のビットがクリ
アされ、ロード/ストア・ユニットは後続の不整列命令
を発行できるようになる。
【0033】他の実施形態によると、先頭データよりも
前に最終データを受け取った場合、最終データがマージ
・ラッチに記憶されるようにフォーマッタを設計するこ
とができる。先頭データを受け取ると、そのデータは最
終データと一緒に再組立てされ、リネーム・レジスタ・
ファイルに転送される。フォーマッタをこのように実施
すると、ミスキュー・テーブル600を使用しなくても
済むようにすることができる。
前に最終データを受け取った場合、最終データがマージ
・ラッチに記憶されるようにフォーマッタを設計するこ
とができる。先頭データを受け取ると、そのデータは最
終データと一緒に再組立てされ、リネーム・レジスタ・
ファイルに転送される。フォーマッタをこのように実施
すると、ミスキュー・テーブル600を使用しなくても
済むようにすることができる。
【0034】以上、本発明について特定の実施形態に関
して説明したが、当業者なら本発明の範囲及び主旨から
逸脱することなく態様及び詳細に変更を加えることがで
きることがわかるであろう。たとえば、複数のロード/
ストア・ユニットを本発明の他の実施形態による命令の
処理と並列して使用することもできる。
して説明したが、当業者なら本発明の範囲及び主旨から
逸脱することなく態様及び詳細に変更を加えることがで
きることがわかるであろう。たとえば、複数のロード/
ストア・ユニットを本発明の他の実施形態による命令の
処理と並列して使用することもできる。
【0035】まとめとして、本発明の構成に関して以下
の事項を開示する。
の事項を開示する。
【0036】(1)データ・キャッシュとレジスタ・フ
ァイルとを有するスーパースカラ・プロセッサにおいて
ロード命令を処理する方法であって、前記キャッシュ内
で不整列であるデータのブロックにアクセスする不整列
ロード命令をディスパッチするステップと、整列命令の
ディスパッチを続けている間に、前記キャッシュへの前
記不整列ロード命令に応答して先頭アクセスと最終アク
セスを生成するステップと、先頭アクセスから取り出さ
れたデータを最終アクセスからのデータが入手可能にな
るまで記憶するステップと、前記先頭アクセス及び最終
アクセスからのデータを前記ロード命令が必要とする順
序に再組立てするステップと、前記再組立てされたデー
タを前記レジスタ・ファイルに記憶するステップとを含
む方法。 (2)先頭アクセスと最終アクセスとを生成するステッ
プが、前記アクセスが先頭アクセスと最終アクセスのい
ずれであるかを示す複数のビットを前記アクセスに関連
づけるステップを含む、上記(1)に記載の方法。 (3)不整列ロード命令のディスパッチに応答して、プ
ロセッサに後続の不整列命令のディスパッチを停止させ
る信号をアサートするステップをさらに含む、上記
(1)に記載の方法。 (4)前記不整列ロード命令の完了に応答して、プロセ
ッサに不整列命令のディスパッチを再開させる信号をア
サートするステップをさらに含む、上記(3)に記載の
方法。 (5)データ・キャッシュとレジスタ・ファイルとを有
するスーパースカラ・プロセッサにおいてロード命令を
処理する回路であって、命令をディスパッチする手段
と、キャッシュ内で不整列であるデータのブロックにア
クセスする不整列ロード命令のディスパッチを検出する
手段と、後続の整列命令がディスパッチされている間に
前記不整列ロード命令が検出されると、後続の不整列ロ
ード命令のディスパッチを停止する手段と、前記不整列
ロード命令に応答して、前記キャッシュへの先頭アクセ
スと最終アクセスを生成する手段と、前記先頭アクセス
から取り出されたデータを前記最終アクセスからのデー
タが入手可能になるまで記憶する手段と、前記先頭アク
セス及び最終アクセスからの前記データを前記ロード命
令が必要とする順序に再組立てする手段と、前記再組立
てされたデータを前記レジスタ・ファイルに記憶する手
段とを含む回路。 (6)後続の不整列ロード命令のディスパッチを停止さ
せる前記手段が、前記不整列命令のディスパッチに応答
してアサートされ、前記不整列命令が完了するとアサー
ト解除されるビットを有するラッチを含む、上記(5)
に記載の回路。 (7)先頭アクセスと最終アクセスとを生成する前記手
段が、前記先頭アクセス及び最終アクセスに関連づけら
れるタグを生成する論理回路を含む、上記(5)に記載
の回路。 (8)前記タグが、対応するアクセスが先頭アクセスと
最終アクセスのいずれであるかに応答して、アサートさ
れる複数のビットを含む、上記(7)に記載の回路。 (9)前記データを再組立てする前記手段が、前記先頭
アクセスからのデータを前記最終アクセスからのデータ
が入手可能になるまで記憶するラッチを含む、上記
(5)に記載の回路。 (10)前記データを再組立てする前記手段が、前記最
終アクセスからのデータを前記先頭アクセスからのデー
タが入手可能になるまで記憶するラッチを含む、上記
(5)に記載の回路。
ァイルとを有するスーパースカラ・プロセッサにおいて
ロード命令を処理する方法であって、前記キャッシュ内
で不整列であるデータのブロックにアクセスする不整列
ロード命令をディスパッチするステップと、整列命令の
ディスパッチを続けている間に、前記キャッシュへの前
記不整列ロード命令に応答して先頭アクセスと最終アク
セスを生成するステップと、先頭アクセスから取り出さ
れたデータを最終アクセスからのデータが入手可能にな
るまで記憶するステップと、前記先頭アクセス及び最終
アクセスからのデータを前記ロード命令が必要とする順
序に再組立てするステップと、前記再組立てされたデー
タを前記レジスタ・ファイルに記憶するステップとを含
む方法。 (2)先頭アクセスと最終アクセスとを生成するステッ
プが、前記アクセスが先頭アクセスと最終アクセスのい
ずれであるかを示す複数のビットを前記アクセスに関連
づけるステップを含む、上記(1)に記載の方法。 (3)不整列ロード命令のディスパッチに応答して、プ
ロセッサに後続の不整列命令のディスパッチを停止させ
る信号をアサートするステップをさらに含む、上記
(1)に記載の方法。 (4)前記不整列ロード命令の完了に応答して、プロセ
ッサに不整列命令のディスパッチを再開させる信号をア
サートするステップをさらに含む、上記(3)に記載の
方法。 (5)データ・キャッシュとレジスタ・ファイルとを有
するスーパースカラ・プロセッサにおいてロード命令を
処理する回路であって、命令をディスパッチする手段
と、キャッシュ内で不整列であるデータのブロックにア
クセスする不整列ロード命令のディスパッチを検出する
手段と、後続の整列命令がディスパッチされている間に
前記不整列ロード命令が検出されると、後続の不整列ロ
ード命令のディスパッチを停止する手段と、前記不整列
ロード命令に応答して、前記キャッシュへの先頭アクセ
スと最終アクセスを生成する手段と、前記先頭アクセス
から取り出されたデータを前記最終アクセスからのデー
タが入手可能になるまで記憶する手段と、前記先頭アク
セス及び最終アクセスからの前記データを前記ロード命
令が必要とする順序に再組立てする手段と、前記再組立
てされたデータを前記レジスタ・ファイルに記憶する手
段とを含む回路。 (6)後続の不整列ロード命令のディスパッチを停止さ
せる前記手段が、前記不整列命令のディスパッチに応答
してアサートされ、前記不整列命令が完了するとアサー
ト解除されるビットを有するラッチを含む、上記(5)
に記載の回路。 (7)先頭アクセスと最終アクセスとを生成する前記手
段が、前記先頭アクセス及び最終アクセスに関連づけら
れるタグを生成する論理回路を含む、上記(5)に記載
の回路。 (8)前記タグが、対応するアクセスが先頭アクセスと
最終アクセスのいずれであるかに応答して、アサートさ
れる複数のビットを含む、上記(7)に記載の回路。 (9)前記データを再組立てする前記手段が、前記先頭
アクセスからのデータを前記最終アクセスからのデータ
が入手可能になるまで記憶するラッチを含む、上記
(5)に記載の回路。 (10)前記データを再組立てする前記手段が、前記最
終アクセスからのデータを前記先頭アクセスからのデー
タが入手可能になるまで記憶するラッチを含む、上記
(5)に記載の回路。
【図1】整列データを示すキャッシュ・メモリの論理内
容の図である。
容の図である。
【図2】2つのキャッシュ・ラインにわたる不整列キャ
ッシュ・データを有するキャッシュ・メモリを示す図で
ある。
ッシュ・データを有するキャッシュ・メモリを示す図で
ある。
【図3】キャッシュ・メモリから取り出された不整列デ
ータを再組立てするフォーマッタを示す略図である。
ータを再組立てするフォーマッタを示す略図である。
【図4】本発明の一実施形態によるプロセッサを示すブ
ロック図である。
ロック図である。
【図5】本発明の一実施形態による不整列キャッシュ・
アクセスを行う回路を示す略図である。
アクセスを行う回路を示す略図である。
【図6】本発明の一実施形態による先頭/最終タグの機
能を示す表である。
能を示す表である。
【図7】本発明の一実施形態による整列キャッシュ・ア
クセスを示す図である。
クセスを示す図である。
【図8】本発明の一実施形態による不整列キャッシュ・
アクセスを示す図である。
アクセスを示す図である。
【図9】ロード命令のディスパッチに応答して生成され
る1対のプリミティブ・ロード命令に先頭タグと最終タ
グを付加する様子を示す図である。
る1対のプリミティブ・ロード命令に先頭タグと最終タ
グを付加する様子を示す図である。
【図10】本発明の一実施形態によるミスキュー・テー
ブルの論理内容を示す図である。
ブルの論理内容を示す図である。
10 プロセッサ・システム 11 システム・バス 12 バス・インタフェース・ユニット 14 命令キャッシュ 16 データ・キャッシュ 18 シーケンサ・ユニット 20 分岐ユニット 22 固定小数点ユニットA 24 固定小数点ユニットB 26 複素固定小数点ユニット 28 ロード/ストア・ユニット 30 浮動小数点ユニット 32 汎用アーキテクチャ・レジスタ 34 固定小数点リネーム・バッファ 36 浮動小数点アーキテクチャ・レジスタ 38 浮動小数点リネーム・バッファ 39 システム・メモリ 40 特殊目的レジスタ 46 ディスパッチ・ユニット 202 加算器 204 データ・ユニット 206 キャッシュ 208 不整列/ビジー・ラッチ 210 フォーマッタ 212 ローテータ 214 マージ・ラッチ 216 マルチプレクサ 218 リネーム・レジスタ・ファイル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 バリー・デュアン・ウイリアムソン アメリカ合衆国78681 テキサス州ラウン ドロック リバーローン・ドライブ 807 (72)発明者 シーシウン・スティーブン・タン アメリカ合衆国78726 テキサス州オース チン バーブルック・ドライブ 9923
Claims (10)
- 【請求項1】データ・キャッシュとレジスタ・ファイル
とを有するスーパースカラ・プロセッサにおいてロード
命令を処理する方法であって、 前記キャッシュ内で不整列であるデータのブロックにア
クセスする不整列ロード命令をディスパッチするステッ
プと、 整列命令のディスパッチを続けている間に、 前記キャッシュへの前記不整列ロード命令に応答して先
頭アクセスと最終アクセスを生成するステップと、 先頭アクセスから取り出されたデータを最終アクセスか
らのデータが入手可能になるまで記憶するステップと、 前記先頭アクセス及び最終アクセスからのデータを前記
ロード命令が必要とする順序に再組立てするステップ
と、 前記再組立てされたデータを前記レジスタ・ファイルに
記憶するステップとを含む方法。 - 【請求項2】先頭アクセスと最終アクセスとを生成する
ステップが、前記アクセスが先頭アクセスと最終アクセ
スのいずれであるかを示す複数のビットを前記アクセス
に関連づけるステップを含む、請求項1に記載の方法。 - 【請求項3】不整列ロード命令のディスパッチに応答し
て、プロセッサに後続の不整列命令のディスパッチを停
止させる信号をアサートするステップをさらに含む、請
求項1に記載の方法。 - 【請求項4】前記不整列ロード命令の完了に応答して、
プロセッサに不整列命令のディスパッチを再開させる信
号をアサートするステップをさらに含む、請求項3に記
載の方法。 - 【請求項5】データ・キャッシュとレジスタ・ファイル
とを有するスーパースカラ・プロセッサにおいてロード
命令を処理する回路であって、 命令をディスパッチする手段と、 キャッシュ内で不整列であるデータのブロックにアクセ
スする不整列ロード命令のディスパッチを検出する手段
と、 後続の整列命令がディスパッチされている間に前記不整
列ロード命令が検出されると、後続の不整列ロード命令
のディスパッチを停止する手段と、 前記不整列ロード命令に応答して、前記キャッシュへの
先頭アクセスと最終アクセスを生成する手段と、 前記先頭アクセスから取り出されたデータを前記最終ア
クセスからのデータが入手可能になるまで記憶する手段
と、 前記先頭アクセス及び最終アクセスからの前記データを
前記ロード命令が必要とする順序に再組立てする手段
と、 前記再組立てされたデータを前記レジスタ・ファイルに
記憶する手段とを含む回路。 - 【請求項6】後続の不整列ロード命令のディスパッチを
停止させる前記手段が、前記不整列命令のディスパッチ
に応答してアサートされ、前記不整列命令が完了すると
アサート解除されるビットを有するラッチを含む、請求
項5に記載の回路。 - 【請求項7】先頭アクセスと最終アクセスとを生成する
前記手段が、前記先頭アクセス及び最終アクセスに関連
づけられるタグを生成する論理回路を含む、請求項5に
記載の回路。 - 【請求項8】前記タグが、対応するアクセスが先頭アク
セスと最終アクセスのいずれであるかに応答して、アサ
ートされる複数のビットを含む、請求項7に記載の回
路。 - 【請求項9】前記データを再組立てする前記手段が、前
記先頭アクセスからのデータを前記最終アクセスからの
データが入手可能になるまで記憶するラッチを含む、請
求項5に記載の回路。 - 【請求項10】前記データを再組立てする前記手段が、
前記最終アクセスからのデータを前記先頭アクセスから
のデータが入手可能になるまで記憶するラッチを含む、
請求項5に記載の回路。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/021,133 US6112297A (en) | 1998-02-10 | 1998-02-10 | Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution |
| US09/021133 | 1998-02-10 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH11272464A true JPH11272464A (ja) | 1999-10-08 |
| JP3151444B2 JP3151444B2 (ja) | 2001-04-03 |
Family
ID=21802524
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP02597099A Expired - Fee Related JP3151444B2 (ja) | 1998-02-10 | 1999-02-03 | ロード命令を処理する方法及びスーパースカラ・プロセッサ |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US6112297A (ja) |
| EP (1) | EP0936538A2 (ja) |
| JP (1) | JP3151444B2 (ja) |
| KR (1) | KR100335745B1 (ja) |
| CN (1) | CN1161689C (ja) |
| CA (1) | CA2260308C (ja) |
| TW (1) | TW440794B (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006318051A (ja) * | 2005-05-10 | 2006-11-24 | Nec Electronics Corp | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
| JP2010049500A (ja) * | 2008-08-21 | 2010-03-04 | Toshiba Corp | パイプライン演算プロセッサ、及びパイプライン演算プロセッサを備える制御システム |
| JP2010191511A (ja) * | 2009-02-16 | 2010-09-02 | Toshiba Corp | マイクロプロセッサ |
Families Citing this family (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6230238B1 (en) * | 1999-03-02 | 2001-05-08 | Motorola, Inc. | Method and apparatus for accessing misaligned data from memory in an efficient manner |
| US6915385B1 (en) * | 1999-07-30 | 2005-07-05 | International Business Machines Corporation | Apparatus for unaligned cache reads and methods therefor |
| US6289428B1 (en) * | 1999-08-03 | 2001-09-11 | International Business Machines Corporation | Superscaler processor and method for efficiently recovering from misaligned data addresses |
| US6820195B1 (en) * | 1999-10-01 | 2004-11-16 | Hitachi, Ltd. | Aligning load/store data with big/little endian determined rotation distance control |
| US6728865B1 (en) * | 1999-10-20 | 2004-04-27 | Transmeta Corporation | Pipeline replay support for unaligned memory operations |
| US6604188B1 (en) | 1999-10-20 | 2003-08-05 | Transmeta Corporation | Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction |
| US6704854B1 (en) * | 1999-10-25 | 2004-03-09 | Advanced Micro Devices, Inc. | Determination of execution resource allocation based on concurrently executable misaligned memory operations |
| US6615300B1 (en) | 2000-06-19 | 2003-09-02 | Transmeta Corporation | Fast look-up of indirect branch destination in a dynamic translation system |
| US7120781B1 (en) * | 2000-06-30 | 2006-10-10 | Intel Corporation | General purpose register file architecture for aligned simd |
| US7370184B2 (en) * | 2001-08-20 | 2008-05-06 | The United States Of America As Represented By The Secretary Of The Navy | Shifter for alignment with bit formatter gating bits from shifted operand, shifted carry operand and most significant bit |
| US6721866B2 (en) * | 2001-12-21 | 2004-04-13 | Intel Corporation | Unaligned memory operands |
| CN100399262C (zh) * | 2003-08-26 | 2008-07-02 | 国际商业机器公司 | 用于降低功率的按需驱动时钟调节的处理器 |
| US7493599B2 (en) * | 2003-11-26 | 2009-02-17 | Intel Corporation | Device, system and method for detection and handling of misaligned data access |
| CN100495319C (zh) * | 2003-12-23 | 2009-06-03 | 凌阳科技股份有限公司 | 处理器中读取未对齐资料的方法与装置 |
| US7398334B1 (en) | 2004-03-12 | 2008-07-08 | Xilinx, Inc. | Circuit for and method of realigning data |
| US20060155961A1 (en) * | 2005-01-06 | 2006-07-13 | International Business Machines Corporation | Apparatus and method for reformatting instructions before reaching a dispatch point in a superscalar processor |
| US7437537B2 (en) * | 2005-02-17 | 2008-10-14 | Qualcomm Incorporated | Methods and apparatus for predicting unaligned memory access |
| US7337272B2 (en) * | 2006-05-01 | 2008-02-26 | Qualcomm Incorporated | Method and apparatus for caching variable length instructions |
| US8185880B2 (en) * | 2007-10-04 | 2012-05-22 | International Business Machines Corporation | Optimizing heap memory usage |
| JP2010157130A (ja) * | 2008-12-27 | 2010-07-15 | Toshiba Corp | メモリシステム |
| US8086801B2 (en) * | 2009-04-08 | 2011-12-27 | International Business Machines Corporation | Loading data to vector renamed register from across multiple cache lines |
| US8127078B2 (en) * | 2009-10-02 | 2012-02-28 | International Business Machines Corporation | High performance unaligned cache access |
| US20120246407A1 (en) * | 2011-03-21 | 2012-09-27 | Hasenplaugh William C | Method and system to improve unaligned cache memory accesses |
| US8688962B2 (en) * | 2011-04-01 | 2014-04-01 | Intel Corporation | Gather cache architecture |
| CN105446773B (zh) * | 2015-11-18 | 2019-02-12 | 上海兆芯集成电路有限公司 | 高速缓存行的非对齐加载指令的推测并行执行系统和方法 |
| CN107066238A (zh) * | 2017-04-18 | 2017-08-18 | 上海兆芯集成电路有限公司 | 执行高速缓存行未对齐加载指令的系统和方法 |
| US11755324B2 (en) * | 2021-08-31 | 2023-09-12 | International Business Machines Corporation | Gather buffer management for unaligned and gather load operations |
| CN120122997B (zh) * | 2025-05-12 | 2025-09-09 | 中国人民解放军国防科技大学 | 一种取指地址未对齐异常的处理方法及设备 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS548937A (en) * | 1977-06-22 | 1979-01-23 | Nec Corp | Buffer memory unit |
| US4287561A (en) * | 1978-03-16 | 1981-09-01 | International Business Machines Corporation | Address formulation interlock mechanism |
| US4814976C1 (en) * | 1986-12-23 | 2002-06-04 | Mips Tech Inc | Risc computer with unaligned reference handling and method for the same |
| JP3644959B2 (ja) * | 1992-09-29 | 2005-05-11 | セイコーエプソン株式会社 | マイクロプロセッサシステム |
| US5577200A (en) * | 1994-02-28 | 1996-11-19 | Intel Corporation | Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system |
| JPH09114733A (ja) * | 1995-10-17 | 1997-05-02 | Nec Corp | キャッシュ記憶装置における非整列データ転送機構 |
| US5802556A (en) * | 1996-07-16 | 1998-09-01 | International Business Machines Corporation | Method and apparatus for correcting misaligned instruction data |
| JP3047170B2 (ja) * | 1997-10-11 | 2000-05-29 | 好高 青山 | 供給ロッド式の部品供給装置 |
-
1998
- 1998-02-10 US US09/021,133 patent/US6112297A/en not_active Expired - Fee Related
-
1999
- 1999-01-08 CN CNB991010418A patent/CN1161689C/zh not_active Expired - Fee Related
- 1999-01-15 KR KR1019990001065A patent/KR100335745B1/ko not_active Expired - Fee Related
- 1999-01-21 EP EP99300426A patent/EP0936538A2/en not_active Withdrawn
- 1999-01-25 CA CA002260308A patent/CA2260308C/en not_active Expired - Fee Related
- 1999-02-03 JP JP02597099A patent/JP3151444B2/ja not_active Expired - Fee Related
- 1999-02-06 TW TW088101834A patent/TW440794B/zh not_active IP Right Cessation
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006318051A (ja) * | 2005-05-10 | 2006-11-24 | Nec Electronics Corp | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
| JP2010049500A (ja) * | 2008-08-21 | 2010-03-04 | Toshiba Corp | パイプライン演算プロセッサ、及びパイプライン演算プロセッサを備える制御システム |
| JP2010191511A (ja) * | 2009-02-16 | 2010-09-02 | Toshiba Corp | マイクロプロセッサ |
Also Published As
| Publication number | Publication date |
|---|---|
| TW440794B (en) | 2001-06-16 |
| EP0936538A2 (en) | 1999-08-18 |
| CN1161689C (zh) | 2004-08-11 |
| KR100335745B1 (ko) | 2002-05-08 |
| KR19990072271A (ko) | 1999-09-27 |
| US6112297A (en) | 2000-08-29 |
| CA2260308A1 (en) | 1999-08-10 |
| CN1226700A (zh) | 1999-08-25 |
| JP3151444B2 (ja) | 2001-04-03 |
| CA2260308C (en) | 2001-10-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3151444B2 (ja) | ロード命令を処理する方法及びスーパースカラ・プロセッサ | |
| KR100237985B1 (ko) | 추론적 로드 명령을 실행하는 프로세서, 그 방법 및 데이터 처리 시스템 | |
| US6801924B1 (en) | Formatting denormal numbers for processing in a pipelined floating point unit | |
| US5471598A (en) | Data dependency detection and handling in a microprocessor with write buffer | |
| EP0380859B1 (en) | Method of preprocessing multiple instructions | |
| EP1296229B1 (en) | Scoreboarding mechanism in a pipeline that includes replays and redirects | |
| EP0491693B1 (en) | Improved cpu pipeline having register file bypass on update/access address compare | |
| US6192461B1 (en) | Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle | |
| US5740398A (en) | Program order sequencing of data in a microprocessor with write buffer | |
| US5615402A (en) | Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch | |
| JP3159435B2 (ja) | ロード/ロード検出及びリオーダー方法及び装置 | |
| JP2003515214A (ja) | 計算を狭いオペランドで実施するための方法と装置 | |
| US6035394A (en) | System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel | |
| US6725359B2 (en) | Address stage logic for generating speculative address operand interim results of preceding instruction by arithmetic operations and configuring | |
| US6405303B1 (en) | Massively parallel decoding and execution of variable-length instructions | |
| US5802556A (en) | Method and apparatus for correcting misaligned instruction data | |
| JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
| US5961575A (en) | Microprocessor having combined shift and rotate circuit | |
| US6115730A (en) | Reloadable floating point unit | |
| US6209073B1 (en) | System and method for interlocking barrier operations in load and store queues | |
| US5678016A (en) | Processor and method for managing execution of an instruction which determine subsequent to dispatch if an instruction is subject to serialization | |
| US5619667A (en) | Method and apparatus for fast fill of translator instruction queue | |
| US6393446B1 (en) | 32-bit and 64-bit dual mode rotator | |
| US5926645A (en) | Method and system for enabling multiple store instruction completions in a processing system | |
| US6079002A (en) | Dynamic expansion of execution pipeline stages |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |