JP2010102623A - キャッシュメモリ及びその制御方法 - Google Patents

キャッシュメモリ及びその制御方法 Download PDF

Info

Publication number
JP2010102623A
JP2010102623A JP2008275422A JP2008275422A JP2010102623A JP 2010102623 A JP2010102623 A JP 2010102623A JP 2008275422 A JP2008275422 A JP 2008275422A JP 2008275422 A JP2008275422 A JP 2008275422A JP 2010102623 A JP2010102623 A JP 2010102623A
Authority
JP
Japan
Prior art keywords
memory
memory access
address
subsequent
tag
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.)
Pending
Application number
JP2008275422A
Other languages
English (en)
Inventor
Hideyuki Miwa
英之 三輪
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.)
NEC Electronics Corp
Original Assignee
NEC Electronics 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 NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2008275422A priority Critical patent/JP2010102623A/ja
Priority to US12/603,273 priority patent/US20100106910A1/en
Publication of JP2010102623A publication Critical patent/JP2010102623A/ja
Pending legal-status Critical Current

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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline

Landscapes

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

Abstract

【課題】多段パイプライン構造のキャッシュメモリにおいて、ミスヒット時に、後続のメモリアクセスが存在しない場合、データの整合性を維持するためのウェイト信号の出力を減らし、連続するメモリアクセスを効率的に処理すること。
【解決手段】本発明にかかるキャッシュメモリ1は、ヒット判定部12により入力アドレスがミスヒットと判定された場合に、タグメモリ11とデータメモリ10の更新処理を行い、後続のメモリアクセスが存在するか否かを判定し、後続のメモリアクセスが存在すると判定した場合に、プロセッサのパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号をプロセッサ2へ出力し、後続のメモリアクセスが存在しないと判定した場合に、ウェイト信号を出力しない。
【選択図】図3

Description

本発明は、プロセッサによるメモリアクセスを複数の処理ステージに分割されたパイプラインにより処理するキャッシュメモリ及びその制御方法に関する。
クロック同期式SRAM(シンクロナスSRAM)等を利用し、パイプライン構造を採用したキャッシュメモリが実用化されている。このようなパイプライン構造を有するキャッシュメモリは、プロセッサと低速メモリの間に配置され、プロセッサによるメモリアクセスを複数の処理ステージに分割されたパイプラインにより処理する(例えば、特許文献1を参照)。ここで、パイプライン構造のキャッシュメモリにメモリアクセス要求を行うプロセッサは、典型的にはRISC(Reduced Instruction Set Computer)方式のマイクロプロセッサであるが、CISC(Complex Instruction Set Computer)方式のプロセッサである場合や、音声処理や画像処理等のデジタル信号処理を行うDSP(Digital Signal Processor)である場合もある。また、パイプライン構造のキャッシュメモリが2次キャッシュ以下で使用される場合であれば、当該キャッシュメモリにメモリアクセス要求を行うプロセッサは、上位キャッシュメモリとなる。
キャッシュメモリのパイプラインステージ数を増加させることによりスループットの向上が期待できるが、その半面、キャッシュアクセス時間、つまり、プロセッサがアクセス要求をキャッシュメモリに与えてから結果が得られるまでの時間は増加することになる。このようなキャッシュアクセス時間の増加を避けるために、キャッシュメモリのパイプラインステージ数を2段とすることが一般的である。
一方、キャッシュメモリの消費電力を削減するために、特にセットアソシアティブ方式のキャッシュメモリにおいては、ロード要求に応答してデータメモリの全てのウェイからデータの読み出しを行うのではなく、ヒットしたウェイにのみアクセスしてデータの読み出しを行う構成も知られている。
2段パイプライン構造を有する従来のキャッシュメモリの構成例を図8に示す。図8に示すキャッシュメモリ8は、プロセッサ2と低速メモリである主記憶3との間に設けられた4ウェイ・セットアソシアティブ方式のキャッシュメモリである。キャッシュメモリ8とプロセッサ2との間は、アドレスバス4、データバス5及びウェイト信号線7により接続されている。また、キャッシュメモリ8と主記憶3の間はメモリバス6により接続されている。
キャッシュメモリ8が有するデータメモリ10は、主記憶3に格納されているデータの部分集合に相当するデータを格納するためのメモリである。データメモリ10の記憶領域は、物理的又は論理的に4つのウェイに分割されている。また、各ウェイはさらにラインと呼ばれる複数ワードのデータ格納単位により管理される。データメモリ10のデータ格納位置は、アドレスバス4から入力される入力アドレスの下位部分をデコードすることによって指定される。具体的には、入力アドレスの下位部分の上位側であるインデックスアドレスによりラインが指定され、入力アドレスの最下位部分であるワードアドレスによりライン内でのワード位置が指定される。入力アドレスの一例を図10に示す。ワードアドレス、インデックスアドレス及び上位部分のタグアドレスのそれぞれのビット数は、キャッシュメモリ8のウェイ数、1ウェイに含まれるライン数、及び1ラインに含まれるワード数をどのように設計するかに応じて定められる。
タグメモリ11は、データメモリ10にライン単位で格納されているデータに対応するタグアドレスを格納するメモリである。タグメモリ11は、入力アドレスに含まれるインデックスアドレスによってアクセスされ、インデックスアドレスをデコードすることにより特定されたタグアドレスを出力する。なお、キャッシュメモリ8は4ウェイ方式であるため、1つのインデックスアドレスに対し4つのウェイに対応する4つのタグアドドレスを出力する。また、タグメモリ11は、格納されたタグアドレスの有効性を示すバリッドフラッグ(不図示)と、ストアアクセスによりデータメモリ10が更新されたことにより、データメモリ10の保持データと主記憶3の保持データの間に不整合が生じていることを示すダーティフラグ(不図示)を保持している。
ヒット判定部12は、入力アドレスに含まれるタグアドレスと、タグメモリ11から出力される4つのタグアドレスとの比較によって、キャッシュヒットであるかミスヒットであるかを判定する。具体的には、入力アドレスに含まれるタグアドレスとタグメモリ11の出力とが一致する場合にキャッシュヒットを示す信号を出力し、不一致である場合にキャッシュミスを示す信号を出力する。ヒット判定部12の出力信号は、1ウェイ毎のヒット判定結果をそれぞれ1ビットの論理値で示す合計4ビットの信号である。また、ヒット判定部12の出力信号は、ヒット判定信号線22を経由してコントローラ83へ入力される。
コントローラ83は、ヒット判定部12によりキャッシュヒットと判定された場合に、チップセレクト信号(CS信号)及びリードストローブ信号(RS信号)をデータメモリ10に出力することによりデータメモリ10からのデータ読み出しを制御する。一方、ヒット判定部12によりミスヒットと判定された場合に、コントローラ83は、入力アドレスに含まれるタグアドレスによるタグメモリ11の書き換え制御、データリフィル制御を行う。ここで、データリフィル制御とは、主記憶3からのデータ読み出し、及び、主記憶から読み出されたデータによるデータメモリ10の書き換えの制御である。また、コントローラ83は、ミスヒットの発生をプロセッサ2に通知するためにウェイト信号線7を用いてウェイト信号を出力する。
アドレスラッチ14は、入力アドレスの少なくともタグアドレス部分を1クロックサイクルだけ保持する回路であり、例えば、Dフリップフロップにより構成することができる。アドレスラッチ14の保持するデータは、タグメモリ11の書き換えを行う際の入力データとして利用される。
次に、図9を参照してキャッシュメモリ8の動作を説明する。図9は、プロセッサ2によるロード要求に対するキャッシュメモリ8のパイプライン動作を示しており、図9の(a)がキャッシュヒット時の動作、図9の(b)がミスヒット時の動作を示している。まず、パイプラインの第1ステージにおいて、プロセッサ2から入力される入力アドレスによりタグメモリ11がアクセスされ、これに対応するタグアドレスが読み出される。さらに、同じ第1ステージにおいて、ヒット判定部12よりヒット判定が行われる。
ヒット判定部12による判定がキャッシュヒットである場合は、第1ステージの終端において、入力アドレス、CS信号及びRS信号がデータメモリ10に入力される。また、図9の(a)に示すように、第1ステージに引き続く第2ステージにおいて、データメモリ10からデータが読み出され、読み出されたデータがプロセッサ2に出力される。キャッシュメモリ8の出力データは、汎用レジスタ等のプロセッサ2の所定の格納領域に格納される。
一方、ヒット判定部12による判定がミスヒットである場合は、第1ステージの終端におけるCS信号及びRS信号の出力は行われない。そして、図9の(b)に示すように、第1ステージに引き続く第2ステージにおいて、置換ウェイを決定する処理、タグメモリ11に保持されている置換ウェイに決定されたラインに対応するタグアドレスを入力アドレスのタグアドレスによって更新する処理が行われる。また、同じく第2ステージにおいて、メモリバス6を介して接続された主記憶3に対するリードアクセスが行われ、入力アドレスに対応するデータが主記憶3から読み出されてデータメモリ10に格納される。さらに、同じく第2ステージにおいて、主記憶3から読み出されたデータがプロセッサ2に出力される。
また、特許文献2には、図8に示すような従来のキャッシュメモリ8に対して、動作周波数の向上を行うために、タグメモリからのタグアドレス読み出し処理とヒット判定処理とを異なるパイプラインステージに分割し、ミスヒット時に、タグメモリの更新処理と共に、タグアドレスを迂回させてヒット判定部に入力させるキャッシュメモリに関する技術が開示されている。図11は、特許文献2にかかるキャッシュメモリ8aの構成図である。図11を参照し、以下にキャッシュメモリ8aの動作の概要を説明する。キャッシュメモリ8aは、まず、第1ステージで、タグメモリ11からのタグアドレスの読み出しを実行する。次に、第2ステージで、ヒット判定部12によるヒット判定を実行する。そして、キャッシュヒットの場合には、第3ステージ以降で、データメモリ10からのデータ読み出しと、データメモリ10から読み出されたデータのプロセッサ2への出力を実行する。一方、ミスヒットの場合には、第3ステージで、コントローラ83aによるタグメモリ11の更新制御及びタグメモリ11を迂回してアドレスラッチ17の保持データをヒット判定部12に入力するためのセレクタ19の制御を実行し、併せて、キャッシュメモリ8aのパイプライン処理をストールさせ、プロセッサ2のパイプライン処理をストールさせるためのウェイト信号をプロセッサ2へ出力する。第4ステージ以降で、主記憶3からのデータ読み出しによるデータメモリ10の更新と、主記憶3から読み出されたデータのプロセッサ2への出力を実行する。
特開平10−63575号公報 特開2008−107983号公報
しかしながら、特許文献2におけるミスヒット時の処理には、改良の余地がある。それは、特許文献2は、ミスヒットの場合、後続するメモリアクセスが存在するか否かに関わらず、プロセッサへウェイト信号を常に出力する点である。
ミスヒット時に、キャッシュメモリのパイプライン処理をストールさせ、ウェイト信号を出力することは、直後のメモリアクセス要求がミスヒットの発生した直前のメモリアクセス要求と同一メモリブロックに対するアクセスである場合には、主記憶とキャッシュメモリとのデータの整合性を維持するために有効である。それは、あるメモリアクセス要求においてミスヒットが発生しタグメモリの更新が行われ、直後のメモリアクセス要求におけるヒット判定に直前のメモリアクセス要求でのミスヒット発生によるタグメモリの更新を反映することができるためである。
しかし、あるメモリアクセス要求においてミスヒットが発生しタグメモリの更新が行われる場合でもあっても、後続するメモリアクセスが存在しない場合に、キャッシュメモリのパイプライン処理をストールさせ、ウェイト信号を出力することは、必ずしも有効とは言えない。例えば、直後のメモリアクセス要求がミスヒットの発生した直前のメモリアクセス要求と異なるメモリブロックに対するアクセスである場合には、キャッシュメモリのパイプライン処理をストールさせ、ウェイト信号を出力しなくても、無駄なデータリフィル処理を行うという問題は生じない。または、直後の処理がロード命令又はストア命令でない場合には、本来ミスヒットと判定すべきところをキャッシュヒットと誤判定し、誤ったデータの読み出しが実行されてしまうという問題は生じない。そのため、直後のメモリアクセス要求には、直前のメモリアクセス要求でのミスヒット発生によるタグメモリの更新を反映する必要がない場合がある。
本発明にかかるキャッシュメモリは、プロセッサと低速メモリの間に配置されて、前記プロセッサによるメモリアクセスをパイプライン処理するものであって、前記低速メモリの部分集合に相当するデータを格納するデータメモリと、前記データメモリに格納されたデータに対応付けられたタグアドレスを格納するタグメモリと、前記プロセッサより入力される入力アドレスに含まれる第1のインデックスアドレスを用いて前記タグメモリを検索することにより得られるタグアドレスと前記入力アドレスに含まれるタグアドレスとの比較によってキャッシュヒットかミスヒットかを判定するヒット判定部と、コントローラとを備える。前記コントローラは、前記ヒット判定部により前記入力アドレスがミスヒットと判定された場合に、前記タグメモリと前記データメモリの更新処理を行い、後続のメモリアクセスが存在するか否かを判定し、前記後続のメモリアクセスが存在すると判定した場合に、前記プロセッサのパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号を前記プロセッサへ出力し、前記後続のメモリアクセスが存在しないと判定した場合に、前記ウェイト信号を出力しない。
本発明にかかるキャッシュメモリの制御方法は、プロセッサと低速メモリの間に配置されて、前記プロセッサによるメモリアクセスをパイプライン処理するものであって、前記キャッシュメモリは、前記低速メモリの部分集合に相当するデータを格納するデータメモリと、前記データメモリに格納されたデータに対応付けられたタグアドレスを格納するタグメモリと、を備える。当該制御方法は、前記プロセッサより入力される入力アドレスに含まれる第1のインデックスアドレスを用いて前記タグメモリからタグアドレスを検索する検索ステップと、前記検索ステップにより検索されたタグアドレスと前記入力アドレスに含まれるタグアドレスとの比較によってキャッシュヒットかミスヒットかを判定する判定ステップと、前記判定ステップにおいてミスヒットと判定された場合に、前記タグメモリと前記データメモリを更新するステップと、前記判定ステップにおいてミスヒットと判定された場合に、後続のメモリアクセスが存在するか否かを判定し、前記後続のメモリアクセスが存在すると判定した場合に、前記プロセッサのパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号を前記プロセッサへ出力し、前記後続のメモリアクセスが存在しないと判定した場合に、前記ウェイト信号を出力しない、ウェイト信号出力制御ステップとを含む。
上述した本発明にかかるキャッシュメモリ及びその制御方法によれば、ミスヒットの場合に、後続のメモリアクセスに応じてウェイト信号の出力を制御する。そのため、後続のメモリアクセスが直前のメモリアクセスのデータメモリの更新処理に影響しない場合、プロセッサのパイプライン処理をストールさせないため、後続の処理を遅らせることなく進めることができる。
本発明により、ミスヒット時に、後続のメモリアクセスが存在しない場合、データの整合性を維持するためのウェイト信号の出力を減らし、連続するメモリアクセスを効率的に処理することができるキャッシュメモリ及びその制御方法を提供することができる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
<発明の実施の形態1>
図1は、本発明の実施の形態1にかかるキャッシュメモリの構成図である。本発明の実施の形態1にかかるキャッシュメモリ1は、4ウェイ・セットアソシアティブ方式のキャッシュメモリである。なお、図8に示した従来のキャッシュメモリ8との対比を容易にするために、4ウェイ・セットアソシアティブ構成としているが当該構成は一例である。つまり、キャッシュメモリ1のウェイ数は他の数でもよく、またダイレクトマップ方式であっても良い。
なお、キャッシュメモリ1が有するデータメモリ10、タグメモリ11、ヒット判定部12及びデータラッチ14は、図8に示した構成要素と同様であるため、対応する構成要素と同一の符号を付して詳細な説明を省略する。
キャッシュメモリ1は、プロセッサ2と低速メモリである主記憶3の間に配置されて、プロセッサ2によるメモリアクセスをパイプライン処理する。また、キャッシュメモリ1とプロセッサ2との間は、アドレスバス4、データバス5、ウェイト信号線7に加え、制御信号線23によりさらに接続されている。プロセッサ2は、制御信号線23を経由して、メモリアクセスにおけるロード命令であることを示すフラグ及びストア命令であることを示すフラグを含む制御信号をコントローラ13へ入力する。あるメモリアクセスにおける制御信号は、アドレスバス4を経由して入力される当該メモリアクセスにおける入力アドレスとほぼ同じタイミングで入力されるものである。
キャッシュメモリ1が有するコントローラ13のキャッシュヒット時の動作は、従来のコントローラ83と同様である。つまり、コントローラ13は、ヒット判定部12によりキャッシュヒットと判定された場合に、チップセレクト信号(CS信号)及びリードストローブ信号(RS信号)をデータメモリ10に出力することによりデータメモリ10からのデータ読み出しを制御する。
また、ヒット判定部12によりミスヒットと判定された場合に、コントローラ13は、タグメモリ11に保持されているタグアドレスを入力アドレスに含まれるタグアドレスによって更新するタグメモリ更新処理、主記憶3からデータを読み出し、当該データによりデータメモリ10を更新するデータメモリ更新処理、及び、読み出されたデータをプロセッサ2へ出力する処理を制御する。
さらに、ヒット判定部12によりミスヒットと判定された場合に、コントローラ13は、後続のメモリアクセスが存在するか否かを判定する。そして、コントローラ13は、後続のメモリアクセスが存在すると判定した場合に、キャッシュメモリ1のパイプライン処理に対する少なくとも1クロックサイクルのパイプラインストールを発生させる処理、及び、プロセッサ2のパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号をプロセッサ2へ出力するウェイト出力制御処理を実行する。
また、コントローラ13は、後続のメモリアクセスが存在しないと判定した場合には、ウェイト出力制御処理を実行しない。
これにより、キャッシュメモリ1は、あるメモリアクセスにおいてミスヒット、かつ、後続するメモリアクセスが存在する場合には、キャッシュメモリ1のパイプライン処理をストールさせ、ウェイト信号を出力してプロセッサ2のパイプライン処理をストールさせることができ、後続のメモリアクセスの処理において、無駄なデータリフィル処理や誤ったデータの読み出しを防ぎ、適切に処理することができる。また、キャッシュメモリ1は、あるメモリアクセスにおいてミスヒット、かつ、後続するメモリアクセスが存在しない場合には、キャッシュメモリ1及びプロセッサ2のパイプライン処理をストールさせないため、後続のメモリアクセスの処理において、不必要に遅らせることなく処理することができる。
ここで、ミスヒットと判定された場合に、コントローラ13は、制御信号線23を経由して入力される当該ミスヒットと判定されたメモリアクセスの次のメモリアクセスに対応する制御信号に含まれるフラグを参照し、当該フラグが有効であるか否かを確認する。コントローラ13は、当該フラグが有効、すなわち、次のメモリアクセスがロード命令又はストア命令のいずれかである場合、後続のメモリアクセスが存在すると判定する。また、コントローラ13は、当該フラグが無効、すなわち、次のメモリアクセスがロード命令及びストア命令のいずれでもない場合、後続のメモリアクセスが存在しないと判定する。これにより、後続のメモリアクセスの有無判定を簡易に行うことができる。
そして、後続のメモリアクセスが存在する場合に、コントローラ13は、ウェイト信号をプロセッサ2へ出力する。また、後続のメモリアクセスが存在しない場合に、コントローラ13は、ウェイト信号を出力しない。これにより、メモリへのロード及びストアが発生しない場合、後続の処理を遅らせることなく進めることができる。
図2は、本発明の実施の形態1にかかるミスヒット時におけるウェイト信号出力制御処理を示すフローチャートである。まず、ミスヒット時に、コントローラ13は、ミスヒットと判定されたメモリアクセスの次のメモリアクセスに対応する制御信号に含まれるフラグを参照し、ロード命令又はストア命令であるかにより後続のメモリアクセスが存在するか否かを判定する(S101)。
ロード命令又はストア命令である場合、コントローラ13は、キャッシュメモリ1のパイプライン処理をストールさせ、プロセッサ2へウェイト信号を出力する(S102)。そのため、この後、キャッシュメモリ1及びプロセッサ2のパイプライン処理はストールされ、後続のメモリアクセスに対する処理は、更新後のタグメモリ11に対して行われる。
ステップS101においてロード命令又はストア命令のいずれでもない場合、コントローラ13は、キャッシュメモリ1のパイプライン処理をストールさせず、プロセッサ2へウェイト信号を出力しない。そのため、この後、後続のメモリアクセスに対する処理は、タグメモリ11の更新を待たずに、引き続いて行われる。
図3は、本発明の実施の形態1にかかるキャッシュメモリによるパイプライン処理を示す図である。尚、図3の(a)キャッシュヒット時の動作は、図9の(a)と同様であるため、説明を省略する。
図3の(b)ミスヒット及び後続メモリアクセスなしの場合、コントローラ13は、第2ステージにおいて、後続のメモリアクセスの有無判定を行い、ここでは、なしと判定する。つまり、このとき、コントローラ13は、ウェイト信号を出力しない。
また、コントローラ13は、タグメモリの更新処理及びデータメモリの更新処理の制御を行う。コントローラ13は、タグメモリの更新処理として、例えば、図9の(b)と同様に置換ウェイを決定する処理及びタグメモリ11の書き換え処理を行う。また、コントローラ13は、データメモリの更新処理として、例えば、図9の(b)と同様に主記憶3からデータを読み出し、データメモリ10へ格納する処理及び主記憶3から読み出されたデータをプロセッサ2へ出力する処理を行う。
図3の(c)ミスヒット及び後続メモリアクセスありの場合、コントローラ13は、第2ステージにおいて、後続のメモリアクセスの有無判定を行い、ここでは、ありと判定する。そして、コントローラ13は、引き続き第2ステージにおいて、キャッシュメモリ1のパイプライン処理をストールさせ、プロセッサ2へウェイト信号を出力する。これにより、クロックサイクルC2以降も引き続き第2ステージとなる。また、コントローラ13は、第2ステージにおいて、タグメモリの更新処理及びデータメモリの更新処理の制御を行う。
このように、本発明の実施の形態1によれば、ミスヒット時に、後続のメモリアクセスが存在しない場合、データの整合性を維持するためのウェイト信号の発生を減らし、連続するメモリアクセスを効率的に処理することができる。
特に、本発明の実施の形態1は、プロセッサ2の周波数が高い場合に、後続のメモリアクセスの有無判定を簡略化できるために効果が高い。
<発明の実施の形態2>
本発明の実施の形態2にかかるキャッシュメモリは、特許文献2を改良し、本発明を適用した例である。図4は、本発明の実施の形態2にかかるキャッシュメモリ1aの構成図である。尚、本発明の実施の形態2では、4ウェイ・セットアソシアティブ構成としているが、本発明の実施の形態1と同様に、これに限定されない。また、図4に記載された構成要素の内、特許文献2に開示されたもの又は図1と同様のものについては、同一の符号を付して詳細な説明を省略する。
図4は、図11に比較して、本発明の実施の形態1にかかる図1と同様の制御信号線23が追加されている。
また、キャッシュメモリ1aにおいて、アドレスラッチ16とコントローラ13aの間は、第1インデックスアドレスバス24により接続されている。そのため、アドレスラッチ16に格納された入力アドレスは、ヒット判定部12に入力されると共に、コントローラ13aへも入力される。尚、コントローラ13aには、アドレスラッチ16に格納された入力アドレスの内、少なくともインデックスアドレスが、第1インデックスアドレスバス24を経由して入力されればよい。
また、コントローラ13aには、アドレスバス4から延長された第2インデックスアドレスバス25が接続されている。尚、コントローラ13aには、プロセッサ2からの入力アドレスの内、少なくともインデックスアドレスが、第2インデックスアドレスバス25を経由して入力されればよい。
これにより、コントローラ13aは、処理対象のメモリアクセスに対応する第1のインデックスアドレスを第1インデックスアドレスバス24から受け付け、当該メモリアクセスの次に処理されるメモリアクセスに対応する第1のインデックスアドレスを第2インデックスアドレスバス25から受け付けることができる。
コントローラ13aは、ヒット判定部12によりミスヒットと判定された場合に、本発明の実施の形態1にかかるコントローラ13と同様に、ロード命令又はストア命令であるか否かを判定する。そして、コントローラ13aは、ロード命令又はストア命令のいずれかであると判定した場合に、第1のインデックスアドレスと第2のインデックスアドレスとを比較し、少なくとも一部が一致するか否かを判定する。その後、コントローラ13aは、少なくとも一部が一致する場合に、キャッシュメモリ1aのパイプライン処理をストールさせ、ウェイト信号をプロセッサ2へ出力する。また、コントローラ13aは、ロード命令及びストア命令のいずれでもない場合又は第1のインデックスアドレスと第2のインデックスアドレスとの少なくとも一部が一致しない場合に、ウェイト信号を出力せず、キャッシュメモリ1a及びプロセッサ2のパイプライン処理をストールさせない。
これにより、ミスヒットであり後続のメモリアクセスがロード命令又はストア命令のいずれかである場合であっても、当該後続のメモリアクセス要求が、ミスヒットの発生した直前のメモリアクセス要求と異なるメモリブロックに対するアクセスである場合には、コントローラ13aは、プロセッサ2に対してウェイト信号を出力しない。つまり、本発明の実施の形態2にかかるキャッシュメモリ1aは、後続のメモリアクセスの有無判定を簡易に行うことができる。そのため、この場合には、キャッシュメモリ1a及びプロセッサ2のパイプライン処理をストールさせず、後続の処理を遅らせることなく進めることができる。
尚、コントローラ13aは、ミスヒットであり後続のメモリアクセスがロード命令又はストア命令のいずれかである場合に、第1のインデックスアドレスと第2のインデックスアドレスとが完全一致するか否かにより判定し、完全一致する場合にウェイト信号を出力し、完全一致しない場合にウェイト信号を出力しないようにしてもよい。これにより、必要最小限のケースのみでウェイト信号を出力することができ、処理を効率化することができる。特に、プロセッサ2の周波数クロック数が低い場合に、ウェイト信号の出力を最小限に抑えることができるため効果が高い。
または、コントローラ13aは、ミスヒットであり後続のメモリアクセスがロード命令又はストア命令のいずれかである場合に、第1のインデックスアドレスと第2のインデックスアドレスとを比較し、少なくとも一部が一致するか否かにより判定し、少なくとも一部が一致する場合にウェイト信号を出力し、一致しない場合にウェイト信号を出力しないようにしてもよい。例えば、第1のインデックスアドレスと第2のインデックスアドレスとのそれぞれにおける予め定められた下位ビット同士が一致する場合であってもよい。また、インデックスアドレスの内、任意の1ビットの桁のみを比較するようにしてもよい。又は、必要に応じて、比較対象のビット桁数を調節するようにしてもよい。これにより、本発明の実施の形態1に比べて、ウェイト信号の出力を抑えることができ、また、上述した完全一致の場合に比べて、後続のメモリアクセスの有無判定を簡易なものとすることができる。特に、両者に比べてプロセッサ2の周波数が中程度の場合に効果が高い。
図5は、本発明の実施の形態2にかかるミスヒット時におけるウェイト信号出力制御処理を示すフローチャートである。まず、ミスヒット時に、コントローラ13aは、ミスヒットと判定されたメモリアクセスの次のメモリアクセスに対応する制御信号に含まれるフラグを参照し、ロード命令又はストア命令であるかにより後続のメモリアクセスが存在するか否かを判定する(S201)。
ロード命令又はストア命令である場合、コントローラ13aは、第1のインデックスアドレスと第2のインデックスアドレスとを比較し、少なくとも一部が一致するか否かを判定する(S202)。
少なくとも一部が一致する場合、コントローラ13aは、図2のステップS102と同様の処理を実行する(S203)。そのため、この後、キャッシュメモリ1a及びプロセッサ2のパイプライン処理はストールされ、後続のメモリアクセスに対する処理は、更新後のタグメモリ11に対して行われる。
また、ステップS201においてロード命令又はストア命令のいずれでもない場合、又は、ステップS202において、一致しない場合、コントローラ13aは、キャッシュメモリ1aのパイプライン処理をストールさせず、プロセッサ2へウェイト信号を出力しない。そのため、この後、キャッシュメモリ1a及びプロセッサ2のパイプライン処理はストールされず、後続のメモリアクセスに対する処理は、タグメモリ11の更新を待たずに、引き続いて行われる。
図6は、本発明の実施の形態2にかかるキャッシュメモリ1aによるパイプライン処理を示す図である。図6は、図3との違いとして、4ステージでの処理を対象とした説明である。すなわち、コントローラ13aは、第1ステージにおいてタグ読み出し、第2ステージにおいてヒット判定を行う。また、コントローラ13aは、第2ステージのヒット判定の結果に基づき、第3ステージ及び第4ステージを実行する。尚、図6の(a)キャッシュヒット時の動作は、特許文献2の図2の(a)と同様であるため、説明を省略する。
図6の(b)ミスヒット及び後続メモリアクセスなしの場合、コントローラ13aは、第3ステージにおいて、後続のメモリアクセスの有無判定を行い、ここでは、なしと判定する。つまり、このとき、コントローラ13aは、ウェイト信号を出力しない。また、コントローラ13aは、第3ステージにおいてタグメモリの更新処理及び第4ステージにおいてデータメモリの更新処理の制御を行う。
図6の(c)ミスヒット及び後続メモリアクセスありの場合、コントローラ13aは、第3ステージにおいて、後続のメモリアクセスの有無判定を行い、ここでは、ありと判定する。そして、コントローラ13aは、引き続き第3ステージにおいて、キャッシュメモリ1aのパイプライン処理をストールさせ、プロセッサ2へウェイト信号を出力する。これにより、クロックサイクルC3に引き続きC4も第3ステージとなる。また、コントローラ13aは、第3ステージにおいてタグメモリの更新処理及び第4ステージにおいてデータメモリの更新処理の制御を行う。
上述のように動作するキャッシュメモリ1aの効果について、図7を参照して説明する。図7は、2つのロード要求(ロード要求A及びB)が連続して行われる場合のキャッシュメモリ1aのパイプライン処理を示すタイミングチャートである。さらに詳しくは、先行するロード要求Aにおいてミスヒットが発生し、後続のメモリアクセス判定がロード命令又はストア命令であるが、第1のインデックスアドレスと第2のインデックスアドレスとが一致しない場合の処理を示している。
図7に示すように、ロード要求Aの2段目(m+1ステージ)のヒット判定がミスヒットとなると、引き続く3段目(m+2ステージ)のC3サイクルにおいて後続のメモリアクセスがなしと判定される。また、同じC3サイクルにおいてタグメモリ更新が行われる。しかし、コントローラ13aは、プロセッサ2へウェイト信号を出力しないため、パイプラインが1サイクルストールされない。
尚、上述したロード要求Aに対する処理に平行して、後続のロード要求Bに対する処理が開始されている。つまり、ロード要求Aの2段目に当たるm+1ステージでは、ロード要求Bの1段目の処理であるタグメモリ11からのタグアドレス読み出しが行われる。つまり、ロード要求Bのタグアドレス読み出し時点では、先行するロード要求Aのミスヒットに伴うタグメモリ11の更新は完了していない。しかし、ここでは、ロード要求Aによりアクセスされる第1のインデックスアドレスとロード要求Bによりアクセスされる第2のインデックスアドレスとは異なる。そのため、ロード要求Bの2段目(m+2ステージ)のヒット判定は、キャッシュヒットとなる。
そして、ロード要求Bの引き続く3段目(m+3ステージ)において、データメモリアクセスが行われる。つまり、ロード要求Bの処理は、先行するロード要求Aのミスヒットに伴うタグメモリ11の更新が完了していないことには影響を受けない。
尚、ロード要求Bの2段目(m+2ステージ)のヒット判定がミスヒットであった場合でも、第1のインデックスアドレスとは異なる第2のインデックスアドレスに起因するヒット判定であるため、先行するロード要求Aのミスヒットに伴うタグメモリ11の更新が完了していないことに起因する誤判定ではない。
このように、本発明の実施の形態2によれば、ミスヒット時に、ロード命令又はストア命令であるかの判定に加え、インデックスアドレスの比較を行うことで、後続のメモリアクセスの有無判定をより詳細に行うことができる。そして、インデックスアドレスの比較を完全一致により行うことで、ウェイト信号の発生を必要最小限に抑えることができる。また、インデックスアドレスの比較を、全体の一致ではなく、一部が一致するか否かにより行うことで、後続のメモリアクセスの有無判定を効率的に行うことができる。
<その他の発明の実施の形態>
尚、本発明の実施の形態1における後続のメモリアクセスが存在する場合の条件は、ロード命令又はストア命令のいずれかである場合に限定されない。例えば、本発明の実施の形態1においても、本発明の実施の形態2に示したようなインデックスアドレスの比較を用いても構わない。これにより、より的確な後続のメモリアクセスの有無判定を行うことができる。または、本発明の実施の形態1にかかるキャッシュメモリ1に図5のステップS201及びS202の判定処理を適用しても構わない。これにより、後続のメモリアクセスの有無判定を効率的に行うことができる。
尚、本発明では、本発明の実施の形態2における後続のメモリアクセスの有無判定を、インデックスアドレスの比較のみとして、ロード命令又はストア命令であるかの判定を行わなくても構わない。その場合、図5のステップS201を行わないこととすればよい。これにより、制御信号線23を経由して入力される制御信号に含まれるフラグの判定が不要となり、後続のメモリアクセスの有無判定を簡略化することができる。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
本発明の実施の形態1にかかるキャッシュメモリの構成図である。 本発明の実施の形態1にかかるミスヒット時におけるウェイト信号出力制御処理を示すフローチャートである。 本発明の実施の形態1にかかるキャッシュメモリによるパイプライン処理を示す図である。 本発明の実施の形態2にかかるキャッシュメモリの構成図である。 本発明の実施の形態2にかかるミスヒット時におけるウェイト信号出力制御処理を示すフローチャートである。 本発明の実施の形態2にかかるキャッシュメモリによるパイプライン処理を示す図である。 本発明の実施の形態2にかかるキャッシュメモリによるタイミングチャートを示す図である。 関連する技術におけるキャッシュメモリの構成図である。 関連する技術におけるキャッシュメモリパイプライン処理を示す図である。 入力アドレスの構成を示す図である。 関連する技術におけるキャッシュメモリの構成図である。
符号の説明
1 キャッシュメモリ
1a キャッシュメモリ
2 プロセッサ
3 主記憶
4 アドレスバス
5 データバス
6 メモリバス
7 ウェイト信号線
8 キャッシュメモリ
8a キャッシュメモリ
10 データメモリ
11 タグメモリ
12 ヒット判定部
13 コントローラ
13a コントローラ
14 アドレスラッチ
15 アドレスラッチ
16 アドレスラッチ
17 アドレスラッチ
18 バイパス配線
19 セレクタ
20 アドレスラッチ
21 データラッチ
22 ヒット判定信号線
23 制御信号線
24 第1インデックスアドレスバス
25 第2インデックスアドレスバス
83 コントローラ
83a コントローラ

Claims (10)

  1. プロセッサと低速メモリの間に配置されて、前記プロセッサによるメモリアクセスをパイプライン処理するキャッシュメモリであって、
    前記低速メモリの部分集合に相当するデータを格納するデータメモリと、
    前記データメモリに格納されたデータに対応付けられたタグアドレスを格納するタグメモリと、
    前記プロセッサより入力される入力アドレスに含まれる第1のインデックスアドレスを用いて前記タグメモリを検索することにより得られるタグアドレスと前記入力アドレスに含まれるタグアドレスとの比較によってキャッシュヒットかミスヒットかを判定するヒット判定部と、コントローラとを備え、
    前記コントローラは、
    前記ヒット判定部により前記入力アドレスがミスヒットと判定された場合に、前記タグメモリと前記データメモリの更新処理を行い、後続のメモリアクセスが存在するか否かを判定し、
    前記後続のメモリアクセスが存在すると判定した場合に、前記プロセッサのパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号を前記プロセッサへ出力し、前記後続のメモリアクセスが存在しないと判定した場合に、前記ウェイト信号を出力しない、
    ことを特徴とするキャッシュメモリ。
  2. 前記コントローラは、前記第1のインデックスアドレスと前記後続のメモリアクセスにおける入力アドレスに含まれる第2のインデックスアドレスとを比較し、少なくとも一部が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項1に記載のキャッシュメモリ。
  3. 前記コントローラは、前記後続のメモリアクセスがロード命令又はストア命令のいずれかである場合に、前記後続のメモリアクセスが存在すると判定する、請求項1又は2に記載のキャッシュメモリ。
  4. 前記コントローラは、前記後続のメモリアクセスがロード命令又はストア命令のいずれかであるか否かを判定し、前記ロード命令又は前記ストア命令である場合に、前記第1のインデックスアドレスと前記後続のメモリアクセスにおける入力アドレスに含まれる第2のインデックスアドレスとを比較し、少なくとも一部が一致するか否かを判定し、前記少なくとも一部が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項1乃至3のいずれか1項に記載のキャッシュメモリ。
  5. 前記コントローラは、前記第1のインデックスアドレスと前記第2のインデックスアドレスとのそれぞれにおける予め定められた下位ビット同士が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項2又は4に記載のキャッシュメモリ。
  6. プロセッサと低速メモリの間に配置されて、前記プロセッサによるメモリアクセスをパイプライン処理するキャッシュメモリの制御方法であって、
    前記キャッシュメモリは、前記低速メモリの部分集合に相当するデータを格納するデータメモリと、
    前記データメモリに格納されたデータに対応付けられたタグアドレスを格納するタグメモリと、を備え、
    前記プロセッサより入力される入力アドレスに含まれる第1のインデックスアドレスを用いて前記タグメモリからタグアドレスを検索する検索ステップと、
    前記検索ステップにより検索されたタグアドレスと前記入力アドレスに含まれるタグアドレスとの比較によってキャッシュヒットかミスヒットかを判定する判定ステップと、
    前記判定ステップにおいてミスヒットと判定された場合に、前記タグメモリと前記データメモリを更新するステップと、
    前記判定ステップにおいてミスヒットと判定された場合に、後続のメモリアクセスが存在するか否かを判定し、前記後続のメモリアクセスが存在すると判定した場合に、前記プロセッサのパイプライン処理に対するパイプラインストールを発生させるためのウェイト信号を前記プロセッサへ出力し、前記後続のメモリアクセスが存在しないと判定した場合に、前記ウェイト信号を出力しない、ウェイト信号出力制御ステップとを含む、
    キャッシュメモリの制御方法。
  7. 前記ウェイト信号出力制御ステップにおいて、前記第1のインデックスアドレスと前記後続のメモリアクセスにおける入力アドレスに含まれる第2のインデックスアドレスとを比較し、少なくとも一部が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項6に記載の制御方法。
  8. 前記ウェイト信号出力制御ステップにおいて、前記後続のメモリアクセスがロード命令又はストア命令のいずれかである場合に、前記後続のメモリアクセスが存在すると判定する、請求項6又は7に記載の制御方法。
  9. 前記ウェイト信号出力制御ステップにおいて、前記後続のメモリアクセスがロード命令又はストア命令のいずれかであるか否かを判定し、前記ロード命令又は前記ストア命令である場合に、前記第1のインデックスアドレスと前記後続のメモリアクセスにおける入力アドレスに含まれる第2のインデックスアドレスとを比較し、少なくとも一部が一致するか否かを判定し、前記少なくとも一部が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項6乃至8のいずれか1項に記載の制御方法。
  10. 前記ウェイト信号出力制御ステップにおいて、前記第1のインデックスアドレスと前記第2のインデックスアドレスとのそれぞれにおける予め定められた下位ビット同士が一致する場合に、前記後続のメモリアクセスが存在すると判定する、請求項6又は8に記載の制御方法。
JP2008275422A 2008-10-27 2008-10-27 キャッシュメモリ及びその制御方法 Pending JP2010102623A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008275422A JP2010102623A (ja) 2008-10-27 2008-10-27 キャッシュメモリ及びその制御方法
US12/603,273 US20100106910A1 (en) 2008-10-27 2009-10-21 Cache memory and method of controlling the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008275422A JP2010102623A (ja) 2008-10-27 2008-10-27 キャッシュメモリ及びその制御方法

Publications (1)

Publication Number Publication Date
JP2010102623A true JP2010102623A (ja) 2010-05-06

Family

ID=42118602

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008275422A Pending JP2010102623A (ja) 2008-10-27 2008-10-27 キャッシュメモリ及びその制御方法

Country Status (2)

Country Link
US (1) US20100106910A1 (ja)
JP (1) JP2010102623A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015534169A (ja) * 2012-09-07 2015-11-26 日本テキサス・インスツルメンツ株式会社 マルチメディアデータ処理のための方法及びシステム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
JP5650441B2 (ja) * 2010-06-07 2015-01-07 キヤノン株式会社 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
US8769210B2 (en) * 2011-12-12 2014-07-01 International Business Machines Corporation Dynamic prioritization of cache access
US9430394B2 (en) * 2013-12-12 2016-08-30 Mediatek Singapore Pte. Ltd. Storage system having data storage lines with different data storage line sizes
CN111045957B (zh) * 2019-12-26 2023-10-27 江南大学 一种与处理器流水线伪同频的ICache实现方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004005710A (ja) * 2003-06-23 2004-01-08 Hitachi Ltd 情報処置装置
JP2007042134A (ja) * 2002-09-17 2007-02-15 Internatl Business Mach Corp <Ibm> マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5455924A (en) * 1993-02-09 1995-10-03 Intel Corporation Apparatus and method for partial execution blocking of instructions following a data cache miss
US5761712A (en) * 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
JP4243271B2 (ja) * 2005-09-30 2009-03-25 富士通マイクロエレクトロニクス株式会社 データ処理装置およびデータ処理方法
JP2008107983A (ja) * 2006-10-24 2008-05-08 Nec Electronics Corp キャッシュメモリ

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007042134A (ja) * 2002-09-17 2007-02-15 Internatl Business Mach Corp <Ibm> マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法
JP2004005710A (ja) * 2003-06-23 2004-01-08 Hitachi Ltd 情報処置装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015534169A (ja) * 2012-09-07 2015-11-26 日本テキサス・インスツルメンツ株式会社 マルチメディアデータ処理のための方法及びシステム

Also Published As

Publication number Publication date
US20100106910A1 (en) 2010-04-29

Similar Documents

Publication Publication Date Title
KR100955433B1 (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
US9244883B2 (en) Reconfigurable processor and method of reconfiguring the same
US8984261B2 (en) Store data forwarding with no memory model restrictions
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
KR100617663B1 (ko) 캐시 메모리 내 태그 액세스 및 데이터 액세스의 분리방법 및 장치
JP4920378B2 (ja) 情報処理装置およびデータ検索方法
JP2009512943A (ja) 多階層の変換索引緩衝機構(TLBs)フィールドの更新
JP2010102623A (ja) キャッシュメモリ及びその制御方法
US7260674B2 (en) Programmable parallel lookup memory
US20020161976A1 (en) Data processor
JP2007156821A (ja) キャッシュシステム及び共用2次キャッシュ
US20090276575A1 (en) Information processing apparatus and compiling method
JP4009306B2 (ja) キャッシュメモリおよびその制御方法
JP2006018841A (ja) さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステムおよび方法
JP2011257800A (ja) キャッシュメモリ装置、プログラム変換装置、キャッシュメモリ制御方法及びプログラム変換方法
JP2002229852A (ja) キャッシュシステムの制御回路
US11327768B2 (en) Arithmetic processing apparatus and memory apparatus
KR101100143B1 (ko) 캐시 메모리 제어 장치, 및 파이프 라인 제어 방법
US9507725B2 (en) Store forwarding for data caches
US20170147498A1 (en) System and method for updating an instruction cache following a branch instruction in a semiconductor device
KR100517765B1 (ko) 캐시 메모리 및 그 제어 방법
US20030172259A1 (en) Branch prediction circuit of instruction
US8370582B2 (en) Merging subsequent updates to a memory location
JP2005149290A (ja) 情報処理装置およびキャッシュメモリ制御方法
JP2012123719A (ja) プログラマブルコントローラ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110915

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130402

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130730