KR20160013808A - 스크램블러에 의한 인코더 바이패스 - Google Patents

스크램블러에 의한 인코더 바이패스 Download PDF

Info

Publication number
KR20160013808A
KR20160013808A KR1020150099373A KR20150099373A KR20160013808A KR 20160013808 A KR20160013808 A KR 20160013808A KR 1020150099373 A KR1020150099373 A KR 1020150099373A KR 20150099373 A KR20150099373 A KR 20150099373A KR 20160013808 A KR20160013808 A KR 20160013808A
Authority
KR
South Korea
Prior art keywords
data
error correction
error
metadata
storage device
Prior art date
Application number
KR1020150099373A
Other languages
English (en)
Other versions
KR102321454B1 (ko
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 KR20160013808A publication Critical patent/KR20160013808A/ko
Application granted granted Critical
Publication of KR102321454B1 publication Critical patent/KR102321454B1/ko

Links

Images

Classifications

    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/785Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes
    • G11C29/789Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes using non-volatile cells or latches
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

제1 물리 위치가 판독 데이터를 획득하기 위해 판독된다. 에러 정정 디코딩이 제1 에러 정정된 메타데이터를 포함하는 에러 정정된 데이터를 획득하기 위해 판독 데이터에 대해 실행된다. 에러 정정 인코딩은 제2 메타데이터와 연계되는, 제2 랜덤 시퀀스와 결합된 제1 랜덤 시퀀스에 대해 실행된다. 에러 정정 인코딩은 제2 인코딩된 데이터를 획득하기 위해 상기 제1 에러 정정된 메타데이터와 연계되는 0의 시퀀스에 대해 또한 실행된다. 제2 물리 위치에 저장되는 이송된 데이터를 획득하기 위해 상기 에러 정정된 데이터, 상기 제1 인코딩된 데이터, 및 상기 제2 인코딩된 데이터가 합산된다.

Description

스크램블러에 의한 인코더 바이패스{ENCODER BY-PASS WITH SCRAMBLER}
본 출원은 2014년 7월 28일에 출원된 ENCODER BY-PASS WITH SCRAMBLER라는 명칭의 미국 가특허 출원 제62/029,860호(대리인 참조 번호 SKHYP034+)에 대한 우선권을 주장하며, 그 전체 내용은 참조로 본 명세서에 병합되어 있다.
고체 상태 기억장치(예컨대, NAND 플래시)와 같은 일부 유형의 기억장치는 종종 (예를 들면, 관련된 논리 어드레스의 변화 없이) 하나의 물리적 위치로부터 다른 물리적 위치로 데이터의 이송을 필요로 한다. 고체 상태 기억장치의 경우에는, 인접한 위치가 너무 많이 판독될 때 기억장치 내의 소정 위치에 부가적인 전류가 고의성없이 추가될 수도 있다. 이로 인해, 저장된 전압 레벨이 증가하며, 일부의 경우에는, 부정확한 비트 값이 역판독(read back)되는 전압 레벨로 증가될 수도 있다. 반대로, 전하가 특정 조건 하에 고체 상태 기억장치 외부로 누설할 수도 있다. 예를 들면, 고체 상태 기억장치 내의 소정 위치의 프로그램 및 소거(P/E) 카운트가 증가함에 따라, 전기 절연이 파괴되어 그 위치가 "누설"되게 한다. "누설" 위치에 저장된 전압은, 데이터가 리프레시되지 않고 오랜 시간 동안 저장되는 경우, 부정확한 비트 값이 역판독되는 레벨로 강하할 수도 있다. 이러한 이유로, 저장된 전압이 적절한 (예컨대, 너무 높지도 너무 낮지도 않은) 레벨로 리프레시하기 위해 고체 상태 기억장치 내의 하나의 위치로부터 다른 위치로 주기적으로 이동된다.
(예컨대, 소비되는 시간 및/또는 전력의 처리량을 감소시키는) 효율적인 방식으로 하나의 물리적 위치로부터 다른 물리적 위치로 저장된 데이터를 이송하기 위한 기술이 존재하지만, 그러한 기술은 스크램블링을 병합하지 못하거나, 모든 데이터를 스크램블하기 위해 동일한 랜덤 비트 시퀀스를 사용하는 기억 시스템에 제한된다. 데이터를 이송하기 위한 효율적인 기술이 (예를 들면, 상이한 랜덤 비트 시퀀스를 사용하여 데이터를 스크램블하는) 덜 제한적인 스크램블러를 포함하는 시스템용으로 개발될 수 있으면 바람직하게 된다.
본 발명의 실시예는 데이터에 대한 에러 정정 인코딩 및 에러 정정 디코딩 뿐만 아니라 스크램블링을 수행할 수 있는 시스템, 방법 및 컴퓨터 프로그램 제품을 제공하는 데 있다.
본 발명의 실시 예에 따른 시스템은 판독 데이터를 획득하기 위해 기억장치 내의 제1 물리 위치를 판독하고, 상기 기억장치 내의 제2 물리 위치에 이송된 데이터를 저장하도록 구성되는 기억장치 인터페이스; 제1 에러 정정된 메타데이터를 포함하는 에러 정정된 데이터를 획득하기 위해 상기 판독 데이터에 대해 에러 정정 디코딩을 실행하도록 구성된 에러 정정 디코더; (1) 제2 메타데이터와 연계되는, 제2 랜덤 시퀀스와 결합되는 (2) 제1 랜덤 시퀀스에 대해 에러 정정 인코딩을 실행하고; 또한 제2 인코딩된 데이터를 획득하기 위해 상기 제1 에러 정정된 메타데이터와 연계되는 0의 시퀀스에 대해 에러 정정 인코딩을 실행하도록 구성되는 에러 정정 인코더; 및 상기 이송된 데이터를 획득하기 위해 (1) 상기 에러 정정된 데이터, (2) 상기 제1 인코딩된 데이터, 및 (3) 상기 제2 인코딩된 데이터를 합산하도록 구성되는 가산기를 포함할 수 있다.
본 발명의 실시 예에 따른 방법은 판독 데이터를 획득하기 위해 기억장치 내의 제1 물리 위치를 판독하는 단계; 제1 에러 정정된 메타데이터를 포함하는 에러 정정된 데이터를 획득하기 위해 상기 판독 데이터에 대해 에러 정정 디코딩을 실행하도록 에러 정정 디코더를 사용하는 단계; (1) 제2 메타데이터와 연계되는, 제2 랜덤 시퀀스와 결합되는 (2) 제1 랜덤 시퀀스에 대해 에러 정정 인코딩을 실행하고; 또한 제2 인코딩된 데이터를 획득하기 위해 상기 제1 에러 정정된 메타데이터와 연계되는 0의 시퀀스에 대해 에러 정정 인코딩을 실행하도록 에러 정정 인코더를 사용하는 단계; 이송된 데이터를 획득하기 위해 (1) 상기 에러 정정된 데이터, (2) 상기 제1 인코딩된 데이터, 및 (3) 상기 제2 인코딩된 데이터를 합산하는 단계; 및 상기 기억장치 내의 제2 물리 위치에 상기 이송된 데이터를 저장하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 컴퓨터 프로그램 제품은 비일시적인 컴퓨터로 판독 가능한 기억 매체에서 구현되고, 판독 데이터를 획득하기 위해 기억장치 내의 제1 물리 위치를 판독하며; 제1 에러 정정된 메타데이터를 포함하는 에러 정정된 데이터를 획득하기 위해 상기 판독 데이터에 대해 에러 정정 디코딩을 실행하고; (1) 제2 메타데이터와 연계되는, 제2 랜덤 시퀀스와 결합되는 (2) 제1 랜덤 시퀀스에 대해 에러 정정 인코딩을 실행하며; 제2 인코딩된 데이터를 획득하기 위해 상기 제1 에러 정정된 메타데이터와 연계되는 0의 시퀀스에 대해 에러 정정 인코딩을 실행하고; 이송된 데이터를 획득하기 위해 (1) 상기 에러 정정된 데이터, (2) 상기 제1 인코딩된 데이터, 및 (3) 상기 제2 인코딩된 데이터를 합산하며; 또한 상기 기억장치 내의 제2 물리 위치에 상기 이송된 데이터를 저장하기 위한 컴퓨터 명령을 포함할 수 있다.
본 발명의 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품은 데이터에 대한 에러 정정 인코딩 및 에러 정정 디코딩 뿐만 아니라 스크램블링을 수행할 수 있다.
본 발명의 여러 가지 실시예가 아래의 상세한 설명 및 첨부하는 도면에 개시된다.
도 1은 스크램블러를 포함하는 기억 시스템에서의 데이터 이송 프로세스의 일 실시예를 예시하는 플로우차트이다.
도 2a는 호스트로부터의 기록 명령에 응답하여 데이터를 저장하는 기억 시스템의 일 실시예를 예시하는 도면이다.
도 2b는 데이터를 이송하는 기억 시스템의 일 실시예를 예시하는 도면이다.
도 3은 데이터 이송 프로세스 동안 에러 정정 인코더 및 에러 정정 디코더와 관련된 처리 시간을 예시하는 타이밍도이다.
도 4는 가산형의 스크램블러의 일 실시예를 예시하는 도면이다.
본 발명은 다양한 방식으로 실현될 수 있으며, 프로세스; 장치; 시스템; 물질의 구성; 컴퓨터로 판독 가능한 기억 매체 상에서 구현되는 컴퓨터 프로그램 제품; 및/또는 프로세서에 결합되는 메모리에 의해 제공되는 및/또는 그 메모리에 저장된 명령을 실행하도록 구성되는 프로세서와 같은 프로세서로서 포함한다. 이 명세서에서, 이들 실시 또는 본 발명이 취할 수 있는 임의의 다른 형태가 기술이라고 칭해질 수도 있다. 일반적으로, 개시된 프로세스의 단계들의 순서가 본 발명의 범위 내에서 변경될 수도 있다. 다른 언급이 없으면, 태스크를 실행하도록 구성되는 것으로 기재된 메모리 또는 프로세서와 같은 구성요소는 소정 시간에 태스크를 실행하도록 일시적으로 구성되는 범용 구성요소이거나 태스크를 실행하도록 제조되는 특수 구성요소로서 실현될 수도 있다. 본 명세서에 사용된 바와 같이, 용어 '프로세서'는 컴퓨터 프로그램 명령과 같은 데이터를 처리하도록 구성되는 하나 이상의 디바이스, 회로 및/또는 처리 코어를 칭한다.
본 발명의 하나 이상의 실시예의 상세한 설명이 발명의 원리를 예시하는 첨부하는 도면과 함께 아래에 제공된다. 본 발명은 그러한 실시예와 관련하여 기재되지만, 본 발명은 어느 한 실시예에 제한되지는 않는다. 발명의 범위는 청구범위에 의해서만 제한되고, 본 발명은 다수의 변형, 수정 및 등가물을 포함한다. 다수의 특정 상세가 본 발명의 전체적인 이해를 제공하기 위해 아래의 설명에 제시된다. 이들 상세는 예시적인 목적으로 제공되며, 본 발명은 이들 특정 상세의 일부 도는 모두 없이 청구범위에 따라서 실시될 수도 있다. 명확하게 하기 위해, 발명에 관한 기술 분야에서 알려져 있는 기술 자료는 상세하게 기재되지 않았으므로, 본 발명이 불필요하게 불명확하지 않게 되었다.
도 1은 스크램블러를 포함하는 기억 시스템에서의 데이터 이송 프로세스의 일 실시예를 예시하는 플로우차트이다. 일부 실시예에서는, 프로세스는 기억장치 제어기에 의해 실행된다. 일부 실시예에서는, 프로세서는 고체 상태 기억 시스템(예컨대, NAND 플래시 기억 시스템)에서 실행된다.
100에서, 기억장치 내의 제1 물리 위치가 판독 데이터를 획득하기 위해 판독된다. 본 명세서에 기재된 예에서는, 제1 물리 위치는 종종 종전 물리 위치(즉, 데이터가 그로부터 이송되는 물리 위치)라고 칭해진다. 여러 실시예에서, 판독 데이터는 하드 데이터(예컨대, 0과 1들만이 리턴되는 경우) 또는 소프트 데이터(예컨대, 1 또는 0이 리턴되는 것에 덧붙여, 비트 값이 있을 가능성 또는 확실성이 또한 리턴되는 경우)를 포함한다. 후자의 일례로서, 일부 실시예에서는, 판독 데이터는 로그 가능성 비(LLR: log-likelihood ratio) 값을 포함하고, 여기에서 부호가 비트 값을 나타내고(예컨대, 양의 값이 0에 대응하고 음의 값이 1에 대응하거나, 그 역도 가능함) 크기가 그 값의 가능성 또는 확실성을 나타낸다(예컨대, 더 큰 크기가 더 강한 가능성 또는 확실성에 대응한다).
여러 실시예에서, 단계 100에서의 제1 물리 위치가 식별될 수도 있고/있거나 도 1의 프로세스가 다양한 검출 기술을 사용하여 개시될 수도 있다. 예를 들면, 매우 많은 판독 방해 노이즈가 블록에 추가되었을 때 검출을 시도하는 기억장치 제어기 내에 판독 방해 검출 블록이 존재할 수도 있다. 판독 방해 검출 블록이 특정 물리 위치에 매우 많은 판독 방해 노이즈가 추가되었다고 믿는 경우, 도 1의 프로세스가 그 물리 위치에서 실행될 수도 있다. 임의의 적절한 판독 방해 검출 기술이 사용될 수도 있다.
유사하게, 일부 실시예에서는, 도 1의 프로세스는 특정 물리 위치에 대한 프로그램 및 소거(P/E) 카운트가 특정 임계값에 도달하고/도달하거나 그 물리 위치가 특정 시간 동안 터치되지(예컨대, 프로그램되거나 소거되지) 않았을 때 특정 물리 위치에서 트리거된다. 그러한 조건은 내부에 저장된 전압 레벨을 바람직하지 못한 레벨로 강하시킬 수도 있고, 저장된 데이터를 새로운 물리 위치로 이송하는 것이 바람직할 수도 있다.
102에서, 에러 정정된 데이터를 획득하기 위해 판독 데이터에 대해 에러 정정 디코딩이 실행되며, 여기에서 에러 정정된 데이터는 제1 메타데이터를 포함한다. 일부 실시예에서는, 저장된 데이터가 BCH 코드 또는 저밀도 패리티 체크(LDPC) 코드를 사용하여 인코딩되고 대응하는 디코더가 사용된다. 판독 데이터의 유형(예컨대, 하드 데이터 대 소프트 데이터)에 따라서, 하드 입력 에러 정정 디코더 또는 소프트 입력 에러 정정 디코더가 단계 102에서 채용될 수도 있다.
단계 102의 일례에서, 판독 데이터는 개념적으로는 아래로서 여겨질 수도 있으며:
판독 데이터 = [u + s1,m1,p1] + 노이즈 (1)
여기에서 u는 사용자 또는 호스트 데이터이고 s1은 (예컨대, 기억 또는 판독 프로세스 동안) 데이터를 스크램블하기 위해 사용되었던 제1(의사) 랜덤 시퀀스이다. 자연스럽게, 시퀀스 u 및 s1은 동일한 길이를 갖거나 그렇지 않으면 시퀀스 u가 s1에 의해 완전히 또는 전체적으로 스크램블되지 않게 된다. 본 명세서에 기재되어 있는 일부 실시예에서는, 데이터를 스크램블하기 위해 사용되는 랜덤 시퀀스(예컨대, 이 경우에는 s1)는 데이터가 저장될 물리 위치에 따른다. 예를 들면, 의사 난수 발생기(PRNG)에 공급되는 시드(seed)는 데이터가 저장되는(저장될) 물리 위치에 따를 수도 있다. 이것이 데이터의 물리 위치가 알려지는 한, 의사 랜덤 시퀀스가 알려지게 한다(예를 들면, 선험).
식 (1)로 되돌아가서, m1은 (예컨대, 다양한 것을 저장하기 위해 기억장치 제어기에 의해 사용될 수도 있고 이 기술에 관련 없는) 제1 메타데이터이고, p1은 (예컨대, 기록 또는 기억 프로세스 동안 (스크램블 후에) 에러 정정 인코더에 의해 생성되는) 제1 패리티 정보이다. 식 (1)에서의 노이즈는 부가적인 노이즈이다.
결과적인 에러 정정된 데이터는 (노이즈에 의해 도입되는 비트 에러의 수가 코드의 에러 정정 확률 내에 있다고 가정하면) 아래이다.
에러 정정된 데이터 =
Figure pat00001
. (2)
이 버전이 에러 정정 버전인 것을 명확히 나타내기 위해, "^"이 각각에 부가되어 있다.
104에서, 에러 정정 인코딩은 (1) 제2 메타데이터와 연계된 제2 랜덤 시퀀스와 결합된 (2) 제1 랜덤 시퀀스에 대해 실행된다. 일부 실시예에서는, 제1 랜덤 시퀀스와 제2 랜덤 시퀀스가 가산기를 사용하여 및/또는 배타적 논리합(XOR) 함수를 사용하여 결합된다.
단계 104에 의해 언급된 제1 랜덤 시퀀스는 식 (1)에서 저장된 데이터를 스크램블하기 위해 사용된 (의사) 랜덤 시퀀스(즉, s1)이다. 상응하여, 단계 104에 의해 언급된 제2 랜덤 시퀀스는 새로운 (의사) 랜덤 시퀀스(즉, s2) 예컨대, 새로운 물리 위치에 의존할 수도 있는 값이다. 주목할 점은, u, s1 및 s2의 길이가 모두 동일하다는 것이다. 보편성을 위해, 새로운 메타데이터(즉, m2)가 존재할 것이라고 또한 가정된다. 따라서, 이 첫 번째로 에러 정정 인코더에 입력되는 시퀀스는 아래이고
제1 인코더 입력 =
Figure pat00002
. (3)
이 첫 번째 출력은 아래이다.
제1 인코더 출력 =
Figure pat00003
. (4)
일부 실시예에서는, 에러 정정 디코딩이 단계 102에서 실행되는 동안 에러 정정 인코딩이 단계 104에서 실행되고/실행되거나 2개의 단계가 동시에 또는 일제히 시작한다. 주목할 점은, 단계 104로의 입력의 어느 것도(즉, s1, s2, 및 m2) 단계 102의 완료를 필요로 하지 않기 때문에, 단계 102에서 에러 정정 디코딩이 실행되는 동안 단계 104에서 에러 정정 인코딩이 실행될 수 있다는 것이다. 다르게 말하면, s1, s2, 및 m2가 예정보다 빨리 모두 알려져서 에러 정정 디코딩은 그들 값이 알려지게 하기 위해 완료될 필요가 없다(예를 들면, 제1 및 제2 랜덤 시퀀스 및 제2 메타데이터는 종전 논리 어드레스 및/또는 새로운 물리 어드레스로부터 단독으로 생성되거나 또는 계산될 수도 있으며, 그에 따라 에러 정정 디코딩의 완료는 단계 104가 시작하기 위해 필요하지 않게 된다).
106에서, 에러 정정 인코딩은 제2 인코딩된 데이터를 획득하기 위해 제1 에러 정정된 메타데이터와 연계된 0의 시퀀스에 대해 실행된다. 단계 104와 달리, 단계 106은 단계 106에 입력되는 제1 메타데이터의 버전이 에러 정정된 버전이기 때문에 단계 102의 완료를 필요로 한다. 판독된 데이터가 제1 메타데이터의 버전을 포함하더라도, 그 버전은 에러를 포함할 수도 있으므로 단계 106은 에러 정정 디코딩이 (성공적으로) 완료된 후에 제1 메타데이터를 사용한다. 이 두 번째의 인코더로의 입력은 아래이고
제2 인코더 입력 =
Figure pat00004
(5)
여기에서 0의 시퀀스는 u, s1 및 s2와 동일한 길이를 갖는다. 이전과 같이, 여기에서 입력되는 제2 메타데이터의 버전이 에러 정정된 버전인 것을 명확하게 나타내기 위해, "^"가 식 (5)에 도시되어 있다. 이 두 번째의 인코더의 출력은 아래이다.
제2 인코더 출력 =
Figure pat00005
(6)
이하 더욱 상세히 기재되는 바와 같이, 0의 시퀀스는 104에서의 첫 번째와 비교하여 106에서 이 두 번째에 에러 정정 인코딩이 더욱 신속하게 실행될 수 있게 한다.
108에서, (1) 에러 정정된 데이터, (2) 제1 인코딩된 데이터, 및 (3) 제2 인코딩된 데이터가 이송된 데이터를 획득하기 위해 합산된다. 다르게 말하면, 이송된 데이터는 에러 정정 디코더의 출력(즉, 단계 102), 에러 정정 인코더의 제1 출력(즉, 단계 104), 및 에러 정정 인코더의 제2 출력(즉, 단계 106)을 (예컨대, XOR을 사용하여) 합산함으로써 획득된다. 즉,
이송된 데이터 =
Figure pat00006
. (7)
동일한 비트 시퀀스 중 2개가 함께 합산될 때, 이들은 서로 상쇄된다. 에러 정정된 버전이 정정된 것으로 취해지기 때문에(즉,
Figure pat00007
), 소거 후의 식 (7)은 아래로 축소된다.
이송된 데이터 =
Figure pat00008
(8)
주목할 점은 사용되는 에러 정정 코드가 선형이기 때문에,
Figure pat00009
이라는 것이다. 이것은 선형 코드를 사용하여 인코딩하기 전에 3개의 입력 비트 시퀀스(즉,
Figure pat00010
Figure pat00011
)가 합산되는 경우, 생성되는 단일 패리티 시퀀스(즉, p2)는 3개의 입력 비트 시퀀스의 각각이 개별적으로 또는 별개로 인코딩되어 3개의 결과적인 패리티 시퀀스(즉,
Figure pat00012
p3, 및 p4)가 합산된 것처럼 동일한 값이 되기 때문이다.
110에서, 이송된 데이터는 기억장치 내의 제2 물리 위치에 저장된다. 논리 대 물리 맵핑 테이블은 (예를 들면, 호스트가 판독 명령을 발하는 경우 이송된 데이터가 그 새로운 물리 위치로부터 적절히 검색될 수 있도록) 새로운(즉, 제2) 물리 위치로 갱신될 수도 있다.
아래의 도면들은 도 1의 프로세스를 실행할 수도 있는 기억 시스템의 일례를 도시한다. 먼저, (예컨대, 호스트로부터의 기록 명령을 수신하는 것에 응답하여) 그 원래의 또는 초기 물리 위치에 데이터를 저장하는 것과 관련된 구성요소가 기재된다. 그 후, 그 종전 물리 위치로부터 그 새로운 물리 위치로 데이터를 이송하는 것과 관련된 구성요소가 기재된다.
도 2a는 호스트로부터의 기록 명령에 응답하여 데이터를 저장하는 기억 시스템의 일 실시예를 예시하는 도면이다. 도시된 예에서는, 기억장치는 고체 상태 기억장치지만, 자연스럽게 기술은 다른 유형의 기억장치에 적용 가능하다. 도시된 예에서는, 호스트(200)가 기억장치 제어기(210)에 기록 명령(도시 생략)을 발행한다. 일부 실시예에서는, 기억장치 제어기(210)는 주문형 반도체(ASIC: application-specific integrated circuit) 또는 필드 프로그램 가능한 게이트 어레이(FPGA: field-programmable gate array)와 같은 반도체 디바이스이다. 판독 가능성을 확보하기 위해, 데이터가 이송될 때 사용되지만 데이터가 초기에 저장될 때 사용되지 않는 일부 구성요소는 이 도면에서 도시되어 있지 않다.
(다음 도면에서 종전 물리 위치라고 칭해지는) 물리 위치가 의사 난수 발생기(PRNG)(212)에 전달된다. 물리 어드레스를 선택하거나 고르기 위한 임의의 적절한 기술이 채용될 수도 있고, 이것이 본 명세서에 기재된 기술에 중요한 사항이 아니므로 간결하게 하기 위해 이는 본 명세서에 기재되어 있지 않다. 물리 위치를 사용하여, PRNG(212)가 제1 의사 랜덤 시퀀스(s1)를 생성한다.
가산기(214)는 제1 의산 랜덤 시퀀스(즉, s1)와 호스트(200)로부터 수신되는 기록 데이터(즉, u)를 가산한다. 일부 실시예에서는, 가산기(214)가 입력에 대한 배타적 논리합(XOR) 연산을 실행한다.
가산기(214)의 출력(즉, u+s1)은 연계장치(218)에 전달되고, 연계장치(218)가 가산기(214)의 출력을 메타데이터 생성기(216)에 의해 생성되는 제1 메타데이터(즉, m1)와 연계시킨다. 메타데이터 생성기(216)는 (이 예에서는 적어도) 물리 위치에 기초하여 메타데이터를 생성한다.
연계장치(218)의 출력(즉, [u+s1,m1])은 에러 정정 인코더(220)에 전달된다. 상술한 바와 같이, 일부 실시예에서는, 에러 정정 인코더(220)가 BCH 인코더 또는 LDPC 인코더일 수도 있다. 에러 정정 인코더(220)의 출력(즉, [u+s1,m1,p1])은 고체 상태 기억장치(250)의 물리 위치(252)에 저장된다. 상술한 바와 같이, 물리 위치(252)는 다음의 도면에서 종전의 물리 위치라고 칭해진다.
이 예에서는, 스크램블러가 승산형의 스크램블러가 아니라 가산형의 스크램블러이다. 가산 스크램블러는 길이가 짧을 때 승산 스크램블러에 비해 더 나쁜 랜덤성을 갖는다. 그러나, 이것은 일반적으로 기억 시스템이 다루는 데이터의 길이(예컨대, 2K, 4K 등)에 관련이 없다. 그리고 승산 스크램블러와 달리, 가산 스크램블러는 병렬로 실현될 수 있다.
(에러 정정 인코딩 전에 가산형 스크램블하는) 이 특별한 구성에 의해 판독 데이터만이 스크램블되는 한편, 에러 정정 인코더에 의해 생성되는 패리티 정보는 스크램블되지 않는다. 이와 같이, 패리티 비트는 기록 데이터 비트에 비해 0과 1 사이에 더 나쁜 균형을 가질 수도 있다. 그러나, 이것은 모든 트레이드오프(tradeoff)가 고려될 때 일부 어플리케이션에 대해 허용 가능하게 될 수도 있다.
아래의 도면은 도 1의 프로세스를 실행하는 구성요소를 도시한다. 가독성을 확보하기 위해, 가산기(214) 및 연계장치(218)는 아래의 도면에 도시되지 않는다.
도 2b는 데이터를 이송하는 기억 시스템의 일 실시예를 예시하는 도면이다. 도 2b는 공간적인 제약으로 인해 일부 구성요소가 추가되고 나머지는 제거된 이후의 시점에서 도 2a에 도시된 시스템을 도시한다. 상술한 바와 같이, 기억장치 제어기(210)는 다양한 타이머 및/또는 이벤트로 인해 종전의 물리 위치(252)의 데이터를 새로운 물리 위치(254)로 이송하도록 결정할 수도 있다. 임의의 적절한 기술이 종전의 물리 위치(252)의 데이터가 이송될 것을 결정하기 위해 사용될 수도 있고, 임의의 적절한 기술이 새로운 물리 위치를 고르기 위해 사용될 수도 있다.
도시된 예에서는, 판독 데이터(예컨대, 식 (1) 참조)가 고체 상태 기억장치(250)의 종전의 물리 위치(252)로부터 획득된다. 일부 실시예에서는, 기억장치 제어기(210)는 고체 상태 기억장치(250)로부터 판독하고 그에 기록하는 기억장치 인터페이스를 포함한다. 공간 제약으로 인해, 기억장치 인터페이스는 이 도면에 도시되지 않는다. 일부 실시예에서는, 판독 데이터가 소프트 데이터를 포함하는 경우, 기억장치 인터페이스는 소프트 데이터를 획득하기 위해 다수의 판독 임계값에서 다수 회 종전의 물리 위치(252)를 판독한다. 그러한 기억장치 인터페이스는 도 1에서 단계 100을 실행하는 기억장치 제어기(210) 내의 구성요소의 일례이다.
판독 데이터는 고체 상태 기억장치(250)로부터 에러 정정된 데이터를 생성하는 에러 정정 디코더(260)에 전달된다. 주목할 점은 예를 들면, 에러 정정 디코더(260)의 출력에 포함되는 "^" 표기는 그들이 에러 정정 디코딩되었다는 것을 나타내기 위한 것이란 점이다. 에러 정정 디코더(260)는 단계 102에서 에러 정정 디코딩을 실행하는 구성요소의 일례이다. 상술한 바와 같이, 일부 실시예에서는, 에러 정정 디코더(260)는 이하: 소프트 입력 에러 정정 디코더, BCH 디코더, 또는 LDPC 디코더 중 하나 이상을 포함한다.
에러 정정 디코더(260)가 판독 데이터를 처리하고 있는 동안, 에러 정정 인코더(220)는 제1 인코딩된 데이터(즉, [s1+s2,m2,p2])를 생성하기 위해 제1 인코더 입력(즉, [s1+s2,m2])을 처리한다. 제1 인코더 입력 내의 랜덤 시퀀스 s1 및 s2는 의사 난수 발생기(212)로부터 나오고 (이 예에서는 적어도) 종전의 물리 위치와 새로운 물리 위치를 각각 기초로 한다. 제1 인코더 입력으로부터의 제2 메타데이터(즉, m2)는 메타데이터 생성기(216)로부터 나오고 새로운 물리 위치를 기초로 한다. 상술한 바와 같이, 도 2a로부터의 가산기(214) 및 연계장치(218)는 공간 제약으로 인해 도 2b에서 도시되지 않지만, 이들은 필요한 경우 제1 및 제2 인코더 입력을 생성하기 위해 사용될 수도 있다.
제1 입력이 처리되면, 에러 정정 인코더(220)는 제2 인코딩된 데이터(예컨대, 식 (6) 참조)를 생성하기 위해 제2 입력(즉,
Figure pat00013
)을 처리한다. 제2 인코더 입력으로부터의 에러 정정된 제1 메타데이터(즉,
Figure pat00014
)는 에어 정정 디코더(260)의 출력으로부터 나온다. 일부 실시예에서는, 에러 정정 인코더(220)가 제2 인코더 입력의 선두에서 0의 시퀀스를 바이패스하고(예를 들면, 제1 인코더 입력 내의 0의 시퀀스의 길이에 대응하는 다수의 0을 직접 출력) 0이 아닌 부분을 처리하도록 바로 진행한다. 이것은 제1 시간에 비해 제2 시간을 대략 처리 시간을 가속시킨다. 상술한 바와 같이, 에러 정정 인코더(220)는 도 1로부터 단계 104 및 106을 실행하는 구성요소의 일례이다.
에러 정정 디코더(260)로부터의 에러 정정된 데이터 및 에러 정정 인코더(220)로부터의 제1 및 제2 인코딩된 데이터가 가산기(262)에 의해 합산된다. 가산기(262)는 도 1의 단계 108을 실행하는 구성요소의 일례이다.
이송된 데이터는 그 후 고체 상태 기억장치(250) 내의 새로운 물리 위치(254)에 저장된다. 상술한 바와 같이, 기억장치 제어기(210) 내의 기억장치 인터페이스(도시 생략)는 (예를 들면, 이송된 데이터로 새로운 물리 위치(254)를 프로그램하기 위해 필요한 경우 새로운 물리 위치(254)가 하나 이상의 프로그램 펄스를 경험하게 함으로써) 도 1의 단계 110을 실제로 실행하기 위한 구성요소일 수도 있다.
아래의 도면은 도 1의 일부 단계에 대응하는 타이밍도의 예를 도시한다. 아래에 더욱 상세히 기재되는 바와 같이, 아래의 타이밍도 및 관련 논의는 도 1의 프로세스가 일부 다른 이송 기술에 비해 더 빠른 이유를 보여준다.
도 3은 데이터 이송 프로세스 동안 에러 정정 인코더 및 에러 정정 디코더와 관련된 처리 시간을 예시하는 타이밍도이다. 도시된 예에서는, 도시된 처리 시간은 반드시 일정 비율은 아니다. 시간(300, 302 및 304)의 길이의 각각은 일부 대응 처리를 실행하는 데 소비된 처리 시간의 크기를 나타낸다. 시간(300)(즉, tdecoder)은 판독 데이터에 대해 에러 정정 디코딩을 실행하는 에러 정정 디코더에 의해 소비되는 처리 시간의 크기이다. 도 1에서, 이것은 단계 102를 실행하는 데 소비되는 처리 시간의 크기에 대응한다.
속도를 높이기 위해, 이 예에서는, 도 1의 단계 104에서의 에러 정정 인코딩이 단계 102에서의 에러 정정 디코딩이 실행되는 동안 실행된다. 이와 같이, 시간(300 및 302)의 선두는 정렬되고, 여기에서 시간(302)(즉, tencoder1)은 제1 인코딩 프로세스에서 소비되는 처리 시간의 크기이다. 도 1에서, 이것은 단계 104를 실행하는 데 소비되는 시간의 크기에 대응한다. 디코딩은 일반적으로 인코딩보다 실행하는 데 더 긴 시간이 걸리고, 이와 같이 시간(300 및 302)의 길이는 tdecoder>tencoder1가 되도록 된다.
제2 인코딩 프로세스로의 입력이 디코딩 프로세스의 출력에 따르기 때문에, (제2 인코딩 프로세스에 소비되는 처리 시간의 크기에 대응하는) 시간(304)의 선두는 시간(300)의 후미와 정렬된다.
시간(304)(즉, tencoder2)은, 제1 인코더 입력 및 제2 인코더 입력의 길이가 제2 인코더 입력 내의 0의 시퀀스로 인해 동일하더라도 tencoder2에 비해 비교적 짧다. 일반적으로 말하면, 에러 정정 코드는 유한 필드 F 상의 (n,k) 선형 코드이고 C로서 표기되며, 여기에서 코드 길이는 n이고 정보 길이는 k이다. CcH = 0이 되도록 n 벡터 cC 모든 길이의 세트이고, 여기에서 HC의 패리티 체크 매트릭스이다. 바꿔 말하면, F n 의 선형 서브공간으로서 CH의 영 공간(null space)이다. 임의의 선형 코드에 대해, 2개의 유효 코드워드의 합은 또한 유효한 코드워드이다. 유효한 코드워드의 임의의 선형 조합은 또한 유효한 코드워드를 제공한다. C의 인코딩은 F 상의 n 매트릭스에 의해 k인 생성 매트릭스 G와 입력 비트 시퀀스(예컨대, u)를 승산함으로써 달성될 수 있다. 하나의 패리티 체크 매트릭스는 다수의 생성 매트릭스와 연관될 수 있다. 인코딩은 생성 매트릭스 중 어느 하나와 정보 벡터를 승산함으로써 달성될 수 있다. 2개의 선형 서브공간의 교차도 또한 선형 서브공간이다.
(0의 시퀀스로 인해 제2 인코딩 프로세스 동안의 경우와 같은) 인코딩되고 있는 입력 비트 시퀀스의 작은 부분만이 0이 아닌 경우, 고속 인코딩이 (예컨대, 0 부분을 스킵함으로써) G를 기초로 하거나 (예컨대, 소거로서 패리티 비트를 이용하여 디코딩함으로써) H를 기초로 하여 실행될 수 있다. 어느 경우에나, 인코딩 계산 복잡도 및 레이턴시(latency)는 입력 비트 시퀀스의 0이 아닌 부분의 길이(즉, 의 길이)에 비례한다. 이것이 tencoder2가 tencoder1보다 엄격히 짧아지게 할 수 있고, 이것이 시간(302 및 304)의 길이에 반영된다.
그러므로, 총 처리 시간은 대략 tdecoder+tencoder2이며, 여기에서 tencoder2는 0이 아닌 비트 시퀀스를 에러 정정 인코드하는 데 필요한 일반적인 시간의 크기보다 매우 짧다(예를 들면, tencoder1의 길이 참조). 디코딩된 데이터와 2개의 인코딩된 데이터를 함께 가산하기 위한 시간의 크기와 같은 일부 비교적 작은 크기의 시간은 총 처리 시간에 포함되지 않는다. (예컨대, 종전의 물리 위치를 판독하고, 판독된 데이터를 에러 정정 디코딩하며, 에러 정정된 사용자 데이터를 스크램블한 후 스크램블된 데이터를 에러 정정 인코딩하는) 간단한 방식으로 데이터 이송을 실행하는 일부 다른 시스템은, 0이 아닌 비트 시퀀스의 인코딩이 많은 0을 갖는 비트 시퀀스를 인코딩하는 것보다 더 긴 시간이 걸리기 때문에 더 긴 시간이 걸린다. 예를 들면, tencoder2의 길이가 tdecoder를 뒤따르는 것 대신에, tencoder1의 길이가 뒤따르는 것이다. 상술한 데이터 이송 기술은 따라서, 스크램블러가 여전히 사용되도록 허용하면서도 고속이다.
도 4는 가산형의 스크램블러의 일 실시예를 예시하는 도면이다. 도시된 예에서는, 스크램블러는 플립플롭의 체인(400)을 포함한다. 시드 값(이 예에서는, 100101010000000)이 플립플롭의 체인에 로드된다. 시드 값이 로드되면, 체인 내의 각각의 플립플롭이 자신의 저장된 값을 체인 내의 다음의 플립플롭에 전달한다. 제14 레지스터의 출력은 가산기(404)를 사용하여 제15 레지스터의 출력과 결합된다.
가산기(404)의 출력은 체인(400)의 선두에 뿐만 아니라 가산기(402)에 전달된다. 가산기(402)는 입력 비트 시퀀스(즉, 스크램블되는 것)를 가산기(404)의 출력(즉, 입력 비트 시퀀스를 스크램블하는 데 사용되는 (의사) 랜덤 비트 시퀀스)과 결합시킨다. 가산기(402)의 출력은 스크램블된 비트 시퀀스이다.
도 2a와 도 4를 비교하면, 가산기(402)는 가산기(214)에 대응하고, 체인(400) 및 가산기(404)는 집합적으로 의사 난수 발생기(212)에 대응한다(즉, 가산기(404)의 출력은 스크램블러에 입력되는 비트 시퀀스를 스크램블하는 데 사용되는 난수이다).
이상의 실시예는 이해를 명확하게 하기 위하여 일부 상세하게 기재되어 있지만, 본 발명은 제공된 상세에 제한되는 것은 아니다. 발명을 실현하는 다수의 변형된 방법이 존재한다. 개시된 실시예는 예시적인 것일 뿐 제한적인 것이 아니다.
200: 호스트
210: 기억장치 제어기
212: 의사 난수 발생기
214: 가산기
216: 메타데이터 생성기
218: 연계장치
220: 에러 정정 인코더
250: 고체 상태 기억장치
252: (종전의)물리 위치

Claims (14)

  1. 판독 데이터를 획득하기 위해 기억장치 내의 제1 물리 위치를 판독하고, 상기 기억장치 내의 제2 물리 위치에 이송된 데이터를 저장하도록 구성되는 기억장치 인터페이스;
    제1 에러 정정된 메타데이터를 포함하는 에러 정정된 데이터를 획득하기 위해 상기 판독 데이터에 대해 에러 정정 디코딩을 실행하도록 구성된 에러 정정 디코더;
    (1) 제2 메타데이터와 연계되는, 제2 랜덤 시퀀스와 결합되는 (2) 제1 랜덤 시퀀스에 대해 에러 정정 인코딩을 실행하고; 또한 제2 인코딩된 데이터를 획득하기 위해 상기 제1 에러 정정된 메타데이터와 연계되는 0의 시퀀스에 대해 에러 정정 인코딩을 실행하도록 구성되는 에러 정정 인코더; 및
    상기 이송된 데이터를 획득하기 위해 (1) 상기 에러 정정된 데이터, (2) 상기 제1 인코딩된 데이터, 및 (3) 상기 제2 인코딩된 데이터를 합산하도록 구성되는 가산기를 포함하는 시스템.
  2. 제1항에 있어서,
    상기 시스템은 주문형 반도체(ASIC: application-specific integrated circuit) 또는 필드 프로그램 가능한 게이트 어레이(FPGA: field-programmable gate array) 중 하나 이상을 포함하는 반도체 디바이스를 포함하는 시스템.
  3. 제1항에 있어서,
    에러 정정 디코딩이 상기 판독 데이터에 대해 실행되는 동안, 에러 정정 인코딩이 (1) 상기 제2 메타데이터와 연계되는 상기 제2 랜덤 시퀀스와 결합되는 (2) 상기 제1 랜덤 시퀀스에 대해 실행되는 시스템.
  4. 제1항에 있어서,
    상기 기억장치는 고체 상태 기억장치를 포함하는 시스템.
  5. 제1항에 있어서,
    상기 에러 정정 인코더 및 상기 에러 정정 디코더는 BCH 코드 또는 저밀도 패리티 체크(LDPC) 코드 중 하나 이상을 사용하도록 구성되는 시스템.
  6. 판독 데이터를 획득하기 위해 기억장치 내의 제1 물리 위치를 판독하는 단계;
    제1 에러 정정된 메타데이터를 포함하는 에러 정정된 데이터를 획득하기 위해 상기 판독 데이터에 대해 에러 정정 디코딩을 실행하도록 에러 정정 디코더를 사용하는 단계;
    (1) 제2 메타데이터와 연계되는, 제2 랜덤 시퀀스와 결합되는 (2) 제1 랜덤 시퀀스에 대해 에러 정정 인코딩을 실행하고; 또한 제2 인코딩된 데이터를 획득하기 위해 상기 제1 에러 정정된 메타데이터와 연계되는 0의 시퀀스에 대해 에러 정정 인코딩을 실행하도록 에러 정정 인코더를 사용하는 단계;
    이송된 데이터를 획득하기 위해 (1) 상기 에러 정정된 데이터, (2) 상기 제1 인코딩된 데이터, 및 (3) 상기 제2 인코딩된 데이터를 합산하는 단계; 및
    상기 기억장치 내의 제2 물리 위치에 상기 이송된 데이터를 저장하는 단계를 포함하는 방법.
  7. 제6항에 있어서,
    상기 방법은 주문형 반도체(ASIC: application-specific integrated circuit) 또는 필드 프로그램 가능한 게이트 어레이(FPGA: field-programmable gate array) 중 하나 이상을 포함하는 반도체 디바이스에 의해 실행되는 방법.
  8. 제6항에 있어서,
    에러 정정 디코딩이 상기 판독 데이터에 대해 실행되는 동안, 에러 정정 인코딩이 (1) 상기 제2 메타데이터와 연계되는 상기 제2 랜덤 시퀀스와 결합되는 (2) 상기 제1 랜덤 시퀀스에 대해 실행되는 방법.
  9. 제6항에 있어서,
    상기 기억장치는 고체 상태 기억장치를 포함하는 방법.
  10. 제6항에 있어서, 상기 에러 정정 인코딩을 실행하는 것 및 상기 에러 정정 디코딩을 실행하는 것은 BCH 코드 또는 저밀도 패리티 체크(LDPC) 코드 중 하나 이상을 사용하는 것을 포함하는 방법.
  11. 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 비일시적인 컴퓨터로 판독 가능한 기억 매체에서 구현되고,
    판독 데이터를 획득하기 위해 기억장치 내의 제1 물리 위치를 판독하며;
    제1 에러 정정된 메타데이터를 포함하는 에러 정정된 데이터를 획득하기 위해 상기 판독 데이터에 대해 에러 정정 디코딩을 실행하고;
    (1) 제2 메타데이터와 연계되는, 제2 랜덤 시퀀스와 결합되는 (2) 제1 랜덤 시퀀스에 대해 에러 정정 인코딩을 실행하며;
    제2 인코딩된 데이터를 획득하기 위해 상기 제1 에러 정정된 메타데이터와 연계되는 0의 시퀀스에 대해 에러 정정 인코딩을 실행하고;
    이송된 데이터를 획득하기 위해 (1) 상기 에러 정정된 데이터, (2) 상기 제1 인코딩된 데이터, 및 (3) 상기 제2 인코딩된 데이터를 합산하며; 또한
    상기 기억장치 내의 제2 물리 위치에 상기 이송된 데이터를 저장하기 위한
    컴퓨터 명령을 포함하는 컴퓨터 프로그램 제품.
  12. 제11항에 있어서,
    에러 정정 디코딩이 상기 판독 데이터에 대해 실행되는 동안, 에러 정정 인코딩이 (1) 상기 제2 메타데이터와 연계되는 상기 제2 랜덤 시퀀스와 결합되는 (2) 상기 제1 랜덤 시퀀스에 대해 실행되는 컴퓨터 프로그램 제품.
  13. 제11항에 있어서,
    상기 기억장치는 고체 상태 기억장치를 포함하는 컴퓨터 프로그램 제품.
  14. 제11항에 있어서,
    상기 에러 정정 인코딩을 실행하고 상기 에러 정정 디코딩을 실행하기 위한 컴퓨터 명령은 BCH 코드 또는 저밀도 패리티 체크(LDPC) 코드 중 하나 이상을 사용하기 위한 컴퓨터 명령을 포함하는 컴퓨터 프로그램 제품.
KR1020150099373A 2014-07-28 2015-07-13 스크램블러에 의한 인코더 바이패스 KR102321454B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462029860P 2014-07-28 2014-07-28
US62/029,860 2014-07-28
US14/721,888 2015-05-26
US14/721,888 US9710326B2 (en) 2014-07-28 2015-05-26 Encoder by-pass with scrambler

Publications (2)

Publication Number Publication Date
KR20160013808A true KR20160013808A (ko) 2016-02-05
KR102321454B1 KR102321454B1 (ko) 2021-11-05

Family

ID=55166839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150099373A KR102321454B1 (ko) 2014-07-28 2015-07-13 스크램블러에 의한 인코더 바이패스

Country Status (4)

Country Link
US (1) US9710326B2 (ko)
KR (1) KR102321454B1 (ko)
CN (1) CN105302740B (ko)
TW (1) TWI570736B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10714195B2 (en) * 2017-08-31 2020-07-14 SK Hynix Inc. Read disturb detection and recovery with adaptive thresholding for 3-D NAND storage
US10585769B2 (en) * 2017-09-05 2020-03-10 International Business Machines Corporation Method for the implementation of a high performance, high resiliency and high availability dual controller storage system
US11126495B2 (en) * 2018-03-07 2021-09-21 Micron Technology, Inc. Dynamic error handling in a memory system
US11281578B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Garbage collection in a memory sub-system during a low battery state
US11282567B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Sequential SLC read optimization
US11726869B2 (en) * 2019-08-20 2023-08-15 Micron Technology, Inc. Performing error control operation on memory component for garbage collection
US11281392B2 (en) 2019-08-28 2022-03-22 Micron Technology, Inc. Garbage collection in a memory component using an adjusted parameter

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100119492A (ko) * 2009-04-30 2010-11-09 인터내셔널 비지네스 머신즈 코포레이션 비휘발성 메모리의 적응형 내구성 코딩
KR20120123985A (ko) * 2011-05-02 2012-11-12 삼성전자주식회사 메모리 시스템 및 에러 정정 방법
KR20130096673A (ko) * 2012-02-22 2013-08-30 실리콘 모션 인코포레이티드 플래쉬 메모리에 액세스하는 방법 및 연관된 플래쉬 메모리 제어기
EP2519879B1 (en) * 2009-12-30 2013-10-23 SanDisk Technologies Inc. Method and controller for performing a copy-back operation
KR20140005989A (ko) * 2011-03-02 2014-01-15 샌디스크 아이엘 엘티디 비휘발성 메모리 내의 데이터 저장 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677123B1 (en) 2005-05-26 2014-03-18 Trustwave Holdings, Inc. Method for accelerating security and management operations on data segments
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
CN103258572B (zh) * 2006-05-12 2016-12-07 苹果公司 存储设备中的失真估计和消除
US9209934B2 (en) * 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
WO2008019218A2 (en) 2006-08-04 2008-02-14 Sandisk Corporation Phased garbage collection
TWI369633B (en) 2007-06-27 2012-08-01 Sandisk Corp Phased garbage collection and house keeping operations in a flash memory system
US8631304B2 (en) 2010-01-28 2014-01-14 Sandisk Il Ltd. Overlapping error correction operations
EP2814194A1 (en) 2010-06-01 2014-12-17 Global Invacom Ltd. Data transmission apparatus system and method
US8897443B2 (en) * 2010-12-27 2014-11-25 Cleversafe, Inc. Watermarking slices stored in a dispersed storage network
KR101867282B1 (ko) 2011-11-07 2018-06-18 삼성전자주식회사 비휘발성 메모리 장치의 가비지 컬렉션 방법
US8832539B1 (en) 2012-01-17 2014-09-09 Sk Hynix Memory Solutions Inc. Write processing for unchanged data with new metadata
US9367394B2 (en) 2012-12-07 2016-06-14 Netapp, Inc. Decoupled reliability groups
KR102094334B1 (ko) 2013-03-15 2020-03-27 삼성전자주식회사 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100119492A (ko) * 2009-04-30 2010-11-09 인터내셔널 비지네스 머신즈 코포레이션 비휘발성 메모리의 적응형 내구성 코딩
EP2519879B1 (en) * 2009-12-30 2013-10-23 SanDisk Technologies Inc. Method and controller for performing a copy-back operation
KR20140005989A (ko) * 2011-03-02 2014-01-15 샌디스크 아이엘 엘티디 비휘발성 메모리 내의 데이터 저장 방법
KR20120123985A (ko) * 2011-05-02 2012-11-12 삼성전자주식회사 메모리 시스템 및 에러 정정 방법
KR20130096673A (ko) * 2012-02-22 2013-08-30 실리콘 모션 인코포레이티드 플래쉬 메모리에 액세스하는 방법 및 연관된 플래쉬 메모리 제어기

Also Published As

Publication number Publication date
TWI570736B (zh) 2017-02-11
CN105302740A (zh) 2016-02-03
KR102321454B1 (ko) 2021-11-05
TW201606783A (zh) 2016-02-16
US20160026526A1 (en) 2016-01-28
CN105302740B (zh) 2018-08-14
US9710326B2 (en) 2017-07-18

Similar Documents

Publication Publication Date Title
KR102321454B1 (ko) 스크램블러에 의한 인코더 바이패스
US20140310534A1 (en) Data scrambling in memory devices using combined sequences
TW201626211A (zh) 亂數擴大裝置、亂數擴大方法以及亂數擴大程式產品
KR101522509B1 (ko) 갈루아 필드 산술을 사용하는 효율적이고 스케일링가능한 순환 중복 검사 회로
TW201319800A (zh) 使用置換子矩陣之總和的總和檢查碼
US10382064B2 (en) Efficient LDPC encoder for irregular code
US9438274B2 (en) Data processing block and data storage device including the same
US9189327B2 (en) Error-correcting code distribution for memory systems
US8683304B2 (en) Error-correcting code and process for fast read-error correction
US10291258B2 (en) Error correcting code for correcting single symbol errors and detecting double bit errors
WO2019246527A1 (en) Method and apparatus for improved data recovery in data storage systems
CN105247488A (zh) 在硬件中提供对数据帧区段的线速率合并的高性能读取-修改-写入系统
US9672105B2 (en) Device and method for processing data using logical information and physical information
CN110941505A (zh) 产生错误校正电路的方法
US20170315862A1 (en) Detection of multiple bit errors in random access memories
CN113535075B (zh) 具有增强的物理安全性的数据加扰器
US10970166B2 (en) Memory system and method of controlling non-volatile memory
Badack et al. Modified DEC BCH codes for parallel correction of 3-bit errors comprising a pair of adjacent errors
US9092354B2 (en) Storage device, CRC generation device, and CRC generation method
Zhang et al. A novel optimization algorithm for Chien search of BCH Codes in NAND flash memory devices
US9275758B2 (en) Error detection circuit and semiconductor integrated circuit using the same
KR101619049B1 (ko) 병렬 bch 디코더
US20220083419A1 (en) Programmable and high-performance data scrambler for non-volatile memory controllers
Yang et al. An MPCN-based BCH codec architecture with arbitrary error correcting capability
Mandal et al. Clustered error resilient SRAM-based reconfigurable computing platform

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right