(57)【要約】【課題】複数のメモリを有効に活用して、メモリに対するデータの転送を高速化する。【解決手段】メモリコントローラにおいて、履歴情報保持部は、同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴である履歴情報を保持する。選択部は、保持された履歴情報に基づいて第１のメモリまたは第２のメモリのいずれか一方を読出し対象として選択する。読出し制御部は、第１のメモリまたは第２のメモリのうち選択された一方から読出しを行う。【選択図】図２
2016095734.tif 000002
【特許請求の範囲】
【請求項１】
同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴である履歴情報を保持する履歴情報保持部と、
前記保持された前記履歴情報に基づいて前記第１のメモリまたは前記第２のメモリのいずれか一方を読出し対象として選択する選択部と、
前記第１のメモリまたは前記第２のメモリのうち前記選択された一方から読出しを行う読出し制御部と
を具備するメモリコントローラ。
【請求項２】
前記第１のメモリおよび前記第２のメモリは、前記データが記録される記録領域を指定する行アドレスまたは列アドレスと動作を指示するリクエストとを入力することによりアクセスされる同期型メモリであり、
前記読出し制御部は、前記行アドレスおよび当該行アドレスにより指定される前記記録領域の活性化を指示するリクエストと前記列アドレスおよび当該列アドレスにより指定される前記活性化された前記記録領域からの読出しを指示するリクエストとを順に入力して前記読出しを行う
請求項１記載のメモリコントローラ。
【請求項３】
前記履歴情報保持部は、前記第１のメモリおよび前記第２のメモリにおける前記活性化された前記記録領域に対応する前記行アドレスを前記履歴情報として保持して前記選択部に提示し、
前記選択部は、前記履歴情報として提示された前記行アドレスに基づいて前記読出しの対象の前記記録領域が活性化されている前記第１のメモリまたは前記第２のメモリのいずれか一方を選択する
請求項２記載のメモリコントローラ。
【請求項４】
前記履歴情報保持部は、前記第１のメモリおよび前記第２のメモリにおける最後の前記リクエストの実行からの経過時間を前記履歴情報として保持して前記選択部に提示し、
前記選択部は、前記履歴情報として提示された前記経過時間に基づいて所定の待ち時間が経過している前記第１のメモリまたは前記第２のメモリのいずれか一方を選択する
請求項２記載のメモリコントローラ。
【請求項５】
前記履歴情報保持部は、前記第１のメモリおよび前記第２のメモリにおける最後に実行された前記リクエストおよび当該リクエストの実行からの経過時間を前記履歴情報として保持して前記選択部に提示し、
前記選択部は、前記履歴情報として提示された前記リクエストの実行からの前記経過時間に基づいて前記リクエストに応じた所定の待ち時間が経過している前記第１のメモリまたは前記第２のメモリのいずれか一方を選択する
請求項２記載のメモリコントローラ。
【請求項６】
前記第１のメモリおよび前記第２のメモリは、前記同期型メモリを構成するバンクであり前記第１のメモリおよび前記第２のメモリにアクセスする際には前記バンクにおける記録領域を指定する前記行アドレスまたは前記列アドレスに加えて前記バンクを指定するバンクアドレスをさらに入力する請求項２記載のメモリコントローラ。
【請求項７】
前記第１のメモリおよび前記第２のメモリは、前記同期型メモリにおけるバンクを有するバンクグループであり前記第１のメモリおよび前記第２のメモリにアクセスする際には前記バンクにおける記録領域を指定する前記行アドレスまたは前記列アドレスに加えて前記バンクグループを指定するバンクグループアドレスをさらに入力し、
前記履歴情報保持部は、前記第１のメモリまたは前記第２のメモリのうち最後にアクセスされた一方を前記履歴情報として保持して前記選択部に提示し、
前記選択部は、前記履歴情報として提示された前記第１のメモリまたは前記第２のメモリとは異なるメモリを選択する
請求項２記載のメモリコントローラ。
【請求項８】
同一内容のデータが記録される第１のメモリおよび第２のメモリと、
前記第１のメモリおよび前記第２のメモリにおけるアクセスの履歴である履歴情報を保持する履歴情報保持部と、
前記保持された前記履歴情報に基づいて前記第１のメモリまたは前記第２のメモリのいずれか一方を読出し対象として選択する選択部と、
前記第１のメモリまたは前記第２のメモリのうち前記選択された一方から読出しを行う読出し制御部と
を具備する記憶装置。
【請求項９】
同一内容のデータが記録される第１のメモリおよび第２のメモリと、
前記第１のメモリおよび前記第２のメモリにおけるアクセスの履歴である履歴情報を保持する履歴情報保持部と、
前記保持された前記履歴情報に基づいて前記第１のメモリまたは前記第２のメモリのいずれか一方を読出し対象として選択する選択部と、
前記第１のメモリまたは前記第２のメモリのうち前記選択された一方から読出しを行う読出し制御部と
を備える記憶装置と、
前記記憶装置にアクセスするマスタと
を具備する情報処理システム。
【請求項１０】
同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴である履歴情報に基づいて前記第１のメモリまたは前記第２のメモリのいずれか一方を読出し対象として選択する選択手順と、
前記第１のメモリまたは前記第２のメモリのうち前記選択された一方から読出しを行う読出し制御手順と
を具備するメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリコントローラに関する。詳しくは、クロック信号に同期してアクセスされるメモリを制御するメモリコントローラ、記憶装置、情報処理システムおよびこれらにおける制御方法に関する。
【背景技術】
【０００２】
従来、情報処理システムの記憶装置のメモリとして大容量のＤＲＡＭ（Dynamic Random Access Memory）が使用されている。特に、入力されたクロック信号に同期してデータの転送を行うことにより高速なデータ転送を可能としたＳＤＲＡＭ（Synchronous DRAM）が、大量のデータ処理を必要とする画像処理等の分野において多く使用されている。ＤＲＡＭにおいては、行アドレスおよび列アドレスを順に入力することにより、アクセスが行われる。一方、ＳＤＲＡＭでは、ＳＤＲＡＭに対する指示を表すリクエストとともに行アドレスおよび列アドレスが入力される。なお、一旦行アドレスを入力した後は、これに続くアクセスにおいて行アドレスの入力を省略することができ、高速なアクセスが可能となっている。また、読出しおよび書込みにおけるデータの転送は、１度の列アドレスの入力により、予め設定されたワード数（バースト長）のデータが転送されるバースト転送により行われる。
【０００３】
このように、ＳＤＲＡＭは、ＤＲＡＭと比較して、アクセスの際に高速なデータの転送ができ、単位時間当たりのデータ転送量を示すメモリ帯域を広くすることが可能となっている。しかし、このメモリ帯域を保つためには、データの転送に関与しない空き時間を削減して、効率良くデータを転送する必要がある。このメモリ帯域を保つシステムとして、メモリにアクセスするマスタ、マスタからのアクセス要求に従ってＳＤＲＡＭのアクセスコマンドを生成するコマンド発生回路およびＳＤＲＡＭをそれぞれ２組備えるシステムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２５０７２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術では、使用される２個のＳＤＲＡＭのアドレスおよびコマンド入力のための信号線が共有されるとともに、コマンド発生回路が出力したアクセスコマンドが重ならないように時間的にずらしてＳＤＲＡＭに入力される。これにより、２個のマスタは、信号線を共有するＳＤＲＡＭに対して、見かけ上同時にアクセスすることができ、メモリ帯域を保ちながらＳＤＲＡＭに対する配線を削減することが可能になる。しかしながら、この従来技術では、マスタは２個のＳＤＲＡＭのうちの１個にしかアクセスできず、メモリを有効に活用できないという問題がある。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、保有する複数のメモリを有効に活用して、メモリに対するデータの転送速度の低下を防ぐことを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴である履歴情報を保持する履歴情報保持部と、上記保持された上記履歴情報に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択する選択部と、上記第１のメモリまたは上記第２のメモリのうち上記選択された一方から読出しを行う読出し制御部とを具備するメモリコントローラである。これにより、同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択するという作用をもたらす。
【０００８】
またこの第１の側面において、上記第１のメモリおよび上記第２のメモリは、上記データが記録される記録領域を指定する行アドレスまたは列アドレスと動作を指示するリクエストとを入力することによりアクセスされる同期型メモリであり、上記読出し制御部は、上記行アドレスおよび当該行アドレスにより指定される上記記録領域の活性化を指示するリクエストと上記列アドレスおよび当該列アドレスにより指定される上記活性化された上記記録領域からの読出しを指示するリクエストとを順に入力して上記読出しを行ってもよい。これにより、同期型メモリである第１のメモリおよび第２のメモリに同一内容のデータが記録されてアクセス履歴に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択するという作用をもたらす。
【０００９】
またこの第１の側面において、上記履歴情報保持部は、上記第１のメモリおよび上記第２のメモリにおける上記活性化された上記記録領域に対応する上記行アドレスを上記履歴情報として保持して上記選択部に提示し、上記選択部は、上記履歴情報として提示された上記行アドレスに基づいて上記読出しの対象の上記記録領域が活性化されている上記第１のメモリまたは上記第２のメモリのいずれか一方を選択してもよい。これにより、活性化された行アドレスに基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方が選択されるという作用をもたらす。
【００１０】
またこの第１の側面において、上記履歴情報保持部は、上記第１のメモリおよび上記第２のメモリにおける最後の上記リクエストの実行からの経過時間を上記履歴情報として保持して上記選択部に提示し、上記選択部は、上記履歴情報として提示された上記経過時間に基づいて所定の待ち時間が経過している上記第１のメモリまたは上記第２のメモリのいずれか一方を選択してもよい。これにより、最後の上記リクエストの実行からの経過時間に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方が選択されるという作用をもたらす。
【００１１】
またこの第１の側面において、上記履歴情報保持部は、上記第１のメモリおよび上記第２のメモリにおける最後に実行された上記リクエストおよび当該リクエストの実行からの経過時間を上記履歴情報として保持して上記選択部に提示し、上記選択部は、上記履歴情報として提示された上記リクエストの実行からの上記経過時間に基づいて上記リクエストに応じた所定の待ち時間が経過している上記第１のメモリまたは上記第２のメモリのいずれか一方を選択してもよい。これにより、最後に実行された上記リクエストおよび当該リクエストの実行からの経過時間に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方が選択されるという作用をもたらす。
【００１２】
またこの第１の側面において、上記第１のメモリおよび上記第２のメモリは、上記同期型メモリを構成するバンクであり上記第１のメモリおよび上記第２のメモリにアクセスする際には上記バンクにおける記録領域を指定する上記行アドレスまたは上記列アドレスに加えて上記バンクを指定するバンクアドレスをさらに入力してもよい。これにより、同期型メモリを構成するバンクである第１のメモリおよび第２のメモリに同一内容のデータが記録されてアクセス履歴に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択するという作用をもたらす。
【００１３】
またこの第１の側面において、上記第１のメモリおよび上記第２のメモリは、上記同期型メモリにおけるバンクを有するバンクグループであり上記第１のメモリおよび上記第２のメモリにアクセスする際には上記バンクにおける記録領域を指定する上記行アドレスまたは上記列アドレスに加えて上記バンクグループを指定するバンクグループアドレスをさらに入力し、上記履歴情報保持部は、上記第１のメモリまたは上記第２のメモリのうち最後にアクセスされた一方を上記履歴情報として保持して上記選択部に提示し、上記選択部は、上記履歴情報として提示された上記第１のメモリまたは上記第２のメモリとは異なるメモリを選択してもよい。これにより、同期型メモリにおけるバンクグループである第１のメモリおよび第２のメモリに同一内容のデータが記録されてアクセス履歴に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択するという作用をもたらす。
【００１４】
また、本技術の第２の側面は、同一内容のデータが記録される第１のメモリおよび第２のメモリと、上記第１のメモリおよび上記第２のメモリにおけるアクセスの履歴である履歴情報を保持する履歴情報保持部と、上記保持された上記履歴情報に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択する選択部と、上記第１のメモリまたは上記第２のメモリのうち上記選択された一方から読出しを行う読出し制御部とを具備する記憶装置である。これにより、同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択するという作用をもたらす。
【００１５】
また、本技術の第３の側面は、同一内容のデータが記録される第１のメモリおよび第２のメモリと、上記第１のメモリおよび上記第２のメモリにおけるアクセスの履歴である履歴情報を保持する履歴情報保持部と、上記保持された上記履歴情報に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択する選択部と、上記第１のメモリまたは上記第２のメモリのうち上記選択された一方から読出しを行う読出し制御部とを備える記憶装置と、上記記憶装置にアクセスするマスタとを具備する情報処理システムである。これにより、同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択するという作用をもたらす。
【００１６】
また、本技術の第４の側面は、同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴である履歴情報に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択する選択手順と、上記第１のメモリまたは上記第２のメモリのうち上記選択された一方から読出しを行う読出し制御手順とを具備するメモリの制御方法である。これにより、同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴に基づいて上記第１のメモリまたは上記第２のメモリのいずれか一方を読出し対象として選択するという作用をもたらす。
【発明の効果】
【００１７】
本技術によれば、第１のメモリおよび第２のメモリには、同一内容のデータを記録させる。読出しの際には、履歴情報に基づいて第１のメモリまたは第２のメモリのうちいずれかを選択して読出しを行うことにより、読出しにおけるデータの転送速度の低下を防ぐという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１８】
【図１】本技術の第１の実施の形態における情報処理システムの構成例を示す図である。
【図２】本技術の第１の実施の形態におけるメモリコントローラ２００の構成例を示す図である。
【図３】本技術の第１の実施の形態におけるメモリ３００の状態遷移図である。
【図４】本技術の第１の実施の形態におけるメモリ３００の読出しリクエストを示す図である。
【図５】本技術の第１の実施の形態におけるメモリ３００の読出しおよび書込みリクエストを示す図である。
【図６】本技術の第１の実施の形態における履歴情報を示す図である。
【図７】本技術の第１の実施の形態における書込み処理の処理手順の一例を示す図である。
【図８】本技術の第１の実施の形態における読出し処理の処理手順の一例を示す図である。
【図９】本技術の第１の実施の形態における選択処理（ステップＳ９６０）の処理手順の一例を示す図である。
【図１０】本技術の第２の実施の形態におけるメモリ３００の構成例を示す図である。
【図１１】本技術の第２の実施の形態におけるメモリ３００の読出しリクエストを示す図である。
【図１２】本技術の第２の実施の形態における履歴情報を示す図である。
【発明を実施するための形態】
【００１９】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（２個のバンクを有するメモリに適用した場合の例）
２．第２の実施の形態（２個のバンクグループを有するメモリに適用した場合の例）
【００２０】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の第１の実施の形態における情報処理システムの構成例を示す図である。同図の情報処理システムは、マスタ１００と、メモリコントローラ２００と、メモリ３００とを備える。なお、メモリコントローラ２００およびメモリ３００は、記憶システムを構成する。
【００２１】
マスタ１００は、情報処理システムにおける各種の処理を行うものである。このマスタ１００は、メモリコントローラ２００を介して、メモリ３００に対して書込みまたは読出し等のコマンドを発行してアクセスを行う。
【００２２】
メモリコントローラ２００は、メモリ３００を制御するものである。このメモリコントローラ２００は、マスタ１００から発行された書込みおよび読出しコマンドを解釈し、これに基づいて、書込みおよび読出し等のリクエストをメモリ３００に対して要求する。
【００２３】
メモリ３００は、データを記録するものである。このメモリ３００では、メモリコントローラ２００から要求されたリクエストに基づいて、データに対するアクセスが行われる。この際、メモリ３００とメモリコントローラ２００との間でデータの転送が行われる。このメモリ３００は、メモリコントローラインターフェース３０１と、バンク＃０（３０２）と、バンク＃１（３０３）とを備える。
【００２４】
メモリコントローラインターフェース３０１は、メモリコントローラとの間のやり取りを行うものである。
【００２５】
バンク＃０（３０２）およびバンク＃１（３０３）は、メモリ３００におけるデータの記録領域を構成するものである。このメモリ３００にアクセスする際には、上述したバンクにおける記録領域を指定する行アドレスおよび列アドレスを入力するとともに、これらのバンクを指定するためのバンクアドレスをさらに入力する必要がある。本技術の実施の形態においては、メモリ３００として、ＳＤＲＡＭにより構成されたメモリを想定する。このＳＤＲＡＭは、クロックに同期してデータの転送およびリクエストの入力を行うＤＲＡＭである。また、クロックの立上りおよび立下りの両方のエッジに同期してデータの転送が行われる形式のＳＤＲＡＭが広く普及しており、仕様がＤＤＲ３（Double Data Rate 3）およびＤＤＲ４等の規格により定められている。本技術の第１の実施の形態においては、メモリ３００を構成するメモリとしてＤＤＲ３規格に対応したＳＤＲＡＭを想定する。
【００２６】
なお、バンク＃０（３０２）は、特許請求の範囲に記載の第１のメモリの一例である。バンク＃１（３０３）は、特許請求の範囲に記載の第２のメモリの一例である。
【００２７】
信号線１０１は、マスタ１００とメモリコントローラ２００とを電気的に接続するものである。信号線２０１は、メモリコントローラ２００とメモリ３００とを電気的に接続するものである。
【００２８】
マスタ１００は、書込みを行う際に、書込みコマンドとこれに付随する書込みデータ、書込み先アドレスおよび書込みデータ数をメモリコントローラ２００に対して発行する。メモリコントローラ２００は、発行された書込みコマンドを解釈し、これに付随する書込みデータ、書込み先アドレスおよび書込みデータ数に基づいて、メモリ３００に対して書込みリクエストを要求する。メモリ３００は、このリクエストに基づいて記録領域に対する書込みを行う。
【００２９】
一方、読出しの際には、マスタ１００は、読出しコマンドとこれに付随する読出し先アドレスおよび読出しデータ数をメモリコントローラ２００に対して発行する。メモリコントローラ２００は、発行された読出しコマンドを解釈し、これに付随する読出し先アドレスおよび読出しデータ数に基づいて、メモリ３００に対して読出しリクエストを要求する。メモリ３００は、このリクエストに基づいて、記録領域に対して読出しを行い、読み出したデータをメモリコントローラ２００に対して転送する。メモリコントローラ２００は、この転送されたデータを読出しデータとしてマスタ１００に出力する。なお、書込みおよび読出しにおいて、メモリコントローラ２００は、マスタ１００が発行したコマンドに付随する書込み先および読出し先アドレスに基づいて、行アドレスおよび列アドレスを生成し、メモリ３００に対して出力する。
【００３０】
［メモリコントローラの構成］
図２は、本技術の第１の実施の形態におけるメモリコントローラ２００の構成例を示す図である。このメモリコントローラ２００は、マスタインターフェース２１０と、書込み制御部２２０と、読出し制御部２３０と、バッファ２４０と、履歴情報保持部２５０と、履歴情報更新部２６０と、選択部２７０と、メモリインターフェース２８０とを備える。
【００３１】
バッファ２４０は、書込みおよび読出しデータを一時的に保持するものである。マスタ１００から書込みコマンドが発行された際、メモリコントローラ２００は、これに付随する書込みデータをバッファ２４０に保持させる。また、マスタ１００からの読出しコマンドに基づいて、メモリ３００から読み出されてメモリコントローラ２００に転送された読出しデータについても、メモリコントローラ２００は、バッファ２４０に保持させる。その後、保持された読出しデータは、マスタ１００に対して出力される。
【００３２】
書込み制御部２２０は、メモリ３００に対するデータの書込みを制御するものである。この書込み制御部２２０は、マスタ１００からの書込みコマンドに基づいて、コマンドに付随して出力されてバッファ２４０に保持された書込みデータをメモリ３００に転送して書込みを行わせる。なお、書込み制御部２２０は、同一のデータをメモリ３００のバンク＃０（３０２）およびバンク＃１（３０３）に対して書き込む。したがって、バンク＃０（３０２）およびバンク＃１（３０３）は、常に同じ内容を記憶することになる。データの書込みの詳細については、後述する。
【００３３】
履歴情報保持部２５０は、メモリ３００におけるアクセスの履歴である履歴情報を保持するものである。この履歴情報には、例えば、バンク＃０（３０２）およびバンク＃１（３０３）における最後に実行されたリクエストが該当する。履歴情報の詳細については、後述する。
【００３４】
履歴情報更新部２６０は、履歴情報保持部２５０に保持された履歴情報を更新するものである。履歴情報としてメモリ３００の各バンクにおける最後に実行されたリクエストが保持されている場合を例に挙げて、この履歴情報の更新について説明する。履歴情報更新部２６０は、メモリ３００においてリクエストが実行される毎に、当該リクエストを新たな履歴情報として履歴情報保持部２５０に保持させて、更新を行う。なお、履歴情報の更新の詳細については、後述する。
【００３５】
選択部２７０は、履歴情報保持部２５０に保持された履歴情報に基づいてメモリ３００のバンク＃０（３０２）およびバンク＃１（３０３）のいずれか一方を読出し対象として選択するものである。具体的には、履歴情報に基づいて、これらのバンクのうちより早く読出しリクエストを受理可能なバンクを選択する。この選択の詳細については、後述する。
【００３６】
読出し制御部２３０は、メモリ３００に対するデータの読出しを制御するものである。この読出し制御部２３０は、マスタ１００からの読出しコマンドに基づいて、メモリ３００からデータの読出しを行う。この読み出されたデータは、一旦バッファ２４０に保持された後、読出しデータとしてマスタ１００に対して出力される。なお、読出し制御部２３０は、バンク＃０（３０２）またはバンク＃１（３０３）のうち選択部２７０により選択された一方からデータの読出しを行う。データの読出しの詳細については、後述する。
【００３７】
マスタインターフェース２１０は、マスタ１００との間でやり取りを行うものである。メモリインターフェース２８０は、メモリ３００との間でやり取りを行うものである。バス２０２は、上述したメモリコントローラ２００の各部を相互に接続するものである。
【００３８】
［ＳＤＲＡＭにおける書込みおよび読出し］
図３は、本技術の第１の実施の形態におけるメモリ３００の状態遷移図である。同図は、メモリ３００を構成するＤＤＲ３規格に対応したＳＤＲＡＭにおける状態とその遷移条件を表したものであり、リクエストの入力による遷移を実線の矢印により表し、自動的な遷移を破線の矢印により表している。なお、同図においては、ＳＤＲＡＭの状態のうち主要なもののみを記載した。まず、ＳＤＲＡＭは、パワーオン後に初期化状態に遷移する。この状態では、ＳＤＲＡＭの内部回路が初期化される。ＺＱキャリブレーション（ＺＱＣＬ）リクエストが入力されると、ＳＤＲＡＭは、ＺＱキャリブレーション状態に遷移する。この状態では、ＺＱキャリブレーションが行われる。ここで、ＺＱキャリブレーションとは、高速に動作するＳＤＲＡＭの入出力信号の伝送品質を維持するため、信号線のインピーダンスマッチングを行う機能である。
【００３９】
その後、ＳＤＲＡＭは、アイドル状態に遷移する。この状態は、なんら処理が行われておらず、静止している状態である。このアイドル状態のＳＤＲＡＭに対してリクエストを入力することにより、ＳＤＲＡＭを各種の状態に遷移させることができる。例えば、リフレッシュ（ＲＥＦ）リクエストが入力されると、ＳＤＲＡＭは、リフレッシュ状態に遷移する。リフレッシュを行った後、ＳＤＲＡＭは、再度アイドル状態に遷移する。
【００４０】
読出しを行う際には、アクティベート（ＡＣＴ）リクエストを入力して、ＳＤＲＡＭを活性化してアクティブ状態にする必要がある。ここで、活性化とは、入力された行アドレスにより指定された記録領域（メモリセル）がセンスアンプに接続され、メモリセルの出力信号が増幅されてセンスアンプより出力された状態にすることである。この活性化により、メモリセルに対して書込みおよび読出しを実行可能な状態にすることができる。なお、活性化は、バンク毎に行う。そのため、ＡＣＴリクエストを入力する際、活性化する行アドレスとともにバンクアドレスを入力する必要がある。ＡＣＴリクエストが入力されると、ＳＤＲＡＭの対応するバンクは、アクティベーティング状態を経てバンクアクティブ状態に遷移し、アクティブ状態になる。なお、以下の説明では、活性化によりアクティブ状態になったメモリセルを指定する行アドレスをアクティブ状態の行アドレスと称する。
【００４１】
バンクアクティブ状態のＳＤＲＡＭに、読出し（ＲＥＡＤ）リクエストが読出し対象のメモリセルに対応する列アドレスおよびバンクアドレスとともに入力されると、ＳＤＲＡＭは、リード＃１状態に遷移する。この状態では、ＳＤＲＡＭは、対応するバンクの列アドレスにより指定されたメモリセルのデータを出力する。すなわち、ＡＣＴリクエストにより活性化されたメモリセルのうち、列アドレスにより選択されたメモリセルのデータがＳＤＲＡＭから出力される。
【００４２】
このＲＥＡＤリクエストに続いて同一の行アドレスに対応する他のメモリセルのデータに対するＲＥＡＤリクエストを続けて入力することができる。また、同一の行アドレスに対応するメモリセルに対する書込みリクエストを続けて入力することも可能である。この場合には、ＳＤＲＡＭの対応するバンクは、ライト＃１状態に遷移する。プリチャージ（ＰＲＥ）リクエストを入力した場合には、ＳＤＲＡＭは、次に説明するプリチャージ状態に遷移する。これらのリクエストの入力が無い場合、ＳＤＲＡＭは、再度バンクアクティブ状態に遷移する。
【００４３】
プリチャージ状態では、アクティブ状態のメモリセルとセンスアンプの入力とが切断されるとともに、センスアンプの出力が定常状態の電圧であるプリチャージ電圧になる。これにより、当該メモリセルは、活性化前の状態に戻る。その後、ＳＤＲＡＭは、アイドル状態に遷移する。
【００４４】
書込みは、ＡＣＴリクエストおよび書込み（ＷＲＩＴＥ）リクエストを順に入力することにより行うことができる。読出しを行う際と同様の手順であるため説明を省略する。
【００４５】
読出しおよび書込みのリクエストには、上述したＲＥＡＤおよびＷＲＩＴＥのほかにＲＥＡＤ  ＡＰおよびＷＲＩＴＥ  ＡＰを使用することもできる。これらは、読出しまたは書込み動作を行った後、ＳＤＲＡＭを自動的にプリチャージ状態に遷移させるリクエストである。ＲＥＡＤ  ＡＰを例に挙げて説明する。ＳＤＲＡＭのバンクがバンクアクティブ、リード＃１またはライト＃１状態のとき、ＲＥＡＤ  ＡＰリクエストを入力するとＳＤＲＡＭのバンクは、リード＃２状態に遷移する。この状態では、読出しを行った後、自動的にプリチャージ状態に遷移する。すなわち、リード＃２状態は、１度の読出しを行った後プリチャージ状態に遷移する点においてリード＃１状態と異なっている。この関係は、ライト＃１およびライト＃２においても同様である。
【００４６】
このように、ＳＤＲＡＭは、初期化処理やリフレッシュが行われた後にはアイドル状態になる。その後、ＳＤＲＡＭの状態をアイドル、バンクアクティブ、リード（またはライト）、プリチャージの順に遷移させて、ＳＤＲＡＭにおける書込みおよび読出しが行われる。メモリコントローラ２００は、読出しおよび書込みのリクエストを要求する際、ＲＥＡＤおよびＷＲＩＴＥリクエストに加えてＡＣＴおよびＰＲＥリクエストをメモリ３００に対して入力し、読出し等を行う。
【００４７】
［メモリ３００における読出しリクエスト処理］
図４は、本技術の第１の実施の形態におけるメモリ３００の読出しリクエストを示す図である。同図は、メモリコントローラ２００が、メモリ３００に対して読出しリクエストを要求する場合の入出力信号（クロック、リクエスト入力、アドレス入力、バンクアドレス入力およびデータ出力）の関係を表したものである。なお、リクエスト入力信号に記載された文字は、図３において説明したリクエストの種類を表している。アドレス入力信号に記載された文字はアドレスの種類を表しており、Ｒ１およびＲ２は行アドレスを表し、Ｃ１およびＣ２は列アドレスを表している。バンクアドレス入力信号に記載された文字はバンクのアドレスを表している。また、同図のＳＤＲＡＭは、ＲＥＡＤリクエストからのレイテンシ（ＣＬ）として６クロックサイクルを想定する。この場合、ＲＥＡＤリクエストが入力されてから６クロックサイクル後に読出しデータの出力が開始される。なお、リクエストはクロックの立上りに同期して入力され、データはクロックの立上りおよび立下りに同期して入力または出力される。さらに、同図のＳＤＲＡＭは、データ転送時のバースト長（ＢＬ）として８ワードを想定する。
【００４８】
また、同図におけるａは、メモリ３００のバンク＃０（３０２）に対して異なる行アドレスのメモリセルから読出しを行う場合の入力および出力信号を表したものである。まず、メモリコントローラ２００は、アイドル状態のバンク＃０（３０２）に対してＡＣＴリクエストとともに行アドレスＲ１およびバンクアドレス＃０を入力する。ｔＲＣＤ経過後に、バンク＃０（３０２）は、バンクアクティブ状態に遷移してＲＥＡＤリクエストを受理可能となる。そのため、メモリコントローラ２００は、ｔＲＣＤの経過を待ってＲＥＡＤリクエストとともに列アドレスＣ１およびバンクアドレス＃０を入力する。これにより、バンク＃０（３０２）は、ＲＥＡＤリクエストの入力からレイテンシである６クロックサイクル後に読出しデータの出力を開始する。このデータの出力には、バースト長の半分のクロックサイクルである４クロックサイクルが必要となるため、ＲＥＡＤリクエストの入力からデータの出力の終了までには、１０クロックサイクル（ＣＬ＋ＢＬ／２）が必要となる。
【００４９】
次に、行アドレスＲ１とは異なる行アドレスを活性化するため、ＲＥＡＤリクエスト実行後にＰＲＥリクエストを入力してプリチャージを行う必要がある。ＲＥＡＤリクエストの入力からｔＲＴＰ経過後に、バンク＃０（３０２）は、ＰＲＥリクエストを受理可能となる。そのため、メモリコントローラ２００は、ｔＲＴＰの経過を待ってＰＲＥリクエストとともにバンクアドレス＃０を入力する。プリチャージに要する時間はｔＲＰであり、メモリコントローラ２００は、ｔＲＰの経過を待ってＡＣＴリクエストとともに行アドレスＲ２およびバンクアドレス＃０を入力する。ｔＲＣＤ経過後に、メモリコントローラ２００は、ＲＥＡＤリクエストとともに列アドレスＣ２およびバンクアドレス＃０を入力する。これにより、バンク＃０（３０２）の異なる行アドレスＲ２に対応するメモリセルから読出しを行うことができる。なお、同図におけるａの最初のＲＥＡＤリクエストの代わりに、ＲＥＡＤ  ＡＰリクエストを入力してもよい。この場合には、ＲＥＡＤ  ＡＰリクエストの入力からｔＲＴＰ経過後に、メモリ３００は、自動的にＰＲＥリクエストを実行する。
【００５０】
一方、同図におけるｂは、バンク＃０（３０２）に対して同一の行アドレスのメモリセルから読出しを行う場合の入力および出力信号を表したものである。まず、メモリコントローラ２００は、ＡＣＴリクエストとともに行アドレスＲ１およびバンクアドレス＃０を入力する。ｔＲＣＤ経過後に、メモリコントローラ２００は、ＲＥＡＤリクエストとともに列アドレスＣ１およびバンクアドレス＃０を入力する。さらに、ｔＣＣＤ経過後、メモリコントローラ２００は、ＲＥＡＤリクエストとともに列アドレスＣ２およびバンクアドレス＃０を入力する。これにより、列アドレスＣ１およびＣ２に対応したデータが順に出力される。このように、同一の行アドレスに対応する列アドレスを伴うＲＥＡＤリクエストを連続して入力する場合には、ＳＤＲＡＭからのデータの出力を待たずに次のＲＥＡＤリクエストを入力することができ、ＳＤＲＡＭから切れ目なくデータを出力させることができる。
【００５１】
市販されているＳＤＲＡＭを例に挙げて同図におけるａおよび同図におけるｂの場合の読出しの所要時間を比較する。クロックのサイクルタイムは２．５ｎｓ、ｔＲＣＤおよびｔＲＰは１３．１２５ｎｓ、ｔＲＴＰおよびｔＣＣＤは４クロックサイクルと想定する。クロックのサイクルタイムが２．５ｎｓであるため、ｔＲＴＰおよびｔＣＣＤは、１０ｎｓとなる。同図におけるａの所要時間は４９．３７５ｎｓとなり、同図におけるｂの所要時間は２３．１２５ｎｓとなる。これにより、同一の行アドレスに対して連続してアクセスする方が読出しの所要時間を大幅に短縮できることが分かる。
【００５２】
なお、バンク＃０（３０２）に対して同一の行アドレスのメモリセルから読出しを行う場合であっても、ＷＲＩＴＥリクエストを実行した後にＲＥＡＤリクエスト入力する等の場合には、ｔＣＣＤより長い待ち時間が必要である。この様子について図５を参照して説明する。
【００５３】
図５は、本技術の第１の実施の形態におけるメモリ３００の読出しおよび書込みリクエストを示す図である。同図は、アクセス対象のメモリセルを活性化した後、当該メモリセルに対して読出しおよび書込みを交互に行う場合の入力および出力信号を表したものである。なお、ＲＥＡＤリクエストの場合と同様に、ＷＲＩＴＥリクエストからのレイテンシ（ＷＬ）として６クロックサイクルを想定する。ＲＥＡＤリクエストに続いてＷＲＩＴＥリクエストを入力する場合には、ＲＥＡＤリクエストの入力後にｔＣＣＤ＋２クロックサイクルの経過時間が必要になる。また、ＷＲＩＴＥリクエストに続いてＲＥＡＤリクエストを入力する場合には、ＷＲＩＴＥリクエストの入力後に１０クロックサイクル（ＷＬ＋ＢＬ／２）＋ｔＷＴＲの経過時間が必要となる。
【００５４】
読出しと書込みとでは、ＳＤＲＡＭに対するデータの入出力の方向が異なるため、データ信号線に挿入された双方向バッファの入出力方向を切り替える必要がある。この切替えに要する時間のため、ＲＥＡＤリクエスト実行後にＷＲＩＴＥリクエストを入力する場合には、待ち時間が増加する。
【００５５】
一方、ＷＲＩＴＥリクエスト実行後にＲＥＡＤリクエストを入力する場合には、ＷＲＩＴＥリクエストの入力から書込みデータの入力終了に要する時間である１０クロックサイクルに加えてｔＷＴＲの経過をさらに要する。この期間は、ＳＤＲＡＭ内部の書込み処理による遅れ時間であり、同図の例では、４クロックサイクルを想定する。そのため、ＲＥＡＤリクエスト実行後にＷＲＩＴＥリクエストを入力する場合よりもさらに長い待ち時間が必要となる。いずれの場合においても、上述したｔＣＣＤより長い待ち時間を要することとなる。なお、ＷＲＩＴＥリクエストの後にＰＲＥリクエストを入力する場合にも、１０クロックサイクル＋ｔＷＴＲの経過を待つ必要がある。
【００５６】
前述のようにアクティブ状態の行アドレスに対して連続してアクセスする方が、高速なアクセスが可能となる。そこで、本技術の第１の実施の形態では、バンク＃０（３０２）およびバンク＃１（３０３）に対して同一内容のデータを記録させる。データの読出しを行う場合には、バンク＃０（３０２）またはバンク＃１（３０３）のいずれか一方を選んで読出しを行う。この際、読出し対象のメモリセルに係る行アドレスがアクティブ状態になっているバンク＃０（３０２）またはバンク＃１（３０３）を選んで読出しを行う。なお、バンク＃０（３０２）またはバンク＃１（３０３）におけるアクティブ状態の行アドレスの情報は、履歴情報として履歴情報保持部２５０に保持されている。選択部２７０は、この履歴情報に基づいて読出し対象のメモリセルに係る行アドレスがアクティブ状態にあるバンク＃０（３０２）またはバンク＃１（３０３）のいずれか一方を選択する。読出し制御部２３０は、この選択されたバンク＃０（３０２）またはバンク＃１（３０３）から読出しを行う。
【００５７】
［履歴情報］
図６は、本技術の第１の実施の形態における履歴情報を示す図である。同図は、履歴情報保持部２５０に保持された履歴情報を表したものである。この履歴情報には、バンク＃０（３０２）およびバンク＃１（３０３）に対応するバンク番号毎に、アクティブおよびアイドルのいずれかを表す状態と状態がアクティブ状態の場合の行アドレスとが保持されている。また、履歴情報には、最後に実行されたリクエストおよび当該リクエストの実行からの経過時間がさらに保持されている。なお、この経過時間は、クロックサイクル数により表されている。
【００５８】
［選択部の動作］
選択部２７０は、履歴情報保持部２５０に保持された履歴情報により、バンク＃０（３０２）およびバンク＃１（３０３）がアクティブ状態にあるか否かを判断する。これらのバンクがアクティブ状態にある場合、選択部２７０は、アクティブ状態の行アドレスと読出し対象のメモリセルに係る行アドレスとが一致するか否かを判断する。さらに、選択部２７０は、最後に実行されたリクエストと経過時間に基づいて、これらのバンクがＲＥＡＤリクエストを受理可能となっているか否かを判断する。選択部２７０は、これらの判断に基づいてバンクを選択する。この選択部２７０の動作について、場合に分けて説明する。
【００５９】
（ａ）バンク＃０（３０２）またはバンク＃１（３０３）において読出し対象のメモリセルに係る行アドレスがアクティブ状態のとき。
この場合には、読出し対象のメモリセルに係る行アドレスがアクティブとなっているバンクを選択する。この際、最後に実行されたリクエストと経過時間とに基づいて、当該バンクがＲＥＡＤリクエストを受理可能となっているか否かを判断する。例えば、最後に実行されたリクエストがＲＥＡＤであり、ｔＣＣＤ以上の経過時間となっている場合には、当該バンクはＲＥＡＤリクエストを受理可能である。このような場合に、選択部２７０は、当該バンクを選択する。読出し制御部２３０は、この選択されたバンクに対してＲＥＡＤリクエストを実行する。また、最後に実行されたリクエストがＷＲＩＴＥの場合には、選択部２７０は、１０クロックサイクル＋ｔＷＴＲ以上の経過時間となっている場合に当該バンクを選択する。
【００６０】
（ｂ）バンク＃０（３０２）およびバンク＃１（３０３）において読出し対象のメモリセルに係る行アドレスがアクティブ状態でないとき。
バンク＃０（３０２）およびバンク＃１（３０３）がアイドル状態のときは、ＡＣＴリクエストを入力してバンクを活性化する必要がある。選択部２７０は、最後に実行されたリクエストと経過時間に基づいてバンクを選択する。最後に実行されたリクエストがＰＲＥまたはＲＥＡＤ  ＡＰの場合には、ＡＣＴリクエストを入力可能となるまでの待ち時間は、ｔＲＰである。このため、選択部２７０は、ｔＲＰ以上の経過時間になっているバンクを選択する。一方、バンク＃０（３０２）およびバンク＃１（３０３）がアイドル状態でないときは、ＰＲＥリクエストを入力してバンクをアイドル状態にする必要がある。例えば、最後に実行されたリクエストがＲＥＡＤリクエストの場合には、ＰＲＥリクエストを入力可能となるまでの待ち時間は、ｔＲＴＰである。このため、選択部２７０は、ｔＲＴＰ以上の経過時間になっているバンクを選択する。
【００６１】
上述の（ａ）および（ｂ）のいずれの場合であっても、選択部２７０は、より早くＲＥＡＤリクエストを受理可能なバンクを選択する。例えば、次の手順によりバンクを選択することができる。まず、選択部２７０は、読出し対象のメモリセルに係る行アドレスがアクティブ状態になっているバンクを選択する。この場合、ＲＥＡＤリクエスト入力までの待ち時間は、ｔＣＣＤ以下となる。次に、メモリコントローラ２００は、アイドル状態になっているバンクを選択する。この場合、待ち時間は、ｔＲＣＤ以下となる。
【００６２】
これらのいずれでもない場合には、メモリコントローラ２００は、最後のアクセスからの経過時間が長いバンクを選択する。例えば、バンク＃０（３０２）およびバンク＃１（３０３）のうち最後にアクセスされたバンクがバンク＃０（３０２）の場合には、メモリコントローラ２００は、バンク＃１（３０３）を選択する。最後のアクセスからの経過時間が長いバンクを選択することにより、必要な待ち時間を短くすることができるためである。なお、このような場合には、バンク＃０（３０２）およびバンク＃１（３０３）において読出し対象のメモリセルに係る行アドレスとは異なる行アドレスがアクティブとなっている場合が該当する。待ち時間は、ｔＲＰ＋ｔＲＣＤ以下となる。市販されているＳＤＲＡＭを例に挙げてこれらの待ち時間を比較する。前述のように、ｔＣＣＤは４クロックサイクル（１０ｎｓ）、ｔＲＣＤおよびｔＲＰは１３．１２５ｎｓと想定する。読出し対象のメモリセルに係る行アドレスがアクティブ状態になっているバンク、アイドル状態のバンクおよびこれら以外のバンクの場合の待ち時間は、それぞれ１０ｎｓ、１３．１２５ｎｓおよび２６．２５ｎｓとなる。すなわち、この順にバンクを選択することにより、より早くＲＥＡＤリクエストを受理可能なバンクを選択することができる。
【００６３】
図６に挙げた履歴情報の場合には、バンク＃０（３０２）およびバンク＃１（３０３）はいずれもアクティブ状態であるため、選択部２７０は、読出し対象のメモリセルに係る行アドレスがアクティブ状態になっているバンクを選択する。例えば、行アドレス＃１のメモリセルが読出し対象の場合には、バンク＃１（３０３）を選択する。図６の履歴情報から、バンク＃１（３０３）における最後に実行されたリクエストはＷＲＩＴＥであり、経過時間は２クロックサイクルであることが分かる。図５において説明したように、ＷＲＩＴＥリクエスト実行後は１０クロックサイクル＋ｔＷＴＲの経過後にＰＲＥリクエストを受理可能となる。これに対して、バンク＃１（３０３）の経過時間は、２クロックサイクルであるため、選択部２７０は、１０クロックサイクル＋ｔＷＴＲの経過を待ってバンク＃０（３０２）を選択する。
【００６４】
一方、行アドレス＃３のメモリセルが読出し対象の場合には、選択部２７０は、最後に実行されたリクエストおよび経過時間に基づいて、ＰＲＥリクエストを入力可能なバンクを選択する。バンク＃０（３０２）において最後に実行されたリクエストはＲＥＡＤであるため、ｔＲＴＰ経過後にＰＲＥリクエストを受理可能となる。バンク＃０（３０２）では、既に当該経過時間を上回る５クロックサイクルが経過している。一方、バンク＃１（３０３）においては、最後に実行されたリクエストは、ＷＲＩＴＥである。ＷＲＩＴＥリクエストの実行後は、１０クロックサイクル＋ｔＷＴＲ経過後にＰＲＥリクエストを受理可能となる。しかし、バンク＃１（３０３）は、２クロックサイクルしか経過しておらず、ＰＲＥリクエストを受理可能な状態ではない。このため、選択部２７０は、より早くＰＲＥリクエストを受理可能なバンク＃０（３０２）を選択する。
【００６５】
このように、より待ち時間が短いバンクを選択することにより、データの読出し時間を短縮することができる。なお、選択されたバンクにおいて最後に実行されたリクエストに固有の待ち時間を経過していない場合には、選択部２７０は、待ち時間が経過するまで待機する。
【００６６】
［履歴情報の更新］
履歴情報保持部２５０に保持された履歴情報は、履歴情報更新部２６０により更新される。この更新は、次のように行われる。まず、履歴情報更新部２６０は、バンク＃０（３０２）およびバンク＃１（３０３）においてリクエストが実行された際に、履歴情報のうちバンクの状態、アクティブ状態の行アドレスおよび最後に実行されたリクエストにより新たな履歴情報を生成する。次に、履歴情報更新部２６０は、生成した履歴情報を履歴情報保持部２５０に保持させる。また、履歴情報更新部２６０は、最後に実行されたリクエストにおける当該実行後のクロック数をカウントし、このカウント値を履歴情報のうちの経過時間とし、履歴情報保持部２５０に保持させる。このようにして、履歴情報を更新することができる。
【００６７】
［書込み処理］
図７は、本技術の第１の実施の形態における書込み処理の処理手順の一例を示す図である。マスタから書込みコマンドが発行されると、メモリコントローラ２００は、本処理を開始する。まず、メモリコントローラ２００は、書込みコマンドに付随する書込みデータをバッファ２４０に保持させる（ステップＳ９０１）。次に、メモリコントローラ２００は、バッファ２４０に保持された書込みデータをバンク＃０（３０２）に書き込む（ステップＳ９０２）。前述のように、この書込みは、ＷＲＩＴＥ等のリクエストをメモリ３００に入力することにより行われる。次に、メモリコントローラ２００は、バンク＃１（３０３）に対してバッファ２４０に保持された書込みデータによる書込みを行う（ステップＳ９０３）。その後、メモリコントローラ２００は、書込み処理を終了する。
【００６８】
［読出し処理］
図８は、本技術の第１の実施の形態における読出し処理の処理手順の一例を示す図である。マスタから読出しコマンドが発行されると、メモリコントローラ２００は、本処理を開始する。まず、メモリコントローラ２００は、履歴情報保持部２５０に保持されている履歴情報を取得する（ステップＳ９５１）。次に、メモリコントローラ２００は、履歴情報に基づいて読出しを行うバンクを選択する（ステップＳ９６０）。次に、メモリコントローラ２００は、選択されたバンクからデータの読出しを行う（ステップＳ９５３）。前述のように、この読出しは、ＲＥＡＤ等のリクエストをメモリ３００に入力することにより行われる。この際、ステップＳ９６０において選択されたバンクのアドレスを指定する。読み出されたデータは、バッファ２４０に保持された後、マスタ１００に対して出力される。最後に、メモリコントローラ２００は、履歴情報を更新し（ステップＳ９５５）、読出し処理を終了する。
【００６９】
［バンク選択処理］
図９は、本技術の第１の実施の形態におけるバンク選択処理（ステップＳ９６０）の処理手順の一例を示す図である。メモリコントローラ２００は、履歴情報に基づいてバンクの選択を行う。まず、メモリコントローラ２００は、バンク＃０（３０２）がアクティブ状態か否かを判断する（ステップＳ９６１）。バンク＃０（３０２）がアクティブ状態の場合には（ステップＳ９６１：Ｙｅｓ）、メモリコントローラ２００は、さらにアクティブ状態の行アドレスと読出し対象のメモリセルに係る行アドレスとが等しいか否かを判断する（ステップＳ９６２）。その結果、両者が等しい場合、すなわち読出し対象のメモリセルに係る行アドレスがアクティブ状態の時（ステップＳ９６２：Ｙｅｓ）、メモリコントローラ２００は、バンク＃０（３０２）を選択し（ステップＳ９６３）、ステップＳ９７１の処理に移行する。一方、バンク＃０がアクティブ状態ではない場合（ステップＳ９６１：Ｎｏ）または読出し対象のメモリセルに係る行アドレスがアクティブ状態ではない場合（ステップＳ９６２：Ｎｏ）には、メモリコントローラ２００は、ステップＳ９６４の処理に移行する。
【００７０】
ステップＳ９６４において、メモリコントローラ２００は、バンク＃１（３０３）がアクティブ状態か否かを判断する（ステップＳ９６４）。バンク＃１（３０３）がアクティブ状態の場合には（ステップＳ９６４：Ｙｅｓ）、メモリコントローラ２００は、さらに読出し対象のメモリセルに係る行アドレスがアクティブ状態か否かを判断する（ステップＳ９６５）。その結果、読出し対象のメモリセルに係る行アドレスがアクティブ状態の時（ステップＳ９６５：Ｙｅｓ）、メモリコントローラ２００は、バンク＃１（３０３）を選択し（ステップＳ９６６）、ステップＳ９７１の処理に移行する。一方、バンク＃１がアクティブ状態ではない場合（ステップＳ９６４：Ｎｏ）または読出し対象のメモリセルに係る行アドレスがアクティブ状態ではない場合（ステップＳ９６５：Ｎｏ）には、メモリコントローラ２００は、ステップＳ９６７の処理に移行する。
【００７１】
ステップＳ９６７において、メモリコントローラ２００は、バンク＃０（３０２）がアイドル状態か否かを判断する（ステップＳ９６７）。バンク＃０（３０２）がアイドル状態の場合には（ステップＳ９６７：Ｙｅｓ）、メモリコントローラ２００は、バンク＃０（３１２を選択し（ステップＳ９６３）、ステップＳ９７１の処理に移行する。一方、バンク＃０（３０２）がアイドル状態でない場合は（ステップＳ９６７：Ｎｏ）、メモリコントローラ２００は、バンク＃１（３０３）がアイドル状態か否かを判断する（ステップＳ９６８）。バンク＃１（３０３）がアイドル状態の場合には（ステップＳ９６８：Ｙｅｓ）、メモリコントローラ２００は、バンク＃１（３０３）を選択し（ステップＳ９６６）、ステップＳ９７１の処理に移行する。
【００７２】
バンク＃１（３０３）がアイドル状態でない場合には（ステップＳ９６８：Ｎｏ）、メモリコントローラ２００は、バンク＃０（３０２）またはバンク＃１（３０３）のうち最後のアクセスからの経過時間が長いバンクを選択する（ステップＳ９６９）。その後、ステップＳ９７１の処理に移行する。
【００７３】
ステップＳ９７１において、メモリコントローラ２００は、選択されたバンクにおける最後に実行されたリクエストおよび経過時間に基づいて、当該バンクがＲＥＡＤ等のリクエストを受理可能か否かについて判断する（ステップＳ９７１）。その結果、リクエストを受理可能でない場合には、リクエスト受理可能となるまで待機し（ステップＳ９７１：Ｎｏ）、リクエストを受理可能の場合には（ステップＳ９７１：Ｙｅｓ）、バンク選択処理を終了する。
【００７４】
このように、本技術の第１の実施の形態では、バンク＃０（３０２）およびバンク＃１（３０３）に対して同一内容のデータを記録させる。データを読み出す際に、履歴情報に基づいて、バンク＃０（３０２）またはバンク＃１（３０３）のうち待ち時間が短いバンクを選択して読出しを行うことにより、読出し時間を短縮することができ、データの転送速度の低下を防ぐことができる。
【００７５】
［第１の変形例］
上述の実施の形態では、バンク＃０（３０２）およびバンク＃１（３０３）に同一内容のデータを記録し、これらの一方を読出し対象として選択していた。これに対し、これらバンクに代えて、ＳＤＲＡＭからなる２個のメモリにより構成してもよい。２個の独立したＳＤＲＡＭに対しては、書込み等のリクエストを同時に要求することができるため、処理の高速化が可能となる。
【００７６】
［第２の変形例］
上述の実施の形態では、履歴情報保持部２５０は、バンクの状態、アクティブ状態の行アドレス、最後に実行されたリクエストおよび経過時間を履歴情報として保持していた。これに対し、最後に実行されたリクエストからの経過時間のみを履歴情報として保持してもよい。アクセスを行う毎に、ＳＤＲＡＭのバンクをアイドル状態に戻す方式、すなわち、ＲＥＡＤまたはＷＲＩＴＥリクエストを入力した後には、必ずＰＲＥリクエストを入力する方式を採るシステムの場合には、最後に実行したリクエストはＰＲＥである。選択部２７０は、このリクエストからの経過時間に基づいて、待ち時間であるｔＲＰが経過しているバンクを選択することができる。これにより、選択部２７０における処理を簡略化でき、処理の高速化が可能となる。
【００７７】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、メモリとしてＤＤＲ３規格のＳＤＲＡＭを想定していた。これに対し、本技術の第２の実施の形態では、メモリとしてＤＤＲ４規格のＳＤＲＡＭを想定し、このメモリに含まれる２つのバンクグループに同一内容のデータを記録して読出し時に選択する。これにより、ＤＤＲ４規格のＳＤＲＡＭにおいても、データの転送速度の低下を防ぐことができる。
【００７８】
［メモリの構成］
図１０は、本技術の第２の実施の形態におけるメモリ３００の構成例を示す図である。同図におけるメモリ３００は、メモリコントローラインターフェース３１１と、バンクグループ＃０（３１２）と、バンクグループ＃１（３１５）とを備える。
【００７９】
バンクグループ＃０（３１２）は、バンク＃０（３１３）と、バンク＃１（３１４）とを備える。バンクグループ＃１（３１５）は、バンク＃０（３１６）と、バンク＃１（３１７）とを備える。ここで、バンクグループとは、バンクを有する記録領域であり、ＤＤＲ４規格のＳＤＲＡＭにおいて導入されたメモリの構成要素である。このようなメモリ３００にアクセスする際には、行アドレスまたは列アドレスとバンクアドレスとに加えてバンクグループを指定するバンクグループアドレスをリクエストとともに入力する必要がある。このようなバンクグループを有するメモリとして、上述したメモリのほかに、ＧＤＤＲ５（Graphics Double Data Rate 5）およびＬＰＤＤＲ４（Low Power Double Data Rate 4）規格のメモリが該当する。このバンクグループ＃０（３１２）およびバンクグループ＃１（３１５）には同一内容のデータを記録させる。すなわち、バンク＃０（３１３）とバンク＃０（３１６）およびバンク＃１（３１４）とバンク＃１（３１７）には、それぞれ同一内容のデータが記録される。
【００８０】
なお、これ以外の情報処理システムおよびメモリコントローラ２００の構成は、本技術の第１の実施の形態において説明した情報処理システムおよびメモリコントローラ２００と同様であるため、説明を省略する。
【００８１】
なお、バンクグループ＃０（３１２）は、特許請求の範囲に記載の第１のメモリの一例である。バンクグループ＃１（３１５）は、特許請求の範囲に記載の第２のメモリの一例である。
【００８２】
［メモリ３００における読出しリクエスト処理］
図１１は、本技術の第２の実施の形態におけるメモリ３００の読出しリクエストを示す図である。同図は、メモリコントローラ２００が、メモリ３００に対して読出しリクエストを要求する場合の入出力信号（クロック、リクエスト入力、バンクグループアドレス入力およびデータ出力）の関係を表したものである。図４において説明したＤＤＲ３規格のＳＤＲＡＭであるメモリ３００と同様に、ＤＤＲ４規格のＳＤＲＡＭであるメモリ３００においてもＲＥＡＤ等のリクエストを入力することにより、読出しが行われる。なお、メモリ３００のデータ転送時のバースト長として８ワードを想定し、ＲＥＡＤリクエストからのレイテンシとして１１クロックを想定する。
【００８３】
同図におけるａは、ＡＣＴリクエストにより活性化されたバンクグループ＃０（３１２）およびバンクグループ＃１（３１５）のバンクに対して交互にＲＥＡＤリクエストが入力される場合の例を表したものである。これは、ＲＥＡＤリクエストを入力する際に、バンクグループアドレスとして＃０および＃１を交互に入力することにより行うことができる。なお、同図において、バンクアドレスおよび列アドレスの入力については、記載を省略している。また、リクエスト入力ＢＧ：＃０およびデータ出力ＢＧ：＃０は、バンクグループ＃０（３１２）におけるリクエスト入力信号およびデータ出力信号を表している。同様に、リクエスト入力ＢＧ：＃１およびデータ出力ＢＧ：＃１は、バンクグループ＃１（３１５）におけるリクエスト入力信号およびデータ出力信号を表している。
【００８４】
このように、バンクグループを交互に指定してＲＥＡＤリクエストを入力する場合には、最初のＲＥＡＤリクエストを入力してｔＣＣＤ＿Ｓ経過後に次のＲＥＡＤリクエストを入力することができる。同図におけるａでは、ｔＣＣＤ＿Ｓとして４クロックサイクルを想定している。この場合、各バンクグループからのデータも交互に出力され、これらのデータが切れ目なくメモリ３００から出力される。
【００８５】
一方、同図におけるｂは、バンクグループ＃０に対してＲＥＡＤリクエストが連続して入力される場合の例を表したものである。この場合における、ＲＥＡＤリクエスト入力後に次のＲＥＡＤリクエストが入力可能となる時間は、ｔＣＣＤ＿Ｓより１クロックサイクル長いｔＣＣＤ＿Ｌとなる。図３において前述したように、メモリ３００にＲＥＡＤリクエストを入力すると、所定のレイテンシの経過後に、データがクロックに同期してメモリ３００より出力される。この際、選択されたバンクグループにおいて、列アドレスによりメモリセルが選択され、選択されたメモリセルのデータが、メモリ３００内の出力バッファに保持されて、シリアルデータに変換される。このバンクグループ内部の回路が動作している時間は、メモリ３００は、次のＲＥＡＤリクエストを受け付けることができない。
【００８６】
同図におけるｂにおいては、この時間（同図におけるｂのＡにより表された時間）は、４クロックサイクルである。そのため、ｔＣＣＤ＿Ｌは５クロックサイクルとなる。メモリ３００からの出力データは、１クロックサイクルの空き時間（同図におけるｂのＢにより表された時間）をはさんで出力されることとなり、転送速度が低下する。
【００８７】
同図におけるａに表したように、バンクグループを交互にアクセスすることにより、各バンクにおけるＲＥＡＤリクエストの入力間隔が広くなり、上述したバンクグループ内部の回路の動作時間の影響を除外することができる。
【００８８】
［履歴情報］
図１２は、本技術の第２の実施の形態における履歴情報を示す図である。同図の履歴情報は、図６において説明した履歴情報と比較して、バンクグループおよびバンク毎に状態等の履歴情報が保持されている点と、最後にアクセスされたバンクグループのアドレスをさらに保持している点において異なっている。アクティブ状態の行アドレスに対してＲＥＡＤリクエストを実行する際、選択部２７０は、バンクグループ＃０（３１２）およびバンクグループ＃１（３１５）において読出し対象の行アドレスがともにアクティブの場合には、これらを交互に選択する。これは、履歴情報の最後にアクセスされたバンクグループのアドレスの情報に基づいて、行われる。次に、読出し制御部２３０は、選択されたバンクグループのバンクに対してＲＥＡＤリクエストを入力する。これにより、データの読出しにおけるデータ転送速度の低下を防ぐことができる。
【００８９】
履歴情報更新部２６０は、バンクの状態等に加えて最後にアクセスされたバンクグループのアドレスについても履歴情報保持部２５０に保持された履歴情報の更新を行う。なお、これ以外のメモリコントローラ２００の動作は、本技術の第１の実施の形態において説明したメモリコントローラ２００の動作と同様であるため説明を省略する。
【００９０】
同図の履歴情報の場合には、バンクグループ＃０（３１２）のバンク＃０（３１３）およびバンクグループ＃１（３１５）のバンク＃０（３１６）において、行アドレス＃０がアクティブ状態となっている。このような状態の時に、行アドレス＃０のメモリセルから読出しを行う場合、選択部２７０は、最後にアクセスされたバンクグループに基づいて選択を行う。この最後にアクセスされたバンクグループはバンクグループ＃０（３１３）であるため、選択部２７０は、バンクグループ＃１（３１５）を選択する。これ以外の選択部２７０における選択方法は、本技術の第１の実施の形態において説明した選択方法と同様であるため説明を省略する。
【００９１】
このように、本技術の第２の実施の形態によれば、履歴情報として最後にアクセスされたバンクグループのアドレスを保持し、これに基づいてバンクグループを交互にアクセスすることにより、データの読出しにおけるデータ転送速度の低下を防ぐことができる。
【００９２】
以上のように、本技術の実施の形態では、第１のメモリおよび第２のメモリに対して同一のデータを記録させる。読出しを行う際には、これらのメモリにおけるアクセスの履歴である履歴情報に基づいて、高速にアクセス可能なメモリを選択して読出しを行うことにより、２個のメモリを有効活用しながら、データ転送速度の低下を防ぐことができる。
【００９３】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００９４】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【００９５】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【００９６】
なお、本技術は以下のような構成もとることができる。
（１）同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴である履歴情報を保持する履歴情報保持部と、
前記保持された前記履歴情報に基づいて前記第１のメモリまたは前記第２のメモリのいずれか一方を読出し対象として選択する選択部と、
前記第１のメモリまたは前記第２のメモリのうち前記選択された一方から読出しを行う読出し制御部と
を具備するメモリコントローラ。
（２）前記第１のメモリおよび前記第２のメモリは、前記データが記録される記録領域を指定する行アドレスまたは列アドレスと動作を指示するリクエストとを入力することによりアクセスされる同期型メモリであり、
前記読出し制御部は、前記行アドレスおよび当該行アドレスにより指定される前記記録領域の活性化を指示するリクエストと前記列アドレスおよび当該列アドレスにより指定される前記活性化された前記記録領域からの読出しを指示するリクエストとを順に入力して前記読出しを行う
前記（１）に記載のメモリコントローラ。
（３）前記履歴情報保持部は、前記第１のメモリおよび前記第２のメモリにおける前記活性化された前記記録領域に対応する前記行アドレスを前記履歴情報として保持して前記選択部に提示し、
前記選択部は、前記履歴情報として提示された前記行アドレスに基づいて前記読出しの対象の前記記録領域が活性化されている前記第１のメモリまたは前記第２のメモリのいずれか一方を選択する
前記（２）に記載のメモリコントローラ。
（４）前記履歴情報保持部は、前記第１のメモリおよび前記第２のメモリにおける最後の前記リクエストの実行からの経過時間を前記履歴情報として保持して前記選択部に提示し、
前記選択部は、前記履歴情報として提示された前記経過時間に基づいて所定の待ち時間が経過している前記第１のメモリまたは前記第２のメモリのいずれか一方を選択する
前記（２）または（３）に記載のメモリコントローラ。
（５）前記履歴情報保持部は、前記第１のメモリおよび前記第２のメモリにおける最後に実行された前記リクエストおよび当該リクエストの実行からの経過時間を前記履歴情報として保持して前記選択部に提示し、
前記選択部は、前記履歴情報として提示された前記リクエストの実行からの前記経過時間に基づいて前記リクエストに応じた所定の待ち時間が経過している前記第１のメモリまたは前記第２のメモリのいずれか一方を選択する
前記（２）から（３）のいずれかに記載のメモリコントローラ。
（６）前記第１のメモリおよび前記第２のメモリは、前記同期型メモリを構成するバンクであり前記第１のメモリおよび前記第２のメモリにアクセスする際には前記バンクにおける記録領域を指定する前記行アドレスまたは前記列アドレスに加えて前記バンクを指定するバンクアドレスをさらに入力する前記（２）から（５）のいずれかに記載のメモリコントローラ。
（７）前記第１のメモリおよび前記第２のメモリは、前記同期型メモリにおけるバンクを有するバンクグループであり前記第１のメモリおよび前記第２のメモリにアクセスする際には前記バンクにおける記録領域を指定する前記行アドレスまたは前記列アドレスに加えて前記バンクグループを指定するバンクグループアドレスをさらに入力し、
前記履歴情報保持部は、前記第１のメモリまたは前記第２のメモリのうち最後にアクセスされた一方を前記履歴情報として保持して前記選択部に提示し、
前記選択部は、前記履歴情報として提示された前記第１のメモリまたは前記第２のメモリとは異なるメモリを選択する
前記（２）から（５）のいずれかに記載のメモリコントローラ。
（８）同一内容のデータが記録される第１のメモリおよび第２のメモリと、
前記第１のメモリおよび前記第２のメモリにおけるアクセスの履歴である履歴情報を保持する履歴情報保持部と、
前記保持された前記履歴情報に基づいて前記第１のメモリまたは前記第２のメモリのいずれか一方を読出し対象として選択する選択部と、
前記第１のメモリまたは前記第２のメモリのうち前記選択された一方から読出しを行う読出し制御部と
を具備する記憶装置。
（９）同一内容のデータが記録される第１のメモリおよび第２のメモリと、
前記第１のメモリおよび前記第２のメモリにおけるアクセスの履歴である履歴情報を保持する履歴情報保持部と、
前記保持された前記履歴情報に基づいて前記第１のメモリまたは前記第２のメモリのいずれか一方を読出し対象として選択する選択部と、
前記第１のメモリまたは前記第２のメモリのうち前記選択された一方から読出しを行う読出し制御部と
を備える記憶装置と、
前記記憶装置にアクセスするマスタと
を具備する情報処理システム。
（１０）同一内容のデータが記録される第１のメモリおよび第２のメモリにおけるアクセスの履歴である履歴情報に基づいて前記第１のメモリまたは前記第２のメモリのいずれか一方を読出し対象として選択する選択手順と、
前記第１のメモリまたは前記第２のメモリのうち前記選択された一方から読出しを行う読出し制御手順と
を具備するメモリの制御方法。
【符号の説明】
【００９７】
１００  マスタ
２００  メモリコントローラ
２１０  マスタインターフェース
２２０  書込み制御部
２３０  読出し制御部
２４０  バッファ
２５０  履歴情報保持部
２６０  履歴情報更新部
２７０  選択部
２８０  メモリインターフェース
３００  メモリ
３０１、３１１  メモリコントローラインターフェース
３０２、３１３、３１６  バンク＃０
３０３、３１４、３１７  バンク＃１
３１２  バンクグループ＃０
３１５  バンクグループ＃１
【図１】
2016095734.tif 000003
【図２】
2016095734.tif 000004
【図３】
2016095734.tif 000005
【図４】
2016095734.tif 000006
【図５】
2016095734.tif 000007
【図６】
2016095734.tif 000008
【図７】
2016095734.tif 000009
【図８】
2016095734.tif 000010
【図９】
2016095734.tif 000011
【図１０】
2016095734.tif 000012
【図１１】
2016095734.tif 000013
【図１２】
2016095734.tif 000014