KR102657783B1 - 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템 - Google Patents

오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템 Download PDF

Info

Publication number
KR102657783B1
KR102657783B1 KR1020217013943A KR20217013943A KR102657783B1 KR 102657783 B1 KR102657783 B1 KR 102657783B1 KR 1020217013943 A KR1020217013943 A KR 1020217013943A KR 20217013943 A KR20217013943 A KR 20217013943A KR 102657783 B1 KR102657783 B1 KR 102657783B1
Authority
KR
South Korea
Prior art keywords
data
memory
ecc
word
circuit
Prior art date
Application number
KR1020217013943A
Other languages
English (en)
Other versions
KR20210075138A (ko
Inventor
위 루
치에-위 린
Original Assignee
수퍼멤, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 수퍼멤, 인크. filed Critical 수퍼멤, 인크.
Priority to KR1020247012010A priority Critical patent/KR102687054B1/ko
Publication of KR20210075138A publication Critical patent/KR20210075138A/ko
Application granted granted Critical
Publication of KR102657783B1 publication Critical patent/KR102657783B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/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
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B61/00Magnetic memory devices, e.g. magnetoresistive RAM [MRAM] devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/161Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect details concerning the memory cell structure, e.g. the layers of the ferromagnetic memory cell
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Detection And Correction Of Errors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 오류 정정 메모리 시스템 및 상기 메모리 시스템의 조작 방법에 관한 것이다. 일부 실시예에 있어서, 메모리 시스템은, 데이터 메모리; ECC 메모리; 및, ECC 메모리 및 데이터 메모리에 전기적으로 커플링되는 데이터 클리닝 회로; 를 포함한다. 데이터 클리닝 회로는 수신된 데이터 클리닝 명령에 대한 응답으로서, 데이터 메모리 중의 오류를 정정하도록 구성될 수 있다. 오류를 정정하기 위하여 사용되는 코드 워드의 길이는 데이터 메모리의 정상적인 액세스 과정 중에 사용되는 워드 길이보다 길게 구성될 수 있다. 일부 실시예에 있어서, 메모리 시스템은 제1 비트 오류율에 관련되는 제1 메모리 회로, 및 제2 비트 오류율에 관련되는 제2 메모리 회로를 포함한다. 일부 실시예에 있어서, 메모리 시스템은 오류 정정 가능 멀티 레벨 셀(MLC) 배열을 포함한다.

Description

오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템
본 발명은 연산 메모리에 관한 것으로서, 더욱 상세하게는 연산 메모리의 오류 정정 장치 및 방법에 관한 것이다.
삭제
자성 랜덤 액세스 메모리(MRAM), 상변화 메모리(PCM), 저항 랜덤 액세스 메모리(RRAM) 및 강유전체 랜덤 액세스 메모리(FRAM)는 일부 비휘발성 메모리 기술로서, FLASH에 비하여 더욱 빠른 데이터 기록 속도와 더욱 높은 재기록 내구성을 가진다. 예를 들면, 고성능 MRAM은 엣지 인공 지능 연산(Edge-AI) 응용 분야에 적용될 수 있고, 모델 최적화를 수행한 후 복잡한 데이터 구조가 필요할 수 있다.
고성능을 실현하기 위하여, MRAM과 같은 비휘발성 메모리는 많은 독특한 회로 문제를 해결해야 한다. 특히, 비교적 높은 전압에서 판독 작업을 수행하는 경우, 판독 성능은 판독 간섭 오류로 인하여 제한을 받게 되고, 또한 기록 성능도 더욱 높은 전압에서 수행하는 경우 전기 절연파괴 손상(hard break down)으로 인하여 제한을 받게 된다. 또 다른 문제로서, 비교적 높은 온도 하에서 또는 비교적 높은 온도 이벤트 기간 내에서 데이터를 장기적으로 보존하기 위하여 더욱 높은 수준의 오류 정정이 필요할 수 있다. 상기와 같은 경우, 2비트 정정 회로를 사용할 수 있지만, 이러한 회로는 판독 및 기록 조작에 대하여 추가적인 지연을 초래하게 된다.
또한, 이러한 비휘발성 RAM 기술과 종래의 휘발성 메모리 기술 중의 일부 기술은 환경 간섭에 민감할 수 있다. 예를 들면, DRAM 중의 데이터는 고온의 외부 방향 전리 방사선에 민감하고, MRAM 중의 데이터는 고온 또는 강한 자기장으로 인하여 오류가 발생할 수 있다.
전력은 전자 장치 설계에 있어서의 주요한 제한 요소일 수 있고, 또한 메모리 밀도의 지속적인 증가와 더불어, 총 전력 중 저장 장치가 소비하는 부분도 지속적으로 증가하고 있다. 메모리의 작동 전력 소비 감소는 데이터 보존 및 판독 기록 조작에 있어서 오류율을 증가시킬 수 있다.
적절한 오류 정정 강도를 달성하기 위하여, 대면적의 다중 회로가 필요할 수 있다. 예를 들면, 지연이 낮은 해밍 코드(hamming code)를 사용하는 경우, 8비트 워드의 단일 비트 오류를 방지하기 위하여 5개의 오류 정정 코드(ECC) 비트가 필요할 수 있다. 다른 실례로서, Bose, Chaudhuri 및 Hocquenghem(BCH) 코드 또는 저밀도 패리티 체크(LDPC) 코드를 사용하는 경우, 비교적 적은 ECC 체크 비트를 사용하여 비교적 큰 데이터 블록(예를 들면 1024 비트 또는 그 이상)을 보호할 수 있다. 하지만 상기와 같은 ECC 코드는 비교적 복잡한 디코딩 및 인코딩 조작이 필요하고, 성능에 영향을 줄 수 있다.
원가 절감 및 메모리 내부 연산(PIM)을 실현하기 위하여, 멀티 레벨 셀(MLC) 장치(예를 들면 플로팅 케이트 또는 전하 트랩 FLASH 장치, eDRAM 커패시터, RRAM, PCM, 아날로그 메모리)를 사용하여 다중 상태 또는 연속 아날로그 특성으로 행렬 피승수를 표시함으로써 메모리 중의 연산 조작을 수행할 수 있다. 하지만, 대부분 상기 장치는 조작 과정 중에 드리프트 현상이 발생하여 행렬 피승수의 값을 점차적으로 변경할 수 있다. 장치의 드리프트가 임계값을 초과하는 경우, 간단한 "판독 및 회복" 조작을 통하여 정확한 값을 유지할 수 없게 된다.
본 발명은 오류 정정 기능이 구비된 메모리 시스템 및 상기 메모리 시스템을 조작하기 위한 방법에 관한 것이다. 일부 실시예에 있어서, 메모리 시스템은, 데이터 메모리; ECC 메모리; 및, ECC 메모리 및 데이터 메모리에 전기적으로 커플링되는 데이터 클리닝 회로; 를 포함한다. 데이터 클리닝 회로는 수신된 데이터 클리닝 명령에 대한 응답으로서, 데이터 메모리 중의 오류를 정정하도록 구성된다. 오류를 정정하기 위하여 사용되는 코드 워드의 길이는 데이터 메모리의 정상적인 액세스 과정 중에 사용되는 워드 길이보다 길게 구성된다. 일부 실시예에 있어서, 메모리 시스템은 제1 비트 오류율에 관련되는 제1 메모리 회로, 및 제2 비트 오류율에 관련되는 제2 메모리 회로를 포함한다. 일부 실시예에 있어서, 메모리 시스템은 오류 정정 가능 멀티 레벨 셀(MLC) 배열을 포함한다.
일부 실시예에 있어서, 메모리 시스템은, 데이터 메모리; ECC 메모리; 및, ECC 메모리 및 데이터 메모리에 전기적으로 커플링되는 데이터 클리닝 회로; 를 포함한다.
일부 실시예에 있어서, 데이터 클리닝 회로는 수신된 데이터 클리닝 명령에 대한 응답으로서, 데이터 메모리 중의 오류를 정정하도록 구성된다.
일부 실시예에 있어서, 오류를 정정하기 위하여 사용되는 코드 워드의 길이는 데이터 메모리의 정상적인 액세스 과정 중에 사용되는 워드 길이보다 길게 구성된다.
일부 실시예에 있어서, 데이터 클리닝 회로는 데이터 버퍼, 데이터 클리닝 컨트롤러, ECC 인코딩 회로, 및 ECC 디코딩 회로를 포함한다.
일부 실시예에 있어서, 데이터 클리닝 회로는 데이터 메모리를 액세스하는 동시에 데이터 메모리 중의 오류를 정정하도록 구성된다.
일부 실시예에 있어서, 메모리 시스템은 환경 조건을 감지하기 위한 환경 간섭 센서를 더 포함하고, 그 중, 데이터 클리닝 회로는 감지된 환경 조건을 기반으로 데이터 클리닝 명령을 생성한다.
일부 실시예에 있어서, 환경 조건은 온도 및 자기장 중의 적어도 하나를 포함한다.
일부 실시예에 있어서, 데이터 클리닝 회로는 기지 데이터 중의 변화를 감지하고, 감지된 변화를 기반으로 데이터 클리닝 명령을 생성하도록 구성된다.
일부 실시예에 있어서, 메모리 시스템은 타이머 회로를 더 포함하고, 타이머 회로는 경과된 시간을 추적하고, 경과된 시간이 타이밍 임계값을 초과하는지 판단하며, 경과된 시간이 타이밍 임계값 이상으로 판단되는 경우 데이터 클리닝 명령을 생성하도록 구성된다.
일부 실시예에 있어서, ECC 메모리는 복수의 파티션을 포함하고, 데이터 메모리는 복수의 메모리 주소 범위를 포함하며, 각 파티션은 데이터 메모리 중의 하나의 메모리 주소 범위에 대응된다.
일부 실시예에 있어서, ECC 메모리는 복수의 ECC 비트를 갖는 파티션을 포함하고, ECC 비트의 수량은 데이터 클리닝 알고리즘에 관련되는 ECC 인코딩 방법을 기반으로 한다.
일부 실시예에 있어서, ECC 메모리는 버퍼 세트를 포함하되, 그 중, 각 버퍼는 하나의 ECC 코드 워드에 대응되고, 각 ECC 코드 워드는 데이터 메모리 중의 하나의 구간에 대응되며, 각 버퍼는 상기 구간의 상태를 저장한다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자성 랜덤 액세스 메모리(MRAM)을 포함한다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자기 터널 접합(MTJ)을 갖는 메모리 유닛을 포함하고, 10-12 내지 10-2 사이의 비트 오류율을 갖는 메모리 유닛에 비하여, 치수 감소, 보자력장(coercive field) 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 하나를 갖는다.
일부 실시예에 있어서, 10-12 내지 10-2 사이의 비트 오류율을 갖는 메모리 유닛에 비하여, MJT는 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 두개를 갖는다.
일부 실시예에 있어서, 데이터 메모리는 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM) 또는 임베디드 DRAM(eDRAM)을 포함한다.
일부 실시예에 있어서, 데이터 클리닝 회로 또는 호스트는 데이터 메모리가 보호를 받고 있는지 판단하도록 구성되고, ECC 메모리는 데이터 메모리가 보호를 받고 있다고 판단한 경우에 ECC 체크 비트를 저장하며, 데이터 메모리가 보호를 받고 있지 않는다고 판단한 경우에 연산 데이터를 저장하도록 구성된다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리는 다른 메모리 회로에 포함된다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리는 같은 메모리 회로에 포함된다.
일부 실시예에 있어서, 메모리 시스템은 호스트 장치에 전기적으로 커플링된다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리는 크기가 20 나노미터 내지 200 나노미터 사이인 MTJ 및 종횡비가 1 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
일부 실시예에 있어서, 데이터 클리닝 회로는, 데이터 보호 명령을 수신하고; 보호 대기 데이터 중의 각 데이터 워드에 사용되어 수신된 보호 명령에 대한 응답으로서: 데이터 워드에 관련되는 데이터 코드 워드의 주소를 인식하고; 상기 주소에 의하여 상기 데이터 워드가 데이터 메모리에 저장되었는지 판단하며; 상기 데이터 워드가 데이터 메모리에 저장되었다고 판단한 경우의 응답으로서, 데이터 메모리로부터 상기 데이터 워드를 판독하고; 상기 데이터 워드가 데이터 메모리에 저장되지 않았다고 판단한 경우의 응답으로서: 상기 데이터 워드를 수신하고; 상기 데이터 워드를 데이터 메모리에 기록하며; 상기 데이터 워드에 대하여 ECC 인코딩 연산을 수행하고; ECC 인코딩 연산을 기반으로 데이터 코드 워드를 생성하며; 상기 주소에 데이터 코드 워드를 데이터 메모리에 기록하고; ECC 인코딩 연산을 기반으로 ECC 체크 비트를 생성하며; 생성된 ECC 체크 비트를 ECC 메모리 중의 대응되는 파티션에 기록하도록 구성된다.
일부 실시예에 있어서, 데이터 클리닝 회로는, 데이터 클리닝 명령을 수신하고; 각 클리닝 대기 데이터 코드에 사용되어 수신된 클리닝 데이터 클리닝 명령에 대한 응답으로서: 데이터 코드 워드의 시작 주소 및 대응되는 ECC 저장 파티션을 인식하고; 데이터 메모리로부터 시작 주소에 관련되는 데이터 워드를 판독하며; ECC 메모리로부터 대응되는 ECC 메모리 파티션에 관련되는 ECC 체크 비트를 판독하고; 데이터 워드 및 ECC 체크 비트에 의하여 ECC 디코딩 연산을 수행하며; ECC 디코딩 연산을 기반으로 데이터 워드에 오류가 포함되어 있는지 판단하고; 상기 데이터 워드 중에 오류가 포함된다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하되, 그 중 오류 정정 가능 비트를 포함한 데이터 워드는 클리닝된 데이터 워드이며; 데이터 워드에 오류가 포함되지 않는다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하는 것을 포기하되, 그 중 데이터 워드는 클리닝된 데이터 워드이고; 호스트가 클리닝된 데이터 워드를 청구하였는지 판단하고; 호스트가 클리닝된 데이터를 청구하였다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 호스트와 전기적으로 커플링되는 메모리 컨트롤러에 출력하며; 호스트가 클리닝된 데이터를 청구하지 않았다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 메모리 컨트롤러에 출력하는 것을 포기한다.
일부 실시예에 있어서, 메모리 시스템의 조작 방법을 게시한 것으로서, 상기 메모리 시스템은, 데이터 메모리; ECC 메모리; 및, ECC 메모리 및 데이터 메모리에 전기적으로 커플링되는 데이터 클리닝 회로; 를 포함하고, 상기 방법은, 수신된 데이터 클리닝 명령에 대한 응답으로서, 데이터 클리닝 회로를 사용하여 데이터 메모리 중의 오류를 수정하는 것을 포함한다.
일부 실시예에 있어서, 오류를 정정하기 위하여 사용되는 코드 워드의 길이는 데이터 메모리의 정상적인 액세스 과정 중에 사용되는 워드 길이보다 길게 구성된다.
일부 실시예에 있어서, 데이터 클리닝 회로는 데이터 버퍼, 데이터 클리닝 컨트롤러, ECC 인코딩 회로, 및 ECC 디코딩 회로를 포함한다.
일부 실시예에 있어서, 상기 방법은 데이터 메모리에서 오류를 정정하는 동시에 데이터 메모리를 액세스하는 것을 더 포함한다.
일부 실시예에 있어서, 상기 방법은 환경 간섭 센서를 사용하여 환경 조건을 감지하고; 감지된 환경 조건을 기반으로 데이터 클리닝 명령을 생성하는 것을 더 포함한다.
일부 실시예에 있어서, 환경 조건은 온도 및 자기장 중의 적어도 하나를 포함한다.
일부 실시예에 있어서, 상기 방법은 기지 데이터 중의 변화를 감지하고; 감지된 변화를 기반으로 데이터 클리닝 명령을 생성하는 것을 더 포함한다.
일부 실시예에 있어서, 상기 방법은 경과된 시간을 추적하고; 경과된 시간이 타이밍 임계값을 초과하는지 판단하며; 경과된 시간이 타이밍 임계값 이상으로 판단되는 경우 데이터 클리닝 명령을 생성하는 것을 더 포함한다.
일부 실시예에 있어서, ECC 메모리는 복수의 파티션을 포함하고, 데이터 메모리는 복수의 메모리 주소 범위를 포함하며, 각 파티션은 데이터 메모리 중의 하나의 메모리 주소 범위에 대응된다.
일부 실시예에 있어서, ECC 메모리는 복수의 데이터 클리닝 알고리즘에 관련되는 ECC 비트를 갖는 하나의 파티션을 포함하고, 상기 방법은 상기 ECC 비트를 사용하여 ECC 인코딩 방법을 수행하는 것을 더 포함한다.
일부 실시예에 있어서, ECC 메모리는 버퍼 세트를 포함하되, 그 중, 각 버퍼는 하나의 ECC 코드 워드에 대응되고, 각 ECC 코드 워드는 데이터 메모리 중의 하나의 구간에 대응되며, 각 버퍼는 상기 구간의 상태를 저장한다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자성 랜덤 액세스 메모리(MRAM)을 포함한다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자기 터널 접합(MTJ)을 갖는 메모리 유닛을 포함하고, 10-12 내지 10-2 사이의 비트 오류율을 갖는 메모리 유닛에 비하여, 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 하나를 갖는다.
일부 실시예에 있어서, 10-12 내지 10-2 사이의 비트 오류율을 갖는 메모리 유닛에 비하여, MTJ는 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 두개를 갖는다.
일부 실시예에 있어서, 데이터 메모리는 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM) 또는 임베디드 DRAM(eDRAM)을 포함한다.
일부 실시예에 있어서, 상기 방법은 데이터 메모리가 오류 정정 보호를 받고 있는지 판단하고; 데이터 메모리가 오류 정정 보호를 받고 있다는 설정된 경우에 ECC 체크 비트를 ECC 메모리에 저장하며; 데이터 메모리가 오류 정정 보호를 받고 있지 않는다고 설정된 경우에 연산 데이터를 ECC 메모리에 저장하는 것을 더 포함한다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리는 다른 메모리 회로에 포함된다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리는 같은 메모리 회로에 포함된다.
일부 실시예에 있어서, 메모리 시스템은 호스트 장치에 전기적으로 커플링된다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리는 크기가 20 나노미터 내지 200 나노미터 사이인 MTJ 및 종횡비가 1 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
일부 실시예에 있어서, 상기 방법은, 데이터 보호 명령을 수신하고; 보호 대기 데이터 중의 각 데이터 워드에 사용되어 수신된 보호 명령에 대한 응답으로서: 데이터 워드에 관련되는 데이터 코드 워드의 주소를 인식하고; 상기 주소에 의하여 상기 데이터 워드가 데이터 메모리에 저장되었는지 판단하며; 상기 데이터 워드가 데이터 메모리에 저장되었다고 판단한 경우의 응답으로서, 데이터 메모리로부터 상기 데이터 워드를 판독하고; 상기 데이터 워드가 데이터 메모리에 저장되지 않았다고 판단한 경우의 응답으로서: 상기 데이터 워드를 데이터 메모리에 기록하고; 상기 데이터 워드에 대하여 ECC 인코딩 연산을 수행하며; ECC 인코딩 연산을 기반으로 데이터 코드 워드를 생성하고; 상기 주소에 데이터 코드 워드를 데이터 메모리에 기록하며; ECC 인코딩 연산을 기반으로 ECC 체크 비트를 생성하고; 생성된 ECC 체크 비트를 ECC 메모리 중의 대응되는 파티션에 기록하도록 구성된다.
일부 실시예에 있어서, 상기 방법은, 각 클리닝 대기 데이터 코드에 사용되어 수신된 클리닝 데이터 클리닝 명령에 대한 응답으로서: 데이터 코드 워드의 시작 주소 및 대응되는 ECC 메모리 파티션을 인식하고; 데이터 메모리로부터 시작 주소에 관련되는 데이터 워드를 판독하며; ECC 메모리로부터 대응되는 ECC 메모리 파티션에 관련되는 ECC 체크 비트를 판독하고; 데이터 워드 및 ECC 체크 비트를 기반으로 ECC 디코딩 연산을 수행하며; ECC 디코딩 연산을 기반으로 데이터 워드에 오류가 포함되어 있는지 판단하고; 데이터 워드에 오류가 포함된다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하되, 그 중 오류 정정 가능 비트를 포함한 데이터 워드는 클리닝된 데이터 워드이며; 데이터 워드에 오류가 포함되지 않는다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하는 것을 포기하되, 그 중 데이터 워드는 클리닝된 데이터 워드이고; 호스트가 클리닝된 데이터 워드를 청구하였는지 판단하고; 호스트가 클리닝된 데이터를 청구하였다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 호스트와 전기적으로 커플링되는 메모리 컨트롤러에 출력하며; 호스트가 클리닝된 데이터를 청구하지 않았다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 메모리 컨트롤러에 출력하는 것을 포기하는 것을 더 포함한다.
일부 실시예에 있어서, 메모리 시스템은 인공 지능 엣지 연산(edge-AI) 시스템, 데이터 센터의 신경망 유사 시스템, IoT 시스템, 자동자 전자 시스템, 마이크로 컨트롤러 시스템, 이동 통신 시스템, 프로그래밍 가능한 연산 시스템, 하드웨어 안전 시스템, 원격 정조 서비스 시스템, 생물 의학 전자 장치, 로봇 및 드론으로부터 선택된 어느 하나에 포함된다.
일부 실시예에 있어서, 메모리 시스템은, 제1 비트 오류율에 관련되는 제1 메모리 회로; 제2 비트 오류율에 관련되되, 그 중 제1 비트 오류율은 제2 비트 오류율보다 큰 제2 메모리 회로; 및, 제1 및 제2 메모리 회로에 저장되는 데이터 워드; 를 포함하고, 그 중, 데이터 워드는 제1 비트 오류율에 관련되는 제1 파티션 및 제2 비트 오류율에 관련되는 제2 파티션을 포함하며, 데이터 워드의 제1 파티션은 제1 메모리 회로에 저장되고, 데이터 워드의 제2 파티션은 제2 메모리 회로에 저장된다.
일부 실시예에 있어서, 메모리 시스템은 제1 메모리 회로 및 제2 메모리 회로에 전기적으로 커플링되는 데이터 클리닝 회로를 더 포함하고, 그 중, 데이터 클리닝 회로는 제1 메모리 회로를 제어하여 제1 오류율을 제3 오류율까지 감소시키고, 데이터 클리닝 회로는 제2 메모리 회로를 제어하여 제2 오류율을 제4 오류율까지 감소시키며, 제1 비트 오류율의 감소 정도는 제2 비트 오류율의 감소 정도보다 크게 구성된다.
일부 실시예에 있어서, 제1 메모리 회로는 제1 크기의 제1 자기 터널 접합(MTJ) 및 제1 통로 종횡(W/L)비의 제1 MOS 트랜지스터를 갖는 제1 메모리 유닛을 포함하고, 제2 메모리 유닛은 제2 크기의 제2 MTJ 및 제2 W/L비의 제2 MOS 트랜지스터를 갖는 제2 메모리 유닛을 포함하며, 제1 크기는 제2 크기보다 크고, 제1 W/L비는 제2 W/L비보다 크게 구성된다.
일부 실시예에 있어서, 제1 메모리 회로는 크기가 40 나노미터 내지 200 나노미터 사이인 MTJ 및 W/L가 2 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
일부 실시예에 있어서, 제2 메모리 회로는 크기가 20 나노미터 내지 100 나노미터 사이인 MTJ 및 W/L가 1 내지 100 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
일부 실시예에 있어서, 제1 메모리 회로는 제1 판독 전압, 제1 센싱 시간 및 제1 워드 라인(WL) 전압을 사용하고, 제2 메모리 회로는 제2 판독 전압, 제2 센싱 시간 및 제2 WL 전압을 사용하며, 제1 판독 전압은 제2 판독 전압보다 크고, 제1 센싱 시간은 제2 센싱 시간보다 길며, 제1 WL 전압은 제2 WL 전압보다 크게 구성된다.
일부 실시예에 있어서, 제1 메모리 회로는 제1 기록 전압, 제1 기록 시간 및 제1 WL 전압을 사용하고, 제2 메모리 회로는 제2 기록 전압, 제2 기록 시간 및 제2 WL 전압을 사용하며, 제1 기록 전압은 제2 기록 전압보다 크고, 제1 기록 시간은 제2 기록 시간보다 길며, 제1 WL 전압은 제2 WL 전압보다 크게 구성된다.
일부 실시예에 있어서, 부동 소수점 형식에서 제1 파티션은 부호 비트, 지수 비트 및 가수 비트의 상위 부분을 포함한다.
일부 실시예에 있어서, 정수 형식에서 제1 파티션은 부호 비트 및 상위 부분을 포함한다.
일부 실시예에 있어서, 부동 소수점 형식에서 제2 파티션은 가수 비트의 하위 부분을 포함한다.
일부 실시예에 있어서, 정수 형식에서 제2 파티션은 하위 부분을 포함한다.
일부 실시예에 있어서, 메모리 시스템의 조작 방법을 게시한 것으로서, 상기 메모리 시스템은 제1 메모리 회로 및 제2 메모리 회로를 포함하고, 상기 방법은, 제1 비트 오류율을 기반으로 메모리 시스템에 저장하여야 할 데이터 워드의 제1 파티션을 판단하고; 제2 비트 오류율을 기반으로 메모리 시스템에 저장하여야 할 데이터 워드의 제2 파티션을 판단하되, 제1 비트 오류율은 제2 비트 오류율보다 크며; 데이터 워드의 제1 파티션을 제1 메모리 회로에 저장하고; 데이터 워드의 제2 파티션을 제2 메모리 회로에 저장하는 것; 을 포함하며; 그 중, 제1 메모리 회로는 제1 비트 오류율에 관련되고, 제2 메모리 회로는 제2 비트 오류율에 관련된다.
일부 실시예에 있어서, 상기 방법은, 제1 메모리 회로를 제어하여 제1 오류율을 제3 오류율까지 감소시키고; 제2 메모리 회로를 제어하여 제2 오류율을 제4 오류율까지 감소시키는 것; 을 더 포함하고, 그 중, 제1 비트 오류율의 감소 정도는 제2 비트 오류율의 감소 정도보다 크게 구성된다.
일부 실시예에 있어서, 제1 메모리 회로는 제1 크기의 제1 MTJ 및 제1 통로 W/L비의 제1 MOS 트랜지스터를 갖는 제1 메모리 유닛을 포함하고, 제2 메모리 유닛은 제2 크기의 제2 MTJ 및 제2 W/L비의 제2 MOS 트랜지스터를 갖는 제2 메모리 유닛을 포함하며, 제1 크기는 제2 크기보다 크고, 제1 W/L비는 제2 W/L비보다 크게 구성된다.
일부 실시예에 있어서, 제1 메모리 회로는 크기가 40 나노미터 내지 200 나노미터 사이인 MTJ 및 W/L가 2 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
일부 실시예에 있어서, 제2 메모리 회로는 크기가 20 나노미터 내지 100 나노미터 사이인 MTJ 및 W/L가 1 내지 100 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
일부 실시예에 있어서, 상기 방법은, 제1 메모리 회로에서 제1 판독 전압, 제1 센싱 시간 및 제1 WL 전압을 사용하고; 제2 메모리 회로에서 제2 판독 전압, 제2 센싱 시간 및 제2 WL 전압을 사용하는 것; 을 더 포함하고, 그 중, 제1 판독 전압은 제2 판독 전압보다 크고, 제1 센싱 시간은 제2 센싱 시간보다 길며, 제1 WL 전압은 제2 WL 전압보다 크게 구성된다.
일부 실시예에 있어서, 상기 방법은, 제1 메모리 회로에서 제1 기록 전압, 제1 기록 시간 및 제1 WL 전압을 사용하고; 제2 메모리 회로에서 제2 기록 전압, 제2 기록 시간 및 제2 WL 전압을 사용하는 것; 을 포함하고, 그 중, 제1 기록 전압은 제2 기록 전압보다 크고, 제1 기록 시간은 제2 기록 시간보다 길며, 제1 WL 전압은 제2 WL 전압보다 크게 구성된다.
일부 실시예에 있어서, 부동 소수점 형식에서 제1 파티션은 부호 비트, 지수 비트 및 가수 비트의 상위 부분을 포함한다.
일부 실시예에 있어서, 정수 형식에서 제1 파티션은 부호 비트 및 상위 부분을 포함한다.
일부 실시예에 있어서, 부동 소수점 형식에서 제2 파티션은 가수 비트의 하위 부분을 포함한다.
일부 실시예에 있어서, 정수 형식에서 제2 파티션은 하위 부분을 포함한다.
일부 실시예에 있어서, 메모리 시스템은 인공 지능 엣지 연산(edge-AI) 시스템, 데이터 센터의 신경망 유사 시스템, IoT 시스템, 자동자 전자 시스템, 마이크로 컨트롤러 시스템, 이동 통신 시스템, 프로그래밍 가능한 연산 시스템, 하드웨어 안전 시스템, 원격 정조 서비스 시스템, 생물 의학 전자 장치, 로봇 및 드론으로부터 선택된 어느 하나에 포함된다.
일부 실시예에 있어서, 메모리 시스템은, 데이터 입력; 멀티 레벨 셀(MLC) 배열; MLC 배열 및 데이터 입력에 전기적으로 커플링되는 기록 회로; 기록 회로에 전기적으로 커플링되는 그레이 코드로부터 이진 코드로의 디코딩 회로; MLC 배열에 전기적으로 커플링되는 판독 회로; 판독 회로 및 데이터 입력에 전기적으로 커플링되는 이진 코드로부터 그레이 코드로의 인코딩 회로; ECC 체크 비트를 저장하도록 구성되는 메모리 회로; 메모리 회로 및 이진 코드로부터 그레이 코드로의 인코딩 회로에 전기적으로 커플링되는 ECC 인코더; 메모리 회로 및 그레이 코드로부터 이진 코드로의 인코딩 회로에 전기적으로 커플링되고, 회복된 데이터를 출력하도록 구성되는 ECC 디코더; 및, 메모리 시스템 중의 데이터 회복을 제어하도록 구성되는 데이터 클리닝 컨트롤러; 를 포함한다.
일부 실시예에 있어서, MLC 배열은 메모리 유닛 회로를 포함하고, 2개 이상의 안정적인 물리적 상태를 가진다.
일부 실시예에 있어서, 메모리 유닛 회로는, NOR 유닛으로 구성된 플로팅 게이트 FLASH 유닛, NAND 유닛으로 구성된 플로팅 게이트 FLASH 유닛, NOR 유닛으로 구성된 전하 트랩 FLASH 유닛, NAND 유닛으로 구성된 전하 트랩 FLASH 유닛, 상변화 메모리(PCM) 유닛 및 저항 랜덤 액세스 메모리(RRAM) 유닛으로부터 선택된 어느 하나이다.
일부 실시예에 있어서, ECC 인코더 및 디코더는 해밍 코드, BCH 코드, 리드-솔로몬 코드 및 LDPC 코드로부터 선택된 어느 하나를 사용한다.
일부 실시예에 있어서, 메모리 회로 및 MLC 배열은 다른 집접회로에 위치한다.
일부 실시예에 있어서, 메모리 회로는 MLC 배열의 소정 파티션에 위치한다.
일부 실시예에 있어서, 데이터 클리닝 회로는 환경 간섭 감지에 대한 응답 또는 호스트로부터 수신된 명령에 대한 응답으로서, 소정 간격으로 데이터 클리닝 조작을 개시하도록 구성된다.
일부 실시예에 있어서, MLC에 대하여 데이터 클리닝을 수행하는 방법은, MLC로부터 데이터를 판독하되, 데이터는 이진 코드 또는 아날로그 값으로 표시하고; 데이터를 그레이 코드로 변환하며; ECC 체크 비트를 저장하도록 구성된 메모리 회로로부터 대응되는 체크 비트 데이터를 판독하고; 정정 가능 오류가 그레이 코드 형식의 데이터 중의 위치를 연산하여 정정하며; 정정된 데이터를 이진 코드 또는 정정된 아날로그 값으로 변환하고; 기록 회로를 통하여 정정된 데이터를 MLC 중의 데이터에 재기록하는 것; 을 포함한다.
일부 실시예에 있어서, MLC 배열은 메모리 유닛 회로를 포함하고, 2개 이상의 안정적인 물리적 상태를 가진다.
일부 실시예에 있어서, 메모리 유닛 회로는, NOR 유닛으로 구성된 플로팅 게이트 FLASH 유닛, NAND 유닛으로 구성된 플로팅 게이트 FLASH 유닛, NOR 유닛으로 구성된 전하 트랩 FLASH 유닛, NAND 유닛으로 구성된 전하 트랩 FLASH 유닛, 상변화 메모리(PCM) 유닛 및 저항 랜덤 액세스 메모리(RRAM) 유닛으로부터 선택된 어느 하나이다.
일부 실시예에 있어서, 상기 방법은, 해밍 코드, BCH 코드, 리드-솔로몬 코드 및 LDPC 코드로부터 선택된 어느 하나를 사용하여 ECC 인코딩 및 디코딩을 수행한다.
일부 실시예에 있어서, 메모리 회로 및 MLC 배열은 다른 집접회로에 위치한다.
일부 실시예에 있어서, 메모리 회로는 MLC 배열의 소정 파티션에 위치한다.
일부 실시예에 있어서, 상기 방법은 환경 간섭 감지에 대한 응답 또는 호스트로부터 수신된 명령에 대한 응답으로서, 소정 간격으로 데이터 클리닝 조작을 개시한다.
일부 실시예에 있어서, 메모리 시스템은 인공 지능 엣지 연산(edge-AI) 시스템, 데이터 센터의 신경망 유사 시스템, IoT 시스템, 자동자 전자 시스템, 마이크로 컨트롤러 시스템, 이동 통신 시스템, 프로그래밍 가능한 연산 시스템, 하드웨어 안전 시스템, 원격 정조 서비스 시스템, 생물 의학 전자 장치, 로봇 및 드론으로부터 선택된 어느 하나에 포함된다.
이하, 심사관이 본 발명의 기술적 특징을 더욱 잘 이해할 수 있도록, 첨부된 도면 및 실시예을 참조하여 본 발명을 상세하게 설명하고자 한다.
도 1은 실시예에 따른 메모리 시스템을 포함한 시스템을 도시한 것이다.
도 2는 실시예에 따른 데이터 메모리 및 ECC 메모리를 도시한 것이다.
도 3은 실시예에 따른 메모리 시스템의 조작 방법을 도시한 것이다.
도 4는 실시예에 따른 메모리 시스템의 조작 방법을 도시한 것이다.
도 5는 실시예에 따른 메모리 시스템을 도시한 것이다.
도 6은 실시예에 따른 데이터 코드 파티션을 도시한 것이다.
도 7은 실시예에 따른 메모리 시스템의 조작 방법을 도시한 것이다.
도 8은 실시예에 따른 메모리 시스템을 도시한 것이다.
도 9는 실시예에 따른 데이터 회복을 도시한 것이다.
도 10은 실시예에 따른 메모리 시스템의 조작 방법을 도시한 것이다.
도 11은 실시예에 따른 메모리 시스템을 포함한 시스템을 도시한 것이다.
도 12는 실시예에 따른 메모리 시스템을 포함한 연산 장치의 예를 도시한 것이다.
하기 실시예에 대한 설명에 있어서, 도면을 설명의 일부분으로 참조하여 예시 방식으로 실시 가능한 특정 실시예를 도시한다. 게시된 실시예의 범위를 벗어나지 않는 한, 다른 실시예가 사용될 수 있고, 구조적인 변경을 수행할 수 있다.
도 1은 메모리 시스템(100)을 포함한 메모리 시스템을 공개한 것이다. 일부 실시예에 있어서, 메모리 시스템(100)은 호스트(160) 및 메모리 컨트롤러(170)에 전기적으로 커플링된다. 일부 예에 있어서, 메모리 시스템(100)은 단일 결정 입자에 1GB 이상의 저장 공간을 포함할 수 있다.
일부 예에 있어서, 호스트(160) 또는 메모리 컨트롤러(170)는 데이터 클리닝 명령을 생성하여 메모리 시스템(100)에서 데이터 메모리에 대한 데이터 클리닝을 개시하거나, 또는 보호 명령을 생성하여 메모리 시스템(100)에서 데이터 메모리에 대한 보호를 개시할 수 있다. 일부 예에 있어서, 호스트(160) 또는 메모리 컨트롤러(170)를 통하여 데이터 클리닝 개시 명령을 생성하는 조건을 절차화할 수 있다. 일부 예에 있어서, 호스트(160) 또는 메모리 컨트롤러(170)를 통하여 보호 개시 명령을 생성하는 조건을 절차화할 수 있다.
예시적인 장점으로서, 메모리 시스템(100)은 효율적인 오류 정정 및 데이터 클리닝을 실현할 수 있다. 예를 들면, 하기에 설명된 바와 같이, 메모리 시스템(100)의 예시적인 실시예와 게시된 데이터 클리닝 명령을 사용하지 않은 메모리 시스템을 비교할 때, 특정 조건(예를 들면 변화하는 환경)에 응답하여 2 내지 4배의 전력 소모를 줄일 수 있는 동시에 실질적인 성능을 낮추거나 면적을 늘릴 필요가 없다. 게시된 데이터 클리닝 명령을 사용하지 않거나 또는 게시된 보호 명령을 사용하지 않은 메모리 시스템은 클리닝 또는 보호가 필요 없는 경우(예를 들면 비트 오류율이 시스템의 요구를 만족시키는 경우)에도 데이터 클리닝 또는 보호를 수행할 가능성이 있다. 이러한 메모리 시스템은 무차별하게 데이터를 보호 또는 클리닝하기 때문에(예를 들면 시스템 파워온 또는 파워오프 기간), 조작 효율의 인하(예를 들면 전력 소모가 비교적 높거나, 속도가 비교적 느린 현상)를 초래할 수 있다. 일부 예에 있어서, 효율의 향상을 통하여 MRAM이 스핀 전달 토크(STT)를 사용하여 기록 조작을 수행하기 위한 설계 요구 사항을 낮출 수 있다. 다른 일 예에 있어서, 비교적 간단한 MTJ 제조 과정(예를 들면 장치 제조 원가 절감)을 사용함으로써 데이터 보존 오류를 줄일 수 있다. 또 다른 일 예에 있어서, 메모리 시스템(100)을 사용함으로써 MRAM 장치의 요구 사항을 낮추어 선형 크기를 70%까지 줄일 수 있다.
본문에 사용되는 "데이터 클리닝 명령(scrub data command)"은 데이터 메모리에 대한 데이터 클리닝 조작을 개시하도록 구성된 명령으로서, 특정 조건의 만족 여부 판정을 통하여 데이터 클리닝 명령을 생성하고 데이터 클리닝 회로에 전송할 수 있다. 상기와 같은 특정 조건은 정상적인 조작 기간에 인식되는 조건으로서, 예를 들면 환경 조건, 시간 경과, 및 기지 데이터 중의 변화(예를 들면 본문의 설명과 같이)일 수 있다. 정상적인 조작은 판독 및 기록 조작, 열 시동 및 프리차지 작업, 업데이트 작업, 섹터 기록 및 지우기 작업, 결함 회복 조작, 및 사용 평준화(wear-leveling) 조작을 포함할 수 있으나, 이에 한정되는 것은 아니다. 상기와 같은 특정 조전을 만족시키지 않을 경우, 데이터 클리닝 명령을 생성하지 않음으로써, 불필요한 데이터 클리닝을 방지할 수 있다. 예를 들면, 종래의 메모리 시스템에 있어서, 시스템 파워온 또는 파워오프 기간에 자동적으로 데이터를 클리닝할 수 있다. 게시된 메모리 시스템은, 데이터 클리닝 명령을 수신하였을 때에만 응답하여 데이터를 클리닝하고; 파워온 또는 파워오프로만은 데이터 클리닝 명령이 생성되지 않을 수 있다.
본문에 사용된 "보호 명령(protect command)"은 데이터 메모리의 데이터 보호를 개시하도록 구성된 명령이다. 특정 조건의 만족 여부 판정을 통하여 보호 명령을 생성하고 데이터 클리닝 회로에 전송할 수 있다. 상기와 같은 특정 조전을 만족시키지 않을 경우, 보호 명령을 생성하지 않음으로써, 불필요한 인코딩을 방지할 수 있다. 예를 들면, 종래의 메모리 시스템에서, 사전 설정값에 의하여 데이터를 보호할 수 있다. 게시된 메모리 시스템은, 보호 명령을 수신하였을 때에만 응답하여 데이터를 보호할 수 있다.
예를 들면, 메모리 시스템(100)에 포함된 고성능 MRAM은 효율적으로 보호 및 클리닝을 수행할 수 있고, 더욱 빠른 속도와 더욱 높은 효율의 메모리를 요구(예를 들면 높은 대역폭 및 낮은 지연 시간, 신경망 유사 모델 압축 후 여전히 높은 성능을 가짐, 고온 환경에서도 고성능 및 중단 없이 데이터를 액세스할 수 있음)하는 인공 지능 엣지 연산(edge-AI)(예를 들면 스마트 스피커, 드라이빙 레코더, 드록, 로봇, 자율 주행 자동차) 또는 신경망 유사 응용에 더욱 효과적으로 적용될 수 있다. 기록 메커니즘이 비확정적인 메모리 기술은 높은 비트 오류율(BER)의 문제를 직면하게 된다. 메모리 시스템(100)은 게시된 데이터 클리닝 및 보호 방법을 사용함으로써, 자율 주행 자동차와 같은 시스템에서 더욱 안정적인 조작이 가능하도록 할 수 있다.
메모리 시스템(100)은 데이터 클리닝 회로(110), 데이터 메모리(120) 및 ECC 메모리(130)를 포함한다. 일부 실시예에 있어서, 데이터 메모리(120)는 컴퓨터 시스템 중의 랜덤 액세서 메모리(RAM)이다. 일부 실시예에 있어서, 데이터 메모리(120) 및 ECC 메모리(130)는 비휘발성 RAM이다.
일부 실시예에 있어서, 데이터 클리닝 회로(11)는 데이터 클리닝을 수행하는 과정 중, 데이터 메모리(12)의 판독 및 기록 액세스에 영향을 주지 않을 수 있다. 메모리 데이터를 액세스하는 동시에 데이터 보호 또는 데이터 클리닝을 수행함으로써, 메모리 오류(예를 들면 가지 터널 접합(MTJ) 오류)를 줄일 수 있고, 관건 회로의 지연을 증가하지 않을 수 있다(예를 들면 비교적 높은 판독 및 기록 속도로 데이터를 클리닝하고, 정격 판독 및 기록 속도에 영향을 주지 않은 상황 하에 데이터를 클리닝함). 예를 들면, 지연 감소는 메모리 시스템이 초당 TB의 대역폭에서 조작하도록 허용할 수 있다.
일부 실시예에 있어서, 데이터 클리닝 회로(110)는 ECC 디코더 회로 및 로컬 버퍼를 포함하여, 코드 워드 내의 ECC 코드에 관련되는 현재 위치를 일시적으로 기록할 수 있다. 일부 실시예에 있어서, 데이터 메모리(120)는 복수의 서브 회로로 구분되고, 통상적으로 메모리 뱅크로 불리운다. 각 메모리 뱅크는 기타 메모리 뱅크와 독립적으로 조작하도록 구성된다.
일 예로, 데이터 보호 또는 클리닝 조작 기간에, 메모리 시스템(100)은 호스트(예를 들면 인공 지능 엣지 연산(edge-AI) 시스템)으로부터 데이터 액세스 명령을 수신할 수 있다. 진행 중인 데이터 보호 또는 데이터 클리닝 조작이 하나의 메모리 뱅크에서 수행될 때, 데이터 액세스 명령은 다른 하나의 데이터 메모리 뱅크 상의 조작(예를 들면 데이터 판독, 데이터 기록)에 관련된다. 상기와 같은 경우, 진행 중인 데이터 보호 또는 데이터 클리닝 조작은 데이터 액스세와 동시에 진행될 수 있다.
진행 중인 데이터 보호 또는 데이터 클리닝 조작이 동일한 데이터 메모리 뱅크에서 수행될 때, 데이터 액세스 명령은 데이터 메모리 뱅크 상의 조작(예를 들면 데이터 판독, 데이터 기록)에 관련된다. 상기와 같은 경우, 데이터 클리닝 컨트롤러(113)는 데이터 보호 또는 데이터 클리닝 조작을 일시적으로 정지하고, 데이터 메모리 뱅크에 대한 제어권을 예를 들면 판독 조작 또는 기록 조작과 같은 데이터 액세스 조작에 넘겨줄 수 있다. 데이터 액세스 조작을 완성한 후, 데이터 클리닝 컨트롤러는 데이터 메모리 뱅크에 대한 제어권을 다시 넘겨받아 일시적으로 정지되었던 데이터 보호 또는 데이터 클리닝 조작을 중단 전 ECC 코드 워드의 위치(예를 들면 대응되는 주소)로부터 재시작할 수 있다. 일부 예에 있어서, 상기 기간 내에, 데이터 클리닝 컨트롤러(113)는 다른 메모리 뱅크에서 데이터 보호 또는 데이터 클리닝 조작을 수행할 수 있다.
일부 예에 있어서, 데이터 클리닝 회로 또는 호스트(예를 들면 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 시스템 온 칩(SoC), 프로그래밍 가능 프로세서, 주문형 집적회로, 또는 마이크로 컨트롤러)는 데이터 메모리가 보호를 받고 있는지 판단(예를 들면 데이터 클리닝 회로 또는 호스트가 ECC 메모리 중의 버퍼를 검사하여 대응되는 구간이 오류 정정 보호를 받고 있는지 확인)하도록 구성되고, ECC 메모리는 데이터 메모리가 보호를 받고 있다고 판단한 경우에 ECC 체크 비트를 저장하며, 데이터 메모리가 보호를 받고 있지 않는다고 판단한 경우에 연산 데이터를 저장하도록 구성된다. 예를 들면, 데이터 메모리 중의 연산 데이터가 보호를 받지 않는 경우(예를 들면 ECC가 필요하지 않음), ECC 메모리는 추가적인 연산 데이터를 저장하기 위하여 사용될 수 있다. 도면에 도시된 바와 같이, 데이터 클리닝 회로는 ECC 메모리 및 데이터 메모리에 전기적으로 커플링된다. 예시적인 장점으로서, 제품이 가혹한 환경에서 사용되지 않을 것으로 예상되는 경우(예를 들면 고온 또는 강한 자기장 환경에서 사용되는 않는 웨어러블 전자기기), ECC 메모리의 데이터 저장 용량을 호스트 시스템에 넘겨줄 수 있다.
일부 예에 있어서, ECC 메모리는 제1 시간에는 연산 데이터를 저장하고, 데이터 보호 명령의 개시에 응답하여 ECC 메모리를 업데이트하여 ECC 체크 비트를 저장하도록 구성된다. 상기와 같은 예에 있어서, 연산 데이터를 데이터 메모리 중의 공백 구역, 시스템 중의 다른 저장 장치로 이동하거나, 또는 데이터 네트워크를 통하여 원격 저장 장치로 이동할 수 있다. 상기와 같은 방식이 모두 사용 불가능한 경우, 메모리 시스템은 호스트로 오류 정보를 송신할 수 있다.
일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리는 다른 메모리 회로에 포함된다. 예를 들면, 데이터 메모리 및 ECC 메모리는 다른 칩에 포함된다. 일부 실시예에 있어서, 데이터 메모리 및 ECC 메모리는 같은 메모리 회로에 포함된다. 예를 들면, 데이터 메모리 및 ECC 메모리는 같은 칩에 포함된다. 다른 일 예에 있어서, 데이터 메모리 및 ECC 메모리는 같은 메모리 배열에 포함된다. 예를 들면, 데이터 메모리는 배열의 제1 부분에 포함되고, ECC 메모리는 배열의 제2 부분에 포함된다.
본문에 기재된 바와 같은 고효율 오류 정정 및 데이터 클리닝의 장점을 달성함으로써, 메모리 유닛은 재기록 내구성 또는 성능을 향상하고, 전력 소모를 줄이거나, 또는 상기 특성의 조합 효과를 실현하도록 구성될 수 있다. 이는 메모리 시스템의 오류율을 줄이지 않고도 달성할 수 있다(예를 들면 게시된 시스템의 고효율 오류 정정 및 데이터 클리닝은 적어도 상기와 같은 특성에 관련되는 오류율의 증가를 해소할 수 있다).
예를 들면, 기록 조작의 전압 수준을 5 내지 50% 낮출 수 있고, 메모리 시스템의 오류율을 줄이지 않는 상황 하에, 메모리 유닛의 재기록 내구성을 향상하고 전력 소모를 줄일 수 있다(예를 들면 추가적인 전력 설계가 없고, 기록 조작 기간 내의 오작동 가능성을 줄이지 않는 상황 하에, 기록 전압 또는 기록 시간만으로도 장치와 회로 사이의 불일치 및/또는 랜덤 STT 효과를 줄일 수 있다). 다른 일 예에 있어서, 기록 유닛의 판독 조작의 전압 수준을 5 내지 50% 높이거나, 또는 판독 시간을 5 내지 50% 낮출 수 있고, 메모리 시스템의 오류율을 줄이지 않는 상황 하에, 판독 성능을 향상시킬 수 있다(예를 들면 추가적인의 전력 설계가 없는 상황 하에, 판독 전압 또는 판독 시간만으로도 장치와 회로 사이의 불일치 및 판독 간섭 오류를 줄일 수 있다). 일부 예에 있어서, 1MB 배열을 사용하는 경우, 판독 성능을 초당 7GB 이상으로 향상시킬 수 있다.
일부 실시예에 있어서, 데이터 메모리는 일부분 자성 랜덤 액세스 메모리(MRAM)을 포함할 수 있다. 일부 실시예에 있어서, ECC 메모리도 일부분 MRAM을 포함할 수 있다. 일부 예에 있어서, 데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자기 터널 접합(MTJ)을 갖는 메모리 유닛을 사용하고, 10-12 내지 10-2 사이의 비트 오류율을 갖는 메모리 유닛에 비하여, 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 하나를 갖는다. 일부 예에 있어서, 데이터 메모리 및 ECC 메모리는 크기가 20 나노미터 내지 200 나노미터 사이인 MTJ 및 종횡비가 1 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
일부 실시예에 있어서, 데이터 메모리는 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM) 또는 임베디드 DRAM(eDRAM)을 포함할 수 있다. 일부 실시예에 있어서, ECC 메모리는 SRAM, DRAM 또는 eDRAM을 포함할 수 있다. 예를 들면, SRAM, DRAM 또는 eDRAM은 메모리 유닛을 포함할 수 있고, 서브마이크로미터(예를 들면 28 나노미터 및 그 이하)의 기술로 제조되며, 비트 오류율이 10-16 내지 10-10 사이이다. 따라서, 메모리 시스템(100)은 전력, 면적, 성능 또는 소프토 오류율(예를 들면 판독 간섭, 기록 오류, 보존 오류) 등 측면의 최적화를 희생하지 않고도 SRAM, DRAM 또는 eDRAM 공법 기술을 비교적 작은 기술 노드로 축소할 수 있다. 또한, 메모리 시스템(100)을 사용함으로써 비교적 작은 기술 노드의 SRAM, DRAM 또는 eDRAM은 더욱 광범위한 온도 구간에서 작동하고 복사에 더욱 강하게 견딜 수 있다.
일부 실시예에 있어서, 데이터 클리닝 회로는 수신된 데이터 클리닝 명령에 대한 응답으로서, 메모리 중의 오류를 정정하도록 구성된다. 데이터 메모리가 데이터 클리닝이 필요하지 않는 경우(예를 들면 비트 오류율(예를 들면 사용 가능 비트 오류율(UBER)이 시스템 요구를 충분히 만족하는 경우)에도, 게시된 데이터 클리닝 명령을 사용하지 않은 메모리 시스템을 데이터를 클리닝할 수 있다. 이러한 메모리 시스템은 무차별하게 데이터를 클리닝하기 때문에 효율의 인하(예를 들면 전력 소모가 비교적 높거나, 속도가 느려지는 현상)를 초래할 수 있다. 수신된 데이터 클리닝 명령에 대한 응답으로서, 데이터 메모리 중의 오류를 정정하도록 구성되는 데이터 클리닝 회로를 포함함으로써, 효과적으로 데이터를 클리닝하고 불필요한 클리닝을 방지할 수 있다.
일부 실시예에 있어서, 오류를 정정하기 위하여 사용되는 코드 워드의 길이는 데이터 메모리의 정상적인 액세스 과정 중에 사용되는 워드 길이보다 길다. 예를 들면, 정상적인 액세스 기간의 블록은 ECC 코드 워드의 일부분으로서, 상기와 같은 블록이 ECC의 보호를 받도록 한다. 다시 말하면, 정상적인 액세스 기간(예를 들면 정상 액세스 워드 부분 액세스)에서는 전반 ECC 코드 워드를 사용하지 않는다. 기록 조작을 처리하기 위하여 여러가지 방법을 사용할 수 있는 바, 예를 들면, 코드 워드의 길이는 8192비트의 길이를 가질 수 있고, 인코딩 되지 않은 워드는 64비트의 길이를 가질 수 있다.
일부 실시예에 있어서, 데이터 메모리(120)는 복수의 페이지로 구분되고, 각 페이지는 ECC 코드 워드 길이의 크기(예를 들면 8192비트)를 가진다. 호스트(예를 들면 인공 지능 엣지 연산(edge-AI) 시스템)가 데이터 워드(예를 들면 길이가 64비트인 워드)를 포함한 기록 명령을 발송한 경우, 데이터 클리닝 컨트롤러(113)는 각 페이지 중의 추가적인 비트(예를 들면 페이지 표기 비트)를 사용하여 데이터 워드의 목표 페이지를 "미보호(unprotected)"로 표기한다. 데이터 클리닝 컨트롤러(113)가 "미보호" 페이지에서 데이터 클리닝 조작을 시작할 때, 대응되는 ECC 메모리(130) 중의 ECC 체크 비트 데이터를 바로 사용하지 않는다. 이와 반대로, 데이터 클리닝 컨트롤러는 우선 보호 조작을 수행하여 새로운 페이지 데이터와 대응되는 한 조의 ECC 체크 비트를 생성하고, 데이터 클리닝 조작을 수행하기 전에 페이지 표기 비트를 "미보호(unprotected)"로부터 "보호(protected)"로 업데이트한다.
예시작인 장점으로서, 오류 정정 기간에 있어서, 비교적 긴 코드 워드 길이는 효율을 향상시킬 수 있는 바, 다시 말하면, 비교적 적은 수량의 ECC 체크 비트만으로도 원시 비트 오류율(RBER)을 필요한 UBER로 수정할 수 있다. 따라서, 메모리 시스템의 크기를 줄이고 원가를 절감할 수 있다.
일부 실시예에 있어서, 데이터 클리닝 회로(110)는 데이터 버퍼(111), ECC 연산 엔진(112) 및 데이터 클리닝 컨트롤러(113)를 포함한다. 데이터 클리닝 회로는 코드 워드 길이에 관련되는 코드 워드를 사용하여 데이터 메모리 중의 오류를 정정하도록 구성된다.
예를 들면, 데이터 클리닝 명령을 개시할 때, 데이터 메모리(120)로부터 ECC 코드에 관련되는 모든 데이터 페이지(예를 들면 ECC 페이지)를 판독하고, ECC 메모리(130)로부터 상기 ECC 페이지에 관련되는 ECC 체크 비트를 판독한다. 이어서, 데이터 버퍼(111)를 통하여 데이터 워드와 ECC 체크 비트를 ECC 연산 엔진(112)으로 발송한다. 일부 예에 있어서, 데이터 버퍼(111)는 선입선출(FIFO) 메모리로 구성될 수 있다. 일부 예에 있어서, ECC 연산 엔진(112)이 ECC 디코딩 조작을 수행하고 있는 경우, 데이터 메모리(120) 중의 데이터 워드를 판독하는 정상적인 데이터 액세스(예를 들면 호스트 또는 메모리 컨트롤러부터 수신된 판독 청구)를 일시적으로 정지할 수 있다. ECC 연산 엔진(112)이 ECC 페이지를 디코딩한 후, 정정 가능 오류가 감지된다. 이어서, ECC 연산 엔진이 감지한 오류의 수량 및 위치를 데이터 클리닝 컨트롤러(113)로 송신할 수 있다. 정확한 데이터를 데이터 메모리(120) 중의 대응되는 위치에 재기록함으로써(예를 들면 데이터 클리닝 컨트롤러를 사용하여), 모든 감지된 오류를 정정할 수 있다.
도 2는 실시예에 따른 데이터 메모리 및 ECC 메모리를 도시한 것이다. 일부 실시예에 있어서, ECC 메모리(230)는 복수의 파티션을 포함하고, 데이터 메모리는 복수의 메모리 주소 범위를 포함하며, 각 파티션은 데이터 메모리 중의 하나의 메모리 주소 범위에 대응된다. 예를 들면, ECC 메모리는 ECC 체크 비트 파티션(231)을 포함하고, 데이터 메모리는 ECC 코드 워드(221)를 포함한다. ECC 체크 비트 파티션(231)은 ECC 코드 워드(221)에 관련되는 하나의 메모리 주소 범위에 대응될 수 있다.
일부 실시예에 있어서, ECC 체크 비트 파티션은 복수의 ECC 비트를 포함하고, ECC 비트의 수량은 데이터 클리닝 알고리즘에 관련되는 ECC 인코딩 방법을 기반으로 한다. 예를 들면, 데이터 클리닝 알고리즘은 Bose, Chaudhuri 및 Hocquenghem(BCH) 코드 및 저밀도 패리티 체크(LDPC) 코드 중의 하나이다. 일 예에 있어서, BCH(8640, 8192, 32) 코드 중, 448개 ECC 비트는 8192비트 중의 각 ECC 코드 워드(예를 들면 ECC 페이지)에 관련되고, ECC 코드 워드 중의 오류를 최대 32개 까지 정정할 수 있다. 예시적인 장점으로서, 상기 인코딩 방안을 실현하기 위하여 5.2%의 면적을 사용하여 ECC 체크 비트를 저장하여야 하고, 이에 비하여, 64비트 워드에서 2비트 ECC를 사용하는 시스템에서는 20% 이상의 면적을 사용하여야 한다.
예를 들어, 이하에서는 BCH 인코딩의 예를 설명하고자 한다. 데이터 클리닝 회로를 사용하여 BCH 인코딩 및 디코딩을 수행한다. n-k 차원 상태 벡터 R(t) = (rn-k-1(t), rn-k-1(t), ... , r1(t), r0(t))T, 그 중, r i (t)는 제i 개 알림 버퍼가 시간 t에서의 상태를 의미하고, u(t)는 시간 t에서의 단일 비트 입력을 의미한다. R(t + 1)는 하기와 같이 표시된다.
,
그 중, 행렬 A는
(2)
벡터 b는
(3) b = (gn-k-1, gn-k-2,..., g1, g0)T.
재귀적으로, R(t + p)는 하기와 같이 계산된다.
일부 실시예에 있어서, ECC 메모리는 한 조의 버퍼를 포함한다. 각 버퍼는 하나의 ECC 코드 워드에 대응된다. 각 ECC 코드 워드는 데이터 메모리 중의 하나의 구간에 대응된다. 각 버퍼는 상기 구간의 상태를 저장한다. 예를 들면, 버퍼는 페이지 표기 비트를 저장할 수 있다.
일부 실시예에 있어서, 데이터 메모리(220)는 대체적으로 데이터 메모리(120)와 유사하고, ECC 메모리(230)는 대체적으로 ECC 메모리(130)와 유사하다. 비록 블록으로 데이터 메모리 및 ECC 메모리를 도시하였지만, 본 발명의 범위를 벗어나지 않는 한, 데이터 메모리 및 ECC 메모리는 하나 또는 복수의 메모리 배열에 포함될 수 있다.
일부 실시예에 있어서, 메모리 시스템(100)은 환경 조건을 감지하고 감지된 환경 조건을 기반으로 데이터 클리닝 명령을 생성하도록 구성되는 환경 간섭 센서(140)를 포함한다. 일부 실시예에 있어서, 환경 조건은 온도 및 자기장으로부터 선택된 적어도 하나를 포함한다. 일부 실시예에 있어서, 환경 간섭 센서는 데이터 클리닝 컨트롤러(예를 들면 데이터 클리닝 컨트롤러(113))에 포함된다.
예를 들면, 환경 간섭 센서는 온도의 임계값(예를 들면 임계 비트 오류율에 관련되는 임계 온도) 도달 여부를 감지한다. 온도가 임계값에 도달하였음이 감지되였을 때, 이에 응답하여 데이터 클리닝 컨트롤러는 데이터 클리닝 명령을 형성하여 데이터 메모리의 데이터 클리닝을 개시한다.
다른 일 예에 있어서, 환경 간섭 센서는 자기장의 임계값(예를 들면 임계 비트 오류율에 관련되는 임계 자기장 강도) 도달 여부를 감지한다. 자기장이 임계값에 도달하였음이 감지되였을 때, 이에 응답하여 데이터 클리닝 컨트롤러는 데이터 클리닝 명령을 형성하여 데이터 메모리의 데이터 클리닝을 개시한다.
일부 실시예에 있어서, 데이터 클리닝 회로는 기지 데이터(예를 들면 호스트 또는 메모리 시스템(100)의 기지 데이터, 소정 데이터(예를 들면 0과 1이 교체로 배치된 바둑판형 데이터)) 중의 변화를 감지하고, 감지된 변화를 기반으로 데이터 클리닝 명령을 생성하도록 구성된다. 예를 들면, MRAM은 강한 자기장(예를 들면 100 내지 1000 에르스텟(Oersted) 이상의 자기장)에 민감하고, 강한 자기장은 기지 데이터에 관련되는 오류 가능성을 증가시킨다.
다른 일 예에 있어서, 메모리는 고온(예를 들면 150 섭씨도 이상의 온도)에 민감하고, 고온은 메모리에 관련되는 오류 가능성을 증가시킨다. 환경 간섭 센서는 온도의 특정 온도 임계값 도달 여부를 감지하고, 데이터 클리닝 개시 명령을 생성하여 고온으로 인하여 초래된 오류 데이터를 정정할 수 있다.
비록 자기장 및 온도를 예시적인 변수로 사용하여 메모리에 관련되는 오류 가능성을 증가시킬 수 있는 환경 조건 검측을 설명하였으나, 환경 간섭 센서는 기타 조건을 감지할 수도 있다. 예를 들면, 환경 간섭 센서는 전리 방사선을 감지할 수 있고, 전리 방사선은 전하로 인한 메모리 회로 데이터 손실을 초래할 수 있다. 다른 일 예에 있어서, 환경 간섭 센서는 기계적 응력 오프셋을 감지할 수 있다.
예시적인 장점으로서, 센서 및 프로그래밍 가능한 폐쇄 루프 제어는 메모리(예를 들면 MRAM)를 관리하여 고온, 온도 파동, 자기장 또는 기타 간섭으로 인한 영향을 줄일 수 있다. 따라서, 보상 회로를 추가하지 않는 상황 하에, 비교적 높은 온도에서 또는 비교적 광범위한 온도 범위에서 조작이 가능하고 내구성을 향상시킬 수 있다. 예를 들면, 실온에 가까운 환경에서, 환경 간섭 센서는 데이터 클리닝이 수행할 필요가 전혀 없다고 판단할 수 있다(예를 들면 클리닝에 0%의 메모리를 사용). 하지만 125 섭씨도에서는, 60%의 고유 보유 능력(intrinsic retention capability)을 갖는 메모리 장치(MTJ 포함)는 2%의 추가적인 액세스 조작만으로도 모든 데이터를 클리닝할 수 있다. 이에 비하여, 기타 시스템은 약 20%의 추가적인 조작을 수행하여야만 유사한 상황에서 오류를 정정할 수 있다.
일부 실시예에 있어서, 메모리 시스템(100)은 경과된 시간을 추적하고, 경과된 시간이 타이밍 임계값을 초과하는지 판단하며, 경과된 시간이 타이밍 임계값 이상으로 판단되는 경우 데이터 클리닝 명령을 생성하도록 구성되는 타이머 회로(150)를 더 포함한다. 예를 들면, 메모리의 비트 오류율(BER)과 시간은 비례적으로 증가하고(예를 들면 BER는 누적되는 것임), 또한 타이밍 임계값은 임계 BER(예를 들면 시스템 BER 요구)에 대응된다. 타이머 회로(150)는 시작 시간(즉 ECC 체크 비트의 생성 시간) 이후의 경과 시간(예를 들면 1마이크로초 내지 100시간 사이)을 추적하고, 데이터 메모리에 누적된 BER가 ECC 방법으로 정정하지 못할 정도에 이르기 전에 데이터 클리닝 개시 명령을 생성한다. 일부 실시예에 있어서, 타이머 회로(150) 데이터 클리닝 컨트롤러(예를 들면 데이터 클리닝 컨트롤러(113))에 포함된다.
도 3은 실시예에 따른 메모리 시스템의 조작 방법(300)을 도시한 것이다. 방법(300)은 데이터 보호 명령을 수신하는 302 단계를 포함한다. 예를 들면, 데이터 클리닝 회로(110), 호스트(160) 또는 메모리 컨트롤러(170)로부터 보호 명령을 수신한다. 다른 일 예에 있어서, 데이터 메모리의 보호가 필요하다고 판단(예를 들면 온도, 자기장, 타이밍 임계값, 비트 오류율 임계값 도달)한 후, 보호 명령을 수신한다.
예시적인 장점으로서, 메모리 시스템은 효율적인 오류 정정 및 데이터 클리닝을 실현할 수 있다. 예를 들면, 게시된 데이터 클리닝 명령 또는 게시된 보호 명령을 사용하지 않는 메모리 시스템에 비하여, 메모리 시스템(100)의 예시적인 실시예는 실질적인 성능을 낮추거나 면적을 증가하지 않고도 전력 소모를 4배 줄일 수 있다. 게시된 데이터 보호 명령을 사용하지 않은 메모리 시스템은 보호가 필요 없는 경우(예를 들면 비트 오류율이 이미 시스템의 요구를 만족시킬 때)에도 데이터 보호를 수행할 가능성이 있다. 이러한 메모리 시스템은 무차별하게 데이터를 보호하기 때문에, 효율이 떨어질 수 있다(예를 들면 전력 소모가 비교적 높거나 속도가 느려짐). 예를 들면, 보호 명령이 수신되지 않았을 때, 데이터 클리닝 회로 또는 ECC 체크 비트를 저장하는 메모리의 일부분 또는 전부가 셧다운될 수 있다. 데이터 보호 명령을 사용함으로써, 효과적으로 데이터를 보호할 수 있고, 불필요한 보호를 방지할 수 있다.
일부 실시예에 있어서, 수신된 보호 명령에 대한 응답으로서, 보호 대기 데이터 중의 각 데이터 워드에 대하여 방법(300)을 수행한다(304 단계). 예를 들면, 각 보호 대기 데이터 워드는 데이터 메모리(120)의 일부분일 수 있는 바, 예를 들면 데이터 메모리 중 비교적 민감한 비트 오류율을 갖는 일부분일 수 있다. 다른 일 예에 있어서, 각 보호 대기 데이터 워드는 데이터 메모리(120)의 전체일 수 있다. 일부 실시예에 있어서, 순환적으로 복수의 워드를 보호할 수 있다. 일부 실시예에 있어서, 병렬적으로 복수의 워드를 보호할 수 있다.
일부 실시예에 있어서, 방법(300)은 상기 데이터 워드에 관련되는 데이터 코드 워드의 주소를 인식하는 306 단계를 포함한다. 예를 들면, 보호 명령은 보호 대기 데이터에 관련되는 주소 범위를 포함한다. 다른 일 예에 있어서, 호스트가 ECC 코드 워드(221)에 관련되는 주소(예를 들면 호스트가 메모리 중 시스템 기능에 대하여 비교적 중요한 부분을 판정)를 인식한다.
일부 실시예에 있어서, 방법(300)은 주소에 의하여 데이터 워드가 데이터 메모리에 저장되었는지 판단하는 308 단계를 포함한다. 예를 들면, 보호 명령에 데이터 워드가 데이터 메모리에 저장되었는지 지시하는 비트를 추가한다. 다른 일 예에 있어서, 데이터 클리닝 회로(110)는 보호 대기 데이터 워드가 데이터 메모리(120)에 저장되었는지 판단한다.
일부 실시예에 있어서, 방법(300)은 데이터 워드가 데이터 메모리에 저장되었다고 판단한 경우의 응답으로서, 데이터 메모리로부터 데이터 워드를 판독하는 310 단계를 포함한다. 예를 들면, 판독된 데이터는 버퍼 메모리에 저장된다. 다른 일 예에 있어서, 데이터 클리닝 회로(110)는 보호 대기 데이터 워드가 데이터 메모리(120)에 저장되었다고 판단한 경우, 데이터 메모리(120)로부터 보호 대기 데이터 워드를 판독한다.
일부 실시예에 있어서, 방법(300)은 데이터 워드가 데이터 메모리에 저장되지 않았다고 판단한 경우의 응답으로서, 데이터 워드를 수신(312a 단계)하고, 데이터 워드를 데이터 메모리에 기록(312b 단계)하는 312 단계를 포함한다. 예를 들면, 데이터 클리닝 회로(110)는 데이터 워드가 데이터 메모리(120)에 저장되지 않았다고 판단한 경우 데이터 워드를 데이터 메모리(120)에 기록한다. 일부 실시예에 있어서, 기록 및 보호 대기 데이터 워드는 호스트(160)로부터 제공될 수 있다.
일부 실시예에 있어서, 방법(300)은 데이터 워드에 대하여 ECC 인코딩 연산을 수행하는 314 단계를 포함한다. 예를 들면, 데이터 클리닝 알고리즘을 기반으로, 보호 대기 데이터 워드를 데이터 클리닝 알고리즘에 관련되는 ECC 인코딩 알고리즘에 의하여 인코딩한다.
일부 실시예에 있어서, 방법(300)은 ECC 인코딩 연산을 기반으로 데이터 코드 워드를 생성하는 316 단계를 포함한다. 예를 들면, ECC 임코딩 연산을 기반으로 ECC 코드 워드(221)를 생성한다.
일부 실시예에 있어서, 방법(300)은 상기 주소에 데이터 코드 워드를 데이터 메모리로 기록하는 318 단계를 포함한다. 예를 들면, 상기 주소에 ECC 코드 워드(221)를 데이터 메모리(220)에 기록한다.
일부 실시예에 있어서, 방법(300)은 ECC 인코딩 연산에 의하여 ECC 체크 비트를 생성하는 320 단계를 포함한다. 예를 들면, ECC 인코딩 연산에 의하여, ECC 체크 비트 파티션(221)에 관련되는 ECC 체크 비트를 생성한다.
일부 실시예에 있어서, 방법(300)은 생성된 ECC 체크 비트를 ECC 메모리 중의 대응되는 파티션에 기록한다. 예를 들면, ECC 체크 비트를 ECC 체크 비트 파티션(221)에 기록한다. 일부 실시예에 있어서, 보호 명령의 지시를 완성하여 데이터 메모리를 보호한 후, 호스트로 완성 신호를 발송한다.
일부 실시예에 있어서, 집적회로의 패킹 조작 전에 방법(300)을 수행하여 집적회로의 메모리에 기록된 데이터를 보호한다. 예시적인 장점으로서, 방법(300)을 사용하는 메모리 시스템은 장기적인 저장이 필요하거나, 또는 표준 패키징 방법 과정(예를 들면 260℃, 90초)을 수행하여야 하는 경우에 특히 효과적으로 적용될 수 있다. 예를 들면, MRAM 및 PCM과 같은 비휘발성 메모리에 저장되는 데이터는 패키징 조작 후에 비교적 높은 오류율을 가질 수 있다.
일부 실시예에 있어서, 집적회로를 장기간 저장한 후 방법(300)을 수행하여 집적회로의 메모리에 기록된 데이터를 보호한다. 생성된 ECC 체크 비트를 이용하여, 저장 기간 내에 누적된 오류를 제거하고, 제품의 데이터 보존 사양을 향상시킬 수 있다.
도 4는 실시예에 따른 메모리 시스템의 조작 방법(400)을 도시한 것이다. 방법(400)은 데이터 클리닝 명령을 수신하는 402 단계를 포함한다. 예를 들면, 데이터 클리닝 회로(110), 호스트(160) 또는 메모리 컨트롤러(170)로부터 데이터 클리닝 명령을 수신한다. 다른 일 예에 있어서, 임계값(예를 들면 온도, 자기장, 타이밍 임계값, 비트 오류율 임계값)에 도달한 후, 데이터 클리닝 컨트롤러는 데이터 클리닝 명령을 송신한다.
예시적인 장점으로서, 메모리 시스템은 효율적인 오류 정정 및 데이터 클리닝을 실현할 수 있다. 예를 들면, 게시된 데이터 클리닝 명령을 사용하지 않는 메모리 시스템에 비하여, 상기에 설명한 바와 같이, 특정 조건에 대한 응답으로서, 실질적인 성능을 희생하거나 또는 면적을 증가하지 않는 상황 하에, 메모리 시스템(100)의 예시적인 실시예는 전력 소모를 4배 줄일 수 있다. 게시된 데이터 클리닝 명령을 사용하지 않는 메모리 시스템은 클리닝이 필요하지 않는 상황(예를 들면 오류율이 시스템 요구에 도달하였을 때)에서도 데이터를 클리닝하거나 보호할 가능성이 있다. 이러한 메모리 시스템은 무차별하게 데이터를 클리닝하기 때문에, 효율이 떨어질 수 있다(예를 들면 전력 소모가 비교적 높거나 속도가 느려짐). 예를 들면, 일부분 또는 전부 데이터 클리닝 회로 또는 ECC 체크 비트를 저장하는 메모리는 데이터 클리닝 명령을 수신하지 않았을 때 셧다운될 수 있다. 데이터 클리닝 명령을 사용함으로써, 데이터를 효과적으로 클리닝하고 불필요한 클리닝을 방지할 수 있다.
일부 실시예에 있어서, 수신된 데이터 클리닝 명령에 대한 응답으로서, 각 클리닝 대기 데이터 워드에 대하여 방법(400)을 수행한다(404 단계). 예를 들면, 각 클리닝 대기 데이터 워드는 데이터 메모리(120)의 일부분일 수 있는 바, 예를 들면 데이터 메모리 중 비교적 민감한 비트 오류율을 갖는 일부분일 수 있다. 다른 일 예에 있어서, 각 클리닝 대기 데이터 워드는 데이터 메모리(120)의 전체일 수 있다. 일부 실시예에 있어서, 순환적으로 복수의 클리닝 대기 워드를 클리닝할 수 있다. 일부 실시예에 있어서, 병렬적으로 복수의 클리닝 대기 워드를 클리닝할 수 있다.
일부 실시예에 있어서, 방법(400)은 데이터 코드 워드의 시작 주소를 인식(406a 단계)하고, 대응되는 ECC 메모리 파티션을 인식(406b 단계)하는 406 단계를 포함한다. 예를 들면, 데이터 클리닝 명령에는 클리닝 대기 데이터에 관련되는 주소를 포함한다. 다른 일 예에 있어서, 호스트가 ECC 코드 워드(221)에 관련되는 주소 및 ECC 체크 비트 파티션(231)(예를 들면 호스트가 메모리 중 시스템 기능에 대하여 제일 중요한 부분을 판정)를 인식한다.
일부 실시예에 있어서, 방법(400)은 상기 데이터 메모리로부터 시작 주소에 관련되는 데이터 워드를 판독하는 408 단계를 포함한다. 예를 들면, 판독된 데이터는 버퍼 메모리에 저장된다. 다른 일 예에 있어서, 데이터 메모리로부터 데이터 코드 워드에 관련되는 데이터 워드를 판독한다.
일부 실시예에 있어서, 방법(400)은 ECC 메모리로부터 대응되는 ECC 메모리 파티션에 관련되는 ECC 체크 비트를 판독하는 410 단계를 포함한다. 예를 들면, ECC 메모리(230)로부터 ECC 체크 비트 파티션(231)에 관련되는 ECC 체크 비트를 판독한다.
일부 실시예에 있어서, 방법(400)은 데이터 워드 및 ECC 체크 비트를 기반으로 ECC 디코딩 연산을 수행하는 412 단계를 포함한다. 예를 들면, 데이터 클리닝 알고리즘을 기반으로, ECC 연산 엔진(112)은 데이터 워드 및 ECC 체크 비트 파티션(231)에 관련되는 ECC 체크 비트에 의하여 ECC 디코딩 연산을 수행한다.
일부 실시예에 있어서, 방법(400)은 ECC 디코딩 연산을 기반으로 데이터 워드의 오류 존재 여부를 판단하는 414 단계를 포함한다. 예를 들면, 데이터 클리닝 알고리즘 및 ECC 디코딩 연산을 기반으로, ECC 연산 엔진(112)은 데이터 워드의 오류 존재 여부를 판단한다.
일부 실시예에 있어서, 방법(400)은 데이터 워드에 오류가 존재한다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하되, 그 중 오류 정정 가능 비트를 포함한 데이터 워드는 클리닝된 데이터 워드인 416 단계를 포함한다. 예를 들면, ECC 연산 엔진(112)은 데이터에 오류가 존재한다고 판단하고, 데이터 워드는 오류 정정 가능 비트를 포함한다. 이에 대한 응답으로서, 데이터 워드의 오류 정정 가능 비트를 대체 및 정정하고, 정정된 데이터 워드는 클리닝된 데이터 워드이다.
일부 실시예에 있어서, 방법(400)은 데이터 워드에 오류가 존재하지 않는다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하는 것을 포기하되, 그 중 데이터 워드는 클리닝된 데이터 워드인 418 단계를 포함한다. 예를 들면, ECC 연산 엔진(112)은 데이터 워드에 오류가 포함되지 않는다고 판단하고, 이에 대한 응답으로서, 데이터 워드 중의 임의 비트도 대체하지 않는다.
일부 실시예에 있어서, 방법(400)은 호스트가 클리닝된 데이터 워드를 청구하였는지 판단하는 420 단계를 포함한다. 예를 들면, 호스트(160)의 청구는 컴퓨터 시스템(메모리 시스템(100) 및 호스트(160) 포함)의 프로세서로부터의 데이터 청구이다.
일부 실시예에 있어서, 방법(400)은 호스트가 클리닝된 데이터를 청구하였다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 호스트와 전기적으로 커플링되는 메모리 컨트롤러에 출력하는 422 단계를 포함한다. 예를 들면, 호스트가 데이터를 청구하였다고 판단(예를 들면 메모리 컨트롤러를 통하여)한 경우의 응답으로서, 클리닝된 데이터 워드를 메모리 컨트롤러로 출력하여 호스트로 제공하고, 클리닝된 데이터 워드를 데이터 메모리에 상주시킨다.
일부 실시예에 있어서, 방법(400)은 호스트가 클리닝된 데이터를 청구하지 않았다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 메모리 컨트롤러에 출력하는 것을 포기하는 424 단계를 포함한다. 예를 들면, 호스트가 데이터를 청구하지 않았다고 판단(예를 들면 메모리 컨트롤러를 통하여)한 경우의 응답으로서, 클리닝된 데이터 워드를 데이터 메모리에 상주시키고, 메모리 컨트롤러로 출력하지 않는다. 일부 실시예에 있어서, 데이터 클리닝 명령을 기반으로 데이터 메모리의 클리닝을 완성한 후, 호스트로 완성 신호를 발송한다.
데이터 워드의 다른 부분은 오류에 대하여 서로 다른 민감성을 가질 수 있다. 예를 들면, 비교적 하위의 오류에 비하여, 정수의 최대 유효 비트(MSB) 중의 오류는 더욱 엄중한 효과를 초래하고, 표시되는 수치에 관련된다. 또한, 많은 현재 연산 응용 프로그램(예를 들면, 머신 러닝, 비디오 및 이미지 처리)는 본질적으로 내결함성을 갖기 때문에; 전반 시스템에서 강제적으로 보수적인 오류 정정 방안을 수행하는 것은 필요하지 않을 수도 있다. 하지만, 전통적인 메모리 회로는 같은 데이터 워드의 모든 부분에 대하여 모두 같은 오류율로 설계되었을 수 있다. 상기와 같은 종래의 메모리 회로에 있어서, 낮은 내결함성을 위하여 설계된 메모리 회로를 사용하여 내결함성이 비교적 높은 데이터를 저장함에 따라 전력 및 면적의 낭비를 초래할 수 있다.
도 5는 실시예에 따른 메모리 시스템(500)을 도시한 것이다. 일부 실시예에 있어서, 메모리 시스템(500)은 메모리 시스템(100)에 포함된다. 일부 실시예에 있어서, 메모리 시스템(500)은 머신 러닝 또는 비디오 또는 영상 처리 시스템에 포함될 수 있다.
일부 실시예에 있어서, 메모리 시스템(500)은 제1 메모리 회로(502) 및 제2 메모리 회로(504)를 포함한다. 제1 메모리 회로(502)는 제1 비트 오류율에 관련될 수 있고, 제2 메모리 회로(504)는 제2 비트 오류율에 관련될 수 있으며, 제1 비트 오류율은 제2 비트 오류율보다 클 수 있다. 예를 들면, 제1 비트 오류율은 10-16 내지 10-12 사이이고, 제2 비트 오류율은 10-12 내지 10-6사이이다.
일부 실시예에 있어서, 제1 메모리 회로(502)는 오류 정정 인코딩 회로, 데이터 클리닝 회로, 다중 회로, 또는 상기 회로의 조합과 같은 데이터 보호 회로를 포함하여, 제1 오류율을 제3 오류율까지 감소시킬 수 있다. 예를 들면, 시스템이 일부분 데이터가 제1 오류율을 가지는 것을 허용할 수 없는 경우; 상기 데이터 부분을 제1 메모리 회로에 저장함으로써, 제1 오류율을 제3 오류율까지 감소시켜 시스템의 요구를 만족시킬 수 있다. 일부 실시예에 있어서, 제1 메모리 회로(502)는 기록 조작 후 데이터를 검증하고 오류율을 낮추기 위한 회로를 포함하거나, 또는 비트 플립(bit flip)을 방지하고 유효 전력(active power)을 낮추기 위한 회로를 포함하도록 구성된다.
일부 실시예에 있어서, 제2 메모리 회로(504)는 오류 정정 인코딩 회로, 데이터 클리닝 회로, 다중 회로, 또는 상기 회로의 조합과 같은 데이터 보호 회로를 포함하여, 오류율을 제2 오류율로부터 제4 오류율까지 감소시킬 수 있다. 일부 실시예에 있어서, 제2 메모리 회로(504)는 기록 조작 후 데이터를 검증하고 오류율을 낮추기 위한 회로를 포함하거나, 또는 비트 플립을 방지하고 유효 전력을 낮추기 위한 회로를 포함하도록 구성된다. 일부 실시예에 있어서, 제1 메모리 회로(502) 중의 대량의 회로에 비하여, 제2 메모리 회로(504)에 포함되는 상기 회로는 더욱 낮은 전력을 소모하고 비교적 작은 면적을 가질 수 있다.
일부 실시예에 있어서, 데이터 워드(508)는 제1 메모리 회로 및 제2 메모리 회로에 저장된다. 일부 실시예에 있어서, 데이터 워드(508)는 제1 비트 오류율에 관련되는 제1 파티션(510) 및 제2 비트 오류율에 관련되는 제2 파티션(512)을 포함한다. 데이터 워드(508)의 제1 파티션(510)은 제1 메모리 회로(502)에 저장되고, 데이터 워드(508)의 제2 파티션(512)은 제2 메모리 회로(504)에 저장된다.
일부 실시예에 있어서, 각 파티션의 크기는 호스트(예를 들면 호스트(160))에 의하여 판정된다. 예를 들면, 8비트의 부호가 있는 정수 데이터에 사용되는 경우, 호스트는 부호 비트 및 3개의 최대 유효 비트가 비교적 낮은 비트 오류율에 관련되는 제1 파티션에 저장되고, 4개의 최소 유효 비트가 비교적 높은 비트 오류율에 관견된 제2 파티션에 저장되는 것으로 판정할 수 있다. 비트의 유효성은 소프트웨어가 사용하는 숫자 형식에 의하여 판정하고, 그 결과를 호스트에 전달할 수 있다. 예를 들면, 최대 유효 피트로부터 최소 유효 비트의 순서는, 부호 비트, 지수 비트, 가수 비트 중의 MSB부터 LSB일 수 있다.
일부 실시예에 있어서, 조건의 변화에 대한 응답으로서 각 파티션의 크기를 업데이트할 수 있다. 예를 들면, 메모리 회로에 영향을 주는 자기장 및 온도 조건을 기반으로 각 파티션의 크기를 업데이트할 수 있다. 다른 일 예에 있어서, 제1 메모리 회로 중의 제1 파티션이 더 이상 중요하지 않는다고 판정되는 경우, 상기 파티션을 제2 메모리 회로에 이동할 수 있다.
데이터 워드(508)는 주소(516)에 관련될 수 있다. 일부 실시예에 있어서, 주소(516)는 메모리 회로 중 파티션을 저장하는 위치에 대응된다. 데이터 워드는 그 실체를 서로 다른 파티션에 저장될 수 있지만, 메모리 시스템(500)(예를 들면 호스트, 메모리 컨트롤러)의 사용자에게 있어서, 데이터는 주소(516)에 관련되는 하나의 위치에 저장되는 것처럼 보인다.
일부 실시예에 있어서, 메모리 시스템 제3 메모리 회로(506)를 포함한다. 데이터 워드(508)는 제3 파티션(514)을 포함할 수 있고, 제3 파티션은 제3 메모리 회로(506)에 저장될 수 있다. 데이터 워드(508)는 제3 파티션을 포함하지 않을 수 있고, 데이터 워드(508)는 제1 메모리 회로 및 제2 메모리 회로에 저장될 수 있다.
비록 두개의 메모리 회로와 세개의 메모리 회로 및 두개의 파티션과 세개의 파티션을 포함하는 실시예를 설명하였으나, 본 발명의 범위를 벗어나지 않는 한, 메모리 시스템은 더욱 많은 또는 더욱 적은 메모리 회로를 포함할 수 있고, 데이터 워드는 더욱 많은 또는 더욱 적은 파티션을 포함하여 각 메모리 회로에 저장될 수 있다.
일부 실시예에 있어서, 메모리 시스템(500)은 제1 메모리 회로 및 제2 메모리 회로에 전기적으로 커플링되는 데이터 클리닝 회로(516)를 포함한다. 데이터 클리닝 회로(516)는 제1 메모리 회로(502)를 제어하여 제1 오류율을 제3 오류율까지 감소시킬 수 있고, 제2 메모리 회로(504)를 제어하여 제2 오류율을 제4 오류율까지 감소시킬 수 있다. 일부 실시예에 있어서, 제1 비트 오류율의 감소 정도는 제2 비트 오류율의 감소 정도보다 크다. 예를 들면, 제3 오류율은 10-20 내지 10-16 사이이고, 제4 오류율은 10-16 내지 10-10사이이다. 일부 실시예에 있어서, 데이터 클리닝 회로(516) 및 기타 처리 회로는 메모리 회로과 같은 칩에 포함된다. 일부 실시예에 있어서, 데이터 클리닝 회로(516) 및 기타 처리 회로는 메모리 회로과 다른 칩에 포함된다.
예시적인 장점으로서, 전력 및 면적을 줄일 수 있다. 예를 들면, 회로 면적 또는 전력 소모가 비교적 많은 자원은 비교적 높은 비트 오류율 또는 비교적 높은 오류 민감도를 가지는 파티션(예를 들면 메모리 중 제일 중요한 부분)으로 적절하게 지우치고, 비교적 적은 자원은 비교적 낮은 비트 오류율 또는 비교적 낮은 오류 민감도를 가지는 파티션(예를 들면 비트 오류율이 비교적 낮거나 오류 민감도가 비교적 낮은 파티션에 자원을 낭비하지 않음)으로 적절하게 지우침으로써; 전력을 절감하고 오류 정정 회로 설계의 면적을 줄일 수 있다. 다른 일 예에 있어서, 신경망 유사 응용, 머신 러닝 및 비디오 또는 이미지 처리 시스템과 같은 연산 응용은 내결함성을 갖고, 데이터의 일부분은 오류에 대하여 비교적 민감하지 않을 수 있다. 데이터 중의 비교적 작은 오류 민감도를 갖는 부분을 구분함으로써, 메모리 회로의 전력 및 면적의 소모를 줄일 수 있다.
다른 바람작한 장점으로서, 예를 들면 신경망 유사 파라미터와 같은 큰 수치 데이터에서, 메모리 시스템의 설계는 데이터 워드 내의 비트가 오류에 대한 민감도에 의하여 효과적으로 구분함으로써 불필요한 연산 자원의 사용을 방지할 수 있다.
일부 실시예에 있어서, 제1 메모리 회로(502)는 제1 크기의 제1 자기 터널 접합(MTJ) 및 제1 통로 종횡(W/L)비의 제1 MOS 트랜지스터를 갖는 제1 메모리 유닛을 포함한다. 제2 메모리 회로(504)는 제2 크기의 제2 MTJ 및 제2 W/L비의 제2 MOS 트랜지스터를 갖는 제2 메모리 유닛을 포함한다. 제1 크기는 제2 크기보다 크고, 제1 W/L비는 제2 W/L비보다 크다.
예를 들면, 제1 메모리 회로는 크기가 40 나노미터 내지 200 나노미터 사이인 MTJ 및 W/L가 2 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다. 다른 일 예에 있어서, 그 중 제2 메모리 회로는 크기가 20 나노미터 내지 100 나노미터 사이인 MTJ 및 W/L가 1 내지 100 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
예시적인 장점으로서, 면적을 줄일 수 있다. 예를 들면, 비교적 큰 면적(예를 들면 비교적 작은 오류율을 가지는 비교적 큰 장치)은 비교적 높은 비트 오류율 또는 비교적 높은 오류 민감도를 가지는 파티션(예를 들면 메모리 중 제일 중요한 부분)으로 적절하게 지우치고, 비교적 작은 면적(예를 들면 비교적 작은 오류율을 가지는 비교적 작은 장치)은 비교적 낮은 비트 오류율 또는 비교적 낮은 오류 민감도를 가지는 파티션(예를 들면 비교적 낮은 비트 오류율 또는 비교적 낮은 오류 민감도를 가지는 파티션에 면적을 낭비하지 않음)으로 적절하게 지우침으로써; 메모리 회로의 면적을 줄일 수 있다. 다른 일 예에 있어서, 머신 러닝 및 비디오 또는 이미지 처리 시스템과 같은 연산 응용은 내결함성을 갖고, 데이터의 일부분은 오류에 대하여 비교적 민감하지 않을 수 있다. 데이터 중의 비교적 작은 오류 민감도를 갖는 부분을 구분함으로써, 메모리 회로의 면적을 줄일 수 있다.
일부 실시예에 있어서, 제1 메모리 회로(502)는 제1 판독 전압, 제1 센싱 시간 및 제1 워드 라인(WL) 전압을 사용하고, 제2 메모리 회로(504)는 제2 판독 전압, 제2 센싱 시간 및 제2 WL 전압을 사용한다. 제1 판독 전압은 제2 판독 전압보다 크고, 제1 센싱 시간은 제2 센싱 시간보다 길며, 제1 WL 전압은 제2 WL 전압보다 크다.
예를 들면, 제1 판독 전압은 50 밀리볼트(mV) 내지 300 밀리볼트 사이의 범위 내에 있거나, 또는 제1 센싱 시간은 3 나노초(ns) 내지 500 나노초 사이의 범위 내에 있거나, 또는 양자를 동시에 만족함으로써, 센싱 오류율을 줄일 수 있다. 판독 조작 과정 중, 제1 WL 전압은 정격 게이트 전압의 100% 내지 200% 사이의 범위 내에 있음으로써, 트랜지스터를 액세스할 수 있다. 제2 판독 전압은 30 밀리볼트 내지 100 밀리볼트의 범위 내에 있거나, 또는 제2 센싱 시간은 2 나노초 내지 100 나노초의 범위 내에 있거나, 또는 양자를 동시에 만족함으로써, 판독 전력 소모를 줄일 수 있다. 판독 조작 과정 중, 제2 WL 전압은 정격 게이트 전압의 70% 내지 150% 사이의 범위 내에 있음으로써, 트랜지스터를 액세스할 수 있다.
일부 실시예에 있어서, 제1 메모리 회로(502)는 제1 기록 전압, 제1 기록 시간 및 제1 워드 라인(WL) 전압을 사용하고, 제2 메모리 회로(504)는 제2 기록 전압, 제2 기록 시간 및 제2 WL 전압을 사용한다. 제1 기록 전압은 제2 기록 전압보다 크고, 제1 기록 시간은 제2 기록 시간보다 길며, 제1 WL 전압은 제2 WL 전압보다 크다.
예를 들면, 제1 기록 전압은 500 밀리볼트 내지 1500 밀리볼트의 범위 내에 있거나, 또는 비교적 긴 기록 시간은 5 나노초 내지 1000 나노초의 범위 내에 있거나, 또는 양자를 동시에 만족함으로써, 기록 오류율을 줄일 수 있다. 기록 조작 과정 중, 제1 WL 전압은 정격 게이트 전압의 100% 내지 300% 사이의 범위 내에 있음으로써, 트랜지스터를 액세스할 수 있다. 제2 기록 전압은 300 밀리볼트 내지 1000 밀리볼트 사이의 범위 내에 있거나, 또는 비교적 짧은 기록 시간은 2 나노초 내지 500 나노초 사이의 범위 내에 있거나, 또는 양자를 동시에 만족함으로써, 기록 전력 소모를 줄일 수 있다. 기록 조작 과정 중, 제2 WL 전압은 정격 게이트 전압의 70% 내지 200% 사이의 범위 내에 있음으로써, 트랜지스터를 액세스할 수 있다.
예시적인 장점으로서, 전력을 줄일 수 있다. 예를 들면, 비교적 많은 자원(예를 들면 비교적 높은 전압, 비교적 긴 센싱/기록 시간)은 비교적 높은 비트 오류율 또는 비교적 높은 오류 민감도를 가지는 파티션(예를 들면 메모리 중 제일 중요한 부분)으로 적절하게 지우치고, 비교적 적은 자원(예를 들면 비교적 낮은 전압, 비교적 짧은 센싱/기록 시간)은 비교적 낮은 비트 오류율 또는 비교적 낮은 오류 민감도를 가지는 파티션(예를 들면 비교적 낮은 비트 오류율 또는 비교적 낮은 오류 민감도를 가지는 파티션에 자원을 낭비하지 않음)으로 적절하게 지우침으로써; 판독 및/또는 기록 전력을 줄일 수 있다. 다른 일 예에 있어서, 머신 러닝 및 비디오 또는 이미지 처리 시스템과 같은 연산 응용은 내결함성을 갖고, 데이터의 일부분은 오류에 대하여 비교적 민감하지 않을 수 있다. 데이터 중의 비교적 작은 오류 민감도를 갖는 부분을 구분함으로써, 전력을 줄일 수 있다.
도 6은 실시예에 따른 데이터 코드 파티션을 도시한 것이다. 일부 실시예에 있어서, 데이터 워드(600)는 파티션(602, 604)을 포함한다. 예를 들면, 데이터 워드(600)는 표준 단일 정밀도 형식(standard single-precision format)으로 형성된 파티션을 포함하고, 오류에 비교적 민감한 비트(MESB)(예를 들면 파티션(602)) 및 오류에 비교적 민감하지 않은 파티션(LESB)(예를 들면 파티션(604))로 구분된다. 일부 실시예에 있어서, 파티션(602, 604)은 대체적으로 파티션(510, 512)과 유사하고, 데이터 워드(600)는 메모리 시스템(500)에 저장된다. 일부 실시예에 있어서, 데이터 워드(600)의 길이는 2의 누승적이다.
일부 예에 있어서, 데이터 워드(600)는 부동 소수점 형식이다. 제1 파티션(602)은 부호 비트, 지수 비트 및 가수 비트의 상위 부분을 포함하고, 제2 파티션(604)은 가부 비트의 하위 부분을 포함한다. 일부 예에 있어서, 데이터 워드(600)는 정수 형식에서 제1 파티션(602)은 부호 비트 및 상위 부분을 포함하고, 제2 파티션(604)은 하위 부분을 포함한다.
비록 데이터 워드(600)에 대하여 두개의 파티션을 포함하는 실시예를 설명하였으나, 본 발명의 범위를 벗어나지 않는 한, 데이터 워드(600)는 복수의 파티션을 포함할 수 있고, 각 파티션은 비트 오류율에 관련된다.
도 7은 실시예에 따른 메모리 시스템의 조작 방법을 도시한 것이다. 일부 실시예에 있어서, 방법(700)은 제1 비트 오류율을 기반으로 메모리 시스템에 저장하여야 할 데이터 워드의 제1 파티션을 판단하는 702 단계를 포함한다. 예를 들면, 파티션(602)이 오류에 비교적 민감(예를 들면 비교적 높은 오류율을 가짐)함을 판단(예를 들면 호스트가 데이터에 관련되는 시스템 내결함성에 의하여, 데이터 워드(600)의 숫자 형식에 의하여)한다.
일부 실시예에 있어서, 방법(700)은 제2 비트 오류율을 기반으로 메모리 시스템에 저장하여야 할 데이터 워드의 제2 파티션을 판단하되, 제1 비트 오류율은 제2 비트 오류율보다 큰 704 단계를 포함한다. 예를 들면, 파티션(604)이 제1 파티션에 비하여 오류에 비교적 민감하지 않음(예를 들면 제1 파티션에 비하여 비교적 낮은 오류율을 가짐)을 판단(예를 들면 호스트가)한다.
일부 실시예에 있어서, 방법(700)은 데이터 워드의 제1 파티션을 제1 메모리 회로에 저장하는 706 단계를 포함한다. 예를 들면, 제1 파티션(602)을 제1 메모리 회로(502)에 저장한다. 제1 메모리 회로(502)는 제1 비트 오류율을 가지는 데이터를 정정하도록 구성될 수 있다.
일부 실시예에 있어서, 방법(700)은 데이터 워드의 제2 파티션을 제2 메모리 회로에 저장하는 708 단계를 포함한다. 예를 들면, 제2 파티션(604)을 제2 메모리 회로(504)에 저장한다. 제2 메모리 회로(504)는 제2 비트 오류율을 가지는 데이터를 정정하도록 구성될 수 있다.
일부 실시예에 있어서, 제1 메모리 회로는 제1 비트 오류율에 관련되고, 제2 메모리 회로는 제2 비트 오류율에 관련된다. 예를 들면, 메모리 회로(502)는 제1 비트 오류율에 관련되고, 메모리 회로(504)는 제2 비트 오류율에 관련되며, 제2 비트 오류율은 제1 비트 오류율보다 크다.
도 8은 실시예에 따른 메모리 시스템을 도시한 것이다. 메모리 시스템(800)은, 데이터 입력(802); 멀티 레벨 셀(MLC) 메모리 배열(804); MLC 메모리 배열 및 데이터 입력에 전기적으로 커플링되는 기록 회로(806); 기록 회로에 전기적으로 커플링되는 그레이 코드로부터 이진 코드로의 디코딩 회로(808); MLC 메모리 배열에 전기적으로 커플링되는 판독 회로(810); 판독 회로 및 데이터 입력에 전기적으로 커플링되는 이진 코드로부터 그레이 코드로의 인코딩 회로(812); ECC 체크 비트를 저장하도록 구성되는 메모리 회로(814); 메모리 회로 및 이진 코드로부터 그레이 코드로의 인코딩 회로에 전기적으로 커플링되는 ECC 인코더(816); 메모리 회로 및 그레이 코드로부터 이진 코드로의 인코딩 회로에 전기적으로 커플링되고, 회복된 데이터를 출력하도록 구성되는 ECC 디코더(818); 및, 메모리 시스템 중의 데이터 회복을 제어하도록 구성되는 데이터 클리닝 컨트롤러(820); 를 포함한다.
일부 예에 있어서, 다중 상태 또는 연속 아날로그 특성을 가짐을 표시하는 행렬 피승수를 통하여, 멀티 레벨 셀(MLC) 장치를 메모리 중의 연산 조작(예를 들면 신경망 유사 연산)에 사용할 수 있다. 일부 실시예에 있어서, MLC는 아날로그 메모리이다. 메모리 장치는 조작 기간에 드리프트 현상이 발생하여 행렬 피승수의 값을 점차적으로 변경할 가능성이 있다. 예시적인 장점으로서, 메모리 시스템(800)은 그레이 코드를 사용하여 데이터에 드리프트 현상이 발생한 후 효과적으로 회복(예를 들면 간단한 "판독 및 회복(read and recover)" 조작을 통하여 오류가 있는 데이터를 정정하기 전에 드리프트를 정정)하여; 데이터의 리프레시 빈도를 낮출 수 있다. 그레이 코드는 숫자 데이터 표시 형식으로서, 그 중 인접된 상태는 1 비트의 차이가 있다. 상기와 같은 특성은 장치 상태 중의 작은 변화가 소수의 비트만 변경하도록 확보할 수 있기 때문에, 오류 정정 회로에 대한 요구를 낮춰줌으로써, 메모리에 관련된 오류 정정 회로의 전력 및 면적을 줄일 수 있다.
일부 실시예에 있어서, 메모리 회로(814) 및 MLC 메모리(804)는 다른 집접회로에 위치한다. 예를 들면, 메모리 회로, ECC 인코더 회로 및 ECC 디코더 회로는 같은 칩에 위치하고, 상기 칩과 MLC 메모리(804)는 다른 칩에 위치한다. 일부 실시예에 있어서, MLC 메모리(804)와 메모리 회로(814)는 같은 칩에 위치한다. 예를 들면, MLC 메모리(804)와 메모리 회로(814)는 같은 메모리 배열에 포함될 수 있다. 일부 경우에서, 메모리 회로는 MLC 메모리 배열의 소정 파티션에 위치(예를 들면 MLC 메모리 배열 및 메모리 회로는 같은 메모리에 포함됨)할 수 있다.
일부 실시예에 있어서, MLC 메모리 배열은 메모리 유닛 회로를 포함하고, 2개 이상의 안정적인 물리적 상태를 가진다. 예를 들면, 메모리 유닛 회로는 8개의 안정 상태를 가질 수 있고, 각 안정 상태는 이진수 중의 0부터 7 까지의 숫자를 나타낸다. 일부 실시예에 있어서, MLC 메모리 배열은 아날로그 메모리 장치(예를 들면 일련의 연속 값을 저장하도록 구성되는 아날로그 장치)를 포함한다. 예를 들면, 메모리 유닛 회로는, NOR 유닛으로 구성된 플로팅 게이트 FLASH 유닛, NAND 유닛으로 구성된 플로팅 게이트 FLASH 유닛, NOR 유닛으로 구성된 전하 트랩 FLASH 유닛, NAND 유닛으로 구성된 전하 트랩 FLASH 유닛, 상변화 메모리(PCM) 유닛 및 저항 랜덤 액세스 메모리(RRAM) 유닛으로부터 선택된 어느 하나일 수 있다.
일부 실시예에 있어서, ECC 인코더 및 디코더는 해밍 코드, BCH 코드, 리드-솔로몬 코드 및 LDPC 코드로부터 선택된 어느 하나를 사용한다. 일부 예에 있어서, 체크 비트 메모리(check-bit memory)(814) 중의 체크 비트 크기는 ECC 방법을 통하여 결정된다. 일부 실시예에 있어서, 판독 회로(810)는 아날로그 디지털 변환기(ADC)를 포함한다.
일부 실시예에 있어서, 데이터 클리닝 컨트롤러(820)는 대체적으로 데이터 클리닝 회로(110)과 유사하지만 MLC 메모리에 적용된다. 일부 실시예에 있어서, 메모리 시스템(800)은 환경 간섭 센서(140) 및/또는 타이머(150)를 포함하여, 데이터 클리닝을 개시해야 할 시간을 판정한다. 일부 예에 있어서, 데이터 클리닝 컨트롤러는 환경 간섭 감지에 대한 응답(예를 들면 환경 간섭 센서(140), 본문에 설명된 바와 같음) 또는 본문에 설명된 바와 같이 호스트로부터 수신된 명령에 대한 응답으로서, 소정 간격(예를 들어 타이머(150)를 사용, 본문에 설명된 바와 같음)으로 데이터 클리닝 조작을 개시하도록 구성된다. 예를 들면, 주기적으로 데이터를 판독하고 데이터 상에서 데이터 클리닝을 수행함으로써 데이터 중의 드리프트 현상을 줄일 수 있다.
도 9는 실시예에 따른 데이터 회복을 도시한 것이다. 이진 값(902)은 그레이 코드 값(904)에 대응되고; 각 열의 상한 값 및 하한 값은 수학적으로 동등하다. 곡선(906)은 MLC 메모리 중에 저장 가능한 각 이산 값의 이상적인 범위(예를 들면 전압)에 대응된다. 일부 경우에서, 예를 들면 장치 드리프트와 같은 비 이상적인 상황으로 인하여, 곡선은 곡선(906)으로부터 이탈될 가능성이 있다. 예를 들면, 드리프트로 인하여 곡선(908)에 대응되는 이진 값 "100"의 곡선은 오른쪽으로 변위되고; 상기와 같은 예에 있어서, "100"을 포함한 데이터는 착오적으로 "101"으로 변경될 가능성이 있다. 메모리 시스템(800) 또는 방법(1000)을 사용하여 "100"에 대응되는 이상적인 수준으로 회복할 수 있다.
도 10는 실시예에 따른 메모리 시스템의 조작 방법(1000)을 도시한 것이다. 방법(1000)은 MLC 메모리로부터 데이터를 판독하되, 데이터는 이진 코드 또는 아날로그 값으로 표시되는 1002 단계를 포함한다. 예를 들면, 판독 회로(810)를 사용하여 MLC 메모리(804)로부터 일부분 또는 전부의 데이터를 판독한다. 순차적으로 또는 병렬적으로 데이터를 판독 및 클리닝할 수 있다. 병렬적으로 데이터를 판독 및 클리닝할 때, 메모리 시스템(800)은 하나 이상의 비 메모리 배열 컴포넌트(예를 들면, 판독 회로, 그레이 코드 인코더/디코더, ECC 메모리, ECC 인코더/디코더, 기록 회로)를 포함함으로써, MLC 데이터와 동시에 데이터 클리닝을 수행할 수 있게 된다.
일부 실시예에 있어서, 방법(1000)은 데이터를 그레이 코드로 변환하는 1004 단계를 포함한다. 예를 들면, 이진 코드로부터 그레이 코드로의 인코딩 회로(812)는 판독된 데이터를 그레이 코드로 변환한다.
일부 실시예에 있어서, 방법(1000)은 ECC 체크 비트를 저장하도록 구성된 메모리 회로로부터 대응되는 체크 비트 데이터를 판독하는 1006 단계를 포함한다. 예를 들면, 메모리 회로(814) 중의 판독 데이터에 대응되는 ECC 체크 비트를 판독하여, 판독된 데이터에 대하여 데이터 클리닝 조작을 수행한다.
일부 실시예에 있어서, 방법(1000)은 그레이 코드를 사용하여 데이터 중 정정 가능 오류의 위치를 연산하는 1008 단계를 포함한다. 예를 들면, 판독된 데이터 상에서 ECC 조작을 수행한 다음, ECC 조작의 결과를 기반으로, 데이터 클리닝 컨트롤러(820)는 정정 가능 오류의 위치를 연산(예를 들면 디코딩 후의 ECC 부호를 기반으로)한다.
일부 실시예에 있어서, 방법(1000)은 그레이 코드를 사용하여 데이터 중의 정정 가능 오류를 정정하는 1010 단계를 포함한다. 예를 들면, ECC 방법을 기반으로, 데이터 클리닝 컨트롤러(820)는 그레이 코드를 사용하여 정정 가능 오류를 정정한다.
일부 실시예에 있어서, 방법(1000)은 정정된 데이터를 이진 코드 또는 정정된 아날로그 값으로 변환하는 1012 단계를 포함한다. 예를 들면, 그레이 코드로부터 이진 코드로의 디코딩 회로(808)를 사용하여 정정된 그레이 코드 데이터를 이진 값(예를 들면 MLC 메모리에 사용됨) 또는 정정된 아날로그 값(예를 들면 아날로그 메모리 중)으로 변환한다.
일부 실시예에 있어서, 방법(1000)은 기록 회로를 이용하여 정정된 데이터를 MLC 메모리 중의 데이터에 재기록하는 1014 단계를 포함한다. 예를 들면, 클리닝 중의 데이터에 오류가 있다고 판정된 경우, 기록 회로(806)를 사용하여 정정 및 변환된 데이터를 메모리(804)에 기록한다.
비록 이미 도 8 내지 도 10을 참조하여 특정 구조 및 방법을 설명하였지만, 본 발명의 범위를 벗어나지 않는 한, 게시된 MLC 또는 아날로그 메모리는 오류 정정 MLC 또는 아날로그 메모리에 대하여 이진 오류 정정 구조 및 방법을 사용할 수도 있다.
도 11은 실시예에 따른 메모리 시스템을 포함한 시스템(1100)을 도시한 것이다. 시스템(1100)은 메모리 컨트롤러(1120)에 전기적으로 커플링되는 메모리 시스템(1110)(예를 들면 메모리 시스템(100, 500, 800)); 프로세서(1130); 직접 메모리 액세스(DMA) 컨트롤러(1140); 주변 인터페이스(1150); 실시간 타이머(RTC)(1160); 및 기타 회로(1170)를 포함한다. 시스템(1100)의 예시적인 컴포넌트는 버스바 데이터 버스(1180)에 전기적으로 커플링된다. 일부 실시예에 있어서, 시스템(1100)은 휴대형 전자 장치(예를 들면 스마트 워치 또는 스마트 폰)의 일부분이다. 일부 실시예에 있어서, 시스템(1100)은 머신 러닝 시스템의 일부분이다. 일부 실시예에 있어서, 시스템(1100)은 분산형 정보 수집 및 처리 네트워크(예를 들면 클라우드, 신경망유사)의 일부분이다.
일부 실시예에 있어서, 메모리 시스템(1110)은 인공 지능 엣지 연산(edge-AI) 시스템, 데이터 센터의 신경망 유사 시스템, IoT 시스템, 자동자 전자 시스템, 마이크로 컨트롤러 시스템, 이동 통신 시스템, 프로그래밍 가능한 연산 시스템(예를 들면 FPGA), 하드웨어 안전 시스템, 원격 정조 서비스 시스템, 생물 의학 전자 장치, 로봇 및 드론으로부터 선택된 어느 하나에 포함된다.
도 12는 실시예에 따른 연산 장치(1200)의 예를 도시한 것이다. 일부 실시예에 있어서, 장치(1200)는 게시된 시스템에 커플링되도록 구성되고, 본문에 게시된 시스템에 관련된 조작 방법을 수행하도록 구성된다.
장치(1200)는 네트워크에 연결된 컴퓨터 본체일 수 있다. 장치(1200)는 클라이언트 컴퓨터 또는 서버일 수 있다. 도 12에 도시된 바와 같이, 장치(1200)는 예를 들면 전용 연산 장치, 개인 컴퓨터, 워크스테이션, 서버, 예를 들면 핸드폰 또는 태블릿 PC와 같은 소형 연산 장치(휴대형 전자 장치), 인공 지능 엣지 연산(edge-AI) 장치, 또는 신경망 유사 장치 등 임의 적절한 유형의 마이크로 프로세서를 기반으로 한 장치일 수 있다. 예를 들면, 상기 장치는 하나 또는 복수의 프로세서(1202), 입력 장치(1206), 출력 장치(1208), 기억 장치(1210) 및 통신 장치(1204)를 포함할 수 있다. 입력 장치(1206) 및 출력 장치(1208)는 통상적으로 상기에 게시된 내용에 대응되고 컴퓨터에 연결되거나 또는 컴퓨터와 일체로 구성된다.
입력 장치(1206)는 입력을 제공할 수 있는 예를 들면 카메라 센서, 터치 스크린, 키보드 또는 키패드, 마우스 또는 음성 인식 장치 등 임의 적절한 장치일 수 있다. 출력 장치(1208)는 출력을 제공할 수 있는 예를 들면 조명장치, 터치 스크린, 촉각 장치 또는 스피커와 같은 임의 적절한 장치일 수 있다.
기억 장치(1210)는 기억 기능을 제공할 수 있는 예를 들면 전기, 자기 또는 광학 저장 RAM, 고속 버퍼, 하드 디스크 또는 휴대형 하드 디스크와 같은 임의 적절한 장치일 수 있다. 일부 예에 있어서, 기억 장치(1210)는 메모리 시스템(100, 500, 800)을 포함한다. 통신 장치(1204)는 네트워크를 통하여 신호를 송신하거나 수신할 수 있는 예를 들면 네트워크 인터페이스 칩 또는 장치와 같은 임의 적절한 장치일 수 있다. 컴퓨터의 컴포넌트는 예를 들면 실체 버스 또는 무선 방식과 같은 임의 적절한 방식으로 연결될 수 있다.
소프트웨어(1212)는 기억 장치(1210)에 저장되어 프로세서(1210)에 의하여 수행될 수 있고, 본 발명의 기능을 구체화(예를 들면 상기 장치에서 구체화)하기 위한 프로그램을 포함할 수 있다.
소프트웨어(1212)는 또한 비휘발성, 컴퓨터 판독 가능한 임의 저장 매체에 저장 및/또는 전송되어, 명령 실행 시스템, 설비 또는 장치(위에서 언급한 것과 같은)에 의해 사용되거나 또는 그에 연결하어 사용되고, 저장 매체는 명령 실행 시스템, 설비 또는 장치로부터 소프트웨어에 관련된 명령을 취득하여 실행한다. 본문의 전후 문맥에서, 컴퓨터 판독 가능한 저장 매체는 기억 장치(1210)와 같은 임의 매체일 수 있고, 프로그램을 포함하거나 저장할 수 있으며, 명령 실행 시스템, 설비 또는 장치에 의해 사용되거나 또는 그에 연결하여 사용될 수 있다.
소프트웨어(1212)는 또한 임의 전송 매체를 통하여 전파되어, 명령 실행 시스템, 설비 또는 장치(위에서 언급한 것과 같은)에 의해 또는 연결되어 사용되고, 전송 매체는 명령 실행 시스템, 설비 또는 장치로부터 소프트웨어에 관련된 명령을 취득하여 실행한다. 본문의 전후 문맥에서, 전송 매체는 프로그램을 통신, 전파 또는 전송하여 명령 실행 시스템, 설비 또는 장치에 의해 사용되거나 또는 그에 연결하여 사용되는 임의 매체일 수 있다. 전송 판독 가능 매체는 전자, 자기, 광학, 전자기 또는 적외선 유선 또는 무선 전송 매체를 포함 할 수 있지만, 이에 한정되는 것은 아니다.
장치(1200)는 네트워크에 연결될 수 있고, 네트워크는 임의 적절한 유형의 상호 연결 통신 시스템일 수 있다. 네트워크는 임의 적절할 통신 프로토콜을 사용하고, 임의 적절한 안전 프로토콜을 통하여 보호할 수 있다. 네트워크는 예를 들면 무선 네트워크 연결, T1 또는 T3 선로, 케이블 네트워크, 디지털 가입자 회선(DSL) 또는 전화선과 같은 임의 적절하게 배치된 네트워크 연결을 포함하여, 네트워크 신호의 송신 및 수신을 수행할 수 있다.
장치(1200)는 네트워크 상에서 조작을 수행할 수 있는 임의 적절한 운영체제에서 실행될 수 있다. 소프트웨어(1212)는 예를 들면 C, C++, Java 또는 Python과 같은 임의 적절한 프로그래밍 언어로 작성될 수 있다. 다양한 실시예에 있어서, 본 발명의 기능을 구체화하기 위한 소프트웨어는 예를 들면 클라이언트-서버로 구성되거나 또는 웹 브라우저를 통하여 사용할 수 있는 네트워크를 기반으로 한 프로그램 또는 네트워크 서버와 같은 다양한 환경에 배포될 수 있다.
일 측면에 있어서, 메모리 시스템은, 데이터 메모리; ECC 메모리; 및, ECC 메모리 및 데이터 메모리에 전기적으로 커플링되는 데이터 클리닝 회로; 를 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 클리닝 회로는 수신된 데이터 클리닝 명령에 대한 응답으로서, 데이터 메모리 중의 오류를 정정하도록 구성된다.
상기 메모리 시스템의 일부 측면에 있어서, 오류를 정정하기 위하여 사용되는 코드 워드의 길이는 데이터 메모리의 정상적인 액세스 과정 중에 사용되는 워드 길이보다 길게 구성된다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 클리닝 회로는 데이터 버퍼, 데이터 클리닝 컨트롤러, ECC 인코딩 회로, 및 ECC 디코딩 회로를 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 클리닝 회로는 데이터 메모리를 액세스하는 동시에 데이터 메모리 중의 오류를 정정하도록 구성된다.
상기 메모리 시스템의 일부 측면에 있어서, 메모리 시스템은 환경 조건을 감지하기 위한 환경 간섭 센서를 더 포함하고, 그 중, 데이터 클리닝 회로는 감지된 환경 조건을 기반으로 데이터 클리닝 명령을 생성한다.
상기 메모리 시스템의 일부 측면에 있어서, 환경 조건은 온도 및 자기장 중의 적어도 하나를 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 클리닝 회로는 기지 데이터 중의 변화를 감지하고, 감지된 변화를 기반으로 데이터 클리닝 명령을 생성하도록 구성된다.
상기 메모리 시스템의 일부 측면에 있어서, 메모리 시스템은 경과된 시간을 추적하고, 경과된 시간이 타이밍 임계값을 초과하는지 판단하며, 경과된 시간이 타이밍 임계값 이상으로 판단되는 경우 데이터 클리닝 명령을 생성하도록 구성되는 타이머 회로를 더 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, ECC 메모리는 복수의 파티션을 포함하고, 데이터 메모리는 복수의 메모리 주소 범위를 포함하며, 각 파티션은 데이터 메모리 중의 하나의 메모리 주소 범위에 대응된다.
상기 메모리 시스템의 일부 측면에 있어서, ECC 메모리는 복수의 ECC 비트를 갖는 파티션을 포함하고, ECC 비트의 수량은 데이터 클리닝 알고리즘에 관련되는 ECC 인코딩 방법을 기반으로 한다.
상기 메모리 시스템의 일부 측면에 있어서, ECC 메모리는 버퍼 세트를 포함하되, 그 중, 각 버퍼는 하나의 ECC 코드 워드에 대응되고, 각 ECC 코드 워드는 데이터 메모리 중의 하나의 구간에 대응되며, 각 버퍼는 상기 구간의 상태를 저장한다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자성 랜덤 액세스 메모리(MRAM)을 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자기 터널 접합(MTJ)을 갖는 메모리 유닛을 포함하고, 10-12 내지 10-2 사이의 비트 오류율을 갖는 메모리 유닛에 비하여, 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 하나를 갖는다.
상기 메모리 시스템의 일부 측면에 있어서, 비트 오류율이 10-12 내지 10-2 사이인 메모리 유닛에 비하여, MJT는 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 두개를 갖는다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 메모리는 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM) 또는 임베디드 DRAM(eDRAM)을 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 클리닝 회로 또는 호스트는 데이터 메모리가 보호를 받고 있는지 판단하도록 구성되고, ECC 메모리는 데이터 메모리가 보호를 받고 있다고 판단한 경우에 ECC 체크 비트를 저장하며, 데이터 메모리가 보호를 받고 있지 않는다고 판단한 경우에 연산 데이터를 저장하도록 구성된다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 메모리 및 ECC 메모리는 다른 메모리 회로에 포함된다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 메모리 및 ECC 메모리는 같은 메모리 회로에 포함된다.
상기 메모리 시스템의 일부 측면에 있어서, 메모리 시스템은 호스트 장치에 전기적으로 커플링된다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 메모리 및 ECC 메모리는 크기가 20 나노미터 내지 200 나노미터 사이인 MTJ 및 종횡비가 1 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 클리닝 회로는, 데이터에 적용하기 위한 데이터 보호 명령을 수신하고; 보호 대기 데이터 중의 각 데이터 워드에 사용되어 수신된 보호 명령에 대한 응답으로서: 데이터 워드에 관련되는 데이터 코드 워드의 주소를 인식하고; 상기 주소에 의하여 상기 데이터 워드가 데이터 메모리에 저장되었는지 판단하며; 상기 데이터 워드가 데이터 메모리에 저장되었다고 판단한 경우의 응답으로서, 데이터 메모리로부터 상기 데이터 워드를 판독하고; 상기 데이터 워드가 데이터 메모리에 저장되지 않았다고 판단한 경우의 응답으로서: 상기 데이터 워드를 수신하고; 상기 데이터 워드를 데이터 메모리에 기록하며; 상기 데이터 워드에 대하여 ECC 인코딩 연산을 수행하고; ECC 인코딩 연산을 기반으로 데이터 코드 워드를 생성하며; 상기 주소에 데이터 코드 워드를 데이터 메모리에 기록하고; ECC 인코딩 연산을 기반으로 ECC 체크 비트를 생성하며; 생성된 ECC 체크 비트를 ECC 메모리 중의 대응되는 파티션에 기록하도록 구성된다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 클리닝 회로는, 데이터 클리닝 명령을 수신하고; 각 클리닝 대기 데이터 코드에 사용되어 수신된 클리닝 데이터 클리닝 명령에 대한 응답으로서: 데이터 코드 워드의 시작 주소 및 대응되는 ECC 저장 파티션을 인식하고; 데이터 메모리로부터 시작 주소에 관련되는 데이터 워드를 판독하며; ECC 메모리로부터 대응되는 ECC 메모리 파티션에 관련되는 ECC 체크 비트를 판독하고; 데이터 워드 및 ECC 체크 비트를 기반으로 ECC 디코딩 연산을 수행하며; ECC 디코딩 연산을 기반으로 데이터 워드에 오류가 포함되어 있는지 판단하고; 상기 데이터 워드 중에 오류가 포함된다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하되, 그 중 오류 정정 가능 비트를 포함한 데이터 워드는 클리닝된 데이터 워드이며; 데이터 워드에 오류가 포함되지 않는다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하는 것을 포기하되, 그 중 데이터 워드는 클리닝된 데이터 워드이고; 호스트가 클리닝된 데이터 워드를 청구하였는지 판단하고; 호스트가 클리닝된 데이터를 청구하였다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 호스트와 전기적으로 커플링되는 메모리 컨트롤러에 출력하며; 호스트가 클리닝된 데이터를 청구하지 않았다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 메모리 컨트롤러에 출력하는 것을 포기한다.
일 측면에 있어서, 메모리 시스템의 조작 방법을 게시한 것으로서, 상기 메모리 시스템은, 데이터 메모리; ECC 메모리; 및, ECC 메모리 및 데이터 메모리에 전기적으로 커플링되는 데이터 클리닝 회로; 를 포함한다. 상기 방법은 수신된 데이터 클리닝 명령에 대한 응답으로서, 데이터 클리닝 회로를 사용하여 데이터 메모리 중의 오류를 정정하는 것을 포함한다.
상기 방법의 일부 측면에 있어서, 오류를 정정하기 위하여 사용되는 코드 워드의 길이는 데이터 메모리의 정상적인 액세스 과정 중에 사용되는 워드 길이보다 길게 구성된다.
상기 방법의 일부 측면에 있어서, 데이터 클리닝 회로는 데이터 버퍼, 데이터 클리닝 컨트롤러, ECC 인코딩 회로, 및 ECC 디코딩 회로를 포함한다.
상기 방법의 일부 측면에 있어서, 상기 방법은 데이터 메모리 중의 오류를 정정하는 동시에 데이터 메모리를 액세스하는 것을 더 포함한다.
상기 방법의 일부 측면에 있어서, 상기 방법은 환경 간섭 센서를 사용하여 환경 조건을 감지하고; 감지된 환경 조건을 기반으로 데이터 클리닝 명령을 생성하는 것을 더 포함한다.
상기 방법의 일부 측면에 있어서, 환경 조건은 온도 및 자기장 중의 적어도 하나를 포함한다.
상기 방법의 일부 측면에 있어서, 상기 방법은 기지 데이터 중의 변화를 감지하고; 감지된 변화를 기반으로 데이터 클리닝 명령을 생성하는 것을 더 포함한다.
상기 방법의 일부 측면에 있어서, 상기 방법은 경과된 시간을 추적하고; 경과된 시간이 타이밍 임계값을 초과하는지 판단하며; 경과된 시간이 타이밍 임계값 이상으로 판단되는 경우 데이터 클리닝 명령을 생성하는 것을 더 포함한다.
상기 방법의 일부 측면에 있어서, ECC 메모리는 복수의 파티션을 포함하고, 데이터 메모리는 복수의 메모리 주소 범위를 포함하며, 각 파티션은 각각 데이터 메모리 중의 하나의 메모리 주소 범위에 대응된다.
상기 방법의 일부 측면에 있어서, ECC 메모리는 데이터 클리닝 알고리즘에 관련되는 복수의 ECC 비트를 갖는 하나의 파티션을 포함하고, 상기 방법은 상기 ECC 비트를 사용하여 ECC 인코딩 방법을 수행하는 것을 더 포함한다.
상기 방법의 일부 측면에 있어서, ECC 메모리는 버퍼 세트를 포함하되, 그 중, 각 버퍼는 하나의 ECC 코드 워드에 대응되고, 각 ECC 코드 워드는 데이터 메모리 중의 하나의 구간에 대응되며, 각 버퍼는 상기 구간의 상태를 저장한다.
상기 방법의 일부 측면에 있어서, 데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자성 랜덤 액세스 메모리(MRAM)을 포함한다.
상기 방법의 일부 측면에 있어서, 데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자기 터널 접합(MTJ)을 갖는 메모리 유닛을 포함하고, 비트 오류율이 10-12 내지 10-2 사이인 메모리 유닛에 비하여, 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 하나를 갖는다.
상기 방법의 일부 측면에 있어서, 10-12 내지 10-2 사이의 비트 오류율을 갖는 메모리 유닛에 비하여, MJT는 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 두개를 갖는다.
상기 방법의 일부 측면에 있어서, 데이터 메모리는 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM) 또는 임베디드 DRAM(eDRAM)을 포함한다.
상기 방법의 일부 측면에 있어서, 상기 방법은 데이터 메모리가 보호를 받고 있는지 판단하고; 데이터 메모리가 보호를 받고 있다는 판정된 경우에 ECC 체크 비트를 ECC 메모리에 저장하며; 데이터 메모리가 보호를 받고 있지 않는다고 판정된 경우에 연산 데이터를 ECC 메모리에 저장하는 것을 더 포함한다.
상기 방법의 일부 측면에 있어서, 데이터 메모리 및 ECC 메모리는 다른 메모리 회로에 포함된다.
상기 방법의 일부 측면에 있어서, 데이터 메모리 및 ECC 메모리는 같은 메모리 회로에 포함된다.
상기 방법의 일부 측면에 있어서, 메모리 시스템은 호스트 장치에 전기적으로 커플링된다.
상기 방법의 일부 측면에 있어서, 데이터 메모리 및 ECC 메모리는 크기가 20 나노미터 내지 200 나노미터 사이인 MTJ 및 종횡비(width-to-length ratio)가 1 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
상기 방법의 일부 측면에 있어서, 상기 방법은, 데이터 보호 명령을 수신하고; 보호 대기 데이터 중의 각 데이터 워드에 사용되어 수신된 보호 명령에 대한 응답으로서: 데이터 워드에 관련되는 데이터 코드 워드의 주소를 인식하고; 상기 주소를 기반으로 데이터 워드가 데이터 메모리에 저장되었는지 판단하며; 데이터 워드가 데이터 메모리에 저장되었다고 판단한 경우의 응답으로서, 데이터 메모리로부터 데이터 워드를 판독하고; 데이터 워드가 데이터 메모리에 저장되지 않았다고 판단한 경우의 응답으로서: 데이터 워드를 데이터 메모리에 기록하고; 데이터 워드에 대하여 ECC 인코딩 연산을 수행하며; ECC 인코딩 연산을 기반으로 데이터 코드 워드를 생성하고; 상기 주소에 데이터 코드 워드를 데이터 메모리에 기록하며; ECC 인코딩 연산을 기반으로 ECC 체크 비트를 생성하고; 생성된 ECC 체크 비트를 ECC 메모리 중의 대응되는 파티션에 기록하도록 구성된다.
상기 방법의 일부 측면에 있어서, 상기 방법은, 각 클리닝 대기 데이터 코드에 사용되어 수신된 클리닝 데이터 클리닝 명령에 대한 응답으로서: 데이터 코드 워드에 사용되는 시작 주소 및 대응되는 ECC 메모리 파티션을 인식하고; 데이터 메모리로부터 시작 주소에 관련되는 데이터 워드를 판독하며; ECC 메모리로부터 대응되는 ECC 메모리 파티션에 관련되는 ECC 체크 비트를 판독하고; 데이터 워드 및 ECC 체크 비트를 기반으로 ECC 디코딩 연산을 수행하며; ECC 디코딩 연산을 기반으로 데이터 워드에 오류가 포함되어 있는지 판단하고; 데이터 워드에 오류가 포함된다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하되, 그 중 오류 정정 가능 비트를 포함한 데이터 워드는 클리닝된 데이터 워드이며; 데이터 워드에 오류가 포함되지 않는다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하는 것을 포기하되, 그 중 데이터 워드는 클리닝된 데이터 워드이고; 호스트가 클리닝된 데이터 워드를 청구하였는지 판단하고; 호스트가 클리닝된 데이터를 청구하였다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 호스트와 전기적으로 커플링되는 메모리 컨트롤러에 출력하며; 호스트가 클리닝된 데이터를 청구하지 않았다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 메모리 컨트롤러에 출력하는 것을 포기하는 것을 더 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 메모리 시스템은 인공 지능 엣지 연산(edge-AI) 시스템, 데이터 센터의 신경망 유사 시스템, IoT 시스템, 자동자 전자 시스템, 마이크로 컨트롤러 시스템, 이동 통신 시스템, 프로그래밍 가능한 연산 시스템, 하드웨어 안전 시스템, 원격 정조 서비스 시스템, 생물 의학 전자 장치, 로봇 및 드론으로부터 선택된 어느 하나에 포함된다.
일 측면에 있어서, 메모리 시스템은, 제1 비트 오류율에 관련되는 제1 메모리 회로; 제2 비트 오류율에 관련되되, 그 중 제1 비트 오류율은 제2 비트 오류율보다 큰 제2 메모리 회로; 및, 제1 메모리 회로 및 제2 메모리 회로에 저장되는 데이터 워드; 를 포함하고, 그 중, 데이터 워드는 제1 비트 오류율에 관련되는 제1 파티션 및 제2 비트 오류율에 관련되는 제2 파티션을 포함하며, 데이터 워드의 제1 파티션은 제1 메모리 회로에 저장되고, 데이터 워드의 제2 파티션은 제2 메모리 회로에 저장된다.
상기 메모리 시스템의 일부 측면에 있어서, 메모리 시스템은 제1 메모리 회로 및 제2 메모리 회로에 전기적으로 커플링되는 데이터 클리닝 회로를 더 포함하고, 그 중, 데이터 클리닝 회로는 제1 메모리 회로를 제어하여 제1 오류율을 제3 오류율까지 감소시키고, 데이터 클리닝 회로는 제2 메모리 회로를 제어하여 제2 오류율을 제4 오류율까지 감소시키며, 제1 비트 오류율의 감소 정도는 제2 비트 오류율의 감소 정도보다 크게 구성된다.
상기 메모리 시스템의 일부 측면에 있어서, 제1 메모리 회로는 제1 크기의 제1 자기 터널 접합(MTJ) 및 제1 통로 종횡(W/L)비의 제1 MOS 트랜지스터를 갖는 제1 메모리 유닛을 포함하고, 제2 메모리 유닛은 제2 크기의 제2 MTJ 및 제2 W/L비의 제2 MOS 트랜지스터를 갖는 제2 메모리 유닛을 포함하며, 제1 크기는 제2 크기보다 크고, 제1 W/L비는 제2 W/L비보다 크게 구성된다.
상기 메모리 시스템의 일부 측면에 있어서, 제1 메모리 회로는 크기가 40 나노미터 내지 200 나노미터 사이인 MTJ 및 W/L가 2 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 제2 메모리 회로는 크기가 20 나노미터 내지 100 나노미터 사이인 MTJ 및 W/L가 1 내지 100 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 제1 메모리 회로는 제1 판독 전압, 제1 센싱 시간 및 제1 워드 라인(WL) 전압을 사용하고, 제2 메모리 회로는 제2 판독 전압, 제2 센싱 시간 및 제2 WL 전압을 사용하며, 제1 판독 전압은 제2 판독 전압보다 크고, 제1 센싱 시간은 제2 센싱 시간보다 길며, 제1 WL 전압은 제2 WL 전압보다 크게 구성된다.
상기 메모리 시스템의 일부 측면에 있어서, 제1 메모리 회로는 제1 기록 전압, 제1 기록 시간 및 제1 WL 전압을 사용하고, 제2 메모리 회로는 제2 기록 전압, 제2 기록 시간 및 제2 WL 전압을 사용하며, 제1 기록 전압은 제2 기록 전압보다 크고, 제1 기록 시간은 제2 기록 시간보다 길며, 제1 WL 전압은 제2 WL 전압보다 크게 구성된다.
상기 메모리 시스템의 일부 측면에 있어서, 부동 소수점 형식에서 제1 파티션은 부호 비트, 지수 비트 및 가수 비트의 상위 부분을 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 정수 형식에서 제1 파티션은 부호 비트 및 상위 부분을 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 부동 소수점 형식에서 제2 파티션은 가수 비트의 하위 부분을 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 정수 형식에서 제2 파티션은 하위 부분을 포함한다.
일 측면에 있어서, 메모리 시스템의 조작 방법을 게시한 것으로서, 상기 메모리 시스템은 제1 메모리 회로 및 제2 메모리 회로를 포함하고, 상기 방법은, 제1 비트 오류율을 기반으로 메모리 시스템에 저장하여야 할 데이터 워드의 제1 파티션을 판단하고; 제2 비트 오류율을 기반으로 메모리 시스템에 저장하여야 할 데이터 워드의 제2 파티션을 판단하되, 제1 비트 오류율은 제2 비트 오류율보다 크며; 데이터 워드의 제1 파티션을 제1 메모리 회로에 저장하고; 데이터 워드의 제2 파티션을 제2 메모리 회로에 저장하는 것; 을 포함하며; 그 중, 제1 메모리 회로는 제1 비트 오류율에 관련되고, 제2 메모리 회로는 상기 제2 비트 오류율에 관련된다.
상기 방법의 일부 측면에 있어서, 상기 방법은, 제1 메모리 회로를 제어하여 제1 오류율을 제3 오류율까지 감소시키고; 제2 메모리 회로를 제어하여 제2 오류율을 제4 오류율까지 감소시키는 것; 을 더 포함하고, 그 중, 제1 비트 오류율의 감소 정도는 제2 비트 오류율의 감소 정도보다 크게 구성된다.
상기 방법의 일부 측면에 있어서, 제1 메모리 회로는 제1 크기의 제1 MTJ 및 제1 W/L비의 제1 MOS 트랜지스터를 갖는 제1 메모리 유닛을 포함하고, 제2 메모리 유닛은 제2 크기의 제2 MTJ 및 제2 W/L비의 제2 MOS 트랜지스터를 갖는 제2 메모리 유닛을 포함하며, 제1 크기는 제2 크기보다 크고, 제1 W/L비는 제2 W/L비보다 크게 구성된다.
상기 방법의 일부 측면에 있어서, 제1 메모리 회로는 크기가 40 나노미터 내지 200 나노미터 사이인 MTJ 및 W/L가 2 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
상기 방법의 일부 측면에 있어서, 제2 메모리 회로는 크기가 20 나노미터 내지 100 나노미터 사이인 MTJ 및 W/L가 1 내지 100 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함한다.
상기 방법의 일부 측면에 있어서, 상기 방법은, 제1 메모리 회로에서 제1 판독 전압, 제1 센싱 시간 및 제1 WL 전압을 사용하고; 제2 메모리 회로에서 제2 판독 전압, 제2 센싱 시간 및 제2 WL 전압을 사용하는 것; 을 더 포함하고, 그 중, 제1 판독 전압은 제2 판독 전압보다 크고, 제1 센싱 시간은 제2 센싱 시간보다 길며, 제1 WL 전압은 제2 WL 전압보다 크게 구성된다.
상기 방법의 일부 측면에 있어서, 상기 방법은, 제1 메모리 회로에서 제1 기록 전압, 제1 기록 시간 및 제1 WL 전압을 사용하고; 제2 메모리 회로에서 제2 기록 전압, 제2 기록 시간 및 제2 WL 전압을 사용하는 것; 을 포함하고, 그 중, 제1 기록 전압은 제2 기록 전압보다 크고, 제1 기록 시간은 제2 기록 시간보다 길며, 제1 WL 전압은 제2 WL 전압보다 크게 구성된다.
상기 방법의 일부 측면에 있어서, 부동 소수점 형식에서 제1 파티션은 부호 비트, 지수 비트 및 가수 비트의 상위 부분을 포함한다.
상기 방법의 일부 측면에 있어서, 정수 형식에서 제1 파티션은 부호 비트 및 상위 부분을 포함한다.
상기 방법의 일부 측면에 있어서, 부동 소수점 형식에서 제2 파티션은 가수 비트의 하위 부분을 포함한다.
상기 방법의 일부 측면에 있어서, 정수 형식에서 제2 파티션은 하위 부분을 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, 메모리 시스템은 인공 지능 엣지 연산(edge-AI) 시스템, 데이터 센터의 신경망 유사 시스템, IoT 시스템, 자동자 전자 시스템, 마이크로 컨트롤러 시스템, 이동 통신 시스템, 프로그래밍 가능한 연산 시스템, 하드웨어 안전 시스템, 원격 정조 서비스 시스템, 생물 의학 전자 장치, 로봇 및 드론으로부터 선택된 어느 하나에 포함된다.
일 측면에 있어서, 메모리 시스템은, 데이터 입력; 멀티 레벨 셀(MLC) 배열; MLC 배열 및 데이터 입력에 전기적으로 커플링되는 기록 회로; 기록 회로에 전기적으로 커플링되는 그레이 코드로부터 이진 코드로의 디코딩 회로; MLC 배열에 전기적으로 커플링되는 판독 회로; 판독 회로 및 데이터 입력에 전기적으로 커플링되는 이진 코드로부터 그레이 코드로의 인코딩 회로; ECC 체크 비트를 저장하도록 구성되는 메모리 회로; 메모리 회로 및 이진 코드로부터 그레이 코드로의 인코딩 회로에 전기적으로 커플링되는 ECC 인코더; 메모리 회로 및 그레이 코드로부터 이진 코드로의 인코딩 회로에 전기적으로 커플링되고, 회복된 데이터를 출력하도록 구성되는 ECC 디코더; 및, 메모리 시스템 중의 데이터 회복을 제어하도록 구성되는 데이터 클리닝 컨트롤러; 를 포함한다.
상기 메모리 시스템의 일부 측면에 있어서, MLC 배열은 메모리 유닛 회로를 포함하고, 2개 이상의 안정적인 물리적 상태를 가진다.
상기 메모리 시스템의 일부 측면에 있어서, 메모리 유닛 회로는, NOR 유닛으로 구성된 플로팅 게이트 FLASH 유닛, NAND 유닛으로 구성된 플로팅 게이트 FLASH 유닛, NOR 유닛으로 구성된 전하 트랩 FLASH 유닛, NAND 유닛으로 구성된 전하 트랩 FLASH 유닛, 상변화 메모리(PCM) 유닛 및 저항 랜덤 액세스 메모리(RRAM) 유닛으로부터 선택된 어느 하나이다.
상기 메모리 시스템의 일부 측면에 있어서, ECC 인코더 및 디코더는 해밍 코드, BCH 코드, 리드-솔로몬 코드 및 LDPC 코드로부터 선택된 어느 하나를 사용한다.
상기 메모리 시스템의 일부 측면에 있어서, 메모리 회로 및 MLC 배열은 다른 집접회로에 위치한다.
상기 메모리 시스템의 일부 측면에 있어서, 메모리 회로는 MLC 배열의 소정 파티션에 위치한다.
상기 메모리 시스템의 일부 측면에 있어서, 데이터 클리닝 회로는 환경 간섭 감지에 대한 응답 또는 호스트로부터 수신된 명령에 대한 응답으로서, 소정 간격으로 데이터 클리닝 조작을 개시하도록 구성된다.
일 측면에 있어서, MLC에 대하여 데이터 클리닝을 수행하는 방법은, MLC로부터 데이터를 판독하되, 데이터는 이진 코드 또는 아날로그 값으로 표시하고; 데이터를 그레이 코드로 변환하며; ECC 체크 비트를 저장하도록 구성된 메모리 회로로부터 대응되는 체크 비트 데이터를 판독하고; 정정 가능 오류가 그레이 코드 형식의 데이터 중의 위치를 연산하여 정정하며; 정정된 데이터를 이진 코드 또는 정정된 아날로그 값으로 변환하고; 기록 회로를 통하여 정정된 데이터를 MLC 중의 데이터에 재기록하는 것; 을 포함한다.
상기 방법의 일부 측면에 있어서, MLC 배열은 메모리 유닛 회로를 포함하고, 2개 이상의 안정적인 물리적 상태를 가진다.
상기 방법의 일부 측면에 있어서, 메모리 유닛 회로는, NOR 유닛으로 구성된 플로팅 게이트 FLASH 유닛, NAND 유닛으로 구성된 플로팅 게이트 FLASH 유닛, NOR 유닛으로 구성된 전하 트랩 FLASH 유닛, NAND 유닛으로 구성된 전하 트랩 FLASH 유닛, 상변화 메모리(PCM) 유닛 및 저항 랜덤 액세스 메모리(RRAM) 유닛으로부터 선택된 어느 하나이다.
상기 방법의 일부 측면에 있어서, 상기 방법은, 해밍 코드, BCH 코드, 리드-솔로몬 코드 및 LDPC 코드로부터 선택된 어느 하나를 사용하여 ECC 인코딩 및 디코딩을 수행한다.
상기 방법의 일부 측면에 있어서, 메모리 회로 및 MLC 배열은 다른 집접회로에 위치한다.
상기 방법의 일부 측면에 있어서, 메모리 회로는 MLC 배열의 소정 파티션에 위치한다.
상기 방법의 일부 측면에 있어서, 상기 방법은 감지된 환경 간섭에 대한 응답 또는 호스트로부터 수신된 명령에 대한 응답으로서, 소정 간격으로 데이터 클리닝 조작을 개시한다.
상기 메모리 시스템의 일부 측면에 있어서, 메모리 시스템은 인공 지능 엣지 연산(edge-AI) 시스템, 데이터 센터의 신경망 유사 시스템, IoT 시스템, 자동자 전자 시스템, 마이크로 컨트롤러 시스템, 이동 통신 시스템, 프로그래밍 가능한 연산 시스템, 하드웨어 안전 시스템, 원격 정조 서비스 시스템, 생물 의학 전자 장치, 로봇 및 드론으로부터 선택된 어느 하나에 포함된다.
비록 본 발명에서 용어 "전기적 커플링(electrically coupled)" 및 "커플링(coupled)"을 사용하여 판독 회로의 두개의 컴포넌트 사이의 전기적 연결을 설명하였지만, 전기적 연결은 반드시 컴포넌트의 단자 사이를 직접 연결하여 커플링되어야 하는 것은 아니다. 본 발명의 범위를 벗어나지 않는 한, 상기 컴포넌트의 다양한 조합 및 연결을 통하여 정전류 및 조정 가능한 바이어스 전압 판독 회로를 구성할 수 있다. 예를 들면, 회로를 전기적으로 커플링된 컴포넌트의 단자 사이에 연결할 수 있다. 다른 일 예에 있어서, 폐쇄(전도성) 스위치를 커플링된 컴포넌트의 단자 사이에 연결할 수 있다. 또 다른 일 예에 있어서, 회로의 정전류 특성에 영향을 주지 않는 부가 컴포넌트를 커플링된 컴포넌트의 단자 사이에 연결할 수 있다. 예를 들면, 버퍼, 증폭기 및 수동 회로 컴포넌트를 추가하여 판독 회로의 특성에 영향을 주지 않고 본 발명의 범위를 벗어나지 않을 수 있다.
일부 실시예에 있어서, 두개의 전기적으로 커플링된 컴포넌트는 토폴리지 방식으로 커플링될 수 있다. 본문에서 사용된 바와 같이, 두개의 컴포넌트가 토폴로지 내에서 또는 토폴로지의 동일한 부분 내에서 서로 전기적 영향을 주는 경우가 "토폴로지 방식의 커플링(topologically coupled)"이다. 예를 들면, 게시된 판독 회로의 참고 센서와 제1 전류원은 판독 회로의 같은 분지 회로에 전기적으로 커플링된다.
마찬가지로, 비록 본 발명에서 용어 "비 전기적 커플링(electrically uncoupled)"을 사용하여 판독 회로의 두개의 컴포넌트 사이의 전기적 차단을 설명하였지만, 전기적 차단은 반드시 스위칭할 컴포넌트의 단자 사이를 실질적으로 개방하여야 하는 것은 아니다. 또한, "비 커플링"은 두개 컴포넌트 사이의 전기 에너지 전달을 차단하는 것에 제한되는 것은 아니다. 예를 들면, 고저항 컴포넌트를 비 커플링된 컴포넌트의 단자 사이에 연결할 수 있다. 다른 일 예에 있어서, 개방(비 전도성) 스위치를 차단된 컴포넌트의 단자 사이에 연결하여 컴포넌트를 효과적으로 차단할 수 있다.
통상적으로, 본문에서 사용되는 용어 "대체적으로(substantially)"는 (복수의) 컴포넌트 또는 수량이 이상적으로 정확한 품질(예를 들면 고정, 동일, 통일, 동등, 유사, 비례적)을 가짐을 설명하기 위한 것이지만, 실질적으로는 기능 상 정확한 품질과 동등한 품질을 가질 수도 있다. 예를 들면, 컴포넌트 또는 수량을 대체적으로 고정 또는 통일로 설명한 경우, 오차가 시스템(예를 들면 정확도 요구 등)의 공차 범위에 포함되면 상기 고정 또는 통일 값으로부터 이탈할 수도 있다. 다른 일 예에 있어서, 두개 컴포넌트 또는 수량의 대체적으로 동등하다고 설명한 경우, 그 차이가 공차 범위에 포함되고 기능 상에서 시스템의 조작에 영향을 주지 않으면 근사적으로 동등할 수도 있다.
마찬가지로, 비록 일부 요소 또는 수량을 절대적인 의미로 설명하기 위하여 용어 "대체적으로"를 사용하지 않았지만, 상기 요소 및 수량도 기능 상 절대적으로 설명된 품질과 동등한 품질을 가질 수도 있다. 예를 들면, 일부 실시예에 있어서, 비율을 1로 설명할 수 있다. 하지만, 상기 비율이 시스템(예를 들면 정확도 요구 등)의 공차 범위에 포함되면, 상기 비율은 1보다 크거나 작을 수도 있다.
예를 들면, 본문에서 "대체적으로 동일한(substantially the same)" 센서를 사용하여 소정의 자극에 대하여 유사한 응답을 생성할 수 있다. 예를 들면, 소정의 온도 변화는 "대체적으로 동일한" 볼로미터를 사용하여 유사한 저항 변화를 생성할 수 있다.
비록 도면을 참조하여 게시된 실시예를 충분하게 설명하였으나, 주의를 돌려야 할 것은, 다양한 변경 및 수정을 가할 수 있음은 본 분야의 숙련된 기술자들에게 있어서 자명한 것이다. 상기 변경 및 수정은 게시된 실시예 및 첨부된 특허청구범위의 범위에 포함되는 것으로 이해되어야 할 것이다.
본문에서 다양한 실시예를 설명하기 위하여 사용된 용어는 특정 실시예를 설명하기 위한 것일 뿐, 본 발명을 제한하고자 하는 것은 아니다. 특별히 언급하지 않는 한, 상기 다양한 실시예 및 첨부된 특허청구범위의 설명에서 사용된 단수형의 "하나", "한개의" 및 "상기"는 복수형의 의미도 포함한다. 또한, 본문에서 사용된 용어 "및/또는"은 나열된 관련 항목들의 하나 또는 여러개의 임의 및 모든 가능한 조합을 포함한다. 더 설명하여야 할 것은, 본 명세서에서 사용되는 "포함" 및/또는 "포함하는" 등 용어는 해당 특징, 정수, 단계, 조작, 소자 및/또는 컴포넌트의 존재를 의미하는 것일 뿐, 하나 또는 복수의 기타 특징, 정수, 단계, 조작, 소자, 컴포넌트 및/또는 그 조합을 배제하지 않는다.
100, 500, 800, 1110 : 메모리 시스템
110 : 데이터 클리닝 회로
111 : 데이터 버퍼
112 : ECC 연산 엔진
113, 820 : 데이터 클리닝 컨트롤러
120 : 데이터 메모리
130, 230 : ECC 메모리
140 : 환경 간섭 센서
150 : 타이머
160 : 호스트
170, 1120 : 메모리 컨트롤러
220 : 데이터 메모리
221 : ECC 코드 워드
231 : ECC 체크 비트 파티션
300, 400, 700, 1000 : 방법
302, 304, 306, 308,
310, 312a, 312b,
314, 316, 318,
320, 322,
402, 404, 406a,
406b, 408, 410,
412, 414, 416, 418,
420, 422, 424
702, 704, 706, 708
1002, 1004, 1006,
1008, 1010, 1012,
1014 : 단계
502, 504, 506, 814 : 메모리 회로
508, 600 : 데이터 워드
510, 512, 514
602, 604 : 데이터 워드 파티션
516 : 주소
802 : 데이터 입력
804 : MLC 또는 아날로그 메모리 배열
806 : 기록 회로
808 : 그레이 코드로부터 이진 코드로의 디코딩 회로
810 : 판독 회로
812 : 이진 코드로부터 그레이 코드로의 인코딩 회로
816 : ECC 인코더
818 : ECC 디코더
902 : 이진 값
904 : 그레이 코드 값
906, 908 : 곡선
1100 : 시스템
1130, 1202 : 프로세서
1140 : 직접 메모리 액세스 컨트롤러
1150 : 주변 인터페이스
1160 : 실시간 타이머
1170 : 기타 회로
1180 : 버스바 데이터 버스
1200 : 장치
1204 : 통신 장치
1206 : 입력 장치
1208 : 출력 장치
1210 : 기억 장치
1212 : 소프트웨어

Claims (84)

  1. 별개로 구성되고, 독립적으로 동작 가능한 데이터 메모리 및 ECC 메모리 회로; 및,
    ECC 메모리 및 데이터 메모리에 전기적으로 커플링되고, 동시에 또는 독립적으로 데이터 액세스 및 데이터 클리닝 조작을 수행할 수 있으며, 워드 길이에 관련되는 코드 워드를 사용하여 데이터 메모리 중의 오류를 정정하도록 구성되고, 데이터 클리닝 조작 과정 중 데이터 액세스 조작과 다른 코드 워드 길이를 사용하는 데이터 클리닝 회로; 를 포함하는 메모리 시스템.
  2. 제1항에 있어서,
    데이터 클리닝 회로는 수신된 데이터 클리닝 명령에 대한 응답으로서, 데이터 메모리 중의 오류를 정정하도록 구성되는 메모리 시스템.
  3. 제1항에 있어서,
    오류를 정정하기 위하여 사용되는 코드 워드의 길이는 데이터 메모리의 정상적인 액세스 과정 중에 사용되는 워드 길이보다 긴 메모리 시스템.
  4. 제1항에 있어서,
    데이터 클리닝 회로는 데이터 버퍼, 데이터 클리닝 컨트롤러, ECC 인코딩 회로, 및 ECC 디코딩 회로를 포함하는 메모리 시스템.
  5. 제1항에 있어서,
    데이터 클리닝 회로는 데이터 메모리를 액세스하는 동시에 데이터 메모리 중의 오류를 정정하는 메모리 시스템.
  6. 제1항에 있어서,
    환경 조건을 감지하기 위한 환경 간섭 센서를 더 포함하고, 그 중, 데이터 클리닝 회로는 감지된 환경 조건을 기반으로 데이터 클리닝 명령을 생성하는 메모리 시스템.
  7. 제6항에 있어서,
    환경 조건은 온도 및 자기장 중의 적어도 하나를 포함하는 메모리 시스템.
  8. 제1항에 있어서,
    데이터 클리닝 회로는 기지 데이터 중의 변화를 감지하고, 감지된 변화를 기반으로 데이터 클리닝 명령을 생성하도록 구성는 메모리 시스템.
  9. 제1항에 있어서,
    메모리 시스템은,
    경과된 시간을 추적하고;
    경과된 시간이 타이밍 임계값을 초과하는지 판단하며, 경과된 시간이 타이밍 임계값 이상으로 판단되는 경우 데이터 클리닝 명령을 생성하도록 구성되는 타이머 회로를 더 포함하는 메모리 시스템
  10. 제1항에 있어서,
    ECC 메모리는 복수의 파티션을 포함하고,
    데이터 메모리는 복수의 메모리 주소 범위를 포함하며, 각 파티션은 데이터 메모리 중의 하나의 메모리 주소 범위에 대응되는 메모리 시스템.
  11. 제1항에 있어서,
    ECC 메모리는 복수의 ECC 비트를 갖는 하나의 파티션을 포함하고,
    ECC 비트의 수량은 데이터 클리닝 알고리즘에 관련되는 ECC 인코딩 방법을 기반으로 하는 메모리 시스템.
  12. 제1항에 있어서,
    ECC 메모리는 한 조의 버퍼를 포함하되, 그 중,
    각 버퍼는 하나의 ECC 코드 워드에 대응되고,
    각 ECC 코드 워드는 데이터 메모리 중의 하나의 구간에 대응되며,
    각 버퍼는 상기 구간의 상태를 저장하는 메모리 시스템.
  13. 제1항에 있어서,
    데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자성 랜덤 액세스 메모리(MRAM)을 포함하는 메모리 시스템.
  14. 제1항에 있어서,
    데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자기 터널 접합(MTJ)을 갖는 메모리 유닛을 포함하고, 10-12 내지 10-2 사이의 비트 오류율을 갖는 메모리 유닛에 비하여, 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 하나를 갖는 메모리 시스템.
  15. 제14항에 있어서,
    10-12 내지 10-2 사이의 비트 오류율을 갖는 메모리 유닛에 비하여, MTJ는 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 하나를 갖는 메모리 시스템.
  16. 제1항에 있어서,
    데이터 메모리는 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM) 또는 임베디드 DRAM(eDRAM)을 포함하는 메모리 시스템.
  17. 제1항에 있어서,
    데이터 클리닝 회로 또는 호스트는 데이터 메모리가 보호를 받고 있는지 판단하도록 구성되고,
    ECC 메모리는,
    데이터 메모리가 보호를 받고 있다고 판단한 경우에, ECC 체크 비트를 저장하며,
    데이터 메모리가 보호를 받고 있지 않는다고 판단한 경우에, 연산 데이터를 저장하도록 구성되는 메모리 시스템.
  18. 제1항에 있어서,
    데이터 메모리 및 ECC 메모리는 다른 메모리 회로에 포함되는 메모리 시스템.
  19. 제1항에 있어서,
    데이터 메모리 및 ECC 메모리는 같은 메모리 회로에 포함되는 메모리 시스템.
  20. 제1항에 있어서,
    메모리 시스템은 호스트 장치에 전기적으로 커플링되는 메모리 시스템.
  21. 제1항에 있어서,
    데이터 메모리 및 ECC 메모리는 크기가 20 나노미터 내지 200 나노미터 사이인 MTJ 및 종횡비가 1 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함하는 메모리 시스템.
  22. 제1항에 있어서,
    데이터 클리닝 회로는,
    데이터에 적용하기 위한 데이터 보호 명령을 수신하고;
    보호 대기 데이터 중의 각 데이터 워드에 사용되어, 수신된 보호 명령에 대한 응답으로서:
    데이터 워드에 관련되는 데이터 코드 워드의 주소를 인식하고;
    상기 주소에 의하여 상기 데이터 워드가 데이터 메모리에 저장되었는지 판단하며;
    상기 데이터 워드가 데이터 메모리에 저장되었다고 판단한 경우의 응답으로서, 데이터 메모리로부터 상기 데이터 워드를 판독하고;
    상기 데이터 워드가 데이터 메모리에 저장되지 않았다고 판단한 경우의 응답으로서:
    상기 데이터 워드를 수신하고;
    상기 데이터 워드를 데이터 메모리에 기록하며;
    상기 데이터 워드에 대하여 ECC 인코딩 연산을 수행하고;
    ECC 인코딩 연산을 기반으로 데이터 코드 워드를 생성하며;
    상기 주소에 상기 데이터 코드 워드를 데이터 메모리에 기록하고;
    ECC 인코딩 연산을 기반으로 ECC 체크 비트를 생성하며;
    생성된 ECC 체크 비트를 ECC 메모리 중의 대응되는 파티션에 기록하도록 구성되는 메모리 시스템.
  23. 제1항에 있어서,
    데이터 클리닝 회로는,
    데이터 클리닝 명령을 수신하고;
    각 클리닝 대기 데이터 코드에 사용되어, 수신된 클리닝 데이터 클리닝 명령에 대한 응답으로서:
    데이터 코드 워드의 시작 주소, 및
    대응되는 ECC 저장 파티션을 인식하고;
    데이터 메모리로부터 시작 주소에 관련되는 데이터 워드를 판독하며;
    ECC 메모리로부터 대응되는 ECC 메모리 파티션에 관련되는 ECC 체크 비트를 판독하고;
    데이터 워드 및 ECC 체크 비트에 의하여 ECC 디코딩 연산을 수행하며;
    ECC 디코딩 연산을 기반으로 데이터 워드에 오류가 포함되어 있는지 판단하고;
    데이터 워드 중에 오류가 포함된다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하되, 그 중 오류 정정 가능 비트를 포함한 데이터 워드는 클리닝된 데이터 워드이며;
    데이터 워드에 오류가 포함되지 않는다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하는 것을 포기하되, 그 중 데이터 워드는 클리닝된 데이터 워드이고;
    호스트가 클리닝된 데이터 워드를 청구하였는지 판단하고;
    호스트가 클리닝된 데이터를 청구하였다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 호스트와 전기적으로 커플링되는 메모리 컨트롤러에 출력하며;
    호스트가 클리닝된 데이터를 청구하지 않았다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 상기 메모리 컨트롤러에 출력하는 것을 포기하도록 구성되는 메모리 시스템.
  24. 메모리 시스템을 조작하는 방법에 있어서,
    상기 메모리 시스템은,
    별개로 구성되고, 독립적으로 동작 가능한 데이터 메모리 및 ECC 메모리 회로; 및,
    ECC 메모리 및 데이터 메모리에 전기적으로 커플링되는 데이터 클리닝 회로; 를 포함하고,
    상기 방법은,
    수신된 데이터 클리닝 명령에 대한 응답으로서, 데이터 클리닝 회로를 사용하여 동시에 또는 독립적으로 데이터 액세스 및 데이터 클리닝 조작을 수행할 수 있으며, 워드 길이에 관련되는 코드 워드를 사용하여 데이터 메모리 중의 오류를 정정하도록 구성되고, 데이터 클리닝 조작 과정 중 데이터 액세스 조작과 다른 코드 워드 길이를 사용하는 것을 포함하는 방법.
  25. 제24항에 있어서,
    오류를 정정하기 위하여 사용되는 코드 워드의 길이는 데이터 메모리의 정상적인 액세스 과정 중에 사용되는 워드 길이보다 긴 방법.
  26. 제24항에 있어서,
    데이터 클리닝 회로는 데이터 버퍼, 데이터 클리닝 컨트롤러, ECC 인코딩 회로, 및 ECC 디코딩 회로를 포함하는 방법.
  27. 제24항에 있어서,
    데이터 메모리에서 오류를 정정하는 동시에 데이터 메모리를 액세스하는 것을 더 포함하는 방법.
  28. 제24항에 있어서,
    환경 간섭 센서를 사용하여 환경 조건을 감지하고;
    감지된 환경 조건을 기반으로 데이터 클리닝 명령을 생성하는 것을 더 포함하는 방법.
  29. 제28항에 있어서,
    환경 조건은 온도 및 자기장 중의 적어도 하나를 포함하는 방법.
  30. 제24항에 있어서,
    기지 데이터 중의 변화를 감지하고;
    감지된 변화를 기반으로 데이터 클리닝 명령을 생성하는 것을 더 포함하는 방법.
  31. 제24항에 있어서,
    경과된 시간을 추적하고;
    경과된 시간이 타이밍 임계값을 초과하는지 판단하며;
    경과된 시간이 타이밍 임계값 이상으로 판단되는 경우 데이터 클리닝 명령을 생성하는 것을 더 포함하는 방법.
  32. 제24항에 있어서,
    ECC 메모리는 복수의 파티션을 포함하고,
    데이터 메모리는 복수의 메모리 주소 범위를 포함하며, 각 파티션은 데이터 메모리 중의 하나의 메모리 주소 범위에 대응되는 방법.
  33. 제24항에 있어서,
    ECC 메모리는 복수의 데이터 클리닝 알고리즘에 관련되는 ECC 비트를 갖는 하나의 파티션을 포함하고, 상기 방법은 상기 ECC 비트를 사용하여 ECC 인코딩 방법을 수행하는 것을 더 포함하는 방법.
  34. 제24항에 있어서,
    ECC 메모리는 한 조의 버퍼를 포함하되, 그 중,
    각 버퍼는 하나의 ECC 코드 워드에 대응되고,
    각 ECC 코드 워드는 데이터 메모리 중의 하나의 구간에 대응되며,
    각 버퍼는 상기 구간의 상태를 저장하는 방법.
  35. 제24항에 있어서,
    데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자성 랜덤 액세스 메모리(MRAM)을 포함하는 방법.
  36. 제24항에 있어서,
    데이터 메모리 및 ECC 메모리로부터 선택된 적어도 하나는 자기 터널 접합(MTJ)을 갖는 메모리 유닛을 포함하고, 비트 오류율이 10-12 내지 10-2 사이인 메모리 유닛에 비하여, 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 하나를 갖는 방법.
  37. 제36항에 있어서,
    10-12 내지 10-2 사이의 비트 오류율을 갖는 메모리 유닛에 비하여, 상기 MTJ는 치수 감소, 보자력장 약화, 자기 이방성 감소 및 포화 자화 강도 감소로부터 선택된 특성 중의 하나를 갖는 방법.
  38. 제24항에 있어서,
    데이터 메모리는 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM) 또는 임베디드 DRAM(eDRAM)을 포함하는 방법.
  39. 제24항에 있어서,
    데이터 메모리가 보호를 받고 있는지 판단하고;
    데이터 메모리가 보호를 받고 있다는 판정된 경우에, ECC 체크 비트를 ECC 메모리에 저장하며;
    데이터 메모리가 보호를 받고 있지 않는다고 판정된 경우에, 연산 데이터를 ECC 메모리에 저장하는 것을 더 포함하는 방법.
  40. 제24항에 있어서,
    데이터 메모리 및 ECC 메모리는 다른 메모리 회로에 포함되는 방법.
  41. 제24항에 있어서,
    데이터 메모리 및 ECC 메모리는 같은 메모리 회로에 포함되는 방법.
  42. 제24항에 있어서,
    메모리 시스템은 호스트 장치에 전기적으로 커플링되는 방법.
  43. 제24항에 있어서,
    데이터 메모리 및 ECC 메모리는 크기가 20 나노미터 내지 200 나노미터 사이인 MTJ 및 종횡비가 1 내지 200 사이인 MOS 트랜지스터를 갖는 메모리 유닛을 포함하는 방법.
  44. 제24항에 있어서,
    데이터에 적용하기 위한 데이터 보호 명령을 수신하고;
    보호 대기 데이터 중의 각 데이터 워드에 사용되어, 수신된 보호 명령에 대한 응답으로서:
    데이터 워드에 관련되는 데이터 코드 워드의 주소를 인식하고;
    상기 주소에 의하여 상기 데이터 워드가 데이터 메모리에 저장되었는지 판단하며;
    상기 데이터 워드가 데이터 메모리에 저장되었다고 판단한 경우의 응답으로서, 데이터 메모리로부터 상기 데이터 워드를 판독하고;
    상기 데이터 워드가 데이터 메모리에 저장되지 않았다고 판단한 경우의 응답으로서:
    상기 데이터 워드를 수신하고;
    상기 데이터 워드를 데이터 메모리에 기록하며;
    상기 데이터 워드에 대하여 ECC 인코딩 연산을 수행하고;
    ECC 인코딩 연산을 기반으로 데이터 코드 워드를 생성하며;
    상기 주소에 상기 데이터 코드 워드를 데이터 메모리에 기록하고;
    ECC 인코딩 연산을 기반으로 ECC 체크 비트를 생성하며;
    생성된 ECC 체크 비트를 ECC 메모리 중의 대응되는 파티션에 기록하도록 구성되는 방법.
  45. 제24항에 있어서,
    각 클리닝 대기 데이터 코드에 사용되어, 수신된 클리닝 데이터 클리닝 명령에 대한 응답으로서:
    데이터 코드 워드의 시작 주소, 및
    대응되는 ECC 저장 파티션을 인식하고;
    데이터 메모리로부터 시작 주소에 관련되는 데이터 워드를 판독하며;
    ECC 메모리로부터 대응되는 ECC 메모리 파티션에 관련되는 ECC 체크 비트를 판독하고;
    데이터 워드 및 ECC 체크 비트에 의하여 ECC 디코딩 연산을 수행하며;
    ECC 디코딩 연산을 기반으로 데이터 워드에 오류가 포함되어 있는지 판단하고;
    데이터 워드 중에 오류가 포함된다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하되, 그 중 오류 정정 가능 비트를 포함한 데이터 워드는 클리닝된 데이터 워드이며;
    데이터 워드에 오류가 포함되지 않는다고 판단한 경우의 응답으로서, 데이터 워드 중의 오류 정정 가능 비트로 오류 비트를 대체하는 것을 포기하되, 그 중 데이터 워드는 클리닝된 데이터 워드이고;
    호스트가 클리닝된 데이터 워드를 청구하였는지 판단하고;
    호스트가 클리닝된 데이터 워드를 청구하였다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 호스트와 전기적으로 커플링되는 메모리 컨트롤러에 출력하며;
    호스트가 클리닝된 데이터 워드를 청구하지 않았다고 판단한 경우의 응답으로서, 클리닝된 데이터 워드를 메모리 컨트롤러에 출력하는 것을 포기하도록 구성되는 방법.
  46. 제1항 내지 제23항 중의 어느 한 항에 있어서,
    메모리 시스템은 인공 지능 엣지 연산(edge-AI) 시스템, 데이터 센터의 신경망 유사 시스템, IoT 시스템, 자동자 전자 시스템, 마이크로 컨트롤러 시스템, 이동 통신 시스템, 프로그래밍 가능한 연산 시스템, 하드웨어 안전 시스템, 원격 정조 서비스 시스템, 생물 의학 전자 장치, 로봇 및 드론으로부터 선택된 어느 하나에 포함되는 메모리 시스템.

  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
  69. 삭제
  70. 삭제
  71. 삭제
  72. 삭제
  73. 삭제
  74. 삭제
  75. 삭제
  76. 삭제
  77. 삭제
  78. 삭제
  79. 삭제
  80. 삭제
  81. 삭제
  82. 삭제
  83. 삭제
  84. 삭제
KR1020217013943A 2018-10-12 2019-10-11 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템 KR102657783B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020247012010A KR102687054B1 (ko) 2018-10-12 2019-10-11 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201862745204P 2018-10-12 2018-10-12
US62/745,204 2018-10-12
US201862755702P 2018-11-05 2018-11-05
US62/755,702 2018-11-05
US201962886967P 2019-08-15 2019-08-15
US62/886,967 2019-08-15
PCT/US2019/055963 WO2020077283A1 (en) 2018-10-12 2019-10-11 Error correcting memory systems

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020247012010A Division KR102687054B1 (ko) 2018-10-12 2019-10-11 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20210075138A KR20210075138A (ko) 2021-06-22
KR102657783B1 true KR102657783B1 (ko) 2024-04-15

Family

ID=70164037

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020247012010A KR102687054B1 (ko) 2018-10-12 2019-10-11 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템
KR1020217013943A KR102657783B1 (ko) 2018-10-12 2019-10-11 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020247012010A KR102687054B1 (ko) 2018-10-12 2019-10-11 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템

Country Status (7)

Country Link
US (2) US11204835B2 (ko)
EP (1) EP3864500A4 (ko)
JP (1) JP7224689B2 (ko)
KR (2) KR102687054B1 (ko)
CN (1) CN112930519B (ko)
TW (2) TWI750517B (ko)
WO (1) WO2020077283A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12034015B2 (en) 2018-05-25 2024-07-09 Meta Platforms Technologies, Llc Programmable pixel array
KR102687054B1 (ko) 2018-10-12 2024-07-22 수퍼멤, 인크. 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템
US11888002B2 (en) 2018-12-17 2024-01-30 Meta Platforms Technologies, Llc Dynamically programmable image sensor
US11962928B2 (en) 2018-12-17 2024-04-16 Meta Platforms Technologies, Llc Programmable pixel array
US12108141B2 (en) 2019-08-05 2024-10-01 Meta Platforms Technologies, Llc Dynamically programmable image sensor
US11935291B2 (en) 2019-10-30 2024-03-19 Meta Platforms Technologies, Llc Distributed sensor system
US11948089B2 (en) 2019-11-07 2024-04-02 Meta Platforms Technologies, Llc Sparse image sensing and processing
US11825228B2 (en) 2020-05-20 2023-11-21 Meta Platforms Technologies, Llc Programmable pixel array having multiple power domains
US12075175B1 (en) 2020-09-08 2024-08-27 Meta Platforms Technologies, Llc Programmable smart sensor with adaptive readout
EP4246328A4 (en) * 2020-12-08 2024-01-03 Huawei Technologies Co., Ltd. STORAGE APPARATUS, STORAGE CONTROL APPARATUS AND SYSTEM-ON-CHIP
US11935575B1 (en) * 2020-12-23 2024-03-19 Meta Platforms Technologies, Llc Heterogeneous memory system
US20220269599A1 (en) * 2021-02-25 2022-08-25 International Business Machines Corporation Sensor based memory array data scrubbing
TWI794967B (zh) 2021-09-10 2023-03-01 臺灣發展軟體科技股份有限公司 資料處理電路及故障修補方法
US11972822B2 (en) * 2021-09-24 2024-04-30 Sandisk Technologies Llc Programmable ECC for MRAM mixed-read scheme
US11640332B1 (en) * 2021-10-15 2023-05-02 Infineon Technologies Ag Execute in place architecture with integrity check
CN114822611B (zh) * 2022-06-27 2022-09-27 波平方科技(杭州)有限公司 用于近似计算的磁性存储芯片、模组及系统级封装芯片
CN115083487B (zh) * 2022-08-23 2022-12-06 北京灵汐科技有限公司 存储器件、存储方法、读取装置和读取方法
CN115938461A (zh) * 2022-12-06 2023-04-07 上海美仁半导体有限公司 存储装置、纠错存储系统、芯片和车辆
WO2024206318A1 (en) * 2023-03-28 2024-10-03 Qualcomm Incorporated System and method for providing a processor boot for safety protected memories

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010029592A1 (en) * 2000-01-25 2001-10-11 Walker William J. Memory sub-system error cleansing
US20060212778A1 (en) * 2005-03-16 2006-09-21 Wheeler Andrew R Hardware based memory scrubbing
WO2010071655A1 (en) * 2008-12-19 2010-06-24 Hewlett-Packard Development Company, L.P. Redundant data storage for uniform read latency
US20110289386A1 (en) * 2009-06-24 2011-11-24 Magic Technologies, Inc. Method and apparatus for scrubbing accumulated data errors from a memory system
US20120110411A1 (en) * 2010-10-29 2012-05-03 Brocade Communications Systems, Inc. Content Addressable Memory (CAM) Parity And Error Correction Code (ECC) Protection
US20170161142A1 (en) * 2015-12-08 2017-06-08 Nvidia Corporation Method for scrubbing and correcting dram memory data with internal error-correcting code (ecc) bits contemporaneously during self-refresh state

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832340B2 (en) * 2000-01-26 2004-12-14 Hewlett-Packard Development Company, L.P. Real-time hardware memory scrubbing
US6751769B2 (en) 2000-06-06 2004-06-15 International Business Machines Corporation (146,130) error correction code utilizing address information
US7080200B2 (en) 2003-08-14 2006-07-18 Hitachi Global Storage Technologies Netherlands B.V. System and method for handling writes in HDD using 4K block sizes
US20060256615A1 (en) 2005-05-10 2006-11-16 Larson Thane M Horizontal and vertical error correction coding (ECC) system and method
US7562285B2 (en) * 2006-01-11 2009-07-14 Rambus Inc. Unidirectional error code transfer for a bidirectional data link
US8042029B2 (en) * 2006-05-21 2011-10-18 Ramot At Tel Aviv University Ltd. Error correction decoding by trial and error
US8041989B2 (en) * 2007-06-28 2011-10-18 International Business Machines Corporation System and method for providing a high fault tolerant memory system
US8255772B1 (en) * 2008-06-18 2012-08-28 Cisco Technology, Inc. Adaptive memory scrub rate
US8171234B2 (en) * 2009-03-16 2012-05-01 Mosys, Inc. Multi-bank multi-port architecture
US8769374B2 (en) * 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
EP2447842A1 (en) * 2010-10-28 2012-05-02 Thomson Licensing Method and system for error correction in a memory array
KR101873526B1 (ko) * 2011-06-09 2018-07-02 삼성전자주식회사 에러 정정회로를 구비한 온 칩 데이터 스크러빙 장치 및 방법
JP2013109567A (ja) * 2011-11-21 2013-06-06 Toshiba Corp ストレージデバイス及び誤り訂正方法
US9065483B2 (en) * 2013-01-21 2015-06-23 Micron Technology, Inc. Determining soft data using a classification code
KR102024033B1 (ko) * 2013-03-04 2019-09-24 삼성전자주식회사 이동 통신 시스템에서 메모리 제어 방법 및 장치
US9136873B2 (en) * 2013-03-11 2015-09-15 Intel Corporation Reduced uncorrectable memory errors
US9268637B2 (en) * 2013-03-15 2016-02-23 Silicon Space Technology Corporation Memory circuit incorporating error detection and correction (EDAC), method of operation, and system
WO2016143168A1 (en) * 2015-03-10 2016-09-15 Kabushiki Kaisha Toshiba Memory device and memory system
US9823962B2 (en) * 2015-04-22 2017-11-21 Nxp Usa, Inc. Soft error detection in a memory system
TWI566091B (zh) * 2015-09-10 2017-01-11 慧榮科技股份有限公司 用來對一錯誤更正碼進行解碼之方法與解碼電路
KR102435181B1 (ko) * 2015-11-16 2022-08-23 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US9965352B2 (en) * 2015-11-20 2018-05-08 Qualcomm Incorporated Separate link and array error correction in a memory system
US9823964B2 (en) * 2015-12-08 2017-11-21 Nvidia Corporation Method for memory scrub of DRAM with internal error correcting code (ECC) bits during either memory activate and/or precharge operation
US10049006B2 (en) * 2015-12-08 2018-08-14 Nvidia Corporation Controller-based memory scrub for DRAMs with internal error-correcting code (ECC) bits contemporaneously during auto refresh or by using masked write commands
KR101795217B1 (ko) 2016-03-07 2017-11-08 이화여자대학교 산학협력단 패리티가 포함된 전송 패킷을 인코딩 또는 디코딩하는 장치 및 방법
US20170286216A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Energy efficient read/write support for a protected memory
US10042700B2 (en) * 2016-05-28 2018-08-07 Advanced Micro Devices, Inc. Integral post package repair
KR102647418B1 (ko) * 2016-06-23 2024-03-13 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
US10642492B2 (en) * 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
KR102508132B1 (ko) * 2016-10-31 2023-03-09 주식회사 멤레이 자기 저항 메모리 모듈 및 이를 포함하는 컴퓨팅 디바이스
KR20180060084A (ko) * 2016-11-28 2018-06-07 삼성전자주식회사 반도체 메모리 장치의 스크러빙 컨트롤러, 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법
KR102410022B1 (ko) * 2017-11-24 2022-06-21 에스케이하이닉스 주식회사 에러스크럽방법 및 이를 이용한 반도체모듈
KR102687054B1 (ko) 2018-10-12 2024-07-22 수퍼멤, 인크. 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010029592A1 (en) * 2000-01-25 2001-10-11 Walker William J. Memory sub-system error cleansing
US20060212778A1 (en) * 2005-03-16 2006-09-21 Wheeler Andrew R Hardware based memory scrubbing
WO2010071655A1 (en) * 2008-12-19 2010-06-24 Hewlett-Packard Development Company, L.P. Redundant data storage for uniform read latency
US20110289386A1 (en) * 2009-06-24 2011-11-24 Magic Technologies, Inc. Method and apparatus for scrubbing accumulated data errors from a memory system
US20120110411A1 (en) * 2010-10-29 2012-05-03 Brocade Communications Systems, Inc. Content Addressable Memory (CAM) Parity And Error Correction Code (ECC) Protection
US20170161142A1 (en) * 2015-12-08 2017-06-08 Nvidia Corporation Method for scrubbing and correcting dram memory data with internal error-correcting code (ecc) bits contemporaneously during self-refresh state

Also Published As

Publication number Publication date
US20240054050A1 (en) 2024-02-15
JP7224689B2 (ja) 2023-02-20
TW202025167A (zh) 2020-07-01
TW202230386A (zh) 2022-08-01
US20220188187A1 (en) 2022-06-16
KR20210075138A (ko) 2021-06-22
WO2020077283A1 (en) 2020-04-16
TWI750517B (zh) 2021-12-21
US11748194B2 (en) 2023-09-05
KR102687054B1 (ko) 2024-07-22
TWI792682B (zh) 2023-02-11
KR20240051328A (ko) 2024-04-19
JP2022508694A (ja) 2022-01-19
CN112930519A (zh) 2021-06-08
US11204835B2 (en) 2021-12-21
EP3864500A1 (en) 2021-08-18
CN112930519B (zh) 2024-09-24
US20210311827A1 (en) 2021-10-07
EP3864500A4 (en) 2022-10-12

Similar Documents

Publication Publication Date Title
KR102657783B1 (ko) 오류 정정 및 데이터 클리닝 회로가 구비된 메모리 시스템
KR102002925B1 (ko) 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법
TWI517172B (zh) 用於資料感測之方法、裝置及系統
US8464137B2 (en) Probabilistic multi-tier error correction in not-and (NAND) flash memory
KR101750457B1 (ko) Ecc를 이용하는 메모리 장치 및 그 시스템
KR102588969B1 (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
TWI716630B (zh) 用於以電流積分感測產生機率資訊之裝置及方法
US9105359B2 (en) Nonvolatile memory device and error correction methods thereof
KR20220022478A (ko) 메모리 기반의 물리적 복제방지 기능들을 제공하기 위한 방법 및 장치
KR20180000594A (ko) 반도체장치 및 반도체시스템
US10572189B2 (en) Method and decoder to adjust an error locator polynomial based on an error parity
US10804935B2 (en) Techniques for reducing latency in the detection of uncorrectable codewords
CN114840451A (zh) 存储装置、存储系统和操作存储装置的方法
US20130246847A1 (en) Method of detecting error in write data and data processing system to perform the method
US11875039B2 (en) Temperature-based scrambling for error control in memory systems
KR20200070686A (ko) 저장 장치 및 그 동작 방법
US12124332B2 (en) Error correcting memory systems
US20210202021A1 (en) Memory proximity disturb management
US20240128986A1 (en) Storage device performing error correction and operating method of storage device
KR20160051331A (ko) 데이터 복구 방법 및 이를 사용한 비휘발성 메모리 시스템

Legal Events

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