説明

キャッシュメモリ装置、半導体集積回路および演算処理装置

【課題】配線コストを抑えつつ、演算処理部から主記憶部へのデータ書出しに要する時間を短縮する。
【解決手段】演算処理部20によって書出されたデータを一時的に保持するデータメモリ11と、演算処理部20からデータメモリ11への入力経路L50とデータメモリ11から主記憶部30への出力経路L60とを接続する接続部12と、出力経路L60に設けられ、データメモリ11から出力されるデータまたは演算処理部20から接続部12経由で転送されるデータの何れか一方を選択して出力経路L60へ転送する選択部14と、データメモリ11から主記憶部30へデータを書出す場合には、選択部14を制御して、データメモリ11から出力されるデータを出力経路L60へ転送させ、演算処理部20から主記憶部30へデータを書出す場合には、選択部14を制御して、該データを接続部12経由で出力経路L60へ転送させる制御部13とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュメモリ装置、半導体集積回路および演算処理装置に関する。
【背景技術】
【0002】
近年、CPU(Central Processing Unit)などのプロセッサコアを備える演算処理装置において、処理の高速化を図るために、キャッシュメモリを設けることが一般的に行われている。キャッシュメモリは、メインメモリなどの主記憶部とプロセッサコアとの間に設けられ、プロセッサコアが頻繁に使用するデータ等を一時的に保持する。プロセッサコアは、演算処理を実行する場合に、主記憶部よりも近い位置にあるキャッシュメモリからデータを読み込むことで、メモリアクセスに要する時間を短縮することができる。
【0003】
また、従来の演算処理装置では、プロセッサコアの演算処理によって加工されたデータは、キャッシュメモリに一旦保持され、所定のタイミングで主記憶部へ書出すことが行われる。ところが、キャッシュメモリ経由でデータを主記憶部へ書出すこととすると、キャッシュメモリを経由する分だけ、データ書出しに要する時間が長くなってしまう。そこで、データ書出しに要する時間を短縮して演算処理装置の性能を向上させるために、演算処理装置には、プロセッサコアと主記憶部との間を直接繋ぐデータ経路が設けられる場合がある。図7に、かかるデータ経路が設けられた演算処理装置の一例を示す。
【0004】
図7に示すように、演算処理装置500は、プロセッサコア(以下、単に「コア」と呼ぶ)501と、第1のキュー502と、第2のキュー503と、第3のキュー504とを備える。また、演算処理装置500は、セレクタ505と、データメモリ506と、制御部507と、MAC(Memory Access Controller)508とを備える。
【0005】
コア501は、データメモリ506に記憶されたデータを使用して様々な演算処理を実行する演算処理部である。第1のキュー502は、ライトバックの実行時に、コア501からデータメモリ506へ書き戻されるデータを一時的に保持するキューである。第2のキュー503は、キャッシュリプレース時に、データメモリ506からMAC508を介して図示しない主記憶部へ書き戻されるデータを一時的に保持するキューである。第3のキュー504は、キャッシュミスが生じた場合のムーブインの実行時に、MAC508からデータメモリ506へ転送されるデータを一時的に保持するキューである。
【0006】
セレクタ505は、第1のキュー502および第3のキュー504に保持されたデータのいずれか一方を選択してデータメモリ506へ出力する。データメモリ506は、コア501によって頻繁に使用されるデータやコア501の演算処理により加工されたデータを一時的に保持する。制御部507は、コア501からの命令に基づき、パイプライン処理によりデータの書出しあるいは読込みを実行する。具体的には、制御部507は、MO(Move Out)ポート部511と、プライオリティ部512と、パイプライン513と、タグメモリ514とを備える。
【0007】
MOポート部511は、コア501からのデータ書出しやデータ読込み等のオーダ応答がセットされる。プライオリティ部512は、これらの調停(データ干渉制御)を行い、パイプライン513へ投入する。タグメモリ514は、データメモリ506に記憶されたデータの物理アドレスやタグ検索に用いられる論理アドレス等を保持する。パイプライン513は、プライオリティ部512からデータ書出し要求が投入されると、該要求に含まれる論理アドレスに基づきタグメモリ514を検索し、コア501が要求したデータの物理アドレスを特定する。MAC508は、図示しない主記憶部に接続し、第2のキュー503より取得したデータを主記憶部へ書出す。なお、MAC508は、その他の処理として、例えば、キャッシュミスが生じた場合に、キャッシュミスしたデータを主記憶部から取得し、第3のキュー504へ転送する。
【0008】
ここで、データメモリ506に最新データが記憶されている場合、主記憶部へのデータ書出しには、データメモリ506からMAC508へのデータ経路L20が用いられる。なお、コア501からデータメモリ506へのデータの書き戻しには、コア501から第1のキュー502およびセレクタ505を経由しデータメモリ506へと至るデータ経路L10が用いられる。
【0009】
一方、コア501に最新データがあり、データメモリ506には古いデータしかない場合、MAC508へのデータ書出しには、コア501から直接MAC508へ転送するデータ経路L30が用いられる。このように、コア501とMAC508とを直接繋ぐデータ経路L20を設けることにより、コア501に存在する最新データをデータメモリ506を経由することなく、主記憶部へ素早く書出すことができる。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開昭63−20640号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、コアとMACとを直接繋ぐデータ経路を新たに設けた場合、配線コストが高くなるという問題がある。そして、かかる問題は、特に、マルチコア化およびマルチバンク化されたCPUにおいて顕著となる。以下、かかる点について、具体的に説明する。
【0012】
近年、1つのコアを備えるシングルコアのCPUにおいては、消費電力の増大などの問題が無視できないものとなっており、性能向上の限界が近づいている。そこで、1つの基板上に複数のコアを備えるマルチコア化によって、CPUのさらなる性能向上が図られることがある。また、マルチコア化と同時に、キャッシュメモリや主記憶部を複数のバンクに分割することにより、各コアとキャッシュメモリや主記憶部との間のスループットの向上が図られることがある。図8は、従来におけるCPUの概略構成を示す図である。
【0013】
図8に示すように、マルチコア化およびバンク分けされたCPU700においては、複数のコア#0〜#7、データメモリ#0〜#3、MAC#0〜#3が基板の外縁に配置される。また、基板の中央には、全体のデータの転送を制御する制御部が配置される。ここで、バンク分けされたそれぞれの主記憶部には、それぞれ異なるデータが記憶されるため、各コア#0〜#7は、基板上の全てのMAC#0〜#3に対してデータの書出しを行う可能性がある。そのため、コアとMACとを直接繋ぐデータ経路を設ける場合には、全てのコアおよびMACを互いに接続する可能性があり、その結果、配線コストが高くなる。
【0014】
より具体的には、CPU700には、コアとMACとを接続するデータ経路L30が、全コア#0〜#3及び全MAC#0〜#3間に設けられる。例えば、図8に示すように、コア#1には、全てのMAC#0〜#3と接続するデータ経路L30a〜L30dが設けられる。なお、コア#1には、さらに、データメモリ#0〜#3と接続するデータ経路L20a〜L20dが設けられ、また、各データメモリ#0〜#3には、対応するMAC#0〜#3と接続するデータ経路L10a〜L10dが設けられる。
【0015】
そして、これらのデータ経路のうち、特に、データ経路L30b及びデータ経路L30dは、基板の中央に配置された制御部を横切るようにして設ける可能性があるため、配線コストが非常に高くなる。そのため、マルチコア化およびマルチバンク化されたCPU700においては、コアとMACとを直接繋ぐデータ経路L30の実装が困難であった。なお、図8において、コア及びMACとデータメモリ及び制御部との間の領域A1,A2は、配線が特に集中する領域であり、このような領域にさらにデータ経路L30を設けることは、回路規模の増大を招く結果となるため、この点からも実装は困難であった。
【0016】
開示の技術は、上記に鑑みてなされたものであって、配線コストを抑えつつ、演算処理部から主記憶部へのデータ書出しに要する時間を短縮することのできるキャッシュメモリ装置、半導体集積回路および演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【0017】
本願の開示するキャッシュメモリ装置、半導体集積回路および演算処理装置は、一つの態様において、演算処理を実行する演算処理部によって書出されたデータを一時的に保持するデータメモリと、前記演算処理部から前記データメモリへの入力経路と、前記データメモリから主記憶部への出力経路とを接続する接続部と、前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部とを備える。
【発明の効果】
【0018】
本願の開示するキャッシュメモリ装置、半導体集積回路および演算処理装置の一つの態様によれば、配線コストを抑えつつ、演算処理部から主記憶部へのデータ書出しに要する時間を短縮することができるという効果を奏する。
【図面の簡単な説明】
【0019】
【図1】図1は、実施例1にかかるキャッシュメモリ装置における接続関係を示す図である。
【図2】図2は、実施例2にかかるCPUの概略構成を示す図である。
【図3】図3は、実施例2にかかるCPUの要部構成を示す図である。
【図4】図4は、実施例2にかかるキャッシュメモリ装置における接続関係を示す図である。
【図5】図5は、実施例2にかかる制御部の処理手順を示すフローチャートである。
【図6】図6は、実施例2にかかるCPUを搭載するコンピュータの一例を示すブロック図である。
【図7】図7は、従来における演算処理装置の一例を示す図である。
【図8】図8は、従来におけるCPUの概略構成を示す図である。
【発明を実施するための形態】
【0020】
以下に、本願の開示するキャッシュメモリ装置、半導体集積回路および演算処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例1】
【0021】
図1は、実施例1にかかるキャッシュメモリ装置における接続関係を示す図である。本実施例にかかるキャッシュメモリ装置10は、演算処理部20と主記憶部とのデータのやり取りを高速化する記憶装置であり、図1に示すように、演算処理部20と主記憶部30との間に設けられる。主記憶部30は、データを記憶する記憶部であり、演算処理部20は、主記憶部30に記憶されたデータを使用して各種の演算処理を実行する。
【0022】
キャッシュメモリ装置10は、データメモリ11と、接続部12と、制御部13と、選択部14とを備える。データメモリ11は、演算処理部20によって演算処理されたデータを一時的に保持する。具体的には、データメモリ11は、図1に示すように、演算処理部20から入力経路L50を経由して転送されるデータを一時的に保持する。
【0023】
接続部12は、演算処理部20からデータメモリ11への入力経路L50と、データメモリ11から主記憶部30への出力経路L60とを接続する配線である。選択部14は、出力経路L60に設けられ、制御部13の制御により、データメモリ11から出力されるデータまたは演算処理部20から接続部12経由で転送されるデータの何れか一方を選択して主記憶部30へ転送する。
【0024】
すなわち、制御部13は、データメモリ11に保持されたデータを主記憶部30へ書出す場合には、選択部14を制御して、データメモリ11から出力されるデータを選択させる。そして、選択部14は、該データを出力経路L60経由で主記憶部30へ転送する。
【0025】
一方、演算処理部20から主記憶部30へデータを直接書出す場合、制御部13は、選択部14を制御して、該データを接続部12経由で選択部14へ転送させる。そして、選択部14は、該データを出力経路L60経由で主記憶部30へ転送する。これにより、演算処理部20によって演算処理されたデータは、演算処理部20→入力経路L50→接続部12→選択部14→出力経路L60を経由して主記憶部30へと書出される。
【0026】
このように、本実施例では、演算処理部20からデータメモリ11を迂回して主記憶部30へ直接データを書出す経路を設けたため、演算処理部20から主記憶部30へのデータ書出しに要する時間を短縮することができる。しかも、かかるデータ経路は、演算処理部20からデータメモリ11への入力経路L50およびデータメモリ11から主記憶部30への出力経路L60を利用して設けられるため、配線コストを抑えることができる。
【0027】
したがって、本実施例では、配線コストを抑えつつ、演算処理部20から主記憶部30へのデータ書出しに要する時間を短縮することができる。
【実施例2】
【0028】
次に、実施例2にかかるキャッシュメモリ装置、半導体集積回路および演算処理装置について説明する。なお、以下においては、半導体集積回路の一例として、1つの基板上にコア、データメモリ及びMACがそれぞれ複数配置されたCPUを用いて説明する。ただし、本願開示の技術は、1つの基板上にコア、データメモリ及びMACがそれぞれ1つずつ配置されたCPUに対しても適用することができる。
【0029】
図2は、本実例にかかるCPUの概略構成を示す図である。図2に示すように、CPU1は、8つのコア#0〜#7と、4つのデータメモリ#0〜#3と、4つのMAC#0〜#3と、制御部とを有する半導体集積回路である。かかるCPU1において、コア#0〜#7、データメモリ#0〜#3及びMAC#0〜#3は、それぞれ基板の外縁に配置され、制御部は、基板の中央に配置される。
【0030】
コア#0〜#7は、データメモリ#0〜#3に一時的に保持されたデータを取得し、様々な演算処理を実行する演算処理部である。ここで、例えば、コア#0〜#7により演算処理されたデータは、各コア#0〜#7内にそれぞれ設けられた図示しない記憶部(以下、「一次キャッシュ」と呼ぶ)またはデータメモリ#0〜#3に一時的に記憶される。そして、コア#0〜#7は、一次キャッシュに記憶されたデータ或いはデータメモリ#0〜#3に記憶されたデータを図示しない主記憶部へ書出すよう制御部に対して命令する。
【0031】
データメモリ#0〜#3は、コア#0〜#7が頻繁に使用するデータやコア#0〜#7により演算処理されたデータ等を一時的に保持する。具体的には、制御部においてライトバック(Write Back)処理が実行されると、データメモリ#0〜#3は、該コアの一次キャッシュに保持されたデータを取得して記憶する。また、制御部においてデータ書出し処理が実行されると、データメモリ#0〜#3は、自己が保持するデータをMAC#0〜#3に出力する。
【0032】
MAC#0〜#3は、図示しない主記憶部と接続し、主記憶部へのアクセスを制御する主記憶制御装置である。具体的には、MAC#0〜#3は、データメモリ#0〜#3からデータを取得し、主記憶部に対して該データを書出す。
【0033】
制御部は、パイプライン処理によってデータ書出し処理やライトバック処理などを実行する。ここで、データ書出し処理とは、コア#0〜#7の一次キャッシュに記憶された最新データを主記憶部へと書き戻す処理またはデータメモリ#0〜#3に記憶されたデータを主記憶部へと書き戻す処理を示す。また、ライトバック処理とは、コア#0〜#7の一次キャッシュに記憶されたデータをデータメモリ#0〜#3に書き戻す処理を示す。
【0034】
図3は、本実施例にかかるCPU1の要部構成を示す図である。なお、図3においては、特に、図2に示したCPU1のコア#0〜#3、データメモリ#0,#1およびMAC#0,#1に対応する部分を示している。
【0035】
図3に示すCPU1は、制御部101と、第1のキュー102と、第2のキュー103と、第3のキュー104と、セレクタ105と、データメモリ106と、セレクタ107,108と、接続部L0とを備える。また、CPU1は、コア200a,200bと、MAC300とを備える。なお、図3に示すCPU1は、左右対称に構成されているため、左半分についてのみ符号を付している。
【0036】
コア200a,200bは、MAC300に接続する図示しない主記憶部またはデータメモリ106に記憶されたデータを使用して様々な演算処理を実行する。例えば、コア200a,200bは、演算処理に用いるデータを制御部101に対して要求し、該当するデータがデータメモリ106に記憶されている場合(キャッシュヒット)、データ読出し処理によりデータメモリ106から該当するデータを読み出す。一方、演算処理に用いるデータがデータメモリ106に記憶されていない場合(キャッシュミス)、コア200a,200bは、ムーブイン処理により主記憶部からMAC300及び第3のキュー104を介してデータメモリ106へデータを転送させた後、該データをデータメモリ106から取得する。
【0037】
また、コア200a,200bは、演算処理を終えると、該演算処理によって加工されたデータを自コア200a,200bが備える図示しない一次キャッシュに記憶する。そして、コア200a,200bは、データを主記憶部へ書出すデータ書出し処理の実行を制御部101に対して命令する。特に、本実施例にかかるコア200a,200bは、一次キャッシュに保持されたデータがデータメモリ経由で主記憶部へと書出される既存のデータ書出し処理の実行命令に加えて、一次キャッシュに保持されたデータを主記憶部へ直接書出すデータ書出し処理を実行すべき旨の命令を制御部101に対して行う。
【0038】
制御部101は、コア200a,200bからの命令に基づき、ライトバック処理やデータ書出し処理を実行する。なお、制御部101は、これらの処理以外にも、コア200a,200bが要求するデータをデータメモリ106から読出すデータ読出し処理や、キャッシュミス発生時にコア200a,200bが要求するデータを主記憶部からデータメモリに転送するムーブイン処理等を実行する。
【0039】
なお、制御部101は、コア200a,200bからのデータ書出し要求やライトバック要求などの命令をパイプラインに投入する場合、複数の命令が同時にデータメモリ106などの資源を使用する干渉が生じないように、適切な間隔をあけて命令をパイプラインに投入する。かかる点については、後述する。
【0040】
第1のキュー102は、ライトバック処理の実行時に、コア200a,200bからデータメモリ106へ書き戻されるデータを一時的に保持するキューである。具体的には、第1のキュー102は、コア200a,200bの演算処理によって加工されたデータを一時的に保持し、制御部101の制御に応じて該データを出力する。また、第1のキュー102は、配線性を考慮して、データメモリ106の入力部分の近傍に設けられる。なお、第1のキュー102は、例えば、ライトバックデータキュー(WBDQ:Write Back Data Queue)と呼ばれることがある。
【0041】
第2のキュー103は、データ書出し処理の実行時に、データメモリ106からMAC300を介して図示しない主記憶部へ書き戻されるデータを一時的に保持するキューである。具体的には、第2のキュー103は、セレクタ108を介して取得したデータを一時的に保持し、制御部101の制御により、該データをMAC300へ出力する。また、第2のキュー103は、配線性を考慮して、MAC300の近傍に設けられる。なお、第2のキュー103は、例えば、ムーブアウトデータキュー(MODQ:Move Out Data Queue)と呼ばれることがある。
【0042】
第3のキュー104は、キャッシュミスが生じた場合のムーブイン処理の実行時に、MAC300からデータメモリ106へ転送されるデータを一時的に保持するキューである。具体的には、第3のキュー104は、コア200a,200bによって要求されたMAC300からのデータを一時的に保持し、セレクタ105を介してデータメモリ106へ出力する。また、第3のキュー104は、第1のキュー102と同様に、配線性を考慮してデータメモリ106の入力部分の近傍に設けられる。なお、第3のキュー104は、例えば、ムーブインデータキュー(MIDQ:Move In Data Queue)と呼ばれることがある。
【0043】
セレクタ105は、第1のキュー102に保持されたデータおよび第3のキュー104に保持されたデータのいずれか一方を選択してデータメモリ106へ出力する。具体的には、セレクタ105は、制御部101によってライトバック処理が実行されている場合は、第1のキュー102に保持されたデータを選択する。また、セレクタ105は、制御部101によってムーブイン処理が実行されている場合は、第3のキュー104に保持されたデータを選択する。
【0044】
データメモリ106は、コア200a,200bが使用するデータやコア200a,200bの演算処理によって加工されたデータを一時的に保持する。具体的には、データメモリ106は、制御部101によりライトバック処理が実行されると、該コアの一次キャッシュから第1のキュー102に出力されたデータを取得して記憶する。また、制御部101によりデータ書出し処理が実行されると、データメモリ106は、第1のキュー102から取得したデータをセレクタ107へ出力する。なお、データメモリ106は、例えば、RAM(Random Access Memory)などを使用することができる。
【0045】
接続部L0は、コア200a,200bからデータメモリ106へのデータ経路(以下、「入力経路」と呼ぶ)と、データメモリ106からMAC300へのデータ経路(以下、「出力経路」と呼ぶ)とを接続する配線である。具体的には、接続部L0は、第1のキュー102およびデータメモリ106間の入力経路とセレクタ107とを接続する。すなわち、接続部L0は、データメモリ106の近傍において入力経路と接続する。
【0046】
そして、接続部L0は、第1のキュー102から出力されたデータを、データメモリ106を迂回するようにしてセレクタ107へと転送する。すなわち、本実施例にかかるCPU1は、接続部L0を設けることにより、第1のキュー102から出力されたデータを、データメモリ106を介さずにMAC300へ直接出力させることができる。
【0047】
セレクタ107は、データメモリ106の出力経路に設けられる選択部であり、第1のキュー102から接続部L0を経由して出力されたデータおよびデータメモリ106から出力されたデータのいずれか一方を選択してセレクタ108へ出力する。具体的には、セレクタ107は、コア200a,200bからMAC300へデータが直接転送される場合には、制御部101の制御により、第1のキュー102から出力されたデータを接続部L0経由でセレクタ108へ転送する。また、セレクタ107は、データメモリ106に保持されたデータがMAC300へ転送される場合には、制御部101の制御により、データメモリ106から出力されたデータをセレクタ108へ転送する。
【0048】
セレクタ108は、セレクタ107から出力されたデータおよび該セレクタ107に対応する他のセレクタから出力されたデータのいずれか1つを選択して、MAC300へ出力する。具体的には、セレクタ108は、コア200a,200bまたはデータメモリ106に記憶されたデータをMAC300へ転送する場合には、セレクタ107から出力されたデータを選択する。一方、コア200a,200b以外のコアまたはデータメモリ106以外のデータメモリに記憶されたデータをMAC300へ転送する場合、セレクタ108は、セレクタ107に対応する他方のセレクタから出力されたデータを選択する。
【0049】
MAC300は、コア200a,200bが使用し得る全てのデータを記憶する図示しない主記憶部と接続し、該主記憶部へのアクセスを制御する。具体的には、MAC300は、第2のキュー103に保持されたデータを主記憶部へと書出す。なお、MAC300は、他の処理として、例えば、キャッシュミスが生じた場合に、キャッシュミスしたデータを主記憶部から取得し、第3のキュー104へ転送する。
【0050】
続いて、本実施例にかかるコア、MACおよびキャッシュメモリ装置の接続関係について、図4を参照してより具体的に説明する。図4は、本実施例にかかるキャッシュメモリ装置における接続関係を示す図である。なお、同図において、図2と同じ部分については、同じ符号を付し、その説明を省略する。
【0051】
図4に示すように、キャッシュメモリ装置100は、制御部101と、第1のキュー102と、第2のキュー103と、第3のキュー104と、セレクタ105,107,108と、データメモリ106とを有する。
【0052】
制御部101は、コア200からのデータ書出し要求に基づき、ライトバック処理やデータ書出し処理を実行する。具体的には、制御部101は、MOポート部111と、プライオリティ部112と、パイプライン113と、タグメモリ114とを備える。MOポート部111は、データ書出し要求等の命令をコア200から取得する。ここで、本実施例において、データ書出し要求には、データメモリ106経由でデータを書出す既存のデータ書出し要求の他に、コア200の一次キャッシュに記憶されたデータを直接主記憶部へ書出すデータ書出し要求が存在する。なお、一次キャッシュに記憶されたデータを直接MAC300へ転送させる場合、コア200は、データ書出し要求として、MB−IV(Moveout Bypass & TAG InValidate)をMOポート部111へ出力する。
【0053】
プライオリティ部112は、データ経路や各種資源の優位性を考慮して、MOポート部111において取得した命令の調停を行い、パイプライン113へ投入する。特に、プライオリティ部112は、MOポート部111においてMB−IVを取得した場合、内部オペコードとしてBPMO(ByPass MoveOut)を生成して、パイプライン113へ投入する。なお、MAC300とプライオリティ部112との間には、キャッシュミス時におけるムーブイン要求を保持する図示しないバッファが設けられており、プライオリティ部112は、該バッファにおいて保持されているムーブイン要求の調停も行う。かかるバッファは、例えば、MI(Move In)バッファと呼ばれることがある。
【0054】
タグメモリ114は、データメモリ106に保持されたデータの物理アドレスやタイプコードおよびLBSTAG(Local Buffer Storage TAG)検索に用いられる論理アドレス等を記憶する。パイプライン113は、プライオリティ部112から投入された命令に基づき、タグメモリ114を検索し、該当するデータの物理アドレスを特定する。そして、パイプライン113は、投入された命令に応じて、特定した物理アドレスに記憶されたデータの更新や転送等を行う。
【0055】
ここで、制御部101は、コア200から既存のデータ書出し要求を受けた場合、先ず、ライトバック処理として、コア200の一次キャッシュに記憶されたデータを入力経路L100a〜L100cを用いてデータメモリ106へ書き戻す。
【0056】
すなわち、コア200の一次キャッシュに記憶されたデータは、先ず、コア200から入力経路L100aを経由して第1のキュー102へ転送される。続いて、第1のキュー102に保持されたデータは、入力経路L100bを経由してセレクタ105へ転送される。ここで、セレクタ105は、制御部101の制御により、入力経路L100bからのデータを選択して、入力経路L100c経由でデータメモリ106へ転送する。そして、データメモリ106は、入力経路L100c経由で転送されたデータ、すなわち、コア200の一次キャッシュに記憶されていたデータを取得して保持する。これにより、ライトバック処理が完了する。
【0057】
続いて、制御部101は、データ書出し処理として、データメモリ106に記憶されたデータを出力経路L200a〜L200dを用いてMAC300へ転送させる。すなわち、データメモリ106に保持されたデータは、先ず、出力経路L200aを経由してセレクタ107へと転送される。続いて、セレクタ107は、制御部101の制御により、出力経路L200aからのデータを選択し、出力経路L200b、セレクタ108および出力経路L200c経由で第2のキュー103へ転送する。そして、第2のキュー103に保持されたデータは、出力経路L200dを経由してMAC300へ転送され、MAC300によって主記憶部へ書き戻される。これにより、主記憶部に記憶されたデータが最新の状態となり、データの一貫性(キャッシュコヒーレンシ)が保たれる。
【0058】
ここで、セレクタ107は、データメモリの近傍に設けられる。すなわち、入力経路L100cとセレクタ107とを接続する接続部L0は、データメモリ106の周囲にのみ設けられる非常に短いラインである。このように、接続部L0をデータメモリ106の周囲にのみ設けてその長さを短くすることにより、配線コストの増加をより一層抑えることができ、しかも、周辺の配線に与える影響を少なくすることができる。
【0059】
一方、コア200から主記憶部へデータを直接書出すデータ書出し要求をコア200から受けたとする。すなわち、制御部101が、MOポート部111において、コア200からのデータ書出し要求としてMB−IVを取得したとする。かかる場合、制御部101は、コア200の一次キャッシュに記憶されたデータを接続部L0を用いてMAC300へ直接転送させる。なお、かかるデータ転送は、より具体的には、該データを排他型で保持する場合であって、コア200の一次キャッシュに最新データが記憶されており、かつ、データメモリ106には古いデータしか記憶されていない場合に実行される。
【0060】
すなわち、コア200の一次キャッシュに記憶されたデータは、先ず、コア200から入力経路L100aを経由して第1のキュー102へ転送される。続いて、第1のキュー102に保持されたデータは、制御部101の制御により、入力経路L100bを経由してセレクタ105へ転送される。続いて、セレクタ105は、制御部101の制御により、入力経路L100bからのデータを選択し、該データを入力経路L100cへ転送する。
【0061】
そして、セレクタ107は、制御部101の制御により、セレクタ105から出力されたデータを入力経路100cおよび接続部L0経由で取得し、出力経路L200b、セレクタ108および出力経路L200c経由で第2のキュー103へ転送する。その後は、最新データがデータメモリ106に記憶されている場合と同様であり、第2のキュー103に保持されたデータをMAC300が主記憶部へ書き戻すことにより、データ書出し処理が完了する。
【0062】
このように、本実施例では、コア200の演算処理により加工されたデータをデータメモリ106を迂回して図示しない主記憶部へと直接書出すデータ経路を設けることで、コア200から主記憶部へのデータ書出しに要する時間を短縮することができる。しかも、かかるデータ経路は、ライトバック処理の実行時に用いられる入力経路L100a〜L100cおよびデータメモリ106から主記憶部へのデータ書出し処理の実行時に用いられる出力経路L200b〜L200dを利用している。そのため、配線コストを抑えることができ、マルチコア化およびマルチバンク化されたCPU1への実装を容易に実現することができる。
【0063】
ところで、本実施例において、入力経路L100a〜L100cは、コア200からデータメモリ106へデータを書き戻す場合も、コア200から主記憶部へ接続部L0経由でデータを書出す場合も共通して使用される。また、同様に、出力経路L200b〜L200dは、コア200から主記憶部へ接続部L0経由でデータを書出す場合も、データメモリ106に保持されたデータを主記憶部へ書出す場合も共通して使用される。そのため、それぞれの処理が実行されている間に他の処理が実行された場合、データの干渉が生じるおそれがある。
【0064】
そこで、本実施例にかかる制御部101は、前後する要求が使用する資源やデータ経路を考慮してデータの干渉が起きないようにデータ干渉制御を行う。具体的には、プライオリティ部112は、コア200からのデータ書出し要求等の命令を受けた場合、これらの命令を適切な間隔をあけてパイプラインへ投入する。以下に、本実施例にかかる制御部101の具体的な動作について説明する。図5は、本実施例にかかる制御部101の処理手順を示すフローチャートである。なお、図5は、制御部101が実行する処理手順のうち、コア200の一次キャッシュに記憶されたデータをMAC300へ直接転送するデータ書出し処理に関する処理手順のみを示している。
【0065】
図5に示すように、制御部101は、先ず、MOポート部111において、コア200の一次キャッシュに記憶されたデータのMAC300への直接転送を要求するMB−IVをMOポート部111において取得する(ステップS101)。続いて、制御部101は、他の命令との間でデータの干渉が生じないように、プライオリティ部112において調停を行う(ステップS102)。
【0066】
そして、制御部101は、プライオリティ部112において、入力経路L100a〜L100cおよび出力経路L200a〜L200dが使用可能であるか否かを判定する(ステップS103)。すなわち、プライオリティ部112は、ライトバック処理の実行により入力経路L100a〜L100cが使用されているか否か、および、データメモリ106からのデータ書出し処理の実行により出力経路L200a〜L200dが使用されているか否かを判定する。そして、入力経路L100a〜L100cおよび出力経路L200a〜L200dが共に使用されていない場合、制御部101は、入力経路L100a〜L100cおよび出力経路L200a〜L200dが使用可能であると判定する。
【0067】
かかる処理において、入力経路L100a〜L100cおよび出力経路L200a〜L200dが使用可能ではないとき(ステップS103否定)、プライオリティ部112は、これらの経路が使用可能となるまでMB−IVをMOポート部111にて待機させるよう調停を行う。すなわち、本実施例では、ライトバック処理の実行により入力経路L100a〜L100cが使用されている場合またはデータメモリ106からのデータ書出し処理の実行により出力経路L200a〜L200dが使用されている場合、コア200からMAC300へのデータの直接転送は行われない。
【0068】
一方、入力経路L100a〜L100cおよび出力経路L200a〜L200dが使用可能であると判定すると(ステップS103肯定)、プライオリティ部112は、内部オペコードBPMOを生成し、パイプライン113へ投入する(ステップS104)。ここで、制御部101が、入力経路L100a〜L100cおよび出力経路L200a〜L200dが使用可能であると判定する条件には、待機している命令の実行開始タイミングが到来した場合も含まれる。
【0069】
これにより、コア200の一次キャッシュに記憶された最新データが第1のキュー102へと出力される。そして、第1のキュー102に保持された最新データは、セレクタ105を介して入力経路L100cへ転送される。そして、セレクタ107は、制御部101の制御により、セレクタ105から出力されたデータを入力経路100cおよび接続部L0経由で取得し、出力経路L200bへ転送する。その結果、最新データは、出力経路L200b、セレクタ108および出力経路L200cを経由して第2のキュー103へ転送され、MAC300により主記憶部に書き戻される。
【0070】
このように、制御部101は、コア200から主記憶部へデータを書出すべき旨のデータ書出し命令を受けた場合において、他の命令に基づく処理により入力経路L100a〜L100cまたは出力経路L200a〜L200dが使用されている場合には、これらの使用が終了するまでの間、上記データ書出し命令に基づく処理の実行開始を待機する。すなわち、制御部101は、入力経路L100a〜L100cおよび出力経路L200a〜L200dが使用されていないことを条件として、BPMOをパイプライン113へ投入する。これにより、ライトバック処理やデータメモリ106からのデータ書出し処理との間でデータの干渉が生じることを防ぐことができる。
【0071】
また、制御部101は、コア200から主記憶部へのデータ書出し処理を実行している間、ライトバック処理やムーブイン処理といった入力経路を使用する処理の実行開始を待機させる。また、制御部101は、コア200から主記憶部へのデータ書出し処理を実行している間、データメモリ106から主記憶部へのデータ書出しのように出力経路を使用する処理の実行開始を待機させる。
【0072】
そして、制御部101は、コア200から主記憶部へのデータ書出し処理が完了し、待機している命令の実行開始タイミングとなった場合に、該命令をパイプラインへ投入して該命令に基づく処理の実行を開始する。このように、制御部101は、コア200から主記憶部へデータを書出すデータ書出し処理を実行している間、入力経路や出力経路を使用する他の処理の実行開始を待機するため、データの干渉をより確実に防ぐことができる。
【0073】
なお、制御部101は、データメモリ106からのデータ書出し処理を実行する場合には、出力経路L200aからのデータを選択するようにセレクタ107を制御する。その結果、最新データは、データメモリ106から出力経路L200aを経由してセレクタ107へ転送される。そして、最新データは、出力経路L200b、セレクタ108、出力経路L200cを経由して第2のキュー103へ転送され、MAC300により主記憶部に書き戻される。
【0074】
上述してきたように、本実施例によれば、コア200の演算処理により加工されたデータをデータメモリ106を迂回して図示しない主記憶部へと直接書出すデータ経路を設けることで、コア200から主記憶部へのデータ書出しに要する時間を短縮することができる。しかも、本実施例では、かかるデータ経路を、ライトバック処理やデータメモリ106から主記憶部へのデータ書出し処理において使用されるデータ経路を利用して形成することにより、配線コストを抑えることができ、マルチコア化およびマルチバンク化されたCPUへの実装を容易に実現することができる。
【0075】
具体的には、本実施例によれば、接続部L0やセレクタ107の追加に伴う物理的コストの微小な増加により、従来技術のように各コア200と各MAC300とを直接繋ぐデータ経路の確保に必要な大きな物理的コストを削減できる。また、本実施例では、短いラインの接続部L0及びセレクタ107が追加されるだけであるため、CPUにおいて配線が集中する領域にもこれらを容易に設けることができる。その結果、回路規模の増大を抑えることができるため、実装トランジスタ数および配線性の面で極めて有利となる。これにより、より多数のコア200およびMAC300を備えるCPUに対して、コア200からMAC300へデータを直接転送するデータ経路を実装することが可能となる。
【0076】
さらに、コア200から主記憶部へのデータ書出し処理の制御としては、ライトバック処理やデータメモリ106から主記憶部へのデータ書出し処理の工程を利用しつつ、これら既存の工程に、制御部101がセレクタ107を制御する工程が追加されるだけなので、制御の複雑化を抑えることができる。その結果、CPUとしての性能に与える影響も抑えられる。
【0077】
ところで、本実施例にかかるCPU1は、例えば、PC(personal Computer)等の演算処理装置に搭載される。図6は、本実施例にかかるCPU1を搭載するコンピュータの一例を示すブロック図である。
【0078】
図6に示すように、演算処理装置としてのコンピュータ600は、CPU1と、入力装置610と、モニタ620と、ネットワークインタフェース装置630と、RAM640と、ハードディスク装置650とを備える。また、コンピュータ600は、これらをバス660により相互に接続する。
【0079】
入力装置610は、例えば、キーボードやマウスであり、ユーザからのデータの入力を受け付ける。モニタ620は、各種情報を表示する表示部である。ネットワークインタフェース装置630は、インターネット等のネットワークを介して他のコンピュータとの間でデータの授受を行う。RAM640は、主記憶部に相当し、各種情報を一時記憶する。ハードディスク装置650は、不揮発性の記憶装置である。
【0080】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0081】
(付記1)演算処理を実行する演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とするキャッシュメモリ装置。
【0082】
(付記2)前記制御部は、前記演算処理部から前記主記憶部へデータを書出すべき旨のデータ書出し命令を受けた場合において、他の命令に基づく処理により前記入力経路または前記出力経路が使用されている場合には、前記入力経路または前記出力経路の使用が終了するまでの間、前記データ書出し命令に基づく処理の実行開始を待機することを特徴とする付記1に記載のキャッシュメモリ装置。
【0083】
(付記3)前記制御部は、前記演算処理部から前記主記憶部へデータを書出すデータ書出し処理を実行している間、前記入力経路を使用する他の処理の実行開始を待機することを特徴とする付記1または2に記載のキャッシュメモリ装置。
【0084】
(付記4)前記制御部は、前記演算処理部から前記主記憶部へデータを書出すデータ書出し処理を実行している間、前記出力経路を使用する他の処理の実行開始を待機することを特徴とする付記1〜3の何れか1つに記載のキャッシュメモリ装置。
【0085】
(付記5)前記制御部は、待機している命令の実行開始タイミングとなった場合に、該命令をパイプラインへ投入して該命令に基づく処理の実行を開始することを特徴とする付記2〜4の何れか1つに記載のキャッシュメモリ装置。
【0086】
(付記6)前記入力経路に設けられ、前記演算処理部から前記データメモリまたは前記主記憶部に書出すデータを一時的に保持するキューをさらに備え、
前記制御部は、前記選択部を制御して、前記キューから出力されるデータを前記接続部経由で前記出力経路へ転送させることを特徴とする付記1〜5の何れか1つに記載のキャッシュメモリ装置。
【0087】
(付記7)前記接続部は、前記データメモリの近傍で前記入力経路と接続することを特徴とする付記1〜6の何れか1つに記載のキャッシュメモリ装置。
【0088】
(付記8)前記選択部は、前記データメモリの近傍に設けられることを特徴とする付記1〜7の何れか1つに記載のキャッシュメモリ装置。
【0089】
(付記9)演算処理を実行する演算処理部と、
主記憶部と接続し、該主記憶部へのアクセスを制御する主記憶制御部と、
前記演算処理部と前記主記憶制御部との間に介在し、前記演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから前記主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とする半導体集積回路。
【0090】
(付記10)前記演算処理部と前記主記憶制御部と前記データメモリとをそれぞれ複数備えることを特徴とする付記9に記載の半導体集積回路。
【0091】
(付記11)演算処理を実行する演算処理部と、
主記憶部と接続し、該主記憶部へのアクセスを制御する主記憶制御部と、
前記演算処理部と前記主記憶制御部との間に介在し、前記演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから前記主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とする演算処理装置。
【符号の説明】
【0092】
1 CPU
101 制御部
102 第1のキュー
103 第2のキュー
104 第3のキュー
105,107,108 セレクタ
111 MOポート部
112 プライオリティ部
113 パイプライン
114 タグメモリ
200a,200b コア
300 MAC
L0 接続部
L100a〜L100c 入力経路
L200a〜L200d 出力経路
10 キャッシュメモリ装置
11 データメモリ
12 接続部
13 制御部
14 選択部
20 演算処理部
30 主記憶部
L50 入力経路
L60 出力経路

【特許請求の範囲】
【請求項1】
演算処理を実行する演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とするキャッシュメモリ装置。
【請求項2】
前記制御部は、前記演算処理部から前記主記憶部へデータを書出すべき旨のデータ書出し命令を受けた場合において、他の命令に基づく処理により前記入力経路または前記出力経路が使用されている場合には、前記入力経路または前記出力経路の使用が終了するまでの間、前記データ書出し命令に基づく処理の実行開始を待機することを特徴とする請求項1に記載のキャッシュメモリ装置。
【請求項3】
前記制御部は、前記演算処理部から前記主記憶部へデータを書出すデータ書出し処理を実行している間、前記入力経路を使用する他の処理の実行開始を待機することを特徴とする請求項1または2に記載のキャッシュメモリ装置。
【請求項4】
前記制御部は、前記演算処理部から前記主記憶部へデータを書出すデータ書出し処理を実行している間、前記出力経路を使用する他の処理の実行開始を待機することを特徴とする請求項1〜3の何れか1項に記載のキャッシュメモリ装置。
【請求項5】
前記制御部は、待機している命令の実行開始タイミングとなった場合に、該命令をパイプラインへ投入して該命令に基づく処理の実行を開始することを特徴とする請求項2〜4の何れか1項に記載のキャッシュメモリ装置。
【請求項6】
前記接続部は、前記データメモリの近傍で前記入力経路と接続することを特徴とする請求項1〜5の何れか1項に記載のキャッシュメモリ装置。
【請求項7】
前記選択部は、前記データメモリの近傍に設けられることを特徴とする請求項1〜6の何れか1項に記載のキャッシュメモリ装置。
【請求項8】
演算処理を実行する演算処理部と、
主記憶部と接続し、該主記憶部へのアクセスを制御する主記憶制御部と、
前記演算処理部と前記主記憶制御部との間に介在し、前記演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから前記主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とする半導体集積回路。
【請求項9】
前記演算処理部と前記主記憶制御部と前記データメモリとをそれぞれ複数備えることを特徴とする請求項8に記載の半導体集積回路。
【請求項10】
演算処理を実行する演算処理部と、
主記憶部と接続し、該主記憶部へのアクセスを制御する主記憶制御部と、
前記演算処理部と前記主記憶制御部との間に介在し、前記演算処理部によって書出されたデータを一時的に保持するデータメモリと、
前記演算処理部から前記データメモリへの入力経路と、前記データメモリから前記主記憶部への出力経路とを接続する接続部と、
前記出力経路に設けられ、前記データメモリから出力されるデータまたは前記演算処理部から前記接続部経由で転送されるデータの何れか一方を選択して前記出力経路へ転送する選択部と、
前記データメモリから前記主記憶部へデータを書出す場合には、前記選択部を制御して、前記データメモリから出力されるデータを出力経路へ転送させ、前記演算処理部から前記主記憶部へデータを書出す場合には、前記選択部を制御して、該データを前記接続部経由で前記出力経路へ転送させる制御部と
を備えたことを特徴とする演算処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate