JP2949857B2 - パイプライン型データプロセッサにおける命令キューを満たす方法 - Google Patents
パイプライン型データプロセッサにおける命令キューを満たす方法Info
- Publication number
- JP2949857B2 JP2949857B2 JP2418553A JP41855390A JP2949857B2 JP 2949857 B2 JP2949857 B2 JP 2949857B2 JP 2418553 A JP2418553 A JP 2418553A JP 41855390 A JP41855390 A JP 41855390A JP 2949857 B2 JP2949857 B2 JP 2949857B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- queue
- pipeline
- predetermined number
- words
- 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
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, look ahead
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47L—DOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
- A47L11/00—Machines for cleaning floors, carpets, furniture, walls, or wall coverings
-
- 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/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length 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, 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
Description
置に関する。さらに詳しくは命令パイプラインを有する
データ処理装置に関する。
が一連の単純な機械操作から構成されている、複雑な組
合せの命令を実行する。特にこれらのデータ処理装置は
長さの可変する(複数の機械操作)命令と、実行時間
(命令毎に複数のクロック・サイクル)とを有してい
る。これらの可変長命令は、さまざまなアドレス・モー
ドで動作する多くの命令によってなされるメモリ・アク
セスを容易にする。
装置では、各命令は、次の命令が始まる前に最後まで実
行される。全体の性能を高めながら、機械操作の効率を
向上させるためには、従来のデータ処理装置設計にパイ
プラインを有するデータ処理装置が実現された。これら
のパイプラインを有するデータ処理装置は、継続する命
令のサブ操作を重ね合わせることにより、いくつかの命
令を平行に実行することができる。パイプラインを有す
るデータ処理装置が1つの新しい命令を取り出し、クロ
ック・サイクル毎に他の命令の実行を完了させることが
最適である。このため、複雑な命令に必要な実際の実行
時間は変化するが、全体的な実行速度はクロック・サイ
クル毎の1個の命令に近づくことになる。その結果、パ
イプラインを有する処理装置を用いることにより、デー
タ処理装置の全体的な性能が著しく向上する。
命令先取り(プリフェッチ)ユニット(IPU:Ins
truction Prefetch Unit)は、
クロック・サイクル毎に必要な数の命令を命令パイプラ
イン(IP:Instruction Pipelin
e)にロードすることのできる命令の流れを保たなけれ
ばならない。もしIPUが、必要な命令の流れを維持す
ることができなければ、そしてIPに必要な数の命令語
がロードされなければ、パイプラインの機能停止が起こ
る。従来の技術では、一時的に複数の命令(たとえば4
ないし8個の命令)を記憶する命令キュー(所定数のバ
ッファ)を持つIPUもある。命令キューは、ディスパ
ッチャとして機能し、IPに対して一連の命令を発す
る。プログラム実行中は、命令キューのバッファは、定
期的に空にされる。そのため、バッファを再び満たす機
構が必要である。通常は、追加の論理回路が先取り命令
キューに付加されて、その中に記憶されている各命令か
ら必要な情報を引き出し、命令キューが空になるとそれ
を再び満たす。このような追加の論理回路を導入するこ
とにより、チップ・エリアの有効利用が図られる。
は、任意の組合せの1,2または3語の命令をクロック
・サイクル毎にIPにロードできるように、命令の流れ
を維持しなければならない。そのうえ、再び満たすため
の機構は、フロー変化命令(たとえば分岐点など)に対
処して、命令キューが必要な命令の流れによって満たさ
れているようにしなければならない。
タ処理装置先取り機構を提供することである。
もっとも早い廃棄点を検出することのできる、改良され
たデータ処理装置先取り機構を提供することである。
装置によって、命令の使用率に基づき、命令キューを再
び満たすことのできる、改良されたデータ処理装置先取
り機構を提供することである。
に説明する方法を行うことにより達成される。その方法
は、メモリから命令シーケンスを先取りする先取りコン
トローラを有するデータ・プロセッサにおいて、パイプ
ライン命令ユニットが調べる命令語数に基づき命令キュ
ーを満たす方法であって、各命令は1以上の命令語から
成り、先取りコントローラはメモリに結合され命令キュ
ーに所定数の命令語をロードし、命令キューは所定数の
バッファを有し、バッファは所定の命令語境界を有しメ
モリから取り出された整数個の命令語を格納し、当該方
法は:マシン・サイクルの所定の第1期間において先取
りコントローラ内のキュー・ポインタ(queue p
ointer)により命令キューに与えられる第1制御
信号に応答して、命令シーケンスに含まれる1以上の命
令語から成る第1命令をパイプライン命令ユニットにロ
ードする段階;パイプライン命令ユニットにおいて第1
命令をデコードして第1命令の命令語数を調べる段階で
あって、命令語数は、第1命令がロードされた後パイプ
ライン命令ユニットが調べるパイプ移動量の値に対応す
る、段階;パイプライン命令ユニットにより、マシンサ
イクルの所定の第2期間において第2制御信号を先取り
コントローラに与える段階であって、第2制御信号は第
1命令の命令語数を指示する、段階;先取りコントロー
ラが第2制御信号を受信したことに応答して、キュー・
ポインタの現在値をパイプライン命令ユニットのパイプ
移動量の値に対応する量だけインクリメントする段階で
あって、キュー・ポインタはパイプライン命令ユニット
にロードされる第2命令を指示し、第2命令は命令キュ
ーに格納される1以上の命令語から成る、段階;および
メモリから次の命令シーケンスを取り出して命令キュー
を満たす取出段階から構成され、取出段階は:キュー・
ポインタの現在値と第1命令がロードされた後パイプラ
イン命令ユニットが調べるパイプ移動量とを結合したも
のが、命令キュー内の所定数のバッファ内の1つにおい
て、格納された命令シーケンスにおける最後の命令語を
示す場合又は命令語境界を越えたことを示す場合にメモ
リから次の命令シーケンスを取り出して命令キューを満
たす段階から構成される。
タ処理装置10の構造を図解したブロック図である。デ
ータ処理装置10は、整数ユニット12,命令メモリユ
ニット14,データ・メモリ・ユニット16.バス・イ
ンターフェース・ユニット(BIU:Bus Inte
rface Unit)18,システム・バス20.メ
モリ22.内部命令データバス24,内部ワードデータ
バス26およびバッファ28,30とから構成されてい
る。本発明の好適な実施例においては、整数ユニット1
2は、命令ユニット32と命令先取りユニット(IP
U)34とから構成されている。命令メモリ・ユニット
14は、命令キャッシュコントローラ36.命令キャッ
シュ38および命令変換ルックアサイド・バッファ(I
TLB:Instruction Translati
on Look−aside Buffer)40とか
ら構成されている。同様に、データ・メモリ・ユニット
16は、データ・キャッシュ・コントローラ42.デー
タ変換ルックアサイド・バッファ(DTLB:Data
Translation Look−asideBu
ffer)44およびデータ・キャッシュ46とから構
成されている。命令キャッシュ・コントローラ36は、
ITLB40と、命令キャッシュ38とを管理する。同
様に、データ・メモリ・コントローラ22はDTLB4
4とデータ・キャッシュ46とを管理する。好適な実施
例においては、命令キャッシュ38とデータ・キャッシ
ュ46とは、4種セット連想キャッシュで、それぞれ4
KBのキャッシュ記憶容量に対し、4個の16バイトラ
インからなる64セットを有している。
装置10の命令先取りユニット(IPU)34の内部構
造を図解したブロック図である。IPU34は、バッフ
ァ・デマルチプレクサ(BDEMUX)48,命令キュ
ー50,バッファ54および先取りコントローラ56と
から構成されている。好適な実施例においては、命令キ
ュー50は8個の命令語(128ビット)を持ち、2個
の4語キューバッファQUEUE ZERO,QUEU
E ONE 51a,51bおよび命令マルチプレクサ
(IMUX)52とから構成されている。従って、QU
EUE ZERO51aとQUEUE ONE 51b
とは、それぞれ64ビットの広さで、それぞれ4個の命
令語を記憶する。
介してIMUX52から命令を受け取る。INU32
は、受け取った命令の長さ(パイプ移動量)と、その命
令が実行操作すべき内容を解読する。先取りコントロー
ラ56内のプログラム・カウンタ(PC)は、現在の命
令語を指し示し、キュー・ポインタとして機能する。命
令の解読が終了すると、INU32は命令パイプライン
移動を先取りコントローラ56に転送し、先取りコント
ローラ56はそのパイプ移動を現在のPCに追加する。
先取りコントローラ56は、PCの下位のnビット(た
とえばn=3)を用いてIMUX52から新しい命令語
を選択する。本発明においては、8個のキュー・ポイン
タのうちの1つがラッピング・ファンネル・シフタ(w
rapping funnel shifter −
図3参照)を通じて、IMUX52のキューから3個の
命令語を選択し、その3個の命令語はバッファ54に転
送される。先取りコントローラ56からCONTROL
(制御)信号を受信するとすぐに、バッファ54はIN
U32に新しい命令をロードする。この命令の長さは
1,2または3語である。INU32は再び命令を解読
して実行操作および命令長を割り出し、パイプライン移
動(0ないし3語)を先取りコントローラ56に転送す
る。先取りコントローラ56はPIPE移動の量だけ、
PCを進めて、キュー・ポインタがPCの下位3ビット
を用いてIMUX52から新しい命令を選択する。
ZERO 51aまたはQUEUEONE 51bのい
ずれかに記憶されていた命令語を排出すると、先取りコ
ントローラ56はメモリからの命令語読み取りリクエス
トを起動させて、排出されたキュー・バッファ51aま
たは51bを満たす。好適な実施例においては、先取り
コントローラ56は、次の命令語のためのREAD R
EQUEST(リクエスト読み取り)信号を命令メモリ
ユニツト14に発する。命令メモリユニット14は、リ
クエストされた命令が命令キヤツシユ38内にあるかど
うかを判定する。要求された一連の命令語が命令キヤツ
シユ38内にある場合は、キャッシュの「ヒット」が起
こり、命令メモリユニツト14は適当な半直線(64ビ
ット)を、命令キャッシュ38からBDEMUX48に
転送する。半直線とは後述するように1つのキャッシュ
・ラインに含まれるものの半分のものを意味する。先取
りコントローラ56は、LOAD(ロード)信号をBD
EMUX48に転送し、それによってQUEUE ZE
RO51aとQUEUE ONE 51bのローディン
グを交互に行う。たとえば(図3Bに示されるよう
に)、BDEMUX48は、現在の命令サイクル中に、
キャッシュ・ラインnの後半の部分をQUEUE ON
E 51b にロードして、次の命令サイクル中に、キ
ャッシュ・ラインn+1の前半部分をQUEUE ON
E 51bにロードする。このように、命令キュー50
に対する書き込みが、QUEUE ZERO51aとQ
UEUEONE51bとの間で、メモリアクセスに無関
係に、交互に行われる。
イクル中に、命令キュー50をロードする。もし必要な
命令が命令キャッシュ38内にないときは、命令キャッ
シュコントローラ36が、命令の先取り中にキャッシュ
「ミス」の発生を判定して、(BIU20を介して)メ
モリ22に対しBURST REQUEST (リクエ
ストのバースト)信号を発する。BURST REQU
EST 信号に応答して、BIU20はメモリ22から
リクエストされたキャッシュ・ライン全体を検索して、
そのキャッシュ・ラインを命令キャッシュ38にロード
する。次に命令メモリユニット14が適当なキャッシュ
半直線をBDEMUX48に転送して、命令キュー50
内に転送させる。
とえば、移動、シフトおよび演算/論理命令など)は、
最大3語の長さを有している。与えられた合令の長さは
INU32が命令を解読するまでは未知であるので、I
NUX52はINU32に対して(バッファ54を介
し)、クロック・サイクル毎に3個の命令語をロードす
る。従って先取りコントローラ56は、命令キュー50
内に、INU32にクロック・サイクル毎に3語の最適
化された命令をロードするのに十分な情報を維持してい
る。このタスクを実行するためには、先取りコントロー
ラ56はQUEUE ZERO 51aまたはQUEU
E ONE 51bのデータがいつ排出されるのかを判
定して、それにしたがって、空になったキュー・バッフ
ァQUEUE ZERO 51aまたはQUEUE O
NE 51bを満たさなければならない。本発明では、
命令キュー50にロードするために用いられる方法は、
プログラム・カウンタ(キュー・ポインタ)と、命令解
読または命令実行により指定される、命令の流れ(キュ
ー)の移動とに基づいている。特に、命令キュー50
は、現在のキュー・ポインタと命令パイプライン(PI
PE)移動が、(1)QUEUE ZERO 51aま
たはQUEUE ONE 51bの最後のワードである
か、(2)4語のバッファ境界を越えて、現在のポイン
タによってアクセスされたキュー・バッファ(QUEU
E ZERO 51aまたはQUEUEONE 51
b)を排出させたときに、再び満たされる。
クル期間に渡る、QUEUE ZERO51aとQUE
UE ONE 51bのローディングと、命令キャッシ
ュ38の内容とを図解している。10個の命令サイクル
中には、INU32には命令キュー50から、IMUX
66を介して、各サイクル毎に3語がロードされる。図
3Aは、命令キャッシュ38のキャッシュ・ラインnか
らn+3までのメモリ内容を図示したものである。たと
えばラインnは、8個の命令語「AAAB BBCC」
を含んでいる。図3Bに示すのは、命令キュー50(Q
UEUE ZERO51aおよびQUEUE ONE
51b)のローディングと、命令キャッシュ38の内容
および命令ユニット32のパイプライン(PIPE)の
ローディングである。図3Bでは、アスタリスクは、命
令サイクル中に、QUEUE ZERO51aとQUE
UE ONE 51bのいずれのキュー・バッファがキ
ャッシュ半直線を受け取ったかを表す。
6は2つのモード、すなわち、逐次モードと、フロー変
化モードで操作することができる。逐次モードでの操作
中は、先取りコントローラ56は、前述したようにQU
EUE ZERO51aとQUEUE ONE 51b
とのローディングを交替に行う。特に逐次モードの操作
では、先取りコントローラ56は、INU32のローデ
ィング後、命令キュー50に残っているワード数に基づ
いて、メモリREAD REQUREST(読み取りリ
クエスト)信号を発する。逆に、フロー変化モードの操
作中は、先取りコントローラ56は、命令キュー50内
に残っているワード数とは関わりなく、QUEUE Z
ERO51aとQUEUE ONE 51bとの両方
に、命令キャッシュ38(または外部メモリ22)から
ロードする。このため、INU32が現在ある命令がフ
ロー変化(COF)命令であると判定すると、INU3
2は先取りコントローラ56に対してCOF信号を送
る。COF信号に応答して、先取りコントローラ56は
たとえばQUEUE ZERO51aをロードして、Q
UEUE ZERO51aのローディング後ただちに、
QUEUE ONE 51bをロードする。このような
先取りによって、命令キュー50は、あたかも、ターゲ
ット命令(たとえば分岐点)にインライン命令実行を通
じて到達した場合と同じ状態になる。
示すように、先取りコントローラ56は命令メモリユニ
ット14に対してREAD REQUEST信号を発し
て、それにより、命令メモリユニット14はQUEUE
ZERO51aおよびQUEUE ONE 51b
に、キャッシュ・ラインnの内容をロードする。したが
って、READ REQUEST信号に応答して、命令
メモリユニット14は、アスタリスクで示されるよう
に、QUEUE ZERO51aに命令語「AAAB」
をロードし、QUEUE ONE 51bには語「BB
CC」をロードする。最初の命令サイクルの前半で、I
NU32はPIPE内にある現在の命令を解読して(現
在の命令は図3Bには示されていない)、0ないし3語
のPIPE移動を先取りコントローラ56に転送する。
つぎにINU32は、命令の実行を従来の方法で進め
る。最初の命令サイクルの後半で、先取りコントローラ
56は所定のPIPE移動に基づきPCを進めて、IM
UX66から次のセットの語を選択する。従ってキュー
・ポインタはIMUX66から3語を選択し(「AA
A」)、それはINU32(PIPE)にロードされ
る。
「AAA」命令を解読して、先取りコントローラ56に
応答し、命令語長が3であることを知らせる。先取りコ
ントローラ56は、PIPE移動によって現在のキュー
・ポインタを増分させてから、QUEUE ZERO
51a内には(PIPEのロード後は)1語しか残って
いないことを判定する。この判定の結果に基づいて先取
りコントローラ56は第2命令サイクルの前半におい
て、キャッシュ・ラインn+1の前半部分(「CDD
D」)をQUEUE ZERO 51aにロードするた
め(矢印で示されるように)、READ REQUES
T信号を命令メモリ・ユニット14に発する。上記に説
明したように、先取りコントローラ56は命令キャッシ
ュ38のアクセスにかかわらず、QUEUE ZERO
51aとQUEUEONE 51bのローディングを
交互に行う。第2の命令サイクルの後半で、先取りコン
トローラ56はPCを3だけ進めて、命令キュー50か
ら他のセットの語を選択する。したがって、キュー・ポ
インタはIMUX66から3語を選択し(「BB
B」)、それは第2命令サイクルの後半でPIPEにロ
ードされる。
は「BBB」命令を解読して、上述のように、先取りコ
ントローラ56に再び応答する。第3命令サイクルの後
半で、先取りコントローラ56はPCを進めて、IMU
X66から次の命令語のセット(「CCC」)を選択し
て、それがPIPEにロードされる。第4命令サイクル
の前半で、INU32は「CCC」命令を解読して、先
取りコントローラ56に対して命令語長が3であること
を応答する。先取りコントローラ56は、PIPE移動
が4語バッファ境界を越えていることを確認して、それ
によってQUEUE ONE 51bに格納されている
データを排出する。その結果、先取りコントローラ56
はREAD REQUEST信号を命令メモリ・ユニッ
ト14に発して、キャッシュ・ラインn+1の後半
(「EEEF」)を、矢印で示されるように、次のサイ
クル中(第5命令サイクルの前半)にQUEUE ON
E 51bにロードする。第4命令サイクルの後半で
は、先取りコントローラ56はPCを進めて、IMUX
66から次のセットの語(「DDD」)を選択して、そ
れがPIPEにロードされる。この逐次の先取り方法
は、INU32がフロー変化命令を検出するまで継続さ
れる。
フロー変化命令(たとえば分岐点命令)に応答して、2
回または3回の4語先取りを行う。前述したように、I
NU32は各命令の命令長および/またはパイプ移動と
を解読して実行操作を行う。フロー変化命令を検出する
と、INU32は、フロー変化(COF)信号と、命令
アドレスとを先取りコントローラ56に転送する。CO
F信号に応答して、先取りコントローラ56は必要な数
の命令先取りサイクル(2回または3回の4語先取り)
を、命令の一部として開始する。
・サイクルの前半で、PIPE移動の量(たとえば0な
いし3語)を先取りコントローラ56に応答する。先取
りコントローラ56は、クロック・サイクルの後半を使
って、プログラム・カウンタ(キュー・ポインタ)を進
めて、命令キュー50から他のセットの語を選択する。
命令キュー50を満たす方法は、プログラム・カウンタ
と、命令解読または命令実行の後にINU32によって
指定される命令ストリーム移動とに基づいている。キュ
ーを満たす方法のモデルを以下に図解する。
満たす方法は、3語の最適化された命令がINUE32
(PIPE)にロードされた後、および命令キュー50
が命令キャッシュ38からロードされる前に、命令キュ
ー50内に残っている語数によって決まる。上記のケー
ス1および2に示したように、PIPEロード後に命令
キュー内に3語以上が残っていると、先取りコントロー
ラ56は命令メモリ・ユニット14に対して、READ
REQUESTを発しない。同様に、すべてのケース
で説明したように、PIPE移動がゼロの場合は、先取
りコントローラ56はREAD REQUEST信号を
発しない。そのため、命令の先取りは起こらない。キュ
ー・ポインタ(PC)と、PIPE移動(MOVE)
が、4語バッファ境界を越えると、次の命令サイクル中
に必要な命令語が先取りされる(ケース3および4)。
ケース4では、キュー・ポインタはまず命令キューバッ
ファQUEUE ZERO51aおよびQUEUE O
NE 51bの最後の語を指し示す。その結果、先取り
コントローラ56は、PIPE移動の量に関わらずRE
AD REQUEST信号を発しない。これは、命令キ
ャッシュ38からの必要な半直線がすでに検索されてい
るからである(図3B参照)。
たが、開示された発明は、多くの方法に改変することが
でき、上記に特定されたもの以外のさまざまな実施例を
前提とするものであることは、当業者には明白であろ
う。たとえば、キューを満たす方法を改変して、3語よ
り大きい最適化された命令を、クロック・サイクル毎に
命令PIPEにロードすることもできる。特に、命令キ
ュー50を、たとえば16命令語(256ビット)まで
対応できるような大きさにすると、PIPEからの全キ
ャッシュ・ラインのアクセスが可能となる。さらに、I
MUX66を改変して、3語より大きいセットの語をク
ロック・サイクル毎に命令PIPE内にロードできるよ
うにすることもできる。同様に、IPU34はINU3
2に対して、一語長の複数の命令をディスパッチするこ
ともできる。このように、IPU34は、クロック・サ
イクル毎にさまざまな長さの命令を与えたり、さまざま
な数の命令を与えることができ、さらに、INU32に
よる命令の使用数に応じて、命令キューを満たすことが
できる。したがって、添付された請求項は、本発明の信
念と範囲内に当てはまる全ての修正を含むものとする。
ク図である。
ブロック図である。
ュの4本のラインのメモリ内容を、命令形式で図解した
ものである。
ーディングを図解した表である。
Claims (4)
- 【請求項1】 メモリから命令シーケンスを先取りする
先取りコントローラを有するデータ・プロセッサにおい
て、パイプライン命令ユニットが調べる命令語数に基づ
き命令キューを満たす方法であって、各命令は1以上の
命令語から成り、前記先取りコントローラは前記メモリ
に結合され命令キューに所定数の命令語をロードし、前
記命令キューは所定数のバッファを有し、前記バッファ
は所定の命令語境界を有し前記メモリから取り出された
整数個の命令語を格納し、当該方法は: マシン・サイクルの所定の第1期間において前記先取り
コントローラ内のキュー・ポインタにより前記命令キュ
ーに与えられる第1制御信号に応答して、前記命令シー
ケンスに含まれる1以上の命令語から成る第1命令を前
記パイプライン命令ユニットにロードする段階; 前記パイプライン命令ユニットにおいて前記第1命令を
デコードして前記第1命令の命令語数を調べる段階であ
って、前記命令語数は、前記第1命令がロードされた後
パイプライン命令ユニットが調べるパイプ移動量の値に
対応する、段階; 前記パイプライン命令ユニットにより、前記マシンサイ
クルの所定の第2期間において第2制御信号を前記先取
りコントローラに与える段階であって、前記第2制御信
号は前記第1命令の命令語数を指示する、段階; 前記先取りコントローラが前記第2制御信号を受信した
ことに応答して、前記キュー・ポインタの現在値を前記
パイプライン命令ユニットの前記パイプ移動量の値に対
応する量だけインクリメントする段階であって、前記キ
ュー・ポインタは前記パイプライン命令ユニットにロー
ドされる第2命令を指示し、前記第2命令は前記命令キ
ューに格納される1以上の命令語から成る、段階;およ
び前記メモリから次の命令シーケンスを取り出して前記
命令キューを満たす取出段階から構成され、前記取出段
階は: 前記キュー・ポインタの現在値と前記第1命令がロード
された後前記パイプライン命令ユニットが調べるパイプ
移動量とを結合したものが、前記命令キュー内の前記所
定数のバッファ内の1つにおいて、格納された命令シー
ケンスにおける最後の命令語を示す場合、又は前記キュ
ー・ポインタの現在値と前記第1命令がロードされた後
前記パイプライン命令ユニットが調べるパイプ移動量と
を結合したものが、前記命令キュー内の前記所定数のバ
ッファ内の1つにおいて、命令語境界を越えたことを示
す場合に前記メモリから次の命令シーケンスを取り出し
て前記命令キューを満たす段階から構成される方法。 - 【請求項2】 メモリから所定数の命令語を先取りして
命令キューに格納させる先取りコントローラを有するデ
ータ・プロセッサにおいて、所定数の命令語をロードし
た後パイプライン命令ユニットが調べるパイプ移動量に
基づき前記命令キューを満たす方法であって、前記命令
キューは所定数のバッファを有し、前記バッファは所定
の命令語境界を有し前記メモリから取り出された整数個
の命令語を格納し、各命令は1以上の命令語から成り、
前記先取りコントローラは前記命令キューから前記パイ
プライン命令ユニットに所定数の命令語を提供し、当該
方法は: 前記パイプライン命令ユニットにおいて所定数の命令語
から成る第1命令をデコードして前記パイプライン命令
ユニットのパイプ移動量を調べる段階であって、前記パ
イプ移動量は、マシンサイクルの所定の第1期間におい
て前記パイプライン命令ユニットで使用される前記第1
命令の命令語数に対応する、段階; 前記先取りコントローラが、マシンサイクルの所定の第
2期間において前記パイプライン命令ユニットから第1
制御信号を受信したことに応答して、前記先取りコント
ローラにおけるキュー・ポインタの現在値を前記パイプ
ライン命令ユニットのパイプ移動量に対応する量だけイ
ンクリメントする段階であって、前記第1制御信号は、
前記パイプライン命令ユニットのパイプ移動量を示す、
段階;および前記メモリから次の所定数の命令語を取り
出して前記命令キューを満たす取出段階から構成され、
前記取出段階は: 前記キュー・ポインタの現在値と前記第1命令がロード
された後前記パイプライン命令ユニットが調べるパイプ
移動量とを結合したものが、前記命令キュー内の前記所
定数のバッファ内の1つにおいて、格納された命令シー
ケンスにおける最後の命令語を示す場合、又は前記キュ
ー・ポインタの現在値と前記第1命令がロードされた後
前記パイプライン命令ユニットが調べるパイプ移動量と
を結合したものが、前記命令キュー内の前記所定数のバ
ッファ内の1つにおいて、命令語境界を越えたことを示
す場合に前記メモリから次の所定数の命令語を取り出し
て前記命令キューを満たす段階から構成される方法。 - 【請求項3】 メモリから命令シーケンスを先取りする
先取りコントローラを有するデータ・プロセッサにおい
て、前記パイプライン命令ユニットが使用する命令語数
に応じて前記パイプライン命令ユニットが調べるパイプ
移動量に基づき命令キューを満たす方法であって、前記
命令シーケンスは長さが可変である命令から成り、各命
令は1以上の命令語から成り、前記命令キューは所定数
のバッファを有し前記メモリから取り出された整数個の
命令語を格納し、当該方法は: マシン・サイクルの所定の第1期間において前記パイプ
ライン命令ユニットが所定数の命令語をデコードし、命
令の長さと、該命令を前記パイプライン命令ユニットが
実行した結果生じるパイプライン命令ユニットのパイプ
移動量とを調べる段階; 前記パイプライン命令ユニットが、前記パイプ移動量を
示す第1制御信号を前記先取りコントローラに与える段
階であって、前記パイプ移動量は実行される命令の長さ
の値に対応する、段階; マシンサイクルの所定の第2期間において前記パイプ移
動量に基づいて前記命令キューから次の所定数の命令語
を特定するため、前記先取りコントローラにおいてキュ
ー・ポインタの現在値を進める段階;および前記メモリ
から次の命令シーケンスを取り出して前記命令キューを
満たす取出段階から構成され、前記取出段階は: 前記キュー・ポインタの現在値と所定数の命令語がロー
ドされた後前記パイプライン命令ユニットが調べるパイ
プ移動量とを結合したものが、前記命令キュー内の前記
所定数のバッファ内の1つにおいて、格納された命令シ
ーケンスにおける最後の命令語を示す場合、又は前記キ
ュー・ポインタの現在値と所定数の命令語がロードされ
た後前記パイプライン命令ユニットが調べるパイプ移動
量とを結合したものが、前記命令キュー内の前記所定数
のバッファ内の1つにおいて、命令語境界を越えたこと
を示す場合に前記メモリから次の命令シーケンスを取り
出して前記命令キューを満たす段階から構成される方
法。 - 【請求項4】 メモリから所定数の命令語を先取りして
命令キューに格納させる先取りコントローラを有するデ
ータ・プロセッサにおいて、所定数の命令語をロードし
た後パイプライン命令ユニットが調べる命令語数に基づ
き命令キューを満たす方法であって、各命令は1以上の
命令語から成り、前記命令キューは所定数のバッファを
有し、前記バッファは所定の命令語境界を有し、前記先
取りコントローラは前記命令キューからパイプライン命
令ユニットに所定数の命令語を提供させ、当該方法は: 前記パイプライン命令ユニットにおいて所定数の命令語
から成る第1命令をデコードして前記パイプライン命令
ユニットのパイプ移動量を調べる段階であって、前記パ
イプ移動量は、マシンサイクルの所定の第1期間におい
て前記パイプライン命令ユニットで調べられた第1命令
の命令語数に対応する、段階; 前記マシンサイクルの所定の第2期間において前記パイ
プライン命令ユニットから第1制御信号を受信したこと
に応答して、前記先取りコントローラにおけるキュー・
ポインタの現在値を前記パイプライン命令ユニットのパ
イプ移動量だけインクリメントする段階であって、前記
第1制御信号は前記パイプライン命令ユニットのパイプ
移動量に対応する、段階; 前記キュー・ポインタによりインクリメントした値に基
づき前記マシンサイクルの次のマシンサイクルにおい
て、前記命令キューから次の所定数の命令語を選択して
前記パイプライン命令ユニットにロードする段階;およ
び前記メモリから次の所定数の命令語を取り出して前記
命令キューを満たす取出段階から構成され、前記取出段
階は: 前記キュー・ポインタの現在値と前記第1命令がロード
された後前記パイプライン命令ユニットが調べるパイプ
移動量とを結合したものが、前記命令キュー内の前記所
定数のバッファ内の1つにおいて、格納された命令シー
ケンスにおける最後の命令語を示す場合、又は前記キュ
ー・ポインタの現在値と前記第1命令がロードされた後
前記パイプライン命令ユニットが調べるパイプ移動量と
を結合したものが、前記命令キュー内の前記所定数のバ
ッファ内の1つにおいて、命令語境界を越えたことを示
す場合に前記メモリから次の所定数の命令語を取り出し
て前記命令キューを満たす段階から構成される方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US45960290A | 1990-01-02 | 1990-01-02 | |
US459.602 | 1990-01-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05324317A JPH05324317A (ja) | 1993-12-07 |
JP2949857B2 true JP2949857B2 (ja) | 1999-09-20 |
Family
ID=23825441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2418553A Expired - Fee Related JP2949857B2 (ja) | 1990-01-02 | 1990-12-28 | パイプライン型データプロセッサにおける命令キューを満たす方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5317701A (ja) |
EP (1) | EP0436341B1 (ja) |
JP (1) | JP2949857B2 (ja) |
KR (1) | KR910014804A (ja) |
DE (1) | DE69030648T2 (ja) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5590294A (en) * | 1991-03-19 | 1996-12-31 | Silicon Graphics, Inc. | Method and apparatus for retarting pipeline processing |
US5572682A (en) * | 1992-04-03 | 1996-11-05 | Cyrix Corporation | Control logic for a sequential data buffer using byte read-enable lines to define and shift the access window |
JP2744882B2 (ja) * | 1993-01-15 | 1998-04-28 | インターナショナル・ビジネス・マシーンズ・コーポレイション | キューにより命令の実行を制御する装置及び方法 |
US5511174A (en) * | 1993-03-31 | 1996-04-23 | Vlsi Technology, Inc. | Method for controlling the operation of a computer implemented apparatus to selectively execute instructions of different bit lengths |
US5604909A (en) | 1993-12-15 | 1997-02-18 | Silicon Graphics Computer Systems, Inc. | Apparatus for processing instructions in a computing system |
US5600806A (en) * | 1994-03-01 | 1997-02-04 | Intel Corporation | Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer |
US5758116A (en) * | 1994-09-30 | 1998-05-26 | Intel Corporation | Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions |
US5809529A (en) * | 1995-08-23 | 1998-09-15 | International Business Machines Corporation | Prefetching of committed instructions from a memory to an instruction cache |
US5781789A (en) * | 1995-08-31 | 1998-07-14 | Advanced Micro Devices, Inc. | Superscaler microprocessor employing a parallel mask decoder |
US5748855A (en) * | 1995-10-02 | 1998-05-05 | Iinternational Business Machines Corporation | Method and system for performance monitoring of misaligned memory accesses in a processing system |
US5949971A (en) * | 1995-10-02 | 1999-09-07 | International Business Machines Corporation | Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system |
US5797019A (en) * | 1995-10-02 | 1998-08-18 | International Business Machines Corporation | Method and system for performance monitoring time lengths of disabled interrupts in a processing system |
US5729726A (en) * | 1995-10-02 | 1998-03-17 | International Business Machines Corporation | Method and system for performance monitoring efficiency of branch unit operation in a processing system |
US5751945A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system |
US5752062A (en) * | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system |
US5691920A (en) * | 1995-10-02 | 1997-11-25 | International Business Machines Corporation | Method and system for performance monitoring of dispatch unit efficiency in a processing system |
US5809272A (en) * | 1995-11-29 | 1998-09-15 | Exponential Technology Inc. | Early instruction-length pre-decode of variable-length instructions in a superscalar processor |
US5619667A (en) * | 1996-03-29 | 1997-04-08 | Integrated Device Technology, Inc. | Method and apparatus for fast fill of translator instruction queue |
US5983344A (en) * | 1997-03-19 | 1999-11-09 | Integrated Device Technology, Inc. | Combining ALU and memory storage micro instructions by using an address latch to maintain an address calculated by a first micro instruction |
AU2986099A (en) * | 1998-03-18 | 1999-10-11 | Qualcomm Incorporated | A digital signal processor |
US6275924B1 (en) * | 1998-09-15 | 2001-08-14 | Texas Instruments Incorporated | System for buffering instructions in a processor by reissuing instruction fetches during decoder stall time |
KR100638935B1 (ko) * | 1998-06-08 | 2006-10-25 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 데이터 프로세서 |
DE69935066D1 (de) | 1999-05-03 | 2007-03-22 | St Microelectronics Sa | Befehlsvorausholeinheit |
AU2597401A (en) * | 1999-12-22 | 2001-07-03 | Ubicom, Inc. | System and method for instruction level multithreading in an embedded processor using zero-time context switching |
US7308686B1 (en) * | 1999-12-22 | 2007-12-11 | Ubicom Inc. | Software input/output using hard real time threads |
US7047396B1 (en) | 2000-06-22 | 2006-05-16 | Ubicom, Inc. | Fixed length memory to memory arithmetic and architecture for a communications embedded processor system |
JP3973129B2 (ja) * | 2000-07-19 | 2007-09-12 | 株式会社日立製作所 | キャッシュメモリ装置及びそれを用いた中央演算処理装置 |
US7082516B1 (en) | 2000-09-28 | 2006-07-25 | Intel Corporation | Aligning instructions using a variable width alignment engine having an intelligent buffer refill mechanism |
US6738792B1 (en) | 2001-03-09 | 2004-05-18 | Advanced Micro Devices, Inc. | Parallel mask generator |
US6898694B2 (en) * | 2001-06-28 | 2005-05-24 | Intel Corporation | High instruction fetch bandwidth in multithread processor using temporary instruction cache to deliver portion of cache line in subsequent clock cycle |
JP4073721B2 (ja) * | 2002-06-28 | 2008-04-09 | 株式会社ルネサステクノロジ | データ処理装置 |
US7822950B1 (en) | 2003-01-22 | 2010-10-26 | Ubicom, Inc. | Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls |
US7469334B1 (en) * | 2004-03-30 | 2008-12-23 | Sun Microsystems, Inc. | Method and apparatus for facilitating a fast restart after speculative execution |
US20050278517A1 (en) * | 2004-05-19 | 2005-12-15 | Kar-Lik Wong | Systems and methods for performing branch prediction in a variable length instruction set microprocessor |
US20060212658A1 (en) * | 2005-03-18 | 2006-09-21 | International Business Machines Corporation. | Prefetch performance of index access by look-ahead prefetch |
US20070073925A1 (en) * | 2005-09-28 | 2007-03-29 | Arc International (Uk) Limited | Systems and methods for synchronizing multiple processing engines of a microprocessor |
US7454585B2 (en) * | 2005-12-22 | 2008-11-18 | International Business Machines Corporation | Efficient and flexible memory copy operation |
US8725991B2 (en) * | 2007-09-12 | 2014-05-13 | Qualcomm Incorporated | Register file system and method for pipelined processing |
WO2012101761A1 (ja) * | 2011-01-25 | 2012-08-02 | 富士通株式会社 | システム、およびデータロード方法 |
US10216520B2 (en) * | 2014-10-06 | 2019-02-26 | Via Technologies, Inc. | Compressing instruction queue for a microprocessor |
JP6457836B2 (ja) | 2015-02-26 | 2019-01-23 | ルネサスエレクトロニクス株式会社 | プロセッサおよび命令コード生成装置 |
CN106227507B (zh) * | 2016-07-11 | 2019-10-18 | 北京深鉴智能科技有限公司 | 计算系统及其控制器 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2298139A1 (fr) * | 1975-01-16 | 1976-08-13 | Int Computers Ltd | Dispositif de recherche et d'execution des instructions dans un process |
US4200927A (en) * | 1978-01-03 | 1980-04-29 | International Business Machines Corporation | Multi-instruction stream branch processing mechanism |
US4516199A (en) * | 1979-10-11 | 1985-05-07 | Nanodata Computer Corporation | Data processing system |
JPS619734A (ja) * | 1984-06-26 | 1986-01-17 | Nec Corp | プロセツサ制御方式 |
US4847759A (en) * | 1985-03-18 | 1989-07-11 | International Business Machines Corp. | Register selection mechanism and organization of an instruction prefetch buffer |
CA1233270A (en) * | 1985-03-18 | 1988-02-23 | Vojin G. Oklobdzija | Register selection mechanism and organization of an instruction prefetch buffer |
US4714994A (en) * | 1985-04-30 | 1987-12-22 | International Business Machines Corp. | Instruction prefetch buffer control |
US4791557A (en) * | 1985-07-31 | 1988-12-13 | Wang Laboratories, Inc. | Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system |
JPS6356731A (ja) * | 1986-08-27 | 1988-03-11 | Mitsubishi Electric Corp | デ−タ処理装置 |
JPS6398737A (ja) * | 1986-10-15 | 1988-04-30 | Mitsubishi Electric Corp | デ−タ処理装置 |
JPH0772863B2 (ja) * | 1986-10-30 | 1995-08-02 | 日本電気株式会社 | プログラムカウンタ相対アドレス計算方式 |
US5113515A (en) * | 1989-02-03 | 1992-05-12 | Digital Equipment Corporation | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
-
1990
- 1990-12-17 DE DE69030648T patent/DE69030648T2/de not_active Expired - Fee Related
- 1990-12-17 EP EP90313776A patent/EP0436341B1/en not_active Expired - Lifetime
- 1990-12-27 KR KR1019900021914A patent/KR910014804A/ko active IP Right Grant
- 1990-12-28 JP JP2418553A patent/JP2949857B2/ja not_active Expired - Fee Related
-
1993
- 1993-01-19 US US08/005,924 patent/US5317701A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0436341B1 (en) | 1997-05-07 |
US5317701A (en) | 1994-05-31 |
EP0436341A2 (en) | 1991-07-10 |
DE69030648T2 (de) | 1997-11-13 |
EP0436341A3 (en) | 1993-03-17 |
KR910014804A (ko) | 1991-08-31 |
DE69030648D1 (de) | 1997-06-12 |
JPH05324317A (ja) | 1993-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2949857B2 (ja) | パイプライン型データプロセッサにおける命令キューを満たす方法 | |
EP0380854B1 (en) | Instruction buffer system for a digital computer | |
JP3800383B2 (ja) | コンピュータのランダムアクセスメモリシステム | |
US5907702A (en) | Method and apparatus for decreasing thread switch latency in a multithread processor | |
US6253287B1 (en) | Using three-dimensional storage to make variable-length instructions appear uniform in two dimensions | |
US4873629A (en) | Instruction processing unit for computer | |
EP0391517A2 (en) | Method and apparatus for ordering and queueing multiple memory access requests | |
IE990754A1 (en) | An apparatus for software initiated prefetch and method therefor | |
TW200842703A (en) | Branch predictor directed prefetch | |
US20080140934A1 (en) | Store-Through L2 Cache Mode | |
US6658534B1 (en) | Mechanism to reduce instruction cache miss penalties and methods therefor | |
KR100638935B1 (ko) | 데이터 프로세서 | |
US6275903B1 (en) | Stack cache miss handling | |
US5752263A (en) | Apparatus and method for reducing read miss latency by predicting sequential instruction read-aheads | |
JP3732555B2 (ja) | 非逐次アクセスの実効待ち時間が短いパイプライン・キャッシュシステム | |
EP1413953A2 (en) | Instruction prefetch method and apparatus for conditional branch instructions | |
US5897654A (en) | Method and system for efficiently fetching from cache during a cache fill operation | |
US7430657B2 (en) | System, method and device for queuing branch predictions | |
US6654872B1 (en) | Variable length instruction alignment device and method | |
KR19990003937A (ko) | 프리페치 장치 | |
EP0116600B1 (en) | Pre-execution next address calculating mechanism | |
JPH02242429A (ja) | パイプライン浮動小数点ロード・インストラクシヨン回路 | |
US7996655B2 (en) | Multiport execution target delay queue FIFO array | |
US7769987B2 (en) | Single hot forward interconnect scheme for delayed execution pipelines | |
JPH0331933A (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070709 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080709 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080709 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090709 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |