制御装置、記憶装置、演算処理装置および制御方法
【課題】命令データRAMの無駄な動作を抑えて低消費電力を実現する。
【解決手段】
上記課題を解決するために、データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御装置に、前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する個別記憶部特定部と、前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力するデータ出力部と、前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、を備える。
【解決手段】
上記課題を解決するために、データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御装置に、前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する個別記憶部特定部と、前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力するデータ出力部と、前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュメモリ制御装置、キャッシュメモリ装置、演算処理装置およびキャッシュメモリ制御方法に関する。
【背景技術】
【0002】
様々な分野で用途に応じた機能などを提供するコンピュータが普及している。一般に、コンピュータネットワークにおいて、クライアントからの要求に応じて必要なサービスを提供するコンピュータをサーバという。
【0003】
図1は、サーバに搭載される演算処理装置としてのCPU(Central Processing Unit:中央処理装置)内部に実装されるL1キャッシュメモリ(1次キャッシュメモリ)に用いられるRAM(Random Access Memory)の制御を説明する図である。
【0004】
CPUを制御してプログラム命令を実行させる命令制御部110から命令フェッチ要求を受けると、L1キャッシュ部100内のTAG検索部101は、TAGテーブルを参照し、命令アドレスに含まれるインデックスに対応する物理アドレスを検索する。このインデックスに対応する物理アドレスをTAGという。同時に、アドレス変換部102は、TLB(Translation Lookaside Buffer:アドレス変換バッファ)を参照し、仮想アドレス(命令アドレス)を物理アドレスに変換する。
【0005】
すると、TAGマッチ処理部103は、TAG検索部101が出力するTAGと、アドレス変換部102が出力する物理アドレスと、を比較する。
両アドレスが一致した場合はTAGマッチと判定し、WAYセレクタ107は、TAGマッチしたデータRAMを選択する。L1キャッシュ部100は、選択したデータを命令制御部110に出力する。
【0006】
TAGマッチしない場合、L2キャッシュ部に対してデータを要求する処理を開始する。処理完了後、TAG検索部101が再度TAGテーブルを検索する。そして、TAGマッチ処理部103は、TAG検索部101が出力するTAGと、アドレス変換部102が出力する物理アドレスと、を比較する。
【0007】
このようにしてTAGの検索と同時に複数のデータRAMからデータが読み出される。この間、クロック供給部104は、データRAM105および106にクロックを供給し続ける。
【0008】
上記技術に関連して、動作速度に余裕がある場合には、ヒットしたデータメモリのみを活性化して無駄なミスウェイへのアクセスによる電力消費を減らすキャッシュメモリが知られている。
【0009】
また、CPUによるアクセス時に第1信号が連続的にアクセスを行うアドレスであることを示しかつフラグ手段が第1状態であるときはアドレスアレイのメモリ動作を抑止しデータアレイだけを動作させるデータ処理装置が知られている。
【0010】
また、セカンドキャッシュに対するアクセス要求を受付け、そのアクセス要求の種類およびアドレスの情報に基づいて、複数のブロックから構成されるRAMのうち動作不能なRAMを判断することが知られている。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開平09−223068号公報
【特許文献2】特開平11−184752号公報
【特許文献3】特開2006−040089号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
図1に示したL1キャッシュ部100は、命令制御部110からの要求に応じて、TAGマッチしたデータRAMと同一ライン、例えば32バイトを低位のアドレスから連続して読み出す場合がある。このような場合、TAGマッチしなかったデータRAMのデータは使用されない。しかし、全てのデータRAMには常時クロックが印加されているため、動作による無駄な電力を消費する。
【0013】
本キャッシュメモリ制御装置は、命令データRAMに対するクロックの供給を抑止して無駄な低消費電力を実現することを目的とする。
【課題を解決するための手段】
【0014】
本キャッシュメモリ制御装置の1つの観点によれば、データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御装置において、以下の構成を備える。
【0015】
個別記憶部特定部は、前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する。
【0016】
データ出力部は、前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力する。
複数のクロック供給部は、複数の前記個別記憶部に対してクロックをそれぞれ供給する。
【0017】
クロック制御部は、前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを前記命令制御部が要求する場合、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させる。
【発明の効果】
【0018】
本キャッシュメモリ制御装置によると、命令データRAMの無駄な動作を抑えて低消費電力を実現することができる。
【図面の簡単な説明】
【0019】
【図1】サーバに搭載されるCPU内部に実装されるL1キャッシュメモリに用いられるデータRAMの制御を説明する図である。
【図2】第1の実施例に係る制御装置をデータ記憶装置に使用する演算処理装置の主要な構成の例を示す図である。
【図3】第2の実施例に係るキャッシュメモリ制御装置を使用する演算処理装置の主要な構成の例を示す図である。
【図4】第2の実施例に係る演算処理装置の主要部の具体的な構成例を示す図である。
【図5】第2の実施例に係るTAG(WAY0)マッチ検出部の具体的な構成例を示す図である。
【図6】第2の実施例に係るRAMクロック制御部とデータRAMの具体的な構成例を示す図である。
【図7】第2の実施例に係る命令制御部の動作の概要を説明する図である。
【図8】第2の実施例に係る命令制御部におけるシーケンシャルアクセスの判別処理を示すフローチャートである。
【図9】第2の実施例に係るTAGマッチ処理部におけるデータRAMのクロック制御を示すフローチャートである。
【図10】第2の実施例に係る命令フェッチのパイプライン処理を説明する図である。
【図11】第2の実施例に係る命令フェッチのパイプライン処理を具体的に説明する図である。
【図12】第2の実施例に係る命令フェッチのパイプライン処理を具体的に説明する図である。
【図13】第2の実施例に係る演算処理装置の変形例を示す図である。
【図14】第2の実施例に係る演算処理装置の変形例におけるRAMクロック制御部の主要部の具体的な構成例を示す図である。
【発明を実施するための形態】
【0020】
以下、本実施形態について、図2〜図13に基づいて説明する。
【0021】
[第1の実施例]
図2は、本実施例に係る制御装置をデータ記憶装置230に使用する演算処理装置200の主要な構成の例を示す図である。
図2に示す演算処理装置200は、命令制御部210と、演算部220と、データ記憶部230と、を備える。
【0022】
命令制御部210は、記憶部230その他演算処理装置200と接続する図示しない不揮発性メモリなどから所定のプログラム命令を読み出し、必要に応じて演算部220に演算を実行させるなどしてプログラム命令を実行する。
【0023】
演算部220は、命令制御部210が要求する演算を実行する。
データ記憶部230は、個別記憶部特定部231と、クロック制御部232と、記憶部233と、データ出力部234と、を備える。本実施例に係る制御装置は、例えば、個別記憶部特定部231と、クロック制御部232と、データ出力部234と、を含む構成により実現することができる。
【0024】
個別記憶部特定部231は、記憶部233が有する後述の個別記憶部233b−0、233b−1、・・・および233b−nのうち、命令制御部210が要求するデータが記憶されている個別記憶部を特定する。nは1以上の自然数である。個別記憶部233b−0、233b−1、・・・および233b−nのうち任意の個別記憶部を単に「個別記憶部」という。
【0025】
クロック制御部232は、第1のデータに続いて第1のデータが記憶されている個別記憶部に第1のデータと連続して記憶されている第2のデータが命令制御部210から要求されたことを検出する。
【0026】
以下、第1のデータに続いて第1のデータが記憶されている個別記憶部に第1のデータと連続して記憶されている第2のデータが命令制御部210から要求されることを、「シーケンシャルアクセス」という。このとき、第1のデータが記憶されている個別記憶部を「第1の個別記憶部」という。
【0027】
また、第2のデータに続いて第1の個別記憶部に第2のデータと連続して記憶されている第3のデータが要求される場合も、「シーケンシャルアクセス」という。
【0028】
クロック制御部232は、シーケンシャルアクセスを検出すると、第1の個別記憶部以外の個別記憶部へのクロックの供給を停止するように、クロック供給部233a−0、233a−1、・・・および233a−nに指示する。クロック供給部233a−0、233a−1、・・・および233a−nのうち任意のクロック供給部を単に「クロック供給部」という。 なお、命令制御部210からのデータ要求がシーケンシャルアクセスか否かは、命令制御部210が判別した結果の通知からクロック制御部232が検出するようにしてもよいし、クロック制御部232自身が判別して検出するようにしてもよい。
【0029】
記憶部233は、個別記憶部にクロックを供給するクロック供給部233a−0、233a−1、・・・および233a−nと、データを記憶する個別記憶部233b−0、233b−1、・・・および233b−nと、を備える。
【0030】
クロック供給部233a−0、233a−1、・・・および233a−nはそれぞれ、クロック制御部232からの指示に応じて、個別記憶部233b−0、233b−1、・・・および233b−nにクロックを供給する。
【0031】
なお、クロック供給部233a−0、233a−1、・・・および233a−nは、各自が生成したクロックを個別記憶部に供給してもよいし、図示しないクロック生成回路から供給されるクロックを個別記憶部に供給してもよい。
【0032】
個別記憶部233b−0、233b−1、・・・および233b−nは、例えば、データを記憶する不揮発メモリである。個別記憶部233b−0、233b−1、・・・および233b−nそれぞれが1つのWAYを構成することでnWAY構成のメモリを実現できる。個別記憶部233b−0、233b−1、・・・および233b−nは、クロック供給部から供給されるクロックに応じて動作し指定のデータをデータ出力部234に出力する。
【0033】
データ出力部234は、個別記憶部特定部231が特定した個別記憶部が出力するデータを取得して命令制御部210に出力する。
以上の構成において、クロック制御部232は、シーケンシャルアクセスであることを検出する。すると、クロック制御部232は、クロック供給部233a−0、233a−1、・・・および233a−nに対して、個別記憶部特定部231が特定した第1の個別記憶部以外の個別記憶部へのクロックの供給を停止するように指示する。
【0034】
その結果、シーケンシャルアクセスが行なわれている間、第1の個別記憶部以外の全ての個別記憶部へのクロックの供給が停止し、記憶部233の無駄な動作を抑えることができるので、データ記憶部230の消費電力を低く抑えることが可能となる。
【0035】
なお、図2では、クロック供給部233a−0、233a−1、・・・および233a−nが、記憶部233内部に備わる例を示した。しかし、クロック供給部233a−0、233a−1、・・・および233a−nが記憶部233内部に備わる場合に限定する趣旨ではない。例えば、クロック供給部233a−0、233a−1、・・・および233a−nは、記憶部233の外部に備わっていてもよい。
【0036】
[第2の実施例]
図3は、本実施例に係るキャッシュメモリ制御装置をL1キャッシュ部330に使用する演算処理装置300の主要な構成の例を示す図である。
図3に示す演算処理装置300は、命令制御部310と、演算部320と、L1キャッシュ部330と、L2キャッシュ部340と、を備える。本実施例に係るキャッシュメモリ制御装置は、TAG検索部331と、アドレス変換部332と、TAGマッチ処理部333と、を含む構成により実現することができる。
【0037】
命令制御部310は、L1キャッシュ部330、L2キャッシュ部340、その他演算処理装置300と接続する図示しない不揮発性メモリなどから所定のプログラム命令を読み出し、必要に応じて演算部320に演算を実行させるなどしてプログラム命令を実行する。 命令制御部310は、L1キャッシュ部330に対するアクセス、例えば、命令フェッチ要求がシーケンシャルアクセスか否かを判別する。そして、命令制御部310は、L1キャッシュ部330に対して判別結果、例えば、命令フェッチ要求がシーケンシャルアクセスか否かを通知する。
【0038】
演算部320は、命令制御部310からの指示に応じて、演算処理を実行する。
L1キャッシュ部330は、例えば、演算処理装置300と接続する図示しない不揮発メモリやL2キャッシュ部340などから読み出したデータの一部または全部を一時的に記憶する。そして、L1キャッシュ部330は、命令制御部310などからの要求に応じて、内部に保持するデータを出力する。
【0039】
ここで、L1キャッシュ部330は、TAG検索部331と、アドレス変換部332と、TAGマッチ処理部333と、データRAM334と、を備える。
TAG検索部331は、命令制御部310からの命令フェッチ要求に応じて、その命令フェッチ要求とともに受ける命令アドレスに含まれるインデックスと一致するTAGをインデックステーブルから検索する。この検索処理は、データRAM334に含まれるWAY毎に行なわれる。
【0040】
ここで、TAGとは、データRAMに格納されているデータを管理する情報である。本実施例では、データRAMに記憶されているデータの物理アドレスを含む情報をTAGという。そして、インデックステーブルとは、データRAMに格納されているデータのTAGをインデックス毎に記憶する情報である。このインデックステーブルは、データRAM334に含まれるWAY毎に用意される。
【0041】
アドレス変換部332は、命令制御部310からの命令フェッチ要求を受けると、TLB等を参照する。そして、アドレス変換部332は、命令フェッチ要求とともに受ける仮想アドレス(命令アドレス)を物理アドレスに変換する。
【0042】
TAGマッチ処理部333は、TAG検索部331が出力するTAGと、アドレス変換部332が出力する物理アドレスと、を比較する。そして、TAGマッチ処理部333は、TAG検索部331が出力するTAGと、アドレス変換部332が出力する物理アドレスと、が一致する場合を「TAGマッチ」と判断し、TAGマッチしたWAYからデータを読み出す。
【0043】
また、TAGマッチ処理部333は、命令制御部310からシーケンシャルアクセスである旨の通知を受けると、TAGマッチしたWAY以外のWAYへのクロックの印加を停止するように、データRAM334に指示する。
【0044】
データRAM334は、複数のWAYを含むメモリである。データRAM334は、WAY毎に、WAY内部へクロックを供給し、または、WAY内部へのクロックの供給を停止することが可能である。
【0045】
L2キャッシュ部340は、例えば、L1キャッシュ部330からキャッシュアウトされたデータの一部または全部を一時的に記憶する。
【0046】
図4は、本実施例に係るL1キャッシュ部330の具体的な構成例を示す図である。なお、図4では、説明を簡単にするために、データRAM334が2WAY構成を有する場合について説明するが、L1キャッシュ部330を図4に示す構成に限定する趣旨ではない。
【0047】
図4に示すL1キャッシュ部400は、TAG検索部401と、アドレス変換部402と、TAGマッチ処理部403と、データRAM404と、を備える。TAG検索部401、アドレス変換部402、TAGマッチ処理部403およびデータRAM404は、図3に示したTAG検索部331、アドレス変換部332、TAGマッチ処理部333およびデータRAM334にそれぞれ対応する。
【0048】
TAG検索部401は、TAG(WAY0)検索部410−0およびTAG(WAY1)検索部410−1を備える。TAGマッチ処理部403は、TAG(WAY0)マッチ検出部430−0およびTAG(WAY1)マッチ検出部430−1と、WAYセレクト部431と、プライオリティ制御部432と、を備える。プライオリティ制御部432は、RAMクロック制御部432aおよびTAGマッチ情報記憶部432bを備える。データRAM404は、WAY0のデータRAM(WAY0)440−0およびクロックバッファ441−0と、WAY1のデータRAM(WAY1)440−1およびクロックバッファ441−1と、を備える。
【0049】
以上の構成において、命令制御部310は、プログラム命令の実行を開始すると、必要に応じてL1キャッシュ部400内のRAMクロック制御部432aに対して命令フェッチ要求を行なう。命令フェッチ要求を行なう場合、命令制御部310は、RAMクロック制御部432aに命令フェッチ要求信号「1」を出力する。また、命令フェッチ要求を行なわない場合、命令制御部310は、RAMクロック制御部432aに命令フェッチ要求信号「0」を出力する。
【0050】
同時に、命令制御部310は、その命令フェッチ要求とともに、所望の命令が格納されている命令アドレス460をL1キャッシュ部400に通知する。命令アドレス460は、アドレス変換部402に出力される。命令アドレス460に含まれるインデックスは、TAG(WAY0)検索部410−0、TAG(WAY1)検索部410−1、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1に出力される。
【0051】
また、命令制御部310は、L1キャッシュ部400に出力した命令フェッチ要求がシーケンシャルアクセスか否かを判別し、その判別結果をL1キャッシュ部400内のRAMクロック制御部432aに通知する。この通知を「シーケンシャルアクセス通知」という。命令フェッチ要求がシーケンシャルアクセスであると判断すると、命令制御部310は、シーケンシャルアクセス通知信号「1」をRAMクロック制御部432aに出力する。また、命令フェッチ要求がシーケンシャルアクセスでないと判断すると、命令制御部310は、シーケンシャルアクセス通知信号「0」をRAMクロック制御部432aに出力する。
【0052】
ここで、例えば、命令フェッチ要求により、第1のプログラム命令に続いて第2のプログラム命令、第3のプログラム命令、・・・が要求される場合を考える。命令制御部310は、第1のプログラム命令が記憶されている第1のWAYに、第1のプログラム命令が記憶されている命令アドレスと連続するアドレスに記憶されている第2のプログラム命令が要求された場合を、「シーケンシャルアクセス」と判断する。同様に、命令制御部310は、第1のWAYに、第2のプログラム命令が記憶されている命令アドレスと連続するアドレスに記憶されている第3のプログラム命令が要求された場合も、「シーケンシャルアクセス」と判断する。
【0053】
ただし、本実施例に係るシーケンシャルアクセスは、同一のキャッシュラインに対するアクセスに限定する。
【0054】
TAG(WAY0)検索部410−0は、命令制御部310の命令フェッチ要求に応じ、その命令フェッチ要求とともに受ける命令アドレス460に含むインデックスと一致するTAGをデータRAM(WAY0)440−0のインデックステーブルから検索する。そして、TAG(WAY0)検索部410−0は、検索結果をTAG(WAY0)マッチ検出部430−0に出力する。このときTAG(WAY0)検索部410−0が出力するTAGを「TAG(WAY0)」という。
【0055】
TAG(WAY1)検索部410−1は、命令制御部310からの命令フェッチ要求に応じ、その命令フェッチ要求とともに受ける命令アドレス460に含むインデックスと一致するTAGをデータRAM(WAY1)440−1のインデックステーブルから検索する。そして、TAG(WAY1)検索部410−1は、検索結果をTAG(WAY1)マッチ検出部430−1に出力する。このときTAG(WAY1)検索部410−1が出力するTAGを「TAG(WAY1)」という。
【0056】
アドレス変換部402は、命令制御部310からの命令フェッチ要求を受けると、TLB等を参照し、命令アドレス460を物理アドレスに変換する。そして、アドレス変換部402は、物理アドレスをTAG(WAY0)マッチ検出部430−0とTAG(WAY1)マッチ検出部430−1とに出力する。
【0057】
TAG(WAY0)マッチ検出部430−0は、TAG(WAY0)検索部410−0が出力するTAGと、アドレス変換部402が出力する物理アドレスと、を比較する。そして、TAG(WAY0)マッチ検出部430−0は、比較結果を、WAYセレクト部431とRAMクロック制御部432aとに出力する。
【0058】
同様に、TAG(WAY1)マッチ検出部430−1は、TAG(WAY1)検索部410−1が出力するTAGと、アドレス変換部402が出力する物理アドレスと、を比較する。そして、TAG(WAY1)マッチ検出部430−1は、比較結果を、WAYセレクト部431とRAMクロック制御部432aとに出力する。
【0059】
以下、TAG(WAY0)マッチ検出部430−0またはTAG(WAY1)マッチ検出部430−1の出力を「TAGマッチ」という。特に、TAG(WAY0)マッチ検出部430−0が出力するTAGマッチを「TAG(WAY0)マッチ」といい、TAG(WAY1)マッチ検出部430−1が出力するTAGマッチを「TAG(WAY1)マッチ」という。
【0060】
TAG(WAY0)検索部410−0が出力するTAGとアドレス変換部402が出力する物理アドレスとが一致する場合、TAG(WAY0)マッチ検出部430−0は、RAMクロック制御部432aにTAG(WAY0)マッチ信号「1」を出力する。TAG(WAY0)検索部410−0が出力するTAGとアドレス変換部402が出力する物理アドレスとが一致しない場合、TAG(WAY0)マッチ検出部430−0は、RAMクロック制御部432aにTAG(WAY0)マッチ信号「0」を出力する。
【0061】
同様に、TAG(WAY1)検索部410−1が出力するTAGとアドレス変換部402が出力する物理アドレスとが一致する場合、TAG(WAY1)マッチ検出部430−1は、RAMクロック制御部432aにTAG(WAY1)マッチ信号「1」を出力する。TAG(WAY1)検索部410−1が出力するTAGとアドレス変換部402が出力する物理アドレスとが一致しない場合、TAG(WAY1)マッチ検出部430−1は、RAMクロック制御部432aにTAG(WAY1)マッチ信号「0」を出力する。 WAYセレクト部431は、TAG(WAY0)マッチ検出部430−0およびTAG(WAY1)マッチ検出部430−1が出力するTAGマッチ信号にしたがって、データRAM(WAY0)440−0またはデータRAM(WAY1)440−1を選択する。そして、WAYセレクト部431は、選択したデータRAMから出力されるデータを命令制御部310などに出力する。
【0062】
プライオリティ制御部432は、RAMクロック制御部432aから後述のアボート要求を受けると、アボート処理を実行する。アボート処理とは、例えば、実行中の処理を中止してプログラム命令の実行を正しく完結した時の状態に演算処理装置300を復元し、その復元された状態からプログラム命令の実行を再開する処理である。
【0063】
プライオリティ制御部432は、上記アボート処理の他に、命令制御部310からの命令フェッチ要求やL1キャッシュ部400でキャッシュミスした命令フェッチ要求の再投入を行なうなどリクエストの調停を行なう。
【0064】
RAMクロック制御部432aは、命令フェッチ要求により要求される命令アドレスが、データRAM(WAY0)440−0またはデータRAM(WAY1)440−1におけるキャッシュラインの先頭アドレスか否かを判別する。
【0065】
そして、命令フェッチ要求により要求される命令アドレスがキャッシュラインの先頭アドレスでないと判断すると、RAMクロック制御部432aは、キャッシュライン非先頭アドレス信号「1」を生成する。また、命令フェッチ要求により要求される命令アドレスがキャッシュラインの先頭アドレスであると判断すると、RAMクロック制御部432aは、キャッシュライン非先頭アドレス信号「0」を生成する。
【0066】
そして、RAMクロック制御部432aは、命令制御部310からの命令フェッチ要求信号およびシーケンシャルアクセス通知信号を、命令フェッチのパイプライン毎にTAGマッチ情報記憶部432bに記憶する。
【0067】
さらに、RAMクロック制御部432aは、RAMクロック制御部432aが生成したキャッシュライン非先頭アドレス信号を、命令フェッチのパイプライン毎にTAGマッチ情報記憶部432bに記憶する。
【0068】
さらに、RAMクロック制御部432aは、TAG(WAY0)マッチ信号と、TAG(WAY1)マッチ信号と、を命令フェッチのパイプライン毎にTAGマッチ情報記憶部432bに記憶する。
【0069】
下記表1は、TAGマッチ情報記憶部432bに記憶されるTAGマッチ情報を示している。
【表1】
【0070】
なお、実行中のパイプラインのうち、基準となるパイプラインを「第1のパイプライン」とすると、第1のパイプラインの次のパイプラインを「第2のパイプライン」、第2のパイプラインの次のパイプラインを「第3のパイプライン」という。
【0071】
例えば、図12において、リクエストAについてのパイプラインを第1のパイプラインとすると、リクエストBについてのパイプラインが第2のパイプラインである。そして、リクエストCについてのパイプラインが第3のパイプラインである。
【0072】
RAMクロック制御部432aは、TAGマッチ情報記憶部432bに記憶したTAGマッチ情報から、現在処理中の命令フェッチにシーケンシャルアクセスの命令フェッチがあるか否かを判別する。シーケンシャルアクセスの命令フェッチがある場合、RAMクロック制御部432aは、クロックバッファ441−0および441−1に対してクロックの供給・停止を制御するRAMクロック制御信号を出力する。なお、クロックバッファ441−0に対するRAMクロック制御信号を「RAM(WAY0)クロック制御信号」といい、クロックバッファ441−1に対するRAMクロック制御信号を「RAM(WAY1)クロック制御信号」という。
【0073】
また、RAMクロック制御部432aは、データRAM(WAY0)440−0に対してシーケンシャルアクセスが行なわれていると判断すると、クロックバッファ441−0に対して、RAM(WAY0)クロック制御信号「1」を出力する。同時に、RAMクロック制御部432aは、クロックバッファ441−1に対して、RAM(WAY1)クロック制御信号「0」を出力する。
【0074】
また、RAMクロック制御部432aは、データRAM(WAY1)440−1に対してシーケンシャルアクセスが行なわれていると判断すると、クロックバッファ441−0に対して、RAM(WAY0)クロック制御信号「0」を出力する。同時に、RAMクロック制御部432aは、クロックバッファ441−1に対して、RAM(WAY1)クロック制御信号「1」を出力する。
【0075】
なお、RAMクロック制御部432aには、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1のクロック状態を監視する機能を含めることができる。
【0076】
例えば、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1の両ユニットへのクロックの供給が停止していることを検出すると、プライオリティ制御部432にエラー通知を行なう機能をRAMクロック制御部432aに含めることができる。このときのエラー通知を「アボート要求」という。 データRAM404は、データRAM(WAY0)440−0とデータRAM(WAY1)440−1を備える2WAY構成のデータRAMである。本実施例では、データRAM(WAY0)440−0をWAY0、データRAM(WAY1)440−1をWAY1とする。
【0077】
また、データRAM404は、データRAM(WAY0)440−0へのクロックの供給・停止を制御するクロックバッファ441−0と、データRAM(WAY1)440−1へのクロックの供給・停止を制御するクロックバッファ441−1と、を備える。なお、本実施例に係るデータRAM404は、クロックバッファ441−0とクロックバッファ441−1とをデータRAM404内部に備える場合を示したが、この構成に限定する趣旨ではない。クロックバッファ441−0とクロックバッファ441−1は、データRAM404の外部に配置されていてもよいのは当然である。
【0078】
クロックバッファ441−0およびクロックバッファ441−1は、クロック生成回路450からクロックを受信する。そして、クロックバッファ441−0およびクロックバッファ441−1は、RAMクロック制御部432aからのRAMクロック制御信号に応じて、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1にクロックを供給する。
【0079】
例えば、クロックバッファ441−0は、RAM(WAY0)クロック制御信号が「0」の間、データRAM(WAY0)440−0にクロックを供給する。また、クロックバッファ441−0は、RAM(WAY0)クロック制御信号が「1」の間、データRAM(WAY0)440−0へのクロックの供給を停止する。クロックバッファ441−1もクロックバッファ441−0と同様に動作する。
【0080】
クロック生成回路450は、一定周期のクロックを生成する回路である。クロック生成回路450は、生成したクロックをクロックバッファ441−0および441−1に出力する。
【0081】
図5は、本実施例に係るTAG(WAY0)マッチ検出部430−0の具体的な構成例を示す図である。
【0082】
TAG(WAY0)マッチ検出部430−0は、否定排他的論理和回路501−13、501−14、501−15、・・・および501−40と、論理積回路502と、を備える。なお、図5では、否定排他的論理和回路を「EXNOR」、論理積回路を「AND」と略記する。
【0083】
否定排他的論理和回路501−13の入力端は、アドレス変換部402の出力端のうち物理アドレスの第13ビットを出力する出力端と、TAG(WAY0)検索部410−0の出力端のうちTAG(WAY0)の第13ビットを出力する出力端と、に接続する。他の否定排他的論理和回路501−14、501−15、・・・、501−m、・・・および501−40についても否定排他的論理和回路501−13と同様の構成である。mは13以上40以下の自然数である。例えば、否定排他的論理和回路501−mの入力端は、アドレス変換部402の出力端のうち物理アドレスの第mビットを出力する出力端と、TAG(WAY0)検索部410−0の出力端のうちTAG(WAY0)の第mビットを出力する出力端と、に接続する。
【0084】
論理積回路502の入力端は、否定排他的論理和回路501−13、501−14、・・・および501−40の出力端に接続する。また、論理積回路502の出力端は、RAMクロック制御部432aの入力端に接続する。
【0085】
以上の構成において、アドレス変換部402から物理アドレスが、TAG(WAY0)検索部410−0からTAG(WAY0)が、TAG(WAY0)マッチ検出部430−0に入力された場合を考える。
【0086】
この場合、否定排他的論理和回路501−13は、物理アドレスの第13ビットと、TAG(WAY0)の第13ビットと、の否定排他的論理和を論理積回路502に出力する。否定排他的論理和回路501−13は、物理アドレスの第13ビットとTAG(WAY0)の第13ビットとが一致すれば「1」を出力し、物理アドレスの第13ビットとTAG(WAY0)の第13ビットとが一致しなければ「0」を出力する。他の否定排他的論理和回路501−14、501−15、・・・、501−m、・・・および501−40も否定排他的論理和回路501−13と同様の動作をする。
【0087】
例えば、否定排他的論理和回路501−mは、物理アドレスの第mビットと、TAG(WAY0)の第mビットと、の否定排他的論理和を論理積回路502に出力する。否定排他的論理和回路501−mは、物理アドレスの第mビットとTAG(WAY0)の第mビットとが一致すれば「1」を出力し、物理アドレスの第mビットとTAG(WAY0)の第mビットとが一致しなければ「0」を出力する。
【0088】
論理積回路502は、否定排他的論理和回路501−13、501−14、・・・および501−40の出力の論理積を出力する。
例えば、論理積回路502は、否定排他的論理和回路501−13、501−14、・・・および501−40の全ての出力が「1」の場合、すなわち、物理アドレスとTAG(WAY0)とが一致する場合にTAG(WAY0)マッチ信号「1」を出力する。また、論理積回路502は、否定排他的論理和回路501−13、501−14、・・・または501−40の出力に「0」が含まれる場合、すなわち、物理アドレスとTAG(WAY0)とが一致しない場合にTAG(WAY0)マッチ信号「0」を出力する。
【0089】
なお、図5には、TAG(WAY0)マッチ検出部430−0の構成のみを示したが、TAG(WAY1)マッチ検出部430−1もTAG(WAY0)マッチ検出部430−0と同様の構成となる。ただし、TAG(WAY1)マッチ検出部430−1には、TAG(WAY0)検索部410−0の出力TAG(WAY0)ではなくTAG(WAY1)検索部410−1の出力TAG(WAY1)が入力される。そして、TAG(WAY1)マッチ検出部430−1は、RAMクロック制御部432aにTAG(WAY1)マッチ信号を出力する。
【0090】
図6は、本実施例に係るRAMクロック制御部432aの主要部の具体的な構成例を示す図である。
RAMクロック制御部432aは、論理積回路601−0、601−1および601−2と、論理和回路602と、反転回路603と、論理積回路604と、を備える。さらに、RAMクロック制御部432aは、論理積回路605−0、605−1および605−2と、論理和回路606と、反転回路607と、論理積回路608と、を備える。なお、図6では、論理積回路を「AND」、論理和回路を「OR」と略記する。
【0091】
論理積回路601−0、601−1および601−2の出力端は、論理和回路602の入力端に接続する。論理和回路602の出力端は、反転回路603の入力端に接続する。反転回路603の出力端は、論理積回路604の入力端に接続する。論理積回路604の入力端は、反転回路603の出力端の他に、命令制御部310の出力端とも接続し、命令フェッチ要求信号が入力される。論理積回路604の出力端は、クロックバッファ441−1、すなわち論理積回路610の入力端に接続する。
【0092】
論理積回路605−0、605−1および605−2の出力端は、論理和回路606の入力端に接続する。論理和回路606の出力端は、反転回路607の入力端に接続する。反転回路607の出力端は、論理積回路608の入力端に接続する。論理積回路608の入力端は、反転回路607の出力端の他に、命令制御部310の出力端とも接続し、命令フェッチ要求信号が入力される。論理積回路608の出力端は、クロックバッファ441−0、すなわち論理積回路609の入力端に接続する。
【0093】
以上の構成において、論理積回路601−0および論理積回路605−0には、TAGマッチ情報記憶部432bに記憶されるTAGマッチ情報のうち、第1のパイプラインについてのTAGマッチ情報が入力される。ただし、論理積回路601−0への入力からTAG(WAY1)マッチは除かれる。また、論理積回路605−0への入力からTAG(WAY0)マッチは除かれる。
【0094】
例えば、論理積回路601−0には、表1に示した命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1およびTAG(WAY0)マッチd10が入力される。そして、論理積回路605−0には、表1に示した命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1およびTAG(WAY1)マッチd11が入力される。
【0095】
また、論理積回路601−1および論理積回路605−1には、TAGマッチ情報記憶部432bに記憶されるTAGマッチ情報のうち、第2のパイプラインについてのTAGマッチ情報が入力される。ただし、論理積回路601−1への入力からTAG(WAY1)マッチは除かれる。また、論理積回路605−1への入力からTAG(WAY0)マッチは除かれる。
【0096】
例えば、論理積回路601−1には、表1に示した命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2およびTAG(WAY0)マッチd20が入力される。そして、論理積回路605−1には、表1に示した命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2およびTAG(WAY1)マッチd21が入力される。
【0097】
また、論理積回路601−2および論理積回路605−2には、TAGマッチ情報記憶部432bに記憶されるTAGマッチ情報のうち、第3のパイプラインについてのTAGマッチ情報が入力される。ただし、論理積回路601−2への入力からTAG(WAY1)マッチは除かれる。また、論理積回路605−2への入力からTAG(WAY0)マッチは除かれる。
【0098】
例えば、論理積回路601−2には、表1に示した命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3およびTAG(WAY0)マッチd30が入力される。そして、論理積回路605−2には、表1に示した命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3およびTAG(WAY1)マッチd31が入力される。
【0099】
論理積回路601−0は、命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1およびTAG(WAY0)マッチd10が全て「1」の場合に、「1」を出力する。すなわち、第1のパイプラインにおける命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路601−0は「1」を出力する。
【0100】
また、論理積回路601−0は、命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1またはTAG(WAY0)マッチd10の少なくとも1つが「0」である場合に、「0」を出力する。
【0101】
例えば、命令フェッチ要求a1が「1」、かつ、シーケンシャルアクセス通知b1が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路601−0は「0」を出力する。また、TAG(WAY0)マッチd10が「0」の場合、すなわち、TAG(WAY0)マッチを検出しない場合などにも、論理積回路601−0は「0」を出力する。
【0102】
論理積回路601−1は、命令フェッチ要求a2、シーケンシャルアクセス通知b2およびキャッシュライン非先頭アドレスc2およびTAG(WAY0)マッチd20が全て「1」の場合に、「1」を出力する。すなわち、第2のパイプラインにおける命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路601−1は「1」を出力する。
【0103】
また、論理積回路601−1は、命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2またはTAG(WAY0)マッチd20の少なくとも1つが「0」である場合に、「0」を出力する。
【0104】
例えば、命令フェッチ要求a2が「1」、かつ、シーケンシャルアクセス通知b2が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路601−1は「0」を出力する。また、TAG(WAY0)マッチd20が「0」の場合、すなわち、TAG(WAY0)マッチを検出しない場合などにも、論理積回路601−1は「0」を出力する。
【0105】
論理積回路601−2は、命令フェッチ要求a3、シーケンシャルアクセス通知b3およびキャッシュライン非先頭アドレスc3およびTAG(WAY0)マッチd30が全て「1」の場合に、「1」を出力する。すなわち、第3のパイプラインにおける命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路601−2は「1」を出力する。
【0106】
また、論理積回路601−2は、命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3またはTAG(WAY0)マッチd30の少なくとも1つが「0」である場合に、「0」を出力する。
【0107】
例えば、命令フェッチ要求a3が「1」、かつ、シーケンシャルアクセス通知b3が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路601−2は「0」を出力する。また、TAG(WAY0)マッチd30が「0」の場合、すなわち、TAG(WAY0)マッチを検出しない場合などにも、論理積回路601−2は「0」を出力する。
【0108】
論理和回路602は、論理積回路601−0、601−1および601−2の出力のうち少なくとも1つが「1」である場合に「1」を出力する。すなわち、論理和回路602は、第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、「1」を出力する。
【0109】
そして、論理和回路602は、論理積回路601−0、601−1および601−2が全て「0」を出力する場合に、「0」を出力する。例えば、論理和回路602は、第1乃至第3のいずれのパイプラインにおいても、WAY0内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれる命令フェッチが実行されていない場合などに、「0」を出力する。
【0110】
反転回路603は、論理和回路602が出力する信号を反転し、反転した信号を論理積回路604に出力する。論理和回路602が「0」を出力すれば、反転回路603は、論理積回路604に「1」を出力する。そして、論理和回路602が「1」を出力すれば、反転回路603は、論理積回路604に「0」を出力する。
【0111】
論理積回路604は、反転回路603が出力する信号と、命令フェッチ要求a1と、の論理積をRAM(WAY1)クロック制御信号としてクロックバッファ610に出力する。
【0112】
したがって、論理積回路604は、反転回路603が出力する信号と命令フェッチ要求a1が「1」の場合に、RAM(WAY1)クロック制御信号「1」を出力する。例えば、論理積回路604は、第1乃至第3のいずれのパイプラインにおいても、WAY0内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれる命令フェッチが実行されていない場合に、RAM(WAY1)クロック制御信号「1」を出力する。
【0113】
そして、反転回路603が出力する信号と命令フェッチ要求a1のうち少なくとも一方の信号が「0」の場合に、論理積回路604は、RAM(WAY1)クロック制御信号「0」を出力する。
【0114】
例えば、論理和回路604は、第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、RAM(WAY1)クロック制御信号「0」を出力する。また、論理和回路604は、命令フェッチ要求を検出しない場合などにも、RAM(WAY1)クロック制御信号「0」を出力する。
【0115】
クロックバッファ441−1は、論理積回路610を備える。論理積回路610の入力端は、RAMクロック制御部432a内の論理和回路604の出力端と、クロック生成回路450の出力端と、に接続する。そして、論理積回路610の出力端は、データRAM(WAY1)440−1の入力端に接続する。
【0116】
そして、論理積回路610は、論理積回路604の出力、すなわち、RAM(WAY1)クロック制御信号と、クロックと、の論理積をデータRAM(WAY1)440−1に出力する。
【0117】
したがって、クロックバッファ441−1は、RAMクロック制御部432aからRAM(WAY1)クロック制御信号「1」が入力されると、クロックをデータRAM(WAY1)440−1に出力する。
【0118】
例えば、第1乃至第3のパイプラインにおいて、WAY0内の同一のキャッシュラインに対するシーケンシャルアクセスを行なう命令フェッチが実行されていない場合、クロックバッファ441−1は、クロックをデータRAM(WAY1)440−1に出力する。
【0119】
また、クロックバッファ441−1は、RAMクロック制御部432aからRAM(WAY1)クロック制御信号「0」が入力されると、データRAM(WAY1)440−1へのクロックの出力を停止する。
【0120】
例えば、第1乃至第3のパイプラインで実行中の命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合、クロックバッファ441−1は、データRAM(WAY1)440−1へのクロックの出力を停止する。
【0121】
また、命令フェッチ要求を検出しない場合などにも、クロックバッファ441−1は、データRAM(WAY1)440−1へのクロックの出力を停止する。
一方、論理積回路605−0は、論理積回路601−0と同様に、命令フェッチ要求a1、シーケンシャルアクセス通知b1およびキャッシュライン非先頭アドレスc1およびTAG(WAY1)マッチd11が全て「1」の場合に、「1」を出力する。すなわち、第1のパイプラインにおける命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路605−0は「1」を出力する。
【0122】
また、論理積回路605−0は、命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1またはTAG(WAY1)マッチd11の少なくとも1つが「0」である場合に、「0」を出力する。
【0123】
例えば、命令フェッチ要求a1が「1」、かつ、シーケンシャルアクセス通知b1が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路605−0は「0」を出力する。また、TAG(WAY1)マッチd11が「0」の場合、すなわち、TAG(WAY1)マッチを検出しない場合などにも、論理積回路605−0は「0」を出力する。
【0124】
論理積回路605−1は、論理積回路601−1と同様に、命令フェッチ要求a2、シーケンシャルアクセス通知b2およびキャッシュライン非先頭アドレスc2およびTAG(WAY1)マッチd21が全て「1」の場合に、「1」を出力する。すなわち、第2のパイプラインにおける命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路605−1は「1」を出力する。
【0125】
また、論理積回路605−1は、命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2またはTAG(WAY1)マッチd21の少なくとも1つが「0」である場合に、「0」を出力する。
【0126】
例えば、命令フェッチ要求a2が「1」、かつ、シーケンシャルアクセス通知b2が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路605−1は「0」を出力する。また、TAG(WAY1)マッチd21が「0」の場合、すなわち、TAG(WAY1)マッチを検出しない場合などにも、論理積回路605−1は「0」を出力する。
【0127】
論理積回路605−2は、論理積回路601−2と同様に、命令フェッチ要求a3、シーケンシャルアクセス通知b3およびキャッシュライン非先頭アドレスc3およびTAG(WAY1)マッチd31が全て「1」の場合に、「1」を出力する。すなわち、第3のパイプラインにおける命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路605−2は「1」を出力する。
【0128】
また、論理積回路605−2は、命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3またはTAG(WAY1)マッチd31の少なくとも1つが「0」である場合に、「0」を出力する。
【0129】
例えば、命令フェッチ要求a3が「1」、かつ、シーケンシャルアクセス通知b3が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路605−2は「0」を出力する。また、TAG(WAY1)マッチd31が「0」の場合、すなわち、TAG(WAY1)マッチを検出しない場合などにも、論理積回路605−2は「0」を出力する。
【0130】
論理和回路606は、論理積回路605−0、605−1および605−2の出力のうち少なくとも1つが「1」である場合に「1」を出力する。すなわち、論理和回路606は、第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、「1」を出力する。
【0131】
そして、論理和回路606は、論理積回路605−0、605−1および605−2が全て「0」を出力する場合に、「0」を出力する。例えば、論理和回路606は、第1乃至第3のいずれのパイプラインにおいても、WAY1内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれる命令フェッチが実行されていない場合などに、「0」を出力する。
【0132】
反転回路607は、論理和回路606が出力する信号を反転し、反転した信号を論理積回路608に出力する。論理和回路606が「0」を出力すれば、反転回路607は、論理積回路608に「1」を出力する。そして、論理和回路606が「1」を出力すれば、反転回路607は、論理積回路608に「0」を出力する。
【0133】
論理積回路608は、反転回路607が出力する信号と、命令フェッチ要求a1と、の論理積をRAM(WAY1)クロック制御信号としてクロックバッファ610に出力する。
【0134】
したがって、論理積回路608は、反転回路607が出力する信号と命令フェッチ要求a1が「1」の場合に、RAM(WAY1)クロック制御信号「1」を出力する。例えば、論理積回路608は、第1乃至第3のいずれのパイプラインにおいても、WAY1内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれる命令フェッチが実行されていない場合などに、RAM(WAY1)クロック制御信号「1」を出力する。
【0135】
そして、反転回路607が出力する信号と命令フェッチ要求a1のうち少なくとも一方の信号が「0」の場合に、論理積回路608は、RAM(WAY1)クロック制御信号「0」を出力する。
【0136】
例えば、論理和回路608は、第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、RAM(WAY1)クロック制御信号「0」を出力する。また、論理和回路608は、命令フェッチ要求を検出しない場合などにも、RAM(WAY1)クロック制御信号「0」を出力する。この場合、後述するようにデータRAM(WAY0)440−0へのクロックの供給が停止する。
【0137】
ここで、クロックバッファ441−0は、論理積回路609を備える。論理積回路609の入力端は、RAMクロック制御部432a内の論理和回路608の出力端と、クロック生成回路450の出力端と、に接続する。そして、論理積回路609の出力端は、データRAM(WAY0)440−0の入力端に接続する。
【0138】
そして、論理積回路609は、論理積回路608の出力、すなわち、RAM(WAY0)クロック制御信号と、クロックと、の論理積をデータRAM(WAY0)440−0に出力する。
【0139】
したがって、クロックバッファ441−0は、RAMクロック制御部432aからRAM(WAY0)クロック制御信号「1」が入力されると、クロックをデータRAM(WAY0)440−1に出力する。
【0140】
例えば、第1乃至第3のパイプラインにおいて、WAY1内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれていない場合、クロックバッファ441−0は、クロックをデータRAM(WAY0)440−1に出力する。
【0141】
また、クロックバッファ441−0は、RAMクロック制御部432aからRAM(WAY0)クロック制御信号「0」が入力されると、データRAM(WAY0)440−0へのクロックの出力を停止する。
【0142】
例えば、第1乃至第3のパイプラインで実行中の命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合、クロックバッファ441−0は、データRAM(WAY0)440−0へのクロックの出力を停止する。
【0143】
また、命令フェッチ要求を検出しない場合などにも、クロックバッファ441−0は、データRAM(WAY0)440−0へのクロックの出力を停止する。
図7は、本実施例に係る命令制御部310の動作の概要を説明する図である。
【0144】
命令制御部310は、プログラムカウンタ701と、分岐予測判別回路702と、を備える。
プログラムカウンタ701は、次に実行するプログラム命令が記憶されている命令アドレス460を保持する記憶部である。プログラムカウンタ701には、例えば、レジスタを使用することができる。
【0145】
命令制御部310は、所定のプログラム命令の実行が完了すると、プログラムカウンタ701から命令アドレス460を取得するとともに、プログラムカウンタ701を命令長だけインクリメントする。そして、命令制御部310は、L1キャッシュ部400に対して命令フェッチ要求を行なうとともに命令アドレス460を通知する。
【0146】
分岐予測判別回路702は、L1キャッシュ部400に対して行なう命令フェッチ要求が、シーケンシャルアクセスか否かを判別し、判別結果をL1キャッシュ部400に通知する。
【0147】
本実施例では、L1キャッシュ部400へのアクセス、例えば、命令フェッチ要求は、通常、シーケンシャルアクセスであると判断するものとする。したがって、通常、命令制御部310は、L1キャッシュ部400に対してシーケンシャルアクセスである旨を通知する。
【0148】
そして、実行中のプログラム命令について分岐予測判別回路702が分岐すると予測した場合、命令制御部310は、シーケンシャルアクセスが無効となったと判断し、シーケンシャルアクセスでない旨をL1キャッシュ部400に通知する。
【0149】
図8は、本実施例に係るシーケンシャルアクセスの判別処理を示すフローチャートである。
ステップS801において、命令制御部310は、プログラムカウンタ701から命令アドレス460を取得する。
【0150】
ステップS802において、命令制御部310は、分岐予測を行なう。分岐すると判断した場合(ステップS802 YES)、命令制御部310は、シーケンシャルアクセスがなかったと判断する。この場合、命令制御部310は、処理をステップS803に移行し、RAMクロック制御部432aにシーケンシャルアクセスではない旨を通知する(ステップS803)。例えば、命令制御部310は、RAMクロック制御部432aにシーケンシャルアクセス通知信号「0」を出力する。
【0151】
また、分岐しないと判断した場合(ステップS802 NO)、命令制御部310は、シーケンシャルアクセスがあったと判断する。この場合、命令制御部310は、処理をステップS804に移行し、RAMクロック制御部432aにシーケンシャルアクセスである旨を通知する(ステップS804)。例えば、命令制御部310は、RAMクロック制御部432aにシーケンシャルアクセス通知信号「1」を出力する。
【0152】
なお、分岐予測には、過去に実行した分岐命令の命令アドレスとその分岐命令により分岐した分岐先アドレスを含む履歴情報を含むブランチヒストリを用いることができる。
例えば、命令アドレス460をプログラムカウンタから取得する毎に、取得した命令アドレス460がブランチヒストリに登録されているか否かをチェックする。そして、命令アドレス460がブランチヒストリに登録されている場合、命令制御部310は、分岐すると予測する。また、命令アドレス460がブランチヒストリに登録されていない場合、命令制御部310は、分岐しないと予測する。
【0153】
また、プログラム命令のうちサブルーチンのコール命令を実行する時に、リターン命令によるサブルーチンからの戻りアドレスを保持しておき、この戻りアドレスを分岐予測に用いてもよい。プログラム命令がリターン命令、かつ命令アドレス460が既に保持されている戻りアドレスの場合、命令制御部310は、分岐すると予測することができる。
【0154】
また、命令制御部310は、分岐予測の失敗を検出して後述する演算処理装置300のパイプライン処理にすでに流れているリクエストをキャンセルした後に再度発行される最初の命令フェッチ要求についても、シーケンシャルアクセスでないと判断できる(ステップS802 YES)。この場合、命令制御部310は、要求される命令アドレスにかかわらずシーケンシャルアクセスでないと判断する。
【0155】
また、命令制御部310は、トラップ処理回復後に発行される最初の命令フェッチ要求についても、シーケンシャルアクセスでないと判断できる(ステップS802YES)。
以上の処理が終了すると、命令制御部310は、処理を終了する(ステップS805)。
【0156】
図9は、本実施例に係るデータRAM404のクロック制御を示すフローチャートである。
RAMクロック制御部432aは、命令制御部310から命令フェッチ要求を受信すると(ステップS901)、処理をステップS902に移行する。すると、RAMクロック制御部432aは、RAMクロック制御部432aは、TAGマッチ情報記憶部432bからTAGマッチ情報を取得する(ステップS902)。そして、RAMクロック制御部432aは、TAGマッチ情報から、第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチが同一WAY内の同一のキャッシュラインに対するシーケンシャルアクセスであるか否かを判別する(ステップS903)。
【0157】
第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチが同一WAY内の同一のキャッシュラインに対するシーケンシャルアクセスであると判断すると(ステップS903 YES)、RAMクロック制御部432aは、処理をステップS904に移行する。
【0158】
ステップS904において、RAMクロック制御部432aは、取得したTAGマッチ情報から、TAGマッチしたWAYがWAY0か否かを判別する。
WAY0でTAGマッチしたと判断した場合(ステップS904 YES)、RAMクロック制御部432aは、処理をステップS905に移行する。この場合、RAMクロック制御部432aは、データRAM(WAY0)440−0にクロックが供給されているか否かを判別する(ステップS905)。
【0159】
データRAM(WAY0)440−0のクロックが供給されている場合(ステップS905 YES)、RAMクロック制御部432aは、処理をステップS906に移行する。この場合、RAMクロック制御部432aは、データRAM(WAY0)440−0へクロックを供給し、データRAM(WAY1)440−1へのクロックを停止する(ステップS906)。例えば、RAMクロック制御部432aは、クロックバッファ441−0に対してRAM(WAY0)クロック制御信号「1」を出力し、クロックバッファ441−1に対してRAM(WAY1)クロック制御信号「0」を出力する。 データRAM(WAY0)440−0へのクロックが停止している場合(ステップS905 NO)、RAMクロック制御部432aは、処理をステップS907に移行する。この場合、RAMクロック制御部432aは、プライオリティ制御部432に対してアボート要求を通知する(ステップS907)。
【0160】
また、ステップS904において、WAY1でTAGマッチしたと判断した場合(ステップS904 NO)、RAMクロック制御部432aは、処理をステップS908に移行する。この場合、RAMクロック制御部432aは、データRAM(WAY1)440−1にクロックが供給されているか否かを判別する(ステップS908)。
【0161】
データRAM(WAY1)440−1にクロックが供給されている場合(ステップS908 YES)、RAMクロック制御部432aは、処理をステップS909に移行する。この場合、RAMクロック制御部432aは、データRAM(WAY1)440−1へクロックを供給し、データRAM(WAY0)440−0へのクロックを停止にする(ステップS909)。例えば、RAMクロック制御部432aは、クロックバッファ441−0に対してRAM(WAY0)クロック制御信号「0」を出力し、クロックバッファ441−1に対してRAM(WAY1)クロック制御信号「1」を出力する。
【0162】
データRAM(WAY1)440−1へのクロックが停止している場合(ステップS908 NO)、RAMクロック制御部432aは、処理をステップS907に移行する。この場合、RAMクロック制御部432aは、プライオリティ制御部432に対してアボート要求を通知する(ステップS907)。
【0163】
一方、ステップS903において、第1乃至第3のパイプラインで実行中の命令フェッチが同一WAY内の同一のキャッシュラインに対するシーケンシャルアクセスでないと判断すると(ステップS903 NO)、RAMクロック制御部432aは、処理をステップS910に移行する。この場合、RAMクロック制御部432aは、データRAM334に備わる全てのWAY、本実施例ではデータRAM(WAY0)440−0およびデータRAM(WAY1)440−1にクロックの供給を行なう(ステップS910)。例えば、RAMクロック制御部432aは、クロックバッファ441−0およびに対してRAM(WAY0)クロック制御信号「1」を出力し、クロックバッファ441−1に対してRAM(WAY1)クロック制御信号「1」を出力する。
【0164】
ステップS911において、RAMクロック制御部432aは、TAG(WAY0)マッチ検出部430−0およびTAG(WAY1)マッチ検出部430−1の出力からTAGマッチの有無を判別する。
【0165】
TAGマッチを検出しない場合(ステップS911 NO)、RAMクロック制御部432aは、処理をステップS912に移行する。この場合、L1キャッシュ部330は、プライオリティ制御部432を介してL2キャッシュ部330にデータ要求を行なう(ステップS912)。
【0166】
TAGマッチを検出した場合(ステップS911 YES)、RAMクロック制御部432aは、処理をステップS913に移行する。この場合、RAMクロック制御部432aは、TAGマッチ情報を更新する(ステップS913)。
【0167】
以上の処理が完了すると、L1キャッシュ部330は、データRAM404のクロック制御処理を終了する。
その後、TAGマッチ処理部403は、TAGマッチを検出したWAY、本実施例ではデータRAM(WAY0)440−0またはデータRAM(WAY1)440−1のいずれか一方を選択してデータを取得する。
【0168】
図10は、本実施例に係る命令フェッチのパイプライン処理を説明する図である。
演算処理装置300において、プログラム命令は、大きく分けると、「命令フェッチ」、「デコード」、「実行」および「完了」の4つの工程に分割して処理される。この処理を「演算処理装置300のパイプライン処理」という。
【0169】
例えば、「命令フェッチ」は、L1キャッシュ部400などからプログラム命令を取得する工程である。「デコード」は、取得したプログラム命令を演算処理装置300にとって意味のある形式に分割する工程である。「実行」は、デコードされたプログラム命令にしたがって、演算処理等を実行する工程である。「完了」は、全ての処理が完了したかを判定し、実行結果をL1キャッシュ部400などに格納する工程である。
【0170】
命令フェッチ工程において、命令制御部310は、図7で説明した分岐予測およびリクエスト要求(命令フェッチ要求)を行なう。また、命令制御部310から命令フェッチ要求を受けると、L1キャッシュ部400は、「リクエスト選択」、「TAG検索」、「TAGマッチ処理」、「データ転送」および「完了」の工程に分割して命令フェッチを行なう。この処理を「命令フェッチのパイプライン処理」という。
【0171】
「リクエスト選択」は、命令制御部310から受信する命令フェッチ要求を選択する工程である。「TAG検索」は、TAG検索を行なう工程である。「TAGマッチ処理」は、TAGマッチ処理を行なう工程である。「データ転送」は、TAGマッチしたWAYからデータを取得して命令制御部310に転送する工程である。「完了」は、命令フェッチが完了したか否かを判定する工程である。
【0172】
図11および図12は、本実施例に係る命令フェッチのパイプライン処理を具体的に説明する図である。
図11は、プログラム命令A、B、CおよびDが、データRAM(WAY0)440−0のライン1上に連続して格納され、プログラム命令EおよびFが、データRAM(WAY1)440−1のライン3上に連続して格納されている場合を示している。
【0173】
簡単のために、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1の1ラインのデータ幅は32Byteとする。また、各プログラム命令A、B、C、D、EおよびFは、全て8Byte(64bit)のデータ幅を有するものとする。
【0174】
以下、図11に示したプログラム命令をA、B、C、D、EおよびFの順に読み出す命令フェッチのパイプライン処理を図12に示して説明する。なお、図12に示す1、2、3、4および5は、それぞれ図10に示した「リクエスト選択」、「TAG検索」、「TAGマッチ処理」、「データ転送」および「完了」の工程を示している。
【0175】
また、命令フェッチのパイプライン処理におけるデータRAM(WAY0)440−0へのRAM(WAY0)クロック制御信号とデータRAM(WAY1)440−1へのRAM(WAY1)クロック制御信号も図12に示す。なお、RAM(WAY0)クロック制御信号が「0」の時に、データRAM(WAY0)440−0内のクロックが停止し、「1」の時に、データRAM(WAY0)440−0内にクロックが供給されるものとする。RAM(WAY1)クロック制御信号についてもRAM(WAY0)クロック制御信号と同様とする。
【0176】
(1)命令制御部310からリクエストAを受けると、L1キャッシュ部400は、プログラム命令Aに対する命令フェッチの実行を開始する。
リクエストAに後続のリクエストB、CおよびDは、図11に示したように、同一ライン上に連続して格納されているプログラム命令B、CおよびDに対する命令フェッチ要求である。この場合、命令制御部310は、図8に示した処理によって、リクエストAに後続のリクエストB、CおよびDをシーケンシャルアクセスと判断する。したがって、リクエストAに後続するリクエストがシーケンシャルアクセスを実行している間、L1キャッシュ部400は、TAGマッチを検出したWAY0以外のWAYであるRAM(WAY1)クロック制御信号「0」を出力する。その結果、TAGマッチを検出したWAY、すなわちデータRAM(WAY0)440−0にだけクロックが供給され、その他のWAY、すなわちデータRAM(WAY1)440−1へのクロックは停止する。
【0177】
(2)しかし、リクエストDの後に受信したリクエストEは、図11に示したように、プログラム命令Dと同一ライン上に連続して記憶されるものではなく、データRAM(WAY1)440−1のライン3上の先頭位置に格納されている。この場合、L1キャッシュ部400は、図8に示した処理により、リクエストEをシーケンシャルアクセスでないと判断する。すると、図9に示したステップS910の処理によって、L1キャッシュ部400は、RAM(WAY0)クロック制御信号およびRAM(WAY1)クロック制御信号を「1」にする。これにより、全てのWAY、本実施例ではデータRAM(WAY0)440−0およびデータRAM(WAY1)440−1にクロックが供給される。
【0178】
(3)リクエストEに後続のリクエストFは、図11に示したように、プログラム命令Eと同一ライン上に連続して格納されているプログラム命令Fに対する命令フェッチ要求である。この場合、命令制御部310は、図8に示した処理により、リクエストFをシーケンシャルアクセスと判断する。
【0179】
この場合、L1キャッシュ部400は、TAGマッチを検出したWAY1以外のWAYのRAM(WAY0)クロック制御信号を「0」にする。その結果、TAGマッチを検出したWAY、すなわちデータRAM(WAY1)440−1にだけクロックが供給され、その他のWAY、すなわちデータRAM(WAY0)440−0へのクロックは停止する。
【0180】
なお、図11に示す構成は1つの例示であって、プログラム命令を8Byteに限定するものではなく、1ラインを32Byteに限定するものでもない。同様に、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1をそれぞれ6ラインであることに限定するものでもない。
【0181】
以上の説明では、データRAM334は、2WAY構成を有する場合について説明したが、2WAY以上の構成を有する場合であってもよい。データRAM334がnWAY構成を有する場合のL1キャッシュ部の構成例を図13に示す。
【0182】
図13に示すL1キャッシュ部1300は、TAG検索部1301と、アドレス変換部1302と、TAGマッチ処理部1303と、データRAM1304と、を備える。TAG検索部1301、アドレス変換部1302、TAGマッチ処理部1303およびデータRAM1304は、図3に示したTAG検索部331、アドレス変換部332、TAGマッチ処理部333およびデータRAM334にそれぞれ対応する。
【0183】
TAG検索部1301は、TAG(WAY0)検索部1310−0、TAG(WAY1)検索部1310−1、・・・およびTAG(WAYn)検索部1310−nを備える。
【0184】
TAGマッチ処理部1303は、TAG(WAY0)マッチ検出部1330−0、TAG(WAY1)マッチ検出部1330−1、・・・およびTAG(WAYn)マッチ検出部1330−nを備える。さらに、TAGマッチ処理部1303は、WAYセレクト部1331と、プライオリティ制御部1332と、を備える。プライオリティ制御部1332は、RAMクロック制御部1332aおよびTAGマッチ情報記憶部1332bを備える。
【0185】
データRAM1304は、WAY0のデータRAM(WAY0)1340−0、WAY1のデータRAM(WAY1)1340−1、・・・およびWAYnのデータRAM(WAYn)1340−nを備える。さらに、データRAM1304は、WAY毎に、クロックバッファ1341−0、クロックバッファ1341−1、・・・およびクロックバッファ1341−nを備える。
【0186】
以上の構成において、命令制御部310は、プログラム命令の実行を開始すると、必要に応じてL1キャッシュ部1300内のRAMクロック制御部1332aに対して命令フェッチ要求を行なう。命令フェッチ要求を行なう場合、命令制御部310は、RAMクロック制御部1332aに命令フェッチ要求信号「1」を出力する。また、命令フェッチ要求を行なわない場合、命令制御部310は、RAMクロック制御部1332aに命令フェッチ要求信号「0」を出力する。
【0187】
同時に、命令制御部310は、その命令フェッチ要求とともに、所望の命令が格納されている命令アドレス1350をL1キャッシュ部1300に通知する。命令アドレス1350は、アドレス変換部1302に出力される。命令アドレス1350に含まれるインデックスは、TAG(WAY0)検索部1310−0、TAG(WAY1)検索部1310−1、・・・およびTAG(WAYn)検索部1310−nに出力される。また、命令アドレス1350に含まれるインデックスは、データRAM(WAY0)1340−0、データRAM(WAY1)1340−1、・・・およびデータRAM(WAYn)1340−nにも出力される。
【0188】
また、命令制御部310は、L1キャッシュ部1300に出力した命令フェッチ要求がシーケンシャルアクセスか否かを判別し、その判別結果をL1キャッシュ部1300内のRAMクロック制御部1332aに通知する。
【0189】
TAG(WAY0)検索部1310−0は、命令制御部310からの命令フェッチ要求に応じて、その命令フェッチ要求とともに受ける命令アドレス1350に含まれるインデックスと一致するTAGをデータRAM(WAY0)1340−0についてのインデックステーブルから検索する。そして、TAG(WAY0)検索部1310−0は、検索結果をTAG(WAY0)マッチ検出部1330−0に出力する。
【0190】
TAG(WAY1)検索部1310−1、TAG(WAY2)検索部1310−2、・・・およびTAG(WAYn)検索部1310−nも、TAG(WAY0)検索部1310−0と同様に動作する。
【0191】
例えば、TAG(WAYn)検索部1310−nは、命令制御部310からの命令フェッチ要求に応じて、その命令フェッチ要求とともに受ける命令アドレス1350に含まれるインデックスと一致するTAGをデータRAM(WAYn)1340−nについてのインデックステーブルから検索する。そして、TAG(WAYn)検索部1310−nは、検索結果をTAG(WAYn)マッチ検出部1330−nに出力する。このときTAG(WAYn)検索部1310−nが出力するTAGを「TAG(WAYn)」という。
【0192】
アドレス変換部1302は、命令制御部310からの命令フェッチ要求を受けると、TLB等を参照し、命令アドレス1350を物理アドレスに変換する。そして、アドレス変換部332は、物理アドレスを、TAG(WAY0)マッチ検出部1330−0、TAG(WAY1)マッチ検出部1330−1、・・・およびTAG(WAYn)マッチ検出部1330−nに出力する。
【0193】
TAG(WAY0)マッチ検出部1330−0は、TAG(WAY0)検索部1310−0が出力するTAGと、アドレス変換部1302が出力する物理アドレスと、を比較する。そして、TAG(WAY0)マッチ検出部1330−0は、比較結果を、WAYセレクト部1331とRAMクロック制御部1332aとに出力する。
【0194】
TAG(WAY0)検索部1310−0が出力するTAGとアドレス変換部1302が出力する物理アドレスとが一致する場合、TAG(WAY0)マッチ検出部1330−0は、RAMクロック制御部1332aにTAG(WAY0)マッチ信号「1」を出力する。TAG(WAY0)検索部1310−0が出力するTAGとアドレス変換部1302が出力する物理アドレスとが一致しない場合、TAG(WAY0)マッチ検出部1330−0は、RAMクロック制御部1332aにTAG(WAY0)マッチ信号「0」を出力する。
【0195】
TAG(WAY1)マッチ検出部1330−1、TAG(WAY2)マッチ検出部1330−2、・・・およびTAG(WAYn)マッチ検出部1330−nも、TAG(WAY0)マッチ検出部1330−0と同様の動作を行なう。
【0196】
例えば、TAG(WAYn)マッチ検出部1330−nは、TAG(WAYn)検索部1310−nが出力するTAGと、アドレス変換部1302が出力する物理アドレスと、を比較する。そして、TAG(WAYn)マッチ検出部1330−nは、比較結果を、WAYセレクト部1331とRAMクロック制御部1332aとに出力する。
【0197】
TAG(WAYn)検索部1310−nが出力するTAGとアドレス変換部1302が出力する物理アドレスとが一致する場合、TAG(WAYn)マッチ検出部1330−nは、RAMクロック制御部1332aにTAG(WAYn)マッチ信号「1」を出力する。TAG(WAYn)検索部1310−nが出力するTAGとアドレス変換部1302が出力する物理アドレスとが一致しない場合、TAG(WAYn)マッチ検出部1330−nは、RAMクロック制御部1332aにTAG(WAYn)マッチ信号「0」を出力する。
【0198】
WAYセレクト部1331は、TAG(WAY0)マッチ検出部1330−0、・・・およびTAG(WAYn)マッチ検出部1330−nが出力するTAGマッチ信号にしたがって、データRAM1304内のWAYを選択する。そして、WAYセレクト部1331は、選択したWAYのデータRAM、すなわちデータRAM(WAY0)1340−0、・・・またはデータRAM(WAYn)1340−nのうちいずれかから出力されるデータを命令制御部310などに出力する。
【0199】
プライオリティ制御部1332は、RAMクロック制御部1332aからアボート要求を受けると、アボート処理を実行する。プライオリティ制御部1332は、上記アボート処理の他に、命令制御部310からの命令フェッチ要求やL1キャッシュ部1300でキャッシュミスした命令フェッチ要求の再投入を行なうなどリクエストの調停を行なう。
【0200】
RAMクロック制御部1332aは、命令フェッチ要求により要求される命令アドレスが、データRAM(WAY0)1340−0、・・・またはデータRAM(WAYn)1340−nにおけるキャッシュラインの先頭アドレスか否かを判別する。
【0201】
そして、命令フェッチ要求により要求される命令アドレスがキャッシュラインの先頭アドレスでないと判断すると、RAMクロック制御部1332aは、キャッシュライン非先頭アドレス信号「1」を生成する。また、命令フェッチ要求により要求される命令アドレスがキャッシュラインの先頭アドレスであると判断すると、RAMクロック制御部1332aは、キャッシュライン非先頭アドレス信号「0」を生成する。
【0202】
そして、RAMクロック制御部1332aは、命令制御部310からの命令フェッチ要求信号およびシーケンシャルアクセス通知信号を、命令フェッチのパイプライン毎にTAGマッチ情報記憶部1332bに記憶する。
【0203】
さらに、RAMクロック制御部1332aは、RAMクロック制御部1332aが生成したキャッシュライン非先頭アドレス信号を、命令フェッチのパイプライン毎にTAGマッチ情報記憶部1332bに記憶する。
【0204】
さらに、RAMクロック制御部1332aは、TAG(WAY0)マッチ検出部1330−0からのTAG(WAY0)マッチ信号と、・・・、TAG(WAYn)マッチ検出部1330−nからのTAG(WAYn)マッチ信号と、を命令フェッチのパイプライン毎にTAGマッチ情報記憶部1332bに記憶する。
【0205】
下記表2は、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報を示している。
【表2】
【0206】
RAMクロック制御部1332aは、TAGマッチ情報記憶部1332bに記憶したTAGマッチ情報から、現在処理中の命令フェッチがシーケンシャルアクセスか否かを判別する。現在処理中の命令フェッチがシーケンシャルアクセスの場合、RAMクロック制御部1332aは、クロックバッファ1341−0、1341−1、・・・および1341−nに対してクロックの供給・停止を制御するRAMクロック制御信号を出力する。
【0207】
なお、RAMクロック制御部1332aには、データRAM(WAY0)1340−0・・・およびデータRAM(WAYn)1340−nのクロック状態を監視する機能を含めることができる。
【0208】
例えば、データRAM1304内のTAGマッチしたWAYのクロックが停止していることを検出すると、プライオリティ制御部1332にアボート要求を行なう機能をRAMクロック制御部1332aに含めることができる。
【0209】
データRAM1304は、データRAM(WAY0)1340−0、データRAM(WAY1)1340−1、・・・およびデータRAM(WAYn)1340−nを備えるnWAY構成のデータRAMである。図13に示す例では、データRAM(WAY0)1340−0をWAY0、データRAM(WAY1)1340−1をWAY1、・・・、データRAM(WAYn)1340−nをWAYnとする。
【0210】
データRAM13404は、クロックバッファ1341−0、1341−1、・・・および1341−nを備える。
クロックバッファ1341−0、1341−1、・・・、1341−nは、それぞれデータRAM(WAY0)1340−0、データRAM(WAY1)1340−1、・・・、データRAM(WAYn)1340−nへのクロックの供給・停止を制御する。
【0211】
なお、図13に示すデータRAM1304は、クロックバッファ1341−0、1341−1、・・・および1341−nをデータRAM1304内部に備える場合を示したが、この構成に限定する趣旨ではない。クロックバッファ1341−0、1341−1、・・・および1341−nは、データRAM1304の外部に配置されていてもよいのは当然である。
【0212】
各クロックバッファ1341−0、1341−1、・・・および1341−nは、クロック生成回路1350からクロックを受信する。各クロックバッファ1341−0、1341−1、・・・、1341−nは、RAMクロック制御信号に応じて、それぞれデータRAM(WAY0)1340−0、データRAM(WAY1)1340−1、・・・、データRAM(WAYn)1340−nにクロックを供給する。
【0213】
例えば、クロックバッファ1341−0は、RAM(WAY0)クロック制御信号が「0」の間、データRAM(WAY0)1340−0にクロックを供給する。また、クロックバッファ1341−0は、RAM(WAY0)クロック制御信号が「1」の間、データRAM(WAY0)1340−0内部へのクロックの供給を停止する。クロックバッファ1341−1、1341−2・・・、クロックバッファ1341−nは、データRAM(WAY0)1340−0と同様に動作する。
【0214】
クロック生成回路1350は、一定周期のクロックを生成する回路である。クロック生成回路1350は、生成したクロックをクロックバッファ1341−0、1341−1、・・・および1341−nに出力する。
【0215】
なお、以上に示したTAG(WAY0)マッチ検出部1330−0、1330−1、・・・および1330−nは、図5に示した具体的な構成で実現することができる。
【0216】
図14は、RAMクロック制御部1332aの主要部の具体的な構成例を示す図である。
RAMクロック制御部1332aは、論理和回路1400−0、1401−0、・・・および140n−0と、論理和回路1400−1、1401−1、・・・および140n−1と、論理和回路1400−2、1401−2、・・・および140n−2と、を備える。
【0217】
また、RAMクロック制御部1332aは、論理積回路1410−0、1411−0、・・・および141n−0と、論理積回路1410−1、1411−1、・・・および141n−1と、論理積回路1410−2、1411−2、・・・および141n−2と、を備える。
【0218】
また、RAMクロック制御部1332aは、論理和回路1420、1421、・・・および142nを備える。また、RAMクロック制御部1332aは、反転回路1430、1431、・・・および143nを備える。また、RAMクロック制御部1332aは、論理積回路1440、1441、・・・および144nを備える。
【0219】
なお、図14では、論理積回路を「AND」、論理和回路を「OR」と略記する。
以下、RAM(WAYn)クロック制御信号の生成について説明する。
RAM(WAYn)クロック制御信号を生成する場合、論理和回路140n−0、140n−1および140n−2と、論理積回路141n−0、141n−1および141n−2と、論理和回路142nと、反転回路143nと、論理積回路144nを使用する。
【0220】
論理和回路140n−0の出力端は、論理積回路141n−0に接続する。同様に、論理和回路140n−1の出力端は、論理積回路141n−1に接続し、論理和回路140n−2の出力端は、論理積回路141n−2に接続する。
【0221】
また、論理積回路141n−0、141n−1および141n−2の出力端は、論理和回路142nの入力端に接続する。論理和回路142nの出力端は、反転回路143nの入力端に接続する。反転回路143nの出力端は、論理積回路144nの入力端に接続する。論理積回路144nの入力端は、反転回路143nの出力端の他に、命令制御部310の出力端とも接続し、命令フェッチ要求信号が入力される。論理積回路144nの出力端は、後述のクロックバッファ1341−n、すなわち論理積回路145nの入力端に接続する。
【0222】
以上の構成において、論理和回路140n−0には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第1のパイプラインについての、TAG(WAYn)マッチ以外のTAGマッチが入力される。例えば、論理和回路140n−0には、表2に示したTAG(WAYn)マッチd1n以外のTAGマッチd10、・・・およびd1(n−1)が入力される。
【0223】
そして、論理和回路140n−0は、TAG(WAYn)マッチd10、・・・またはd1(n−1)が「1」の場合、すなわち、第1のパイプラインにおいてWAYn以外のWAYにTAGマッチを検出した場合に、「1」を出力する。また、論理和回路140n−0は、TAG(WAYn)マッチd10、・・・およびd1(n−1)が全て「0」である場合、すなわち、第1のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合に、「0」を出力する。
【0224】
論理積回路141n−0には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第1のパイプラインについての命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1が入力される。さらに、論理積回路141n−0には、論理和回路140n−0の出力が入力される。
【0225】
そして、論理積回路141n−0は、命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1および論理和回路140n−0の出力が全て「1」の場合に、「1」を出力する。
【0226】
例えば、第1のパイプラインにおける命令フェッチがWAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路141n−0は「1」を出力する。
【0227】
また、論理積回路141n−0は、命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1または論理和回路140n−0の出力の少なくとも1つが「0」である場合に、「0」を出力する。
【0228】
例えば、命令フェッチ要求a1が「1」、かつ、シーケンシャルアクセス通知b1が「0」の場合、すなわち、第1のパイプラインにおける命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路141n−0は「0」を出力する。また、論理和回路140n−0の出力が「0」の場合、すなわち、第1のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合などにも、論理積回路141n−0は「0」を出力する。
【0229】
論理和回路140n−1には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第2のパイプラインについての、TAG(WAYn)マッチ以外のTAGマッチが入力される。例えば、論理和回路140n−1には、表2に示したTAG(WAYn)マッチd2n以外のTAGマッチd20、・・・およびd2(n−1)が入力される。
【0230】
そして、論理和回路140n−1は、TAG(WAYn)マッチd20、・・・またはd2(n−1)が「1」の場合、すなわち、第2のパイプラインにおいてWAYn以外のWAYにTAGマッチを検出した場合に、「1」を出力する。また、論理和回路140n−1は、TAG(WAYn)マッチd20、・・・およびd2(n−1)が全て「0」である場合、すなわち、第2のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合に、「0」を出力する。
【0231】
論理積回路141n−1には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第2のパイプラインについての命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2が入力される。さらに、論理積回路141n−1には、論理和回路140n−1の出力が入力される。
【0232】
そして、論理積回路141n−1は、命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2および論理和回路140n−1の出力が全て「1」の場合に、「1」を出力する。
【0233】
例えば、第2のパイプラインにおける命令フェッチがWAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路141n−1は「1」を出力する。
【0234】
また、論理積回路141n−1は、命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2または論理和回路140n−1の出力の少なくとも1つが「0」である場合に、「0」を出力する。
【0235】
例えば、命令フェッチ要求a2が「1」、かつ、シーケンシャルアクセス通知b2が「0」の場合、すなわち、第2のパイプラインにおける命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路141n−1は「0」を出力する。また、論理和回路140n−1の出力が「0」の場合、すなわち、第2のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合などにも、論理積回路141n−1は「0」を出力する。
【0236】
論理和回路140n−2には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第3のパイプラインについての、TAG(WAYn)マッチ以外のTAGマッチが入力される。例えば、論理和回路140n−2には、表2に示したTAG(WAYn)マッチd3n以外のTAGマッチd30、・・・およびd3(n−1)が入力される。
【0237】
そして、論理和回路140n−2は、TAG(WAYn)マッチd30、・・・またはd3(n−1)が「1」の場合、すなわち、第3のパイプラインにおいてWAYn以外のWAYにTAGマッチを検出した場合に、「1」を出力する。また、論理和回路140n−2は、TAG(WAYn)マッチd30、・・・およびd3(n−1)が全て「0」である場合、すなわち、第3のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合に、「0」を出力する。
【0238】
論理積回路141n−2には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第3のパイプラインについての命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3が入力される。さらに、論理積回路141n−2には、論理和回路140n−2の出力が入力される。
【0239】
そして、論理積回路141n−2は、命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3および論理和回路140n−2の出力が全て「1」の場合に、「1」を出力する。
【0240】
例えば、第3のパイプラインにおける命令フェッチがWAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路141n−2は「1」を出力する。
【0241】
また、論理積回路141n−2は、命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3または論理和回路140n−2の出力の少なくとも1つが「0」である場合に、「0」を出力する。
【0242】
例えば、命令フェッチ要求a3が「1」、かつ、シーケンシャルアクセス通知b3が「0」の場合、すなわち、第3のパイプラインにおけr命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路141n−2は「0」を出力する。また、論理和回路140n−2の出力が「0」の場合、すなわち、第3のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合などにも、論理積回路141n−2は「0」を出力する。
【0243】
論理和回路142nは、論理積回路141n−0、141n−1および141n−2の出力のうち少なくとも1つが「1」である場合に「1」を出力する。第1乃至第3にパイプラインのける命令フェッチのうち少なくとも1つの命令フェッチがWAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理和回路142nは「1」を出力する。
【0244】
また、論理和回路142nは、論理積回路141n−0、141n−1および141n−2が全て「0」を出力する場合に、「0」を出力する。例えば、第1乃至第3のいずれのパイプラインにおいても、WAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれる命令フェッチが実行されていない場合などに、論理和回路142nは「0」を出力する。
【0245】
反転回路143nは、論理和回路142nが出力する信号を反転し、反転した信号を論理積回路144nに出力する。論理和回路142nが「0」を出力すれば、反転回路143nは、論理積回路144nに「1」を出力する。そして、論理和回路142nが「1」を出力すれば、反転回路143nは、論理積回路144nに「0」を出力する。
【0246】
論理積回路144nは、反転回路143nが出力する信号と、命令フェッチ要求a1と、の論理積をRAM(WAYn)クロック制御信号としてクロックバッファ1341−nに出力する。
【0247】
すなわち、論理積回路144nは、第1乃至第3のパイプラインにおいて少なくとも1つの命令フェッチがWAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、RAM(WAYn)クロック制御信号「0」を出力する。
【0248】
また、論理積回路144nは、第1乃至第3のパイプラインで、WAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスを行なう命令フェッチが実行されていない場合などに、RAM(WAYn)クロック制御信号「1」を出力する。
【0249】
なお、命令制御部310およびL1キャッシュ部1300の具体的な処理は、図7〜図9で説明した通りである。だたし、図9のステップS904〜S907は、以下のように動作する必要がある。この場合、ステップS908〜S909の処理は不要となる。
【0250】
ステップS904において、RAMクロック制御部1332aは、ステップS903で取得したTAGマッチ情報から、TAGマッチしたWAYを判別する。
ステップS905において、RAMクロック制御部1332aは、ステップS904でTAGマッチと判定したWAYにクロックが供給されているか否かを判別する。
【0251】
クロックが供給されている場合(ステップS905 YES)、RAMクロック制御部1332aは、処理をステップS906に移行する。この場合、RAMクロック制御部1332aは、ステップS904でTAGマッチと判定したWAY以外のWAYに対してクロックを停止するRAMクロック制御信号を出力する(ステップS906)。
【0252】
クロックが停止している場合(ステップS905 NO)、RAMクロック制御部1332aは、処理をステップS907に移行する。この場合、RAMクロック制御部1332aは、プライオリティ制御部1332に対してアボート要求を通知する(ステップS907)。
【0253】
以上に説明した演算処理装置300の構成において、例えば、データRAM404やデータRAM1304などは、「記憶部」の一例として挙げられる。
データRAM(WAY0)440−0およびデータRAM(WAY1)440−1や、データRAM(WAY0)1340−0、・・・およびデータRAM(WAYn)1340−nなどは、「個別記憶部」の一例として挙げられる。
【0254】
TAG検索部401、アドレス変換部402およびTAGマッチ処理部403を含むユニットや、TAG検索部1301、アドレス変換部1302、TAGマッチ処理部1303を含むユニットなどは、「個別記憶部特定部」の一例として挙げられる。
【0255】
WAYセレクト部431やWAYセレクト部1331などは、「データ出力部」の一例として挙げられる。
クロックバッファ441−0およびクロックバッファ441−1や、クロックバッファ1341−0、1341−1、・・・および1341−nなどは、「クロック供給部」の一例として挙げられる。
【0256】
RAMクロック制御部432aやRAMクロック制御部1332aなどは、「クロック制御部」の一例として挙げられる。
【0257】
以上の構成において、RAMクロック制御部432a(RAMクロック制御部1332a)は、シーケンシャルアクセスであることを検出すると、TAGマッチを検出した第1のWAY以外のWAYに対してクロックを停止するRAMクロック制御信号を出力する。
【0258】
その結果、L1キャッシュ部330にたいしてシーケンシャルアクセスが行なわれている間、第1のWAY以外のWAYのクロックが停止するので、データRAM404(データRAM1304)の無駄な動作を抑えることができる。そして、データRAM404(データRAM1304)の消費電力を低く抑えることが可能となる。また、L1キャッシュ部400(L1キャッシュ部1300)の消費電力を低く抑えることが可能となる。
【0259】
RAMクロック制御部432a(RAMクロック制御部1332a)は、データRAM404(データRAM1304)に含まれるWAYのクロック状態を監視する。そして、TAGマッチ情報に示される第1のWAYのクロックが停止していることを検出する。すると、RAMクロック制御部432a(RAMクロック制御部1332a)は、プライオリティ制御部432(プライオリティ制御部1332)に対してアボート要求を行なう。そして、プライオリティ制御部432(プライオリティ制御部1332)は、実行中の処理を中止してプログラム命令の実行を正しく完結した時の状態から再開する。
【0260】
その結果、L1キャッシュ部400(L1キャッシュ部1300)は、何らかの障害により、TAGマッチ情報に示される第1のWAYのクロックが停止している場合であっても、演算処理装置300に正常に演算を実行させることが可能となる。
【0261】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御装置において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を備える制御装置。
(付記2)
前記クロック制御部は、前記個別記憶部特定部が特定した前記第1の個別記憶部が、クロックの供給が停止している状態であることを検出すると、実行中の処理を中止してプログラム命令の実行を正しく完結した時の状態から再開するように要求する、
ことを特徴とする付記1に記載の制御装置。
(付記3)
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求する間は、前記クロック供給部に対して、前記個別記憶部特定部が特定した前記第1の個別記憶部への前記クロックの供給を抑止させる、
ことを特徴とする付記1に記載の制御装置。
(付記4)
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータ以外のデータを前記命令制御部が要求すると、前記クロック供給部に対して、前記記憶部が有する全ての前記個別記憶部に前記クロックを供給させる、
ことを特徴とする付記1に記載の制御装置。
(付記5)
前記クロック制御部は、前記命令制御部がプログラムカウンタの示すアドレスに基づいて分岐予測を行なって分岐しないと予測した場合に、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求したと判断する、
ことを特徴とする付記1に記載の制御装置。
(付記6)
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部と、
前記記憶部が備える複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を備える記憶装置。
(付記7)
前記クロック制御部は、前記個別記憶部特定部が特定した前記第1の個別記憶部が、クロックの供給が停止している状態であることを検出すると、実行中の処理を中止してプログラム命令の実行を正しく完結した時の状態から再開するように要求する、
ことを特徴とする付記6に記載の記憶装置。
(付記8)
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求する間は、前記クロック供給部に対して、前記個別記憶部特定部が特定した前記第1の個別記憶部への前記クロックの供給を抑止させる、
ことを特徴とする付記6に記載の記憶装置。
(付記9)
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータ以外のデータを前記命令制御部が要求すると、前記クロック供給部に対して、前記記憶部が有する全ての前記個別記憶部に前記クロックを供給させる、
ことを特徴とする付記6に記載の記憶装置。
(付記10)
前記クロック制御部は、前記命令制御部がプログラムカウンタの示すアドレスに基づいて分岐予測を行なって分岐しない予測した場合に、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求したと判断する、
ことを特徴とする付記6に記載の記憶装置。
(付記11)
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御方法において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する工程と、
前記特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力する工程と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させる工程と、
を行なう制御方法。
(付記12)
データに対する命令を実行する命令制御部と、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部と、
複数の前記個別記憶部に対して、クロックをそれぞれ供給する複数のクロック供給部と、
前記記憶部が備える複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶される第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定する前記第1の個別記憶部から、前記第1のデータを前記命令制御部に出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶される第2のデータを、前記命令制御部が要求する場合、複数の前記クロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を有することを特徴とする演算処理装置。
【符号の説明】
【0262】
310 命令制御部
400 L1キャッシュ部
401 TAG検索部
410−0 TAG(WAY0)検索部
410−1 TAG(WAY1)検索部
402 アドレス変換部
403 TAGマッチ処理部
430−0 TAG(WAY0)検出部
430−1 TAG(WAY1)検出部
431 WAYセレクト部
432 プライオリティ制御部
432a RAMクロック制御部
432b TAGマッチ情報記憶部
404 データRAM
440−0 データRAM(WAY0)
440−1 データRAM(WAY1)
【技術分野】
【0001】
本発明は、キャッシュメモリ制御装置、キャッシュメモリ装置、演算処理装置およびキャッシュメモリ制御方法に関する。
【背景技術】
【0002】
様々な分野で用途に応じた機能などを提供するコンピュータが普及している。一般に、コンピュータネットワークにおいて、クライアントからの要求に応じて必要なサービスを提供するコンピュータをサーバという。
【0003】
図1は、サーバに搭載される演算処理装置としてのCPU(Central Processing Unit:中央処理装置)内部に実装されるL1キャッシュメモリ(1次キャッシュメモリ)に用いられるRAM(Random Access Memory)の制御を説明する図である。
【0004】
CPUを制御してプログラム命令を実行させる命令制御部110から命令フェッチ要求を受けると、L1キャッシュ部100内のTAG検索部101は、TAGテーブルを参照し、命令アドレスに含まれるインデックスに対応する物理アドレスを検索する。このインデックスに対応する物理アドレスをTAGという。同時に、アドレス変換部102は、TLB(Translation Lookaside Buffer:アドレス変換バッファ)を参照し、仮想アドレス(命令アドレス)を物理アドレスに変換する。
【0005】
すると、TAGマッチ処理部103は、TAG検索部101が出力するTAGと、アドレス変換部102が出力する物理アドレスと、を比較する。
両アドレスが一致した場合はTAGマッチと判定し、WAYセレクタ107は、TAGマッチしたデータRAMを選択する。L1キャッシュ部100は、選択したデータを命令制御部110に出力する。
【0006】
TAGマッチしない場合、L2キャッシュ部に対してデータを要求する処理を開始する。処理完了後、TAG検索部101が再度TAGテーブルを検索する。そして、TAGマッチ処理部103は、TAG検索部101が出力するTAGと、アドレス変換部102が出力する物理アドレスと、を比較する。
【0007】
このようにしてTAGの検索と同時に複数のデータRAMからデータが読み出される。この間、クロック供給部104は、データRAM105および106にクロックを供給し続ける。
【0008】
上記技術に関連して、動作速度に余裕がある場合には、ヒットしたデータメモリのみを活性化して無駄なミスウェイへのアクセスによる電力消費を減らすキャッシュメモリが知られている。
【0009】
また、CPUによるアクセス時に第1信号が連続的にアクセスを行うアドレスであることを示しかつフラグ手段が第1状態であるときはアドレスアレイのメモリ動作を抑止しデータアレイだけを動作させるデータ処理装置が知られている。
【0010】
また、セカンドキャッシュに対するアクセス要求を受付け、そのアクセス要求の種類およびアドレスの情報に基づいて、複数のブロックから構成されるRAMのうち動作不能なRAMを判断することが知られている。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開平09−223068号公報
【特許文献2】特開平11−184752号公報
【特許文献3】特開2006−040089号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
図1に示したL1キャッシュ部100は、命令制御部110からの要求に応じて、TAGマッチしたデータRAMと同一ライン、例えば32バイトを低位のアドレスから連続して読み出す場合がある。このような場合、TAGマッチしなかったデータRAMのデータは使用されない。しかし、全てのデータRAMには常時クロックが印加されているため、動作による無駄な電力を消費する。
【0013】
本キャッシュメモリ制御装置は、命令データRAMに対するクロックの供給を抑止して無駄な低消費電力を実現することを目的とする。
【課題を解決するための手段】
【0014】
本キャッシュメモリ制御装置の1つの観点によれば、データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御装置において、以下の構成を備える。
【0015】
個別記憶部特定部は、前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する。
【0016】
データ出力部は、前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力する。
複数のクロック供給部は、複数の前記個別記憶部に対してクロックをそれぞれ供給する。
【0017】
クロック制御部は、前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを前記命令制御部が要求する場合、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させる。
【発明の効果】
【0018】
本キャッシュメモリ制御装置によると、命令データRAMの無駄な動作を抑えて低消費電力を実現することができる。
【図面の簡単な説明】
【0019】
【図1】サーバに搭載されるCPU内部に実装されるL1キャッシュメモリに用いられるデータRAMの制御を説明する図である。
【図2】第1の実施例に係る制御装置をデータ記憶装置に使用する演算処理装置の主要な構成の例を示す図である。
【図3】第2の実施例に係るキャッシュメモリ制御装置を使用する演算処理装置の主要な構成の例を示す図である。
【図4】第2の実施例に係る演算処理装置の主要部の具体的な構成例を示す図である。
【図5】第2の実施例に係るTAG(WAY0)マッチ検出部の具体的な構成例を示す図である。
【図6】第2の実施例に係るRAMクロック制御部とデータRAMの具体的な構成例を示す図である。
【図7】第2の実施例に係る命令制御部の動作の概要を説明する図である。
【図8】第2の実施例に係る命令制御部におけるシーケンシャルアクセスの判別処理を示すフローチャートである。
【図9】第2の実施例に係るTAGマッチ処理部におけるデータRAMのクロック制御を示すフローチャートである。
【図10】第2の実施例に係る命令フェッチのパイプライン処理を説明する図である。
【図11】第2の実施例に係る命令フェッチのパイプライン処理を具体的に説明する図である。
【図12】第2の実施例に係る命令フェッチのパイプライン処理を具体的に説明する図である。
【図13】第2の実施例に係る演算処理装置の変形例を示す図である。
【図14】第2の実施例に係る演算処理装置の変形例におけるRAMクロック制御部の主要部の具体的な構成例を示す図である。
【発明を実施するための形態】
【0020】
以下、本実施形態について、図2〜図13に基づいて説明する。
【0021】
[第1の実施例]
図2は、本実施例に係る制御装置をデータ記憶装置230に使用する演算処理装置200の主要な構成の例を示す図である。
図2に示す演算処理装置200は、命令制御部210と、演算部220と、データ記憶部230と、を備える。
【0022】
命令制御部210は、記憶部230その他演算処理装置200と接続する図示しない不揮発性メモリなどから所定のプログラム命令を読み出し、必要に応じて演算部220に演算を実行させるなどしてプログラム命令を実行する。
【0023】
演算部220は、命令制御部210が要求する演算を実行する。
データ記憶部230は、個別記憶部特定部231と、クロック制御部232と、記憶部233と、データ出力部234と、を備える。本実施例に係る制御装置は、例えば、個別記憶部特定部231と、クロック制御部232と、データ出力部234と、を含む構成により実現することができる。
【0024】
個別記憶部特定部231は、記憶部233が有する後述の個別記憶部233b−0、233b−1、・・・および233b−nのうち、命令制御部210が要求するデータが記憶されている個別記憶部を特定する。nは1以上の自然数である。個別記憶部233b−0、233b−1、・・・および233b−nのうち任意の個別記憶部を単に「個別記憶部」という。
【0025】
クロック制御部232は、第1のデータに続いて第1のデータが記憶されている個別記憶部に第1のデータと連続して記憶されている第2のデータが命令制御部210から要求されたことを検出する。
【0026】
以下、第1のデータに続いて第1のデータが記憶されている個別記憶部に第1のデータと連続して記憶されている第2のデータが命令制御部210から要求されることを、「シーケンシャルアクセス」という。このとき、第1のデータが記憶されている個別記憶部を「第1の個別記憶部」という。
【0027】
また、第2のデータに続いて第1の個別記憶部に第2のデータと連続して記憶されている第3のデータが要求される場合も、「シーケンシャルアクセス」という。
【0028】
クロック制御部232は、シーケンシャルアクセスを検出すると、第1の個別記憶部以外の個別記憶部へのクロックの供給を停止するように、クロック供給部233a−0、233a−1、・・・および233a−nに指示する。クロック供給部233a−0、233a−1、・・・および233a−nのうち任意のクロック供給部を単に「クロック供給部」という。 なお、命令制御部210からのデータ要求がシーケンシャルアクセスか否かは、命令制御部210が判別した結果の通知からクロック制御部232が検出するようにしてもよいし、クロック制御部232自身が判別して検出するようにしてもよい。
【0029】
記憶部233は、個別記憶部にクロックを供給するクロック供給部233a−0、233a−1、・・・および233a−nと、データを記憶する個別記憶部233b−0、233b−1、・・・および233b−nと、を備える。
【0030】
クロック供給部233a−0、233a−1、・・・および233a−nはそれぞれ、クロック制御部232からの指示に応じて、個別記憶部233b−0、233b−1、・・・および233b−nにクロックを供給する。
【0031】
なお、クロック供給部233a−0、233a−1、・・・および233a−nは、各自が生成したクロックを個別記憶部に供給してもよいし、図示しないクロック生成回路から供給されるクロックを個別記憶部に供給してもよい。
【0032】
個別記憶部233b−0、233b−1、・・・および233b−nは、例えば、データを記憶する不揮発メモリである。個別記憶部233b−0、233b−1、・・・および233b−nそれぞれが1つのWAYを構成することでnWAY構成のメモリを実現できる。個別記憶部233b−0、233b−1、・・・および233b−nは、クロック供給部から供給されるクロックに応じて動作し指定のデータをデータ出力部234に出力する。
【0033】
データ出力部234は、個別記憶部特定部231が特定した個別記憶部が出力するデータを取得して命令制御部210に出力する。
以上の構成において、クロック制御部232は、シーケンシャルアクセスであることを検出する。すると、クロック制御部232は、クロック供給部233a−0、233a−1、・・・および233a−nに対して、個別記憶部特定部231が特定した第1の個別記憶部以外の個別記憶部へのクロックの供給を停止するように指示する。
【0034】
その結果、シーケンシャルアクセスが行なわれている間、第1の個別記憶部以外の全ての個別記憶部へのクロックの供給が停止し、記憶部233の無駄な動作を抑えることができるので、データ記憶部230の消費電力を低く抑えることが可能となる。
【0035】
なお、図2では、クロック供給部233a−0、233a−1、・・・および233a−nが、記憶部233内部に備わる例を示した。しかし、クロック供給部233a−0、233a−1、・・・および233a−nが記憶部233内部に備わる場合に限定する趣旨ではない。例えば、クロック供給部233a−0、233a−1、・・・および233a−nは、記憶部233の外部に備わっていてもよい。
【0036】
[第2の実施例]
図3は、本実施例に係るキャッシュメモリ制御装置をL1キャッシュ部330に使用する演算処理装置300の主要な構成の例を示す図である。
図3に示す演算処理装置300は、命令制御部310と、演算部320と、L1キャッシュ部330と、L2キャッシュ部340と、を備える。本実施例に係るキャッシュメモリ制御装置は、TAG検索部331と、アドレス変換部332と、TAGマッチ処理部333と、を含む構成により実現することができる。
【0037】
命令制御部310は、L1キャッシュ部330、L2キャッシュ部340、その他演算処理装置300と接続する図示しない不揮発性メモリなどから所定のプログラム命令を読み出し、必要に応じて演算部320に演算を実行させるなどしてプログラム命令を実行する。 命令制御部310は、L1キャッシュ部330に対するアクセス、例えば、命令フェッチ要求がシーケンシャルアクセスか否かを判別する。そして、命令制御部310は、L1キャッシュ部330に対して判別結果、例えば、命令フェッチ要求がシーケンシャルアクセスか否かを通知する。
【0038】
演算部320は、命令制御部310からの指示に応じて、演算処理を実行する。
L1キャッシュ部330は、例えば、演算処理装置300と接続する図示しない不揮発メモリやL2キャッシュ部340などから読み出したデータの一部または全部を一時的に記憶する。そして、L1キャッシュ部330は、命令制御部310などからの要求に応じて、内部に保持するデータを出力する。
【0039】
ここで、L1キャッシュ部330は、TAG検索部331と、アドレス変換部332と、TAGマッチ処理部333と、データRAM334と、を備える。
TAG検索部331は、命令制御部310からの命令フェッチ要求に応じて、その命令フェッチ要求とともに受ける命令アドレスに含まれるインデックスと一致するTAGをインデックステーブルから検索する。この検索処理は、データRAM334に含まれるWAY毎に行なわれる。
【0040】
ここで、TAGとは、データRAMに格納されているデータを管理する情報である。本実施例では、データRAMに記憶されているデータの物理アドレスを含む情報をTAGという。そして、インデックステーブルとは、データRAMに格納されているデータのTAGをインデックス毎に記憶する情報である。このインデックステーブルは、データRAM334に含まれるWAY毎に用意される。
【0041】
アドレス変換部332は、命令制御部310からの命令フェッチ要求を受けると、TLB等を参照する。そして、アドレス変換部332は、命令フェッチ要求とともに受ける仮想アドレス(命令アドレス)を物理アドレスに変換する。
【0042】
TAGマッチ処理部333は、TAG検索部331が出力するTAGと、アドレス変換部332が出力する物理アドレスと、を比較する。そして、TAGマッチ処理部333は、TAG検索部331が出力するTAGと、アドレス変換部332が出力する物理アドレスと、が一致する場合を「TAGマッチ」と判断し、TAGマッチしたWAYからデータを読み出す。
【0043】
また、TAGマッチ処理部333は、命令制御部310からシーケンシャルアクセスである旨の通知を受けると、TAGマッチしたWAY以外のWAYへのクロックの印加を停止するように、データRAM334に指示する。
【0044】
データRAM334は、複数のWAYを含むメモリである。データRAM334は、WAY毎に、WAY内部へクロックを供給し、または、WAY内部へのクロックの供給を停止することが可能である。
【0045】
L2キャッシュ部340は、例えば、L1キャッシュ部330からキャッシュアウトされたデータの一部または全部を一時的に記憶する。
【0046】
図4は、本実施例に係るL1キャッシュ部330の具体的な構成例を示す図である。なお、図4では、説明を簡単にするために、データRAM334が2WAY構成を有する場合について説明するが、L1キャッシュ部330を図4に示す構成に限定する趣旨ではない。
【0047】
図4に示すL1キャッシュ部400は、TAG検索部401と、アドレス変換部402と、TAGマッチ処理部403と、データRAM404と、を備える。TAG検索部401、アドレス変換部402、TAGマッチ処理部403およびデータRAM404は、図3に示したTAG検索部331、アドレス変換部332、TAGマッチ処理部333およびデータRAM334にそれぞれ対応する。
【0048】
TAG検索部401は、TAG(WAY0)検索部410−0およびTAG(WAY1)検索部410−1を備える。TAGマッチ処理部403は、TAG(WAY0)マッチ検出部430−0およびTAG(WAY1)マッチ検出部430−1と、WAYセレクト部431と、プライオリティ制御部432と、を備える。プライオリティ制御部432は、RAMクロック制御部432aおよびTAGマッチ情報記憶部432bを備える。データRAM404は、WAY0のデータRAM(WAY0)440−0およびクロックバッファ441−0と、WAY1のデータRAM(WAY1)440−1およびクロックバッファ441−1と、を備える。
【0049】
以上の構成において、命令制御部310は、プログラム命令の実行を開始すると、必要に応じてL1キャッシュ部400内のRAMクロック制御部432aに対して命令フェッチ要求を行なう。命令フェッチ要求を行なう場合、命令制御部310は、RAMクロック制御部432aに命令フェッチ要求信号「1」を出力する。また、命令フェッチ要求を行なわない場合、命令制御部310は、RAMクロック制御部432aに命令フェッチ要求信号「0」を出力する。
【0050】
同時に、命令制御部310は、その命令フェッチ要求とともに、所望の命令が格納されている命令アドレス460をL1キャッシュ部400に通知する。命令アドレス460は、アドレス変換部402に出力される。命令アドレス460に含まれるインデックスは、TAG(WAY0)検索部410−0、TAG(WAY1)検索部410−1、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1に出力される。
【0051】
また、命令制御部310は、L1キャッシュ部400に出力した命令フェッチ要求がシーケンシャルアクセスか否かを判別し、その判別結果をL1キャッシュ部400内のRAMクロック制御部432aに通知する。この通知を「シーケンシャルアクセス通知」という。命令フェッチ要求がシーケンシャルアクセスであると判断すると、命令制御部310は、シーケンシャルアクセス通知信号「1」をRAMクロック制御部432aに出力する。また、命令フェッチ要求がシーケンシャルアクセスでないと判断すると、命令制御部310は、シーケンシャルアクセス通知信号「0」をRAMクロック制御部432aに出力する。
【0052】
ここで、例えば、命令フェッチ要求により、第1のプログラム命令に続いて第2のプログラム命令、第3のプログラム命令、・・・が要求される場合を考える。命令制御部310は、第1のプログラム命令が記憶されている第1のWAYに、第1のプログラム命令が記憶されている命令アドレスと連続するアドレスに記憶されている第2のプログラム命令が要求された場合を、「シーケンシャルアクセス」と判断する。同様に、命令制御部310は、第1のWAYに、第2のプログラム命令が記憶されている命令アドレスと連続するアドレスに記憶されている第3のプログラム命令が要求された場合も、「シーケンシャルアクセス」と判断する。
【0053】
ただし、本実施例に係るシーケンシャルアクセスは、同一のキャッシュラインに対するアクセスに限定する。
【0054】
TAG(WAY0)検索部410−0は、命令制御部310の命令フェッチ要求に応じ、その命令フェッチ要求とともに受ける命令アドレス460に含むインデックスと一致するTAGをデータRAM(WAY0)440−0のインデックステーブルから検索する。そして、TAG(WAY0)検索部410−0は、検索結果をTAG(WAY0)マッチ検出部430−0に出力する。このときTAG(WAY0)検索部410−0が出力するTAGを「TAG(WAY0)」という。
【0055】
TAG(WAY1)検索部410−1は、命令制御部310からの命令フェッチ要求に応じ、その命令フェッチ要求とともに受ける命令アドレス460に含むインデックスと一致するTAGをデータRAM(WAY1)440−1のインデックステーブルから検索する。そして、TAG(WAY1)検索部410−1は、検索結果をTAG(WAY1)マッチ検出部430−1に出力する。このときTAG(WAY1)検索部410−1が出力するTAGを「TAG(WAY1)」という。
【0056】
アドレス変換部402は、命令制御部310からの命令フェッチ要求を受けると、TLB等を参照し、命令アドレス460を物理アドレスに変換する。そして、アドレス変換部402は、物理アドレスをTAG(WAY0)マッチ検出部430−0とTAG(WAY1)マッチ検出部430−1とに出力する。
【0057】
TAG(WAY0)マッチ検出部430−0は、TAG(WAY0)検索部410−0が出力するTAGと、アドレス変換部402が出力する物理アドレスと、を比較する。そして、TAG(WAY0)マッチ検出部430−0は、比較結果を、WAYセレクト部431とRAMクロック制御部432aとに出力する。
【0058】
同様に、TAG(WAY1)マッチ検出部430−1は、TAG(WAY1)検索部410−1が出力するTAGと、アドレス変換部402が出力する物理アドレスと、を比較する。そして、TAG(WAY1)マッチ検出部430−1は、比較結果を、WAYセレクト部431とRAMクロック制御部432aとに出力する。
【0059】
以下、TAG(WAY0)マッチ検出部430−0またはTAG(WAY1)マッチ検出部430−1の出力を「TAGマッチ」という。特に、TAG(WAY0)マッチ検出部430−0が出力するTAGマッチを「TAG(WAY0)マッチ」といい、TAG(WAY1)マッチ検出部430−1が出力するTAGマッチを「TAG(WAY1)マッチ」という。
【0060】
TAG(WAY0)検索部410−0が出力するTAGとアドレス変換部402が出力する物理アドレスとが一致する場合、TAG(WAY0)マッチ検出部430−0は、RAMクロック制御部432aにTAG(WAY0)マッチ信号「1」を出力する。TAG(WAY0)検索部410−0が出力するTAGとアドレス変換部402が出力する物理アドレスとが一致しない場合、TAG(WAY0)マッチ検出部430−0は、RAMクロック制御部432aにTAG(WAY0)マッチ信号「0」を出力する。
【0061】
同様に、TAG(WAY1)検索部410−1が出力するTAGとアドレス変換部402が出力する物理アドレスとが一致する場合、TAG(WAY1)マッチ検出部430−1は、RAMクロック制御部432aにTAG(WAY1)マッチ信号「1」を出力する。TAG(WAY1)検索部410−1が出力するTAGとアドレス変換部402が出力する物理アドレスとが一致しない場合、TAG(WAY1)マッチ検出部430−1は、RAMクロック制御部432aにTAG(WAY1)マッチ信号「0」を出力する。 WAYセレクト部431は、TAG(WAY0)マッチ検出部430−0およびTAG(WAY1)マッチ検出部430−1が出力するTAGマッチ信号にしたがって、データRAM(WAY0)440−0またはデータRAM(WAY1)440−1を選択する。そして、WAYセレクト部431は、選択したデータRAMから出力されるデータを命令制御部310などに出力する。
【0062】
プライオリティ制御部432は、RAMクロック制御部432aから後述のアボート要求を受けると、アボート処理を実行する。アボート処理とは、例えば、実行中の処理を中止してプログラム命令の実行を正しく完結した時の状態に演算処理装置300を復元し、その復元された状態からプログラム命令の実行を再開する処理である。
【0063】
プライオリティ制御部432は、上記アボート処理の他に、命令制御部310からの命令フェッチ要求やL1キャッシュ部400でキャッシュミスした命令フェッチ要求の再投入を行なうなどリクエストの調停を行なう。
【0064】
RAMクロック制御部432aは、命令フェッチ要求により要求される命令アドレスが、データRAM(WAY0)440−0またはデータRAM(WAY1)440−1におけるキャッシュラインの先頭アドレスか否かを判別する。
【0065】
そして、命令フェッチ要求により要求される命令アドレスがキャッシュラインの先頭アドレスでないと判断すると、RAMクロック制御部432aは、キャッシュライン非先頭アドレス信号「1」を生成する。また、命令フェッチ要求により要求される命令アドレスがキャッシュラインの先頭アドレスであると判断すると、RAMクロック制御部432aは、キャッシュライン非先頭アドレス信号「0」を生成する。
【0066】
そして、RAMクロック制御部432aは、命令制御部310からの命令フェッチ要求信号およびシーケンシャルアクセス通知信号を、命令フェッチのパイプライン毎にTAGマッチ情報記憶部432bに記憶する。
【0067】
さらに、RAMクロック制御部432aは、RAMクロック制御部432aが生成したキャッシュライン非先頭アドレス信号を、命令フェッチのパイプライン毎にTAGマッチ情報記憶部432bに記憶する。
【0068】
さらに、RAMクロック制御部432aは、TAG(WAY0)マッチ信号と、TAG(WAY1)マッチ信号と、を命令フェッチのパイプライン毎にTAGマッチ情報記憶部432bに記憶する。
【0069】
下記表1は、TAGマッチ情報記憶部432bに記憶されるTAGマッチ情報を示している。
【表1】
【0070】
なお、実行中のパイプラインのうち、基準となるパイプラインを「第1のパイプライン」とすると、第1のパイプラインの次のパイプラインを「第2のパイプライン」、第2のパイプラインの次のパイプラインを「第3のパイプライン」という。
【0071】
例えば、図12において、リクエストAについてのパイプラインを第1のパイプラインとすると、リクエストBについてのパイプラインが第2のパイプラインである。そして、リクエストCについてのパイプラインが第3のパイプラインである。
【0072】
RAMクロック制御部432aは、TAGマッチ情報記憶部432bに記憶したTAGマッチ情報から、現在処理中の命令フェッチにシーケンシャルアクセスの命令フェッチがあるか否かを判別する。シーケンシャルアクセスの命令フェッチがある場合、RAMクロック制御部432aは、クロックバッファ441−0および441−1に対してクロックの供給・停止を制御するRAMクロック制御信号を出力する。なお、クロックバッファ441−0に対するRAMクロック制御信号を「RAM(WAY0)クロック制御信号」といい、クロックバッファ441−1に対するRAMクロック制御信号を「RAM(WAY1)クロック制御信号」という。
【0073】
また、RAMクロック制御部432aは、データRAM(WAY0)440−0に対してシーケンシャルアクセスが行なわれていると判断すると、クロックバッファ441−0に対して、RAM(WAY0)クロック制御信号「1」を出力する。同時に、RAMクロック制御部432aは、クロックバッファ441−1に対して、RAM(WAY1)クロック制御信号「0」を出力する。
【0074】
また、RAMクロック制御部432aは、データRAM(WAY1)440−1に対してシーケンシャルアクセスが行なわれていると判断すると、クロックバッファ441−0に対して、RAM(WAY0)クロック制御信号「0」を出力する。同時に、RAMクロック制御部432aは、クロックバッファ441−1に対して、RAM(WAY1)クロック制御信号「1」を出力する。
【0075】
なお、RAMクロック制御部432aには、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1のクロック状態を監視する機能を含めることができる。
【0076】
例えば、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1の両ユニットへのクロックの供給が停止していることを検出すると、プライオリティ制御部432にエラー通知を行なう機能をRAMクロック制御部432aに含めることができる。このときのエラー通知を「アボート要求」という。 データRAM404は、データRAM(WAY0)440−0とデータRAM(WAY1)440−1を備える2WAY構成のデータRAMである。本実施例では、データRAM(WAY0)440−0をWAY0、データRAM(WAY1)440−1をWAY1とする。
【0077】
また、データRAM404は、データRAM(WAY0)440−0へのクロックの供給・停止を制御するクロックバッファ441−0と、データRAM(WAY1)440−1へのクロックの供給・停止を制御するクロックバッファ441−1と、を備える。なお、本実施例に係るデータRAM404は、クロックバッファ441−0とクロックバッファ441−1とをデータRAM404内部に備える場合を示したが、この構成に限定する趣旨ではない。クロックバッファ441−0とクロックバッファ441−1は、データRAM404の外部に配置されていてもよいのは当然である。
【0078】
クロックバッファ441−0およびクロックバッファ441−1は、クロック生成回路450からクロックを受信する。そして、クロックバッファ441−0およびクロックバッファ441−1は、RAMクロック制御部432aからのRAMクロック制御信号に応じて、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1にクロックを供給する。
【0079】
例えば、クロックバッファ441−0は、RAM(WAY0)クロック制御信号が「0」の間、データRAM(WAY0)440−0にクロックを供給する。また、クロックバッファ441−0は、RAM(WAY0)クロック制御信号が「1」の間、データRAM(WAY0)440−0へのクロックの供給を停止する。クロックバッファ441−1もクロックバッファ441−0と同様に動作する。
【0080】
クロック生成回路450は、一定周期のクロックを生成する回路である。クロック生成回路450は、生成したクロックをクロックバッファ441−0および441−1に出力する。
【0081】
図5は、本実施例に係るTAG(WAY0)マッチ検出部430−0の具体的な構成例を示す図である。
【0082】
TAG(WAY0)マッチ検出部430−0は、否定排他的論理和回路501−13、501−14、501−15、・・・および501−40と、論理積回路502と、を備える。なお、図5では、否定排他的論理和回路を「EXNOR」、論理積回路を「AND」と略記する。
【0083】
否定排他的論理和回路501−13の入力端は、アドレス変換部402の出力端のうち物理アドレスの第13ビットを出力する出力端と、TAG(WAY0)検索部410−0の出力端のうちTAG(WAY0)の第13ビットを出力する出力端と、に接続する。他の否定排他的論理和回路501−14、501−15、・・・、501−m、・・・および501−40についても否定排他的論理和回路501−13と同様の構成である。mは13以上40以下の自然数である。例えば、否定排他的論理和回路501−mの入力端は、アドレス変換部402の出力端のうち物理アドレスの第mビットを出力する出力端と、TAG(WAY0)検索部410−0の出力端のうちTAG(WAY0)の第mビットを出力する出力端と、に接続する。
【0084】
論理積回路502の入力端は、否定排他的論理和回路501−13、501−14、・・・および501−40の出力端に接続する。また、論理積回路502の出力端は、RAMクロック制御部432aの入力端に接続する。
【0085】
以上の構成において、アドレス変換部402から物理アドレスが、TAG(WAY0)検索部410−0からTAG(WAY0)が、TAG(WAY0)マッチ検出部430−0に入力された場合を考える。
【0086】
この場合、否定排他的論理和回路501−13は、物理アドレスの第13ビットと、TAG(WAY0)の第13ビットと、の否定排他的論理和を論理積回路502に出力する。否定排他的論理和回路501−13は、物理アドレスの第13ビットとTAG(WAY0)の第13ビットとが一致すれば「1」を出力し、物理アドレスの第13ビットとTAG(WAY0)の第13ビットとが一致しなければ「0」を出力する。他の否定排他的論理和回路501−14、501−15、・・・、501−m、・・・および501−40も否定排他的論理和回路501−13と同様の動作をする。
【0087】
例えば、否定排他的論理和回路501−mは、物理アドレスの第mビットと、TAG(WAY0)の第mビットと、の否定排他的論理和を論理積回路502に出力する。否定排他的論理和回路501−mは、物理アドレスの第mビットとTAG(WAY0)の第mビットとが一致すれば「1」を出力し、物理アドレスの第mビットとTAG(WAY0)の第mビットとが一致しなければ「0」を出力する。
【0088】
論理積回路502は、否定排他的論理和回路501−13、501−14、・・・および501−40の出力の論理積を出力する。
例えば、論理積回路502は、否定排他的論理和回路501−13、501−14、・・・および501−40の全ての出力が「1」の場合、すなわち、物理アドレスとTAG(WAY0)とが一致する場合にTAG(WAY0)マッチ信号「1」を出力する。また、論理積回路502は、否定排他的論理和回路501−13、501−14、・・・または501−40の出力に「0」が含まれる場合、すなわち、物理アドレスとTAG(WAY0)とが一致しない場合にTAG(WAY0)マッチ信号「0」を出力する。
【0089】
なお、図5には、TAG(WAY0)マッチ検出部430−0の構成のみを示したが、TAG(WAY1)マッチ検出部430−1もTAG(WAY0)マッチ検出部430−0と同様の構成となる。ただし、TAG(WAY1)マッチ検出部430−1には、TAG(WAY0)検索部410−0の出力TAG(WAY0)ではなくTAG(WAY1)検索部410−1の出力TAG(WAY1)が入力される。そして、TAG(WAY1)マッチ検出部430−1は、RAMクロック制御部432aにTAG(WAY1)マッチ信号を出力する。
【0090】
図6は、本実施例に係るRAMクロック制御部432aの主要部の具体的な構成例を示す図である。
RAMクロック制御部432aは、論理積回路601−0、601−1および601−2と、論理和回路602と、反転回路603と、論理積回路604と、を備える。さらに、RAMクロック制御部432aは、論理積回路605−0、605−1および605−2と、論理和回路606と、反転回路607と、論理積回路608と、を備える。なお、図6では、論理積回路を「AND」、論理和回路を「OR」と略記する。
【0091】
論理積回路601−0、601−1および601−2の出力端は、論理和回路602の入力端に接続する。論理和回路602の出力端は、反転回路603の入力端に接続する。反転回路603の出力端は、論理積回路604の入力端に接続する。論理積回路604の入力端は、反転回路603の出力端の他に、命令制御部310の出力端とも接続し、命令フェッチ要求信号が入力される。論理積回路604の出力端は、クロックバッファ441−1、すなわち論理積回路610の入力端に接続する。
【0092】
論理積回路605−0、605−1および605−2の出力端は、論理和回路606の入力端に接続する。論理和回路606の出力端は、反転回路607の入力端に接続する。反転回路607の出力端は、論理積回路608の入力端に接続する。論理積回路608の入力端は、反転回路607の出力端の他に、命令制御部310の出力端とも接続し、命令フェッチ要求信号が入力される。論理積回路608の出力端は、クロックバッファ441−0、すなわち論理積回路609の入力端に接続する。
【0093】
以上の構成において、論理積回路601−0および論理積回路605−0には、TAGマッチ情報記憶部432bに記憶されるTAGマッチ情報のうち、第1のパイプラインについてのTAGマッチ情報が入力される。ただし、論理積回路601−0への入力からTAG(WAY1)マッチは除かれる。また、論理積回路605−0への入力からTAG(WAY0)マッチは除かれる。
【0094】
例えば、論理積回路601−0には、表1に示した命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1およびTAG(WAY0)マッチd10が入力される。そして、論理積回路605−0には、表1に示した命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1およびTAG(WAY1)マッチd11が入力される。
【0095】
また、論理積回路601−1および論理積回路605−1には、TAGマッチ情報記憶部432bに記憶されるTAGマッチ情報のうち、第2のパイプラインについてのTAGマッチ情報が入力される。ただし、論理積回路601−1への入力からTAG(WAY1)マッチは除かれる。また、論理積回路605−1への入力からTAG(WAY0)マッチは除かれる。
【0096】
例えば、論理積回路601−1には、表1に示した命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2およびTAG(WAY0)マッチd20が入力される。そして、論理積回路605−1には、表1に示した命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2およびTAG(WAY1)マッチd21が入力される。
【0097】
また、論理積回路601−2および論理積回路605−2には、TAGマッチ情報記憶部432bに記憶されるTAGマッチ情報のうち、第3のパイプラインについてのTAGマッチ情報が入力される。ただし、論理積回路601−2への入力からTAG(WAY1)マッチは除かれる。また、論理積回路605−2への入力からTAG(WAY0)マッチは除かれる。
【0098】
例えば、論理積回路601−2には、表1に示した命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3およびTAG(WAY0)マッチd30が入力される。そして、論理積回路605−2には、表1に示した命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3およびTAG(WAY1)マッチd31が入力される。
【0099】
論理積回路601−0は、命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1およびTAG(WAY0)マッチd10が全て「1」の場合に、「1」を出力する。すなわち、第1のパイプラインにおける命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路601−0は「1」を出力する。
【0100】
また、論理積回路601−0は、命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1またはTAG(WAY0)マッチd10の少なくとも1つが「0」である場合に、「0」を出力する。
【0101】
例えば、命令フェッチ要求a1が「1」、かつ、シーケンシャルアクセス通知b1が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路601−0は「0」を出力する。また、TAG(WAY0)マッチd10が「0」の場合、すなわち、TAG(WAY0)マッチを検出しない場合などにも、論理積回路601−0は「0」を出力する。
【0102】
論理積回路601−1は、命令フェッチ要求a2、シーケンシャルアクセス通知b2およびキャッシュライン非先頭アドレスc2およびTAG(WAY0)マッチd20が全て「1」の場合に、「1」を出力する。すなわち、第2のパイプラインにおける命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路601−1は「1」を出力する。
【0103】
また、論理積回路601−1は、命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2またはTAG(WAY0)マッチd20の少なくとも1つが「0」である場合に、「0」を出力する。
【0104】
例えば、命令フェッチ要求a2が「1」、かつ、シーケンシャルアクセス通知b2が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路601−1は「0」を出力する。また、TAG(WAY0)マッチd20が「0」の場合、すなわち、TAG(WAY0)マッチを検出しない場合などにも、論理積回路601−1は「0」を出力する。
【0105】
論理積回路601−2は、命令フェッチ要求a3、シーケンシャルアクセス通知b3およびキャッシュライン非先頭アドレスc3およびTAG(WAY0)マッチd30が全て「1」の場合に、「1」を出力する。すなわち、第3のパイプラインにおける命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路601−2は「1」を出力する。
【0106】
また、論理積回路601−2は、命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3またはTAG(WAY0)マッチd30の少なくとも1つが「0」である場合に、「0」を出力する。
【0107】
例えば、命令フェッチ要求a3が「1」、かつ、シーケンシャルアクセス通知b3が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路601−2は「0」を出力する。また、TAG(WAY0)マッチd30が「0」の場合、すなわち、TAG(WAY0)マッチを検出しない場合などにも、論理積回路601−2は「0」を出力する。
【0108】
論理和回路602は、論理積回路601−0、601−1および601−2の出力のうち少なくとも1つが「1」である場合に「1」を出力する。すなわち、論理和回路602は、第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、「1」を出力する。
【0109】
そして、論理和回路602は、論理積回路601−0、601−1および601−2が全て「0」を出力する場合に、「0」を出力する。例えば、論理和回路602は、第1乃至第3のいずれのパイプラインにおいても、WAY0内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれる命令フェッチが実行されていない場合などに、「0」を出力する。
【0110】
反転回路603は、論理和回路602が出力する信号を反転し、反転した信号を論理積回路604に出力する。論理和回路602が「0」を出力すれば、反転回路603は、論理積回路604に「1」を出力する。そして、論理和回路602が「1」を出力すれば、反転回路603は、論理積回路604に「0」を出力する。
【0111】
論理積回路604は、反転回路603が出力する信号と、命令フェッチ要求a1と、の論理積をRAM(WAY1)クロック制御信号としてクロックバッファ610に出力する。
【0112】
したがって、論理積回路604は、反転回路603が出力する信号と命令フェッチ要求a1が「1」の場合に、RAM(WAY1)クロック制御信号「1」を出力する。例えば、論理積回路604は、第1乃至第3のいずれのパイプラインにおいても、WAY0内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれる命令フェッチが実行されていない場合に、RAM(WAY1)クロック制御信号「1」を出力する。
【0113】
そして、反転回路603が出力する信号と命令フェッチ要求a1のうち少なくとも一方の信号が「0」の場合に、論理積回路604は、RAM(WAY1)クロック制御信号「0」を出力する。
【0114】
例えば、論理和回路604は、第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、RAM(WAY1)クロック制御信号「0」を出力する。また、論理和回路604は、命令フェッチ要求を検出しない場合などにも、RAM(WAY1)クロック制御信号「0」を出力する。
【0115】
クロックバッファ441−1は、論理積回路610を備える。論理積回路610の入力端は、RAMクロック制御部432a内の論理和回路604の出力端と、クロック生成回路450の出力端と、に接続する。そして、論理積回路610の出力端は、データRAM(WAY1)440−1の入力端に接続する。
【0116】
そして、論理積回路610は、論理積回路604の出力、すなわち、RAM(WAY1)クロック制御信号と、クロックと、の論理積をデータRAM(WAY1)440−1に出力する。
【0117】
したがって、クロックバッファ441−1は、RAMクロック制御部432aからRAM(WAY1)クロック制御信号「1」が入力されると、クロックをデータRAM(WAY1)440−1に出力する。
【0118】
例えば、第1乃至第3のパイプラインにおいて、WAY0内の同一のキャッシュラインに対するシーケンシャルアクセスを行なう命令フェッチが実行されていない場合、クロックバッファ441−1は、クロックをデータRAM(WAY1)440−1に出力する。
【0119】
また、クロックバッファ441−1は、RAMクロック制御部432aからRAM(WAY1)クロック制御信号「0」が入力されると、データRAM(WAY1)440−1へのクロックの出力を停止する。
【0120】
例えば、第1乃至第3のパイプラインで実行中の命令フェッチがWAY0内の同一のキャッシュラインに対するシーケンシャルアクセスである場合、クロックバッファ441−1は、データRAM(WAY1)440−1へのクロックの出力を停止する。
【0121】
また、命令フェッチ要求を検出しない場合などにも、クロックバッファ441−1は、データRAM(WAY1)440−1へのクロックの出力を停止する。
一方、論理積回路605−0は、論理積回路601−0と同様に、命令フェッチ要求a1、シーケンシャルアクセス通知b1およびキャッシュライン非先頭アドレスc1およびTAG(WAY1)マッチd11が全て「1」の場合に、「1」を出力する。すなわち、第1のパイプラインにおける命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路605−0は「1」を出力する。
【0122】
また、論理積回路605−0は、命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1またはTAG(WAY1)マッチd11の少なくとも1つが「0」である場合に、「0」を出力する。
【0123】
例えば、命令フェッチ要求a1が「1」、かつ、シーケンシャルアクセス通知b1が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路605−0は「0」を出力する。また、TAG(WAY1)マッチd11が「0」の場合、すなわち、TAG(WAY1)マッチを検出しない場合などにも、論理積回路605−0は「0」を出力する。
【0124】
論理積回路605−1は、論理積回路601−1と同様に、命令フェッチ要求a2、シーケンシャルアクセス通知b2およびキャッシュライン非先頭アドレスc2およびTAG(WAY1)マッチd21が全て「1」の場合に、「1」を出力する。すなわち、第2のパイプラインにおける命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路605−1は「1」を出力する。
【0125】
また、論理積回路605−1は、命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2またはTAG(WAY1)マッチd21の少なくとも1つが「0」である場合に、「0」を出力する。
【0126】
例えば、命令フェッチ要求a2が「1」、かつ、シーケンシャルアクセス通知b2が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路605−1は「0」を出力する。また、TAG(WAY1)マッチd21が「0」の場合、すなわち、TAG(WAY1)マッチを検出しない場合などにも、論理積回路605−1は「0」を出力する。
【0127】
論理積回路605−2は、論理積回路601−2と同様に、命令フェッチ要求a3、シーケンシャルアクセス通知b3およびキャッシュライン非先頭アドレスc3およびTAG(WAY1)マッチd31が全て「1」の場合に、「1」を出力する。すなわち、第3のパイプラインにおける命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路605−2は「1」を出力する。
【0128】
また、論理積回路605−2は、命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3またはTAG(WAY1)マッチd31の少なくとも1つが「0」である場合に、「0」を出力する。
【0129】
例えば、命令フェッチ要求a3が「1」、かつ、シーケンシャルアクセス通知b3が「0」の場合、すなわち、命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路605−2は「0」を出力する。また、TAG(WAY1)マッチd31が「0」の場合、すなわち、TAG(WAY1)マッチを検出しない場合などにも、論理積回路605−2は「0」を出力する。
【0130】
論理和回路606は、論理積回路605−0、605−1および605−2の出力のうち少なくとも1つが「1」である場合に「1」を出力する。すなわち、論理和回路606は、第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、「1」を出力する。
【0131】
そして、論理和回路606は、論理積回路605−0、605−1および605−2が全て「0」を出力する場合に、「0」を出力する。例えば、論理和回路606は、第1乃至第3のいずれのパイプラインにおいても、WAY1内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれる命令フェッチが実行されていない場合などに、「0」を出力する。
【0132】
反転回路607は、論理和回路606が出力する信号を反転し、反転した信号を論理積回路608に出力する。論理和回路606が「0」を出力すれば、反転回路607は、論理積回路608に「1」を出力する。そして、論理和回路606が「1」を出力すれば、反転回路607は、論理積回路608に「0」を出力する。
【0133】
論理積回路608は、反転回路607が出力する信号と、命令フェッチ要求a1と、の論理積をRAM(WAY1)クロック制御信号としてクロックバッファ610に出力する。
【0134】
したがって、論理積回路608は、反転回路607が出力する信号と命令フェッチ要求a1が「1」の場合に、RAM(WAY1)クロック制御信号「1」を出力する。例えば、論理積回路608は、第1乃至第3のいずれのパイプラインにおいても、WAY1内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれる命令フェッチが実行されていない場合などに、RAM(WAY1)クロック制御信号「1」を出力する。
【0135】
そして、反転回路607が出力する信号と命令フェッチ要求a1のうち少なくとも一方の信号が「0」の場合に、論理積回路608は、RAM(WAY1)クロック制御信号「0」を出力する。
【0136】
例えば、論理和回路608は、第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、RAM(WAY1)クロック制御信号「0」を出力する。また、論理和回路608は、命令フェッチ要求を検出しない場合などにも、RAM(WAY1)クロック制御信号「0」を出力する。この場合、後述するようにデータRAM(WAY0)440−0へのクロックの供給が停止する。
【0137】
ここで、クロックバッファ441−0は、論理積回路609を備える。論理積回路609の入力端は、RAMクロック制御部432a内の論理和回路608の出力端と、クロック生成回路450の出力端と、に接続する。そして、論理積回路609の出力端は、データRAM(WAY0)440−0の入力端に接続する。
【0138】
そして、論理積回路609は、論理積回路608の出力、すなわち、RAM(WAY0)クロック制御信号と、クロックと、の論理積をデータRAM(WAY0)440−0に出力する。
【0139】
したがって、クロックバッファ441−0は、RAMクロック制御部432aからRAM(WAY0)クロック制御信号「1」が入力されると、クロックをデータRAM(WAY0)440−1に出力する。
【0140】
例えば、第1乃至第3のパイプラインにおいて、WAY1内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれていない場合、クロックバッファ441−0は、クロックをデータRAM(WAY0)440−1に出力する。
【0141】
また、クロックバッファ441−0は、RAMクロック制御部432aからRAM(WAY0)クロック制御信号「0」が入力されると、データRAM(WAY0)440−0へのクロックの出力を停止する。
【0142】
例えば、第1乃至第3のパイプラインで実行中の命令フェッチがWAY1内の同一のキャッシュラインに対するシーケンシャルアクセスである場合、クロックバッファ441−0は、データRAM(WAY0)440−0へのクロックの出力を停止する。
【0143】
また、命令フェッチ要求を検出しない場合などにも、クロックバッファ441−0は、データRAM(WAY0)440−0へのクロックの出力を停止する。
図7は、本実施例に係る命令制御部310の動作の概要を説明する図である。
【0144】
命令制御部310は、プログラムカウンタ701と、分岐予測判別回路702と、を備える。
プログラムカウンタ701は、次に実行するプログラム命令が記憶されている命令アドレス460を保持する記憶部である。プログラムカウンタ701には、例えば、レジスタを使用することができる。
【0145】
命令制御部310は、所定のプログラム命令の実行が完了すると、プログラムカウンタ701から命令アドレス460を取得するとともに、プログラムカウンタ701を命令長だけインクリメントする。そして、命令制御部310は、L1キャッシュ部400に対して命令フェッチ要求を行なうとともに命令アドレス460を通知する。
【0146】
分岐予測判別回路702は、L1キャッシュ部400に対して行なう命令フェッチ要求が、シーケンシャルアクセスか否かを判別し、判別結果をL1キャッシュ部400に通知する。
【0147】
本実施例では、L1キャッシュ部400へのアクセス、例えば、命令フェッチ要求は、通常、シーケンシャルアクセスであると判断するものとする。したがって、通常、命令制御部310は、L1キャッシュ部400に対してシーケンシャルアクセスである旨を通知する。
【0148】
そして、実行中のプログラム命令について分岐予測判別回路702が分岐すると予測した場合、命令制御部310は、シーケンシャルアクセスが無効となったと判断し、シーケンシャルアクセスでない旨をL1キャッシュ部400に通知する。
【0149】
図8は、本実施例に係るシーケンシャルアクセスの判別処理を示すフローチャートである。
ステップS801において、命令制御部310は、プログラムカウンタ701から命令アドレス460を取得する。
【0150】
ステップS802において、命令制御部310は、分岐予測を行なう。分岐すると判断した場合(ステップS802 YES)、命令制御部310は、シーケンシャルアクセスがなかったと判断する。この場合、命令制御部310は、処理をステップS803に移行し、RAMクロック制御部432aにシーケンシャルアクセスではない旨を通知する(ステップS803)。例えば、命令制御部310は、RAMクロック制御部432aにシーケンシャルアクセス通知信号「0」を出力する。
【0151】
また、分岐しないと判断した場合(ステップS802 NO)、命令制御部310は、シーケンシャルアクセスがあったと判断する。この場合、命令制御部310は、処理をステップS804に移行し、RAMクロック制御部432aにシーケンシャルアクセスである旨を通知する(ステップS804)。例えば、命令制御部310は、RAMクロック制御部432aにシーケンシャルアクセス通知信号「1」を出力する。
【0152】
なお、分岐予測には、過去に実行した分岐命令の命令アドレスとその分岐命令により分岐した分岐先アドレスを含む履歴情報を含むブランチヒストリを用いることができる。
例えば、命令アドレス460をプログラムカウンタから取得する毎に、取得した命令アドレス460がブランチヒストリに登録されているか否かをチェックする。そして、命令アドレス460がブランチヒストリに登録されている場合、命令制御部310は、分岐すると予測する。また、命令アドレス460がブランチヒストリに登録されていない場合、命令制御部310は、分岐しないと予測する。
【0153】
また、プログラム命令のうちサブルーチンのコール命令を実行する時に、リターン命令によるサブルーチンからの戻りアドレスを保持しておき、この戻りアドレスを分岐予測に用いてもよい。プログラム命令がリターン命令、かつ命令アドレス460が既に保持されている戻りアドレスの場合、命令制御部310は、分岐すると予測することができる。
【0154】
また、命令制御部310は、分岐予測の失敗を検出して後述する演算処理装置300のパイプライン処理にすでに流れているリクエストをキャンセルした後に再度発行される最初の命令フェッチ要求についても、シーケンシャルアクセスでないと判断できる(ステップS802 YES)。この場合、命令制御部310は、要求される命令アドレスにかかわらずシーケンシャルアクセスでないと判断する。
【0155】
また、命令制御部310は、トラップ処理回復後に発行される最初の命令フェッチ要求についても、シーケンシャルアクセスでないと判断できる(ステップS802YES)。
以上の処理が終了すると、命令制御部310は、処理を終了する(ステップS805)。
【0156】
図9は、本実施例に係るデータRAM404のクロック制御を示すフローチャートである。
RAMクロック制御部432aは、命令制御部310から命令フェッチ要求を受信すると(ステップS901)、処理をステップS902に移行する。すると、RAMクロック制御部432aは、RAMクロック制御部432aは、TAGマッチ情報記憶部432bからTAGマッチ情報を取得する(ステップS902)。そして、RAMクロック制御部432aは、TAGマッチ情報から、第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチが同一WAY内の同一のキャッシュラインに対するシーケンシャルアクセスであるか否かを判別する(ステップS903)。
【0157】
第1乃至第3のパイプラインで実行中の命令フェッチのうち少なくとも1つの命令フェッチが同一WAY内の同一のキャッシュラインに対するシーケンシャルアクセスであると判断すると(ステップS903 YES)、RAMクロック制御部432aは、処理をステップS904に移行する。
【0158】
ステップS904において、RAMクロック制御部432aは、取得したTAGマッチ情報から、TAGマッチしたWAYがWAY0か否かを判別する。
WAY0でTAGマッチしたと判断した場合(ステップS904 YES)、RAMクロック制御部432aは、処理をステップS905に移行する。この場合、RAMクロック制御部432aは、データRAM(WAY0)440−0にクロックが供給されているか否かを判別する(ステップS905)。
【0159】
データRAM(WAY0)440−0のクロックが供給されている場合(ステップS905 YES)、RAMクロック制御部432aは、処理をステップS906に移行する。この場合、RAMクロック制御部432aは、データRAM(WAY0)440−0へクロックを供給し、データRAM(WAY1)440−1へのクロックを停止する(ステップS906)。例えば、RAMクロック制御部432aは、クロックバッファ441−0に対してRAM(WAY0)クロック制御信号「1」を出力し、クロックバッファ441−1に対してRAM(WAY1)クロック制御信号「0」を出力する。 データRAM(WAY0)440−0へのクロックが停止している場合(ステップS905 NO)、RAMクロック制御部432aは、処理をステップS907に移行する。この場合、RAMクロック制御部432aは、プライオリティ制御部432に対してアボート要求を通知する(ステップS907)。
【0160】
また、ステップS904において、WAY1でTAGマッチしたと判断した場合(ステップS904 NO)、RAMクロック制御部432aは、処理をステップS908に移行する。この場合、RAMクロック制御部432aは、データRAM(WAY1)440−1にクロックが供給されているか否かを判別する(ステップS908)。
【0161】
データRAM(WAY1)440−1にクロックが供給されている場合(ステップS908 YES)、RAMクロック制御部432aは、処理をステップS909に移行する。この場合、RAMクロック制御部432aは、データRAM(WAY1)440−1へクロックを供給し、データRAM(WAY0)440−0へのクロックを停止にする(ステップS909)。例えば、RAMクロック制御部432aは、クロックバッファ441−0に対してRAM(WAY0)クロック制御信号「0」を出力し、クロックバッファ441−1に対してRAM(WAY1)クロック制御信号「1」を出力する。
【0162】
データRAM(WAY1)440−1へのクロックが停止している場合(ステップS908 NO)、RAMクロック制御部432aは、処理をステップS907に移行する。この場合、RAMクロック制御部432aは、プライオリティ制御部432に対してアボート要求を通知する(ステップS907)。
【0163】
一方、ステップS903において、第1乃至第3のパイプラインで実行中の命令フェッチが同一WAY内の同一のキャッシュラインに対するシーケンシャルアクセスでないと判断すると(ステップS903 NO)、RAMクロック制御部432aは、処理をステップS910に移行する。この場合、RAMクロック制御部432aは、データRAM334に備わる全てのWAY、本実施例ではデータRAM(WAY0)440−0およびデータRAM(WAY1)440−1にクロックの供給を行なう(ステップS910)。例えば、RAMクロック制御部432aは、クロックバッファ441−0およびに対してRAM(WAY0)クロック制御信号「1」を出力し、クロックバッファ441−1に対してRAM(WAY1)クロック制御信号「1」を出力する。
【0164】
ステップS911において、RAMクロック制御部432aは、TAG(WAY0)マッチ検出部430−0およびTAG(WAY1)マッチ検出部430−1の出力からTAGマッチの有無を判別する。
【0165】
TAGマッチを検出しない場合(ステップS911 NO)、RAMクロック制御部432aは、処理をステップS912に移行する。この場合、L1キャッシュ部330は、プライオリティ制御部432を介してL2キャッシュ部330にデータ要求を行なう(ステップS912)。
【0166】
TAGマッチを検出した場合(ステップS911 YES)、RAMクロック制御部432aは、処理をステップS913に移行する。この場合、RAMクロック制御部432aは、TAGマッチ情報を更新する(ステップS913)。
【0167】
以上の処理が完了すると、L1キャッシュ部330は、データRAM404のクロック制御処理を終了する。
その後、TAGマッチ処理部403は、TAGマッチを検出したWAY、本実施例ではデータRAM(WAY0)440−0またはデータRAM(WAY1)440−1のいずれか一方を選択してデータを取得する。
【0168】
図10は、本実施例に係る命令フェッチのパイプライン処理を説明する図である。
演算処理装置300において、プログラム命令は、大きく分けると、「命令フェッチ」、「デコード」、「実行」および「完了」の4つの工程に分割して処理される。この処理を「演算処理装置300のパイプライン処理」という。
【0169】
例えば、「命令フェッチ」は、L1キャッシュ部400などからプログラム命令を取得する工程である。「デコード」は、取得したプログラム命令を演算処理装置300にとって意味のある形式に分割する工程である。「実行」は、デコードされたプログラム命令にしたがって、演算処理等を実行する工程である。「完了」は、全ての処理が完了したかを判定し、実行結果をL1キャッシュ部400などに格納する工程である。
【0170】
命令フェッチ工程において、命令制御部310は、図7で説明した分岐予測およびリクエスト要求(命令フェッチ要求)を行なう。また、命令制御部310から命令フェッチ要求を受けると、L1キャッシュ部400は、「リクエスト選択」、「TAG検索」、「TAGマッチ処理」、「データ転送」および「完了」の工程に分割して命令フェッチを行なう。この処理を「命令フェッチのパイプライン処理」という。
【0171】
「リクエスト選択」は、命令制御部310から受信する命令フェッチ要求を選択する工程である。「TAG検索」は、TAG検索を行なう工程である。「TAGマッチ処理」は、TAGマッチ処理を行なう工程である。「データ転送」は、TAGマッチしたWAYからデータを取得して命令制御部310に転送する工程である。「完了」は、命令フェッチが完了したか否かを判定する工程である。
【0172】
図11および図12は、本実施例に係る命令フェッチのパイプライン処理を具体的に説明する図である。
図11は、プログラム命令A、B、CおよびDが、データRAM(WAY0)440−0のライン1上に連続して格納され、プログラム命令EおよびFが、データRAM(WAY1)440−1のライン3上に連続して格納されている場合を示している。
【0173】
簡単のために、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1の1ラインのデータ幅は32Byteとする。また、各プログラム命令A、B、C、D、EおよびFは、全て8Byte(64bit)のデータ幅を有するものとする。
【0174】
以下、図11に示したプログラム命令をA、B、C、D、EおよびFの順に読み出す命令フェッチのパイプライン処理を図12に示して説明する。なお、図12に示す1、2、3、4および5は、それぞれ図10に示した「リクエスト選択」、「TAG検索」、「TAGマッチ処理」、「データ転送」および「完了」の工程を示している。
【0175】
また、命令フェッチのパイプライン処理におけるデータRAM(WAY0)440−0へのRAM(WAY0)クロック制御信号とデータRAM(WAY1)440−1へのRAM(WAY1)クロック制御信号も図12に示す。なお、RAM(WAY0)クロック制御信号が「0」の時に、データRAM(WAY0)440−0内のクロックが停止し、「1」の時に、データRAM(WAY0)440−0内にクロックが供給されるものとする。RAM(WAY1)クロック制御信号についてもRAM(WAY0)クロック制御信号と同様とする。
【0176】
(1)命令制御部310からリクエストAを受けると、L1キャッシュ部400は、プログラム命令Aに対する命令フェッチの実行を開始する。
リクエストAに後続のリクエストB、CおよびDは、図11に示したように、同一ライン上に連続して格納されているプログラム命令B、CおよびDに対する命令フェッチ要求である。この場合、命令制御部310は、図8に示した処理によって、リクエストAに後続のリクエストB、CおよびDをシーケンシャルアクセスと判断する。したがって、リクエストAに後続するリクエストがシーケンシャルアクセスを実行している間、L1キャッシュ部400は、TAGマッチを検出したWAY0以外のWAYであるRAM(WAY1)クロック制御信号「0」を出力する。その結果、TAGマッチを検出したWAY、すなわちデータRAM(WAY0)440−0にだけクロックが供給され、その他のWAY、すなわちデータRAM(WAY1)440−1へのクロックは停止する。
【0177】
(2)しかし、リクエストDの後に受信したリクエストEは、図11に示したように、プログラム命令Dと同一ライン上に連続して記憶されるものではなく、データRAM(WAY1)440−1のライン3上の先頭位置に格納されている。この場合、L1キャッシュ部400は、図8に示した処理により、リクエストEをシーケンシャルアクセスでないと判断する。すると、図9に示したステップS910の処理によって、L1キャッシュ部400は、RAM(WAY0)クロック制御信号およびRAM(WAY1)クロック制御信号を「1」にする。これにより、全てのWAY、本実施例ではデータRAM(WAY0)440−0およびデータRAM(WAY1)440−1にクロックが供給される。
【0178】
(3)リクエストEに後続のリクエストFは、図11に示したように、プログラム命令Eと同一ライン上に連続して格納されているプログラム命令Fに対する命令フェッチ要求である。この場合、命令制御部310は、図8に示した処理により、リクエストFをシーケンシャルアクセスと判断する。
【0179】
この場合、L1キャッシュ部400は、TAGマッチを検出したWAY1以外のWAYのRAM(WAY0)クロック制御信号を「0」にする。その結果、TAGマッチを検出したWAY、すなわちデータRAM(WAY1)440−1にだけクロックが供給され、その他のWAY、すなわちデータRAM(WAY0)440−0へのクロックは停止する。
【0180】
なお、図11に示す構成は1つの例示であって、プログラム命令を8Byteに限定するものではなく、1ラインを32Byteに限定するものでもない。同様に、データRAM(WAY0)440−0およびデータRAM(WAY1)440−1をそれぞれ6ラインであることに限定するものでもない。
【0181】
以上の説明では、データRAM334は、2WAY構成を有する場合について説明したが、2WAY以上の構成を有する場合であってもよい。データRAM334がnWAY構成を有する場合のL1キャッシュ部の構成例を図13に示す。
【0182】
図13に示すL1キャッシュ部1300は、TAG検索部1301と、アドレス変換部1302と、TAGマッチ処理部1303と、データRAM1304と、を備える。TAG検索部1301、アドレス変換部1302、TAGマッチ処理部1303およびデータRAM1304は、図3に示したTAG検索部331、アドレス変換部332、TAGマッチ処理部333およびデータRAM334にそれぞれ対応する。
【0183】
TAG検索部1301は、TAG(WAY0)検索部1310−0、TAG(WAY1)検索部1310−1、・・・およびTAG(WAYn)検索部1310−nを備える。
【0184】
TAGマッチ処理部1303は、TAG(WAY0)マッチ検出部1330−0、TAG(WAY1)マッチ検出部1330−1、・・・およびTAG(WAYn)マッチ検出部1330−nを備える。さらに、TAGマッチ処理部1303は、WAYセレクト部1331と、プライオリティ制御部1332と、を備える。プライオリティ制御部1332は、RAMクロック制御部1332aおよびTAGマッチ情報記憶部1332bを備える。
【0185】
データRAM1304は、WAY0のデータRAM(WAY0)1340−0、WAY1のデータRAM(WAY1)1340−1、・・・およびWAYnのデータRAM(WAYn)1340−nを備える。さらに、データRAM1304は、WAY毎に、クロックバッファ1341−0、クロックバッファ1341−1、・・・およびクロックバッファ1341−nを備える。
【0186】
以上の構成において、命令制御部310は、プログラム命令の実行を開始すると、必要に応じてL1キャッシュ部1300内のRAMクロック制御部1332aに対して命令フェッチ要求を行なう。命令フェッチ要求を行なう場合、命令制御部310は、RAMクロック制御部1332aに命令フェッチ要求信号「1」を出力する。また、命令フェッチ要求を行なわない場合、命令制御部310は、RAMクロック制御部1332aに命令フェッチ要求信号「0」を出力する。
【0187】
同時に、命令制御部310は、その命令フェッチ要求とともに、所望の命令が格納されている命令アドレス1350をL1キャッシュ部1300に通知する。命令アドレス1350は、アドレス変換部1302に出力される。命令アドレス1350に含まれるインデックスは、TAG(WAY0)検索部1310−0、TAG(WAY1)検索部1310−1、・・・およびTAG(WAYn)検索部1310−nに出力される。また、命令アドレス1350に含まれるインデックスは、データRAM(WAY0)1340−0、データRAM(WAY1)1340−1、・・・およびデータRAM(WAYn)1340−nにも出力される。
【0188】
また、命令制御部310は、L1キャッシュ部1300に出力した命令フェッチ要求がシーケンシャルアクセスか否かを判別し、その判別結果をL1キャッシュ部1300内のRAMクロック制御部1332aに通知する。
【0189】
TAG(WAY0)検索部1310−0は、命令制御部310からの命令フェッチ要求に応じて、その命令フェッチ要求とともに受ける命令アドレス1350に含まれるインデックスと一致するTAGをデータRAM(WAY0)1340−0についてのインデックステーブルから検索する。そして、TAG(WAY0)検索部1310−0は、検索結果をTAG(WAY0)マッチ検出部1330−0に出力する。
【0190】
TAG(WAY1)検索部1310−1、TAG(WAY2)検索部1310−2、・・・およびTAG(WAYn)検索部1310−nも、TAG(WAY0)検索部1310−0と同様に動作する。
【0191】
例えば、TAG(WAYn)検索部1310−nは、命令制御部310からの命令フェッチ要求に応じて、その命令フェッチ要求とともに受ける命令アドレス1350に含まれるインデックスと一致するTAGをデータRAM(WAYn)1340−nについてのインデックステーブルから検索する。そして、TAG(WAYn)検索部1310−nは、検索結果をTAG(WAYn)マッチ検出部1330−nに出力する。このときTAG(WAYn)検索部1310−nが出力するTAGを「TAG(WAYn)」という。
【0192】
アドレス変換部1302は、命令制御部310からの命令フェッチ要求を受けると、TLB等を参照し、命令アドレス1350を物理アドレスに変換する。そして、アドレス変換部332は、物理アドレスを、TAG(WAY0)マッチ検出部1330−0、TAG(WAY1)マッチ検出部1330−1、・・・およびTAG(WAYn)マッチ検出部1330−nに出力する。
【0193】
TAG(WAY0)マッチ検出部1330−0は、TAG(WAY0)検索部1310−0が出力するTAGと、アドレス変換部1302が出力する物理アドレスと、を比較する。そして、TAG(WAY0)マッチ検出部1330−0は、比較結果を、WAYセレクト部1331とRAMクロック制御部1332aとに出力する。
【0194】
TAG(WAY0)検索部1310−0が出力するTAGとアドレス変換部1302が出力する物理アドレスとが一致する場合、TAG(WAY0)マッチ検出部1330−0は、RAMクロック制御部1332aにTAG(WAY0)マッチ信号「1」を出力する。TAG(WAY0)検索部1310−0が出力するTAGとアドレス変換部1302が出力する物理アドレスとが一致しない場合、TAG(WAY0)マッチ検出部1330−0は、RAMクロック制御部1332aにTAG(WAY0)マッチ信号「0」を出力する。
【0195】
TAG(WAY1)マッチ検出部1330−1、TAG(WAY2)マッチ検出部1330−2、・・・およびTAG(WAYn)マッチ検出部1330−nも、TAG(WAY0)マッチ検出部1330−0と同様の動作を行なう。
【0196】
例えば、TAG(WAYn)マッチ検出部1330−nは、TAG(WAYn)検索部1310−nが出力するTAGと、アドレス変換部1302が出力する物理アドレスと、を比較する。そして、TAG(WAYn)マッチ検出部1330−nは、比較結果を、WAYセレクト部1331とRAMクロック制御部1332aとに出力する。
【0197】
TAG(WAYn)検索部1310−nが出力するTAGとアドレス変換部1302が出力する物理アドレスとが一致する場合、TAG(WAYn)マッチ検出部1330−nは、RAMクロック制御部1332aにTAG(WAYn)マッチ信号「1」を出力する。TAG(WAYn)検索部1310−nが出力するTAGとアドレス変換部1302が出力する物理アドレスとが一致しない場合、TAG(WAYn)マッチ検出部1330−nは、RAMクロック制御部1332aにTAG(WAYn)マッチ信号「0」を出力する。
【0198】
WAYセレクト部1331は、TAG(WAY0)マッチ検出部1330−0、・・・およびTAG(WAYn)マッチ検出部1330−nが出力するTAGマッチ信号にしたがって、データRAM1304内のWAYを選択する。そして、WAYセレクト部1331は、選択したWAYのデータRAM、すなわちデータRAM(WAY0)1340−0、・・・またはデータRAM(WAYn)1340−nのうちいずれかから出力されるデータを命令制御部310などに出力する。
【0199】
プライオリティ制御部1332は、RAMクロック制御部1332aからアボート要求を受けると、アボート処理を実行する。プライオリティ制御部1332は、上記アボート処理の他に、命令制御部310からの命令フェッチ要求やL1キャッシュ部1300でキャッシュミスした命令フェッチ要求の再投入を行なうなどリクエストの調停を行なう。
【0200】
RAMクロック制御部1332aは、命令フェッチ要求により要求される命令アドレスが、データRAM(WAY0)1340−0、・・・またはデータRAM(WAYn)1340−nにおけるキャッシュラインの先頭アドレスか否かを判別する。
【0201】
そして、命令フェッチ要求により要求される命令アドレスがキャッシュラインの先頭アドレスでないと判断すると、RAMクロック制御部1332aは、キャッシュライン非先頭アドレス信号「1」を生成する。また、命令フェッチ要求により要求される命令アドレスがキャッシュラインの先頭アドレスであると判断すると、RAMクロック制御部1332aは、キャッシュライン非先頭アドレス信号「0」を生成する。
【0202】
そして、RAMクロック制御部1332aは、命令制御部310からの命令フェッチ要求信号およびシーケンシャルアクセス通知信号を、命令フェッチのパイプライン毎にTAGマッチ情報記憶部1332bに記憶する。
【0203】
さらに、RAMクロック制御部1332aは、RAMクロック制御部1332aが生成したキャッシュライン非先頭アドレス信号を、命令フェッチのパイプライン毎にTAGマッチ情報記憶部1332bに記憶する。
【0204】
さらに、RAMクロック制御部1332aは、TAG(WAY0)マッチ検出部1330−0からのTAG(WAY0)マッチ信号と、・・・、TAG(WAYn)マッチ検出部1330−nからのTAG(WAYn)マッチ信号と、を命令フェッチのパイプライン毎にTAGマッチ情報記憶部1332bに記憶する。
【0205】
下記表2は、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報を示している。
【表2】
【0206】
RAMクロック制御部1332aは、TAGマッチ情報記憶部1332bに記憶したTAGマッチ情報から、現在処理中の命令フェッチがシーケンシャルアクセスか否かを判別する。現在処理中の命令フェッチがシーケンシャルアクセスの場合、RAMクロック制御部1332aは、クロックバッファ1341−0、1341−1、・・・および1341−nに対してクロックの供給・停止を制御するRAMクロック制御信号を出力する。
【0207】
なお、RAMクロック制御部1332aには、データRAM(WAY0)1340−0・・・およびデータRAM(WAYn)1340−nのクロック状態を監視する機能を含めることができる。
【0208】
例えば、データRAM1304内のTAGマッチしたWAYのクロックが停止していることを検出すると、プライオリティ制御部1332にアボート要求を行なう機能をRAMクロック制御部1332aに含めることができる。
【0209】
データRAM1304は、データRAM(WAY0)1340−0、データRAM(WAY1)1340−1、・・・およびデータRAM(WAYn)1340−nを備えるnWAY構成のデータRAMである。図13に示す例では、データRAM(WAY0)1340−0をWAY0、データRAM(WAY1)1340−1をWAY1、・・・、データRAM(WAYn)1340−nをWAYnとする。
【0210】
データRAM13404は、クロックバッファ1341−0、1341−1、・・・および1341−nを備える。
クロックバッファ1341−0、1341−1、・・・、1341−nは、それぞれデータRAM(WAY0)1340−0、データRAM(WAY1)1340−1、・・・、データRAM(WAYn)1340−nへのクロックの供給・停止を制御する。
【0211】
なお、図13に示すデータRAM1304は、クロックバッファ1341−0、1341−1、・・・および1341−nをデータRAM1304内部に備える場合を示したが、この構成に限定する趣旨ではない。クロックバッファ1341−0、1341−1、・・・および1341−nは、データRAM1304の外部に配置されていてもよいのは当然である。
【0212】
各クロックバッファ1341−0、1341−1、・・・および1341−nは、クロック生成回路1350からクロックを受信する。各クロックバッファ1341−0、1341−1、・・・、1341−nは、RAMクロック制御信号に応じて、それぞれデータRAM(WAY0)1340−0、データRAM(WAY1)1340−1、・・・、データRAM(WAYn)1340−nにクロックを供給する。
【0213】
例えば、クロックバッファ1341−0は、RAM(WAY0)クロック制御信号が「0」の間、データRAM(WAY0)1340−0にクロックを供給する。また、クロックバッファ1341−0は、RAM(WAY0)クロック制御信号が「1」の間、データRAM(WAY0)1340−0内部へのクロックの供給を停止する。クロックバッファ1341−1、1341−2・・・、クロックバッファ1341−nは、データRAM(WAY0)1340−0と同様に動作する。
【0214】
クロック生成回路1350は、一定周期のクロックを生成する回路である。クロック生成回路1350は、生成したクロックをクロックバッファ1341−0、1341−1、・・・および1341−nに出力する。
【0215】
なお、以上に示したTAG(WAY0)マッチ検出部1330−0、1330−1、・・・および1330−nは、図5に示した具体的な構成で実現することができる。
【0216】
図14は、RAMクロック制御部1332aの主要部の具体的な構成例を示す図である。
RAMクロック制御部1332aは、論理和回路1400−0、1401−0、・・・および140n−0と、論理和回路1400−1、1401−1、・・・および140n−1と、論理和回路1400−2、1401−2、・・・および140n−2と、を備える。
【0217】
また、RAMクロック制御部1332aは、論理積回路1410−0、1411−0、・・・および141n−0と、論理積回路1410−1、1411−1、・・・および141n−1と、論理積回路1410−2、1411−2、・・・および141n−2と、を備える。
【0218】
また、RAMクロック制御部1332aは、論理和回路1420、1421、・・・および142nを備える。また、RAMクロック制御部1332aは、反転回路1430、1431、・・・および143nを備える。また、RAMクロック制御部1332aは、論理積回路1440、1441、・・・および144nを備える。
【0219】
なお、図14では、論理積回路を「AND」、論理和回路を「OR」と略記する。
以下、RAM(WAYn)クロック制御信号の生成について説明する。
RAM(WAYn)クロック制御信号を生成する場合、論理和回路140n−0、140n−1および140n−2と、論理積回路141n−0、141n−1および141n−2と、論理和回路142nと、反転回路143nと、論理積回路144nを使用する。
【0220】
論理和回路140n−0の出力端は、論理積回路141n−0に接続する。同様に、論理和回路140n−1の出力端は、論理積回路141n−1に接続し、論理和回路140n−2の出力端は、論理積回路141n−2に接続する。
【0221】
また、論理積回路141n−0、141n−1および141n−2の出力端は、論理和回路142nの入力端に接続する。論理和回路142nの出力端は、反転回路143nの入力端に接続する。反転回路143nの出力端は、論理積回路144nの入力端に接続する。論理積回路144nの入力端は、反転回路143nの出力端の他に、命令制御部310の出力端とも接続し、命令フェッチ要求信号が入力される。論理積回路144nの出力端は、後述のクロックバッファ1341−n、すなわち論理積回路145nの入力端に接続する。
【0222】
以上の構成において、論理和回路140n−0には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第1のパイプラインについての、TAG(WAYn)マッチ以外のTAGマッチが入力される。例えば、論理和回路140n−0には、表2に示したTAG(WAYn)マッチd1n以外のTAGマッチd10、・・・およびd1(n−1)が入力される。
【0223】
そして、論理和回路140n−0は、TAG(WAYn)マッチd10、・・・またはd1(n−1)が「1」の場合、すなわち、第1のパイプラインにおいてWAYn以外のWAYにTAGマッチを検出した場合に、「1」を出力する。また、論理和回路140n−0は、TAG(WAYn)マッチd10、・・・およびd1(n−1)が全て「0」である場合、すなわち、第1のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合に、「0」を出力する。
【0224】
論理積回路141n−0には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第1のパイプラインについての命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1が入力される。さらに、論理積回路141n−0には、論理和回路140n−0の出力が入力される。
【0225】
そして、論理積回路141n−0は、命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1および論理和回路140n−0の出力が全て「1」の場合に、「1」を出力する。
【0226】
例えば、第1のパイプラインにおける命令フェッチがWAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路141n−0は「1」を出力する。
【0227】
また、論理積回路141n−0は、命令フェッチ要求a1、シーケンシャルアクセス通知b1、キャッシュライン非先頭アドレスc1または論理和回路140n−0の出力の少なくとも1つが「0」である場合に、「0」を出力する。
【0228】
例えば、命令フェッチ要求a1が「1」、かつ、シーケンシャルアクセス通知b1が「0」の場合、すなわち、第1のパイプラインにおける命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路141n−0は「0」を出力する。また、論理和回路140n−0の出力が「0」の場合、すなわち、第1のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合などにも、論理積回路141n−0は「0」を出力する。
【0229】
論理和回路140n−1には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第2のパイプラインについての、TAG(WAYn)マッチ以外のTAGマッチが入力される。例えば、論理和回路140n−1には、表2に示したTAG(WAYn)マッチd2n以外のTAGマッチd20、・・・およびd2(n−1)が入力される。
【0230】
そして、論理和回路140n−1は、TAG(WAYn)マッチd20、・・・またはd2(n−1)が「1」の場合、すなわち、第2のパイプラインにおいてWAYn以外のWAYにTAGマッチを検出した場合に、「1」を出力する。また、論理和回路140n−1は、TAG(WAYn)マッチd20、・・・およびd2(n−1)が全て「0」である場合、すなわち、第2のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合に、「0」を出力する。
【0231】
論理積回路141n−1には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第2のパイプラインについての命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2が入力される。さらに、論理積回路141n−1には、論理和回路140n−1の出力が入力される。
【0232】
そして、論理積回路141n−1は、命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2および論理和回路140n−1の出力が全て「1」の場合に、「1」を出力する。
【0233】
例えば、第2のパイプラインにおける命令フェッチがWAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路141n−1は「1」を出力する。
【0234】
また、論理積回路141n−1は、命令フェッチ要求a2、シーケンシャルアクセス通知b2、キャッシュライン非先頭アドレスc2または論理和回路140n−1の出力の少なくとも1つが「0」である場合に、「0」を出力する。
【0235】
例えば、命令フェッチ要求a2が「1」、かつ、シーケンシャルアクセス通知b2が「0」の場合、すなわち、第2のパイプラインにおける命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路141n−1は「0」を出力する。また、論理和回路140n−1の出力が「0」の場合、すなわち、第2のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合などにも、論理積回路141n−1は「0」を出力する。
【0236】
論理和回路140n−2には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第3のパイプラインについての、TAG(WAYn)マッチ以外のTAGマッチが入力される。例えば、論理和回路140n−2には、表2に示したTAG(WAYn)マッチd3n以外のTAGマッチd30、・・・およびd3(n−1)が入力される。
【0237】
そして、論理和回路140n−2は、TAG(WAYn)マッチd30、・・・またはd3(n−1)が「1」の場合、すなわち、第3のパイプラインにおいてWAYn以外のWAYにTAGマッチを検出した場合に、「1」を出力する。また、論理和回路140n−2は、TAG(WAYn)マッチd30、・・・およびd3(n−1)が全て「0」である場合、すなわち、第3のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合に、「0」を出力する。
【0238】
論理積回路141n−2には、TAGマッチ情報記憶部1332bに記憶されるTAGマッチ情報のうち、第3のパイプラインについての命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3が入力される。さらに、論理積回路141n−2には、論理和回路140n−2の出力が入力される。
【0239】
そして、論理積回路141n−2は、命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3および論理和回路140n−2の出力が全て「1」の場合に、「1」を出力する。
【0240】
例えば、第3のパイプラインにおける命令フェッチがWAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理積回路141n−2は「1」を出力する。
【0241】
また、論理積回路141n−2は、命令フェッチ要求a3、シーケンシャルアクセス通知b3、キャッシュライン非先頭アドレスc3または論理和回路140n−2の出力の少なくとも1つが「0」である場合に、「0」を出力する。
【0242】
例えば、命令フェッチ要求a3が「1」、かつ、シーケンシャルアクセス通知b3が「0」の場合、すなわち、第3のパイプラインにおけr命令フェッチ要求がシーケンシャルアクセスでない場合に、論理積回路141n−2は「0」を出力する。また、論理和回路140n−2の出力が「0」の場合、すなわち、第3のパイプラインにおいてWAYn以外のWAYでTAGマッチを検出しない場合などにも、論理積回路141n−2は「0」を出力する。
【0243】
論理和回路142nは、論理積回路141n−0、141n−1および141n−2の出力のうち少なくとも1つが「1」である場合に「1」を出力する。第1乃至第3にパイプラインのける命令フェッチのうち少なくとも1つの命令フェッチがWAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、論理和回路142nは「1」を出力する。
【0244】
また、論理和回路142nは、論理積回路141n−0、141n−1および141n−2が全て「0」を出力する場合に、「0」を出力する。例えば、第1乃至第3のいずれのパイプラインにおいても、WAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスが行なわれる命令フェッチが実行されていない場合などに、論理和回路142nは「0」を出力する。
【0245】
反転回路143nは、論理和回路142nが出力する信号を反転し、反転した信号を論理積回路144nに出力する。論理和回路142nが「0」を出力すれば、反転回路143nは、論理積回路144nに「1」を出力する。そして、論理和回路142nが「1」を出力すれば、反転回路143nは、論理積回路144nに「0」を出力する。
【0246】
論理積回路144nは、反転回路143nが出力する信号と、命令フェッチ要求a1と、の論理積をRAM(WAYn)クロック制御信号としてクロックバッファ1341−nに出力する。
【0247】
すなわち、論理積回路144nは、第1乃至第3のパイプラインにおいて少なくとも1つの命令フェッチがWAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスである場合に、RAM(WAYn)クロック制御信号「0」を出力する。
【0248】
また、論理積回路144nは、第1乃至第3のパイプラインで、WAYn以外のWAY内の同一のキャッシュラインに対するシーケンシャルアクセスを行なう命令フェッチが実行されていない場合などに、RAM(WAYn)クロック制御信号「1」を出力する。
【0249】
なお、命令制御部310およびL1キャッシュ部1300の具体的な処理は、図7〜図9で説明した通りである。だたし、図9のステップS904〜S907は、以下のように動作する必要がある。この場合、ステップS908〜S909の処理は不要となる。
【0250】
ステップS904において、RAMクロック制御部1332aは、ステップS903で取得したTAGマッチ情報から、TAGマッチしたWAYを判別する。
ステップS905において、RAMクロック制御部1332aは、ステップS904でTAGマッチと判定したWAYにクロックが供給されているか否かを判別する。
【0251】
クロックが供給されている場合(ステップS905 YES)、RAMクロック制御部1332aは、処理をステップS906に移行する。この場合、RAMクロック制御部1332aは、ステップS904でTAGマッチと判定したWAY以外のWAYに対してクロックを停止するRAMクロック制御信号を出力する(ステップS906)。
【0252】
クロックが停止している場合(ステップS905 NO)、RAMクロック制御部1332aは、処理をステップS907に移行する。この場合、RAMクロック制御部1332aは、プライオリティ制御部1332に対してアボート要求を通知する(ステップS907)。
【0253】
以上に説明した演算処理装置300の構成において、例えば、データRAM404やデータRAM1304などは、「記憶部」の一例として挙げられる。
データRAM(WAY0)440−0およびデータRAM(WAY1)440−1や、データRAM(WAY0)1340−0、・・・およびデータRAM(WAYn)1340−nなどは、「個別記憶部」の一例として挙げられる。
【0254】
TAG検索部401、アドレス変換部402およびTAGマッチ処理部403を含むユニットや、TAG検索部1301、アドレス変換部1302、TAGマッチ処理部1303を含むユニットなどは、「個別記憶部特定部」の一例として挙げられる。
【0255】
WAYセレクト部431やWAYセレクト部1331などは、「データ出力部」の一例として挙げられる。
クロックバッファ441−0およびクロックバッファ441−1や、クロックバッファ1341−0、1341−1、・・・および1341−nなどは、「クロック供給部」の一例として挙げられる。
【0256】
RAMクロック制御部432aやRAMクロック制御部1332aなどは、「クロック制御部」の一例として挙げられる。
【0257】
以上の構成において、RAMクロック制御部432a(RAMクロック制御部1332a)は、シーケンシャルアクセスであることを検出すると、TAGマッチを検出した第1のWAY以外のWAYに対してクロックを停止するRAMクロック制御信号を出力する。
【0258】
その結果、L1キャッシュ部330にたいしてシーケンシャルアクセスが行なわれている間、第1のWAY以外のWAYのクロックが停止するので、データRAM404(データRAM1304)の無駄な動作を抑えることができる。そして、データRAM404(データRAM1304)の消費電力を低く抑えることが可能となる。また、L1キャッシュ部400(L1キャッシュ部1300)の消費電力を低く抑えることが可能となる。
【0259】
RAMクロック制御部432a(RAMクロック制御部1332a)は、データRAM404(データRAM1304)に含まれるWAYのクロック状態を監視する。そして、TAGマッチ情報に示される第1のWAYのクロックが停止していることを検出する。すると、RAMクロック制御部432a(RAMクロック制御部1332a)は、プライオリティ制御部432(プライオリティ制御部1332)に対してアボート要求を行なう。そして、プライオリティ制御部432(プライオリティ制御部1332)は、実行中の処理を中止してプログラム命令の実行を正しく完結した時の状態から再開する。
【0260】
その結果、L1キャッシュ部400(L1キャッシュ部1300)は、何らかの障害により、TAGマッチ情報に示される第1のWAYのクロックが停止している場合であっても、演算処理装置300に正常に演算を実行させることが可能となる。
【0261】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御装置において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を備える制御装置。
(付記2)
前記クロック制御部は、前記個別記憶部特定部が特定した前記第1の個別記憶部が、クロックの供給が停止している状態であることを検出すると、実行中の処理を中止してプログラム命令の実行を正しく完結した時の状態から再開するように要求する、
ことを特徴とする付記1に記載の制御装置。
(付記3)
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求する間は、前記クロック供給部に対して、前記個別記憶部特定部が特定した前記第1の個別記憶部への前記クロックの供給を抑止させる、
ことを特徴とする付記1に記載の制御装置。
(付記4)
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータ以外のデータを前記命令制御部が要求すると、前記クロック供給部に対して、前記記憶部が有する全ての前記個別記憶部に前記クロックを供給させる、
ことを特徴とする付記1に記載の制御装置。
(付記5)
前記クロック制御部は、前記命令制御部がプログラムカウンタの示すアドレスに基づいて分岐予測を行なって分岐しないと予測した場合に、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求したと判断する、
ことを特徴とする付記1に記載の制御装置。
(付記6)
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部と、
前記記憶部が備える複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を備える記憶装置。
(付記7)
前記クロック制御部は、前記個別記憶部特定部が特定した前記第1の個別記憶部が、クロックの供給が停止している状態であることを検出すると、実行中の処理を中止してプログラム命令の実行を正しく完結した時の状態から再開するように要求する、
ことを特徴とする付記6に記載の記憶装置。
(付記8)
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求する間は、前記クロック供給部に対して、前記個別記憶部特定部が特定した前記第1の個別記憶部への前記クロックの供給を抑止させる、
ことを特徴とする付記6に記載の記憶装置。
(付記9)
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータ以外のデータを前記命令制御部が要求すると、前記クロック供給部に対して、前記記憶部が有する全ての前記個別記憶部に前記クロックを供給させる、
ことを特徴とする付記6に記載の記憶装置。
(付記10)
前記クロック制御部は、前記命令制御部がプログラムカウンタの示すアドレスに基づいて分岐予測を行なって分岐しない予測した場合に、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求したと判断する、
ことを特徴とする付記6に記載の記憶装置。
(付記11)
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御方法において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する工程と、
前記特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力する工程と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させる工程と、
を行なう制御方法。
(付記12)
データに対する命令を実行する命令制御部と、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部と、
複数の前記個別記憶部に対して、クロックをそれぞれ供給する複数のクロック供給部と、
前記記憶部が備える複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶される第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定する前記第1の個別記憶部から、前記第1のデータを前記命令制御部に出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶される第2のデータを、前記命令制御部が要求する場合、複数の前記クロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を有することを特徴とする演算処理装置。
【符号の説明】
【0262】
310 命令制御部
400 L1キャッシュ部
401 TAG検索部
410−0 TAG(WAY0)検索部
410−1 TAG(WAY1)検索部
402 アドレス変換部
403 TAGマッチ処理部
430−0 TAG(WAY0)検出部
430−1 TAG(WAY1)検出部
431 WAYセレクト部
432 プライオリティ制御部
432a RAMクロック制御部
432b TAGマッチ情報記憶部
404 データRAM
440−0 データRAM(WAY0)
440−1 データRAM(WAY1)
【特許請求の範囲】
【請求項1】
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御装置において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を備える制御装置。
【請求項2】
前記クロック制御部は、前記個別記憶部特定部が特定した前記第1の個別記憶部が、クロックの供給が停止している状態であることを検出すると、実行中の処理を中止してプログラム命令の実行を正しく完結した時の状態から再開するように要求する、
ことを特徴とする請求項1に記載の制御装置。
【請求項3】
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求する間は、前記クロック供給部に対して、前記個別記憶部特定部が特定した前記第1の個別記憶部への前記クロックの供給を抑止させる、
ことを特徴とする請求項1に記載の制御装置。
【請求項4】
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータ以外のデータを前記命令制御部が要求すると、前記クロック供給部に対して、前記記憶部が有する全ての前記個別記憶部に前記クロックを供給させる、
ことを特徴とする請求項1に記載の制御装置。
【請求項5】
前記クロック制御部は、前記命令制御部がプログラムカウンタの示すアドレスに基づいて分岐予測を行なって分岐しないと予測した場合に、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求したと判断する、
ことを特徴とする請求項1に記載の制御装置。
【請求項6】
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部と、
前記記憶部が備える複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を備える記憶装置。
【請求項7】
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御方法において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する工程と、
前記特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力する工程と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させる工程と、
を行なう制御方法。
【請求項8】
データに対する命令を実行する命令制御部と、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部と、
複数の前記個別記憶部に対して、クロックをそれぞれ供給する複数のクロック供給部と、
前記記憶部が備える複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶される第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定する前記第1の個別記憶部から、前記第1のデータを前記命令制御部に出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶される第2のデータを、前記命令制御部が要求する場合、複数の前記クロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を有することを特徴とする演算処理装置。
【請求項1】
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御装置において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を備える制御装置。
【請求項2】
前記クロック制御部は、前記個別記憶部特定部が特定した前記第1の個別記憶部が、クロックの供給が停止している状態であることを検出すると、実行中の処理を中止してプログラム命令の実行を正しく完結した時の状態から再開するように要求する、
ことを特徴とする請求項1に記載の制御装置。
【請求項3】
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求する間は、前記クロック供給部に対して、前記個別記憶部特定部が特定した前記第1の個別記憶部への前記クロックの供給を抑止させる、
ことを特徴とする請求項1に記載の制御装置。
【請求項4】
前記クロック制御部は、前記第1のデータと連続して記憶されている前記第2のデータ以外のデータを前記命令制御部が要求すると、前記クロック供給部に対して、前記記憶部が有する全ての前記個別記憶部に前記クロックを供給させる、
ことを特徴とする請求項1に記載の制御装置。
【請求項5】
前記クロック制御部は、前記命令制御部がプログラムカウンタの示すアドレスに基づいて分岐予測を行なって分岐しないと予測した場合に、前記第1のデータと連続して記憶されている前記第2のデータを前記命令制御部が要求したと判断する、
ことを特徴とする請求項1に記載の制御装置。
【請求項6】
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部と、
前記記憶部が備える複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を備える記憶装置。
【請求項7】
データに対する命令を実行する命令制御部の要求に応じて前記データを出力する記憶装置を制御する制御方法において、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部が有する複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶されている第1の個別記憶部を特定する工程と、
前記特定した前記第1の個別記憶部から、前記第1のデータを読み出して出力する工程と、
前記第1の個別記憶部に前記1のデータと連続して記憶されている第2のデータを、前記命令制御部が要求する場合、複数の前記個別記憶部に対してクロックをそれぞれ供給する複数のクロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させる工程と、
を行なう制御方法。
【請求項8】
データに対する命令を実行する命令制御部と、
前記データを保持するとともに、個別にクロックが供給される複数の個別記憶部を備える記憶部と、
複数の前記個別記憶部に対して、クロックをそれぞれ供給する複数のクロック供給部と、
前記記憶部が備える複数の前記個別記憶部のうち、前記命令制御部が要求する第1のデータが記憶される第1の個別記憶部を特定する個別記憶部特定部と、
前記個別記憶部特定部が特定する前記第1の個別記憶部から、前記第1のデータを前記命令制御部に出力するデータ出力部と、
前記第1の個別記憶部に前記1のデータと連続して記憶される第2のデータを、前記命令制御部が要求する場合、複数の前記クロック供給部のうち、前記第1の個別記憶部以外の個別記憶部にクロックを供給するクロック供給部に対して、前記クロックの供給を抑止させるクロック制御部と、
を有することを特徴とする演算処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図14】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図14】
【図12】
【図13】
【公開番号】特開2011−81564(P2011−81564A)
【公開日】平成23年4月21日(2011.4.21)
【国際特許分類】
【出願番号】特願2009−232747(P2009−232747)
【出願日】平成21年10月6日(2009.10.6)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成23年4月21日(2011.4.21)
【国際特許分類】
【出願日】平成21年10月6日(2009.10.6)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]