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

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

Info

Publication number
JPWO2016017287A1
JPWO2016017287A1 JP2016538199A JP2016538199A JPWO2016017287A1 JP WO2016017287 A1 JPWO2016017287 A1 JP WO2016017287A1 JP 2016538199 A JP2016538199 A JP 2016538199A JP 2016538199 A JP2016538199 A JP 2016538199A JP WO2016017287 A1 JPWO2016017287 A1 JP WO2016017287A1
Authority
JP
Japan
Prior art keywords
memory
request
unit
control unit
write
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
JP2016538199A
Other languages
English (en)
Other versions
JP6525007B2 (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 JPWO2016017287A1 publication Critical patent/JPWO2016017287A1/ja
Application granted granted Critical
Publication of JP6525007B2 publication Critical patent/JP6525007B2/ja
Expired - Fee Related 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/0614Improving the reliability of storage systems
    • 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/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Abstract

メモリアクセスの待ち時間を抑制する。メモリコントローラは、複数のメモリ制御部と、接続切換部とを備える。複数のメモリ制御部の各々は、コンピュータからのコマンドに基づいてメモリに対するリクエストをそれぞれ独立して生成する。複数のメモリ制御部からの接続要求に応じて複数のメモリ制御部のいずれかとメモリとを接続してリクエストをメモリに出力する。メモリシステムは、メモリとメモリコントローラとから構成される。情報処理システムは、メモリシステムとコンピュータとから構成される。

Description

本技術は、メモリを制御するメモリコントローラに関する。詳しくは、コンピュータから発行されたコマンドに基づいてメモリに対するリクエストを生成するメモリコントローラ、メモリシステムおよび情報処理システムに関する。
フラッシュメモリや相変化メモリ、抵抗変化型メモリなどに代表される不揮発性メモリは、複数バイトサイズを持つページを読出しまたは書込みのアクセス単位としたアクセスが可能である。これを制御する不揮発性メモリコントローラは、不揮発性メモリ上に保存するデータの信頼性を改善するために、ECC(エラー訂正コード:Error Correcting Code)を利用する。すなわち、書込み時にはホストコンピュータから受信したデータに対してECC符号をデータに付加して保存し、読出し時にはECC符号によってビットエラーを検出し、エラー訂正を行ったデータを、ホストコンピュータに対して出力する。したがって、ホストコンピュータからの読出しコマンド処理時間は、不揮発性メモリからのデータの読出しにかかるビジー時間とデータ転送の時間に加えて、データを受信時のECC検出処理とECC訂正処理に必要となる処理時間が加算した値によって決まる。また、ホストからの書込みリクエスト処理時間は、不揮発性メモリへのデータ転送とデータの書込みにかかるビジー時間に加えて、ECC生成処理に必要となる処理時間を加算した値によって決まる。不揮発性メモリコントローラは、ホストコンピュータから受信したコマンドを1つの不揮発性メモリに対して順次処理する。読出しコマンドに続いて、書込みコマンドが発行された場合には、読出しリクエスト処理時間と書込み処理時間を加えたものとなる。
不揮発性メモリに対して、読出しコマンドと書込みコマンドが連続して発生した場合、両コマンドが順次処理されることから、ECC検出処理とECC訂正処理が完了し、読出しデータの転送が完了するまでは、次の書込みコマンドを受信することはできない。読出しデータの転送を完了し、書込みコマンドとデータを受信した後にECC生成処理を行うため、不揮発性メモリからの読出しによるデータ転送後、不揮発性メモリへの書込みデータの転送が開始するまで、データが転送されない待ち時間が発生する。この待ち時間はホストコンピュータから見た不揮発性記憶装置のパフォーマンスの低下となり、本来高速な不揮発性メモリの性能を発揮できないことになる。これに対し、このように複数のコマンドが発生した際に、各コマンドを並び換えて、読出しと書込みの切換えが発生することを抑制することにより、パフォーマンスの低下を防ぐシステムが提案されている(例えば、特許文献1参照。)。
特開2009−157886号公報
上述の従来技術では、各コマンドを並び換えることにより、読出しと書込みの切換えを抑止することができる。しかしながら、コマンドを並び換えるためには複数のコマンドを受信した後に並び換えが可能なコマンドであるか否かを判断する処理とその判断に従ってコマンドを並び替える処理を行ってから不揮発性メモリへのアクセスを開始する必要がある。そのため、そのような処理自体が不揮発性メモリに対するアクセスの開始タイミングを遅らせる要因になる。
本技術はこのような状況に鑑みて生み出されたものであり、コマンドを並び換えることなくメモリアクセスの待ち時間を抑制することを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、コンピュータからのコマンドに基づいてメモリに対するリクエストをそれぞれ独立して生成する複数のメモリ制御部と、上記複数のメモリ制御部からの接続要求に応じて上記複数のメモリ制御部のいずれかと上記メモリとを接続して上記リクエストを上記メモリに出力する接続切換部とを具備するメモリコントローラである。これにより、複数のリクエストを独立して処理することによりメモリアクセスの待ち時間を抑制するという作用をもたらす。
また、この第1の側面において、上記複数のメモリ制御部の各々は、上記メモリに対して上記リクエストとしてリードリクエストを生成するリード制御部と、上記メモリから上記リードリクエストに対するリードデータを受信するリードデータ受信部とを備えるようにしてもよい。また、この場合において、上記複数のメモリ制御部の各々は、上記リードデータに対して所定のデータ処理を施すリードデータ処理部をさらに備えるようにしてもよい。
また、この場合において、上記リードデータ処理部は、上記所定のデータ処理として、上記リードデータのエラー検出訂正処理を行うようにしてもよく、また、上記リードデータの復号処理を行うようにしてもよい。
また、この第1の側面において、上記複数のメモリ制御部の各々は、上記メモリに対して上記リクエストとしてライトリクエストを生成するライト制御部と、上記メモリに対して上記ライトリクエストに係るライトデータを送信するライトデータ送信部とを備えるようにしてもよい。また、この場合において、上記複数のメモリ制御部の各々は、上記ライトデータに対して所定のデータ処理を施すライトデータ処理部をさらに備えるようにしてもよい。
また、この場合において、上記ライトデータ処理部は、上記所定のデータ処理として、上記ライトデータのエラー訂正コードを生成するようにしてもよく、また、上記ライトデータの暗号化処理を行うようにしてもよい。
また、この第1の側面において、上記複数のメモリ制御部の各々は、上記メモリに対して上記リクエストとしてリードリクエストを生成するリード制御部、および、上記メモリから上記リードリクエストに対するリードデータを受信するリードデータ受信部と、上記メモリに対して上記リクエストとしてライトリクエストを生成するライト制御部、および、上記メモリに対して上記ライトリクエストに係るライトデータを送信するライトデータ送信部とのいずれか一方のみを備えるようにしてもよい。
また、本技術の第2の側面は、メモリと、コンピュータからのコマンドに基づいて上記メモリに対するリクエストをそれぞれ独立して生成する複数のメモリ制御部と、上記複数のメモリ制御部からの接続要求に応じて上記複数のメモリ制御部のいずれかと上記メモリとを接続して上記リクエストを上記メモリに出力する接続切換部とを具備するメモリシステムである。これにより、メモリに対するリクエストを独立して処理することによりメモリアクセスの待ち時間を抑制するという作用をもたらす。
また、本技術の第3の側面は、メモリと、コンピュータと、上記コンピュータからのコマンドに基づいて上記メモリに対するリクエストをそれぞれ独立して生成する複数のメモリ制御部と、上記複数のメモリ制御部からの接続要求に応じて上記複数のメモリ制御部のいずれかと上記メモリとを接続して上記リクエストを上記メモリに出力する接続切換部とを具備する情報処理システムである。これにより、コンピュータからメモリに対するリクエストを独立して処理することによりメモリアクセスの待ち時間を抑制するという作用をもたらす。
本技術によれば、コマンドを並び換えることなくメモリアクセスの待ち時間を抑制することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の実施の形態における情報処理システムの一構成例を示す図である。 本技術の第1の実施の形態におけるメモリコントローラ200の一構成例を示す図である。 本技術の第1の実施の形態におけるメモリ制御エンジン201の信号線の一例を示す図である。 本技術の第1の実施の形態におけるメモリ制御部250の構成例を示す図である。 本技術の第1の実施の形態におけるストレージインターフェース制御部210の処理手順例を示す流れ図である。 本技術の第1の実施の形態におけるメモリ制御エンジン201の処理手順例を示す流れ図である。 本技術の第1の実施の形態におけるメモリコントローラ200の動作タイミング例を示す図である。 本技術の第1の実施の形態における接続切換部260の構成例を示す図である。 本技術の第1の実施の形態における接続切換部260の処理手順例を示す流れ図である。 本技術の第1の実施の形態における接続切換部260の第1の動作タイミング例を示す図である。 本技術の第1の実施の形態における接続切換部260の第2の動作タイミング例を示す図である。 本技術の第2の実施の形態におけるメモリ制御エンジン201の構成例を示す図である。 本技術の第2の実施の形態におけるメモリリード制御部280−1の構成例を示す図である。 本技術の第2の実施の形態におけるメモリライト制御部280−2の構成例を示す図である。 本技術の第2の実施の形態におけるストレージインターフェース制御部210の第1の処理手順例を示す流れ図である。 本技術の第2の実施の形態におけるストレージインターフェース制御部210の第2の処理手順例を示す流れ図である。 本技術の第2の実施の形態における接続切換部260の処理手順例を示す流れ図である。 本技術の第3の実施の形態におけるメモリ制御エンジン201の構成例を示す図である。 本技術の第4の実施の形態におけるメモリ制御エンジン202の構成例を示す図である。 本技術の第4の実施の形態における接続切換部260の処理手順例を示す流れ図の前半である。 本技術の第4の実施の形態における接続切換部260の処理手順例を示す流れ図の後半である。 本技術の第4の実施の形態における接続切換部260の動作タイミング例を示す図である。 本技術の第5の実施の形態におけるメモリ制御部250の構成例を示す図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(2つのメモリコントローラを設けた例)
2.第2の実施の形態(リード制御専用およびライト制御専用のメモリコントローラを設けた例)
3.第3の実施の形態(3つ以上のメモリコントローラを設けた例)
4.第4の実施の形態(複数のメモリダイを前提とした例)
5.第5の実施の形態(暗号化および復号処理をメモリコントローラにおいて行う例)
<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)を想定する。
[メモリコントローラの構成]
図2は、本技術の第1の実施の形態におけるメモリコントローラ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に対するリクエスト制御を行うものである。
この第1の実施の形態では、メモリ制御エンジン201は、2つのメモリ制御部250−1および250−2と、接続切換部260と、メモリインターフェース制御部270とを備えている。
メモリ制御部250−1および250−2(以下、メモリ制御部250と総称する場合がある。)は、各々が独立してメモリ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)信号線、および、ビジーステータス(Busy/Status)信号線を含む。また、接続切換部260とメモリインターフェース制御部270との間の信号線279は、リクエストアドレス(Req/Adr)信号線、データ(Data)信号線、および、ステータス(Status)信号線を含む。
ストレージインターフェース制御部210は、ホストコンピュータ100から発行されたコマンドを、2つのメモリ制御部250−1および250−2に対して交互に供給する。メモリ制御部250の各々は、ホストコンピュータ100から発行されたコマンドを受け取り、それぞれ独立してメモリ300に対するリクエストを生成して制御を行う。これにより、メモリ制御部250を並行して動作させて、メモリインターフェース制御部270上で待ち時間が発生することを抑止することができる。
図4は、本技術の第1の実施の形態におけるメモリ制御部250の構成例を示す図である。メモリ制御部250の各々は、デコーダ251と、メモリリクエストアドレス送信部252とを備える。また、このメモリ制御部250の各々は、バスデータ受信部253と、ECC生成部254と、メモリデータ送信部255と、メモリデータ受信部256と、エラー検出訂正部257と、バスデータ送信部258とを備える。
デコーダ251は、ホストコンピュータ100から発行されたコマンドを解釈するデコーダである。メモリリクエストアドレス送信部252は、デコーダ251によるデコード結果に従って、メモリ300に対してリクエストおよびアドレスを送信するものである。このメモリリクエストアドレス送信部252は、リクエストおよびアドレスを送信する際に、これに先立って接続切換部260に対して接続要求を出力する。なお、メモリリクエストアドレス送信部252は、特許請求の範囲に記載のリード制御部およびライト制御部の一例である。
バスデータ受信部253は、I/Oバス220からライトデータを受信するものである。ECC生成部254は、バスデータ受信部253が受信したライトデータについてECC(エラー訂正コード:Error Correcting Code)を生成するものである。なお、ECC生成部254は、特許請求の範囲に記載のライトデータ処理部の一例である。
メモリデータ送信部255は、ライトデータおよびECCをメモリ300に送信するものである。なお、メモリデータ送信部255は、特許請求の範囲に記載のライトデータ送信部の一例である。
メモリデータ受信部256は、メモリ300から読み出したリードデータおよびECCを受信するものである。エラー検出訂正部257は、メモリデータ受信部256が受信したリードデータについて、ECCによるエラー検出およびエラー訂正を行うものである。バスデータ送信部258は、エラー検出訂正部257から出力されたリードデータをI/Oバス220に送信するものである。なお、メモリデータ受信部256は、特許請求の範囲に記載のリードデータ受信部の一例である。なお、エラー検出訂正部257は、特許請求の範囲に記載のリードデータ処理部の一例である。
[メモリコントローラの動作]
図5は、本技術の第1の実施の形態におけるストレージインターフェース制御部210の処理手順例を示す流れ図である。ここで、ストレージインターフェース制御部210は、ホストコンピュータ100から受け取ったコマンドを保持するためのFIFO(First-In First-Out)のコマンドキューを1つ備えるものとする。すなわち、リードコマンドおよびライトコマンドが、受信された順番でコマンドキューに保持され、先に受信されたコマンドから順番に取り出される。
ストレージインターフェース制御部210は、コマンドキューが空(エンプティ)であれば、そのまま待機する(ステップS811:Yes)。コマンドキューが空でなければ(ステップS811:No)、ストレージインターフェース制御部210はコマンドキューから先頭のコマンドを取得する(ステップS812)。そして、メモリ制御部#1(250−1)が次のコマンドを受信できる状態になると(ステップS813:Yes)、ストレージインターフェース制御部210はメモリ制御部#1(250−1)にコマンドを送信する(ステップS814)。
その後、ストレージインターフェース制御部210は、コマンドキューが空であれば、そのまま待機する(ステップS815:Yes)。コマンドキューが空でなければ(ステップS815:No)、ストレージインターフェース制御部210はコマンドキューから先頭のコマンドを取得する(ステップS816)。そして、メモリ制御部#2(250−2)が次のコマンドを受信できる状態になると(ステップS817:Yes)、ストレージインターフェース制御部210はメモリ制御部#2(250−2)にコマンドを送信する(ステップS818)。
図6は、本技術の第1の実施の形態におけるメモリ制御エンジン201の処理手順例を示す流れ図である。
メモリ制御部250のデコーダ251は、ホストコンピュータ100から発行されたコマンドをI/Oバス220を介して受信して(ステップS911)、そのコマンドをデコードする(ステップS912)。その結果、リードコマンドであればステップS922以降の処理を実行し(ステップS913:Yes)、ライトコマンドであればステップS914以降の処理を実行する(ステップS913:No)。
デコードされたコマンドがライトコマンドであれば(ステップS913:No)、バスデータ受信部253がライトデータを受信する(ステップS914)。また、ECC生成部254がライトデータのECCを生成する(ステップS915)。そして、メモリリクエストアドレス送信部252が接続切換部260に対して接続要求を送信する(ステップS916)。その後、メモリ制御部250は、接続切換部260からのビジー信号を待機する(ステップS917)。このビジー信号は、メモリ300との間の接続が完了して、メモリ300との転送が可能となったことを意味する。
接続切換部260からビジー信号が出力されると(ステップS917:No)、メモリリクエストアドレス送信部252は接続切換部260を介してライトリクエストおよびアドレスを送信する(ステップS918)。また、メモリデータ送信部255は接続切換部260を介してライトデータを送信する(ステップS919)。その後、ステータス受信を待って(ステップS920)、その結果をI/Oバス220に出力する(ステップS921)。
デコードされたコマンドがリードコマンドであれば(ステップS913:Yes)、メモリリクエストアドレス送信部252が接続切換部260に対して接続要求を送信する(ステップS922)。その後、メモリ制御部250は、接続切換部260からのビジー信号を待機する(ステップS923)。
接続切換部260からビジー信号が出力されると(ステップS923:No)、メモリリクエストアドレス送信部252は接続切換部260を介してリードリクエストおよびアドレスを送信する(ステップS924)。その結果、メモリデータ受信部256が接続切換部260を介してリードデータおよびECCを受信する(ステップS925)。
そして、エラー検出訂正部257が、ECCによってリードデータのエラー検出を行う(ステップS926)。その結果、エラーが検出されると(ステップS927:Yes)、エラー検出訂正部257がECCによってリードデータのエラー訂正を行う(ステップS928)。エラーが検出されなければ(ステップS927:No)、エラー訂正は不要である。そして、バスデータ送信部258がエラー検出訂正部257から出力されたリードデータをI/Oバス220に出力する(ステップS929)。
図7は、本技術の第1の実施の形態におけるメモリコントローラ200の動作タイミング例を示す図である。図7におけるaはリードコマンド受信時の動作例であり、上述の流れ図のステップS922乃至S929の処理を示している。図7におけるbはライトコマンド受信時の動作例であり、上述の流れ図のステップS914乃至S921の処理を示している。
[接続切換部]
図8は、本技術の第1の実施の形態における接続切換部260の構成例を示す図である。この接続切換部260は、接続判断部261と、スイッチ262と、リクエストアドレス受信部263−1および263−2(以下、リクエストアドレス受信部263と総称する場合がある。)と、メモリリクエストアドレス送信部264とを備える。また、この接続切換部260は、データ受信部265−1および265−2(以下、データ受信部265と総称する場合がある。)と、メモリデータ送信部266とを備える。また、この接続切換部260は、メモリデータ受信部267と、データ送信部268−1および268−2(以下、データ送信部268と総称する場合がある。)とを備える。
接続判断部261は、メモリ制御部250からの接続要求を受けて、いずれのメモリ制御部250を接続すべきかを判断するものである。スイッチ262は、接続判断部261による判断結果に従って、メモリ制御部250のいずれかをメモリ300側に接続するスイッチである。具体的には、リクエストアドレス受信部263のいずれかをメモリリクエストアドレス送信部264に接続し、データ受信部265のいずれかをメモリデータ送信部266に接続し、データ送信部268のいずれかをメモリデータ受信部267に接続する。
リクエストアドレス受信部263は、メモリ制御部250からのリクエストおよびアドレスを受信するものである。メモリリクエストアドレス送信部264は、リクエストおよびアドレスをメモリ300側に送信するものである。
データ受信部265は、メモリ制御部250からのライトデータを受信するものである。メモリデータ送信部266は、ライトデータをメモリ300側に送信するものである。
メモリデータ受信部267は、メモリ300からのリードデータを受信するものである。データ送信部268は、リードデータをメモリ制御部250に送信するものである。
図9は、本技術の第1の実施の形態における接続切換部260の処理手順例を示す流れ図である。
まず、接続判断部261がメモリ制御部250−1からの接続要求を受信したと判断すると(ステップS931:Yes)、スイッチ262をメモリ制御部250−1側に切り換える。これにより、メモリ制御部250−1からリクエストアドレス受信部263−1が受信したリクエストおよびアドレスを、メモリリクエストアドレス送信部264からメモリインターフェース制御部270に送信する(ステップS932)。
メモリ制御部250−1からのリクエストがリードリクエストであれば(ステップS933:Yes)、リードビジーの完了を待つ(ステップS937)。その後、メモリインターフェース制御部270から送信されたリードデータをメモリデータ受信部267によって受信して、データ送信部268−1を介してメモリ制御部250−1に送信する(ステップS938)。
メモリ制御部250−1からのリクエストがライトリクエストであれば(ステップS933:No)、メモリ制御部250−1から送信されたライトデータをデータ受信部265−1によって受信する。そして、そのライトデータを、メモリデータ送信部266を介してメモリインターフェース制御部270に送信する(ステップS934)。そして、メモリインターフェース制御部270からのステータス受信待ちとなる(ステップS935)。その後、メモリインターフェース制御部270からステータスを受信すると、接続判断部261はメモリ制御部250−1にそのステータスを送信する(ステップS936)。
次に、接続判断部261がメモリ制御部250−2からの接続要求を受信したと判断すると(ステップS941:Yes)、スイッチ262をメモリ制御部250−2側に切り換える。これにより、メモリ制御部250−2からリクエストアドレス受信部263−2が受信したリクエストおよびアドレスを、メモリリクエストアドレス送信部264からメモリインターフェース制御部270に送信する(ステップS942)。
メモリ制御部250−2からのリクエストがリードリクエストであれば(ステップS943:Yes)、リードビジーの完了を待つ(ステップS947)。その後、メモリインターフェース制御部270から送信されたリードデータをメモリデータ受信部267によって受信して、データ送信部268−2を介してメモリ制御部250−2に送信する(ステップS948)。
メモリ制御部250−2からのリクエストがライトリクエストであれば(ステップS943:No)、メモリ制御部250−2から送信されたライトデータをデータ受信部265−2によって受信する。そして、そのライトデータを、メモリデータ送信部266を介してメモリインターフェース制御部270に送信する(ステップS944)。そして、メモリインターフェース制御部270からのステータス受信待ちとなる(ステップS945)。その後、メモリインターフェース制御部270からステータスを受信すると、接続判断部261はメモリ制御部250−2にそのステータスを送信する(ステップS946)。
図10は、本技術の第1の実施の形態における接続切換部260の第1の動作タイミング例を示す図である。これは、先行するコマンドがリードコマンドで、後続のコマンドがライトコマンドである場合の例である。
先行するリードコマンドは、メモリ制御部250−1によって処理される。メモリインターフェース制御部270から受信したリードデータは、ECCによるエラー検出訂正の対象となり、I/Oバス220に出力される。
後続のライトコマンドは、メモリ制御部250−2によって処理される。I/Oバス220から入力されたライトデータについてECCが生成され、メモリインターフェース制御部270に送信される。その後、ステータスがメモリ制御部250−2を介してI/Oバス220に出力される。
メモリ制御部250−1で行われるエラー検出処理およびエラー訂正処理はメモリ制御部250−2の動作で行われるECC生成処理とは独立に処理されるため、接続切換部260は、メモリインターフェース制御部270上で衝突が起こらないように調整を行う。具体的には、メモリ制御部250−1がメモリ300から読み出したデータを転送している間は、メモリ制御部250−2からの接続要求を受信してもリードデータの転送が完了するまでは接続を維持する。その間、メモリ制御部250−2は、接続切換部260が切り換えられるまでデータを送信しない。そして、メモリ制御部250−1の転送が終わり次第、接続切換部260はメモリ制御部250−2からの接続要求に従って接続を切り換えて、メモリ制御部250−2でECC符号の準備されたライトデータの転送を開始する。これにより、リードリクエストおよびライトリクエストが連続した場合にも、メモリインターフェース制御部270上で待ち時間が発生することがなく、高速なメモリシステムを実現することができる。
同図の中央部分において、メモリ制御部250−1のリードビジーとメモリ制御部250−2のライトビジーが重なり、処理が高速化される。メモリインターフェース制御部270では、ビジー時間を除けば待ち時間が無くなり、データ転送の効率が改善されることがわかる。
図11は、本技術の第1の実施の形態における接続切換部260の第2の動作タイミング例を示す図である。これは、先行するコマンドがリードコマンドで、後続のコマンドもリードコマンドである場合の例である。
先行するリードコマンドは、メモリ制御部250−1によって処理される。メモリインターフェース制御部270から受信したリードデータは、ECCによるエラー検出訂正の対象となり、I/Oバス220に出力される。
後続のリードコマンドは、メモリ制御部250−2によって処理される。同様に、メモリインターフェース制御部270から受信したリードデータは、ECCによるエラー検出訂正の対象となり、I/Oバス220に出力される。
この例では、先行するリードコマンドについてリードデータのエラー検出訂正が行われている間に、後続のリードコマンドについてリードデータのアクセスが行われる。したがって、そのオーバラップした期間について処理が高速化される。
このように、本技術の第1の実施の形態によれば、独立して動作する2つのメモリ制御部250を設けることにより、メモリインターフェース制御部270上の待ち時間を解消して、メモリ300のランダムアクセス速度を改善することができる。
<2.第2の実施の形態>
上述の第1の実施の形態では、2つのメモリ制御部を設けていたが、両者の機能をそれぞれリードコマンドとライトコマンドとに特化した構成にすることにより、それぞれの回路規模を縮小することができる。そこで、第2の実施の形態では、メモリリード制御部とメモリライト制御部を設けた例について説明する。なお、情報処理システム全体としては第1の実施の形態と同様であるため、説明を省略する。
[メモリコントローラの構成]
図12は、本技術の第2の実施の形態におけるメモリ制御エンジン201の構成例を示す図である。この第2の実施の形態におけるメモリ制御エンジン201は、第1の実施の形態におけるメモリ制御部250−1および250−2を、それぞれメモリリード制御部280−1およびメモリライト制御部280−2に置換したものである。
メモリリード制御部280−1は、リードコマンドについてメモリ300に対するリクエスト制御を行うものである。メモリライト制御部280−2は、ライトコマンドについてメモリ300に対するリクエスト制御を行うものである。
なお、メモリリード制御部280−1およびメモリライト制御部280−2は、特許請求の範囲に記載のメモリ制御部の一例である。
図13は、本技術の第2の実施の形態におけるメモリリード制御部280−1の構成例を示す図である。このメモリリード制御部280−1は、デコーダ281−1と、メモリリクエストアドレス送信部282−1と、メモリデータ受信部286−1と、エラー検出訂正部287−1と、バスデータ送信部288−1とを備える。
このメモリリード制御部280−1における各部は、第1の実施の形態におけるデコーダ251、メモリリクエストアドレス送信部252、メモリデータ受信部256、エラー検出訂正部257、および、バスデータ送信部258と同様の機能を有する。
図14は、本技術の第2の実施の形態におけるメモリライト制御部280−2の構成例を示す図である。このメモリライト制御部280−2は、デコーダ281−2と、メモリリクエストアドレス送信部282−2と、バスデータ受信部283−2と、ECC生成部284−2と、メモリデータ送信部285−2とを備える。
このメモリライト制御部280−2における各部は、第1の実施の形態におけるデコーダ251、メモリリクエストアドレス送信部252、バスデータ受信部253、ECC生成部254、および、メモリデータ送信部255と同様の機能を有する。
[メモリコントローラの動作]
この第2の実施の形態では、ホストコンピュータ100から発行されたコマンドがリードコマンドであればメモリリード制御部280−1が、ライトコマンドであればメモリライト制御部280−2が、それぞれメモリ300に対するリクエスト制御を行う。それ以外の点は第1の実施の形態と同様であるため、詳細な説明を省略する。
図15は、本技術の第2の実施の形態におけるストレージインターフェース制御部210の第1の処理手順例を示す流れ図である。この第1の処理手順例では、ストレージインターフェース制御部210は、ホストコンピュータ100から受け取ったコマンドを保持するためのFIFOのコマンドキューを1つ備えるものとする。すなわち、リードコマンドおよびライトコマンドが、受信された順番でコマンドキューに保持され、先に受信されたコマンドから順番に取り出される。
ストレージインターフェース制御部210は、コマンドキューが空(エンプティ)であれば、そのまま待機する(ステップS821:Yes)。コマンドキューが空でなければ(ステップS821:No)、ストレージインターフェース制御部210はコマンドキューから先頭のコマンドを取得する(ステップS822)。
取得されたコマンドがリードコマンドである場合(ステップS823:Yes)、メモリリード制御部280−1が次のコマンドを受信できる状態になると(ステップS824:Yes)、ストレージインターフェース制御部210はメモリリード制御部280−1にコマンドを送信する(ステップS825)。取得されたコマンドがライトコマンドである場合(ステップS823:No)、メモリライト制御部280−2が次のコマンドを受信できる状態になると(ステップS826:Yes)、ストレージインターフェース制御部210はメモリライト制御部280−2にコマンドを送信する(ステップS827)。
図16は、本技術の第2の実施の形態におけるストレージインターフェース制御部210の第2の処理手順例を示す流れ図である。この第2の処理手順例では、ストレージインターフェース制御部210は、ホストコンピュータ100から受け取ったコマンドを保持するためのFIFOのコマンドキューとして、リードコマンドキューとライトコマンドキューの2つを備えるものとする。すなわち、リードコマンドが、受信された順番でリードコマンドキューに保持され、先に受信されたリードコマンドから順番に取り出される。また、ライトコマンドが、受信された順番でライトコマンドキューに保持され、先に受信されたライトコマンドから順番に取り出される。
リードコマンドキューが空でなく(ステップS831:No)、メモリリード制御部280−1が次のコマンドを受信できる状態であれば(ステップS832:Yes)、ストレージインターフェース制御部210はリードコマンドを送信する。すなわち、ストレージインターフェース制御部210は、リードコマンドキューから先頭のリードコマンドを取得して(ステップS833)、メモリリード制御部280−1にリードコマンドを送信する(ステップS834)。
次に、ライトコマンドキューが空でなく(ステップS835:No)、メモリライト制御部280−2が次のコマンドを受信できる状態であれば(ステップS836:Yes)、ストレージインターフェース制御部210はライトコマンドを送信する。すなわち、ストレージインターフェース制御部210は、ライトコマンドキューから先頭のライトコマンドを取得して(ステップS837)、メモリライト制御部280−2にライトコマンドを送信する(ステップS838)。
図17は、本技術の第2の実施の形態における接続切換部260の処理手順例を示す流れ図である。
まず、接続判断部261がメモリリード制御部280−1からの接続要求を受信したと判断すると(ステップS951:Yes)、スイッチ262をメモリリード制御部280−1側に切り換える。これにより、メモリリード制御部280−1からリクエストアドレス受信部263−1が受信したリクエストおよびアドレスを、メモリリクエストアドレス送信部264からメモリインターフェース制御部270に送信する(ステップS952)。
この場合、リードリクエストであるため、リードビジーの完了を待つ(ステップS953)。その後、メモリインターフェース制御部270から送信されたリードデータをメモリデータ受信部267によって受信して、データ送信部268−1を介してメモリリード制御部280−1に送信する(ステップS954)。
次に、接続判断部261がメモリライト制御部280−2からの接続要求を受信したと判断すると(ステップS955:Yes)、スイッチ262をメモリライト制御部280−2側に切り換える。これにより、メモリライト制御部280−2からリクエストアドレス受信部263−2が受信したリクエストおよびアドレスを、メモリリクエストアドレス送信部264からメモリインターフェース制御部270に送信する(ステップS956)。
この場合、ライトリクエストであるため、メモリライト制御部280−2から送信されたライトデータをデータ受信部265−2によって受信する。そして、そのライトデータを、メモリデータ送信部266を介してメモリインターフェース制御部270に送信する(ステップS957)。そして、メモリインターフェース制御部270からのステータス受信待ちとなる(ステップS958)。その後、メモリインターフェース制御部270からステータスを受信すると、接続判断部261はメモリライト制御部280−2にそのステータスを送信する(ステップS959)。
このように、本技術の第2の実施の形態によれば、メモリリード制御部280−1およびメモリライト制御部280−2を設けたことにより、回路規模を縮小させながら、メモリ300のランダムアクセス速度を改善することができる。
<3.第3の実施の形態>
上述の第1の実施の形態では、2つのメモリ制御部を設けていたが、メモリ制御部の数は3以上であってもよい。以下では、メモリ制御部を3つ以上設けた例について説明する。なお、情報処理システム全体としては第1の実施の形態と同様であるため、説明を省略する。
[メモリコントローラの構成]
図18は、本技術の第3の実施の形態におけるメモリ制御エンジン201の構成例を示す図である。この第3の実施の形態におけるメモリ制御エンジン201は、n個(nは3以上の整数)のメモリ制御部250を備え、それぞれが接続切換部260に接続する。このような構成は、メモリ制御部250における処理に要する処理時間の影響が大きい場合に特に有効である。
このように、本技術の第3の実施の形態によれば、メモリ制御部250を3つ以上設けることにより、メモリ300のランダムアクセス速度をさらに改善することができる。
<4.第4の実施の形態>
メモリにおいて、特に不揮発性メモリの書込み時間は、読出し時間の数倍遅くなる傾向がある。そこで、第4の実施の形態では、複数の不揮発性メモリ(ダイまたはチップ等)毎に独立して並行に書込みを行うように制御することにより書込み性能を改善する。なお、情報処理システム全体としては第1の実施の形態と同様であるため、説明を省略する。
[メモリコントローラの構成]
図19は、本技術の第4の実施の形態におけるメモリ制御エンジン202の構成例を示す図である。この第4の実施の形態におけるメモリ制御エンジン202は、2つのメモリダイ301および302と信号線309を介して接続する。メモリダイ301および302のいずれにアクセスするかは、メモリインターフェース制御部270からのチップセレクト信号CS1およびCS2により指示される。
この第4の実施の形態におけるメモリ制御部290−1および290−2(以下、メモリ制御部290と総称する場合がある。)の各々は、メモリダイ301および302に対して並行して書込みリクエスト制御を行うことができる。すなわち、第1の書込みリクエストをメモリダイ301および302の一方に対して実行した後に、接続切換部260に対する要求信号を終了し、直ちに第2の書込みリクエストをメモリダイ301および302の他方に対して実行可能である。
そのために、メモリ制御部290は、メモリインターフェース制御部270からのBusy/Status信号を、メモリダイ301および302の各々について受信して管理するようになっている。メモリ制御部290は、書込みの完了を示すステータス情報をメモリダイ301および302から受信した際には、書込みビジー情報をクリアする。書込みビジー状態であるメモリダイ301および302に対しては、次の書込みリクエストを送信しない。また、メモリ制御部290は、書込みビジー状態であるメモリダイ301および302に対してステータス情報を確認するため、接続切換部260に接続要求を出力し、ステータス情報を確認後、その接続要求を停止する。
なお、メモリダイ301および302は、特許請求の範囲に記載のメモリの一例である。
[メモリコントローラの動作]
図20および図21は、本技術の第4の実施の形態における接続切換部260の処理手順例を示す流れ図である。なお、同図において、「Die[i][d]」は、メモリ制御部#iがメモリダイ#dにリクエストおよびアドレスを送信した場合のビジー信号である。これにより、接続切換部260はメモリダイ301または302からのステータス信号を、正しいメモリ制御部290に返すことができる。
接続切換部260は、メモリインターフェース制御部270を介してメモリダイ301または302からステータスを受信すると(ステップS961:Yes)、ダイ番号dを確認する(ステップS962)。メモリ制御部#1(290−1)からの送信によってダイ番号dのメモリダイがビジーとなっていれば(ステップS963:Yes)、そのビジーをクリアして(ステップS964)、メモリインターフェース制御部270からのステータスをメモリ制御部#1(290−1)に送信する(ステップS965)。メモリ制御部#2(290−2)からの送信によってダイ番号dのメモリダイがビジーとなっていれば(ステップS966:Yes)、そのビジーをクリアして(ステップS967)、メモリインターフェース制御部270からのステータスをメモリ制御部#2(290−2)に送信する(ステップS968)。なお、メモリダイ301および302からステータスを受信しない場合には(ステップS961:No)、これらの処理は行われない。
その後、接続判断部261がメモリ制御部#1(290−1)からの接続要求を受信したと判断すると(ステップS971:Yes)、ダイ番号dを確認する(ステップS972)。メモリ制御部#2(290−2)からの送信によってダイ番号dのメモリダイがビジーとなっていなければ(ステップS973:No)、スイッチ262をメモリ制御部290−1側に切り換える。これにより、メモリ制御部290−1からリクエストアドレス受信部263−1が受信したリクエストおよびアドレスを、メモリリクエストアドレス送信部264からメモリインターフェース制御部270に送信する(ステップS974)。なお、メモリ制御部#1(290−1)からの送信によってダイ番号dのメモリダイがビジーとなっている状態では、メモリ制御部#1(290−1)から次の接続要求は送信されないため、ここではメモリ制御部#1(290−1)からの送信は考慮しないでよい。
メモリ制御部#1(290−1)からのリクエストがリードリクエストであれば(ステップS975:Yes)、リードビジーの完了を待つ(ステップS978)。その後、メモリインターフェース制御部270から送信されたリードデータをメモリデータ受信部267によって受信して、データ送信部268−1を介してメモリ制御部#1(290−1)に送信する(ステップS979)。
メモリ制御部#1(290−1)からのリクエストがライトリクエストであれば(ステップS975:No)、メモリ制御部290−1から送信されたライトデータをデータ受信部265−1によって受信する。そして、そのライトデータを、メモリデータ送信部266を介してメモリインターフェース制御部270に送信する(ステップS976)。そして、メモリ制御部#1(290−1)からの送信によるダイ番号dのメモリダイをビジーにセットする(ステップS977)。なお、ダイ番号dのメモリダイが元々ビジーであった場合には(ステップS973:Yes)、これらステップS974乃至S979の処理は行われない。
次に、接続切換部260は、メモリインターフェース制御部270を介してメモリダイ301または302からステータスを受信すると(ステップS981:Yes)、ダイ番号dを確認する(ステップS982)。メモリ制御部#1(290−1)からの送信によってダイ番号dのメモリダイがビジーとなっていれば(ステップS983:Yes)、そのビジーをクリアして(ステップS984)、メモリインターフェース制御部270からのステータスをメモリ制御部#1(290−1)に送信する(ステップS985)。メモリ制御部#2(290−2)からの送信によってダイ番号dのメモリダイがビジーとなっていれば(ステップS986:Yes)、そのビジーをクリアして(ステップS987)、メモリインターフェース制御部270からのステータスをメモリ制御部#2(290−2)に送信する(ステップS988)。なお、メモリダイ301および302からステータスを受信しない場合には(ステップS981:No)、これらの処理は行われない。
その後、接続判断部261がメモリ制御部#2(290−2)からの接続要求を受信したと判断すると(ステップS991:Yes)、ダイ番号dを確認する(ステップS992)。メモリ制御部#1(290−1)からの送信によってダイ番号dのメモリダイがビジーとなっていなければ(ステップS993:No)、スイッチ262をメモリ制御部290−2側に切り換える。これにより、メモリ制御部#2(290−2)からリクエストアドレス受信部263−2が受信したリクエストおよびアドレスを、メモリリクエストアドレス送信部264からメモリインターフェース制御部270に送信する(ステップS994)。なお、メモリ制御部#2(290−2)からの送信によってダイ番号dのメモリダイがビジーとなっている状態では、メモリ制御部#2(290−2)から次の接続要求は送信されないため、ここではメモリ制御部#2(290−2)からの送信は考慮しないでよい。
メモリ制御部#2(290−2)からのリクエストがリードリクエストであれば(ステップS995:Yes)、リードビジーの完了を待つ(ステップS998)。その後、メモリインターフェース制御部270から送信されたリードデータをメモリデータ受信部267によって受信して、データ送信部268−2を介してメモリ制御部#2(290−2)に送信する(ステップS999)。
メモリ制御部#2(290−2)からのリクエストがライトリクエストであれば(ステップS995:No)、メモリ制御部#2(290−2)から送信されたライトデータをデータ受信部265−2によって受信する。そして、そのライトデータを、メモリデータ送信部266を介してメモリインターフェース制御部270に送信する(ステップS996)。そして、メモリ制御部#2(290−2)からの送信によるダイ番号dのメモリダイをビジーにセットする(ステップS997)。なお、ダイ番号dのメモリダイが元々ビジーであった場合には(ステップS993:Yes)、これらステップS994乃至S999の処理は行われない。
図22は、本技術の第4の実施の形態における接続切換部260の動作タイミング例を示す図である。これは、先行するコマンドがライトコマンドでメモリダイ301に対する書込みであり、後続のコマンドはライトコマンドでメモリダイ302に対する書込みである場合の例である。
先行するライトコマンドは、メモリ制御部290−1によって処理される。I/Oバス220から入力されたライトデータについてECCが生成され、メモリインターフェース制御部270からメモリダイ301に送信される。その後、メモリダイ301からのステータスがメモリ制御部290−1を介してI/Oバス220に出力される。
後続のライトコマンドは、メモリ制御部290−2によって処理される。I/Oバス220から入力されたライトデータについてECCが生成され、メモリインターフェース制御部270からメモリダイ302に送信される。その後、メモリダイ302からのステータスがメモリ制御部290−2を介してI/Oバス220に出力される。
このように、本技術の第4の実施の形態によれば、2つのメモリダイ301および302に対して独立して並行に書込みを行うことにより、書込み性能を改善することができる。また、書込みビジーの時間を利用して読出し処理を行うことにより、読出し性能も改善することができる。
<5.第5の実施の形態>
上述の第1乃至第4の実施の形態では、メモリ制御部におけるデータ処理としてECC生成処理およびECCによるエラー検出訂正処理を行う例について説明した。この第5の実施の形態では、他のデータ処理の例として、暗号化および復号処理を行う例について説明する。なお、情報処理システム全体としては第1の実施の形態と同様であるため、説明を省略する。
図23は、本技術の第5の実施の形態におけるメモリ制御部250の構成例を示す図である。この第5の実施の形態におけるメモリ制御部250は、第1の実施の形態におけるECC生成部254に代えて暗号化部259−1を備える。また、第1の実施の形態におけるエラー検出訂正部257に代えて復号化部259−2を備える。
暗号化部259−1は、バスデータ受信部253が受信したライトデータについて暗号化処理を行うものである。なお、暗号化部259−1は、特許請求の範囲に記載のライトデータ処理部の一例である。
復号化部259−2は、メモリ300から読み出した暗号化されたリードデータを復号化するものである。これにより、メモリ300に記憶されるデータは暗号化されたものとなり、セキュリティを向上させることができる。なお、復号化部259−2は、特許請求の範囲に記載のリードデータ処理部の一例である。
このように、本技術の第5の実施の形態によれば、メモリ制御部におけるデータ処理として暗号化および復号化処理を想定することができ、セキュリティを向上させながら、メモリ300のランダムアクセス速度を改善することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
なお、本技術は以下のような構成もとることができる。
(1)コンピュータからのコマンドに基づいてメモリに対するリクエストをそれぞれ独立して生成する複数のメモリ制御部と、
前記複数のメモリ制御部からの接続要求に応じて前記複数のメモリ制御部のいずれかと前記メモリとを接続して前記リクエストを前記メモリに出力する接続切換部と
を具備するメモリコントローラ。
(2)前記複数のメモリ制御部の各々は、
前記メモリに対して前記リクエストとしてリードリクエストを生成するリード制御部と、
前記メモリから前記リードリクエストに対するリードデータを受信するリードデータ受信部と
を備える
前記(1)に記載のメモリコントローラ。
(3)前記複数のメモリ制御部の各々は、
前記リードデータに対して所定のデータ処理を施すリードデータ処理部をさらに備える
前記(2)に記載のメモリコントローラ。
(4)前記リードデータ処理部は、前記所定のデータ処理として、前記リードデータのエラー検出訂正処理を行う
請求項3記載のメモリコントローラ。
(5)前記リードデータ処理部は、前記所定のデータ処理として、前記リードデータの復号処理を行う
前記(3)に記載のメモリコントローラ。
(6)前記複数のメモリ制御部の各々は、
前記メモリに対して前記リクエストとしてライトリクエストを生成するライト制御部と、
前記メモリに対して前記ライトリクエストに係るライトデータを送信するライトデータ送信部と
を備える
前記(1)に記載のメモリコントローラ。
(7)前記複数のメモリ制御部の各々は、
前記ライトデータに対して所定のデータ処理を施すライトデータ処理部をさらに備える
前記(6)に記載のメモリコントローラ。
(8)前記ライトデータ処理部は、前記所定のデータ処理として、前記ライトデータのエラー訂正コードを生成する
前記(7)に記載のメモリコントローラ。
(9)前記ライトデータ処理部は、前記所定のデータ処理として、前記ライトデータの暗号化処理を行う
前記(7)に記載のメモリコントローラ。
(10)前記複数のメモリ制御部の各々は、
前記メモリに対して前記リクエストとしてリードリクエストを生成するリード制御部、および、前記メモリから前記リードリクエストに対するリードデータを受信するリードデータ受信部と、
前記メモリに対して前記リクエストとしてライトリクエストを生成するライト制御部、および、前記メモリに対して前記ライトリクエストに係るライトデータを送信するライトデータ送信部と
のいずれか一方のみを備える
前記(1)に記載のメモリコントローラ。
(11)メモリと、
コンピュータからのコマンドに基づいて前記メモリに対するリクエストをそれぞれ独立して生成する複数のメモリ制御部と、
前記複数のメモリ制御部からの接続要求に応じて前記複数のメモリ制御部のいずれかと前記メモリとを接続して前記リクエストを前記メモリに出力する接続切換部と
を具備するメモリシステム。
(12)メモリと、
コンピュータと、
前記コンピュータからのコマンドに基づいて前記メモリに対するリクエストをそれぞれ独立して生成する複数のメモリ制御部と、
前記複数のメモリ制御部からの接続要求に応じて前記複数のメモリ制御部のいずれかと前記メモリとを接続して前記リクエストを前記メモリに出力する接続切換部と
を具備する情報処理システム。
100 ホストコンピュータ
200 メモリコントローラ
201、202 メモリ制御エンジン
210 ストレージインターフェース制御部
220 I/Oバス
230 プロセッサ
250、290 メモリ制御部
251、281 デコーダ
252、282 メモリリクエストアドレス送信部
253、283−2 バスデータ受信部
254、284−2 ECC生成部
255、285−2 メモリデータ送信部
256、286−1 メモリデータ受信部
257、287−1 エラー検出訂正部
258、288−1 バスデータ送信部
259−1 暗号化部
259−2 復号化部
260 接続切換部
261 接続判断部
262 スイッチ
263 リクエストアドレス受信部
264 メモリリクエストアドレス送信部
265 データ受信部
266 メモリデータ送信部
267 メモリデータ受信部
268 データ送信部
270 メモリインターフェース制御部
280−1 メモリリード制御部
280−2 メモリライト制御部
300 メモリ
301、302 メモリダイ
400 メモリシステム

