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