説明

情報処理装置及び情報処理方法

【課題】バスマスタがDRAMによるプリチャージ動作を制御するためのより低コストな方法を提供し、これによってDRAMへのアクセス速度を向上させる。
【解決手段】第1のアドレスへのアクセス後、第2のアドレスへのアクセス前に、DRAMにおいてプリチャージ動作が必要であるか否かを判定する。プリチャージ動作は必要ないと判定した場合には第1のアドレスに対するアクセス後にオートプリチャージを行わないことを指定する命令を、プリチャージ動作が必要であると判定した場合には第1のアドレスに対するアクセス後にオートプリチャージを行うことを指定する命令を、バスマスタがメモリコントローラに対して要求するバーストアクセスの種類を示す信号を用いてメモリコントローラへと送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置及び情報処理方法に関し、特に情報処理装置におけるメモリアクセス手法に関する。
【背景技術】
【0002】
現在、様々な機器の主メモリとしてDRAMが使用されている。DRAMのデバイスは複数のバンクで構成され、それぞれのバンクは複数のページで構成されている。DRAMにはページモードと呼ばれる高速アクセスモードが備えられており、DRAMのバンク内の同一ページに対してアクセス(ページヒット)している間はプリチャージ(ページクローズ)を必要とせず短い時間でアクセスすることが可能となる。しかし、同一バンク内の別のページに対してアクセスする場合(ページミス)には、それまで書き込みあるいは読み出しを行っていたページをプリチャージでクローズし、新しいROWアドレスを指定してページをオープンしてからアクセスする必要がある。
【0003】
これに対して、各処理装置のメモリアクセスパターンに応じてプリチャージ(ページクローズ)動作を制御することにより、メモリアクセスを高速化する技術が開示されている。例えば特許文献1の方法によれば、バスマスタは、現在アクセスを要求するアドレスに加えて、次にアクセスするアドレスをメモリコントローラに通知する。この通知に従ってメモリコントローラは、要求されたアドレスへのアクセス後にプリチャージを行うか否か(オートプリチャージを行うか否か)を切り替える。特許文献2の方法によれば、バスマスタが現在のアドレスとプリフェッチアドレスとの比較を行う。そしてバスマスタはページヒット/ページミスを示す専用の信号線を用いて、メモリコントローラに対しオートプリチャージが必要が否かを通知する(特許文献2)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−295322号公報
【特許文献2】特許平5−210569号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら特許文献1の方法によれば、メモリコントローラが後にアクセスされるアドレスをバッファリングすることが必要であり、メモリコントローラの回路量が大きくなってしまう。このため、コストが増大してしまう可能性があった。また特許文献2の方法によれば、ページヒット/ページミスを示す専用の信号線を用いてバスマスタがメモリコントローラに対してオートプリチャージの有無を通知するために、配線数が増加する。また、このような信号線を追加するためには、バスインターフェースを変更する必要がある。これらのことも、コストの増大につながるものと考えられる。
【0006】
本発明は、バスマスタがDRAMによるプリチャージ動作を制御するためのより低コストな方法を提供し、これによってDRAMへのアクセス速度を向上させることを目的とする。
【課題を解決するための手段】
【0007】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。すなわち、
DRAMと、前記DRAMに対してアクセスを行うメモリコントローラと、前記メモリコントローラに対して前記DRAMへのアクセス要求を行うバスマスタと、を備える情報処理装置であって、
前記バスマスタは、
アクセスを要求する前記DRAM上のアドレスである第1のアドレスを取得し、かつ当該第1のアドレスへのアクセスに続けてアクセスを要求する前記DRAM上のアドレスである第2のアドレスを取得する取得手段と、
前記第1のアドレスへのアクセス後、前記第2のアドレスへのアクセス前に、前記DRAMにおいてプリチャージ動作が必要であるか否かを判定する判定手段と、
前記第1のアドレスを前記メモリコントローラへと送信する第1の送信手段と、
前記判定手段が前記プリチャージ動作は必要ないと判定した場合には前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことを指定する命令を、前記判定手段が前記プリチャージ動作が必要であると判定した場合には前記第1のアドレスに対するアクセス後にオートプリチャージを行うことを指定する命令を、前記バスマスタが前記メモリコントローラに対して要求するバーストアクセスの種類を示す信号を用いて前記メモリコントローラへと送信する第2の送信手段と、を備え、
前記メモリコントローラは、
前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことが指定されている場合には前記DRAMの前記第1のアドレスに対してオートプリチャージなしのアクセスを行い、前記第1のアドレスに対するアクセス後にオートプリチャージを行うことが指定されている場合には前記DRAMの前記第1のアドレスに対してオートプリチャージ付きのアクセスを行う、アクセス手段を備える
ことを特徴とする。
【発明の効果】
【0008】
バスマスタがDRAMによるプリチャージ動作を制御するためのより低コストな方法を提供し、これによってDRAMへのアクセス速度を向上させることができる。
【図面の簡単な説明】
【0009】
【図1】実施例1に係る情報処理装置の一例を示すブロック図
【図2】バスマスタ100が行う処理の一例を示すフローチャート
【図3】実施例1に係る処理の一例を示す図
【図4】AMBA AHB規格におけるバースト信号を説明する図
【図5】実施例2に係る処理の一例を示す図
【図6】DRAM制御部125の構成の一例を示す図
【図7】DRAM制御部125が行う処理の一例を示すフローチャート
【図8】DRAM制御部125が行う処理の一例を示すフローチャート
【発明を実施するための形態】
【0010】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【0011】
[実施例1]
図1は、実施例1に係る情報処理装置の主要部の構成を示すブロック図である。実施例1に係る情報処理装置は、複数の処理装置150,160、バス110、メモリコントローラ120、及びDRAM130を備える。複数の処理装置150,160のそれぞれはバスマスタ100,140を有する。各バスマスタ100,140は、処理装置に応じて異なるメモリアクセスパターンを有しうる。バス110は、各処理装置150,160(各バスマスタ100,140)と、メモリコントローラ120とを互いに接続する。以下では処理装置150及びバスマスタ100について説明するが、処理装置160及びバスマスタ140も同様に動作しうる。
【0012】
バスマスタ100は処理装置150に配置され、データをメモリに書き込む。具体的にはバスマスタ100は、メモリにデータを書き込むために、バス110に対して制御信号、アドレス、及びデータを出力する。制御信号は例えば、メモリ使用権を要求するリクエスト信号、アクセスの種別を示すリードライト信号、転送データサイズを示すワード長信号、連続アクセスを示すバースト信号などを含みうる。また、本実施例においては詳しく説明しないが、バス110が送信する、メモリ使用権を取得したことを示すアクノリッジ信号や読み出しデータ信号なども、制御信号に含まれうる。もっとも、使用される制御信号の種類は、バス110の仕様によって異なる。本実施例においてバスマスタ100はDRAM130への書き込みを行う。しかしながらバスマスタ100の機能はこれに限定されず、DRAMへの任意のアクセスを行うことができる。具体的にはバスマスタ100は、書き込みと読み出しとを行ってもよいし、読み出しのみを行ってもよい。
【0013】
アドレス算出部101は、データバッファ107内のデータをDRAM130に書き込む際に、データが書き込まれるアドレス、すなわちアクセスを要求するアドレスを算出する(取得手段)。アドレス算出部101は、処理装置に応じたメモリアクセスパターンに従って、アドレスを順次算出する。すなわちアドレス算出部101は、データが書き込まれる第1のアドレスを算出し、さらに、その後にデータが書き込まれる第2のアドレスを算出する。
【0014】
アドレス保持部102は、アドレス算出部101が算出したアドレスを保持する。アドレス保持部102がアドレスを一時保持することにより、バス110へのアクセスタイミングを調整することができる。
【0015】
バンク/ページ算出部103は、データが書き込まれるバンクアドレスとページアドレスとを算出する。例えばバンク/ページ算出部103は、アドレス算出部101が算出した第1のアドレスについて、対応するバンクアドレス及びページアドレスを算出する。またバンク/ページ算出部103は、アドレス算出部101が算出した第2のアドレスについて、対応するバンクアドレス及びページアドレスを算出する。
【0016】
バンク/ページ保持部104は、バンク/ページ算出部103が算出したバンクアドレスとページアドレスを保持する。例えば、バンク/ページ算出部103が第2のアドレスに対応するバンクアドレスとページアドレスを算出している間に、バンク/ページ保持部104は第1のアドレスのバンクアドレス及びページアドレスを保持しうる。
【0017】
判定部105は、第1のアドレスへのアクセス後、第2のアドレスへのアクセス前に、DRAM130においてプリチャージ動作が必要であるか否かを判定する(判定手段)。具体的には判定部105は、バンク/ページ保持部104に保持されている第1のアドレスと、バンク/ページ算出部103で算出された第2のアドレスとの間で、ページアドレスが一致するか否かを判定する。例えば判定部105は、第1のアドレスと第2のアドレスとがDRAM130の同一バンクかつ同一ページに位置する(ページヒット)か否かを判定する。第1のアドレスと第2のアドレスとがDRAM130の同一バンクかつ同一ページに対応する場合、判定部105は、第1のアドレスに対してアクセスした後に、プリチャージは不要であるものと判定することができる。一方、第1のアドレスと第2のアドレスとがDRAM130の同一バンクかつ同一ページに位置しない(ページミス)場合、判定部105は第1のアドレスに対してアクセスした後にプリチャージが必要であると判定する。
【0018】
信号生成部106は、判定部105の判定に従って、制御信号を生成する(第2の送信手段)。信号生成部106は、バス110の仕様に従った制御信号を生成しうる。例えば信号生成部106は、判定部105の判定に応じて、バス110に対しオートプリチャージを要求する信号を出力することができる。
【0019】
一例として、図3に示すように、バス110がバスへの排他アクセスを要求する1ビットのLOCK(ロック)信号を有する場合、信号生成部106はこのLOCK信号を制御しうる。例えば信号生成部106は、アクセス単位の境界において、ページヒットとなるかページミスとなるか応じてLOCK信号を制御する。具体的には信号生成部106は、次のアクセス単位がページヒットとなる場合はLOCK=HighとなるようにLOCK信号を制御し、こうして連続アクセスが要求されることを示す。この場合、オートプリチャージは行われない。また信号生成部106は、次のアクセス単位がページミスとなる場合はLOCK=LowとなるようにLOCK信号を制御し、こうして連続アクセスではないことを示す。この場合、オートプリチャージが行われる。
【0020】
より詳細には、それぞれのメモリアクセス要求について、次のメモリアクセスがページヒットとなるかページミスとなるかに応じて、信号生成部106はLOCK信号を制御すればよい。具体的には、メモリアクセス後にオートプリチャージが必要なければ、信号生成部106はLOCK=HighとなるようにLOCK信号を制御すればよい。一方で、メモリアクセス後にオートプリチャージが必要であれば、信号生成部106はLOCK=LowとなるようにLOCK信号を制御すればよい。図3を参照すると、アドレスA3へのアクセスの後にアドレスA4へのアクセスが行われるが、A3とA4とは同一ページに属する。このため、アドレスA3へのアクセスを要求する際、信号生成部106はLOCK=HighとなるようにLOCK信号を制御する。一方でアドレスA7へのアクセスの後にアドレスA8へのアクセスが行われるが、A7とA8とは異なるページに属する。このため、アドレスA7へのアクセスを要求する際、信号生成部106はLOCK=LowとなるようにLOCK信号を制御する。
【0021】
データバッファ107は、DRAM130に書き込まれるデータを一時的に格納する。データバッファ107に格納されるデータは、通常は処理装置による処理結果である。バス110は調停を行う。例えば、複数の処理装置150,160からDRAM130への書き込み要求を受けた際に、バス110は、どの処理装置からの書き込み要求を受け付けるのかを決定する。そしてバス110は、受け付けられたメモリアクセスについての制御信号、アドレス、及びデータを、メモリコントローラ120へと出力する。
【0022】
メモリコントローラ120は、バスマスタ100からのアクセス要求を受けてDRAM130へのアクセスを行う。メモリコントローラ120は、入出力部121、アドレスデコード部122、マスタ判定部123、要求抽出部124、及びDRAM制御部125を備える。入出力部121は、バス110からの要求に応じて、バス110から入力されたデータをDRAMに対して書き込む。また、入出力部121は、バス110からの要求に応じてDRAMから読み出したデータを、バス110に対して出力する。
【0023】
アドレスデコード部122は、バス110からアクセスするアドレスを取得し、取得したアドレスから行アドレスと列アドレスとを抽出する。そしてアドレスデコード部122は、抽出した行アドレスと列アドレスとをDRAM制御部125に出力する。またアドレスデコード部122は、アクセスするアドレスを示す情報をマスタ判定部123に出力する。
【0024】
マスタ判定部123は、アドレスデコード部122から取得したアドレス情報、及びバス110から取得した制御信号から、メモリアクセスを要求しているバスマスタを判定する。本実施例においてマスタ判定部123は、アクセスされるアドレス領域に従って、メモリアクセスを要求しているバスマスタを判定する。一般的に画像などのまとまったデータを扱うシステムにおいては、各処理装置が使用するメモリ領域はシステム内で固定的あるいは動的に割り当てられる。したがって、アクセスされるアドレス領域を調べることにより、メモリアクセスを要求するバスマスタを判定することができる。
【0025】
本実施例においては、それぞれのバスマスタには予めメモリ領域が割り当てられているものとする。したがって、例えばバスマスタ100に割り当てられたメモリ領域内へのアクセスが要求されている場合、マスタ判定部はバスマスタ100がメモリアクセスを要求しているものと判定することができる。具体的には、アクセスされるアドレスが、バスマスタ100に割り当てられたメモリ領域のトップアドレスとボトムアドレスとの間にある場合、マスタ判定部はバスマスタ100がメモリアクセスを要求しているものと判定することができる。
【0026】
また本実施例においてマスタ判定部123は、アドレス領域判定の他に、リードライト判定を行いうる。リードライト判定によりマスタ判定部123は、データの転送方向を判定する。マスタ判定部123は例えば、バス110からの制御信号のうち、リードライト信号を参照することにより、リードライト判定を行いうる。バス110がAHBである場合、転送方向を示すHWRITE信号がHighであるかLowであるかにより、マスタ判定部123はリードライト判定を行うことができる。
【0027】
バス110からの制御信号において、バスマスタを一意に指定するマスタIDが示される場合、このマスタIDを使用してメモリアクセスを要求しているバスマスタを判定してもよい。バス110がAHBである場合、アクセスをしているマスタを示すHMASTER信号が制御信号に含まれている。したがってマスタ判定部123は、このHMASTER信号により、メモリアクセスを要求しているバスマスタを判定することができる。
【0028】
要求抽出部124は、バスマスタ100からのオートプリチャージを要求する信号を抽出する。本実施例においては、LOCK信号によってオートプリチャージ要求の有無が示される。したがって要求抽出部は、バス110からの制御信号のうち、LOCK信号を抽出する。具体的には、あるアドレスへのメモリアクセスが要求されている際にLOCK=Highであれば、要求抽出部124はオートプリチャージ要求はないものと判定する。また、あるアドレスへのメモリアクセスが要求されている際LOCK=Lowであれば、要求抽出部124はオートプリチャージ要求があるものと判定する。そして要求抽出部124は、オートプリチャージ要求があるか否かを、DRAM制御部125に通知する。
【0029】
DRAM制御部125は、バスマスタからのメモリアクセス要求に従い、DRAM130に対してアクセスコマンドを発行する。DRAM制御部125が発行するアクセスコマンドは、ページオープン(ページの活性化)、ページクローズ(プリチャージ)、リフレッシュ、リード、ライト、モードセット、などが含まれる。
【0030】
図6にDRAM制御部125(アクセス手段)の構成を示す。DRAM制御部125は、制御部300、ページ情報格納部301、ROWアクセスシーケンサ302、COLアクセスシーケンサ303、及びタイミングカウンタ304を備える。制御部300は、アクセスを行うアドレスから、アクセスを行うバンクとページとを算出する。そして制御部300は、ページ情報格納部301に格納されているページ情報を参照して、ROWアクセスシーケンサ302及びCOLアクセスシーケンサ303に対してコマンドを発行する。ページ情報格納部301には、バンク毎にページのオープン/クローズ状態が格納されている。ページ情報格納部301にはさらに、ページがオープンされている場合にはオープンされているページ番号が記録されている。
【0031】
ROWアクセスシーケンサ302は、制御部300からページオープン/クローズのコマンドを受けると、タイミングカウンタ304を参照してコマンド発行可能なタイミングを待つ。そしてROWアクセスシーケンサ302は、ページオープン/クローズコマンドをDRAM130に対して発行する。
【0032】
COLアクセスシーケンサ303は、制御部300からメモリアクセスコマンドを受けると、タイミングカウンタ304を参照してコマンド発行可能なタイミングを待つ。そしてCOLアクセスシーケンサ303は、リードコマンド又はライトコマンドをDRAM130に対して発行する。ここでCOLアクセスシーケンサ303は、オートプリチャージ付きのリードコマンド又はライトコマンドを発行することができる。オートプリチャージ付きのリードコマンド又はライトコマンドを受けると、DRAM130は、リード又はライトが終了した後でページクローズを自動的に行う。リードコマンド又はライトコマンドに従う読み出しあるいは書き込み動作が終了した時に、ページクローズが必要であることが予め分かっている場合には、COLアクセスシーケンサ303はオートプリチャージ付きのコマンドを発行すればよい。この場合、ページクローズのコマンドが発行される必要はない。このため、メモリアクセスに必要な時間を削減することができる。
【0033】
図2は、バスマスタ100が行うメモリアクセス要求処理の一例を詳しく説明するフローチャートである。図2のフローチャートにおいては、ステップS910〜S950の処理が繰り返される。以下の説明では、ステップS910の開始前に、第1のアドレスと、第1のアドレスに対応するバンクアドレス及びページアドレスが算出されているものとする。
【0034】
ステップS910においてアドレス算出部101は、アクセスするメモリ上(DRAM上)のアドレスを算出する。上述のようにアドレス算出部101は、第1のアドレスに対するアクセスの後にアクセスされる第2のアドレスを算出する。算出されたアドレスは、アドレス保持部102に格納される。
【0035】
ステップS920においてバンク/ページ算出部103は、アドレス算出部101が算出した第2のアドレスについて、対応するバンクアドレスとページアドレスとを算出する。算出されたバンクアドレス及びページアドレスは、バンク/ページ保持部104に格納される。
【0036】
ステップS930において判定部105は、プリチャージが必要か否かを判定する。上述のように判定部105は、第1のアドレスと第2のアドレスとがDRAM130上の同一のページに存在する場合に、プリチャージが必要ではないものと判定する。ステップS940において信号生成部106は、ステップS930における判定結果に従って制御信号を生成する。具体的には、プリチャージが必要である場合にはLOCK信号をLowにし、プリチャージが必要ではない場合にはLOCK信号をHighにすればよい。こうして、オートプリチャージを行うか行わないかを指定する命令がメモリコントローラ120へと送信される。またステップS940においてアドレス保持部102は、第1のアドレスをメモリコントローラ120に対して送信する(第1の送信手段)。こうして、第1のアドレスに対するアクセス要求がメモリコントローラ120へと出力される。
【0037】
ステップS950においてアドレス算出部101は、次のアドレスに対するアクセスが要求されているか否かを判定する。アクセスが要求されている場合、処理はステップS910に戻り、第2のアドレスに対するアクセスの後にアクセスされる第3のアドレスが算出され、第2のアドレスに対するアクセス要求がメモリコントローラ120へと出力される。アクセスが要求されていない場合、処理は終了する。
【0038】
図7は、DRAM制御部125内の制御部300が行うコマンド発行処理を説明するフローチャートである。ステップS500において制御部300は、メモリアクセスを行うアドレスを取得し、このアドレスからバンクアドレスとページアドレスとを算出する。ステップS501において制御部300は、ページ情報格納部301に格納されているページ情報を参照して、ステップS500で算出したバンクアドレスが示すバンクの状態と、ページアドレスが示すページの状態とを確認する。
【0039】
ステップS502において制御部300は、ステップS500で算出したバンクアドレスが示すバンクがオープンされているか否かを判定する。バンクがオープンされている場合、処理はステップS503へ移行する。一方、バンクがオープンされていない場合、処理はステップS505に進む。
【0040】
ステップS503において制御部300は、ステップS500で算出したページアドレスが示すページがオープンされているか否かを判定する。ステップS500で算出したページアドレスが示すページがオープンされていることはページヒットを意味する。また、ステップS500で算出したページアドレスが示すページがオープンされていないことはページミスを意味する。ページがオープンされている場合、処理はステップS506に進む。ページがオープンされていない場合、処理はステップS504に進む。
【0041】
ステップS504において制御部300は、ROWアクセスシーケンサ302に対して現在オープンされているページをクローズするコマンドを発行する。ステップS505において制御部300は、ROWアクセスシーケンサ302に対して、ステップS500で算出したページアドレスが示すページをオープンするコマンドを発行する。ステップS506において制御部300は、COLアクセスシーケンサ303に対して、ステップS500で取得したアドレスに対するメモリアクセスコマンドを発行する。
【0042】
図8は、ステップS506におけるメモリアクセスコマンドの発行処理を詳しく示すフローチャートである。ステップS600において制御部300は、マスタ判定部123から、メモリアクセスを要求しているバスマスタを示す情報を取得する。ステップS601において制御部300は、メモリアクセスを要求しているバスマスタが、プリチャージ要求を発行しうるバスマスタであるか否かを判定する。制御部300はこの判定を、不図示のメモリを参照して行うことができる。この不図示のメモリは、それぞれのバスマスタについて、オートプリチャージ要求を発行しうるか否かを示す情報を格納している。バスマスタがプリチャージ要求を発行しうる場合、処理はステップS602に進む。そうでない場合、処理はステップS605に進む。
【0043】
ステップS602において制御部300は、オートプリチャージ要求があるか否かを示す通知を要求抽出部124から受け取る。ステップS603において制御部300は、要求抽出部124からの通知を参照して、オートプリチャージ要求があるか否かを判定する。オートプリチャージ要求がある場合、処理はステップS604に進む。オートプリチャージ要求がない場合、処理はステップS605に進む。
【0044】
ステップS604において制御部300は、COLアクセスシーケンサ303に対し、バス110によって指定されたアドレスに対する、オートプリチャージ付きのメモリアクセスコマンドを発行する。一方でステップS605において制御部300は、COLアクセスシーケンサ303に対し、バス110によって指定されたアドレスに対する、オートプリチャージなしのメモリアクセスコマンドを発行する。
【0045】
以上述べてきたように本実施例では、メモリコントローラは、バスマスタからのオートプリチャージ要求に応じてページクローズを行う。こうして、DRAMのプリチャージに必要なサイクル数を削減することができる。ここで、バスマスタからのオートプリチャージ要求の通知には、バスマスタによる連続アクセスを示す信号(LOCK信号)を用いる。このため、バスインターフェースを変更することや配線数を増やすことは必要ない。以上のような方法により、特にメモリに対してランダムアクセスを行う際に、メモリへのアクセス速度が向上しうる。例えば画像投影装置においてはキーストーン補正のような画像変形処理が行われることがあるが、このような画像変形処理においてはメモリに対するランダムアクセスが行われる。従って本実施例のような方法を画像変形処理を行う画像処理装置、例えば画像投影装置に対して適用することは有利となる。
【0046】
[実施例2]
実施例2では、標準的に用いられるオンチップバスであるAMBA AHB規格に従うバスを、バス110として用いる。図4に示すように、AHBプロトコルには、メモリに対する連続アクセスを実行するためのバースト動作が規定されている。具体的にはAHBプロトコルには、インクリメント式バーストとラップ式バーストの両者がサポートされている。
【0047】
インクリメント式バーストにおいては、シーケンシャルロケーションがアクセスされる。具体的には、連続するメモリアドレスが順次アクセスされる。次に説明するラップ式バーストとは異なり、アドレス境界におけるラップは行われない。一方でラップ式バーストにおいても、連続するメモリアドレスが順次アクセスされるが、アドレス境界においてラップが行われる。
【0048】
ここで、アドレス境界について説明する。バースト動作時に、DRAM130上のメモリアドレスはアドレス境界によって区切られ、それぞれのアドレス空間は1回のバーストでアクセスされるデータ量に対応する。例えば4バイト単位でのメモリアクセスがなされる場合において、4ビートのバーストアクセスが行われる場合、1回のバーストでは16バイトのデータがアクセスされる。この場合、メモリアドレスは16バイトごとに区切られる。
【0049】
したがって、4バイトアクセスにおける4ビートラップ式バーストは、DRAM中の16バイトごとのアドレス境界でラップする。具体的には、アドレス0x34からアクセスが始まる場合、アドレス0x34からの4バイト、0x38からの4バイト、0x3Cからの4バイト、及び0x30からの4バイトに、順にアクセスが行われる。
【0050】
ここで、バーストアクセスがそれぞれのアドレス空間の先頭アドレスから開始する場合、ラップは行われない。例えば4バイトアクセスにおける4ビートラップ式バーストにおいて、アドレス0x30からアクセスが始まる場合、次のようにアクセスが行われる。すなわち、0x30からの4バイト、アドレス0x34からの4バイト、0x38からの4バイト、及び0x3Cからの4バイトに、順にアクセスが行われる。
【0051】
AHBプロトコルにおいては、HBURST信号(以下、バースト信号と呼ぶ)を用いて、インクリメント式バースト又はラップ式バーストが指定される。本実施例においてバス110は、このバーストアクセスの種類を示すバースト信号を用いて、さらにオートプリチャージ要求を行う。具体的には信号生成部106は、アクセスするメモリアドレスとしてアドレス空間の先頭アドレスを指定し、さらにラップ式バーストを示すバースト信号を送ることにより、バス110がオートプリチャージを要求していることを通知する。一方でバス110がオートプリチャージを要求していない場合に、アクセスするメモリアドレスとしてアドレス空間の先頭アドレスを指定する場合には、信号生成部106はインクリメント式バーストを示すバースト信号を送る。
【0052】
具体的な一例として、上述の4バイトアクセスにおける4ビートバーストにおいて、アクセスの開始アドレスとして例えば0x30を指定する場合について説明する。オートプリチャージを要求する場合、信号生成部106はバースト信号を用いて、ラップ式バーストを指定すればよい。また、オートプリチャージを要求しない場合、信号生成部106はバースト信号を用いて、インクリメント式バーストを指定すればよい。
【0053】
本実施例に係る処理は、実施例1におけるステップS910〜S950、及びS602の動作を変更することにより実現できる。まず、図5を参照して、本実施例におけるステップS910〜S950の処理について説明する。図5のように、アドレスA0−1〜A0−4に対する1回のバーストアクセスの後に、アドレスA1−1〜A1−4に対する次のバーストアクセスが行われるものとする。アドレスA1−1〜A1−4に対する1回のバーストアクセスの後には、アドレスA2−1〜A2−4に対する次のバーストアクセスが行われる。また、これらのバーストアクセスは、インクリメント式バースト又はラップ式バーストであるものとする。
【0054】
実施例1と同様に、ステップS910〜S950の処理は繰り返される。以下の処理が始まる前に、アドレス群A0−1〜A0−4と、アドレス群A0−1〜A0−4についてのバンクアドレス及びページアドレスは既に算出されているものとする。ステップS910でアドレス算出部101は、1回のバーストアクセスによってアクセスされるアドレス群を算出する。図5の例によればアドレス算出部101は、アドレス群A1−1〜A1−4を算出する。本実施例の方法によれば、それぞれのアドレス群の最初のアドレスが、1回のラップ式バーストでアクセスされるアドレス空間の先頭アドレスである場合に、オートプリチャージの有無を指定することができる。したがって、例えばアドレス空間の先頭アドレス以外のアドレスから始まるバースト転送を行いたい場合にも、アドレス空間の先頭アドレスから始まるバースト転送を指定する方がいいことがある。このように、指定するアドレス群の順序を変更する場合、バスマスタはデータ整列部(不図示)を備えてもよい。データ整列部は、メモリへと書き込まれるデータ群の順序、又はメモリから読み出されたデータ群の順序が、変更前のアドレス群の順序に対応するように、データを整列することができる。
【0055】
ステップS920でバンク/ページ算出部103は、アドレス群A1−1〜A1−4についてバンクアドレス及びページアドレスを算出する。通常1回のバーストアクセスは同じページに対して行われるから、バンク/ページ算出部103はそれぞれのアドレス群のうち最初のアドレスについてのみバンクアドレス及びページアドレスを算出してもよい。
【0056】
ステップS930において判定部105はまず、アドレス群A0−1〜A0−4の最初のアドレス(A0−1)が、1回のラップ式バーストでアクセスされるアドレス空間の先頭アドレスであるか否かを判定する。アドレス空間の先頭アドレスではない場合、判定部105はオートプリチャージが必要か否かの判定を行わない。この場合、アドレス群A0−1〜A0−4に従って、信号生成部106はインクリメント式バースト又はラップ式バーストを示す制御信号を出力すればよい。
【0057】
それぞれのアドレス群の最初のアドレスが、1回のラップ式バーストでアクセスされるアドレス空間の先頭アドレスである場合、判定部105は次の処理を行う。すなわち判定部105は、1回のバーストアクセスが行われるメモリアドレス(A0−1〜A0−4)に対応するページアドレスと、その後のバーストアクセスが行われるメモリアドレス(A1−1〜A1−4)に対応するページアドレスとを比較する。判定部105は最初にアクセスされるメモリアドレス同士(A0−1及びA1−1)を比較してもよい。ページアドレス及びバンクアドレスが一致する場合(同じページに対するアクセスが行われる場合)、判定部105はオートプリチャージは必要ないものと判定する。ページアドレス又はバンクアドレスが一致しない場合は、判定部105はオートプリチャージが必要であるものと判定する。
【0058】
次に、ステップS940の処理について説明する。信号生成部106は、オートプリチャージが必要ないと判定された場合、バースト信号としてインクリメント式バーストを示す信号(図5におけるINCR4)を出力すればよい。また信号生成部106は、オートプリチャージが必要であると判定された場合、バースト信号としてラップ式バーストを示す信号を出力すればよい。
【0059】
ステップS940においてアドレス保持部102はさらに、アドレス群A0−1〜A0−4を順次出力する。こうしてバスマスタ100は、アドレス群A0−1〜A0−4に対するメモリアクセス要求をメモリコントローラ120へと出力する。
【0060】
ステップS950においてアドレス算出部101は、次のアドレス群に対するアクセスが要求されているか否かを判定する。アクセスが要求されている場合、処理はステップS910に戻り、次のアドレス群(A1−1〜A1−4)に対するアクセスの後にアクセスされるアドレス群(A2−1〜A2−4)が算出される。そして、アドレス群A1−1〜A1−4に対するアクセス要求がメモリコントローラ120へと出力される。図5の場合、アドレス群A1−1〜A1−4とアドレス群A2−1〜A2−4との間でページアドレスは一致しない。従って、アドレス群A1−1〜A1−4に対するアクセス要求を出力する際には、信号生成部106はバースト信号としてラップ式バーストを示す信号(WRAP4)を出力すればよい。一方でステップS950において次のアドレス群に対するアクセスが要求されていないと判定された場合、処理は終了する。
【0061】
また、ステップS602において、要求抽出部124は次のように動作すればよい。すなわち要求抽出部124は、アドレスデコード部122が出力するアドレス情報を参照する。1回のバーストアクセスによってアクセスされるアドレス群の最初のアドレスが、1回のラップ式バーストでアクセスされるアドレス空間の先頭アドレスである場合、要求抽出部はバス110からのバースト信号を参照する。バースト信号によってインクリメント式バーストが指定されている場合、要求抽出部124はオートプリチャージが要求されていないものと判定する。また、バースト信号によってラップ式バーストが指定されている場合、要求抽出部124はオートプリチャージが要求されているものと判定する。
【0062】
一方で1回のバーストアクセスによってアクセスされるアドレス群の最初のアドレスが、1回のラップ式バーストでアクセスされるアドレス空間の先頭アドレスではない場合、要求抽出部はオートプリチャージの有無は指定されていないものと判定する。このような場合、要求抽出部124はオートプリチャージを行うようにDRAM制御部125に指示してもよい。また、要求抽出部124はオートプリチャージを行わないようにDRAM制御部125に指示してもよい。また、要求抽出部124は既知の方法に従って、オートプリチャージを行うか否かを決定してもよい。例えば、アクセスされたアドレスの履歴に従って、オートプリチャージの有無について簡単な予測を行う方法が従来から知られている。要求抽出部124は、このような方法を実現する不図示の予測部(予測手段)に従ってオートプリチャージを行うか否かを決定してもよい。
【0063】
要求抽出部124は、こうして判定したオートプリチャージ要求の有無を、DRAM制御部125に通知すればよい。バースト動作として単独転送が指定されている場合(例えば、HTRANS信号によってNONSEQが指定されている場合)には、要求抽出部124はオートプリチャージが要求されていないものと判定してもよい。また本実施例においては、オートプリチャージを要求しない場合にはインクリメント式バーストが、オートプリチャージを要求する場合にはラップ式バーストが、それぞれ指定された。しかしながら、インクリメント式バーストとラップ式バーストとのどちらをオートプリチャージを要求する場合に割り当てるのかは任意に設定できる。すなわち、オートプリチャージを要求しない場合にはインクリメント式バーストとラップ式バーストとの一方が選択されればよい。また、オートプリチャージを要求する場合にはインクリメント式バーストとラップ式バーストとの他方が選択されればよい。
【0064】
以上の実施例2においても、バスマスタ100は、既存の規格を変更することなく、オートプリチャージをメモリコントローラに対して要求することができる。このため、追加の配線の設置のようなインタフェースの変更を行うことなく、メモリアクセス速度を向上させることができる。

