JP5493954B2 - キャッシュシステム - Google Patents

キャッシュシステム Download PDF

Info

Publication number
JP5493954B2
JP5493954B2 JP2010027111A JP2010027111A JP5493954B2 JP 5493954 B2 JP5493954 B2 JP 5493954B2 JP 2010027111 A JP2010027111 A JP 2010027111A JP 2010027111 A JP2010027111 A JP 2010027111A JP 5493954 B2 JP5493954 B2 JP 5493954B2
Authority
JP
Japan
Prior art keywords
data
address
port
unit
unit data
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 - Fee Related
Application number
JP2010027111A
Other languages
English (en)
Other versions
JP2011164948A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010027111A priority Critical patent/JP5493954B2/ja
Priority to KR1020110006650A priority patent/KR101234183B1/ko
Priority to US13/012,985 priority patent/US8806102B2/en
Priority to EP11153588A priority patent/EP2354954A1/en
Priority to CN201110037745.1A priority patent/CN102156676B/zh
Publication of JP2011164948A publication Critical patent/JP2011164948A/ja
Application granted granted Critical
Publication of JP5493954B2 publication Critical patent/JP5493954B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F12/0851Cache with interleaved addressing
    • 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

Landscapes

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

Description

本発明は、演算に用いられるデータを記憶するキャッシュシステムに関する。
コンピュータシステムにおいては、一般に、主記憶とは別に小容量で高速なキャッシュメモリが設けられる。キャッシュメモリでは、キャッシュミスが発生した場合に主記憶にアクセスすることを抑制するために、キャッシュメモリを多階層化している。例えば、1次キャッシュと主記憶メモリとの間に、主記憶よりは高速にアクセスできる2次キャッシュを設けている。
従来より、主記憶メモリは、CPUとのデータ転送の高速化技術として、DDR2(Double Data Rate 2)と称される規格に従って動作していた。DDR2は、コンピュータ内の各回路間で同期を取る際に、クロック信号の立上がりと立下がりとの両方を利用する方式である。DDR2によれば、クロックの立ち上がりあるいは立下りの片方のみで各回路間の同期をとる場合と比べて、単位時間あたりの処理効率を2倍に高めることができる。DDR2規格におけるメモリアクセスの最小単位は64バイトである。これに応じて、キャッシュメモリに格納するデータサイズ(ラインサイズ)は、主記憶メモリに対するメモリアクセスの最小単位に合せて64バイトとしていた。
キャッシュメモリに関する技術は、例えば特許文献1に開示される。
特開2002−278836公報
ところで、近年、第3世代のDDRとして、DDR3と称される規格が用いられるようになった。DDR3は、DDR2と比較すると、主記憶メモリ外部と主記憶メモリ内部の周波数比が同じであっても、1サイクルに読み出す主記憶メモリ内部のデータ幅が2倍の128バイトになっている。このようなDDR3の性能を最大限に引き出すためには、DDR2の2倍のデータ幅で主記憶メモリにアクセスする必要がある。
上述したように、主記憶メモリへ128バイトでアクセスする場合、キャッシュメモリのラインサイズがDDR2と同様の64バイトのままであると、キャッシュコヒーレンシ制御が複雑化する。キャッシュコヒーレンシ制御とは、主記憶メモリの記録情報とキャッシュメモリの記録情報との同期を取るための処理である。このため、キャッシュシステムのラインサイズを、主記憶メモリへアクセスするバイト数と同じ128バイトに拡張することが考えらる。
しかし、キャッシュシステムのラインサイズを2倍に拡張にすると、キャッシュメモリへのデータの登録処理や、リプレースラインの書き戻し処理(ムーブアウト)に必要なサイクル数も2倍になってしまう。キャッシュへの登録やムーブアウトの処理回数が増加してしまうと、パイプライン処理に対するキャッシュメモリでの登録処理、ムーブアウト処理の支配率が増加してしまう。その結果、キャッシュメモリに対するデータの読み出し、書き込みをするためのパイプライン処理の頻度が低下してしまう。
本発明は、上述した実情に鑑みて提案されたものであり、キャッシュメモリのラインサイズが拡張された場合であっても、キャッシュメモリ内におけるデータの登録、書き戻しに要する処理時間を拡張前と同じとすることを目的とする。
キャッシュシステムは、演算ユニットと、当該演算ユニットとの間でデータの入出力をする一次キャッシュメモリと、当該一次キャッシュメモリとの間でデータを入出力する二次キャッシュメモリとを含む。
一次キャッシュメモリは、第1データサイズの単位データごとに与えられるアクセスアドレスに従って記憶をする記憶手段と、二つの単位データをそれぞれ第1および第2の入力ポートレジスタにより入力し、第1および第2の入力ポートレジスタを介してそれぞれ入力した二つの単位データをアクセスアドレスに従って記憶手段における連続領域に同時に書き込む書込手段と、書込手段により記憶手段の連続領域に同時に書き込まれた二つの単位データをそれぞれ第1および第2の出力ポートレジスタに読み出して出力する出力手段とを有する多ポート記憶部を複数有する。一次キャッシュメモリは、さらに、第1データサイズに対して任意倍数の第2データサイズを有する対象データを複数の多ポート記憶部の記憶手段に書き込みかつ読み込むためのアクセスアドレスを生成するアドレス生成手段と、アドレス生成手段により生成されたアドレスを変換するアドレス変換手段とを有する。
上述の課題を解決するために、キャッシュシステムは、第1データサイズに対して任意倍数の第2データサイズを有する対象データを単位データの列に分割して一次キャッシュメモリに書き込み動作するときに、対象データを単位データの列に連続的に分割して対象単位データ列とし、アドレス生成手段およびアドレス変換手段により与えられたアクセスアドレスに従って、複数の多ポート記憶部のうちの第1の多ポート記憶部の第1および第2の入力ポートレジスタに、対象単位データ列に含まれる第1および第2の単位データをそれぞれ時間連続的に書き込む第1書き込み動作と、アドレス生成手段およびアドレス変換手段により与えられたアクセスアドレスに従って、複数の多ポート記憶部のうちの第2の多ポート記憶部の第1および第2の入力ポートレジスタに、対象単位データ列の中で第1または第2の単位データに連続する第3および第4の単位データをそれぞれ時間連続的に書き込む第2書き込み動作とを並行して行うことにより、対象単位データ列に含まれる第1ないし第4の単位データを第1及び第2の多ポート記憶部に分散して同時に記憶する。
また、対象単位データを一次キャッシュメモリから読み出し動作するときに、アドレス生成手段およびアドレス変換手段により与えられたアクセスアドレスに従って、第1の多ポート記憶部の第1および第2の出力ポートレジスタに第1および第2の単位データを読み出す第1読み出し動作と、第2の多ポート記憶部の第1および第2の出力ポートレジスタに第3および第4の単位データを読み出す第2読み出し動作とを並行して行うことにより、対象単位データ列に含まれる第1ないし第4の単位データを第1および第2の多ポート記憶部から同時に読み出す。
上記の手段を含むキャッシュシステムによれば、複数の多ポート記憶部により、複数のレジスタによって第1データサイズのデータを同時に入力することにより記憶手段における連続領域に書き込む。これにより、上記手段を含むキャッシュシステムによれば、2次キャッシュと1次キャッシュの間のデータバス幅は変えないで、1次キャッシュのラインサイズが64バイトから128バイトに拡張された場合においても1次キャッシュの登録(および掃きだし)に要する処理時間、言い換えるとキャッシュ占有率を同じにすることができる。
本発明の実施形態によるCPUの概略構成を示すブロック図である。 本発明の実施形態によるCPUの機能的な構成を示すブロック図である。 本発明の実施形態による一次データキャッシュメモリのブロック配置を示す図であり、(A)はウエイ(0)のデータ配置、(B)はウエイ(1)のデータ配置、(C)はブロックに対するアドレス、を示す。 本発明の実施形態による一次データキャッシュメモリにおけるウエイ構成を示す図である。 本発明の実施形態による一次データキャッシュメモリに含まれる2ポートRAMの構成を示す回路図である。 本発明の実施形態による一次データキャッシュメモリに対して128バイトデータを書き込むときのタイミングチャートを示すであり、上段は比較例の動作、下段は本実施形態の動作を示す。 本発明の実施形態による一次データキャッシュメモリに対するデータの書込動作を示すブロック図である。 本発明の実施形態による一次データキャッシュメモリからデータを読み出す動作を示すブロック図である。 比較例として示す一次データキャッシュメモリに対するデータの書込動作を示すブロック図である。 本発明の実施形態による一次データキャッシュメモリからデータを読み出す時に当該一次データキャッシュメモリにアドレスを与える様子を示すブロック図である。 生成されたアドレスの変換を説明する図である。 2ポートRAMごとに、供給されるアドレスとブロックとの関係を示す図である。 生成されたアドレス及び変換されたアドレスによって各2ポートRAMに対する読み出し動作を示す図である。 生成されたアドレス及び変換されたアドレスによって各2ポートRAMに対する読み出し動作を示す他の図である。 生成されたアドレス及び変換されたアドレスによって各2ポートRAMに対する読み出し動作を示す他の図である。 複数の2ポートRAMから演算・命令ユニットに16バイトデータを供給する構成を示す回路図である。 複数の2ポートRAMから演算・命令ユニットに16バイトデータを供給する他の構成を示す回路図である。
以下、本発明の実施の形態について図面を参照して説明する。
本発明の実施形態として示すキャッシュシステムは、例えば図1に示すような計算機の中央処理装置(CPU(Central Processing Unit))1(以下、「CPU」と呼ぶ。)に含まれる。CPU1は、命令ユニット(IU)2と、演算ユニット(EU)3と、一次データキャッシュメモリ(L1D$)4と、一次命令キャ ッシュメモリ(L1I$)5と、二次キャッシュメモリ(L2$)6とを含む。
図1に示す構成のうち、キャッシュシステムは、一次データキャッシュメモリ4と、一次命令キャッシュメモリ5と、二次キャッシュメモリ6とを含む。キャッシュシステムは、図1には図示しない主記憶メモリが記憶するデータの一部を、一次データキャッシュメモリ4及び二次キャッシュメモリ6にコピーする。このようなデータコピーにより、いずれかのキャッシュメモリにデータが記憶されている場合、キャッシュシステムは、データをアクセスする場合には、主記憶メモリからではなくキャッシュメモリからデータを読み出すことで、高速な情報の読み出しを可能とする。
なお、図1には、1つの1次キャッシュと1つの2次キャッシュとがCPUに設けられた構成を例として示すが、キャッシュの階層の数及び各階層でのキャッシュの数は図1に示す例に限定されるものではない。
一次データキャッシュメモリ4及び二次キャッシュメモリ6は、主記憶メモリのコピーを持つ機能を有する。CPU1内では、演算ユニット3と一次データキャッシュメモリ4との間でデータを入出力する。
二次キャッシュメモリ6は、一次データキャッシュメモリ4との間でデータの入出力を行うと共に、主記憶メモリとの間でデータの入出力を行う。二次キャッシュメモリ6は、一次データキャッシュメモリ4に書き込むべきデータを主記憶から読み出して、一次データキャッシュメモリ4に格納させる。
このような一次データキャッシュメモリ4及び二次キャッシュメモリ6は、基本的に主記憶メモリと同じデータを持ち、演算によりデータが書きかえられる場合(ストア)には主記憶メモリへのデータの書き戻しを行う。命令・データは、主記憶メモリ、二次キャッシュメモリ6、一次データキャッシュメモリ4、命令ユニット2及び演算ユニット3の順で流れ、ストアによりデータが書き換えられた場合にライトバックと呼ばれる主記憶への書き戻しが行なわれる。
以下、簡単な1次キャッシュの役割を説明する。一次データキャッシュメモリ4は、主記憶メモリから読み出した処理すべき命令を一時的に格納するものである。主記憶メモリから一次命令キャッシュメモリ5に格納された命令は命令ユニット2に送られてデコードされ、演算ユニット1にて処理される。
一次データキャッシュメモリ4は、主記憶メモリから演算処理データの読み書きを実行するために読み出したデータを一時的に格納するものである。一次データキャッシュメモリ4に格納されたデータは演算ユニット1にロードされる。演算ユニット1は、ロードされたデータを用いて演算処理を行ない、演算結果となるデータを主記憶メモリに反映させる(ライトバック)。
図1のCPU1は、主記憶メモリとの間で決まったデータサイズ単位でデータを入出力する。例えば、主記憶メモリ内部の1サイクルに読み出すデータ幅は、128バイトになっている。このデータサイズは、1サイクルで読み出されるデータ幅に対応した大きさである。1サイクルに読み出すデータ幅は、本実施形態ではいわゆるDDR3規格に準拠したものである。なお、以下の説明では、CPU1が主記憶メモリとの間で128バイト単位でデータを入れ替える例について説明する。しかし、これ以外のデータ幅であっても、以下に説明するキャッシュシステムの動作は適用可能である。
図1のPU1は、例えば図2に示すように、各部間で転送されるデータ幅が設定されている。命令ユニット2と演算ユニット3とを含む演算・命令ユニット(EU/IU)11は、一次データキャッシュメモリ4との間で、16バイトのデータ幅でデータのストア、ロードを行なう。
また、二次キャッシュメモリ6から一次データキャッシュメモリ4にデータを転送する転送バス幅は32バイトである。そのため、二次キャッシュメモリ6から一次データキャッシュメモリ4にデータが書き込まれる場合(ムーブイン)には、書き込みデータ(ムーブインデータ)は、32バイト単位で二次キャッシュメモリ6から読み出される。
二次キャッシュメモリ6から読み出されたムーブインデータは、ECCチェック/訂正/パリティ生成部12に供給される。ECCチェック/訂正/パリティ生成部12は、二次キャッシュメモリ6から供給されたムーブインデータに対するエラー訂正コード(ECC:(Error Correction Codes))の検査を行い、ムーブインデータに対するパリティを生成する。ECCチェック/訂正/パリティ生成部12によりパリティが生成されたムーブインデータは、一時的にムーブインデータレジスタ(MIDR(Move In Data Register))13に格納される。
ムーブインデータレジスタ13に格納されたムーブインデータは、一次データキャッシュメモリ4に格納される。図2では、ムーブインデータレジスタ13に格納されたムーブインデータは、32バイトの転送バス幅で一次データキャッシュメモリ4に転送され、一次データキャッシュメモリ4に書き込まれる。
同様に、一次データキャッシュメモリ4に格納されたデータを二次キャッシュメモリ6に退避させる場合、言い換えれば一次データキャッシュメモリ4から二次キャッシュメモリ6にデータが書き込まれる)場合(ムーブアウトには、書き込みデータであるムーブアウトデータは、32バイトの転送バス幅で一次データキャッシュメモリ4から読み出される。
一次データキャッシュメモリ4から読み出されたムーブアウトデータは、ECCチェック/訂正部14に供給される。ECCチェック/訂正部14は、一次データキャッシュメモリ4から二次キャッシュメモリ6へ送られるムーブアウトデータに対するECCのチェックを行う。ムーブアウトデータは、エラーチェック及び訂正の処理が施された後、ムーブアウトデータレジスタ(MODR(Move Out Data Register))15に一時的に格納される。
ムーブアウトデータレジスタ15に格納されたムーブアウトデータは、二次キャッシュメモリ6により読み込まれ、二次キャッシュメモリ6に格納される。ムーブアウトデータレジスタ15と二次キャッシュメモリ6との間の転送バス幅は16バイトなので、ムーブアウトデータレジスタ15からのムーブアウトデータは、16バイト単位で二次キャッシュメモリ6に転送され書き込まれる。
このように、二次キャッシュメモリ6と一次データキャッシュメモリ4の間で転送されるデータはECCで保護されており、また一次データキャッシュメモリ4に格納されているデータはパリティによって保護されている。
このような動作をするCPU1において、一次データキャッシュメモリ4は、例えば、ラインサイズが128バイトであり、2ウエイのセットアソシアティブ方式を採用したものである。セットアソシアティブ方式は、複数のワード(データ)を1ブロックとして管理するものである。また、一次データキャッシュメモリ4のラインサイズは、128バイトである。
一次データキャッシュメモリ4におけるラインサイズは、上述したように、CPU1が主記憶メモリへ128バイトでアクセスすることに合わせて、128バイトに設定されている。すなわち、CPU1と主記憶メモリとの間におけるキャッシュコヒーレンシ制御が複雑化することを回避するために、一次データキャッシュメモリ4のラインサイズは、CPU1と主記憶メモリとの間のデータ幅と同じ128バイトとされている。そして、一次データキャッシュメモリ4は、後述する多ポートRAM(Random Access Memory)により128バイトのデータを入力し、多ポートRAMのポートから入力した128バイトのデータを所定の単位データ(例えば8バイトデータ)ごとに、一次データキャッシュメモリ4の連続領域に書き込む。
なお、以下の説明では、一次データキャッシュメモリ4が複数の2ポートRAMを有する場合について説明する。2ポートRAMは、データ書込みを1つのポートで行い、データ読み出すを2個のポートで同時に行なうことを可能とする1W2R−RAMである。
本実施形態の一次データキャッシュメモリ4を図3に示す。図3(A)はウエイ(0)のデータ配置、図3(B)はウエイ(1)のデータ配置、図3(C)はアドレス構成を示す。
図3において、RAM(0)、RAM(1)、RAM(2)、RAM(3)はそれぞれ2ポートRAMである。図3のデータ配置では、4個のブロックごとに、ウエイをRAM(0)とRAM(1)の組とRAM(2)とRAM(3)との組との間で交互に配置する構成とする。
図3(A)は、ウェイ(0)のデータ配置を示す。ウェイ(0)のブロック00〜ブロック03は、RAM(0)とRAM(1)とに割り付けられる。一方、ウェイ(0)のブロック04〜ブロック07は、RAM(2)とRAM(3)とに割り付けられる。
図3(B)は、ウェイ(1)のデータは位置を示す。ウェイ(0)の場合とは異なり、ウェイ(1)のブロック00〜ブロック03はRAM(2)とRAM(3)とに割り付けられ、ウェイ(1)のブロック04〜ブロック07はRAM(0)とRAM(1)とに割り付けられる。
そして、このような一次データキャッシュメモリ4におけるウエイ構成は、図4に示すように、各ウエイ(0)、ウェイ(1)における偶数番号(evn)又は奇数番号(odd)のブロックごとにインデックスアドレス(0〜n)が付加される。図4は、図3に示した2ポートRAM(0)、2ポートRAM(1)、2ポートRAM(2)、2ポートRAM(3)のそれぞれに対応するインデックスアドレスを示している。図4において、「W0/W1」はウェイ番号を示す。また「evn/odd」はブロック番号の偶数/奇数を示している。
このように構成された一次データキャッシュメモリ4は、隣接する2ポートRAM間、つまりRAM(0)とRAM(1)との間、およびRAM(2)とRAM(3)との間において連続したブロック番号となっている。これにより、例えば、図3に示すブロック配置において、ある2ポートRAMからあるウェイのブロック00,02を読み出し、同時に他の2ポートRAMから当該ウェイのブロック01,03を読み出すことができる。
上述した一次データキャッシュメモリ4に含まれる2ポートRAMは、例えば図5に示すような構成である。図5の2ポートRAM20は、一次データキャッシュメモリ4への書込データ(ムーブインデータ)が入力ポートから供給される第1入力ポートレジスタ21a及び第2入力ポートレジスタ21bと、記憶部22と、第1出力ポートレジスタ23a及び第2出力ポートレジスタ23bとを有する。キャッシュの登録処理を従来と同じ回数にするために、図5に示す2ポートRAM20は16バイト-write機能を持ったRAMとなっている。
図5の2ポートRAM20では、第1入力ポートレジスタ21a及び第2入力ポートレジスタ21bは、8バイトの単位データごとにデータを入力して保持する。そして、2つの入力ポートレジスタ21a、21bが保持する計16バイトデータを同時に入力ポートレジスタ21a、21bから出力して、記憶部22にライトする。一方、図5の2ポートRAM20は、キャッシュのムーブアウト時に記憶部22が保持する16バイトデータを読み出して、2つの出力ポート23a、23bを利用して出力データとして出力する。これにより、例えば、16バイトのロード命令(SIMD)を2命令同時に効率よく処理できる。
これら複数の入力ポートレジスタ21a,21bには、他の2ポートRAM20の入力ポートレジスタと共に、CPU1と主記憶メモリとの間で入出力されるデータサイズのデータ(128バイトデータ)が入力する。そして、入力ポートレジスタ21a,21bは、図4における各ブロックに対応した単位データを、複数個、同時に記憶部22の連続領域に書き込む。このような2ポートRAM20は、一次データキャッシュメモリ4に4個含まれている。各2ポートRAM20は、記憶部22、複数の入力ポートレジスタ21a,21b、複数の出力ポートを含む多ポート記憶部として機能する。
図5の2ポートRAM20は、8バイトのムーブインデータが連続して供給されると、最初の8バイトのムーブインデータを入力ポートレジスタ21aに格納し、次の8バイトのムーブインデータを入力ポートレジスタ21bに格納する。そして、第1入力ポートレジスタ21a及び第2入力ポートレジスタ21bに合計16バイトのムーブインデータが書き込まれると、第1入力ポートレジスタ21a及び第2入力ポートレジスタ21bは、書き込まれた計16バイトのムーブインデータを同時に、記憶部22の連続領域22a、22bに書き込む。このとき、記憶部22には、ムーブインデータを書き込む記憶部22の連続領域22a、22bを示すアドレス情報が供給される。
すなわち、2ポートRAM20は、2つの入力ポートレジスタ21a,21bに対応してアドレスを2つ入れると、入力ポートレジスタ21a,21bのデータを同時に読むことができる。なお、書き込み動作と読み出し動作の同時実行は不可である。入力ポートレジスタ21a,21bから記憶部22への書き込みは、通常8バイト単位で同時にライトできるが、RAM内蔵ラッチに書き込み用のレジスタをさらに8バイト拡張レジスタとしての入力ポートレジスタ21a,21bを用意して、記憶部22における連続領域の16バイト領域に対して書き込み動作可能である。このような入力ポートレジスタ21a,21bからなる拡張レジスタの登録時においては、通常のRAM−RD動作が可能である。
記憶部22に格納されたデータを読み出す場合、2ポートRAM20には、読み出しアドレスが供給される。2ポートRAM20は、先行して供給されたアドレス情報に基づいて、8バイトのムーブアウトデータを記憶部22から第1出力ポートレジスタ23aに読み出し、次に供給されたアドレス情報に基づいて、先行して読み出されたムーブアウトデータに連続する8バイトのムーブインデータを、記憶部22から第2出力ポートレジスタ23bに読み出す。第1出力ポートレジスタ23a及び第2出力ポートレジスタ23bのそれぞれに8バイト、合計16バイトのムーブアウトデータが書き込まれると、第1出力ポートレジスタ23a及び第2出力ポートレジスタ23bは8バイトづつ、協働して16バイトのムーブアウトデータを出力する。
図5に示す2ポートRAM20は、一次データキャッシュメモリ4に4個含まれる。CPU1と主記憶メモリとの間で送受信される128バイトのムーブインデータを一次データキャッシュメモリ4に登録する場合、一次データキャッシュメモリ4は図6の下段に示す動作をする。
図6の3サイクル目において、4個の2ポートRAM20のそれぞれの入力ポートに、先ず最初のムーブインデータMIRD(合計32バイト)が供給される。、当該ムーブインデータは、図6の4サイクル目で各2ポートRAM20の入力ポートレジスタ21aに書き込まれる。この状態において、各2ポートRAM20は、ムーブインデータがリード可能(RD可能)な状態にある。
次に、図6の4サイクル目で次のムーブインデータMIDR(合計32バイト)が4個の2ポートRAM20のそれぞれの入力ポートに供給されると、図6の5サイクル目で各入力ポートレジスタ21bに当該ムーブインデータを書き込む。この状態となると、各2ポートRAM20は、入力ポートレジスタ21a,21bに格納された合計64バイトのムーブインデータを記憶部22にライト可能(wt)な状態となる。
このようなムーブインデータの書き込み動作を2回行うと(3サイクル目〜5サイクル目と、6サイクル目〜8サイクル目)、一次データキャッシュメモリ4は、合計で128バイトのムーブインデータを書き込むことができる。本実施形態では、ムーブインデータの書き込みは計6サイクルで完了する。
一方、比較例では、32バイトのムーブインデータの入力から書き込みまでは2サイクル要する。後続する32バイトのムーブインデータ入力は、先行する32バイトムーブインデータの書き込みが完了してから行われるため、比較例では128バイトのムーブインデータ書込みまで計8サイクルを要する。
一次データキャッシュメモリ4に128バイトのムーブインデータを書き込む場合、二次キャッシュメモリ6との間の転送バス幅が32バイトとなっているので、ムーブインデータレジスタ13には、1回の書き込み動作によって、32バイト×2のムーブインデータが2回に亘って書き込まれる。このとき、1回目の書き込み動作では、先行する64バイトのムーブインデータを書き込み、2回目の書き込み動作では、後続の64バイトのムーブインデータを書き込む。
ここで、ムーブインデータレジスタ13から一次データキャッシュメモリ4にムーブインデータを書き込む転送バス幅も、32バイトとなっている。そして、4個の2ポートRAM20に対してムーブインデータを格納する命令を与えると、4個の2ポートRAM20は、第1入力ポートレジスタ21a及び第2入力ポートレジスタ21bにそれぞれ8バイトデータの計16バイトデータを格納する。これにより、4個の2ポートRAM20の入力ポートレジスタには、合計で64バイトのムーブインデータが格納される。
4個の2ポートRAM20は、書込命令に従って、各々16バイト、同時に64バイトのムーブインデータを、それぞれの記憶部22に書き込む。このような同時に64バイトのムーブインデータを書き込む動作は、後続する64バイトのムーブインデータに対してもう1回行われる。これにより、一次データキャッシュメモリ4には、128バイトのデータが書き込まれる。
図7は、本実施形態による一次キャッシュへのデータ登録を示す。図7において、ブロック00〜ブロック07の各ブロックのサイズは8バイトであり、8個のブロックの合計は64バイトとなる。128バイトのデータを一次キャッシュに登録する場合には、64バイトデータの登録動作を合計2回実行する。
図7の一次データキャッシュメモリ4が4個の2ポートRAM(0)〜(3)を含む場合、図7に示すように、1回目の書込動作、によって、2ポートRAM(0)のブロック00,02に計16バイトのムーブインデータを書き込む。これと同時に、2ポートRAM(2)のブロック04,06に計16バイトのムーブインデータを書き込む。また、2ポートRAM(1)のブロック01,03に計16バイトのムーブインデータを書き込むと同時に、2ポートRAM(3)のブロック05,07に計16バイトのムーブインデータを書き込む。これにより、合計で64バイトのムーブインデータを一次キャッシュに書き込む。
同様に、図示は省略されているが、後続する64バイトのムーブインデータに対応する2回目の書込動作によって、2ポートRAM(0)―(3)にそれぞれ計16バイト(合計64バイト)のムーブインデータを書き込む。このような2回の書込動作により、合計で128バイトのムーブインデータを1次キャッシュに書き込む。
このように、一次データキャッシュメモリ4は、2回の書込動作だけで、128バイトデータを書き込むことができる。すなわち、2次キャッシュと1次キャッシュの間のデータバス幅は変えないで、1次キャッシュのラインサイズが64バイトから128バイトに拡張された場合においても1次キャッシュの登録(および掃きだし)に要する処理回数(キャッシュ占有率)を同じにすることができる。
一次データキャッシュメモリ4に書き込まれたデータを読み出して二次キャッシュメモリ6にムーブアウトする時には、2ポートRAM20の第1出力ポートレジスタ23a及び第2出力ポートレジスタ23bを用いる。
図8は一次キャッシュからのデータ書き戻し、つまりムーブアウトの動作を説明する図面である。図8に示すように、1回目のムーブアウトデータの読み出し動作によって、2ポートRAM(0)のブロック00,02から計16バイトのムーブアウトデータを読み出すと同時に、2ポートRAM(2)のブロック04,06から計16バイトのムーブアウトデータを読み出す。これによって、計32バイトのムーブアウトデータが2ポートRAMから読み出される。そして、次の読み出し動作によって、2ポートRAM(1)のブロック01,03から計16バイトのムーブアウトデータを読み出すと同時に、2ポートRAM(3)のブロック07,05から計16バイトムーブアウトデータを読み出す。この2回の読み出し動作により、合計で64バイトのムーブアウトデータを読み出す。
同様に、2回目の読み出し動作によって、2ポートRAM(0)のブロック00,02から計16バイトのムーブアウトデータを読み出すと同時に2ポートRAM(2)のブロック04,06から計16バイトのムーブアウトデータを読み出す。そして、次の2回目の読み出し動作によって、2ポートRAM(1)のブロック01,03から16バイトのムーブアウトデータを読み出すと同時に2ポートRAM(3)のブロック07,05から16バイトのムーブアウトデータを読み出す。このような2回の読みだし動作により、合計で128バイトのムーブアウトデータを読み出す。
ここで、4個の2ポートRAM20ら読み出された合計32バイトの4個のデータは、一旦、それぞれの2ポートRAM20の第1出力ポートレジスタ23aに格納され、次の32バイト分の4個のデータは、それぞれの2ポートRAM20の第2出力ポートレジスタ23bに格納される。これらの出力ポートレジスタに格納された32バイトづつのデータは、ムーブアウトデータとして2回に亘りムーブアウトデータレジスタ15に読みだされる。このムーブアウトデータの読み出し動作は2回に亘り行われることで、合計で128バイトのムーブインデータをムーブアウトデータレジスタ15に供給する。
一方、比較例として、ラインサイズが64バイト、32バイトづつデータの書込動作を行う一次データキャッシュメモリの動作を図6の上段と図9に示す。比較例の一次データキャッシュメモリは、128バイトのデータを書き込む場合、ムーブインデータレジスタに32バイトのムーブインデータを書き込む。そして、32バイトのムーブインデータを合計4回に亘って一次データキャッシュメモリに書き込む。
図6上段の比較例では、128バイトのキャッシュラインを一次キャッシュに登録するには、ムーブインリクエストを4回発行して、キャッシュにムーブインデータを登録することになり、ムーブインリクエストのパイプ占有率が実施形態の場合と比較して2倍になってしまう。そこで、2ポートRAM20に対して、連続領域(2 index)への同時書き込み機能(16バイトのライト機能)を設けて、図6下段の本実施形態のように、1回のムーブインリクエストで2ポートRAM20を4個使用して、64バイトのデータが書き込めるようにする。これにより、比較例では、ムーブインリクエストを4回発行しなければならず、一方、本実施形態では計2回のムーブインリクエスト発行のみによって、128バイトのキャッシュラインを登録することが可能となる。
また、本実施形態では、ムーブアウトリクエスト時、図8に示すように、二次キャッシュメモリ6から64バイトのデータ(つまりラインサイズの半分)を読み出す。読み出されたデータは一度出力ポートレジスタに登録しておき、32バイトづつ4回でムーブアウトレジスタ15に送られる。キャッシュのアクセスは、64バイトの2回アクセスであり、パイプラインに占めるムーブアウトリクエストは図9の比較例と変わらない。
以上のキャッシュシステムによれば、2次キャッシュと1次キャッシュの間のデータバス幅は変えないで、1次キャッシュのラインサイズが64バイト128バイトに拡張された場合においても1次キャッシュの登録および掃きだしに要する処理回数(キャッシュ占有率)を同じにすることができる。すなわち、転送バス幅を変えずに1次キャッシュの登録・掃きだしの処理(キャッシュ占有率)を維持し、一次データキャッシュメモリ4に128バイトのデータを書き込むことができる。したがって、本実施形態のキャッシュシステムによれば、CPU1と主記憶メモリとの間のデータ幅を大きくしても、当該データ幅にラインサイズを合わせ、複数の2ポートRAM20によってデータの書込、読み出しを行うことができる。
つぎに、CPU1において、一次データキャッシュメモリ4に対して、データサイズを一単位としてデータの書込及び読み出しを行うものについて説明する。なお、以下の説明においては、演算・命令ユニット11にロードされる命令としてSIMD(Single Instruction/Multiple Data)命令に従って、データサイズを一単位としたデータを書込及び読み出しする例について説明する。
SIMD命令を用いると、CPU1により、1回のSIMD命令によって複数データに対する処理を同時に行う。例えば、1つのSIMD命令が発生すると、一次データキャッシュメモリ4には、連続した16バイトデータの書込、読み出しが行われる。ここで、16バイトを「データサイズ」と考える。
SIMD命令に従って行われる16バイトデータの一次データキャッシュメモリ4に対する書込は、2ポートRAM20の連続領域に対して行われる。このとき、一次データキャッシュメモリ4に含まれる各2ポートRAM20は、第1入力ポートレジスタ21a及び第2入力ポートレジスタ21bに対して8バイトデータが格納され、記憶部22の連続領域に対して同時に8バイトデータずつを書き込む。これにより、SIMD命令に従って16バイトデータを各2ポートRAM20に書き込む。
SIMD命令に従って2ポートRAM20の記憶部22に書き込まれた16バイトデータを読み出す場合には、一次データキャッシュメモリ4に対して、8バイトごとに区分されたブロック間の境界に当たるアドレスが指定される。例えば図4に示すウエイ構成において、2ポートRAM(0)に格納されたデータと2ポートRAM(1)に格納されたデータとが連続した16バイトデータとなる。そして、2ポートRAM(0)のウエイ番号(0)、インデックスアドレス(0)として格納されたデータと、RAM(1)のウエイ番号(0)、インデックスアドレス(0)として格納されたデータとの連続した16バイトデータを読み出す。
このように、2つのブロックに跨る16バイトデータを読み出す場合、2ポートRAM(0)のデータの読み出しアドレスは、2ポートRAM(1)のブロックのアクセス対象となるアドレスよりも、1つのブロック分だけずれたアドレスとなる。また、各2ポートRAM20において2個のブロックを跨いだ16バイトデータを読み出す必要もある(ラインクロス)。
このような連続した16バイトデータを読み出すために、キャッシュシステムは、図10に示す構成を有する。図10によれば、キャッシュシステムは、第1アドレス生成器30a及び第1アドレス変換器31aと、第2アドレス生成器30b及び第2アドレス変換器31bとを有する。第1アドレス生成器30aは、2ポートRAM(1)と2ポートRAM(3)との第1入力ポートレジスタ21a及び第1出力ポートレジスタ23aに読み出すデータのアドレス情報を生成する。第2アドレス生成器30bは、2ポートRAM(1)と2ポートRAM(3)との第2入力ポートレジスタ21b及び第2出力ポートレジスタ23bに読み出すデータのアドレス情報を生成する。
第1アドレス変換器31aは、2ポートRAM(0)と2ポートRAM(2)との第1入力ポートレジスタ21b及び第1出力ポートレジスタ23aに読み出すデータのアドレス情報を生成する。第2アドレス変換器31bは、2ポートRAM(0)と2ポートRAM(2)との第2入力ポートレジスタ21b及び第2出力ポートレジスタ23bに読み出すデータのアドレス情報を生成する。
第1アドレス生成器30a及び第2アドレス生成器30bは、演算・命令ユニット11からの命令に従って、一次データキャッシュメモリ4から読み出すデータのアドレスを生成する。第1アドレス変換器31a及び第2アドレス変換器31bは、第1アドレス生成器30a及び第2アドレス生成器30bにより生成されたアドレスを、以下のように変換する。
第1アドレス生成器30a及び第2アドレス生成器30bが生成した仮想アドレスVA(N[kバイト])は、例えば、図11に示すように変換される。図11は、生成アドレスと変換アドレスとの関係を示す。なお、ここでは、生成アドレス、変換アドレスともに「仮想アドレス」を用いているものとする。また、図11では各アドレスは16進数で表記されている。さらに、生成アドレスのVA(1)は上位アドレス、VA(2)は下位アドレスである。同様に、変換アドレスのVA(3)は上位アドレス、VA(4)は下位アドレスである。
第1アドレス生成器30a及び第2アドレス生成器30bによりアドレス[1000]が生成された場合、第1アドレス変換器31a及び第2アドレス変換器31bはアドレスをアドレス[1008]に変換する。また、第1アドレス生成器30a及び第2アドレス生成器30bによりアドレス[1008]が生成された場合、第1アドレス変換器31a及び第2アドレス変換器31bはアドレスをアドレス[1010]に変換する。これは、図10に示した奇数(even)側のアクセス対象位置が、奇数(odd)側のアクセス対象位置よりもインデックスアドレスを+1したアドレス位置にあるためである。
図10の例では、第1アドレス変換器31a及び第2アドレス変換器31bは、第1アドレス生成器30a及び第2アドレス生成器30bが生成されたアドレスに「8」、つまり1インデックスアドレスに相当する値を加えることでアドレスを変換している。
図10のように、一次データキャッシュメモリ4に4個の2ポートRAMを含めた場合、各2ポートRAMの第1出力ポートレジスタ23a及び第2出力ポートレジスタ23bに対して、データ読み出しのためのアドレスが供給される。
そして、図12に示すように、第1アドレス生成器30a及び第2アドレス生成器30bにより生成されたアドレスは、2ポートRAM(1)と2ポートRAM(3)に供給される。また、第1アドレス変換器31a及び第2アドレス変換器31bにより変換されたアドレスは、第1アドレス生成器30a及び第2アドレス生成器30bにより生成されたアドレスが供給される2ポートRAM(1)、2ポートRAM(3)と連続したデータが格納された2ポートRAM(0)、2ポートRAM(2)にそれぞれ供給される。図10
図10にて、第1アドレス生成器30aは、2ポートRAM(1)に含まれる任意のブロックを指定するアドレスを生成する。そして、この第1アドレス生成器30aにより生成されたアドレスは、2ポートRAM(1)の第1ポートレジスタ21a、23aに供給される。また、第1アドレス変換器31aは、第1アドレス生成器30aが指定した2ポートRAM(1)のブロックと連続するデータが格納されたブロックのアドレスに変換する。変換されたアドレスは、2ポートRAM(0)の第1ポートレジスタ21a、23aに供給される。
同様に、第1アドレス生成器30aにより生成されたアドレスは、2ポートRAM(3)における任意のブロックを指定するアドレスとなり、2ポートRAM(3)の第1ポートレジスタ21a、23aに供給される。また、第1アドレス変換器31aにより変換されたアドレスは、第1アドレス生成器30aが指定した2ポートRAM(3)のブロックと連続するデータが格納されたブロックのアドレスとなる。変換されたアドレスは、2ポートRAM(2)の第1ポートレジスタ21a、23aに供給される。
また、第2アドレス生成器30bは、2ポートRAM(1)に含まれる任意のブロックを指定するアドレスを生成する。そして、この第2アドレス生成器30bにより生成されたアドレスは、2ポートRAM(1)に供給される。また、第2アドレス変換器31bは、第2アドレス生成器30bが指定した2ポートRAM(1)のブロックと連続するデータが格納されたブロックのアドレスに変換する。このアドレスは、2ポートRAM(0)の第2ポートレジスタ21b、23bに供給される。
同様に、第2アドレス生成器30bにより生成されたアドレスは、2ポートRAM(3)における任意のブロックを指定するアドレスとなり、2ポートRAM(3)の第2ポートレジスタ21b、23bに供給される。また、第2アドレス変換器31bにより変換されたアドレスは、第2アドレス生成器30bが指定した2ポートRAM(3)のブロックと連続するデータが格納された2ポートRAM(2)のブロックのアドレスとなる。この変換されたアドレスは、2ポートRAM(2)の第2ポートレジスタ21b、23bに供給される。
この結果、SIMD命令に従って、16バイトデータを格納したブロックにアクセスすることができる。以下に具体例を示す。
第1アドレス生成器30a及び第2アドレス生成器30bにより、仮想アドレスVAを生成するとする。
まず、VA=0x000とした例を示す。第1出力ポートレジスタ23aの16バイトデータをロードする場合、図11に示すように、第1アドレス生成器30aにより生成されたアドレスはVA(2)=0である。これに対し、第1アドレス変換器31aにより変換すると、変換されたアドレスはVA(4)=8である。
すると、図13に太線で示すデータを読み出すことができる。すなわち、2ポートRAM(0)のブロック00,2ポートRAM(1)のブロック01の連続した16バイトデータと、2ポートRAM(2)のブロック00,2ポートRAM(3)のブロック01の連続した16バイトデータとを読み出す。
このとき、第1アドレス生成器30aは、2ポートRAM(1)のブロック01を指定するアドレスを生成すると、第1アドレス変換器31aによってアドレスに変換して2ポートRAM(0)のブロック00を指定するアドレスを得る。例えば、生成アドレスが[0]である場合、変換アドレスは [8]となる。また、第2アドレス生成器30bは、2ポートRAM(3)のブロック01を指定するアドレスを生成すると、第2アドレス変換器31bによってアドレスに変換して2ポートRAM(2)のブロック00を指定するアドレスを得る。これにより、一次データキャッシュメモリ4からは、ウエイ(0)とウエイ(1)とのブロック00,01を読み出すことができる。
なお、図13の「アドレス=000」は、図11のVA(1)、VA(3)に相当する。以下の図面も同様である。
また、VA=0x008とし、第1出力ポートレジスタ23aの16バイトデータをロードする場合を考える。この場合、図11第1アドレス生成器30aにより生成されたアドレスはVA(1)=000であり、第1アドレス変換器31aにより変換されたアドレスはVA(3)=001である。
すると、図14に太線で示すようなデータを読み出すことができる。すなわち、2ポートRAM(1)のブロック01と2ポートRAM(0)のブロック02との連続した16バイトデータと、2ポートRAM(3)のブロック01と2ポートRAM(2)のブロック02との連続した16バイトデータとを読み出す。
このとき、第1アドレス生成器30aが2ポートRAM(1)のブロック01を指定するアドレスを生成すると、第1アドレス変換器31aによってアドレスを変換することで2ポートRAM(0)のブロック02を指定するアドレスが得られる。また、第2アドレス生成器30bが2ポートRAM(3)のブロック01を指定するアドレスを生成すると、第2アドレス変換器31bによってアドレスを変換することで2ポートRAM(2)のブロック02を指定するアドレスが得られる。これにより、一次データキャッシュメモリ4からは、ウエイ(0)、ウェイ(1)のブロック01,02を読み出すことができる。
更に、VA=0x018とし、第1出力ポートレジスタ23aの16バイトデータをロードする場合を考える。この場合、図11第1アドレス生成器30aにより生成されたアドレスはVA(1)=001であり、第1アドレス変換器31aにより変換されたアドレスはVA(3)=002である。
すると、図15に太線で示すデータを読み出すことができる。すなわち、2ポートRAM(1)のブロック03と2ポートRAM(0)のブロック04の連続した16バイトデータと、2ポートRAM(3)のブロック03と2ポートRAM(2)のブロック04の連続した16バイトデータとを読み出す。
このとき、第1アドレス生成器30aが2ポートRAM(1)のウェイ(0)に対応するブロック03を指定するアドレスを生成すると、第1アドレス変換器31aによってアドレスを変換して2ポートRAM(0)のウェイ(1)に対応するブロック04を指定するアドレスを得る。また、第2アドレス生成器30bが2ポートRAM(3)のウェイ(1)に対応するブロック03を指定するアドレスを生成すると、第2アドレス変換器31bによってアドレスを変換して2ポートRAM(2)のウェイ(0)に対応するブロック04を指定するアドレスを得る。これにより、一次データキャッシュメモリ4からは、ウエイ(0)とウェイ(1)とのブロック03,04を読み出すことができる。
このように、所定データサイズ(16バイトデータ)のデータは、異なる2ポートRAMの連続したブロック番号に分割して書き込まれる。そして、アドレス生成器30a,30bにより生成したアドレスによって所定データサイズデータのうちの一部を読み出すと共に、アドレス変換器31a,31bにより変換されたアドレスによって残りの一部のデータを読み出すことができる。したがって、2ポートRAMの記憶部22が8バイトのブロック構成であって、SIMD命令に従って連続した16バイトデータをロードする場合であっても、2つの2ポートRAMによって連続した16バイトデータを読み出すことができる。
つぎに、一次データキャッシュメモリ4から、SIMD命令に従って16バイトデータを読み出してデータを演算・命令ユニット11に出力するための構成について説明する。
図16には、ブロック番号で区分された8バイトデータ(単位データ)を選択して、2つの8バイトデータを連続的に演算・命令ユニット11に出力する構成を示している。キャッシュシステムは、各2ポートRAM(0)〜2ポートRAM(3)の第1出力ポートレジスタ23a、第2出力ポートレジスタ23bから出力された8バイトデータを入力するセレクタ41a〜41hを備える。セレクタ41a〜41hは、第1アドレス生成器30a、第2アドレス生成器30b、第1アドレス変換器31a、第2アドレス変換器31bから供給されたアドレスに基づいて、接続された2ポートRAMから出力される何れかの8バイトデータを選択する。そして、セレクタ43a〜43dにより選択された2ポートRAMの記憶部22に記憶された8バイトデータを、16バイトデータ分に亘り連続的に演算・命令ユニット11に出力する。
具体的には、2ポートRAM(0),2ポートRAM(1)の各第1出力ポートレジスタ23aが、それぞれ2個のセレクタ41a,41bに接続される。同様に、2ポートRAM(2),(3)の各第1出力ポートレジスタ23aが、それぞれ2個のセレクタ41c,41dに接続されている。また、2ポートRAM(0),(1)の各第2出力ポートレジスタ23bが、それぞれ2個のセレクタ41e,41fに接続され、2ポートRAM(2),(3)の各第2出力ポートレジスタ23bが、それぞれ2個のセレクタ41e,41gに接続されている。
セレクタ41aにはバッファ42a、セレクタ41bにはバッファ42c、セレクタ41cにはバッファ42b、セレクタ41dにはバッファ42dがそれぞれ接続されている。また、セレクタ41eにはバッファ42e、セレクタ41fにはバッファ42g、セレクタ41gにはバッファ42f、セレクタ41hにはバッファ42hが接続されている。
バッファ42a,バッファ42bに格納されたそれぞれの8バイトデータは、セレクタ43aによってその順番が選択され、データ出力部44aを介して16バイトデータとして演算・命令ユニット11に供給される。同様に、バッファ42c,バッファ42dに格納された8バイトデータは、セレクタ43bによって選択され、データ出力部44aに供給される。
データ出力部44bは、セレクタ43aから出力されたデータを順序通り並べ替え、16バイトデータとして演算・命令ユニット11に供給される。以下同様に、バッファ42e,バッファ42fに格納された8バイトデータは、セレクタ43c及びデータ出力部44cを介して16バイトデータとして演算・命令ユニット11に供給される。バッファ42g,バッファ42hに格納された8バイトデータは、セレクタ43d及びデータ出力部44dを介して16バイトデータとして演算・命令ユニット11に供給される。
このようにキャッシュシステムを構成することにより、各2ポートRAM(0)〜(3)の第1出力ポートレジスタ23a、第2出力ポートレジスタ23bの何れから出力された8バイトデータは、セレクタ41a〜41hにより選択される。また、異なる2ポートRAMから出力された同じウエイのデータは、セレクタ43a〜43dにより選択される。
これにより、セレクタ42a、42bは、2ポートRAM(0)と2ポートRAM(1)の第1出力ポートレジスタ23aの何れかから出力された8バイトデータを選択する。同様に、セレクタ41c、41dは、2ポートRAM(2)と2ポートRAM(3)の第1出力ポートレジスタ23aの何れかから出力された8バイトデータを選択できる。
バッファ42aには2ポートRAM(0)か2ポートRAM(1)の何れかからのデータが格納され、バッファ42bには2ポートRAM(2)か2ポートRAM(3)の何れかからのデータが格納される。
セレクタ43aは、セレクタ41aから出力される2ポートRAM(0)あるいは2ポートRAM(1)からの8バイトデータか、セレクタ41cから出力される2ポートRAM(2)あるいは2ポートRAM(3)からの8バイトデータかを選択する。バッファ42cとバッファ42dとに接続されたセレクタ43bも、セレクタ43aと同様に動作する。また、セレクタ41e〜41hは、それぞれ各2ポートRAMの第2の出力ポートレジスタに接続される他は基本的にセレクタ41a〜41dと同様に動作する。セレクタ43cとセレクタ43dとはセレクタ43a、43bと同様に動作する。
このように、実施形態のキャッシュシステムは、異なる2ポートRAM20から8バイトデータを読み出すことによって、SIMD命令に従って読み出す16バイトデータを生成して、演算・命令ユニット11に出力することができる。また、このキャッシュシステムは、異なるウエイに跨って16バイトデータが格納されていても、全2ポートRAMの出力ポートから8バイトデータを読み出して、指定されたアドレスに従って8バイトデータを選択できる。これにより、このキャッシュシステムは、読み出すデータのウエイを判定した後にウエイごとにデータを選択する場合と比較して、簡単な配線構成によって16バイトデータを出力することができる。
また、一次データキャッシュメモリ4に書き込まれたデータを演算・命令ユニット11に出力する構成としては、図17に示すものであっても良い。
図17に示す構成を含むキャッシュシステムは、2ポートRAMの記憶部22に記憶された単位データがブロック単位で区分され、各ブロックがウエイによって区別される。このために、図17に示すキャッシュシステムは、演算・命令ユニット11にSIMD命令に従って16バイトデータを出力するために、セレクタ41a〜41h、43a〜43dを備える。
セレクタ41a〜41hは、第1アドレス生成器30a、第2アドレス生成器30b、第1アドレス変換器31a、第2アドレス変換器31bから供給されたアドレスに基づいて、2ポートRAM(0)〜2ポートRAM(3)の第1の出力ポートレジスタ(図示「1」)から出力される何れかの8バイトデータを選択する。そして、セレクタ43a〜43dは、セレクタ41a〜41hにより選択されたウエイ数分の8バイトデータを入力し、ウエイを選択する命令に従って、何れかの8バイトデータを選択する。そして、セレクタ43a〜43dにより選択された2ポートRAMの記憶部22に記憶された8バイトデータは、16バイトデータ分に亘り連続的に演算・命令ユニット11に出力される。
図17に示すように、各2ポートRAM(0)〜(3)の第1出力ポートレジスタには、セレクタ41a〜41dが接続されている。4個の第1出力ポートレジスタ23aから出力された4個のデータは、データ選択用の4個のセレクタ41a〜41dに供給される。各セレクタ41a〜41dには、ウエイ選択用の8バイトのバッファ42a〜42dが接続されている。各セレクタ41a〜41dは、演算・命令ユニット11から供給されたコマンドに従って、接続された何れかの2ポートRAM(0)〜(3)の第1出力ポートレジスタから出力されたデータを取り出す。そして、取り出されたデータは、各セレクタ41a〜41dから、当該セレクタ41a〜41dに接続されたバッファ42a〜42dに格納される。
また、各2ポートRAM(0)〜(3)の第2出力ポートレジスタ(図示「2」)には、セレクタ41e〜41hが接続されている。4個の第2出力ポートレジスタから出力された4個のデータは、データ選択用の4個のセレクタ41e〜41hに供給される。各セレクタ41e〜41hには、ウエイ選択用の8バイトのバッファ42e〜42hが接続されている。各セレクタ41e〜41hは、演算・命令ユニット11から供給されたコマンドに従って、接続された何れかの2ポートRAM(0)〜(3)の第2出力ポートレジスタから出力されたデータを取り出す。そして、取り出されたデータは、各セレクタ41e〜41hから、当該セレクタ41e〜41hに接続されたバッファ42e〜42hに格納される。
バッファ42a〜42dには、ウエイをウェイ(0)とウェイ(1)とで選択するためのセレクタ43a,43bが接続されている。セレクタ43aは、演算・命令ユニット11から供給されたウエイを選択するコマンドに従って、バッファ42a,42bの何れかのデータを取り出す。セレクタ43bは、演算・命令ユニット11から供給されたウエイを選択するコマンドに従って、バッファ42c,42dの何れかのデータを取り出す。セレクタ43a,43bにより取り出されたデータは、データ出力部44a,44bを介して、フェッチデータとして演算・命令ユニット11に供給される。
また、バッファ42e〜42hには、ウエイをウエイ(0)とウエイ(1)とで選択するためのセレクタ43c,43dが接続されている。セレクタ43cは、演算・命令ユニット11から供給されたコマンドに従って、バッファ42e,42fの何れかのデータを取り出す。セレクタ43dは、演算・命令ユニット11から供給されたコマンドに従って、バッファ42g,42hの何れかのデータを取り出す。セレクタ43c,43dにより取り出されたデータは、データ出力部44c,44dを介して、フェッチデータとして演算・命令ユニット11に供給される。
このように、キャッシュシステムは、異なる2ポートRAM20から8バイトデータを読み出すことによって、SIMD命令に従って読み出す16バイトデータを生成して、演算・命令ユニット11に出力することができる。また、このキャッシュシステムは、異なるウエイに跨って16バイトデータが格納されていても、全2ポートRAMの出力ポートから8バイトデータを読み出して、指定されたアドレスに従って8バイトデータを選択できる。これにより、このキャッシュシステムは、読み出すデータのウエイを判定した後にウエイごとにデータを選択する場合と比較して、簡単な配線構成によって16バイトデータを出力することができる。
なお、上述の実施の形態は一例である。このため、上述の実施形態に限定されることはなく、この実施の形態以外であっても、技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能であることは勿論である。
1 CPU
2 命令ユニット
3 演算ユニット
4 一次データキャッシュメモリ
5 一次命令キャッシュメモリ
6 二次キャッシュメモリ
11 演算・命令ユニット
12 ECCチェック/訂正/パリティ生成部
13 ムーブインデータレジスタ
14 ECCチェック/訂正部
15 ムーブアウトデータレジスタ
20 2ポートRAM
21a 第1入力ポートレジスタ
21b 第2入力ポートレジスタ
22 記憶部
23a 第1出力ポートレジスタ
23b 第2出力ポートレジスタ
30a 第1アドレス生成器
30b 第2アドレス生成器
31a 第1アドレス変換器
31b 第2アドレス変換器
41a〜41h セレクタ
42a〜42h バッファ
43a〜43d セレクタ
44a〜44d データ出力部

Claims (4)

  1. 演算ユニットと、前記演算ユニットとの間でデータの入出力をする一次キャッシュメモリと、前記一次キャッシュメモリとの間でデータを入出力する二次キャッシュメモリとを含むキャッシュシステムにおいて、
    前記一次キャッシュメモリは、第1データサイズの単位データごとに与えられるアクセスアドレスに従って記憶をする記憶手段と、二つの単位データをそれぞれ第1および第2の入力ポートレジスタにより入力し、前記第1および第2の入力ポートレジスタを介してそれぞれ入力した前記二つの単位データを前記アクセスアドレスに従って前記記憶手段における連続領域に同時に書き込む書込手段と、前記書込手段により前記記憶手段の連続領域に同時に書き込まれた前記二つの単位データをそれぞれ第1および第2の出力ポートレジスタに読み出して出力する出力手段とを有する多ポート記憶部を複数有し、
    前記一次キャッシュメモリは、さらに、前記第1データサイズに対して任意倍数の第2データサイズを有する対象データを前記複数の多ポート記憶部の記憶手段に書き込みかつ読み込むための前記アクセスアドレスを生成するアドレス生成手段と、当該アドレス生成手段により生成されたアドレスを変換するアドレス変換手段とを有し、
    前記第1データサイズに対して任意倍数の第2データサイズを有する対象データを前記単位データの列に分割して前記一次キャッシュメモリに書き込み動作するときに、前記対象データを前記単位データの列に連続的に分割して対象単位データ列とし、前記アドレス生成手段および前記アドレス変換手段により与えられた前記アクセスアドレスに従って、前記複数の多ポート記憶部のうちの第1の多ポート記憶部の前記第1および第2の入力ポートレジスタに、前記対象単位データ列に含まれる第1および第2の単位データをそれぞれ時間連続的に書き込む第1書き込み動作と、前記アドレス生成手段および前記アドレス変換手段により与えられた前記アクセスアドレスに従って、前記複数の多ポート記憶部のうちの第2の多ポート記憶部の前記第1および第2の入力ポートレジスタに、前記対象単位データ列の中で前記第1または第2の単位データに連続する第3および第4の単位データをそれぞれ時間連続的に書き込む第2書き込み動作とを並行して行うことにより、前記対象単位データ列に含まれる第1ないし第4の単位データを前記第1及び第2の多ポート記憶部に分散して同時に記憶し、
    前記対象単位データを前記一次キャッシュメモリから読み出し動作するときに、前記アドレス生成手段および前記アドレス変換手段により与えられた前記アクセスアドレスに従って、記第1の多ポート記憶部の前記第1および第2の出力ポートレジスタに前記第1および第2の単位データを読み出す第1読み出し動作と、前記アドレス生成手段および前記アドレス変換手段により与えられた前記アクセスアドレスに従って、記第2の多ポート記憶部の前記第1および第2の出力ポートレジスタに前記第3および第4の単位データを読み出す第2読み出し動作とを並行して行うことにより、前記対象単位データ列に含まれる第1ないし第4の単位データを前記第1および第2の多ポート記憶部から同時に読み出す
    ことを特徴とするキャッシュシステム。
  2. 記アドレス生成手段は、前記第1の多ポート記憶部に記憶された前記第1または第2の単位データを読み出す第1アドレスを生成し、
    前記アドレス変換手段は、前記アドレス生成手段により生成された前記第1アドレスを変換して、前記第1の多ポート記憶部に記憶された前記第1または第2の単位データと前記対象単位データ列の中で連続した前記第3または第4の単位データを前記第2の多ポート記憶部から読み出す第2アドレスにする
    ことを特徴とする請求項1に記載のキャッシュシステム。
  3. 前記各多ポート記憶部における出力ポートから出力された単位データを入力し、前記アドレス生成手段又は前記アドレス変換手段から供給されたアドレスに基づいて、何れかの単位データを選択するセレクタを複数有し、
    当該セレクタにより選択された多ポート記憶部に記憶された単位データを、前記第2データサイズ分に亘り連続的に前記演算ユニットに出力する
    ことを特徴とする請求項2に記載のキャッシュシステム。
  4. 各多ポート記憶部における出力ポートから出力された単位データを入力し、前記アドレス生成手段又は前記アドレス変換手段から供給されたアドレスに基づいて、何れかの単位データを選択する第1セレクタと、
    前記第1セレクタにより選択されたウエイ数分の単位データを入力し、ウエイを選択する命令に従って、何れかの単位データを選択する第2セレクタとを有し、
    前記第2セレクタにより選択された多ポート記憶部に記憶された単位データを、前記第2データサイズ分に亘り連続的に前記演算ユニットに出力する
    ことを特徴とする請求項2に記載のキャッシュシステム。
JP2010027111A 2010-02-10 2010-02-10 キャッシュシステム Expired - Fee Related JP5493954B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2010027111A JP5493954B2 (ja) 2010-02-10 2010-02-10 キャッシュシステム
KR1020110006650A KR101234183B1 (ko) 2010-02-10 2011-01-24 캐시 시스템
US13/012,985 US8806102B2 (en) 2010-02-10 2011-01-25 Cache system
EP11153588A EP2354954A1 (en) 2010-02-10 2011-02-07 Cache system
CN201110037745.1A CN102156676B (zh) 2010-02-10 2011-02-10 高速缓存***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010027111A JP5493954B2 (ja) 2010-02-10 2010-02-10 キャッシュシステム

Publications (2)

Publication Number Publication Date
JP2011164948A JP2011164948A (ja) 2011-08-25
JP5493954B2 true JP5493954B2 (ja) 2014-05-14

Family

ID=44021964

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010027111A Expired - Fee Related JP5493954B2 (ja) 2010-02-10 2010-02-10 キャッシュシステム

Country Status (5)

Country Link
US (1) US8806102B2 (ja)
EP (1) EP2354954A1 (ja)
JP (1) JP5493954B2 (ja)
KR (1) KR101234183B1 (ja)
CN (1) CN102156676B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180031412A (ko) * 2016-09-20 2018-03-28 삼성전자주식회사 메모리 컨트롤러의 동작 방법과, 이를 포함하는 장치들의 동작 방법들
KR102490104B1 (ko) * 2017-10-30 2023-01-19 삼성전자주식회사 데이터 보호를 사용하는 인-밴드 메모리에 액세스하기 위한 장치 및 방법
US11422702B2 (en) * 2020-08-26 2022-08-23 Dell Products, L.P. Managing utilization of storage class memory (SCM) resources
CN112905954A (zh) * 2020-12-28 2021-06-04 北京计算机技术及应用研究所 一种利用fpga bram的cnn模型卷积运算加速计算方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905188A (en) 1988-02-22 1990-02-27 International Business Machines Corporation Functional cache memory chip architecture for improved cache access
US5442770A (en) 1989-01-24 1995-08-15 Nec Electronics, Inc. Triple port cache memory
JPH0437935A (ja) 1990-06-01 1992-02-07 Hitachi Ltd キャッシュメモリを有する計算機
DE69429777T2 (de) * 1993-09-30 2002-10-17 Apple Computer System zur dezentralen massenspeichersteuerung eines rechners mit virtuellem speicher
US5924117A (en) * 1996-12-16 1999-07-13 International Business Machines Corporation Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
US6029237A (en) * 1997-10-08 2000-02-22 Dell Usa, L.P. Method for simulating the presence of a diskette drive in a NetPC computer that contains only a hard disk drive
JP2002278836A (ja) * 2001-03-15 2002-09-27 Oki Electric Ind Co Ltd キャッシュメモリ
JP4164371B2 (ja) * 2003-01-16 2008-10-15 キヤノン株式会社 データ処理装置、データ処理方法、プログラム及び記憶媒体
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
JP4517741B2 (ja) * 2004-06-23 2010-08-04 富士ゼロックス株式会社 記憶装置
JP4336848B2 (ja) * 2004-11-10 2009-09-30 日本電気株式会社 マルチポートキャッシュメモリ及びマルチポートキャッシュメモリのアクセス制御方式

Also Published As

Publication number Publication date
JP2011164948A (ja) 2011-08-25
EP2354954A1 (en) 2011-08-10
KR20110093625A (ko) 2011-08-18
KR101234183B1 (ko) 2013-02-18
US8806102B2 (en) 2014-08-12
CN102156676A (zh) 2011-08-17
CN102156676B (zh) 2014-10-08
US20110197013A1 (en) 2011-08-11

Similar Documents

Publication Publication Date Title
US4866603A (en) Memory control system using a single access request for doubleword data transfers from both odd and even memory banks
US7694077B2 (en) Multi-port integrated cache
JP3799050B2 (ja) 階層化された記憶項目とキャッシュタグを単一キャッシュアレイ構造に格納するキャッシュメモリ装置及び方法
CN105678378A (zh) 间接访问样本数据以在并行处理***中执行多卷积操作
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
US5960453A (en) Word selection logic to implement an 80 or 96-bit cache SRAM
CN101918925B (zh) 用于处理器的高关联性高速缓存的第二次机会取代机制
CN103810111A (zh) 有源存储器件中的地址生成的方法及其处理元件
US6745291B1 (en) High speed LRU line replacement system for cache memories
JP5493954B2 (ja) キャッシュシステム
CN1656461A (zh) 在模拟多端口存储器中编程访问等待时间
CN108139989B (zh) 配备有存储器中的处理和窄访问端口的计算机设备
JPH07120312B2 (ja) バッファメモリ制御装置
US5802565A (en) Speed optimal bit ordering in a cache memory
US20130332665A1 (en) Memory with bank-conflict-resolution (bcr) module including cache
CN108920097B (zh) 一种基于交织存储的三维数据处理方法
KR100517765B1 (ko) 캐시 메모리 및 그 제어 방법
JPH06242925A (ja) ソート処理装置
JP2002278836A (ja) キャッシュメモリ
JP5182284B2 (ja) ベクトル処理装置
JP4918535B2 (ja) キャッシュメモリ、キャッシュメモリ装置及び割当て方法
JPS58142459A (ja) 主記憶装置
JP2636485B2 (ja) キャッシュ記憶装置
JPH02222047A (ja) メモリ制御装置
JP2012022567A (ja) キャッシュメモリ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140120

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: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140217

R150 Certificate of patent or registration of utility model

Ref document number: 5493954

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees