(57)【要約】【課題】  プロセッサがメモリに格納されたデータを取得するときの遅延を低減し、且つ面積及び消費電力の増大を抑制したメモリコントローラを提供する。【解決手段】  プロセッサ１００からのアクセスに基づき、メモリ２００の動作を制御するメモリコントローラ１０であって、プロセッサ１００がアクセスするデータのアドレスが非連続である非連続アクセスの履歴情報を格納する履歴格納回路３２と、履歴情報に基づき、非連続アクセスを予測する非連続アクセス予測回路３１と、非連続アクセスの予測に基づいて、メモリ２００から読み出すデータの読み出しＡＷアドレスＡ９を出力するアドレス出力回路４０と、読み出しＡＷアドレスＡ９に基づきメモリ２００から読み出されたデータＤ９を格納するデータ格納回路５１とを備える。【選択図】      図１
2006215799.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサからのアクセスに基づき、メモリの動作を制御するメモリコントローラであって、
前記プロセッサがアクセスするデータのアドレスが非連続である非連続アクセスの履歴情報を格納する履歴格納回路と、
前記履歴情報に基づき、前記非連続アクセスを予測する非連続アクセス予測回路と、
前記非連続アクセスの予測に基づいて、前記メモリから読み出すデータの読み出しアドレスを出力するアドレス出力回路と、
前記読み出しアドレスに基づき前記メモリから読み出されたデータを格納するデータ格納回路
とを備えることを特徴とするメモリコントローラ。
【請求項２】
前記プロセッサから出力されたアドレスに基づき、要求アドレスを生成する連続アドレス生成回路と、
前記データ格納回路に格納されたデータの先頭アドレスと前記要求アドレスとを比較し、前期先頭アドレスと前記要求アドレスが一致しない場合に不一致信号を出力する比較回路と、
前記非連続アクセスを予測した場合に前記非連続アクセス予測回路が出力する予測信号が入力され、且つ前記不一致信号が入力されない場合に、前記メモリに前記要求アドレスを出力するアドレス選択回路
とを更に備えることを特徴とする請求項１に記載のメモリコントローラ。  
【請求項３】
前記不一致信号が入力された場合に、前記非連続アクセスの履歴情報を作成する非連続アクセス情報生成回路を更に備えることを特徴とする請求項２に記載のメモリコントローラ。  
【請求項４】
前記データ格納回路に格納されるデータ数が、前記メモリの読み出しレイテンシの値以上であることを特徴とする請求項１に記載のメモリコントローラ。  
【請求項５】
前記データ格納回路を複数備えることを特徴とする請求項１に記載のメモリコントローラ。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリの動作を制御するメモリコントローラに関する。
【背景技術】
【０００２】
メモリコントローラによりメモリの動作を制御して、メモリに格納されたデータにプロセッサがアクセスするときのスループットを小さくすることができる。ここで「スループット」とは、プロセッサがアクセス要求をしてから、プロセッサがデータを取得するまでの遅延である。したがって、スループットは、プロセッサがアクセス要求してから、メモリが動作をするまでのシステムのクロック数（レイテンシ）に依存する。以下において、メモリの読み出し動作に必要なレイテンシを「読み出しレイテンシ」という。
【０００３】
スループットを小さくするために、例えば以下のような方法がある。メモリの読み出しレイテンシが４であり、且つプロセッサとメモリ間のデータ転送を制御するメモリコントローラとメモリ間のデータバスのデータ幅が４データを転送できる幅であるとする。以下において、データバスのデータ幅に応じて一度にデータバスが転送できるデータに対応するアドレスを、「アドレス幅」という。つまり、データバスのデータ幅が４データである場合は、アドレス幅は４である。又、データバスのデータ幅に対応して、メモリコントローラはメモリから読み出したデータを、４データ格納できるとする。プロセッサがメモリコントローラに格納されたデータを読み出している間に、メモリコントローラは、次にプロセッサがアクセスすると予測される４データをメモリから読み出して格納する。ここで、メモリコントローラがメモリから読み出すデータは、その時点でプロセッサがメモリコントローラから読み出しているデータとアドレスが連続するデータである。したがって、スループットを１にするためには、以下の条件を満足する必要がある。
【０００４】
（１）プロセッサは、メモリコントローラに格納されたアドレスが連続する４データをすべて読み出す。
【０００５】
（２）プロセッサが次にアクセスするデータは、直前にプロセッサがメモリコントローラから読み出したデータとアドレスが連続する４データである。
【０００６】
しかし、例えばプロセッサがメモリコントローラに格納されたデータを読み出している途中で、プロセッサが非連続なアドレスのデータにアクセス（以下において、「非連続アクセス」という。）する場合がある。非連続アクセスの場合は、メモリコントローラに格納されているデータは役に立たない。そのため、アクセスされた時点から４レイテンシを要してメモリからデータを読み出す必要がある。したがって、スループットは増大する。
【０００７】
スループットを小さくする別の方法として、プロセッサとメモリの間にキャッシュメモリを設ける方法がある。しかし、消費電力や面積の増大等の問題が発生する。
【０００８】
一方、プロセッサがすべてのクロックにおいて命令を発行しないと、実行時間に無駄が生じる。プロセッサが命令を発行する頻度を示す指標に「インストラクションズ・パー・サイクル（ＩＰＣ）」がある。分岐命令があると、非連続アクセスになる場合が多い。その結果、ＩＰＣが低下する。対策として、プロセッサが次にアクセスするアドレスを予測した情報を格納するメモリ等をプロセッサ内に設ける方法がある（例えば、特許文献１参照。）。しかし、アドレスを予測する精度を高めるためには、プロセッサ内に大きなメモリを設ける必要がある。そのため、プロセッサの消費電力や面積が増大する。
【特許文献１】特開平１１−２３２１７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、プロセッサがメモリに格納されたデータを取得するときの遅延を低減し、且つ面積及び消費電力の増大を抑制したメモリコントローラを提供する。
【課題を解決するための手段】
【００１０】
本発明の特徴は、プロセッサからのアクセスに基づき、メモリの動作を制御するメモリコントローラであって、（イ）プロセッサがアクセスするデータのアドレスが非連続である非連続アクセスの履歴情報を格納する履歴格納回路と、（ロ）履歴情報に基づき、非連続アクセスを予測する非連続アクセス予測回路と、（ハ）非連続アクセスの予測に基づいて、メモリから読み出すデータの読み出しアドレスを出力するアドレス出力回路と、（ニ）読み出しアドレスに基づきメモリから読み出されたデータを格納するデータ格納回路とを備えるメモリコントローラであることを要旨とする。
【発明の効果】
【００１１】
本発明によれば、プロセッサがメモリに格納されたデータを取得するときの遅延を低減し、且つ面積及び消費電力の増大を抑制したメモリコントローラを提供することができる。
【発明を実施するための最良の形態】
【００１２】
次に、図面を参照して、本発明の第１又は第２の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す第１又は第２の実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１３】
（第１の実施の形態）
本発明の第１の実施の形態に係るメモリコントローラは、図１に示すように、プロセッサ１００からのアクセスに基づき、メモリ２００の動作を制御するメモリコントローラ１０であって、プロセッサ１００がアクセスするデータのアドレスが非連続である非連続アクセスの履歴情報を格納する履歴格納回路３２と、履歴情報に基づき、非連続アクセスを予測する非連続アクセス予測回路３１と、非連続アクセスの予測に基づいて、メモリ２００から読み出すデータの読み出しＡＷアドレスＡ９を出力するアドレス出力回路４０と、読み出しＡＷアドレスＡ９に基づきメモリ２００から読み出されたデータＤ９を格納するデータ格納回路５１とを備える。
【００１４】
図１に示すように、非連続アクセス予測回路３１、履歴格納回路３２及び非連続アクセスの履歴情報を作成する非連続アクセス情報生成回路３３は、非連続アドレス出力回路３０に含まれる。又、メモリコントローラ１０は、プロセッサ１００から出力されたアクセスアドレスＡ１が入力される連続アドレス生成回路２０を備える。更に、メモリコントローラ１０は、データ格納回路５１及びデータ格納回路５１に格納されたデータを選択するデータ選択回路５２を含むデータ出力回路５０を備える。又、アドレス出力回路４０は、比較回路４１及びアドレス選択回路４２を備える。
【００１５】
メモリコントローラ１０は、バス１１０を介してプロセッサ１００に接続される。又、メモリコントローラ１０にメモリ２００が接続される。メモリ２００の読み出しレイテンシはｎとする（ｎ：２以上の整数）。
【００１６】
連続アドレス生成回路２０に、非連続アドレス出力回路３０、アドレス出力回路４０及びバス１１０が接続する。アドレス出力回路４０に、非連続アドレス出力回路３０及びメモリ２００が接続する。更に、データ出力回路５０に、非連続アドレス出力回路３０、メモリ２００及びバス１１０が接続する。
【００１７】
メモリ２００から読み出されたデータＤ９は、データバス２１０を介してデータ格納回路５１に転送される。データ格納回路５１は、データバス２１０のデータ幅に相当する数のデータを格納する。例えば、データバス２１０のデータ幅が４データの場合には、データ格納回路５１は４データを格納する。したがって、データバス２１０のアドレス幅Ｗは４である。データバス２１０のデータ幅は、メモリ２００の読み出しレイテンシｎ以上に設定される。そのため、例えばメモリ２００の読み出しレイテンシｎ＝４の場合は、データ格納回路５１に格納されるデータが４データ以上に設定される。つまり、データＤ９は、4データを含む。
【００１８】
連続アドレス生成回路２０は、プロセッサ１００から入力されたアクセスアドレスＡ１に基づき、プロセッサ１００からアクセスされると予測されるアドレスを作成する。「アクセスアドレス」は、プロセッサ１００がアクセスしているデータのアドレスである。連続アドレス生成回路２０は、データ格納回路５１に格納されたデータとアドレスが連続するデータにプロセッサ１００がアクセスすると仮定する。そして、その仮定に基づいて、連続アドレス生成回路２０はプロセッサ１００がアクセスするアドレスを予測する。
【００１９】
プロセッサ１００がデータ格納回路５１に格納されたデータを順次読み出す間に、メモリ２００の読み出し動作が行われる。データ格納回路５１に格納されるデータの数はメモリ２００の読み出しレイテンシの値以上である。そのため、プロセッサ１００がデータ格納回路５１に格納されたデータをすべて読み出した後に、メモリ２００から読み出されたデータＤ９がデータ格納回路５１に格納される。アドレス幅Ｗが４である場合は、データ格納回路５１に格納されるデータは４データである。したがって、連続アドレス生成回路２０は、アクセスアドレスＡ１に基づき４アクセス後にプロセッサ１００が要求するデータのアドレスを予測して、アドレスを作成する。つまり、連続アドレス生成回路２０が作成するアドレスは、アクセスアドレスＡ１にアドレス幅Ｗを加えて作成される。
【００２０】
例えばデータ格納回路５１に格納されるデータが４データである場合は、プロセッサ１００がアクセスアドレスを４回出力する毎に、４データ分のアドレスが作成される。つまり、連続アドレス生成回路２０は、アドレス幅Ｗ単位で数えたアドレス毎に、データ格納回路５１に格納される４データ分のアドレスを作成する。以下において、アドレス幅Ｗ単位で数えたアドレスを、「ＡＷアドレス」という。例えばアドレス幅Ｗが４である場合、ＡＷアドレスは、アドレスｍ、アドレスｍ＋４、・・・・・、となる。（ｍ：０以上の整数。）。ここで、説明をわかりやすくするため、メモリ２００に格納されているデータのアドレスは、１ずつ増えていくとする。メモリ２００からデータを読み出すために予測されるＡＷアドレスを、以下において「格納ＡＷアドレスＡ２」という。
【００２１】
格納ＡＷアドレスＡ２をメモリ２００に出力することにより、アドレス幅Ｗに相当する数のデータがメモリ２００から読み出される。アドレス幅Ｗが４である場合は、格納ＡＷアドレスＡ２＝ｍをメモリ２００に出力することにより、アドレスｍ、アドレスｍ＋１、アドレスｍ＋２及びアドレスｍ＋３のデータがメモリ２００から読み出される。
【００２２】
又、連続アドレス生成回路２０は、プロセッサから出力されたアクセスアドレスＡ１に基づき、ＡＷアドレスである要求ＡＷアドレスＡ１０を生成する。例えば、アドレス幅Ｗが４である場合は、アクセスアドレスＡ１がｍ、ｍ＋１、ｍ＋２又はｍ＋３であるとき、要求ＡＷアドレスＡ１０＝ｍである。格納ＡＷアドレスＡ２は、要求ＡＷアドレスＡ１０にアドレスが連続するＡＷアドレスである。つまり、格納ＡＷアドレスＡ２＝要求ＡＷアドレスＡ１０＋Ｗである。連続アドレス生成回路２０は、要求ＡＷアドレスＡ１０及び格納ＡＷアドレスＡ２をアドレス出力回路４０に出力する。又、連続アドレス生成回路２０は、要求ＡＷアドレスＡ１０を非連続アクセス予測回路３１に出力する。
【００２３】
データ出力回路５０は、プロセッサ１００から入力されたアクセスアドレスＡ１に基づき、プロセッサ１００が要求するデータをプロセッサ１００に出力する。具体的には、データ選択回路５２が、データ格納回路５１に格納されたデータのうちから、アクセスアドレスＡ１に基づきプロセッサ１００が要求するデータＤ１を選択する。そして、データ選択回路５２は、選択されたデータＤ１をプロセッサ１００に出力する。又、データ出力回路５０は、非連続アクセス予測回路３１に先頭ＡＷアドレスＡ０を出力する。「先頭ＡＷアドレス」とは、データ格納回路５１に格納されている先頭のデータのＡＷアドレスである。又、データ出力回路５０は、スループットを改善するために、メモリ２００から読み出されたデータをデータ格納回路５１に格納せずに、プロセッサ１００に出力してもよい。例えば、不一致信号ＳＭが入力された場合には、メモリ２００から読み出されたデータをプロセッサ１００に直接出力するようにデータ出力回路５０を構成することができる。後述するように、不一致信号ＳＭは、非連続アクセスが発生した場合に比較回路４１から出力される。
【００２４】
履歴格納回路３２は、履歴情報として複数の非連続アドレス組を格納する。非連続アドレス組は、第１アドレス及び第２アドレスからなる。非連続アドレス組は、不一致信号ＳＭが入力された場合に、非連続アクセス情報生成回路３３により作成される。作成される非連続アドレス組の第１アドレスは、不一致信号ＳＭが入力された時点での先頭ＡＷアドレスＡ０である。一方、作成される非連続アドレス組の第２アドレスは、非連続アクセスが発生したときの要求ＡＷアドレスＡ１０である。作成された非連続アドレス組は、履歴格納回路３２に格納される。
【００２５】
又、非連続アクセス予測回路３１は、先頭ＡＷアドレスＡ０と履歴格納回路３２に格納されている複数の第１アドレスとを比較する。先頭ＡＷアドレスＡ０と履歴格納回路３２に格納されている複数の第１アドレスのいずれかが一致した場合は、その時点でデータ格納回路５１に格納されているデータにおいて、以前に非連続アクセスが発生した場合である。そのため、先頭ＡＷアドレスＡ０と履歴格納回路３２に格納されている複数の第１アドレスのいずれかが一致した場合は、非連続アクセス予測回路３１は、予測信号ＳＥ及び非連続予測ＡＷアドレスＡ３をアドレス選択回路４２に出力する。非連続予測ＡＷアドレスＡ３は、第１アドレスが先頭ＡＷアドレスＡ０と一致する非連続アドレス組の第２アドレスである。
【００２６】
比較回路４１に、要求ＡＷアドレスＡ１０と先頭ＡＷアドレスＡ０が入力される。比較回路４１は、要求ＡＷアドレスＡ１０と先頭ＡＷアドレスＡ０を比較する。そして、比較回路４１は、要求ＡＷアドレスＡ１０と格納ＡＷアドレスＡ０が一致しない場合に、不一致信号ＳＭを非連続アクセス情報生成回路３３及びデータ出力回路５０に出力する。又、不一致信号ＳＭは、アドレス選択回路４２に入力される。
【００２７】
アドレス選択回路４２は、予測信号ＳＥの入力の有無及び不一致信号ＳＭの入力の有無等に基づき、以下のようにメモリ２００に出力する読み出しＡＷアドレスＡ９を選択する。
【００２８】
（１）予測信号ＳＥが入力されず、且つ不一致信号ＳＭが入力されない場合は、プロセッサ１００がアクセスしているデータが、データ格納回路５１に格納されているデータに含まれている。つまり、非連続アクセスが発生していない。その場合、アドレス選択回路４２は、格納ＡＷアドレスＡ２を、読み出しＡＷアドレスＡ９としてメモリ２００に出力する。
【００２９】
（２）予測信号ＳＥが入力されず、且つ不一致信号ＳＭが入力された場合は、履歴格納回路３２に格納された非連続アドレス組と一致しない非連続アクセスが発生した場合である。その場合、プロセッサ１００がアクセスしているデータは、データ格納回路５１に格納されていない。そのため、アドレス選択回路４２は、要求ＡＷアドレスＡ１０を、読み出しＡＷアドレスＡ９としてメモリ２００に出力する。そして、読み出しＡＷアドレスＡ９に基づき、メモリ２００からデータＤ９が読み出される。データＤ９が読み出されるまで、プロセッサ１００は待ち状態になる。その結果、スループットはメモリ２００の読み出しレイテンシｎに依存する。不一致信号ＳＭが入力された場合、データ出力回路５０は、データＤ９をデータ格納装置に格納せずに、プロセッサ１００に出力することができる。その結果、プロセッサ１００の待ち時間を短縮することができる。
【００３０】
（３）非連続アクセス予測回路３１から、予測信号ＳＥがアドレス選択回路４２に出力された場合は、アドレス選択回路４２は、非連続アクセス予測回路３１から出力される非連続予測ＡＷアドレスＡ３を、読み出しＡＷアドレスＡ９としてメモリ２００に出力する。したがって、次にデータ格納回路５１に格納されるデータは、以前に非連続アクセスが発生したときにプロセッサ１００がアクセスしたデータを含む。データ格納回路５１に格納されたデータのうち、非連続アクセスが発生した時点までにプロセッサ１００にアクセスされてないデータは、非連続アクセス後にプロセッサ１００が要求するデータではない。そのため、プロセッサ１００は、要求するデータがデータ格納回路５１にデータが格納されるまで待ち状態になる。しかし、非連続アクセスが発生する前に非連続アクセスが発生することを予測し、非連続予測ＡＷアドレスＡ３に基づきメモリ２００からデータを読み出す動作が開始されている。つまり、以前発生したのと同じ非連続アクセスが発生した場合は、非連続アクセスが発生した時点で、プロセッサ１００が要求するデータのメモリ２００からの読み出しが開始されている。その結果、非連続アクセスが発生した後にプロセッサ１００が要求するデータをメモリ２００から読み出す場合よりも早く、プロセッサ１００が要求するデータがメモリ２００から読み出される。即ち、図１に示すメモリコントローラ１０により、スループットが向上する。
【００３１】
以下に、図２〜図4に示すタイミングチャートの例を用いて、図1に示したメモリコントローラ１０の動作を説明する。以下の説明において、メモリ２００の読み出しレイテンシを４とする。又、メモリ２００のアドレスは、１、２、・・・・・であるとする。そして、アドレスｍのデータをＤ（ｍ）として示す。更に、データバス２１０のデータ幅を４データ分、データ格納回路５１に格納されるデータの数を４データとする。
【００３２】
＜非連続アクセスが発生しない場合＞
図２に示すタイミングチャートは、非連続アクセスが発生しない例である。又、履歴格納回路３２には、非連続アドレス組が格納されていないとする。
【００３３】
図２に示すサイクルｃ１において、アクセスアドレスＡ１＝１がプロセッサ１００からメモリコントローラ１０に出力される。データ格納回路５１にデータＤ（１）、Ｄ（２）、Ｄ（３）及びＤ（４）が格納されている。そのため、サイクルｃ２において、データ出力回路５０からデータＤ（１）がプロセッサ１００に出力される。
【００３４】
又、サイクルｃ１において、アクセスアドレスＡ１＝１であるため、要求ＡＷアドレスＡ１０＝１、格納ＡＷアドレスＡ２＝５である。一方、データ格納回路５１に、データＤ（１）〜Ｄ（４）が格納されているため、先頭ＡＷアドレスＡ０＝１である。そのため、不一致信号ＳＭは出力されない。又、履歴格納回路３２に非連続アドレス組が格納されていないため、予測信号ＳＥは出力されない。その結果、格納ＡＷアドレスＡ２が読み出しＡＷアドレスＡ９として、メモリ２００に出力される。
【００３５】
サイクルｃ２〜ｃ４では、アクセスアドレスＡ１＝２〜４である。データＤ（２）〜Ｄ（４）はデータ格納回路５１に格納されているため、不一致信号ＳＭは出力されない。データＤ（２）〜Ｄ（４）は、サイクルｃ３〜ｃ５において、それぞれプロセッサ１００に出力される。
【００３６】
サイクルｃ１において読み出しＡＷアドレスＡ９がメモリ２００に出力されたため、サイクルｃ５において、データＤ９がメモリ２００から読み出される。読み出しＡＷアドレスＡ９＝５であるため、データＤ９は、データＤ（５）〜Ｄ（８）である。そして、データＤ（５）〜Ｄ（８）がデータ格納回路５１に格納される。サイクルｃ５におけるアクセスアドレスＡ１＝５であるため、サイクルｃ６においてデータＤ（５）がデータ格納回路５１からプロセッサ１００に出力される。又、読み出しＡＷアドレスＡ９として、要求ＡＷアドレスＡ２＝９がアドレス出力回路４０からメモリ２００に出力される。その結果、サイクルｃ９において、データＤ（９）〜Ｄ（１２）がメモリ２００から読み出される。一方、サイクルｃ６〜ｃ８におけるアクセスアドレスＡ１＝６〜８に応じて、データＤ（６）〜Ｄ（８）がプロセッサ１００に出力される。
【００３７】
サイクルｃ９以降においても、同様にしてアドレスが連続するデータがデータ格納回路５１に格納される。そして、データ格納回路５１からプロセッサ１００にデータが出力される。その結果、スループット＝１が維持される。
【００３８】
＜非連続アクセスが発生する場合１＞
図３に示すタイミングチャートは、非連続アクセスが発生する例である。又、履歴格納回路３２には、非連続アドレス組が格納されていないとする。
【００３９】
図３に示すサイクルｃ１〜ｃ４において、アクセスアドレスＡ１＝１〜４である。そのため、サイクルｃ１〜ｃ４におけるメモリコントローラの動作は、図２のタイミングチャートを用いて説明した場合と同様である。即ち、プロセッサ１００から出力されるアクセスアドレスＡ１に応じて、メモリコントローラ１０からデータＤ１がプロセッサ１００に出力される。
【００４０】
サイクルｃ１において読み出しＡＷアドレスＡ９＝５がメモリ２００に出力される。そのため、サイクルｃ５において、データＤ９がメモリ２００から読み出される。そして、データＤ（５）〜Ｄ（８）がデータ格納回路５１に格納される。サイクルｃ５におけるアクセスアドレスＡ１＝５であるため、サイクルｃ６においてデータＤ（５）がプロセッサ１００に出力される。更に、サイクルｃ６におけるアクセスアドレスＡ１＝６に応じて、データＤ（６）がプロセッサ１００に出力される。
【００４１】
サイクルｃ７において、アクセスアドレスＡ１＝１５である。即ち、非連続アクセスが発生する。そのため、要求ＡＷアドレスＡ１０＝１３になり、先頭ＡＷアドレスＡ０＝５と一致しない。データ格納回路５１にはデータＤ（１５）は格納されていないため、プロセッサはデータ待ちの状態になる。
【００４２】
要求ＡＷアドレスＡ１０と先頭ＡＷアドレスＡ０と一致しないため、比較回路４１は不一致信号ＳＭをデータ出力回路５０、非連続アクセス情報生成回路３３及びアドレス選択回路４２に出力する。  
一方、履歴格納回路３２に非連続アドレス組が格納されていないため、予測信号ＳＥは出力されない。そのため、アドレス選択回路４２は、要求ＡＷアドレスＡ１０を、読み出しＡＷアドレスＡ９としてメモリ２００に出力する。その結果、サイクルｃ１１において、データＤ９がメモリ２００から読み出される。そして、データＤ（１３）〜Ｄ（１６）がデータ格納回路５１に格納される。図３に示すように、サイクルｃ１１において、プロセッサ１００にデータＤ（１５）が出力される。又、データ出力回路５０は、データＤ９をデータ格納装置に格納せずに、プロセッサ１００に出力することができる。その結果、プロセッサ１００の待ち時間を短縮することができる。
【００４３】
一方、不一致信号ＳＭが入力された非連続アクセス情報生成回路３３は、非連続アドレス組を作成する。作成される非連続アドレス組の第１アドレスは、サイクルｃ７における先頭ＡＷアドレスＡ０＝５である。一方、作成される非連続アドレス組の第２アドレスは、サイクルｃ７における要求ＡＷアドレスＡ１０＝１３である。作成された非連続アドレス組は、履歴格納回路３２に格納される。
【００４４】
＜非連続アクセスが発生する場合２＞
図４に示すタイミングチャートは、非連続アクセスが発生する例である。又、履歴格納回路３２には、図４を説明した際に生成された非連続アドレス組が格納されているとする。つまり、第１アドレスが５、第２アドレスが１３である非連続アドレス組が履歴格納回路３２に格納されている。
【００４５】
図４に示すサイクルｃ１〜ｃ４において、アクセスアドレスＡ１＝１〜４である。そのため、サイクルｃ１〜ｃ４におけるメモリコントローラの動作は、図２のタイミングチャートを用いて説明した場合と同様である。即ち、プロセッサ１００から出力されるアクセスアドレスＡ１に応じて、メモリコントローラ１０からデータＤ１がプロセッサ１００に出力される。
【００４６】
サイクルｃ１において読み出しＡＷアドレスＡ９＝５がメモリ２００に出力される。そのため、サイクルｃ５において、データＤ９がメモリ２００から読み出される。そして、データＤ（５）〜Ｄ（８）がデータ格納回路５１に格納される。サイクルｃ５におけるアクセスアドレスＡ１＝５であるため、サイクルｃ６においてデータＤ（５）がプロセッサ１００に出力される。
【００４７】
サイクルｃ５において、先頭ＡＷアドレスＡ０＝５となる。そのため、履歴格納回路３２に格納されている第１アドレス＝５、第２アドレス＝１３の非連続アドレス組の第１アドレスと一致する。その結果、非連続アクセス予測回路３１が、予測信号ＳＥ及び非連続予測ＡＷアドレスＡ３をアドレス選択回路４２に出力する。非連続予測ＡＷアドレスＡ３＝１３である。
【００４８】
予測信号ＳＥが入力されたアドレス選択回路４２は、非連続予測ＡＷアドレスＡ３を、読み出しＡＷアドレスＡ９としてメモリ２００に出力する。その結果、サイクルｃ５から、読み出しＡＷアドレスＡ９＝１３に基づきメモリ２００の読み出し動作が開始される。次いで、サイクルｃ６におけるアクセスアドレスＡ１＝６に応じて、データＤ（６）がプロセッサ１００に出力される。
【００４９】
サイクルｃ７において、アクセスアドレスＡ１＝１５である。即ち、図３のタイミングチャートで説明した非連続アクセスと同じ非連続アクセスが発生する。データ格納回路５１にはデータＤ（１５）は格納されていないため、プロセッサはデータ待ちの状態になる。ただし、非連続アクセスが発生することを予測して、サイクルｃ５からメモリ２００の読み出し動作が開始されている。そのため、サイクルｃ９においてデータＤ９がメモリ２００から出力される。その結果、サイクルｃ９において、データ格納回路５１からデータＤ（１５）がプロセッサ１００に出力される。つまり、図３の例に比べてため、スループットが改善されている。
【００５０】
図４の例において、先頭ＡＷアドレスＡ０＝５であっても、サイクルｃ７において非連続アクセスが発生しない場合がある。つまり、非連続アクセス予測回路３１が予測信号ＳＥを出力する場合でも、非連続アクセスが発生しない場合がある。例えば、プロセッサ１００がメモリ２００に格納されたデータを使用してループ動作を行った場合、同一の非連続アクセスが繰り返される。そして、ループ動作が終了した場合に、非連続アクセスが発生しない。非連続アクセスが発生しない場合には、不一致信号ＳＭが比較回路４１から出力されないため、非連続アクセスが発生していないことがわかる。予測信号ＳＥが入力され、且つ不一致信号ＳＭが入力されない場合には、アドレス選択回路４２は、読み出しＡＷアドレスＡ９として要求ＡＷアドレスＡ１０をメモリ２００に出力する。又、非連続アクセス予測回路３１が予測信号ＳＥを出力し、且つ比較回路４１が不一致信号ＳＭを出力しない場合には、参照された非連続アドレス組を履歴格納回路３２から削除するようにメモリコントローラ１０を設定することができる。  
ところで、非連続アドレス組を無制限に履歴格納回路３２に格納するためには、履歴格納回路３２の面積、消費電力を大きくする必要がある。その結果、メモリコントローラ１０の面積、消費電力が大きくなる。そのため、履歴格納回路３２に格納される非連続アドレス組の数を制限することが望ましい。その場合、新たに非連続アクセス組を履歴格納回路３２に格納するために、履歴格納回路３２に格納されている非連続アクセス組を削除する必要がある。例えば、履歴格納回路３２に格納されている非連続アドレス組のうち、最初に格納された非連続アドレス組を削除する。或いは、履歴格納回路３２に格納されている非連続アドレス組のうち、先頭ＡＷアドレスＡ０と第１アドレスが一致したのがもっとも古い非連続アドレス組を削除する。
【００５１】
以上に説明したように、本発明の第１の実施の形態に係るメモリコントローラによれば、非連続アクセスが発生することを予測し、非連続アクセスにおいてプロセッサが要求するデータをメモリ２００から読み出す動作が、非連続アクセスが発生する前から開始できる。その結果、非連続アクセスが発生した場合のスループットを改善することができる。即ち、プロセッサ１００がメモリ２００に格納されたデータを取得するために必要な時間を低減できる。又、本発明の第１の実施の形態に係るメモリコントローラによれば、履歴格納回路３２に格納される情報は、データではなくアドレスである。そのため、非連続アクセスの発生に備えてキャッシュ等にデータを格納しておく回路に比べて、回路面積や消費電力を抑制することができる。
【００５２】
（第２の実施の形態）
本発明の第２の実施の形態に係わるメモリコントローラは、図５に示すように第１のデータ格納回路５１Ａ、第２のデータ格納回路５１Ｂ及び制御回路５３を備える点が、図１に示したメモリコントローラ１０と異なる。その他の構成については、図１に示す第１の実施の形態と同様である。
【００５３】
図１に示したメモリコントローラの説明では、プロセッサ１００は、各サイクル毎にメモリコントローラ１０からデータＤ１を読み出す例を示した。ただし、プロセッサ１００がメモリコントローラ１０からデータＤ１を読み出さないサイクルが発生することがある。その場合、メモリ２００からデータＤ９が読み出されても、データ格納回路５１に格納されたすべてのデータがプロセッサから読み出されていない。そのため、データＤ９をデータ格納回路５１に格納すると、プロセッサ１００が読み出していないデータ格納回路５１に格納されたデータが上書きされてしまう。
【００５４】
しかし、図５に示したメモリコントローラ１０Ａによれば、第１のデータ格納回路５１Ａに格納されたデータをプロセッサ１００に出力している間に、メモリ２００から読み出されたデータＤ９を第２のデータ格納回路５１Ｂに格納することができる。逆に、第２のデータ格納回路５１Ｂに格納されたデータをプロセッサ１００に出力している間に、メモリ２００から読み出されたデータＤ９を第１のデータ格納回路５１Ａに格納することができる。
【００５５】
制御回路５３は、第１のデータ格納回路５１Ａ及び第２のデータ格納回路５１Ｂの動作を制御する。例えば、第１のデータ格納回路５１Ａからプロセッサ１００にデータＤ１が出力されている間に、メモリ２００からデータＤ９が読み出された場合、制御回路５３は、第１のデータ格納回路５１Ａに格納されたすべてのデータがプロセッサ１００に出力されていないことを検知できる。その場合、制御回路５３は、データＤ９を第２のデータ格納回路５１Ｂに格納させる。そして、制御回路５３は、第１のデータ格納回路５１Ａに格納されたすべてのデータがプロセッサ１００に出力されたことを検知すると、次にプロセッサ１００が要求するデータを、第２のデータ格納回路５１Ｂからプロセッサ１００に出力させる。他は、第１の実施の形態と実質的に同様であり、重複した記載を省略する。
【００５６】
本発明の第２の実施の形態に係るメモリコントローラによれば、プロセッサ１００がメモリコントローラ１０Ａからデータを読み出さないサイクルがあっても、メモリ２００から読み出したデータＤ９を第１のデータ格納回路５１Ａ又は第２のデータ格納回路５１Ｂに格納することができる。
【００５７】
（その他の実施の形態）
上記のように、本発明は第１又は第２の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【００５８】
既に述べた第１又は第２の実施の形態の説明においては、プロセッサ１００がバス１１０を介してメモリコントローラ１０に接続されている例を示したが、プロセッサ１００がメモリコントローラ１０に直接接続されていてもよい。
【００５９】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００６０】
【図１】本発明の第１の実施の形態に係るメモリコントローラの構成を示す模式図である。
【図２】本発明の第１の実施の形態に係るメモリコントローラの動作を説明を示するための第１のタイミングチャートである。
【図３】本発明の第１の実施の形態に係るメモリコントローラの動作を説明を示するための第２のタイミングチャートである。
【図４】本発明の第１の実施の形態に係るメモリコントローラの動作を説明を示するための第３のタイミングチャートである。
【図５】本発明の第２の実施の形態に係るメモリコントローラの構成を示す模式図である。
【符号の説明】
【００６１】
１０…、１０Ａ…メモリコントローラ
３１…非連続アクセス予測回路
３２…履歴格納回路
３３…非連続アクセス情報生成回路
４０…アドレス出力回路
４１…比較回路
５１…データ格納回路
１００…プロセッサ
２００…メモリ
【図１】
2006215799.tif 000003
【図２】
2006215799.tif 000004
【図３】
2006215799.tif 000005
【図４】
2006215799.tif 000006
【図５】
2006215799.tif 000007