説明

キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ

【課題】キャッシュ・メモリの容量を削減すると共に、CPUの性能低下を防ぐ。
【解決手段】前回のリード・アドレスと連続しない非順次アドレスへのリードである非順次リードがあったときに、第1のキャッシュ・メモリ回路270により該非順次アドレス、および該非順次アドレスに続くn個(n:1以上の整数)のアドレスのデータを順次キャッシングすると共に、キャッシングしたn個のアドレスのデータを第2のキャッシュンメモリ回路280に保存する。その後、次の非順次リードがなされるまで、第1のキャッシュ・メモリ回路270を介さずに、n個のアドレスの末尾のアドレスに続くアドレスのデータをメモリから第2のキャッシュ・メモリ回路280に順次読み出して保存する。非順次リードに続く各順次リードに対して、第2のキャッシュ・メモリ回路280から該順次リードのリード・アドレスのデータを出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリに記憶されたデータをキャッシングする技術に関する。
【背景技術】
【0002】
マイクロコンピュータシステムにおいて、実行プログラムやデータなどがメインメモリ(以下単にメモリという)に保存され、CPU(Central Processing Unit)は、メモリから実行プログラムやデータをリードしてプログラムを実行する。システムの処理速度は、CPUが実行プログラムやデータをリードする速度に左右される。
【0003】
リード速度を速くするために、CPUとメモリ間に、メモリより動作速度が速いキャッシュメモリを設ける手法が用いられている。この手法は、CPUがリードする際の参照の局所性(LOF:Locality of Reference)を利用したものである。LOFは時間的局所性と空間的局所性を含み、時間的局所性は、メモリ上のあるアドレスが参照されたとき、このアドレスが近い将来に再び参照される確率が高いことを意味し、空間的局所性は、メモリ上のあるアドレスが参照されたとき、このアドレスの近傍のアドレスが参照される確率が高いことを意味する。
【0004】
キャッシュメモリを設けたシステムにおいて、このようなLOFを利用して、参照される確率が高い実行プログラムやデータをメモリから読み出してキャッシュメモリに格納しておき、CPUがリードする実行プログラムやデータがキャッシュメモリにある場合にキャッシュメモリからCPUに出力する。こうすることによって、CPUが実行プログラムやデータをリードするサイクル数を少なくでき、プログラムの実行サイクル数も少なくできる。
【0005】
チップ上の実装面積やコストダウンなどのために、キャッシュメモリの容量を節減する様々な技術が提案されている。ここで図6を用いて特許文献1に記載された技術を説明する。
【0006】
図6は、特許文献1の図1に示すキャッシュ装置に対して、各機能ブロックの名称を追記して分かりやすくしたものである。このキャッシュ装置は、プリフェッチアドレスレジスタ1と、比較回路内蔵レジスタ2、3、4と、キャッシュメモリ5、6、7と、命令キュ8、9、10と、インストラクションレジスタ11を有する。比較回路内蔵レジスタは、キャッシュメモリに記憶されている命令のアドレスを記憶するレジスタと、該レジスタの内容とプリフェッチアドレスレジスタ1の内容を比較する機能をもつ回路である。図中12は、ジャンプ命令識別信号である。なお、特許文献1では、命令「キュ」などのように、待ち行列(queue)を「キュ」として記しているため、本明細書において、特許文献1について説明する際にそれに合わせて「キュ」を用いるが、本発明の説明の際には「キュー」と記載する。
【0007】
命令キュ8、9、10へは常に外部メモリから連続したアドレスの命令がプリフェッチされている。通常、ジャンプ命令(分岐命令ともいう)実行時以外は、ジャンプ命令識別信号12により命令キュ8、9、10から命令がインストラクションレジスタ11に読み出される。一方、ジャンプ命令実行後の数命令について、比較回路内蔵レジスタによる比較結果に基づいて、プリフェッチアドレスレジスタ1に入力されたプリフェッチアドレスと一致した命令がキャッシュメモリからインストラクションレジスタ11に読み出される。
【0008】
プログラムは、通常、連続したアドレスの命令と、ジャンプ命令によって不連続に変化するアドレスの命令とからなる。この技術は、キャッシュメモリと命令キュを合わせもつことによって、ジャンプ命令実行時以外は命令キュ内の命令を実行し、ジャンプ命令実行後の数命令についてのみキャッシュメモリからの命令を実行する。すなわち、連続したアドレスの命令は命令キュに記憶されるので、連続したアドレスの命令の実行中には、キャッシュメモリとプリフェッチアドレスレジスタに記憶されたアドレスの比較動作が無い。また、キャッシュメモリは、ジャンプ命令実行後の数命令のみを記憶すればよいので、キャッシュメモリの容量を削減できる。
【特許文献1】特開昭62−151936号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
ところで、特許文献1に記載の技術では、CPUが命令キュを経由して、連続したアドレスの命令をリードしている。CPUとメモリの動作速度の差が小さい時代には、リード時にこのように命令キュの介在があってもCPUの性能の低下はそれほど無かった。しかし、近年、CPUの動作速度とメモリの動作速度の差が数倍以上になることが多く、命令キューにデータが保存されるまでに時間がかかるため、命令キュを経由して連続した命令するをリードするCPUの性能が大幅に低下してしまうという問題がある。
【課題を解決するための手段】
【0010】
本発明の一つの態様は、キャッシュ制御方法である。この方法は、前回のリード・アドレスと連続しない非順次アドレスへのリードである非順次リードがあったときに、第1のキャッシュ・メモリ回路により該非順次アドレス、および該非順次アドレスに続くn個(n:1以上の整数)のアドレスのデータを順次キャッシングすると共に、キャッシングしたn個のアドレスのデータを第2のキャッシュンメモリ回路に保存する。その後、次の非順次リードがなされるまで、第1のキャッシュ・メモリ回路を介さずに、このn個のアドレスの末尾のアドレスに続くアドレスのデータをメモリから第2のキャッシュ・メモリ回路に順次読み出して保存する。そして、非順次リードに続く各順次リードに対して、第2のキャッシュ・メモリ回路から該順次リードのリード・アドレスのデータを出力する。
【0011】
なお、上記態様を装置やシステム、または上記方法を実現する装置を備えたマイクロコンピュータとして表現したものも、本発明の態様としては有効である。
【発明の効果】
【0012】
本発明の技術によれば、キャッシュ・メモリの容量を削減すると共に、CPUの性能低下を防ぐことができる。
【発明を実施するための最良の形態】
【0013】
以下、図面を参照して本発明の実施の形態について説明する。
【0014】
図1は、本発明の実施の形態にかかるマイクロコンピュータ100を示す。マイクロコンピュータ100は、CPU110と、キャッシュ・コントローラ200と、メモリ・コントローラ120と、メインメモリ(以下単にメモリという)130を備える。ここで、本発明の主旨が分かりやすいように、本発明と関連する部分についてのみ図示し、マイクロコンピュータに通常備えられている他の部分については図示および説明を省略する。
【0015】
キャッシュ・コントローラ200は、キャッシュ装置としてCPU110とメモリ・コントローラ120の間に接続されている。図1に示すように、キャッシュ・コントローラ200は、CPU110と接続するインターフェース回路(以下I/F回路という)210と、先読みアドレス・カウンタ220と、非順次アドレス保持回路230と、アドレス比較回路240と、切替回路250と、選択回路260と、第1のキャッシュ・メモリ回路270と、第2のキャッシュ・メモリ回路280と、キュー290を備える。
【0016】
CPU110がリードするデータは2つの種類があり、1つは実行する命令のデータであり、1つは命令以外のデータである。CPUは、命令のデータをリードする際には該命令のデータのアドレス(フェッチ・アドレス)を出力し、命令以外のデータをリードする際には当該データのアドレスを出力する。以下の説明において、データの種類に関わらず、CPU110がリードするデータを単に「データ」といい、CPU110がリードするために出力したアドレスを「リード・アドレス」という。
【0017】
CPU110は、データをリードする際に、当該データのアドレスをリード・アドレスとして出力する。また、CPU110は、リード・アドレスの出力に伴い、今回出力するリード・アドレスが、前回リードしたデータのアドレスの順次アドレスであるか否かを示す信号S1を出力する。
【0018】
「順次アドレス」は、前回のリード・アドレスと連続したアドレスを意味する。順次アドレスではないアドレスは、前回のリード・アドレスと連続していないアドレスを意味し、以下「非順次アドレス」という。また、以下の説明において、順次アドレスのリードを「順次リード」といい、非順次アドレスのリードを「非順次リード」という。
【0019】
本実施の形態のマイクロコンピュータ100において、今回のリード・アドレスが順次アドレスであるか非順次アドレスであるかを示す信号S1は、「ハイ」のときには非順次アドレスであることを示し、「ロウ」のときには順次アドレスであることを示す。以下、この信号を非順次信号という。CPU110は、順次アドレスを出力する際に非順次信号S1にロウを出力し、非順次アドレスを出力する際に非順次信号S1にハイを出力する。
【0020】
CPU110が出力したリード・アドレスと非順次信号S1は、キャッシュ・コントローラ200に入力される。具体的には、リード・アドレスは、アドレス・バス111を介してI/F回路210に入力され、非順次信号S1は、先読みアドレス・カウンタ220と、非順次アドレス保持回路230と、選択回路260に入力される。
【0021】
I/F回路210は、CPU110からのリード・アドレスを、第2のキャッシュ・アドレス入力バス281を介して第2のキャッシュ・メモリ回路280に出力すると共に、リード・アドレス・バス211を介して先読みアドレス・カウンタ220と、非順次アドレス保持回路230と、選択回路260に出力する。
【0022】
また、I/F回路210は、第2のキャッシュ・データ出力バス282または第1のキャッシュ・データ出力バス272にデータが出力された際に、データ・バス112を介してこのデータをCPU110に出力する。第2のキャッシュ・データ出力バス282に出力されるデータは第2のキャッシュ・メモリ回路280からのものであり、第1のキャッシュ・データ出力バス272に出力されるデータは第1のキャッシュ・メモリ回路270からのものである、この2つのキャッシュ・メモリ回路については後述する。
【0023】
先読みアドレス・カウンタ220と、非順次アドレス保持回路230と、アドレス比較回路240と、切替回路250と、選択回路260と、キュー290は、非順次リードがあったときに行う先読出処理を行う先読出処理部として機能する。
【0024】
先読みアドレス・カウンタ220は、I/F回路210とCPU110からリード・アドレスと非順次信号S1を受信し、非順次信号S1に応じて先読みアドレスを生成する。
【0025】
具体的には、リード・アドレスが非順次アドレスである場合すなわち非順次信号S1がハイである場合において、先読みアドレス・カウンタ220は、このアドレスに1を加算して得た「リード・アドレス+1」を先読みアドレスとして生成して保持すると共に、先読みアドレス・バス221を介してアドレス比較回路240と切替回路250に出力する。
【0026】
一方、リード・アドレスが順次アドレスである場合すなわち非順次信号S1がロウである場合において、先読みアドレス・カウンタ220は、自身が保持しているアドレス(以下保持アドレスという)に1を加算して得た「保持アドレス+1」を先読みアドレスとして生成して保持すると共に、先読みアドレス・バス221を介してアドレス比較回路240と切替回路250に出力する。
【0027】
非順次アドレス保持回路230は、I/F回路210とCPU110からリード・アドレスと非順次信号S1を受信し、非順次信号S1がハイであるときすなわちリード・アドレスが非順次アドレスであるときにこのアドレスを保持すると共に、非順次アドレス信号S2としてアドレス比較回路240を介してアドレス比較回路240に出力する。また、非順次信号S1がロウであるときには保持した非順次アドレスをアドレス比較回路240に出力する。
【0028】
すなわち、リード・アドレスが順次アドレスである場合には、アドレス比較回路240に、先読みアドレス・カウンタ220からの先読みアドレス(「保持アドレス+1」)と、非順次アドレス保持回路230に保持された非順次アドレスとが入力される。一方、リード・アドレスが非順次アドレスである場合には、アドレス比較回路240に、先読みアドレス・カウンタ220により生成された先読みアドレス(「リード・アドレス+1」)と、非順次アドレス保持回路230からの該リード・アドレスとが入力される。
【0029】
アドレス比較回路240は、先読みアドレスと非順次アドレス信号S2とを比較し、比較結果に応じて第1のキャッシュ・メモリ回路270にキャッシングさせるか否かを制御する信号(キャッシュ・アクセス信号)S3を出力する。具体的には、非順次アドレス信号S2の次のn(n:1以上の整数)個目までのアドレスである先読出アドレスに対して、アドレス比較回路240は、キャッシュ・アクセスをすることを示すキャッシュ・アクセス信号S3を出力する。一方、非順次アドレス信号S2の次の「n+1」個目からのアドレスである先読出アドレスに対して、アドレス比較回路240は、キャッシュ・アクセスをしないことを示すキャッシュ・アクセス信号S3を出力する。
【0030】
本実施の形態において、キャッシュ・アクセス信号S3がハイであるときにはキャッシュ・アクセスすることを示し、キャッシュ・アクセス信号S3がロウであるときにはキャッシュ・アクセスしないことを示す。アドレス比較回路240は、比較結果に応じてハイかロウのキャッシュ・アクセス信号S3を出力する。
【0031】
キャッシュ・アクセス信号S3は、切替回路250に出力される。切替回路250は、キャッシュ・アクセス信号S3に応じて、先読みアドレス・カウンタ220からの先読みアドレスを選択回路260に与えるか、キュー290に与えるかの切替えを行う。具体的に、切替回路250は、キャッシュ・アクセス信号S3がキャッシュ・アクセスすることを示すハイであるときには、先読みキャッシュ・アドレス・バス253を介して先読みアドレスを選択回路260に出力する一方、キャッシュ・アクセス信号S3がロウであるときには、先読みキュー・セット・アドレス・バス251を介して先読みアドレスをキュー290に出力する。
【0032】
選択回路260は、I/F回路210からのリード・アドレスと、切替回路250からの先読みアドレスのうちのいずれを第1のキャッシュ・メモリ回路270に出力するかを選択する。具体的には、非順次信号S1がハイであるときに、選択回路260は、I/F回路210からのリード・アドレスを第1のキャッシュ・アドレス入力バス271に出力する。一方、非順次信号S1がロウであるときに、選択回路260は、切替回路250からの先読みアドレスを第1のキャッシュ・アドレス入力バス271に出力する。
【0033】
第1のキャッシュ・アドレス入力バス271に出力されたアドレス(I/F回路210からのリード・アドレス、または先読みアドレス)が第1のキャッシュ・メモリ回路270に入力される。第1のキャッシュ・メモリ回路270は、選択回路260から第1のキャッシュ・アドレス入力バス271にアドレスが出力された場合においてのみキャッシュ動作をする。
【0034】
第1のキャッシュ・メモリ回路270は、キャッシュ動作をするのにあたり、選択回路260からのアドレス(リード・アドレスまたは先読みアドレス)が自身に保存されているか否かを確認する。
【0035】
保存されていれば、第1のキャッシュ・メモリ回路270は、そのアドレスに対応するデータ(キャッシュ・データ)を、第1のキャッシュ・データ出力バス272を介してI/F回路210に出力すると共に、キャッシュ・リード・アドレス・データ・バス275を介して該アドレスおよび該アドレスに対応するデータを第2のキャッシュ・メモリ回路280に出力する。
【0036】
一方、保存されていなければ、第1のキャッシュ・メモリ回路270は、キャッシュ・アドレス出力バス273を介して、選択回路260からのアドレスをキュー290に出力する。また、第1のキャッシュ・メモリ回路270は、選択回路260からのアドレスを出力した後に、このアドレスに対応するデータがメモリ・コントローラ120からメモリ・リード・アドレス・データ・バス122に出力されたとき、このデータとこのデータのアドレスを保存する。
【0037】
キュー290は、第1のキャッシュ・メモリ回路270がキャッシュ・アドレス出力バス273にアドレス(I/F回路210からのアドレスまたは先読みアドレス)が出力されたときにこのアドレスを保持すると共に、メモリ・リード・アドレス・バス121を介してメモリ・コントローラ120に出力する。また、切替回路250から先読みキュー・セット・アドレス・バス251に先読みアドレスが出力されたときにも、キュー290は、この先読みアドレスを保持すると共に、メモリ・リード・アドレス・バス121を介してメモリ・コントローラ120に出力する。
【0038】
メモリ・コントローラ120は、メモリ130を制御する回路であり、メモリ・リード・アドレス・バス121を介してキュー290から出力されたアドレスを、メモリ・アドレス・バス131を介してメモリ130に出力してリード要求をする。また、このリード要求に従ってメモリ130から、当該アドレスに対応するデータがメモリ・データ・バス132に出力されたときに、このデータとこのデータに対応するアドレスを、メモリ・リード・アドレス・データ・バス122に出力する。
【0039】
第2のキャッシュ・メモリ回路280は、第2のキャッシュ・アドレス入力バス281を介してI/F回路210からリード・アドレスが出力されたとき、このリード・アドレスに対応するデータが自身に保存されているか否かを確認する。保存されていれば、第2のキャッシュ・データ出力バス282を介してそのデータをI/F回路210に出力する。
【0040】
第2のキャッシュ・メモリ回路280は、第1のキャッシュ・メモリ回路270がキャッシュ・リード・アドレス・データ・バス275にデータおよびこのデータに対応するアドレスを出力したとき、このデータとアドレスを保存する。また、メモリ・コントローラ120がメモリ・リード・アドレス・データ・バス122にデータおよびこのデータに対応するアドレスを出力したときも、このデータとアドレスを保存する。
【0041】
第1のキャッシュ・メモリ回路270と第2のキャッシュ・メモリ回路280は、通常のキャッシュメモリと同じように複数のエントリから構成される。図2は、このエントリ300は、アドレス301と、アドレス301に対応するデータデータ302と、アドレス301とデータ302が有効であるか無効であるかを示す有効ビット303から構成される。
【0042】
次に具体例を用いて図1に示すマイクロコンピュータ100の動作を具体的に説明する。
【0043】
まず、アドレス0からアドレス3までのデータが第1のキャッシュ・メモリ回路270と第2のキャッシュ・メモリ回路280に保存されていない状態で、CPU110が非順次アドレスとしてアドレス0からリードを行う場合について説明する。
【0044】
CPU110は、アドレス0をアドレス・バス111に出力している期間においてのみ非順次信号S1をハイにし、次の非順次アドレスをアドレス・バス111に出力するまでは非順次信号S1をロウにする。
【0045】
CPU110は、非順次信号S1をハイにすると共に、アドレス・バス111を介してアドレス0をI/F回路210に出力する。
【0046】
I/F回路210は、アドレス0を第2のキャッシュ・メモリ回路280、先読みアドレス・カウンタ220、非順次アドレス保持回路230、選択回路260に出力する。
【0047】
第2のキャッシュ・メモリ回路280は、自身の各エントリとアドレス0を比較する。この場合、アドレス0のデータが保存されていないため、ミスヒットとなる。
【0048】
先読みアドレス・カウンタ220は、非順次信号S1がハイであるため、先読みアドレス(「アドレス0+1」=アドレス1)を生成して保持する共に、先読みアドレスとなるアドレス1をアドレス比較回路240と切替回路250に出力する。
【0049】
また、非順次アドレス保持回路230は、非順次信号S1がハイであるため、非順次アドレスとなるアドレス0を保持すると共に、非順次アドレス信号S2としてアドレス比較回路240に出力する。
【0050】
アドレス比較回路240は、先読みアドレス・カウンタ220からの先読みアドレスと、非順次アドレス保持回路230からの非順次アドレス信号S2とを比較し、比較の結果に応じてキャッシュ・アクセス信号S3をハイかロウ出力する。
【0051】
本具体例において、アドレス比較回路240は、nとして3を用いて、非順次アドレス信号S2の次の3個目までのアドレスである先読出アドレスに対して、キャッシュ・アクセス信号S3をハイ出力する一方、非順次アドレス信号S2の次の4個目からのアドレスである先読出アドレスに対して、キャッシュ・アクセス信号S3をロウ出力する。
【0052】
ここで、先読みアドレス(アドレス1)が非順次アドレス信号S2(アドレス0)の次の1個目のアドレスであるため、アドレス比較回路240はキャッシュ・アクセス信号S3をハイ出力する。
【0053】
切替回路250は、キャッシュ・アクセス信号S3がハイであるため、先読みアドレス・カウンタ220からの先読みアドレス(アドレス1)を選択回路260に出力する。
【0054】
選択回路260は、非順次信号S1がハイであるため、I/F回路210からのアドレス0と、切替回路250からのアドレス1からアドレス0を選択して第1のキャッシュ・メモリ回路270に出力する。
【0055】
第1のキャッシュ・メモリ回路270は、自身の各エントリとアドレス0を比較する。この場合、アドレス0のデータが保存されていないため、ミスヒットとなる。第1のキャッシュ・メモリ回路270は、キュー290にアドレス0を出力する。
【0056】
キュー290は、アドレス0を保持すると共に、メモリ・コントローラ120に出力する。これに応じて、アドレス0に対応するデータがメモリ・コントローラ120によりメモリ130から読み出される。このデータは、アドレス0と共に、メモリ・リード・アドレス・データ・バス122に出力される。
【0057】
第1のキャッシュ・メモリ回路270は、メモリ・リード・アドレス・データ・バス122に出力されたデータを、第1のキャッシュ・データ出力バス272を介してI/F回路210に出力すると共に、アドレス0と共に保存する。
【0058】
第2のキャッシュ・メモリ回路280は、メモリ・リード・アドレス・データ・バス122に出力されたアドレス0とデータを保存する。
【0059】
I/F回路210は、第1のキャッシュ・データ出力バス272に出力されたデータをデータ・バス112に出力する。アドレス0のデータがデータ・バス112に出力され、CPU110により取り込まれることをもって、CPU110によるアドレス0のデータのリードが終了する。
【0060】
なお、CPU110は、アドレス0をCPU110に出力した後、非順次信号S1をロウにしている。
【0061】
先読みアドレス・カウンタ220は、非順次信号S1が次にハイになるまで、アドレス1、アドレス2、アドレス3、・・・のように連続した先読みアドレスを順次生成して切替回路250とアドレス比較回路240に出力する。なお、この間、非順次信号S1がロウであり、非順次アドレス保持回路230から出力される非順次アドレス信号S2はアドレス0のままである。
【0062】
先読みアドレス・カウンタ220により先読みアドレスとしてアドレス1、アドレス2、アドレス3を生成して出力しているとき、これらの先読みアドレスが非順次アドレス信号S2(アドレス0)の次の3個目までのアドレスであるため、アドレス比較回路240からのキャッシュ・アクセス信号S3はハイである。そのため、切替回路250は、先読みアドレスを選択回路260に出力する。また、非順次信号S1がロウであるので、選択回路260は、切替回路250からの先読みアドレスを第1のキャッシュ・メモリ回路270に出力する。これにより、アドレス1、アドレス2、アドレス3のデータがメモリ130から読み出され、第1のキャッシュ・メモリ回路270と第2のキャッシュ・メモリ回路280に保存される。
【0063】
一方、先読みアドレス・カウンタ220が先読みアドレスとしてアドレス4を生成して出力したとき、アドレス4がアドレス0からの4個目のアドレスであるため、アドレス比較回路240からのキャッシュ・アクセス信号S3はロウとなる。そのため、切替回路250は、アドレス4をキュー290に出力する。この場合、第1のキャッシュ・メモリ回路270がキュー290にアドレス4を出力したわけではないので、キュー290とメモリ・コントローラ120を介してメモリ130から読みだされたアドレス4のデータとアドレス4は、第2のキャッシュ・メモリ回路280にのみ保存される。
【0064】
すなわち、CPU110が一度非順次アドレスのリードを行った後、次の非順次リードまで、この非順次アドレスに続くアドレス(先読みアドレス)のデータが順にメモリ130から読み出される。また、この非順次アドレスの次の3個目までのアドレスである先読出アドレスについては、そのデータが第1のキャッシュ・メモリ回路270と第2のキャッシュ・メモリ回路280の両方に保存されるが、非順次アドレスの次の4個目からのアドレスである先読みアドレスについては、そのデータが第2のキャッシュ・メモリ回路280にのみ保存される。
【0065】
CPU110が非順次アドレスとなるアドレス0のリード後、順次アドレスとしてアドレス1以降のリードをするときに、順次アドレスがアドレス・バス111に出力されるとき該順次アドレスのデータが既に先読みによって第2のキャッシュ・メモリ回路280に保存されている。そのため、順次リードの場合において、該順次リードの開始時に、第2のキャッシュ・メモリ回路280は、該順次リードのリード・アドレスのデータをCPU110に出力できる状態にある。
【0066】
このように、一度の非順次リードがあった後に、非順次アドレスと非順次アドレスに続く3個のアドレス計4個の連続したアドレスのデータが第1のキャッシュ・メモリ回路270と第2のキャッシュ・メモリ回路280に保存される。該順次アドレスの次の4個目からのアドレスのデータが第2のキャッシュ・メモリ回路280にのみ保存されている。
【0067】
次に、アドレス0からアドレス3までのデータが第1のキャッシュ・メモリ回路270に保存されている状態で、CPU110が非順次アドレス0から連続したアドレスのデータをリードする場合について説明する。
【0068】
この場合、アドレス0のデータが第1のキャッシュ・メモリ回路270に保存されているため、第1のキャッシュ・メモリ回路270からアドレス0のデータが第1のキャッシュ・データ出力バス272を介してCPU110に出力される。
【0069】
その後、先読みアドレス・カウンタ220により先読みアドレスとして生成したアドレス1、アドレス2、アドレス3は、第1のキャッシュ・メモリ回路270に与えられる。第1のキャッシュ・メモリ回路270に保存されたこれらのアドレスおよび相対応するデータは、第1のキャッシュ・メモリ回路270からキャッシュ・リード・アドレス・データ・バス275を介して第2のキャッシュ・メモリ回路280に出力され、第2のキャッシュ・メモリ回路280に保存される。
【0070】
また、先読みアドレス・カウンタ220により生成したアドレス4以降の先読みアドレスは、キュー290に与えられる。キュー290とメモリ・コントローラ120を介してメモリ130から読み出されたこれらの先読みアドレスに対応するデータは、相対応するアドレスと共に第2のキャッシュ・メモリ回路280にのみ保存される。
【0071】
その後、CPU110が順次アドレスとしてアドレス1以降のデータをリードするときに、リード開始時に該リードのアドレスに対応するデータが既に先読みによって第2のキャッシュ・メモリ回路280に保存されている。そのため、第2のキャッシュ・メモリ回路280から該当データがCPU110に出力される。
【0072】
次いで、図3〜図5のタイミングチャートを参照して、本実施の形態のマイクロコンピュータ100において、CPU110がデータをリード際にかかるについて詳細に説明する。
【0073】
図3〜図5のタイミングチャートにおいて、A0〜A7はアドレスを示し、D0〜D7はそれぞれのアドレスに対応するデータを示す。Hitは、選択回路260が第1のキャッシュ・アドレス入力バス271に与えたアドレスのデータが第1のキャッシュ・メモリ回路270に保存されている場合を示し、Misは、選択回路260が第1のキャッシュ・アドレス入力バス271に与えたアドレスのデータが第1のキャッシュ・メモリ回路270に保存されていない場合を示す。
【0074】
図3は上述した具体例に用いられたメモリ130の動作タイミングチャートである。メモリ130はレイテンシ4のメモリである。
【0075】
図3に示すように、メモリ・アドレス・バス131にアドレスが与えられてから、クロックの4サイクル後に、該アドレスに対応するデータがメモリ・データ・バス132に出力される。すなわち、メモリ130からデータをリードする際に、メモリ・アドレス・バス131にアドレスを与える頻度と、データがメモリ・データ・バス132に出力される頻度は、最も速くても3サイクル毎に1回である。
【0076】
図4は、第1のキャッシュ・メモリ回路270に保存されているデータと保存されていないデータを非順次リードする際のそれぞれのタイミングチャートである。
【0077】
図4に示すように、第1のキャッシュ・メモリ回路270に非順次アドレスA0のデータD0が保存されている場合に、CPU110がアドレス・バス111にアドレスA0を出力したサイクルと同じサイクルに、アドレスA0が第1のキャッシュ・アドレス入力バス271に出力される。アドレスAOのデータD0が第1のキャッシュ・メモリ回路270に保存されているので、Hitとして次のサイクルでデータD0が第1のキャッシュ・メモリ回路270から、第1のキャッシュ・データ出力バス、データ・バス112を介してCPU110に出力される。
【0078】
また、第1のキャッシュ・メモリ回路270に非順次アドレスA5のデータD5が保存されていない場合に、CPU110がアドレス・バス111にアドレスA5を出力すると、第1のキャッシュ・メモリ回路270にデータD5が無い(Mis)の判定に2サイクルがかかり、メモリ130からデータD5をメモリ・データ・バス132に読み出すのに4サイクルかかり、データD5がメモリ・データ・バス132に出力されてからデータ・バス112に出力されるまで1サイクルかかるため、CPU110がアドレス・バス111にアドレスA5を与えてから7サイクル後にデータ・バス112にデータD5が出力される。
【0079】
CPU110が3サイクルに一度の頻度でリードする場合を例にする。また、第1のキャッシュ・メモリ回路270には、CPU110から出力された非順次アドレスおよび該非順次アドレスの次の3個目までのアドレスのデータが保存されていないとする。
【0080】
この場合、CPU110が非順次リードをするために非順次アドレスをアドレス・バス111に出力してから7サイクル後に、非順次アドレスのデータがデータ・バス112に出力される。
【0081】
この間、非順次アドレスキャッシュ・コントローラ200において先読出がなされ、CPU110が順次アドレスとして「非順次アドレス+1」をアドレス・バス111に出力するときに、「非順次アドレス+1」のデータが既に第2のキャッシュ・メモリ回路280に保存されているため、CPU110が「非順次アドレス+1」を出力したサイクルの次のサイクルに、データ・バス112に「非順次アドレス+1」のデータが出力される。
【0082】
すなわち、本具体例において、第1のキャッシュ・メモリ回路270にデータが保存されていない順次アドレスに対しても、CPU110が3サイクル毎にリードすることができる。
【0083】
次に、図5を参照して第1のキャッシュ・メモリ回路270には、CPU110から出力された非順次アドレスおよび該非順次アドレスの次の3個目までのアドレスのデータが保存されている場合を説明する。この非順次アドレスをアドレス0とする。
【0084】
図5に示すように、このとき、アドレスA0のデータD0が第1のキャッシュ・メモリ回路270にあるため、CPU110が1サイクル目にアドレス・バス111にアドレスA0を与えてから1サイクル後の2サイクル目にデータA0がデータ・バス112に出力される。
【0085】
そして、3サイクル目に先読みアドレス・カウンタ220が先読みアドレスとしてアドレスA1を先読みアドレス・バス221に出力することにより先読みが行われるが、アドレスA1のデータD1も第1のキャッシュ・メモリ回路270に保存されているため、1サイクル後の4サイクル目にアドレスA1とデータD1が第2のキャッシュ・メモリ回路280に保存される。
【0086】
そのため、4サイクル目にCPU111がアドレス・バス111に出力したアドレスA1に対して、1サイクル後の5サイクル目に、データD1が第2のキャッシュ・メモリ回路280からデータ・バス112に出力される。
【0087】
アドレスA2とA3のデータD2、D3も同じように、5サイクル目と6サイクル目でそれぞれ第2のキャッシュ・メモリ回路280に保存される。そして、CPU110が7サイクル目にアドレスA2をアドレス・バス111に出力した1サイクル後の8サイクル目にデータD2がデータ・バス112に出力され、CPU110が10サイクル目にアドレスA3をアドレス・バス111に出力した1サイクル後の11サイクル目にデータD3がデータ・バス112に出力される。
【0088】
キャッシュ・コントローラ200は、アドレスA1〜A3までは、CPU110がアドレスを与えてから1サイクル後に対応するデータをデータ・バス112に出力可能となったため、アドレスA4の先読みは、CPU110がアドレスA0をアドレス・バス111に与えてから5サイクル後の6サイクル目で可能となる。
【0089】
さらに、先読みアドレスとしてアドレスA4を第1のキャッシュ・アドレス入力バス271に与えてから、データA4が7サイクル後の13サイクル目にメモリ・データ・バス132に出力されるため、CPU110が1サイクル目にアドレスA0をアドレス・バス111に与えてから、アドレスA4のデータD4がCPU110に出力可能になるのは、12サイクル後になる。
【0090】
CPU110が3サイクル毎にリードをする場合、アドレスA4のデータD4が必要になるのは、アドレスA0がアドレス・バス111に与えられてから13サイクル後の14サイクル目である。そのため、CPU110がアドレスA4をアドレス・バス111に与えて1サイクル後に、第2のキャッシュ・メモリ回路280からデータD4をデータ・バス112に出力できる。
【0091】
また、先読みアドレスとしてのアドレスA5は、先読みアドレスA4が6サイクル目に先読みアドレス・バス221に出力されてから3サイクル後に先読みアドレス・バス221に出力できるため、9サイクル目においてアドレスA5は先読みアドレス・バス221に出力される。そして、7サイクル目後の16サイクル目にデータD5はメモリ130から読み出され、第2のキャッシュ・メモリ回路280に保存される。
【0092】
そのため、3サイクル毎にリードをするCPU110が13サイクル目にアドレスA5をアドレス・バス111に出力すると、第2のキャッシュ・メモリ回路280は1サイクル後にデータ5をデータ・バス112に出力できる。
【0093】
このように、CPU110がアドレス・バス111にリード・アドレスを出力した1サイクル後に、該アドレスのデータがデータ・バス112に出力される。
【0094】
このように、本実施の形態において、非順次アドレスから4個のアドレスのデータを第1のキャッシュ・メモリ回路270に保存することにより、CPU110は、短サイクルで命令の実行ができる。
【0095】
すなわち、非順次アドレスに続くn個のアドレスのデータが第1のキャッシュ・メモリ回路270に保存されている場合において、非順次リードに続く各順次リードのうちの(n+1)回目の順次リードの開始時に、そのリード・アドレスのデータが既に第2のキャッシュ・メモリ回路280に保存されていることを条件に定められているnを用い、非順次アドレスからN(N=n+1)個のアドレスのデータを第1のキャッシュ・メモリ回路270に保存するようにすれば、CPU110の性能が低下すること無く、リードをすることができる。
【0096】
本実施の形態の例において、個数N(N:整数)を下記の式(1)により求めることができる。
【0097】
N≧(D+MLC−CLC)/(CIV−HLC) (1)
但し,D:非順次リードが完了してから、次のリードが開始されるまでの時間
(クロックのサイクル数)
MLC:第1のキャッシュ・メモリと第2のキャッシュ・メモリのいずれにも
データが保存されていないリード・アドレスのリードが開始してから、
該リード・アドレスのデータをCPUに出力できるまでにかかる時間
(クロックのサイクル数)
CLC:1回のリードにかかる再短時間(クロックのサイクル数)
CIV:リードの頻度(クロックのサイクル数)
HLC:第1のキャッシュ・メモリにデータが保存されているリード・アドレス
のリードが開始してから、該リード・アドレスのデータをCPUに出力
できるまでにかかる時間(クロックのサイクル数)

