JPH02153428A - キャッシュ装置と命令読出し装置 - Google Patents

キャッシュ装置と命令読出し装置

Info

Publication number
JPH02153428A
JPH02153428A JP63307362A JP30736288A JPH02153428A JP H02153428 A JPH02153428 A JP H02153428A JP 63307362 A JP63307362 A JP 63307362A JP 30736288 A JP30736288 A JP 30736288A JP H02153428 A JPH02153428 A JP H02153428A
Authority
JP
Japan
Prior art keywords
address
instruction
read
branch
storage
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
JP63307362A
Other languages
English (en)
Other versions
JPH0778735B2 (ja
Inventor
Masato Suzuki
正人 鈴木
Masashi Deguchi
雅士 出口
Takashi Sakao
坂尾 隆
Toshimichi Matsuzaki
敏道 松崎
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP63307362A priority Critical patent/JPH0778735B2/ja
Priority to EP89312582A priority patent/EP0372865B1/en
Priority to DE68928727T priority patent/DE68928727T2/de
Priority to KR1019890018008A priority patent/KR930002745B1/ko
Publication of JPH02153428A publication Critical patent/JPH02153428A/ja
Priority to US08/080,048 priority patent/US5301289A/en
Publication of JPH0778735B2 publication Critical patent/JPH0778735B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、コンピュータの高速化を目的としたキャッシ
ュ装置と命令読出し装置に関するものである。
従来の技術 従来のキャッシュ装置と命令読出し装置としては、例え
ば特開昭80−184842号公報に示されている。
第8図はこの従来のキャッシュ装置と命令読出し装置の
構成図を示すものである。この従来のキャッシュ装置と
命令読出し装置においては、l命令あたりの語長は16
ビツト(以下半語と称す)の整数倍であり、命令コード
は32ビツトのアドレス空間の半語境界(アドレスの最
下位ビットが0)に整列されている。またアドレスは8
ビット単位に割当てられ、命令コードはその先頭の8ビ
ツトに割当てられたアドレスで識別される。
第8図において、7は4半語境界(アドレスの下位3ビ
ツトがO)に区切られた4半語の命令コードを読出すた
めにその先頭アドレスを保持する29ビツトの読出しポ
インタ、8は4半語境界に整列した命令コードとその先
頭アドレスとを対にして格納し、読出しポインタ7の値
で検索して格納された命令コードを読出す命令キャッシ
ュ、9は分岐が成立した分岐命令のアドレスと分岐先ア
ドレスとを対にして格納し、読出しポインタ7の値で検
索して格納された分岐先アドレスを読出す分岐履歴テー
ブル、10は読出しポインタ7に保持された読出しアド
レスに1を加算する29ビツトのポインタ増分器、11
はポインタ増分器10の出力である1増加した読出しア
ドレスと分岐履歴テーブル9から得られる分岐先アドレ
スとを分岐履歴テーブル9のヒツト信号により選択する
ポインタ入力セレクタである。
第9図は第8図に示す命令キャッシュ8の詳細構成図を
示すものである。第9図において、801はアドレスの
上位22?ニツトを格納し読出しポインタ7の値で検索
を行なう128エントリからなるアドレスタグ部、80
2は4半語境界に整列した64ビツトの命令コードを格
納しアドレスタグ部801で検索されたエントリから命
令コードを出力する128エントリからなるデータ部、
803は7ビツトのセレクタ、804はアドレスの上位
から23〜29ビツト目の7ビツトをデコードして読出
し・書込みを行なうエントリを選択するアドレスデコー
ダ、805はアドレスの上位22ビツトを保持するアド
レスラッチ、806.807.808.809はそれぞ
れ4半語境界に整列した命令コードの最上位の半語(以
下第1半語と称す)、上位から2番目の半語(以下第2
半語と称す)、上位から3番目の半語(以下第3半語と
称す)、最下位の半語(以下第4半語と称す)を保持す
るデータラッチ、81Oはアドレスデコーダ804で選
択されたエントリのアドレスラッチ805に対してアド
レスの上位22ビツトの読出し拳書込みを行なうアドレ
スドライバ、811.812.813.814はアドレ
スデコーダ804で選択されたエントリのデータラッチ
80B、データラッチ807、データラッチ808、デ
ータラッチ809に対してそれぞれ命令コードの第1半
語、第2半語、第3半語、第4半語の読出し・書込みを
行なうデータドライバで、805から814の添字1i
  Jはそれぞれi番目、j番目のエントリを示す。8
15はアドレスラッチ805の値と読出しポインタ7に
保持された読出しアドレスの上位22ビツトとの一致を
検出するアドレスタグ比較器である。
また第10図は第8図に示す分岐履歴テーブル9の詳細
構成図を示すものである。第10図において、901は
分岐命令のアドレスの上位29ビツトを格納し読出しポ
インタ7の値で検索を行なうアドレスタグ部、902は
分岐先アドレスの上位31ビツトを格納しアドレスタグ
部901で検索されたエントリから分岐先アドレスを出
力するデータ部、903は分岐命令のアドレスの上位2
9ビツトを保持するアドレスラッチ、904は分岐先ア
ドレスの上位31ビツトを保持するデータラッチ、90
5はアドレスラッチ903の値と読出しポインタ7に保
持された読出しアドレスとの一致を検出するアドレスタ
グ比較器、906はデータラッチ904に対して分岐先
アドレスの読出し・書込みを行なうデータドライバで、
903から906の添字11 jはそれぞれi番目、j
番目のエントリを示す。907はすべてのエントリのア
ドレスタグ比較器905の出力の論理和をとりアドレス
タグ部901のヒツトするエントリが存在することを検
出する論理和回路、908は分岐先アドレスをデータ部
902に格納する際に書込むエントリを決定する入換エ
ントリ決定回路である。
以上のように構成された従来のキャッシュ装置と命令読
出し装置について、以下その動作を説明する。
読出しポインタ7に読出しを行なう4半語境界のアドレ
スを格納し、同時に命令キャッシュ8を信号線7001
により得られる読出しアドレスで検索する。
はじめに、このアドレスが初めて読出されるアドレスで
ある場合を説明する。
命令キャッシュ8は検索するアドレスが初めて読出され
るアドレスであるためヒツトしない。このとき、外部に
ある記憶装置から4半語境界に区切られた4半語の命令
フードの読出しを行ない、このときの読出しアドレスの
上位29ビツト(下位3ビツトは0につき不要)と読出
した64ビツトの命令コードとをそれぞれ信号線700
2と信号線7003とを通じて命令キャッシュ8に格納
する。命令キャッシュ8では信号線7002から得られ
る29ビツトのアドレスの下位7ビツトをセレクタ80
3を経てアドレスデコーダ804・に入力し格納するエ
ントリを選択する。ここで第9図に示すi番目のエント
リが選択されたとすると、アドレスデコーダ804の出
力のうち信号線8001iのみに信号が現れる。この信
号線80011の信号によりアドレスドライバ8101
が作動し、信号線7002からアドレスの上位22ビツ
トを取込み、アドレスラッチ8051に書込む。
同様にデータドライバ811t1 データドライバ81
2 is  データドライバ813 L  データドラ
イバ8141が作動し、信号線7003からそれぞれ命
令コードの第1半語、第2半語、第3半語、第4半語を
取込み、データラッチ806is  データラッチ80
7 is  データラッチ808L  データラッチ8
091に書込む。
以上の動作と並行して、ポインタ増分器10で読出しポ
インタ7の読出しアドレスを1増加させる。しかしこの
増分されたアドレスについても初めて読出されるアドレ
スであれば、命令キャッシュ8はヒツトせず、上に述べ
た命令キャッシュ8への命令コードの格納を繰返す。
外部にある記憶装置から読出された4半語の命令コード
が外部にある解読実行装置で解読実行された結果、この
命令コードの中に分岐命令が含まれ、分岐が成立した場
合は、上記の命令キャッシュ8への命令コードの格納と
独立に、この分岐命令のアドレスの上位29ビツト(こ
の分岐命令を含む4半語の命令コードの読出しアドレス
を示す)と分岐先アドレスの上位31ビツト(最下位ピ
ットはOにつき不要)とをそれぞれ信号線7006と信
号線7007を通じて分岐履歴テーブル9に格納する。
分岐履歴テーブル9では入換エントリ決定回路90gで
格納するエントリを選択する。
ここで第10図に示すi番目のエントリが選択されたと
すると、信号線7006から分岐命令のアドレスの上位
29ビツトを取込み、アドレスラッチ9031に書込む
とともに、データドライバ908iが作動し信号線70
07から分岐先アドレスの上位31ビツトを取込み、デ
ータラッチ9041に書込む。
次に、過去に外部にある記憶装置から読出され既に命令
キャッシュ8に格納されている命令コードの読出しアド
レスが読出しポインタ7に指定される場合を説明する。
命令キャッシュ8は検索するアドレスがアドレスタグ部
801に保持するアドレスと一致するためヒツトする。
即ち、命令キャッシュ8では信号線7001から得られ
る読出しポインタ7の29ビツトのアドレスの下位7ビ
ツトをセレクタ803を経てアドレスデコーダ804に
入力し読出すエントリを選択する。ここで第9図に示す
i番目のエントリが選択されたとすると、アドレスデコ
ーダ804の出力のうち信号線8001iのみに信号が
現れる。この信号線8001iの信号によりアドレスド
ライバ8101が作動し、アドレスラッチ8051の値
が信号線8002に読出され、アドレスタグ比較器81
5において読出しポインタ7の読出しアドレスの上位2
2ビツトと比較される。信号線8002に読出された値
は過去に読出しを行なったアドレスの上位22ビツトで
あるから比較は一致し、アドレスタグ比較器815は信
号線7005にヒツト信号を出力する。また信号線80
01iの信号によりデータドライバ811 L  デー
タドライバ812ix  データドライバ813tv 
 データドライバ8141が作動し、データラッチ80
8L  データラッチ807i1 データラッチ808
is  データラッチ809iに保持している命令フー
ドの第1半語、第2半語、第3半語、第4半語がそれぞ
れ信号線8003、信号線8004、信号線8005、
信号線8006に出力され、信号線7004から4半語
境界に整列した4半語の命令コードが得られる。
このとき命令キャッシュ8が出力する命令コード中に分
岐命令が含まれ、過去にその分岐が成立した場合は、今
回も分岐が成立する可能性が高い。
そこで分岐履歴テーブル9を同じく信号線7001によ
り得られる読出しアドレスで検索する。分岐履歴テーブ
ル9のアドレスラッチ9031にこの分岐命令のアドレ
スの上位29ビツト、即ちこの分岐命令を含む4半語の
命令コードの読出しアドレスが保持されているとすると
、アドレスタグ比較器905iにおいて信号線7001
から得られる読出しアドレスとアドレスラッチ9031
の値との一致が検出され、各エントリのアドレスタグ比
較器905のうちi番目のエントリの信号線9001 
iのみに信号が現れる。信号線90011によりデータ
ドライバθ08iが作動し、データラッチ9041に保
持しているこの分岐命令の分岐先アドレスが信号、l1
17008に出力される。
また信号線9001 iにより論理和回路907は信号
線7009にヒツト信号を出力する。
ポインタ入力セレクタ11は信号線7009のヒツト信
号を受けて、読出しポインタ7の入力をポインタ増分器
10の出力から分岐履歴テーブル9の信号線7008で
得られる分岐先アドレスの上位29ビツトに切換える。
続いて命令キャッシュ8は、読出しポインタ7に格納さ
れた分岐先アドレスの上位29ビツトに基づいて同上の
読出しを行なう。このとき分岐先が読出された命令コー
ドの第1半語、第2半語、第3半語、第4半語のいずれ
であるかを示すために、信号線7008の下位2ビツト
を分岐先識別コードとして外部に出力する。
このように過去において読出しを行なった成立する分岐
を含む命令フードの列を再度読出す場合は、命令の解読
実行を待たずして読出すことができる。
発明が解決しようとする課題 しかしながら上記のような構成では、4半語境界に整列
した4半語の命令コード中に複数の分岐命令が含まれ、
かつこれらの分岐命令のうち2以上の分岐が成立した場
合、これらの分岐命令のアドレスの上位29ビツトはい
ずれも等しく、それぞれの分岐先アドレスを格納する分
岐履歴テーブル9のエントリのアドレスタグ部901の
アドレスラッチ903はすべて同一の値を保持する。そ
のためこの4半語を命令キャッシュ8から読出すときに
、分岐履歴テーブル9は成立する分岐命令の分岐先アド
レスを保持する2以上のエントリが選択され、いずれの
分岐命令についてもその分岐先を予測することができな
いという課題を有していた。この課題を第11図(a)
の命令配置図を用いて説明する。同図は4半語境界のア
ドレスnとn+4の位置に半語からなる分岐命令Bcc
Oと分岐命令Bcclが存在する場合を示している。
まず分岐命令BccOが実行され分岐が成立したとき、
分岐履歴テーブル9のあるエントリのアドレスラッチ9
03にアドレスnの上位29ビツトを、データラッチ9
04に分岐命令BccOの分岐先アドレスを格納する。
次に、あるアドレスからアドレスn+2に分岐し、分岐
命令Bcc1が実行され分岐が成立したとき、分岐履歴
テーブル9の別のエントリのアドレスラッチ903にア
ドレスn+4の上位29ビツトを、データラッチ904
に分岐命令Bcc 1の分岐先アドレスを格納する。し
かしアドレスnの下位3ビツトはOであるため、アドレ
スn+4の上位29ビツトはアドレスnの上位29ビツ
トに等しくなる。従って、再び読出しポインタ7にアド
レスnの上位29ビツトが格納されたときに分岐命令B
ccOもしくは分岐命令Bcclの分岐先アドレスを取
出すべくアドレスnの上位29ビツトで分岐履歴テーブ
ル9を検索しても、上記の2つのエントリが共にヒツト
するため分岐先アドレスを得ることができない。
また上記のような構成では、予測を行なった分岐先の命
令読出しを、分岐履歴テーブル9から得られる分岐先ア
ドレスの上位29ビツトを格納した読出しポインタ7の
値に基づいて行なっているため、分岐先が4半語境界に
おける第2半語、第3半語、第4半語の場合、命令キャ
ッシュ8が出力する4半語の命令コードのうち意味のあ
るものは、それぞれ下位の3半語、下位の2半語、最下
位の1半語となる。従って分岐先の命令が2半語以上の
語長でかつ4半語境界を交差する場合、分岐先の命令の
全語長を分岐命令を含む命令列の読出しに引き続いて読
出すことができず、分岐の予測が成功しても外部にある
解読実行装置における命令の解読実行に待ちが発生する
という課題を有していた。
この課題を第11図(b)の命令配置図を用いて説明す
る。同図は4半語境界のアドレスnに対してn+6の位
置に3半語の語長の命令OPが存在する場合を示してい
る。2半語からなるdisp32は命令OPに付随する
変位オペランドで、この3半語は一時に解読実行できる
。しかしあるアドレスからアドレスn+8に分岐する分
岐命令を予測するときに分岐履歴テーブル9から得られ
る分岐先アドレスがアドレスn+8であっても、読出し
ポインタ7に格納される上位29ビツトを用いて命令キ
ャッシュ8から読出される命令コードは命令OPを第4
半語にする4半語であるため、変位オペランドdisp
32が次に読出されるまで外部にある解読実行装置にお
ける命令の解読実行が待たされことになる。
本発明はかかる点に鑑み、命令コードを格納した少なく
とも1つ以上のエントリから、命令のアライメントに関
係なく任意の読出しアドレスによって示される目的とす
る語長の命令コードを読出すことのできる命令キャッシ
ュを実現するキャッシュ装置と、読出しアドレスで決ま
る一定の語長の命令コードに含まれる分岐命令の分岐先
アドレスを格納した少なくとも1つ以上のエントリから
、読出しアドレスを起点とする予め定めた語長内の最も
読出しアドレスに近い位置にある分岐命令の分岐先アド
レスを読出すことのできる分岐履歴テーブルを実現する
キャッシュ装置と、命令キャッシュから常に予め定めた
語数の命令コードを読出すとともに、読出された命令コ
ードの中に分岐命令がいずれの位置にあってもまた複数
の分岐命令が含まれていても最初に実行されるべき分岐
命令の分岐の予測だけを行なうことができる命令読出し
装置とを提供することを目的とする。
課題を解決するための手段 木筆1の発明はアドレスにより識別される少な(とも1
語以上の記憶単位からなる主記憶装置の一部とこのアド
レスまたはアドレスの一部とを対にして格納する複数の
記憶手段(エントリ)からなる記憶装置と、前記記憶装
置に対する読出し操作において読出しアドレスが前記複
数の記憶手段(エントリ)に格納されたアドレスまたは
アドレスの一部に一致する前記記憶手段(エントリ)中
の特定の記憶手段(エントリ)およびこの記憶手段(エ
ントリ)に格納された記憶内容に連続する記憶内容を保
持している少なくとも1つ以上の前記記憶手段(エント
リ)を前記記憶装置より選択する検索手段と、前記検索
手段によって選択された少なくとも1つ以上の前記記憶
手段(エントリ)に格納されている記憶内容を目的とす
る読出しアドレスに対応して前記選択された記憶手段(
エントリ)に格納されている記憶単位毎に選択し目的と
する語長の記憶内容を抽出する記憶内容選択手段とを備
えたキャッシュ装置である。
また第2の発明は記憶内容とこの記憶内容を識別する識
別情報とを対にして格納する複数の記憶手段(エントリ
)からなる記憶装置と、前記記憶装置に対する読出し操
作の対象となる記憶内容を識別する識別情報が前記複数
の記憶手段(エントリ)に格納された識別情報に一致す
る前記記憶手段(エントリ)中の特定の記憶手段(エン
トリ)およびこの識別情報から決まる一定の範囲に含ま
れる少なくとも1つ以上の前記記憶手段(エントリ)を
前記記憶装置より選択する検索手段と、前記検索手段に
よって選択された少なくとも1つ以上の前記記憶手段(
エントリ)のうち読出し操作の対象となる記憶内容を識
別する識別情報と前記選択された記憶手段(エントリ)
に格納されている識別情報との差異が最も小さくなる前
記記憶手段(エントリ)を選択しこの記憶手段(エント
リ)に格納されている記憶内容を出力する記憶内容選択
手段とを備えたキャッシュ装置である。
また第3の発明は読出し対象となる命令列を格納してい
る主記憶上のアドレスを保持する読出しアドレス保持手
段と、一定の語数からなる命令列とこの命令列が格納さ
れている主記憶上のアドレスまたはアドレスの一部とを
対にして格納し前記読出しアドレス保持手段の値により
常に予め定めた語数の命令列が読出される請求項1記載
のキャッシュ装置からなる命令格納手段と、分岐命令の
分岐先アドレスとこの分岐命令が格納されている主記憶
上のアドレスまたはアドレスの一部とを前者を記憶内容
として後者を識別情報として対にして格納し前記読出し
アドレス保持手段の値により検索してこの命令読出しア
ドレスに最も近くかつ前記命令格納手段から読出される
命令列に含まれる分岐命令の分岐先アドレスを前記読出
しアドレス保持手段に出力する請求項2記載のキャッシ
ュ装置からなる分岐予測手段と、前記分岐予測手段が分
岐先アドレスを出力しないときは前記読出しアドレス保
持手段の値を前記命令格納手段から読出される命令列の
語数で決まる一定の値だけ増加させるアドレス増分手段
とを備えた命令読出し装置である。
作用 木筆1の発明は前記した構成により、検索手段が読出し
アドレスと格納しているアドレスまたはアドレスの一部
とが一致する記憶手段(エントリ)およびこの記憶手段
(エントリ)に格納さ=れた記憶内容に連続する記憶内
容を保持している少なくとも1つ以上の記憶手段(エン
トリ)を記憶装置より選択し、記憶内容選択手段が検索
手段によって選択された少なくとも1つ以上の記憶手段
(エントリ)に格納されている記憶内容を、読出しアド
レスに対応して記憶内容の記憶単位毎に選択する。この
ことによって目的とする語長の記憶内容を読出すことが
できる。
末弟2の発明は前記した構成により、検索手段が読出し
操作の対象となる記憶内容を識別する識別情報と格納し
ている識別情報とが一致する記憶手段(エントリ)およ
びこの識別情報から決まる一定の範囲に含まれる少なく
とも1つ以上の記憶手段(エントリ)を記憶装置より選
択し、記憶内容選択手段が検索手段によって選択された
少なくきも1つ以上の記憶手段(エントリ)のうち読出
し操作の対象となる記憶内容を識別する識別情報と選択
された記憶手段(エントリ)に格納されている識別情報
との差異が最も小さくなる記憶手段(エントリ)を選択
しこの記憶手段(エントリ)に格納されている記憶内容
を出力する。このことによ吟て読出し操作の対象となる
記憶内容を識別する識別情報に最も近くかつ予め定めた
範囲内の識別情報を対とする記憶内容を読出すことがで
きる。
末弟3の発明は前記した構成により、命令格納手段が読
出しアドレス保持手段の値により検索され、格納してい
る予め定めた語数の命令列を出力する。同時に、出力さ
れた命令列に過去に分岐成立した分岐命令が含まれなけ
れば、アドレス増分手段が次に命令格納手段の出力すべ
き命令列のアドレスを生成し、出力された命令列に過去
に分岐成立した分岐命令が含まれれば、分岐予測手段が
読出しアドレス保持手段の値により検索され、読出しア
ドレスに最も近くかつ命令格納手段から読出される命令
列に含まれる分岐命令の分岐先アドレスを出力する。こ
のことによって常に予め定めた語数の命令列を読出すこ
とができ、読出された命令列の中に分岐命令がいずれの
位置にあってもまた複数の分岐命令が含まれていても最
初に実行されるべき分岐命令の分岐の予測だけを行なう
ことができる。
実施例 第1図は本発明の第4の実施例におけるキャッジ5装置
と命令読出し装置の構成図を示すものである。本実施例
のキャッシュ装置と命令読出し装置においては、1命令
あたりの語長は16ビツトの整数倍であり、命令コード
は32ビツトのアドレス空間の半語境界に整列されてい
る。またアドレスは8ビット単位に割当てられ、命令コ
ードはその先頭の8ビツトに割当てられたアドレスで識
別される。第1図において、lは読出しを行なう4半語
の命令コードの先頭アドレスの上位29ビツトを保持す
る読出しポインタ、2は読出しポインタ1に保持される
読出しを行なう4半語の命令フードの先頭アドレスの上
位29ビツトに続く2ビツト(以下ではアドレスの上位
29ビツトに続く2ビツトを半語識別2ビツトと称す)
を保持する半語識別レジスタ、3は4半語境界に整列し
た命令コードとその先頭アドレスとを対にして格納し、
読出しポインタ1の値で検索して半語識別レジスタ2の
値で検索されたエントリに格納された命令コードを選択
し4半語の命令コードを出力する命令キャッシュ、4は
分岐が成立した分岐命令のアドレスと分岐先アドレスと
を対にして格納し、読出しポインタ1の値で検索して半
語識別レジスタ2の値で検索されたエントリを選択し格
納された分岐先アドレスを読出す分岐履歴テーブル、5
は読出しポインタlに保持された読出しアドレスの上位
29ビツトに1を加算するポインタ増分器、6はポイン
タ増分器5の出力であるl増加した読出しアドレスの上
位29ビツトと分岐履歴テーブル4から得られる分岐先
アドレスの上位29ビツトとを分岐履歴テーブル4のヒ
ツト信号により選択するポインタ入力セレクタである。
第2図は第1図に示す命令キャッシュ3の詳細構成図を
示すものである。第2図において、3゜1はアドレスの
上位22ビツトを格納し読出しポインタ1の値で検索を
行なう128エントリからなるアドレスタグ部、302
は4半語境界に整列した84ピツトの命令コードを格納
しアドレスタグ部301で検索されたエントリの命令コ
ードを半語識別レジスタ2の値で選択し4半語の命令コ
ードを出力する128エントリからなるデータ部、30
3は7ビツトのセレクタ、304はアドレスの上位から
23〜29ビツト目の7ビツトをデコードして読出し・
書込みを行なうエントリを2つ選択するアドレスデコー
ダ、305はアドレスの上位22ビツトを保持するアド
レスラッチ、30B、307.308.309はそれぞ
れ4半語境界に整列した命令コードの第1半語、第2半
語、第3半語、第4半語を保持するデータラッチ、31
0はアドレスデコーダ304で選択された2つのエント
リのうちアドレスの小さいエントリのアドレスラッチ3
05に対してアドレスの上位22ビツトの読出し―書込
みを行なうアドレスドライバ、311はアドレスデコー
ダ304で選択された2つのエントリのうちアドレスの
大きいエントリのアドレスラッチ305に対してアドレ
スの上位22ビツトの読出しを行なうアドレスドライバ
、312はアドレスデコーダ304で選択された2つの
エントリのうちアドレスの小さいエントリのデータラッ
チ306に対して命令コードの第1半語の書込みと半語
識別レジスタ2の値が0ならば読出しを行ない、アドレ
スの大きいエントリのデータラッチ306に対して半語
識別レジスタ2の値が1以上ならば命令フードの第1半
語の読出しを行なうデータドライバ、313はアドレス
デコーダ304で選択された2つのエントリのうちアド
レスの小さいエントリのデータラッチ307に対して命
令コードの第2半語の書込みと半語識別レジスタ2の値
が1以下ならば読出しを行ない、アドレスの大きいエン
トリのデータラッチ307に対して半語識別レジスタ2
の値が2以上ならば命令コードの第2半語の読出しを行
なうデータドライバ、314はアドレスデコーダ304
で選択された2つのエントリのうちアドレスの小さいエ
ントリのデータラッチ308に対して命令コードの第3
半語の書込みと半語識別レジスタ2の値が2以下ならば
読出しを行ない、アドレスの大きいエントリのデータラ
ッチ308に対して半語識別レジスタ2の値が3ならば
命令コードの第3半語の読出しを行なうデータドライバ
、315はアドレスデコーダ304で選択された2つの
エントリのうちアドレスの小さいエントリのデータラッ
チ309に対して命令コードの第4半語の書込みと読出
しを行なうデータドライバで、305から315の添字
11 jはそれぞれ1番目、1番目のエントリを示す。
31Bはアドレスデコーダ304で選択された2つのエ
ントリのうちアドレスの小さいエントリのアドレスラッ
チ305の値と読出しポインタ1に保持された読出しア
ドレスの上位22ビツトとの一致を検出する第1アドレ
スタグ比較器、317はアドレスデコーダ304で選択
された2つのエントリのうちアドレスの大きいエントリ
のアドレスラッチ305の値と読出しポインタ1に保持
された読出しアドレスの−F位22ビットとの一致を検
出する第2アドレスタグ比較器、318は第1アドレス
タグ比較器316と第2アドレスタグ比較5317の出
力の論理積をとり、アドレスデコーダ304で選択され
た2つのエントリのデータ部の命令コードが連続するこ
とを示す信号を生成する論理積回路である。
また第3図は第1図に示す分岐履歴テーブル4の詳細構
成図を示すものである。第3図において、401は分岐
命令のアドレスの上位29ビツトを格納し読出しポイン
タ1の値で検索を行なうアドレスタグ部、402は分岐
命令のアドレスの半語識別2ビツトと分岐先アドレスの
上位31ビツトを格納し、アドレスタグ部401で検索
されたエントリを格納した分岐命令のアドレスの半語識
別2ビツトと半語識別レジスタ2の値で選択し分岐先ア
ドレスを出力するデータ部、403は分岐命令のアドレ
スの上位29ビツトを保持するアドレスラッチ、404
は分岐命令のアドレスの上位29ビツトから1減算した
値を保持する前アドレスラッチ、405は分岐命令・の
アドレスの半語識別2ビツトを保持する分岐位置識別ラ
ッチ、406は分岐先アドレスの上位31ビツトを保持
するデータラッチ、407はアドレスラッチ403の値
と読出しポインタlに保持された読出しアドレスとの一
致を検出する第1アドレスタグ比較器、408は前アド
レスラッチ404の値と読出しポインタ1に保持された
読出しアドレスとの一致を検出する第2アドレスタグ比
較器、409は第1アドレスタグ比較器407により検
出されるアドレスラッチ403の値と読出しアドレスと
が一致するエントリに対しては半語識別レジスタ2の値
が分岐位置識別ラッチ405の値より大きいか等しくな
るエントリと、第2アドレスタグ比較器408により検
出される前アドレスラッチ404の値と読出しアドレス
とが一致するエントリに対しては半語識別レジスタ2の
値が分岐位置識別ラッチ405の値より小さくなるエン
トリのうち、分岐位置識別ラッチ405の値から半語識
別レジスタ2の値を減じた値(2ビツトの符号無し減算
結果)が最も小さくなるエントリを選択する読出しエン
トリ優先回路、410はデータラッチ406に対して分
岐先アドレスの読出し・書込みを行なうデータドライバ
で、403から410の添字Is  Jはそれぞれi番
目、j番目のエントリを示す。411は分岐命令のアド
レスの上位29ビツトから1を減算するアドレス減算器
、412はすへてのエントリの読出しエントリ優先回路
409の出力の論理和をとり、分岐履歴テーブル4がヒ
ツトし有効な分岐先アドレスが出力されることを示す信
号を生成する論理和回路、417は分岐先アドレスをデ
ータ部402に格納する際に書込むエントリを決定する
入換エントリ決定回路である。
第4図(a)は第3図に示す各エントリの読出しエント
リ優先回路409の詳細構成図を示すものである。41
3は分岐位置識別ラッチ405の値をA入力、半語識別
レジスタ2の値をB入力としてA−Hの減算結果OUT
とキャリCRYを出力する減算器で、入力A、  Bと
出力OUT、CRYの関係は同図(b)に示す通りであ
る。414は減算器413の減算結果OUTをデコード
するデコーダ、415は第1アドレスタグ比較器407
と第2アドレスタグ比較器408と減算器413の出力
により、アドレスラッチ403の値と読出しアドレスと
が一致するエントリのうち半語識別レジスタ2の値が分
岐位置識別ラッチ405の値より大きいか等しくなるエ
ントリと、前アドレスラッチ404の値と読出しアドレ
スとが一致するエントリのうち半語識別レジスタ2の値
が分岐位置識別ラッチ405の値よりホさくなるエント
リとを選択する論理回路、416はデコーダ414の出
力を用いて論理回路415で選択されたエントリのうち
分岐位置識別ラッチ405の値から半語識別レジスタ2
の値を減じた値(2ビツトの符号無し減算結果)が最も
小さくなるエントリを選択する論理回路である。
以上のように構成された本実施例のキャッシュ装置と命
令読出し装置について、以下その動作を説明する。
読出しポインタlと半語識別レジスタ2にそれぞれ読出
しを行なうアドレスの上位29ビツトとそれに続く2ビ
ツトを格納し、同時に命令キャッシュ3を信号線1oo
tにより得られる読出しポインタlの値で検索する。
はじめに、このアドレスが初めて読出されるアドレスで
ある場合を説明する。
命令キャッシュ3は検索するアドレスが初めて読出され
るアドレスであるためヒツトしない。このとき、半語識
別レジスタ2の値を無視して外部にある記憶装置から4
半語境界に区切られた4半語の命令コードの読出しを行
ない、このときの読出しアドレスの上位29ビツト(下
位3ビツトは0につき不要)と読出した64ビツトの命
令コードとをそれぞれ信号線1003と信号線1004
とを通じて命令キャッシュ3に格納する。命令キャッシ
ュ3では信号線1003から得られる29ビツトのアド
レスの下位7ビツトをセレクタ303を経てアドレスデ
コーダ304に入力し格納するエントリを選択する。こ
こで第2図に示すi番目のエントリが選択されたとする
と、アドレスデコーダ304の出力のうち信号線300
1iのみに信号が現れる。この信号線3001iの信号
によりアドレスドライバ3101が作動し、信号線10
03からアドレスの上位22ビツトを取込み、アドレス
ラッチ305iに書込む。同様にデータドライバ312
t1 データドライバ313ts  データドライバ3
14 is  データドライバ3151が作動し、信号
線1004からそれぞれ命令コードの第1半語、第2半
語、第3半語、第4半語を取込み、データラッチ306
i、  データラッチ30711 データラッチ308
11  データラッチ309iに書込む。信号線300
1iはアドレスドライバ311L  データドライバ3
12 j、  データドライバ313 j、  データ
ドライバ314jにも接続されているが、いずれも書込
み時には作動しない。
以上の動作と並行して、ポインタ増分器5で読出しポイ
ンタ1の読出しアドレスの上位29ビツトを1増加させ
る。しかしこの増分されたアドレスについても初めて読
出されるアドレスであれば、命令キャッシュ3はヒツト
せず、上に述べた命令キャッシュ3への命令コードの格
納を繰返す。
外部にある記憶装置から読出された4半語の命令コード
が外部にある解読実行装置で解読実行された結果、この
命令コードの中に分岐命令が含まれ、分岐が成立した場
合は、上記の命令キャッシュ3への命令コードの格納と
独立に、この分岐命令のアドレスの上位31ビツトと分
岐先アドレスの上位31ビツト(いずれも最下位ビット
は0につき不要)とをそれぞれ信号線1007と信号線
1008を通じて分岐履歴テーブル4に格納する。
分岐履歴テーブル4では入換エントリ決定回路417で
格納するエントリを選択する。ここで第3図に示すi番
目のエントリが選択されたとすると、信号線1007か
ら分岐命令のアドレスの上位29ビツトを取込みアドレ
スラッチ4031に書込むとともに、アドレス減算器4
11で1減算し信号線4004を通じ前アドレスラッチ
4041に書込む。同時に信号線4005を通じて分岐
命令のアドレスの半語識別2ビツトを分岐位置識別ラッ
チ4051に書込み、またデータドライバ410Iが作
動し信号線1008から分岐先アドレスの上位31ビツ
トを取込みデータラッチ4061に書込む。
次に、過去に外部にある記憶装置から読出され既に命令
キャッシュ3に格納されている命令コードの読出しアド
レスが読出しポインタ1と半語識別レジスタ2にそれぞ
れ上位29ビツトとそれに続く2ビツトに分かれて指定
される場合を説明する。ここでの読出しアドレスは4半
語境界上のアドレスでなくてもよい。
命令キャッシュ3は検索するアドレスがアドレスタグ部
301に保持するアドレスと一致するためヒツトする。
即ち、命令キャッシュ3では信号線1001から得られ
・る読出しポインタ1の29ビツトのアドレスの下位7
ビツトをセレクタ303を経てアドレスデコーダ304
に入力し読出すエントリを選択する。ここで第2図に示
すi番目のエントリが選択されたとすると、アドレスデ
コーダ304の出力のうち信号線3001iのみに信号
が現れる。この信号線3001iの信号によリアドレス
ドライバ3101とアドレスドライバ311jが作動し
、アドレスラッチ3051の値とアドレスラッチ305
jの値がそれぞれ信号線3002と信号線3003に読
出され、第1アドレスタグ比較@316と第2アドレス
タグ比較器317において読出しポインタ1の読出しア
ドレスの上位22ビツトと比較される。信号線3002
と信号線3003に読出された値はいずれも過去に読出
しを行なったアドレスの上位22ビツトであるから比較
はともに−散し、論理積回路318はi番目のエントリ
とj番目のエントリのデータ部の命令コードが連続する
ことを示すヒツト信号を信号線1006に出力する。ま
た信号線3001iの信号によりデータドライバ312
1〜314jが作動するが、信号線1002で得られる
半語識別レジスタ2の値によって動作が異なる。
これを第5図の命令配置図を用いて説明する。同図(a
)は4半語境界のアドレスrムから8つの半語からなる
命令フードOPO〜OP7が存在する場合を示している
(1)半語識別レジスタ2の値がOのとき信号線300
1iの信号および信号線1002の値によりデータドラ
イバ312is  データドライバ31311 データ
ドライバ314 L  データドライバ3151が作動
し、データラッチ30611データラツチ3071% 
 データラッチ3081%データラッチ3091に保持
している4半語境界に整列した命令コードの第1半語0
PO1第2半語OP1、第3半語OP2、第4半語OP
3がそれぞれ信号線3004、信号線3005、信号線
3006、信号線3007に出力され、読出しポインタ
1と半語識別レジスタ2に格納される読出しアドレスn
で示される4半語境界の第1半語から始まる4半語の命
令コードが信号線1005から同図(b)に示すように
得られる。
(2)半語識別レジスタ2の値が1のとき信号線300
1iの信号および信号線1002の値によりデータドラ
イバ313ss  データドライバ314 il  デ
ータドライバ315t1 データドライバ312jが作
動し、データラッチ307isデータラツチ308 i
l  データラッチ3091に保持している4半語境界
に整列した命令コードの第2半語OP1、第3半語OP
2、第4半語OP3と、データラッチ306 jに保持
している上に続(4半語境界に整列した命令コードの第
1半語OP4がそれぞれ信号線3005、信号線300
6、信号線3007、信号線3004に出力され、読出
しポインタ1と半語識別レジスタ2に格納される読出し
アドレスn+2で示される4半語境界の第2半語から始
まる4半語の命令コードが信号線1005から同図(C
)に示すように得られる。
(3)半語識別レジスタ2の値が2のとき信号線300
1iの信号および信号線1002の値によりデータドラ
イバ314L  データドライバ31511  データ
ドライバ312 JN  データドライバ313jが作
動し、データラッチ308i1デークラツチ3091に
保持している4半語境界に整列した命令コードの第3半
語OP2、第4半語OP3と、データラッチ306j、
  データラッチ307jに保持している上に続く4半
語境界に整列した命令コードの第1半語OP 4、第2
半語OP5がそれぞれ信号線3008、信号線3007
、信号線3004、信号線3005に出力され、読出し
ポインタ1と半語識別レジスタ2に格納される読出しア
ドレスn+4で示される4半語境界の第3半語から始ま
る4半語の命令コードが信号線1005から同図(d)
に示すように得られる。
(4)半語識別レジスタ2の値が3のとき信号線300
1 iの信号および信号線1002の値によりデータド
ライバ31511 データドライバ312 jt  デ
ータドライバ313 L  データドライバ314jが
作動し、データラッチ3091に保持している4半語境
界に整列した命令フードの第4半語OP3と、データラ
ッチ308j1 データラッチ307 J N  デー
タラッチ308jに保持している上に続く4半語境界に
整列した命令コードの第1半語OP4、第2半語OP 
5、第3半語OP6がそれぞれ信号線3007、信号線
3004、信号線3005、信号線3006に出力され
、読出しポインタ1と半語識別レジスタ2に格納される
読出しアドレスn+6で示される4半語境界の第4半語
から始まる4半語の命令コードが信号線1005から同
図(e)に示すように得られる。
このとき命令キャッシュ3が出力する命令コード中に分
岐命令が含まれ、過去にその分岐が成立した場合は、今
回も分岐が成立する可能性が高い。
そこで分岐履歴テーブル4を同じく信号線1001によ
り得られる読出しポインタ1の値で検索する。この動作
を第6図の命令配置図に示す例で説明する。同図は4半
語境界のアドレスnに対してn+2、n+8、n+12
、n十t4の位置に半語からなる分岐命令BccO1B
ccl、Bcc2、Bcc3が存在する場合を示してい
る。これらの4つの分岐命令はいずれも過去に実行され
分岐が成立し、その分岐先アドレス等が分岐履歴テーブ
ル4に格納されているものとする。ここで分岐命令Bc
cOに関する情報が分岐履歴テーブル4め1番目のエン
トリに、分岐命令Bcclに関する情報がj番目のエン
) IJに、分岐命令Bcc2に関する情報かに番目の
エントリに、分岐命令Bcc3に関する情報がm番目の
エントリに格納されているものとすると、アドレスラッ
チ4031とアドレスラッチ403jにはアドレスnの
上位29ビツトが、アドレスラッチ403にとアドレス
ラッチ403mにはアドレスn+8の上位29ビツト(
即ち、アドレスnの上位29ビツト+1)が、前アドレ
スラッチ4041と前アドレスラッチ404jにはアド
レスnの上位29ビット−1が、前アドレスラッチ40
4にと前アドレスラッチ404mにはアドレスn+8の
上位29ビット−1(即ち、アドレスnの上位29ビツ
ト)が格納され、分岐位置識別ラッチ4051には1が
、分岐位置識別ラッチ405jには3が、分岐位置識別
ラッチ405kには2が、分岐位置識別ラッチ405m
には3が格納され、データラッチ4061には分岐命令
BccOの分岐先アドレスの上位31ビツトが、データ
ラッチ406jには分岐命令Bcc1の分岐先アドレス
の上位31ビツトが、データラッチ406kには分岐命
令Bcc2の分岐先アドレスの上位31ビツトが、デー
タラッチ408mには分岐命令Bcc3の分岐先アドレ
スの上位31ビツトが格納されている。添字ktmを持
つ構成要素については第3図には示されていないが、添
字L  jと同様である。
第6図に斜線で示すアドレスn+6から4半語を命令キ
ャッシュ3から読出す場合を想定する。
このとき読出しポインタ1の値はアドレスnの上位29
ビツト、半語識別レジスタ2の値は3である。第1アド
レスタグ比較器407において信号線1001から得ら
れるアドレスnの上位29ビツトとアドレスラッチ40
3の値との一致が検出され、i番目のエントリの第1ア
ドレスタグ比較器407iにより信号線4001iとj
番目のエントリの第1アドレスタグ比較n407jによ
り信号線4001jに信号が現れる。また、第2アドレ
スタグ比較器408において信号線1001から得られ
るアドレスnの上位29ビツトと前アドレスラッチ40
4の値との一致が検出され、k番目のエントリの第2ア
ドレスタグ比較器408kにより信号線4002にとm
番目のエントリの第2アドレスタグ比較器408mによ
り信号線4002mに信号が現れる。信号線4001お
よび信号線4002を受けて各エントリの読出しエント
リ優先回路409が以下のように働く。
(1)i番目のエントリの読出しエントリ優先回路40
91 減算器4131において分岐位置識別ラッチ4゜5iの
値から半語識別レジスタ2の値を減じた結果キャリCR
YがOになり、論理回路4151は論理Oを出力する。
これを受けて論理回路4161の3つのオープンコレク
タのゲートは論理1を出力するため信号線400 B、
信号線4007、信号線4008を低電位にすることは
ない。また、信号線4003iには論理Oが出力される
。以上は、分岐命令Bc cOが命令キャッシュ3から
読出される4半語に含まれないことによる。
(2)j番目のエントリの読出しエントリ優先回路40
9j 減算器413jにおいて分岐位置識別ラッチ4゜5jの
値から半語識別レジスタ2の値を減じた結果キャリCR
Yが1になり、論理回路415jは信号線4001jに
示される論理1とにより論理1を出力する。また減算結
果OUTは値Oになり、デコーダ414jは0を示す出
力線を論理1にする。これらを受けて論理回路416j
は最上段のオープンコレクタのゲートに論理0を出力す
るため信号線4006が低電位になり、信号線4003
jには論理1が出力される。以上は、分岐命令Bcc 
1が命令キャッシュ3から読出される4半語に含まれ、
分岐命令Bcc1のアドレスが読出しアドレスに最も近
いことによる。
(3)k番目のエントリの読出しエントリ優先回路40
9に 減算器413kにおいて分岐位置識別ラッチ405にの
値から半語識別レジスタ2の値を減じた結果キャリCR
Yが0になり、論理回路415には信号線4002kに
示される論理lとにより論理1を出力する。また減算結
果OUTは値3になり、デコーダ414 kは3を示す
出力線を論理1にする。しかし信号線400θが低電位
、即ち論理0であるため論理回路416にはいずれのオ
ープンコレクタのゲートにも論理0を出力できず、信号
線4003kには論理Oが出力される。以上は、分岐命
令Bcc2が命令キャッシュ3から読出される4半語に
含まれるが、他により読出しアドレスに近いアドレスに
分岐命令が存在することによる。
(4)m番目のエントリの読出しエントリ優先回路40
9m 減算器413mにおいて分岐位置識別ラッチ405mの
値から半語識別レジスタ2の値を減じた結果キャリCR
Yが1になり、論理回路415mは論理0を出力する。
これを受けて論理回路416mの3つのオープンコレク
タのゲートは論理1を出力するため信号線400 B、
信号線4007、信号線4008を低電位にすることは
ない。また、信号、II 4003 mには論理Oが出
力される。以上は、分岐命令Bcc3が命令キャッシュ
3から読出される4半語に含まれないことによる。
読出しエントリ優先回路409jからの信号線4003
jによりデータドライバ410jが作動し、データラッ
チ406jに保持している分岐命令Bcclの分岐先ア
ドレスの上位31ビツトが信号線1009に出力される
。また信号線4003jにより論理和回路412は信号
線1010にヒツト信号を出力する。
ポインタ入力セレクタ6は信号線1010のヒツト信号
を受けて、読出しポインタ1の入力をポインタ増分器5
の出力から分岐履歴テーブル4の信号線1009で得ら
れる分岐命令Bcc 1の分岐先アドレスの上位29ビ
ツトに切換え、同時に信号線1009の下位2ビツトで
得られる分岐命令Bcalの分岐先アドレスの半語識別
2ビツトを半語識別レジスタ2に格納する。続いて命令
キャッシュ3は、同様に読出しポインタ1と半語識別レ
ジスタ2の値に基づいて、分岐命令BCC1の分岐先ア
ドレスで示される4半語の読出しを行なう。
以上のように本実施例によれば、アドレスデコータ30
4でエントリを2つ選択し、この2つのエントリのアド
レスタグを第1アドレスタグ比較器316と第2アドレ
スタグ比較器317で比較して2つのエントリに格納さ
れている命令コードが連続することを検証するとともに
、データドライバ312〜315を半語識別レジスタ2
の値で制御することにより、この2つのエントリから命
令のアライメントに関係なく任意の読出しアドレスによ
って示される4半語の語長の命令コードを読出すことの
できる命令キャッシュを実現することができる。
また本実施例によれば、エントリに分岐命令の4半語境
界のアドレスの1つ前の4半語境界のアドレスを格納す
る前アドレスラッチ404とそれと読出しアドレスの一
致を検出する第2アドレスタグ比較器408を設けて命
令キャッシュ3が読出す4半語を完全に含む4半語境界
に整列した8半語中に存在する分岐命令の分岐先アドレ
スを格納する全エントリを抽出し、読出しエントリ優先
回路409で半語識別レジスタ2の値と分岐命令のアド
レスの半語識別2ビツトで選択を行なうことにより、読
出しアドレスを起点とする4半語内の最も読出しアドレ
スに近い位置にある分岐命令の分岐先アドレスを読出す
ことのできる分岐履歴テーブルを実現することができる
また本実施例によれば、読出しアドレスで命令キャッシ
ュ3と分岐履歴テーブル4を検索し、分岐履歴テーブル
4がヒツトしたとき、分岐履歴テーブル4から得られる
分岐先アドレスで再び命令キャッシュ3と分岐履歴テー
ブル4を検索することにより、命令アライメントに関係
なく常に4半語の命令コードを読出すことができ、また
読出された命令コードの中に分岐命令がいずれの位置に
あってもまた複数の分岐命令が含まれていても最初に実
行されるべき分岐命令の分岐の予測だけを行なう命令読
出し装置を実現することができる。
第7図は本発明の第2の実施例のキャッシュ装置と命令
読出し装置における命令キャッシュ3の詳細構成図を示
すものである。他の構成要素は第1図に示す第1の実施
例と同一である。第7図において、321はアドレスの
上位29ビツトを格納し読出しポインタ1の値で検索を
行なうアドレスタグ部、322は4半語境界に整列した
64ビツトの命令コードを格納しアドレスタグ部321
で検索されたエントリの命令コードを半語識別レジスタ
2の値で選択し4半語の命令コードを出力するデータ部
、323はアドレスの上位29ビツトを保持するアドレ
スラッチ、324はアドレスの上位29ビツトから1減
算した値を保持する前アドレスラッチ、’325.32
6.327.328はそれぞれ4半語境界に整列した命
令コードの第1半語、第2半語、第3半語、第4半語を
保持するデータラッチ、329はアドレスラッチ323
の値と読出しポインタlに保持された読出しアドレスと
の一致を検出する第1アドレスタグ比較器、330は前
アドレスラッチ324の値と読出しポインタ1に保持さ
れた読出しアドレスとの一致を検出する第2アドレスタ
グ比較器、331は命令コードを書込むエントリのデー
タラッチ325に対してその第1半語を書込み、第1ア
ドレスタグ比較器329で一致が検出されるエントリの
データラッチ325に対して半語識別レジスタ2の値が
0ならば読出しを行ない、第2アドレスタグ比較器33
0で一致が検出されるエントリのデータラッチ325に
対して半語識別レジスタ2の値が1以上ならば読出しを
行なうデータドライバ、332は命令コードを書込むエ
ントリのデータラッチ328に対してその第1半語を書
込み、第1アドレスタグ比較器328で一致が検出され
るエントリのデータラッチ326に対して半語識別レジ
スタ2の値が1以下ならば読出しを行ない、第2アドレ
スタグ比較器330で一致が検出されるエントリのデー
タラッチ326に対して半語識別レジスタ2の値が2以
上ならば読出しを行なうデータドライバ、333は命令
フードを書込むエントリのデータラッチ327に対して
その第1半語を書込み、第1アドレスタグ比較器329
で一致が検出されるエントリのデータラッチ327に対
して半語識別レジスタ2の値が2以下ならば読出しを行
ない、第2アドレスタグ比較器330で一致が検出され
るエントリのデータラッチ327に対して半語識別レジ
スタ2の値が3ならば読出しを行なうデータドライバ、
334は命令コードを書込むエントリのデータラッチ3
28に対してその第1半語を書込み、第1アドレスタグ
比較器329で一致が検出されるエントリのデータラッ
チ328に対して読出しを行なうデータドライバで、3
23から334の添字11 Jはそれぞれi番目、1番
目のエントリを示す。335はアドレスの上位29ビツ
トから1を減算するアドレス減算器、336はすべての
第1アドレスタグ比較器329の出力の論理和をとる第
1論理和回路、337はすべての第2アドレスタグ比較
器330の出力の論理和をとる第2論理和回路、338
は第1論理和回路336と第2論理和回路337の出力
の論理積をとり、第1アドレスタグ比較器329で一致
が検出されるエントリと第2アドレスタグ比較器330
で一致が検出されるエントリの命令コードが連続するこ
とを示す信号を生成する論理積回路、339は命令コー
ドをデータ部322に格納する際に書込むエントリを決
定する入換エントリ決定回路である。
以上のように構成された第2の実施例のキャッシュ装置
と命令読出し装置について、以下その動作を説明する。
ただしここでは第1の実施例と異なる命令キャッシュ3
の書込み動作と読出し動作のみの説明を行なう。他は第
1の実施例の動作と同一である。
く命令キャッシュ3への書込ミ〉 半語識別レジスタ2の値を無視して外部にある記憶装置
から4半語境界に区切られた4半語の命令コードの読出
しを行ない、このときの読出しアドレスの上位29ビツ
ト(下位3ビツトはOにつき不要)と読出した64ビツ
トの命令コードとをそれぞれ信号線1003と信号線1
004とを通じて命令キャッシュ3に格納する。命令キ
ャッシュ3では入換エントリ決定回路339で格納する
エントリを選択する。ここで第7図に示すi番目のエン
トリが選択されたとすると、信号、i!1l1003か
らアドレスの上位29ビツトを取込みアドレスラッチ3
231に書込むとともに、アドレス減算器335で1減
算し信号線3013を通じ前アドレスラッチ3241に
書込む。同様にデータドライバ331i1 データドラ
イバ3321%  データドライバ333iz  デー
タドライバ3341が作動し、信号線1004からそれ
ぞれ命令コードの第1半語、第2半語、第3半語、第4
半語を取込み、データラッチ325i1 データラッチ
328t1 データラッチ327i1 データラッチ3
281に書込む。
く命令キャッシュ3からの読出し〉 ここでの読出しアドレスは4半語境界上のアドレスでな
くてもよい。簡単化のために再び第5図の命令配置図に
示す例を用いて説明する。ここで4半語境界のアドレス
nの4半語の命令コードがi番目のエントリに、次の4
半語境界のアドレスn+8の4半語の命令コードがj番
目のエントリに格納されているものとすると、アドレス
ラッチ3231にはアドレスnの上位29ビツトが、ア
ドレスラッチ323jにはアドレスn+8の上位29ビ
ツト(即ち、アドレスnの上位29ビツト+1)が、前
アドレスラッチ3241にはアドレスnの上位29ビッ
ト−1が、前アドレスラッチ324jにはアドレスn+
8の上位29ビット−1(即ち、アドレスnの上位29
ビツト)が格納され、データラッチ3251〜3281
には命令コードOPO〜OP3が、データラッチ325
j〜328jには命令フードOP4〜OP7が格納され
ている。この命令キャッシュ3に対してアドレスn1 
 アドレスn + 2%  アドレスn+4、アドレス
n+8のいずれかの読出しアドレスで読出す場合を想定
する。このとき読出しポインタlの値はアドレスnの上
位29ビツト、半語識別レジスタ2の値はそれぞれ0.
1.2.3である。第1アドレスタグ比較器329にお
いて信号線1001から得られるアドレスnの上位29
ビツトとアドレスラッチ323の値とQ一致が検出され
、i番目のエントリの第1アドレスタグ比較器3291
により信号線3011iに信号が現れる。また、第2ア
ドレスタグ比較器330において信号線1001から得
られるアドレスnの上位29ビツトと前アドレスラッチ
324の値との一致が検出され、j番目のエントリの第
2アドレスタグ比較器330jにより信号線3012j
に信号が現れる。
信号線3011iと信号線3012jの信号を受けてデ
ータドライバ3121〜314jが作動するが、信号線
1002で得られる半語識別レジスタ2の値によって動
作が異なる。
(1)半語識別レジスタ2の値がOのとき信号線301
1iの信号および信号線1002の値によりデータドラ
イバ331is  データドライバ332L  データ
ドライバ33311  データドライバ3341が作動
し、データラッチ325 i1データラッチ328ix
  データラッチ327i。
データラッチ3281に保持している4半語境界に整列
した命令コードの第1半語0PO1第2半語OPI、第
3半語OP2、第4半語OP3がそれぞれ信号線301
4、信号線3015、信号線301 El、信号線30
17に出力され、読出しポインタlと半語識別レジスタ
2に格納される読出しアドレスnで示される4半語境界
の第1半語から始まる4半語の命令コードが信号線10
05がら同図(b)に示すように得られる。
(2)半語識別レジスタ2の値が・1のとき信号線30
11iの信号および信号線1002の値によりデータド
ライバ3321%  データドライバ333iz  デ
ータドライバ3341が、信号線3012jの信号およ
び信号線1002の値によりデータドライバ331jが
作動し、データラッチ3261N  データラッチ32
71N  データラッチ3281に保持している4半語
境界に整列した命令コードの第2半語OPl、 第3半
語OP2、第4半語OP3と、データラッチ325jに
保持している上に続く4半語境界に整列した命令コード
の第1半語OP4がそれぞれ信号線3o15、信号線3
016、信号線3017、信号線3014に出力され、
読出しポインタ1と半語識別レジスタ2に格納される読
出しアドレスn+2で示される4半語境界の第2半語か
ら始まる4半語の命令コードが信号線1005から同図
(C)に示すように得られる。
(3)半語識別レジスタ2の値が2のとき信号線301
1iの信号および信号線1002の値によりデータドラ
イバ333L  データドライバ3341が、信号線3
012jの信号および信号線1002の値によりデータ
ドライバ331Lデータドライバ332jが作動し、デ
ータラッチ327L  データラッチ3281に保持し
ている4半語境界に整列した命令コードの第3半語OP
2、第4半語OP3と、データラッチ325.Lデータ
ラッチ326jに保持している上に続く4半語境界に整
列した命令フードの第1半語OP4、第2半語OP5が
それぞれ信号線3016、信号線3017、信号線30
14、信号線3015に出力され、読出しポインタlと
半語識別レジスタ2に格納される読出しアドレスn+4
で示される4半語境界の第3半語から始まる4半語の命
令コードが信号線1005から同図(d)に示すように
得られる。
(4)半語識別レジスタ2の値が3のとき信号線301
1iの信号および信号線1002の値によりデータドラ
イバ3341が、信号線3012jの信号および信号線
1002の値によりデータドライバ331j1 データ
ドライバ332 j1データドライバ333jが作動し
、データラッチ3281に保持している4半語境界に整
列した命令コードの第4半語OP3と、データラッチ3
25j1 データラッチ326j1 データラッチ32
7jに保持している上に続く4半語境界に整列した命令
コードの第1半語OP 4、第2半語OP5、第3半語
OP6がそれぞれ信号線3017、信号線3014、信
号線3015、信号線3016に出力され、読出しポイ
ンタ1と半語識別レジスタ2に格納される読出しアドレ
スn+8で示される4半語境界の第4半語から始まる4
半語の命令コードが信号線1005から同図(e)に示
すように得られる。
また、信号線3011iと信号線3012jの信号を受
けて、論理和回路336および論理和回路337はとも
に論理1の信号を出力し、論理積回路338はi番目と
j番目のエントリがヒツトしこれらの命令コードが連続
することを示す信号を信号線1006に出力する。
以上のように第2の実施例によれば、命令フードの4半
語境界のアドレスの1つ前の4半語境界のアドレスを格
納・する前アドレスラッチ324とその値と読出しアド
レスの一致を検出する第27ドレスタグ比較器330を
エントリに設け、読出しポインタに保持される4半語境
界のアドレスまたはその次の4半語境界のアドレスをア
ドレスタグ部321に持つ2つのエントリを抽出し、デ
ータドライバ331〜334を半語識別レジスタ2の値
で制御することにより、この2つのエントリから命令の
アライメントに関係なく任意の読出しアドレスによって
示される4半語の語長の命令コードを読出すことのでき
る命令キャッシュを実現することができる。
なお第1の実施例において、命令キャッシュ3を読出す
ときに第1アドレスタグ比較器316と第2アドレスタ
グ比較器317により選択された前後2つのエントリの
データ部の命令コードが連続することを検証しているが
、命令キャッシュ3の各エントリにそのエントリの命令
コードがその前のエントリの命令コードと連続すること
を示すフラグを設けて、連続した命令コードを相前後す
るエントリに格納するときにこのフラグを立て、読出す
ときに選択された前後2つのエントリのデータ部の命令
コードが連続することをこのフラグにより検証してもよ
い。
また第1の実施例において、命令キャッシュ3にアドレ
スデコーダ304の出力線と半語識別レジスタ2の値と
で制御するデータドライバ312〜314とアドレスデ
コーダ304の出力のみで作動するデータドライバ31
5とを設け、アドレスデコーダ304で選択される2つ
のエントリのデータラッチ308〜309に格納されて
いる8半語から目的の4半語を選択して出力しているが
、命令キャッシュ3にはアドレスデコーダ304の出力
のみで作動するデータドライバのみを設け、アドレスデ
コーダ304で選択・される2つの工ントリのデータラ
ッチ306〜309に格納されている8半語または最後
の半語を除く7半語を出力するようにし、命令キャッシ
ュ3の外部で半語識別レジスタ2の値をもとにして8半
語または7半語から目的の4半語を選択してもよい。
また第1の実施例において、命令キャッシュ3のエント
リ数を128に設定しているが、任意のエントリ数で実
施可能である。エントリ数を2のn乗(本実施例ではn
=7)とするとき、セレクタ303、アドレスデコーダ
304のビット数をnl  アドレスタグ部301のす
べての構成要素および第1アドレスタグ比較器316、
第2アドレスタグ比較器317のビット数を29−nに
すればよい。
また、第1の実施例または第2の実施例において、命令
キャッシュ3のデータ部302またはデータ部322の
1つのエントリに4半語境界に整列した4半語を格納し
、連続した命令コードを保持する2つのエントリから目
的の4半語を選択しているが、データ部の1つのエント
リに2半語境界に整列した2半語あるいは1半語のみを
格納し、連続した命令コードを保持する3つのエントリ
あるいは4つのエントリから目的の4半語を選択するか
、逆にデータ部の1つのエントリに8半語境界に整列し
た8半語あるいはそれ以上の命令コードを格納し、連続
した命令コードを保持する2つのエントリから目的の4
半語を選択するようにしてもよい。
また第1の実施例または第2の実施例において、分岐履
歴テーブル4に前アドレスラッチ404とアドレス減算
器411を設けて分岐頑歴テーブル4に分岐先アドレス
を書込むときに分岐命令のアドレスの上位29ビツトと
その値から1を減じた値をともにアドレスタグ部401
に格納し、分岐履歴テーブル4を検索するときに読出し
アドレスの上位29ビツトがこのどちらかにヒツトする
エントリを検出しているが、読出しアドレスの上位29
ビツトに1を加えるアドレス加算器を設け、アドレスタ
グ部401にはアドレスの上位29ビツトのみを格納し
ておき、分岐履歴テーブル4を検索するときにアドレス
タグ部401の値が読出しアドレスの上位29ビツトま
たは読出しアドレスの上位29ビツトに1を加えたもの
にヒツトするエントリを検出するようにしてもよい。
また第1の実施例または第2の実施例において、分岐履
歴テーブル4の読出しエントリ優先回路409は減算器
413、デコーダ414、論理回路415および論理回
路41Bを個別の要素として構成しているが、回路の簡
単化を図るため全体を1つにして同じ機能をさせてもよ
い。
また第2の実施例において、命令キャッシュ3に前アド
レスラッチ324とアドレス減算器335を設けて命令
キャッシュ3に命令コードを書込むときにアドレスの上
位29ビツトとその値から1を減じた値をともにアドレ
スタグ部321に格納し、命令キャッシュ3から命令コ
ードを読出すときに読出しアドレスの上位29ビツトが
このどちらかにヒツトするエントリを検索しているが、
読出しアドレスの上位29ビツトに1を加えるアドレス
加算器を設け、アドレスタグ部321にはアドレスの上
位29ビツトのみを格納しておき、命令キャッシュ3か
ら命令コードを読出すときにアドレスタグ部321の値
が読出しアドレスの上位29ビツトまたは読出しアドレ
スの上位29ビツトに1を加えたものにヒツトするエン
トリを検索するようにしてもよい。
また第2の実施例において、命令キャッシュ3に第1ア
ドレスタグ比較器329および第2アドレスタグ比較器
330の出力線と半語識別レジスタ2の値とで制御する
データドライバ331〜333と第1アドレスタグ比較
器329の出力のみで作動するデータドライバ334と
を設け、第1アドレスタグ比較器329および第2アド
レスタグ比較器330で選択される2つのエントリのデ
ータラッチ325〜328に格納されている8半語から
目的の4半語を選択して出力しているが、命令キャッシ
ュ3には第1アドレスタグ比較器329または第2アド
レスタグ比較器330の出力で作動するデータドライバ
のみを設け、選択される2つのエントリのデータラッチ
325〜328に格納されている8半語または最後の半
語を除く7半語を出力するようにし、命令キャッシュ3
の外部で半語識別レジスタ2の値をもとにして8半語ま
たは7半語から目的の4半語を選択してもよい。
また第1の実施例は命令キャッシュ3をダイレクトマツ
プ方式で構成し、第2の実施例はフルアソシアティブ方
式で構成しているが、セットアソシアティブ方式で構成
してもよい。
発明の詳細 な説明したように、第1の発明によれば、主記憶上の記
憶内容のアライメントに関係なく任意の読出しアドレス
によって示される目的とする語長の記憶内容を読出すこ
とができる。
また第2の発明によれば、読出し操作の対象となる記憶
内容を識別する識別情報に最も近く、かつ予め定めた範
囲内の識別情報を対とする記憶内容を読出すことができ
る。
また第3の発明によれば、常に予め定めた語数の命令列
を読出すことができ、読出された命令列の中に分岐命令
がいずれの位置にあってもまた複数の分岐命令が含まれ
ていても最初に実行されるべき分岐命令の分岐の予測だ
けを行なうことができる。
また第1および第2の発明によれば、構造が規則的な繰
返しになっているため、半導体集積回路上に実現する場
合でも、実装密度の低下は伴わず、また設計期間の増加
も最小限に抑えることができる。
以上に示すように、本発明の実用的効果はきわめて大き
い。
【図面の簡単な説明】
第1図は本発明の第1の実施例におけるキャッシュ装置
と命令読出し装置の構成図、第2図は同実施例の命令キ
ャッシュ3の詳細構成図、第3図は同実施例の分岐履歴
テーブル4の詳細構成図、第4図は同実施例の分岐履歴
テーブル4の読出しエントリ優先回路409の詳細構成
図、第5図は第1および第2の実施例の命令キャッシュ
3の動作を説明する命令配置図、第6図は第1の実施例
の分岐履歴テーブル4の動作を説明する命令配置図、第
7図は本発明の第2の実施例のキャッシュ装置と命令読
出し装置における命令キャッシュ3の詳細構成図、第8
図は従来のキャッシュ装置と命令読出し装置の構成図、
第9図は同従来例の命令キャッシュ8の詳細構成図、第
10図は同従来3・・・命令キャッシュ、4・・・分岐
履歴テーブル、5・・・ポインタ増分器、6・・・ポイ
ンタ入力セレクタ、301・・・アドレスタグ部、30
2・・・データ部、303・・・アドレスセレクタ、3
04・・・アドレスデコーダ、305・・・アドレスラ
ッチ、306.307.308.309・・・データラ
ッチ、310.311・・・アドレスドライバ、312
.313.314.315・・・データドライバ、31
B・・・第1アドレスタグ比較器、317・・・第2ア
ドレスタグ比較器、318・・・論理積回路、321・
・・アドレスタグ部、322・・・データ部、323・
・・アドレスラッチ、324・・・前アドレスラッチ1
,325.326.327.328・・・データラッチ
、329・・・第1アドレスタグ比較器、330・・・
第2アドレスタグ比較器、331.332.333.3
34・・・データドライバ、334・・・アドレス減算
!、336.337・・・論理和回路、338・・・論
理積回路、339・・・入換エントリ決定回路、401
・・・アドレスタグ部、402・・・データ部、403
・・・アドレスラッチ、404・・・前アドレスラッチ
、405・・・分岐位置識別レジスタ、406・・・デ
ータラッチ、407・・・第1アドレスタグ比較器、4
08・・・第2アドレスタグ比較器、409・・・読出
しエントリ優先回路、410・・・データドライバ、4
11・・・アドレス減算器、412・・・論理和回路、
413・・・減算器、414・・・デコーダ、415.
416・・・論理回路、417・・・入換エントリ決定
回路。 代理人の氏名 弁理士 粟野重孝 ほか1名仝 ミ  へ (ロ 第 図 (b) 偽 嬉 図 +12) (b) OPOOPI    OF2   0P3OPt   
 OPT    OF2    DP3OP4    
DPE    OF2   0P2OP4    DP
E    OF2   0P3図 if!10図 第11図 (α)

Claims (3)

    【特許請求の範囲】
  1. (1)アドレスにより識別される少なくとも1語以上の
    記憶単位からなる主記憶装置の一部とこのアドレスまた
    はアドレスの一部とを対にして格納する複数の記憶手段
    (エントリ)からなる記憶装置と、前記記憶装置に対す
    る読出し操作において読出しアドレスが前記複数の記憶
    手段(エントリ)に格納されたアドレスまたはアドレス
    の一部に一致する前記記憶手段(エントリ)中の特定の
    記憶手段(エントリ)およびこの記憶手段(エントリ)
    に格納された記憶内容に連続する記憶内容を保持してい
    る少なくとも1つ以上の前記記憶手段(エントリ)を前
    記記憶装置より選択する検索手段と、前記検索手段によ
    って選択された少なくとも1つ以上の前記記憶手段(エ
    ントリ)に格納されている記憶内容を目的とする読出し
    アドレスに対応して前記選択された記憶手段(エントリ
    )に格納されている記憶単位毎に選択し目的とする語長
    の記憶内容を抽出する記憶内容選択手段とを備え、少な
    くとも1つ以上の前記記憶手段(エントリ)から目的と
    する語長の記憶内容を読出すことを特徴としたキャッシ
    ュ装置。
  2. (2)記憶内容とこの記憶内容を識別する識別情報とを
    対にして格納する複数の記憶手段(エントリ)からなる
    記憶装置と、前記記憶装置に対する読出し操作の対象と
    なる記憶内容を識別する識別情報が前記複数の記憶手段
    (エントリ)に格納された識別情報に一致する前記記憶
    手段(エントリ)中の特定の記憶手段(エントリ)およ
    びこの識別情報から決まる一定の範囲に含まれる少なく
    とも1つ以上の前記記憶手段(エントリ)を前記記憶装
    置より選択する検索手段と、前記検索手段によって選択
    された少なくとも1つ以上の前記記憶手段(エントリ)
    のうち読出し操作の対象となる記憶内容を識別する識別
    情報と前記選択された記憶手段(エントリ)に格納され
    ている識別情報との差異が最も小さくなる前記記憶手段
    (エントリ)を選択しこの記憶手段(エントリ)に格納
    されている記憶内容を出力する記憶内容選択手段とを備
    え、少なくとも1つ以上の前記記憶手段(エントリ)か
    ら読出し操作の対象となる記憶内容を識別する識別情報
    に最も近くかつ予め定めた範囲内の識別情報を対とする
    記憶内容を読出すことを特徴としたキャッシュ装置。
  3. (3)読出し対象となる命令列を格納している主記憶上
    のアドレスを保持する読出しアドレス保持手段と、一定
    の語数からなる命令列とこの命令列が格納されている主
    記憶上のアドレスまたはアドレスの一部とを対にして格
    納し前記読出しアドレス保持手段の値により常に予め定
    めた語数の命令列が読出される請求項1記載のキャッシ
    ュ装置からなる命令格納手段と、分岐命令の分岐先アド
    レスとこの分岐命令が格納されている主記憶上のアドレ
    スまたはアドレスの一部とを前者を記憶内容として後者
    を識別情報として対にして格納し前記読出しアドレス保
    持手段の値により検索してこの命令読出しアドレスに最
    も近くかつ前記命令格納手段から読出される命令列に含
    まれる分岐命令の分岐先アドレスを前記読出しアドレス
    保持手段に出力する請求項2記載のキャッシュ装置から
    なる分岐予測手段と、前記分岐予測手段が分岐先アドレ
    スを出力しないときは前記読出しアドレス保持手段の値
    を前記命令格納手段から読出される命令列の語数で決ま
    る一定の値だけ増加させるアドレス増分手段とを備え、
    前記命令格納手段から常に予め定めた語数の命令列を読
    出すとともに読出された命令列の中に分岐命令がいずれ
    の位置にあってもまた複数の分岐命令が含まれていても
    最初に実行されるべき分岐命令の分岐の予測だけを行な
    うことを特徴とした命令読出し装置。
JP63307362A 1988-12-05 1988-12-05 キャッシュ装置と命令読出し装置 Expired - Lifetime JPH0778735B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP63307362A JPH0778735B2 (ja) 1988-12-05 1988-12-05 キャッシュ装置と命令読出し装置
EP89312582A EP0372865B1 (en) 1988-12-05 1989-12-01 Cache device for supplying a fixed word length of a variable length instruction code and instruction fetch device
DE68928727T DE68928727T2 (de) 1988-12-05 1989-12-01 Cachespeicheranlage zum Versorgen eines Festworts eines Befehlscodes mit variabler Länge und Befehlsabrufanlage
KR1019890018008A KR930002745B1 (ko) 1988-12-05 1989-12-05 가변길이 명령코우드를 일정한 단어길이만큼 공급하는 캐시장치 및 명령판독장치
US08/080,048 US5301289A (en) 1988-12-05 1993-06-21 Cache device for supplying a fixed word length of a variable instruction code and instruction fetch device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63307362A JPH0778735B2 (ja) 1988-12-05 1988-12-05 キャッシュ装置と命令読出し装置

Publications (2)

Publication Number Publication Date
JPH02153428A true JPH02153428A (ja) 1990-06-13
JPH0778735B2 JPH0778735B2 (ja) 1995-08-23

Family

ID=17968174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63307362A Expired - Lifetime JPH0778735B2 (ja) 1988-12-05 1988-12-05 キャッシュ装置と命令読出し装置

Country Status (5)

Country Link
US (1) US5301289A (ja)
EP (1) EP0372865B1 (ja)
JP (1) JPH0778735B2 (ja)
KR (1) KR930002745B1 (ja)
DE (1) DE68928727T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04233632A (ja) * 1990-07-27 1992-08-21 Internatl Business Mach Corp <Ibm> デイジタルデータプロセツサ作動方法及び分岐履歴テーブル
JPH04321130A (ja) * 1991-04-22 1992-11-11 Toshiba Corp 分岐予測装置

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0943998B1 (en) * 1992-02-28 2006-07-12 Oki Electric Industry Co., Ltd. Cache memory apparatus
JP3211423B2 (ja) * 1992-10-13 2001-09-25 ソニー株式会社 分岐命令実行方法および分岐命令実行装置
EP0649084A1 (en) * 1993-10-18 1995-04-19 Cyrix Corporation Microprocessor branch processing
US5604909A (en) 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
GB9521955D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2409067B (en) * 2003-12-09 2006-12-13 Advanced Risc Mach Ltd Endianess compensation within a SIMD data processing system
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
GB2409061B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
GB2410097B (en) 2004-01-13 2006-11-01 Advanced Risc Mach Ltd A data processing apparatus and method for performing data processing operations on floating point data elements
GB2411978B (en) * 2004-03-10 2007-04-04 Advanced Risc Mach Ltd Inserting bits within a data word
US9557994B2 (en) 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US7716460B2 (en) * 2006-09-29 2010-05-11 Qualcomm Incorporated Effective use of a BHT in processor having variable length instruction set execution modes
US8725948B2 (en) * 2010-10-06 2014-05-13 Red Hat Israel, Ltd. Opcode length caching
JP5863855B2 (ja) * 2014-02-26 2016-02-17 ファナック株式会社 分岐命令を高速に処理するためのインストラクションキャッシュを有するプログラマブルコントローラ

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5991551A (ja) * 1982-11-17 1984-05-26 Nec Corp 分岐先アドレス予測を行なう命令先取り装置
JPS6272042A (ja) * 1985-09-26 1987-04-02 Mitsubishi Electric Corp キヤツシユメモリ
JPS6356731A (ja) * 1986-08-27 1988-03-11 Mitsubishi Electric Corp デ−タ処理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
US4691277A (en) * 1984-10-24 1987-09-01 International Business Machines Corp. Small instruction cache using branch target table to effect instruction prefetch
US4853840A (en) * 1986-01-07 1989-08-01 Nec Corporation Instruction prefetching device including a circuit for checking prediction of a branch instruction before the instruction is executed
JPS6393038A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US4894770A (en) * 1987-06-01 1990-01-16 Massachusetts Institute Of Technology Set associative memory
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5991551A (ja) * 1982-11-17 1984-05-26 Nec Corp 分岐先アドレス予測を行なう命令先取り装置
JPS6272042A (ja) * 1985-09-26 1987-04-02 Mitsubishi Electric Corp キヤツシユメモリ
JPS6356731A (ja) * 1986-08-27 1988-03-11 Mitsubishi Electric Corp デ−タ処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04233632A (ja) * 1990-07-27 1992-08-21 Internatl Business Mach Corp <Ibm> デイジタルデータプロセツサ作動方法及び分岐履歴テーブル
JP2500958B2 (ja) * 1990-07-27 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション デイジタルデ―タプロセツサ作動方法及び分岐履歴テ―ブル
JPH04321130A (ja) * 1991-04-22 1992-11-11 Toshiba Corp 分岐予測装置

Also Published As

Publication number Publication date
EP0372865A2 (en) 1990-06-13
KR930002745B1 (ko) 1993-04-09
KR900010564A (ko) 1990-07-07
DE68928727D1 (de) 1998-08-13
DE68928727T2 (de) 1998-12-10
EP0372865A3 (en) 1991-04-17
US5301289A (en) 1994-04-05
JPH0778735B2 (ja) 1995-08-23
EP0372865B1 (en) 1998-07-08

Similar Documents

Publication Publication Date Title
JPH02153428A (ja) キャッシュ装置と命令読出し装置
US4827402A (en) Branch advanced control apparatus for advanced control of a branch instruction in a data processing system
US4725947A (en) Data processor with a branch target instruction storage
JP2539357B2 (ja) デ−タ処理装置
US7266676B2 (en) Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
JPH04245540A (ja) 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム
JP2000222205A (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
KR100335672B1 (ko) 메모리페이지크로싱예측주석을사용하는실제주소지정데이타기억구조로부터의빠른데이타검색
JPH10133874A (ja) スーパスカラプロセッサ用分岐予測機構
US5771377A (en) System for speculatively executing instructions using multiple commit condition code storages with instructions selecting a particular storage
JPH08320788A (ja) パイプライン方式プロセッサ
KR970076253A (ko) 데이타 프로세싱 시스템 및 브랜치 인스트럭션의 결과 예측 방법
JPH03129432A (ja) 分岐制御回路
US6678638B2 (en) Processor having execution result prediction function for instruction
US7555634B1 (en) Multiple data hazards detection and resolution unit
JPH0820951B2 (ja) プロセッサの動作速度を速める方法
JPH0689173A (ja) ブランチ・ヒストリーを持つ命令実行処理装置
US6532534B1 (en) Information processing apparatus provided with branch history with plurality of designation ways
US7013366B2 (en) Parallel search technique for store operations
JP3490005B2 (ja) 命令制御装置及びその方法
KR960015231A (ko) 향상된 어드레스 지정 방법 및 시스템
JPH01177145A (ja) 情報処理装置
JPH07191911A (ja) アドレス変換装置及びマイクロプロセッサ算出方法
JP2656765B2 (ja) データ処理装置
JPH06301537A (ja) 命令フェッチ回路

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070823

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080823

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080823

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090823

Year of fee payment: 14

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090823

Year of fee payment: 14