JPWO2010035425A1 - キャッシュメモリ、その制御方法及びメモリシステム - Google Patents

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

Info

Publication number
JPWO2010035425A1
JPWO2010035425A1 JP2010530711A JP2010530711A JPWO2010035425A1 JP WO2010035425 A1 JPWO2010035425 A1 JP WO2010035425A1 JP 2010530711 A JP2010530711 A JP 2010530711A JP 2010530711 A JP2010530711 A JP 2010530711A JP WO2010035425 A1 JPWO2010035425 A1 JP WO2010035425A1
Authority
JP
Japan
Prior art keywords
memory
cache
command
data
port
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.)
Withdrawn
Application number
JP2010530711A
Other languages
English (en)
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2010035425A1 publication Critical patent/JPWO2010035425A1/ja
Withdrawn 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols

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

本発明に係るL2キャッシュ(202)は、CPU(201)からのコマンドが入力される第1ポート(211)と、DMAC(205)からのコマンドが入力される第3ポート(213)と、第3ポート(213)にコマンドが入力された際に、当該コマンドで指定されるアドレスのデータをL2キャッシュ(202)が格納しているか否かを判定するヒット判定部(71)と、コマンドが第3ポート(213)に入力され、かつヒット判定部(71)により格納していると判定された場合、当該格納するデータと、メモリ(204)に格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドをDMAC(205)から出力されたコマンドとしてメモリ(204)に出力するDMACアクセス制御部(63)とを備える。

Description

本発明は、キャッシュメモリ、メモリシステム及びその制御方法に関し、特に、プロセッサからのアクセスに応じて、メインメモリに格納されるデータの一部を格納するキャッシュメモリ、及び当該キャッシュメモリを含むメモリシステムに関する。
近年のメモリシステムでは、例えば、SRAM(Static Random Access Memory)等から成る小容量で高速なキャッシュメモリをマイクロプロセッサの内部、又はその近傍に配置している。このようなメモリシステムでは、マイクロプロセッサがメインメモリから読み出したデータの一部、及び、メインメモリに書き込むデータの一部を、キャッシュメモリが記憶する(キャッシュする)ことによって、マイクロプロセッサのメモリアクセスを高速化させている。
図14は、従来のメモリシステム100の構成を示す図である。図14に示すメモリシステム100は、CPU101と、キャッシュメモリ102と、メモリコントローラ103と、メインメモリであるメモリ104と、DMAC(Direct Memory Access Controller)105とを備える。
キャッシュメモリ102は、CPU101からメモリ104へのアクセスが発生した場合、当該アクセス先のアドレスのデータを自身が既に格納しているかを判定し、格納している場合(以下ヒット)、当該格納しているデータをCPU101に出力する(リード時)、又は、当該データを更新する(ライト時)。また、キャッシュメモリ102は、当該アクセス先のアドレスのデータを格納していない場合(以下キャッシュミス)、CPU101から出力された当該アドレス及びデータを格納する(ライト時)、又は、当該アドレスのデータをメモリ104から読み出したうえで格納するとともに、読み出したデータをCPU101に出力する(リード時)。
また、キャッシュミスの場合には、キャッシュメモリ102は、当該キャッシュメモリ102内に、新たなアドレス及びデータを格納する空き領域があるか否かを判断し、空き領域がない場合には、ライン入れ替え(リプレース)、及び必要に応じてライトバック(パージ)等の処理を行う。
ここで、従来のメモリシステム100では、ライト時には一時的にキャッシュメモリ102にライトデータが格納される。これにより、メモリ104に格納されているデータと、キャッシュメモリ102に格納されているデータが異なるという状態が発生する。つまり、この状態で、DMAC105がメモリ104にアクセスした場合、CPU101とDMAC105とでデータの一貫性(コヒーレンシ)を保てないという問題が生じる。
このコヒーレンシを保つために、CPU101は、キャッシュメモリ102に書き込みを行った後に、ライトバック(パージ)をキャッシュメモリ102に指示する必要がある。しかしながら、CPU101は、このパージ処理が完了するまで、次の処理を行うことができない。つまり、CPU101の処理性能が低下するという問題が生じる。
さらに、レベル2キャッシュを備えるメモリシステムでは、レベル1キャッシュ及びレベル2キャッシュに対して、このパージ処理を行う必要があるので、CPU101の処理性能の低下はさらに大きく。
この問題に対して、キャッシュメモリ102を、CPU101とDMAC105とで共用する方法が知られている(例えば、特許文献1参照)。
以下、キャッシュメモリ102を共用する従来のメモリシステム110について説明する。
図15は、キャッシュメモリ102を共用する従来のメモリシステム110の構成を示す図である。
図15に示すメモリシステム110は、図14に示す構成に加え、バス106を備える。これにより、CPU101とDMAC105とがメモリ104に格納される同じデータを用いる場合には、DMAC105はバス106を介して、CPU101と同様に、キャッシュメモリ102にアクセスできる。
図16は、DMAC105からのアクセスに対するキャッシュメモリ102の動作の概略を示す図である。
図16に示すように、リード時かつヒットの場合、キャッシュメモリ102は、ヒットしたデータをDMAC105に出力する。また、ライト時かつヒットの場合、キャッシュメモリ102は、ヒットしたデータを更新する。
また、リード時かつキャッシュミスの場合、キャッシュメモリ102がメモリ104からデータを読み出したうえで格納するとともに、読み出したデータをDMAC105に出力する、又は、DMAC105がメモリ104からデータを読み出す。また、ライト時かつキャッシュミスの場合、キャッシュメモリ102がDMAC105から出力されたアドレス及びデータを格納する、又はDMAC105がメモリ104にデータを書き込む。
以上の構成により、CPU101がキャッシュメモリ102のデータを更新したとしても、DMAC105は、更新されたキャッシュメモリ102のデータを読み出すので、CPU101は、上述したパージ処理を行う必要がない。よって、メモリシステム110は、コヒーレンシを保ちながら、CPU101の処理性能の低下を抑制できる。
特開2002−278834号公報
しかしながら、図15に示すメモリシステム110は、バス106を備える必要があるので、図14に示すメモリシステム100に比べて、面積が増加するという問題がある。これは、メモリシステム110内に、DMAC105等のマスタが複数含まれる場合には、さらに顕著になる。
さらに、DMAC105とメモリ104との間のデータ伝送に用いられるプロトコルとして複数のバスプロトコルが用いられている場合には、DMAC105とキャッシュメモリ102とインターフェースが複雑化するという問題がある。
そこで、本発明は、コヒーレンシを保つために生じるCPU等のプロセッサの処理性能低下を抑制するとともに、面積の増加、及びキャッシュメモリのインターフェースの複雑化を抑制できるメモリシステム及びキャッシュメモリを提供することを目的とする。
上記目的を達成するために、本発明に係るキャッシュメモリは、プロセッサからのアクセスに応じて、メインメモリのデータの一部を格納するキャッシュメモリであって、前記プロセッサからのコマンドが入力される第1ポートと、前記プロセッサ以外のマスタからのコマンドが入力される第2ポートと、前記第1ポート及び前記第2ポートにコマンドが入力された際に、当該コマンドで指定されるアドレスに対応するデータを当該キャッシュメモリが格納しているか否かを判定するヒット判定部と、前記コマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記コマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータと、前記メインメモリに格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドを前記マスタから出力されたコマンドとして前記メインメモリに出力する第1制御部とを備える。
この構成によれば、DMAC等のマスタからのアクセスがヒットした場合、本発明に係るキャッシュメモリは、当該ヒットしたデータをマスタに出力する、又は、当該ヒットしたデータを更新するのではなく、当該ヒットしたデータとメインメモリに格納されるデータとのコヒーレンシを保つための処理を行った後、メインメモリにコマンドを出力する。
これにより、キャッシュメモリのデータがCPU等のプロセッサにより更新されている場合でも、マスタからメインメモリへのアクセス時には、キャッシュメモリによりコヒーレンシを保つための処理が行われる。これにより、その後にキャッシュメモリにより出力されたコマンドにより発生するメインメモリへのアクセスにおいて、キャッシュメモリとメインメモリとのコヒーレンシが保たれる。よって、CPU等のプロセッサは、書き込み処理を行った後にパージ処理等のコヒーレンシを保つための処理をキャッシュメモリに指示する必要がない。このように、本発明に係るキャッシュメモリは、パージ処理を削減できるので、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
さらに、本発明に係るキャッシュメモリでは、マスタからのアクセスがヒットした場合でも、当該キャッシュメモリとマスタとの間でリードデータ又はライトデータの伝送を行う必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータ又はライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。
さらに、リードデータ又はライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、前記第1制御部は、前記コマンドとしてリードコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していると判定され、かつ前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータがダーティである場合、当該データを前記メインメモリにライトバックし、当該ライトバックが完了した後に、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力する第1リード制御部を備えてもよい。
この構成によれば、マスタからのリードアクセスがヒットした場合、本発明に係るキャッシュメモリは、当該キャッシュメモリが格納するデータをマスタに出力するのではなく、当該データをメインメモリにライトバックした後、メインメモリにリードコマンドを出力する。これにより、キャッシュメモリのデータが、プロセッサにより更新されたことにより、キャッシュメモリのデータとメインメモリのデータとが一致しない場合でも、マスタは、正しいデータ(更新された後のデータ)を読み出せる。つまり、プロセッサは、書き込み処理を行った後にパージ処理をキャッシュメモリに指示する必要がない。このように、本発明に係るキャッシュメモリは、パージ処理を削減できるので、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
さらに、本発明に係るキャッシュメモリでは、マスタからのリードアクセスがヒットした場合でも、当該キャッシュメモリが格納するデータをマスタに出力する必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。
さらに、リードデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、前記第1リード制御部は、前記リードコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力してもよい。
この構成によれば、マスタからのリードアクセスがキャッシュミスした場合でも、キャッシュメモリは、メインメモリから読み出したデータをマスタに出力する必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、リードデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、本発明に係るメモリシステムは、前記キャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、前記メインメモリは、前記第1リード制御部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力する。
この構成によれば、リードデータは、キャッシュメモリを経由せずに、メインメモリから直接マスタに出力される。よって、キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、前記キャッシュメモリは、さらに、前記リードコマンドが前記第1ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを、前記プロセッサに出力し、前記リードコマンドが前記第1ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記メインメモリから前記リードコマンドで指定されるアドレスのデータを読み出し、読み出したデータを当該キャッシュメモリに格納するとともに、前記プロセッサに出力する第2リード制御部を備えてもよい。
この構成によれば、本発明に係るキャッシュメモリは、プロセッサからのアクセスに対しては、通常のキャッシュメモリとして機能できる。
また、前記メモリシステムは、さらに、前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、前記メモリコントローラは、前記第1リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記マスタに出力する第3ポートと、前記第2リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記キャッシュメモリに出力する第4ポートとを有し、前記メモリコントローラは、前記第3ポートに入力されたリードコマンドと、前記第4ポートに入力されたリードコマンドとを、当該リードコマンドが前記第3ポート及び前記第4ポートのうちいずれに入力されたリードコマンドであるかに応じて調停してもよい。
この構成によれば、マスタからのリードアクセスに応じてキャッシュメモリが出力したリードコマンドは、メモリコントローラの第3ポートに入力され、プロセッサからのリードアクセスに応じてキャッシュメモリが出力したリードコマンドは、メモリコントローラの第4ポートに入力される。これにより、マスタにより出力されたリードコマンドがキャッシュメモリを経由してメモリコントローラに入力される場合でも、メモリコントローラは、第3ポートにマスタに対するバンド幅を割り当て、第4ポートにプロセッサに対するバンド幅を割り当てるという容易な制御で、マスタ及びプロセッサに対するバンド幅の割り当てを実現できる。
また、前記メモリシステムは、さらに、前記第1リード制御部により出力されたリードコマンドと、前記マスタにより出力されたリードコマンドとのうち一方を選択し、選択したリードコマンドを前記メインメモリに出力する選択部を備え、前記メインメモリは、前記選択部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力してもよい。
この構成によれば、プロセッサとマスタとがメインメモリの同一のデータを使用しない場合には、マスタが直接メインメモリにアクセスできる。
また、本発明に係るキャッシュメモリにおいて、前記第1制御部は、前記コマンドとしてライトコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを無効化するとともに、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力する第1ライト制御部を備えてもよい。
この構成によれば、マスタからのアクセスにおいてライトヒットした場合には、本発明に係るキャッシュメモリは、当該キャッシュメモリが格納しているヒットしたデータを無効化するとともに、メインメモリにライトコマンドを出力する。これにより、マスタによるライトにより、キャッシュメモリのデータとメインメモリのデータとが一致しなくなることを防止できる。つまり、キャッシュメモリとメインメモリとのコヒーレンスを保つために、プロセッサ及びマスタは、特段の処理(パージ処理等)を追加する必要はない。このように、本発明は、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
さらに、本発明に係るキャッシュメモリでは、マスタからのライトアクセスがヒットした場合でも、当該キャッシュメモリがライトデータを格納しない。よって、当該キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。
さらに、ライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、前記第1ライト制御部は、前記ライトコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力してもよい。
この構成によれば、マスタからのライトアクセスがキャッシュミスした場合でも、キャッシュメモリは、ライトデータを格納しない。よって、当該キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、ライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、本発明に係るメモリシステムは、前記キャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、前記マスタは、ライトデータを、前記キャッシュメモリを経由せずに、前記メインメモリに出力し、前記メインメモリは、前記マスタにより出力されたライトデータを、前記第1ライト制御部により出力された前記ライトコマンドで指定されるアドレスに格納する。
この構成によれば、ライトデータは、キャッシュメモリを経由せずに、マスタからメインメモリに直接出力される。よって、キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、前記キャッシュメモリは、さらに、前記ライトコマンド及びライトデータが前記第1ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを前記ライトデータに更新する第2ライト制御部を備え、前記第2ライト制御部は、さらに、当該更新したデータを前記メインメモリにライトバックするためのライトコマンド及びライトデータを前記メインメモリに出力してもよい。
この構成によれば、本発明に係るキャッシュメモリは、プロセッサからのアクセスに対しては、通常のキャッシュメモリとして機能できる。
また、前記メモリシステムは、さらに、前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、前記メモリコントローラは、前記第1ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトデータとが入力される第3ポートと、前記第2ライト制御部により出力されたライトコマンド及びライトデータが入力される第4ポートとを有し、前記メモリコントローラは、前記第3ポートに入力されたライトコマンドと、前記第4ポートに入力されたライトコマンドとを、当該ライトコマンドが前記第3ポート及び前記第4ポートのうちいずれに入力されたライトコマンドであるかに応じて調停してもよい。
この構成によれば、マスタからのライトアクセスに応じてキャッシュメモリが出力したライトコマンドは、メモリコントローラの第3ポートに入力され、プロセッサからのライトアクセスに応じてキャッシュメモリが出力したライトコマンドは、メモリコントローラの第4ポートに入力される。これにより、マスタにより出力されたライトコマンドがキャッシュメモリを経由してメモリコントローラに入力される場合でも、メモリコントローラは、第3ポートにマスタに対するバンド幅を割り当て、第4ポートにプロセッサに対するバンド幅を割り当てるという容易な制御で、マスタ及びプロセッサに対するバンド幅の割り当てを実現できる。
また、前記メモリシステムは、さらに、前記第1ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトコマンドとのうち一方を選択し、選択したライトコマンドを前記メインメモリに出力する選択部を備え、前記メインメモリは、前記マスタにより出力されたライトデータを、前記選択部により出力された前記ライトコマンドで指定されるアドレスに格納してもよい。
この構成によれば、プロセッサとマスタとがメインメモリの同一のデータを使用しない場合には、マスタが直接メインメモリにアクセスできる。
また、前記プロセッサは、レベル1キャッシュを備え、前記キャッシュメモリは、レベル2キャッシュであってもよい。
この構成によれば、本発明に係るキャッシュメモリは、レベル2キャッシュに適用される。ここで、レベル2キャッシュがメモリシステム全体に与える影響は、レベル1キャッシュに比べ低い。具体的には、レベル1キャッシュでヒットの場合のアクセスが、プロセッサにとって最も高速のアクセスとなる。よって、マスタからレベル1キャッシュにアクセスが行われると、最も高速化に影響する、プロセッサからレベル1キャッシュへのアクセスに悪影響が出てしまう。よって、レベル2キャッシュに本発明に係るキャッシュメモリを適用することで、レベル1キャッシュに本発明に係るキャッシュメモリを適用する場合に比べて、プロセッサの高速化に対する悪影響を少なくできる。
また、前記メモリシステムは、前記プロセッサを含む複数のプロセッサを含み、前記複数のプロセッサの各々は、レベル1キャッシュを備え、前記キャッシュメモリは、前記複数のプロセッサに共用されてもよい。
この構成によれば、複数のプロセッサにより共用されているレベル2キャッシュに本発明に係るキャッシュメモリが適用される。ここで、複数のプロセッサによりレベル2キャッシュが共用されている場合には、複数のレベル1キャッシュと、レベル2キャッシュとのコヒーレンシを保つために、複数のプロセッサは、スヌープ方式等のアルゴリズムに基づいた制御を行う必要がある。よって、この制御に加え、レベル2キャッシュとメインメモリとの間のコヒーレンスを保つための制御を加えると、さらに制御が複雑になり実現が困難となる。これに対して、本発明に係るキャッシュメモリをレベル2キャッシュに用いることで、レベル2キャッシュとメインメモリとの間のコヒーレンスを保つための処理を削減できるので、上記制御の複雑化を回避できる。
なお、本発明は、このようなキャッシュメモリ及びメモリシステムとして実現できるだけでなく、キャッシュメモリ及びメモリシステムに含まれる特徴的な手段をステップとするキャッシュメモリの制御方法及びメモリシステムの制御方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
また、本発明は、このようなキャッシュメモリ及びメモリシステムの機能の一部又は全てを有する半導体集積回路としても実現できる。
以上より、本発明は、コヒーレンシを保つために生じるCPUの処理性能低下を抑制するとともに、面積の増加、及びキャッシュメモリのインターフェースの複雑化を抑制できるメモリシステム及びキャッシュメモリを提供できる。
図1は、本発明の実施の形態に係るメモリシステムの構成を示すブロック図である。 図2は、本発明の実施の形態に係るキャッシュメモリの構成を示すブロック図である。 図3は、本発明の実施の形態に係るキャッシュ格納部及びヒット判定部の構成を示す図である。 図4は、本発明の実施の形態に係るウェイの構成を示す図である。 図5は、本発明の実施の形態に係るメモリシステムにおける接続関係を示す図である。 図6は、本発明の実施の形態に係るキャッシュメモリにおけるDMACからのアクセスに対する動作の概略を示す図である。 図7は、本発明の実施の形態に係るメモリシステムにおけるリードヒット時の動作の流れを示す図である。 図8は、本発明の実施の形態に係るメモリシステムにおけるリードミス時の動作の流れを示す図である。 図9は、本発明の実施の形態に係るメモリシステムにおけるライトヒット時の動作の流れを示す図である。 図10は、本発明の実施の形態に係るメモリシステムにおけるライトミス時の動作の流れを示す図である。 図11は、本発明の実施の形態に係るキャッシュメモリにおけるリード時の動作の流れを示すフローチャートである。 図12は、本発明の実施の形態に係るキャッシュメモリにおけるライト時の動作の流れを示すフローチャートである。 図13は、本発明の実施の形態に係るメモリシステムの変形例の構成を示すブロック図である。 図14は、従来のメモリシステムの構成を示すブロック図である。 図15は、従来のメモリシステムの構成を示すブロック図である。 図16は、従来のキャッシュメモリにおけるDMACからのアクセスに対する動作の概略を示す図である。
以下、本発明に係るキャッシュメモリの実施の形態について、図面を参照しながら詳細に説明する。
(実施の形態1)
本発明の実施の形態に係るキャッシュメモリは、DMAC等のマスタからのリードアクセスがヒットした場合、ヒットしたデータをメインメモリにライトバックした後、メインメモリにリードコマンドを出力する。また、マスタからのライトアクセスがヒットした場合、ヒットしたデータを無効化するとともに、メインメモリにライトコマンドを出力する。
これにより、CPU等のプロセッサ及びマスタがパージ処理を行わなくても、キャッシュメモリとメインメモリとの間のコヒーレンシを保つことができる。よって、本発明の実施の形態に係るキャッシュメモリは、キャッシュメモリとメインメモリとの間のコヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
さらに、リードデータ及びライトデータは、キャッシュメモリを経由せずに、マスタとメインメモリとの間で直接伝送される。これにより、キャッシュメモリとマスタとの間にリードデータ及びライトデータを伝送するためのバスを形成する必要がないので、メモリシステムの面積を削減できるとともに、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
まず、本発明の実施の形態に係るキャッシュメモリを含むメモリシステムの構成を説明する。
図1は、本発明の実施の形態に係るメモリシステムの構成を示す図である。
図1に示すメモリシステム200は、2個のCPU201と、L2(レベル2)キャッシュ202と、メモリコントローラ203と、メモリ204と、2個のDMAC205と、バス制御部206とを含む。また、複数のCPU201は、それぞれL1(レベル1)キャッシュ207を備える。
L1キャッシュ207及びL2キャッシュ202は、メモリ204に比べ、高速であるが容量が少ないキャッシュメモリである。例えば、L1キャッシュ207及びL2キャッシュ202は、SRAMである。なお、L1キャッシュ207は、L2キャッシュ202よりCPU201の近くに配置されればよく、CPU201の外に配置されてもよい。
このL1キャッシュ207及びL2キャッシュ202は、CPU201がメモリ204から読み出したデータの一部、及び、メモリ204に書き込むデータの一部を記憶する、所謂キャッシュ動作を行う。ここでキャッシュ動作とは、CPU201からメモリ204へのアクセスが発生した場合、L2キャッシュ202が、当該アクセス先のアドレスのデータを自身が既に格納しているかを判定し、格納している場合(ヒット)、当該格納しているデータをCPU201に出力する(リード時)、又は、当該データを更新する(ライト時)動作である。また、L2キャッシュ202は、当該アクセス先のアドレスのデータを格納していない場合(キャッシュミス)、CPU201から出力された当該アドレス及びデータを格納する(ライト時)、又は、当該アドレスのデータをメモリ204から読み出したうえで格納するとともに、読み出したデータをCPU201に出力する(リード時)。
また、キャッシュミスの場合には、L1キャッシュ207及びL2キャッシュ202は、当該L1キャッシュ207又はL2キャッシュ202内に、新たなアドレス及びデータを格納する空き領域があるか否かを判断し、空き領域がない場合には、ライン入れ替え(リプレース)、及び必要に応じてライトバック(パージ)等の処理を行う。
また、L2キャッシュ202は、2個のCPU201で共通に用いられる。
メモリコントローラ203は、L2キャッシュからメモリ204へのアクセス、及び複数のDMAC205それぞれからのメモリ204へのアクセスを調停する、メモリ204のインターフェースである。
メモリ204は、SDRAM等の大容量のメインメモリである。
DMAC205は、外部の機器(外部デバイス及び外部メモリ等)と、メモリ204との間のデータ転送を行うマスタである。
バス制御部206は、DMAC205により出力されたコマンドをL2キャッシュ202又はメモリコントローラ203に出力する。また、バス制御部206は、L2キャッシュ202により出力されたコマンドをメモリコントローラ203に出力する。また、バス制御部206は、DMAC205により出力されたライトデータを、L2キャッシュ202を経由せずに、メモリコントローラ203に出力し、メモリコントローラ203により出力されたリードデータを、L2キャッシュ202を経由せずに、DMAC205に出力する。
ここで、コマンドとは、データ書き込み又はデータ読み出しを指定する情報と、アクセス先のアドレスを示す情報とを含む。また、ライトデータとは、メモリ204に書き込むデータであり、リードデータとは、メモリ204から読み出したデータ、又は、L2キャッシュ202に格納されていたデータである。また、データ書き込みを指示するコマンドをライトコマンド、データ読み出しを指示するコマンドをリードコマンドと呼ぶ。また、ラインコマンド及びリードコマンドを共に称して、単に「コマンド」と記す。
また、図1に示す各構成要素は、典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。また、各構成要素が、複数のチップで実現されてもよい。
以下では、L2キャッシュ202に本発明に係るキャッシュメモリを適用した例について説明する。
図2は、L2キャッシュ202の機能構成を示すブロック図である。
図2に示すように、L2キャッシュ202は、制御部38と、キャッシュ格納部70と、ヒット判定部71と、第1ポート211と、第2ポート212と、第3ポート213と、第4ポート214とを備える。
第1ポート211は、CPU201と接続され、CPU201から出力されたコマンド及びライトデータが入力され、CPU201へリードデータを出力する。
第2ポート212は、メモリコントローラ203と接続され、メモリコントローラ203により出力されたリードデータが入力され、メモリコントローラ203へコマンド及びライトデータを出力する。言い換えると、第2ポート212は、メモリ204によりリードデータが入力され、メモリ204へコマンド及びライトデータを出力する。
第3ポート213は、バス制御部206と接続され、バス制御部206により出力されたコマンドが入力される。言い換えると、第3ポート213は、DMAC205により出力されたコマンドが入力される。
第4ポート214は、バス制御部206と接続され、バス制御部206へコマンドを出力する。言い換えると、第4ポート214は、メモリ204へコマンドを出力する。
キャッシュ格納部70は、CPU201からアクセスがあった、メモリ204に格納されるデータを格納する。
ヒット判定部71は、CPU201及びDMAC205からコマンドが入力された際に、当該コマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか(ヒット)、格納していないか(キャッシュミス)を判定する。
制御部38は、L2キャッシュ202全体の制御を行う。具体的には、CPU201がメモリ204から読み出したデータの一部、及び、メモリ204に書き込むデータの一部を記憶する、所謂キャッシュ動作を制御する。また、制御部38は、CPU201からのアクセスであるか、DMAC205からのアクセスであるかに応じて、異なる処理を行う。
この制御部38は、CPU201からのアクセスに対するL2キャッシュ202の動作を制御するCPUアクセス制御部60と、DMAC205からのアクセスに対するL2キャッシュ202の動作を制御するDMACアクセス制御部63とを備える。
CPUアクセス制御部60は、CPU201からのリードアクセスに対するL2キャッシュ202の動作を制御するCPUリード制御部61と、CPU201からのライトアクセスに対するL2キャッシュ202の動作を制御するCPUライト制御部62とを備える。
CPUリード制御部61は、メモリ204へのリードコマンドがCPU201から第1ポート211に入力され、かつヒット判定部70によりヒットと判定された場合、ヒットしたデータを、第1ポート211からCPU201に出力する。また、CPUリード制御部61は、メモリ204へのリードコマンドがCPU201から第1ポート211に入力され、かつヒット判定部70によりキャッシュミスと判定された場合、入力されたリードコマンドで指定されるアドレスのデータを、第2ポート212を介してメモリ204から読み出し、当該読み出したデータをキャッシュ格納部70に格納するとともに、当該読み出したデータを第1ポート211からCPU201に出力する。
CPUライト制御部62は、メモリへ204のライトコマンドがCPU201から第1ポート211に入力され、かつヒット判定部71によりヒットと判定された場合、ヒットしたデータを、CPU201から入力されたライトデータに更新する。また、CPUライト制御部62は、メモリ204へのライトコマンドがCPU201から第1ポート211に入力され、かつヒット判定部71によりキャッシュミスと判定された場合、キャッシュ格納部70に新たにライトデータを格納する。また、CPUライト制御部62は、キャッシュ格納部70が格納するデータをメモリ204に書き込むためのライトコマンド及びライトデータを第2ポート212からメモリ204に出力する。つまり、CPUライト制御部62は、CPU201からの指示、又は所定のタイミングで、更新したライトデータを、メモリ204に書き戻す(ライトバックする)。
DMACアクセス制御部63は、コマンドがDMAC205から第3ポート213に入力され、かつヒット判定部71によりヒットと判定された場合、ヒットしたデータと、メモリ204に格納されているデータとのコヒーレンシを保つための処理を行うとともに、第3ポート213に入力されたコマンドをDMAC205から出力されたコマンドとして、第4ポート214からメモリ204に出力する。また、DMACアクセス制御部63は、コマンドがDMAC205から第3ポート213に入力され、かつヒット判定部71によりキャッシュミスと判定された場合、第3ポート213に入力されたコマンドをDMAC205から出力されたコマンドとして、第4ポート214からメモリ204に出力する。
このDMACアクセス制御部63は、DMAC205からのリードアクセスに対するL2キャッシュ202の動作を制御するDMACリード制御部64と、DMAC205からのライトアクセスに対するL2キャッシュ202の動作を制御するDMACライト制御部65とを備える。
DMACリード制御部64は、メモリ204へのリードコマンドがDMAC205から第3ポート213に入力され、かつヒット判定部70によりヒットと判定された場合、ヒットしたデータを、第2ポート212を介してメモリ204にライトバックし、当該ライトバックが完了した後に、第3ポート213に入力されたリードコマンドをDMAC205から出力されたリードコマンドとして、第4ポート214からメモリ204に出力する。
また、DMACリード制御部64は、メモリ204へのリードコマンドがDMAC205から第3ポート213に入力され、かつヒット判定部71によりキャッシュミスと判定された場合、第3ポート213に入力されたリードコマンドをDMAC205から出力されたリードコマンドとして、第4ポート214からメモリ204に出力する。
DMACライト制御部65は、メモリ204へのライトコマンドがDMAC205から第3ポート213に入力され、かつヒット判定部71によりヒットと判定された場合、ヒットしたデータを無効化するとともに、第3ポート213に入力されたライトコマンドをDMAC205から出力されたライトコマンドとして、第4ポート214からメモリ204に出力する。
また、DMACライト制御部65は、メモリ204へのライトコマンドがDMAC205から第3ポート213に入力され、かつヒット判定部71によりキャッシュミスと判定された場合、第3ポート213に入力されたライトコマンドをDMAC205から出力されたライトコマンドとして、第4ポート214からメモリ204に出力する。
図3は、キャッシュ格納部70及びヒット判定部71の構成例を示すブロック図である。また、L2キャッシュ202の具体例として、4ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。図3に示すようにキャッシュ格納部70は、デコーダ30と、4つのウェイ31a〜31dとを備える。なお、4つのウェイ31a〜31dを特に区別しない場合には、ウェイ31と記す。
また、ヒット判定部71は、4つの比較器32a〜32dと、4つのアンド回路33a〜33dと、オア回路34とを備える。また、L2キャッシュ202は、さらに、アドレスレジスタ20と、メモリI/F21と、セレクタ35及び36と、デマルチプレクサ37を備える。
アドレスレジスタ20は、メモリ204へのアクセスアドレスを保持するレジスタである。このアクセスアドレスは32ビットであるものとする。図3に示すように、アクセスアドレスは、最上位ビットから順に、21ビットのタグアドレス51と、4ビットのセットインデックス(SI)52と、5ビットのワードインデックス(WI)53とを含む。
ここで、タグアドレス51は、ウェイ31にマッピングされるメモリ204中の領域(そのサイズはセット数×ブロックである)を指す。この領域のサイズは、タグアドレス51よりも下位のアドレスビット(A10〜A0)で定まるサイズつまり2kバイトであり、1つのウェイ31のサイズでもある。
セットインデックス52はウェイ31a〜31bに跨る複数セットの1つを指す。このセット数は、セットインデックス52が4ビットなので16セットある。タグアドレス51及びセットインデックス52で特定されるキャッシュエントリは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックス52よりも下位のアドレスビット(A6〜A0)で定まるサイズつまり128バイトである。1ワードを4バイトとすると、1ラインデータは32ワードである。
ワードインデックス(WI)53は、ラインデータを構成する複数ワード中の1ワードを指す。また、アドレスレジスタ20中の最下位2ビット(A1、A0)は、ワードアクセス時には無視される。
メモリI/F21は、L2キャッシュ202からメモリ204をアクセスするためのインターフェースである。具体的には、メモリI/F21は、L2キャッシュ202からメモリ204へのデータのライトバック、及びメモリ204からL2キャッシュ202へのデータのロード等を行う。
デコーダ30は、セットインデックス52の4ビットをデコードし、4つのウェイ31a〜31dに跨る16セット中の1つを選択する。
4つのウェイ31a〜31dは、同じ構成を有し、各ウェイ31は、2kバイトの容量を有する。
図4は、ウェイ31の構成を示す図である。図4に示すように、各ウェイ31は、16個のキャッシュエントリ40を有する。各キャッシュエントリ40は、21ビットのタグ41と、バリッドフラグ42と、ダーティフラグ43と、128バイトのラインデータ44とを有する。
タグ41は、メモリ204上のアドレスの一部であり、21ビットのタグアドレス51のコピーである。
ラインデータ44は、タグアドレス51及びセットインデックス52により特定されるブロック中の128バイトデータのコピーである。
バリッドフラグ42は、当該キャッシュエントリ40のデータが有効か否かを示す。例えば、データが有効な場合、バリッドフラグ42は「1」であり、データが無効な場合、バリッドフラグ42は「0」である。また、バリッドフラグ42を「0」にすることを、データを無効化するとも言う。
ダーティフラグ43は、当該キャッシュエントリ40にCPU201から書き込みがあったか否か、つまりラインデータ44が更新されている状態であるか否かを示す。言い換えると、ダーティフラグ43は、当該キャッシュエントリ40中にキャッシュされたラインデータ44が存在するが、CPU201からの書き込みにより当該ラインデータ44がメモリ204中のデータと異なるため、当該ラインデータ44をメモリ204に書き戻すことが必要であるか否かを示す。例えば、ラインデータ44が更新されている場合、ダーティフラグ43は「1」であり、ラインデータ44が更新されていない場合、ダーティフラグ43は「0」である。また、ダーティフラグ43を「1」にすることを、ダーティフラグをセットするとも言う。また、ダーティフラグ43が「1」の場合を、当該データがダーティであるとも言う。
比較器32aは、アドレスレジスタ20中のタグアドレス51と、セットインデックス52により選択されたセットに含まれる4つのタグ41中のウェイ31aのタグ41とが一致するか否かを比較する。比較器32b〜32cについても、ウェイ31b〜31dに対応すること以外は同様である。
アンド回路33aは、バリッドフラグ42と比較器32aの比較結果とが一致するか否かを比較する。この比較結果をh0とする。比較結果h0が「1」である場合は、アドレスレジスタ20中のタグアドレス51及びセットインデックス52に対応するラインデータ44が存在すること、つまりウェイ31aにおいてヒットしたことを意味する。また、比較結果h0が「0」である場合は、キャッシュミスしたことを意味する。アンド回路33b〜33dについても、ウェイ31b〜31dに対応すること以外は同様である。つまり、その比較結果h1〜h3は、ウェイ31b〜31dでヒットしたかミスしたかを意味する。
オア回路34は、比較結果h0〜h3のオアをとる。このオアの結果をhitとする。hitは、キャッシュメモリにヒットしたか否かを示す。
セレクタ35は、選択されたセットにおけるウェイ31a〜31dのラインデータ44のうち、ヒットしたウェイ31のラインデータ44を選択する。
セレクタ36は、セレクタ35により選択された32ワードのラインデータ44にうち、ワードインデックス53で示される1ワードを選択する。
デマルチプレクサ37は、キャッシュエントリ40にデータを書き込む際に、ウェイ31a〜31dの1つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
図5は、バス制御部206の構成及び接続関係を示す図である。なお、説明の簡単化のため、以下、CPU201が1個の場合を例に説明する。
図5に示すように、バス制御部206は、2個の第1ポート221と、2個の第2ポート222と、第3ポート223と、第4ポート224と、調停部225と、2個の選択部226とを備える。
第1ポート221、第2ポート222及び選択部226は、DMAC205ごとに設けられる。第1ポート221は、対応するDMAC205に接続され、対応するDMAC205から出力されたコマンド及びライトデータが入力され、対応するDMAC205へリードデータを出力する。
第2ポート222は、メモリコントローラ203と接続され、メモリコントローラ203により出力されたリードデータが入力され、メモリコントローラ203へコマンド及びライトデータを出力する。
第3ポート223は、L2キャッシュ202の第3ポート213と接続され、L2キャッシュ202へコマンドを出力する。
第4ポート224は、L2キャッシュ202の第4ポート214と接続され、L2キャッシュ202により出力されたコマンドが入力される。
調停部225は、複数の第1ポート221に入力されたコマンドを調停し、調停したコマンドを第3ポート223に出力する。つまり、調停部225は、複数の第1ポート221のいずれかにコマンドが入力された場合には、当該入力されたコマンドを選択し、選択したコマンドを第3ポート223に出力する。また、調停部225は、複数の第1ポート221に同時にコマンドが入力された場合、予め定められた優先度に従って、いずれかのコマンドを選択し、選択したコマンドを第3ポート223に出力する。
選択部226は、対応する第1ポート221に入力されたコマンド、及び第4ポートに入力されたコマンドのうち一方を選択し、選択したコマンドを対応する第2ポート222に出力する。つまり、選択部226は、DMACリード制御部64により出力されたコマンドと、DMAC205により出力されたコマンドとのうち一方を選択し、選択したコマンドをメモリ204に出力する。具体的には、選択部226は、通常モード時には、第4ポート224に入力されたコマンドを選択し、バイパスモード時には、第1ポート221に入力されたコマンドを選択する。なお、以下、特段の記載がない限り、通常モードについての説明である。
ここで、通常モードとは、DMAC205がL2キャッシュ202を経由して、メモリ204にアクセスするモードである。また、バイパスモードとは、DMAC205がL2キャッシュ202を経由せずに、直接メモリ204にアクセスするモードである。
また、CPU201とDMAC205とが、メモリ204の同じアドレスのデータを使用する場合には通常モードが選択され、DMAC205とCPU201とが同じアドレスのデータを使用しない場合、つまり、特別な制御を行わなくてもコヒーレンシが保てる場合に、バイパスモードが選択される。また、通常モードとバイパスモードとの切り替えは、CPU201等により行われる。
また、選択部226は、通常モードにおいて、第4ポート224に入力されたコマンドが、対応するDMAC205から出力されたコマンドに応じて、L2キャッシュ202が出力したコマンドである場合は、第4ポート224に入力されたコマンドを第2ポート222に出力し、対応しない他のDMAC205から出力されたコマンドに応じて、L2キャッシュ202が出力したコマンドである場合は、第4ポート224に入力されたコマンドを第2ポート222に出力しない。
具体的には、L2キャッシュ202が出力するコマンドに、当該コマンドが2個のDMAC205のうちいずれから出力されたコマンドであるかを示す情報が含まれ、当該情報に応じて選択部226は、第4ポート224に入力されたコマンドを第2ポート222に出力する、又は出力しないを決定する。
また、第1ポート221に入力されたライトデータは、対応する第2ポート222に直接出力され、第2ポート222に入力されたリードデータは、対応する第1ポート221に直接出力される。
また、図5に示すように、メモリコントローラ203は、第1ポート231と、2個の第2ポート232とを備える。第1ポート231はL2キャッシュ202に対応し、2個の第2ポート232は、それぞれ2個のDMAC205と一対一に対応する。
第1ポート231は、CPUリード制御部61により出力されたリードコマンドと、CPUライト制御部62により出力されたライトコマンド及びライトデータとが入力される。また、第1ポート231は、メモリ204から出力されたリードデータをL2キャッシュ202に出力する。具体的には、第1ポート231は、L2キャッシュ202の第2ポート212と接続される。
第2ポート232は、バス制御部206の第2ポート222ごとに設けられ、対応する第2ポート222と接続される。この第2ポート232は、バス制御部206の対応する第2ポート222からから出力されたコマンド及びライトデータが入力され、対応する第2ポート222へ、メモリ204から出力されたリードデータを出力する。
具体的には、通常モード時においては、第2ポート232に、DMACリード制御部64により出力されたリードコマンドと、DMACライト制御部65により出力されたライトコマンドとが入力される。また、バイパスモード時においては、第2ポート232に、対応するDMAC205により出力されたリードコマンド及びライトコマンドが入力される。また、通常モード時及びバイパスモード時の両方において、第2ポート232は、対応するDMAC205により出力されたライトデータが入力され、リードコマンドに応じてメモリ204から出力されたリードデータを対応するDMAC205へ出力する。
ここで、メモリコントローラ203は、第1ポート231及び2個の第2ポート232に入力されたコマンド(リードコマンド及びライトコマンド)を、当該コマンドが、第1ポート231及び2個の第2ポート232のうちいずれに入力されたコマンドであるかに応じて調停する。具体的には、各ポートには、帯域(バンド幅)が割り当てられており、メモリコントローラ203は、当該帯域が満たされるように、調停を行う。例えば、第1ポート231及び2個の第2ポート232に2:1:1で帯域が割り当てられている場合には、メモリコントローラ203は、第1ポートに入力されたコマンドを2回実行するごとに、各第2ポート232に入力されたコマンドを1回ずつ実行する。
次に、本発明の実施の形態に係るメモリシステム200の動作を説明する。
以下、DMAC205からメモリ204へのアクセスが発生した際の動作を説明する。
図6は、L2キャッシュ202からアクセスが発生した際の、メモリシステム200の動作の概略を示す図である。
図6に示すように、リード時、かつヒット(以下、リードヒット)の場合には、L2キャッシュ202は、ヒットしたデータをライトバックする。その後、メモリ204のデータが読み出され、DMAC205へ送られる。
また、リード時、かつキャッシュミス(以下、リードミス)の場合には、メモリ204のデータが読み出され、DMAC205へ送られる。
また、ライト時、かつヒット(以下、ライトヒット)の場合には、L2キャッシュ202は、ヒットしたデータを無効化する。また、メモリ204へライトデータが書き込まれる。
また、ライト時、かつキャッシュミス(以下、ライトミス)の場合には、メモリ204へライトデータが書き込まれる。
以下、各動作を個別に説明する。まず、リードヒット時の動作を説明する。
図7は、メモリシステム200におけるリードヒット時の動作の流れを示す図である。
図7に示すように、まず、DMAC205は、リードコマンドをL2キャッシュ202に出力する(S101)。具体的には、DMAC205は、バス制御部206の第1ポート221にリードコマンドを出力する。バス制御部206の第1ポート221に入力されたリードコマンドは、調停部225及び第3ポート223を順次経由して、L2キャッシュ202の第3ポート213に入力される。
L2キャッシュ202のヒット判定部71は、第3ポート213に入力されたリードコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判定する。ここでは、ヒット判定部71は、指定されるアドレスのデータをキャッシュ格納部70が格納している(ヒット)と判定する(S102)。
次に、L2キャッシュ202のDMACリード制御部64は、ヒットしたデータをライトバックする(S103)。つまり、DMACリード制御部64は、ヒットしたデータをメモリ204に書き戻す。
ライトバックが完了した後、DMACリード制御部64は、メモリ204にリードコマンドを出力する(S104)。具体的には、DMACリード制御部64は、第4ポート214にリードコマンドを出力する。また、このリードコマンドは、ステップS101でDMAC205により出力されたリードコマンドと同じアドレスを指定するものである。
第4ポート214に出力されたリードコマンドは、バス制御部206の第4ポート224、選択部226及び第2ポート222を順次経由して、メモリコントローラ203の第2ポート232に入力される。メモリコントローラ203は、第2ポート232に入力されたリードコマンドをメモリ204に出力する。
リードコマンドを受けたメモリ204は、当該リードコマンドで指定されるアドレスに格納しているリードデータを、L2キャッシュ202を経由せずに、直接DMAC205に出力する(S105)。具体的には、メモリ204はリードデータをメモリコントローラ203に出力し、メモリコントローラ203は、メモリ204により出力されたリードデータを、リードコマンドが入力された第2ポート232に出力する。当該第2ポート232に出力されたリードデータは、バス制御部206の第2ポート222及び第1ポート221を順次介して、DMAC205に出力される。
以上のように、本発明の実施の形態に係るメモリシステム200は、DMAC205からのアクセスにおいてリードヒットした場合には、L2キャッシュ202に格納されているヒットしたデータをライトバックした後、メモリ204からデータを読み出す。
これにより、L2キャッシュ202のデータがCPU201により更新されたことにより、L2キャッシュ202のデータとメモリ204のデータと一致しない場合でも、DMAC205は、正しいデータ(更新された後のデータ)を読み出せる。つまり、CPU201は、書き込み処理を行った後にパージ(ライトバック)処理をL2キャッシュ202に指示する必要がない。このように、本発明の実施の形態に係るメモリシステム200は、CPU201によりパージ処理を削減できるので、コヒーレンシを保つために生じるCPU201の処理性能低下を抑制できる。
さらに、L2キャッシュ202は、ライトバックが完了した後に、第4ポート214にリードコマンドを出力する。これにより、ライトバックの完了前に、メモリ204からデータが読み出されることを防止できる。
次に、リードミス時の動作を説明する。
図8は、メモリシステム200におけるリードミス時の動作の流れを示す図である。
図8に示すように、まず、DMAC205は、リードコマンドをL2キャッシュ202に出力する(S111)。なお、ステップS111、S114及びS115の動作は、図7に示すS101、S104及びS105と同様であり、詳細な説明は省略する。
L2キャッシュ202のヒット判定部71は、第3ポート213に入力されたリードコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判定する。ここでは、ヒット判定部71は、指定されるアドレスのデータをキャッシュ格納部70が格納していない(キャッシュミス)と判定する(S112)。
次に、L2キャッシュ202のDMACリード制御部64は、メモリ204にリードコマンドを出力する(S114)。具体的には、DMACリード制御部64は、第4ポート214にリードコマンドを出力する。また、このリードコマンドは、ステップS101でDMAC205により出力されたリードコマンドと同じアドレスを指定するものである。
第4ポート214に出力されたリードコマンドは、バス制御部206の第4ポート224、選択部226及び第2ポート222を順次経由して、メモリコントローラ203の第2ポート232に入力される。メモリコントローラ203は、第2ポート232に入力されたリードコマンドをメモリ204に出力する。
リードコマンドを受けたメモリ204は、当該リードコマンドで指定されるアドレスのリードデータをDMAC205に出力する(S115)。
以上のように、本発明の実施の形態に係るメモリシステム200は、DMAC205からのアクセスにおいてリードミスした場合には、メモリ204からデータを読み出す。
このように、本発明の実施の形態に係るL2キャッシュ202は、L2キャッシュ202は、リードヒット時の場合でも、ヒットしたデータをDMAC205に出力しない。つまり、DMAC205からのリードアクセス時には、ヒット及びキャッシュミスのいずれの場合でも、メモリ204により出力されるリードデータは、L2キャッシュ202を経由せずに直接、DMAC205に出力される。これにより、L2キャッシュ202とDMAC205との間に、リードデータを伝送するためのバスを形成する必要がない。つまり、図5に示すように、L2キャッシュ202の第3ポート213にはリードコマンドのみを入力し、第3ポート213からはリードコマンドのみを出力すればよい。よって、本発明に係るメモリシステム200は、図15に示すメモリシステム110に比べ、面積を削減できる。
さらに、リードデータがL2キャッシュを経由しないので、DMAC205とL2キャッシュ202とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、DMAC205とL2キャッシュ202とのインターフェースが複雑化することを抑制できる。
また、L2キャッシュ202が第4ポート214に出力したリードコマンドは、メモリコントローラ203の、リードコマンド発行もとのDMAC205に対応する第2ポート232に入力される。これにより、メモリコントローラ203は、当該リードコマンドを、DMAC205が発行したものとして扱うことになる。一方、L2キャッシュ202がリードコマンドをメモリコントローラ203の第1ポート231に出力した場合には、当該リードコマンドは、L2キャッシュ202(CPU201)により発行されたものとして扱われ、L2キャッシュ202に割り当てられた帯域を使用することになる。
このように、DMACリード制御部64により出力されたコマンドを、DMAC205に対応する第2ポート232に入力することにより、DMAC205から出力されたコマンドがL2キャッシュ202を経由してメモリ204に送られる場合であっても、メモリコントローラ203は、第1ポート231にCPU201に対するバンド幅を割り当て、第2ポート232にDMAC205に対するバンド幅を割り当てるという容易な制御で、CPU201及びDMAC205に対するバンド幅の割り当てを実現できる。また、本発明の実施の形態に係るメモリシステム200は、DMAC205がL2キャッシュ202を経由せずにメモリ204にアクセスする場合から、メモリコントローラ203の制御を変更することなく、実現できる。
次に、ライトヒット時の動作を説明する。
図9は、メモリシステム200におけるライトヒット時の動作の流れを示す図である。
図9に示すように、まず、DMAC205は、ライトコマンドをL2キャッシュ202に出力する(S121)。具体的には、DMAC205は、バス制御部206の第1ポート221にライトコマンドを出力する。バス制御部206の第1ポート221に入力されたライトコマンドは、調停部225及び第3ポート223を順次経由して、L2キャッシュ202の第3ポート213に入力される。
L2キャッシュ202のヒット判定部71は、第3ポート213に入力されたライトコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判定する。ここでは、ヒット判定部71は、指定されるアドレスのデータをキャッシュ格納部70が格納している(ヒット)と判定する(S122)。
次に、L2キャッシュ202のDMACライト制御部65は、ヒットしたデータを無効化する(S123)。具体的には、DMACライト制御部65は、ヒットしたデータのバリッドフラグ42を「0」に設定する。
次に、DMACライト制御部65は、メモリ204にライトコマンドを出力する(S124)。具体的には、DMACライト制御部65は、第4ポート214にライトコマンドを出力する。また、このライトコマンドは、ステップS121でDMAC205により出力されたライトコマンドと同じアドレスを指定するものである。
第4ポート214に出力されたライトコマンドは、バス制御部206の第4ポート224、選択部226及び第2ポート222を順次経由して、メモリコントローラ203の第2ポート232に入力される。
一方、DMAC205は、ライトデータを、L2キャッシュ202を経由せずに、メモリ204に出力する(S125)。具体的には、DMAC205は、バス制御部206の第1ポート221にライトデータを出力する。第1ポート221に入力されたライトデータは、第2ポート222を経由して、メモリコントローラ203の第2ポート232に入力される。
メモリコントローラ203は、第2ポート232に入力されたライトコマンド及びライトデータをメモリ204に出力する。
ライトコマンド及びライトデータを受けたメモリ204は、当該ライトコマンドで指定されるアドレスに当該ライトデータを格納する(S126)。
以上のように、本発明の実施の形態に係るメモリシステム200は、DMAC205からのアクセスにおいてライトヒットした場合には、L2キャッシュ202に格納されているヒットしたデータを無効化するとともに、メモリ204にデータを書き込む。
これにより、DMAC205によるライトにより、L2キャッシュ202のデータとメモリ204のデータとが一致しなくなることを防止できる。つまり、L2キャッシュ202とメモリ204とのコヒーレンスを保つために、CPU201及びDMACは、特段の処理(パージ処理)を追加する必要はない。このように、本発明の実施の形態に係るメモリシステム200は、コヒーレンシを保つために生じるCPU201の処理性能低下を抑制できる。
次に、ライトミス時の動作を説明する。
図10は、メモリシステム200におけるライトミス時の動作の流れを示す図である。
図10に示すように、まず、DMAC205は、ライトコマンドをL2キャッシュ202に出力する(S131)。なお、ステップS131、及びS134〜S136の動作は、図9に示すS121、及びS124〜S126と同様であり、詳細な説明は省略する。
L2キャッシュ202のヒット判定部71は、第3ポート213に入力されたライトコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判定する。ここでは、ヒット判定部71は、指定されるアドレスのデータをキャッシュ格納部70が格納していない(キャッシュミス)と判定する(S132)。
次に、L2キャッシュ202のDMACライト制御部65は、メモリ204にライトコマンドを出力する(S134)。具体的には、DMACライト制御部65は、第4ポート214にライトコマンドを出力する。また、このライトコマンドは、ステップS101でDMAC205により出力されたリードコマンドと同じアドレスを指定するものである。
第4ポート214に出力されたライトコマンドは、バス制御部206の第4ポート224、選択部226及び第2ポート222を順次経由して、メモリコントローラ203の第2ポート232に入力される。
一方、DMAC205は、ライトデータをメモリ204に出力する(S135)。
ライトコマンド及びライトデータを受けたメモリ204は、当該ライトコマンドで指定されるアドレスに当該ライトデータを格納する(S136)。
以上のように、本発明の実施の形態に係るメモリシステム200は、DMAC205からのアクセスにおいてライトミスした場合には、メモリ204にライトデータが書き込まれる。
このように、本発明の実施の形態に係るL2キャッシュ202は、ライトヒット時の場合でも、ライトデータを格納しない。つまり、DMAC205からのライトアクセス時には、ヒット及びキャッシュミスのいずれの場合でも、DMAC205により出力されるライトデータは、L2キャッシュ202を経由せずに直接、メモリ204に出力される。これにより、L2キャッシュ202とDMAC205との間に、ライトデータを伝送するためのバスを形成する必要がない。つまり、図5に示すように、L2キャッシュ202の第3ポート213にはライトコマンドのみを入力し、第3ポート213からはライトコマンドのみを出力すればよい。よって、本発明に係るメモリシステム200は、図15に示すメモリシステム110に比べ、面積を削減できる。
さらに、ライトデータがL2キャッシュを経由しないので、DMAC205とL2キャッシュ202とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、DMAC205とL2キャッシュ202とのインターフェースが複雑化することを抑制できる。
また、L2キャッシュ202が第4ポート214に出力したライトコマンドは、メモリコントローラ203の、ライトコマンド発行もとのDMAC205に対応する第2ポート232に入力される。これにより、メモリコントローラ203は、当該ライトコマンドを、DMAC205が発行したものとして扱うことになる。つまり、リードアクセス時と同様に、メモリコントローラ203は、第1ポート231にCPU201に対するバンド幅を割り当て、第2ポート232にDMAC205に対するバンド幅を割り当てるという容易な制御で、CPU201及びDMAC205に対するバンド幅の割り当てを実現できる。また、本発明の実施の形態に係るメモリシステム200は、DMAC205がL2キャッシュ202を経由せずにメモリ204にアクセスする場合から、メモリコントローラ203の制御を変更することなく、実現できる。
次に、L2キャッシュ202の動作の流れを説明する。
まず、リードアクセス時のL2キャッシュ202の動作を説明する。
図11は、リードコマンドが入力された際の、L2キャッシュ202の動作の流れを示すフローチャートである。
図11に示すように、DMAC205によりリードコマンドが発行された場合、つまり第3ポート213にリードコマンドが入力された場合(S201でDMAC)、ヒット判定部71は、当該リードコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判断する(S202)。
格納している場合(S202でヒット)、次に、DMACリード制御部64は、ヒットしたデータがダーティであるか否か、つまりヒットしたデータが、CPU201により更新されているか否かを判定する(S203)。具体的には、L2キャッシュ202は、ヒットしたデータのダーティフラグ43が「1」の場合、ダーティであると判定し、当該ダーティフラグ43が「0」の場合、ダーティでないと判定する。
ダーティの場合(S203でYes)、DMACリード制御部64は、ヒットしたデータをライトバックする(S204)。
ライトバックが完了した後、DMACリード制御部64は、リードコマンドを第4ポート214に出力する(S205)。
また、ダーティでない場合(S203でNo)、又は、ステップS202でキャッシュミスの場合(S202でミス)、DMACリード制御部64は、ライトバック(S204)を行わずに、リードコマンドを第4ポート214に出力する(S205)。
一方、CPU201によりリードコマンドが発行された場合、つまり第1ポート211にリードコマンドが入力された場合(S201でCPU)、ヒット判定部71は、当該リードコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判断する(S206)。
格納している場合(S206でヒット)、CPUリード制御部61は、ヒットしたデータをリードデータとしてCPU201(第1ポート211)に出力する(S208)。
一方、格納していない場合(S206でミス)、CPUリード制御部61は、リードコマンドで指定されるアドレスのデータをメモリ204から読み出す(S207)。具体的には、CPUリード制御部61は、CPU201により入力されたリードコマンドと同じアドレスを指定するリードコマンドを第2ポート212に出力する。第2ポート212に出力されたリードコマンドは、メモリコントローラ203の第1ポート231を介して、メモリ204に出力される。リードコマンドを受けたメモリ204は、当該リードコマンドで指定されるアドレスに格納するデータをリードデータとしてメモリコントローラ203に出力する。メモリコントローラ203は、メモリ204により出力されたリードデータを第1ポート231から、L2キャッシュ202の第2ポート212に出力する。
CPUリード制御部61は、第2ポート212に入力されたリードデータをキャッシュ格納部70に格納するとともに、当該リードデータを第1ポート211からCPU201に出力する(S208)。
次に、ライトアクセス時のL2キャッシュ202の動作を説明する。
図12は、ライトコマンドが入力された際の、L2キャッシュ202の動作の流れを示すフローチャートである。
図12に示すように、DMAC205によりライトコマンドが発行された場合、つまり第3ポート213にライトコマンドが入力された場合(S211でDMAC)、ヒット判定部71は、当該ライトコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判断する(S212)。
格納している場合(S212でヒット)、次に、L2キャッシュ202は、ヒットしたデータを無効化する(S213)。具体的には、L2キャッシュ202は、ヒットしたデータのバリッドフラグ42を「0」に設定する。
次に、L2キャッシュ202は、ライトコマンドを第4ポート214に出力する(S214)。
また、ステップS212でキャッシュミスの場合(S212でミス)、L2キャッシュ202は、無効化(S213)を行わずに、ライトコマンドを第4ポート214に出力する(S214)。
一方、CPU201によりライトコマンドが発行された場合、つまり第1ポート211にライトコマンド及びライトデータが入力された場合(S211でCPU)、ヒット判定部71は、当該ライトコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判断する(S215)。
格納している場合(S215でヒット)、CPUライト制御部62は、ヒットしたデータを第1ポートに入力されたライトデータに更新する(S216)。具体的には、CPUライト制御部62は、ヒットしたデータをライトデータに変更したうえで、ダーティフラグ43をセットする。
一方、格納していない場合(S215でミス)、CPUライト制御部62は、ライン入れ替えを行う。つまり、CPUライト制御部62は、新たなキャッシュエントリ40を選択し、選択したキャッシュエントリ40に、第1ポートに入力されたライトデータを格納する(S217)。また、CPUライト制御部62は、当該ライトデータのダーティフラグをセットする。
以上より、本発明の実施の形態に係るメモリシステム200では、DMAC205からのアクセスにおいてリードヒットした場合には、L2キャッシュ202に格納されているヒットしたデータをライトバックした後、メモリ204からデータを読み出す。
これにより、L2キャッシュ202のデータがCPU201により更新されたことにより、L2キャッシュ202のデータとメモリ204のデータと一致しない場合でも、DMAC205は、正しいデータ(更新された後のデータ)を読み出せる。つまり、CPU201は、書き込み処理を行った後にパージ(ライトバック)をL2キャッシュ202に指示する必要がない。このように、本発明の実施の形態に係るメモリシステム200は、CPU201によりパージ処理を削減できるので、コヒーレンシを保つために生じるCPU201の処理性能低下を抑制できる。
また、本発明の実施の形態に係るメモリシステム200は、DMAC205からのアクセスにおいてライトヒットした場合には、L2キャッシュ202に格納されているヒットしたデータを無効化するとともに、メモリ204にデータを書き込む。
これにより、DMAC205によるライトにより、L2キャッシュ202のデータとメモリ204のデータとが一致しなくなることを防止できる。つまり、L2キャッシュ202とメモリ204とのコヒーレンスを保つために、CPU201及びDMAC205は、特段の処理(パージ処理)を追加する必要はない。このように、本発明の実施の形態に係るメモリシステム200は、コヒーレンシを保つために生じるCPU201の処理性能低下を抑制できる。
さらに、本発明の実施の形態に係るメモリシステム200では、L2キャッシュ202は、DMAC205からのリードアクセスがヒットした場合でも、L2キャッシュ202が格納するデータをDMAC205に出力しない。また、L2キャッシュ202は、DMAC205からのライトアクセスがヒットした場合でも、DMAC205から出力されたライトデータを格納しない。
よって、L2キャッシュ202とDMAC205との間にデータを伝送するためのバスを形成する必要がない。よって、本発明に係るメモリシステム200は、図15に示すメモリシステム110に比べ、面積を削減できる。さらに、リードデータ及びライトデータがL2キャッシュを経由しないので、DMAC205とL2キャッシュ202とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、DMAC205とL2キャッシュ202とのインターフェースが複雑化することを抑制できる。
また、本発明の実施の形態に係るメモリシステム200では、L2キャッシュ202が第4ポート214に出力したコマンドは、メモリコントローラ203の、コマンド発行もとのDMAC205に対応する第2ポート232に入力される。これにより、メモリコントローラ203は、当該コマンドを、DMAC205が発行したものとして扱うことになる。つまり、本発明の実施の形態に係るメモリシステム200は、DMAC205がL2キャッシュ202を経由せずにメモリ204にアクセスする場合から、メモリコントローラ203の制御を変更することなく、実現できる。また、メモリ204へのアクセスにおける各マスタ(CPU201及びDMAC205)に対するバンド幅の割り当て制御を容易に実現できる。
なお、上述したインターフェースの複雑化は、DMAC205等の外部マスタと、メモリ204との間で複数のバスプロトコルが使用されている場合に特に問題となる。言い換えると、本発明の実施の形態に係るメモリシステム200は、DMAC205等の外部マスタと、メモリ204との間で複数のバスプロトコルが使用されている場合に、特に、有効である。
例えば、リングバスを用いるメモリシステムでは、DMAC205等の外部マスタと、メモリ204との間で複数のバスプロトコルが使用されるので、本発明は、特に有効である。
図13は、本発明の実施の形態に係るメモリシステム200の変形例であり、リングバスを用いるメモリシステム210の構成を示す図である。図13に示すように、メモリシステム210は、リングバス241を備える。なお、図1と同様の要素には同一の符号を付しており説明は省略する。L2キャッシュ202、バス制御部206及びメモリコントローラ203は、リングバス241を経由して接続される。
以上、本発明の実施の形態に係るキャッシュメモリについて説明したが、本発明は、この実施の形態に限定されるものではない。
例えば、上記説明では、L2キャッシュ202及びL1キャッシュを備えるメモリシステムを例に説明したが、L1キャッシュのみを備えるメモリシステムに本発明を適用してもよい。
なお、メモリシステムがレベル1キャッシュとレベルキャッシュとを有する場合には、レベル2キャッシュに本発明を適用することが好適である。なぜなら、レベル2キャッシュがメモリシステム全体に与える影響は、レベル1キャッシュに比べ低い。具体的には、レベル1キャッシュでヒットの場合のアクセスが、プロセッサにとって最も高速のアクセスとなる。よって、マスタからレベル1キャッシュにアクセスが行われると、最も高速化に影響する、プロセッサからレベル1キャッシュへのアクセスに悪影響が出てしまう。よって、レベル2キャッシュに本発明に係るキャッシュメモリを適用することで、レベル1キャッシュに本発明に係るキャッシュメモリを適用する場合に比べて、プロセッサの高速化に対する悪影響を少なくできる。
また、レベル3キャッシュ以上を備えるメモリシステムに本発明を適用してもよい。この場合、上述した理由により最大レベルのキャッシュに本発明のキャッシュメモリを適用することが好ましい。
また、図1において、2個のCPU201と、2個のDMAC205とを示しているが、CPU201及びDMAC205の数は、1個又は3個以上であってもよい。また、DMAC205以外のマスタが含まれてもよい。
なお、図1に示すように、それぞれがL1キャッシュ207を備える複数のCPU201により共用されるL2キャッシュ202に本発明に係るキャッシュメモリを適用することは、特に好適である。
なぜなら、それぞれがL1キャッシュ207を備える複数のCPU201によりL2キャッシュ202が共用される場合、複数のL1キャッシュ207と、共用されているL2キャッシュ202との間のコヒーレンシを保つために、複数のCPU201は、スヌープ方式等のアルゴリズムに基づいた制御を行っている。よって、この制御に加え、L2キャッシュ202とメモリ204との間のコヒーレンスを保つための制御を加えると、さらに制御が複雑になり実現が困難となる。これに対して、本発明に係るキャッシュメモリをL2キャッシュ202に適用することで、L2キャッシュ202とメモリ204との間のコヒーレンスを保つための処理(パージ処理)を削減できるので、上記制御の複雑化を回避できる。このように、本発明に係るキャッシュメモリは、それぞれがL1キャッシュ207を備える複数のCPU201により共用されるL2キャッシュ202に適用することが、特に好適である。
また、上記説明は、L2キャッシュ202が4ウェイ・セット・アソシエイティブ方式のキャッシュメモリの場合を例に説明したが、ウェイ31の数は4個以外でもよい。
さらに、フルアソシエイティブ方式のキャッシュメモリ、又は、ダイレクトマップ方式のキャッシュメモリに本発明を適用してもよい。
本発明は、キャッシュメモリ及びキャッシュメモリを備えるメモリシステムに適用できる。
20 アドレスレジスタ
21 メモリI/F
30 デコーダ
31、31a、31b、31c、31d ウェイ
32a、32b、32c、32d 比較器
33a、33b、33c、33d アンド回路
34 オア回路
35、36 セレクタ
37 デマルチプレクサ
38 制御部
40 キャッシュエントリ
41 タグ
42 バリッドフラグ
43 ダーティフラグ
44 ラインデータ
51 タグアドレス
52 セットインデックス
53 ワードインデックス
60 CPUアクセス制御部
61 CPUリード制御部
62 CPUライト制御部
63 DMACアクセス制御部
64 DMACリード制御部
65 DMACライト制御部
70 キャッシュ格納部
71 ヒット判定部
100、110、200、210 メモリシステム
101、201 CPU
102 キャッシュメモリ
103、203 メモリコントローラ
104、204 メモリ
105、205 DMAC
106 バス
202 L2キャッシュ
206 バス制御部
207 L1キャッシュ
211、221、231 第1ポート
212、222、232 第2ポート
213、223 第3ポート
214、224 第4ポート
225 調停部
226 選択部
241 リングバス
本発明は、キャッシュメモリ、メモリシステム及びその制御方法に関し、特に、プロセッサからのアクセスに応じて、メインメモリに格納されるデータの一部を格納するキャッシュメモリ、及び当該キャッシュメモリを含むメモリシステムに関する。
近年のメモリシステムでは、例えば、SRAM(Static Random Access Memory)等から成る小容量で高速なキャッシュメモリをマイクロプロセッサの内部、又はその近傍に配置している。このようなメモリシステムでは、マイクロプロセッサがメインメモリから読み出したデータの一部、及び、メインメモリに書き込むデータの一部を、キャッシュメモリが記憶する(キャッシュする)ことによって、マイクロプロセッサのメモリアクセスを高速化させている。
図14は、従来のメモリシステム100の構成を示す図である。図14に示すメモリシステム100は、CPU101と、キャッシュメモリ102と、メモリコントローラ103と、メインメモリであるメモリ104と、DMAC(Direct Memory Access Controller)105とを備える。
キャッシュメモリ102は、CPU101からメモリ104へのアクセスが発生した場合、当該アクセス先のアドレスのデータを自身が既に格納しているかを判定し、格納している場合(以下ヒット)、当該格納しているデータをCPU101に出力する(リード時)、又は、当該データを更新する(ライト時)。また、キャッシュメモリ102は、当該アクセス先のアドレスのデータを格納していない場合(以下キャッシュミス)、CPU101から出力された当該アドレス及びデータを格納する(ライト時)、又は、当該アドレスのデータをメモリ104から読み出したうえで格納するとともに、読み出したデータをCPU101に出力する(リード時)。
また、キャッシュミスの場合には、キャッシュメモリ102は、当該キャッシュメモリ102内に、新たなアドレス及びデータを格納する空き領域があるか否かを判断し、空き領域がない場合には、ライン入れ替え(リプレース)、及び必要に応じてライトバック(パージ)等の処理を行う。
ここで、従来のメモリシステム100では、ライト時には一時的にキャッシュメモリ102にライトデータが格納される。これにより、メモリ104に格納されているデータと、キャッシュメモリ102に格納されているデータが異なるという状態が発生する。つまり、この状態で、DMAC105がメモリ104にアクセスした場合、CPU101とDMAC105とでデータの一貫性(コヒーレンシ)を保てないという問題が生じる。
このコヒーレンシを保つために、CPU101は、キャッシュメモリ102に書き込みを行った後に、ライトバック(パージ)をキャッシュメモリ102に指示する必要がある。しかしながら、CPU101は、このパージ処理が完了するまで、次の処理を行うことができない。つまり、CPU101の処理性能が低下するという問題が生じる。
さらに、レベル2キャッシュを備えるメモリシステムでは、レベル1キャッシュ及びレベル2キャッシュに対して、このパージ処理を行う必要があるので、CPU101の処理性能の低下はさらに大きくなる
この問題に対して、キャッシュメモリ102を、CPU101とDMAC105とで共用する方法が知られている(例えば、特許文献1参照)。
以下、キャッシュメモリ102を共用する従来のメモリシステム110について説明する。
図15は、キャッシュメモリ102を共用する従来のメモリシステム110の構成を示す図である。
図15に示すメモリシステム110は、図14に示す構成に加え、バス106を備える。これにより、CPU101とDMAC105とがメモリ104に格納される同じデータを用いる場合には、DMAC105はバス106を介して、CPU101と同様に、キャッシュメモリ102にアクセスできる。
図16は、DMAC105からのアクセスに対するキャッシュメモリ102の動作の概略を示す図である。
図16に示すように、リード時かつヒットの場合、キャッシュメモリ102は、ヒットしたデータをDMAC105に出力する。また、ライト時かつヒットの場合、キャッシュメモリ102は、ヒットしたデータを更新する。
また、リード時かつキャッシュミスの場合、キャッシュメモリ102がメモリ104からデータを読み出したうえで格納するとともに、読み出したデータをDMAC105に出力する、又は、DMAC105がメモリ104からデータを読み出す。また、ライト時かつキャッシュミスの場合、キャッシュメモリ102がDMAC105から出力されたアドレス及びデータを格納する、又はDMAC105がメモリ104にデータを書き込む。
以上の構成により、CPU101がキャッシュメモリ102のデータを更新したとしても、DMAC105は、更新されたキャッシュメモリ102のデータを読み出すので、CPU101は、上述したパージ処理を行う必要がない。よって、メモリシステム110は、コヒーレンシを保ちながら、CPU101の処理性能の低下を抑制できる。
特開2002−278834号公報
しかしながら、図15に示すメモリシステム110は、バス106を備える必要があるので、図14に示すメモリシステム100に比べて、面積が増加するという問題がある。これは、メモリシステム110内に、DMAC105等のマスタが複数含まれる場合には、さらに顕著になる。
さらに、DMAC105とメモリ104との間のデータ伝送に用いられるプロトコルとして複数のバスプロトコルが用いられている場合には、DMAC105とキャッシュメモリ102とインターフェースが複雑化するという問題がある。
そこで、本発明は、コヒーレンシを保つために生じるCPU等のプロセッサの処理性能低下を抑制するとともに、面積の増加、及びキャッシュメモリのインターフェースの複雑化を抑制できるメモリシステム及びキャッシュメモリを提供することを目的とする。
上記目的を達成するために、本発明に係るキャッシュメモリは、プロセッサからのアクセスに応じて、メインメモリのデータの一部を格納するキャッシュメモリであって、前記プロセッサからのコマンドが入力される第1ポートと、前記プロセッサ以外のマスタからのコマンドが入力される第2ポートと、前記第1ポート及び前記第2ポートにコマンドが入力された際に、当該コマンドで指定されるアドレスに対応するデータを当該キャッシュメモリが格納しているか否かを判定するヒット判定部と、前記コマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記コマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータと、前記メインメモリに格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドを前記マスタから出力されたコマンドとして前記メインメモリに出力する第1制御部とを備える。
この構成によれば、DMAC等のマスタからのアクセスがヒットした場合、本発明に係るキャッシュメモリは、当該ヒットしたデータをマスタに出力する、又は、当該ヒットしたデータを更新するのではなく、当該ヒットしたデータとメインメモリに格納されるデータとのコヒーレンシを保つための処理を行った後、メインメモリにコマンドを出力する。
これにより、キャッシュメモリのデータがCPU等のプロセッサにより更新されている場合でも、マスタからメインメモリへのアクセス時には、キャッシュメモリによりコヒーレンシを保つための処理が行われる。これにより、その後にキャッシュメモリにより出力されたコマンドにより発生するメインメモリへのアクセスにおいて、キャッシュメモリとメインメモリとのコヒーレンシが保たれる。よって、CPU等のプロセッサは、書き込み処理を行った後にパージ処理等のコヒーレンシを保つための処理をキャッシュメモリに指示する必要がない。このように、本発明に係るキャッシュメモリは、パージ処理を削減できるので、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
さらに、本発明に係るキャッシュメモリでは、マスタからのアクセスがヒットした場合でも、当該キャッシュメモリとマスタとの間でリードデータ又はライトデータの伝送を行う必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータ又はライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。
さらに、リードデータ又はライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、前記第1制御部は、前記コマンドとしてリードコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していると判定され、かつ前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータがダーティである場合、当該データを前記メインメモリにライトバックし、当該ライトバックが完了した後に、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力する第1リード制御部を備えてもよい。
この構成によれば、マスタからのリードアクセスがヒットした場合、本発明に係るキャッシュメモリは、当該キャッシュメモリが格納するデータをマスタに出力するのではなく、当該データをメインメモリにライトバックした後、メインメモリにリードコマンドを出力する。これにより、キャッシュメモリのデータが、プロセッサにより更新されたことにより、キャッシュメモリのデータとメインメモリのデータとが一致しない場合でも、マスタは、正しいデータ(更新された後のデータ)を読み出せる。つまり、プロセッサは、書き込み処理を行った後にパージ処理をキャッシュメモリに指示する必要がない。このように、本発明に係るキャッシュメモリは、パージ処理を削減できるので、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
さらに、本発明に係るキャッシュメモリでは、マスタからのリードアクセスがヒットした場合でも、当該キャッシュメモリが格納するデータをマスタに出力する必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。
さらに、リードデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、前記第1リード制御部は、前記リードコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力してもよい。
この構成によれば、マスタからのリードアクセスがキャッシュミスした場合でも、キャッシュメモリは、メインメモリから読み出したデータをマスタに出力する必要がない。よって、当該キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、リードデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、本発明に係るメモリシステムは、前記キャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、前記メインメモリは、前記第1リード制御部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力する。
この構成によれば、リードデータは、キャッシュメモリを経由せずに、メインメモリから直接マスタに出力される。よって、キャッシュメモリとマスタとの間にリードデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、前記キャッシュメモリは、さらに、前記リードコマンドが前記第1ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを、前記プロセッサに出力し、前記リードコマンドが前記第1ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記メインメモリから前記リードコマンドで指定されるアドレスのデータを読み出し、読み出したデータを当該キャッシュメモリに格納するとともに、前記プロセッサに出力する第2リード制御部を備えてもよい。
この構成によれば、本発明に係るキャッシュメモリは、プロセッサからのアクセスに対しては、通常のキャッシュメモリとして機能できる。
また、前記メモリシステムは、さらに、前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、前記メモリコントローラは、前記第1リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記マスタに出力する第3ポートと、前記第2リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記キャッシュメモリに出力する第4ポートとを有し、前記メモリコントローラは、前記第3ポートに入力されたリードコマンドと、前記第4ポートに入力されたリードコマンドとを、当該リードコマンドが前記第3ポート及び前記第4ポートのうちいずれに入力されたリードコマンドであるかに応じて調停してもよい。
この構成によれば、マスタからのリードアクセスに応じてキャッシュメモリが出力したリードコマンドは、メモリコントローラの第3ポートに入力され、プロセッサからのリードアクセスに応じてキャッシュメモリが出力したリードコマンドは、メモリコントローラの第4ポートに入力される。これにより、マスタにより出力されたリードコマンドがキャッシュメモリを経由してメモリコントローラに入力される場合でも、メモリコントローラは、第3ポートにマスタに対するバンド幅を割り当て、第4ポートにプロセッサに対するバンド幅を割り当てるという容易な制御で、マスタ及びプロセッサに対するバンド幅の割り当てを実現できる。
また、前記メモリシステムは、さらに、前記第1リード制御部により出力されたリードコマンドと、前記マスタにより出力されたリードコマンドとのうち一方を選択し、選択したリードコマンドを前記メインメモリに出力する選択部を備え、前記メインメモリは、前記選択部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力してもよい。
この構成によれば、プロセッサとマスタとがメインメモリの同一のデータを使用しない場合には、マスタが直接メインメモリにアクセスできる。
また、本発明に係るキャッシュメモリにおいて、前記第1制御部は、前記コマンドとしてライトコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを無効化するとともに、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力する第1ライト制御部を備えてもよい。
この構成によれば、マスタからのアクセスにおいてライトヒットした場合には、本発明に係るキャッシュメモリは、当該キャッシュメモリが格納しているヒットしたデータを無効化するとともに、メインメモリにライトコマンドを出力する。これにより、マスタによるライトにより、キャッシュメモリのデータとメインメモリのデータとが一致しなくなることを防止できる。つまり、キャッシュメモリとメインメモリとのコヒーレンスを保つために、プロセッサ及びマスタは、特段の処理(パージ処理等)を追加する必要はない。このように、本発明は、コヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
さらに、本発明に係るキャッシュメモリでは、マスタからのライトアクセスがヒットした場合でも、当該キャッシュメモリがライトデータを格納しない。よって、当該キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。
さらに、ライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、前記第1ライト制御部は、前記ライトコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力してもよい。
この構成によれば、マスタからのライトアクセスがキャッシュミスした場合でも、キャッシュメモリは、ライトデータを格納しない。よって、当該キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、ライトデータがキャッシュメモリを経由しないので、マスタとキャッシュメモリとのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、本発明に係るメモリシステムは、前記キャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、前記マスタは、ライトデータを、前記キャッシュメモリを経由せずに、前記メインメモリに出力し、前記メインメモリは、前記マスタにより出力されたライトデータを、前記第1ライト制御部により出力された前記ライトコマンドで指定されるアドレスに格納する。
この構成によれば、ライトデータは、キャッシュメモリを経由せずに、マスタからメインメモリに直接出力される。よって、キャッシュメモリとマスタとの間にライトデータを伝送するためのバスを形成する必要がない。これにより、本発明に係るキャッシュメモリを含むメモリシステムの面積を削減できる。さらに、本発明は、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
また、前記キャッシュメモリは、さらに、前記ライトコマンド及びライトデータが前記第1ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを前記ライトデータに更新する第2ライト制御部を備え、前記第2ライト制御部は、さらに、当該更新したデータを前記メインメモリにライトバックするためのライトコマンド及びライトデータを前記メインメモリに出力してもよい。
この構成によれば、本発明に係るキャッシュメモリは、プロセッサからのアクセスに対しては、通常のキャッシュメモリとして機能できる。
また、前記メモリシステムは、さらに、前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、前記メモリコントローラは、前記第1ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトデータとが入力される第3ポートと、前記第2ライト制御部により出力されたライトコマンド及びライトデータが入力される第4ポートとを有し、前記メモリコントローラは、前記第3ポートに入力されたライトコマンドと、前記第4ポートに入力されたライトコマンドとを、当該ライトコマンドが前記第3ポート及び前記第4ポートのうちいずれに入力されたライトコマンドであるかに応じて調停してもよい。
この構成によれば、マスタからのライトアクセスに応じてキャッシュメモリが出力したライトコマンドは、メモリコントローラの第3ポートに入力され、プロセッサからのライトアクセスに応じてキャッシュメモリが出力したライトコマンドは、メモリコントローラの第4ポートに入力される。これにより、マスタにより出力されたライトコマンドがキャッシュメモリを経由してメモリコントローラに入力される場合でも、メモリコントローラは、第3ポートにマスタに対するバンド幅を割り当て、第4ポートにプロセッサに対するバンド幅を割り当てるという容易な制御で、マスタ及びプロセッサに対するバンド幅の割り当てを実現できる。
また、前記メモリシステムは、さらに、前記第1ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトコマンドとのうち一方を選択し、選択したライトコマンドを前記メインメモリに出力する選択部を備え、前記メインメモリは、前記マスタにより出力されたライトデータを、前記選択部により出力された前記ライトコマンドで指定されるアドレスに格納してもよい。
この構成によれば、プロセッサとマスタとがメインメモリの同一のデータを使用しない場合には、マスタが直接メインメモリにアクセスできる。
また、前記プロセッサは、レベル1キャッシュを備え、前記キャッシュメモリは、レベル2キャッシュであってもよい。
この構成によれば、本発明に係るキャッシュメモリは、レベル2キャッシュに適用される。ここで、レベル2キャッシュがメモリシステム全体に与える影響は、レベル1キャッシュに比べ低い。具体的には、レベル1キャッシュでヒットの場合のアクセスが、プロセッサにとって最も高速のアクセスとなる。よって、マスタからレベル1キャッシュにアクセスが行われると、最も高速化に影響する、プロセッサからレベル1キャッシュへのアクセスに悪影響が出てしまう。よって、レベル2キャッシュに本発明に係るキャッシュメモリを適用することで、レベル1キャッシュに本発明に係るキャッシュメモリを適用する場合に比べて、プロセッサの高速化に対する悪影響を少なくできる。
また、前記メモリシステムは、前記プロセッサを含む複数のプロセッサを含み、前記複数のプロセッサの各々は、レベル1キャッシュを備え、前記キャッシュメモリは、前記複数のプロセッサに共用されてもよい。
この構成によれば、複数のプロセッサにより共用されているレベル2キャッシュに本発明に係るキャッシュメモリが適用される。ここで、複数のプロセッサによりレベル2キャッシュが共用されている場合には、複数のレベル1キャッシュと、レベル2キャッシュとのコヒーレンシを保つために、複数のプロセッサは、スヌープ方式等のアルゴリズムに基づいた制御を行う必要がある。よって、この制御に加え、レベル2キャッシュとメインメモリとの間のコヒーレンスを保つための制御を加えると、さらに制御が複雑になり実現が困難となる。これに対して、本発明に係るキャッシュメモリをレベル2キャッシュに用いることで、レベル2キャッシュとメインメモリとの間のコヒーレンスを保つための処理を削減できるので、上記制御の複雑化を回避できる。
なお、本発明は、このようなキャッシュメモリ及びメモリシステムとして実現できるだけでなく、キャッシュメモリ及びメモリシステムに含まれる特徴的な手段をステップとするキャッシュメモリの制御方法及びメモリシステムの制御方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
また、本発明は、このようなキャッシュメモリ及びメモリシステムの機能の一部又は全てを有する半導体集積回路としても実現できる。
以上より、本発明は、コヒーレンシを保つために生じるCPUの処理性能低下を抑制するとともに、面積の増加、及びキャッシュメモリのインターフェースの複雑化を抑制できるメモリシステム及びキャッシュメモリを提供できる。
図1は、本発明の実施の形態に係るメモリシステムの構成を示すブロック図である。 図2は、本発明の実施の形態に係るキャッシュメモリの構成を示すブロック図である。 図3は、本発明の実施の形態に係るキャッシュ格納部及びヒット判定部の構成を示す図である。 図4は、本発明の実施の形態に係るウェイの構成を示す図である。 図5は、本発明の実施の形態に係るメモリシステムにおける接続関係を示す図である。 図6は、本発明の実施の形態に係るキャッシュメモリにおけるDMACからのアクセスに対する動作の概略を示す図である。 図7は、本発明の実施の形態に係るメモリシステムにおけるリードヒット時の動作の流れを示す図である。 図8は、本発明の実施の形態に係るメモリシステムにおけるリードミス時の動作の流れを示す図である。 図9は、本発明の実施の形態に係るメモリシステムにおけるライトヒット時の動作の流れを示す図である。 図10は、本発明の実施の形態に係るメモリシステムにおけるライトミス時の動作の流れを示す図である。 図11は、本発明の実施の形態に係るキャッシュメモリにおけるリード時の動作の流れを示すフローチャートである。 図12は、本発明の実施の形態に係るキャッシュメモリにおけるライト時の動作の流れを示すフローチャートである。 図13は、本発明の実施の形態に係るメモリシステムの変形例の構成を示すブロック図である。 図14は、従来のメモリシステムの構成を示すブロック図である。 図15は、従来のメモリシステムの構成を示すブロック図である。 図16は、従来のキャッシュメモリにおけるDMACからのアクセスに対する動作の概略を示す図である。
以下、本発明に係るキャッシュメモリの実施の形態について、図面を参照しながら詳細に説明する。
(実施の形態1)
本発明の実施の形態に係るキャッシュメモリは、DMAC等のマスタからのリードアクセスがヒットした場合、ヒットしたデータをメインメモリにライトバックした後、メインメモリにリードコマンドを出力する。また、マスタからのライトアクセスがヒットした場合、ヒットしたデータを無効化するとともに、メインメモリにライトコマンドを出力する。
これにより、CPU等のプロセッサ及びマスタがパージ処理を行わなくても、キャッシュメモリとメインメモリとの間のコヒーレンシを保つことができる。よって、本発明の実施の形態に係るキャッシュメモリは、キャッシュメモリとメインメモリとの間のコヒーレンシを保つために生じるプロセッサの処理性能低下を抑制できる。
さらに、リードデータ及びライトデータは、キャッシュメモリを経由せずに、マスタとメインメモリとの間で直接伝送される。これにより、キャッシュメモリとマスタとの間にリードデータ及びライトデータを伝送するためのバスを形成する必要がないので、メモリシステムの面積を削減できるとともに、マスタとキャッシュメモリとのインターフェースが複雑化することを抑制できる。
まず、本発明の実施の形態に係るキャッシュメモリを含むメモリシステムの構成を説明する。
図1は、本発明の実施の形態に係るメモリシステムの構成を示す図である。
図1に示すメモリシステム200は、2個のCPU201と、L2(レベル2)キャッシュ202と、メモリコントローラ203と、メモリ204と、2個のDMAC205と、バス制御部206とを含む。また、複数のCPU201は、それぞれL1(レベル1)キャッシュ207を備える。
L1キャッシュ207及びL2キャッシュ202は、メモリ204に比べ、高速であるが容量が少ないキャッシュメモリである。例えば、L1キャッシュ207及びL2キャッシュ202は、SRAMである。なお、L1キャッシュ207は、L2キャッシュ202よりCPU201の近くに配置されればよく、CPU201の外に配置されてもよい。
このL1キャッシュ207及びL2キャッシュ202は、CPU201がメモリ204から読み出したデータの一部、及び、メモリ204に書き込むデータの一部を記憶する、所謂キャッシュ動作を行う。ここでキャッシュ動作とは、CPU201からメモリ204へのアクセスが発生した場合、L2キャッシュ202が、当該アクセス先のアドレスのデータを自身が既に格納しているかを判定し、格納している場合(ヒット)、当該格納しているデータをCPU201に出力する(リード時)、又は、当該データを更新する(ライト時)動作である。また、L2キャッシュ202は、当該アクセス先のアドレスのデータを格納していない場合(キャッシュミス)、CPU201から出力された当該アドレス及びデータを格納する(ライト時)、又は、当該アドレスのデータをメモリ204から読み出したうえで格納するとともに、読み出したデータをCPU201に出力する(リード時)。
また、キャッシュミスの場合には、L1キャッシュ207及びL2キャッシュ202は、当該L1キャッシュ207又はL2キャッシュ202内に、新たなアドレス及びデータを格納する空き領域があるか否かを判断し、空き領域がない場合には、ライン入れ替え(リプレース)、及び必要に応じてライトバック(パージ)等の処理を行う。
また、L2キャッシュ202は、2個のCPU201で共通に用いられる。
メモリコントローラ203は、L2キャッシュからメモリ204へのアクセス、及び複数のDMAC205それぞれからのメモリ204へのアクセスを調停する、メモリ204のインターフェースである。
メモリ204は、SDRAM等の大容量のメインメモリである。
DMAC205は、外部の機器(外部デバイス及び外部メモリ等)と、メモリ204との間のデータ転送を行うマスタである。
バス制御部206は、DMAC205により出力されたコマンドをL2キャッシュ202又はメモリコントローラ203に出力する。また、バス制御部206は、L2キャッシュ202により出力されたコマンドをメモリコントローラ203に出力する。また、バス制御部206は、DMAC205により出力されたライトデータを、L2キャッシュ202を経由せずに、メモリコントローラ203に出力し、メモリコントローラ203により出力されたリードデータを、L2キャッシュ202を経由せずに、DMAC205に出力する。
ここで、コマンドとは、データ書き込み又はデータ読み出しを指定する情報と、アクセス先のアドレスを示す情報とを含む。また、ライトデータとは、メモリ204に書き込むデータであり、リードデータとは、メモリ204から読み出したデータ、又は、L2キャッシュ202に格納されていたデータである。また、データ書き込みを指示するコマンドをライトコマンド、データ読み出しを指示するコマンドをリードコマンドと呼ぶ。また、ラインコマンド及びリードコマンドを共に称して、単に「コマンド」と記す。
また、図1に示す各構成要素は、典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。また、各構成要素が、複数のチップで実現されてもよい。
以下では、L2キャッシュ202に本発明に係るキャッシュメモリを適用した例について説明する。
図2は、L2キャッシュ202の機能構成を示すブロック図である。
図2に示すように、L2キャッシュ202は、制御部38と、キャッシュ格納部70と、ヒット判定部71と、第1ポート211と、第2ポート212と、第3ポート213と、第4ポート214とを備える。
第1ポート211は、CPU201と接続され、CPU201から出力されたコマンド及びライトデータが入力され、CPU201へリードデータを出力する。
第2ポート212は、メモリコントローラ203と接続され、メモリコントローラ203により出力されたリードデータが入力され、メモリコントローラ203へコマンド及びライトデータを出力する。言い換えると、第2ポート212は、メモリ204によりリードデータが入力され、メモリ204へコマンド及びライトデータを出力する。
第3ポート213は、バス制御部206と接続され、バス制御部206により出力されたコマンドが入力される。言い換えると、第3ポート213は、DMAC205により出力されたコマンドが入力される。
第4ポート214は、バス制御部206と接続され、バス制御部206へコマンドを出力する。言い換えると、第4ポート214は、メモリ204へコマンドを出力する。
キャッシュ格納部70は、CPU201からアクセスがあった、メモリ204に格納されるデータを格納する。
ヒット判定部71は、CPU201及びDMAC205からコマンドが入力された際に、当該コマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか(ヒット)、格納していないか(キャッシュミス)を判定する。
制御部38は、L2キャッシュ202全体の制御を行う。具体的には、CPU201がメモリ204から読み出したデータの一部、及び、メモリ204に書き込むデータの一部を記憶する、所謂キャッシュ動作を制御する。また、制御部38は、CPU201からのアクセスであるか、DMAC205からのアクセスであるかに応じて、異なる処理を行う。
この制御部38は、CPU201からのアクセスに対するL2キャッシュ202の動作を制御するCPUアクセス制御部60と、DMAC205からのアクセスに対するL2キャッシュ202の動作を制御するDMACアクセス制御部63とを備える。
CPUアクセス制御部60は、CPU201からのリードアクセスに対するL2キャッシュ202の動作を制御するCPUリード制御部61と、CPU201からのライトアクセスに対するL2キャッシュ202の動作を制御するCPUライト制御部62とを備える。
CPUリード制御部61は、メモリ204へのリードコマンドがCPU201から第1ポート211に入力され、かつヒット判定部70によりヒットと判定された場合、ヒットしたデータを、第1ポート211からCPU201に出力する。また、CPUリード制御部61は、メモリ204へのリードコマンドがCPU201から第1ポート211に入力され、かつヒット判定部70によりキャッシュミスと判定された場合、入力されたリードコマンドで指定されるアドレスのデータを、第2ポート212を介してメモリ204から読み出し、当該読み出したデータをキャッシュ格納部70に格納するとともに、当該読み出したデータを第1ポート211からCPU201に出力する。
CPUライト制御部62は、メモリへ204のライトコマンドがCPU201から第1ポート211に入力され、かつヒット判定部71によりヒットと判定された場合、ヒットしたデータを、CPU201から入力されたライトデータに更新する。また、CPUライト制御部62は、メモリ204へのライトコマンドがCPU201から第1ポート211に入力され、かつヒット判定部71によりキャッシュミスと判定された場合、キャッシュ格納部70に新たにライトデータを格納する。また、CPUライト制御部62は、キャッシュ格納部70が格納するデータをメモリ204に書き込むためのライトコマンド及びライトデータを第2ポート212からメモリ204に出力する。つまり、CPUライト制御部62は、CPU201からの指示、又は所定のタイミングで、更新したライトデータを、メモリ204に書き戻す(ライトバックする)。
DMACアクセス制御部63は、コマンドがDMAC205から第3ポート213に入力され、かつヒット判定部71によりヒットと判定された場合、ヒットしたデータと、メモリ204に格納されているデータとのコヒーレンシを保つための処理を行うとともに、第3ポート213に入力されたコマンドをDMAC205から出力されたコマンドとして、第4ポート214からメモリ204に出力する。また、DMACアクセス制御部63は、コマンドがDMAC205から第3ポート213に入力され、かつヒット判定部71によりキャッシュミスと判定された場合、第3ポート213に入力されたコマンドをDMAC205から出力されたコマンドとして、第4ポート214からメモリ204に出力する。
このDMACアクセス制御部63は、DMAC205からのリードアクセスに対するL2キャッシュ202の動作を制御するDMACリード制御部64と、DMAC205からのライトアクセスに対するL2キャッシュ202の動作を制御するDMACライト制御部65とを備える。
DMACリード制御部64は、メモリ204へのリードコマンドがDMAC205から第3ポート213に入力され、かつヒット判定部70によりヒットと判定された場合、ヒットしたデータを、第2ポート212を介してメモリ204にライトバックし、当該ライトバックが完了した後に、第3ポート213に入力されたリードコマンドをDMAC205から出力されたリードコマンドとして、第4ポート214からメモリ204に出力する。
また、DMACリード制御部64は、メモリ204へのリードコマンドがDMAC205から第3ポート213に入力され、かつヒット判定部71によりキャッシュミスと判定された場合、第3ポート213に入力されたリードコマンドをDMAC205から出力されたリードコマンドとして、第4ポート214からメモリ204に出力する。
DMACライト制御部65は、メモリ204へのライトコマンドがDMAC205から第3ポート213に入力され、かつヒット判定部71によりヒットと判定された場合、ヒットしたデータを無効化するとともに、第3ポート213に入力されたライトコマンドをDMAC205から出力されたライトコマンドとして、第4ポート214からメモリ204に出力する。
また、DMACライト制御部65は、メモリ204へのライトコマンドがDMAC205から第3ポート213に入力され、かつヒット判定部71によりキャッシュミスと判定された場合、第3ポート213に入力されたライトコマンドをDMAC205から出力されたライトコマンドとして、第4ポート214からメモリ204に出力する。
図3は、キャッシュ格納部70及びヒット判定部71の構成例を示すブロック図である。また、L2キャッシュ202の具体例として、4ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。図3に示すようにキャッシュ格納部70は、デコーダ30と、4つのウェイ31a〜31dとを備える。なお、4つのウェイ31a〜31dを特に区別しない場合には、ウェイ31と記す。
また、ヒット判定部71は、4つの比較器32a〜32dと、4つのアンド回路33a〜33dと、オア回路34とを備える。また、L2キャッシュ202は、さらに、アドレスレジスタ20と、メモリI/F21と、セレクタ35及び36と、デマルチプレクサ37を備える。
アドレスレジスタ20は、メモリ204へのアクセスアドレスを保持するレジスタである。このアクセスアドレスは32ビットであるものとする。図3に示すように、アクセスアドレスは、最上位ビットから順に、21ビットのタグアドレス51と、4ビットのセットインデックス(SI)52と、5ビットのワードインデックス(WI)53とを含む。
ここで、タグアドレス51は、ウェイ31にマッピングされるメモリ204中の領域(そのサイズはセット数×ブロックである)を指す。この領域のサイズは、タグアドレス51よりも下位のアドレスビット(A10〜A0)で定まるサイズつまり2kバイトであり、1つのウェイ31のサイズでもある。
セットインデックス52はウェイ31a〜31bに跨る複数セットの1つを指す。このセット数は、セットインデックス52が4ビットなので16セットある。タグアドレス51及びセットインデックス52で特定されるキャッシュエントリは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックス52よりも下位のアドレスビット(A6〜A0)で定まるサイズつまり128バイトである。1ワードを4バイトとすると、1ラインデータは32ワードである。
ワードインデックス(WI)53は、ラインデータを構成する複数ワード中の1ワードを指す。また、アドレスレジスタ20中の最下位2ビット(A1、A0)は、ワードアクセス時には無視される。
メモリI/F21は、L2キャッシュ202からメモリ204をアクセスするためのインターフェースである。具体的には、メモリI/F21は、L2キャッシュ202からメモリ204へのデータのライトバック、及びメモリ204からL2キャッシュ202へのデータのロード等を行う。
デコーダ30は、セットインデックス52の4ビットをデコードし、4つのウェイ31a〜31dに跨る16セット中の1つを選択する。
4つのウェイ31a〜31dは、同じ構成を有し、各ウェイ31は、2kバイトの容量を有する。
図4は、ウェイ31の構成を示す図である。図4に示すように、各ウェイ31は、16個のキャッシュエントリ40を有する。各キャッシュエントリ40は、21ビットのタグ41と、バリッドフラグ42と、ダーティフラグ43と、128バイトのラインデータ44とを有する。
タグ41は、メモリ204上のアドレスの一部であり、21ビットのタグアドレス51のコピーである。
ラインデータ44は、タグアドレス51及びセットインデックス52により特定されるブロック中の128バイトデータのコピーである。
バリッドフラグ42は、当該キャッシュエントリ40のデータが有効か否かを示す。例えば、データが有効な場合、バリッドフラグ42は「1」であり、データが無効な場合、バリッドフラグ42は「0」である。また、バリッドフラグ42を「0」にすることを、データを無効化するとも言う。
ダーティフラグ43は、当該キャッシュエントリ40にCPU201から書き込みがあったか否か、つまりラインデータ44が更新されている状態であるか否かを示す。言い換えると、ダーティフラグ43は、当該キャッシュエントリ40中にキャッシュされたラインデータ44が存在するが、CPU201からの書き込みにより当該ラインデータ44がメモリ204中のデータと異なるため、当該ラインデータ44をメモリ204に書き戻すことが必要であるか否かを示す。例えば、ラインデータ44が更新されている場合、ダーティフラグ43は「1」であり、ラインデータ44が更新されていない場合、ダーティフラグ43は「0」である。また、ダーティフラグ43を「1」にすることを、ダーティフラグをセットするとも言う。また、ダーティフラグ43が「1」の場合を、当該データがダーティであるとも言う。
比較器32aは、アドレスレジスタ20中のタグアドレス51と、セットインデックス52により選択されたセットに含まれる4つのタグ41中のウェイ31aのタグ41とが一致するか否かを比較する。比較器32b〜32cについても、ウェイ31b〜31dに対応すること以外は同様である。
アンド回路33aは、バリッドフラグ42と比較器32aの比較結果とが一致するか否かを比較する。この比較結果をh0とする。比較結果h0が「1」である場合は、アドレスレジスタ20中のタグアドレス51及びセットインデックス52に対応するラインデータ44が存在すること、つまりウェイ31aにおいてヒットしたことを意味する。また、比較結果h0が「0」である場合は、キャッシュミスしたことを意味する。アンド回路33b〜33dについても、ウェイ31b〜31dに対応すること以外は同様である。つまり、その比較結果h1〜h3は、ウェイ31b〜31dでヒットしたかミスしたかを意味する。
オア回路34は、比較結果h0〜h3のオアをとる。このオアの結果をhitとする。hitは、キャッシュメモリにヒットしたか否かを示す。
セレクタ35は、選択されたセットにおけるウェイ31a〜31dのラインデータ44のうち、ヒットしたウェイ31のラインデータ44を選択する。
セレクタ36は、セレクタ35により選択された32ワードのラインデータ44にうち、ワードインデックス53で示される1ワードを選択する。
デマルチプレクサ37は、キャッシュエントリ40にデータを書き込む際に、ウェイ31a〜31dの1つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
図5は、バス制御部206の構成及び接続関係を示す図である。なお、説明の簡単化のため、以下、CPU201が1個の場合を例に説明する。
図5に示すように、バス制御部206は、2個の第1ポート221と、2個の第2ポート222と、第3ポート223と、第4ポート224と、調停部225と、2個の選択部226とを備える。
第1ポート221、第2ポート222及び選択部226は、DMAC205ごとに設けられる。第1ポート221は、対応するDMAC205に接続され、対応するDMAC205から出力されたコマンド及びライトデータが入力され、対応するDMAC205へリードデータを出力する。
第2ポート222は、メモリコントローラ203と接続され、メモリコントローラ203により出力されたリードデータが入力され、メモリコントローラ203へコマンド及びライトデータを出力する。
第3ポート223は、L2キャッシュ202の第3ポート213と接続され、L2キャッシュ202へコマンドを出力する。
第4ポート224は、L2キャッシュ202の第4ポート214と接続され、L2キャッシュ202により出力されたコマンドが入力される。
調停部225は、複数の第1ポート221に入力されたコマンドを調停し、調停したコマンドを第3ポート223に出力する。つまり、調停部225は、複数の第1ポート221のいずれかにコマンドが入力された場合には、当該入力されたコマンドを選択し、選択したコマンドを第3ポート223に出力する。また、調停部225は、複数の第1ポート221に同時にコマンドが入力された場合、予め定められた優先度に従って、いずれかのコマンドを選択し、選択したコマンドを第3ポート223に出力する。
選択部226は、対応する第1ポート221に入力されたコマンド、及び第4ポートに入力されたコマンドのうち一方を選択し、選択したコマンドを対応する第2ポート222に出力する。つまり、選択部226は、DMACリード制御部64により出力されたコマンドと、DMAC205により出力されたコマンドとのうち一方を選択し、選択したコマンドをメモリ204に出力する。具体的には、選択部226は、通常モード時には、第4ポート224に入力されたコマンドを選択し、バイパスモード時には、第1ポート221に入力されたコマンドを選択する。なお、以下、特段の記載がない限り、通常モードについての説明である。
ここで、通常モードとは、DMAC205がL2キャッシュ202を経由して、メモリ204にアクセスするモードである。また、バイパスモードとは、DMAC205がL2キャッシュ202を経由せずに、直接メモリ204にアクセスするモードである。
また、CPU201とDMAC205とが、メモリ204の同じアドレスのデータを使用する場合には通常モードが選択され、DMAC205とCPU201とが同じアドレスのデータを使用しない場合、つまり、特別な制御を行わなくてもコヒーレンシが保てる場合に、バイパスモードが選択される。また、通常モードとバイパスモードとの切り替えは、CPU201等により行われる。
また、選択部226は、通常モードにおいて、第4ポート224に入力されたコマンドが、対応するDMAC205から出力されたコマンドに応じて、L2キャッシュ202が出力したコマンドである場合は、第4ポート224に入力されたコマンドを第2ポート222に出力し、対応しない他のDMAC205から出力されたコマンドに応じて、L2キャッシュ202が出力したコマンドである場合は、第4ポート224に入力されたコマンドを第2ポート222に出力しない。
具体的には、L2キャッシュ202が出力するコマンドに、当該コマンドが2個のDMAC205のうちいずれから出力されたコマンドであるかを示す情報が含まれ、当該情報に応じて選択部226は、第4ポート224に入力されたコマンドを第2ポート222に出力する、又は出力しないを決定する。
また、第1ポート221に入力されたライトデータは、対応する第2ポート222に直接出力され、第2ポート222に入力されたリードデータは、対応する第1ポート221に直接出力される。
また、図5に示すように、メモリコントローラ203は、第1ポート231と、2個の第2ポート232とを備える。第1ポート231はL2キャッシュ202に対応し、2個の第2ポート232は、それぞれ2個のDMAC205と一対一に対応する。
第1ポート231は、CPUリード制御部61により出力されたリードコマンドと、CPUライト制御部62により出力されたライトコマンド及びライトデータとが入力される。また、第1ポート231は、メモリ204から出力されたリードデータをL2キャッシュ202に出力する。具体的には、第1ポート231は、L2キャッシュ202の第2ポート212と接続される。
第2ポート232は、バス制御部206の第2ポート222ごとに設けられ、対応する第2ポート222と接続される。この第2ポート232は、バス制御部206の対応する第2ポート222からから出力されたコマンド及びライトデータが入力され、対応する第2ポート222へ、メモリ204から出力されたリードデータを出力する。
具体的には、通常モード時においては、第2ポート232に、DMACリード制御部64により出力されたリードコマンドと、DMACライト制御部65により出力されたライトコマンドとが入力される。また、バイパスモード時においては、第2ポート232に、対応するDMAC205により出力されたリードコマンド及びライトコマンドが入力される。また、通常モード時及びバイパスモード時の両方において、第2ポート232は、対応するDMAC205により出力されたライトデータが入力され、リードコマンドに応じてメモリ204から出力されたリードデータを対応するDMAC205へ出力する。
ここで、メモリコントローラ203は、第1ポート231及び2個の第2ポート232に入力されたコマンド(リードコマンド及びライトコマンド)を、当該コマンドが、第1ポート231及び2個の第2ポート232のうちいずれに入力されたコマンドであるかに応じて調停する。具体的には、各ポートには、帯域(バンド幅)が割り当てられており、メモリコントローラ203は、当該帯域が満たされるように、調停を行う。例えば、第1ポート231及び2個の第2ポート232に2:1:1で帯域が割り当てられている場合には、メモリコントローラ203は、第1ポートに入力されたコマンドを2回実行するごとに、各第2ポート232に入力されたコマンドを1回ずつ実行する。
次に、本発明の実施の形態に係るメモリシステム200の動作を説明する。
以下、DMAC205からメモリ204へのアクセスが発生した際の動作を説明する。
図6は、L2キャッシュ202からアクセスが発生した際の、メモリシステム200の動作の概略を示す図である。
図6に示すように、リード時、かつヒット(以下、リードヒット)の場合には、L2キャッシュ202は、ヒットしたデータをライトバックする。その後、メモリ204のデータが読み出され、DMAC205へ送られる。
また、リード時、かつキャッシュミス(以下、リードミス)の場合には、メモリ204のデータが読み出され、DMAC205へ送られる。
また、ライト時、かつヒット(以下、ライトヒット)の場合には、L2キャッシュ202は、ヒットしたデータを無効化する。また、メモリ204へライトデータが書き込まれる。
また、ライト時、かつキャッシュミス(以下、ライトミス)の場合には、メモリ204へライトデータが書き込まれる。
以下、各動作を個別に説明する。まず、リードヒット時の動作を説明する。
図7は、メモリシステム200におけるリードヒット時の動作の流れを示す図である。
図7に示すように、まず、DMAC205は、リードコマンドをL2キャッシュ202に出力する(S101)。具体的には、DMAC205は、バス制御部206の第1ポート221にリードコマンドを出力する。バス制御部206の第1ポート221に入力されたリードコマンドは、調停部225及び第3ポート223を順次経由して、L2キャッシュ202の第3ポート213に入力される。
L2キャッシュ202のヒット判定部71は、第3ポート213に入力されたリードコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判定する。ここでは、ヒット判定部71は、指定されるアドレスのデータをキャッシュ格納部70が格納している(ヒット)と判定する(S102)。
次に、L2キャッシュ202のDMACリード制御部64は、ヒットしたデータをライトバックする(S103)。つまり、DMACリード制御部64は、ヒットしたデータをメモリ204に書き戻す。
ライトバックが完了した後、DMACリード制御部64は、メモリ204にリードコマンドを出力する(S104)。具体的には、DMACリード制御部64は、第4ポート214にリードコマンドを出力する。また、このリードコマンドは、ステップS101でDMAC205により出力されたリードコマンドと同じアドレスを指定するものである。
第4ポート214に出力されたリードコマンドは、バス制御部206の第4ポート224、選択部226及び第2ポート222を順次経由して、メモリコントローラ203の第2ポート232に入力される。メモリコントローラ203は、第2ポート232に入力されたリードコマンドをメモリ204に出力する。
リードコマンドを受けたメモリ204は、当該リードコマンドで指定されるアドレスに格納しているリードデータを、L2キャッシュ202を経由せずに、直接DMAC205に出力する(S105)。具体的には、メモリ204はリードデータをメモリコントローラ203に出力し、メモリコントローラ203は、メモリ204により出力されたリードデータを、リードコマンドが入力された第2ポート232に出力する。当該第2ポート232に出力されたリードデータは、バス制御部206の第2ポート222及び第1ポート221を順次介して、DMAC205に出力される。
以上のように、本発明の実施の形態に係るメモリシステム200は、DMAC205からのアクセスにおいてリードヒットした場合には、L2キャッシュ202に格納されているヒットしたデータをライトバックした後、メモリ204からデータを読み出す。
これにより、L2キャッシュ202のデータがCPU201により更新されたことにより、L2キャッシュ202のデータとメモリ204のデータと一致しない場合でも、DMAC205は、正しいデータ(更新された後のデータ)を読み出せる。つまり、CPU201は、書き込み処理を行った後にパージ(ライトバック)処理をL2キャッシュ202に指示する必要がない。このように、本発明の実施の形態に係るメモリシステム200は、CPU201によりパージ処理を削減できるので、コヒーレンシを保つために生じるCPU201の処理性能低下を抑制できる。
さらに、L2キャッシュ202は、ライトバックが完了した後に、第4ポート214にリードコマンドを出力する。これにより、ライトバックの完了前に、メモリ204からデータが読み出されることを防止できる。
次に、リードミス時の動作を説明する。
図8は、メモリシステム200におけるリードミス時の動作の流れを示す図である。
図8に示すように、まず、DMAC205は、リードコマンドをL2キャッシュ202に出力する(S111)。なお、ステップS111、S114及びS115の動作は、図7に示すS101、S104及びS105と同様であり、詳細な説明は省略する。
L2キャッシュ202のヒット判定部71は、第3ポート213に入力されたリードコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判定する。ここでは、ヒット判定部71は、指定されるアドレスのデータをキャッシュ格納部70が格納していない(キャッシュミス)と判定する(S112)。
次に、L2キャッシュ202のDMACリード制御部64は、メモリ204にリードコマンドを出力する(S114)。具体的には、DMACリード制御部64は、第4ポート214にリードコマンドを出力する。また、このリードコマンドは、ステップS101でDMAC205により出力されたリードコマンドと同じアドレスを指定するものである。
第4ポート214に出力されたリードコマンドは、バス制御部206の第4ポート224、選択部226及び第2ポート222を順次経由して、メモリコントローラ203の第2ポート232に入力される。メモリコントローラ203は、第2ポート232に入力されたリードコマンドをメモリ204に出力する。
リードコマンドを受けたメモリ204は、当該リードコマンドで指定されるアドレスのリードデータをDMAC205に出力する(S115)。
以上のように、本発明の実施の形態に係るメモリシステム200は、DMAC205からのアクセスにおいてリードミスした場合には、メモリ204からデータを読み出す。
このように、本発明の実施の形態に係るL2キャッシュ202は、L2キャッシュ202は、リードヒット時の場合でも、ヒットしたデータをDMAC205に出力しない。つまり、DMAC205からのリードアクセス時には、ヒット及びキャッシュミスのいずれの場合でも、メモリ204により出力されるリードデータは、L2キャッシュ202を経由せずに直接、DMAC205に出力される。これにより、L2キャッシュ202とDMAC205との間に、リードデータを伝送するためのバスを形成する必要がない。つまり、図5に示すように、L2キャッシュ202の第3ポート213にはリードコマンドのみを入力し、第3ポート213からはリードコマンドのみを出力すればよい。よって、本発明に係るメモリシステム200は、図15に示すメモリシステム110に比べ、面積を削減できる。
さらに、リードデータがL2キャッシュを経由しないので、DMAC205とL2キャッシュ202とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、DMAC205とL2キャッシュ202とのインターフェースが複雑化することを抑制できる。
また、L2キャッシュ202が第4ポート214に出力したリードコマンドは、メモリコントローラ203の、リードコマンド発行もとのDMAC205に対応する第2ポート232に入力される。これにより、メモリコントローラ203は、当該リードコマンドを、DMAC205が発行したものとして扱うことになる。一方、L2キャッシュ202がリードコマンドをメモリコントローラ203の第1ポート231に出力した場合には、当該リードコマンドは、L2キャッシュ202(CPU201)により発行されたものとして扱われ、L2キャッシュ202に割り当てられた帯域を使用することになる。
このように、DMACリード制御部64により出力されたコマンドを、DMAC205に対応する第2ポート232に入力することにより、DMAC205から出力されたコマンドがL2キャッシュ202を経由してメモリ204に送られる場合であっても、メモリコントローラ203は、第1ポート231にCPU201に対するバンド幅を割り当て、第2ポート232にDMAC205に対するバンド幅を割り当てるという容易な制御で、CPU201及びDMAC205に対するバンド幅の割り当てを実現できる。また、本発明の実施の形態に係るメモリシステム200は、DMAC205がL2キャッシュ202を経由せずにメモリ204にアクセスする場合から、メモリコントローラ203の制御を変更することなく、実現できる。
次に、ライトヒット時の動作を説明する。
図9は、メモリシステム200におけるライトヒット時の動作の流れを示す図である。
図9に示すように、まず、DMAC205は、ライトコマンドをL2キャッシュ202に出力する(S121)。具体的には、DMAC205は、バス制御部206の第1ポート221にライトコマンドを出力する。バス制御部206の第1ポート221に入力されたライトコマンドは、調停部225及び第3ポート223を順次経由して、L2キャッシュ202の第3ポート213に入力される。
L2キャッシュ202のヒット判定部71は、第3ポート213に入力されたライトコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判定する。ここでは、ヒット判定部71は、指定されるアドレスのデータをキャッシュ格納部70が格納している(ヒット)と判定する(S122)。
次に、L2キャッシュ202のDMACライト制御部65は、ヒットしたデータを無効化する(S123)。具体的には、DMACライト制御部65は、ヒットしたデータのバリッドフラグ42を「0」に設定する。
次に、DMACライト制御部65は、メモリ204にライトコマンドを出力する(S124)。具体的には、DMACライト制御部65は、第4ポート214にライトコマンドを出力する。また、このライトコマンドは、ステップS121でDMAC205により出力されたライトコマンドと同じアドレスを指定するものである。
第4ポート214に出力されたライトコマンドは、バス制御部206の第4ポート224、選択部226及び第2ポート222を順次経由して、メモリコントローラ203の第2ポート232に入力される。
一方、DMAC205は、ライトデータを、L2キャッシュ202を経由せずに、メモリ204に出力する(S125)。具体的には、DMAC205は、バス制御部206の第1ポート221にライトデータを出力する。第1ポート221に入力されたライトデータは、第2ポート222を経由して、メモリコントローラ203の第2ポート232に入力される。
メモリコントローラ203は、第2ポート232に入力されたライトコマンド及びライトデータをメモリ204に出力する。
ライトコマンド及びライトデータを受けたメモリ204は、当該ライトコマンドで指定されるアドレスに当該ライトデータを格納する(S126)。
以上のように、本発明の実施の形態に係るメモリシステム200は、DMAC205からのアクセスにおいてライトヒットした場合には、L2キャッシュ202に格納されているヒットしたデータを無効化するとともに、メモリ204にデータを書き込む。
これにより、DMAC205によるライトにより、L2キャッシュ202のデータとメモリ204のデータとが一致しなくなることを防止できる。つまり、L2キャッシュ202とメモリ204とのコヒーレンスを保つために、CPU201及びDMACは、特段の処理(パージ処理)を追加する必要はない。このように、本発明の実施の形態に係るメモリシステム200は、コヒーレンシを保つために生じるCPU201の処理性能低下を抑制できる。
次に、ライトミス時の動作を説明する。
図10は、メモリシステム200におけるライトミス時の動作の流れを示す図である。
図10に示すように、まず、DMAC205は、ライトコマンドをL2キャッシュ202に出力する(S131)。なお、ステップS131、及びS134〜S136の動作は、図9に示すS121、及びS124〜S126と同様であり、詳細な説明は省略する。
L2キャッシュ202のヒット判定部71は、第3ポート213に入力されたライトコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判定する。ここでは、ヒット判定部71は、指定されるアドレスのデータをキャッシュ格納部70が格納していない(キャッシュミス)と判定する(S132)。
次に、L2キャッシュ202のDMACライト制御部65は、メモリ204にライトコマンドを出力する(S134)。具体的には、DMACライト制御部65は、第4ポート214にライトコマンドを出力する。また、このライトコマンドは、ステップS101でDMAC205により出力されたリードコマンドと同じアドレスを指定するものである。
第4ポート214に出力されたライトコマンドは、バス制御部206の第4ポート224、選択部226及び第2ポート222を順次経由して、メモリコントローラ203の第2ポート232に入力される。
一方、DMAC205は、ライトデータをメモリ204に出力する(S135)。
ライトコマンド及びライトデータを受けたメモリ204は、当該ライトコマンドで指定されるアドレスに当該ライトデータを格納する(S136)。
以上のように、本発明の実施の形態に係るメモリシステム200は、DMAC205からのアクセスにおいてライトミスした場合には、メモリ204にライトデータが書き込まれる。
このように、本発明の実施の形態に係るL2キャッシュ202は、ライトヒット時の場合でも、ライトデータを格納しない。つまり、DMAC205からのライトアクセス時には、ヒット及びキャッシュミスのいずれの場合でも、DMAC205により出力されるライトデータは、L2キャッシュ202を経由せずに直接、メモリ204に出力される。これにより、L2キャッシュ202とDMAC205との間に、ライトデータを伝送するためのバスを形成する必要がない。つまり、図5に示すように、L2キャッシュ202の第3ポート213にはライトコマンドのみを入力し、第3ポート213からはライトコマンドのみを出力すればよい。よって、本発明に係るメモリシステム200は、図15に示すメモリシステム110に比べ、面積を削減できる。
さらに、ライトデータがL2キャッシュを経由しないので、DMAC205とL2キャッシュ202とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、DMAC205とL2キャッシュ202とのインターフェースが複雑化することを抑制できる。
また、L2キャッシュ202が第4ポート214に出力したライトコマンドは、メモリコントローラ203の、ライトコマンド発行もとのDMAC205に対応する第2ポート232に入力される。これにより、メモリコントローラ203は、当該ライトコマンドを、DMAC205が発行したものとして扱うことになる。つまり、リードアクセス時と同様に、メモリコントローラ203は、第1ポート231にCPU201に対するバンド幅を割り当て、第2ポート232にDMAC205に対するバンド幅を割り当てるという容易な制御で、CPU201及びDMAC205に対するバンド幅の割り当てを実現できる。また、本発明の実施の形態に係るメモリシステム200は、DMAC205がL2キャッシュ202を経由せずにメモリ204にアクセスする場合から、メモリコントローラ203の制御を変更することなく、実現できる。
次に、L2キャッシュ202の動作の流れを説明する。
まず、リードアクセス時のL2キャッシュ202の動作を説明する。
図11は、リードコマンドが入力された際の、L2キャッシュ202の動作の流れを示すフローチャートである。
図11に示すように、DMAC205によりリードコマンドが発行された場合、つまり第3ポート213にリードコマンドが入力された場合(S201でDMAC)、ヒット判定部71は、当該リードコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判断する(S202)。
格納している場合(S202でヒット)、次に、DMACリード制御部64は、ヒットしたデータがダーティであるか否か、つまりヒットしたデータが、CPU201により更新されているか否かを判定する(S203)。具体的には、L2キャッシュ202は、ヒットしたデータのダーティフラグ43が「1」の場合、ダーティであると判定し、当該ダーティフラグ43が「0」の場合、ダーティでないと判定する。
ダーティの場合(S203でYes)、DMACリード制御部64は、ヒットしたデータをライトバックする(S204)。
ライトバックが完了した後、DMACリード制御部64は、リードコマンドを第4ポート214に出力する(S205)。
また、ダーティでない場合(S203でNo)、又は、ステップS202でキャッシュミスの場合(S202でミス)、DMACリード制御部64は、ライトバック(S204)を行わずに、リードコマンドを第4ポート214に出力する(S205)。
一方、CPU201によりリードコマンドが発行された場合、つまり第1ポート211にリードコマンドが入力された場合(S201でCPU)、ヒット判定部71は、当該リードコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判断する(S206)。
格納している場合(S206でヒット)、CPUリード制御部61は、ヒットしたデータをリードデータとしてCPU201(第1ポート211)に出力する(S208)。
一方、格納していない場合(S206でミス)、CPUリード制御部61は、リードコマンドで指定されるアドレスのデータをメモリ204から読み出す(S207)。具体的には、CPUリード制御部61は、CPU201により入力されたリードコマンドと同じアドレスを指定するリードコマンドを第2ポート212に出力する。第2ポート212に出力されたリードコマンドは、メモリコントローラ203の第1ポート231を介して、メモリ204に出力される。リードコマンドを受けたメモリ204は、当該リードコマンドで指定されるアドレスに格納するデータをリードデータとしてメモリコントローラ203に出力する。メモリコントローラ203は、メモリ204により出力されたリードデータを第1ポート231から、L2キャッシュ202の第2ポート212に出力する。
CPUリード制御部61は、第2ポート212に入力されたリードデータをキャッシュ格納部70に格納するとともに、当該リードデータを第1ポート211からCPU201に出力する(S208)。
次に、ライトアクセス時のL2キャッシュ202の動作を説明する。
図12は、ライトコマンドが入力された際の、L2キャッシュ202の動作の流れを示すフローチャートである。
図12に示すように、DMAC205によりライトコマンドが発行された場合、つまり第3ポート213にライトコマンドが入力された場合(S211でDMAC)、ヒット判定部71は、当該ライトコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判断する(S212)。
格納している場合(S212でヒット)、次に、L2キャッシュ202は、ヒットしたデータを無効化する(S213)。具体的には、L2キャッシュ202は、ヒットしたデータのバリッドフラグ42を「0」に設定する。
次に、L2キャッシュ202は、ライトコマンドを第4ポート214に出力する(S214)。
また、ステップS212でキャッシュミスの場合(S212でミス)、L2キャッシュ202は、無効化(S213)を行わずに、ライトコマンドを第4ポート214に出力する(S214)。
一方、CPU201によりライトコマンドが発行された場合、つまり第1ポート211にライトコマンド及びライトデータが入力された場合(S211でCPU)、ヒット判定部71は、当該ライトコマンドで指定されるアドレスのデータをキャッシュ格納部70が格納しているか否かを判断する(S215)。
格納している場合(S215でヒット)、CPUライト制御部62は、ヒットしたデータを第1ポートに入力されたライトデータに更新する(S216)。具体的には、CPUライト制御部62は、ヒットしたデータをライトデータに変更したうえで、ダーティフラグ43をセットする。
一方、格納していない場合(S215でミス)、CPUライト制御部62は、ライン入れ替えを行う。つまり、CPUライト制御部62は、新たなキャッシュエントリ40を選択し、選択したキャッシュエントリ40に、第1ポートに入力されたライトデータを格納する(S217)。また、CPUライト制御部62は、当該ライトデータのダーティフラグをセットする。
以上より、本発明の実施の形態に係るメモリシステム200では、DMAC205からのアクセスにおいてリードヒットした場合には、L2キャッシュ202に格納されているヒットしたデータをライトバックした後、メモリ204からデータを読み出す。
これにより、L2キャッシュ202のデータがCPU201により更新されたことにより、L2キャッシュ202のデータとメモリ204のデータと一致しない場合でも、DMAC205は、正しいデータ(更新された後のデータ)を読み出せる。つまり、CPU201は、書き込み処理を行った後にパージ(ライトバック)をL2キャッシュ202に指示する必要がない。このように、本発明の実施の形態に係るメモリシステム200は、CPU201によりパージ処理を削減できるので、コヒーレンシを保つために生じるCPU201の処理性能低下を抑制できる。
また、本発明の実施の形態に係るメモリシステム200は、DMAC205からのアクセスにおいてライトヒットした場合には、L2キャッシュ202に格納されているヒットしたデータを無効化するとともに、メモリ204にデータを書き込む。
これにより、DMAC205によるライトにより、L2キャッシュ202のデータとメモリ204のデータとが一致しなくなることを防止できる。つまり、L2キャッシュ202とメモリ204とのコヒーレンスを保つために、CPU201及びDMAC205は、特段の処理(パージ処理)を追加する必要はない。このように、本発明の実施の形態に係るメモリシステム200は、コヒーレンシを保つために生じるCPU201の処理性能低下を抑制できる。
さらに、本発明の実施の形態に係るメモリシステム200では、L2キャッシュ202は、DMAC205からのリードアクセスがヒットした場合でも、L2キャッシュ202が格納するデータをDMAC205に出力しない。また、L2キャッシュ202は、DMAC205からのライトアクセスがヒットした場合でも、DMAC205から出力されたライトデータを格納しない。
よって、L2キャッシュ202とDMAC205との間にデータを伝送するためのバスを形成する必要がない。よって、本発明に係るメモリシステム200は、図15に示すメモリシステム110に比べ、面積を削減できる。さらに、リードデータ及びライトデータがL2キャッシュを経由しないので、DMAC205とL2キャッシュ202とのデータ伝送に用いる新たな制御を加える必要がない。つまり、本発明は、DMAC205とL2キャッシュ202とのインターフェースが複雑化することを抑制できる。
また、本発明の実施の形態に係るメモリシステム200では、L2キャッシュ202が第4ポート214に出力したコマンドは、メモリコントローラ203の、コマンド発行もとのDMAC205に対応する第2ポート232に入力される。これにより、メモリコントローラ203は、当該コマンドを、DMAC205が発行したものとして扱うことになる。つまり、本発明の実施の形態に係るメモリシステム200は、DMAC205がL2キャッシュ202を経由せずにメモリ204にアクセスする場合から、メモリコントローラ203の制御を変更することなく、実現できる。また、メモリ204へのアクセスにおける各マスタ(CPU201及びDMAC205)に対するバンド幅の割り当て制御を容易に実現できる。
なお、上述したインターフェースの複雑化は、DMAC205等の外部マスタと、メモリ204との間で複数のバスプロトコルが使用されている場合に特に問題となる。言い換えると、本発明の実施の形態に係るメモリシステム200は、DMAC205等の外部マスタと、メモリ204との間で複数のバスプロトコルが使用されている場合に、特に、有効である。
例えば、リングバスを用いるメモリシステムでは、DMAC205等の外部マスタと、メモリ204との間で複数のバスプロトコルが使用されるので、本発明は、特に有効である。
図13は、本発明の実施の形態に係るメモリシステム200の変形例であり、リングバスを用いるメモリシステム210の構成を示す図である。図13に示すように、メモリシステム210は、リングバス241を備える。なお、図1と同様の要素には同一の符号を付しており説明は省略する。L2キャッシュ202、バス制御部206及びメモリコントローラ203は、リングバス241を経由して接続される。
以上、本発明の実施の形態に係るキャッシュメモリについて説明したが、本発明は、この実施の形態に限定されるものではない。
例えば、上記説明では、L2キャッシュ202及びL1キャッシュを備えるメモリシステムを例に説明したが、L1キャッシュのみを備えるメモリシステムに本発明を適用してもよい。
なお、メモリシステムがレベル1キャッシュとレベルキャッシュとを有する場合には、レベル2キャッシュに本発明を適用することが好適である。なぜなら、レベル2キャッシュがメモリシステム全体に与える影響は、レベル1キャッシュに比べ低い。具体的には、レベル1キャッシュでヒットの場合のアクセスが、プロセッサにとって最も高速のアクセスとなる。よって、マスタからレベル1キャッシュにアクセスが行われると、最も高速化に影響する、プロセッサからレベル1キャッシュへのアクセスに悪影響が出てしまう。よって、レベル2キャッシュに本発明に係るキャッシュメモリを適用することで、レベル1キャッシュに本発明に係るキャッシュメモリを適用する場合に比べて、プロセッサの高速化に対する悪影響を少なくできる。
また、レベル3キャッシュ以上を備えるメモリシステムに本発明を適用してもよい。この場合、上述した理由により最大レベルのキャッシュに本発明のキャッシュメモリを適用することが好ましい。
また、図1において、2個のCPU201と、2個のDMAC205とを示しているが、CPU201及びDMAC205の数は、1個又は3個以上であってもよい。また、DMAC205以外のマスタが含まれてもよい。
なお、図1に示すように、それぞれがL1キャッシュ207を備える複数のCPU201により共用されるL2キャッシュ202に本発明に係るキャッシュメモリを適用することは、特に好適である。
なぜなら、それぞれがL1キャッシュ207を備える複数のCPU201によりL2キャッシュ202が共用される場合、複数のL1キャッシュ207と、共用されているL2キャッシュ202との間のコヒーレンシを保つために、複数のCPU201は、スヌープ方式等のアルゴリズムに基づいた制御を行っている。よって、この制御に加え、L2キャッシュ202とメモリ204との間のコヒーレンスを保つための制御を加えると、さらに制御が複雑になり実現が困難となる。これに対して、本発明に係るキャッシュメモリをL2キャッシュ202に適用することで、L2キャッシュ202とメモリ204との間のコヒーレンスを保つための処理(パージ処理)を削減できるので、上記制御の複雑化を回避できる。このように、本発明に係るキャッシュメモリは、それぞれがL1キャッシュ207を備える複数のCPU201により共用されるL2キャッシュ202に適用することが、特に好適である。
また、上記説明は、L2キャッシュ202が4ウェイ・セット・アソシエイティブ方式のキャッシュメモリの場合を例に説明したが、ウェイ31の数は4個以外でもよい。
さらに、フルアソシエイティブ方式のキャッシュメモリ、又は、ダイレクトマップ方式のキャッシュメモリに本発明を適用してもよい。
本発明は、キャッシュメモリ及びキャッシュメモリを備えるメモリシステムに適用できる。
20 アドレスレジスタ
21 メモリI/F
30 デコーダ
31、31a、31b、31c、31d ウェイ
32a、32b、32c、32d 比較器
33a、33b、33c、33d アンド回路
34 オア回路
35、36 セレクタ
37 デマルチプレクサ
38 制御部
40 キャッシュエントリ
41 タグ
42 バリッドフラグ
43 ダーティフラグ
44 ラインデータ
51 タグアドレス
52 セットインデックス
53 ワードインデックス
60 CPUアクセス制御部
61 CPUリード制御部
62 CPUライト制御部
63 DMACアクセス制御部
64 DMACリード制御部
65 DMACライト制御部
70 キャッシュ格納部
71 ヒット判定部
100、110、200、210 メモリシステム
101、201 CPU
102 キャッシュメモリ
103、203 メモリコントローラ
104、204 メモリ
105、205 DMAC
106 バス
202 L2キャッシュ
206 バス制御部
207 L1キャッシュ
211、221、231 第1ポート
212、222、232 第2ポート
213、223 第3ポート
214、224 第4ポート
225 調停部
226 選択部
241 リングバス

Claims (16)

  1. プロセッサからのアクセスに応じて、メインメモリのデータの一部を格納するキャッシュメモリであって、
    前記プロセッサからのコマンドが入力される第1ポートと、
    前記プロセッサ以外のマスタからのコマンドが入力される第2ポートと、
    前記第1ポート及び前記第2ポートにコマンドが入力された際に、当該コマンドで指定されるアドレスに対応するデータを当該キャッシュメモリが格納しているか否かを判定するヒット判定部と、
    前記コマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記コマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータと、前記メインメモリに格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドを前記マスタから出力されたコマンドとして前記メインメモリに出力する第1制御部とを備える
    キャッシュメモリ。
  2. 前記第1制御部は、
    前記コマンドとしてリードコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していると判定され、かつ前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータがダーティである場合、当該データを前記メインメモリにライトバックし、当該ライトバックが完了した後に、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力する第1リード制御部を備える
    請求項1記載のキャッシュメモリ。
  3. 前記第1リード制御部は、前記リードコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたリードコマンドを前記マスタから出力されたリードコマンドとして前記メインメモリに出力する
    請求項1又は2記載のキャッシュメモリ。
  4. 請求項2又は3記載のキャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、
    前記メインメモリは、前記第1リード制御部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力する
    メモリシステム。
  5. 前記キャッシュメモリは、さらに、
    前記リードコマンドが前記第1ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記リードコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを、前記プロセッサに出力し、前記リードコマンドが前記第1ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記メインメモリから前記リードコマンドで指定されるアドレスのデータを読み出し、読み出したデータを当該キャッシュメモリに格納するとともに、前記プロセッサに出力する第2リード制御部を備える
    請求項4記載のメモリシステム。
  6. 前記メモリシステムは、さらに、
    前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、
    前記メモリコントローラは、
    前記第1リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記マスタに出力する第3ポートと、
    前記第2リード制御部により出力されたリードコマンドが入力され、かつ当該リードコマンドに応じて前記メインメモリから出力されたリードデータを前記キャッシュメモリに出力する第4ポートとを有し、
    前記メモリコントローラは、前記第3ポートに入力されたリードコマンドと、前記第4ポートに入力されたリードコマンドとを、当該リードコマンドが前記第3ポート及び前記第4ポートのうちいずれに入力されたリードコマンドであるかに応じて調停する
    請求項5記載のメモリシステム。
  7. 前記メモリシステムは、さらに、
    前記第1リード制御部により出力されたリードコマンドと、前記マスタにより出力されたリードコマンドとのうち一方を選択し、選択したリードコマンドを前記メインメモリに出力する選択部を備え、
    前記メインメモリは、前記選択部により出力された前記リードコマンドで指定されるアドレスに格納しているデータを、前記キャッシュメモリを経由せずに、前記マスタに出力する
    請求項4記載のメモリシステム。
  8. 前記第1制御部は、
    前記コマンドとしてライトコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを無効化するとともに、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力する第1ライト制御部を備える
    請求項1〜3のいずれか1項に記載のキャッシュメモリ。
  9. 前記第1ライト制御部は、前記ライトコマンドが前記第2ポートに入力され、かつ前記ヒット判定部により格納していないと判定された場合、前記入力されたライトコマンドを前記マスタから出力されたライトコマンドとして前記メインメモリに出力する
    請求項8記載のキャッシュメモリ。
  10. 請求項8又は9記載のキャッシュメモリと、前記プロセッサと、前記マスタと、前記メインメモリとを含むメモリシステムであって、
    前記マスタは、ライトデータを、前記キャッシュメモリを経由せずに、前記メインメモリに出力し、
    前記メインメモリは、前記マスタにより出力されたライトデータを、前記第1ライト制御部により出力された前記ライトコマンドで指定されるアドレスに格納する
    メモリシステム。
  11. 前記キャッシュメモリは、さらに、
    前記ライトコマンド及びライトデータが前記第1ポートに入力され、かつ前記ヒット判定部により格納していると判定された場合、前記ライトコマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータを前記ライトデータに更新する第2ライト制御部を備え、
    前記第2ライト制御部は、さらに、当該更新したデータを前記メインメモリにライトバックするためのライトコマンド及びライトデータを前記メインメモリに出力する
    請求項10記載のメモリシステム。
  12. 前記メモリシステムは、さらに、
    前記キャッシュメモリから前記メインメモリへのアクセスと、前記マスタから前記メインメモリへのアクセスとを調停するメモリコントローラを備え、
    前記メモリコントローラは、
    前記第1ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトデータとが入力される第3ポートと、
    前記第2ライト制御部により出力されたライトコマンド及びライトデータが入力される第4ポートとを有し、
    前記メモリコントローラは、前記第3ポートに入力されたライトコマンドと、前記第4ポートに入力されたライトコマンドとを、当該ライトコマンドが前記第3ポート及び前記第4ポートのうちいずれに入力されたライトコマンドであるかに応じて調停する
    請求項11記載のメモリシステム。
  13. 前記メモリシステムは、さらに、
    前記第1ライト制御部により出力されたライトコマンドと、前記マスタにより出力されたライトコマンドとのうち一方を選択し、選択したライトコマンドを前記メインメモリに出力する選択部を備え、
    前記メインメモリは、前記マスタにより出力されたライトデータを、前記選択部により出力された前記ライトコマンドで指定されるアドレスに格納する
    請求項10記載のメモリシステム。
  14. 前記プロセッサは、レベル1キャッシュを備え、
    前記キャッシュメモリは、レベル2キャッシュである
    請求項4〜7及び10〜13のいずれか1項に記載のメモリシステム。
  15. 前記メモリシステムは、
    前記プロセッサを含む複数のプロセッサを含み、
    前記複数のプロセッサの各々は、レベル1キャッシュを備え、
    前記キャッシュメモリは、前記複数のプロセッサに共用される
    請求項14記載のメモリシステム。
  16. プロセッサからのコマンドが入力される第1ポートと、前記プロセッサ以外のマスタからのコマンドが入力される第2ポートとを備え、前記プロセッサからのアクセスに応じて、メインメモリのデータの一部を格納するキャッシュメモリの制御方法であって、
    前記第1ポート及び前記第2ポートにコマンドが入力された際に、当該コマンドで指定されるアドレスに対応するデータを当該キャッシュメモリが格納しているか否かを判定するヒット判定ステップと、
    前記コマンドが前記第2ポートに入力され、かつ前記ヒット判定ステップで格納していると判定された場合、前記コマンドで指定されるアドレスに対応する、当該キャッシュメモリが格納しているデータと、メインメモリに格納されているデータとのコヒーレンシを保つための処理を行うとともに、前記入力されたコマンドを前記マスタから出力されたコマンドとして前記メインメモリに出力する第1制御ステップとを含む
    キャッシュメモリの制御方法。
JP2010530711A 2008-09-24 2009-09-15 キャッシュメモリ、その制御方法及びメモリシステム Withdrawn JPWO2010035425A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008244963 2008-09-24
JP2008244963 2008-09-24
PCT/JP2009/004600 WO2010035425A1 (ja) 2008-09-24 2009-09-15 キャッシュメモリ、メモリシステム及びその制御方法

Publications (1)

Publication Number Publication Date
JPWO2010035425A1 true JPWO2010035425A1 (ja) 2012-02-16

Family

ID=42059438

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010530711A Withdrawn JPWO2010035425A1 (ja) 2008-09-24 2009-09-15 キャッシュメモリ、その制御方法及びメモリシステム

Country Status (5)

Country Link
US (1) US20110173393A1 (ja)
JP (1) JPWO2010035425A1 (ja)
CN (1) CN102165424A (ja)
TW (1) TW201017421A (ja)
WO (1) WO2010035425A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8694737B2 (en) 2010-06-09 2014-04-08 Micron Technology, Inc. Persistent memory for processor main memory
US9448938B2 (en) 2010-06-09 2016-09-20 Micron Technology, Inc. Cache coherence protocol for persistent memories
US8613074B2 (en) 2010-09-30 2013-12-17 Micron Technology, Inc. Security protection for memory content of processor main memory
US8719506B2 (en) 2011-11-21 2014-05-06 Apple Inc. Push mechanism for quality of service (QoS) support in coherency port
CN103138912B (zh) * 2011-12-05 2016-08-03 阿里巴巴集团控股有限公司 数据同步方法及系统
US9053058B2 (en) 2012-12-20 2015-06-09 Apple Inc. QoS inband upgrade
KR102149222B1 (ko) * 2013-09-26 2020-10-14 삼성전자주식회사 캐시를 이용한 데이터 복사 방법 및 그 장치
CN105630698A (zh) * 2014-10-28 2016-06-01 华为技术有限公司 配置扩展缓存的方法、装置及扩展缓存
EP3224729A1 (en) * 2014-11-25 2017-10-04 Lantiq Beteiligungs-GmbH & Co. KG Memory management device
CN106856663B (zh) * 2015-10-01 2022-01-07 瑞萨电子株式会社 半导体装置
KR20170075396A (ko) * 2015-12-23 2017-07-03 고려대학교 산학협력단 메모리 시스템
CN107145337B (zh) * 2016-03-01 2021-06-29 中兴通讯股份有限公司 一种数据流处理芯片的表项访问方法及装置
CN109101439B (zh) * 2017-06-21 2024-01-09 深圳市中兴微电子技术有限公司 一种报文处理的方法及装置
JP7000748B2 (ja) 2017-09-04 2022-01-19 富士フイルムビジネスイノベーション株式会社 画像処理装置、半導体装置及びプログラム
JP6946168B2 (ja) * 2017-12-22 2021-10-06 ルネサスエレクトロニクス株式会社 半導体装置
CN110058783B (zh) * 2018-01-17 2022-04-12 瑞昱半导体股份有限公司 暂存存储器处理方法、暂存存储器程序与存储装置
US11080211B2 (en) * 2018-12-12 2021-08-03 Arm Limited Storing data from low latency storage

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4603380A (en) * 1983-07-01 1986-07-29 International Business Machines Corporation DASD cache block staging
JPH05257805A (ja) * 1992-01-14 1993-10-08 Hitachi Ltd キャッシュメモリ制御方式
JPH0797352B2 (ja) * 1992-07-02 1995-10-18 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システム及び入出力コントローラ
US6868472B1 (en) * 1999-10-01 2005-03-15 Fujitsu Limited Method of Controlling and addressing a cache memory which acts as a random address memory to increase an access speed to a main memory
KR100798020B1 (ko) * 2000-04-12 2008-01-24 엔엑스피 비 브이 데이터 처리 회로, 데이터 처리 회로를 포함하는 장치, 그리고 장치를 위한 컴퓨터 독출 가능 저장 매체
JP4822598B2 (ja) * 2001-03-21 2011-11-24 ルネサスエレクトロニクス株式会社 キャッシュメモリ装置およびそれを含むデータ処理装置
JP4114915B2 (ja) * 2002-05-24 2008-07-09 株式会社ルネサステクノロジ データ処理装置及びデータ処理システム
JP2004258935A (ja) * 2003-02-26 2004-09-16 Matsushita Electric Ind Co Ltd 半導体装置
WO2005029336A1 (ja) * 2003-09-19 2005-03-31 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびキャッシュメモリ制御方法
EP1698978A4 (en) * 2003-12-22 2008-11-05 Matsushita Electric Ind Co Ltd CACHE MEMORY AND CONTROL PROCEDURE THEREFOR
US7490117B2 (en) * 2003-12-31 2009-02-10 Intel Corporation Dynamic performance monitoring-based approach to memory management
US7260688B1 (en) * 2004-04-15 2007-08-21 Xilinx, Inc. Method and apparatus for controlling access to memory circuitry
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
DE102005037219A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Vorrichtung und Verfahren zur Speicherung von Daten und/oder Befehlen in einem Rechnersystem mit wenigstens zwei Verarbeitungseinheiten und wenigstens einem ersten Speicher oder Speicherbereich für Daten und/oder Befehle

Also Published As

Publication number Publication date
CN102165424A (zh) 2011-08-24
WO2010035425A1 (ja) 2010-04-01
US20110173393A1 (en) 2011-07-14
TW201017421A (en) 2010-05-01

Similar Documents

Publication Publication Date Title
WO2010035425A1 (ja) キャッシュメモリ、メモリシステム及びその制御方法
US7600078B1 (en) Speculatively performing read transactions
US11734177B2 (en) Memory interface having multiple snoop processors
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US7917699B2 (en) Apparatus and method for controlling the exclusivity mode of a level-two cache
US8230179B2 (en) Administering non-cacheable memory load instructions
US8782348B2 (en) Microprocessor cache line evict array
US9251069B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US8156308B1 (en) Supporting multiple byte order formats in a computer system
US7243194B2 (en) Method to preserve ordering of read and write operations in a DMA system by delaying read access
US20030028728A1 (en) Cache memory control device
KR20110134917A (ko) 캐시에서의 웨이 할당 및 웨이 로킹 방법
US20070288694A1 (en) Data processing system, processor and method of data processing having controllable store gather windows
CN107771322B (zh) 可编程集成电路中存储器资源的管理
JP2019096309A (ja) メンテナンス動作の実行
US6988167B2 (en) Cache system with DMA capabilities and method for operating same
US7472225B2 (en) Caching data
US20100100684A1 (en) Set associative cache apparatus, set associative cache method and processor system
KR100395768B1 (ko) 멀티 레벨 캐쉬 시스템
US20020108021A1 (en) High performance cache and method for operating same
JPWO2006109421A1 (ja) キャッシュメモリ
US20190213142A1 (en) Information processing apparatus
EP0825538A1 (en) Cache memory system
JP6451475B2 (ja) 演算処理装置、情報処理装置および演算処理装置の制御方法
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120605

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20121004