図6に示すように、本実施の形態において、D、HLC、MLC、CIV、CLCはそれぞれ1、1、7、3、1である。そのため、式(1)からNは4以上の整数として算出される。
【0098】
すなわち、非順次アドレスからの4個以上のアドレスのデータを第1のキャッシュ・メモリ回路270に保存しておけば、CPU110は、アドレス・バス111にアドレスを出力してから最短のサイクル数CLCでデータ・バス112からデータを取り込むことができる。
【0099】
なお、非順次アドレスからの4個のアドレスのデータを第1のキャッシュ・メモリ回路270に保存するようにした場合に、CPU110が最短サイクル数CLCでデータをリードすることができると共に、第1のキャッシュ・メモリ回路270の容量が最も小さい。
【0100】
また、第2のキャッシュ・メモリ回路280も、式(1)で求められたN個の先読みアドレスのデータを保存できる容量があればよいので、第2のキャッシュ・メモリ回路280の容量も小さくできる。
【0101】
このように、マイクロコンピュータ100によれば、キャッシュ・メモリの容量を抑制しつつ、CPU110がデータをリードする際の性能低下を防ぐことができる。
【0102】
また、特許文献1に記載された技術は、命令のデータにしか適用できず、分岐(ジャンプ命令)が生じないデータアクセスには適用できなかった。本実施の形態では、CPU110がリード・アドレスを出力するときに、このリード・アドレスが非順次アドレスか否かを示す信号を出力しているので、命令のデータおよび命令のデータ以外のデータにも本発明を適用できる。
【0103】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【0104】
例えば、上述した実施の形態において、式(1)に求められたNを用いたが、このNとして2を用いた場合には非順次アドレスの次の順次リードを速くすることができ、3を用いた場合には非順次アドレスの次の順次リード、およびさらに次の順次リードを速くすることができる。すなわち、Nとして2以上(n:1以上)であれば、本発明の効果を発揮することができる。
【図面の簡単な説明】
【0105】
【図1】本発明の実施の形態にかかるマイクロコンピュータを示す図である。
【図2】図1に示すマイクロコンピュータにおけるキャッシュ・メモリ回路の構造を示す図である。
【図3】図1に示すマイクロコンピュータにおけるメモリの動作タイミングチャートである。
【図4】図1に示すマイクロコンピュータにおけるCPUのリードのタイミングチャートである(その1)
【図5】図1に示すマイクロコンピュータにおけるCPUのリードのタイミングチャートである(その2)
【図6】従来の技術を説明するための図である。
【符号の説明】
【0106】
100 マイクロコンピュータ 110 CPU
111 アドレス・バス 112 データ・バス
120 メモリ・コントローラ 121 メモリ・リード・アドレス・バス
122 メモリ・リード・アドレス・データ・バス 130 メモリ
131 メモリ・アドレス・バス 132 メモリ・データ・バス
200 キャッシュ・コントローラ 210 I/F回路
211 リード・アドレス・バス 220 先読みアドレス・カウンタ
221 先読みアドレス・バス 230 非順次アドレス保持回路
240 アドレス比較回路 250 切替回路
251 先読みキュー・セット・アドレス・バス
253 先読みキャッシュ・アドレス・バス 260 選択回路
270 第1のキャッシュ・メモリ回路
271 第1のキャッシュ・アドレス入力バス
272 第1のキャッシュ・データ出力バス
273 キャッシュ・アドレス出力バス
275 キャッシュ・リード・アドレス・データ・バス
280 第2のキャッシュ・メモリ回路
281 第2のキャッシュ・アドレス入力バス
282 第2のキャッシュ・データ出力バス
290 キュー 300 エントリ
301 アドレス 302 データ
303 有効ビット。

【特許請求の範囲】
【請求項1】
前回のリード・アドレスと連続しない非順次アドレスへのリードである非順次リードがあったときに、第1のキャッシュ・メモリ回路により該非順次アドレス、および該非順次アドレスに続くn個(n:1以上の整数)のアドレスのデータを順次キャッシングすると共に、キャッシングした前記n個のアドレスのデータを第2のキャッシュンメモリ回路に保存する工程と、
その後、次の非順次リードがなされるまで、前記第1のキャッシュ・メモリ回路を介さずに、前記n個のアドレスの末尾のアドレスに続くアドレスのデータをメモリから前記第2のキャッシュ・メモリ回路に順次読み出して保存する工程と、
前記非順次リードに続く各順次リードに対して、前記第2のキャッシュ・メモリ回路から該順次リードのリード・アドレスのデータを出力する工程とを有することを特徴とするキャッシュ制御方法。
【請求項2】
前記個数nは、前記非順次アドレスに続くn個のアドレスのデータが第1のキャッシュ・メモリ回路に保存されている場合において、前記非順次リードに続く各順次リードのうちの(n+1)回の順次リードの開始時に、そのリード・アドレスのデータが既に第2のキャッシュ・メモリ回路に保存されていることを条件に定められていることを特徴とする請求項1に記載のキャッシュ制御方法。
【請求項3】
前記個数nは、前記条件を満たすように定められた整数のうちの最も小さい整数であることを特徴とする請求項2に記載のキャッシュ制御方法。
【請求項4】
CPU(Certral Processing Unit)がリードを行う際にリード・アドレスと共に出力する信号であって、該リードが非順次リードであるか否かを示す非順次リード信号に基づいて、非順次リードか否かの判定を行う工程を有することを特徴とする請求項1から3のいずれか1項に記載のキャッシュ制御方法。
【請求項5】
第1のキャッシュ・メモリ回路と、
第2のキャッシュ・メモリ回路と、
前回のリード・アドレスと連続しない非順次アドレスへのリードである非順次リードがあったときに、前記第1のキャッシュ・メモリ回路に該非順次アドレス、および該非順次アドレスに続くn個(n:1以上の整数)のアドレスのデータを順次キャッシングさせると共に、キャッシングした前記n個のアドレスのデータを前記第2のキャッシュンメモリ回路に保存させ、その後、次の非順次リードがなされるまで、前記第1のキャッシュ・メモリ回路を介さずに、前記n個のアドレスの末尾のアドレスに続くアドレスのデータをメモリから読み出して前記第2のキャッシュ・メモリ回路に保存させる先読出処理部とを備え、
前記第2のキャッシュ・メモリ回路は、前記非順次リードに続く各順次リードに対して、該順次リードのリード・アドレスのデータを出力することを特徴とするキャッシュ装置。
【請求項6】
リード・アドレスを受信したときに該リード・アドレスのデータを前記メモリから読み出すキューをさらに備え、
前記先読出処理部は、
非順次リードがあったときに、該非順次リードのリード・アドレスである非順次アドレスに続くアドレスを先読アドレスとして生成して保持し、その後、次の非順次リードがなされるまで、保持中の先読みアドレスに続くアドレスを次の先読アドレスとして生成して保持すると共に、生成した先読アドレスを順次出力する先読アドレス・カウンタと、
非順次リードがあったときに、該非順次リードのリード・アドレスである非順次アドレスを保持すると共に、次の非順次リードがなされるまで、保持中の非順次アドレスを出力する非順次アドレス保持回路と、
前記先読アドレス・カウンタから出力された先読アドレスと、前記非順次アドレス保持回路から出力された非順次アドレスとを比較し、前記先読アドレスが前記非順次アドレスに続く前記n個目までのアドレスである場合に、前記第1のキャッシュ・メモリ回路にアクセスすることを示すキャッシュ・アクセス信号を出力する一方、前記先読アドレスが前記非順次アドレスに続く前記n個目以降のアドレスである場合に、前記第1のキャッシュ・メモリ回路にアクセスしないことを示す非キャッシュ・アクセス信号を出力する比較回路と、
該比較回路から前記キャッシュ・アクセス信号を受信した際に、前記先読アドレス・カウンタから出力された先読アドレスを、前記第1のキャッシュ・メモリ回路に出力するアドレスを選択する選択回路に出力する一方、前記非キャッシュ・アクセス信号を受信した際に、前記先読アドレス・カウンタから出力された先読アドレスを前記キューに出力する切替回路と、
前記選択回路であって、非順次リードがあったときに、該非順次リードのリード・アドレスである非順次アドレスを前記第1のキャッシュ・メモリ回路に出力する一方、その後、前記切替回路から受信した先読アドレスを前記第1のキャッシュ・メモリ回路に出力する選択回路とを有し、
前記第1のキャッシュ・メモリ回路は、前記選択回路から出力があったときに、該選択回路から出力された前記非順次アドレスまたは前記先読アドレスのデータをキャッシングすると共に、前記非順次アドレスに対してはそのデータを出力し、
前記第2のキャッシュ・メモリ回路は、前記第1のキャッシュ・メモリ回路のキャッシング動作および前記キューの読出動作に応じて、前記第1のキャッシュ・メモリ回路がキャッシングしたデータと、前記キューが前記切替回路から受信した先読アドレスに応じて前記メモリから読み出した該先読アドレスのデータを保存することを特徴とする請求項5に記載のキャッシュ装置。
【請求項7】
前記個数nは、前記非順次アドレスに続くn個のアドレスのデータが第1のキャッシュ・メモリ回路に保存されている場合において、前記非順次リードに続く各順次リードのうちの(n+1)回目の順次リードの開始時に、そのリード・アドレスのデータが既に第2のキャッシュ・メモリ回路に保存されていることを条件に定められていることを特徴とする請求項5または6に記載のキャッシュ装置。
【請求項8】
前記個数nは、前記条件を満たすように定められた整数のうちの最も小さい整数であることを特徴とする請求項7に記載のキャッシュ装置。
【請求項9】
先読出処理部は、CPU(Certral Processing Unit)がリードを行う際にリード・アドレスと共に出力する信号であって、該リードが非順次リードであるか否かを示す非順次リード信号に基づいて、非順次リードか否かの判定を行うことを特徴とする請求項5から8までのいずれか1項に記載のキャッシュ装置。
【請求項10】
CPU(Certral Processing Unit)と、
メモリと、
CPUとメモリ間に接続され、請求項5から9のいずれか1項に記載のキャッシュ装置とを備えたことを特徴とするマイクロコンピュータ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate