KR20230131028A - 에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템 - Google Patents

에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템 Download PDF

Info

Publication number
KR20230131028A
KR20230131028A KR1020220028390A KR20220028390A KR20230131028A KR 20230131028 A KR20230131028 A KR 20230131028A KR 1020220028390 A KR1020220028390 A KR 1020220028390A KR 20220028390 A KR20220028390 A KR 20220028390A KR 20230131028 A KR20230131028 A KR 20230131028A
Authority
KR
South Korea
Prior art keywords
data
address
memory
internal
read
Prior art date
Application number
KR1020220028390A
Other languages
English (en)
Inventor
송청기
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020220028390A priority Critical patent/KR20230131028A/ko
Priority to US17/735,635 priority patent/US20230280930A1/en
Publication of KR20230131028A publication Critical patent/KR20230131028A/ko

Links

Images

Classifications

    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation

Landscapes

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

Abstract

메모리시스템은 다수의 메모리셀들을 포함하는 메모리장치; 및 상기 다수의 메모리셀들 중 제1 리드동작에서 엑세스되는 적어도 하나의 메모리셀이 불량으로 판단될 때 상기 제1 리드동작에서 생성된 제1 내부어드레스를 불량어드레스로 저장하고, 상기 제1 리드동작에서 생성된 내부리드데이터를 대체데이터로 저장하는 메모리컨트롤러를 포함한다.

Description

