[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20240062803A - 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents

메모리 컨트롤러 및 이를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20240062803A
KR20240062803A KR1020220144728A KR20220144728A KR20240062803A KR 20240062803 A KR20240062803 A KR 20240062803A KR 1020220144728 A KR1020220144728 A KR 1020220144728A KR 20220144728 A KR20220144728 A KR 20220144728A KR 20240062803 A KR20240062803 A KR 20240062803A
Authority
KR
South Korea
Prior art keywords
ecc
data
circuit
converted
burst
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
KR1020220144728A
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 KR1020220144728A priority Critical patent/KR20240062803A/ko
Priority to US18/380,185 priority patent/US12237034B2/en
Priority to CN202311437406.1A priority patent/CN117992271A/zh
Publication of KR20240062803A publication Critical patent/KR20240062803A/ko
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1018Serial bit line access mode, e.g. using bit line address shift registers, bit line address counters, bit line burst counters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1039Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1063Control signal output circuits, e.g. status or busy flags, feedback command signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 개시의 기술적 사상의 일측면에 따른 메모리 컨트롤러는 데이터 버스트를 수신하여 제1 ECC(Error Correction Code) 데이터 또는 제2 ECC 데이터를 생성하는 ECC 회로 및 ECC 회로의 동작을 제어하는 프로세서를 포함하고, ECC 회로는 메모리 컨트롤러 외부로부터 수신한 ECC 선택 신호에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하여 출력하는 ECC 선택 회로 및 제1 ECC 변환 데이터에 기초하여 데이터 버스트를 부호화하여 제1 ECC 데이터를 생성하거나, 제2 ECC 변환 데이터에 기초하여 데이터 버스트를 부호화하여 제2 ECC 데이터를 생성하는 ECC 변환 회로를 포함하고, 제2 ECC 변환 데이터는 데이터 버스트에 포함된 부분 데이터 각각에 포함된 비트들 중에서 미리 설정된 보호 비트에 발생한 오류의 정정이 가능하도록 설정된다.

Description

메모리 컨트롤러 및 이를 포함하는 메모리 시스템{MEMORY CONTROLLER AND MEMORY SYSTEM INCLUDING THE SAME}
본 개시의 기술적 사상은 메모리 컨트롤러에 관한 것으로서, ECC 선택 신호에 기초하여 데이터 버스트를 부호화하는 메모리 컨트롤러에 관한 것이다.
메모리 장치는 다양한 종류의 데이터를 저장하는 장치로, 플래시 메모리 장치와 같은 비휘발성 메모리 장치와 DRAM(Dynamic Random Access Memory)과 같은 휘발성 메모리 장치를 포함할 수 있다. 메모리 장치에 포함된 메모리 셀의 신뢰성에 영향을 미치는 다양한 요인들에 의해, 메모리 장치에 저장된 데이터에 에러가 발생할 수 있다. 메모리 장치에 저장된 데이터에 발생한 에러는 메모리 장치의 신뢰성을 낮출 수 있다. 따라서 메모리 장치에 저장된 데이터에 발생한 에러를 탐지 및 정정할 수 있는 방안의 개발이 필요하다.
본 개시의 기술적 사상이 해결하려는 과제는, 메모리 장치에 저장되는 데이터에 포함된 비트들 중에서 중요 비트에 발생한 오류의 정정이 가능하도록 데이터를 부호화 및 복호화하는 메모리 컨트롤러를 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 메모리 장치를 제어하는 메모리 컨트롤러는 데이터 버스트를 수신하여 제1 ECC(Error Correction Code) 데이터 또는 제2 ECC 데이터를 생성하는 ECC 회로 및 상기 ECC 회로의 동작을 제어하는 프로세서를 포함하고, 상기 ECC 회로는 상기 메모리 컨트롤러 외부로부터 수신한 ECC 선택 신호에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하여 출력하는 ECC 선택 회로 및 상기 제1 ECC 변환 데이터에 기초하여 상기 데이터 버스트를 부호화하여 상기 제1 ECC 데이터를 생성하거나, 상기 제2 ECC 변환 데이터에 기초하여 상기 데이터 버스트를 부호화하여 상기 제2 ECC 데이터를 생성하는 ECC 변환 회로를 포함하고, 상기 제2 ECC 변환 데이터는 상기 데이터 버스트에 포함된 부분 데이터 각각에 포함된 비트들 중에서 미리 설정된 보호 비트에 발생한 오류의 정정이 가능하도록 설정된다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 메모리 시스템은 메모리 장치 및 상기 메모리 장치로 데이터 버스트 및 ECC 선택 신호를 전송하는 메모리 컨트롤러를 포함하고, 상기 메모리 장치는 상기 ECC 선택 신호에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하고, 상기 제1 ECC 변환 데이터 및 상기 제2 ECC 변환 데이터 중에서 선택된 하나에 기초하여 상기 데이터 버스트를 부호화하여 제1 ECC 데이터 또는 제2 ECC 데이터를 생성하는 ECC 회로 및 상기 데이터 버스트와 함께, 상기 ECC 회로에 의해 생성된 상기 제1 ECC 데이터 또는 상기 제2 ECC 데이터를 저장하는 복수의 메모리 셀 어레이들을 포함한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 메모리 시스템은 메모리 장치 및 상기 메모리 장치로 독출 명령 및 ECC(Error Correction Code) 선택 신호를 전송하는 메모리 컨트롤러를 포함하고, 상기 메모리 장치는 데이터 버스트 및 상기 데이터 버스트와 관련된 ECC 데이터를 저장하는 복수의 메모리 셀 어레이들 및 상기 독출 명령에 응답하여, 상기 ECC 선택 신호에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하고, 상기 제1 ECC 변환 데이터 및 상기 제2 ECC 변환 데이터 중에서 선택된 하나에 기초하여 상기 복수의 메모리 셀 어레이들에서 출력되는 데이터 버스트 및 상기 ECC 데이터를 복호화하는 ECC 회로를 포함한다.
본 개시의 기술적 사상의 메모리 컨트롤러에 따르면, ECC 선택 신호에 기초하여 데이터 버스트에 포함된 부분 데이터 각각에 포함된 비트들 중에서 미리 설정된 보호 비트에 대한 오류 정정이 가능하도록 데이터 버스트를 부호화 함으로써, 메모리 장치에 저장된 데이터의 신뢰성을 향상시킬 수 있다.
또한, 본 개시의 기술적 사상의 메모리 컨트롤러에 따르면, 보호 비트에 대한 복구 성능을 향상시키면서, 메모리 시스템의 동작 속도를 향상시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 메모리 컨트롤러를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 메모리 시스템과 연결되는 호스트에 포함될 수 있는 기계 학습 모델의 일 예시를 나타내는 도면이다.
도 3은 본 개시의 일 실시예에 따른 메모리 컨트롤러에 포함된 ECC 회로를 보다 상세히 나타내는 블록도이다.
도 4는 본 개시의 일 실시예에 따른 메모리 컨트롤러의 데이터 버스트를 부호화 방법을 나타내는 순서도이다.
도 5는 본 개시의 일 실시예에 따른 메모리 컨트롤러가 ECC 정보를 선택하는 방법을 나타내는 순서도이다.
도 6는 본 개시의 일 실시예에 따른 메모리 컨트롤러에서 부호화되는 데이터 버스트의 부분 데이터에 포함된 보호 비트를 나타내는 순서도이다.
도 7은 본 개시의 일 실시예에 따른 메모리 컨트롤러의 데이터 버스트를 복호화 방법을 나타내는 순서도이다.
도 8은 본 개시의 다른 실시예에 따른 메모리 시스템을 기입 동작을 중심으로 나타내는 블록도이다.
도 9는 본 개시의 다른 실시예에 따른 메모리 시스템을 독출 동작을 중심으로 나타내는 블록도이다.
도 10은 본 개시의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 메모리 컨트롤러를 포함하는 메모리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 본 개시의 일 실시예에 따른 메모리 시스템(1)은 메모리 컨트롤러(10) 및 메모리 장치(20)를 포함할 수 있다.
메모리 시스템(1)은 전자 장치에 내장되는 임베디드 메모리로 구현되거나, 또는 전자 장치에 착탈 가능한 외장 메모리로 구현될 수 있다. 예를 들어, 메모리 시스템(1)은 임베디드 UFS(Universal Flash Storage), eMMC(embedded Multi-Media Card), SSD(Solid State Drive), UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital), 메모리 스틱(Memory Stick) 등 다양한 형태로 구현될 수 있다.
메모리 시스템(1)은 외부의 호스트(2)로부터 수신하는 요청에 기초하여, 데이터 독출 동작, 데이터 기입 동작 등을 수행할 수 있다. 일 실시예에서, 메모리 시스템(1)은 호스트(2)로부터 수신하는 ECC(Error Correction Code) 선택 신호(ECC Sel), 요청(Req) 및 데이터 버스트(DB)에 기초하여 동작할 수 있다.
메모리 컨트롤러(10)는 메모리 시스템(1)의 전반적인 동작을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(10)는 호스트(2)와 메모리 장치(20) 간의 데이터 교환을 제어할 수 있다. 메모리 컨트롤러(10)는 호스트(2)로부터 수신하는 ECC 선택 신호(ECC Sel), 요청(Req) 및 데이터 버스트(DB)에 기초하여 동작할 수 있다.
일 실시예에서, 메모리 컨트롤러(10)는 호스트(2)로부터 수신하는 요청(Req)이 기입 요청이면, ECC 선택 신호(ECC Sel)에 기초하여 데이터 버스트(DB)를 부호화하여 ECC 데이터를 생성하여, 데이터 버스트(DB) 및 ECC 데이터를 메모리 장치(20)에 기입할 수 있다.
또한, 일 실시예에서, 메모리 컨트롤러(10)는 호스트(2)로부터 수신하는 요청(Req)이 독출 요청이면, ECC 선택 신호(ECC Sel)에 기초하여 메모리 장치(20)로부터 출력되는 데이터 버스트(DB) 및 ECC 데이터를 복호화하여 호스트(2)로 전송할 수 있다.
메모리 컨트롤러(10)는 프로세서(100) 및 ECC 회로(200)를 포함할 수 있다.
프로세서(100)는 메모리 컨트롤러(10)의 전반적인 동작을 제어할 수 있다. 예를 들어, 프로세서(100)는 메모리 컨트롤러(10) 내에 저장된 명령어를 실행함으로써 메모리 컨트롤러(10) 내부의 동작을 제어하거나, 데이터 소거, 프로그램 등과 관련된 다양한 동작들을 제어할 수 있다. 또한, 프로세서(100)는 ECC 회로(200)를 제어할 수 있다.
ECC 회로(200)는 호스트(2)로부터 데이터 버스트(DB)를 수신하여 제1 ECC 데이터 또는 제2 ECC 데이터를 생성할 수 있다.
보다 상세히, ECC 회로(200)는 ECC 선택 신호(ECC Sel)에 기초하여, 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택할 수 있다. 그리고 ECC 회로(200)는 제1 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화하여 제1 ECC 데이터를 생성하거나, 제2 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화하여 제2 ECC 데이터를 생성할 수 있다.
또한, ECC 회로(200)는 메모리 장치(20)로부터 출력되는 데이터 버스트(DB) 및 ECC 데이터를 복호화할 수 있다.
보다 상세히, ECC 회로(200)는 ECC 선택 신호(ECC Sel)에 기초하여, 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택할 수 있다. 그리고 ECC 회로(200)는 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 선택된 하나에 기초하여 메모리 장치(20)로부터 출력되는 데이터 버스트(DB) 및 ECC 데이터를 복호화할 수 있다.
ECC 회로(200)의 보다 상세한 구성 및 동작은 도 3을 참조하여 후술하도록 한다.
메모리 장치(20)는 메모리 컨트롤러(10)에 의해 제어될 수 있다. 메모리 장치(20)는 메모리 컨트롤러(10)로부터 수신하는 명령에 기초하여 데이터를 기입하거나 독출할 수 있다.
일 실시예에서, 메모리 장치(20)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory) 장치일 수 있다. 그러나, 본 개시가 이에 한정되는 것은 아니며, 메모리 장치(20)는 LPDDR(Low Power Double Data Rate) SDRAM, Wide I/O DRAM, HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube) 등과 같은 휘발성 메모리 장치들 중 어느 하나일 수 있으며, 실시예에 따라, 메모리 장치(20)는 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등과 같은 비휘발성 메모리 장치들 중 어느 하나일 수 있다.
호스트(2)는 메모리 시스템(1)에 데이터를 저장하거나, 메모리 시스템(1)에 저장된 데이터를 독출할 수 있다.
호스트(2)는 메모리 시스템(1)에 데이터를 저장하기 위해 ECC 선택 신호(ECC Sel), 요청(Req) 및 데이터 버스트(DB)를 전송할 수 있다. 또한, 호스트(2)는 메모리 시스템(1)에 저장된 데이터를 독출하기 위해, ECC 선택 신호(ECC Sel) 및 요청(Req)을 전송할 수 있으며, 메모리 시스템(1)으로부터 데이터 버스트(DB)를 수신할 수 있다. 이때 호스트(2)는 요청(Req) 및 데이터 버스트(DB)에 따라 ECC 선택 신호(ECC Sel)를 설정하여 출력할 수 있다.
일 실시예에서, 호스트(2)는 기계 학습 모델을 포함할 수 있다. 이때 호스트(2)는 기계 학습 모델에서 이용되는 가중치, 활성화 값 등을 데이터 버스트(DB)로 메모리 시스템(1)에 전송하여 저장할 수 있다.
호스트(2)는 메모리 시스템(1)이 내장된 전자 장치에 CPU(Central Processing Unit), GPU(Graphic Processing Unit) 등과 같은 장치들 중 어느 하나일 수 있다.
도 2는 본 개시의 일 실시예에 따른 메모리 시스템과 연결되는 호스트에 포함될 수 있는 기계 학습 모델의 일 예시를 나타내는 도면이다.
도 2를 참조하면, 기계 학습 모델(505)은 입력 레이어(510), 히든 레이어(530), 출력 레이어(550), 제1 연결 선들(520) 및 제2 연결 선들(540)을 포함할 수 있다.
입력 레이어(510)는 입력 노드들(511, 512, 513)을 포함할 수 있다. 히든 레이어(530)는 히든 노드들(531, 532)을 포함할 수 있다. 출력 레이어(550)는 출력 노드들(551, 552, 553)을 포함할 수 있다.
입력 레이어(510)의 입력 노드들(511, 512, 513)은 학습 데이터(LDT) 또는 특징 벡터(FV)를 수신하고, 제1 가중치들(WT11~WT16)을 갖는 제1 연결 선들(520)을 통하여 학습 데이터(LDT) 또는 특징 벡터(FV)를 히든 레이어(530)에 전달할 수 있다.
히든 레이어(530)의 히든 노드들(531, 532)은 입력 레이어(510)로부터 수신된 학습 데이터(LDT) 또는 특징 벡터(FV)에 대하여 연산을 수행하여 제2 가중치들(WT21~WT26)을 갖는 제2 연결 선들(540)을 통하여 출력 레이어(550)에 전달할 수 있다.
출력 레이어(550)의 출력 노드들(551, 552, 553)은 히든 레이어(530)로부터 전달받은 값들에 대하여 연산을 수행하여 학습 데이터(LDT) 또는 특징 벡터(FV)에 상응하는 결과 데이터(RDT)를 출력할 수 있다.
이와 같은 기계 학습 모델(505)에서 이용되는 제1 가중치들(WT11~WT16), 제2 가중치들(WT21~WT26), 결과 데이터(RDT) 등과 같은 값들은 메모리 시스템(1)에 기입될 수 있으며, 메모리 시스템(1)으로부터 독출되어 기계 학습 모델(505)의 동작에 다시 이용될 수 있다. 이때 제1 가중치들(WT11~WT16), 제2 가중치들(WT21~WT26)과 같은 값들은 데이터에 포함된 모든 비트들이 정확하지 않더라도, 중요 비트 값(예를 들어, 최상위 비트(Most Significant Bit; MSB)의 값)이 정확하면 기계 학습 모델(505)의 동작 신뢰성에 큰 영향을 주지 않는다. 따라서 본 개시에 따른 메모리 시스템(1)은 중요 비트 값을 중심으로 ECC 데이터를 생성하여, 중요 비트에 대한 복구 성능을 향상시키면서, 메모리 시스템(1)의 동작 속도를 향상시킬 수 있다.
도 3은 본 개시의 일 실시예에 따른 메모리 컨트롤러에 포함된 ECC 회로를 보다 상세히 나타내는 블록도이다.
도 3을 참조하면, 본 개시의 일 실시예에 따른 메모리 컨트롤러(10)에 포함된 ECC 회로(200)는 ECC 선택 회로(210) 및 ECC 변환 회로(220)를 포함할 수 있다.
ECC 선택 회로(210)는 메모리 컨트롤러(10) 외부(예를 들어, 호스트(2))로부터 수신한 ECC 선택 신호(ECC Sel)에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하여 출력할 수 있다.
ECC 선택 신호(ECC Sel)는 ECC 회로(200)에서 어떠한 방법으로 데이터 버스트(DB)에 대한 ECC 변환을 수행할지 설정하는 신호일 수 있다. ECC 선택 회로(210)는 ECC 선택 신호(ECC Sel)에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하여 출력함으로써, ECC 변환 회로(220)에서 ECC 선택 신호(ECC Sel)에 대응되는 ECC 변환이 수행되도록 할 수 있다.
ECC 변환 데이터는 ECC 변환을 위한 연산에 이용되는 정보를 포함하는 데이터일 수 있다. 일 실시예에서, ECC 변환 데이터는 ECC 변환에 이용되는 패리티 체크 행렬(예를 들어, H-행렬)을 포함할 수 있다.
ECC 변환 데이터는 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터를 포함할 수 있다.
제1 ECC 변환 데이터는 데이터 버스트(DB)에 포함된 전체 비트들 중 임의의 하나의 비트에 발생한 오류의 정정이 가능하도록 설정될 수 있다. 예를 들어, 제1 ECC 변환 데이터는 SEC(Single Error Correction), S2EC(Single 2-symbol Error Correction) 또는 SECDED(Single Error Correction Double Error Detection)가 가능하도록 설정된 데이터일 수 있다.
제2 ECC 변환 데이터는 데이터 버스트(DB)에 포함된 부분 데이터 각각에 포함된 비트들 중에서 미리 설정된 보호 비트에 발생한 오류의 정정이 가능하도록 설정될 수 있다.
부분 데이터는 데이터 버스트(DB)에 포함된 복수의 값들 중 각각에 대응되는 데이터일 수 있다. 예를 들어, 데이터 버스트(DB)가 총 128 비트이고, 32 비트 길이의 4개의 값을 포함하는 경우, 부분 데이터는 데이터 버스트(DB)에 포함된 각각의 값에 대응되는 32 비트 데이터일 수 있다.
보호 비트는 부분 데이터에 포함된 비트들 중에서 오류가 발생하는 경우, 데이터의 신뢰성에 가장 큰 영향을 미치는 적어도 하나의 비트일 수 있다. 보호 비트는 데이터의 종류 등에 따라 사용자에 의해 미리 설정될 수 있다. 일 실시예에서, 보호 비트는 부분 데이터의 최상위 비트를 포함할 수 있다.
제2 ECC 변환 데이터는 복수의 부분 변환 정보들 중에서 하나를 포함하도록 설정될 수 있다. 이때 복수의 부분 변환 정보들 각각은 서로 다른 개수의 보호 비트에 발생한 오류의 정정이 가능하도록 설정될 수 있다. 예를 들어, 복수의 부분 변환 정보들 중 어느 하나는 부분 데이터의 최상위 비트를 포함하는 한 개의 보호 비트에 발생한 오류의 정정이 가능하도록 설정된 정보일 수 있다. 그리고 복수의 부분 변환 정보들 중 다른 하나는 부분 데이터의 최상위 비트 및 차상위 비트를 포함하는 두 개의 보호 비트에 발생한 오류의 정정이 가능하도록 설정된 정보일 수 있다. 즉, 제2 ECC 변환 데이터가 복수의 부분 변환 정보들 중 어느 부분 변환 정보를 포함하는지에 따라, 제2 ECC 변환 데이터를 이용할 때 데이터 버스트(DB)의 정확도 및 데이터 버스트(DB)의 변환 시간이 달라질 수 있다.
제2 ECC 변환 데이터는 제1 ECC 변환 데이터와 비교하여 더 적은 개수의 비트들 중에서 발생한 오류의 정정이 가능하도록 설정되므로, 제1 ECC 변환 데이터에 비하여 적은 용량을 차지할 수 있다. 예를 들어, 제2 ECC 변환 데이터에 포함된 패리티 체크 행렬은 제1 ECC 변환 데이터에 포함된 패리티 체크 행렬보다 작은 크기를 가질 수 있다. 따라서 제2 ECC 변환 데이터를 이용하여 데이터 버스트(DB)를 변환하는 경우, 데이터 버스트(DB)의 보호 비트에 대한 신뢰성을 향상시키면서, 변환에 필요한 연산을 감소시킬 수 있다.
일 실시예에서, ECC 선택 회로(210)는 ECC 선택 신호(ECC Sel)가 데이터 버스트(DB)가 기계 학습에 이용되지 않는 데이터인 것을 나타내는 신호이면, 제1 ECC 변환 데이터를 선택하여 출력할 수 있다. 기계 학습에 이용되는 데이터가 아닌 일반 데이터의 경우, 데이터에 포함된 모든 비트들이 비슷한 수준의 중요도를 가질 수 있다. 따라서 ECC 선택 회로(210)는 ECC 선택 신호(ECC Sel)가 데이터 버스트(DB)가 기계 학습에 이용되지 않는 데이터인 것을 나타내는 신호이면, 데이터 버스트(DB)에 포함된 모든 비트들에 대한 오류 감지 및 정정을 위하여, 제1 ECC 변환 데이터를 선택하여 출력할 수 있다.
반대로, ECC 선택 회로(210)는 ECC 선택 신호(ECC Sel)가 데이터 버스트(DB)가 기계 학습에 이용되는 데이터인 것을 나타내는 신호이면, 제2 ECC 변환 데이터를 선택하여 출력할 수 있다.
기계 학습에 이용되는 데이터의 경우, 보호 비트에 오류가 발생하지 않으면, 기계 학습 모델(505)의 동작 신뢰성이 크게 감소되지 않는다. 따라서, ECC 선택 회로(210)는 ECC 선택 신호(ECC Sel)가 데이터 버스트(DB)가 기계 학습에 이용되는 데이터이면, 보호 비트의 오류를 확실하게 정정하기 위하여 제2 ECC 변환 데이터를 선택하여 출력할 수 있다.
일 실시예에서, 제2 ECC 변환 데이터는 기계 학습의 종류 및 특성에 기초하여 복수의 부분 변환 정보들 중에서 하나를 포함하도록 ECC 선택 회로(210)에 의해 설정될 수 있다.
예를 들어, 기계 학습의 종류 및 특성이 사람의 얼굴 인식과 같이 상대적으로 높은 수준의 정확도를 요구하는 것이면, 제2 ECC 변환 데이터는 복수의 부분 변환 정보들 중에서 보호 비트의 개수가 많은 부분 변환 정보를 포함하도록 설정될 수 있다. 또한, 기계 학습의 종류 및 특성이 동물의 종류 구별과 같이 상대적으로 낮은 수준의 정확도를 요구하는 것이면, 제2 ECC 변환 데이터는 복수의 부분 변환 정보들 중에서 보호 비트의 개수가 적은 부분 변환 정보를 포함하도록 설정될 수 있다.
다른 실시예에서, 제2 ECC 변환 데이터는 데이터 버스트(DB)에 요구되는 정확도 및 데이터 버스트(DB)의 변환 시간의 제한에 기초하여 복수의 부분 변환 정보들 중에서 하나를 포함하도록 ECC 선택 회로(210)에 의해 설정될 수 있다.
보다 상세히, 제2 ECC 변환 데이터는 보호 비트의 개수가 데이터 버스트(DB)에 요구되는 정확도에 비례하도록 복수의 부분 변환 정보들 중에서 하나를 포함하도록 설정될 수 있다. 예를 들어, 데이터 버스트(DB)에 요구되는 정확도가 상대적으로 낮은 경우, 제2 ECC 변환 데이터는 복수의 부분 변환 정보들 중에서 보호 비트의 개수가 적은 부분 변환 정보를 포함하도록 설정될 수 있다. 또한, 데이터 버스트(DB)에 요구되는 정확도가 상대적으로 높은 경우, 제2 ECC 변환 데이터는 복수의 부분 변환 정보들 중에서 보호 비트의 개수가 많은 부분 변환 정보를 포함하도록 설정될 수 있다.
제2 ECC 변환 데이터는 보호 비트의 개수가 데이터 버스트(DB)의 변환 시간의 제한에 비례하도록 복수의 부분 변환 정보들 중에서 하나를 포함하도록 ECC 선택 회로(210)에 의해 설정될 수 있다. 예를 들어, 데이터 버스트(DB)의 변환 시간의 제한이 상대적으로 짧은 경우, 제2 ECC 변환 데이터는 복수의 부분 변환 정보들 중에서 보호 비트의 개수가 적은 부분 변환 정보를 포함하도록 설정될 수 있다. 또한, 데이터 버스트(DB)의 변환 시간의 제한이 상대적으로 긴 경우, 제2 ECC 변환 데이터는 복수의 부분 변환 정보들 중에서 보호 비트의 개수가 많은 부분 변환 정보를 포함하도록 설정될 수 있다.
ECC 선택 회로(210)는 스위칭 회로(211), 제1 ECC 변환 데이터 블록(212) 및 제2 ECC 변환 데이터 블록(213)을 포함할 수 있다.
스위칭 회로(211)는 ECC 선택 신호(ECC Sel)에 기초하여 제1 ECC 변환 데이터 블록(212) 및 제2 ECC 변환 데이터 블록(213) 중 하나와 선택적으로 연결될 수 있다.
ECC 선택 신호(ECC Sel)가 제1 ECC 변환 데이터를 출력하도록 하는 신호이면, 스위칭 회로(211)는 제1 ECC 변환 데이터 블록(212)과 연결될 수 있다. 반대로, ECC 선택 신호(ECC Sel)가 제2 ECC 변환 데이터를 출력하도록 하는 신호이면, 스위칭 회로(211)는 제2 ECC 변환 데이터 블록(213)과 연결될 수 있다.
제1 ECC 변환 데이터 블록(212)은 제1 ECC 변환 데이터를 저장할 수 있다. 이때 제1 ECC 변환 데이터 블록(212)은 스위칭 회로(211)와 연결되면, 제1 ECC 변환 데이터를 ECC 변환 회로(220)로 출력할 수 있다. 즉, ECC 선택 신호(ECC Sel)에 따라 제1 ECC 변환 데이터 블록(212)이 스위칭 회로(211)와 연결되면, 제1 ECC 변환 데이터가 ECC 변환 회로(220)로 출력될 수 있다.
제2 ECC 변환 데이터 블록(213)은 제2 ECC 변환 데이터를 저장할 수 있다. 이때 제2 ECC 변환 데이터 블록(213)은 스위칭 회로(211)와 연결되면, 제2 ECC 변환 데이터를 ECC 변환 회로(220)로 출력할 수 있다. 즉, ECC 선택 신호(ECC Sel)에 따라 제2 ECC 변환 데이터 블록(213)이 스위칭 회로(211)와 연결되면, 제2 ECC 변환 데이터가 ECC 변환 회로(220)로 출력될 수 있다.
ECC 변환 회로(220)는 ECC 선택 회로(210)로부터 수신하는 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 변환할 수 있다. 일 실시예에서, ECC 변환 회로(220)는 제1 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화하여 제1 ECC 데이터를 생성하거나, 제2 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화하여 제2 ECC 데이터를 생성할 수 있다. 또한, ECC 변환 회로(220)는 제1 ECC 변환 데이터에 기초하여 데이터 버스트(DB) 및 제1 ECC 데이터를 복호화하거나, 제2 ECC 변환 데이터에 기초하여 데이터 버스트(DB) 및 제2 ECC 데이터를 복호화할 수 있다.
제1 ECC 데이터는 제1 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화함에 따라 생성되는 하나 이상의 패리티 비트를 포함하는 데이터일 수 있다. 이때 제1 ECC 데이터는 데이터 버스트(DB)에 포함된 전체 비트들 중 임의의 하나의 비트에 발생한 오류의 정정이 가능하도록 하는 하나 이상의 패리티 비트를 포함할 수 있다.
제2 ECC 데이터는 제2 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화함에 따라 생성되는 하나 이상의 패리티 비트를 포함하는 데이터일 수 있다. 이때 제2 ECC 데이터는 데이터 버스트(DB)에 포함된 부분 데이터 각각에 포함된 비트들 중에서 미리 설정된 보호 비트에 발생한 오류의 정정이 가능하도록 하는 하나 이상의 패리티 비트를 포함할 수 있다.
ECC 변환 회로(220)는 부호화기(221) 및 복호화기(222)를 포함할 수 있다.
부호화기(221)는 ECC 선택 회로(210)로부터 수신하는 ECC 변환 데이터에 기초하여 호스트(2)로부터 수신한 데이터 버스트(DB)를 부호화할 수 있다. 일 실시예에서, 부호화기(221)는 제1 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화하여 제1 ECC 데이터를 생성하거나, 제2 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화하여 제2 ECC 데이터를 생성할 수 있다. 부호화기(221)는 데이터 버스트(DB) 및 ECC 데이터를 메모리 장치(20)로 출력할 수 있다.
복호화기(222)는 ECC 선택 회로(210)로부터 수신하는 ECC 변환 데이터에 기초하여 메모리 장치(20)로부터 수신한 데이터 버스트(DB) 및 ECC 데이터를 복호화할 수 있다. 일 실시예에서, 복호화기(222)는 제1 ECC 변환 데이터에 기초하여 데이터 버스트(DB) 및 제1 ECC 데이터를 복호화하거나, 제2 ECC 변환 데이터에 기초하여 데이터 버스트(DB) 및 제2 ECC 데이터를 복호화할 수 있다.
일 실시예에서, 복호화기(222)는 메모리 장치(20)로부터 ECC 데이터가 제1 ECC 데이터 및 제2 ECC 데이터 중 어느 것인지 확인할 수 없을 수 있다. 이때 메모리 컨트롤러(10)가 호스트(2)로부터 독출 요청과 함께 수신한 ECC 선택 신호(ECC Sel)에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중 하나를 선택하여 복호화기(222)로 전달함에 따라, 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중 부호화에 이용된 ECC 변환 데이터를 이용하여 데이터 버스트(DB) 및 ECC 데이터를 복호화할 수 있다.
일 실시예에서, ECC 변환 회로(220)는 제1 ECC 변환 데이터 또는 제2 ECC 변환 데이터에 의해 회로 연결이 변경될 수 있다. 예를 들어, ECC 변환 회로(220)는 제1 ECC 변환 데이터 또는 제2 ECC 변환 데이터에 포함된 패리티 체크 행렬에 기초한 연산을 수행할 수 있도록, 회로 연결이 변경될 수 있다.
상술한 바와 같은 메모리 컨트롤러(10)에 포함된 ECC 회로(200)를 이용하면, ECC 선택 신호(ECC Sel)에 기초하여 데이터 버스트(DB)에 포함된 부분 데이터 각각에 포함된 비트들 중에서 미리 설정된 보호 비트에 대한 오류 정정이 가능하도록 데이터 버스트(DB)를 부호화 함으로써, 메모리 장치(20)에 저장된 데이터의 신뢰성을 향상시킬 수 있다. 또한, 보호 비트에 대한 복구 성능을 향상시키면서, 메모리 시스템(1)의 동작 속도를 향상시킬 수 있다.
도 4는 본 개시의 일 실시예에 따른 메모리 컨트롤러의 데이터 버스트를 부호화 방법을 나타내는 순서도이다.
도 4를 참조하면, 단계 S410에서, 메모리 컨트롤러(10)는 호스트(2)로부터 데이터 버스트(DB) 및 ECC 선택 신호(ECC Sel)를 수신할 수 있다.
데이터 버스트(DB) 및 ECC 선택 신호(ECC Sel)는 메모리 컨트롤러(10)의 ECC 회로(200)로 입력될 수 있다. 이때 ECC 선택 신호(ECC Sel)는 ECC 회로(200)의 ECC 선택 회로(210)로 입력되고, 데이터 버스트(DB)는 ECC 회로(200)의 ECC 변환 회로(220)로 입력될 수 있다.
단계 S420에서, 메모리 컨트롤러(10)는 ECC 선택 신호(ECC Sel)에 기초하여 ECC 변환 데이터를 선택할 수 있다.
메모리 컨트롤러(10)는 ECC 회로(200)의 ECC 선택 회로(210)를 통해, ECC 선택 신호(ECC Sel)에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하여 출력할 수 있다.
이때 ECC 선택 신호(ECC Sel)는 데이터 버스트(DB)가 기계 학습에 이용되는 데이터인지 여부, 기계 학습의 종류 및 특성, 데이터 버스트(DB)에 요구되는 정확도 및 데이터 버스트(DB)의 변환 시간의 제한에 기초하여 호스트(2)에 의해 설정된 신호일 수 있다.
ECC 선택 회로(210)가 ECC 선택 신호(ECC Sel)에 기초하여 ECC 변환 데이터를 선택하는 일 예시는 도 5를 통해 확인할 수 있다.
도 5는 본 개시의 일 실시예에 따른 메모리 컨트롤러가 ECC 정보를 선택하는 방법을 나타내는 순서도이다.
도 5를 참조하면, 단계 S510에서, ECC 선택 회로(210)는 데이터 버스트(DB)가 기계 학습에 이용되는 데이터인지 판단할 수 있다.
ECC 선택 회로(210)는 ECC 선택 신호(ECC Sel)가 데이터 버스트(DB)가 기계 학습에 이용되는 데이터인 것을 나타내는 신호인지 판단하여, 데이터 버스트(DB)가 기계 학습에 이용되는 데이터인지 판단할 수 있다.
데이터 버스트(DB)가 기계 학습에 이용되는 데이터이면, 단계 S520으로 이동하여, ECC 선택 회로(210)는 제2 ECC 변환 데이터를 선택할 수 있다.
반대로, 데이터 버스트(DB)가 기계 학습에 이용되는 데이터가 아니면, 단계 S530으로 이동하여, ECC 선택 회로(210)는 제1 ECC 변환 데이터를 선택할 수 있다.
도 4로 돌아와서, 단계 S430에서, 메모리 컨트롤러(10)는 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화할 수 있다.
메모리 컨트롤러(10)는 ECC 회로(200)의 ECC 변환 회로(220)를 통해 ECC 선택 회로(210)로부터 수신한 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화할 수 있다.
ECC 선택 회로(210)로부터 제1 ECC 변환 데이터를 수신하면, ECC 변환 회로(220)는 제1 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화하여 제1 ECC 데이터를 생성할 수 있다. ECC 선택 회로(210)로부터 제2 ECC 변환 데이터를 수신하면, ECC 변환 회로(220)는 제2 ECC 변환 데이터에 기초하여 데이터 버스트(DB)를 부호화하여 제2 ECC 데이터를 생성할 수 있다.
단계 S440에서, 메모리 컨트롤러(10)는 데이터 버스트(DB) 및 ECC 데이터를 메모리 장치(20)에 저장할 수 있다.
메모리 컨트롤러(10)는 ECC 변환 회로(220)를 통해 데이터 버스트(DB)를 부호화하여 생성한 ECC 데이터를 데이터 버스트(DB)와 함께 메모리 장치(20)에 저장할 수 있다.
도 6는 본 개시의 일 실시예에 따른 메모리 컨트롤러에서 부호화되는 데이터 버스트의 부분 데이터에 포함된 보호 비트를 나타내는 순서도이다.
도 6을 참조하면, 제1 케이스와 제2 케이스에서 데이터 버스트(DB)의 부분 데이터에 대하여 설정된 보호 비트들을 확인할 수 있다. 제1 케이스 및 제2 케이스에서 보호 비트들은 부분 데이터의 최상위 비트를 포함하는 연속되는 비트들을 포함할 수 있다.
도 6의 실시예에서, 제1 케이스는 제2 케이스와 비교하여, 데이터 버스트(DB)에 요구되는 정확도가 상대적으로 낮고, 데이터 버스트(DB)의 변환 시간의 제한이 상대적으로 짧을 수 있다.
제1 케이스에서 보호 비트로 설정된 비트들의 개수는 제2 케이스에서 보호 비트로 설정된 비트들의 개수보다 적을 수 있다. 이때 ECC 선택 회로(210)는 제1 케이스에서 복수의 부분 변환 정보들 중에서 적은 개수의 보호 비트에 대한 오류 정정이 가능한 부분 변환 정보를 포함하도록 제2 ECC 변환 데이터를 설정할 수 있다. 그리고 ECC 선택 회로(210)는 제2 케이스에서 복수의 부분 변환 정보들 중에서 많은 개수의 보호 비트에 대한 오류 정정이 가능한 부분 변환 정보를 포함하도록 제2 ECC 변환 데이터를 설정할 수 있다.
도 7은 본 개시의 일 실시예에 따른 메모리 컨트롤러의 데이터 버스트를 복호화 방법을 나타내는 순서도이다.
도 7을 참조하면, 단계 S710에서, 메모리 컨트롤러(10)는 호스트(2)로부터 독출 요청 및 ECC 선택 신호(ECC Sel)를 수신할 수 있다.
독출 요청 및 ECC 선택 신호(ECC Sel)는 메모리 컨트롤러(10)의 ECC 회로(200)로 입력될 수 있다. 이때 데이터 버스트(DB)는 ECC 회로(200)의 ECC 선택 회로(210)로 입력될 수 있다.
단계 S720에서, 메모리 컨트롤러(10)는 ECC 선택 신호(ECC Sel)에 기초하여 ECC 변환 데이터를 선택할 수 있다.
메모리 컨트롤러(10)는 ECC 회로(200)의 ECC 선택 회로(210)를 통해, ECC 선택 신호(ECC Sel)에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하여 출력할 수 있다.
이때 ECC 선택 신호(ECC Sel)는 메모리 장치(20)에서 독출할 데이터 버스트(DB)가 기계 학습에 이용되는 데이터인지 여부, 기계 학습의 종류 및 특성, 데이터 버스트(DB)에 요구되는 정확도 및 데이터 버스트(DB)의 변환 시간의 제한에 기초하여 호스트(2)에 의해 설정된 신호일 수 있다.
ECC 선택 회로(210)가 ECC 선택 신호(ECC Sel)에 기초하여 ECC 변환 데이터를 선택하는 방법은 도 3 내지 도 5를 참조하여 상술한 바와 같을 수 있다
단계 S730에서, 메모리 컨트롤러(10)는 메모리 장치(20)로부터 데이터 버스트(DB) 및 ECC 데이터를 수신할 수 있다.
메모리 컨트롤러(10)는 독출 요청에 기초하여 메모리 장치(20)에서 데이터 버스트(DB)와 함께, 데이터 버스트(DB)에 대응되는 ECC 데이터를 독출할 수 있다. 메모리 컨트롤러(10)가 메모리 장치(20)로부터 수신한 데이터 버스트(DB) 및 ECC 데이터는 ECC 회로(200)의 ECC 변환 회로(220)로 입력될 수 있다.
단계 S740에서, 메모리 컨트롤러(10)는 ECC 변환 데이터에 기초하여 데이터 버스트(DB) 및 ECC 데이터를 복호화할 수 있다.
메모리 컨트롤러(10)는 ECC 회로(200)의 ECC 변환 회로(220)를 통해 ECC 선택 회로(210)로부터 수신한 ECC 변환 데이터에 기초하여 메모리 장치(20)로부터 수신한 데이터 버스트(DB) 및 데이터 버스트(DB)에 대응되는 ECC 데이터를 복호화할 수 있다.
ECC 선택 회로(210)로부터 제1 ECC 변환 데이터를 수신하면, ECC 변환 회로(220)는 제1 ECC 변환 데이터에 기초하여 데이터 버스트(DB) 및 데이터 버스트(DB)에 대응되는 ECC 데이터를 복호화할 수 있다. ECC 선택 회로(210)로부터 제2 ECC 변환 데이터를 수신하면, ECC 변환 회로(220)는 제2 ECC 변환 데이터에 기초하여 데이터 버스트(DB) 및 데이터 버스트(DB)에 대응되는 ECC 데이터를 복호화할 수 있다.
ECC 변환 회로(220)가 데이터 버스트(DB) 및 데이터 버스트(DB)에 대응되는 ECC 데이터를 복호화함에 따라, 데이터 버스트(DB)에 포함된 보호 비트들에서 발생한 오류가 정정될 수 있다.
단계 S750에서, 메모리 컨트롤러(10)는 데이터 버스트(DB)를 호스트(2)로 전송할 수 있다.
메모리 컨트롤러(10)는 상술한 바와 같은 복호화 과정을 통해 오류를 정정한 데이터 버스트(DB)를 호스트(2)로 전송할 수 있다.
도 8은 본 개시의 다른 실시예에 따른 메모리 시스템을 기입 동작을 중심으로 나타내는 블록도이다.
도 8을 참조하면, 본 개시의 다른 실시예에 따른 메모리 시스템(3)은 메모리 컨트롤러(30) 및 메모리 장치(40)를 포함할 수 있다.
본 개시의 다른 실시예에서, 메모리 컨트롤러(30)는 프로세서(300)를 포함할 수 있으며, 메모리 장치(40)는 ECC 회로(400) 및 복수의 메모리 셀 어레이들(500)을 포함할 수 있다. 즉, 본 개시의 다른 실시예에 따른 메모리 시스템(3)에서 ECC 회로(400)는 메모리 컨트롤러(30)가 아닌 메모리 장치(40)에 포함될 수 있다.
메모리 컨트롤러(30)는 호스트(2)로부터 ECC 선택 신호(ECC Sel), 기입 요청(Write Req) 및 데이터 버스트(DB)를 수신할 수 있다. 메모리 컨트롤러(30)는 수신한 ECC 선택 신호(ECC Sel) 및 데이터 버스트(DB)를 메모리 장치(40)로 전송할 수 있다.
메모리 컨트롤러(30)에 포함된 프로세서(300)의 동작은 도 1의 메모리 컨트롤러(10)에 포함된 프로세서(100)의 동작과 동일할 수 있다.
메모리 장치(40)의 ECC 회로(400)는 메모리 컨트롤러(30)로부터 ECC 선택 신호(ECC Sel) 및 데이터 버스트(DB)를 수신할 수 있다. ECC 회로(400)는 ECC 선택 신호(ECC Sel)에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하고, 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 선택된 하나에 기초하여 데이터 버스트(DB)를 부호화하여 제1 ECC 데이터 또는 제2 ECC 데이터를 생성할 수 있다. 그리고 ECC 회로(400)는 데이터 버스트(DB) 및 ECC 데이터를 복수의 메모리 셀 어레이들(500)로 전송할 수 있다.
ECC 회로(400)가 ECC 변환 데이터를 선택하는 방법, 데이터 버스트(DB)를 부호화하여 ECC 데이터를 생성하는 구체적인 방법 등과 같은 동작 및 ECC 회로(400)의 구성은 상술한 바와 같은 도 1 내지 도 7을 통해 상술한 ECC 회로(200)의 동작 및 구성과 유사할 수 있다.
복수의 메모리 셀 어레이들(500)은 데이터 버스트(DB)와 함께, ECC 회로(400)에 의해 생성된 제1 ECC 데이터 또는 제2 ECC 데이터를 저장할 수 있다.
도 9는 본 개시의 다른 실시예에 따른 메모리 시스템을 독출 동작을 중심으로 나타내는 블록도이다.
도 9를 참조하면, 도 8의 메모리 시스템(3)에서 신호 흐름만 다르게 표시된 블록도를 확인할 수 있다.
메모리 컨트롤러(30)는 호스트(2)로부터 ECC 선택 신호(ECC Sel) 및 독출 요청(Read Req)을 수신할 수 있다. 메모리 컨트롤러(30)는 수신한 ECC 선택 신호(ECC Sel)를 메모리 장치(40)로 전송할 수 있다.
메모리 장치(40)는 복수의 메모리 셀 어레이들(500)에서 데이터 버스트(DB) 및 ECC 데이터를 독출할 수 있다. 복수의 메모리 셀 어레이들(500)에서 독출된 데이터 버스트(DB) 및 ECC 데이터는 ECC 선택 신호(ECC Sel)에 기초하여 ECC 회로(400)에서 복호화될 수 있다. ECC 회로(400)가 데이터 버스트(DB) 및 데이터 버스트(DB)에 대응되는 ECC 데이터를 복호화함에 따라, 데이터 버스트(DB)에 포함된 보호 비트들에서 발생한 오류가 정정될 수 있다.
메모리 장치(40)는 복호화한 데이터 버스트(DB)를 메모리 컨트롤러(30)로 전송할 수 있다. 메모리 컨트롤러(30)는 수신한 데이터 버스트(DB)를 독출 요청(Read Req)에 대한 응답으로 호스트(4)로 전송할 수 있다.
도 10은 본 개시의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 10을 참조하면, 전자 장치(1000)는 프로세서(1100), 메모리 장치(1200), 스토리지 장치(1300), 모뎀(1400), 입출력 장치(1500) 및 파워 서플라이(1600)를 포함할 수 있다. 이때 스토리지 장치(1300)는 도 1 내지 도 9를 통해 상술한 바와 같은 메모리 시스템(1, 3) 중 어느 하나를 포함하도록 구현될 수 있다.
본 개시의 일 실시예에 따른 메모리 컨트롤러(10, 30)에 따르면, ECC 선택 신호(ECC Sel)에 기초하여 데이터 버스트(DB)에 포함된 부분 데이터 각각에 포함된 비트들 중에서 미리 설정된 보호 비트에 대한 오류 정정이 가능하도록 데이터 버스트를 부호화 함으로써, 메모리 장치에 저장된 데이터의 신뢰성을 향상시킬 수 있다. 또한, 보호 비트에 대한 복구 성능을 향상시키면서, 메모리 시스템의 동작 속도를 향상시킬 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 메모리 장치를 제어하는 메모리 컨트롤러로서,
    데이터 버스트를 수신하여 제1 ECC(Error Correction Code) 데이터 또는 제2 ECC 데이터를 생성하는 ECC 회로; 및
    상기 ECC 회로의 동작을 제어하는 프로세서를 포함하고,
    상기 ECC 회로는
    상기 메모리 컨트롤러 외부로부터 수신한 ECC 선택 신호에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하여 출력하는 ECC 선택 회로; 및
    상기 제1 ECC 변환 데이터에 기초하여 상기 데이터 버스트를 부호화하여 상기 제1 ECC 데이터를 생성하거나, 상기 제2 ECC 변환 데이터에 기초하여 상기 데이터 버스트를 부호화하여 상기 제2 ECC 데이터를 생성하는 ECC 변환 회로를 포함하고,
    상기 제2 ECC 변환 데이터는 상기 데이터 버스트에 포함된 부분 데이터 각각에 포함된 비트들 중에서 미리 설정된 보호 비트에 발생한 오류의 정정이 가능하도록 설정되는 것을 특징으로 하는
    메모리 컨트롤러.
  2. 제1항에 있어서,
    상기 ECC 선택 회로는
    상기 ECC 선택 신호가 상기 데이터 버스트가 기계 학습에 이용되지 않는 데이터인 것을 나타내는 신호이면, 상기 제1 ECC 변환 데이터를 선택하여 출력하고,
    상기 ECC 선택 신호가 상기 데이터 버스트가 상기 기계 학습에 이용되는 데이터인 것을 나타내는 신호이면, 상기 제2 ECC 변환 데이터를 선택하여 출력하는 것을 특징으로 하는
    메모리 컨트롤러.
  3. 제2항에 있어서,
    상기 제2 ECC 변환 데이터는 상기 기계 학습의 종류 및 특성에 기초하여 복수의 부분 변환 정보들 중에서 하나를 포함하도록 설정되는 것을 특징으로 하는
    메모리 컨트롤러.
  4. 제2항에 있어서,
    상기 제2 ECC 변환 데이터는 상기 데이터 버스트에 요구되는 정확도 및 상기 데이터 버스트의 변환 시간의 제한에 기초하여 복수의 부분 변환 정보들 중에서 하나를 포함하도록 설정되는 것을 특징으로 하는
    메모리 컨트롤러.
  5. 제4항에 있어서,
    상기 복수의 부분 변환 정보들 각각은 서로 다른 개수의 보호 비트에 발생한 오류의 정정이 가능하도록 설정되는 것을 특징으로 하는
    메모리 컨트롤러.
  6. 제1항에 있어서,
    상기 보호 비트는 상기 부분 데이터의 최상위 비트(Most Significant Bit; MSB)를 포함하는 것을 특징으로 하는
    메모리 컨트롤러.
  7. 제1항에 있어서,
    상기 ECC 선택 회로는
    상기 제1 ECC 변환 데이터를 저장하는 제1 ECC 변환 데이터 블록;
    상기 제2 ECC 변환 데이터를 저장하는 제2 ECC 변환 데이터 블록; 및
    상기 ECC 선택 신호에 기초하여 상기 제1 ECC 변환 데이터 블록 및 제2 ECC 변환 데이터 블록 중 하나와 선택적으로 연결되는 스위칭 회로를 포함하는 것을 특징으로 하는
    메모리 컨트롤러.
  8. 메모리 시스템으로서,
    메모리 장치; 및
    상기 메모리 장치로 데이터 버스트 및 ECC(Error Correction Code) 선택 신호를 전송하는 메모리 컨트롤러를 포함하고,
    상기 메모리 장치는
    상기 ECC 선택 신호에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하고, 상기 제1 ECC 변환 데이터 및 상기 제2 ECC 변환 데이터 중에서 선택된 하나에 기초하여 상기 데이터 버스트를 부호화하여 제1 ECC 데이터 또는 제2 ECC 데이터를 생성하는 ECC 회로; 및
    상기 데이터 버스트와 함께, 상기 ECC 회로에 의해 생성된 상기 제1 ECC 데이터 또는 상기 제2 ECC 데이터를 저장하는 복수의 메모리 셀 어레이들을 포함하는 것을 특징으로 하는
    메모리 시스템.
  9. 제8항에 있어서,
    상기 제2 ECC 변환 데이터는 상기 데이터 버스트에 포함된 부분 데이터 각각에 포함된 비트들 중에서 미리 설정된 보호 비트에 발생한 오류의 정정이 가능하도록 설정되는 것을 특징으로 하는
    메모리 시스템.
  10. 메모리 시스템으로서,
    메모리 장치; 및
    상기 메모리 장치로 독출 명령 및 ECC(Error Correction Code) 선택 신호를 전송하는 메모리 컨트롤러를 포함하고,
    상기 메모리 장치는
    데이터 버스트 및 상기 데이터 버스트와 관련된 ECC 데이터를 저장하는 복수의 메모리 셀 어레이들; 및
    상기 독출 명령에 응답하여, 상기 ECC 선택 신호에 기초하여 제1 ECC 변환 데이터 및 제2 ECC 변환 데이터 중에서 하나를 선택하고, 상기 제1 ECC 변환 데이터 및 상기 제2 ECC 변환 데이터 중에서 선택된 하나에 기초하여 상기 복수의 메모리 셀 어레이들에서 출력되는 상기 데이터 버스트 및 상기 ECC 데이터를 복호화하는 ECC 회로를 포함하는 것을 특징으로 하는
    메모리 시스템.
KR1020220144728A 2022-11-02 2022-11-02 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 Pending KR20240062803A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220144728A KR20240062803A (ko) 2022-11-02 2022-11-02 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US18/380,185 US12237034B2 (en) 2022-11-02 2023-10-15 Memory controller and memory system including the same
CN202311437406.1A CN117992271A (zh) 2022-11-02 2023-10-31 存储器控制器和包括该存储器控制器的存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220144728A KR20240062803A (ko) 2022-11-02 2022-11-02 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20240062803A true KR20240062803A (ko) 2024-05-09

Family

ID=90834208

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220144728A Pending KR20240062803A (ko) 2022-11-02 2022-11-02 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Country Status (3)

Country Link
US (1) US12237034B2 (ko)
KR (1) KR20240062803A (ko)
CN (1) CN117992271A (ko)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7137057B2 (en) * 2003-01-07 2006-11-14 Sun Microsystems, Inc. Method and apparatus for performing error correction code (ECC) conversion
US7447950B2 (en) * 2003-05-20 2008-11-04 Nec Electronics Corporation Memory device and memory error correction method
JP4288486B2 (ja) * 2003-11-17 2009-07-01 日本電気株式会社 ディスクアレイ装置,raid用パリティデータ生成回路およびガロア体乗算回路
CA2665900C (en) 2006-10-02 2014-06-03 Interdigital Technology Corporation Method and apparatus for encoding channel quality indicator and precoding control information bits
WO2008078529A1 (ja) 2006-12-26 2008-07-03 Advantest Corporation 試験装置および試験方法
JP5492679B2 (ja) * 2009-06-30 2014-05-14 パナソニック株式会社 記憶装置およびメモリコントローラ
US8892980B2 (en) * 2010-06-15 2014-11-18 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
TWI455144B (zh) 2010-07-22 2014-10-01 Silicon Motion Inc 使用於快閃記憶體的控制方法與控制器
US9037949B1 (en) 2012-06-21 2015-05-19 Rambus Inc. Error correction in a memory device
KR101419335B1 (ko) 2012-11-23 2014-07-16 한양대학교 산학협력단 멀티 레벨 셀 플래시 메모리의 페이지 단위 클러스터링 장치 및 방법
WO2014096503A1 (en) 2012-12-18 2014-06-26 Nokia Corporation Method and apparatus for selective error correction coding
US10903858B2 (en) 2015-05-27 2021-01-26 Quantum Corporation Dynamically variable error correcting code (ECC) system with hybrid rateless reed-solomon ECCs
JP6605359B2 (ja) * 2016-03-02 2019-11-13 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス制御方法
KR102659892B1 (ko) 2018-07-24 2024-04-24 삼성전자주식회사 객체 인식 장치, 이를 포함하는 전자 장치 및 객체 인식 방법
US11742879B2 (en) 2019-03-13 2023-08-29 Samsung Electronics Co., Ltd. Machine-learning error-correcting code controller
US20220012126A1 (en) 2021-09-23 2022-01-13 Intel Corporation Translation cache and configurable ecc memory for reducing ecc memory overhead
US11829245B2 (en) * 2022-03-16 2023-11-28 Micron Technology, Inc. Multi-layer code rate architecture for copyback between partitions with different code rates

Also Published As

Publication number Publication date
CN117992271A (zh) 2024-05-07
US20240145025A1 (en) 2024-05-02
US12237034B2 (en) 2025-02-25

Similar Documents

Publication Publication Date Title
US11386952B2 (en) Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
KR102579014B1 (ko) 에러 정정 코드 디코더, 반도체 메모리 장치 및 메모리 시스템
US10824523B2 (en) Data storage device and operating method thereof
US11257546B2 (en) Reading of soft bits and hard bits from memory cells
US10268540B2 (en) Data storage device and operating method thereof
KR20180019791A (ko) 반도체장치 및 반도체시스템
KR102647418B1 (ko) 반도체장치 및 반도체시스템
US11994945B2 (en) Managing write disturb for units of memory in a memory sub-system
KR20180000593A (ko) 데이터의 오류를 정정하는 방법 및 이를 이용하는 반도체장치
US10055286B2 (en) Data storage device and operating method thereof
US20250085867A1 (en) Error Logging for a Memory Device with On-Die Wear Leveling
US10917111B2 (en) Error correction code unit and error correction method
KR20190060258A (ko) 에러스크럽방법 및 이를 이용한 반도체모듈
KR20240062803A (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
KR20190043043A (ko) 전자장치
US10866855B2 (en) Memory system varying operation of memory controller according to internal status of memory device
KR102686058B1 (ko) 반도체장치
US11996860B2 (en) Scaled bit flip thresholds across columns for irregular low density parity check decoding
KR102638789B1 (ko) 테스트방법 및 이를 이용한 반도체시스템
KR102686057B1 (ko) 반도체장치 및 반도체시스템
US11869584B2 (en) Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
US12243577B2 (en) Automated voltage demarcation (VDM) adjustment for memory device
KR20240135252A (ko) 에러 정정을 수행하는 에러 정정 디코더, 에러 정정 디코더를 포함하는 저장 장치 및 그 동작 방법

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20221102

PG1501 Laying open of application