【特許請求の範囲】
【請求項1】
DRAMと、前記DRAMに対してアクセスを行うメモリコントローラと、前記メモリコントローラに対して前記DRAMへのアクセス要求を行うバスマスタと、を備える情報処理装置であって、
前記バスマスタは、
アクセスを要求する前記DRAM上のアドレスである第1のアドレスを取得し、かつ当該第1のアドレスへのアクセスに続けてアクセスを要求する前記DRAM上のアドレスである第2のアドレスを取得する取得手段と、
前記第1のアドレスへのアクセス後、前記第2のアドレスへのアクセス前に、前記DRAMにおいてプリチャージ動作が必要であるか否かを判定する判定手段と、
前記第1のアドレスを前記メモリコントローラへと送信する第1の送信手段と、
前記判定手段が前記プリチャージ動作は必要ないと判定した場合には前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことを指定する命令を、前記判定手段が前記プリチャージ動作が必要であると判定した場合には前記第1のアドレスに対するアクセス後にオートプリチャージを行うことを指定する命令を、前記バスマスタが前記メモリコントローラに対して要求するバーストアクセスの種類を示す信号を用いて前記メモリコントローラへと送信する第2の送信手段と、を備え、
前記メモリコントローラは、
前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことが指定されている場合には前記DRAMの前記第1のアドレスに対してオートプリチャージなしのアクセスを行い、前記第1のアドレスに対するアクセス後にオートプリチャージを行うことが指定されている場合には前記DRAMの前記第1のアドレスに対してオートプリチャージ付きのアクセスを行う、アクセス手段を備える
ことを特徴とする、情報処理装置。
【請求項2】
前記第1のアドレスは、ラップ式バーストにおいてラップが行われる、前記DRAM中のアドレス境界によって区切られたそれぞれのアドレス空間の先頭アドレスであり、
前記第2の送信手段は、前記第1のアドレスに対するアクセス後にオートプリチャージを行うことを、前記メモリコントローラに対してインクリメント式バーストとラップ式バーストとのうち一方を要求することによって指定し、前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことを、前記メモリコントローラに対してインクリメント式バーストとラップ式バーストとのうち他方を要求することによって指定することを特徴とする、請求項1に記載の情報処理装置。
【請求項3】
前記メモリコントローラは、アクセスが要求されるアドレスに基づいてオートプリチャージが必要か否かを予測する予測手段をさらに備え、
前記第1のアドレスが、ラップ式バーストにおいてラップが行われる、前記DRAM中のアドレス境界によって区切られたそれぞれのアドレス空間の先頭アドレスである場合、前記第2の送信手段は、前記第1のアドレスに対するアクセス後にオートプリチャージを行うことを、前記メモリコントローラに対してインクリメント式バーストとラップ式バーストとのうち一方を要求することによって指定し、前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことを、前記メモリコントローラに対してインクリメント式バーストとラップ式バーストとのうち他方を要求することによって指定し、
前記第1のアドレスが、ラップ式バーストにおいてラップが行われる、前記DRAM中のアドレス境界によって区切られたそれぞれのアドレス空間の先頭アドレスではない場合、前記第2の送信手段は、前記第1のアドレスに対するアクセス後にオートプリチャージを行うか否かを指定せず、
前記アクセス手段は、前記第1のアドレスに対するアクセス後にオートプリチャージを行うか否かが指定されていない場合、前記予測手段による予測に従って、前記第1のアドレスに対してオートプリチャージ付きのアクセスを行うかオートプリチャージなしのアクセスを行うかを判定する
ことを特徴とする、請求項1に記載の情報処理装置。
【請求項4】
DRAMと、前記DRAMに対してアクセスを行うメモリコントローラと、前記メモリコントローラに対して前記DRAMへのアクセス要求を行うバスマスタと、を備える情報処理装置であって、
前記バスマスタは、
アクセスを要求する前記DRAM上のアドレスである第1のアドレスを取得し、かつ当該第1のアドレスへのアクセスに続けてアクセスを要求する前記DRAM上のアドレスである第2のアドレスを取得する取得手段と、
前記第1のアドレスへのアクセス後、前記第2のアドレスへのアクセス前に、前記DRAMにおいてプリチャージ動作が必要であるか否かを判定する判定手段と、
前記第1のアドレスを前記メモリコントローラへと送信する第1の送信手段と、
前記判定手段が前記プリチャージ動作は必要ないと判定した場合には前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことを指定する命令を、前記判定手段が前記プリチャージ動作が必要であると判定した場合には前記第1のアドレスに対するアクセス後にオートプリチャージを行うことを指定する命令を、前記バスマスタと前記メモリコントローラとを接続するバスに対する排他アクセスを前記バスマスタが要求しているか否かを示す信号を用いて前記メモリコントローラへと送信する第2の送信手段と、を備え、
前記メモリコントローラは、
前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことが指定されている場合には前記DRAMの前記第1のアドレスに対してオートプリチャージなしのアクセスを行い、前記第1のアドレスに対するアクセス後にオートプリチャージを行うことが指定されている場合には前記DRAMの前記第1のアドレスに対してオートプリチャージ付きのアクセスを行う、アクセス手段を備える
ことを特徴とする、情報処理装置。
【請求項5】
前記判定手段は、前記DRAMにおいて前記第2のアドレスが前記第1のアドレスと同一ページに位置する場合に、前記DRAMにおいてプリチャージ動作が必要ではないと判定し、前記DRAMにおいて前記第2のアドレスが前記第1のアドレスと異なるページに位置する場合に、前記DRAMにおいてプリチャージ動作が必要であると判定することを特徴とする、請求項1乃至4の何れか1項に記載の情報処理装置。
【請求項6】
DRAMと、前記DRAMに対してアクセスを行うメモリコントローラと、前記メモリコントローラに対して前記DRAMへのアクセス要求を行うバスマスタと、を備える情報処理装置が行う情報処理方法であって、
前記バスマスタの取得手段が、アクセスを要求する前記DRAM上のアドレスである第1のアドレスを取得し、かつ当該第1のアドレスへのアクセスに続けてアクセスを要求する前記DRAM上のアドレスである第2のアドレスを取得する取得工程と、
前記バスマスタの判定手段が、前記第1のアドレスへのアクセス後、前記第2のアドレスへのアクセス前に、前記DRAMにおいてプリチャージ動作が必要であるか否かを判定する判定工程と、
前記バスマスタの第1の送信手段が、前記第1のアドレスを前記メモリコントローラへと送信し、前記バスマスタの第2の送信手段が、前記判定工程で前記プリチャージ動作は必要ないと判定した場合には前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことを指定する命令を、前記判定工程で前記プリチャージ動作が必要であると判定した場合には前記第1のアドレスに対するアクセス後にオートプリチャージを行うことを指定する命令を、前記バスマスタが前記メモリコントローラに対して要求するバーストアクセスの種類を示す信号を用いて前記メモリコントローラへと送信する送信工程と、
前記メモリコントローラのアクセス手段が、前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことが指定されている場合には前記DRAMの前記第1のアドレスに対してオートプリチャージなしのアクセスを行い、前記第1のアドレスに対するアクセス後にオートプリチャージを行うことが指定されている場合には前記DRAMの前記第1のアドレスに対してオートプリチャージ付きのアクセスを行う、アクセス工程と、
を含むことを特徴とする、情報処理方法。
【請求項7】
DRAMと、前記DRAMに対してアクセスを行うメモリコントローラと、前記メモリコントローラに対して前記DRAMへのアクセス要求を行うバスマスタと、を備える情報処理装置が行う情報処理方法であって、
前記バスマスタの取得手段が、アクセスを要求する前記DRAM上のアドレスである第1のアドレスを取得し、かつ当該第1のアドレスへのアクセスに続けてアクセスを要求する前記DRAM上のアドレスである第2のアドレスを取得する取得工程と、
前記バスマスタの判定手段が、前記第1のアドレスへのアクセス後、前記第2のアドレスへのアクセス前に、前記DRAMにおいてプリチャージ動作が必要であるか否かを判定する判定工程と、
前記バスマスタの第1の送信手段が、前記第1のアドレスを前記メモリコントローラへと送信し、前記バスマスタの第2の送信手段が、前記判定工程で前記プリチャージ動作は必要ないと判定した場合には前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことを指定する命令を、前記判定工程で前記プリチャージ動作が必要であると判定した場合には前記第1のアドレスに対するアクセス後にオートプリチャージを行うことを指定する命令を、前記バスマスタと前記メモリコントローラとを接続するバスに対する排他アクセスを前記バスマスタが要求しているか否かを示す信号を用いて前記メモリコントローラへと送信する送信工程と、
前記メモリコントローラのアクセス手段が、前記第1のアドレスに対するアクセス後にオートプリチャージを行わないことが指定されている場合には前記DRAMの前記第1のアドレスに対してオートプリチャージなしのアクセスを行い、前記第1のアドレスに対するアクセス後にオートプリチャージを行うことが指定されている場合には前記DRAMの前記第1のアドレスに対してオートプリチャージ付きのアクセスを行う、アクセス工程と、
を含むことを特徴とする、情報処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−256247(P2012−256247A)
【公開日】平成24年12月27日(2012.12.27)
【国際特許分類】
【出願番号】特願2011−129540(P2011−129540)
【出願日】平成23年6月9日(2011.6.9)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】