JPH01205228A - 命令バツフアシステム - Google Patents

命令バツフアシステム

Info

Publication number
JPH01205228A
JPH01205228A JP63027741A JP2774188A JPH01205228A JP H01205228 A JPH01205228 A JP H01205228A JP 63027741 A JP63027741 A JP 63027741A JP 2774188 A JP2774188 A JP 2774188A JP H01205228 A JPH01205228 A JP H01205228A
Authority
JP
Japan
Prior art keywords
instruction
area
buffer
instruction buffer
address
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.)
Pending
Application number
JP63027741A
Other languages
English (en)
Inventor
Noriyasu Mori
森 教安
Hiroshi Tomita
浩史 冨田
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP63027741A priority Critical patent/JPH01205228A/ja
Priority to US07/307,501 priority patent/US5197131A/en
Publication of JPH01205228A publication Critical patent/JPH01205228A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、情報処理装置におけるプログラム制御装置に
関し、特に、命令バッファの領域制御に関する。
〔従来の技術〕
情報処理装置の処理速度を上げるための技術の一つとし
て、命令バッファが従来から用いられている(猪瀬博監
修、萱島興三著、電算機講座4「電子計算機の方式設計
」産業出版、第150〜159頁)。命令バッファ技術
は、プログラム中でこれから実行されると予想される命
令群を、命令バッファと呼ばれる高速で小容量の記憶装
置に、主記憶装置から予め読出しておき(すなわち、プ
リフェッチし)、それにより、命令の取得に要する時間
を短縮して、処理速度を改善する。特に、命令バッファ
に収まる長さの命令列が反復実行される命令ループの場
合には、2回目以降の反復において、全命令を命令バッ
ファから取出すことができ、したがって、非常に効果的
な高速化を実現することができる。このように命令ルー
プを命令バッファに完全に収容することを、命令ループ
の捕捉という。
命令ループの捕捉は、命令バッファの内容の古い部分を
、主記憶装置から読出された次に実行すべき新しい命令
で順次置換(リプレース)することによって、自然に達
成される。すなわち、命令ループのサイズが命令バッフ
ァの容量を越えない限り、命令ループに含まれない古い
命令をループに含まれる命令で次々にリプレースしてゆ
けば、命令バッファには、命令ループを構成するすべて
の命令が格納されることになる。リプレースによって命
令バッファから除かれる命令を決定する方法、すなわち
、リプレースメントアルゴリズムとしては、命令バッフ
ァに最も長期間滞在していた命令をリプレースする方法
(First In First Out。
FIFO)や、最も長期間実行されないでいた命令をリ
プレースする方法(Least Recently U
sed。
LRU)が、よく使われる。
一般に、命令は、主記憶装置の連続するアドレスに実行
順に並んでいる場合が多く、したがって、プリフェッチ
は、現在実行中の命令のアドレスに続くアドレスにある
命令群に対して行なうのが普通であり、それだけでも、
かなりの効果をあげることができる。しかしながら、条
件付分岐命令など制御の流れを変更する命令が命令列中
に存在する場合には、前述のような単純な方法では、分
岐が行なわれないときに実行されるはずの命令列がプリ
フェッチされているために、分岐が行なわれるたびに、
分岐先の命令列を主記憶装置から読出さねばならず、そ
の結果、プリフェッチの効果は著しく減殺されてしまう
。この問題に対処するために、条件付分岐命令の分岐先
命令をプリフェッチしておくための分岐先命令バッファ
を設けることは、既に行なわれている。
〔発明が解決しようとする課題〕
分岐先命令バッファの設置は、分岐実行時の命令フェッ
チを高速化する。しかし、分岐が行なわれた後、分岐先
ルーチンのサイズが大きいと、分枝先ルーチンの命令列
がプリフェッチされるにつれて、分岐元ルーチンの命令
列がリプレースされてしまい、その結果1分岐元ルーチ
ンが命令ループの場合に、捕捉可能な命令ループも捕捉
できないことになる。また、命令ループではないにして
も、分岐先ルーチンの実行後に分岐元ルーチンに戻る型
のプログラムの場合に1分岐元ルーチンにおいてプリフ
ェッチされていた復帰アドレスの命令(分岐命令の次の
命令)及びそれに続く命令列がリプレースされると、復
帰に際して、これらの命令を再び主記憶装置から読出さ
なければならず。
プリフェッチの効果が失われる。
このような問題は、単に命令バッファの容量を増すだけ
では、よほど大容量にしない限り、充分には解決できな
い。そして、命令バッファの容量が大きければ、所要の
命令がそこに存在するか否かのチエツク(ヒツトチエツ
ク)に長時間を要し、命令バッファの効果が薄れる。
本発明の目的は、命令バッファを分岐動作に関して効率
よく管理し、それにより、分岐と復帰を含むプログラム
に対する命令バッファの効用を、命令バッファ容量の極
端な増大なしに、改善することにある。
〔課題を解決するための手段〕
本発明の一形態においては、命令、バッファは複数の領
域に分割され、それぞれの領域は独立した命令バッファ
ユニットとして管理される。そして。
これらの領域の一つを現用領域として指定する回路と、
分岐命令の実行に応答して現用領域の指定を変更する回
路が設けられる。例えば、これらの領域の使用順位は予
め定められ、手続呼出命令(自身のアドレスの次のアド
レスを復帰アドレスとして指定した上で分岐する命令)
が実行されると、現用領域の次の順位の領域が指定され
、復帰命令(手続呼出命令により指定されていた復帰ア
ドレスへ分岐する命令)が実行されると、現用領域の前
の順位の領域が指定される。領域の使用順位は、最終順
位と先頭順位が連続する環状順位とすることができる。
本発明の他の形態においては、命令バッファのある領域
をリプレース禁止領域として指定する命令と、指定され
た命令列をこのリプレース禁止領域に転送する命令とが
提供される。更に、必要に応じて1分岐後に使用すべき
リプレース禁止領域を指定できる分岐命令(例えば、手
続呼出命令と復帰命令)及びリプレース禁止領域のリプ
レース禁止を解除する命令を追加してもよい。前記の分
岐命令の指定する領域で要求された命令が発見できない
ときには、バッファ制御装置はリプレースが禁止されて
いない領域を使用する。更に、前記の分岐命令は、リプ
レース禁止領域の指定が省略されると、リプレースが禁
止されていない領域を暗黙に指定する。
〔作用〕
前者の形態によれば1分岐命令の実行によって命令バッ
ファの現用領域が切替えられ、したがって、旧現用領域
に格納された分岐元ルーチンの命令は、分岐先ルーチン
の命令でリプレースされることなく、保存される。その
結果、分岐先ルーチンの実行後に分岐元ルーチンに復帰
しても、旧現用領域にプリフェッチされていた復帰アド
レスの命令は、直ちにそこから読出すことができ、更に
、手続呼出命令を含む命令ループは、それ自体のサイズ
が一つの領域に収容可能なものであれば、呼出される手
続きのサイズと関係なく捕捉することができる。手続呼
出命令と復帰命令によって現用領域を使用順位に関して
反対方向に変更すれば、前記の利点を簡単に享受するこ
とができる。
後者の形態によれば、リプレース禁止領域指定命令によ
って適当なサイズの領域を確保し1次いで、そこに反復
利用されるルーチン(例えばシステムライブラリ)を主
記憶装置から転送することができ、それにより、そのル
ーチンは命令バッファ内に保存され、リプレースによっ
て消されることはない。このルーチンの呼出しとそこか
らの復帰は、前述の領域指定を伴う手続呼出命令と復帰
命令をそれぞれ用いて行なうことができ、このルーチン
が不用になれば、リプレースの禁止を解除する命令を用
いて、該当領域をリプレース可能な領域に戻すことがで
きる。
〔実施例〕
第1図は、本発明の第一実施例を含む情報処理装置をブ
ロックダイヤグラムで示す。この装置は、プロセッサ1
と主記憶装置2から成る。プロセッサ1は、概略的にい
えば、内部バス10に接続された演算部9とプログラム
制御部とから成り、プログラム制御部は、命令レジスタ
5と、命令デコーダ6と、命令アドレスデコーダ7に加
えて、命令バッファ3と、命令バッファ制御装置4を有
する。内部バス10は、図において点線で略記されるよ
うに、適当なインタフェースと外部バスを介して、主記
憶装置2に接続される。
命令アドレスレジスタ7は、プログラムカウンタとも呼
ばれ、周知の方法により更新されて、次に実行すべき命
令のアドレスを保持する。命令フェッチサイクルにおい
て、命令アドレスレジスタ7の内容、すなわち次に実行
すべき命令のアドレスは、命令バッファ制御部@4に送
られる。命令バッファ制御装置4は、アドレス対応表4
1を有し、これは、ディレクトリ、タグアレイなどとも
呼ばれ、命令バッファ3の各ブロックに主記憶装置2の
どのブロックから読出された命令が格納されているかを
示す情報を保持する。命令バッファ制御装置4は、命令
アドレスレジスタ7の内容を受取ると、アドレス対応表
41を参照して、所要の命令が命令バッファ3内に存在
するか否かを調べて、存在すれば、それを命令レジスタ
5に読出し、存在しなければ、それを主記憶装置2から
読出して、命令レジスタ5にセットするとともに、命令
バッファ3の空きブロックに書込む。もしも命令バッフ
ァ3に空きブロックがなければ、適当なリプレースメン
トアルゴリズムに従って、古い命令がリプレースされる
。命令バッファ3の内容に変更があると、アドレス対応
表41はそれに対応して更新される。
デコーダ6は、命令レジスタ5中の命令をデコードして
、必要な部分に必要な制御信号を供給する。命令の解読
と実行が行なわれている間に、命令バッファ制御装置4
は、主記憶装置2の後続アドレスから後続命令を次々に
プリフエツチし、それを命令バッファ3に格納する。
本発明において、命令バッファ3は、一定サイズの複数
のバンク(BA31.BB32等)に予め分割されてお
り、各バンクは、機能上、一つの独立した命令バッファ
と同等である。すなわち、命令の探索とプリフエツチと
リプレースは、各時点において現用として指定されたバ
ンクの内部でのみ行なわれる。各バンクを識別するため
に、アドレス対応表41は、第2図に示すように、各ブ
ロックが属するバンクを示す情報を持つ。第2図におい
て、アドレス対応表41の各エントリ(行)は命令バッ
ファ3の各ブロックに予め対応付けられており、各行は
、そのブロックに格納された命令群の主記憶装置2にお
けるブロックアドレスが書込まれる通常の主記憶アドレ
スW411に加えて、そのブロックが属するバンクの番
号が予め書込まれているバンク番号欄412を有する。
各時点で現用の命令バッファバンクを指定するため、命
令バッファバンクセレクタ(IBBS)8が設けられる
。IBBS8は、命令バッファバンクの総数に等しい容
量の可逆カウンタでよく、後述するように、その内容を
11131ずつインクリメント又はデクリメントするこ
とにより、現用バンクを切替える。このインクリメント
及びデクリメンl−は、それぞれオーバフロー及びアン
ダーフローが生じても継続される。したがって、バンク
の総数をM(0番ないしM−1番バンク)とすれば、M
−1番バンクが指定されている時にインクリメントが生
じると0番バンクが指定され、あるいは、0番バンクが
指定されている時にデクリメントが生じるとM−1番バ
ンクが指定される。命令バッファバンクをこのように循
環的に指定することにより、さほど大容量でない命令バ
ッファ3を有効に活用することができる。
命令バッファ制御装置4は、命令を探索、プリフエツチ
又はリプレースするにあたり、アドレス対応表のバンク
番号欄412の内容をIBBS8の値と比較し、これら
が一致したブロック群のみを各操作の対象に選ぶ。
IBBS8のインクリメントとデクリメントは、本実施
例においてJSR命令と呼ばれる手続き呼出し用の分岐
命令と、同じ<RTS命令と呼ばれる元の手続きへの復
帰用の分岐命令に、それぞれ応答して行なわれる。JS
R命令は、アドレス指定< e a >を持ち、命令ア
ドレスレジスタ7の内容、すなわち次の順位の命令のア
ドレスを、スタックのトップに格納した後、アドレス<
 e a >に分岐することを指示する。他方、RTS
命令は、アドレス指定を持たず、スタックのトップにあ
るデータが表わすアドレスへの分岐を指示する。したが
って、JSR命令の分岐先ルーチン中の適当な位置にR
TS命令を置くことにより、そこから前記JSR命令の
次の命令に戻ることができる。
本発明によれば、JSR命令はまたIBBS8のインク
リメントを指示し、RTS命令はまたIBBS8のデク
リメントを指示し、それにより、手続きの呼出しとそこ
からの復帰に伴って1次の命令バッファバンクへの切替
えと以前の命令バッファバンクへの復帰が、自動的に行
なわれる。
第4図は、第1図の実施例において命令バッファバンク
が切替えられる過程を、図式的に例示する。第4図の例
では、手続A21が手続B22を呼出し、その後、手続
B22から手続A21への復帰が行なわれる。手続A2
1は、IAtないしlAl1のn個の命令から成り、そ
の第i命令としてJSR命令210を含む。他方、手続
B22は、IB1ないしIB、のm個の命令から成り、
その第j命令としてRTS命令220を含む。したがっ
て、これらの命令は、次の順序で実行される。
I Alt I Ax、・・・I At−t、 J S
 RHI B ItIBzw・・・I B J−i) 
RT S g I At”tt ’・・IAnすなわち
IAI  〜IAt−t:■ IAt”l””IAn  :■ IBi  〜IBJ−1:■ IBjj1〜IB、  :@ と表わせば、命令実行順序は、 ■、JSR,■、RTS、■ である。
初期状態において、IBBS8は0にリセットされ、そ
れにより、0番命令バッファバンクA31を指定する。
したがって、命令群■の実行中は命令バッファバンクA
31が使用される。すなわち、命令バッファ制御装置4
が行なう命令の探索、プリフェッチ及びリプレースは、
すべて命令バッファバンクA31の内部に局限され、他
の命令バッファバンクは全く使用されない。命令群■の
実行が進むにつれて、命令バッファバンクA31へのプ
リフェッチも進行する。やがて、JSR命令210が要
求されて、命令バッファバンクA31内でヒツトする。
この時点において、命令群■の先頭部分211は、既に
命令バッファバンクA31にプリフェッチ(311)さ
れている。
JSR命令210が実行されると、IBBS8の値がイ
ンクリメントされて rt 1 +yになり、それによ
り、1番命令バッファバンクB32を指す。
その結果、JSR命令の分岐先命令群■は、命令バッフ
ァバンクB32にプリフェッチされる。やがて、RTS
命令220が要求され、命令バッファバンクB32内で
ヒツトする。この時点において、命令群■の先頭部分2
21も、既に命令バッファバンクA32にプリフェッチ
されている。
RTS命令220が実行されると、IBBS8の値が今
度はデクリメントされて、90″に戻り。
再び命令バッファバンクA31を指す。この時、以前に
JSR命令が実行された時にプリフェッチされていた命
令群■の先頭部分311は、命令バッファバンクA31
に保存されている。したがって、このRTS命令220
がスタックを介して指定する分岐先命令IAt+tは、
命令バッファバンクA31内でヒツトし、直ちに命令レ
ジスタ5に転送されて、実行される。以後、未だプリフ
ェッチされていなかった命令群■の部分は、命令バッフ
ァバンクA31に順次プリフェッチされる。第3図は、
前述の過程におけるアドレス対応表41の内容を示す。
第4図のプログラム例では、RTS命令により実行が開
始された命令群■の実行が完了すると、プログラムが終
了し、したがって、命令バッファバンクB32にプリフ
ェッチされた命令群■の先頭部分は、使用されない。し
かし、一般には、このような部分も使用されるチャンス
がある。例えば、令命群■中の条件付分岐命令により、
RTS命令220がスキップされるがも知れない。
アドレス対応表のバンク番号欄412の内容を変更する
命令を用意すれば、任意のサイズ又は個数のバンクを設
定することができる。他の変形として、アドレス対応表
にバンク番号欄を設ける代りに、命令バッファとアドレ
ス対応表をそれぞれのバンクユニットに構造上分離し、
IBBS8の値に応じてそれらのバンクユニットを選択
的に動作させてもよい。この型の構造は、融通性では劣
るけれども、ヒツトチエツクとリプレース対象決定の範
囲が構造上局限されるめで、ヒツトチエツクとリプレー
ス対象決定のためのハードウェアが簡素化され、また、
速度においても勝る。
第5図は、本発明の他の実施例を含む情報処理装置を示
す。第5図において、第1図におけるのと同じ符号は同
等の要素を表わす。本実施例によれば、特定の命令を用
いて、命令バッファ3内に、任意数の特別な領域を確保
することができ、この特別領域は、リプレースメントの
対象から除外される。そして、現用の特別領域を指定す
るために、バッファ領域指示レジスタ(BIR)11が
設けられる。
それぞれの特別領域を識別するために、アドレス対応表
41は、第6図に示すように、各ブロックが属する領域
の識別番号が書込まれる領域番号欄413を有する。領
域番号欄413にito”を持つブロックは、前記の特
別領域に属さず、リプレース可能である。しかし、この
欄に110 I+以外の値を持つブロックは、リプレー
スが禁止される。
すなわち、領域番号欄413中の110 I+以外の値
は、リプレース禁止フラグとしても機能する。以下にお
いて、番号nの領域をBnで表わす。
命令バッファ制御装置4は、BIRIIの内容に従って
命令バッファ3を管理する。すなわち、命令バッファ制
御装置4は、これから実行すべき命令のアドレスを命令
アドレスレジスタ7から受取ると、まず、領域番号[4
13の内容がBIRllの内容と一致するアドレス対応
表エントリの中で、要求されたアドレスを探索し、これ
が発見されれば、対応するブロックから命令レジスタ5
に、命令を転送する。他方、要求されたアドレスが発見
できなければ、命令バッファ制御装置は。
特別領域に指定されていない領域BOで探索を行ない、
そこにも要求されたアドレスが存在しなければ、主記憶
装置2の該当アドレスからその命令を読出して、命令レ
ジスタ5に転送するとともに、領域BOに書込み、その
際、リプレースメントが必要に応じて行なわれる。領域
BOへのこのようなアクセスは、BIRIIの内容を変
更しない。
命令バッファ3の特別領域の確保・利用・解放とBIR
IIの制御のために、本実施例では次のような命令が用
意される。〔〕内はアセンブラニモニック表示である。
(i)バッファ領域確保命令GIB (GIB  Bn、S) この命令は、命令バッファ3内にサイズSの特別領域B
nを確保し、それに領域番号nを与えることを指示する
。この命令に応答して、命令バッファ制御装置4は、ア
ドレス対応表41中で、領域番号欄413に“0″を持
つエントリを、指定されたサイズSに対応する個数だけ
選出し、それらの領域番号欄をIJ n+1に変更する
(n)命令転送命令PFB (PFB  Bn、<ea>3 この命令は、主記憶装置2のアドレス< e a >か
ら始まるサイズSの命令群を、命令バッファ領域Bnに
転送することを指示する。この命令に応答して、領域番
号欄413が′n″のアドレス対応表エントリ群に対応
する命令バッファブロック群に、指定された命令群が転
送される。
(iii)バッファ内手続呼出命令JSB(JSB  
Bn、<ea>) この命令は、命令アドレスレジスタ7の内容(復帰アド
レス)をスタックのトップに格納した後に、主記憶アド
レス< e a >を持つ命令に分岐することを指示す
るとともに、分岐後に命令を取出すべき命令バッファ領
域Bnを指定する。この命令により、BIRllには#
(n+1がセットされる。Bnの指定が省略されると、
BOが指定されたと解釈されて、BIRIIは110”
にリセットされる。
(iv)バッファ内手続復帰命令RTB[RTB  B
n    ] この命令は、スタックのトップに置かれたアドレスを持
つ命令への分岐を指示するとともに、分岐後に命令を取
出すべき命令バッファ領域Bnを指定する。この命令に
より、BIRIIに11 n Itがセットされる。B
nの省略の効果は、JSB命令の場合と同様である。
(V)バッファ領域解放命令FIB (FIB  Bn    ) この命令は、特別領域Bnの指定を解除して、それをB
Oに編入することを指示する。この命令に応答して、命
令バッファ制御装置4は、アドレス対応表41を調べて
、”n”を保持していたすべての領域番号欄をIt O
”にリセットする。
本実施例によれば、所要ルーチンを命令バッファ3に常
駐させることができる。−例として、システムライブラ
リL23を命令バッファ3に常駐させて利用する過程を
、第7図と第8図を用いて説明する。
第7図に示されるように、主記憶装置2中のユーザプロ
グラム24は、必要に応じて挿入されたGIB命令24
1.PFB命令242.JSB命令243,244、及
びFIB命令245を有する。他方、主記憶装置2中の
システムライブラリL23は、その末尾にRTB命令2
31を持つ。
ユーザプログラム24の実行につれて、ユーザプログラ
ム中の命令は、命令バッファ3に順次プリフェッチされ
る。初期状態において、命令バッファ3の全体が領域B
Oを形成する。したがって、プリフエツチとリプレース
は命令バッファの全域にわたって行なわれ、やがて、G
IB命令241が、命令バッファ3から命令レジスタ5
に読出される(第8図(a))。
GIB命令が実行されると、指定されたサイズSの領域
B1が、所要数の命令バッファブロックに対応するアド
レス対応表エントリの領域番号欄143に111”をセ
ットすることによって、確保され、以後、この領域では
、通常のプリフエツチとリプレースが禁止される。その
後、ユーザプログラム中のPFB命令242が実行され
ると、システムライブラリL23が、主記憶装置2から
命令バッファ領域B1に転送される(第8図(b))。
以後、FIB命令245が実行されるまでは、システム
ライブラリLは領域B1に常駐し、主記憶装置2から読
出す必要がなくなる。
ライブラリLを呼出すためのJSB命令243゜244
が実行されるたびに、BIRIIは41111にセット
され、ライブラリLの相次ぐ命令Q1゜Q2等は、命令
バッファ3の領域B1から直接読出される(第8図(C
))。ライブラリLの最後にRTB命令231が実行さ
れると、BIRllは110″′にリセットされて、再
び領域BOから、ユーザプログラムの後続命令列が読出
される(第8図(d))。
最後に、FIB命令245が実行されると、領域B1は
、該当する命令バッファブロックの領域番号11143
を“0″にリセットすることにより、解放され、命令バ
ッファ3の全体が領域BOになって、リプレース可能と
なる(第8図(e))。
システムライブラリが命令ループ中の命令によって常駐
化され、かつ、この命令ループが捕捉可能なサイズであ
る場合には、捕捉された命令ループと常駐ライブラリの
間で呼出しと復帰が繰返されることになり1本発明の利
点が余すところなく発揮される。
命令バッファ領域を扱う語命令(前記GIB。
PFB等)を利用するためのルールは単純であるから、
これらの機能を意識せずに作成された高級言語プログラ
ムも、これらの機能を利用するオブジェクトコードに容
易にコンパイルすることができる。
〔発明の効果〕
本発明の第1の形態によれば、呼出された側の手続きの
命令を格納するために呼出した側の手続の命令がリプレ
ースされる恐れがない。したがつて、呼出した側の手続
において復帰後に実行すべきプリフエツチ済みの命令群
は、命令バッファ内に保存されて、復帰時に即座に読出
され、更に、手続呼出命令を含む命令ループの捕捉を、
呼出された側の手続のサイズに関係なく達成することが
できる。
また、本発明の第2の形態によれば、繰返して呼出され
る比較的短い手続を命令バッファに常駐させることがで
き、呼出しの度にそれを主記憶装置から読出す必要がな
くなる。
これらの結果、手続の呼出しとそれがらの復帰を含むプ
ログラムに対して、命令バッファ容量の極端な増大をせ
ずに、ヒツト率が著しく改善されて、処理速度が向上す
る。  。
【図面の簡単な説明】
第1図は本発明の一実施例を含む情報処理装置のブロッ
クダイヤグラム、第2図と第3図は第1図の装置におけ
るアドレス対応表の内容を示す図、第4図は第1図の装
置における命令バッファパンクの切換過程を示す図、第
5図は本発明の他の実施例を含む情報処理装置のブロッ
クダイヤグラム、第6図は第5図の装置におけるアドレ
ス対応表の内容を示す図、第7図と第8図は第1図の装
置におけるリプレース禁止領域の設定・利用・解放の過
程を示す図である。 2・・・主記憶装置、3・・・命令バッファ、4・・・
命令バッファ制御装置、5・・・命令レジスタ、6・・
・命令デコーダ、7・・・命令アドレスレジスタ、8・
・・命令バッファバンクセレクタ、11・・・バッファ
領域指示レジスタ。

Claims (1)

  1. 【特許請求の範囲】 1、主記憶装置内の命令群の一部の写しを記憶するため
    の命令バッファと、前記命令バッファに対してその複数
    の領域のそれぞれを単位として命令の探索とプリフエツ
    チとリプレースを行なうバッファ制御手段と、前記複数
    の領域の一つを現用領域として前記バッファ制御手段に
    対して指定する現用領域指定手段と、分岐命令の実行に
    応答して前記現用領域指定手段による指定を変更する手
    段とを備えた命令バッファシステム。 2、請求項1において、前記複数の領域は予め定められ
    た使用順位を持ち、前記変更手段は、自身のアドレスの
    次のアドレスを復帰アドレスとして指定する分岐命令の
    実行に応答して前記現用領域指定手段による指定を現用
    領域の次の使用順位の領域に変更し、前記復帰アドレス
    へ分岐する分岐命令の実行に応答して前記現用領域指定
    手段による指定を現用領域の前の使用順位の領域に変更
    する命令バッファシステム。 3、請求項2において、命令バッファ領域の前記使用順
    位は、最終順位と先頭順位が連続している環状順位であ
    る命令バッファシステム。 4、主記憶装置内の命令群の一部の写しを記憶するため
    の命令バッファと、前記命令バッファに対して命令の探
    索とプリフエツチとリプレースを行なうバッファ制御手
    段と、前記命令バッファのある領域をリプレース禁止領
    域として前記バッファ制御手段に対して指定する命令を
    実行する手段と、指定された命令列を前記リプレース禁
    止領域に前記主記憶装置から転送する命令を実行する手
    段とを備えた命令バッファシステム。 5、請求項4において、更に、分岐後に使用すべき前記
    リプレース禁止領域を前記バッファ制御手段に対して指
    定する分岐命令を実行する手段を備えた命令バッファシ
    ステム。 6、請求項5において、前記分岐命令は更に自身のアド
    レスの次のアドレスを復帰アドレスとして指定する命令
    バッファシステム。 7、請求項6において、更に、前記復帰アドレスに分岐
    するとともに分岐後に使用すべき前記リプレース禁止領
    域を前記バッファ制御手段に対して指定する復帰命令を
    実行する手段を備えた命令バッファシステム。 8、請求項7において、前記バッファ制御手段は、前記
    分岐命令又は復帰命令により指定された領域で要求され
    た命令が発見できないときに、リプレースの禁止されて
    いない領域で命令の探索とリプレースを行なう命令バッ
    ファシステム。 9、請求項7又は8において、前記分岐命令と復帰命令
    は、リプレース禁止領域の指定を欠くときに、リプレー
    スの禁止されていない領域を指定する命令バッファシス
    テム。 10、請求項4ないし9の任意の一つにおいて、更に、
    前記リプレース禁止領域のリプレース禁止を解除する命
    令を実行する手段を備えた命令バッファシステム。
JP63027741A 1988-02-10 1988-02-10 命令バツフアシステム Pending JPH01205228A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP63027741A JPH01205228A (ja) 1988-02-10 1988-02-10 命令バツフアシステム
US07/307,501 US5197131A (en) 1988-02-10 1989-02-08 Instruction buffer system for switching execution of current instruction to a branch or to a return from subroutine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63027741A JPH01205228A (ja) 1988-02-10 1988-02-10 命令バツフアシステム

Publications (1)

Publication Number Publication Date
JPH01205228A true JPH01205228A (ja) 1989-08-17

Family

ID=12229457

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63027741A Pending JPH01205228A (ja) 1988-02-10 1988-02-10 命令バツフアシステム

Country Status (2)

Country Link
US (1) US5197131A (ja)
JP (1) JPH01205228A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010066892A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ及びデータ処理システム
WO2012161059A1 (en) * 2011-05-20 2012-11-29 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and method for driving the same

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471597A (en) * 1993-12-23 1995-11-28 Unisys Corporation System and method for executing branch instructions wherein branch target addresses are dynamically selectable under programmer control from writable branch address tables
US5734881A (en) * 1995-12-15 1998-03-31 Cyrix Corporation Detecting short branches in a prefetch buffer using target location information in a branch target cache
EP0936539B1 (de) 1998-02-12 2012-10-31 Infineon Technologies AG Vorrichtung und Verfahren zum Holen von Befehlen für eine programmgesteuerte Einheit
US7219770B2 (en) * 2003-08-01 2007-05-22 Baker William J Coordinated lift system with user selectable RF channels
AT500858B8 (de) * 2004-08-17 2007-02-15 Martin Schoeberl Instruction cache für echtzeitsysteme
US20100122066A1 (en) * 2008-11-12 2010-05-13 Freescale Semiconductor, Inc. Instruction method for facilitating efficient coding and instruction fetch of loop construct
US20160055001A1 (en) * 2014-08-19 2016-02-25 Oracle International Corporation Low power instruction buffer for high performance processors

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57185545A (en) * 1981-05-11 1982-11-15 Hitachi Ltd Information processor
JPS5848146A (ja) * 1981-09-18 1983-03-22 Toshiba Corp 命令先取り方式
US4755935A (en) * 1986-01-27 1988-07-05 Schlumberger Technology Corporation Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction
JPS6393041A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
DE3802025C1 (ja) * 1988-01-25 1989-07-20 Otto 7750 Konstanz De Mueller

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010066892A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ及びデータ処理システム
WO2012161059A1 (en) * 2011-05-20 2012-11-29 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and method for driving the same
JP2013008351A (ja) * 2011-05-20 2013-01-10 Semiconductor Energy Lab Co Ltd 半導体装置及びその駆動方法

Also Published As

Publication number Publication date
US5197131A (en) 1993-03-23

Similar Documents

Publication Publication Date Title
US5423048A (en) Branch target tagging
US4888679A (en) Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
US4928239A (en) Cache memory with variable fetch and replacement schemes
US5353426A (en) Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete
US4597044A (en) Apparatus and method for providing a composite descriptor in a data processing system
US5553254A (en) Instruction cache access and prefetch process controlled by a predicted instruction-path mechanism
US5961631A (en) Data processing apparatus and method for pre-fetching an instruction in to an instruction cache
EP0409415A2 (en) Fast multiple-word accesses from a multi-way set-associative cache memory
EP0565849A2 (en) A method and system for synchronizing threads within a process
US20070204107A1 (en) Cache memory background preprocessing
US6643755B2 (en) Cyclically sequential memory prefetch
US5214765A (en) Method and apparatus for executing floating point instructions utilizing complimentary floating point pipeline and multi-level caches
US5247635A (en) Vector processing system for invalidating scalar cache memory block indicated by address in tentative vector store instruction
JPH06348595A (ja) キャッシュ装置
JPH06176053A (ja) デ−タ処理装置
US6088787A (en) Enhanced program counter stack for multi-tasking central processing unit
US7290119B2 (en) Memory accelerator with two instruction set fetch path to prefetch second set while executing first set of number of instructions in access delay to instruction cycle ratio
JPH01205228A (ja) 命令バツフアシステム
US6092153A (en) Subsettable top level cache
JPS638851A (ja) キャッシュ・メモリ制御方式
JPH01169633A (ja) 情報処理装置
JP3481425B2 (ja) キャッシュ装置
US5463737A (en) Instruction buffer controller in processor enabling direct refetching of an instruction
EP0156307A2 (en) Pipelined processor having dual cache memories
US20030110365A1 (en) Central processing unit and system having a prefetch queue and a command cache to perform an efficient information reading operation