JP6389499B2 - 誤り訂正前に不揮発性固体装置からデータを送信するシステムおよび方法 - Google Patents

誤り訂正前に不揮発性固体装置からデータを送信するシステムおよび方法 Download PDF

Info

Publication number
JP6389499B2
JP6389499B2 JP2016223160A JP2016223160A JP6389499B2 JP 6389499 B2 JP6389499 B2 JP 6389499B2 JP 2016223160 A JP2016223160 A JP 2016223160A JP 2016223160 A JP2016223160 A JP 2016223160A JP 6389499 B2 JP6389499 B2 JP 6389499B2
Authority
JP
Japan
Prior art keywords
data packets
host
memory
packet
acquired
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.)
Expired - Fee Related
Application number
JP2016223160A
Other languages
English (en)
Other versions
JP2017151955A (ja
Inventor
ヴチニッチ デジャン
ヴチニッチ デジャン
マッティーシュ ロバート
マッティーシュ ロバート
チン ミンガイ
チン ミンガイ
ゼット バンディック ズヴォニミール
ゼット バンディック ズヴォニミール
Original Assignee
エイチジーエスティーネザーランドビーブイ
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 エイチジーエスティーネザーランドビーブイ filed Critical エイチジーエスティーネザーランドビーブイ
Publication of JP2017151955A publication Critical patent/JP2017151955A/ja
Application granted granted Critical
Publication of JP6389499B2 publication Critical patent/JP6389499B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • 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/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
    • 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
    • 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
    • G06F13/1668Details of memory controller
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Communication Control (AREA)

Description

本開示は、不揮発性固体装置に格納されたデータの送信、特に誤り訂正の完了前にデータを送信するためのシステムおよび方法に関する。
不揮発性固体装置(SSDs)は、コンピュータシステムにおける一次および二次記憶用に広範に利用されている。相変化メモリ(PCM)、抵抗RAM(ReRAM)、および磁気RAM(MRAM)等、いくつかの不揮発性メモリのビット誤り率は動的読み出しアクセスメモリ(DRAM)のビット誤り率よりも高い場合があり得るが、NANDフラッシュメモリのビット誤り率よりも大幅に下げることができる。従って、これらの中間的ビット誤り率は、DRAMで用いる短いハミング符号よりも良好な誤り訂正を必要とする。このため、誤り訂正アルゴリズムを実行する場合、長い待ち時間が生じる恐れがある。例えば、全BCH符号(符号の発明者、Raj Bose、D.K.Ray−Chaudhuri、およびAlexis Hocquenghemの頭字語)等の誤り訂正符号(ECC)を例えば512Bブロックに対して実行する際に、記憶媒体からビットを読み出す時間の約半分の時間を要する場合がある。
更に、例えば4kbの任意のブロックにおける誤りの確率は、大部分のブロックで誤りが生じないように充分に低くてよい。従って、大部分の読み出しにおいて、誤り訂正アルゴリズムによる待ち時間は無駄になる。また、従来のシステムは、非パイプライン化フローを実行しており、通常は、単一の512Bブロックを再構築するため全てのビットを記憶媒体から読み出し、次いでECCアルゴリズムを実行し、ECCアルゴリズムが完了した後でデータのホストへの送信を開始することができる。従って、ECCアルゴリズムが完了するまでブロックの送信は遅延する。
米国特許出願第14/466,538号明細書 米国特許出願第14/489,881号明細書
本開示は、通信プロトコルに従う動作を実行する方法およびシステムに関する。
一実施形態は、通信プロトコルでの動作を実行する方法を含んでいてよい。本方法は、ホストおよびメモリと通信状態にある目標装置を設けるステップと、目標装置により、複数のデータパケットをメモリから取得するリクエストを含む第1のコマンドをホストから受信するステップとを含んでいてよい。本方法はまた、目標装置により、複数のデータパケットをメモリから取得するステップと、目標装置により、各々のデータパケットが取得される都度、各々の取得されたデータパケットをホストに送信するステップとを含んでいてよい。本方法は更に、目標装置により、取得された複数のデータパケットに対応する誤り訂正符号(ECC)パケットを取得するステップと、目標装置により、ECCアルゴリズムを実行して、取得された複数のデータパケットの潜在的な誤りを識別および訂正するステップとを含んでいてよい。本方法はまた、取得されたデータパケットのいずれかに誤りがある場合、目標装置により、訂正されたデータパケットをホストに送信するステップと、目標装置により、完了パケットをホストに送信するステップとを含んでいてよい。
代替的な一実施形態は、通信プロトコルでの動作を実行する方法を含んでいてよい。本方法は、ホストおよびメモリと通信状態にある目標装置を設けるステップと、目標装置により、複数のデータパケットをメモリから取得するリクエストを含む第1のコマンドをホストから受信するステップとを含んでいてよい。本方法はまた、目標装置により、複数のデータパケットをメモリから取得するステップと、目標装置により、各々のデータパケットが取得される都度、最後に取得されたデータパケットを除く各々の取得されたデータパケットをホストに送信するステップとを含んでいてよい。本方法はまた、目標装置により、取得された複数のデータパケットに対応する誤り訂正符号(ECC)パケットを取得するステップと、目標装置により、ECCアルゴリズムを実行して、取得された複数のデータパケットの潜在的な誤りを識別および訂正するステップとを含んでいてよい。本方法は更に、取得されたデータパケットのいずれかに誤りがある場合、目標装置により、訂正されたデータパケットをホストに送信するステップと、目標装置により、最後に取得されたデータパケットを送信するステップとを含んでいてよい。
代替的な一実施形態は、通信プロトコルでの動作を実行するメモリコントローラを含んでいてよい。メモリコントローラは、ホストおよびメモリと通信状態にあって、メモリから複数のデータパケットを取得するリクエストを含む第1のコマンドをホストから受信すべく構成されたインターフェースコントローラと、ストレージコントローラとを含んでいてよい。ストレージコントローラは、複数のデータパケットをメモリから取得して、各々のデータパケットが取得される都度、最後に取得されたデータパケットを除く各々の取得されたデータパケットをホストに送信するようインターフェースコントローラに命令すべく構成されていてよい。ストレージコントローラは更に、取得された複数のデータパケットに対応する誤り訂正符号化(ECC)パケットを取得すると共に、ECCアルゴリズムを実行して、取得された複数のデータパケットの潜在的な誤り識別および訂正すべく構成されていてよい。ストレージコントローラは更に、取得されたデータパケットのいずれかに誤りがある場合、訂正されたデータパケットをホストに送信するようインターフェースコントローラに命令すると共に、最後に取得されたデータパケットを送信するようインターフェースコントローラに命令すべく構成されていてよい。
代替的な一実施形態は、通信プロトコルでの動作を実行するメモリコントローラを含んでいてよい。メモリコントローラは、ホストおよびメモリと通信状態にあって、メモリから複数のデータパケットを取得するリクエストを含む第1のコマンドをホストから受信すべく構成されたインターフェースコントローラと、ストレージコントローラとを含んでいてよい。ストレージコントローラは、複数のデータパケットをメモリから取得すると共に、各々の取得されたデータパケットに対して誤り検出アルゴリズムを実行して、取得されたデータパケットが誤りを含んでいるか否かを判定すべく構成されていてよい。ストレージコントローラは更に、インターフェースコントローラに対し、各々のデータパケットが取得される都度、最後に取得されたデータパケットを除く各々の取得されたデータパケットをホストに送信するよう命令し、取得された複数のデータパケットに対応する誤り訂正符号パケットを取得し、ECCアルゴリズムを実行して、取得された複数のデータパケットの潜在的な誤りを識別および訂正すべく構成されていてよい。ストレージコントローラは更に、取得されたデータパケットのいずれかに誤りがある場合、訂正されたデータパケットをホストに送信するようインターフェースコントローラに命令すると共に、最後に取得されたデータパケットを送信するようインターフェースコントローラに命令すべく構成されていてよい。
本開示の各種の目的、特徴、および利点は、同一要素には同一参照番号が付与された添付図面を参照しながら以下の詳細な記述を精査することにより理解が深まろう。添付図面は例示目的に過ぎず、請求項により範囲を規定する本発明を一切限定するものではない。
本開示の複数の実施形態による、通信プロトコルを実行する例示的システムを示す。 記憶媒体からデータを送信する従来方式の実施例を示す。 本開示の複数の態様による、記憶媒体からデータを送信する実施例を示す。 本開示の複数の態様による、記憶媒体からデータを送信する実施例を示す。 記憶媒体からデータを送信する従来方式の実施例を示す。 本開示の複数の態様による、記憶媒体からデータを送信する実施例を示す。 本開示の複数の態様による、記憶媒体からデータを送信する実施例を示す。 本開示の複数の態様による、記憶媒体からデータを送信する例示的な方法を示す。 本開示の複数の態様による、記憶媒体からデータを送信する例示的な方法を示す。
不揮発性メモリに格納されたデータを送信するシステムおよび方法を提供する。データパケットは、誤り訂正を実行する前に不揮発性メモリから取得されたならば、ホストに送信することができる。1ブロックの全てのデータパケットが不揮発性メモリから取得されたならば、誤り訂正を実行することができる。取得されたデータパケットのいずれかに誤りがある場合、訂正してホストに再送信することができる。
図1は、本開示の複数の実施形態による、通信プロトコルを実行する例示的なシステム100を示す。システム100は、目標装置104およびストレージ122と通信状態にあるホスト102を含んでいる。ホスト102は、ユーザーアプリケーション106、オペレーティングシステム108、ドライバ110、ホストメモリ112、待ち行列118a、および通信プロトコル114aを含んでいる。目標装置104は、インターフェースコントローラ117、通信プロトコル114b、待ち行列118b、およびストレージ122と通信状態にあるストレージコントローラ120を含んでいる。
ホスト102は、オペレーティングシステム108上でユーザーレベルアプリケーション106を実行することができる。オペレーティングシステム108は、ホストメモリ112とのインターフェースを提供するドライバ110を動作させることができる。いくつかの実施形態において、メモリ112はDRAMであってよい。ホストメモリ112は、待ち行列118aを用いて、目標装置104に処理を指示するホスト102からのコマンドを格納することができる。格納または待ち行列に追加されたコマンドの例として、ホスト102から読み出しまたは書き込み動作を含んでいてよい。通信プロトコル114aにより、ホスト102はインターフェースコントローラ117を用いて目標装置104と通信可能になる。
目標装置104は、インターフェースコントローラ117および通信プロトコル114bを用いてホスト102と通信可能である。通信プロトコル114bは、ストレージコントローラ120を介してストレージ122にアクセスするための待ち行列118を設けることができる。例えば、ユーザーレベルアプリケーション106は、データ取得のためストレージ122へのアクセスリクエストを生成することができる。目標装置104は、ストレージ122からメモリブロックが取得された場合に誤りを訂正する誤り訂正符号を実行することができる。
上述のように、全BCH符号等の誤り訂正符号を例えば512Bブロックで実行するには、ストレージ122からデータを読み出す時間の約半分の時間を消費する場合がある。従来のシステム、例えば非パイプライン化フローを実行するシステム等は通常、1ブロックを再構築するため全てのビットを記憶媒体から読み出し、次いでECCアルゴリズム実行し、ECCアルゴリズムが完了した後で訂正されたデータのホストへの送信を開始することができる。これを図2Aの200で一般的に示し、パケット、例えば4個のパケット202を記憶媒体からホストに送信する例示的な方法を示す。特定の例において、システムは、最初にパケット202およびECCパケット204を読み出し、次いで誤り訂正アルゴリズム206を実行していずれかのパケットに誤りがあるか否かを判定して、誤りが検出されたならば訂正する。システムは次いで、4個ブロックおよび転送が完了した旨を通知する終了パケット208をホストに送信することができる。当業者には、ECCビットは、訂正スキームの設計により当該ビットが媒体上に配置された仕方に依存して複数のパケットであり得ることが理解されよう。
本開示の複数の態様によれば、誤り訂正アルゴリズムを実行する前に、記憶媒体からデータパケットがホストに送信される。これを図2Bの210で一般的に示す。開示するシステムおよび方法は最初にパケット202を取得する。各パケットは、記憶媒体から取得される都度、ホストに送信される。例えば、第1のパケットが取得された場合、ホストに送信される(212)。第2のパケットが取得された場合も、同様にホストに送信される(214)。当該動作は、記憶媒体から全てのパケット202が取得されるまで続けられる。全てのパケットが取得された後で、ECCパケット204が読みだされて誤り訂正アルゴリズム206が実行される。アルゴリズムが誤りを一切検出しなかった場合、終了パケット208が送信されて転送が完了した旨をホストに通知する。図2Bに示すように、開示する方法では、記憶装置から取得されたデータパケットに誤りが無い最も一般的な場合に、待ち時間を大幅に節約できる(216)。例えば、待ち時間の節約は、全てのデータパケットをホストに送信するために要する時間にほぼ等しい。
開示するシステムおよび方法では、記憶媒体から取得されたデータが誤りを含んでいる場合でも待ち時間の節約ができることになる。一般に図2Cの220に、取得されたデータパケットに誤りがある場合にデータパケットをホストに送信する際の待ち時間の節約を示す。具体的には、図に示す例において、第2のデータパケット218は誤りを含んでいる。開示する方法ではパケットがホストに送信される前に誤り検出および訂正アルゴリズムが完了するまで待たないため、誤りがあるパケット218がホストで受信される。誤りが検出された(206)場合、誤りがあるデータパケット218は訂正され、正しいデータパケット220がホストに再送信される。誤りがある複数のパケットが記憶媒体から取得された場合、誤りがある全てのパケットが訂正されてホストに送信される。次いで転送が完了した旨をホストに通知する終了パケット208が送信される。図2Cにも示すように、開示する方法では、たとえ記憶装置から取得されたデータパケットに誤りがある、例えば取得されたデータに1個の誤りがある(224)場合でも、待ち時間を大幅に節約できる。
図3Aは、従来のシステムの非パイプライン化フローの代替的な実施例を示す。具体的には、一般に図3Aの300に、別々の完了パケットを送信することなく、パケット、例えば4個のパケット302を記憶媒体からホストに送信する例示的な別の仕方を示す。特定の例において、システムは最初に、パケット302およびECCパケット304を取得し、次いで誤り訂正アルゴリズム306を実行していずれかのパケットに誤りがあるか否かを判定して、誤りが検出されたならば訂正する。次いでシステムは、4個のブロックをホストに送信することができる。最後のパケット308はまた、転送が完了した旨をホストに通知可能な完了パケットとしても機能することができる。他の完了検出手順を優先して完了信号を除去し得る例示的なプロトコルが、例えば2014年8月22日出願の(特許文献1)“Ack−less protocol for noticing completion of read requests”および2014年9月18日出願の(特許文献2)“Acknowledgement−less protocol for solid state drive interface”に記述されており、共にその内容の全文を本明細書に引用している。
本開示の代替的な複数の態様によれば、完了パケットを送信することなく、誤り訂正アルゴリズムを実行する前に、記憶媒体からのデータパケット302をホストに送信することができる。これを図3Bの310で一般的に示す。開示するシステムおよび方法は最初にパケット302を取得する。各パケットが記憶媒体から取得される都度、ホストに送信される。例えば、第1のパケット312が取得された場合、ホストに送信される。第2のパケット314が取得された場合も、同様にホストに送信される。開示の複数の態様によれば、誤りの検出および訂正アルゴリズムが実行されるまで、最後のパケット308はホストに送信されない。具体的には、ECCパケット304が記憶媒体から取得された後で、ECCアルゴリズムが実行される(306)。誤りが検出されなかった場合、最後のパケット308がホストに送信される。最後のパケット308がホスト側で受信された場合、転送が完了した旨をホストに通知することができる。図3Bに示すように、開示する方法では、記憶装置から取得されたデータパケットに誤りが無い最も一般的な場合、待ち時間を大幅に節約できる(316)。
図3Cの220で一般的に、データパケットに誤りがあり、且つ完了パケットが無い場合にデータパケットをホストに送信する際の待ち時間の節約を示す。具体的には、図に示す例において、第2のデータパケット314は誤りを含んでいる。開示する方法は誤りの検出、およびパケットがホストに送信される前に訂正アルゴリズムが完了するのを待たないため、誤りがある第2のパケット314がホスト側で受信される。本開示の複数の態様によれば、誤りの検出および訂正アルゴリズムが実行されるまで最後のパケット308は送信されない。第2のパケット314に誤りが検出された場合、誤りがあるデータパケット314が訂正され(306)、正しいデータパケットがホストに再送信される(316)。訂正パケット316が送信された後で、本方法は最後のデータパケット308を送信することができる。最後のパケット308がホスト側で受信された場合、転送が完了した旨をホストに通知することができる。当業者には、取得された最後のデータパケットに誤りがある場合、訂正されたデータパケットがホストに送信されることが理解されよう。図3Cに示すように、開示する方法では、たとえ記憶装置から取得されたデータパケットに誤りがある、例えば取得されたデータに1個の誤りがある(324)場合でも、待ち時間を大幅に節約できる。
本開示の代替的な複数の態様によれば、誤りが検出された後で、誤って取得されたパケットのサブセットだけ、例えば誤りを含んでいるサブセットだけがホストに再送信される。サブセットがホスト側で受信された場合、パケットの適当な部分を上書きすることができる。
開示の代替的な複数の態様によれば、データパケットが記憶媒体から取得された場合、誤り検出アルゴリズム、例えば症状確認(誤りがあるビットの個数を示す値を返す多項式の計算)が実行され、取得されたデータパケットに誤りがあるか否かが判定される。取得された全てのパケットに誤りが無い場合、それ以上ECCアルゴリズムは実行されない。
図4は、本開示の複数の態様による、データパケットをホストに送信する例示的な方法のフロー図400を示す。メモリコントローラが、複数のデータパケットをメモリから取得することができる(402)。メモリコントローラがデータパケットを取得した場合、ホストに送信する(404)。メモリコントローラはまた、取得されたデータパケットに対応するECCパケットを取得することができる(406)。ECCパケットを取得したならば、メモリコントローラは、ECCアルゴリズムを実行して、取得されたデータパケットにおける潜在的な誤りを識別および訂正することができる(408)。本方法は次いで、取得されたデータパケットに誤りがあるか否かを調べることができる(410)。誤りが検出されなかった場合、メモリコントローラは完了パケットをホストに送信することができる(412)。取得されたデータに誤りがある場合、メモリコントローラはホストに、訂正されたデータパケットを送信し(414)、次いで完了パケットを送信することができる(412)。
図5は、本開示の代替的な複数の態様による、データパケットをホストに送信する例示的な方法のフロー図500を示す。メモリコントローラは、複数のデータパケットをメモリから取得することができる(502)。メモリコントローラがデータパケットを取得した場合、最後に取得されたデータパケットを除いて、各パケットをホストに送信することができる(504)。メモリコントローラはまた、取得されたデータパケットに対応するECCパケットを取得することができる(506)。ECCパケットを取得したならば、メモリコントローラは、ECCアルゴリズムを実行して、取得されたデータパケット508における潜在的な誤りを識別および訂正することができる。本方法は次いで、取得されたデータパケット510に誤りがあるか否かを調べることができる。誤りが検出されなかった場合、メモリコントローラは、最後に取得されたパケットをホスト512に送信することができる。取得されたデータに誤りがある場合、メモリコントローラはホストに対し、訂正されたデータパケット514、次いで最後に取得されたパケット512を送信することができる。
当業者には、ここに記述する明細書本文および図面における各種の例示的項目が電子ハードウェア、コンピュータソフトウェア、両者の組合せにより実現できることが理解されよう。ハードウェアとソフトウェアが互いに代替可能であることを示すために、各種の例示的ブロック、モジュール、素子、要素、方法、およびアルゴリズムは、それらの機能の観点から一般的に記述してきた。このような機能をハードウェア、ソフトウェア、またはそれら組合せとして実現するか否かは、特定のアプリケーションおよびシステム全体に課される設計上の制約に依存する。当業者であれば、記述された機能を特定のアプリケーションの各々について様々な仕方で実現することができる。各種の要素およびブロックは、主題である技術の範囲から逸脱することなく、全て異なる仕方で構成(例えば、異なる順序で配置、または異なる仕方で分割)することができる。
更に、通信プロトコルの実行は、単一のコンピュータシステム内で集中的に、または互いに接続された複数のコンピュータシステムにまたがって異なる要素が配置された状態で分散的に実現することができる。本明細書に記述する方法を実行すべく適合された任意の種類のコンピュータシステムその他の装置も本明細書に記述する機能の実行に適している。
ハードウェアとソフトウェアの典型的な組合せとして、ロードおよび実行された場合に本明細書に記述する方法を実行すべくコンピュータシステムを制御するコンピュータプログラムを備えた汎用コンピュータシステムがあり得る。通信プロトコル用の方法はまた、本明細書に記述する方法を実行可能にする全ての特徴を含むと共にコンピュータシステムにロードされた場合に当該方法を実行可能なコンピュータプログラム製品に埋め込まれていてもよい。
本文脈におけるコンピュータプログラムまたはアプリケーションとは、情報処理機能を有するシステムに、特定の機能を直接実行させるか、または、a)別の言語、符号、または表記への変換、b)異なる媒体形式での再現、の一方または両方を実行した後で、実行させることを目的とする命令の組の任意の言語、符号または表記による表現を意味している。重要な点として、当該通信プロトコルは、その趣旨または基本的属性から逸脱することなく、他の特定の形式で実施可能であり、従って、本発明の範囲を示すものとして上述の明細書本文ではなく、以下の請求項を参照されたい。
通信プロトコルについて、例示的な実施形態を具体的に参照しながら詳細に述べてきた。しかし、上述の明細書本文に記述しているように、本開示の趣旨および範囲内で各種の修正および変更が可能であることは明らかであり、そのような修正および変更は等価物であって本開示の一部をなすものと考えられたい。
100 システム
102 ホスト
104 目標装置
106 アプリケーション
108 オペレーティングシステム
110 ドライバ
112 メモリ
114a 通信プロトコル
114b 通信プロトコル
117 インターフェースコントローラ
118a 待ち行列
118b 待ち行列
120 ストレージコントローラ
122 ストレージ
202 パケット
204 ECCパケット
206 誤り訂正アルゴリズム
208 終了パケット
212 ホストに送信
214 ホストに送信
216 最も一般的な場合での待ち時間の節約
220 再送信
224 誤りが1個の場合での待ち時間の節約
302 パケット
304 ECCパケット
306 訂正
308 パケット
312、314 パケット
316 最も一般的な場合での待ち時間の節約
324 誤りが1個の場合での待ち時間の節約

Claims (20)

  1. ホストに接続される目標装置のメモリからデータを取得する方法であって、
    前記目標装置により、複数のデータパケットを前記メモリから取得するリクエストを含む第1のコマンドを前記ホストから受信するステップと、
    前記目標装置により、前記複数のデータパケットを前記メモリから取得するステップと、
    前記目標装置により、各々のデータパケットが取得される都度、各々の取得されたデータパケットを前記ホストに送信するステップと、
    前記目標装置により、取得された複数のデータパケットに対応する誤り訂正符号(ECC)パケットを取得し、前記誤り訂正符号(ECC)パケットの取得は、前記複数のデータパケットが前記ホストに送信された後に生じるステップと、
    前記目標装置により、取得された複数のデータパケットの中から、誤りを有する一又は二以上のデータパケットを特定するECCアルゴリズムを実行し、前記ECCアルゴリズムの実行は、前記リクエストに係る前記複数のデータパケットのうちの全てのデータパケットが前記ホストに送信された後に生じるステップと、
    記目標装置により、一又は二以上の訂正されたデータパケットを前記ホストに送信し、取得された複数のデータパケットのうち、誤りを有する一又は二以上のデータパケットを置換するステップと、
    前記目標装置により、完了パケットを前記ホストに送信するステップとを含む方法。
  2. 前記メモリが不揮発性メモリである、請求項1に記載の方法。
  3. 前記不揮発性メモリが相変化メモリ(PCM)である、請求項2に記載の方法。
  4. 前記ECCアルゴリズムBCH符号を誤り訂正符号として利用して実行される、請求項1に記載の方法。
  5. ホストに接続される目標装置のメモリからデータを取得する方法であって、
    記目標装置により、複数のデータパケットを前記メモリから取得するリクエストを含む第1のコマンドを前記ホストから受信するステップと、
    前記目標装置により、前記複数のデータパケットを前記メモリから取得するステップと、
    前記目標装置により、各々のデータパケットが取得される都度、最後に取得されたデータパケットを除く各々の取得されたデータパケットを前記ホストに送信するステップと、
    前記目標装置により、前記取得された複数のデータパケットに対応する誤り訂正符号(ECC)パケットを取得し、前記誤り訂正符号(ECC)パケットの取得は、前記複数のデータパケットが前記ホストに送信された後に生じるステップと、
    前記目標装置により、前記取得された複数のデータパケットの中から、誤りを有する一又は二以上のデータパケットを特定するECCアルゴリズムを実行して、前記ECCアルゴリズムの実行は、前記リクエストに係る前記複数のデータパケットのうちの全てのデータパケットが前記ホストに送信された後に生じるステップと、
    記目標装置により、一又は二以上の訂正されたデータパケットを前記ホストに送信し、取得された複数のデータパケットのうち、誤りを有する一又は二以上のデータパケットを置換するステップと、
    前記目標装置により、最後に取得されたデータパケットを完了パケットとして送信するステップとを含む方法。
  6. 前記メモリが不揮発性メモリである、請求項5に記載の方法。
  7. 前記不揮発性メモリが相変化メモリ(PCM)である、請求項6に記載の方法。
  8. 前記ECCアルゴリズムBCH符号を誤り訂正符号として利用して実行される、請求項5に記載の方法。
  9. ホストに接続される目標装置のメモリからデータを取得する方法であって、
    記目標装置により、複数のデータパケットを前記メモリから取得するリクエストを含む第1のコマンドを前記ホストから受信するステップと、
    前記目標装置により、前記複数のデータパケットを前記メモリから取得するステップと、
    各々の取得されたデータパケットに対して誤り検出アルゴリズムを実行して、前記取得されたデータパケットが誤りを含んでいるか否かを判定するステップと、
    前記目標装置により、各々のデータパケットが取得される都度、各々の取得されたデータパケットを前記ホストに送信するステップと、
    前記目標装置により、前記取得された複数のデータパケットに対応する誤り訂正符号(ECC)パケットを取得し、前記誤り訂正符号(ECC)パケットの取得は、前記複数のデータパケットが前記ホストに送信された後に生じるステップと、
    記目標装置により、前記取得された複数のデータパケットの中から、誤りを有する一又は二以上のデータパケットを特定するECCアルゴリズムを実行し、前記ECCアルゴリズムの実行は、前記リクエストに係る前記複数のデータパケットのうちの全てのデータパケットが前記ホストに送信された後に生じるステップと、
    記目標装置により、一又は二以上の訂正されたデータパケットを前記ホストに送信し、取得された複数のデータパケットのうち、誤りを有する一又は二以上のデータパケットを置換するステップと、
    前記目標装置により、完了パケットを前記ホストに送信するステップとを含む方法。
  10. 前記メモリが不揮発性メモリである、請求項9に記載の方法。
  11. ホストに接続されるように構成され、且つメモリに接続されるように構成されたメモリコントローラであって、
    前記メモリコントローラは、
    記メモリから複数のデータパケットを取得するリクエストを含む第1のコマンドを前記ホストから受信すべく構成されたインターフェースコントローラと、
    前記インターフェースコントローラに接続されるストレージコントローラとを含み、
    前記ストレージコントローラが、
    前記複数のデータパケットを前記メモリから取得し、
    前記インターフェースコントローラに対し、各々のデータパケットが取得される都度、各々の取得されたデータパケットを前記ホストに送信するよう命令し、
    前記取得された複数のデータパケットに対応する誤り訂正符号化(ECC)パケットを取得し、前記誤り訂正符号(ECC)パケットの取得は、前記複数のデータパケットが前記ホストに送信された後に生じ、
    前記取得された複数のデータパケットの中から、誤りを有する一又は二以上のデータパケットを特定するECCアルゴリズムを実行して、前記ECCアルゴリズムの実行は、前記リクエストに係る前記複数のデータパケットのうちの全てのデータパケットが前記ホストに送信された後に生じ
    一又は二以上の訂正されたデータパケットを前記ホストに送信するよう前記インターフェースコントローラに命令して、取得された複数のデータパケットのうち、誤りを有する一又は二以上のデータパケットを置換し、
    完了パケットを前記ホストに送信する
    よう構成されているメモリコントローラ。
  12. 前記メモリが不揮発性メモリである、請求項11に記載のメモリコントローラ。
  13. 前記不揮発性メモリが相変化メモリ(PCM)である、請求項12に記載のメモリコントローラ。
  14. 前記ECCアルゴリズムBCH符号を誤り訂正符号として利用して実行される、請求項11に記載のメモリコントローラ。
  15. ホストに接続されるように構成され、且つメモリに接続されるように構成されたメモリコントローラであって、
    前記メモリコントローラは、
    記メモリから複数のデータパケットを取得するリクエストを含む第1のコマンドを前記ホストから受信すべく構成されたインターフェースコントローラと、
    前記インターフェースコントローラに接続されるストレージコントローラとを含み、
    前記ストレージコントローラが、
    複数のデータパケットを前記メモリから取得し、
    各々のデータパケットが取得される都度、最後に取得されたデータパケットを除く各々の取得されたデータパケットを前記ホストに送信するよう前記インターフェースコントローラに命令し、
    前記取得された複数のデータパケットに対応する誤り訂正符号化(ECC)パケットを取得し、前記誤り訂正符号(ECC)パケットの取得は、前記複数のデータパケットが前記ホストに送信された後に生じ、
    前記取得された複数のデータパケットの中から、誤りを有する一又は二以上のデータパケットを特定するECCアルゴリズムを実行し、前記ECCアルゴリズムの実行は、前記リクエストに係る前記複数のデータパケットのうちの全てのデータパケットが前記ホストに送信された後に生じ、
    一又は二以上の訂正されたデータパケットを前記ホストに送信するよう前記インターフェースコントローラに命令して、取得された複数のデータパケットのうち、誤りを有する一又は二以上のデータパケットを置換し、
    最後に取得されたデータパケットを完了パケットとして送信するよう前記インターフェースコントローラに命令すべく構成されているメモリコントローラ。
  16. 前記メモリが不揮発性メモリである、請求項15に記載のメモリコントローラ。
  17. 前記不揮発性メモリが相変化メモリ(PCM)である、請求項16に記載のメモリコントローラ。
  18. 前記ECCアルゴリズムBCH符号を誤り訂正符号として利用して実行される、請求項15に記載のメモリコントローラ。
  19. ホストに接続されるように構成され、且つメモリに接続されるように構成されたメモリコントローラであって、
    前記メモリコントローラは、
    記メモリから複数のデータパケットを取得するリクエストを含む第1のコマンドを前記ホストから受信すべく構成されたインターフェースコントローラと、
    前記インターフェースコントローラに接続されるストレージコントローラとを含み、
    前記ストレージコントローラが、
    前記複数のデータパケットを前記メモリから取得し、
    各々の取得されたデータパケットに対して誤り検出アルゴリズムを実行して、前記取得されたデータパケットが誤りを含んでいるか否かを判定し、
    前記インターフェースコントローラに対し、各々のデータパケットが取得される都度、最後に取得されたデータパケットを除く各々の取得されたデータパケットを前記ホストに送信するよう命令し、
    前記取得された複数のデータパケットに対応する誤り訂正符号(ECC)パケットを取得し、前記誤り訂正符号(ECC)パケットの取得は、前記複数のデータパケットが前記ホストに送信された後に生じ、
    前記取得された複数のデータパケットの中から、誤りを有する一又は二以上のデータパケットを特定するECCアルゴリズムを実行して、前記ECCアルゴリズムの実行は、前記リクエストに係る前記複数のデータパケットのうちの全てのデータパケットが前記ホストに送信された後に生じ
    一又は二以上の訂正されたデータパケットを前記ホストに送信するようインターフェースコントローラに命令して、取得された複数のデータパケットのうち、誤りを有する一又は二以上のデータパケットを置換し、
    最後に取得されたデータパケットを完了パケットとして送信する
    よう構成されているメモリコントローラ。
  20. 前記メモリが不揮発性メモリである、請求項19に記載のメモリコントローラ。
JP2016223160A 2015-11-16 2016-11-16 誤り訂正前に不揮発性固体装置からデータを送信するシステムおよび方法 Expired - Fee Related JP6389499B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/942,516 US20170141878A1 (en) 2015-11-16 2015-11-16 Systems and methods for sending data from non-volatile solid state devices before error correction
US14/942,516 2015-11-16

Publications (2)

Publication Number Publication Date
JP2017151955A JP2017151955A (ja) 2017-08-31
JP6389499B2 true JP6389499B2 (ja) 2018-09-12

Family

ID=58640078

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016223160A Expired - Fee Related JP6389499B2 (ja) 2015-11-16 2016-11-16 誤り訂正前に不揮発性固体装置からデータを送信するシステムおよび方法

Country Status (5)

Country Link
US (1) US20170141878A1 (ja)
JP (1) JP6389499B2 (ja)
KR (1) KR101967955B1 (ja)
CN (1) CN107066344A (ja)
DE (1) DE102016013622A1 (ja)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4105819B2 (ja) * 1999-04-26 2008-06-25 株式会社ルネサステクノロジ 記憶装置およびメモリカード
US7130958B2 (en) * 2003-12-02 2006-10-31 Super Talent Electronics, Inc. Serial interface to flash-memory chip using PCI-express-like packets and packed data for partial-page writes
FI110563B (fi) * 2000-06-20 2003-02-14 Nokia Corp Resurssien varaus pakettimuotoisessa tiedonsiirrossa
US20090063786A1 (en) 2007-08-29 2009-03-05 Hakjune Oh Daisy-chain memory configuration and usage
JP5150591B2 (ja) 2009-09-24 2013-02-20 株式会社東芝 半導体装置及びホスト機器
US8402180B2 (en) * 2010-03-26 2013-03-19 Atmel Corporation Autonomous multi-packet transfer for universal serial bus
US8656251B2 (en) * 2011-09-02 2014-02-18 Apple Inc. Simultaneous data transfer and error control to reduce latency and improve throughput to a host
US9116824B2 (en) * 2013-03-15 2015-08-25 Sandisk Technologies Inc. System and method to reduce read latency of a data storage device
US9513869B2 (en) * 2013-09-18 2016-12-06 HGST Netherlands B.V. Doorbell-less endpoint-initiated protocol for storage devices
US9535870B2 (en) * 2013-09-18 2017-01-03 HGST Netherlands B.V. Acknowledgement-less protocol for solid state drive interface
US10073731B2 (en) * 2013-11-27 2018-09-11 Intel Corporation Error correction in memory
US9760295B2 (en) * 2014-09-05 2017-09-12 Toshiba Memory Corporation Atomic rights in a distributed memory system

Also Published As

Publication number Publication date
DE102016013622A1 (de) 2017-05-18
US20170141878A1 (en) 2017-05-18
CN107066344A (zh) 2017-08-18
KR101967955B1 (ko) 2019-04-10
KR20170066226A (ko) 2017-06-14
JP2017151955A (ja) 2017-08-31

Similar Documents

Publication Publication Date Title
CN110770710B (zh) 用于控制数据加速的装置和方法
CN101937724B (zh) 用于执行拷贝回存操作的方法以及闪存存储设备
EP2297641B1 (en) Efficient in-band reliability with separate cyclic redundancy code frames
TWI546814B (zh) 具有錯誤校正邏輯之記憶體裝置
US9929967B2 (en) Packet deconstruction/reconstruction and link-control
KR102358177B1 (ko) 제어회로 및 제어회로를 포함하는 메모리 장치
US10102066B2 (en) Data processing device and operating method thereof
TW200935233A (en) System and method for data read of a synchronous serial interface NAND
CN112558746B (zh) 存储器系统、存储器系统控制方法以及信息处理系统
US20100293418A1 (en) Memory device, data transfer control device, data transfer method, and computer program product
TWI759370B (zh) 記憶體裝置、記憶體系統及其操作方法
CN104184543A (zh) 一种数据传输的方法、装置和系统
US20140157082A1 (en) Data storage device and method for processing error correction code thereof
KR20110003726A (ko) Sata 인터페이스에서의 crc 관리 방법 및 이를 구현한 데이터 저장 장치
JP6389499B2 (ja) 誤り訂正前に不揮発性固体装置からデータを送信するシステムおよび方法
EP3499376B1 (en) Memory system varying operation of memory controller according to internal status of memory device
KR102262550B1 (ko) 복수의 기능 블록들을 포함하는 반도체 장치 및 그것의 동작 방법
TWI789453B (zh) 記憶體和操作該記憶體的方法
CN103198039A (zh) 一种数据传输控制器及其混合存储装置
US20160004655A1 (en) Computing system and operating method of the same
JP6217192B2 (ja) ストレージ制御装置、制御プログラムおよび制御方法
CN118606238A (zh) 一种系统芯片数据交互系统及方法
JP2009187405A (ja) 制御システム
JP2010140132A (ja) メモリシステム及びメモリコントローラ
TW201832067A (zh) 資料讀取方法及其記憶體儲存裝置

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20170814

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180302

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180817

R150 Certificate of patent or registration of utility model

Ref document number: 6389499

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees