(57)【要約】【課題】複数のバンクにアクセスする場合にキャッシュメモリを効率よく利用する。【解決手段】キャッシュメモリ１２０は、複数のバンクを備えるメモリ２００の一部の領域に保持されているデータをエントリ単位で保持する。バスマスタ１１０は、複数のバンクに保持されている同一データへのアクセス要求を行う場合には、１つのアクセスアドレスを発行する。この発行により、キャッシュメモリ１２０には、同一データが保持されている複数のバンクにおける各メモリアドレスに対応する１つのエントリのみが登録される。メモリコントローラ１３０は、バスマスタ１１０からアクセスアドレスが発行された場合には、そのアクセスアドレスに基づいて、同一データが保持されている複数のバンクにおける各メモリアドレスを特定する。そして、その特定された各メモリアドレスのうちの１つのメモリアドレスにアクセスする。【選択図】図１
2011257892.tif 000002
【特許請求の範囲】
【請求項１】
複数のバンクを備えるメモリの一部の領域に保持されているデータをエントリ単位で保持するキャッシュメモリと、
前記メモリへのアクセス要求を前記キャッシュメモリを介して行い、前記複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行う場合には前記同一データが保持されている複数のバンクにおける各メモリアドレスを特定するためのアクセスアドレスであって当該各メモリアドレスに対応する１つのエントリのみを前記キャッシュメモリに登録させるための１つのアクセスアドレスを発行するバスマスタと、
前記キャッシュメモリを介して前記バスマスタと接続されて前記バスマスタからのアクセス要求に基づいて前記メモリへのアクセス制御を行い、前記バスマスタから前記アクセスアドレスが発行された場合には当該アクセスアドレスに基づいて前記同一データが保持されている複数のバンクにおける各メモリアドレスを特定して前記特定された各メモリアドレスのうちの１つのメモリアドレスにアクセスするメモリコントローラと
を具備する情報処理装置。
【請求項２】
前記バスマスタは、前記同一データが保持されている複数のバンクにおける各メモリアドレスのうちの１つのメモリアドレスを前記アクセスアドレスとして発行し、
前記メモリコントローラは、前記同一データが保持されている複数のバンクにおける各メモリアドレスのうちの１つのメモリアドレスとして前記アクセスアドレスを特定し、前記同一データが保持されている複数のバンクにおける各メモリアドレスのうちの他のメモリアドレスを前記アクセスアドレスと所定値との演算により特定する
請求項１記載の情報処理装置。
【請求項３】
前記メモリコントローラは、前記特定された各メモリアドレスに対応するバンクのうちアクセス時間の少ないバンクを１つ選択して当該選択されたバンクにおけるメモリアドレスを前記１つのメモリアドレスとして前記同一データにアクセスする請求項１記載の情報処理装置。
【請求項４】
前記バスマスタは、前記同一データへのアクセス要求として前記同一データを読み出すアクセス要求を行い、
前記メモリコントローラは、前記同一データを読み出すアクセス要求が前記バスマスタから出力された場合には前記１つのメモリアドレスにアクセスして当該メモリアドレスに保持されている前記同一データを読み出す
請求項１記載の情報処理装置。
【請求項５】
前記バスマスタは、前記少なくとも２つのバンクに前記同一データを書き込むアクセス要求を行う場合には当該書込対象となる複数のバンクにおける各メモリアドレスを特定するためのアクセスアドレスとして前記１つのアクセスアドレスを発行し、
前記メモリコントローラは、前記同一データを書き込むアクセス要求が前記バスマスタから出力された場合には前記バスマスタから発行された前記アクセスアドレスに基づいて前記書込対象となる複数のバンクにおける各メモリアドレスを特定して前記特定された各メモリアドレスにアクセスして当該各メモリアドレスに前記同一データを書き込む
請求項１記載の情報処理装置。
【請求項６】
前記バスマスタは、前記同一データを複数のバンクに保持する設定の解除後には前記アクセスアドレスを前記同一データが保持されていた複数のバンクのうちの１つのバンクにおけるメモリアドレスを特定するためのアクセスアドレスとして発行し、
前記メモリコントローラは、前記設定の解除後において前記バスマスタから前記アクセスアドレスが発行された場合には当該アクセスアドレスに基づいて前記１つのバンクにおけるメモリアドレスを特定して前記特定されたメモリアドレスにアクセスする
請求項１記載の情報処理装置。
【請求項７】
前記設定の解除後に発行されるアクセスアドレスは、当該アクセスアドレスのアドレス変換が行われる場合には少なくとも当該アドレス変換単位で連続するアドレスであり、一方、当該アクセスアドレスのアドレス変換が行われない場合には当該アクセスアドレスに対応するメモリアドレスの全体が前記バスマスタの物理アドレス空間で連続するアドレスである請求項６記載の情報処理装置。
【請求項８】
前記メモリコントローラは、前記情報処理装置におけるプログラムの起動終了後または動作モードの切り替え時において前記同一データが保持されるバンクの数を調整する請求項１記載の情報処理装置。
【請求項９】
前記メモリコントローラは、特定の範囲のメモリアドレスへのアクセス要求の有無またはレジスタ設定に基づいて前記同一データを前記少なくとも２つのバンクに保持させるか否かの切替を行う請求項１記載の情報処理装置。
【請求項１０】
前記情報処理装置は、前記バスマスタを複数備え、
前記メモリコントローラは、前記複数のバスマスタのうちの特定のバスマスタから前記同一データを読み出すアクセス要求が出力された場合にのみ前記同一データが保持されている複数のバンクからの前記同一データの選択読み出しを行う
請求項１記載の情報処理装置。
【請求項１１】
前記メモリコントローラは、前記特定された各メモリアドレスが、読み出しのみを行うデータ領域に対応する場合にのみ前記同一データが保持されている複数のバンクからの前記同一データの選択読み出しを行う請求項１記載の情報処理装置。
【請求項１２】
前記キャッシュメモリは、遅延書き込みを行うキャッシュメモリであり、
前記キャッシュメモリまたは前記メモリコントローラに書き込み無効領域を設定して前記書き込み無効領域のメモリアドレスへの書き込みアクセス要求が前記バスマスタから出力された場合には当該書き込みアクセス要求を前記キャッシュメモリまたは前記メモリコントローラにより無効とする
請求項１記載の情報処理装置。
【請求項１３】
前記書き込み無効領域として、その時点でのスタックの未使用領域を指定する請求項１２記載の情報処理装置。
【請求項１４】
前記書き込み無効領域に対する読み出しアクセス要求が前記バスマスタから出力された場合には前記キャッシュメモリまたは前記メモリコントローラがエラー応答を返す請求項１２記載の情報処理装置。
【請求項１５】
前記メモリコントローラは、前記アクセス制御によりバンク競合が発生した場合には当該競合が発生したバンク以外のバンクの少なくとも１つに対してリフレッシュを行う請求項１記載の情報処理装置。
【請求項１６】
遅延書き込みを行うキャッシュメモリと、
複数のバンクを備えるメモリへのアクセス要求を前記キャッシュメモリを介して行い、前記複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行うバスマスタと、
前記キャッシュメモリを介して前記バスマスタと接続されて前記バスマスタからのアクセス要求に基づいて前記メモリへのアクセス制御を行うメモリコントローラとを具備し、
前記キャッシュメモリまたは前記メモリコントローラに書き込み無効領域を設定して前記書き込み無効領域のメモリアドレスへの書き込みアクセス要求が前記バスマスタから出力された場合には当該書き込みアクセス要求を前記キャッシュメモリまたは前記メモリコントローラにより無効とする
情報処理装置。
【請求項１７】
複数のバンクを備えるメモリへのアクセス要求を行い、前記複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行うバスマスタと、
前記同一データへのアクセス要求に基づいて前記メモリへのアクセス制御を行い、当該アクセス制御によりバンク競合が発生した場合には当該競合が発生したバンク以外のバンクの少なくとも１つに対してリフレッシュを行うメモリコントローラと
を具備する情報処理装置。
【請求項１８】
複数のバンクを備えるメモリへのアクセス要求をキャッシュメモリを介して行うバスマスタから、前記複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行うためのアクセスアドレスであって、前記同一データが保持されている複数のバンクにおける各メモリアドレスを特定して当該各メモリアドレスに対応する１つのエントリのみを前記キャッシュメモリに登録させるための１つのアクセスアドレスを前記キャッシュメモリを介して受け付ける受付部と、
前記バスマスタからのアクセス要求に基づいて前記メモリへのアクセス制御を行い、前記バスマスタから前記アクセスアドレスが発行された場合には当該アクセスアドレスに基づいて前記同一データが保持されている複数のバンクにおける各メモリアドレスを特定して前記特定された各メモリアドレスのうちの１つのメモリアドレスにアクセスするアクセス制御部と
を具備するメモリ制御装置。
【請求項１９】
メモリに備えられる複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行う場合には前記同一データが保持されている複数のバンクにおける各メモリアドレスを特定するためのアクセスアドレスであって当該各メモリアドレスに対応する１つのエントリのみをキャッシュメモリに登録させるための１つのアクセスアドレスを発行する発行手順と、
前記アクセスアドレスが発行された場合には当該アクセスアドレスに基づいて前記同一データが保持されている複数のバンクにおける各メモリアドレスを特定して前記特定された各メモリアドレスのうちの１つのメモリアドレスにアクセスするアクセス手順と
を具備するメモリアクセス方法。
【請求項２０】
メモリに備えられる複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行う場合には前記同一データが保持されている複数のバンクにおける各メモリアドレスを特定するためのアクセスアドレスであって当該各メモリアドレスに対応する１つのエントリのみをキャッシュメモリに登録させるための１つのアクセスアドレスを発行する発行手順と、
前記アクセスアドレスが発行された場合には当該アクセスアドレスに基づいて前記同一データが保持されている複数のバンクにおける各メモリアドレスを特定して前記特定された各メモリアドレスのうちの１つのメモリアドレスにアクセスするアクセス手順と
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、複数のバンクを用いて各種処理を行う情報処理装置、メモリ制御装置およびメモリアクセス方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
従来、複数のバンクを備えるメモリにアクセスする場合に、これらの各バンクのうち１または２以上のバンクに対して同時にアクセスすることが可能なメモリ制御装置が存在する。
【０００３】
このように複数のバンクを備えるメモリにおいて、１つのデータが１つのバンクに書き込まれている場合に、バースト長が比較的短いデータを各バンクから読み出す場合を想定する。例えば、複数のデータを連続して読み出す場合において、この読出対象となる複数のデータが書き込まれているバンクが同一である場合には、同一のバンクから連続してデータを読み出す必要がある。この場合には、バンク衝突によるペナルティが発生するため、メモリアクセスに要する時間が長くなり、アクセス効率が低下するおそれがある。
【０００４】
そこで、複数のバンクを備えるメモリにおいて同一データを複数のバンクに書き込んでおき、各バンクからのデータ読み出し時には、読出対象となる複数のバンクのうち、バンク衝突が少ないバンクを選択して読み出すメモリ制御装置が提案されている。
【０００５】
例えば、複数のバンクに同一データを書き込み、同一バンクの異なるロウアドレスに対してデータ読み出しが発生した場合には、異なるバンクからデータを読み出すメモリアクセス装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−１４９４８７号公報（図１）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述の従来技術によれば、同一データを複数のバンクに書き込んでおき、各バンクからのデータ読み出し時には、バンク衝突が少ないバンクを選択して読み出すため、バンク衝突を軽減させ、アクセス効率を高めることができる。
【０００８】
ここで、アクセス効率をさらに高めるため、バスにアクセスしてそのバスに対してバス信号（書き込みデータ等）を送出するバスマスタ（データ処理装置）と、メモリ制御装置との間にキャッシュメモリを設けることが考えられる。このようにキャッシュメモリを設けた場合において、例えば、同一データが保持されている複数のバンクの何れかにバスマスタがアクセスする場合を想定する。この場合には、これらの複数のバンクにおける何れかのアドレス（同一データが保持されているアドレス）に対するアクセス要求をバスマスタが出力すると、バンク衝突が少ないバンクをメモリ制御装置が選択する。
【０００９】
しかしながら、このようにバスマスタから複数のアドレス（バンクのアドレス）にアクセスすると、キャッシュメモリに同一データが複数登録されることになる。この場合には、複数のアドレスの分だけ、キャッシュ領域を消費してしまうため、キャッシュメモリの利用効率が低下するおそれがある。
【００１０】
本発明はこのような状況に鑑みてなされたものであり、複数のバンクにアクセスする場合にキャッシュメモリを効率よく利用することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、複数のバンクを備えるメモリの一部の領域に保持されているデータをエントリ単位で保持するキャッシュメモリと、上記メモリへのアクセス要求を上記キャッシュメモリを介して行い、上記複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行う場合には上記同一データが保持されている複数のバンクにおける各メモリアドレスを特定するためのアクセスアドレスであって当該各メモリアドレスに対応する１つのエントリのみを上記キャッシュメモリに登録させるための１つのアクセスアドレスを発行するバスマスタと、上記キャッシュメモリを介して上記バスマスタと接続されて上記バスマスタからのアクセス要求に基づいて上記メモリへのアクセス制御を行い、上記バスマスタから上記アクセスアドレスが発行された場合には当該アクセスアドレスに基づいて上記同一データが保持されている複数のバンクにおける各メモリアドレスを特定して上記特定された各メモリアドレスのうちの１つのメモリアドレスにアクセスするメモリコントローラとを具備する情報処理装置およびメモリアクセス方法ならびに当該方法をコンピュータに実行させるプログラムである。これにより、複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行う場合には１つのアクセスアドレスを発行し、このアクセスアドレスに基づいて、同一データが保持されている複数のバンクにおける各メモリアドレスを特定し、この特定された各メモリアドレスのうちの１つのメモリアドレスにアクセスするという作用をもたらす。
【００１２】
また、この第１の側面において、上記バスマスタは、上記同一データが保持されている複数のバンクにおける各メモリアドレスのうちの１つのメモリアドレスを上記アクセスアドレスとして発行し、上記メモリコントローラは、上記同一データが保持されている複数のバンクにおける各メモリアドレスのうちの１つのメモリアドレスとして上記アクセスアドレスを特定し、上記同一データが保持されている複数のバンクにおける各メモリアドレスのうちの他のメモリアドレスを上記アクセスアドレスと所定値との演算により特定するようにしてもよい。これにより、同一データが保持されている複数のバンクにおける各メモリアドレスのうちの１つのメモリアドレスとしてアクセスアドレスを特定し、同一データが保持されている複数のバンクにおける各メモリアドレスのうちの他のメモリアドレスをアクセスアドレスと所定値との演算により特定するという作用をもたらす。
【００１３】
また、この第１の側面において、上記メモリコントローラは、上記特定された各メモリアドレスに対応するバンクのうちアクセス時間の少ないバンクを１つ選択して当該選択されたバンクにおけるメモリアドレスを上記１つのメモリアドレスとして上記同一データにアクセスするようにしてもよい。これにより、特定された各メモリアドレスに対応するバンクのうちアクセス時間の少ないバンクを１つ選択し、この選択されたバンクにおけるメモリアドレスにアクセスして同一データにアクセスするという作用をもたらす。
【００１４】
また、この第１の側面において、上記バスマスタは、上記同一データへのアクセス要求として上記同一データを読み出すアクセス要求を行い、上記メモリコントローラは、上記同一データを読み出すアクセス要求が上記バスマスタから出力された場合には上記１つのメモリアドレスにアクセスして当該メモリアドレスに保持されている上記同一データを読み出すようにしてもよい。これにより、同一データを読み出すアクセス要求がバスマスタから出力された場合には、１つのメモリアドレスにアクセスしてそのメモリアドレスに保持されている同一データを読み出すという作用をもたらす。
【００１５】
また、この第１の側面において、上記バスマスタは、上記少なくとも２つのバンクに上記同一データを書き込むアクセス要求を行う場合には当該書込対象となる複数のバンクにおける各メモリアドレスを特定するためのアクセスアドレスとして上記１つのアクセスアドレスを発行し、上記メモリコントローラは、上記同一データを書き込むアクセス要求が上記バスマスタから出力された場合には上記バスマスタから発行された上記アクセスアドレスに基づいて上記書込対象となる複数のバンクにおける各メモリアドレスを特定して上記特定された各メモリアドレスにアクセスして当該各メモリアドレスに上記同一データを書き込むようにしてもよい。これにより、同一データを書き込むアクセス要求が出力された場合には、アクセスアドレスに基づいて、書込対象となる複数のバンクにおける各メモリアドレスを特定し、この特定された各メモリアドレスにアクセスして同一データを書き込むという作用をもたらす。
【００１６】
また、この第１の側面において、上記バスマスタは、上記同一データを複数のバンクに保持する設定の解除後には上記アクセスアドレスを上記同一データが保持されていた複数のバンクのうちの１つのバンクにおけるメモリアドレスを特定するためのアクセスアドレスとして発行し、上記メモリコントローラは、上記設定の解除後において上記バスマスタから上記アクセスアドレスが発行された場合には当該アクセスアドレスに基づいて上記１つのバンクにおけるメモリアドレスを特定して上記特定されたメモリアドレスにアクセスするようにしてもよい。これにより、同一データを複数のバンクに保持する設定の解除後において、バスマスタからアクセスアドレスが発行された場合には、そのアクセスアドレスに基づいて、１つのバンクにおけるメモリアドレスを特定し、この特定されたメモリアドレスにアクセスするという作用をもたらす。
【００１７】
また、この第１の側面において、上記設定の解除後に発行されるアクセスアドレスは、当該アクセスアドレスのアドレス変換が行われる場合には少なくとも当該アドレス変換単位で連続するアドレスとし、一方、当該アクセスアドレスのアドレス変換が行われない場合には当該アクセスアドレスに対応するメモリアドレスの全体が上記バスマスタの物理アドレス空間で連続するアドレスとするようにしてもよい。これにより、同一データを複数のバンクに保持する設定の解除後において、バスマスタから適切なアクセスアドレスを発行するという作用をもたらす。
【００１８】
また、この第１の側面において、上記メモリコントローラは、上記情報処理装置におけるプログラムの起動終了後または動作モードの切り替え時において上記同一データが保持されるバンクの数を調整するようにしてもよい。これにより、情報処理装置におけるプログラムの起動終了後、または、動作モードの切り替え時において、同一データが保持されるバンクの数を調整するという作用をもたらす。
【００１９】
また、この第１の側面において、上記メモリコントローラは、特定の範囲のメモリアドレスへのアクセス要求の有無またはレジスタ設定に基づいて上記同一データを上記少なくとも２つのバンクに保持させるか否かの切替を行うようにしてもよい。これにより、特定の範囲のメモリアドレスへのアクセス要求の有無、または、レジスタ設定に基づいて、同一データを複数のバンクに保持させるか否かの切替を行うという作用をもたらす。
【００２０】
また、この第１の側面において、上記情報処理装置は、上記バスマスタを複数備え、上記メモリコントローラは、上記複数のバスマスタのうちの特定のバスマスタから上記同一データを読み出すアクセス要求が出力された場合にのみ上記同一データが保持されている複数のバンクからの上記同一データの選択読み出しを行うようにしてもよい。これにより、複数のバスマスタのうちの特定のバスマスタから、同一データを読み出すアクセス要求が出力された場合にのみ、同一データが保持されている複数のバンクからの同一データの選択読み出しを行うという作用をもたらす。
【００２１】
また、この第１の側面において、上記メモリコントローラは、上記特定された各メモリアドレスが、読み出しのみを行うデータ領域に対応する場合にのみ上記同一データが保持されている複数のバンクからの上記同一データの選択読み出しを行うようにしてもよい。これにより、特定された各メモリアドレスが、読み出しのみを行うデータ領域に対応する場合にのみ、同一データが保持されている複数のバンクからの同一データの選択読み出しを行うという作用をもたらす。
【００２２】
また、この第１の側面において、上記キャッシュメモリは、遅延書き込みを行うキャッシュメモリであり、上記キャッシュメモリまたは上記メモリコントローラに書き込み無効領域を設定して上記書き込み無効領域のメモリアドレスへの書き込みアクセス要求が上記バスマスタから出力された場合には当該書き込みアクセス要求を上記キャッシュメモリまたは上記メモリコントローラにより無効とするようにしてもよい。これにより、キャッシュメモリまたはメモリコントローラに書き込み無効領域を設定し、この書き込み無効領域のメモリアドレスへの書き込みアクセス要求が、バスマスタから出力された場合には、その書き込みアクセス要求をキャッシュメモリまたはメモリコントローラにより無効とするという作用をもたらす。
【００２３】
また、この第１の側面において、上記書き込み無効領域として、その時点でのスタックの未使用領域を指定するようにしてもよい。これにより、書き込み無効領域としてその時点でのスタックの未使用領域を指定するという作用をもたらす。
【００２４】
また、この第１の側面において、上記書き込み無効領域に対する読み出しアクセス要求が上記バスマスタから出力された場合には上記キャッシュメモリまたは上記メモリコントローラがエラー応答を返すようにしてもよい。これにより、書き込み無効領域に対する読み出しアクセス要求が、バスマスタから出力された場合には、キャッシュメモリまたはメモリコントローラがエラー応答を返すという作用をもたらす。
【００２５】
また、この第１の側面において、上記メモリコントローラは、上記アクセス制御によりバンク競合が発生した場合には当該競合が発生したバンク以外のバンクの少なくとも１つに対してリフレッシュを行うようにしてもよい。これにより、アクセス制御によりバンク競合が発生した場合には、その競合が発生したバンク以外のバンクの少なくとも１つに対してリフレッシュを行うという作用をもたらす。
【００２６】
また、本発明の第２の側面は、遅延書き込みを行うキャッシュメモリと、複数のバンクを備えるメモリへのアクセス要求を上記キャッシュメモリを介して行い、上記複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行うバスマスタと、上記キャッシュメモリを介して上記バスマスタと接続されて上記バスマスタからのアクセス要求に基づいて上記メモリへのアクセス制御を行うメモリコントローラとを具備し、上記キャッシュメモリまたは上記メモリコントローラに書き込み無効領域を設定して上記書き込み無効領域のメモリアドレスへの書き込みアクセス要求が上記バスマスタから出力された場合には当該書き込みアクセス要求を上記キャッシュメモリまたは上記メモリコントローラにより無効とする情報処理装置およびメモリアクセス方法ならびに当該方法をコンピュータに実行させるプログラムである。これにより、キャッシュメモリまたはメモリコントローラに書き込み無効領域を設定し、この書き込み無効領域のメモリアドレスへの書き込みアクセス要求が、バスマスタから出力された場合には、その書き込みアクセス要求をキャッシュメモリまたはメモリコントローラにより無効とするという作用をもたらす。
【００２７】
また、本発明の第３の側面は、複数のバンクを備えるメモリへのアクセス要求を行い、上記複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行うバスマスタと、上記同一データへのアクセス要求に基づいて上記メモリへのアクセス制御を行い、当該アクセス制御によりバンク競合が発生した場合には当該競合が発生したバンク以外のバンクの少なくとも１つに対してリフレッシュを行うメモリコントローラとを具備する情報処理装置およびメモリアクセス方法ならびに当該方法をコンピュータに実行させるプログラムである。これにより、同一データへのアクセス要求に基づいてメモリへのアクセス制御を行い、このアクセス制御によりバンク競合が発生した場合にはその競合が発生したバンク以外のバンクの少なくとも１つに対してリフレッシュを行うという作用をもたらす。
【００２８】
また、本発明の第４の側面は、複数のバンクを備えるメモリへのアクセス要求をキャッシュメモリを介して行うバスマスタから、上記複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行うためのアクセスアドレスであって、上記同一データが保持されている複数のバンクにおける各メモリアドレスを特定して当該各メモリアドレスに対応する１つのエントリのみを上記キャッシュメモリに登録させるための１つのアクセスアドレスを上記キャッシュメモリを介して受け付ける受付部と、上記バスマスタからのアクセス要求に基づいて上記メモリへのアクセス制御を行い、上記バスマスタから上記アクセスアドレスが発行された場合には当該アクセスアドレスに基づいて上記同一データが保持されている複数のバンクにおける各メモリアドレスを特定して上記特定された各メモリアドレスのうちの１つのメモリアドレスにアクセスするアクセス制御部とを具備するメモリ制御装置およびメモリアクセス方法ならびに当該方法をコンピュータに実行させるプログラムである。これにより、複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行う１つのアクセスアドレスを受け付けると、このアクセスアドレスに基づいて、同一データが保持されている複数のバンクにおける各メモリアドレスを特定し、この特定された各メモリアドレスのうちの１つのメモリアドレスにアクセスするという作用をもたらす。
【発明の効果】
【００２９】
本発明によれば、複数のバンクにアクセスする場合にキャッシュメモリを効率よく利用することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００３０】
【図１】本発明の第１の実施の形態における情報処理装置１００の機能構成例を示すブロック図およびキャッシュメモリ１２０における保持内容の一例を示す図である。
【図２】本発明の第１の実施の形態におけるメモリコントローラ１３０によるアドレスの算出対象となる複数のバンクにおけるデータの配置例を示す図である。
【図３】本発明の第１の実施の形態における情報処理装置１００の機能構成例を示すブロック図およびキャッシュメモリ１２０における保持内容の一例を示す図である。
【図４】本発明の第１の実施の形態における情報処理装置１００による物理アドレスおよび仮想アドレスのアドレス変換例を模式的に示す図である。
【図５】本発明の第１の実施の形態における情報処理装置１００による物理アドレスおよび仮想アドレスのアドレス変換例を模式的に示す図である。
【図６】本発明の第１の実施の形態におけるメモリ２００上のスタック領域にアクセスする場合におけるデータの流れを模式的に示す図である。
【図７】本発明の第１の実施の形態におけるメモリ２００上のスタック領域にアクセスする場合におけるデータの流れを模式的に示す図である。
【図８】本発明の第１の実施の形態におけるメモリ２００上のスタック領域にアクセスする場合におけるスタック領域の無効有効を判定する判定方法を模式的に示す図である。
【図９】本発明の第１の実施の形態におけるメモリコントローラ１３０によるリフレッシュ処理の一例を模式的に示す図である。
【図１０】本発明の第１の実施の形態におけるメモリ２００によるセルフリフレッシュ処理の一例を模式的に示す図である。
【図１１】本発明の第１の実施の形態における情報処理装置１００によるデータ読出処理の処理手順の一例を示すフローチャートである。
【図１２】本発明の第１の実施の形態における情報処理装置１００によるデータ読出処理の処理手順のうちのキャッシュエントリ無効化処理の一例を示すフローチャートである。
【図１３】本発明の第１の実施の形態における情報処理装置１００によるデータ書込処理の処理手順の一例を示すフローチャートである。
【図１４】本発明の第１の実施の形態における情報処理装置１００によるデータ読出処理の処理手順の一例を示すフローチャートである。
【図１５】本発明の第１の実施の形態における情報処理装置１００によるデータ読出処理の処理手順の一例を示すフローチャートである。
【図１６】本発明の第１の実施の形態における情報処理装置１００によるデータ読出処理の処理手順のうちのキャッシュエントリ無効化処理の一例を示すフローチャートである。
【図１７】本発明の第１の実施の形態における情報処理装置１００によるデータ書込処理の処理手順の一例を示すフローチャートである。
【図１８】本発明の第１の実施の形態における情報処理装置１００による複数バンク対応解除処理の処理手順の一例を示すフローチャートである。
【図１９】本発明の第１の実施の形態における情報処理装置１００による複数バンク設定処理の処理手順の一例を示すフローチャートである。
【図２０】本発明の第１の実施の形態における情報処理装置１００による複数バンク読出処理の処理手順の一例を示すフローチャートである。
【図２１】本発明の第１の実施の形態における情報処理装置１００による複数バンク読出処理の処理手順の一例を示すフローチャートである。
【図２２】本発明の第１の実施の形態における情報処理装置１００による複数バンク読出処理の処理手順の一例を示すフローチャートである。
【図２３】本発明の第１の実施の形態における情報処理装置１００によるライトアクセス処理の処理手順の一例を示すフローチャートである。
【図２４】本発明の第１の実施の形態における情報処理装置１００によるライトアクセス処理の処理手順の一例を示すフローチャートである。
【図２５】本発明の第１の実施の形態における情報処理装置１００によるリフレッシュ処理の処理手順の一例を示すフローチャートである。
【図２６】本発明の第１の実施の形態における情報処理装置１００によるリフレッシュ処理の処理手順の一例を示すフローチャートである。
【図２７】本発明の第１の実施の形態における情報処理装置１００による複数バンク対応切替処理の処理手順の一例を示すフローチャートである。
【図２８】本発明の第１の実施の形態における情報処理装置１００による複数バンク対応切替処理の処理手順の一例を示すフローチャートである。
【図２９】本発明の第１の実施の形態における情報処理装置１００による複数バンク対応切替処理の処理手順の一例を示すフローチャートである。
【図３０】本発明の第１の実施の形態の変形例における情報処理装置６００の機能構成例を示すブロック図である。
【図３１】本発明の第１の実施の形態の変形例における情報処理装置６２０の機能構成例を示すブロック図である。
【図３２】本発明の第１の実施の形態の適用例における撮像装置７００の内部構成例を示すブロック図である。
【図３３】本発明の第１の実施の形態の適用例におけるバスマスタにより行われる処理の一例を示す図である。
【図３４】本発明の第１の実施の形態の適用例におけるメモリ７５０における複数バンク対応を調整する場合における調整方法を模式的に示す図である。
【発明を実施するための形態】
【００３１】
以下、本発明を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（メモリアクセス制御：複数のバンクに保持されている同一データにアクセスする場合にキャッシュメモリに１つのエントリのみが登録されるように１つのアクセスアドレスのみを用いる例）
２．変形例
３．適用例
【００３２】
＜１．第１の実施の形態＞
［情報処理装置の構成例］
図１は、本発明の第１の実施の形態における情報処理装置１００の機能構成例を示すブロック図およびキャッシュメモリ１２０における保持内容の一例を示す図である。図１（ａ）には、情報処理装置１００の機能構成例を示す。情報処理装置１００は、バスマスタ１１０と、キャッシュメモリ１２０と、メモリコントローラ１３０と、メモリ２００とを備える。
【００３３】
メモリ２００は、バスマスタ１１０において処理対象となる各種データを記憶するメモリである。また、メモリ２００には、複数のバンク（バンク１（２１１）乃至バンク４（２１４））が設けられている。ここで、バンクは、メモリ２００を管理する際の管理単位である。なお、図１（ａ）では、説明の容易のため、比較的少ない数のバンク（４つのバンク）をメモリ２００に設ける例について説明する。
【００３４】
バスマスタ１１０は、キャッシュメモリ１２０を介してバスにアクセスして、そのバスに対してバス信号（アドレス、制御信号、書込みデータ等）を送出するデータ処理装置である。すなわち、バスマスタ１１０は、メモリ２００へのアクセス要求をキャッシュメモリ１２０を介して行う。なお、本発明の第１の実施の形態で示す各図では、バスマスタ１１０およびキャッシュメモリ１２０を異なる構成とする例を示すが、バスマスタ１１０がキャッシュメモリ１２０を内蔵する構成としてもよい。また、バスマスタ１１０は、例えば、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）等に相当する。なお、バスマスタ１１０から発行されるアクセスアドレスについて、物理アドレスおよび仮想アドレスの変換を行われる場合には、ＭＭＵ（Memory Management Unit：メモリ管理ユニット）が配置される。例えば、キャッシュメモリ１２０が物理アドレスで動作する構成の場合には、バスマスタ１１０およびキャッシュメモリ１２０の間にＭＭＵが配置される。また、キャッシュメモリ１２０が仮想アドレスで動作する構成の場合には、キャッシュメモリ１２０およびメモリコントローラ１３０の間にＭＭＵが配置される。
【００３５】
また、バスマスタ１１０は、例えば、メモリ２００における複数のバンクのうちの少なくとも２つのバンクに保持されている同一データへのアクセス要求を行う場合には、１つのアクセスアドレスを発行する。このアクセスアドレスは、同一データの保持対象となる複数のバンクにおける各メモリアドレスを特定するためのアクセスアドレスであり、その各メモリアドレスに対応する１つのエントリのみをキャッシュメモリ１２０に登録させるためのアクセスアドレスである。また、バスマスタ１１０は、同一データを複数のバンクに保持する設定が解除された後には、そのアクセスアドレスを、同一データが保持されていた複数のバンクのうちの１つのバンクにおけるメモリアドレスを特定するためのアクセスアドレスとして発行する。ここで、その設定の解除後に発行されるアクセスアドレスは、アクセスアドレスのアドレス変換が行われる場合には、少なくともアドレス変換単位で連続するアドレスとする。また、アクセスアドレスのアドレス変換が行われない場合には、アクセスアドレスに対応するメモリアドレスの全体がバスマスタ１１０の物理アドレス空間で連続するアドレスとする。
【００３６】
キャッシュメモリ１２０は、バスマスタ１１０およびメモリコントローラ１３０と接続されるキャッシュメモリであり、メモリ２００の一部の領域のコピーを保持し、遅延書き込みを行う。また、キャッシュメモリ１２０は、例えば、メモリ２００の一部の領域のコピーをエントリ単位で保持する。
【００３７】
メモリコントローラ１３０は、キャッシュメモリ１２０を介して受け取るバスマスタ１１０からのバス信号に基づいて、メモリ２００へのアクセス制御を行うメモリ制御装置である。すなわち、メモリコントローラ１３０は、キャッシュメモリ１２０を介してバスマスタ１１０と接続され、バスマスタ１１０からのアクセス要求に基づいてメモリ２００へのアクセス制御を行う。
【００３８】
また、メモリコントローラ１３０は、例えば、バスマスタ１１０からアクセスアドレスが発行された場合（複数のバンクの同一データへのアクセス要求）には、そのアクセスアドレスに基づいて、その複数のバンクにおける各メモリアドレスを特定する。そして、メモリコントローラ１３０は、その特定された各メモリアドレスに対応するバンクのうち、アクセス時間の少ないバンクを１つ選択し、この選択されたバンクにおけるメモリアドレスにアクセスする。なお、メモリコントローラ１３０は、キャッシュメモリ１２０を介してアクセスアドレスを受け付ける受付部と、そのアクセスアドレスに基づいてメモリ２００へのアクセス制御を行うアクセス制御部とを備えるメモリ制御装置である。すなわち、メモリコントローラ１３０は、特許請求の範囲に記載のメモリ制御装置の一例である。
【００３９】
また、メモリコントローラ１３０は、例えば、同一データを読み出すアクセス要求がバスマスタ１１０から出力された場合には、そのアクセスアドレスに基づいて特定された１つのメモリアドレスにアクセスしてその同一データを読み出す。また、メモリコントローラ１３０は、例えば、同一データを書き込むアクセス要求がバスマスタ１１０から出力された場合には、そのアクセスアドレスに基づいて、書込対象となる複数のバンクにおける各メモリアドレスを特定する。そして、メモリコントローラ１３０は、その特定された各メモリアドレスにアクセスしてその同一データを書き込む。
【００４０】
また、メモリコントローラ１３０は、例えば、同一データを複数のバンクに保持する設定が解除された後において、バスマスタ１１０からアクセスアドレスが発行された場合には、そのアクセスアドレスに基づいて１つのバンクにおけるメモリアドレスを特定する。  また、メモリコントローラ１３０は、例えば、情報処理装置１００におけるプログラムの起動終了後、または、動作モードの切り替え時において、同一データが保持されるバンクの数を調整する。また、メモリコントローラ１３０は、例えば、特定の範囲のメモリアドレスへのアクセス要求の有無、または、レジスタ設定に基づいて、同一データを複数のバンクに保持させるか否かの切替を行う。また、メモリコントローラ１３０は、例えば、アクセス制御によりバンク競合が発生した場合には、その競合が発生したバンク以外のバンクの少なくとも１つに対してリフレッシュを行う。
【００４１】
ここで、メモリ２００におけるバンク１（２１１）およびバンク２（２１２）に同一データを書き込む場合における書込処理の流れについて説明する。ここでは、バンク１（２１１）のアドレスＡ（２１５）と、バンク２（２１２）のアドレスＢ（２１６）とに同一データを書き込む場合を例にして説明する。
【００４２】
バスマスタ１１０は、バンク１（２１１）のアドレスＡ（２１５）と、バンク２（２１２）のアドレスＢ（２１６）とに同一データを書き込む場合には、１つの書き込みアドレスＸを使用する。このアドレスＸは、例えば、アドレスＡまたはアドレスＢと同一とすることができる（この例では、アドレスＸはアドレスＡと同一とする）。また、アドレスＸと同一とされたアドレス以外の他のアドレス（この例ではアドレスＢとする）については、アドレスＸに基づいて特定することができるアドレスを用いる。例えば、同一データが書き込まれるバンクにおける２つのアドレスの差分値を同一とすることにより、一方のアドレスに基づいて、他方のアドレスを特定することができる。例えば、「アドレスＡ−アドレスＢ＝所定値α」とすることができる。このように、同一データが書き込まれるバンクにおける２つのアドレスの差分値を同一とすることにより、一方のアドレスに基づいて他方のアドレスを容易に特定することができる。なお、１つのアドレスに基づく他のアドレスの算出方法については、図２を参照して詳細に説明する。
【００４３】
図１（ｂ）には、キャッシュメモリ１２０における保持内容の一例を示す。上述したように、バンク１（２１１）のアドレスＡ（２１５）と、バンク２（２１２）のアドレスＢ（２１６）とに同一データを書き込む場合には、バスマスタ１１０から１つの書き込みアドレスＸが発行される。このように発行された１つの書き込みアドレスＸについては、図１（ｂ）に示すように、キャッシュメモリ１２０に登録される。具体的には、その同一データに関するエントリとして、１つのエントリ（アドレスＸおよびその同一データ）がキャッシュメモリ１２０に登録される。
【００４４】
続いて、メモリコントローラ１３０が、バスマスタ１１０から発行された１つの書き込みアドレスＸに基づいて、書き込み対象となるバンクの２つのアドレス（アドレスＡおよびアドレスＢ）を特定する。このようにして特定されたアドレスＡおよびアドレスＢに、メモリコントローラ１３０が同一データを書き込む。
【００４５】
続いて、同一データが複数のバンクに書き込まれた場合において、その同一データをメモリ２００から読み出す場合における読出処理の流れについて説明する。ここでは、バンク１（２１１）のアドレスＡ（２１５）と、バンク２（２１２）のアドレスＢ（２１６）との何れか一方から、同一データを読み出す場合を例にして説明する。
【００４６】
バスマスタ１１０は、バンク１（２１１）のアドレスＡ（２１５）と、バンク２（２１２）のアドレスＢ（２１６）とに保持されている同一データの何れかを読み出す場合には、１つの読み出しアドレスＸを使用する。このアドレスＸは、上述した書き込みアドレスＸと同一である。また、このアドレスＸは、上述したように、アドレスＡおよびアドレスＢの何れか１つと同一とすることができ、一方のアドレスに基づいて、他方のアドレスを特定することができる。すなわち、バスマスタ１１０が、複数のバンクに保持されている同一データの何れかを読み出す場合には、１つの書き込みアドレスのみを使用する。言い換えると、同一データを保持する複数のバンクの組み合わせに対しては、常に１つのアドレスのみを使用する。
【００４７】
このように１つのアドレスを用いて、複数のバンクに保持されている同一データの何れかを読み出すことができるため、図１（ｂ）に示すように、その同一データに関するエントリとして１つのエントリのみをキャッシュメモリ１２０に登録する。このため、キャッシュメモリ１２０を有効に利用することができる。また、書き込みアドレスと読み出しアドレスとを同じアドレスとすることができるため、整合性を保つことができる。
【００４８】
なお、図１（ｂ）では、バンク３（２１３）のアドレスＣ（２１７）とバンク４（２１４）のアドレスＤ（２１８）とに保持されている同一データと、これに対応するアドレスＷとを、キャッシュメモリ１２０のエントリ登録例として示す。このアドレスＷを用いた書き込みおよび読み出しについても、対象とするバンクが異なる点以外は、上述した例と同様である。
【００４９】
ここで、複数のバンクが設けられているメモリから、バースト長が短いデータを読み出す場合における読み出し例について簡単に説明する。例えば、同一データを１つのバンクに保持させておく場合において、連続して同一のバンクがデータの読出対象となる場合には、バンク衝突によるペナルティが発生する。そこで、上述したように、同一データを複数のバンクに保持させておき、データの読出時に複数のバンクのうちからそのデータの読出対象となる適切なバンクを選択する。このように、同一データを複数のバンクに保持させておき、衝突の少ないバンクを選択してデータを読み出すことにより、バンクの衝突を軽減することができる。
【００５０】
ここで、例えば、バスマスタが、キャッシュメモリを介さずにメモリからデータの読み出しを行う場合を想定する（すなわち、図１（ａ）に示す構成から、キャッシュメモリ１２０を省略した場合）。この場合には、例えば、同一データを複数のバンク（アドレスＡおよびアドレスＢ）に保持させておき、その同一データを読み出すときには、バスマスタは、アドレスＡで読み出しても、アドレスＢで読み出してもよい。すなわち、アドレスＡおよびアドレスＢの何れかを用いて同一データを読み出す。
【００５１】
一方、バスマスタが、キャッシュメモリを介してメモリからデータの読み出しを行う場合（すなわち、図１（ａ）に示す構成）に、アドレスＡおよびアドレスＢの何れかを用いて同一データを読み出す場合を想定する。例えば、同一データを複数のバンク（アドレスＡおよびアドレスＢ）に保持させておき、その同一データを読み出す場合には、バスマスタが、アドレスＡまたはＢの何れかを用いて読み出しを行う。この場合には、アドレスＡおよびアドレスＢのそれぞれがキャッシュメモリに登録されてしまうため、貴重なキャッシュ領域を複数消費してしまうことになる。そこで、本発明の第１の実施の形態では、バスマスタが、複数のバンクに保持されている同一データの何れかを読み出す場合には、１つの書き込みアドレス（例えば、アドレスＸ）のみを使用する。これにより、キャッシュ領域の消費を抑制することができる。
【００５２】
［１つのアドレスに基づく他のアドレスの算出例］
図２は、本発明の第１の実施の形態におけるメモリコントローラ１３０によるアドレスの算出対象となる複数のバンクにおけるデータの配置例を示す図である。なお、図２に示す複数のバンク（バンク１（２１１）乃至バンク４（２１４））は、図１（ａ）および図２（ａ）に示すものと同様である。
【００５３】
図２（ａ）には、アドレスＡおよびＢのデータが同一であり、アドレスＣおよびＤのデータが同一であり、アドレスＥおよびＦのデータが同一である場合におけるデータの配置例を示す。すなわち、図２（ａ）では、２つのバンクに同一データを書き込む場合におけるデータの配置例を示す。
【００５４】
図２（ａ）に示す例では、所定値α＝（アドレスＡ−アドレスＢ）＝（アドレスＣ−アドレスＤ）＝（アドレスＥ−アドレスＦ）とすることにより、同一データが保持されている２つのアドレスの差分値を同一とすることができる。これにより、１つのアドレスに基づいて他のアドレスを容易に算出することができる。
【００５５】
図２（ｂ）には、アドレスＡ乃至Ｃのデータが同一であり、アドレスＤ乃至Ｆのデータが同一である場合におけるデータの配置例を示す。すなわち、図２（ｂ）では、３つのバンクに同一データを書き込む場合におけるデータの配置例を示す。
【００５６】
図２（ｂ）に示す例では、所定値α＝（アドレスＡ−アドレスＢ）＝（アドレスＢ−アドレスＣ）、所定値α＝（アドレスＤ−アドレスＥ）＝（アドレスＥ−アドレスＦ）、所定値α＝（アドレスＡ−アドレスＢ）＝（アドレスＤ−アドレスＥ）とする。これにより、同一データが保持されている３つのアドレスの各差分値を同一とすることができ、１つのアドレスに基づいて他のアドレスを容易に算出することができる。
【００５７】
図２（ｃ）には、アドレスＡ乃至Ｄのデータが同一であり、アドレスＥ乃至Ｈのデータが同一である場合におけるデータの配置例を示す。すなわち、図２（ｃ）では、４つのバンクに同一データを書き込む場合におけるデータの配置例を示す。
【００５８】
図２（ｃ）に示す例では、所定値α＝（アドレスＡ−アドレスＢ）＝（アドレスＢ−アドレスＣ）＝（アドレスＣ−アドレスＤ）とする。同様に、所定値α＝（アドレスＥ−アドレスＦ）＝（アドレスＦ−アドレスＧ）＝（アドレスＧ−アドレスＨ）、所定値α＝（アドレスＡ−アドレスＢ）＝（アドレスＥ−アドレスＦ）とする。これにより、同一データが保持されている４つのアドレスの各差分値を同一とすることができ、１つのアドレスに基づいて他のアドレスを容易に算出することができる。
【００５９】
このように、１つのアドレスに基づいて他のアドレスを容易に特定することができるため、各種装置に実装し易くなる。
【００６０】
［複数バンク対応の開放例］
図３は、本発明の第１の実施の形態における情報処理装置１００の機能構成例を示すブロック図およびキャッシュメモリ１２０における保持内容の一例を示す図である。図３では、複数バンクへの同一データの書き込みおよび選択読み出しを解除した場合における流れを示す。なお、図３（ａ）に示す構成は、図１（ａ）に示す例と同様である。
【００６１】
例えば、データ処理のスピードよりもメモリ２００のメモリ容量を優先する場合が想定される。この場合には、複数バンクへの同一データの書き込みを解除して、そのデータを１つのバンクにのみ保持させることができる。例えば、アドレスＡ（２１５）に書き込みを行う場合には、図１に示す例と同様に、アドレスＸを用いて書き込みを行うことにより、キャッシュメモリ１２０のデータをそのまま利用することができる。
【００６２】
また、この場合には、複数バンクの選択読み出しを解除して、そのデータ（元の同一データ）を１つのバンクにのみ保持させることになる。例えば、アドレスＡ（２１５）にアクセスする場合には、図１に示す例と同様に、アドレスＸを用いて読み出しを行うことにより、キャッシュメモリ１２０のデータをそのまま利用することができる。一方、アドレスＢ（２１６）にアクセスする場合には、これまで使用してなかったアドレスを使用することにより、キャッシュメモリ１２０を利用することができる。
【００６３】
ここで、アドレスＡ（２１５）にアクセスする場合に、図１（ａ）に示すアドレスＸと異なるアドレスを使用する場合を想定する。例えば、アドレスＸと異なるアドレスを使用したアクセスにより、アドレスＡにアクセスする場合には、ライトバックキャッシュに残っているデータが別の領域に書き込まれてしまうおそれがある。また、データの読出時に、アドレスＸと異なるアドレスを使用する場合には、キャッシュメモリ１２０にデータが残っているため、異なるデータが読めてしまうおそれがある。これらを回避するには、キャッシュメモリ１２０を一度書き戻したり、無効化したりしなければならず、切り替えに時間を要する。そこで、本発明の第１の実施の形態では、複数バンクへの同一データの書き込みおよび選択読み出しを解除した場合において、一方のバンクにアクセスする場合には、これまで使用していたアドレスを用いてアクセスを行う。また、他方のバンクにアクセスする場合には、これまで使用してなかったアドレスを使用する。
【００６４】
図３（ｂ）には、キャッシュメモリ１２０における保持内容の一例を示す。図３（ｂ）では、複数バンクへの同一データの書き込みおよび選択読み出しを解除した場合における保持内容例を示す。
【００６５】
［物理アドレスおよび仮想アドレスの変換例］
図４および図５は、本発明の第１の実施の形態における情報処理装置１００による物理アドレスおよび仮想アドレスのアドレス変換例を模式的に示す図である。図４（ａ）には、仮想アドレス空間を模式的に示し、図４（ｂ）には、物理アドレス空間を模式的に示す。また、この例では、データ群Ａ乃至Ｃが２つずつ異なるバンクに配置されている場合における物理アドレス空間（図４（ｂ）に示す）と、仮想アドレス空間（図４（ａ）に示す）とのアドレス変換の一例を示す。ここで、データ群Ａ乃至Ｃは、アドレス変換単位３１１乃至３１６のそれぞれに保持されているものとする。また、図４に示す状態で、複数バンク対応を解消する場合におけるメモリの開放例を、図５に示す。
【００６６】
図５には、物理アドレス空間のうちの一部を開放した例を示す。具体的には、図５（ｃ）に示す物理アドレス空間のうち、グレーにしていない部分（アドレス変換単位３１２乃至３１４）を開放した例を示す。なお、図５（ａ）に示す配列は、図４（ａ）に示す例と同様であり、図５（ｃ）に示す配列は、図４（ｂ）に示す例と同様である。
【００６７】
また、図５（ｂ）には、図５（ｃ）に示す物理アドレス空間を開放した後における物理アドレス空間を示す。この例では、仮想アドレスがそのままになるようにアドレス変換単位で開放した場合を示し、開放後の物理アドレス空間におけるアドレス変換単位３１２乃至３１４に保持されるデータ群を「データ群Ｄ」、「データ群Ｅ」、「データ群Ｆ」で示す。
【００６８】
図５に示すように開放した場合には、アドレス変換、キャッシュともに対応の必要がない。また、複数バンク対応していたアドレスについてもそのままアクセスすることができる。また、このように開放をすることにより、２つのバンク対応の有無に関係なく、仮想アドレス空間上で連続アドレスにすることができる。さらに、仮想アドレスで連続になるように開放することにより、アドレス変換テーブルをそのまま使用することができる。
【００６９】
ここで、例えば、図４（ｂ）に示す上側の３つのアドレス変換単位３１１乃至３１３のそれぞれをアドレス変換単位で開放する場合を想定する。この場合には、アドレス変換を変えることにより、複数バンク対応時と同じアドレスにすることが可能である。すなわち、２つのバンク対応の有無に関係なく、仮想アドレス空間上で連続アドレスにすることができる。ただし、このように開放した場合には、アドレス変換を変更することになるため、仮想アドレスに対応する物理アドレスが異なることになる。このため、アドレス変換テーブルの変更が必要になる。また、物理アドレスキャッシュの場合には、キャッシュの対応も必要となる。
【００７０】
また、例えば、図４（ｂ）に示すアドレス変換単位３１１乃至３１６のそれぞれを２つに分割して分割後の一方を開放する場合を想定する。この場合には、アドレス変換を工夫しても、データ群Ａ乃至Ｃの何れについても複数バンク対応と同じアドレスにすることができない。このように、アドレス変換単位で連続して開放しない場合には、２つのバンク非対応時は仮想アドレス空間上で連続アドレスとはならない。
【００７１】
［スタック領域へのアクセス例］
図６および図７は、本発明の第１の実施の形態におけるメモリ２００上のスタック領域にアクセスする場合におけるデータの流れを模式的に示す図である。
【００７２】
図６（ａ）には、アドレスＸ（２２３）がスタック領域２２０における有効領域２２１に存在する場合に、アドレスＸへ書き込みを行う場合を示す。具体的には、図６（ａ）には、キャッシュメモリ１２０にデータ（エントリ１２１）が保持されているが、メモリ２００にはそのデータがまだ書き込まれていない状態を示す。
【００７３】
図６（ｂ）には、他のアクセスのアドレスＺへのアクセスによりキャッシュメモリ１２０のライトバックが発生し、アドレスＸのデータがメモリ２００に書き込まれる状態を示す。この場合には、図６（ｂ）に示すように、アドレスＸ（２２３）がスタック領域２２０の有効領域２２１に存在するとは限らず、無効領域２２２に存在することがある。
【００７４】
このように、アドレスＸ（２２３）が無効領域２２２に存在する場合には、アドレスＸ（２２３）にデータの書き込みを行っても利用されない。このため、アドレスＸ（２２３）が無効領域２２２に存在する場合には、メモリコントローラ１３０は、そのデータをメモリ２００に書かずに、バスマスタ１１０に正常応答を返す。これにより、メモリアクセス時間を削減することができる。なお、ライトバックキャッシュだけではなく、バスマスタ１１０のライトからメモリへのライトまでの間に遅延があるものについても適用することができる。
【００７５】
図７では、図６（ｂ）に示す処理（メモリコントローラ１３０が無効領域２２２へのライトをせずに正常応答をバスマスタ１１０に返す処理）をキャッシュ側で行う例を示す。
【００７６】
図７（ａ）には、キャッシュメモリが１段である場合（キャッシュメモリ１２５）の構成例を示す。この例では、キャッシュメモリ１２５が正常応答をバスマスタ１１０に返す。
【００７７】
図７（ｂ）には、キャッシュメモリが２段である場合（キャッシュメモリ１２６および１２７）の構成例を示す。この例では、キャッシュメモリ１２６が正常応答をバスマスタ１１０に返す。
【００７８】
このように、バスマスタ１１０に比較的近いキャッシュメモリ（キャッシュメモリ１２５および１２６）により、無効領域２２２へのライトをせずに正常応答をバスマスタ１１０に返す処理を行う。これにより、バスマスタ１１０から見た無効領域２２２へのアクセス時間を短くすることができる。なお、図７に示す例では、キャッシュメモリが１段または２段である場合の構成例を示したが、キャッシュメモリが３段以上である場合についても適用することができる。
【００７９】
すなわち、情報処理装置１００は、キャッシュメモリ１２０またはメモリコントローラ１３０に書き込み無効領域を設定する。そして、その書き込み無効領域のメモリアドレスへの書き込みアクセス要求がバスマスタ１１０から出力された場合には、その書き込みアクセス要求をキャッシュメモリ１２０またはメモリコントローラ１３０により無効とする。なお、その書き込み無効領域として、その時点でのスタックの未使用領域を指定することができる。また、その書き込み無効領域に対する読み出しアクセス要求が、バスマスタ１１０から出力された場合には、キャッシュメモリ１２０またはメモリコントローラ１３０がエラー応答を返す。
【００８０】
図８は、本発明の第１の実施の形態におけるメモリ２００上のスタック領域にアクセスする場合におけるスタック領域の無効有効を判定する判定方法を模式的に示す図である。
【００８１】
図８（ａ）には、スタック領域２２０において、スタックポインタ２２４が現在の読み書き対象となる領域の最後を指し示す場合を示す。図８（ａ）に示す例において、スタックポインタ（Ａ）２２４がスタックポインタ（Ｂ）２２４に変化した場合には、スタック領域の有効無効の境界がＡからＢへ変わる。この場合には、スタックポインタ２２４自体が境界を表す。
【００８２】
図８（ｂ）には、スタック領域２２０において、スタックポインタ２２４が現在の読み書き対象となる領域の最初を指し示す場合を示す。図８（ｂ）に示す例では、スタックポインタ（Ｃ）２２４がスタックポインタ（Ｄ）２２４に変化した場合において、直前のＣの位置がＤから見て無効領域２２２側にある場合には、直前のＣの位置が有効無効の境界となる。
【００８３】
ここで、アドレスが増える方向に積み増していくスタックポインタと、アドレスが減る方向に積み減らしていくスタックポインタとがあるが、これらの何れについても、上述した判定方法を適用することができる。
【００８４】
［バンクに対するリフレッシュ例］
図９は、本発明の第１の実施の形態におけるメモリコントローラ１３０によるリフレッシュ処理の一例を模式的に示す図である。図９では、リフレッシュを必要とするメモリ２００において、バンク競合が発生した場合に、アクセス対象となっていないバンクに対してリフレッシュを行う例を示す。
【００８５】
図９（ａ）には、メモリ２００に備えられる複数のバンク（バンク１（２１１）乃至バンク４（２１４））と、これらの各バンクにおけるアドレスＡ乃至Ｆとを模式的に示す。
【００８６】
図９（ｂ）には、１つのデータが１つのバンクに書き込まれている場合におけるバンクの読み出し例を示す。図９（ｂ）に示す例では、図９（ａ）に示すバンク２（アドレスＦ）、バンク１（アドレスＥ）、バンク１（アドレスＡ）、バンク１（アドレスＥ）、バンク２（アドレスＦ）の順序で、各バンクに書き込まれているデータが読み出される例を示す。図９（ｂ）に示すように、同一のバンクから連続して読み出しが行われる場合には、バンク衝突によるペナルティ時間ｔ１およびｔ２が発生する。そこで、上述したように、同一データを複数のバンクに書き込むことにより、バンク衝突によるペナルティ時間の発生を低減させることができる。この例を図９（ｃ）に示す。
【００８７】
図９（ｃ）には、同一データが複数のバンクに書き込まれている場合におけるバンクの読み出し例を示す。図９（ｃ）に示す例では、図９（ａ）に示すバンク１のアドレスＡとバンク２のアドレスＢとに同一データが書き込まれている場合を示す。なお、バンク１のアドレスＥ、バンク２のアドレスＦ、バンク３のアドレスＣ、バンク４のアドレスＤのそれぞれには、異なるデータが書き込まれているものとする。また、図９（ｃ）に示す例では、図９（ｂ）に示す例と同一の順序で各データが各バンクから読み出される例を示す。
【００８８】
ここで、図９（ｃ）に示す例では、バンク１のアドレスＡと、バンク２のアドレスＢとに同一データが書き込まれている。このため、バンク２のアドレスＦおよびバンク１のアドレスＥからのデータ読み出しが行われた後には、バンク１同士のバンク衝突によるペナルティ時間ｔ１の発生を防止するため、バンク２のアドレスＢからデータの読み出しが行われる。すなわち、バンク選択が行われ、バンク衝突が比較的少ないバンク２が選択されてアドレスＢからデータの読み出しが行われる。この場合には、バンク２同士のバンク衝突によるペナルティ時間ｔ３が発生するが、図９（ｂ）に示す例と比較して（矢印２４１）、アクセス時間を短縮することができる。なお、データを書き込む場合についても同様に、バンク衝突の少ない順序で入れ替えることにより、全体のアクセス時間を短縮することができる。
【００８９】
ここで、バンク２のアドレスＢからデータを読み出す時点ｔ５では、バンク１およびバンク２については競合の可能性があるが、バンク３およびバンク４については競合の可能性がない。このため、バンク２のアドレスＢからデータを読み出す時点ｔ５の後に、バンク３に対してリフレッシュを行う（太線の枠２４２で示す）。また、このリフレッシュ後には、図９（ｂ）と同様に、バンク１およびバンク２からデータの読み出しが行われる。なお、この例では、時点ｔ５の後にバンク３に対するリフレッシュを行う例を示したが、時点ｔ５の後には、競合の可能性がないバンク４に対してリフレッシュを行うようにしてもよい。
【００９０】
このように、バンク選択を行うことにより、全体のアクセス時間を短縮させることができる。また、競合の可能性がないバンクについてリフレッシュを行うことができるため、リフレッシュ単独に要する時間を短縮することができる。なお、リフレッシュについては、競合バンクを避けて行うことができるものを用いることができる。例えば、バンクがアクティブでない場合にはアクティブにして、このアクティブ後にプリチャージする処理や読み出す処理等のように、該当する領域に対してリフレッシュと同様の効果を得られる処理を行うことができる。
【００９１】
［バンクに対するセルフリフレッシュ例］
ここで、近年では、セルフリフレッシュを行う際における電力削減のため、部分リフレッシュ機能を備えるメモリが提案されている。例えば、ＬＰＤＤＲ  ＳＤＲＡＭ（Low Power Double Data Rate Synchronous Dynamic Random Access Memory）が提案されている。ここで、部分リフレッシュ機能は、一部のバンクのみについてセルフリフレッシュを行い、他のバンクについてはセルフリフレッシュを行わない機能である。そこで、以下では、この部分リフレッシュ機能を備えるメモリにおけるリフレッシュの一例を示す。
【００９２】
図１０は、本発明の第１の実施の形態におけるメモリ２００によるセルフリフレッシュ処理の一例を模式的に示す図である。図１０では、リフレッシュを必要とするメモリにおいて、外部の関与を必要としないセルフリフレッシュを行う例を示す。
【００９３】
図１０（ａ）には、メモリ２００に備えられる複数のバンク（バンク１（２１１）乃至バンク４（２１４））と、これらの各バンクにおけるアドレスＡ乃至Ｄとを模式的に示す。図１０（ａ）では、バンク１のアドレスＡと、バンク３のアドレスＣとに同一データが書き込まれ、バンク２のアドレスＢと、バンク４のアドレスＤとに同一データが書き込まれている場合を示す。すなわち、バンク１およびバンク３と、バンク２およびバンク４とに同一データが含まれるように複数バンク対応が行われているものとする。
【００９４】
図１０（ｂ）には、図１０（ａ）に示す状態で、部分リフレッシュが行われた場合を示す。具体的には、グレーでないバンク１およびバンク２について部分リフレッシュが行われたものとする。このように部分リフレッシュが行われたバンク（バンク１およびバンク２）についてはデータが引き続き保持される。一方、部分リフレッシュが行われないバンク（グレーで示すバンク３およびバンク４）についてはデータが保持されなくなる。すなわち、部分リフレッシュが行われないバンクについては、時間の経過に応じてデータに誤りが増えていくため、そのデータが保持されなくなる。ただし、部分リフレッシュが行われているバンク１およびバンク２に保持されていたデータについては引き続き保持される。このため、バンク３およびバンク４に保持されなくなったデータと同一データが、バンク１およびバンク２に保持されていることになる。
【００９５】
図１０（ｃ）には、図１０（ｂ）に示す部分リフレッシュ後にデータコピーが行われた場合を示す。図１０（ｂ）に示すように、バンク３およびバンク４について部分リフレッシュが行われない場合には、バンク３およびバンク４のデータが保持されなくなるが、この保持されなくなったデータと同一データがバンク１およびバンク２に保持されている。そこで、部分リフレッシュから復帰した場合には、矢印２５１および２５２に示すように、バンク１およびバンク２に保持されているデータを、バンク３およびバンク４にコピーをする。これにより、バンク３およびバンク４におけるデータを部分リフレッシュ直前の状態に戻すことができる。
【００９６】
このように部分リフレッシュが行われないバンクについては、このバンクから保持されなくなったデータと同一データが保持されているバンクからコピーを行うことにより、複数バンク対応の際にも部分リフレッシュを行うことができる。これにより、複数バンク対応にしていない場合と同様に、セルフリフレッシュを行う際における消費電力を削減することができる。
【００９７】
［情報処理装置の動作例］
図１１は、本発明の第１の実施の形態における情報処理装置１００によるデータ読出処理の処理手順の一例を示すフローチャートである。図１１に示す例では、物理アドレスおよび仮想アドレスの変換を行わない場合におけるデータ読出処理を示す。
【００９８】
最初に、バスマスタ１１０が、読み出しアドレスを発行して（ステップＳ９０１）、キャッシュヒットするか否かが判断される（ステップＳ９０２）。すなわち、発行された読み出しアドレスに対応するデータがキャッシュメモリ１２０に存在するか否かが判断される。なお、ステップＳ９０１は、特許請求の範囲に記載の発行手順の一例である。
【００９９】
キャッシュヒットする場合には（ステップＳ９０２）、発行された読み出しアドレスに対応するデータがキャッシュメモリ１２０から読み出され、この読み出されたデータがバスマスタ１１０に送られ（ステップＳ９０８）、データ読出処理の動作を終了する。一方、キャッシュヒットしない場合（すなわち、キャッシュミスの場合）には（ステップＳ９０２）、メモリコントローラ１３０が、発行された読み出しアドレスが、複数バンク対応アドレスであるか否かを判断する（ステップＳ９０３）。
【０１００】
発行された読み出しアドレスが複数バンク対応アドレスでない場合には（ステップＳ９０３）、メモリコントローラ１３０が、その発行された読み出しアドレスに対応するデータをメモリ２００から読み出し（ステップＳ９０４）、ステップＳ９０６に進む。一方、発行された読み出しアドレスが複数バンク対応アドレスである場合には（ステップＳ９０３）、メモリコントローラ１３０が、その発行された読み出しアドレスに対応する複数のアドレスを特定する。そして、メモリコントローラ１３０が、その特定された複数のアドレスのうち、アクセス時間が少ない１つのアドレスを選択し、この選択されたアドレスに対応するデータをメモリ２００から読み出す（ステップＳ９０５）。なお、ステップＳ９０５は、特許請求の範囲に記載のアクセス手順の一例である。
【０１０１】
続いて、キャッシュメモリ１２０におけるエントリが空いているか否かが判断され（ステップＳ９０６）、キャッシュメモリ１２０におけるエントリが空いていない場合には、キャッシュエントリ無効化処理が行われ（ステップＳ９１０）、ステップＳ９０７に進む。このキャッシュエントリ無効化処理については、図１２を参照して詳細に説明する。
【０１０２】
また、キャッシュメモリ１２０におけるエントリが空いている場合には（ステップＳ９０６）、その空いているエントリに、発行された読み出しアドレスに対応するデータとして、メモリ２００から読み出されたデータが格納される（ステップＳ９０７）。続いて、発行された読み出しアドレスに対応するデータがキャッシュメモリ１２０から読み出され、この読み出されたデータがバスマスタ１１０に送られ（ステップＳ９０８）、データ読出処理の動作を終了する。
【０１０３】
図１２は、本発明の第１の実施の形態における情報処理装置１００によるデータ読出処理の処理手順のうちのキャッシュエントリ無効化処理（図１１に示すステップＳ９１０の処理手順）の一例を示すフローチャートである。図１２では、空ける対象となるエントリに格納されているデータが更新されていれば、ライトバックを行った後に無効化し、そのデータが更新されていなければ、そのまま無効化を行う例を示す。
【０１０４】
最初に、キャッシュメモリ１２０において、空ける対象となるエントリが選択される（ステップＳ９１１）。続いて、その選択されたエントリに格納されているデータが更新されているか否かが判断され（ステップＳ９１２）、そのデータが更新されていない場合には、その選択されたエントリが無効化される（ステップＳ９１６）。なお、データが更新されている場合は、例えば、その選択されたエントリに書き込みがあった場合である。
【０１０５】
一方、その選択されたエントリに格納されているデータが更新されている場合には（ステップＳ９１２）、バスマスタ１１０から発行された読み出しアドレスが、複数バンク対応アドレスであるか否かが判断される（ステップＳ９１３）。
【０１０６】
その発行された読み出しアドレスが複数バンク対応アドレスでない場合には（ステップＳ９１３）、メモリコントローラ１３０が、その発行された読み出しアドレスに、ステップＳ９０４で読み出されたデータを書き込む（ステップＳ９１４）。そして、ステップＳ９１６に進む。一方、発行された読み出しアドレスが複数バンク対応アドレスである場合には（ステップＳ９１３）、メモリコントローラ１３０が、その発行された読み出しアドレスに対応する複数のアドレスを特定する。そして、メモリコントローラ１３０が、その特定された複数のアドレスに、ステップＳ９０５で読み出されたデータを書き込む（ステップＳ９１５）。
【０１０７】
図１３は、本発明の第１の実施の形態における情報処理装置１００によるデータ書込処理の処理手順の一例を示すフローチャートである。図１３に示す例では、物理アドレスおよび仮想アドレスの変換を行わない場合におけるデータ書込処理を示す。
【０１０８】
最初に、バスマスタ１１０が、書き込みアドレスおよび書込対象となるデータを発行して（ステップＳ９２１）、キャッシュヒットするか否かが判断される（ステップＳ９２２）。すなわち、発行された書き込みアドレスに対応するデータがキャッシュメモリ１２０に存在するか否かが判断される。
【０１０９】
キャッシュヒットする場合には（ステップＳ９２２）、発行された書き込みアドレスに対応するデータとして、その発行されたデータがキャッシュメモリ１２０に格納され（ステップＳ９２４）、データ書込処理の動作を終了する。一方、キャッシュヒットしない場合（すなわち、キャッシュミスの場合）には（ステップＳ９２２）、キャッシュメモリ１２０におけるエントリが空いているか否かが判断される（ステップＳ９２３）。そして、キャッシュメモリ１２０におけるエントリが空いていない場合には（ステップＳ９２３）、キャッシュエントリ無効化処理が行われ（ステップＳ９１０）、ステップＳ９２４に進む。このキャッシュエントリ無効化処理については、図１２で示したものと略同様であるため、ここでの説明を省略する。
【０１１０】
また、キャッシュメモリ１２０におけるエントリが空いている場合には（ステップＳ９２３）、その空いているエントリに、発行された書き込みアドレスに対応するデータとして、その発行されたデータが格納される（ステップＳ９２４）。
【０１１１】
図１４および図１５は、本発明の第１の実施の形態における情報処理装置１００によるデータ読出処理の処理手順の一例を示すフローチャートである。図１４に示す例では、物理アドレスおよび仮想アドレスの変換を行い、キャッシュメモリが物理アドレスで動作する場合におけるデータ読出処理を示す。また、図１５に示す例では、物理アドレスおよび仮想アドレスの変換を行い、キャッシュメモリが仮想アドレスで動作する場合におけるデータ読出処理を示す。なお、図１４および図１５に示す処理手順は、図１１の変形例であり、物理アドレスおよび仮想アドレスの変換を行う点が異なる。また、この点以外については、図１１と略同一であるため、図１１と共通する部分については、同一の符号を付してこれらの説明を省略する。
【０１１２】
図１４において、最初に、バスマスタ１１０が、読み出しアドレス（例えば、アドレスＹ）を発行する（ステップＳ９０１）。続いて、その読み出しアドレスをＭＭＵがアドレス変換して変換後のアドレス（例えば、アドレスＸ）を発行する（ステップＳ９２５）。そして、この処理手順では、この変換後のアドレス（例えば、アドレスＸ）を用いて、データ読出処理の動作が行われる。
【０１１３】
図１５において、最初に、バスマスタ１１０が、読み出しアドレス（例えば、アドレスＹ）を発行して（ステップＳ９０１）、キャッシュヒットするか否かが判断される（ステップＳ９０２）。そして、キャッシュヒットしない場合（すなわち、キャッシュミスの場合）には（ステップＳ９０２）、その読み出しアドレスをＭＭＵがアドレス変換して変換後のアドレス（例えば、アドレスＸ）を発行する（ステップＳ９２６）。そして、この処理手順では、この変換後のアドレス（例えば、アドレスＸ）を用いて、データ読出処理の動作が行われる。
【０１１４】
また、キャッシュメモリ１２０におけるエントリが空いていない場合には（ステップＳ９０６）、キャッシュエントリ無効化処理が行われ（ステップＳ９１７）、ステップＳ９０７に進む。このキャッシュエントリ無効化処理については、図１６を参照して詳細に説明する。
【０１１５】
図１６は、本発明の第１の実施の形態における情報処理装置１００によるデータ読出処理の処理手順のうちのキャッシュエントリ無効化処理（図１５に示すステップＳ９１７の処理手順）の一例を示すフローチャートである。なお、図１６に示す処理手順は、図１２の変形例であり、物理アドレスおよび仮想アドレスの変換を行う点が異なる。また、この点以外については、図１２と略同一であるため、図１２と共通する部分については、同一の符号を付してこれらの説明を省略する。
【０１１６】
キャッシュメモリ１２０において、空ける対象として選択されたエントリに格納されているデータが更新されている場合には（ステップＳ９１２）、ＭＭＵがアドレス変換して変換後のアドレス（例えば、アドレスＸ）を発行する（ステップＳ９１８）。そして、この変換後のアドレス（例えば、アドレスＸ）を用いて、データの書き込み（ステップＳ９１４またはＳ９１５）が行われる。
【０１１７】
図１７は、本発明の第１の実施の形態における情報処理装置１００によるデータ書込処理の処理手順の一例を示すフローチャートである。図１７に示す例では、物理アドレスおよび仮想アドレスの変換を行い、キャッシュメモリが物理アドレスで動作する場合におけるデータ書込処理を示す。なお、図１７に示す処理手順は、図１３の変形例であり、物理アドレスおよび仮想アドレスの変換を行う点が異なる。また、この点以外については、図１３と略同一であるため、図１３と共通する部分については、同一の符号を付してこれらの説明を省略する。
【０１１８】
最初に、バスマスタ１１０が、書き込みアドレス（例えば、アドレスＹ）および書込対象となるデータを発行して（ステップＳ９２１）、その書き込みアドレスをＭＭＵがアドレス変換して変換後のアドレス（例えば、アドレスＸ）を発行する（ステップＳ９２７）。そして、この処理手順では、この変換後のアドレス（例えば、アドレスＸ）を用いて、データ書込処理の動作が行われる。
【０１１９】
なお、物理アドレスおよび仮想アドレスの変換を行い、キャッシュメモリが仮想アドレスで動作する場合におけるデータ書込処理については、図１３に示すキャッシュエントリ無効化処理（ステップＳ９１０）が異なる。具体的には、図１３に示すキャッシュエントリ無効化処理（ステップＳ９１０）の代わりに、図１６に示すキャッシュエントリ無効化処理（ステップＳ９１７）を行う。なお、この点以外については、図１３と略同一であるため、図示および説明を省略する。
【０１２０】
図１８は、本発明の第１の実施の形態における情報処理装置１００による複数バンク対応解除処理の処理手順の一例を示すフローチャートである。この処理手順では、複数バンク対応の状態で、特定のアドレス空間（例えば、図４（ａ）に示す切り替え領域３００）にアクセスがされた場合にその状態を解除する例を示す。
【０１２１】
最初に、アクセス発行がされ（ステップＳ９３１）、特定範囲のアドレスにアクセスがあるか否かが判断される（ステップＳ９３２）。特定範囲のアドレスにアクセスがない場合には（ステップＳ９３２）、設定レジスタにおける設定内容が、解除設定とされているか否かが判断され（ステップＳ９３３）、その設定内容が解除設定とされていない場合には、複数バンク対応解除処理の動作を終了する。なお、特定範囲のアドレス空間は、メモリコントローラ１３０に伝えるため、キャッシュ無効領域等にすることが好ましい。
【０１２２】
また、特定範囲のアドレスにアクセスがある場合（ステップＳ９３２）、または、設定レジスタにおける設定内容が解除設定とされている場合には（ステップＳ９３３）、メモリコントローラ１３０が、複数バンク対応を解除する（ステップＳ９３４）。
【０１２３】
図１９は、本発明の第１の実施の形態における情報処理装置１００による複数バンク設定処理の処理手順の一例を示すフローチャートである。この処理手順では、メモリ２００のメモリ容量に応じて、複数バンクの選択読み出しを行うか否かを設定する例を示す。
【０１２４】
最初に、メモリ２００のメモリ容量が取得され（ステップＳ９３５）、複数バンクに同一データを格納することができるか否かが判断される（ステップＳ９３６）。複数バンクに同一データを格納することができない場合には（ステップＳ９３６）、複数バンク設定処理の動作を終了する。
【０１２５】
一方、複数バンクに同一データを格納することができる場合には（ステップＳ９３６）、取得されたメモリ容量に基づいて、同一データを格納することができるバンクの数が算出される（ステップＳ９３７）。続いて、同一データを格納するバンクの数と、複数バンク対応を行うアドレスとが、メモリコントローラ１３０に設定される（ステップＳ９３８）。
【０１２６】
図２０は、本発明の第１の実施の形態における情報処理装置１００による複数バンク読出処理の処理手順の一例を示すフローチャートである。この処理手順では、バースト長の大きさに応じて、複数バンクのデータ読出方法を変更する例を示す。
【０１２７】
最初に、バースト長が取得され（ステップＳ９４１）、所定バースト長よりも短いデータ読み出しであるか否かが判断される（ステップＳ９４２）。所定バースト長よりも短いデータ読み出しである場合には（ステップＳ９４２）、読出対象となる複数バンクのうち、アクセス時間が最も短いバンクが選択され、この選択されたバンクからデータ読み出しが行われる（ステップＳ９４３）。一方、所定バースト長よりも短いデータ読み出しでない場合には（ステップＳ９４２）、通常の読み出しが行われる（ステップＳ９４４）。この通常の読み出しは、例えば、バンク競合を考慮しない読み出しである。
【０１２８】
図２１は、本発明の第１の実施の形態における情報処理装置１００による複数バンク読出処理の処理手順の一例を示すフローチャートである。この処理手順では、読み出しアクセスがあったバスマスタに応じて、複数バンクのデータ読出方法を変更する例を示す。
【０１２９】
最初に、バスマスタ情報が取得され（ステップＳ９４５）、特定のバスマスタであるか否かが判断される（ステップＳ９４６）。特定のバスマスタは、例えば、ＣＰＵや画像処理時におけるＤＳＰとすることができる。特定のバスマスタである場合には（ステップＳ９４６）、読出対象となる複数バンクのうち、アクセス時間が最も短いバンクが選択され、この選択されたバンクからデータ読み出しが行われる（ステップＳ９４７）。一方、所定バースト長よりも短いデータ読み出しでない場合には（ステップＳ９４６）、通常の読み出しが行われる（ステップＳ９４８）。
【０１３０】
図２２は、本発明の第１の実施の形態における情報処理装置１００による複数バンク読出処理の処理手順の一例を示すフローチャートである。この処理手順では、読み出し対象となるアドレス（アクセスするアドレス）が、読み出しのみの領域に対応するか否かに応じて、複数バンクのデータ読出方法を変更する例を示す。
【０１３１】
最初に、アクセス発行がされ（ステップＳ９５１）、読み出し対象となるアドレスが、読み出しのみの領域に対応するか否かが判断される（ステップＳ９５２）。読み出し対象となるアドレスが、読み出しのみの領域に対応する場合には（ステップＳ９５２）、読出対象となる複数バンクのうち、アクセス時間が最も短いバンクが選択され、この選択されたバンクからデータ読み出しが行われる（ステップＳ９５３）。一方、読み出し対象となるアドレスが、読み出しのみの領域に対応しない場合には（ステップＳ９５２）、通常の読み出しが行われる（ステップＳ９５４）。
【０１３２】
このように、ライトが少ない領域や所定のバスマスタのみに適用して、リードが多くなるようにすることにより、さらにアクセス時間の短縮を図ることができる。
【０１３３】
図２３は、本発明の第１の実施の形態における情報処理装置１００によるライトアクセス処理の処理手順の一例を示すフローチャートである。この処理手順では、メモリへのアクセスが無効領域へのライトアクセスである場合には、そのアクセスを無効にする例を示す。
【０１３４】
最初に、バスマスタ１１０からメモリ２００へのアクセスが発生され（ステップＳ９５５）、そのアクセスが無効領域と設定されている領域へのライトアクセスであるか否かが判断される（ステップＳ９５６）。そのアクセスが無効領域と設定されている領域へのライトアクセスである場合には（ステップＳ９５６）、ライトアクセスを無効とし、バスマスタ１１０に正常応答が出力される（ステップＳ９５７）。このように、ライトアクセスを無効とし、バスマスタ１１０に正常応答を返すことにより、無駄なライトアクセスを削減することができる。
【０１３５】
一方、そのアクセスが無効領域と設定されている領域へのライトアクセスでない場合には（ステップＳ９５６）、通常のアクセスが行われる（ステップＳ９５８）。
【０１３６】
図２４は、本発明の第１の実施の形態における情報処理装置１００によるアクセス処理の処理手順の一例を示すフローチャートである。この処理手順では、メモリへのアクセスが無効領域へのライトアクセスである場合にはそのアクセスを無効にし、リードアクセスである場合にはエラーとする例を示す。なお、図２４に示す処理手順は、図２３の変形例であるため、図２３と共通する部分については、同一の符号を付してこれらの説明を省略する。
【０１３７】
バスマスタ１１０からメモリ２００へのアクセスが、無効領域と設定されている領域へのアクセスである場合には（ステップＳ９５０）、そのアクセスがライトアクセスであるか否かが判断される（ステップＳ９５９）。そのアクセスがライトアクセスである場合には（ステップＳ９５９）、ステップＳ９５７に進む。一方、そのアクセスがライトアクセスでない場合（すなわち、リードアクセスである場合）には（ステップＳ９５９）、バスマスタ１１０にエラー応答が出力される（ステップＳ９６０）。このようにすることにより、無駄なライトアクセスを削減することができ、不正な読み出しを防ぐことができる。
【０１３８】
また、例えば、無効となったスタック領域への書き込みを無効とするため、メモリへのライト自体を減らすことができ、バンク競合の可能性も削減することができる。このため、複数バンクへの書き込みを減らせ、さらにアクセス時間を削減することができる。
【０１３９】
図２５は、本発明の第１の実施の形態における情報処理装置１００によるリフレッシュ処理の処理手順の一例を示すフローチャートである。この処理手順では、リフレッシュを必要とするメモリのうち、アクセス中であるメモリ以外の他のメモリに対してリフレッシュを行う例を示す。
【０１４０】
最初に、複数のバンクのうち、バンク競合が発生したか否かが判断される（ステップＳ９６１）。バンク競合が発生した場合には（ステップＳ９６２）、他にアクセスできるバンクがあるか否かが判断され（ステップＳ９６２）、他にアクセスできるバンクがない場合には、リフレッシュ処理の動作を終了する。
【０１４１】
一方、他にアクセスできるバンクがある場合には（ステップＳ９６２）、そのバンクのリフレッシュカウンタに１を加え（ステップＳ９６３）、そのバンクのリフレッシュを行う（ステップＳ９６４）。ここで、リフレッシュカウンタは、バンク毎に設けられているカウンタであり、リフレッシュが行われる毎に「１」が加算される。
【０１４２】
このように、バンク競合が発生している場合には、目的とするデータへのアクセスに時間を要するが、他のバンクはアクセスできる状態であるため、他のバンクのリフレッシュを行うことができる。なお、リフレッシュを行う場合には、例えば、通常のダイナミックランダムアクセスメモリのリフレッシュコマンドを行うことができる。また、読み出し等を行うことにより、リフレッシュを行うようにしてもよい。
【０１４３】
また、図２５に示すように、リフレッシュを行うことができるが、リフレッシュが十分できない場合も想定される。そこで、不足するリフレッシュを定期的または不定期に補うことが考えられる。この例を図２６に示す。
【０１４４】
図２６は、本発明の第１の実施の形態における情報処理装置１００によるリフレッシュ処理の処理手順の一例を示すフローチャートである。この処理手順では、不足するリフレッシュを所定タイミングで補う例を示す。
【０１４５】
最初に、監視タイミングに達したか否かが判断され（ステップＳ９６５）、監視タイミングに達していない場合には、監視タイミングに達するまでループする。一方、監視タイミングに達した場合には（ステップＳ９６５）、複数のバンクのうち、各バンクについて所定回数以上のリフレッシュが行われたか否かが判断される（ステップＳ９６６）。各バンクについて所定回数以上のリフレッシュが行われたか否かは、例えば、各バンクのリフレッシュカウンタに基づいて判断される。そして、各バンクについて所定回数以上のリフレッシュが行われている場合には（ステップＳ９６６）、リフレッシュ処理の動作を終了する。
【０１４６】
一方、各バンクについて所定回数以上のリフレッシュが行われていない場合には（ステップＳ９６６）、所定回数以上のリフレッシュが行われていない１つのバンクを対象バンクとして、この対象バンクのリフレッシュカウンタに１を加える（ステップＳ９６７）。続いて、その対象バンクについてリフレッシュを行い（ステップＳ９６８）、対象バンクのリフレッシュカウンタが所定値（所定回数）以上となったか否かが判断される（ステップＳ９６９）。対象バンクのリフレッシュカウンタが所定値以上となっていない場合には（ステップＳ９６９）、ステップＳ９６７に戻る。
【０１４７】
一方、対象バンクのリフレッシュカウンタが所定値以上となった場合には（ステップＳ９６９）、他のバンクのうち、リフレッシュカウンタが所定値以上となっていないバンクが存在するか否かが判断される（ステップＳ９７０）。そして、リフレッシュカウンタが所定値以上となっていないバンクが存在する場合には（ステップＳ９７０）、そのバンクを対象バンクとし（ステップＳ９７１）、ステップＳ９６７に戻る。
【０１４８】
このように、リフレッシュが不足しているバンクについては、一定のタイミングで、リフレッシュを行うことができる。すなわち、基本的には、バンク競合等の処理中にリフレッシュを行うが、リフレッシュが足りない部分だけ、リフレッシュのための時間を割くことができる。このため、帯域を有効に利用することができる。
【０１４９】
図２７は、本発明の第１の実施の形態における情報処理装置１００による複数バンク対応切替処理の処理手順の一例を示すフローチャートである。この処理手順では、複数バンクの対応時から非対応時に切り替える場合における切替例を示す。また、図２７（ａ）には、複数バンク対応の切替の前後でアクセスアドレスを同一とする場合における処理手順を示し、図２７（ｂ）には、複数バンク対応の切替の前後でアクセスアドレスが異なる場合における処理手順を示す。
【０１５０】
複数バンク対応の切替の前後でアクセスアドレスを同一とする場合は、最初に、開放領域についてのみＭＭＵの設定変更が行われ（ステップＳ９８１）、メモリコントローラ１３０における複数バンク対応を解消するための設定が行われる（ステップＳ９８２）。
【０１５１】
また、複数バンク対応の切替の前後でアクセスアドレスが異なる場合は、最初に、キャッシュメモリ１２０に複数バンク対応のアドレスが存在するか否かが判断される（ステップＳ９８３）。そして、キャッシュメモリ１２０に複数バンク対応のアドレスが存在しない場合には（ステップＳ９８３）、ステップＳ９８５に進む。
【０１５２】
一方、キャッシュメモリ１２０に複数バンク対応のアドレスが存在する場合には（ステップＳ９８３）、キャッシュメモリ１２０から複数バンク対応のアドレスのデータを消去させる必要がある。このため、複数バンク領域のデータについてライトバックまたは無効化が行われる（ステップＳ９８４）。
【０１５３】
続いて、ＭＭＵの設定変更が行われ（ステップＳ９８５）、メモリコントローラ１３０における複数バンク対応を解消するための設定が行われる（ステップＳ９８６）。
【０１５４】
このように、複数バンク対応の切替の前後でアクセスアドレスを同一とする場合は、複数バンク対応の切替の前後でアクセスアドレスが異なる場合における切替処理の一部と略同じとすることができる。
【０１５５】
ただし、図２７（ｂ）に示す例では、複数バンク対応していたデータがキャッシュメモリ１２０にまったく残らないのに対し、図２７（ａ）に示す例では、キャッシュメモリ１２０にデータが残っている。このため、複数バンク対応切替処理の動作の後では、複数バンク対応していたデータにアクセスした場合に、図２７（ｂ）に示す例では、キャッシュメモリ１２０にヒットする可能性が全くない。これに対して、図２７（ａ）に示す例では、以前と同じ程度の確率でヒットする可能性がある。
【０１５６】
図２８は、本発明の第１の実施の形態における情報処理装置１００による複数バンク対応切替処理の処理手順の一例を示すフローチャートである。この処理手順では、複数バンクの非対応時から対応時に切り替える場合における切替例を示す。また、図２８（ａ）には、複数バンク対応の切替の前後でアクセスアドレスを同一とする場合における処理手順を示し、図２８（ｂ）には、複数バンク対応の切替の前後でアクセスアドレスが異なる場合における処理手順を示す。
【０１５７】
複数バンク対応の切替の前後でアクセスアドレスを同一とする場合は、最初に、複数バンクで新たに使用する領域のデータがキャッシュメモリ１２０に存在するか否かが判断される（ステップＳ９８７）。そして、複数バンクで新たに使用する領域のデータがキャッシュメモリ１２０に存在しない場合には（ステップＳ９８７）、ステップＳ９８９に進む。
【０１５８】
一方、複数バンクで新たに使用する領域のデータがキャッシュメモリ１２０に存在する場合には（ステップＳ９８７）、複数バンクにする領域のデータについてライトバックまたは無効化が行われる（ステップＳ９８８）。
【０１５９】
続いて、新たに複数バンク対応により使用される領域について、ＭＭＵの設定変更が行われ（ステップＳ９８９）、メモリコントローラ１３０における複数バンク対応の設定が行われる（ステップＳ９９０）。
【０１６０】
また、複数バンク対応の切替の前後でアクセスアドレスが異なる場合は、図２８（ａ）に示すステップＳ９８７およびＳ９８９の代わりに、ステップＳ９９１およびＳ９９２を行う点が異なる以外は、図２８（ａ）と同様の処理手順を行う。すなわち、図２８（ａ）では、新たに複数バンク対応により使用される領域のみが対象となるのに対し、図２８（ｂ）では、複数バンク対応にするアドレスの全てが対象となる。このように、複数バンク対応の切替の前後でアクセスアドレスを同一とすることにより、対象領域を少なくすることができる。
【０１６１】
図２９は、本発明の第１の実施の形態における情報処理装置１００による複数バンク対応切替処理の処理手順の一例を示すフローチャートである。この処理手順では、複数バンク対応で使用する領域のうちの一部（２つのバンクに同一データを保持する場合にはその一方のバンク）を非対応時に同じバスマスタが使用しない場合における複数バンクの対応時または非対応時への切替例を示す。また、図２９（ａ）には、複数バンク対応の切替の前後でアクセスアドレスを同一とする場合における非対応時への切替処理手順を示す。また、図２９（ｂ）には、複数バンク対応の切替の前後でアクセスアドレスを同一とする場合における複数バンク対応時への切替処理手順を示す。
【０１６２】
図２９に示すように、複数バンク対応で使用する領域のうちの一部を非対応時に同じバスマスタが使用しない場合には、メモリコントローラ１３０への複数バンク対応の設定または解消のみが行われる（ステップＳ９９２、Ｓ９９３）。
【０１６３】
例えば、複数バンクの対応時と非対応時でアクセスするアドレスを同じにして、複数バンク対応で使用する領域を非対応時には使用しない場合（例えば、図４（ｂ）に示すデータ群Ｄ乃至Ｆの領域を仮想アドレス空間に配置しない場合）を想定する。この場合には、キャッシュメモリやＭＭＵにデータ群Ｄ乃至Ｆのアドレスの情報が含まれないため、メモリコントローラへの設定または解消だけが必要となる。このため、設定変更による処理時間の増加を最小限にすることができ、処理時間に制約のあるリアルタイム処理のバスマスタ等にも適用可能となる。
【０１６４】
以上で示したように、複数バンク対応のうちの一部を開放する場合に、複数バンク対応時と同じアドレスで同じデータにアクセスすることができる。また、キャッシュメモリの書き戻し等が必要なく、ＭＭＵも開放領域の設定のみとすることができるため、簡単に切り替えることが可能である。
【０１６５】
また、複数バンク対応にする場合には、新たに複数バンク対応で使用する領域のキャッシュの書き戻しと無効化を行うことにより、切替が可能である。
【０１６６】
なお、複数バンク対応の領域のうち、開放されたり新たに使用したりする領域を、他のバスマスタで使用する場合には、キャッシュメモリやＭＭＵに影響はないため、単に複数バンク対応の設定のみで切り替えが可能である。これにより、さらに容易に切替を行うことができる。
【０１６７】
＜２．変形例＞
本発明の第１の実施の形態では、メモリコントローラをメモリの外部に設ける例を示した。ただし、メモリコントローラについては、メモリに内蔵するようにしてもよい。また、本発明の第１の実施の形態では、複数のバンクを備える１つのメモリを情報処理装置に設ける例を示した。ただし、複数のバンクについては、複数のメモリデバイスにより構成するようにしてもよい。そこで、以下では、本発明の第１の実施の形態の変形例を示す。なお、この変形例における情報処理装置の機能構成については、図１に示す例と略同様である。このため、本発明の第１の実施の形態と共通する部分（または対応する部分）については、同一の符号を付して、これらの説明の一部を省略する。
【０１６８】
［情報処理装置の構成例］
図３０は、本発明の第１の実施の形態の変形例における情報処理装置６００の機能構成例を示すブロック図である。図３０では、メモリコントローラ１３０をメモリデバイス６１０に内蔵する例を示す。なお、メモリコントローラ１３０をメモリデバイス６１０に内蔵する点以外は、図１に示す例と同様であるため、ここでの説明を省略する。また、メモリデバイス６１０は、例えば、ＳＲＡＭ（Static Random Access Memory）により実現される。また、例えば、ＤＤＲ  ＳＤＲＡＭ（Double-Data-Rate Synchronous Dynamic Random Access Memory）により実現される。
【０１６９】
［情報処理装置の構成例］
図３１は、本発明の第１の実施の形態の変形例における情報処理装置６２０の機能構成例を示すブロック図である。図３１では、複数のメモリデバイス（メモリデバイス１（６３０）およびメモリデバイス２（６４０））に複数のバンクを分割して設けた例である。すなわち、本発明の第１の実施の形態におけるメモリ２００に設けられている４つのバンク（バンク１（２１１）乃至バンク４（２１４））を分割して、メモリデバイス１（６３０）およびメモリデバイス２（６４０）のそれぞれに設ける。そして、同一データを複数のバンクに保持させる場合に、メモリデバイス１（６３０）およびメモリデバイス２（６４０）のそれぞれに保持させるようにする。なお、これらの点以外は、図１に示す例と同様であるため、ここでの説明を省略する。
【０１７０】
＜３．適用例＞
本発明の第１の実施の形態では、情報処理装置を例にして説明した。以下では、本発明の第１の実施の形態を適用した各種装置の一例について説明する。ここでは、デジタルスチルカメラやデジタルビデオカメラ（例えば、カメラ一体型レコーダ）等の撮像装置を例にして説明する。
【０１７１】
［撮像装置の構成例］
図３２は、本発明の第１の実施の形態の適用例における撮像装置７００の内部構成例を示すブロック図である。撮像装置７００は、バス７０１と、集光部７０２と、撮像素子７０３と、デジタル変換部７０４と、信号処理部７０５と、リサイズ部７０６と、符号化部７０７と、記憶装置７０８とを備える。また、撮像装置７００は、顔検出部７２０と、メモリコントローラ７３０と、不揮発メモリ７４０と、メモリ７５０と、キャッシュメモリ７６０と、演算部７７０と、操作受付部７８０とを備える。なお、撮像装置７００を構成する各部の間で行われるやりとりは、バス７０１を介して行われる。また、撮像装置７００は、例えば、被写体を撮像して複数の画像データ（撮像画像）を生成し、これらの複数の画像データについて各種画像処理を行うことが可能なデジタルスチルカメラにより実現することができる。
【０１７２】
集光部７０２は、被写体からの光を集光する複数のレンズ（ズームレンズ、フォーカスレンズ等）から構成され、これらのレンズおよびアイリスを介して入射された被写体からの光が撮像素子７０３に供給される。また、集光部７０２を介して入射された被写体の光学像（被写体像）が撮像素子７０３の撮像面に結像され、この状態で撮像素子７０３が撮像処理を行うことにより画像信号（電気信号（アナログ信号））が生成される。そして、この画像信号がデジタル変換部７０４に供給される。なお、撮像素子７０３として、例えば、ＣＣＤ（Charge Coupled Device）センサやＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサ等を用いることができる。
【０１７３】
デジタル変換部７０４は、撮像素子７０３から供給された画像信号（アナログ信号）について、増幅やノイズ除去等のアナログ信号処理、Ａ／Ｄ（Analog/Digital）変換処理等を行うことにより画像信号（デジタル信号）を生成するものである。そして、デジタル変換部７０４は、生成された画像信号（デジタル信号）を画像データとしてメモリコントローラ７３０を介してメモリ７５０に書き込む。
【０１７４】
信号処理部７０５は、メモリ７５０に書き込まれた画像データ（デジタル信号）を読み出し、この読み出された画像データについて各種のデジタル信号処理を施すものである。そして、信号処理部７０５は、そのデジタル信号処理が施された画像データをメモリコントローラ７３０を介してメモリ７５０に書き込む。
【０１７５】
顔検出部７２０は、メモリ７５０に書き込まれた画像データ（デジタル信号）を読み出し、この読み出された画像データを解析することによりその撮像画像に含まれる人物の顔を検出するものである。そして、顔検出部７２０は、その検出結果をメモリコントローラ７３０を介してメモリ７５０に書き込む。この顔の検出結果として、顔検出部７２０は、例えば、顔の検出の有無、撮像画像における顔の位置およびサイズを含む顔情報をメモリ７５０に書き込む。なお、画像に含まれる顔の検出方法として、例えば、顔の輝度分布情報が記録されているテンプレートと検出対象画像とのマッチングによる顔検出方法（例えば、特開２００４−１３３６３７参照。）を用いることができる。また、検出対象画像に含まれる肌色の部分や人間の顔の特徴量に基づいた顔検出方法を用いることができる。
【０１７６】
リサイズ部７０６は、メモリ７５０に書き込まれた画像データ（デジタル信号処理が施された画像データ）を読み出し、この読み出された画像データについてリサイズ（例えば、記憶装置７０８への記録に適した解像度変換）を行うものである。そして、リサイズ部７０６は、そのリサイズされた画像データをメモリコントローラ７３０を介してメモリ７５０に書き込む。
【０１７７】
符号化部７０７は、メモリ７５０に書き込まれた画像データ（リサイズされた画像データ）を読み出し、この読み出された画像データについて符号化を行うものである。そして、符号化部７０７は、その符号化された画像データをメモリコントローラ７３０を介してメモリ７５０に書き込む。
【０１７８】
このように生成された画像データ（符号化された画像データ）が、メモリ７５０から読み出され、この読み出された画像データが画像ファイルとして記憶装置７０８に記録される。記憶装置７０８として、例えば、テープ（例えば、磁気テープ）、光ディスク（例えば、記録可能なＤＶＤ（Digital Versatile Disc））を用いることができる。また、記憶装置７０８として、例えば、磁気ディスク（例えば、ハードディスク）、半導体メモリ（例えば、メモリカード）、光磁気ディスク（例えば、ＭＤ（MiniDisc））を用いるようにしてもよい。
【０１７９】
なお、これらの制御を行うための制御プログラムは、不揮発メモリ７４０からメモリ７５０に転送される。また、演算部７７０は、キャッシュメモリ７６０およびメモリコントローラ７３０を介してメモリ７５０にアクセスし、メモリ７５０に転送されたその制御プログラムを読み出す。そして、演算部７７０は、その読み出された制御プログラムに基づいて、撮像装置７００の各部を制御する。
【０１８０】
操作受付部７８０は、ユーザにより操作された操作入力を受け付ける操作部であり、この受け付けられた操作入力の内容をデジタルデータに変換する。そして、この変換後のデジタルデータがメモリコントローラ７３０を介してメモリ７５０に書き込まれる。このようにメモリ７５０に書き込まれたデータを演算部７７０が読み出し、演算部７７０がユーザの指示に基づいた処理を実行する。
【０１８１】
［バスマスタの処理例］
図３３は、本発明の第１の実施の形態の適用例におけるバスマスタにより行われる処理の一例を示す図である。図３３では、書き込みトランザクションよりも読み出しトランザクションの方が多いバスマスタによる処理の一例を示す。このようなバスマスタとして、例えば、プロセッサ等のようにプログラムを読み出して動作するバスマスタ（例えば、演算部７７０）や、画像の中から特定のパターンを探索するバスマスタ（例えば、信号処理部７０５や顔検出部７２０）等がある。この特定パターンの探索は、例えば、動きベクトル検出のブロックマッチング処理、顔検出のパターンマッチング処理、テキストデータのフレーズマッチング処理に対応する。また、これらのバスマスタは、バースト長が短いことが多く、また、規則的でないアクセスになるため、メモリ７５０にとって、アクセス効率を上げ難いことが多い。しかしながら、このように、読み出しが多く、バースト長が短いバスマスタが、本発明の第１の実施の形態における適用対象としては好ましい。そこで、図３３では、具体的な処理例を示す。
【０１８２】
図３３（ａ）には、バスマスタにより行われる画像データの書き込み処理の流れを模式的に示す。図３３（ａ）に示すように、メモリ７５０に画像データを書き込む場合には、例えば、画像データに対応する矩形８００の左上隅の画素８０１から右下隅の画素８０２まで、ラスタ順に書き込みが行われる。この矩形８００において、書き込み対象画素８０３およびその進行方向８０４を示す。
【０１８３】
図３３（ｂ）には、バスマスタにより行われる画像データの読み出し処理の流れを模式的に示す。メモリ７５０に保持されている画像データを読み出す処理として、例えば、画像データの中から特定のパターンを探索する顔検出処理（顔検出部７２０による処理）や各種画像処理（信号処理部７０５による処理）等がある。例えば、顔検出処理を行う場合には、画像データに対応する矩形８１０において、その左上隅から右下隅まで一定サイズの取出領域８１１を移動させ、この取出領域８１１に含まれる画像データが順次読み出される。この矩形８１０において、取出領域８１１の進行方向８１２を示す。
【０１８４】
［バンクの調整例］
図３４は、本発明の第１の実施の形態の適用例におけるメモリ７５０における複数バンク対応を調整する場合における調整方法を模式的に示す図である。
【０１８５】
図３４（ａ）には、撮像装置７００の起動時におけるバンクの配置構成例を示す。例えば、撮像装置７００の起動時には、演算部７７０による処理に用いられる同一プログラムおよび同一データを４バンクに書き込む。
【０１８６】
図３４（ｂ）には、撮像装置７００の起動終了後における定常状態のバンクの配置例を示す。矢印８２０に示すように、撮像装置７００の起動処理が終了して定常状態となった場合には、現在の動作モードに応じて各バンクを調整する。ここで、定常状態１は、例えば、撮像装置７００において静止画撮影モードが設定されている状態であり、定常状態２は、撮像装置７００において動画撮影モードが設定されている状態である。また、定常状態１および定常状態２の切替（動作モード切替８３０）については、ユーザ操作により行うことができる。
【０１８７】
例えば、定常状態１は、撮像素子７０３による撮像動作により生成された画像データ（撮像画像）をメモリ７５０に順次保持しておき、その撮像動作の終了後に各種画像処理を行う状態である。このため、帯域には余裕があるが、画像処理にメモリ７５０を多く必要とする状態となる。
【０１８８】
また、例えば、定常状態２は、定められた時間内に画像処理を順次行うため、帯域は厳しいが、メモリ７５０は画像処理にあまり使用しない状態である。このように、帯域を必要とする定常状態２では、演算部７７０による処理に用いられる同一のプログラムやデータを２バンクに配置して帯域を削減する。
【０１８９】
これに対して、メモリ容量を必要とする定常状態１では、演算部７７０による処理に用いられる同一プログラムや同一データを１バンクに配置してメモリ容量の削減を図り、帯域とメモリ容量の制約を緩和することができる。
【０１９０】
なお、定常状態１におけるバスマスタは、例えば、静止画処理時におけるデジタル変換部７０４、信号処理部７０５、リサイズ部７０６、符号化部７０７、顔検出部７２０が対応する。
【０１９１】
また、定常状態２におけるバスマスタは、例えば、動画処理時におけるデジタル変換部７０４、信号処理部７０５、リサイズ部７０６、符号化部７０７、顔検出部７２０が対応する。
【０１９２】
なお、この適用例では、撮像装置を例にして説明したが、複数のバンクを備えるメモリを備える他の情報処理装置等に本発明の実施の形態を適用することができる。
【０１９３】
以上で示したように、本発明の実施の形態によれば、メモリにおける複数のバンクに同一データを同時にライトアクセスするとともに（複数バンクアクセス）、リードアクセス時にはアクセス時間の短いバンクを選択して読み出すことができる。これにより、アクセス時間の短縮を図ることができる。
【０１９４】
また、複数のバンクに同一データを書き込む場合には、例えば、バスマスタ側から１つのアクセスアドレスを用いたアクセスにすることにより、キャッシュメモリへの重複登録を防ぐことができる。なお、仮想アドレスおよび論理アドレスを変換するための変換テーブルを一時的に保持するＴＬＢ（Translation Look-aside Buffer）を用いる場合についても同様に、ＴＬＢへの重複登録を防ぐことができる。また、複数バンクを選択して読み出しを行う場合には、バスマスタ側からのアクセスアドレスを書き込み時と同じ１つのアドレスにすることにより、キャッシュメモリやＴＬＢへの重複登録を防ぐことができる。これにより、複数のバンクにアクセスする場合にキャッシュメモリを効率よく利用することができる。
【０１９５】
また、複数バンクアクセスの動作設定と、通常の単一バンクアクセスの動作設定とを切り替えて使用することにより、メモリ残容量が少ない場合には単一バンクアクセスを行うことができ、メモリ使用量を抑制することができる。すなわち、複数バンクに同一データを常に保持しておくと、メモリが複数倍必要になる。このため、必要なときだけ複数バンクに同一データを保持させておき、複数バンクからの選択読み出しを行う。そして、必要がなくなった場合には、１つのバンク以外の他のバンクを他の用途に開放することにより、最大メモリ量を抑制することができる。
【０１９６】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１９７】
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【符号の説明】
【０１９８】
１００、６００、６２０  情報処理装置
１１０  バスマスタ
１２０、１２５〜１２７  キャッシュメモリ
１３０  メモリコントローラ
２００  メモリ
６１０  メモリデバイス
７００  撮像装置
７０１  バス
７０２  集光部
７０３  撮像素子
７０４  デジタル変換部
７０５  信号処理部
７０６  リサイズ部
７０７  符号化部
７０８  記憶装置
７２０  顔検出部
７３０  メモリコントローラ
７４０  不揮発メモリ
７５０  メモリ
７６０  キャッシュメモリ
７７０  演算部
７８０  操作受付部
【図１】
2011257892.tif 000003
【図２】
2011257892.tif 000004
【図３】
2011257892.tif 000005
【図４】
2011257892.tif 000006
【図５】
2011257892.tif 000007
【図６】
2011257892.tif 000008
【図７】
2011257892.tif 000009
【図８】
2011257892.tif 000010
【図９】
2011257892.tif 000011
【図１０】
2011257892.tif 000012
【図１１】
2011257892.tif 000013
【図１２】
2011257892.tif 000014
【図１３】
2011257892.tif 000015
【図１４】
2011257892.tif 000016
【図１５】
2011257892.tif 000017
【図１６】
2011257892.tif 000018
【図１７】
2011257892.tif 000019
【図１８】
2011257892.tif 000020
【図１９】
2011257892.tif 000021
【図２０】
2011257892.tif 000022
【図２１】
2011257892.tif 000023
【図２２】
2011257892.tif 000024
【図２３】
2011257892.tif 000025
【図２４】
2011257892.tif 000026
【図２５】
2011257892.tif 000027
【図２６】
2011257892.tif 000028
【図２７】
2011257892.tif 000029
【図２８】
2011257892.tif 000030
【図２９】
2011257892.tif 000031
【図３０】
2011257892.tif 000032
【図３１】
2011257892.tif 000033
【図３２】
2011257892.tif 000034
【図３３】
2011257892.tif 000035
【図３４】
2011257892.tif 000036