에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템{MEMORY CONTROLLER AND MEMORY SYSTEMS FOR EXECUTING ERROR CORRECTION OPERATIONS}
본 발명은 데이터엑세스동작 중 에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템에 관한 것이다.
최근 메모리장치의 동작속도를 증가시키기 위해 클럭 사이클(cycle)마다 4비트 또는 8비트의 데이터를 입/출력하는 방식들이 사용되고 있다. 데이터의 입/출력 속도가 빨라지는 경우 데이터가 전송되는 과정 중 발생되는 에러의 발생 확률도 증가 되므로, 데이터 전송의 신뢰성을 보장하기 위한 별도의 장치와 방법이 추가 적으로 요구되고 있다.
데이터 전송 시마다 에러 발생 여부를 확인할 수 있는 에러코드를 생성하여 데이터와 함께 전송함으로써, 데이터 전송의 신뢰성을 보장하는 방법을 사용하고 있다. 에러코드에는 발생한 에러를 검출할 수 있는 에러검출코드 (Error Detection Code, EDC)와, 에러 발생시 이를 자체적으로 정정할 수 있는 에러정정코드(Error Correction Code, ECC) 등이 있다.
본 발명은 데이터엑세스동작 중 에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템에 관한 것이다.
이를 위해 본 발명은 다수의 메모리셀들을 포함하는 메모리장치; 및 상기 다수의 메모리셀들 중 제1 리드동작에서 엑세스되는 적어도 하나의 메모리셀이 불량으로 판단될 때 상기 제1 리드동작에서 생성된 제1 내부어드레스를 불량어드레스로 저장하고, 상기 제1 리드동작에서 생성된 내부리드데이터를 대체데이터로 저장하는 메모리컨트롤러를 포함하는 메모리시스템을 제공한다.
또한, 본 발명은 메모리장치에 포함된 다수의 메모리셀들 중 제1 리드동작에서 엑세스되는 적어도 하나의 메모리셀에서 출력되는 셀데이터 및 셀신드롬이 포함된 메모리리드데이터를 토대로 에러디코딩동작을 수행하여 내부리드데이터 및 에러플래그를 생성하는 에러정정회로; 및 상기 에러플래그를 토대로 상기 제1 리드동작에서 생성된 제1 내부어드레스를 불량어드레스로 저장하고, 상기 내부리드데이터를 대체데이터로 저장하는 데이터대체제어회로를 포함하는 메모리컨트롤러를 제공한다.
또한, 본 발명은 다수의 메모리셀들을 포함하는 메모리장치; 및 상기 다수의 메모리셀들 중 이벤트구간마다 수행되는 셀프리드동작에서 엑세스되는 적어도 하나의 메모리셀이 불량으로 판단될 때 상기 셀프리드동작에서 생성된 셀프어드레스를 불량어드레스로 저장하고, 상기 셀프리드동작에서 생성된 내부리드데이터를 대체데이터로 저장하는 메모리컨트롤러를 포함하는 메모리시스템을 제공한다.
본 발명에 의하면 리드동작 및 라이트동작이 포함되는 데이터엑세스동작 중 엑세스되는 적어도 하나의 메모리셀이 불량메모리셀로 판단될 때 메모리컨트롤러 내부에 저장된 대체데이터를 사용하여 데이터엑세스동작이 수행되도록 제어함으로써, 불량메모리셀에 엑세스되어 에러가 발생하는 것을 차단할 수 있는 효과가 있다.
또한, 본 발명에 의하면 불량어드레스 및 대체데이터가 메모리컨트롤러 내부에 저장된 후 리드동작이 수행될 때 에러디코딩동작 없이 전송대체데이터를 토대로 호스트로 전송되는 리드데이터가 생성되도록 제어됨으로써, 에러디코딩동작에 의해 에러를 정정할 수 없는 경우에도 불량메모리셀에 의해 발생되는 에러를 차단할 수 있는 효과도 있다.
또한, 본 발명에 의하면 메모리컨트롤러에 저장된 대체데이터를 사용하여 데이터엑세스동작이 수행되도록 제어하여 불량메모리셀에 엑세스되어 에러가 발생하는 것이 차단됨으로써, 메모리시스템의 성능이 열화되는 것을 방지할 수 있는 효과도 있다.
또한, 본 발명에 의하면 이벤트구간마다 엑세스되는 적어도 하나의 메모리셀에 대한 불량 여부를 판단하여 불량어드레스 및 대체데이터를 메모리컨트롤러에 저장할 수 있는 셀프리드동작을 제공함으로써, 대체데이터를 사용하여 불량메모리셀에 대한 데이터엑세스동작을 수행할 수 있는 효과도 있다.
도 1은 본 발명의 일 예에 따른 메모리컨트롤러의 구성을 도시한 블럭도이다.
도 2는 본 발명의 일 예에 따른 데이터대체제어회로의 구성을 도시한 블럭도이다.
도 3은 본 발명의 일 예에 따른 매치신호생성회로의 구성을 도시한 블럭도이다.
도 4는 본 발명의 일 예에 따른 매치신호생성회로의 동작을 설명하기 위한 표이다.
도 5는 본 발명의 일 예에 따른 대체데이터(Altenative Data)생성회로의 구성을 도시한 블럭도이다.
도 6은 본 발명의 일 예에 따른 대체데이터생성회로의 동작을 설명하기 위한 표이다.
도 7은 본 발명의 일 예에 따른 저장제어회로의 동작을 보여주는 타이밍도이다.
도 8은 본 발명의 일 예에 따른 커맨드큐의 동작을 보여주는 타이밍도이다.
도 9는 본 발명의 일 예에 따른 메모리컨트롤러에서 수행되는 데이터엑세스동작을 보여주는 타이밍도이다.
도 10은 본 발명의 일 예에 따른 데이터대체제어회로의 동작을 설명하기 위한 블럭도이다.
도 11은 리드동작이 종료될 때의 동작을 보여주는 타이밍도이다.
도 12는 본 발명의 다른 예에 따른 메모리컨트롤러의 구성을 도시한 블럭도이다.
도 13은 다른 예에 따른 데이터대체제어회로의 구성을 도시한 블럭도이다.
도 14 및 도 15는 본 발명의 다른 예에 따른 메모리컨트롤러의 셀프리드동작을 보여주는 도면들이다.
도 16은 본 발명의 일 예에 따른 메모리시스템의 구성을 도시한 블럭도이다.
도 17은 본 발명의 일 예에 따른 전자시스템의 구성을 도시한 블럭도이다.
도 18은 본 발명의 다른 예에 따른 전자시스템의 구성을 도시한 블럭도이다.
다음의 실시예들의 기재에 있어서, "기 설정된"이라는 용어는 프로세스나 알고리즘에서 매개변수를 사용할 때 매개변수의 수치가 미리 결정되어 있음을 의미한다. 매개변수의 수치는 실시예에 따라서 프로세스나 알고리즘이 시작할 때 설정되거나 프로세스나 알고리즘이 수행되는 구간 동안 설정될 수 있다.
다양한 구성요소들을 구별하는데 사용되는 "제1" 및 "제2" 등의 용어는 구성요소들에 의해 한정되지 않는다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 반대로 제2 구성요소는 제1 구성요소로 명명될 수 있다.
하나의 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 할 때 직접적으로 연결되거나 중간에 다른 구성요소를 매개로 연결될 수도 있다고 이해되어야 한다. 반면 "직접 연결되어" 및 "직접 접속되어"라는 기재는 하나의 구성요소가 다른 구성요소에 또 다른 구성요소를 사이에 두지 않고 직접 연결된다고 이해되어야 한다.
"로직하이레벨" 및 "로직로우레벨"은 신호들의 로직레벨들을 설명하기 위해 사용된다. "로직하이레벨"을 갖는 신호는 "로직로우레벨"을 갖는 신호와 구별된다. 예를 들어, 제1 전압을 갖는 신호가 "로직하이레벨"을 갖는 신호에 대응할 때 제2 전압을 갖는 신호는 "로직로우레벨"을 갖는 신호에 대응할 수 있다. 일 실시예에 따라 "로직하이레벨"은 "로직로우레벨"보다 큰 전압으로 설정될 수 있다. 한편, 신호들의 로직레벨들은 실시예에 따라서 다른 로직레벨 또는 반대의 로직레벨로 설정될 수 있다. 예를 들어, 로직하이레벨을 갖는 신호는 실시예에 따라서 로직로우레벨을 갖도록 설정될 수 있고, 로직로우레벨을 갖는 신호는 실시예에 따라서 로직하이레벨을 갖도록 설정될 수 있다.
"로직비트셋"은 신호에 포함된 비트들이 갖는 로직레벨들의 조합을 의미할 수 있다. 신호에 포함된 비트들 각각이 갖는 로직레벨이 변화될 때 신호의 로직비트셋이 다르게 설정될 수 있다. 예를 들어, 신호에 2 비트가 포함될 때 신호에 포함된 2 비트 각각의 로직레벨이 "로직로우레벨, 로직로우레벨"일 때 신호의 로직비트셋은 제1 로직비트셋으로 설정될 수 있고, 신호에 포함된 2 비트 각각의 로직레벨이 "로직로우레벨, 로직하이레벨"일 때 신호의 로직비트셋은 제2 로직비트셋으로 설정될 수 있다.
이하, 실시예를 통하여 본 발명을 더욱 상세히 설명하기로 한다. 이들 실시예는 단지 본 발명을 예시하기 위한 것이며, 본 발명의 권리 보호 범위가 이들 실시예에 의해 제한되는 것은 아니다.
도 1은 본 발명의 일 예에 따른 메모리컨트롤러(10)의 구성을 도시한 블럭도이다. 도 1에 도시된 바와 같이, 메모리컨트롤러(10)는 호스트인터페이스(HIF, 101), 커맨드큐(Command Queue, 103), 스케쥴러(Scheduler, 105), 데이터큐(DATA Queue, 107), 에러정정회로(109), 어드레스생성회로(ADD GEN, 111), 데이터대체제어회로(ALT CTR, 113) 및 메모리인터페이스(MIF, 115)를 포함할 수 있다.
호스트인터페이스(101)는 CXL(Compute eXpress Link), AXI(Advanced eXtensible Interface) 및 맞춤형 인터페이스(Customized Interface) 중 하나가 적용되어 메모리컨트롤러(10) 및 호스트(도 16의 31) 사이의 호스트커맨드(HCMD), 호스트데이터(HDATA) 및 호스트어드레스(HADD)의 전송을 제어할 수 있다.
커맨드큐(103)는 호스트인터페이스(101) 및 메모리인터페이스(115)에 연결될 수 있다. 커맨드큐(103)는 리드동작 및 라이트동작이 포함되는 데이터엑세스동작에서 호스트인터페이스(101)로 수신되는 호스트커맨드(HCMD)로부터 리드커맨드(RCMD) 또는 라이트커맨드(WCMD)를 추출하여 저장할 수 있다. 커맨드큐(103)는 리드커맨드큐(RCMDQ, 103_1), 라이트커맨드큐(WCMD Q,103_3) 및 리드리스판스큐(R_RES Q, 103_5)를 포함할 수 있다.
리드커맨드큐(RCMDQ, 103_1)는 리드동작을 위해 호스트인터페이스(101)로 수신되는 호스트커맨드(HCMD)로부터 리드커맨드(RCMD)를 추출하여 저장할 수 있다. 리드커맨드큐(103_1)는 리드커맨드(RCMD)가 저장될 때 관련 정보를 스케쥴러(105)에 인가할 수 있다. 리드커맨드큐(103_1)는 스케쥴러(105)에 의해 제어되어 저장된 리드커맨드(RCMD)에 따른 리드동작을 위해 내부리드커맨드(IRCMD)를 생성할 수 있다. 리드커맨드큐(103_1)는 내부리드커맨드(IRCMD)를 메모리인터페이스(115)를 통해 메모리커맨드(MCMD)로 메모리장치(도 16의 35)에 인가할 수 있다. 리드커맨드큐(103_1)는 내부리드커맨드(IRCMD)를 데이터대체제어회로(113)에 인가할 수 있다.
라이트커맨드큐(WCMD Q, 103_3)는 라이트동작을 위해 호스트인터페이스(101)로 수신되는 호스트커맨드(HCMD)로부터 라이트커맨드(WCMD)를 추출하여 저장할 수 있다. 라이트커맨드큐(103_3)는 라이트커맨드(WCMD)가 저장될 때 관련 정보를 스케쥴러(105)에 인가할 수 있다. 라이트커맨드큐(103_3)는 스케쥴러(105)에 의해 제어되어 저장된 라이트커맨드(WCMD)에 따른 라이트동작을 위해 내부라이트커맨드(IWCMD)를 생성할 수 있다. 라이트커맨드큐(103_3)는 메모리인터페이스(115)에 연결될 수 있고, 내부라이트커맨드(IWCMD)를 메모리인터페이스(115)를 통해 메모리커맨드(MCMD)로 메모리장치(도 16의 35)에 인가할 수 있다. 라이트커맨드큐(103_3)는 내부라이트커맨드(IWCMD)를 데이터대체제어회로(113)에 인가할 수 있다.
리드리스판스큐(R_RES Q, 103_5)는 스케쥴러(105)에 의해 제어되어 리드커맨드큐(RCMDQ, 103_1)에 저장된 리드커맨드(RCMD)에 의해 리드동작이 수행되는 구간동안 리드리스판스커맨드(R_RES)를 저장할 수 있다, 리드리스판스큐(103_5)는 스케쥴러(105)에 의해 제어되어 리드동작이 종료될 때 저장된 리드리스판스커맨드(R_RES)를 삭제할 수 있다.
스케쥴러(105)는 커맨드큐(103)로부터 리드커맨드(RCMD)가 저장될 때 관련 정보 및 라이트커맨드(WCMD)가 저장될 때 관련 정보를 수신할 수 있다. 좀 더 구체적으로, 스케쥴러(105)는 리드커맨드큐(103_1)로부터 리드커맨드(RCMD)가 저장될 때 관련 정보를 수신할 수 있고, 라이트커맨드큐(103_3)로부터 라이트커맨드(WCMD)가 저장될 때 관련 정보를 수신할 수 있다. 스케쥴러(105)는 리드커맨드(RCMD) 및 라이트커맨드(WCMD)를 토대로 내부리드커맨드(IRCMD), 내부라이트커맨드(IWCMD) 및 리드리스판스커맨드(R_RES)가 생성되어 출력되도록 커맨드큐(103)를 제어할 수 있다. 좀 더 구체적으로, 스케쥴러(105)는 리드커맨드(RCMD)를 토대로 내부리드커맨드(IRCMD)가 생성되어 출력되도록 리드커맨드큐(103_1)를 제어할 수 있고, 라이트커맨드(WCMD)를 토대로 내부라이트커맨드(IWCMD)가 생성되어 출력되도록 라이트커맨드큐(103_3)를 제어할 수 있으며, 리드동작구간동안 리드리스판스커맨드(R_RES)가 저장되도록 리드리스판스큐(103_5)를 제어할 수 있다.
스케쥴러(105)는 데이터큐(107)로부터 라이트데이터(WDATA)가 저장되는 정보 및 리드데이터(RDATA)가 저장될 때 관련 정보를 수신할 수 있다. 좀 더 구체적으로, 스케쥴러(105)는 라이트데이터큐(107_1)로부터 라이트데이터(WDATA)가 저장될 때 관련 정보를 수신할 수 있고, 리드데이터큐(107_3)로부터 내부리드데이터(IRDD)가 저장될 때 관련 정보를 수신할 수 있다. 스케쥴러(105)는 라이트데이터(WDATA) 및 내부리드데이터(IRDD)를 토대로 내부라이트데이터(IWTD) 및 리드데이터(RDATA)가 생성되어 출력되도록 데이터큐(107)를 제어할 수 있다. 좀 더 구체적으로, 스케쥴러(105)는 라이트데이터(WDATA)를 토대로 내부라이트데이터(IWTD)가 생성되어 출력되도록 라이트데이터큐(107_1)를 제어할 수 있고, 내부리드데이터(IRDD)를 토대로 리드데이터(RDATA)가 생성되어 출력되도록 리드데이터큐(107_3)를 제어할 수 있다.
스케쥴러(105)는 라이트동작에서 내부라이트데이터(IWTD)를 토대로 에러인코딩동작이 수행되어 메모리라이트데이터(MWTD)가 생성되도록 에러정정회로(109)를 제어할 수 있고, 리드동작에서 메모리리드데이터(MRDD)를 토대로 에러디코딩동작을 수행되어 내부리드데이터(IRDD) 및 에러플래그(EFLAG)가 생성되도록 에러정정회로(109)를 제어할 수 있다.
데이터큐(107)는 호스트인터페이스(101) 및 에러정정회로(109)에 연결될 수 있다. 데이터큐(107)는 라이트동작에서 호스트인터페이스(101)로 수신되는 호스트데이터(HDATA)로부터 라이트데이터(WDATA)를 추출하여 저장하거나 리드동작에서 에러정정회로(109)의 에러정정동작 결과 생성된 내부리드데이터(IRDD)를 수신하여 저장할 수 있다. 데이터큐(107)는 라이트데이터큐(WDATA Q, 107_1) 및 리드데이터큐(RDATAQ, 107_3)를 포함할 수 있다.
라이트데이터큐(107_1)는 라이트동작을 위해 호스트인터페이스(101)로 수신되는 호스트데이터(HDATA)로부터 라이트데이터(WDATA)를 추출하여 저장할 수 있다. 라이트데이터큐(107_1)는 라이트데이터(WDATA)가 저장될 때 관련 정보를 스케쥴러(105)에 인가할 수 있다. 라이트데이터큐(107_1)는 스케쥴러(105)에 의해 제어되어 저장된 라이트데이터(WDATA)를 내부라이트데이터(IWTD)로 출력할 수 있다. 라이트데이터큐(107_1)는 라이트에러정정회로(WECC, 109_1)에 연결될 수 있고, 라이트동작을 위해 내부라이트데이터(IWTD)를 라이트에러정정회로(109_1)에 인가할 수 있다.
리드데이터큐(107_3)는 리드동작을 위해 에러정정회로(109)로부터 내부리드데이터(IRDD)를 수신하여 저장할 수 있다. 리드데이터큐(107_3)는 내부리드데이터(IRDD)가 저장될 때 관련 정보를 스케쥴러(105)에 인가할 수 있다. 리드데이터큐(107_3)는 스케쥴러(105)에 의해 제어되어 저장된 내부리드데이터(IRDD)를 리드데이터(RDATA)로 출력할 수 있다. 리드데이터큐(107_3)는 호스트인터페이스(101)를 통해 리드데이터(RDATA)를 호스트데이터(HDATA)로 호스트(도 16의 31)에 인가할 수 있다.
에러정정회로(109)는 스케쥴러(105), 데이터큐(107), 데이터대체제어회로(113) 및 메모리인터페이스(115)에 연결될 수 있다. 에러정정회로(109)는 라이트동작에서 데이터큐(107)로부터 수신된 내부라이트데이터(IWTD)를 토대로 에러인코딩동작을 수행하여 메모리라이트데이터(MWTD)를 생성하거나 리드동작에서 메모리인터페이스(115)로부터 수신된 메모리리드데이터(MRDD)를 토대로 에러디코딩동작을 수행하여 에러플래그(EFLAG) 및 내부리드데이터(IRDD)를 생성할 수 있다. 에러정정회로(109)는 에러플래그(EFLAG)를 데이터대체제어회로(113)에 인가할 수 있다. 에러정정회로(109)는 불량어드레스들(도 3의 FADD<1:4>) 및 대체데이터들(도 5의 ALTD<1:4>)이 저장된 상태에서 불량어드레스들(도 3의 FADD<1:4>) 중 하나와 동일한 내부어드레스(IADD)에 의해 엑세스되는 적어도 하나의 메모리셀에 대한 데이터엑세스동작이 수행될 때 활성화되는 매치플래그(MF)를 데이터대체제어회로(113)로부터 수신할 수 있다. 에러정정회로(109)는 리드동작에서 매치플래그(MF)가 활성화될 때 에러디코딩동작을 수행하지 않고 전송대체데이터(TALTD)를 내부리드데이터(IRDD)로 출력할 수 있다. 에러정정회로(109)는 라이트동작에서 매치플래그(MF)가 활성화될 때 내부라이트데이터(IWTD)에 대한 에러디코딩동작을 수행하지 않고, 내부라이트데이터(IWTD)를 전송대체데이터(TALTD)로 데이터대체제어회로(113)에 인가할 수 있다. 에러정정회로(109)는 라이트에러정정회로(WECC, 109_1) 및 리드에러정정회로(RECC, 109_3)를 포함할 수 있다.
라이트에러정정회로(109_1)는 스케쥴러(105)에 의해 제어되어 수행되는 라이트동작에서 데이터큐(107)로부터 수신된 내부라이트데이터(IWTD)를 토대로 에러인코딩동작을 수행할 수 있다. 라이트에러정정회로(109_1)에서 수행되는 에러인코딩동작은 에러정정코드(Error Correction Code, ECC)를 사용하여 에러비트에 대한 정보를 갖는 신드롬(syndrome)을 생성하는 방식으로 진행될 수 있다. 라이트에러정정회로(109_1)는 에러인코딩동작 결과 내부라이트데이터(IWTD)로부터 신드롬을 생성할 수 있다. 메모리라이트데이터(MWTD)에는 신드롬 및 내부라이트데이터(IWTD)가 포함될 수 있다. 일 예로, 라이트에러정정회로(109_1)는 64 비트로 구성된 내부라이트데이터(IWTD)를 수신하여 에러인코딩동작을 수행하여, 에러인코딩동작 결과 생성된 8 비트의 신드롬(syndrome) 및 64 비트로 구성된 내부라이트데이터(IWTD)가 포함되어 72 비트로 구성된 메모리라이트데이터(MWTD)를 생성할 수 있다. 라이트에러정정회로(109_1)는 메모리라이트데이터(MWTD)를 메모리인터페이스(115)를 통해 메모리데이터(MDATA)로 메모리장치(도 16의 35)에 인가할 수 있다. 라이트에러정정회로(109_1)는 라이트동작에서 매치플래그(MF)가 활성화될 때 라이트데이터(IWTD)에 대한 에러디코딩동작을 수행하지 않고, 내부라이트데이터(IWTD)를 전송대체데이터(TALTD)로 데이터대체제어회로(113)에 인가할 수 있다.
리드에러정정회로(109_3)는 스케쥴러(105)에 의해 제어되어 수행되는 리드동작에서 메모리인터페이스(115)를 통해 메모리장치(도 16의 35)로부터 수신된 메모리리드데이터(MRDD)를 토대로 에러디코딩동작을 수행할 수 있다. 메모리리드데이터(MRDD)는 메모리장치(도 16의 35)에 포함된 메모리셀들(미도시) 중 리드동작에서 엑세스되는 적어도 하나의 메모리셀에서 출력되는 셀데이터(미도시)와 셀신드롬(미도시)을 포함할 수 있다. 리드에러정정회로(109_3)에서 수행되는 에러디코딩동작은 메모리리드데이터(MRDD)에 포함된 셀신드롬에 대한 에러디코딩동작을 통해 셀데이터에 에러가 포함되었는지 여부를 판단하는 방식으로 진행될 수 있다. 리드에러정정회로(109_3)는 에러디코딩동작에 따라 셀데이터에 에러가 포함되어 있지 않다고 판단되는 셀데이터를 내부리드데이터(IRDD)로 출력할 수 있다. 일 예로, 리드에러정정회로(109_3)는 메모리리드데이터(MRDD)에 64 비트의 셀데이터 및 8 비트의 셀신드롬이 포함되고, 셀데이터에 에러가 포함되어 있지 않다고 판단될 때 64 비트의 셀데이터를 내부리드데이터(IRDD)로 출력할 수 있다. 리드에러정정회로(109_3)는 에러디코딩동작에 따라 셀데이터에 에러가 포함되어 있다고 판단되는 경우 셀데이터에 에러를 정정하고, 에러가 정정된 셀데이터를 내부리드데이터(IRDD)로 출력할 수 있다. 다른 예로, 리드에러정정회로(109_3)는 메모리리드데이터(MRDD)에 64 비트의 셀데이터 및 8 비트의 셀신드롬이 포함되고, 셀데이터에 에러가 포함되어 있다고 판단될 때 셀신드롬을 토대로 64 비트의 셀데이터의 에러를 정정하고, 에러가 정정된 64 비트의 셀데이터를 내부리드데이터(IRDD)로 출력할 수 있다. 리드에러정정회로(109_3)는 내부리드데이터(IRDD)를 리드데이터큐(107_3)에 인가할 수 있다. 리드에러정정회로(109_3)는 메모리리드데이터(MRDD)에 포함된 셀데이터에 에러가 포함된 것으로 판단되는 경우 또는 메모리리드데이터(MRDD)에 포함된 셀데이터의 에러가 정정되는 경우 활성화되는 에러플래그(EFLAG)를 생성할 수 있다. 리드에러정정회로(109_3)는 에러플래그(EFLAG)를 데이터대체제어회로(113)에 인가할 수 있다. 리드에러정정회로(109_3)는 리드동작에서 매치플래그(MF)가 활성화될 때 메모리리드데이터(MRDD)를 토대로 에러디코딩동작을 수행하지 않고 데이터대체제어회로(113)에 저장된 전송대체데이터(TALTD)를 내부리드데이터(IRDD)로 출력할 수 있다.
어드레스생성회로(111)는 호스트인터페이스(101), 데이터대체제어회로(113) 및 메모리인터페이스(115)에 연결될 수 있다. 어드레스생성회로(111)는 데이터엑세스동작에서 호스트인터페이스(101)로 수신되는 호스트어드레스(HADD)로부터 어드레스(ADD)를 추출하여 수신할 수 있다. 어드레스생성회로(111)는 어드레스(ADD)를 토대로 리드동작 또는 라이트동작이 수행될 때 메모리셀에 엑세스하기 위한 내부어드레스(IADD)를 생성할 수 있다. 어드레스생성회로(111)는 내부어드레스(IADD)를 데이터대체제어회로(113) 및 메모리인터페이스(115)에 인가할 수 있다.
데이터대체제어회로(113)는 커맨드큐(103), 에러정정회로(109), 어드레스생성회로(111) 및 메모리인터페이스(115)에 연결될 수 있다. 데이터대체제어회로(113)는 커맨드큐(103)로부터 내부리드커맨드(IRCMD) 및 내부라이트커맨드(IWCMD)를 수신할 수 있고, 에러정정회로(109)로부터 에러플래그(EFLAG) 및 내부리드데이터(IRDD)를 수신할 수 있으며, 어드레스생성회로(111)로부터 내부어드레스(IADD)를 수신할 수 있다. 데이터대체제어회로(113)는 리드동작에서 활성화된 에러플래그(EFLAG)가 수신될 때 메모리셀에 엑세스하기 위해 생성된 내부어드레스(IADD)를 불량어드레스들(도 3의 FADD<1:4>) 중 하나로 저장할 수 있고, 메모리리드데이터(MRDD)에 포함된 셀데이터의 에러가 정정되어 생성된 내부리드데이터(IRDD)를 대체데이터들(도 5의 ALTD<1:4>) 중 하나로 저장할 수 있다. 본 실시예에서, 데이터대체제어회로(113)는 내부리드데이터(IRDD)를 대체데이터들(도 5의 ALTD<1:4>) 중 하나로 저장하도록 구현되었지만 실시예에 따라서 메모리리드데이터(MRDD)를 대체데이터들(도 5의 ALTD<1:4>) 중 하나로 저장하도록 구현될 수도 있다. 데이터대체제어회로(113)는 불량어드레스들(도 3의 FADD<1:4>) 및 대체데이터들(ALTD<1:4>)이 저장된 상태에서 불량어드레스들(도 3의 FADD<1:4>) 중 적어도 하나와 동일한 내부어드레스(IADD)에 의해 엑세스되는 메모리셀에 대한 데이터엑세스동작이 수행될 때 활성화되는 매치플래그(MF)를 생성할 수 있다. 데이터대체제어회로(113)는 리드동작에서 매치플래그(MF)가 활성화될 때 대체데이터(도 5의 ALTD<1:4>) 중 하나로 설정되는 전송대체데이터(TALTD)를 에러정정회로(109)에 인가하고, 에러정정회로(109)는 전송대체데이터(TALTD)를 내부리드데이터(IRDD)로 출력할 수 있다. 데이터대체제어회로(113)는 라이트동작에서 매치플래그(MF)가 활성화될 때 내부라이트데이터(IWTD)를 전송대체데이터(TALTD)로 수신하여 대체데이터(도 5의 ALTD<1:4>) 중 하나로 저장할 수 있다.
메모리인터페이스(115)는 메모리컨트롤러(10) 및 메모리장치(도 16의 35) 사이의 메모리커맨드(MCMD), 메모리데이터(MDATA) 및 메모리어드레스(MADD)의 전송을 제어할 수 있다.
이상 살펴본 바와 같이 구성된 메모리컨트롤러(10)는 리드동작 및 라이트동작이 포함되는 데이터엑세스동작 중 엑세스되는 적어도 하나의 메모리셀이 불량메모리셀로 판단될 때 불량어드레스들(도 3의 FADD<1:4>) 및 대체데이터들(도 5의 ALTD<1:4>)이 저장되는 데이터대체제어회로(113)를 구비하고, 전송대체데이터(TALTD)를 사용하여 리드동작 및 라이트동작이 수행되도록 제어함으로써 불량메모리셀에 엑세스되어 에러가 발생되는 것을 차단할 수 있다. 또한, 메모리컨트롤러(10)는 불량어드레스들(도 3의 FADD<1:4>) 및 대체데이터들(도 5의 ALTD<1:4>)이 데이터대체제어회로(113)에 저장된 후 리드동작이 수행될 때 에러디코딩동작이 수행되지 않고 전송대체데이터(TALTD)를 토대로 호스트로 전송되는 리드데이터(RDATA)가 생성되도록 제어함으로서, 에러디코딩동작에 의해 에러를 정정할 수 없는 경우에도 불량메모리셀에 의해 발생되는 에러를 차단할 수 있다. 또한, 메모리컨트롤러(10)는 전송대체데이터(TALTD)를 사용하여 데이터엑세스동작이 수행되도록 제어하여 불량메모리셀에 엑세스되어 에러가 발생하는 것을 차단함으로써, 메모리시스템의 성능이 열화되는 것을 방지할 수 있다.
도 2는 본 발명의 일 예에 따른 데이터대체제어회로(113A)의 구성을 도시한 블럭도이다. 도 2에 도시된 바와 같이, 데이터대체제어회로(113A)는 저장제어회로(121), 매치신호생성회로(MS GEN, 123) 및 대체데이터저장회로(ALTD STG, 125)를 포함할 수 있다.
저장제어회로(121)는 에러플래그(EFLAG)를 토대로 내부어드레스(IADD)가 불량어드레스들(도 3의 FADD<1:4>) 중 하나로 저장되도록 매치신호생성회로(123)를 제어할 수 있고, 내부리드데이터(IRDD)가 대체데이터들(도 5의 ALTD<1:4>) 중 하나로 저장되도록 대체데이터저장회로(125)를 제어할 수 있다. 저장제어회로(121)는 어드레스저장제어회로(ADD STG CTR, 121_1) 및 데이터저장제어회로(DATA STG CTR, 121_3)를 포함할 수 있다.
어드레스저장제어회로(121_1)는 리드동작에서 에러플래그(EFLAG)가 활성화될 때 내부어드레스(IADD)가 불량어드레스들(도 3의 FADD<1:4>) 중 하나로 저장될 수 있도록 매치신호생성회로(123)를 제어할 수 있다. 좀 더 구체적으로, 어드레스저장제어회로(121_1)는 리드동작에서 에러플래그(EFLAG)가 활성화될 때 내부어드레스(IADD)가 앞서 저장된 불량어드레스들(도 3의 FADD<1:4>) 중 하나와 일치하지 않을 때 내부어드레스(IADD)를 불량어드레스들(도 3의 FADD<1:4>) 중 하나로 저장되도록 매치신호생성회로(123)를 제어할 수 있다. 일 예로, 매치신호생성회로(123)에 불량어드레스들(도 3의 FADD<1:4>)이 저장되지 않은 상태에서 수행되는 리드동작에서 에러플래그(EFLAG)가 활성화될 때 어드레스저장제어회로(121_1)는 내부어드레스(IADD)가 불량어드레스(FADD<1>)로 저장되도록 매치신호생성회로(123)를 제어할 수 있다. 다른 예로, 매치신호생성회로(123)에 불량어드레스(FADD<1>)가 저장된 상태에서 수행되는 리드동작에서 에러플래그(EFLAG)가 활성화되고, 내부어드레스(IADD)가 불량어드레스(FADD<1>)와 일치하지 않을 때 어드레스저장제어회로(121_1)는 내부어드레스(IADD)를 불량어드레스(FADD<2>)로 저장되도록 매치신호생성회로(123)를 제어할 수 있다.
데이터저장제어회로(121_3)는 리드동작에서 에러플래그(EFLAG)가 활성화될 때 내부리드데이터(IRDD)가 대체데이터들(도 5의 ALTD<1:4>) 중 하나로 저장될 수 있도록 대체데이터저장회로(125)를 제어할 수 있다. 데이터저장제어회로(121_3)는 리드동작에서 에러플래그(EFLAG)가 활성화될 때 내부어드레스(IADD)가 앞서 저장된 불량어드레스(도 3의 FADD<1:4>)와 일치하지 않을 때 내부리드데이터(IRDD)가 대체데이터들(도 5의 ALTD<1:4>) 중 하나로 저장될 수 있도록 대체데이터저장회로(125)를 제어할 수 있다. 일 예로, 대체데이터저장회로(125)에 대체데이터들(도 5의 ALTD<1:4>)이 저장되지 않은 상태에서 수행되는 리드동작에서 에러플래그(EFLAG)가 활성화될 때 데이터저장제어회로(121_3)는 내부리드데이터(IRDD)가 대체데이터(ALTD<1>)로 저장될 수 있도록 대체데이터저장회로(125)를 제어할 수 있다. 다른 예로, 대체데이터저장회로(125)에 대체데이터(ALTD<1>)가 저장된 상태에서 수행 되는 리드동작에서 에러플래그(EFLAG)가 활성화될 때 데이터저장제어회로(121_3)는 내부리드데이터(IRDD)가 대체데이터(ALTD<2>)로 저장될 수 있도록 대체데이터저장회로(125)를 제어할 수 있다.
매치신호생성회로(123)는 내부어드레스(IADD), 내부리드커맨드(IRCMD) 및 내부라이트커맨드(IWCMD)를 토대로 불량어드레스들(도 3의 FADD<1:4>)을 저장하거나 매치플래그(MF) 및 매치신호(MS)를 생성할 수 있다. 매치신호생성회로(123)는 리드동작에서 에러플래그(EFLAG)가 활성화되고, 내부어드레스(IADD)가 불량어드레스들(도 3의 FADD<1:4>) 중 하나와 일치되지 않을 때 어드레스저장제어회로(121_1)의 제어에 따라 내부어드레스(IADD)를 불량어드레스들(도 3의 FADD<1:4>) 중 하나로 저장할 수 있다. 매치신호생성회로(123)는 불량어드레스들(도 3의 FADD<1:4>) 중 하나와 일치되는 내부어드레스(IADD)에 의해 엑세스되는 적어도 하나의 메모리셀에 대한 데이터엑세스동작이 수행될 때 활성화되는 매치플래그(MF)를 생성할 수 있다. 매치신호생성회로(123)는 불량어드레스들(도 3의 FADD<1:4>)과 불일치되는 내부어드레스(IADD)에 의해 엑세스되는 적어도 하나의 메모리셀에 대한 데이터엑세스동작이 수행될 때 비활성화되는 매치플래그(MF)를 생성할 수 있다. 매치신호생성회로(123)는 매치플래그(MF)가 활성화될 때 불량어드레스들(도 3의 FADD<1:4>) 중 내부어드레스(IADD)와 동일한 하나에 대응하는 로직비트셋을 갖는 매치신호(MS)를 생성할 수 있다. 일 예로, 매치신호생성회로(123)는 리드동작 또는 라이트동작이 수행될 때 내부어드레스(IADD)가 불량어드레스(도 3의 FADD<1>)와 일치될 때 '00'의 로직비트셋을 갖는 매치신호(MS)를 생성할 수 있고, 내부어드레스(IADD)가 불량어드레스(도 3의 FADD<2>)와 일치될 때 '01'의 로직비트셋을 갖는 매치신호(MS)를 생성할 수 있다.
대체데이터저장회로(125)는 매치신호(MS)를 토대로 내부리드데이터(IRDD)를 대체데이터들(도 5의 ALTD<1:4>) 중 하나로 저장할 수 있고, 대체데이터들(도 5의 ALTD<1:4>) 중 하나를 전송대체데이터(TALTD)로 설정할 수 있다. 대체데이터저장회로(125)는 리드동작에서 에러플래그(EFLAG)가 활성화될 때 매치신호(MS)에 따라 대체데이터들(도 5의 ALTD<1:4>) 중 하나에 내부리드데이터(IRDD)를 저장할 수 있다. 이때, 내부리드데이터(IRDD)가 저장되는 대체데이터들(도 5의 ALTD<1:4>) 중 하나는 내부어드레스(IADD)가 저장되는 불량어드레스들(도 3의 FADD<1:4>) 중 하나에 대응될 수 있다. 대체데이터저장회로(125)는 불량어드레스들(도 3의 FADD<1:4>) 중 하나와 동일한 내부어드레스(IADD)에 의해 엑세스되는 메모리셀에 대한 리드동작이 수행될 때 불량어드레스들(도 3의 FADD<1:4>) 중 내부어드레스(IADD)와 동일한 하나에 대응하는 대체데이터들(도 5의 ALTD<1:4>) 중 하나를 전송대체데이터(TALTD)로 출력할 수 있다. 대체데이터저장회로(125)는 불량어드레스들(도 3의 FADD<1:4>) 중 하나와 동일한 내부어드레스(IADD)에 의해 엑세스되는 메모리셀에 대한 라이트동작이 수행될 때 내부라이트데이터(IWTD)로부터 생성된 전송대체데이터(TALTD)를 불량어드레스들(도 3의 FADD<1:4>) 중 내부어드레스(IADD)와 동일한 하나에 대응하는 대체데이터들(도 5의 ALTD<1:4>) 중 하나로 저장할 수 있다. 대체데이터저장회로(125)는 대체데이터(도 5의 ALTD<1:4>)를 저장하기 위해 SRAM으로 구현될 수 있다.
도 3은 본 발명의 일 예에 따른 매치신호생성회로(123A)의 구성을 도시한 블럭도이다. 도 3에 도시된 바와 같이, 매치신호생성회로(123A)는 내부어드레스수신회로(131), 불량어드레스저장회로(133) 및 매치인코더(135)를 포함할 수 있다.
내부어드레스수신회로(131)는 내부리드커맨드(IRCMD) 및 내부라이트커맨드(IWCMD)를 토대로 내부어드레스(IADD)를 수신하여 저장할 수 있다. 내부어드레스수신회로(131)는 데이터엑세스동작이 수행될 때, 즉, 내부리드커맨드(IRCMD)에 따라 리드동작이 수행되거나 내부라이트커맨드(IWCMD)에 따라 라이트동작이 수행될 때 내부어드레스(IADD)를 수신하여 저장할 수 있다. 내부어드레스수신회로(131)는 불량어드레스저장회로(133)에 연결되어, 내부에 저장된 내부어드레스(IADD)를 불량어드레스저장회로(133)에 인가할 수 있다.
불량어드레스저장회로(133)는 어드레스저장회로(133)로부터 내부어드레스(IADD)를 수신할 수 있다. 불량어드레스저장회로(133)는 리드동작에서 에러플래그(EFLAG)가 활성화될 때 내부어드레스(IADD)를 불량어드레스들(FADD<1:4>) 중 하나로 저장할 수 있다. 좀 더 구체적으로, 불량어드레스저장회로(133)는 리드동작에서 에러플래그(EFLAG)가 첫번째 활성화될 때 내부어드레스(IADD)를 불량어드레스(FADD<1>)로 저장할 수 있고, 리드동작에서 에러플래그(EFLAG)가 두번째 활성화될 때 내부어드레스(IADD)를 불량어드레스(FADD<2>)로 저장할 수 있으며, 리드동작에서 에러플래그(EFLAG)가 세번째 활성화될 때 내부어드레스(IADD)를 불량어드레스(FADD<3>)로 저장할 수 있고, 리드동작에서 에러플래그(EFLAG)가 네번째 활성화될 때 내부어드레스(IADD)를 불량어드레스(FADD<4>)로 저장할 수 있다. 불량어드레스저장회로(133)는 불량어드레스들(FADD<1:4>)이 저장되어 저장공간이 가득 찰 때 내부어드레스(IADD)를 저장하는 동작을 중단할 수 있다. 실시예에 따라서, 불량어드레스저장회로(133)는 첫번째 저장된 불량어드레스(FADD<1>)를 삭제하고, 내부어드레스(IADD)를 새로운 불량어드레스로 저장하도록 구현될 수도 있다. 불량어드레스저장회로(133)는 데이터엑세스동작이 수행될 때 내부어드레스(IADD)를 불량어드레스들(FADD<1:4>)과 비교하여 어드레스매치신호(AML<1:4>)를 생성할 수 있다. 일 예로, 불량어드레스저장회로(133)는 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<1>)와 동일할 때 활성화된 어드레스매치신호(AML<1>)를 생성할 수 있고, 비활성화된 어드레스매치신호들(AML<2:4>)를 생성할 수 있다. 다른 예로, 불량어드레스저장회로(133)는 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<3>)와 동일할 때 활성화된 어드레스매치신호(AML<3>)를 생성할 수 있고, 비활성화된 어드레스매치신호들(AML<1:2>, AML<4>)를 생성할 수 있다. 또 다른 예로, 불량어드레스저장회로(133)는 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스들(FADD<1:4>)과 상이할 때 비활성화된 어드레스매치신호들(AML<1:4>)를 생성할 수 있다. 불량어드레스저장회로(133)는 매치인코더(135)에 연결되어, 어드레스매치신호들(AML<1:4>)을 매치인코더(135)에 인가할 수 있다. 본 실시예에서, 불량어드레스들(FADD<1:4>) 및 어드레스매치신호들(AML<1:4>)은 4 비트로 구현되는 것으로 설명하였지만 실시예에 따라서 다른 비트수로 구현될 수 있다.
매치인코더(135)는 불량어드레스저장회로(133)로부터 어드레스매치신호들(AML<1:4>)을 수신할 수 있다. 매치인코더(135)는 어드레스매치신호들(AML<1:4>)을 토대로 매치플래그(MF) 및 매치신호(MS)를 생성할 수 있다. 매치인코더(135)는 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스들(FADD<1:4>) 중 하나와 일치할 때 활성화된 매치플래그(MF)를 생성할 수 있고, 내부어드레스(IADD)가 불량어드레스들(FADD<1:4>)과 상이할 때 비활성화된 매치플래그(MF)를 생성할 수 있다. 매치인코더(135)는 어드레스매치신호들(AML<1:4>)을 인코딩하여 매치신호(MS)를 생성할 수 있다. 일 예로, 어드레스매치신호들(AML<1:4>) 중 어드레스매치신호(AML<1>)만 활성화될 때 2 진수 로직비트셋 '00'으로 설정된 매치신호(MS)를 생성할 수 있다. 다른 예로, 어드레스매치신호들(AML<1:4>) 중 어드레스매치신호(AML<3>)만 활성화될 때 2 진수 로직비트셋 '10'으로 설정된 매치신호(MS)를 생성할 수 있다. 본 실시예에서, 매치신호(MS)가 2 비트의 2 진수 로직비트셋으로 구현되는 것으로 설명하였지만 실시예에 따라서 다른 비트수로 구현될 수 있다.
도 4는 매치신호생성회로(123A)의 동작을 설명하기 위한 표이다. 도 4를 참고하면 불량어드레스들(FADD<1:4>)이 저장된 상태에서 데이터엑세스동작에서 내부어드레스(IADD)와 불량어드레스들(FADD<1:4>)과의 비교 결과에 따라 생성되는 매치플래그(MF)의 활성화 여부 및 어드레스매치신호들(AML<1:4>) 및 매치신호(MS)의 로직비트셋을 확인할 수 있다. 도 4의 두 번째 가로줄에 도시된 바와 같이, 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<1>)와 동일할 때 어드레스매치신호(AML<1>)가 활성화되고, 매치플래그(MF)는 로직하이레벨('1')로 활성화되며, 매치신호(MS)는 2 진수 로직비트셋 '00'으로 설정될 수 있다. 도 4의 세 번째 가로줄에 도시된 바와 같이, 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<2>)와 동일할 때 어드레스매치신호(AML<2>)가 활성화되고, 매치플래그(MF)는 로직하이레벨('1')로 활성화되며, 매치신호(MS)는 2 진수 로직비트셋 '01'로 설정될 수 있다. 도 4의 네 번째 가로줄에 도시된 바와 같이, 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<3>)와 동일할 때 어드레스매치신호(AML<3>)가 활성화되고, 매치플래그(MF)는 로직하이레벨('1')로 활성화되며, 매치신호(MS)는 2 진수 로직비트셋 '10'으로 설정될 수 있다. 도 4의 다섯 번째 가로줄에 도시된 바와 같이, 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<4>)와 동일할 때 어드레스매치신호(AML<4>)가 활성화되고, 매치플래그(MF)는 로직하이레벨('1')로 활성화되며, 매치신호(MS)는 2 진수 로직비트셋 '11'로 설정될 수 있다. 도 4의 여섯 번째 가로줄에 도시된 바와 같이, 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스들(FADD<1:4>)과 상이할 때 어드레스매치신호들(AML<1:4>)은 비활성화되고, 매치플래그(MF)는 로직로우레벨('0')로 비활성화될 수 있다.
도 5는 본 발명의 일 예에 따른 대체데이터생성회로(125A)의 구성을 도시한 블럭도이다. 도 5에 도시된 바와 같이, 대체데이터생성회로(125A)는 매치디코더(141) 및 대체데이터저장회로(143)를 포함할 수 있다.
매치디코더(141)는 매치인코더(135)에서 생성된 매치신호(MS)를 수신할 수 있다. 매치디코더(141)는 매치신호(MS)를 디코딩하여 데이터매치신호들(DML<1:4>)을 생성할 수 있다. 매치디코더(141)는 매치신호(MS)의 로직비트셋에 따라 데이터매치신호들(DML<1:4>) 중 하나를 활성화시킬 수 있다. 일 예로, 매치디코더(141)는 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<1>)와 동일하여 매치신호(MS)의 로직비트셋이 2 진수 로직비트셋 '00'으로 설정될 때 데이터매치신호들(DML<1:4>) 중 데이터매치신호(DML<1>)를 활성화시킬 수 있다. 다른 예로, 매치디코더(141)는 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<3>)와 동일하여 매치신호(MS)의 로직비트셋이 2 진수 로직비트셋 '10'으로 설정될 때 데이터매치신호들(DML<1:4>) 중 데이터매치신호(DML<3>)를 활성화시킬 수 있다. 매치디코더(141)는 대체데이터저장회로(143)에 연결되어, 데이터매치신호들(DML<1:4>)을 대체데이터저장회로(143)에 인가할 수 있다.
대체데이터저장회로(143)는 리드동작에서 에러플래그(EFLAG)가 활성화될 때 내부리드데이터(IRDD)를 대체데이터들(ALTD<1:4>) 중 하나로 저장할 수 있다. 일 예로, 대체데이터저장회로(143)는 리드동작에서 에러플래그(EFLAG)가 활성화되어 불량어드레스저장회로(133)에서 내부어드레스(IADD)가 불량어드레스(FADD<1>)로 저장될 때 내부리드데이터(IRDD)는 대체데이터(ALTD<1>)로 저장될 수 있다. 다른 예로, 대체데이터저장회로(143)는 리드동작에서 에러플래그(EFLAG)가 활성화되어 불량어드레스저장회로(133)에서 내부어드레스(IADD)가 불량어드레스(FADD<3>)로 저장될 때 내부리드데이터(IRDD)는 대체데이터(ALTD<3>)로 저장될 수 있다. 대체데이터저장회로(143)는 매치디코더(141)로부터 데이터매치신호들(DML<1:4>)을 수신할 수 있다. 대체데이터저장회로(143)는 리드동작에서 데이터매치신호들(DML<1:4>)을 토대로 대체데이터들(ALTD<1:4>) 중 하나를 전송대체데이터(TALTD)로 에러정정회로(109)에 인가할 수 있다. 대체데이터저장회로(143)는 라이트동작에서 데이터매치신호들(DML<1:4>)을 토대로 내부라이트데이터(IWTD)로부터 생성된 전송대체데이터(TALTD)를 대체데이터들(ALTD<1:4>) 중 하나에 저장할 수 있다.
도 6은 대체데이터생성회로(125A)의 동작을 설명하기 위한 표이다. 도 6을 참고하면 대체데이터들(ALTD<1:4>)이 저장된 상태에서 데이터엑세스동작에서 매치신호(MS)의 로직비트셋에 따라 데이터매치신호들(DML<1:4>)의 활성화 여부 및 대체데이터들(ALTD<1:4>)의 입출력 여부를 확인할 수 있다. 도 6의 두 번째 가로줄에 도시된 바와 같이, 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<1>)와 동일하여 매치신호(MS)가 2 진수 로직비트셋 '00'으로 설정될 때 데이터매치신호들(DML<1:4>) 중 데이터매치신호(DML<1>)가 활성화되고, 리드동작에서 대체데이터들(ALTD<1:4>) 중 대체데이터(ALTD<1>)가 에러정정회로(109)에 인가되고, 라이트동작에서 전송대체데이터(TALTD)가 대체데이터(ALTD<1>)로 저장될 수 있다. 도 6의 세 번째 가로줄에 도시된 바와 같이, 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<2>)와 동일하여 매치신호(MS)가 2 진수 로직비트셋 '01'로 설정될 때 데이터매치신호들(DML<1:4>) 중 데이터매치신호(DML<2>)가 활성화되고, 리드동작에서 대체데이터들(ALTD<1:4>) 중 대체데이터(ALTD<2>)가 에러정정회로(109)에 인가되고, 라이트동작에서 전송대체데이터(TALTD)가 대체데이터(ALTD<2>)로 저장될 수 있다. 도 6의 네 번째 가로줄에 도시된 바와 같이, 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<3>)와 동일하여 매치신호(MS)가 2 진수 로직비트셋 '10'으로 설정될 때 데이터매치신호들(DML<1:4>) 중 데이터매치신호(DML<3>)가 활성화되고, 리드동작에서 대체데이터들(ALTD<1:4>) 중 대체데이터(ALTD<3>)가 에러정정회로(109)에 인가되고, 라이트동작에서 전송대체데이터(TALTD)가 대체데이터(ALTD<3>)로 저장될 수 있다. 도 6의 다섯 번째 가로줄에 도시된 바와 같이, 데이터엑세스동작에서 내부어드레스(IADD)가 불량어드레스(FADD<4>)와 동일하여 매치신호(MS)가 2 진수 로직비트셋 '11'로 설정될 때 데이터매치신호들(DML<1:4>) 중 데이터매치신호(DML<4>)가 활성화되고, 리드동작에서 대체데이터들(ALTD<1:4>) 중 대체데이터(ALTD<4>)가 에러정정회로(109)에 인가되고, 라이트동작에서 전송대체데이터(TALTD)가 대체데이터(ALTD<4>)로 저장될 수 있다.
도 7은 저장제어회로(121)의 동작을 설명하기 위한 타이밍도이다. 도 7을 참고하여 저장제어회로(121)에서 리드동작에서 에러플래그(EFLAG)가 활성화될 때 내부어드레스(IADD) 및 내부리드데이터(IRDD)가 저장되는 동작을 살펴보면 다음과 같다. 저장제어회로(121)는 리드동작에서 에러플래그(EFLAG)가 활성화될 때까지 대기상태를 유지할 수 있다.(S101) 저장제어회로(121)는 리드동작에서 에러플래그(EFLAG)가 활성화되는지 여부를 판단(S103)하여 에러플래그(EFLAG)가 활성화되지 않았을 때('N') 대기상태를 유지(S101)하고, 리드동작에서 에러플래그(EFLAG)가 활성화되었을 때('Y') 내부어드레스(IADD) 및 내부리드데이터(IRDD)가 저장될 수 있는지 여부를 판단할 수 있다.(S105) 저장제어회로(121)는 내부어드레스(IADD) 및 내부리드데이터(IRDD)가 저장될 수 없는 상태로 판단되는 경우('N') 대기상태(S101)로 복귀할 수 있고, 내부어드레스(IADD) 및 내부리드데이터(IRDD)가 저장될 수 있는 상태로 판단되는 경우('Y') 내부어드레스(IADD)를 불량어드레스로 저장할 수 있고,(S107) 내부리드데이터(IRDD)를 대체데이터들(ALTD)로 저장할 수 있다.(S109)
도 8은 커맨드큐(103)의 동작을 설명하기 위한 타이밍도이다. 도 8에 도시된 바와 같이, 커맨드큐(103)는 호스트커맨드(HCMD)를 저장할 수 있는 저장공간이 남아있고, 호스트커맨드(HCMD)가 수신될 때까지 대기상태를 유지할 수 있다.(S111). 커맨드큐(103)는 호스트커맨드(HCMD)를 저장할 수 있는 저장공간이 남아있는지 여부를 판단(S113)하고, 커맨드큐(103)의 저장공간이 가득찬 경우('N') 호스트커맨드(HCMD)를 수신하지 않고 대기상태를 유지할 수 있다.(S111) 커맨드큐(103)는 호스트커맨드(HCMD)를 저장할 수 있는 저장공간이 남아있는 경우('Y') 호스트커맨드(HCMD)가 수신되는지 여부를 판단할 수 있다.(S115) 커맨드큐(103)는 호스트커맨드(HCMD)가 수신되지 않는 경우('N') 대기상태를 유지할 수 있다.(S111) 커맨드큐(103)는 호스트커맨드(HCMD)가 수신될 때('Y') 호스트커맨드(HCMD)에 포함된 리드커맨드(RCMD) 또는 라이트커맨드(WCMD)를 저장할 수 있다.(S117)
도 9는 메모리컨트롤러(10)에서 수행되는 데이터엑세스동작을 설명하기 위한 타이밍도이다. 도 9를 참고하여 메모리컨트롤러(10)에서 라이트동작에서 커맨드 및 메모리장치에 인가되는 데이터가 생성되는 동작과 리드동작에서 커맨드 및 호스트에 인가되는 데이터가 생성되는 동작을 나누어 살펴보면 다음과 같다.
메모리컨트롤러(10)는 커맨드큐(103)에 호스트커맨드(HCMD)에서 추출된 리드커맨드(RCMD) 또는 라이트커맨드(WCMD)가 저장될 때까지 대기상태를 유지할 수 있다.(S121) 메모리컨트롤러(10)는 커맨드큐(103)에 호스트커맨드(HCMD)에서 추출된 리드커맨드(RCMD) 또는 라이트커맨드(WCMD)가 저장된 상태인지 여부를 판단(S123)하여 커맨드큐(103)에 리드커맨드(RCMD) 또는 라이트커맨드(WCMD)가 저장되지 않고 비어있는 상태('Y')라면 대기상태를 유지할 수 있고,(S121) 커맨드큐(103)에 리드커맨드(RCMD) 또는 라이트커맨드(WCMD)가 저장된 상태('N')라면 라이트동작 및 리드동작 중 하나를 수행할 수 있다. 메모리컨트롤러(10)는 라이트동작 보다 리드동작을 우선적으로 수행할 수 있다. 다만, 라이트커맨드큐(103_3)가 라이트동작을 위해 라이트커맨드(WCMD)를 저장하기 위해 저장공간의 80% 이상(실시예에 따라서 다양한 비율로 설정될 수 있음)을 사용한 경우 라이트동작을 리드동작보다 우선적으로 수행할 수 있다. 이를 위해 라이트커맨드큐(103_3)의 저장공간이 80%를 초과하여 사용되었는지 여부를 판단할 수 있다.(S125) 라이트커맨드큐(103_3)의 저장공간이 80%를 초과하여 사용된 경우('Y') 라이트동작을 위해 내부라이트커맨드(IWCMD)가 생성될 수 있다.(S131) 라이트동작에서 내부어드레스(IADD)가 불량어드레스와 일치('Y')할 때 내부라이트데이터(IWTD)로부터 전송대체데이터(TALTD)를 생성하고, 전송대체데이터(TALTD)를 대체데이터생성회로(125)에 대체데이터(ALTD)로 저장할 수 있다.(S135) 내부어드레스(IADD)가 불량어드레스와 불일치('N')할 때 내부라이트데이터(IWTD)로부터 메모리라이트데이터(MWTD)가 생성되고, 메모리라이트데이터(MWTD)는 메모리데이터(MDATA)로 메모리장치(도 16의 35)에 전송될 수 있다. 앞서, 판단(S125) 결과 라이트커맨드큐(103_3)의 저장공간이 80% 이하 사용된 경우('N') 리드커맨드큐(103_1)의 저장공간이 비어있는지 여부를 판단(S127)할 수 있고, 라이트커맨드(WCMD)의 저장공간이 비어있는지 여부를 판단(S129)할 수 있다. 판단(S127) 결과 리드커맨드큐(103_1)의 저장공간이 비어있고('Y'), 판단(S129) 결과 라이트커맨드(WCMD)의 저장공간이 비어있지 않았을 때('N') 앞서, 설명된 라이트동작이 수행될 수 있다.(S131~S137) 판단(S127) 결과 리드커맨드큐(103_1)의 저장공간이 비어있지 않았을 때('N') 리드동작을 위해 내부리드커맨드(IRCMD)가 생성될 수 있다.(S141) 리드동작에서 내부어드레스(IADD)가 불량어드레스와 일치('Y')할 때 데이터생성회로(125)에 저장된 대체데이터(ALTD)로부터 생성된 전송대체데이터(TALTD)로부터 내부리드데이터(IRDD)가 생성될 수 있다.(S145) 리드동작에서 내부어드레스(IADD)가 불량어드레스와 불일치('N')할 때 메모리리드데이터(MRDD)로부터 내부리드데이터(IRDD)가 생성될 수 있다.(S147) 내부리드데이터(IRDD)는 리드데이터큐(107_3)에 저장된 후 리드데이터(RDATA)로 출력되어 호스트(도 16의 31)로 전달될 수 있다.(S149)
도 10은 데이터대체제어회로(113)의 동작을 설명하기 위한 블럭도이다. 도 10을 참고하여 불량어드레스(FADD<1>)가 2진수 로직비트셋 '10011'로 저장되고, 불량어드레스(FADD<2>)가 2진수 로직비트셋 '01100'으로 저장되며, 불량어드레스(FADD<3>)가 2진수 로직비트셋 '01101'로 저장되고, 불량어드레스(FADD<4>)가 2진수 로직비트셋 '10101'로 저장된 상태에서 2진수 로직비트셋 '01101'로 설정된 내부어드레스(IADD)에 의해 수행되는 데이터엑세스동작을 살펴보면 다음과 같다.
우선, 불량어드레스(FADD<3>)와 동일한 로직비트셋을 갖는 내부어드레스(IADD)에 의해 수행되는 라이트동작이 수행될 때 어드레스매치신호들(AML<1:4>) 중 어드레스매치신호(AML<3>)가 활성화되므로, 매치플래그(MF)는 로직하이레벨('1')로 활성화되고, 매치신호(MS)는 2 진수 로직비트셋 '10'으로 설정될 수 있다. 2 진수 로직비트셋 '10'으로 설정된 매치신호(MS)에 의해 데이터매치신호들(DML<1:4>) 중 데이터매치신호(DML<3>)가 활성화되므로, 내부라이트데이터(IWTD)로부터 생성된 전송대체데이터(TALTD)가 대체데이터(ALTD<3>)로 저장될 수 있다.
다음으로, 불량어드레스(FADD<3>)와 동일한 로직비트셋을 갖는 내부어드레스(IADD)에 의해 수행되는 리드동작이 수행될 때 어드레스매치신호들(AML<1:4>) 중 어드레스매치신호(AML<3>)가 활성화되므로, 매치플래그(MF)는 로직하이레벨('1')로 활성화되고, 매치신호(MS)는 2 진수 로직비트셋 '10'으로 설정될 수 있다. 2 진수 로직비트셋 '10'으로 설정된 매치신호(MS)에 의해 데이터매치신호들(DML<1:4>) 중 데이터매치신호(DML<3>)가 활성화되므로, 대체데이터(ALTD<3>)가 전송대체데이터(TALTD)로 출력될 수 있다.
도 11은 리드동작이 종료될 때의 동작을 설명하기 위한 타이밍도이다. 도 11에 도시된 바와 같이, 리드동작이 수행되고, 내부리드데이터(IRDD)가 리드데이터큐(107_3)에 저장된 후 호스트(도 16의 35)가 내부리드데이터(IRDD)를 수신할 수 있는 상태인지 여부가 판단될 수 있다.(S153) 호스트(도 16의 35)가 내부리드데이터(IRDD)를 수신할 수 없는 상태('N')에서는 대기상태가 유지될 수 있다.(S151) 한편, 호스트(도 16의 35)가 내부리드데이터(IRDD)를 수신할 수 있는 상태('Y')가 되면 리드데이터큐(107_3)는 내부리드데이터(IRDD)를 호스트데이터(HDATA)로 호스트(도 16의 35)에 전송하고,(S155) 리드리스판스큐(103_5)는 리드동작이 종료되었으므로, 리드리스판스커맨드(R_RES)를 삭제할 수 있다.
도 12는 본 발명의 다른 예에 따른 메모리컨트롤러(20)의 구성을 도시한 블럭도이다. 도 12에 도시된 바와 같이, 메모리컨트롤러(20)는 이벤트신호생성회로(EVT GEN, 201), 셀프커맨드생성회로(SCMD GEN, 202), 커맨드큐(CMD Q, 203), 스케쥴러(205), 데이터큐(DATA Q, 207), 에러정정회로(ECC, 209), 셀프어드레스생성회로(SADD GEN, 211), 데이터대체제어회로(ALT CTR, 213) 및 메모리인터페이스(MIF, 215)를 포함할 수 있다.
이벤트신호생성회로(201)는 이벤트구간마다 활성화되는 이벤트신호(EVT)를 생성할 수 있다. 이벤트구간은 실시예에 따라서 다양하게 설정될 수 있다. 이벤트신호생성회로(201)는 셀프커맨드생성회로(202) 및 셀프어드레스생성회로(211)에 연결되어, 셀프커맨드생성회로(202) 및 셀프어드레스생성회로(211)에 이벤트신호(EVT)를 인가할 수 있다.
셀프커맨드생성회로(202)는 이벤트신호생성회로(201)로부터 이벤트신호(EVT)를 수신할 수 있다. 셀프커맨드생성회로(202)는 이벤트신호(EVT)가 활성화될 때마다 셀프리드동작을 위한 셀프커맨드(SCMD)를 생성할 수 있다. 셀프커맨드(SCMD)는 호스트(도 16의 31)에서 인가되는 커맨드와 구별하기 위한 식별비트를 포함할 수 있다. 예를 들어, 셀프커맨드(SCMD)는 로직하이레벨('1')로 설정되는 식별비트를 포함할 수 있고, 호스트(도 16의 31)에서 인가되는 커맨드는 로직로우레벨('0')로 설정되는 식별비트를 포함할 수 있다. 셀프커맨드생성회로(202)는 커맨드큐(203)에 연결되어, 셀프커맨드(SCMD)를 커맨드큐(203)에 인가할 수 있다.
커맨드큐(203)는 셀프커맨드생성회로(202)로부터 셀프커맨드(SCMD)를 저장할 수 있다. 커맨드큐(203)는 셀프커맨드(SCMD)가 저장될 때 관련정보를 스케쥴러(205)에 인가할 수 있다. 커맨드큐(203)는 스케쥴러(205)에 의해 제어되어 저장된 셀프커맨드(SCMD)에 따른 셀프리드동작을 위해 내부셀프커맨드(ISCMD)를 생성할 수 있다. 커맨드큐(203)는 내부셀프커맨드(ISCMD)를 메모리인터페이스(215)를 통해 메모리커맨드(MCMD)로 메모리장치(도 16의 35)에 인가할 수 있다.
스케쥴러(205)는 셀프커맨드(SCMD)가 커맨드큐(203)에 저장될 때 관련정보를 저장할 수 있다. 스케쥴러(205)는 셀프커맨드(SCMD)를 토대로 내부셀프커맨드(ISCMD)가 생성되어 출력되도록 커맨드큐(203)를 제어할 수 있다. 스케쥴러(205)는 셀프리드동작에서 메모리리드데이터(MRDD)를 토대로 에러디코딩동작을 수행되어 내부리드데이터(IRDD) 및 에러플래그(EFLAG)가 생성되도록 에러정정회로(209)를 제어할 수 있다. 스케쥴러(205)는 내부리드데이터(IRDD)가 저장되도록 데이터큐(207)를 제어할 수 있다.
에러정정회로(209)는 스케쥴러(205), 데이터큐(207), 데이터대체제어회로(213) 및 메모리인터페이스(215)에 연결될 수 있다. 에러정정회로(209)는 스케쥴러(205)에 의해 제어되어 셀프리드동작에서 메모리인터페이스(215)로부터 수신된 메모리리드데이터(MRDD)를 토대로 에러디코딩동작을 수행하여 에러플래그(EFLAG) 및 내부리드데이터(IRDD)를 생성할 수 있다. 에러정정회로(209)는 에러플래그(EFLAG)를 데이터대체제어회로(213)에 인가할 수 있다.
셀프어드레스생성회로(211)는 이벤트신호생성회로(201)로부터 이벤트신호(EVT)를 수신할 수 있다. 셀프어드레스생성회로(211)는 리셋신호(RST) 및 이벤트신호(EVT)를 토대로 셀프어드레스(SADD)를 생성할 수 있다. 셀프어드레스생성회로(211)는 리셋동작을 위해 활성화된 리셋신호(RST)가 수신될 때 셀프어드레스(SADD)를 초기화할 수 있다. 셀프어드레스생성회로(211)는 이벤트신호(EVT)가 활성화될 때마다 셀프리드동작을 위한 셀프어드레스(SADD)를 생성할 수 있다.
데이터대체제어회로(213)는 셀프리드동작에서 활성화된 에러플래그(EFLAG)가 수신될 때 메모리셀에 엑세스하기 위해 생성된 셀프어드레스(SADD)를 불량어드레스들(도 13의 FADD<1:4>) 중 하나로 저장할 수 있고, 내부리드데이터(IRDD)를 대체데이터들(도 13의 ALTD<1:4>) 중 하나로 저장할 수 있다. 본 실시예에서, 데이터대체제어회로(213)는 내부리드데이터(IRDD)를 대체데이터들(도 13의 ALTD<1:4>) 중 하나로 저장하도록 구현되었지만 실시예에 따라서 메모리리드데이터(MRDD)를 대체데이터들(도 13의 ALTD<1:4>) 중 하나로 저장하도록 구현될 수도 있다. 데이터대체제어회로(213)는 대체데이터들(도 13의 ALTD<1:4>) 중 하나를 전송대체데이터(TALTD)로 출력할 수 있고, 내부리드데이터(IRDD)를 메모리인터페이스(215)를 통해 메모리데이터(MDATA)로 메모리장치(도 16의 35)에 인가할 수 있다.
메모리인터페이스(215)는 메모리컨트롤러(20) 및 메모리장치(도 16의 35) 사이의 메모리커맨드(MCMD) 및 메모리데이터(MDATA)의 전송을 제어할 수 있다.
이상 살펴본 바와 같이 구성된 메모리컨트롤러(20)는 이벤트구간마다 셀프리드동작을 수행하여 셀프리드동작에 의해 엑세스되는 적어도 하나의 메모리셀이 불량메모리셀로 판단될 때 데이터대체제어회로(113)에 불량어드레스들(도 13의 FADD<1:4>) 및 대체데이터들(도 13의 ALTD<1:4>)로 저장할 수 있다. 메모리컨트롤러(20)는 데이터대체제어회로(113)에 저장된 불량어드레스들(도 13의 FADD<1:4>) 및 대체데이터들(도 13의 ALTD<1:4>)를 사용하여 데이터엑세스동작을 수행할 수 있으므로, 불량메모리셀에 엑세스되어 에러가 발생되는 것을 차단할 수 있고, 메모리시스템이 열화되는 것을 방지할 수 있다. 메모리컨트롤러(20)에서 불량어드레스들(도 13의 FADD<1:4>) 및 대체데이터들(도 13의 ALTD<1:4>)를 사용하여 수행되는 데이터엑세스동작은 도 1 내지 도 11에서 살펴본 메모리컨트롤러(10)에서 수행되는 데이터엑세스동작과 동일하게 수행될 수 있으므로, 자세한 설명은 생략한다.
도 13은 다른 예에 따른 데이터대체제어회로(213A)의 구성을 도시한 블럭도이다. 도 13에 도시된 바와 같이, 데이터대체제어회로(213A)는 저장제어회로(221), 매치신호생성회로(223) 및 대체데이터저장회로(225)를 포함할 수 있다.
저장제어회로(221)는 에러플래그(EFLAG)를 토대로 셀프어드레스(SADD)가 불량어드레스들(FADD<1:4>) 중 하나로 저장되도록 매치신호생성회로(223)를 제어할 수 있고, 내부리드데이터(IRDD)가 대체데이터들(ALTD<1:4>) 중 하나로 저장되도록 대체데이터저장회로(225)를 제어할 수 있다. 저장제어회로(221)는 셀프리드동작에서 에러플래그(EFLAG)가 활성화될 때 셀프어드레스(SADD)가 앞서 저장된 불량어드레스들(FADD<1:4>) 중 하나와 일치하지 않을 때 셀프어드레스(SADD)를 불량어드레스들(FADD<1:4>) 중 하나로 저장되도록 매치신호생성회로(223)를 제어할 수 있다. 저장제어회로(221)는 셀프리드동작에서 에러플래그(EFLAG)가 활성화될 때 셀프어드레스(SADD)가 앞서 저장된 불량어드레스들(FADD<1:4>) 중 하나와 일치하지 않을 때 내부리드데이터(IRDD)가 대체데이터들(ALTD<1:4>) 중 하나로 저장되도록 대체데이터저장회로(225)를 제어할 수 있다.
도 14 및 도 15는 메모리컨트롤러(20)에서 수행되는 셀프리드동작을 보여주는 타이밍도들이다.
도 14를 참고하여 셀프리드동작의 일 예를 설명하면 다음과 같다. 메모리컨트롤러(20)는 리셋동작을 위해 리셋신호(RST)가 활성화될 때 셀프어드레스(SADD)를 초기화(S201)할 수 있다. 메모리컨트롤러(20)는 이벤트신호(EVT)가 활성화되었는지 여부를 판단할 수 있다.(S203) 이벤트구간마다 이벤트신호(EVT)가 활성화될 때('Y') 메모리컨트롤러(20)는 메모리장치(도 16의 35)에 포함된 메모리셀들이 순차적으로 엑세스되도록 셀프어드레스(SADD)의 로직비트셋을 순차적으로 증가시키고, 셀프리드동작을 위한 셀프커맨드(SCMD)를 생성할 수 있다.(S205) 메모리컨트롤러(20)는 셀프리드동작에서 에러플래그(EFLAG)가 활성화되었는지 여부를 판단할 수 있다.(S207) 에러플래그(EFLAG)는 셀프리드동작에서 엑세스되는 적어도 하나의 메모리셀이 불량메모리셀이거나 셀프리드동작에서 엑세스되는 적어도 하나의 메모리셀에서 출력되는 데이터의 에러가 정정될 때 활성화될 수 있다. 셀프리드동작에서 에러플래그(EFLAG)가 활성화되지 않았을 때('N') 메모리컨트롤러(20)는 이벤트신호(EVT)의 활성화 여부를 다시 판단할 수 있다.(S203) 한편, 셀프리드동작에서 에러플래그(EFLAG)가 활성화되었을 때('Y') 메모리컨트롤러(20)는 셀프어드레스(SADD) 및 내부리드데이터(IRDD)가 저장될 수 있는지 여부를 판단할 수 있다.(S209) 메모리컨트롤러(20)는 셀프어드레스(SADD) 및 내부리드데이터(IRDD)가 저장될 수 없는 상태로 판단('N')될 때 이벤트신호(EVT)의 활성화 여부를 다시 판단할 수 있다.(S203) 메모리컨트롤러(20)는 셀프어드레스(SADD) 및 내부리드데이터(IRDD)가 저장될 수 있는 상태로 판단('Y')될 때 셀프어드레스(SADD)를 불량어드레스로 저장할 수 있고, 내부리드데이터(IRDD)를 대체데이터들(ALTD)로 저장할 수 있다.(S211)
도 15를 참고하여 셀프리드동작의 다른 예를 설명하면 다음과 같다. 메모리컨트롤러(20)는 리셋동작을 위해 리셋신호(RST)가 활성화될 때 셀프어드레스(SADD)를 초기화(S221)할 수 있다. 메모리컨트롤러(20)는 이벤트신호(EVT)가 활성화되었는지 여부를 판단할 수 있다.(S223) 이벤트구간마다 이벤트신호(EVT)가 활성화될 때('Y') 메모리컨트롤러(20)는 메모리장치(도 16의 35)에 포함된 메모리셀들이 순차적으로 엑세스되도록 셀프어드레스(SADD)의 로직비트셋을 순차적으로 증가시키고, 셀프리드동작을 위한 셀프커맨드(SCMD)를 생성할 수 있다.(S225) 메모리컨트롤러(20)는 셀프리드동작에서 에러플래그(EFLAG)가 활성화되었는지 여부를 판단할 수 있다.(S227) 에러플래그(EFLAG)는 셀프리드동작에서 엑세스되는 적어도 하나의 메모리셀이 불량메모리셀이거나 셀프리드동작에서 엑세스되는 적어도 하나의 메모리셀에서 출력되는 데이터의 에러가 정정될 때 활성화될 수 있다. 셀프리드동작에서 에러플래그(EFLAG)가 활성화되지 않았을 때('N') 메모리컨트롤러(20)는 이벤트신호(EVT)의 활성화 여부를 다시 판단할 수 있다.(S223) 한편, 셀프리드동작에서 에러플래그(EFLAG)가 활성화되었을 때('Y') 메모리컨트롤러(20)는 셀프어드레스(SADD) 및 내부리드데이터(IRDD)가 저장될 수 있는지 여부를 판단할 수 있다.(S229) 메모리컨트롤러(20)는 셀프어드레스(SADD) 및 내부리드데이터(IRDD)가 저장될 수 없는 상태로 판단('N')될 때 내부리드데이터(IRDD)를 메모리인터페이스(215)를 통해 메모리데이터(MDATA)로 메모리장치(도 16의 35)에 인가할 수 있다.(S233) 메모리컨트롤러(20)는 셀프어드레스(SADD) 및 내부리드데이터(IRDD)가 저장될 수 있는 상태로 판단('Y')될 때 셀프어드레스(SADD)를 불량어드레스로 저장할 수 있고, 내부리드데이터(IRDD)를 대체데이터들(ALTD)로 저장할 수 있다.(S231)
도 16은 본 발명의 일 예에 따른 메모리시스템(30)의 구성을 도시한 블럭도이다. 도 16에 도시된 바와 같이, 메모리시스템(30)은 호스트(31), 메모리컨트롤러(33) 및 메모리장치(35)를 포함할 수 있다.
호스트(31)는 호스트커맨드(HCMD), 호스트데이터(HDATA) 및 호스트어드레스(HADD)를 메모리컨트롤러(33)에 인가할 수 있다. 호스트(31)는 호스트데이터(HDATA)를 메모리컨트롤러(33)로부터 수신할 수 있다.
메모리컨트롤러(33)는 호스트(31)로부터 호스트커맨드(HCMD), 호스트데이터(HDATA) 및 호스트어드레스(HADD)를 수신하여 메모리장치(35)에 대한 데이터엑세스동작을 제어하기 위해 메모리커맨드(MCMD), 메모리데이터(MDATA) 및 메모리어드레스(MADD)를 생성하여 메모리장치(35)에 인가할 수 있다. 메모리컨트롤러(33)는 리드동작에서 메모리장치(35)로부터 메모리데이터(MDATA)를 수신할 수 있다. 메모리컨트롤러(33)는 도 1 내지 도 11에서 살펴본 메모리컨트롤러(10) 또는 도 12 내지 도 15에서 살펴본 메모리컨트롤러(20)로 구현될 수 있다.
메모리장치(35)는 메모리컨트롤러(33)로부터 메모리커맨드(MCMD), 메모리데이터(MDATA) 및 메모리어드레스(MADD)를 수신하여 데이터엑세스동작을 수행할 수 있다.
앞서, 도 1 내지 도 11에서 살펴본 메모리컨트롤러(10) 및 도 12 내지 도 15에서 살펴본 메모리컨트롤러(20)는 메모리시스템, 그래픽시스템, 컴퓨팅시스템 및 모바일시스템 등을 포함하는 전자시스템에 적용될 수 있다. 예를 들어, 도 17을 참고하면 본 발명의 일 실시 예에 따른 전자시스템(1000)은 데이터저장부(1001), 메모리컨트롤러(1002), 버퍼메모리(1003) 및 입출력인터페이스(1004)를 포함할 수 있다.
데이터저장부(1001)는 메모리컨트롤러(1002)로부터의 제어신호에 따라 메모리컨트롤러(1002)로부터 인가되는 데이터(미도시)를 저장하고 저장된 데이터(미도시)를 판독하여 메모리컨트롤러(1002)에 출력한다. 한편, 데이터저장부(1001)는 전원이 차단되어도 데이터를 잃지 않고 계속 저장할 수 있는 비휘발성 메모리를 포함할 수 있다. 비휘발성 메모리는 플래쉬 메모리(Nor Flash Memory, NAND Flash Memory), 상변환 메모리(Phase Change Random Access Memory; PRAM), 저항 메모리(Resistive Random Access Memory;RRAM), 스핀 주입자화반전 메모리(Spin Transfer Torque Random Access Memory; STTRAM), 자기메모리(Magnetic Random Access Memory; MRAM)로 구현될 수 있다.
메모리컨트롤러(1002)는 입출력인터페이스(1004)를 통해 외부기기(호스트 장치)로부터 인가되는 명령어를 디코딩하고 디코딩된 결과에 따라 데이터저장부(1001) 및 버퍼메모리(1003)에 대한 데이터 입출력을 제어한다. 도 17에서는 메모리컨트롤러(1002)가 하나의 블럭으로 표시되었으나, 메모리컨트롤러(1002)는 데이터저장부(1001)를 제어하기 위한 컨트롤러와 휘발성 메모리인 버퍼메모리(1003)를 제어하기 위한 컨트롤러가 독립적으로 구성될 수 있다. 메모리컨트롤러(1002)는 도 1 내지 도 11에서 살펴본 메모리컨트롤러(10) 또는 도 12 내지 도 15에서 살펴본 메모리컨트롤러(20)를 포함할 수 있다.
버퍼메모리(1003)는 메모리컨트롤러(1002)에서 처리할 데이터 즉 데이터저장부(1001)에 입출력되는 데이터(미도시)를 임시적으로 저장할 수 있다. 버퍼메모리(1003)는 제어신호에 따라 메모리컨트롤러(1002)에서 인가되는 데이터(미도시)를 저장할 수 있다. 버퍼메모리(1003)는 도 16에서 살펴본 메모리장치(35)를 포함할 수 있다. 버퍼메모리(1003)는 저장된 데이터를 판독하여 메모리컨트롤러(1002)에 출력한다. 버퍼메모리(1003)는 DRAM(Dynamic Random Access Memory), Moblie DRAM, SRAM(Static Random Access Memory) 등의 휘발성 메모리를 포함할 수 있다.
입출력인터페이스(1004)는 메모리컨트롤러(1002)와 외부기기(호스트) 사이의 물리적 연결을 제공하여 메모리컨트롤러(1002)가 외부기기로부터 데이터 입출력을 위한 제어신호를 수신하고 외부기기와 데이터를 교환할 수 있도록 해준다. 입출력인터페이스(1004)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 및 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 포함할 수 있다.
전자시스템(1000)은 호스트 장치의 보조 기억장치 또는 외부 저장장치로 사용될 수 있다. 전자시스템(1000)은 고상 디스크(Solid State Disk; SSD), USB 메모리(Universal Serial Bus Memory), 씨큐어 디지털 카드(Secure Digital; SD), 미니 씨큐어 디지털 카드(mini Secure Digital card; mSD), 마이크로 씨큐어 디지털 카드(micro SD), 고용량 씨큐어 디지털 카드(Secure Digital High Capacity; SDHC), 메모리 스틱 카드(Memory Stick Card), 스마트 미디어 카드(Smart Media Card; SM), 멀티 미디어 카드(Multi Media Card; MMC), 내장 멀티 미디어 카드(Embedded MMC; eMMC), 컴팩트 플래시 카드(Compact Flash; CF) 등을 포함할 수 있다.
도 18은 본 발명의 다른 실시예에 따른 전자시스템(2000)의 일 실시예에 따른 구성을 도시한 블럭도이다. 도 18에 도시된 바와 같이, 전자시스템(2000)은 호스트(2100) 및 메모리시스템(2200)을 포함할 수 있다.
호스트(2100) 및 메모리시스템(2200)은 인터페이스 프로토콜을 사용하여 상호 신호들을 전송할 수 있다. 호스트(2100) 및 메모리시스템(2200) 사이에 사용되는 인터페이스 프로토콜에는 MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), PCI-E(Peripheral Component Interconnect - Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(serial attached SCSI), USB(Universal Serial Bus) 등이 있다. 메모리시스템(2200)은 컨트롤러(2300)와 메모리장치들(2400(K:1)을 포함할 수 있다. 컨트롤러(2300)는 도 1 내지 도 11에서 살펴본 메모리컨트롤러(10) 또는 도 12 내지 도 15에서 살펴본 메모리컨트롤러(20)를 포함할 수 있다. 메모리장치들(2400(K:1) 각각은 DRAM(dynamic random access memory), PRAM(Phase change Random Access Memory), RRAM(Resistive Random Access Memory), MRAM(Magnetic Random Access Memory) 및 FRAM(Ferroelectric Random Access Memory) 중 하나로 구현될 수 있다.
이제까지 본 발명에 대하여 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
101: 호스트인터페이스 103: 커맨드큐
105: 스케쥴러 107: 데이터큐
109: 에러정정회로 111: 어드레스생성회로
113: 데이터대체제어회로 115: 메모리인터페이스
121: 저장제어회로 123: 매치신호생성회로
125: 대체데이터저장회로 131: 내부어드레스수신회로
133: 불량어드레스저장회로 135: 매치인코더
141: 매치디코더 143: 대체데이터저장회로

Claims (28)

  1. 다수의 메모리셀들을 포함하는 메모리장치; 및
    상기 다수의 메모리셀들 중 제1 리드동작에서 엑세스되는 적어도 하나의 메모리셀이 불량으로 판단될 때 상기 제1 리드동작에서 생성된 제1 내부어드레스를 불량어드레스로 저장하고, 상기 제1 리드동작에서 생성된 내부리드데이터를 대체데이터로 저장하는 메모리컨트롤러를 포함하는 메모리시스템.
  2. 제 1 항에 있어서, 상기 메모리컨트롤러는
    상기 제1 리드동작 이후 수행되는 제2 리드동작에서 생성된 제2 내부어드레스가 상기 불량어드레스와 동일할 때 상기 대체데이터를 상기 내부리드데이터로 출력하는 메모리시스템.
  3. 제 2 항에 있어서, 상기 메모리컨트롤러는
    상기 제2 내부어드레스가 상기 불량어드레스와 상이할 때 상기 제2 내부어드레스에 의해 엑세스되는 적어도 하나의 메모리셀에서 출력되는 셀데이터를 토대로 상기 내부리드데이터를 생성하는 메모리시스템.
  4. 제 1 항에 있어서, 상기 메모리컨트롤러는
    상기 제1 리드동작 이후 수행되는 라이트동작에서 생성된 제3 내부어드레스가 상기 불량어드레스와 동일할 때 호스트에서 전송된 호스트데이터로부터 생성된 내부라이트데이터를 상기 대체데이터로 저장하는 메모리시스템.
  5. 제 4 항에 있어서, 상기 메모리컨트롤러는
    상기 제3 내부어드레스가 상기 불량어드레스와 상이할 때 상기 내부라이트데이터를 상기 제3 내부어드레스에 의해 엑세스되는 적어도 하나의 메모리셀에 저장하기 위해 메모리라이트데이터를 생성하는 메모리시스템.
  6. 제 1 항에 있어서, 상기 메모리컨트롤러는
    메모리리드데이터를 토대로 에러디코딩동작을 수행하여 상기 내부리드데이터 및 에러플래그를 생성하는 에러정정회로; 및
    상기 에러플래그를 토대로 상기 제1 내부어드레스를 상기 불량어드레스로 저장하고, 상기 내부리드데이터를 상기 대체데이터로 저장하는 데이터대체제어회로를 포함하는 메모리시스템.
  7. 제 6 항에 있어서, 상기 메모리장치는
    상기 제1 내부어드레스에 의해 엑세스되는 적어도 하나의 메모리셀로부터 출력되는 셀데이터로부터 셀신드롬을 생성하고, 상기 셀데이터 및 상기 셀신드롬으로 구성된 상기 메모리리드데이터를 메모리데이터로 상기 컨트롤러에 전송하는 메모리시스템.
  8. 제 7 항에 있어서, 상기 에러정정회로는
    상기 메모리리드데이터에 포함된 상기 셀신드롬을 토대로 상기 셀데이터에 에러가 포함될 때 상기 에러플래그를 활성화시키는 메모리시스템.
  9. 제 7 항에 있어서, 상기 에러정정회로는
    상기 메모리리드데이터에 포함된 상기 셀신드롬을 토대로 상기 셀데이터에 에러가 포함되고, 상기 셀데이터에 포함된 에러가 정정될 때 상기 에러플래그를 활성화시키는 메모리시스템.
  10. 제 6 항에 있어서, 상기 데이터대체제어회로는
    저장제어회로, 매치신호생성회로 및 대체데이터저장회로를 포함하되,
    상기 저장제어회로는
    상기 제1 리드동작에서 상기 에러플래그가 활성화될 때 상기 제1 내부어드레스를 상기 불량어드레스로 상기 매치신호생성회로에 저장되도록 제어하고,
    상기 제1 리드동작에서 상기 에러플래그가 활성화될 때 상기 내부리드데이터를 상기 대체데이터로 상기 대체데이터저장회로에 저장되도록 제어하는 메모리시스템.
  11. 제 6 항에 있어서, 상기 데이터대체제어회로는
    상기 제1 리드동작에서 상기 에러플래그가 활성화될 때 상기 제1 내부어드레스를 상기 불량어드레스로 저장하는 매치신호생성회로를 포함하되,
    상기 매치신호생성회로는
    상기 제1 리드동작 이후 수행되는 데이터엑세스동작에서 생성된 제2 내부어드레스를 상기 불량어드레스와 비교하여 매치플래그 및 매치신호를 생성하는 메모리시스템.
  12. 제 11 항에 있어서,
    상기 불량어드레스는 제1 불량어드레스 및 제2 불량어드레스를 포함하고,
    상기 매치신호생성회로는
    상기 제2 내부어드레스가 수신되는 내부어드레스수신회로;
    상기 제1 불량어드레스 및 상기 제2 불량어드레스를 저장하고, 상기 제2 내부어드레스를 상기 제1 불량어드레스 및 상기 제2 불량어드레스와 비교하여 제1 어드레스매치신호 및 제2 어드레스매치신호를 생성하는 불량어드레스저장회로; 및
    상기 제1 어드레스매치신호 및 상기 제2 어드레스매치신호를 인코딩하여 상기 매치플래그 및 상기 매치신호를 생성하는 매치인코더를 포함하는 메모리시스템.
  13. 제 11 항에 있어서, 상기 데이터대체제어회로는
    상기 제1 리드동작에서 상기 에러플래그가 활성화될 때 상기 내부리드데이터를 상기 대체데이터로 저장하는 저장하는 대체데이터저장회로를 더 포함하되,
    상기 대체데이터저장회로는
    상기 데이터엑세스동작에서 상기 매치신호를 토대로 선택된 상기 대체데이터를 전송대체데이터로 상기 에러정정회로에 전송하거나
    상기 데이터엑세스동작에서 상기 에러정정회로에서 전송된 내부라이트데이터를 상기 전송대체데이터로 상기 매치신호를 토대로 선택된 대체데이터에 저장하는 메모리시스템.
  14. 제 11 항에 있어서, 상기 에러정정회로는
    상기 데이터엑세스동작에서 상기 매치플래그를 토대로 상기 대체데이터를 상기 매치신호생성회로로부터 전송대체데이터로 수신하고, 상기 전송대체데이터를 상기 내부리드데이터로 출력하는 메모리시스템.
  15. 제 14 항에 있어서, 상기 에러정정회로는
    상기 데이터엑세스동작에서 상기 매치플래그를 토대로 호스트에서 전송된 호스트데이터로부터 생성된 내부라이트데이터를 상기 전송대체데이터로 상기 매치신호생성회로에 전송하고,
    상기 매치신호생성회로는 상기 전송대체데이터를 상기 대체데이터로 저장하는 메모리시스템.
  16. 메모리장치에 포함된 다수의 메모리셀들 중 제1 리드동작에서 엑세스되는 적어도 하나의 메모리셀에서 출력되는 셀데이터 및 셀신드롬이 포함된 메모리리드데이터를 토대로 에러디코딩동작을 수행하여 내부리드데이터 및 에러플래그를 생성하는 에러정정회로; 및
    상기 에러플래그를 토대로 상기 제1 리드동작에서 생성된 제1 내부어드레스를 불량어드레스로 저장하고, 상기 내부리드데이터를 대체데이터로 저장하는 데이터대체제어회로를 포함하는 메모리컨트롤러.
  17. 제 16 항에 있어서, 상기 에러정정회로는
    상기 메모리리드데이터에 포함된 상기 셀신드롬을 토대로 상기 셀데이터에 에러가 포함될 때 상기 에러플래그를 활성화시키는 메모리컨트롤러.
  18. 제 16 항에 있어서, 상기 에러정정회로는
    상기 메모리리드데이터에 포함된 상기 셀신드롬을 토대로 상기 셀데이터에 에러가 포함되고, 상기 셀데이터에 포함된 에러가 정정될 때 상기 에러플래그를 활성화시키는 메모리컨트롤러.
  19. 제 16 항에 있어서, 상기 데이터대체제어회로는
    저장제어회로, 매치신호생성회로 및 대체데이터저장회로를 포함하되,
    상기 저장제어회로는
    상기 제1 리드동작에서 상기 에러플래그가 활성화될 때 상기 제1 내부어드레스를 상기 불량어드레스로 상기 매치신호생성회로에 저장되도록 제어하고,
    상기 제1 리드동작에서 상기 에러플래그가 활성화될 때 상기 내부리드데이터를 상기 대체데이터로 상기 대체데이터저장회로에 저장되도록 제어하는 메모리컨트롤러.
  20. 제 16 항에 있어서, 상기 데이터대체제어회로는
    상기 제1 리드동작에서 상기 에러플래그가 활성화될 때 상기 제1 내부어드레스를 상기 불량어드레스로 저장하는 매치신호생성회로를 포함하되,
    상기 매치신호생성회로는
    상기 제1 리드동작 이후 수행되는 데이터엑세스동작에서 생성된 제2 내부어드레스를 상기 불량어드레스와 비교하여 매치플래그 및 매치신호를 생성하는 메모리컨트롤러.
  21. 제 20 항에 있어서,
    상기 불량어드레스는 제1 불량어드레스 및 제2 불량어드레스를 포함하고,
    상기 매치신호생성회로는
    상기 제2 내부어드레스가 수신되는 내부어드레스수신회로;
    상기 제1 불량어드레스 및 상기 제2 불량어드레스를 저장하고, 상기 제2 내부어드레스를 상기 제1 불량어드레스 및 상기 제2 불량어드레스와 비교하여 제1 어드레스매치신호 및 제2 어드레스매치신호를 생성하는 불량어드레스저장회로; 및
    상기 제1 어드레스매치신호 및 상기 제2 어드레스매치신호를 인코딩하여 상기 매치플래그 및 상기 매치신호를 생성하는 매치인코더를 포함하는 메모리컨트롤러.
  22. 제 20 항에 있어서, 상기 데이터대체제어회로는
    상기 제1 리드동작에서 상기 에러플래그가 활성화될 때 상기 내부리드데이터를 상기 대체데이터로 저장하는 저장하는 대체데이터저장회로를 더 포함하되,
    상기 대체데이터저장회로는
    상기 데이터엑세스동작에서 상기 매치신호를 토대로 선택된 상기 대체데이터를 전송대체데이터로 상기 에러정정회로에 전송하거나
    상기 데이터엑세스동작에서 상기 에러정정회로에서 전송된 내부라이트데이터를 상기 전송대체데이터로 상기 매치신호를 토대로 선택된 대체데이터에 저장하는 메모리컨트롤러.
  23. 제 20 항에 있어서, 상기 에러정정회로는
    상기 데이터엑세스동작에서 상기 매치플래그를 토대로 상기 대체데이터를 상기 매치신호생성회로로부터 전송대체데이터로 수신하고, 상기 전송대체데이터를 상기 내부리드데이터로 출력하는 메모리컨트롤러.
  24. 제 20 항에 있어서, 상기 에러정정회로는
    상기 데이터엑세스동작에서 상기 매치플래그를 토대로 호스트에서 전송된 호스트데이터로부터 생성된 내부라이트데이터를 상기 전송대체데이터로 상기 매치신호생성회로에 전송하고,
    상기 매치신호생성회로는 상기 전송대체데이터를 상기 대체데이터로 저장하는 메모리컨트롤러.
  25. 다수의 메모리셀들을 포함하는 메모리장치; 및
    상기 다수의 메모리셀들 중 이벤트구간마다 수행되는 셀프리드동작에서 엑세스되는 적어도 하나의 메모리셀이 불량으로 판단될 때 상기 셀프리드동작에서 생성된 셀프어드레스를 불량어드레스로 저장하고, 상기 셀프리드동작에서 생성된 내부리드데이터를 대체데이터로 저장하는 메모리컨트롤러를 포함하는 메모리시스템.
  26. 제 25 항에 있어서, 상기 메모리컨트롤러는
    이벤트구간마다 활성화되는 이벤트신호를 생성하는 이벤트신호생성회로;
    상기 이벤트신호가 활성화될 때마다 상기 셀프리드동작을 위한 셀프커맨드를 생성하는 셀프커맨드생성회로; 및
    상기 이벤트신호가 활성화될 때마다 상기 셀프리드동작을 위한 상기 셀프어드레스를 생성하는 셀프어드레스생성회로를 포함하는 메모리시스템.
  27. 제 26 항에 있어서, 상기 셀프커맨드는 호스트에서 인가되는 호스트커맨드와 구별하기 위한 식별비트를 포함하는 메모리시스템.
  28. 제 25 항에 있어서, 상기 메모리컨트롤러는
    메모리리드데이터를 토대로 에러디코딩동작을 수행하여 상기 내부리드데이터 및 에러플래그를 생성하는 에러정정회로; 및
    상기 에러플래그를 토대로 상기 셀프어드레스를 상기 불량어드레스로 저장하고, 상기 내부리드데이터를 상기 대체데이터로 저장하는 데이터대체제어회로를 포함하는 메모리시스템.
KR1020220028390A 2022-03-04 2022-03-04 에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템 KR20230131028A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220028390A KR20230131028A (ko) 2022-03-04 2022-03-04 에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템
US17/735,635 US20230280930A1 (en) 2022-03-04 2022-05-03 Memory controller and memory system for executing error correction operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220028390A KR20230131028A (ko) 2022-03-04 2022-03-04 에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템

Publications (1)

Publication Number Publication Date
KR20230131028A true KR20230131028A (ko) 2023-09-12

Family

ID=87850476

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220028390A KR20230131028A (ko) 2022-03-04 2022-03-04 에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템

Country Status (2)

Country Link
US (1) US20230280930A1 (ko)
KR (1) KR20230131028A (ko)

Also Published As

Publication number Publication date
US20230280930A1 (en) 2023-09-07

Similar Documents

Publication Publication Date Title
US10613928B2 (en) Semiconductor devices and semiconductor systems including the same
US9817749B2 (en) Apparatus and method of offloading processing from a data storage device to a host device
US10803971B2 (en) Device for supporting error correction code and test method thereof
US10824523B2 (en) Data storage device and operating method thereof
US20060248434A1 (en) Non-systematic coded error correction
KR20180019791A (ko) 반도체장치 및 반도체시스템
KR20210055865A (ko) 반도체장치 및 반도체시스템
US10459786B2 (en) Scaling large drives using enhanced DRAM ECC
KR102647418B1 (ko) 반도체장치 및 반도체시스템
US20080072119A1 (en) Allowable bit errors per sector in memory devices
US20170286218A1 (en) Semiconductor devices, and semiconductor systems
US20160253239A1 (en) Data storage device and operating method thereof
US10964406B2 (en) Methods of scrubbing errors and semiconductor modules using the same
US20170344422A1 (en) Semiconductor devices and semiconductor systems
US10917111B2 (en) Error correction code unit and error correction method
US10720943B2 (en) Data storage device, operation method thereof and storage system having the same
KR20230131028A (ko) 에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템
KR102469809B1 (ko) 반도체장치
US10922025B2 (en) Nonvolatile memory bad row management
US11429477B2 (en) Semiconductor devices
US10181863B2 (en) Semiconductor devices and semiconductor systems
CN111712803A (zh) 在存储器系统处存储关键数据
US20180067796A1 (en) Semiconductor devices and semiconductor systems including the same
CN112306733B (zh) 存储器装置、存储器控制器及其数据存取方法
KR20230072336A (ko) 반도체장치