Claims (12)

  1. コンピュータからのコマンドに基づいてメモリに対するリクエストをそれぞれ独立して生成する複数のメモリ制御部と、
    前記複数のメモリ制御部からの接続要求に応じて前記複数のメモリ制御部のいずれかと前記メモリとを接続して前記リクエストを前記メモリに出力する接続切換部と
    を具備するメモリコントローラ。
  2. 前記複数のメモリ制御部の各々は、
    前記メモリに対して前記リクエストとしてリードリクエストを生成するリード制御部と、
    前記メモリから前記リードリクエストに対するリードデータを受信するリードデータ受信部と
    を備える
    請求項1記載のメモリコントローラ。
  3. 前記複数のメモリ制御部の各々は、
    前記リードデータに対して所定のデータ処理を施すリードデータ処理部をさらに備える
    請求項2記載のメモリコントローラ。
  4. 前記リードデータ処理部は、前記所定のデータ処理として、前記リードデータのエラー検出訂正処理を行う
    請求項3記載のメモリコントローラ。
  5. 前記リードデータ処理部は、前記所定のデータ処理として、前記リードデータの復号処理を行う
    請求項3記載のメモリコントローラ。
  6. 前記複数のメモリ制御部の各々は、
    前記メモリに対して前記リクエストとしてライトリクエストを生成するライト制御部と、
    前記メモリに対して前記ライトリクエストに係るライトデータを送信するライトデータ送信部と
    を備える
    請求項1記載のメモリコントローラ。
  7. 前記複数のメモリ制御部の各々は、
    前記ライトデータに対して所定のデータ処理を施すライトデータ処理部をさらに備える
    請求項6記載のメモリコントローラ。
  8. 前記ライトデータ処理部は、前記所定のデータ処理として、前記ライトデータのエラー訂正コードを生成する
    請求項7記載のメモリコントローラ。
  9. 前記ライトデータ処理部は、前記所定のデータ処理として、前記ライトデータの暗号化処理を行う
    請求項7記載のメモリコントローラ。
  10. 前記複数のメモリ制御部の各々は、
    前記メモリに対して前記リクエストとしてリードリクエストを生成するリード制御部、および、前記メモリから前記リードリクエストに対するリードデータを受信するリードデータ受信部と、
    前記メモリに対して前記リクエストとしてライトリクエストを生成するライト制御部、および、前記メモリに対して前記ライトリクエストに係るライトデータを送信するライトデータ送信部と
    のいずれか一方のみを備える
    請求項1記載のメモリコントローラ。
  11. メモリと、
    コンピュータからのコマンドに基づいて前記メモリに対するリクエストをそれぞれ独立して生成する複数のメモリ制御部と、
    前記複数のメモリ制御部からの接続要求に応じて前記複数のメモリ制御部のいずれかと前記メモリとを接続して前記リクエストを前記メモリに出力する接続切換部と
    を具備するメモリシステム。
  12. メモリと、
    コンピュータと、
    前記コンピュータからのコマンドに基づいて前記メモリに対するリクエストをそれぞれ独立して生成する複数のメモリ制御部と、
    前記複数のメモリ制御部からの接続要求に応じて前記複数のメモリ制御部のいずれかと前記メモリとを接続して前記リクエストを前記メモリに出力する接続切換部と
    を具備する情報処理システム。
JP2016538199A 2014-07-28 2015-06-09 メモリコントローラ、メモリシステムおよび情報処理システム Expired - Fee Related JP6525007B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014153139 2014-07-28
JP2014153139 2014-07-28
PCT/JP2015/066577 WO2016017287A1 (ja) 2014-07-28 2015-06-09 メモリコントローラ、メモリシステムおよび情報処理システム

Publications (2)

Publication Number Publication Date
JPWO2016017287A1 true JPWO2016017287A1 (ja) 2017-04-27
JP6525007B2 JP6525007B2 (ja) 2019-06-05

Family

ID=55217192

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016538199A Expired - Fee Related JP6525007B2 (ja) 2014-07-28 2015-06-09 メモリコントローラ、メモリシステムおよび情報処理システム

Country Status (3)

Country Link
US (1) US20170160952A1 (ja)
JP (1) JP6525007B2 (ja)
WO (1) WO2016017287A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10645164B1 (en) * 2015-10-27 2020-05-05 Pavilion Data Systems, Inc. Consistent latency for solid state drives
JP2019169205A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 メモリシステム
KR102532084B1 (ko) * 2018-07-17 2023-05-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US11042436B2 (en) * 2019-08-29 2021-06-22 Micron Technology, Inc. Semiconductor device with modified access and associated methods and systems
JP2021039804A (ja) * 2019-09-02 2021-03-11 キオクシア株式会社 メモリシステム
US11914537B2 (en) * 2021-04-15 2024-02-27 Apple Inc. Techniques for load balancing with a hub device and multiple endpoints

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271654A (ja) * 1994-04-01 1995-10-20 Tokyo Electron Ltd コントローラ
WO1998001806A1 (fr) * 1996-07-03 1998-01-15 Hitachi, Ltd. Processeur d'informations
US6654308B1 (en) * 2002-12-23 2003-11-25 Hewlett-Packard Development Company, Lp. Memory having multiple write ports and multiple control memory units, and method of operation
US6754130B1 (en) * 2002-12-23 2004-06-22 Hewlett-Packard Development Company, Lp. Memory having multiple write ports and write insert unit, and method of operation
JP2007087284A (ja) * 2005-09-26 2007-04-05 Fujitsu Ltd 集積回路におけるメモリ・インタフェース制御方式
US7694099B2 (en) * 2007-01-16 2010-04-06 Advanced Risc Mach Ltd Memory controller having an interface for providing a connection to a plurality of memory devices
KR100869675B1 (ko) * 2007-02-05 2008-11-21 지인정보기술 주식회사 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
CN100458751C (zh) * 2007-05-10 2009-02-04 忆正存储技术(深圳)有限公司 并行闪存控制器
WO2010061760A1 (ja) * 2008-11-26 2010-06-03 シャープ株式会社 不揮発性半導体記憶装置及びその駆動方法
US8331123B2 (en) * 2009-09-21 2012-12-11 Ocz Technology Group, Inc. High performance solid-state drives and methods therefor
TWI475385B (zh) * 2012-03-14 2015-03-01 Phison Electronics Corp 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置
TWI516921B (zh) * 2013-10-02 2016-01-11 群聯電子股份有限公司 資料處理方法、記憶體儲存裝置與記憶體控制電路單元

Also Published As

Publication number Publication date
JP6525007B2 (ja) 2019-06-05
WO2016017287A1 (ja) 2016-02-04
US20170160952A1 (en) 2017-06-08

Similar Documents

Publication Publication Date Title
JP6525007B2 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
JP5942781B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
JP6447629B2 (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
JP6950149B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP5929790B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
WO2017056917A1 (ja) 通信システム、デバイス、マスタデバイス、スレーブデバイス、通信システムの制御方法、および、プログラム
JP6102632B2 (ja) 記憶制御装置、ホストコンピュータ、情報処理システムおよび記憶制御装置の制御方法
CN103197898A (zh) 存储控制装置、存储装置和控制存储控制装置的控制方法
KR102482035B1 (ko) 메모리 컨트롤러, 메모리 시스템 및 그 동작 방법
JP2014157391A (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
CN103136067A (zh) 存储控制器、存储设备、信息处理系统以及存储控制方法
JP5853973B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP6028709B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
JP2013222315A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP5867264B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
JP6493062B2 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
CN102591825A (zh) 基于 sync 机制的sata 控制器与闪存控制器间的传输装置及方法
WO2019244417A1 (ja) 記憶制御装置、記憶装置および記憶制御方法
US9063903B2 (en) Memory system provided with NAND flash memory and method including simultaneously writing data to first and second memory arrays
WO2017010147A1 (ja) 不揮発メモリ、メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法
CN109690506B (zh) 存储器控制器、存储器系统、信息系统和存储器控制方法
WO2022158120A1 (ja) コントローラ、不揮発性記憶装置、および、制御方法
KR20130009536A (ko) 메모리 제어 장치 및 방법
US11029881B2 (en) Memory controller, memory system, and information processing system
JP2018085039A (ja) データ転送装置およびデータ転送方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

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: 20190409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190422

R151 Written notification of patent or utility model registration

Ref document number: 6525007

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees