JPWO2018003244A1 - メモリコントローラ、メモリシステムおよび情報処理システム - Google Patents

メモリコントローラ、メモリシステムおよび情報処理システム Download PDF

Info

Publication number
JPWO2018003244A1
JPWO2018003244A1 JP2018524909A JP2018524909A JPWO2018003244A1 JP WO2018003244 A1 JPWO2018003244 A1 JP WO2018003244A1 JP 2018524909 A JP2018524909 A JP 2018524909A JP 2018524909 A JP2018524909 A JP 2018524909A JP WO2018003244 A1 JPWO2018003244 A1 JP WO2018003244A1
Authority
JP
Japan
Prior art keywords
memory
write
control unit
read
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018524909A
Other languages
English (en)
Other versions
JP6992750B2 (ja
Inventor
石井 健
健 石井
宏行 岩城
宏行 岩城
中西 健一
健一 中西
藤波 靖
靖 藤波
龍男 新橋
龍男 新橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Publication of JPWO2018003244A1 publication Critical patent/JPWO2018003244A1/ja
Application granted granted Critical
Publication of JP6992750B2 publication Critical patent/JP6992750B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

メモリに対する読出しアクセスの順序を適切に判断する。
メモリシステムは、複数のメモリと、メモリコントローラとを備える。メモリコントローラは、メモリライト制御部と、メモリリード制御部とを備える。メモリライト制御部は、コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成する。メモリリード制御部は、ライトリクエストに係るライトデータのメモリライト制御部におけるデータ処理状態に応じた優先度によって複数のメモリのいずれかに対するリードリクエストをコンピュータからのリードコマンドに基づいて生成する。

Description

本技術は、メモリを制御するメモリコントローラに関する。詳しくは、コンピュータから発行されたコマンドに基づいて複数のメモリに対するリクエストを生成するメモリコントローラ、メモリシステムおよび情報処理システムに関する。
複数のメモリ(例えば、メモリバンクまたはダイ)に対するメモリアクセスについて、読出しの順序を変更することにより高速化を図る技術が知られている。例えば、コマンド発行元回路から書込み要求があった際に、コマンド履歴バッファに保持された過去のコマンド発行履歴と、新たに要求された2つ以上のコマンドとに基づいて、メモリコマンドの発行順序を変更する装置が提案されている(例えば、特許文献1参照。)。
特開2014−154119号公報
上述の従来技術では、コマンド発行履歴および新たに要求されたコマンドに基づいてメモリコマンドの発行順序を変更している。しかしながら、ライトデータについてエラー訂正コードを生成する等の処理を要するメモリにおいては、データの処理状態によってはメモリに対する読出しアクセスの順序について適切な判断を行えないおそれがある。すなわち、複数のメモリがアイドル状態であっても、データの処理状態によってはその後のメモリの状態は異なる可能性があり、いずれのメモリに対して先にリードアクセスを行うべきかを適切に判断できない場合がある。
本技術はこのような状況に鑑みて生み出されたものであり、メモリに対するリードアクセスの順序を適切に判断することを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、上記ライトリクエストに係るライトデータの上記メモリライト制御部におけるデータ処理状態に応じた優先度によって上記複数のメモリのいずれかに対するリードリクエストを上記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部とを具備するメモリコントローラ、そのメモリコントローラを含むメモリシステムおよび情報処理システムである。これにより、ライトデータのデータ処理状態に応じた優先度によって複数のメモリのいずれかに対してリードリクエストを要求するという作用をもたらす。
また、この第1の側面において、上記メモリライト制御部は、上記ライトデータについてエラー訂正コードを生成するエラー訂正コード生成部と、上記複数のメモリのそれぞれに対する上記ライトデータについて上記エラー訂正コードが生成中であるか否かを示すビジー信号を上記データ処理状態として生成するビジー信号生成部とを備え、上記メモリリード制御部は、上記複数のメモリのうち上記ビジー信号が上記エラー訂正コードの生成中である旨を示しているものの上記優先度を高く設定するようにしてもよい。これにより、エラー訂正コードの生成中である旨を示しているメモリに対して優先的にリードリクエストを要求するという作用をもたらす。
また、この第1の側面において、上記メモリライト制御部は、上記エラー訂正コードが生成された上記ライトデータを保持するデータバッファと、上記複数のメモリのそれぞれに対する上記ライトデータについて上記エラー訂正コードの生成が完了して上記データバッファに準備されているか否かを示すレディ信号を上記データ処理状態として生成するレディ信号生成部とをさらに備え、上記メモリリード制御部は、上記複数のメモリのうち上記エラー訂正コードが生成完了している旨を上記レディ信号が示しているものの上記優先度を低く設定するようにしてもよい。これにより、エラー訂正コードが生成完了しているメモリ以外に対して優先的にリードリクエストを要求するという作用をもたらす。
また、この第1の側面において、上記メモリリード制御部は、上記コンピュータからのリードコマンドを保持するコマンドキューと、上記複数のメモリのそれぞれについて上記ライトリクエストに係るライトデータの上記メモリライト制御部における上記データ処理状態に応じた上記優先度を設定してその優先度に従って上記コマンドキューから上記複数のメモリのいずれかに対するリードコマンドを選択するリードコマンド選択部と、上記選択されたリードコマンドに基づいて上記複数のメモリのいずれかに対してリードリクエストおよびアドレスを生成して送信するメモリリクエストアドレス送信部とを備えるようにしてもよい。これにより、リードコマンド選択部が設定した優先度に従ってリードリクエストを送信するという作用をもたらす。
本技術によれば、メモリに対する読出しアクセスの順序を適切に判断することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の実施の形態における情報処理システムの一構成例を示す図である。 本技術の実施の形態におけるメモリコントローラ200の一構成例を示す図である。 本技術の第1の実施の形態におけるメモリ制御エンジン201の信号線の一例を示す図である。 本技術の第1の実施の形態におけるメモリ制御部(メモリライト制御部)250−2の構成例を示す図である。 本技術の第1の実施の形態におけるメモリ制御部(メモリリード制御部)250−1の構成例を示す図である。 本技術の第1の実施の形態のリードコマンド選択部254−1によるリードコマンドに対する優先度の付与規則例を示す図である。 本技術のリードコマンド選択部254−1によるリードコマンドの選択処理手順の一例を示す流れ図である。 本技術の第1の実施の形態におけるメモリコントローラ200の動作タイミングを説明するための比較例である。 本技術の第1の実施の形態におけるメモリコントローラ200の動作タイミング例である。 本技術の第2の実施の形態におけるメモリ制御エンジン202の信号線の一例を示す図である。 本技術の第2の実施の形態におけるメモリ制御部(メモリライト制御部)250−2の構成例を示す図である。 本技術の第2の実施の形態におけるメモリ制御部(メモリリード制御部)250−1の構成例を示す図である。 本技術の第2の実施の形態のリードコマンド選択部254−1によるリードコマンドに対する優先度の付与規則例を示す図である。 本技術の第2の実施の形態におけるメモリコントローラ200の動作タイミングを説明するための比較例である。 本技術の第2の実施の形態におけるメモリコントローラ200の動作タイミング例である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(ライトデータ準備中のメモリダイに対するリードコマンドに高い優先度を付与する例)
2.第2の実施の形態(ライトデータ準備完了のメモリダイに対するリードコマンドに低い優先度を付与する例)
<1.第1の実施の形態>
[情報処理システムの構成]
図1は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ100と、メモリコントローラ200と、メモリ300とから構成される。メモリコントローラ200およびメモリ300はメモリシステム400を構成する。
ホストコンピュータ100は、メモリ300に対してデータのリード処理およびライト処理等を指令するコマンドを発行するものである。このホストコンピュータ100は、ホストコンピュータ100としての処理を実行する(図示しない)プロセッサと、メモリコントローラ200との間のやりとりを行うための(図示しない)コントローラインターフェースとを備える。また、ホストコンピュータ100は、一般的にはデータバッファを備える。ホストコンピュータ100とメモリコントローラ200との間は信号線109により接続される。なお、ホストコンピュータ100は、特許請求の範囲に記載のコンピュータの一例である。
メモリコントローラ200は、ホストコンピュータ100からのコマンドに従って、メモリ300に対するリクエスト制御を行うものである。メモリコントローラ200とメモリ300との間は信号線309により接続される。
メモリ300は、(図示しない)制御部およびメモリセルアレイを備える。このメモリ300の制御部は、メモリコントローラ200からのリクエストに従ってメモリセルへのアクセスを行う。メモリ300のメモリセルアレイは、複数のメモリセルからなるメモリセルアレイであり、ビット毎に2値の何れかの値を記憶するメモリセル、または、複数ビット毎に多値の何れかの値を記憶するメモリセルが2次元状(マトリクス状)に多数配列されている。このメモリセルアレイは、複数バイトサイズを有するページを読出しまたは書込みのアクセス単位とし、消去することなくデータの上書きが可能な不揮発性メモリ(NVM:Non-Volatile Memory)を想定する。また、メモリ300は、複数の不揮発性メモリ(ダイまたはチップ等)からなり、それぞれ独立してアクセスが可能であることを想定する。
[メモリコントローラの構成]
図2は、本技術の実施の形態におけるメモリコントローラ200の一構成例を示す図である。このメモリコントローラ200は、ストレージインターフェース制御部210と、プロセッサ230と、RAM240と、メモリ制御エンジン201とを備え、これらの間はI/Oバス220によって相互に接続される。
ストレージインターフェース制御部210は、信号線109を介してホストコンピュータ100と接続し、ホストコンピュータ100との間のやりとりを行うものである。このストレージインターフェース制御部210は、具体的には、USB、SATAやPCIeなどの広くストレージ向けのインターフェースとして使用される汎用バスを含む。このストレージインターフェース制御部210の機能としては、ホストコンピュータ100からの複数のコマンドを同時に受信可能なコマンドキューイングをサポートする。これにより、メモリ300に対してアクセスするためのリクエストをランダムに送信して、リードアクセスおよびライトアクセスを行う。
プロセッサ230は、メモリコントローラ200の動作に必要な処理を行うものである。RAM240は、メモリコントローラ200の動作に必要なデータ等を記憶するメモリである。このRAM240は、データバッファとしても利用される。メモリ制御エンジン201は、メモリ300に対するリクエスト制御を行うものである。
メモリ制御エンジン201は、2つのメモリ制御部250−1および250−2と、接続切換部260と、メモリインターフェース制御部270とを備えている。
メモリ制御部250−1および250−2(以下、メモリ制御部250と総称する場合がある。)は、各々が独立してメモリ300に対するリクエスト制御を行うものである。メモリ制御部250−1は、メモリ300に対するリードリクエストを制御する(以下、「メモリリード制御部」と呼称する場合がある。)。メモリ制御部250−2は、メモリ300に対するライトリクエストを制御する(以下、「メモリライト制御部」と呼称する場合がある。)。メモリ制御部250−1は、信号線229−1を介してI/Oバス220と接続し、信号線269−1を介して接続切換部260と接続する。メモリ制御部250−2は、信号線229−2を介してI/Oバス220と接続し、信号線269−2を介して接続切換部260と接続する。以下、信号線229−1および229−2を信号線229と総称する場合がある。また、信号線269−1および269−2を信号線269と総称する場合がある。
接続切換部260は、メモリ制御部250−1および250−2の何れかをメモリ300に接続するよう切換えを行うものである。メモリインターフェース制御部270は、信号線279を介して接続切換部260に接続し、メモリ300との間のやりとりを行うものである。
なお、I/Oバス220の帯域は、メモリ300のリードおよびライトの帯域よりも大きいことが前提である。したがって、メモリ300の性能がメモリシステム400の性能を律速することを想定する。
図3は、本技術の第1の実施の形態におけるメモリ制御エンジン201の信号線の一例を示す図である。
メモリ制御部250とI/Oバス220との間の信号線229は、コマンド信号線、データ信号線および結果信号線を含む。また、メモリ制御部250と接続切換部260との間の信号線269は、接続要求信号線、リクエストアドレス(Req/Adr)信号線、データ(Data)信号線、および、ビジーステータス1、2(Busy/Status1、2)信号線を含む。また、接続切換部260とメモリインターフェース制御部270との間の信号線279は、リクエストアドレス(Req/Adr)信号線、データ(Data)信号線、および、ビジーステータス(Busy/Status)信号線を含む。
ストレージインターフェース制御部210は、ホストコンピュータ100から発行されたコマンドを、そのコマンドに応じて2つのメモリ制御部250−1または250−2のいずれかに供給する。メモリ制御部250の各々は、ホストコンピュータ100から発行されたコマンドを受け取り、それぞれ独立してメモリ300に対するリクエストを生成して制御を行う。これにより、メモリ制御部250を並行して動作させて、メモリインターフェース制御部270上で待ち時間が発生することを抑止する。
メモリ制御エンジン201は、2つのメモリダイ#1(301)およびメモリダイ#2(302)と信号線309を介して接続する。メモリダイ#1および#2のいずれにアクセスするかは、メモリインターフェース制御部270からのチップセレクト信号CS1およびCS2により指示される。上述のビジーステータス1(Busy/Status1)信号線はメモリダイ#1のビジーステータスを示し、ビジーステータス2(Busy/Status2)信号線は、メモリダイ#2のビジーステータスを示す。
上述のように、メモリ制御部250−1はメモリ300に対するリードリクエストを制御し、メモリ制御部250−2はメモリ300に対するライトリクエストを制御する。メモリ制御部250−2は、ライトデータについてデータ処理を行う。ここで、データ処理としては、例えば、ライトデータについてエラー訂正コード(ECC:Error Correcting Code)を生成する処理を想定するが、暗号化などの他の処理であってもよい。メモリ制御部250−2は、信号「enc_busy1」および信号「enc_busy2」をメモリ制御部250−1に出力する。信号「enc_busy1」は、メモリダイ#1に対するライトリクエストに係るライトデータのエラー訂正コードが生成中であるか否かを示す。エラー訂正コードが生成中であれば「ビジー状態」を示し、エラー訂正コードが生成中でなければ「アイドル状態」を示す。同様に、信号「enc_busy2」は、メモリダイ#2に対するライトリクエストに係るライトデータのエラー訂正コードが生成中であるか否かを示す。
メモリ制御部250−1および250−2の各々は、メモリダイ#1および#2に対して並行してリクエスト制御を行うことができる。すなわち、メモリ制御部250−1がリードリクエストをメモリダイ#1および#2の一方に対して実行した後に、接続切換部260に対する要求信号を終了し、直ちにメモリ制御部250−2がライトリクエストをメモリダイ#1および#2の他方に対して実行可能である。
そのために、メモリ制御部250は、メモリインターフェース制御部270からのBusy/Status信号を、メモリダイ#1および#2の各々について受信して管理するようになっている。メモリ制御部250は、書込みの完了を示すステータス情報をメモリダイ#1および#2から受信した際には、書込みビジー情報をクリアする。書込みビジー状態であるメモリダイ#1および#2に対しては、次の書込みリクエストを送信しない。また、メモリ制御部250は、書込みビジー状態であるメモリダイ#1および#2に対してステータス情報を確認するため、接続切換部260に接続要求を出力し、ステータス情報を確認後、その接続要求を停止する。
なお、メモリダイ#1および#2は、特許請求の範囲に記載のメモリの一例である。
図4は、本技術の第1の実施の形態におけるメモリ制御部(メモリライト制御部)250−2の構成例を示す図である。このメモリ制御部250−2は、デコーダ252−2と、メモリリクエストアドレス送信部253−2と、バスデータ受信部254−2と、エラー訂正コード生成部255−2と、メモリデータ送信部257−2と、ビジー信号生成部258−2とを備える。
デコーダ252−2は、ホストコンピュータ100から発行されたコマンドを解釈するデコーダである。デコード結果として、例えば、ライトコマンドがメモリダイ#1に対するものである場合に信号「die1_sel」がアサートされ、ライトコマンドがメモリダイ#2に対するものである場合に信号「die2_sel」がアサートされるものとする。
メモリリクエストアドレス送信部253−2は、デコーダ252−2によるデコード結果に従って、メモリ300に対してリクエストおよびアドレスを送信するものである。このメモリリクエストアドレス送信部253−2は、リクエストおよびアドレスを送信する際に、これに先立って接続切換部260に対して接続要求を出力する。
バスデータ受信部254−2は、I/Oバス220からライトデータを受信して、エラー訂正コード生成部255−2に供給するものである。
エラー訂正コード生成部255−2は、バスデータ受信部254−2が受信したライトデータについてエラー訂正コード(ECC)を生成するものである。このエラー訂正コード生成部255−2は、バスデータ受信部254−2から供給されたライトデータについてエラー訂正コードを生成中である場合に信号「enc_busy」をアサートする。すなわち、信号「enc_busy」は、エラー訂正コードを生成中であれば「ビジー状態」を示し、生成中でなければ「アイドル状態」を示す。
メモリデータ送信部257−2は、ライトデータおよびエラー訂正コードをメモリ300に送信するものである。
ビジー信号生成部259−2は、メモリダイ#1および#2の各々について、ライトリクエストに係るライトデータのエラー訂正コードが生成中であるか否かを示すビジー信号を生成するものである。すなわち、信号「enc_busy」が「ビジー状態」を示している場合、信号「die1_sel」がアサートされていれば信号「enc_busy1」を「ビジー状態」とし、信号「enc_busy2」を「アイドル状態」とする。また、この場合、信号「die2_sel」がアサートされていれば信号「enc_busy2」を「ビジー状態」とし、信号「enc_busy1」を「アイドル状態」とする。一方、信号「enc_busy」が「アイドル状態」を示している場合、信号「enc_busy1」および「enc_busy2」をともに「アイドル状態」とする。
図5は、本技術の第1の実施の形態におけるメモリ制御部(メモリリード制御部)250−1の構成例を示す図である。このメモリ制御部250−1は、コマンドキュー251−1と、デコーダ252−1と、メモリリクエストアドレス送信部253−1と、リードコマンド選択部254−1とを備える。また、このメモリ制御部250−1は、メモリデータ受信部256−1と、エラー検出訂正部257−1と、バスデータ送信部258−1とを備える。
コマンドキュー251−1は、ホストコンピュータ100から発行されたリードコマンドを保持するメモリである。このコマンドキュー251−1は、メモリダイ#1および#2のそれぞれに対応して、メモリダイ#1および#2毎にFIFO(先入れ先出し)方式によりリードコマンドを保持する。そして、このコマンドキュー251−1は、メモリダイ#1に対するリードコマンドが保持されていれば信号「rcommand1」をアサートし、メモリダイ#2に対するリードコマンドが保持されていれば信号「rcommand2」をアサートする。リードコマンドはメモリダイ#1および#2毎に管理されるため、信号「rcommand1」および信号「rcommand2」が同時にアサートされることもあり得る。
デコーダ252−1は、デコーダ252−2と同様に、ホストコンピュータ100から発行されたコマンドを解釈するデコーダである。メモリリクエストアドレス送信部253−1は、メモリリクエストアドレス送信部253−2と同様に、デコーダ252−1によるデコード結果に従って、メモリ300に対してリクエストおよびアドレスを送信するものである。
メモリデータ受信部256−1は、メモリ300から読み出したリードデータおよびエラー訂正コードを受信するものである。エラー検出訂正部257−1は、メモリデータ受信部256−1が受信したリードデータについて、エラー訂正コードによるエラー検出およびエラー訂正を行うものである。バスデータ送信部258−1は、エラー検出訂正部257−1から出力されたリードデータをI/Oバス220に送信するものである。
リードコマンド選択部254−1は、コマンドキュー251−1に保持されたリードコマンドのうち、いずれのリードコマンドを取り出してデコーダ252−1に供給すべきかを選択するものである。このリードコマンド選択部254−1には、信号「enc_busy1」、信号「enc_busy2」、信号「die_busy1」、信号「die_busy2」、信号「rcommand1」および信号「rcommand2」が入力される。信号「enc_busy1」および信号「enc_busy2」は、上述のように、ビジー信号生成部258−2が生成するビジー信号であり、メモリダイ#1および#2毎にエラー訂正コードが生成中であるか否かを示す。信号「die_busy1」および信号「die_busy2」は、メモリダイ#1および#2のBusy/Status信号の一部であり、メモリダイ#1および#2毎にビジー状態にあるか否かを示す。信号「rcommand1」および信号「rcommand2」は、コマンドキュー251−1に保持されたリードコマンドが存在するか否かをメモリダイ#1および#2毎に示す。リードコマンド選択部254−1は、これら入力された信号に基づいて、メモリダイ#1および#2毎に優先度を生成する。
そして、リードコマンド選択部254−1は、その生成した優先度に従って、メモリダイ#1および#2のいずれかに対応するコマンドをコマンドキュー251−1から取り出すための制御信号を生成する。すなわち、メモリダイ#1に対応するコマンドを取り出す場合には、信号「fetch1」をアサートする。一方、メモリダイ#2に対応するコマンドを取り出す場合には、信号「fetch2」をアサートする。なお、いずれのコマンドも取り出さない場合には、信号「fetch1」および信号「fetch2」のいずれもアサートしない。コマンドキュー251−1は、リードコマンド選択部254−1から供給された信号「fetch1」および信号「fetch2」に従って、メモリダイ#1および#2のいずれかに対応するコマンドをデコーダ252−1に供給する。
[メモリコントローラの動作内容]
図6は、本技術の第1の実施の形態のリードコマンド選択部254−1によるリードコマンドに対する優先度の付与規則例を示す図である。
ここでは、メモリダイ#1および#2のそれぞれに関する優先度を個別に扱っている。したがって、メモリダイ#1に対するリードコマンドがコマンドキュー251−1に存在するか否かは信号「rcommand1」により判断する。そして、メモリダイ#2に対するリードコマンドがコマンドキュー251−2に存在するか否かは信号「rcommand2」により判断する。同様に、メモリダイ#1がビジー状態にあるか否かは信号「die_busy1」により判断し、メモリダイ#2がビジー状態にあるか否かは信号「die_busy2」により判断する。
また、メモリダイ#1に対するライトデータが準備中か否かは信号「enc_busy1」により判断し、メモリダイ#2に対するライトデータが準備中か否かは信号「enc_busy2」により判断する。すなわち、この第1の実施の形態では、ライトデータのデータ処理状態として、メモリダイに対するライトデータが準備中か否かを判断基準とする。
なお、以下の説明では、優先度を付与するコマンドの対象となるメモリダイを「対象メモリダイ」と称する。また、コマンドキュー251−1および251−2をコマンドキュー251と総称する。
対象メモリダイに対するリードコマンドがコマンドキュー251に存在する場合、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中でなければ、優先度は「中」となる。一方、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中であれば、優先度は「高」となる。すなわち、対象メモリダイにおいてライトデータが準備中であれば、その対象メモリダイにおける後続のリードコマンドの優先度を通常よりも高く設定するものである。これは、対象メモリダイにおいてライトデータが準備中であれば、近いうちにライトアクセスが開始されることが予想されるため、それまでの間に対象メモリダイにおける後続のリードアクセスを先に進めておくことを意図したものである。
対象メモリダイに対するリードコマンドがコマンドキュー251に存在する場合であっても、対象メモリダイがビジー状態であれば、そのリードコマンドは選択対象外であるため、優先度は付与しない。同様に、対象メモリダイに対するリードコマンドがコマンドキュー251に存在しない場合には、対象となるリードコマンドが存在しないことになるため、優先度は付与しない。
図7は、本技術のリードコマンド選択部254−1によるリードコマンドの選択処理手順の一例を示す流れ図である。
まず、リードコマンド選択部254−1は、メモリダイ#1を対象メモリダイとして、上述の付与規則に従ってリードコマンドに優先度を付与する(ステップS911)。そして、リードコマンド選択部254−1は、メモリダイ#2を対象メモリダイとして、上述の付与規則に従ってリードコマンドに優先度を付与する(ステップS912)。
その結果、リードコマンド選択部254−1は、メモリダイ#1に対するリードコマンドの優先度とメモリダイ#2に対するリードコマンドの優先度とを比較する(ステップS913)。前者の優先度の方が後者の優先度よりも高い場合、または、両者が等しい場合には(ステップS913:Yes)、リードコマンド選択部254−1は、メモリダイ#1に対するリードコマンドを選択する(ステップS914)。
一方、メモリダイ#2に対するリードコマンドの優先度の方が高い場合には(ステップS915:Yes)、リードコマンド選択部254−1は、メモリダイ#2に対するリードコマンドを選択する(ステップS916)。
それ以外の場合には、いずれのリードコマンドにも優先度が付与されていないことになるため、リードコマンド選択部254−1は、コマンドキュー251からのリードコマンド選択を行わない(ステップS917)。
[メモリコントローラの動作タイミング]
図8は、本技術の第1の実施の形態におけるメモリコントローラ200の動作タイミングを説明するための比較例である。この例では、ホストコンピュータ100から、メモリダイ#1に対するライトコマンドC1、メモリダイ#2に対するリードコマンドC2、メモリダイ#1に対するリードコマンドC3の順に、各コマンドが発行された例を示している。
ライトコマンドC1が発行されると、メモリライト制御部250−2は、エラー訂正コード生成部255−2においてエラー訂正コードの生成を開始する。その後、リードコマンドC2およびC3が発行される。この比較例では、メモリリード制御部250−1においてコマンドの並び替えを行わないことを想定しているため、メモリリード制御部250−1は、先にリードコマンドC2に関するリクエストをメモリダイ#2に要求する。次に、メモリリード制御部250−1は、リードコマンドC3に関するリクエストをメモリダイ#1に要求する。
メモリダイ#1においては、リードコマンドC3に関するリクエストが完了するまでビジー状態が続くため、その間、ライトコマンドC1に関するリクエストの要求は待たされる。リードコマンドC3に関するリクエストが完了した後に、ライトコマンドC1に関するリクエストがライトデータおよびそのエラー訂正コードとともにメモリダイ#1に送信される。そのライトコマンドの結果はメモリコントローラ200に返送され、さらにホストコンピュータ100に通知される。
すなわち、この比較例では、リードコマンドC2に関するリクエストによってリードコマンドC3に関するリクエストが遅れ、このリードコマンドC3に関するリクエストの完了によってライトコマンドC1に関するリクエストの要求が待たされている。したがって、リードコマンドC2に関するリクエストよりもリードコマンドC3に関するリクエストを先に処理すれば、ライトコマンドC1に関するリクエストの待ちは軽減されることがわかる。
図9は、本技術の第1の実施の形態におけるメモリコントローラ200の動作タイミング例である。ここでは、図8の例と同様のコマンド順序を想定するが、メモリリード制御部250−1においてコマンドの並び替えを行うことにより、処理終了までの時間が短縮されることを示す。
ライトコマンドC1が発行されて、メモリライト制御部250−2がエラー訂正コード生成部255−2においてエラー訂正コードの生成を開始する点については、上述の例と同様である。次に、コマンドキュー251に保持されているリードコマンドを選択する際に、メモリリード制御部250−1は、それぞれのリードコマンドに優先度を付与する。このとき、メモリダイ#1および#2はアイドル状態である。また、メモリダイ#1においては、エラー訂正コードの生成がされているため、メモリダイ#1に対するリードコマンドC3の優先度は「高」に設定される。一方、メモリダイ#2においては、エラー訂正コードの生成はされていないため、メモリダイ#2に対するリードコマンドC2の優先度は「中」に設定される。
メモリリード制御部250−1は、メモリダイ#1に対するリードコマンドC3とメモリダイ#2に対するリードコマンドC2の優先度を比較して、優先度の高いリードコマンドC3を先に選択して、メモリダイ#1に対してリードリクエストを要求する。次に、メモリリード制御部250−1は、もう一方のリードコマンドC2を選択して、メモリダイ#2に対してリードリクエストを要求する。
メモリダイ#1においては、リードコマンドC3に関するリクエストが完了するまでビジー状態が続くため、その間、ライトコマンドC1に関するリクエストの要求は、上述の例と同様に待たされる。ただし、この第1の実施の形態においては、リードコマンドC3に関するリクエストがリードコマンドC2に関するリクエストよりも先に処理されているため、リードコマンドC3に関するリクエストの完了タイミングは早い。したがって、ライトコマンドC1に関するリクエストの待ちは軽減され、結果として、上述の例よりも処理終了までの時間が短縮される。
このように、本技術の第1の実施の形態では、ライトデータが準備中のメモリダイにおいてはある程度の時間が経過した後にライトアクセスが開始されるものと推定し、そのメモリダイにおける後続のリードコマンドに高い優先度を付与する。これにより、ライトアクセスが開始されるまでの間にそのメモリダイにおける後続のリードアクセスを先に進めて、全体の処理終了までの時間を短縮することができる。
<2.第2の実施の形態>
上述の第1の実施の形態では、ライトデータが準備中のメモリダイにおける後続のリードアクセスを優先して行うことを想定した。この第2の実施の形態では、これに加えて、ライトデータの準備が完了している状態であれば、逆に後続のリードアクセスの優先度を低く設定することを想定する。なお、情報処理システムとしての全体構成は上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
[メモリコントローラの構成]
図10は、本技術の第2の実施の形態におけるメモリ制御エンジン202の信号線の一例を示す図である。この第2の実施の形態のメモリ制御エンジン202では、メモリ制御部250−2からメモリ制御部250−1に対して、信号「data_ready1」および信号「data_ready2」を供給する点において、上述の第1の実施の形態と異なる。その他の点については、図3により説明したメモリ制御エンジン201と同様である。
信号「data_ready1」は、メモリダイ#1に対するライトリクエストに係るライトデータのエラー訂正コードの生成が完了しているか否かを示す。エラー訂正コードが生成完了していれば「完了状態」を示し、エラー訂正コードが生成完了していなければ「未了状態」を示す。同様に、信号「data_ready2」は、メモリダイ#2に対するライトリクエストに係るライトデータのエラー訂正コードの生成が完了しているか否かを示す。
図11は、本技術の第2の実施の形態におけるメモリ制御部(メモリライト制御部)250−2の構成例を示す図である。この第2の実施の形態のメモリ制御部250−2は、上述の第1の実施の形態に加え、データバッファ256−2およびレディ信号生成部259−2を備える。
データバッファ256−2は、ライトデータとともにエラー訂正コード生成部255−2によって生成されたデータ訂正コードを保持するバッファである。このデータバッファ256−2を備えることにより、対応するメモリダイがビジー状態であってもデータバッファ256−2に空きがあれば、エラー訂正コード生成部255−2はデータ訂正コードを生成することが可能となる。このデータバッファ256−2は、データ訂正コードの生成が完了して、ライトデータおよびデータ訂正コードが保持されている場合に、信号「data_ready」を、「完了状態」にする。この信号「data_ready」が「完了状態」を示している場合には、ライトリクエストをすぐにでも要求することができるよう準備が完了していることを意味する。
レディ信号生成部259−2は、メモリダイ#1および#2の各々について、ライトリクエストに係るライトデータのエラー訂正コードの生成が完了しているか否かを示すレディ信号を生成するものである。すなわち、信号「data_ready」が「完了状態」を示している場合、信号「die1_sel」がアサートされていれば信号「data_ready1」を「完了状態」とし、信号「data_ready2」を「未完了状態」とする。また、この場合、信号「die2_sel」がアサートされていれば信号「data_ready2」を「完了状態」とし、信号「data_ready1」を「未完了状態」とする。一方、信号「data_ready」が「未完了状態」を示している場合、信号「data_ready1」および「data_ready2」をともに「未完了状態」とする。
図12は、本技術の第2の実施の形態におけるメモリ制御部(メモリリード制御部)250−1の構成例を示す図である。この第2の実施の形態のメモリ制御部250−1は、リードコマンド選択部254−1が、信号「data_ready1」および信号「data_ready2」をさらに受ける点において、上述の第1の実施の形態と異なる。
リードコマンド選択部254−1は、上述の第1の実施の形態と同様に、コマンドキュー251−1に保持されたリードコマンドのうち、いずれのリードコマンドを取り出してデコーダ252−1に供給すべきかを選択する。その際、この第2の実施の形態のリードコマンド選択部254−1は、データバッファ256−2から供給された信号「data_ready1」および信号「data_ready2」の状態を加味する点において、上述の第1の実施の形態と異なる。
[メモリコントローラの動作内容]
図13は、本技術の第2の実施の形態のリードコマンド選択部254−1によるリードコマンドに対する優先度の付与規則例を示す図である。
ここでは、上述の第1の実施の形態と同様に、メモリダイ#1および#2のそれぞれに関する優先度を個別に扱っている。上述の信号に加え、メモリダイ#1に対するライトデータの準備が完了しているか否かは信号「data_ready1」により判断し、メモリダイ#2に対するライトデータの準備が完了しているか否かは信号「data_ready2」により判断する。すなわち、この第2の実施の形態では、ライトデータのデータ処理状態として、メモリダイに対するライトデータが準備中か否か、および、その準備が完了しているか否かを判断基準とする。
対象メモリダイに対するリードコマンドがコマンドキュー251に存在する場合、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中でもなく準備完了もしていなければ、優先度は「中」となる。また、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータが準備中であれば、優先度は「高」となる。これについては上述の第1の実施の形態と同様である。
これに加え、この第2の実施の形態では、対象メモリダイがビジー状態でなく、かつ、対象メモリダイに対するライトデータの準備が完了していれば、優先度は「低」となる。すなわち、対象メモリダイにおいてライトデータの準備が完了していれば、その対象メモリダイにおける後続のリードコマンドの優先度を通常よりも低く設定するものである。これは、対象メモリダイにおいてライトデータの準備が完了していれば、すぐにでもライトアクセスが開始されてビジー状態になることが予想されるため、対象メモリダイ以外のリードアクセスを優先することを意図したものである。
なお、上述の第1の実施の形態と同様に、対象メモリダイに対するリードコマンドがコマンドキュー251に存在する場合であっても、対象メモリダイがビジー状態であれば、そのリードコマンドは選択対象外であるため、優先度は付与しない。同様に、対象メモリダイに対するリードコマンドがコマンドキュー251に存在しない場合には、対象となるリードコマンドが存在しないことになるため、優先度は付与しない。
リードコマンド選択部254−1は、このようにして設定した優先度に従って、リードコマンドを選択する。この第2の実施の形態におけるリードコマンド選択部254−1のリードコマンドの選択処理手順は、図7において説明した上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
[メモリコントローラの動作タイミング]
図14は、本技術の第2の実施の形態におけるメモリコントローラ200の動作タイミングを説明するための比較例である。この例では、ホストコンピュータ100から、メモリダイ#1に対するライトコマンドC4、メモリダイ#1に対するリードコマンドC5、メモリダイ#2に対するリードコマンドC6の順に、各コマンドが発行された例を示している。また、ライトコマンドC4の前には、メモリダイ#1および#2は他のリクエストによって既にビジー状態になっていることを想定する。
ライトコマンドC4が発行されると、メモリライト制御部250−2は、エラー訂正コード生成部255−2においてエラー訂正コードの生成を開始する。その後、リードコマンドC5およびC6が発行される。この比較例では、メモリリード制御部250−1においてコマンドの並び替えを行わないことを想定しているため、メモリリード制御部250−1は、ライトコマンドC4に関するライトアクセスの終了を待って、リードコマンドC5に関するリクエストをメモリダイ#1に要求する。そして、メモリリード制御部250−1は、次にリードコマンドC6に関するリクエストをメモリダイ#2に要求する。
この比較例では、リードコマンドC5に関するリクエストの送信を待って、リードコマンドC6に関するリクエストを送信しているため、メモリダイ#2がアイドル状態であるのにもかかわらず、リードコマンドC6に関するリクエストが待たされている。したがって、リードコマンドC5に関するリクエストよりもリードコマンドC6に関するリクエストを先に処理すれば、処理終了までの時間が短縮されることがわかる。
図15は、本技術の第2の実施の形態におけるメモリコントローラ200の動作タイミング例である。ここでは、図14の例と同様のコマンド順序を想定するが、メモリリード制御部250−1においてコマンドの並び替えを行うことにより、処理終了までの時間が短縮されることを示す。
ライトコマンドC4が発行されて、メモリライト制御部250−2がエラー訂正コード生成部255−2においてエラー訂正コードの生成を開始する点については、上述の例と同様である。ただし、この時点ではメモリダイ#1および#2はともにビジー状態となっているため、メモリリード制御部250−1はいずれのリードコマンドにも優先度を付与しない。その後、ライトコマンドC4に関するライトデータおよびエラー訂正コードは、データバッファ256−2に保持される。
メモリダイ#1および#2がアイドル状態になると、メモリリード制御部250−1はリードコマンドC5およびC6に優先度を付与する。すなわち、メモリダイ#1については、ライトコマンドC4に関するエラー訂正コードが生成完了し、信号「data_ready1」が「完了状態」を示しているため、リードコマンドC5の優先度は「低」に設定される。また、メモリダイ#2については、エラー訂正コードの生成はされておらず、信号「enc_busy2」が「準備なし」を示しているため、リードコマンドC6の優先度は「中」に設定される。
メモリリード制御部250−1は、メモリダイ#1に対するリードコマンドC5とメモリダイ#2に対するリードコマンドC6の優先度を比較して、優先度の高いリードコマンドC6を先に選択して、メモリダイ#2に対してリードリクエストを要求する。その後、メモリリード制御部250−1は、メモリダイ#1におけるライトコマンドC4に関するライトアクセスが完了した後、もう一方のリードコマンドC5を選択して、メモリダイ#1に対してリードリクエストを要求する。
これにより、メモリダイ#1におけるライトコマンドC4に関するライトアクセスと、メモリダイ#2におけるリードコマンドC6に関するリードアクセスとが並行して実行されるため、全体の処理終了までの時間が短縮される。
このように、本技術の第2の実施の形態では、ライトデータの準備が完了している状態であれば、対応するメモリダイに対してライトリクエストがすぐに要求されると推定し、そのメモリダイにおける後続のリードコマンドには低い優先度を付与する。これにより、他のメモリダイにおけるリードアクセスを先に進めて、全体の処理終了までの時間を短縮することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
なお、本技術は以下のような構成もとることができる。
(1)コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備するメモリコントローラ。
(2)前記メモリライト制御部は、
前記ライトデータについてエラー訂正コードを生成するエラー訂正コード生成部と、
前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードが生成中であるか否かを示すビジー信号を前記データ処理状態として生成するビジー信号生成部とを備え、
前記メモリリード制御部は、前記複数のメモリのうち前記ビジー信号が前記エラー訂正コードの生成中である旨を示しているものの前記優先度を高く設定する
前記(1)に記載のメモリコントローラ。
(3)前記メモリライト制御部は、前記エラー訂正コードが生成された前記ライトデータを保持するデータバッファと、
前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードの生成が完了して前記データバッファに準備されているか否かを示すレディ信号を前記データ処理状態として生成するレディ信号生成部とをさらに備え、
前記メモリリード制御部は、前記複数のメモリのうち前記エラー訂正コードが生成完了している旨を前記レディ信号が示しているものの前記優先度を低く設定する
前記(2)に記載のメモリコントローラ。
(4)前記メモリリード制御部は、
前記コンピュータからのリードコマンドを保持するコマンドキューと、
前記複数のメモリのそれぞれについて前記ライトリクエストに係るライトデータの前記メモリライト制御部における前記データ処理状態に応じた前記優先度を設定してその優先度に従って前記コマンドキューから前記複数のメモリのいずれかに対するリードコマンドを選択するリードコマンド選択部と、
前記選択されたリードコマンドに基づいて前記複数のメモリのいずれかに対してリードリクエストおよびアドレスを生成して送信するメモリリクエストアドレス送信部とを備える
前記(1)から(3)のいずれかに記載のメモリコントローラ。
(5)複数のメモリと、
コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備するメモリシステム。
(6)複数のメモリと、
コンピュータと、
前記コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
を具備する情報処理システム。
100 ホストコンピュータ
200 メモリコントローラ
201、202 メモリ制御エンジン
210 ストレージインターフェース制御部
220 I/Oバス
230 プロセッサ
240 RAM
250−1 メモリ制御部(メモリリード制御部)
250−2 メモリ制御部(メモリライト制御部)
251−1 コマンドキュー
252−1、252−2 デコーダ
253−1、253−2 メモリリクエストアドレス送信部
254−1 リードコマンド選択部
254−2 バスデータ受信部
255−2 エラー訂正コード生成部
256−1 メモリデータ受信部
256−2 データバッファ
257−1 エラー検出訂正部
257−2 メモリデータ送信部
258−1 バスデータ送信部
258−2 ビジー信号生成部
259−2 レディ信号生成部
260 接続切換部
270 メモリインターフェース制御部
300 メモリ
301、302 メモリダイ
400 メモリシステム

Claims (6)

  1. コンピュータからのライトコマンドに基づいて複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
    前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
    を具備するメモリコントローラ。
  2. 前記メモリライト制御部は、
    前記ライトデータについてエラー訂正コードを生成するエラー訂正コード生成部と、
    前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードが生成中であるか否かを示すビジー信号を前記データ処理状態として生成するビジー信号生成部とを備え、
    前記メモリリード制御部は、前記複数のメモリのうち前記ビジー信号が前記エラー訂正コードの生成中である旨を示しているものの前記優先度を高く設定する
    請求項1記載のメモリコントローラ。
  3. 前記メモリライト制御部は、
    前記エラー訂正コードが生成された前記ライトデータを保持するデータバッファと、
    前記複数のメモリのそれぞれに対する前記ライトデータについて前記エラー訂正コードの生成が完了して前記データバッファに準備されているか否かを示すレディ信号を前記データ処理状態として生成するレディ信号生成部とをさらに備え、
    前記メモリリード制御部は、前記複数のメモリのうち前記エラー訂正コードが生成完了している旨を前記レディ信号が示しているものの前記優先度を低く設定する
    請求項2記載のメモリコントローラ。
  4. 前記メモリリード制御部は、
    前記コンピュータからのリードコマンドを保持するコマンドキューと、
    前記複数のメモリのそれぞれについて前記ライトリクエストに係るライトデータの前記メモリライト制御部における前記データ処理状態に応じた前記優先度を設定してその優先度に従って前記コマンドキューから前記複数のメモリのいずれかに対するリードコマンドを選択するリードコマンド選択部と、
    前記選択されたリードコマンドに基づいて前記複数のメモリのいずれかに対してリードリクエストおよびアドレスを生成して送信するメモリリクエストアドレス送信部とを備える
    請求項1記載のメモリコントローラ。
  5. 複数のメモリと、
    コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
    前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
    を具備するメモリシステム。
  6. 複数のメモリと、
    コンピュータと、
    前記コンピュータからのライトコマンドに基づいて前記複数のメモリのいずれかに対するライトリクエストを生成するメモリライト制御部と、
    前記ライトリクエストに係るライトデータの前記メモリライト制御部におけるデータ処理状態に応じた優先度によって前記複数のメモリのいずれかに対するリードリクエストを前記コンピュータからのリードコマンドに基づいて生成するメモリリード制御部と
    を具備する情報処理システム。
JP2018524909A 2016-06-29 2017-04-17 メモリコントローラ、メモリシステムおよび情報処理システム Active JP6992750B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2016129012 2016-06-29
JP2016129012 2016-06-29
PCT/JP2017/015412 WO2018003244A1 (ja) 2016-06-29 2017-04-17 メモリコントローラ、メモリシステムおよび情報処理システム

Publications (2)

Publication Number Publication Date
JPWO2018003244A1 true JPWO2018003244A1 (ja) 2019-04-18
JP6992750B2 JP6992750B2 (ja) 2022-01-13

Family

ID=60785333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018524909A Active JP6992750B2 (ja) 2016-06-29 2017-04-17 メモリコントローラ、メモリシステムおよび情報処理システム

Country Status (3)

Country Link
US (1) US11029881B2 (ja)
JP (1) JP6992750B2 (ja)
WO (1) WO2018003244A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556420B2 (en) * 2021-04-06 2023-01-17 Macronix International Co., Ltd. Managing error correction coding in memory systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000067574A (ja) * 1998-08-21 2000-03-03 Mitsubishi Electric Corp 半導体記憶装置
US20030217239A1 (en) * 2002-05-14 2003-11-20 Jeddeloh Joseph M. Out of order DRAM sequencer
WO2013014841A1 (ja) * 2011-07-22 2013-01-31 パナソニック株式会社 データ処理装置およびデータ処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014154119A (ja) 2013-02-14 2014-08-25 Ricoh Co Ltd メモリ制御装置及び半導体記憶装置
US9442662B2 (en) * 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000067574A (ja) * 1998-08-21 2000-03-03 Mitsubishi Electric Corp 半導体記憶装置
US6272052B1 (en) * 1998-08-21 2001-08-07 Mitsubishi Denki Kabushiki Kaisha Block-erase type semiconductor storage device with independent memory groups having sequential logical addresses
US20030217239A1 (en) * 2002-05-14 2003-11-20 Jeddeloh Joseph M. Out of order DRAM sequencer
WO2003098392A2 (en) * 2002-05-14 2003-11-27 Micron Technology, Inc. Out of order dram sequencer
JP2005525652A (ja) * 2002-05-14 2005-08-25 マイクロン テクノロジー インコーポレイテッド アウトオブオーダdramシーケンサ
WO2013014841A1 (ja) * 2011-07-22 2013-01-31 パナソニック株式会社 データ処理装置およびデータ処理方法
US20140136743A1 (en) * 2011-07-22 2014-05-15 Panasonic Corporation Data processing device and data processing method

Also Published As

Publication number Publication date
JP6992750B2 (ja) 2022-01-13
WO2018003244A1 (ja) 2018-01-04
US11029881B2 (en) 2021-06-08
US20200310681A1 (en) 2020-10-01

Similar Documents

Publication Publication Date Title
JP4748610B2 (ja) 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用
US20150006794A1 (en) Apparatus and method for controlling multi-way nand flashes by using input-output pins
KR20160013351A (ko) 데이터 저장 장치 및 그것의 데이터 처리 방법
US8429337B2 (en) Apparatus for controlling NAND flash memory
US9304952B2 (en) Memory control device, storage device, and memory control method
US20150253992A1 (en) Memory system and control method
JP2020524859A (ja) メモリアクセス技術およびコンピュータシステム
US20170160952A1 (en) Memory controller, memory system, and information processing system
US20150149741A1 (en) Storage System and Control Method Thereof
TWI685744B (zh) 指令處理方法及使用所述方法的儲存控制器
JP2008009817A (ja) 半導体装置及びデータ転送方法
JP2010176442A (ja) ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法
CN110716691A (zh) 调度方法、装置、闪存设备和***
CN113485643B (zh) 用于数据存取的方法及数据写入的控制器
TWI474254B (zh) 用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統
US11307798B2 (en) Storage device and method for performing macro command
JP6992750B2 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
JP6004463B2 (ja) 記憶装置及びその制御方法
US8117351B1 (en) Serial parallel interface for data word architecture
TWI747660B (zh) 多閃存晶片的資料讀取方法及裝置以及電腦程式產品
JP3747213B1 (ja) シーケンシャルromインターフェース対応nand型フラッシュメモリーデバイス及びそのコントローラ
JP2005258509A (ja) ストレージ装置
WO2017073127A1 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
US6829692B2 (en) System and method for providing data to multi-function memory
CN110764710A (zh) 低延迟高iops的数据访问方法与存储***

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211026

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211122

R151 Written notification of patent or utility model registration

Ref document number: 6992750

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151