KR20110118168A - 메모리 제어기들에 있어서의 데이터 무결성 및 방법들 - Google Patents
메모리 제어기들에 있어서의 데이터 무결성 및 방법들 Download PDFInfo
- Publication number
- KR20110118168A KR20110118168A KR1020117021511A KR20117021511A KR20110118168A KR 20110118168 A KR20110118168 A KR 20110118168A KR 1020117021511 A KR1020117021511 A KR 1020117021511A KR 20117021511 A KR20117021511 A KR 20117021511A KR 20110118168 A KR20110118168 A KR 20110118168A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- error detection
- memory
- sector
- detection circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear 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)에 관한 것이다.
메모리 장치들은 전형적으로 컴퓨터들 또는 그외 전자장치들 내에 내부 반도체 집적회로들로서 제공된다. 휘발성 및 비휘발성 메모리를 포함한 많은 서로 다른 유형들의 메모리가 있다. 휘발성 메모리는 자신의 데이터를 유지하기 위해 전력을 필요로 할 수 있으며, 특히 랜덤-액세스 메모리(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는 본 발명의 하나 이상의 실시예들에 따라 메모리 제어기를 포함하는 시스템의 기능 블록도이다.
도 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 (57)
- 호스트 인터페이스;
상기 호스트 인터페이스에 결합된 제 1 오류 검출 회로;
메모리 인터페이스; 및
상기 메모리 인터페이스에 결합된 제 2 오류 검출 회로를 포함하고,
상기 제 1 오류 검출 회로는 상기 호스트 인터페이스로부터 수신된 데이터에 대해 오류 검출 데이터를 계산하고 상기 호스트 인터페이스에 전송된 데이터의 무결성을 체크하도록 구성되고,
상기 제 2 오류 검출 회로는 상기 메모리 인터페이스에 전송된 데이터 및 제 1 오류 정정 데이터에 대해 오류 정정 데이터를 계산하고 상기 메모리 인터페이스로부터 수신된 데이터 및 제 1 오류 정정 데이터의 무결성을 체크하도록 구성된, 메모리 제어기. - 청구항 1에 있어서,
상기 제 1 오류 검출 회로는 수신된 섹터의 데이터마다 오류 검출 데이터를 계산하도록 구성된, 메모리 제어기. - 청구항 2에 있어서,
상기 호스트 인터페이스로부터 수신된 상기 데이터는 다수 섹터들의 데이터를 포함하는 데이터 페이로드를 포함하고,
상기 호스트 인터페이스로부터 수신된 상기 데이터는 스트리밍 데이터를 포함하는, 메모리 제어기. - 청구항 1에 있어서,
상기 제 1 오류 검출 회로는 링크층 및/또는 수송층에 의해 상기 호스트 인터페이스에 결합된 순환 용장 체크(CRC : cyclic redundancy check) 엔진을 포함하고,
상기 제 2 오류 검출 회로는 오류 정정 코드(ECC : error correction code) 엔진을 포함하는, 메모리 제어기. - 청구항 1에 있어서,
상기 메모리 제어기는
상기 호스트 인터페이스에 결합되고 상기 제 1 및 상기 제 2 오류 검출 회로들에 결합된 데이터 전송 회로; 및
상기 데이터 전송 회로에 결합된 오류 검출 메모리를 포함하고,
상기 오류 검출 메모리는 상기 오류 검출 데이터를 저장하도록 구성된, 메모리 제어기. - 청구항 5에 있어서,
상기 메모리 제어기는 상기 데이터 전송 회로 및 상기 제 2 오류 검출 회로에 결합된 데이터 버퍼를 포함하고,
상기 데이터 버퍼는 상기 제 2 오류 검출 회로를 위한 데이터를 버퍼(buffer)하도록 구성된, 메모리 제어기. - 청구항 1에 있어서,
상기 제 2 오류 검출 회로는 상기 메모리 인터페이스로부터 수신된 상기 데이터 내의 하나 이상의 오류들을 정정하도록 구성된, 메모리 제어기. - 청구항 1에 있어서,
상기 메모리 제어기는 상기 호스트 인터페이스로부터 수신된 상기 데이터, 상기 오류 검출 데이터, 및 상기 오류 정정 데이터를 상기 메모리 인터페이스를 거쳐 전송하도록 구성된, 메모리 제어기. - 청구항 1에 있어서,
상기 메모리 제어기는 상기 메모리 인터페이스와, 상기 제 1 및 상기 제 2 오류 검출 회로들에 결합된 데이터 전송 회로를 포함하고,
상기 데이터 전송 회로는 상기 메모리 인터페이스로부터 데이터 및 대응하는 오류 검출 데이터를 수신하고 상기 데이터 및 상기 대응하는 오류 검출 데이터를 상기 제 1 오류 검출 회로에 전송하도록 구성된, 메모리 제어기. - 청구항 9에 있어서,
상기 제 1 오류 검출 회로는
상기 데이터 전송 회로로부터 수신된 상기 데이터에 대해 오류 검출 데이터를 계산하고,
상기 데이터 전송 회로로부터 수신된 상기 데이터에 대해 상기 계산된 오류 검출 데이터를, 상기 데이터 전송 회로로부터 수신된 상기 대응하는 오류 검출 데이터와 비교하도록 구성된, 메모리 제어기. - 청구항 9에 있어서,
상기 메모리 제어기는
하나를 초과하는 채널;
상기 데이터 전송 회로에 결합된 채널 데이터 전송 회로;
상기 채널 데이터 전송 회로 및 상기 제 2 오류 검출 회로에 결합된 데이터 버퍼; 및
상기 메모리 인터페이스에 결합된 오류 검출 메모리를 포함하는, 메모리 제어기. - 청구항 9에 있어서,
상기 메모리 제어기는
하나를 초과하는 채널; 및
채널 프로세서 및 채널 메모리를 포함하는, 메모리 제어기. - 청구항 1에 있어서,
상기 메모리 제어기는
상기 호스트 인터페이스에 결합된 호스트 버퍼; 및
상기 호스트 버퍼에 결합된 암호화 회로를 포함하고,
상기 암호화 회로는 선택적으로 암호화된 출력을 제공하기 위해 상기 데이터 를 처리하도록 구성된, 메모리 제어기. - 청구항 13에 있어서,
상기 암호화 회로는 어드밴스드 암호화 표준(AES : advanced encryption standard) 엔진을 포함하는, 메모리 제어기. - 호스트 인터페이스;
상기 호스트 인터페이스에 결합된 전단 오류 검출 회로;
메모리 인터페이스; 및
상기 메모리 인터페이스에 결합된 후단 오류 검출 회로를 포함하고,
상기 전단 오류 검출 회로는 대응하는 데이터에 대해 제 1 오류 검출 데이터를 계산하도록 구성되고,
상기 후단 오류 검출 회로는 상기 대응하는 데이터에 대해 제 2 오류 검출 데이터를 계산하고 상기 대응하는 데이터의 무결성을 체크하도록 구성된, 메모리 제어기. - 청구항 15에 있어서,
상기 후단 오류 검출 회로는 상기 대응하는 데이터의 무결성을 체크하기 위해 상기 제 1 오류 검출 데이터를 상기 제 2 오류 검출 데이터와 비교하도록 구성된, 메모리 제어기. - 청구항 15에 있어서,
상기 메모리 제어기는
상기 전단 오류 검출 회로에 결합된 데이터 전송 회로;
상기 데이터 전송 회로 및 상기 후단 오류 검출 회로에 결합된 후단 오류 검출 메모리를 포함하고,
상기 데이터 전송 회로는 상기 제 1 오류 검출 데이터를 상기 전단 오류 검출 회로로부터 상기 후단 오류 검출 메모리에 전송하도록 구성되고;
상기 후단 오류 검출 회로는 상기 대응하는 데이터의 무결성을 체크하기 위해 상기 오류 검출 메모리로부터의 상기 제 1 오류 검출 데이터를 상기 제 2 오류 검출 데이터와 비교하도록 구성된, 메모리 제어기. - 청구항 15에 있어서,
상기 전단 오류 검출 회로는 순환 용장 체크(CRC) 엔진을 포함하고,
상기 후단 오류 검출 회로는 CRC 엔진을 포함하고,
상기 메모리 제어기는 상기 후단 오류 검출 회로 및 상기 메모리 인터페이스에 결합된 오류 정정 코드(ECC) 엔진을 포함하고,
상기 ECC 엔진은 상기 대응하는 데이터에 대해 오류 정정 데이터를 계산하도록 구성된, 메모리 제어기. - 청구항 18에 있어서,
상기 메모리 제어기는 상기 제 1 및/또는 상기 제 2 오류 검출 데이터 없이 상기 오류 정정 데이터 및 상기 대응하는 데이터를 상기 메모리 인터페이스를 거쳐 전송하도록 구성된, 메모리 제어기. - 청구항 15에 있어서,
상기 대응하는 데이터는 직접 메모리 액세스(DMA : direct memory access) 페이로드를 포함하고,
상기 전단 오류 검출 회로는 상기 DMA 페이로드의 섹터마다 제 1 오류 검출 데이터를 계산하도록 구성되고,
상기 후단 오류 검출 회로는 상기 DMA 페이로드의 섹터마다 제 2 오류 검출 데이터를 계산하도록 구성된, 메모리 제어기. - 하나 이상의 고체상태 메모리 장치들; 및
메모리 인터페이스에 의해 상기 하나 이상의 고체상태 메모리 장치들에 결합된 메모리 제어기를 포함하고,
상기 메모리 제어기는,
호스트 인터페이스;
상기 호스트 인터페이스에 결합된 제 1 오류 검출 회로; 및
상기 메모리 인터페이스에 결합된 제 2 오류 검출 회로를 포함하고,
상기 제 1 및 상기 제 2 오류 검출 회로들은 상기 데이터가 상기 메모리 시스템에 있는 동안 상기 호스트 인터페이스를 거쳐 전송된 데이터 내의 하나 이상의 오류들을 검출하도록 구성된, 메모리 시스템. - 청구항 21에 있어서,
상기 제 1 오류 검출 회로는 순환 용장 체크(CRC) 엔진을 포함하고,
상기 제 1 오류 검출 회로는 섹터별로 상기 데이터에 대해 오류 검출 데이터를 계산하도록 구성된, 메모리 시스템. - 청구항 22에 있어서,
상기 제 2 오류 검출 회로는 오류 정정 코드 (ECC) 엔진을 포함하고,
상기 제 2 오류 검출 회로는 섹터별로 상기 데이터 및 상기 오류 검출 데이터에 대해 오류 정정 데이터를 계산하도록 구성된, 메모리 시스템. - 청구항 23에 있어서,
상기 메모리 제어기는 상기 데이터, 상기 오류 검출 데이터, 및 상기 오류 정정 데이터를 상기 하나 이상의 고체상태 메모리 장치들에 저장하도록 구성된, 메모리 시스템. - 청구항 21에 있어서,
상기 메모리 제어기는 상기 제 2 오류 검출 회로에 결합된 데이터 버퍼를 포함하고,
상기 제 2 오류 검출 회로는 상기 데이터가 상기 데이터 버퍼에 있는 동안 데이터 오류들을 정정하도록 구성된, 메모리 시스템. - 청구항 21에 있어서,
상기 메모리 제어기는 상기 제 1 및 상기 제 2 오류 검출 회로들에 결합된 오류 검출 메모리를 포함하고,
상기 제 2 오류 검출 회로는 상기 오류 검출 데이터가 상기 오류 검출 메모리에 있는 동안 오류 검출 데이터 오류들을 정정하도록 구성된, 메모리 시스템. - 청구항 21에 있어서,
상기 메모리 시스템은 상기 메모리 제어기의 상기 호스트 인터페이스에 결합된 물리적 인터페이스를 포함하고,
상기 제 1 오류 검출 회로는 링크층 및/또는 수송층에 의해 상기 호스트 인터페이스에 결합된, 메모리 시스템. - 청구항 27에 있어서,
상기 물리적 인터페이스는 직렬 어드밴스드 기술 부착(SATA) 물리적 인터페이스를 포함하고,
상기 데이터는 직접 메모리 액세스(DMA) 페이로드의 적어도 일부를 포함하고,
상기 제 1 오류 검출 회로는 링크층에 의해 상기 호스트 인터페이스에 결합되고,
상기 제 1 오류 검출 회로는 상기 링크층으로부터 상기 DMA 페이로드를 수신하도록 구성된, 메모리 시스템. - 청구항 27에 있어서,
상기 물리적 인터페이스는 주변 부품 상호연결 익스프레스(PCIe : peripheral component interconnect express) 물리적 인터페이스를 포함하고,
상기 데이터는 직접 메모리 액세스(DMA) 페이로드의 적어도 일부를 포함하고,
상기 제 1 오류 검출 회로는 수송층에 의해 상기 호스트 인터페이스에 결합되고,
상기 제 1 오류 검출 회로는 상기 수송층으로부터 상기 DMA 페이로드를 수신하도록 구성된, 메모리 시스템. - 청구항 21에 있어서,
상기 메모리 시스템은 고체상태 드라이브(SSD)를 포함하고, 상기 하나 이상의 고체상태 메모리 장치들은 하나 이상의 NAND 플래시 어레이들을 포함하는, 메모리 시스템. - 하나 이상의 고체상태 메모리 장치들; 및
상기 하나 이상의 고체상태 메모리 장치들에 결합된 메모리 제어기를 포함하고,
상기 메모리 제어기는,
섹터의 데이터에 대해 제 1 오류 검출 데이터를 계산하도록 구성된 전단 오류 검출 회로; 및
상기 섹터의 데이터에 대해 제 2 오류 검출 데이터를 계산하고 상기 섹터의 데이터의 무결성을 체크하도록 구성된 후단 오류 검출 회로를 포함하고,
상기 메모리 제어기는 상기 제 1 및/또는 상기 제 2 오류 검출 데이터 없이 상기 섹터의 데이터를 상기 하나 이상의 고체상태 메모리 장치들에 저장하도록 구성된, 메모리 시스템. - 청구항 31에 있어서,
상기 후단 오류 검출 회로는 상기 섹터의 데이터의 무결성을 체크하기 위해서 상기 제 1 오류 검출 데이터를 상기 제 2 오류 검출 데이터와 비교하도록 구성된 순환 용장 체크(CRC) 엔진을 포함하는, 메모리 시스템. - 청구항 31에 있어서,
상기 시스템은 상기 메모리 제어기의 호스트 인터페이스에 결합된 물리적 인터페이스를 포함하는, 메모리 시스템. - 청구항 33에 있어서,
상기 전단 오류 검출 회로는 링크층 및/또는 수송층에 의해 상기 호스트 인터페이스에 결합된 순환 용장 체크(CRC) 엔진을 포함하는, 메모리 시스템. - 청구항 33에 있어서,
상기 물리적 인터페이스는 유니버설 직렬 버스(USB), 직렬 어드밴스드 기술 부착(SATA), 및 주변 부품 상호연결 익스프레스(PCIe)를 포함하는 직렬 인터페이스들의 그룹에서 선택된 직렬 인터페이스를 포함하는, 메모리 시스템. - 청구항 31에 있어서,
상기 메모리 제어기는 상기 후단 오류 검출 회로 및 메모리 인터페이스에 결합된 오류 정정 코드(ECC) 엔진을 포함하고, 상기 ECC 엔진은 상기 섹터의 데이터에 대한 오류 정정 데이터를 계산하도록 구성된, 메모리 시스템. - 청구항 36에 있어서,
상기 메모리 제어기는 상기 제 1 오류 검출 데이터가 상기 제 2 오류 검출 데이터와 일치할 때 상기 오류 검출 데이터 없이 상기 섹터의 데이터 및 상기 오류 정정 데이터를 상기 하나 이상의 고체상태 메모리 장치들에 저장하도록 구성된, 메모리 시스템. - 청구항 31에 있어서,
상기 전단 오류 검출 회로는 상기 섹터의 데이터의 무결성을 체크하기 위해 상기 제 1 오류 검출 데이터를 상기 제 2 오류 검출 데이터와 비교하도록 구성된, 메모리 시스템. - 다수 섹터들의 데이터를 수신하는 단계;
상기 다수의 섹터들의 데이터의 섹터의 데이터마다 오류 검출 데이터를 계산하는 단계;
섹터의 데이터 및 대응하는 오류 검출 데이터마다 오류 정정 데이터를 계산하는 단계; 및
상기 섹터의 데이터 및 대응하는 오류 검출 데이터와 오류 정정 데이터를 하나 이상의 고체상태 메모리 장치들에 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법. - 청구항 39에 있어서,
상기 방법은
상기 오류 정정 데이터를 계산하기에 앞서 상기 오류 검출 데이터를 오류 검출 메모리에 저장하는 단계; 및
상기 오류 정정 데이터를 계산하기 전에 상기 섹터의 데이터를 버퍼하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법. - 청구항 39에 있어서,
상기 방법은 순환 용장 체크(CRC) 엔진 및 직접 메모리 액세스(DMA) 모듈에 의해 병렬로 상기 다수의 섹터들의 데이터를 수신하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법. - 청구항 41에 있어서,
상기 방법은 상기 섹터의 데이터를 저장하기에 앞서 상기 CRC 엔진으로 상기 섹터의 데이터의 무결성을 체크하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법. - 청구항 39에 있어서,
상기 방법은 상기 오류 정정 데이터를 계산하기에 앞서 상기 섹터의 데이터를 평문으로부터 암호문으로 암호화하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법. - 메모리 시스템에서 데이터의 무결성을 체크하는 방법으로서,
상기 데이터, 상기 데이터에 대응하는 제 1 오류 검출 데이터, 및 상기 데이터에 대응하는 오류 정정 데이터를 하나 이상의 고체상태 메모리 장치들로부터 판독하는 단계;
상기 데이터 및 상기 제 1 오류 검출 데이터를 오류 정정하는 단계;
상기 데이터에 대응하는 제 2 오류 검출 데이터를 계산하는 단계; 및
상기 제 1 오류 검출 데이터를 상기 제 2 오류 검출 데이터와 비교하는 단계를 포함하는, 메모리 시스템에서 데이터의 무결성을 체크하는 방법. - 청구항 44에 있어서,
상기 방법은 상기 데이터 및 상기 제 1 오류 검출 데이터를 병렬로 오류 검출 회로에 전송하는 단계를 포함하는, 메모리 시스템에서 데이터의 무결성을 체크하는 방법. - 청구항 44에 있어서,
상기 방법은 상기 제 1 오류 검출 데이터를 상기 제 2 오류 검출 데이터와 비교한 후에 호스트 인터페이스의 수송층을 거쳐 상기 데이터를 전송하는 단계를 포함하는, 메모리 시스템에서 데이터의 무결성을 체크하는 방법. - 청구항 44에 있어서,
상기 방법은 상기 제 1 오류 검출 데이터가 오류 검출 메모리에 있는 동안 상기 제 1 오류 검출 데이터에서 확인된 하나 이상의 오류들을 정정하는 단계를 포함하는, 메모리 시스템에서 데이터의 무결성을 체크하는 방법. - 청구항 44에 있어서,
상기 방법은 상기 데이터가 데이터 버퍼에 있는 동안 상기 데이터에서 확인된 하나 이상의 오류들을 정정하는 단계를 포함하는, 메모리 시스템에서 데이터의 무결성을 체크하는 방법. - 청구항 44에 있어서,
상기 방법은
상기 데이터를 상기 하나 이상의 고체상태 메모리 장치들로부터 암호문 데이터로서 판독하는 단계; 및
상기 데이터를 상기 메모리 시스템의 호스트 인터페이스의 상기 수송층을 거쳐 전송하기 전에 상기 암호문 데이터를 평문 데이터로 해독하는 단계를 포함하는, 메모리 시스템에서 데이터의 무결성을 체크하는 방법. - 다수 섹터들의 데이터를 수신하는 단계;
상기 다수 섹터들의 데이터의 섹터의 데이터마다 제 1 오류 검출 데이터를 계산하는 단계;
상기 다수 섹터들의 데이터의 섹터의 데이터마다 제 2 오류 검출 데이터를 계산하는 단계;
상기 제 1 오류 검출 데이터를 상기 제 2 오류 검출 데이터와 비교하는 단계; 및
상기 다수 섹터들의 데이터를 하나 이상의 고체상태 메모리 장치들에 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법. - 청구항 50에 있어서,
상기 방법은
상기 제 1 오류 검출 데이터를 상기 제 2 오류 검출 데이터와 비교한 후에 섹터의 데이터마다 오류 정정 데이터를 계산하는 단계; 및
상기 다수 섹터들의 데이터 및 상기 대응하는 오류 정정 데이터를 상기 하나 이상의 고체상태 메모리 장치들에 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법. - 청구항 51에 있어서,
상기 방법은 상기 다수 섹터들의 데이터를 병렬로 후단 데이터 버퍼로부터 후단 오류 검출 회로 및 오류 정정 회로에 전송하는 단계를 포함하고,
상기 후단 오류 검출 회로는 제 2 오류 검출 데이터를 계산하는 단계를 수행하는, 메모리 시스템을 동작시키는 방법. - 청구항 51에 있어서,
상기 방법은 상기 제 1 또는 상기 제 2 오류 검출 데이터를 저장함이 없이 상기 다수 섹터들의 데이터 및 상기 대응하는 오류 정정 데이터를 상기 하나 이상의 고체상태 메모리 장치들에 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법. - 청구항 50에 있어서,
상기 방법은 상기 제 2 오류 검출 데이터를 계산하기에 앞서 상기 제 1 오류 검출 데이터를 후단 오류 검출 메모리에 저장하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법. - 섹터의 데이터 및 첨부된 오류 정정 데이터를 하나 이상의 고체상태 메모리 장치들로부터 판독하는 단계;
상기 섹터의 데이터를 오류 정정하는 단계;
상기 섹터의 데이터에 대해 오류 검출 데이터를 계산하는 단계;
상기 섹터의 데이터 및 상기 오류 검출 데이터를 전송하는 단계; 및
상기 전송된 섹터의 데이터에 대해 오류 검출 데이터를 계산하고 이를 상기 전송된 오류 검출 데이터와 비교하는 단계를 포함하는, 메모리 시스템에서 섹터의 데이터의 무결성을 체크하는 방법. - 청구항 55에 있어서,
상기 방법은 상기 비교 단계 후에 호스트 인터페이스의 수송층을 거쳐 상기 섹터의 데이터를 전송하는 단게를 포함하는, 메모리 시스템에서 섹터의 데이터의 무결성을 체크하는 방법. - 청구항 55에 있어서,
상기 방법은 상기 오류 정정 단계 후에 상기 섹터의 데이터로부터 상기 오류 정정 데이터를 제거하는 단계를 포함하는, 메모리 시스템에서 섹터의 데이터의 무결성을 체크하는 방법.
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 Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137028036A Division KR101457518B1 (ko) | 2009-02-18 | 2010-02-12 | 메모리 제어기들에 있어서의 데이터 무결성 및 방법들 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110118168A true KR20110118168A (ko) | 2011-10-28 |
KR101351754B1 KR101351754B1 (ko) | 2014-01-14 |
Family
ID=42560933
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117021511A KR101351754B1 (ko) | 2009-02-18 | 2010-02-12 | 메모리 제어기들에 있어서의 데이터 무결성 및 방법들 |
KR1020137028036A KR101457518B1 (ko) | 2009-02-18 | 2010-02-12 | 메모리 제어기들에 있어서의 데이터 무결성 및 방법들 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137028036A KR101457518B1 (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) | KR101351754B1 (ko) |
CN (1) | CN102317919B (ko) |
TW (2) | TWI451434B (ko) |
WO (1) | WO2010096153A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160022250A (ko) * | 2014-08-19 | 2016-02-29 | 삼성전자주식회사 | 메모리 장치 및 모듈 |
Families Citing this family (43)
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 | シャープ株式会社 | インターフェイス装置、配線基板、及び情報処理装置 |
CN102203740B (zh) * | 2011-05-27 | 2013-06-05 | 华为技术有限公司 | 数据处理方法、装置及系统 |
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数据链路层高性能容错的方法 |
KR102058495B1 (ko) * | 2013-11-29 | 2020-02-07 | 에스케이하이닉스 주식회사 | 오류 검출 회로 및 이를 이용하는 반도체 집적회로 |
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 | 威盛電子股份有限公司 | 非揮發性記憶體裝置及其讀取方法 |
KR102678314B1 (ko) * | 2018-08-03 | 2024-06-25 | 삼성전자주식회사 | 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법 |
EP3953937A4 (en) * | 2019-04-09 | 2022-12-14 | Sunrise Memory Corporation | QUASI-VOLATILE STORAGE DEVICE WITH BACK CHANNEL USE |
US10891184B2 (en) * | 2019-05-22 | 2021-01-12 | Macronix International Co., Ltd. | Configurable data integrity mode, and memory device including same |
US11080132B2 (en) * | 2019-07-12 | 2021-08-03 | Micron Technology, Inc. | Generating error checking data for error detection during modification of data in a memory sub-system |
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 |
US20210279128A1 (en) * | 2021-05-21 | 2021-09-09 | Intel Corporation | Buffer that supports burst transfers having parallel crc and data transmissions |
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 |
US12093566B2 (en) | 2022-03-01 | 2024-09-17 | Micron Technology, Inc. | Memory controller for managing raid information |
US11940872B2 (en) | 2022-04-21 | 2024-03-26 | Analog Devices International Unlimited Company | Error correction code validation |
US12117948B2 (en) | 2022-10-31 | 2024-10-15 | Mellanox Technologies, Ltd. | Data processing unit with transparent root complex |
US12007921B2 (en) | 2022-11-02 | 2024-06-11 | Mellanox Technologies, Ltd. | Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA) |
Family Cites Families (24)
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 |
-
2009
- 2009-02-18 US US12/388,305 patent/US8468417B2/en not_active Expired - Fee Related
-
2010
- 2010-02-12 KR KR1020117021511A patent/KR101351754B1/ko not_active IP Right Cessation
- 2010-02-12 TW TW099104808A patent/TWI451434B/zh not_active IP Right Cessation
- 2010-02-12 WO PCT/US2010/000412 patent/WO2010096153A2/en active Application Filing
- 2010-02-12 TW TW103118322A patent/TW201434051A/zh unknown
- 2010-02-12 KR KR1020137028036A patent/KR101457518B1/ko not_active IP Right Cessation
- 2010-02-12 EP EP20100744045 patent/EP2399194A4/en not_active Withdrawn
- 2010-02-12 CN CN201080008211.XA patent/CN102317919B/zh not_active Expired - Fee Related
- 2010-02-12 JP JP2011550132A patent/JP5776107B2/ja not_active Expired - Fee Related
-
2013
- 2013-06-18 US US13/920,451 patent/US9015553B2/en not_active Expired - Fee Related
-
2015
- 2015-04-16 US US14/688,323 patent/US20150220386A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160022250A (ko) * | 2014-08-19 | 2016-02-29 | 삼성전자주식회사 | 메모리 장치 및 모듈 |
Also Published As
Publication number | Publication date |
---|---|
KR101457518B1 (ko) | 2014-11-10 |
US20100211834A1 (en) | 2010-08-19 |
EP2399194A4 (en) | 2012-10-31 |
KR20130124989A (ko) | 2013-11-15 |
WO2010096153A2 (en) | 2010-08-26 |
US8468417B2 (en) | 2013-06-18 |
EP2399194A2 (en) | 2011-12-28 |
TWI451434B (zh) | 2014-09-01 |
CN102317919A (zh) | 2012-01-11 |
WO2010096153A3 (en) | 2010-11-25 |
JP2012518224A (ja) | 2012-08-09 |
CN102317919B (zh) | 2015-03-11 |
JP5776107B2 (ja) | 2015-09-09 |
KR101351754B1 (ko) | 2014-01-14 |
US20150220386A1 (en) | 2015-08-06 |
US9015553B2 (en) | 2015-04-21 |
TW201434051A (zh) | 2014-09-01 |
TW201035987A (en) | 2010-10-01 |
US20130283124A1 (en) | 2013-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101351754B1 (ko) | 메모리 제어기들에 있어서의 데이터 무결성 및 방법들 | |
US8726140B2 (en) | Dummy data padding and error code correcting memory controller, data processing method thereof, and memory system including the same | |
KR101441228B1 (ko) | 고체-상태 드라이브의 성능 및/또는 신뢰성을 개선하는 방법 및 시스템 | |
TWI514139B (zh) | 實體頁、邏輯頁及碼字對應 | |
US8650463B2 (en) | Solid state drive and method of controlling an error thereof | |
KR102081980B1 (ko) | 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 | |
CN108073357B (zh) | 以raid方式存储数据的存储装置 | |
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 | |
US9336081B2 (en) | Data writing and reading method, and memory controller and memory storage apparatus using the same for improving reliability of data access | |
CN111352765B (zh) | 控制器及存储器系统 | |
TWI588833B (zh) | 資料程式化方法與記憶體儲存裝置 | |
US9191030B2 (en) | Memory controller, data storage device, and memory controlling method | |
TWI527040B (zh) | 資料寫入方法、記憶體儲存裝置與記憶體控制器 | |
KR20220045343A (ko) | 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법 | |
TWI613665B (zh) | 資料程式化方法與記憶體儲存裝置 | |
WO2020028801A1 (en) | Error correction with scatter-gather list data management | |
US11101822B1 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
JP2017504920A (ja) | 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム | |
JP6491482B2 (ja) | 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置 | |
US10353775B1 (en) | Accelerated data copyback | |
US20170371741A1 (en) | Technologies for providing file-based resiliency | |
US20240028524A1 (en) | Accelerated Encryption During Power Loss |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
A107 | Divisional application of patent | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |