KR20130124989A - 메모리 제어기들에 있어서의 데이터 무결성 및 방법들 - Google Patents

메모리 제어기들에 있어서의 데이터 무결성 및 방법들 Download PDF

Info

Publication number
KR20130124989A
KR20130124989A KR1020137028036A KR20137028036A KR20130124989A KR 20130124989 A KR20130124989 A KR 20130124989A KR 1020137028036 A KR1020137028036 A KR 1020137028036A KR 20137028036 A KR20137028036 A KR 20137028036A KR 20130124989 A KR20130124989 A KR 20130124989A
Authority
KR
South Korea
Prior art keywords
data
error detection
memory
crc
sectors
Prior art date
Application number
KR1020137028036A
Other languages
English (en)
Other versions
KR101457518B1 (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 KR20130124989A publication Critical patent/KR20130124989A/ko
Application granted granted Critical
Publication of KR101457518B1 publication Critical patent/KR101457518B1/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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명은 메모리 제어기들에서 데이터 무결성을 위한 방법들, 장치들, 및 시스템들을 포함한다. 하나의 메모리 제어기 실시예는 호스트 인터페이스 및 상기 호스트 인터페이스에 결합된 제 1 오류 검출 회로를 포함한다. 메모리 제어기는 메모리 인터페이스 및 메모리 인터페이스에 결합된 제 2 오류 검출 회로를 포함할 수 있다. 제 1 오류 검출 회로는 호스트 인터페이스로부터 수신된 데이터에 대해 오류 검출 데이터를 계산하고 호스트 인터페이스에 송신된 데이터의 무결성을 체크하도록 구성될 수 있다. 제 2 오류 검출 회로는 메모리 인터페이스에 송신된 데이터 및 제 1 오류 정정 데이터에 대한 오류 정정 데이터를 계산하고 메모리 인터페이스로부터 수신된 데이터 및 제 1 오류 정정 데이터의 무결성을 체크하도록 구성될 수 있다.

Description

메모리 제어기들에 있어서의 데이터 무결성 및 방법들{DATA INTEGRITY IN MEMORY CONTROLLERS AND METHODS}
본 발명은 일반적으로 반도체 메모리 장치들, 방법들, 및 시스템들에 관한 것으로, 특히 데이터 무결성(data integrity)에 관한 것이다.
메모리 장치들은 전형적으로 컴퓨터들 또는 그외 전자장치들 내에 내부 반도체 집적회로들로서 제공된다. 휘발성 및 비휘발성 메모리를 포함한 많은 서로 다른 유형들의 메모리가 있다. 휘발성 메모리는 자신의 데이터를 유지하기 위해 전력을 필요로 할 수 있으며, 특히 랜덤-액세스 메모리(RAM), 동적 랜덤-액세스 메모리(DRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM)를 포함한다. 비휘발성 메모리는, 전원이 없을 때, 저장된 정보를 보존함으로써 영속적 데이터를 제공할 수 있고, 특히, NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적 소거가능 프로그램가능 ROM(EEPROM), 소거가능 프로그램가능 ROM(EPROM), 및 상변화 랜덤 액세스 메모리(PCRAM)를 포함할 수 있다.
메모리 장치들은 함께 결합되어 고체상태 드라이브(SSD : solid state drive)를 형성할 수 있다. SSD는 여러 다른 유형들의 비휘발성 및 휘발성 메모리 중에서도, 비휘발성 메모리, 예를 들어, NAND 플래시 메모리 및 NOR 플래시 메모리를 포함할 수 있고, 및/또는 휘발성 메모리, 예를 들어, DRAM 및 SRAM을 포함할 수 있다.
SSD가 성능, 크기, 무게, 견고성, 동작온도 범위, 및 전력 소비면에서 하드드라이브들에 비해 잇점들을 가질 수 있기 때문에, SSD는 컴퓨터용 주 저장장치로서 하드디스크 드라이브들을 대체하기 위해 사용될 수 있다. 예를 들어, SSD들은 이들이 가동(moving) 부품들이 없어 자기 디스크 드라이브들에 연관된 탐색시간, 레이턴시(latency), 및 그외 전기-기계적 지연들을 회피할 수 있어 자기 디스크 드라이브들과 비교했을 때 우수한 성능을 가질 수 있다. SSD 제조업자들은 내부 배터리 서플라이를 사용하지 않을 수 있는 플래시 SSD들을 만들기 위해 비휘발성 플래시 메모리를 사용할 수 있어, 이에 따라 드라이브를 더 다목적이고 콤팩트하게 할 수 있다.
SSD는 하나 이상의 메모리 장치들, 예를 들어, 하나 이상의 메모리 칩들을 포함할 수 있다. 당업자가 알게 되는 바와 같이, 메모리 칩은 하나 이상의 다이(die)들을 포함할 수 있다. 각각의 다이는 그 위에 하나 이상의 메모리 어레이들 및 주변 회로를 포함할 수 있다. 메모리 어레이는 하나 이상의 평면들을 포함할 수 있고, 각각의 평면은 하나 이상의 물리 블록들의 메모리 셀들을 포함한다. 각각의 물리 블록은 하나 이상의 섹터들의 데이터를 저장할 수 있는 하나 이상의 페이지(page)들의 메모리 셀들을 포함할 수 있다.
SSD들은 무엇보다도 유니버설 직렬 버스(USB : universal serial bus), 직렬 어드밴스드 기술 부착(SATA : serial advanced technology attachment), 또는 주변 부품 상호연결 익스프레스(PCIe : peripheral component interconnect express)와 같은 직렬 인터페이스에 의해 호스트 시스템과 인터페이스할 수 있다. USB, SATA, 및 PCIe와 같은 직렬 인터페이스들은 각각의 인터페이스들의 아키텍처의 링크층 또는 수송층에 설치된 순환 용장 체크(CRC : cyclic redundancy check)와 같은 오류 검출 메커니즘들을 구비할 수 있다. CRC는 송신기로부터 수신기로의 데이터 송신 동안 잡음 또는 그외 장애에 의해 야기되는 오류들의 존재를 검출하는 능력을 포함할 수 있다. CRC 데이터 발생은 특정 인터페이스에 의해 지원되는 프레임 구조에 기초할 수 이TEk.
예를 들어, SATA 프레임 구조는 프레임 시작(SOF : start-of-frame), 이에 이은 프레임 정보 구조(FIS : frame information structure), 이에 이은 CRC 데이터, 이에 이은 프레임 종료(EOF : end-of-frame)를 포함할 수 있다. SATA는 FIS의 내용에 대해 계산된 32-비트의 CRC 데이터를 사용할 수 있다. CRC 데이터의 계산에서 사용되는 32비트 CRC 다항식의 예는 다음과 같다: X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10+ X8+ X7 + X5 + X4 + X2 + X + 1. FIS가 기수(odd number) 개의 워드들, 예를 들어, 16 비트 세그먼트들을 포함하는 경우에, FIS의 마지막 워드에는 완전 더블 워드(dword), 예를 들어 32비트를 형성하기 위해 제로(zero)들이 더해질 수 있다. SATA 프레임은 FIS 및 CRC 데이터를 포함한 2064 dword들을 포함할 수 있는데, FIS 페이로드는 2048 dword들(8192 바이트들)을 포함할 수 있다. 그러나, 페이로드(payload)는 더 적은 데이터를 포함할 수도 있다.
당업자가 알게 되는 바와 같이, 논리 블록 어드레스싱은 섹터의 정보를 확인하기 위해 호스트에 의해 사용될 수 있는 방식으로서, 예를 들어, 각각의 섹터는 고유 논리 블록 어드레스(LBA : logical block address)에 대응할 수 있다. 섹터는 저장볼륨의 최소 어드레스가능한 부분일 수 있다. 예로서, 섹터의 데이터는 다수 바이트들의 데이터, 예를 들어, 512 바이트들일 수 있다. 직렬 호스트 인터페이스, 예를 들어, SATA 인터페이스에서의 각각의 페이로드는 반드시 동일 수의 바이트를 포함하는 것은 아니며, 대량 저장장치의 직렬 호스트 인터페이스에서의 페이로드들은 서로 다른 유닛들로 되어 있을 수 있기 때문에, CRC 데이터는 호스트 인터페이스, 예를 들어, 호스트 인터페이스의 링크 또는 수송층을 거쳐 전파하지 않을 수 있다.
도 1은 본 발명의 하나 이상의 실시예들에 따라 메모리 시스템을 포함하는 컴퓨팅 시스템의 기능 블록도이다.
도 2는 본 발명의 하나 이상의 실시예들에 따라 메모리 제어기를 포함하는 시스템의 기능 블록도이다.
도 3은 본 발명의 하나 이상의 실시예들에 따라 메모리 제어기를 포함하는 시스템의 기능 블록도이다.
도 4는 본 발명의 하나 이상의 실시예들에 따라 메모리 제어기를 포함하는 시스템의 기능 블록도이다.
본 발명은 메모리 제어기들에서 데이터 무결성을 위한 방법들, 장치들, 및 시스템들을 포함한다. 하나의 메모리 제어기의 실시예는 호스트 인터페이스 및 호스트 인터페이스에 결합된 제 1 오류 검출 회로를 포함한다. 메모리 제어기는 메모리 인터페이스 및 메모리 인터페이스에 결합된 제 2 오류 검출 회로를 포함할 수 있다. 제 1 오류 검출 회로는 호스트 인터페이스로부터 수신된 데이터에 대해 오류 검출 데이터를 계산하고 호스트 인터페이스에 송신된 데이터의 무결성을 체크하도록 구성될 수 있다. 제 2 오류 검출 회로는 메모리 인터페이스에 송신된 데이터 및 제 1 오류 정정 데이터에 대한 오류 정정 데이터를 계산하고 메모리 인터페이스로부터 수신된 데이터 및 제 1 오류 정정 데이터의 무결성을 체크하도록 구성될 수 있다.
본 발명의 다음 상세한 설명에서, 이의 일부를 이루며 발명의 하나 이상의 실시예들이 어떻게 실시될 수 있는가를 예시로서 도시한 동반된 도면들을 참조한다. 이들 실시예들은 당업자들이 발명의 실시예를 실시할 수 있도록 할 만큼 충분히 상세히 기술되며, 다른 실시예들이 이용될 수도 있고 본 발명의 범위 내에서 프로세스, 전기적, 및 구조적 변경들이 행해질 수 있음을 알아야 한다. 여기에서 사용되는 바와 같이, 특히 도면들에서 참조부호들에 관련하여, "N"으로 표시한 것은 이와 같이 표시된 다수의 특정한 특징이 본 발명의 하나 이상의 실시예들에 포함될 수 있음을 나타낸다. 이러한 표시는 동일 개수 혹은 서로 다른 개수의 특정한 특징들을 나타낼 수 있다.
여기에 도면들에서 표시한 숫자는 앞에 숫자 또는 숫자들은 도면 번호에 대응하는 것이고 그 뒤에 숫자들은 도면에서 구성요소 혹은 부품을 나타낸다. 도면들 간에 유사한 구성요소들 혹은 부품들은 비슷한 숫자들을 사용하여 확인될 수 있다. 예를 들어, 110는 도 1에서 참조요소가 "10"일 수 있고, 유사한 구성요소는 도 2에서는 210으로서 참조될 수 있다. 알게 되는 바와 같이, 여기에 여러 실시예들에 보인 구성요소들은 다수의 추가의 본 발명의 실시예들을 제공하기 위해서 추가, 교환, 및/또는 제거될 수 있다. 또한, 알게 되는 바와 같이, 도면들에 제공된 구성요소들의 비율 및 상대적 비례는 본 발명의 실시예들을 예시하려는 것이며 제한의 의미로 취해지지 않아야 한다.
도 1은 본 발명의 하나 이상의 실시예들에 따라 메모리 시스템(120)을 포함하는 컴퓨팅 시스템(100)의 기능 블록도이다. 도 1에 도시된 실시예에서, 메모리 시스템(120), 예를 들어, 고체상태 드라이브(SSD)는 메모리 제어기(101), 물리적 인터페이스(103), 및 하나 이상의 고체상태 메모리 장치들(130-1,..., 130-N), 예를 들어, NAND 플래시 장치들을 포함할 수 있다. 도 1에 도시된 바와 같이, 메모리 제어기(101)는 물리적 인터페이스(103) 및 고체상태 메모리 장치들(130-1,..., 130-N)에 결합될 수 있다.
물리적 인터페이스(103)는 메모리 시스템(120)과, 호스트 시스템(102)과 같은 다른 장치 간에 정보를 통신하기 위해 사용될 수 있다. 호스트 시스템(102)은 메모리 액세스 장치, 예를 들어, 프로세서를 포함할 수 있다. 당업자는 "프로세서"가 하나 이상의 프로세서들, 이를테면 병렬 처리 시스템, 다수의 코프로세서(coprocessor)들, 등을 의미할 수 있음을 알 것이다. 호스트 시스템들의 예들은 랩탑 컴퓨터들, 개인용 컴퓨터들, 디지털 카메라들, 디지털 기록 및 재생 장치들, 모바일 전화들, PDA들, 메모리 카드 리더기들, 인터페이스 허브들, 등을 포함한다. 하나 이상의 실시예들에 있어서, 물리적 인터페이스(103)는 표준화된 물리적 인터페이스 형태일 수 있다. 예를 들어, 메모리 시스템(120)이 컴퓨팅 시스템(100)에서 데이터 저장을 위해 사용될 때, 물리적 인터페이스(103)는 다른 물리적 인터페이스들 중에서도, 직렬 어드밴스드 기술 부착 (SATA), 주변 부품 상호연결 익스프레스 (PCIe), 혹은 유니버설 직렬 버스 (USB)일 수 있다. 그러나, 일반적으로, 물리적 인터페이스(103)는 호스트 인터페이스, 예를 들어, 메모리 시스템(120)의 제어기(101)의 도 2의 호스트 인터페이스(210)와, 물리적 인터페이스(103)에 대한 호환가능한 리셉터(receptor)들을 구비한 호스트 시스템(102) 간에 제어, 어드레스, 데이터, 및 그외 신호들을 전달하기 위한 물리적 연결을 제공할 수 있다.
메모리 제어기(101)는, 다른 동작들 중에서도, 데이터를 판독, 기입, 및 소거하기 위해 고체상태 메모리 장치들(130-1,..., 130-N)과 통신할 수 있다. 메모리 제어기(101)는 하나 이상의 집적회로들 및/또는 이산 부품들일 수 있는 회로를 구비할 수 있다. 하나 이상의 실시예들에 있어서, 메모리 제어기(101) 내 회로는 고체상태 메모리 장치들(130-1,..., 130-N)에의 액세스를 제어하기 위한 제어 회로, 및 호스트 시스템(102)과 메모리 시스템(120) 간에 변환층(translation layer)을 제공하기 위한 회로를 포함할 수 있다. 이에 따라, 메모리 제어기는 적합한 시간에 적합한 I/O 연결에서 적합한 신호를 수신하기 위해 고체상태 메모리 장치(130-1,..., 130-N)의 I/O 연결(도 1에 도시되지 않음)을 선택적으로 결합할 수도 있을 것이다. 유사하게, 호스트 시스템(102)과 메모리 시스템(120) 간에 통신 프로토콜은 고체상태 메모리 장치(130-1,..., 130-N)의 액세스를 위해 요구되는 것과는 다를 수도 있다. 이어서 메모리 제어기(101)는 고체상태 메모리 장치(130-1,..., 130-N)에의 요망되는 액세스를 달성하기 위해 호스트로부터 수신된 명령들을 적합한 명령들로 변환할 수도 있을 것이다.
도 1의 실시예는 본 발명의 실시예들을 모호하지 않게 하기 위해 도시되지 않은 추가의 회로를 포함할 수 있다. 예를 들어, 메모리 시스템(120)은 I/O 회로를 거쳐 I/O 연결들을 통해 제공되는 어드레스 신호들을 래치하기 위해 어드레스 회로를 포함할수 있다. 어드레스 신호들은 수신되어 고체상태 메모리 장치들(130-1,..., 130-N)을 액세스하기 위해 행 디코더 및 열 디코더에 의해 디코딩될 수 있다. 어드레스 입력 연결들의 수는 고체상태 메모리 장치들(130-1,..., 130-N)의 밀도 및 아키텍처에 따를 수 있음을 당업자들은 알 것이다.
도 2는 본 발명의 하나 이상의 실시예들에 따라 메모리 제어기(201)를 포함하는 시스템(200)의 기능 블록도이다. 제어기(201)는 도 1에 도시된 제어기(101)와 유사할 수 있다. 하나 이상의 실시예들에서, 제어기(201)는 SSD와 같은 메모리 시스템의 부품일 수 있다. 당업자들은 도 2에 도시된 것들 이상으로 추가의 회로 및 부품들이 제공될 수 있다는 것과 도 2 의 제어기 상세는 예시를 용이하게 하기 위해 감소되었음을 알 것이다.
도 2에 도시된 바와 같이, 메모리 제어기(201)는 하나 이상의 고체상태 메모리 장치들(230)에 결합될 수 있다. 고체상태 메모리 장치들(230)은 도 1에 도시된 고체상태 메모리 장치들(130-1,..., 130-N)과 유사할 수 있다. 제어기(201)는 전단부(204) 및 후단부(206)를 포함할 수 있다. 메모리 제어기는 호스트 인터페이스(210)와 데이터 전송 회로, 예를 들어, 직접 메모리 액세스(DMA : direct memory access) 모듈(214) 간에 결합된 다수의 전단 부품들을 포함할 수 있다. 메모리 제어기는 또한 DMA 모듈(214)과 메모리 인터페이스 간에 결합된 다수의 후단 부품들, 예를 들어, 오류 검출 회로/메모리 인터페이스(I/F)(222)의 메모리 인터페이스 부품을 포함할 수 있다. 하나 이상의 실시예들에서, 오류 검출 회로/메모리 I/F(222)의 오류 검출 회로 부품은 오류 정정 코드(ECC : error correction code) 엔진일 수 있다. 일반적으로, 메모리 제어기(201)는 전단(204)을 사용하여, 호스트 시스템(202), 예를 들어 도 1의 호스트 시스템(102)으로부터 수신되거나 이에 전송된 명령들 및 데이터를 처리할 수 있다. 일반적으로, 메모리 제어기(201)는, 다른 동작들 중에서도, 후단(206)을 사용하여 고체상태 메모리 장치들(230) 상에서 데이터를 판독, 기입, 및 소거하기 위해 고체상태 메모리 장치들(230)과의 통신들을 관리할 수 있다. 그러나, 명령 처리 및 메모리 통신 관리의 어떤 면들은 전단(204) 및 후단(206) 중 어느 하나 또는 둘 다에서 제어기(201)에 의해 취급될 수 있다. 도 2에 도시된 바와 같이, 호스트 인터페이스(210) 및 DMA 모듈(214)은 전단 부품들일 수 있다.
도 2에 도시된 바와 같이, 전단부(204)는 호스트 시스템(202), 예를 들어, 도 1의 호스트 시스템(102)에 결합될 수 있는 호스트 인터페이스(210)를 포함할 수 있다. 호스트 인터페이스(210)는 호스트 시스템으로부터 데이터를 수신하도록 구성될 수 있다. 호스트 인터페이스로부터 수신되는 데이터는 다수의 섹터들의 데이터를 포함하는 데이터 페이로드(data payload)일 수 있다. 하나 이상의 실시예들에서, 호스트 인터페이스로부터 수신되는 데이터는 스트리밍 데이터일 수 있다. 호스트 인터페이스(210)는 물리층(205), 링크층(207), 및 수송층(209)을 포함하는 다수의 층들을 통해 호스트 시스템(202)과 인터페이스할 수 있다. 당업자는 하나의 특정 호스트 인터페이스를 위한 층들의 수가 SATA, PCIe, USB, 등과 같은 인터페이스 표준에 의해 정의될 수 있음을 알 것이다. 여기에서 사용되는 바와 같이, 수송층은 SATA 표준의 일부로서 적어도 수송층을 나타내거나 혹은 PCIe 표준의 일부로서 트랜잭션층(transaction layer)을 나타낼 수 있다. 당업자는 SATA 표준에 따른 수송층이 PCIe 표준에 따른 트랜잭션층과 유사할 수 있음을 알 것이다. 호스트 인터페이스(210)는 호스트 시스템(202)과 통신하기 위해 메모리 시스템, 예를 들어, SSD 상의 물리적 인터페이스, 예를 들어, 도 1에 도시된 물리적 인터페이스(103)에 결합될 수 있다. 이러한 상세는 예시를 용이하게 하기 위해 도 2에는 도시되지 않는다.
호스트 인터페이스(210)는 DMA 모듈(214) 및 전단 오류 검출 회로, 예를 들어, 순환 용장 체크(CRC) 엔진(212)에 결합될 수 있다. "CRC 엔진"(212)으로서 예시되었을지라도, 오류 검출 회로는 순환 용장 체크들 이외의 기능을 제공할 수 있다. 예를 들어, 오류 검출 회로는, 무엇보다도, 반복 수법, 패리티 수법, 체크섬, 해밍 거리 기반의 체크, 해시 함수, 수평 및 수직 용장성 체크, 극성 수법, 및/또는 ECC와 같은 오류 정정 수법을 포함할 수 있다. 하나 이상의 실시예들에서, 호스트 인터페이스(210)는 전단 CRC 엔진(212)에 직접 결합될 수 있고 DMA 모듈(214)에 직접 결합될 수 있다.
하나 이상의 실시예들에서, 전단 CRC 엔진(212)은 호스트 인터페이스(210)에 결합될 수 있는데, 이에 따라 링크층(207) 및/또는 수송층(209)에 의해 호스트 시스템에 결합될 수 있다. 전단 오류 검출 회로, 예를 들어, CRC 엔진(212)은 예를 들어, 데이터가 도 1에 메모리 시스템(120)과 같은 메모리 시스템에 있는 동안 데이터 내 오류들을 검출하도록 구성될 수 있다. 예를 들어, 전단 CRC 엔진(212)은, 예를 들어, 기입 동작(write operation)의 일부로서, 링크층(207) 및/또는 수송층(209)으로부터 수신된 데이터, 예를 들어, DMA 페이로드와 같은 섹터의 데이터 페이로드에 대응하는 오류 정정 데이터, 예를 들어, CRC 데이터를 계산할 수 있다. 하나 이상의 실시예들에서, 전단 CRC 엔진(212)은 섹터별로 CRC 데이터를 계산할 수 있다. 하나 이상의 실시예들에서, 전단 CRC 엔진(212)은 링크층(207) 및/또는 수송층(209)에 의해 호스트 인터페이스(210)에 결합되어 다수 섹터들의 데이터, 예를 들어 DMA 페이로드를 링크층(207) 및/또는 수송층(209)으로부터 수신할 수 있다. 하나 이상의 실시예들에서, 전단 CRC 엔진(212)은 링크층(207)으로부터만, 혹은 수송층(209)으로부터만 배타적으로 다수 섹터들의 데이터를 수신할 수 있다. 그러나, 실시예들은 이것으로 제한되지 않는다. 메모리 제어기(201)에 전송된 데이터에 대해 호스트 시스템(202)에 의해 생성되어 있을 수 있는 CRC 데이터는 PCIe형 인터페이스들에 대해선 수송층(209)에서 혹은 SATA형 인터페이스들에 대해선 링크층(207)에서 데이터로부터 제거될 수 있다. 그러나, 본 발명의 하나 이상의 실시예들에 따르면, 전단 CRC 엔진(212)은 이것이 결합될 수 있는 호스트 인터페이스(210)로부터 수신된 데이터 섹터 당 CRC 데이터를 계산하고 체크할 수 있다.
DMA 모듈(214)은 후단 데이터 버퍼(218) 및 후단 오류 검출 메모리, 예를 들어, CRC 메모리(216)에 결합될 수 있다. 후단 데이터 버퍼(218)는 ECC 엔진/메모리 I/F(222)에 결합될 수 있다. 후단 데이터 버퍼(218)는 기입 동작 동안 ECC 엔진/메모리 I/F(222)를 위해 DMA 모듈(214)로부터 수신된 DMA 페이로드의 적어도 일부, 예를 들어, 다수 섹터들의 데이터를 버퍼(buffer)하도록 구성될 수 있다. 후단 데이터 버퍼(218)는 판독 동작(read operation) 동안 ECC 엔진/메모리 I/F(222)로부터 수신된 다수 섹터들의 데이터를 버퍼하도록 구성될 수 있다. 후단 데이터 버퍼(218) 및 후단 CRC 메모리(216)는 오류 검출 회로, 예를 들어, ECC 엔진 및 메모리 인터페이스에 결합될 수 있다. 하나 이상의 실시예들에서, 그리고 도 2의 실시예에 예시된 바와 같이, ECC 엔진 및 메모리 인터페이스는 하나의 부품, 예를 들어, "ECC 엔진/메모리 I/F"(222)으로서 함께 결합될 수 있다. 여기에서 총괄적으로 ECC 엔진/메모리 I/F에 대한 언급은 오류 검출 회로 및 메모리 인터페이스들을 개별 부품들로서 구비하는 실시예들을 배제하지 않는다. 마찬가지로, 개별적으로 어느 하나의 부품에 대한 언급은 오류 검출 회로 및 메모리 인터페이스가 하나의 부품으로서 포함되는 실시예들을 배제하지 않는다.
후단 CRC 메모리(216)는 전단 CRC 엔진(212)에 의해 계산된 CRC 데이터를 저장하도록 구성될 수 있다. 후단 CRC 메모리(216)는 ECC 엔진/메모리 I/F(222)에 결합되고, ECC 엔진/메모리 I/F(222)의 메모리 인터페이스부로부터의 CRC 데이터, 예를 들어, 고체상태 메모리 장치들(230)에 이전에 저장되어 있던 CRC 데이터를 수신하여 저장하도록 구성될 수 있다. 후단 데이터 버퍼(218)는 ECC 엔진/메모리 I/F(222)로부터 수신된 다수 섹터들의 데이터를 DMA 모듈(214)를 거쳐 전단 CRC 엔진(212)에 전송하도록 구성될 수 있다. 전단 CRC 엔진(212)은 예를 들어, DMA 모듈(214)을 통해 ECC 엔진/메모리 I/F(222)의 오류 검출 회로부에 결합될수 있다. 후단 CRC 메모리(216)는 ECC 엔진/메모리 I/F(222)로부터 수신된 다수 섹터들의 데이터에 대응하는 CRC 데이터를 DMA 모듈(214)를 거쳐 전단 CRC 엔진(212)에 전송하도록 구성될 수 있다. 이러한 경우에, 전단 CRC 엔진(212)은 DMA 모듈(214)로부터 수신된 섹터, 예를 들어, 각각의 섹터의 데이터에 대한 CRC 데이터를 계산하도록 구성될 수 있다. 이어서 전단 CRC 엔진은 섹터의 데이터가 호스트 인터페이스(210)를 거쳐 호스트 시스템에 전송되기 전에, 예를 들어, DMA 모듈(214)로부터 수신된 섹터의 데이터의 무결성을 검증하기 위해서, DMA 모듈(214)로부터 수신된 섹터의 데이터에 대해 계산된 CRC 데이터를, DMA 모듈(214)을 통해 후단 CRC 메모리(216)로부터 수신된 CRC 데이터와 비교할 수 있다. DMA 모듈의 동작에 관한 추가의 상세는 "Memory Controller"라는 명칭으로 함께 양도된 미국 특허 출원번호 ____(Attorney docket number 1002.0390001)에서 볼 수 있다.
ECC 엔진/메모리 I/F(222)는 고체상태 메모리 장치들(230)에 결합될 수 있다. 하나 이상의 실시예들에서, ECC 엔진/메모리 I/F(222)는 CRC 데이터, 예를 들어 후단 CRC 메모리(216)로부터 수신된 CRC 데이터를 대응하는 섹터의 데이터에 첨부하도록 구성될 수 있다. ECC 엔진/메모리 I/F(222)의 ECC 엔진부는 데이터, 예를 들어, 섹터의 데이터 내 오류들을 검출하도록 구성될 수 있다. 하나 이상의 실시예들에서, ECC 엔진/메모리 I/F(222)의 ECC 엔진부는 데이터가 도 1의 메모리 시스템(120)과 같은 메모리 시스템에 있는 동안 데이터 내의 오류들을 검출 및/또는 정정하도록 구성될 수 있다. 예를 들어, ECC 엔진/메모리 I/F(222)의 ECC 엔진부는 데이터만에 대해서, 및/또는 데이터와 첨부된 오류 검출, 예를 들어, CRC, 데이터에 대해서 오류 정정 데이터, 예를 들어, ECC 데이터를 계산할 수 있다. 하나 이상의 실시예들에서, ECC 엔진/메모리 I/F(222)의 ECC 엔진부는 섹터별로 ECC 데이터를 계산하도록 구성될 수 있다. ECC 엔진/메모리 I/F(222)는 대응하는 섹터의 데이터에 ECC 데이터를 첨부하도록 구성될 수 있다. 하나 이상의 실시예들에서, ECC 엔진/메모리 I/F(222)의 ECC 엔진부는 첨부된 CRC 데이터, 예를 들어, 전단 CRC 엔진(212)에 의해 계산된 CRC 데이터와 더불어 대응하는 섹터의 데이터에 대한 ECC 데이터를 계산하도록 구성될 수 있다. 판독 동작들 동안, ECC 엔진/메모리 I/F(222)의 ECC 엔진부는 다수 섹터들의 데이터가 후단 데이터 버퍼(218)에 있는 동안 다수 섹터들의 데이터 내 오류들을 정정하도록 구성될 수 있다. ECC 엔진/메모리 I/F(222)의 ECC 엔진부는 CRC 데이터가 후단 CRC 메모리(216)에 있는 동안 CRC 데이터 내 오류들을 정정하도록 구성될 수 있다. 실시예들은 이들 특정 위치들에 오류들을 정정하는 것으로 제한되는 것은 아니다.
하나 이상의 실시예들에서, 메모리 제어기(201)는 기입 동작을 위해서 다수 섹터들의 데이터, 대응하는 계산된 CRC 데이터, 및 대응하는 ECC 데이터, 혹은 이들의 다른 조합을 ECC 엔진/메모리 I/F(222)을 거쳐, 예를 들어, 고체상태 메모리 장치들(230)에 전송하도록 구성될 수 있다. 즉, 제어기는 섹터의 데이터, 대응하는 CRC 데이터, 및 대응하는 ECC 데이터를 고체상태 메모리 장치들(230) 내 하나의 위치에 저장하도록 구성될 수 있다.
하나 이상의 실시예들은, 예를 들어 기입 동작에 관련하여, 호스트 인터페이스(210)의 링크층(207) 및/또는 수송층(209)으로 호스트 시스템(202)으로부터 다수 섹터들의 데이터를 수신하는 제어기(201)를 포함할 수 있다. 다수 섹터들의 데이터는 호스트 인터페이스(210)를 통해 전단 CRC 엔진(212) 및 DMA 모듈(214)에 전송될 수 있다. 하나 이상의 실시예들에서, 다수 섹터들의 데이터는 전단 CRC 엔진(212) 및 DMA 모듈(214)에 의해 병렬로 수신될 수 있다. 전단 CRC 엔진(212)은 다수 섹터들의 데이터 각각에 대응하여 CRC 데이터를 계산할 수 있는데, 예를 들어, 각 섹터의 데이터는 고유 CRC 데이터에 대응할 수 있다. DMA 모듈(214)은 CRC 데이터를 CRC 엔진(212)으로부터 후단 CRC 메모리(216)로 전송할 수 있다. 전단 CRC 엔진(212)은 예를 들어 DMA 모듈(214)을 통해 후단 CRC 메모리(216)에 결합될 수 있다. 하나 이상의 실시예들에서, 후단 CRC 메모리(216)는 CRC 데이터를 저장할 수 있다. 후단 CRC 메모리(216)는 각각의 고유 CRC 데이터가 하나의 특정 섹터의 데이터에 대응할 수 있을 경우에 하나를 초과하는 고유 CRC 데이터를 저장할 수 있다. DMA 모듈(214)은 다수 섹터들의 데이터를 후단 데이터 버퍼(218)에 전송할 수 있다. ECC 엔진/메모리 I/F(222)는 후단 데이터 버퍼(218)로부터 다수 섹터들의 데이터와, 후단 CRC 메모리(216)로부터 대응하는 CRC 데이터를 전송하고, 다수 섹터들의 데이터 및 대응하는 CRC 데이터 각각에 대해 고유 ECC 데이터를 계산하고, ECC 데이터를 대응하는 섹터의 데이터에 첨부하고, 섹터의 데이터, CRC 데이터, 및 ECC 데이터를 하나 이상의 고체상태 메모리 장치들(230)에 저장할 수 있다.
위에 언급된 바와 같이, CRC 데이터는, 다른 CRC 계산 방법들 중에서도, dword(32 비트)의 분량으로 프레임 정보 구조(FIS)의 내용에 관하여 계산될 수 있다. 그러나, 호스트 시스템(202)으로부터 수신된 데이터 페이로드는 데이터 페이로드의 다수의 섹터들, 예를 들어 512 바이트 부분들을 포함할 수 있다. 일부 종래의 방법들에 따르면, CRC 데이터는 데이터 페이로드 내 포함된 각 섹터의 데이터에 대해서가 아니라 전체로서 데이터 페이로드에 대해 계산될 수 있다. 즉, CRC 데이터가 링크층(207) 또는 수송층(209)을 거쳐 전파할지라도, 데이터는 이것이 메모리 장치, 예를 들어 도 1의 메모리 장치(130-1)에 기입 및/또는 이로부터 판독되는 분량과는 다른 분량으로 메모리 시스템, 예를 들어 도 1의 메모리 시스템(120)에 및/또는 이로부터 전송될 수 있기 때문에, CRC 데이터는 적어도 부분적으로 하나의 특정 섹터의 데이터에 대해 유용하지 않을 수 있다. 이에 따라, 판독 및/또는 기입 동작에 연관된 다수 섹터들의 데이터, 심지어는 같은 데이터에 관하여 데이터 페이로드에 대해 동일한 CRC 데이터를 사용해도, 다수 섹터들의 데이터에 대해 데이터 무결성을 제공하지 못할 수 있다.
반대로, 본 발명의 하나 이상의 실시예들에 따르면, CRC 데이터는 섹터별로 각 섹터의 데이터에 대해 계산되며, 예를 들어, 고유 CRC 데이터는 각 섹터의 데이터에 대해 계산될 수 있다. 예를 들어, 데이터 페이로드가 2048 바이트들을 포함한다면, CRC 데이터는 4개의 512 바이트 섹터들의 데이터 각각에 대해 계산될 수 있다. 데이터 무결성은 전단(204), 예를 들어, 호스트 인터페이스(210)에서의 호스트 시스템(202)로부터 제어기(201)에 의해 수신되는 지점부터, 후단(206)으로부터 고체상태 메모리 장치들(230)로 전송되는 지점까지 다수의 섹터들에 대해 제공될 수 있다. 데이터 무결성을 제공하는 것은 호스트 인터페이스(210)로부터 ECC 엔진/메모리 I/F(222) 및/또는 고체상태 메모리 장치들(230)까지 섹터의 데이터에 대해 동일한 CRC 데이터를 유지하는 것을 포함할 수 있다.
하나 이상의 실시예들에서, ECC 엔진/메모리 I/F(222)는, 예를 들어 판독 동작에 관련하여, 하나 이상의 고체상태 메모리 장치들(230)로부터 다수 섹터들의 데이터, 이들의 대응하는 제 1 CRC 데이터, 및 ECC 데이터를 수신할 수 있다. ECC 엔진/메모리 I/F(222)는 다수 섹터들의 데이터를 후단 데이터 버퍼(218)에 저장하며 이들의 대응하는 CRC 데이터를 후단 CRC 메모리(216)에 저장할 수 있다. 다수 섹터들의 데이터 및 이들의 대응하는 제 1 CRC 데이터 및 ECC 데이터는 ECC 엔진/메모리 I/F(222)의 ECC 엔진부에 의해 오류가 체크될 수 있다. ECC 엔진/메모리 I/F(222)의 ECC 엔진부에 의해 확인된 CRC 데이터 내에서 확인된 하나 이상의 오류들은 CRC 데이터가 후단 CRC 메모리(216)에 저장되는 동안 정정될 수 있다. ECC 엔진/메모리 I/F(222)의 ECC 엔진부에 의해 확인된 다수 섹터들의 데이터 내에서 확인된 하나 이상의 오류들은 다수 섹터들의 데이터가 후단 데이터 버퍼(218)에 버퍼되는 동안 정정될 수 있다. 오류 정정 후에, DMA 모듈(214)은 다수 섹터들의 데이터 및 이들의 대응하는 CRC 데이터를 수신하여 전단 CRC 엔진(212)에 전송할 수 있다. 전단 CRC 엔진(212)은 다수의 전송된 섹터들의 데이터에 대해 제 2 CRC 데이터를 계산하고 다수 섹터들의 데이터의 무결성을 검증하기 위해 제 1 CRC 데이터를 대응하는 제 2 CRC 데이터와 비교할 수 있다. 제 1 CRC 데이터를 제 2 CRC 데이터와 비교한 후에, 다수 섹터들의 데이터는 호스트 인터페이스(210)의 수송층(209)을 거쳐, 데이터, 예를 들어, 판독된 다수 섹터들의 데이터를 요청한 호스트 시스템(202)에 전송될 수 있다. 하나 이상의 실시예들에서, 다수 섹터들의 데이터는 제 1 CRC 데이터 또는 제 2 CRC 데이터없이 호스트 인터페이스(210)를 거쳐 전송될 수 있다. 하나 이상의 실시예들에서, ECC 엔진/메모리 I/F(222)는 다수 섹터들의 데이터로부터 ECC 데이터를 제거하고 다수 섹터들의 데이터 및 제 1 CRC 데이터를 병렬로 전단 CRC 엔진(212)에 전송할 수 있다.
위에 기술된 판독 동작과 같은 본 발명의 하나 이상의 실시예들에 따르면, 데이터 무결성은 다수 섹터들의 데이터에 대해 제공될 수 있다. 즉, 데이터 무결성은 예를 들어, ECC 엔진/메모리 I/F(222)에서의 고체상태 메모리 장치들(230)로부터 제어기(201)의 후단(206)에 의해 다수의 섹터들이 수신되는 지점부터, 다수의 섹터들이 호스트 인터페이스(210)를 거쳐 예를 들어, 전단(204)으로부터 호스트 시스템(202)으로 전송되는 지점까지의 다수 섹터들의 데이터에 대해 제공될 수 있다. 데이터 무결성을 제공하는 것은 고체상태 메모리 장치들(230)로부터 호스트 인터페이스(210)까지 동일 CRC 데이터를 유지하는 것을 포함할 수 있다.
도 3은 본 발명의 하나 이상의 실시예들에 따라 메모리 제어기(301)를 포함하는 시스템(300)의 기능 블록도이다. 제어기(301)는 도 1에 도시된 제어기(101)와 유사할 수 있다. 하나 이상의 실시예들에서, 제어기(301)는 SSD와 같은 메모리 시스템의 부품일 수 있다. 도 3에 도시된 것들 이상으로 추가의 회로 및 부품들이 제공될 수 있다는 것과 도 3의 제어기 상세는 용이한 예시를 위해 감소되었음을 당업자들은 알 것이다.
도 3에 도시된 실시예는 전단 오류 검출 회로, 예를 들어, CRC 엔진(312), 및 데이터 전송 회로, 예를 들어, DMA 모듈(314) 뿐만 아니라, 물리층(305), 링크층(307), 및 수송층(309)을 가진 호스트 인터페이스(310)를 포함하는 도 2에 도시된 것들과 유사할 수 있는 부품들을 포함한다. 그러나, 하나 이상의 실시예들에서, 호스트 인터페이스(310)는 도시된 바와 같은 전단 호스트 버퍼(324), 예를 들어, FIFO(324), 및 암호화 회로, 예를 들어, 어드밴스드 암호화 표준(AES : advanced encryption standard) 엔진(326)을 통해 DMA 모듈에 결합될 수 있다. "AES 엔진"(326)으로서 도시되었을지라도, 다른 형태들의 암호화가 본 발명의 하나 이상의 실시예들에 의해 사용될 수 있다. FIFO(324)는 호스트 인터페이스(310)와 AES 엔진(326) 사이에 DMA 페이로드를 버퍼하기 위해 구성될 수 있다. 도 3에 도시되지 않았을지라도, AES 엔진(326)은 FIFO(324)와는 별도로 AES 버퍼를 포함하거나 이에 결합될 수 있다.
도 3에 도시된 바와 같이, AES 엔진(326)은 제어기(301)에 의해 수신된 다수의 데이터 패킷들로부터 도출된 데이터 스트림과 같은 다수 섹터들의 데이터, 예를 들어, 데이터 페이로드(DMA 페이로드)를 수신하도록 구성될 수 있다. 암호화에 앞서, 다수 섹터들의 데이터는 평문(P.T. : plaintext)일 수 있다. AES 엔진(326)은 선택적으로 암호화된 출력, 예를 들어, 암호문(C.T. : ciphertext)을 DMA 모듈(314)에 제공하기 위해서 다수 섹터들의 데이터를 처리하게 배열되고 구성될 수 있다. 하나 이상의 실시예들에서 AES 엔진(326)은 선택적으로 다수 섹터들의 데이터를 처리할 수 있는데, 이것은 다수 섹터들의 데이터를 평문에서 암호문으로 암호화할 수 있거나, AES 엔진(326)이 다수 섹터들의 데이터를 암호화 없이, 예를 들어 평문으로 DMA 모듈(314)에 전송할 수 있음을 의미한다.
하나 이상의 실시예들에서, 호스트 인터페이스(310)를 통해 호스트 시스템으로부터 수신된 다수 섹터들의 데이터는 도시된 바와 같이 전단 CRC 엔진(312) 및 전단 호스트 버퍼(324), 예를 들어 FIFO(324)에 의해 병렬로 수신될 수 있다. 다수 섹터들의 데이터는 호스트 버퍼(324)로부터, 다수 섹터들의 데이터가 평문으로부터 암호문으로 암호화될 수 있는 AES 엔진(326)에 전송될 수 있다. 암호화 후에, 다수 섹터들의 데이터는 추가 처리를 위해 AES 엔진(326)으로부터 DMA 모듈(314)에 전송될 수 있다. 암호화 엔진들의 동작의 추가의 예들은 적어도 하나의 발명자가 동일한 "Parallel Encryption/Decryption"라는 명칭으로 함께 양도된 미국 특허 출원번호 12/333,822에 더 상세히 기술되어 있다.
DMA 모듈(314)은 전단(304) 회로를 후단(306) 회로에 효과적으로 결합한다. 하나 이상의 실시예들에서, 제어기(301)의 후단부(306)는 하나를 초과하는 후단 채널을 포함할 수 있다. 도 3에 도시된 실시예에서, 제어기(301)는 다수의 후단 채널들(319-1,..., 319-N)을 포함한다. 각각의 후단 채널(319-1,..., 319-N)은 채널 프로세서,(332-1,..., 332-N), 및 채널 메모리,(334-1,..., 334-N)을 포함할 수 있다. 후단 채널 프로세서들(332-1,..., 332-N) 및 메모리들(334-1,..., 334-N)은 DMA 모듈(314) 및 후단 채널 DMA 모듈들(328-1,..., 328-N)에 결합될 수 있다. 각각의 후단 채널(319-1,..., 319-N)은 후단 채널 데이터 전송 회로, 예를 들어, DMA 모듈(314)에 결합될 수 있는 채널 DMA 모듈들(328-1,..., 328-N)을 포함할 수 있다. DMA 모듈(314)은 DMA 페이로드에 연관된 명령들을 각각의 후단 채널 프로세서, 예를 들어, 후단 채널 프로세서(332-1)에 보내고 DMA 페이로드에 연관된 데이터를 각각의 후단 채널 DMA 모듈, 예를 들어, 후단 채널 DMA 모듈(328-1)에 보내게 구성될 수 있다. 채널 프로세서들의 동작들의 예는 적어도 하나의 발명자가 동일한 "Modifying Commands"라는 명칭으로 함께 양도된 미국 특허 출원번호 12/351,206에 더 상세히 기술되어 있다.
제어기(301)의 후단부(306)는 도 2에 도시된 것들과 유사한 부품들을 포함할 수 있다. 예를 들어, 각각의 후단 채널(319-1,...,, 319-N)은 후단 데이터 버퍼(318-1,..., 318-N), 후단 오류 검출 메모리, 예를 들어, CRC 메모리(316-1,..., 316-N), 및 ECC 엔진들/메모리 인터페이스들(322-1,..., 322-N)을 포함할 수 있다. 하나 이상의 실시예들에서, 그리고 도 3의 실시예에 예시된 바와 같이, ECC 엔진 및 메모리 인터페이스는 하나의 부품, 예를 들어, "ECC 엔진/메모리 I/F"(322)로서 함께 결합될 수 있다. 하나 이상의 실시예들에서, ECC 엔진 및 메모리 인터페이스는 개별적 부품들일 수 있다. 도 3에 도시된 바와 같이, 후단 데이터 버퍼들(318-1,..., 318-N)은 후단 채널 DMA 모듈들(328-1,..., 328-N)과 ECC 엔진들/메모리 인터페이스들(322-1,..., 322-N) 사이에 결합될 수 있다. 또한, 후단 CRC 메모리(316-1,..., 316-N)는 DMA 모듈(314)과 ECC 엔진들/메모리 인터페이스들(322-1,..., 322-N) 사이에 결합될 수 있다. 도 3에 도시된 바와 같이, 특정한 메모리 장치, 칩, 어레이, 등은 특정 채널에 대응할 수 있다. 예를 들어, 고체상태 메모리 장치(들)(330-1)은 채널(319-1)에 대응할 수 있다.
도 4는 본 발명의 하나 이상의 실시예들에 따라 메모리 제어기(401)를 포함하는 시스템(400)의 기능 블록도이다. 제어기(401)는 도 2에 도시된 제어기(101)와 유사할 수 있다. 하나 이상의 실시예들에서, 제어기(401)는 SSD와 같은 메모리 시스템의 부품일 수 있다. 당업자들은 도 4에 도시된 것들 이상으로 추가의 회로 및 부품들이 제공될 수 있다는 것과 도 4의 제어기(401)의 상세는 예시를 용이하게 하기 위해 감소되었음을 알 것이다.
도 4에 도시된 실시예는 전단 오류 검출 회로, 예를 들어, CRC 엔진(412-F), 및 데이터 전송 회로, 예를 들어, DMA 모듈(414) 뿐만 아니라, 물리층(405), 링크층(407), 및 수송층(409)을 포함하는 호스트 인터페이스(410)와 같은 제어기(401)의 전단(404) 부품들을 포함하는 도 3에 도시된 것들과 유사할 수 있는 부품들을 포함한다. 또한, 제어기(401)는 후단 채널 프로세서들(432-1,..., 432-N)과 메모리(434-1,..., 434-N), 후단 채널 데이터 전송 회로, 예를 들어, 채널 DMA 모듈들(428-1,..., 428-N), 후단 데이터 버퍼들(418-1,..., 418-N), 오류 검출 회로, 예를 들어, ECC 엔진들/메모리 인터페이스들(422-1,..., 422-N), 및 후단 오류 검출 메모리, 예를 들어, CRC 메모리(416-1,..., 416-N)를 포함하는, 후단 채널들(419-1,..., 419-N)과 같은 도 3에 도시된 것들과 유사할 수 있는 다수의 후단(406) 부품들을 포함한다. 하나 이상의 실시예들에서, 그리고 도 4에 도시된 바와 같이, ECC 엔진 및 메모리 인터페이스는 하나의 부품, 예를 들어, "ECC 엔진/메모리 I/F"(422)로서 함께 결합될 수 있다. 하나 이상의 실시예들에서, ECC 엔진 및 메모리 인터페이스는 개별적 부품들일 수 있다. 도 4에 도시된 바와 같이, 각각의 채널(419-1,..., 419-N)은 ECC 엔진들/메모리 인터페이스들(422-1,..., 422-N)에 의해 하나 이상의 고체상태 메모리 장치들(430-1,..., 430-N)에 결합될 수 있다.
그러나, 하나 이상의 실시예들에서, 후단 채널들(419-1,..., 419-N)은 후단 오류 검출 회로, 예를 들어, 후단 CRC 메모리(416-1,..., 416-N)에 결합되는 후단 CRC 엔진(412-B1,..., 412-BN)을 포함할 수 있다. 후단 CRC 엔진(412-B1,..., 412-BN)은 대응하는 데이터, 예를 들어, 하나의 대응하는 섹터의 데이터에 대한 오류 검출 데이터, 예를 들어, "제 2" CRC 데이터를 계산하도록 구성될 수 있다. 하나 이상의 실시예들에서, 대응하는 데이터는 DMA 페이로드의 적어도 일부일 수 있다. 전단 CRC 엔진(412-F)은 섹터의 데이터에 대한 "제 1" CRC 데이터를 계산할 수 있다. 후단 CRC 엔진(412-B1,..., 412-BN)은 섹터의 데이터의 무결성을 체크 및/또는 검증하기 위해 제 1 CRC 데이터를 제 2 CRC 데이터와 비교하도록 구성될 수 있다. 예를 들어, DMA 모듈(414)은 전단 CRC 엔진(412-F) 및 후단 CRC 메모리(416-1,..., 416-N)에 결합될 수 있다. DMA 모듈(414)은 제 1 CRC 데이터를 후단 CRC 메모리(416-1,..., 416-N)에 전송하도록 구성될 수 있다. 이어서 후단 CRC 엔진(412-B1,..., 412-BN)은 후단 CRC 메모리(416-1,..., 416-N)로부터 수신된 제 1 CRC 데이터를 계산된 제 2 CRC 데이터와 비교할 수 있다. 후단 CRC 엔진(412-B1,..., 412-BN)이 복수의 후단 채널들(419-1,.., 419-N)을 포함하는 제어기(401)를 도시한 도 4에 관하여 개시되었을지라도, 실시예들은 이것으로 제한되지 않는다. 예를 들어, 본 발명의 하나 이상의 실시예들은 예를 들어, 후단 CRC 엔진을 포함하는 도 2의 후단(206)에 관하여 예시된 바와 같이, 단일 후단 채널을 가진 메모리 제어기 를 포함할 수 있다.
후단 CRC 엔진(412-B1,..., 412-BN)은 ECC 엔진/메모리 인터페이스(422-1,..., 422-N)에 결합될 수 있다. 하나 이상의 실시예들에서, 후단 CRC 엔진(412-B1,..., 412-BN)은 ECC 엔진/메모리 I/F(422-1,..., 422-N)에 직접 결합될 수 있다. ECC 엔진/메모리 I/F(422-1,..., 422-N)의 ECC 엔진부는 섹터의 데이터, 예를 들어, 후단 데이터 버퍼(418-1,..., 418-N)로부터 수신된 DMA 페이로드의 부분에 대한 ECC 데이터를 계산하도록 구성될 수 있다. 하나 이상의 실시예들에서, 제어기(401)는 제 1 또는 제 2의 대응하는 CRC 데이터 없이 섹터의 데이터 및 대응하는 ECC 데이터를 ECC 엔진/메모리 I/F(422-1,..., 422-N)를 거쳐 전송하도록 구성될 수 있다. 즉, 하나 이상의 실시예들에서, 섹터의 데이터 및 대응하는 ECC 데이터는 대응하는 CRC 데이터를 고체상태 메모리 장치들(430-1,..., 430-N)에 저장하지 않고 고체상태 메모리 장치들(430-1,..., 430-N)에 저장될 수 있다. 하나 이상의 실시예들에서, 제어기(401)는 후단 CRC 엔진(412-B1,..., 412-BN)이 섹터의 데이터의 무결성을 검증할 때, 대응하는 CRC 데이터 없이 섹터의 데이터 및 대응하는 ECC 데이터를 고체상태 메모리 장치들(430-1,..., 430-N) 내의 위치에 저장하도록 구성될 수 있다. 즉, 후단 CRC 엔진(412-B1,..., 412-BN)이 섹터의 데이터의 무결성을 검증하지 않을 때, 하나 이상의 실시예들에서, 제어기(401)는 섹터의 데이터를 고체상태 메모리 장치들(430-1,..., 430-N)에 저장하지 않을 수 있다.
하나 이상의 실시예들은 기입 동작에 관련하여, 호스트 인터페이스(410)의 링크층(407) 및/또는 수송층(409)으로부터 전단 CRC 엔진(412-F)에 의해 다수 섹터들의 데이터를 수신하는 것을 포함할 수 있다. 전단 CRC 엔진(412-F)은 각 섹터의 데이터에 대한 제 1 CRC 데이터를 계산하도록 구성될 수 있다. 따라서, 기입 동작에 있어서, 다수 섹터들의 데이터의 데이터 무결성은 다수 섹터들의 데이터에 대한 다른 동작들의 수행 전에 혹은 이와는 별도로, 적어도 부분적으로 다수 섹터들의 데이터에 대해 계산되는 CRC 데이터에 기인하여 제어기(401)의 전단(404) 상에 유지될 수 있다. 제 1 CRC 데이터는 DMA 모듈(414)에 전송될 수 있다.
DMA 모듈(414)은 다수 섹터들의 데이터를 후단 채널 DMA 모듈(428-1,..., 428-N)에 전송할 수 있다. 하나 이상의 실시예들에서, DMA 모듈(414)은 다수 섹터들의 데이터를 다수 섹터들의 데이터에 연관된 메모리 어드레스에 대응하는 후단 채널(419-1,..., 419-N), 예를 들어, 메모리 어드레스에 대응하는 고체상태 메모리 장치에 결합된 채널에 전송할 수 있다. 예를 들어, DMA 모듈은 다수 섹터들의 데이터에 연관된 메모리 어드레스가 특정 고체상태 메모리 장치, 예를 들어, 430-1에 대응할 때 채널(419-1) 상에서 후단 채널 DMA 모듈(428-1)에 다수 섹터들의 데이터를 전송할 수 있다. 다수 섹터들의 데이터는 후단 채널 DMA 모듈(428-1,..., 428-N)로부터 후단 데이터 버퍼(418-1,..., 418-N)로 전송될 수 있다. 후단 데이터 버퍼(418-1,..., 418-N)는 다수 섹터들의 데이터가 ECC 엔진/메모리 인터페이스(422-1,..., 422-N) 및/또는 후단 CRC 엔진(412-B1,..., 412-BN)에 전송되기 전에 기입 동작 동안 후단 채널 DMA 모듈(428-1,..., 428-N)로부터 수신된 섹터의 데이터를 버퍼할 수 있다. 하나 이상의 실시예들에서, 다수 섹터들의 데이터는 후단 데이터 버퍼(418-1,..., 418-N)로부터 후단 CRC 엔진(412-B1,..., 412-BN) 및 ECC 엔진/메모리 I/F(422-1,..., 422-N)에 병렬로 전송될 수 있다.
DMA 모듈(414)은 제 1 CRC 데이터를 후단 CRC 메모리(416-1,..., 416-N)에 전송할 수 있다. 하나 이상의 실시예들에서, DMA 모듈(414)은 제 1 CRC 데이터가 계산되었던 섹터의 데이터에 연관된 메모리 어드레스에 대응하는 후단 채널에 제 1 CRC 데이터를 전송할 수 있다. 제 1 CRC 데이터는 후단 CRC 엔진(412-B1,..., 412-BN)이 제 2 CRC 데이터를 계산하기 전에 후단 CRC 메모리(416-1,..., 416-N)에 저장될 수 있다. 후단 CRC 엔진(412-B 1,..., 412-BN)은 섹터의 데이터에 대한 제 2 CRC 데이터를 계산하고 제 1 CRC 데이터를 제 2 CRC 데이터와 비교할 수 있다. 비교에 이어, 섹터의 데이터는 하나 이상의 고체상태 메모리 장치들(430-1,..., 430-N)에 저장될 수 있다. 하나 이상의 실시예들에서, ECC 엔진/메모리 I/F(422-1,..., 422-N)의 ECC 엔진부는 제 1 CRC 데이터를 제 2 CRC 데이터와 비교한 후에, 그러나 섹터의 데이터가 고체상태 메모리 장치(430-1,..., 430-N)에 저장되기 전에, 섹터의 데이터에 대한 ECC 데이터를 계산할 수 있다. ECC 데이터는 섹터의 데이터 및 ECC 데이터가 저장되지만 제 1 또는 제 2 CRC 데이터 어느 것도 고체상태 메모리 장치(430-1,..., 430-N)에 저장되지 않도록, 고체상태 메모리 장치(430-1,..., 430-N)에 저장되기 전에 섹터의 데이터에 첨부될 수 있다. 이러한 실시예들은 예를 들어, CRC 데이터가 그것에 저장되지 않을 때, 적어도 부분적으로는 고체상태 메모리 장치들(430-1,..., 430-N)에 저장된 정보량의 감소로 인해 이점이 있을 수 있다.
하나 이상의 실시예들에서, 후단 CRC 엔진(412-B1,..., 412-BN)이 다수 섹터들의 데이터의 무결성을 검증한다면, 예를 들어, 제 1 CRC 데이터가 제 2 CRC 데이터와 일치할 경우, 다수 섹터들의 데이터는 ECC 엔진/메모리 I/F(422-1,..., 422-N)로부터 고체상태 메모리 장치(430-1,..., 430-N)로 전송되기만 한다. 따라서, 기입 동작에 있어서, 다수 섹터들의 데이터의 데이터 무결성은 적어도 부분적으로 DMA 모듈(414) 및 후단 채널 DMA 모듈(428-1,..., 428-N)에 의해 처리된 후 다수 섹터들의 데이터에 대한 제 2 CRC 데이터가 계산되고 다수 섹터들의 데이터에 관한 다른 동작들의 수행 전에, 혹은 이와는 별도로 계산되었던 제 1 CRC 데이터와 비교되는 것에 기인하여, 제어기(401)의 후단(406) 상에서 유지될 수 있다. 이에 따라, 본 발명의 하나 이상의 실시예들은 제어기(401) 상에서 다수 섹터들의 데이터에 대한 데이터 무결성을 제공할 수 있다.
하나 이상의 메모리 시스템 동작의 실시예들은 다수 섹터들의 데이터 및 대응하는 ECC 데이터를 하나 이상의 고체상태 메모리 장치들(430-1,..., 430-N)로부터 판독하는 것을 포함하는 판독 동작을 포함할 수 있다. 다수 섹터들의 데이터는 ECC 엔진/메모리 I/F(422-1,..., 422-N)의 ECC 엔진부에 의해 오류가 체크될 수 있다. ECC 엔진/메모리 I/F(422-1,..., 422-N)의 ECC 엔진부에 의해 오류를 체크한 후에, ECC 데이터는 다수 섹터들의 데이터로부터 제거될 수 있다. 후단 CRC 엔진(412-Bl,..., 412-BN)은 다수 섹터들의 데이터 각각에 대해 CRC 데이터를 계산할 수 있다. 다수 섹터들의 데이터 및 CRC 데이터는 예를 들어, 각각 호스트 버퍼(424) 및 DMA 모듈(414)로부터 전단 CRC 엔진(412-F)으로 병렬로 전송될 수 있다. 전단 CRC 엔진(412-F)은 다수 섹터들의 데이터 각각에 대해 CRC 데이터를 계산하고 이를 다수 섹터들의 데이터의 무결성을 체크하기 위해 후단 CRC 엔진에 의해 계산된 CRC 데이터와 비교할 수 있다. 다수 섹터들의 데이터는 비교 후에 호스트 인터페이스(410)의 수송층(409)을 거쳐 전송될 수 있다.
따라서, 판독 동작에 있어서, 다수 섹터들의 데이터의 데이터 무결성은 적어도 부분적으로 다수 섹터들의 데이터가 ECC 엔진/메모리 I/F(422-1,..., 422-N)로부터 전송된 후에 다수 섹터들의 데이터 각각에 대해 CRC 데이터를 계산함에 기인하여, 제어기(401)의 후단(406)으로부터 전단(404)까지 유지될 수 있다. 또한, 이전에 계산된 CRC 데이터를 특정 섹터의 데이터에 대해 새로이 계산된 CRC 데이터와 비교를 위해 제어기(401)의 전단(404)에 전송하는 것은 특정 섹터의 데이터의 무결성이 유지되고 있음을 검증하는데 도움을 줄 수 있다. 이에 따라, 본 발명의 하나 이상의 실시예들은 제어기(401) 상에서 다수 섹터들의 데이터에 대한 데이터 무결성을 제공할 수 있다.
결론
본 발명은 메모리 제어기들에서 데이터 무결성을 위한 방법들, 장치들, 및 시스템들을 포함한다. 하나의 메모리 제어기 실시예는 호스트 인터페이스 및 호스트 인터페이스에 결합된 제 1 오류 검출 회로를 포함한다. 메모리 제어기는 메모리 인터페이스 및 메모리 인터페이스에 결합된 제 2 오류 검출 회로를 포함할 수 있다. 제 1 오류 검출 회로는 호스트 인터페이스로부터 수신된 데이터에 대한 오류 검출 데이터를 계산하고 호스트 인터페이스에 전송되는 데이터의 무결성을 체크하도록 구성될 수 있다. 제 2 오류 검출 회로는 메모리 인터페이스에 전송된데이터 및 제 1 오류 정정 데이터에 대한 오류 정정 데이터를 계산하고 메모리 인터페이스로부터 수신된 데이터 및 제 1 오류 정정 데이터의 무결성을 체크하도록 구성될 수 있다.
구성요소가 다른 구성요소 "상에", "에 연결된" 혹은 "에 결합된"이라 언급될 때, 이것은 직접 다른 구성요소 상에, 혹은 이에 연결되거나, 이에 결합될 수 있고 혹은 개재된 구성요소들이 있을 수 있음이 이해될 것이다. 반대로, 구성요소가 다른 구성요소 "상에 직접", "에 직접 연결" 혹은 "에 직접 결합"되는 것으로 언급될 때, 개재되는 구성요소들은 없다. 여기에서 사용되는 바와 같이, "및/또는"이라는 용어는 연관된 나열된 항목들 중 하나 이상의 어느 하나 및 모든 조합들을 포함한다.
제 1, 제 2, 등의 용어들이 여기에서 다양한 구성요소들을 기술하기 위해 사용될 수 있을지라도, 이들 구성요소들은 이들 용어들에 의해 제한되는 것은 아님을 알 것이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위해 사용될 뿐이다. 따라서, 제 1 구성요소는 본 발명의 교시되는 범위 내에서 제 2 구성요소라는 용어가 사용될 수도 있을 것이다.
특정한 실시예들이 여기에 도시되고 기술되었을지라도, 당업자들은 동일 결과들을 달성하기 위해 계획된 구성이 여기 도시된 구체적 실시예들을 대체할 수 있음을 알 것이다. 본 개시된 바는 본 발명의 하나 이상의 실시예들의 개조 혹은 변형들도 포함한다. 위에 기술된 바는 제약적 형태가 아니라 예시적 형태로 행해졌음을 알아야 한다. 위에 실시예들의 조합, 및 특정하게 여기 기술되지 않은 다른 실시예들의 조합은 위에 기술된 바를 검토하였을 때 당업자들에게 명백할 것이다. 본 발명의 하나 이상의 실시예들의 범위는 위에 구조들 및 방법들이 사용되는 다른 적용들을 포함한다. 그러므로, 본 발명의 하나 이상의 실시예들의 범위는 이러한 청구항들이 부여하는 일범위의 전체 등가물들과 더불어 첨부된 청구항들에 관련하여 판정되어야 한다.
전술한 상세한 설명에서, 일부 특징들은 효율적 설명을 위해 단일 실시예에 그룹화하였다. 개시된 이 방법은 본 발명의 개시된 실시예들이 각 청구항에 분명하게 인용된 것보다 더 많은 특징들을 사용해야 하는 의도를 반영하는 것으로 해석되지 않아야 한다. 그보다는, 다음 청구항들이 반영하는 바와 같이, 발명의 요체는 개시된 단일 실시예의 모든 특징들 미만의 특징들에 놓여 있다. 따라서, 다음 청구항들은 상세한 설명에 포함되고 각 청구항은 자체가 별도의 실시예를 구성한다.

Claims (22)

  1. 호스트 인터페이스;
    상기 호스트 인터페이스에 결합된 제 1 오류 검출 회로;
    메모리 인터페이스; 및
    상기 메모리 인터페이스에 결합된 제 2 오류 검출 회로를 포함하고,
    상기 제 1 오류 검출 회로는 상기 호스트 인터페이스로부터 수신된 데이터에 대해 오류 검출 데이터를 계산하고 상기 호스트 인터페이스에 전송된 데이터의 무결성을 체크하도록 구성되고,
    상기 제 2 오류 검출 회로는 상기 메모리 인터페이스에 전송된 데이터 및 제 1 오류 검출 데이터에 대해 오류 정정 데이터를 계산하고 상기 메모리 인터페이스로부터 수신된 데이터 및 제 1 오류 검출 데이터의 무결성을 체크하도록 구성된, 메모리 제어기.
  2. 청구항 1에 있어서,
    상기 제 1 오류 검출 회로는 수신된 섹터의 데이터마다 오류 검출 데이터를 계산하도록 구성된, 메모리 제어기.
  3. 청구항 2에 있어서,
    상기 호스트 인터페이스로부터 수신된 상기 데이터는 다수 섹터들의 데이터를 포함하는 데이터 페이로드를 포함하고,
    상기 호스트 인터페이스로부터 수신된 상기 데이터는 스트리밍 데이터를 포함하는, 메모리 제어기.
  4. 청구항 1에 있어서,
    상기 제 1 오류 검출 회로는 링크층 및/또는 수송층에 의해 상기 호스트 인터페이스에 결합된 순환 용장 체크(CRC : cyclic redundancy check) 엔진을 포함하고,
    상기 제 2 오류 검출 회로는 오류 정정 코드(ECC : error correction code) 엔진을 포함하는, 메모리 제어기.
  5. 청구항 1에 있어서,
    상기 메모리 제어기는
    상기 호스트 인터페이스에 결합되고 상기 제 1 및 상기 제 2 오류 검출 회로들에 결합된 데이터 전송 회로; 및
    상기 데이터 전송 회로에 결합된 오류 검출 메모리를 포함하고,
    상기 오류 검출 메모리는 상기 오류 검출 데이터를 저장하도록 구성된, 메모리 제어기.
  6. 청구항 5에 있어서,
    상기 메모리 제어기는 상기 데이터 전송 회로 및 상기 제 2 오류 검출 회로에 결합된 데이터 버퍼를 포함하고,
    상기 데이터 버퍼는 상기 제 2 오류 검출 회로를 위한 데이터를 버퍼(buffer)하도록 구성된, 메모리 제어기.
  7. 청구항 1에 있어서,
    상기 제 2 오류 검출 회로는 상기 메모리 인터페이스로부터 수신된 상기 데이터 내의 하나 이상의 오류들을 정정하도록 구성된, 메모리 제어기.
  8. 청구항 1에 있어서,
    상기 메모리 제어기는 상기 호스트 인터페이스로부터 수신된 상기 데이터, 상기 오류 검출 데이터, 및 상기 오류 정정 데이터를 상기 메모리 인터페이스를 거쳐 전송하도록 구성된, 메모리 제어기.
  9. 청구항 1에 있어서,
    상기 메모리 제어기는 상기 메모리 인터페이스와, 상기 제 1 및 상기 제 2 오류 검출 회로들에 결합된 데이터 전송 회로를 포함하고,
    상기 데이터 전송 회로는 상기 메모리 인터페이스로부터 데이터 및 대응하는 오류 검출 데이터를 수신하고 상기 데이터 및 상기 대응하는 오류 검출 데이터를 상기 제 1 오류 검출 회로에 전송하도록 구성된, 메모리 제어기.
  10. 청구항 9에 있어서,
    상기 제 1 오류 검출 회로는
    상기 데이터 전송 회로로부터 수신된 상기 데이터에 대해 오류 검출 데이터를 계산하고,
    상기 데이터 전송 회로로부터 수신된 상기 데이터에 대해 상기 계산된 오류 검출 데이터를, 상기 데이터 전송 회로로부터 수신된 상기 대응하는 오류 검출 데이터와 비교하도록 구성된, 메모리 제어기.
  11. 청구항 9에 있어서,
    상기 메모리 제어기는
    하나를 초과하는 채널;
    상기 데이터 전송 회로에 결합된 채널 데이터 전송 회로;
    상기 채널 데이터 전송 회로 및 상기 제 2 오류 검출 회로에 결합된 데이터 버퍼; 및
    상기 메모리 인터페이스에 결합된 오류 검출 메모리를 포함하는, 메모리 제어기.
  12. 청구항 9에 있어서,
    상기 메모리 제어기는
    하나를 초과하는 채널; 및
    채널 프로세서 및 채널 메모리를 포함하는, 메모리 제어기.
  13. 청구항 1에 있어서,
    상기 메모리 제어기는
    상기 호스트 인터페이스에 결합된 호스트 버퍼; 및
    상기 호스트 버퍼에 결합된 암호화 회로를 포함하고,
    상기 암호화 회로는 선택적으로 암호화된 출력을 제공하기 위해 상기 데이터 를 처리하도록 구성된, 메모리 제어기.
  14. 다수 섹터들의 데이터를 수신하는 단계;
    상기 다수의 섹터들의 데이터의 섹터의 데이터마다 오류 검출 데이터를 계산하는 단계;
    섹터의 데이터 및 대응하는 오류 검출 데이터마다 오류 정정 데이터를 계산하는 단계;
    특정 섹터의 데이터의 무결성을 체크하는 단계; 및
    상기 특정 섹터의 데이터 및 대응하는 오류 검출 데이터와 오류 정정 데이터를 하나 이상의 고체상태 메모리 장치들에 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
  15. 청구항 14에 있어서,
    상기 방법은 순환 용장 체크(CRC) 엔진 및 직접 메모리 액세스(DMA) 모듈에 의해 병렬로 상기 다수의 섹터들의 데이터를 수신하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
  16. 청구항 15에 있어서,
    상기 특정 섹터의 데이터의 무결성을 체크하는 단계는 상기 특정 섹터의 데이터를 저장하기에 앞서 상기 CRC 엔진으로 상기 특정 섹터의 데이터의 무결성을 체크하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
  17. 청구항 14에 있어서,
    상기 방법은 상기 오류 정정 데이터를 계산하기에 앞서 상기 특정 섹터의 데이터를 평문으로부터 암호문으로 암호화하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
  18. 다수 섹터들의 데이터를 수신하는 단계;
    상기 다수 섹터들의 데이터의 섹터의 데이터마다 제 1 오류 검출 데이터를 계산하는 단계;
    상기 다수 섹터들의 데이터의 섹터의 데이터마다 제 2 오류 검출 데이터를 계산하는 단계;
    상기 제 1 오류 검출 데이터를 상기 제 2 오류 검출 데이터와 비교하는 단계; 및
    상기 다수 섹터들의 데이터를 하나 이상의 고체상태 메모리 장치들에 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
  19. 청구항 18에 있어서,
    상기 방법은
    상기 제 1 오류 검출 데이터를 상기 제 2 오류 검출 데이터와 비교한 후에 섹터의 데이터마다 오류 정정 데이터를 계산하는 단계; 및
    상기 다수 섹터들의 데이터 및 상기 대응하는 오류 정정 데이터를 상기 하나 이상의 고체상태 메모리 장치들에 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
  20. 청구항 19에 있어서,
    상기 방법은 상기 다수 섹터들의 데이터를 병렬로 후단 데이터 버퍼로부터 후단 오류 검출 회로 및 오류 정정 회로에 전송하는 단계를 포함하고,
    상기 후단 오류 검출 회로는 제 2 오류 검출 데이터를 계산하는 단계를 수행하는, 메모리 시스템을 동작시키는 방법.
  21. 청구항 19에 있어서,
    상기 방법은 상기 제 1 또는 상기 제 2 오류 검출 데이터를 저장함이 없이 상기 다수 섹터들의 데이터 및 상기 대응하는 오류 정정 데이터를 상기 하나 이상의 고체상태 메모리 장치들에 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
  22. 청구항 18에 있어서,
    상기 방법은 상기 제 2 오류 검출 데이터를 계산하기에 앞서 상기 제 1 오류 검출 데이터를 후단 오류 검출 메모리에 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
KR1020137028036A 2009-02-18 2010-02-12 메모리 제어기들에 있어서의 데이터 무결성 및 방법들 KR101457518B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/388,305 2009-02-18
US12/388,305 US8468417B2 (en) 2009-02-18 2009-02-18 Data integrity in memory controllers and methods
PCT/US2010/000412 WO2010096153A2 (en) 2009-02-18 2010-02-12 Data integrity in memory controllers and methods

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020117021511A Division KR101351754B1 (ko) 2009-02-18 2010-02-12 메모리 제어기들에 있어서의 데이터 무결성 및 방법들

Publications (2)

Publication Number Publication Date
KR20130124989A true KR20130124989A (ko) 2013-11-15
KR101457518B1 KR101457518B1 (ko) 2014-11-10

Family

ID=42560933

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137028036A KR101457518B1 (ko) 2009-02-18 2010-02-12 메모리 제어기들에 있어서의 데이터 무결성 및 방법들
KR1020117021511A KR101351754B1 (ko) 2009-02-18 2010-02-12 메모리 제어기들에 있어서의 데이터 무결성 및 방법들

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020117021511A KR101351754B1 (ko) 2009-02-18 2010-02-12 메모리 제어기들에 있어서의 데이터 무결성 및 방법들

Country Status (7)

Country Link
US (3) US8468417B2 (ko)
EP (1) EP2399194A4 (ko)
JP (1) JP5776107B2 (ko)
KR (2) KR101457518B1 (ko)
CN (1) CN102317919B (ko)
TW (2) TWI451434B (ko)
WO (1) WO2010096153A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150062774A (ko) * 2013-11-29 2015-06-08 에스케이하이닉스 주식회사 오류 검출 회로 및 이를 이용하는 반도체 집적회로

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468417B2 (en) * 2009-02-18 2013-06-18 Micron Technology, Inc. Data integrity in memory controllers and methods
JP2010262715A (ja) * 2009-05-11 2010-11-18 Renesas Electronics Corp メモリ検査システム及びメモリ検査方法
JP5017407B2 (ja) 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
JP5605238B2 (ja) * 2011-01-25 2014-10-15 ソニー株式会社 メモリシステムおよびその動作方法
US8745294B2 (en) * 2011-04-01 2014-06-03 Taejin Info Tech Co., Ltd. Dynamic random access memory for a semiconductor storage device-based system
JP5346978B2 (ja) * 2011-04-15 2013-11-20 シャープ株式会社 インターフェイス装置、配線基板、及び情報処理装置
JP5346979B2 (ja) * 2011-04-18 2013-11-20 シャープ株式会社 インターフェイス装置、配線基板、及び情報処理装置
WO2011127866A2 (zh) * 2011-05-27 2011-10-20 华为技术有限公司 数据处理方法、装置及系统
US8589761B2 (en) 2011-05-31 2013-11-19 Micron Technology, Inc. Apparatus and methods for providing data integrity
JP2013029882A (ja) * 2011-07-26 2013-02-07 Toshiba Corp メモリコントローラ、半導体記憶装置および復号方法
US20130067157A1 (en) * 2011-09-12 2013-03-14 Byungcheol Cho Semiconductor storage device having multiple host interface units for increased bandwidith
US8775713B2 (en) 2011-12-27 2014-07-08 Intel Corporation Multi-protocol tunneling over an I/O interconnect
US8953644B2 (en) 2011-12-27 2015-02-10 Intel Corporation Multi-protocol I/O interconnect time synchronization
JP2013137708A (ja) * 2011-12-28 2013-07-11 Toshiba Corp メモリコントローラ、データ記憶装置およびメモリ制御方法
US8782321B2 (en) 2012-02-08 2014-07-15 Intel Corporation PCI express tunneling over a multi-protocol I/O interconnect
US8880923B2 (en) 2012-03-29 2014-11-04 Intel Corporation Link power management in an I/O interconnect
KR102002925B1 (ko) * 2012-11-01 2019-07-23 삼성전자주식회사 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법
KR102009437B1 (ko) * 2013-01-18 2019-08-13 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법
KR102083374B1 (ko) * 2013-06-17 2020-04-14 에스케이하이닉스 주식회사 반도체 장치 및 그의 제어 방법
US9256551B2 (en) 2013-08-09 2016-02-09 Apple Inc. Embedded encryption/secure memory management unit for peripheral interface controller
CN103533045B (zh) * 2013-10-12 2017-12-29 丁贤根 一种用于pcie数据链路层高性能容错的方法
KR102214556B1 (ko) * 2014-08-19 2021-02-09 삼성전자주식회사 메모리 장치 및 모듈
US9697140B2 (en) * 2014-09-23 2017-07-04 Intel Corporation Encryption integrity check with CRC encryption in memory using a word count- and address-derived nonce
WO2016137464A1 (en) * 2015-02-26 2016-09-01 Hewlett Packard Enterprise Development Lp Checksum requests of files
JP6594712B2 (ja) * 2015-09-14 2019-10-23 ラピスセミコンダクタ株式会社 半導体メモリ及び半導体メモリのベリファイ方法
US10198313B2 (en) 2016-03-11 2019-02-05 Western Digital Technologies, Inc. Redundancy of error correction encoded data in a storage system
TWI625620B (zh) * 2017-05-12 2018-06-01 威盛電子股份有限公司 非揮發性記憶體裝置及其讀取方法
WO2020210390A1 (en) 2019-04-09 2020-10-15 Sunrise Memory Corporation Quasi-volatile memory device with a back-channel usage
US10891184B2 (en) * 2019-05-22 2021-01-12 Macronix International Co., Ltd. Configurable data integrity mode, and memory device including same
JP7327029B2 (ja) * 2019-09-19 2023-08-16 京セラドキュメントソリューションズ株式会社 画像形成装置、データ通信方法
JP7419715B2 (ja) * 2019-09-19 2024-01-23 京セラドキュメントソリューションズ株式会社 画像形成装置、データ整合性判定方法
US11693732B2 (en) * 2019-12-31 2023-07-04 Micron Technology, Inc. Cryptographic data integrity protection
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11726666B2 (en) * 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation
US11687273B2 (en) 2021-09-29 2023-06-27 Micron Technology, Inc. Memory controller for managing data and error information
US11775387B2 (en) * 2022-01-21 2023-10-03 Micron Technology, Inc. Cyclic redundancy check (CRC) retry for memory systems in compute express link (CXL) devices
US11940872B2 (en) 2022-04-21 2024-03-26 Analog Devices International Unlimited Company Error correction code validation

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5257391A (en) 1991-08-16 1993-10-26 Ncr Corporation Disk controller having host interface and bus switches for selecting buffer and drive busses respectively based on configuration control signals
US5459850A (en) * 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
US5631741A (en) 1995-12-29 1997-05-20 Intel Corporation Electronic carbon paper
US7020835B2 (en) * 2000-10-19 2006-03-28 Oracle International Corporation Enhancements to data integrity verification mechanism
US7900057B2 (en) 2000-11-03 2011-03-01 Enova Technology Corporation Cryptographic serial ATA apparatus and method
US6691205B2 (en) 2001-03-05 2004-02-10 M-Systems Flash Disk Pioneers Ltd. Method for using RAM buffers with simultaneous accesses in flash based storage systems
KR100487539B1 (ko) 2002-09-02 2005-05-03 삼성전자주식회사 직렬 에이티에이 케이블과 연결되는 불휘발성 반도체메모리 장치
JP2005093038A (ja) 2003-09-19 2005-04-07 Fujitsu Ltd 記録再生装置および記録再生回路
TWI269968B (en) 2004-04-22 2007-01-01 Mediatek Inc Method for processing the noise in the SATA
US7398449B1 (en) 2004-06-16 2008-07-08 Azul Systems, Inc. Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module
US7936881B2 (en) * 2004-08-31 2011-05-03 Nortel Networks Limited Method and system for transmitting signaling information over a data transport network
JP2006134064A (ja) 2004-11-05 2006-05-25 Hitachi Ltd 記憶メディアへの書込みエラーを検出する記憶制御装置及び方法
US20060136619A1 (en) 2004-12-16 2006-06-22 Intel Corporation Data integrity processing and protection techniques
US20060294299A1 (en) 2005-06-28 2006-12-28 Intel Corporation Techniques to verify storage of information
JP2007034829A (ja) 2005-07-28 2007-02-08 Toshiba Corp 情報処理方法および情報処理装置
JP4953648B2 (ja) * 2006-02-03 2012-06-13 パナソニック株式会社 不揮発性記憶装置およびメモリコントローラ
KR100856129B1 (ko) * 2006-12-29 2008-09-03 삼성전자주식회사 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치
KR100810358B1 (ko) 2007-01-30 2008-03-04 삼성전자주식회사 컨테이너의 무결성을 확인하는 방법 및 그 dvb―h 단말
KR100921748B1 (ko) * 2007-06-04 2009-10-15 삼성전자주식회사 Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법
KR100753174B1 (ko) * 2007-06-12 2007-08-30 엠진 (주) 플래시 메모리 기반의 대용량 저장장치
US8001444B2 (en) * 2007-08-08 2011-08-16 Intel Corporation ECC functional block placement in a multi-channel mass storage device
US8140936B2 (en) * 2008-01-24 2012-03-20 International Business Machines Corporation System for a combined error correction code and cyclic redundancy check code for a memory channel
JP5174603B2 (ja) * 2008-09-30 2013-04-03 株式会社日立製作所 メモリの誤り訂正方法,誤り検出方法、及びそれを用いたコントローラ
US8468417B2 (en) * 2009-02-18 2013-06-18 Micron Technology, Inc. Data integrity in memory controllers and methods

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150062774A (ko) * 2013-11-29 2015-06-08 에스케이하이닉스 주식회사 오류 검출 회로 및 이를 이용하는 반도체 집적회로

Also Published As

Publication number Publication date
TWI451434B (zh) 2014-09-01
KR101351754B1 (ko) 2014-01-14
KR101457518B1 (ko) 2014-11-10
JP2012518224A (ja) 2012-08-09
EP2399194A4 (en) 2012-10-31
CN102317919B (zh) 2015-03-11
CN102317919A (zh) 2012-01-11
EP2399194A2 (en) 2011-12-28
WO2010096153A3 (en) 2010-11-25
US20150220386A1 (en) 2015-08-06
WO2010096153A2 (en) 2010-08-26
KR20110118168A (ko) 2011-10-28
US8468417B2 (en) 2013-06-18
US20130283124A1 (en) 2013-10-24
US20100211834A1 (en) 2010-08-19
JP5776107B2 (ja) 2015-09-09
US9015553B2 (en) 2015-04-21
TW201035987A (en) 2010-10-01
TW201434051A (zh) 2014-09-01

Similar Documents

Publication Publication Date Title
KR101457518B1 (ko) 메모리 제어기들에 있어서의 데이터 무결성 및 방법들
US8726140B2 (en) Dummy data padding and error code correcting memory controller, data processing method thereof, and memory system including the same
TWI514139B (zh) 實體頁、邏輯頁及碼字對應
KR101441228B1 (ko) 고체-상태 드라이브의 성능 및/또는 신뢰성을 개선하는 방법 및 시스템
US8645790B2 (en) Data processing device and method using error detection code, method of compensating for data skew, and semiconductor device having the data processing device
CN108073357B (zh) 以raid方式存储数据的存储装置
US20110191649A1 (en) Solid state drive and method of controlling an error thereof
TWI684102B (zh) 記憶體系統中的鏈路糾錯
US9336081B2 (en) Data writing and reading method, and memory controller and memory storage apparatus using the same for improving reliability of data access
US8812942B2 (en) Interleaving apparatuses and memory controllers having the same
US20200241956A1 (en) Memory system and operating method thereof
US10372534B2 (en) Method of operating memory device using a compressed party difference, memory device using the same and memory system including the device
TWI588833B (zh) 資料程式化方法與記憶體儲存裝置
TW201443901A (zh) 資料寫入方法、記憶體儲存裝置與記憶體控制器
US11101822B1 (en) Data writing method, memory control circuit unit and memory storage apparatus
TWI613665B (zh) 資料程式化方法與記憶體儲存裝置
US20100306631A1 (en) Memory controller and memory system including the same
US20240028524A1 (en) Accelerated Encryption During Power Loss
US20170371741A1 (en) Technologies for providing file-based resiliency
US20230092380A1 (en) Operation method of memory controller configured to control memory device
US20240178861A1 (en) Memory controllers and memory systems including the same
US20230128638A1 (en) Method of operating storage device and method of operating storage system using the same
CN117234413A (zh) 存储器装置、存储器系统及其操作方法以及可读介质

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant
LAPS Lapse due to unpaid annual fee