JPH10116191A - 圧縮命令用バッファを備えたプロセッサ - Google Patents

圧縮命令用バッファを備えたプロセッサ

Info

Publication number
JPH10116191A
JPH10116191A JP27066896A JP27066896A JPH10116191A JP H10116191 A JPH10116191 A JP H10116191A JP 27066896 A JP27066896 A JP 27066896A JP 27066896 A JP27066896 A JP 27066896A JP H10116191 A JPH10116191 A JP H10116191A
Authority
JP
Japan
Prior art keywords
instruction
cache
vliw
bank
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP27066896A
Other languages
English (en)
Inventor
Yoshitake Kurokawa
能毅 黒川
Kazuhiko Tanaka
和彦 田中
Keiji Kojima
啓二 小島
Kiyokazu Nishioka
清和 西岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP27066896A priority Critical patent/JPH10116191A/ja
Publication of JPH10116191A publication Critical patent/JPH10116191A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions

Landscapes

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

Abstract

(57)【要約】 【課題】命令圧縮により可変長化されたVLIW命令を固定
長に復元したVLIW命令を連続してプロセッサに供給す
る。 【解決手段】4命令づつ命令圧縮された(NOP命令を取
り除いた)VLIW命令列を交互に読み込む命令バッファの
バンク0とバンク1を設ける。そして、このバンク0と
バンク1の任意の位置から命令圧縮されたVLIW命令を取
り出し、これに必要に応じてNOP命令を付加し4命令か
らなるVLIW命令を順次復元する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、電子計算機におに
用いられるプロセッサの命令用キャッシュメモリに関
し、特に、Very Long Instruction Wordプロセッサの命
令キャッシュメモリに関するものである。
【0002】
【従来の技術】現在では、パーソナルコンピュータや、
ワークステーションなどの各種情報処理装置に搭載され
るプロセッサは高速化(動作周波数が数十MHz〜数百
MHz)している。また、プロセッサの取り扱うことの
できる主記憶の記憶容量も大規模化している。そして、
このようなプロセッサの高性能化に伴い、パーソナルコ
ンピュータや、ワークステーションにおいて動画像処
理、3次元画像処理など多彩な処理を行うことが可能と
なってきている。
【0003】さて、プロセッサにおけるメモリアーキテ
クチャの一つとして、キャッシュメモリと呼ばれる技術
が知られている。この技術では、主記憶とプロセッサと
の間に主記憶に比べ高速にアクセス可能なメモリ(キャ
ッシュメモリ)を設けることにより、主記憶を比較的低
価格な低速なメモリ素子で構成した場合のプロセッサの
処理の低速化を緩和するものである。このようなキャッ
シュメモリを備えたプロセッサは、主記憶から読み込ん
だ領域のデータをキャッシュメモリにも保存し、その領
域のデータを再びプロセッサが必要とした場合には、主
記憶からではなくキャッシュメモリに対してアクセスを
行なってデータを読み込む。したがって、必要とするデ
ータがキャッシュメモリに保存されていれば、プロセッ
サは、低速な主記憶にアクセスする必要がないため、高
速に目的とするデータを読み込むことができ、処理を高
速に行うことができる。
【0004】ここで、このプロセッサが読み込みたい領
域がキャッシュ内に存在する事をキャッシュのヒット、
逆に読み込みたい領域がキャッシュ内に存在しない事を
キャッシュのミスヒットという。キャッシュがミスヒッ
トを起こした場合、主記憶から、必要とする領域のデー
タを読み出してキャッシュ内の空いている領域に読み込
むか、または、空きがない場合は必要とする領域のデー
タを読み出してキャッシュ上の一部領域のデータと交換
する。
【0005】また、プロセッサが使用する命令列のみを
読み込むために設けられるキャッシュメモリを命令キャ
ッシュと、データのアクセスのみに用いるキャッシュメ
モリをデータキャッシュと呼ぶ。近年の高性能なプロセ
ッサには、この命令キャッシュとデータキャッシュの双
方が設けられていることが多い。なお、命令キャッシュ
はプロセッサが命令列のみを読み込むためのキャッシュ
メモリであるため、プロセッサから見て、読み出し専用
に用いられる。
【0006】一方、プロセッサの命令処理を高性能化す
るアーキテクチャとしては、スーパースカラープロセッ
サ、Very Long Instruction Word(以下、「VLIW」
と記す)プロセッサと呼ばれる、複数の数値演算装置
(以下ALUと略する)によって並列に命令を実行する
アーキテクチャが知られている。
【0007】スーパースカラープロセッサでは、複数の
命令を同時に読み込み、命令間の関係を解釈し、複数あ
るALUに対して各命令の処理の割り当てを行なう。こ
の際、並列に処理が可能な命令は次々と複数あるALU
に割り当てる。したがい、最大ではALU数と等しい数
の命令を同時処理することができる。しかし、スーパー
スカラープロセッサでは、命令間の関係をハードウェア
によって解析を行なう必要があるため、ハードウェアが
複雑で大きくなると言われている。
【0008】一方、VLIWプロセッサでは、あらかじ
め、最大ALU数と同数の同時に処理が可能な命令を各命
令を実行するALUの指定と共に含めた、固定長のVL
IW命令の列にプログラムをコンパイルする。プロセッ
サは、あらかじめコンパイルされたVLIW命令を読み
込み、VLIW命令中の各命令を指定されたALUに割
り当て実行する。
【0009】ここで、命令の並列度(同時に実行できる
命令がが存在する度合い)が小さいプログラムをコンパ
イルする際には、一つのVLIW命令に含めることのできる
(同時に実行させる)命令の数が、VLIW命令の命令長よ
り定まる一つのVLIW命令に含めることのできる最大命令
数より少なくなることがある。そこで、このような場合
には、同時に実行させる命令の他に、VLIW命令に、当該
VLIW命令で処理を実行させることを意図しないALUに
「何も処理しない」ことを指定する命令(No Opration
命令;NOP命令)をVLIW命令に含めようにしている。
したがって、VLIW命令に含まれるNOP命令の数は、VLIW
命令の命令長より定まる一つのVLIW命令に含めることの
できる最大命令数とVLIW命令に含めることのできる命令
数との差の数となる。
【0010】そして、命令並列度が低い場合はコンパイ
ル後のプログラム中のNOP命令の数が増加し、プログ
ラムのコードサイズが膨大なものになる。
【0011】そこで従来、このようなNOP命令の数の
増加によるプログラムのコードサイズの膨大化の対策の
ために、命令圧縮の技術が用いられてきた。この技術で
は、コンパイルの際に、プログラム中の、NOP命令を
削除し、その代わりに各命令に、その命令が当該命令が
属するVLIW命令中の最後の命令であるか異なかを表す属
性ビットを与える。そして、主記憶に記憶されたコンパ
イル後のプログラムを読み出して、プロセッサにこの命
令を与える際に、この属性ビットに応じてNOP命令を
命令中に挿入してVLIW命令を作成する。たとえば、
VLIW命令の命令長より定まる一つのVLIW命令に含めるこ
とのできる最大命令数が4であるとすると、主記憶より
読み出したVLIW命令中3番目の命令の属性ビットが、こ
の命令が最後の命令であることを示している場合には、
この命令の後に一つのNOP命令を挿入して、4命令より
なるVLIW命令を生成し、主記憶上次に記憶されている命
令をVLIW命令中1番目の命令とする。同様に、主記憶よ
り読み出したVLIW命令中2番目の命令の属性ビットが、
この命令が最後の命令であることを示している場合に
は、この命令の後に一つのNOP命令を挿入して、4命令
よりなるVLIW命令を生成し、主記憶上次に記憶されてい
る命令をVLIW命令中1番目の命令とする。このような命
令圧縮の技術によれば、仮にVLIW命令の命令長より定ま
る一つのVLIW命令に含めることのできる最大命令数が4
であり、1個のALUが実行する命令が32ビットで与
えられるとすると、1個のVLIW命令に1個のALUに処理
を実行させる命令と3個のNOP命令がある場合に、プ
ロセッサにNOP命令を与えるためのコードの増加は、圧
縮しない命令の場合300%増加に対して3%の増加(32ビ
ット命令が33ビットに増加)に抑えられる。
【0012】
【発明が解決しようとする課題】さて、前述した属性ビ
ットを与える技術により命令圧縮を行なうと、主記憶中
に記憶されるコンパイル後のプログラムにおいてVLIW命
令は、長さが違う可変長命令となる。したがって、主記
憶からVLIW命令を読み出し、NOP命令の挿入などをおこ
なってプロセッサに与える固定長のVLIW命令を復元する
ためには、主記憶からの読み出しを、VLIW命令に含まれ
る命令毎に順次行い、属性ビットが最後の命令であるこ
とを示している命令を読み出した時点でNOP命令の挿入
などを行ってプロセッサに与える固定長のVLIW命令を復
元する方法と、複数の命令を同時に主記憶から読み出
し、次に復元すべきVLIW命令中の最後の命令であること
を示している属性ビットを持つ命令までの部分について
NOP命令の挿入などを行ってプロセッサに与える固定長
のVLIW命令を復元する方法とが考えられる。
【0013】しかし、前者の方法では、1VLIW命令につ
き、主記憶からの読み出しをVLIW命令に含まれる非NOP
命令の数と等しい回数行わなければならないため、プロ
セッサに固定長のVLIWを高速に与えることが難しい。
【0014】一方、後者の方法によれば、複数の命令を
同時に読み出すため、主記憶からの読み出し回数は低減
するが、主記憶上のプログラム中におけるVLIW命令が可
変長であるため、どうしても、一つのVLIW命令に含まれ
る命令の全てを一度に読み出せない場合がある。たとえ
ば、プロセッサに与える固定長のVLIW命令が4つの命令
で構成され、主記憶からの命令を4命令づつ同時に行う
場合を考えると、始めのVLIW命令が3つの命令からなり
次のVLIW命令が2つの命令からなる場合、2番目のVLIW
命令の全てを一度のに主記憶より読み出すことはできな
い、この2つの命令が4命令毎の読み出しの区切りにま
たがって存在するからである。したがって、この場合、
始めの読み出しで、始めのVLIW命令を構成する3命令を
読み出して始めのVLIIWを復元した後に、主記憶の読み
出しを2回行って2番目のVLIW命令を復元しなければな
らない。このため、プロセッサに連続してVLIW命令を供
給することができず、プロセッサの処理効率を低減させ
ることになる。
【0015】ここで、主記憶から同時に読み出す命令数
を増加すれば、このように一つのVLIW命令を構成する複
数の命令が4命令毎の読み出しの区切りにまたがって存
在する確率は低くなるが、この確率をゼロとすることは
できない。また、主記憶から同時に読み出す命令数を、
あまり増加することは、これを実現するためのハードウ
ェアウエアの規模の観点からも望ましいことではない。
【0016】そこで、本発明は、ハードウェアウエアの
規模ゐあまり増加することなく、命令圧縮により可変長
化されたVLIW命令を固定長に復元したVLIW命令を連続し
てプロセッサに供給することを目的とする。
【0017】
【課題を解決するための手段】前記目的達成のために、
本発明は、記憶装置に格納された、圧縮されたVLIW(Ver
y Long Instruction Word)命令である圧縮VLIW命令を読
み出し、順次、圧縮VLIW命令を復元したVLIW命令を供給
する命令供給装置であって、前記記憶装置から読み出さ
れる圧縮VLIW命令を交互に格納する、少なくとも圧縮VL
IW命令の最大長分のデータ長を持つ2つの命令バッファ
と、前記2つの命令バッファ中から、一定周期毎に、前
記記憶装置に格納されていた順番に従って、順次、一つ
づつ圧縮VLIW命令を取り出してVLIW命令を復元し供給す
る供給手段と、前記供給手段が復元する圧縮VLIW命令
が、当該圧縮VLIW命令の復元に先だって前記2つの命令
バッファ中に含まれるように、前記記憶装置からの圧縮
VLIW命令の読み出し及び前記2つの命令バッファへの格
納を制御する手段を備えたことを特徴とする命令供給装
置を提供する。
【0018】このように本発明では、記憶装置から読み
出した圧縮VLIW命令を交互に格納する、少なくとも圧縮
VLIW命令の最大長分のデータ長を持つ命令バッファを2
つ設けている。したがって、圧縮VLIW命令が、記憶装置
からの2回の読み出しにまたがっているような場合も含
め、この圧縮VLIW命令を一定周期毎の復元に先立ち、2
つの命令バッファ中に含めることができる。したがっ
て、この2つの命令バッファから圧縮VLIW命令を読み出
して復元するように構成した本発明によれば、途切れる
ことなくVLIW命令の復元および供給を行うことができ
る。
【0019】
【発明の実施の形態】以下、本発明に係るデータ処理装
置の一実施形態について説明する。
【0020】まず、図1に本実施形態に係るデータ処理
装置の構成を示す。
【0021】図示するように、本実施形態に係るデータ
処理装置は、メインプロセッサユニット2105、メイ
ンプロセッサチップ2105のサブプロセッサチップと
して機能するプロセッサユニット2001の2つのプロ
セッサユニットを備えている。図中2103はバスブリ
ッジであり、メインプロセッサユニット2105用の主
記憶2106を接続したメインバスとプロセッサユニッ
ト2001を接続したシステムバス2102の一方を選択的
にメインプロセッサユニット2105に接続する。ま
た、図中101はプロセッサユニット2001用の主記憶
である。主記憶101とプロセッサユニット109は、サブプ
ロセッサボード2101上に搭載されており、このサブ
プロセッサボード2101は、メインプロセッサユニッ
ト2105バスブリッジ2103、メインプロセッサ用
主記憶2106を備えたデータ処理装置に脱着可能に装
着され使用される。ここで、プロセッサユニット200
1は、VLIWプロセッサを収容したプロセッサユニットで
ある。
【0022】さて、このような構成において、メインプ
ロセッサユニット2105は、バスブリッジ2103を
介してメインプロセッサ用主記憶2106に記憶されて
いるコントロールプログラムを読み出して実行し、バス
ブリッジ2103を介してプロセッサユニット2001
に処理の実行要求を送る。プロセッサユニット2105
より処理の実行要求を受けたプロセッサユニット200
1は、実行を要求された処理を行うためのプログラムを
主記憶101から読み出して実行し、必要に応じて、その
結果をメインプロセッサユニット2105に送る。
【0023】次に、プロセッサユニット2001の内部
構成を図2に示す。
【0024】図示するように、プロセッサユニット20
01は、命令を解釈する命令デコーダや、命令で指定さ
れた処理を同時に実行することのできる複数のALUなど
含んだプロセッサ部2005を備えている。また、プロ
セッサユニット2001は、主記憶101のアクセスを制
御するメモリコントローラ2003や、外部と主記憶10
1との間のメモリコントローラ2003を介したデータ
転送を制御する入出力コントローラ2007や、命令キ
ャッシュを備えた命令供給ユニット2004や、データ
キャッシュを備えたデータ供給ユニット2006を備え
ている。
【0025】ここで、主記憶101上には、先に、従来の
技術の項で説明したように、NOP命令を削除し、各命令
にVLIW命令中の最終命令であるか否かを識別するための
属性ビットを与えることにより命令圧縮した可変長のVL
IW命令の列からなるプログラムが格納されている。以下
では、説明の混乱を避けるために、この命令圧縮された
VLIW命令を「圧縮VLIW命令」と呼び、前述したNOP
命令の挿入などにより固定長に復元されたVLIW命令を、
単に「VLIW命令」と呼ぶこととする。また、VLIW命令に
含まれるALUに割り当てられる命令(NOP命令を含む)
は、単に「命令」と呼ぶこととする。
【0026】さて、このような構成において、命令供給
ユニット2004は、次にプロセッサ部2005に与え
るVLIW命令を復元するために、次に読み出すべきデータ
が記憶されている主記憶101のアドレスを受け取り、こ
のアドレスのデータが命令キャッシュ中に存在する場合
には、命令キャッシュよりこのデータを読み出し、この
データを用いて次にプロセッサ部2005に実行させる
べき固定長のVLIW命令を復元してプロセッサ部2005
に供給し、命令キャッシュ中に存在しない場合には、こ
のアドレスのデータをメモリコントローラ2003介し
て主記憶101から読み出し、命令キャッシュに格納する
と共に、このデータを用いて次にプロセッサ部2005
に実行させるべき固定長のVLIW命令を復元してプロセッ
サ部2005に供給する。VLIW命令を受け取ったプロセ
ッサ部は、受け取ったVLIW命令を命令デコーダで解
釈し、VLIW命令に含まれる各命令を各ALUに割り当て実
行させる。また、VLIW命令の実行に伴って主記憶の
データにアクセスする必要があるときは、データ供給ユ
ニット2006を介して目的とするデータにアクセスす
る。データ供給ユニット2006は、たとえば、プロセ
ッサ部よりデータの読み出しを要求された場合には、こ
のデータがデータキャッシュ上に存在するか否かを確認
し、存在する場合には、このキャッシュからデータをプ
ロセッサ部に供給する。また、データキャッシュ上に目
的とするデータが存在しなし場合には、このデータをメ
モリコントローラ2003介して主記憶101から読み出
し、データキャッシュに格納すると共に、プロセッサ部
2005に供給する。
【0027】次に、本実施形態の特徴的部分をなす、命
令供給ユニット2004の内部構成を図3に示す。
【0028】図中、101は主記憶、2005はプロセ
ッサ部を示している。
【0029】また、102は命令キャッシュ、103は
命令バッファ、104はキャッシュヒット判定ブロッ
ク、105はキャッシュコントロールブロック、106
は命令ルーティングブロック、108はキャッシュ読出
要求作成ブロック、107は処理対象としている命令の
主記憶上101の先頭アドレスを指定するプログラムカ
ウンタである。
【0030】さて、主記憶101上には圧縮VLIW命令よ
りなるプログラムが図4Aに示すように記憶されてい
る。図中の1行は主記憶101から同時に読み出すこと
ができる単位を示しており、図示するように主記憶10
1よりは4命令が同時に読み出される。また、この4命
令の読み出しに付随して各命令に対応する4属性ビット
が当該4命令と同時に読み出される。なお、図中におけ
る、命令X-Yは、その命令がX番目のVLIW命令のY番目の
命令であることを表している。また、属性ビットは、
値”1”の場合に対応する命令が、当該命令の属する圧
縮VLIW命令中の最終の命令であることを示してい
る。たとえば、図では、命令0-3、1-1、2-2、3-0、4-
3、5-1が、当該命令の属する圧縮VLIW命令中の最終
の命令であることが属性ビットによって示されている。
なお、このような圧縮VLIW命令は、これから説明す
る命令供給ユニット2004の処理により、属性ビットによ
って示される最終命令の後に不足命令数分のNOP命令が
挿入され、図4、Bに示すように各々固定長のVLIW命
令に復元されプロセッサ部2005に供給されることに
なる。
【0031】また、主記憶中の圧縮VLIW命令を構成する
各命令にはアドレスが与えられており、たとえば、図4
Aにおいて各命令には、命令0-0、0-1、0-2、0-3、1-0、
1-1、2-0、2-1、2-2、.....5-1の順に連続したアドレス
が与えられている。また、同じ行を構成する命令のアド
レスの下位3ビット目以上上位のビットは同じ値となっ
ている。そして、1行中の4命令と、これに対応する4
属性ビットは、当該4命令に共通しているアドレスの最
上位ビット〜下位3ビット目が主記憶のアクセスアドレ
スとして主記憶に与えられたときに同時にアクセスされ
る。
【0032】さて、このような主記憶中101中の圧縮
VLIW命令は、キャッシュコントロールブロック105に
よって、図4Aの行単位に読み出され命令キャッシュ102
に書き込まれる。命令キャッシュ102は、バンク0と
バンク1の2つのバンクに分かれており、バンク0には
アドレスの下位3ビット目が”0”の命令の行と対応す
る属性ビットが行毎に書き込まれ、バンク1にアドレス
の下位3ビット目が”1”の命令の行と対応する属性ビ
ットが行毎に書き込まれる。
【0033】図5に、命令キャッシュ102の各バンク
の構成を示す。
【0034】図示するように、命令キャッシュ102の
各バンクには、主記憶から読み出された命令列および属
性ビットが図4の行毎に主記憶上でのアドレス(アドレ
スタグ)と共に格納される。また、各行の書き込み時に
は、行が有効である事を示す有効ビットがセットされ
る。命令キャッシュ102の各バンクからは、読み出し
要求が与えられたときに、与えられたキャッシュ読み出
しアドレスと最上位ビット〜下位4ビット目が一致する
アドレスの4命令が同時に命令バッファの対応するバン
ク103に読み出される。
【0035】さて、以下では、まず、このような構成に
おいて、キャッシュメモリ102にプロセッサ部109
に供給すべき連続した可変長VLIWが存在している場合
(キャッシュヒット時)に、キャッシュメモリ102格
納された各可変長VLIW命令を、順次固定長のVLIW命令に
復元してプロセッサ部2005に供給する動作について
説明する。そして、その後に、キャッシュメモリにプロ
セッサ部109に復元して供給すべき可変長VLIWが存在
しなかった場合(キャッシュのミスヒット時)の動作に
ついて説明する。
【0036】まず、キャッシュメモリ102にプロセッ
サ部109に供給すべき連続した可変長VLIWが存在して
いる場合(キャッシュヒット時)の、命令供給ユニット
2004の動作の概要について、図6を用いて説明す
る。
【0037】さて、図3において、キャッシュヒット判
定ブロック104はキャッシュヒット信号808を1とする。
また、プログラムカウンタ107には、新たなプログラ
ムの実行時や分岐時に、リセット信号と、分岐要求と、
実行すべきプログラムの先頭の可変長VLIW命令の先頭の
命令のアドレス708が分岐先アドレスとしてプロセッサ
部2005より供給される。
【0038】分岐要求もしくはリセット信号を受け取っ
たプログラムカウンタ107は、受け取った分岐先アド
レスを次アドレスとし、次アドレスの下位3ビット目が
0のときは、この次アドレスの下位2ビットを0とし1
00を加算したアドレスを読み出し要求アドレスとして
出力し、下位3ビット目が1のときは次アドレスを読み
出し要求アドレスとして出力するする。例えば、図6の
リセット時の場合は、分岐先アドレスが0000であり
下位3ビット目が0であるので0100を出力する。
【0039】この読み出し要求アドレス716は、キャ
ッシュ読み出し要求作成ブロックとキャッシュコントロ
ールブロック105に供給される。
【0040】分岐要求もしくはリセットの次のタイミン
グ0では、キャッシュ読み出し要求作成ブロックとキャ
ッシュコントロールブロック105は、次命令キャッシ
ュのバンク0、1の両方から、分岐要求もしくはリセッ
ト時に生成された読み出し要求アドレスの下位4ビット
目以上のアドレスに対応するアドレスタグの命令の行
を、命令バッファのバンク0、1の両方に読み出す。
【0041】また、タイミング0では、前回の次アドレ
スを現アドレスとし、現アドレスが先頭を示す命令バッ
ファ中の圧縮VLIW命令を、命令ルーティングブロック1
06で復元する。命令バッファのバンク0、1に格納さ
れた属性ビットを参照し、現アドレスが先頭を示す命令
の次の命令の先頭を次アドレスとして生成する。そし
て、この次アドレスの下位2ビットを00とし100を
加算したアドレスを読み出し要求アドレスとする。図6
のタイミング0の場合は、圧縮VLIW命令1の先頭010
0を次アドレスとし、読み出し要求アドレスを1000
とする。
【0042】次のタイミング1では、前のタイミング0
で生成された現アドレスが先頭を示す命令バッファ中の
圧縮VLIW命令を、命令ルーティングブロック106で復
元したVLIW命令がプロセッサ部2005に取り込まれ
る。また、前のタイミング0で生成された次アドレスを
現アドレスとし、命令バッファのバンク0、1に格納さ
れた属性ビットを参照し、現アドレスが先頭を示す圧縮
VLIW命令の次の圧縮VLIW命令の先頭を次アドレスとして
生成する。そして、この次アドレスの下位2ビットを0
とし100を加算したアドレスを読み出し要求アドレス
とする。図6のタイミング1の場合は、現アドレス00
00の圧縮VLIW命令0を復元すると共に、圧縮VLIW命令
2の先頭0110を次アドレスとし、読み出し要求アド
レスを1000とする。
【0043】また、タイミング1で、キャッシュ読み出
し要求作成ブロックとキャッシュコントロールブロック
105は、タイミング0で生成された読み出し要求アド
レスが、その前のタイミングで生成された読み出し要求
アドレスが示す命令キャッシュのバンクと同じバンクを
示しているときは、読み出しを行わず、異なるバンクを
示している場合にのみ、読み出し要求アドレスに対応す
るバンクから、読み出し要求アドレスに対応するアドレ
スタグの命令の行を命令バッファのバンクに読み出す。
この場合は、分岐要求もしくはリセット時の読み出し要
求アドレス0100とタイミング0で生成された読み出
し要求アドレス1000の下位3ビット目は異なり違う
バンクを示しているっているので、読み出し要求アドレ
ス1000に対応するバンク0の、読み出し要求アドレ
ス1000に対応するアドレスタグの命令の行を命令バ
ッファのバンク0に読み出す。
【0044】次のタイミング2以降は、タイミング1と
同様に動作し、直前のタイミングで生成された次アドレ
スを現アドレスとすると共に、現アドレスが先頭を示す
命令バッファ中の圧縮VLIW命令を、命令ルーティングブ
ロック106で復元する。また、直前のタイミングで生
成された現アドレスの圧縮VLIW命令を復元したVLIW命令
がプロセッサ部2005に取り込まれる。また、命令バ
ッファのバンク0、1に格納された属性ビットを参照
し、現アドレスが先頭を示す命令の次の命令の先頭を次
アドレスとして生成する。
【0045】一方、キャッシュ読み出し要求作成ブロッ
クとキャッシュコントロールブロック105は、直前の
タイミングで生成された読み出し要求アドレスが、その
前のタイミングで生成された読み出し要求アドレスが示
す命令バッファのバンクと同じバンクを示しているとき
は、読み出しを行わず、異なるバンクを示している場合
にのみ、読み出し要求アドレスに対応するバンクから、
読み出し要求アドレスに対応するアドレスタグの命令の
行を命令バッファのバンクに読み出す。
【0046】図6のタイミング2の場合は、タイミング
1で生成された読み出し要求アドレス1000に対応す
る命令キャッシュのバンク0は、前のタイミング0で生
成された読み出し要求アドレス1000の示すバンク0
と同じなので、命令キャッシュよりの読み出しは行われ
ない。
【0047】以下、タイミング3以降、同様に動作す
る。
【0048】結果、図6に示すように、分岐要求もしく
はリセット時には、次のタイミングで命令キャッシュの
2つのバンクから命令バッファの2つのバンクに2つの
命令の行が読み込まれ、タイミング0以降は、現アドレ
スが先頭を示す圧縮VLIW命令が必ず、命令バッファの2
つのバンク中に存在することになる。したがって、タイ
ミング0以降は、必ず1タイミングに1圧縮VLIW命令を
復元することができる。
【0049】すなわち、タイミング0以降は、たとえ
ば、図7に示すように、命令バッファへの書き込みステ
ージF0、圧縮VLIW命令のVLIW命令への復元およびプロセ
ッサ部への取り込みステージF1、命令のデコードステー
ジF2、命令の実行ステージF3、実行結果の書き込みス
テージFのステージからなるパイプラインを、ステージF
1で処理する圧縮VLIW命令が命令バッファにそろうのを
待つための空きステージを生じることなく実行すること
ができる。
【0050】以下、このような動作を実現する各部の詳
細について説明する。
【0051】まず、プログラムカウンタ107の構成に
ついて説明する。
【0052】図8に、プログラムカウンタ107の構成
を示す。
【0053】図中、804から806は、現アドレス8
16に各々数1、2、3、4を加算する加算器、802
は、現アドレス816と命令バッファのバンク0、1か
ら送られる属性ビット801に応じて、次アドレスを生
成するために現アドレスに加算する数1、2、3、4
(現アドレスから現アドレス以降の最初の圧縮VLIW命令
の先頭までの命令数)を決定するデコーダー、817
は、現アドレス816と加算器803〜806の出力と
プロセッサ部2005から与えれられる分岐先アドレス
808の内の一つを次アドレス814として選択するセ
レクタ、815は次アドレス814を1タイミング保持
し、1タイミング前の次アドレスを現タイミングの現ア
ドレス816として出力するフリップフロップ、810
は次アドレス814の下位2ビットを00とした次アド
レスに100を加算するキャッシュアドレス生成器、8
18は次アドレス814とキャッシュアドレス生成回路
810の出力の一方を読み出し要求アドレス813とし
て選択するセレクタ、810はデコーダである。
【0054】このような構成において、キャッシュヒッ
ト信号808がキャッシュヒットを表しているとき(1
のとき)、プログラムカウンタセレクタ817は次のよ
うに動作する。
【0055】すなわち、プロセッサ部2005からリセ
ット信号811と共に分岐要求809と分岐先アドレス
807が与えられると、この分岐先アドレス807を次
アドレスとして選択する。一方、リセット信号811と
分岐要求809を与えられたデコーダ812は、分岐先
アドレスの下位3ビット目が0のときはキャッシュアド
レス生成器810の出力を読み出し要求アドレス813
として出力し、下位3ビット目が1のときは次アドレス
を読み出し要求アドレス813として出力するようセレ
クタ818を制御する。これで、図7のリセット時の読
み出し要求アドレスが出力されることになる。
【0056】一方、分岐要求809やリセット信号81
1がプロセッサ部2005から与えられていないときに
は、デコーダ802の出力に応じて、加算器803〜8
06の出力のいづれかを選択する。そして、オア回路8
12はセレクタ818に、キャッシュアドレス生成器8
10の出力を選択させる。これで、図7のタイミング0
以降の読み出し要求アドレス813が生成される。
【0057】さて、キャッシュヒット信号808がキャ
ッシュアンヒットを表しているときは、セレクタは現ア
ドレス816をそのまま次のアドレスとして選択し続け
る。その他の動作は、キャッシュヒット信号808がキ
ャッシュヒット信号を表しているときと同じである。
【0058】ここで、図9に、キャッシュアドレス生成
器810の構成を示す。
【0059】図示するように、キャッシュアドレス生成
器810は、次アドレスの下位3ビット目以上のビット
に1を加算する加算器901の出力の最下位ビットを下
位3ビットとし、その下位に00を付与する構成により
実現される。
【0060】次に、図3のキャッシュ読み出し要求作成
ブロック108について説明する。
【0061】図10に、キャッシュ読み出し要求作成ブ
ロック108の構成を示す。
【0062】このような構成において、分岐要求809
もしくはリセット信号811がプロセッサ部2005よ
り与えられると、両者の論理積を求めるオア回路101
2の出力信号が1となりフリップフロップ1001に格
納される。アンド回路1003は、フリップフロップ1
001の出力と次のタイミングで与えられる分岐要求8
09とリセット信号811の論理和の反転値との論理積
を出力する。この論理積は、分岐要求809が分岐要求
を表す0値のタイミングもしくはリセット信号811が
リセットを表す0値のタイミングでのみ1となる。この
論理積はオア回路1009、1110に与えられる。結
果、オア回路1009、1010の出力は、分岐要求8
09もしくはリセット信号811がプロセッサ部200
5より与えられたタイミング(図6のリセットのタイミ
ング)で1となる。このオア回路1009の出力はバン
ク0読み出し要求信号1020となり、オア回路101
0の出力はバンク1読み出し要求信号1021としてキャッ
シュコントロールブロック105に与えられる。
【0063】一方、分岐要求を表す分岐要求809もし
くはリセットを表すリセット信号811がプロセッサ部
2005より与えられた次のタイミング以外のタイミン
グでは(図6のタイミング0以降)、プログラムカウン
タ107より供給される読み出し要求アドレス813の
下位3ビット目に応じて、バンク0読み出し要求信号1
020、バンク1読み出し要求信号1021は変化す
る。
【0064】すなわち、直前のタイミングの読み出し要
求アドレスの下位3ビット目が0で今回のタイミングの
読み出し要求アドレスの下位3ビット目が1のときバン
ク1読み出し要求信号1021は1、バンク0読み出し要求
信号は0となり、直前のタイミングの読み出し要求アド
レスの下位3ビット目が1で今回のタイミングの読み出
し要求アドレスの下位3ビット目が0のときバンク0読
み出し要求信号1020は1となり、バンク1読み出し要求
信号1021は0となる。
【0065】これは、読み出し要求アドレスの下位3ビ
ット目をフリップフロップ1005に1タイミング保持
し、アンド回路1007で求めたフリップフロップ10
05の出力と読み出し要求アドレスの下位3ビット目の
反転値との論理積をオア回路1009に与え、アンド回
路1008で求めたフリップフロップ1005の出力の
反転値と読み出し要求アドレスの下位3ビット目との論
理積をオア回路1010に与える構成とすることにより
実現される。
【0066】結果、分岐要求もしくはリセットのタイミ
ングではバンク0読み出し要求信号1020、バンク1
読み出要求し信号1021は共に1となり、それ以外の
タイミングでは、直前のタイミングで生成された読み出
し要求アドレスが、その前のタイミングで生成された読
み出し要求アドレスが示す命令バッファのバンクと同じ
バンクを示しているときはバンク0読み出し要求信号1
020、バンク1読み出し信要求号1021は共に0と
なり、異なるバンクを示している場合にのみ、そのバン
クに対応するバンク読み出し要求信号のみが1となる。
【0067】次に、図11にキャッシュコントロールブ
ロック105の構成を示す。
【0068】図中、11101はキャッシュバンク0再
読み出しブロック、1102はキャッシュバンク1再読
み出しブロック、1107はキャッシュ制御ブロック、
1103〜1106はセレクタ、1107、1108は
フリップフロップである。
【0069】この様な構成において、キャッシュヒット
信号808が1のときすなわちキャッシュヒット時には、
キャッシュ制御ブロックは、主記憶読み出し信号113
2、命令キャッシュバンク0書き込み信号1132、命
令キャッシュバンク1書き込み信号1131を0とす
る。また、セレクタ1103、1104には、プログラ
ムカウンタ107から入力する読み出し要求アドレス
を、命令キャッシュバンク0アドレス1120、令キャ
ッシュバンク0アドレス1121として選択させて命令
キャッシュのバンク0、バンク1に出力させ、セレクタ
1104、1106には、キャッシュ読み出し要求作成
ブロックから入力するバンク0読み出し要求信号102
0、バンク1読み出し要求信号1021を、命令キャッ
シュバンク0読み出し信号1122、命令キャッシュバ
ンク1読み出し信号1123として選択させて命令キャ
ッシュのバンク0、バンク1に出力させる。また、アン
ド回路1140、1141に与えるマスク信号1142
を0とする。フリップフロップ1107、1108で、
命令キャッシュバンク0読み出し信号1122、命令キ
ャッシュバンク1読み出し信号1123を1タイミング
遅らせた信号は各々、アンド回路1141、1142を
介して命令バッファバンク0書き込み信号1124、命
令バッファバンク1書き込み信号1125として、命令
バッファのバンク0、バンク1に出力される。
【0070】結果、図5に示した命キャッシュのバンク
には、このバンクをバンク0とすると、キャッシュヒッ
ト信号808が1のときすなわちキャッシュヒット時に
は、プログラムカウンタ107が生成した読み出し要求
アドレスが命令キャッシュバンク0アドレス1120と
して、キャッシュ読み出し要求作成ブロック108の出
力するバンク0読み出し要求信号102が読み出しを要
求している場合(1のとき)には値1の命令キャッシュ
バンク0読み出し信号1122と共に与えられる。命令
キャッシュ102のバンク0は、値1の命令キャッシュ
バンク0読み出し信号1122が与えられた場合には、
与えられた命令キャッシュバンク0アドレス1120に
対応するアドレスタグの命令の行を、属性と共に、対応
する命令バッファのバンク(ここでは、バンク0)にバ
ンク0読み出しデータ5000として出力する。
【0071】命令キャッシュのバンク1も同様に動作す
る。
【0072】さて、このようにして命令キャッシュのバ
ンクから、値1の命令キャッシュバンク0/1読み出し
信号1122、1223によって、読み出されたバンク
0/1読み出しデータは、この値1の命令キャッシュバ
ンク0/1読み出し信号1122を1タイミング遅らせ
た命令バッファバンク0/1書き込み信号1125、1
126によって、対応する命令バッファ103のバンク0/
1に格納される。
【0073】図12に、この命令バッファ103のバンク
0/1の構成を示す。図12に示す命令バッファのバン
クがバンク0だとすると、図中のセレクタ1201は、
命令バッファバンク0書き込み信号1125が書き込み
を示しているとき(値1のとき)に対応する命令キャッ
シュ102のバンク0からのバンク0読み出しデータ5
00を選択し、フリップフロップ1202に格納する。
これ以外のときは、セレクタ1201はフリップフロッ
プ1202の出力を選択し、これをフリップフロップ1
202に書き込むことによって、フリップフロップ12
02の内容を維持する。
【0074】以上の、プログラムカウンタ107、キャ
ッシュ読み第要求作成ブロック108、キャッシュコン
トロールブロック105、命令キャッシュ102のバン
ク0、1、命令バッファ103のバンク0、1の動作に
よって、図6に示した、命令キャッシュ102に目的と
する命令が存在している場合の、命令バッファ103の
バンク0、1への命令キャッシュ102のバンク0、1
よりの命令の行の格納が実現される。
【0075】次に、このようにして命令バッファ103
のバンク0、1に格納された命令の行に含まれる圧縮VL
IWをVLIWに復元する命令ルーティングブロック106に
ついて説明する。
【0076】図13に命令ルーティングブロック106
の構成を示す。
【0077】図示するように、命令ルーティングブロッ
ク106は、命令シフタ1361、属性シフタ136
2、命令セレクタ1363から構成されている。命令シ
フタ1301には、命令バッファ103のバンク0、1
に格納された8つの命令が入力する。図中、1320〜
1323がバンク0から入力する4命令を表しており、
より符号が小さいものが、その4命令中において、より
アドレスが小さい命令である。また、1324〜132
7がバンク1から入力する4命令を表しており、より符
号が小さいものが、その4命令中において、よりアドレ
スが小さい命令である。命令シフタ1601は、この入
力する1320〜1327の8命令のうちから、選択し
た4命令1330〜1333を出力する。
【0078】いま、命令シフタ1601に入力する13
20〜1327の8命令を、その符号の順に、命令0〜
命令7とし、命令シフタ1601の出力する1330〜
1333の4命令を、その符号の順に命令a〜dとする
と、命令シフタ1601は、プログラムカウンタ107
から入力する現アドレス816の下位3ビットに応じ
て、図14に示すように、入力する8命令(命令0〜
7)のうちから、4命令を命令a〜dとして選択する。
【0079】簡単には、この8命令に000〜111の
3ビットのアドレスを与え、現アドレス816の示すア
ドレスに対応する命令と、この命令に引き続く3命令を
アドレス順に命令a〜dとして選択する。ただし、アド
レスに対応する命令の後ろに3つの命令が存在せず、選
択すべき命令が足りないときは、アドレス000から足
りない分の命令を選択する。このようにして選択された
4命令は、現アドレスに先頭を持つ圧縮VLIW命令を含ん
でおり、この圧縮VLIW命令の先頭の命令は命令aとな
る。
【0080】次に、属性シフタ1362には、命令バッ
ファ103のバンク0に格納された属性ビット1310
とバンク1に格納された属性ビット1311の計8ビッ
トが入力する。前述したように、この8ビットの各々は
1命令に対応しており、値1のときに対応する命令が圧
縮VLIW命令中の最後の命令であることを表している。属
性シフタ1602は、この入力する8ビット1310〜
1311の8命令のうちから、選択した4ビット135
0を出力する。いま、属性シフタ1602に入力する8
ビットを、命令0に対応する属性ビットは属性0、命令
1に対応する属性ビットは属性1といったように示し、
属性シフタが出力する4ビットを属性a〜dで示すこと
とすると、属性シフタ1602は、図14に示すよう
に、プログラムカウンタ107から入力する現アドレス
816の下位3ビットに応じて、入力する8ビット(属
性0〜7)のうちから、4ビットを属性a〜dとして選
択する。
【0081】簡単には、命令シフタ1602で選択した
4命令に対応する4ビットを、命令シフタ1602で選
択した4命令の並びと同じ並びで出力するように、属性
シフタは動作する。すなわち、属性xは命令xの属性ビッ
トとなっている。
【0082】さて、命令セレクタ1603は、命令シフタ1
601の出力する4命令a〜d1330から1333
と、属性シフタ1502の出力する4ビットの属性a〜
d1350を入力し、命令0(1330)を先頭の命令
とする圧縮VLIW命令を、属性シフタ1502の出力する
4ビットの属性a〜d1350に応じて復元し、4命令
からなる復元したVLIW命令を出力する。
【0083】具体的には、復元したVLIW命令中の4命令
を、その並びの順に出力0〜3で表すと、命令セレクタ
1603は、図15に示すように、入力する属性a〜d
に応じて、命令a〜d中の対応する属性ビットが1であ
る命令より後のの命令を、別途命令セレクタ1603に
入力するNOP命令1334に置き換え、これを復元したV
LIW命令とする。
【0084】以上で、図6に示した、命令キャッシュ1
02に目的とする命令が存在している場合の動作が実現
されたことになる。
【0085】以下、命令キャッシュ102に目的とする
命令が存在しなかった場合の動作について説明する。
【0086】さて、図5に示した命令キャッシュ102
の各バンクは、アソシエーティブ方式を採用しており、
バンク0を例にとると、実際には、値1の命令キャッシ
ュバンク0読み出し信号1122が与えられたときに、
命令キャッシュバンク0アドレス1120の下位4ビッ
トから下位4+nビットに対応する位置に記憶されてい
る命令の行が属性ビットと共に、バンク0読み出しデー
タ5000として出力されるように構成されている。ま
た、バンクの各位置には、その位置に対応する下位4ビ
ット目から下位4+nビットを、アドレスの下位4ビッ
ト目から下位4+nビットとする命令の行が属性ビット
と共に格納されるようになっている。
【0087】したがって、実際には、命令キャッシュ1
02のバンク0から読み出されたバンク0読み出しデー
タ5000が、命令キャッシュバンク0アドレス112
0に対応するデータでない場合がある。また、命令キャ
ッシュバンク0アドレス1120に対応するデータであ
っても、主記憶101上では書き換えられた無効なもの
である場合がある。
【0088】そこで、図3のキャッシュ判定ブロック1
04は、命令キャッシュ102のバンク0から読み出さ
れたバンク0読み出しデータ5000が、命令キャッシ
ュバンク0アドレス1120に対応するデータであるか
否かの判定、すなわち、キャッシュヒットの判定を次の
ように行う。
【0089】図16に、キャッシュヒット判定ブロック
104の、命令キャッシュバンク0に対して設けられた
部位の構成を示す。令キャッシュバンク1に対しても同
様な部位が設けられている。
【0090】このような構成において、キャッシュヒッ
ト判定ブロックは、値1の命令キャッシュバンク0読み
出し信号1122が出力されると、これに対応する命令
キャッシュバンク0アドレス1120を図7のF0ステー
ジの途中のタイミングでフリップフロップ1601で保
持し、比較器1120で、この命令キャッシュバンク0
アドレス1120に対して命令キャッシュのバンクから
読み出されたアドレスタグ1610を比較する。そし
て、比較結果が一致しなかった場合もしくは命令キャッ
シュのバンクからフリップフロップ1601で保持した
命令キャッシュバンク0アドレス1120に対して命令
キャッシュのバンクから読み出された有効ビット1611が
無効(値0)を示しているときに出力値1850をミス
ヒットを表す0とする。これ以外の場合は、出力値をキ
ャッシュヒットを表す1とする。この出力値1650
は、所定のタイミングでフリップフロップ1670に格
納され、命令キャッシュ102のバンク1に対して設け
られた同様の部位でフリップフロップに格納された出力
値1651との論理和をとられキャッシュヒット信号8
08として出力される。
【0091】さて、このようなキャッシュヒット判定ブ
ロック104によるキャッシュヒットの判定結果の出力
は、所用処理時間の関係で、図17aに示すように、命
令バッファへの書き込みステージF0において命令バッフ
ァへの命令キャッシュ102のバンクよりの書き込みが
終了した後、圧縮VLIW命令のVLIW命令への復元およびプ
ロセッサ部への取り込みステージF1の実行途中で行われ
る。
【0092】さて、本実施形態では、キャッシュミスヒ
ットがおきた場合には、図17bに示すように、全ての
パイプラインを停止し、ミスヒットを起こしたパイプラ
イン100について主記憶101からの目的とする命令
の行の命令キャッシュのバンクへの読み込み(170
1)を行ったのちに、再度命令バッファへの書き込みス
テージF0を行い、この後に、全体のパイプラインを動作
させるようにする。
【0093】いま、図17bのように、パイプライン1
700について、1502のタイミングでキャッシュヒ
ット判定ブロック104がキャッシュヒット信号808
をミスヒットを表す0に変化させたものとする。
【0094】このミスヒットを表すキャッシュヒット信
号808は、プロセッサ部2005に送られ、プロセッ
サ部2005では、これよりパイプライン1700のF1
ステージにおける復元されたVLIW命令の取り込みを中止
し、また、パイプライン1700に先行する各パイプラ
イン1750の処理を停止する。
【0095】一方、プログラムカウンタ部107では、
先に図8を用いて説明したように、ミスヒットを表すキ
ャッシュヒット信号808が与えられると、ぞの時点で
生成していた現アドレス816を、そのまま次アドレス
814として生成し続ける。したがって、読み出し要求
アドレス813は、ミスヒットが生じたパイプライン1
700の次のパイプライン1710のステージF0で命令
バッファのバンクに格納する命令キャッシュのバンクの
アドレスを示し続ける。
【0096】一方、図11に示したキャッシュコントロ
ールブロック105では、ミスヒットを表すキャッシュ
ヒット信号808が与えられると次のように、図17b
に示したシーケンスを制御する。
【0097】ここで、まず、キャッシュコントロールブ
ロック105において、ミスヒット時に用いられるキャ
ッシュバンク0/1再読み出しブロック1101、11
02ついて説明しておく。図18に、キャッシュバンク
0再読み出しブロック1101の構成を示す。キャッシ
ュバンク1再読み出しブロック1102の構成も、これ
と同様である。
【0098】さて、キャッシュバンク0再読み出しブロ
ック1101のフリップフロップ1840と1812
は、プログラムカウンタ107から受け取った読み出し
要求アドレスを順次格納する。フリップフロップ181
4と1841はキャッシュ読み出し要求作成ブロック1
08が出力したバンク0読み出し要求信号1020を順次格
納する。セレクタ1813はフリップフロップ184
0、1812の出力の一方を選択し出力する、セレクタ
1816はフリップフロップ1814、1841の出力
の一方を選択し出力する。
【0099】さて、図17bにおいて、キャッシュミス
ヒットが生じた時点で、フリップフロップ1812には
パイプライン1700のステージF0で生成された読み出
し要求アドレスが格納されており、フリップフロップ1
840には、その次のパイプラインのステージF0で生成
された読み出し要求アドレスが格納されている。また、
キャッシュミスヒットが生じた時点で、フリップフロッ
プ1841にはパイプライン1700のステージF0で生
成されたバンク0読み出し要求信号が格納されており、
フリップフロップ1814には、その次のパイプライン
のステージF0で生成されたバンク0読み出し要求信号が
格納されている。
【0100】さて、図11において、キャッシュ制御ブ
ロック802は、キャッシュミスヒットが生じ、ミスヒ
ットを表すキャッシュヒット信号808が与えられる
と、まず、ホールド信号1803、1804を出力し、
キャッシュ再読み出しブロック1101、1101の各
フリップフロップの内容を凍結し、図17bの1701
の主記憶101よりの命令キャッシュ101への読み込
み処理を実行する。
【0101】図17bの1701の主記憶101よりの
命令キャッシュ101への読み込み処理では、主記憶読
み出し信号1132を主記憶101に出力し、図16に
示したキャッシュヒット判定ブロック104の各バンク
対応の部位の出力値1850、1851からどちらの命
令キャッシュ102のバンクでミスヒットが生じたかを
検出し、ミスヒットが生じたバンクに対応するキャッシ
ュ再読み出しブロック1101、1102のセレクタに
フリップフロップ1812に格納されているミスヒット
を生じた読み出し要求アドレスを選択出力させ、これを
図11のセレクタ1103または1104を介して命令
キャッシュのバンク0に出力させる。この際、ミスヒッ
トを生じた読み出し要求アドレスは主記憶101にも送
られる。この後、キャッシュ制御ブロック1107は、
命令キャッシュバンク0書き込み信号1132、命令キ
ャッシュバンク1書き込み信号1131のうちの、ミス
ヒットが生じた方の命令キャッシュのバンクに対応する
方を書き込みを指示する値1とする。いま、命令キャッ
シュのバンク0でミスヒットが生じたとすると、命令キ
ャッシュバンク0書き込み信号1132を1とする。結
果、ミスヒットを生じた読み出し要求アドレスのデータ
が、主記憶101から命令キャッシュのミスヒットを生
じた方のバンクに書き込まれることになる。なお、ミス
ヒットが生じると、キャッシュ制御ブロック1107
は、アンド回路1140、1141を制御し、命令バッ
ファ103の各バンクへの書き込み信号の出力を抑止す
る。
【0102】さて、このようにして、図17の1701
の処理が終了したら、キャッシュ制御ブロック1107
は、バキャッシュ再読み出しブロック1101、110
2のセレクタにフリップフロップ1812に格納されて
いる要求アドレスとフリップフロップ1841に格納さ
れているバンク読み出し要求信号を選択出力させ、これ
を図11のセレクタ1103〜1106を介して命令キ
ャッシュの対応するバンクに出力させる。これによっ
て、図17の1705のミスヒットが生じたパイプライ
ン1700のステージF0の再実行が行われる。
【0103】次に、キャッシュ制御ブロック1107
は、バキャッシュ再読み出しブロック1101、110
2のセレクタにフリップフロップ1840に格納されて
いる要求アドレスとフリップフロップ1814に格納さ
れているバンク読み出し要求信号を選択出力させ、これ
を図11のセレクタ1103〜1106を介して命令キ
ャッシュの対応するバンクに出力させる。これによっ
て、図17の1706のミスヒットが生じたパイプライ
ン1700の次のパイプライン1710のステージF0の再実
行が行われる。このパイプライン1710のステージF0の途
中で、パイプライン1700のステージF0の再実行によ
って、命令キャッシュ102のバンクから読み出された
データのキャッシュヒットが、キャッシュヒット判定ブ
ロック104で検出され、キャッシュヒット信号808
はキャッシュヒットを表す値に復帰する。これによっ
て、プログラムカウンタ107、プロセッサ部200
5、キャッシュコントロールブロック105は通常の動
作に戻り、パイプラインは、元の動作に復帰する。
【0104】以上、本発明の一実施形態について説明し
た。
【0105】
【発明の効果】以上のように、本発明によれば、ハード
ウェアウエアの規模ゐあまり増加することなく、命令圧
縮により可変長化されたVLIW命令を固定長に復元したVL
IW命令を連続してプロセッサに供給することができる。
【図面の簡単な説明】
【図1】データ処理装置の構成を示すブロック図であ
る。
【図2】プロセッサユニットの構成を示すブロック図で
ある。
【図3】命令供給ユニットの構成を示すブロック図であ
る。
【図4】主記憶上の圧縮VLIW命令と、これを復元したVL
IW命令を示した図である。
【図5】命令キャッシュの構成を示すブロック図であ
る。
【図6】命令供給ユニットの動作を示す図である。
【図7】プロセッサユニットのパイプラインを示す図で
ある。
【図8】プログラムカウンタブロックの構成を示すブロ
ック図である。
【図9】キャッシュアドレス生成回路の構成を示すブロ
ック図である。
【図10】キャッシュ読み出し要求作成風呂図の構成を
示すブロック図である。
【図11】命令キャッシュコントロールブロックの構成
を示すブロック図である。
【図12】命令バッファの構成を示すブロック図であ
る。
【図13】命令ルーティングブロックの構成を示すブロ
ック図である。
【図14】命令シフタ、属性シフタの動作を示す図であ
る。
【図15】命令セレクタのの動作を示す図である。
【図16】キャッシュヒット判定ブロックの構成を示す
ブロック図である。
【図17】キャッシュミスヒット時のパイプラインのう
ごきを示す図である。
【図18】キャッシュ再読み出しブロックの構成を示す
ブロック図である。
【符号の説明】
101 主記憶 2005 プロセッサ部 102 命令キャッシュ 103 命令バッファ 104 キャッシュヒット判定ブロック 105 キャッシュコントロールブロック 106 命令ルーティングブロック 108 キャッシュ読出要求作成ブロック 107 プログラムカウンタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 西岡 清和 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】記憶装置に格納された、圧縮されたVLIW(V
    ery Long Instruction Word)命令である圧縮VLIW命令を
    読み出し、順次、圧縮VLIW命令を復元したVLIW命令を供
    給する命令供給装置であって、 前記記憶装置から読み出された記憶装置中において連続
    して格納されている圧縮VLIW命令を交互に格納する、少
    なくとも圧縮VLIW命令の最大長分のデータ長を持つ2つ
    の命令バッファと、 前記2つの命令バッファ中から、一定周期毎に、前記記
    憶装置に格納されていた順番に従って、順次、一つづつ
    圧縮VLIW命令を取り出してVLIW命令を復元し供給する供
    給手段と、 前記供給手段が復元する圧縮VLIW命令が、当該圧縮VLIW
    命令の復元に先だって前記2つの命令バッファ中に含ま
    れるように、前記記憶装置から読み出された圧縮VLIW命
    令の前記2つの命令バッファへの格納を制御する格納制
    御手段を備えたことを特徴とする命令供給装置。
  2. 【請求項2】請求項1記載の命令供給装置であって、 前記格納制御手段は、前記供給手段の前記圧縮VLIW命令
    の復元と並行して、前記供給手段が既に復元を終了して
    いる前記圧縮VLIW命令のみを格納している命令バッファ
    への前記記憶装置から読み出した圧縮VLIW命令の格納が
    実行されるように、前記記憶装置から読み出した圧縮VL
    IW命令の前記2つの命令バッファへの格納を制御するこ
    とを特徴とする命令供給装置。
  3. 【請求項3】請求項1または2記載の命令供給装置であ
    って、 前記記憶装置と前記2つの命令バッファとの間に設けら
    れた、前記命令バッファのデータ長と同じデータ長を持
    つ2つの命令キャッシュを備え、 前記格納制御手段は、前記命令キャッシュから先に読み
    出した圧縮VLIW命令に前記記憶装置中において連続せず
    の格納されている圧縮VLIW命令を読み出す際に、前記2
    つの命令キャッシュより、前記命令バッファのデータ長
    の2倍のデータ長のデータを同時に読み出し、前記2つ
    の命令バッファへ同時に格納することを特徴とする命令
    供給装置。
  4. 【請求項4】請求項1、2または3記載の命令供給装置
    と、前記記憶装置と、前記目例供給装置から復元された
    VLIW命令の供給を受け、当該供給を受けたVLIW命令を実
    行するプロセッサ部とを有することを特徴とするプロセ
    ッサユニット。
JP27066896A 1996-10-14 1996-10-14 圧縮命令用バッファを備えたプロセッサ Pending JPH10116191A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP27066896A JPH10116191A (ja) 1996-10-14 1996-10-14 圧縮命令用バッファを備えたプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27066896A JPH10116191A (ja) 1996-10-14 1996-10-14 圧縮命令用バッファを備えたプロセッサ

Publications (1)

Publication Number Publication Date
JPH10116191A true JPH10116191A (ja) 1998-05-06

Family

ID=17489291

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27066896A Pending JPH10116191A (ja) 1996-10-14 1996-10-14 圧縮命令用バッファを備えたプロセッサ

Country Status (1)

Country Link
JP (1) JPH10116191A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003005958A (ja) * 2001-06-25 2003-01-10 Pacific Design Kk データ処理装置およびその制御方法
JP2008507028A (ja) * 2004-07-14 2008-03-06 シリコン オプティックス インコーポレイテッド キャッシュメモリーを管理するシステムと方法
WO2009107462A1 (ja) * 2008-02-26 2009-09-03 日本電気株式会社 低コストに複数命令流を実行するプロセッサ、その方法及びそのプログラム
US20110202747A1 (en) * 2010-02-17 2011-08-18 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003005958A (ja) * 2001-06-25 2003-01-10 Pacific Design Kk データ処理装置およびその制御方法
JP2008507028A (ja) * 2004-07-14 2008-03-06 シリコン オプティックス インコーポレイテッド キャッシュメモリーを管理するシステムと方法
WO2009107462A1 (ja) * 2008-02-26 2009-09-03 日本電気株式会社 低コストに複数命令流を実行するプロセッサ、その方法及びそのプログラム
JP5333433B2 (ja) * 2008-02-26 2013-11-06 日本電気株式会社 低コストに複数命令流を実行するプロセッサ、その方法及びそのプログラム
US8745359B2 (en) 2008-02-26 2014-06-03 Nec Corporation Processor for concurrently executing plural instruction streams
US20110202747A1 (en) * 2010-02-17 2011-08-18 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
US8495341B2 (en) * 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands

Similar Documents

Publication Publication Date Title
US7366881B2 (en) Method and apparatus for staggering execution of an instruction
US5872985A (en) Switching multi-context processor and method overcoming pipeline vacancies
US7424598B2 (en) Data processor
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
JP2625277B2 (ja) メモリアクセス装置
JP3598589B2 (ja) プロセッサ
US6341343B2 (en) Parallel processing instructions routed through plural differing capacity units of operand address generators coupled to multi-ported memory and ALUs
JPH0782438B2 (ja) コンピュータ・システム
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
JPS5991546A (ja) 中央処理装置
JPH08328958A (ja) 命令キャッシュ、キャッシュメモリ装置及びその方法
US9798543B2 (en) Fast mapping table register file allocation algorithm for SIMT processors
KR100682635B1 (ko) 동일한 논리 공간을 점유하는 다중 레지스터 파일을 포함하는 마이크로프로세서
JPH06236353A (ja) マルチプロセッサ・コンピュータ・システムのシステム・メモリの並行性を増大する方法およびシステム
EP1354267A2 (en) A superscalar processor having content addressable memory structures for determining dependencies
US5197145A (en) Buffer storage system using parallel buffer storage units and move-out buffer registers
US7143268B2 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
JPH10116191A (ja) 圧縮命令用バッファを備えたプロセッサ
US6119220A (en) Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions
US6185674B1 (en) Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor
EP0374598A2 (en) Control store addressing from multiple sources
JP3132566B2 (ja) 命令先行制御装置
JP3424430B2 (ja) プロセッサ
JPH08263289A (ja) 複数命令流パイプライン計算機
JPH10260832A (ja) 情報処理装置