KR102449346B1 - 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템 - Google Patents

메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템 Download PDF

Info

Publication number
KR102449346B1
KR102449346B1 KR1020170170426A KR20170170426A KR102449346B1 KR 102449346 B1 KR102449346 B1 KR 102449346B1 KR 1020170170426 A KR1020170170426 A KR 1020170170426A KR 20170170426 A KR20170170426 A KR 20170170426A KR 102449346 B1 KR102449346 B1 KR 102449346B1
Authority
KR
South Korea
Prior art keywords
error
memory
processed data
state information
memory controller
Prior art date
Application number
KR1020170170426A
Other languages
English (en)
Other versions
KR20190069998A (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 KR1020170170426A priority Critical patent/KR102449346B1/ko
Priority to US16/024,941 priority patent/US10866855B2/en
Priority to EP18200077.8A priority patent/EP3499376B1/en
Priority to CN201811502100.9A priority patent/CN110046112A/zh
Publication of KR20190069998A publication Critical patent/KR20190069998A/ko
Application granted granted Critical
Publication of KR102449346B1 publication Critical patent/KR102449346B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 개시는 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템을 제공한다. 메모리 장치는 읽기 커맨드에 응답하여 데이터를 출력한다. 메모리 장치는 읽기 커맨드에 응답하여 메모리 장치에 저장된 데이터에 기초하여 제 1 연산을 수행하여 제 1 처리된 데이터를 생성하는 제 1 기능 회로를 포함한다. 메모리 컨트롤러는 호스트로부터 수신되는 읽기 요청에 응답하여 메모리 장치로 읽기 커맨드를 제공한다. 메모리 컨트롤러는 제 1 연산을 수행하는 것과 관련되는 상태 정보를 수신한다. 메모리 컨트롤러는 제 1 처리된 데이터에 기초하여 제 2 연산을 수행하여 제 2 처리된 데이터를 생성하는 제 2 기능 회로를 포함한다. 제 2 연산의 방식은 상태 정보에 기초하여 가변한다. 본 개시에 따르면, 메모리 시스템의 동작의 안정성, 신뢰성, 및 유연성이 향상될 수 있다.

Description

메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템 {MEMORY SYSTEM VARYING OPERATION OF MEMORY CONTROLLER ACCORDING TO INTERNAL STATUS OF MEMORY DEVICE}
본 개시는 전자 장치에 관한 것으로, 좀 더 구체적으로는 데이터를 저장하고 출력하는 메모리 시스템의 구성들 및 동작들에 관한 것이다.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 전자 회로들의 동작들에 따라 고유의 기능을 수행한다. 메모리 시스템은 데이터를 저장하거나 저장된 데이터를 출력하기 위해 다양한 전자 회로를 포함할 수 있고, 단일의 전자 장치 상에서 또는 복수의 전자 장치에 걸쳐 구현될 수 있다.
메모리 시스템은 저장될 데이터 및 출력될 데이터에 대해 다양한 연산을 수행할 수 있다. 예로서, 메모리 시스템은 데이터를 암호화/복호화, 압축/압축해제, 및 변환하고 데이터의 오류를 검출 및 정정하기 위한 연산들을 수행할 수 있다. 이러한 일련의 동작들에 따라, 메모리 시스템은 사용자의 요청에 적합하도록 데이터를 저장하고 출력할 수 있다.
한편, 다양한 전자 장치가 널리 이용되고 데이터 및 정보의 양이 증가함에 따라, 메모리 시스템에 대해 다양한 요구사항(Requirement)이 요청되고 있다. 예로서, 작은 회로 면적 상의 메모리 장치에서 많은 양의 데이터를 저장하기 위해 반도체 제조 공정의 스케일(Scale)이 점점 더 작아지고 있고, 안정적이고 신뢰성 있는 데이터 처리를 위해 다양한 기능을 구현하는 것이 요구되고 있다.
나아가, 사용자는 다양한 환경(Condition)에서 전자 장치를 이용할 수 있고, 따라서 유연한 동작들을 제공하는 메모리 시스템이 요구될 수 있다. 엄격한(Rigid) 구성의 메모리 시스템은 특정 환경에서 적절한 기능을 제공하지 못하거나 잘못된 연산을 수행할 수 있다. 따라서, 환경 또는 상태(Status)에 따라 유연하게 동작하는 메모리 시스템을 구현하는 것은 중요한 이슈일 수 있다.
본 개시의 실시 예들은 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 유연하게 가변(Vary)하도록 구성되는 메모리 시스템을 제공할 수 있다.
몇몇 실시 예에서, 메모리 시스템은 메모리 장치 및 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 읽기 커맨드에 응답하여 데이터를 출력할 수 있다. 메모리 장치는 제 1 기능 회로를 포함할 수 있다. 제 1 기능 회로는, 읽기 커맨드에 응답하여, 메모리 장치에 저장된 데이터에 기초하여 제 1 연산을 수행하여 제 1 처리된 데이터를 생성할 수 있다. 메모리 컨트롤러는, 호스트로부터 수신되는 읽기 요청에 응답하여, 데이터가 메모리 장치로부터 출력되도록, 메모리 장치로 읽기 커맨드를 제공할 수 있다. 메모리 컨트롤러는 제 1 연산을 수행하는 것과 관련되는 상태 정보(Status Information)를 수신할 수 있다. 메모리 컨트롤러는 제 2 기능 회로를 포함할 수 있다. 제 2 기능 회로는 제 1 처리된 데이터에 기초하여 제 2 연산을 수행하여 제 2 처리된 데이터를 생성할 수 있다. 제 2 연산의 방식은 상태 정보에 기초하여 가변할 수 있다.
몇몇 실시 예에서, 메모리 시스템은 메모리 장치 및 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 메모리 장치에 저장된 데이터에 기초하여 제 1 오류 처리 연산을 수행하여 제 1 처리된 데이터를 생성할 수 있다. 메모리 컨트롤러는 제 1 오류 처리 연산을 수행하는 것과 관련되는 상태 정보를 수신할 수 있다. 메모리 컨트롤러는 제 1 처리된 데이터에 기초하여 제 2 오류 처리 연산을 수행하여 제 2 처리된 데이터를 생성할 수 있다. 제 1 처리된 데이터와 관련하여 제 2 오류 처리 연산에 의해 검출되는 오류들의 최대 개수는 메모리 장치에 저장된 데이터와 관련하여 제 1 오류 처리 연산에 의해 검출되는 오류들의 최대 개수보다 많을 수 있다. 제 2 오류 처리 연산의 방식은 상태 정보에 기초하여 가변할 수 있다.
몇몇 실시 예에서, 메모리 시스템은 메모리 장치 및 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 메모리 장치에 저장된 데이터에 기초하여 제 1 연산을 수행하여 제 1 처리된 데이터를 생성할 수 있다. 메모리 컨트롤러는 제 1 연산을 수행하는 것과 관련되는 상태 정보를 수신할 수 있다. 메모리 컨트롤러는 제 1 처리된 데이터에 기초하여 제 2 연산을 수행하여 제 2 처리된 데이터를 생성할 수 있다. 제 1 처리된 데이터는 상태 정보의 변경과 관련하여 메모리 장치에서 상이하게 생성될 수 있다. 제 2 연산의 방식은 상태 정보에 기초하여 가변할 수 있다. 제 2 처리된 데이터는 상태 정보의 변경에 따라 메모리 컨트롤러에서 상이하게 생성될 수 있다.
몇몇 실시 예에서, 메모리 시스템은 메모리 장치 및 메모리 컨트롤러를 포함할 수 있다. 메모리 컨트롤러는 메모리 장치로부터 수신되는 데이터에 기초하여 기능 연산을 수행하여 처리된 데이터를 생성할 수 있다. 메모리 컨트롤러는 메모리 장치에서 수행되는 동작과 관련되는 상태 정보를 수신할 수 있다. 메모리 컨트롤러는 상이한 방식들 중에서 상태 정보에 기초하여 선택되는 방식으로 기능 연산을 수행할 수 있다. 상태 정보가 변경됨에 따라, 메모리 컨트롤러에서 수신되는 데이터가 변경될 수 있다.
본 개시의 실시 예들에 따르면, 메모리 시스템이 환경 또는 상태에 따라 상이하게 동작할 수 있고, 주어진 환경 또는 상태에 적합하게 연산이 수행될 수 있다. 몇몇 실시 예에서, 검출 및 정정 불가능한(Undetectable and Uncorrectable) 오류가 발생하는 것이 방지될 수 있고, 연산 성능 및 전력 소모가 관리될 수 있다. 따라서, 메모리 시스템의 동작의 안정성, 신뢰성, 및 유연성이 향상될 수 있다.
도 1은 몇몇 실시 예에 따른 전자 시스템의 예시적인 구성을 보여주는 블록도이다.
도 2는 도 1의 스토리지 장치와 관련되는 예시적인 구성을 보여주는 블록도이다.
도 3은 몇몇 실시 예에 따른 메모리 시스템의 예시적인 구성을 보여주는 블록도이다.
도 4는 도 3의 메모리 장치의 예시적인 구성을 보여주는 블록도이다.
도 5는 도 3의 메모리 시스템과 관련되는 예시적인 구성을 보여주는 블록도이다.
도 6은 도 5의 메모리 시스템에서 수행되는 오류 처리 연산을 설명하기 위한 표이다.
도 7은 도 3의 메모리 시스템과 관련되는 예시적인 구성을 보여주는 블록도이다.
도 8은 도 7의 메모리 장치들에서 패리티를 이용하여 데이터를 저장하고 출력하는 예시적인 동작을 설명하기 위한 블록도이다.
도 9 및 도 10은 도 7의 메모리 시스템에서 상태 정보에 기초하여 가변하는 메모리 컨트롤러의 예시적인 동작들을 설명하기 위한 블록도들이다.
도 11은 도 7의 가변 ECC(Error Correction Code) 회로의 예시적인 구성을 보여주는 블록도이다.
도 12는 도 3의 메모리 시스템과 관련되는 예시적인 구성을 보여주는 블록도이다.
도 13 및 도 14는 도 12의 메모리 시스템에서 상태 정보에 기초하여 가변하는 메모리 컨트롤러의 예시적인 동작들을 설명하기 위한 블록도들이다.
도 15는 도 12의 가변 압축해제(Decompressor) 회로의 예시적인 구성을 보여주는 블록도이다.
도 16 내지 도 18은 도 3의 메모리 시스템에서 메모리 컨트롤러로 상태 정보를 제공하기 위한 예시적인 구성들을 보여주는 블록도들이다.
도 19는 도 3의 메모리 시스템과 관련되는 예시적인 동작을 설명하는 흐름도이다.
아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)가 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 몇몇 실시 예가 명확하고 상세하게 설명될 것이다.
도 1은 몇몇 실시 예에 따른 전자 시스템(1000)의 예시적인 구성을 보여주는 블록도이다.
전자 시스템(1000)은 메인 프로세서(1101), 워킹 메모리(1200), 스토리지 장치(1300), 통신 블록(1400), 유저 인터페이스(1500), 및 버스(1600)를 포함할 수 있다. 예로서, 전자 시스템(1000)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 웨어러블(Wearable) 장치, 비디오 게임기(Video Game Console), 워크스테이션, 하나 이상의 서버, 전기 자동차, 가전기기, 의료기기 등과 같은 전자 장치들 중 하나일 수 있다.
메인 프로세서(1101)는 전자 시스템(1000)의 전반적인 동작들을 제어할 수 있다. 예로서, 메인 프로세서(1101)는 하나 이상의 프로세서 코어를 포함하는 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서로 구현될 수 있다.
워킹 메모리(1200)는 전자 시스템(1000)의 동작에 이용되는 데이터를 저장할 수 있다. 예로서, 워킹 메모리(1200)는 메인 프로세서(1101)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 예로서, 워킹 메모리(1200)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous RAM) 등과 같은 휘발성 메모리, 및/또는 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
예로서, 워킹 메모리(1200)는 하나 이상의 메모리 장치(1210) 및 컨트롤러(1230)를 포함할 수 있다. 메모리 장치들(1210)은 데이터를 저장하거나 출력하기 위해 메모리 소자들을 포함할 수 있다. 메모리 장치들(1210)의 개수는 전자 시스템(1000)의 요구사항에 적합하도록 다양하게 변경 또는 수정될 수 있다.
컨트롤러(1230)는 메모리 장치들(1210)이 데이터를 저장하거나 출력하도록 메모리 장치들(1210)을 제어할 수 있다. 컨트롤러(1230)는 메모리 장치들(1210)에 저장될 및 메모리 장치들(1210)로부터 출력되는 데이터에 기초하여 다양한 기능 연산을 수행할 수 있다.
스토리지 장치(1300)는 전력 공급에 관계없이 데이터를 저장할 수 있다. 예로서, 스토리지 장치(1300)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다. 예로서, 스토리지 장치(1300)는 SSD(Solid State Drive), 카드 스토리지, 임베디드(Embedded) 스토리지 등과 같은 스토리지 매체를 포함할 수 있다.
통신 블록(1400)은 전자 시스템(1000)의 외부 장치/시스템과 통신하기 위해 다양한 무선/유선 통신 규약 중 적어도 하나를 지원할 수 있다. 유저 인터페이스(1500)는 사용자와 전자 시스템(1000) 사이의 통신을 중재하기 위해 다양한 입력/출력 인터페이스를 포함할 수 있다.
버스(1600)는 전자 시스템(1000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 전자 시스템(1000)의 구성 요소들은 버스(1600)의 버스 포맷에 따라 데이터를 교환할 수 있다. 예로서, 버스 포맷은 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCIe(Peripheral Component Interconnect Express), M-PCIe(Mobile PCIe), SATA(Serial Advanced Technology Attachment), SAS(Serial Attached SCSI), NVMe(Nonvolatile Memory Express), UFS(Universal Flash Storage), DDR(Double Data Rate), LPDDR(Low Power DDR) 등의 다양한 인터페이스 규약 중 하나 이상을 포함할 수 있다.
도 2는 도 1의 스토리지 장치(1300)와 관련되는 예시적인 구성을 보여주는 블록도이다.
도 1을 참조하여 설명된 것처럼, 메인 프로세서(1101)는 버스(1600)를 통해 워킹 메모리(1200) 및 스토리지 장치(1300)와 통신할 수 있다. 본 개시에서, 워킹 메모리(1200) 또는 스토리지 장치(1300)와 같은 전자 시스템(1000)의 구성 요소로 접근할 수 있는 객체는 "호스트"(예컨대, 호스트(1100))로 불릴 수 있다. 메인 프로세서(1101)는 호스트(1100)로서 동작할 수 있는 객체들의 한 예시일 수 있으나, 본 발명은 이에 한정되지 않는다.
호스트(1100)는 스토리지 장치(1300)와 데이터(DAT)를 교환할 수 있다. 스토리지 장치(1300)는 호스트(1100)로부터 수신되는 커맨드(CMD)에 응답하여, 호스트(1100)로 스토리지 서비스를 제공할 수 있다.
예로서, 호스트(1100)는 쓰기 요청을 포함하는 커맨드(CMD) 및 쓰기 데이터를 포함하는 데이터(DAT)를 스토리지 장치(1300)로 제공할 수 있다. 스토리지 장치(1300)는 쓰기 요청에 응답하여, 요청된 쓰기 데이터를 저장할 수 있다. 예로서, 호스트(1100)는 읽기 요청을 포함하는 커맨드(CMD)를 스토리지 장치(1300)로 제공할 수 있다. 스토리지 장치(1300)는 읽기 요청에 응답하여, 요청된 읽기 데이터를 호스트(1100)로 출력할 수 있다.
스토리지 장치(1300)는 하나 이상의 메모리 장치, 스토리지 컨트롤러(1330), 및 하나 이상의 버퍼 메모리(1351, 1359)를 포함할 수 있다. 예로서, 도 2는 두 개의 메모리 장치(1311, 1319) 및 두 개의 버퍼 메모리(1351, 1359)를 보여주지만, 스토리지 장치(1300)에 포함되는 메모리 장치들 및 버퍼 메모리들의 개수는 다양하게 변경 또는 수정될 수 있다.
메모리 장치들(1311, 1319) 각각은 호스트(1100)에 의해 요청되는 데이터를 저장하거나 출력할 수 있다. 이를 위해, 메모리 장치들(1311, 1319) 각각은 데이터를 저장하기 위한 메모리 영역을 포함할 수 있다.
메모리 영역은 "어드레스"로 불리는 값에 기초하여 식별될 수 있다. 호스트(1100)는 메모리 장치들(1311, 1319)의 특정 메모리 영역과 관련하여 데이터(DAT)를 교환하기 위해, 어드레스(ADDR)를 스토리지 장치(1300)로 제공할 수 있다. 쓰기 데이터는 어드레스(ADDR)에 의해 지시되는(Directed) 메모리 영역에 저장될 수 있고, 읽기 데이터는 어드레스(ADDR)에 의해 지시되는 메모리 영역으로부터 출력될 수 있다.
버퍼 메모리들(1351, 1359)은 스토리지 장치(1300)의 동작에 이용되는 데이터를 버퍼링할 수 있다. 예로서, 버퍼 메모리(1350)는 호스트(1100)로부터 제공되는 어드레스(ADDR)와 메모리 장치들(1311, 1319) 상의 물리 어드레스 사이의 변환(Translation)을 수행하기 위해 참조되는 어드레스 변환 정보를 저장할 수 있다. 예로서, 버퍼 메모리들(1351, 1359)은 메모리 장치들(1311, 1319)로부터 출력되는 데이터의 오류를 검출하고 정정하기 위해 참조되는 ECC(Error Correction Code) 정보를 저장할 수 있다. 이를 위해, 버퍼 메모리들(1351, 1359)은 SRAM, DRAM, SDRAM 등과 같은 휘발성 메모리, 및/또는 PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지 컨트롤러(1330)는 스토리지 장치(1300)의 전반적인 동작들을 제어할 수 있다. 이를 위해, 예로서, 스토리지 컨트롤러(1330)는 불휘발성 메모리(NVM) 컨트롤러(1331), 호스트 인터페이스 회로(1333), 버퍼 컨트롤러(1335), 하나 이상의 프로세서 코어(1337), 내부 버퍼(1338), 및 온-칩 버스(On-chip Bus; 1339)를 포함할 수 있다.
불휘발성 메모리 컨트롤러(1331)는 메모리 장치들(1311, 1319)과의 인터페이싱을 제공할 수 있다. 불휘발성 메모리 컨트롤러(1331)는 메모리 장치들(1311, 1319)이 데이터를 저장하거나 출력하도록 메모리 장치들(1311, 1319)을 제어할 수 있다. 불휘발성 메모리 컨트롤러(1331)는 메모리 장치들(1311, 1319)에 저장될 및 메모리 장치들(1311, 1319)로부터 출력되는 데이터에 기초하여 다양한 기능 연산을 수행할 수 있다.
호스트 인터페이스(1333)는 호스트(1100)와의 인터페이싱을 제공할 수 있다. 호스트 인터페이스(1333)는 호스트(1100)로부터 수신되는 커맨드(CMD), 데이터(DAT), 및 어드레스(ADDR)의 포맷과 스토리지 컨트롤러(1330)에서 다루어지는 포맷 사이에서 적절한 변환을 수행할 수 있다.
버퍼 컨트롤러(1335)는 버퍼 메모리들(1351, 1359)과의 인터페이싱을 제공할 수 있다. 버퍼 컨트롤러(1335)는 버퍼 메모리들(1351, 1359)이 데이터를 저장하거나 출력하도록 버퍼 메모리들(1351, 1359)을 제어할 수 있다. 버퍼 컨트롤러(1335)는 버퍼 메모리들(1351, 1359)에 저장될 및 버퍼 메모리들(1351, 1359)로부터 출력되는 데이터에 기초하여 다양한 기능 연산을 수행할 수 있다.
스토리지 컨트롤러(1330)의 구성 요소들은 위에서 설명된 및 아래에서 설명될 동작들을 수행하도록 구성되는 하나 이상의 하드웨어 구성 요소(예컨대, 아날로그 회로, 논리 회로 등)를 포함할 수 있다.
나아가, 스토리지 컨트롤러(1330)는 하나 이상의 프로세서 코어(1337)를 포함할 수 있다. 위에서 설명된 및 아래에서 설명될 스토리지 컨트롤러(1330)의 구성 요소들의 동작들은 소프트웨어 및/또는 펌웨어의 프로그램 코드로 구현될 수 있고, 프로세서 코어들(1337)은 프로그램 코드의 명령어 집합을 실행할 수 있다. 프로세서 코어들(1337)은 명령어 집합을 실행하기 위해 다양한 산술/논리 연산을 처리할 수 있다.
내부 버퍼(1338)는 프로세서 코어들(1337)에 의해 처리된 및 처리될 데이터를 저장할 수 있다. 내부 버퍼(1338)는 호스트(1100)로부터 수신되는 데이터(DAT), 커맨드(CMD), 및 어드레스(ADDR)를 일시적으로 저장할 수 있다. 내부 버퍼(1338)는 메모리 장치들(1311, 1319)로부터 출력되는 데이터를 일시적으로 저장할 수 있다. 예로서, 내부 버퍼(1338)는 SRAM, DRAM, SDRAM 등과 같은 휘발성 메모리, 및/또는 PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
온-칩 버스(1339)는 스토리지 컨트롤러(1330)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 이를 위해, 온-칩 버스(1339)는 하나 이상의 인터페이스 규약을 지원할 수 있고, 전도성 물질(Conductive Material)을 통해 물리적인 신호 전송을 가능하게 할 수 있다.
도 3은 몇몇 실시 예에 따른 메모리 시스템(2000)의 예시적인 구성을 보여주는 블록도이다.
메모리 시스템(2000)은 하나 이상의 메모리 장치(2100) 및 메모리 컨트롤러(2300)를 포함할 수 있다. 도 3은 세 개의 메모리 장치(2110, 2120, 2190)를 보여주지만, 메모리 시스템(2000)에 포함되는 메모리 장치들의 개수는 다양하게 변경 또는 수정될 수 있다.
메모리 시스템(2000)은 단일의 전자 장치 상에서 구현될 수 있다. 또는, 메모리 시스템(2000)은 복수의 전자 장치에 걸쳐 구현되거나, 복수의 칩으로 구현될 수 있다.
예로서, 메모리 시스템(2000)은 도 1의 워킹 메모리(1200)로 구현될 수 있고, 메모리 장치들(2110, 2120, 2190) 및 메모리 컨트롤러(2300)는 도 1의 메모리 장치들(1210) 및 컨트롤러(1230)에 각각 대응할 수 있다. 몇몇 경우, 메모리 시스템(2000)은 도 2의 스토리지 장치(1300) 내에 구현될 수 있다. 예로서, 메모리 장치들(2110, 2120, 2190) 및 메모리 컨트롤러(2300)는 도 2의 메모리 장치들(1311, 1319) 및 불휘발성 메모리 컨트롤러(1331)에 각각 대응할 수 있다. 예로서, 메모리 장치들(2110, 2120, 2190) 및 메모리 컨트롤러(2300)는 도 2의 버퍼 메모리들(1351, 1359) 및 버퍼 컨트롤러(1335)에 각각 대응할 수 있다.
위 예들은 더 나은 이해를 가능하게 하기 위해 가능한 실시 예들 중 몇몇을 설명하고, 본 발명을 한정하도록 의도되지 않는다. 메모리 시스템(2000)은 데이터를 저장하기 위한 하나 이상의 메모리 장치 및 그 메모리 장치들을 제어하기 위한 메모리 컨트롤러를 포함하는 어떠한 구성으로든 구현될 수 있다. 아래에서, 몇몇 실시 예가 특정 유형의 메모리(예컨대, DRAM, 플래시 메모리 등)와 관련하여 설명될 것이지만, 이 실시 예들은 어떠한 유형의 메모리에서든 채용될 수 있음이 잘 이해될 것이다.
각 메모리 장치(2110, 2120, 2190)는 데이터를 저장할 수 있다. 각 메모리 장치(2110, 2120, 2190)는, 메모리 컨트롤러(2300)로부터 수신되는 읽기 커맨드에 응답하여, 저장된 데이터를 출력할 수 있다. 메모리 컨트롤러(2300)는, 호스트(1100)로부터 수신되는 읽기 요청의 커맨드(CMD)에 응답하여, 요청된 데이터가 저장된 메모리 장치로 읽기 커맨드를 제공할 수 있다. 따라서, 요청된 데이터가 대응하는 메모리 장치로부터 출력될 수 있다. 각 메모리 장치(2110, 2120, 2190)는 하나의 반도체 메모리 칩 또는 다이 상에 구현될 수 있다.
메모리 장치들(2110, 2120, 2190)은 내부 기능 회로들(2111, 2121, 2191)을 각각 포함할 수 있다. 내부 기능 회로들(2111, 2121, 2191)은 각 메모리 장치들(2110, 2120, 2190) 내부에 제공될 수 있다. 본 개시에서, 각 내부 기능 회로(2111, 2121, 2191)는 제 1 기능 회로로도 언급될 수 있다.
내부 기능 회로들(2111, 2121, 2191)은 각 메모리 장치들(2110, 2120, 2190)에 저장된 데이터에 기초하여 제 1 연산을 수행할 수 있다. 내부 기능 회로들(2111, 2121, 2191)은, 메모리 컨트롤러(2300)로부터 수신되는 읽기 커맨드에 응답하여, 제 1 연산을 수행할 수 있다. 메모리 장치들(2110, 2120, 2190)은 내부 기능 회로들(2111, 2121, 2191)에 의해 제 1 연산을 수행하여 제 1 처리된 데이터(mDAT)를 생성할 수 있다.
제 1 연산은 다양한 유형(Type)의 연산들 중 하나 이상을 포함할 수 있고, 내부 기능 회로들(2111, 2121, 2191) 각각의 기능은 제 1 연산의 유형에 의존하여 결정될 수 있다. 예로서, 제 1 연산은 오류 처리 연산(예컨대, 오류 검출, 오류 정정 등), 암호화/복호화 연산, 압축/압축해제 연산, 인코딩/디코딩 연산 등의 일부 또는 전부를 포함할 수 있다. 내부 기능 회로들(2111, 2121, 2191)의 기능들은 동일하거나 상이할 수 있다.
메모리 컨트롤러(2300)는, 메모리 장치들(2110, 2120, 2190)이 데이터를 저장하거나 출력하도록, 메모리 장치들(2110, 2120, 2190)을 제어할 수 있다. 이를 위해, 메모리 컨트롤러(2300)는 다양한 연산을 수행할 수 있다. 예로서, 메모리 컨트롤러(2300)는 외부 가변 기능 회로(2310)를 포함할 수 있다. 외부 가변 기능 회로(2310)는 메모리 장치들(2110, 2120, 2190) 외부에 제공될 수 있다. 본 개시에서, 외부 가변 기능 회로(2310)는 제 2 기능 회로로도 언급될 수 있다.
메모리 컨트롤러(2300)는 메모리 장치들(2110, 2120, 2190)로부터 제 1 처리된 데이터(mDAT)를 수신할 수 있다. 외부 가변 기능 회로(2310)는 제 1 처리된 데이터(mDAT)에 기초하여 제 2 연산을 수행할 수 있다. 메모리 컨트롤러(2300)는 외부 가변 기능 회로(2310)에 의해 제 2 연산을 수행하여 제 2 처리된 데이터(pDAT)를 생성할 수 있다.
제 2 연산은 다양한 유형의 연산들 중 하나 이상을 포함할 수 있고, 외부 가변 기능 회로(2310)의 기능은 제 2 연산의 유형에 의존하여 결정될 수 있다. 예로서, 제 2 연산은 오류 처리 연산(예컨대, 오류 검출, 오류 정정 등), 암호화/복호화 연산, 압축/압축해제 연산, 인코딩/디코딩 연산 등의 일부 또는 전부를 포함할 수 있다.
외부 가변 기능 회로(2310)의 기능은 내부 기능 회로들(2111, 2121, 2191)의 기능들과 동일하거나 상이할 수 있다. 다시 말해, 제 2 연산의 유형은 제 1 연산의 유형과 동일하거나 상이할 수 있다.
제 2 연산의 유형이 제 1 연산의 유형과 동일한 경우, 외부 가변 기능 회로(2310)의 능력(Capability)은 각 내부 기능 회로(2111, 2121, 2191)의 능력과 상이할 수 있다. 예로서, 각 메모리 장치(2110, 2120, 2190)의 회로 면적은 메모리 컨트롤러(2300)의 회로 면적보다 작을 수 있고, 따라서 각 내부 기능 회로(2111, 2121, 2191)의 능력은 외부 가변 기능 회로(2310)의 능력보다 낮을 수 있다. 예로서, 제 1 연산 및 제 2 연산이 오류 검출 연산을 포함하는 경우, 각 내부 기능 회로(2111, 2121, 2191)에 의해 검출되는 오류들의 최대 개수는 외부 가변 기능 회로(2310)에 의해 검출되는 오류들의 최대 개수보다 적을 수 있다.
읽기 요청이 호스트(1000)로부터 수신됨에 따라, 메모리 컨트롤러(2300)는 요청된 데이터가 저장된 메모리 장치로 읽기 커맨드를 제공할 수 있다. 따라서, 읽기 커맨드를 수신한 메모리 장치는 내부 기능 회로에 의해 제 1 연산을 수행할 수 있다. 나아가, 메모리 컨트롤러(2300)는 제 1 연산의 결과에 기초하여 제 2 연산을 수행할 수 있다.
메모리 컨트롤러(2300)는 상태 정보(STAT)를 수신할 수 있다. 상태 정보(STAT)는 각 메모리 장치(2110, 2120, 2190)에서 제 1 연산을 수행하는 것과 관련될 수 있다. 예로서, 상태 정보(STAT)는 메모리 장치들(2110, 2120, 2190)이 내부 기능 회로들(2111, 2121, 2191)을 포함하는지 여부(즉, 각 메모리 장치(2110, 2120, 2190)가 제 1 연산을 지원하는지 여부), 각 메모리 장치(2110, 2120, 2190)에서 제 1 연산을 수행하는 것이 활성화(Enable)되었는지 여부, 제 1 연산의 유형, 각 내부 기능 회로(2111, 2121, 2191)의 능력, 제 1 연산이 수행되는 각 메모리 장치(2110, 2120, 2190)의 환경(Condition) 등과 같은 다양한 요인 중 적어도 하나와 관련되는 정보를 포함할 수 있다.
예로서, 메모리 시스템(2000)의 설계에 의존하여, 메모리 장치들(2110, 2120, 2190)은 내부 기능 회로들(2111, 2121, 2191)을 포함하거나 포함하지 않을 수 있다. 예로서, 메모리 시스템(2000) 또는 호스트(1000)의 동작 정책에 따라, 각 내부 기능 회로(2111, 2121, 2191)의 동작이 활성화되거나 비활성화(Disable)될 수 있다. 예로서, 제 1 연산이 수행되는 각 메모리 장치(2110, 2120, 2190)의 환경은 통신 대역폭, 장치 온도, 예상되는 잔여 수명 등과 같은 다양한 요인과 관련될 수 있다. 상태 정보(STAT)는 제 1 연산을 수행하는 것과 관련되는 정보를 알리기 위해 메모리 컨트롤러(2300)로 제공될 수 있다.
상태 정보(STAT)의 변경(예컨대, 각 내부 기능 회로(2111, 2121, 2191)의 활성화/비활성화의 변경, 각 메모리 장치(2110, 2120, 2190)의 온도의 변경 등)은 제 1 연산의 수행과 관련되는 변경을 의미할 수 있다. 따라서, 상태 정보(STAT)가 변경되는 경우, 제 1 처리된 데이터(mDAT)는 메모리 장치들(2110, 2120, 2190)에서 상태 정보(STAT)가 변경되기 전의 것과 상이하게 생성될 수 있다. 예로서, 상태 정보(STAT)가 제 1 정보로부터 제 2 정보로 변경되는 경우, 제 1 처리된 데이터(mDAT)의 맥락은 제 1 맥락으로부터 제 1 맥락과 상이한 제 2 맥락으로 변경될 수 있다. 그러므로, 상태 정보(STAT)가 변경됨에 따라, 메모리 컨트롤러(2300)에서 수신되는 제 1 처리된 데이터(mDAT)가 변경될 수 있다.
외부 가변 기능 회로(2310)의 동작은 상태 정보(STAT)에 기초하여 가변할 수 있고, 제 2 연산의 방식이 상태 정보(STAT)에 기초하여 가변할 수 있다. 따라서, 상태 정보(STAT)가 변경되는 경우, 제 2 연산의 방식이 변경될 수 있다. 예로서, 제 2 연산의 방식은 제 2 연산의 유형 및 제 2 연산의 능력 중 적어도 하나에 따라 결정될 수 있다.
몇몇 실시 예에서, 외부 가변 기능 회로(2310)는 상이한 방식들 중에서 상태 정보(STAT)에 기초하여 선택되는 방식으로 제 2 연산을 수행할 수 있다. 예로서, 상태 정보(STAT)가 변경되는 경우, 외부 가변 기능 회로(2310)의 능력이 제 1 능력으로부터 제 2 능력으로 변경될 수 있다. 몇몇 실시 예에서, 외부 가변 기능 회로(2310)는 복수의 유형의 연산들 중에서 상태 정보(STAT)에 기초하여 선택되는 유형의 제 2 연산을 수행할 수 있다. 예로서, 상태 정보(STAT)가 변경되는 경우, 외부 가변 기능 회로(2310)의 제 2 연산의 유형이 제 1 유형으로부터 제 2 유형으로 변경될 수 있다. 상태 정보(STAT)의 변경과 관련되는 몇몇 예시가 도 7 내지 도 15를 참조하여 설명될 것이다.
상태 정보(STAT)가 변경되는 경우, 제 2 연산의 유형 또는 방식이 변경될 수 있다. 따라서, 상태 정보(STAT)가 변경되는 경우, 제 2 처리된 데이터(pDAT)는 메모리 컨트롤러(2300)에서 상태 정보(STAT)가 변경되기 전(즉, 제 2 연산의 유형 또는 방식이 변경되기 전)의 것과 상이하게 생성될 수 있다. 예로서, 상태 정보(STAT)가 제 1 정보로부터 제 2 정보로 변경되는 경우, 제 2 처리된 데이터(pDAT)의 맥락은 제 1 맥락으로부터 제 1 맥락과 상이한 제 2 맥락으로 변경될 수 있다.
메모리 컨트롤러(2300)는 제 2 처리된 데이터(pDAT)를 출력할 수 있다. 또는, 메모리 컨트롤러(2300)는 제 2 처리된 데이터(pDAT)를 후처리 및/또는 변환하여 생성되는 데이터를 출력할 수 있다. 메모리 컨트롤러(2300)로부터 출력되는 데이터는 호스트(1100)의 읽기 요청에 대응하는 요청된 데이터를 포함할 수 있다. 따라서, 메모리 컨트롤러(2300)는 요청된 데이터를 제 2 처리된 데이터(pDAT)에 기초하여 호스트(1100)로 제공할 수 있다.
실시 예들에 따르면, 메모리 시스템(2000)의 동작에 의존하여, 메모리 컨트롤러(2300)(좀 더 구체적으로는 외부 가변 기능 회로(2310))가 상이하게 동작할 수 있다. 따라서, 주어진 환경 또는 상태에 적합하게 연산이 수행될 수 있고, 메모리 시스템(2000)의 동작의 유연성이 향상될 수 있다.
도 4는 도 3의 메모리 장치(2110)의 예시적인 구성을 보여주는 블록도이다.
메모리 장치(2110)는 내부 기능 회로(2111), 메모리 셀 어레이(2112), 어드레스 디코더(2113), 감지 증폭기(2114), 입력/출력 회로(2115), 및 제어 로직 회로(2116)를 포함할 수 있다. 다른 메모리 장치들(2120, 2190) 각각은 메모리 장치(2110)와 동일하거나 유사하게 구성될 수 있다.
메모리 셀 어레이(2112)는 복수의 메모리 셀(예컨대, 메모리 셀(MC))을 포함할 수 있다. 각 메모리 셀(MC)은 워드 라인(WL) 및 비트 라인(BL)과 연결될 수 있다. 각 메모리 셀(MC)은 데이터 비트를 저장할 수 있다. 각 메모리 셀(MC)은 1비트를 저장하는 단일 레벨 셀(Single Level Cell) 또는 적어도 2비트를 저장하는 멀티 레벨 셀(Multi Level Cell)을 포함할 수 있다.
어드레스 디코더(2113)는 워드 라인들(WLs)을 통해 메모리 셀 어레이(2112)와 연결될 수 있다. 어드레스 디코더(2113)는 메모리 컨트롤러(2300)로부터 어드레스(ADDR')를 수신할 수 있고, 수신된 어드레스(ADDR')를 디코딩할 수 있다. 어드레스 디코더(2113)는 디코딩된 어드레스(ADDR')에 기초하여 워드 라인들(WLs)을 구동할 수 있다.
감지 증폭기(2114)는 비트 라인들(BLs)을 통해 메모리 셀 어레이(2112)와 연결될 수 있다. 감지 증폭기(2114)는 메모리 셀 어레이(2112)로부터 읽히는 데이터를 감지할 수 있다. 내부 기능 회로(2111)는 감지 증폭기(2114)에 의해 감지되는 데이터에 기초하여 제 1 연산을 수행할 수 있다.
입력/출력 회로(2115)는 데이터(DAT')가 메모리 컨트롤러(2300)와 메모리 셀 어레이(2112) 사이에서 교환되도록 메모리 장치(2110)의 데이터 입력/출력을 관리할 수 있다. 예로서, 제 1 처리된 데이터(mDAT)가 내부 기능 회로(2111)의 제 1 연산에 의해 생성될 수 있고, 입력/출력 회로(2115)는 제 1 처리된 데이터(mDAT)를 메모리 컨트롤러(2300)로 출력할 수 있다.
제어 로직 회로(2116)는 메모리 컨트롤러(2300)로부터 커맨드(CMD') 및 제어 신호(CTRL)를 수신할 수 있다. 제어 로직 회로(130)는 수신된 신호들에 기초하여 내부 기능 회로(2111), 어드레스 디코더(2113), 감지 증폭기(2114), 및 입력/출력 회로(2115)를 제어할 수 있다.
도 5는 도 3의 메모리 시스템(2000)과 관련되는 예시적인 구성을 보여주는 블록도이다.
예로서, 메모리 시스템(2000)은 도 5의 메모리 시스템(100)과 같은 구성을 포함할 수 있다. 도 5의 하나 이상의 메모리 장치(110)는 도 3의 하나 이상의 메모리 장치(2100)에 대응할 수 있고, 도 5의 메모리 컨트롤러(130)는 도 3의 메모리 컨트롤러(2300)에 대응할 수 있다. 간결성을 위해, 메모리 장치들(110) 및 메모리 컨트롤러(130)와 관련되는 중복되는 설명들은 이하 생략될 것이다.
메모리 장치들(111, 112, 119)은 내부 기능 회로들(2111, 2121, 2191)로서 ECC 회로들(111a, 112a, 119a)을 각각 포함할 수 있다. 각 ECC 회로(111a, 112a, 119a)는, 주어진 ECC 스킴에 따라, 대응하는 메모리 장치(111, 112, 119)로부터 출력되는 데이터에 기초하여 오류 처리 연산(예컨대, 오류 검출 및 오류 정정)을 수행할 수 있다. 메모리 장치들(111, 112, 119)은 오류 처리 연산을 수행하여 제 1 처리된 데이터(mDAT1)를 생성할 수 있다.
예로서, 각 ECC 회로(111a, 112a, 119a)는 SEC(Single Error Correction) 방식으로 동작할 수 있다. 이 경우, 각 ECC 회로(111a, 112a, 119a)는 대응하는 메모리 장치(111, 112, 119)로부터 출력되는 데이터의 1비트 에러를 검출 및 정정할 수 있지만, 2비트를 넘는 에러를 검출하지 못할 수 있다.
예로서, 메모리 컨트롤러(130)는 외부 가변 기능 회로(2310) 대신, 엄격한(Rigid) 구성의 ECC 회로(131)를 포함할 수 있다. ECC 회로(131)는, 주어진 ECC 스킴에 따라, 제 1 처리된 데이터(mDAT1)에 기초하여 오류 처리 연산(예컨대, 오류 검출 및 오류 정정)을 수행할 수 있다. 메모리 컨트롤러(130)는 오류 처리 연산을 수행하여 제 2 처리된 데이터(pDAT1)를 생성할 수 있다.
예로서, ECC 회로(131)는 SEC/DED(Single Error Correction/Double Error Detection) 방식으로 동작할 수 있다. 이 경우, ECC 회로(131)는 제 1 처리된 데이터(mDAT1)의 1비트 에러를 검출 및 정정할 수 있고 1비트 또는 2비트 에러를 검출할 수 있지만, 3비트를 넘는 에러를 검출하지 못할 수 있다.
예로서, 작은 회로 면적 상의 메모리 장치들(111, 112, 119)에서 많은 양의 데이터를 저장하기 위해 반도체 제조 공정의 스케일(Scale)이 점점 더 작아지고 있고, 많은 양의 데이터를 빠르게 처리하기 위해 메모리 장치들(111, 112, 119)의 동작 속도가 빨라지고 있다. 이로 인해, 메모리 장치들(111, 112, 119)에서 출력되는 데이터가 오류를 포함할 가능성이 있다.
따라서, 안정적이고 신뢰성 있는 데이터 처리를 위해, ECC 회로(131)와 함께 ECC 회로들(111a, 112a, 119a)이 채용될 수 있다. 다만, 몇몇 경우, 각 메모리 장치(111a, 112a, 119a)의 회로 면적이 작을 수 있고, 따라서 각 ECC 회로(111a, 112a, 119a)의 능력(예컨대, 최대 검출 가능 비트들의 개수)은 ECC 회로(131)의 능력보다 낮을 수 있다.
도 6은 도 5의 메모리 시스템(100)에서 수행되는 오류 처리 연산을 설명하기 위한 표이다.
예로서, 도 5의 도시와 달리, 메모리 장치들(111, 112, 119)이 SEC 방식의 ECC 회로들(111a, 112a, 119a) 없이 구성될 수 있다. 메모리 장치들(111, 112, 119)에서 1개 오류 비트가 발생하는 경우, 메모리 컨트롤러(130)는 1개 오류 비트를 포함하는 제 1 처리된 데이터(mDAT1)를 수신할 수 있다. 이 경우, ECC 회로(131)는 1개 오류 비트를 검출 및 정정할 수 있고, 메모리 컨트롤러(130)는 오류 비트 없이 정정된 제 2 처리된 데이터(pDAT1)를 생성할 수 있다.
한편, 메모리 장치들(111, 112, 119)에서 2개 오류 비트들이 발생하는 경우, 메모리 컨트롤러(130)는 2개 오류 비트들을 포함하는 제 1 처리된 데이터(mDAT1)를 수신할 수 있다. 이 경우, ECC 회로(131)는 2개 오류 비트들을 검출할 수 있다. 메모리 컨트롤러(130)는 제 2 처리된 데이터(pDAT1)를 생성할 수 있고, 2개 오류 비트들의 발생을 호스트(1100)로 알릴 수 있다.
예로서, 도 5에 나타낸 것처럼, 메모리 장치들(111, 112, 119)이 SEC 방식의 ECC 회로들(111a, 112a, 119a)과 함께 구성될 수 있다. 메모리 장치들(111, 112, 119)에서 1개 오류 비트가 발생하는 경우, ECC 회로들(111a, 112a, 119a)은 1개 오류 비트를 검출 및 정정할 수 있다. 따라서, 메모리 컨트롤러(130)는 오류 비트 없이 정정된 제 1 처리된 데이터(mDAT1)를 수신할 수 있다.
한편, 메모리 장치들(111, 112, 119)에서 2개 오류 비트들이 발생할 수 있다. 몇몇 경우, ECC 회로들(111a, 112a, 119a)은 2개 오류 비트들을 검출 및 정정하지 못할 수 있고, 따라서 메모리 컨트롤러(130)는 2개 오류 비트들을 포함하는 제 1 처리된 데이터(mDAT1)를 수신할 수 있다. 이 경우, ECC 회로(131)는 2개 오류 비트들을 검출할 수 있다. 메모리 컨트롤러(130)는 제 2 처리된 데이터(pDAT1)를 생성할 수 있고, 2개 오류 비트들의 발생을 호스트(1100)로 알릴 수 있다.
그러나, 몇몇 경우, ECC 회로들(111a, 112a, 119a)은 2개 오류 비트들을 포함하는 데이터에 대해 잘못된 오류 처리 연산을 수행할 수 있다. 잘못된 오류 처리 연산에 기인하여, 2개 오류 비트들을 포함하였던 데이터는 3개 오류 비트들을 포함하도록 잘못 수정될 수 있다. 따라서, 메모리 컨트롤러(130)는 3개 오류 비트들을 포함하는 제 1 처리된 데이터(mDAT1)를 수신할 수 있다. 이 경우, ECC 회로(131)는 3개 오류 비트들을 정정하지도 검출하지도 못할 수 있다.
결과적으로, 호스트(1100)는 오류 발생을 인지하지 못하고 잘못된 데이터를 수신할 수 있고, 신뢰성 및 안정성이 저하될 수 있다. 이처럼, 메모리 장치들(111, 112, 119) 내부에 ECC 회로들(111a, 112a, 119a)이 채용되는 경우, 오히려 검출 및 정정 불가능한(Undetectable and Uncorrectable) 오류가 발생할 가능성이 있다.
도 7은 도 3의 메모리 시스템(2000)과 관련되는 예시적인 구성을 보여주는 블록도이다.
예로서, 메모리 시스템(2000)은 도 7의 메모리 시스템(3000)과 같은 구성을 포함할 수 있다. 도 7의 하나 이상의 메모리 장치(3100)는 도 3의 하나 이상의 메모리 장치(2100)에 대응할 수 있고, 도 7의 메모리 컨트롤러(3300)는 도 3의 메모리 컨트롤러(2300)에 대응할 수 있다. 간결성을 위해, 메모리 장치들(3100) 및 메모리 컨트롤러(3300)와 관련되는 중복되는 설명들은 이하 생략될 것이다.
메모리 장치들(3110, 3120, 3190)은 내부 기능 회로들(2111, 2121, 2191)로서 ECC 회로들(3111, 3121, 3191)을 각각 포함할 수 있다. 각 ECC 회로(3111, 3121, 3191)는, 주어진 ECC 스킴에 따라, 대응하는 메모리 장치(3110, 3120, 3190)에 저장된 데이터에 기초하여 제 1 오류 처리 연산(예컨대, 오류 검출 및 오류 정정)을 수행할 수 있다. 메모리 장치들(3110, 3120, 3190)은 제 1 오류 처리 연산을 수행하여 제 1 처리된 데이터를 생성할 수 있다.
예로서, 각 ECC 회로(3111, 3121, 3191)는 SEC 방식으로 동작할 수 있다. 이 경우, 각 ECC 회로(3111, 3121, 3191)는 대응하는 메모리 장치(3110, 3120, 3190)에 저장된 데이터의 1비트 에러를 검출 및 정정할 수 있지만, 2비트를 넘는 에러를 검출하지 못할 수 있다.
몇몇 실시 예에서, 메모리 장치들(3120, 3190)은 데이터를 저장하기 위해 제공될 수 있다. 한편, 메모리 장치(3110)는 메모리 장치들(3120, 3190)에 저장되는 데이터의 오류를 처리하는 데에 참조되는 패리티를 저장하기 위해 제공될 수 있다. 이러한 구성은 도 8을 참조하여 설명될 것이다.
예로서, 메모리 컨트롤러(3300)는 외부 가변 기능 회로(2310)로서 가변 ECC 회로(3310)를 포함할 수 있다. 가변 ECC 회로(3310)는 제 1 처리된 데이터에 기초하여 제 2 오류 처리 연산(예컨대, 오류 검출 및/또는 오류 정정)을 수행할 수 있다. 메모리 컨트롤러(3300)는 제 2 오류 처리 연산을 수행하여 제 2 처리된 데이터를 생성할 수 있다. 가변 ECC 회로(3310)는 상이한 방식들로 동작하도록 구성될 수 있고, 구체적인 동작들은 도 9 내지 도 11을 참조하여 설명될 것이다.
메모리 컨트롤러(3300)는 메모리 장치들(3110, 3120, 3190)에서 제 1 오류 처리 연산을 수행하는 것과 관련되는 상태 정보를 수신할 수 있다. 예로서, 상태 정보는 메모리 장치들(3110, 3120, 3190)이 ECC 회로들(3111, 3121, 3191)을 포함하는지 여부(즉, 각 메모리 장치(3110, 3120, 3190)가 제 1 오류 처리 연산을 지원하는지 여부), 제 1 오류 처리 연산이 수행되는 각 메모리 장치(3110, 3120, 3190)의 환경, 오류 처리를 위한 패리티 등과 같은 다양한 요인 중 적어도 하나와 관련되는 정보를 포함할 수 있다.
예로서, 상태 정보는 각 메모리 장치(3110, 3120, 3190)에서 제 1 오류 처리 연산을 수행하는 것이 활성화되었는지 여부와 관련되는 정보를 포함할 수 있다. ECC 회로들(3111, 3121, 3191)은 상태 정보와 관련하여 활성화되거나 비활성화될 수 있다. 예로서, 메모리 시스템(3000) 또는 호스트(1100)의 동작 정책에 따라 ECC 회로들(3111, 3121, 3191)이 활성화 또는 비활성화될 수 있고, 상태 정보는 ECC 회로들(3111, 3121, 3191)의 활성화/비활성화를 나타낼 수 있다.
가변 ECC 회로(3310)의 제 2 오류 처리 연산의 방식은 상태 정보에 기초하여 가변할 수 있다. 예로서, 가변 ECC 회로(3310)는 상태 정보에 기초하여 제 1 방식의 제 2 오류 처리 연산 또는 제 2 방식의 제 2 오류 처리 연산을 수행할 수 있다.
안정적이고 신뢰성 있는 데이터 처리를 위해, ECC 회로(3310)와 함께 ECC 회로들(3111, 3121, 3191)이 채용될 수 있다. 몇몇 경우, ECC 회로(3310)의 능력은 각 ECC 회로(3111, 3121, 3191)의 능력보다 높을 수 있다. 예로서, 제 1 처리된 데이터와 관련하여 제 2 오류 처리 연산에 의해 검출될 수 있는 오류들의 최대 개수는 메모리 장치들(3110, 3120, 3190)에 저장된 데이터와 관련하여 제 1 오류 처리 연산에 의해 검출될 수 있는 오류들의 최대 개수보다 많을 수 있다.
도 8은 도 7의 메모리 장치들(3100)에서 패리티를 이용하여 데이터를 저장하고 출력하는 예시적인 동작을 설명하기 위한 블록도이다.
몇몇 실시 예에서, 패리티 생성기 및 검사기(3107)가 메모리 장치들(3110, 3120, 3190)을 위해 제공될 수 있다. 패리티 생성기 및 검사기(3107)는 메모리 장치들(3110, 3120, 3190)로 제공되는 데이터(D1 내지 Dn)에 대해 패리티 연산을 수행할 수 있다.
패리티 생성기 및 검사기(3107)는 패리티 연산을 수행하여, 데이터(D1 내지 Dn)에 대응하는 패리티(P)를 생성할 수 있다. 패리티(P)는 오류 처리에 참조될 수 있다. 예로서, 패리티(P)는 짝수 패리티 또는 홀수 패리티일 수 있다. 메모리 장치들(3120, 3190)이 데이터(D1 내지 Dn)를 각각 저장하는 한편, 메모리 장치(3110)는 패리티(P)를 저장할 수 있다.
데이터(D1 내지 Dn)가 메모리 장치들(3120, 3190)로부터 출력되는 경우, 패리티(P)도 메모리 장치(3110)로부터 출력될 수 있다. 패리티 생성기 및 검사기(3107)는 패리티(P)를 참조하여 데이터(D1 내지 Dn)의 오류를 검출 및 정정할 수 있다. 패리티 생성기 및 검사기(3107)는 검출된 오류를 정정하여 데이터(D1 내지 Dn)를 출력할 수 있다.
도 9 및 도 10은 도 7의 메모리 시스템(3000)에서 상태 정보에 기초하여 가변하는 메모리 컨트롤러(3310)의 예시적인 동작들을 설명하기 위한 블록도들이다.
도 9를 참조하면, 몇몇 경우, 제 1 오류 처리 연산을 수행하는 것이 비활성화될 수 있다(예컨대, ECC 회로들(3111, 3121, 3191)이 비활성화될 수 있다). ECC 회로들(3111, 3121, 3191)은 메모리 시스템(3000) 또는 호스트(1100)의 동작 정책에 따라 비활성화될 수 있다. 이 경우, 메모리 컨트롤러(3300)에서 수신되는 상태 정보(STAT2)는 제 1 오류 처리 연산을 수행하는 것이 활성화되지 않음을 나타낼 수 있다.
몇몇 다른 경우, 메모리 시스템(3000)은 메모리 장치들(3110, 3120, 3190)이 ECC 회로들(3111, 3121, 3191)을 포함하지 않도록 설계될 수 있다. 이 경우, 메모리 컨트롤러(3300)에서 수신되는 상태 정보(STAT2)는 메모리 장치들(3110, 3120, 3190)이 제 1 오류 처리 연산을 지원하지 않음을 나타낼 수 있다.
메모리 장치들(3110, 3120, 3190)은 제 1 처리된 데이터(mDAT2)를 생성할 수 있다. 도 9의 예에서, 제 1 처리된 데이터(mDAT2)는 ECC 회로들(3111, 3121, 3191)에 의해 처리됨이 없이 메모리 컨트롤러(3300)로 제공될 수 있다.
가변 ECC 회로(3310)는 상태 정보(STAT2)에 기초하여 선택되는 제 1 방식의 제 2 오류 처리 연산을 수행할 수 있다. 메모리 컨트롤러(3300)는 제 1 처리된 데이터(mDAT2)에 기초하여 제 1 방식의 제 2 오류 처리 연산을 수행하여 제 2 처리된 데이터(pDAT2)를 생성할 수 있다.
가변 ECC 회로(3310)의 제 1 방식의 제 2 오류 처리 연산에서, 메모리 컨트롤러(3300)는 제 1 처리된 데이터(mDAT2)와 관련하여 제 1 개수의 오류들을 정정하고 제 2 개수의 오류들을 검출할 수 있다. 예로서, 제 2 개수는 제 1 개수보다 많을 수 있다. 예로서, 가변 ECC 회로(3310)는, 1개 오류 비트들이 정정되고 2개 오류 비트들이 검출되도록, SEC/DED 방식에 따라 제 2 오류 처리 연산을 수행할 수 있다.
도 6을 참조하여 설명된 것처럼, 메모리 장치들(3110, 3120, 3190)이 SEC 방식의 ECC 회로들(3111, 3121, 3191) 없이 구성되는 경우, SEC/DED 방식으로 동작하는 가변 ECC 회로(3310)는 제 1 처리된 데이터(mDAT2)의 오류를 정정 또는 검출할 수 있다. 따라서, 상태 정보(STAT2)가 제 1 오류 처리 연산을 수행하는 것이 활성화되지 않음 또는 제 1 오류 처리 연산이 지원되지 않음을 나타내는 경우, 가변 ECC 회로(3310)는 제 1 방식(예컨대, SEC/DED 방식)으로 동작할 수 있다.
도 10을 참조하면, 몇몇 경우, 제 1 오류 처리 연산을 수행하는 것이 활성화될 수 있다(예컨대, ECC 회로들(3111, 3121, 3191)이 활성화될 수 있다). ECC 회로들(3111, 3121, 3191)은 메모리 시스템(3000) 또는 호스트(1100)의 동작 정책에 따라 활성화될 수 있다. 이 경우, 메모리 컨트롤러(3300)에서 수신되는 상태 정보(STAT3)는 제 1 오류 처리 연산을 수행하는 것이 활성화됨을 나타낼 수 있다. 메모리 장치들(3110, 3120, 3190)은 제 1 오류 처리 연산을 수행하여 제 1 처리된 데이터(mDAT3)를 생성할 수 있다.
가변 ECC 회로(3310)는 상태 정보(STAT3)에 기초하여 선택되는 제 2 방식의 제 2 오류 처리 연산을 수행할 수 있다. 메모리 컨트롤러(3300)는 제 1 처리된 데이터(mDAT3)에 기초하여 제 2 방식의 제 2 오류 처리 연산을 수행하여 제 2 처리된 데이터(pDAT3)를 생성할 수 있다.
가변 ECC 회로(3310)의 제 2 방식의 제 2 오류 처리 연산에서, 메모리 컨트롤러(3300)는 제 1 처리된 데이터(mDAT3)와 관련하여 오류 정정 없이 오류 검출을 수행할 수 있다. 예로서, 가변 ECC 회로(3310)는, 오류 정정 없이 3개 이상의 오류 비트들이 검출되도록, CRC(Cyclic Redundancy Check) 방식에 따라 제 2 오류 처리 연산을 수행할 수 있다. 예로서, CRC 방식으로 동작하는 가변 ECC 회로(3310)는 첫 번째 비트 위치 오류, 두 번째 비트 위치 오류, 홀수 비트 위치 오류, 버스트(Burst) 오류 등을 검출할 수 있다.
도 6을 참조하여 설명된 것처럼, 메모리 장치들(3110, 3120, 3190)이 SEC 방식의 ECC 회로들(3111, 3121, 3191)과 함께 구성되는 경우, SEC/DED 방식에 의해 검출 및 정정 불가능한 오류가 발생할 가능성이 있다. 이 경우, 오류 정정 능력이 포기되더라도, 더 많은 개수의 오류들을 검출하는 것이 유익할 수 있다. 따라서, 상태 정보(STAT3)가 제 1 오류 처리 연산을 수행하는 것이 활성화됨을 나타내는 경우, 가변 ECC 회로(3310)는 더 많은 개수의 오류들을 검출하기 위해 제 2 방식(예컨대, CRC 방식)으로 동작할 수 있다.
제 1 처리된 데이터(mDAT3)와 관련하여 제 2 방식의 제 2 오류 처리 연산에 의해 검출될 수 있는 오류들의 최대 개수는 제 1 처리된 데이터(mDAT2)와 관련하여 제 1 방식의 제 2 오류 처리 연산에 의해 검출될 수 있는 오류들의 최대 개수보다 많을 수 있다. 이 실시 예들에 따르면, 메모리 시스템(3000)의 동작의 안정성, 신뢰성, 및 유연성이 향상될 수 있고, 검출 및 정정 불가능한 오류가 발생하는 것이 방지될 수 있다.
제 1 연산과 관련하여, 상태 정보(STAT2)가 상태 정보(STAT3)로 변경될 수 있고 또는 그 반대일 수 있다. 예로서, 상태 정보(STAT2)가 상태 정보(STAT3)로 변경되는 경우, 제 1 처리된 데이터(mDAT2)의 맥락은 제 1 처리된 데이터(mDAT3)의 맥락으로 변경될 수 있다. 나아가, 제 2 처리된 데이터(pDAT2)의 맥락은 제 2 처리된 데이터(pDAT3)의 맥락으로 변경될 수 있다.
도 11은 도 7의 가변 ECC 회로(3310)의 예시적인 구성을 보여주는 블록도이다.
몇몇 실시 예에서, 가변 ECC 회로(3310)는 신드롬 산출기(3311), 오류 검출기(3313), 오류 위치기(3315), 오류 정정기(3317), 및 스위치(3319)를 포함할 수 있다. 가변 ECC 회로(3310)는 제 1 처리된 데이터(mDAT2 또는 mDAT3) 및 상태 정보(STAT2 또는 STAT3)를 수신할 수 있다. 가변 ECC 회로(3310)는 메모리 장치들(3110, 3120, 3190)에 데이터가 저장되었을 때 ECC 인코딩 연산에 의해 생성되었던 오류 검사 비트를 수신할 수 있다.
신드롬 산출기(3311)는 제 1 처리된 데이터(mDAT2 또는 mDAT3) 및 오류 검사 비트에 기초하여 신드롬을 산출할 수 있다. 신드롬을 산출하고 신드롬에 기초하여 오류를 검출 및 정정하는 것은 통상의 기술자에 의해 잘 이해될 수 있고, 따라서 상세한 설명들은 이하 생략될 것이다.
오류 검출기(3313)는 산출된 신드롬에 기초하여 제 1 처리된 데이터(mDAT2 또는 mDAT3)와 관련하여 오류를 검출할 수 있다. 오류 위치기(3315)는 제 1 처리된 데이터(mDAT2)와 관련되는 비트열의 비트들 중 검출된 오류에 대응하는 비트의 위치를 산출할 수 있다. 오류 정정기(3317)는 제 1 처리된 데이터(mDAT2)와 관련하여 산출된 위치의 비트의 값을 정정할 수 있다. 오류 위치기(3315)는 상태 정보(STAT2 또는 STAT3)에 기초하여 활성화되거나 비활성화될 수 있다.
예로서, 오류 위치기(3315)는 제 1 오류 처리 연산의 비활성화 또는 부재(Absence)를 나타내는 상태 정보(STAT2)에 기초하여 활성화될 수 있다. 이 예에서, 오류 위치기(3315)는 제 1 처리된 데이터(mDAT2)와 관련하여 오류 비트의 위치를 산출할 수 있고, 제 1 방식(예컨대, SEC/DED 방식)의 제 2 오류 처리 연산의 결과를 출력할 수 있다. 오류 정정기(3317)는 제 1 처리된 데이터(mDAT2)와 관련하여 산출된 위치의 오류 비트를 정정하여 제 2 처리된 데이터(pDAT2)를 출력할 수 있다.
스위치(3319)는 상태 정보(STAT2)에 응답하여 제 1 방식의 제 2 오류 처리 연산의 결과를 출력할 수 있다. 따라서, 오류 위치기(3315)가 활성화되는 경우, 가변 ECC 회로(3310)는 오류 위치기(3315)로부터의 출력을 제 1 방식의 제 2 오류 처리 연산과 관련되는 오류 검출 결과로서 출력할 수 있다. 이 오류 검출 결과는 오류가 발생했는지 여부, 오류의 개수, 오류 비트의 위치, 오류가 정정 가능한지 여부 등을 나타낼 수 있다.
반면, 오류 위치기(3315)는 제 1 오류 처리 연산의 활성화를 나타내는 상태 정보(STAT3)에 기초하여 비활성화될 수 있다. 이 경우, 오류 검출기(3313)는 제 1 처리된 데이터(mDAT3)와 관련하여 오류를 검출할 수 있고, 제 2 방식(예컨대, CRC 방식)의 제 2 오류 처리 연산의 결과를 출력할 수 있다. 오류 정정기(3317)는 제 1 처리된 데이터(mDAT3)와 관련하여 오류 정정 없이 제 2 처리된 데이터(pDAT3)를 출력할 수 있다.
스위치(3319)는 상태 정보(STAT3)에 응답하여 제 2 방식의 제 2 오류 처리 연산의 결과를 출력할 수 있다. 이 경우, 오류 비트 위치를 산출하는 것 및 산출된 위치의 오류 비트를 정정하는 것은 수행되지 않을 수 있다. 가변 ECC 회로(3310)는 오류 검출기(3313)로부터의 출력을 제 2 방식의 제 2 오류 처리 연산과 관련되는 오류 검출 결과로서 출력할 수 있다. 이 오류 검출 결과는 오류가 발생했는지 여부, 오류의 개수 등을 나타낼 수 있다.
이처럼, 메모리 컨트롤러(3300)는 제 2 오류 처리 연산에 따라 오류 검출 결과를 출력할 수 있다. 제 2 오류 처리 연산의 방식이 변경되는 경우, 오류 검출 결과가 변경될 수 있다. 오류 검출 결과는 호스트(1100)로 제공될 수 있다. 예로서, 오류 검출 결과는 제 2 처리된 데이터(pDAT2 또는 pDAT3)에 포함되어 호스트(1100)로 제공될 수 있고, 또는 그 외 다른 방식으로 호스트(1100)로 제공될 수 있다.
도 11의 예에서, 메모리 컨트롤러(3300)는, 추가 ECC 회로 없이 가변 ECC 회로(3310)만 이용하여, 상태 정보(STAT2 또는 STAT3)에 기초하여 제 1 방식의 제 2 오류 처리 연산 또는 제 2 방식의 제 2 오류 처리 연산을 선택적으로 수행할 수 있다. 따라서, 가변 ECC 회로(3310)는 추가 회로 면적을 요구하지 않을 수 있다.
도 7 내지 도 11의 예들에서, 오류 처리 연산의 방식들이 SEC 방식, SEC/DED 방식, 및 CRC 방식을 포함하는 것으로 설명되었다. 그러나, 이 예들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지 않는다. 예로서, 메모리 장치들(3110, 3120, 3190) 및 메모리 컨트롤러(3300)는 DEC(Double Error Correction) 방식, DEC/TED(Double Error Correction/Triple Error Detection) 방식, 체크섬(Checksum) 방식, 해시(Hash) 함수 방식 등과 같은 다양한 방식의 오류 처리 연산을 채용할 수 있다.
나아가, 가변 ECC 회로(3300)의 동작이 제 1 오류 처리 연산의 상태를 나타내는 상태 정보(STAT2 또는 STAT3)에 의존하여 가변하는 것으로 설명되었다. 그러나, 가변 ECC 회로(3300)의 동작은 다른 정보에 의존하여 가변할 수 있다.
예로서, 메모리 장치들(3110, 3120, 3190)의 온도가 기준 온도를 초과하여 과도하게 증가하거나 메모리 장치들(3110, 3120, 3190)의 예상되는 잔여 수명이 기준 수명보다 짧은 경우, 메모리 장치들(3110, 3120, 3190)에 저장된 데이터에 오류가 발생할 가능성이 있다. 따라서, 가변 ECC 회로(3300)의 동작은 메모리 장치들(3110, 3120, 3190)의 온도 또는 잔여 수명을 나타내는 상태 정보에 의존하여 가변할 수 있다. 이처럼, 실시 예들은 다양하게 변경 또는 수정될 수 있고, 위에서 설명된 예들로 한정되지 않는다.
도 12는 도 3의 메모리 시스템(2000)과 관련되는 예시적인 구성을 보여주는 블록도이다.
예로서, 메모리 시스템(2000)은 도 12의 메모리 시스템(4000)과 같은 구성을 포함할 수 있다. 도 12의 하나 이상의 메모리 장치(4100)는 도 3의 하나 이상의 메모리 장치(2100)에 대응할 수 있고, 도 12의 메모리 컨트롤러(4300)는 도 3의 메모리 컨트롤러(2300)에 대응할 수 있다. 간결성을 위해, 메모리 장치들(4100) 및 메모리 컨트롤러(4300)와 관련되는 중복되는 설명들은 이하 생략될 것이다.
메모리 장치들(4110, 4120, 4190)은 내부 기능 회로들(2111, 2121, 2191)로서 압축해제 회로들(4111, 4121, 4191)을 각각 포함할 수 있다. 각 압축해제 회로(4111, 4121, 4191)는, 주어진 압축해제 스킴에 따라, 대응하는 메모리 장치(4110, 4120, 4190)에 저장된 데이터에 기초하여 제 1 압축해제 연산을 수행할 수 있다.
예로서, 메모리 장치들(4110, 4120, 4190)에 데이터가 저장될 때, 더 많은 양의 데이터를 저장하기 위해 데이터가 압축될 수 있다. 제 1 압축해제 연산은 압축된 데이터에 대해 수행될 수 있고, 따라서 압축해제된 데이터가 메모리 장치들(4110, 4120, 4190)로부터 출력될 수 있다. 메모리 장치들(4110, 4120, 4190)은 제 1 압축해제 연산을 수행하여 제 1 처리된 데이터를 생성할 수 있다.
예로서, 메모리 컨트롤러(4300)는 외부 가변 기능 회로(2310)로서 가변 압축해제 회로(4310)를 포함할 수 있다. 가변 압축해제 회로(4310)는, 주어진 압축해제 스킴에 따라, 제 1 처리된 데이터에 기초하여 제 2 압축해제 연산을 수행할 수 있다. 메모리 컨트롤러(4300)는 제 2 압축해제 연산을 수행하여 제 2 처리된 데이터를 생성할 수 있다.
예로서, 압축해제 회로들(4111, 4121, 4191)의 제 1 압축해제 연산은 데이터의 압축해제를 부분적으로 제공할 수 있고, 가변 압축해제 회로(4310)의 제 2 압축해제 연산은 데이터의 나머지 압축해제를 제공할 수 있다. 예로서, 제 1 압축해제 연산은 압축된 데이터의 제 1 부분을 압축해제 할 수 있고, 제 2 압축해제 연산은 압축된 데이터의 나머지 제 2 부분을 압축해제 할 수 있다. 압축해제 회로들(4111, 4121, 4191)이 부분적인 압축해제를 수행함에 따라, 메모리 컨트롤러(4300)의 부하가 경감될 수 있다.
메모리 컨트롤러(4300)는 메모리 장치들(4110, 4120, 4190)에서 제 1 압축해제 연산을 수행하는 것과 관련되는 상태 정보를 수신할 수 있다. 예로서, 상태 정보는 메모리 장치들(4110, 4120, 4190)이 압축해제 회로들(4111, 4121, 4191)을 포함하는지 여부(즉, 각 메모리 장치(4110, 4120, 4190)가 제 1 압축해제 연산을 지원하는지 여부), 각 메모리 장치(4110, 4120, 4190)에서 제 1 압축해제 연산을 수행하는 것이 활성화되었는지 여부, 제 1 압축해제 연산이 수행되는 각 메모리 장치(4110, 4120, 4190)의 환경, 제 1 압축해제 연산의 방식 등과 같은 다양한 요인 중 적어도 하나와 관련되는 정보를 포함할 수 있다.
가변 압축해제 회로(4310)의 제 2 압축해제 연산의 방식(예컨대, 스킴, 성능 등)은 상태 정보에 기초하여 가변할 수 있다. 예로서, 가변 압축해제 회로(4310)는 상태 정보에 기초하여 제 1 방식의 제 2 압축해제 연산 또는 제 2 방식의 제 2 압축해제 연산을 선택적으로 수행할 수 있다.
도 13 및 도 14는 도 12의 메모리 시스템(4000)에서 상태 정보에 기초하여 가변하는 메모리 컨트롤러(4310)의 예시적인 동작들을 설명하기 위한 블록도들이다.
도 13을 참조하면, 몇몇 경우, 제 1 압축해제 연산을 수행하는 것이 비활성화될 수 있다(예컨대, 압축해제 회로들(4111, 4121, 4191)이 비활성화될 수 있다). 압축해제 회로들(4111, 4121, 4191)은 메모리 시스템(4000) 또는 호스트(1100)의 동작 정책에 따라 비활성화될 수 있다. 이 경우, 메모리 컨트롤러(4300)에서 수신되는 상태 정보(STAT4)는 제 1 압축해제 연산을 수행하는 것이 활성화되지 않음을 나타낼 수 있다.
메모리 장치들(4110, 4120, 4190)은 제 1 처리된 데이터(mDAT4)를 생성할 수 있다. 도 13의 예에서, 제 1 처리된 데이터(mDAT2)는 압축해제 회로들(4111, 4121, 4191)에 의해 처리됨이 없이 메모리 컨트롤러(4300)로 제공될 수 있다.
가변 압축해제 회로(4310)는 상태 정보(STAT4)에 기초하여 선택되는 제 1 방식의 제 2 압축해제 연산을 수행할 수 있다. 메모리 컨트롤러(4300)는 제 1 처리된 데이터(mDAT4)에 기초하여 제 1 방식의 제 2 압축해제 연산을 수행하여 제 2 처리된 데이터(pDAT4)를 생성할 수 있다. 예로서, 가변 압축해제 회로(4310)의 제 1 방식의 제 2 압축해제 연산에서, 메모리 컨트롤러(4300)는 최대 성능을 제공하기 위해 완전히 동작할 수 있다.
도 14를 참조하면, 몇몇 경우, 제 1 압축해제 연산을 수행하는 것이 활성화될 수 있다(예컨대, 압축해제 회로들(4111, 4121, 4191)이 활성화될 수 있다). 압축해제 회로들(4111, 4121, 4191)은 메모리 시스템(4000) 또는 호스트(1100)의 동작 정책에 따라 활성화될 수 있다. 이 경우, 메모리 컨트롤러(4300)에서 수신되는 상태 정보(STAT5)는 제 1 압축해제 연산을 수행하는 것이 활성화됨을 나타낼 수 있다. 메모리 장치들(4110, 4120, 4190)은 제 1 압축해제 연산을 수행하여 제 1 처리된 데이터(mDAT5)를 생성할 수 있다.
가변 압축해제 회로(4310)는 상태 정보(STAT5)에 기초하여 선택되는 제 2 방식의 제 2 압축해제 연산을 수행할 수 있다. 메모리 컨트롤러(4300)는 제 1 처리된 데이터(mDAT5)에 기초하여 제 2 방식의 제 2 압축해제 연산을 수행하여 제 2 처리된 데이터(pDAT5)를 생성할 수 있다. 예로서, 가변 압축해제 회로(4310)의 제 2 방식의 제 2 압축해제 연산에서, 메모리 컨트롤러(4300)는 낮은 성능을 제공하기 위해 부분적으로 동작할 수 있다.
도 15는 도 12의 가변 압축해제 회로(4310)의 예시적인 구성을 보여주는 블록도이다.
몇몇 실시 예에서, 가변 압축해제 회로(4310)는 스위치들(4311, 4315), 압축해제기들(4313-1, 4313-2, 4313-3, 4313-4), 및 선택기(4319)를 포함할 수 있다. 가변 압축해제 회로(4310)는 제 1 처리된 데이터(mDAT4 또는 mDAT5) 및 상태 정보(STAT4 또는 STAT5)를 수신할 수 있다.
압축해제기들(4313-1, 4313-2, 4313-3, 4313-4)은 병렬로 제 2 압축해제 연산을 수행할 수 있다. 압축해제기들(4313-1, 4313-2, 4313-3, 4313-4)은 제 1 처리된 데이터(mDAT4 또는 mDAT5)에 기초하여 제 2 압축해제 연산을 수행할 수 있다. 선택기(4319)는 압축해제기들(4313-1, 4313-2, 4313-3, 4313-4)이 순차적으로 번갈아가며 동작하도록 선택 신호를 출력할 수 있다.
스위치(4311)는 선택 신호에 응답하여 선택되는 압축해제기로 제 1 처리된 데이터(mDAT4 또는 mDAT5)를 전달할 수 있다. 스위치(4315)는 선택 신호에 응답하여 선택되는 압축해제기로부터 데이터를 수신할 수 있고, 수신된 데이터를 제 2 처리된 데이터(pDAT4 또는 pDAT5)로서 출력할 수 있다.
압축해제기들(4313-3, 4313-4)은 상태 정보(STAT4 또는 STAT5)에 기초하여 활성화되거나 비활성화될 수 있다. 예로서, 압축해제기들(4313-3, 4313-4)은 제 1 압축해제 연산의 비활성화 또는 부재를 나타내는 상태 정보(STAT4)에 기초하여 활성화될 수 있다. 이 예에서, 가변 압축해제 회로(4310)는 압축해제기들(4313-1, 4313-2, 4313-3, 4313-4) 모두가 병렬로 동작하도록 제 1 방식의 제 2 압축해제 연산을 수행할 수 있고, 제 1 처리된 데이터(mDAT4)에 기초하여 제 2 처리된 데이터(pDAT4)를 생성할 수 있다.
반면, 압축해제기들(4313-3, 4313-4)은 제 1 압축해제 연산의 활성화를 나타내는 상태 정보(STAT5)에 기초하여 비활성화될 수 있다. 이 예에서, 가변 압축해제 회로(4310)는 압축해제기들(4313-1, 4313-2)만 병렬로 동작하도록 제 2 방식의 제 2 압축해제 연산을 수행할 수 있고, 제 1 처리된 데이터(mDAT5)에 기초하여 제 2 처리된 데이터(pDAT5)를 생성할 수 있다.
이처럼, 메모리 컨트롤러(4300)는 주어진 환경 또는 상태에 적합하게 동작할 수 있고, 메모리 시스템(4000)의 동작의 유연성이 향상될 수 있다. 메모리 장치들(4110, 4120, 4190)이 메모리 컨트롤러(4300)에서 수행되는 연산을 부분적으로 처리함에 따라, 메모리 컨트롤러(4300)의 부하가 경감될 수 있다. 따라서, 연산 성능 및 전력 소모가 최적으로 관리될 수 있다.
도 7 내지 도 15의 실시 예들은 메모리 장치들(2110, 2120, 2190)에서 수행되는 제 1 연산의 유형이 메모리 컨트롤러(2300)에서 수행되는 제 2 연산의 유형과 동일한 구현들과 관련될 수 있다. 또한, 도 7 내지 도 15의 실시 예들은 1개 유형의 제 2 연산이 메모리 컨트롤러(2300)에서 수행되는 구현들과 관련될 수 있다. 그러나, 이 실시 예들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지 않는다. 실시 예들은, 제 1 연산의 유형이 제 2 연산의 유형과 다른 구현 및 복수의 유형의 제 2 연산들이 수행되는 구현에서도, 상태 정보(STAT)에 기초하여 제 2 연산을 가변하기 위해 다양하게 채용될 수 있음이 잘 이해될 것이다.
도 16 내지 도 18은 도 3의 메모리 시스템(2000)에서 메모리 컨트롤러(2300)로 상태 정보(STAT)를 제공하기 위한 예시적인 구성들을 보여주는 블록도들이다.
몇몇 실시 예에서, 메모리 시스템(2000)은 도 16의 메모리 시스템(2000a)과 같은 구성을 포함할 수 있다. 도 16을 참조하면, 메모리 시스템(2000)은 상태 레지스터(2102)를 더 포함할 수 있다. 상태 레지스터(2102)는 상태 정보(STAT)를 저장할 수 있고, 하나 이상의 메모리 장치(2100a)에서 제 1 연산을 수행하는 것과 관련하여 상태 정보(STAT)를 관리 및 갱신할 수 있다.
메모리 컨트롤러(2300a)는 상태 레지스터(2102)로부터 상태 정보(STAT)를 수신할 수 있다. 이를 위해, 메모리 컨트롤러(2300a)는 상태 레지스터(2102)로 직접 액세스할 수 있다. 또는 상태 레지스터(2102)는 메모리 컨트롤러(2300a)의 요청에 응답하여 상태 정보(STAT)를 출력할 수 있다.
몇몇 실시 예에서, 메모리 시스템(2000)은 도 17의 메모리 시스템(2000b)과 같은 구성을 포함할 수 있다. 도 17을 참조하면, 메모리 장치들(2110, 2120, 2190)은 인쇄 회로 기판 또는 반도체 패키지(2100b) 상에 배치될 수 있다. 인쇄 회로 기판 또는 반도체 패키지(2100b)는 연결 단자(2103)를 포함할 수 있다.
연결 단자(2103)는 패드 또는 핀의 형태로 구현될 수 있다. 연결 단자(2103)는 상태 정보(STAT)에 대응하는 신호를 출력할 수 있다. 상태 정보(STAT)에 대응하는 신호는 인쇄 회로 기판 또는 반도체 패키지(2100b) 상의 메모리 장치들(2110, 2120, 2190) 또는 그 외 다른 회로로부터 제공될 수 있다. 메모리 컨트롤러(2300b)는 연결 단자(2103)로 연결되어, 상태 정보(STAT)에 대응하는 신호를 수신할 수 있다.
몇몇 실시 예에서, 메모리 시스템(2000)은 도 18의 메모리 시스템(2000c)과 같은 구성을 포함할 수 있다. 도 18을 참조하면, 하나 이상의 메모리 장치(2100c)와 메모리 컨트롤러(2300c) 사이에서 상태 정보(STAT)를 전달하기 위해 통신 시퀀스(Sequence)가 정의될 수 있다.
예로서, 메모리 장치들(2100c)과 메모리 컨트롤러(2300c)가 물리적으로 연결된 때 또는 메모리 장치들(2100c)과 메모리 컨트롤러(2300c) 사이의 통신이 리셋된 때, 연결 초기화 동작이 수행될 수 있다(S110). 이후, 메모리 컨트롤러(2300c)는 메모리 장치들(2100c)로 상태 확인 요청을 전송할 수 있다(S120). 메모리 장치들(2100c)은 메모리 컨트롤러(2300c)로부터 수신되는 상태 확인 요청에 응답하여, 상태 정보(STAT)를 메모리 컨트롤러(2300c)로 전송할 수 있다(S130).
상태 확인 요청 및 상태 정보(STAT) 각각은 신호 또는 패킷의 형태로 전송될 수 있다. 상태 확인 요청 및 상태 정보(STAT)는 기존 통신 규약에서 정의된 커맨드 및 응답의 예약된(Reserved) 필드에 포함됨으로써 전송될 수 있다. 또는, 상태 확인 요청 및 상태 정보(STAT)를 전송하기 위해 새로운 커맨드 및 응답이 정의될 수 있다.
도 19는 도 3의 메모리 시스템(2000)과 관련되는 예시적인 동작을 설명하는 흐름도이다.
호스트(1100)는 메모리 컨트롤러(2300)로 읽기 요청을 전송할 수 있다(S210). 메모리 컨트롤러(2300)는 읽기 요청에 대응하여 읽기 커맨드를 메모리 장치들(2100)로 전송할 수 있다(S220). 읽기 요청 및 읽기 커맨드는 메모리 장치들(2100)에 저장된 데이터를 읽기 위해 생성될 수 있다.
메모리 컨트롤러(2300)는 상태 정보(STAT)를 수신할 수 있다(S230). 나아가, 메모리 컨트롤러(2300)는 제 1 처리된 데이터(mDAT)를 수신할 수 있다(S240). 제 1 처리된 데이터(mDAT)는 메모리 장치들(2100)에서 수행되는 제 1 연산으로부터 생성되거나, 제 1 연산 없이 생성될 수 있다.
도 19는 상태 정보(STAT)가 읽기 커맨드를 전송하는 것 이후에 전달되는 것을 보여준다. 그러나, 본 발명은 도 19의 도시로 한정되지 않는다. 상태 정보(STAT)는 읽기 요청 또는 읽기 커맨드를 전송하는 것 이전에 미리 전달될 수 있다. 예로서, 상태 정보(STAT)는 호스트(1100)와 메모리 컨트롤러(2300) 사이의 연결 초기화 동작 동안 또는 연결 초기화 동작 이후에 전달될 수 있다.
이후, 메모리 컨트롤러(2300)는 제 2 연산을 수행할 수 있다(S250). 제 2 연산은 가변 연산들 중에서 상태 정보(STAT)에 기초하여 선택되는 하나의 연산에 따라 수행될 수 있다. 예로서, 상태 정보(STAT)에 기초하여 제 2 연산의 유형이 가변하거나 제 2 연산의 방식이 가변할 수 있다. 메모리 컨트롤러(2300)는 제 2 연산의 결과(예컨대, 제 2 연산에 의해 생성되는 제 2 처리된 데이터(pDAT))에 기초하여, 요청된 데이터를 호스트(1100)로 출력할 수 있다(S260).
위 설명들은 본 발명을 구현하기 위한 예시적인 구성들 및 동작들을 제공하도록 의도된다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 위 실시 예들을 단순하게 변경하거나 수정하여 얻어질 수 있는 구현들도 포함할 것이다. 또한, 본 발명의 기술 사상은 위에서 설명된 실시 예들을 앞으로 용이하게 변경하거나 수정하여 달성될 수 있는 구현들도 포함할 것이다.
1000 : 전자 시스템
100, 2000, 2000a, 2000b, 2000c, 3000, 4000, 5000 : 메모리 시스템

Claims (20)

  1. 읽기 커맨드에 응답하여 데이터를 출력하도록 구성되는 메모리 장치; 및
    호스트로부터 수신되는 읽기 요청에 응답하여, 상기 데이터가 상기 메모리 장치로부터 출력되도록, 상기 메모리 장치로 상기 읽기 커맨드를 제공하도록 구성되는 메모리 컨트롤러를 포함하되,
    상기 메모리 장치는, 상기 읽기 커맨드에 응답하여, 상기 메모리 장치에 저장된 데이터에 기초하여 제 1 연산을 수행하여 제 1 처리된 데이터를 생성하도록 구성되는 제 1 기능 회로를 포함하고,
    상기 메모리 컨트롤러는 상기 제 1 연산을 수행하는 것과 관련되는 상태 정보(Status Information)를 수신하도록 더 구성되고,
    상기 메모리 컨트롤러는 상기 제 1 처리된 데이터에 기초하여 제 2 연산을 수행하여 제 2 처리된 데이터를 생성하도록 구성되는 제 2 기능 회로를 포함하고,
    상기 제 2 기능 회로는 상기 상태 정보에 기초하여 상기 제 2 연산의 방식을 변경하고,
    상기 제 2 연산의 유형은 상기 제1 연산의 유형과 동일한 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 상태 정보는 상기 메모리 장치가 상기 제 1 기능 회로를 포함하는지 여부, 상기 제 1 연산을 수행하는 것이 활성화(Enable)되었는지 여부, 상기 제 1 연산의 유형(Type), 상기 제 1 기능 회로의 능력(Capability), 및 상기 제 1 연산이 수행되는 상기 메모리 장치의 환경(Condition) 중 적어도 하나와 관련되는 정보를 포함하는 메모리 시스템.
  3. 제 1 항에 있어서,
    상기 제 2 기능 회로의 능력은 상기 제 1 기능 회로의 능력과 상이한 메모리 시스템.
  4. 제 3 항에 있어서,
    상기 상태 정보가 변경되는 경우, 상기 제 2 기능 회로의 상기 능력은 제 1 능력으로부터 제 2 능력으로 변경되는 메모리 시스템.
  5. 제 1 항에 있어서,
    상기 제 2 기능 회로는 복수의 유형의 연산들 중에서 상기 상태 정보에 기초하여 선택되는 유형의 상기 제 2 연산을 수행하도록 더 구성되고,
    상기 제 2 연산의 상기 유형은 상기 제 1 연산의 유형과 동일하거나 상이한 메모리 시스템.
  6. 제 5 항에 있어서,
    상기 상태 정보가 변경되는 경우, 상기 제 2 연산의 상기 유형은 제 1 유형으로부터 제 2 유형으로 변경되는 메모리 시스템.
  7. 제 1 항에 있어서,
    상기 상태 정보가 변경되는 경우, 상기 제 1 처리된 데이터는 상기 메모리 장치에서 상기 상태 정보가 변경되기 전의 것과 상이하게 생성되는 메모리 시스템.
  8. 저장된 데이터에 기초하여 제 1 오류 처리 연산을 수행하여 제 1 처리된 데이터를 생성하도록 구성되는 메모리 장치; 및
    상기 제 1 오류 처리 연산을 수행하는 것과 관련되는 상태 정보를 수신하고, 상기 제 1 처리된 데이터에 기초하여 제 2 오류 처리 연산을 수행하여 제 2 처리된 데이터를 생성하도록 구성되는 메모리 컨트롤러를 포함하되,
    상기 제 1 처리된 데이터와 관련하여 상기 제 2 오류 처리 연산에 의해 검출되는 오류들의 최대 개수는 상기 저장된 데이터와 관련하여 상기 제 1 오류 처리 연산에 의해 검출되는 오류들의 최대 개수보다 많고,
    상기 메모리 컨트롤러는 상기 상태 정보에 기초하여 상기 제 2 오류 처리 연산의 방식을 변경하는 메모리 시스템.
  9. 제 8 항에 있어서,
    상기 상태 정보는 상기 메모리 장치가 상기 제 1 오류 처리 연산을 지원하는지 여부, 상기 제 1 오류 처리 연산을 수행하는 것이 활성화되었는지 여부, 상기 제 1 오류 처리 연산이 수행되는 상기 메모리 장치의 환경, 및 오류 처리에 참조되는 패리티 중 적어도 하나와 관련되는 정보를 포함하는 메모리 시스템.
  10. 제 8 항에 있어서,
    상기 메모리 컨트롤러는:
    상기 메모리 장치가 상기 제 1 오류 처리 연산을 지원하지 않음 또는 상기 제 1 오류 처리 연산을 수행하는 것이 활성화되지 않음을 상기 상태 정보가 나타내는 경우, 제 1 방식의 상기 제 2 오류 처리 연산을 수행하고;
    상기 제 1 오류 처리 연산을 수행하는 것이 활성화됨을 상기 상태 정보가 나타내는 경우, 제 2 방식의 상기 제 2 오류 처리 연산을 수행하도록 더 구성되는 메모리 시스템.
  11. 제 10 항에 있어서,
    상기 메모리 컨트롤러는, 상기 제 1 처리된 데이터와 관련하여 제 1 개수의 오류들이 정정되고 제 2 개수의 오류들이 검출되도록, 상기 제 1 방식의 상기 제 2 오류 처리 연산을 수행하도록 더 구성되고,
    상기 제 2 개수는 상기 제 1 개수보다 많은 메모리 시스템.
  12. 제 10 항에 있어서,
    상기 메모리 컨트롤러는, 상기 제 1 처리된 데이터와 관련하여 오류 정정 없이 오류 검출이 수행되도록, 상기 제 2 방식의 상기 제 2 오류 처리 연산을 수행하도록 더 구성되는 메모리 시스템.
  13. 제 10 항에 있어서,
    상기 제 1 처리된 데이터와 관련하여 상기 제 2 방식의 상기 제 2 오류 처리 연산에 의해 검출되는 오류들의 최대 개수는 상기 제 1 처리된 데이터와 관련하여 상기 제 1 방식의 상기 제 2 오류 처리 연산에 의해 검출되는 오류들의 최대 개수보다 많은 메모리 시스템.
  14. 제 8 항에 있어서,
    상기 메모리 컨트롤러는 상기 제 2 오류 처리 연산에 따라 오류 검출 결과를 출력하도록 더 구성되고,
    상기 제 2 오류 처리 연산의 상기 방식이 변경되는 경우, 상기 오류 검출 결과가 변경되는 메모리 시스템.
  15. 제 8 항에 있어서,
    상기 메모리 장치는 상기 제 1 오류 처리 연산을 수행하도록 구성되는 제 1 ECC(Error Correction Code) 회로를 포함하고,
    상기 제 1 ECC 회로는 상기 상태 정보와 관련하여 활성화되거나 비활성화(Disable)되는 메모리 시스템.
  16. 제 8 항에 있어서,
    상기 메모리 컨트롤러는 상기 제 2 오류 처리 연산을 수행하도록 구성되는 제 2 ECC 회로를 포함하고,
    상기 제 2 ECC 회로는 상기 상태 정보에 기초하여 제 1 방식의 상기 제 2 오류 처리 연산 또는 제 2 방식의 상기 제 2 오류 처리 연산을 수행하도록 더 구성되는 메모리 시스템.
  17. 제 16 항에 있어서,
    상기 제 2 ECC 회로는:
    상기 제 1 처리된 데이터 및 오류 검사 비트에 기초하여 신드롬(Syndrome)을 산출하도록 구성되는 신드롬 산출기;
    상기 산출된 신드롬에 기초하여 상기 제 1 처리된 데이터와 관련하여 오류를 검출하도록 구성되는 오류 검출기;
    상기 제 1 처리된 데이터와 관련되는 비트열의 비트들 중 상기 검출된 오류에 대응하는 비트의 위치를 산출하도록 구성되는 오류 위치기; 및
    상기 제 1 처리된 데이터와 관련하여 상기 산출된 위치의 상기 비트의 값을 정정하도록 구성되는 오류 정정기를 포함하고,
    상기 오류 위치기는 상기 상태 정보에 기초하여 활성화되거나 비활성화되는 메모리 시스템.
  18. 제 17 항에 있어서,
    상기 제 2 ECC 회로는:
    상기 오류 위치기가 활성화되는 경우, 상기 오류 위치기로부터의 출력을 상기 제 1 방식의 상기 제 2 오류 처리 연산과 관련되는 오류 검출 결과로서 출력하고;
    상기 오류 위치기가 비활성화되는 경우, 상기 오류 검출기로부터의 출력을 상기 제 2 방식의 상기 제 2 오류 처리 연산과 관련되는 오류 검출 결과로서 출력하도록 더 구성되는 메모리 시스템.
  19. 제 16 항에 있어서,
    상기 메모리 컨트롤러는, 추가 ECC 회로 없이 상기 제 2 ECC 회로를 이용하여, 상기 상태 정보에 기초하여 상기 제 1 방식의 상기 제 2 오류 처리 연산 또는 상기 제 2 방식의 상기 제 2 오류 처리 연산을 선택적으로 수행하도록 더 구성되는 메모리 시스템.
  20. 저장된 데이터를 기반으로 제1 연산을 수행하여, 제1 처리된 데이터를 생성하도록 구성되는 메모리 장치; 및
    상기 메모리 장치로부터 상기 제1 처리된 데이터를 수신하고, 상기 제1 처리된 데이터에 기초하여 제2 연산을 수행하여, 제2 처리된 데이터를 생성하도록 구성되는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는:
    상기 메모리 장치로부터 상기 제1 연산과 관련되는 상태 정보를 더 수신하고;
    상기 상태 정보에 따라 상기 제2 연산의 방식을 변경하고,
    변경된 방식으로 상기 제2 연산을 수행하도록 더 구성되고,
    상기 제1 처리된 데이터 및 상기 제2 처리된 데이터는 상기 상태 정보가 변경됨에 따라 변경되는 메모리 시스템.
KR1020170170426A 2017-12-12 2017-12-12 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템 KR102449346B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020170170426A KR102449346B1 (ko) 2017-12-12 2017-12-12 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템
US16/024,941 US10866855B2 (en) 2017-12-12 2018-07-02 Memory system varying operation of memory controller according to internal status of memory device
EP18200077.8A EP3499376B1 (en) 2017-12-12 2018-10-12 Memory system varying operation of memory controller according to internal status of memory device
CN201811502100.9A CN110046112A (zh) 2017-12-12 2018-12-10 根据内部状态改变存储器控制器的操作的存储器***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170170426A KR102449346B1 (ko) 2017-12-12 2017-12-12 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20190069998A KR20190069998A (ko) 2019-06-20
KR102449346B1 true KR102449346B1 (ko) 2022-10-04

Family

ID=63840682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170170426A KR102449346B1 (ko) 2017-12-12 2017-12-12 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템

Country Status (4)

Country Link
US (1) US10866855B2 (ko)
EP (1) EP3499376B1 (ko)
KR (1) KR102449346B1 (ko)
CN (1) CN110046112A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556420B2 (en) * 2021-04-06 2023-01-17 Macronix International Co., Ltd. Managing error correction coding in memory systems
KR20220168519A (ko) * 2021-06-16 2022-12-23 에스케이하이닉스 주식회사 에러정정방법을 이용하여 에러정정동작을 수행하는 반도체시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130198587A1 (en) * 2012-01-26 2013-08-01 Samsung Electronics Co., Ltd. Memory buffer performing error correction coding (ecc)
US20140245105A1 (en) * 2013-02-26 2014-08-28 Hoi-Ju CHUNG Semiconductor memory devices including error correction circuits and methods of operating the semiconductor memory devices

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7539926B1 (en) * 2006-02-14 2009-05-26 Xilinx, Inc. Method of correcting errors stored in a memory array
KR101425957B1 (ko) * 2007-08-21 2014-08-06 삼성전자주식회사 이씨씨 제어 회로 및 그것을 포함하는 멀티채널 메모리시스템
US8495465B1 (en) * 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8341498B2 (en) * 2010-10-01 2012-12-25 Sandisk Technologies Inc. System and method of data encoding
US8738993B2 (en) 2010-12-06 2014-05-27 Intel Corporation Memory device on the fly CRC mode
US8694857B2 (en) 2011-04-13 2014-04-08 Inphi Corporation Systems and methods for error detection and correction in a memory module which includes a memory buffer
US9218852B2 (en) * 2011-06-30 2015-12-22 Sandisk Technologies Inc. Smart bridge for memory core
US8874994B2 (en) * 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
CN102567134B (zh) * 2012-01-06 2015-01-07 威盛电子股份有限公司 存储器模块的错误检查与校正***以及方法
US8996960B1 (en) 2012-06-26 2015-03-31 Inphi Corporation Vertical error correction code for DRAM memory
US8996869B1 (en) 2012-07-02 2015-03-31 Bae Systems Information And Electronic Systems Integration Inc. Secure mission module
US8938656B2 (en) * 2012-09-14 2015-01-20 Sandisk Technologies Inc. Data storage device with intermediate ECC stage
US20150067437A1 (en) 2013-08-30 2015-03-05 Kuljit S. Bains Apparatus, method and system for reporting dynamic random access memory error information
US8891303B1 (en) * 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
KR102178137B1 (ko) 2014-08-26 2020-11-12 삼성전자주식회사 반도체 메모리 장치, 이의 에러 정정 방법 및 이를 포함하는 메모리 시스템
US9606928B2 (en) * 2014-08-26 2017-03-28 Kabushiki Kaisha Toshiba Memory system
KR20160056380A (ko) 2014-11-10 2016-05-20 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9798475B2 (en) * 2015-03-11 2017-10-24 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
US9639420B2 (en) 2015-03-13 2017-05-02 Micron Technology, Inc. High performance memory controller
US9691505B2 (en) 2015-03-27 2017-06-27 Intel Corporation Dynamic application of error correction code (ECC) based on error type
US9811420B2 (en) 2015-03-27 2017-11-07 Intel Corporation Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
JP6577302B2 (ja) 2015-08-28 2019-09-18 東芝メモリ株式会社 メモリシステム
JP6797727B2 (ja) * 2017-03-21 2020-12-09 キオクシア株式会社 半導体記憶装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130198587A1 (en) * 2012-01-26 2013-08-01 Samsung Electronics Co., Ltd. Memory buffer performing error correction coding (ecc)
US20140245105A1 (en) * 2013-02-26 2014-08-28 Hoi-Ju CHUNG Semiconductor memory devices including error correction circuits and methods of operating the semiconductor memory devices

Also Published As

Publication number Publication date
EP3499376A1 (en) 2019-06-19
US10866855B2 (en) 2020-12-15
EP3499376B1 (en) 2022-07-13
KR20190069998A (ko) 2019-06-20
US20190179699A1 (en) 2019-06-13
CN110046112A (zh) 2019-07-23

Similar Documents

Publication Publication Date Title
US10581458B2 (en) Data storage apparatus and operating method thereof
US8522114B2 (en) Memory controller and memory system
US8769378B2 (en) Controller, a method of operating the controller and a memory system
CN110347530B (zh) 数据存储装置及其操作方法
US20180052732A1 (en) Semiconductor device and semiconductor system
KR20220021186A (ko) 데이터 처리 시스템 내 데이터를 공유하는 장치 및 방법
US9472300B2 (en) Data storage device and operating method thereof
US10162703B2 (en) Methods of correcting data errors and semiconductor devices used therein
KR102647418B1 (ko) 반도체장치 및 반도체시스템
US10579472B2 (en) Semiconductor devices
US20160253239A1 (en) Data storage device and operating method thereof
KR20180086816A (ko) 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
US11245420B2 (en) Apparatus and method for recovering a data error in a memory system
KR20220045343A (ko) 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법
US20170286219A1 (en) Data storage device and operating method thereof
KR102449346B1 (ko) 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템
US10261860B2 (en) Semiconductor systems
KR20210156713A (ko) 개선된 ecc 메모리 칩 인코더 및 디코더
US10917111B2 (en) Error correction code unit and error correction method
CN112242175B (zh) 存储***和用于校正存储***中的错误的方法
KR20220120859A (ko) 메모리 시스템 내 에러 정정 코드를 사용하는 장치 및 방법
CN116783654A (zh) 自适应错误校正以提高***存储器可靠性、可用性和可服务性(ras)
US20230280930A1 (en) Memory controller and memory system for executing error correction operation
KR102674590B1 (ko) 반도체시스템
KR20230123801A (ko) Dwa 인코더 및 dwa 디코더를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법

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
GRNT Written decision to grant