KR20230073915A - 에러체크 및 스크럽동작방법 및 이를 이용한 반도체시스템 - Google Patents

에러체크 및 스크럽동작방법 및 이를 이용한 반도체시스템 Download PDF

Info

Publication number
KR20230073915A
KR20230073915A KR1020210160809A KR20210160809A KR20230073915A KR 20230073915 A KR20230073915 A KR 20230073915A KR 1020210160809 A KR1020210160809 A KR 1020210160809A KR 20210160809 A KR20210160809 A KR 20210160809A KR 20230073915 A KR20230073915 A KR 20230073915A
Authority
KR
South Korea
Prior art keywords
scrub
error check
address
information
ecs
Prior art date
Application number
KR1020210160809A
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 KR1020210160809A priority Critical patent/KR20230073915A/ko
Priority to US17/707,656 priority patent/US11907062B2/en
Priority to CN202210785987.7A priority patent/CN116153378A/zh
Priority to DE102022208557.4A priority patent/DE102022208557A1/de
Publication of KR20230073915A publication Critical patent/KR20230073915A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

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

Abstract

반도체시스템은 에러체크스크럽동작 횟수를 카운팅하고, 상기 에러체크스크럽동작 횟수를 토대로 상기 에러체크스크럽동작이 수행될 어드레스정보를 포함하는 에러체크스크럽정보를 생성하는 컨트롤러 및 상기 에러체크스크럽정보에 의해 선택된 영역에 대하여 상기 에러체크스크럽동작을 수행하는 메모리장치를 포함한다.

Description

에러체크 및 스크럽동작방법 및 이를 이용한 반도체시스템{ERROR CHECK AND SCRUB OPERATION METHOD AND SEMICONDUCTOR SYSTEM USING THE SAME}
본 발명은 에러체크스크럽동작 시 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행하는 에러체크스크럽동작방법 및 이를 이용한 반도체시스템에 관한 것이다.
최근 반도체장치의 동작속도를 증가시키기 위해 클럭 사이클(cycle)마다 다수 비트를 포함하는 데이터를 입/출력하는 다양한 방식 등이 사용되고 있다. 데이터의 입/출력 속도가 빨라지는 경우 데이터가 전송되는 과정 중 발생되는 오류의 발생 확률도 증가 되므로, 데이터 전송의 신뢰성을 보장하기 위한 별도의 장치와 방법이 추가적으로 요구되고 있다.
예를 들어, 데이터 전송 시마다 오류 발생 여부를 확인할 수 있는 오류코드를 생성하여 데이터와 함께 전송함으로써, 데이터 전송의 신뢰성을 보장하는 방법을 사용하고 있다. 오류코드에는 발생한 오류를 검출할 수 있는 오류검출코드(Error Detection Code, EDC)와, 오류 발생시 이를 자체적으로 정정할 수 있는 오류정정코드(Error Correction Code, ECC) 등이 있다.
한편, 디램 등의 반도체장치는 에러가 발생한 데이터가 저장된 위치를 감지하고, 에러 발생을 방지하는 에러체크스크럽동작(error scrub opeartion)을 수행하고 있다. 에러체크스크럽동작은 코어회로의 데이터가 저장된 모든 영역에 대하여 오류정정코드(Error Correction Code, ECC)를 통해 데이터의 에러를 정정하고 재 저장하는 동작을 통해 수행된다. 에러체크스크럽동작은 데이터가 저장된 모든 영역에 대하여 순차적으로 수행될 수 있다.
본 발명은 파워오프동작 시 에러체크스크럽동작이 수행된 위치를 비휘발성장치에 저장하고, 부트업동작 시작 후 저장된 에러체크스크럽동작이 수행된 위치를 메모리장치에 제공하여 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행하는 에러체크스크럽동작방법 및 이를 이용한 반도체시스템을 제공한다.
이를 위해 본 발명은 에러체크스크럽동작 횟수를 카운팅하고, 상기 에러체크스크럽동작 횟수를 토대로 상기 에러체크스크럽동작이 수행될 어드레스정보를 포함하는 에러체크스크럽정보를 생성하는 컨트롤러 및 상기 에러체크스크럽정보에 의해 선택된 영역에 대하여 상기 에러체크스크럽동작을 수행하는 메모리장치를 포함하는 반도체시스템을 제공한다.
또한, 본 발명은 메모리장치로부터 에러체크스크럽정보를 수신하여 저장하며, 상기 에러체크스크럽정보를 토대로 에러체크스크럽동작이 수행될 어드레스정보를 포함하는 에러체크스크럽리줌정보를 생성하는 컨트롤러 및 커맨드를 토대로 상기 에러체크스크럽동작이 수행된 어드레스정보를 포함하는 상기 에러체크스크럽정보를 생성하며, 상기 에러체크스크럽리줌정보에 의해 선택된 영역부터 순차적으로 상기 에러체크스크럽동작을 수행하는 메모리장치를 포함하는 반도체시스템을 제공한다.
또한, 본 발명은 메모리장치에서 에러체크스크럽동작을 수행하고 파워오프동작 종료 전 상기 에러체크스크럽동작이 수행된 어드레스정보를 포함하는 에러체크스크럽정보를 컨트롤러에 저장하며, 부트업동작 시작 후 상기 에러체크스크럽정보를 토대로 상기 메모리장치에서 선택된 영역부터 상기 에러체크스크럽동작을 수행하는 에러체크스크럽동작방법을 제공한다.
또한, 본 발명은 메모리장치에서 에러체크스크럽동작을 수행하고 파워오프동작 종료 전 상기 에러체크스크럽동작이 수행된 어드레스정보를 포함하는 에러체크스크럽정보를 컨트롤러에 전송하며, 상기 컨트롤러에 저장된 상기 에러체크스크럽정보를 토대로 생성되는 에러체크스크럽리줌정보를 상기 메모리장치로 출력하고 상기 에러체크스크럽리줌정보를 토대로 상기 메모리장치의 부트업동작 완료 후 상기 에러체크스크럽동작을 수행하는 에러체크스크럽동작방법을 제공한다.
본 발명에 의하면 파워오프동작 시 에러체크스크럽동작이 수행된 위치를 비휘발성장치에 저장하고, 부트업동작 시작 후 저장된 에러체크스크럽동작이 수행된 위치를 메모리장치에 제공하여 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 특정 어드레스에만 에러체크스크럽동작이 반복되거나 일부 어드레스에 에러체크스크럽동작이 누락되는 경우를 방지할 수 있다.
또한, 본 발명에 의하면 에러체크스크럽동작 시 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 코어회로에 저장된 데이터의 신뢰성을 확보할 수 있는 효과도 있다.
도 1은 본 발명의 일 실시예에 따른 반도체시스템의 구성을 도시한 블럭도이다.
도 2는 도 1에 도시된 본 발명의 일 실시예에 따른 반도체시스템에 포함된 컨트롤러의 구성을 도시한 블럭도이다.
도 3은 도 1에 도시된 본 발명의 일 실시예에 따른 반도체시스템에 포함된 반도체장치의 구성을 도시한 블럭도이다.
도 4는 도 3에 도시된 본 발명의 일 실시예에 따른 반도체장치에 포함된 코어회로의 구성을 도시한 블럭도이다.
도 5는 도 3에 도시된 본 발명의 일 실시예에 따른 반도체장치에 포함된 에러체크스크럽엔진의 구성을 도시한 블럭도이다.
도 6은 도 3에 도시된 본 발명의 일 실시예에 따른 반도체장치에 포함된 에러체크스크럽어드레스생성회로의 구성을 도시한 블럭도이다.
도 7 내지 9는 본 발명의 일 실시예에 따른 에러체크스크럽동작을 설명하기 위한 도면이다.
도 10은 도 3에 도시된 본 발명의 일 실시예에 따른 반도체장치에 포함된 에러체크스크럽어드레스생성회로의 다른 실시예에 따른 구성을 도시한 블럭도이다.
도 11은 도 10에 도시된 본 발명의 다른 실시예에 따른 에러체크스크럽어드레스생성회로에 포함된 제3 카운터의 구성을 도시한 도면이다.
도 12는 본 발명의 일 실시예에 따른 에러체크스크럽동작방법을 설명하기 위한 플로챠트이다.
도 13은 본 발명의 다른 실시예에 따른 반도체시스템의 구성을 도시한 블럭도이다.
도 14는 도 13에 도시된 본 발명의 다른 실시예에 따른 반도체시스템에 포함된 컨트롤러의 구성을 도시한 블럭도이다.
도 15는 도 13에 도시된 본 발명의 다른 실시예에 따른 반도체시스템에 포함된 반도체장치의 구성을 도시한 블럭도이다.
도 16은 도 15에 도시된 본 발명의 다른 실시예에 따른 반도체장치에 포함된 에러체크스크럽어드레스생성회로의 구성을 도시한 블럭도이다.
도 17은 도 15에 도시된 본 발명의 다른 실시예에 따른 반도체장치에 포함된 에러체크스크럽어드레스생성회로의 다른 실시예에 따른 구성을 도시한 블럭도이다.
도 18은 도 17에 도시된 본 발명의 다른 실시예에 따른 에러체크스크럽어드레스생성회로에 포함된 에러체크스크럽정보출력회로의 구성을 도시한 회로도이다.
도 19는 도 15에 도시된 본 발명의 다른 실시예에 따른 반도체장치에 포함된 에러체크스크럽어드레스생성회로의 다른 실시예에 따른 구성을 도시한 블럭도이다.
도 20은 도 19에 도시된 본 발명의 다른 실시예에 따른 에러체크스크럽어드레스생성회로에 포함된 에러체크스크럽정보출력회로의 구성을 도시한 회로도이다.
도 21은 본 발명의 다른 실시예에 따른 에러체크스크럽동작방법을 설명하기 위한 플로챠트이다.
"기 설정된"이라는 용어는 프로세스나 알고리즘에서 매개변수를 사용할 때 매개변수의 수치가 미리 결정되어 있음을 의미한다. 매개변수의 수치는 실시예에 따라서 프로세스나 알고리즘이 시작할 때 설정되거나 프로세스나 알고리즘이 수행되는 구간 동안 설정될 수 있다.
다양한 구성요소들을 구별하는데 사용되는 "제1" 및 "제2" 등의 용어는 구성요소들에 의해 한정되지 않는다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 반대로 제2 구성요소는 제1 구성요소로 명명될 수 있다.
하나의 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 할 때 직접적으로 연결되거나 중간에 다른 구성요소를 매개로 연결될 수도 있다고 이해되어야 한다. 반면 "직접 연결되어" 및 "직접 접속되어"라는 기재는 하나의 구성요소가 다른 구성요소에 또 다른 구성요소를 사이에 두지 않고 직접 연결된다고 이해되어야 한다.
"로직하이레벨" 및 "로직로우레벨"은 신호들의 로직레벨들을 설명하기 위해 사용된다. "로직하이레벨"을 갖는 신호는 "로직로우레벨"을 갖는 신호와 구별된다. 예를 들어, 제1 전압을 갖는 신호가 "로직하이레벨"에 대응할 때 제2 전압을 갖는 신호는 "로직로우레벨"에 대응할 수 있다. 일 실시예에 따라 "로직하이레벨"은 "로직로우레벨"보다 큰 전압으로 설정될 수 있다. 한편, 신호들의 로직레벨들은 실시예에 따라서 다른 로직레벨 또는 반대의 로직레벨로 설정될 수 있다. 예를 들어, 로직하이레벨을 갖는 신호는 실시예에 따라서 로직로우레벨을 갖도록 설정될 수 있고, 로직로우레벨을 갖는 신호는 실시예에 따라서 로직하이레벨을 갖도록 설정될 수 있다.
이하, 실시예를 통하여 본 발명을 더욱 상세히 설명하기로 한다. 이들 실시예는 단지 본 발명을 예시하기 위한 것이며, 본 발명의 권리 보호 범위가 이들 실시예에 의해 제한되는 것은 아니다.
도 1에 도시된 바와 같이, 본 발명의 일 실시 예에 따른 반도체시스템(1)은 컨트롤러(10) 및 반도체장치(20)를 포함할 수 있다.
컨트롤러(10)는 제1 컨트롤핀(11_1), 제2 컨트롤핀(11_2), 제3 컨트롤핀(11_3), 제4 컨트롤핀(11_4) 및 제5 컨트롤핀(11_5)을 포함할 수 있다. 반도체장치(20)는 제1 장치핀(13_1), 제2 장치핀(13_2), 제3 장치핀(13_3), 제4 장치핀(13_4) 및 제5 장치핀(13_5)을 포함할 수 있다.
컨트롤러(10)는 제1 컨트롤핀(11_1) 및 제1 전자핀(13_1) 사이에 연결된 제1 전송라인(12_1)을 통해 커맨드(CMD)를 반도체장치(20)로 전송할 수 있다. 제1 컨트롤핀(11_1), 제1 전송라인(12_1) 및 제1 전자핀(13_1) 각각은 커맨드(CMD)의 비트 수에 따라 다수 개로 구현될 수 있다. 컨트롤러(10)는 제2 컨트롤핀(11_2) 및 제2 전자핀(13_2) 사이에 연결된 제2 전송라인(12_2)을 통해 어드레스(ADD)를 반도체장치(20)로 전송할 수 있다. 제2 컨트롤핀(11_2), 제2 전송라인(12_2) 및 제2 전자핀(13_2) 각각은 어드레스(ADD)의 비트 수에 따라 다수 개로 구현될 수 있다. 컨트롤러(10)는 제3 컨트롤핀(11_3) 및 제3 전자핀(13_3) 사이에 연결된 제3 전송라인(12_3)을 통해 에러체크스크럽정보(ECS_INF)를 반도체장치(20)로 전송할 수 있다. 제3 컨트롤핀(11_3), 제3 전송라인(12_3) 및 제3 전자핀(13_3) 각각은 에러체크스크럽정보(ECS_INF)의 비트 수에 따라 다수 개로 구현될 수 있다. 컨트롤러(10)는 제4 컨트롤핀(11_4) 및 제4 전자핀(13_4) 사이에 연결된 제4 전송라인(12_4)을 통해 반도체장치(20)로부터 위크셀정보(WK_INF)를 수신할 수 있다. 제4 컨트롤핀(11_4), 제4 전송라인(12_4) 및 제4 전자핀(13_4) 각각은 위크셀정보(WK_INF)의 비트 수에 따라 다수 개로 구현될 수 있다. 컨트롤러(10)는 제5 컨트롤핀(11_5) 및 제5 전자핀(13_5) 사이에 연결된 제5 전송라인(12_5)을 통해 데이터(DATA)를 반도체장치(20)로 출력하거나, 반도체장치(20)로부터 데이터(DATA)를 수신할 수 있다. 제5 컨트롤핀(13_5), 제5 전송라인(12_5) 및 제5 전자핀(13_5) 각각은 데이터(DATA)의 비트 수에 따라 다수 개로 구현될 수 있다.
에러체크스크럽정보(ECS_INF)는 제3 전송라인(12_3)을 통해 반도체장치(20)로 전송되도록 구현되어 있지만, 실시예에 따라 커맨드(CMD)가 전송되는 제1 전송라인(12_1)과 어드레스(ADD)가 전송되는 제2 전송라인(12_2)을 통해 반도체장치(20)로 전송되도록 구현될 수 있다. 위크셀정보(WK_INF)는 제4 전송라인(12_4)을 통해 컨트롤러(10)로 전송되도록 구현되어 있지만, 실시예에 따라 데이터(DATA)가 전송되는 제5 전송라인(12_5)을 통해 컨트롤러(10)로 전송되도록 구현될 수 있다.
컨트롤러(10)는 에러체크스크럽커맨드카운터(13) 및 저장회로(14)를 포함할 수 있다.
에러체크스크럽커맨드카운터(13)는 커맨드(CMD)를 토대로 에러체크스크럽동작 횟수를 카운팅할 수 있다. 에러체크스크럽커맨드카운터(13)는 에러체크스크럽동작 횟수에 따라 생성되는 저장어드레스(도2 의 SADD<1:M>)를 에러체크스크럽정보(ECS_INF)로 출력할 수 있다. 에러체크스크럽정보(ECS_INF)는 에러체크스크럽동작이 수행될 어드레스정보를 포함할 수 있다. 어드레스정보는 에러체크스크럽동작이 수행될 영역에 대한 정보를 의미한다. 어드레스정보는 저장어드레스(도2 의 SADD<1:M>)로 설정될 수 있다.
저장회로(14)는 파워오프동작 전 에러체크스크럽동작 횟수인 카운팅신호(도 2의 CNT<1:M>)를 저장할 수 있다. 저장회로(14)는 부트업동작 시작 후 저장된 카운팅신호(도 2의 CNT<1:M>)를 저장어드레스(도2 의 SADD<1:M>)로 출력할 수 있다. 저장회로(14)는 파워오프동작 시 내부에 저장된 카운팅신호(도 2의 CNT<1:M>)를 유지하는 비휘발성장치로 구현될 수 있다. 저장회로(14)는 컨트롤러(10)에 구비되도록 구현되어 있지만, 실시예에 따라 컨트롤러(10) 외부에 구비되는 비휘발성장치로 구현될 수 있다.
컨트롤러(10)는 커맨드(CMD)를 토대로 에러체크스크럽동작 횟수를 카운팅할 수 있다. 컨트롤러(10)는 에러체크스크럽동작 횟수를 토대로 에러체크스크럽동작이 수행될 어드레스정보를 포함하는 에러체크스크럽정보(ECS_INF)를 출력할 수 있다. 컨트롤러(10)는 파워오프동작 전 에러체크스크럽동작 횟수를 카운팅하여 생성되는 카운팅신호(도 2의 CNT<1:M>)를 저장할 수 있다. 컨트롤러(10)는 부트업동작 시작 후 저장된 카운팅신호(도 2의 CNT<1:M>)를 에러체크스크럽정보(ECS_INF)로 출력할 수 있다. 에러체크스크럽정보(ECS_INF)는 모드레지스터리드동작을 수행하기 위한 커맨드(CMD), 어드레스(ADD) 또는 데이터(DATA)를 이용하여 출력될 수 있다.
메모리장치(20)는 코어회로(23), 에러정정회로(24), 에러체크스크럽엔진(25) 및 에러체크스크럽어드레스생성회로(26)를 포함할 수 있다.
코어회로(23)는 에러체크스크럽동작 시 내부에 저장된 내부데이터(도 3의 ID)를 출력한 이후 에러가 정정된 내부데이터(도 3의 ID)를 저장할 수 있다.
에러정정회로(24)는 에러체크스크럽동작 시 내부데이터(도 3의 ID)에 포함된 에러를 감지할 수 있다. 에러정정회로(24)는 에러체크스크럽동작 시 내부데이터(도 3의 ID)에 포함된 에러를 정정할 수 있다.
에러체크스크럽엔진(25)은 커맨드(CMD)를 토대로 에러체크스크럽동작을 제어할 수 있다.
에러체크스크럽어드레스생성회로(26)는 커맨드(CMD)를 토대로 에러체크스크럽동작 시 순차적으로 카운팅되는 에러체크스크럽어드레스(도 3의 ECS_ADD<1:M>)를 생성할 수 있다. 에러체크스크럽어드레스생성회로(26)는 커맨드(CMD)를 토대로 부트업동작 시작 후 에러체크스크럽정보(ECS_INF)와 동일한 에러체크스크럽어드레스(도 3의 ECS_ADD<1:M>)로부터 순차적으로 카운팅되는 에러체크스크럽어드레스(도 3의 ECS_ADD<1:M>)를 생성할 수 있다.
메모리장치(20)는 에러체크스크럽동작 시 순차적으로 업카운팅되는 에러체크스크럽어드레스(도 3의 ECS_ADD<1:M>)에 의해 에러체크스크럽동작을 수행할 수 있다. 메모리장치(20)는 부트업동작 시작 후 에러체크스크럽정보(ECS_INF)를 수신하고, 에러체크스크럽정보(ECS_INF)와 동일한 에러체크스크럽어드레스(도 3의 ECS_ADD<1:M>)로부터 순차적으로 업카운팅되는 에러체크스크럽어드레스(도 3의 ECS_ADD<1:M>)를 토대로 에러체크스크럽동작을 수행할 수 있다.
도 2는 반도체시스템(1)에 포함된 컨트롤러(10)의 일 예에 따른 구성을 도시한 블럭도이다. 컨트롤러(10)는 커맨드생성회로(11), 어드레스생성회로(12), 에러체크스크럽커맨드카운터(13), 저장회로(14), 데이터입출력회로(15) 및 위크셀분석회로(16)를 포함할 수 있다.
커맨드생성회로(11)는 메모리장치(20)의 동작을 제어하기 위한 커맨드(CMD)를 생성할 수 있다. 커맨드생성회로(11)는 메모리장치(20)의 라이트동작 및 리드동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 커맨드생성회로(11)는 메모리장치(20)의 에러체크스크럽동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 커맨드생성회로(11)는 메모리장치(20)의 파워오프동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 커맨드생성회로(11)는 메모리장치(20)의 부트업동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 커맨드생성회로(11)는 메모리장치(20)의 모드레지스터리드동작 및 모드레지스터라이트동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 라이트동작, 리드동작, 에러체크스크럽동작, 파워오프동작, 부트업동작, 모드레지스터리드동작 및 모드레지스터라이트동작을 수행하기 위한 커맨드(CMD)의 로직레벨 조합은 각각 상이한 로직레벨 조합으로 설정될 수 있다. 커맨드(CMD)는 하나의 신호로 도시되어 있지만 다수의 비트를 포함하도록 설정될 수 있다. 라이트동작 및 리드동작은 메모리장치(20)에서 데이터(DATA)를 저장하고, 저장된 데이터(DATA)를 입출력하는 노멀동작으로 설정될 수 있다. 에러체크스크럽동작은 메모리장치(20)에서 데이터(DATA)가 저장된 모든 영역에 대하여 오류정정코드(Error Correction Code, ECC)를 통해 데이터(DATA)의 에러를 정정하고 재 저장하는 동작으로 설정될 수 있다. 파워오프동작은 메모리장치(20)에 공급되는 전원을 차단하여 메모리장치(20)의 동작이 종료되기 전을 알리는 동작으로 설정될 수 있다. 부트업동작은 메모리장치(20)에 구비되는 퓨즈어레이(미도시)에 프로그래밍된 정보를 출력하는 동작으로 설정될 수 있다. 모드레지스터리드동작은 메모리장치(20)에 구비되는 레지스터(미도시)에 저장된 동작정보를 출력하는 동작으로 설정될 수 있다. 모드레지스터라이트동작은 메모리장치(20)에 구비되는 레지스터(미도시)에 동작정보를 저장하는 동작으로 설정될 수 있다.
어드레스생성회로(12)는 라이트동작 및 리드동작을 수행하기 위한 어드레스(ADD)를 생성할 수 있다. 어드레스생성회로(12)는 메모리장치(20)에 포함된 코어회로(23)의 라이트동작 및 리드동작을 수행하기 위한 어드레스(ADD)를 생성할 수 있다. 어드레스(ADD)는 하나의 신호로 도시되어 있지만 다수의 비트를 포함하도록 설정될 수 있다.
에러체크스크럽커맨드카운터(13)는 커맨드(CMD)를 토대로 에러체크스크럽동작 횟수만큼 카운팅되는 제1 내지 제M 카운팅신호(CNT<1:M>)를 생성할 수 있다. 에러체크스크럽커맨드카운터(13)는 커맨드(CMD)를 토대로 파워오프동작 시 파워오프제어신호(PWO)를 생성할 수 있다. 에러체크스크럽커맨드카운터(13)는 커맨드(CMD)를 토대로 부트업동작 시 부트업제어신호(BTC)를 생성할 수 있다. 에러체크스크럽커맨드카운터(13)는 부트업동작 시작 후 제1 내지 제M 저장어드레스(SADD<1:M>)를 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)로 출력할 수 있다. 에러체크스크럽커맨드카운터(13)는 부트업동작 시작 후 에러체크스크럽동작이 수행된 위치가 아닌 다음위치에 대하여 에러체크스크럽동작을 수행하기 위한 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 계산하여 출력할 수 있다. 에러체크스크럽커맨드카운터(13)는 부트업동작 시작 후 제1 내지 제M 저장어드레스(SADD<1:M>)를 1회 업카운팅하여 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)로 출력하도록 구현될 수 있다. 제1 내지 제M 저장어드레스(SADD<1:M>)를 1회 업카운팅하는 동작은 이전에 에러체크스크럽동작이 수행된 위치가 아닌 다음위치에 대하여 에러체크스크럽동작을 수행하기 위함이다.
저장회로(14)는 파워오프제어신호(PWO)가 입력될 때 제1 내지 제M 카운팅신호(CNT<1:M>)를 저장할 수 있다. 저장회로(14)는 부트업제어신호(BTC)가 입력될 때 저장된 제1 내지 제M 카운팅신호(CNT<1:M>)를 제1 내지 제M 저장어드레스(SADD<1:M>)로 출력할 수 있다. 저장회로(14)는 파워오프동작 시 내부에 저장된 제1 내지 제M 카운팅신호(CNT<1:M>)를 유지하는 비휘발성장치로 구현될 수 있다. 저장회로(14)는 컨트롤러(10)에 구비되도록 구현되어 있지만, 실시예에 따라 컨트롤러(10) 외부에 구비되는 비휘발성장치로 구현될 수 있다.
데이터입출력회로(15)는 커맨드(CMD)를 토대로 라이트동작 시 외부장치(예를 들어 HOST)로부터 외부데이터(ED)를 수신할 수 있다. 데이터입출력회로(15)는 커맨드(CMD)를 토대로 라이트동작 시 외부데이터(ED)로부터 데이터(DATA)를 생성할 수 있다. 데이터입출력회로(15)는 커맨드(CMD)를 토대로 라이트동작 시 데이터(DATA)를 메모리장치(20)로 출력할 수 있다. 데이터입출력회로(15)는 커맨드(CMD)를 토대로 리드동작 시 메모리장치(20)로부터 데이터(DATA)를 수신할 수 있다. 데이터입출력회로(15)는 커맨드(CMD)를 토대로 리드동작 시 데이터(DATA)로부터 외부데이터(ED)를 생성할 수 있다. 데이터입출력회로(15)는 커맨드(CMD)를 토대로 리드동작 시 외부데이터(ED)를 외부장치(예를 들어 HOST)로 출력할 수 있다.
위크셀분석회로(16)는 메모리장치(20)로부터 제1 내지 제M 위크셀정보(WK_INF<1:M>)를 수신할 수 있다. 위크셀분석회로(16)는 모드레지스터리드동작 시 메모리장치(20)로부터 수신한 제1 내지 제M 위크셀정보(WK_INF<1:M>)를 토대로 메모리장치(20)에서 발생하는 불량을 관리할 수 있다. 위크셀분석회로(16)는 제1 내지 제M 위크셀정보(WK_INF<1:M>)로부터 메모리장치(20)에 포함된 코어회로(23)의 불량을 관리할 수 있다. 위크셀분석회로(16)는 제1 내지 제M 위크셀정보(WK_INF<1:M>)로부터 메모리장치(20)에서 에러가 발생한 내부데이터(도 3의 ID)가 저장된 위치를 관리할 수 있다. 위크셀분석회로(16)는 메모리장치(20)에서 에러가 발생한 내부데이터(도 3의 ID)가 저장된 위치를 추가적으로 리프레쉬하거나 에러가 발생한 내부데이터(도 3의 ID)가 저장된 위치를 변경하는 리페어동작을 제어할 수 있다.
도 3은 반도체시스템(1)에 포함된 메모리장치(20)의 일 예에 따른 구성을 도시한 블럭도이다. 메모리장치(20)는 커맨드디코더(21), 내부어드레스생성회로(22), 코어회로(23), 에러정정회로(24), 에러체크스크럽엔진(25) 및 에러체크스크럽어드레스생성회로(26)를 포함할 수 있다.
커맨드디코더(21)는 커맨드(CMD)를 디코딩하여 라이트커맨드(WT), 리드커맨드(RD), 부트업커맨드(BOOT), 모드레지스터리드커맨드(MRR) 및 모드레지스터라이트커맨드(MRW) 등을 생성할 수 있다. 커맨드디코더(21)는 커맨드(CMD)를 디코딩하여 노멀동작인 라이트동작을 수행하기 위한 라이트커맨드(WT)를 생성할 수 있다. 커맨드디코더(21)는 커맨드(CMD)를 디코딩하여 노멀동작인 리드동작을 수행하기 위한 리드커맨드(RD)를 생성할 수 있다. 커맨드디코더(21)는 커맨드(CMD)를 디코딩하여 부트업동작을 수행하기 위한 부트업커맨드(BOOT)를 생성할 수 있다. 커맨드디코더(21)는 커맨드(CMD)를 디코딩하여 모드레지스터리드동작을 수행하기 위한 모드레지스터리드커맨드(MRR)를 생성할 수 있다. 커맨드디코더(21)는 커맨드(CMD)를 디코딩하여 모드레지스터라이트동작을 수행하기 위한 모드레지스터라이트커맨드(MRW)를 생성할 수 있다.
내부어드레스생성회로(22)는 어드레스(ADD)를 디코딩하여 제1 내지 제M 내부어드레스(IADD<1:M>)를 생성할 수 있다. 내부어드레스생성회로(22)는 노멀동작인 라이트동작 및 리드동작 시 어드레스(ADD)를 디코딩하여 제1 내지 제M 내부어드레스(IADD<1:M>)를 생성할 수 있다.
코어회로(23)는 라이트커맨드(WT)가 입력될 때 제1 내지 제M 내부어드레스(IADD<1:M>)에 의해 선택되는 위치에 내부데이터(ID)를 저장할 수 있다. 코어회로(23)는 리드커맨드(RD)가 입력될 때 제1 내지 제M 내부어드레스(IADD<1:M>)에 의해 선택되는 위치에 저장된 내부데이터(ID)를 출력할 수 있다. 코어회로(23)는 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)에 의해 선택되는 위치에 저장된 내부데이터(ID)를 출력한 이후 에러가 정정된 내부데이터(ID)를 저장할 수 있다.
에러정정회로(24)는 라이트동작 시 데이터(DATA)에 포함된 에러를 정정하여 내부데이터(ID)를 생성할 수 있다. 에러정정회로(24)는 리드동작 시 내부데이터(ID)에 포함된 에러를 정정하여 데이터(DATA)를 생성할 수 있다. 에러정정회로(24)는 에러체크스크럽동작 시 내부데이터(ID)에 에러가 포함된 경우 에러정보신호(ER_INF)를 생성할 수 있다. 에러정정회로(24)는 에러체크스크럽동작 시 코어회로(23)에서 출력된 내부데이터(ID)에 포함된 에러를 정정하고, 에러가 정정된 내부데이터(ID)를 코어회로(23)로 출력할 수 있다. 에러정보신호(ER_INF)는 내부데이터(ID)에 대한 에러 정정 가능 정보를 포함할 수 있다. 예를 들어, 내부데이터(ID)에 1비트의 에러가 발생한 경우 에러가 정정가능한 경우이고, 내부데이터(ID)에 2비트 이상의 에러가 발생한 경우 에러가 정정불가능한 경우를 의미할 수 있다.
에러체크스크럽엔진(25)은 커맨드(CMD)를 디코딩하여 에러체크스크럽제어신호(ECS)를 생성할 수 있다. 에러체크스크럽엔진(25)은 노멀동작 중 커맨드(CMD)가 에러체크스크럽동작을 수행하기 위한 로직레벨 조합으로 입력될 때 에러체크스크럽제어신호(ECS)를 생성할 수 있다. 에러체크스크럽엔진(25)은 에러체크스크럽동작 중 에러정보신호(ER_INF)가 입력될 때 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 저장할 수 있다. 에러체크스크럽엔진(25)은 에러체크스크럽동작 시 로우어드레스에서 발생하는 불량횟수가 문턱값을 넘는 경우 생성되는 에러정보신호(ER_INF)가 입력될 때 로우어드레스인 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 모드레지스터(도 5의 252)에 저장할 수 있다. 에러체크스크럽엔진(25)은 모드레지스터리드커맨드(MRR)가 입력될 때 저장된 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 제1 내지 제M 위크셀정보(WK_INF<1:M>)로 출력할 수 있다. 제1 내지 제M 위크셀정보(WK_INF<1:M>)는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 포함하도록 구현되어 있지만, 내부데이터(ID)의 에러 발생정보(예를 들어, 1비트 에러발생, 2비트 에러발생 정보 및 에러가 정정불가능한 정보)를 포함하도록 구현될 수 있다.
에러체크스크럽어드레스생성회로(26)는 에러체크스크럽제어신호(ECS)가 입력될 때 순차적으로 업카운팅되는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 생성할 수 있다. 에러체크스크럽어드레스생성회로(26)는 부트업커맨드(BOOT)가 입력될 때 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 수신할 수 있다. 에러체크스크럽어드레스생성회로(26)는 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 수신한 이후 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)와 동일한 로직레벨 조합을 갖는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)로부터 순차적으로 업카운팅되는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 생성할 수 있다. 에러체크스크럽어드레스생성회로(26)는 모드레지스터라이트커맨드(MRW)의 입력횟수에 따라 선택적으로 카운팅되는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 생성할 수 있다.
도 4는 메모리장치(20)에 포함된 코어회로(23)의 일 예에 따른 구성을 도시한 블럭도이다. 코어회로(23)는 제1 뱅크(231), 제2 뱅크(232), 제3 뱅크(233) 및 제4 뱅크(234)를 포함할 수 있다.
제1 뱅크(231)는 제1 내지 제16 워드라인(WL1 ~ WL16) 및 제1 내지 제6 비트라인(BL1 ~ BL6)을 포함할 수 있다. 제1 뱅크(231)는 라이트커맨드(WT)가 입력될 때 제1 내지 제M 내부어드레스(IADD<1:M>)에 의해 활성화되는 워드라인 및 비트라인에 연결된 메모리셀(미도시)에 내부데이터(ID)를 저장할 수 있다. 제1 뱅크(231)는 리드커맨드(RD)가 입력될 때 제1 내지 제M 내부어드레스(IADD<1:M>)에 의해 활성화되는 워드라인 및 비트라인에 연결된 메모리셀(미도시)에 저장된 내부데이터(ID)를 출력할 수 있다. 제1 뱅크(231)는 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)에 의해 활성화되는 워드라인 및 비트라인에 연결된 메모리셀(미도시)에 저장된 내부데이터(ID)를 출력한 이후 에러가 정정된 내부데이터(ID)를 저장할 수 있다. 제1 뱅크(231)는 16개의 워드라인들과 6개의 비트라이들을 포함하도록 구현되어 있지만 실시예에 따라 다양한 수의 워드라인 및 비트라인을 포함하도록 구현될 수 있다.
제2 내지 제4 뱅크(232 ~ 234)는 제1 뱅크(231)와 동일한 구조로 구현되어 동일한 동작을 수행하므로 구체적인 설명은 생략한다.
도 5는 메모리장치(20)에 포함된 에러체크스크럽엔진(25)의 일 예에 따른 구성을 도시한 블럭도이다. 에러체크스크럽엔진(25)은 에러체크스크럽제어회로(251) 및 모드레지스터(252)를 포함할 수 있다.
에러체크스크럽제어회로(251)는 커맨드(CMD)를 디코딩하여 에러체크스크럽제어신호(ECS)를 생성할 수 있다. 에러체크스크럽제어회로(251)는 커맨드(CMD)를 디코딩하여 에러체크스크럽동작을 수행하기 위한 에러체크스크럽제어신호(ECS)를 생성할 수 있다. 에러체크스크럽제어회로(251)는 노멀동작 중 커맨드(CMD)를 디코딩하여 에러체크스크럽제어신호(ECS)를 생성할 수 있다. 에러체크스크럽제어회로(251)는 에러정보신호(ER_INF)를 토대로 저장제어신호(ST_CON)를 생성할 수 있다.
모드레지스터(252)는 저장제어신호(ST_CON)가 입력될 때 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 저장할 수 있다. 모드레지스터(252)는 모드레지스터리드동작 시 저장된 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)로부터 제1 내지 제M 위크셀정보(WK_INF<1:M>)를 생성할 수 있다. 모드레지스터(252)는 모드레지스터리드커맨드(MRR)가 입력될 때 저장된 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 제1 내지 제M 위크셀정보(WK_INF<1:M>)로 출력할 수 있다. 모드레지스터(252)는 다수의 레지스터로 구현되는 일반적인 레지스터회로로 구현될 수 있다.
도 6은 메모리장치(20)에 포함된 에러체크스크럽어드레스생성회로(26)의 일 예에 따른 구성을 도시한 블럭도이다. 에러체크스크럽어드레스생성회로(26)는 제1 카운터(261), 제2 카운터(262) 및 제3 카운터(263)를 포함할 수 있다.
제1 카운터(261)는 에러체크스크럽제어신호(ECS)를 수신하여 순차적으로 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(261)는 에러체크스크럽제어신호(ECS)가 입력될 때 마다 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(261)는 에러체크스크럽제어신호(ECS)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(261)는 부트업커맨드(BOOT) 및 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)를 수신하여 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(261)는 부트업커맨드(BOOT)가 입력될 때 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)를 수신하고, 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)와 동일한 로직레벨 조합을 갖는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(261)는 부트업커맨드(BOOT)가 입력된 이후 에러체크스크럽제어신호(ECS)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)와 동일한 로직레벨 조합을 갖는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 순차적으로 업카운팅할 수 있다. 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)는 도 4에 도시된 제1 내지 제6 비트라인들(BL1 ~ BL6)을 선택하기 위한 비트로 설정될 수 있다.
제2 카운터(262)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)를 수신하여 순차적으로 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(262)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 입력될 때 마다 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(262)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(262)는 부트업커맨드(BOOT) 및 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)를 수신하여 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(262)는 부트업커맨드(BOOT)가 입력될 때 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)를 수신하고, 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)와 동일한 로직레벨 조합을 갖는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(262)는 부트업커맨드(BOOT)가 입력된 이후 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)와 동일한 로직레벨 조합을 갖는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 순차적으로 업카운팅할 수 있다. 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)는 도 4에 도시된 제1 내지 제16 워드라인들(WL1 ~ WL6)을 선택하기 위한 비트로 설정될 수 있다.
제3 카운터(263)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)를 수신하여 순차적으로 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(263)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 입력될 때 마다 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(263)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(263)는 부트업커맨드(BOOT) 및 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)를 수신하여 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(263)는 부트업커맨드(BOOT)가 입력될 때 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)를 수신하고, 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(263)는 부트업커맨드(BOOT)가 입력된 이후 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 순차적으로 업카운팅할 수 있다. 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)는 도 4에 도시된 제1 내지 제4 뱅크들(261 ~ 264)을 선택하기 위한 비트로 설정될 수 있다.
한편, 도 6에 도시된 제1 내지 제26 에러체크스크럽어드레스(ECS_ADD<1:26>)는 26 비트로 구현되어 있지만 코어회로(23)의 구조에 따라 다양한 비트로 구현될 수 있다.
도 7을 참고하여, 본 발명의 에러체크스크럽동작을 설명하되, 컨트롤러(10)로부터 제1 내지 제4 뱅크(231 ~ 234)중 어느 하나의 뱅크(BANK)를 선택하기 위한 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)를 수신하여 에러체크스크럽동작을 수행하는 동작을 설명하면 다음과 같다. 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)는 뱅크(BANK)를 선택하기 위한 뱅크어드레스로 설정될 수 있다.
컨트롤러(10)는 부트업동작을 수행하기 위한 커맨드(CMD)를 메모리장치(20)로 출력한다. 컨트롤러(10)는 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)를 메모리장치(20)로 출력한다.
커맨드디코더(21)는 커맨드(CMD)를 디코딩하여 부트업동작을 수행하기 위한 로직하이레벨(H)의 부트업커맨드(BOOT)를 생성한다.
에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)를 수신한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성한다.
에러체크스크럽엔진(25)은 노멀동작 중 커맨드(CMD)가 에러체크스크럽동작을 수행하기 위한 로직레벨 조합으로 입력될 때 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)를 생성한다.
에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)가 입력될 때 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)로부터 순차적으로 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제22 에러체크스크럽어드레스(ECS_ADD<1:22>)를 순차적으로 업카운팅할 수 있다. 이때, 순차적으로 업카운팅되는 제1 내지 제22 에러체크스크럽어드레스(ECS_ADD<1:22>)는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)에 의해 선택된 뱅크의 첫 번째 워드라인을 선택하기 위한 첫 번째 로우어드레스로부터 순차적으로 업카운팅될 수 있다.
코어회로(23)는 제1 내지 제4 뱅크(231 ~ 234) 중 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)에 의해 선택되는 뱅크에 저장된 내부데이터(ID)를 출력한다.
에러정정회로(24)는 에러체크스크럽동작 시 코어회로(23)에서 출력된 내부데이터(ID)에 포함된 에러를 정정하고, 에러가 정정된 내부데이터(ID)를 코어회로(23)로 출력한다.
코어회로(23)는 제1 내지 제4 뱅크(231 ~ 234) 중 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)에 의해 선택되는 뱅크에 에러가 정정된 내부데이터(ID)를 저장한다.
즉, 코어회로(23)는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)에 의해 선택되는 뱅크부터 에러체크스크럽동작을 순차적으로 수행함으로써 에러체크스크럽동작이 누락되는 경우를 방지할 수 있다.
이와 같은 본 발명의 일 실시예에 따른 반도체시스템(1)은 파워오프동작 전 에러체크스크럽동작이 수행된 위치를 컨트롤러(10)에 포함된 비휘발성장치에 저장하고, 부트업동작 시작 후 저장된 에러체크스크럽동작이 수행된 위치를 메모리장치(20)에 제공하여 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 특정 어드레스에만 에러체크스크럽동작이 반복되거나 일부 어드레스에 에러체크스크럽동작이 누락되는 경우를 방지할 수 있다. 또한, 반도체시스템(1)은 에러체크스크럽동작 시 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 코어회로(23)에 저장된 데이터의 신뢰성을 확보할 수 있다.
도 8을 참고하여, 본 발명의 에러체크스크럽동작을 설명하되, 컨트롤러(10)로부터 제1 내지 제4 뱅크(231 ~ 234) 중 어느 하나의 뱅크(BANK)을 선택하기 위한 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)와 제1 내지 제16 워드라인(WL1 ~ WL16) 중 어느 하나의 워드라인(WORD LINE)을 선택하기 위한 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)를 수신하여 에러체크스크럽동작을 수행하는 동작을 설명하면 다음과 같다. 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)는 뱅크(BANK)를 선택하기 위한 뱅크어드레스로 설정될 수 있다. 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)는 워드라인(WL)을 선택하기 위한 로우어드레스로 설정될 수 있다.
컨트롤러(10)는 부트업동작을 수행하기 위한 커맨드(CMD)를 메모리장치(20)로 출력한다. 컨트롤러(10)는 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>) 및 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)를 메모리장치(20)로 출력한다.
커맨드디코더(21)는 커맨드(CMD)를 디코딩하여 부트업동작을 수행하기 위한 로직하이레벨(H)의 부트업커맨드(BOOT)를 생성한다.
에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)를 수신한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)를 수신한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)와 동일한 로직레벨 조합을 갖는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 순차적으로 업카운팅할 수 있다. 이때, 순차적으로 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)에 의해 선택된 뱅크와 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)에 의해 선택된 뱅크의 워드라인의 첫 번째 비트라인을 선택하기 위한 첫 번째 컬럼어드레스로부터 순차적으로 업카운팅될 수 있다.
에러체크스크럽엔진(25)은 노멀동작 중 커맨드(CMD)가 에러체크스크럽동작을 수행하기 위한 로직레벨 조합으로 입력될 때 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)를 생성한다.
에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)가 입력될 때 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)로부터 순차적으로 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)가 입력될 때 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)와 동일한 로직레벨 조합을 갖는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)로부터 순차적으로 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성한다.
코어회로(23)는 제1 내지 제4 뱅크(231 ~ 234) 중 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)와 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)에 의해 선택되는 뱅크에 포함된 워드라인에 저장된 내부데이터(ID)를 출력한다.
에러정정회로(24)는 에러체크스크럽동작 시 코어회로(23)에서 출력된 내부데이터(ID)에 포함된 에러를 정정하고, 에러가 정정된 내부데이터(ID)를 코어회로(23)로 출력한다.
코어회로(23)는 제1 내지 제4 뱅크(231 ~ 234) 중 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)에 의해 선택되는 뱅크에 포함된 워드라인에 에러가 정정된 내부데이터(ID)를 저장한다.
즉, 코어회로(23)는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)와 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)에 의해 선택되는 뱅크에 포함된 워드라인부터 에러체크스크럽동작을 순차적으로 수행함으로써 에러체크스크럽동작이 누락되는 경우를 방지할 수 있다.
이와 같은 본 발명의 일 실시예에 따른 반도체시스템(1)은 파워오프동작 전 에러체크스크럽동작이 수행된 위치를 컨트롤러(10)에 포함된 비휘발성장치에 저장하고, 부트업동작 시 저장된 에러체크스크럽동작이 수행된 위치를 메모리장치(20)에 제공하여 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 특정 어드레스에만 에러체크스크럽동작이 반복되거나 일부 어드레스에 에러체크스크럽동작이 누락되는 경우를 방지할 수 있다. 또한, 반도체시스템(1)은 에러체크스크럽동작 시 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 코어회로(23)에 저장된 데이터의 신뢰성을 확보할 수 있다.
도 9를 참고하여, 본 발명의 에러체크스크럽동작을 설명하되, 컨트롤러(10)로부터 제1 내지 제4 뱅크(231 ~ 234) 중 어느 하나의 뱅크(BANK)을 선택하기 위한 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)와 제1 내지 제16 워드라인(WL1 ~ WL16) 중 어느 하나의 워드라인(WORD LINE)을 선택하기 위한 제7 내지 제26 에러체크스크럽정보(ECS_INF<7:22>) 및 제1 내지 제6 비트라인(BL1 ~ BL6) 중 어느 하나의 비트라인(BIT LINE)을 선택하기 위한 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)를 수신하여 에러체크스크럽동작을 수행하는 동작을 설명하면 다음과 같다. 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)는 뱅크(BANK)를 선택하기 위한 뱅크어드레스로 설정될 수 있다. 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)는 워드라인(WL)을 선택하기 위한 로우어드레스로 설정될 수 있다. 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)는 비트라인(BIT LINE)을 선택하기 위한 컬럼어드레스로 설정될 수 있다.
컨트롤러(10)는 부트업동작을 수행하기 위한 커맨드(CMD)를 메모리장치(20)로 출력한다. 컨트롤러(10)는 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>), 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>) 및 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)를 메모리장치(20)로 출력한다.
커맨드디코더(21)는 커맨드(CMD)를 디코딩하여 부트업동작을 수행하기 위한 로직하이레벨(H)의 부트업커맨드(BOOT)를 생성한다.
에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)를 수신한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)를 수신한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)를 수신한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)와 동일한 로직레벨 조합을 갖는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 부트업커맨드(BOOT)가 입력될 때 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)와 동일한 로직레벨 조합을 갖는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제26 에러체크스크럽어드레스(ECS_ADD<1:26>)에 의해 선택된 뱅크에 포함되고, 선택된 워드라인에 연결되는 비트라인을 선택하기 위한 컬럼어드레스로부터 순차적으로 업카운팅될 수 있다.
에러체크스크럽엔진(25)은 노멀동작 중 커맨드(CMD)가 에러체크스크럽동작을 수행하기 위한 로직레벨 조합으로 입력될 때 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)를 생성한다.
에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)가 입력될 때 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)로부터 순차적으로 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)가 입력될 때 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)와 동일한 로직레벨 조합을 갖는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)로부터 순차적으로 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성한다. 에러체크스크럽어드레스생성회로(26)는 로직하이레벨(H)의 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)와 동일한 로직레벨 조합을 갖는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)로부터 순차적으로 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성한다.
코어회로(23)는 제1 내지 제4 뱅크(231 ~ 234) 중 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>), 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>) 및 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)에 의해 선택되는 뱅크에 포함된 비트라인에 저장된 내부데이터(ID)를 출력한다.
에러정정회로(24)는 에러체크스크럽동작 시 코어회로(23)에서 출력된 내부데이터(ID)에 포함된 에러를 정정하고, 에러가 정정된 내부데이터(ID)를 코어회로(23)로 출력한다.
코어회로(23)는 제1 내지 제4 뱅크(231 ~ 234) 중 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)에 의해 선택되는 뱅크에 포함된 비트라인에 에러가 정정된 내부데이터(ID)를 저장한다.
즉, 코어회로(23)는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>), 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>) 및 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)에 의해 선택되는 뱅크에 포함된 비트라인부터 에러체크스크럽동작을 순차적으로 수행함으로써 에러체크스크럽동작이 누락되는 경우를 방지할 수 있다.
이와 같은 본 발명의 일 실시예에 따른 반도체시스템(1)은 파워오프동작 전 에러체크스크럽동작이 수행된 위치를 컨트롤러(10)에 포함된 비휘발성장치에 저장하고, 부트업동작 시 저장된 에러체크스크럽동작이 수행된 위치를 메모리장치(20)에 제공하여 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 특정 어드레스에만 에러체크스크럽동작이 반복되거나 일부 어드레스에 에러체크스크럽동작이 누락되는 경우를 방지할 수 있다. 또한, 반도체시스템(1)은 에러체크스크럽동작 시 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 코어회로(23)에 저장된 데이터의 신뢰성을 확보할 수 있다.
도 10은 메모리장치(20)에 포함된 에러체크스크럽어드레스생성회로(26)의 다른 실시예에 따른 에러체크스크럽어드레스생성회로(26a)의 구성을 도시한 블럭도이다.
에러체크스크럽어드레스생성회로(26a)는 제1 카운터(261a), 제2 카운터(262a) 및 제3 카운터(263a)를 포함할 수 있다.
제1 카운터(261a)는 에러체크스크럽제어신호(ECS)를 수신하여 순차적으로 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(261a)는 에러체크스크럽제어신호(ECS)가 입력될 때 마다 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(261a)는 에러체크스크럽제어신호(ECS)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다.
제2 카운터(262a)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)를 수신하여 순차적으로 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(262a)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 입력될 때 마다 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(262a)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다.
제3 카운터(263a)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)를 수신하여 순차적으로 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(263a)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 입력될 때 마다 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(263a)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(263a)는 모드레지스터라이트커맨드(MRW)의 입력 횟수에 따라 선택적으로 카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(263a)는 모드레지스터라이트커맨드(MRW)가 1회 입력될 때 카운팅되는 제23 에러체크스크럽어드레스(ECS_ADD<23>)를 생성할 수 있다. 제3 카운터(263a)는 모드레지스터라이트커맨드(MRW)가 2회 입력될 때 카운팅되는 제24 에러체크스크럽어드레스(ECS_ADD<24>)를 생성할 수 있다. 제3 카운터(263a)는 모드레지스터라이트커맨드(MRW)가 3회 입력될 때 카운팅되는 제25 에러체크스크럽어드레스(ECS_ADD<25>)를 생성할 수 있다. 제3 카운터(263a)는 모드레지스터라이트커맨드(MRW)가 4회 입력될 때 카운팅되는 제26 에러체크스크럽어드레스(ECS_ADD<26>)를 생성할 수 있다. 모드레지스터라이트커맨드(MRW)의 입력횟수에 따라 카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)는 실시예에 따라 다양하게 설정될 수 있다.
한편, 도 10에 도시된 제1 내지 제26 에러체크스크럽어드레스(ECS_ADD<1:26>)는 26 비트로 구현되어 있지만 코어회로(23)의 구조에 따라 다양한 비트로 구현될 수 있다.
도 11은 에러체크스크럽어드레스생성회로(26a)에 포함된 제3 카운터(263a)의 일 예에 따른 구성을 도시한 블럭도이다. 제3 카운터(263a)는 전달제어신호생성회로(310) 및 시프팅회로(320)를 포함할 수 있다.
전달제어신호생성회로(310)는 낸드게이트(311) 및 인버터(312)로 구현될 수 있다.
전달제어신호생성회로(310)는 제22 에러체크스크럽어드레스(ECS_ADD<22>) 및 모드레지스터라이트커맨드(MRW)를 토대로 전달제어신호(TCON)를 생성할 수 있다. 전달제어신호생성회로(310)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이할 때 마다 로직로우레벨의 전달제어신호(TCON)를 생성할 수 있다. 전달제어신호생성회로(310)는 모드레지스터라이트커맨드(MRW)가 로직하이레벨에서 로직로우레벨로 천이할 때 마다 로직로우레벨의 전달제어신호(TCON)를 생성할 수 있다.
시프팅회로(320)는 제1 플립플롭(321), 제2 플립플롭(322), 제3 플립플롭(323) 및 제4 플립플롭(324)을 포함할 수 있다.
제1 플립플롭(321)은 전달제어신호(TCON)가 로직로우레벨로 입력될 때 로직로우레벨의 제23 에러체크스크럽어드레스(ECS_ADD<23>)를 반전버퍼링하여 로직하이레벨의 제23 에러체크스크럽어드레스(ECS_ADD<23>)를 생성할 수 있다. 제1 플립플롭(321)은 전달제어신호(TCON)가 로직로우레벨로 입력될 때 로직하이레벨의 제23 에러체크스크럽어드레스(ECS_ADD<23>)를 반전버퍼링하여 로직로우레벨의 제23 에러체크스크럽어드레스(ECS_ADD<23>)를 생성할 수 있다.
제2 플립플롭(322)은 제23 에러체크스크럽어드레스(ECS_ADD<23>)가 로직로우레벨로 입력될 때 로직로우레벨의 제24 에러체크스크럽어드레스(ECS_ADD<24>)를 반전버퍼링하여 로직하이레벨의 제24 에러체크스크럽어드레스(ECS_ADD<24>)를 생성할 수 있다. 제2 플립플롭(322)은 제23 에러체크스크럽어드레스(ECS_ADD<23>)가 로직로우레벨로 입력될 때 로직하이레벨의 제24 에러체크스크럽어드레스(ECS_ADD<24>)를 반전버퍼링하여 로직로우레벨의 제24 에러체크스크럽어드레스(ECS_ADD<24>)를 생성할 수 있다.
제3 플립플롭(323)은 제24 에러체크스크럽어드레스(ECS_ADD<24>)가 로직로우레벨로 입력될 때 로직로우레벨의 제25 에러체크스크럽어드레스(ECS_ADD<25>)를 반전버퍼링하여 로직하이레벨의 제25 에러체크스크럽어드레스(ECS_ADD<25>)를 생성할 수 있다. 제3 플립플롭(323)은 제24 에러체크스크럽어드레스(ECS_ADD<24>)가 로직로우레벨로 입력될 때 로직하이레벨의 제25 에러체크스크럽어드레스(ECS_ADD<25>)를 반전버퍼링하여 로직로우레벨의 제25 에러체크스크럽어드레스(ECS_ADD<25>)를 생성할 수 있다.
제4 플립플롭(324)은 제25 에러체크스크럽어드레스(ECS_ADD<25>)가 로직로우레벨로 입력될 때 로직로우레벨의 제26 에러체크스크럽어드레스(ECS_ADD<26>)를 반전버퍼링하여 로직하이레벨의 제26 에러체크스크럽어드레스(ECS_ADD<26>)를 생성할 수 있다. 제4 플립플롭(324)은 제25 에러체크스크럽어드레스(ECS_ADD<25>)가 로직로우레벨로 입력될 때 로직하이레벨의 제26 에러체크스크럽어드레스(ECS_ADD<26>)를 반전버퍼링하여 로직로우레벨의 제26 에러체크스크럽어드레스(ECS_ADD<26>)를 생성할 수 있다.
제3 카운터(263a)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이할 때 순차적으로 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(263a)는 모드레지스터라이트커맨드(MRW)의 입력 횟수에 따라 선택적으로 카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 예를 들어, 제3 카운터(263a)는 모드레지스터라이트커맨드(MRW)가 1회 입력될 때 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>) 중 제23 에러체크스크럽어드레스(ECS_ADD<23>)가 카운팅 될 수 있다. 제3 카운터(263a)는 모드레지스터리드커맨드(MRR)가 3회 입력될 때 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>) 중 제25 에러체크스크럽어드레스(ECS_ADD<25>)가 카운팅 될 수 있다.
도 12는 본 발명의 일 실시예에 따른 에러체크스크럽동작방법을 설명하기 위한 플로챠트이다. 에러체크스크럽동작방법은 커맨드입력단계(S11), 카운팅단계(S12), 파워오프감지단계(S13), 카운팅신호저장단계(S14), 부트업감지단계(S15), 저장어드레스출력단계(S16) 및 에러체크스크럽동작수행단계(S17)를 포함할 수 있다.
커맨드입력단계(S11)는 컨트롤러(10)의 커맨드생성회로(11)에서 메모리장치(20)의 에러체크스크럽동작을 수행하기 위한 커맨드(CMD)를 생성하는 단계로 설정될 수 있다. 커맨드입력단계(S11)에서 컨트롤러(10)의 커맨드생성회로(11)는 에러체크스크럽동작을 수행하기 위한 커맨드(CMD)를 메모리장치(20)로 출력할 수 있다. 커맨드입력단계(S11)에서 메모리장치(20)의 에러체크스크럽엔진(25)는 커맨드(CMD)를 디코딩하여 에러체크스크럽제어신호(ECS)를 생성할 수 있다.
카운팅단계(S12)는 컨트롤러(10)에서 에러체크스크럽동작횟수를 카운팅하는 단계로 설정될 수 있다. 카운팅단계(S12)에서 컨트롤러(10)의 에러체크스크럽커맨드카운터(13)는 커맨드(CMD)를 토대로 에러체크스크럽동작 횟수만큼 카운팅되는 제1 내지 제M 카운팅신호(CNT<1:M>)를 생성할 수 있다.
파워오프감지단계(S13)는 컨트롤러(10)의 커맨드생성회로(11)에서 메모리장치(20)의 파워오프동작을 수행하기 위한 커맨드(CMD)를 생성하는 단계로 설정될 수 있다. 파워오프감지단계(S13)에서 컨트롤러(10)의 에러체크스크럽커맨드카운터(13)는 커맨드(CMD)를 토대로 파워오프동작 시 파워오프제어신호(PWO)를 생성할 수 있다.
카운팅신호저장단계(S14)는 파워오프동작 전 제1 내지 제M 카운팅신호(CNT<1:M>)를 비휘발성장치인 저장회로(14)에 저장하는 단계로 설정될 수 있다. 카운팅신호저장단계(S14)에서 컨트롤러(10)의 저장회로(14)는 파워오프제어신호(PWO)가 입력될 때 제1 내지 제M 카운팅신호(CNT<1:M>)를 저장할 수 있다.
부트업감지단계(S15)는 컨트롤러(10)의 커맨드생성회로(11)에서 메모리장치(20)의 부트업동작을 수행하기 위한 커맨드(CMD)를 생성하는 단계로 설정될 수 있다. 부트업감지단계(S15)에서 컨트롤러(10)의 에러체크스크럽커맨드카운터(13)는 커맨드(CMD)를 토대로 부트업동작 시 부트업제어신호(BTC)를 생성할 수 있다. 부트업감지단계(S15)에서 메모리장치(20)의 커맨드디코더(21)는 커맨드(CMD)를 디코딩하여 부트업동작을 수행하기 위한 부트업커맨드(BOOT)를 생성할 수 있다.
저장어드레스출력단계(S16)는 부트업동작 시작 후 저장된 제1 내지 제M 카운팅신호(CNT<1:M>)를 제1 내지 제M 저장어드레스(SADD<1:M>)로 출력하는 단계로 설정될 수 있다. 저장어드레스출력단계(S16)에서 컨트롤러(10)의 저장회로(14)는 부트업제어신호(BTC)가 입력될 때 저장된 제1 내지 제M 카운팅신호(CNT<1:M>)를 제1 내지 제M 저장어드레스(SADD<1:M>)로 출력할 수 있다. 저장어드레스출력단계(S16)에서 컨트롤러(10)의 에러체크스크럽커맨드카운터(13)는 부트업동작 시작 후 제1 내지 제M 저장어드레스(SADD<1:M>)를 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)로 출력할 수 있다. 저장어드레스출력단계(S16)에서 메모리장치(20)의 에러체크스크럽어드레스생성회로(26)는 부트업커맨드(BOOT)가 입력될 때 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 수신할 수 있다.
에러체크스크럽동작수행단계(S17)는 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 토대로 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행하는 단계로 설정될 수 있다. 에러체크스크럽동작수행단계(S17)에서 커맨드생성회로(11)는 메모리장치(20)의 에러체크스크럽동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 에러체크스크럽동작수행단계(S17)에서 메모리장치(20)의 에러체크스크럽엔진(25)은 커맨드(CMD)를 디코딩하여 에러체크스크럽제어신호(ECS)를 생성할 수 있다. 에러체크스크럽동작수행단계(S17)에서 메모리장치(20)의 에러체크스크럽어드레스생성회로(26)는 에러체크스크럽제어신호(ECS)가 입력될 때 부트업동작 시 수신된 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)와 동일한 로직레벨 조합을 갖는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)로부터 순차적으로 업카운팅되는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 생성할 수 있다. 에러체크스크럽동작수행단계(S17)에서 코어회로(23)는 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)에 의해 선택되는 위치에 저장된 내부데이터(ID)를 출력한 이후 에러가 정정된 내부데이터(ID)를 저장할 수 있다.
이와 같은 본 발명의 에러체크스크럽동작방법은 파워오프동작 전 에러체크스크럽동작이 수행된 위치를 비휘발성장치에 저장하고, 부트업동작 시 저장된 에러체크스크럽동작이 수행된 위치를 메모리장치에 제공하여 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 특정 어드레스에만 에러체크스크럽동작이 반복되거나 일부 어드레스에 에러체크스크럽동작이 누락되는 경우를 방지할 수 있다. 또한, 에러체크스크럽동작방법은 에러체크스크럽동작 시 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 코어회로에 저장된 데이터의 신뢰성을 확보할 수 있다.
도 13에 도시된 바와 같이, 본 발명의 다른 실시 예에 따른 반도체시스템(2)은 컨트롤러(30) 및 메모리장치(40)를 포함할 수 있다.
컨트롤러(30)는 제1 컨트롤핀(31_1), 제2 컨트롤핀(31_2), 제3 컨트롤핀(31_3), 제4 컨트롤핀(31_4), 제5 컨트롤핀(31_5) 및 제6 컨트롤핀(31_6)을 포함할 수 있다. 메모리장치(40)는 제1 장치핀(33_1), 제2 장치핀(33_2), 제3 장치핀(33_3), 제4 장치핀(33_4), 제5 장치핀(33_5) 및 제6 장치핀(33_5)을 포함할 수 있다.
컨트롤러(30)는 제1 컨트롤핀(31_1) 및 제1 전자핀(33_1) 사이에 연결된 제1 전송라인(32_1)을 통해 커맨드(CMD) 및 카운트리퀘스트신호(CRQ)를 메모리장치(40)로 전송할 수 있다. 제1 컨트롤핀(31_1), 제1 전송라인(32_1) 및 제1 전자핀(33_1) 각각은 커맨드(CMD) 및 카운트리퀘스트신호(CRQ)의 비트 수에 따라 다수 개로 구현될 수 있다. 커맨드(CMD)와 카운트리퀘스트신호(CRQ)는 서로 다른 전송라인을 통해 전송될 수 있다. 컨트롤러(30)는 제2 컨트롤핀(31_2) 및 제2 전자핀(33_2) 사이에 연결된 제2 전송라인(32_2)을 통해 어드레스(ADD)를 메모리장치(40)로 전송할 수 있다. 제2 컨트롤핀(31_2), 제2 전송라인(32_2) 및 제2 전자핀(33_2) 각각은 어드레스(ADD)의 비트 수에 따라 다수 개로 구현될 수 있다. 컨트롤러(30)는 제3 컨트롤핀(31_3) 및 제3 전자핀(33_3) 사이에 연결된 제3 전송라인(32_3)을 통해 메모리장치(40)로부터 에러체크스크럽정보(ECS_INF)를 수신할 수 있다. 제3 컨트롤핀(31_3), 제3 전송라인(32_3) 및 제3 전자핀(33_3) 각각은 에러체크스크럽정보(ECS_INF)의 비트 수에 따라 다수 개로 구현될 수 있다. 컨트롤러(30)는 제4 컨트롤핀(31_4) 및 제4 전자핀(33_4) 사이에 연결된 제4 전송라인(32_4)을 통해 에러체크스크럽리줌정보(ECS_RSF)를 메모리장치(40)로 전송할 수 있다. 제4 컨트롤핀(31_4), 제4 전송라인(32_4) 및 제4 전자핀(33_4) 각각은 에러체크스크럽리줌정보(ECS_RSF)의 비트 수에 따라 다수 개로 구현될 수 있다. 컨트롤러(30)는 제5 컨트롤핀(31_5) 및 제5 전자핀(33_5) 사이에 연결된 제5 전송라인(32_5)을 통해 메모리장치(40)로부터 위크셀정보(WK_INF)를 수신할 수 있다. 제5 컨트롤핀(31_5), 제5 전송라인(32_5) 및 제5 전자핀(33_5) 각각은 위크셀정보(WK_INF)의 비트 수에 따라 다수 개로 구현될 수 있다. 컨트롤러(30)는 제6 컨트롤핀(31_6) 및 제6 전자핀(33_6) 사이에 연결된 제6 전송라인(32_6)을 통해 데이터(DATA)를 메모리장치(40)로 출력하거나, 메모리장치(40)로부터 데이터(DATA)를 수신할 수 있다. 제6 컨트롤핀(33_6), 제6 전송라인(32_6) 및 제6 전자핀(33_6) 각각은 데이터(DATA)의 비트 수에 따라 다수 개로 구현될 수 있다.
에러체크스크럽정보(ECS_INF)는 제3 전송라인(32_3)을 통해 컨트롤러(30)로 전송되도록 구현되어 있지만, 실시예에 따라 커맨드(CMD)가 전송되는 제1 전송라인(32_1)과 어드레스(ADD)가 전송되는 제2 전송라인(32_2)을 통해 컨트롤러(30)로 전송되도록 구현될 수 있다. 위크셀정보(WK_INF)는 제5 전송라인(32_5)을 통해 컨트롤러(30)로 전송되도록 구현되어 있지만, 실시예에 따라 데이터(DATA)가 전송되는 제6 전송라인(32_6)을 통해 컨트롤러(30)로 전송되도록 구현될 수 있다.
컨트롤러(30)는 저장회로(33)를 포함할 수 있다.
저장회로(33)는 파워오프동작 시 에러체크스크럽동작이 수행된 위치정보인 에러체크스크럽정보(ECS_INF)를 저장할 수 있다. 저장회로(33)는 부트업동작 시 저장된 에러체크스크럽정보(ECS_INF)를 에러체크스크럽저장어드레스(ECS_SADD)로 출력할 수 있다. 저장회로(33)는 파워오프동작 시 내부에 저장된 러스크럽정보(ECS_INF)를 유지하는 비휘발성장치로 구현될 수 있다. 저장회로(33)는 컨트롤러(30)에 구비되도록 구현되어 있지만, 실시예에 따라 컨트롤러(30) 외부에 구비되는 비휘발성장치로 구현될 수 있다.
컨트롤러(30)는 파워오프동작 전 에러체크스크럽동작이 수행된 위치정보인 에러체크스크럽정보(ECS_INF)를 수신하여 저장할 수 있다. 컨트롤러(30)는 부트업동작 시 저장된 에러체크스크럽정보(ECS_INF)를 에러체크스크럽리줌정보(ECS_RSF)로 출력할 수 있다.
메모리장치(40)는 코어회로(43), 에러정정회로(44), 에러체크스크럽엔진(45) 및 에러체크스크럽어드레스생성회로(46)를 포함할 수 있다.
코어회로(43)는 에러체크스크럽동작 시 내부에 저장된 내부데이터(도 15의 ID)를 출력한 이후 에러가 정정된 내부데이터(도 15의 ID)를 저장할 수 있다.
에러정정회로(44)는 에러체크스크럽동작 시 내부데이터(도 15의 ID)에 포함된 에러를 감지할 수 있다. 에러정정회로(44)는 에러체크스크럽동작 시 내부데이터(도 15의 ID)에 포함된 에러를 정정할 수 있다.
에러체크스크럽엔진(45)은 커맨드(CMD)를 토대로 에러체크스크럽동작을 제어할 수 있다.
에러체크스크럽어드레스생성회로(46)는 커맨드(CMD)를 토대로 에러체크스크럽동작 시 순차적으로 업카운팅되는 에러체크스크럽어드레스(도 15의 ECS_ADD<1:M>)를 생성할 수 있다. 에러체크스크럽어드레스생성회로(46)는 커맨드(CMD)를 토대로 파워오프동작 시 에러체크스크럽어드레스(도 15의 ECS_ADD<1:M>)로부터 에러체크스크럽정보(ECS_INF)를 생성할 수 있다. 에러체크스크럽어드레스생성회로(46)는 커맨드(CMD)를 토대로 부트업동작 시 에러체크스크럽리줌정보(ECS_RSF)와 동일한 에러체크스크럽어드레스(도 15의 ECS_ADD<1:M>)로부터 순차적으로 업카운팅되는 에러체크스크럽어드레스(도 15의 ECS_ADD<1:M>)를 생성할 수 있다.
메모리장치(40)는 에러체크스크럽동작 시 순차적으로 업카운팅되는 에러체크스크럽어드레스(도 15의 ECS_ADD<1:M>)에 의해 에러체크스크럽동작을 수행할 수 있다. 메모리장치(40)는 파워오프동작 시 에러체크스크럽동작이 수행된 위치정보인 에러체크스크럽어드레스(도 15의 ECS_ADD<1:M>)를 에러체크스크럽정보(ECS_INF)로 출력할 수 있다. 메모리장치(40)는 부트업동작 시 에러체크스크럽리줌정보(ECS_RSF)를 수신하고, 에러체크스크럽리줌정보(ECS_RSF)와 동일한 에러체크스크럽어드레스(도 15의 ECS_ADD<1:M>)로부터 순차적으로 업카운팅되는 에러체크스크럽어드레스(도 15의 ECS_ADD<1:M>)를 토대로 에러체크스크럽동작을 수행할 수 있다.
도 14는 반도체시스템(2)에 포함된 컨트롤러(30)의 일 예에 따른 구성을 도시한 블럭도이다. 컨트롤러(30)는 커맨드생성회로(31), 어드레스생성회로(32), 카운트리퀘스트신호생성회로(33), 저장회로(34), 데이터입출력회로(35) 및 위크셀분석회로(36)를 포함할 수 있다.
커맨드생성회로(31)는 메모리장치(40)의 동작을 제어하기 위한 커맨드(CMD)를 생성할 수 있다. 커맨드생성회로(41)는 메모리장치(40)의 라이트동작 및 리드동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 커맨드생성회로(31)는 메모리장치(40)의 에러체크스크럽동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 커맨드생성회로(31)는 메모리장치(40)의 파워오프동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 커맨드생성회로(31)는 메모리장치(40)의 부트업동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 커맨드생성회로(31)는 메모리장치(40)의 모드레지스터리드동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 라이트동작, 리드동작, 에러체크스크럽동작, 파워오프동작, 부트업동작 및 모드레지스터리드동작을 수행하기 위한 커맨드(CMD)의 로직레벨 조합은 각각 상이한 로직레벨 조합으로 설정될 수 있다. 커맨드(CMD)는 하나의 신호로 도시되어 있지만 다수의 비트를 포함하도록 설정될 수 있다. 라이트동작 및 리드동작은 메모리장치(40)에서 데이터(DATA)를 저장하고, 저장된 데이터(DATA)를 입출력하는 노멀동작으로 설정될 수 있다. 에러체크스크럽동작은 메모리장치(40)에서 데이터(DATA)가 저장된 모든 영역에 대하여 오류정정코드(Error Correction Code, ECC)를 통해 데이터(DATA)의 에러를 정정하고 재 저장하는 동작으로 설정될 수 있다. 파워오프동작은 메모리장치(40)에 공급되는 전원을 차단하여 메모리장치(40)의 동작이 종료되기 전을 알리는 동작으로 설정될 수 있다. 부트업동작은 메모리장치(40)에 구비되는 퓨즈어레이(미도시)에 프로그래밍된 정보를 출력하는 동작으로 설정될 수 있다. 모드레지스터리드동작은 메모리장치(40)에 구비되는 레지스터(미도시)에 저장된 동작정보를 출력하는 동작으로 설정될 수 있다.
어드레스생성회로(32)는 라이트동작 및 리드동작을 수행하기 위한 어드레스(ADD)를 생성할 수 있다. 어드레스생성회로(32)는 메모리장치(40)에 포함된 코어회로(43)의 라이트동작 및 리드동작을 수행하기 위한 어드레스(ADD)를 생성할 수 있다. 어드레스(ADD)는 하나의 신호로 도시되어 있지만 다수의 비트를 포함하도록 설정될 수 있다.
카운트리퀘스트신호생성회로(33)는 파워오프동작 수행 전 카운트리퀘스트신호(CRQ)를 생성할 수 있다. 카운트리퀘스트신호생성회로(33)는 파워오프동작 수행 전 카운트리퀘스트신호(CRQ)를 메모리장치(40)로 전송할 수 있다.
저장회로(34)는 파워오프동작 전 생성되는 파워오프제어신호(PWO)가 입력될 때 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 저장할 수 있다. 저장회로(34)는 부트업동작 시 생성되는 부트업제어신호(BTC)가 입력될 때 저장된 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 제1 내지 제M 에러체크스크럽저장어드레스(ECS_SADD<1:M>)로 출력할 수 있다. 저장회로(33)는 파워오프동작 시 내부에 저장된 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 유지하는 비휘발성장치로 구현될 수 있다. 저장회로(34)는 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 1회 업카운팅하여 제1 내지 제M 에러체크스크럽저장어드레스(ECS_SADD<1:M>)로 출력하도록 구현될 수 있다. 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 1회 업카운팅하는 동작은 이전에 에러체크스크럽동작이 수행된 위치가 아닌 다음위치에 대하여 에러체크스크럽동작을 수행하기 위함이다.
데이터입출력회로(35)는 커맨드(CMD)를 토대로 라이트동작 시 외부장치(예를 들어 HOST)로부터 외부데이터(ED)를 수신할 수 있다. 데이터입출력회로(34)는 커맨드(CMD)를 토대로 라이트동작 시 외부데이터(ED)로부터 데이터(DATA)를 생성할 수 있다. 데이터입출력회로35)는 커맨드(CMD)를 토대로 라이트동작 시 데이터(DATA)를 메모리장치(40)로 출력할 수 있다. 데이터입출력회로(34)는 커맨드(CMD)를 토대로 리드동작 시 메모리장치(40)로부터 데이터(DATA)를 수신할 수 있다. 데이터입출력회로(35)는 커맨드(CMD)를 토대로 리드동작 시 데이터(DATA)로부터 외부데이터(ED)를 생성할 수 있다. 데이터입출력회로(35)는 커맨드(CMD)를 토대로 리드동작 시 외부데이터(ED)를 외부장치(예를 들어 HOST)로 출력할 수 있다.
위크셀분석회로(36)는 메모리장치(40)로부터 제1 내지 제M 위크셀정보(WK_INF<1:M>)를 수신할 수 있다. 위크셀분석회로(36)는 제1 내지 제M 위크셀정보(WK_INF<1:M>)로부터 메모리장치(40)에 포함된 코어회로(43)의 불량을 관리할 수 있다. 위크셀분석회로(36)는 제1 내지 제M 위크셀정보(WK_INF<1:M>)로부터 메모리장치(40)에서 에러가 발생한 내부데이터(도 15의 ID)가 저장된 위치를 관리할 수 있다. 위크셀분석회로(36)는 메모리장치(40)에서 에러가 발생한 내부데이터(도 15의 ID)가 저장된 위치를 추가적으로 리프레쉬하거나 에러가 발생한 내부데이터(도 15의 ID)가 저장된 위치를 변경하는 리페어동작을 제어할 수 있다.
도 15는 반도체시스템(2)에 포함된 메모리장치(40)의 일 예에 따른 구성을 도시한 블럭도이다. 메모리장치(40)는 커맨드디코더(41), 내부어드레스생성회로(42), 코어회로(43), 에러정정회로(44), 에러체크스크럽엔진(45) 및 에러체크스크럽어드레스생성회로(46)를 포함할 수 있다.
커맨드디코더(41)는 커맨드(CMD)를 디코딩하여 라이트커맨드(WT), 리드커맨드(RD), 부트업커맨드(BOOT), 모드레지스터리드커맨드(MRR) 및 모드레지스터라이트커맨드(MRW)를 생성할 수 있다. 커맨드디코더(41)는 커맨드(CMD)를 디코딩하여 노멀동작인 라이트동작을 수행하기 위한 라이트커맨드(WT)를 생성할 수 있다. 커맨드디코더(41)는 커맨드(CMD)를 디코딩하여 노멀동작인 리드동작을 수행하기 위한 리드커맨드(RD)를 생성할 수 있다. 커맨드디코더(41)는 커맨드(CMD)를 디코딩하여 부트업동작을 수행하기 위한 부트업커맨드(BOOT)를 생성할 수 있다. 커맨드디코더(41)는 커맨드(CMD)를 디코딩하여 모드레지스터리드동작을 수행하기 위한 모드레지스터리드커맨드(MRR)를 생성할 수 있다. 커맨드디코더(41)는 커맨드(CMD)를 디코딩하여 모드레지스터라이트동작을 수행하기 위한 모드레지스터라이트커맨드(MRW)를 생성할 수 있다.
내부어드레스생성회로(42)는 어드레스(ADD)를 디코딩하여 제1 내지 제M 내부어드레스(IADD<1:M>)를 생성할 수 있다. 내부어드레스생성회로(42)는 노멀동작인 라이트동작 및 리드동작 시 어드레스(ADD)를 디코딩하여 제1 내지 제M 내부어드레스(IADD<1:M>)를 생성할 수 있다.
코어회로(43)는 라이트커맨드(WT)가 입력될 때 제1 내지 제M 내부어드레스(IADD<1:M>)에 의해 선택되는 위치에 내부데이터(ID)를 저장할 수 있다. 코어회로(43)는 리드커맨드(RD)가 입력될 때 제1 내지 제M 내부어드레스(IADD<1:M>)에 의해 선택되는 위치에 저장된 내부데이터(ID)를 출력할 수 있다. 코어회로(43)는 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)에 의해 선택되는 위치에 저장된 내부데이터(ID)를 출력한 이후 에러가 정정된 내부데이터(ID)를 저장할 수 있다. 코어회로(43)는 도 4에 도시된 코어회로(23)와 동일한 구성으로 구현되어 동일한 동작을 수행하므로 구체적인 설명은 생략한다.
에러정정회로(44)는 라이트동작 시 데이터(DATA)에 포함된 에러를 정정하여 내부데이터(ID)를 생성할 수 있다. 에러정정회로(44)는 리드동작 시 내부데이터(ID)에 포함된 에러를 정정하여 데이터(DATA)를 생성할 수 있다. 에러정정회로(44)는 에러체크스크럽동작 시 내부데이터(ID)에 에러가 포함된 경우 에러정보신호(ER_INF)를 생성할 수 있다. 에러정정회로(44)는 에러체크스크럽동작 시 코어회로(43)에서 출력된 내부데이터(ID)에 포함된 에러를 정정하고, 에러가 정정된 내부데이터(ID)를 코어회로(43)로 출력할 수 있다. 에러정보신호(ER_INF)는 내부데이터(ID)에 대한 에러 정정 가능 정보를 포함할 수 있다. 예를 들어, 내부데이터(ID)에 1비트의 에러가 발생한 경우 에러가 정정가능한 경우이고, 내부데이터(ID)에 2비트 이상의 에러가 발생한 경우 에러가 정정불가능한 경우를 의미할 수 있다.
에러체크스크럽엔진(45)은 내부 카운터를 이용하여 노멀동작 중간에 에러체크스크럽제어신호(ECS)를 생성할 수 있다. 에러체크스크럽엔진(45)은 노멀동작 중 커맨드(CMD)가 에러체크스크럽동작을 수행하기 위한 로직레벨 조합으로 입력될 때 에러체크스크럽제어신호(ECS)를 생성할 수 있다. 에러체크스크럽엔진(45)은 에러체크스크럽동작 중 에러정보신호(ER_INF)가 입력될 때 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 저장할 수 있다. 에러체크스크럽엔진(45)은 모드레지스터리드커맨드(MRR)가 입력될 때 저장된 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 제1 내지 제M 위크셀정보(WK_INF<1:M>)로 출력할 수 있다. 제1 내지 제M 위크셀정보(WK_INF<1:M>)는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 포함하도록 구현되어 있지만, 내부데이터(ID)의 에러발생정보(예를 들어, 1비트 에러발생, 2비트 에러발생 정보 및 에러가 정정불가능한 정보)를 포함하도록 구현될 수 있다. 에러체크스크럽엔진(45)은 도 5에 도시된 에러체크스크럽엔진(25)과 동일한 구성으로 구현되어 동일한 동작을 수행하므로 구체적인 설명은 생략한다.
에러체크스크럽어드레스생성회로(46)는 에러체크스크럽제어신호(ECS)가 입력될 때 순차적으로 업카운팅되는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 생성할 수 있다. 에러체크스크럽어드레스생성회로(46)는 카운트리퀘스트신호(CRQ)가 입력될 때 카운팅된 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)로 출력할 수 있다. 에러체크스크럽어드레스생성회로(46)는 부트업커맨드(BOOT)가 입력될 때 제1 내지 제M 에러체크스크럽리줌정보(ECS_RSF<1:M>)를 수신할 수 있다. 에러체크스크럽어드레스생성회로(46)는 제1 내지 제M 에러체크스크럽리줌정보(ECS_RSF<1:M>)를 수신한 이후 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제M 에러체크스크럽리줌정보(ECS_RSF<1:M>)와 동일한 로직레벨 조합을 갖는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)로부터 순차적으로 업카운팅되는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 생성할 수 있다. 에러체크스크럽어드레스생성회로(46)는 모드레지스터라이트커맨드(MRW)가 입력될 때 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 토대로 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 생성할 수 있다. 에러체크스크럽어드레스생성회로(46)는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 1회 업카운팅하여 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)로 출력하도록 구현될 수 있다. 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 1회 업카운팅하는 동작은 이전에 에러체크스크럽동작이 수행된 위치가 아닌 다음위치에 대하여 에러체크스크럽동작을 수행하기 위함이다.
도 16은 메모리장치(40)에 포함된 에러체크스크럽어드레스생성회로(46)의 일 예에 따른 구성을 도시한 블럭도이다. 에러체크스크럽어드레스생성회로(46)는 제1 카운터(461), 제2 카운터(462) 및 제3 카운터(463)를 포함할 수 있다.
제1 카운터(461)는 에러체크스크럽제어신호(ECS)를 수신하여 순차적으로 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(461)는 에러체크스크럽제어신호(ECS)가 입력될 때 마다 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(461)는 에러체크스크럽제어신호(ECS)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(461)는 카운트리퀘스트신호(CRQ)가 입력될 때 카운팅된 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 제1 내지 제6 에러체크스크럽정보(ECS_INF<1:6>)로 출력할 수 있다. 제1 카운터(461)는 부트업커맨드(BOOT) 및 제1 내지 제6 에러체크스크럽리줌정보(ECS_RSF <1:6>)를 수신하여 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(461)는 부트업커맨드(BOOT)가 입력될 때 제1 내지 제6 에러체크스크럽리줌정보(ECS_RSF <1:6>)를 수신하고, 제1 내지 제6 에러체크스크럽리줌정보(ECS_RSF<1:6>)와 동일한 로직레벨 조합을 갖는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(461)는 부트업커맨드(BOOT)가 입력된 이후 에러체크스크럽제어신호(ECS)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 제1 내지 제6 에러체크스크럽리줌정보(ECS_RSF<1:6>)와 동일한 로직레벨 조합을 갖는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 순차적으로 업카운팅할 수 있다. 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)는 도 4에 도시된 제1 내지 제6 비트라인들(BL1 ~ BL6)을 선택하기 위한 비트로 설정될 수 있다.
제2 카운터(462)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)를 수신하여 순차적으로 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 입력될 때 마다 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462)는 카운트리퀘스트신호(CRQ)가 입력될 때 카운팅된 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)로 출력할 수 있다. 제2 카운터(462)는 부트업커맨드(BOOT) 및 제7 내지 제22 에러체크스크럽리줌정보(ECS_RSF<7:22>)를 수신하여 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462)는 부트업커맨드(BOOT)가 입력될 때 제7 내지 제22 에러체크스크럽리줌정보(ECS_RSF<7:22>)를 수신하고, 제7 내지 제22 에러체크스크럽리줌정보(ECS_RSF<7:22>)와 동일한 로직레벨 조합을 갖는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462)는 부트업커맨드(BOOT)가 입력된 이후 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 제7 내지 제22 에러체크스크럽리줌정보(ECS_RSF<7:22>)와 동일한 로직레벨 조합을 갖는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 순차적으로 업카운팅할 수 있다. 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)는 도 4에 도시된 제1 내지 제16 워드라인들(WL1 ~ WL6)을 선택하기 위한 비트로 설정될 수 있다.
제3 카운터(463)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)를 수신하여 순차적으로 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 입력될 때 마다 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463)는 카운트리퀘스트신호(CRQ)가 입력될 때 카운팅된 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)로 출력할 수 있다. 제3 카운터(463)는 부트업커맨드(BOOT) 및 제23 내지 제26 에러체크스크럽리줌정보(ECS_RSF<23:26>)를 수신하여 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463)는 부트업커맨드(BOOT)가 입력될 때 제23 내지 제26 에러체크스크럽리줌정보(ECS_RSF<23:26>)를 수신하고, 제23 내지 제26 C<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463)는 부트업커맨드(BOOT)가 입력된 이후 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 제23 내지 제26 에러체크스크럽리줌정보(ECS_RSF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 순차적으로 업카운팅할 수 있다. 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)는 도 4에 도시된 제1 내지 제4 뱅크들(261 ~ 264)을 선택하기 위한 비트로 설정될 수 있다.
한편, 도 16에 도시된 제1 내지 제26 에러체크스크럽어드레스(ECS_ADD<1:26>)는 26 비트로 구현되어 있지만 코어회로(43)의 구조에 따라 다양한 비트로 구현될 수 있다.
도 17은 메모리장치(40)에 포함된 에러체크스크럽어드레스생성회로(46)의 다른 예에 따른 에러체크스크럽어드레스생성회로(46a)의 구성을 도시한 블럭도이다. 에러체크스크럽어드레스생성회로(46a)는 제1 카운터(461a), 제2 카운터(462a), 제3 카운터(463a) 및 에러체크스크럽정보출력회로(464a)를 포함할 수 있다.
제1 카운터(461a)는 에러체크스크럽제어신호(ECS)를 수신하여 순차적으로 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(461a)는 에러체크스크럽제어신호(ECS)가 입력될 때 마다 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(461a)는 에러체크스크럽제어신호(ECS)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)는 도 4에 도시된 제1 내지 제6 비트라인들(BL1 ~ BL6)을 선택하기 위한 비트로 설정될 수 있다.
제2 카운터(462a)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)를 수신하여 순차적으로 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462a)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 입력될 때 마다 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462a)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)는 도 4에 도시된 제1 내지 제16 워드라인들(WL1 ~ WL6)을 선택하기 위한 비트로 설정될 수 있다.
제3 카운터(463a)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)를 수신하여 순차적으로 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463a)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 입력될 때 마다 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463a)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463a)는 부트업커맨드(BOOT) 및 모드레지스터라이트커맨드(MRW)를 수신하여 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463a)는 부트업커맨드(BOOT)가 입력될 때 모드레지스터라이트커맨드(MRW)의 입력횟수에 따라 초기 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. . 제3 카운터(463a)는 부트업커맨드(BOOT)가 입력된 이후 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 모드레지스터라이트커맨드(MRW)의 입력횟수에 따라 초기 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 순차적으로 업카운팅할 수 있다. 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)는 도 4에 도시된 제1 내지 제4 뱅크들(261 ~ 264)을 선택하기 위한 비트로 설정될 수 있다.
에러체크스크럽정보출력회로(464a)는 모드레지스터리드커맨드(MRR) 및 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 수신하여 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)로부터 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)를 생성할 수 있다. 에러체크스크럽정보출력회로(464a)는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)가 모두 카운팅되고 모드레지스터리드커맨드(MRR)가 입력될 때 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)로 출력할 수 있다.
한편, 도 17에 도시된 제1 내지 제26 에러체크스크럽어드레스(ECS_ADD<1:26>)는 26 비트로 구현되어 있지만 코어회로(43)의 구조에 따라 다양한 비트로 구현될 수 있다.
도 18은 에러체크스크럽어드레스생성회로(46a)에 포함된 에러체크스크럽정보출력회로(464a)의 일 예에 따른 구성을 도시한 블럭도이다. 에러체크스크럽정보출력회로(464a)는 전달제어신호생성회로(510) 및 래치회로(520)를 포함할 수 있다.
전달제어신호생성회로(510)는 낸드게이트(511) 및 인버터(512)로 구현될 수 있다.
전달제어신호생성회로(510)는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 토대로 전달제어신호(TCON)를 생성할 수 있다. 전달제어신호생성회로(510)는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)가 모두 로직하이레벨로 카운팅될 때 로직하이레벨의 전달제어신호(TCON)를 생성할 수 있다.
래치회로(520)는 인버터들(521,522,523,524,525,526,527,528)로 구현될 수 있다.
래치회로(520)는 전달제어신호(TCON)가 입력될 때 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 수신할 수 있다. 래치회로(520)는 전달제어신호(TCON)가 로직하이레벨로 입력될 때 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 수신하고, 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 래치할 수 있다. 래치회로(520)는 모드레지스터리드커맨드(MRR)가 입력될 때 래치된 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)로 출력할 수 있다. 래치회로(520)는 하나의 회로로 도시되어 있지만 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)와 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)의 비트수인 4개의 회로로 구현될 수 있다.
도 19는 메모리장치(40)에 포함된 에러체크스크럽어드레스생성회로(46)의 다른 예에 따른 에러체크스크럽어드레스생성회로(46b)의 구성을 도시한 블럭도이다. 에러체크스크럽어드레스생성회로(46b)는 제1 카운터(461b), 제2 카운터(462b), 제3 카운터(463b) 및 에러체크스크럽정보출력회로(464b)를 포함할 수 있다.
제1 카운터(461b)는 에러체크스크럽제어신호(ECS)를 수신하여 순차적으로 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(461b)는 에러체크스크럽제어신호(ECS)가 입력될 때 마다 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 카운터(461b)는 에러체크스크럽제어신호(ECS)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 생성할 수 있다. 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)는 도 4에 도시된 제1 내지 제6 비트라인들(BL1 ~ BL6)을 선택하기 위한 비트로 설정될 수 있다.
제2 카운터(462b)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)를 수신하여 순차적으로 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462b)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 입력될 때 마다 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462b)는 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462b)는 부트업커맨드(BOOT) 및 제7 내지 제22 에러체크스크럽리줌정보(ECS_RSF<7:22>)를 수신하여 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462b)는 부트업커맨드(BOOT)가 입력될 때 제7 내지 제22 에러체크스크럽리줌정보(ECS_RSF<7:22>)를 수신하고, 제7 내지 제22 에러체크스크럽리줌정보(ECS_RSF<7:22>)와 동일한 로직레벨 조합을 갖는 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 생성할 수 있다. 제2 카운터(462b)는 부트업커맨드(BOOT)가 입력된 이후 제6 에러체크스크럽어드레스(ECS_ADD<6>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 제7 내지 제22 에러체크스크럽리줌정보(ECS_RSF<7:22>)와 동일한 로직레벨 조합을 갖는 제7 내지 제2 에러체크스크럽어드레스(ECS_ADD<7:22>)를 순차적으로 업카운팅할 수 있다. 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)는 도 4에 도시된 제1 내지 제16 워드라인들(WL1 ~ WL6)을 선택하기 위한 비트로 설정될 수 있다.
제3 카운터(463a)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)를 수신하여 순차적으로 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463a)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 입력될 때 마다 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463a)는 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 업카운팅되는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463a)는 부트업커맨드(BOOT) 및 제23 내지 제26 에러체크스크럽리줌정보(ECS_RSF<23:26>)를 수신하여 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463a)는 부트업커맨드(BOOT)가 입력될 때 제23 내지 제26 에러체크스크럽리줌정보(ECS_RSF<23:26>)를 수신하고, 제23 내지 제26 에러체크스크럽리줌정보(ECS_RSF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 생성할 수 있다. 제3 카운터(463a)는 부트업커맨드(BOOT)가 입력된 이후 제22 에러체크스크럽어드레스(ECS_ADD<22>)가 로직하이레벨에서 로직로우레벨로 천이될 때 마다 제23 내지 제26 에러체크스크럽리줌정보(ECS_RSF<23:26>)와 동일한 로직레벨 조합을 갖는 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 순차적으로 업카운팅할 수 있다. 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)는 도 4에 도시된 제1 내지 제4 뱅크들(261 ~ 264)을 선택하기 위한 비트로 설정될 수 있다.
에러체크스크럽정보출력회로(464b)는 모드레지스터리드커맨드(MRR) 및 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 수신하여 제7 내지 제26 에러체크스크럽어드레스(ECS_ADD<7:26>)로부터 제7 내지 제26 에러체크스크럽정보(ECS_INF<7:26>)를 생성할 수 있다. 에러체크스크럽정보출력회로(464b)는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)가 모두 카운팅되고 모드레지스터리드커맨드(MRR)가 입력될 때 제7 내지 제26 에러체크스크럽어드레스(ECS_ADD<7:26>)를 제7 내지 제26 에러체크스크럽정보(ECS_INF<7:26>)로 출력할 수 있다.
한편, 도 19에 도시된 제1 내지 제26 에러체크스크럽어드레스(ECS_ADD<1:26>)는 26 비트로 구현되어 있지만 코어회로(43)의 구조에 따라 다양한 비트로 구현될 수 있다.
도 20은 에러체크스크럽어드레스생성회로(46b)에 포함된 에러체크스크럽정보출력회로(464b)의 일 예에 따른 구성을 도시한 블럭도이다. 에러체크스크럽정보출력회로(464b)는 전달제어신호생성회로(610), 제1 래치회로(620) 및 제2 래치회로(630)를 포함할 수 있다.
전달제어신호생성회로(610)는 낸드게이트(611) 및 인버터(612)로 구현될 수 있다.
전달제어신호생성회로(610)는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)를 토대로 전달제어신호(TCON)를 생성할 수 있다. 전달제어신호생성회로(610)는 제1 내지 제6 에러체크스크럽어드레스(ECS_ADD<1:6>)가 모두 로직하이레벨로 카운팅될 때 로직하이레벨의 전달제어신호(TCON)를 생성할 수 있다.
제1 래치회로(620)는 인버터들(621,622,623,624,625,626,627,628)로 구현될 수 있다.
제1 래치회로(620)는 전달제어신호(TCON)가 입력될 때 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 수신할 수 있다. 제1 래치회로(620)는 전달제어신호(TCON)가 로직하이레벨로 입력될 때 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 수신하고, 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 래치할 수 있다. 제1 래치회로(620)는 모드레지스터리드커맨드(MRR)가 입력될 때 래치된 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)를 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)로 출력할 수 있다. 제1 래치회로(620)는 하나의 회로로 도시되어 있지만 제7 내지 제22 에러체크스크럽어드레스(ECS_ADD<7:22>)와 제7 내지 제22 에러체크스크럽정보(ECS_INF<7:22>)의 비트수인 16개의 회로로 구현될 수 있다.
제2 래치회로(630)는 인버터들(631,632,633,634,635,636,637,638)로 구현될 수 있다.
제2 래치회로(630)는 전달제어신호(TCON)가 입력될 때 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 수신할 수 있다. 제2 래치회로(630)는 전달제어신호(TCON)가 로직하이레벨로 입력될 때 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 수신하고, 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 래치할 수 있다. 제2 래치회로(630)는 모드레지스터리드커맨드(MRR)가 입력될 때 래치된 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)를 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)로 출력할 수 있다. 제2 래치회로(630)는 하나의 회로로 도시되어 있지만 제23 내지 제26 에러체크스크럽어드레스(ECS_ADD<23:26>)와 제23 내지 제26 에러체크스크럽정보(ECS_INF<23:26>)의 비트수인 4개의 회로로 구현될 수 있다.
한편, 본 발명의 다른 실시예에 따른 반도체시스템(2)의 에러체크스크럽동작은 메모리장치(40)에서 에러체크스크럽정보를 컨트롤러(30)로 출력하여 저장하고, 저장된 에러체크스크럽정보로부터 에러체크스크럽동작을 수행하기 위한 위치정보인 에러체크스크럽저장어드레스를 메모리장치(40)로 출력할 뿐, 도 7 내지 도 9에서 설명한 반도체시스템(1)의 에러체크스크럽동작과 동일하므로 구체적인 설명은 생략한다.
도 21은 본 발명의 다른 실시예에 따른 에러체크스크럽동작방법을 설명하기 위한 플로챠트이다. 에러체크스크럽동작방법은 커맨드입력단계(S21), 에러체크스크럽어드레스카운팅단계(S22), 파워오프감지단계(S23), 에러체크스크럽정보출력 및 에러체크스크럽정보저장단계(S24), 부트업감지단계(S25), 에러체크스크럽저장어드레스출력단계(S26) 및 에러체크스크럽동작수행단계(S27)를 포함할 수 있다.
커맨드입력단계(S21)는 컨트롤러(30)의 커맨드생성회로(31)에서 메모리장치(40)의 에러체크스크럽동작을 수행하기 위한 커맨드(CMD)를 생성하는 단계로 설정될 수 있다. 커맨드입력단계(S21)에서 컨트롤러(30)의 커맨드생성회로(31)는 에러체크스크럽동작을 수행하기 위한 커맨드(CMD)를 메모리장치(40)로 출력할 수 있다. 커맨드입력단계(S21)에서 메모리장치(40)의 에러체크스크럽엔진(45)은 커맨드(CMD)를 디코딩하여 에러체크스크럽제어신호(ECS)를 생성할 수 있다.
에러체크스크럽어드레스카운팅단계(S22)는 에러체크스크럽동작을 수행하기 위한 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 순차적으로 카운팅하는 단계로 설정될 수 있다. 에러체크스크럽어드레스카운팅단계(S22)에서 메모리장치(40)의 에러체크스크럽어드레스생성회로(46)는 에러체크스크럽제어신호(ECS)가 입력될 때 마다 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 순차적으로 업카운팅할 수 있다.
파워오프감지단계(S23)는 컨트롤러(30)의 커맨드생성회로(31)에서 메모리장치(40)의 파워오프동작 전 카운트리퀘스트신호(CRQ)를 생성하는 단계로 설정될 수 있다. 파워오프감지단계(S23)에서 메모리장치(40)는 카운트리퀘스트신호(CRQ)를 수신할 수 있다.
에러체크스크럽정보출력 및 에러체크스크럽정보저장단계(S24)는 파워오프동작 시 메모리장치(40)에서 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 컨트롤러(30)로 출력하여 비휘발성장치인 저장회로(33)에 저장하는 단계로 설정될 수 있다. 에러체크스크럽정보출력 및 에러체크스크럽정보저장단계(S24)에서 메모리장치(40)의 에러체크스크럽어드레스생성회로(46)는 카운트리퀘스트신호(CRQ)가 입력될 때 카운팅된 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)로 출력할 수 있다. 에러체크스크럽정보출력 및 에러체크스크럽정보저장단계(S24)에서 컨트롤러(30)의 저장회로(33)는 파워오프동작 시 생성되는 파워오프제어신호(PWO)가 입력될 때 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 저장할 수 있다.
부트업감지단계(S25)는 컨트롤러(30)의 커맨드생성회로(31)에서 메모리장치(40)의 부트업동작을 수행하기 위한 커맨드(CMD)를 생성하는 단계로 설정될 수 있다. 부트업감지단계(S25)에서 메모리장치(40)의 커맨드디코더(41)는 커맨드(CMD)를 디코딩하여 부트업커맨드(BOOT)를 생성할 수 있다.
에러체크스크럽리줌정보출력단계(S26)는 부트업동작 시 저장된 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 제1 내지 제M 에러체크스크럽리줌정보(ECS_RSF<1:M>)로 출력하는 단계로 설정될 수 있다. 에러체크스크럽리줌정보출력단계(S26)에서 컨트롤러(30)의 저장회로(33)는 부트업동작 시 생성되는 부트업제어신호(BTC)가 입력될 때 저장된 제1 내지 제M 에러체크스크럽정보(ECS_INF<1:M>)를 제1 내지 제M 에러체크스크럽리줌정보(ECS_RSF<1:M>)로 출력할 수 있다. 에러체크스크럽리줌정보출력단계(S26)에서 메모리장치(40)의 에러체크스크럽어드레스생성회로(46)는 부트업커맨드(BOOT)가 입력될 때 제1 내지 제M 에러체크스크럽리줌정보(ECS_RSF<1:M>)를 수신할 수 있다.
에러체크스크럽동작수행단계(S27)는 제1 내지 제M 에러체크스크럽리줌정보(ECS_RSF<1:M>)를 토대로 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행하는 단계로 설정될 수 있다. 에러체크스크럽동작수행단계(S27)에서 컨트롤러(30)의 커맨드생성회로(31)는 메모리장치(40)의 에러체크스크럽동작을 수행하기 위한 커맨드(CMD)를 생성할 수 있다. 에러체크스크럽동작수행단계(S27)에서 메모리장치(40)의 에러체크스크럽엔진(45)은 커맨드(CMD)를 디코딩하여 에러체크스크럽제어신호(ECS)를 생성할 수 있다. 에러체크스크럽동작수행단계(S27)에서 메모리장치(40)의 에러체크스크럽어드레스생성회로(46)는 에러체크스크럽제어신호(ECS)가 입력될 때 부트업동작 시 수신된 제1 내지 제M 에러체크스크럽리줌정보(ECS_RSF<1:M>)와 동일한 로직레벨 조합을 갖는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)로부터 순차적으로 업카운팅되는 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)를 생성할 수 있다. 에러체크스크럽동작수행단계(S27)에서 코어회로(43)는 에러체크스크럽제어신호(ECS)가 입력될 때 제1 내지 제M 에러체크스크럽어드레스(ECS_ADD<1:M>)에 의해 선택되는 위치에 저장된 내부데이터(ID)를 출력한 이후 에러가 정정된 내부데이터(ID)를 저장할 수 있다.
이와 같은 본 발명의 에러체크스크럽동작방법은 파워오프동작 전 에러체크스크럽동작이 수행된 위치를 비휘발성장치에 저장하고, 부트업동작 시 저장된 에러체크스크럽동작이 수행된 위치를 메모리장치에 제공하여 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 특정 어드레스에만 에러체크스크럽동작이 반복되거나 일부 어드레스에 에러체크스크럽동작이 누락되는 경우를 방지할 수 있다. 또한, 에러체크스크럽동작방법은 에러체크스크럽동작 시 이전에 에러체크스크럽동작이 수행된 위치부터 에러체크스크럽동작을 수행함으로써 코어회로에 저장된 데이터의 신뢰성을 확보할 수 있다.
제1 실시예
1. 반도체시스템 10. 컨트롤러
11. 커맨드생성회로 12. 어드레스생성회로
13. 에러체크스크럽커맨드카운터 14. 저장회로
15. 데이터입출력회로 16. 위크셀분석회로
20. 반도체장치 21. 커맨드디코더
22. 내부어드레스생성회로 23. 코어회로
24. 에러정정회로 25. 에러체크스크럽엔진
26. 에러체크스크럽어드레스생성회로 231. 제1 뱅크
232. 제2 뱅크 233. 제3 뱅크
234. 제4 뱅크 251. 에러체크스크럽제어회로
252. 레지스터 261. 제1 카운터
262. 제2 카운터 263. 제3 카운터
261a. 제1 카운터 262a. 제2 카운터
263a. 제3 카운터 310. 전달제어신호생성회로
320. 시프팅회로
제2 실시예
2. 반도체시스템 30. 컨트롤러
31. 커맨드생성회로 32. 어드레스생성회로
33. 저장회로 34. 데이터입출력회로
35. 위크셀분석회로 40. 반도체장치
41. 커맨드디코더 42. 내부어드레스생성회로
43. 코어회로 44. 에러정정회로
45. 에러체크스크럽엔진 46. 에러체크스크럽어드레스생성회로
461. 제1 카운터 462. 제2 카운터
463. 제3 카운터 461a. 제1 카운터
262a. 제2 카운터 463a. 제3 카운터
464a. 에러체크스크럽정보출력회로 510. 전달제어신호생성회로
520. 래치회로 461b. 제1 카운터
262b. 제2 카운터 463b. 제3 카운터
464b. 에러체크스크럽정보출력회로 610. 전달제어신호생성회로
620. 제1 래치회로 630. 제2 래치회로

Claims (23)

  1. 에러체크스크럽동작 횟수를 카운팅하고, 상기 에러체크스크럽동작 횟수를 토대로 상기 에러체크스크럽동작이 수행될 어드레스정보를 포함하는 에러체크스크럽정보를 생성하는 컨트롤러; 및
    상기 에러체크스크럽정보에 의해 선택된 영역에 대하여 상기 에러체크스크럽동작을 수행하는 메모리장치를 포함하는 반도체시스템.
  2. 제 1 항에 있어서, 상기 컨트롤러는 파워오프동작 전 상기 에러체크스크럽동작 횟수를 저장하고, 부트업동작 시작 후, 저장된 상기 에러체크스크럽정보를 상기 메모리장치로 출력하는 반도체시스템.
  3. 제 1 항에 있어서, 상기 메모리장치는 부트업동작 시작 후, 상기 에러체크스크럽정보를 토대로 다수의 뱅크 중 선택되는 뱅크부터 상기 에러체크스크럽동작을 수행하는 반도체시스템.
  4. 제 1 항에 있어서, 상기 메모리장치는 부트업동작 시작 후, 상기 에러체크스크럽정보를 토대로 다수의 어드레스 중 선택되는 어드레스부터 상기 에러체크스크럽동작을 수행하는 반도체시스템.
  5. 제 1 항에 있어서, 상기 컨트롤러는
    커맨드를 토대로 상기 에러체크스크럽동작 횟수를 카운팅하고, 파워오프제어신호를 토대로 상기 에러체크스크럽동작 횟수를 저장회로에 저장하며, 부트업제어신호를 토대로 상기 저장회로로부터 수신된 상기 에러체크스크럽동작 횟수를 이용하여 상기 어드레스정보를 포함한 상기 에러체크스크럽정보를 생성하는 에러체크스크럽커맨드카운팅회로를 포함하는 반도체시스템.
  6. 제 5 항에 있어서, 상기 저장회로는 상기 컨트롤러의 내부 또는 외부에 위치하며, 상기 메모리장치의 파워오프시에도 저장된 상기 에러체크스크럽동작 횟수를 유지하는 반도체시스템.
  7. 제 1 항에 있어서, 상기 에러체크스크럽정보는 상기 에러체크스크럽동작 횟수와 상기 에러체크스크럽동작 횟수를 토대로 계산된 에러체크스크럽 동작이 시작될 어드레스 중 하나로 생성하는 반도체시스템
  8. 제 1 항에 있어서, 상기 메모리장치는
    상기 컨트롤러로부터 받은 커맨드를 디코딩하여 에러체크스크럽제어신호를 생성하는 에러체크스크럽엔진;
    부트업동작 시작 후, 상기 에러체크스크럽정보를 토대로 상기 에러체크스크럽동작을 위한 에러체크스크럽어드레스를 생성하고, 상기 에러체크스크럽제어신호를 입력받아 상기 에러체크스크럽어드레스를 순차적으로 증가시키는 에러체크스크럽어드레스생성회로; 및
    다수의 뱅크를 포함하고, 상기 다수의 뱅크들 각각은 상기 선택된 영역을 포함하며, 상기 에러체크스크럽제어신호 및 상기 에러체크스크럽어드레스를 토대로 상기 다수의 뱅크 중 선택되는 뱅크의 상기 선택된 영역에 대한 상기 에러체크스크럽동작을 수행하는 코어회로를 포함하는 반도체시스템.
  9. 제 8 항에 있어서,
    상기 코어회로는 상기 에러체크스크럽어드레스가 상기 뱅크를 선택하기 위한 뱅크어드레스만 포함할 경우 선택된 상기 뱅크의 첫 번째 로우어드레스에 대한 영역부터 상기 에러체크스크럽동작을 수행하고,
    상기 코어회로는 상기 에러체크스크럽어드레스가 상기 뱅크어드레스와 상기 로우어드레스만 포함할 경우 상기 뱅크 중 선택된 상기 로우어드레스의 첫 번째 컬럼어드레스에 대한 영역부터 상기 에러체크스크럽동작을 수행하는 반도체시스템.
  10. 제 1 항에 있어서, 상기 컨트롤러는
    모드레지스터리드동작 시 상기 메모리장치로부터 수신한 위크셀정보를 토대로, 상기 메모리장치에서 발생하는 불량을 관리하는 위크셀분석회로를 더 포함하는 반도체시스템.
  11. 제 10 항에 있어서 상기 메모리장치는
    상기 에러체크스크럽동작 시 로우어드레스에서 발생하는 불량횟수가 문턱값을 넘는 경우 특정 로우어드레스 및 에러발생정보를 상기 위크셀정보로 모드레지스터에 저장하는 상기 에러체크스크럽엔진을 포함하고,
    모드레지스터리드동작 시 상기 위크셀정보를 상기 컨트롤러로 전송하는 상기 모드레지스터를 더 포함하는 반도체시스템.
  12. 메모리장치로부터 에러체크스크럽정보를 수신하여 저장하며, 상기 에러체크스크럽정보를 토대로 에러체크스크럽동작이 수행될 어드레스정보를 포함하는 에러체크스크럽리줌정보를 생성하는 컨트롤러; 및
    커맨드를 토대로 상기 에러체크스크럽동작이 수행된 어드레스정보를 포함하는 상기 에러체크스크럽정보를 생성하며, 상기 에러체크스크럽리줌정보에 의해 선택된 영역부터 순차적으로 상기 에러체크스크럽동작을 수행하는 메모리장치를 포함하는 반도체시스템.
  13. 제 12 항에 있어서, 상기 컨트롤러는 파워오프동작 수행 전 상기 메모리장치에 카운트리퀘스트신호를 전송하여 상기 에러체크스크럽정보를 요청하고 상기 에러체크스크럽정보를 수신 받아 저장하며, 부트업동작 시작 후 상기 에러체크스크럽리줌정보를 상기 메모리장치로 출력하는 반도체시스템.
  14. 제 12 항에 있어서, 상기 메모리장치는 부트업동작 시작 후 상기 에러체크스크럽리줌정보를 토대로 다수의 뱅크 중 선택되는 뱅크부터 상기 에러체크스크럽동작을 수행하는 반도체시스템.
  15. 제 12 항에 있어서, 상기 컨트롤러는 상기 에러체크스크럽정보를 저장회로에 저장하고, 상기 저장회로는 상기 컨트롤러의 내부 또는 외부에 위치하며 상기 메모리장치의 파워오프동작 시에도 상기 에러체크스크럽정보를 유지하는 반도체시스템.
  16. 제 12 항에 있어서, 상기 메모리장치는
    상기 컨트롤러로부터 받은 커맨드를 디코딩하여 에러체크스크럽제어신호를 생성하는 에러체크스크럽엔진;
    상기 에러체크스크럽제어신호를 토대로 에러체크스크럽어드레스를 순차적으로 증가시켜 저장하고, 카운트리퀘스트 신호에 응답하여 상기 에러체크스크럽어드레스로부터 생성된 상기 에러체크스크럽정보를 상기 컨트롤러로 전송하며, 부트업동작 시작 후 상기 에러체크스크럽제어신호와 상기 에러체크스크럽리줌정보를 토대로 상기 에러체크스크럽동작을 위한 에러체크스크럽어드레스를 생성하고, 상기 에러체크스크럽제어신호를 입력 받아 상기 에러체크스크럽어드레스를 순차적으로 증가시키는 에러체크스크럽어드레스생성회로; 및
    다수의 뱅크를 포함하고, 상기 다수의 뱅크들 각각은 상기 선택된 영역을 포함하며, 상기 에러체크스크럽제어신호 및 상기 에러체크스크럽어드레스를 토대로 상기 다수의 뱅크 중 선택되는 뱅크의 상기 선택된 영역에 대한 상기 에러체크스크럽동작을 수행하는 코어회로를 포함하는 반도체시스템.
  17. 제 16 항에 있어서, 상기 에러체크스크럽어드레스생성회로는
    상기 에러체크스크럽리줌정보를 토대로 생성되는 상기 에러체크스크럽어드레스가 로우어드레스를 포함하지 않은 경우 상기 에러체크스크럽어드레스를 상기 선택된 뱅크의 첫 번째 로우어드레스로 생성하고, 상기 에러체크스크럽어드레스가 컬럼어드레스를 포함하지 않은 경우 상기 에러체크스크럽어드레스를 상기 선택된 뱅크 및 선택된 로우어드레스의 첫 번째 컬럼어드레스로 생성하는 반도체시스템.
  18. 메모리장치에서 에러체크스크럽동작을 수행하고 파워오프동작 종료 전 상기 에러체크스크럽동작이 수행된 어드레스정보를 포함하는 에러체크스크럽정보를 컨트롤러에 저장하며,
    부트업동작 시작 후 상기 에러체크스크럽정보를 토대로 상기 메모리장치에서 선택된 영역부터 상기 에러체크스크럽동작을 수행하는 에러체크스크럽동작방법.
  19. 제 18 항에 있어서, 상기 메모리장치는 상기 부트업동작 시작 후 상기 에러체크스크럽정보를 토대로 에러체크스크럽어드레스를 생성하고 상기 에러체크스크럽어드레스를 순차적으로 증가시키면서 상기 에러체크스크럽동작을 수행하는 에러체크스크럽동작방법.
  20. 제 18 항에 있어서, 상기 컨트롤러는 상기 에러체크스크럽정보를 에러체크스크럽동작 횟수와 상기 에러체크스크럽동작 횟수를 토대로 계산된 에러체크스크럽동작이 시작될 어드레스 중 하나로 생성하는 에러체크스크럽동작방법.
  21. 메모리장치에서 에러체크스크럽동작을 수행하고 파워오프동작 종료 전 상기 에러체크스크럽동작이 수행된 어드레스정보를 포함하는 에러체크스크럽정보를 컨트롤러에 전송하며,
    상기 컨트롤러에 저장된 상기 에러체크스크럽정보를 토대로 생성되는 에러체크스크럽리줌정보를 상기 메모리장치로 출력하고 상기 에러체크스크럽리줌정보를 토대로 상기 메모리장치의 부트업동작 완료 후 상기 에러체크스크럽동작을 수행하는 에러체크스크럽동작방법.
  22. 제 21 항에 있어서, 상기 에러체크스크럽리줌정보를 토대로 생성되는 에러체크스크럽어드레스가 로우어드레스를 포함하지 않은 경우, 상기 에러체크스크럽어드레스를 상기 선택된 뱅크의 첫 번째 로우어드레스로 생성하고, 상기 에러체크스크럽어드레스가 컬럼어드레스를 포함하지 않은 경우, 에러체크스크럽어드레스를 상기 선택된 뱅크 및 선택된 로우어드레스의 첫 번째 컬럼어드레스로 생성하는 에러체크스크럽동작방법.
  23. 제 21 항에 있어서, 상기 메모리장치는 상기 컨트롤러로부터 수신된 카운트리퀘스트 신호에 응답하여 상기 에러체크스크럽정보를 상기 컨트롤러로 전송하고, 상기 에러체크스크럽동작 시 상기 에러체크스크럽리줌정보를 토대로 적어도 하나 이상의 뱅크 중 선택되는 뱅크에 대한 상기 에러체크스크럽동작을 순차적으로 수행하는 에러체크스크럽동작방법.
KR1020210160809A 2021-11-19 2021-11-19 에러체크 및 스크럽동작방법 및 이를 이용한 반도체시스템 KR20230073915A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210160809A KR20230073915A (ko) 2021-11-19 2021-11-19 에러체크 및 스크럽동작방법 및 이를 이용한 반도체시스템
US17/707,656 US11907062B2 (en) 2021-11-19 2022-03-29 Error check scrub operation method and semiconductor system using the same
CN202210785987.7A CN116153378A (zh) 2021-11-19 2022-07-04 错误检查刷写操作方法和使用该方法的半导体系统
DE102022208557.4A DE102022208557A1 (de) 2021-11-19 2022-08-18 Verfahren zur fehlerprüfungs- und bereinigungsoperation und halbleitersystem, das dasselbe verwendet

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210160809A KR20230073915A (ko) 2021-11-19 2021-11-19 에러체크 및 스크럽동작방법 및 이를 이용한 반도체시스템

Publications (1)

Publication Number Publication Date
KR20230073915A true KR20230073915A (ko) 2023-05-26

Family

ID=86227378

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210160809A KR20230073915A (ko) 2021-11-19 2021-11-19 에러체크 및 스크럽동작방법 및 이를 이용한 반도체시스템

Country Status (4)

Country Link
US (1) US11907062B2 (ko)
KR (1) KR20230073915A (ko)
CN (1) CN116153378A (ko)
DE (1) DE102022208557A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12014797B2 (en) 2022-04-27 2024-06-18 Micron Technology, Inc. Apparatuses, systems, and methods for managing metadata storage at a memory
US12019513B2 (en) * 2022-04-27 2024-06-25 Micron Technology, Inc. Apparatuses, systems, and methods for per row error scrub information

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170639B2 (en) * 2013-04-09 2015-10-27 International Business Machines Corporation Method and apparatus for mitigating effects of memory scrub operations on idle time power savings modes
WO2017003440A1 (en) * 2015-06-30 2017-01-05 Hewlett-Packard Development Company, L.P. Patrol scrub periods based on power status
US10127101B2 (en) * 2015-08-28 2018-11-13 Intel Corporation Memory device error check and scrub mode and error transparency
US10628248B2 (en) * 2016-03-15 2020-04-21 International Business Machines Corporation Autonomous dram scrub and error counting
KR20180009076A (ko) 2016-07-18 2018-01-26 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
KR20180060084A (ko) * 2016-11-28 2018-06-07 삼성전자주식회사 반도체 메모리 장치의 스크러빙 컨트롤러, 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법
KR20180106494A (ko) 2017-03-20 2018-10-01 에스케이하이닉스 주식회사 반도체장치
US11074126B2 (en) 2018-07-12 2021-07-27 Micron Technology, Inc. Methods for error count reporting with scaled error count information, and memory devices employing the same
US11221910B2 (en) * 2018-07-24 2022-01-11 Micron Technology, Inc. Media scrubber in memory system
KR20220060156A (ko) * 2020-11-04 2022-05-11 삼성전자주식회사 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법
US11626182B2 (en) * 2021-08-04 2023-04-11 Micron Technology, Inc. Selective power-on scrub of memory units

Also Published As

Publication number Publication date
US11907062B2 (en) 2024-02-20
US20230161665A1 (en) 2023-05-25
CN116153378A (zh) 2023-05-23
DE102022208557A1 (de) 2023-05-25

Similar Documents

Publication Publication Date Title
US11164651B2 (en) Semiconductor devices and semiconductor systems including the same
KR102393427B1 (ko) 반도체장치 및 반도체시스템
US10572341B2 (en) Semiconductor devices
US11088710B2 (en) Memory controllers and memory systems including the same
US8347183B2 (en) Flash memory device using ECC algorithm and method of operating the same
KR20230073915A (ko) 에러체크 및 스크럽동작방법 및 이를 이용한 반도체시스템
US11249843B2 (en) Semiconductor devices and semiconductor systems including the same
US11354189B2 (en) Semiconductor devices and semiconductor systems including the same
US10802759B2 (en) Memory system including memory device and memory controller, and operating method thereof
US11681458B2 (en) Memory device and method reading data
US20170344422A1 (en) Semiconductor devices and semiconductor systems
US11797215B2 (en) Memory device and memory system performing error check and scrub operation
KR102638789B1 (ko) 테스트방법 및 이를 이용한 반도체시스템
US11373699B2 (en) Address and command generation circuit, and semiconductor system
TWI748507B (zh) 資料存取系統及操作資料存取系統的方法
KR20170143084A (ko) 반도체장치 및 반도체시스템
KR20210070138A (ko) 반도체장치
US11475971B1 (en) Semiconductor device and semiconductor system for testing error correction circuit
US11921578B2 (en) Error correction methods and semiconductor devices and semiconductor systems using the error correction methods and the semiconductor devices
US20230386598A1 (en) Methods for real-time repairing of memory failures caused during operations, memory systems performing repairing methods, and data processing systems including repairing memory systems
US20230282300A1 (en) Semiconductor device and semiconductor system
US12007834B2 (en) Semiconductor device
US20140136910A1 (en) Data communication apparatus and control method
JP4397699B2 (ja) 半導体集積回路
CN116069548A (zh) 存储器装置、存储器模块和存储器控制器的操作方法