説明

半導体集積回路

【課題】性能低下を招くことなく回路面積を削減出来る半導体集積回路を提供すること。
【解決手段】第1メモリ30と、第1メモリ30に対するキャッシュメモリとして働く第2メモリ10とを備える。第1メモリ30からデータが読み出される場合の第1読み出し、第2メモリ10からデータが読み出される場合の第2読み出し、及び該データを第2メモリ10から読み出すと決定する判定、は、複数の処理ステージのうちのいずれかの処理ステージで実行される。第1読み出しにて読み出されたデータが出力されるタイミングと、第2読み出しにて読み出されたデータが出力されるタイミングとは同一である。第1読み出しで読み出されたデータは、第2メモリ10を経由しない経路を用いて出力される。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は半導体集積回路に関する。例えば、レジスタファイル(register file)を備えたプロセッサに関する。
【背景技術】
【0002】
レジスタファイルは、最近のスーパスカラプロセッサ(super scalar processor)の構成要素のうち、最も高コストなものの一つとなっている。
【0003】
Out-of-orderスーパスカラプロセッサでは、レジスタファイルの容量は、命令ウィンドウサイズの1.5〜2倍程度必要である。またSMT(simultaneous multi-threading)等のマルチスレッディングを行うプロセッサでは、同時に実行されるスレッドのコンテキストを保持するため、スレッド数に応じた容量が必要となる。これらの理由のため、レジスタファイルは巨大化する傾向にある。
【0004】
またレジスタファイルは、多ポートのRAMで構成される。通常、1命令あたり、2つのリードポート(read port)と1つのライトポート(write port)が必要である。従って、例えば4つの整数系命令を実行するスーパスカラプロセッサの整数レジスタファイルのポート数は、合計12個になる。そしてRAMの回路面積は、ポート数の2乗に比例する。その結果、レジスタファイルは、その容量の割には非常に大きいサイズになる(例えば、非特許文献1、2参照)。
【0005】
そこで、キャッシュメモリを用いることでレジスタファイルのポート数を減らす構成が、種々、提案されている(例えば非特許文献3〜6参照)。しかしながら、これらの手法であると、キャッシュミスが発生した場合にバックエンドをストールさせなければならず、その結果、プロセッサの動作性能が低下する、という問題があった。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】K.J.Kim, J.M.Youn, S.B.Kim, J.H.Kim, S.H.Hwang, K.T.Kim, Y.S Shin著、“A novel 6.4μm2 full-cmos sram cell with aspect ratio of 0.63 in a high-performance 0.25μm-generation cmos technology”、VLSI Technology, 1998、Digest of Technical Papers. 1998 Symposium、pp.68-69, 1998年
【非特許文献2】Y.Tatsumi, H.J.Mattausch著、“Fast quadratic increase of multiport-storage-cell area with port number”、Electronics Letters, Vol.35, No. 25, pp.2185-2187, 1999年
【非特許文献3】J.L.Crutz, A.Gonzalez, M.Valero著、“Multiple-Banked Register File Architecture”、Proceedings of the 27th International Symposium on Computer Architecture (ISCA), pp.316-325, 2000年
【非特許文献4】N.C.Yung, R.; Wilhelm著、“Caching processor general registers”、Proceedings of the International Conference on Computer Design (ICCD), pp. 307-312, 1995年
【非特許文献5】小林良太郎、梶山太郎、島田俊夫著、「クリティカル・パスに着目した階層型レジスタ・ファイル」、先進的計算基盤システムシンポジウムSACSIS、pp.33-40, 2006年
【非特許文献6】小林良太郎、堀部大介、島田俊夫著、「物理レジスタ番号の割り当て順に着目したレジスタ・キャッシュの高精度化手法」、先進的計算基盤システムシンポジウムSACSIS、pp.13-22, 2006年
【発明の概要】
【発明が解決しようとする課題】
【0007】
この発明は、性能低下を招くことなく回路面積を削減出来る半導体集積回路を提供する。
【課題を解決するための手段】
【0008】
この発明の一態様に係る半導体集積回路は、第1メモリと、前記第1メモリに対するキャッシュメモリとして働く第2メモリとを備え、前記第1メモリ及び前記第2メモリは複数の処理ステージからなるパイプラインにおいてアクセスされ、前記第1メモリからデータが読み出される場合の第1読み出し、前記第2メモリからデータが読み出される場合の第2読み出し、及び、該データを前記第2メモリから読み出すと決定する判定、は、前記複数の処理ステージのうちのいずれかの処理ステージで実行され、前記第1読み出しにて読み出されたデータが出力されるタイミングと、前記第2読み出しにて読み出されたデータが出力されるタイミングとは同一であり、前記判定が実行される処理ステージは、前記第1読み出しが実行される処理ステージより上流にあり、前記第1読み出しで読み出されたデータは、前記第2メモリを経由しない経路を用いて出力される。
【発明の効果】
【0009】
この発明によれば、性能低下を招くことなく回路面積を削減出来る半導体集積回路を提供出来る。
【図面の簡単な説明】
【0010】
【図1】この発明の第1の実施形態に係るプロセッサのブロック図。
【図2】この発明の第1の実施形態に係るプロセッサの動作の流れを示すフローチャート。
【図3】この発明の第1の実施形態に係るプロセッサのパイプラインチャート。
【図4】この発明の第1の実施形態に係るプロセッサのパイプラインチャート。
【図5】この発明の第1の実施形態に係るプロセッサのパイプラインチャート。
【図6】従来のプロセッサのパイプラインチャート。
【図7】この発明の第2の実施形態に係るレジスタキャッシュの概念図。
【図8】この発明の第2の実施形態に係るプロセッサのブロック図。
【図9】この発明の第2の実施形態に係るプロセッサの動作の流れを示すフローチャート。
【図10】この発明の第2の実施形態に係るプロセッサのパイプラインチャート。
【図11】この発明の第2の実施形態に係るプロセッサのパイプラインチャート。
【図12】この発明の第2の実施形態に係るプロセッサのパイプラインチャート。
【図13】この発明の第2の実施形態に係るプロセッサのパイプラインチャート。
【図14】この発明の第3の実施形態に係るプロセッサのブロック図。
【図15】この発明の第3の実施形態に係るプロセッサの動作の流れを示すフローチャート。
【図16】この発明の第4の実施形態に係るプロセッサの動作の流れを示すフローチャート。
【図17】この発明の第5の実施形態に係るプロセッサのパイプラインチャート。
【図18】この発明の第5の実施形態に係るプロセッサのパイプラインチャート。
【図19】この発明の第5の実施形態の変形例に係るプロセッサのパイプラインチャート。
【図20】この発明の第5の実施形態の変形例に係るプロセッサのパイプラインチャート。
【発明を実施するための形態】
【0011】
以下、この発明の実施形態を、図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【0012】
[第1の実施形態]
この発明の第1の実施形態に係る半導体集積回路について、図1を用いて説明する。図1は、本実施形態に係るスーパスカラプロセッサのブロック図である。
【0013】
<プロセッサの構成について>
本実施形態に係るプロセッサ1は、パイプライン動作を行う。すなわちプロセッサ1は、発行された命令を複数のステージに分割して処理する。各ステージは、それぞれが独立して処理可能なユニットによって処理される。そしてプロセッサ1は、複数のパイプラインにより、複数の命令を同時並行して実行可能である。
【0014】
図示するようにプロセッサ1は、レジスタキャッシュ(register cache)10、アービタ(arbiter)20、レジスタファイル30、選択回路40、演算器50、及び制御部60を備えている。以下、それぞれについて説明する。
【0015】
<レジスタキャッシュ10について>
レジスタキャッシュ10は、プロセッサ1におけるキャッシュメモリとして機能し、例えばSRAM等の半導体メモリである。そしてレジスタキャッシュ10は、レジスタファイル30に保持されるデータや、演算器50の演算結果等を、一時的に保持可能である。レジスタキャッシュ10は、例えばr個(rは1以上の自然数)のリードポートと、w個(wは1以上の自然数)のライトポートを有している。すなわち、1ステージにおいて、最大でr個のデータを同時に読み出すことが可能であり、また最大でw個のデータを同時に書き込むことが出来る。
【0016】
レジスタキャッシュ10からデータを読み出す際には、読み出しアドレス信号RA0〜RAr−1が、それぞれパイプラインラッチ70を介してリードポートに入力される。そしてレジスタキャッシュ10は、必要なデータを保持している場合(キャッシュヒット)には、ヒット(hit)信号を出力すると共に、当該データを読み出しデータCRD0〜CRDr−1として、選択回路40へ出力する。他方、必要なデータを保持していない場合(キャッシュミス)には、ミス(miss)信号を、アービタ20へ出力する。
【0017】
レジスタキャッシュ10にデータを書き込む際には、書き込みアドレス信号WA0〜WAw−1及び書き込みデータWD0〜WDw−1が、それぞれパイプラインラッチ71、72を介して、ライトポートに入力される。そしてレジスタキャッシュ10は、書き込みアドレス信号WA0〜WAw−1に相当する領域に、書き込みデータWD0〜WDw−1を書き込む。
【0018】
なお、パイプラインラッチ70は例えばフリップフロップ等であり、以下、同様である。
【0019】
<アービタ20について>
アービタ20は、レジスタファイル30に対するデータアクセスを制御する。すなわちアービタ20は、データの読み出し時において、パイプラインラッチ70を経た読み出しアドレス信号RA0〜RAr−1を、それぞれパイプラインラッチ73を介してリードポートにおいて受信する。また、レジスタキャッシュ10から出力されるヒット信号またはミス信号を、パイプラインラッチ75を介して受信する。そしてアービタ20は、レジスタキャッシュ10からミス信号を受信した場合には、アドレス信号RA0〜RAr−1に応じて、アドレス信号MA0〜MAm−1(mは1以上の自然数)を発生し、レジスタファイル30へ出力する。アドレス信号MA0〜MAm−1は、レジスタファイル30において、アドレス信号RA0〜RAr−1によって選択されるデータが保持されるアドレスを示す信号である。
【0020】
他方、レジスタファイル30にデータを書き込む際には、アービタ20は、パイプラインラッチ74を介して入力される書き込みアドレスWA0〜WAw−1及び書き込みデータWD0〜WDw−1を、ライトポートにおいて受信する。そして、アドレス信号WA0〜WAw−1に応じてアドレス信号MA0〜MAm−1を発生し、レジスタファイル30へ出力する。また書き込みデータWD0〜WDm−1を、書き込みデータMWD0〜MWDm−1としてレジスタファイル30に出力する。
【0021】
<レジスタファイル30について>
レジスタファイル30は、プロセッサ1における主たるメモリとして機能する半導体メモリであり、例えばSRAMである。レジスタファイル30は、大まかにはデコーダ31、データアレイ32、及びパイプラインラッチ76を備えている。
【0022】
デコーダ31は、アービタ20からアドレス信号MA0〜MAm−1及び書き込みデータWD0〜WDw−1を受信することにより、データアレイ32からデータを読み出し、またはデータを書き込む。
【0023】
データアレイ32は、レジスタファイル30において実際にデータを保持するユニットであり、SRAM型のメモリセルの集合である。そして、デコーダ31からのアクセスに応じてデータを保持し、またはデータを出力する。
【0024】
レジスタファイル30からデータが読み出される場合、デコーダ31は、アービタ20から受信したアドレス信号MA0〜MAm−1をデコードし、パイプラインラッチ76を介してデータアレイ32にアクセスする。その結果、データアレイ32において、アドレス信号MA0〜MAm−1に相当するメモリセルから読み出されたデータが、読み出しデータMRD0〜MRDm−1として出力される。
【0025】
従って、レジスタファイル30からデータを読み出すには、2サイクル(2ステージ)かかることになる。しかしながらこのサイクル数は1サイクルでも良いし3サイクル以上であっても良い。以下では2サイクルかかる場合を例に説明する。
【0026】
他方、レジスタファイル30にデータが書き込まれる場合、デコーダ31は、アービタ20からアドレス信号MA0〜MAm−1及び書き込みデータWD0〜WDw−1を受信する。そして、デコーダ31はアドレス信号MA0〜MAm−1をデコードし、パイプラインラッチ76を介してデータアレイ32にアクセスする。その結果、データアレイ32においてアドレス信号MA0〜MAm−1に相当するメモリセルには、書き込みデータWD0〜WDw−1が書き込まれる。
【0027】
<選択回路40について>
プロセッサ1は、r個の選択回路40を備えている。選択回路40の各々は、レジスタキャッシュ10及びレジスタファイル30から読み出される読み出しデータCRD0〜CRDr−1、MRD0〜MRDm−1のいずれか1つを選択し、これを読み出し信号RD0〜RDr−1として出力する。
【0028】
この選択動作は、例えば制御部60またはアービタ20等によって制御される。例えばアービタ20が制御する場合、次のような制御が行われる。仮にr=3であり、レジスタキャッシュ10においてアドレス信号RA0、RA1についてはヒットし、アドレス信号RA2についてはミスしたと仮定する。従って、アドレス信号RA0、RA1に相当するデータはレジスタキャッシュ10から読み出され、アドレス信号RA2に相当するデータはレジスタファイル30から読み出される。なお、アドレス信号RA0、RA1に対応する読み出しデータをCRD0、CRD1とし、アドレス信号RA2に対応する読み出しデータをMRD2とする。
【0029】
するとアービタ20は、上記ヒット/ミスに関する情報を有しているので、3つの選択回路40のいずれか2つに対しては、読み出し信号CRD0、CRD1を選択するよう命令する。またいずれか1つに対しては、読み出し信号MRD2を選択するよう命令する。その結果、読み出しデータCRD0、CRD1、MRD2が選択回路40から出力される。制御部60も、ヒット信号及びミス信号を受信することで上記処理が可能である。
【0030】
なお読み出しデータCRD0〜CRDr−1は、レジスタキャッシュ10から読み出された後、2段のパイプラインラッチ77、78を介して選択回路40に入力される。また、書き込みデータWD0〜WDw−1が、レジスタキャッシュ10及びパイプラインラッチ72、77、78を介することなく選択回路40に入力されるパスも設けられている。これは、例えば演算器50における演算結果を、次のサイクルで演算器50に入力するためのバイパスネットワークである。バイパスネットワークの詳細については、第2の実施形態で説明する。
【0031】
<演算器50について>
演算器50は、選択回路40で選択された読み出しデータRD0〜RDr−1を、パイプラインラッチ79を介して受信する。そして読み出しデータRD0〜RDr−1を用いて演算を行う。
【0032】
<制御回路60について>
制御回路60は、上記説明した各ユニットの動作を制御する。すなわち、上記ユニットで処理が実行される命令を発行して、パイプラインを制御する。そして、当該命令を実行するために必要なデータに応じて、アドレス信号RA0〜RAr−1を発行する。
【0033】
発行する命令内容は特に限定されないが、その一例は加算命令、減算命令、論理演算命令、積和命令、シフト(shift)命令、ローテート(rotate)命令、シャッフル(shuffle)命令等である。
【0034】
<プロセッサの動作について>
次に、本実施形態に係る上記プロセッサ1の動作について、図1及び図2を用いて説明する。図2は、プロセッサ1が行う動作のフローチャートである。なお以下の説明では、RA0〜RAr−1、WA0〜WAw−1、WD0〜WDw−1、MA0〜MAm−1、MWD0〜MWDm−1、MRD0〜MRDm−1、及びRD0〜RDr−1の各々をそれぞれ区別しない場合には、それぞれRA、WA、WD、MA、MWD、MRD、及びRDと呼ぶことにする。
【0035】
図示するように、まずパイプラインの第1ステージST1において、制御部60が命令を発行する(ステップS10)。この際、アドレス信号RAも発行される。命令を実行するにあたって必要なデータ(オペランド)が複数ある場合、それぞれに応じたアドレス信号RAが発行される。
【0036】
次に、ステップS10で発行されたアドレス信号RAがパイプラインラッチ70を介してレジスタキャッシュ10に与えられる。これにより、第1ステージST1に後続する第2ステージST2において、レジスタキャッシュ10へのデータアクセスがなされる(ステップS11)。第2ステージST2では、レジスタキャッシュ10において、オペランドに対応するデータの有無が判定され(これをヒットミス判定と呼ぶ)、その情報がヒット信号及びミス信号として出力される。オペランドが複数ある場合、ヒットミス判定は各オペランドについて行われる。そして、ヒットしたオペランドについては、レジスタキャッシュ10からデータが読み出される。
【0037】
第2ステージST2に後続する第3、第4ステージST3、ST4では、ミスしたオペランドについてのレジスタファイル30へのデータアクセスがなされる。すなわち、アドレス信号RA、並びにヒット信号及びミス信号が、パイプラインラッチ73、75を介してアービタ20へ出力される。そしてキャッシュミスしたオペランドについては(ステップS12、YES)、アービタ20はアドレス信号MA0を発行して、レジスタファイル30へアクセスする(ステップS13)。そして、第3、第4ステージST3、ST4の2つのステージを用いて、レジスタファイル30からデータが読み出される。
【0038】
他方、キャッシュヒットしたオペランドについては(ステップS12、NO)、第3、第4ステージST3、ST4において何らの処理も行わない。すなわち、レジスタキャッシュ10から読み出されたデータCRDは、パイプラインラッチ77、78を介して、選択回路40へ出力される。
【0039】
そして第4ステージST4において、選択回路40が各オペランドに対応するデータを選択し、読み出しデータRDとして出力する。
【0040】
次に、選択回路40から出力された読み出しデータRDがパイプラインラッチ79を介して演算器50に与えられる。これにより、第4ステージST4に後続する第5ステージST5において、演算器50が読み出しデータRDを用いた演算を行う(ステップS15)。
【0041】
その後、第5ステージST5に後続する第6ステージST6において、演算器50の演算結果がパイプラインラッチ72を介してレジスタキャッシュ10へ書き込みデータWDとして転送され、レジスタキャッシュ10に書き込まれる(ステップS16)。演算結果は、同時にパイプラインラッチ74を介して書き込みデータWDとしてアービタ20へも転送され、レジスタファイル30に書き込まれる。
【0042】
<パイプラインについて>
図3は、上記動作の流れを時間軸に沿って示した概念図である。図中の第1ステージに記した“IS”は、制御部60による命令発行を行う(図2におけるステップS10)ステージであることを示す。第2ステージに記した“CR”は、レジスタキャッシュ10に対するデータアクセスを行う(ステップS11)ステージであることを示す。第3、第4ステージに記した“RR”は、レジスタファイル30に対するデータアクセス(ステップS13)が可能なステージであることを示す。第5ステージに記した“EX”は、演算器50において演算を行う(ステップS15)ステージであることを示す。第6ステージに記した“CW”は、演算器50における演算結果をレジスタキャッシュ10及びレジスタファイル30に書き込む(ステップS16)ステージであることを示す。また、Ia、Ib、Icはそれぞれ、各パイプラインの実行命令である。
【0043】
図示するように、第1ステージで制御部60により命令発行された後(“IS”)、まず第2ステージでレジスタキャッシュ10へのデータアクセスが行われる(“CR”)。その後、第3、第4ステージでレジスタファイル30へのデータアクセスが可能とされる(“RR”)。そして複数の、上記パイプラインが同時並行して実行される。
【0044】
図4は、ある1つのあるパイプラインに着目し、キャッシュミスが発生した場合としない場合とにつき示している。図示するように、第2ステージでキャッシュミスが発生した場合には、第3、第4ステージでレジスタファイル30へのアクセスが行われ、これらのステージでデータがレジスタファイル30から読み出される。
【0045】
これに対してキャッシュミスが発生しない場合には、第2ステージにおいてデータがレジスタキャッシュ10から読み出され、第3、第4ステージにおいては特に処理は行われない。第3、第4ステージでは、レジスタキャッシュ10から読み出されたデータが選択回路40へ転送されるのみである。但し、キャッシュミスが発生しない場合であっても、第3、第4ステージが省略されるわけではない。キャッシュミスの発生にかかわらず、パイプラインのステージ数は6段である。つまり第3、第4ステージは、必要に応じてレジスタファイル30へのアクセスを行うための専用のステージである。
【0046】
なお、図3及び図4ではオペランドが1つの場合について示しているが、複数の場合も同様である。図5は、オペランドが2つであり、一方につきキャッシュミスが発生し、他方については発生しない場合について示している。図5において第2〜第4ステージが2段になっているが、この2段のうちのそれぞれが各オペランドに対応する。
【0047】
図示するように、上段に示すオペランドについてはキャッシュミスが発生していないので、第3、第4ステージでは何らの処理も行われない。これに対して下段に示すオペランドについてはキャッシュミスが発生しているので、第3、第4ステージにおいてレジスタファイル30からのデータ読み出しが実行される。
【0048】
<効果>
以上のように、この発明の第1の実施形態に係る半導体集積回路であると、下記(1)の効果が得られる。
【0049】
(1)プロセッサの性能低下を招くことなく、レジスタファイルの回路面積を削減出来る。
本効果につき、以下、詳細に説明する。背景技術で説明した通り、近年のOut-of-Orderスーパスカラプロセッサのレジスタファイルは非常に巨大化する傾向にある。この要因として、レジスタファイルのエントリ数の増大と、ポート数の増大とが挙げられる。
【0050】
巨大化したレジスタファイルは、様々な問題を引き起こす。すなわち、回路面積が増大すれば、回路を構成するためのコストが増大する。従って、面積の増大そのものが大きな問題となる。また、レジスタファイルはその性質上、実行コアの中心部に位置する.そのような位置に巨大な回路が存在することは、周辺部の遅延やそれを考慮するためのフロアプランにまで大きな影響を与える。更に、RAMが消費する電力は面積に比例する。従って、面積が増大するに従ってレジスタファイルの電力消費も多くなる。そして電力消費の増大は、プロセッサの動作周波数の向上を制限する。更には、巨大な面積を持つレジスタファイルのレイテンシは、当然大きなものとなる。
【0051】
これらのうち、レイテンシの増大については、近年のプロセスの微細化による配線遅延の影響もあり、深刻である。レジスタファイルのレイテンシは配線遅延に支配されるため、LSIが微細化してもほとんど短縮されない。このため、微細化が進むとレジスタファイルのレイテンシは相対的には増大することになる。
【0052】
このようにレジスタファイルのレイテンシが増大した結果、近年では、レジスタファイルを1サイクル程度でアクセスすることはもはや不可能となっている。そのため、レジスタファイルのアクセスには通常2〜3程度のパイプラインステージが充てられている。
【0053】
しかし、レジスタファイルのパイプラインが深くなると(ステージ数が多くなると)、予測ミス・ペナルティを増大させ、また資源不足によるストールを増大させる、という問題が発生する。
【0054】
そこで、背景技術で説明した非特許文献3〜6記載の手法では、キャッシュメモリを用いることで、上記の問題を解決しようとする。キャッシュメモリは、レジスタファイルに保持されるデータの一部を保持し、1サイクルでアクセス可能な小型のバッファである。このようなプロセッサのパイプラインチャートを図6に示す。図6では、2つの命令Ia、Ibがパイプライン上においてが並行して実行されている様子を示している。
【0055】
図示するように、命令は“IS”ステージ、“CR”ステージ、“EX”ステージ、及び“CW”ステージの順で処理される。これらが示す意味は、図3で説明したとおりである。本構成は、キャッシュヒットを仮定したパイプラインとなっている。すなわち全ての命令は、そのオペランドがキャッシュメモリにヒットするものとしてスケジューリングされる。従って、図6に示すように、命令Iaにおいてキャッシュミスが発生した場合、命令Iaはバックエンドをストールさせ、その間にレジスタファイルからデータの読み込みを行う。
【0056】
本構成のプロセッサは、理想的に動作した場合、すなわち、キャッシュヒットした場合には、1サイクルでアクセス可能なレジスタファイルを持つプロセッサと機能的に等価となる。従って、上述したパイプライン化によって生じるレイテンシの問題を解消することができる。また、キャッシュミスしたオペランドのみがレジスタファイルに対してアクセスを行う。このため、レジスタファイルはアクセス数に見合った少数のポートを持つだけでよい。よって、レジスタファイルの回路面積を縮小出来る。
【0057】
しかし上記プロセッサは、実際にはミス・ペナルティによって性能を落としてしまうという問題がある。キャッシュメモリのミス率は、最大で13%程度であり、L1データキャッシュなどと比べると著しく高い。これに加え、ペナルティの発生率は個々のオペランドにおけるミス率よりもさらに高くなる。これは、同時発行された命令が持つソースオペランドのうち、一つ以上がミスした場合にペナルティが発生するためである。
【0058】
たとえば、ヒット率が90%で4命令が同時に発行された場合のことを考える。この場合、ソースオペランドは最大で8個になり、これらが全てヒットする確率は0.9≒0.43となる。すると、オペランドが1つでもミスした場合にペナルティが発生するのであるから、ペナルティの発生率は1−0.9≒0.57となり、大幅な性能低下となる。
【0059】
キャッシュミスが発生した場合の対策は、基本的には図6に示したように、バックエンドをストールさせるしかない。例えば、ペナルティを軽減するために、ミスを起こした命令を選択的に遅延させることや、ヒットミス予測を行うことが考え得るが、これらはいずれも構造上実現が困難である等、大きな副作用を持ち、現実的でない。
【0060】
この点、本実施形態に係るプロセッサであると、上記従来のプロセッサがキャッシュヒットを前提としたパイプライン構成であったのに対し、キャッシュミスを前提としたパイプライン構成を有している。従って、上記問題を解決し、性能低下を招くことなく、レジスタファイルの回路面積を縮小出来る。
【0061】
すなわち、図3乃至図5を用いて説明したように、パイプラインはキャッシュミスを仮定しているので、レジスタファイル30にアクセス可能なステージ(第3、第4ステージ)が設けられている。そして、レジスタキャッシュ10のヒット/ミスに関わらず、命令は常に第3、第4ステージを通過する。
【0062】
従って、レジスタファイル30からデータを取得するためにバックエンドをストールさせる必要は無い。そのため、IPC(instruction per cycle)の低下を防止し、プロセッサの性能低下の発生を抑制出来る。
【0063】
更に、レジスタファイル30に対しては、ミスを起こしたオペランドのみがアクセスを行う。そのため、レジスタファイル30はこのアクセス数に見合った少数のポートだけを持てば良い。すなわち、レジスタファイル30には、ミス率に応じた数のポートを設ければ、ほぼペナルティは発生しなくなる。例えば図5の例であると、各サイクルにおいてレジスタファイル30にアクセスするオペランドは最大で2つである。例えばミス率が50%であったとすれば、レジスタファイル30のポート数を1ポートにしたとしても、ストールは発生しない。このように、レジスタファイル30のポート数を削減出来る結果、レジスタファイル30の回路面積を縮小出来る。
【0064】
また、レジスタファイル30の小型化は、レジスタファイルのレイテンシの短縮にもつながる。場合によっては、レジスタファイル30とレジスタキャッシュ10の回路規模は同程度となり、その場合にはレジスタファイル30は1サイクルでアクセス可能となる。よって、プロセッサの高速動作に寄与出来る。
【0065】
[第2の実施形態]
次に、この発明の第2の実施形態に係る半導体集積回路について説明する。本実施形態は、上記第1の実施形態において、レジスタキャッシュ10からのデータの読み出しタイミングとヒットミス判定タイミングとを分離し、パイプラインの構成を変形したものである。以下では、第1の実施形態と異なる点についてのみ説明する。
【0066】
<レジスタキャッシュ10の概念について>
図7は、本実施形態に係るレジスタキャッシュ10の概念図である。図示するようにレジスタキャッシュ10は、(N+1)個(Nは1以上の自然数)のエントリ0〜Nを備えている。そして各エントリにデータが保持される。また、各エントリにはタグ(tag)が設けられている。タグは、対応する各エントリの管理情報等を保持し、各エントリのステータスフラグとして機能するものである。従って、このタグをチェックすることにより、現在、レジスタキャッシュ10には如何なるデータが保持されているのか、等の情報を得ることが出来る。
【0067】
<プロセッサの構成について>
図8は、本実施形態に係るプロセッサ1のブロック図である。図示するように本実施形態に係るプロセッサ1は、第1の実施形態で説明した図1の構成において、レジスタキャッシュ10を変形すると共に、制御部60にデータアクセスのスケジューリング機能を持たせたものである。
【0068】
<レジスタキャッシュ10について>
本実施形態に係るレジスタキャッシュ10は、タグアレイ11、データアレイ12、及びパイプラインラッチ81〜83を備えている。
【0069】
タグアレイ11は、図7で説明したタグを保持するための、例えばSRAM等の半導体メモリである。タグアレイ11は、パイプラインラッチ70、71を介してアドレス信号RA、WAを受信する。そしてアドレス信号RA、WAをデコードしてアドレス信号DA0〜DAr−1を得、これによりデータアレイ12に対してデータアクセスを行う。アドレス信号DA0〜DAr−1についても、これらを区別しない場合には単にアドレス信号DAと呼ぶ。
【0070】
データアレイ12は、図7で説明したデータを保持するための、例えばSRAM等の半導体メモリである。データアレイ12は、パイプラインラッチ81、82を介してアドレス信号DAを受信する。また、パイプラインラッチ83を介して書き込みデータWDを受信する。そして、タグアレイ11からのアクセスに応じてデータを保持し、またはデータを出力する。
【0071】
レジスタキャッシュ10からデータが読み出される場合、タグアレイ11はアドレス信号RAを受信する。タグアレイ11はアドレス信号RAに基づきヒットミス判定を行い、ヒット信号またはミス信号をアービタ20及び制御部60へ出力する。更にタグアレイ11は、アドレス信号RAに基づいてアドレス信号DAを生成して、パイプラインラッチ81、82を介してデータアレイ12へ出力する。その結果、データアレイ12において、アドレス信号DAに相当するメモリセルから読み出されたデータが、読み出しデータCRDとして出力される。従って、レジスタキャッシュ10からデータを読み出すには、レジスタキャッシュ10にアドレス信号RAを入力してから3サイクル(3ステージ)かかることになる。
【0072】
他方、レジスタキャッシュ10にデータが書き込まれる場合、タグアレイ11はアドレス信号WA0〜WAw−1を受信する。そしてアドレス信号WA0〜WAw−1に基づいてアドレス信号WDA0〜WDAw−1を生成して、パイプラインラッチ81、82を介してデータアレイ12へ出力する。また、書き込みデータWDが、パイプラインラッチ83を介してデータアレイ12へ入力される。その結果、書き込みデータWD0〜WDw−1が、アドレス信号WDA0〜WDAw−1に相当するメモリセルに書き込まれる。従って、レジスタキャッシュ10にデータを書き込む場合、書き込みデータWDをレジスタキャッシュ(データアレイ12)に入力する2サイクル前に、アドレス信号WAがレジスタキャッシュ(タグアレイ11)に入力される必要がある。なお、以下でもアドレス信号WDA0〜WDAw−1を区別しない場合には、一括してアドレス信号WDAと呼ぶことにする。また、書き込みデータWDがパイプラインラッチ83及びデータアレイ12を介することなく選択回路40に達するパスは、前述のバイパスネットワークである。
【0073】
<制御部60について>
制御部60は、タグアレイ11から与えられるヒット/ミス判定結果に基づいて、データアクセスのスケジューリングを行う。データアクセスのスケジューリングの具体的な内容は、命令を実行するにあたって、各オペランドのデータをレジスタファイルとレジスタキャッシュ10のいずれから読み出すかを決定すること、である。
【0074】
なお以下では、パイプラインの第4ステージにおいて、レジスタキャッシュ10のデータアレイ12からデータが出力される場合を例に説明する。
【0075】
<プロセッサの動作について>
次に、本実施形態に係る上記プロセッサ1の動作について、図8及び図9を用いて説明する。図9は、プロセッサ1が行う動作のフローチャートである。
【0076】
図示するように、まずパイプラインの第1ステージST1において、制御部60が命令を発行する(ステップS10)。これは第1の実施形態と同様である。
【0077】
次に、第2ステージにおいて制御部60は、データアクセスのスケジューリングを行う(ステップS20)。すなわち、ステップS10で発行されたアドレス信号RAがパイプラインラッチ70を介してタグアレイ11に与えられる。これにより、タグアレイ11においてヒットミス判定が行われ、この結果が制御部60に与えられる。この結果に基づき、制御部60は各オペランドにつき、データをレジスタファイル30から読み出すべきなのか、またはレジスタファイル30から読み出すべきなのかを決定する。
【0078】
第2ステージST2に後続する第3、第4ステージST3、ST4では、キャッシュミスしたオペランド(ステップS21、YES)についてのレジスタファイル30へのデータアクセスがなされる(ステップS13−1、S13−2)。これは、第1の実施形態で説明したステップS13と同じである。他方、キャッシュヒットしたオペランドについては(ステップS21、NO)、第3ステージST3では何らの処理も行われず、第4ステージST4において、データアレイ12からデータが読み出される(ステップS22)。
【0079】
そして第4ステージST4において、選択回路40が各オペランドに対応するデータを選択し、読み出しデータRDとして出力する。その後は第1の実施形態と同様に、ステップS15、S16の処理が行われる。
【0080】
<パイプラインについて>
図10は、本実施形態に係る上記動作の流れを時間軸に沿って示した概念図である。図中の第2ステージに記した“RS”は、制御部60によりスケジューリングを行う(図9におけるステップS20)ステージであることを示す。“RR/CR”は、レジスタファイル30またはレジスタキャッシュ10に対するデータアクセスを行う(ステップS13−2、S22)ステージであることを示す。その他は図3と同様である。
【0081】
図示するように、第1ステージで制御部60により命令発行された後(“IS”)、まず第2ステージでデータアクセスのスケジューリングが行われる(“RS”)。その後、第3ステージでレジスタファイル30へのデータアクセスが可能とされる(“RR”)。引き続き、第4ステージでレジスタファイル30またはレジスタキャッシュ10に対するデータアクセスが可能とされる(“RR/CR”)。そして、複数の上記パイプラインが同時並行して実行される。以上のうち、第3ステージ以降の処理の流れは、第2ステージにおいて制御部60によってスケジューリングされたものである。
【0082】
図11は、ある1つのあるパイプラインに着目し、キャッシュミスが発生した場合としない場合とにつき示している。図示するように、第2ステージでキャッシュミスが発生した場合には、第3、第4ステージでレジスタファイル30へのデータアクセスが行われ、データはレジスタファイル30から読み出される。レジスタキャッシュ10に対しては、タグアレイ11に対するアクセスは為されるが、データアレイ12に対する読み出しアクセスは為されない。
【0083】
これに対してキャッシュミスが発生しない場合には、第3ステージにおいては特に処理は行われず、次の第4ステージにおいて、レジスタキャッシュ10のタグアレイ12からデータが読み出される。但し、キャッシュミスが発生しない場合であっても、第3ステージが省略されるわけではない。キャッシュミスの発生の有無にかかわらず、パイプラインのステージ数は6段である。つまり第3ステージは、必要に応じてレジスタファイル30へのアクセスを行うための専用のステージである。
【0084】
なお、図10及び図11ではオペランドが1つの場合について示しているが、複数の場合も同様である。図12は、オペランドが2つであり、一方につきキャッシュミスが発生し、他方については発生しない場合について示している。図12において第3、第4ステージが2段になっているが、この2段のうちのそれぞれが各オペランドに対応する。
【0085】
図示するように、上段に示すオペランドについてはキャッシュミスが発生していないので、第3ステージでは何らの処理も行われず、第4ステージでレジスタキャッシュ10からデータが読み出される。これに対して下段に示すオペランドについてはキャッシュミスが発生しているので、第3、第4ステージにおいてレジスタファイル30からのデータ読み出しが実行される。
【0086】
<効果>
以上のように、この発明の第2の実施形態に係る半導体集積回路であると、第1の実施形態で説明した(1)の効果に加えて、下記(2)の効果が得られる。
【0087】
(2)プロセッサの回路構成を簡略化出来る。
第1の実施形態で説明したように、レジスタファイルのパイプライン化は、新たな問題を引き起こす。パイプライン化に固有の問題として、バイパスネットワーク(bypass network)の複雑化が挙げられる。これは、バイパスそのものがクリティカルであるため、非常に大きな問題となる。
【0088】
バイパスネットワークの概念について、図6のパイプラインチャートを用いて説明する。命令Ibが命令Iaに依存しており、命令Iaでの演算結果をオペランドに用いて命令Ibが実行されると仮定する。すると、命令Ibのレジスタキャッシュへのアクセスタイミング(“CR”)は、命令Iaの演算タイミング(“EX”)と同時であり、演算結果は未だレジスタキャッシュに書き込まれていない。よってこのような場合、バイパスネットワークを用いて、命令Iaに関する演算結果を直接演算器へ入力する(これをオペランドバイパスと呼ぶ)。
【0089】
すなわち、パイプラインラッチを用意し、このパイプラインラッチに1サイクル前の演算器の演算結果をラッチさせる。そしてこれを命令Ibの演算タイミングで演算器に入力する。バイパスネットワークは、上記パイプラインラッチ、信号線、及びデータを選択する選択回路などを含む。そしてパイプラインが深くなるほど、演算器の下流には、1、2、3、…サイクル前の実行結果を保持するパイプラインラッチが必要となり、それに伴い選択回路の規模も増加し、バイパスネットワークが複雑化する。そのため、場合によっては、バイパスネットワークは演算器本体に匹敵する規模の回路となる。
【0090】
この点、本実施形態に係る構成であると、ヒット/ミス判定のタイミング(“RS”)と、データアレイ12へのアクセスのタイミング(“RR/CR”)とを分離している。そのため、オペランドバイパスが必要な期間を短縮し、バイパスネットワークの規模を最小限に抑え、プロセッサの回路構成を簡略化出来る。この点につき、図13を用いて説明する。図13は、本実施形態に係るパイプラインチャートである。図中の命令Ib〜Idは命令Iaに依存するものとする。
【0091】
図示するように、命令Ib、Icがデータアレイ12へアクセスするタイミング(“RR/CR”)では、命令Iaの演算結果のレジスタキャッシュ10への書き込み(“CW”)が完了していない。従って、命令Ib、Icは、オペランドバイパスによってデータを得る必要がある。
【0092】
これに対して命令Idがデータアレイ12へアクセスするタイミングでは、命令Iaの演算結果のレジスタキャッシュ10への書き込みは、すでに完了している。従って、オペランドバイパスは不要である。
【0093】
すなわち、図13の場合にバイパスが必要なるのは、命令Iaの発行後の2サイクルだけで良い。これは、第2ステージにおけるレジスタキャッシュ10へのアクセスではヒットミス判定のみが行われ、実際のデータアレイ12へのアクセスはそれより後段の第4ステージで行われるからである。例えば、第2ステージでデータアレイ12へのアクセスがなされる構成を仮定すれば、図13の場合には命令Iaの発行後、4サイクル分のバイパスが必要となる。
【0094】
このように、データアレイ12へのアクセスタイミングを遅延させることで、オペランドバイパスが必要な期間を短縮し、バイパスネットワークの規模を最小限に抑え、プロセッサの回路構成を簡略化出来る。なお、上記実施形態では“RR/CR”のステージは“EX”ステージの直前であるが、必ずしも直前である必要は無い。しかし、オペランドバイパスを簡略化するという観点では、“RR/CR”のステージは後段であるほど良い。
【0095】
なお,通常のセット・アソシアティブ構成をとるキャッシュではタグとデータアレイのアクセスはそれぞれ並列に行われるが、本実施形態のように逐次で行うことにより、アレイアクセス後のセレクタを省略出来る効果もある。
【0096】
[第3の実施形態]
次に、この発明の第3の実施形態に係る半導体集積回路について説明する。本実施形態は、上記第2の実施形態において、レジスタファイル30に書き込むべきデータを一時的に保持可能なバッファを設けたものである。以下では、第2の実施形態と異なる点についてのみ説明する。
【0097】
<プロセッサの構成について>
図14は、本実施形態に係るプロセッサ1のブロック図である。図示するように本実施形態に係るプロセッサ1は、第2の実施形態で説明した図8の構成において、更にライトバッファ(write buffer)90を備えている。
【0098】
ライトバッファ90は、例えばSRAM等の半導体メモリであり、演算器50の演算結果を保持可能である。すなわち、書き込みデータWD及び書き込みアドレスWAが、パイプラインラッチ84を介して入力されることで、ライトバッファ90に対して演算器50の演算結果が書き込まれる。ライトバッファ90への演算結果の書き込みは、第6ステージにおいて、レジスタキャッシュ10への書き込みと同時に行われる。
【0099】
<プロセッサの動作について>
次に、本実施形態に係る上記プロセッサ1の大まかな動作は、第2の実施形態で説明した図9と同様であり、第2の実施形態と異なる点は、図9におけるステップS16の処理内容のみである。従って、以下ではステップS16についてのみ説明する。図15は、本実施形態におけるステップS16の詳細を示すフローチャートである。
【0100】
ステップS16で演算が終了した後、演算結果が書き込みデータWDとして、パイプラインラッチ83、84を介して、それぞれデータアレイ12及びライトバッファ90に与えられる。そして、演算結果がデータアレイ12及びライトバッファ90に書き込まれる(ステップS30)。
【0101】
その後、ステップS30を実行したサイクルに後続するサイクルにおいて、レジスタファイル30のポートが空いていれば(ステップS31、YES)、ライトバッファ90内の演算結果が、パイプラインラッチ74及びアービタ20を介してレジスタファイル30に書き込まれる(ステップS32)。ポートが空いていなければ(ステップS31、NO)、ポートが空くまで待機し(ステップS33)、ポートが空いた時点でレジスタファイル30へ書き込む(ステップS32)。
【0102】
<効果>
以上のように、この発明の第3の実施形態に係る半導体集積回路であると、第1、第2の実施形態でそれぞれ説明した(1)及び(2)の効果に加えて、下記(3)の効果が得られる。
【0103】
(3)レジスタファイルのポートを有効利用出来る。
第1の実施形態において説明したように、レジスタファイルの回路面積縮小のためには、ポート数を削減することが有効である。しかし、ポート数を削減すれば、当然ながら個々のポートの使用率は高くなり、パイプラインをストールさせる必要性も高まる。
【0104】
この点、本実施形態に係る構成であると、演算結果を一旦ライトバッファ90に格納し、レジスタファイル30のポートが空いている期間にレジスタファイル30への書き込みを行っている。
【0105】
レジスタファイル30において、データの読み出しアクセスは、パイプラインのストールを回避する観点から優先されなければならない。しかし、レジスタファイル30への書き込みが遅れても、パイプラインに与える悪影響は少ない。従って、パイプラインのストールを回避しつつ、レジスタファイル30のポートを有効に利用出来る。
【0106】
[第4の実施形態]
次に、この発明の第4の実施形態に係る半導体集積回路について説明する。本実施形態は、上記第3の実施形態において、ライトバッファ90に必要なデータが保持されている際における、データアクセスのスケジューリングに関するものである。特に、データをいずれのメモリから読み出すかを決定する方法に関する。
【0107】
本実施形態に係るプロセッサ1の大まかな動作は、第2の実施形態で説明した図9及び第3の実施形態で説明した図15と同様であり、第2、第3の実施形態と異なる点は、図9におけるステップS20の処理内容のみである。従って、以下ではステップS20についてのみ説明する。図16は、本実施形態におけるステップS20の詳細を示すフローチャートである。
【0108】
図示するように制御部60は、必要なデータがレジスタキャッシュ10にある場合には(ステップS40、YES)、データの読み出し元をレジスタキャッシュ10に決定する(ステップS41)。データがレジスタキャッシュ10に無く(ステップS40、NO)、且つライトバッファ90にも無い場合には(ステップS42、NO)、データの読み出し元をレジスタファイル30に決定する(ステップS43)。データがレジスタキャッシュ10に無く(ステップS40、NO)、且つライトバッファ90にある場合には(ステップS42、YES)、制御部60はパイプラインをストールさせる(ステップS44)。そして、ストールさせている期間にライトバッファ90内のデータをレジスタファイル30に書き込み、改めてレジスタファイル30からデータを読み出す(ステップS45)。
【0109】
<効果>
本実施形態に係る構成であると、上記第1乃至第3の実施形態で説明した(1)乃至(3)の効果に加えて、下記(4)の効果が得られる。
【0110】
(4)ライトバッファを小サイズ且つ低コストで実現出来る。
第3の実施形態で説明したように、レジスタファイル30への演算結果の書き込みは、一旦ライトバッファ90上へバッファリングされた後、サイクル・スチールによって行われる。
【0111】
この際、レジスタキャッシュ10においてキャッシュミスが発生し、且つアクセス先がライトバッファ90上のあるデータであるような場合がある。この場合、本実施形態ではバックエンドをストールさせて、ライトバッファ90のデータをレジスタファイル30に書き込んだ後、改めてレジスタファイル30からデータを読み出す。従ってライトバッファ90には、自身へのライトポートと、レジスタファイル30への書き込み時データを出力するためのポートとがあれば足り、ライトバッファ90からデータを直接読み出すための専用のポートを設ける必要が無い。ポートの削減は、レジスタファイルと同様に回路面積・コストの削減につながるため、ライトバッファ90を小サイズ且つ低コストで実現出来る。そしてこのことも、プロセッサ1の回路面積の削減に寄与する。
【0112】
ライトバッファ90にデータが保持されているケースでは、同じデータがレジスタキャッシュ10にも保持されていることが通常である。なぜなら、レジスタキャッシュ10への書き込みとライトバッファ90への書き込みとは、同時に行われるからである。従って、例えライトバッファ90上のデータにアクセスがなされたとしても、その場合にはレジスタキャッシュ10から当該データを読み出せることが通常であり、バックエンドをストールさせなければならない事態が発生することは極めて稀である。よって、本実施形態のように、場合によってはストールさせるようにしたとしても、実使用上、問題となることは殆ど無い。
【0113】
なお、上記の通りライトバッファ90の回路規模を相当に縮小出来るため、ライトバッファ90への書き込みの際のタイミングマージンが増加する。従って、プロセッサ1の動作信頼性が向上される。更に、ライトバッファ90からデータを取り出し、レジスタファイル30へデータを書き込む際、通常よりも時間(サイクル数)をかけて行うことで、レジスタファイル30への書き込みの際のタイミングマージンも増加させることが出来る。このことも、プロセッサ1の動作信頼性向上に寄与する。本方法であると、ライトバッファ90からレジスタファイル30にデータを書き移すための時間が長くなるが、上記理由により、実際上、性能に影響を与えるものでは無い。
【0114】
[第5の実施形態]
次に、この発明の第5の実施形態に係る半導体集積回路について説明する。本実施形態は、上記第2乃至第4の実施形態のいずれかにおけるデータアクセスのスケジューリングに関するものである。特に、データの読み出しをいずれのステージで行うかを決定する方法に関する。
【0115】
図17は、本実施形態に係るパイプラインチャートである。本実施形態に係るレジスタファイル30は、1サイクルでデータを読み出し可能とされている。上記第1乃至第4の実施形態に係る構成であると、ポート数を削減することでレジスタファイル30の回路面積を削減出来る。その結果、レジスタファイル30をパイプライン化すること無く、1サイクルでデータアクセス出来るようにすることが可能となる。
【0116】
図示するように、本実施形態に係るパイプラインチャートは、第2の実施形態で説明した図10のパイプラインチャートにおいて、第3ステージをレジスタファイル30に対するデータアクセス用のステージとし、第4ステージを、レジスタファイル30及びレジスタキャッシュ10に対するデータアクセス用のステージとしたものである。つまり、1つの命令につき、レジスタファイル30へのデータアクセス可能なステージが2つ設けられている。言い換えれば、レジスタファイル30からデータを読み出す機会が2回設けられている。そして、いずれのステージでレジスタファイル30へのデータアクセスを行うかについて、第2ステージのスケジューリングで制御部60が決定する。この際制御部60は、ある命令に着目した場合に、他の命令によってレジスタファイル30の全てのポートが使用されているステージ以外のステージを選んで、データアクセスのタイミングを決定する。以下、具体的に説明する。
【0117】
図18は本実施形態に係るパイプラインチャートであり、2つの命令Ia、Ibが並行して実行されている様子を示す。図示するように、命令Iaが第4ステージでレジスタファイル30を使用中であり、レジスタファイル30の全てのポートが使用中であったとする。すると、命令Ibの第3ステージは命令Iaの第4ステージと同時に実行されるので、命令Ibは第3ステージではレジスタファイル30にアクセス出来ない。従って制御部60は、命令Ibのレジスタファイル30へのアクセスを第4ステージで行うようにスケジューリングする。
【0118】
<効果>
本実施形態に係る構成であると、上記第1乃至第4の実施形態で説明した(1)乃至(4)の効果に加えて、下記(5)の効果が得られる。
【0119】
(5)レジスタファイルの空きポートを有効に活用出来る。
上記第1乃至第3の実施形態に係る構成によれば、レジスタファイル30のレイテンシを短縮化出来る。すると、レジスタファイル30へのアクセス機会を複数設けることが出来るようになる。
【0120】
本実施形態に係る方法であると、レジスタファイル30への複数のアクセス機会のうち、レジスタファイル30の全てのポートが他の命令によって使用されていないタイミングでレジスタファイル30にアクセスするよう、スケジューリングが行われる。従って、レジスタファイル30へのアクセスが一度に集中した場合であっても、レジスタファイル30へのアクセスを複数の機会において分散して行うことが可能となり、レジスタファイル30の空きポートを有効に活用出来る。この結果,レジスタファイル30のポート数を更に削減することができ、レジスタファイル30の回路規模を更に縮小出来る。
【0121】
なお、上記実施形態では1サイクルでデータアクセス可能なレジスタファイルの場合を例に挙げて説明したが、2サイクル以上必要とする場合であっても適用出来る。このような場合のパイプラインチャートを図19に示す。
【0122】
図示するように、第3−1ステージ及び第4−1ステージにおいて最初のレジスタファイルアクセスの機会が与えられ、引き続き第3−2ステージ及び第4−2ステージにおいて2回目のレジスタファイルアクセスの機会が与えられる。このような場合には、図20に示すパイプラインチャートのようにスケジューリングが行われる。例えば、命令Iaが第3−1ステージ及び第4−1ステージでレジスタファイル30にアクセスするとする。すると、命令Ibについては、第3−2ステージ及び第4−2ステージにおいてレジスタファイル30にアクセスするように、スケジューリングが行われる。
【0123】
以上のように、この発明の第1乃至第5の実施形態によれば、プロセッサ1は、データを保持する第1メモリ(レジスタファイル30)と、前記第1メモリに対するキャッシュメモリとして機能する第2メモリ(レジスタキャッシュ10)とを備え、データに対する読み出し処理と書き込み処理とを複数の処理ステージによりパイプライン実行する半導体集積回路である。そして、読み出し処理の対象となるデータを第1メモリ30から読み出すと決定された場合に、該データの第1メモリ30からの読み出しを処理ステージのいずれか(ステージ“RR”、“RR/CR”)において行う。
【0124】
上記構成により、レジスタファイル30のポート数を削減し、その回路面積を削減出来る。また、ステージ“RR”、“RR/CR”を設けることで、キャッシュミスが発生した場合であってもパイプラインの乱れを回避出来る。すなわち、性能低下を招くことなく回路面積を削減出来る半導体集積回路を提供出来る。
【0125】
なお、上記第3乃至第5の実施形態は、第2の実施形態で説明したように第2ステージでスケジューリングが行われる場合を前提に説明したが、第1の実施形態に適用することも可能である。すなわち、図3に示すパイプライン動作を行うプロセッサにおいて、ライトバッファ90を設けたり、または第4、第5の実施形態で説明したスケジューリングを行ったりしても良い。
【0126】
また、リフィルを行うか否かは適宜選択出来る。リフィルとは、キャッシュミスが発生して、必要なデータをレジスタファイル30から読み出した際に、このデータをレジスタキャッシュ10に書き込むことである。通常、1度アクセスされたデータは近い時間に再度アクセスされる可能性が高いため、リフィルを行うことでヒット率を向上出来る。リフィルを行う場合には、レジスタキャッシュ10にリフィル用のポートを設けなければならず、レジスタキャッシュ10の回路面積は増大する。しかし、レジスタキャッシュ10のヒット率は高まるため、ストールが発生する可能性は低下する。他方、リフィルしなければキャッシュミス率は高まるが、レジスタキャッシュ10の回路面積は小さく出来る。また、例えキャッシュミス率が高まっても、レジスタファイル30へのアクセスは大きくは増加しないため、実使用上問題とはならない。更には、リフィルのための制御が不要となる。よって、リフィルを行うか否かは、プロセッサの仕様によって適宜選択すれば良い。
【0127】
また、上記実施形態では、レジスタファイル30及びレジスタキャッシュ10を備えたプロセッサ1を例に挙げて説明した。しかし、レジスタファイル30及びレジスタキャッシュ10に限らず、これらは一般的な半導体メモリであって良い。すなわち、レジスタファイル30がデータを保持する主たるメモリであり、且つレジスタキャッシュ10がレジスタファイル30のキャッシュメモリである場合に限られるものでは無い。レジスタファイル30及びレジスタキャッシュ10は、データを保持するメモリでありさえすれば、上記実施形態が適用出来る。
【0128】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【0129】
また、本願の基礎出願の出願当初の特許請求の範囲を付記する。
[1]データを保持する第1メモリと、前記第1メモリに対するキャッシュメモリとして働く第2メモリとを備え、前記データに対する読み出し処理と書き込み処理とを複数の処理ステージによりパイプライン実行する半導体集積回路であって、前記読み出し処理の対象となるデータを前記第1メモリから読み出すと決定された場合に、該データの前記第1メモリからの読み出しを前記処理ステージのいずれかにおいて行うことを特徴とする半導体集積回路。
[2]上記[1]において、前記読み出し処理の対象となるデータの前記第2メモリからの読み出しを前記処理ステージのいずれかにおいて行い、前記データを前記第2メモリから読み出す前記処理ステージは、該データの前記第2メモリからの読み出しが開始可能となるステージより下流に存在する。
[3]前記第1メモリに対するライトバッファとして働く第3メモリを更に備え、前記書き込み処理の対象となるデータは、まず前記第3メモリに一時的に保持され、前記第1メモリのポートが空いている期間に前記第1メモリに書き移される。
[4]前記読み出し処理の対象となるデータが前記第3メモリに保持されている場合、前記パイプラインをストールさせ、該ストール期間に、該データを前記第3メモリから前記第1メモリに書き移し、更に該データを前記第1メモリから読み出す。
[5]前記処理ステージには、前記読み出し処理の対象となるデータの前記第1メモリからの読み出しを行うステージが、一つのデータの読み出しに必要とされるステージ数より多く含まれ、前記第1メモリからのデータの読み出しは、同時にパイプライン実行さている処理のために前記第1メモリのポートのすべてが使用されてはいない処理ステージにおいて実行される。
【符号の説明】
【0130】
1…プロセッサ、10…レジスタキャッシュ、11…タグアレイ、12、32…データアレイ、20…アービタ、30…レジスタファイル、31…デコーダ、40…選択回路、50…演算器、60…制御部、70〜84…パイプラインラッチ、90…ライトバッファ

【特許請求の範囲】
【請求項1】
第1メモリと、
前記第1メモリに対するキャッシュメモリとして働く第2メモリとを備え、
前記第1メモリ及び前記第2メモリは複数の処理ステージからなるパイプラインにおいてアクセスされ、
前記第1メモリからデータが読み出される場合の第1読み出し、前記第2メモリからデータが読み出される場合の第2読み出し、及び該データを前記第2メモリから読み出すと決定する判定、は、前記複数の処理ステージのうちのいずれかの処理ステージで実行され、
前記第1読み出しにて読み出されたデータが出力されるタイミングと、前記第2読み出しにて読み出されたデータが出力されるタイミングとは同一であり、
前記判定が実行される処理ステージは、前記第1読み出しが実行される処理ステージより上流にあり、
前記第1読み出しで読み出されたデータは、前記第2メモリを経由しない経路を用いて出力される
ことを特徴とする半導体集積回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2013−37716(P2013−37716A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2012−221419(P2012−221419)
【出願日】平成24年10月3日(2012.10.3)
【分割の表示】特願2008−284574(P2008−284574)の分割
【原出願日】平成20年11月5日(2008.11.5)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 2008年5月6日 社団法人情報処理学会発行の「情報処理学会研究報告 情処研報 Vol.2008,No.39」及び、2008年6月4日 社団法人情報処理学会発行の「情報処理学会シンポジウムシリーズ Vol.2008,No.5先進的計算基盤システムシンポジウム SACSIS 2008 論文集」に発表
【出願人】(511180606)
【出願人】(511180617)
【Fターム(参考)】