JPH05324317A - 1,2または3語の命令を順次先取りする方法 - Google Patents

1,2または3語の命令を順次先取りする方法

Info

Publication number
JPH05324317A
JPH05324317A JP2418553A JP41855390A JPH05324317A JP H05324317 A JPH05324317 A JP H05324317A JP 2418553 A JP2418553 A JP 2418553A JP 41855390 A JP41855390 A JP 41855390A JP H05324317 A JPH05324317 A JP H05324317A
Authority
JP
Japan
Prior art keywords
instruction
queue
instructions
words
pipe
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
Application number
JP2418553A
Other languages
English (en)
Other versions
JP2949857B2 (ja
Inventor
Russell Reininger
ラッセル・レーニンガー
Jr William B Ledbetter
ウィリアム・ビー・レッドベター・ジュニア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Motorola Inc filed Critical Motorola Inc
Publication of JPH05324317A publication Critical patent/JPH05324317A/ja
Application granted granted Critical
Publication of JP2949857B2 publication Critical patent/JP2949857B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47LDOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
    • A47L11/00Machines for cleaning floors, carpets, furniture, walls, or wall coverings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

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)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】 逐次先取り方法が、逐次命令先取りユニット
(IPU)を有するパイプラインのあるデータ処理装置
のために提供された。 【構成】 IPU34内の命令キューは、パイプライン
でつながれた命令ユニット32と、データ処理装置10
の命令キャッシュ38とに結合されている。IPU34
内の先取りコントローラは、先取りした命令の流れを維
持して、命令キューが1.2または3語のいずれの組合
せの命令をもクロック・サイクル毎にパイプラインでつ
ながれている命令ユニット32にロードできるようにし
ている。パイプラインでつながれた命令ユニット32
は、命令キューから命令語を受け取り、実行操作と命令
長/パイプライン移動とを解読する。命令キュー内に必
要な数の命令語を維持して、パイプラインの詰まりを避
けるために、キューを満たす方法が提供されている。キ
ューを満たす方法は、命令キューから受け取られた命令
語の命令順序決定装置による使用率に属する命令パイプ
ラインの移動に基づいたものである。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的にデータ処理装
置に関する。さらに詳しくは命令パイプラインを有する
データ処理装置に関する。
【0002】
【従来の技術】今日の高性能データ処理装置は、各命令
が一連の単純な機械操作から構成されている、複雑な組
合せの命令を実行する。特にこれらのデータ処理装置は
長さの可変する(複数の機械操作)命令と、実行時間
(命令毎に複数のクロック・サイクル)とを有してい
る。これらの可変長命令は、さまざまなアドレス・モー
ドで動作する多くの命令によってなされるメモリ・アク
セスを容易にする。
【0003】従来のパイプラインを持たないデータ処理
装置では、各命令は、次の命令が始まる前に最後まで実
行される。全体の性能を高めながら、機械操作の効率を
向上させるためには、従来のデータ処理装置設計にパイ
プラインを有するデータ処理装置が実現された。これら
のパイプラインを有するデータ処理装置は、継続する命
令のサブ操作を重ね合わせることにより、いくつかの命
令を平行に実行することができる。パイプラインを有す
るデータ処理装置が1つの新しい命令を取り出し、クロ
ック・サイクル毎に他の命令の実行を完了させることが
最適である。このため、複雑な命令に必要な実際の実行
時間は変化するが、全体的な実行速度はクロック・サイ
クル毎の1個の命令に近づくことになる。その結果、パ
イプラインを有する処理装置を用いることにより、デー
タ処理装置の全体的な性能が著しく向上する。
【0004】1個のサイクル命令実行を行うためには、
命令先取り(プリフェッチ)ユニット(IPU:Ins
truction Prefetch Unit)は、
クロック・サイクル毎に必要な数の命令を命令パイプラ
イン(IP:Instruction Pipelin
e)にロードすることのできる命令の流れを保たなけれ
ばならない。もしIPUが、必要な命令の流れを維持す
ることができなければ、そしてIPに必要な数の命令語
がロードされなければ、パイプラインの機能停止が起こ
る。従来の技術では、一時的に複数の命令(たとえば4
ないし8個の命令)を記憶する命令キュー(所定数のバ
ッファ)を持つIPUもある。命令キューは、ディスパ
ッチャとして機能し、IPに対して一連の命令を発す
る。プログラム実行中は、命令キューのバッファは、定
期的に空にされる。そのため、バッファを再び満たす機
構が必要である。通常は、追加の論理回路が先取り命令
キューに付加されて、その中に記憶されている各命令か
ら必要な情報を引き出し、命令キューが空になるとそれ
を再び満たす。このような追加の論理回路を導入するこ
とにより、チップ・エリアの有効利用が図られる。
【0005】
【発明が解決しようとする課題】再び満たすための機構
は、任意の組合せの1,2または3語の命令をクロック
・サイクル毎にIPにロードできるように、命令の流れ
を維持しなければならない。そのうえ、再び満たすため
の機構は、フロー変化命令(たとえば分岐点など)に対
処して、命令キューが必要な命令の流れによって満たさ
れているようにしなければならない。
【0006】従って、本発明の目的は、改良されたデー
タ処理装置先取り機構を提供することである。
【0007】本発明の他の目的は、格納装置内の命令の
もっとも早い廃棄点を検出することのできる、改良され
たデータ処理装置先取り機構を提供することである。
【0008】本発明のさらに他の目的は、命令順序決定
装置によって、命令の使用率に基づき、命令キューを再
び満たすことのできる、改良されたデータ処理装置先取
り機構を提供することである。
【0009】
【課題を解決するための手段】本発明の上記およびその
他の目的は、先取りコントローラを有するデータ処理装
置によって達成される。このコントローラはメモリか
ら、さまざまな語長の一連の命令を取り出し、命令キュ
ーの一連の命令から所定数の命令語を供給する。命令キ
ューは、所定数の命令語の命令順序決定装置による使用
率に対応して、命令パイプライン(PIPE)内の命令
語の移動に基づいて満たされる。第1部分の機械サイク
ル中に、先取りコントローラのキュー・ポインタ(qu
eue pointerによって設けられた第1制御信
号に応答して、命令順序決定装置には、所定数の命令語
がロードされる。命令順序決定装置内にある命令は、解
読されて、命令の可変語長を決定する。第2部分の機械
サイクル中に、第2制御信号が先取りコントロールに与
えられ、この第2制御信号は、所定数の命令語の命令順
序決定装置による使用率の値に応じて、PIPE移動の
量を示す。先取りコントローラ内のキュー・ポインタ
は、先取りコントローラ内のPIPE移動量の値に対応
する量だけ、増分されて、命令キュー内の次の命令語を
指し示す。メモリから、次の列の命令が検索されて、命
令キューに記憶される。ただしこのためには、以下の条
件のいずれかが満たされていなければならない。PIP
E移動量と組み合わされたキュー・ポインタが、命令キ
ューのバッファに記憶されている所定数の命令のうち最
後の命令語を指し示していること。PIPE移動量と組
み合わされたキュー・ポインタが、命令キューのバッフ
ァの命令語境界線を越えていること。
【0010】
【実施例】図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セットを有している。
【0011】図2に示すのは、本発明によるデータ処理
装置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個の命
令語を記憶する。
【0012】動作中は、INU32は、バッファ54を
介してIMUX52から命令を受け取る。INU32は
命令語長(命令パイプライン移動)の命令と、実行操作
のための命令を解読する。先取りコントローラ56内の
プログラム・カウンタ(PC)は、現在の命令語を指し
示し、キュー・ポインタとして機能する。命令の解読が
終了すると、INU32は命令パイプライン移動を先取
りコントローラ56に転送し、先取りコントローラ56
はそのパイプ移動を現在のPCに追加する。先取りコン
トローラ56は、PCの下位のnビット(たとえばn=
3)を用いてIMUX52から新しい命令語を選択す
る。本発明においては、8個のキュー・ポインタのうち
の1つが、ラッピング・ファンネル・シフタ(wrap
pingfunnel shifter−図3参照)を
通じて、IMUX52のキューから3個の命令語を選択
し、その3個の命令語はバッファ54に転送される。先
取りコントローラ56からCONTROL(制御)信号
を受信するとすぐに、バッファ54はINU32に新し
い命令をロードする。この命令の長さは1.2または3
語である。INU32は再び命令を解読して実行操作お
よび命令長を割り出し、パイプライン移動(0ないし3
語)を先取りコントローラ56に転送する。先取りコン
トローラ56はPIPE移動の量だけ、PCを進めて、
キュー・ポインタがPCの下位3ビットを用いてIMU
X52から新しい命令を選択する。
【0013】命令パイプラインの移動が、QUEUE
ZERO51aまたはQUEUEONE 51bのいず
れかに記憶されていた命令語を排出すると、先取りコン
トローラ56はメモリからの命令読み取りリクエストを
起動させて、排出されたキュー・バッファ51aまたは
51bを満たす。好適な実施例においては、先取りコン
トローラ56は、次の命令語のためのREAD REQ
UEST(リクエスト読み取り)信号を命令メモリユニ
ット14に発する。命令メモリユニット14は、リクエ
ストされた命令が命令キャッシュ38内にあるかどうか
を判定する。要求された一連の命令語が命令キャッシュ
38内にある場合は、キャッシュの「ヒット」が起こ
り、命令メモリユニット14は適当な半直線(64ビッ
ト)を、命令キャッシュ38からBDEMUX48に転
送する。先取りコントローラ56は、LOAD(ロー
ド)信号をBEEMUX48に転送し、それによってQ
UEUE ZERO51aとQUEUE ONE 51
bのローディングを交互に行う。たとえば(図3Bに示
されるように)、BDEMUX48は、現在の命令サイ
クル中にキャッシュ・ラインnの後半の部分をQUEU
E ONE 51bにロードして、次の命令サイクル中
に、キャッシュ・ラインn+1の前半部分をQUEUE
ONE 51bにロードする。このように、命令キュ
ー50に対する書き込みが、QUEUE ZERO51
aとQUEUE ONE 51bとの間で、メモリアク
セスに無関係に、交互におこなわれる。
【0014】通常、命令キャッシュ38は1回の命令サ
イクル中に、命令キュー50をロードする。もし必要な
命令が命令キャッシュ38内にないときは、命令キャッ
シュコントローラ36が、命令の先取り中にキャッシュ
「ミス」の発生を判定して、(BIU20を介して)メ
モリ22に対しBURST REQUEST (リクエ
ストのバースト)信号を発する。BURST REQU
EST 信号に応答して、BIU20はメモリ22から
リクエストされたキャッシュ・ライン全体を検索して、
そのキャッシュ・ラインを命令キャッシュ38にロード
する。次に命令メモリユニット14が適当なキャッシュ
半直線をBDEMUX48に転送して、命令キュー50
内に転送させる。
【0015】本発明においては、最適化された命令(た
とえば、移動,シフトおよひ演算/論理命令など)は、
最大3語の長さを有している。与えられた命令の長さは
未知であるので、INU32が命令を解読するまでは、
IMUX66はINU32に対して(バッファ54を介
し)、クロック・サイクル毎に3個の命令語をロードす
る。従って先取りコントローラ56は、命令キュー50
内に、INU32にクロック・サイクル毎に3語の最適
化された命令をロードするのに充分な情報を維持してい
る。このタスクを実行するためには、先取りコントロー
ラ56はQUEUE ZERO51aまたはQUEUE
ONE 51bのデータがいつ排出されるのかを判定
して、それにしたがって、空になったキュー・バッファ
QUEUE ZERO51aまたはQUEUE ONE
51bを満たさなければならない。本発明では、命令
キュー50にロードするために用いられる方法は、プロ
グラム・カウンタ(キュー・ポインタ)と、命令解読ま
たは命令実行により指定される、命令の流れ(キュー)
の移動とに基づいている。特に、命令キュー50は、現
在のキュー・ポインタと命令パイプライン(PIPE)
移動が、(1)QUEUE ZERO51aまたはQU
EUE ONE 51bの最後のワードであるか、
(2)4語のバッファ境界を越えて、現在のポインタに
よってアクセスされたキュー・バッファ(QUEUE
ZERO51aまたはQUEUE ONE51b)を排
出させたときに、再び満たされる。
【0016】図3Aおよび図3Bは、10個の命令サイ
クル期間に渡る、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のいずれのキュー・バッファがキ
ャッシュ半直線を受け取ったかを表す。
【0017】本発明においては、先取りコントローラ5
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は、あたかも、ターゲ
ット命令(たとえば分岐点)にインライン命令実行を通
じて到達した場合と同じ状態になる。
【0018】図解の目的のみのために描かれた図3Bに
示すように、先取りコントローラ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)にロードされ
る。
【0019】第2の命令サイクルの前半で、INU32
は「AAA」命令を解読して、先取りコントローラ56
に応答し、命令語長が3であることを知らせる。先取り
コントローラ56は、PIPE移動によって現在のキュ
ー・ポインタを増分させてから、QUEUE ZERO
51a内には(PIPEのロード後は)1語しか残って
いないことを判定する。この判定の結果、先取りコント
ローラ56はREADREQUEST信号を命令メモリ
・ユニット14に伝えて、第2命令サイクルの前半でキ
ャッシュ・ラインn+1の前半(「CDDD」)をQU
EUE ZERO51aにロードする(矢印で示される
ように)。上記に説明したように、先取りコントローラ
56は命令キャッシュ38のアクセスに関わらず、QU
EUEZERO51aとQUEUE ONE 51bの
ローディングを交互に行う。第2の命令サイクルの後半
で、先取りコントローラ56はPCを3だけ進めて、命
令キュー50から他のセットの語を選択する。したがっ
て、キュー・ポインタはIMUX66から3語を選択し
(「BBB」)、それは第2命令サイクルの後半でPI
PEにロードされる。
【0020】第3の命令サイクルの前半で、INU32
は「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がフロー変化命令を検出するまで継続さ
れる。
【0021】本発明では、先取りコントローラ56は、
フロー変化命令(たとえば分岐点命令)に応答して、2
回または3回の4語先取りを行う。前述したように、I
NU32は各命令の命令長および/またはパイプ移動と
を解読して実行操作を行う。フロー変化命令を検出する
と、INU32は、フロー変化(COF)信号と、命令
アドレスとを先取りコントローラ56に転送する。CO
F信号に応答して、先取りコントローラ56は必要な数
の命令先取りサイクル(2回または3回の4語先取り)
を、命令の一部として開始する。
【0022】本発明においては、INU32はクロック
・サイクルの前半で、PIPE移動の量(たとえば0な
いし3語)を先取りコントローラ56に応答する。先取
りコントローラ56は、クロック・サイクルの後半を使
って、プログラム・カウンタ(キュー・ポインタ)を進
めて、命令キュー50から他のセットの語を選択する。
命令キュー50を満たす方法は、プログラム・カウンタ
と、命令解読または命令実行の後にINU32によって
指定される命令ストリーム移動とに基づいている。キュ
ーを満たす方法のモデルを以下に図解する。
【0023】
【0024】したがって、本発明においては、キューを
満たす方法は、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参照)。
【0025】好適な実施例において本発明を解説してき
たが、開示された発明は、多くの方法に改変することが
でき、上記に特定されたもの以外のさまざまな実施例を
前提とするものであることは、当業者には明白であろ
う。たとえば、キューを満たす方法を改変して、3語よ
り大きい最適化された命令を、クロック・サイクル毎に
命令PIPEにロードすることもできる。特に、命令キ
ュー50を、たとえば16命令語(256ビット)まで
対応できるような大きさにすると、PIPEからの全キ
ャッシュ・ラインのアクセスが可能となる。さらに、I
MUX66を改変して、3語より大きいセットの語をク
ロック・サイクル毎に命令PIPE内にロードできるよ
うにすることもできる。同様に、IPU34はINU3
2に対して、一語長の複数の命令をディスパッチするこ
ともできる。このように、IPU34は、クロック・サ
イクル毎にさまざまな長さの命令を与えたり、さまざま
な数の命令を与えることができ、さらに、INU32に
よる命令の使用数に応じて、命令キューを満たすことが
できる。したがって、添付された請求項は、本発明の信
念と範囲内に当てはまる全ての修正を含むものとする。
【図面の簡単な説明】
【図1】本発明によるデータ処理装置システムのブロッ
ク図である。
【図2】図1のデータ処理装置の命令先取りユニットの
ブロック図である。
【図3A】命令キューをロードする図1の命令キャッシ
ュの4本のラインのメモリ内容を、命令形式で図解した
ものである。
【図3B】図2の命令先取りユニットの命令キューのロ
ーディングを図解した表である。
【符号の説明】
10 データ処理装置 12 整数ユニット 14 命令メモリ・ユニット 16 データ・メモリ・ユニット 18 バス・インターフェース・ユニット 20 システム・バス 22 メモリ 24 内部命令データ・バス 26 内部ワードデータ・バス 28・30 バッファ 32 命令ユニット 34 命令先取りユニット 36 命令キャッシュ・コントローラ 38 命令キャッシュ 40 命令変換ルックアサイド・バッファ 42 データ・キャッシュ・コントローラ 44 データ変換ルックアサイド・バッファ

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】メモリから一連の命令を先取りする先取り
    コントローラを有するデータ処理装置であって、前記一
    連の命令内の各命令は可変数の命令語から構成されてお
    り、前記一連の命令から所定数の命令語を命令キュー内
    に与えるものであるところの先取りを行い、および前記
    一連の命令から所定数の命令語を命令キューに与える先
    取りコントローラを有するデータ処理装置において、命
    令パイプライン(PIPE)内で、前記所定数の命令語
    の命令順序決定装置による使用数に応答する命令語の移
    動に基づき、前記命令キューを満たす方法であって:前
    記所定数の命令語を前記命令順序決定装置に、前記先取
    りコントローラ内のキュー・ポインタによって発生され
    る第1制御信号に応答して、機械サイクルの第1部分中
    に、ロードする段階;前記所定数の命令語を解読して、
    前記一連の命令内の第1命令の語長を決定する段階:前
    記機械サイクルの第2部分中に、第2制御信号を前記先
    取りコントローラに対して発生する段階であって、前記
    第2制御信号は、前記所定数の命令語の前記命令順序決
    定装置による使用数に対応するPIPE移動量を表して
    いるところの、前記先取りコントローラに対して第2制
    御信号を発生する段階;PIPE移動量に対応する量だ
    け、前記先取りコントローラ内の前記キュー・ポインタ
    を進めて、前記命令キュー内の次の命令語を指し示す段
    階;および前記メモリから次の一連の命令を検索して、
    以下の条件のいずれか1つがみたされた場合は、前記命
    令キュー内に格納する段階:PIPE移動量と組み合わ
    されたキュー・ポインタが前記命令キューのバッファ内
    に格納された所定数の命令の最後の命令語を指し示して
    いる;またはPIPE移動量と組み合わされたキュー・
    ポインタが、前記命令キューの前記バッフアの命令語境
    界を越えている;とから構成される方法。
  2. 【請求項2】メモリから複数の命令語を先取りして、命
    令キューに格納し、命令パイプライン(PIPE)に対
    して、前記命令キューから所定数の命令語を与える先取
    りコントローラを有するデータ処理装置において、前記
    命令パイプライン(PIPE)の、前記所定数の命令語
    の命令順序決定装置による使用数に応答する移動に基づ
    き、前記命令キューを満たす方法であって:前記命令順
    序決定装置内にある、前記所定数の命令語を解読して、
    前記所定数の命令の、前記命令順序決定装置による使用
    数に対応するPIPEの移動量を決定する、機械サイク
    ルの第1部分に行われる段階;前記PIPE移動量に対
    応する量だけ、前記命令順序決定装置によって発生され
    る第1制御信号に応答して、機械サイクルの第2部分中
    に前記先取りコントローラ内のキュー・ポインタを進め
    る段階;前記メモリから次の一連の命令を検索して、以
    下の条件のいずれか1つがみたされた場合は、前記命令
    キュー内に格納する段階;PIPE移動量と組み合わさ
    れたキュー・ポインタが前記命令キューのバッファ内に
    格納された所定数の命令の最後の命令語を指し示してい
    る;またはPIPE移動量と組み合わされたキュー・ポ
    インタが、前記命令キューの前記バッファの命令語境界
    を越えている:とから構成される方法。
  3. 【請求項3】メモリから可変語長の一連の命令を先取り
    して、前記一連の命令から所定数の命令を命令キューに
    与える先取りコントローラを有するデータ処理装置にお
    いて、命令パイプライン(PIPE)内で、前記所定数
    の命令の命令順序決定装置による使用数に応答する移動
    に基づき、前記命令キューを満たす方法であって:機械
    サイクルの第1部分中に、前記命令順序決定装置内にあ
    る、現在の命令を解読して;前記現在の命令の語長;お
    よび前記命令順序決定装置内にある前記現在の命令の前
    記命令順序決定装置による実行と関連するPIPE移
    動:とを決定する段階;前記命令順序決定装置内にある
    前記現在の命令の語長に対応するPIPE移動量を示
    す、第1制御信号を前記先取りコントローラに与える段
    階;前記命令順序決定装置にある前記現在の命令の語長
    に対応する、前記PIPE移動量に基づき、機械サイク
    ルの第2部分中に前記先取りコントローラ内のキュー・
    ポインタを進めて、前記命令キューから次の命令を選択
    する段階;および前記メモリから次の一連の命令を検索
    して、以下の条件のいずれか1つがみたされた場合は、
    前記命令キュー内に格納する段階;PIPE移動量と組
    み合わされたキュー・ポインタが前記命令キューのバッ
    ファ内に格納された所定数の命令の最後の命令語を指し
    示している;またはPIPE移動量と組み合わされたキ
    ュー・ポインタが、前記命令キューの前記バッファの命
    令語境界を横切っている;とから構成される方法。
JP2418553A 1990-01-02 1990-12-28 パイプライン型データプロセッサにおける命令キューを満たす方法 Expired - Fee Related JP2949857B2 (ja)

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 true JPH05324317A (ja) 1993-12-07
JP2949857B2 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6718426B2 (en) * 2000-07-19 2004-04-06 Hitachi, Ltd. Cache memory apparatus and central processor, hand-held device and arithmetic processor using the same
KR100856774B1 (ko) * 2005-12-22 2008-09-05 인터내셔널 비지네스 머신즈 코포레이션 효율적이고 유연성있는 메모리 복사 동작
JP2010282637A (ja) * 1998-03-18 2010-12-16 Qualcomm Inc デジタル信号プロセッサ

Families Citing this family (39)

* Cited by examiner, † Cited by third party
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
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
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
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
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
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
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
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
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
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
EP1247195A4 (en) * 1999-12-22 2005-01-05 Ubicom Inc SYSTEM AND METHOD FOR MULTITHREADING WORKING ON COMMAND LEVEL IN AN EMBEDDED PROCESSOR WITH 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
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
US8719837B2 (en) * 2004-05-19 2014-05-06 Synopsys, Inc. Microprocessor architecture having extendible logic
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
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 北京深鉴智能科技有限公司 计算系统及其控制器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61214029A (ja) * 1985-03-18 1986-09-22 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 命令先取りバツフア

Family Cites Families (11)

* Cited by examiner, † Cited by third party
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
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61214029A (ja) * 1985-03-18 1986-09-22 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 命令先取りバツフア

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010282637A (ja) * 1998-03-18 2010-12-16 Qualcomm Inc デジタル信号プロセッサ
JP2015028793A (ja) * 1998-03-18 2015-02-12 クゥアルコム・インコーポレイテッドQualcomm Incorporated デジタル信号プロセッサ
JP2016146189A (ja) * 1998-03-18 2016-08-12 クゥアルコム・インコーポレイテッドQualcomm Incorporated デジタル信号プロセッサ
US6718426B2 (en) * 2000-07-19 2004-04-06 Hitachi, Ltd. Cache memory apparatus and central processor, hand-held device and arithmetic processor using the same
KR100856774B1 (ko) * 2005-12-22 2008-09-05 인터내셔널 비지네스 머신즈 코포레이션 효율적이고 유연성있는 메모리 복사 동작

Also Published As

Publication number Publication date
JP2949857B2 (ja) 1999-09-20
EP0436341A3 (en) 1993-03-17
EP0436341A2 (en) 1991-07-10
DE69030648D1 (de) 1997-06-12
KR910014804A (ko) 1991-08-31
EP0436341B1 (en) 1997-05-07
DE69030648T2 (de) 1997-11-13
US5317701A (en) 1994-05-31

Similar Documents

Publication Publication Date Title
JPH05324317A (ja) 1,2または3語の命令を順次先取りする方法
FI80532C (fi) Centralenhet foer databehandlingssystem.
US5845323A (en) Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
JP6718454B2 (ja) 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと
US20050066153A1 (en) Method for processing branch operations
EP0380854A2 (en) Instruction buffer system for a digital computer
JP3518770B2 (ja) 命令をその少なくとも1つの実行装置へ迅速にディスパッチする方法および装置
JP2002091761A (ja) 命令履歴キャッシングを使用して推測的に命令を実行する回路、製品、およびそのための方法
KR102604192B1 (ko) 연산 캐시
JP2009545820A (ja) 非シーケンシャル命令アドレスをプリフェッチするための方法および装置
JPH04225428A (ja) 性能向上命令キャッシュを備えるデータ処理システム
JP5444889B2 (ja) 演算処理装置および演算処理装置の制御方法
US20080140934A1 (en) Store-Through L2 Cache Mode
US7096348B2 (en) Method and apparatus for allocating entries in a branch target buffer
US20070180156A1 (en) Method for completing IO commands after an IO translation miss
US5889986A (en) Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer
JP2008186233A (ja) 命令キャッシュプリフェッチ制御方法及びその装置
JP2002527798A (ja) ストアアドレス生成およびユニバーサルな依存性ベクトルに基づくロードブロックのためのメカニズム
US6851033B2 (en) Memory access prediction in a data processing apparatus
US5987235A (en) Method and apparatus for predecoding variable byte length instructions for fast scanning of instructions
US20090204791A1 (en) Compound Instruction Group Formation and Execution
US20010054137A1 (en) Circuit arrangement and method with improved branch prefetching for short branch instructions
US7996655B2 (en) Multiport execution target delay queue FIFO array
US20050289297A1 (en) Processor and semiconductor device
JP4111645B2 (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