JP5142868B2 - キャッシュメモリ制御回路及びプロセッサ - Google Patents

キャッシュメモリ制御回路及びプロセッサ Download PDF

Info

Publication number
JP5142868B2
JP5142868B2 JP2008186304A JP2008186304A JP5142868B2 JP 5142868 B2 JP5142868 B2 JP 5142868B2 JP 2008186304 A JP2008186304 A JP 2008186304A JP 2008186304 A JP2008186304 A JP 2008186304A JP 5142868 B2 JP5142868 B2 JP 5142868B2
Authority
JP
Japan
Prior art keywords
data
output
mhz
cache memory
way
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008186304A
Other languages
English (en)
Other versions
JP2010026716A (ja
Inventor
俊雄 藤澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008186304A priority Critical patent/JP5142868B2/ja
Priority to US12/483,445 priority patent/US8312232B2/en
Publication of JP2010026716A publication Critical patent/JP2010026716A/ja
Application granted granted Critical
Publication of JP5142868B2 publication Critical patent/JP5142868B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Description

本発明は、キャッシュメモリ制御回路及びプロセッサに関し、特に、複数のウェイを有するキャッシュメモリのキャッシュメモリ制御回路及びプロセッサに関する。
従来より、プロセッサにおいて、主メモリからのデータの高速読み出しのために、キャッシュメモリが広く用いられている。キャッシュメモリは、中央処理装置(以下、CPUという)と主メモリの間に設けられる。
キャッシュメモリには、同じエントリアドレスのタグデータを複数記憶する、つまり、複数のウェイを有するものがある。そのようなキャッシュメモリでは、CPUからのアドレス中のエントリアドレスに基づいて、全てのウェイから同時にタグを読み出し、フレームアドレスとの比較を同時に行い、いずれかのタグが一致(ヒット)した場合には、ヒットしたウェイから読み出されたデータのうち、ワードアドレスで示されるワードをCPUへ出力する。
近年、プロセッサの省電力化のために、2つのアクセスモードを持つキャッシュメモリが提案されている(例えば、特許文献1参照)。その提案によれば、通常アクセスモードでは、全てのウェイに対してタグ比較を行い、唯一アクセスモードでは、選択されたウェイに対してのみ、タグ比較を行う。その結果、唯一アクセスモードでは、必要最小限のメモリ領域だけが動作することになるので、結果的に消費電力が削減される。
ところが、上記提案における唯一アクセスモードでは、使用されるキャッシュメモリ領域が限定されるため、同じソフトウェアを動作させても、通常アクセスモードに比べてキャッシュミスの頻度が上がる場合がある。そのような場合は、キャッシュリフィル動作が多く発生してしまうため、低消費電力化が十分に行われないことになる。
さらに、アクセスモードの切り換えが適切に行われないと、低消費電力化が十分に行われない恐れもある。
特開2002-236616号公報
そこで、本発明は、上述した問題に鑑み成されたものであり、通常アクセスモードと同等のキャッシュヒット性能を持ちつつ、可能な限りの低消費電力でキャッシュメモリを動作させることができるキャッシュメモリ制御回路及びプロセッサを提供することを目的とする。
本発明の一態様によれば、複数のウェイを所定の分割数で分割したキャッシュメモリの各ウェイあるいは2以上のウェイを、所定の順番で選択可能な選択部と、前記選択部により選択された各ウェイあるいは2以上のウェイについて、前記各ウェイにおけるキャッシュヒットを検出するキャッシュヒット検出部と、前記キャッシュヒットを検出すると、前記選択部における前記各ウェイあるいは2以上のウェイの選択を停止させる制御部と、前記キャッシュメモリからのリードデータを、一方が他方に対して所定の遅延量を有する2つのリードデータバスに伝播させた後にそれぞれの値を比較する比較部を有し、該比較部における前記2つのリードデータの一致あるいは不一致に応じて、前記所定の分割数を変更する分割数変更部と、を有するキャッシュメモリ制御回路を提供することができる。

本発明によれば、通常アクセスモードと同等のキャッシュヒット性能を持ちつつ、可能な限りの低消費電力でキャッシュメモリを動作させることができるキャッシュメモリ制御回路及びプロセッサを実現することができる。
以下、図面を参照して本発明の実施の形態を説明する。
(第1の実施の形態)
1.構成
まず図1に基づき、本実施の形態に係わるキャッシュメモリを含むプロセッサの構成を説明する。図1は、本実施の形態に係わるプロセッサの構成を示す構成図である。
図1において、プロセッサ1は、CPU11と、主メモリ12と、システムバス13とを含んで構成されている。CPU11は、CPUコア15と、キャッシュメモリ16と、周波数設定レジスタ17を含む。
CPU11は、主メモリ12に記憶された命令あるいはデータを、キャッシュメモリ制御回路を含むキャッシュメモリ16と、システムバス13を介して読み出して実行する。CPUコア15は、プログラムの実行に必要な命令あるいはデータ(以下、単にデータともいう)を、キャッシュメモリ16から読み出してそのプログラムを実行する。CPUコア15は、主メモリ12の実アドレスRAを、キャッシュメモリ16に出力し、キャッシュメモリ16は、キャッシュメモリ16中に入力された実アドレスRA上のデータが存在すれば、そのデータDをCPUコア15へ出力する。キャッシュメモリ16中にストアされたデータが無ければ、リフィル処理により主メモリ12からそのデータを読み出してキャッシュメモリ16に書き込み、CPUコア15に出力する。
なお、ここでは、説明を簡単にするためにメモリ管理ユニット(MMU)を有しない例を用いて説明するが、メモリ管理ユニット(MMU)を有する場合は、CPUコア15は、実アドレスではなく、仮想アドレスを出力する。
また、CPUコア15は、キャッシュメモリ16に対して、キャッシュメモリ16を動作させるための信号として、チップイネーブル信号CEをキャッシュメモリ16に対して出力する。従って、CPUコア15は、キャッシュメモリ16を使用する時に、チップイネーブル信号CEを出力する。
さらに、動作周波数設定部としての周波数設定レジスタ17には、CPU11の動作周波数の値が設定される。CPU11の動作周波数の設定は、例えば、ユーザにより外部から与えられることにより行われる。周波数設定レジスタ17に設定された動作周波数データFは、CPUコア15に入力され、CPUコア15は、その動作周波数データFをキャッシュメモリ16に出力する。(Fは周波数設定レジスタから、CPUコアとキャッシュメモリの両方に出力されてもよい。)本実施の形態では、CPUコア15は、100MHZ、200MHz、400MHzのいずれかが設定可能に構成されている。
また、キャッシュメモリ16の動作周波数は、CPUコア15の動作周波数F以上の動作周波数で動作する。ここでは、キャッシュメモリ16の動作周波数は、400MHzであるとする。
CPUコア15は、例えば、32ビット幅の実アドレスデータRAをキャッシュメモリ16に出力し、キャッシュメモリ16は、32ビットのワードデータDをCPUコア15に出力する。
また、キャッシュメモリ16は、データを格納する小容量メモリ(図示せず)に加えて、制御回路としてのキャッシュアクセスコントローラ16aと分割数変更部16bとを含む。キャッシュアクセスコントローラ16aと分割数変更部16bの構成については後述する。
図2は、CPUコア15から出力される実アドレスデータの構成例を示す図である。ここでは、実アドレスデータRAは、32ビットであり、上位ビット側の20ビットのフレームアドレスFAと、8ビットのエントリアドレスEAと、下位ビット側の4ビットのワードアドレスWAからなる。
図3は、キャッシュメモリ16の構成例を説明するための図である。
キャッシュメモリ16は、データを記憶する小容量記憶部31を有する。さらに、キャッシュメモリ16は、アドレスデコーダ32と、比較部33と、ワードセレクタ部34と、ウェイセレクタ部35と、キャッシュアクセスコントローラ16aと、分割数変更部16bとを含むキャッシュメモリ制御回路を有している。キャッシュアクセスコントローラ16aは、制御部41と、選択部42と、分割数指定部43とを含む。小容量記憶部31は、N個(Nは2以上の整数)のウェイ、ここでは4つのウェイ、からなるメモリであり、キャッシュメモリ16は、4ウェイセットアソシアティブ方式のキャッシュメモリである。比較部33とワードセレクタ部34は、それぞれ、各ウェイにおいて選択されたラインLs(ここでは4つのライン)に対応して、複数の比較器(ここでは4つの比較器)と複数のワードセレクタ(ここでは4つのワードセレクタ)を有している。
ここでは、各ウェイが256ブロック、すなわち256ラインを有し、各ラインは、8ビットのエントリアドレスEAによって指定される。
各ラインは、16個のワードデータを含むデータ部と、フレームアドレスデータを含むタグ部を有する。16個のワードデータのうちどのワードデータを読み出すかは、入力された実アドレスRA中の、4ビットのワードアドレスWAによって指定される。
キャッシュメモリ16には、実アドレスデータRA、チップイネーブル信号CE、動作周波数データFが入力され、キャッシュメモリ16は、リードデータDをCPUコア15に出力する。
キャッシュアクセスコントローラ16aの制御部41は、後述する比較部33からの比較結果信号である一致信号c0からc3が入力される回路である。一致信号c0からc3は、キャッシュヒットを示す信号である。選択部42は、制御部41から制御信号CSと、チップイネーブル信号CEとが入力される回路である。後述するように、制御部41は、一致信号c0からc3のいずれかが入力されると、選択部42に制御信号CSを出力し、ウェイイネーブル信号WEの出力を停止させる。
選択部42は、各ウェイに対するウェイイネーブル信号WEを出力する。選択部42は、後述するように、4つのウェイ全てを同時に有効にする、あるいは各ウェイを所定の順番で時間的に重ならないように有効にする、さらにあるいは複数の(ここでは2つの)ウェイを所定の順番で時間的に重ならないように有効にするように、各ウェイを選択する。各ウェイに対するウェイイネーブル信号WEは、各ウェイを有効にする、すなわち動作させるための信号である。
分割数指定部43は、動作周波数データFと分割数変更部16bからの分割数変更信号DNCが入力される回路である。分割数指定部43は、入力された動作周波数データFに対応する分割数データを、選択部42に出力し、分割数変更信号DNCに応じて分割数を変更する。
従って、キャッシュメモリ16の複数のウェイは、指定された分割数で分割されて、分割された各ウェイあるいは2以上のウェイは、選択部42において、所定の順番で選択される。
CPUコア15の動作周波数Fは可変であり、上述したように、400MHz、200MHzあるいは100MHzのいずれかで動作可能である。その動作周波数Fは、上述したようにユーザにより設定可能である。その指定された動作周波数のデータが分割数指定部43に入力される。
分割数変更部16bは、複数の、ここでは4つの、フリップフロップ(以下、FFと略す)51〜54と、複数の、ここでは2つの、比較器61,62を含む比較部と、順序回路63とを含んで構成される。
FF51から54には、データバスのビット幅に等しいビット数のリードデータDが、ウェイセレクタ35から入力されるが、特にFF52と54には、所定の数のバッファ回路52a、54aを介して、リードデータDが入力される。すなわち、CPUコア15のリードデータDは、そのデータをラッチする各F/F51〜54の入力ピンの直前で分岐されてから各FF51から54に入力され、特に、FF52と54については数段のバッファ回路を介して入力される。よって、ウェイセレクタ35からのリードデータDは、一方が他方に対して所定の遅延量を有する2つのデータパスを伝播した後に、比較器61,62で比較される。
また、FF51と52には、400MHzのクロック信号が入力され、FF53と54には、200MHzのクロック信号が入力される。
各FFに入力されるクロック信号のタイミングは、CPUコア15からキャッシュメモリ16のレジスタへの実アドレスRAの入力タイミング及びCPUコア15へのリードデータDの入力タイミングに同期している。より具体的には、各FFに入力されるクロック信号のタイミングは、CPUコア15からキャッシュメモリ16へのリードデータDの書き込みタイミング及びCPUコア15によるキャッシュメモリ16からのデータの読み出しのタイミングに、例えば、パルス信号の立ち上がりエッジのタイミングに、同期している。
比較部における2つの比較器61,62は、それぞれ400MHzのクロックと200MHzのクロックが、入力されているが、各クロックは、分割数に応じた周波数のタイミングのクロックである。よって、2つの比較器61,62は、それぞれが所定の分割数に応じた周波数のタイミングで、2つのリードデータを比較する。
比較器61には、FF51と52の出力データが入力され、比較器62には、FF53と54の出力データが入力される。各比較器61,62は、2つの入力データが一致すると、一致を示す信号「0」を出力し、不一致の場合は、不一致を示す信号「1」を出力する。後述するように、データをラッチする各FF51から54が保持するデータは、動作条件が良好なときは、常に等しく、各比較器61,62の出力は「0」(一致を表す値)となる。
分割数の変更の判定を行う判定部としての順序回路63には、2つの比較器61,62の出力信号が入力される。そして、順序回路63には、400MHzのクロック信号が入力される。順序回路63の出力信号は、分割数変更信号DNCであり、分割数指定部43に出力される。
また、順序回路63には、キャッシュメモリ16の現在のアクセスモードの状態を示すアクセスモード信号(図示せず)も入力されている。順序回路63がどのように動作するかは後述する。
ここで、チップ温度の上昇や電源電圧の低下などにより、トランジスタの動作速度が徐々に低下していく場合を考える。このような場合、CPUコア15にとっては、キャッシュメモリ16からのリードデータが、CPUコア15がリードデータを読み出すために一時的にラッチするFF(図示せず)に到達するタイミングが徐々に遅くなっていく。しかし、このデータのパスにおいてタイミング違反が発生する前に、上述したウェイセレクタ35からFF52もしくはFF54へのパスにおいてタイミング違反が発生するように、1以上のバッファ回路が設けられている。FF52と54の前段に設けられたバッファ回路52aと54aを含むパスは、そのバッファ回路の数の分だけ遅延量が大きい。
FF51と52を含むパスは、400MHz時のタイミング違反を検出するためのパスであり、FF53と54を含むパスは、200MHz時のタイミング違反を検出するためのパスである。FF51と52と比較器61は、400MHzタイミング違反検出回路を構成し、FF53と54と比較器62は、200MHzタイミング違反検出回路を構成する。
FF52もしくはFF54でタイミング違反が発生すると、FF52やFF54の全てあるいは一部の出力は、不定値になり、その結果、対応する比較器の出力は「1」(不一致を示す値)となる。
キャッシュメモリ16のアクセスモードを示すアクセスモード信号と、各比較器61,62の出力信号は、順序回路63に入力される。後述するように、400MHzのタイミング違反、あるいは200MHzのタイミング違反が発生すると、順序回路63は、それぞれの違反を示す各比較器からの信号と、アクセスモード信号とに基づいて、分割数変更信号DNCを、分割数指定部43に出力する。
従って、分割数変更部16bは、リードデータを二つのパスに伝播させて、一方が他方に対して所定の遅延量を有する2つのリードデータを比較する比較器61,62を有し、比較器61,62における2つのリードデータの一致あるいは不一致に応じて、分割数を変更するための分割数変更信号DNCを出力する回路である。
キャッシュメモリアクセスコントローラ16aが分割数変更部16bからの分割数変更信号DNCを受信すると、キャッシュメモリ16のアクセスモードが変更される。すなわち、キャッシュアクセスコントローラ16aは、受信した分割数変更信号DNCに基づいて、複数のウェイの分割数を変更する。なお、アクセスモードの切り替えは、分割数変更信号DNCを受信したリードサイクルが終わった後、リードサイクルが行われない期間内に行われる。
例えば、CPUコア15が100MHzで動作しており、キャッシュメモリ16が400MHzモードで、すなわち1ウェイずつ最大4回検索するアクセスモードで動作しているときに、400MHzのタイミング違反が検出された場合は、順序回路63は、検出時のリードサイクルが終了すると、キャッシュメモリ16のアクセスモードを、200MHzモードへ、すなわち2ウェイずつ最大2回検索するアクセスモードへ、と切り替えさせるための分割数変更信号DNCを出力する。
同様に、キャッシュメモリ16が200MHzモードで動作しているときに、200MHzのタイミング違反が検出された場合は、順序回路63は、検出時のリードサイクルが終了すると、キャッシュメモリ16のアクセスモードを、100MHzモードへ、すなわち4ウェイまとめて検索するアクセスモード(つまり、従来の4ウェイキャッシュメモリの動作)へ、と切り替えさせるための分割数変更信号DNCを出力する。
よって、比較器において、不一致と判定されると、分割数を減少させる分割数変更信号が出力される。
また、キャッシュメモリ16の100MHzモードから200MHzモードへの切り替えは、200MHzのタイミング違反が検出されなくなったリードサイクルの次のリードサイクルに行われ、200MHzモードから400MHzモードへの切り替えは、400MHzのタイミング違反が検出されなくなったリードサイクルの次のリードサイクルに行われる。
よって、比較器において、一致と判定されると、分割数を増加させる分割数変更信号が出力される。
なお、チップ温度や電源電圧の変動の速さは、一般的に、チップのクロックサイクル時間に比べて桁違いに遅い。よって、例えば、比較器の出力は、チップ温度が上昇するとしばらく「1」を保ち、数十分経ってチップ温度が下がって来ると「0」に戻る、という動作をする。
ところで、キャッシュメモリ16に入力された実アドレスRAのエントリアドレスEAは、アドレスデコーダ32に供給される。アドレスデコーダ32は、エントリアドレスEAに対応するラインを、小容量記憶部31の4つのウェイ#0から#3のそれぞれから選択する。エントリアドレスEAは8ビットであるので、各ウェイにおいて必ず1つのラインが選択される。
また、実アドレスデータRAのワードアドレスWAは、ワードセレクタ部34に供給される。ワードセレクタ部34の4つのワードセレクタは、それぞれ、ワードアドレスWAに対応するワードデータを、小容量記憶部31の選択された4つのラインLsのそれぞれから選択する。ワードアドレスWAは、4ビットであるので、各ラインLsにおいて必ず1つのワードデータが選択される。各ワードセレクタで選択されたワードデータは、ウェイセレクタ部35に出力される。
さらに、実アドレスRAのフレームアドレスFAは、比較部33の4つの比較器のそれぞれの一方の入力に供給される。比較部33の4つの比較器には、それぞれ、選択された4つのラインLsの4つのタグ部の4つのフレームアドレスデータが入力される。比較部33の4つの比較器は、それぞれ、入力されたフレームアドレスFAと入力されたタグ部のフレームアドレスデータとを比較し、比較結果信号Cを出力する。比較部33は、入力されたフレームアドレスFAと一致したタグ部のフレームアドレスデータがある場合は、キャッシュヒットを検出したことを示す一致信号c0からc3のいずれかを出力する。比較部33は、各ウェイにおけるキャッシュヒットを検出するキャッシュヒット検出部を構成する。
キャッシュヒットの検出を示す一致信号c0からc3は、それぞれ4つのウェイ#0から#3に対応し、フレームアドレスFAとタグ部のフレームアドレスデータとが一致したことを示す信号である。
従って、入力されたフレームアドレスFAと入力されたタグ部のフレームアドレスデータとが一致しなければ、一致信号c0からc3のいずれも出力されない。入力されたフレームアドレスFAと入力されたタグ部のフレームアドレスデータとが一致したものがあれば、フレームアドレスFAとタグ部のフレームアドレスデータが一致した1つのウェイに対応する1つの一致信号が出力される。
一致信号c0からc3は、ウェイセレクタ部35に入力される。ウェイセレクタ部35は、ワードセレクタ部34から入力されたワードデータのうち、一致信号に対応するウェイのラインのワードデータ(D)を出力する回路である。
また、選択部42は、チップイネーブル信号CEが入力されると所定の順番で、ウェイを1つずつ(後述する400MHzモードの場合)あるいは2つずつ(後述する200MHzモードの場合)選択して有効にするウェイイネーブル信号WEを出力する。なお、選択部42は、チップイネーブル信号CEが入力されると、全てのウェイを同時に選択して有効にするウェイイネーブル信号WEを出力する場合もある(後述する100MHzモードの場合)。
制御部41は、一致信号が入力されると、選択部42に制御信号CSを出力し、ウェイイネーブル信号WEの出力を停止させる。従って、制御信号CSは、キャッシュヒットを検出すると、選択部42によるウェイの選択を途中で停止させる停止指示信号である。
分割数指定部43は、図4に示すような分割数テーブルDTを含み、分割数テーブルDTを参照して、入力された動作周波数データFに対応する分割数データを出力する。
図4は、分割数テーブルDTの例を示す図である。図4に示すように、分割数テーブルDTは、各動作周波数、ここでは400MHz、200MHz及び100MHzのそれぞれについて、1以上の分割数が設定され記憶されたテーブルである。さらに、分割数テーブルDTにおいて、分割数データは、動作周波数毎に優先度データと共に、設定されている。
図4に示すように、CPUコア15の動作周波数Fが100MHzの場合、3つの優先度1,2,3に対応して、3つの分割数4,2,1が設定され、CPUコア15の動作周波数Fが200MHzの場合、2つの優先度1,2に対応して、2つの分割数2,1が設定され、CPUコア15の動作周波数Fが400MHzの場合、1つの優先度1に対応して、1つの分割数1が設定されている。
本実施の形態では、CPUコア15の動作周波数Fが指定されると、分割数指定部43は、通常は、最高優先度、ここでは1,に対応する分割数のデータを選択して、選択部42に出力する。例えば、CPUコア15の動作周波数Fが100MHzの場合、分割数指定部43は、最高優先度1に対応する分割数4を示す分割数データを選択部42に出力する。
なお、分割数は、ユーザが選択できるようにしてもよい。すなわち、CPUコア15の動作周波数Fに対して、ユーザが、最高優先度以外の優先度に対応する分割数を指定して選択するようにしてもよい。例えば、CPUコア15の動作周波数Fが100MHzの場合、分割数指定部43に対して優先度2に対応する分割数2を示す分割数データを選択部42に出力するように、ユーザは、分割数指定部43に設定するようにしてもよい。
以上のように、分割指定部43は、設定されたCPUコア15の動作周波数Fに対応した分割数を指定するデータを選択部42に出力する。
そして、選択部42は、指定された分割数で、1CPUサイクルを分割して、分割された各期間内において、各ウェイあるいは複数のウェイを選択するウェイイネーブル信号WEを各ウェイに出力する。
そして、分割数指定部43は、上述した分割変更部16bからの分割数変更信号DNCを受信すると、指定された分割数及び優先度に拘わらず、それまで動作していたアクセスモードの変更を行う。
2.動作
次に、上述したプロセッサ1のキャッシュメモリ16の動作を説明する。
2.1 モード変更がないときの動作
図5は、プロセッサ1の動作を説明するためのタイミングチャートである。キャッシュメモリ16は、上述したように400MHzで動作する。以下、CPUコア15の動作周波数Fが、100MHzで設定された場合で説明する。
ユーザがCPUコア15の動作周波数Fを100MHzに設定すると、その設定された動作周波数データFは、周波数設定レジスタ17にストアされ、CPUコア15を介して分割数指定部43に出力される。分割数指定部43は、分割テーブルDTを参照して、最高優先度に対応する分割数データを選択部42に出力する。選択部42は、入力された分割数で1CPUサイクルを分割するように、各ウェイに対して、ウェイイネーブル信号WEを出力する。
従って、CPUコア15の動作周波数Fが100MHzに設定されると、最高優先度1に対応する4分割で、各ウェイが選択される(後述する400MHzモード)。
なお、CPUコア15の動作周波数Fが200MHzに設定されると、最高優先度1に対応する2分割で、各ウェイが選択される。さらになお、CPUコア15の動作周波数Fが400MHzに設定されると、最高優先度1に対応する1分割(すなわち分割せず)で、各ウェイが選択、すなわち全ウェイが同時に選択される。
このように、キャッシュメモリ16に接続されたCPUコア15の動作周波数に応じて、1CPUサイクルが分割されるので、選択部42により1回の選択で選択されるウェイの数が変更される。
図5を用いて具体的に説明すれば、CPUコア15の動作周波数Fが100MHzに設定されると、プロセッサ1のシステムクロックCLKが400MHzであり、CPUコア15が、100MHzで動作する。キャッシュメモリ16は、400MHzで動作しているので、CPUコア15とキャッシュメモリ16との周波数比は、1:4である。
分割数指定部43には、100MHzの動作周波数データFが入力されるので、分割テーブルDTを参照して、最高優先度1に対応する分割数4の分割数データを選択部42に出力する。
その結果、選択部42は、チップイネーブル信号CEを受信すると、ウェイイネーブル信号WE[0],WE[1],WE[2],WE[3]を一つずつ順番に出力するように動作を開始する。すなわち、キャッシュメモリ16は、1CPUサイクルの間に、入力された実アドレスデータRAのフレームアドレスFAと各ウェイのタグ部のフレームアドレスとの比較を順番に実行しようとする。ここでは、ウェイ#0から#3の順でその比較が行われる。
まず、ウェイ#0に対応するウェイイネーブル信号WE[0]をHIGHにし、ウェイ#0から読み出されたタグ部のフレームアドレスが、入力されたフレームアドレスFAと一致しているかを比較する。一致していれば、比較結果信号Cにおいて、一致信号c0がHIGHとなり、キャッシュヒットとなる。
図5では、ウェイ#0から#3に対するウェイイネーブル信号WEとして、「0001」を示す「1」が出力されている。そして、4つの一致信号c0からc3の比較結果信号Cとして、「0001」を示す「1」が出力されている。比較結果信号Cの「0001」において、キャッシュヒット[0]信号が「1」で示されている。
図5の例では、ウェイ#0に格納されていたタグ部のフレームアドレスと、入力されたフレームアドレスFAとを比較したときに、一致、すなわちヒットしたので、その一致後は、CPUコア15へのデータは、有効(Valid)となる。そのため、CPUコア15は、次のCPUサイクルの立ち上がりのタイミングで、リードデータとして、ウェイセレクタ35の出力を取り込むことにより、ウェイ#0にキャッシュされていたデータを得る。
また、比較結果信号Cは、制御部41に入力されているので、制御部41は、キャッシュヒットを検出することができる。制御部41は、キャッシュヒットを検出すると、選択部42に対して、ウェイイネーブル信号WEの出力を停止させるための制御信号CSを出力する。選択部42は、その制御信号CSを受信すると、それ以降、ウェイイネーブル信号WEの出力を停止する。よって、選択部42は、その制御信号CSを受信すると、それ以降のウェイイネーブル信号WEの出力を停止するので、無駄なタグデータ読み出しが抑制される。
すなわち、ウェイイネーブル信号WE[0]がHIGHとなることにより、ウェイ#0は動作したが、その後は、ウェイイネーブル信号WE[1]からWE[3]がHIGHとならず、ウェイ#1から#3は動作しない。よって、キャッシュアクセスに関わる消費電力が抑えられる。
なお、キャッシュメモリ16は、ウェイ#0から読み出されたタグ部のフレームアドレスが、入力されたフレームアドレスFAと一致していなければ、ミスアクセスとなり、次にウェイ#1に対応するウェイイネーブル信号WE[1]をHIGHにし、ウェイ#1から読み出されたタグ部のフレームアドレスが、入力されたフレームアドレスFAと一致しているかを比較する。
一致していれば、比較結果信号Cにおいて、一致信号c1がHIGHとなり、キャッシュヒットとなる。一致していなければ、ミスアクセスとなり、次にウェイ#2に対応するウェイイネーブル信号WE[1]をHIGHにし、ウェイ#2から読み出されたタグ部のフレームアドレスが、入力されたフレームアドレスFAと一致しているかを比較する。以下、同様に、ウェイ#3までキャッシュヒットしているかがチェックされる。
図6は、ウェイ#3でキャッシュヒットした場合のタイミングチャートである。選択部42は、ウェイイネーブル信号WE[0]から[3]を順番に出力することによって、ウェイ#0から#3を順番に各分割期間において選択して、ウェイ#3で初めてキャッシュヒットしている。図6では、ウェイイネーブル信号WEとして、「0001」、「0010」、「0100」及び「1000」をそれぞれ示す「1」、「2」、「4」及び「8」が、順番に出力されている。
そして、比較結果信号Cにおいて、一致信号c3がHIGHとなり、キャッシュヒットとなる。図6では、キャッシュヒット[3]信号として、「1000」を示す「8」が、1CPUサイクルの最後の分割期間において出力されている。
従って、キャッシュヒットがウェイイネーブル信号WE[1]又はWE[2]のタイミングで発生すれば、キャッシュヒット以降は、選択部42は、ウェイイネーブル信号WEを出力せず、その後は、ウェイイネーブル信号WEがHIGHとならず、キャッシュアクセスに関わる消費電力が抑えられる。
以上のように、キャッシュメモリ16は、1CPUサイクル中に、4つのウェイに対するタグ比較を4回所定の順番で、ここでは、ウェイ#0から#3の順に、実行しようとする。しかし、4回のうち、途中でキャッシュヒットすると、それ以降のウェイイネーブル信号WEは出力されない。よって、それ以降のウェイ動作に関わる消費電力が抑えられる。
また、以上の例は、CPUコア15の動作周波数Fが100MHzで、優先度1の分割数4が設定され、キャッシュメモリ16は、各ウェイを順番に有効にする順次アクセスモードで動作する場合である。
しかし、CPUコア15の動作周波数Fが400MHzに設定された場合、1CPUサイクルを分割できず、キャッシュメモリ16は、1CPUサイクル中に、4つのウェイに対してウェイイネーブル信号WE[0]から[3]を同時に出力し、4つのウェイを同時に有効にする通常アクセスモードで動作する。
また、キャッシュメモリ16は、順次アクセスモードと通常アクセスモードとは、異なる中間モードのアクセスモードで、動作可能である。
具体的には、図4の場合、CPUコア15の動作周波数Fが100MHzで、優先度2に対応する分割数2をユーザが指定した場合、あるいは、CPUコア15の動作周波数Fを200MHzに設定し、優先度1の分割数2が指定された場合、キャッシュメモリ16は、中間モードで動作する(後述する200MHzモード)。
このような場合は、選択部42は、1CPUサイクルの前半にウェイイネーブル信号WE[0]と[1]を同時に出力し、1CPUサイクルの後半にウェイイネーブル信号WE[2]と[3]を同時に出力する。
図7は、通常アクセスモードNM、順次アクセスモードSM及び中間モードIMの3つのアクセスモードにおける消費電力の状態を概念的に説明するための図である。
通常アクセスモードNMでは、図7に示すように、4つのウェイが同時に有効にされるので、従来に比べて消費電力の低減はない。
通常アクセスモードNMは、分割テーブルDTにおいて、分割数が1の場合である。上述した例であれば、CPUコア15が100MHzで動作し、優先度3に対応する分割数1が指定されている場合と、CPUコア15が200MHzで動作し、優先度2に対応する分割数1が指定されている場合と、CPUコア15が400MHzで動作し、優先度1に対応する分割数1が指定されている場合である。
順次アクセスモードSMでは、図7に示すように、一つずつウェイが所定の順番で有効にされるので、消費電力は、通常アクセスモードよりも低減可能である。
本実施の形態では、ウェイは4つあるので、順次アクセスモードSMは、分割テーブルDTにおいて、分割数が4の場合である。上述した例であれば、CPUコア15が100MHzで動作し、優先度1に対応する分割数4が指定されている場合である。
順次アクセスモードSMでは、上述したように、順番に各ウェイを有効にしていくため、途中でキャッシュヒットする場合もあるので、消費電力は通常アクセスモードより低減可能である。上述した図5の場合が消費電力の低減効果が大きいベストの場合であり、その場合タグ比較は1回しか行われず、消費電力は、通常アクセスモードよりも約4分の1に低減している。
上述した図6の場合は消費電力の低減効果が大きくないワーストの場合であり、その場合、タグ比較は4回実行されているが、1CPUサイクル中に4回の比較が実行されるので、100MHZで動作するCPUコア15から見たときの、アクセスレイテンシは増加していない。
また、図7において中間モードIMでは、図7に示すように、2分割の前半でキャッシュヒットすれば、消費電力は、通常アクセスモードよりも約2分の1に低減可能である。
本実施の形態では、ウェイは4つあるので、中間モードIMは、分割テーブルDTにおいて、分割数が2の場合である。上述した例であれば、CPUコア15が100MHzで動作し、優先度2に対応する分割数2が指定されている場合と、CPUコア15が200MHzで動作し、優先度1に対応する分割数2が指定されている場合である。
中間モードIMの場合、順番に2つずつウェイを有効にしていくため、途中でキャッシュヒットする場合もあるので、消費電力は、通常アクセスモードNMより低減可能である。さらに、中間モードIMの場合、タグ比較は2回実行されるが、1CPUサイクル中に2回の比較が実行されるので、CPUコア15から見たときの、アクセスレイテンシは増加していない。
以上のように、上述した実施の形態に係るキャッシュメモリでは、選択部42は、複数のウェイに対する複数のウェイイネーブル信号WEを、1つずつあるいは複数ずつ、所定の順番で、1CPUサイクル中に出力する。そして、途中でキャッシュヒットした場合、ウェイイネーブル信号WEの出力が停止される。その結果、アクセスレイテンシを増加させることなく、キャッシュメモリは、可能な限り低消費電力で動作する。
2.2 アクセスモード変更すなわち分割数変更の動作
次にアクセスモード変更、すなわち分割数変更があるときの動作について説明する。
始めに、キャッシュメモリ16の複数のウェイを1つずつ、ここでは4分割して、アクセスするアクセスモードで動作している場合に、動作マージンが大きいとき、すなわちタイミングにおける余裕があるとき、の動作を説明する。なお、複数のウェイを1つずつアクセスするときは、400MHzのクロックタイミングでアクセスが行われるため、このアクセスモードを、以下、400MHzモードという。同様に、200MHz及び100MHzのクロックタイミングでアクセスが行われるアクセスモードを、それぞれ、以下、200MHzモード及び100MHzモードという。さらに、以下の説明において、4つのウェイ#0から#3のデータを、それぞれW0からW3とする。また、データ取り込みタイミングは、各期間の立ち上がりエッジの時であり、例えば、期間t1,t2,t3,t4の立ち上がりエッジの時は、T1,T2,T3,T4とする。
図8は、キャッシュメモリ16が400MHzモードで動作し、かつ動作マージンが大きいときの、FF51、52の入力データと出力データ、及び比較器61の出力の状態を示すタイミングチャートである。図8において、期間t1からt4が、CPUコア15における1CPUサイクルである。
ウェイセレクタ35の出力であるリードデータであるウェイ#0のデータW0が、FF51に遅れなく入力され、FF52には、バッファ回路52aの遅れ分だけ遅れて入力されている。このとき、FF52の入力データは、FF52のデータ取り込みタイミングである期間t2の立ち上がりエッジの時T2よりも十分に早く確定しているため、期間t2において、FF51の出力データとFF52の出力データは同一となる。そのため、比較器61の出力は「0」になる。
続く期間t2からt4においても、FF51とFF52への入力データであるデータW1からW3は、それぞれのデータ取り込みタイミングにおいて十分に早く確定しているため、比較器61の出力は「0」になる。
順序回路63は、キャッシュメモリ16が400MHzモードで動作しており、かつ期間t2における比較器61の出力が「0」であるので、400MHzモードのタイミング違反は無し、として、キャッシュアクセスコントローラ16aの分割数指定部43に、分割数変更信号DNCを出力しない。
なお、このとき、順序回路63は、400MHzモードのタイミング違反のないことを示す信号を、出力するようにしてもよい。さらになお、当然に、200MHzのアクセスモード(以下、200MHzモードいう)のタイミング違反もないので、順序回路63は、200MHzモードのタイミング違反のないことを示す信号も出力するようにしてもよい。そして、分割数指定部43において、現在のキャッシュメモリ16のアクセスモードと、タイミング違反の有無の信号とに基づいて、アクセスモードの変更が行われるようにしてもよい。以下に説明するアクセスモード時における動作においても同様である。
a)400MHzモードで、400MHzの動作マージンが小さいとき
次に、キャッシュメモリ16が400MHzモード(分割数が4)で動作している場合に、動作マージンが小さくタイミング違反があるときの動作を説明する。
図9は、キャッシュメモリ16が400MHzモードで動作していて、動作マージンが小さいときの、FF51、52の入力データと出力データ、及び比較器61の出力の状態を示すタイミングチャートである。
チップの温度上昇等により、ウェイセレクタ35の出力であるリードデータであるデータW0が、矢印A1で示すように、FF51に遅れて入力され、FF51のデータ取り込みタイミングであるT2に近づいている。一方、FF52には、バッファ回路52aの遅れ分だけ遅れて入力され、データW0は、FF52のデータ取り込みタイミングであるT2において、確定していない。データW0は、期間t3の立ち上がりエッジのT3で確定して取り込まれる。その結果、期間t2において、FF51の出力データとFF52の出力データは、不一致となる。そのため、比較器61の出力は「1」になる。
順序回路63は、キャッシュメモリ16が400MHzモードで動作しており、かつ期間t2における比較器61の出力が「1」であるので、400MHzモードのタイミング違反が有り、として、キャッシュアクセスコントローラ16aの分割数指定部43に、分割数変更信号DNCを出力する。すなわち、判定部としての順序回路63は、複数の比較器からの比較結果である不一致の情報と、不一致のタイミング情報である期間の情報とに基づいて、分割数を減少させる判定を行って、分割数を4から2に変更する分割数変更信号DNCを出力する。
その結果、分割数指定部43は、キャッシュメモリ16が400MHzモードで動作しており、かつ期間t2における比較器61の出力が「1」であるので、分割数を4から2へ減少させるように、アクセスモードを変更する。なお、この分割数の変更は、図9において、期間t4に続く次の1CPUサイクル以降に行われる。例えば、キャッシュアクセスコントローラ16aは、リード動作が完了した後の次の1CPUサイクルにおいて、アクセスモードを200MHzモードへ移行する。
b)200MHzモードで、400MHzモードの動作マージンは小さく、かつ200MHzモードの動作マージンが大きいとき
次に、キャッシュメモリ16が200MHzモード(分割数が2)で動作している場合に、400MHzモードの動作マージンが小さく、かつ200MHzモードの動作マージンが大きいときの動作を説明する。
図10は、キャッシュメモリ16が200MHzモードで動作していて、400MHzモードの動作マージンは小さく、200MHモードの動作マージンが大きいときの、FF51〜54の入力データと出力データ、及び比較器61、62の出力の状態を示すタイミングチャートである。
チップの温度上昇等により、ウェイセレクタ35の出力であるリードデータが、矢印A2で示すように、FF53に遅れて入力され、FF54にはバッファ回路54aの遅れ分だけ遅れて入力されるが、FF53と54の入力データは、ウェイ#0のデータW0かウェイ#1のデータW1のいずれかであるが、FF53と54のデータ取り込みタイミングである期間t3の立ち上がりエッジの時において、確定している。そのため、FF53と54の入力データは、期間t3の立ち上がりエッジで取り込まれる。その結果、期間t3において、FF53の出力データとFF54の出力データは、一致する。そのため、比較器62の出力は「0」になる。期間t4、t5においても、比較器62の出力は「0」になる。
順序回路63は、キャッシュメモリ16が200MHzモードで動作しており、かつ期間t3における比較器62の出力が「0」であるので、200MHzモードのタイミング違反は無し、として、キャッシュアクセスコントローラ16aの分割数指定部43に、分割数変更信号DNCを出力しない。
一方、FF51と52にも、ウェイセレクタ35の出力であるリードデータが、矢印A2で示すように、FF51に遅れて入力され、FF52にはバッファ回路52aの遅れ分だけ遅れて入力される。FF52の入力データは、FF52のデータ取り込みタイミングである期間t2の立ち上がりエッジの時T2において、不定値である。その結果、期間t2において、FF51の出力データとFF52の出力データは、不一致となり、比較器61の出力は「1」になる。
しかし、FF51と52の入力データは、次の期間t3の立ち上がりエッジの時T3において確定しており、期間t3において、FF51の出力データとFF52の出力データは同一となり、比較器61の出力は「0」になる。
さらに、続く期間t4では、FF51には次のリードデータ(W2/3)が、すなわちウェイ#2のデータW2かウェイ#3のデータW3のいずれかが、FF51のデータ取り込みタイミングである期間t4の立ち上がりエッジの時T4において確定している。一方、FF52の入力データは、期間t4の立ち上がりエッジの時T4においては、まだ次のリードデータ(W2/3)は入力されておらず、前のリードデータ(W0/1)、すなわちウェイ#0のデータW0かウェイ#1のデータW1のいずれか、である。そのため、期間t4において、FF51の出力データとFF52の出力データは、不一致となり、比較器61の出力は「1」になる。
期間t4に続く次の期間t5は、期間t3の場合と同様であり、比較器61の出力は「0」になる。
以上のように、順序回路63は、キャッシュメモリ16が200MHzモードで動作しており、かつ比較器62の出力が期間t3において「0」であるので、400MHzモードの動作マージンは小さいが、200MHzモードの動作マージンは大きいとして、キャッシュアクセスコントローラ16aの分割数指定部43に、アクセスモードを変更させる分割数変更信号DNCを出力しない。その結果、キャッシュアクセスコントローラ16aは、200MHzモードを維持する。
c)200MHzモードで、200MHzモードの動作マージンが小さいとき
次に、キャッシュメモリ16が200MHzモード(分割数が2)で動作している場合に、200MHzモードの動作マージンが小さいときの動作を説明する。
図11は、キャッシュメモリ16が200MHzモードで動作していて、200MHzモードの動作マージンが小さいときの、FF51〜54の入力データと出力データ、及び比較器61、62の出力の状態を示すタイミングチャートである。
さらなるチップの温度上昇等により、ウェイセレクタ35の出力であるリードデータが、すなわちウェイ#0のデータW0かウェイ#1のデータW1のいずれかが、矢印A3で示すように、FF53に大きく遅れて入力される。そのリードデータは、FF54にはバッファ回路54aの遅れ分だけさらに遅れて入力される。FF53の入力データは、FF53のデータ取り込みタイミングである期間t3の立ち上がりエッジの時T3において、確定している。しかし、54の入力データは、FF54のデータ取り込みタイミングである期間t3の立ち上がりエッジの時T3において、確定していない不定値である。その結果、期間t3とt4において、FF53の出力データとFF54の出力データは、不一致となり、比較器62の出力は「1」になる。
順序回路63は、キャッシュメモリ16が200MHzモードで動作しており、かつ期間t3における比較器62の出力が「1」であるので、200MHzモードのタイミング違反が有り、として、キャッシュアクセスコントローラ16aの分割数指定部43に、分割数変更信号DNCを出力する。すなわち、分割数を2から1に変更する信号が出力される。
期間t5の立ち上がりエッジの時T5では、FF53の入力データはウェイ#2のデータW2かウェイ#3のデータW3のいずれかで確定しているが、FF54の入力データは、まだウェイ#0のデータW0かウェイ#1のデータW1のいずれかであるため、比較器62の出力は、「1」となる。
一方、FF51と52にも、ウェイセレクタ35の出力であるリードデータが、矢印A3で示すように、FF51に大きく遅れて入力され、FF52にはバッファ回路52aの遅れ分だけさらに遅れて入力される。FF51とFF52の出力データは、期間t2においては、確定していないため、比較器61の出力は「1」となる。
FF51の入力データは、FF51のデータ取り込みタイミングである期間t3の立ち上がりエッジの時T3において、確定している。しかし、FF52の入力データは、FF52のデータ取り込みタイミングである期間t3の立ち上がりエッジの時T3において、確定していない。その結果、期間t3において、FF51の出力データとFF52の出力データは、不一致となる。そのため、比較器61の出力は「1」になる。
しかし、FF51と52の入力データは、次の期間t4の立ち上がりエッジの時T4において確定しており、期間t4において、FF51の出力データとFF52の出力データは同一となる。そのため、比較器61の出力は「0」になる。
さらに、期間t4に続く次の期間t5では、FF51には次のリードデータ(W2/3)、すなわちウェイ#2のデータW2かウェイ#3のデータW3のいずれか、が入力され、FF51のデータ取り込みタイミングである期間t5の立ち上がりエッジの時T5において確定している。しかし、FF52の入力データは、次の期間t5の立ち上がりエッジの時T5においては、まだ次のリードデータ(W2/3)は入力されておらず、前のリードデータ(W0/1)である。そのため、次の期間t5において、FF51の出力データとFF52の出力データは、不一致となる。そのため、比較器61の出力は「1」になる。
期間t5に続く次の期間は、期間t3の場合と同様であり、比較器61の出力は「0」になる。
順序回路63は、キャッシュメモリ16が200MHzモードで動作しており、かつ比較器62の出力が期間t3において「1」であるので、200MHzモードの動作マージンは小さいとして、キャッシュアクセスコントローラ16aの分割数指定部43に、分割数変更信号DNCを出力する。すなわち、分割数を2から1に変更する信号が出力される。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを、100MHzモードに変更する。
d)200MHzモードで、200MHzモードと400MHzモードの動作マージンが共に大きいとき
次に、キャッシュメモリ16が200MHzモード(分割数が2)で動作している場合に、200MHzモードと400MHzモードの動作マージンが共に大きいときの動作を説明する。
図12は、キャッシュメモリ16が200MHzモードで動作していて、200MHzモードと400MHzモードの動作マージンが共に大きいときの、FF51〜54の入力データと出力データ、及び比較器61、62の出力の状態を示すタイミングチャートである。これは、過去に動作状態が悪化して400MHzモードから200MHzモードにアクセスモードが移行したが、その後に、動作状態が改善された場合である。
その後のチップの温度低下等により、ウェイセレクタ35の出力であるリードデータが、矢印A4で示すように、FF53に遅れて入力され、FF54にはバッファ回路54aの遅れ分だけさらに遅れて入力されても、FF53と54の入力データは、FF53と54のデータ取り込みタイミングである期間t3の立ち上がりエッジの時T3において、確定している。その結果、期間t3とt4において、FF53の出力データとFF54の出力データは、一致する。そのため、比較器62の出力は「0」になる。
期間t3,t4に続く次の期間においても同様の動作となる。
一方、FF51と52にも、ウェイセレクタ35の出力であるリードデータが、矢印A4で示すように、FF51に遅れて入力され、FF52にはバッファ回路52aの遅れ分だけさらに遅れて入力される。FF51と52の入力データは、FF51と52のそれぞれのデータ取り込みタイミングである期間t2の立ち上がりエッジの時T2において、確定している。その結果、期間t2において、FF51の出力データとFF52の出力データは、一致する。そのため、比較器61の出力は「0」になる。
期間t2に続く次の期間t3においても、FF51と52には同じデータが入力されているので、期間t2の場合と同様に、比較器61の出力は「0」になる。
期間t3に続く次の期間以降も、期間t2,t3の場合と同様であり、比較器61の出力は「0」になる。
順序回路63は、キャッシュメモリ16が200MHzモードで動作しており、かつ比較器61の出力は、期間t2で「0」であるので、200MHzモードと400MHzモードの2つの動作マージンは大きいとして、キャッシュアクセスコントローラ16aの分割数指定部43に、アクセスモードを変更する分割数変更信号DNCを出力する。
すなわち、判定部としての順序回路63は、複数の比較器からの比較結果である一致の情報と、一致のタイミング情報である期間とに基づいて、分割数を増加させる判定を行って、分割数を2から4に変更する分割数変更信号DNCを出力する。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを、次の1CPUサイクル以降のサイクルに、400MHzモードに変更する。
e)100MHzモードで、200MHzモードの動作マージンが小さいとき
次に、キャッシュメモリ16が100MHzモード(分割数が1)で動作している場合に、200MHzモードの動作マージンが小さいときの動作を説明する。
図13は、キャッシュメモリ16が100MHzモードで動作していて、200MHzモードの動作マージンが小さいときの、FF51〜54の入力データと出力データ、及び比較器61、62の出力の状態を示すタイミングチャートである。これは、過去に動作状態が悪化してアクセスモードが100MHzモードに移行し、その後も、動作状態が改善されていない場合である。
ウェイセレクタ35の出力であるリードデータDが、すなわち、ウェイ#0のデータW0、ウェイ#1のデータW1、ウェイ#2のデータW2、あるいはウェイ#3のデータW3のいずれかが、矢印A5で示すように、FF53に遅れて入力され、FF54にはバッファ回路54aの遅れ分だけさらに遅れて入力されても、FF53の入力データは、FF53のデータ取り込みタイミングである期間t3の立ち上がりエッジの時T3において、確定している。しかし、FF54の入力データは、FF54のデータ取り込みタイミングである期間t3の立ち上がりエッジの時T3において、確定していない。その結果、期間t3とt4において、FF53の出力データとFF54の出力データは、不一致となる。そのため、比較器62の出力は「1」になる。
しかし、FF53と54の入力データは、FF53と54のデータ取り込みタイミングである期間t5の立ち上がりエッジの時T5において、確定している。その結果、期間t3とt4に続く期間t5とその次の期間では、FF53の出力データとFF54の出力データは、一致する。そのため、比較器62の出力は「0」になる。
そして、期間t3,t4に続く期間t5及びそれに続く期間においても同様の動作となる。
一方、FF51と52にも、ウェイセレクタ35の出力であるリードデータが、矢印A5で示すように、FF51に遅れて入力され、FF52にはバッファ回路52aの遅れ分だけさらに遅れて入力される。FF51と52の入力データは、FF51と52のそれぞれのデータ取り込みタイミングである期間t2の立ち上がりエッジの時T2において、確定しておらず、不定値であるため、期間t2において、FF51の出力データとFF52の出力データは、不一致となり、比較器61の出力は「1」になる。
FF51の入力データは、FF51のデータ取り込みタイミングである期間t3の立ち上がりエッジの時T3において、確定しているが、FF52の入力データは、T3において、確定しておらず、値は不定であるため、期間t3において、FF51の出力データとFF52の出力データは、不一致となり、比較器61の出力は「1」になる。
期間t3に続く次の期間t4においては、FF51と52のそれぞれの入力データは確定しており、かつ同じデータが入力されているので、比較器61の出力は「0」になる。
期間t4に続く次の期間t5とその次の期間でも、FF51の出力データとFF52の出力データは一致しているので、比較器61の出力は「0」になる。
順序回路63は、キャッシュメモリ16が100MHzモードで動作しており、かつ比較器62の出力が期間t3において「1」であるので、200MHzモードの動作マージンは小さいとして、キャッシュアクセスコントローラ16aの分割数指定部43に、アクセスモードを変更させる分割数変更信号DNCを出力しない。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを、100MHzモードに、維持する。
f)100MHzモードで、200MHzモードの動作マージンが大きいとき
次に、キャッシュメモリ16が100MHzモード(分割数が1)で動作している場合に、200MHzモードの動作マージンが大きいときの動作を説明する。
図14は、キャッシュメモリ16が100MHzモードで動作していて、200MHzモードの動作マージンが大きいときの、FF51〜54の入力データと出力データ、及び比較器61、62の出力の状態を示すタイミングチャートである。これは、過去に動作状態が悪化してアクセスモードが100MHzモードに移行し、その後に、動作状態が改善されている場合である。
ウェイセレクタ35の出力であるリードデータが、矢印A6で示すように、FF53に遅れて入力され、FF54にはバッファ回路54aの遅れ分だけさらに遅れて入力されても、FF53の入力データとFF54の入力データは、FF53とFF54のデータ取り込みタイミングである期間t3の立ち上がりエッジの時T3において、確定している。その結果、期間t3とt4において、FF53の出力データとFF54の出力データは、一致し、比較器62の出力は「0」になる。
また、FF53と54の入力データは、FF53と54のデータ取り込みタイミングである期間t5の立ち上がりエッジの時T5においても、確定している。その結果、期間t3とt4に続く期間t5とその次の期間では、FF53の出力データとFF54の出力データは、一致し、比較器62の出力は「0」になる。
一方、FF51と52にも、ウェイセレクタ35の出力であるリードデータが、矢印A6で示すように、FF51に遅れて入力され、FF52にはバッファ回路52aの遅れ分だけさらに遅れて入力される。FF51と52の入力データは、FF51と52のそれぞれのデータ取り込みタイミングである期間t2の立ち上がりエッジの時T2において、確定しておらず、値は不定であるため、期間t2において、FF51の出力データとFF52の出力データは、不一致となり、比較器61の出力は「1」になる。
FF51とFF52のそれぞれの入力データは、FF51とFF52のデータ取り込みタイミングである期間t3の立ち上がりエッジの時T3において、確定しており、期間t3において、FF51の出力データとFF52の出力データは、一致し、比較器61の出力は「0」になる。
期間t3に続く次の期間t4においても、FF51と52のそれぞれの入力データは確定しており、かつ同じデータが入力されているので、比較器61の出力は「0」になる。
期間t4に続く次の期間t5とその次の期間でも、FF51の出力データとFF52の出力データは一致しているので、比較器61の出力は「0」になる。
順序回路63は、キャッシュメモリ16が100MHzモードで動作しており、かつ比較器62の出力が期間t3において「0」であるので、200MHzモードの動作マージンは大きいとして、キャッシュアクセスコントローラ16aの分割数指定部43に、アクセスモードを変更する分割数変更信号DNCを出力する。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを、200MHzモードに変更する。
以上のように、判定部としての順序回路63は、複数の比較器からの比較結果である一致あるいは不一致の情報と、一致あるいは不一致のタイミング情報である期間とに基づいて、分割数を増加、あるいは減少させる判定を行って、必要な分割数変更信号DNCを出力する。
従って、本実施の形態のキャッシュメモリ装置は、複数のウェイの選択をキャッシュヒットすると、それ以降の選択を停止し、かつ、複数の比較器の出力状態とキャッシュメモリ16のアクセスモードとに基づいて、アクセスモードの変更をするようにしたので、通常アクセスモードと同等のキャッシュヒット性能を持ちつつ、可能な限りの低消費電力で動作することができる。
(第2の実施の形態)
次に、本発明の第2の実施の形態を説明する。
1.構成
第1の実施の形態では、キャッシュメモリ16は、分割数変更部16bには、複数の、例としては2つの、比較器を有して、複数の、例としては2つの、アクセスモードのタイミング違反を検出していた。本実施の形態では、複数のアクセスモードのタイミング違反を検出するための複数の比較器を設ける代わりに、1つのアクセスモードのタイミング違反を検出するための比較器の出力パターンに基づいて、分割数の変更をするようにした。
本実施の形態に係わるプロセッサにおいて、第1の実施の形態と同じ構成要素については、同じ符号を付し、説明は省略する。本実施の形態のプロセッサは、分割数変更部の構成が、図1のプロセッサ1と異なる。
図15は、第2の実施の形態に係る、キャッシュメモリ16Aの構成例を説明するための図である。図15において、図3と同じ構成要素については、同じ符号を付し、説明は省略する。
図15に示すように、分割数変更部16cは、400MHzのタイミング違反を検出するための2つのFF51と52と、比較器61と、順序回路64とを含む。分割数変更部16cでは、図3における200MHzで動作するFF53,54と、その後段に接続される比較器62が取り除かれている。
順序回路64は、パターンデータ記憶部64aを有しており、パターンデータ記憶部64aには、一致あるいは不一致のタイミングのパターンデータが予め記憶されている。判定部としての順序回路64は、比較器61から入力された一致あるいは不一致のタイミング情報である出力パターンと、パターンデータ記憶部64aに記憶されたパターンデータとを比較し、一致したパターンデータに対応する分割数変更信号DNCを、分割数指定部43に出力する。
本実施の形態に係るキャッシュメモリでは、分割数の変更は、パターンデータ記憶部64aに記憶されたパターンデータに基づいて行われる。
以下、アクセスモードと動作マージンの状態毎に、比較器61の出力パターンと、パターンデータ記憶部64aに記憶されたパターンデータとに基づくキャッシュメモリ16の動作について説明する。
2.動作
始めに、キャッシュアクセスコントローラが400MHzモードで動作し、400MHzの動作マージンが大きいことは、上述した図8における比較器61の出力パターンの期間t2において、信号が「0」になっていることから判断される。
すなわち、パターンデータ記憶部64aに、400MHzモード時に、期間t2におけるデータ「0」が記憶され、その記憶されたパターンデータと比較器61の出力パターンが比較される。そして、このとき、順序回路64は、400MHzの動作マージンが大きいので、分割数変更信号DNCを出力しない。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを400MHzモードに維持する。
そのため、パターンデータ記憶部64aには、次のパターンデータP0が記憶されている。
P0:* 0 * *
なお、このパターンデータでは、「*」は、いずれの値でもよいことを示し、期間t1,t2,t3,t4の順番の値が示されている(以下、同じ)。
a)400MHzモードで、400MHzの動作マージンが小さいとき
400MHzモードで動作している時に、400MHzの動作マージンが小さいことは、上述した図9における比較器61の出力が、期間t2において、「1」になっていることから判断される。
そのため、パターンデータ記憶部64aには、次のパターンデータPaが記憶されている。
Pa:* 1 * *
すなわち、パターンデータ記憶部64aに、400MHzモード時に、期間t2におけるデータ「1」が記憶され、その記憶されたパターンデータと比較器61の出力パターンが比較される。そして、この出力パターンの場合、400MHzの動作マージンが小さいので、順序回路64は、分割数変更信号DNCを出力する。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを400MHzモードから200MHzモードに移行する。
b)200MHzモードで、400MHzモードの動作マージンは小さく、かつ200MHzモードの動作マージンが大きいとき
200MHzモード動作時に、400MHzの動作マージンは小さい(すなわち400MHzのタイミング違反がある)が、200MHz動作の動作マージンが大きいことは、上述した図10の比較器61の出力が、期間t2において「1」で、期間t3において「0」になっていることから判断される。
そのため、パターンデータ記憶部64aには、次のパターンデータPbが記憶されている。
Pb:* 1 0 *
すなわち、パターンデータ記憶部64aに、400MHzモード時に、期間t2におけるデータが「1」で、期間t3におけるデータ「0」が記憶され、その記憶されたパターンデータと比較器61の出力パターンが比較される。そして、ここの出力パターンの場合、400MHzの動作マージンが小さく、かつ200MHzモードの動作マージンが大きいので、順序回路64は、分割数変更信号DNCを出力しない。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを200MHzモードに維持する。
c)200MHzモードで、200MHzモードの動作マージンは小さいとき
200MHzモード動作時に、200MHz動作の動作マージンが小さいことは、上述した図11の比較器61の出力が、期間t2において「1」で、期間t3において「1」になっていることから判断される。
そのため、パターンデータ記憶部64aには、次のパターンデータPcが記憶されている。
Pc:* 1 1 *
すなわち、パターンデータ記憶部64aに、200MHzモード時に、期間t2におけるデータが「1」で、期間t3におけるデータ「1」が記憶され、その記憶されたパターンデータと比較器61の出力パターンが比較される。そして、この出力パターンの場合、200MHzの動作マージンが小さいので、順序回路64は、分割数変更信号DNCを出力する。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを200MHzモードから100MHzモードに移行する。
d)200MHzモードで、200MHzモードと400MHzモードの動作マージンが共に大きいとき
200MHzモード動作時に、400MHzの動作マージンが大きいことは、上述した図12の比較器61の出力が、期間t2において「0」になっていることから判断される。
そのため、パターンデータ記憶部64aには、次のパターンデータPdが記憶されている。
Pd:* 0 * *
すなわち、パターンデータ記憶部64aに、200MHzモード時に、期間t2におけるデータ「0」が記憶され、その記憶されたパターンデータと比較器61の出力パターンが比較される。そして、この出力パターンの場合、200MHzモードと400MHzモードの動作マージンが共に大きいので、順序回路64は、分割数変更信号DNCを出力する。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを200MHzモードから400MHzモードに移行する。
e)100MHzモードで、200MHzモードの動作マージンが小さいとき
100MHzモード動作時に、200MHzの動作マージンが小さいことは、上述した図13の比較器61の出力が、期間t3において「1」になっていることから判断される。
そのため、パターンデータ記憶部64aには、次のパターンデータPeが記憶されている。
Pe:* * 1 *
すなわち、パターンデータ記憶部64aに、100MHzモード時に、期間t3におけるデータ「1」が記憶され、その記憶されたパターンデータと比較器61の出力パターンが比較される。そして、この出力パターンの場合、200MHzモードの動作マージンが小さいので、順序回路64は、分割数変更信号DNCを出力しない。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを100MHzモードに維持する。
f)100MHzモードで、200MHzモードの動作マージンが大きいとき
100MHzモード動作時に、200MHzの動作マージンが大きいことは、上述した図14の比較器61の出力が、期間t3において「0」になっていることから判断される。
そのため、パターンデータ記憶部64aには、次のパターンデータPfが記憶されている。
Pf:* * 0 *
すなわち、パターンデータ記憶部64aに、100MHzモード時に、期間t3におけるデータ「0」が記憶され、その記憶されたパターンデータと比較器61の出力パターンが比較される。そして、この出力パターンの場合、200MHzモードの動作マージンが大きいので、順序回路64は、分割数変更信号DNCを出力する。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを100MHzモードから200MHzモードに移行する。
以上に説明したように、アクセスモード毎に、上述したような一致あるいは不一致のタイミングのパターンデータすなわちパターン情報を、パターンデータ記憶部64aに予め記憶させておき、比較器61の出力パターン、すなわちリードデータの一致あるいは不一致のタイミング情報である出力パターンと比較することによって、動作マージンを判定でき、適切にアクセスモードを変更することができる。
従って、本実施の形態によれば、第1の実施の形態における一つのタイミング違反検出用のFFと比較器を取り除いても、第1の実施の形態と同様の効果を生じ得、さらに、第1の実施の形態に比べてハードウェア資源を減らすことができる。
(第3の実施の形態)
次に、本発明の第3の実施の形態を説明する。
1.構成
上述した2つの実施の形態では、400MHzのタイミング違反と200MHzのタイミング違反を検出するために、2つのFFのうち一方の入力段に、遅延用のバッファ回路を設け、2つのFFの出力データの比較を行っている。これに対して、本実施の形態では、比較器の代わりに、データの誤りを検出する回路、例えば、パリティ検査回路、CRC回路等を利用して、動作マージンの大小が判断される。これは、タイミング違反が発生したFFが保持する値は不定値となり、偶奇パリティ、CRC等を含むデータの整合性が取れなくなるということを利用している。
本実施の形態に係わるプロセッサにおいて、第1の実施の形態と同じ構成要素については、同じ符号を付し、説明は省略する。本実施の形態のプロセッサは、分割数変更部の構成が、図1のプロセッサ1と異なる。
図16は、第3の実施の形態に係る、キャッシュメモリ16Bの構成例を説明するための図である。図16において、図3と同じ構成要素については、同じ符号を付し、説明は省略する。
図16に示すように、分割数変更部16dは、リードデータが入力される遅延用のバッファ回路52aと、そのバッファ回路52aの出力データを入力データとして入力するFF52と、FF52の出力データが入力されるパリティ検査回路71と、順序回路65とを含む。
順序回路65のパターンデータ記憶部65aには、パターンデータが予め記憶されており、順序回路65は、パリティ検査回路71の出力パターンと、パターンデータ記憶部65aに記憶されたパターンデータとを比較し、一致したパターンデータに対応する分割数変更信号DNCを、分割数指定部43に出力する。
本実施の形態に係るキャッシュメモリでは、分割数の変更は、パターンデータ記憶部65aに記憶されたパターンデータ、すなわちデータの誤り情報、に基づいて行われる。なお、データの誤り情報に基づくとは、データの誤り情報に基づくあるいは、正しいデータの情報に基づく、のいずれの場合も含む。
以下、アクセスモードと動作マージンの状態毎に、パリティ検査回路71の出力パターンと、パターンデータ記憶部65aに記憶されるパターンデータとに基づくキャッシュメモリ16Bの動作について説明する。
2.動作
始めに、キャッシュアクセスコントローラが400MHzモードで動作し、400MHzの動作マージンが大きい場合について説明する。
図17は、キャッシュアクセスコントローラが400MHzモードで動作し、400MHzの動作マージンが大きいときの、CPUコア15のリードデータと、FF52の入力データと出力データ、及びパリティ検査回路71の出力の状態を示すタイミングチャートである。
図17の場合、リードデータの遅延量が少なく、期間t2において、FF52が正しくウェイ#0のリードデータを取り込んでいる。FF52の後段に接続されたパリティ検査回路71は、リードデータとそれに付与されたパリティビットの整合性を確かめ、正常であることを示す「0」を出力している。そのため、次のCPUサイクルにおいても、キャッシュアクセスコントローラ16aは、400MHz動作を維持する。
すなわち、パターンデータ記憶部65aに、400MHzモード時に、期間t2におけるデータが「0」が予め記憶され、その記憶されたパターンデータとパリティ検査回路71の出力パターンが比較される。このとき、順序回路65は、400MHzの動作マージンが大きいので、分割数変更信号DNCを出力しない。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを400MHzモードに維持する。
そのため、パターンデータ記憶部65aには、次のパターンデータP0が記憶されている。
P0:* 0 * *
a)400MHzモードで、400MHzの動作マージンが小さいとき
図18は、400MHzモードで動作している時に、400MHzの動作マージンが小さいときの、CPUコア15のリードデータと、FF52の入力データと出力データ、及びパリティ検査回路71の出力の状態を示すタイミングチャートである。
図18の場合、矢印A11で示すように、リードデータの遅延量が多く、期間t2において、FF52が正しくウェイ#0のリードデータを取り込めず、不定値を含んだデータを取り込む。よって、FF52の出力データは、不定値となり、パリティ検査回路71においてエラーが検出される。その結果、パリティ検査回路71は、エラーを示す「1」を出力している。そのため、次のCPUサイクルにおいて、キャッシュアクセスコントローラ16aは、200MHz動作に移行する。
400MHzモードで動作している時に、400MHzの動作マージンが小さいことは、上述した図18におけるパリティ検査回路71の出力が、期間t2において、「1」になっていることから判断される。
そのため、パターンデータ記憶部65aには、次のパターンデータPaが記憶されている。
Pa:* 1 * *
すなわち、パターンデータ記憶部65aに、400MHzモード時に、期間t2におけるデータとして「1」が予め記憶され、その記憶されたパターンデータとパリティ検査回路71の出力パターンが比較される。このとき、順序回路65は、400MHzの動作マージンが小さいので、分割数変更信号DNCを出力する。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを400MHzモードから200MHzモードに移行する。
b)200MHzモードで、400MHzモードの動作マージンは小さく、かつ200MHzモードの動作マージンが大きいとき
図19は、200MHzモードで動作している時に、400MHzの動作マージンが小さく、かつ200MHzモードの動作マージンが大きいときの、CPUコア15のリードデータと、FF52の入力データと出力データ、及びパリティ検査回路71の出力の状態を示すタイミングチャートである。
図19の場合、矢印A12で示すように、リードデータの遅延量が多く、期間t2において、FF52が正しくウェイ#0又は#1のリードデータを取り込めず、不定値を含んだデータを取り込む。よって、FF52の出力データは、不定値となり、パリティ検査回路71においてエラーが検出される。その結果、パリティ検査回路71は、エラーを示す「1」を出力している。次の期間t3では、FF52の出力データは、正しくウェイ#0又は#1のリードデータを取り込んでいるため、パリティ検査回路71は、「0」を出力する。
しかし、その次の期間t4では、期間t2と同様に、FF52が正しくウェイ#2又は#3のリードデータを取り込めず、FF52の出力データは、不定値となり、パリティ検査回路71は、エラーを示す「1」を出力している。次の期間t5では、FF52の出力データは、正しくウェイ#2又は#3のリードデータを取り込んでいるため、パリティ検査回路71は、「0」を出力する。
そのため、次のCPUサイクルにおいて、キャッシュアクセスコントローラ16aは、200MHz動作を維持する。
200MHzモードで動作している時に、400MHzの動作マージンが小さく、かつ200MHzモードの動作マージンが大きいことは、上述した図19におけるパリティ検査回路71の出力が、期間t2において「1」で、期間t3において「0」になっていることから判断される。
そのため、パターンデータ記憶部65aには、次のパターンデータPbが記憶されている。
Pb:* 1 0 *
すなわち、パターンデータ記憶部65aに、200MHzモード時に、期間t2におけるデータとして「1」が、期間t3におけるデータとして「0」が予め記憶され、その記憶されたパターンデータとパリティ検査回路71の出力パターンが比較される。このとき、順序回路65は、200MHzの動作マージンが大きいので、分割数変更信号DNCを出力しない。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを200MHzモードに維持する。
なお、図20は、キャッシュアクセスコントローラ16aが200MHzで動作していて、400MHzモードでの動作マージンが無し(すなわちタイミング違反有り)で、200MHzの動作マージンが大きいときの、CPUコア15のリードデータと、FF52の入力データと出力データ、及びパリティ検査回路71の出力の状態を示すタイミングチャートである。
図20の場合、矢印A13で示すように、リードデータの遅延量が多く、期間t2においてリードデータは、不定値である。よって、パリティ検査回路71の出力は「1」を示すが、期間t3では、FF52に正常値が取り込まれる。その結果、パリティ検査回路71の出力は「0」となる。従って、図19の場合と同様に、キャッシュアクセスコントローラ16aは、200MHzモードを維持する。
c)200MHzモードで、200MHzモードの動作マージンは小さいとき
図21は、200MHzモードで動作している時に、200MHzの動作マージンが小さいときの、CPUコア15のリードデータと、FF52の入力データと出力データ、及びパリティ検査回路71の出力の状態を示すタイミングチャートである。
図21の場合、矢印A14で示すように、リードデータの遅延量が多く、期間t3において、FF52が正しくウェイ#0又は#1のリードデータを取り込めず、不定値を含んだデータを取り込む。よって、FF52の出力データは、不定値となり、パリティ検査回路71においてエラーが検出される。
しかし、その次の期間t4では、FF52が正しくウェイ#0又は#1のリードデータを取り込んでいるため、パリティ検査回路71は、「0」を出力する。さらに、次の期間t5では、FF52が正しくウェイ#2又は#3のリードデータを取り込めず、不定値を含んだデータを取り込む。よって、FF52の出力データは、不定値となり、パリティ検査回路71においてエラーが検出される。期間t5の次の期間t6では、FF52の出力データは、正しくウェイ#2又は#3のリードデータを取り込んでいるため、パリティ検査回路71は、「0」を出力する。
そのため、次のCPUサイクルにおいて、キャッシュアクセスコントローラ16aは、100MHz動作に移行する。
200MHzモードで動作している時に、200MHzの動作マージンが小さいことは、上述した図21におけるパリティ検査回路71の出力が、期間t3において、「1」になっていることから判断される。
そのため、パターンデータ記憶部65aには、次のパターンデータPcが記憶されている。
Pc:* * 1 *
すなわち、パターンデータ記憶部65aに、200MHzモード時に、期間t3におけるデータとして「1」が予め記憶され、その記憶されたパターンデータとパリティ検査回路71の出力パターンが比較される。このとき、順序回路65は、200MHzの動作マージンが小さいので、分割数変更信号DNCを出力する。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを200MHzモードから100MHzモードに移行する。
d)200MHzモードで、200MHzモードと400MHzモードの動作マージンが共に大きいとき
図22は、200MHzモードで動作している時に、400MHzの動作マージンが大きく、かつ200MHzモードの動作マージンが大きいときの、CPUコア15のリードデータと、FF52の入力データと出力データ、及びパリティ検査回路71の出力の状態を示すタイミングチャートである。
図22の場合、矢印A15で示すように、リードデータの遅延量が少なく、期間t2において、FF52が正しくウェイ#0又は#1のリードデータを取り込んでいるため、パリティ検査回路71は、「0」を出力する。その後も、FF52の出力データは、正しくウェイ#2又は#3のリードデータを取り込んでいるため、パリティ検査回路71は、「0」を出力する。
そのため、次のCPUサイクルにおいて、キャッシュアクセスコントローラ16aは、400MHzモードに移行する。
200MHzモードで動作している時に、400MHzの動作マージンが大きく、かつ200MHzモードの動作マージンが大きいことは、上述した図22におけるパリティ検査回路71の出力が、期間t2において「0」になっていることから判断される。
そのため、パターンデータ記憶部65aには、次のパターンデータPdが記憶されている。
Pd:* 0 * *
すなわち、パターンデータ記憶部65aに、200MHzモード時に、期間t2におけるデータが「0」が記憶され、パリティ検査回路71の出力が、キャッシュアクセスコントローラ16aが200MHzモードで動作していて、期間t2において「0」のときに、400MHzの動作マージンが大きいので、分割数変更信号DNCを出力する。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを200MHzモードから400MHzモードに移行する。
e)100MHzモードで、200MHzモードの動作マージンが小さいとき
図23は、100MHzモードで動作している時に、200MHzの動作マージンが小さいときの、CPUコア15のリードデータと、FF52の入力データと出力データ、及びパリティ検査回路71の出力の状態を示すタイミングチャートである。
図23の場合、矢印A16で示すように、リードデータの遅延量が多く、期間t3において、FF52が正しくウェイ#0から#3のいずれかのリードデータを取り込めず、不定値を含んだデータを取り込む。よって、FF52の出力データは、不定値となり、パリティ検査回路71においてエラーが検出される。
しかし、その次の期間t4とそれ以降の期間では、FF52が正しくウェイ#0から#3のいずれかのリードデータを取り込んでいるため、パリティ検査回路71は、「0」を出力する。
そのため、次のCPUサイクルにおいて、キャッシュアクセスコントローラ16aは、100MHz動作を維持する。
なお、期間t2では、FF52の入力データは不定値のため、パリティ検査回路71の出力は「1」となる。
100MHzモードで動作している時に、200MHzの動作マージンが小さいことは、上述した図21におけるパリティ検査回路71の出力が、期間t3において、「1」になっていることから判断される。
そのため、パターンデータ記憶部65aには、次のパターンデータPeが記憶されている。
Pe:* * 1 *
すなわち、パターンデータ記憶部65aに、100MHzモード時に、期間t3におけるデータとして「1」が記憶され、その記憶されたパターンデータとパリティ検査回路71の出力パターンが比較される。このとき、順序回路65は、200MHzの動作マージンが小さいので、分割数変更信号DNCを出力しない。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを100MHzモードに維持する。
f)100MHzモードで、200MHzモードの動作マージンが大きいとき
図24は、100MHzモードで動作している時に、200MHzモードの動作マージンが大きいときの、CPUコア15のリードデータと、FF52の入力データと出力データ、及びパリティ検査回路71の出力の状態を示すタイミングチャートである。
図24の場合、矢印A17で示すように、リードデータの遅延量が少なく、期間t3において、FF52が正しくウェイ#0から#3のいずれかのリードデータを取り込んでいるため、パリティ検査回路71は、「0」を出力する。その後も、FF52の出力データは、正しくウェイ#0から#3のいずれかのリードデータを取り込んでいるため、パリティ検査回路71は、「0」を出力する。
そのため、次のCPUサイクルにおいて、キャッシュアクセスコントローラ16aは、200MHz動作に移行する。
100MHzモードで動作している時に、200MHzの動作マージンが大きいことは、上述した図24におけるパリティ検査回路71の出力が、期間t3において「0」になっていることから判断される。
そのため、パターンデータ記憶部65aには、次のパターンデータPfが記憶されている。
Pf:* * 0 *
すなわち、パターンデータ記憶部65aに、100MHzモード時に、期間t3におけるデータとして「0」が記憶され、その記憶されたパターンデータとパリティ検査回路71の出力パターンが比較される。このとき、順序回路65は、200MHzの動作マージンが大きいので、分割数変更信号DNCを出力する。その結果、キャッシュアクセスコントローラ16aは、アクセスモードを100MHzモードから200MHzモードに移行する。
以上のように、本実施の形態のキャッシュメモリ制御装置によれば、データの誤りを検出する誤り検出部としての、リードデータのパリティエラーを検査するパリティ検査回路によって、データの誤り情報が得られる。その得られたデータの誤り情報に基づいて、分割数変更信号DNCが出力される。
従って、本実施の形態のキャッシュメモリ装置は、複数のウェイの選択をキャッシュヒットすると、それ以降の選択を停止し、かつ、データ誤り検査回路の出力状態とキャッシュメモリ16のアクセスモードとに基づいて、アクセスモードの変更をするようにしたので、通常アクセスモードと同等のキャッシュヒット性能を持ちつつ、可能な限りの低消費電力で動作することができる。
なお、誤り検出部としては、リードデータの連続する誤りを検査する巡回冗長検査回路でもよい。
以上のように、上述した各実施の形態のキャッシュメモリは、メモリリードパスに付加した回路を用いてタイミング違反を検出するので、メモリリードパスで発生するタイミング違反を、従来よりも精度良く検出することができる。このため、消費電力が低いモードで動作する時間を、従来よりも長くすることが可能になり、キャッシュメモリの平均消費電力を下げることができる。
なお、各実施の形態では、キャッシュメモリは4ウェイセットアソシアティブ方式の場合で、CPUのクロック周波数は100MHz、キャッシュメモリのクロック周波数は400MHz、キャッシュのアクセスモードは400MHz,200MHz,及び100MHzのモードで説明したが、他のウェイ数、他の動作周波数であってもよい。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
本発明の第1の実施の形態に係わるプロセッサの構成を示す構成図である。 本発明の第1の実施の形態に係わる実アドレスデータの構成例を示す図である。 本発明の第1の実施の形態に係わるキャッシュメモリの構成例を説明するための図である。 本発明の第1の実施の形態に係わる分割数テーブルの例を示す図である。 本発明の第1の実施の形態に係わるプロセッサの動作を説明するためのタイミングチャートである。 本発明の第1の実施の形態に係わる、ウェイ#3でキャッシュヒットした場合のタイミングチャートである。 本発明の第1の実施の形態に係わる、通常アクセスモード、順次アクセスモード及び中間モードの3つのアクセスモードにおける消費電力の状態を概念的に説明するための図である。 本発明の第1の実施の形態に係わる、キャッシュメモリが400MHzモードで動作し、かつ動作マージンが大きいときの、2つのFFの入力データと出力データ、及び比較器の出力の状態を示すタイミングチャートである。 本発明の第1の実施の形態に係わる、キャッシュメモリが400MHzモードで動作していて、動作マージンが小さいときの、2つのFFの入力データと出力データ、及び比較器の出力の状態を示すタイミングチャートである。 本発明の第1の実施の形態に係わる、キャッシュメモリが200MHzモードで動作していて、400MHzモードの動作マージンは小さく、200MHモードの動作マージンが大きいときの、4つのFFの入力データと出力データ、及び2つの比較器の出力の状態を示すタイミングチャートである。 本発明の第1の実施の形態に係わる、キャッシュメモリが200MHzモードで動作していて、200MHzモードの動作マージンが小さいときの、4つのFFの入力データと出力データ、及び2つの比較器の出力の状態を示すタイミングチャートである。 本発明の第1の実施の形態に係わる、キャッシュメモリが200MHzモードで動作していて、200MHzモードと400MHzモードの動作マージンが共に大きいときの、4つのFFの入力データと出力データ、及び2つの比較器出力の状態を示すタイミングチャートである。 本発明の第1の実施の形態に係わる、キャッシュメモリが100MHzモードで動作していて、200MHzモードの動作マージンが小さいときの、4つのFFの入力データと出力データ、及び2つの比較器の出力の状態を示すタイミングチャートである。 本発明の第1の実施の形態に係わる、キャッシュメモリが100MHzモードで動作していて、200MHzモードの動作マージンが大きいときの、4つのFFの入力データと出力データ、及び2つの比較器の出力の状態を示すタイミングチャートである。 本発明の第2の実施の形態に係る、キャッシュメモリの構成例を説明するための図である。 本発明の第3の実施の形態に係る、キャッシュメモリの構成例を説明するための図である。 本発明の第3の実施の形態に係る、キャッシュアクセスコントローラが400MHzモードで動作し、400MHzの動作マージンが大きいときの、CPUコアのリードデータと、FFの入力データと出力データ、及びパリティ検査回路の出力の状態を示すタイミングチャートである。 本発明の第3の実施の形態に係る、400MHzモードで動作している時に、400MHzの動作マージンが小さいときの、CPUコアのリードデータと、FFの入力データと出力データ、及びパリティ検査回路の出力の状態を示すタイミングチャートである。 本発明の第3の実施の形態に係る、200MHzモードで動作している時に、400MHzの動作マージンが小さく、かつ200MHzモードの動作マージンが大きいときの、CPUコアのリードデータと、FFの入力データと出力データ、及びパリティ検査回路の出力の状態を示すタイミングチャートである。 本発明の第3の実施の形態に係る、200MHzモードで動作していて、400MHzモードでの動作マージンが無し(すなわちタイミング違反有り)で、200MHzの動作マージンが大きいときの、CPUコアのリードデータと、FFの入力データと出力データ、及びパリティ検査回路の出力の状態を示すタイミングチャートである。 本発明の第3の実施の形態に係る、200MHzモードで動作している時に、200MHzの動作マージンが小さいときの、CPUコアのリードデータと、FFの入力データと出力データ、及びパリティ検査回路の出力の状態を示すタイミングチャートである。 本発明の第3の実施の形態に係る、200MHzモードで動作している時に、400MHzの動作マージンが大きく、かつ200MHzモードの動作マージンが大きいときの、CPUコアードデータと、FF52の入力データと出力データ、及びパリティ検査回路の出力の状態を示すタイミングチャートである。 本発明の第3の実施の形態に係る、100MHzモードで動作している時に、200MHzの動作マージンが小さいときの、CPUコアのリードデータと、FFの入力データと出力データ、及びパリティ検査回路の出力の状態を示すタイミングチャートである。 本発明の第3の実施の形態に係る、100MHzモードで動作している時に、200MHzモードの動作マージンが大きいときの、CPUコアのリードデータと、FFの入力データと出力データ、及びパリティ検査回路の出力の状態を示すタイミングチャートである。
符号の説明
1 プロセッサ、11 CPU、12 主メモリ、13 バス、15 CPUコア、16 キャッシュメモリ、16a キャッシュアクセスコントローラ、16b、16c 分割数変更部、17 周波数設定レジスタ、31 小容量記憶部、33 比較部、34 ワードセレクタ、35 ウェイセレクタ、51 タイミング違反検出回路、52a バッファ、61 比較器

Claims (5)

  1. 複数のウェイを所定の分割数で分割したキャッシュメモリの各ウェイあるいは2以上のウェイを、所定の順番で選択可能な選択部と、
    前記選択部により選択された各ウェイあるいは2以上のウェイについて、前記各ウェイにおけるキャッシュヒットを検出するキャッシュヒット検出部と、
    前記キャッシュヒットを検出すると、前記選択部における前記各ウェイあるいは2以上のウェイの選択を停止させる制御部と、
    前記キャッシュメモリからのリードデータを、一方が他方に対して所定の遅延量を有する2つのリードデータバスに伝播させた後にそれぞれの値を比較する比較部を有し、該比較部における前記2つのリードデータの一致あるいは不一致に応じて、前記所定の分割数を変更する分割数変更部と、
    を有することを特徴とするキャッシュメモリ制御回路。
  2. 前記比較部は、それぞれが前記所定の分割数に応じた周波数のタイミングで前記2つのリードデータを比較する複数の比較器を有し、
    前記分割数変更部は、前記複数の比較器における、前記2つのリードデータの一致あるいは不一致に応じて、分割する前記所定の分割数を変更する請求項1に記載のキャッシュメモリ制御回路。
  3. 前記分割数変更部は、前記一致あるいは不一致のタイミングのパターン情報と、前記比較部における前記2つのリードデータの一致あるいは不一致のタイミングの情報とに基づいて、前記所定の分割数を変更することを特徴とする請求項1に記載のキャッシュメモリ制御回路。
  4. 複数のウェイを所定の分割数で分割したキャッシュメモリの各ウェイあるいは2以上のウェイを、所定の順番で選択可能な選択部と、
    前記選択部により選択された各ウェイあるいは2以上のウェイについて、前記各ウェイにおけるキャッシュヒットを検出するキャッシュヒット検出部と、
    前記キャッシュヒットを検出すると、前記選択部における前記各ウェイあるいは2以上のウェイの選択を停止させる制御部と、
    前記キャッシュメモリからのリードデータの誤りを検出する誤り検出部を有し、該誤り検出部において検出されたデータの誤りの情報に基づいて、前記所定の分割数を変更する分割数変更部と、
    を有することを特徴とするキャッシュメモリ制御回路。
  5. 複数のウェイを所定の分割数で分割したキャッシュメモリの各ウェイあるいは2以上のウェイを、所定の順番で選択可能な選択部と、前記選択部により選択された各ウェイあるいは2以上のウェイについて、前記各ウェイにおけるキャッシュヒットを検出するキャッシュヒット検出部と、前記キャッシュヒットを検出すると、前記選択部における前記各ウェイあるいは2以上のウェイの選択を停止させる制御部と、前記キャッシュメモリからのリードデータを、一方が他方に対して所定の遅延量を有する2つのリードデータバスに伝播させた後にそれぞれの値を比較する比較部を有し、該比較部における前記2つのリードデータの一致あるいは不一致に応じて、前記所定の分割数を変更する分割数変更部とを有するキャッシュメモリ制御回路と、
    前記キャッシュメモリに接続されたCPUと、
    を有することを特徴とするプロセッサ。
JP2008186304A 2008-07-17 2008-07-17 キャッシュメモリ制御回路及びプロセッサ Expired - Fee Related JP5142868B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008186304A JP5142868B2 (ja) 2008-07-17 2008-07-17 キャッシュメモリ制御回路及びプロセッサ
US12/483,445 US8312232B2 (en) 2008-07-17 2009-06-12 Cache memory control circuit and processor for selecting ways in which a cache memory in which the ways have been divided by a predeterminded division number

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008186304A JP5142868B2 (ja) 2008-07-17 2008-07-17 キャッシュメモリ制御回路及びプロセッサ

Publications (2)

Publication Number Publication Date
JP2010026716A JP2010026716A (ja) 2010-02-04
JP5142868B2 true JP5142868B2 (ja) 2013-02-13

Family

ID=41531278

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008186304A Expired - Fee Related JP5142868B2 (ja) 2008-07-17 2008-07-17 キャッシュメモリ制御回路及びプロセッサ

Country Status (2)

Country Link
US (1) US8312232B2 (ja)
JP (1) JP5142868B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011100213A (ja) * 2009-11-04 2011-05-19 Renesas Electronics Corp キャッシュ装置
KR101933741B1 (ko) * 2011-06-09 2018-12-28 가부시키가이샤 한도오따이 에네루기 켄큐쇼 캐시 메모리 및 캐시 메모리의 구동 방법
JP5772492B2 (ja) * 2011-10-21 2015-09-02 富士通株式会社 演算処理装置
WO2013098919A1 (ja) 2011-12-26 2013-07-04 ルネサスエレクトロニクス株式会社 データ処理装置
CN102591799B (zh) 2011-12-30 2015-04-15 华为技术有限公司 一种存放数据的方法和装置
US9058070B2 (en) * 2012-05-30 2015-06-16 Utah State University Predicting timing violations
US10089238B2 (en) 2014-07-17 2018-10-02 Qualcomm Incorporated Method and apparatus for a shared cache with dynamic partitioning
GB2537357A (en) * 2015-04-09 2016-10-19 Imagination Tech Ltd Cache operation in a multi-threaded processor
US11176051B2 (en) * 2020-03-13 2021-11-16 Shenzhen GOODIX Technology Co., Ltd. Multi-way cache memory access

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0775008B2 (ja) * 1990-05-14 1995-08-09 三菱電機株式会社 キャッシュメモリ
US5402389A (en) * 1994-03-08 1995-03-28 Motorola, Inc. Synchronous memory having parallel output data paths
JPH0950403A (ja) * 1995-06-01 1997-02-18 Hitachi Ltd キャッシュメモリおよびそれを用いたマイクロプロセッサ
US5860127A (en) * 1995-06-01 1999-01-12 Hitachi, Ltd. Cache memory employing dynamically controlled data array start timing and a microcomputer using the same
JPH09223068A (ja) * 1996-02-15 1997-08-26 Toshiba Microelectron Corp キャッシュメモリ
JP2002236616A (ja) * 2001-02-13 2002-08-23 Fujitsu Ltd キャッシュメモリシステム
JP2003242029A (ja) * 2002-02-15 2003-08-29 Hitachi Ltd 半導体集積回路
JP2004171177A (ja) * 2002-11-19 2004-06-17 Renesas Technology Corp キャッシュシステムおよびキャッシュメモリ制御装置
US20060090034A1 (en) * 2004-10-22 2006-04-27 Fujitsu Limited System and method for providing a way memoization in a processing environment
JP4837456B2 (ja) * 2006-06-28 2011-12-14 パナソニック株式会社 情報処理装置
JP4635063B2 (ja) * 2008-03-11 2011-02-16 株式会社東芝 キャッシュメモリ制御回路及びプロセッサ

Also Published As

Publication number Publication date
US20100017567A1 (en) 2010-01-21
JP2010026716A (ja) 2010-02-04
US8312232B2 (en) 2012-11-13

Similar Documents

Publication Publication Date Title
JP5142868B2 (ja) キャッシュメモリ制御回路及びプロセッサ
US8589763B2 (en) Cache memory system
US9063907B2 (en) Comparison for redundant threads
US7836253B2 (en) Cache memory having pipeline structure and method for controlling the same
CN112230992B (zh) 一种包含分支预测循环的指令处理装置、处理器及其处理方法
JP4635063B2 (ja) キャッシュメモリ制御回路及びプロセッサ
JP2011513843A (ja) 実行装置内のデータ転送のシステムおよび方法
US8707014B2 (en) Arithmetic processing unit and control method for cache hit check instruction execution
US6701484B1 (en) Register file with delayed parity check
US7836277B2 (en) Pre-tracing instructions for CGA coupled processor in inactive mode for execution upon switch to active mode and continuing pre-fetching cache miss instructions
JP5902208B2 (ja) データ処理装置
KR100457478B1 (ko) 메모리액세스방법및데이터처리시스템
JP2002367397A (ja) メモリテスト兼初期化回路
US7275199B2 (en) Method and apparatus for a modified parity check
JP2014186664A (ja) 演算装置およびエラー処理方法
JP2883465B2 (ja) 電子計算機
US10303483B2 (en) Arithmetic processing unit and control method for arithmetic processing unit
JP4498705B2 (ja) キャッシュシステム
JP6569347B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP3476314B2 (ja) マイクロプロセッサ
JP2004185060A (ja) マイクロコンピュータ
KR100257772B1 (ko) 수퍼스칼라 마이크로프로세서의 정지점 생성 장치
JPH0962571A (ja) メモリバッファ装置
JP2005228142A (ja) メモリ制御回路
JP2001034474A (ja) データ処理装置及びデータ処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120918

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120927

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121023

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121120

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

Free format text: PAYMENT UNTIL: 20151130

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees