KR102273153B1 - Memory controller storing data in approximate momory device based on priority-based ecc, non-transitory computer-readable medium storing program code, and electronic device comprising approximate momory device and memory controller - Google Patents

Memory controller storing data in approximate momory device based on priority-based ecc, non-transitory computer-readable medium storing program code, and electronic device comprising approximate momory device and memory controller Download PDF

Info

Publication number
KR102273153B1
KR102273153B1 KR1020190047910A KR20190047910A KR102273153B1 KR 102273153 B1 KR102273153 B1 KR 102273153B1 KR 1020190047910 A KR1020190047910 A KR 1020190047910A KR 20190047910 A KR20190047910 A KR 20190047910A KR 102273153 B1 KR102273153 B1 KR 102273153B1
Authority
KR
South Korea
Prior art keywords
data
memory
bits
region
memory device
Prior art date
Application number
KR1020190047910A
Other languages
Korean (ko)
Other versions
KR20200124504A (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 KR1020190047910A priority Critical patent/KR102273153B1/en
Priority to US16/661,622 priority patent/US11144386B2/en
Publication of KR20200124504A publication Critical patent/KR20200124504A/en
Application granted granted Critical
Publication of KR102273153B1 publication Critical patent/KR102273153B1/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40611External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/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/0793Remedial or corrective actions
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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/0625Power saving in 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/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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • G11C11/4085Word line control circuits, e.g. word line drivers, - boosters, - pull-up, - pull-down, - precharge
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • 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/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/44Indication or identification of errors, e.g. for repair
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • 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/0409Online test
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 발명의 실시 예에 따른 메모리 컨트롤러는 제 1 데이터의 일부 비트들을 에러 정정 연산을 위한 패리티 비트들로 변환하고 그리고 일부 비트들로부터 대체된 패리티 비트들과 제 1 데이터의 나머지 비트들을 포함하는 제 2 데이터를 생성하도록 구성되는 에러 정정 회로, 및 제 1 데이터 대신에 제 2 데이터를 메모리 장치로 전송하도록 구성되는 물리 계층을 포함한다.The memory controller according to an embodiment of the present invention converts some bits of the first data into parity bits for an error correction operation, and includes parity bits replaced from some bits and the remaining bits of the first data. an error correction circuit configured to generate data, and a physical layer configured to transmit second data in place of the first data to the memory device.

Description

우선순위 기반의 ECC에 기초하여 데이터를 근사적 메모리 장치에 저장하는 메모리 컨트롤러, 프로그램 코드를 저장하는 비일시적 컴퓨터 판독 가능한 매체, 그리고 근사적 메모리 장치와 메모리 컨트롤러를 포함하는 전자 장치{MEMORY CONTROLLER STORING DATA IN APPROXIMATE MOMORY DEVICE BASED ON PRIORITY-BASED ECC, NON-TRANSITORY COMPUTER-READABLE MEDIUM STORING PROGRAM CODE, AND ELECTRONIC DEVICE COMPRISING APPROXIMATE MOMORY DEVICE AND MEMORY CONTROLLER}A memory controller for storing data in an approximate memory device based on priority-based ECC, a non-transitory computer readable medium for storing program code, and an electronic device including an approximate memory device and a memory controller IN APPROXIMATE MOMORY DEVICE BASED ON PRIORITY-BASED ECC, NON-TRANSITORY COMPUTER-READABLE MEDIUM STORING PROGRAM CODE, AND ELECTRONIC DEVICE COMPRISING APPROXIMATE MOMORY DEVICE AND MEMORY CONTROLLER}

본 발명은 우선순위 기반의 ECC에 기초하여 데이터를 근사적 메모리 장치에 저장하는 메모리 컨트롤러, 프로그램 코드를 저장하는 비일시적 컴퓨터 판독 가능한 매체, 그리고 근사적 메모리 장치와 메모리 컨트롤러를 포함하는 전자 장치에 관한 것이다.The present invention relates to a memory controller for storing data in an approximate memory device based on priority-based ECC, a non-transitory computer readable medium for storing program codes, and an electronic device including the approximate memory device and the memory controller. will be.

생물학적인 신경망과 유사한 인공 신경망(artificial neural network; ANN)에 기반하는 인공지능 기술이 이미지 인식, 음성 인식, 번역, 검색, 딥러닝, 데이터 수집 및 분석, 자율 주행 등과 같은 다양한 분야에서 사용되고 있다. 컴퓨팅 장치의 하드웨어가 발전함에 따라, 다수의 은닉층들을 포함하는 심층 신경망(DNN)이 주로 사용되고 있다.Artificial intelligence technology based on an artificial neural network (ANN) similar to a biological neural network is being used in various fields such as image recognition, speech recognition, translation, search, deep learning, data collection and analysis, and autonomous driving. As the hardware of the computing device develops, a deep neural network (DNN) including a plurality of hidden layers is mainly used.

신경망의 학습, 트레이닝, 또는 추론에 있어서, 다수의 파라미터(parameter)들이 생성되고, 참조되고, 또는 업데이트될 수 있다. 이러한 파라미터들이 증가함에 따라, 파라미터들을 저장하기 위한 메모리 장치의 용량, 개수, 집적도 등도 증가하고 있다. 따라서, 신경망을 실행하는데 요구되는 메모리 장치의 전력 소모를 줄이는 것이 필요하다.In learning, training, or inference of a neural network, multiple parameters may be created, referenced, or updated. As these parameters increase, the capacity, number, and density of memory devices for storing parameters also increase. Therefore, it is necessary to reduce the power consumption of the memory device required to execute the neural network.

본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 우선순위 기반의 ECC에 기초하여 데이터를 근사적 메모리 장치에 저장하는 메모리 컨트롤러, 프로그램 코드를 저장하는 비일시적 컴퓨터 판독 가능한 매체, 그리고 근사적 메모리 장치와 메모리 컨트롤러를 포함하는 전자 장치를 제공할 수 있다.The present invention is to solve the above technical problem, the present invention is a memory controller for storing data in an approximate memory device based on priority-based ECC, a non-transitory computer-readable medium for storing a program code, and an approximate An electronic device including an external memory device and a memory controller may be provided.

본 발명의 실시 예에 따른 메모리 컨트롤러는 제 1 데이터의 일부 비트들을 에러 정정 연산을 위한 패리티 비트들로 변환하고 그리고 일부 비트들로부터 대체된 패리티 비트들과 제 1 데이터의 나머지 비트들을 포함하는 제 2 데이터를 생성하도록 구성되는 에러 정정 회로, 및 제 1 데이터 대신에 제 2 데이터를 메모리 장치로 전송하도록 구성되는 물리 계층을 포함한다.The memory controller according to an embodiment of the present invention converts some bits of the first data into parity bits for an error correction operation, and includes parity bits replaced from some bits and the remaining bits of the first data. an error correction circuit configured to generate data, and a physical layer configured to transmit second data in place of the first data to the memory device.

본 발명의 다른 실시 예에 따른 프로그램 코드를 포함하는 비일시적 컴퓨터 판독 가능한 매체에 있어서, 프로그램 코드가 프로세서에 의해 실행될 때, 프로세서는 제 1 데이터의 일부 비트들을 에러 정정 연산을 위한 패리티 비트들로 변환하는 단계, 일부 비트들이 대체된 패리티 비트들과 제 1 데이터의 나머지 비트들을 포함하는 제 2 데이터를 생성하는 단계, 및 제 2 데이터를 메모리 장치에 저장하기 위한 쓰기 명령을 생성하는 단계를 수행한다.In a non-transitory computer-readable medium including a program code according to another embodiment of the present invention, when the program code is executed by a processor, the processor converts some bits of the first data into parity bits for an error correction operation and generating second data including parity bits in which some bits have been replaced and remaining bits of the first data, and generating a write command for storing the second data in the memory device.

본 발명의 또 다른 실시 예에 따른 전자 장치는 제 1 데이터를 생성하도록 구성되는 프로세서, 제 1 데이터의 일부 비트들을 에러 정정 연산을 위한 패리티 비트들로 변환하고 그리고 일부 비트들이 대체된 패리티 비트들과 제 1 데이터의 나머지 비트들을 포함하는 제 2 데이터를 생성하도록 구성되는 메모리 컨트롤러, 및 메모리 컨트롤러로부터 전송되는 제 2 데이터를 저장하도록 구성되는 메모리 장치를 포함한다.An electronic device according to another embodiment of the present invention includes a processor configured to generate first data, convert some bits of the first data into parity bits for an error correction operation, and replace some bits with parity bits a memory controller configured to generate second data including the remaining bits of the first data; and a memory device configured to store second data transmitted from the memory controller.

본 발명의 실시 예에 따른 메모리 컨트롤러는 우선순위 ECC에 기초하여 데이터를 근사적 메모리 장치에 저장할 수 있다. 메모리 컨트롤러는 근사적 메모리 장치의 리프레쉬 전력 소모를 줄일 수 있다. 메모리 컨트롤러는 근사적 메모리 장치의 리프레쉬 속도를 BER에 따라 조정할 수 있고 낮은 리프레쉬 속도로 동작하는 메모리 장치에서 발생할 수 있는 에러를 우선순위 ECC를 이용하여 정정할 수 있다.The memory controller according to an embodiment of the present invention may store data in the approximate memory device based on the priority ECC. The memory controller may reduce refresh power consumption of the approximate memory device. The memory controller may adjust the approximate refresh rate of the memory device according to the BER, and may correct errors that may occur in the memory device operating at a low refresh rate using priority ECC.

도 1은 본 발명의 실시 예에 따른 전자 장치의 예시적인 블록도를 도시한다.
도 2a는 도 1의 제 1 데이터가 제 2 데이터로 변환되는 예시를 도시한다.
도 2b는 도 1의 제 1 데이터의 일부 비트들의 예시적인 값들을 도시한다.
도 2c는 도 1의 제 1 데이터가 제 2 데이터로 변환되는 다른 예시를 도시한다.
도 3은 도 1의 전자 장치의 예시적인 블록도를 좀 더 구체적으로 도시한다.
도 4는 도 3의 제 2 데이터가 메모리 장치의 뱅크에 저장되는 예시를 도시한다.
도 5는 도 3의 메모리 컨트롤러가 제 2 데이터를 메모리 장치에 저장하기 위한 예시적인 순서도를 도시한다.
도 6은 도 3의 메모리 컨트롤러가 메모리 장치의 에러 구역과 에러-프리 구역을 조정하기 위한 예시적인 순서도를 도시한다.
도 7은 도 3의 메모리 컨트롤러가 온도와 BER에 따라 리프레쉬 비율을 조정하기 위한 예시적인 순서도를 도시한다.
도 8은 BER과 리프레쉬 간의 관계를 나타내는 룩업 테이블의 예시를 도시한다.
도 9는 도 3의 메모리 장치가 리프레쉬 명령을 수행하기 위한 예시적인 순서도를 도시한다.
도 10은 본 발명의 다른 실시 예에 따른 도 1의 전자 장치의 예시적인 블록도를 좀 더 구체적으로 도시한다.
도 11은 도 10의 제 2 데이터가 메모리 장치의 뱅크에 저장되는 예시를 도시한다.
도 12는 본 발명의 실시 예에 따른 도 1의 메모리 장치를 도시한다.
도 13은 본 발명의 다른 실시 예에 따른 도 1의 메모리 장치를 도시한다.
도 14는 본 발명의 다른 실시 예에 따른 전자 장치의 예시적인 블록도를 도시한다.
도 15는 도 14의 메모리 컨트롤러의 동작 방법을 나타내는 예시적인 순서도를 도시한다.
도 16은 본 발명의 또 다른 실시 예에 따른 전자 장치의 예시적인 블록도를 도시한다.
1 illustrates an exemplary block diagram of an electronic device according to an embodiment of the present invention.
FIG. 2A illustrates an example in which the first data of FIG. 1 is converted into second data.
FIG. 2B shows exemplary values of some bits of the first data of FIG. 1 .
FIG. 2C illustrates another example in which the first data of FIG. 1 is converted into second data.
FIG. 3 shows an exemplary block diagram of the electronic device of FIG. 1 in more detail.
4 illustrates an example in which the second data of FIG. 3 is stored in a bank of a memory device.
FIG. 5 is an exemplary flowchart for the memory controller of FIG. 3 to store second data in a memory device.
6 is an exemplary flowchart for the memory controller of FIG. 3 to adjust an error zone and an error-free zone of the memory device.
FIG. 7 shows an exemplary flowchart for adjusting a refresh rate by the memory controller of FIG. 3 according to temperature and BER.
8 shows an example of a lookup table showing the relationship between BER and refresh.
FIG. 9 is an exemplary flowchart for the memory device of FIG. 3 to perform a refresh command.
10 is a more detailed exemplary block diagram of the electronic device of FIG. 1 according to another embodiment of the present invention.
11 illustrates an example in which the second data of FIG. 10 is stored in a bank of a memory device.
12 illustrates the memory device of FIG. 1 according to an embodiment of the present invention.
13 illustrates the memory device of FIG. 1 according to another embodiment of the present invention.
14 is an exemplary block diagram of an electronic device according to another embodiment of the present invention.
15 is an exemplary flowchart illustrating an operation method of the memory controller of FIG. 14 .
16 is an exemplary block diagram of an electronic device according to another embodiment of the present invention.

도 1은 본 발명의 실시 예에 따른 전자 장치의 예시적인 블록도를 도시한다. 전자 장치(100)는 전자 시스템, 컴퓨터 시스템, 메모리 시스템 등으로도 지칭될 수 있다. 예를 들어, 전자 장치(100)는 데스크톱(desktop) 컴퓨터, 랩톱(laptop) 컴퓨터, 워크스테이션(workstation), 서버, 모바일 장치 등일 수 있으나, 본 발명의 범위는 이에 한정되지 않는다. 전자 장치(100)는 메모리 컨트롤러(110) 및 메모리 장치(130)를 포함할 수 있다.1 illustrates an exemplary block diagram of an electronic device according to an embodiment of the present invention. The electronic device 100 may also be referred to as an electronic system, a computer system, a memory system, or the like. For example, the electronic device 100 may be a desktop computer, a laptop computer, a workstation, a server, a mobile device, etc., but the scope of the present invention is not limited thereto. The electronic device 100 may include a memory controller 110 and a memory device 130 .

메모리 컨트롤러(110)는 메모리 장치(130)를 제어할 수 있다. 메모리 컨트롤러(110)는 메모리 장치(130)를 접근하기 위한 명령들과 어드레스들을 생성할 수 있다. 메모리 컨트롤러(110)는 메모리 장치(130)에 저장될 데이터를 생성할 수 있다. 메모리 컨트롤러(110)는 메모리 장치(130)에 저장된 데이터를 수신할 수 있다.The memory controller 110 may control the memory device 130 . The memory controller 110 may generate commands and addresses for accessing the memory device 130 . The memory controller 110 may generate data to be stored in the memory device 130 . The memory controller 110 may receive data stored in the memory device 130 .

메모리 컨트롤러(110)는 에러 정정 회로(111) 및 물리 계층(112; 이하, PHY로 지칭)을 포함할 수 있다. 에러 정정 회로(111)는 제 1 데이터를 수신할 수 있다. 제 1 데이터는 메모리 컨트롤러(110)의 외부(예를 들어, 프로세서, 버퍼 메모리 등)로부터 제공되거나 메모리 컨트롤러(110)의 내부에서 생성될 수 있다. 제 1 데이터는 메모리 장치(130)에 저장될 데이터일 수 있다. 예를 들어, 제 1 데이터는 응용 프로그램을 실행함에 따라 발생하거나 응용 프로그램을 실행하는데 필요할 수 있다.The memory controller 110 may include an error correction circuit 111 and a physical layer 112 (hereinafter, referred to as a PHY). The error correction circuit 111 may receive the first data. The first data may be provided from outside the memory controller 110 (eg, a processor, a buffer memory, etc.) or may be generated inside the memory controller 110 . The first data may be data to be stored in the memory device 130 . For example, the first data may be generated as the application program is executed or may be required to execute the application program.

에러 정정 회로(111)는 메모리 장치(130)에 저장될 쓰기 데이터(제 1 데이터)에 대한 인코딩(encoding) 연산을 수행할 수 있다. 에러 정정 회로(110)는 메모리 장치(130)로부터 전송되는 읽기 데이터에 대한 디코딩(decoding) 연산을 수행할 수 있다. 예를 들어, 에러 정정 회로(111)는 쓰기 데이터에 대한 패리티(parity) 비트들을 생성할 수 있다. 에러 정정 회로(111)는 메모리 장치(130)로부터 전송되는 읽기 데이터의 패리티 비트들을 이용하여 읽기 데이터의 에러를 정정할 수 있다. 읽기 데이터의 에러는 PVT(process, voltage, temperature) 변동, 보유(retention) 특성, 간섭, 열화, 잡음, 리프레쉬 속도(refresh rate), 집적도, 등과 같은 메모리 장치(130)의 다양한 요인들에 의하여 발생할 수 있다.The error correction circuit 111 may perform an encoding operation on write data (first data) to be stored in the memory device 130 . The error correction circuit 110 may perform a decoding operation on read data transmitted from the memory device 130 . For example, the error correction circuit 111 may generate parity bits for write data. The error correction circuit 111 may correct an error of the read data using parity bits of the read data transmitted from the memory device 130 . Errors in read data may occur due to various factors of the memory device 130 such as PVT (process, voltage, temperature) fluctuations, retention characteristics, interference, deterioration, noise, refresh rate, density, etc. can

좀 더 구체적으로, 에러 정정 회로(111)는 에러 정정 코드(ECC)에 기초하여 제 1 데이터에 대한 패리티(parity) 비트들을 생성할 수 있다. 패리티 비트들은 제 1 데이터의 메시지 비트들이 손상되지 않도록 보호하는데 사용될 수 있다. 본 발명의 실시 예에 따른 에러 정정 회로(111)는 일반적인 에러 정정 코드(ECC)를 이용한 인코딩과 달리 제 1 데이터의 메시지 비트들에 패리티 비트들을 부가하지 않는다. 대신에, 에러 정정 회로(111)는 제 1 데이터의 메시지 비트들의 일부 비트들을 패리티 비트들로 대체할 수 있다. 에러 정정 회로(111)는 제 1 데이터의 메시지 비트들의 일부 비트들을 에러 정정 연산을 위한 패리티 비트들로 변환할 수 있다. 에러 정정 회로(111)는 패리티 비트들과 제 1 데이터의 메시지 비트들 중 나머지 비트들을 포함하는 제 2 데이터를 생성할 수 있다.More specifically, the error correction circuit 111 may generate parity bits for the first data based on the error correction code ECC. The parity bits may be used to protect the message bits of the first data from being corrupted. Unlike encoding using a general error correction code (ECC), the error correction circuit 111 according to an embodiment of the present invention does not add parity bits to the message bits of the first data. Instead, the error correction circuit 111 may replace some bits of the message bits of the first data with parity bits. The error correction circuit 111 may convert some bits of the message bits of the first data into parity bits for an error correction operation. The error correction circuit 111 may generate second data including parity bits and the remaining bits of the message bits of the first data.

전술한대로, 에러 정정 회로(111)는 제 1 데이터의 메시지 비트들에 패리티 비트들을 덧붙이지 않고 일부 비트들을 패리티 비트들로 변환하므로, 제 1 데이터의 사이즈(비트 수)와 제 2 데이터의 사이즈는 서로 동일할 수 있다. 에러 정정 회로(111)는 제 1 데이터를 제 2 데이터로 변환하고 그리고 제 2 데이터를 PHY(112)에 제공할 수 있다. 메모리 장치(130)는 메모리 컨트롤러(110)의 제어에 기초하여 제 1 데이터가 인코딩된 제 2 데이터를 저장하게 된다. 패리티 비트들로 대체된 메시지 비트들의 일부 비트들은 메모리 장치(130)에 저장되지 않는다.As described above, since the error correction circuit 111 converts some bits into parity bits without adding parity bits to the message bits of the first data, the size (number of bits) of the first data and the size of the second data are may be identical to each other. The error correction circuit 111 may convert the first data into second data and provide the second data to the PHY 112 . The memory device 130 stores second data in which the first data is encoded based on the control of the memory controller 110 . Some bits of the message bits replaced with parity bits are not stored in the memory device 130 .

PHY(112)는 인터페이스 회로로도 지칭될 수 있다. PHY(112)는 메모리 장치(130)와 직접적으로 통신할 수 있다. PHY(112)는 메모리 장치(130)가 지원하는 인터페이스 표준(예를 들면, Toggle DDR(double data rate) 표준, DDR SDRAM(synchronous dynamic random access memory) 표준, JEDEC(joint electron device engineering council) 표준 등)에 따라 동작할 수 있다. PHY(112)는 메모리 컨트롤러(110)와 메모리 장치(130) 사이의 채널을 형성하는 물리적인 경로들을 구동할 수 있다. PHY(112)는 메모리 컨트롤러(110)에 의해 생성되는 명령, 어드레스, 쓰기 데이터(제 2 데이터)를 메모리 장치(130)로 전송할 수 있다. PHY(112)는 메모리 장치(130)로부터 읽기 데이터를 수신할 수 있고 수신된 읽기 데이터를 에러 정정 회로(111)로 제공할 수 있다. 도 1을 참조하면, PHY(112)는 에러 정정 회로(111)에 의해 변환되고 생성된 제 2 데이터를 그대로 메모리 장치(130)로 전송할 수 있다. PHY(112)는 제 1 데이터가 아닌 제 2 데이터를 메모리 장치(130)로 전송할 수 있다.PHY 112 may also be referred to as an interface circuit. PHY 112 may communicate directly with memory device 130 . The PHY 112 is an interface standard supported by the memory device 130 (eg, Toggle double data rate (DDR) standard, DDR SDRAM (synchronous dynamic random access memory) standard, joint electron device engineering council (JEDEC) standard, etc. ) can be operated according to The PHY 112 may drive physical paths forming a channel between the memory controller 110 and the memory device 130 . The PHY 112 may transmit a command, an address, and write data (second data) generated by the memory controller 110 to the memory device 130 . The PHY 112 may receive read data from the memory device 130 and may provide the received read data to the error correction circuit 111 . Referring to FIG. 1 , the PHY 112 may transmit second data converted and generated by the error correction circuit 111 to the memory device 130 as it is. The PHY 112 may transmit second data other than the first data to the memory device 130 .

메모리 장치(130)는 메모리 컨트롤러(110)의 제어에 기초하여 메모리 컨트롤러(110)로부터 전송되는 쓰기 데이터를 저장할 수 있다. 메모리 장치(130)는 메모리 컨트롤러(110)의 제어에 기초하여 저장된 데이터를 읽기 데이터로서 메모리 컨트롤러(110)로 전송할 수 있다. 예를 들어, 메모리 장치(130)는 DRAM(dynamic random access memory) 장치, SRAM(static random access memory) 장치, TRAM(thyristor random access memory) 장치, 낸드 플래시 메모리 장치, 노어 플래시 메모리 장치, RRAM(resistive random access memory) 장치, FRAM(ferroelectric random access memory) 장치, PRAM(phase change random access memory) 장치, MRAM(magnetic random access memory) 장치, STT-MRAM(spin transfer torque magnetic random access memory) 장치, 솔리드 스테이트 드라이브(SSD), 메모리 카드, 유니버설 플래시 기억장치(UFS) 등일 수 있으나, 메모리 장치(130)는 상술한 것들로 한정되지 않는다.The memory device 130 may store write data transmitted from the memory controller 110 based on the control of the memory controller 110 . The memory device 130 may transmit stored data to the memory controller 110 as read data based on the control of the memory controller 110 . For example, the memory device 130 may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, a thyristor random access memory (TRAM) device, a NAND flash memory device, a NOR flash memory device, or a resistive RAM (RRAM) device. random access memory) device, ferroelectric random access memory (FRAM) device, phase change random access memory (PRAM) device, magnetic random access memory (MRAM) device, spin transfer torque magnetic random access memory (STT-MRAM) device, solid state It may be a drive (SSD), a memory card, a universal flash storage device (UFS), or the like, but the memory device 130 is not limited thereto.

도 1을 참조하면, 메모리 장치(130)는 메모리 컨트롤러(110)로부터 제 2 데이터를 수신하고 저장할 수 있다. 메모리 장치(130)가 DRAM 장치이면, 메모리 장치(130)의 메모리 셀에 저장된 데이터, 즉 전하가 유지되는 시간은 제한적이므로, 메모리 셀에 저장된 데이터가 손실되기 전에 메모리 셀에 저장된 데이터를 리프레쉬하는 것이 필요하다. 예를 들어, 메모리 장치(130)는 메모리 컨트롤러(110)의 반복적인 오토-리프레쉬 요청에 응답하여 제 2 데이터를 주기적으로 또는 비주기적으로 리프레쉬할 수 있다. 다른 예를 들어, 메모리 장치(130)는 메모리 컨트롤러(110)의 셀프-리프레쉬 요청에 응답하여 스스로 제 2 데이터를 주기적으로 또는 비주기적으로 리프레쉬할 수 있다. 메모리 장치(130)는 도 1에서 도시된 제 2 데이터뿐만 아니라 모든 DRAM 셀들에 저장된 데이터에 대한 리프레쉬 동작을 수행할 수 있다.Referring to FIG. 1 , the memory device 130 may receive and store second data from the memory controller 110 . If the memory device 130 is a DRAM device, the data stored in the memory cell of the memory device 130, that is, the amount of time the charge is maintained is limited, so refreshing the data stored in the memory cell before the data stored in the memory cell is lost. need. For example, the memory device 130 may periodically or aperiodically refresh the second data in response to the repetitive auto-refresh request of the memory controller 110 . As another example, the memory device 130 may periodically or aperiodically refresh the second data by itself in response to the self-refresh request of the memory controller 110 . The memory device 130 may perform a refresh operation on data stored in all DRAM cells as well as the second data illustrated in FIG. 1 .

메모리 장치(130)의 용량, 개수, 집적도 등이 증가함에 따라, 메모리 장치(130)가 리프레쉬 동작을 수행하는데 필요한 전력(예를 들면, IDD5, IDD6 등)도 증가하게 된다. 전자 장치(100)가 심층 신경망과 같은 인공 신경망(응용 프로그램)을 실행하는 경우, 리프레쉬 동작에 의한 메모리 장치(130)의 전력 소모가 크게 증가할 수 있다. 예를 들어, 전자 장치(100)에 의해 실행되는 인공 신경망은 DNN(Deep Neural Network), CNN(Convolution neural network), RNN(Recurrent Neural Network), SNN(Spiking Neural Network) 등을 포함할 수 있다.As the capacity, number, and degree of integration of the memory device 130 increases, power required for the memory device 130 to perform a refresh operation (eg, IDD5, IDD6, etc.) also increases. When the electronic device 100 executes an artificial neural network (application program) such as a deep neural network, power consumption of the memory device 130 by the refresh operation may significantly increase. For example, the artificial neural network executed by the electronic device 100 may include a deep neural network (DNN), a convolution neural network (CNN), a recurrent neural network (RNN), a spiking neural network (SNN), and the like.

메모리 장치(130)의 전력 소모를 줄이기 위해, 메모리 컨트롤러(110)는 메모리 장치(130)의 리프레쉬 속도를 낮출 수 있고 메모리 장치(130)를 근사적 메모리(approximate memory) 장치로서 동작시킬 수 있다. 메모리 컨트롤러(110)는 메모리 장치(130)의 리프레쉬 속도를 낮춤으로써 리프레쉬 동작에 의한 메모리 장치(130)의 전력 소모를 개선할 수 있다.In order to reduce power consumption of the memory device 130 , the memory controller 110 may lower the refresh rate of the memory device 130 and operate the memory device 130 as an approximate memory device. The memory controller 110 may improve power consumption of the memory device 130 by the refresh operation by lowering the refresh rate of the memory device 130 .

느린 리프레쉬 속도는 메모리 셀에 저장된 데이터의 손실을 야기할 수 있다. 느린 리프레쉬 속도는 메모리 장치(130)의 BER(bit error rate)의 증가를 야기할 수 있고 전자 장치(100)를 이용하여 실행되는 응용 프로그램의 계산의 정확도에 영향을 미칠 수 있다. 그럼에도 불구하고, 메모리 컨트롤러(110)는 느린 리프레쉬 속도로 인하여 메모리 장치(130)에서 에러가 발생할 확률을 허용할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 느린 리프레쉬 속도로 동작하는 메모리 장치(130)의 BER이 응용 프로그램의 계산의 정확도에 영향을 미치지 않도록, 우선순위 기반의(priority-based) ECC를 이용할 수 있다.A slow refresh rate may cause loss of data stored in memory cells. A slow refresh rate may cause an increase in a bit error rate (BER) of the memory device 130 and may affect the accuracy of calculation of an application program executed using the electronic device 100 . Nevertheless, the memory controller 110 may allow a probability that an error will occur in the memory device 130 due to a slow refresh rate. For example, the memory controller 110 may use a priority-based ECC so that the BER of the memory device 130 operating at a slow refresh rate does not affect the accuracy of calculation of the application program. .

메모리 컨트롤러(110)는 제 1 데이터를 메모리 장치(130)에 저장하기 전에, 우선순위 기반의 ECC를 이용하여 제 1 데이터를 인코딩하고 제 1 데이터가 인코딩된 제 2 데이터를 메모리 장치(130)에 저장할 수 있다. 메모리 컨트롤러(110)의 에러 정정 회로(111)는 제 1 데이터의 일부 비트들을 패리티 비트들로 대체할 수 있다. 에러 정정 회로(111)가 패리티 비트들로 대체될 일부 비트들을 선택하는 우선 순위, 즉 기준은 비트들 각각의 중요성(significance)일 수 있다. 에러 정정 회로(111)는 중요하지 않은(insignificant) 일부 비트들을 패리티 비트들로 대체할 수 있다. 에러 정정 회로(111)는 패리티 비트들을 이용하여 중요한 나머지 비트들을 에러로부터 보호할 수 있다.Before storing the first data in the memory device 130 , the memory controller 110 encodes the first data using the priority-based ECC and transmits the first data-encoded second data to the memory device 130 . can be saved The error correction circuit 111 of the memory controller 110 may replace some bits of the first data with parity bits. A priority, ie, a criterion, in which the error correction circuit 111 selects some bits to be replaced with parity bits may be the significance of each of the bits. The error correction circuit 111 may replace some insignificant bits with parity bits. The error correction circuit 111 may protect the remaining important bits from errors using the parity bits.

메모리 컨트롤러(110)가 메모리 장치(130)를 근사적 메모리로 효과적으로 이용할 수 있는지 여부는, 데이터의 비트들 중 중요한 비트와 중요하지 않은 비트를 어떻게 분리할 것인지, 즉, 데이터의 비트들 중 어느 비트를 패리티 비트로 대체할 것인지에 달려 있다. 에러 정정 회로(111)에 의해 메시지 비트들의 일부 비트들이 패리티 비트들로 대체되는 예시들은 도 2a 내지 도 2c에서 좀 더 구체적으로 설명될 것이다.Whether the memory controller 110 can effectively use the memory device 130 as an approximate memory depends on how important bits of data and non-significant bits are separated, that is, which bits of data. Depends on whether to replace with parity bit. Examples in which some bits of the message bits are replaced with parity bits by the error correction circuit 111 will be described in more detail with reference to FIGS. 2A to 2C .

도 2a는 도 1의 제 1 데이터가 제 2 데이터로 변환되는 예시를 도시한다. 도 2b는 도 1의 제 1 데이터의 일부 비트들의 예시적인 값들을 도시한다. 도 2a와 도 2b는 도 1을 참조하여 함께 설명될 것이다.FIG. 2A illustrates an example in which the first data of FIG. 1 is converted into second data. FIG. 2B shows exemplary values of some bits of the first data of FIG. 1 . 2A and 2B will be described together with reference to FIG. 1 .

제 1 데이터(Data 1)는 예를 들어 IEEE 754에서 명시하는 부동 소수점 형식(floating-point format)으로 표현될 수 있다. 부동 소수점 형식으로 표현된 제 1 데이터의 메시지 비트들은 부호(sign) 비트, 지수(exponent) 비트들, 및 가수(mantissa 또는 fraction) 비트들로 나뉠 수 있다. 예를 들어, 부동 소수점 형식은 반정밀도 부동 소수점(half-precision floating-point) 형식, 단정밀도 부동 소수점(single-precision floating-point) 형식, 배정밀도 부동 소수점(double-precision floating-point) 형식, 확장정밀도 부동 소수점(extended-precision floating-point) 형식, 네배정밀도 부동 소수점(quadruple-precision floating-point) 형식 등을 포함할 수 있으나, 이에 한정되지 않는다.The first data Data 1 may be expressed in, for example, a floating-point format specified by IEEE 754. Message bits of the first data expressed in the floating-point format may be divided into sign bits, exponent bits, and mantissa or fraction bits. For example, floating-point formats include half-precision floating-point format, single-precision floating-point format, double-precision floating-point format, and double-precision floating-point format. extended-precision floating-point formats, quadruple-precision floating-point formats, and the like.

도 2a를 참조하면, 제 1 데이터는 단정밀도 부동 소수점 형식으로 표현될 수 있고 제 1 데이터의 비트 수는 32일 수 있으나, 이에 한정되지 않는다. 제 1 데이터의 메시지 비트들은 1개 부호 비트 s, 8개 지수 비트들 e, 그리고 23개 가수비트들 m을 포함할 수 있다. 부동 소수점 형식{s, e, m}의 값은 -1s X M X 2E일 수 있다. 여기서, M=1.m 이고 E=e-127이다. 제 1 데이터의 부호 비트는 MSB(most significant bit)일 수 있고 가수 비트들 중 가장 오른쪽에 배치된 비트는 LSB(least significant bit)일 수 있다. 상대적으로 왼쪽에 배치된 제 1 데이터의 비트들이 상대적으로 오른쪽에 배치된 제 1 데이터의 비트들보다 중요할 수 있다. MSB부터 LSB까지의 우선 순위(즉, 순서)는 부호 비트, 지수 비트들, 가수의 상위 비트들, 및 가수의 하위 비트들이다.Referring to FIG. 2A , the first data may be expressed in a single-precision floating-point format and the number of bits of the first data may be 32, but is not limited thereto. The message bits of the first data may include 1 sign bit s, 8 exponent bits e, and 23 mantissa bits m. The value of the floating-point format {s, e, m} may be -1 s XMX 2 E. Here, M=1.m and E=e-127. A sign bit of the first data may be a most significant bit (MSB), and a rightmost bit among mantissa bits may be a least significant bit (LSB). Bits of the first data disposed on the relatively left may be more important than bits of the first data disposed on the relatively right side. The priority (ie, order) from MSB to LSB is the sign bit, the exponent bits, the upper bits of the mantissa, and the lower bits of the mantissa.

제 1 데이터의 비트들 중 상위 비트들([31:24])의 값들이 예시적으로 도 2b에서 도시되었다. 가로 축은 비트 위치를 나타내고 그리고 세로 축은 비트 1과 비트 0의 비율을 나타낸다. 예를 들어, 도 2a 및 도 2b의 제 1 데이터는 전자 장치(100)를 이용하여 DNN, CNN, RNN, SNN 등과 같은 신경망이 실행됨에 따라 메모리 장치(130)에 저장되어야 할 데이터일 수 있고 신경망의 가중치 파라미터들일 수 있다. 제 1 데이터는 신경망의 연산에 사용될 수 있다. 예를 들어, 가중치 파라미터들의 범위는 [2-13:2- 2]일 수 있다. 상술한 범위에 따라, 제 1 데이터의 일부 비트들([30, 29, 28])의 값들은 [0, 1, 1]로 고정될 수 있다.The values of the upper bits ([31:24]) among the bits of the first data are illustrated in FIG. 2B by way of example. The horizontal axis represents the bit position and the vertical axis represents the ratio of bit 1 to bit 0. For example, the first data of FIGS. 2A and 2B may be data to be stored in the memory device 130 as a neural network such as DNN, CNN, RNN, SNN, etc. is executed using the electronic device 100 and the neural network may be weight parameters of . The first data may be used for calculation of the neural network. For example, the range of the weight parameters may be [2 -13 :2 - 2 ]. According to the above-described range, values of some bits of the first data ([30, 29, 28]) may be fixed to [0, 1, 1].

제 1 데이터의 일부 비트들([30, 29, 28])은 제 1 데이터를 구성하는 메시지 비트들이다. 다만, 에러 정정 회로(111)는 제 1 데이터의 일부 비트들([30, 29, 28])의 값들이 [0, 1, 1]로 고정되기 때문에, 에러 정정 코드에 기초하여 일부 비트들([30, 29, 28])을 패리티 비트들로 대체(변환)할 수 있다. 에러 정정 회로(111)는 제 1 데이터의 나머지 비트들([31, 27:0])과 패리티 비트들을 포함하는 제 2 데이터(Data 2)를 생성할 수 있다. 제 2 데이터의 패리티 비트들의 위치들은 제 1 데이터의 비트들([30, 29, 28])의 위치들에 각각 대응할 수 있다. 제 2 데이터의 메시지 비트들([31, 27:0])의 값들은 제 1 데이터의 메시지 비트들([31, 27:0])의 값들과 동일할 수 있다. 제 2 데이터의 메시지 비트들([31, 27:0])의 위치들은 제 1 데이터의 메시지 비트들([31, 27:0])의 위치들에 각각 대응할 수 있다. 다만, 제 2 데이터의 메시지 비트들과 패리티 비트들의 위치들은 도 2a에서 도시된 것으로 한정되지 않는다.Some bits of the first data ([30, 29, 28]) are message bits constituting the first data. However, since the values of some bits ([30, 29, 28]) of the first data are fixed to [0, 1, 1] in the error correction circuit 111, some bits ( [30, 29, 28]) can be replaced (converted) with parity bits. The error correction circuit 111 may generate second data Data 2 including the remaining bits [31, 27:0] of the first data and parity bits. The positions of the parity bits of the second data may correspond to positions of the bits [30, 29, 28] of the first data, respectively. Values of the message bits [31, 27:0] of the second data may be the same as values of the message bits [31, 27:0] of the first data. The positions of the message bits [31, 27:0] of the second data may correspond to positions of the message bits [31, 27:0] of the first data, respectively. However, the positions of the message bits and the parity bits of the second data are not limited to those illustrated in FIG. 2A .

에러 정정 회로(111)는 제 2 데이터가 메모리 장치(130)에 저장된 이후에 메모리 장치(130)로부터 읽혀진 제 2 데이터를 수신하고 디코딩할 수 있다. 메모리 장치(130)로부터 읽혀진 제 2 데이터는 PHY(112)가 메모리 장치(130)로 전송한 제 2 데이터와 동일하거나 또는 에러로 인하여 상이할 수 있다. 에러 정정 회로(111)는 패리티 비트들을 이용하여 제 2 데이터의 비트들([31, 27, 26, 25])에 대한 에러 정정 연산을 수행할 수 있다. 에러 정정 회로(111)는 고정된 값들을 갖는 일부 비트들([30, 29, 28])을 패리티 비트들로 대체하고, 그 다음 고정된 값들 대신에 패리티 비트들이 메모리 장치(130)에 저장되고, 그 다음 에러 정정 회로(111)는 패리티 비트들을 이용하여 에러 정정 연산을 수행할 수 있다. 에러 정정 회로(111)는 제 2 데이터의 비트들([30, 29, 28])의 값들을 에러 정정 연산에서 이용하고 그 다음 [0, 1, 1]로 설정, 변경, 또는 정정할 수 있다.The error correction circuit 111 may receive and decode the second data read from the memory device 130 after the second data is stored in the memory device 130 . The second data read from the memory device 130 may be the same as the second data transmitted by the PHY 112 to the memory device 130 or may be different due to an error. The error correction circuit 111 may perform an error correction operation on the bits [31, 27, 26, and 25] of the second data using the parity bits. The error correction circuit 111 replaces some bits [30, 29, 28] having fixed values with parity bits, and then the parity bits are stored in the memory device 130 instead of the fixed values and , then the error correction circuit 111 may perform an error correction operation using the parity bits. The error correction circuit 111 may use the values of the bits of the second data ([30, 29, 28]) in an error correction operation and then set, change, or correct them to [0, 1, 1]. .

에러 정정 회로(111)는 제 1 데이터의 일부 비트들([30, 29, 28])을 패리티 비트들로 대체함으로써 제 1 데이터의 나머지 비트들([31, 27, 26, 25])을 에러로부터 보호할 수 있다. 에러 정정 회로(111)는 패리티 비트들을 이용하여 보호할 나머지 비트들을 비트의 우선 순위, 즉 중요성에 따라 선택할 수 있다. 예를 들어, 에러 정정 회로(111)는 MSB에서 LSB의 순서에 따라 전체 나머지 비트들([31, 27:0]) 중 나머지 비트들([31, 27, 26, 25])을 선택하고 패리티 비트들을 이용하여 보호할 수 있다. 패리티 비트들을 이용하여 보호할 나머지 비트들의 위치는 도 2a에서 도시된 것으로 한정되지 않는다.The error correction circuit 111 makes the remaining bits ([31, 27, 26, 25]) of the first data an error by replacing some bits ([30, 29, 28]) of the first data with parity bits. can be protected from The error correction circuit 111 may select the remaining bits to be protected using the parity bits according to the priority of the bits, that is, their importance. For example, the error correction circuit 111 selects the remaining bits ([31, 27, 26, 25]) from all remaining bits ([31, 27:0]) according to the order of the LSB in the MSB, and selects the parity It can be protected using bits. The positions of the remaining bits to be protected using the parity bits are not limited to those shown in FIG. 2A .

실시 예에 있어서, 제 1 데이터의 비트들 중 고정된 값을 갖는 비트의 위치는 도 2a 및 도 2b에서 설명된 것으로 한정되지 않는다. 고정된 값을 갖는 비트의 위치는 전자 장치(100)를 이용하여 실행되는 응용 프로그램의 종류, 응용 프로그램에 의해 생성되는 데이터의 종류, 데이터 값의 범위 등에 따라 다양할 수 있다.In an embodiment, positions of bits having a fixed value among bits of the first data are not limited to those described with reference to FIGS. 2A and 2B . A position of a bit having a fixed value may vary according to a type of an application program executed using the electronic device 100 , a type of data generated by the application program, a range of data values, and the like.

실시 예에 있어서, 제 1 데이터의 비트들 중 고정된 값을 갖는 비트의 개수는 도 2a 및 도 2b에서 설명된 것으로 한정되지 않는다. 고정된 값을 갖는 비트의 개수가 증가할수록, 에러 정정 회로(110)가 보호할 수 있는 나머지 메시지 비트들의 개수도 증가할 수 있다. 에러 정정 회로(110)가 사용하는 에러 정정 코드의 종류에 따라 정정 가능한 에러의 개수도 변경될 수 있다. 도 2a 및 도 2b에서, 에러 정정 코드는 해밍(Hamming) 코드일 수 있다. 에러 정정 회로(110)는 3개 패리티 비트들([30, 29, 28])을 이용하여 4개 메시지 비트들([31, 27, 26, 25])을 보호할 수 있다. 예를 들어, 2k-1 ≥ n+k가 성립할 수 있고, n은 메시지 비트들의 개수이고 k는 패리티 비트들의 개수이다. 에러 정정 회로(110)는 해밍 코드뿐만 아니라 BCH(Bose-Chauduhuri-Hocquenghen) 코드, RS(Reed-Solomon) 코드, Viterbi 코드, Turbo 코드, LDPC(low density parity check) 등과 같은 다른 에러 정정 코드를 이용할 수도 있다.In an embodiment, the number of bits having a fixed value among the bits of the first data is not limited to those described with reference to FIGS. 2A and 2B . As the number of bits having a fixed value increases, the number of remaining message bits that the error correction circuit 110 can protect may also increase. The number of correctable errors may also be changed according to the type of error correction code used by the error correction circuit 110 . 2A and 2B , the error correction code may be a Hamming code. The error correction circuit 110 may protect the four message bits [31, 27, 26, 25] using the three parity bits [30, 29, 28]. For example, 2 k -1 ≥ n+k may hold, where n is the number of message bits and k is the number of parity bits. The error correction circuit 110 may use other error correction codes such as a Bose-Chauduhuri-Hocquenghen (BCH) code, a Reed-Solomon (RS) code, a Viterbi code, a Turbo code, and a low density parity check (LDPC) as well as a Hamming code. may be

도 2c는 도 1의 제 1 데이터가 제 2 데이터로 변환되는 다른 예시를 도시한다. 도 2c는 도 1을 참조하여 설명될 것이다. 도 2a와 동일하게, 도 2c에서 제 1 데이터는 단정밀도 부동 소수점 형식으로 표현될 수 있고 제 1 데이터의 비트 수는 32일 수 있다. 전술한대로, 상대적으로 왼쪽에 배치된 제 1 데이터의 비트들이 상대적으로 오른쪽에 배치된 제 1 데이터의 비트들보다 중요할 수 있다.FIG. 2C illustrates another example in which the first data of FIG. 1 is converted into second data. FIG. 2C will be described with reference to FIG. 1 . Like FIG. 2A , in FIG. 2C , the first data may be expressed in a single-precision floating-point format, and the number of bits of the first data may be 32. As described above, the bits of the first data arranged on the relatively left side may be more important than the bits of the first data arranged on the relatively right side.

예를 들어, 에러 정정 회로(111)는 중요하지 않은 제 1 데이터의 하위 비트들([3:0])을 패리티 비트들로 대체할 수 있다. 제 1 데이터의 하위 비트들([3:0])은 제 1 데이터를 구성하는 메시지 비트들이다. 에러 정정 회로(111)는 제 1 데이터의 나머지 비트들([31:4])과 패리티 비트들을 포함하는 제 2 데이터(Data 2)를 생성할 수 있다. 제 2 데이터의 패리티 비트들의 위치들은 제 1 데이터의 비트들([3:0])의 위치들에 각각 대응할 수 있다. 제 2 데이터의 메시지 비트들([31:4])의 값들은 제 1 데이터의 메시지 비트들([31:4])의 값들과 동일할 수 있다. 제 2 데이터의 메시지 비트들([31:4])의 위치들은 제 1 데이터의 메시지 비트들([31:4])의 위치들에 각각 대응할 수 있다. 다만, 제 2 데이터의 메시지 비트들과 패리티 비트들의 위치들은 도 2c에서 도시된 것으로 한정되지 않는다.For example, the error correction circuit 111 may replace unimportant low-order bits ([3:0]) of the first data with parity bits. The lower bits ([3:0]) of the first data are message bits constituting the first data. The error correction circuit 111 may generate second data Data 2 including the remaining bits [31:4] of the first data and parity bits. The positions of the parity bits of the second data may respectively correspond to positions of the bits ([3:0]) of the first data. Values of the message bits [31:4] of the second data may be the same as values of the message bits [31:4] of the first data. The positions of the message bits [31:4] of the second data may correspond to positions of the message bits [31:4] of the first data, respectively. However, the positions of the message bits and the parity bits of the second data are not limited to those illustrated in FIG. 2C .

에러 정정 회로(111)는 제 2 데이터가 메모리 장치(130)에 저장된 이후에 메모리 장치(130)로부터 읽혀진 제 2 데이터를 수신하고 디코딩할 수 있다. 에러 정정 회로(111)는 패리티 비트들을 이용하여 제 2 데이터의 비트들([31:23])에 대한 에러 정정 연산을 수행할 수 있다. 즉, 에러 정정 회로(111)는 하위 비트들([3:0])을 패리티 비트들로 대체하고, 그 다음 하위 비트들([3:0])의 원래 값들 대신에 패리티 비트들이 메모리 장치(130)에 저장되고, 그 다음 에러 정정 회로(111)는 패리티 비트들을 이용하여 에러 정정 연산을 수행할 수 있다.The error correction circuit 111 may receive and decode the second data read from the memory device 130 after the second data is stored in the memory device 130 . The error correction circuit 111 may perform an error correction operation on bits [31:23] of the second data using parity bits. That is, the error correction circuit 111 replaces the lower bits ([3:0]) with parity bits, and then parity bits are replaced with the original values of the lower bits ([3:0]) in the memory device ( 130), and then the error correction circuit 111 may perform an error correction operation using the parity bits.

에러 정정 회로(111)는 제 1 데이터의 하위 비트들([3:0])을 패리티 비트들로 대체함으로써 제 1 데이터의 나머지 비트들([31:23])을 에러로부터 보호할 수 있다. 전술한대로, 에러 정정 회로(111)는 패리티 비트들을 이용하여 보호할 나머지 비트들을 비트의 우선 순위, 즉 중요성에 따라 선택할 수 있다. 예를 들어, 에러 정정 회로(111)는 MSB에서 LSB의 순서에 따라 전체 나머지 비트들([31:4]) 중 나머지 비트들([31:23])을 선택하고 패리티 비트들을 이용하여 보호할 수 있다. 여기서, 에러 정정 회로(111)가 패리티 비트들로 대체하는 하위 비트들의 위치들과 개수, 그리고 패리티 비트들을 이용하여 보호하려는 메시지 비트들의 위치들과 개수는 도 2c에서 도시된 것들로 한정되지 않는다.The error correction circuit 111 may protect the remaining bits ([31:23]) of the first data from errors by replacing the lower bits ([3:0]) of the first data with parity bits. As described above, the error correction circuit 111 may select the remaining bits to be protected using the parity bits according to the priority of the bits, that is, their importance. For example, the error correction circuit 111 selects the remaining bits ([31:23]) from all remaining bits ([31:4]) according to the order of the LSBs in the MSB and protects them using the parity bits. can Here, the positions and the number of lower bits that the error correction circuit 111 replaces with the parity bits, and the positions and the number of message bits to be protected using the parity bits are not limited to those shown in FIG. 2C .

도 3은 도 1의 전자 장치의 예시적인 블록도를 좀 더 구체적으로 도시한다. 전술한대로, 전자 장치(100)는 메모리 컨트롤러(110) 및 메모리 장치(130)를 포함할 수 있다.FIG. 3 shows an exemplary block diagram of the electronic device of FIG. 1 in more detail. As described above, the electronic device 100 may include the memory controller 110 and the memory device 130 .

메모리 컨트롤러(110)는 에러 정정 회로(111), PHY(112), 데이터 큐(113), 요청 큐(114), 명령 생성기(115), 리프레쉬 명령 생성기(116), 멀티플렉서(117), 레지스터들(118), 및 온도 확인 회로(119)를 포함할 수 있다. 에러 정정 회로(111) 및 PHY(112)는 도 1 그리고 도 2a 내지 도 2c를 참조하여 설명되었다.The memory controller 110 includes an error correction circuit 111 , a PHY 112 , a data queue 113 , a request queue 114 , a command generator 115 , a refresh command generator 116 , a multiplexer 117 , and registers. 118 , and a temperature check circuit 119 . The error correction circuit 111 and the PHY 112 have been described with reference to FIGS. 1 and 2A to 2C.

데이터 큐(113)는 메모리 장치(130)에 저장될 쓰기 데이터를 저장할 수 있다. 데이터 큐(113)는 저장된 쓰기 데이터를 에러 정정 회로(111)에 제공할 수 있다. 메모리 장치(130)로부터 읽기 데이터가 전송되고 에러 정정 회로(111)가 읽기 데이터에 대한 디코딩을 수행한 이후에, 데이터 큐(113)는 에러 정정 회로(111)로부터 디코딩된 데이터를 수신하고 저장할 수 있다.The data queue 113 may store write data to be stored in the memory device 130 . The data queue 113 may provide the stored write data to the error correction circuit 111 . After the read data is transmitted from the memory device 130 and the error correction circuit 111 performs decoding on the read data, the data queue 113 may receive and store the decoded data from the error correction circuit 111 . have.

요청 큐(114)는 프로세서(미도시, 도 14의 3120 참조)에 의해 발행된 명령들과 어드레스들을 저장할 수 있다. 요청 큐(114)는 저장된 명령과 어드레스를 명령 생성기(115)로 제공할 수 있다. 실시 예에 있어서, 메모리 컨트롤러(110)가 구현된 회로 내에 위치하는 온-칩 메모리, 즉 버퍼 메모리에 데이터 큐(113)와 요청 큐(114)를 위한 영역들이 사전에 할당될 수 있다. 예를 들어, 데이터 큐(113)와 요청 큐(114)는 레지스터들, 플립-플롭들, 래치들, SRAM 장치 등을 이용하여 메모리 컨트롤러(110) 내부에서 구현될 수 있다. 다른 예를 들어, 데이터 큐(113)와 요청 큐(114)는 메모리 컨트롤러(110)의 외부에 위치하는 메모리 장치 상에서 구현될 수도 있다.The request queue 114 may store instructions and addresses issued by a processor (not shown, see 3120 of FIG. 14 ). The request queue 114 may provide the stored commands and addresses to the command generator 115 . In an embodiment, regions for the data queue 113 and the request queue 114 may be allocated in advance in an on-chip memory, that is, a buffer memory, located in a circuit in which the memory controller 110 is implemented. For example, the data queue 113 and the request queue 114 may be implemented in the memory controller 110 using registers, flip-flops, latches, an SRAM device, and the like. As another example, the data queue 113 and the request queue 114 may be implemented on a memory device located outside the memory controller 110 .

명령 생성기(115)는 메모리 장치(130)로 제공될 명령 또는 어드레스를 생성할 수 있다. 예를 들어, 명령은 활성화 명령, 읽기 명령, 쓰기 명령, 프리차지(precharge) 명령, 소거 명령 등을 포함할 수 있다. 어드레스는 메모리 장치(130) 내에 데이터가 저장될 위치를 나타내거나 메모리 장치(130)에 저장된 데이터의 위치를 나타낼 수 있다. 리프레쉬 명령 생성기(116)는 요청 큐(114)로 입력된 요청들과 별개로 메모리 장치(130)에 저장된 데이터를 유지하기 위해 메모리 장치(130)로 제공될 리프레쉬 명령을 주기적으로 또는 비주기적으로 생성할 수 있다. 리프레쉬 명령 생성기(116)는 리프레쉬 명령을 발행할 시점을 계산하기 위한 카운터를 포함할 수 있다. 멀티플렉서(117)는 명령 생성기(115)에 의해 생성된 명령 및 리프레쉬 명령 생성기(116)에 의해 생성된 명령 중 어느 하나를 PHY(112)로 제공할 수 있다. 도 3에서 도시된 바와 달리, 리프레쉬 명령 생성기(116)와 멀티플렉서(117)는 명령 생성기(115)에서 구현될 수도 있고 명령 생성기(115)가 리프레쉬 명령을 생성할 수도 있다.The command generator 115 may generate a command or an address to be provided to the memory device 130 . For example, the command may include an activation command, a read command, a write command, a precharge command, an erase command, and the like. The address may indicate a location where data is to be stored in the memory device 130 or may indicate a location of data stored in the memory device 130 . The refresh command generator 116 periodically or aperiodically generates a refresh command to be provided to the memory device 130 in order to maintain data stored in the memory device 130 separately from requests input to the request queue 114 . can do. The refresh command generator 116 may include a counter for counting when to issue a refresh command. The multiplexer 117 may provide either the command generated by the command generator 115 or the command generated by the refresh command generator 116 to the PHY 112 . 3 , the refresh instruction generator 116 and the multiplexer 117 may be implemented in the instruction generator 115 and the instruction generator 115 may generate the refresh instruction.

레지스터들(118)은 룩업 테이블(LUT)을 저장할 수 있다. 예를 들어, 룩업 테이블(LUT)은 BER과 리프레쉬 속도 간의 맵핑 정보를 저장할 수 있다. 레지스터들(118)은 메모리 컨트롤러(110)가 구현된 회로 내에 위치하는 온-칩 메모리에 포함될 수 있다. 온도 확인 회로(119)는 PHY(112)를 통하여 메모리 장치(130)의 현재 온도를 확인할 수 있다. 온도 확인 회로(119)는 레지스터들(118)에 저장된 룩업 테이블과 메모리 장치(130)의 현재 온도에 기초하여 메모리 장치(130)의 리프레쉬 속도를 조정하기 위한 정보를 명령 생성기(115)로 제공할 수 있다. 리프레쉬 명령 생성기(116)는 명령 생성기(115)의 제어에 기초하여 메모리 장치(130)의 리프레쉬 속도를 조정하거나 제어할 수 있다. 예를 들어, 리프레쉬 명령 생성기(116)는 리프레쉬 명령을 생성하는 주기를 조정할 수 있다.Registers 118 may store a lookup table (LUT). For example, the lookup table (LUT) may store mapping information between the BER and the refresh rate. The registers 118 may be included in an on-chip memory located in a circuit in which the memory controller 110 is implemented. The temperature check circuit 119 may check the current temperature of the memory device 130 through the PHY 112 . The temperature check circuit 119 provides information for adjusting the refresh rate of the memory device 130 to the command generator 115 based on the lookup table stored in the registers 118 and the current temperature of the memory device 130 . can The refresh command generator 116 may adjust or control the refresh rate of the memory device 130 based on the control of the command generator 115 . For example, the refresh command generator 116 may adjust the cycle for generating the refresh command.

도 1에서 전술한대로, PHY(112)는 제 2 데이터를 수신하고 제 2 데이터를 메모리 장치(130)로 전송할 수 있다. PHY(112)는 제 2 데이터의 비트들이 DQ 신호(데이터 입출력 신호)들을 통해 전송되도록, DQ 신호들을 구동할 수 있다. PHY(112)는 메모리 장치(130)로부터 전송되는 읽기 데이터, 즉 읽기 데이터에 따른 DQ 신호들의 논리 값들을 수신할 수 있다. PHY(112)는 명령 생성기(115)에 의해 생성된 명령과 어드레스에 따라 명령(CMD) 및 어드레스(ADD)를 메모리 장치(130)로 전송할 수 있다. PHY(112)는 리프레쉬 명령 생성기(116)에 의해 생성된 리프레쉬 명령에 따라 명령(CMD)을 메모리 장치(130)로 전송할 수 있다. PHY(112)는 명령 신호들 또는 어드레스 신호들을 구동할 수 있다. 명령 신호들과 어드레스 신호들(ACT_n, RAS_n, CAS_n, WE_n, A0-A17, BA0-BA1, BG0-BG1 등)의 논리 값들은 JEDEC 표준에 명시될 수 있다.1 , the PHY 112 may receive the second data and transmit the second data to the memory device 130 . The PHY 112 may drive the DQ signals so that bits of the second data are transmitted through the DQ signals (data input/output signals). The PHY 112 may receive read data transmitted from the memory device 130 , that is, logical values of DQ signals according to the read data. The PHY 112 may transmit the command CMD and the address ADD to the memory device 130 according to the command and the address generated by the command generator 115 . The PHY 112 may transmit a command CMD to the memory device 130 according to the refresh command generated by the refresh command generator 116 . PHY 112 may drive command signals or address signals. Logic values of command signals and address signals (ACT_n, RAS_n, CAS_n, WE_n, A0-A17, BA0-BA1, BG0-BG1, etc.) may be specified in the JEDEC standard.

예를 들어, 메모리 컨트롤러(110)의 모든 구성 요소들은 집적 회로 내에서 하드웨어 방식으로 구현될 수 있다. 다른 예를 들어, 메모리 컨트롤러(110)의 에러 정정 회로(111)는 소프트웨어 방식, 하드웨어 방식, 또는 이들의 조합을 이용하여 메모리 컨트롤러(110) 내에서 구현될 수 있다.For example, all components of the memory controller 110 may be implemented in an integrated circuit in a hardware manner. As another example, the error correction circuit 111 of the memory controller 110 may be implemented in the memory controller 110 using a software method, a hardware method, or a combination thereof.

메모리 장치(130)는 명령 디코더(131), 리프레쉬 컨트롤러(132), 어드레스 디멀티플렉서(133), 뱅크(134), 로우 디코더(135), 컬럼 디코더(136), 쓰기 회로(137), 읽기 회로(138), DQ 버퍼(139), 레지스터들(140), 및 온도 센서(141)를 포함할 수 있다. 상술한 구성 요소들은 모두 메모리 장치(130) 내부에서 하드웨어 방식으로 구현될 수 있다.The memory device 130 includes a command decoder 131 , a refresh controller 132 , an address demultiplexer 133 , a bank 134 , a row decoder 135 , a column decoder 136 , a write circuit 137 , and a read circuit ( 138 ), a DQ buffer 139 , registers 140 , and a temperature sensor 141 . All of the above-described components may be implemented in a hardware manner in the memory device 130 .

명령 디코더(131)는 PHY(112)로부터 출력되는 명령을 디코딩할 수 있고 메모리 장치(130)의 내부 구성 요소들을 제어할 수 있다. 명령 디코더(131)는 리프레쉬 명령을 수신 및 디코딩하고 그 다음 리프레쉬 컨트롤러(132)를 제어할 수 있다. 리프레쉬 컨트롤러(132)는 제 1 카운터(132_1), 제 2 카운터(132_2), 및 멀티플렉서(132_4)를 포함할 수 있다. 리프레쉬 컨트롤러(132)는 명령 디코더(131)의 제어에 기초하여 제 1 카운터(132_1) 및 제 2 카운터(132_2)를 제어할 수 있다. 제 1 카운터(132_1)는 뱅크(134)의 에러-프리 구역에 해당하는 로우 어드레스를 생성할 수 있다. 제 2 카운터(132_2)는 뱅크(134)의 에러 구역에 해당하는 로우 어드레스를 생성할 수 있다.The command decoder 131 may decode a command output from the PHY 112 and may control internal components of the memory device 130 . The command decoder 131 may receive and decode a refresh command and then control the refresh controller 132 . The refresh controller 132 may include a first counter 132_1 , a second counter 132_2 , and a multiplexer 132_4 . The refresh controller 132 may control the first counter 132_1 and the second counter 132_2 based on the control of the command decoder 131 . The first counter 132_1 may generate a row address corresponding to an error-free region of the bank 134 . The second counter 132_2 may generate a row address corresponding to an error region of the bank 134 .

실시 예에 있어서, 제 1 카운터(132_1)는 메모리 장치(130)로 리프레쉬 명령이 입력될 때마다 에러-프리 구역에 해당하는 로우 어드레스를 생성하고 업데이트할 수 있다. 리프레쉬 컨트롤러(132)는 리프레쉬 명령이 입력될 때마다 제 1 카운터(132_1)를 작동시킬 수 있다(trigger). 반면에, 제 2 카운터(132_2)는 메모리 장치(130)로 입력되는 리프레쉬 명령들 중 일부에만 응답하여 에러 구역에 해당하는 로우 어드레스를 생성하고 업데이트할 수 있다. 리프레쉬 컨트롤러(132)는 입력되는 리프레쉬 명령들 중 일부에만 응답하여 제 2 카운터(132_2)를 작동시킬 수 있고 나머지 리프레쉬 명령들에 따라 제 2 카운터(132_2)를 작동시키지 않을 수 있다. 제 1 카운터(132_1)에 의해 에러-프리 구역에 해당하는 로우 어드레스가 업데이트되는 시점들 간의 간격은 제 2 카운터(132_2)에 의해 에러 구역에 해당하는 로우 어드레스가 업데이트되는 시점들 간의 간격보다 짧을 수 있다. 멀티플렉서(132_4)는 제 1 카운터(132_1)의 로우 어드레스 및 제 2 카운터(132_2)의 로우 어드레스 중 하나를 로우 디코더(135)로 제공할 수 있다. 도 3에서 도시된 바와 달리, 멀티플렉서(132_4)는 제 1 카운터(132_1)의 로우 어드레스 및 제 2 카운터(132_2)의 로우 어드레스를 함께 로우 디코더(135)로 제공할 수도 있다.In an embodiment, the first counter 132_1 may generate and update a row address corresponding to an error-free region whenever a refresh command is input to the memory device 130 . The refresh controller 132 may trigger the first counter 132_1 whenever a refresh command is input. On the other hand, the second counter 132_2 may generate and update a row address corresponding to the error region in response to only some of the refresh commands input to the memory device 130 . The refresh controller 132 may operate the second counter 132_2 in response to only some of the input refresh commands and may not operate the second counter 132_2 according to the remaining refresh commands. The interval between the times when the row address corresponding to the error-free zone is updated by the first counter 132_1 may be shorter than the interval between the times when the row address corresponding to the error zone is updated by the second counter 132_2 have. The multiplexer 132_4 may provide one of the row address of the first counter 132_1 and the row address of the second counter 132_2 to the row decoder 135 . 3 , the multiplexer 132_4 may provide the row address of the first counter 132_1 and the row address of the second counter 132_2 together to the row decoder 135 .

어드레스 디멀티플렉서(133)는 명령 디코더(131)의 제어에 기초하여 명령에 따라 수신되는 어드레스(ADD)를 메모리 장치(130)의 내부 구성 요소들로 제공할 수 있다. 어드레스 디멀티플렉서(133)는 PHY(112)로부터 활성화 명령과 함께 전송되는 어드레스를 로우 어드레스로서 로우 디코더(135)에 제공할 수 있다. 어드레스 디멀티플렉서(133)는 PHY(112)로부터 읽기 명령 또는 쓰기 명령과 함께 전송되는 어드레스를 컬럼 어드레스로서 컬럼 디코더(136)에 제공할 수 있다. 어드레스 디멀티플렉서(133)는 PHY(112)로부터 설정 명령과 함께 수신되는 어드레스를 설정 코드로서 레지스터들(140)에 제공할 수 있다. 설정 코드는 연산 코드(OPCODE) 또는 피연산자(operand)로도 지칭될 수도 있다.The address demultiplexer 133 may provide the address ADD received according to a command to internal components of the memory device 130 based on the control of the command decoder 131 . The address demultiplexer 133 may provide an address transmitted from the PHY 112 along with the activation command as a row address to the row decoder 135 . The address demultiplexer 133 may provide an address transmitted from the PHY 112 along with a read command or a write command to the column decoder 136 as a column address. The address demultiplexer 133 may provide the registers 140 with the address received along with the setup command from the PHY 112 as a setup code. The setting code may also be referred to as an operation code (OPCODE) or an operand.

뱅크(134)는 메모리 셀 어레이를 포함할 수 있다. 뱅크(134)는 메모리 장치(130)의 메모리 셀들을 구분하기 위한 단위일 수 있다. 메모리 셀 어레이는 워드 라인들과 비트 라인들(미도시)에 연결되는 메모리 셀들을 포함할 수 있다. 도 3의 도시의 편의를 위해, 뱅크(134)는 1개인 것으로 도시되었으나, 메모리 장치(130)는 하나 이상의 뱅크들(134)을 포함할 수 있다.The bank 134 may include an array of memory cells. The bank 134 may be a unit for classifying memory cells of the memory device 130 . The memory cell array may include memory cells connected to word lines and bit lines (not shown). For convenience of illustration in FIG. 3 , the bank 134 is illustrated as one, but the memory device 130 may include one or more banks 134 .

뱅크(134)의 메모리 셀들은 에러-프리 구역 및 에러 구역으로 구분될 수 있다. 예를 들어, 에러-프리 구역에 할당되는 메모리 셀들과 에러 구역에 할당되는 메모리 셀들은 실질적으로 동일하게 제조될 수 있다. 리프레쉬 컨트롤러(132)의 제어에 의해, 에러-프리 구역에 배치되는 메모리 셀들은 에러 구역에 할당되는 메모리 셀들보다 자주 리프레쉬될 수 있다. 뱅크(134)가 에러 구역을 포함하는 경우(즉, 메모리 장치(130)가 근사적 메모리로 동작하는 경우)의 리프레쉬 동작에 의한 메모리 장치(130)의 전력 소모는, 뱅크(134)의 모든 메모리 셀들이 에러-프리 구역으로 할당되는 경우(즉, 뱅크(134)에 에러 구역이 없고 메모리 장치(130)가 근사적 메모리가 아닌 일반 메모리로 동작하는 경우)의 리프레쉬 동작에 의한 메모리 장치(130)의 전력 소모보다 적다. 에러 구역이 에러-프리 구역보다 커질수록 상술한 전력 소모들 간의 차이도 증가할 수 있다. 에러 구역에 배치되는 메모리 셀들에 저장되는 데이터의 BER은 에러-프리 구역에 배치되는 메모리 셀들에 저장되는 데이터의 BER보다 느린 리프레쉬 속도로 인하여 높을 수 있다.The memory cells of the bank 134 may be divided into an error-free region and an error region. For example, memory cells allocated to the error-free region and memory cells allocated to the error region may be manufactured to be substantially the same. Under the control of the refresh controller 132 , memory cells arranged in the error-free region may be refreshed more frequently than memory cells allocated to the error region. When the bank 134 includes an error zone (ie, when the memory device 130 operates as an approximate memory), the power consumption of the memory device 130 by the refresh operation is The memory device 130 by a refresh operation when cells are allocated to an error-free region (that is, when there is no error region in the bank 134 and the memory device 130 operates as a general memory rather than an approximate memory) less than the power consumption of The difference between the power consumptions described above may increase as the error zone becomes larger than the error-free zone. The BER of data stored in the memory cells disposed in the error region may be higher due to a slower refresh rate than the BER of data stored in the memory cells disposed in the error-free region.

로우 디코더(135)는 명령 디코더(131)의 제어에 기초하여 로우 어드레스(RA)를 디코딩할 수 있다. 로우 디코더(135)는 로우 어드레스에 대응하는 적어도 하나의 워드 라인을 선택하거나 활성화할 수 있다. 로우 디코더(135)는 PHY(112)로부터 출력된 로우 어드레스, 제 1 카운터(132_1)에 의해 생성된 로우 어드레스, 또는 제 2 카운터(132_2)에 의해 생성된 로우 어드레스를 로우 어드레스(RA)로서 수신할 수 있다. 예를 들어, 로우 디코더(135)는 활성화 명령에 따른 로우 어드레스를 어드레스 디멀티플렉서(133)로부터 수신할 수 있다. 로우 디코더(135)는 리프레쉬 명령에 따른 로우 어드레스를 제 1 및 제 2 카운터들(132_1, 132_2) 중 어느 하나로부터 수신할 수 있다.The row decoder 135 may decode the row address RA based on the control of the command decoder 131 . The row decoder 135 may select or activate at least one word line corresponding to the row address. The row decoder 135 receives the row address output from the PHY 112 , the row address generated by the first counter 132_1 , or the row address generated by the second counter 132_2 as the row address RA. can do. For example, the row decoder 135 may receive a row address according to an activation command from the address demultiplexer 133 . The row decoder 135 may receive a row address according to the refresh command from any one of the first and second counters 132_1 and 132_2 .

로우 디코더(135)는 명령 디코더(131) 및 리프레쉬 컨트롤러(132)의 제어에 기초하여, 에러 구역에 배치된 메모리 셀들보다 에러-프리 구역에 배치된 메모리 셀들을 좀 더 자주 리프레쉬할 수 있다. 에러-프리 구역의 워드 라인들 중 적어도 하나 이상의 워드 라인을 나타내는 로우 어드레스는, 에러 구역의 워드 라인들 중 적어도 하나 이상의 워드 라인을 나타내는 로우 어드레스보다 자주 로우 디코더(135)로 제공될 수 있다.The row decoder 135 may refresh the memory cells disposed in the error-free region more frequently than the memory cells disposed in the error region based on the control of the command decoder 131 and the refresh controller 132 . A row address indicating at least one of the word lines of the error-free region may be provided to the row decoder 135 more frequently than a row address indicating at least one or more of the word lines of the error region.

실시 예에 있어서, 메모리 컨트롤러(110)는 활성화 명령에 의해 활성화될 워드 라인을 지정하는 로우 어드레스를 직접 생성하고 메모리 장치(130)로 제공할 수 있다. 활성화 명령을 생성하는 경우와 달리, 메모리 컨트롤러(110)는 리프레쉬 명령만을 메모리 장치(130)로 제공하고 리프레쉬될 워드 라인을 직접 지정하지 않을 수 있다. 메모리 장치(130)는 리프레쉬 명령에 응답하여 리프레쉬될 워드 라인을 나타내는 로우 어드레스를 내부적으로 생성하는 리프레쉬 컨트롤러(132)를 포함할 수 있다. 메모리 장치(130)는 근사적 메모리로 동작할 수 있다. 리프레쉬 컨트롤러(132)는 에러-프리 구역에 배치되는 워드 라인들을 나타내는 로우 어드레스를 생성하는 제 1 카운터(132_1) 그리고 에러 구역에 배치되는 워드 라인들을 나타내는 로우 어드레스를 생성하는 제 2 카운터(132_2)를 포함할 수 있다.In an embodiment, the memory controller 110 may directly generate a row address designating a word line to be activated by an activation command and provide it to the memory device 130 . Unlike the case of generating the activation command, the memory controller 110 may provide only the refresh command to the memory device 130 and may not directly designate a word line to be refreshed. The memory device 130 may include a refresh controller 132 that internally generates a row address indicating a word line to be refreshed in response to a refresh command. The memory device 130 may operate as an approximate memory. The refresh controller 132 includes a first counter 132_1 generating row addresses representing word lines disposed in the error-free area and a second counter 132_2 generating row addresses representing word lines disposed in the error area. may include

컬럼 디코더(136)는 명령 디코더(131)의 제어에 기초하여 컬럼 어드레스(CA)를 디코딩할 수 있다. 컬럼 디코더(136)는 컬럼 어드레스에 대응하는 적어도 하나의 컬럼 선택 라인을 선택하거나 활성화할 수 있다. 컬럼 선택 라인에는 적어도 하나 이상의 비트 라인들이 연결될 수 있다. 예를 들어, 로우 어드레스 및 컬럼 어드레스에 대응하는 메모리 셀들이 선택되고 선택된 메모리 셀들에 대한 데이터 입출력이 수행될 수 있다. 컬럼 디코더(136)는 쓰기 드라이버(WDRV) 및 입출력 센스 엠프(IOSA)를 포함할 수 있다.The column decoder 136 may decode the column address CA based on the control of the command decoder 131 . The column decoder 136 may select or activate at least one column selection line corresponding to the column address. At least one or more bit lines may be connected to the column selection line. For example, memory cells corresponding to a row address and a column address may be selected, and data input/output may be performed on the selected memory cells. The column decoder 136 may include a write driver (WDRV) and an input/output sense amplifier (IOSA).

쓰기 드라이버(WDRV)는 쓰기 회로(137)로부터 쓰기 데이터를 수신하고 명령 디코더(131)의 제어에 기초하여 선택된 메모리 셀들에 쓰기 데이터를 쓸 수 있다. 입출력 센스 앰프(IOSA)는 선택된 메모리 셀들의 읽기 데이터를 감지하고 읽기 데이터를 읽기 회로(138)로 제공할 수 있다.The write driver WDRV may receive write data from the write circuit 137 and write the write data to the selected memory cells based on the control of the command decoder 131 . The input/output sense amplifier IOSA may detect read data of the selected memory cells and provide the read data to the read circuit 138 .

쓰기 회로(137)는 PHY(112)로부터 DQ 버퍼(139)를 통해 전송되는 DQ 신호들에 포함된 쓰기 데이터의 비트들을 수신하고 병렬화할 수 있다. 쓰기 회로(137)는 쓰기 데이터를 쓰기 드라이버(WDRV)에 제공할 수 있다. 읽기 회로(138)는 입출력 센스 앰프(IOSA)로부터 읽기 데이터를 수신하고 직렬화할 수 있다. 읽기 회로(138)는 읽기 데이터를 DQ 버퍼(139)로 제공할 수 있다. DQ 버퍼(139)는 PHY(112)로부터 DQ 신호들을 수신하거나 PHY(112)로 DQ 신호들을 출력할 수 있다. DQ 신호들은 양방향 신호들이므로, DQ 버퍼(139)는 수신기(미도시) 및 송신기(미도시) 모두를 포함할 수 있다.The write circuit 137 may receive and parallelize bits of write data included in DQ signals transmitted from the PHY 112 through the DQ buffer 139 . The write circuit 137 may provide write data to the write driver WDRV. The read circuit 138 may receive and serialize read data from the input/output sense amplifier IOSA. The read circuit 138 may provide read data to the DQ buffer 139 . DQ buffer 139 may receive DQ signals from PHY 112 or output DQ signals to PHY 112 . Since DQ signals are bidirectional signals, the DQ buffer 139 may include both a receiver (not shown) and a transmitter (not shown).

레지스터들(140)은 명령 디코더(131)의 제어에 기초하여 어드레스 디멀티플렉서(133)로부터 제공되는 설정 코드, 즉 설정 정보를 저장할 수 있다. 레지스터들(140)은 예를 들어 모드 레지스터들, 다목적 레지스터들 등으로 지칭될 수 있다. 메모리 컨트롤러(110)는 레지스터들(140)에 저장된 값들을 변경하고 메모리 장치(130)의 동작 조건, 동작 모드 등을 설정하거나 조정할 수 있다.The registers 140 may store a setting code, ie, setting information, provided from the address demultiplexer 133 based on the control of the command decoder 131 . Registers 140 may be referred to as mode registers, general purpose registers, etc., for example. The memory controller 110 may change values stored in the registers 140 and set or adjust an operating condition, an operating mode, etc. of the memory device 130 .

온도 센서(141)는 메모리 장치(130) 내부의 현재 온도를 감지할 수 있다. 온도 센서(141)는 현재 온도를 나타내는 값을 레지스터들(140)에 저장할 수 있다. 메모리 컨트롤러(110)는 레지스터들(140)을 읽기 위한 명령을 발행할 수 있다. 온도 센서(141)에 의해 감지되고 레지스터들(140)에 저장된 현재 온도의 값은 상술한 명령에 따라 메모리 컨트롤러(110)로 전송될 수 있다. 예를 들어, 명령 디코더(131)는 레지스터들(140)을 읽기 위한 명령을 디코딩하고 레지스터들(140)에 저장된 값들을 읽기 회로(138)로 전송할 수 있다. 읽기 회로(138)는 레지스터들(140)에 저장된 값들을 읽기 데이터로서 DQ 버퍼(139)에 제공할 수 있다. DQ 버퍼(139)는 레지스터들(140)에 저장된 값들을 포함하는 DQ 신호들을 PHY(112)로 전송할 수 있다.The temperature sensor 141 may detect a current temperature inside the memory device 130 . The temperature sensor 141 may store a value indicating the current temperature in the registers 140 . The memory controller 110 may issue a command for reading the registers 140 . The current temperature value sensed by the temperature sensor 141 and stored in the registers 140 may be transmitted to the memory controller 110 according to the above-described command. For example, the command decoder 131 may decode a command for reading the registers 140 and transmit values stored in the registers 140 to the read circuit 138 . The read circuit 138 may provide the values stored in the registers 140 as read data to the DQ buffer 139 . DQ buffer 139 may transmit DQ signals including values stored in registers 140 to PHY 112 .

도 4는 도 3의 제 2 데이터가 메모리 장치의 뱅크에 저장되는 예시를 도시한다. 메모리 컨트롤러(110)는 제 2 데이터 집합(Data 2[0] ~ Data 2[7])을 뱅크(134)의 에러 구역에 해당하는 메모리 셀들에 저장할 수 있다. 데이터 집합은 다수의 데이터를 의미할 수 있고 그리고 인덱스는 데이터를 구별하기 위한 것이다. 도 4에서 X축은 워드 라인이 연장되는 방향과 복수의 비트 라인들이 배치되는 방향을 나타낼 수 있다. 도 4에서 Y축은 비트 라인이 연장되는 방향과 복수의 워드 라인들이 배치되는 방향을 나타낼 수 있다. 예를 들어, 제 2 데이터 집합(Data 2[0] ~ Data 2[7])의 각 데이터는 행 단위로 뱅크(134)의 에러 구역에 저장될 수 있다. 각 데이터는 워드 라인에 연결되고 페이지를 구성하는 메모리 셀들에 저장될 수 있다.4 illustrates an example in which the second data of FIG. 3 is stored in a bank of a memory device. The memory controller 110 may store the second data sets Data 2[0] to Data 2[7] in memory cells corresponding to the error region of the bank 134 . A data set may mean multiple pieces of data, and an index is for distinguishing data. In FIG. 4 , the X axis may indicate a direction in which a word line extends and a direction in which a plurality of bit lines are disposed. In FIG. 4 , the Y axis may indicate a direction in which a bit line extends and a direction in which a plurality of word lines are disposed. For example, each data of the second data set (Data 2[0] to Data 2[7]) may be stored in the error zone of the bank 134 in a row unit. Each data may be stored in memory cells connected to a word line and constituting a page.

실시 예에 있어서, 에러-프리 구역의 모든 메모리 셀들이 리프레쉬되는데 걸리는 시간, tREF는 k ms일 수 있다(k는 임의의 숫자). 에러 구역의 모든 메모리 셀들이 리프레쉬되는데 걸리는 시간, tREF는 n X k ms일 수 있다. 예를 들어, n은 2 이상의 자연수일 있다. 에러 구역의 tREF는 에러-프리 구역의 tREF의 정수 배에 해당할 수 있다. 에러-프리 구역의 리프레쉬 속도는 에러 구역의 리프레쉬 속도보다 빠를 수 있다.In an embodiment, the time taken for all memory cells in the error-free region to be refreshed, tREF, may be k ms (k is an arbitrary number). The time taken for all memory cells in the error region to be refreshed, tREF, may be n X k ms. For example, n may be a natural number of 2 or more. The tREF of the error zone may correspond to an integer multiple of tREF of the error-free zone. The refresh rate of the error-free region may be faster than the refresh rate of the error region.

실시 예에 있어서, 메모리 컨트롤러(110)는 데이터의 종류, 데이터의 중요성, 응용 프로그램의 종류 등에 따라 데이터가 에러-프리 구역에 저장될지 또는 에러 구역에 저장될지를 결정할 수 있다. 메모리 컨트롤러(110)는 신경망의 데이터를 에러 구역에 저장할 수 있다. 메모리 컨트롤러(110)는 프로그램 코드 또는 신경망과 다른 응용 프로그램의 데이터를 에러-프리 구역에 저장할 수 있다.In an embodiment, the memory controller 110 may determine whether data is to be stored in the error-free area or the error area according to the type of data, the importance of data, the type of the application program, and the like. The memory controller 110 may store data of the neural network in the error region. The memory controller 110 may store program code or data of an application program other than a neural network in an error-free area.

도 5는 도 3의 메모리 컨트롤러가 제 2 데이터를 메모리 장치에 저장하기 위한 예시적인 순서도를 도시한다.FIG. 5 is an exemplary flowchart for the memory controller of FIG. 3 to store second data in a memory device.

S110 단계에서, 메모리 컨트롤러(110)의 에러 정정 회로(111)는 제 1 데이터의 중요한 비트들의 에러 정정을 위해 제 1 데이터의 일부 중요하지 않은 비트들을 패리티 비트들로 대체할 수 있다. 에러 정정 회로(111)는 비트의 중요도에 따라 패리티 비트들로 대체될 일부 중요하지 않은 비트들을 선택할 수 있다(도 2a 및 도 2c의 Data 1 [31:0] 참조).In operation S110 , the error correction circuit 111 of the memory controller 110 may replace some insignificant bits of the first data with parity bits for error correction of important bits of the first data. The error correction circuit 111 may select some non-significant bits to be replaced with parity bits according to the importance of the bits (see Data 1 [31:0] of FIGS. 2A and 2C ).

S120 단계에서, 에러 정정 회로(111)는 제 1 데이터의 나머지 비트들과 패리티 비트들을 포함하는 제 2 데이터를 생성할 수 있다(도 2a 및 도 2c의 Data 2 [31:0] 참조). 에러 정정 회로(111)는 패리티 비트들을 제 1 데이터에 부가하지 않고 일부 중요하지 않은 비트들을 패리티 비트들로 대체하므로, 제 2 데이터의 비트 수와 제 1 데이터의 비트 수는 동일할 수 있다.In operation S120 , the error correction circuit 111 may generate second data including the remaining bits of the first data and parity bits (see Data 2 [31:0] of FIGS. 2A and 2C ). Since the error correction circuit 111 does not add parity bits to the first data and replaces some unimportant bits with parity bits, the number of bits of the second data and the number of bits of the first data may be the same.

S130 단계에서, 메모리 컨트롤러(110)의 명령 생성기(115)는 S120 단계의 제 2 데이터를 메모리 장치(130)에 저장하기 위한 명령 및 어드레스를 생성할 수 있다. 여기서, 명령은 적어도 하나의 활성화 명령 및 적어도 하나의 쓰기 명령을 포함할 수 있다. 명령 생성기(115)는 적어도 하나의 활성화 명령과 함께 적어도 하나의 어드레스를 생성할 수 있다. 적어도 하나의 어드레스는 뱅크(134)의 에러 구역에 위치하는 메모리 셀들에 연결되는 워드 라인들 중 적어도 하나의 워드 라인을 나타낼 수 있다.In operation S130 , the command generator 115 of the memory controller 110 may generate a command and an address for storing the second data of operation S120 in the memory device 130 . Here, the command may include at least one activation command and at least one write command. The command generator 115 may generate at least one address together with the at least one activation command. The at least one address may indicate at least one word line among word lines connected to memory cells located in an error region of the bank 134 .

도 6은 도 3의 메모리 컨트롤러가 메모리 장치의 에러 구역과 에러-프리 구역을 조정하기 위한 예시적인 순서도를 도시한다.6 is an exemplary flowchart for the memory controller of FIG. 3 to adjust an error zone and an error-free zone of the memory device.

S210 단계에서, 메모리 컨트롤러(110)의 명령 생성기(115)는 에러 구역의 시작 어드레스를 생성할 수 있다. 예를 들어, 에러 구역의 시작 어드레스는 로우 어드레스일 수 있다. 메모리 컨트롤러(110)는 에러 구역의 시작 어드레스를 메모리 장치(130)에 설정하기 위한 명령을 생성할 수 있다. 에러 구역의 시작 어드레스를 기준으로 에러 구역과 에러-프리 구역이 구분될 수 있고 시작 어드레스는 기준 어드레스로도 지칭될 수 있다.In operation S210 , the command generator 115 of the memory controller 110 may generate a start address of the error region. For example, the start address of the error zone may be a row address. The memory controller 110 may generate a command for setting the start address of the error zone in the memory device 130 . An error zone and an error-free zone may be divided based on the start address of the error zone, and the starting address may also be referred to as a reference address.

S220 단계에서 에러 구역을 조정하기 위한 설정 명령 및 에러 구역의 시작 어드레스를 메모리 장치(130)로 전송할 수 있다. 실시 예에 있어서, 명령 생성기(115)는 유저, 프로세서, 또는 응용 프로그램의 요청에 따라 에러 구역의 시작 어드레스를 생성하거나 조정할 수 있다. 시작 어드레스의 값은 뱅크(134)의 워드 라인들을 선택하기 위한 로우 어드레스의 최소 값과 최대 값 사이의 임의의 값일 수 있다. 메모리 컨트롤러(110)는 에러-프리 구역에 할당된 메모리 셀들의 개수와 에러 구역에 할당된 메모리 셀들의 개수의 비율을 조정할 수 있다.In operation S220 , a setting command for adjusting the error region and a start address of the error region may be transmitted to the memory device 130 . In an embodiment, the instruction generator 115 may generate or adjust the start address of the error zone according to a request of a user, a processor, or an application program. The value of the start address may be any value between the minimum value and the maximum value of the row address for selecting the word lines of the bank 134 . The memory controller 110 may adjust a ratio of the number of memory cells allocated to the error-free region to the number of memory cells allocated to the error region.

실시 예에 있어서, 에러 구역의 시작 어드레스는 메모리 장치(130)의 레지스터들(140)에 저장될 수 있다. 제 1 카운터(132_1)는 에러 구역의 시작 어드레스를 기준으로 에러-프리 구역의 메모리 셀들과 연결된 워드 라인들에 대응하는 로우 어드레스를 생성할 수 있다. 제 2 카운터(132_2)는 에러 구역의 시작 어드레스를 기준으로 에러 구역의 메모리 셀들과 연결된 워드 라인들에 대응하는 로우 어드레스를 생성할 수 있다.In an embodiment, the start address of the error region may be stored in the registers 140 of the memory device 130 . The first counter 132_1 may generate a row address corresponding to the word lines connected to the memory cells of the error-free region based on the start address of the error region. The second counter 132_2 may generate row addresses corresponding to word lines connected to memory cells of the error region based on the start address of the error region.

실시 예에 있어서, 에러 구역의 시작 어드레스는 메모리 컨트롤러(110)의 레지스터(118)에도 저장될 수 있다. 메모리 컨트롤러(110)는 레지스터들(140)을 읽기 위한 명령을 메모리 장치(130)로 전송함으로써 레지스터들(140)에 저장된 에러 구역의 시작 어드레스를 읽고 메모리 컨트롤러(110)의 레지스터(118)에 저장할 수 있다.In an embodiment, the start address of the error zone may also be stored in the register 118 of the memory controller 110 . The memory controller 110 reads the start address of the error region stored in the registers 140 by transmitting a command for reading the registers 140 to the memory device 130 , and stores the start address in the register 118 of the memory controller 110 . can

실시 예에 있어서, 뱅크(134)의 개수는 하나 이상일 수 있으므로, 뱅크들(134)의 에러 구역들의 시작 어드레스들은 서로 동일하거나 상이할 수 있다. 메모리 컨트롤러(110)는 뱅크들(134)의 에러 구역들의 시작 어드레스들을 서로 동일하게 설정하거나 서로 다르게 설정할 수도 있다. 어느 경우든, 뱅크들(134)의 에러 구역들의 시작 어드레스들은 각각 레지스터들(140)에 저장될 수 있다. 뱅크들(134)의 에러 구역들의 시작 어드레스들이 서로 다르게 설정되는 경우, 메모리 장치(130)는 뱅크들(134) 개수만큼의 리프레쉬 컨트롤러들(132)을 포함할 수 있다. 뱅크들(134)의 에러 구역들의 시작 어드레스들이 서로 동일하게 설정되는 경우, 하나의 리프레쉬 컨트롤러(132)가 적어도 둘 이상의 뱅크들(134)을 리프레쉬하기 위해 사용될 수 있다. 하나의 리프레쉬 컨트롤러(132)에 의해 생성되는 로우 어드레스에 따라 적어도 둘 이상의 뱅크들(134)의 메모리 셀들이 리프레쉬될 수 있다.In an embodiment, since the number of banks 134 may be one or more, start addresses of error regions of the banks 134 may be the same or different from each other. The memory controller 110 may set the start addresses of the error regions of the banks 134 to be the same or set differently. In either case, the start addresses of the error regions of the banks 134 may be stored in the registers 140 respectively. When the start addresses of the error regions of the banks 134 are set differently, the memory device 130 may include as many refresh controllers 132 as the number of the banks 134 . When the start addresses of the error regions of the banks 134 are set to be identical to each other, one refresh controller 132 may be used to refresh at least two or more banks 134 . Memory cells of at least two or more banks 134 may be refreshed according to a row address generated by one refresh controller 132 .

도 7은 도 3의 메모리 컨트롤러가 온도와 BER에 따라 리프레쉬 비율을 조정하기 위한 예시적인 순서도를 도시한다.FIG. 7 shows an exemplary flowchart for adjusting a refresh rate by the memory controller of FIG. 3 according to temperature and BER.

S310 단계에서, 메모리 컨트롤러(110)는 메모리 장치(130)의 현재 온도를 확인할 수 있다. 메모리 컨트롤러(110)의 명령에 응답하여, 온도 센서(141)에 의해 감지되고 레지스터들(140)에 저장된 현재 온도에 대응하는 값은 읽기 회로(138) 및 DQ 버퍼(139)를 통해 메모리 컨트롤러(110)로 제공될 수 있다.In step S310 , the memory controller 110 may check the current temperature of the memory device 130 . In response to a command from the memory controller 110 , the value corresponding to the current temperature sensed by the temperature sensor 141 and stored in the registers 140 is read through the read circuit 138 and the DQ buffer 139 to the memory controller ( 110) may be provided.

S320 단계에서, 메모리 컨트롤러(110)는 원하는 BER을 확인할 수 있다. 예를 들어, 원하는 BER은 유저, 프로세서, 또는 응용 프로그램의 요청에 의해 결정될 수 있다. 메모리 컨트롤러(110)는 원하는 BER의 정보를 수신할 수 있다.In step S320 , the memory controller 110 may check a desired BER. For example, the desired BER may be determined by a request of a user, a processor, or an application program. The memory controller 110 may receive desired BER information.

S330 단계에서, 메모리 컨트롤러(110)는 메모리 장치(130)의 현재 온도와 원하는 BER에 기초하여 리프레쉬 비율을 조정하기 위한 명령을 발행하고 그 명령을 메모리 장치(130)로 전송할 수 있다. 메모리 컨트롤러(110)는 레지스터들(118)에 저장된 룩업 테이블에 기초하여 리프레쉬 비율을 조정할 수 있다. 룩업 테이블은 도 8에서 상세하게 설명될 것이다.In operation S330 , the memory controller 110 may issue a command for adjusting the refresh rate based on the current temperature of the memory device 130 and the desired BER and transmit the command to the memory device 130 . The memory controller 110 may adjust the refresh rate based on a lookup table stored in the registers 118 . The lookup table will be described in detail in FIG. 8 .

예를 들어, 리프레쉬 비율은 뱅크(134)의 에러-프리 구역의 리프레쉬 속도와 뱅크(134)의 에러 구역의 리프레쉬 속도의 비율일 수 있다. 다른 예를 들어, 리프레쉬 비율은 뱅크(134)의 에러-프리 구역의 모든 메모리 셀들이 리프레쉬되는데 필요한 시간과 뱅크(134)의 에러 구역의 모든 메모리 셀들이 리프레쉬되는데 필요한 시간의 비율일 수도 있다.For example, the refresh rate may be a ratio of the refresh rate of the error-free region of the bank 134 to the refresh rate of the error region of the bank 134 . As another example, the refresh rate may be a ratio of a time required for all memory cells in the error-free region of the bank 134 to be refreshed to a time required for all memory cells in the error region of the bank 134 to be refreshed.

실시 예에 있어서, 메모리 컨트롤러(110)는 리프레쉬 비율을 조정하기 위한 명령과 함께 리프레쉬 비율에 관한 정보를 생성할 수 있다. 메모리 컨트롤러(110)는 리프레쉬 비율에 관한 정보를 메모리 장치(130)로 전송할 수 있고 메모리 장치(130)의 레지스터들(140)에 리프레쉬 비율에 관한 정보가 저장될 수 있다. 예를 들어, 리프레쉬 비율에 관한 정보는 에러-프리 구역의 리프레쉬 속도 또는 리프레쉬 시간에 관한 정보를 포함할 수 있다. 리프레쉬 비율에 관한 정보는 에러 구역의 리프레쉬 속도 또는 리프레쉬 시간에 관한 정보를 포함할 수 있다. 리프레쉬 속도와 리프레쉬 시간은 메모리 셀들이 얼마나 자주 리프레쉬되는지를 나타낼 수 있고 리프레쉬 시간은 리프레쉬 주기를 의미할 수 있다. 리프레쉬 컨트롤러(132)는 레지스터들(140)에 저장된 리프레쉬 비율에 관한 정보를 참조하여 에러-프리 구역의 리프레쉬 속도를 조정하거나 에러 구역의 리프레쉬 속도를 조정할 수 있다. 리프레쉬 컨트롤러(132)는 메모리 컨트롤러(110)의 명령에 응답하여 리프레쉬 비율을 조정할 수 있다.In an embodiment, the memory controller 110 may generate information about the refresh rate together with a command for adjusting the refresh rate. The memory controller 110 may transmit information regarding the refresh rate to the memory device 130 , and information regarding the refresh rate may be stored in the registers 140 of the memory device 130 . For example, the information about the refresh rate may include information about the refresh rate or refresh time of the error-free zone. The information on the refresh rate may include information on the refresh rate or refresh time of the error zone. The refresh rate and refresh time may indicate how often memory cells are refreshed, and the refresh time may indicate a refresh period. The refresh controller 132 may adjust the refresh rate of the error-free region or adjust the refresh rate of the error region with reference to information about the refresh rate stored in the registers 140 . The refresh controller 132 may adjust a refresh rate in response to a command from the memory controller 110 .

도 8은 BER과 리프레쉬 간의 관계를 나타내는 룩업 테이블의 예시를 도시한다. 도 8의 룩업 테이블(LUT)은 BER과 리프레쉬 시간 간의 관계를 나타낸다. 룩업 테이블(LUT)에서 BER들에 따른 리프레쉬 시간들이 각각 맵핑될 수 있다. 메모리 컨트롤러(110)는 레지스터들(118)에 저장된 룩업 테이블(LUT)을 참조하여 에러-프리 구역의 리프레쉬 시간을 조정할 수 있다.8 shows an example of a lookup table showing the relationship between BER and refresh. The lookup table (LUT) of FIG. 8 shows the relationship between the BER and the refresh time. Refresh times according to BERs may be respectively mapped in the lookup table (LUT). The memory controller 110 may adjust the refresh time of the error-free region by referring to the lookup table (LUT) stored in the registers 118 .

예를 들어, 유저, 프로세서, 또는 응용 프로그램에 의해 요청된 BER이 10-6이면, 에러 구역의 리프레쉬 시간은 에러-프리 구역의 리프레쉬 시간의 23배일 수 있다. 메모리 컨트롤러(110)는 룩업 테이블(LUT)에 명시된 BER에 따른 리프레쉬 시간을 확인하고 에러 구역의 리프레쉬 속도를 조정할 수 있다. 룩업 테이블(LUT)에 명시된 리프레쉬 시간들의 값들은 모두 예시적인 것에 불과하다. 요청된 BER이 증가할수록, 에러 구역의 리프레쉬 시간도 증가할 수 있다. 다른 예를 들어, 유저, 프로세서, 또는 응용 프로그램에 의해 요청된 BER이 디폴트(default)이면, 에러 구역의 리프레쉬 시간과 에러-프리 구역의 리프레쉬 시간은 동일할 수 있다. 이 경우, 메모리 장치(130)는 근사적 메모리 장치로서 동작하지 않을 수 있다.For example, if the BER requested by a user, processor, or application program is 10 -6 , the refresh time of the error zone may be 2 3 times the refresh time of the error-free zone. The memory controller 110 may check the refresh time according to the BER specified in the lookup table LUT and adjust the refresh rate of the error region. All values of refresh times specified in the lookup table (LUT) are merely exemplary. As the requested BER increases, the refresh time of the error zone may also increase. For another example, if the BER requested by the user, processor, or application program is default, the refresh time of the error zone and the refresh time of the error-free zone may be the same. In this case, the memory device 130 may not operate as an approximate memory device.

도 8을 참조하면, 룩업 테이블(LUT)은 일반 온도 범위에서 BER들에 따른 리프레쉬 시간들의 정보를 포함할 수 있다. 룩업 테이블(LUT)은 일반 온도 범위와 다르거나 높은 확장 온도 범위에서 BER들에 따른 리프레쉬 시간들의 정보를 포함할 수 있다. 예를 들어, 확장 온도 범위에서 메모리 셀이 데이터를 보유할 수 있는 시간은 일반 온도 범위에서 메모리 셀이 데이터를 보유할 수 있는 시간보다 짧을 수 있다. 따라서, 확장 온도 범위에서의 리프레쉬 시간들은 일반 온도 범위에서의 리프레쉬 시간들보다 짧을 수 있다.Referring to FIG. 8 , the lookup table LUT may include information on refresh times according to BERs in a normal temperature range. The lookup table LUT may include information on refresh times according to BERs in an extended temperature range different from or higher than a normal temperature range. For example, the time the memory cell can hold data in the extended temperature range may be shorter than the time the memory cell can hold data in the normal temperature range. Accordingly, the refresh times in the extended temperature range may be shorter than the refresh times in the normal temperature range.

도 9는 도 3의 메모리 장치가 리프레쉬 명령을 수행하기 위한 예시적인 순서도를 도시한다.FIG. 9 is an exemplary flowchart for the memory device of FIG. 3 to perform a refresh command.

S410 단계에서, 메모리 장치(130)의 명령 디코더(131)는 메모리 컨트롤러(110)로부터 전송된 리프레쉬 명령을 디코딩할 수 있다. 메모리 컨트롤러(110)는 반복적으로 리프레쉬 명령을 생성할 수 있다. 메모리 장치(130)의 명령 디코더(131)는 반복적으로 전송되는 리프레쉬 명령을 디코딩할 수 있다. 명령 디코더(131)는 리프레쉬 컨트롤러(132) 및 로우 디코더(135)를 제어할 수 있다. In operation S410 , the command decoder 131 of the memory device 130 may decode the refresh command transmitted from the memory controller 110 . The memory controller 110 may repeatedly generate a refresh command. The command decoder 131 of the memory device 130 may decode the repeatedly transmitted refresh command. The command decoder 131 may control the refresh controller 132 and the row decoder 135 .

S420 단계에서, 리프레쉬 컨트롤러(132)는 명령 디코더(131)의 제어에 기초하여 제 1 카운터(132_1)를 동작시킬 수 있다. 제 1 카운터(132_1)는 에러-프리 구역에 해당하는 로우 어드레스를 생성 및 업데이트할 수 있다. 이전 S420 단계에서 제 1 카운터(132_1)에 의해 생성된 로우 어드레스와 현재 S420 단계에서 제 1 카운터(132_1)에 의해 생성된 로우 어드레스는 다를 수 있다.In operation S420 , the refresh controller 132 may operate the first counter 132_1 based on the control of the command decoder 131 . The first counter 132_1 may generate and update a row address corresponding to the error-free region. The row address generated by the first counter 132_1 in the previous step S420 may be different from the row address generated by the first counter 132_1 in the current step S420.

S430 단계에서, 로우 디코더(135)는 제 1 카운터(132_1)에 의해 생성된 로우 어드레스를 수신할 수 있다. 로우 디코더(135)는 로우 어드레스에 대응하는 적어도 하나의 워드 라인을 활성화하고 그 다음 비활성화할 수 있다. 로우 디코더(135)에 의해 워드 라인이 활성화되고 비활성화되면, 워드 라인에 연결된 메모리 셀들이 리프레쉬될 수 있다. S430 단계에서 리프레쉬되는 메모리 셀들은 에러-프리 구역에 배치된 메모리 셀들이다. S410, S420, 및 S430 단계들은 에러-프리 구역에 배치된 메모리 셀들을 리프레쉬하기 위한 단계들이다.In operation S430 , the row decoder 135 may receive the row address generated by the first counter 132_1 . The row decoder 135 may activate at least one word line corresponding to the row address and then deactivate it. When the word line is activated and deactivated by the row decoder 135 , memory cells connected to the word line may be refreshed. The memory cells refreshed in step S430 are memory cells arranged in an error-free region. Steps S410, S420, and S430 are steps for refreshing the memory cells disposed in the error-free region.

S440 단계에서, 리프레쉬 컨트롤러(132)는 리프레쉬 명령을 건너뛸지 여부를 결정할 수 있다. S440 단계에서 리프레쉬 명령을 건너뛰지 않으면(N), S450 단계에서 리프레쉬 컨트롤러(132)는 제 2 카운터(132_2)를 동작시킬 수 있다. 제 2 카운터(132_2)는 에러 구역에 해당하는 로우 어드레스를 생성 및 업데이트할 수 있다. 이전 S450 단계에서 제 2 카운터(132_2)에 의해 생성된 로우 어드레스와 현재 S450 단계에서 제 2 카운터(132_2)에 의해 생성된 로우 어드레스는 다를 수 있다. S460 단계에서, 로우 디코더(135)는 제 2 카운터(132_2)에 의해 생성된 로우 어드레스를 수신할 수 있다. 로우 디코더(135)는 로우 어드레스에 대응하는 적어도 하나의 워드 라인을 활성화하고 그 다음 비활성화할 수 있다. 로우 디코더(135)에 의해 워드 라인이 활성화되고 비활성화되면, 워드 라인에 연결된 메모리 셀들이 리프레쉬될 수 있다. S460 단계에서 리프레쉬되는 메모리 셀들은 에러 구역에 배치된 메모리 셀들이다.In operation S440 , the refresh controller 132 may determine whether to skip the refresh command. If the refresh command is not skipped (N) in step S440 , the refresh controller 132 may operate the second counter 132_2 in step S450 . The second counter 132_2 may generate and update a row address corresponding to the error zone. The row address generated by the second counter 132_2 in the previous step S450 may be different from the row address generated by the second counter 132_2 in the current step S450. In operation S460 , the row decoder 135 may receive the row address generated by the second counter 132_2 . The row decoder 135 may activate at least one word line corresponding to the row address and then deactivate it. When the word line is activated and deactivated by the row decoder 135 , memory cells connected to the word line may be refreshed. The memory cells refreshed in step S460 are memory cells arranged in the error region.

S440 단계에서 리프레쉬 명령을 건너뛰면(Y), S470 단계에서 리프레쉬 컨트롤러(132)는 건너뛴 리프레쉬 명령의 개수를 셀 수 있다. 건너뛴 리프레쉬 명령의 개수가 증가할수록, 에러 구역의 리프레쉬 속도는 느려지고 에러 구역의 리프레쉬 시간은 증가할 수 있다. 도 3에서 도시되진 않았으나, 리프레쉬 컨트롤러(132)는 건너뛴 리프레쉬 명령의 개수를 세는 카운터를 더 포함할 수 있다. 리프레쉬 컨트롤러(132)는 건너뛴 리프레쉬 명령의 개수와 기준 값을 비교하는 비교기를 더 포함할 수 있다. 예를 들어, 기준 값은 레지스터들(140)에 저장될 수 있고 전술한 도 7의 S330 단계에서 메모리 컨트롤러(110)에 의해 가변될 수 있다. 기준 값은 메모리 컨트롤러(110)로부터 전송된 리프레쉬 비율에 관한 정보에 의해 결정되거나 정보에 포함될 수 있다. 예를 들어, S440 단계에서, 리프레쉬 컨트롤러(132)는 건너뛴 리프레쉬 명령의 개수가 기준 값에 도달하면, 리프레쉬 명령을 건너뛰지 않는 것으로 결정할 수 있다. S410, S440, S450, S460, 및 S470 단계들은 에러 구역에 배치된 메모리 셀들을 리프레쉬하기 위한 단계들이다.If the refresh command is skipped in step S440 (Y), the refresh controller 132 may count the number of skipped refresh commands in step S470. As the number of skipped refresh instructions increases, the refresh rate of the error region may be slowed and the refresh time of the error region may increase. Although not shown in FIG. 3 , the refresh controller 132 may further include a counter for counting the number of skipped refresh commands. The refresh controller 132 may further include a comparator for comparing the number of skipped refresh commands with a reference value. For example, the reference value may be stored in the registers 140 and may be changed by the memory controller 110 in step S330 of FIG. 7 . The reference value may be determined by or included in information about the refresh rate transmitted from the memory controller 110 . For example, in operation S440 , when the number of skipped refresh commands reaches a reference value, the refresh controller 132 may determine not to skip the refresh commands. Steps S410, S440, S450, S460, and S470 are steps for refreshing the memory cells disposed in the error region.

도 10은 본 발명의 다른 실시 예에 따른 도 1의 전자 장치의 예시적인 블록도를 좀 더 구체적으로 도시한다. 도 11은 도 10의 제 2 데이터가 메모리 장치의 뱅크에 저장되는 예시를 도시한다. 도 10과 도 11은 함께 설명될 것이다. 도 10의 전자 장치(100)와 도 3의 전자 장치(100) 간의 차이점이 주로 설명될 것이다.10 is a more detailed exemplary block diagram of the electronic device of FIG. 1 according to another embodiment of the present invention. 11 illustrates an example in which the second data of FIG. 10 is stored in a bank of a memory device. 10 and 11 will be described together. Differences between the electronic device 100 of FIG. 10 and the electronic device 100 of FIG. 3 will be mainly described.

메모리 컨트롤러(110)는 도 3의 메모리 컨트롤러(110)에 비해 전치 회로(120)를 더 포함할 수 있다. 전치 회로(120)는 에러 정정 회로(111)에 의해 인코딩된 제 2 데이터(Data 2)를 수신하고 제 2 데이터를 제 2 전치 데이터(

Figure 112019042312714-pat00001
)로 변환할 수 있다. PHY(112)는 제 2 데이터 대신에 제 2 전치 데이터를 메모리 장치(130)로 전송할 수 있다.The memory controller 110 may further include a pre-circuit 120 compared to the memory controller 110 of FIG. 3 . The pre-circuit 120 receives the second data Data 2 encoded by the error correction circuit 111 and converts the second data to the second pre-data (
Figure 112019042312714-pat00001
) can be converted to The PHY 112 may transmit the second prefix data to the memory device 130 instead of the second data.

전치 회로(120)에 의해 변환된 제 2 전치 데이터는 뱅크(134)의 하나 이상의 페이지들에 저장될 수 있다. 전술한 도 4를 참조하면, 제 2 데이터(예를 들어, Data 2 [0])는 하나의 페이지에 저장될 수 있다. 반면에, 도 11을 참조하면, 제 2 전치 데이터(예를 들어,

Figure 112019042312714-pat00002
)는 하나 이상의 페이지들에 저장될 수 있다. 전치 회로(120)는 제 2 데이터가 뱅크(134)의 하나 이상의 페이지들에 저장되도록 제 2 데이터의 행과 열을 변경함으로써 제 2 전치 데이터를 생성할 수 있다.The second transposed data converted by the transpose circuit 120 may be stored in one or more pages of the bank 134 . Referring to FIG. 4 described above, second data (eg, Data 2 [0]) may be stored in one page. On the other hand, referring to FIG. 11 , the second transposed data (eg,
Figure 112019042312714-pat00002
) may be stored in one or more pages. The transpose circuit 120 may generate the second transposed data by changing rows and columns of the second data so that the second data is stored in one or more pages of the bank 134 .

전술한 도 3을 참조하면, 뱅크(134)는 에러-프리 구역과 에러 구역으로 단지 2개의 구역들로 나뉘었다. 도 10 및 도 11을 참조하면, 뱅크(134)는 제 1 내지 제 3 구역들(Zone 1 ~ Zone 3)로 나뉠 수 있다. 예를 들어, 뱅크(134)는 다수의 구역들로 나뉠 수 있고 다수의 구역들의 tREF들은 서로 다를 수 있다. 도 11을 참조하면, 제 1 구역의 tREF보다 제 2 구역의 tREF가 더 길 수 있다. 제 2 구역의 tREF보다 제 3 구역의 tREF가 더 길 수 있다. 전술한대로, tREF는 해당 구역의 모든 메모리 셀들이 리프레쉬되는데 걸리는 시간을 의미한다. 예를 들어, 제 1 구역은 전술한 에러-프리 구역에 해당할 수 있고 제 2 및 제 3 구역들은 전술한 에러 구역이 나뉜 구역들에 해당할 수 있다. 다른 예를 들어, 제 1 내지 제 3 구역들은 모두 전술한 에러 구역이 나뉜 구역들에 해당할 수 있다.Referring to FIG. 3 described above, the bank 134 is divided into only two zones, an error-free zone and an error zone. 10 and 11 , the bank 134 may be divided into first to third zones (Zone 1 to Zone 3). For example, bank 134 may be divided into multiple regions and the tREFs of the multiple regions may be different. Referring to FIG. 11 , tREF of the second region may be longer than tREF of the first region. The tREF of the third region may be longer than the tREF of the second region. As described above, tREF refers to the time it takes for all memory cells in the corresponding region to be refreshed. For example, the first zone may correspond to the aforementioned error-free zone, and the second and third zones may correspond to zones into which the aforementioned error zone is divided. As another example, all of the first to third regions may correspond to regions in which the aforementioned error region is divided.

도 11을 참조하면, 제 2 전치 데이터의 부호 비트는 제 1 구역에 저장될 수 있다. 제 2 전치 데이터의 지수 비트들은 제 2 구역에 저장될 수 있다. 제 2 전치 데이터의 가수 비트들은 제 3 구역에 저장될 수 있다. 예를 들어, 제 2 전치 데이터의 MSB는 제 1 구역의 워드 라인에 연결된 메모리 셀들 중 하나에 저장될 수 있고 그리고 제 2 전치 데이터의 LSB는 제 3 구역의 워드 라인에 연결된 메모리 셀들 중 하나에 저장될 수 있다. 만약, 뱅크(134)가 3개 이상의 구역들로 나뉘면, 제 2 전치 데이터의 비트들도 3개 이상의 구역들에 분산되어 저장될 수 있다. 메모리 컨트롤러(110)는 전치 회로(120)를 이용하여 제 2 데이터의 비트들의 위치들을 변경할 수 있고, 중요한 비트가 tREF가 상대적으로 짧은 구역에 저장되고 중요하지 않은 비트가 tREF가 상대적으로 긴 구역에 저장될 수 있다.Referring to FIG. 11 , the sign bit of the second transposed data may be stored in the first region. Exponential bits of the second transposed data may be stored in the second region. Mantissa bits of the second transposed data may be stored in the third region. For example, the MSB of the second transposed data may be stored in one of the memory cells coupled to the word line of the first region and the LSB of the second transposed data stored in one of the memory cells coupled to the word line of the third region can be If the bank 134 is divided into three or more regions, bits of the second transposed data may also be distributed and stored in three or more regions. The memory controller 110 may change the positions of the bits of the second data by using the preposition circuit 120 , and important bits are stored in a region where tREF is relatively short, and insignificant bits are stored in a region where tREF is relatively long. can be saved.

실시 예에 있어서, 전치 회로(120)는 제 2 데이터의 비트들의 논리 값들을 변경할 수 있다. 제 1 논리 값이 메모리 셀에서 유지되는 시간은 제 2 논리 값이 메모리 셀에서 유지되는 시간보다 길 수 있다. 따라서, 전치 회로(120)는 제 2 데이터의 비트들의 제 1 논리 값들의 개수와 제 2 데이터의 비트들의 제 2 논리 값들의 개수를 비교할 수 있다. 전치 회로(120)는 제 2 논리 값들보다 더 많은 제 1 논리 값들이 메모리 셀들에 저장되도록, 비교 결과에 기초하여 제 2 데이터의 비트들의 논리 값들을 컬럼 단위로 반전할 수 있다. 전치 회로(120)는 메모리 장치(130)로부터 전송되는 읽기 데이터의 비트들을 다시 반전할 수 있다.In an embodiment, the pre-circuit 120 may change logical values of bits of the second data. The time the first logic value is maintained in the memory cell may be longer than the time the second logic value is held in the memory cell. Accordingly, the pre-circuit 120 may compare the number of first logical values of the bits of the second data with the number of second logical values of the bits of the second data. The pre-circuit 120 may invert the logical values of the bits of the second data in units of columns based on the comparison result so that more first logical values than the second logical values are stored in the memory cells. The pre-circuit 120 may invert the bits of the read data transmitted from the memory device 130 again.

메모리 장치(130)의 리프레쉬 컨트롤러(132)는 제 3 카운터(132_3)를 더 포함할 수 있다. 도 10의 제 1 및 제 2 카운터들(132_1, 132_2)은 도 3의 제 1 및 제 2 카운터들(132_1, 132_2)과 실질적으로 동일하게 동작할 수 있다. 제 3 카운터(132_3)는 제 2 카운터(132_2)와 실질적으로 동일하게 동작할 수 있다. 제 1 카운터(132_1)는 제 1 구역에 배치된 메모리 셀들을 리프레쉬하기 위한 로우 어드레스를 생성할 수 있다. 제 2 카운터(132_2)는 제 2 구역에 배치된 메모리 셀들을 리프레쉬하기 위한 로우 어드레스를 생성할 수 있다. 제 3 카운터(132_3)는 제 3 구역에 배치된 메모리 셀들을 리프레쉬하기 위한 로우 어드레스를 생성할 수 있다. 멀티플렉서(132_4)는 제 3 카운터(132_3)에 의해 생성된 로우 어드레스도 로우 디코더(135)로 제공할 수 있다. 제 1 내지 제 3 카운터들(132_1~132_3)이 로우 어드레스들을 생성하는 주기들 또는 시점들은 서로 상이할 수 있다. 즉, 리프레쉬 컨트롤러(132)는 제 1 내지 제 3 구역들의 tREF들이 서로 다르도록, 제 1 내지 제 3 카운터들(132_1~132_3)을 제어할 수 있다. 리프레쉬 컨트롤러(132)는 뱅크(134)가 나뉘는 구역들의 개수만큼의 카운터들을 포함할 수 있다.The refresh controller 132 of the memory device 130 may further include a third counter 132_3 . The first and second counters 132_1 and 132_2 of FIG. 10 may operate substantially the same as the first and second counters 132_1 and 132_2 of FIG. 3 . The third counter 132_3 may operate substantially the same as the second counter 132_2 . The first counter 132_1 may generate a row address for refreshing memory cells disposed in the first region. The second counter 132_2 may generate a row address for refreshing memory cells disposed in the second region. The third counter 132_3 may generate a row address for refreshing memory cells disposed in the third region. The multiplexer 132_4 may also provide the row address generated by the third counter 132_3 to the row decoder 135 . Periods or times at which the first to third counters 132_1 to 132_3 generate row addresses may be different from each other. That is, the refresh controller 132 may control the first to third counters 132_1 to 132_3 so that tREFs of the first to third regions are different from each other. The refresh controller 132 may include as many counters as the number of regions into which the bank 134 is divided.

도 12는 본 발명의 실시 예에 따른 도 1의 메모리 장치를 도시한다. 메모리 장치(1300)는 메모리 모듈일 수 있다. 메모리 모듈은 JEDEC(Joint electron device engineering council) 표준을 따르는 DIMM(Dual in-line memory module), RDIMM(Registered DIMM), LRDIMM(Load reduced DIMM), UDIMM(Unbuffered DIMM), FB-DIMM(Fully buffered DIMM), SO-DIMM(Small outline DIMM), 또는 다른 메모리 모듈(예를 들면, SIMM(Single in-line memory module)일 수 있다. 메모리 장치(1300)는 제 1 내지 제 8 메모리 칩들(1310~1380)을 포함할 수 있다.12 illustrates the memory device of FIG. 1 according to an embodiment of the present invention. The memory device 1300 may be a memory module. Memory modules conform to JEDEC (Joint electron device engineering council) standards: Dual in-line memory module (DIMM), Registered DIMM (RDIMM), Load reduced DIMM (LRDIMM), Unbuffered DIMM (UDIMM), Fully buffered DIMM (FB-DIMM) ), a small outline DIMM (SO-DIMM), or another memory module (eg, a single in-line memory module (SIMM). The memory device 1300 includes first to eighth memory chips 1310 to 1380 . ) may be included.

제 1 내지 제 8 메모리 칩들(1310~1380) 각각은 DDR SDRAM(Double data rate synchronous dynamic random access memory), DDR2 SDRAM, DDR3 SDRAM, DDR4 SDRAM, DDR5 SDRAM, LPDDR(low power double data rate) SDRAM, LPDDR2 SDRAM, LPDDR3 SDRAM, LPDDR4 SDRAM, LPDDR4X SDRAM, LPDDR5 SDRAM, GDDR SGRAM(Graphics double data rate synchronous graphics random access memory), GDDR2 SGRAM, GDDR3 SGRAM, GDDR4 SGRAM, GDDR5 SGRAM, GDDR6 SGRAM 등과 같은 다양한 DRAM 장치들일 수 있다.Each of the first to eighth memory chips 1310 to 1380 is DDR SDRAM (double data rate synchronous dynamic random access memory), DDR2 SDRAM, DDR3 SDRAM, DDR4 SDRAM, DDR5 SDRAM, LPDDR (low power double data rate) SDRAM, LPDDR2 Various DRAM devices such as SDRAM, LPDDR3 SDRAM, LPDDR4 SDRAM, LPDDR4X SDRAM, LPDDR5 SDRAM, GDDR SGRAM (Graphics double data rate synchronous graphics random access memory), GDDR2 SGRAM, GDDR3 SGRAM, GDDR4 SGRAM, GDDR5 SGRAM, GDDR6 SGRAM, etc. .

제 1 내지 제 8 메모리 칩들(1310~1380) 각각은 도 3 또는 도 10의 메모리 장치(130)일 수 있고 메모리 장치(130)의 구성 요소들을 포함할 수 있다. 제 1 내지 제 8 메모리 칩들(1310~1380) 각각은 에러-프리 구역에 해당하는 메모리 셀들과 에러 구역에 해당하는 메모리 셀들을 포함할 수 있다. 제 1 내지 제 8 메모리 칩들(1310~1380)은 메모리 컨트롤러(도 3 및 도 10의 110 참조)로부터 전송되는 명령과 어드레스(CMD/ADD)를 공통으로 수신할 수 있다.Each of the first to eighth memory chips 1310 to 1380 may be the memory device 130 of FIG. 3 or 10 and may include components of the memory device 130 . Each of the first to eighth memory chips 1310 to 1380 may include memory cells corresponding to an error-free region and memory cells corresponding to an error region. The first to eighth memory chips 1310 to 1380 may receive commands and addresses (CMD/ADD) transmitted from the memory controller (refer to 110 of FIGS. 3 and 10 ) in common.

제 1 내지 제 8 메모리 칩들(1310~1380) 각각은 8개의 DQ 신호들을 메모리 컨트롤러로 전송하거나 메모리 컨트롤러로부터 수신할 수 있다. 메모리 장치(1300)는 총 64개의 DQ 신호들(DQ[63:0])을 메모리 컨트롤러로 전송하거나 메모리 컨트롤러로부터 수신할 수 있다. 예를 들어, 제 2 데이터의 비트 수가 32인 경우, 제 1 워드에 해당하는 제 2 데이터는 제 1 내지 제 4 메모리 칩들(1310~1340)에 저장될 수 있다. 제 2 워드에 해당하는 제 2 데이터는 제 5 내지 제 8 메모리 칩들(1350~1380)에 저장될 수 있다. 다른 메모리 칩들(1320~1340, 1360~1380)에 비해 제 1 및 제 5 메모리 칩들(1310, 1350)은 상대적으로 중요한 비트들, 즉 부호 비트 및 지수 비트들을 저장할 수 있다. 전술한대로, 제 2 데이터는 제 1 내지 제 8 메모리 칩들(1310~1380)의 에러-프리 구역에 해당하는 메모리 셀들에 저장될 수 있다.Each of the first to eighth memory chips 1310 to 1380 may transmit eight DQ signals to or receive from the memory controller. The memory device 1300 may transmit a total of 64 DQ signals DQ[63:0] to or receive from the memory controller. For example, when the number of bits of the second data is 32, the second data corresponding to the first word may be stored in the first to fourth memory chips 1310 to 1340 . The second data corresponding to the second word may be stored in the fifth to eighth memory chips 1350 to 1380 . Compared to other memory chips 1320 to 1340 and 1360 to 1380 , the first and fifth memory chips 1310 and 1350 may store relatively important bits, that is, a sign bit and an exponent bit. As described above, the second data may be stored in memory cells corresponding to the error-free regions of the first to eighth memory chips 1310 to 1380 .

도 13은 본 발명의 다른 실시 예에 따른 도 1의 메모리 장치를 도시한다. 메모리 장치(2300)는 도 12의 메모리 장치(1300)와 유사한 메모리 모듈일 수 있다. 메모리 장치(2300)와 메모리 장치(1300) 간의 차이점이 주로 설명될 것이다.13 illustrates the memory device of FIG. 1 according to another embodiment of the present invention. The memory device 2300 may be a memory module similar to the memory device 1300 of FIG. 12 . Differences between the memory device 2300 and the memory device 1300 will be mainly described.

제 2 내지 제 4 메모리 칩들(2320~2340)과 제 6 내지 제 8 메모리 칩들(2360~2380) 각각은 도 3 또는 도 10의 메모리 장치(130)일 수 있고 메모리 장치(130)의 구성 요소들을 포함할 수 있다. 제 2 내지 제 4 메모리 칩들(2320~2340)과 제 6 내지 제 8 메모리 칩들(2360~2380)의 메모리 셀들은 에러-프리 구역과 에러 구역으로 구별될 수 있다.Each of the second to fourth memory chips 2320 to 2340 and the sixth to eighth memory chips 2360 to 2380 may be the memory device 130 of FIG. 3 or 10 , and may include components of the memory device 130 . may include Memory cells of the second to fourth memory chips 2320 to 2340 and the sixth to eighth memory chips 2360 to 2380 may be divided into an error-free region and an error region.

제 1 및 제 5 메모리 칩들(2310, 2350)의 메모리 셀들은 제 2 내지 제 4 메모리 칩들(2320~2340)과 제 6 내지 제 8 메모리 칩들(2360~2380)과 달리 에러-프리 구역과 에러 구역으로 구별되지 않을 수 있다. 제 1 및 제 5 메모리 칩들(2310, 2350)의 메모리 셀들은 모두 에러-프리 구역에 해당할 수 있다. 예를 들어, 제 1 및 제 5 메모리 칩들(2310, 2350)은 제 2 및 제 3 카운터들(132_2, 132_3)과 멀티플렉서(132_4)를 제외한 메모리 장치(130)의 구성 요소들을 포함할 수 있다. 다른 예를 들어, 제 1 및 제 5 메모리 칩들(2310, 2350)은 메모리 장치(130)의 모든 구성 요소들을 포함할 수 있다. 메모리 컨트롤러(110)는 제 1 및 제 5 메모리 칩들(2310, 2350)의 뱅크(134)의 메모리 셀들이 모두 동일한 속도로 리프레쉬되도록 제 1 및 제 5 메모리 칩들(2310, 2350)을 설정할 수 있다.The memory cells of the first and fifth memory chips 2310 and 2350 have an error-free region and an error region, unlike the second to fourth memory chips 2320 to 2340 and the sixth to eighth memory chips 2360 to 2380 . may not be distinguished from All memory cells of the first and fifth memory chips 2310 and 2350 may correspond to an error-free region. For example, the first and fifth memory chips 2310 and 2350 may include components of the memory device 130 except for the second and third counters 132_2 and 132_3 and the multiplexer 132_4 . As another example, the first and fifth memory chips 2310 and 2350 may include all components of the memory device 130 . The memory controller 110 may set the first and fifth memory chips 2310 and 2350 so that the memory cells of the bank 134 of the first and fifth memory chips 2310 and 2350 are all refreshed at the same rate.

도 12의 경우와 유사하게, 제 1 내지 제 8 메모리 칩들(2310~2380) 각각은 8개의 DQ 신호들을 메모리 컨트롤러로 전송하거나 메모리 컨트롤러로부터 수신할 수 있다. 메모리 장치(2300)는 총 64개의 DQ 신호들(DQ[63:0])을 메모리 컨트롤러로 전송하거나 메모리 컨트롤러로부터 수신할 수 있다. 예를 들어, 제 2 데이터의 비트 수가 32인 경우, 제 1 워드에 해당하는 제 2 데이터는 제 1 내지 제 4 메모리 칩들(2310~2340)에 저장될 수 있다. 제 2 워드에 해당하는 제 2 데이터는 제 5 내지 제 8 메모리 칩들(2350~2380)에 저장될 수 있다. 다른 메모리 칩들(2320~2340, 2360~2380)에 비해 제 1 및 제 5 메모리 칩들(2310, 2350)은 상대적으로 중요한 비트들, 즉 부호 비트 및 지수 비트들을 저장할 수 있다. 제 1 및 제 5 메모리 칩들(2310, 2350)에 저장된 비트들이 리프레쉬되는 속도는 제 2 내지 제 4 메모리 칩들(2320~2340) 및 제 6 내지 제 8 메모리 칩들(2360~2380)에 저장된 비트들이 리프레쉬되는 속도보다 빠를 수 있다.Similar to the case of FIG. 12 , each of the first to eighth memory chips 2310 to 2380 may transmit eight DQ signals to or receive from the memory controller. The memory device 2300 may transmit a total of 64 DQ signals DQ[63:0] to or receive from the memory controller. For example, when the number of bits of the second data is 32, the second data corresponding to the first word may be stored in the first to fourth memory chips 2310 to 2340 . The second data corresponding to the second word may be stored in the fifth to eighth memory chips 2350 to 2380 . Compared to other memory chips 2320 to 2340 and 2360 to 2380, the first and fifth memory chips 2310 and 2350 may store relatively significant bits, that is, a sign bit and an exponent bit. Bits stored in the first and fifth memory chips 2310 and 2350 are refreshed at a rate at which bits stored in the second to fourth memory chips 2320 to 2340 and sixth to eighth memory chips 2360 to 2380 are refreshed. may be faster than the

도 14는 본 발명의 다른 실시 예에 따른 전자 장치의 예시적인 블록도를 도시한다. 전자 장치(3000)는 SoC(System-on-Chip; 3100) 및 메모리 장치(3300)를 포함할 수 있다. SoC(3100)는 PHY(3112)를 포함하는 메모리 컨트롤러(3111), 프로세서(3120), 및 메모리(3130)를 포함할 수 있다. 메모리 컨트롤러(3111)는 도 1 내지 도 11을 참조하여 전술한 메모리 컨트롤러(110)일 수 있다. PHY(3112)는 도 1 내지 도 11을 참조하여 전술한 PHY(112)일 수 있다. 메모리 장치(3300)는 에러-프리 구역과 에러 구역으로 구분되는 메모리 셀들을 포함하는 메모리 장치(130)일 수 있다.14 is an exemplary block diagram of an electronic device according to another embodiment of the present invention. The electronic device 3000 may include a system-on-chip (SoC) 3100 and a memory device 3300 . The SoC 3100 may include a memory controller 3111 including a PHY 3112 , a processor 3120 , and a memory 3130 . The memory controller 3111 may be the memory controller 110 described above with reference to FIGS. 1 to 11 . The PHY 3112 may be the PHY 112 described above with reference to FIGS. 1 to 11 . The memory device 3300 may be the memory device 130 including memory cells divided into an error-free region and an error region.

프로세서(3120)는 메모리(3130)에 로드된 다양한 소프트웨어(응용 프로그램, 운영 체제, 파일 시스템, 장치 드라이버 등)을 실행할 수 있다. 프로세서(3120)는 동종 멀티-코어 프로세서(homogeneous multi-core processor)들 또는 이종 멀티-코어 프로세서(heterogeneous multi-core processor)들을 포함할 수 있다. 예를 들어, 프로세서(3120)는 CPU(central processing unit), ISP(image signal processing unit), DSP(digital signal processing unit), GPU(graphics processing unit), VPU(vision processing unit), 및 NPU(neural processing unit) 중 적어도 하나를 포함할 수 있다.The processor 3120 may execute various software (application programs, operating systems, file systems, device drivers, etc.) loaded into the memory 3130 . The processor 3120 may include homogeneous multi-core processors or heterogeneous multi-core processors. For example, the processor 3120 may include a central processing unit (CPU), an image signal processing unit (ISP), a digital signal processing unit (DSP), a graphics processing unit (GPU), a vision processing unit (VPU), and a neural network (NPU). processing unit).

메모리(3130)에는 전자 장치(3000)를 구동하기 위한 응용 프로그램, 운영 체제, 파일 시스템, 장치 드라이버 등이 로드될 수 있다. 예를 들어, 메모리(3130)는 SoC(3100)의 내부에서 구현되고 메모리 장치(3300)보다 빠른 데이터 입출력 속도를 갖는 SRAM 장치일 수 있고 레지스터들, 래치들, 또는 플립-플롭들 등을 이용하여 구현될 수 있다. 메모리(3130)는 온-칩 메모리 또는 버퍼 메모리로도 지칭될 수 있다.An application program for driving the electronic device 3000 , an operating system, a file system, a device driver, and the like may be loaded into the memory 3130 . For example, the memory 3130 may be an SRAM device implemented inside the SoC 3100 and having a data input/output speed faster than that of the memory device 3300 , using registers, latches, flip-flops, or the like. can be implemented. Memory 3130 may also be referred to as on-chip memory or buffer memory.

메모리(3130)는 프로그램 코드를 저장하는 비일시적 컴퓨터 판독 가능한 매체일 수 있다. 메모리(3130)는 RAM(Random Access Memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터, 하드 디스크, 착탈식 디스크, CD-ROM, 또는 임의의 형태의 저장 매체일 수 있다. 도 14의 도시대로, 메모리(3130)는 SoC(3100) 내에서 구현될 수도 있거나, 또는 도 14의 도시와 달리 메모리(3130)는 전자 장치(3000) 내에서 SoC(3100)와 독립적으로 구현되거나 또는 전자 장치(3000)의 외부에 위치하는 저장 매체일 수도 있다.The memory 3130 may be a non-transitory computer-readable medium storing program code. The memory 3130 may include random access memory (RAM), flash memory, read only memory (ROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), registers, hard disk, a removable disk, a CD-ROM, or It may be any form of storage medium. As illustrated in FIG. 14 , the memory 3130 may be implemented in the SoC 3100 , or, unlike the illustration in FIG. 14 , the memory 3130 is implemented in the electronic device 3000 independently of the SoC 3100 , or Alternatively, it may be a storage medium located outside the electronic device 3000 .

실시 예에 있어서, 메모리(3130)에 저장되거나 로드된 프로그램 코드는 프로세서(3120)에 의해 실행될 수 있다. 프로그램 코드를 실행하는 프로세서(3120)의 제어에 기초하여, 메모리 컨트롤러(3111)는 도 5 내지 도 7의 순서도들의 단계들(S110~S130, S210~S220, S310~S330)을 수행할 수 있다.In an embodiment, the program code stored or loaded in the memory 3130 may be executed by the processor 3120 . Based on the control of the processor 3120 executing the program code, the memory controller 3111 may perform steps S110 to S130, S210 to S220, and S310 to S330 of the flowcharts of FIGS. 5 to 7 .

실시 예에 있어서, 메모리(3130)에 저장된 프로그램 코드는 프로세서(3120)와 구별된 메모리 컨트롤러(3111) 내부의 다른 프로세서(미도시) 에 의해 실행될 수 있다. 메모리 컨트롤러(3111) 내부의 프로세서는 프로그램 코드를 실행하고 도 5 내지 도 7의 순서도들의 단계들(S110~S130, S210~S220, S310~S330)을 수행할 수 있다.In an embodiment, the program code stored in the memory 3130 may be executed by another processor (not shown) inside the memory controller 3111 that is distinct from the processor 3120 . The processor in the memory controller 3111 may execute a program code and perform steps S110 to S130, S210 to S220, and S310 to S330 of the flowcharts of FIGS. 5 to 7 .

실시 예에 있어서, SoC(3000)의 메모리 컨트롤러(3111), 프로세서(3120), 및 메모리(3130)는 버스를 통해 서로 연결될 수 있다. 버스는 AMBA(Advanced Microcontroller Bus Architecture) 표준 버스 규격 타입일 수 있다. AMBA의 버스 타입으로는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface)가 있을 수 있다.In an embodiment, the memory controller 3111 , the processor 3120 , and the memory 3130 of the SoC 3000 may be connected to each other through a bus. The bus may be of an Advanced Microcontroller Bus Architecture (AMBA) standard bus specification type. A bus type of AMBA may include an Advanced High-Performance Bus (AHB), an Advanced Peripheral Bus (APB), and an Advanced eXtensible Interface (AXI).

도 15는 도 14의 메모리 컨트롤러의 동작 방법을 나타내는 예시적인 순서도를 도시한다.15 is an exemplary flowchart illustrating an operation method of the memory controller of FIG. 14 .

S1100 단계에서, 메모리 컨트롤러(3111)는 프로세서(3120)의 요청을 수신할 수 있다. 프로세서(3120)는 DNN, CNN, RNN, SNN 등과 같은 신경망, 응용 프로그램을 실행할 수 있다. 프로세서(3120)는 데이터에 관한 요청을 메모리 컨트롤러(3111)에 제공할 수 있다. 프로세서(3120)는 데이터를 메모리 컨트롤러(3111)로 제공할 수 있다.In step S1100 , the memory controller 3111 may receive a request from the processor 3120 . The processor 3120 may execute a neural network, such as a DNN, CNN, RNN, or SNN, and an application program. The processor 3120 may provide a request for data to the memory controller 3111 . The processor 3120 may provide data to the memory controller 3111 .

S1200 단계에서, 메모리 컨트롤러(3111)는 프로세서(3120)로부터 제공된 논리 어드레스를 메모리 장치(3300)의 물리 어드레스(예를 들어, 뱅크 어드레스, 로우 어드레스, 컬럼 어드레스)로 변환할 수 있다. 메모리 컨트롤러(3111)는 요청의 논리 어드레스가 변환된 물리 어드레스가 에러 구역에 대응하는지를 확인할 수 있다. In operation S1200 , the memory controller 3111 may convert the logical address provided from the processor 3120 into a physical address (eg, a bank address, a row address, and a column address) of the memory device 3300 . The memory controller 3111 may check whether the physical address converted from the logical address of the request corresponds to the error zone.

S1300 단계에서, 메모리 컨트롤러(3111)는 S1100 단계의 요청에 따른 데이터가 메모리(3130)에 캐시(저장)되어 있는지를 확인할 수 있다. S1300 단계의 메모리(3130)는 SoC(3000) 내부의 캐시 메모리, 버퍼 메모리, 또는 온-칩 메모리일 수 있다. S1100 단계의 요청에 따른 데이터가 메모리(3130)에 캐시되어 있으면(히트, Y), S1700 단계가 진행될 수 있다. S1100 단계의 요청에 따른 데이터가 메모리(3130)에 캐시되어 있지 않으면(미스, N), S1400 단계가 진행될 수 있다.In step S1300 , the memory controller 3111 may check whether data according to the request of step S1100 is cached (stored) in the memory 3130 . The memory 3130 of step S1300 may be an internal cache memory, a buffer memory, or an on-chip memory of the SoC 3000 . If the data according to the request of step S1100 is cached in the memory 3130 (hit, Y), step S1700 may proceed. If the data according to the request of step S1100 is not cached in the memory 3130 (miss, N), step S1400 may proceed.

S1400 단계에서, 메모리 컨트롤러(3111)는 메모리(3130)의 캐시 라인(혹은 엔트리)의 플래그 비트가 더티(dirty)인지를 확인할 수 있다. 플래그 비트가 더티로 설정되어 있으면(Y), 캐시 라인의 데이터와 메모리 장치(3300)의 데이터가 다름을 의미할 수 있다. S1500 단계에서, 메모리 컨트롤러(3111)는 캐시 라인의 데이터를 메모리 장치(3300)에 쓸 수 있다. 플래그 비트가 더티가 아닌 클린(clean)으로 설정되어 있으면(N), 메모리 컨트롤러(3111)는 메모리 장치(3300)를 읽고 읽혀진 데이터를 캐시 라인에 기입할 수 있다.In operation S1400 , the memory controller 3111 may check whether a flag bit of a cache line (or entry) of the memory 3130 is dirty. When the flag bit is set to dirty (Y), it may mean that data of the cache line and data of the memory device 3300 are different. In operation S1500 , the memory controller 3111 may write data of the cache line to the memory device 3300 . If the flag bit is set to clean rather than dirty (N), the memory controller 3111 may read the memory device 3300 and write the read data to the cache line.

S1700 단계에서, 메모리 컨트롤러(3111)는 메모리(3130)로 접근할 수 있다. S1800 단계에서, 메모리 컨트롤러(3111)는 S1100의 요청이 쓰기인지 여부를 확인할 수 있다. 요청이 쓰기이면(Y), 메모리 컨트롤러(3111)는 S1900 단계에서, 캐시 라인의 플래그 비트를 더티로 설정할 수 있다. 요청이 읽기이면(N), 메모리 컨트롤러(3111)는 메모리(3130)에 캐시된 데이터를 프로세서(3120)로 리턴(return)할 수 있다. 이후, 메모리 컨트롤러(3111)는 새로운 요청을 수신할 수 있다(S1100 단계).In step S1700 , the memory controller 3111 may access the memory 3130 . In step S1800 , the memory controller 3111 may check whether the request of S1100 is a write. If the request is write (Y), the memory controller 3111 may set the flag bit of the cache line to dirty in step S1900 . If the request is read (N), the memory controller 3111 may return data cached in the memory 3130 to the processor 3120 . Thereafter, the memory controller 3111 may receive a new request (step S1100 ).

도 16은 본 발명의 또 다른 실시 예에 따른 전자 장치의 예시적인 블록도를 도시한다. 전자 장치(4000)는 SoC(4100), 기판(4200), 및 메모리 장치(4300)를 포함할 수 있다.16 is an exemplary block diagram of an electronic device according to another embodiment of the present invention. The electronic device 4000 may include an SoC 4100 , a substrate 4200 , and a memory device 4300 .

SoC(4100)는 기판(4200)의 일면에 배치될 수 있고 그리고 SoC(4100)의 일면에는 솔더 볼 또는 범프가 배치될 수 있다. 솔더 볼 또는 범프를 통해 SoC(4100)와 기판(4200)이 서로 전기적으로 연결될 수 있다. SoC(4100)는 도 13의 메모리 컨트롤러(3111), PHY(3112), 프로세서(3120), 메모리(3130) 등을 포함할 수 있다. SoC(4100)는 메모리 컨트롤러(110)의 구성 요소들을 포함할 수 있다. SoC(4100)의 메모리 컨트롤러는 도 5 내지 도 7 그리고 도 15의 순서도들의 단계들을 수행할 수 있다.The SoC 4100 may be disposed on one surface of the substrate 4200 , and solder balls or bumps may be disposed on one surface of the SoC 4100 . The SoC 4100 and the substrate 4200 may be electrically connected to each other through solder balls or bumps. The SoC 4100 may include a memory controller 3111 , a PHY 3112 , a processor 3120 , a memory 3130 of FIG. 13 , and the like. The SoC 4100 may include components of the memory controller 110 . The memory controller of the SoC 4100 may perform the steps of the flowcharts of FIGS. 5 to 7 and 15 .

기판(4200)은 SoC(4100)와 메모리 장치(4300)간의 입출력 경로를 제공할 수 있다. 예를 들어, 기판(4200)은 인쇄 회로 기판, 연성 회로 기판, 세라믹 기판, 또는 인터포저(interposer)일 수 있다. 기판(4200)이 인터포저인 경우, 기판(4200)은 실리콘 웨이퍼를 이용하여 구현될 수 있다. 기판(4200)의 내부에는 다수의 입출력 경로들(I/O Path)이 구현될 수 있다. 입출력 경로들을 통해 명령, 어드레스, 및 데이터가 전송될 수 있다.The substrate 4200 may provide an input/output path between the SoC 4100 and the memory device 4300 . For example, the substrate 4200 may be a printed circuit board, a flexible circuit board, a ceramic substrate, or an interposer. When the substrate 4200 is an interposer, the substrate 4200 may be implemented using a silicon wafer. A plurality of input/output paths (I/O paths) may be implemented in the substrate 4200 . Commands, addresses, and data may be transmitted via input/output paths.

메모리 장치(4300)는 수직 방향으로 적층된 메모리 다이들(4310, 4320)과 버퍼 다이(4330)를 포함할 수 있다. 메모리 장치(4300)는 HBM(high bandwidth memory), HBM2, HBM3 등과 같이 DRAM 다이들(Dies)이 적층된 메모리 장치일 수 있다. 메모리 장치(4300)는 기판(4200)의 일면에 배치될 수 있고 그리고 메모리 장치(4300)의 일면에는 솔더 볼(Solder ball) 또는 범프(Bump)가 배치될 수 있다. 솔더 볼 또는 범프를 통해 메모리 장치(4300)와 기판(4200)이 서로 전기적으로 연결될 수 있다.The memory device 4300 may include memory dies 4310 and 4320 and a buffer die 4330 stacked in a vertical direction. The memory device 4300 may be a memory device in which DRAM dies are stacked, such as high bandwidth memory (HBM), HBM2, and HBM3. The memory device 4300 may be disposed on one surface of the substrate 4200 , and solder balls or bumps may be disposed on one surface of the memory device 4300 . The memory device 4300 and the substrate 4200 may be electrically connected to each other through solder balls or bumps.

관통 전극들(TSV)은 메모리 다이들(4310, 4320)과 버퍼 다이(4330) 간의 물리적인 또는 전기적인 경로들을 제공할 수 있다. 예를 들어, 관통 전극들(TSV)은 매트리스 배열로 배치될 수 있고 배치 위치는 도 16에서 도시된 것으로 한정되지 않는다.The through electrodes TSV may provide physical or electrical paths between the memory dies 4310 and 4320 and the buffer die 4330 . For example, the through electrodes TSV may be arranged in a matrix arrangement, and the arrangement position is not limited to that illustrated in FIG. 16 .

메모리 다이(4310)는 제 1 영역(4314)과 제 2 영역(4315)을 포함할 수 있다. 제 1 영역(4314)은 도 3 또는 도 10에서 설명된 메모리 장치(130)의 구성 요소들이 배치될 수 있다. 제 2 영역(4315)은 관통 전극들(TSV)이 배치될 수 있고 관통 전극들(TSV)을 통해 신호를 전송하거나 수신하기 위한 회로들이 배치될 수 있다. 메모리 다이(4320)는 메모리 다이(4310)와 실질적으로 동일하게 구현될 수 있다.The memory die 4310 may include a first region 4314 and a second region 4315 . In the first area 4314 , components of the memory device 130 described with reference to FIG. 3 or 10 may be disposed. In the second region 4315 , through electrodes TSV may be disposed and circuits for transmitting or receiving signals through the through electrodes TSV may be disposed. The memory die 4320 may be implemented substantially the same as the memory die 4310 .

버퍼 다이(4330; 코어 다이 또는 로직 다이로도 지칭될 수 있음)는 제 1 영역(4334)과 제 2 영역(4335)을 포함할 수 있다. 제 1 영역(4334)은 SoC(4100)로부터 입출력 경로들(I/O Path)을 통해 전송되는 명령, 어드레스, 데이터 입출력 신호(CMD, ADD, DQ)를 수신하는 적어도 하나의 수신기가 배치될 수 있다. 제 1 영역(4334)은 데이터 입출력 신호(DQ)를 입출력 경로들(I/O Path)을 통해 SoC(4100)로 전송하는 적어도 하나의 송신기가 배치될 수 있다. 또한, 제 1 영역(4334)에는 도 3 또는 도 10에서 설명된 메모리 장치(130)의 구성 요소들이 배치될 수 있다. 제 2 영역(4335)은 관통 전극들(TSV)이 배치될 수 있고 관통 전극들(TSV)을 통해 신호를 전송하거나 수신하기 위한 회로들이 배치될 수 있다.The buffer die 4330 (which may also be referred to as a core die or a logic die) may include a first area 4334 and a second area 4335 . In the first area 4334 , at least one receiver for receiving commands, addresses, and data input/output signals CMD, ADD, and DQ transmitted from the SoC 4100 through input/output paths may be disposed. have. At least one transmitter that transmits the data input/output signal DQ to the SoC 4100 through the input/output paths I/O paths may be disposed in the first area 4334 . In addition, components of the memory device 130 described with reference to FIG. 3 or 10 may be disposed in the first area 4334 . In the second region 4335 , through electrodes TSV may be disposed and circuits for transmitting or receiving signals through the through electrodes TSV may be disposed.

위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 쉽게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 쉽게 변형하여 실시할 수 있는 기술들도 포함될 것이다.The contents described above are specific examples for carrying out the present invention. The present invention will include not only the above-described embodiments, but also simple design changes or easily changeable embodiments. In addition, the present invention will include techniques that can be easily modified and implemented in the future using the above-described embodiments.

Claims (20)

메모리 컨트롤러에 있어서:
외부 장치로부터 쓰기 명령 및 제 1 데이터가 수신되는 것에 응답하여, 상기 제 1 데이터로부터 패리티 비트들을 생성하고, 제 1 데이터의 일부 비트들을 상기 패리티 비트들로 대체하고 그리고 상기 일부 비트들로부터 대체된 상기 패리티 비트들과 상기 제 1 데이터의 나머지 비트들을 포함하는 제 2 데이터를 생성하도록 구성되는 에러 정정 회로; 및
상기 에러 정정 회로로부터 상기 제 2 데이터를 수신하고, 그리고 상기 제 2 데이터를 메모리 장치로 전송하도록 구성되는 물리 계층을 포함하되,
상기 외부 장치로부터 읽기 명령이 수신되는 것에 응답하여, 상기 메모리 컨트롤러는 상기 제 2 데이터를 제 3 데이터로서 판독하는 메모리 컨트롤러.
For the memory controller:
In response to receiving a write command and first data from an external device, generate parity bits from the first data, replace some bits of the first data with the parity bits, and replace the replaced bits from the some bits an error correction circuit configured to generate second data including parity bits and remaining bits of the first data; and
a physical layer configured to receive the second data from the error correction circuitry and to transmit the second data to a memory device;
In response to receiving a read command from the external device, the memory controller reads the second data as third data.
제 1 항에 있어서,
상기 일부 비트들은 부동 소수점 형식으로 표현된 상기 제 1 데이터의 지수 비트들의 일부 비트들에 해당하는 메모리 컨트롤러.
The method of claim 1,
The some bits correspond to some bits of exponent bits of the first data expressed in a floating-point format.
제 1 항에 있어서,
상기 일부 비트들은 상기 제 1 데이터의 하위 비트들에 해당하는 메모리 컨트롤러.
The method of claim 1,
The some bits correspond to lower bits of the first data.
제 1 항에 있어서,
상기 에러 정정 회로는 상기 메모리 장치로부터 전송되는 상기 제 3 데이터에 포함된 상기 제 3 데이터의 패리티 비트들을 이용하여 상기 제 3 데이터에 대한 에러 정정 연산을 수행하도록 더 구성되는 메모리 컨트롤러.
The method of claim 1,
The error correction circuit is further configured to perform an error correction operation on the third data using parity bits of the third data included in the third data transmitted from the memory device.
제 1 항에 있어서,
상기 제 1 데이터는 신경망의 연산에 사용되는 메모리 컨트롤러.
The method of claim 1,
The first data is a memory controller used for calculation of a neural network.
삭제delete 제 1 항에 있어서,
상기 메모리 컨트롤러는 상기 메모리 장치로 제공되는 기준 어드레스를 조정하도록 더 구성되고, 그리고
상기 기준 어드레스에 따라 상기 메모리 장치의 메모리 셀 어레이는 제 1 구역과 제 2 구역으로 구분되는 메모리 컨트롤러.
The method of claim 1,
the memory controller is further configured to adjust a reference address provided to the memory device, and
A memory controller in which the memory cell array of the memory device is divided into a first area and a second area according to the reference address.
제 7 항에 있어서,
상기 제 1 구역의 리프레쉬 속도는 상기 제 2 구역의 리프레쉬 속도보다 빠르고, 그리고
상기 물리 계층은 상기 제 2 데이터가 상기 제 2 구역에 저장되도록 상기 제 2 구역을 나타내는 어드레스를 상기 메모리 장치로 전송하도록 더 구성되는 메모리 컨트롤러.
8. The method of claim 7,
The refresh rate of the first region is faster than the refresh rate of the second region, and
the physical layer is further configured to transmit an address indicating the second region to the memory device so that the second data is stored in the second region.
제 7 항에 있어서,
상기 메모리 컨트롤러는 BER(bit error rate)에 기초하여, 상기 제 1 구역의 리프레쉬 속도와 상기 제 2 구역의 리프레쉬 속도의 비율을 조정하도록 더 구성되는 메모리 컨트롤러.
8. The method of claim 7,
and the memory controller is further configured to adjust a ratio of a refresh rate of the first region to a refresh rate of the second region based on a bit error rate (BER).
프로그램 코드를 저장하는 비일시적 컴퓨터 판독 가능한 매체에 있어서, 상기 프로그램 코드가 프로세서에 의해 실행될 때, 상기 프로세서는:
외부 장치로부터 제 1 쓰기 명령 및 제 1 데이터가 수신되는 것에 응답하여, 상기 제 1 데이터로부터 패리티 비트들을 생성하고, 상기 제 1 데이터의 일부 비트들을 상기 패리티 비트들로 대체하는 단계;
상기 일부 비트들로부터 대체된 상기 패리티 비트들과 상기 제 1 데이터의 나머지 비트들을 포함하는 제 2 데이터를 생성하는 단계; 및
상기 제 2 데이터를 메모리 장치에 저장하기 위한 제 2 쓰기 명령을 생성하는 단계; 및
상기 외부 장치로부터 읽기 명령이 수신되는 것에 응답하여, 상기 제 2 데이터를 판독하는 단계를 수행하는 비일시적 컴퓨터 판독 가능한 매체.
A non-transitory computer readable medium storing program code, wherein when the program code is executed by a processor, the processor comprises:
generating parity bits from the first data in response to receiving a first write command and first data from an external device, and replacing some bits of the first data with the parity bits;
generating second data including the parity bits replaced from the partial bits and the remaining bits of the first data; and
generating a second write command for storing the second data in a memory device; and
In response to receiving a read command from the external device, the non-transitory computer-readable medium performs the step of reading the second data.
제 10 항에 있어서,
상기 프로세서는, 상기 메모리 장치의 메모리 셀 어레이를 제 1 구역과 제 2 구역으로 구분하기 위한 설정 명령과 기준 어드레스를 생성하는 단계를 더 수행하고, 그리고
상기 제 2 데이터는 상기 제 2 구역에 저장되는 비일시적 컴퓨터 판독 가능한 매체.
11. The method of claim 10,
The processor further performs the steps of generating a setting command and a reference address for dividing the memory cell array of the memory device into a first region and a second region, and
wherein the second data is stored in the second region.
제 11 항에 있어서,
상기 프로세서는, 상기 메모리 장치에 대한 리프레쉬(refresh) 명령을 반복적으로 생성하는 단계를 더 수행하고, 그리고
상기 리프레쉬 명령에 의한 상기 제 1 구역의 리프레쉬 속도는 상기 리프레쉬 명령에 의한 상기 제 2 구역의 리프레쉬 속도보다 빠른 비일시적 컴퓨터 판독 가능한 매체.
12. The method of claim 11,
The processor further performs the step of repeatedly generating a refresh command for the memory device, and
A non-transitory computer-readable medium in which a refresh rate of the first region by the refresh command is faster than a refresh rate of the second region by the refresh command.
제 11 항에 있어서,
상기 프로세서는, BER(bit error rate)에 기초하여, 상기 제 1 구역의 리프레쉬 속도와 상기 제 2 구역의 리프레쉬 속도의 비율을 조정하기 위한 설정 명령을 생성하는 단계를 더 수행하는 비일시적 컴퓨터 판독 가능한 매체.
12. The method of claim 11,
The processor, based on a bit error rate (BER), generates a setting command for adjusting a ratio of a refresh rate of the first region and a refresh rate of the second region. media.
제 10 항에 있어서,
상기 제 1 데이터는 신경망의 연산에 사용되고, 그리고
상기 일부 비트들은 부동 소수점 형식으로 표현된 상기 제 1 데이터의 지수 비트들에 해당하거나 또는 상기 제 1 데이터의 하위 비트들에 해당하는 비일시적 컴퓨터 판독 가능한 매체.
11. The method of claim 10,
the first data is used for computation of a neural network, and
The some bits correspond to exponent bits of the first data expressed in a floating-point format, or correspond to low-order bits of the first data.
쓰기 명령 및 제 1 데이터를 생성하도록 구성되는 프로세서;
상기 프로세서로부터 상기 쓰기 명령 및 상기 제 1 데이터가 수신되는 것에 응답하여, 상기 제 1 데이터로부터 패리티 비트들을 생성하고, 상기 제 1 데이터의 일부 비트들을 상기 패리티 비트들로 대체하고 그리고 상기 일부 비트들로부터 대체된 상기 패리티 비트들과 상기 제 1 데이터의 나머지 비트들을 포함하는 제 2 데이터를 생성하도록 구성되는 메모리 컨트롤러; 및
상기 메모리 컨트롤러로부터 전송되는 상기 제 2 데이터를 저장하도록 구성되는 메모리 장치를 포함하되,
상기 메모리 컨트롤러는 상기 프로세서로부터 읽기 명령이 수신되는 것에 응답하여, 상기 제 2 데이터를 판독하는 전자 장치.
a processor configured to generate a write command and first data;
In response to receiving the write command and the first data from the processor, generate parity bits from the first data, replace some bits of the first data with the parity bits, and a memory controller configured to generate second data including the replaced parity bits and remaining bits of the first data; and
a memory device configured to store the second data transmitted from the memory controller;
The memory controller reads the second data in response to receiving a read command from the processor.
제 15 항에 있어서,
상기 프로세서는 신경망 응용 프로그램을 실행함으로써 상기 제 1 데이터를 생성하도록 더 구성되는 전자 장치.
16. The method of claim 15,
and the processor is further configured to generate the first data by executing a neural network application.
제 15 항에 있어서,
상기 메모리 장치는 제 1 구역 그리고 상기 제 1 구역의 리프레쉬 속도보다 낮은 리프레쉬 속도를 갖는 제 2 구역으로 구분되는 메모리 셀 어레이를 포함하고,
상기 메모리 컨트롤러는 상기 제 2 데이터를 상기 메모리 장치에 저장하기 위한 명령 및 상기 제 2 구역의 적어도 일부를 나타내는 어드레스를 생성하도록 더 구성되고,
상기 제 2 데이터는 상기 명령 및 상기 어드레스에 의해 상기 제 2 구역에 저장되는 전자 장치.
16. The method of claim 15,
the memory device includes a memory cell array divided into a first region and a second region having a refresh rate lower than a refresh rate of the first region;
the memory controller is further configured to generate a command for storing the second data in the memory device and an address indicative of at least a portion of the second region,
The second data is stored in the second area according to the command and the address.
제 15 항에 있어서,
상기 메모리 장치는 제 1 워드 라인에 연결된 제 1 메모리 셀들 및 제 2 워드 라인에 연결된 제 2 메모리 셀들을 포함하는 메모리 셀 어레이를 포함하고,
상기 제 2 데이터의 MSB(most significant bit)는 제 1 메모리 셀들 중 하나에 저장되고 상기 제 2 데이터의 LSB(least significant bit)는 제 2 메모리 셀들 중 하나에 저장되고, 그리고
상기 제 1 메모리 셀들의 리프레쉬 속도는 상기 제 2 메모리 셀들의 리프레쉬 속도보다 빠른 전자 장치.
16. The method of claim 15,
The memory device includes a memory cell array including first memory cells connected to a first word line and second memory cells connected to a second word line;
a most significant bit (MSB) of the second data is stored in one of the first memory cells and a least significant bit (LSB) of the second data is stored in one of the second memory cells, and
The refresh rate of the first memory cells is faster than the refresh rate of the second memory cells.
제 15 항에 있어서,
상기 메모리 장치는 제 1 구역 그리고 상기 제 1 구역의 리프레쉬 속도보다 낮은 리프레쉬 속도를 갖는 제 2 구역으로 구분되는 메모리 셀 어레이를 포함하고,
상기 메모리 컨트롤러는 BER(bit error rate)들과 상기 제 1 구역의 상기 리프레쉬 속도와 상기 제 2 구역의 상기 리프레쉬 속도의 비율들이 맵핑(mapping)된 룩업 테이블을 저장하는 레지스터들을 포함하는 전자 장치.
16. The method of claim 15,
The memory device includes a memory cell array divided into a first region and a second region having a refresh rate lower than a refresh rate of the first region;
and wherein the memory controller includes registers for storing a lookup table in which bit error rates (BERs) and ratios of the refresh rate of the first region and the refresh rate of the second region are mapped.
제 15 항에 있어서,
상기 메모리 장치는 DRAM(dynamic random access memory) 장치인 전자 장치.
16. The method of claim 15,
The memory device is an electronic device that is a dynamic random access memory (DRAM) device.
KR1020190047910A 2019-04-24 2019-04-24 Memory controller storing data in approximate momory device based on priority-based ecc, non-transitory computer-readable medium storing program code, and electronic device comprising approximate momory device and memory controller KR102273153B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190047910A KR102273153B1 (en) 2019-04-24 2019-04-24 Memory controller storing data in approximate momory device based on priority-based ecc, non-transitory computer-readable medium storing program code, and electronic device comprising approximate momory device and memory controller
US16/661,622 US11144386B2 (en) 2019-04-24 2019-10-23 Memory controller storing data in approximate memory device based on priority-based ECC, non-transitory computer-readable medium storing program code, and electronic device comprising approximate memory device and memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190047910A KR102273153B1 (en) 2019-04-24 2019-04-24 Memory controller storing data in approximate momory device based on priority-based ecc, non-transitory computer-readable medium storing program code, and electronic device comprising approximate momory device and memory controller

Publications (2)

Publication Number Publication Date
KR20200124504A KR20200124504A (en) 2020-11-03
KR102273153B1 true KR102273153B1 (en) 2021-07-05

Family

ID=72917073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190047910A KR102273153B1 (en) 2019-04-24 2019-04-24 Memory controller storing data in approximate momory device based on priority-based ecc, non-transitory computer-readable medium storing program code, and electronic device comprising approximate momory device and memory controller

Country Status (2)

Country Link
US (1) US11144386B2 (en)
KR (1) KR102273153B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240039361A (en) 2022-09-19 2024-03-26 한양대학교 산학협력단 Method and Apparatus for Error Correction in Memory Device

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11599773B2 (en) 2018-12-27 2023-03-07 Micron Technology, Inc. Neural networks and systems for decoding encoded data
US11042432B1 (en) * 2019-12-20 2021-06-22 Western Digital Technologies, Inc. Data storage device with dynamic stripe length manager
KR20210127339A (en) * 2020-04-14 2021-10-22 에스케이하이닉스 주식회사 Semiconductor memory device including a plurality of area having differnet refresh periods, memory controller controlling the same and memory system
US11621049B2 (en) * 2020-09-30 2023-04-04 Micron Technology, Inc. Detect whether die or channel is defective to confirm temperature data
CN113555051B (en) * 2021-07-23 2023-04-07 电子科技大学 SAR imaging data transposition processing system based on DDR SDRAM
US11755408B2 (en) 2021-10-07 2023-09-12 Micron Technology, Inc. Systems for estimating bit error rate (BER) of encoded data using neural networks

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004075057A1 (en) * 1997-06-12 2004-09-02 Thomson Consumer Electronics, Inc. A method and apparatus for detecting and concealing data errors in stored digital data
KR100326940B1 (en) 1999-08-13 2002-03-13 윤덕용 Conforming structure and operating method of inverted data store for low power memory
US7929368B2 (en) * 2008-12-30 2011-04-19 Micron Technology, Inc. Variable memory refresh devices and methods
KR20110138626A (en) 2010-06-21 2011-12-28 삼성전자주식회사 Memory module for comprising parallel test apparatus
KR102178137B1 (en) * 2014-08-26 2020-11-12 삼성전자주식회사 Semiconductor memory device, method of correcting error in the same and memory system including the same
US11481126B2 (en) 2016-05-24 2022-10-25 Micron Technology, Inc. Memory device error based adaptive refresh rate systems and methods
GB2560968B (en) * 2017-03-30 2020-07-29 Advanced Risc Mach Ltd Control of refresh operation for memory regions
US10146460B1 (en) * 2017-06-01 2018-12-04 Apple Inc. Programming schemes for avoidance or recovery from cross-temperature read failures
US11086634B2 (en) * 2017-07-05 2021-08-10 Shanghai Cambricon Information Technology Co., Ltd. Data processing apparatus and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240039361A (en) 2022-09-19 2024-03-26 한양대학교 산학협력단 Method and Apparatus for Error Correction in Memory Device

Also Published As

Publication number Publication date
US11144386B2 (en) 2021-10-12
KR20200124504A (en) 2020-11-03
US20200341840A1 (en) 2020-10-29

Similar Documents

Publication Publication Date Title
KR102273153B1 (en) Memory controller storing data in approximate momory device based on priority-based ecc, non-transitory computer-readable medium storing program code, and electronic device comprising approximate momory device and memory controller
US10198221B2 (en) Methods of operating semiconductor memory devices with selective write-back of data for error scrubbing and related devices
US10868570B2 (en) Error detection code generation circuits of semiconductor devices, memory controllers including the same and semiconductor memory devices including the same
US9772803B2 (en) Semiconductor memory device and memory system
KR102435181B1 (en) Semiconductor memory device, memory system including the same and method of operating memory system
US10671478B2 (en) Scrubbing controllers of semiconductor memory devices, semiconductor memory devices and methods of operating the same
KR102324769B1 (en) Error correction circuit, semiconductor memory device and memory system including the same
US10404286B2 (en) Memory modules, memory systems including the same and methods of operating memory systems
KR20180019818A (en) Semiconductor memory device, memory system including the same and method of operating the same
KR20170121798A (en) Semiconductor memory device and method of operating the same
KR20170056825A (en) Semiconductor memory device, memory system including the same and method of operating the same
US9064603B1 (en) Semiconductor memory device and memory system including the same
US11664083B2 (en) Memory, memory system having the same and operating method thereof
KR20170060263A (en) Semiconductor memory device and method of operating the same
KR20170014109A (en) Semiconductor memory device and memory system including the same
US20220383932A1 (en) Word line driver circuits for memory devices and methods of operating same
US9449673B2 (en) Memory device and memory system having the same
CN115731983A (en) Memory controller and memory system including the same
US11782498B2 (en) Electronic device performing outlier-aware approximation coding and method thereof
CN114840451A (en) Storage device, storage system, and method of operating storage device
US11804254B2 (en) Memory device and method of refreshing memory device based on temperature
US11922992B2 (en) Memory device including sub word line driving circuit

Legal Events

Date Code Title Description
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant