KR20240084157A - 메모리 장치 및 메모리 장치의 동작 방법 - Google Patents

메모리 장치 및 메모리 장치의 동작 방법 Download PDF

Info

Publication number
KR20240084157A
KR20240084157A KR1020220168666A KR20220168666A KR20240084157A KR 20240084157 A KR20240084157 A KR 20240084157A KR 1020220168666 A KR1020220168666 A KR 1020220168666A KR 20220168666 A KR20220168666 A KR 20220168666A KR 20240084157 A KR20240084157 A KR 20240084157A
Authority
KR
South Korea
Prior art keywords
row
rows
row address
address
damage
Prior art date
Application number
KR1020220168666A
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 KR1020220168666A priority Critical patent/KR20240084157A/ko
Priority to CN202310884079.8A priority patent/CN118155700A/zh
Priority to US18/232,940 priority patent/US20240185904A1/en
Publication of KR20240084157A publication Critical patent/KR20240084157A/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40603Arbitration, priority and concurrent access to memory cells for read/write or refresh operations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/401Indexing scheme relating to cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C2211/406Refreshing of dynamic cells
    • G11C2211/4062Parity or ECC in refresh operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)

Abstract

일 실시예에 따른 메모리 장치는 복수의 행을 포함하는 메모리 셀 어레이, 복수의 행 각각으로부터 리드된 데이터의 에러를 정정한 횟수에 기초하여 복수의 행 각각에 대한 헬스 레벨을 결정하는 ECC 엔진, 복수의 행 각각에 대한 액세스 횟수 및 헬스 레벨에 기초하여 리프레시를 수행할 희생 행 어드레스를 결정하는, 제어 로직, 및 희생 행 어드레스에 대응하는 행에 대한 리프레시를 수행하는 리프레시 제어 회로를 포함한다.

Description

메모리 장치 및 메모리 장치의 동작 방법{MEMORY DEVICE AND OPERATING METHOD THEREOF}
본 개시는 메모리 장치 및 메모리 장치의 동작 방법에 관한 것이다.
고성능 전자 시스템에 널리 사용되고 있는 메모리 장치는 그 집적도 및 속도가 증가하고 있으며, 메모리 장치의 제조 공정 또한 미세화되고 있다. 메모리 장치 내 행들 사이의 간격이 점점 좁아지게 되면서, DRAM(Dynamic Random Access Memory) 등의 메모리 장치에서 특정 메모리 셀들의 액세스 빈도가 증가하는 경우, 액세스된 셀에 인접한 메모리 셀들이 열화(degradation)되어 메모리 셀 내의 전하가 받는 영향은 증가한다. 따라서, 메모리 장치의 데이터 신뢰성이 낮아지게 된다. 한편, 공정 상의 차이로 인해 메모리 셀들이 열화되는 정도는 메모리 셀마다 상이할 수 있다.
본 개시에 따른 일 실시예는 행 해머 현상을 완화시키는 메모리 장치 및 메모리 장치의 동작 방법을 제공하고자 한다.
본 개시에 따른 일 실시예는 데이터 신뢰성이 향상된 메모리 장치 및 메모리 장치의 동작 방법을 제공하고자 한다.
일 실시예에 따른 메모리 장치는, 복수의 행을 포함하는 메모리 셀 어레이, 복수의 행 각각으로부터 리드된 데이터의 에러를 정정한 횟수에 기초하여 복수의 행 각각에 대한 헬스 레벨을 결정하는 ECC 엔진, 복수의 행 각각에 대한 액세스 횟수 및 헬스 레벨에 기초하여 리프레시를 수행할 희생 행 어드레스를 결정하는, 제어 로직, 및 희생 행 어드레스에 대응하는 행에 대한 리프레시를 수행하는 리프레시 제어 회로를 포함한다.
어떤 실시예에서, 제어 로직은, 복수의 행 각각의 행 어드레스에 대한 액세스 횟수를 카운팅하는 액세스 카운터, 및 행 어드레스 및 행 어드레스에 대한 액세스 횟수를 포함하는 액세스 데이터를 저장하는 레지스터를 포함할 수 있다.
어떤 실시예에서, 제어 로직은, 복수의 행 각각의 행 어드레스에 대한 액세스 횟수를 카운팅하는 액세스 카운터를 포함하고, 행 어드레스 및 행 어드레스에 대한 액세스 횟수를 포함하는 액세스 데이터는 메모리 셀 어레이 내의 메모리 셀에 저장될 수 있다.
어떤 실시예에서, ECC 엔진은, 메모리 셀 어레이에 라이트될 라이트 데이터와 관련된 패리티 비트를 생성하고, 라이트 데이터 및 패리티 비트를 메모리 셀 어레이에 저장하는 ECC 인코딩 회로, 메모리 셀 어레이로부터 리드된 리드 데이터 및 패리티 비트를 사용하여 리드 데이터 내 에러를 정정하면서 에러 발생 신호를 생성하는 ECC 디코딩 회로, 및 에러 발생 신호를 카운팅하여 복수의 행 각각에 대한 에러 발생 횟수를 결정하고, 에러 발생 횟수와 미리 설정된 임계값을 비교하여 복수의 행 각각에 대한 헬스 레벨을 결정하는 헬스 레벨 생성기를 포함할 수 있다.
어떤 실시예에서, 복수의 행 중 제1 행에 대한 제1 에러 발생 횟수가 복수의 행 중 제2 행에 대한 제2 에러 발생 횟수보다 많은 경우, 제1 행의 헬스 레벨은 제2 행의 헬스 레벨보다 높을 수 있다.
어떤 실시예에서, 제어 로직은, 복수의 행 중 제1 행과 인접하여 위치된 2개의 행에 대한 액세스 횟수를 더한 값인 제1 행의 피해 횟수를 계산하고, 제1 행에 대한 헬스 레벨 및 제1 행의 피해 횟수를 곱하여 제1 행의 피해 정도를 계산할 수 있다.
어떤 실시예에서, 제어 로직은 복수의 행 중 미리 설정된 기준 이상의 피해 정도를 가지는 행의 행 어드레스를 희생 행 어드레스로서 결정할 수 있다.
어떤 실시예에서, 제어 로직은 피해 정도가 가장 큰 행의 행 어드레스를 희생 행 어드레스로서 결정할 수 있다.
어떤 실시예에서, 제어 로직은, 복수의 행 각각에 대한 액세스 횟수와 복수의 행 각각에 대한 헬스 레벨을 곱하여 복수의 행 각각에 대한 가중 액세스 횟수를 계산하고, 복수의 행 중 제1 행에 인접한 두 행의 가중 액세스 횟수를 더하여, 제1 행의 피해 정도를 계산할 수 있다.
일 실시예에 따른 메모리 시스템은 명령 및 어드레스를 제공하는 메모리 컨트롤러, 및 복수의 행을 포함하는 메모리 셀 어레이를 포함하고, 명령 및 어드레스에 의한 복수의 행 각각에 대한 액세스 횟수 및 복수의 행의 헬스 레벨을 곱한 값에 기초하여 리프레시를 수행할 희생 행 어드레스를 결정하고, 희생 행 어드레스에 대응하는 행에 대한 리프레시를 수행하는 메모리 장치를 포함한다.
어떤 실시예에서, 메모리 장치는, 복수의 행 각각으로부터 리드된 데이터의 에러를 정정한 횟수에 기초하여 복수의 행 각각에 대한 헬스 레벨을 결정하고, 미리 설정된 일정 레벨을 초과하는 헬스 레벨을 가지는 행에 대해 메모리 컨트롤러가 액세스하지 못하도록 설정할 수 있다.
어떤 실시예에서, 메모리 장치는, 복수의 행 중 제1 행과 인접하여 위치된 2개의 행에 대한 액세스 횟수를 더한 값인 제1 행의 피해 횟수를 계산하고, 제1 행에 대한 헬스 레벨 및 제1 행의 피해 횟수를 곱하여 제1 행의 피해 정도를 계산하고, 피해 정도에 기초하여 희생 행 어드레스를 결정할 수 있다.
어떤 실시예에서, 메모리 장치는, 복수의 행 각각에 대한 액세스 횟수와 복수의 행 각각에 대한 헬스 레벨을 곱하여 복수의 행 각각에 대한 가중 액세스 횟수를 계산하고, 복수의 행 중 제1 행에 인접한 두 행의 가중 액세스 횟수를 더하여 제1 행의 피해 정도를 계산하고, 피해 정도에 기초하여 희생 행 어드레스를 결정할 수 있다.
일 실시예에 따른 메모리 장치의 동작 방법은, 복수의 행을 포함하는 메모리 셀 어레이에 대해, 복수의 행 각각으로부터 리드된 데이터의 에러를 정정한 횟수에 기초하여 복수의 행 각각에 대한 헬스 레벨을 포함하는 헬스 데이터를 생성하는 단계, 복수의 행 각각에 대한 액세스 횟수 및 헬스 데이터에 기초하여 리프레시를 수행할 희생 행 어드레스를 결정하는 단계, 및 희생 행 어드레스를 리프레시하는 단계를 포함한다.
어떤 실시예에서, 헬스 데이터를 생성하는 단계는, 복수의 행 각각으로부터 리드된 리드 데이터 및 패리티 데이터에 기초하여 리드 데이터 내 에러를 정정하면서 에러 발생 신호를 생성하는 ECC 동작을 수행하는 단계, 에러가 정정된 행의 행 어드레스 및 행 어드레스에 대해 에러가 정정된 횟수를 포함하는 에러 데이터를 생성하는 단계, 및 에러 데이터 및 미리 설정된 임계값을 비교하여 복수의 행 각각의 행 어드레스에 대한 헬스 레벨을 결정하는 단계를 포함할 수 있다.
어떤 실시예에서, 희생 행 어드레스를 결정하는 단계는, 복수의 행 각각에 대해 피해 횟수를 계산하는 단계, 복수의 행 각각에 대한 헬스 레벨 및 복수의 행 각각에 대한 피해 횟수를 곱하여 복수의 행 각각에 대한 피해 정도를 계산하는 단계, 및 복수의 행 각각에 대한 피해 정도에 기초하여 희생 행 어드레스를 결정하는 단계를 포함할 수 있다.
어떤 실시예에서, 피해 횟수를 계산하는 단계는, 복수의 행 중 제1 행과 인접하여 위치된 2개의 행에 대한 액세스 횟수를 더하여 제1 행의 피해 횟수를 계산하는 단계를 포함할 수 있다.
어떤 실시예에서, 희생 행 어드레스를 결정하는 단계는, 복수의 행 각각에 대한 액세스 횟수 및 복수의 행 각각에 대한 헬스 레벨에 기초하여 복수의 행 각각에 대한 가중 액세스 횟수를 계산하는 단계, 복수의 행 각각에 대한 가중 액세스 횟수에 기초하여 복수의 행 각각에 대한 피해 정도를 계산하는 단계, 및 복수의 행 각각에 대한 피해 정도에 기초하여 희생 행 어드레스를 결정하는 단계를 포함할 수 있다.
어떤 실시예에서, 피해 정도를 계산하는 단계는, 복수의 행 중 제1 행에 인접하여 위치된 2개의 행에 대한 가중 액세스 횟수를 더하여 제1 행의 피해 정도를 계산하는 단계를 포함할 수 있다.
어떤 실시예에서, 복수의 행 각각에 대한 피해 정도에 기초하여 희생 행 어드레스를 결정하는 단계는, 복수의 행 각각에 대한 피해 정도에 기초하여 피해 정도가 가장 큰 행의 행 어드레스를 희생 행 어드레스로서 결정하는 단계를 더 포함할 수 있다.
도 1은 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 일 실시예에 따른 메모리 장치의 한 예를 나타내는 블록도이다.
도 3은 일 실시예에 따른 행-해머 유닛을 나타낸 도면이다.
도 4는 일 실시예에 따른 ECC 엔진을 설명하기 위한 블록도이다.
도 5는 일 실시예에 따른 액세스 데이터 및 헬스 데이터를 나타낸 예시적인 도면이다.
도 6은 일 실시예에 따른 메모리 장치의 동작 방법을 나타내는 흐름도이다.
도 7은 일 실시예에 따른 헬스 데이터를 생성하는 방법을 나타낸 흐름도이다.
도 8은 일 실시예에 따른 희생 행 어드레스를 결정하는 방법을 나타낸 흐름도이다.
도 9는 도 8의 희생 행 어드레스를 결정하는 방법에 따른 액세스 데이터 및 헬스 데이터를 나타낸 예시적인 도면이다.
도 10은 또 다른 실시예에 따른 희생 행 어드레스를 결정하는 방법을 나타낸 흐름도이다.
도 11은 도 10의 희생 행 결정 방법에 따른 액세스 데이터 및 헬스 데이터를 나타낸 예시적인 도면이다.
도 12는 일 실시예에 따른 컴퓨터 장치를 나타내는 예시 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.
또한, 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다. 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소를 설명하는데 사용될 수 있지만, 구성요소는 이러한 용어에 의해 한정되지는 않는다. 이들 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다.
도 1은 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 1을 참고하면, 메모리 시스템(100)은 메모리 장치(110) 및 메모리 컨트롤러(120)를 포함할 수 있다. 어떤 실시예에서, 메모리 장치(110)와 메모리 컨트롤러(120)는 메모리 인터페이스를 통해 연결되어 메모리 인터페이스를 통해 신호를 주고받을 수 있다.
메모리 컨트롤러(120)는 메모리 장치(110)로 신호를 제공하여 메모리 장치(110)의 메모리 동작을 제어한다. 신호는 명령(CMD)과 어드레스(ADDR)를 포함할 수 있다. 어떤 실시예에서, 메모리 컨트롤러(120)는 명령(CMD)과 어드레스(ADDR)를 메모리 장치(110)로 제공하여 메모리 셀 어레이(111)에 액세스하고 읽기 또는 쓰기 등의 메모리 동작을 제어할 수 있다. 읽기 동작에 따라 메모리 셀 어레이(111)에서 메모리 컨트롤러(120)로 데이터가 전달되고, 쓰기 동작에 따라 메모리 컨트롤러(120)에서 메모리 셀 어레이(111)로 데이터가 전달될 수 있다.
명령(CMD)은 활성화(activate) 명령, 읽기/쓰기 명령 및 리프레시 명령을 포함할 수 있다. 어떤 실시예에서, 명령(CMD)은 프리차지(precharge) 명령을 더 포함할 수 있다. 활성화 명령은 메모리 셀 어레이(111)에 데이터를 쓰거나 메모리 셀 어레이(111)로부터 데이터를 읽기 위해 메모리 셀 어레이(111)의 대상 행을 활성화하는 명령일 수 있다. 읽기/쓰기 명령은 활성화된 행의 대상 메모리 셀에서 읽기 또는 쓰기 동작을 수행하기 위한 명령일 수 있다. 리프레시 명령은 메모리 셀 어레이(111)에서 리프레시 동작을 수행하기 위한 명령일 수 있다.
어떤 실시예에서, 메모리 컨트롤러(120)는 메모리 시스템(100) 외부의 호스트로부터의 요청에 따라 메모리 장치(110)에 액세스할 수 있다. 메모리 컨트롤러(120)는 다양한 프로토콜을 사용하여 호스트와 통신할 수 있다.
메모리 장치(110)는 반도체 소자를 기반으로 하는 저장 장치일 수 있다. 어떤 실시예에서, 메모리 장치(110)는 DRAM 장치를 포함할 수 있다. 어떤 실시예에서, 메모리 장치(110)는 리프레시 동작이 사용되는 다른 메모리 장치를 포함할 수 있다.
메모리 장치(110)는 메모리 컨트롤러(120)로부터 수신된 어드레스(ADDR) 및 명령(CMD)에 응답하여, 데이터 라인들을 통해 데이터(DATA)를 수신하거나 출력하거나, 리프레시 동작을 수행할 수 있다.
메모리 장치(110)는 메모리 셀 어레이(111), 제어 로직(113), ECC 엔진(115), 및 리프레시(refresh) 제어 회로(117)를 포함할 수 있다.
메모리 셀 어레이(111)는 복수의 행과 복수의 열에 의해 정의되는 복수의 메모리 셀을 포함할 수 있다. 어떤 실시예에서, 행은 워드라인에 의해 정의되고, 열은 비트라인에 의해 정의될 수 있다.
제어 로직(113)은 메모리 장치(200)의 동작을 전반적으로 제어할 수 있다. 제어 로직(113)은 행-해머(row-hammer, RH) 유닛(114)을 포함할 수 있다.
행-해머 유닛(114)은 메모리 컨트롤러(120)의 리프레시 명령에 대응하여, 타겟 리프레시 동작 및 노멀 리프레시 동작 중 어느 하나를 수행할지 판단할 수 있다.
또한, 행-해머 유닛(114)은 타겟 리프레시 동작의 대상이 되는 희생 행 어드레스를 결정할 수 있다. 구체적으로, 행-해머 유닛(114)은 복수의 행 중에서 공격 행(aggressor row)을 검출하고, 공격 행의 행 어드레스("공격 행 어드레스"라 한다)에 기초해서 리프레시될 희생 행(victim row)의 행 어드레스("희생 행 어드레스"라 한다)를 결정하고, 희생 행 어드레스를 리프레시 제어 회로(117)에 출력할 수 있다. 어떤 실시예에서, 공격 행은 로해머 공격 행이고, 희생 행은 로해머 케어의 대상이 되는 행일 수 있다.
ECC 엔진(115)은 메모리 셀 어레이(111)로부터 리드된 리드 데이터의 에러를 정정할 수 있다. 구체적으로, ECC 엔진(115)은 제어 로직(113)의 제어에 따라 메모리 셀 어레이(111)로부터 리드된 리드 데이터에 대한 에러를 검출하여 에러 발생 신호를 생성하고, 에러를 정정하여 에러가 정정된 리드 데이터를 출력할 수 있다. 또한, ECC 엔진(115)은 제어 로직(113)의 제어에 따라 메모리 셀 어레이(300)에 라이트될 라이트 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있고, 생성된 패리티 비트들은 라이트 데이터와 함께 메모리 셀 어레이(111)에 라이트될 수 있다.
ECC 엔진(115)은 미리 결정된 방식에 따라 스크러빙 동작, 즉 ECS(Error Check and Scrub) 동작을 수행할 수도 있다. 구체적으로, ECC 엔진(115)은 수신된 어드레스에 대응하는 페이지부터 순차적으로 메모리 셀 어레이(111)로부터 데이터를 리드하고, 리드된 데이터의 에러를 검출하여 에러 발생 신호를 생성하고, 에러를 정정하여 에러가 정정된 데이터를 메모리 셀 어레이(111)에 저장할 수 있다. 어떤 실시예에서, 미리 결정된 방식은, 수신된 어드레스로부터 메모리 셀 어레이(111) 내에서 카운트-업 하면서 순방향으로 스크러빙이 진행되는 방식일 수 있다. 어떤 실시예에서, 미리 결정된 방식은, 수신된 어드레스부터 메모리 셀 어레이(111) 내에서 카운트-다운 하면서 역방향으로 스크러빙이 진행되는 방식일 수 있다. 어떤 실시예에서, 미리 결정된 방식은, 수신된 어드레스로부터 메모리 셀 어레이(111) 내에서 랜덤하게 카운트-업 함으로써 스크러빙이 진행되는 방식일 수 있다. 어떤 실시예에서, 미리 결정된 방식은 특정 어드레스에 대응하는 페이지에서 스크러빙 동작을 중단한 이후에 다음 어드레스부터 스크러빙 동작이 재개되는 방식일 수 있다. ECC 엔진(115)은 주기적으로 ECS 동작을 수행할 수 있다.
ECC 엔진(115)은 에러 검출 시 생성한 에러 발생 신호에 기초하여 에러 정정된 어드레스 및 해당 어드레스에 대해 에러 정정된 횟수를 포함하는 에러 데이터를 생성할 수 있다. 에러 데이터는 ECC 엔진(115)이 ECC 동작을 수행하거나, ECS 동작을 수행함에 따라 업데이트될 수 있다.
어떤 실시예에서, ECC 엔진(115)은 에러 데이터에 기초하여 각 행 어드레스의 헬스 레벨(health level)을 결정할 수 있다. 헬스 레벨은 행의 체력(health)을 상대적으로 나타낸 레벨일 수 있다. 행의 체력은, 임의의 행이 메모리 컨트롤러(120)에 의해 집중적으로 액세스되어 액티브 및 프리차지된 경우에, 인접하여 위치된 행들 사이의 커플링에 의해 데이터가 열화(degradation)되는 정도를 나타내는 지표일 수 있다. 즉, 헬스 레벨은 임의의 행이 공격당한 경우에, 해당 행의 인접 행에 연결된 메모리 셀의 전하가 받는 영향에 대해 버틸 수 있는 저항력을 상대적으로 나타낸 레벨일 수 있다.
어떤 실시예에서, ECC 엔진(115)은 공격에 취약한 행일수록 더 높은 헬스 레벨을 할당할 수 있다. 예를 들어, 메모리 셀 어레이(111) 내 제1 행이 제1 헬스 레벨을 가지고, 제2 행이 제2 헬스 레벨을 가질 수 있다. 이 때, 제1 행에 인접한 행이 공격을 받은 경우에 제1 행에 연결된 메모리 셀은, 제2 행에 인접한 행이 공격을 받은 경우에 제2 행에 연결된 메모리 셀이 받는 영향에 비해 더 큰 영향을 받을 수 있다. 즉, 제2 행에 연결된 메모리 셀이 더 공격에 취약할 수 있다.
어떤 실시예에 있어서, ECC 엔진(115)은 임의의 행 어드레스에 대해 에러 정정된 횟수에 기초하여 헬스 레벨을 결정할 수 있다. 한편, 각 행 어드레스에 대한 헬스 레벨은 에러 데이터의 업데이트에 따라 변경될 수 있다.
어떤 실시예에서, 메모리 장치(110)는 일정 레벨 이상의 헬스 레벨을 가지는 행에 대해서는 메모리 컨트롤러(120)가 액세스하지 못하도록 설정할 수 있다. 예를 들면, 메모리 장치(110)가 제4 레벨 이상의 헬스 레벨을 가지는 행에 대해서 액세스하지 못하도록 설정하고, 제1 행이 제4 레벨의 헬스 레벨을 가질 수 있다. 이 경우에, 메모리 컨트롤러(120)로부터 제1 행을 지시하는 제1 어드레스(ADDR) 및 제1 행을 대상으로 하는 제1 명령(CMD)을 수신하면, 메모리 장치(110)는 수신한 제1 명령(CMD)을 수행하지 않을 수 있다. 또 다른 실시예에서, 일정 레벨 이상의 헬스 레벨을 가지는 행에 대한 액세스 명령이 메모리 컨트롤러(120)로부터 수신될 경우, 메모리 장치(110)는 메모리 컨트롤러(120)가 상기 일정 레벨 이상의 헬스 레벨을 가지는 행 대신, 미리 설정된 다른 예비용 행에 액세스하도록 설정할 수 있다. 예를 들어, 메모리 장치(110)는 메모리 컨트롤러(120)로부터 제4 레벨 이상의 헬스 레벨을 가지는 제1 행에 대한 액세스 명령을 수신하는 경우에 제1 행 대신 제3 행에 액세스하도록 설정할 수 있다. 이 때, 제3 행은 일정 레벨 이상의 헬스 레벨을 가지는 행을 대신하기 위해 미리 설정되어 있는 예비용 행일 수 있다. 즉, 메모리 컨트롤러(120)로부터 제1 행을 지시하는 제1 어드레스(ADDR) 및 제1 행을 대상으로 하는 제1 명령(CMD)을 수신하면, 메모리 장치(110)는 제3 행에 대해 제1 명령(CMD)을 수행할 수 있다. 한편, 본 발명은 이에 한정되지 않으며, 예비용 행은 메모리 셀 어레이(111) 내의 임의의 영역 내에 위치하거나, 메모리 셀 어레이(111) 이외의 별개의 메모리 셀 어레이에 위치될 수도 있다.
한편, 메모리 장치(110)는 각 행에 대한 헬스 레벨을 포함하는 정보를 메모리 컨트롤러(120)에 전송할 수도 있다. 이 경우에, 메모리 컨트롤러(120)는 수신한 정보에 기초하여 일정 레벨 이상의 헬스 레벨을 가지는 행에 대해 액세스하지 않을 수 있다.
리프레시 제어 회로(117)는 제어 로직(113)의 제어에 따라 노멀 리프레시 동작 또는 타겟 리프레시 동작을 수행할 수 있다.
어떤 실시예에서, 행-해머 유닛(114)이 노멀 리프레시 동작을 수행하도록 결정하면, 리프레시 제어 회로(117)는 메모리 셀 어레이(111)의 복수의 행들을 순차적으로 리프레시 시킬 수 있다. 예를 들면, 노멀 리프레시는 메모리 장치(110)가 사용 중일 때 수행되는 오토 리프레시(auto-refresh)와 메모리 장치(110)가 유휴 상태일 때 수행되는 셀프 리프레시(self-refresh)를 포함할 수 있다.
어떤 실시예에서, 행-해머 유닛(114)이 타겟 리프레시 동작을 수행하도록 결정하면, 리프레시 제어 회로(117)는 타겟 행을 리프레시 시킬 수 있다. 예를 들어, 타겟 행은 행-해머 유닛(114)으로부터 전달받은 희생 행 어드레스에 대응하는 행일 수 있다.
도 2는 일 실시예에 따른 메모리 장치의 한 예를 나타내는 블록도이다.
도 2를 참고하면, 메모리 장치(200)는 메모리 셀 어레이(210), 센스 앰프(211), 제어 로직(220), 어드레스 버퍼(230), 행 디코더(250), 열 디코더(260), 입출력(input/output, I/O) 게이팅 회로(270), ECC 엔진(280), 데이터 I/O 버퍼(285) 및 리프레시 제어 회로(290)를 포함할 수 있다.
메모리 셀 어레이(210)는 복수의 메모리 셀(MC)을 포함할 수 있다. 어떤 실시예에서, 메모리 셀 어레이(210)는 복수의 메모리 뱅크(210a-210h)를 포함할 수 있다. 도 2에는 여덟 개의 메모리 뱅크(BANK0-BANK7)(210a-210h)가 도시되어 있지만, 메모리 뱅크의 개수는 이에 한정되지 않는다. 각 메모리 뱅크(210a-210h)는 복수의 행, 복수의 열 및 복수의 행과 복수의 열의 교차점에 배열되는 복수의 메모리 셀(MC)을 포함할 수 있다. 어떤 실시예에서, 복수의 행은 복수의 워드라인(WL)에 의해 정의되고, 복수의 열은 복수의 비트라인(BL)에 의해 정의될 수 있다.
제어 로직(220)은 명령 디코더(221) 및 행-해머 유닛(223)을 포함할 수 있다.
명령 디코더(221)는 메모리 장치(200)가 읽기 동작, 쓰기 동작 또는 리프레시 동작을 수행하도록 제어 신호를 생성할 수 있다. 명령 디코더(221)는 메모리 컨트롤러(예를 들면, 도 1의 120)로부터 수신되는 명령(CMD)을 디코딩하여 리프레시 명령(REF)을 생성할 수 있다.
행-해머 유닛(223)은 리프레시 명령에 응답하여 리프레시 제어 회로(290)가 리프레시 행 어드레스(REF_RA)를 생성하도록 제어할 수 있다. 행-해머 유닛(223)은 메모리 셀 어레이(210)에 대한 액세스 횟수 및 ECC 엔진(280)으로부터 전달받은 헬스 데이터(HD)에 기초하여 타겟 리프레시 동작을 수행할 희생 행 어드레스를 결정할 수 있다. 헬스 데이터(HD)는, 메모리 셀 어레이(210)의 각 행에 대응하는 헬스 레벨에 대한 정보를 포함할 수 있다. 어떤 실시예에서, 행-해머 유닛(223)은 가장 피해 정도가 큰 행 어드레스를 희생 행 어드레스로서 결정할 수 있다. 행-해머 유닛(223)이 희생 행 어드레스를 결정하는 방법과 관련하여서는 도 8 및 도 10을 참조하여 구체적으로 후술한다.
어떤 실시예에서, 제어 로직(220)은 타겟 리프레시 동작을 수행하는 경우에 행-해머 유닛(223)이 결정한 희생 행 어드레스를 포함하는 리프레시 명령(REF)을 리프레시 제어 회로(290)에 출력할 수 있다.
어드레스 버퍼(230)는 메모리 컨트롤러(120)로부터 제공되는 어드레스(ADDR)를 수신할 수 있다. 어드레스(ADDR)는 메모리 셀 어레이(210)의 행을 지시하는 행 어드레스(RA)와 열을 지시하는 열 어드레스(CA)를 포함할 수 있다. 행 어드레스(RA)는 행 디코더(250)로 제공되며, 열 어드레스(CA)는 열 디코더(260)로 제공된다. 행 어드레스(RA)는 명령 디코더(220)를 통해 리프레시 제어 회로(290)로 제공되거나 리프레시 제어 회로(290)로 직접 제공될 수 있다. 어떤 실시예에서, 행 어드레스(RA)는 행 어드레스 다중화기(251)를 통해 행 디코더(250)로 제공될 수 있다. 어떤 실시예에서, 어드레스(ADDR)는 메모리 뱅크를 지시하는 뱅크 어드레스(BA)를 더 포함할 수 있다.
어떤 실시예에서, 메모리 장치(200)는 행 어드레스 다중화기(251)를 더 포함할 수 있다. 행 어드레스 다중화기(251)는 어드레스 버퍼(230)로부터 행 어드레스(RA)를 수신하고, 리프레시 제어 회로(290)로부터 리프레시될 행 어드레스(REF_RA)를 수신할 수 있다. 행 어드레스 다중화기(251)는 어드레스 버퍼(230)로부터 수신한 행 어드레스(RA)와 리프레시 제어 회로(290)로부터 수신한 행 어드레스(REF_RA)를 선택적으로 행 디코더(250)로 출력할 수 있다.
행 디코더(250)는 행 어드레스(RA 또는 REF_RA)에 기초해서 메모리 셀 어레이(210)의 복수의 행 중에서 활성화될 행을 선택할 수 있다. 이를 위해, 행 디코더(250)는 활성화될 행에 해당하는 워드라인에 구동 전압을 인가할 수 있다. 어떤 실시예에서, 복수의 메모리 뱅크(210a-210h)에 각각 대응하는 복수의 행 디코더(250a-250h)가 제공될 수 있다.
열 디코더(260)는 열 어드레스에 기초해서 메모리 셀 어레이(210)의 복수의 열 중에서 활성화될 열을 선택할 수 있다. 이를 위해, 열 디코더(260)는 I/O 게이팅 회로(270)를 통해 열 어드레스(CA)에 대응하는 센스 앰프(211)를 활성화시킬 수 있다. 어떤 실시예에서, 복수의 메모리 뱅크(210a-210h)에 각각 대응하는 복수의 열 디코더(260a-260h)가 제공될 수 있다.
I/O 게이팅 회로(270)는 입출력 데이터를 게이팅하며, 메모리 셀 어레이(210)로부터 읽은 데이터를 저장하기 위한 데이터 래치 및 메모리 셀 어레이(210)에 데이터를 쓰기 위한 쓰기 드라이버를 포함할 수 있다.
제1 내지 제8 메모리 뱅크(210a-210h) 중 하나의 메모리 뱅크에서 리드될 코드워드(CW)는 하나의 뱅크 어레이에 대응하는 센스 앰프(211a-211h)에 의해 감지되고, I/O 게이팅 회로(270)의 데이터 래치들에 저장될 수 있다. 어떤 실시예에서, 복수의 메모리 뱅크(210a-210h)에 각각 대응하는 복수의 센스 앰프(211a-211h)가 제공될 수 있다. ECC 엔진(280)은 데이터 래치들에 저장된 코드워드(CW)에 대하여 ECC 디코딩을 수행할 수 있다. ECC 엔진(400)은 코드워드(CW)의 데이터에서 에러가 검출되는 경우, 에러를 정정하면서 에러 발생 신호를 생성하고, 정정된 데이터(DQ)를 데이터 입출력 버퍼(295)를 통하여 메모리 컨트롤러(120)에 제공할 수 있다.
제1 내지 제8 메모리 뱅크(210a-210h) 중 하나의 메모리 뱅크에 라이트될 데이터(DQ)는 ECC 엔진(280)에 제공되고, ECC 엔진(280)은 데이터(DQ)에 기초하여 패리티 비트들을 생성하고, 데이터(DQ)와 패리티 비트들을 I/O 게이팅 회로(270)에 제공할 수 있다. I/O 게이팅 회로(270)는 I/O 게이팅 회로(270) 내의 쓰기 드라이버들을 통하여 데이터(DQ)와 패리티 비트들을 하나의 메모리 뱅크의 서브 페이지에 기입할 수 있다.
ECC 엔진(280)은 메모리 셀 어레이(210)에 포함된 복수의 행들에 대한 리프레시 동작이 수행되는 구간에서, 리프레시 동작이 수행된 각각의 행으로부터 리드된 코드워드(CW)에 대하여 ECC 디코딩을 수행할 수 있다. ECC 엔진(280)은 하나의 행을 구성하는 서브 페이지들 각각으로부터 코드워드(CW)를 리드하여 ECC 디코딩을 수행할 수 있다. ECC 엔진(280)은 각각의 행으로부터 리드된 코드워드(CW)의 데이터에서 에러가 검출되는 경우, 에러를 정정하면서 에러 발생 신호를 생성하고, 정정된 데이터(DQ)를 대응하는 서브 페이지에 다시 라이트하는 스크러빙 동작을 수행할 수 있다.
ECC 엔진(280)은 어드레스 버퍼(230)로부터 행 어드레스(RA)를 수신할 수 있다. 어떤 실시예에서, ECC 엔진(280)은 메모리 셀 어레이(210)에 포함된 각 행에 대한 에러 발생 신호를 카운트할 수 있고, 각 행 어드레스(RA)에 대한 에러 발생 횟수를 포함하는 에러 데이터를 생성할 수 있다. ECC 엔진(280)은 에러 데이터에 기초하여 헬스 레벨을 결정할 수 있다. ECC 엔진(280)은 메모리 셀 어레이(210)의 각 행에 대한 헬스 레벨을 포함하는 헬스 데이터(HD)를 출력할 수 있다.
어떤 실시예에서, 메모리 장치(200)는 뱅크 어드레스(BA)에 응답하여 뱅크 제어 신호를 생성하는 뱅크 제어 로직(240)을 더 포함할 수 있다. 뱅크 제어 신호에 응답하여, 복수의 행 디코더(250a-250h) 중에서 뱅크 어드레스(BA)에 대응하는 행 디코더(250)가 활성화되고, 복수의 열 디코더(260a-260h) 중에서 뱅크 어드레스(BA)에 대응하는 열 디코더(260)가 활성화될 수 있다.
어떤 실시예에서, 메모리 셀 어레이(210)에서 읽은 데이터(예를 들면, 데이터 래치에 저장된 데이터)는 ECC 엔진(280)을 통해 데이터 I/O 버퍼(285)에 제공되어, 메모리 컨트롤러(120)에 전달될 수 있다. 메모리 셀 어레이(210)에 기입될 데이터는 메모리 컨트롤러(120)로부터 데이터 I/O 버퍼(285)에 제공되고, 데이터 I/O 버퍼(285)에 제공된 데이터는 ECC 엔진(280)을 통해 I/O 게이팅 회로(270)로 제공될 수 있다.
리프레시 제어 회로(290)는 리프레시 명령(REF)에 응답하여 리프레시될 행 어드레스(REF_RA)를 행 디코더(250)로 전달할 수 있다. 어떤 실시예에서, 리프레시 제어 회로(290)는 타겟형 리프레시 제어 회로(291), 노멀 리프레시 제어 회로(292) 및 리프레시 행 어드레스 선택기(293)를 포함할 수 있다. 타겟형 리프레시 제어 회로(291)는 타겟형 리프레시 명령에 응답하여 행-해머 유닛(223)으로부터 수신한 희생 행 어드레스를 대상 행 어드레스(VRA)로서 출력할 수 있다. 노멀 리프레시 제어 회로(292)는 노멀 리프레시 동작이 수행될 행 어드레스(NRA)를 계산하고, 노멀 리프레시 명령에 응답하여 행 어드레스(NRA)를 출력할 수 있다. 리프레시 행 어드레스 선택기(293)는 타겟형 리프레시 제어 회로(291)로부터의 행 어드레스(VRA) 또는 노멀 리프레시 제어 회로(292)로부터의 행 어드레스(NRA)를 선택적으로 출력할 수 있다. 어떤 실시예에서, 리프레시 행 어드레스 선택기(293)는 노멀 리프레시 명령에 응답해서 노멀 리프레시 제어 회로(292)로부터의 행 어드레스(NRA)를 리프레시 행 어드레스(REF_RA)로 출력하고, 타겟형 리프레시 명령에 응답하여 타겟형 리프레시 제어 회로(291)로부터의 행 어드레스(VRA)를 리프레시 행 어드레스(REF_RA)로 출력할 수 있다.
도 3은 일 실시예에 따른 행-해머 유닛을 나타낸 도면이다.
도 3을 참조하면, 일 실시예에 따른 행-해머 유닛(300)은 액세스 카운터(310), 레지스터(315), 및 RH 결정기(320)를 포함할 수 있다.
액세스 카운터(310)는 메모리 컨트롤러(도 1의 120)로부터 수신한 명령(CMD) 및 어드레스 버퍼(230)로부터 행 어드레스(RA)를 수신하고, 행 어드레스(RA)에 대한 액세스 횟수를 카운팅할 수 있다. 어떤 실시예에서, 액세스 카운터(310)는 각 행 어드레스에 대한 액세스 횟수(AC)를 레지스터(315)에 저장할 수 있다. 구체적으로, 액세스 카운터(310)는 레지스터(315) 내에 대응하는 위치에 액세스 횟수를 저장할 수 있다. 예를 들어, 레지스터(315)에는 행 어드레스가 미리 저장되어 있을 수 있고, 액세스 카운터(310)는 임의의 행 어드레스에 대한 액세스 횟수를 대응하는 행 어드레스에 매칭시켜 저장할 수 있다.
레지스터(315)는 각 행 어드레스에 대한 액세스 횟수(AC)를 포함하는 액세스 데이터(AD)를 저장할 수 있다. 레지스터(315)는 행-해머 유닛(300) 내의 구성으로 설명하였으나, 본 발명은 이에 한정되지 않으며 메모리 장치(200) 내에 별개의 메모리일 수도 있다. 또한, 액세스 데이터(AD)는 레지스터(315)에 저장되는 것이 아니라 메모리 셀 어레이(210)에 위치한 메모리 셀에 저장될 수도 있다.
RH 결정기(320)는 레지스터(315)로부터 액세스 데이터(AD)를 독출할 수 있다. RH 결정기(320)는 액세스 데이터(AD)에 기초하여 임의의 행 어드레스에 대한 액세스 횟수를 검출할 수 있다. 또한, RH 결정기(320)는 ECC 엔진(380)으로부터 전달받은 헬스 데이터(HD)에 기초하여 희생 행 어드레스(TRA)를 결정할 수 있다. 어떤 실시예에서, RH 결정기(320)는 미리 설정된 기간 마다 액세스 데이터(AD) 및 헬스 데이터(HD)에 기초하여 희생 행 어드레스(TRA)를 결정하는 동작을 수행할 수 있다.
예를 들어, RH 결정기(320)는 액세스 데이터(AD) 내에서 제1 행에 대한 액세스 횟수 및 제1 행과 인접한 2개의 행 각각에 대한 액세스 횟수를 검출할 수 있다. RH 결정기(320)는 헬스 데이터(HD) 내에서 제1 행에 대한 헬스 레벨을 검출할 수 있다. RH 결정기(320)는 제1 행에 인접한 2개의 행 각각에 대한 액세스 횟수를 더하여 피해 횟수를 계산하고, 계산한 피해 횟수에 제1 행에 대한 헬스 레벨을 곱하여 제1 행의 피해 정도를 계산할 수 있다. 피해 횟수는, 임의의 행이 액세스되는 경우에, 해당 행에 인접하여 위치한 행이 받은 피해의 횟수일 수 있다. 이와 유사한 방식으로, RH 결정기(320)는 모든 행에 대한 피해 정도를 계산할 수 있다. 피해 정도는 행이 입은 피해를 정량적으로 나타낸 것일 수 있다. RH 결정기(320)는 가장 높은 피해 정도를 가지는 행의 어드레스를 희생 행 어드레스로 결정할 수 있다.
또 다른 예를 들어, RH 결정기(320)는 액세스 데이터(AD) 내에서 제1 행에 대한 액세스 횟수 및 제1 행과 인접한 2개의 행 각각에 대한 액세스 횟수를 검출할 수 있다. RH 결정기(320)는 헬스 데이터(HD) 내에서 제1 행에 대한 헬스 레벨 및 제1 행과 인접한 2개의 행 각각에 대한 헬스 레벨을 검출할 수 있다. RH 결정기(320)는 제1 행에 대한 액세스 횟수에 제1 행에 대한 헬스 레벨을 곱하고, 제1 행과 인접한 2개의 행 각각에 대한 액세스 횟수에 각각의 헬스 레벨을 곱하여 가중 액세스 횟수를 계산할 수 있다. RH 결정기(320)는 제1 행과 인접한 2개의 행 각각에 대한 가중 액세스 횟수를 더하여 제1 행의 피해 정도를 계산할 수 있다. 이와 유사한 방식으로, RH 결정기(320)는 모든 행에 대한 피해 정도를 계산할 수 있다. RH 결정기(320)는 가장 높은 피해 정도를 가지는 행의 어드레스를 희생 행 어드레스로 결정할 수 있다.
한편, 도 3에서 행-해머 유닛(300)은 각 행에 대한 피해 횟수 또는 액세스 횟수에 헬스 레벨을 곱하여 각 행에 대한 피해 정도를 계산하거나 가중 액세스 횟수를 계산할 수 있다고 기술하였으나, 본 발명은 이에 한정되지 않는다. 어떤 실시예에서, 행-해머 유닛(300)은 각 행에 대해 액세스 횟수를 카운팅 시 각 행의 헬스 레벨을 고려하여 액세스 횟수의 증가 폭을 조절할 수도 있다. 이 경우에, 행-해머 유닛(300)은 헬스 레벨을 곱하는 동작을 수행하지 않을 수 있다.
RH 결정기(320)는 희생 행 어드레스(TRA)를 포함하는 리프레시 명령(REF)을 리프레시 제어 회로(290)에 전달할 수 있다. RH 결정기(320)가 리프레시 명령(REF)을 리프레시 제어 회로(290)에 전달할 때, 각 행에 대한 액세스 횟수(AC)는 0으로 초기화될 수 있다.
도 4는 일 실시예에 따른 ECC 엔진을 설명하기 위한 블록도이다.
ECC 엔진(400)은 ECC 인코딩 회로(410), ECC 디코딩 회로(420), 및 헬스 레벨 생성기(430)를 포함할 수 있다. 설명의 편의를 위해, 도 4에서 ECC 엔진(400)이 메모리 셀 어레이(도 2의 210)와 직접 연결되는 것으로 도시하였으나, ECC 엔진(400)은 I/O 게이팅 회로(도 2의 270)를 통해 메모리 셀 어레이(210)와 연결될 수 있다.
ECC 인코딩 회로(410)는 메모리 셀 어레이(210)의 메모리 셀들에 라이트될 라이트 데이터(WDQ)와 관련된 패리티 비트들(PRT1)을 생성할 수 있다. 패리티 비트들(PRT1)은 메모리 셀 어레이(210)에 저장될 수 있다.
ECC 디코딩 회로(420)는 메모리 셀 어레이(210)의 메모리 셀들로부터 리드된 리드 데이터(RDQ)와 리드된 패리티 비트들(PRT2)을 이용하여 에러를 정정하고, 에러 정정된 데이터(CDQ)를 출력할 수 있다. 패리티 비트(PRT2)는 패리티 비트(PRT1)와 동일할 수 있다. 어떤 실시예에서, ECC 디코딩 회로(420)는 에러를 정정하면서 에러 발생 신호(ES)를 생성할 수 있다. ECC 디코딩 회로(420)는 에러 발생 신호(ES)를 헬스 레벨 생성기(430)에 전달할 수 있다.
헬스 레벨 생성기(430)는 ECC 디코딩 회로(420)로부터 에러 발생 신호(ES)를 제공받을 수 있다. 또한, 헬스 레벨 생성기(430)는 어드레스 버퍼(230)로부터 행 어드레스(RA)를 제공받을 수 있다. 어떤 실시예에서, 헬스 레벨 생성기(430)는 각 행 어드레스(RA)에 대한 에러 발생 신호(ES)를 카운팅하여 각 행 어드레스(RA)에 대한 에러 발생 횟수를 결정할 수 있다. 헬스 레벨 생성기(430)는 행 어드레스(RA)에 대한 에러 발생 횟수 및 행 어드레스(RA)를 포함하는 에러 데이터를 생성할 수도 있다.
어떤 실시예에서, 헬스 레벨 생성기(430)는 에러 데이터에 기초하여 헬스 레벨을 결정할 수도 있다. 구체적으로, 헬스 레벨 생성기(430)는 임계값을 저장할 수 있다. 임계값은 예를 들어 메모리 컨트롤러(도 1의 120)로부터 제공된 명령(CMD)에 응답하여 설정된 값일 수 있다. 어떤 실시예에서, 임계값의 개수는 헬스 레벨의 개수에 비례하여 설정될 수 있다. 헬스 레벨 생성기(430)는 에러 발생 횟수와 임계값을 비교한 비교 결과와 어드레스 버퍼(230)로부터의 행 어드레스(RA)에 기초하여 헬스 레벨을 결정할 수 있다.
어떤 실시예에서, 헬스 레벨 생성기(430)는 에러 발생 횟수가 제1 임계값 미만인 경우, 헬스 레벨 생성기(430)는 해당 행 어드레스(RA)가 제1 레벨의 헬스 레벨을 가진다고 결정할 수 있다. 에러 발생 횟수가 제1 임계값 초과이며 제2 임계값 미만 경우, 헬스 레벨 생성기(430)는 해당 행 어드레스(RA)가 제2 레벨의 헬스 레벨을 가진다고 결정할 수 있다. 에러 발생 횟수가 제2 임계값 초과이며 제3 임계값 미만인 경우, 헬스 레벨 생성기(430)는 해당 행 어드레스(RA)가 제3 레벨의 헬스 레벨을 가진다고 결정할 수 있다.
또한, 헬스 레벨 생성기(430)는 행 어드레스(RA)와 해당 행에 대한 헬스 레벨을 포함하는 헬스 데이터(HD)를 생성할 수 있다.
예를 들어, 헬스 레벨 생성기(430)는 제1 행 어드레스에 대해 에러 정정된 횟수가 10회 미만인 경우에 제1 레벨의 헬스 레벨을 가지고, 제2 행 어드레스에 대해 에러 정정된 횟수가 10회 이상 100회 미만인 경우에 제2 레벨의 헬스 레벨을 가지며, 제3 행 어드레스에 대해 에러 정정된 횟수가 100회 이상인 경우에 제3 레벨의 헬스 레벨을 가진다고 결정할 수 있다. 이 때, 헬스 레벨 생성기(430)는 제1 레벨의 제1 행 어드레스, 제2 레벨의 제2 행 어드레스, 및 제3 레벨의 제3 행 어드레스에 대한 정보를 포함하는 헬스 데이터(HD)를 생성할 수 있다.
한편, 헬스 레벨 생성기(430)가 생성한 헬스 데이터(HD)는 별도의 레지스터에 저장될 수 있으며, 메모리 셀 어레이(210)에 위치한 메모리 셀에 저장될 수도 있다. 어떤 실시예에서, 헬스 레벨 생성기(430)는 메모리 셀 어레이(210) 중 취약한 행의 어드레스와 각 행에 대한 헬스 레벨 정보만을 포함하는 헬스 데이터(HD)를 생성할 수도 있다. 만일, 메모리 셀 어레이(210) 내의 복수의 행 중에서 취약한 행의 개수가 일정 수준 이하인 경우에 헬스 데이터(HD)를 저장하는 데에 많은 저장 용량을 필요로 하지 않으므로, 헬스 레벨 생성기(430)는 별도의 레지스터에 헬스 데이터(HD)를 저장할 수도 있다.
도 5는 일 실시예에 따른 액세스 데이터 및 헬스 데이터를 나타낸 예시적인 도면이다.
상술한 바와 같이, 액세스 데이터(AD)는 레지스터(도 3의 315) 또는 메모리 셀 어레이(210) 중 임의의 메모리 셀에 저장되어 있을 수 있으며, 헬스 데이터(HD)는 ECC 엔진(도 4의 400)에서 생성되어 별도의 레지스터 또는 메모리 셀 어레이(210) 중 임의의 메모리 셀에 저장되어 있을 수 있다.
도 5에 나타난 바와 같이, 임의의 메모리 셀 어레이는 제1 행(R1) 내지 제10 행(R10)을 포함할 수 있다.
제어 로직(220)은 각 행에 대한 액세스 횟수를 카운팅하고, 각 행에 대한 액세스 횟수를 포함하는 액세스 데이터를 생성할 수 있다.
도 7에 도시된 바와 같이, 제1 행(R1)에 대한 액세스 횟수는 0회일 수 있다. 제2 행(R2)에 대한 액세스 횟수는 2000회일 수 있다. 제3 행(R3)에 대한 액세스 횟수는 3000회일 수 있다. 제4 행(R4)에 대한 액세스 횟수는 2000회일 수 있다. 제5 행(R5)에 대한 액세스 횟수는 0회일 수 있다. 제6 행(R6)에 대한 액세스 횟수는 2000회일 수 있다. 제7 행(R7)에 대한 액세스 횟수는 1000회일 수 있다. 제8 행(R8)에 대한 액세스 횟수는 1000회일 수 있다. 제9 행(R9)에 대한 액세스 횟수는 2000회일 수 있다. 제10 행(R10)에 대한 액세스 횟수는 1000회일 수 있다.
제어 로직(220)은 ECC 엔진(280)으로부터 각 행 어드레스에 대한 헬스 레벨을 전달받을 수 있다. ECC 엔진(280)은 각 행에 대한 헬스 레벨을 결정할 수 있다. ECC 엔진(280)은 제1 내지 제10 행(R1-R10) 각각에 대한 헬스 레벨을 포함하는 헬스 데이터를 생성할 수 있다.
제1 행(R1), 제2 행(R2), 제4 행(R4), 제5 행(R5), 제6 행(R6), 제7 행(R7), 제9 행(R9), 및 제10 행(R10)은 제1 레벨의 헬스 레벨을 가질 수 있다. 제3 행(R3)은 제2 레벨의 헬스 레벨을 가질 수 있으며, 제8 행(R8)은 제3 레벨의 헬스 레벨을 가질 수 있다. 즉, 제3 행(R3) 및 제8 행(R8)이 로-해머 공격에 취약한 행일 수 있다.
도 6은 일 실시예에 따른 메모리 장치의 동작 방법을 나타내는 흐름도이다.
도 6을 참조하면, ECC 엔진(280)은, 헬스 데이터를 생성(S10)한다.
헬스 데이터는, 메모리 셀 어레이(210)의 각 행에 대한 헬스 레벨을 포함할 수 있다. ECC 엔진(280)은 생성한 헬스 데이터를 제어 로직(220)에 전달할 수 있다.
제어 로직(220)은 헬스 데이터 및 명령에 기초하여 추가 리프레시 대상인 희생 행 어드레스를 결정(S20)한다.
제어 로직(220)은 ECC 엔진(280)으로부터 수신한 각 행에 대한 헬스 데이터 및 명령에 기초하여 카운팅한 각 행에 대한 액세스 횟수에 기초하여, 가장 큰 피해를 받은 희생 행 어드레스를 결정할 수 있다. 즉, 제어 로직(220)은 헬스 데이터 및 각 행에 대한 액세스 횟수에 직접 기초하여 희생 행 어드레스를 결정할 수 있다.
한편, 제어 로직(220)은 헬스 데이터 및 액세스된 행의 인접 행의 피해 횟수에 기초하여 희생 행 어드레스를 결정할 수도 있다. 제어 로직(220)이 희생 행 어드레스를 결정하는 방식은 미리 설정되어 있을 수 있다.
제어 로직(200)은 결정한 희생 행 어드레스를 리프레시 제어 회로(290)에 전달할 수 있다.
리프레시 제어 회로(290)는 희생 행 어드레스를 리프레시하는 타겟 리프레시를 수행(S30)한다.
도 7은 일 실시예에 따른 헬스 데이터를 생성하는 방법을 나타낸 흐름도이다. 도 7은 도 6의 단계(S10)를 구체적으로 나타낸 흐름도일 수 있다.
먼저 ECC 엔진(280)은, ECC 동작을 수행(S101)한다.
ECC 엔진(280)은 ECC 동작을 수행하면서 에러 검출 시 에러 발생 신호를 생성할 수 있다. 또한, ECC 엔진(280)은 어드레스 버퍼(230)로부터 행 어드레스(RA)를 전달받을 수 있다.
ECC 엔진(280)은, 에러 데이터를 생성(S103)한다.
ECC 엔진(280)은 각 행에 대한 에러 발생 신호를 카운팅하여, 각 행에 대한 에러 발생 횟수를 결정할 수 있다. ECC 엔진(280)은, 에러 발생 신호의 횟수에 기초하여 에러 정정된 어드레스 및 해당 어드레스에 대해 에러 정정된 횟수를 포함하는 에러 데이터를 생성할 수 있다.
ECC 엔진(280)은, 에러 데이터에 기초하여 헬스 레벨을 결정(S105)한다.
헬스 레벨은 인접하여 위치된 행들 사이의 커플링에 의해 데이터가 열화되는 정도를 나타내는 지표인 행의 체력을 상대적으로 나타낸 레벨일 수 있다.
ECC 엔진(280)은, 헬스 레벨을 포함하는 헬스 데이터를 생성(S107)한다.
헬스 데이터는 행 어드레스(RA)와 해당 행에 대한 헬스 레벨 정보를 포함할 수 있다.
도 8은 일 실시예에 따른 희생 행 어드레스를 결정하는 방법을 나타낸 흐름도이고, 도 9는 도 8의 희생 행 어드레스를 결정하는 방법에 따른 액세스 데이터 및 헬스 데이터를 나타낸 예시적인 도면이다.
도 8을 참조하면, 먼저, 제어 로직(220)은 명령(CMD) 및 행 어드레스(RA)를 수신(S211)한다.
제어 로직(220)은 메모리 컨트롤러(도 1의 120)로부터 명령(CMD)을 수신하고, 어드레스 버퍼(230)로부터 행 어드레스(RA)를 수신할 수 있다. 또한, 제어 로직(220)은 ECC 엔진(280)으로부터 헬스 데이터(HD)를 수신할 수 있다.
그 다음, 제어 로직(220)은 행 어드레스(RA)와 인접한 적어도 하나의 행 어드레스에 대한 피해 횟수를 카운팅(S213)한다.
피해 횟수는, 임의의 행이 액세스되는 경우에, 해당 행에 인접하여 위치한 행이 받은 피해의 횟수일 수 있다. 어떤 실시예에서, 제어 로직(220)은 액세스 데이터 내에서 특정 행에 대한 액세스 횟수에 기초하여 인접한 행에 대한 피해 횟수를 카운팅할 수 있다.
어떤 실시예에서, 제어 로직(220)은 특정 행에 대한 명령(CMD)을 수신할 때마다 액세스 데이터 내에서 특정 행에 인접하여 위치된 행들에 대한 액세스 횟수를 증가시킬 수 있다. 예를 들어, 제어 로직(220)은 소정 시간 내의 매 액세스 시마다 각 행의 헬스 레벨을 반영하여 각 행의 피해 정도를 가중시켜 액세스 횟수를 증가시킬 수 있다. 또 다른 실시예에서, 제어 로직(220)은 메모리 컨트롤러(120)로부터 리프레시 명령을 수신하는 경우에 액세스 데이터 내의 각 행에 대한 액세스 횟수에 기초하여 각 행의 피해 횟수를 계산할 수도 있다.
예를 들어, 도 9에 나타난 바와 같이, 제3 행(R3)에 대한 피해 횟수는 제2 행(R2)에 대한 액세스 카운트(즉, 2000회) 및 제4 행(R4)에 대한 액세스 카운트(즉, 2000회)를 더한 값일 수 있다. 제3 행(R3)에 대한 피해 횟수는 4000회일 수 있다.
또 다른 예를 들어, 제8 행(R8)에 대한 피해 횟수는 제7 행(R7)에 대한 액세스 카운트(즉, 1000회) 및 제9 행(R9)에 대한 액세스 카운트(즉, 2000회)를 더한 값일 수 있다. 제8 행(R8)에 대한 피해 횟수는 3000회일 수 있다.
제어 로직(220)은, 각 행 어드레스의 헬스 레벨에 기초하여 각 행 어드레스의 피해 정도(victim degree)를 계산(S215)한다.
피해 정도는 행이 입은 피해를 정량적으로 나타낸 것일 수 있다. 어떤 실시예에서, 제어 로직(220)은 각 행의 피해 횟수와 해당 행의 헬스 레벨을 곱하여 각 행의 피해 정도를 계산할 수 있다.
도 9를 참조하면, 제3 행(R3)의 피해 횟수는 4000회이며, 제3 행(R3)은 제2 레벨의 헬스 레벨을 가지므로, 제3 행(R3)의 피해 정도는 4000*2인 8000일 수 있다. 또한, 제8 행(R8)의 피해 횟수는 3000회이며, 제8 행(R8)은 제3 레벨의 헬스 레벨을 가지므로, 제8 행(R8)의 피해 정도는 3000*3인 9000일 수 있다. 이와 유사한 방식으로, 제어 로직(220)은 다른 행에 대한 피해 정도도 계산할 수 있다. 어떤 실시예에서, 제어 로직(220)은 소정 시간 동안 누적된 액세스 카운트에 헬스 레벨을 곱하는 위와 같은 방식 대신, 소정 시간 내의 매 액세스 시마다 각 행의 헬스 레벨을 반영하여 각 행의 피해 정도를 가중시켜 나가는 방식으로 최종 피해 정도를 계산할 수도 있다. 예컨대, 제어 로직(220)은 헬스 레벨이 제1 레벨인 행(예컨대, 제1 행(R1))의 인접 행이 액세스될 때마다 헬스 레벨이 제1 레벨인 행의 피해 정도를 1씩 가중시킬 수 있지만, 헬스 레벨이 제2 레벨인 행(예컨대, 제3 행(R3))의 인접 행이 액세스될 때마다 상기 헬스 레벨이 제2 레벨인 행의 피해 정도를 2씩 가중시킬 수 있고, 헬스 레벨이 제3 레벨인 행(예컨대, 제8 행(R8))의 인접 행이 액세스될 때마다 상기 헬스 레벨이 제3 레벨인 행의 피해 정도를 3씩 가중시킬 수 있다.
제어 로직(220)은, 각 행 어드레스의 피해 정도에 기초하여 희생 행 어드레스를 결정(S217)한다.
어떤 실시예에서, 제어 로직(220)은 미리 설정된 기준을 초과하는 피해 정도를 가지는 행의 행 어드레스를 희생 행 어드레스로서 결정할 수 있다. 예를 들어, 도 9를 참조한다. 미리 설정된 기준이 3000이라면, 제어 로직(220)은 피해 정도가 3000을 초과하는 행인 제3 행(R3), 제5 행(R5), 및 제8 행(R8)의 행 어드레스를 희생 행 어드레스로서 결정할 수 있다.
어떤 실시예에서, 제어 로직(220)은 가장 큰 피해 정도를 가지는 행 어드레스를 희생 행 어드레스로서 결정할 수 있다. 예를 들어, 제어 로직(220)은 가장 큰 9000의 피해 정도를 가지는 제8 행(R8)을 추가 리프레시 대상 행으로서 결정할 수 있다.
어떤 실시예에서, 제어 로직(220)은 가장 큰 피해 정도를 가지는 행 어드레스부터 순차적으로 일정 개수의 행 어드레스를 추가 리프레시 대상 행으로서 결정할 수 있다. 예를 들어, 제어 로직(220)이 큰 피해 정도를 가지는 순서대로 3개의 행을 희생 행 어드레스라고 설정하였으면, 제어 로직(220)은 제8 행(R8), 제3 행(R3), 및 제5 행(R5)의 행 어드레스를 희생 행 어드레스로서 결정할 수 있다.
일 실시예에 따른 제어 로직(220)은 단순히 액세스 횟수 뿐 아니라 행의 체력을 고려함으로써, 실질적으로 피해 정도가 큰 행을 리프레시하므로, 집중적인 액세스에 의한 메모리 셀들의 데이터 손상을 방지할 수 있으며, 행-해머 공격을 더 효과적으로 방어할 수 있다.
도 10은 또 다른 실시예에 따른 희생 행 어드레스를 결정하는 방법을 나타낸 흐름도이고, 도 11은 도 10의 희생 행 결정 방법에 따른 액세스 데이터 및 헬스 데이터를 나타낸 예시적인 도면이다.
도 10을 참조하면, 먼저, 제어 로직(220)이 메모리 컨트롤러(120)로부터 명령 및 행 어드레스(RA)를 수신(S221)한다.
제어 로직(220)은 행 어드레스에 대한 액세스 횟수를 카운트(S223)한다.
제어 로직(220)은 각 행 어드레스의 헬스 레벨에 기초하여 각 행 어드레스의 가중 액세스 횟수를 계산(S225)한다.
가중 액세스 횟수는 임의의 행에 대한 액세스 횟수와 해당 행의 헬스 레벨을 곱한 값일 수 있다.
한편, 도 10에 따라 제어 로직(220)이 액세스 횟수에 기초하여 피해 정도를 계산하는 방법은 도 7을 참조하여 기술한 헬스 데이터를 그대로 사용하지 않을 수 있다. 어떤 실시예에서, 제어 로직(220)은 ECC 엔진(280)으로부터 수신한 헬스 데이터 내에서, 취약한 헬스 레벨을 가지고 있는 행과 인접하여 위치한 행들에 취약한 행의 헬스 레벨을 할당할 수 있다. 임의의 행에 대한 공격을 받는 경우에 실제로 피해를 입는 행은 공격받은 행에 인접하여 위치된 행이므로, 임의의 행에 대한 피해 횟수는 인접한 2개의 행에 대한 액세스 횟수를 더한 값일 수 있다. 제어 로직(220)은 취약한 행의 인접한 행들에 높은 헬스 레벨을 할당하여 인접한 행들에 대한 액세스 횟수를 증가시킴으로써, 궁극적으로는 취약한 행의 피해 횟수를 증가시킬 수 있다. 이에 따라, 취약한 행이 리프레시되도록 할 수 있다. 예를 들어, 도 7의 헬스 데이터에서는 제3 행(R3)이 제2 레벨의 헬스 레벨을 가지고 있고, 제8 행(R8)이 제3 레벨의 헬스 레벨을 가지고 있다. 그러나, 도 10에서, 제어 로직(200)은 제3 행(R3)과 인접하여 위치한 제2 행(R2) 및 제4 행(R4)에 제3 행(R3)의 헬스 레벨(제2 레벨)을 할당하고, 제8 행(R8)과 인접하여 위치한 제7 행(R7) 및 제9 행(R9)에 제8 행(R8)의 헬스 레벨(제3 레벨)을 할당할 수 있다. 또한, 제어 로직(200)은 취약한 행인 제3 행(R3) 및 제8 행(R8)은 취약하지 않은 행을 나타내는 제1 레벨의 헬스 레벨을 할당할 수 있다. 그러나, 본 발명은 이에 한정되는 것은 아니며 제어 로직(200)은 취약 행인 제3 행(R3) 및 제8 행(R8)이 각각 제2 레벨, 제3 레벨의 헬스 레벨을 할당할 수도 있다.
도 11을 참조하면, 제2 행(R2)의 액세스 카운트는 2000회이며, 제2 행(R2)은 제2 레벨의 헬스 레벨을 가지므로, 제2 행(R2)의 가중 액세스 횟수는 2000*2인 4000일 수 있다. 또한, 제3 행(R3)은 취약한 행이지만 제1 레벨의 헬스 레벨을 가지므로, 제3 행(R3)의 가중 액세스 횟수는 3000일 수 있다. 제4 행(R4)의 액세스 카운트는 2000이며, 제4 행(R4)은 제2 레벨의 헬스 레벨을 가지므로, 제4 행(R4)의 가중 액세스 횟수는 2000*2인 4000일 수 있다. 마찬가지로, 제7 행(R7)의 가중 액세스 횟수는 1000*3인 3000일 수 있으며, 제8 행(R8)의 가중 액세스 횟수는 1000이며, 제9 행(R9)의 가중 액세스 횟수는 2000*3인 6000일 수 있다. 어떤 실시예에서, 제어 로직(220)은 소정 시간 동안 누적된 액세스 카운트에 헬스 레벨을 곱하는 위와 같은 방식 대신, 소정 시간 내의 매 액세스 시마다 각 행의 헬스 레벨을 반영하여 각 행의 액세스 횟수를 가중시켜 나가는 방식으로 최종적인 가중 액세스 횟수의 값을 계산할 수도 있다. 예컨대, 제어 로직(220)은, 헬스 레벨이 제1 레벨인 행(예컨대, 제1 행(R1))이 액세스될 때마다 해당 행의 가중 액세스 카운트를 1씩 가중시킬 수 있지만, 헬스 레벨이 제2 레벨인 행(예컨대, 제2 행(R2))이 액세스될 때마다 해당 행의 가중 액세스 카운트를 2씩 가중시킬 수 있고, 헬스 레벨이 제3 레벨인 행(예컨대, 제7 행(R7))이 액세스될 때마다 해당 행의 가중 액세스 카운트를 3씩 가중시킬 수 있다.
그 다음, 제어 로직(220)은 가중 액세스 횟수에 기초하여 각 행 어드레스의 피해 정도를 계산(S227)한다.
피해 정도는 행이 입은 피해를 정량적으로 나타낸 것일 수 있다. 어떤 실시예에서, 제어 로직(220)은 각 행의 가중 액세스 횟수에 기초하여 각 행에 대한 피해 정도를 계산할 수 있다. 예를 들어, 제어 로직(220)은 액세스 데이터 내에서 임의의 행과 인접한 2개의 행 각각에 대한 가중 액세스 횟수를 더하여 해당 행에 대한 피해 정도를 계산할 수 있다.
예를 들어, 도 11에 나타난 바와 같이, 제3 행(R3)에 대한 피해 정도는 제2 행(R2)의 가중 액세스 횟수(즉, 4000회) 및 제4 행(R4)에 대한 가중 액세스 횟수(즉, 4000회)를 더한 값일 수 있다. 제3 행(R3)에 대한 피해 정도는 8000일 수 있다.
제8 행(R8)에 대한 피해 정도는 제7 행(R7)의 가중 액세스 횟수(즉, 3000회) 및 제9 행(R9)에 대한 가중 액세스 횟수(즉, 6000회)를 더한 값일 수 있다. 제8 행(R8)에 대한 피해 정도는 9000일 수 있다. 이와 유사한 방식으로, 제어 로직(220)은 다른 행에 대한 피해 정도도 계산할 수 있다.
제어 로직(220)은 피해 정도에 기초하여 추가 리프레시 대상 행을 결정(S229)한다.
어떤 실시예에서, 제어 로직(220)은 미리 설정된 기준을 초과하는 피해 정도를 가지는 행의 어드레스를 희생 행 어드레스로서 결정할 수 있다. 예를 들어, 미리 설정된 기준이 7000이라면, 제어 로직(220)은 피해 정도가 7000을 초과하는 행인 제3 행(R3), 제8 행(R8)의 행 어드레스를 희생 행 어드레스로서 결정할 수 있다.
어떤 실시예에서, 제어 로직(220)은 가장 큰 피해 정도를 가지는 행 어드레스를 추가 리프레시 대상 행으로서 결정할 수 있다. 예를 들어, 제어 로직(220)은 제8 행(R8)의 행 어드레스를 희생 행 어드레스로서 결정할 수 있다.
어떤 실시예에서, 제어 로직(220)은 가장 큰 피해 정도를 가지는 행 어드레스부터 순차적으로 일정 개수의 행 어드레스를 추가 리프레시 대상 행으로서 결정할 수 있다.
어떤 실시예에서, 제어 로직(220)은 결정한 희생 행 어드레스를 리프레시 제어 회로(290)에 전달할 수 있다.
도 8 또는 도 10에 따라 추가 리프레시 대상 행을 결정하는 방법에 대해 기술하였다. 메모리 장치(110)가 어떤 희생 행 어드레스를 결정하는 방법을 사용하는지에 대해서는 미리 설정되어 있을 수 있다. 메모리 장치(110)는 미리 설정된 방법에 따라 희생 행 어드레스를 결정할 수 있다. 그러나, 본 발명은 이에 한정되는 것은 아니며 메모리 장치는 각 행에 대한 액세스 횟수와 각 행의 체력을 고려할 수 있는 임의의 방법을 사용할 수 있다.
일 실시예에 따른 제어 로직(220)은 단순히 액세스 횟수 뿐 아니라 행의 체력을 고려함으로써, 실질적으로 피해 정도가 큰 행을 리프레시하므로, 집중적인 액세스에 의한 메모리 셀들의 데이터 손상을 방지할 수 있으며, 행-해머 공격을 더 효과적으로 방어할 수 있다. 또한, 일 실시예에 따른 제어 로직(220)은 액세스되는 행에 인접하여 위치한 인접 행에 대한 액세스 횟수를 계산하지 않고 해당 행에 대한 액세스 횟수에 기초하여 피해 정도를 계산할 수 있으므로, 각 행에 대한 피해 정도를 신속하게 계산할 수 있다.
도 12는 일 실시예에 따른 컴퓨터 장치를 나타내는 예시 블록도이다.
도 12를 참고하면, 컴퓨팅 장치(1200)는 프로세서(1210), 메모리(1220), 메모리 컨트롤러(1230), 저장 장치(1240), 통신 인터페이스(1250) 및 버스(1260)를 포함한다. 컴퓨팅 장치(1200)는 다른 범용적인 구성 요소를 더 포함할 수 있다.
프로세서(1210)는 컴퓨팅 장치(1200)의 각 구성의 전반적인 동작을 제어한다. 프로세서(1210)는 CPU(central processing unit), AP(application processor), GPU(graphic processing unit) 등의 다양한 프로세싱 유닛 중 적어도 하나로 구현될 수 있다.
메모리(1220)는 각종 데이터 및 명령을 저장한다. 메모리(1220)는 도 1 내지 도 11을 참고로 하여 설명한 메모리 장치로 구현될 수 있다. 메모리(1220)는 복수의 행을 포함하고, 각종 데이터 및 명령이 저장되어 있는 메모리 셀 어레이를 포함할 수 있다. 메모리(1220)는 저장된 데이터를 리드하고, 리드된 데이터의 에러를 정정할 수 있다. 메모리(1220)는 에러를 정정한 횟수에 기초하여 복수의 행 각각에 대한 헬스 레벨을 결정할 수 있다. 메모리 컨트롤러(1230)는 메모리(1220)로의 및 메모리(1220)로부터의 데이터 또는 명령의 전달을 제어한다. 메모리(1220)는, 메모리 컨트롤러(1230)가 메모리(1220)에 액세스하는 횟수 및 헬스 레벨에 기초하여 메모리 셀 어레이 내에서 가장 많은 피해를 입은 행을 희생 행으로 결정할 수 있다. 메모리(1220)는 희생 행을 리프레시하는 동작을 수행할 수 있다. 어떤 실시예에서, 메모리 컨트롤러(1230)는 프로세서(1210)와 별도의 칩으로 제공될 수 있다. 어떤 실시예에서, 메모리 컨트롤러(1230)는 프로세서(1210)의 내부 구성으로 제공될 수 있다.
저장 장치(1240)는 프로그램 및 데이터를 비임시적으로 저장한다. 어떤 실시예에서, 저장 장치(1240)는 비휘발성 메모리로 구현될 수 있다. 통신 인터페이스(1250)는 컴퓨팅 장치(1200)의 유무선 인터넷 통신을 지원한다. 또한, 통신 인터페이스(1250)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 버스(1260)는 컴퓨팅 장치(1200)의 구성 요소간 통신 기능을 제공한다. 버스(1260)는 구성 요소간의 통신 프로토콜에 따라 적어도 하나의 유형의 버스를 포함할 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (10)

  1. 복수의 행을 포함하는 메모리 셀 어레이,
    상기 복수의 행 각각으로부터 리드된 데이터의 에러를 정정한 횟수에 기초하여 상기 복수의 행 각각에 대한 헬스 레벨을 결정하는 ECC 엔진,
    상기 복수의 행 각각에 대한 액세스 횟수 및 상기 헬스 레벨에 기초하여 리프레시를 수행할 희생 행 어드레스를 결정하는, 제어 로직, 및
    상기 희생 행 어드레스에 대응하는 행에 대한 리프레시를 수행하는 리프레시 제어 회로
    를 포함하는 메모리 장치.
  2. 제1항에 있어서,
    상기 제어 로직은, 상기 복수의 행 각각의 행 어드레스에 대한 액세스 횟수를 카운팅하는 액세스 카운터, 및 상기 행 어드레스 및 상기 행 어드레스에 대한 액세스 횟수를 포함하는 액세스 데이터를 저장하는 레지스터를 포함하는, 메모리 장치.
  3. 제1항에 있어서,
    상기 제어 로직은, 상기 복수의 행 각각의 행 어드레스에 대한 액세스 횟수를 카운팅하는 액세스 카운터를 포함하고,
    상기 행 어드레스 및 상기 행 어드레스에 대한 액세스 횟수를 포함하는 액세스 데이터는 상기 메모리 셀 어레이 내의 메모리 셀에 저장되는, 메모리 장치.
  4. 제1항에 있어서,
    상기 ECC 엔진은, 상기 메모리 셀 어레이에 라이트될 라이트 데이터와 관련된 패리티 비트를 생성하고, 상기 라이트 데이터 및 상기 패리티 비트를 상기 메모리 셀 어레이에 저장하는 ECC 인코딩 회로,
    상기 메모리 셀 어레이로부터 리드된 리드 데이터 및 상기 패리티 비트를 사용하여 상기 리드 데이터 내 에러를 정정하면서 에러 발생 신호를 생성하는 ECC 디코딩 회로, 및
    상기 에러 발생 신호를 카운팅하여 상기 복수의 행 각각에 대한 에러 발생 횟수를 결정하고, 상기 에러 발생 횟수와 미리 설정된 임계값을 비교하여 상기 복수의 행 각각에 대한 상기 헬스 레벨을 결정하는 헬스 레벨 생성기를 포함하는, 메모리 장치.
  5. 제4항에 있어서,
    상기 복수의 행 중 제1 행에 대한 제1 에러 발생 횟수가 상기 복수의 행 중 제2 행에 대한 제2 에러 발생 횟수보다 많은 경우, 상기 제1 행의 헬스 레벨은 상기 제2 행의 헬스 레벨보다 높은, 메모리 장치.
  6. 제1항에 있어서,
    상기 제어 로직은, 상기 복수의 행 중 제1 행과 인접하여 위치된 2개의 행에 대한 액세스 횟수를 더한 값인 상기 제1 행의 피해 횟수를 계산하고, 상기 제1 행에 대한 헬스 레벨 및 상기 제1 행의 피해 횟수를 곱하여 상기 제1 행의 피해 정도를 계산하는, 메모리 장치.
  7. 제6항에 있어서,
    상기 제어 로직은 상기 복수의 행 중 미리 설정된 기준 이상의 피해 정도를 가지는 행의 행 어드레스를 상기 희생 행 어드레스로서 결정하는, 메모리 장치.
  8. 제6항에 있어서,
    상기 제어 로직은 상기 피해 정도가 가장 큰 행의 행 어드레스를 상기 희생 행 어드레스로서 결정하는, 메모리 장치.
  9. 제1항에 있어서,
    상기 제어 로직은, 상기 복수의 행 각각에 대한 액세스 횟수와 상기 복수의 행 각각에 대한 헬스 레벨을 곱하여 상기 복수의 행 각각에 대한 가중 액세스 횟수를 계산하고, 상기 복수의 행 중 제1 행에 인접한 두 행의 가중 액세스 횟수를 더하여, 상기 제1 행의 피해 정도를 계산하는, 메모리 장치.
  10. 명령 및 어드레스를 제공하는 메모리 컨트롤러, 및
    복수의 행을 포함하는 메모리 셀 어레이를 포함하고, 상기 명령 및 어드레스에 의한 상기 복수의 행 각각에 대한 액세스 횟수 및 상기 복수의 행의 헬스 레벨을 곱한 값에 기초하여 리프레시를 수행할 희생 행 어드레스를 결정하고, 상기 희생 행 어드레스에 대응하는 행에 대한 리프레시를 수행하는 메모리 장치
    를 포함하는 메모리 시스템.
KR1020220168666A 2022-12-06 2022-12-06 메모리 장치 및 메모리 장치의 동작 방법 KR20240084157A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220168666A KR20240084157A (ko) 2022-12-06 2022-12-06 메모리 장치 및 메모리 장치의 동작 방법
CN202310884079.8A CN118155700A (zh) 2022-12-06 2023-07-18 存储器件、存储系统以及存储器件的操作方法
US18/232,940 US20240185904A1 (en) 2022-12-06 2023-08-11 Memory device and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220168666A KR20240084157A (ko) 2022-12-06 2022-12-06 메모리 장치 및 메모리 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20240084157A true KR20240084157A (ko) 2024-06-13

Family

ID=91280020

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220168666A KR20240084157A (ko) 2022-12-06 2022-12-06 메모리 장치 및 메모리 장치의 동작 방법

Country Status (3)

Country Link
US (1) US20240185904A1 (ko)
KR (1) KR20240084157A (ko)
CN (1) CN118155700A (ko)

Also Published As

Publication number Publication date
CN118155700A (zh) 2024-06-07
US20240185904A1 (en) 2024-06-06

Similar Documents

Publication Publication Date Title
KR102499061B1 (ko) 상 변화 메모리 장치를 포함하는 반도체 메모리 장치 및 상 변화 메모리 장치를 액세스하는 방법
JP7074519B2 (ja) メモリシステム、および、メモリ制御方法
KR20100117134A (ko) 메모리 셀프-리프레시 전력을 절약하기 위한 시스템들, 방법들 및 장치들
US10108365B1 (en) Bitflip security attack protection
US20230205428A1 (en) Memory module and memory system including row hammer counter chip and operating method thereof
US20230402086A1 (en) Memory system
CN114627929A (zh) 存储器控制器和存储器系统
US20230410875A1 (en) Memory device and defense method thereof
US11915738B2 (en) Memory with capability to detect rows that are prone to data loss, memory system and operation method of memory
KR20240084157A (ko) 메모리 장치 및 메모리 장치의 동작 방법
US20230162776A1 (en) Memory
US6862654B1 (en) Method and system for using dynamic random access memory as cache memory
CN115881185A (zh) 存储器装置、存储器系统和存储器装置的操作方法
KR20230037992A (ko) 로우 해머 방지 회로를 포함하는 메모리 장치 및 이의 동작 방법
US12002502B2 (en) Memory device and refresh method thereof
US20240069757A1 (en) Memory control device and refresh control method thereof
US20230420027A1 (en) Memory device and refresh method thereof
US20240038288A1 (en) Memory device refresh operations
CN113791987A (zh) 用于访问存储器模块的方法
KR20240030908A (ko) 메모리 제어 장치 및 리프레시 제어 방법
US20230064594A1 (en) Memory, memory system, operation method of memory and operation method of memory system
KR20240104462A (ko) 반도체 메모리 장치 및 이의 로우 해머 방지 방법
CN117636940A (zh) 存储器控制装置及其刷新控制方法
KR20240001647A (ko) 메모리 장치 및 그 리프레시 방법
KR20230173560A (ko) 메모리 장치 및 이의 방어 방법