KR20190012566A - 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법 - Google Patents

에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR20190012566A
KR20190012566A KR1020170095715A KR20170095715A KR20190012566A KR 20190012566 A KR20190012566 A KR 20190012566A KR 1020170095715 A KR1020170095715 A KR 1020170095715A KR 20170095715 A KR20170095715 A KR 20170095715A KR 20190012566 A KR20190012566 A KR 20190012566A
Authority
KR
South Korea
Prior art keywords
memory
group
data
chip
chips
Prior art date
Application number
KR1020170095715A
Other languages
English (en)
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 KR1020170095715A priority Critical patent/KR20190012566A/ko
Priority to US15/889,741 priority patent/US20190034270A1/en
Priority to CN201810845313.5A priority patent/CN109308228A/zh
Publication of KR20190012566A publication Critical patent/KR20190012566A/ko

Links

Images

Classifications

    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports

Abstract

본 개시의 기술적 사상의 일측면에 따른 메모리 시스템은, 복수의 메모리 칩들의 DQ 그룹 관리 정보를 저장하는 메모리 컨트롤러를 포함할 수 있고, 메모리 컨트롤러는 복수의 메모리 칩들 각각의 DQ 접속기들과 연결되고, DQ 접속기들로 전송되는 데이터에 대해 데이터 정정 알고리즘을 수행하는 ECC 엔진 및 DQ 접속기들을 정정 데이터 폭의 사이즈를 갖는 DQ 그룹으로 그룹화하고, DQ 그룹을 관리하기 위한 DQ 그룹 관리 정보를 저장하는 DQ 그룹 관리부를 포함할 수 있다.

Description

에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법{MEMORY SYSTEM HAVING AN ERROR CORRECTION FUNCTION AND OPERATING METHOD OF MEMORY MODULE AND MEMORY CONTROLLER}
본 개시의 기술적 사상은 메모리 시스템에 관한 것으로서, 자세하게는 메모리 모듈의 데이터 정정을 위한 장치 및 방법에 관한 것이다.
기술이 발전함에 따라, 반도체 메모리 장치는 그 용량 및 속도가 증가하고 있다. 반도체 메모리 장치의 일 예로서 휘발성 메모리(volatile-memory) 장치는 캐패시터(capacitor)에 저장되어 있는 전하(charge)에 의해 데이터를 판정하는 메모리 장치로서, 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다.
반도체 메모리 장치의 동작이 고속화됨에 따라 데이터의 에러 발생 확률이 증가하게 된다. 증가하는 에러 발생에 따른 성능 저하를 막기 위해, 에러를 정정하는 다양한 방안이 제안된다.
본 개시의 기술적 사상은 메모리 모듈 및 메모리 시스템에서, 메모리 칩의 DQ 접속기(DQ Contact Point)들을 DQ 그룹화하여 데이터 정정 알고리즘을 구현하기 위한 장치 및 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 메모리 시스템은, 복수의 메모리 칩들의 DQ 그룹 관리 정보를 저장하는 메모리 컨트롤러를 포함할 수 있고, 메모리 컨트롤러는 복수의 메모리 칩들 각각의 DQ 접속기들과 연결되고, DQ 접속기들로 전송되는 데이터에 대해 데이터 정정 알고리즘을 수행하는 ECC 엔진 및 DQ 접속기들을 정정 데이터 폭의 사이즈를 갖는 DQ 그룹으로 그룹화하고, DQ 그룹을 관리하기 위한 DQ 그룹 관리 정보를 저장하는 DQ 그룹 관리부를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 메모리 모듈 에러 정정 방법은, 메모리 컨트롤러에 저장된 DQ 그룹 관리 정보를 기초로 메모리 모듈의 메모리 칩들의 DQ 접속기들을 정정 데이터 폭 사이즈를 갖는 DQ 그룹으로 그룹화하는 단계 및 메모리 모듈에 정정 데이터 폭 단위로 수행되는 데이터 정정 알고리즘을 수행하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 메모리 모듈은, 각각의 DQ 접속기들이 정정 데이터 폭 사이즈를 갖는 적어도 하나의 DQ 그룹으로 그룹화되는 복수의 메모리 칩들, 복수의 메모리 칩들의 DQ 그룹 정보를 포함하는 SPD 칩을 포함할 수 있다.
본 개시의 예시적 실시예 따른 메모리 시스템 내지는 메모리 모듈에 의하면, 작은 데이터 폭 단위로 수행되는 데이터 정정 알고리즘을 더 큰 데이터 폭 특성을 갖는 메모리 칩에 구현할 수 있다.
뿐만 아니라, 스페어 DQ 그룹의 활용으로 메모리 장치의 RAS(Reliability, Availability and Serviceability) feature를 강화할 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 메모리 시스템을 나타낸다.
도 2는 본 개시의 예시적 실시예에 따른 메모리 모듈의 버스트 동작을 나타낸다.
도 3은 본 개시의 예시적 실시예에 따른 에러 정정 알고리즘이 수행되는 데이터 구조를 나타낸다.
도 4는 본 개시의 예시적 실시예에 따른 에러 정정 알고리즘이 수행되는 순서도를 나타낸다.
도 5a 내지 도 5c는 본 개시의 예시적 실시예에 따른 DQ 그룹화된 DRAM 칩을 나타낸다.
도 6은 본 개시의 예시적 실시예에 따른 메모리 모듈을 나타낸다.
도 7은 본 개시의 예시적 실시예에 따른 DQ 그룹 관리부를 나타낸다.
도 8은 본 개시의 예시적 실시예에 따른 도 6의 메모리 모듈에 에러 정정 알고리즘이 수행되는 데이터 구조를 나타낸다.
도 9는 본 개시의 예시적 실시예에 따른 메모리 모듈을 나타낸다.
도 10은 본 개시의 예시적 실시예에 따른 도 9의 메모리 모듈에 에러 정정 알고리즘이 수행되는 데이터 구조를 나타낸다.
도 11은 본 개시의 예시적 실시예에 따른 메모리 모듈을 나타낸다.
도 12는 본 개시의 예시적 실시예에 따른 도 11의 메모리 모듈에 에러 정정 알고리즘이 수행되는 데이터 구조를 나타낸다.
도 13은 본 개시의 예시적 실시예에 따른 메모리 모듈을 나타낸다.
도 14는 본 개시의 예시적 실시예에 따른 메모리 모듈을 나타낸다.
도 15는 본 개시의 예시적 실시예에 따른 DQ 그룹 관리부를 나타낸다.
도 16은 본 개시의 예시적 실시예에 따른 메모리 모듈을 나타낸다.
도 17은 본 개시의 예시적 실시예에 따른 메모리 시스템을 나타낸다.
도 18은 메모리 모듈의 메모리 칩이 DQ 그룹화 되었을 때, 메모리 컨트롤러가 에러 정정 기능을 수행하는 순서도를 나타낸 것이다.
도 19는 본 개시의 예시적 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시예에 따른 메모리 시스템(10)을 나타낸다.
메모리 시스템(10)은 메모리 모듈(200) 및 메모리 컨트롤러(400)를 포함할 수 있다. 메모리 모듈(200)과 메모리 컨트롤러(400)는 BUS(300)를 통해 각종 신호(DQ, DQS, CLK 등)를 주고 받을 수 있다. 메모리 시스템(10)은 메모리 모듈(200)을 한 개만 포함할 수도 있지만, 복수 개의 메모리 모듈을 포함할 수 있다. 메모리 시스템(10)은 각종 서버(Server), 데스크톱, 노트북, 스마트 폰, 태블릿 PC, 프린터, 스캐너, 모니터, 디지털 카메라, 디지털 음악 플레이어, 디지털 미디어 레코드, 휴대형 게임 콘솔 등 메모리를 필요로 하는 각종 전자 장치에 포함될 수 있으며, 개시된 예시에 한정되지 않는다.
메모리 모듈(200)은 프로세서에 의해 처리된 또는 처리될 데이터를 임시로 저장할 수 있으며, 컴퓨팅 시스템에서 연산 메모리(Operation Memory), 워킹 메모리(Working Memory) 또는 버퍼 메모리(Buffer Memory)로서 이용될 수 있다. 메모리 모듈(200)은 복수 개의 메모리 랭크(240, 260) 및 SPD 칩(220)을 포함할 수 있다. 메모리 모듈(200)은 도 1과 같이 두 개의 메모리 랭크(240, 260)를 포함할 수 있지만, 이에 한정되지 않는다. 예를 들어, 메모리 모듈(200)은 단일 메모리 랭크로 이루어질 수 있으며, 3개 이상의 메모리 랭크를 포함할 수 있다. 메모리 모듈(200)은 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)으로 구현될 수 있다.
각각의 메모리 랭크(240, 260)는 복수의 메모리 칩(242_1~242_k, 262_1~262_n, k 및 n은 자연수)을 포함할 수 있다. 설명의 편의 상, 메모리 랭크(240, 260)에 대한 설명은 제1 메모리 랭크(240)에 대한 설명으로 갈음한다. 메모리 랭크(240)는 k개의 메모리 칩(242_1~242_k)으로 이루어질 수 있다(단, k는 자연수). 각각의 메모리 칩(242_1~24_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) 등과 같은 불휘발성 메모리일 수 있다. 또한, 메모리 칩(242_1~242_k) 각각은 DDR, DDR2, DDR3, DDR4 및 DDR5 등과 같은 다양한 표준에 따른 DRAM 칩에 해당할 수 있다.
이하의 설명에서, 메모리 칩(242_1~242_k) 각각은 DRAM 칩인 것으로 설명될 것이나, 상기 메모리 칩(242_1~242_k)의 종류가 이에 한정되는 것은 아니며, 다른 다양한 종류의 칩으로 구현되어 무방할 것이다.
SPD 칩(220)은 메모리 모듈(200)의 특성에 관한 정보를 저장할 수 있다. SPD 칩(220)은 메모리 모듈의 모듈 유형, 동작 환경, 선로 배열, 모듈 구성, 저장 용량 등과 같은 메모리 모듈(200)의 정보를 저장할 수 있다. SPD 칩(220)은 프로그램 가능한 읽기 전용 메모리(Programmable Read-only Memory), 예컨대 EEPROM(Electrically Erasable Programmable Read Only Memory) 등을 포함할 수 있다. SPD 칩(220)은 메모리 모듈(200)에 포함된 메모리 칩(242_1~242_k, 262_1~262_n)이 DQ 그룹화되었는지 여부에 대한 DQ 그룹화 정보(DQG_INFO)를 저장할 수 있다. 메모리 모듈(200)의 에러 정정 모드에서, SPD 칩(220)은 메모리 컨트롤러(400)에 DQ 그룹 정보(DQG_INFO)를 제공하여 메모리 컨트롤러(400)가 메모리 모듈(200)에 DQ 그룹 단위로 접근할 수 있도록 할 수 있다. DQ 그룹에 대해서는 이하에서 설명될 수 있다.
BUS(300)는 컨트롤 버스, 커맨드/어드레스 버스 및 데이터 버스 등 각종 버스를 포함할 수 있다. 메모리 컨트롤러(400)는 BUS(300)를 통해 메모리 모듈(200)과 커맨드/어드레스 신호(C/A), 클록 신호(CLK), 제어 신호(CTRL), 데이터(DQ) 및 데이터 스트로브 신호(DQS) 등을 송수신할 수 있다. 메모리 컨트롤러(400)는 메모리 모듈(200)로부터의 데이터(DQ) 독출 및 메모리 모듈(200)로의 데이터(DQ) 기입을 제어할 수 있다. 메모리 컨트롤러(400)는 커맨드/어드레스 신호(C/A) 및 제어 신호(CTRL)를 메모리 모듈(200)로 제공하고, 커맨드/어드레스 신호(C/A)에 따라 설정된 기입 또는 독출 모드에서 제어 신호(CTRL)를 기초로 메모리 칩들(242_1~242_k, 262_1~262_n) 중 억세스 하려는 메모리 칩과의 데이터(DQ) 송수신을 제어할 수 있다. 또한 메모리 모듈(200)은 BUS(300)를 통해 DQ 그룹화 정보(DQG_INFO)를 메모리 컨트롤러(400)에 제공할 수 있다. DQ 그룹화 정보(DQG_INFO)는 메모리 모듈(200)에 포함된 메모리 칩들(242_1~242_k, 262_1~262_n)의 DQ 그룹화 여부에 대한 정보를 포함할 수 있다.
메모리 컨트롤러(400)는 메모리 모듈(200)에 대한 인터페이스를 제공하여 메모리 모듈(200)로 가거나, 그로부터 나오는 데이터의 흐름을 관리할 수 있다. 메모리 컨트롤러(400)는 프로세서 등과 같은 외부 호스트와 연결될 수 있으며, USB, MMC, PCIe, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI 및 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 외부 호스트와 통신할 수 있다. 메모리 컨트롤러(400)는 별도의 칩으로 구성되거나 메모리 모듈(200)과 통합되어 있을 수 있다. 메모리 컨트롤러(400)는 마더보드 상에 구현될 수 있으며, 마이크로프로세서에 포함된 집적 메모리 컨트롤러(Integrated Memory Controller; IMC)로 구현될 수 있다. 또한, 메모리 컨트롤러(400)는 입출력 허브 내에 위치할 수 있고, 메모리 컨트롤러(400)를 포함하는 입출력 허브는 메모리 컨트롤러 허브(Memory Controller Hub; MCH)라 불릴 수 있다.
메모리 컨트롤러(400)는 에러 검출 및 에러 정정 동작을 수행하기 위해 ECC 엔진(420)을 포함할 수 있다. ECC 엔진(420)은 에러를 검출하고 에러를 정정하기 위해, 패리티 체크(Parity-Check), CRC 체크(Cyclical Redundancy Code Check), 체크섬 체크(Checksum Check), 해밍코드(Hamming code)를 이용할 수 있다. 그리고, ECC 엔진(420)은 복수의 메모리 칩의 에러를 정정하기 위해 x4 SDDC(Single Device Data Correction), x8 SECDED(Single-bit Error Correction and Double-bit Error Detection), Lockstep x8 SDDC 등의 정정 기법을 사용할 수 있다.
메모리 컨트롤러(400)는 메모리 모듈(200)의 메모리 칩들(242_1~242_k, 262_1~262_n)이 포함하는 DQ 그룹을 관리하기 위한 DQ 그룹 관리 정보(DQG MNG)를 저장하는 DQ 그룹 관리부(421)를 포함할 수 있다. 도 7을 참조해 설명하면, DQ 그룹 관리 정보(DQG MNG)는 DQ 그룹의 주소 정보를 포함하는 DQ 그룹 어드레스 정보(DQG ADDR)를 포함할 수 있다.
메모리 모듈(200)의 에러 정정 모드에서, ECC 엔진(420)은 DQ 그룹 관리부(421)로부터 DQ 그룹 관리 정보(DQG MNG)를 수신할 수 있고, 수신한 DQ 그룹 관리 정보(DQG MNG)에 기초하여 각각의 메모리 칩들(242_1~242_k, 262_1~262_n)을 그룹화한 DQ 그룹 단위를 하나의 DQ 그룹 메모리 칩으로 인식하고 에러 정정 기능을 수행할 수 있다.
메모리 모듈(200) 내의 메모리 칩들(242_1~242_k, 262_1~262_n)은 데이터 버스 폭 특성에 따라 동작할 수 있다. 데이터 버스 폭은 4bit, 8bit, 16bit 및 32bit 중 하나일 수 있으며, 이에 제한되지 않는다. 예를 들어, 데이터 버스 폭이 4bit이며 DRAM으로 이루어진 메모리 칩은 x4 DRAM Chip이라 불릴 수 있으며, x4 DRAM Chip은 4개의 DQ 접속기를 통해 외부와 데이터를 송수신 할 수 있다. DQ 접속기는 핀으로 이루어질 수 있고, ‘핀’이라는 용어는 집적 회로 등에 대한 전기적 상호 접속을 폭넓게 가리키는 것으로서, 예를 들어 패드 또는 집적 회로 상의 다른 전기적 접촉점을 포함할 수 있다. x4 DRAM Chip은 4개의 DQ 접속기를 통해 동시에 4bit의 데이터를 송수신 할 수 있다. 또한 예를 들어, 데이터 버스 폭이 8bit이며 DRAM으로 이루어진 메모리 칩은 x8 DRAM Chip이라 불릴 수 있으며, x8 DRAM Chip은 8개의 DQ 접속기를 통해 외부와 데이터를 송수신 할 수 있다. x8 DRAM Chip은 8개의 DQ 접속기를 통해 동시에 8bit의 데이터를 송수신 할 수 있다.
하나의 메모리 랭크(240)에 포함된 메모리 칩(242_1~242_k)의 개수는 DDR 버스 폭과 각각의 메모리 칩(242_1~242_k)의 데이터 버스 폭에 의해 결정될 수 있다. 예를 들어, 제1 메모리 랭크(240)가 x4 ECC DIMM인 경우, DDR 버스 폭이 72bit라면 각각의 데이터 버스 폭이 4bit이므로 18개의 메모리 칩을 필요로 할 수 있다. 또한 예를 들어, 제1 메모리 랭크(240)가 x8 ECC DIMM인 경우, DDR 버스 폭이 72bit라면 각각의 데이터 버스 폭이 8bit이므로 9개의 메모리 칩을 필요로 할 수 있다. 다만, 본 개시에 따른 실시예들이 이에 한정되는 것은 아니다. 본 개시에 따르면, 각각의 DRAM Chip들(242_1~242_k)은 모두가 동일한 데이터 버스 폭을 갖지 않을 수 있고, 그에 따라 포함되는 메모리 칩의 개수(k)도 달라질 수 있다.
메모리 컨트롤러(400) 내의 ECC 엔진(420)이 에러 정정 모드에서 메모리 모듈(200)을 하나의 랭크 단위로 에러 정정 기능을 수행할 때, 각각의 메모리 칩에서 특정 데이터 폭 단위의 데이터를 독출하여 메모리 컨트롤러(400)의 캐시 라인(cache line)을 채울(fill) 수 있다. 그 때, 그 특정 데이터 폭은 정정 데이터 폭(Correction Data Width)이라 불릴 수 있다. ECC 엔진(420)은 캐시 라인을 채운 뒤, 정정 데이터 폭 단위로 에러 정정 알고리즘을 수행하여 에러를 검출하고 에러를 정정할 수 있다. 메모리 컨트롤러(400)는 에러가 정정된 경우, 해당 메모리 칩에 정정된 데이터를 재기입하는 동작을 수행할 수 있다. 정정 데이터 폭 단위로 수행되는 에러 정정 알고리즘을 메모리 모듈(200)에 구현하기 위해서, 각각의 메모리 칩들(242_1~242_k 또는 262_1~262_n)은 모두 정정 데이터 폭과 동일한 데이터 버스 폭을 가질 필요가 있을 수 있다. 따라서 메모리 칩들(242_1~242_k, 262_1~262_n)의 데이터 버스 폭이 정정 데이터 폭보다 큰 경우에는, 해당 메모리 모듈(200)에 정정 데이터 폭 단위로 수행되는 에러 정정 알고리즘을 구현하기 어려울 수 있다.
정정 데이터 폭 보다 큰 데이터 버스 폭을 갖는 메모리 칩(242_1~242_k)을 포함하는 메모리 모듈(200)에 정정 데이터 폭 단위로 수행되는 에러 정정 알고리즘을 구현하기 위해, 메모리 컨트롤러(400)는 각각의 메모리 칩(242_1~242_k)을 정정 데이터 폭 단위의 DQ 그룹으로 그룹화할 수 있다. 예를 들어, 정정 데이터 폭이 4bit이고 메모리 칩들(242_1~242_k)의 데이터 버스 폭이 8bit인 경우, 각각의 메모리 칩들(242_1~242_k)에 포함된 8개의 DQ 접속기들(DQ0-7)은 제1 DQ 그룹(DQ0-3) 및 제2 DQ 그룹(DQ4-7)으로 그룹화 될 수 있다. 그룹화에 따라 메모리 컨트롤러(400)는 각각의 메모리 칩들(242_1~242_k)을 2개의 DQ 그룹 메모리 칩으로 인식할 수 있고, 따라서 각각의 DQ 그룹 메모리 칩은 데이터 버스 폭이 4bit인 메모리 칩으로 인식될 수 있다. 이처럼 메모리 컨트롤러(400)가 메모리 모듈(200)의 메모리 칩들을 정정 데이터 폭과 같은 4bit의 데이터 버스 폭을 갖는 DQ 그룹 메모리 칩으로 인식하게 된다면, 각각의 메모리 칩들(242_1~242_k)이 8bit의 데이터 버스 폭을 가짐에도 불구하고, ECC 엔진(420)은 이 메모리 모듈(200)에 4bit 단위로 수행되는 에러 정정 알고리즘을 구현할 수 있다. 즉, 메모리 칩의 데이터 버스 폭이 정정 데이터 폭의 N배(N은 2 이상의 자연수)인 경우, 메모리 칩은 N개의 DQ 그룹으로 그룹화될 수 있고, 메모리 컨트롤러는 각각의 메모리 칩을 N개의 DQ 그룹 메모리 칩으로 인식할 수 있다.
에러 정정 모드에서, 메모리 컨트롤러(400)는 메모리 모듈(200)의 SPD 칩(220)으로부터 DQ 그룹화 정보(DQG_INFO) 신호를 수신하여, 메모리 모듈(200)에 포함된 메모리 칩들(242_1~242_k)이 DQ 그룹으로 그룹화되었는지 알 수 있다. 각각의 메모리 칩들(242_1~242_k)을 정정 데이터 버스 폭과 동일한 데이터 버스 폭을 갖는 DQ 그룹으로 그룹화한 경우, DQ 그룹을 하나의 메모리 칩(DQ 그룹 메모리 칩)으로 인식하여 에러 정정 알고리즘을 구현하기 위해, 메모리 컨트롤러(400)는 DQ 그룹 관리 정보(DQG MNG)를 저장하는 DQ 그룹 관리부(421)를 포함할 수 있다. 도 7을 참조해 설명하면, DQ 그룹 관리 정보(DQG MNG)는 DQ 그룹 어드레스 정보(DQG ADDR)를 포함할 수 있다. DQ 그룹 어드레스 정보(DQG ADDR)는 각각의 메모리 칩들(242_1~242_k)의 DQ 그룹의 어드레스 정보를 포함할 수 있다. 따라서, 메모리 컨트롤러(400)는 수신된 DQ 그룹화 정보(DQG_INFO) 신호를 기초로 그룹화 여부를 인식하고, DQ 그룹 관리 정보(DQG MNG)를 기초로 하나의 DQ 그룹을 단위로 에러 정정 알고리즘을 수행할 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 메모리 모듈의 버스트 동작을 나타낸다.
도 2를 참조하면, 메모리 모듈은 하나의 메모리 랭크를 포함할 수 있으며,하나의 메모리 랭크는 복수 개의 x4 DRAM 칩들(242_1~242_k)을 포함할 수 있다. 메모리 모듈은 ECC(Error correction code)를 포함하는 x4 ECC DIMM일 수 있다. 메모리 모듈은 패리티(Parity) 데이터를 저장하는 DRAM 칩(242_1)을 포함할 수 있으며, CRC(Cyclical Redundancy Code) 데이터를 저장하는 DRAM 칩(242_2)을 포함할 수 있다. 예를 들어, 전체 버스 폭이 72bit인 x4 ECC DIMM의 경우, 메모리 모듈의 전체 메모리 칩의 개수가 18개이므로, 메모리 모듈은 Parity DRAM 칩(242_1) 및 CRC DRAM 칩(242_1) 외에 16개의 x4 DRAM 칩들을 포함할 수 있고, 이에 그 구성이 한정되지는 않는다. x4 DRAM 칩들(242_1~242_k) 각각의 데이터 버스 폭은 4bit로서, 각각의 DRAM 칩들(242_1~242_k)이 데이터를 출력할 때, 4개의 DQ 접속기(DQ0~DQ3)를 통해 동시에 4bit의 데이터를 출력할 수 있다. 4bit의 데이터(243_1~243_k)가 각각의 DRAM 칩들(242_1~242_k)로부터 동시에 출력될 수 있다.
복수의 DRAM 칩들(242_1~242_k)은 버스트 동작(Burst Operation)을 수행할 수 있다. 버스트 동작은 메모리 컨트롤러로부터 받은 초기 어드레스로부터 어드레스를 순차적으로 감소 혹은 증가함으로써 다량의 데이터를 읽거나 쓰는 동작을 뜻할 수 있다. 버스트 동작의 기본 단위를 버스트 렝스(Burst Length; BL)라 할 수 있다. 도 2를 참조하면, 버스트 렝스는 8일 수 있다. 각각의 DRAM 칩들(242_1~242_k)의 각각의 DQ 접속기(DQ0-3)는 버스트 동작의 기본 단위로서 8개의 데이터(BL0-7)를 입출력 할 수 있다. 예를 들어, x4 ECC DIMM의 경우 버스트 동작에서 단위 동작 당 입출력되는 데이터는 8(버스트 렝스)x4(데이터 버스 폭)x18(칩 개수)=576bit일 수 있다. 576bit이 메모리 컨트롤러의 하나의 캐시 라인을 채울(fill) 수 있다. 에러 정정이 수행되는 단위는 1 코드워드(CodeWord)로 정의될 수 있다. 예를 들어, x4 ECC DIMM의 에러 정정 모드에서 에러 정정은 1/2 캐시 라인 단위로 수행될 수 있다. 따라서 1 캐시 라인을 채우는 버스트 동작의 기본 단위는 2개의 코드워드를 포함할 수 있다. 도 2를 참조하면, 버스트 동작의 기본 단위는 제1 코드 워드(244_1) 및 제2 코드워드(244_2)를 포함할 수 있다. x4 ECC DIMM의 경우, 제1 및 제2 코드워드(244_1, 244_2) 각각은 288bit의 데이터를 포함할 수 있다. 메모리 컨트롤러의 ECC 엔진은 제1 및 제2 코드워드(244_1, 244_2) 각각의 288bit의 데이터에 대해 에러 정정 알고리즘을 구현할 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 에러 정정 알고리즘이 수행되는 데이터 구조를 나타낸다. 메모리 모듈은 하나의 메모리 랭크를 포함할 수 있고, x4 ECC DIMM으로서 18개의 x4 DRAM 칩을 포함할 수 있다. 18개의 x4 DRAM 칩들 중 하나는 Parity 데이터를 저장하기 위한 Parity DRAM 칩(PD)일 수 있으며, 하나는 CRC 데이터를 저장하기 위한 CRC DRAM 칩(CD)일 수 있다. 메모리 모듈은 데이터를 저장하기 위한 x4 DRAM 칩을 16개(DD_1~16) 포함할 수 있다. 도 3은 x4 ECC DIMM으로 구성된 메모리 모듈이 단위 버스트 동작에서 출력하는 데이터를 나타낸다. 버스트 렝스(BL)는 8일 수 있다. 총 576bit의 데이터가 메모리 컨트롤러의 1 캐시 라인을 채울 수 있고, 2개의 코드 워드(CW0, CW1)를 구성할 수 있다. 메모리 컨트롤러는 하나의 코드워드 단위로 에러 정정 알고리즘을 수행할 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 에러 정정 알고리즘이 수행되는 순서도를 나타낸다.
도 4는 도 3을 참조하여 설명될 수 있다. 도 3의 제1 코드워드(CW0)에 속하는 제11 데이터 DRAM 칩(DD_11)에 에러가 발생했다는 가정 하에, 에러 비트를 검출하고 정정하는 방법에 대해 설명된다. 가장 처음에 코드워드 단위에 대해 CRC Check가 수행될 수 있다(S120). 제1 코드워드(CW0) 전체에 대해 CRC Check를 하였을 때, CRC PASS가 되는지 판단할 수 있다(S122). 만약 CRC PASS가 되었다면, 제1 코드워드(CW0)에는 에러가 존재하지 않는 것이기 때문에 에러 정정 알고리즘이 종료될 수 있다. 만약 CRC PASS가 되지 않았다면(S122), 해당 제1 코드워드(CW0)에는 에러가 존재하는 것이기 때문에 에러가 존재하는 에러 비트의 위치를 찾기 위한 다음 단계가 진행될 수 있다.
따라서 CRC PASS가 되지 않은 경우, Parity Check가 수행될 수 있다(S140). 도 3을 참조하여, 설명의 편의를 위해 제1 코드워드(CW0) 내에서 데이터 버스 폭에 따라 4bit씩 묶인 16bit의 데이터를 하나의 서브워드(SubWord)라 칭할 수 있다. 제1 코드워드(CW0)는 총 18개의 서브 워드를 포함할 수 있다. 18개의 서브워드에 포함된 데이터 중 같은 위치에 대응되는 데이터들에 대해서 한 번의 Parity Check가 수행될 수 있고, 총 16번의 Parity Check가 수행될 수 있다. Parity Check는 Even Parity Check일 수 있으며, 이에 제한되지는 않고 Odd Parity Check일 수도 있다. Parity Check를 통해, 서브 워드 내에서 에러 비트의 위치가 어디인지 알아낼 수 있다. 도 3을 참조하면, 하나의 서브워드에서 (2,2), (2,3), (3,3), (3,4), (4,3)의 위치에 존재하는 비트(빗금표시)에 에러가 존재하는 것을 알 수 있다. 서브워드 내 에러가 존재하는 에러 비트의 위치를 알아낸 뒤, 해당 에러 비트가 존재하는 Device를 알아내기 위해 다음 단계가 진행될 수 있다.
가장 먼저 CRC DRAM 칩(CD)에 대응되는 서브워드(SubWord)에 대해 정정이 시도될 수 있다(S161). 그 후 CRC Check를 수행할 수 있다(S162). CRC Check에 따라 CRC PASS가 되었는지를 판단할 수 있다(S163). 만약 CRC PASS가 되었다면, 에러가 존재하는 Device는 CRC DRAM 칩(CD)이라고 판단할 수 있고, CRC DRAM 칩(CD)에 대해서 에러 정정이 수행될 수 있다(S170). 만약 CRC PASS가 되지 않았다면, 에러가 존재하는 Device는 CRC DRAM 칩(CD)이 아니라고 판단할 수 있고, 다음 단계로 넘어갈 수 있다. 그 다음에는 가장 먼저 DD_1 DRAM 칩에 대응되는 서브워드(SubWord)에 대해 정정이 시도될 수 있다(S164). 그 후 CRC Check를 수행할 수 있다(S165). CRC Check에 따라 CRC PASS가 되었는지를 판단할 수 있다(S166). 만약 CRC PASS가 되었다면, 에러가 존재하는 Device는 DD_1 DRAM 칩이라고 판단할 수 있고, DD_1 칩에 대해서 에러 정정이 수행될 수 있다(S172). 만약 CRC PASS가 되지 않았다면, 에러가 존재하는 Device는 DD_1 DRAM 칩이 아니라고 판단할 수 있고, 다음 단계로 넘어갈 수 있다. 그 다음에는 DD_2 DRAM 칩에 대응되는 서브워드(Sub Word)에 대해 정정이 시도 되어야 하기 때문에, 순서 인자 i에 1을 더할 수 있다(S167). 그 후, DD_2 DRAM 칩에 대응되는 서브워드(SubWord)에 대해 정정이 시도될 수 있고(S164), 그 이 후의 단계는 CRC PASS가 될 때까지, 순차적으로 반복될 수 있다.
결과적으로 CRC PASS가 된 Device에 에러가 존재한다고 판단할 수 있고, 해당 Device에 대해 최종적인 에러 정정이 수행될 수 있다(S172). 이렇게 하나의 Device에 존재하는 에러를 검출하고 정정하는 에러 정정 알고리즘이 종료될 수 있다. 물론, 에러 정정 모드에서 다른 종류의 에러 정정 알고리즘이 수행될 수 있으며, 에러 정정 알고리즘 방법이 이에 제한되는 것은 아니다.
위와 같이 에러 정정 알고리즘이 수행되는 과정에 각각의 서브워드(SubWord) 별로 정정이 시도되는 단계가 있을 수 있기 때문에, 에러 정정 알고리즘이 수행되는 정정 데이터 폭과 에러 정정 알고리즘이 구현되는 메모리 칩의 데이터 버스 폭이 동일할 필요가 있을 수 있다. 메모리 칩의 데이터 버스 폭이 더 넓어지고 있는 실정 하에, 정정 데이터 폭 보다 넓은 데이터 버스 폭을 가진 메모리 칩에 대해서 에러 정정 알고리즘을 구현하기 위한 방법에 대한 필요성이 대두될 수 있다.
도 5a 내지 도 5c는 본 개시의 예시적 실시예에 따른 DQ 그룹화된 DRAM 칩을 나타낸다.
도 5a를 참조하면, DRAM 칩(242a)은 8개의 DQ 접속기를 가질 수 있다. 즉, DRAM 칩(242a)의 데이터 버스 폭은 8bit일 수 있고, x8 DRAM 칩이라 불릴 수 있다. 각각의 핀들(pin)은 DRAM 칩(242a)의 DQ 접속기(DQ0-7)일 수 있다. ‘핀’이라는 용어는 집적 회로에 대한 전기적 상호 접속을 폭넓게 가리키는 것으로서, 예를 들어 패드 또는 집적 회로 상의 다른 전기적 접촉점을 포함할 수 있다. 에러 정정 모드에서 DRAM 칩(242a)에 4bit 단위로 수행되는 에러 정정 알고리즘이 구현되기 위해서, DRAM 칩(242a)의 DQ 접속기(DQ0-7)는 4bit 단위의 DQ 그룹(243a_1, 243a_2)으로 그룹화 될 수 있다. 예를 들어, DQ0-3은 제1 DQ 그룹(243a_1)으로, DQ4-7은 제2 DQ 그룹(243a_2)으로 그룹화될 수 있다. 따라서, 에러 정정 모드에서 메모리 컨트롤러는 DRAM 칩(242a)을 제1 DQ 그룹(243a_1)을 DQ 접속기로 가지는 x4 DQ 메모리 칩과 제2 DQ 그룹(243a_2)을 DQ 접속기로 가지는 x4 DQ 메모리 칩으로 인식할 수 있고, DRAM 칩(242a)의 데이터 버스 폭이 8bit임에도 불구하고, DRAM 칩(242a)에는 4bit 단위로 수행되는 에러 정정 알고리즘이 구현될 수 있다.
도 5b를 참조하면, DRAM 칩(242b)은 16개의 DQ 접속기를 가질 수 있다. 즉, DRAM 칩(242b)의 데이터 버스 폭은 16bit일 수 있고, x16 DRAM 칩이라 불릴 수 있다. 각각의 점들(dots)은 DRAM 칩(242b)의 DQ 접속기(DQ0-15)일 수 있다. 에러 정정 모드에서 DRAM 칩(242b)에 4bit 단위로 수행되는 에러 정정 알고리즘이 구현되기 위해서, DRAM 칩(242b)의 DQ 접속기(DQ0-15)는 4bit 단위의 DQ 그룹(243b_1, 243b_2, 243b_3, 243b_4)으로 그룹화 될 수 있다. 예를 들어, DQ0-3은 제1 DQ 그룹(243b_1)으로, DQ4-7은 제2 DQ 그룹(243b_2)으로, DQ8-11은 제3 DQ 그룹(243b_3)으로, DQ12-15는 제4 DQ 그룹(243b_4)으로 그룹화될 수 있다. 따라서, 에러 정정 모드에서 메모리 컨트롤러는 DRAM 칩(242b)을 제1 DQ 그룹(243b_1)을 DQ 접속기로 가지는 x4 DQ 메모리 칩, 제2 DQ 그룹(243b_2)을 DQ 접속기로 가지는 x4 DQ 메모리 칩, 제3 DQ 그룹(243b_3)을 DQ 접속기로 가지는 x4 DQ 메모리 칩 및 제4 DQ 그룹(243b_4)을 DQ 접속기로 가지는 x4 DQ 메모리 칩으로 인식할 수 있고, DRAM 칩(242b)의 데이터 버스 폭이 16bit임에도 불구하고, DRAM 칩(242b)에는 4bit 단위로 수행되는 에러 정정 알고리즘이 구현될 수 있다.
도 5c를 참조하면, DRAM 칩(242c)은 32개의 DQ 접속기를 가질 수 있다. 즉, DRAM 칩(242c)의 데이터 버스 폭은 32bit일 수 있고, x32 DRAM 칩이라 불릴 수 있다. 각각의 점들(dots)은 DRAM 칩(242c)의 DQ 접속기(DQ0-31)일 수 있다. 에러 정정 모드에서 DRAM 칩(242c)에 4bit 단위로 수행되는 에러 정정 알고리즘이 구현되기 위해서, DRAM 칩(242c)의 DQ 접속기(DQ0-31)는 4bit 단위의 DQ 그룹(243c_1, 243c_2, 243c_3, 243c_4, 243c_5, 243c_6, 243c_7, 243c_8)으로 그룹화 될 수 있다. 예를 들어, DQ0-3은 제1 DQ 그룹(243c_1)으로, DQ4-7은 제2 DQ 그룹(243c_2)으로, DQ8-11은 제3 DQ 그룹(243c_3)으로, DQ12-15는 제4 DQ 그룹(243c_4)으로, DQ16-19는 제5 DQ 그룹(243c_5)으로, DQ20-23은 제6 DQ 그룹(243c_6)으로, DQ24-27은 제7 DQ 그룹(243c_7)으로, DQ28-31는 제8 DQ 그룹(243c_8)으로 그룹화될 수 있다. 따라서, 에러 정정 모드에서 메모리 컨트롤러는 DRAM 칩(242c)을 제1 DQ 그룹(243c_1)을 DQ 접속기로 가지는 x4 DQ 메모리 칩, 제2 DQ 그룹(243c_2)을 DQ 접속기로 가지는 x4 DQ 메모리 칩, 제3 DQ 그룹(243c_3)을 DQ 접속기로 가지는 x4 DQ 메모리 칩, 제4 DQ 그룹(243c_4)을 DQ 접속기로 가지는 x4 DQ 메모리 칩, 제5 DQ 그룹(243c_5)을 DQ 접속기로 가지는 x4 DQ 메모리 칩, 제6 DQ 그룹(243c_6)을 DQ 접속기로 가지는 x4 DQ 메모리 칩, 제7 DQ 그룹(243c_7)을 DQ 접속기로 가지는 x4 DQ 메모리 칩 및 제8 DQ 그룹(243c_8)을 DQ 접속기로 가지는 x4 DQ 메모리 칩으로 인식할 수 있고, DRAM 칩(242c)의 데이터 버스 폭이 32bit임에도 불구하고, DRAM 칩(242c)에는 4bit 단위로 수행되는 에러 정정 알고리즘이 구현될 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 메모리 모듈(200)을 나타낸다.
메모리 모듈(200)은 하나의 메모리 랭크를 포함할 수 있고, 데이터 버스 폭 8bit의 DRAM 칩들(242_0~8)을 9개 포함할 수 있다. 메모리 모듈(200)은 SPD 칩(220)을 포함할 수 있다. DRAM 칩들(242_0~8) 중 하나의 DRAM 칩(242_4)은 ECC(Error Correction Code)를 포함하는 ECC 메모리 칩일 수 있다. ECC 메모리 칩(242_4)은 Parity 데이터 및 CRC 데이터를 포함할 수 있다.
각각의 DRAM 칩들(242_0~8)은 8개의 DQ 접속기를 포함하는 입출력 패드를 통해 메모리 컨트롤러와 데이터를 송수신할 수 있다. 8개의 DQ 접속기(DQ0-7)를 통해 입출력되는 데이터에 대해 4bit 단위로 수행되는 에러 정정 알고리즘을 수행하기 위해, DQ 접속기(DQ0-7)는 두 개의 DQ 그룹으로 그룹화될 수 있다. 각각의 DRAM 칩들(242_0~8)의 DQ 접속기(DQ0-7)는 DQ0-3을 포함하는 제1 DQ 그룹 및 DQ4-7을 포함하는 제2 DQ 그룹으로 그룹화될 수 있다. 특히, ECC 메모리 칩(242_4)은 Parity 데이터가 입출력 되는 패리티 DQ 그룹과 CRC 데이터가 입출력 되는 CRC DQ 그룹으로 그룹화될 수 있다. SPD 칩(220)은 각각의 x8 DRAM 칩들(242_0~242_8)이 2개의 DQ 그룹으로 그룹화되었다는 DQ 그룹화 정보(DQG_INFO)를 저장할 수 있고, 에러 정정 모드에서 DQ 그룹화 정보(DQG_INFO)를 메모리 컨트롤러에 제공할 수 있다. DQ 접속기의 그룹화에 따라, 메모리 컨트롤러는 에러 정정 모드에서 각각의 DRAM 칩들(242_0~8)을 총 18개의 DQ 메모리 칩들(DQ MC1~DQ MC18)으로 인식할 수 있다. 메모리 컨트롤러는 각각의 DQ 메모리 칩들(DQ MC1~DQ MC18)이 4bit의 데이터 버스 폭을 가진 것으로 인식할 수 있고, 4bit 단위로 수행되는 에러 정정 알고리즘을 구현할 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 DQ 그룹 관리부(421)을 나타낸다.
도 7은 도 6의 메모리 모듈에 대응하는 메모리 컨트롤러 내의 DQ 그룹 관리부(421)를 나타낼 수 있다. DQ 그룹 관리부(421)는 DQ 그룹을 관리하기 위한 DQ 그룹 관리 정보를 포함할 수 있다. DQ 그룹 관리 정보는 DQ 그룹화에 따른 DQ 그룹의 주소 정보를 나타내는 DQ 그룹 어드레스 정보(DQG ADDR)를 포함할 수 있다. DQ 그룹 어드레스 정보(DQG ADDR)는 각각의 메모리 칩을 복수의 DQ 메모리 칩으로 인식하기 위해 각각의 DQ 그룹에 포함된 DQ 접속기에 대응되는 메모리의 어드레스 정보를 나타낼 수 있다. 예를 들어, DRAM Chip_0이 두 개의 DQ 그룹으로 그룹화 된 경우, 첫 번째 DQ 그룹에 해당하는 어드레스를 ADDR_0_DQG1으로, 두 번째 DQ 그룹에 해당하는 어드레스를 ADDR_0_DQG2로 저장할 수 있다. 또한 예를 들어, DRAM Chip_8이 두 개의 DQ 그룹으로 그룹화 된 경우, 첫 번째 DQ 그룹에 해당하는 어드레스를 ADDR_8_DQG1으로, 두 번째 DQ 그룹에 해당하는 어드레스를 ADDR_8_DQG2로 저장할 수 있다. ECC 엔진(420)은 DQG 어드레스 정보(DQG ADDR)를 기초로 x8 DRAM 칩을 두 개의 x4 DQ 메모리 칩으로 인식할 수 있고, 4 bit 단위로 수행되는 에러 정정 알고리즘을 구현할 수 있다.
DQ 그룹 관리부(421)가 저장하는 DQ 그룹 관리 정보는 맵핑 테이블(MAPPING TABLE; 424)을 포함할 수 있다. 맵핑 테이블(424)은 에러 정정 모드에서 메모리 컨트롤러의 캐시 라인을 채울 데이터의 정보와 DQ 그룹의 어드레스를 매칭시킨 테이블일 수 있다. 예를 들어, 도 6과 연계하면, 패리티 정보는 DRAM Chip_4(242_4)에 저장되기 때문에 Parity DRAM 칩(PD)으로 인식할 DQ 그룹이 존재하는 어드레스에 DRAM Chip_4(242_4)의 제1 DQ 그룹(패리티 DQ 그룹)의 어드레스인 ADDR_4_DQG1을 매칭시킬 수 있다. 또한, CRC 정보는 DRAM Chip_4(424_4)에 저장되기 때문에 CRC DRAM 칩(CD)으로 인식할 DQ 그룹(CRC DQ 그룹)이 존재하는 어드레스에 DRAM Chip_4(242_4)의 제2 DQ 그룹의 어드레스인 ADDR_4_DQG2를 매칭시킬 수 있다. 데이터는 나머지 DRAM Chip들에 저장되기 때문에 순차적으로 어드레스를 매칭시킬 수 있다. 예를 들어, 첫 데이터 디바이스(DD_1)으로 인식할 DQ 그룹이 존재하는 어드레스에 DRAM Chip_0(242_0)의 제1 DQ 그룹의 어드레스인 ADDR_0_DQG1을 매칭시키고, 마지막 데이터 디바이스(DD_16)으로 인식할 DQ 그룹이 존재하는 어드레스에 DRAM Chip_8(242_8)의 제2 DQ 그룹의 어드레스인 ADDR_8_DQG2를 매칭시킬 수 있다. 메모리 컨트롤러는 맵핑 테이블(424)에 기초하여 에러 정정 모드에서 캐시 라인을 4bit 단위로 나누어 채울 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 도 6의 메모리 모듈에 에러 정정 알고리즘이 수행되는 데이터 구조를 나타낸다. 도 3과 비교하면, 각각의 메모리 칩의 데이터 버스 폭이 8bit이기 때문에, DQ 그룹화 없이는 4bit 단위로 수행되는 에러 정정 알고리즘을 구현하기 어려울 수 있다. 이 문제를 해결하기 위해 도 6 및 도 7과 같이 DQ 그룹화를 한다면, 각각의 메모리 칩의 DQ 접속기를 두 개의 DQ 그룹으로 그룹화 한다면, 메모리 컨트롤러는 하나의 메모리 칩을 2개의 x4 DQ 메모리 칩으로 인식할 수 있다. DQ 그룹화에 따라 메모리 컨트롤러가 x8 메모리 칩을 두 개의 x4 DQ 메모리 칩으로 인식하게 된다면, 메모리 컨트롤러의 ECC 엔진은 4bit 단위로 수행되는 에러 정정 알고리즘을 구현해낼 수 있다. 에러 정정 수행에 따라 DD_11에 발생한 에러를 정정하는 방법은 도 3 및 도 4를 통해 설명된 방식과 동일한 것으로 이해될 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 메모리 모듈(200)을 나타낸다.
메모리 모듈(200)은 하나의 메모리 랭크를 포함할 수 있고, 데이터 버스 폭 16bit의 DRAM 칩들(242_0, 242_1, 242_3, 242_4) 및 데이터 버스 폭 8bit의 DRAM 칩(242_2)을 포함할 수 있다. 메모리 모듈(200)은 SPD 칩(220)을 포함할 수 있다. 데이터 버스 폭 8bit의 x8 DRAM 칩(242_2)은 ECC(Error Correction Code)를 포함하는 ECC 메모리 칩일 수 있다. ECC 메모리 칩(242_2)은 Parity 데이터 및 CRC 데이터를 포함할 수 있다.
각각의 DRAM 칩들(242_0~4)은 8개 또는 16개의 DQ 접속기를 포함하는 입출력 패드를 통해 메모리 컨트롤러와 데이터를 송수신할 수 있다. 4bit 단위로 수행되는 에러 정정 알고리즘을 수행하기 위해, 8개로 이루어진 DQ 접속기(DQ0-7)는 두 개의 DQ 그룹으로 그룹화될 수 있으며, 16개로 이루어진 DQ 접속기(DQ0-15)는 네 개의 DQ 그룹으로 그룹화될 수 있다. 각각의 x16 DRAM 칩들(242_0, 242_1, 242_2, 242_3)의 DQ 접속기(DQ0-15)는 DQ0-3을 포함하는 제1 DQ 그룹, DQ4-7을 포함하는 제2 DQ 그룹, DQ8-11을 포함하는 제3 DQ 그룹 및 DQ12-15를 포함하는 제4 DQ 그룹으로 그룹화될 수 있다. x8 DRAM 칩(242_2)은 DQ0-3을 포함하는 제1 DQ 그룹 및 DQ4-7을 포함하는 제2 DQ그룹으로 그룹화될 수 있다. 특히, ECC 메모리 칩(242_2)은 Parity 데이터가 입출력 되는 패리티 DQ 그룹과 CRC 데이터가 입출력 되는 CRC DQ 그룹으로 그룹화될 수 있다. SPD 칩(220)은 각각의 x16 DRAM 칩들(242_0, 242_1, 242_2, 242_3)이 4개의 DQ 그룹으로 그룹화 되었다는 정보와 x8 DRAM 칩(242_2)이 2개의 DQ 그룹으로 그룹화되었다는 정보를 DQ 그룹화 정보(DQG_INFO)로 저장할 수 있고, 에러 정정 모드에서 DQ 그룹화 정보(DQG_INFO)를 메모리 컨트롤러에 제공할 수 있다. DQ 접속기의 그룹화에 따라, 메모리 컨트롤러는 에러 정정 모드에서 각각의 DRAM 칩들(242_0~4)을 총 18개의 DQ 메모리 칩들(DQ MC1~DQ MC18)으로 인식할 수 있다. 메모리 컨트롤러는 각각의 DQ 메모리 칩들(DQ MC1~DQ MC18)이 4bit의 데이터 버스 폭을 가진 것으로 인식할 수 있고, 4bit 단위로 수행되는 에러 정정 알고리즘을 구현할 수 있다. 도 9를 참조하면, DQ 그룹화를 활용할 때, 더 낮은 정정 데이터 폭의 에러 정정 알고리즘을 구현할 수 있다는 점 이외에도 하나의 메모리 모듈(200)에 다른 데이터 버스 폭 특성을 갖는 DRAM Chip들을 내장할 수 있다는 장점이 있을 수 있다. 특히, 일반 데이터 저장용 DRAM 칩들(242_0, 242_1, 242_3, 242_4)과 ECC 저장용 DRAM 칩(242_2)의 데이터 버스 폭을 달리 구성할 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 도 9의 메모리 모듈에 에러 정정 알고리즘이 수행되는 데이터 구조를 나타낸다. 도 3과 비교하면, ECC 메모리 칩의 데이터 버스 폭은 8bit, 나머지 메모리 칩의 데이터 버스 폭이 16bit이기 때문에 DQ 그룹화 없이는 4bit 단위로 수행되는 에러 정정 알고리즘을 구현하기 어려울 수 있다. 이 문제를 해결하기 위해 도 9와 같이 각각의 메모리 칩의 DQ 접속기를 두 개 내지는 네 개의 DQ 그룹으로 그룹화 한다면, 메모리 컨트롤러는 하나의 메모리 칩을 복수 개의 x4 DQ 메모리 칩으로 인식할 수 있다. DQ 그룹화에 따라 메모리 컨트롤러가 x8 메모리 칩과 x16 메모리 칩들을 x4 DQ 메모리 칩으로 인식하게 된다면, 메모리 컨트롤러의 ECC 엔진은 4bit 단위로 수행되는 에러 정정 알고리즘을 구현해낼 수 있다. 에러 정정 수행에 따라 DD_11에 발생한 에러를 정정하는 방법은 도 3 및 도 4를 통해 설명된 방식과 동일한 것으로 이해될 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 메모리 모듈(200)을 나타낸다.
메모리 모듈(200)은 하나의 메모리 랭크를 포함할 수 있고, 데이터 버스 폭 4bit의 DRAM 칩들 및 데이터 버스 폭 8bit의 DRAM 칩(242)을 포함할 수 있다. 메모리 모듈(200)은 SPD 칩(220)을 포함할 수 있다. 데이터 버스 폭 8bit의 x8 DRAM 칩(242)은 ECC(Error Correction Code)를 포함하는 ECC 메모리 칩일 수 있다. ECC 메모리 칩(242)은 Parity 및 CRC를 포함할 수 있다.
각각의 x4 DRAM 칩들은 4개의 DQ 접속기를 포함하는 입출력 패드를 통해 메모리 컨트롤러와 데이터를 송수신할 수 있고, X8 DRAM 칩은 8개의 DQ 접속기를 포함하는 입출력 패드를 통해 메모리 컨트롤러와 데이터를 송수신할 수 있다. 4bit 단위로 수행되는 에러 정정 알고리즘을 수행하기 위해, 8개로 이루어진 DQ 접속기(DQ0-7)는 두 개의 DQ 그룹으로 그룹화될 수 있다. x8 DRAM 칩(242)은 DQ0-3을 포함하는 제1 DQ 그룹 및 DQ4-7을 포함하는 제2 DQ그룹으로 그룹화될 수 있다. SPD 칩(220)은 x8 DRAM 칩(242)이 2개의 DQ 그룹으로 그룹화되었다는 정보를 DQ 그룹화 정보(DQG_INFO)로 저장할 수 있고, 에러 정정 모드에서 DQ 그룹화 정보(DQG_INFO)를 메모리 컨트롤러에 제공할 수 있다. DQ 접속기의 그룹화에 따라, 메모리 컨트롤러는 에러 정정 모드에서 x8 DRAM 칩(242)을 2개의 DQ 메모리 칩으로 인식할 수 있다. 메모리 컨트롤러는 모든 메모리 칩들이 4bit의 데이터 버스 폭을 가진 것으로 인식할 수 있고, 4bit 단위로 수행되는 에러 정정 알고리즘을 구현할 수 있다.
도 11을 참조하면, DQ 그룹화를 활용할 때, 더 낮은 정정 데이터 폭의 에러 정정 알고리즘을 구현할 수 있다는 점 이외에도 하나의 메모리 모듈(200)에 다른 데이터 버스 폭 특성을 갖는 DRAM Chip들을 내장할 수 있다는 장점이 있을 수 있다. 특히, 일반 데이터 저장용 x4 DRAM 칩들보다 큰 데이터 버스 폭 특성을 갖는 ECC 저장용 DRAM 칩(242)을 내장할 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 도 11의 메모리 모듈에 에러 정정 알고리즘이 수행되는 데이터 구조를 나타낸다. 도 3과 비교하면, ECC 메모리 칩의 데이터 버스 폭이 8bit이기 때문에 DQ 그룹화 없이는 4bit 단위로 수행되는 에러 정정 알고리즘을 구현하기 어려울 수 있다. 이 문제를 해결하기 위해 도 11과 같이 ECC 메모리 칩의 DQ 접속기를 두 개의 DQ 그룹으로 그룹화 한다면, 메모리 컨트롤러는 ECC 메모리 칩을 2개의 x4 DQ 메모리 칩으로 인식할 수 있다. DQ 그룹화에 따라 메모리 컨트롤러가 x8 메모리 칩을 2개의 x4 DQ 메모리 칩으로 인식하게 된다면, 메모리 컨트롤러의 ECC 엔진은 4bit 단위로 수행되는 에러 정정 알고리즘을 구현해낼 수 있다. 에러 정정 수행에 따라 DD_11에 발생한 에러를 정정하는 방법은 도 3 및 도 4를 통해 설명된 방식과 동일한 것으로 이해될 수 있다.
도 13은 본 개시의 예시적 실시예에 따른 메모리 모듈(200)을 나타낸다.
메모리 모듈(200)이 2개의 ECC용 DRAM Chip(242_1, 242_2)을 포함한다는 점 이외에는 도 11에 개시된 메모리 모듈과 구성이 동일한 것으로 이해할 수 있다. 도면에 도시되지는 않았지만, 메모리 모듈(200)은 에러 정정 모드에서 메모리 컨트롤러에 DQ 그룹화 정보(DQG_INFO)를 제공하는 SPD 칩을 포함할 수 있다.
메모리 칩들이 DDR5(Double Data Rate 5) 이상의 표준을 따르게 되는 경우, ECC 동작을 수행하기 위해 메모리 모듈(200)은 Parity 데이터 칩 및 CRC 데이터 칩을 각각 두 개씩 필요로 할 수 있다. ECC 용 메모리 칩을 4개 구비하게 되면 비용(cost) 측면에서 불리할 수 있다.
도 13을 참조하면, 메모리 모듈(200)은 2개의 ECC용 DRAM Chip(242_1, 242_2)을 포함할 수 있다. 제1 x8 DRAM Chip(242_1)은 제1 ECC 메모리 칩일 수 있고, 제1 패리티 데이터와 제1 CRC 데이터를 포함할 수 있다. 제1 메모리 칩(242_1)의 DQ 접속기(DQ0-7)는 두 개의 DQ 그룹으로 그룹화될 수 있고, 각각의 DQ 그룹은 패리티 데이터가 입출력되는 제1 패리티 DQ 그룹 및 CRC 데이터가 입출력되는 제1 CRC DQ 그룹을 포함할 수 있다. 제2 x8 DRAM Chip(242_2)은 제2 ECC 메모리 칩일 수 있고, 제2 패리티 데이터와 제2 CRC 데이터를 포함할 수 있다. 제2 메모리 칩(242_1)의 DQ 접속기(DQ0-7)는 두 개의 DQ 그룹으로 그룹화될 수 있고, 각각의 DQ 그룹은 패리티 데이터가 입출력되는 제2 패리티 DQ 그룹 및 CRC 데이터가 입출력되는 제2 CRC DQ 그룹을 포함할 수 있다.
DQ 그룹을 활용하게 되면, ECC 용 메모리 칩을 4개를 구비해야 함에도 불구하고, 2개의 DRAM Chip만을 이용해 같은 효과를 얻을 수 있기 때문에 비용 측면에서 이득을 얻을 수 있다.
도 14는 본 개시의 예시적 실시예에 따른 메모리 모듈(200)을 나타낸다.
메모리 모듈(200)은 하나의 메모리 랭크를 포함할 수 있고, 데이터 버스 폭 16bit의 DRAM 칩들(242_0~242_4)을 포함할 수 있다. 메모리 모듈(200)은 SPD 칩(220)을 포함할 수 있다. X16 DRAM 칩들 중 하나의 DRAM 칩(242_2)은 ECC(Error Correction Code)를 포함하는 ECC 메모리 칩일 수 있다. ECC 메모리 칩(242_2)은 Parity 데이터 및 CRC 데이터를 포함할 수 있다.
각각의 x16 DRAM 칩들(242_0~242_4)은 16개의 DQ 접속기를 포함하는 입출력 패드를 통해 메모리 컨트롤러와 데이터를 송수신할 수 있다. 4bit 단위로 수행되는 에러 정정 알고리즘을 수행하기 위해, 16개로 이루어진 DQ 접속기(DQ0-15)는 네 개의 DQ 그룹으로 그룹화될 수 있다. x16 DRAM 칩들(242_0~242_4)은 DQ0-3을 포함하는 제1 DQ 그룹, DQ4-7을 포함하는 제2 DQ그룹, DQ8-11을 포함하는 제3 DQ그룹 및 DQ12-15를 포함하는 제4 DQ그룹으로 그룹화될 수 있다. SPD 칩(220)은 x16 DRAM 칩들(242_0~242_4) 각각이 4개의 DQ 그룹으로 그룹화되었다는 정보 및 그룹화와 관련된 정보들을 DQ 그룹화 정보(DQG_INFO)에 저장할 수 있고, 에러 정정 모드에서 DQ 그룹화 정보(DQG_INFO)를 메모리 컨트롤러에 제공할 수 있다. DQ 접속기의 그룹화에 따라, 메모리 컨트롤러는 에러 정정 모드에서 x16 DRAM 칩들(242_0~242_4) 각각을 4개의 DQ 메모리 칩으로 인식할 수 있다. 메모리 컨트롤러는 모든 메모리 칩들이 4bit의 데이터 버스 폭을 가진 것으로 인식할 수 있고, 4bit 단위로 수행되는 에러 정정 알고리즘을 구현할 수 있다.
도 14를 참조하면, ECC DRAM 칩(242_2)의 제1 DQ 그룹은 Parity 데이터를 저장하는 패리티 DQ 그룹일 수 있고, 제2 DQ 그룹은 CRC 데이터를 저장하는 CRC DQ 그룹일 수 있고, 제3 DQ 그룹 및 제4 DQ 그룹은 비어있는 스페어 DQ 그룹(Spare DQ Group)일 수 있다. 스페어 DQ 그룹은 다른 DRAM 칩의 일부 메모리에 불량이 발생한 경우 불량인 메모리를 대체하는 역할을 수행할 수 있다.
예를 들어, 제1 x16 DRAM 칩(242_1)의 제4 DQ 그룹은 메모리 컨트롤러에 의해 인식되는 제8 DQ 디바이스(DD_8)일 수 있다. 만약 제1 x16 DRAM 칩(242_1)의 제4 DQ 그룹에 불량이 발생한 경우, 그 제4 DQ 그룹의 메모리가 수행하던 역할을 스페어 DQ 그룹의 메모리가 대체 수행할 수 있다. 이러한 대체를 위해, 메모리 컨트롤러는 스페어 DQ 그룹에 대한 스페어 정보를 미리 저장하고 있을 수 있다. 메모리 컨트롤러는 스페어 정보에 기초하여, 제1 x16 DRAM 칩(242_1)의 제4 DQ 그룹으로 지정되어 있던 어드레스를 제2 x16 DRAM 칩(242_2)의 제3 DQ 그룹으로 변경할 수 있다. 또한 예를 들어, 제4 x16 DRAM 칩(242_4)의 제3 DQ 그룹은 메모리 컨트롤러에 의해 인식되는 제15 DQ 디바이스(DD_15)일 수 있다. 만약 제4 x16 DRAM 칩(242_4)의 제3 DQ 그룹에 불량이 발생한 경우, 그 제3 DQ 그룹의 메모리가 수행하던 역할을 스페어 DQ 그룹의 메모리가 대체 수행할 수 있다. 이러한 대체를 위해, 메모리 컨트롤러는 스페어 정보에 기초하여 제4 x16 DRAM 칩(242_4)의 제3 DQ 그룹으로 지정되어 있던 어드레스를 제2 x16 DRAM 칩(242_2)의 제4 DQ 그룹으로 변경할 수 있다. 즉, DQ 그룹화를 이용한다면, 하나의 DRAM 칩 내부에 스페어 DQ 그룹을 지정할 수 있고, 그에 따라 일부 DQ 그룹들에 불량이 발생한 경우, 불량이 발생한 DQ 그룹들을 스페어 DQ 그룹으로 순차적으로 대체할 수 있다. 이에 따라 장치의 RAS(Reliability, Availability, Serviceability) feature를 구현할 수 있다.
도 15는 본 개시의 예시적 실시예에 따른 DQ 그룹 관리부(421)을 나타낸다.
도 15는 도 14의 메모리 모듈에 대응하는 메모리 컨트롤러 내의 DQ 그룹 관리부(421)를 나타낼 수 있다. DQ 그룹 관리부(421)는 DQ 그룹화에 따라 DQ 그룹을 관리하기 위한 DQ 그룹 관리 정보를 저장할 수 있다. DQ 그룹 관리 정보는 DQ 그룹의 주소 정보를 나타내는 DQ 그룹 어드레스 정보(DQG ADDR)를 포함할 수 있다. ECC 엔진(420)은 DQG 어드레스 정보(DQG ADDR)를 기초로 x16 DRAM 칩을 네 개의 x4 DQ 메모리 칩으로 인식할 수 있고, 4 bit 단위로 수행되는 에러 정정 알고리즘을 구현할 수 있다.
DQ 그룹 관리부(421)가 저장하는 DQ 그룹 관리 정보는 맵핑 테이블(424)을 포함할 수 있다. 맵핑 테이블(424)은 에러 정정 모드에서 메모리 컨트롤러의 캐시 라인을 채울 데이터의 정보와 DQ 그룹의 어드레스를 매칭시킨 테이블일 수 있다. 예를 들어, 도 13을 참조하면, Parity 데이터는 제3 DRAM Chip(242_2)에 저장되기 때문에 Parity DRAM 칩(PD)으로 인식할 DQ 그룹(패리티 DQ 그룹)이 존재하는 어드레스에 제3 DRAM Chip(242_2)의 제1 DQ 그룹의 어드레스인 ADDR_2_DQG1을 매칭시킬 수 있다. 또한, CRC 데이터는 제2 DRAM Chip(424_2)에 저장되기 때문에 CRC DRAM 칩(CD)으로 인식할 DQ 그룹(CRC DQ 그룹)이 존재하는 어드레스에 제3 DRAM Chip(242_2)의 제2 DQ 그룹의 어드레스인 ADDR_2_DQG2를 매칭시킬 수 있다. 데이터는 나머지 DRAM Chip들에 저장되기 때문에 순차적으로 어드레스를 매칭시킬 수 있다. 예를 들어, 첫 데이터 디바이스(DD_1)으로 인식할 DQ 그룹이 존재하는 어드레스에 제10 DRAM Chip(242_0)의 제1 DQ 그룹의 어드레스인 ADDR_0_DQG1을 매칭시키고, 마지막 데이터 디바이스(DD_16)으로 인식할 DQ 그룹이 존재하는 어드레스에 제4 DRAM Chip(242_4)의 제4 DQ 그룹의 어드레스인 ADDR_4_DQG4를 매칭시킬 수 있다. 메모리 컨트롤러는 맵핑 테이블(424)에 기초하여 에러 정정 모드에서 캐시 라인을 4bit 단위로 나누어 채울 수 있다.
도 14 및 도 15를 참조하면, 만약 DD_8에 불량이 발생하면, 제2 DRAM Chip에 존재하는 스페어 DQ 그룹인 제3 DQ 그룹의 어드레스로 대체해야 할 수 있다. 따라서, 메모리 컨트롤러는 맵핑 테이블(424) 내의 DD_8에 매칭되는 어드레스를 AADR_1_DQG4에서 ADDR_2_DQG3로 변경할 수 있다. 또한 예를 들어, 만약 DD_15에 불량이 발생하면, 제2 DRAM Chip에 존재하는 스페어 DQ 그룹인 제4 DQ 그룹의 어드레스로 대체해야 할 수 있다. 따라서, 메모리 컨트롤러는 맵핑 테이블(424) 내의 DD_15에 매칭되는 어드레스를 ADDR_2_DQG4로 변경할 수 있다.
도 16은 본 개시의 예시적 실시예에 따른 메모리 모듈(200)을 나타낸다.
메모리 모듈(200)은 하나의 메모리 랭크를 포함할 수 있고, x8 DRAM 칩들(242_0~242_3), x16 DRAM 칩(242_4) 및 x32 DRAM 칩(242_5)을 포함할 수 있다. 메모리 모듈(200)은 SPD 칩(220)을 포함할 수 있다. X16 DRAM 칩(242_4)은 ECC(Error Correction Code)를 포함하는 ECC 메모리 칩일 수 있다. ECC 메모리 칩(242_4)은 Parity 데이터 및 CRC 데이터를 포함할 수 있다.
각각의 x8 DRAM 칩들(242_0~242_3)은 8개의 DQ 접속기를 포함하는 입출력 패드를 통해, x16 DRAM 칩(242_4)은 16개의 DQ 접속기 및 DQS 접속기를 포함하는 입출력 패드를 통해, 그리고 x32 DRAM 칩(242_5)은 32개의 DQ 접속기 및 DQS 접속기를 포함하는 입출력 패드를 통해 메모리 컨트롤러와 데이터를 송수신할 수 있다. 4bit 단위로 수행되는 에러 정정 알고리즘을 수행하기 위해, 8개로 이루어진 DQ 접속기(DQ0-7)는 두 개의 DQ 그룹으로, 16개로 이루어진 DQ 접속기(DQ0-15)는 네 개의 DQ 그룹으로, 32개로 이루어진 DQ 접속기(DQ0-31)는 8개의 DQ 그룹으로 그룹화될 수 있다. SPD 칩(220)은 x8 DRAM 칩들(242_0~242_3) 각각이 2개의 DQ 그룹으로, x16 DRAM 칩(242_4)이 4개의 DQ 그룹으로, x32 DRAM 칩(242_5)이 8개의 DQ 그룹으로 그룹화되었다는 정보를 DQ 그룹화 정보(DQG_INFO)에 저장할 수 있고, 에러 정정 모드에서 DQ 그룹화 정보(DQG_INFO)를 메모리 컨트롤러에 제공할 수 있다. DQ 접속기의 그룹화에 따라, 메모리 컨트롤러는 모든 메모리 칩들이 4bit의 데이터 버스 폭을 가진 것으로 인식할 수 있고, 4bit 단위로 수행되는 에러 정정 알고리즘을 구현할 수 있다.
도 16을 참조하면, 메모리 모듈(200)에 포함되는 ECC 메모리 칩(242_4)과 데이터가 저장되는 메모리 칩들(242_0-3, 242_5)은 다른 데이터 버스 폭을 가질 수 있다. 또한, 데이터가 저장되는 메모리 칩들도 다른 데이터 버스 폭을 가질 수 있다. 이렇게 DQ 그룹화 방법을 이용한다면, 데이터 버스 폭이 다른 메모리 칩들로 메모리 모듈(200)을 구성할 수 있다. 뿐만 아니라, x16 DRAM 칩(242_4)과 같이 DQ 그룹의 일부를 스페어 DQ그룹들(243_1, 243_2)로 활용하여, 다른 DRAM 칩들의 일부분에 불량이 발생한 경우 이를 대체하여 사용할 수 있다.
도 17은 본 개시의 예시적 실시예에 따른 메모리 시스템(20)을 나타낸다.
메모리 시스템(20)은 메모리 모듈(600) 및 메모리 컨트롤러(800)를 포함할 수 있다. 메모리 모듈(600) 및 메모리 컨트롤러(800)는 BUS(700)를 통해 각종 신호(DQ, DQS, CLK 등)를 송수신할 수 있다.
메모리 모듈(600)은 복수의 메모리 랭크를 포함할 수 있으며, 단일 메모리 랭크를 포함할 수도 있다. 도면에는 메모리 모듈(600)이 하나의 메모리 랭크를 포함하는 것으로 도시되어 있지만, 이에 제한되는 것은 아니다. 메모리 모듈(600)은 복수의 메모리 칩들(642_1~n)을 포함할 수 있다. 메모리 모듈(600)은 SPD 칩(미도시)을 포함할 수 있다. 복수의 메모리 칩들(642_1~n)은 8bit의 데이터 버스 폭을 갖는 x8 DRAM 칩일 수 있다. 하지만 이에 제한되는 것은 아니다. 예를 들어, 복수의 메모리 칩들(642_1~n)은 4bit 또는 16bit의 데이터 버스 폭을 갖는 DRAM 칩일 수 있으며, 복수의 메모리 칩들(642_1~n)은 서로 다른 데이터 버스 폭을 갖는 메모리 칩일 수도 있다. 설명의 편의를 위해, 도면에 도시되어 있는 것과 같이 복수의 메모리 칩들(642_1~n)이 모두 8bit의 데이터 버스 폭을 갖는 x8 DRAM 칩이라 가정하에 이하의 내용이 설명될 수 있다.
각각의 메모리 칩들(642_1~n)은 8bit의 데이터 버스 폭을 갖기 때문에, 메모리 컨트롤러(800)가 4bit 단위로 수행되는 에러 정정 알고리즘을 구현하기 어려울 수 있다. 따라서 메모리 컨트롤러는 각각의 메모리 칩들(642_1~n)의 DQ 접속기를 2개의 DQ 그룹으로 그룹화할 수 있다. 제1 메모리 칩(642_1)의 8개의 DQ 접속기는 제1 DQ 그룹 및 제2 DQ 그룹으로 그룹화될 수 있다. 이 때, 제1 메모리 칩(642_1)은 각각의 DQ 그룹과 연결되는 추가 DQS 접속기들(Added DQS Contact Poin; ADQS0, ADQS1)을 포함할 수 있다. 추가 DQS 접속기는 핀으로 이루어질 수 있고, ‘핀’이라는 용어는 집적 회로 등에 대한 전기적 상호 접속을 폭넓게 가리키는 것으로서, 예를 들어 패드 또는 집적 회로 상의 다른 전기적 접촉점을 포함할 수 있다. 마찬가지로, 제2 메모리 칩(642_2)의 DQ 접속기들도 두 개의 DQ 그룹으로 그룹화될 수 있으며, 제2 메모리 칩(642_2)은 추가 DQS 접속기들(ADQS2, ADQS3)을 포함할 수 있다. SPD 칩(미도시)은 각 메모리 칩들(642_1~n)의 DQ 그룹화 정보(DQG_INFO)를 저장할 수 있으며, 에러 정정 모드에서 DQ 그룹화 정보(DQG_INFO)를 메모리 컨트롤러(800)에 제공할 수 있다.
메모리 컨트롤러(800)는 에러 검출 및 에러 정정 기능을 수행하는 ECC 엔진(820)을 포함할 수 있다. ECC 엔진(820)은 추가 DQS 접속기들(ADQS0, 1, 2…)에 대한 정보를 저장할 수 있다. 에러 정정 모드에서, ECC 엔진(820)은 추가 DQS 정보(ADQS Info)를 기초로 각각의 메모리 칩들(642_1~n)을 두 개의 4bit의 데이터 버스 폭을 가진 DQ 메모리 칩으로 인식할 수 있다. 이에 따라, ECC 엔진(820)은 4bit 단위로 수행되는 에러 정정 알고리즘을 메모리 모듈(600)에 구현할 수 있다. 에러 정정 알고리즘의 방법 및 메모리 모듈(600)과 메모리 컨트롤러(800)의 동작에 관해서는 도 1을 참조해 설명된 방식과 동일한 것으로 이해될 수 있다.
도 18은 메모리 모듈의 메모리 칩이 DQ 그룹화 되었을 때, 메모리 컨트롤러가 에러 정정 기능을 수행하는 순서도를 나타낸 것이다.
메모리 컨트롤러는 DRAM 칩의 데이터 버스 폭이 에러 정정 알고리즘을 수행하는 단위가 되는 정정 데이터 폭과 동일한지 판단할 수 있다(S220). DRAM 칩의 데이터 버스 폭이 정정 데이터 폭과 같지 않은 경우, 메모리 컨트롤러는 DRAM 칩에 대해 DQ 그룹화를 실행할 수 있다(S230). 만약, DRAM 칩의 데이터 버스 폭이 정정 데이터 폭과 같다면, 메모리 컨트롤러는 별도의 DQ 그룹화 과정 필요 없이 에러 정정을 실행할 수 있다(S240).
도 19는 본 개시의 예시적 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 데이터 처리 시스템(900)은 데이터 서버(910) 및 하나 이상의 클라이언트 컴퓨터들(921, 922)을 포함할 수 있다. 데이터 서버(910) 및 하나 이상의 클라이언트 컴퓨터들(921, 922)은 인터넷 또는 Wi-Fi 등의 다양한 네트워크를 통해 상호 연결될 수 있다. 데이터 서버(910)는 데이터 센터, 인터넷 데이터 센터 또는 클라우드 데이터 센터 등에 해당할 수 있다.
데이터 서버(910)는 데이터베이스(911) 및 호스트(912)를 포함할 수 있다. 데이터베이스(911)는 전술한 실시예들에 따른 반도체 메모리 장치를 포함할 수 있으며, 일 예로서 데이터베이스(911)는 전술한 실시예들에 따른 다수의 DRAM 모듈들(911_1)을 포함할 수 있다. 즉, 전술한 실시예들에서의 반도체 메모리 장치 및 메모리 컨트롤러는 서버 시스템에 이용될 수 있다. 또한, 호스트(912)는 데이터베이스(911)에 데이터를 저장하고, 데이터베이스(911)로부터 데이터를 독출하여 클라이언트 컴퓨터들(921, 922)로 제공할 수 있다.
호스트(912)는 전술한 실시예들에 따른 메모리 컨트롤러를 포함할 수 있다. 이에 따라, 호스트(912)는 데이터와 함께 에러 검출 및 정정에 이용되는 패리티 정보를 생성하여 데이터베이스(911)에 더 저장할 수 있다. 일 실시예에 따라, 데이터베이스(911)에 구비되는 메모리 모듈들(911_1) 각각은 다수 개의 DRAM 칩들을 포함할 수 있고, 호스트(912)는 DRAM 칩들의 데이터 버스 폭이 정정 데이터 폭보다 큰 경우 DRAM 칩들을 DQ 그룹화 한 뒤, DQ 그룹에 대한 정보, 예를 들어 DQ 그룹의 어드레스 정보 등을 저장할 수 있다.
데이터베이스(911)에 대한 독출 동작을 통해, 데이터, Parity 데이터 및 CRC 데이터 정보가 독출되어 호스트(912)로 제공될 수 있다. 호스트(912)는 수신된 정보들을 이용하여 에러가 발생된 DRAM 칩의 데이터를 복구할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 복수의 메모리 칩들의 DQ 그룹 관리 정보를 저장하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는,
    상기 복수의 메모리 칩들 각각의 DQ 접속기(DQ Contact Point)들과 연결되고, 상기 DQ 접속기들로 전송되는 데이터에 대해 데이터 정정 알고리즘을 수행(implement)하는 ECC 엔진; 및
    상기 DQ 접속기들을 정정 데이터 폭(Correction Data Width)의 사이즈를 갖는 DQ 그룹으로 그룹화하고, 상기 DQ 그룹을 관리하기 위한 상기 DQ 그룹 관리 정보를 저장하는 DQ 그룹 관리부를 포함하는 것을 특징으로 하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 메모리 컨트롤러는,
    에러 정정 모드에서, 상기 DQ 그룹 관리 정보에 기초하여 상기 복수의 메모리 칩들 각각을 상기 정정 데이터 폭과 같은 데이터 버스 폭(Data Bus Width)을 갖는 적어도 하나의 DQ 그룹 메모리 장치로 인식하고,
    상기 ECC 엔진은 상기 복수의 메모리 칩들 각각의 상기 DQ 접속기들 중에서 상기 DQ 그룹에 해당하는 상기 DQ 접속기들의 데이터에 대하여 상기 데이터 정정 알고리즘을 수행하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 복수의 메모리 칩들이 장착된 메모리 모듈을 더 포함하고,
    상기 복수의 메모리 칩들은 제1 데이터 버스 폭을 갖는 제1 메모리 칩을 포함하고,
    상기 제1 데이터 버스 폭은 상기 정정 데이터 폭의 N배(N은 2 이상의 자연수)이고,
    상기 메모리 컨트롤러는 상기 제1 메모리 칩의 DQ 접속기들을 N개의 DQ 그룹들로 그룹화하는 것을 특징으로 하는 메모리 시스템.
  4. 제3항에 있어서,
    상기 제1 메모리 칩은 패리티 데이터와 CRC(Cyclical Redundancy Code) 데이터를 저장하는 ECC 메모리 칩을 포함하고,
    상기 ECC 메모리 칩의 DQ 접속기들은 상기 패리티 데이터가 입출력 되는 패리티 DQ 그룹 및 상기 CRC 데이터가 입출력 되는 CRC DQ 그룹으로 그룹화되는 것을 특징으로 하는 메모리 시스템.
  5. 제3항에 있어서,
    상기 복수의 메모리 칩들은 제2 데이터 버스 폭을 갖는 제2 메모리 칩을 더 포함하고,
    상기 제2 데이터 버스 폭은 상기 정정 데이터 폭의 M배(M은 2 이상의 자연수)이고,
    상기 메모리 컨트롤러는 상기 제2 메모리 칩을 M개의 DQ 그룹들로 그룹화하는 것을 특징으로 하는 메모리 시스템.
  6. 제3항에 있어서,
    상기 N개의 DQ 그룹들은 스페어 DQ 그룹을 포함하고,
    상기 메모리 컨트롤러는 상기 스페어 DQ 그룹에 대한 스페어 정보를 저장하는 것을 특징으로 하는 메모리 시스템.
  7. 제6항에 있어서,
    상기 복수의 메모리 칩들은 제2 데이터 버스 폭을 가지며 제1 DQ 그룹 및 제2 DQ 그룹을 포함한 DQ 그룹으로 그룹화되는 제2 메모리 칩을 포함하고,
    상기 제2 데이터 버스 폭은 상기 정정 데이터 폭의 M배(M은 2 이상의 자연수)이고,
    상기 메모리 컨트롤러는 상기 제2 DQ 그룹이 불량이 된 경우, 상기 스페어 정보에 기초하여 상기 제2 DQ 그룹을 상기 스페어 DQ 그룹으로 대체하는 것을 특징으로 하는 메모리 시스템.
  8. 제1항에 있어서,
    상기 DQ 그룹 관리 정보는,
    상기 DQ 그룹 각각에 대응되는 어드레스 정보를 포함하는 DQ 그룹 어드레스 정보; 및
    에러 정정 데이터 정보와 상기 DQ 그룹 어드레스 정보를 매칭(matching)시킨 맵핑 테이블(mapping table)을 포함하는 것을 특징으로 하는 메모리 시스템.
  9. 메모리 시스템의 메모리 모듈 에러 정정 방법에 있어서,
    메모리 컨트롤러에 저장된 DQ 그룹 관리 정보를 기초로 상기 메모리 모듈의 메모리 칩들의 DQ 접속기들을 정정 데이터 폭 사이즈를 갖는 DQ 그룹으로 그룹화하는 단계; 및
    상기 메모리 모듈에 상기 정정 데이터 폭 단위로 수행되는 데이터 정정 알고리즘을 수행(implement)하는 단계를 포함하는 메모리 모듈 에러 정정 방법.
  10. 제9항에 있어서,
    상기 그룹화하는 단계는,
    상기 DQ 그룹 관리 정보를 기초로 상기 메모리 칩들 각각을 상기 정정 데이터 폭과 같은 데이터 버스 폭을 갖는 적어도 하나의 DQ 그룹 메모리 장치로 인식하는 단계를 포함하는 것을 특징으로 하는 메모리 모듈 에러 정정 방법.
KR1020170095715A 2017-07-27 2017-07-27 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법 KR20190012566A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170095715A KR20190012566A (ko) 2017-07-27 2017-07-27 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법
US15/889,741 US20190034270A1 (en) 2017-07-27 2018-02-06 Memory system having an error correction function and operating method of memory module and memory controller
CN201810845313.5A CN109308228A (zh) 2017-07-27 2018-07-27 存储器系统和存储器模块的操作方法以及存储器控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170095715A KR20190012566A (ko) 2017-07-27 2017-07-27 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법

Publications (1)

Publication Number Publication Date
KR20190012566A true KR20190012566A (ko) 2019-02-11

Family

ID=65038466

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170095715A KR20190012566A (ko) 2017-07-27 2017-07-27 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법

Country Status (3)

Country Link
US (1) US20190034270A1 (ko)
KR (1) KR20190012566A (ko)
CN (1) CN109308228A (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102483476B1 (ko) * 2018-04-03 2023-01-03 에스케이하이닉스 주식회사 데이터 입/출력 핀 단위로의 리페어를 지원하는 반도체 메모리 장치 및 그 반도체 메모리 장치의 리페어 방법
JP2020144554A (ja) * 2019-03-05 2020-09-10 キオクシア株式会社 記憶装置およびデータ読出方法
KR20210034726A (ko) * 2019-09-20 2021-03-31 삼성전자주식회사 메모리 모듈, 그것을 제어하는 메모리 제어기의 에러 정정 방법, 및 그것을포함하는 컴퓨팅 시스템
KR20210089804A (ko) * 2020-01-08 2021-07-19 삼성전자주식회사 메모리 모듈 및 이를 포함하는 메모리 시스템
US11367478B2 (en) * 2020-01-14 2022-06-21 Changxin Memory Technologies, Inc. Integrated circuit structure and memory
CN112349342B (zh) * 2020-11-05 2024-03-22 海光信息技术股份有限公司 维护ddr5内存子系统的维护装置、方法、设备和存储介质
KR20220104031A (ko) 2021-01-14 2022-07-25 창신 메모리 테크놀로지즈 아이엔씨 오류 정정 시스템
JP2023512892A (ja) 2021-01-14 2023-03-30 チャンシン メモリー テクノロジーズ インコーポレイテッド 比較システム
CN114765055B (zh) * 2021-01-14 2024-05-03 长鑫存储技术有限公司 纠错系统
CN114765056A (zh) 2021-01-14 2022-07-19 长鑫存储技术有限公司 存储系统
US11599417B2 (en) 2021-01-14 2023-03-07 Changxin Memory Technologies, Inc. Error correction system
EP4167091B1 (en) * 2021-10-12 2024-03-20 Samsung Electronics Co., Ltd. Memory module, memory system, and operation method of memory controller

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8926004D0 (en) * 1989-11-17 1990-01-10 Inmos Ltd Repairable memory circuit
US7532537B2 (en) * 2004-03-05 2009-05-12 Netlist, Inc. Memory module with a circuit providing load isolation and memory domain translation
US7620783B2 (en) * 2005-02-14 2009-11-17 Qualcomm Incorporated Method and apparatus for obtaining memory status information cross-reference to related applications
US9337872B2 (en) * 2011-04-30 2016-05-10 Rambus Inc. Configurable, error-tolerant memory control
JP6140093B2 (ja) * 2014-03-18 2017-05-31 株式会社東芝 キャッシュメモリ、誤り訂正回路およびプロセッサシステム
JP6158265B2 (ja) * 2015-09-16 2017-07-05 株式会社東芝 キャッシュメモリシステム

Also Published As

Publication number Publication date
US20190034270A1 (en) 2019-01-31
CN109308228A (zh) 2019-02-05

Similar Documents

Publication Publication Date Title
KR20190012566A (ko) 에러 정정 기능을 갖는 메모리 시스템, 메모리 모듈 및 메모리 컨트롤러의 동작 방법
US10169126B2 (en) Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation
US8886892B2 (en) Memory module and method employing a multiplexer to replace a memory device
US11614869B2 (en) Controller for preventing uncorrectable error in memory device, memory device having the same, and operating method thereof
US10162703B2 (en) Methods of correcting data errors and semiconductor devices used therein
US11256563B2 (en) Memory controller with high data reliability, a memory system having the same, and an operation method of the memory controller
US11507456B2 (en) Memory module, error correction method of memory controller controlling the same, and computing system including the same
US11664083B2 (en) Memory, memory system having the same and operating method thereof
US11721408B2 (en) Memory device capable of outputting fail data in parallel bit test and memory system including the memory device
JP4349532B2 (ja) メモリ制御装置、メモリ制御方法、情報処理システム、そのプログラム及び記憶媒体
US10725672B2 (en) Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation
CN116745849A (zh) 存储器装置保护
CN111566738A (zh) 存储器系统中的有效和选择性的备用位
WO2022066317A1 (en) Techniques to implement a hybrid error correction codeword scheme
US11556440B2 (en) Memory module, memory system including the same and operation method thereof
US10917111B2 (en) Error correction code unit and error correction method
KR102414202B1 (ko) 계층적 디코더를 이용한 오류 정정
CN116783654A (zh) 自适应错误校正以提高系统存储器可靠性、可用性和可服务性(ras)
US20230137339A1 (en) Memory device, memory module including the memory device, and operating method of memory controller
US20230259422A1 (en) Memory system including data-width aware encoder and data-width aware decoder and operating method thereof
CN115994050A (zh) 基于错误校正能力的路由分配