(57)【要約】  メモリに対する読出しアクセスの順序を適切に判断する。  メモリシステムは、複数のメモリと、メモリコントローラとを備える。メモリコントローラは、メモリライト制御部と、メモリリード制御部とを備える。メモリライト制御部は、コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成する。メモリリード制御部は、ライトリクエストに係るライトデータのメモリライト制御部におけるデータ処理状態に応じた優先度によって複数のメモリのいずれかに対するリードリクエストをコンピュータからのリードコマンドに基づいて生成する。
2018003244.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備するメモリコントローラ。
【請求項２】
前記メモリライト制御部は、
前記ライトデータについてエラー訂正コードを生成するエラー訂正コード生成部と、
前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードが生成中であるか否かを示すビジー信号を前記データ処理状態として生成するビジー信号生成部とを備え、
前記メモリリード制御部は、前記複数のメモリのうち前記ビジー信号が前記エラー訂正コードの生成中である旨を示しているものの前記優先度を高く設定する
請求項１記載のメモリコントローラ。
【請求項３】
前記メモリライト制御部は、
前記エラー訂正コードが生成された前記ライトデータを保持するデータバッファと、
前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードの生成が完了して前記データバッファに準備されているか否かを示すレディ信号を前記データ処理状態として生成するレディ信号生成部とをさらに備え、
前記メモリリード制御部は、前記複数のメモリのうち前記エラー訂正コードが生成完了している旨を前記レディ信号が示しているものの前記優先度を低く設定する
請求項２記載のメモリコントローラ。
【請求項４】
前記メモリリード制御部は、
前記コンピュータからのリードコマンドを保持するコマンドキューと、
前記複数のメモリのそれぞれについて前記ライトリクエストに係るライトデータの前記メモリライト制御部における前記データ処理状態に応じた前記優先度を設定してその優先度に従って前記コマンドキューから前記複数のメモリのいずれかに対するリードコマンドを選択するリードコマンド選択部と、
前記選択されたリードコマンドに基づいて前記複数のメモリのいずれかに対してリードリクエストおよびアドレスを生成して送信するメモリリクエストアドレス送信部とを備える
請求項１記載のメモリコントローラ。
【請求項５】
複数のメモリと、
コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備するメモリシステム。
【請求項６】
複数のメモリと、
コンピュータと、
前記コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備する情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリを制御するメモリコントローラに関する。詳しくは、コンピュータから発行されたコマンドに基づいて複数のメモリに対するリクエストを生成するメモリコントローラ、メモリシステムおよび情報処理システムに関する。
【背景技術】
【０００２】
複数のメモリ（例えば、メモリバンクまたはダイ）に対するメモリアクセスについて、読出しの順序を変更することにより高速化を図る技術が知られている。例えば、コマンド発行元回路から書込み要求があった際に、コマンド履歴バッファに保持された過去のコマンド発行履歴と、新たに要求された２つ以上のコマンドとに基づいて、メモリコマンドの発行順序を変更する装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１５４１１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、コマンド発行履歴および新たに要求されたコマンドに基づいてメモリコマンドの発行順序を変更している。しかしながら、ライトデータについてエラー訂正コードを生成する等の処理を要するメモリにおいては、データの処理状態によってはメモリに対する読出しアクセスの順序について適切な判断を行えないおそれがある。すなわち、複数のメモリがアイドル状態であっても、データの処理状態によってはその後のメモリの状態は異なる可能性があり、いずれのメモリに対して先にリードアクセスを行うべきかを適切に判断できない場合がある。【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、メモリに対するリードアクセスの順序を適切に判断することを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、上記ライトリクエストに係るライトデータの上記メモリライト制御部におけるデータ処理状態に応じた優先度によって上記複数のメモリのいずれかに対するリードリクエストを上記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部とを具備するメモリコントローラ、そのメモリコントローラを含むメモリシステムおよび情報処理システムである。これにより、ライトデータのデータ処理状態に応じた優先度によって複数のメモリのいずれかに対してリードリクエストを要求するという作用をもたらす。【０００７】
また、この第１の側面において、上記メモリライト制御部は、上記ライトデータについてエラー訂正コードを生成するエラー訂正コード生成部と、上記複数のメモリのそれぞれに対する上記ライトデータについて上記エラー訂正コードが生成中であるか否かを示すビジー信号を上記データ処理状態として生成するビジー信号生成部とを備え、上記メモリリード制御部は、上記複数のメモリのうち上記ビジー信号が上記エラー訂正コードの生成中である旨を示しているものの上記優先度を高く設定するようにしてもよい。これにより、エラー訂正コードの生成中である旨を示しているメモリに対して優先的にリードリクエストを要求するという作用をもたらす。【０００８】
また、この第１の側面において、上記メモリライト制御部は、上記エラー訂正コードが生成された上記ライトデータを保持するデータバッファと、上記複数のメモリのそれぞれに対する上記ライトデータについて上記エラー訂正コードの生成が完了して上記データバッファに準備されているか否かを示すレディ信号を上記データ処理状態として生成するレディ信号生成部とをさらに備え、上記メモリリード制御部は、上記複数のメモリのうち上記エラー訂正コードが生成完了している旨を上記レディ信号が示しているものの上記優先度を低く設定するようにしてもよい。これにより、エラー訂正コードが生成完了しているメモリ以外に対して優先的にリードリクエストを要求するという作用をもたらす。【０００９】
また、この第１の側面において、上記メモリリード制御部は、上記コンピュータからのリードコマンドを保持するコマンドキューと、上記複数のメモリのそれぞれについて上記ライトリクエストに係るライトデータの上記メモリライト制御部における上記データ処理状態に応じた上記優先度を設定してその優先度に従って上記コマンドキューから上記複数のメモリのいずれかに対するリードコマンドを選択するリードコマンド選択部と、上記選択されたリードコマンドに基づいて上記複数のメモリのいずれかに対してリードリクエストおよびアドレスを生成して送信するメモリリクエストアドレス送信部とを備えるようにしてもよい。これにより、リードコマンド選択部が設定した優先度に従ってリードリクエストを送信するという作用をもたらす。
【発明の効果】
【００１０】
本技術によれば、メモリに対する読出しアクセスの順序を適切に判断することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１１】
【図１】本技術の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の実施の形態におけるメモリコントローラ２００の一構成例を示す図である。
【図３】本技術の第１の実施の形態におけるメモリ制御エンジン２０１の信号線の一例を示す図である。
【図４】本技術の第１の実施の形態におけるメモリ制御部（メモリライト制御部）２５０−２の構成例を示す図である。
【図５】本技術の第１の実施の形態におけるメモリ制御部（メモリリード制御部）２５０−１の構成例を示す図である。
【図６】本技術の第１の実施の形態のリードコマンド選択部２５４−１によるリードコマンドに対する優先度の付与規則例を示す図である。
【図７】本技術のリードコマンド選択部２５４−１によるリードコマンドの選択処理手順の一例を示す流れ図である。
【図８】本技術の第１の実施の形態におけるメモリコントローラ２００の動作タイミングを説明するための比較例である。
【図９】本技術の第１の実施の形態におけるメモリコントローラ２００の動作タイミング例である。
【図１０】本技術の第２の実施の形態におけるメモリ制御エンジン２０２の信号線の一例を示す図である。
【図１１】本技術の第２の実施の形態におけるメモリ制御部（メモリライト制御部）２５０−２の構成例を示す図である。
【図１２】本技術の第２の実施の形態におけるメモリ制御部（メモリリード制御部）２５０−１の構成例を示す図である。
【図１３】本技術の第２の実施の形態のリードコマンド選択部２５４−１によるリードコマンドに対する優先度の付与規則例を示す図である。
【図１４】本技術の第２の実施の形態におけるメモリコントローラ２００の動作タイミングを説明するための比較例である。
【図１５】本技術の第２の実施の形態におけるメモリコントローラ２００の動作タイミング例である。
【発明を実施するための形態】
【００１２】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（ライトデータ準備中のメモリダイに対するリードコマンドに高い優先度を付与する例）
２．第２の実施の形態（ライトデータ準備完了のメモリダイに対するリードコマンドに低い優先度を付与する例）
【００１３】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、メモリコントローラ２００と、メモリ３００とから構成される。メモリコントローラ２００およびメモリ３００はメモリシステム４００を構成する。
【００１４】
ホストコンピュータ１００は、メモリ３００に対してデータのリード処理およびライト処理等を指令するコマンドを発行するものである。このホストコンピュータ１００は、ホストコンピュータ１００としての処理を実行する（図示しない）プロセッサと、メモリコントローラ２００との間のやりとりを行うための（図示しない）コントローラインターフェースとを備える。また、ホストコンピュータ１００は、一般的にはデータバッファを備える。ホストコンピュータ１００とメモリコントローラ２００との間は信号線１０９により接続される。なお、ホストコンピュータ１００は、特許請求の範囲に記載のコンピュータの一例である。
【００１５】
メモリコントローラ２００は、ホストコンピュータ１００からのコマンドに従って、メモリ３００に対するリクエスト制御を行うものである。メモリコントローラ２００とメモリ３００との間は信号線３０９により接続される。
【００１６】
メモリ３００は、（図示しない）制御部およびメモリセルアレイを備える。このメモリ３００の制御部は、メモリコントローラ２００からのリクエストに従ってメモリセルへのアクセスを行う。メモリ３００のメモリセルアレイは、複数のメモリセルからなるメモリセルアレイであり、ビット毎に２値の何れかの値を記憶するメモリセル、または、複数ビット毎に多値の何れかの値を記憶するメモリセルが２次元状（マトリクス状）に多数配列されている。このメモリセルアレイは、複数バイトサイズを有するページを読出しまたは書込みのアクセス単位とし、消去することなくデータの上書きが可能な不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）を想定する。また、メモリ３００は、複数の不揮発性メモリ（ダイまたはチップ等）からなり、それぞれ独立してアクセスが可能であることを想定する。
【００１７】
［メモリコントローラの構成］
図２は、本技術の実施の形態におけるメモリコントローラ２００の一構成例を示す図である。このメモリコントローラ２００は、ストレージインターフェース制御部２１０と、プロセッサ２３０と、ＲＡＭ２４０と、メモリ制御エンジン２０１とを備え、これらの間はＩ／Ｏバス２２０によって相互に接続される。
【００１８】
ストレージインターフェース制御部２１０は、信号線１０９を介してホストコンピュータ１００と接続し、ホストコンピュータ１００との間のやりとりを行うものである。このストレージインターフェース制御部２１０は、具体的には、ＵＳＢ、ＳＡＴＡやＰＣＩｅなどの広くストレージ向けのインターフェースとして使用される汎用バスを含む。このストレージインターフェース制御部２１０の機能としては、ホストコンピュータ１００からの複数のコマンドを同時に受信可能なコマンドキューイングをサポートする。これにより、メモリ３００に対してアクセスするためのリクエストをランダムに送信して、リードアクセスおよびライトアクセスを行う。
【００１９】
プロセッサ２３０は、メモリコントローラ２００の動作に必要な処理を行うものである。ＲＡＭ２４０は、メモリコントローラ２００の動作に必要なデータ等を記憶するメモリである。このＲＡＭ２４０は、データバッファとしても利用される。メモリ制御エンジン２０１は、メモリ３００に対するリクエスト制御を行うものである。
【００２０】
メモリ制御エンジン２０１は、２つのメモリ制御部２５０−１および２５０−２と、接続切換部２６０と、メモリインターフェース制御部２７０とを備えている。
【００２１】
メモリ制御部２５０−１および２５０−２（以下、メモリ制御部２５０と総称する場合がある。）は、各々が独立してメモリ３００に対するリクエスト制御を行うものである。メモリ制御部２５０−１は、メモリ３００に対するリードリクエストを制御する（以下、「メモリリード制御部」と呼称する場合がある。）。メモリ制御部２５０−２は、メモリ３００に対するライトリクエストを制御する（以下、「メモリライト制御部」と呼称する場合がある。）。メモリ制御部２５０−１は、信号線２２９−１を介してＩ／Ｏバス２２０と接続し、信号線２６９−１を介して接続切換部２６０と接続する。メモリ制御部２５０−２は、信号線２２９−２を介してＩ／Ｏバス２２０と接続し、信号線２６９−２を介して接続切換部２６０と接続する。以下、信号線２２９−１および２２９−２を信号線２２９と総称する場合がある。また、信号線２６９−１および２６９−２を信号線２６９と総称する場合がある。
【００２２】
接続切換部２６０は、メモリ制御部２５０−１および２５０−２の何れかをメモリ３００に接続するよう切換えを行うものである。メモリインターフェース制御部２７０は、信号線２７９を介して接続切換部２６０に接続し、メモリ３００との間のやりとりを行うものである。
【００２３】
なお、Ｉ／Ｏバス２２０の帯域は、メモリ３００のリードおよびライトの帯域よりも大きいことが前提である。したがって、メモリ３００の性能がメモリシステム４００の性能を律速することを想定する。
【００２４】
図３は、本技術の第１の実施の形態におけるメモリ制御エンジン２０１の信号線の一例を示す図である。
【００２５】
メモリ制御部２５０とＩ／Ｏバス２２０との間の信号線２２９は、コマンド信号線、データ信号線および結果信号線を含む。また、メモリ制御部２５０と接続切換部２６０との間の信号線２６９は、接続要求信号線、リクエストアドレス（Ｒｅｑ／Ａｄｒ）信号線、データ（Ｄａｔａ）信号線、および、ビジーステータス１、２（Ｂｕｓｙ／Ｓｔａｔｕｓ１、２）信号線を含む。また、接続切換部２６０とメモリインターフェース制御部２７０との間の信号線２７９は、リクエストアドレス（Ｒｅｑ／Ａｄｒ）信号線、データ（Ｄａｔａ）信号線、および、ビジーステータス（Ｂｕｓｙ／Ｓｔａｔｕｓ）信号線を含む。
【００２６】
ストレージインターフェース制御部２１０は、ホストコンピュータ１００から発行されたコマンドを、そのコマンドに応じて２つのメモリ制御部２５０−１または２５０−２のいずれかに供給する。メモリ制御部２５０の各々は、ホストコンピュータ１００から発行されたコマンドを受け取り、それぞれ独立してメモリ３００に対するリクエストを生成して制御を行う。これにより、メモリ制御部２５０を並行して動作させて、メモリインターフェース制御部２７０上で待ち時間が発生することを抑止する。
【００２７】
メモリ制御エンジン２０１は、２つのメモリダイ＃１（３０１）およびメモリダイ＃２（３０２）と信号線３０９を介して接続する。メモリダイ＃１および＃２のいずれにアクセスするかは、メモリインターフェース制御部２７０からのチップセレクト信号ＣＳ１およびＣＳ２により指示される。上述のビジーステータス１（Ｂｕｓｙ／Ｓｔａｔｕｓ１）信号線はメモリダイ＃１のビジーステータスを示し、ビジーステータス２（Ｂｕｓｙ／Ｓｔａｔｕｓ２）信号線は、メモリダイ＃２のビジーステータスを示す。
【００２８】
上述のように、メモリ制御部２５０−１はメモリ３００に対するリードリクエストを制御し、メモリ制御部２５０−２はメモリ３００に対するライトリクエストを制御する。メモリ制御部２５０−２は、ライトデータについてデータ処理を行う。ここで、データ処理としては、例えば、ライトデータについてエラー訂正コード（ＥＣＣ：Error Correcting Code）を生成する処理を想定するが、暗号化などの他の処理であってもよい。メモリ制御部２５０−２は、信号「ｅｎｃ＿ｂｕｓｙ１」および信号「ｅｎｃ＿ｂｕｓｙ２」をメモリ制御部２５０−１に出力する。信号「ｅｎｃ＿ｂｕｓｙ１」は、メモリダイ＃１に対するライトリクエストに係るライトデータのエラー訂正コードが生成中であるか否かを示す。エラー訂正コードが生成中であれば「ビジー状態」を示し、エラー訂正コードが生成中でなければ「アイドル状態」を示す。同様に、信号「ｅｎｃ＿ｂｕｓｙ２」は、メモリダイ＃２に対するライトリクエストに係るライトデータのエラー訂正コードが生成中であるか否かを示す。
【００２９】
メモリ制御部２５０−１および２５０−２の各々は、メモリダイ＃１および＃２に対して並行してリクエスト制御を行うことができる。すなわち、メモリ制御部２５０−１がリードリクエストをメモリダイ＃１および＃２の一方に対して実行した後に、接続切換部２６０に対する要求信号を終了し、直ちにメモリ制御部２５０−２がライトリクエストをメモリダイ＃１および＃２の他方に対して実行可能である。
【００３０】
そのために、メモリ制御部２５０は、メモリインターフェース制御部２７０からのＢｕｓｙ／Ｓｔａｔｕｓ信号を、メモリダイ＃１および＃２の各々について受信して管理するようになっている。メモリ制御部２５０は、書込みの完了を示すステータス情報をメモリダイ＃１および＃２から受信した際には、書込みビジー情報をクリアする。書込みビジー状態であるメモリダイ＃１および＃２に対しては、次の書込みリクエストを送信しない。また、メモリ制御部２５０は、書込みビジー状態であるメモリダイ＃１および＃２に対してステータス情報を確認するため、接続切換部２６０に接続要求を出力し、ステータス情報を確認後、その接続要求を停止する。
【００３１】
なお、メモリダイ＃１および＃２は、特許請求の範囲に記載のメモリの一例である。
【００３２】
図４は、本技術の第１の実施の形態におけるメモリ制御部（メモリライト制御部）２５０−２の構成例を示す図である。このメモリ制御部２５０−２は、デコーダ２５２−２と、メモリリクエストアドレス送信部２５３−２と、バスデータ受信部２５４−２と、エラー訂正コード生成部２５５−２と、メモリデータ送信部２５７−２と、ビジー信号生成部２５８−２とを備える。
【００３３】
デコーダ２５２−２は、ホストコンピュータ１００から発行されたコマンドを解釈するデコーダである。デコード結果として、例えば、ライトコマンドがメモリダイ＃１に対するものである場合に信号「ｄｉｅ１＿ｓｅｌ」がアサートされ、ライトコマンドがメモリダイ＃２に対するものである場合に信号「ｄｉｅ２＿ｓｅｌ」がアサートされるものとする。
【００３４】
メモリリクエストアドレス送信部２５３−２は、デコーダ２５２−２によるデコード結果に従って、メモリ３００に対してリクエストおよびアドレスを送信するものである。このメモリリクエストアドレス送信部２５３−２は、リクエストおよびアドレスを送信する際に、これに先立って接続切換部２６０に対して接続要求を出力する。
【００３５】
バスデータ受信部２５４−２は、Ｉ／Ｏバス２２０からライトデータを受信して、エラー訂正コード生成部２５５−２に供給するものである。
【００３６】
エラー訂正コード生成部２５５−２は、バスデータ受信部２５４−２が受信したライトデータについてエラー訂正コード（ＥＣＣ）を生成するものである。このエラー訂正コード生成部２５５−２は、バスデータ受信部２５４−２から供給されたライトデータについてエラー訂正コードを生成中である場合に信号「ｅｎｃ＿ｂｕｓｙ」をアサートする。すなわち、信号「ｅｎｃ＿ｂｕｓｙ」は、エラー訂正コードを生成中であれば「ビジー状態」を示し、生成中でなければ「アイドル状態」を示す。
【００３７】
メモリデータ送信部２５７−２は、ライトデータおよびエラー訂正コードをメモリ３００に送信するものである。
【００３８】
ビジー信号生成部２５９−２は、メモリダイ＃１および＃２の各々について、ライトリクエストに係るライトデータのエラー訂正コードが生成中であるか否かを示すビジー信号を生成するものである。すなわち、信号「ｅｎｃ＿ｂｕｓｙ」が「ビジー状態」を示している場合、信号「ｄｉｅ１＿ｓｅｌ」がアサートされていれば信号「ｅｎｃ＿ｂｕｓｙ１」を「ビジー状態」とし、信号「ｅｎｃ＿ｂｕｓｙ２」を「アイドル状態」とする。また、この場合、信号「ｄｉｅ２＿ｓｅｌ」がアサートされていれば信号「ｅｎｃ＿ｂｕｓｙ２」を「ビジー状態」とし、信号「ｅｎｃ＿ｂｕｓｙ１」を「アイドル状態」とする。一方、信号「ｅｎｃ＿ｂｕｓｙ」が「アイドル状態」を示している場合、信号「ｅｎｃ＿ｂｕｓｙ１」および「ｅｎｃ＿ｂｕｓｙ２」をともに「アイドル状態」とする。
【００３９】
図５は、本技術の第１の実施の形態におけるメモリ制御部（メモリリード制御部）２５０−１の構成例を示す図である。このメモリ制御部２５０−１は、コマンドキュー２５１−１と、デコーダ２５２−１と、メモリリクエストアドレス送信部２５３−１と、リードコマンド選択部２５４−１とを備える。また、このメモリ制御部２５０−１は、メモリデータ受信部２５６−１と、エラー検出訂正部２５７−１と、バスデータ送信部２５８−１とを備える。
【００４０】
コマンドキュー２５１−１は、ホストコンピュータ１００から発行されたリードコマンドを保持するメモリである。このコマンドキュー２５１−１は、メモリダイ＃１および＃２のそれぞれに対応して、メモリダイ＃１および＃２毎にＦＩＦＯ（先入れ先出し）方式によりリードコマンドを保持する。そして、このコマンドキュー２５１−１は、メモリダイ＃１に対するリードコマンドが保持されていれば信号「ｒｃｏｍｍａｎｄ１」をアサートし、メモリダイ＃２に対するリードコマンドが保持されていれば信号「ｒｃｏｍｍａｎｄ２」をアサートする。リードコマンドはメモリダイ＃１および＃２毎に管理されるため、信号「ｒｃｏｍｍａｎｄ１」および信号「ｒｃｏｍｍａｎｄ２」が同時にアサートされることもあり得る。
【００４１】
デコーダ２５２−１は、デコーダ２５２−２と同様に、ホストコンピュータ１００から発行されたコマンドを解釈するデコーダである。メモリリクエストアドレス送信部２５３−１は、メモリリクエストアドレス送信部２５３−２と同様に、デコーダ２５２−１によるデコード結果に従って、メモリ３００に対してリクエストおよびアドレスを送信するものである。
【００４２】
メモリデータ受信部２５６−１は、メモリ３００から読み出したリードデータおよびエラー訂正コードを受信するものである。エラー検出訂正部２５７−１は、メモリデータ受信部２５６−１が受信したリードデータについて、エラー訂正コードによるエラー検出およびエラー訂正を行うものである。バスデータ送信部２５８−１は、エラー検出訂正部２５７−１から出力されたリードデータをＩ／Ｏバス２２０に送信するものである。
【００４３】
リードコマンド選択部２５４−１は、コマンドキュー２５１−１に保持されたリードコマンドのうち、いずれのリードコマンドを取り出してデコーダ２５２−１に供給すべきかを選択するものである。このリードコマンド選択部２５４−１には、信号「ｅｎｃ＿ｂｕｓｙ１」、信号「ｅｎｃ＿ｂｕｓｙ２」、信号「ｄｉｅ＿ｂｕｓｙ１」、信号「ｄｉｅ＿ｂｕｓｙ２」、信号「ｒｃｏｍｍａｎｄ１」および信号「ｒｃｏｍｍａｎｄ２」が入力される。信号「ｅｎｃ＿ｂｕｓｙ１」および信号「ｅｎｃ＿ｂｕｓｙ２」は、上述のように、ビジー信号生成部２５８−２が生成するビジー信号であり、メモリダイ＃１および＃２毎にエラー訂正コードが生成中であるか否かを示す。信号「ｄｉｅ＿ｂｕｓｙ１」および信号「ｄｉｅ＿ｂｕｓｙ２」は、メモリダイ＃１および＃２のＢｕｓｙ／Ｓｔａｔｕｓ信号の一部であり、メモリダイ＃１および＃２毎にビジー状態にあるか否かを示す。信号「ｒｃｏｍｍａｎｄ１」および信号「ｒｃｏｍｍａｎｄ２」は、コマンドキュー２５１−１に保持されたリードコマンドが存在するか否かをメモリダイ＃１および＃２毎に示す。リードコマンド選択部２５４−１は、これら入力された信号に基づいて、メモリダイ＃１および＃２毎に優先度を生成する。
【００４４】
そして、リードコマンド選択部２５４−１は、その生成した優先度に従って、メモリダイ＃１および＃２のいずれかに対応するコマンドをコマンドキュー２５１−１から取り出すための制御信号を生成する。すなわち、メモリダイ＃１に対応するコマンドを取り出す場合には、信号「ｆｅｔｃｈ１」をアサートする。一方、メモリダイ＃２に対応するコマンドを取り出す場合には、信号「ｆｅｔｃｈ２」をアサートする。なお、いずれのコマンドも取り出さない場合には、信号「ｆｅｔｃｈ１」および信号「ｆｅｔｃｈ２」のいずれもアサートしない。コマンドキュー２５１−１は、リードコマンド選択部２５４−１から供給された信号「ｆｅｔｃｈ１」および信号「ｆｅｔｃｈ２」に従って、メモリダイ＃１および＃２のいずれかに対応するコマンドをデコーダ２５２−１に供給する。
【００４５】
［メモリコントローラの動作内容］
図６は、本技術の第１の実施の形態のリードコマンド選択部２５４−１によるリードコマンドに対する優先度の付与規則例を示す図である。
【００４６】
ここでは、メモリダイ＃１および＃２のそれぞれに関する優先度を個別に扱っている。したがって、メモリダイ＃１に対するリードコマンドがコマンドキュー２５１−１に存在するか否かは信号「ｒｃｏｍｍａｎｄ１」により判断する。そして、メモリダイ＃２に対するリードコマンドがコマンドキュー２５１−２に存在するか否かは信号「ｒｃｏｍｍａｎｄ２」により判断する。同様に、メモリダイ＃１がビジー状態にあるか否かは信号「ｄｉｅ＿ｂｕｓｙ１」により判断し、メモリダイ＃２がビジー状態にあるか否かは信号「ｄｉｅ＿ｂｕｓｙ２」により判断する。
【００４７】
また、メモリダイ＃１に対するライトデータが準備中か否かは信号「ｅｎｃ＿ｂｕｓｙ１」により判断し、メモリダイ＃２に対するライトデータが準備中か否かは信号「ｅｎｃ＿ｂｕｓｙ２」により判断する。すなわち、この第１の実施の形態では、ライトデータのデータ処理状態として、メモリダイに対するライトデータが準備中か否かを判断基準とする。
【００４８】
なお、以下の説明では、優先度を付与するコマンドの対象となるメモリダイを「対象メモリダイ」と称する。また、コマンドキュー２５１−１および２５１−２をコマンドキュー２５１と総称する。
【００４９】
対象メモリダイに対するリードコマンドがコマンドキュー２５１に存在する場合、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中でなければ、優先度は「中」となる。一方、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中であれば、優先度は「高」となる。すなわち、対象メモリダイにおいてライトデータが準備中であれば、その対象メモリダイにおける後続のリードコマンドの優先度を通常よりも高く設定するものである。これは、対象メモリダイにおいてライトデータが準備中であれば、近いうちにライトアクセスが開始されることが予想されるため、それまでの間に対象メモリダイにおける後続のリードアクセスを先に進めておくことを意図したものである。
【００５０】
対象メモリダイに対するリードコマンドがコマンドキュー２５１に存在する場合であっても、対象メモリダイがビジー状態であれば、そのリードコマンドは選択対象外であるため、優先度は付与しない。同様に、対象メモリダイに対するリードコマンドがコマンドキュー２５１に存在しない場合には、対象となるリードコマンドが存在しないことになるため、優先度は付与しない。
【００５１】
図７は、本技術のリードコマンド選択部２５４−１によるリードコマンドの選択処理手順の一例を示す流れ図である。
【００５２】
まず、リードコマンド選択部２５４−１は、メモリダイ＃１を対象メモリダイとして、上述の付与規則に従ってリードコマンドに優先度を付与する（ステップＳ９１１）。そして、リードコマンド選択部２５４−１は、メモリダイ＃２を対象メモリダイとして、上述の付与規則に従ってリードコマンドに優先度を付与する（ステップＳ９１２）。
【００５３】
その結果、リードコマンド選択部２５４−１は、メモリダイ＃１に対するリードコマンドの優先度とメモリダイ＃２に対するリードコマンドの優先度とを比較する（ステップＳ９１３）。前者の優先度の方が後者の優先度よりも高い場合、または、両者が等しい場合には（ステップＳ９１３：Ｙｅｓ）、リードコマンド選択部２５４−１は、メモリダイ＃１に対するリードコマンドを選択する（ステップＳ９１４）。
【００５４】
一方、メモリダイ＃２に対するリードコマンドの優先度の方が高い場合には（ステップＳ９１５：Ｙｅｓ）、リードコマンド選択部２５４−１は、メモリダイ＃２に対するリードコマンドを選択する（ステップＳ９１６）。
【００５５】
それ以外の場合には、いずれのリードコマンドにも優先度が付与されていないことになるため、リードコマンド選択部２５４−１は、コマンドキュー２５１からのリードコマンド選択を行わない（ステップＳ９１７）。
【００５６】
［メモリコントローラの動作タイミング］
図８は、本技術の第１の実施の形態におけるメモリコントローラ２００の動作タイミングを説明するための比較例である。この例では、ホストコンピュータ１００から、メモリダイ＃１に対するライトコマンドＣ１、メモリダイ＃２に対するリードコマンドＣ２、メモリダイ＃１に対するリードコマンドＣ３の順に、各コマンドが発行された例を示している。
【００５７】
ライトコマンドＣ１が発行されると、メモリライト制御部２５０−２は、エラー訂正コード生成部２５５−２においてエラー訂正コードの生成を開始する。その後、リードコマンドＣ２およびＣ３が発行される。この比較例では、メモリリード制御部２５０−１においてコマンドの並び替えを行わないことを想定しているため、メモリリード制御部２５０−１は、先にリードコマンドＣ２に関するリクエストをメモリダイ＃２に要求する。次に、メモリリード制御部２５０−１は、リードコマンドＣ３に関するリクエストをメモリダイ＃１に要求する。
【００５８】
メモリダイ＃１においては、リードコマンドＣ３に関するリクエストが完了するまでビジー状態が続くため、その間、ライトコマンドＣ１に関するリクエストの要求は待たされる。リードコマンドＣ３に関するリクエストが完了した後に、ライトコマンドＣ１に関するリクエストがライトデータおよびそのエラー訂正コードとともにメモリダイ＃１に送信される。そのライトコマンドの結果はメモリコントローラ２００に返送され、さらにホストコンピュータ１００に通知される。
【００５９】
すなわち、この比較例では、リードコマンドＣ２に関するリクエストによってリードコマンドＣ３に関するリクエストが遅れ、このリードコマンドＣ３に関するリクエストの完了によってライトコマンドＣ１に関するリクエストの要求が待たされている。したがって、リードコマンドＣ２に関するリクエストよりもリードコマンドＣ３に関するリクエストを先に処理すれば、ライトコマンドＣ１に関するリクエストの待ちは軽減されることがわかる。
【００６０】
図９は、本技術の第１の実施の形態におけるメモリコントローラ２００の動作タイミング例である。ここでは、図８の例と同様のコマンド順序を想定するが、メモリリード制御部２５０−１においてコマンドの並び替えを行うことにより、処理終了までの時間が短縮されることを示す。
【００６１】
ライトコマンドＣ１が発行されて、メモリライト制御部２５０−２がエラー訂正コード生成部２５５−２においてエラー訂正コードの生成を開始する点については、上述の例と同様である。次に、コマンドキュー２５１に保持されているリードコマンドを選択する際に、メモリリード制御部２５０−１は、それぞれのリードコマンドに優先度を付与する。このとき、メモリダイ＃１および＃２はアイドル状態である。また、メモリダイ＃１においては、エラー訂正コードの生成がされているため、メモリダイ＃１に対するリードコマンドＣ３の優先度は「高」に設定される。一方、メモリダイ＃２においては、エラー訂正コードの生成はされていないため、メモリダイ＃２に対するリードコマンドＣ２の優先度は「中」に設定される。
【００６２】
メモリリード制御部２５０−１は、メモリダイ＃１に対するリードコマンドＣ３とメモリダイ＃２に対するリードコマンドＣ２の優先度を比較して、優先度の高いリードコマンドＣ３を先に選択して、メモリダイ＃１に対してリードリクエストを要求する。次に、メモリリード制御部２５０−１は、もう一方のリードコマンドＣ２を選択して、メモリダイ＃２に対してリードリクエストを要求する。
【００６３】
メモリダイ＃１においては、リードコマンドＣ３に関するリクエストが完了するまでビジー状態が続くため、その間、ライトコマンドＣ１に関するリクエストの要求は、上述の例と同様に待たされる。ただし、この第１の実施の形態においては、リードコマンドＣ３に関するリクエストがリードコマンドＣ２に関するリクエストよりも先に処理されているため、リードコマンドＣ３に関するリクエストの完了タイミングは早い。したがって、ライトコマンドＣ１に関するリクエストの待ちは軽減され、結果として、上述の例よりも処理終了までの時間が短縮される。
【００６４】
このように、本技術の第１の実施の形態では、ライトデータが準備中のメモリダイにおいてはある程度の時間が経過した後にライトアクセスが開始されるものと推定し、そのメモリダイにおける後続のリードコマンドに高い優先度を付与する。これにより、ライトアクセスが開始されるまでの間にそのメモリダイにおける後続のリードアクセスを先に進めて、全体の処理終了までの時間を短縮することができる。
【００６５】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、ライトデータが準備中のメモリダイにおける後続のリードアクセスを優先して行うことを想定した。この第２の実施の形態では、これに加えて、ライトデータの準備が完了している状態であれば、逆に後続のリードアクセスの優先度を低く設定することを想定する。なお、情報処理システムとしての全体構成は上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【００６６】
［メモリコントローラの構成］
図１０は、本技術の第２の実施の形態におけるメモリ制御エンジン２０２の信号線の一例を示す図である。この第２の実施の形態のメモリ制御エンジン２０２では、メモリ制御部２５０−２からメモリ制御部２５０−１に対して、信号「ｄａｔａ＿ｒｅａｄｙ１」および信号「ｄａｔａ＿ｒｅａｄｙ２」を供給する点において、上述の第１の実施の形態と異なる。その他の点については、図３により説明したメモリ制御エンジン２０１と同様である。
【００６７】
信号「ｄａｔａ＿ｒｅａｄｙ１」は、メモリダイ＃１に対するライトリクエストに係るライトデータのエラー訂正コードの生成が完了しているか否かを示す。エラー訂正コードが生成完了していれば「完了状態」を示し、エラー訂正コードが生成完了していなければ「未了状態」を示す。同様に、信号「ｄａｔａ＿ｒｅａｄｙ２」は、メモリダイ＃２に対するライトリクエストに係るライトデータのエラー訂正コードの生成が完了しているか否かを示す。
【００６８】
図１１は、本技術の第２の実施の形態におけるメモリ制御部（メモリライト制御部）２５０−２の構成例を示す図である。この第２の実施の形態のメモリ制御部２５０−２は、上述の第１の実施の形態に加え、データバッファ２５６−２およびレディ信号生成部２５９−２を備える。
【００６９】
データバッファ２５６−２は、ライトデータとともにエラー訂正コード生成部２５５−２によって生成されたデータ訂正コードを保持するバッファである。このデータバッファ２５６−２を備えることにより、対応するメモリダイがビジー状態であってもデータバッファ２５６−２に空きがあれば、エラー訂正コード生成部２５５−２はデータ訂正コードを生成することが可能となる。このデータバッファ２５６−２は、データ訂正コードの生成が完了して、ライトデータおよびデータ訂正コードが保持されている場合に、信号「ｄａｔａ＿ｒｅａｄｙ」を、「完了状態」にする。この信号「ｄａｔａ＿ｒｅａｄｙ」が「完了状態」を示している場合には、ライトリクエストをすぐにでも要求することができるよう準備が完了していることを意味する。
【００７０】
レディ信号生成部２５９−２は、メモリダイ＃１および＃２の各々について、ライトリクエストに係るライトデータのエラー訂正コードの生成が完了しているか否かを示すレディ信号を生成するものである。すなわち、信号「ｄａｔａ＿ｒｅａｄｙ」が「完了状態」を示している場合、信号「ｄｉｅ１＿ｓｅｌ」がアサートされていれば信号「ｄａｔａ＿ｒｅａｄｙ１」を「完了状態」とし、信号「ｄａｔａ＿ｒｅａｄｙ２」を「未完了状態」とする。また、この場合、信号「ｄｉｅ２＿ｓｅｌ」がアサートされていれば信号「ｄａｔａ＿ｒｅａｄｙ２」を「完了状態」とし、信号「ｄａｔａ＿ｒｅａｄｙ１」を「未完了状態」とする。一方、信号「ｄａｔａ＿ｒｅａｄｙ」が「未完了状態」を示している場合、信号「ｄａｔａ＿ｒｅａｄｙ１」および「ｄａｔａ＿ｒｅａｄｙ２」をともに「未完了状態」とする。
【００７１】
図１２は、本技術の第２の実施の形態におけるメモリ制御部（メモリリード制御部）２５０−１の構成例を示す図である。この第２の実施の形態のメモリ制御部２５０−１は、リードコマンド選択部２５４−１が、信号「ｄａｔａ＿ｒｅａｄｙ１」および信号「ｄａｔａ＿ｒｅａｄｙ２」をさらに受ける点において、上述の第１の実施の形態と異なる。
【００７２】
リードコマンド選択部２５４−１は、上述の第１の実施の形態と同様に、コマンドキュー２５１−１に保持されたリードコマンドのうち、いずれのリードコマンドを取り出してデコーダ２５２−１に供給すべきかを選択する。その際、この第２の実施の形態のリードコマンド選択部２５４−１は、データバッファ２５６−２から供給された信号「ｄａｔａ＿ｒｅａｄｙ１」および信号「ｄａｔａ＿ｒｅａｄｙ２」の状態を加味する点において、上述の第１の実施の形態と異なる。
【００７３】
［メモリコントローラの動作内容］
図１３は、本技術の第２の実施の形態のリードコマンド選択部２５４−１によるリードコマンドに対する優先度の付与規則例を示す図である。
【００７４】
ここでは、上述の第１の実施の形態と同様に、メモリダイ＃１および＃２のそれぞれに関する優先度を個別に扱っている。上述の信号に加え、メモリダイ＃１に対するライトデータの準備が完了しているか否かは信号「ｄａｔａ＿ｒｅａｄｙ１」により判断し、メモリダイ＃２に対するライトデータの準備が完了しているか否かは信号「ｄａｔａ＿ｒｅａｄｙ２」により判断する。すなわち、この第２の実施の形態では、ライトデータのデータ処理状態として、メモリダイに対するライトデータが準備中か否か、および、その準備が完了しているか否かを判断基準とする。
【００７５】
対象メモリダイに対するリードコマンドがコマンドキュー２５１に存在する場合、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中でもなく準備完了もしていなければ、優先度は「中」となる。また、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中であれば、優先度は「高」となる。これについては上述の第１の実施の形態と同様である。
【００７６】
これに加え、この第２の実施の形態では、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータの準備が完了していれば、優先度は「低」となる。すなわち、対象メモリダイにおいてライトデータの準備が完了していれば、その対象メモリダイにおける後続のリードコマンドの優先度を通常よりも低く設定するものである。これは、対象メモリダイにおいてライトデータの準備が完了していれば、すぐにでもライトアクセスが開始されてビジー状態になることが予想されるため、対象メモリダイ以外のリードアクセスを優先することを意図したものである。
【００７７】
なお、上述の第１の実施の形態と同様に、対象メモリダイに対するリードコマンドがコマンドキュー２５１に存在する場合であっても、対象メモリダイがビジー状態であれば、そのリードコマンドは選択対象外であるため、優先度は付与しない。同様に、対象メモリダイに対するリードコマンドがコマンドキュー２５１に存在しない場合には、対象となるリードコマンドが存在しないことになるため、優先度は付与しない。
【００７８】
リードコマンド選択部２５４−１は、このようにして設定した優先度に従って、リードコマンドを選択する。この第２の実施の形態におけるリードコマンド選択部２５４−１のリードコマンドの選択処理手順は、図７において説明した上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【００７９】
［メモリコントローラの動作タイミング］
図１４は、本技術の第２の実施の形態におけるメモリコントローラ２００の動作タイミングを説明するための比較例である。この例では、ホストコンピュータ１００から、メモリダイ＃１に対するライトコマンドＣ４、メモリダイ＃１に対するリードコマンドＣ５、メモリダイ＃２に対するリードコマンドＣ６の順に、各コマンドが発行された例を示している。また、ライトコマンドＣ４の前には、メモリダイ＃１および＃２は他のリクエストによって既にビジー状態になっていることを想定する。
【００８０】
ライトコマンドＣ４が発行されると、メモリライト制御部２５０−２は、エラー訂正コード生成部２５５−２においてエラー訂正コードの生成を開始する。その後、リードコマンドＣ５およびＣ６が発行される。この比較例では、メモリリード制御部２５０−１においてコマンドの並び替えを行わないことを想定しているため、メモリリード制御部２５０−１は、ライトコマンドＣ４に関するライトアクセスの終了を待って、リードコマンドＣ５に関するリクエストをメモリダイ＃１に要求する。そして、メモリリード制御部２５０−１は、次にリードコマンドＣ６に関するリクエストをメモリダイ＃２に要求する。
【００８１】
この比較例では、リードコマンドＣ５に関するリクエストの送信を待って、リードコマンドＣ６に関するリクエストを送信しているため、メモリダイ＃２がアイドル状態であるのにもかかわらず、リードコマンドＣ６に関するリクエストが待たされている。したがって、リードコマンドＣ５に関するリクエストよりもリードコマンドＣ６に関するリクエストを先に処理すれば、処理終了までの時間が短縮されることがわかる。
【００８２】
図１５は、本技術の第２の実施の形態におけるメモリコントローラ２００の動作タイミング例である。ここでは、図１４の例と同様のコマンド順序を想定するが、メモリリード制御部２５０−１においてコマンドの並び替えを行うことにより、処理終了までの時間が短縮されることを示す。
【００８３】
ライトコマンドＣ４が発行されて、メモリライト制御部２５０−２がエラー訂正コード生成部２５５−２においてエラー訂正コードの生成を開始する点については、上述の例と同様である。ただし、この時点ではメモリダイ＃１および＃２はともにビジー状態となっているため、メモリリード制御部２５０−１はいずれのリードコマンドにも優先度を付与しない。その後、ライトコマンドＣ４に関するライトデータおよびエラー訂正コードは、データバッファ２５６−２に保持される。
【００８４】
メモリダイ＃１および＃２がアイドル状態になると、メモリリード制御部２５０−１はリードコマンドＣ５およびＣ６に優先度を付与する。すなわち、メモリダイ＃１については、ライトコマンドＣ４に関するエラー訂正コードが生成完了し、信号「ｄａｔａ＿ｒｅａｄｙ１」が「完了状態」を示しているため、リードコマンドＣ５の優先度は「低」に設定される。また、メモリダイ＃２については、エラー訂正コードの生成はされておらず、信号「ｅｎｃ＿ｂｕｓｙ２」が「準備なし」を示しているため、リードコマンドＣ６の優先度は「中」に設定される。
【００８５】
メモリリード制御部２５０−１は、メモリダイ＃１に対するリードコマンドＣ５とメモリダイ＃２に対するリードコマンドＣ６の優先度を比較して、優先度の高いリードコマンドＣ６を先に選択して、メモリダイ＃２に対してリードリクエストを要求する。その後、メモリリード制御部２５０−１は、メモリダイ＃１におけるライトコマンドＣ４に関するライトアクセスが完了した後、もう一方のリードコマンドＣ５を選択して、メモリダイ＃１に対してリードリクエストを要求する。
【００８６】
これにより、メモリダイ＃１におけるライトコマンドＣ４に関するライトアクセスと、メモリダイ＃２におけるリードコマンドＣ６に関するリードアクセスとが並行して実行されるため、全体の処理終了までの時間が短縮される。
【００８７】
このように、本技術の第２の実施の形態では、ライトデータの準備が完了している状態であれば、対応するメモリダイに対してライトリクエストがすぐに要求されると推定し、そのメモリダイにおける後続のリードコマンドには低い優先度を付与する。これにより、他のメモリダイにおけるリードアクセスを先に進めて、全体の処理終了までの時間を短縮することができる。
【００８８】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００８９】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【００９０】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【００９１】
なお、本技術は以下のような構成もとることができる。
（１）コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備するメモリコントローラ。
（２）前記メモリライト制御部は、
前記ライトデータについてエラー訂正コードを生成するエラー訂正コード生成部と、
前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードが生成中であるか否かを示すビジー信号を前記データ処理状態として生成するビジー信号生成部とを備え、
前記メモリリード制御部は、前記複数のメモリのうち前記ビジー信号が前記エラー訂正コードの生成中である旨を示しているものの前記優先度を高く設定する
前記（１）に記載のメモリコントローラ。
（３）前記メモリライト制御部は、前記エラー訂正コードが生成された前記ライトデータを保持するデータバッファと、
前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードの生成が完了して前記データバッファに準備されているか否かを示すレディ信号を前記データ処理状態として生成するレディ信号生成部とをさらに備え、
前記メモリリード制御部は、前記複数のメモリのうち前記エラー訂正コードが生成完了している旨を前記レディ信号が示しているものの前記優先度を低く設定する
前記（２）に記載のメモリコントローラ。
（４）前記メモリリード制御部は、
前記コンピュータからのリードコマンドを保持するコマンドキューと、
前記複数のメモリのそれぞれについて前記ライトリクエストに係るライトデータの前記メモリライト制御部における前記データ処理状態に応じた前記優先度を設定してその優先度に従って前記コマンドキューから前記複数のメモリのいずれかに対するリードコマンドを選択するリードコマンド選択部と、
前記選択されたリードコマンドに基づいて前記複数のメモリのいずれかに対してリードリクエストおよびアドレスを生成して送信するメモリリクエストアドレス送信部とを備える
前記（１）から（３）のいずれかに記載のメモリコントローラ。
（５）複数のメモリと、
コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備するメモリシステム。
（６）複数のメモリと、
コンピュータと、
前記コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備する情報処理システム。
【符号の説明】
【００９２】
１００  ホストコンピュータ
２００  メモリコントローラ
２０１、２０２  メモリ制御エンジン
２１０  ストレージインターフェース制御部
２２０  Ｉ／Ｏバス
２３０  プロセッサ
２４０  ＲＡＭ
２５０−１  メモリ制御部（メモリリード制御部）
２５０−２  メモリ制御部（メモリライト制御部）
２５１−１  コマンドキュー
２５２−１、２５２−２  デコーダ
２５３−１、２５３−２  メモリリクエストアドレス送信部
２５４−１  リードコマンド選択部
２５４−２  バスデータ受信部
２５５−２  エラー訂正コード生成部
２５６−１  メモリデータ受信部
２５６−２  データバッファ
２５７−１  エラー検出訂正部
２５７−２  メモリデータ送信部
２５８−１  バスデータ送信部
２５８−２  ビジー信号生成部
２５９−２  レディ信号生成部
２６０  接続切換部
２７０  メモリインターフェース制御部
３００  メモリ
３０１、３０２  メモリダイ
４００  メモリシステム
【図１】
2018003244.tif 000003
【図２】
2018003244.tif 000004
【図３】
2018003244.tif 000005
【図４】
2018003244.tif 000006
【図５】
2018003244.tif 000007
【図６】
2018003244.tif 000008
【図７】
2018003244.tif 000009
【図８】
2018003244.tif 000010
【図９】
2018003244.tif 000011
【図１０】
2018003244.tif 000012
【図１１】
2018003244.tif 000013
【図１２】
2018003244.tif 000014
【図１３】
2018003244.tif 000015
【図１４】
2018003244.tif 000016
【図１５】
2018003244.tif 000017
【国際調査報告】
2018003244.tif 000018
2018003244.tif 000019
2018003244.tif 000020
2018003244.tif 000021