JP3784766B2 - 多ポート統合キャッシュ - Google Patents

多ポート統合キャッシュ Download PDF

Info

Publication number
JP3784766B2
JP3784766B2 JP2002320037A JP2002320037A JP3784766B2 JP 3784766 B2 JP3784766 B2 JP 3784766B2 JP 2002320037 A JP2002320037 A JP 2002320037A JP 2002320037 A JP2002320037 A JP 2002320037A JP 3784766 B2 JP3784766 B2 JP 3784766B2
Authority
JP
Japan
Prior art keywords
instruction
cache
port
data
trace
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
JP2002320037A
Other languages
English (en)
Other versions
JP2004157593A (ja
Inventor
哲夫 弘中
マタウシュ・ハンス・ユルゲン
哲士 小出
泰 平川
光 上口
Original Assignee
株式会社半導体理工学研究センター
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 株式会社半導体理工学研究センター filed Critical 株式会社半導体理工学研究センター
Priority to JP2002320037A priority Critical patent/JP3784766B2/ja
Priority to US10/687,460 priority patent/US7360024B2/en
Publication of JP2004157593A publication Critical patent/JP2004157593A/ja
Application granted granted Critical
Publication of JP3784766B2 publication Critical patent/JP3784766B2/ja
Priority to US12/034,454 priority patent/US7694077B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks

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

【0001】
【発明の属する技術分野】
本発明は、プロセッサとプログラムや各種のデータや情報を記憶した主記憶との間に設けられたキャッシュに係わり、特に、命令キャッシュとデータキャッシュとを統合した多ポート命令・データ統合キャッシュ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュ、及び命令キャッシュとトレースキャッシュとデータキャッシュとを統合した多ポート命令・トレース・データ統合キャッシュに関する。
【0002】
【従来の技術】
一般に、図29(a)に示すように、プロセッサ1の処理速度を向上させるために、プロセッサ1と主記憶3との間にキャッシュ2を介在させている。このキャッシュ2に、主記憶3に記憶された各種の情報(データ)のうちの、プロセッサ1が頻繁にアクセスする情報を複写(コピー)しておく。そして、プロセッサ1は、主記憶3の代わりにこのキャッシュ2をアクセスすることにより、高速処理が可能となる。
【0003】
したがって、プロセッサ1がキャッシュ2をアクセスしたが目標とする情報(データ)がキャッシュ2に記憶されていないとキャッシュミスとなり、目標とする情報(データ)を主記憶3から読出してキャッシュ2に書込む。この主記憶3とキャッシュ2との間で取り交わす情報(データ)の最小単位を単位ブロックと称する。
【0004】
近年、プロセッサ1の処理速度を向上させるために、スーパースカラプロセッサに代表される1クロック周期で複数の処理を実行する並列プロセッサが実用化されている。この並列処理を行うプロセッサ1においては、例えばキャッシュ2から命令(機械命令)とデータ(演算用データ)とを同時にアクセスする必要がある。一つのメモリから同時に複数の情報(データ)に対するアクセスを実施するためには、一つのメモリに複数のポート(書込/読出端子)が必要である。
【0005】
しかし、キャッシュに使用できる程の大容量の多ポートメモリを作成する技術が存在しないため、これまでは、機械命令、演算用データに対するそれぞれのアクセスパターンが異なることを利用して、それぞれ独立の1ポートキャッシュを設けていた。例えば、図29(b)は、図29(a)のキャッシュ2を、命令(機械命令)のみを記憶する命令キャッシュ4と、データ(演算用データ)のみを記憶するデータキャッシュ5とに分割した例を示す。
【0006】
なお、命令のアクセスパターンとデータのアクセスパターンとの相違点は、一つの命令は、分割できない複数のステップで構成されており、連続したアドレスにアクセスされる。したがって、要求されるデータ幅(1度に読出す情報データのビット数)は大きい。これに対して、データは、比較的ランダムにアクセスされることが多いので、要求されるデータ幅は小さい。
【0007】
しかしながら、主記憶3に記憶される個々のプログラム毎に、各キャッシュ4、5に最適な記憶容量が異なる。したがって、各キャッシュ4、5の容量を合計した一つのキャッシュ2に比較して、フラグメンテーションが発生し、記憶容量の使用効率が低下するのみならず、ワーキングセットが大きいプログラムを実行させるとキャッシュミス率が上昇する問題が生じる。
【0008】
さらに、一般的に、メモリにおけるプロセッサにてアクセス可能なポート数を増加すると、ポート数の2乗に比例してメモリの必要面積が増加する(例えば、非特許文献1参照)。そのため、面積コストと配線遅延が増大し、大容量のキャッシュを構成する事が困難であった。
【0009】
さらに、図29(c)に示すように、命令キャッシュ4の他にトレースキャッシュ6を設けることによって、プロセッサ1の高速化を図ることができる。トレースキャッシュ6内には、プロセッサ1が一度実行した命令列が記憶されている。そして、プロセッサ1は、新たに命令を実行する場合は、命令キャッシュ4とトレースキャッシュ6とをアドレス(フェッチアドレス)で同時に検索して、両方ヒットすれば、トレースキャッシュ6の命令列のデータを採用し、トレースキャッシュ6がヒットしなかった場合は、命令キャッシュ4の命令のデータを採用する。
【0010】
この命令キャッシュ4とトレースキャッシュ6の詳細動作を図30を用いて説明する。
主記憶3に記憶されたプログラム7内に、各命令に対応するA〜Eの基本ブロックが記憶されている。なお、実行順序は、Aの基本ブロックを先頭とし、Bを飛ばして、C、Dの基本ブロックに分岐する。
【0011】
このような状態において、命令キャッシュ4内には、プログラム7内のA〜Eの基本ブロックが1ライン毎に先頭から順番に格納される。一方、トレースキャッシュ6内には、実際に実行されたA、C、Dの基本ブロックが順番に格納される。
【0012】
次に、前回のA、C、Dの実行履歴と同様に再度Aの基本ブロックから実行を行う場合を考える。この場合、命令キャッシュ4内には、命令の各基本ブロックはメモリに格納されている順序と同じように命令キャッシュ4内に格納されている。そのために、プロセッサ1は、まず、命令キャッシュ4内から、A、B、Cの基本ブロックを含む1ラインをフェッチし、その後、Bを破棄してから、C、D、Eの基本ブロックを含む1ラインをフェッチする。したがって、プロセッサ1は、目標とするA、C、Dの基本ブロックをフェッチするために2サイクル必要となる。
【0013】
これに対して、トレースキャッシュ6内には一度実行された命令列(A、C、Dの基本ブロック)が格納されているので、命令列(基本ブロック列)の分断に対応でき、プロセッサ1のフェッチ効率が上昇する。
【0014】
このように、命令キャッシュ4のみでは16命令の中に3〜4個存在するとされる分岐命令による命令列の分断に起因してフェッチ効率が低下するので、トレースキャッシュ6を設けている。そして、前述したように、プロセッサ1は、2つのキャッシュ4、6のヒット状況を確認し、トレースキャッシュ6がヒットしていればトレースキャッシュ6から、トレースキャッシュ6がキャッシュミスしていれば命令キャッシュ4から目的とする命令列(基本ブロック列)をフェッチしている。
【0015】
しかし、このように、命令キャッシュ4の他にトレースキャッシュ6を設けた場合においてもまだ次のような問題が生じる。
【0016】
トレースキャッシュ6と命令キャッシュ4とでは、時系列で必要となるキャッシュ容量が変化するが、トレースキャッシュ6と命令キャッシュ4の各容量は固定されているため容量比を動的に変化させることが出来ない。したがって、キャッシュ全体の利用率が低下する。
【0017】
命令キャッシュ4とトレースキャッシュ6に重複する命令(基本ブロック)が存在するので、キャッシュ全体の利用率が低下する。
【0018】
分岐予測がAの基本ブロックからBの基本ブロックへ分岐すると予測した場合、トレースキャッシュ6からAの基本ブロックしか命令を発行(フェッチ)できない。
【0019】
トレースキャッシュ6内には、一つの基本ブロックを先頭として格納されるため、図30のように、実行終了した命令列がA、C、Dと存在する場合において、トレースキャッシュ6内には、別にC、Dを先頭としたデータ列も格納される可能性がある。このためトレースキャッシュ6内でデータ(基本ブロック)の重複が生じ、キャッシュの有効利用率が低下する。
【0020】
【非特許文献1】
H.J.Mattausch, K.Kishi and T.Gyohten, “Area-efficient multi-port SRAMs for on-chip storage high random-access bandwidth” IEICE Trans on Electronics vol E84-C, No.3, 2001, p410-417
【0021】
【発明が解決しようとする課題】
このように、従来の図29(b)に示す命令キャッシュ4とデータキャッシュ5とを個別に設けたキャッシュシステムや、図29(c)に示す命令キャッシュ4の他にトレースキャッシュ6を設けたキャッシュシステムにおいては、個々のキャッシュが小容量になり、各キャッシュ相互間で余剰容量の相互融通ができなくなり、全体としてのキャッシュミスの発生率が上昇する。さらに、命令キャッシュとトレースキャッシュとの間においては、データ(基本ブロック)の重複記憶が生じ、キャッシュの有効利用率が低下する。
【0022】
本発明はこのような事情に鑑みてなされたものであり、バンク構造を用い、各ポートに対するデータ幅及び容量を任意に設定でき、その結果、アクセスパターンの異なる命令やデータの情報を1つのキャッシュに統合でき、フラグメンテーションの発生を防止し、キャッシュの実効容量を増加させることができる多ポート命令・データ統合キャッシュ、多ポート命令・トレース統合キャッシュ、及び多ポート命令・トレース・データ統合キャッシュを提供することを目的とする。
【0023】
【課題を解決するための手段】
上記課題を解消するために、請求項1の多ポート命令・データ統合キャッシュは、1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、主記憶に記憶されている命令及びデータの一部を記憶する複数のバンク及び複数のポートを有する。
【0024】
さらに、多ポート命令・データ統合キャッシュにおける複数のポートは、並列プロセッサから命令をアクセスするための1個以上の命令ポートからなる命令ポートユニットと並列プロセッサからデータをアクセスするための1個以上のデータポートからなるデータポートユニットとを有している。
【0025】
そして、命令ポートからバンクに対して指定できるデータ幅を、データポートからバンクに対して指定できるデータ幅より大きく設定している。
【0026】
また、命令ポートから連続しない複数バンクにアクセス可能とし、データポートから全てのバンクにアクセス可能とする。さらに、各命令ポート毎に異なるデータ幅を設定可能としている。
【0027】
このように構成された多ポート命令・データ統合キャッシュにおいては、バンク構造メモリを採用することにより、基本的に各ポートから同時にアクセスするバンクの数を変更することでアクセス可能なデータ幅を変更することが可能である。
【0028】
そして、命令ポートからバンクに対して指定できるデータ幅を、データポートからバンクに対して指定できるデータ幅より大きく設定している。さらに、命令ポートから連続しない複数バンクにアクセス可能としているので、各命令ポートにおいて、たとえ一度にフェッチできる命令列のビット数(基本ブロックの大きさ)を示すデータ幅を大きく設定しても、アクセス競合の発生が抑制できる。逆に、データポートにおいては、一度にフェッチされるデータのビット数は小さく、かつ比較的ランダムにアクセスされるので、全てのバンクにアクセス可能とする。
【0029】
また、多ポート命令・データ統合キャッシュにおいては、バンク構造を採用しているので、少ないポート数で面積大容量の多ポートキャッシュが構成可能になる。さらに、複数のキャッシュを1つのバンク構造の多ポートキャッシュに置換えることでキャッシュ全体のフラグメンテーションを抑制することが可能である。
【0030】
さらに、請求項2、請求項3は、多ポート命令・データ統合キャッシュをHMA構造やクロスバスイッチネットワーク構造で構成している。
【0031】
このように、多ポート命令・データ統合キャッシュをHMA構造やクロスバスイッチネットワーク構造を用いて構成することによって、この統合キャッシュに組込まれるポート数を大幅に減少でき、統合キャッシュを、面積効率が高く、小型に構成できる。
【0032】
また、請求項4は、1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュである。
【0033】
そして、主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、並列プロセッサが多ポートバンクメモリを命令キャッシュとしてアクセスしたとき、指定された命令データを多ポートバンクメモリから命令キャッシュの命令データとして読出す命令データ読出手段と、並列プロセッサが多ポートバンクメモリをトレースキャッシュとしてアクセスしたとき、指定された命令データを多ポートバンクメモリからトレースキャッシュのトレースデータとして読出すトレースデータ読出手段とを備えている。
【0034】
このように構成された多ポート命令・トレース統合キャッシュにおいて、多ポートバンクメモリには、主記憶に記憶されている命令データの一部が記憶されている。したがって、多ポートバンクメモリ内に記憶されている各命令データは、命令キャッシュの命令データか、トレースキャッシュのトレースデータを構成する命令データかの区別はない。
【0035】
そして、並列プロセッサがフェッチアドレスで多ポートバンクメモリ内の命令データを指定したときに、例えばキャッシュヒット回路等を用いて、命令キャッシュとしてアクセスしているのか、トレースキャッシュとしてアクセスしているのかを判定して、該当命令データを命令キャッシュの命令データとして読出したり、トレースキャッシュのトレースデータとして読出す。
【0036】
したがって、トレースキャッシュのデータと命令キャッシュのデータとを同一キャッシュ内に共存することが可能になり、キャッシュ容量の有効利用が実現する。また、同一命令データの重複記憶が抑制される。
【0037】
さらに請求項5は、1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュである。
【0038】
そして、主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリを設けている。また、並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令データがトレースキャッシュのデータか否かを示す識別ビット、フェッチアドレスにおける上位桁に設定されたタグ1、フェッチアドレスにおける下位桁に設定されたタグ2、及び多ポートバンクメモリの各バンクに記憶された命令データを指定する複数のアドレスが記憶されたタグディレクトリを設けている。
【0039】
さらに、タグ1及び識別ビットに基づいて、アクセスする命令データが多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、タグ1、タグ2及び識別ビットに基づいて、アクセスする命令データ列が多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、トレースキャッシュヒット判定回路のヒット判定に応じて、タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して前記多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出しさせるフェッチアドレス選択部とを設けている。
【0040】
このように構成された命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュにおいては、命令キャッシュとトレースキャッシュでのアクセス方法の統一、及び、アクセス時にどちらのデータなのかを識別することが必要となる。命令キャッシュでは連続した命令が格納されているため、ライン内のデータに自由にアクセスすることが可能である。それに対し、トレースキャッシュでは動的命令流れの順序で命令列が並んでいるため、先頭のアドレスからしかアクセスできない。
【0041】
このアクセス方法を統一するため、請求項6ではトレースキャッシュのデータなのか否かを識別するビットと、アクセス用に2つのタグ1、2を用意する。命令キャッシュによるアクセスではタグ1しか必要とせず、トレースキャッシュ用のデータではアドレスの下位ビットを比較するためにタグ1に加えてタグ2を用いてトレースデータの開始位置の比較を行いアクセスする。
【0042】
このようなアクセス方法を採用することにより、トレースキャッシュのデータと命令キャッシュのデータとを同一キャッシュ内に共存することが可能なり、キャッシュ容量の有効利用が実現する。
【0043】
また、統合したキャッシュを有効に利用するために、キャッシュにバンク構成を利用してラインを微細化している。これにより、命令フェッチ時には複数のバンクから命令列を読出すことが可能とし、分岐予測に従って命令列がフェッチされる。
【0044】
また、請求項6は、1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュである。
【0045】
そして、主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリが設けられている。さらに、フェッチライン・アドレスキャッシュ(FLAC)から並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令データがトレースキャッシュのデータか否かを示す識別ビット、フェッチアドレスにおける上位桁に設定されたタグ1、フェッチアドレスにおける下位桁に設定されたタグ2が記憶された複数のタグディレクトリが設けられている。また、タグディレクトリ毎に設けられ、タグ1及び識別ビットに基づいて、アクセスする命令データが前記多ポートバンクメモリに記憶されていると判定する複数の命令キャッシュヒット判定回路と、タグディレクトリ毎に設けられ、タグ1、前記タグ2及び識別ビットに基づいて、アクセスする命令データ列が多ポートバンクメモリに記憶されていると判定する複数のトレースキャッシュヒット判定回路と、各キャッシュヒット判定回路のヒット判定に応じて、対応するタグディレクトリに入力されている各フェッチアドレスを多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出すバンクアクセス回路とが設けられている。
【0046】
このように構成された多ポート命令・トレース統合キャッシュにおいては、次にアクセスすべき複数のアドレスはタグディレクトリでなくて、統合キャッシュ外のフェッチライン・アドレスキャッシュ(FLAC)に記憶されている。フェッチライン・アドレスキャッシュ(FLAC)から出力される複数のフェッチアドレスに対応するために、統合キャッシュ内に複数のタグディレクトリが形成されている。
【0047】
請求項7は、1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュである。
【0048】
そして、主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、前記フェッチアドレスにおける上位桁に設定されたタグ1が記憶された命令用タグディレクトリと、並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、フェッチアドレスにおける上位桁に設定されたタグ1、フェッチアドレスにおける下位桁に設定されたタグ2、及び多ポートバンクメモリの各バンクに記憶された命令データを指定する複数のアドレスが記憶されたトレース用タグディレクトリと、タグ1に基づいて、アクセスする命令データが多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、タグ1、タグ2に基づいて、アクセスする命令データ列が多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、トレースキャッシュヒット判定回路のヒット判定に応じて、タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出しさせるフェッチアドレス選択部とを備えている。
【0049】
このように構成された多ポート命令・トレース統合キャッシュにおいては、統合キャッシュ内に設けられたタグディレクトリを、命令用タグディレクトリとトレース用タグディレクトリとに分割している。よって、命令用タグディレクトリ及びトレース用タグディレクトリ内にはトレース識別ビットを設定する必要ない。したがって、各キャッシュヒット判定回路の判定処理が簡素化される。
【0050】
請求項8は、1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュである。
【0051】
そして、主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、フェッチライン・アドレスキャッシュ(FLAC)から並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、フェッチアドレスにおける上位桁に設定されたタグ1が記憶された複数の命令用タグディレクトリと、フェッチライン・アドレスキャッシュから並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、フェッチアドレスにおける上位桁に設定されたタグ1、フェッチアドレスにおける下位桁に設定されたタグ2が記憶された複数のトレース用タグディレクトリと、タグディレクトリ毎に設けられ、タグ1に基づいて、アクセスする命令データが多ポートバンクメモリに記憶されていると判定する複数の命令キャッシュヒット判定回路と、タグディレクトリ毎に設けられ、タグ1及びタグ2に基づいて、アクセスする命令データ列が多ポートバンクメモリに記憶されていると判定する複数のトレースキャッシュヒット判定回路と、各キャッシュヒット判定回路のヒット判定に応じて、対応するタグディレクトリに入力されている各フェッチアドレスを多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出すバンクアクセス回路とを備えている。
【0052】
このように構成された多ポート命令・トレース統合キャッシュにおいては、各トレース用タグディレクトリに次にアクセスすべきアドレスは記憶されていなくて、統合キャッシュ外のフェッチライン・アドレスキャッシュ(FLAC)に記憶されている。フェッチライン・アドレスキャッシュ(FLAC)から出力される複数のフェッチアドレスに対応するために、統合キャッシュ内に複数の命令用タグディレクトリ及びトレース用タグディレクトリが形成されている。
【0053】
請求項9においては、タグディレクトリの各領域に記憶された複数のアドレスは、該当領域が前回ヒットしたとき実行された各命令のアドレスに基づいて更新される。
【0054】
請求項10においては、タグディレクトリの各領域に記憶された複数のアドレスは、該当領域が前回ヒットしたとき実行された各命令のアドレス、及びこの各命令の次に分岐が可能な分岐先の命令のアドレスを含む。
【0055】
請求項11においては、フェッチアドレス選択部は、分岐予測部から入力された各命令の分岐予測に基づいて前記所定数のアドレスを選択する。
【0056】
請求項12においては、フェッチライン・アドレスキャッシュ(FLAC)から出力される複数のフェッチアドレスは、このフェッチアドレスが前回ヒットしたとき実行された各命令のアドレスに基づいて更新される。
【0057】
請求項13においては、フェッチライン・アドレスキャッシュ(FLAC)から出力される複数のフェッチアドレスは、このフェッチアドレスが前回ヒットしたとき実行された各命令のアドレス、及びこの各命令の次に分岐が可能な分岐先の命令のアドレスを含む。
【0058】
前述したように、バンク構成を利用することにより、複数バンクから同時に複数命令をフェッチするためは、複数のアドレスの発行が必要となる。このため、タグディレクトリの各領域に記憶された複数のアドレス又はフェッチライン・アドレスキャッシュから出力される複数のアドレスを、毎サイクル分岐命令による命令列の分断に対応するために、分岐予測に従ったパス(各命令の実行経路)に存在する複数の命令をフェッチするため複数のアドレスとしている。
【0059】
請求項14は、1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、主記憶に記憶されている命令、トレース及びデータの一部を記憶する、複数のバンク及び複数のポートを有する多ポート命令・トレース・データ統合キャッシュである。
【0060】
そして、複数のポートは、並列プロセッサから命令をアクセスするための1個以上の命令ポートからなる命令ポートユニットと並列プロセッサからトレースをアクセスするための1個以上のトレースポートからなるトレースポートユニットと並列プロセッサからデータをアクセスするための1個以上のデータポートからなるデータポートユニットとを有している。さらに、命令ポート及びトレースポートからバンクに対して指定できる各データ幅を、データポートからバンクに対して指定できるデータ幅より大きく設定している。
【0061】
このように各ポートを設定することによって、一つのキャッシュに、命令キャッシュ、トレースキャッシュ、及びデータキャッシュを組込むことが可能となり、キャッシュ全体としての必要とする記憶容量をさらに減少できる。
【0062】
請求項15は、1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとデータキャッシュとを統合した多ポート命令・トレース・データ統合キャッシュである。
【0063】
そして、主記憶に記憶されている命令及びデータの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令又はデータがトレースキャッシュのデータか否かを示す識別ビット、フェッチアドレスにおける上位桁に設定されたタグ1、フェッチアドレスにおける下位桁に設定されたタグ2、及び多ポートバンクメモリの各バンクに記憶された命令又はデータを指定する複数のアドレスが記憶されたタグディレクトリと、タグ1及び識別ビットに基づいて、アクセスする命令又はデータが多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、タグ1、タグ2及び識別ビットに基づいて、アクセスする命令が多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、各キャッシュヒット判定回路のヒット判定に応じて、タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して多ポートバンクメモリへ送出して、各バンクの命令又はデータを同時に読出しさせるフェッチアドレス選択部と、多ポートバンクメモリから読出された複数のデータから並列プロセッサが必要とするデータを選択する選択回路とを備えている。
【0064】
このように構成された多ポート命令・トレース・データ統合キャッシュにおいても、一つのキャッシュに、命令キャッシュ、トレースキャッシュ、及びデータキャッシュを組込むことが可能となり、キャッシュ全体としての必要とする記憶容量をさらに減少できる。
【0065】
【発明の実施の形態】
以下、本発明の各実施形態を図面を用いて説明する。
(第1実施形態)
図1は本発明の第1実施形態に係わる多ポート命令・データ統合キャッシュを1クロック周期で複数の処理を実行する並列プロセッサに接続した状態を示す模式図である。
【0066】
多ポート命令・データ統合キャッシュ10(以下、統合キャッシュ10と略記する)には、1番から15番の15個のポート11が設けられている。各ポート11は統合キャッシュ10内のアドレスを指定するアドレス端子と、統合キャッシュ10の該当アドレスに対してアクセスされるデータが入出力されるデータ端子とで構成されている。
【0067】
この15個のポート11は、複数のポートユニット12a、12b、12c、12dに分割される。ポートユニット12aは1〜4番の4個のポート11が所属し、ポートユニット12bは5番の1個のポート11が所属し、ポートユニット12cは6〜13番の8個のポート11が所属し、ポートユニット12dは14〜15番の2個のポート11が所属する。
【0068】
並列プロセッサ13には、統合キャッシュ10の1番から15番の各ポート11に対応した15個のポート14が設けられている。この15個のポート14は、統合キャッシュ10と同様に複数のアクセスポートユニット15a、15b、15c、15dに分割される。
【0069】
図2は、統合キャッシュ10の概略構成を示す模式図である。この統合キャッシュ10内には、16個のバンク構造体17が組込まれている。各バンク構造体17はポート数変換回路18とバンク19とで構成されている。バンク19が組込まれた16個のバンク構造体17は、6個のバンクユニット16a〜16fに区分けされている。
【0070】
バンクユニット16a、16bに組込まれた各バンク構造体17のポート数変換回路18は、ポート11側のN1個のポートを1個のポートに変換してバンク19に接続する。したがって、バンク19は1個のポートのみを有する1ポートメモリを構成する。
【0071】
バンクユニット16c、16eに組込まれた各バンク構造体17のポート数変換回路18は、ポート11側のN2個のポートを1個のポートに変換してバンク19に接続する。同様に、バンクユニット16d、16fに組込まれた各バンク構造体17のポート数変換回路18は、ポート11側のN3個のポートを1個のポートに変換してバンク19に接続する。
【0072】
各ポートユニット12a〜12dの各ポート11は各ポートユニット12a〜12dにて指定された数のバンク19、及び指定された位置のバンク19にアクセス可能である。
【0073】
この例では、ポートユニット12bのポート11から全てのバンク19ヘアクセスが可能である。すなわち、ポートユニット12bのポート11はデータポートとして機能する。
【0074】
その他の各ポートユニット12a、12c、12dの各ポート11のアクセスは、バンク19をプリデコードする事によりアクセスを制限し、データ幅の大きなポート11として動作する。また、各ポートユニット12a、12c、12dからアクセスできるバンク19も制限されており、連続したバンク19へのアクセスが禁止されている。これにより、各ポートユニット12a、12c、12dが必要とする合計の容量の相違にも対応する。すなわち、ポートユニット12a、12c、12dの各ポート11は命令ポートとして機能する。
【0075】
このように構成された統合キャッシュ10においては、並列プロセッサ13から統合キャッシュ10に記憶された命令をフェッチする場合は、指定された命令ポート(ポートユニット12a、12c、12d)の各ポート11にアドレスを印加し、データをフェッチする場合は、指定されたデータポート(ポートユニット12b)のポート11にアドレスを印加すればよい。
【0076】
図3は、図2に示す多ポート命令・データ統合キャッシュ10を、特許文献1に提唱されている階層構造型多ポートメモリアーキテクチャ(Hierarchical Multi-port Memory Architecture 以下HMAと略記する)構造を用いて構成した場合のブロック構成図である。
【0077】
このHMA構造を用いて構成された統合キャッシュ10は、大きく分けて、第1階層と第2階層とから構成されている。
第2階層は、大きく分けて、マトリックス状に配列された、バンク19とポート数変換回路18とからなる複数のバンク構造体17と、バンク行選択回路20と、バンク列選択回路21とで構成されている。
【0078】
バンク行選択回路20とバンク列選択回路21は、1番〜15番の各ポート11から入力されたn=15個のアドレスADを、n個の行バンク選択信号RSn、n個の列バンク選択信号CSn、及びn個のバンク内アドレスAnに変換する。このn個の行バンク選択信号RSn、n個の列バンク選択信号CSnでn個の各データDnがアクセスされるバンク構造体17が決定される。
【0079】
この場合、各ポート11は同時に同一アドレスを出力するとバンク競合が発生するので、各バンク構造体17は複数のポート11から同時に指定されることはないとして説明する。
【0080】
バンク19とポート数変換回路18とからなるバンク構造体17で構成される第1階層のバンク19は、大きく分けて、マトリックス状に配列された複数の1ポートメモリセル22と、行選択回路23と、列選択回路24とで構成されている。
【0081】
ポート数変換回路18は、n個の行バンク選択信号RSn、n個の列バンク選択信号CSnから自己が指定されていることを示すバンク選択信号S、n個のバンク内アドレスAnから選択した、自己のバンク内アドレスA、及びn個のデータDnから選択した自己のデータDをバンク19へ送出する。
【0082】
バンク19の行選択回路23と列選択回路24とは、自己が指定されていることを示すバンク選択信号Sを受信すると、バンク内アドレスAを用いて、最終的にアクセスすべき1ポートメモリセル22を特定する行セル選択信号RS、列セル選択信号CSを動作状態にする。したがって、最終的にアクセスすべき1個の1ポートメモリセル22が動作状態になる。なお、データDは各1ポートメモリセル22に印加されるが、動作状態の1個の1ポートメモリセル22がデータDを取込む。
【0083】
このように、統合キャッシュ10をHMA構造を用いて構成することによって、この統合キャッシュ10に組込まれるポート数を大幅に減少でき、統合キャッシュ10を、面積効率が高く、小型に構成できる。
【0084】
(第2実施形態)
図4は本発明の第2実施形態の係わる多ポート命令・データ統合キャッシュの概略構成図である。図2に示す第2実施形態の統合キャッシュ10と同一部分には同一符号を付して重複する部分の詳細説明を省略する。
【0085】
この実施形態の統合キャッシュ10においては、ポート数変換回路18aがバンク19aの外に位置している。そして、この統合キャッシュ10は、図5に示すクロスバスイッチネットワーク構造で実現される。
【0086】
すなわち、1番から15番の各ポート11の各信号路25には、この各信号路25に直交しそれぞれバンク19aに接続された複数の信号路26が設けられている。各信号路25と各信号路26との交点には両信号路25、26を導通するスイッチ27が接続されている。各スイッチ27と信号路26とでポート数変換回路18aを構成している。
【0087】
各ポート11に印加されているアドレスの下位ビットで選択すべきバンク19aに接続されるポート数変換回路18aのスイッチ27を閉じることによって、各ポート11は任意のバンク19aに接続可能となる。
【0088】
このように、クロスバスイッチネットワークで構成された統合キャッシュ10においても、この統合キャッシュ10に組込まれるポート数を大幅に減少できるので、先に説明したHMA構造を用いた統合キャッシュ10とほぼ同様の作用効果を得ることができる。
【0089】
さらに、第1、第2の実施形態の統合キャッシュ10における別の効果を説明する。
ポート数変換回路18、18aの変換数を工夫すれば、各ポートユニット12a〜12dの各ポート11から見ると、任意のポート数、バンク19,19a自体が持つものの整数倍のデータ幅と容量が得られているように見える。しかし、実際には1つの統合キャッシュ10であるため、命令キャッシュ4とデータキャッシュ5を統合した際のキャッシュミス率の低下という利点を得ることもできる。
【0090】
命令キャッシュ4とデータキャッシュ5を統合した統合キャッシュ10と従来の分割キャッシュについて、シミュレータ(Simple Scalar ver2.0)を用いキャッシュミス率を算出した結果を図6に示す。
【0091】
グラフの横軸は、分割キャッシュにおける合計の容量であり、統合キャッシュの容量に等しい。また、分割キャッシュとは、従来までの命令キャッシュとデータキャッシュが分割されている形態を示す。
【0092】
図6に示すように、各統合キャッシュのミス率は容量で約1.5倍の各分割キャッシュのミス率とほぼ等しいという結論が得られる。これは、二つのキャッシュを統合した事により、命令キャッシュ4のデータ領域とデータキャッシュ5のデータ領域と境界が定まっておらず、時間毎にキャッシュ内のライン(記憶領域)をフレキシブルに活用でき、それぞれに最適なメモリ容量を振り分け直す事ができるためと考えられる。以上により、多ポート統合キャッシュの有効性が証明された。
【0093】
なお、キャッシュを多ポートにして統合すると、命令ポート、データポート間、及びそれら同士のアクセス競合が発生して、並列プロセッサ13におけるアクセス処理速度の性能低下も考えられる。
【0094】
しかしながら、アクセス競合によるペナルティは1サイクルで十分なのに対して、キャッシュミスによるペナルティは、キャッシュ内のデータの書き直しのために、数サイクルから十数サイクル必要である。そのため、アクセス競合確率がキャッシュミス率と同程度なら問題ないといえる。
【0095】
そこで、先のシミュレーション結果からキャッシュアクセスのトレースデータを抽出し、そこから各バンク数に対するアクセス競合確率を計算した。その結果を図7に示す。この結果から、バンク数が16〜32以上あれば、アクセス競合率は、キャッシュミスの確率とほぼ同等となり、アクセス競合は問題にならない。
【0096】
各実施形態の統合キャッシュ10は、マルチバンクアーキテクチャに基づいて構成されている。このマルチバンクアーキテクチャでは、図2、図4に示すように、バンク構造を用いた上で、各バンク19、19aヘのアクセスを1ポートに制限するポート数変換回路18を使用することにより高面積効率、高速化を図っている。
【0097】
例えば、図8に示すように、4個の命令ポート(データ幅;32ビット)、2個のデータポート(データ幅;8ビット)の統合キャッシュ10を構成する場合について検証する。
【0098】
命令ポートは、各バンク19のアドレスの下位2ビットでプリデコードされており、特定のバンク19にしかアクセスできない構造とし、同時には連続したアドレスヘのアクセスでは、必ずアクセス競合が起こらないような構成とする。さらに、連続しないアドレスヘのアクセスも、アドレスの下位2ビットが衝突しない限り可能である。一方、データポートは、命令ポートより連続したアドレスヘのアクセスの確率は低いため、16個の全てのバンク19にアクセスできる構造である。
【0099】
このように、この構成を用いれば、アクセス性能をさほど低下させずに、命令キャッシュ4とデータキャッシュ5とを一つの統合キャッシュ10に統合でき、従来の命令キャッシュ4とデータキャッシュ5のポートを個別に設けた場合に比較して、面積コストも半分程度になると見積もっている。
【0100】
(第3実施形態)
図9は本発明の第3実施形態に係わる多ポート命令・トレース統合キャッシュが組込まれた並列プロセッサの要部を示す模式図である。
【0101】
並列プロセッサにおける図示しないアドレス発生部から出力された例えば32ビット構成のフェッチアドレス38は、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュ30及び分岐予測部31へ入力される。
【0102】
多ポート命令・トレース統合キャッシュ30(以下、統合キャッシュ30と略記する)は、一つのフェッチアドレス38が入力されると、このフェッチアドレスと分岐予測部31から入力される予測パスに基づいて、内部に設けられた複数のバンクのうちの4つのバンクに同時にフェッチし、4単位ブロックの16命令を発行する。
【0103】
統合キャッシュ30から発行された各命令は、命令バッファ32を介して、命令実行部33で実行される。命令実行部33で一度実行された各命令は蓄積ユニット(Fill Unit )34に入力される。この蓄積ユニット34内には、4個の命令蓄積バッファ(Instruction Fill Buffer IFB)35と、アドレス蓄積バッファ(Address Fill Buffer AFB)36とが設けられている。命令蓄積バッファ(IFB)35及びアドレス蓄積バッファ(AFB)36とに1ライン分の命令及び1ライン分のアドレスデータが蓄積されると、これらのデータはトレースデータとして統合キャッシュ30に帰還される。統合キャッシュ30において、キャッシュミスが発生すると、主記憶37の命令データを取込む。
【0104】
統合キャッシュ30内には、例えば、図10に示すように、タグディレクトリ39、ビット判定回路40、フェッチアドレス選択部41、複数のバンク(bank)42で構成された多ポートバンクメモリ43、バンクアクセス回路44が設けられている。前記各バンク42に各命令のデータ(命令データ)が記憶されている。
【0105】
多ポートバンクメモリ43内に形成された各バンク42内には、複数の命令データが単位ブロック毎に単独の命令キャッシュデータとして、又は、他の命令データと共にトレースキャッシュデータとして記憶されている。
【0106】
なお、この多ポートバンクメモリ43とバンクアクセス回路44とを第1実施形態で説明したHMA構造を用いて構成することができる。さらに、これらを第2実施形態で説明したクロスバスイッチネットワーク構造を用いて実現することも可能である。
【0107】
図11は、タグディレクトリ39及びビット判定回路40の詳細構成図である。フェッチアドレス38は上位ビットにタグ(tag)1が設定され、中間ビットにインデックス(index)が設定され、下位ビットにタグ(tag)2が設定されている。
【0108】
タグディレクトリ39において、各インデックスで指定される領域45には、この領域45が有効であることを示す有効(valid)ビット、トレースキャッシュからのデータであることを示す識別ビットとしてのトレース(trace)ビット、タグ1、トレースキャッシュからのデータの場合に先頭アドレスであることを特定するためのタグ2、及び、蓄積ユニット34のアドレス蓄積バッファ(AFB)36からトレースデータとし入力されたトレースフェッチアドレスの集合46が記憶されている。
【0109】
ヒット判定回路40は、命令キャッシュヒット判定回路47とトレースキャッシュヒット判定回路48とで構成されている。命令キャッシュヒット判定回路47は、比較器47a、アンドゲート47b、インバータ47c、アンドゲート47dで形成されている。そして、領域45における有効(valid)ビットが有効で、トレース(trace)ビットが無効で、タグ1が一致すれば、命令キャッシュのデータがヒットする。
【0110】
一方、トレースキャッシュヒット判定回路48は、比較器47a、48a、アンドゲート47b、48b、48cとで構成され、領域45における有効(valid)ビットが有効で、トレース(trace)ビットが有効で、タグ1、2が一致すれば、トレースキャッシュのデータがヒットする。
【0111】
トレースキャッシュと命令キャッシュと両方のデータでヒットした場合、ヒット判定回路40からトレースキャッシュからのデータを出力する。
【0112】
この方式により、トレースキャッシュのデータと命令キャッシュのデータの格納先をこのタグディレクトリ39における同一のインデックスが指定する領域45のトレースフェッチアドレス集合46として設定できる。したがって、入力したフェッチアドレスを効率良く複数の命令に置換えでき、前述した従来のトレースキャッシュと命令キャッシュを設けた場合における問題点である重複する命令列の問題を解決することが可能となる。
【0113】
図10において、ヒット判定回路40から出力されたトレースキャッシュ又は命令キャッシュのヒット情報はフェッチアドレス選択部41へ送出される。フェッチアドレス選択部41は、入力したヒット情報がトレースキャッシュ判定回路48からのヒット情報の場合、タグディレクトリ39におけるインデックスが指定する領域45のトレースフェッチアドレス集合46から、分岐予測部31から出力される予測パスが指定するバンク42内のデータを読出すための複数のフェッチアドレスを選択してバンクアクセス回路44へ送出する。すなわち、トレースデータの先頭アドレスが二つのタグ1、2で特定されるとこの先頭アドレスに続く各データのフェッチアドレスが選択される。
【0114】
バンクアクセス回路44は、入力された各フェッチアドレスが指定する各バンク42内の各1単位ブロック分のデータ(命令データ)を読出して命令バッファ33へ出力する。
【0115】
また、フェッチアドレス選択部41は、入力したヒット情報が命令キャッシュ判定回路47からのヒット情報の場合、トレースデータは存在しないので、タグ1とインデックスで指定するバンクから4つの連続したバンク42をアクセスして、各1単位ブロック分のデータ(命令データ)を読出して命令バッファ33へ出力する。
【0116】
次に、蓄積ユニット34のアドレス蓄積バッファ(AFB)36から統合キャッシュ30におけるタグディレクトリ39の領域45に書込まれるトレースフェッチアドレスの集合46の生成方法を説明する。
【0117】
統合キャッシュ30がバンク構成を採用する場合、トレースデータは各バンク42に対して、基本ブロック単位で格納されているため、複数のバンク42から分岐予測に従ったバンクをフェッチすることによりトレースを生成する。このため、それらのバンク42のアドレスを発行することが必要となる。トレースキャッシュでは命令の実行履歴を確認するために、この方法を利用しアクセスされるバンク42のアドレスを生成する方法を示す。
【0118】
一般に、トレースキャッシュを利用する場合、命令実行部33で一度実行された命令列を蓄積ユニット34で結合していくことにより分岐の飛び込み先から分岐命令までの一連の命令列をキャッシュに格納する。以降、この一連の命令列を「擬似的な基本ブロック」と呼ぶ。「擬似的な基本ブロック」のサイズを確認することにより、過去の履歴から連続してアクセスされると予測される部分を抽出できる。
【0119】
トレースキャッシュではこの「擬似的な基本ブロック」単位で命令を格納していくため、1つのラインには最大1つの分岐命令しか存在しない。このため、各ラインは分岐を行う先は1つ、また分岐を行わないもしくは分岐命令が存在しないのなら連続したバンク42にアクセスすることになる。
【0120】
図13に、多ポートバンクメモリ43内におけるトレースのライン単位でのフェッチの詳細を示す。アドレス(address)1から始まるトレースの始めのバンク(bank)0に存在する「擬似的な基本ブロック」はバンク(bank)2のアドレス2へ分岐し、次はアドレス3へ分岐する。
【0121】
このアドレス1、2、3を発行するためには、分岐予測を行った上で予測先がどのバンク42に存在するのかの情報が必要となる。この方式を実現するために、実行終了した命令列を結合する蓄積ユニット34内に、アドレスと命令データを分割するために、前述したように、4個の命令蓄積バッファ(IFB)35とアドレス蓄積バッファ(AFB)36とが設けられている。
【0122】
命令蓄積バッファ(IFB)35は、前述したように、実行終了した命令のデータを格納する。前述したように命令実行部33は同時に16命令を実行し、かつ各バンク42の1ラインは4命令なので、図16、図18、図19に示すように、4命令毎に、合計4個設けられている。
【0123】
アドレス蓄積バッファ(AFB)36は、前述したように、トレースを生成する一連の「疑似的な基本ブロック」のアドレスの集合を格納する。すなわち、アドレス蓄積バッファ(AFB)36はバンク構成を利用したキャッシュのためにフェッチされる可能性のある複数のフェッチアドレスを一つに結合するものであり、命令の各アドレスが入力される。
【0124】
トレースキャッシュではバンク単位で命令の結合を行う場合、各バンク42のラインには分岐命令は1つ存在する(taken)、又は全く存在しない(not taken)の2種類であるため、あるバンク42から分岐するバンク42は連続したもの、もしくは分岐先のターゲットとなる。このため、アドレス蓄積バッファ(AFB)36は、フェッチの際に4個のバンク42を同時に読出す場合は、図14に示す様に、バンク1からバンク8へ至るパス1からバンク1からバンク15へ至るパス8までの合計8つのパスが考えられる。
【0125】
各バンク42に分岐先のターゲットが存在する可能性があるため、アドレス蓄積バッファ(AFB)36内には、図15に示すように、7つのアドレスを格納できる。さらに、アドレス蓄積バッファ(AFB)36内の各アドレスには、有効ビットと、バンク42のライン内には分岐命令が存在しない場合も存在するので分岐命令が存在するか否かを示す分岐命令識別ビットも設ける。また、アドレス蓄積バッファ(AFB)36内には、どのパスの履歴が格納されているかを示すため8ビットのパス履歴保証ビットも設ける。
【0126】
次に、実行された命令のデータを格納するための命令蓄積バッファ(IFB)35における格納状況を図16に示す。4個のAの基本ブロック、3個のBの基本ブロック、6個のCの基本ブロックとの合計13個の命令が実行されたとする。この13個の命令は、4個のAの基本ブロック、3個のBの基本ブロック、6個のCの基本ブロックとの3個の「擬似的な基本ブロック」に分割され、ざらに、各「擬似的な基本ブロック」は、それぞれ4単位ブロックで構成されるバンク42のラインサイズに分割される。この状態で、4個の命令蓄積バッファ(IFB)35にそれぞれ格納される。
【0127】
次に、図16に示す命令列が実行された場合におけるアドレス蓄積バッファ(AFB)36に格納される各アドレスの状態を説明する。図17の上段に示すように、今回結合された命令列は、1つ目の分岐命令は分岐を行い(taken)、2つ目の分岐命令は分岐を行っていない(not taken)ため、太線で示すようなパスを実行している。バンク6からバンク12へは分岐命令は存在しないため、バンク6では分岐命令が存在しないために分岐命令が成立しないのと同様に、連続したバンクにアクセスされる。
【0128】
今回のパスが実行されたとき、実行結果によりアドレス蓄積バッファ(AFB)36内には、図18のようにアドレスが結合されている。実行されたパスは5なので、パス履歴情報ビットは5ビット目を1とし、そのパスは有効とする。
【0129】
実行されたパスではBの基本ブロックからCの基本ブロックヘは分岐不成立であるが、Bの基本ブロックの分岐命令は実行を行い分岐先アドレスは計算しているので、Bの基本ブロックの分岐命令が分岐が成立した場合のために分岐成立先のDのアドレスを格納する。
【0130】
実行されなかったバンクの分岐情報は不明なため、有効ビットは0とし、命令の発行を不可能としている。もしAの基本ブロックが分岐しないとした場合、Aから連続するバンクを読出すこととなり、この次のバンクの情報は不明なため、連続したアドレスを発行し、命令をフェッチする。このとき、アドレス蓄積バッファ(AFB)36の情報を保持しておき、実行終了した命令列を確認することで新たにこのアドレス蓄積バッファ(AFB)36に情報を加えることが可能となる。
【0131】
次に、図18に示す今の情報を保持した上でA、B、Dの基本ブロックが実行された場合のアドレス蓄積バッファ(AFB)36に対するアドレスの格納状態を図19に示す。この場合、図20に示すように、実行されたパスは7となるので、パス履歴情報ビットの7ビット目を1とする。
【0132】
この動作を繰り返すことにより命令のパスの履歴を蓄積、抽出することができる。よって、トレースを格納する場合、命令蓄積バッファ(IFB)35のトレースの命令データがキャッシュ(多ポートバンクメモリ43の各バンク42)に格納され、アドレス蓄積バッファ(AFB)36の各アドレスはタグディレクトリ39の対応する領域45にフェッチアドレスの集合46として格納される。
【0133】
一度実行されただけでは実行履歴と同じ命令列しか十分に命令発行することはできない。バンク構成を行わないトレースキャッシュでは物理的に命令列を履歴通りに連続して格納するため、パスが変わるたびに命令の格納が必要となる。しかし、実施形態の統合キャッシュ30のように、バンク構成を利用した場合、アドレス蓄積バッファ(AFB)が十分に情報を保持していれば、柔軟な命令発行が可能となる。
【0134】
このことを、実際にトレースフェッチアドレスを利用して連続したバンク42をフェッチする方法を用いて説明する。図20のように、パス5とパス7の履歴を持っている場合、その2つのパスについては十分な命令発行が可能となる。このパスが分岐予測に従い、次はパス1を実行するとした場合、Aの基本ブロックのみ発行し、次のサイクルでAから連続するアドレスのフェッチを行う。この場合、一時的に十分な命令発行ができないが、このパスが実行された後またアドレス蓄積バッファ(AFB)36を上書きすることで、次はパス1、5、7の場合は十分な命令発行を行うことができるようになる。
【0135】
(第4実施形態)
図21は本発明の第4実施形態に係わる多ポート命令・トレース統合キャッシュが組込まれた並列プロセッサの要部を示す模式図である。図9に示す第3実施形態の多ポート命令・トレース統合キャッシュが組込まれた並列プロセッサの要部と同一部分には同一符号を付して重複する部分の詳細説明は省略する。
【0136】
この第4実施形態においては、フェッチライン・アドレスキャッシュ(FLAC)51が設けられている。また、蓄積ユニット43のアドレス蓄積バッファ(AFB)36に蓄積された各アドレスは多ポート命令・トレース統合キャッシュ50(以下、統合キャッシュ50と略記する)ではなくて、フェッチライン・アドレスキャッシュ(FLAC)51へ送出される。
【0137】
フェッチライン・アドレスキャッシュ(FLAC)51は、並列プロセッサからフェッチアドレス38が入力すると、フェッチアドレス38と、アドレス蓄積バッファ(AFB)36から入力された複数のアドレスのうち、分岐予測部31の予測パスに基づいて選択された3つのフェッチアドレスとの合計4つのフェッチアドレスを統合キャッシュ50へ送出する。
【0138】
図23にフェッチライン・アドレスキャッシュ(FLAC)51と統合キャッシュ50との詳細構成を示す。フェッチライン・アドレスキャッシュ(FLAC)51内には、タグディレクトリ52とヒット判定回路53とフェッチアドレス選択部54とが設けられている。タグディレクトリ52のフェッチアドレス38のインデックスが指定する領域には、図24に示すように、タグ1、アドレス蓄積バッファ(AFB)36から入力された複数のアドレスからなるトレースフェッチアドレスの集合46が書込まれる。
【0139】
ヒット判定回路53がヒットすると、フェッチアドレス選択部54が分岐予測部31の予測パスに基づいてトレースフェッチアドレスの集合46から3つのフェッチアドレスを選択して統合キャッシュ50へ送出する。また、フェッチライン・アドレスキャッシュ(FLAC)51は入力されたフェッチアドレス38をそのまま統合キャッシュ50へ送出する。
【0140】
統合キャッシュ50内には、入力される4つフェッチアドレスにそれぞれ対応して4つのタグディレクトリ55が設けられている。各タグディレクトリ55におけるフェッチアドレスのインデックスが指定する領域には、有効(valid)ビット、トレースキャッシュからのデータであることを示すトレース(trace)ビット、タグ1、トレースキャッシュからのデータの場合に先頭アドレスであることを特定するためのタグ2が設けられている。
【0141】
ヒット判定回路40がヒットすると、該当フェッチアドレスのインデックス部分をフェッチアドレスとして多ポートメモリ43のバンクアクセス回路44へ送出する。バンクアクセス回路44は、入力された各フェッチアドレスが指定するバンク42内の各1単位ブロック分のデータ(命令データ)を読出して命令バッファ33へ出力する。
【0142】
このように構成された第4実施形態の統合キャッシュ50の特徴を説明する。
【0143】
第3実施形態の統合キャッシュ30においては、トレースフェッチアドレスが有効な所までをフェッチを行なっている。図22の命令蓄積バッファ(IBF)35に示すように、トレースフェッチアドレスはAの「疑似的な基本ブロック」が分岐成立し、Bの「疑似的な基本ブロック」が分岐は不成立で、Cの基本ブロックに続くパスの情報を保持しているとする。この場合、もしBの基本ブロックがDへ分岐すると予測した場合、トレースの内容が保証されているA、Bの基本ブロックしか命令フェッチを行なわなかった。しかし、Dの基本ブロックが命令キャッシュデータとして保持している可能性があるため、Dのアドレスも発行し、もしヒットすれば同時に命令発行を行なうことが望ましい。
【0144】
このため、第3実施形態の統合キャッシュ30に対してアドレスを1つしか発行していなかったが、第4実施形態の統合キャッシュ50に対して4つのアドレスを発行する。このため統キャッシュ50ではタグディレクトリ55を4つ多重化して持つ。また、フェッチライン・アドレッスキャッシュ(FLAC)51がそれら4つのフェッチのためのフェッチアドレスを生成する。
【0145】
この第4実施形態では、まずフェッチの先頭アドレスはフェッチライン・アドレッスキャッシュ(FLAC)51にアクセスされる。フェッチライン・アドレッスキャッシュ(FLAC)51でヒットした場合、フェッチライン・アドレッスキャッシュ(FLAC)51から対応する4つのアドレスを統合キャッシュ50に発行する。フェッチライン・アドレッスキャッシュ(FLAC)51から発行されるアドレスはフェッチされる可能性のあるアドレスの集合なので、分岐予測に従い、フェッチされるアドレスを選択する。先頭のアドレスはフェッチライン・アドレッスキャッシュ(FLAC)51にアクセスする時と同様のアドレスが入力される。
【0146】
すなわち、この第4実施形態においては、フェッチライン・アドレッスキャッシュ(FLAC)51にアクセスすることによりトレースを生成するアドレスを発行する。そして、分岐予測によりアドレス蓄積バッファ(AFB)36で実行されてないトレースの方向へ分岐すると予測した場合においても、そのアドレスを発行し、命令キャッシュとしてデータを持っていないかを確認することが可能となる。
【0147】
但し、統合キャッシュ50はタグの比較を4個のアドレスで行なわなくてはならないため、4個のタグディレクトリ55が設けられている。統合キャッシュ50ではこの4つのアドレスを受けとり、ヒット判定を行なう。もし、トレースフェッチアドレスとして保証されていない基本ブロックがヒットした場合は、その命令列も同時に命令フェッチを行なう。この方式により、1度の命令フェッチの際に、途中までがトレースデータで、途中からは初めて実行される命令キャッシュのデータという命令列を同時にフェッチすることが可能となる。
【0148】
(第5実施形態)
図25は本発明の第5実施形態に係わる多ポート命令・トレース統合キャッシュの要部を取出して示すブロック図である。図10に示す第3実施形態の多ポート命令・トレース統合キャッシュ30と同一部分には同一符号を付して重複する部分の詳細説明を省略する。
【0149】
この第5実施形態の多ポート命令・トレース統合キャッシュは、図10に示す第3実施形態の多ポート命令・トレース統合キャッシュ30におけるタグディレクトリ39を、命令用タグディレクトリ39aとトレース用タグディレクトリ39bとに分割している。
【0150】
そして、命令用タグディレクトリ39aにおけるフェッチアドレス38のインデックスに指定される各領域45には、この領域45が有効であることを示す有効(valid)ビット、及びタグ1が記憶されている。また、トレース用タグディレクトリ39bにおけるフェッチアドレス38のインデックスに指定される各領域45には、この領域45が有効であることを示す有効(valid)ビット、タグ1、タグ2、及びトレースフェッチアドレスの集合46が記憶されている。
【0151】
命令キャッシュヒット判定回路40aは、領域45における有効(valid)ビットが有効で、タグ1が一致すれば、命令キャッシュのデータがヒットする。一方、トレースキャッシュヒット判定回路40bは、領域45における有効(valid)ビットが有効で、タグ1、2が一致すれば、トレースキャッシュのデータがヒットする。命令キャッシュヒット判定回路40a及びトレースキャッシュヒット判定回路40bがヒットした場合におけるフェッチアドレス選択部41以降の動作は、図10に示す第3実施形態に係わる多ポート命令・トレース統合キャッシュ30とほぼ同じであるので説明を省略する。なお、同時にヒットした場合は、トレースキャッシュヒット判定回路40bのヒットが優先される。
【0152】
このように構成された第5実施形態の多ポート命令・トレース統合キャッシュにおいては、各タグディレクトリ39a、39bに、トレース識別ビットを設定する必要ない。したがって、各キャッシュヒット判定回路40a、40bの判定処理が簡素化される。
【0153】
なお、図25に示した第5実施形態の多ポート命令・トレース統合キャッシュにおいては、トレース用タグディレクトリ39bにおける各領域45にトレースフェッチアドレスの集合46が記憶さているが、このトレースフェッチアドレスの集合46を、トレース用タグディレクトリ39bでなくて、図12に示す第4実施形態の多ポート命令・トレース統合キャッシュと同様に、外部のフェッチライン・アドレスキャッシュ(FLAC)51に格納することが可能である。
【0154】
この場合、図12に示す第4実施形態の多ポート命令・トレース統合キャッシュと同様に、多ポート命令・トレース統合キャッシュ内に、複数の命令用タグディレクトリ39aと複数のトレース用タグディレクトリ39bと、各タグディレクトリ39a、39bに対応して、複数の命令キャッシュヒット判定回路40a及び複数のトレースキャッシュヒット判定回路40bが設けられている。
【0155】
(第6実施形態)
図26は本発明の第6実施形態に係わる多ポート命令・トレース・データ統合キャッシュの概略構成図である。図8に示す多ポート命令・データ統合キャッシュ10と同一部分には同一符号を付して重複する部分の詳細説明を省略する。
【0156】
この第6実施形態の多ポート命令・トレース・データ統合キャッシュ60(以降、統合キャッシュ60と略記する)は、従来の命令キャッシュとトレースキャッシュとデータキャッシュとの3つのキャッシュを統合した統合キャッシュである。
【0157】
この第6実施形態の統合キャッシュ60においては、I0〜I7の8個の命令ポート11(データ幅:64ビット)、この8個の命令ポートと重複するI0〜I7の8個のトレースポート11(データ幅:64ビット)、及びD0、D1の2個のデータポート11(データ幅:8ビット)が設けられている。
【0158】
各命令ポート、各トレースポートは、各バンク19のアドレスの下位2ビットでプリデコードされており、特定のバンク19にしかアクセスできない構造とし、同時には連続したアドレスヘのアクセスでは、必ずアクセス競合が起こらないような構成とする。さらに、連続しないアドレスヘのアクセスも、アドレスの下位2ビットが衝突しない限り可能である。一方、データポートは、命令ポート及びトレースポートより連続したアドレスヘのアクセスの確率は低いため、全てのバンク19にアクセスできる構造である。さらに、各バンク19には、各ポート11側の4個のポートをバンク19側に対する1個のポートに変換するポート数変換回路18が取付けられている。
【0159】
図8の統合キャッシュ10においては同時に4命令を読出し可能とした。
これに対して、この図26の統合キャッシュ60においては、この統合キャッシュ60を命令キャッシュとしてアクセスする場合、4つの命令のみなく、I0〜I7の8個の命令ポートを用いて、同時に8つの連続するバンク19にアクセスし、合計8個の連続する命令を読出すことが可能である。
【0160】
また、この統合キャッシュ60をトレースキャッシュとしてアクセスする場合、上述した他の実施形態と同じく、I0〜I7の8個のトレースポートを用いて、履歴を使用して対応するバンク19にアクセスして、命令列からなるトレースデータを読出す。この場合、完全に連続したバンク19でなくて、履歴によっては連続しないバンク19にアクセス可能である。
【0161】
また、この統合キャッシュ60をデータキャッシュとしてアクセスする場合、D0、D1の2個のデータポートを用いて各バンク19にアクセスして、データを読出す。
【0162】
このように、構成された第6実施形態の統合キャッシュ60においては、従来の命令キャッシュとトレースキャッシュとデータキャッシュとの3つのキャッシュを1つのキャッシュに統合できるので、キャッシュ全体としての必要とする記憶容量をさらに減少できる。
【0163】
(第7実施形態)
図27は本発明の第7実施形態に係わる多ポート命令・トレース・データ統合キャッシュ61の概略構成図である。図10に示す第3実施形態の多ポート命令・トレース統合キャッシュ30と同一部分には同一符号を付して重複する部分の詳細説明は省略する。
【0164】
この第7実施形態の多ポート命令・トレース・データ統合キャッシュ61(以下、統合キャッシュ61と省略する)においては、多ポートバンクメモリ43の各バンク42から各データを読出すバンクアクセス回路44の出力ポートとして、命令データ及びトレースデータを読出すための出力ポートの他に、命令ではない通常のデータ(ワード)を読出すための出力ポートが設けられている。
【0165】
そして、選択された4つのバンク42から通常のデータ(ワード)の出力ポートを介して読出された1ラインの4データ(4ワード)のうちプロセッサが必要とする1つのデータ(1ワード)を選択する選択回路62が組込まれている。
【0166】
すなわち、この第7実施形態の統合キャッシュ61においては、図10に示す第3実施形態の統合キャッシュ30における命令及びトレースの読出し機能をそのまま使用する。そして、命令の読出しの機能(アクセス機能)をそのままデータの読出し機能(アクセス機能)に使用する。
【0167】
第3実施形態の統合キャッシュ30における命令キャッシュのデータ幅は4命令であるので、この命令の読出しの機能(アクセス機能)に対してデータキャッシュとしてアクセスすると、4命令に対応する連続する4ワードが取出される。したがって、上述したように、選択回路62を用いて、プロセッサが必要とする1つのデータ(ワード)を選択する必要がある。
【0168】
命令キャッシュとしての1ラインの4データ(4ワード)のアドレスは、下位2ビットは必ず[00]から始まり、[01]、[10]、[11]へと続く。したがって、図28に示すようように、プロセッサが必要とする1つのデータとして、プロセッサから出力されフェッチアドレス38の下位2ビットの値と一致したデータを選択して、命令バッファ32へ送出する。
【0169】
なお、データキャッシュとしてこの統合キャッシュ61に対してアクセスを行った結果、トレースキャッシュとしてヒットした場合、データキャッシュとしてのデータが保証できないために、キャッシュミスと判定する。
【0170】
このように構成された第7実施形態の統合キャッシュ61においては、命令の読出しの機能(アクセス機能)をそのままデータの読出し機能(アクセス機能)に使用することによって、従来の命令キャッシュとトレースキャッシュとデータキャッシュとの3つのキャッシュを1つのキャッシュに統合できるので、キャッシュ全体としての必要とする記憶容量をさらに減少できる。
【0171】
なお、本発明は上述した各実施形態の統合キャッシュに限定されるものではない。各実施形態の統合キャッシュにおいては、統合キャッシュのバンクから1度に4個の命令又はデータを読出すように構成した。しかしながら、1度に読出す命令又はデータの数は4個に限定されるものではなくて、任意に設定することが可能である。
【0172】
【発明の効果】
以上説明したように、本発明の多ポート命令・データ統合キャッシュ、多ポート命令・トレース統合キャッシュ、及び多ポート命令・トレース・データ統合キャッシュにおいては、バンク構造を用い、各ポートに対するデータ幅及び容量を任意に設定でき、その結果、アクセスパターンの異なる命令やデータの情報を1つのキャッシュに統合でき、フラグメンテーションの発生を防止し、キャッシュの実効容量を増加させることができる。
【図面の簡単な説明】
【図1】本発明の第1実施形態の多ポート命令・データ統合キャッシュを並列プロセッサに接続した状態を示す模式図
【図2】同統合キャッシュの概略構成図
【図3】同統合キャッシュをHMA構造を用いて構成した場合の詳細構成図
【図4】本発明の第2実施形態の多ポート命令・データ統合キャッシュの概略構成図
【図5】同統合キャッシュをクロスバスイッチネットワーク構造を用いて構成した場合の詳細構成図
【図6】第1、第2の実施形態の統合キャッシュにおける容量とミス率との関係を示す図
【図7】第1、第2の実施形態の統合キャッシュにおけるバンク数と競合発生率との関係を示す図
【図8】第1の実施形態の統合キャッシュを実際の並列プロセッサに応用した状態を示す図
【図9】本発明の第3実施形態に係わる多ポート命令・トレース統合キャッシュが適用される並列プロセッサの要部を示す模式図
【図10】同統合キャッシュの概略構成図
【図11】同統合キャッシュのタグディレクトリ及びヒット判定回路の詳細構成図
【図12】同統合キャッシュの多ポートバンクメモリの詳細構成図
【図13】同統合キャッシュにおける各バンクに対するアドレス指定状態を示す図
【図14】同統合キャッシュにおける各バンクの分岐先を示す図
【図15】同統合キャッシュが組込まれた並列プロセッサのアドレス蓄積バッファの記憶内容を示す図
【図16】同統合キャッシュが組込まれた並列プロセッサの命令蓄積バッファの記憶内容を示す図
【図17】同統合キャッシュが組込まれた並列プロセッサにおける実行されるパスを示す図
【図18】同統合キャッシュが組込まれた並列プロセッサのアドレス蓄積バッファの記憶内容を示す図
【図19】同じく同統合キャッシュが組込まれた並列プロセッサのアドレス蓄積バッファの記憶内容を示す図
【図20】同統合キャッシュが組込まれた並列プロセッサの命令フェッチアドレスの発行状態を示す図
【図21】本発明の第4実施形態に係わる多ポート命令・トレース統合キャッシュが適用される並列プロセッサの要部を示す模式図
【図22】同統合キャッシュの効果を説明するための図
【図23】同統合キャッシュの概略構成図
【図24】同統合キャッシュのタグディレクトリ及びヒット判定回路の詳細構成図
【図25】本発明の第5実施形態に係わる多ポート命令・トレース統合キャッシュの概略構成図
【図26】本発明の第6実施形態に係わる多ポート命令・トレース・データ統合キャッシュの概略構成図
【図27】本発明の第7実施形態に係わる多ポート命令・トレース・データ統合キャッシュの概略構成図
【図28】同統合キャッシュの選択回路の動作を説明するための図
【図29】従来のキャッシュとプロセッサとの関係を示す図
【図30】従来のトレースキャッシュと命令キャッシュとの動作を示す図
【符号の説明】
10…多ポート命令・データ統合キャッシュ
11、14…ポート
12a〜12d…ポートユニット
13…並列プロセッサ
15a〜15d…アクセスポートユニット
18、18a…ポート数変換回路
19、19a、42…バンク
30、50…多ポート命令・トレース統合キャッシュ
31…分岐予測部
32…命令バッファ
33…命令実行部
34…蓄積ユニット
35…命令蓄積バッファ
36…アドレス命令蓄積バッファ
37…主記憶
38…フェッチアドレス
39、52、55…タグディレクトリ
39a…命令用タグディレクトリ
39b…トレース用タグディレクトリ
40…ヒット判定回路
41、54…フェッチアドレス選択部
43…多ポートバンクメモリ
44…バンクアクセス回路
47、40a…命令キャッシュヒット判定回路
48、40b…トレースキャッシュヒット判定回路
51…フェッチライン・アドレスキャッシュ
60、61…多ポート命令・トレース・データ統合キャッシュ

Claims (15)

  1. 1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、前記主記憶に記憶されている命令及びデータの一部を記憶する、複数のバンク及び複数のポートを有する多ポート命令・データ統合キャッシュであって、
    前記複数のポートは、前記並列プロセッサから命令をアクセスするための1個以上の命令ポートからなる命令ポートユニットと前記並列プロセッサからデータをアクセスするための1個以上のデータポートからなるデータポートユニットとを有し、
    前記命令ポートからバンクに対して指定できるデータ幅を、前記データポートからバンクに対して指定できるデータ幅より大きく設定するために、
    前記命令ポートから連続しない複数バンクにアクセス可能とし、前記データポートから全てのバンクにアクセス可能とし、かつ、前記各命令ポート毎に異なるデータ幅を設定可能とした
    ことを特徴とする多ポート命令・データ統合キャッシュ。
  2. HMA構造で構成されていることを特徴とする請求項1記載の多ポート命令・データ統合キャッシュ。
  3. クロスバスイッチネットワーク構造で構成されていることを特徴とする請求項1記載の多ポート命令・データ統合キャッシュ。
  4. 1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュであって、
    前記主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
    前記並列プロセッサが前記多ポートバンクメモリを命令キャッシュとしてアクセスしたとき、指定された命令データを前記多ポートバンクメモリから命令キャッシュの命令データとして読出す命令データ読出手段と、
    前記並列プロセッサが前記多ポートバンクメモリをトレースキャッシュとしてアクセスしたとき、指定された命令データを前記多ポートバンクメモリからトレースキャッシュのトレースデータとして読出すトレースデータ読出手段と
    を備えた多ポート命令・トレース統合キャッシュ。
  5. 1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュであって、
    前記主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
    前記並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令データがトレースキャッシュのデータか否かを示す識別ビット、前記フェッチアドレスにおける上位桁に設定されたタグ1、前記フェッチアドレスにおける下位桁に設定されたタグ2、及び前記多ポートバンクメモリの各バンクに記憶された命令データを指定する複数のアドレスが記憶されたタグディレクトリと、
    前記タグ1及び識別ビットに基づいて、アクセスする命令データが前記多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、
    前記タグ1、前記タグ2及び識別ビットに基づいて、アクセスする命令データ列が前記多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、
    前記トレースキャッシュヒット判定回路のヒット判定に応じて、前記タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して前記多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出しさせるフェッチアドレス選択部と
    を備えたことを特徴とする多ポート命令・トレース統合キャッシュ。
  6. 1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュであって、
    前記主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
    フェッチライン・アドレスキャッシュから前記並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令データがトレースキャッシュのデータか否かを示す識別ビット、前記フェッチアドレスにおける上位桁に設定されたタグ1、前記フェッチアドレスにおける下位桁に設定されたタグ2が記憶された複数のタグディレクトリと、
    前記タグディレクトリ毎に設けられ、前記タグ1及び識別ビットに基づいて、アクセスする命令データが前記多ポートバンクメモリに記憶されていると判定する複数の命令キャッシュヒット判定回路と、
    前記タグディレクトリ毎に設けられ、前記タグ1、前記タグ2及び識別ビットに基づいて、アクセスする命令データ列が前記多ポートバンクメモリに記憶されていると判定する複数のトレースキャッシュヒット判定回路と、
    前記各キャッシュヒット判定回路のヒット判定に応じて、対応するタグディレクトリに入力されている各フェッチアドレスを前記多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出すバンクアクセス回路と
    を備えたことを特徴とする多ポート命令・トレース統合キャッシュ。
  7. 1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュであって、
    前記主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
    前記並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、前記フェッチアドレスにおける上位桁に設定されたタグ1が記憶された命令用タグディレクトリと、
    前記並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、前記フェッチアドレスにおける上位桁に設定されたタグ1、前記フェッチアドレスにおける下位桁に設定されたタグ2、及び前記多ポートバンクメモリの各バンクに記憶された命令データを指定する複数のアドレスが記憶されたトレース用タグディレクトリと、
    前記タグ1に基づいて、アクセスする命令データが前記多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、
    前記タグ1、前記タグ2に基づいて、アクセスする命令データ列が前記多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、
    前記トレースキャッシュヒット判定回路のヒット判定に応じて、前記タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して前記多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出しさせるフェッチアドレス選択部と
    を備えたことを特徴とする多ポート命令・トレース統合キャッシュ。
  8. 1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとを統合した多ポート命令・トレース統合キャッシュであって、
    前記主記憶に記憶されている命令データの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
    フェッチライン・アドレスキャッシュから前記並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、前記フェッチアドレスにおける上位桁に設定されたタグ1が記憶された複数の命令用タグディレクトリと、
    前記フェッチライン・アドレスキャッシュから前記並列プロセッサのフェッチアドレスに基づく互いに異なるフェッチアドレスがそれぞれ入力され、この入力されたフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、前記フェッチアドレスにおける上位桁に設定されたタグ1、前記フェッチアドレスにおける下位桁に設定されたタグ2が記憶された複数のトレース用タグディレクトリと、
    前記タグディレクトリ毎に設けられ、前記タグ1に基づいて、アクセスする命令データが前記多ポートバンクメモリに記憶されていると判定する複数の命令キャッシュヒット判定回路と、
    前記タグディレクトリ毎に設けられ、前記タグ1及び前記タグ2に基づいて、アクセスする命令データ列が前記多ポートバンクメモリに記憶されていると判定する複数のトレースキャッシュヒット判定回路と、
    前記各キャッシュヒット判定回路のヒット判定に応じて、対応するタグディレクトリに入力されている各フェッチアドレスを前記多ポートバンクメモリへ送出して、各バンクの命令データを同時に読出すバンクアクセス回路と
    を備えたことを特徴とする多ポート命令・トレース統合キャッシュ。
  9. 前記タグディレクトリの各領域に記憶された複数のアドレスは、該当領域が前回ヒットしたとき実行された各命令のアドレスに基づいて更新されることを特徴とする請求項5又は7記載の多ポート命令・トレース統合キャッシュ。
  10. 前記タグディレクトリの各領域に記憶された複数のアドレスは、該当領域が前回ヒットしたとき実行された各命令のアドレス、及びこの各命令の次に分岐が可能な分岐先の命令のアドレスを含むことを特徴とする請求項9記載の多ポート命令・トレース統合キャッシュ。
  11. 前記フェッチアドレス選択部は、分岐予測部から入力された各命令の分岐予測に基づいて前記所定数のアドレスを選択することを特徴とする請求項9又は10記載の多ポート命令・トレース統合キャッシュ。
  12. 前記フェッチライン・アドレスキャッシュから出力される複数のフェッチアドレスは、このフェッチアドレスが前回ヒットしたとき実行された各命令のアドレスに基づいて更新されることを特徴とする請求項6又は8記載の多ポート命令・トレース統合キャッシュ。
  13. 前記フェッチライン・アドレスキャッシュから出力される複数のフェッチアドレスは、このフェッチアドレスが前回ヒットしたとき実行された各命令のアドレス、及びこの各命令の次に分岐が可能な分岐先の命令のアドレスを含むことを特徴とする請求項12記載の多ポート命令・トレース統合キャッシュ。
  14. 1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、前記主記憶に記憶されている命令、トレース及びデータの一部を記憶する、複数のバンク及び複数のポートを有する多ポート命令・トレース・データ統合キャッシュであって、
    前記複数のポートは、前記並列プロセッサから命令をアクセスするための1個以上の命令ポートからなる命令ポートユニットと前記並列プロセッサからトレースをアクセスするための1個以上のトレースポートからなるトレースポートユニットと前記並列プロセッサからデータをアクセスするための1個以上のデータポートからなるデータポートユニットとを有し、
    前記命令ポート及びトレースポートからバンクに対して指定できる各データ幅を、前記データポートからバンクに対して指定できるデータ幅より大きく設定した
    ことを特徴とする多ポート命令・トレース・データ統合キャッシュ。
  15. 1クロック周期で複数の処理を実行する並列プロセッサと主記憶との間に設けられ、命令キャッシュとトレースキャッシュとデータキャッシュとを統合した多ポート命令・トレース・データ統合キャッシュであって、
    前記主記憶に記憶されている命令及びデータの一部を記憶する複数のバンク及び複数のポートを有する多ポートバンクメモリと、
    前記並列プロセッサから出力されるフェッチアドレスにおける中位桁に設定されたインデックスに対応する領域に、アクセスする命令又はデータがトレースキャッシュのデータか否かを示す識別ビット、前記フェッチアドレスにおける上位桁に設定されたタグ1、前記フェッチアドレスにおける下位桁に設定されたタグ2、及び前記多ポートバンクメモリの各バンクに記憶された命令又はデータを指定する複数のアドレスが記憶されたタグディレクトリと、
    前記タグ1及び識別ビットに基づいて、アクセスする命令又はデータが前記多ポートバンクメモリに記憶されていると判定する命令キャッシュヒット判定回路と、
    前記タグ1、前記タグ2及び識別ビットに基づいて、アクセスする命令が前記多ポートバンクメモリに記憶されていると判定するトレースキャッシュヒット判定回路と、
    前記各キャッシュヒット判定回路のヒット判定に応じて、前記タグディレクトリの対応する領域に記憶された複数のアドレスのうちの所定数のアドレスを選択して前記多ポートバンクメモリへ送出して、各バンクの命令又はデータを同時に読出しさせるフェッチアドレス選択部と、
    前記多ポートバンクメモリから読出された複数のデータから前記並列プロセッサが必要とするデータを選択する選択回路と
    を備えたことを特徴とする多ポート命令・トレース・データ統合キャッシュ。
JP2002320037A 2002-11-01 2002-11-01 多ポート統合キャッシュ Expired - Lifetime JP3784766B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002320037A JP3784766B2 (ja) 2002-11-01 2002-11-01 多ポート統合キャッシュ
US10/687,460 US7360024B2 (en) 2002-11-01 2003-10-15 Multi-port integrated cache
US12/034,454 US7694077B2 (en) 2002-11-01 2008-02-20 Multi-port integrated cache

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002320037A JP3784766B2 (ja) 2002-11-01 2002-11-01 多ポート統合キャッシュ

Publications (2)

Publication Number Publication Date
JP2004157593A JP2004157593A (ja) 2004-06-03
JP3784766B2 true JP3784766B2 (ja) 2006-06-14

Family

ID=32171295

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002320037A Expired - Lifetime JP3784766B2 (ja) 2002-11-01 2002-11-01 多ポート統合キャッシュ

Country Status (2)

Country Link
US (2) US7360024B2 (ja)
JP (1) JP3784766B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977800B2 (en) 2011-02-25 2015-03-10 Samsung Electronics Co., Ltd. Multi-port cache memory apparatus and method

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437512B2 (en) * 2004-02-26 2008-10-14 Marvell International Ltd. Low power semi-trace instruction/trace hybrid cache with logic for indexing the trace cache under certain conditions
US7219185B2 (en) * 2004-04-22 2007-05-15 International Business Machines Corporation Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
WO2005109203A2 (en) * 2004-05-12 2005-11-17 Koninklijke Philips Electronics N.V. Data processing system with trace co-processor
US20080276046A1 (en) * 2005-06-09 2008-11-06 Nxp B.V. Architecture for a Multi-Port Cache Memory
US7676634B1 (en) 2005-09-28 2010-03-09 Sun Microsystems, Inc. Selective trace cache invalidation for self-modifying code via memory aging
US7849292B1 (en) 2005-09-28 2010-12-07 Oracle America, Inc. Flag optimization of a trace
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US8037285B1 (en) 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US7783863B1 (en) 2005-09-28 2010-08-24 Oracle America, Inc. Graceful degradation in a trace-based processor
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7953933B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US7966479B1 (en) * 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US8019944B1 (en) 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US7797517B1 (en) 2005-11-18 2010-09-14 Oracle America, Inc. Trace optimization via fusing operations of a target architecture operation set
JP2008009591A (ja) * 2006-06-28 2008-01-17 Matsushita Electric Ind Co Ltd キャッシュメモリシステム
US8010745B1 (en) 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US8005787B2 (en) * 2007-11-02 2011-08-23 Vmware, Inc. Data replication method
US7930483B2 (en) * 2008-03-04 2011-04-19 International Business Machines Corporation Associativity implementation in a system with directly attached processor memory
US7984240B2 (en) 2008-03-04 2011-07-19 International Business Machines Corporation Memory compression implementation in a system with directly attached processor memory
JP2009289307A (ja) * 2008-05-28 2009-12-10 Toshiba Corp 半導体記憶装置
JP2011138308A (ja) * 2009-12-28 2011-07-14 Sony Corp プロセッサ、コプロセッサ、情報処理システムおよびそれらにおける制御方法
KR101635395B1 (ko) * 2010-03-10 2016-07-01 삼성전자주식회사 멀티포트 데이터 캐시 장치 및 멀티포트 데이터 캐시 장치의 제어 방법
US8738962B2 (en) 2010-11-17 2014-05-27 International Business Machines Corporation Memory mirroring with memory compression
US9335947B2 (en) * 2014-06-30 2016-05-10 Raytheon Company Inter-processor memory
US10445240B2 (en) * 2014-08-01 2019-10-15 Analog Devices Global Unlimited Company Bus-based cache architecture
US10606599B2 (en) * 2016-12-09 2020-03-31 Advanced Micro Devices, Inc. Operation cache
US10970081B2 (en) 2017-06-29 2021-04-06 Advanced Micro Devices, Inc. Stream processor with decoupled crossbar for cross lane operations
CN109446127B (zh) * 2018-02-27 2020-03-24 上海安路信息科技有限公司 一种物理bram匹配方法
US10620958B1 (en) * 2018-12-03 2020-04-14 Advanced Micro Devices, Inc. Crossbar between clients and a cache
CN110096308B (zh) * 2019-04-24 2022-02-25 北京探境科技有限公司 一种并行存储运算装置及其方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4129614C2 (de) * 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
EP0477595A3 (en) 1990-09-26 1992-11-19 Siemens Aktiengesellschaft Cache memory device with m bus connections
US6029242A (en) * 1995-08-16 2000-02-22 Sharp Electronics Corporation Data processing system using a shared register bank and a plurality of processors
JPH11306084A (ja) * 1998-04-23 1999-11-05 Fujitsu Ltd 情報処理装置及び記憶媒体
US7171251B2 (en) * 2000-02-01 2007-01-30 Spo Medical Equipment Ltd. Physiological stress detector device and system
JP3498673B2 (ja) * 2000-04-05 2004-02-16 日本電気株式会社 記憶装置
JP2002055879A (ja) 2000-08-11 2002-02-20 Univ Hiroshima マルチポートキャッシュメモリ
JP2002091933A (ja) * 2000-09-20 2002-03-29 Hitachi Ltd プロセッサシステム
US6546461B1 (en) * 2000-11-22 2003-04-08 Integrated Device Technology, Inc. Multi-port cache memory devices and FIFO memory devices having multi-port cache memory devices therein
WO2003032021A2 (en) * 2001-10-09 2003-04-17 Infinera Corporation TRANSMITTER PHOTONIC INTEGRATED CIRCUITS (TxPIC) AND OPTICAL TRANSPORT NETWORKS EMPLOYING TxPICs
US7162288B2 (en) * 2004-02-25 2007-01-09 Nellcor Purtain Bennett Incorporated Techniques for detecting heart pulses and reducing power consumption in sensors
US7277741B2 (en) * 2004-03-09 2007-10-02 Nellcor Puritan Bennett Incorporated Pulse oximetry motion artifact rejection using near infrared absorption by water
US7747301B2 (en) * 2005-03-30 2010-06-29 Skyline Biomedical, Inc. Apparatus and method for non-invasive and minimally-invasive sensing of parameters relating to blood
US20060224053A1 (en) * 2005-03-30 2006-10-05 Skyline Biomedical, Inc. Apparatus and method for non-invasive and minimally-invasive sensing of venous oxygen saturation and pH levels
US20070093702A1 (en) * 2005-10-26 2007-04-26 Skyline Biomedical, Inc. Apparatus and method for non-invasive and minimally-invasive sensing of parameters relating to blood
US7460248B2 (en) * 2006-05-15 2008-12-02 Carestream Health, Inc. Tissue imaging system
DK2034893T3 (en) * 2006-05-30 2014-12-15 Univ Massachusetts Measurement of tissue oxygenation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977800B2 (en) 2011-02-25 2015-03-10 Samsung Electronics Co., Ltd. Multi-port cache memory apparatus and method

Also Published As

Publication number Publication date
US7360024B2 (en) 2008-04-15
US20080222360A1 (en) 2008-09-11
US20040088489A1 (en) 2004-05-06
JP2004157593A (ja) 2004-06-03
US7694077B2 (en) 2010-04-06

Similar Documents

Publication Publication Date Title
JP3784766B2 (ja) 多ポート統合キャッシュ
KR100988955B1 (ko) 멀티스레디드 프로세서에서 레지스터 파일 포트 감소를위한 방법 및 장치
US7793038B2 (en) System and method for programmable bank selection for banked memory subsystems
JP3412575B2 (ja) 命令履歴キャッシングを使用して推測的に命令を実行する回路、データ処理システム、およびそのための方法
KR100980536B1 (ko) 멀티스레디드 프로세서에서 스레드-방식 메모리 액세스를위한 방법 및 장치
US5680631A (en) Data processor with on-chip cache memory and purge controller responsive to external signal for controlling access to the cache memory
JPH10105459A (ja) 複数ポート・インターリーブ・キャッシュ
JPH08328958A (ja) 命令キャッシュ、キャッシュメモリ装置及びその方法
JP3593346B2 (ja) マルチポートメモリ及びそれをアクセスするデータ処理装置
KR100955433B1 (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
JPH03141443A (ja) データ格納方法及びマルチ・ウェイ・セット・アソシアチブ・キャッシュ記憶装置
JPS604493B2 (ja) マイクロプログラム化データ処理システム
US6606684B1 (en) Multi-tiered memory bank having different data buffer sizes with a programmable bank select
CN114297097B (zh) 一种众核可定义分布式共享存储结构
US6785770B2 (en) Data processing apparatus with a cache memory and method of using such an apparatus
EP0803818A2 (en) Single-cycle multi-accessible interleaved cache
US6553478B1 (en) Computer memory access
TWI636362B (zh) 高性能快取方法和裝置
US7080234B2 (en) VLIW computer processing architecture having the problem counter stored in a register file register
US7346746B2 (en) High performance architecture with shared memory
US20030188105A1 (en) Management of caches in a data processing apparatus
KR20040007343A (ko) 캐시 메모리 및 그 제어 방법
JP3540388B2 (ja) コンピュータシステム
JP3755661B2 (ja) Vliwプロセッサにおける命令キャッシュ制御システム及び命令キャッシュ制御方法
JPH0836525A (ja) 多重アクセスキャッシュ記憶装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060315

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100324

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100324

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110324

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130324

Year of fee payment: 7