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

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

Info

Publication number
JPH0778735B2
JPH0778735B2 JP63307362A JP30736288A JPH0778735B2 JP H0778735 B2 JPH0778735 B2 JP H0778735B2 JP 63307362 A JP63307362 A JP 63307362A JP 30736288 A JP30736288 A JP 30736288A JP H0778735 B2 JPH0778735 B2 JP H0778735B2
Authority
JP
Japan
Prior art keywords
address
instruction
branch
stored
pair
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP63307362A
Other languages
English (en)
Other versions
JPH02153428A (ja
Inventor
正人 鈴木
雅士 出口
隆 坂尾
敏道 松崎
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 DE68928727T priority patent/DE68928727T2/de
Priority to EP89312582A priority patent/EP0372865B1/en
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 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
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 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/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)

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、コンピュータの高速化を目的としたキャッシ
ュ装置と命令読出し装置に関するものである。
従来の技術 従来のキャッシュ装置と命令読出し装置としては、例え
ば特開昭60−164842号公報に示されている。
第8図はこの従来のキャッシュ装置と命令読出し装置の
構成図を示すものである。この従来のキャッシュ装置と
命令読出し装置においては、1命令あたりの語長は16ビ
ット(以下半語と称す)の整数倍であり、命令コードは
32ビットのアドレス空間の半語境界(アドレスの最下位
ビットが0)に整列されている。またアドレスは8ビッ
ト単位に割当てられ、命令コードはその先頭の8ビット
に割当てられたアドレスで識別される。
第8図において、7は4半語境界(アドレスの下位3ビ
ットが0)に区切られた4半語の命令コードを読出すた
めにその先頭アドレスを保持する29ビットの読出しポイ
ンタ、8は4半語境界に整列した命令コードとその先頭
アドレスとを対にして格納し、読出しポインタ7の値で
検索して格納された命令コードを読出す命令キャッシ
ュ、9は分岐が成立した分岐命令のアドレスと分岐先ア
ドレスとを対にして格納し、読出しポインタ7の値で検
索して格納された分岐先アドレスを読出す分岐履歴テー
ブル、10は読出しポインタ7に保持された読出しアドレ
スに1を加算する29ビットのポインタ増分器、11はポイ
ンタ増分器10の出力である1増加した読出しアドレスと
分岐履歴テーブル9から得られる分岐先アドレスとを分
岐履歴テーブル9のヒット信号により選択するポインタ
入力セレクタである。
第9図は第8図に示す命令キャッシュ8の詳細構成図を
示すものである。第9図において、801はアドレスの上
位22ビットを格納し読出しポインタ7の値で検索を行な
う128エントリからなるアドレスタグ部、802は4半語境
界に整列した64ビットの命令コードを格納しアドレスタ
グ部801で検索されたエントリから命令コードを出力す
る128エントリからなるデータ部、803は7ビットのセレ
クタ、804はアドレスの上位から23〜29ビット目の7ビ
ットをデコードして読出し・書込みを行なうエントリを
選択するアドレスデコーダ、805はアドレスの上位22ビ
ットを保持するアドレスラッチ、806、807、808、809は
それぞれ4半語境界に整列した命令コードの最上位の半
語(以下第1半語と称す)、上位から2番目の半語(以
下第2半語と称す)、上位から3番目の半語(以下第3
半語と称す)、最下位の半語(以下第4半語と称す)を
保持するデータラッチ、810はアドレスデコーダ804で選
択されたエントリのアドレスラッチ805に対してアドレ
スの上位22ビットの読出し・書込みを行なうアドレスド
ライバ、811、812、813、814はアドレスデコーダ804で
選択されたエントリのデータラッチ806、データラッチ8
07、データラッチ808、データラッチ809に対してそれぞ
れ命令コードの第1半語、第2半語、第3半語、第4半
語の読出し・書込みを行なうデータドライバで、805か
ら814の添字i、jはそれぞれi番目、j番目のエント
リを示す。815はアドレスラッチ805の値と読出しポイン
タ7に保持された読出しアドレスの上位22ビットとの一
致を検出するアドレスタグ比較器である。
また第10図は第8図に示す分岐履歴テーブル9の詳細構
成図を示すものである。第10図において、901は分岐命
令のアドレスの上位29ビットを格納し読出しポインタ7
の値で検索を行なうアドレスタグ部、902は分岐先アド
レスの上位31ビットを格納しアドレスタグ部901で検索
されたエントリから分岐先アドレスを出力するデータ
部、903は分岐命令のアドレスの上位29ビットを保持す
るアドレスラッチ、904は分岐先アドレスの上位31ビッ
トを保持するデータラッチ、905はアドレスアッチ903の
値と読出しポインタ7に保持された読出しアドレスとの
一致を検出するアドレスタグ比較器、906はデータラッ
チ904に対して分岐先アドレスの読出し・書込みを行な
うデータドライバで、903から906の添字i、jはそれぞ
れi番目、j番目のエントリを示す。907はすべてのエ
ントリのアドレスタグ比較器905の出力の論理和をとり
アドレスタグ部901のヒットするエントリが存在するこ
とを検出する論理和回路、908は分岐先アドレスをデー
タ部902に格納する際に書込むエントリを決定する入換
エントリ決定回路である。
以上のように構成された従来のキャッシュ装置と命令読
出し装置について、以下その動作を説明する。
読出しポインタ7に読出しを行なう4半語境界のアドレ
スを格納し、同時に命令キャッシュ8を信号線7001によ
り得られる読出しアドレスで検索する。
はじめに、このアドレスが初めて読出されるアドレスで
ある場合を説明する。
命令キャッシュ8は検索するアドレスが初めて読出され
るアドレスであるためヒットしない。このとき、外部に
ある記憶装置から4半語境界に区切られた4半語の命令
コードの読出しを行ない、このときの読出しアドレスの
上位29ビット(下位3ビットは0につき不要)と読出し
た64ビットの命令コードとをそれぞれ信号線7002と信号
線7003とを通じて命令キャッシュ8に格納する。命令キ
ャッシュ8では信号線7002から得られる29ビットのアド
レスの下位7ビットをセレクタ803を経てアドレスデコ
ーダ804に入力し格納するエントリを選択する。ここで
第9図に示すi番目のエントリが選択されたとすると、
アドレスデコーダ804の出力のうち信号線8001iのみに信
号が現れる。この信号線8001iの信号によりアドレスド
ライバ810iが作動し、信号線7002からアドレスの上位22
ビットを取込み、アドレスラッチ805iに書込む。同様に
データドライバ811i、データドライバ812i、データドラ
イバ813i、データドライバ814iが作動し、信号線7003か
らそれぞれ命令コードの第1半語、第2半語、第3半
語、第4半語を取込み、データラッチ806i、データラッ
チ807i、データラッチ808i、データラッチ809iに書込
む。
以上の動作と並行して、ポインタ増分器10で読出しポイ
ンタ7の読出しアドレスを1増加させる。しかしこの増
分されたアドレスについても初めて読出されるアドレス
であれば、命令キャッシュ8はヒットせず、上に述べた
命令キャッシュ8への命令コードの格納を繰返す。
外部にある記憶装置から読出された4半語の命令コード
が外部にある解読実行装置で解読実行された結果、この
命令コードの中に分岐命令が含まれ、分岐が成立した場
合は、上記の命令キャッシュ8へ命令コードの格納と独
立に、この分岐命令のアドレスの上位29ビット(この分
岐命令を含む4半語の命令コードの読出しアドレスを示
す)と分岐先アドレスの上位31ビット(最下位ビットは
0につき不要)とをそれぞれ信号線7006と信号線7007を
通じて分岐履歴テーブル9に格納する。分岐履歴テーブ
ル9では入換エントリ決定回路908で格納するエントリ
を選択する。ここで第10図に示すi番目のエントリが選
択されたとすると、信号線7006から分岐命令のアドレス
の上位29ビットを取込み、アドレスラッチ903iに書込む
とともに、データドライバ906iが作動し信号線7007から
分岐先アドレスの上位31ビットを取込み、データラッチ
904iに書込む。
次に、過去に外部にある記憶装置から読出され既に命令
キャッシュ8に格納されている命令コードの読出しアド
レスが読出しポインタ7に指定される場合を説明する。
命令キャッシュ8は検索するアドレスがアドレスタグ部
801に保持するアドレスと一致するためヒットする。即
ち、命令キャッシュ8では信号線7001から得られる読出
しポインタ7の29ビットのアドレスの下位7ビットをセ
レクタ803を経てアドレスデコーダ804に入力し読出すエ
ントリを選択する。ここで第9図に示すi番目のエント
リが選択されたとすると、アドレスデコーダ804の出力
のうち信号線8001iのみに信号が現れる。この信号線800
1iの信号によりアドレスドライバ810iが作動し、アドレ
スラッチ805iの値が信号線8002に読出され、アドレスタ
グ比較器815において読出しポインタ7の読出しアドレ
スの上位22ビットと比較される。信号線8002に読出され
た値は過去に読出しを行なったアドレスの上位22ビット
であるから比較は一致し、アドレスタグ比較器815は信
号線7005にヒット信号を出力する。また信号線8001iの
信号によりデータドライバ811i、データドライバ812i、
データドライバ813i、データドライバ814iが作動し、デ
ータラッチ806i、データラッチ807i、データラッチ808
i、データラッチ809iに保持している命令コードの第1
半語、第2半語、第3半語、第4半語がそれぞれ信号線
8003、信号線8004、信号線8005、信号線8006に出力さ
れ、信号線7004から4半語境界に整列した4半語の命令
コードが得られる。
このとき命令キャッシュ8が出力する命令コード中に分
岐命令が含まれ、過去にその分岐が成立した場合は、今
回も分岐が成立する可能性が高い。そこで分岐履歴テー
ブル9を同じく信号線7001により得られる読出しアドレ
スで検索する。分岐履歴テーブル9のアドレスラッチ90
3iにこの分岐命令のアドレスの上位29ビット、即ちこの
分岐命令を含む4半語の命令コードの読出しアドレスが
保持されているとすると、アドレスタグ比較器905iにお
いて信号線7001から得られる読出しアドレスとアドレス
ラッチ903iの値との一致が検出され、各エントリのアド
レスタグ比較器905のうちi番目のエントリの信号線900
1iのみに信号が現れる。信号線9001iによりデータドラ
イバ906iが作動し、データラッチ904iに保持しているこ
の分岐命令の分岐先アドレスが信号線7008に出力され
る。また信号線9001iにより論理和回路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の位置に半語からなる分岐命令Bcc0と分岐命令
Bcc1が存在する場合を示している。まず分岐命令Bcc0が
実行され分岐が成立したとき、分岐履歴テーブル9のあ
るエントリのアドレスラッチ903にアドレスnの上位29
ビットを、データラッチ904に分岐命令Bcc0の分岐先ア
ドレスを格納する。次に、あるアドレスからアドレスn
+2に分岐し、分岐命令Bcc1が実行され分岐が成立した
とき、分岐履歴テーブル9の別のエントリのアドレスラ
ッチ903にアドレスn+4の上位29ビットを、データラ
ッチ904に分岐命令Bcc1の分岐先アドレスを格納する。
しかしアドレスnの下位3ビットは0であるため、アド
レスn+4の上位29ビットはアドレスnの上位29ビット
に等しくなる。従って、再び読出しポインタ7にアドレ
スnの上位29ビットが格納されたときに分岐命令Bcc0も
しくは分岐命令Bcc1の分岐先アドレスを取出すべくアド
レス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+6に分岐する分岐命令を予測
するときに分岐履歴テーブル9から得られる分岐先アド
レスがアドレスn+6であっても、読出しポインタ7に
格納される上位29ビットを用いて命令キャッシュ8から
読出される命令コードは命令OPを第4半語にする4半語
であるため、変位オペランドdisp32が次に読出されるま
で外部にある解読実行装置における命令の解読実行が待
たされたことになる。
本発明はかかる点に鑑み、命令コードを格納した少なく
とも1つ以上のエントリから、命令のアライメントに関
係なく任意の読出しアドレスによって示される目的とす
る語長の命令コードを読出すことのできる命令キャッシ
ュを実現するキャッシュ装置と、読出しアドレスで決ま
る一定の語長の命令コードに含まれる分岐命令の分岐先
アドレスを格納した少なくとも1つ以上のエントリか
ら、読出しアドレスを起点とする予め定めた語長内の最
も読出しアドレスに近い位置にある分岐命令の分岐先ア
ドレスを読出すことのできる分岐履歴テーブルを持つ命
令読出し装置と、命令キャッシュから常に予め定めた語
数の命令コードを読出すとともに、読出された命令コー
ドの中に分岐命令がいずれの位置にあってもまた複数の
分岐命令が含まれていても最初に実行されるべき分岐命
令の分岐の予測だけを行なうことができる命令読出し装
置とを提供することを目的とする。
課題を解決するための手段 (1)本発明は、命令の最小語長に分割されかつ一定の
語数からなる命令列と前記命令列を特定するアドレスと
を対にして格納した複数の対からなる記憶手段と、前記
記憶手段の命令列とアドレスとの複数の対の中から命令
読出しアドレスに基づいて少なくとも2つの対を同時に
選び出す検索手段と、前記検索手段によって同時に選び
出された少なくとも2つの対に格納されている命令列を
命令の最小語長毎に1つを選択して出力する記憶内容選
択手段とを備えたキャッシュ装置である。
(2)(1)のキャッシュ装置の検索手段は、記憶手段
中に格納されているアドレスが命令読出しアドレスの一
部もしくは全部に一致する対と前記対に格納されている
アドレスに連続するアドレスを格納している少なくとも
1つの対とを同時に選び出すようにしてもよい。
(3)(1)のキャッシュ装置の記憶手段は、2バイト
に分割されかつ8バイトからなる命令列と前記命令列の
先頭バイトまたは末尾バイトのアドレスの下位3ビット
を削除したアドレスとを対にして格納した複数の対から
なるようにし、さらに検索手段は、記憶手段中に格納さ
れているアドレスが命令読出しアドレスの下位3ビット
を削除したアドレスに一致する対と前記対に格納されて
いるアドレスに1を加えたアドレスを格納しているもう
1つの対とを同時に選び出すようにし、さらに記憶内容
選択手段は、前記検索手段によって同時に選び出された
2つの対に格納されている命令列を2バイト毎に1つを
選択するようにしてもよい。
(4)また、(1)のキャッシュ装置の記憶手段は、命
令の最小語長に分割されかつ一定の語数からなる命令列
と前記命令列を特定するアドレスおよび前記アドレスか
ら一定値を減じた値の組とを対にして格納した複数の対
からなるようにし、さらに検索手段は、前記記憶手段中
に格納されているアドレスまたは一定値を減じた値が命
令読出しアドレスの一部もしくは全部に一致する少なく
とも2つの対を同時に選び出すようにしてもよい。
(5)また、(1)のキャッシュ装置の記憶手段は、2
バイトに分割されかつ8バイトからなる命令列と前記命
令列の先頭バイトまたは末尾バイトのアドレスの下位3
ビットを削除したアドレスおよび前記した下位3ビット
を削除したアドレスからさらに1を減じたアドレスの組
とを対にして格納した複数の対からなるようにし、さら
に検索手段は、前記記憶手段中に格納されているアドレ
スに一致する対と1を減じたアドレスが命令読出しアド
レスの下位3ビットを削除したアドレスに一致する対と
を同時に選び出すようにし、さらに記憶内容選択手段
は、前記選択手段によって同時に選び出された2つの対
に格納されている命令列を2バイト毎に1つを選択する
ようにしてもよい。
(6)本発明は、分岐命令の分岐先アドレスと前記分岐
命令のアドレスおよび前記アドレスから一定値を減じた
値の組とを対にして格納した複数の対からなる記憶手段
と、前記記憶手段中の分岐先アドレスと分岐命令のアド
レスおよび一定値を減じた分岐命令のアドレスの組との
複数の対の中から格納されている分岐命令のアドレスが
命令読出しアドレスの一部もしくは全部に一致する対を
選び出す第一の検索手段と、前記第一の検索手段によっ
て選び出された対の中から格納されている分岐命令のア
ドレスから命令読出しアドレスを減じた差が零かもしく
は正になる場合は前記差が最も小さくなる対を選択して
前記対に格納されている分岐先アドレスを出力し前記差
が負になる場合は何も出力しない第一の記憶内容選択手
段と、前記記憶手段中の分岐先アドレスと分岐命令のア
ドレスおよび一定値を減じた分岐命令のアドレスの組と
の複数の対の中から格納されている一定値を減じた分岐
命令のアドレスが命令読出しアドレスの一部もしくは全
部に一致する対を選び出す第二の検索手段と、前記第一
の記憶内容選択手段が何も出力しない時に前記第二の検
索手段によって選び出された対の中から格納されている
一定値を減じた分岐命令のアドレスから命令読出しアド
レスを減じた差が負でその絶対値が最も小さくなる対を
選択して前記対に格納されている分岐先アドレスを出力
する第二の記憶内容選択手段とからなる分岐履歴テーブ
ルを備えた命令読出し装置である。
(7)(6)の命令読出し装置の分岐履歴テーブルにお
ける記憶手段は、分岐命令の分岐先アドレスと前記分岐
命令のアドレスの下位3ビットを削除した第1アドレス
および前記した下位3ビットを削除したアドレスからさ
らに1を減じた第2アドレスの組とを対にして格納した
複数の対からなるようにし、さらに第一の検索手段が、
前記記憶手段中に格納されている前記第1アドレスが命
令読出しアドレスの下位3ビットを削除したアドレスに
一致する対を選び出すようにし、さらに第一の記憶内容
選択手段は、前記第一の検索手段によって選び出された
対の中から格納されている前記第1アドレスから命令読
出しアドレスの下位3ビットを削除したアドレスを減じ
た差が零かもしくは正になる場合にのみ前記差が最も小
さくなる対を選択して前記対に格納されている分岐先ア
ドレスを出力するようにし、さらに第二の検索手段は、
前記記憶手段中に格納されている前記第2アドレスが命
令読出しアドレスの下位3ビットを削除したアドレスに
一致する対を選び出すようにし、さらに第二の記憶内容
選択手段は、前記第一の記憶内容選択手段が何も出力し
ない時に前記第二の検索手段によって選び出された対の
中から格納されている前記第2アドレスから命令読出し
アドレスの下位3ビットを削除したアドレスを減じた差
が負でその絶対値が最も小さくなる対を選択して前記対
に格納されている分岐先アドレスを出力するようにして
もよい。
(8)(6)の命令読出し装置に、例えば(1)のキャ
ッシュ装置または(2)のようしたキャッシュ装置また
は(4)のようにしたキャッシュ装置を加えてもよい。
(9)(7)のようにした命令読出し装置に、例えば
(3)のようにしたキャッシュ装置または(5)のよう
にしたキャッシュ装置を加えてもよい。
作 用 本発明は前記した構成により、検索手段が記憶手段の命
令列とアドレスとの複数の対の中から命令読出しアドレ
スに基づいて少なくとも2つの対を同時に選び出し、記
憶内容選択手段が検索手段によって同時に選び出された
少なくとも2つの対に格納されている命令列を命令の最
小語長毎に1つを選択して出力することにより、記憶手
段に格納されている命令列のアドレス境界にかかわらず
命令読出しアドレスにより先頭が特定される一定の語数
の命令列を取り出すことができる。
また本発明は前記した構成により、第一の検索手段が記
憶手段中に格納されている分岐命令のアドレスが命令読
出しアドレスの一部もしくは全部に一致する対を選び出
し、第一の記憶内容選択手段が選び出された対の中から
格納されている分岐命令のアドレスから命令読出しアド
レスを減じた差が零かもしくは正になる場合は前記差が
最も小さくなる対を選択してこの対に格納されている分
岐先アドレスを出力することにより、命令読出しアドレ
スにより先頭が特定される命令列中のうちその先頭から
所定のアドレス境界までの範囲にある最も前記命令読出
しアドレスに近い位置にある分岐命令の分岐先アドレス
を取り出すことができる。この範囲に分岐命令がない場
合は、第二の検索手段が記憶手段中に格納されている一
定値を減じた分岐命令のアドレスが命令読出しアドレス
の一部もしくは全部に一致する対を選び出し、第二の記
憶内容選択手段が選び出された対の中から格納されてい
る一定値を減じた分岐命令のアドレスから命令読出しア
ドレスを減じた差が負でその絶対値が最も小さくなる対
を選択して前記対に格納されている分岐先アドレスを出
力することにより、命令読出しアドレスにより先頭が特
定される命令列中のうち所定のアドレス境界から末尾ま
での範囲にある最も前記命令読出しアドレスに近い位置
にある分岐命令の分岐先アドレスを取り出すことができ
る。
さらに本発明は前記した構成により、キャッシュ装置に
おける記憶手段に格納されている命令列のアドレス境界
にかかわらず前記命令読出しアドレスにより先頭が格納
される一定の語数の命令列を取り出すとともに取り出さ
れた命令列中に分岐命令がいずれの位置にあってもまた
複数の分岐命令が含まれていても最初に実行されるべき
分岐命令の分岐の予測を行うことができる。
実 施 例 第1図は本発明の第1の実施例におけるキャッシュ装置
と命令読出し装置の構成図を示すものである。本実施例
のキャッシュ装置と命令読出し装置においては、1命令
あたりの語長は16ビットの整数倍であり、命令コードは
32ビットのアドレス空間の半語境界に整列されている。
またアドレスは8ビット単位に割当てられ、命令コード
はその先頭の8ビットに割当てられたアドレスで識別さ
れる。第1図において、1は読出しを行なう4半語の命
令コードの先頭アドレスの上位29ビットを保持する読出
しポインタ、2は読出しポインタ1に保持される読出し
を行なう4半語の命令コードの先頭アドレスの上位29ビ
ットに続く2ビット(以下ではアドレスの上位29ビット
に続く2ビットを半語識別2ビットと称す)を保持する
半語識別レジスタ、3は4半語境界に整列した命令コー
ドとその先頭アドレスとを対にして格納し、読出しポイ
ンタ1の値で検索して半語識別レジスタ2の値で検索さ
れたエントリに格納された命令コードを選択し4半語の
命令コードを出力する命令キャッシュ、4は分岐が成立
した分岐命令のアドレスと分岐先アドレスとを対にして
格納し、読出しポインタ1の値で検索して半語識別レジ
スタ2の値で検索されたエントリを選択し格納された分
岐先アドレスを読出す分岐履歴テーブル、5は読出しポ
インタ1に保持された読出しアドレスの上位29ビットに
1を加算するポインタ増分器、6はポインタ増分器5の
出力である1増加した読出しアドレスの上位29ビットと
分岐履歴テーブル4から得られる分岐先アドレスの上位
29ビットとを分岐履歴テーブル4のヒット信号により選
択するポインタ入力セレクタである。
第2図は第1図に示す命令キャッシュ3の詳細構成図を
示すものである。第2図において、301はアドレスの上
位22ビットを格納し読出しポインタ1の値で検索を行な
う128エントリからなるアドレスタグ部、302は4半語境
界に整列した64ビットの命令コードを格納しアドレスタ
グ部301で検索されたエントリの命令コードを半語識別
レジスタ2の値で選択し4半語の命令コードを出力する
128エントリからなるデータ部、303は7ビットのセレク
タ、304はアドレスの上位から23〜29ビット目の7ビッ
トをデコードして読出し・書込みを行なうエントリを2
つ選択するアドレスデコーダ、305はアドレスの上位22
ビットを保持するアドレスラッチ、306、307、308、309
はそれぞれ4半語境界に整列した命令コードの第1半
語、第2半語、第3半語、第4半語を保持するデータラ
ッチ、310はアドレスデコーダ304で選択された2つのエ
ントリのうちアドレスの小さいエントリのアドレスラッ
チ305に対してアドレスの上位22ビットの読出し・書込
みを行なうアドレスドライバ、311はアドレスデコーダ3
04で選択された2つのエントリのうちアドレスの大きい
エントリのアドレスラッチ305に対してアドレスの上位2
2ビットの読出しを行なうアドレスドライバ、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の添字
i、jはそれぞれi番目、j番目のエントリを示す。31
6はアドレスデコーダ304で選択された2つのエントリの
うちアドレスの小さいエントリのアドレスラッチ305の
値と読出しポインタ1に保持された読出しアドレスの上
位22ビットとの一致を検出する第1アドレスタグ比較
器、317はアドレスデコーダ304で選択された2つのエン
トリのうちアドレスの大きいエントリのアドレスラッチ
305の値と読出しポインタ1に保持された読出しアドレ
スの上位22ビットとの一致を検出する第2アドレスタグ
比較器、318は第1アドレスタグ比較器316と第2アドレ
スタグ比較器317の出力の論理積をとり、アドレスデコ
ーダ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の値と読出しポインタ1に保持された
読出しアドレスとの一致を検出する第1アドレスタグ比
較器、408は前アドレスラッチ404の値と読出しポインタ
1に保持された読出しアドレスとの一致を検出する第2
アドレスタグ比較器、409は第1アドレスタグ比較器407
により検出されるアドレスラッチ403の値と読出しアド
レスとが一致するエントリに対しては半語識別レジスタ
2の値が分岐位置識別ラッチ405の値より大きいか等し
くなるエントリと、第2アドレスタグ比較器408により
検出される前アドレスラッチ404の値と読出しアドレス
とが一致するエントリに対しては半語識別レジスタ2の
値が分岐位置識別ラッチ405の値より小さくなるエント
リのうち、分岐位置識別ラッチ405の値から半語識別レ
ジスタ2の値を減じた値(2ビットの符号無し減算結
果)が最も小さくなるエントリを選択する読出しエント
リ優先回路、410はデータラッチ406に対して分岐先アド
レスの読出し・書込みを行なうデータドライバで、403
から410の添字i,jはそれぞれi番目、j番目のエントリ
を示す。411は分岐命令のアドレスの上位29ビットから
1を減算するアドレス減算器、412はすべてのエントリ
の読出しエントリ優先回路409の出力の論理和をとり、
分岐履歴テーブル4がヒットし有効な分岐先アドレスが
出力されることを示す信号を生成する論理和回路、417
は分岐先アドレスをデータ部402に格納する際に書込む
エントリを決定する入換エントリ決定回路である。
第4図(a)は第3図に示す各エントリの読出しエント
リ優先回路409の詳細構成図を示すものである。413は分
岐位置識別ラッチ405の値をA入力、半語識別レジスタ
2の値をB入力としてA−Bの減算結果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ビットの符号無し減算結果)が最も小さくなるエン
トリを選択する論理回路である。
以上のように構成された本実施例のキャッシュ装置と命
令読出し装置について、以下その動作を説明する。
読出しポインタ1と半語識別レジスタ2にそれぞれ読出
しを行なうアドレスの上位29ビットとそれに続く2ビッ
トを格納し、同時に命令キャッシュ3を信号線1001によ
り得られる読出しポインタ1の地で検索する。
はじめに、このアドレスが初めて読出されるアドレスで
ある場合を説明する。
命令キャッシュ3は検索するアドレスが初めて読出され
るアドレスであるためヒットしない。このとき、半語識
別レジスタ2の値を無視して外部にある記憶装置から4
半語境界に区切られた4半語の命令コードの読出しを行
ない、このときの読出しアドレスの上位29ビット(下位
3ビットは0につき不要)と読出した64ビットの命令コ
ードとをそれぞれ信号線1003と信号線1004とを通じて命
令キャッシュ3に格納する。命令キャッシュ3では信号
線1003から得られる29ビットのアドレスの下位7ビット
をセレクタ303を経てアドレスデコーダ304に入力し格納
するエントリを選択する。ここで第2図に示すi番目の
エントリが選択されたとすると、アドレスデコーダ304
の出力のうち信号線3001iのみに信号が現れる。この信
号線3001iの信号によりアドレスドライバ310iが作動
し、信号線1003からアドレスの上位22ビトを取込み、ア
ドレスラッチ305iに書込む。同様にデータドライバ312
i、データドライバ313i、データドライバ314i、データ
ドライバ315iが作動し、信号線1004からそれぞれ命令コ
ードの第1半語、第2半語、第3半語、第4半語を取込
み、データラッチ306i、データラッチ307i、データラッ
チ308i、データラッチ309iに取込む。信号線3001iはア
ドレスドライバ311j、データドライバ312j、データドラ
イバ313j、データドライバ314jにも接続されているが、
いずれも書込み時には作動しない。
以上の動作と並行して、ポインタ増分器5で読出しポイ
ンタ1の読出しアドレスの上位29ビットを1増加させ
る。しかしこの増分されたアドレスについても初めて読
出されるアドレスであれば、命令キャッシュ3はヒット
せず、上に述べた命令キャッシュ3への命令コードの格
納を繰返す。
外部にある記憶装置から読出された4半語の命令コード
外部にある解読実行装置で解読実行された結果、この命
令コードの中に分岐命令が含まれ、分岐が成立した場合
は、上記の命令キャッシュ3への命令コードの格納と独
立に、この分岐命令のアドレスの上位31ビットと分岐先
アドレスの上位31ビット(いずれも最下位ビットは0に
つき不要)とをそれぞれ信号線1007と信号線1008を通じ
て分岐履歴テーブル4に格納する。分岐履歴テーブル4
では入換エントリ決定回路417で格納するエントリを選
択する。ここで第3図に示すi番目のエントリが選択さ
れたとすると、信号線1007から分岐命令のアドレスの上
位29ビットを取込みアドレスラッチ403iに書込むととも
に、アドレス減算器411で1減算し信号線4004を通じ前
アドレスラッチ404iに書込む。同時に信号線4005を通じ
て分岐命令のアドレスの半語識別2ビットを分岐位置識
別ラッチ405iに書込み、またデータドライバ410iが作動
し信号線1008から分岐先アドレスの上位31ビットを取込
みデータラッチ406iに書込む。
次に、過去に外部にある記憶装置から読出され既に命令
キャッシュ3に格納されている命令コードの読出しアド
レスが読出しポインタ1と半語識別レジスタ2にそれぞ
れ上位29ビットとそれに続く2ビットに分かれて指定さ
れる場合を説明する。ここでの読出しアドレスは4半語
境界上のアドレスでなくてもよい。
命令キャッシュ3は検索するアドレスがアドレスタグ部
301に保持するアドレスと一致するためヒットする。即
ち、命令キャッシュ3では信号線1001から得られる読出
しポインタ1の29ビットのアドレスの下位7ビットをセ
レクタ303を経てアドレスデコーダ304に入力し読出すエ
ントリを選択する。ここで第2図に示すi番目のエント
リが選択されたとすると、アドレスデコーダ304の出力
のうち信号線3001iのみに信号が現れる。この信号線300
1iの信号によりアドレスドライバ310iとアドレスドライ
バ311jが作動し、アドスラッチ305iの値とアドレスラッ
チ305jの値がそれぞれ信号線3002と信号線3003に読出さ
れ、第1アドレスタグ比較器316と第2アドレスタグ比
較器317において読出しポインタ1の読出しアドレスの
上位22ビットと比較される。信号線3002と信号線3003に
読出された値はいずれも過去に読出しを行なったアドレ
スの上位22ビットであるから比較はともに一致し、論理
積回路318はi番目のエントリとi番目のエントリのデ
ータ部の命令コードが連続することを示すヒット信号を
信号線1006に出力する。また信号線301iの信号によいデ
ータドライバ312i〜314jが作動するが、信号線1002で得
られる半語識別レジスタ2の値によって動作が異なる。
これを第5図の命令配置図を用いて説明する。同図
(2)は4半語境界のアドレスnから8つの半語からな
る命令コードOP0〜OP7が存在する場合を示している。
(1)半語識別レジスタ2の値が0のとき 信号線3001iの信号および信号線1002の値によりデータ
ドライバ312i、データドライバ313i、データドライバ31
4i、データドライバ315iが作動し、データラッチ306i、
データ307i、データラッチ308i、データラッチ309iに保
持している4半語境界に整列した命令コードの第1半語
OP0、第2半語OP1、第3半語OP2、第4半語OP3がそれぞ
れ信号線3004、信号線3005、信号線3006、信号線3007に
出力され、読出しポインタ1と半語識別レジスタ2に格
納される読出しアドレスnで示される4半語境界の第1
半語から始まる4半語の命令コードが信号線1005から同
図(b)に示すように得られる。
(2)半語識別レジスタ2の値が1のとき信号線3001i
の信号および信号線1002の値によりデータドライバ313
i、データドライバ314i、データドライバ315i、データ
ドライバ312jが作動し、データラッチ307i、データラッ
チ308i、データラッチ309iに保持している4半語境界に
整列した命令コードの第2半語OP1、第3半語OP2、第4
半語OP3と、データラッチ306jに保持している上に続く
4半語境界に整列した命令コードの第1半語OP4がそれ
ぞれ信号線3005、信号線3006、信号線3007、信号線3004
に出力され、読出しポインタ1と半語識別レジスタに格
納される読出しアドレスn+2で示される4半語境界の
第2半語から始まる4半語の命令コードが信号線1005か
ら同図(c)に示すように得られる。
(3)半語識別レジスタ2の値が2のとき 信号線3001iの信号および信号線1002の値によりデータ
ドライバ314i、データドライバ315i、データドライバ31
2j、データドライバ313jが作動し、データラッチ308i、
データラッチ309iに保持している4半語境界に整列した
命令コードの第3半語OP2、第4半語OP3と、データラッ
チ306j、データラッチ307jに保持している上に続く4半
語境界に整列した命令コードの第1半語OP4、第2半語O
P5がそれぞれ信号線3006、信号線3007、信号線3004、信
号線信号線3005に出力され、読出しポインタ1と半語識
別レジスタ2に格納される読出しアドレスn+4で示さ
れる4半語境界の第3半語から始まる4半語の命令コー
ド0が信号線1005から同図(d)に示すように得られ
る。
(4)半語識別レジスタ2の値が3のとき 信号線3001iの信号および信号線1002の値によりデータ
ドライバ315i、データドライバ312j、データドライバ31
3j、データドライバ314jが作動し、データラッチ309iに
保持している4半語境界に整列した命令コードの第4半
語OP3と、データラッチ306j、データラッチ307j、デー
タラッチ308jに保持している上に続く4半語境界に整列
した命令コードの第1半語のOP4、第2半語OP5、第3半
語OP6がそれぞれ信号線3007、信号線3004、信号線300
5、信号線3006に出力され、読出しポインタ1と半語識
別レジスタ2に格納される読出しアドレスn+6で示さ
れる4半語境界の第4半語から始まる4半語の命令コー
ドが信号線1005から同図(e)に示すように得られる。
このとき命令キャッシュ3が出力する命令コード中に分
岐命令が含まれ、過去にその分岐が成立した場合は、今
回も分岐が成立する可能性が高い。そこで分岐履歴テー
ブルを同じく信号線1001により得られる読出しポインタ
1の値で検索する。この動作を第6図の命令配置図に示
す例で説明する。同図は4半語境界のアドレスnに対し
てn+2、n+6、n+12、n+14の位置に半語からな
る分岐命令Bcc0、Bcc1、Bcc2、Bcc3が存在する場合を示
している。これら4つの分岐命令はいずれも過去に実行
され分岐が成立し、その分岐先アドレス等が分岐履歴テ
ーブル4に格納されれいるものとする。ここで分岐命令
Bcc0に関する情報が分離履歴テーブル4のi番目のエン
トリに、分岐命令Bcc1に関する情報がj番目のエントリ
に、分岐命令Bcc2に関する情報がk番目のエントリに、
分岐命令Bcc3に関する情報がm番目のエントリに格納さ
れているものとすると、アドレスラッチ403iとアドレス
ラッチ403jにはアドレスnの上位29ビットが、アドレス
ラッチ403kとアドレスラッチ403mにはアドレスn+8の
上位29ビット(即ち、アドレスnの上位29ビット+1)
が、前アドレスラッチ404iと前アドレスラッチ404jには
アドレスnの上位29ビット−1が、前アドレスラッチ40
4kと前アドレスラッチ404mにはアドレスn+8の上位29
ビット−1(即ち、アドレスnの上位29ビット)が格納
され、分岐位置識別ラッチ405iには1が、分岐位置識別
ラッチ405jには3が、分岐位置識別ラッチ405kには2
が、分岐位置識別ラッチ405mには3が格納され、データ
ラッチ406iには分岐命令Bcc0の分岐先アドレスの上位31
ビットが、データラッチ406jには分岐命令Bcc1の分岐先
アドレスの上位31ビットが、データラッチ406kには分岐
命令Bcc2の分岐先アドレスの上位31ビットが、データラ
ッチ406mには分岐命令Bcc3の分岐先アドレスの上位31ビ
ットが格納されている。添字k、mを持つ構成要素につ
いては第3図には示されていないが、添字i、jと同様
である。
第6図に斜線で示すアドレスn+6から4半語を命令キ
ャッシュ3から読出す場合を想定する。このとき読出し
ポインタ1の値はアドレスnの上位29ビット、半語識別
レジスタ2の値は3である。第1アドレスタグ比較器40
7において信号線1001から得られるアドレスnの上位29
ビットとアドレスラッチ403の値との一致が検出され、
i番目のエントリの第1アドレスタグ比較器407iにより
信号線4001iとj番目のエントリの第1アドレスタグ比
較器407jにより信号線4001jに信号が現れる。また、第
2アドレスタグ比較器408において信号線1001から得ら
れるアドレスnの上位29ビット前アドレスラッチ404の
値との一致が検出され、k番目のエントリの第2アドレ
スタグ比較器408kにより信号線4002kとm番目のエント
リの第2アドレスタグ比較器408mにより信号線4002mに
信号が現れる。信号線4001および信号線4002を受けて各
エントリの読出しエントリ優先回路409が以下のように
働く。
(1)i番目のエントリの読出しエントリ優先回路409i 減算器413iにおいて分岐位置識別ラッチ405iの値から半
語識別レジスタ2の値を減じた結果キャリCRYが0にな
り、論理回路415iは論理0を出力する。これを受けて論
理回路416iの3つのオープンコレクタのゲートは論理1
を出力するため信号線4006、信号線4007、信号線4008を
低電位にすることはない。また、信号線4003iには論理
0が出力される。以上は、分岐命令Bcc0が命令キャッシ
ュ3から読出される4半語に含まれないことによる。
(2)j番目のエントリの読出しエントリ優先回路409j 減算器413jにおいて分岐位置識別ラッチ405jのの値から
半語識別レジスタ2の値を減じた結果キャリCRYが1に
なり、論理回路415jは信号線4001jに示される論理1と
により論理1を出力する。また減算結果OUTは値0にな
り、デコーダ414jは0を示す出力線を論理1にする。こ
れらを受けて論理回路416jは最上段のオープンコレクタ
のゲートに論理0を出力するため信号線4006が低電位に
なり、信号線4003jには論理1が出力される。以上は、
分岐命令Bcc1が命令キャッシュ3から読出される4半語
に含まれ、分岐命令Bcc1のアドレスが読出しアドレスに
最も近いことによる。
(3)k番目のエントリの読出しエントリ優先回路409k 減算器413kにおいて分岐位置識別ラッチ405kの値から半
語識別レジスタ2の値を減じた結果キャリCRYが0にな
り、論理回路415kは信号線4002kに示される論理1とに
より論理1を出力する。また減算結果OUTは値3にな
り、デコーダ414kは3を示す出力線を論理1にする。し
かし信号線4006が低電位、即ち論理0であるため論理回
路416kはいずれのオープンコレクタのゲートにも論理0
を出力できず、信号線4003kには論理0が出力される。
以上は、分岐命令Bcc2が命令キャッシュ3から読出され
る4半語に含まれるが、他により読出しアドレスに近い
アドレスに分岐命令が存在することによる。
(4)m番目のエントリの読出しエントリ優先回路409m 減算器413mにおいて分岐位置識別ラッチ405mの値から半
語識別レジスタ2の値を減じた結果キャリCRYが1にな
り、論理回路415mは論理0を出力する。これを受けて論
理回路416mの3つのオープンコレクタのゲートは論理1
を出力するため信号線4006、信号線4007、信号線4008を
低電位にすることはない。また、信号線4003mには論理
0が出力される。以上は、分岐命令Bcc3が命令キャッシ
ュ3から読出される4半語に含まれないことによる。
読出しエントリ優先回路409jからの信号線400jによるデ
ータドライバ410jが作動し、データラッチ406jに保持し
ている分岐命令Bcc1の分岐先アドレスの上位31ビットが
信号線1009に出力される。また信号線4003jにより論理
和回路412は信号線1010にヒット信号を出力する。
ポインタ入力セレク6は信号線1010のヒット信号を受け
て、読出しポインタ1の入力をポインタ増分器5の出力
から分岐履歴テーブル4の信号線1009で得られる分岐命
令Bcc1の分岐先アドレスの上位29ビットに切換え、同時
に信号線1009の下位2ビットで得られる分岐命令Bcc1の
分岐先アドレスの半語識別2ビットを半語識別レジスタ
2に格納する。続いて命令キャッシュ3は、同様に読出
しポインタ1と半語識別レジスタ2の値に基づいて、分
岐命令Bcc1の分岐先アドレスで示される4半語の読出し
を行なう。
以上のように本実施例によれば、アドレスデコーダ304
でエントリを2つ選択し、この2つのエントリのアドレ
スタグを第1アドレスタグ比較器316と第2アドレスタ
グ比較器317で比較して2つのエントリに格納されてい
る命令コードが連続することを検証するとともに、デー
タドライバ312〜315を半語識別レジスタ2の値で制御す
ることにより、この2つのエントリから命令のアライメ
ントに関係なく任意の読出しアドレスによって示される
4半語の語長の命令コードを読出すことのできる命令キ
ャッシュを実現することができる。
また本実施例によれば、エントリに分岐命令の4半語境
界のアドレスの1つの前の4半語境界のアドレスを格納
する前アドレスラッチ404とそれと読出しアドレスの一
致を検出する第2アドレスタグ比較器408を設けて命令
キャッシュ3が読出す半語を完全に含む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、326、327、328はそれぞれ4半
語境界に整列した命令コードの第1半語、第2半語、第
3半語、第4半語を保持するデータラッチ、329はアド
レスラッチ323の値と読出しポインタ1に保持された読
出しアドレスとの一致を検出する第1アドレスタグ比較
器、330は前アドレスラッチ324の値と読出しポインタ1
に保持された読出しアドレスとの一致を検出する第2ア
ドレスタグ比較器、331は命令コードを書込むエントリ
のデータラッチ325に対してその第1半語を書込み、第
1アドレスタグ比較器329で一致が検出されるエントリ
のデータラッチ325に対して半語識別レジスタ2の値が
0ならば読出しを行ない、第2アドレスタグ比較器330
で一致が検出されるエントリのデータラッチ325に対し
て半語識別レジスタ2の値が1以上ならば読出しを行な
うデータドライバ、332は命令コードを書込むエントリ
のデータラッチ326に対してその第1半語を書込み、第
1アドレスタグ比較器329で一致が検出されるエントリ
のデータラッチ326に対して半語識別レジスタ2の値が
1以下ならば読出しを行ない、第2アドレスタグ比較器
330で一致が検出されるエントリのデータラッチ326に対
して半語識別レジスタ2の値が2以上ならば読出しを行
なうデータドライバ、333は命令コードを書込むエント
リのデータラッチ327に対してその第1半語を書込み、
第1アドレスタグ比較器329で一致が検出されるエント
リのデータラッチ327に対して半語識別レジスタ2の値
が2以下ならば読出しを行ない、第2アドレスタグ比較
器330で一致が検出されるエントリのデータラッチ327に
対して半語識別レジスタ2の値が3ならば読出しを行な
うデータドライバ、334は命令コードを書込むエントリ
のデータラッチ328に対してその第1半語を書込み、第
1アドレスタグ比較器329で一致が検出されるエントリ
のデータラッチ328に対して読出しを行なうデータドラ
イバで、323から334の添字i、jはそれぞれi番目、j
番目のエントリを示す。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ビットは0につき不要)と読出した64ビットの
命令コードとをそれぞれ信号線1003と信号線1004とを通
じて命令キャッシュ3に格納する。命令キャッシュでは
入換エントリ決定回路339で格納するエントリを選択す
る。ここで第7図に示すi番目のエントリが選択された
とすると、信号線1003からアドレスの上位29ビットを取
込みアドレスラッチ323iに書込むとともに、アドレス減
算器335で1減算し信号線3013を通じ前アドレスラッチ3
24iに書込む。同様にデータドライバ331i、データドラ
イバ332i、データドライバ333i、データドライバ334iが
作動し、信号線1004からそれぞれ命令コードの第1半
語、第2半語、第3半語、第4半語を取込み、データラ
ッチ325i、データラッチ326i、データラッチ327i、デー
タラッチ328iに書込む。
<命令キャッシュ3からの読出し> ここでの読出しアドレスは4半語境界上のアドレスでな
くてもよい。簡単化のために再び第5図の命令配置図を
示す例を用いて説明する。ここで4半語境界のアドレス
nの4半語の命令コードがi番目のエントリに、次の4
半語境界のアドレスn+8の4半語の命令コードがj番
目のエントリに格納されているものとすると、アドレス
ラッチ323iにはアドレスnの上位29ビットが、アドレス
ラッチ323jにはアドレスn+8の上位29ビット(即ち、
アドレスnの上位29ビット+1)が、前アドレスラッチ
324iにはアドレスnの上位29ビット−1が、前アドレス
ラッチ324jにはアドレスn+8の上位29ビット−1(即
ち、アドレスnの上位29ビット)が格納され、データラ
ッチ325i〜328iには命令コードOP0〜OP3が、データラッ
チ325j〜328jには命令コードOP4〜OP7が格納されてい
る。この命令キャッシュ3に対してアドレスn、アドレ
スn+2、アドレスn+4、アドレスn+6のいずれか
の読出しアドレスで読出す場合を想定する。このとき読
出しポインタ1の値はアドレスnの上位29ビット、半語
識別レジスタ2の値はそれぞれ0、1、2、3である。
第1アドレスタグ比較器329において信号線1001から得
られるアドレスnの上位29ビットとアドレスラッチ323
の値との一致が検出され、i番目のエントリの第1アド
レスタグ比較器329iにより信号線3011iに信号が現れ
る。また、第2アドレスタク比較器330において信号線1
001から得られるアドレスnの上位29ビットと前アドレ
スラッチ324の値との一致が検出され、j番目のエント
リの第2アドレスタグ比較器330jにより信号線3012jに
信号が現れる。信号線3011iと信号線3012jの信号を受け
てデータドライバ312i〜314jが作動するが、信号線1002
で得られる半語識別レジスタ2の値によって動作が異な
る。
(1)半語識別レジスタ2の値が0のとき 信号線3011iの信号および信号線1002の値によりデータ
ドライバ331i、データドライバ332i、データドライバ33
3i、データドライバ334iが作動し、データラッチ325i、
データラッチ326i、データラッチ327i、データラッチ32
8iに保持している4半語境界に整列した命令コードの第
1半語OP0、第2半語OP1、第3半語OP2、第4半語OP3が
それぞれ信号線3014、信号線3015、信号線3016、信号線
3017に出力され、読出しポインタ1と半語識別レジスタ
2に格納される読出しアドレスnで示される4半語境界
の第1半語から始まる4半語の命令コードが信号線1005
から同図(b)に示すように得られる。
(2)半語識別レジスタ2の値が1のとき信号線3011i
の信号および信号線1002の値によりデータドライバ332
i、データドライバ333i、データドライバ334iが、信号
線3012jの信号および信号線1002の値によりデータドラ
イバ331iが作動し、データラッチ326i、データラッチ32
7i、データラッチ328iに保持している4半語境界に整列
した命令コードの第2半語OP1、第3半語OP2、第4半語
OP3と、データラッチ325jに保持している上に続く4半
語境界に整列した命令コードの第1半語OP4がそれぞれ
信号線3015、信号線3016、信号線3017、信号線3014に出
力され、読出しポインタ1と半語識別レジスタ2に格納
される読出しアドレスn+2で示される4半語境界の第
2半語から始まる4半語の命令コードが信号線1005から
同図(c)に示すように得られる。
(3)半語識別レジスタ2の値が2のとき 信号線3011iの信号および信号線1002の値によりデータ
ドライバ333i、データドライバ334iが、信号線3012jの
信号および信号線1002の値によりデータドライバ331j、
データドライバ332jが作動し、データラッチ327i、デー
タラッチ328iに保持している4半語境界に整列した命令
コードの第3半語OP2、第4半語OP3と、データラッチ32
5j、データラッチ326jに保持している上に続く4半語境
界に整列した命令コードの第1半語OP4、第2半語OP5が
それぞれ信号線3016、信号線3017、信号線3014、信号線
3015に出力され、読出しポインタ1と半語識別レジスタ
2に格納される読出しアドレスn+4で示される4半語
境界の第3半語から始まる4半語の命令コードが信号線
1005から同図(d)に示すように得られる。
(4)半語識別レジスタ2の値が3のとき 信号線3011iの信号および信号線1002の値によりデータ
ドライバ334iが、信号線3012jの信号および信号線1002
の値によりデータドライバ331j、データドライバ332j、
データドライバ333jが作動し、データラッチ328iに保持
している4半語境界に整列した命令コードの第4半語OP
3と、データラッチ325j、データラッチ326j、データラ
ッチ327jに保持している上に続く4半語境界に整列した
命令コードの第1半語OP4、第2半語OP5、第3半語OP6
がそれぞれ信号線3017、信号線3014、信号線3015、信号
線3016に出力され、読出しポインタ1と半語識別レジス
タ2に格納される読出しアドレスn+6で示される4半
語境界の第4半語から始まる4半語の命令コードが信号
線1005から同図(e)に示すように得られる。
また、信号線3011iと信号線3012jの信号を受けて、論理
和回路336および論理和回路337はともに論理1の信号を
出力し、論理積回路338はi番目とj番目のエントリが
ヒットしこれらの命令コードが連続することを示す信号
を信号線1006に出力する。
以上のように第2の実施例によれば、命令コードの4半
語境界のアドレスの1つ前の4半語境界のアドレスを格
納する前アドレスラッチ324とその値と読出しアドレス
の一致を検出する第2アドレスタグ比較器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とアドレスデコーダ30
4の出力のみで作動するデータドライバ315とを設け、ア
ドレスデコーダ304で選択される2つのエントリのデー
タラッチ306〜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の
ビット数をn、アドレスタグ部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は減算器41
3、デコーダ414、論理回路415および論理回路416を個別
の要素として構成しているが、回路の簡単化を図るため
全体を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図は本発明の第1の実施例におけるキャッシュ装置
と命令読出し装置の構成図、第2図は同実施例の命令キ
ャッシュ3の詳細構成図、第3図は同実施例の分岐履歴
テーブル4の詳細構成図、第4図は同実施例の分岐履歴
テーブル4の読出しエントリ優先回路409の詳細構成
図、第5図は第1および第2の実施例の命令キャッシュ
3の動作を説明する命令配置図、第6図は第1の実施例
の分岐履歴テーブル4の動作を説明する命令配置図、第
7図は本発明の第2の実施例のキャッシュ装置と命令読
出し装置における命令キャッシュ3の詳細構成図、第8
図は従来のキャッシュ装置と命令読出し装置の構成図、
第9図は同従来例の命令キャッシュ8の詳細構成図、第
10図は同従来例の分岐履歴テーブル9の詳細構成図であ
る。第11図は同従来例の分岐履歴テーブル9の動作を説
明する命令配置図である。 1……読出しポインタ、2……半語識別レジスタ、3…
…命令キャッシュ、4……分岐履歴テーブル、5……ポ
インタ増分器、6……ポインタ入力セレクタ、301……
アドレスタグ部、302……データ部、303……アドレスセ
レクタ、304……アドレスデコーダ、305……アドレスラ
ッチ、306、307、308、309……データラッチ、310、311
……アドレスドライバ、312、313、314、315……データ
ドライバ、316……第1アドレスタグ比較器、317……第
2アドレスタグ比較器、318……論理積回路、321……ア
ドレスタグ部、322……データ部、323……アドレスラッ
チ、324……前アドレスラッチ、325、326、327、328…
…データラッチ、329……第1アドレスタグ比較器、330
……第2アドレスタグ比較器、331、332、333、334……
データドライバ、334……アドレス減算器、336、337…
…論理和回路、338……論理積回路、339……入換エント
リ決定回路、401……アドレスタグ部、402……データ
部、403……アドレスラッチ、404……前アドレスラッ
チ、405……分岐位置識別レジスタ、406……データラッ
チ、407……第1アドレスタグ比較器、408……第2アド
レスタグ比較器、409……読出しエントリ優先回路、410
……データドライバ、411……アドレス減算器、412……
論理和回路、413……減算器、414……デコーダ、415、4
16……論理回路、417……入換エントリ決定回路。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 松崎 敏道 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (56)参考文献 特開 昭62−72042(JP,A) 特開 昭63−56731(JP,A) 特開 昭59−91551(JP,A)

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】命令の最小語長に分割されかつ一定の語数
    からなる命令列と前記命令列を特定するアドレスとを対
    にして格納した複数の対からなる記憶手段と、前記記憶
    手段の命令列とアドレスとの複数の対の中から命令読出
    しアドレスに基づいて少なくとも2つの対を同時に選び
    出す検索手段と、前記検索手段によって同時に選び出さ
    れた少なくとも2つの対に格納されている命令列を命令
    の最小語長毎に1つを選択して出力する記憶内容選択手
    段とを備え、前記記憶手段に格納されている命令列のア
    ドレス境界にかかわらず前記命令読出しアドレスにより
    先頭が特定される一定の語数の命令列を取り出すことを
    特徴とするキャッシュ装置。
  2. 【請求項2】前記検索手段が、記憶手段中に格納されて
    いるアドレスが命令読出しアドレスの一部もしくは全部
    に一致する対と前記対に格納されているアドレスに連続
    するアドレスを格納している少なくとも1つの対とを同
    時に選び出すことを特徴とする請求項1記載のキャッシ
    ュ装置。
  3. 【請求項3】前記記憶手段が、2バイトに分割されかつ
    8バイトからなる命令列と前記命令列の先頭バイトまた
    は末尾バイトのアドレスの下位3ビットを削除したアド
    レスとを対にして格納した複数の対からなり、前記検索
    手段が、記憶手段中に格納されているアドレスが命令読
    出しアドレスの下位3ビットを削除したアドレスに一致
    する対と前記対に格納されているアドレスに1を加えた
    アドレスを格納しているもう1つの対とを同時に選び出
    し、前記記憶内容選択手段が、前記検索手段によって同
    時に選び出された2つの対に格納されている命令列を2
    バイト毎に1つを選択することにより、前記記憶手段に
    格納されている命令列が8バイト境界で区切られている
    にもかかわらず前記命令読出しアドレスにより先頭が特
    定される8バイトの命令列を取り出すことを特徴とする
    請求項1記載のキャッシュ装置。
  4. 【請求項4】前記記憶手段が、命令を最小語長に分割さ
    れかつ一定の語数からなる命令列と前記命令列を特定す
    るアドレスおよび前記アドレスから一定値を減じた値の
    組とを対にして格納した複数の対からなり、前記検索手
    段が、前記記憶手段中に格納されているアドレスまたは
    一定値を減じた値が命令読出しアドレスの一部もしくは
    全部に一致する少なくとも2つの対を同時に選び出すこ
    とを特徴とする請求項1記載のキャッシュ装置。
  5. 【請求項5】前記記憶手段が、2バイトに分割されかつ
    8バイトからなる命令列と前記命令列の先頭バイトまた
    は末尾バイトのアドレスの下位3ビットを削除したアド
    レスおよび前記した下位3ビットを削除したアドレスか
    らさらに1を減じたアドレスの組とを対にして格納した
    複数の対からなり、前記検索手段が、前記記憶手段中に
    格納されているアドレスに一致する対と1を減じたアド
    レスが命令読出しアドレスの下位3ビットを削除したア
    ドレスに一致する対とを同時に選び出し、前記記憶内容
    選択手段が、前記検索手段によって同時に選び出された
    2つの対に格納されている命令列を2バイト毎に1つを
    選択することにより、前記記憶手段に格納されている命
    令列が8バイト境界で区切られているにもかかわらず前
    記命令読出しアドレスにより先頭が特定される8バイト
    の命令列を取り出すことを特徴とする請求項1記載のキ
    ャッシュ装置。
  6. 【請求項6】分岐命令の分岐先アドレスと前記分岐命令
    のアドレスおよび前記アドレスから一定値を減じた値の
    組とを対にして格納した複数の対からなる記憶手段と、
    前記記憶手段中の分岐先アドレスと分岐命令のアドレス
    および一定値を減じた分岐命令のアドレスの組との複数
    の対の中から格納されている分岐命令のアドレスが命令
    読出しアドレスの一部もしくは全部に一致する対を選び
    出す第一の検索手段と、前記第一の検索手段によって選
    び出された対の中から格納されている分岐命令のアドレ
    スから命令読出しアドレスを減じた差が零かもしくは正
    になる場合は前記差が最も小さくなる対を選択して前記
    対に格納されている分岐先アドレスを出力し前記差が負
    になる場合は何も出力しない第一の記憶内容選択手段
    と、前記記憶手段中の分岐先アドレスと分岐命令のアド
    レスおよび一定値を減じた分岐命令のアドレスの組との
    複数の対の中から格納されている一定値を減じた分岐命
    令のアドレスが命令読出しアドレスの一部もしくは全部
    に一致する対を選び出す第二の検索手段と、前記第一の
    記憶内容選択手段が何も出力しない時に前記第二の検索
    手段によって選び出された対の中から格納されている一
    定値を減じた分岐命令のアドレスから命令読出しアドレ
    スを減じた差が負でその絶対値が最も小さくなる対を選
    択して前記対に格納されている分岐先アドレスを出力す
    る第二の記憶内容選択手段とからなる分岐履歴テーブル
    を備え、命令読出しアドレスにより前記分岐履歴テーブ
    ルを参照し、前記命令読出しアドレスにより先頭が特定
    される命令列中の最も前記命令読出しアドレスに近い位
    置にある分岐命令の分岐先アドレスを取り出して分岐予
    測を行うことを特徴とする命令読出し装置。
  7. 【請求項7】前記記憶手段が、分岐命令の分岐先アドレ
    スと前記分岐命令のアドレスの下位3ビットを削除した
    第1アドレスおよび前記した下位3ビットを削除したア
    ドレスからさらに1を減じた第2アドレスの組とを対に
    して格納した複数の対からなり、前記第一の検索手段
    が、前記記憶手段中に格納されている前記第1アドレス
    が命令読出しアドレスの下位3ビットを削除したアドレ
    スに一致する対を選び出し、前記第一の記憶内容選択手
    段が、前記第一の検索手段によって選び出された対の中
    から格納されている前記第1アドレスから命令読出しア
    ドレスの下位3ビットを削除したアドレスを減じた差が
    零かもしくは正になる場合にのみ前記差が最も小さくな
    る対を選択して前記対に格納されている分岐先アドレス
    を出力し、前記第二の検索手段が、前記記憶手段中に格
    納されている前記第2アドレスが命令読出しアドレスの
    下位3ビットを削除したアドレスに一致する対を選び出
    し、前記第二の記憶内容選択手段が、前記第一の記憶内
    容選択手段が何も出力しない時に前記第二の検索手段に
    よって選び出された対の中から格納されている前記第2
    アドレスから命令読出しアドレスの下位3ビットを削除
    したアドレスを減じた差が負でその絶対値が最も小さく
    なる対を選択して前記対に格納されている分岐先アドレ
    スを出力することにより、前記命令読出しアドレスによ
    り先頭が特定される8バイトの命令列中の最も前記命令
    読出しアドレスに近い位置にある分岐命令の分岐先アド
    レスを取り出して分岐予測を行うことを特徴とする請求
    項6記載の命令読出し装置。
  8. 【請求項8】請求項1または2または4記載のキャッシ
    ュ装置を備え、キャッシュ装置における記憶手段に格納
    されている命令列のアドレス境界にかかわらず前記命令
    読出しアドレスにより先頭が特定される一定の語数の命
    令列を取り出すとともに取り出された命令列中に分岐命
    令がいずれの位置にあってもまた複数の分岐命令が含ま
    れていても最初に実行されるべき分岐命令の分岐の予測
    を行うことを特徴とする請求項6記載の命令読出し装
    置。
  9. 【請求項9】請求項3または5記載のキャッシュ装置を
    備え、キャッシュ装置における記憶手段に格納されてい
    る命令列が8バイト境界で区切られているにもかかわら
    ず前記命令読出しアドレスにより先頭が特定される8バ
    イトの命令列を取り出すとともに取り出された8バイト
    の命令列中に分岐命令がいずれの位置にあってもまた複
    数の分岐命令が含まれていても最初に実行されるべき分
    岐命令の分岐の予測を行うことを特徴とする請求項7記
    載の命令読出し装置。
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 キャッシュ装置と命令読出し装置
DE68928727T DE68928727T2 (de) 1988-12-05 1989-12-01 Cachespeicheranlage zum Versorgen eines Festworts eines Befehlscodes mit variabler Länge und Befehlsabrufanlage
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
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 JPH02153428A (ja) 1990-06-13
JPH0778735B2 true 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)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table
JPH04321130A (ja) * 1991-04-22 1992-11-11 Toshiba Corp 分岐予測装置
WO1993017386A1 (fr) * 1992-02-28 1993-09-02 Oki Electric Industry Co., Ltd. Antememoire
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
GB9521980D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Branch target buffer
GB9521955D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
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
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
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
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
GB2409061B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
GB2409067B (en) * 2003-12-09 2006-12-13 Advanced Risc Mach Ltd Endianess compensation within a SIMD data processing system
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
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
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
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
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
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
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
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 ファナック株式会社 分岐命令を高速に処理するためのインストラクションキャッシュを有するプログラマブルコントローラ

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3382350D1 (de) * 1982-11-17 1991-08-29 Nec Corp Anordnung zum vorabholen von befehlen mit vorhersage einer verzweigungszieladresse.
JPS5991551A (ja) * 1982-11-17 1984-05-26 Nec Corp 分岐先アドレス予測を行なう命令先取り装置
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
JPS6272042A (ja) * 1985-09-26 1987-04-02 Mitsubishi Electric Corp キヤツシユメモリ
DE3752100T2 (de) * 1986-01-07 1997-12-11 Nippon Electric Co Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung
JPS6356731A (ja) * 1986-08-27 1988-03-11 Mitsubishi Electric Corp デ−タ処理装置
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JPH0778735B2 (ja) キャッシュ装置と命令読出し装置
EP0823085B1 (en) Method and apparatus for improved branch prediction accuracy in a superscaler microprocessor
US4792897A (en) Address translation unit for translation of virtual address to real address using translation tables of multi-level hierarchical structure
KR100423276B1 (ko) 명령어인출방법및장치
KR100335672B1 (ko) 메모리페이지크로싱예측주석을사용하는실제주소지정데이타기억구조로부터의빠른데이타검색
JP2003509733A5 (ja)
JPH08194615A (ja) 情報処理装置
JPH0283735A (ja) 命令先取り装置
US6516386B1 (en) Method and apparatus for indexing a cache
JPH0668736B2 (ja) 2個のシステムクロックサイクルを利用する書込み動作をもったキャッシュメモリユニットを供与する装置及び方法
JP3497832B2 (ja) ロード・ストアキュー
EP0030463B1 (en) Buffer memory control system
US5295248A (en) Branch control circuit
US6678638B2 (en) Processor having execution result prediction function for instruction
EP0442474B1 (en) Apparatus and method for controlling cache memory
US6532534B1 (en) Information processing apparatus provided with branch history with plurality of designation ways
US7013366B2 (en) Parallel search technique for store operations
US7047400B2 (en) Single array banked branch target buffer
JP2886838B2 (ja) スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法
US6513053B1 (en) Data processing circuit and method for determining the first and subsequent occurences of a predetermined value in a sequence of data bits
KR960015231A (ko) 향상된 어드레스 지정 방법 및 시스템
JPH06301537A (ja) 命令フェッチ回路
JP2656765B2 (ja) データ処理装置
JPH01177145A (ja) 情報処理装置
JP2638777B2 (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