KR102370278B1 - 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법 - Google Patents
메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법 Download PDFInfo
- Publication number
- KR102370278B1 KR102370278B1 KR1020170163394A KR20170163394A KR102370278B1 KR 102370278 B1 KR102370278 B1 KR 102370278B1 KR 1020170163394 A KR1020170163394 A KR 1020170163394A KR 20170163394 A KR20170163394 A KR 20170163394A KR 102370278 B1 KR102370278 B1 KR 102370278B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- ecc
- command
- read
- ecc encoding
- 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
- 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
-
- 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
- H03M13/2906—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 using block 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
-
- 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
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 기술은 복수의 메모리 셀들을 포함하는 메모리 장치, 및 리드 명령어에 응답해 상기 메모리 장치에 저장된 데이터를 리드하고, 상기 리드된 데이터에 제1 ECC 인코딩을 수행하는 메모리 컨트롤러를 제공하고, 메모리 컨트롤러는 라이트 명령어를 카운트하고, 샌드 명령어에 응답해 카운트된 데이터에 제2 ECC 인코딩을 수행하여 상기 제1 및 제2 ECC 인코딩된 데이터를 리드 데이터로 출력한다.
Description
본 발명은 메모리 시스템에 관한 것으로서, 더욱 상세하게는 리드 데이터에 대해 ECC(Error Correction Code) 동작을 수행하는 메모리 시스템 및 그 동작방법에 관한 것이다.
메모리 시스템은 소비자용 또는 산업용의 여러 전자 장치들, 예를 들면, 컴퓨터, 휴대폰, PDA(portable digital assistant), 디지털 카메라, 게임기, 항법 장치, 등에 적용되어 주 기억 장치 또는 보조 기억 장치로 사용된다. 메모리 시스템을 구현하는 메모리 장치들은, DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), FRAM(Ferroelectric RAM), PRAM(Phase-change RAM), MRAM(Magnetoresistive RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치를 포함할 수 있다.
메모리 시스템은 전자 장치, 즉, 호스트로부터 입력되는 명령어 응답하여 동작하는데, 메모리 시스템과 호스트 사이에 설정된 채널 프로토콜에 따라 다양한 종류의 명령어가 생성되어 입력될 수 있다. 예를 들어, DIMM(Dual In-line Memory Module)과 같은 메모리 모듈, 특히, NVDIMM(Non-Volatile DIMM)-P에서는 호스트에 의해 라이트(write), 리드(read), 및 샌드(send) 명령어가 생성되어 입력될 수 있다. 위와 같은 명령어에 따라 메모리 장치를 동작시키기 위해, DIMM 내에 메모리 컨트롤러를 구비하고 액티브(active), 프리차지(precharge), 등의 내부 명령어를 생성할 수 있다.
즉, 호스트는 단지 데이터를 쓰고, 읽고, 가져오는 명령어만 조절한다. 예를 들면, 호스트는 메모리 장치의 동작과는 상관 없이 라이트 명령어와 데이터를 전송할 수 있다. 하지만, 메모리 장치의 라이트 동작이나 메모리 컨트롤러의 라이트 명령어 처리 속도에는 제한이 있기 때문에, 호스트가 현재 보낼 수 있는 라이트 명령어 수가 항상 체크되어야만 한다. 따라서, 메모리 컨트롤러는 호스트로부터 입력된 라이트 명령어 수를 체크하고, 체크된 라이트 명령어 수나 호스트가 현재 보낼 수 있는 라이트 명령어 수를 나타내는 라이트 크레딧(write credit) 정보를 호스트로 통지해 줄 수 있다.
본 발명은 리드 데이터에 대해 단계적으로 ECC(Error Correction Code) 동작을 수행하는 메모리 시스템 및 그 동작방법을 제공하고자 한다.
본 발명의 일 실시예에 따른 메모리 컨트롤러는, 라이트, 리드, 및 샌드 명령어를 수신하는 명령어 입력부; 상기 라이트 명령어에 응답해 카운팅 동작을 수행하는 명령어 카운팅부; 상기 읽기 명령어에 응답해 메모리 장치로부터 리드된 데이터에 제1 ECC 인코딩을 수행하는 제1 ECC 인코딩부; 상기 전송 명령어에 응답해 상기 카운팅된 데이터에 제2 ECC 인코딩을 수행하는 제2 ECC 인코딩부; 및 상기 제1 및 제2 ECC 인코딩된 데이터를 조합하여 리드 데이터로 출력하는 데이터 출력부;를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 시스템은, 복수의 메모리 셀들을 포함하는 메모리 장치; 및 리드 명령어에 응답해 상기 메모리 장치에 저장된 데이터를 리드하고, 상기 리드된 데이터에 제1 ECC 인코딩을 수행하는 메모리 컨트롤러;를 포함하고, 상기 메모리 컨트롤러는 라이트 명령어를 카운트하고, 샌드 명령어에 응답해 카운트된 데이터에 제2 ECC 인코딩을 수행하여 상기 제1 및 제2 ECC 인코딩된 데이터를 리드 데이터로 출력할 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 시스템의 동작방법은, 라이트 명령어에 응답해, 카운팅 동작을 수행하는 단계; 리드 명령어에 응답해, 메모리 장치로부터 데이터를 리드하는 단계; 상기 리드된 데이터에 제1 ECC 인코딩을 수행하는 단계; 샌드 명령어에 응답해, 상기 카운팅된 데이터에 제2 ECC 인코딩을 수행하는 단계; 및 상기 제1 및 제2 ECC 인코딩된 데이터를 조합하여, 리드 데이터로 출력하는 단계;를 포함할 수 있다.
본 기술에 따르면, 리드 명령어에 응답해 메모리 장치로부터 리드되어 미리 준비되어 있는 데이터에 ECC 동작을 먼저 수행할 수 있다. 그리고, 샌드 명령어에 응답해 실제로 리드 데이터가 나갈 시점에 라이트 크레딧 정보를 확인하여 ECC 인코딩을 추가로 수행할 수 있다. 따라서, 메모리 장치의 리드 데이터를 통해 라이트 크레딧 정보를 실시간 제공하면서, 리드 레이턴시의 증가를 방지하고 채널의 ECC 동작 역시 지원할 수 있다. 또한, 리드 데이터와 라이트 크레딧 정보의 크기에 따라 서로 다른 주파수를 바탕으로 ECC 동작을 수행하여 메모리 장치를 포함하는 메모리 시스템의 동작 효율을 높일 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 도시한 블록도.
도 2는 도 1에 도시된 메모리 컨트롤러를 도시한 블록도.
도 3은 도 2에 도시된 메모리 컨트롤러의 신호 파형을 도시한 파형도.
도 4는 본 발명의 실시예에 따른 메모리 시스템의 동작을 도시한 순서도.
도 2는 도 1에 도시된 메모리 컨트롤러를 도시한 블록도.
도 3은 도 2에 도시된 메모리 컨트롤러의 신호 파형을 도시한 파형도.
도 4는 본 발명의 실시예에 따른 메모리 시스템의 동작을 도시한 순서도.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1은 본 발명의 실시예에 따른 메모리 시스템(100)를 도시한 블록도이다. 특히, 메모리 시스템(100)은 호스트로부터 입력되는 라이트/리드/샌드 명령어(WT/RD/SD)에 응답해 동작할 수 있다.
도 1를 참조하면, 메모리 시스템(100)는 메모리 컨트롤러(110) 및 메모리 장치(120)를 포함할 수 있다. 메모리 장치(120)는 복수의 메모리 셀들을 포함하며, 메모리 컨트롤러(110)는 호스트로부터 입력되는 라이트/리드/샌드 명령어(WT/RD/SD)에 응답해, 메모리 장치(120)의 제반 동작을 제어할 수 있다.
특히, 메모리 컨트롤러(110)는 메모리 장치(120)의 리드 동작을 크게 두 가지 과정으로 수행할 수 있다. 우선, 메모리 컨트롤러(110)는 리드 명령어(RD)에 응답해, 메모리 장치(120)에 저장된 데이터를 리드할 수 있다. 메모리 컨트롤러(110)는 리드된 데이터(DATA_R)를 내부의 버퍼(미도시)에 저장할 수 있다. 그리고, 메모리 컨트롤러(110)는 샌드 명령어(SD)에 응답해, 버퍼에 저장된 데이터를 리드 데이터(DATA)로 출력할 수 있다. 이때, 메모리 장치(120)로부터 리드된 데이터(DATA_R)가 버퍼에 저장되면, 메모리 컨트롤러(110)는 유효 신호(VALID)를 출력해서 호스트가 데이터를 가져갈 수 있도록, 즉, 샌드 명령어(SD) 생성하도록 할 수 있다. (Hand Shaking 방식)
앞서 설명한 바와 같이, 메모리 컨트롤러(110)는 호스트로부터 입력되는 라이트 명령어(WT)를 체크하고, 호스트가 현재 보낼 수 있는 라이트 명령어(WT) 수를 나타내는 라이트 크레딧(write credit) 정보를 호스트로 통지해 줄 수 있다. 일반적으로, 메모리 컨트롤러(110)는 호스트로부터 입력되는 라이트 명령어(WT)를 카운트하고, 리드 데이터(DATA)를 전송할 때 카운트 값에 해당하는 라이트 크레딧 정보를 포함시켜 출력할 수 있다.
한편, 메모리 시스템(100)과 호스트 사이의 채널에서 발생할 수 있는 에러를 검출 및 보정하기 위해 ECC 동작이 적용될 수 있다. 이때, 메모리 컨트롤러(110)는 메모리 장치(120)로부터 리드된 데이터(DATA_R)에 ECC 인코딩을 수행하여 인코딩된 데이터를 리드 데이터(DATA)로 전송할 수 있다. 메모리 컨트롤러(110)가 라이트 크레딧 정보를 리드 데이터(DATA)와 함께 전송할 경우, 리드된 데이터(DATA_R)에 라이트 크레딧 정보를 포함시켜 ECC 인코딩을 수행할 수 있다.
호스트로부터 라이트 명령어(WT)가 입력될 때마다, 메모리 컨트롤러(110)는 실시간으로 라이트 크레딧 정보를 업데이트하고 최신 업데이트된 정보를 호스트로 통지하여야 한다. 따라서, 호스트로부터 샌드 명령어(SD)가 입력되는 시점에, 메모리 컨트롤러(110)는 라이트 크레딧 정보를 확인하고, 확인된 정보와 리드된 데이터(DATA_R)에 ECC 인코딩을 수행하여 리드 데이터(DATA)로 출력할 수 있다. 결국, 샌드 명령어(SD)의 입력 이후 ECC 인코딩에 따른 동작 시간이 추가되어 메모리 시스템(100) 리드 레이턴시(latency)에 영향을 줄 수 있다.
본 발명의 실시예에 따른 메모리 컨트롤러(110)는 리드/샌드 명령어(RD/SD)에 따른 리드 동작의 ECC 인코딩을 2 단계로 수행할 수 있다. 먼저, 메모리 컨트롤러(110)는 리드 명령어(RD)에 응답해, 메모리 장치(120)에 저장된 데이터를 리드하고, 리드된 데이터(DATA_R)에 제1 ECC 인코딩을 수행하여 제1 ECC 인코딩된 데이터(DATA_E1)를 생성할 수 있다. 또한, 메모리 컨트롤러(110)는 라이트 명령어(WT)를 카운트하고, 샌드 명령어(SD)에 응답해 카운트된 데이터에 제2 ECC 인코딩을 수행하여 제2 ECC 인코딩된 데이터(DATA_E2)를 생성할 수 있다. 그리고, 메모리 컨트롤러(110)는 제1 ECC 인코딩된 데이터(DATA_E1) 및 제2 ECC 인코딩된 데이터(DATA_E2)를 조합하여 리드 데이터(DATA)로 출력할 수 있다.
즉, 리드 명령어(RD)에 응답해 메모리 장치(120)로부터 리드되어 미리 준비되어 있는 데이터에 메모리 컨트롤러(110)는 ECC 인코딩을 먼저 수행할 수 있다. 그리고, 샌드 명령어(SD)에 응답해 실제로 리드 데이터가 나갈 시점에 메모리 컨트롤러(110)는 라이트 크레딧 정보를 확인하여 ECC 인코딩을 추가로 수행할 수 있다. 따라서, 메모리 컨트롤러(110)는 리드 데이터(DATA)를 통해 라이트 크레딧 정보를 실시간 제공하면서, 리드 데이터(DATA)에 ECC 동작을 수행할 수 있다. 그리고, 이로 인한 리드 레이턴시의 증가를 방지할 수 있다. 본 발명의 실시예에 따른 메모리 컨트롤러(110)의 구성에 대해서는 도 2를 참조하여 보다 더 구체적으로 설명하고자 한다.
도 2는 도 1에 도시된 메모리 컨트롤러(110)를 도시한 블록도이다. 도 2를 참조하면, 메모리 컨트롤러(110)는 명령어 카운팅부(220), 제1 ECC 인코딩부(230), 제2 ECC 인코딩부(240), 및 데이터 출력부(250)를 포함할 수 있다. 본 발명의 실시예에 따라, 메모리 컨트롤러(110)는 명령어 입력부(210)를 추가로 포함할 수 있다.
명령어 입력부(210)는 호스트로부터 입력되는 라이트 명령어(WT), 리드 명령어(RD), 및 샌드 명령어(SD)에 응답해 내부 제어 신호들을 생성할 수 있다. 예를 들어, 명령어 입력부(210)는 라이트 명령어(WT), 리드 명령어(RD), 및 샌드 명령어(SD)를 디코딩하여 각각 내부 쓰기 신호(iWT), 내부 읽기 신호(iRD), 및 내부 전송 신호(iSD)를 생성할 수 있다.
명령어 카운팅부(220)는 명령어 입력부(210)로부터 출력되는 내부 쓰기 신호(iWT)에 응답해 카운팅 동작을 수행할 수 있다. 이때, 메모리 컨트롤러(110)는 내부 쓰기 신호(iWT)에 따라 메모리 장치(120)에 데이터를 라이트할 수 있고, 메모리 장치(120)에 데이터가 라이트되면, 메모리 장치(120)로부터 라이트 완료 신호(WT_DONE)가 입력될 수 있다. 명령어 카운팅부(220)는 라이트 완료 신호(WT_DONE)가 입력되면 카운트를 감소시키고, 내부 쓰기 신호(iWT)가 입력되면 카운트를 증가시킬 수 있다. 하지만, 본 발명의 실시예에 따라, 명령어 카운팅부(220)는 라이트 완료 신호(WT_DONE) 및 내부 쓰기 신호(iWT)에 응답해 각각 카운트를 증가 및 감소시킬 수 있으며, 본 발명이 이에 한정되는 것은 아니다. 명령어 카운팅부(220)는 카운팅 동작에 따른 카운트된 데이터(DATA_C)를 생성할 수 있다.
한편, 메모리 컨트롤러(110)는 내부 읽기 신호(iRD)에 따라 메모리 장치(120)로부터 데이터를 리드할 수 있다. 제1 ECC 인코딩부(230)는 메모리 장치(120)로부터 리드된 데이터(DATA_R)에 제1 ECC 인코딩을 수행하여 제1 ECC 인코딩된 데이터(DATA_E1)를 생성할 수 있다. 제1 ECC 인코딩부(230)는 제1 주파수(FQ1)를 바탕으로 제1 ECC 인코딩을 수행할 수 있다.
내부 전송 신호(iSD)에 응답해, 제2 ECC 인코딩부(240)는 카운트된 데이터(DATA_C)를 확인할 수 있다. 제2 ECC 인코딩부(240)는 카운트된 데이터(DATA_C)에 제2 ECC 인코딩을 수행하여 제2 ECC 인코딩된 데이터(DATA_E2)를 생성할 수 있다. 제2 ECC 인코딩부(240)는 제1 주파수(FQ1)보다 높은 제2 주파수(FQ2)를 바탕으로 제2 ECC 인코딩을 수행할 수 있다.
데이터 출력부(250)는 제1 ECC 인코딩된 데이터(DATA_E1) 및 제2 ECC 인코딩된 데이터(DATA_E2)를 조합하여 리드 데이터(DATA)로 출력할 수 있다. 데이터 출력부(250)는 래치부(252)를 포함하며, 제1 ECC 인코딩된 데이터(DATA_E1)를 저장할 수 있다. 제1 ECC 인코딩된 데이터(DATA_E1)가 래치부(252)에 저장되면 데이터 출력부(250)는 유효 신호(VAILD)를 생성해 출력할 수 있다.
본 발명의 실시예에 따르면, 호스트로부터 리드 명령어(RD)가 입력된 후에, 이에 대응하는 샌드 명령어(SD)가 유효 신호(VAILD)를 바탕으로 입력될 수 있다. 또한, 리드 데이터(DATA)의 제2 ECC 인코딩된 데이터(DATA_E2)를 바탕으로 라이트 명령어(WT)가 입력될 수 있다.
도 3은 도 2에 도시된 메모리 컨트롤러(110)의 신호 파형을 도시한 파형도이다. 도 2 및 도 3을 참조해서, 메모리 컨트롤러(110)의 구체적인 동작이 아래에 기술되어 있다.
우선, 명령어 카운팅부(220)에 의해 메모리 컨트롤러(110)의 라이트 동작이 카운트되어 카운트된 데이터(DATA_C)가 계속 업데이트될 수 있다. 카운트된 데이터(DATA_C)는 복수의 비트를 포함하며, 이는 회로 설계에 따라 달라질 수 있다. 도 3에서는 카운트된 데이터(DATA_C)가 16 비트를 포함하는 것을 일례로 도시하고 있다.
호스트로부터 리드 명령어(RD)가 입력되면, 메모리 컨트롤러(110)는 메모리 장치(120)로부터 데이터를 리드할 수 있다. 한번의 리드 동작을 통해서 메모리 장치(120)로부터 복수의 비트의 데이터가 리드될 수 있으며, 일반적으로 메모리 컨트롤러(110)는 256 비트의 리드된 데이터(DATA_R)를 제어할 수 있다.
라이트 크레딧 정보를 통지하기 위해서 리드된 데이터(DATA_R)에는 카운트된 데이터(DATA_C)가 포함될 수 있다. 특히, 라이트 크레딧 정보를 실시간으로 업데이트하기 위해, 리드된 데이터(DATA_R)가 출력되는 시점에 카운트된 데이터(DATA_C)가 확인되어 포함될 수 있다.
또한, 메모리 시스템(100)의 호스트 사이의 채널 ECC를 지원하기 위해 리드된 데이터(DATA_R) 및 카운트된 데이터(DATA_C)에는 ECC 동작이 수행될 수 있다. 하지만, 이로 인한 리드 레이턴시가 증가하는 것을 방지하기 위해, 제1 ECC 인코딩부(230)는 리드된 데이터(DATA_R)에 먼저 제1 ECC 인코딩을 수행하여 제1 ECC 인코딩된 데이터(DATA_E1)를 생성할 수 있다. 이때, 제1 ECC 인코딩부(230)는 리드된 데이터(DATA_R)에 포함될 카운트된 데이터(DATA_C)에 해당하는 값을 '0'으로 설정하고 제1 ECC 인코딩을 수행할 수 있다.
아래 수식을 참조하면, ECC 동작은 여러 종류의 코드, 예를 들면, Reed Solomon 코드, 값을 바탕으로 행렬 연산(G-Matrix)을 통해 인코딩될 수 있다. 따라서, 리드된 데이터(DATA_R) 및 카운트된 데이터(DATA_C) 전체에 ECC 인코딩을 수행하는 대신, 카운트된 데이터(DATA_C)에 해당하는 값을 '0'으로 설정하고 리드된 데이터(DATA_R)에 제1 ECC 인코딩을 수행하고 리드된 데이터(DATA_R)에 해당하는 값을 '0'으로 설정하고 카운트된 데이터(DATA_C)에 제2 ECC 인코딩을 수행하여, 이들을 조합할 수 있다. 결국, 제1 ECC 인코딩부(230)는 256 비트의 리드된 데이터(DATA_R)와 '0'으로 설정된 16비트의 데이터에 대응하여 288 비트의 코드워드, 즉, 제1 ECC 인코딩된 데이터(DATA_E1)를 생성할 수 있다.
제1 ECC 인코딩된 데이터(DATA_E1)는 래치부(252)에 저장될 수 있다. 이에 따라, 데이터 출력부(250)는 유효 신호(VAID)를 생성할 수 있다. 메모리 컨트롤러(110)가 생성된 유효 신호(VAILD)를 외부로 출력하면, 호스트는 유효 신호(VAILD)를 바탕으로 리드 데이터가 준비된 것을 확인하고 샌드 명령어(SD)를 생성할 수 있다.
메모리 컨트롤러(110)로 샌드 명령어(SD)가 입력되면, 제2 ECC 인코딩부(240)는 카운트된 데이터(DATA_C)를 확인하고, 제2 ECC 인코딩을 수행할 수 있다. 앞서 설명한 것과 같이, 제2 ECC 인코딩부(240)는 리드된 데이터(DATA_R)에 해당하는 값을 '0'으로 설정하고, 카운트된 데이터(DATA_C)에 제2 ECC 인코딩을 수행할 수 있다. 따라서, 제2 ECC 인코딩부(240) 역시 256 비트의 '0'으로 설정된 데이터와 16비트의 카운트된 데이터(DATA_C)에 대응하여 288 비트의 코드워드, 즉, 제2 ECC 인코딩된 데이터(DATA_E2)를 생성할 수 있다.
데이터 출력부(250)는 제1 ECC 인코딩된 데이터(DATA_E1) 및 제2 ECC 인코딩된 데이터(DATA_E2)를 조합하여 리드 데이터(DATA)를 출력할 수 있다. 즉, 데이터 출력부(250)는 288 비트의 제1 ECC 인코딩된 데이터(DATA_E1)와 288 비트의 제2 ECC 인코딩된 데이터(DATA_E2)를 더해서 288 비트의 리드 데이터(RATA)를 출력할 수 있다.
상대적으로 크기가 큰 리드된 데이터(DATA_R)가 상대적으로 크기가 작은 카운트된 데이터(DATA_C)에 비해 인코딩 연산이 복잡할 수 있다. 본 발명의 실시예에 따르면, 리드된 데이터(DATA_R)에 대해 상대적으로 낮은 제1 주파수를 바탕으로 제1 ECC 인코딩을 수행하고, 카운트된 데이터(DATA_C)에 대해 상대적으로 높은 제2 주파수를 바탕으로 제2 ECC 인코딩을 수행할 수 있다. 따라서, 리드된 데이터(DATA_R)의 안정성을 확보하면서 카운트된 데이터(DATA_C)의 처리 속도를 높임으로써, 메모리 시스템(100)의 리드 동작의 신뢰성을 높일 수 있다.
도 4는 본 발명의 실시예에 따른 메모리 시스템(100)의 동작을 설명하기 위한 순서도이다.
1) 카운트 동작(S410).
라이트 명령어(WT)가 입력되면, 명령어 카운팅부(220)는 카운팅 동작을 수행할 수 있다. 이때, 메모리 컨트롤러(110)는 내부 쓰기 신호(iWT)에 따라 메모리 장치(120)에 데이터를 라이트할 수 있고, 메모리 장치(120)에 데이터가 라이트되면, 메모리 장치(120)로부터 라이트 완료 신호(WT_DONE)가 입력될 수 있다. 명령어 카운팅부(220)는 라이트 완료 신호(WT_DONE)가 입력되면 카운트를 감소시키고, 내부 쓰기 신호(iWT)가 입력되면 카운트를 증가시킬 수 있다. 명령어 카운팅부(220)는 카운팅 동작에 따른 카운트된 데이터(DATA_C)를 생성할 수 있다.
2) 리드 동작(S420).
호스트로부터 리드 명령어(RD)가 입력되면, 명령어 입력부(210)는 리드 명령어(210)를 디코딩해 내부 읽기 신호(iRD)를 생성할 수 있다. 메모리 컨트롤러(110)는 내부 읽기 신호(iRD)에 따라 메모리 장치(120)로부터 데이터를 리드할 수 있다.
3) 제1 ECC 인코딩(S430).
제1 ECC 인코딩부(230)는 메모리 장치(120)로부터 리드된 데이터(DATA_R)에 제1 ECC 인코딩을 수행할 수 있다. 제1 ECC 인코딩부(230)는 제1 주파수(FQ1)를 바탕으로 제1 ECC 인코딩을 수행하여 제1 ECC 인코딩된 데이터(DATA_E1)를 생성할 수 있다.
4) 유효 신호 생성(S440).
제1 ECC 인코딩부(230)로부터 생성된 제1 ECC 인코딩된 데이터(DATA_E1)가 입력되면, 데이터 출력부(252)는 유효 신호(VAILD)를 생성할 수 있다. 데이터 출력부(252)는 제1 ECC 인코딩된 데이터(DATA_E1)를 래치부(252)에 저장하고, 유효 신호(VAILD)를 생성해 메모리 시스템(100) 외부로 출력할 수 있다. 외부로 출력된 유효 신호(VAILD)를 바탕으로 리드 명령어(RD)에 대응하는 샌드 명령어(SD)가 메모리 시스템(100)으로 입력될 수 있다.
5) 제2 ECC 인코딩(S450).
샌드 명령어(SD)가 입력되면, 제2 ECC 인코딩부(240)는 내부 전송 신호(iSD)에 따라 명령어 카운팅부(220)에서 생성된 카운팅된 데이터(DATA_C)를 확인할 수 있다. 제2 ECC 인코딩부(240)는 카운팅된 데이터(DATA_C)에 제2 ECC 인코딩을 수행하여 제2 ECC 인코딩된 데이터(DATA_E2)를 생성할 수 있다. 제2 ECC 인코딩부(240)는 제1 ECC 인코딩부(230)의 제1 주파수(FQ1) 보다 높은 제2 주파수(FQ2)를 바탕으로 제2 ECC 인코딩을 수행할 수 있다.
6) 리드 데이터 출력(S460)
데이터 출력부(250)는 래치부(252)에 저장된 제1 ECC 인코딩된 데이터(DATA_E1)와 제2 ECC 인코딩된 데이터(DATA_E2)를 조합하여 리드 데이터(DATA)로 출력할 수 있다. 이때, 리드 데이터(DATA)의 제2 ECC 인코딩된 데이터(DATA_E2)를 바탕으로 메모리 시스템(100)의 라이트 명령어(WT)가 입력될 수 있다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 이상에서 설명한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 여러 가지 치환, 변형 및 변경으로 다양한 실시예가 가능함을 이해할 수 있을 것이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
Claims (19)
- 라이트, 리드, 및 샌드 명령어를 수신하는 명령어 입력부;
상기 라이트 명령어에 응답해 카운팅 동작을 수행하는 명령어 카운팅부;
상기 리드 명령어에 응답해 메모리 장치로부터 리드된 데이터에 제1 ECC 인코딩을 수행하는 제1 ECC 인코딩부;
상기 샌드 명령어에 응답해 카운팅된 데이터에 제2 ECC 인코딩을 수행하는 제2 ECC 인코딩부; 및
상기 제1 및 제2 ECC 인코딩된 데이터를 조합하여 리드 데이터로 출력하는 데이터 출력부;를 포함하는,
메모리 컨트롤러.
- ◈청구항 2은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 제1 ECC 인코딩부는 제1 주파수를 바탕으로 상기 제1 ECC 인코딩을 수행하고, 상기 제2 ECC 인코딩부는 상기 제1 주파수보다 높은 제2 주파수를 바탕으로 상기 제2 ECC 인코딩을 수행하는 메모리 컨트롤러.
- ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 명령어 카운팅부는 상기 라이트 명령어가 입력되면 카운트를 증가시키고, 상기 라이트 명령어에 응답해 상기 메모리 장치에 데이터가 라이트되면 상기 카운트를 감소시켜 상기 카운팅된 데이터를 생성하는 메모리 컨트롤러.
- ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 리드 데이터의 제2 ECC 인코딩된 데이터를 바탕으로 상기 라이트 명령어가 입력되는 메모리 컨트롤러.
- ◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈제1항에 있어서,
상기 데이터 출력부는 상기 제1 ECC 인코딩된 데이터를 저장하는 래치부를 포함하는 메모리 컨트롤러.
- ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈제5항에 있어서,
상기 메모리 컨트롤러는 상기 제1 ECC 인코딩된 데이터가 상기 래치부에 저장되면 유효 신호를 생성해 출력하는 메모리 컨트롤러. - ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈제6항에 있어서,
상기 리드 명령어가 입력된 이후에, 상기 샌드 명령어가 상기 유효 신호를 바탕으로 입력되는 메모리 컨트롤러.
- 복수의 메모리 셀들을 포함하는 메모리 장치; 및
리드 명령어에 응답해 상기 메모리 장치에 저장된 데이터를 리드하고, 상기 리드된 데이터에 제1 ECC 인코딩을 수행하는 메모리 컨트롤러;를 포함하고,
상기 메모리 컨트롤러는 라이트 명령어를 카운트하고, 샌드 명령어에 응답해 카운트된 데이터에 제2 ECC 인코딩을 수행하여 상기 제1 및 제2 ECC 인코딩된 데이터를 리드 데이터로 출력하는,
메모리 시스템.
- ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈제8항에 있어서,
상기 메모리 컨트롤러는,
제1 주파수를 바탕으로 상기 제1 ECC 인코딩을 수행하는 제1 ECC 인코딩부; 및
상기 제1 주파수보다 높은 제2 주파수를 바탕으로 상기 제2 ECC 인코딩을 수행하는 제2 ECC 인코딩부;를 포함하는 메모리 시스템.
- ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈제9항에 있어서,
상기 메모리 컨트롤러는,
상기 라이트 명령어가 입력되면 카운트를 증가시키고, 상기 라이트 명령어에 응답해 상기 메모리 장치에 데이터가 라이트되면 상기 카운트를 감소시켜 상기 카운트된 데이터를 생성하는 명령어 카운팅부를 더 포함하는 메모리 시스템.
- ◈청구항 11은(는) 설정등록료 납부시 포기되었습니다.◈제9항에 있어서,
상기 메모리 컨트롤러는,
상기 제1 ECC 인코딩된 데이터를 저장하는 래치부를 더 포함하고,
상기 제1 ECC 인코딩된 데이터가 상기 래치부에 저장되면 유효 신호를 생성해 출력하는 메모리 시스템.
- ◈청구항 12은(는) 설정등록료 납부시 포기되었습니다.◈제11항에 있어서,
상기 리드 명령어가 입력된 이후에, 상기 샌드 명령어가 상기 유효 신호를 바탕으로 입력되는 메모리 시스템.
- ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈제8항에 있어서,
상기 리드 데이터의 제2 ECC 인코딩된 데이터를 바탕으로 상기 라이트 명령어가 입력되는 메모리 시스템.
- 라이트 명령어에 응답해, 카운팅 동작을 수행하는 단계;
리드 명령어에 응답해, 메모리 장치로부터 데이터를 리드하는 단계;
상기 리드된 데이터에 제1 ECC 인코딩을 수행하는 단계;
샌드 명령어에 응답해, 카운팅된 데이터에 제2 ECC 인코딩을 수행하는 단계; 및
상기 제1 및 제2 ECC 인코딩된 데이터를 조합하여, 리드 데이터로 출력하는 단계;를 포함하는,
메모리 시스템의 동작방법.
- ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈제14항에 있어서,
상기 제1 ECC 인코딩은 제1 주파수를 바탕으로 수행되고, 상기 제2 ECC 인코딩은 상기 제1 주파수보다 높은 제2 주파수를 바탕으로 수행되는 메모리 시스템의 동작방법.
- ◈청구항 16은(는) 설정등록료 납부시 포기되었습니다.◈제14항에 있어서,
상기 카운팅 동작을 수행하는 단계는,
상기 라이트 명령어가 입력되면 카운트를 증가시키는 단계; 및
상기 라이트 명령어에 응답해 상기 메모리 장치에 데이터가 라이트되면, 상기 카운트를 감소시켜 단계;를 포함하는 메모리 시스템의 동작방법.
- ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈제14항에 있어서,
상기 리드 데이터의 제2 ECC 인코딩된 데이터를 바탕으로 상기 라이트 명령어를 입력하는 단계를 더 포함하는 메모리 시스템의 동작방법.
- ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈제14항에 있어서,
상기 제1 ECC 인코딩을 수행하는 단계 이후,
상기 제1 ECC 인코딩된 데이터를 저장하는 단계; 및
유효 신호를 생성해 출력하는 단계;를 더 포함하는 메모리 시스템의 동작방법.
- ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈제18항에 있어서,
상기 유효 신호를 바탕으로 상기 샌드 명령어를 입력하는 단계를 더 포함하는 메모리 시스템의 동작방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170163394A KR102370278B1 (ko) | 2017-11-30 | 2017-11-30 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법 |
US16/046,223 US10680656B2 (en) | 2017-11-30 | 2018-07-26 | Memory controller, memory system including the same, and operation method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170163394A KR102370278B1 (ko) | 2017-11-30 | 2017-11-30 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190064099A KR20190064099A (ko) | 2019-06-10 |
KR102370278B1 true KR102370278B1 (ko) | 2022-03-07 |
Family
ID=66632792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170163394A KR102370278B1 (ko) | 2017-11-30 | 2017-11-30 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10680656B2 (ko) |
KR (1) | KR102370278B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099778B2 (en) * | 2018-08-08 | 2021-08-24 | Micron Technology, Inc. | Controller command scheduling in a memory system to increase command bus utilization |
KR20210049619A (ko) * | 2019-10-25 | 2021-05-06 | 에스케이하이닉스 주식회사 | 분산 저장 시스템의 스토리지 노드 및 그 동작 방법 |
CN111930553B (zh) * | 2020-07-15 | 2022-05-20 | 烽火通信科技股份有限公司 | 一种服务器内存故障预警方法及系统 |
JP2023045362A (ja) * | 2021-09-22 | 2023-04-03 | 富士通株式会社 | 演算処理装置およびメモリアクセス方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100845529B1 (ko) * | 2007-01-03 | 2008-07-10 | 삼성전자주식회사 | 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템 |
US8626989B2 (en) * | 2011-02-02 | 2014-01-07 | Micron Technology, Inc. | Control arrangements and methods for accessing block oriented nonvolatile memory |
US8595415B2 (en) * | 2011-02-02 | 2013-11-26 | Micron Technology, Inc. | At least semi-autonomous modules in a memory system and methods |
US8713379B2 (en) | 2011-02-08 | 2014-04-29 | Diablo Technologies Inc. | System and method of interfacing co-processors and input/output devices via a main memory system |
US9432298B1 (en) * | 2011-12-09 | 2016-08-30 | P4tents1, LLC | System, method, and computer program product for improving memory systems |
KR101942863B1 (ko) * | 2012-06-19 | 2019-01-28 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 프로그램 방법 |
JP5870901B2 (ja) * | 2012-11-02 | 2016-03-01 | ソニー株式会社 | 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法 |
KR20140081954A (ko) * | 2012-12-21 | 2014-07-02 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법 |
BR122016006765B1 (pt) * | 2013-03-15 | 2022-02-01 | Intel Corporation | Aparelho acoplado ao módulo de memória, sistema de memória e método |
US9685217B2 (en) * | 2013-07-22 | 2017-06-20 | Taiwan Semiconductor Manufacturing Company Ltd. | Memory device with over-refresh and method thereof |
KR20170050935A (ko) * | 2015-11-02 | 2017-05-11 | 에스케이하이닉스 주식회사 | 온 칩 ecc 회로를 포함하는 메모리 장치 및 시스템 |
US9852024B2 (en) * | 2016-04-19 | 2017-12-26 | Winbond Electronics Corporation | Apparatus and method for read time control in ECC-enabled flash memory |
KR102479212B1 (ko) * | 2016-08-17 | 2022-12-20 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
-
2017
- 2017-11-30 KR KR1020170163394A patent/KR102370278B1/ko active IP Right Grant
-
2018
- 2018-07-26 US US16/046,223 patent/US10680656B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20190064099A (ko) | 2019-06-10 |
US20190165816A1 (en) | 2019-05-30 |
US10680656B2 (en) | 2020-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102370278B1 (ko) | 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법 | |
US8522114B2 (en) | Memory controller and memory system | |
KR101225924B1 (ko) | 메모리 시스템의 카피백 최적화 | |
US20100238705A1 (en) | Nonvolatile memory device and method system including the same | |
US11204846B2 (en) | Memory system and method for operating the same | |
KR20180019791A (ko) | 반도체장치 및 반도체시스템 | |
CN103077094A (zh) | 存储控制装置、存储装置、信息处理系统和存储控制方法 | |
KR102608908B1 (ko) | 데이터의 오류를 정정하는 방법 및 이를 이용하는 반도체장치 | |
KR102504178B1 (ko) | 반도체장치 | |
KR102410022B1 (ko) | 에러스크럽방법 및 이를 이용한 반도체모듈 | |
US10642499B2 (en) | Memory controller, memory system including the same, and operation method thereof | |
CN103871470A (zh) | 非易失性存储装置、操作方法和具有其的数据处理系统 | |
JP2018520410A (ja) | ライトワンスメモリコードのエラー訂正コード管理 | |
KR102420641B1 (ko) | 에러정정방법 및 이를 이용한 반도체장치 | |
US10261860B2 (en) | Semiconductor systems | |
KR20140081954A (ko) | 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법 | |
KR20100109223A (ko) | 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법 | |
KR102612911B1 (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
US9652403B2 (en) | Memory control unit and data storage device including the same | |
KR102417980B1 (ko) | 범용 비동기 송수신 부 및 이를 포함하는 메모리 컨트롤러 및 메모리 시스템 | |
KR102686057B1 (ko) | 반도체장치 및 반도체시스템 | |
JP2021520555A (ja) | 階層デコーダを使用したエラー訂正 | |
KR102697484B1 (ko) | 반도체장치 | |
KR20190043043A (ko) | 전자장치 | |
KR102216006B1 (ko) | 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |