JP2014170262A - バスモジュール及びデータ処理装置 - Google Patents

バスモジュール及びデータ処理装置 Download PDF

Info

Publication number
JP2014170262A
JP2014170262A JP2013040285A JP2013040285A JP2014170262A JP 2014170262 A JP2014170262 A JP 2014170262A JP 2013040285 A JP2013040285 A JP 2013040285A JP 2013040285 A JP2013040285 A JP 2013040285A JP 2014170262 A JP2014170262 A JP 2014170262A
Authority
JP
Japan
Prior art keywords
memory
data
cache memory
cache
stored
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
JP2013040285A
Other languages
English (en)
Inventor
Naotoshi Nishioka
直俊 西岡
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.)
Yamaha Corp
Original Assignee
Yamaha 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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2013040285A priority Critical patent/JP2014170262A/ja
Publication of JP2014170262A publication Critical patent/JP2014170262A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】複数のバスマスタにキャッシュメモリを内蔵しなくても、低速で動作するメモリからデータを読み出すアクセス時間を短縮する。
【解決手段】バスモジュールは一次キャッシュメモリとキャッシュコントローラを備える。キャッシュコントローラは、各バスマスタから受信したリードコマンドが第1メモリに対するものである場合、一次キャッシュメモリに当該リードコマンドで指定されたデータが格納されているか否かを判定する処理(S8)と、データが一次キャッシュメモリに格納されていない場合(S8:NO)、二次キャッシュメモリにデータが格納されているか否かを判定する処理(S9)と、データが二次キャッシュメモリに格納されていなければ(S9:NO)、データを第1メモリから読み出して(S10)二次キャッシュメモリ及び一次キャッシュメモリに格納し(S13,S17)、データをバスマスタに送信する処理(S18)とを実行する。
【選択図】図2

Description

本発明は、キャッシュメモリを備えたバスモジュールに関する。
コンピュータシステムにおいては、アクセス速度が遅いメインメモリに格納されたデータへのアクセス時間を短縮するため、メインメモリからアクセス速度が速いキャッシュメモリにデータを転送し、キャッシュメモリからデータを読み出すのが一般的である(例えば、特許文献1参照)。
このような従来の態様としては、以下に述べる3つの態様を例示できる。第1の態様は、キャッシュメモリを内蔵するCPUである。第2の態様は、DMAC(Direct Memory Access Controler)を用い、低速のROM(Read Only Memory)から高速メモリへDMA転送するメモリ制御方式である。この場合は、複数のバスマスタが高速メモリに格納されたデータにアクセスすることでアクセス時間を短縮できる。第3の態様は、低速のROM自体にキャッシュメモリを内蔵することで、アクセス時間を短縮できる。
特開2004−199677号公報
しかしながら、CPUにキャッシュメモリを内蔵する第1の態様では、CPU以外のバスマスタはキャッシュメモリの恩恵を受けられない。そこで、複数のバスマスタの各々がキャッシュメモリを内蔵することも考えられるが、小規模のメモリをたくさん持つことになり、回路面積の増大と制御が複雑になるという問題があった。くわえて、キャッシュメモリのサイズは固定であるので、実行するソフトウェアによっては、サイズが最適でない場合があった。
また、第2の態様では、高速メモリ上のデータを常に監視し、不要になったら、DMACを起動して、低速ROM上のデータを高速メモリ上に再度コピーするといった制御が非常に煩雑であった。
また、第3の態様では、低速のROMに内蔵するキャッシュメモリのサイズとアクセス速度によっては、コストが上昇するといった問題があった。
本発明は、上述した事情に鑑みてなされたものであり、複数のバスマスタにキャッシュメモリを内蔵しなくても低速で動作するメモリからデータを読み出すアクセス時間を短縮することを解決課題の一つとする。
以上の課題を解決するために本発明に係るバスモジュールは、読み出し専用の第1メモリ、アクセス速度が前記第1メモリより高速であり読み書き可能な第2メモリ、及び複数のバスマスタと通信可能なものであって、一次キャッシュメモリと、前記第2メモリのメモリ空間の一部に二次キャッシュメモリを割り当て可能なキャッシュコントローラとを備え、前記キャッシュコントローラは、前記バスマスタから受信したリードコマンドが前記第1メモリに対するものである場合、前記一次キャッシュメモリに当該リードコマンドで指定されたデータが格納されているか否かを判定する第1処理と、前記データが前記一次キャッシュメモリに格納されていれば前記一次キャッシュメモリから前記データを読み出して、前記バスマスタに前記データを送信する第2処理と、前記データが前記一次キャッシュメモリに格納されていない場合、前記二次キャッシュメモリに前記データが格納されているか否かを判定する第3処理と、前記データが前記二次キャッシュメモリに格納されていれば、前記二次キャッシュメモリから前記一次キャッシュメモリに前記データを書き込むと共に、前記データを前記バスマスタに送信する第4処理と、前記データが前記二次キャッシュメモリに格納されていなければ、前記データを前記第1メモリから読み出して前記二次キャッシュメモリ及び前記一次キャッシュメモリに格納し、前記データを前記バスマスタに送信する第5処理とを実行することを特徴とする。
この発明によれば、複数のバスマスタは、低速の第1メモリに対するリードコマンドをバスモジュールに送信するだけで、低速の第1メモリに格納されているデータを短いアクセス時間で読み出すことができる。即ち、バスモジュールに内蔵された一次キャッシュメモリは、システム全体で共通のキャッシュとして機能する。よって、各バスマスタ及び第1メモリは、個別にキャッシュメモリを持つ必要がなくなる。
さらに、キャッシュコントローラは、ミスヒットを検出すると、自動的に低速な第1メモリから高速な第2メモリにデータを転送し、二次キャッシュメモリ及び一次キャッシュメモリのデータを更新する。従って、ソフトウェアによる煩雑な制御が不要となる。
くわえて、キャッシュの対象は読み出し専用の第1メモリに格納されたデータである。従って、複数のバスマスタ間のキャッシュコヒーレンシが問題とならないといった利点がある。
上述したバスモジュールにおいて、前記キャッシュコントローラは、前記バスマスタから受信したリードコマンドが前記第2メモリに対するものである場合、前記第2メモリから読み出したデータを当該バスマスタに送信する、ことを特徴とする。この場合、第2メモリの一部を二次キャッシュメモリとして使用しつつ、他の部分は通常のメモリとして使用することが可能となる。
上述したバスモジュールにおいて、前記第1処理、前記第2処理、前記第3処理、前記第4処理及び前記第5処理を実行するモードを第1モードとし、前記キャッシュコントローラは、前記第1モードと第2モードとを選択して実行可能であり、前記第2モードは、前記バスマスタから受信したリードコマンドが前記第1メモリに対するものである場合、前記第1メモリからデータを読み出して、当該データを当該バスマスタに送信する処理と、前記バスマスタから受信したリードコマンドが前記第2メモリに対するものである場合、前記一次キャッシュメモリに当該リードコマンドで指定されたデータが格納されているか否かを判定する処理と、 前記データが前記一次キャッシュに格納されていれば前記一次キャッシュメモリから前記データを読み出して、前記バスマスタに前記データを送信する処理と、前記データが前記一次キャッシュメモリに格納されていない場合、前記データを前記第2メモリから読み出して前記一次キャッシュメモリに格納し、前記データを前記バスマスタに送信する処理とを実行することを特徴とする。
この発明によれば、バスモジュールは、第2モードにおいて、第2メモリに対するキャッシュとして機能する。即ち、バスモジュールに内蔵された一次キャッシュメモリは、システム全体で共通のキャッシュとして機能するため、複数のバスマスタは、個別にキャッシュメモリを持たなくても、第2メモリに格納されたデータのアクセス時間を短縮することができる。
くわえて、バスモジュールは、第1モードと第2モードを選択可能である。即ち、第1モードにおいて一次キャッシュメモリは、第1メモリのキャッシュとして機能するが、第2モードにおいて一次キャッシュメモリは、第2メモリのキャッシュとして機能する。仮に、一次キャッシュメモリを第1メモリのキャッシュとしてのみ機能させると、第1メモリに格納されたデータを用いない場合、一次キャッシュメモリが無駄になってしまう。本発明では、モードによって一次キャッシュメモリの機能を切り替えることができるので、一次キャッシュメモリを有効に活用することが可能となる。
上述したバスモジュールにおいて、前記キャッシュコントローラは、外部から供給される設定データに基づいて、前記第2メモリのメモリ空間の一部に割り当てる前記二次キャッシュメモリのメモリ容量を設定することが好ましい。
第2メモリにおいて二次キャッシュメモリが割り当てられないメモリ空間は通常のメモリ領域として使用されるところ、二次キャッシュメモリのサイズが大きければ通常のメモリ領域が減少し、メモリ領域が大きければ二次キャッシュメモリのサイズが減少する。この発明によれば、二次キャッシュメモリをアクセス速度が高速な第2メモリの一部のメモリ空間を任意の大きさで割り当てることが可能なため、必要に応じて二次キャッシュメモリのサイズを変更することが可能となる。
本発明に係るデータ処理装置は、上述したバスモジュールと、前記第1メモリと、前記第2メモリと、前記複数のバスマスタとを備えたことを特徴とする。この発明によれば、バスモジュールに内蔵された一次キャッシュメモリは、システム全体で共通のキャッシュとして機能する。よって、各バスマスタ及び第1メモリは、個別にキャッシュメモリを持つ必要がなくなるといった効果がある。
本発明の実施形態に係るデータ処理装置の構成を示すブロック図である。 バスモジュールの第1モードにおける処理内容を示すフローチャートである。 バスモジュールの第1モードにおけるハードウエアプリフェッチ処理の内容を示すフローチャートである。 バスモジュールの第2モードにおける処理内容を示すフローチャートである。 バスモジュールの第2モードにおけるハードウエアプリフェッチ処理の内容を示すフローチャートである。
以下、図面を参照しつつ、本発明に係る実施形態を説明する。
<1.データ処理装置の構成>
図1は、本発明の実施形態に係るデータ処理装置1の主要構成を示すブロック図である。データ処理装置1は、複数のバスマスタ11、12、13…、バスモジュール20、第1メモリ30、及び第2メモリ40を備える。例えば、バスマスタ11はCPUであり、バスマスタ12は画像処理を実行するモジュールであり、バスマスタ13はサウンド処理を実行するモジュールである。この例では、バスマスタ11はキャッシュメモリを内蔵するが、バスマスタ12及び13はキャッシュメモリを内蔵しない。即ち、バスモジュール20に接続される各バスマスタは、必ずしもキャッシュメモリを内蔵する必要がない。
第1メモリ30は、第2メモリ40よりもアクセス速度が遅い読み出し専用のメモリである。例えば、ROM(Read Only Memory)が該当する。一方、第2メモリ40は、第1メモリよりもアクセス速度が速く、データの読み出し及び書き込みが可能なメモリであって、例えば、DDR3DRAM(Double-Data-Rate3 Dynamic Random Access Memory)などが該当する。なお、第2メモリ40のメモリ空間には、後述するように二次キャッシュメモリM2が割り当てられる。
バスモジュール20は、バスマスタ11、12、13…と第1メモリ30及び第2メモリ40との間に設けられ、第1メモリ30及び第2メモリ40へのアクセスを制御する。
バスモジュール20は、データの読み出し及び書き込みを制御するキャッシュコントローラ23と、バスマスタ11、12、13…とキャッシュコントローラ23との間に設けられたバス21、キャッシュコントローラ23と第1メモリ30及び第2メモリ40との間に設けられたバス22、並びに一次キャッシュメモリM1を備える。一次キャッシュメモリM1は第2メモリ40よりアクセス速度が高速である。
また、一次キャッシュメモリM1及び第2メモリ40に割り当てられる二次キャッシュメモリM2は、データを記憶するDATAアレイ、TAGアドレスを記憶するTAGアレイ、プリフェッチ用のアドレスを記憶するLRUアレイを含む。DATAアレイは、例えば、Nウエイ・Kラインで構成される。
なお、一次キャッシュメモリM1のサイズは固定であるが、二次キャッシュメモリM2のデータサイズは任意に変更できるようになっている。具体的には、キャッシュコントローラ23は、第2メモリ40に二次キャッシュメモリM2を割り当てる際に、任意のライン数を指定することによって、任意のデータサイズを設定する。
バスマスタ11、12、13…はキャッシュコントローラ23に対してマスタとして機能し、キャッシュコントローラ23はバスマスタ11、12、13…に対してスレーブとして機能する。一方、キャッシュコントローラ23は第1メモリ30及び第2メモリ40に対してマスタとして機能し、第1メモリ30及び第2メモリ40はキャッシュコントローラ23に対してスレーブとして機能する。
<2.バスモジュールの動作>
バスモジュール20は、3つのモードで動作する。第1モードにおいて、キャッシュコントローラ23は、第2メモリ40のメモリ空間の一部に二次キャッシュメモリM2を割り当てる。そして、キャッシュコントローラ23は、バスモジュール20内の一次キャッシュメモリM1及び第2メモリ40内の二次キャッシュメモリM2を第1メモリ30のキャッシュとして機能させる。
次に、第2モードにおいて、キャッシュコントローラ23は、バスモジュール20内の一次キャッシュメモリM1を第2メモリ40のキャッシュとして機能させる。この場合、一次キャッシュメモリM1の記憶内容がバスマスタ11、12、13…により書き変わるようなことがあると一次キャッシュメモリM1と第2メモリ40の記憶内容に整合性が取れなくなる。このため、キャッシュコントローラ23は、一次キャッシュメモリM1のミスヒット後のデータの入れ替えの際に追い出したデータで第2メモリ40に書き直すライトバック方式を採用する。従って、第2モードのキャッシュ機能は第1メモリ30と無関係になる。
次に、第3モードにおいて、キャッシュコントローラ23は、バスモジュール20を単なるバスとして機能させる。
モードは、モード設定コマンドによって指定される。例えば、バスマスタ11がCPUである場合、バスマスタ11が発行するモード設定コマンドによって、第1乃至第3モードのうち一つが設定される。なお、モードの設定は、キャッシュコントローラ23の所定のレジスタにフラグを書き込むことによって実行してもよい。
<2−1:第1モード>
次に、第1モードの動作について説明する。第1モードでは、まず、キャッシュコントローラ23は、第2メモリ40のメモリ空間の一部に二次キャッシュメモリM2を割り当てる。ここで、二次キャッシュメモリM2のメモリ容量は任意に設定可能である。例えば、バスマスタ11、12、13…からの要求に応じて、キャッシュコントローラ23が二次キャッシュメモリM2のメモリ容量を決定する。あるいは、CPUなどの所定のバスマスタが二次キャッシュメモリM2のメモリ容量を指定するコマンドを発行し、当該コマンドをキャッシュコントローラ23が受信し、当該コマンドに従ってキャッシュコントローラ23が指定された容量の二次キャッシュメモリM2を第2メモリ40のメモリ空間の一部に割り当ててもよい。
図2は、第1モードにおけるキャッシュコントローラ23の動作内容を示すフローチャートである。キャッシュコントローラ23はバスマスタ11、12、13…がバスモジュール20に送信したコマンドを受信すると、データの読み出しを指示するリードコマンドであるか否かを判定する(S1)。受信コマンドがリードコマンドでない場合、キャッシュコントローラ23は、第2メモリ40の非キャッシュ領域へのライトコマンドであるか否かを判定し(S2)、非キャッシュ領域へのライトコマンドである場合には、第2メモリ40の非キャッシュ領域へデータを書き込む(S3)。一方、受信コマンドが非キャッシュ領域へのライトコマンドでない場合には、キャッシュコントローラ23はエラー処理を実行する(S4)。
次に、受信コマンドがリードコマンドである場合、ステップS1の判定条件は肯定され、キャッシュコントローラ23は、受信コマンドが第1メモリ30へのリードコマンドであるか否かを判定する(S5)。受信コマンドが第1メモリ30へのリードコマンドでない場合、キャッシュコントローラ23は第2メモリ40のデータを読み出して、当該コマンドを送信したバスマスタにデータを送信する(S6)。一方、受信コマンドが第1メモリ30へのリードコマンドである場合には、キャッシュコントローラ23は、後述するハードウエアプリフェッチ処理を並行して実行し(S7)、一次キャッシュメモリM1にデータが格納されているか否かを判定する(S8)。
一次キャッシュメモリM1にデータが格納されている場合には、キャッシュコントローラ23は、一次キャッシュメモリM1からデータを読み出して、当該コマンドを送信したバスマスタにデータを送信する(S18)。
一方、一次キャッシュメモリM1にデータが格納されていなかった場合、キャッシュコントローラ23は、二次キャッシュメモリM2にデータが格納されているか否かを判定する(S9)。ステップS9の判定条件が否定される場合は、一次キャッシュメモリM1及び二次キャッシュメモリM2にデータが格納されていない。この場合、キャッシュコントローラ23は、第1メモリ30からデータを読み出す(S10)。
次に、キャッシュコントローラ23は、二次キャッシュメモリM2に空きが無いか否かを判定する(S11)。二次キャッシュメモリM2に空きが無い場合、キャッシュコントローラ23は、二次キャッシュメモリM2からラインの追い出しを実行する(S12)。つまり、二次キャッシュメモリM2の所定のラインを無効化して空きを作る。この場合、キャッシュコントローラ23は、最も古く読み出されたラインを追い出す。これにより、二次キャッシュメモリM2に空きができる。キャッシュコントローラ23は、二次キャッシュメモリM2にステップS10で第1メモリ30から読み出したデータを、二次キャッシュメモリM2に書き込む(S13)。なお、二次キャッシュメモリM2に空きが有り、ステップS11の判定条件が否定された場合も、第1メモリ30から読み出したデータを、二次キャッシュメモリM2に書き込む(S13)。
この後、キャッシュコントローラ23は、二次キャッシュメモリM2から、ステップS13にて書き込んだデータを再度読み出す(S14)。なお、二次キャッシュメモリM2にデータが格納されており、ステップS9の判定条件が肯定された場合も同様である。次に、キャッシュコントローラ23は、一次キャッシュメモリM1に空きが無いか否かを判定する(S15)。一次キャッシュメモリM1に空きが無い場合、キャッシュコントローラ23は、一次キャッシュメモリM1からラインの追い出しを実行する(S16)。この場合、キャッシュコントローラ23は、最も古く読み出されたラインを追い出す。次に、キャッシュコントローラ23は、一次キャッシュメモリM1にステップS14で二次キャッシュメモリM2から読み出したデータを、一次キャッシュメモリM1に書き込む(S17)。なお、一次キャッシュメモリM1に空きが有り、ステップS15の判定条件が否定された場合も、二次キャッシュメモリM2から読み出したデータを、一次キャッシュメモリM1に書き込む(S17)。この後、キャッシュコントローラ23は、一次キャッシュメモリM1から、ステップS17にて書き込んだデータを再度読み出して、当該コマンドを送信したバスマスタにデータを送信する(S18)。
このように第1モードにおいて、キャッシュコントローラ23は、バスマスタ11、12、13…から受信したリードコマンドが低速で動作する第1メモリ30に対するものである場合、一次キャッシュメモリM1に当該リードコマンドで指定されたデータが格納されているか否かを判定する処理(S8)と、データが一次キャッシュメモリM1に格納されていれば(S8:YES)、一次キャッシュメモリM1からデータを読み出して、バスマスタにデータを送信する処理(S18)と、データが一次キャッシュメモリM1に格納されていない場合(S8:NO)、二次キャッシュメモリM2にデータが格納されているか否かを判定する処理(S9)と、データが二次キャッシュメモリM2に格納されていれば(S9:YES)、二次キャッシュメモリM2からデータを読み出して(S14)一次キャッシュメモリM1にデータを書き込む(S17)と共に、データをバスマスタに送信する処理(S18)と、データが二次キャッシュメモリM2に格納されていなければ(S9:NO)、データを第1メモリ30から読み出して(S10)二次キャッシュメモリM2及び一次キャッシュメモリM1に格納し(S13,S17)、データをバスマスタに送信する処理(S18)とを実行する。
これにより、バスマスタ11、12、13…は、低速の第1メモリ30に対するリードコマンドをバスモジュール20に送信するだけで、低速の第1メモリ30に格納されているデータを短いアクセス時間で読み出すことができる。即ち、バスモジュール20に内蔵された一次キャッシュメモリM1は、システム全体で共通のキャッシュとして機能するため、バスマスタ11、12、13…やバススレーブたる第1メモリ30は、個別にキャッシュメモリを持つ必要がなくなる。
また、二次キャッシュメモリM2をアクセス速度が高速な第2メモリ40の一部のメモリ空間を任意の大きさで割り当てることが可能なため、独立して二次キャッシュメモリM2を設ける必要がなく、チップ面積を削減することができる。
さらに、キャッシュコントローラ23は、ミスヒットを検出すると(S9:NO)、自動的に低速な第1メモリ30から高速な第2メモリ40にデータを転送し、二次キャッシュメモリM2及び一次キャッシュメモリM1のデータを更新する(S13、S17)。従って、ソフトウェアによる煩雑な制御が不要となる。
くわえて、キャッシュの対象は読み出し専用の第1メモリ30に格納されたデータである。従って、複数のバスマスタ11、12、13…間のキャッシュコヒーレンシが問題とならないといった利点がある。
次に、第1モードにおけるハードウエアプリフェッチ処理について説明する。図3はハードウエアプリフェッチ処理の内容を示すフローチャートである。なお、以下の説明では、リードコマンドが示すデータが格納される第1メモリ30のラインの次のラインのアドレスをプリフェッチアドレス、次のラインのデータをプリフェッチデータと称する。
受信したコマンドが第1メモリ30に対するリードコマンドである場合、キャッシュコントローラ23は、プリフェッチアドレスを生成し(S20)、プリフェッチデータが、一次キャッシュメモリM1に格納されているか否かを判定する(S21)。一次キャッシュメモリM1にプリフェッチデータが格納されている場合には、キャッシュコントローラ23は、アイドル状態に移行する(S33)。
一方、一次キャッシュメモリM1にプリフェッチデータが格納されていなかった場合、キャッシュコントローラ23は、二次キャッシュメモリM2にプリフェッチデータが格納されているか否かを判定する(S22)。ステップS22の判定条件が否定される場合は、一次キャッシュメモリM1及び二次キャッシュメモリM2にプリフェッチデータが格納されていない。この場合、キャッシュコントローラ23は、プリフェッチアドレスを生成し(S23)。第1メモリ30からプリフェッチデータを読み出す(S24)。
次に、キャッシュコントローラ23は、二次キャッシュメモリM2に空きが無いか否かを判定する(S25)。二次キャッシュメモリM2に空きが無い場合、キャッシュコントローラ23は、二次キャッシュメモリM2からラインの追い出しを実行する(S26)。この場合、キャッシュコントローラ23は、最も古く読み出されたラインを追い出す。キャッシュコントローラ23は、ステップS24で第1メモリ30から読み出したプリフェッチデータを、二次キャッシュメモリM2に書き込み(S27)。なお、二次キャッシュメモリM2に空きが有り、ステップS25の判定条件が否定された場合も、第1メモリ30から読み出したプリフェッチデータを、二次キャッシュメモリM2に書き込む(S27)。
この後、キャッシュコントローラ23は、二次キャッシュメモリM2からプリフェッチデータを読み出す(S29)。なお、二次キャッシュメモリM2にプリフェッチデータが格納されており、ステップS22の判定条件が肯定された場合も同様である。
次に、キャッシュコントローラ23は、一次キャッシュメモリM1に空きが無いか否かを判定する(S30)。一次キャッシュメモリM1に空きが無い場合、キャッシュコントローラ23は、一次キャッシュメモリM1からラインの追い出しを実行する(S31)。この場合、キャッシュコントローラ23は、最も古く読み出されたラインを追い出す。次に、キャッシュコントローラ23は、ステップS29で二次キャッシュメモリM2から読み出したプリフェッチデータを、一次キャッシュメモリM1に書き込む(S32)。なお、一次キャッシュメモリM1に空きが有り、ステップS30の判定条件が否定された場合も、二次キャッシュメモリM2から読み出したプリフェッチデータを、一次キャッシュメモリM1に書き込む(S32)。この後、キャッシュコントローラ23は、アイドル状態に移行する(S33)。
以上説明したように、キャッシュコントローラ23は、第1メモリ30へのリードコマンドに対応して、一次キャッシュメモリM1、二次キャッシュメモリM2、又は第1メモリ30のいずれかからデータを読み出している間に並行して、次に読み出される可能性が高いプリフェッチデータが一次キャッシュメモリM1に格納されているか判定し、一次キャッシュメモリM1に格納されていなければ二次キャッシュメモリM2に格納されているか判定し、二次キャッシュメモリM2に格納されていれば一次キャッシュメモリM1にプリフェッチデータを格納し、二次キャッシュメモリM2に格納されていなければプリフェッチデータを第1メモリ30から読み出して一次キャッシュメモリM1及び二次キャッシュメモリM2に格納する。
これにより、次に読み出される可能性が高いプリフェッチデータを一次キャッシュメモリM1に予め準備することができ、アクセス時間を短縮することができる。
<2−2:第2モード>
次に、第2モードの動作について説明する。第2モードでは、第2メモリ40のメモリ空間の一部を二次キャッシュメモリM2として使用しない。従って、キャッシュコントローラ23は、二次キャッシュメモリM2の割り当てを実行しない。
図4は、第2モードにおけるキャッシュコントローラ23の動作内容を示すフローチャートである。キャッシュコントローラ23はバスマスタ11、12、13…がバスモジュール20に送信したコマンドを受信すると、データの読み出しを指示するリードコマンドであるか否かを判定する(S40)。受信コマンドがリードコマンドでない場合、キャッシュコントローラ23は、第2メモリ40へのライトコマンドであるか否かを判定し(S41)、ライトコマンドである場合には、データを第2メモリ40へ書き込む(S42)。一方、受信コマンドがライトコマンドでない場合には、キャッシュコントローラ23はエラー処理を実行する(S43)。
次に、受信コマンドがリードコマンドである場合、ステップS40の判定条件は肯定され、キャッシュコントローラ23は、受信コマンドが第2メモリ40へのリードコマンドであるか否かを判定する(S44)。受信コマンドが第2メモリ40へのリードコマンドでない場合は、キャッシュコントローラ23は、第1メモリ30のデータを読み出して、当該コマンドを送信したバスマスタにデータを送信する(S45)。一方、受信コマンドが第2メモリ40へのリードコマンドである場合には、キャッシュコントローラ23は、後述するハードウエアプリフェッチ処理を並行して実行し(S46)、一次キャッシュメモリM1にデータが格納されているか否かを判定する(S47)。
一次キャッシュメモリM1にデータが格納されている場合には、キャッシュコントローラ23は、一次キャッシュメモリM1からデータを読み出して、当該コマンドを送信したバスマスタにデータを送信する(S52)。
一方、一次キャッシュメモリM1にデータが格納されていなかった場合、キャッシュコントローラ23は、第2メモリ40からデータを読み出す(S48)。次に、キャッシュコントローラ23は、一次キャッシュメモリM1に空きが無いか否かを判定する(S49)。一次キャッシュメモリM1に空きが無い場合、キャッシュコントローラ23は、一次キャッシュメモリM1からラインの追い出しを実行する(S50)。この場合、キャッシュコントローラ23は、最も古く読み出されたラインを追い出す。次に、キャッシュコントローラ23は、ステップS48で第2メモリ40から読み出したデータを、一次キャッシュメモリM1に書き込む(S51)。なお、一次キャッシュメモリM1に空きが有り、ステップS49の判定条件が否定された場合も、第2メモリ40から読み出したデータを、一次キャッシュメモリM1に書き込む(S51)。この後、キャッシュコントローラ23は、一次キャッシュメモリM1から、ステップS51にて書き込んだデータを再度読み出して、当該コマンドを送信したバスマスタにデータを送信する(S52)。
このように第2モードにおいて、キャッシュコントローラ23は、バスマスタ11、12、13…から受信したリードコマンドが第1メモリ30に対するものである場合、第1メモリ30から読み出したデータをバスマスタに送信する処理(S45)と、リードコマンドが第2メモリ40に対するものである場合、一次キャッシュメモリM1に当該リードコマンドで指定されたデータが格納されているか否かを判定する処理(S47)と、データが一次キャッシュメモリM1に格納されていれば(S47:YES)、一次キャッシュメモリM1からデータを読み出して、バスマスタにデータを送信する処理(S52)と、データが一次キャッシュメモリM1に格納されていない場合(S47:NO)、第2メモリ40からデータを読み出して(S48)一次キャッシュメモリM1にデータを書き込む(S51)と共に、データをバスマスタに送信する処理(S52)とを実行する。
これにより、バスモジュール20は、第2メモリ40に対するキャッシュとして機能する。即ち、バスモジュール20に内蔵された一次キャッシュメモリM1は、システム全体で共通のキャッシュとして機能するため、バスマスタ11、12、13…は、個別にキャッシュメモリを持たなくても、第2メモリ40に格納されたデータのアクセス時間を短縮することができる。
くわえて、バスモジュール20は、第1モードと第2モードを選択可能である。即ち、第1モードにおいて一次キャッシュメモリM1は、第1メモリ30のキャッシュとして機能するが、第2モードにおいて一次キャッシュメモリM1は、第2メモリ40のキャッシュとして機能する。仮に、一次キャッシュメモリM1を第1メモリ30のキャッシュとしてのみ機能させると、第1メモリ30に格納されたデータを用いない場合、一次キャッシュメモリM1が無駄になってしまう。本実施形態では、モードによって一次キャッシュメモリM1の機能を切り替えることができるので、一次キャッシュメモリM1を有効に活用することが可能となる。
次に、第2モードにおけるハードウエアプリフェッチ処理について説明する。図5は第2モードのハードウエアプリフェッチ処理の内容を示すフローチャートである。なお、以下の説明では、第1モードにおけるハードウエアプリフェッチ処理と同様に、リードコマンドが示すデータが格納される第2メモリ40のラインの次のラインのアドレスをプリフェッチアドレス、次のラインのデータをプリフェッチデータと称する。
受信したコマンドが第2メモリ40に対するリードコマンドである場合、キャッシュコントローラ23は、プリフェッチアドレスを生成し(S60)、プリフェッチデータが、一次キャッシュメモリM1に格納されているか否かを判定する(S61)。一次キャッシュメモリM1にプリフェッチデータが格納されている場合には、キャッシュコントローラ23は、アイドル状態に移行する(S66)。
一方、一次キャッシュメモリM1にプリフェッチデータが格納されていなかった場合、キャッシュコントローラ23は、第2メモリ40からプリフェッチデータを読み出す(S62)。この後、キャッシュコントローラ23は、一次キャッシュメモリM1に空きが無いか否かを判定する(S63)。一次キャッシュメモリM1に空きが無い場合、キャッシュコントローラ23は、一次キャッシュメモリM1からラインの追い出しを実行する(S64)。この場合、キャッシュコントローラ23は、最も古く読み出されたラインを追い出す。キャッシュコントローラ23は、ステップS62で第2メモリ40から読み出したプリフェッチデータを、一次キャッシュメモリM1に書き込む(S65)。なお、一次キャッシュメモリM1に空きが有り、ステップS63の判定条件が否定された場合も、第2メモリ40から読み出したプリフェッチデータを、一次キャッシュメモリM1に書き込み(S65)、アイドル状態に移行する(S66)。
これにより、次に読み出される可能性が高いプリフェッチデータを一次キャッシュメモリM1に予め準備することができ、アクセス時間を短縮することができる。
<3.変形例>
本発明は上述した実施形態に限定されるものではなく、例えば、以下に述べる各種の変形が可能である。また、実施形態及び各種の変形例は適宜組み合わせてもよい。
(1)上述した実施形態では第1モード及び第2モードにおいてハードウエアプリフェッチ処理を実行したが、キャッシュコントローラ23は、各モードでハードウエアプリフェッチ処理を実行するか否かを、バスモジュール20の外部から供給される設定データに基づいて設定してもよい。
(2)上述した実施形態では、全てのバスマスタ11、12、13…が、第1モードにおいて一次キャッシュメモリM1及び二次キャッシュメモリM2を利用し、第2モードにおいて一次キャッシュメモリM1を利用したが、本発明はこれに限定されるものではなく、バスモジュール20の外部から供給される制御データに基づいて、キャッシュコントローラ23はバスマスタごとに第1モード及び第2モードの適用を定めてもよい。
この場合、制御データは、CPUなどの所定のバスマスタがバスモジュール20に供給してもよいし、各バスマスタが制御データをバスモジュール20に供給してもよい。
1……データ処理装置、10,11,12……バスマスタ、20……バスモジュール、23……キャッシュコントローラ、30……第1メモリ、40……第2メモリ、M1……一次キャッシュメモリ、M2……二次キャッシュメモリ。

Claims (5)

  1. 読み出し専用の第1メモリ、アクセス速度が前記第1メモリより高速であり読み書き可能な第2メモリ、及び複数のバスマスタと通信可能なバスモジュールであって、
    一次キャッシュメモリと、
    前記第2メモリのメモリ空間の一部に二次キャッシュメモリを割り当て可能なキャッシュコントローラとを備え、
    前記キャッシュコントローラは、
    前記バスマスタから受信したリードコマンドが前記第1メモリに対するものである場合、前記一次キャッシュメモリに当該リードコマンドで指定されたデータが格納されているか否かを判定する第1処理と、
    前記データが前記一次キャッシュメモリに格納されていれば前記一次キャッシュメモリから前記データを読み出して、前記バスマスタに前記データを送信する第2処理と、
    前記データが前記一次キャッシュメモリに格納されていない場合、前記二次キャッシュメモリに前記データが格納されているか否かを判定する第3処理と、
    前記データが前記二次キャッシュメモリに格納されていれば、前記二次キャッシュメモリから前記一次キャッシュメモリに前記データを書き込むと共に、前記データを前記バスマスタに送信する第4処理と、
    前記データが前記二次キャッシュメモリに格納されていなければ、前記データを前記第1メモリから読み出して前記二次キャッシュメモリ及び前記一次キャッシュメモリに格納し、前記データを前記バスマスタに送信する第5処理とを実行する、
    ことを特徴とするバスモジュール。
  2. 前記キャッシュコントローラは、
    前記バスマスタから受信したリードコマンドが前記第2メモリに対するものである場合、前記第2メモリから読み出したデータを当該バスマスタに送信する、
    ことを特徴とする請求項1に記載のバスモジュール。
  3. 前記第1処理、前記第2処理、前記第3処理、前記第4処理及び前記第5処理を実行するモードを第1モードとし、
    前記キャッシュコントローラは、前記第1モードと第2モードとを選択して実行可能であり、
    前記第2モードは、
    前記バスマスタから受信したリードコマンドが前記第1メモリに対するものである場合、前記第1メモリからデータを読み出して、当該データを当該バスマスタに送信する処理と、
    前記バスマスタから受信したリードコマンドが前記第2メモリに対するものである場合、前記一次キャッシュメモリに当該リードコマンドで指定されたデータが格納されているか否かを判定する処理と、
    前記データが前記一次キャッシュメモリに格納されていれば前記一次キャッシュメモリから前記データを読み出して、前記バスマスタに前記データを送信する処理と、
    前記データが前記一次キャッシュメモリに格納されていない場合、前記データを前記第2メモリから読み出して前記一次キャッシュメモリに格納し、前記データを前記バスマスタに送信する処理とを実行する、
    ことを特徴とする請求項1又は2に記載のバスモジュール。
  4. 前記キャッシュコントローラは、外部から供給される設定データに基づいて、前記第2メモリのメモリ空間の一部に割り当てる前記二次キャッシュメモリのメモリ容量を設定することを特徴とする請求項1乃至3のうちいずれか1項に記載のバスモジュール。
  5. 請求項1乃至4のうちいずれか1項に記載のバスモジュールと、
    前記第1メモリと、
    前記第2メモリと、
    前記複数のバスマスタとを、
    備えたことを特徴とするデータ処理装置。
JP2013040285A 2013-03-01 2013-03-01 バスモジュール及びデータ処理装置 Pending JP2014170262A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013040285A JP2014170262A (ja) 2013-03-01 2013-03-01 バスモジュール及びデータ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013040285A JP2014170262A (ja) 2013-03-01 2013-03-01 バスモジュール及びデータ処理装置

Publications (1)

Publication Number Publication Date
JP2014170262A true JP2014170262A (ja) 2014-09-18

Family

ID=51692638

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013040285A Pending JP2014170262A (ja) 2013-03-01 2013-03-01 バスモジュール及びデータ処理装置

Country Status (1)

Country Link
JP (1) JP2014170262A (ja)

Similar Documents

Publication Publication Date Title
US9158685B2 (en) System cache with cache hint control
US9529544B2 (en) Combined transparent/non-transparent cache
US9218286B2 (en) System cache with partial write valid states
JP5536658B2 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
US9201796B2 (en) System cache with speculative read engine
JP5528554B2 (ja) ブロックベースの非透過的キャッシュ
US9400544B2 (en) Advanced fine-grained cache power management
TWI492055B (zh) 具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法
US9043570B2 (en) System cache with quota-based control
JP2009211153A (ja) メモリ装置、情報処理装置及び電力制御方法
JP5499987B2 (ja) 共有キャッシュメモリ装置
US9311251B2 (en) System cache with sticky allocation
US20110167223A1 (en) Buffer memory device, memory system, and data reading method
KR101689094B1 (ko) 스티키 제거 엔진을 구비한 시스템 캐시
KR20140038075A (ko) 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치
JP2008521114A (ja) ローカルメモリデータのコヒーレントなキャッシュ処理
JP2011248389A (ja) キャッシュメモリ、キャッシュメモリシステム
JP2014170262A (ja) バスモジュール及びデータ処理装置
JP4295815B2 (ja) マルチプロセッサシステムおよびマルチプロセッサシステムの動作方法
JP2008176612A (ja) マルチプロセッサシステム
JP2005346582A (ja) システムlsi及び画像処理装置
JP6209573B2 (ja) 情報処理装置および情報処理方法
JP2016508650A (ja) リフレクティブメモリとのコヒーレンシの実施
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20150410