JPWO2007097030A1 - キャッシュ制御装置およびキャッシュ制御方法 - Google Patents

キャッシュ制御装置およびキャッシュ制御方法 Download PDF

Info

Publication number
JPWO2007097030A1
JPWO2007097030A1 JP2008501580A JP2008501580A JPWO2007097030A1 JP WO2007097030 A1 JPWO2007097030 A1 JP WO2007097030A1 JP 2008501580 A JP2008501580 A JP 2008501580A JP 2008501580 A JP2008501580 A JP 2008501580A JP WO2007097030 A1 JPWO2007097030 A1 JP WO2007097030A1
Authority
JP
Japan
Prior art keywords
data
cache
buffer
buffer means
cache memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008501580A
Other languages
English (en)
Other versions
JP4409620B2 (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
Publication of JPWO2007097030A1 publication Critical patent/JPWO2007097030A1/ja
Application granted granted Critical
Publication of JP4409620B2 publication Critical patent/JP4409620B2/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/0893Caches characterised by their organisation or structure
    • 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
    • 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/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • 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/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification

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)

Abstract

チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込むこと。外部バス制御部(101)は、入出力制御部(105)の制御に応じたタイミングで、いずれかの外部バスからのMIデータをMIデータRAM(102)に入力する。MIデータRAM(102)は、MIデータを記憶し、データレジスタ部(108)にMIデータを取り込むための空きが生じるとセレクタ(104)を経由してデータレジスタ部(108)へMIデータを出力する。入出力制御部(105)は、外部バス制御部(101)へ流入するMIデータをCPUサイクルに合わせてMIデータRAM(102)に入力させる。データレジスタ部(108)は、L2キャッシュ(111)へ書き込まれるMIデータを一度取り込んだ後、L2キャッシュ(111)へ書き込む。

Description

本発明は、キャッシュメモリにデータを書き込むキャッシュ制御装置およびキャッシュ制御方式に関し、特に、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込むことができるキャッシュ制御装置およびキャッシュ制御方法に関する。
近年、コンピュータなどの情報処理装置においては、一般にアクセス速度が低いメインメモリへのアクセス回数を減らしてCPU(Central Processing Unit)の処理速度を向上させるため、CPU上にキャッシュメモリが搭載される構成が主流となっている。キャッシュメモリは、高速アクセスが可能であるものの、容量がメインメモリよりも小さいため、CPUが必要とするデータがキャッシュメモリに記憶されていない(キャッシュミス)ことがあり、このような場合には、2次キャッシュなどの上位キャッシュやメインメモリに記憶されているデータをCPU上のキャッシュメモリへムーブインする必要が生じる。
キャッシュメモリへムーブインされるデータは、一旦キャッシュメモリに接続されるデータレジスタによって取り込まれ、データレジスタからキャッシュメモリに書き込まれるのが一般的である。
ところで、近年の技術の目覚しい進歩により、CPUの処理速度はますます向上しているとともに、メインメモリの容量はますます増大している。この結果、単位時間当たりにCPUが必要とするデータ量は多くなる一方で、これらのデータをメインメモリから探し出すのには長時間を要するようになり、CPUとメインメモリの速度が乖離し、相対的にメモリレイテンシが増大しつつある。
このような状況下では、キャッシュメモリへのデータのムーブインを適切に制御することが重要になってきており、例えば特許文献1では、メインメモリの負荷が大きくなるとムーブインするデータ量を削減し、メインメモリの負荷が小さくなると削減した分のデータのムーブインを再開する技術が開示されている。
特許文献1の技術では、キャッシュミス発生時のデータのムーブインを効率的に調整することができるものの、ムーブインされるデータを使用するCPUの処理速度がメインメモリの速度によって制限されることになり、増大しているメモリレイテンシを完全にカバーすることはできない。そこで、キャッシュミスに対するデータのムーブインを実行中に、CPUが後続する処理を次々に実行してスループットを向上することが考えられる。この場合、同時期に発生するキャッシュミスが多くなってムーブインされるデータ量が増えるため、キャッシュメモリにデータを書き込むデータレジスタが一度に取り込み可能なデータ量を増加させることが望まれる。
特開平7−210460号公報
しかしながら、データレジスタの容量を増加させるため、単にデータレジスタ内のデータキューを大きくすると、現行のチップの面積には収まりきらなくなるため、CPUが搭載されるチップの面積の増大を招き、チップの小型化に逆行することになり現実的ではない。
また、データレジスタの代用として低コストのRAM(Random Access Memory)を使用することも考えられるが、データレジスタは、キャッシュメモリに書き込まれるデータを一時的に取り込むものであるため、データレジスタの代用となるRAMは、キャッシュメモリよりは大幅に小さい容量で十分である。そして、容量が小さいにも拘らず、データレジスタの代用として機能しスループットを向上するためには、RAMの単位時間当たりのデータの流入量および流出量をキャッシュメモリへの書き込みに合わせて大きくする必要がある。このため、RAMの使用に伴う制御回路やデータバスが大きい面積を占めることになり、結果としてデータレジスタの代用部分が空間的にもコスト的にも肥大してしまう。
本発明はかかる点に鑑みてなされたものであり、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込むことができるキャッシュ制御装置およびキャッシュ制御方法を提供することを目的とする。
上記課題を解決するために、本発明は、キャッシュメモリにデータを書き込むキャッシュ制御装置であって、前記キャッシュメモリへの書き込み用に外部から流入するデータを保持する第1バッファ手段と、前記第1バッファ手段に保持されるデータのうち、現時点で前記キャッシュメモリへの書き込み対象となるデータを保持する第2バッファ手段と、前記第2バッファ手段に保持されるデータの前記キャッシュメモリへの書き込みを制御する書込制御手段とを有することを特徴とする。
また、本発明は、上記発明において、前記第1バッファ手段は、前記キャッシュメモリへの書き込みが同時に要求され得るすべてのデータを記憶可能な容量のRAMを含むことを特徴とする。
また、本発明は、上記発明において、前記第2バッファ手段に空き領域があるか否かを監視する監視手段をさらに有し、前記第1バッファ手段は、前記監視手段によって前記第2バッファ手段に空き領域があること確認された場合に、データを前記第2バッファ手段へ出力することを特徴とする。
また、本発明は、上記発明において、前記第2バッファ手段は、前記キャッシュメモリの近傍に配置され、前記第1バッファ手段は、前記第2バッファ手段よりも前記キャッシュメモリから遠方に配置されることを特徴とする。
また、本発明は、上記発明において、前記第1バッファ手段は、複数の外部バスからのデータの流入を制御する外部バス制御手段を含み、前記第2バッファ手段は、外部バスそれぞれに対応する領域であって同量のデータを保持する領域を備えることを特徴とする。
また、本発明は、上記発明において、前記第2バッファ手段は、外部バスそれぞれについて2回の書き込み分のデータを保持する領域を備えることを特徴とする。
また、本発明は、上記発明において、外部から流入するデータに前記第1バッファ手段をバイパスさせるバイパス手段と、前記第1バッファ手段から出力されるデータまたは前記バイパス手段から出力されるデータのいずれか一方を選択して前記第2バッファ手段へ出力する選択手段とをさらに有することを特徴とする。
また、本発明は、上記発明において、前記選択手段は、前記第2バッファ手段に空き領域がある場合に、前記バイパス手段から出力されるデータを選択することを特徴とする。
また、本発明は、上記発明において、前記書込制御手段は、前記第1バッファ手段から前記第2バッファ手段へデータが出力されると、このデータの前記キャッシュメモリへの書き込みを前記第2バッファ手段に実行させることを特徴とする。
また、本発明は、キャッシュメモリにデータを書き込むキャッシュ制御方法であって、前記キャッシュメモリへの書き込み用に外部から流入するデータを第1バッファに保持する第1保持工程と、前記第1保持工程にて保持されるデータのうち、現時点で前記キャッシュメモリへの書き込み対象となるデータを第2バッファに保持する第2保持工程と、前記第2保持工程にて保持されるデータの前記キャッシュメモリへの書き込みを制御する書込制御工程とを有することを特徴とする。
本発明によれば、キャッシュメモリへの書き込み用に外部から流入するデータを第1バッファに保持し、第1バッファに保持されるデータのうち、現時点でキャッシュメモリへの書き込み対象となるデータを第2バッファに保持し、第2バッファに保持されるデータのキャッシュメモリへの書き込みを制御する。このため、第2バッファとして通常のデータレジスタを用いれば、第1バッファとしては、単位時間当たりのデータの流入量および流出量が小さく、付随する回路の回路規模が小さいRAMなどを用いることが可能となり、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込むことができる。
また、本発明によれば、第1バッファは、キャッシュメモリへの書き込みが同時に要求され得るすべてのデータを記憶可能な容量のRAMを含むため、例えばキャッシュミスに伴って発行されるすべてのムーブイン要求に対する応答のデータをすべて記憶することができ、CPUが後続する処理を実行してスループットを向上することができる。
また、本発明によれば、第2バッファに空き領域があるか否かを監視し、第1バッファは、第2バッファに空き領域があること確認された場合に、データを第2バッファへ出力する。このため、直接キャッシュメモリに書き込まれるデータを保持する第2バッファが溢れてしまうことがなく、確実にすべてのデータをキャッシュメモリに書き込むことができる。
また、本発明によれば、第2バッファは、キャッシュメモリの近傍に配置され、第1バッファは、第2バッファよりもキャッシュメモリから遠方に配置されるため、第2バッファからキャッシュメモリへのデータの書き込みが迅速に実行されるとともに、第1バッファのチップ上での位置を柔軟に決定することができる。
また、本発明によれば、第1バッファは、複数の外部バスからのデータの流入を制御し、第2バッファは、外部バスそれぞれに対応する領域であって同量のデータを保持する領域を備える。このため、チップ外から第1バッファへ複数の外部バスからデータが流入する場合でも、それぞれの外部バスからのデータを均等にキャッシュメモリに書き込むことができる。
また、本発明によれば、第2バッファは、外部バスそれぞれについて2回の書き込み分のデータを保持する領域を備えるため、1回の書き込み分のデータをキャッシュメモリに書き込む間に、次の書き込み分のデータを第1バッファから取り込むことができ、効率的にキャッシュメモリへのデータの書き込みを実行することができる。
また、本発明によれば、外部から流入するデータに第1バッファをバイパスさせ、第1バッファから出力されるデータまたは第1バッファをバイパスしたデータのいずれか一方を選択して第2バッファへ出力する。このため、必要に応じて第2バッファが直接データを取り込むことが可能となり、第1バッファへのデータの入出力に要する時間を省くことができる。
また、本発明によれば、第2バッファに空き領域がある場合に、第1バッファをバイパスしたデータを選択するため、第2バッファに空き領域があり、第1バッファへのデータの入出力に要する時間が無駄になる場合、チップにデータが流入してからキャッシュメモリに書き込まれるまでの時間を短縮することができる。
また、本発明によれば、第1バッファから第2バッファへデータが出力されると、このデータのキャッシュメモリへの書き込みを第2バッファに実行させるため、キャッシュメモリへの書き込み時には書き込み対象のデータが第2バッファに取り込まれており、チップに流入したデータを確実にキャッシュメモリに書き込むことができる。
図1は、本発明の一実施の形態に係るチップの要部構成を示すブロック図である。 図2は、一実施の形態に係るデータレジスタ部の内部構成を示すブロック図である。 図3は、一実施の形態に係るムーブインデータのパケット構成の一例を示す図である。 図4は、一実施の形態に係るチップへのデータ流入の様子を示す図である。 図5−1は、一実施の形態に係るRAMへのムーブインデータの入出力タイミングの一例を示す図である。 図5−2は、一実施の形態に係るRAMへのムーブインデータの入出力タイミングの他の一例を示す図である。 図6は、一実施の形態に係るチップ上の回路配置の一例を示す図である。
符号の説明
101 外部バス制御部
102 MIデータRAM
103 バイパス経路部
104 セレクタ
105 入出力制御部
106 監視部
107−1、107−2 CPUコア
107a−1、107a−2 L1キャッシュ
108 データレジスタ部
108a MIDQ
108b WBDQ
108c MODQ
108d RDQ
109 MIB
110 書込制御部
111 L2キャッシュ
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。なお、以下では、それぞれ1次キャッシュ(L1キャッシュ)を備えた2つのCPUコアおよび2次キャッシュ(L2キャッシュ)が1つのチップに搭載されており、L2キャッシュへのデータのムーブインが行われる場合について説明するが、本発明は、他のキャッシュへのデータの書き込み時にも同様に適用することができる。
図1は、本発明の一実施の形態に係るチップの要部構成を示すブロック図である。図1に示すチップは、外部バス制御部101、ムーブイン(Move-in:以下「MI」と略記する)データRAM102、バイパス経路部103、セレクタ104、入出力制御部105、監視部106、CPUコア107−1、107−2、L1キャッシュ107a−1、107a−2、データレジスタ部108、ムーブインバッファ(Move-in Buffer:以下「MIB」と略記する)109、書込制御部110、およびL2キャッシュ111を有している。なお、図1においては、チップに対して4つのMIデータの流入パスが設けられているが、MIデータの流入パス数は、1でも4以外の複数でも良い。
外部バス制御部101は、チップ外の図示しない上位キャッシュ、メインメモリ、または他のチップなどと外部バスを通じて接続されており、チップ内へのデータの流入パスとなる複数(図1では4つ)の外部バスを制御し、各外部バスから流入するMIデータを一時的に内部のレジスタに登録する。そして、外部バス制御部101は、入出力制御部105の制御に応じたタイミングで、いずれかの外部バスからのMIデータをMIデータRAM102およびバイパス経路部103に入力する。
MIデータRAM102は、外部バス制御部101から出力されるMIデータを記憶し、データレジスタ部108にMIデータを取り込むための空きが生じるとセレクタ104を経由してデータレジスタ部108へMIデータを出力する。すなわち、MIデータRAM102は、データレジスタ部108の前段に設けられたバッファとして機能する。具体的には、MIデータRAM102は、同時期に発行されるすべてのムーブイン要求に対する応答としてMIデータが転送されてきた場合、すべてのMIデータを記憶可能な容量のSRAM(Static Random Access Memory)などから構成されている。
このMIデータRAM102は、データレジスタ部108のバッファであるため、単位時間当たりのデータの流入量および流出量をキャッシュへの書き込みに合わせて大きくする必要はない。ただし、外部バスからのデータの流入量に対応する程度のスループットを達成する必要はある。
バイパス経路部103は、外部バス制御部101から出力されるMIデータをバイパスし、データレジスタ部108にMIデータを取り込むための空き領域がある場合や、CPUコア107−1、107−2へ直接MIデータを出力する場合に、セレクタ104を経由してデータレジスタ部108またはCPUコア107−1、107−2へMIデータを出力する。
セレクタ104は、入出力制御部105の制御に応じて、MIデータRAM102に記憶されているMIデータまたはバイパス経路部103を通過するMIデータのいずれか一方を選択し、データレジスタ部108およびCPUコア107−1、107−2へ出力する。
入出力制御部105は、外部バスのサイクルで外部バス制御部101へ流入するMIデータをCPUサイクルに合わせてMIデータRAM102およびバイパス経路部103に入力させるとともに、MIデータRAM102またはバイパス経路部103からのMIデータをセレクタ104からMIデータを出力させる。このとき、入出力制御部105は、監視部106から報告されるデータレジスタ部108の空き状況に応じて、MIデータRAM102およびバイパス経路部103のどちらを選択するか決定し、決定された処理部からのMIデータを出力するようにセレクタ104を制御する。
また、入出力制御部105は、セレクタ104からMIデータを出力させると、出力されたMIデータに関する情報をMIB109へ通知する。なお、入出力制御部105によるMIデータの入出力のタイミングについては、後に詳述する。
監視部106は、データレジスタ部108における空き状況を監視し、データレジスタ部108にMIデータを取り込む空き容量がある場合に、その旨を入出力制御部105へ報告する。なお、詳細は後述するが、監視部106は、図2に示すように、データレジスタ部108内のムーブインデータキュー(以下「MIDQ」と略記する)108aの空き状況を監視する。このとき、監視部106は、MIDQ108aの容量を外部バスの数に等分し、それぞれの外部バスに対応する容量の空き領域を監視するようにしても良い。こうすることにより、チップに複数の外部バスが接続されている場合、各外部バスから流入するデータを均等にMIDQ108aへ取り込ませることができる。
CPUコア107−1、107−2は、それぞれ内部にL1キャッシュ107a−1、107a−2を備えており、L1キャッシュ107a−1、107a−2に記憶されたデータ、L2キャッシュ111から読み出されたデータ、およびチップ外からのMIデータなどを用いて所定の処理を実行する。
データレジスタ部108は、L2キャッシュ111へ書き込まれるデータおよびL2キャッシュ111から読み出されるデータを一度取り込み、MIデータを含む書き込みデータをL2キャッシュ111へ書き込み、読み出しデータを例えばCPUコア107−1、107−2のL1キャッシュ107a−1、107a−2などへ出力する。具体的には、データレジスタ部108は、例えば図2に示すように、MIDQ108a、ライトバックデータキュー(以下「WBDQ」と略記する)108b、ムーブアウトデータキュー(以下「MODQ」と略記する)108c、およびリードデータキュー(以下「RDQ」と略記する)108dを有している。
MIDQ108aは、セレクタ104から出力されるMIデータを取り込み、取り込まれたMIデータをL2キャッシュ111に書き込む。MIDQ108aは、1つの外部バスについて2単位のデータを取り込み可能な容量を有している。すなわち、本実施の形態においては、4つの外部バスがチップに接続されているため、合計で8単位のデータを取り込み可能な容量を有している。この構成により、データがMIDQ108aに取り込まれている最中に、既にMIDQ108aに取り込まれているデータをL2キャッシュ111に書き込むという動作がすべての外部バスからのデータについて可能となる。
WBDQ108bは、L1キャッシュ107a−1、107a−2から書き戻されるライトバックデータを取り込み、取り込まれたライトバックデータをL2キャッシュ111に書き込む。MODQ108cは、L2キャッシュ111からのムーブアウトがチップの外部から要求されたムーブアウトデータ(図2では「MOデータ」)をL2キャッシュ111から読み出し、ムーブアウト要求元のチップ外部へ出力する。RDQ108dは、CPUコア107−1、107−2によって読み出しが要求されたリードデータをL2キャッシュ111から読み出し、CPUコア107−1、107−2へ出力する。
図1に戻って、MIB109は、L2キャッシュ111へのムーブインを要求するリクエストを記憶するバッファであり、入出力制御部105からMIデータに関する情報が通知されると、このMIデータに対応するリクエストを消去するとともに、その旨を書込制御部110へ通知する。
書込制御部110は、MIB109から消去されたリクエストに対応するMIデータをL2キャッシュ111に書き込むようにデータレジスタ部108を制御する。具体的には、書込制御部110は、MIB109からリクエストを消去した旨が通知されると、MIDQ108aに取り込まれているMIデータであって消去されたリクエストに対応するMIデータをL2キャッシュ111へ書き込むようにデータレジスタ部108に指示する。
L2キャッシュ111は、CPUコア107−1、107−2によって必要とされるデータを記憶しており、CPUコア107−1、107−2が必要とするデータが記憶されていない場合(キャッシュミスが発生した場合)には、チップ外の上位キャッシュ、メインメモリ、または他のチップなどから所望のデータがムーブインされる。
これらの処理ブロックのうち、外部バス制御部101、MIデータRAM102、バイパス経路部103、セレクタ104、入出力制御部105、監視部106、データレジスタ部108、MIB109、および書込制御部110は、L2キャッシュ111へのMIデータの書き込みを制御しており、本実施の形態に係るキャッシュ制御装置を構成している。
次いで、上記のように構成されたチップのL2キャッシュ111へのデータムーブイン時における動作について説明する。
CPUコア107−1、107−2によってL2キャッシュ111からのデータの読み出しが要求された際、L2キャッシュ111に所望のデータが記憶されておらずキャッシュミスが発生すると、チップ外の上位キャッシュ、メインメモリ、または他のチップなどへデータのムーブインが要求される。このムーブイン要求時に発行されるリクエストは、MIB109に記憶される。
その後、このムーブイン要求に対する応答として、チップの外部バス制御部101にMIデータが流入する。図1は4つのMIデータがそれぞれ異なる外部バスから外部バス制御部101に流入する様子を示しているが、各外部バスからMIデータが流入するタイミングは重なっていても異なっていても良い。ここでは、いずれか1つの外部バスからMIデータが流入する場合について説明を続ける。
外部バス制御部101に流入するMIデータは、例えば図3に示すようなパケットで構成されている。すなわち、外部バスの1サイクル目で4バイトのヘッダが外部バス制御部101へ流入し、外部バスの2サイクル目から9サイクル目でMIデータの本体である応答データ(WORD0〜7)が外部バス制御部101へ流入することになる。図3に示すように、MIデータのパケットのヘッダには、このパケットがコマンドなどのパケットではなくデータパケットであることを示すオペコード(OPCODE)や、パケットの誤り検出に用いられるパリティビット(PA)などが含まれている。
また、外部バスの各サイクルで流入するデータ量は4バイト(=32ビット)であるが、それぞれのサイクルの先頭には、当該サイクルがヘッダであるかデータであるかを示すタグが付加されている。具体的には、例えば図3において、タグが「001」のサイクルはヘッダであり、タグが「100」のサイクルはデータであり、さらにタグが「101」であるサイクルはデータの末尾である。
このようなパケットとして外部バスから外部バス制御部101へ流入したMIデータは、外部バス制御部101内のレジスタに一度登録された後、入出力制御部105の制御によって外部バス制御部101からMIデータRAM102およびバイパス経路部103に入力される。このとき、入出力制御部105は、外部バスのサイクルとCPUサイクルとの違いや外部バスの転送容量とチップ内の内部バスの転送容量との違いなどを考慮して、外部バスから流入するMIデータが外部バス制御部101内のレジスタのデータ許容量を超えない速度で外部バス制御部101からMIデータを出力させ、MIデータをMIデータRAM102およびバイパス経路部103に入力する。なお、本実施の形態においては、MIデータをMIデータRAM102およびバイパス経路部103の双方に入力するため、バイパス経路部103を通過したデータをMIデータRAM102から再送することができるが、データの再送が不要であれば、以下のセレクタ104による選択に応じて、MIデータをMIデータRAM102およびバイパス経路部103のいずれか一方のみに入力するようにしても良い。
一方、監視部106によって、データレジスタ部108のMIDQ108aの空き状況が常に監視されており、MIDQ108aにMIデータを取り込み可能な空き領域があれば、その旨が入出力制御部105へ報告されている。そこで、入出力制御部105によって、MIDQ108aに空き領域があれば、セレクタ104にMIデータRAM102またはバイパス経路部103からMIDQ108aへMIデータを出力させる。
このとき、入出力制御部105は、MIデータが外部バス制御部101から出力される時点でMIDQ108aに空き領域があり、かつ、MIデータRAM102にMIデータが記憶されていなければ、セレクタ104にバイパス経路部103からのMIデータを出力させるようにする。また、入出力制御部105は、MIデータRAM102に既にMIデータが記憶されていれば、セレクタ104にMIデータRAM102からのMIデータを出力させるようにする。
このようにセレクタ104から出力されるMIデータが選択されることにより、外部バスからチップに流入した順序でMIデータがMIDQ108aへ出力されるとともに、MIデータRAM102にMIデータが記憶されていない場合は、バイパス経路部103から直接MIデータがMIDQ108aへ出力され、MIデータがMIデータRAM102に書き込まれる時間を削減することができる。
また、入出力制御部105は、例えばプリフェッチ時などCPUコア107−1、107−2が直接MIデータを要求している場合は、セレクタ104を制御してバイパス経路部103からのMIデータを直接CPUコア107−1、107−2へ出力させるようにしても良い。
そして、入出力制御部105によってセレクタ104が制御され、MIデータがMIDQ108aへ出力されると、このMIデータに関する情報がMIB109へ通知される。そして、MIB109によって、入出力制御部105から通知されたMIデータに対応するムーブイン要求のリクエストが消去され、その旨が書込制御部110へ通知される。ムーブイン要求のリクエストがMIB109から消去されると、対応するMIデータのムーブインを完了するため、書込制御部110によって、データレジスタ部108内のMIDQ108aに対して、MIB109から消去されたリクエストに対応するMIデータのL2キャッシュ111への書き込みが指示される。この指示を受け、MIDQ108aによって、MIデータがL2キャッシュ111へ書き込まれ、ムーブインが完了する。
以降、ムーブインが完了すると、MIDQ108aには空き領域ができるため、監視部106によって空き領域があることが入出力制御部105へ報告され、再びセレクタ104から、MIデータRAM102またはバイパス経路部103からのMIデータが出力されることになる。
次に、入出力制御部105によって、MIデータRAM102にMIデータが入出力されるタイミングについて、具体例を挙げながら説明する。以下では、CPUサイクルは外部バスのサイクルの3倍の速度であり、内部バスの転送容量は外部バスの転送容量の2倍であるとする。また、MIデータとしては、図3に示したパケットが外部バス制御部101へ流入しているものとする。
図4に示すように、MIデータは、外部バスの1サイクル(CPUの3サイクル)ごとにヘッダ、データW0、データW1、…、データW7の順にチップに受信される。すなわち、CPUの3サイクルにつき4バイトずつのデータが受信され、受信データは、外部バス制御部101に流入し、外部バス制御部101内のレジスタ#1に保持される。その後、内部バスの転送容量に合わせて、4バイトずつ受信されたデータW0〜W7が8バイトずつにまとめられてレジスタ#2に保持される。このとき、レジスタ#2が8バイトを単位としてデータを保持するため、それぞれの4バイトのデータW0〜W7がレジスタ#2に保持される時間は、8バイト分のデータの受信に要するCPUの6サイクルとなる。
以上は1つの外部バスからのデータの流入を示しているが、本実施の形態においては、外部バス#1〜#4の4つの流入パスから外部バス制御部101にMIデータが流入する。これらのいずれの外部バス#1〜#4からも上述したのと同様にMIデータが流入しているため、CPUの6サイクルの間に4つの外部バスすべてからデータをMIデータRAM102およびバイパス経路部103に入力する必要がある。ここでは、それぞれ外部バス#1〜#4にCPUの1サイクルずつ割り当てて、割り当てられたサイクルで各外部バスからのデータをMIデータRAM102およびバイパス経路部103に入力するようにすれば良い。こうすることにより、4つの外部バス#1〜#4のデータは、CPUの4サイクルでMIデータRAM102およびバイパス経路部103に入力されることになり、外部バス制御部101内のレジスタが溢れることがない。
このように外部バスの数、チップのクロックレート、および外部バスと内部バスの転送容量の差などにより、1サイクルでMIデータRAM102に入力されるデータ量が異なるため、MIデータRAM102は、1サイクルで入力されるデータ量を受け付け可能である必要がある。ただし、このデータ量は、データレジスタ部108内のMIDQ108aが1サイクルで受け付けるデータ量よりも大幅に少ない。したがって、データレジスタの代用としてRAMが用いられる場合と比して、MIデータRAM102に付随する制御回路やデータバスの面積は無視できるほど小さい。
ところで、MIデータRAM102は、通常1サイクル中にデータの読み書きの一方しか実行することができない。そのため、6サイクル中4サイクルが各外部バス#1〜#4からのデータの入力に費やされると、残りの2サイクル中1サイクルは、データの出力に用いられる。そして、さらに残りの1サイクルは、データの入力と出力の間の何もしないインターバルのサイクルとしておき、データの入出力間での干渉を防止するのが望ましい。
このように、外部バス#1〜#4の4つの外部バスがチップに接続されている場合は、内部バスの転送容量やCPUのクロックレートによるチップ内部でのスループットが外部バスの少なくとも6倍であれば、図5−1に示すように、6サイクル中にすべての外部バス#1〜#4からのデータがMIデータRAM102に入力されるとともに、このデータがMIデータRAM102から出力される。このとき、外部バス#1〜#4すべてから同じタイミングでデータが流入するとは限らないが、例えば外部バス#1と外部バス#4からはデータが遅れて流入したとしても、図5−2に示すように、必ずすべての外部バス#1〜#4のデータをMIデータRAM102に入力するタイミングとMIデータRAM102から出力するタイミングとが6サイクル中にある。
そして、4つの外部バス#1〜#4のデータがMIデータRAM102から溢れることがないように入出力されるため、チップにデータレジスタ部108のみが備えられた場合よりもL2キャッシュ111に書き込まれるデータを多く取り込むことができる。また、このMIデータRAM102は、直接L2キャッシュ111に接続されるのではなく、データレジスタ部108のMIDQ108aと接続され、バッファが二段構成となっている。このため、MIデータRAM102自体の単位時間当たりのデータの流入量および流出量は、MIDQ108aよりも大幅に小さくて良く、MIデータRAM102に付随する制御回路やデータバスの小型化および低コスト化を図ることができる。
さらに、バッファを二段構成として、MIDQ108aにRAMを接続したことにより、RAMとMIDQ108aとの空間的距離に制限がなく、チップ上でMIデータRAM102を配置する位置を自由に決定することができる。このため、チップ上での回路配置を柔軟に決定することができるとともに、データレジスタ部108の大きさは変わらないため、例えば図6に示すように、チップ上で何の機能も果たさない死に地(図中斜線部)を最小限に抑制することができる。ただし、図6においては、MIDRはMIデータRAM102の位置を示しており、制御ブロックは入出力制御部105、監視部106、MIB109、および書込制御部110などの処理ブロックの位置を示している。
以上のように、本実施の形態によれば、チップ内のデータレジスタの前段にMIデータを記憶するRAMを設け、チップ内に流入するMIデータを記憶させるため、キャッシュメモリに書き込まれるMIデータをチップに多く取り込むことができるとともに、RAM自体がキャッシュメモリへの書き込みを行うわけではないので、RAMを設けたことによる回路規模の増大およびコストの増大は最小限ですむ。
なお、上記実施の形態においては、MIデータRAM102からMIDQ108aへ出力された順序でデータがL2キャッシュ111に書き込まれることとなるが、例えばL2キャッシュ111に書き込まれたデータのリプレース処理などが発生することにより、MIDQ108aからL2キャッシュ111への書き込みを待機する必要が生じることがある。このような状況は、MIB109において入出力制御部105からの通知と記憶されているリクエストとから把握することが可能であるため、MIDQ108aに取り込まれたデータの書き込みの待機が生じた場合、一度MIDQ108aに取り込まれたデータを廃棄し、後続のデータをMIデータRAM102から取り込んで書き込みを行うようにしても良い。そして、廃棄されたデータは、改めてMIDQ108aに取り込まれて書き込みが行われるようにすれば良い。
本発明は、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込む場合に適用することができる。
本発明は、キャッシュメモリにデータを書き込むキャッシュ制御装置およびキャッシュ制御方式に関し、特に、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込むことができるキャッシュ制御装置およびキャッシュ制御方法に関する。
近年、コンピュータなどの情報処理装置においては、一般にアクセス速度が低いメインメモリへのアクセス回数を減らしてCPU(Central Processing Unit)の処理速度を向上させるため、CPU上にキャッシュメモリが搭載される構成が主流となっている。キャッシュメモリは、高速アクセスが可能であるものの、容量がメインメモリよりも小さいため、CPUが必要とするデータがキャッシュメモリに記憶されていない(キャッシュミス)ことがあり、このような場合には、2次キャッシュなどの上位キャッシュやメインメモリに記憶されているデータをCPU上のキャッシュメモリへムーブインする必要が生じる。
キャッシュメモリへムーブインされるデータは、一旦キャッシュメモリに接続されるデータレジスタによって取り込まれ、データレジスタからキャッシュメモリに書き込まれるのが一般的である。
ところで、近年の技術の目覚しい進歩により、CPUの処理速度はますます向上しているとともに、メインメモリの容量はますます増大している。この結果、単位時間当たりにCPUが必要とするデータ量は多くなる一方で、これらのデータをメインメモリから探し出すのには長時間を要するようになり、CPUとメインメモリの速度が乖離し、相対的にメモリレイテンシが増大しつつある。
このような状況下では、キャッシュメモリへのデータのムーブインを適切に制御することが重要になってきており、例えば特許文献1では、メインメモリの負荷が大きくなるとムーブインするデータ量を削減し、メインメモリの負荷が小さくなると削減した分のデータのムーブインを再開する技術が開示されている。
特許文献1の技術では、キャッシュミス発生時のデータのムーブインを効率的に調整することができるものの、ムーブインされるデータを使用するCPUの処理速度がメインメモリの速度によって制限されることになり、増大しているメモリレイテンシを完全にカバーすることはできない。そこで、キャッシュミスに対するデータのムーブインを実行中に、CPUが後続する処理を次々に実行してスループットを向上することが考えられる。この場合、同時期に発生するキャッシュミスが多くなってムーブインされるデータ量が増えるため、キャッシュメモリにデータを書き込むデータレジスタが一度に取り込み可能なデータ量を増加させることが望まれる。
特開平7−210460号公報
しかしながら、データレジスタの容量を増加させるため、単にデータレジスタ内のデータキューを大きくすると、現行のチップの面積には収まりきらなくなるため、CPUが搭載されるチップの面積の増大を招き、チップの小型化に逆行することになり現実的ではない。
また、データレジスタの代用として低コストのRAM(Random Access Memory)を使用することも考えられるが、データレジスタは、キャッシュメモリに書き込まれるデータを一時的に取り込むものであるため、データレジスタの代用となるRAMは、キャッシュメモリよりは大幅に小さい容量で十分である。そして、容量が小さいにも拘らず、データレジスタの代用として機能しスループットを向上するためには、RAMの単位時間当たりのデータの流入量および流出量をキャッシュメモリへの書き込みに合わせて大きくする必要がある。このため、RAMの使用に伴う制御回路やデータバスが大きい面積を占めることになり、結果としてデータレジスタの代用部分が空間的にもコスト的にも肥大してしまう。
本発明はかかる点に鑑みてなされたものであり、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込むことができるキャッシュ制御装置およびキャッシュ制御方法を提供することを目的とする。
上記課題を解決するために、キャッシュ制御装置は、キャッシュメモリにデータを書き込むキャッシュ制御装置であって、前記キャッシュメモリへの書き込み用に外部から流入するデータを保持する第1バッファ手段と、前記第1バッファ手段に保持されるデータのうち、現時点で前記キャッシュメモリへの書き込み対象となるデータを保持する第2バッファ手段と、前記第2バッファ手段に保持されるデータの前記キャッシュメモリへの書き込みを制御する書込制御手段とを有する構成を採る
また、キャッシュ制御装置は、上記構成において、前記第1バッファ手段は、前記キャッシュメモリへの書き込みが同時に要求され得るすべてのデータを記憶可能な容量のRAMを含む構成を採る
また、キャッシュ制御装置は、上記構成において、前記第2バッファ手段に空き領域があるか否かを監視する監視手段をさらに有し、前記第1バッファ手段は、前記監視手段によって前記第2バッファ手段に空き領域があること確認された場合に、データを前記第2バッファ手段へ出力する構成を採る
また、キャッシュ制御装置は、上記構成において、前記第2バッファ手段は、前記キャッシュメモリの近傍に配置され、前記第1バッファ手段は、前記第2バッファ手段よりも前記キャッシュメモリから遠方に配置される構成を採る
また、キャッシュ制御装置は、上記構成において、前記第1バッファ手段は、複数の外部バスからのデータの流入を制御する外部バス制御手段を含み、前記第2バッファ手段は、外部バスそれぞれに対応する領域であって同量のデータを保持する領域を備える構成を採る
また、キャッシュ制御装置は、上記構成において、前記第2バッファ手段は、外部バスそれぞれについて2回の書き込み分のデータを保持する領域を備える構成を採る
また、キャッシュ制御装置は、上記構成において、外部から流入するデータに前記第1バッファ手段をバイパスさせるバイパス手段と、前記第1バッファ手段から出力されるデータまたは前記バイパス手段から出力されるデータのいずれか一方を選択して前記第2バッファ手段へ出力する選択手段とをさらに有する構成を採る
また、キャッシュ制御装置は、上記構成において、前記選択手段は、前記第2バッファ手段に空き領域がある場合に、前記バイパス手段から出力されるデータを選択する構成を採る
また、キャッシュ制御装置は、上記構成において、前記書込制御手段は、前記第1バッファ手段から前記第2バッファ手段へデータが出力されると、このデータの前記キャッシュメモリへの書き込みを前記第2バッファ手段に実行させる構成を採る
また、キャッシュ制御方法は、キャッシュメモリにデータを書き込むキャッシュ制御方法であって、前記キャッシュメモリへの書き込み用に外部から流入するデータを第1バッファに保持する第1保持工程と、前記第1保持工程にて保持されるデータのうち、現時点で前記キャッシュメモリへの書き込み対象となるデータを第2バッファに保持する第2保持工程と、前記第2保持工程にて保持されるデータの前記キャッシュメモリへの書き込みを制御する書込制御工程とを有するようにした
本発明によれば、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込むことができる。
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。なお、以下では、それぞれ1次キャッシュ(L1キャッシュ)を備えた2つのCPUコアおよび2次キャッシュ(L2キャッシュ)が1つのチップに搭載されており、L2キャッシュへのデータのムーブインが行われる場合について説明するが、本発明は、他のキャッシュへのデータの書き込み時にも同様に適用することができる。
図1は、本発明の一実施の形態に係るチップの要部構成を示すブロック図である。図1に示すチップは、外部バス制御部101、ムーブイン(Move-in:以下「MI」と略記する)データRAM102、バイパス経路部103、セレクタ104、入出力制御部105、監視部106、CPUコア107−1、107−2、L1キャッシュ107a−1、107a−2、データレジスタ部108、ムーブインバッファ(Move-in Buffer:以下「MIB」と略記する)109、書込制御部110、およびL2キャッシュ111を有している。なお、図1においては、チップに対して4つのMIデータの流入パスが設けられているが、MIデータの流入パス数は、1でも4以外の複数でも良い。
外部バス制御部101は、チップ外の図示しない上位キャッシュ、メインメモリ、または他のチップなどと外部バスを通じて接続されており、チップ内へのデータの流入パスとなる複数(図1では4つ)の外部バスを制御し、各外部バスから流入するMIデータを一時的に内部のレジスタに登録する。そして、外部バス制御部101は、入出力制御部105の制御に応じたタイミングで、いずれかの外部バスからのMIデータをMIデータRAM102およびバイパス経路部103に入力する。
MIデータRAM102は、外部バス制御部101から出力されるMIデータを記憶し、データレジスタ部108にMIデータを取り込むための空きが生じるとセレクタ104を経由してデータレジスタ部108へMIデータを出力する。すなわち、MIデータRAM102は、データレジスタ部108の前段に設けられたバッファとして機能する。具体的には、MIデータRAM102は、同時期に発行されるすべてのムーブイン要求に対する応答としてMIデータが転送されてきた場合、すべてのMIデータを記憶可能な容量のSRAM(Static Random Access Memory)などから構成されている。
このMIデータRAM102は、データレジスタ部108のバッファであるため、単位時間当たりのデータの流入量および流出量をキャッシュへの書き込みに合わせて大きくする必要はない。ただし、外部バスからのデータの流入量に対応する程度のスループットを達成する必要はある。
バイパス経路部103は、外部バス制御部101から出力されるMIデータをバイパスし、データレジスタ部108にMIデータを取り込むための空き領域がある場合や、CPUコア107−1、107−2へ直接MIデータを出力する場合に、セレクタ104を経由してデータレジスタ部108またはCPUコア107−1、107−2へMIデータを出力する。
セレクタ104は、入出力制御部105の制御に応じて、MIデータRAM102に記憶されているMIデータまたはバイパス経路部103を通過するMIデータのいずれか一方を選択し、データレジスタ部108およびCPUコア107−1、107−2へ出力する。
入出力制御部105は、外部バスのサイクルで外部バス制御部101へ流入するMIデータをCPUサイクルに合わせてMIデータRAM102およびバイパス経路部103に入力させるとともに、MIデータRAM102またはバイパス経路部103からのMIデータをセレクタ104からMIデータを出力させる。このとき、入出力制御部105は、監視部106から報告されるデータレジスタ部108の空き状況に応じて、MIデータRAM102およびバイパス経路部103のどちらを選択するか決定し、決定された処理部からのMIデータを出力するようにセレクタ104を制御する。
また、入出力制御部105は、セレクタ104からMIデータを出力させると、出力されたMIデータに関する情報をMIB109へ通知する。なお、入出力制御部105によるMIデータの入出力のタイミングについては、後に詳述する。
監視部106は、データレジスタ部108における空き状況を監視し、データレジスタ部108にMIデータを取り込む空き容量がある場合に、その旨を入出力制御部105へ報告する。なお、詳細は後述するが、監視部106は、図2に示すように、データレジスタ部108内のムーブインデータキュー(以下「MIDQ」と略記する)108aの空き状況を監視する。このとき、監視部106は、MIDQ108aの容量を外部バスの数に等分し、それぞれの外部バスに対応する容量の空き領域を監視するようにしても良い。こうすることにより、チップに複数の外部バスが接続されている場合、各外部バスから流入するデータを均等にMIDQ108aへ取り込ませることができる。
CPUコア107−1、107−2は、それぞれ内部にL1キャッシュ107a−1、107a−2を備えており、L1キャッシュ107a−1、107a−2に記憶されたデータ、L2キャッシュ111から読み出されたデータ、およびチップ外からのMIデータなどを用いて所定の処理を実行する。
データレジスタ部108は、L2キャッシュ111へ書き込まれるデータおよびL2キャッシュ111から読み出されるデータを一度取り込み、MIデータを含む書き込みデータをL2キャッシュ111へ書き込み、読み出しデータを例えばCPUコア107−1、107−2のL1キャッシュ107a−1、107a−2などへ出力する。具体的には、データレジスタ部108は、例えば図2に示すように、MIDQ108a、ライトバックデータキュー(以下「WBDQ」と略記する)108b、ムーブアウトデータキュー(以下「MODQ」と略記する)108c、およびリードデータキュー(以下「RDQ」と略記する)108dを有している。
MIDQ108aは、セレクタ104から出力されるMIデータを取り込み、取り込まれたMIデータをL2キャッシュ111に書き込む。MIDQ108aは、1つの外部バスについて2単位のデータを取り込み可能な容量を有している。すなわち、本実施の形態においては、4つの外部バスがチップに接続されているため、合計で8単位のデータを取り込み可能な容量を有している。この構成により、データがMIDQ108aに取り込まれている最中に、既にMIDQ108aに取り込まれているデータをL2キャッシュ111に書き込むという動作がすべての外部バスからのデータについて可能となる。
WBDQ108bは、L1キャッシュ107a−1、107a−2から書き戻されるライトバックデータを取り込み、取り込まれたライトバックデータをL2キャッシュ111に書き込む。MODQ108cは、L2キャッシュ111からのムーブアウトがチップの外部から要求されたムーブアウトデータ(図2では「MOデータ」)をL2キャッシュ111から読み出し、ムーブアウト要求元のチップ外部へ出力する。RDQ108dは、CPUコア107−1、107−2によって読み出しが要求されたリードデータをL2キャッシュ111から読み出し、CPUコア107−1、107−2へ出力する。
図1に戻って、MIB109は、L2キャッシュ111へのムーブインを要求するリクエストを記憶するバッファであり、入出力制御部105からMIデータに関する情報が通知されると、このMIデータに対応するリクエストを消去するとともに、その旨を書込制御部110へ通知する。
書込制御部110は、MIB109から消去されたリクエストに対応するMIデータをL2キャッシュ111に書き込むようにデータレジスタ部108を制御する。具体的には、書込制御部110は、MIB109からリクエストを消去した旨が通知されると、MIDQ108aに取り込まれているMIデータであって消去されたリクエストに対応するMIデータをL2キャッシュ111へ書き込むようにデータレジスタ部108に指示する。
L2キャッシュ111は、CPUコア107−1、107−2によって必要とされるデータを記憶しており、CPUコア107−1、107−2が必要とするデータが記憶されていない場合(キャッシュミスが発生した場合)には、チップ外の上位キャッシュ、メインメモリ、または他のチップなどから所望のデータがムーブインされる。
これらの処理ブロックのうち、外部バス制御部101、MIデータRAM102、バイパス経路部103、セレクタ104、入出力制御部105、監視部106、データレジスタ部108、MIB109、および書込制御部110は、L2キャッシュ111へのMIデータの書き込みを制御しており、本実施の形態に係るキャッシュ制御装置を構成している。
次いで、上記のように構成されたチップのL2キャッシュ111へのデータムーブイン時における動作について説明する。
CPUコア107−1、107−2によってL2キャッシュ111からのデータの読み出しが要求された際、L2キャッシュ111に所望のデータが記憶されておらずキャッシュミスが発生すると、チップ外の上位キャッシュ、メインメモリ、または他のチップなどへデータのムーブインが要求される。このムーブイン要求時に発行されるリクエストは、MIB109に記憶される。
その後、このムーブイン要求に対する応答として、チップの外部バス制御部101にMIデータが流入する。図1は4つのMIデータがそれぞれ異なる外部バスから外部バス制御部101に流入する様子を示しているが、各外部バスからMIデータが流入するタイミングは重なっていても異なっていても良い。ここでは、いずれか1つの外部バスからMIデータが流入する場合について説明を続ける。
外部バス制御部101に流入するMIデータは、例えば図3に示すようなパケットで構成されている。すなわち、外部バスの1サイクル目で4バイトのヘッダが外部バス制御部101へ流入し、外部バスの2サイクル目から9サイクル目でMIデータの本体である応答データ(WORD0〜7)が外部バス制御部101へ流入することになる。図3に示すように、MIデータのパケットのヘッダには、このパケットがコマンドなどのパケットではなくデータパケットであることを示すオペコード(OPCODE)や、パケットの誤り検出に用いられるパリティビット(PA)などが含まれている。
また、外部バスの各サイクルで流入するデータ量は4バイト(=32ビット)であるが、それぞれのサイクルの先頭には、当該サイクルがヘッダであるかデータであるかを示すタグが付加されている。具体的には、例えば図3において、タグが「001」のサイクルはヘッダであり、タグが「100」のサイクルはデータであり、さらにタグが「101」であるサイクルはデータの末尾である。
このようなパケットとして外部バスから外部バス制御部101へ流入したMIデータは、外部バス制御部101内のレジスタに一度登録された後、入出力制御部105の制御によって外部バス制御部101からMIデータRAM102およびバイパス経路部103に入力される。このとき、入出力制御部105は、外部バスのサイクルとCPUサイクルとの違いや外部バスの転送容量とチップ内の内部バスの転送容量との違いなどを考慮して、外部バスから流入するMIデータが外部バス制御部101内のレジスタのデータ許容量を超えない速度で外部バス制御部101からMIデータを出力させ、MIデータをMIデータRAM102およびバイパス経路部103に入力する。なお、本実施の形態においては、MIデータをMIデータRAM102およびバイパス経路部103の双方に入力するため、バイパス経路部103を通過したデータをMIデータRAM102から再送することができるが、データの再送が不要であれば、以下のセレクタ104による選択に応じて、MIデータをMIデータRAM102およびバイパス経路部103のいずれか一方のみに入力するようにしても良い。
一方、監視部106によって、データレジスタ部108のMIDQ108aの空き状況が常に監視されており、MIDQ108aにMIデータを取り込み可能な空き領域があれば、その旨が入出力制御部105へ報告されている。そこで、入出力制御部105によって、MIDQ108aに空き領域があれば、セレクタ104にMIデータRAM102またはバイパス経路部103からMIDQ108aへMIデータを出力させる。
このとき、入出力制御部105は、MIデータが外部バス制御部101から出力される時点でMIDQ108aに空き領域があり、かつ、MIデータRAM102にMIデータが記憶されていなければ、セレクタ104にバイパス経路部103からのMIデータを出力させるようにする。また、入出力制御部105は、MIデータRAM102に既にMIデータが記憶されていれば、セレクタ104にMIデータRAM102からのMIデータを出力させるようにする。
このようにセレクタ104から出力されるMIデータが選択されることにより、外部バスからチップに流入した順序でMIデータがMIDQ108aへ出力されるとともに、MIデータRAM102にMIデータが記憶されていない場合は、バイパス経路部103から直接MIデータがMIDQ108aへ出力され、MIデータがMIデータRAM102に書き込まれる時間を削減することができる。
また、入出力制御部105は、例えばプリフェッチ時などCPUコア107−1、107−2が直接MIデータを要求している場合は、セレクタ104を制御してバイパス経路部103からのMIデータを直接CPUコア107−1、107−2へ出力させるようにしても良い。
そして、入出力制御部105によってセレクタ104が制御され、MIデータがMIDQ108aへ出力されると、このMIデータに関する情報がMIB109へ通知される。そして、MIB109によって、入出力制御部105から通知されたMIデータに対応するムーブイン要求のリクエストが消去され、その旨が書込制御部110へ通知される。ムーブイン要求のリクエストがMIB109から消去されると、対応するMIデータのムーブインを完了するため、書込制御部110によって、データレジスタ部108内のMIDQ108aに対して、MIB109から消去されたリクエストに対応するMIデータのL2キャッシュ111への書き込みが指示される。この指示を受け、MIDQ108aによって、MIデータがL2キャッシュ111へ書き込まれ、ムーブインが完了する。
以降、ムーブインが完了すると、MIDQ108aには空き領域ができるため、監視部106によって空き領域があることが入出力制御部105へ報告され、再びセレクタ104から、MIデータRAM102またはバイパス経路部103からのMIデータが出力されることになる。
次に、入出力制御部105によって、MIデータRAM102にMIデータが入出力されるタイミングについて、具体例を挙げながら説明する。以下では、CPUサイクルは外部バスのサイクルの3倍の速度であり、内部バスの転送容量は外部バスの転送容量の2倍であるとする。また、MIデータとしては、図3に示したパケットが外部バス制御部101へ流入しているものとする。
図4に示すように、MIデータは、外部バスの1サイクル(CPUの3サイクル)ごとにヘッダ、データW0、データW1、…、データW7の順にチップに受信される。すなわち、CPUの3サイクルにつき4バイトずつのデータが受信され、受信データは、外部バス制御部101に流入し、外部バス制御部101内のレジスタ#1に保持される。その後、内部バスの転送容量に合わせて、4バイトずつ受信されたデータW0〜W7が8バイトずつにまとめられてレジスタ#2に保持される。このとき、レジスタ#2が8バイトを単位としてデータを保持するため、それぞれの4バイトのデータW0〜W7がレジスタ#2に保持される時間は、8バイト分のデータの受信に要するCPUの6サイクルとなる。
以上は1つの外部バスからのデータの流入を示しているが、本実施の形態においては、外部バス#1〜#4の4つの流入パスから外部バス制御部101にMIデータが流入する。これらのいずれの外部バス#1〜#4からも上述したのと同様にMIデータが流入しているため、CPUの6サイクルの間に4つの外部バスすべてからデータをMIデータRAM102およびバイパス経路部103に入力する必要がある。ここでは、それぞれ外部バス#1〜#4にCPUの1サイクルずつ割り当てて、割り当てられたサイクルで各外部バスからのデータをMIデータRAM102およびバイパス経路部103に入力するようにすれば良い。こうすることにより、4つの外部バス#1〜#4のデータは、CPUの4サイクルでMIデータRAM102およびバイパス経路部103に入力されることになり、外部バス制御部101内のレジスタが溢れることがない。
このように外部バスの数、チップのクロックレート、および外部バスと内部バスの転送容量の差などにより、1サイクルでMIデータRAM102に入力されるデータ量が異なるため、MIデータRAM102は、1サイクルで入力されるデータ量を受け付け可能である必要がある。ただし、このデータ量は、データレジスタ部108内のMIDQ108aが1サイクルで受け付けるデータ量よりも大幅に少ない。したがって、データレジスタの代用としてRAMが用いられる場合と比して、MIデータRAM102に付随する制御回路やデータバスの面積は無視できるほど小さい。
ところで、MIデータRAM102は、通常1サイクル中にデータの読み書きの一方しか実行することができない。そのため、6サイクル中4サイクルが各外部バス#1〜#4からのデータの入力に費やされると、残りの2サイクル中1サイクルは、データの出力に用いられる。そして、さらに残りの1サイクルは、データの入力と出力の間の何もしないインターバルのサイクルとしておき、データの入出力間での干渉を防止するのが望ましい。
このように、外部バス#1〜#4の4つの外部バスがチップに接続されている場合は、内部バスの転送容量やCPUのクロックレートによるチップ内部でのスループットが外部バスの少なくとも6倍であれば、図5−1に示すように、6サイクル中にすべての外部バス#1〜#4からのデータがMIデータRAM102に入力されるとともに、このデータがMIデータRAM102から出力される。このとき、外部バス#1〜#4すべてから同じタイミングでデータが流入するとは限らないが、例えば外部バス#1と外部バス#4からはデータが遅れて流入したとしても、図5−2に示すように、必ずすべての外部バス#1〜#4のデータをMIデータRAM102に入力するタイミングとMIデータRAM102から出力するタイミングとが6サイクル中にある。
そして、4つの外部バス#1〜#4のデータがMIデータRAM102から溢れることがないように入出力されるため、チップにデータレジスタ部108のみが備えられた場合よりもL2キャッシュ111に書き込まれるデータを多く取り込むことができる。また、このMIデータRAM102は、直接L2キャッシュ111に接続されるのではなく、データレジスタ部108のMIDQ108aと接続され、バッファが二段構成となっている。このため、MIデータRAM102自体の単位時間当たりのデータの流入量および流出量は、MIDQ108aよりも大幅に小さくて良く、MIデータRAM102に付随する制御回路やデータバスの小型化および低コスト化を図ることができる。
さらに、バッファを二段構成として、MIDQ108aにRAMを接続したことにより、RAMとMIDQ108aとの空間的距離に制限がなく、チップ上でMIデータRAM102を配置する位置を自由に決定することができる。このため、チップ上での回路配置を柔軟に決定することができるとともに、データレジスタ部108の大きさは変わらないため、例えば図6に示すように、チップ上で何の機能も果たさない死に地(図中斜線部)を最小限に抑制することができる。ただし、図6においては、MIDRはMIデータRAM102の位置を示しており、制御ブロックは入出力制御部105、監視部106、MIB109、および書込制御部110などの処理ブロックの位置を示している。
以上のように、本実施の形態によれば、チップ内のデータレジスタの前段にMIデータを記憶するRAMを設け、チップ内に流入するMIデータを記憶させるため、キャッシュメモリに書き込まれるMIデータをチップに多く取り込むことができるとともに、RAM自体がキャッシュメモリへの書き込みを行うわけではないので、RAMを設けたことによる回路規模の増大およびコストの増大は最小限ですむ。
なお、上記実施の形態においては、MIデータRAM102からMIDQ108aへ出力された順序でデータがL2キャッシュ111に書き込まれることとなるが、例えばL2キャッシュ111に書き込まれたデータのリプレース処理などが発生することにより、MIDQ108aからL2キャッシュ111への書き込みを待機する必要が生じることがある。このような状況は、MIB109において入出力制御部105からの通知と記憶されているリクエストとから把握することが可能であるため、MIDQ108aに取り込まれたデータの書き込みの待機が生じた場合、一度MIDQ108aに取り込まれたデータを廃棄し、後続のデータをMIデータRAM102から取り込んで書き込みを行うようにしても良い。そして、廃棄されたデータは、改めてMIDQ108aに取り込まれて書き込みが行われるようにすれば良い。
本発明は、チップの小型化および低コスト化を実現しつつ、キャッシュメモリに書き込まれるデータを多く取り込む場合に適用することができる。
図1は、本発明の一実施の形態に係るチップの要部構成を示すブロック図である。 図2は、一実施の形態に係るデータレジスタ部の内部構成を示すブロック図である。 図3は、一実施の形態に係るムーブインデータのパケット構成の一例を示す図である。 図4は、一実施の形態に係るチップへのデータ流入の様子を示す図である。 図5−1は、一実施の形態に係るRAMへのムーブインデータの入出力タイミングの一例を示す図である。 図5−2は、一実施の形態に係るRAMへのムーブインデータの入出力タイミングの他の一例を示す図である。 図6は、一実施の形態に係るチップ上の回路配置の一例を示す図である。
符号の説明
101 外部バス制御部
102 MIデータRAM
103 バイパス経路部
104 セレクタ
105 入出力制御部
106 監視部
107−1、107−2 CPUコア
107a−1、107a−2 L1キャッシュ
108 データレジスタ部
108a MIDQ
108b WBDQ
108c MODQ
108d RDQ
109 MIB
110 書込制御部
111 L2キャッシュ

Claims (10)

  1. キャッシュメモリにデータを書き込むキャッシュ制御装置であって、
    前記キャッシュメモリへの書き込み用に外部から流入するデータを保持する第1バッファ手段と、
    前記第1バッファ手段に保持されるデータのうち、現時点で前記キャッシュメモリへの書き込み対象となるデータを保持する第2バッファ手段と、
    前記第2バッファ手段に保持されるデータの前記キャッシュメモリへの書き込みを制御する書込制御手段と
    を有することを特徴とするキャッシュ制御装置。
  2. 前記第1バッファ手段は、
    前記キャッシュメモリへの書き込みが同時に要求され得るすべてのデータを記憶可能な容量のRAM(Random Access Memory)を含むことを特徴とする請求項1記載のキャッシュ制御装置。
  3. 前記第2バッファ手段に空き領域があるか否かを監視する監視手段をさらに有し、
    前記第1バッファ手段は、
    前記監視手段によって前記第2バッファ手段に空き領域があること確認された場合に、データを前記第2バッファ手段へ出力することを特徴とする請求項1記載のキャッシュ制御装置。
  4. 前記第2バッファ手段は、
    前記キャッシュメモリの近傍に配置され、
    前記第1バッファ手段は、
    前記第2バッファ手段よりも前記キャッシュメモリから遠方に配置される
    ことを特徴とする請求項1記載のキャッシュ制御装置。
  5. 前記第1バッファ手段は、
    複数の外部バスからのデータの流入を制御する外部バス制御手段を含み、
    前記第2バッファ手段は、
    外部バスそれぞれに対応する領域であって同量のデータを保持する領域を備える
    ことを特徴とする請求項1記載のキャッシュ制御装置。
  6. 前記第2バッファ手段は、
    外部バスそれぞれについて2回の書き込み分のデータを保持する領域を備えることを特徴とする請求項5記載のキャッシュ制御装置。
  7. 外部から流入するデータに前記第1バッファ手段をバイパスさせるバイパス手段と、
    前記第1バッファ手段から出力されるデータまたは前記バイパス手段から出力されるデータのいずれか一方を選択して前記第2バッファ手段へ出力する選択手段と
    をさらに有することを特徴とする請求項1記載のキャッシュ制御装置。
  8. 前記選択手段は、
    前記第2バッファ手段に空き領域がある場合に、前記バイパス手段から出力されるデータを選択することを特徴とする請求項7記載のキャッシュ制御装置。
  9. 前記書込制御手段は、
    前記第1バッファ手段から前記第2バッファ手段へデータが出力されると、このデータの前記キャッシュメモリへの書き込みを前記第2バッファ手段に実行させることを特徴とする請求項1記載のキャッシュ制御装置。
  10. キャッシュメモリにデータを書き込むキャッシュ制御方法であって、
    前記キャッシュメモリへの書き込み用に外部から流入するデータを第1バッファに保持する第1保持工程と、
    前記第1保持工程にて保持されるデータのうち、現時点で前記キャッシュメモリへの書き込み対象となるデータを第2バッファに保持する第2保持工程と、
    前記第2保持工程にて保持されるデータの前記キャッシュメモリへの書き込みを制御する書込制御工程と
    を有することを特徴とするキャッシュ制御方法。
JP2008501580A 2006-02-27 2006-02-27 演算処理装置、キャッシュメモリ制御装置及び制御方法 Expired - Fee Related JP4409620B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/303622 WO2007097030A1 (ja) 2006-02-27 2006-02-27 キャッシュ制御装置およびキャッシュ制御方法

Publications (2)

Publication Number Publication Date
JPWO2007097030A1 true JPWO2007097030A1 (ja) 2009-07-09
JP4409620B2 JP4409620B2 (ja) 2010-02-03

Family

ID=38437089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008501580A Expired - Fee Related JP4409620B2 (ja) 2006-02-27 2006-02-27 演算処理装置、キャッシュメモリ制御装置及び制御方法

Country Status (4)

Country Link
US (1) US8312218B2 (ja)
EP (2) EP1990730B1 (ja)
JP (1) JP4409620B2 (ja)
WO (1) WO2007097030A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810116B (zh) * 2013-12-24 2017-06-20 苏州国芯科技有限公司 用于嵌入式系统的指令存储装置
CN103810117B (zh) * 2013-12-24 2017-03-22 苏州国芯科技有限公司 处理器用指令存储系统
CN103810122B (zh) * 2013-12-24 2017-03-22 苏州国芯科技有限公司 用于嵌入式系统的高速缓存器
CN107959694B (zh) * 2016-10-14 2021-04-06 中兴通讯股份有限公司 数据同步缓存的方法和装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5837633B2 (ja) 1979-07-23 1983-08-17 富士通株式会社 バッフア・メモリ記憶制御方式
JPS6320639A (ja) 1986-07-15 1988-01-28 Nec Corp メモリアクセス制御装置
JPS6320640A (ja) 1986-07-15 1988-01-28 Nec Corp メモリアクセス制御装置
JPH0769862B2 (ja) 1988-02-12 1995-07-31 日本電気株式会社 キャッシュメモリ装置
JPH0322053A (ja) * 1989-06-20 1991-01-30 Fujitsu Ltd ムーブ・イン・バッファ制御方式
JPH03116345A (ja) * 1989-09-29 1991-05-17 Nec Ibaraki Ltd データ処理装置
JPH04153751A (ja) * 1990-10-17 1992-05-27 Fujitsu Ltd バッファ記憶制御方式
US5454093A (en) * 1991-02-25 1995-09-26 International Business Machines Corporation Buffer bypass for quick data access
JP2637320B2 (ja) * 1991-10-04 1997-08-06 富士通株式会社 バッファ記憶制御方式
JP3093446B2 (ja) 1992-06-16 2000-10-03 富士通株式会社 情報処理装置
JPH06222990A (ja) * 1992-10-16 1994-08-12 Fujitsu Ltd データ処理装置
US5668971A (en) * 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
US6219773B1 (en) * 1993-10-18 2001-04-17 Via-Cyrix, Inc. System and method of retiring misaligned write operands from a write buffer
KR970010368B1 (ko) * 1994-01-18 1997-06-25 삼성전자 주식회사 캐시라인 리프레이스장치 및 방법
JP3174211B2 (ja) * 1994-01-25 2001-06-11 富士通株式会社 バッファストレイジのムーブイン制御方法
JP3490502B2 (ja) 1994-08-01 2004-01-26 富士通株式会社 メモリ制御装置
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US6507898B1 (en) * 1997-04-30 2003-01-14 Canon Kabushiki Kaisha Reconfigurable data cache controller
US6055649A (en) * 1997-11-19 2000-04-25 Texas Instruments Incorporated Processor test port with scan chains and data streaming
WO1999049395A1 (fr) 1998-03-23 1999-09-30 Hitachi, Ltd. Controleur de memoire tampon
JP2003122632A (ja) * 2001-10-17 2003-04-25 Nec Corp キャッシュデータ登録システム及び登録方法
JP3845043B2 (ja) * 2002-06-28 2006-11-15 富士通株式会社 命令フェッチ制御装置
US7739451B1 (en) * 2002-12-27 2010-06-15 Unisys Corporation Method and apparatus for stacked address, bus to memory data transfer

Also Published As

Publication number Publication date
EP1990730A4 (en) 2009-07-08
EP1990730B1 (en) 2017-09-27
US8312218B2 (en) 2012-11-13
EP2261804A1 (en) 2010-12-15
JP4409620B2 (ja) 2010-02-03
EP2261804B1 (en) 2019-08-07
WO2007097030A1 (ja) 2007-08-30
US20080320223A1 (en) 2008-12-25
EP1990730A1 (en) 2008-11-12

Similar Documents

Publication Publication Date Title
US8788759B2 (en) Double-buffered data storage to reduce prefetch generation stalls
US20070220361A1 (en) Method and apparatus for guaranteeing memory bandwidth for trace data
US20090100206A1 (en) Memory and I/O Bridge
US7447845B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced by state machines with differing functionality
US8352712B2 (en) Method and system for specualtively sending processor-issued store operations to a store queue with full signal asserted
US8190825B2 (en) Arithmetic processing apparatus and method of controlling the same
US6993633B1 (en) Computer system utilizing speculative read requests to cache memory
US20080140934A1 (en) Store-Through L2 Cache Mode
US6101589A (en) High performance shared cache
CN116880773B (zh) 一种内存扩展装置及数据处理方法、系统
US20070260754A1 (en) Hardware Assisted Exception for Software Miss Handling of an I/O Address Translation Cache Miss
JP4409620B2 (ja) 演算処理装置、キャッシュメモリ制御装置及び制御方法
JP5499987B2 (ja) 共有キャッシュメモリ装置
TW201908968A (zh) 近記憶體運算架構
US7882309B2 (en) Method and apparatus for handling excess data during memory access
EP2128771B1 (en) Method and apparatus for controlling cache memory
EP1668513B1 (en) Cache bank interface unit
US8327079B2 (en) Cache memory control device and pipeline control method
JP4173858B2 (ja) 命令キャッシュ、及びメモリ競合を低減する方法
EP1431878A2 (en) Shared write buffer in a peripheral interface and method of operating
US7089364B2 (en) System and method to stall dispatch of gathered store operations in a store queue using a timer
JPH05282208A (ja) キャッシュメモリ制御方式
JP4111645B2 (ja) キャッシュミスした後のメモリバスアクセス制御方式
JP5091548B2 (ja) メモリシステム
JP2762798B2 (ja) 命令キャッシュを有するパイプライン構成の情報処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090605

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090811

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091009

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091111

R150 Certificate of patent or registration of utility model

Ref document number: 4409620

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131120

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees