KR102362229B1 - 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서 - Google Patents

메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서 Download PDF

Info

Publication number
KR102362229B1
KR102362229B1 KR1020170101705A KR20170101705A KR102362229B1 KR 102362229 B1 KR102362229 B1 KR 102362229B1 KR 1020170101705 A KR1020170101705 A KR 1020170101705A KR 20170101705 A KR20170101705 A KR 20170101705A KR 102362229 B1 KR102362229 B1 KR 102362229B1
Authority
KR
South Korea
Prior art keywords
ecc
data
memory
area
memory controller
Prior art date
Application number
KR1020170101705A
Other languages
English (en)
Other versions
KR20190017223A (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 삼성전자주식회사
Priority to KR1020170101705A priority Critical patent/KR102362229B1/ko
Priority to US15/898,784 priority patent/US10565050B2/en
Priority to TW107120227A priority patent/TWI791536B/zh
Priority to CN201810902334.6A priority patent/CN109388517B/zh
Publication of KR20190017223A publication Critical patent/KR20190017223A/ko
Priority to US16/792,545 priority patent/US11061763B2/en
Application granted granted Critical
Publication of KR102362229B1 publication Critical patent/KR102362229B1/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
    • 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/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 개시의 기술적 사상의 일측면에 따른 복수의 메모리 페이지들을 포함하는 메모리 장치를 제어하는 메모리 컨트롤러는, 복수의 메모리 페이지들을 ECC 활성화 영역 및 ECC 비활성화 영역으로 구분하여 관리하는 ECC 영역 관리부 및 ECC 활성화 영역에 포함된 데이터에 대해 ECC 동작을 수행하는 ECC 엔진을 포함할 수 있다.

Description

메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서{MEMORY CONTROLLER, MEMORY SYSTEM AND APPLICATION PROCESSOR COMPRISING THE MEMORY CONTROLLER}
본 개시의 기술적 사상은 메모리 컨트롤러에 관한 것으로서, 자세하게는 ECC(Error Correction Code) 데이터를 저장하는 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 방법에 관한 것이다.
기술이 발전함에 따라, 반도체 메모리 장치는 그 용량 및 속도가 증가하고 있다. 반도체 메모리 장치의 일 예로서 휘발성 메모리(volatile-memory) 장치는 캐패시터(capacitor)에 저장되어 있는 전하(charge)에 의해 데이터를 판정하는 메모리 장치로서, 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다.
반도체 메모리 장치의 동작이 고속화됨에 따라 데이터의 에러 발생 확률이 증가하게 된다. 증가하는 에러 발생에 따른 성능 저하를 막기 위해, 에러를 정정하는 다양한 방안이 제안된다.
본 개시의 기술적 사상은 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 어플리케이션 프로세서에서, in-band ECC 메모리 장치의 영역을 구획하고 ECC 활성화 영역으로 설정된 메모리 페이지의 데이터에 대해 ECC 동작을 수행하기 위한 장치 및 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 복수의 메모리 페이지들을 포함하는 메모리 장치를 제어하는 메모리 컨트롤러는, 복수의 메모리 페이지들을 ECC 활성화 영역 및 ECC 비활성화 영역으로 구분하여 관리하는 ECC 영역 관리부 및 ECC 활성화 영역에 포함된 데이터에 대해 ECC 동작을 수행하는 ECC 엔진을 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 메모리 시스템은, 복수의 메모리 페이지들을 포함하는 메모리 장치 및 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 메모리 컨트롤러는 복수의 메모리 페이지들을 ECC 활성화 영역과 ECC 비활성화 영역으로 구분하여 관리할 수 있고, ECC 활성화 영역에 ECC 데이터 및 노말 데이터를 저장할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 어플리케이션 프로세서는, 복수의 메모리 페이지들을 포함하는 외부 메모리 장치를 제어하는 메모리 컨트롤러 및 메모리 컨트롤러에 데이터 주소를 송신하는 프로세서를 포함할 수 있고, 메모리 컨트롤러는 외부 메모리 장치 또는 프로세서로부터 데이터를 수신하고, 데이터 주소를 기초로 수신된 데이터에 대한 ECC 수행 여부를 결정할 수 있다.
본 개시의 예시적 실시예 따른 메모리 컨트롤러, 메모리 시스템 및 어플리케이션 프로세서에 의하면, ECC 데이터를 노말 데이터와 같은 메모리 페이지에 저장하는 메모리 장치를 구현할 수 있다.
뿐만 아니라, ECC 영역 관리부 및 ECC 캐시를 통해 ECC에 따른 오버헤드를줄일 수 있다.
도 1은 본 개시의 예시적 실시예에 따라 메모리 시스템을 포함하는 전자 시스템을 나타낸다.
도 2는 본 개시의 예시적 실시예에 따른 메모리 장치를 나타낸다.
도 3은 본 개시의 예시적 실시예에 따른 메모리 페이지를 나타낸다.
도 4a 및 도 4b는 본 개시의 예시적 실시예에 따른 메모리 컨트롤러 및 메모리 장치를 나타낸다.
도 5는 본 개시의 예시적 실시예에 따른 메모리 모듈을 나타낸다.
도 6은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러를 나타낸다.
도 7은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러를 나타낸다.
도 8은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러를 나타낸다.
도 9는 본 개시의 예시적 실시예에 따른 메모리 컨트롤러의 동작 순서도를 나타낸다.
도 10은 본 개시의 예시적 실시예에 따른 ECC 캐시를 나타낸다.
도 11은 본 개시의 예시적 실시예에 따른 ECC 활성화 영역에 포함된 메모리 페이지를 나타낸다.
도 12는 도11의 메모리 페이지로부터 데이터를 독출하는 시간 흐름도를 나타낸다.
도 13은 본 개시의 예시적 실시예에 따른 ECC캐시의 동작 순서도를 나타낸다.
도 14는 본 개시의 예시적 실시예에 따른 ECC 캐시를 나타낸다.
도 15는 본 개시의 예시적 실시예에 따른 외부 메모리 모듈과 데이터를 송수신하는 어플리케이션 프로세서를 나타낸다.
도 16은 본 개시의 예시적 실시예에 따른 모바일 시스템을 나타낸다.
도 17은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템을 나타낸다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시예에 따라 메모리 시스템(100)을 포함하는 전자 시스템(10)을 나타낸다.
전자 시스템(10)은 메모리 시스템(100) 및 호스트(600)를 포함할 수 있다.메모리 시스템(100)은 메모리 컨트롤러(200) 및 메모리 모듈(400)을 포함할 수 있다. 메모리 컨트롤러(200)와 호스트(600)는 각종 데이터 및 데이터 어드레스 정보 등을 주고 받을 수 있다. 메모리 컨트롤러(200)와 메모리 모듈(400)은 BUS2 및 BUS3을 통해 각종 신호(DQ, DQS, CLK 등)를 주고 받을 수 있다. 전자 시스템(10)은 각종 서버(Server), 데스크톱, 노트북, 스마트 폰, 태블릿 PC, 프린터, 스캐너, 모니터, 디지털 카메라, 디지털 음악 플레이어, 디지털 미디어 레코드, 휴대형 게임 콘솔 등 메모리를 필요로 하는 각종 전자 장치에 포함될 수 있으며, 개시된 예시에 한정되지 않는다.
메모리 모듈(400)은 프로세서에 의해 처리된 또는 처리될 데이터를 임시로 저장할 수 있으며, 컴퓨팅 시스템에서 연산 메모리(Operation Memory), 워킹 메모리(Working Memory) 또는 버퍼 메모리(Buffer Memory)로서 이용될 수 있다. 메모리 모듈(400)은 하나 이상의 메모리 랭크를 포함할 수 있다. 메모리 모듈(400)은 SIMM(Single in-line memory module), DIMM(Dual in-line memory module), SO-DIMM(Small-outline DIMM), UDIMM(Unbuffered DIMM), FBDIMM(Fully-buffered DIMM), RBDIMM(Rank-buffered DIMM), mini-DIMM 및 micro-DIMM으로 구현될 수 있으며, 주로 서버에 사용되는 RDIMM(Registered DIMM) 또는 LRDIMM(Load-Reduced DIMM)으로 구현될 수 있다.
메모리 모듈(400)은 복수의 메모리 장치들(420_1~420_k, k는 자연수)을 포함할 수 있다. 각각의 메모리 장치(420_1~420_k)는 DRAM(Dynamic Random Access Memory), SDRAM(Synchronous DRAM), DDR SDRAM(Double Data Rate SDRAM), LPDDR SDRAM(Low Power Double Data Rate SDRAM), GDDR SDRAM(Graphics Double Data Rate SDRAM), RDRAM(Rambus DRAM) 및 SRAM(Static RAM) 등과 같은 휘발성 메모리일 수 있으며, PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM) 및 FRAM(Ferro-electric RAM), 플래시 메모리(Flash Memory) 등과 같은 불휘발성 메모리일 수 있다. 또한, 메모리 장치(420_1~420_k) 각각은 DDR, DDR2, DDR3, DDR4, DDR5, LPDDR1, LPDDR2, LPDDR3 및 LPDDR4 등과 같은 다양한 표준에 따른 DRAM 칩에 해당할 수 있다.
이하의 설명에서, 메모리 장치(420_1~420_k) 각각은 DRAM 칩인 것으로 설명될 것이나, 상기 메모리 장치(420_1~420_k)의 종류가 이에 한정되는 것은 아니며, 다른 다양한 종류의 칩으로 구현되어도 무방할 것이다.
메모리 모듈(400)은 ECC 데이터를 포함하는 ECC 메모리 모듈일 수 있다. ECC 메모리 모듈은 ECC 데이터를 노말 데이터(Normal Data)와 별도의 칩에 저장하는 Side-band 메모리 모듈일 수 있고, ECC 데이터를 노말 데이터와 동일한 칩에 저장하는 In-band 메모리 모듈일 수 있다. 노말 데이터는 실제 데이터(Actual Data)라 칭해질 수 있다. Side-band 메모리 모듈의 경우, ECC 데이터를 저장하기 위해 별도의 칩을 구비해야 하기 때문에 비용 문제가 발생할 수 있다. 이하의 설명에서 메모리 모듈(400)은 In-band 메모리 모듈이고, 각각의 메모리 장치(420_1~420_k) 중 적어도 하나에는 노말 데이터와 ECC 데이터가 모두 저장되는 것으로 설명될 것이다.
메모리 컨트롤러(200)는 메모리 모듈(400)에 대한 인터페이스를 제공하여 메모리 모듈(400)로 가거나, 그로부터 나오는 데이터의 흐름을 관리할 수 있다. 메모리 컨트롤러(200)는 프로세서 등과 같은 외부 호스트(600)와 연결될 수 있으며, USB, MMC, PCIe, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI 및 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜 중 적어도 하나를 통해 외부 호스트(600)와 통신할 수 있으며, BUS1과 같은 BUS를 통해 호스트(600)와 통신할 수 있다. 메모리 컨트롤러(200)는 별도의 칩으로 구성되거나 메모리 모듈(400)과 통합되어 있을 수 있으며, 호스트(600)의 내부에 구비되어 하나의 칩, 예컨대 SoC(System on Chip) 형태로 구현될 수도 있다. 메모리 컨트롤러(200)는 마더보드 상에 구현될 수 있으며, 마이크로프로세서에 포함된 집적 메모리 컨트롤러(Integrated Memory Controller; IMC)로 구현될 수 있다. 또한, 메모리 컨트롤러(200)는 입출력 허브 내에 위치할 수 있고, 메모리 컨트롤러(200)를 포함하는 입출력 허브는 메모리 컨트롤러 허브(Memory Controller Hub; MCH)라 불릴 수 있다.
메모리 컨트롤러(200)는 ECC 데이터를 임시로 저장함으로써 ECC 동작의 수행에 따른 오버헤드를 줄이기 위해 ECC 캐시(220)를 포함할 수 있다. 메모리 컨트롤러(200)는 메모리 장치(420_1~420_k)를 관리하기 위해 ECC 영역 관리부(ECC REGION MNGR, 240)를 포함할 수 있다. ECC 캐시(220) 및 ECC 영역 관리부(240)에 대한 설명은 이하 도면을 참조하여 설명될 것이다.
메모리 컨트롤러(200)는 ECC 동작을 수행하기 위해 ECC 엔진(260)을 포함할 수 있다. ECC 동작은 에러 검출 동작 및 에러 정정 동작을 포함하는 개념일 수 있다. ECC 엔진(260)은 데이터 기록(WRITE) 모드에서 기록 데이터의 ECC(Error Correction Code) 데이터를 생성하는 ECC 인코더(ECC Encoder) 및 데이터 독출 모드에서 에러 정정 동작을 수행하는 ECC 디코더(ECC Decoder)를 포함할 수 있다. ECC(Error Correction Code)는 패리티(Parity), CRC(Cyclical Redundancy Code), 체크섬(Checksum) 및 해밍코드(Hamming Code) 등을 포함하며, 이에 제한되지는 않는다.
BUS2는 데이터 버스를 포함할 수 있고, BUS3은 컨트롤 버스, 커맨드/어드레스 버스 등 각종 버스를 포함할 수 있다. 메모리 컨트롤러(200)는 BUS2 및 BUS3을 통해 메모리 모듈(400)과 커맨드/어드레스 신호(CMD/ADDR), 제어 신호(CTRL), 데이터(DQ) 및 데이터 스트로브 신호(DQS) 등을 송수신 할 수 있다. 메모리 컨트롤러(200)는 메모리 모듈(400)로부터의 데이터(DQ) 독출 및 메모리 모듈(400)로의 데이터(DQ) 기입을 제어할 수 있다. 메모리 컨트롤러(200)는 커맨드/어드레스 신호(CMD/ADDR) 및 제어 신호(CTRL)를 메모리 모듈(400)로 제공하고, 커맨드/어드레스 신호(CMD/ADDR)에 따라 설정된 기입 또는 독출 모드에서 제어 신호(CTRL)를 기초로 메모리 장치들(420_1~420_k) 중 억세스 하려는 메모리 장치와 데이터(DQ) 송수신을 할 수 있도록 제어할 수 있다.
호스트(600)는 메모리 시스템(100)으로 데이터 및 입력정보를 보낼 수 있다. 즉, 호스트(600)는 메모리 시스템(100)에 독출(Read) 요청, 기록(Write) 요청 또는 이레이즈 (Erase) 요청 등 다양한 입력정보를 출력할 수 있다. 호스트(600)는 메모리 컨트롤러(200) 및 CPU(Central Processing Unit) 또는 GPU(Graphic Processing Unit) 등을 포함한 SoC(System on Chip)으로 구현될 수 있다. 입력정보는 명령, 주소, 우선순위 정보 등을 포함할 수 있다 호스트(600)와 메모리 컨트롤러(200)는 BUS1을 통해 각종 데이터 및 입력정보를 보낼 수 있으며, 입력정보의 종류는 위의 예시들에 제한되지는 않는다. 예를 들어, 호스트(600)와 메모리 컨트롤러(200)는 USB(Universal Serial Bus) 프로토콜, MMC(Multimedia Card) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI(Small Computer Small Interface) 프로토콜, ESDI(Enhanced Small Disk Interface) 프로토콜, 그리고 IDE(Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나에 기반하여 데이터를 교환할 수 있다.
호스트(600)는 메모리 컨트롤러(200)에 ECC 활성화 영역을 구분하기 위한 영역 결정 제어 신호(Region Decision, Control Signal; RDCS)를 송신할 수 있다. 또한 호스트(600)는 데이터의 종류에 따라 데이터가 ECC 동작을 필요로 하는 데이터인지 여부를 판단할 수 있고, 이에 기초하여 데이터가 저장될 주소를 할당할 수 있다. 이에 대한 자세한 설명은 이하 도면을 통해 설명될 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 메모리 장치(420)를 나타낸다.
메모리 장치(420)는 복수 개의 메모리 뱅크를 포함할 수 있고, 메모리 뱅크는 메모리 블락들을 포함할 수 있다. 즉, 메모리 장치(420)는 복수 개의 메모리 블락들(BLK_0~BLK_n-1, n은 자연수)을 포함할 수 있다. 각각의 메모리 블락(BLK_0~BLK_n-1)은 복수 개의 메모리 페이지(PAG_0~PAG_k-1, k는 자연수)를 포함할 수 있다. 각각의 메모리 페이지(PAG_0~PAG_k-1)는 하나의 행 어드레스(Row Address)에 의해 접근되는 메모리들을 포함하는 개념일 수 있고, 하나의 워드 라인을 구성하는 메모리들을 포함하는 개념일 수 있다.
도 2을 참조하면, 노말 데이터와 그것의 ECC 데이터는 동일한 메모리 페이지에 저장될 수 있다. 각각의 메모리 페이지(PAG_0~PAG_k-1) 내에서 노말 데이터가 저장되는 영역을 데이터 존(Data Zone)이라 칭할 수 있고, 각각의 페이지(PAG_0~PAG_k-1) 내에서 ECC 데이터가 저장되는 영역을 ECC 존(ECC Zone)이라 칭할 수 있다. 즉, 각각의 메모리 페이지(PAG_0~PAG_k)는 ECC 존(ECC Zone) 및 데이터 존(Data Zone)을 포함할 수 있다. 노말 데이터와 ECC 데이터가 동일한 페이지에 저장되는 메모리 장치는 In-line ECC 메모리 장치라 칭해질 수 있다.
메모리 컨트롤러가 메모리 장치(420)에 데이터를 독출 또는 기록할 때, 데이터가 존재하는 행(Row)을 활성화(Activate)하는 동작을 수행할 필요가 있다. 노말 데이터가 저장되는 데이터 존(Data Zone)과 ECC 데이터가 저장되는 ECC 존(ECC Zone)이 동일한 메모리 페이지 내에 존재함으로써, 메모리 컨트롤러는 한 번의 활성화 동작을 통해 메모리 장치(420)로부터 노말 데이터 및 ECC 데이터를 모두 독출할 수 있다.
한편, 각각의 메모리 페이지(PAG_0~PAG_k-1) 내에서 ECC 존이 차지하는 용량과 데이터 존이 차지하는 용량의 비율은 사용되는 ECC 데이터의 성격에 따라 달라질 수 있다. 64/72 해밍코드(Hamming code)를 ECC로 사용하는 경우, 64bit의 노말 데이터 마다 8bit의 ECC 데이터가 필요하므로, ECC 존이 차지하는 용량과 데이터 존이 차지하는 용량의 비는 1:8이 될 수 있다. 하지만 ECC의 종류 및 ECC 존이 차지하는 용량과 데이터 존이 차지하는 용량의 비가 이에 제한되는 것은 아니다. 예를 들어, 1-bit 에러 검출의 경우, 128bit의 노말 데이터 마다 8bit의 ECC 데이터가 필요하므로, ECC 존이 차지하는 용량과 데이터 존이 차지하는 용량의 비는 1:16이 될 수도 있다.
도 3은 본 개시의 예시적 실시예에 따른 메모리 페이지를 나타낸다.
도 2를 참조해 설명되었듯이, 메모리 장치는 복수의 메모리 페이지들을 포함할 수 있고, In-line ECC 메모리 장치에서 각각의 메모리 페이지는 ECC 데이터가 저장되는 ECC 존(ECC Zone) 및 노말 데이터가 저장되는 데이터 존(Data Zone)을 포함할 수 있다. 도 3을 참조하면, 메모리 페이지는 소모되는 영역인 데드 존(Dead Zone)을 더 포함할 수 있다. 즉, 하나의 메모리 페이지는 데드 존(Dead Zone), ECC 존(ECC Zone) 및 데이터 존(Data Zone)을 포함할 수 있다. 데드 존(Dead Zone)은 ECC 존이 차지하는 용량과 데이터 존이 차지하는 용량을 일정 비율로 맞추는 과정에서 불가피하게 발생하는 소모 영역(Wasted zone)일 수 있다.
일 실시예로서, 하나의 메모리 페이지가 2KB(2048Byte)의 용량을 갖고, ECC는 64/72 해밍코드인 경우를 가정하여 메모리 페이지의 구성을 설명할 수 있다. ECC가 64/72 해밍코드인 경우, 64bit의 노말 데이터 마다 8bit의 ECC 데이터가 필요하기 때문에 2KB를 64:8로 분할하여 데이터 존 및 ECC 존을 구성할 수 있다. 따라서 데이터 존이 차지하는 용량은 1792Byte일 수 있고, ECC 존이 차지하는 용량은 224Byte일 수 있다. 이 때, 불가피하게 소모되는 영역이 발생할 수 있고, 데드 존(Dead Zone)이 차지하는 용량은 32Byte일 수 있다. 결과적으로, ECC 데이터를 저장하기 위해 2KB 중 ECC 존과 데드 존이 차지하는 용량을 합한 256Byte를 소모할 수 있다.
다른 일 실시예로서, 하나의 메모리 페이지가 1KB(1024Byte)의 용량을 갖고, ECC는 64/72 해밍코드인 경우를 가정하여 메모리 페이지의 구성을 설명할 수 있다. ECC가 64/72 해밍코드인 경우, 64bit의 노말 데이터 마다 8bit의 ECC 데이터가 필요하기 때문에 1KB를 64:8로 분할하여 데이터 존 및 ECC 존을 구성할 수 있다. 따라서 데이터 존이 차지하는 용량은 896Byte일 수 있고, ECC 존이 차지하는 용량은 112Byte일 수 있다. 이 때, 불가피하게 소모되는 영역이 발생할 수 있고, 데드 존(Dead Zone)이 차지하는 용량은 16Byte일 수 있다. 결과적으로, ECC 데이터를 저장하기 위해 1KB 중 ECC 존과 데드 존이 차지하는 용량을 합한 128Byte를 소모할 수 있다.
하지만 본 발명이 위에 개시된 두 실시예에 한정되는 것은 아니며, 메모리 페이지 내에서 사용하는 ECC의 종류에 따라 위와 다양한 방식에 의해 메모리 페이지의 구성이 달라질 수 있다.
도 4a 및 도 4b는 본 개시의 예시적 실시예에 따른 메모리 컨트롤러(200a, 200b) 및 메모리 장치(420a, 420b)를 나타낸다.
메모리 컨트롤러(200a, 200b)는 복수의 메모리 페이지들을 포함하는 메모리 장치(420a, 420b)를 제어할 수 있다. 메모리 컨트롤러(200a, 200b)는 복수 개의 메모리 장치(420a, 420b)를 제어할 수 있지만, 설명의 편의상 메모리 컨트롤러(200a, 200b)가 하나의 메모리 장치(420a, 420b)를 제어하는 동작에 대해 설명한다.
메모리 컨트롤러(200a, 200b)는 ECC 영역 관리부(ECC REGION MNGR, 240a, 240b)를 포함할 수 있다. ECC 영역 관리부(240a, 240b)는 메모리 장치(420a, 420b)의 복수의 메모리 페이지들을 ECC 활성화 영역(ECC ENABLE REGION) 및 ECC 비활성화 영역(ECC DISABLE REGION)으로 구분하여 관리할 수 있다. ECC 활성화 영역에 포함된 메모리 페이지는 ECC 메모리 페이지라 칭해질 수 있다. 도 2 및 도 3을 참조하여 설명되었듯이, ECC 메모리 페이지에는 노말 데이터와 ECC 데이터가 모두 저장될 수 있다. 즉, ECC 메모리 페이지는 노말 데이터가 저장되는 데이터 존(Data Zone), ECC 데이터가 저장되는 ECC 존(ECC Zone) 및 소모되는 영역인 데드 존(Dead Zone)을 포함할 수 있다. 한편, ECC 비활성화 영역에 포함된 메모리 페이지는 ECC 데이터를 저장할 필요가 없는 영역에 해당하기 때문에, 오로지 노말 데이터 만을 저장할 수 있다.
ECC 영역 관리부(240a, 240b)는 메모리 컨트롤러(200a,a 200b)의 외부, 예를 들어 호스트로부터 상기 ECC 활성화 영역을 구분하기 위한 영역 결정 제어 신호(Region Decision Control Signal; RDCS)를 수신할 수 있다. 영역 결정 제어 신호(RDCS)는 메모리 장치(420a, 420b)에 포함된 메모리 영역 중 어느 메모리 영역들을 ECC 활성화 영역으로 지정할 것인지를 나타내는 정보를 포함할 수 있다. ECC 영역 관리부(240a, 240b)는 영역 결정 제어 신호(RDCS)에 기초하여, 메모리 장치(420a, 420b)를 ECC 활성화 영역과 ECC 비활성화 영역으로 구분하여 관리할 수 있고, 이를 위해 메모리 장치(420a, 420b) 내의 ECC 활성화 영역에 대한 정보를 영역 데이터(REGION DATA)로서 저장할 수 있다.
도 4a를 참조하면, 영역 데이터(REGION DATA)는 ECC 활성화 영역의 주소 정보를 포함할 수 있다. 예를 들어, 영역 데이터는 ECC 활성화 영역이 시작하는 메모리 페이지의 행 주소(Row Address) 및 ECC 활성화 영역이 끝나는 메모리 페이지의 행 주소(Row Address)를 포함할 수 있다. ECC 영역 관리부(240a)가 m개(m은 자연수)의 ECC 활성화 영역을 지정한 경우를 가정하여 설명한다. ECC 영역 관리부(240a)는 제1 ECC 활성화 영역(432a)이 시작하는 메모리 페이지의 행 주소인 ECC_START_0 및 제1 ECC 활성화 영역(432a)이 끝나는 메모리 페이지의 행 주소인 ECC_END_0을 저장할 수 있다. 또한, ECC 영역 관리부(240a)는 제m ECC 활성화 영역(430a)이 시작하는 메모리 페이지의 행 주소인 ECC_START_m-1 및 제m ECC 활성화 영역(430a)이 끝나는 메모리 페이지의 행 주소인 ECC_END_m-1을 저장할 수 있다. ECC 영역 관리부(240a)는 저장된 ECC 활성화 영역들의 행 주소 정보를 기초로 메모리 장치(420a)의 ECC 활성화 영역과 ECC 비활성화 영역을 구분할 수 있다.
영역 데이터가 ECC 활성화 영역에 대한 주소 정보를 저장하는 방식이 이에 제한되는 것은 아니다. 다른 예를 들어, 영역 데이터는 ECC 활성화 영역이 시작하는 메모리 페이지의 행 주소 및 ECC 활성화 영역의 사이즈를 저장할 수 있다. ECC 영역 관리부(420a)는 제1 ECC 활성화 영역(432a)이 시작하는 메모리 페이지의 행 주소인 ECC_START_0 및 제1 ECC 활성화 영역(432a)의 사이즈인 ECC_SIZE_0를 저장할 수 있다. 또한, ECC 영역 관리부(240a)는 제m ECC 활성화 영역(430a)이 시작하는 메모리 페이지의 행 주소인 ECC_START_m-1 및 제m ECC 활성화 영역(430a)의 사이즈인 ECC_SIZE_m-1을 저장할 수 있다. 또한 다른 예로, 영역 데이터는 ECC 활성화 영역이 끝나는 메모리 페이지의 행 주소 및 ECC 활성화 영역의 사이즈를 저장할 수도 있다.
도 4b를 참조하면, ECC 영역 관리부(240b)는 메모리 장치(420b)의 복수의 메모리 페이지들을 ECC 활성화 영역과 ECC 비활성화 영역으로 구분하여 관리하기 위해, 메모리 장치(420b)를 N개의 메모리 영역들(MEMORY REGION_1~MEMORY REGION_N)로 나누어 관리할 수 있다(단, N은 자연수). 각각의 메모리 영역은 복수 개의 메모리 페이지를 포함할 수 있다. 영역 데이터(REGION DATA)는 각각의 메모리 영역이 ECC 활성화 영역인지, ECC 비활성화 영역인지에 대한 정보를 포함할 수 있다.
메모리 영역들 중 제1 메모리 영역, 제2 메모리 영역,…, 제K 메모리 영역,…, 제N 메모리 영역이 ECC 활성화 영역에 해당하는 것을 가정하여 영역 데이터에 대해 설명한다. 영역 데이터는 메모리 영역들 중 ECC 활성화 영역에 해당하는 메모리 영역들을 나타내는 표(Table)를 포함할 수 있다. 도면에 도시되어 있지는 않지만, ECC 영역 관리부(240b)는 표와 함께 각각의 메모리 영역에 대한 주소 정보를 같이 저장할 수 있다.
영역 데이터가 ECC 활성화 영역에 대한 정보를 저장하는 방식이 이에 제한되는 것은 아니다. 다른 예를 들어, 영역 데이터는 메모리 영역들 중 ECC 비활성화 영역에 해당하는 메모리 영역들을 나타내는 표를 포함할 수도 있다.
ECC 활성화 영역에 포함된 ECC 메모리 페이지의 경우, 용량의 일부가 ECC 존 및 데드 존으로 사용되기 때문에 용량의 낭비가 있을 수 있다. 도 4a 및 4b를 참조하여 설명되었듯이, ECC 동작을 필요로 하지 않는 데이터가 저장되는 메모리 장치(420a, 420b)의 일부 영역을 ECC 비활성화 영역으로 지정함으로써, 용량 낭비에 따른 비용을 절감할 수 있다.
도 5는 본 개시의 예시적 실시예에 따른 메모리 모듈(400)을 나타낸다.
메모리 모듈(400)은 복수의 메모리 장치들을 포함할 수 있고, 복수의 메모리 장치들은 복수의 DRAM 칩들(420_1~420_n, n은 자연수)일 수 있다. 메모리 모듈(400)은 ECC 데이터 저장을 위한 메모리 장치를 별도로 두지 않고, 동일한 메모리 장치에 노말 데이터와 ECC 데이터를 저장하는 In-band ECC 모듈일 수 있다. 각각의 DRAM 칩(420_1~420_n)은 노말 데이터와 ECC 데이터를 모두 저장할 수 있다. 또한 각각의 DRAM 칩(420_1~420_n)은 노말 데이터와 ECC 데이터가 하나의 메모리 페이지에 저장되는 In-line ECC 메모리 장치일 수 있다. 각각의 DRAM 칩(420_1~420_n)에 포함된 메모리 페이지는 데이터 존과 ECC 존을 포함할 수 있으며, 데드 존을 더 포함할 수 있다.
도 4를 참조하여 설명되었듯이, 각각의 DRAM 칩(420_1~420_n)은 메모리 컨트롤러에 의해 복수 개의 메모리 영역으로 구분될 수 있고, 메모리 컨트롤러의 ECC 영역 관리부는 각각의 DRAM 칩(420_1~420_n)의 메모리 영역들을 ECC 활성화 영역과 ECC 비활성화 영역으로 구분하여 관리할 수 있다. 다시 도 5를 참조하면, 메모리 모듈(400)에 포함된 각각의 DRAM 칩(420_1~420_n)은 칩 단위로 ECC 활성화 영역과 ECC 비활성화 영역으로 분류될 수 있다. 예를 들어, DRAM Chip_1(420_1) 및 DRAM Chip_n(420_n)은 전체가 ECC 비활성화 영역으로 분류될 수 있고, DRAM Chip_1(420_1) 및 DRAM Chip_n(420_n)에는 ECC 동작을 필요로 하지 않는 데이터가 저장될 수 있다. 따라서, DRAM Chip_1(420_1) 및 DRAM Chip_n(420_n)에는 노말 데이터 만이 저장될 수 있다. 이와 같이 메모리 장치 전체가 ECC 활성화 영역으로 분류된 메모리 장치는 full-ECC 메모리 장치라 칭해질 수 있다. 또한 예를 들어, DRAM Chip_2(420_2) 및 DRAM Chip_n-1(420_n-1)은 전체가 ECC 활성화 영역으로 구분될 수 있고, DRAM Chip_2(420_2) 및 DRAM Chip_n-1(420_n-1)에는 ECC 동작을 필요로 하는 데이터가 저장될 수 있다. 따라서, DRAM Chip_2(420_2) 및 DRAM Chip_n-1(420_n-1)에는 노말 데이터 및 ECC 데이터가 저장될 수 있다. DRAM Chip_2(420_2) 및 DRAM Chip_n-1(420_n-1)과 같이 전체가 ECC 활성화 영역으로 설정된 메모리 칩 내에 포함된 메모리 페이지는 데이터 존 및 ECC 존을 포함할 수 있고, 데드 존을 더 포함할 수 있다. 이와 같이 메모리 장치 전체가 ECC 비활성화 영역으로 분류된 메모리 장치는 full-non ECC 메모리 장치라 칭해질 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러(200)를 나타낸다.
메모리 컨트롤러(200)는 ECC 영역 관리부(ECC REGION MNGR; 240), ECC 결정부(ECC DECISION UNIT; 250) 및 ECC 엔진(260)을 포함할 수 있다.
ECC 영역 관리부(240)는 메모리 장치의 복수의 메모리 페이지들을 ECC 활성화 영역(ECC ENABLE REGION) 및 ECC 비활성화 영역(ECC DISABLE REGION)으로 구분하여 관리할 수 있다. ECC 영역 관리부(240)는 메모리 페이지를 ECC 활성화 영역과 ECC 비활성화 영역으로 구분하기 위해 영역 데이터(RGN_DAT)를 저장할 수 있다. 또한, ECC 영역 관리부(240)는 영역 데이터(RGN_DAT)를 ECC 결정부(250)에 전달할 수 있다. ECC 영역 관리부(240) 및 영역 데이터(RGN_DAT)에 대한 보다 구체적인 설명은 도 4a 및 도 4b를 참조하여 설명될 수 있을 것이다.
ECC 결정부(250)는 메모리 컨트롤러(200)에 입력되는 데이터가 ECC 동작을 필요로 하는지 여부를 결정할 수 있다. ECC 결정부(250)는 ECC 영역 관리부(240)로부터 영역 데이터(RGN_DAT)를 수신할 수 있고, 영역 데이터(RGN_DAT)를 기초로 입력되는 데이터의 성격을 결정할 수 있다.
데이터 기록(Write) 모드에서, 메모리 컨트롤러(200)는 호스트로부터 기록 데이터(WDATA) 및 기록 데이터가 저장될 주소(ADDR)를 수신할 수 있다. ECC 결정부(250)는 기록 데이터(WDATA) 및 주소(ADDR)를 수신할 수 있다. ECC 결정부(250)는 기록 데이터의 주소(ADDR)와 ECC 영역 관리부(240)로부터 수신한 영역 데이터(RGN_DAT)를 비교하여 기록 데이터(WDATA)의 ECC 동작 수행 여부를 결정할 수 있다. 비교한 결과, 기록 데이터(WDATA)의 주소(ADDR)가 메모리 장치의 ECC 활성화 영역에 속한다면, ECC 결정부(250)는 기록 데이터(WDATA)가 ECC 동작을 필요로 하는 데이터라고 결정할 수 있다. 반대로, 기록 데이터의 주소(ADDR)가 메모리 장치의 ECC 비활성화 영역에 속한다면, ECC 결정부(250)는 기록 데이터(WDATA)가 ECC 동작을 필요로 하지 않는 데이터라고 결정할 수 있다.
데이터 독출(READ) 모드에서, 메모리 컨트롤러(200)는 호스트로부터 독출 데이터가 저장된 주소(ADDR)를 수신할 수 있고, 메모리 장치로부터 독출 데이터(RDATA)를 수신할 수 있다. ECC 결정부(250)는 독출 데이터의 주소(ADDR)와 ECC 영역 관리부(240)로부터 수신한 영역 데이터(RGN_DAT)를 비교하여 독출 데이터(RDATA)의 ECC 동작 수행 여부를 결정할 수 있다. 비교한 결과, 독출 데이터(RDATA)의 주소(ADDR)가 메모리 장치의 ECC 활성화 영역에 속한다면, ECC 결정부(250)는 독출 데이터(RDATA)가 ECC 동작을 필요로 하는 데이터라고 결정할 수 있다. 반대로, 독출 데이터의 주소(ADDR)가 메모리 장치의 ECC 비활성화 영역에 속한다면, ECC 결정부(250)는 독출 데이터(RDATA)가 ECC 동작을 필요로 하지 않는 데이터라고 결정할 수 있다. 독출 데이터가 ECC 동작을 필요로 하는 데이터인 경우, ECC 결정부(250)는 독출 데이터와 함께 ECC 데이터(RECC)를 수신하여 ECC 엔진(260)으로 송신할 수 있다.
ECC 엔진(260)은 데이터 기록 모드에서 ECC 인코딩을 수행할 수 있으며, 데이터 독출 모드에서 ECC 디코딩을 수행할 수 있다. 이를 위해, ECC 엔진(260)은 ECC 인코더(ECC ENCODER; 264) 및 ECC 디코더(ECC DECODER; 262)를 포함할 수 있다.
ECC 인코더(264)는 ECC 결정부(250)로부터 ECC 동작을 필요로 하는 기록 데이터(WDATA)를 수신할 수 있다. ECC 인코더(264)는 기록 데이터(WDATA)에 대해 ECC 인코딩을 수행할 수 있다. ECC 인코더(264)는 64bit의 기록 데이터(WDATA)의 에러 정정을 위한 ECC 데이터(WECC[0:8])를 생성할 수 있다. 예를 들어, ECC 인코더(264)는 64bit 단위로 입력되는 기록 데이터(WDATA[0:64])에 대해 8bit의 해밍코드(Hamming Code)를 생성할 수 있다. ECC 인코더(264)는 기록 데이터(WDATA) 및 ECC 데이터(WECC[0:8])를 메모리 장치로 송신할 수 있다. 실시예가 64/72 해밍코드를 이용하는 것으로 설명되었지만, 이에 제한되지 않으며, 패리티(Parity), CRC(Cyclical Redundancy Code) 등의 ECC가 이용될 수 있다.
ECC 디코더(262)는 ECC 결정부(250)로부터 ECC 동작을 필요로 하는 독출 데이터(RDATA) 및 독출 데이터의 ECC 데이터(RECC)를 수신할 수 있다. ECC 디코더(262)는 독출 데이터(RDATA)에 대해 ECC 디코딩을 수행할 수 있다. 즉, ECC 디코더(262)는 에러 정정 기능을 수행할 수 있다. 예를 들어, ECC 디코더(262)는 64bit 단위로 입력되는 독출 데이터(RDATA[0:64])와 8bit의 해밍코드(RECC[0:8])를 이용하여 데이터 정정 기능을 수행할 수 있다. ECC 디코더(262)는 정정된 독출 데이터(RDATA_C)를 메모리 장치로 송신할 수 있다. 실시예가 64/72 해밍코드를 이용하는 것으로 설명되었지만, 이에 제한되지 않으며, 패리티(Parity), CRC(Cyclical Redundancy Code) 등의 ECC가 이용될 수 있다.
상기에서 설명되었듯이, 메모리 컨트롤러(200)는 ECC 영역 관리부(240) 및 ECC 결정부(250)를 포함함으로써 입력되는 기록 데이터(WDATA) 및 독출 데이터(RDATA)의 성격을 결정할 수 있고, 입력되는 데이터가 ECC 동작을 필요로 하는 경우에만 ECC 동작을 수행함으로써 ECC에 따른 오버헤드를 감소시킬 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러(200)를 나타낸다.
데이터 기록(Write) 모드에서, 메모리 컨트롤러(200)는 기록 데이터(WDATA) 및 기록 데이터(WDATA)가 저장될 주소(ADDR)를 메모리 컨트롤러(200)의 외부, 예를 들어 호스트로부터 수신할 수 있다. 메모리 컨트롤러(200)에 포함된 ECC 결정부(250)는 기록 데이터(WDATA) 및 주소(ADDR)를 수신할 수 있다. ECC 결정부(250)는 ECC 영역 관리부로부터 영역 데이터(RGN_DAT)를 수신할 수 있다. ECC 결정부(250)는 영역 데이터(RGN_DAT)와 주소(ADDR)를 비교하여 기록 데이터(WDATA)의 ECC 동작 수행 여부를 결정할 수 있다.
기록 데이터(WDATA)가 저장될 주소(ADDR)와 영역 데이터(RGN_DAT)를 비교한결과, 주소(ADDR)가 ECC 비활성화 영역에 속하는 경우, 기록 데이터(WDATA)는 ①의 경로를 통해 메모리 장치에 입력될 수 있다. 즉, 주소(ADDR)가 ECC 비활성화 영역에 속하는 경우, ECC 결정부(250)는 기록 데이터(WDATA)가 ECC 동작을 필요로 하지 않는 데이터라고 결정할 수 있고, 기록 데이터(WDATA)에 ECC 인코딩을 수행하지 않고 메모리 장치로 송신할 수 있다.
기록 데이터(WDATA)가 저장될 주소(ADDR)와 영역 데이터(RGN_DAT)를 비교한 결과, 주소(ADDR)가 ECC 활성화 영역에 속하는 경우, 기록 데이터(WDATA)는 ②의 경로를 통해 메모리 장치에 입력될 수 있다. 즉, 주소(ADDR)가 ECC 활성화 영역에 속하는 경우, ECC 결정부(250)는 기록 데이터(WDATA)가 ECC 동작을 필요로 하는 데이터라고 결정할 수 있고, 기록 데이터(WDATA)를 ECC 엔진(260)의 ECC 인코더(264)로 송신할 수 있다. ECC 인코더(264)는 기록 데이터(WDATA)에 대해 ECC 인코딩을 수행할 수 있다. 예를 들어, ECC 인코더(264)는 64bit 단위로 입력되는 기록 데이터(WDATA[0:64])에 대해 8bit의 해밍코드(Hamming Code)를 생성할 수 있다. 이 경우, ECC 인코더(264)는 64bit의 기록 데이터(WDATA)의 에러 정정을 위한 ECC 데이터(WECC[0:8])를 생성할 수 있다. ECC 인코더(264)는 기록 데이터(WDATA) 및 ECC 데이터(WECC[0:8])를 메모리 장치로 송신할 수 있다. 실시예가 64/72 해밍코드를 이용하는 것으로 설명되었지만, 이에 제한되지 않으며, 패리티(Parity), CRC(Cyclical Redundancy Code) 등의 ECC가 이용될 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 메모리 컨트롤러(200)를 나타낸다.
데이터 독출 모드에서, 메모리 컨트롤러(200)는 호스트로부터 독출 데이터(RDATA)가 저장된 주소(ADDR)를 수신할 수 있고, 메모리 장치로부터 독출 데이터(RDATA)를 수신할 수 있다. 메모리 컨트롤러(200)에 포함된 ECC 결정부(250)는 독출 데이터(RDATA) 및 주소(ADDR)를 수신할 수 있다. ECC 결정부(250)는 ECC 영역 관리부로부터 영역 데이터(RGN_DAT)를 수신할 수 있다. ECC 결정부(250)는 영역 데이터(RGN_DAT)와 주소(ADDR)를 비교하여 독출 데이터(RDATA)의 ECC 동작 수행 여부를 결정할 수 있다.
독출 데이터(RDATA)가 저장될 주소(ADDR)와 영역 데이터(RGN_DAT)를 비교한결과, 주소(ADDR)가 ECC 비활성화 영역에 속하는 경우, 독출 데이터(RDATA)는 ①의 경로를 통해 호스트에 입력될 수 있다. 즉, 주소(ADDR)가 ECC 비활성화 영역에 속하는 경우, ECC 결정부(250)는 독출 데이터(RDATA)가 ECC 동작을 필요로 하지 않는 데이터라고 결정할 수 있고, 독출 데이터(RDATA)에 ECC 디코딩을 수행하지 않고 호스트로 송신할 수 있다.
독출 데이터(RDATA)가 저장된 주소(ADDR)와 영역 데이터(RGN_DAT)를 비교한 결과, 주소(ADDR)가 ECC 활성화 영역에 속하는 경우, 독출 데이터(RDATA)는 ②의 경로를 통해 호스트에 입력될 수 있다. 즉, 주소(ADDR)가 ECC 활성화 영역에 속하는 경우, ECC 결정부(250)는 독출 데이터(RDATA)가 ECC 동작을 필요로 하는 데이터라고 결정할 수 있고, 독출 데이터(RDATA)를 ECC 엔진(260)의 ECC 디코더(262)로 송신할 수 있다. ECC 디코더(262)는 수신한 독출 데이터(RDATA)에 대해 ECC 디코딩을 수행할 수 있다. 즉, ECC 디코더(262)는 에러 정정 기능을 수행할 수 있다. 예를 들어, ECC 디코더(262)는 64bit 단위로 입력되는 독출 데이터(RDATA[0:64])와 8bit의 해밍코드(RECC[0:8])를 이용하여 데이터 정정 기능을 수행할 수 있다. ECC 디코더(262)는 정정된 독출 데이터(RDATA_C)를 호스트로 송신할 수 있다. 실시예가 64/72 해밍코드를 이용하는 것으로 설명되었지만, 이에 제한되지 않으며, 패리티(Parity), CRC(Cyclical Redundancy Code) 등의 ECC가 이용될 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 메모리 컨트롤러의 동작 순서도를 나타낸다.
메모리 컨트롤러는 데이터 주소(ADDR)를 호스트로부터 수신할 수 있으며, 데이터 기록(Write) 모드에서 호스트로부터, 데이터 독출(READ) 모드에서 메모리 장치로부터 데이터(DATA)를 수신할 수 있다. 즉, 메모리 컨트롤러는 데이터(DATA)와 주소(ADDR)를 외부로부터 입력 받을 수 있다(S110). 도 6을 참조하면, 입력된 데이터(DATA)와 주소(ADDR)는 ECC 결정부(250)로 전달될 수 있고, ECC 결정부(250)는 주소(ADDR)와 ECC 영역 관리부(240)로부터 수신한 영역 데이터(RGN_DAT)를 비교할 수 있다(S120). ECC 결정부는 데이터의 저장 위치를 나타내는 주소(ADDR)가 ECC 활성화 영역에 포함되는지 여부를 판단할 수 있다(S130). 만약 주소(ADDR)가 ECC 활성화 영역에 포함되어있지 않다면, ECC 결정부는 데이터가 ECC 동작을 필요로 하지 않는 데이터라고 결정할 수 있고, 데이터를 ECC 엔진에 전달하지 않을 수 있다. 만약 주소(ADDR)가 ECC 활성화 영역에 포함되어 있다면, ECC 결정부는 데이터가 ECC 동작을 필요로 하는 데이터라고 결정할 수 있고, 데이터를 ECC 엔진에 전달할 수 있다. ECC 엔진은 전달받은 데이터에 대해 ECC 동작(ECC 인코딩 또는 ECC 디코딩)을 수행할 수 있다(S140).
위와 같이 메모리 컨트롤러는 ECC 활성화 영역에 저장된 또는 저장될 데이터에 대해서만 ECC 동작을 수행하기 때문에, ECC에 의해 발생하는 오버헤드를 줄일 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 ECC 캐시(220)를 나타낸다.
메모리 컨트롤러는 ECC 데이터를 임시로 저장하기 위해 ECC 캐시(220)를 포함할수 있고, ECC 캐시(220)는 히트/미스 감지부(HIT/MISS DETECTION CAM, 222) 및 ECC 주소(ECC ADDR)와 ECC 데이터를 저장하기 위한 복수의 메모리들(224_1~224_m, m은 자연수)을 포함할 수 있다. ECC 캐시(220) 동작의 설명을 위해, 이에 앞서 메모리 장치로부터 독출되는 방식에 대해 설명한다.
메모리 컨트롤러는 메모리 장치로부터 버스트 동작(Burst Operation)을 통해 데이터를 송수신할 수 있다. 버스트 동작은 초기 어드레스로부터 어드레스를 순차적으로 감소 혹은 증가함으로써 다량의 데이터를 동시에 읽거나 쓰는 동작을 나타낼 수 있다. 버스트 동작의 기본 단위를 버스트 렝스(Burst Length; BL)라 할 수 있다. 도 10을 참조하면, 버스트 렝스는 16일 수 있다. 하나의 버스트 렝스에는 16bit, 즉 2byte의 데이터가 포함될 수 있다. 이와 같은 버스트 동작을 수행하는 경우, 한 번의 독출 동작(Read Operation)을 통해 메모리 장치로부터 32byte의 데이터가 동시에 독출될 수 있다. 이하에서 버스트 렝스가 16인 경우를 예시로 하여 설명될 것이지만, 버스트 렝스의 수치는 이에 제한되지 않는다. 예를 들어, 버스트 렝스는 2, 4, 8, 32일 수 있고, 버스트 렝스가 32인 경우에는 한 번의 독출 동작을 통해 메모리 장치로부터 64byte의 데이터가 동시에 독출될 수 있다.
버스트 렝스가 16인 경우, 한 번의 독출 동작을 통해 메모리 장치로부터 동시에 32byte의 데이터가 독출될 수 있다. 메모리 장치 중 ECC 활성화 영역에 해당하는 메모리 페이지로부터 32byte의 노말 데이터 즉, 실제 데이터(ACTUAL DATA)가 독출되는 경우, ECC 디코딩을 수행하기 위해 이어서 ECC 데이터(ECC DATA)가 독출될 필요가 있을 수 있다. 32byte의 실제 데이터(ACTUAL DATA)에 ECC 디코딩을 수행하기 위해 필요한 ECC 데이터는 4byte일 수 있다. 하지만, 한 번의 독출 동작을 통해 동시에 32byte의 데이터가 수신되기 때문에 나머지 28byte에는 다음 어드레스에 존재하는 실제 데이터의 ECC 데이터가 동시에 독출될 수 있다. 따라서, 다음 어드레스에 존재하는 ECC 데이터를 메모리 컨트롤러에 저장할 수 있다면, 메모리 컨트롤러는 다음 어드레스에 해당하는 실제 데이터(ACTUAL DATA)를 독출할 때에는 별도의 ECC 데이터를 데이터 장치로부터 독출하지 않아도 될 수 있다.
따라서 ECC 캐시(220)는 독출된 ECC 데이터를 ECC 어드레스(ECC ADDR)와 함께 복수의 메모리들(224_1~224_m)에 저장할 수 있다. ECC 캐시(220)의 히트/미스 감지부(222)는 메모리 컨트롤러의 데이터 독출 명령에 따라, 독출되는 데이터의 어드레스와 ECC 캐시(220)에 저장된 어드레스가 히트가 일어나는지 감지할 수 있다. 독출되는 데이터의 ECC 데이터가 ECC 캐시(220)의 메모리(224_1~224_m)에 저장된 경우, 히트가 발생하게 되고, 이 때 메모리 컨트롤러는 ECC 데이터를 별도로 독출하지 않고, ECC 캐시(220)에 저장된 ECC 데이터를 이용해 ECC 디코딩을 수행할 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 ECC 활성화 영역에 포함된 메모리 페이지(PAG_a)를 나타낸다.
ECC 활성화 영역에 포함된 메모리 페이지(PAG_a)는 ECC 존(ECC Zone) 및 데이터 존(Data Zone)을 포함할 수 있으며, 데드 존(Dead Zone)을 더 포함할 수 있다. 데이터 존에 저장된 노말 데이터는 32byte 단위의 메모리 섹터(R0, R1, R2, R3…)로 구분될 수 있다. 64/72 해밍코드를 이용한 ECC의 경우, 32byte의 노말 데이터의 ECC 데이터는 4byte일 수 있다. 따라서 ECC 존에 저장된 ECC 데이터는 4byte 단위의 ECC 메모리 섹터(E0, E1, E2, E3…)로 구분될 수 있다. 제1 메모리 섹터(R0)에 포함된 노말 데이터의 ECC 데이터는 제1 ECC 메모리 섹터(E0)에, 제2 메모리 섹터(R1)에 포함된 노말 데이터의 ECC 데이터는 제2 ECC 메모리 섹터(E1)에, 제3 메모리 섹터(R2)에 포함된 노말 데이터의 ECC 데이터는 제3 ECC 메모리 섹터(E2)에, 제4 메모리 섹터(R3)에 포함된 노말 데이터의 ECC 데이터는 제4 ECC 메모리 섹터(E3)에 저장될 수 있다.
도 12는 도11의 메모리 페이지로부터 데이터를 독출하는 시간 흐름도를 나타낸다.
도 11 및 도 12를 참조하면, R0 독출 명령(READ R0)에 따라, 메모리 컨트롤러는 R0가 포함된 메모리 페이지(PAG_a)를 활성화하고, 메모리 페이지(PAG_a)로부터 R0 메모리 섹터에 포함된 노말 데이터(R0 DATA)를 독출할 수 있다. 이 때, R0가 포함된 메모리 페이지(PAG_a)는 ECC 활성화 영역에 포함된 메모리 페이지이기 때문에, 메모리 컨트롤러는 메모리 페이지(PAG_a)로부터 E0 ECC 메모리 섹터에 포함된 ECC 데이터를 독출할 수 있다. 버스트 렝스가 16인 경우, 메모리 컨트롤러는 메모리 장치로부터 동시에 32byte의 데이터를 독출하게 되는데, E0 ECC 메모리 섹터에 포함된 데이터는 4byte이기 때문에, 이웃한 어드레스의 E1~E7 ECC 메모리 섹터에 포함된 ECC 데이터를 동시에 같이 독출할 수 있다. 독출된 ECC 데이터들은 어드레스 정보와 함께 ECC 캐시(220)에 저장될 수 있다.
이후 메모리 컨트롤러는 R1 독출 명령(READ R1)에 따라, 메모리 페이지(PAG_a)로부터 R1 메모리 섹터에 포함된 노말 데이터(R1 DATA)를 독출할 수 있다. 이 때, ECC 캐시(220)의 히트/미스 감지부(222)는 R1의 어드레스와 내부에 저장된 어드레스를 비교하여 저장된 E1의 어드레스와 히트가 발생함을 감지할 수 있다. 이 경우 발생하는 히트를 ECC 캐시 히트(ECC Cache hit)라 칭할 수 있다. ECC 캐시 히트가 발생하는 경우 그 ECC 데이터가 ECC 캐시(220)에 저장되어 있기 때문에, 메모리 컨트롤러는 E1 ECC 메모리 섹터에 포함된 ECC 데이터를 메모리 장치로부터 독출하지 않을 수 있다.
마찬가지로, 메모리 컨트롤러는 R2 독출 명령(READ R2)에 따라, 메모리 페이지(PAG_a)로부터 R2 메모리 섹터에 포함된 노말 데이터(R2 DATA)를 독출할 수 있다. 이 때, E2에 포함된 ECC 데이터가 ECC 캐시(220)에 저장되어 있으므로, 히트/미스 감지부(222)는 ECC 캐시 히트를 감지할 수 있다. 따라서, 메모리 컨트롤러는 E2 ECC 메모리 섹터에 포함된 ECC 데이터를 메모리 장치로부터 독출하지 않을 수 있다.
도 13은 본 개시의 예시적 실시예에 따른 ECC캐시의 동작 순서도를 나타낸다.
가장 처음, 메모리 컨트롤러에 데이터 독출 명령이 들어올 수 있다(S210). 이 때, 메모리 컨트롤러에 포함된 ECC 캐시는 자신이 저장하고 있는 ECC 데이터가 저장된 ECC 어드레스(ECC ADDR)와 독출되는 데이터의 어드레스를 비교하여 캐시 히트가 발생하는지 판단할 수 있다. 독출하려는 데이터의 ECC 데이터가 ECC 캐시에 이미 존재하는 경우, ECC 캐시 히트(ECC CACHE HIT)가 발생한다고 칭할 수 있다. 즉, ECC 캐시는 ECC 캐시 히트가 발생하는지 판단할 수 있다(S220). 만약 ECC 캐시 히트가 발생했다면, 메모리 장치로부터 독출하려는 데이터의 ECC 데이터가 ECC 캐시에 저장되어 있는 것이기 때문에, 메모리 장치로부터 ECC 데이터를 독출하지 않을 수 있다. 만약 ECC 캐시 히트가 발생하지 않았다면(ECC 캐시 미스라 칭할 수 있다.), 메모리 컨트롤러는 메모리 장치로부터 ECC 데이터를 독출할 수 있다(S230).
메모리 컨트롤러는 ECC 캐시 히트가 발생하지 않는 경우에만, 메모리 장치로부터 ECC 데이터를 독출하기 때문에, ECC에 의해 발생하는 오버헤드를 줄일 수 있다.
도 14는 본 개시의 예시적 실시예에 따른 ECC 캐시(220)를 나타낸다.
ECC 캐시(220)는 히트/미스 감지부(222) 및 어드레스 정보와 ECC 데이터를 저장하는 메모리(223_1~223_k-1, k는 자연수)를 포함할 수 있다. ECC 캐시(220)는 ECC 데이터를 저장할 때 메모리 장치의 뱅크마다 다른 메모리에 저장할 수 있다. 예를 들어, 제1 메모리 뱅크(BANK 0)에 속하는 메모리 페이지에 저장된 ECC 데이터를 제1 메모리(223_1)에 저장할 수 있고, 제k 메모리 뱅크(BANK k-1)에 속하는 메모리 페이지에 저장된 ECC 데이터를 제k 메모리(223_k-1)에 저장할 수 있다.
ECC 캐시(220)가 메모리 뱅크마다 다른 메모리에 ECC 데이터를 저장함으로 인해, ECC 캐시(220)의 히트/미스 감지부(222)가 ECC 캐시 히트를 감지할 때 소요되는 시간을 줄일 수 있을 것이다.
도 15는 본 개시의 예시적 실시예에 따른 외부 메모리 모듈(1400)과 데이터를 송수신하는 어플리케이션 프로세서(1000)를 나타낸다.
어플리케이션 프로세서(1000)는 프로세서(1600) 및 메모리 컨트롤러(1200)를 포함할 수 있다. 어플리케이션 프로세서(1000) 및 메모리 모듈(1400)은 도 1을 참조하여 설명된 전자 시스템에 관한 내용이 적용되는 것으로 이해될 수 있다.
메모리 모듈(1400)은 프로세서에 의해 처리된 또는 처리될 데이터를 임시로 저장할 수 있다. 메모리 모듈(400)은 하나 이상의 메모리 랭크를 포함할 수 있으며, ECC 데이터를 저장할 수 있다. 메모리 모듈(1400)은 ECC를 위한 별도의 메모리 칩을 구비하지 않는 In-band ECC 메모리 모듈일 수 있고, 메모리 장치들(1420_1~1420_k, k는 자연수) 중 적어도 하나는 노말 데이터와 ECC 데이터를 저장할 수 있다. 특히, 메모리 장치들(1420_1~1420_k)은 동일한 메모리 페이지에 노말 데이터와 ECC 데이터가 저장되는 In-line 메모리 장치일 수 있다. 메모리 장치(1420_1~1420_k)에 포함된 메모리 페이지는 노말 데이터를 저장하는 데이터 존(Data Zone) 및 ECC 데이터를 저장하는 ECC 존(ECC Zone)을 포함할 수 있으며, 소모되는 영역인 데드 존(Dead Zone)을 포함할 수 있다. 도 2 및 도 3과 중복되는 메모리 장치에 관한 내용이 메모리 모듈(1400) 내의 메모리 장치들(1420_1~1420_k)에 적용되는 것으로 이해될 수 있다.
메모리 컨트롤러(1200)는 ECC 데이터를 임시로 저장하는 ECC 캐시(1220)를 포함할 수 있으며, 메모리 장치(1420_1~1420_k)에 포함된 메모리 페이지들을 ECC 활성화 영역과 ECC 비활성화 영역으로 구분해 관리하기 위해 ECC 영역 관리부(1240)를 포함할 수 있다. ECC 영역 관리부(1240)는 메모리 장치(1420_1~1420_k)에 포함된 메모리 페이지들을 ECC 활성화 영역과 ECC 비활성화 영역으로 구분하는 정보를 영역 데이터로서 저장할 수 있다. 메모리 컨트롤러(1200) 내의 ECC 결정부(미도시)는 ECC 영역 관리부(1240)로부터 영역 데이터를 수신하여 메모리 컨트롤러(1200)로 입력되는 데이터의 ECC 동작 수행 여부를 결정할 수 있다. 메모리 컨트롤러(1200)는 ECC 동작을 필요로 하는 데이터에 대해 ECC 인코딩 또는 ECC 디코딩을 수행하기 위해 ECC 엔진(1260)을 포함할 수 있다. ECC 엔진(1260)은 ECC 인코더 및 ECC 디코더를 포함할 수 있다. 메모리 컨트롤러(1200)에 관한 구체적인 설명은 도 6 내지 도 13을 통해 설명된 바와 동일한 것으로 이해될 수 있다.
프로세서(1600)는 메모리 시스템(1100)으로 데이터 및 입력정보를 보낼 수 있다. 입력정보는 리드 요청, 라이트 요청 및 이레이즈 요청 등 다양한 정보들 중 적어도 하나일 수 있다. 입력정보는 명령, 주소 및 우선순위 정보 등을 포함할 수 있다. 프로세서(1600)는 메모리 컨트롤러(1200)에 ECC 활성화 영역을 구분하기 위한 영역 결정 제어 신호(Region Decision Control Signal; RDCS)를 송신할 수 있다.
프로세서(1600)는 메모리 모듈(1400)에 저장될 데이터의 ECC 동작 필요 여부를 판단할 수 있다. 예를 들어, 데이터 손실에 의해 발생하는 오류가 치명적인 메타 데이터나 시스템 데이터 등의 경우, 그 데이터는 ECC 동작을 필요로 할 수 있다. 또한 예를 들어, 데이터의 손실에 의해 발생하는 오류가 치명적이지 않은 인포테인먼트(infotainment) 등의 경우, 그 데이터는 ECC 동작을 필요로 하지 않을 수 있다. 프로세서(1600)는 ECC 동작을 필요로 하는 데이터의 어드레스에 ECC 활성화 영역 내에 포함되는 주소를 할당할 수 있고, ECC 동작을 필요로 하지 않는 데이터의 어드레스에 ECC 비활성화 영역 내에 포함되는 주소를 할당할 수 있다.
도 16은 본 개시의 예시적 실시예에 따른 모바일 시스템(2000)을 나타낸다.
모바일 시스템(2000)은 어플리케이션 프로세서(2100), 메모리 장치(2200), 스토리지 장치(2300) 및 복수의 기능 모듈들(2400, 2500, 2600, 2700)을 포함할 수 있다.
어플리케이션 프로세서(2100)는 모바일 시스템(2000)의 전반적인 동작을 제어할 수 있다. 즉, 어플리케이션 프로세서(2100)는 메모리 장치(2200), 스토리지 장치(2300) 및 복수의 기능 모듈들(2400, 2500, 2600, 2700)을 제어할 수 있다.
메모리 장치(2200) 및 스토리지 장치(2300)는 모바일 시스템(2000)의 동작에 필요한 데이터들을 저장할 수 있다. 메모리 장치(2200)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다. 휘발성 메모리는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등과 같은 다양한 메모리들 중 적어도 하나를 포함할 수 있다. 메모리 장치(2200)는 ECC 데이터와 노말 데이터를 동일 메모리 페이지에 저장하는 In-line ECC 메모리 장치일 수 있다. 이에 대한 자세한 설명은 도 2 및 도 3을 참조하여 이해될 수 있다. 스토리지 장치(2300)는 솔리드 스테이트 드라이브(solid state drive; SSD), 하드디스크 드라이브(hard disk drive; HHD), 씨디롬(CD-ROM) 등을 포함할 수 있다.
복수의 기능 모듈들(2400, 2500, 2600, 2700)은 모바일 시스템(2000)의 다양한 기능들을 각각 수행할 수 있다. 예를 들어, 모바일 시스템(2000)은 통신 기능을 수행하기 위한 통신 모듈(2400), 카메라 기능을 수행하기 위한 카메라 모듈(2500), 표시 기능을 수행하기 위한 표시 모듈(2600), 터치 입력 기능을 수행하기 위한 터치 패널 모듈(2700) 등을 포함할 수 있다. 모바일 시스템(2000)에 구비되는 기능 모듈들(2400, 2500, 2600, 2700)의 종류는 이에 한정되지 않는다. 예를 들어, 모바일 시스템(2000)은 GPS(global positioning system) 모듈, 마이크 모듈, 스피커 모듈, 자이로스코프(gyroscope) 모듈 등을 더 포함할 수 있다.
어플리케이션 프로세서(2100)는 메모리 컨트롤러(MC, 2120)를 포함할 수 있다. 메모리 컨트롤러(2120)는 메모리 장치(2200)를 제어할 수 있다. 메모리 컨트롤러(2120)는 메모리 장치(2200) 내의 메모리 페이지를 ECC 활성화 영역과 ECC 비활성화 영역으로 구분하여 관리하기 위해 ECC 영역 관리부(ECC REGION MNGR)를 포함할 수 있고, ECC 엔진(ECC ENGINE)을 포함할 수 있으며, ECC 데이터를 임시로 저장하기 위한 ECC 캐시를 포함할 수 있다. In-line 메모리 장치(2200)를 제어하기 위한 메모리 컨트롤러(2120)에 관한 자세한 설명은 도 4a 내지 도 13을 참조하여 이해될 수 있다.
상술된 바와 같이, 메모리 컨트롤러(2120) 가 In-line 메모리 장치(2200)를 제어하고 ECC 캐시를 포함함으로써, in-band ECC 메모리 장치의 ECC 저장에 따른 오버헤드를 감소될 수 있다.
도 17은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템(3000)을 나타낸다.
컴퓨팅 시스템(3000)은 프로세서(3100), 입출력 장치(3200), 메모리 장치(3300), 메모리 컨트롤러(3400) 및 전원 장치(3500)를 포함할 수 있다. 한편, 컴퓨팅 시스템(3000)은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 컴퓨팅 시스템(3000)은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
프로세서(3100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(3100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 프로세서(3100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(3600)를 통하여 입출력 장치(3200), 메모리 장치(3300) 및 메모리 컨트롤러(3400)와 통신을 수행할 수 있다.
입출력 장치(3200)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(3500)는 컴퓨팅 시스템(3000)의 동작에 필요한 동작 전압을 공급할 수 있다.
메모리 장치(3300)는 각종 데이터를 저장할 수 있다. 메모리 장치(3300)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다. 휘발성 메모리는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등과 같은 다양한 메모리들 중 적어도 하나를 포함할 수 있다. 메모리 장치(3300)는 ECC 데이터와 노말 데이터를 동일 메모리 페이지에 저장하는 in-line ECC 메모리 장치일 수 있다. 이에 대한 자세한 설명은 도 2 및 도 3을 참조하여 이해될 수 있다.
메모리 컨트롤러(3400)는 메모리 장치(3300)를 제어할 수 있다. 메모리 컨트롤러(3400)는 메모리 장치(3300) 내의 메모리 페이지를 ECC 활성화 영역과 ECC 비활성화 영역으로 구분하여 관리하기 위해 ECC 영역 관리부(ECC REGION MNGR)를 포함할 수 있고, ECC 엔진(ECC ENGINE)을 포함할 수 있으며, ECC 데이터를 임시로 저장하기 위한 ECC 캐시를 포함할 수 있다. In-line 메모리 장치(3300)를 제어하기 위한 메모리 컨트롤러(3400)에 관한 자세한 설명은 도 4a 내지 도 13을 참조하여 이해될 수 있다.
본 발명의 실시예에 따른 메모리 장치(3300) 및 메모리 컨트롤러(3400)는 다양한 형태의 패키지를 이용하여 실장될 수 있다. 예를 들어, 메모리 장치(3300) 및 메모리 컨트롤러(3400)는 PoP(Package on Pacage), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Pacage(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있다.
상술된 바와 같이, 메모리 컨트롤러(3400) 가 In-line 메모리 장치(3300)를 제어하고 ECC 캐시를 포함함으로써, in-band ECC 메모리 장치의 ECC 저장에 따른 오버헤드를 감소될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 복수의 메모리 페이지들을 포함하는 메모리 장치를 제어하는 메모리 컨트롤러에 있어서,
    상기 복수의 메모리 페이지들을 ECC 활성화 영역(ECC enable region) 및 ECC 비활성화 영역(ECC disable region)으로 구분하여 관리하는 ECC 영역 관리부(ECC Region Manager); 및
    상기 ECC 활성화 영역에 포함된 데이터에 대해 ECC 동작을 수행하는 ECC 엔진을 포함하고,
    상기 메모리 컨트롤러의 외부로부터 데이터 및 데이터 주소를 수신하고,
    상기 데이터 주소가 상기 ECC 활성화 영역에 포함되는 경우, 상기 수신된 데이터에 대해 상기 ECC 엔진에 의한 ECC 동작이 수행되고,
    상기 데이터 주소가 상기 ECC 비활성화 영역에 포함되는 경우, 상기 수신된 데이터에 대해 상기 ECC 엔진에 의한 ECC 동작이 수행되지 않는 것을 특징으로 하는 메모리 컨트롤러.
  2. 제1항에 있어서,
    상기 ECC 영역 관리부는 상기 ECC 활성화 영역에 관한 정보를 영역 데이터로서 저장하는 것을 특징으로 하는 메모리 컨트롤러.
  3. 제2항에 있어서,
    상기 영역 데이터를 수신하고, 상기 영역 데이터를 기초로 상기 메모리 컨트롤러에 입력되는 데이터를 상기 ECC 엔진으로 전달할 것인지 결정하는 ECC 결정부를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  4. 삭제
  5. 제1항에 있어서,
    ECC 데이터를 임시로 저장하는 ECC 캐시(ECC cache)를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러.
  6. 복수의 메모리 페이지들을 포함하는 메모리 장치; 및
    상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는 상기 복수의 메모리 페이지들을 ECC 활성화 영역과 ECC 비활성화 영역으로 구분하여 관리하고, 상기 ECC 활성화 영역에 ECC 데이터 및 노말 데이터를 저장하며,
    메모리 시스템은 상기 메모리 장치를 포함하는 복수의 메모리 장치들을 포함하는 메모리 모듈을 포함하고,
    상기 복수의 메모리 장치들은,
    모든 메모리 페이지가 ECC 활성화 영역에 속하는 full-ECC 메모리 장치; 및
    모든 메모리 페이지가 ECC 비활성화 영역에 속하는 full-non ECC 메모리 장치를 포함하는 것을 특징으로 하는 메모리 시스템.
  7. 제6항에 있어서,
    상기 ECC 활성화 영역 내에 존재하는 ECC 메모리 페이지 각각은 상기 ECC 데이터를 저장하는 ECC 존(ECC zone) 및 상기 노말 데이터를 저장하는 데이터 존(Data zone)을 포함하는 것을 특징으로 하는 메모리 시스템.
  8. 제7항에 있어서,
    상기 ECC 존이 차지하는 용량과 상기 데이터 존이 차지하는 용량의 비가 1:8인 것을 특징으로 하는 메모리 시스템.
  9. 제7항에 있어서,
    상기 ECC 메모리 페이지 각각은 소모되는 영역인 Dead 존(Dead zone)을 더 포함하는 것을 특징으로 하는 메모리 시스템.
  10. 삭제
KR1020170101705A 2017-08-10 2017-08-10 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서 KR102362229B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020170101705A KR102362229B1 (ko) 2017-08-10 2017-08-10 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서
US15/898,784 US10565050B2 (en) 2017-08-10 2018-02-19 Memory controller, memory system and application processor comprising the memory controller
TW107120227A TWI791536B (zh) 2017-08-10 2018-06-12 記憶體控制器、系統及包括記憶體控制器的應用處理器
CN201810902334.6A CN109388517B (zh) 2017-08-10 2018-08-09 存储器控制器、包括存储器控制器的存储器***和应用处理器
US16/792,545 US11061763B2 (en) 2017-08-10 2020-02-17 Memory controller, memory system and application processor comprising the memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170101705A KR102362229B1 (ko) 2017-08-10 2017-08-10 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서

Publications (2)

Publication Number Publication Date
KR20190017223A KR20190017223A (ko) 2019-02-20
KR102362229B1 true KR102362229B1 (ko) 2022-02-11

Family

ID=65275111

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170101705A KR102362229B1 (ko) 2017-08-10 2017-08-10 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서

Country Status (4)

Country Link
US (2) US10565050B2 (ko)
KR (1) KR102362229B1 (ko)
CN (1) CN109388517B (ko)
TW (1) TWI791536B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190243566A1 (en) * 2018-02-05 2019-08-08 Infineon Technologies Ag Memory controller, memory system, and method of using a memory device
US10769013B1 (en) * 2018-06-11 2020-09-08 Cadence Design Systems, Inc. Caching error checking data for memory having inline storage configurations
US10642684B1 (en) 2018-06-28 2020-05-05 Cadence Design Systems, Inc. Memory command interleaving
WO2021035811A1 (zh) * 2019-08-27 2021-03-04 江苏华存电子科技有限公司 一种可变动码率与更正能力内存控制方法
US11200118B2 (en) * 2019-08-29 2021-12-14 Micron Technology, Inc. Semiconductor device with modified command and associated methods and systems
US11042436B2 (en) 2019-08-29 2021-06-22 Micron Technology, Inc. Semiconductor device with modified access and associated methods and systems
US10963336B2 (en) * 2019-08-29 2021-03-30 Micron Technology, Inc. Semiconductor device with user defined operations and associated methods and systems
US11210167B2 (en) 2019-10-28 2021-12-28 Intel Corporation Memory wordline isolation for improvement in reliability, availability, and scalability (RAS)
CN116457761A (zh) * 2020-12-08 2023-07-18 华为技术有限公司 一种存储装置、存储控制装置及片上***
US11735232B2 (en) 2021-03-15 2023-08-22 Montage Technology Co., Ltd. Memory device with split power supply capability

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150058697A1 (en) * 2013-08-22 2015-02-26 Kabushiki Kaisha Toshiba Storage device, controller and memory controlling method

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5606662A (en) 1995-03-24 1997-02-25 Advanced Micro Devices, Inc. Auto DRAM parity enable/disable mechanism
US6070262A (en) 1997-04-04 2000-05-30 International Business Machines Corporation Reconfigurable I/O DRAM
US5896404A (en) 1997-04-04 1999-04-20 International Business Machines Corporation Programmable burst length DRAM
US7464241B2 (en) 2004-11-22 2008-12-09 Intel Corporation Memory transaction burst operation and memory components supporting temporally multiplexed error correction coding
US7451380B2 (en) 2005-03-03 2008-11-11 International Business Machines Corporation Method for implementing enhanced vertical ECC storage in a dynamic random access memory
KR100644223B1 (ko) 2005-12-06 2006-11-10 삼성전자주식회사 리프레쉬 전류소모를 최소화하는 반도체 메모리 장치 및이에 대한 구동방법
US20070147115A1 (en) * 2005-12-28 2007-06-28 Fong-Long Lin Unified memory and controller
US7487428B2 (en) * 2006-07-24 2009-02-03 Kingston Technology Corp. Fully-buffered memory-module with error-correction code (ECC) controller in serializing advanced-memory buffer (AMB) that is transparent to motherboard memory controller
US8135935B2 (en) * 2007-03-20 2012-03-13 Advanced Micro Devices, Inc. ECC implementation in non-ECC components
US8321727B2 (en) * 2009-06-29 2012-11-27 Sandisk Technologies Inc. System and method responsive to a rate of change of a performance parameter of a memory
US8301980B2 (en) 2009-09-28 2012-10-30 Nvidia Corporation Error detection and correction for external DRAM
KR101736792B1 (ko) * 2010-09-20 2017-05-18 삼성전자주식회사 플래시 메모리 및 그것의 셀프 인터리빙 방법
US8756398B2 (en) 2011-02-18 2014-06-17 Synopsys Inc. Partitioning pages of an electronic memory
US8898548B1 (en) * 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US9218286B2 (en) * 2012-09-27 2015-12-22 Apple Inc. System cache with partial write valid states
US9146808B1 (en) * 2013-01-24 2015-09-29 Emulex Corporation Soft error protection for content addressable memory
US9280418B2 (en) 2013-08-01 2016-03-08 Integrated Silicon Solution, Inc. Memory device implementing reduced ECC overhead
US9146809B2 (en) * 2013-10-07 2015-09-29 Macronix International Co., Ltd. ECC method for double pattern flash memory
US9367392B2 (en) * 2014-08-01 2016-06-14 Winbond Electronics Corporation NAND flash memory having internal ECC processing and method of operation thereof
KR102193682B1 (ko) 2014-08-01 2020-12-21 삼성전자주식회사 선택적 ecc 기능을 갖는 반도체 메모리 장치
US9740558B2 (en) 2015-05-31 2017-08-22 Intel Corporation On-die ECC with error counter and internal address generation
JP6527054B2 (ja) * 2015-08-28 2019-06-05 東芝メモリ株式会社 メモリシステム
KR101860809B1 (ko) * 2015-09-30 2018-07-06 서울대학교산학협력단 메모리 시스템 및 메모리 에러 정정 방법
KR20170099437A (ko) * 2016-02-23 2017-09-01 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR102515417B1 (ko) * 2016-03-02 2023-03-30 한국전자통신연구원 캐시 메모리 장치 및 그것의 동작 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150058697A1 (en) * 2013-08-22 2015-02-26 Kabushiki Kaisha Toshiba Storage device, controller and memory controlling method

Also Published As

Publication number Publication date
TWI791536B (zh) 2023-02-11
US20190050316A1 (en) 2019-02-14
TW201923573A (zh) 2019-06-16
US10565050B2 (en) 2020-02-18
CN109388517A (zh) 2019-02-26
US11061763B2 (en) 2021-07-13
KR20190017223A (ko) 2019-02-20
CN109388517B (zh) 2023-05-30
US20200183778A1 (en) 2020-06-11

Similar Documents

Publication Publication Date Title
KR102362229B1 (ko) 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서
US10509602B2 (en) Data storage device and operating method thereof
US10303378B2 (en) Data storage device
US9460816B2 (en) Semiconductor memory devices and memory systems including the same
US10769066B2 (en) Nonvolatile memory device, data storage device including the same and operating method thereof
US20190317892A1 (en) Memory system, data processing system, and operating method of memory system
US11275678B2 (en) Data storage device with spare blocks for replacing bad block in super block and operating method thereof
US20200218653A1 (en) Controller, data storage device, and operating method thereof
US20180239557A1 (en) Nonvolatile memory device, data storage device including the same, and operating method of data storage device
US11086561B2 (en) Integrated circuit memory devices with enhanced buffer memory utilization during read and write operations and methods of operating same
US20200310981A1 (en) Controller, memory system and operating method thereof
US11513736B2 (en) Revised host command generation for unaligned access
US11231882B2 (en) Data storage device with improved read performance and operating method thereof
CN112445422A (zh) 存储器控制器、存储装置以及存储器控制器的操作方法
US20230075820A1 (en) Event log management method, controller and storage device
US11586379B2 (en) Memory system and method of operating the same
US11133060B2 (en) Data storage device and operating method thereof
KR20220010424A (ko) 메모리 디바이스들의 병렬 부트 실행
KR20210028405A (ko) 서치 회로 및 컨트롤러
US11450394B2 (en) Controller and operating method thereof
US11397699B2 (en) Interrupt coalescing protection logic
US20230115457A1 (en) Storage device and operating method thereof
KR20210031367A (ko) 컨트롤러 및 그것의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant