KR20230123801A - Dwa 인코더 및 dwa 디코더를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 - Google Patents

Dwa 인코더 및 dwa 디코더를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 Download PDF

Info

Publication number
KR20230123801A
KR20230123801A KR1020220021042A KR20220021042A KR20230123801A KR 20230123801 A KR20230123801 A KR 20230123801A KR 1020220021042 A KR1020220021042 A KR 1020220021042A KR 20220021042 A KR20220021042 A KR 20220021042A KR 20230123801 A KR20230123801 A KR 20230123801A
Authority
KR
South Korea
Prior art keywords
data word
data
code word
dwa
bits
Prior art date
Application number
KR1020220021042A
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 KR1020220021042A priority Critical patent/KR20230123801A/ko
Priority to US18/102,187 priority patent/US20230259422A1/en
Publication of KR20230123801A publication Critical patent/KR20230123801A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • G06F11/1024Identification of the type of error
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 개시의 기술적 사상의 일측면에 따른 메모리 시스템은, 제1 데이터 워드, 제1 데이터 워드와 상이한 제2 데이터 워드, 및 제1 데이터 워드와 제2 데이터 워드 각각의 크기를 나타내는 유형 결정 플래그를 포함하는 코드 워드 그룹을 저장하는 메모리 모듈 및 메모리 모듈의 동작을 제어하고, 상기 코드 워드 그룹의 에러를 감지 및 정정하는 ECC 엔진을 포함하는 메모리 컨트롤러를 포함하고, ECC 엔진은, 외부로부터 수신한 제1 데이터 워드 및 제2 데이터 워드를 이용하여 코드 워드 그룹을 생성하고, 제1 데이터 워드 및 제2 데이터 워드 각각의 크기에 기초하여 결정된 코드 워드 그룹의 유형에 따라 제1 내지 제3 모드 중 어느 하나로 에러 감지 및 에러 정정 동작을 수행하는 DWA 인코더 및 메모리 모듈로부터 코드 워드 그룹을 수신하고, 유형 결정 플래그에 기초하여 결정된 코드 워드 그룹의 유형에 따라 제1 내지 제3 모드 중 어느 하나로 에러 감지 및 에러 정정 동작을 수행하고, 코드 워드 그룹으로부터 제1 데이터 워드 및 제2 데이터 워드를 추출하는 DWA 디코더를 포함한다.

Description

DWA 인코더 및 DWA 디코더를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 {Memory system including data-width aware encoder and data-width aware decoder and operating method thereof}
본 개시의 기술적 사상은 메모리 시스템 및 메모리 시스템의 동작 방법에 관한 것으로서, 상세하게는 DWA 인코더(Data-Width Aware Encoder) 및 DWA 디코더(Data-Width Aware Decoder)를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법에 관한 것이다.
메모리 시스템들은 다양한 형태의 메모리 모듈들을 포함할 수 있다. 전형적으로 메모리 프로세싱은 단일(single) 메모리에 대해서 수행되도록 구성되어 메모리 프로세싱의 성능 및 특성이 단일 메모리에 의해 결정될 수 있다. 큰 메모리 용량을 요구하는 어플리케이션 프로세싱은 고용량의 메모리, 예컨대 DIMM(Dual In-line Memory Module)을 활용할 수 있다. DIMM은 신호 기판 상에서 실행되는(implement) 복수의 DRAM(Dynamic Random Access Memory) 칩들을 포함할 수 있다. 메모리 시스템의 컨트롤러(Controller)는 DRAM 칩들의 RAS(Reliability Availability Serviceability, 안정성, 가용성 및 유지보수 편의성) 기능들을 제공할 수 있다.
최근 DRAM의 제조 기술이 미세화 되고, 단위 면적당 저장 용량이 증가함에 따라 메모리 장치의 신뢰성 문제가 더욱 중요해지고 있다. 요구되는 DRAM의 신뢰성 수준을 만족하기 위해, ECC(Error Correction Code)를 저장할 수 있는 DIMMs(Dual In-line Memory Modules)를 채택하고, 64-bit 데이터 당 8-bit의 패리티(parity)를 이용하는 SECDED(Single Error Correction, Double Error Detection) 코드를 사용하거나 SECDED 코드보다 더 높은 신뢰성을 제공하는 ECC 기법(예를 들어, chipkill)을 사용하는 메모리 시스템이 제공되고 있다. 그러나, 이 경우에 추가적인 저장 공간을 필연적으로 야기하므로, 추가적인 저장 공간을 요구하지 않으면서 높은 신뢰성을 제공하는 메모리 시스템이 요구되고 있다.
본 개시의 기술적 사상이 해결하려는 과제는, 추가적인 저장 공간을 요구하지 않으면서 높은 신뢰성을 제공하는 메모리 시스템 및 메모리 시스템의 동작 방법을 제공하는 데 있다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재들로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 일측면에 메모리 시스템은, 제1 데이터 워드, 제1 데이터 워드와 상이한 제2 데이터 워드, 및 제1 데이터 워드와 제2 데이터 워드 각각의 크기를 나타내는 유형 결정 플래그를 포함하는 코드 워드 그룹을 저장하는 메모리 모듈 및 메모리 모듈의 동작을 제어하고, 상기 코드 워드 그룹의 에러를 감지 및 정정하는 ECC 엔진을 포함하는 메모리 컨트롤러를 포함하고, ECC 엔진은, 외부로부터 수신한 제1 데이터 워드 및 제2 데이터 워드를 이용하여 코드 워드 그룹을 생성하고, 제1 데이터 워드 및 제2 데이터 워드 각각의 크기에 기초하여 결정된 코드 워드 그룹의 유형에 따라 제1 내지 제3 모드 중 어느 하나로 에러 감지 및 에러 정정 동작을 수행하는 DWA 인코더 및 메모리 모듈로부터 코드 워드 그룹을 수신하고, 유형 결정 플래그에 기초하여 결정된 코드 워드 그룹의 유형에 따라 제1 내지 제3 모드 중 어느 하나로 에러 감지 및 에러 정정 동작을 수행하고, 코드 워드 그룹으로부터 제1 데이터 워드 및 제2 데이터 워드를 추출하는 DWA 디코더를 포함한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 일측면에 따른 ECC 엔진은 외부로부터 수신한 제1 데이터 워드 및 제2 데이터 워드를 이용하여 코드 워드 그룹을 생성하고, 제1 데이터 워드 및 제2 데이터 워드 각각의 크기에 기초하여 복수의 에러 정정 모드 중 어느 하나의 모드를 선택하여 에러 감지 및 에러 정정 동작을 수행하는 DWA 인코더 및 제1 데이터 워드 및 제2 데이터 워드 각각의 크기에 기초하여 복수의 에러 정정 모드 중 어느 하나의 모드를 선택하여 에러 감지 및 에러 정정 동작을 수행하고, 코드 워드 그룹으로부터 제1 데이터 워드 및 제2 데이터 워드를 추출하는 DWA 디코더를 포함한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 일측면에 따라 ECC 엔진을 포함하는 메모리 컨트롤러, 및 복수의 메모리 장치들을 포함하는 메모리 모듈을 포함하는 메모리 시스템의 동작 방법은, 외부로부터 제1 데이터 워드 및 제2 데이터 워드를 수신하는 단계, 제1 데이터 워드 및 제2 데이터 워드 각각의 크기에 기초하여 제1 데이터 워드 및 제2 데이터 워드를 포함하는 코드 워드 그룹을 생성하는 단계, 코드 워드 그룹을 구성하고 제1 데이터 워드 및 제2 데이터 워드 각각의 크기를 나타내는 유형 결정 플래그에 기초하여, 에러 정정 모드를 선택하는 단계 및 선택된 에러 정정 모드로 에러 감지 및 에러 정정 동작을 수행하는 단계를 포함한다.
본 개시의 기술적 사상에 따르면, DWA 인코더(Data-Width Aware Encoder) 및 DWA 디코더(Data-Width Aware Decoder)를 포함함으로써 높은 신뢰성 수준을 만족하면서도 추가적인 저장 공간을 요구하지 않는 메모리 시스템을 제공할 수 있다.
본 개시의 기술적 사상에 따르면, BW 인터리버(Bitwise Interleaver) 및 BW 디인터리버(Bitwise De-interleaver)를 포함함으로써 메모리 시스템의 신뢰성이 향상된 메모리 시스템을 제공할 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1은 본 개시의 일 실시 예에 따른 컴퓨팅 시스템을 설명하는 블록도이다.
도 2는 본 개시의 일 실시 예에 따른 ECC 엔진을 나타내는 블록도이다.
도 3은 본 개시의 일 실시 예에 따른 ECC 엔진이 제공하는 코드 워드 그룹을 설명하기 위한 도면이다.
도 4는 본 개시의 일 실시 예에 따른 DWA 인코더의 에러 정정 인코딩 방법을 설명하기 위한 순서도이다.
도 5는 도 4의 단계(S130)의 일 실시 예를 설명하기 위한 도면이다.
도 6은 본 개시의 일 실시 예에 따른 유형 결정 플래그를 나타내는 도면이다.
도 7은 본 개시의 일 실시 예에 따른 DWA 디코더의 따른 코드 워드 그룹의 유형 판단 방법을 설명하기 위한 순서도이다.
도 8은 본 개시의 일 실시 예에 따른 컴퓨팅 시스템을 설명하는 블록도이다.
도 9는 본 개시의 일 실시 예에 따른 BW 인터리버의 동작을 설명하기 위한 도면이다.
도 10은 본 개시의 일 실시 예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 11은 본 개시의 일 실시 예에 따른 메모리 시스템을 나타내는 도면이다.
도 12는 본 개시의 일 실시 예에 따른 메모리 시스템을 나타내는 도면이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시예에 대해 상세히 설명한다. 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면 부호를 부여하고 이에 대해 중복되는 설명은 생략한다.
도 1은 본 개시의 일 실시 예에 따른 컴퓨팅 시스템을 설명하는 블록도이다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 컴퓨터, 노트북, 서버, 워크 스테이션, 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 스마트 폰, 웨어러블(Wearable) 장치 등과 같은 시스템을 의미할 수 있다. 컴퓨팅 시스템(100)은 호스트(200) 및 메모리 시스템(300)을 포함할 수 있다.
호스트(200)는 데이터 처리 장치일 수 있다. 호스트(200)는 운영 체제(operating system, OS) 및/또는 다양한 응용 프로그램(application)을 수행할 수 있다. 예를 들어, 호스트(200)는 시스템 온 칩(System-On-a-Chip, SoC)으로 구현될 수 있다. 호스트(110)는 메모리 시스템(300)에 대한 데이터 처리 동작을 제어할 수 있다. 호스트(200)는 프로세서(210) 및 캐시 메모리(220)를 포함할 수 있다. 호스트(200)는 적어도 하나의 프로세서를 포함할 수 있다. 예를 들어, 호스트(200)는 멀티 코어 프로세서를 포함할 수도 있다.
프로세서(210)는 중앙 처리 장치(Central Processing Unit: CPU), 디지털 신호 프로세서(Digital Signal Processor: DSP), 그래픽 처리 장치(Graphics Processing Unit: GPU), 어플리케이션 프로세서(Application Processor: AP) 암호화 처리 장치(encryption processing unit), 물리 처리 장치(physics processing unit), 머신 러닝 처리 장치(machine learning processing unit) 등을 포함할 수 있다. 프로세서(210)는 캐시 메모리(220)를 이용하여 데이터 연산을 수행할 수 있다. 캐시 메모리(220)는 메모리 시스템(300)에 기입될 데이터 또는 메모리 시스템(300)으로부터 독출된 데이터를 저장할 수 있다.
호스트(200)는 적어도 하나의 채널을 통해 메모리 시스템(300)과 통신할 수 있다. 호스트(200)와 메모리 시스템(300)의 통신을 위해 사용되는 인터페이스는 규약 또는 스펙(specification)에 따라 정해질 수 있다. 예를 들어, 호스트(200)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), PCI(Peripheral Component Interconnection), PCIe(PCI express), SAS(serial attached SCSI), USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 인터페이스 프로토콜을 사용하여 메모리 시스템(300)과 통신할 수 있다.
도 1을 비롯한 이하의 도면들에서 호스트(200)와 메모리 시스템(300)이 주고받는 기입 데이터(WD)와 독출 데이터(RD)는 '데이터 워드(data word)'로 총칭될 수 있다. 메모리 시스템(300)으로 입력되는 데이터 워드는 기입 데이터(WD)로 지칭될 수 있고, 메모리 시스템(300)에서 출력되는 데이터 워드는 출력 데이터(RD)로 지칭될 수 있다. 기입 데이터(WD)와 출력 데이터(RD)는 같거나 다를 수 있다.
메모리 시스템(300)은 메모리 컨트롤러(310) 및 메모리 모듈(320)을 포함할 수 있다. 메모리 모듈(320)과 메모리 컨트롤러(310)는 버스(330, Bus)를 통해 통신적으로 연결(communicatively connected)될 수 있다. 도 1의 메모리 시스템(300)은 메모리 컨트롤러(310) 및 메모리 모듈(320)을 각각 한 개씩 포함하는 것으로 도시되나, 이는 설명의 편의를 위한 것으로서 본 발명의 실시 예들이 이에 한정되는 것은 아니다. 예를 들어, 메모리 시스템(300)은 복수의 메모리 모듈들 및 복수의 메모리 컨트롤러들을 포함할 수도 있다. 또한 도 1의 메모리 컨트롤러(310)는 호스트(200)와 분리된 구성으로 설명되나 본 개시가 이에 제한되는 것은 아니다. 예를 들어, 메모리 컨트롤러(310)는 호스트(200)의 프로세서(210) 내에 구비되고, 프로세서(210)가 메모리 모듈(320)을 제어하는 것으로 설명될 수도 있다.
메모리 컨트롤러(310)는 메모리 시스템(300)의 동작을 제어할 수 있다. 메모리 컨트롤러(310)는 호스트(200)의 요청(RQ)에 따라 메모리 모듈(320)을 제어할 수 있다. 메모리 컨트롤러(310)는 메모리 모듈(320)에 커맨드(CMD) 및 어드레스(ADD)를 제공함으로써, 메모리 모듈(320)에 포함된 메모리 장치들(321a~321z) 각각의 기입 동작 및 독출 동작을 제어할 수 있다. 또한, 메모리 컨트롤러(310)는 호스트(200)의 요청(RQ)과 무관하게, 메모리 시스템(300)의 내부 관리 동작 또는 백그라운드 동작을 수행하기 위해 메모리 시스템(300)을 제어할 수도 있다. 메모리 컨트롤러(310)는 SoC(System on Chip), ASIC(Application Specific Integrated Circuit), FPGA(Field Progammable Gate Array) 등을 이용하여 구현될 수 있다.
메모리 컨트롤러(310)는 ECC 엔진(316)을 포함할 수 있다. ECC 엔진(316)은 데이터 워드(WD, RD)에 대하여 에러 감지 동작 및 에러 정정 동작을 수행할 수 있다. ECC 엔진(316)은 에러 감지 동작 및 에러 정정 동작을 수행하기 위한 회로, 시스템 또는 장치를 모두 포함할 수 있다. ECC 엔진(316)은 데이터 워드(WD, RD)의 에러를 감지하고 정정하기 위해, 패리티 체크(Parity-Check), CRC 체크(Cyclical Redundancy Code Check), 체크섬 체크(Checksum Check) 및 해밍코드(Hamming code) 중 적어도 하나를 이용할 수 있고, x4 SDDC(Single Device Data Correction), x8 SECDED(Single-bit Error Correction and Double-bit Error Detection), Lockstep x8 SDDC 등의 방법을 사용할 수 있다.
ECC 엔진(316)은 기입 데이터(WD)로서 입력된 데이터 워드에 대하여 코드 워드 그룹(CWG)을 생성할 수 있고, 코드 워드 그룹(CWG)에 대하여 에러 감지 및 에러 정정 동작을 수행할 수 있다. 도 1을 비롯한 이하의 도면들에서 ECC 엔진(316)이 기입 데이터(WD)에 기초하여 코드 워드 그룹(CWG)을 생성하고, 생성된 코드 워드 그룹(CWG)에 대하여 에러 감지 및 에러 정정 동작을 수행하는 동작을 '에러 정정 인코딩'으로 지칭할 수 있다.
ECC 엔진(316)은 메모리 모듈(320)로부터 수신한 코드 워드 그룹(CWG)에 대하여 에러 감지 및 에러 정정 동작을 수행할 수 있고, 코드 워드 그룹(CWG)으로부터 독출 데이터(RD)로서 출력될 데이터 워드를 추출할 수 있다. 도 1을 비롯한 이하의 도면들에서 ECC 엔진(316)이 코드 워드 그룹(CWG)에 대하여 에러 감지 및 에러 정정 동작을 수행하고, 코드 워드 그룹(CWG)으로부터 독출 데이터(RD)로서 출력되는 데이터 워드를 추출하는 동작을 '에러 정정 디코딩'으로 지칭할 수 있다.
ECC 엔진(316)은 일정 수준의 에러 정정 능력을 가질 수 있다. 예를 들어, ECC 엔진(316)은 기입 데이터에 존재하는 에러 비트의 개수가 에러 정정 능력을 초과하지 않는 경우, 기입 데이터에 포함된 에러를 검출하고 정정할 수 있다. ECC 엔진(316)의 에러 정정 능력을 초과하지 않는 최대 에러 비트 개수를 '최대 허용 에러 비트의 수'라고 지칭할 수 있다. 예를 들어, ECC 엔진(316)의 최대 허용 에러 비트의 수는 하나의 코드 워드 그룹(도 1의 CWG)에 대하여 적어도 1개일 수 있고, 최대 6개일 수 있다. 그러나, 본 개시에 따른 ECC 엔진(316)의 최대 허용 에러 비트의 수가 이에 제한되는 것은 아니다. 예를 들어, ECC 엔진(316)의 최대 허용 에러 비트의 수는 8개 이상일 수도 있다. 최대 허용 에러 비트의 수가 많을수록 에러 정정 효과가 높을 수 있다.
코드 워드 그룹(CWG)은 복수의 데이터 워드, 각각의 데이터 워드에 대한 패리티 비트 및 유형 결정 플래그를 포함할 수 있다. 예를 들어, 코드 워드 그룹(CWG)은 제1 데이터 워드, 제2 데이터 워드, 제1 데이터 워드 및 제2 데이터 워드에 대한 패리티 비트들 및 유형 결정 플래그를 포함할 수 있다. 유형 결정 플래그는 제1 데이터 워드 및 제2 데이터 워드 각각의 크기를 나타낼 수 있다. ECC 엔진(316)은 제1 데이터 워드 및 제2 데이터 워드 각각의 크기에 기초하여 유형 결정 플래그를 결정할 수 있고, 유형 결정 플래그에 기초하여 코드 워드 그룹(CWG)의 유형을 결정할 수 있다. 코드 워드 그룹(CWG)의 구조 및 유형에 대하여는 후술되는 도 4를 참조하여 보다 상세하게 설명한다.
ECC 엔진(316)은 결정된 코드 워드 그룹(CWG)의 유형에 따라 서로 다른 방법으로 에러 감지 및 에러 정정 동작을 수행할 수 있다. 예를 들어, ECC 엔진(316)은 결정된 코드 워드 그룹(CWG)의 유형에 따라 제1 내지 제3 모드 중 어느 하나의 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있다. ECC 엔진(316)의 동작에 대하여는 후술되는 도면들을 참조하여 보다 상세하게 설명한다.
메모리 모듈(320)은 메모리 컨트롤러(310)로부터 수신한 코드 워드 그룹(CWG)을 저장할 수 있다. 메모리 모듈(320)은 SIMM(Single In-line Memory Module), DIMM(Dual In-line Memory Module), SODIMM(Small-Outline DIMM), UDIMM(Unbuffered DIMM), FBDIMM(Fully-Buffered DIMM), RBDIMM(Rank-Buffered DIMM), mini-DIMM, micro-DIMM, RDIMM(Registered DIMM) 또는 RDIMM(Load-Reduced DIMM)으로 구현될 수 있다.
메모리 모듈(320)은 복수의 메모리 장치들(321a~321z)을 포함할 수 있다. 메모리 장치들(321a~321z) 각각은 DRAM(Dynamic Random Access Memory), SDRAM(Synchronous DRAM), DDR SDRAM(Double Data Rate SDRAM), LPDDR SDRAM(Low Power 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) 등과 같은 비휘발성 메모리를 포함할 수 있다. 메모리 장치들(321a~321z) 각각은 n(2 이상의 자연수)개의 입출력 핀들을 통하여 데이터를 입출력 하도록 구현될 수 있다.
각각의 메모리 장치들(321a~321z)은 데이터 버스 폭 특성에 따라 동작할 수 있다. 각각의 메모리 장치들(321a~321z)이 갖는 데이터 버스 폭은 4비트(X4), 8비트(X8), 16비트(X16), 또는 32비트(X32) 등 일 수 있다. 예를 들어, 4비트의 데이터 버스 폭을 갖는 메모리 장치(이하에서 'X4 메모리 장치'라고 지칭한다)는 4개의 입출력 핀들을 통해 메모리 컨트롤러(310)와 데이터를 송수신할 수 있고, 8비트 데이터 버스 폭을 갖는 메모리 장치(이하에서 'X8 메모리 장치'라고 지칭한다)는 8개의 입출력 핀들을 통해 메모리 컨트롤러(310)와 데이터를 송수신할 수 있다.
메모리 장치들(321a~321z)은 메모리 컨트롤러(310)로부터 수신한 초기 어드레스를 순차적으로 증가 또는 감소시키면서 다량의 데이터를 기입 또는 독출하는 버스트 동작(Burst Operation)을 수행할 수 있다. 버스트 동작의 기본 단위는 '버스트 렝스(Burst Length)'라고 지칭될 수 있다. 버스트 렝스는 메모리 장치들(321a~321z)이 버스트 동작을 수행하는 동안 메모리 장치들(321a~321z) 각각에 입출력되는 데이터의 개수를 의미할 수 있다. 예를 들어, 버스트 렝스가 4인 경우, 각각의 메모리 장치들(321a~321z)이 버스트 동작을 수행하는 동안 각각의 메모리 장치들(321a~321z)에 4 비트의 데이터가 기입 또는 독출될 수 있다.
버스트 동작을 수행하는 동안 입출력 핀을 통해 메모리 장치들(321a~321z) 각각에 입출력되는 데이터의 개수와 데이터 버스의 폭을 곱한 값은 버스트 동작에 의해 각각의 메모리 장치들(321a~321z)에서 입출력되는 데이터의 크기를 나타낼 수 있다. 버스트 동작에 의해 각각의 메모리 장치들(321a~321z)에서 입출력되는 데이터의 개수는 '버스트 렝스'로 지칭 될수 있다. 예를 들어, 각각의 입출력 핀들을 통해 2비트의 데이터가 입출력되고, 메모리 장치들(321a~321z) 각각의 데이터 버스 폭이 4비트인 경우, 버스트 렝스는 8비트일 수 있다.
버스트 렝스와 데이터 칩의 개수를 곱한 값은 버스트 동작에 의해 메모리 장치들(321a~321z)에서 입출력되는 데이터의 개수를 나타낼 수 있다. 예를 들어, 버스트 렝스가 8이고 메모리 장치들(321a~321z)의 개수가 18개인 경우, 버스트 동작에 의해 메모리 장치들(321a~321z)에서 입출력되는 데이터의 개수는 144비트일 수 있다.
버스(30)를 통해 메모리 컨트롤러(310)와 메모리 모듈(320)이 각종 신호 및 데이터를 교환할 수 있다. 예를 들어, 메모리 컨트롤러(310)와 메모리 모듈(320)은 버스(30)를 통해 어드레스 신호(ADD), 커맨드 신호(CMD), 클럭 신호(CLK), 제어 신호(CTL) 및 코드 워드(CW)를 송수신할 수 있다.
버스(30) 상에서 메모리 억세스 동작들을 수행하는데 이용되는 DDR(double data rate) DRAM 인터페이스를 통하여 메모리 컨트롤러(310)와 메모리 모듈(320)이 통신 가능하게 커플링될 수 있다. DDR DRAM 인터페이스는 JEDEC(Joint Electron Device Engineering Council)의 메모리 표준 인터페이스 규격일 수 있다. 메모리 모듈(320)은 DDR DRAM 인터페이스에 따라 메모리 컨트롤러(310)에 연결될 수 있으나, 본 개시가 이에 제한되는 것은 아니다. 메모리 모듈(320)은 DDR DRAM 인터페이스 이외의 다양한 종류의 통신 인터페이스를 통하여 호스트에 연결될 수 있다. 예를 들어, 통신 인터페이스는 ISA(Industry Standard Architecture), PCIe(Peripheral Component Interconnect Express), SATA(Serial Advanced Technology Attachment), SCSI(Small Computer System Interface), SAS(Serial Atached SCSI), UAS(USB(universal storage bus) Attached SCSI), iSCSI(internet Small Computer System Interface), Fiber Channel, FCoE(Fiber Channel over Ethernet) 등 일 수 있다.
본 개시의 일 실시 예에 따르면, ECC 엔진(316)은 데이터 워드(WD, RD)의 크기에 따라 코드 워드 그룹(CWG)의 유형을 결정할 수 있고, 코드 워드 그룹(CWG)의 유형에 따라 서로 다른 방법으로 에러 감지 및 에러 정정 동작을 수행할 수 있다. 그에 따라, 신뢰성이 향상된 메모리 시스템(300)을 제공할 수 있다.
또한, 본 개시의 일 실시 예에 따르면, ECC 엔진(316)은 데이터 워드(WD, RD)의 크기를 판단하기 위한 유형 결정 플래그를 코드 워드 그룹(CWG)에 포함함으로써 유형 결정 플래그를 저장하기 위한 추가적인 저장 공간을 요구하지 않을 수 있다. 그에 따라, 추가적인 저장 공간을 요구하지 않으면서도 신뢰성이 향상된 메모리 시스템(300)을 제공할 수 있다.
이하에서는 코드 워드 그룹(CWG), 및 코드 워드 그룹(CWG)의 유형에 따라 서로 다른 방법으로 에러 감지 및 에러 정정 동작을 수행하는 ECC 엔진(316)에 대하여 보다 상세하게 설명한다.
도 2는 본 개시의 일 실시 예에 따른 ECC 엔진을 나타내는 블록도이고, 도 3은 본 개시의 일 실시 예에 따른 ECC 엔진이 제공하는 코드 워드 그룹을 설명하기 위한 도면이다. 상세하게는, 도 2는 도 1의 ECC 엔진(316)의 일 실시 예를 설명하기 위한 도면이고, 도 3은 도 1의 ECC 엔진(316)이 제공하는 코드 워드 그룹(CWG)을 설명하기 위한 도면이다. 이하에서는 도 1을 참조하여 설명하고, 대응되는 구성요소는 동일한 도면 부호로 도시된다.
도 2를 참조하면, ECC 엔진(316)은 DWA 인코더(Data-Width Aware Encoder, 316E) 및 DWA 디코더(Data-Width Aware Decoder, 316D)를 포함할 수 있다. DWA 인코더(316E) 및 DWA 디코더(316D)는 패리티 체크(Parity-Check), CRC 체크(Cyclical Redundancy Code Check), 체크섬 체크(Checksum Check), 및 해밍코드(Hamming code) 등을 이용하여 에러 감지 및 에러 정정 동작을 수행할 수 있다. 이하에서 DWA 인코더(316E) 및 DWA 디코더(316D)는 해밍 코드를 이용하여 에러 감지 및 에러 정정 동작을 수행하는 것으로 설명되나, 본 개시에 따른 실시 예가 이에 한정되는 것은 아니다.
DWA 인코더(316E)는 호스트(200)로부터 제1 데이터 워드(도 3의 DW1) 및 제2 데이터 워드(도 3의 DW2)를 제1 기입 데이터(WD1) 및 제2 기입 데이터(WD2)로서 수신할 수 있다. DWA 인코더(316E)는 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2) 각각의 크기가 기준 비트 값 이하인지를 판단할 수 있다. 기준 비트 값은 기 설정된 값일 수 있다. 예를 들어, 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2) 각각이 최대 64 비트를 가질 때, 기준 비트 값은 32 비트일 수 있다. 그러나 이에 제한되지 않으며, 다른 실시 예에서 기준 비트 값은 50 비트일 수도 있다. 이하에서, 기준 비트 값과 같거나 기준 비트 값보다 작은 데이터 워드는 '좁은 폭의 데이터 워드(narrow-width data word)' 라고 지칭될 수 있고, 기준 비트 값보다 큰 데이터 워드는 '전 폭의 데이터 워드(full-width data word)' 라고 지칭될 수 있다.
DWA 인코더(316E)는 제1 기입 데이터(WD1) 및 제2 기입 데이터(WD2)로서 수신된 제1 데이터 워드(도 3의 DW1) 및 제2 데이터 워드(도 3의 DW2)의 크기에 기초하여 코드 워드 그룹(CWG)을 생성할 수 있다. 코드 워드 그룹(CWG)은 제1 데이터 워드(도 3의 DW1) 및 제2 데이터 워드(도 3의 DW2)의 크기에 따라 제1 유형 내지 제4 유형(도 3의 CWG1~CWG4) 중 어느 하나에 해당될 수 있다. DWA 인코더(316E)는 코드 워드 그룹(CWG)이 제1 유형 내지 제4 유형(도 4의 CWG1~CWG4) 중 어느 유형에 해당되는지에 따라 제1 내지 제3 모드 중 어느 하나의 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있다.
도 3을 참조하면, 제1 유형 내지 제4 유형의 코드 워드 그룹(CWG1~CWG4) 각각은 제1 데이터 워드(DW1), 제2 데이터 워드(DW2), 제1 데이터 워드에 대한 패리티 비트들(P1), 제2 데이터 워드에 대한 패리티 비트들(P2) 및 유형 결정 플래그(TDF)를 포함할 수 있다. DWA 인코더(316E)는 다양한 크기의 코드 워드 그룹(CWG1~CWG4)을 생성할 수 있다. 예를 들어, DWA 인코더(316E)가 생각하는 제1 유형의 코드 워드 그룹(CWG1)의 크기와 제4 유형의 코드 워드 그룹(CGW4)의 크기는 서로 같거나 다를 수 있다. 도 3을 비롯한 이하에서 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2) 각각은 최대 64비트의 크기를 가질 수 있고, 제1 유형 내지 제4 유형의 코드 워드 그룹(CWG1~CWG4) 각각은 최대 144 비트의 크기를 가질 수 있는 것으로 설명되나 본 개시가 이에 제한되는 것은 아니다.
유형 결정 플래그(TDF)는 F 플래그와 N 플래그를 포함할 수 있다. F 플래그는 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)가 모두 전 폭의 데이터 워드인지를 나타낼 수 있다. 예를 들어, F 플래그가 '1'인 경우 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)가 모두 전 폭의 데이터 워드일 수 있고, F 플래그가 '0'인 경우 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2) 중 적어도 하나가 좁은 폭의 데이터 워드일 수 있다. 그러나 이에 제한되지 않으며 F 플래그는 다양하게 설정될 수 있다. 예를 들어, F 플래그가 '0'일 때 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)가 모두 전 폭의 데이터 워드임을 나타내도록 설정될 수도 있다.
N 플래그는 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2) 중 적어도 하나가 좁은 폭의 데이터 워드인 경우 어느 것이 좁은 폭의 데이터 워드인지를 나타낼 수 있다. 예를 들어, N 플래그가 '00'인 경우 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)가 모두 좁은 폭의 데이터 워드이고, N 플래그가 '11'인 경우 제1 데이터 워드(DW1)만 좁은 폭의 데이터 워드이고, N 플래그가 '10'인 경우 제2 데이터 워드(DW2)만 좁은 폭의 데이터 워드임을 나타낼 수 있다. 그러나 이에 제한되지 않으며 N 플래그는 다양하게 설정될 수 있다.
제1 유형의 코드 워드 그룹(CWG1)에 포함되는 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)는 모두 좁은 폭의 데이터 워드일 수 있다. 즉, 제1 유형의 코드 워드 그룹(CWG1)에 포함되는 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)의 크기는 기준 비트 값과 같거나 기준 비트 값보다 작을 수 있다. 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)의 크기는 서로 같거나 다를 수 있다.
그에 따라, 제1 유형의 코드 워드 그룹(CWG1)에 포함되는 유형 결정 플래그(TDF)는 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2) 모두 좁은 폭의 데이터 워드임을 나타내는 F 플래그, 및 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)가 모두 좁은 폭의 데이터 워드임을 나타내는 N 플래그를 포함할 수 있다. 예를 들어, 제1 유형의 코드 워드 그룹(CWG1)에 포함되는 유형 결정 플래그(TDF)는 '0'을 갖는 F 플래그 및 '00'을 갖는 N 플래그를 포함할 수 있다.
제1 유형의 코드 워드 그룹(CWG1)을 구성하는 제1 데이터 워드에 대한 패리티 비트들(P1) 및 제2 데이터 워드에 대한 패리티 비트들(P2) 각각은 적어도 16 비트의 크기를 가질 수 있다. 제1 유형의 코드 워드 그룹(CWG1)에 포함되는 제1 데이터 워드에 대한 패리티 비트들(P1) 및 제2 데이터 워드에 대한 패리티 비트들(P2)은 잔여 영역(RA)을 이용하여 16 비트보다 더 많이 저장될 수 있다. 데이터 워드의 크기에 대한 패리티 비트의 크기의 비율이 증가할수록 에러 정정 효과가 증가할 수 있으므로, 잔여 영역(RA)을 이용하여 저장된 제1 데이터 워드에 대한 패리티 비트들(P1) 및 제2 데이터 워드에 대한 패리티 비트들(P2)의 크기가 증가할수록 제1 유형의 코드 워드 그룹(CWG1)에 대한 에러 정정 효과가 증가할 수 있다.
제2 유형의 코드 워드 그룹(CWG2)에 포함되는 제1 데이터 워드(DW1)는 좁은 폭의 데이터 워드이고, 제2 데이터 워드(DW2)는 전 폭의 데이터 워드일 수 있다. 즉, 제2 유형의 코드 워드 그룹(CWG2)에 포함되는 제1 데이터 워드(DW1)의 크기는 기준 비트 값과 같거나 기준 비트 값보다 작고, 제2 데이터 워드(DW2)의 크기는 기준 비트 값보다 클 수 있다.
그에 따라, 제2 유형의 코드 워드 그룹(CWG2)을 구성하는 유형 결정 플래그(TDF)는 좁은 폭의 데이터 워드를 포함하고 있음을 나타내는 F 플래그, 및 제1 데이터 워드(DW1)가 좁은 폭의 데이터 워드임을 나타내는 N 플래그를 포함할 수 있다. 예를 들어, 제2 유형의 코드 워드 그룹(CWG2)에 포함되는 유형 결정 플래그(TDF)는 '0'을 갖는 F 플래그 및 '11'을 갖는 N 플래그를 포함할 수 있다.
제2 유형의 코드 워드 그룹(CWG2)에 포함되는 제1 데이터 워드에 대한 패리티 비트들(P1)은 적어도 16 비트의 크기를 가질 수 있고, 제2 데이터 워드에 대한 패리티 비트들(P2)은 적어도 8 비트의 크기를 가질 수 있다. 데이터 워드의 크기에 대한 패리티 비트의 크기의 비율이 증가할수록 에러 정정 효과가 증가할 수 있으므로, 제1 데이터 워드(DW1)에 대한 에러 정정 효과가 제2 데이터 워드(DW2)에 대한 에러 정정 효과보다 높을 수 있다.
제3 유형의 코드 워드 그룹(CWG3)에 포함되는 제1 데이터 워드(DW1)는 전 폭의 데이터 워드이고, 제2 데이터 워드(DW2)는 좁은 폭의 데이터 워드일 수 있다. 즉, 제3 유형의 코드 워드 그룹(CWG3)에 포함되는 제1 데이터 워드(DW1)의 크기는 기준 비트 값보다 크고, 제2 데이터 워드(DW2)의 크기는 기준 비트 값과 같거나 기준 비트 값보다 작을 수 있다.
그에 따라, 제3 유형의 코드 워드 그룹(CWG3)을 구성하는 유형 결정 플래그(TDF)는 좁은 폭의 데이터 워드를 포함하고 있음을 나타내는 F 플래그, 및 제2 데이터 워드(DW2)가 좁은 폭의 데이터 워드임을 나타내는 N 플래그를 포함할 수 있다. 예를 들어, 제3 유형의 코드 워드 그룹(CWG3)에 포함되는 유형 결정 플래그(TDF)는 '0'을 갖는 F 플래그 및 '10'을 갖는 N 플래그를 포함할 수 있다.
제3 유형의 코드 워드 그룹(CWG3)을 구성하는 제1 데이터 워드에 대한 패리티 비트들(P1)은 적어도 8 비트의 크기를 가질 수 있고, 제2 데이터 워드에 대한 패리티 비트들(P2)은 적어도 16 비트의 크기를 가질 수 있다. 데이터 워드의 크기에 대한 패리티 비트의 크기의 비율이 증가할수록 에러 정정 효과가 증가할 수 있으므로, 제2 데이터 워드(DW2)에 대한 에러 정정 효과가 제1 데이터 워드(DW1)에 대한 에러 정정 효과보다 높을 수 있다.
제4 유형의 코드 워드 그룹(CWG4)에 포함되는 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)는 모두 전 폭의 데이터 워드일 수 있다. 즉, 제4 유형의 코드 워드 그룹(CWG4)에 포함되는 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)의 크기는 기준 비트 값보다 클 수 있다. 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)의 크기는 서로 같거나 다를 수 있다.
그에 따라, 제4 유형의 코드 워드 그룹(CWG4)을 구성하는 유형 결정 플래그(TDF)는 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2) 모두 전 폭의 데이터 워드임을 나타내는 F 플래그를 포함할 수 있고, N 플래그는 생략될 수 있다. 예를 들어, 제4 유형의 코드 워드 그룹(CWG4)을 구성하는 유형 결정 플래그(TDF)는 '1'을 갖는 F 플래그를 포함할 수 있다.
제4 유형의 코드 워드 그룹(CWG4)은 제1 데이터 워드 및 제2 데이터 워드 모두에 대한 패리티 비트들(P3)을 포함할 수 있다. 제1 데이터 워드 및 제2 데이터 워드 모두에 대한 패리티 비트들(P3)은 적어도 8 비트의 크기를 가질 수 있다. 즉, 최대 128 비트의 크기를 갖는 데이터 워드에 대하여 적어도 8 비트의 패리티 비트들을 포함할 수 있다.
다시 도 2를 참조하면, DWA 인코더(316E)는 코드 워드 그룹(CWG)의 유형에 따라 에러 정정 모드를 선택할 수 있고, 선택된 에러 정정 모드에 기초하여 코드 워드 그룹(CWG)에 대한 에러 감지 및 에러 정정 동작을 수행할 수 있다. 에러 정정 모드는 제1 내지 제3 모드를 포함할 수 있다. DWA 인코더(316E)는 제1 유형의 코드 워드 그룹(CWG1)에 대하여 제1 모드로 에러 정정 및 에러 감지 동작을 수행할 수 있고, 제2 유형 및 제3 유형의 코드 워드 그룹(CWG2, CWG3)에 대하여 제2 모드로 에러 정정 및 에러 감지 동작을 수행할 수 있고, 제4 유형의 코드 워드 그룹(CWG4)에 대하여 제3 모드로 에러 정정 및 에러 감지 동작을 수행할 수 있다.
제1 모드에서, DWA 인코더(316E)는 제1 유형의 코드 워드 그룹(CWG1)에 포함된 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2) 각각에 대하여 적어도 4 비트를 검출하고 적어도 3 비트를 정정하는 방법으로 에러 정정 및 에러 감지 동작을 수행할 수 있다.
제2 모드에서, DWA 인코더(316E)는 제2 유형 및 제3 유형의 코드 워드 그룹(CWG2, CWG3)에 포함된 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2) 중 전 폭의 데이터 워드에 대하여 적어도 4 비트를 검출하고 적어도 3 비트를 정정하고, 좁은 폭의 데이터 워드에 대하여 2 비트를 검출하고 1 비트를 정정하는 방법으로 에러 정정 및 에러 감지 동작을 수행할 수 있다.
예를 들어, DWA 인코더(316E)는 제2 유형의 코드 워드 그룹(CWG2)에 포함된 제1 데이터 워드(DW1)에 대하여는 적어도 4 비트를 검출하고 적어도 3 비트를 정정하는 방법으로 에러 정정 및 에러 감지 동작을 수행하고, 제2 데이터 워드(DW2)에 대하여는 2 비트를 검출하고 1 비트를 정정하는 방법으로 에러 정정 및 에러 감지 동작을 수행할 수 있다.
제3 모드에서, DWA 인코더(316E)는 제4 유형의 코드 워드 그룹(CWG4)에 포함된 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2) 전체에 대하여 2 비트를 검출하고 1 비트를 정정하는 방법으로 에러 정정 및 에러 감지 동작을 수행할 수 있다. 데이터 워드의 크기에 대한 패리티 비트의 크기의 비율이 높을수록 에러 정정 효과가 높으므로, 제1 모드는 제2 모드 및 제3 모드보다 에러 정정 효과가 높을 수 있고, 제2 모드는 제3 모드보다 에러 정정 효과가 높을 수 있다.
DWA 인코더(316E)는 에러 감지 및 에러 정정이 완료된 코드 워드 그룹(CWG)을 메모리 모듈(320)로 전송할 수 있다. 메모리 모듈(320)은 코드 워드 그룹(CWG)을 저장할 수 있다.
DWA 디코더(316D)는 메모리 모듈(320)로부터 코드 워드 그룹(CWG)을 수신할 수 있다. DWA 디코더(316D)는 코드 워드 그룹(CWG)에 대하여 에러 정정 디코딩을 수행함으로써 코드 워드 그룹(CWG)의 에러를 검출 및 정정하고, 제1 독출 데이터(RD1) 및 제2 독출 데이터(RD2)로써 출력되는 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)를 추출할 수 있다.
DWA 디코더(316D)는 코드 워드 그룹(CWG)에 포함된 유형 결정 플래그(TDF)에 기초하여 코드 워드 그룹(CWG)이 제1 유형 내지 제4 유형(도 3의 CWG1~CWG4) 중 어느 유형에 해당되는지 판단할 수 있다. DWA 디코더(316D)는 코드 워드 그룹(CWG)이 제1 유형 내지 제4 유형(도 4의 CWG1~CWG4) 중 어느 유형에 해당되는지에 따라 에러 정정 모드를 선택할 수 있다. 예를 들어, DWA 디코더(316D)는 제1 내지 제3 모드 중 어느 하나의 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있다.
예를 들어, DWA 디코더(316D)는 제1 유형의 코드 워드 그룹(CWG1)에 대하여 제1 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있고, 제2 유형 및 제3 유형의 코드 워드 그룹(CWG2, CWG3)에 대하여 제2 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있고, 제4 유형의 코드 워드 그룹(CWG4)에 대하여 제3 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있다.
DWA 디코더(316D)는 코드 워드 그룹(CWG4)으로부터 추출된 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)를 제1 독출 데이터(RD1) 및 제2 독출 데이터(RD2)로서 호스트(200)로 전송할 수 있다. 이하에서는 도 4 및 도 5를 참조하여, DWA 인코더(316E)의 에러 정정 인코딩 방법을 보다 상세하게 설명한다.
도 4는 본 개시의 일 실시 예에 따른 DWA 인코더의 에러 정정 인코딩 방법을 설명하기 위한 순서도이다. 상세하게는, 도 4는 도 2의 DWA 인코더(316E)의 동작의 일 실시 예를 설명하기 위한 도면이다. 이하에서는 도 1 내지 도 3을 함께 참조하여 설명하고, 대응되는 구성요소는 동일한 도면 부호로 도시된다.
도 4를 참조하면, DWA 인코더(도 2의 316E)의 에러 정정 인코딩 방법(S100)은 단계들(S110, S120, S130, S140)을 포함할 수 있다. 이하에서는 DWA 인코더(도 2의 316E)의 에러 정정 인코딩 방법(S100)에 대하여 서술하나, DWA 디코더(도 2의 316D)에서 에러 정정 인코딩 방법(S100)을 활용하여 에러 정정 디코딩을 수행할 수 있음은 당업자에게 자명할 것이다.
단계(S110)에서, DWA 인코더(도 2의 316E)는 호스트(도 2의 200)로부터 제1 데이터 워드(도 3의 DW1) 및 제2 데이터 워드(도 3의 DW2)를 수신할 수 있다. 제1 데이터 워드 및 제2 데이터 워드는 제1 기입 데이터(도 2의 WD1) 및 제2 기입 데이터(도 2의 WD2)로서 DWA 인코더(도 2이 316E)에 입력될 수 있다.
단계(S120)에서, DWA 인코더(도 2의 316E)는 제1 데이터 워드(도 3의 DW1) 및 제2 데이터 워드(도 3의 DW2)를 이용하여 코드 워드 그룹(도 2의 CWG)을 생성할 수 있다. 코드 워드 그룹(도 2의 CWG)은, 전술된 도 3을 참조하여 설명된 바와 같이, 제1 및 제2 데이터 워드(도 3의 DW1, DW2), 제1 및 제2 데이터 워드에 대한 패리티 비트들(도 3의 P1, P2), 및 제1 및 제2 데이터 워드의 크기를 나타내는 유형 결정 플래그(도 3의 TDF)를 포함할 수 있다.
DWA 인코더(도 2의 316E)는 제1 데이터 워드(도 3의 DW1) 및 제2 데이터 워드(도 3의 DW2)의 크기에 기초하여 코드 워드 그룹을 구성하는 유형 결정 플래그(도 3의 TDF)를 생성할 수 있다. DWA 인코더(도 2의 316E)는 제1 데이터 워드(도 3의 DW1) 및 제2 데이터 워드(도 3의 DW2) 각각의 크기를 기준 비트 값과 비교한 결과에 기초하여 유형 결정 플래그(도 3의 TDF)를 생성할 수 있다. 유형 결정 플래그(도 3의 TDF)는 제1 및 제2 데이터 워드 모두 좁은 폭의 데이터 워드 인지를 나타내는 F 플래그와 제1 및 제2 데이터 워드 중 어느 것이 좁은 폭의 데이터 워드인지를 나타내는 N 플래그를 포함할 수 있다.
단계(S130)에서, DWA 인코더(도 2의 316E)는 유형 결정 플래그(도 3의 TDF)에 기초하여 코드 워드 그룹(도 2의 CWG)의 유형을 결정할 수 있다. 코드 워드 그룹은 제1 유형 내지 제4 유형(도 3의 CWG1~CWG4) 중 어느 하나로 결정될 수 있다.
DWA 인코더(도 2의 316E)는 결정된 코드 워드 그룹의 유형에 따라 에러 정정 모드를 선택할 수 있다. 에러 정정 모드는 제1 내지 제3 모드를 포함할 수 있다. 예를 들어, DWA 인코더(도 2의 316E)는 코드 워드 그룹이 제1 유형일 때 에러 정정 모드를 제1 모드로 선택하고, 코드 워드 그룹이 제2 유형 또는 제3 유형일 때 에러 정정 모드를 제2 모드로 선택하고, 코드 워드 그룹이 제4 유형일 때 에러 정정 모드를 제3 모드로 선택할 수 있다.
제1 모드는 제1 및 제2 데이터 워드 각각에 대하여 적어도 4 비트를 검출하고 적어도 3 비트를 정정하는 에러 정정 모드일 수 있다. 제2 모드는 제1 및 제2 데이터 워드 중 전 폭의 데이터 워드에 대하여는 적어도 4 비트를 검출하고 적어도 3 비트를 정정하고, 좁은 폭의 데이터 워드에 대하여는 2 비트를 검출하고 1 비트를 정정하는 에러 정정 모드일 수 있다. 제3 모드는 제1 및 제2 데이터 워드 전체에 대하여 2 비트를 검출하고 1 비트를 정정하는 에러 정정 모드일 수 있다.
단계(S140)에서, DWA 인코더(도 2의 316E)는 선택된 에러 정정 모드로 코드 워드 그룹에 대하여 에러 감지 및 에러 정정 동작을 수행할 수 있다. 에러 감지 및 에러 정정 동작이 완료된 코드 워드 그룹은 메모리 모듈(도 2의 320)로 전송될 수 있다.
도 5는 도 4의 단계(S130)의 일 실시 예를 설명하기 위한 도면이다. 이하에서는 도 1 내지 도 4을 함께 참조하여 설명하고, 대응되는 구성요소는 동일한 도면 부호로 도시된다.
도 5를 참조하면, 단계(S130)는 단계들(S131, S132, S133, S134, S135, S136, S137, S138-1, S138-2, S139)를 포함할 수 있다.
단계(S131)에서, DWA 인코더(도 2의 316E)는 제1 및 제2 데이터 워드의 크기가 기준 비트 값보다 큰 지를 판단할 수 있다. 기준 비트 값은 기 설정된 값일 수 있다. 기준 비트 값은 사용자에 의해 미리 결정된 값일 수 있다. 예를 들어, 각각의 데이터 워드가 가질 수 있는 최대 크기가 64 비트일 때, 기준 비트 값은 32 비트로 설정될 수 있다.
단계(S132)에서, 제1 및 제2 데이터 워드의 크기가 기준 비트 값보다 클 때, DWA 인코더(도 2의 316E)는 제1 및 제2 데이터 워드를 포함하는 코드 워드 그룹의 유형을 제4 유형으로 결정할 수 있다.
단계(S133)에서, DWA 인코더(도 2의 316E)는 제4 유형의 코드 워드 그룹에 대한 에러 정정 모드를 제3 모드로 선택할 수 있다.
단계(S134)에서, DWA 인코더(도 2의 316E)는 제1 및 제2 데이터 워드의 크기가 모두 기준 비트 값과 같거나 기준 비트 값보다 작은 지를 판단할 수 있다. 이 때, 제1 및 제2 데이터 워드의 크기는 서로 같거나 다를 수 있다.
단계(S135)에서, 제1 및 제2 데이터 워드의 크기가 모두 기준 비트 값과 같거나 기준 비트 값보다 작을 때, DWA 인코더(도 2의 316E)는 제1 및 제2 데이터 워드를 포함하는 코드 워드 그룹의 유형을 제1 유형으로 결정할 수 있다.
단계(S136)에서, DWA 인코더(도 2의 316E)는 제1 유형의 코드 워드 그룹에 대한 에러 정정 모드를 제1 모드로 선택할 수 있다.
단계(S137)에서, DWA 인코더(도 2의 316E)는 제1 데이터 워드의 크기가 기준 비트 값과 같거나 기준 비트 값보다 작은 지를 판단할 수 있다.
단계(S138-1)에서, 제1 데이터 워드의 크기가 기준 비트 값과 같거나 기준 비트 값보다 작고, 제2 데이터 워드의 크기가 기준 비트 값보다 클 때, DWA 인코더(도 2의 316E)는 제1 및 제2 데이터 워드를 포함하는 코드 워드 그룹의 유형을 제2 유형으로 결정할 수 있다.
단계(S138-2)에서, 제1 데이터 워드의 크기가 기준 비트 값보다 크고, 제2 데이터 워드의 크기가 기준 비트 값과 같거나 기준 비트 값보다 작을 때, DWA 인코더(도 2의 316E)는 제1 및 제2 데이터 워드를 포함하는 코드 워드 그룹의 유형을 제3 유형으로 결정할 수 있다.
단계(S139)에서, DWA 인코더(도 2의 316E)는 제2 유형 및 제3 유형의 코드 워드 그룹에 대한 에러 정정 모드를 제2 모드로 선택할 수 있다.
도 6은 본 개시의 일 실시 예에 따른 유형 결정 플래그를 나타내는 도면이다. 상세하게는, 도 6은 도 3의 코드 워드 그룹을 구성하는 유형 결정 플래그의 일 실시 예를 설명하기 위한 도면이다. 이하에서는 도 1 내지 도 3를 함께 참조하여 설명하고, 대응되는 구성요소는 동일한 도면 부호로 도시된다.
도 6을 참조하면, 코드 워드 그룹을 구성하는 유형 결정 플래그(TDF)는 F 플래그와 N 플래그를 포함할 수 있다. F 플래그는 코드 워드 그룹을 구성하는 제1 데이터 워드 및 제2 데이터 워드가 모두 전 폭의 데이터 워드인지를 나타내는 플래그일 수 있다. N 플래그는 코드 워드 그룹을 구성하는 제1 데이터 워드 및 제2 데이터 워드 중 적어도 하나가 좁은 폭의 데이터 워드인 경우 어느 데이터 워드가 좁은 폭의 데이터 워드인지를 나타내는 플래그일 수 있다.
유형 결정 플래그(TDF)는 복수의 비트로 구성될 수 있다. F 플래그 및 N 플래그 각각은 복수의 비트로 구성될 수 있다. F 플래그 및 N 플래그의 크기는 서로 같거나 다를 수 있다. 예를 들어, F 플래그의 크기는 7 비트일 수 있고, N 플래그의 크기는 14 비트일 수 있다. 그러나 본 개시가 이에 제한되는 것은 아니다.
F 플래그의 크기가 7 비트이고, N 플래그의 크기가 14 비트일 때, 제1 유형의 코드 워드 그룹(CWG1)을 구성하는 유형 결정 플래그(TDF)는 '0000000'을 갖는 F 플래그와 '00000000000000'을 갖는 N 플래그를 포함할 수 있다.
F 플래그의 크기가 7 비트이고, N 플래그의 크기가 14 비트일 때, 제2 유형의 코드 워드 그룹(CWG2)을 구성하는 유형 결정 플래그(TDF)는 '0000000'을 갖는 F 플래그와 '11111111111111'을 갖는 N 플래그를 포함할 수 있다.
F 플래그의 크기가 7 비트이고, N 플래그의 크기가 14 비트일 때, 제3 유형의 코드 워드 그룹(CWG3)을 구성하는 유형 결정 플래그(TDF)는 '0000000'을 갖는 F 플래그와 '11111110000000'을 갖는 N 플래그를 포함할 수 있다.
F 플래그의 크기가 7 비트이고, N 플래그의 크기가 14 비트일 때, 제4 유형의 코드 워드 그룹(CWG4)을 구성하는 유형 결정 플래그(TDF)는 '1111111'을 갖는 F 플래그를 포함하고, N 플래그가 생략될 수 있다.
본 개시의 일 실시 예에 따르면, 유형 결정 플래그(TDF)가 복수의 비트를 갖는 F 플래그 및 N 플래그를 포함함으로써, 유형 결정 플래그(TDF)에 에러가 발생하더라도 코드 워드 그룹의 유형이 정확하게 판단될 수 있다. 이하에서는 도 7을 참조하여 DWA 디코더(316D)가 유형 결정 플래그(TDF)에 에러가 발생하더라도 복수의 비트를 갖는 F 플래그 및 N 플래그를 포함하는 유형 결정 플래그(TDF)를 이용하여 코드 워드 그룹의 유형을 정확하게 판단하는 방법에 대하여 설명한다.
도 7은 본 개시의 일 실시 예에 DWA 디코더의 따른 코드 워드 그룹의 유형 판단 방법을 설명하기 위한 순서도이다. 상세하게는, 도 7은 DWA 디코더(도 2의 316D)가 도 6의 유형 결정 플래그를 이용하여 코드 워드 그룹의 유형을 판단하는 방법의 일 실시 예를 설명하기 위한 도면이다. 이하에서는 도 1 내지 도 6을 함께 참조하여 설명하고, 대응되는 구성요소는 동일한 도면 부호로 도시된다.
도 7을 참조하면, DWA 디코더(도 2의 316D)의 코드 워드 그룹의 유형 결정 방법(S200)은 단계들(S210, S220, S230, S240, S250, S260, S270)을 포함할 수 있다. 이하에서는 DWA 디코더(도 2의 316D)의 코드 워드 그룹의 유형 결정 방법(S200)에 대하여 서술하나, DWA 인코더(도 2의 316E)가 코드 워드 그룹의 유형 결정 방법(S200)을 활용하여 에러 정정 인코딩을 수행할 수 있음은 당업자에게 자명할 것이다.
단계(S210)에서, DWA 디코더(도 2의 316D)는 코드 워드 그룹(도 2의 CWG)을구성하는 F 플래그에 포함되는 '0'이 3개 이하인지 판단할 수 있다.
단계(S220)에서, 코드 워드 그룹을 구성하는 F 플래그에 포함되는 '0'이 3개 이하일 때, DWA 디코더(도 2의 316D)는 코드 워드 그룹을 제4 유형으로 판단할 수 있다. 그에 따라, DWA 디코더(도 2의 316D)는 코드 워드 그룹에 대하여 제3 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있다.
단계(S230)에서, 코드 워드 그룹을 구성하는 F 플래그에 포함되는 '0'이 3개보다 많을 때, DWA 디코더(도 2의 316D)는 코드 워드 그룹을 구성하는 N 플래그에 포함되는 '0'이 3개 이하인지 판단할 수 있다.
단계(S240)에서, 코드 워드 그룹을 구성하는 N 플래그에 포함되는 '0'이 3개 이하일 때, DWA 디코더(도 2의 316D)는 코드 워드 그룹을 제2 유형으로 판단할 수 있다. 그에 따라, DWA 디코더(도 2의 316D)는 코드 워드 그룹에 대하여 제2 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있다.
단계(S250)에서, 코드 워드 그룹을 구성하는 N 플래그에 포함되는 '0'이 3개보다 많을 때, DWA 디코더(도 2의 316D)는 코드 워드 그룹을 구성하는 N 플래그에 포함되는 '0'이 10개 이하인지 판단할 수 있다.
단계(S260)에서, 코드 워드 그룹을 구성하는 N 플래그에 포함되는 '0'이 10개 이하일 때, DWA 디코더(도 2의 316D)는 코드 워드 그룹을 제3 유형으로 판단할 수 있다. 그에 따라, DWA 디코더(도 2의 316D)는 코드 워드 그룹에 대하여 제2 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있다.
단계(S270)에서, 코드 워드 그룹을 구성하는 N 플래그에 포함되는 '0'이 10개보다 많을 때, DWA 디코더(도 2의 316D)는 코드 워드 그룹을 제1 유형으로 결정할 수 있다. 그에 따라, DWA 디코더(도 2의 316D)는 코드 워드 그룹에 대하여 제1 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있다.
본 개시의 일 실시 예에 따르면, DWA 디코더(도 2의 316D)는 유형 결정 플래그(TDF)를 구성하는 F 플래그 및 N 플래그에 포함된 '0'의 개수를 카운트함으로써 코드 워드 그룹의 유형을 결정할 수 있다. DWA 디코더(도 2의 316D)는 유형 결정 플래그(TDF)에 대하여도 적어도 4 비트의 에러를 감지하고 적어도 3 비트의 에러를 정정할 수 있으므로, 유형 결정 플래그(TDF)에 에러가 발생하더라도 코드 워드 그룹의 유형을 정확하게 판단할 수 있다. 따라서, 신뢰성이 향상된 메모리 시스템(도 1의 300)을 제공할 수 있다.
도 8은 본 개시의 일 실시 예에 따른 컴퓨팅 시스템을 설명하는 블록도이다. 상세하게는, 도 8은 도 2의 ECC 엔진(316)의 다른 실시 예를 설명하기 위한 도면이다. 이하에서는 도 1 내지 도 7을 함께 참조하여 설명하고, 대응되는 구성요소는 동일한 도면 부호로 도시되며, 중복되는 설명은 생략한다.
도 8을 참조하면, 컴퓨팅 시스템(100A)은 호스트(200), 메모리 컨트롤러(310A) 및 메모리 모듈(320)을 포함할 수 있고, 메모리 컨트롤러(310A)는 ECC 엔진(316A)을 포함할 수 있다. 메모리 컨트롤러(310A)는 DWA 인코더(316E) 및 DWA 디코더(316D)를 포함할 수 있고, 도 2의 메모리 컨트롤러(도 2의 310)와 달리 BW 인터리버(316I, Bitwise Interleaver) 및 BW 디인터리버(316L, Bitwise De-interleaver)를 더 포함할 수 있다.
BW 인터리버(316I)는 DWA 인코더(316E)로부터 DWA 인코더(316E)에서 생성된 코드 워드 그룹(CWG)을 수신할 수 있다. BW 인터리버(316I)는 코드 워드 그룹에 포함된 비트들(CWB)을 순차적으로 메모리 모듈(320)에 포함된 메모리 장치들(321a~321z)로 전송할 수 있다.
예를 들어, 코드 워드 그룹(CWG)의 크기가 144 비트이고, 메모리 모듈(320)에 포함된 메모리 장치들(321a~321z)의 개수가 18개인 경우, BW 인터리버(316I)는 코드 워드 그룹에 포함된 비트들(CWB) 중 0 번째부터 17 번째까지의 연속적인 비트들을 메모리 장치들(321a~321z)에 하나씩 순차적으로 전송할 수 있고, 코드 워드 그룹에 포함된 비트들(CWB) 중 18 번째부터 35 번째까지의 연속적인 비트들을 메모리 장치들(321a~321z)에 하나씩 순차적으로 전송할 수 있다. BW 인터리버(316I)는 이와 같은 방법으로 143번째 비트까지 메모리 장치(321z)에 전송할 수 있다.
BW 디인터리버(316L)는 메모리 장치들(321a~321z)로부터 코드 워드 그룹의 비트들(CWB)을 수신할 수 있다. BW 디인터리버(316L)는 메모리 장치들(321a~321z)에 순차적으로 저장된 코드 워드 그룹의 비트들(CWB)을 재조합하여 코드 워드 그룹(CWG)을 생성할 수 있다. BW 디인터리버(316L)는 코드 워드 그룹(CWG)을 DWA 디코더(316D)로 전송할 수 있다.
본 개시의 실시 예에 따르면, BW 디인터리버(316L)를 통해 코드 워드 그룹의 비트들(CWB)을 메모리 장치들(321a~321z)에 순차적으로 저장함으로써 메모리 장치들(321a~321z) 중 어느 하나의 메모리 장치에 에러가 발생하더라도 에러를 정정할 수 있다. 그에 따라 메모리 시스템의 신뢰성이 개선될 수 있다. 이하에서는 도 9를 참조하여 메모리 장치들(321a~321z)이 X4 메모리 장치일 때를 예로써 BW 인터리버(316I)의 동작을 설명한다.
도 9는 본 개시의 일 실시 예에 따른 BW 인터리버의 동작을 설명하기 위한 도면이다. 상세하게는, 도 8의 BW 인터리버(316I)의 동작을 설명하기 위한 도면으로, 제1 유형의 코드 워드 그룹(CWG1)에 대하여 설명하는 도면이다. 이하에서는 도 1 내지 도 8을 함께 참조하여 설명하고, 대응되는 구성요소는 동일한 도면 부호로 도시되며, 중복되는 설명은 생략한다.
도 8을 참조하면, 메모리 모듈(320)은 제1 내지 제18 메모리 장치들(M1~M18)을 포함할 수 있다. 제1 내지 제18 메모리 장치들(M1~M18) 각각은 X4 메모리 장치일 수 있고, 입출력 핀 당 2 비트의 데이터가 입출력될 수 있다. 그에 따라 제1 내지 제18 메모리 장치들(M1~M18)의 버스트 렝스는 8 비트일 수 있다. 버스트 렝스와 데이터 칩의 개수를 곱한 값은 버스트 동작에 의해 메모리 모듈(320)에서 입출력되는 데이터의 개수를 나타낼 수 있으므로, 버스트 동작에 의해 메모리 모듈(320)에서 입출력되는 데이터의 개수는 144 비트일 수 있다.
BW 인터리버(316I)는 DWA 인코더(도 8의 316E)로부터 제1 유형의 코드 워드 그룹(CWG1)을 수신할 수 있다. BW 인터리버(316I)는 제1 유형의 코드 워드 그룹에 포함된 비트들(CWB1)을 순차적으로 메모리 모듈(320)에 포함된 메모리 장치들(321a~321z)로 전송할 수 있다. BW 인터리버(316I)는 제1 유형의 코드 워드 그룹에 포함된 비트들(CWB1)의 어드레스를 순차적으로 증가시키면서 복수의 메모리 장치들(321a~321z)로 하나씩 전송함으로써, 복수의 메모리 장치들(321a~321z) 각각이 제1 데이터 워드 및 제2 데이터 워드 각각을 최대 2 비트까지 저장하도록 제어할 수 있다.
BW 인터리버(316I)는 0번째부터 17 번째까지의 연속적인 비트들을 제1 내지 제18 메모리 장치들(M1~M18)에 하나씩 순차적으로 전송할 수 있고, 18 번째부터 35 번째까지의 연속적인 비트들을 제1 내지 제18 메모리 장치들(M1~M18)에 다시 하나씩 순차적으로 전송할 수 있다. 이와 같은 방법으로 BW 인터리버(316I)는 143번째 비트까지 제18 메모리 장치(M18)에 전송할 수 있다.
제1 유형의 코드 워드 그룹(CWG1)에 포함된 유형 결정 플래그(TDF)는 7 비트의 F 플래그와 14 비트의 N 플래그로 구성되고, 제1 데이터 워드(DW1) 및 제2 데이터 워드(DW2)의 크기가 각각 32 비트일 수 있다. 이 때, 제1 메모리 장치(M1)는 BW 인터리버(316I)에 의해 2 비트의 제1 데이터 워드(DW1), 2 비트의 제2 데이터 워드(DW2), 1 비트의 제1 데이터 워드에 대한 패리티 비트(P1), 1 비트의 제2 데이터 워드에 대한 패리티 비트(P2), 1 비트의 N 플래그, 및 1 비트의 잔여 영역(RA)을 저장할 수 있다. 이와 같은 방법으로 제2 메모리 장치(M2)는 데이터 워드를 4 비트 저장할 수 있고, 데이터 워드에 대한 패리티 비트를 2 비트 저장할 수 있고, N 플래그를 1 비트 저장할 수 있고, 잔여 영역(RA)을 1 비트 저장할 수 있다.
이 때, 제2 메모리 장치(M2)에 에러가 발생하여 제2 메모리 장치(M2)에 저장된 8 비트의 데이터가 손상될 수 있다. 그러나, 제2 메모리 장치(M2)가 N 플래그를 1 비트만 저장하고 있기 때문에, 후속하여 DWA 디코더(도 8의 316D)가 제1 유형의 코드 워드 그룹(CWG1)에 대하여 에러 정정 디코딩을 수행하더라도 도 7을 참조하여 전술된 방법(도 7의 S200)으로 코드 워드 그룹의 유형을 정확하게 판단할 수 있다. 즉, 제2 메모리 장치(M2)에 에러가 발생하더라도 DWA 디코더(도 8의 316D)는 제1 유형의 코드 워드 그룹(CWG1)에 대하여 제1 모드로 에러 감지 및 에러 정정 동작을 수행할 수 있다.
또한, 제2 메모리 장치(M2)가 제1 데이터 워드(DW1)를 2 비트만 저장하고 있기 때문에, DWA 디코더(도 8의 316D)가 제1 모드로 에러 감지 및 에러 정정 동작을 수행함에 따라 에러가 발생한 제1 데이터 워드(DW1)의 비트들이 모두 감지 및 정정될 수 있다. 그리고, 제2 메모리 장치(M2)가 제2 데이터 워드(DW2)를 2 비트만 저장하고 있기 때문에, DWA 디코더(도 8의 316D)가 제1 모드로 에러 감지 및 에러 정정 동작을 수행함에 따라 에러가 발생한 제2 데이터 워드(DW2)의 비트들이 모두 감지 및 정정될 수 있다.
이와 같은 방법으로, 제2 내지 제4 유형의 코드 워드 그룹(도 3의 CWG2~CWG4)도 메모리 모듈(320)에 기입 및 독출될 수 있다. 즉, BW 인터리버(316I)는 DWA 디코더(316D)로부터 수신한 코드 워드 그룹에 포함된 비트들의 어드레스를 순차적으로 증가시키면서 복수의 메모리 장치들(321a~321z)로 하나씩 전송함으로써, 복수의 메모리 장치들(321a~321z) 각각이 제1 데이터 워드 및 제2 데이터 워드 각각을 최대 4 비트까지 저장하도록 제어할 수 있다.
제1 내지 제 18 메모리 장치들(M1~M18) 각각은 최대 4 비트의 데이터 워드(기입 데이터 또는 독출 데이터)를 포함할 수 있으므로, ECC 엔진(316A)이 제1 모드 또는 제2 모드로 에러 정정 인코딩 또는 에러 정정 디코딩함으로써 모든 에러가 검출 및 정정될 수 있다. 또한, 제1 내지 제 18 메모리 장치들(M1~M18) 각각은 최대 2 비트의 유형 결정 플래그를 포함할 수 있으므로, ECC 엔진(316A)이 도 7을 참조하여 전술된 방법으로 동작함에 따라 모든 에러가 검출 및 정정될 수 있다. 그에 따라, 메모리 시스템(도 1의 300)의 신뢰성이 향상될 수 있다.
도 10은 본 개시의 일 실시 예에 따른 메모리 컨트롤러를 나타내는 블록도이다. 상세하게는, 도 10은 도 1의 메모리 컨트롤러(310)의 일 실시 예를 나타내는 블록도이다. 이하에서는 도 1 내지 도 8을 참조하여 설명하며, 중복되는 설명은 생략한다.
도 10을 참조하면, 메모리 컨트롤러(3100)는 호스트 인터페이스(host interface, 3110), CPU(central processing unit, 3120), 메모리 인터페이스(memory interface, 3130), 내부 메모리(internal memory, 3140), 버퍼 메모리(buffer memory, 3150), 및 ECC 엔진(error correction circuit engine, 3160)를 포함할 수 있다. 그러나 이에 제한되지 않으며, 메모리 컨트롤러(3100)는 도 10에 도시되지 않은 구성요소를 더 포함할 수도 있다.
호스트 인터페이스(3110)는 호스트(200)로부터 수신되는 요청(도 1의 RQ)을 CPU(3120)에 전달할 수 있다. 호스트 인터페이스(3110)는 CPU(3120)의 제어에 따라 호스트(200)로부터 요청(도 1의 RQ)을 수신하고, 호스트(200)와 메모리 모듈(320) 사이의 물리적 연결을 제공할 수 있다. 예를 들어, 호스트 인터페이스(3110)는 호스트(200)로부터 호스트(200)의 기입 요청에 대응하는 기입 데이터를 수신할 수 있고, 상기 기입 데이터를 버퍼 메모리(3150)에 저장할 수 있다. 예를 들어, 호스트 인터페이스(3110)는 호스트(200)의 독출 요청에 대응하고 버퍼 메모리(3150)에 저장된 독출 데이터를 호스트(110)에 전송할 수 있다.
호스트 인터페이스(3110)는 다양한 인터페이스 프로토콜을 이용하여 호스트(200)와 통신할 수 있다. 예를 들어, 호스트 인터페이스(3110)는, NVMe(Non-Volatile Memory express), PCI-E(Peripheral Component Interconnect-Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface), UFS(Universal Flash Storage), SCSI(Small Computer Small Interface) 및 SAS(serial attached SCSI) 중 적어도 하나의 인터페이스 프로토콜을 이용하여 호스트(200)와 통신할 수 있으나, 이에 제한되는 것은 아니다.
CPU(3120)는 호스트 인터페이스(3110), 메모리 인터페이스(3130), 내부 메모리(3140), ECC 엔진(3160), 및 버퍼 메모리(3150)를 제어할 수 있다. CPU(3120)는 각종 연산을 수행하거나 커맨드(도 1의 CMD) 및 어드레스(도 1의 ADD)를 생성할 수 있다. 예를 들어, CPU(3120)는 호스트 인터페이스(3110)를 통해 전달되는 호스트(200)의 요청(도 1의 RQ)에 따라, 데이터의 기입 동작 및 데이터의 독출 동작 등에 필요한 다양한 커맨드들 및 어드레스들을 생성할 수 있다.
CPU(3120)가 호스트 인터페이스(3110)를 통해 호스트(200)의 기입 요청을 수신하는 경우, CPU(3120)는 버퍼 메모리(3150)에 저장된 기입 데이터(도 1의 WD)에 대하여 ECC 엔진(3160)이 에러 정정 인코딩을 수행하도록 ECC 엔진(3160)을 제어할 수 있다. CPU(3120)가 ECC 엔진(3160)으로부터 기입 데이터(도 1의 WD)에 기초한 코드 워드 그룹(도 1의 CWG)이 생성되었음을 통지받은 경우, CPU(3120)는 기입 커맨드 및 기입 어드레스를 생성할 수 있다. CPU(3120)는 생성된 기입 커맨드 및 기입 어드레스가 버퍼 메모리(3150)에 저장된 코드 워드 그룹(도 1의 CWG)과 함께 메모리 장치(130)로 전송되도록 메모리 인터페이스(3130)를 제어할 수 있다.
CPU(3120)가 호스트 인터페이스(3110)를 통해 호스트(200)의 독출 요청을 수신하는 경우, CPU(3120)는 독출 커맨드 및 독출 어드레스를 생성할 수 있다. CPU(3120)는 생성된 독출 커맨드 및 독출 어드레스가 메모리 모듈(320)에 전송되도록 메모리 인터페이스(3130)를 제어할 수 있다. CPU(3120)가 메모리 인터페이스(3130)로부터 코드 워드 그룹(도 1의 CWG)이 수신되었음을 통지받은 경우, 버퍼 메모리(3150)에 저장된 코드 워드 그룹(도 1의 CWG)에 대하여 ECC 엔진(3160)이 에러 정정 디코딩을 수행하도록 ECC 엔진(3160)을 제어할 수 있다. CPU(3120)가 ECC 엔진(3160)으로부터 독출 데이터(도 1의 RD)가 추출되었음을 통지받은 경우, 버퍼 메모리(3150)에 저장된 독출 데이터(도 1의 RD)가 호스트(200)로 전송되도록 호스트 인터페이스(3110)를 제어할 수 있다.
메모리 인터페이스(3130)는 다양한 인터페이스 프로토콜을 이용하여 메모리 컨트롤러(310)와 메모리 모듈(320) 사이의 통신을 수행할 수 있다. 예를 들어, 메모리 인터페이스(3130)는, 기입 동작 시, CPU(3120)로부터 수신되는 기입 커맨드, 기입 어드레스, 및 버퍼 메모리(3150)에 저장된 코드 워드 그룹을 메모리 모듈(320)로 전송할 수 있다. 예를 들어, 메모리 인터페이스(3130)는, 독출 동작 시, CPU(3120)로부터 수신되는 독출 커맨드 및 독출 어드레스를 메모리 모듈(320)로 전송할 수 있다. 또한, 메모리 모듈(320)로부터 수신되는 코드 워드 그룹을 버퍼 메모리(3150)에 저장하고, CPU(3120)에 코드 워드 그룹이 수신되었음을 통지할 수 있다.
내부 메모리(3140)는 메모리 컨트롤러(310)의 동작에 필요한 다양한 정보들을 저장할 수 있다. 예를 들어, 내부 메모리(3140)는 다수의 테이블들을 저장할 수 있다. 실시 예에 따라, 내부 메모리(3140)는 생략될 수 있다.
버퍼 메모리(3150)는 메모리 컨트롤러(3100)가 메모리 모듈(320)을 제어하는 동안 데이터를 임시로 저장할 수 있다. 예를 들어, 버퍼 메모리(3150)는, 기입 동작 시, 호스트 인터페이스(3110)로부터 수신되는 기입 데이터(도 1의 WD)를 저장하고, 저장된 기입 데이터를 ECC 엔진(3160)으로 전송할 수 있다. 또한, 버퍼 메모리(3150)는 ECC 엔진(3160)로부터 수신되는 코드 워드 그룹(도 1의 CWG)을 저장하고, 저장된 코드 워드 그룹(CWG)을 메모리 인터페이스(3130)로 전송할 수 있다. 예를 들어, 버퍼 메모리(3150)는, 독출 동작 시, 메모리 모듈(320)로부터 수신되는 코드 워드 그룹(도 1의 CWG)을 저장하고, 저장된 코드 워드 그룹(도 1의 CWG)을 ECC 엔진(3160)으로 전송할 수 있다. 또한, 버퍼 메모리(3150)는 ECC 엔진(3160)로부터 수신되는 코드 워드 그룹으로부터 추출된 독출 데이터(도 1의 RD)를 저장하고, 저장된 독출 데이터를 호스트 인터페이스(3110)로 전송할 수 있다.
도 2에서 버퍼 메모리(3150)는 메모리 컨트롤러(310) 내에 구비되도록 도시되나 이에 제한되지 않는다. 예를 들어, 버퍼 메모리(3150)는 메모리 컨트롤러(310)의 외부에 배치되는 구성이거나, ECC 엔진(3160) 내부에 포함되는 구성일 수도 있다.
ECC 엔진(3160)은 도 2 및 도 8을 참조하여 전술된 ECC 엔진(316, 316A)에 대응되는 구성일 수 있다. ECC 엔진(3160)은 기입 데이터(도 1의 WD)에 기초하여 에러 정정 인코딩을 수행함으로써 코드 워드 그룹(도 1의 CWG)을 생성할 수 있고, 코드 워드 그룹(도 1의 CWG)을 버퍼 메모리(3150)로 전송할 수 있다. 또한, ECC 엔진(3160)은 CPU(도 2의 312)에 코드 워드 그룹(도 1의 CWG)이 생성되었음을 통지할 수 있다. 코드 워드 그룹(CWG)은 버퍼 메모리(3150)에 임시 저장된 후 메모리 모듈(320)로 전송될 수 있다. 그러나 본 개시의 실시 예가 이에 제한되는 것은 아니며, 버퍼 메모리(3150)가 생략된 경우 코드 워드 그룹(CWG)은 ECC 엔진(3160)에서 메모리 모듈(320)로 전송될 수도 있다.
ECC 엔진(3160)은 코드 워드 그룹(도 1의 CWG)에 기초하여 에러 정정 디코딩을 수행함으로써 독출 데이터(도 1의 RD)를 추출할 수 있고, 독출 데이터(도 1의 RD)를 버퍼 메모리(3150)로 전송할 수 있다. 또한, ECC 엔진(3160)은 CPU(도 2의 312)에 독출 데이터(도 1의 RD)가 추출되었음을 통지할 수 있다. 독출 데이터(도 1의 RD)는 버퍼 메모리(3150)에 임시 저장된 후 호스트(200)로 전송될 수 있다.
본 개시의 일 실시 예에 따르면, ECC 엔진(3160)은 기입 데이터(도 1의 RD)의 크기에 따라 코드 워드 그룹(CWG)의 유형을 결정할 수 있고, 코드 워드 그룹(CWG)의 유형에 따라 적어도 4 비트의 에러를 감지하고 적어도 3 비트의 에러를 정정하는 방법으로 에러 감지 및 에러 정정 동작을 수행할 수 있다. 또한, ECC 엔진(3160)은 기입 데이터(도 1의 RD)의 크기를 판단하기 위한 유형 결정 플래그를 코드 워드 그룹(CWG)에 포함함으로써 유형 결정 플래그를 저장하기 위한 추가적인 저장 공간을 요구하지 않을 수 있다. 그에 따라, 추가적인 저장 공간을 요구하지 않으면서도 신뢰성이 향상된 메모리 시스템을 제공할 수 있다.
도 11은 본 개시의 일 실시 예에 따른 메모리 시스템을 나타내는 도면이다. 상세하게는, 도 11은 도 2 및 도 8에 도시된 메모리 컨트롤러(310, 310A)를 포함하는 메모리 시스템의 다른 실시 예를 나타내는 도면이다. 이하에서, 도 1 내지 도 9를 참조하여 설명한다.
도 11을 참조하면, 메모리 시스템(4000)은 이동 전화기(cellular phone), 스마트폰(smart phone), 태블릿(tablet), PC(personal computer), PDA(personal digital assistant) 또는 무선 통신 장치로 구현될 수 있다. 메모리 시스템(4000)은 메모리 장치(4100) 및 메모리 장치(4100)의 동작을 제어할 수 있는 메모리 컨트롤러(4200)를 포함할 수 있다. 메모리 장치(4100)는 도 2의 메모리 모듈(320)에 대응될 수 있다.
메모리 컨트롤러(4200)는 프로세서(4300)의 제어에 따라 메모리 장치(4100)의 데이터 액세스 동작, 예를 들어 기입 동작 또는 독출 동작 등을 제어할 수 있다. 메모리 컨트롤러(4200)는 도 2의 메모리 컨트롤러(310) 또는 도 8의 메모리 컨트롤러(310A)에 대응될 수 있다. 실시 예에 따라, 컨트롤러(4200)는 프로세서(4300)의 일부로서 구현될 수도 있고, 프로세서(4300)와는 별도의 칩으로 구현될 수 있다.
메모리 컨트롤러(4200)는 에러 정정 회로(4210)를 포함할 수 있다. 에러 정정 회로(4210)는 도 2의 ECC 엔진(316) 또는 도 8의 ECC 엔진(316A)에 대응될 수 있다. 그에 따라, 추가적인 저장 공간을 요구하지 않으면서도 신뢰성이 향상된 메모리 시스템(3000)을 제공할 수 있다.
프로세서(4300)는 무선 송수신기(4500)로부터 출력된 신호를 처리(process)하고 처리(process)된 신호를 메모리 컨트롤러(4200) 또는 디스플레이(4400)로 전송할 수 있다. 프로세서(4300)는 메모리 컨트롤러(4200)로부터 출력된 데이터, 무선 송수신기(4500)로부터 출력된 데이터, 또는 입력 장치(4600)로부터 출력된 데이터가 디스플레이(4400)를 통하여 출력될 수 있도록 디스플레이(4400)의 동작을 제어할 수 있다. 프로세서(4300)는 도 2의 호스트(200)에 대응될 수 있다.
디스플레이(4400)는 메모리 컨트롤러(4200)의 제어에 따라 메모리 컨트롤러(4200)로부터 출력된 데이터, 무선 송수신기(4500)로부터 출력된 데이터, 또는 입력 장치(4600)로부터 출력된 데이터를 출력할 수 있다.
무선 송수신기(4500)는 안테나(ANT)를 통하여 무선 신호를 주고받을 수 있다. 예를 들어, 무선 송수신기(4500)는 안테나(ANT)를 통해 수신된 무선 신호를 프로세서(4300)에서 처리(process)될 수 있는 신호로 변경할 수 있다. 또한, 무선 송수신기(4500)는 프로세서(4300)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다.
입력 장치(4600)는 프로세서(4300)의 동작을 제어하기 위한 제어 신호 또는 프로세서(4300)에 의하여 처리(process)될 데이터를 수신할 수 있다. 예를 들어, 입력 장치(4600)는 터치 패드(touch pad) 및 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad) 또는 키보드로 구현될 수 있다.
도 12는 본 개시의 일 실시 예에 따른 메모리 시스템을 나타내는 도면이다. 상세하게는, 도 12는 도 2 및 도 8에 도시된 메모리 컨트롤러(310, 310A)를 포함하는 메모리 시스템의 다른 실시 예를 나타내는 도면이다.
도 12를 참조하면, 메모리 시스템(5100)은 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 메모리 시스템(5100)은 메모리 장치(5110), 메모리 컨트롤러(5120) 및 카드 인터페이스(5130)를 포함할 수 있다.
메모리 컨트롤러(5120)는 메모리 장치(5110)와 카드 인터페이스(5130) 사이에서의 데이터의 교환을 제어할 수 있다. 메모리 장치(5110)는 도 2의 메모리 모듈(320)에 대응될 수 있다. 메모리 컨트롤러(5120)는 도 2의 메모리 컨트롤러(310) 또는 도 8의 메모리 컨트롤러(310A)에 대응될 수 있다. 메모리 컨트롤러(5120)는 에러 정정 회로(5121)를 포함할 수 있다. 에러 정정 회로(5121)는 도 2의 ECC 엔진(316) 또는 도 8의 ECC 엔진(316A)에 대응될 수 있다. 그에 따라, 추가적인 저장 공간을 요구하지 않으면서도 신뢰성이 향상된 메모리 시스템(5100)을 제공할 수 있다.
카드 인터페이스(5130)는 호스트(5200)의 프로토콜에 따라 호스트(5200)와 메모리 컨트롤러(5120) 사이에서 데이터 교환을 인터페이스할 수 있다. 실시 예에 따라, 카드 인터페이스(5130)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 카드 인터페이스(5130)는 호스트(5200)가 이용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방식을 의미할 수 있다. 카드 인터페이스(5130)는, SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 제한되는 것은 아니다.
메모리 시스템(5100)이 PC, 태블릿, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(5200)의 호스트 인터페이스(5210)와 접속될 때, 호스트 인터페이스(5210)는 마이크로프로세서(5220)의 제어에 따라 카드 인터페이스(5130)와 메모리 컨트롤러(5120)를 통하여 메모리 장치(5110)와 데이터 통신을 수행할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 제1 데이터 워드, 상기 제1 데이터 워드와 상이한 제2 데이터 워드, 및 상기 제1 데이터 워드와 상기 제2 데이터 워드 각각의 크기를 나타내는 유형 결정 플래그를 포함하는 코드 워드 그룹을 저장하는 메모리 모듈; 및
    상기 메모리 모듈의 동작을 제어하고, 상기 코드 워드 그룹의 에러를 감지 및 정정하는 ECC 엔진을 포함하는 메모리 컨트롤러를 포함하고,
    상기 ECC 엔진은,
    외부로부터 수신한 상기 제1 데이터 워드 및 상기 제2 데이터 워드를 이용하여 상기 코드 워드 그룹을 생성하고, 상기 제1 데이터 워드 및 상기 제2 데이터 워드 각각의 크기에 기초하여 결정된 상기 코드 워드 그룹의 유형에 따라 제1 내지 제3 모드 중 어느 하나로 에러 감지 및 에러 정정 동작을 수행하는 DWA 인코더; 및
    상기 메모리 모듈로부터 상기 코드 워드 그룹을 수신하고, 상기 유형 결정 플래그에 기초하여 결정된 상기 코드 워드 그룹의 유형에 따라 제1 내지 제3 모드 중 어느 하나로 에러 감지 및 에러 정정 동작을 수행하고, 상기 코드 워드 그룹으로부터 상기 제1 데이터 워드 및 상기 제2 데이터 워드를 추출하는 DWA 디코더를 포함하는 것을 특징으로 하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 DWA 인코더 및 상기 DWA 디코더는,
    상기 제1 모드에서,
    상기 제1 데이터 워드 및 상기 제2 데이터 워드 각각에 대하여 적어도 4 비트의 에러를 감지하고 적어도 3 비트의 에러를 정정하는 것을 특징으로 하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 DWA 인코더 및 상기 DWA 디코더는,
    상기 제2 모드에서,
    상기 제1 데이터 워드 및 상기 제2 데이터 워드 중 기준 비트 값보다 큰 데이터 워드에 대하여는 2 비트의 에러를 감지하고 1 비트의 에러를 정정하고, 상기 기준 비트 값과 같거나 상기 기준 비트 값보다 작은 데이터 워드에 대하여는 적어도 4 비트의 에러를 감지하고 적어도 3 비트의 에러를 정정하는 것을 특징으로 하는 메모리 시스템.
  4. 제1항에 있어서,
    상기 DWA 인코더 및 상기 DWA 디코더는,
    상기 제3 모드에서,
    상기 제1 데이터 워드 및 상기 제2 데이터 워드 전체에 대하여 2 비트의 에러를 감지하고 1 비트의 에러를 정정하는 것을 특징으로 하는 메모리 시스템.
  5. 제1항에 있어서,
    상기 유형 결정 플래그는,
    상기 제1 데이터 워드 및 상기 제2 데이터 워드 각각의 크기가 기준 비트 값보다 큰 지를 나타내는 F 플래그; 및
    상기 제1 데이터 워드 및 상기 제2 데이터 워드 중 적어도 하나의 크기가 상기 기준 비트 값과 같거나 상기 기준 비트 값보다 작을 때, 상기 기준 비트 값과 같거나 상기 기준 비트 값보다 작은 데이터 워드가 무엇인지를 나타내는 N 플래그를 포함하는 것을 특징으로 하는 메모리 시스템.
  6. 제5항에 있어서,
    상기 DWA 디코더는,
    상기 F 플래그에 포함된 '0'이 3개 이하일 때 상기 코드 워드 그룹을 제4 유형으로 판단하고, 상기 N 플래그에 포함된 '0'이 3개 이하일 때 상기 코드 워드 그룹을 제2 유형으로 판단하고, 상기 N 플래그에 포함된 '0'이 10개 이하일 때 상기 코드 워드 그룹을 제3 유형으로 판단하고, 상기 N 플래그에 포함된 '0'이 10개 보다 많을 때 상기 코드 워드 그룹을 제1 유형으로 판단하는 것을 특징으로 하는 메모리 시스템.
  7. 제1항에 있어서,
    상기 메모리 모듈은 복수의 메모리 장치들을 포함하고,
    상기 ECC 엔진은,
    상기 DWA 인코더로부터 상기 코드 워드 그룹을 수신하고, 상기 코드 워드 그룹에 포함된 비트들의 어드레스를 순차적으로 증가시키면서 상기 복수의 메모리 장치들로 하나씩 전송함으로써 상기 복수의 메모리 장치들 각각이 상기 제1 데이터 워드 및 상기 제2 데이터 워드 각각을 최대 4 비트까지 저장하도록 제어하는 BW 인터리버; 및
    상기 복수의 메모리 장치들에 저장된 상기 코드 워드 그룹의 비트들을 순차적으로 수신하여 재조합함으로써 코드 워드 그룹을 생성하고, 상기 재조합된 코드 워드 그룹을 상기 DWA 디코더로 전송하는 BW 디인터리버를 더 포함하는 것을 특징으로 하는 메모리 시스템.
  8. 외부로부터 수신한 제1 데이터 워드 및 제2 데이터 워드를 이용하여 코드 워드 그룹을 생성하고, 상기 제1 데이터 워드 및 상기 제2 데이터 워드 각각의 크기에 기초하여 복수의 에러 정정 모드 중 어느 하나의 모드를 선택하여 에러 감지 및 에러 정정 동작을 수행하는 DWA 인코더; 및
    상기 제1 데이터 워드 및 상기 제2 데이터 워드 각각의 크기에 기초하여 상기 복수의 에러 정정 모드 중 어느 하나의 모드를 선택하여 에러 감지 및 에러 정정 동작을 수행하고, 상기 코드 워드 그룹으로부터 상기 제1 데이터 워드 및 제2 데이터 워드를 추출하는 DWA 디코더를 포함하는 것을 특징으로 하는 ECC 엔진.
  9. 제8항에 있어서,
    상기 복수의 에러 정정 모드는,
    상기 제1 데이터 워드 및 상기 제2 데이터 워드 각각에 대하여 적어도 4 비트의 에러를 감지하고 적어도 3 비트의 에러를 정정하는 제1 모드;
    상기 제1 데이터 워드 및 상기 제2 데이터 워드 중 기준 비트 값보다 큰 데이터 워드에 대하여는 2 비트의 에러를 감지하고 1 비트의 에러를 정정하고, 상기 기준 비트 값과 같거나 상기 기준 비트 값보다 작은 데이터 워드에 대하여는 적어도 4 비트의 에러를 감지하고 적어도 3 비트의 에러를 정정하는 제2 모드; 및
    상기 제1 데이터 워드 및 상기 제2 데이터 워드 전체에 대하여 2 비트의 에러를 감지하고 1 비트의 에러를 정정하는 제3 모드를 포함하고,
    상기 DWA 인코더 및 상기 DWA 디코더는,
    상기 제1 데이터 워드 및 상기 제2 데이터 워드의 크기가 모두 상기 기준 비트 값과 같거나 상기 기준 비트 값보다 작을 때, 상기 제1 모드를 선택하고,
    상기 제1 데이터 워드 및 상기 제2 데이터 워드의 중 어느 하나의 크기만 상기 기준 비트 값과 같거나 상기 기준 비트 값보다 작을 때, 상기 제2 모드를 선택하고,
    상기 제1 데이터 워드 및 상기 제2 데이터 워드의 크기가 모두 기준 비트 값보다 클 때, 상기 제3 모드를 선택하는 것을 특징으로 하는 ECC 엔진.
  10. 제8항에 있어서,
    상기 DWA 인코더로부터 상기 코드 워드 그룹을 수신하고, 상기 코드 워드 그룹에 포함된 비트들의 어드레스를 순차적으로 증가시키면서 출력하는 BW 인터리버; 및
    상기 코드 워드 그룹의 비트들을 순차적으로 수신하여 상기 코드 워드 그룹을 재조합하고, 상기 재조합된 코드 워드 그룹을 상기 DWA 디코더로 전송하는 BW 디인터리버를 더 포함하는 것을 특징으로 하는 ECC 엔진.

KR1020220021042A 2022-02-17 2022-02-17 Dwa 인코더 및 dwa 디코더를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 KR20230123801A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220021042A KR20230123801A (ko) 2022-02-17 2022-02-17 Dwa 인코더 및 dwa 디코더를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US18/102,187 US20230259422A1 (en) 2022-02-17 2023-01-27 Memory system including data-width aware encoder and data-width aware decoder and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220021042A KR20230123801A (ko) 2022-02-17 2022-02-17 Dwa 인코더 및 dwa 디코더를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법

Publications (1)

Publication Number Publication Date
KR20230123801A true KR20230123801A (ko) 2023-08-24

Family

ID=87558581

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220021042A KR20230123801A (ko) 2022-02-17 2022-02-17 Dwa 인코더 및 dwa 디코더를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법

Country Status (2)

Country Link
US (1) US20230259422A1 (ko)
KR (1) KR20230123801A (ko)

Also Published As

Publication number Publication date
US20230259422A1 (en) 2023-08-17

Similar Documents

Publication Publication Date Title
US10581458B2 (en) Data storage apparatus and operating method thereof
CN109074851B (zh) 利用额外***位的内部错误校验和校正(ecc)
US9164834B2 (en) Semiconductor memory devices, memory systems including the same and method of writing data in the same
US20190034270A1 (en) Memory system having an error correction function and operating method of memory module and memory controller
US10824523B2 (en) Data storage device and operating method thereof
US11721408B2 (en) Memory device capable of outputting fail data in parallel bit test and memory system including the memory device
US10162703B2 (en) Methods of correcting data errors and semiconductor devices used therein
US11664083B2 (en) Memory, memory system having the same and operating method thereof
US11614869B2 (en) Controller for preventing uncorrectable error in memory device, memory device having the same, and operating method thereof
US11409601B1 (en) Memory device protection
US11507456B2 (en) Memory module, error correction method of memory controller controlling the same, and computing system including the same
CN113434330A (zh) 行可寻址且列可寻址的存储器中的动态数据的错误纠正
CN114816829A (zh) 分布ecc比特以为元数据分配ecc比特
US10917111B2 (en) Error correction code unit and error correction method
KR102414202B1 (ko) 계층적 디코더를 이용한 오류 정정
US20230163786A1 (en) Error correction code circuit, memory device including error correction code circuit, and operation method of error correction code circuit
EP3499376B1 (en) Memory system varying operation of memory controller according to internal status of memory device
US20220300371A1 (en) Semiconductor devices
KR20230123801A (ko) Dwa 인코더 및 dwa 디코더를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
CN112540867B (en) Memory module and error correction method of memory controller
US20230214297A1 (en) Storage device including mapping memory and method of operating the same
KR20230105301A (ko) 맵핑 메모리를 포함하는 스토리지 장치 및 이의 동작 방법
CN116783654A (zh) 自适应错误校正以提高***存储器可靠性、可用性和可服务性(ras)