KR20190033387A - 메모리 시스템 및 그의 동작 방법 - Google Patents

메모리 시스템 및 그의 동작 방법 Download PDF

Info

Publication number
KR20190033387A
KR20190033387A KR1020170122105A KR20170122105A KR20190033387A KR 20190033387 A KR20190033387 A KR 20190033387A KR 1020170122105 A KR1020170122105 A KR 1020170122105A KR 20170122105 A KR20170122105 A KR 20170122105A KR 20190033387 A KR20190033387 A KR 20190033387A
Authority
KR
South Korea
Prior art keywords
program
banks
address
information
bank
Prior art date
Application number
KR1020170122105A
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 KR1020170122105A priority Critical patent/KR20190033387A/ko
Priority to US15/940,062 priority patent/US10725695B2/en
Publication of KR20190033387A publication Critical patent/KR20190033387A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/40615Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
    • 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/40618Refresh operations over multiple banks or interleaving
    • 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
    • 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/409Read-write [R-W] circuits 
    • 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/409Read-write [R-W] circuits 
    • G11C11/4096Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/02Arrangements for writing information into, or reading information out from, a digital store with means for avoiding parasitic signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • 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/4076Timing 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
    • G11C2029/0411Online error correction
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

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

Abstract

본 발명은 메모리 시스템에 관한 것으로, 다수의 뱅크를 포함하는 메모리 장치; 및 상기 메모리 장치의 동작을 제어하며, 호스트로부터 요청되는 커맨드 셋으로 구성된 프로그램 별로 상기 다수의 뱅크들 각각의 로우 해머 정보를 산출하고, 상기 호스트로부터 특정 프로그램이 요청되면, 상기 특정 프로그램에 해당하는 상기 각 뱅크의 로우 해머 정보를 토대로 상기 뱅크들을 스케쥴링하는 메모리 컨트롤러를 포함할 수 있다.

Description

메모리 시스템 및 그의 동작 방법 {MEMORY SYSTEM AND OPERATING METHOD THEREOF}
본 특허문헌은 반도체 설계 기술에 관한 것으로, 구체적으로는 로우 해머(ROW HAMMER)가 발생할 수 있는 메모리 장치를 포함하는 메모리 시스템에 관한 것이다.
메모리 장치의 메모리 셀은 스위치역할을 하는 트랜지스터와 전하(데이터)를 저장하는 캐패시터로 구성되어 있다. 메모리 셀 내의 캐패시터에 전하가 있는가 없는가에 따라, 즉 캐패시터의 단자 전압이 높은가 낮은가에 따라 데이터의 '하이'(논리 1), '로우'(논리 0)를 구분한다.
데이터의 보관은 캐패시터에 전하가 축적된 형태로 되어 있는 것이므로 원리적으로는 전력의 소비가 없다. 그러나 트랜지스터의 PN결합 등에 의한 누설 전류가 있어서 캐패시터에 저장된 초기의 전하량이 소멸 되므로 데이터가 소실될 수 있다. 이를 방지하기 위해서 데이터를 잃어버리기 전에 메모리 셀 내의 데이터를 읽어서 그 읽어낸 정보에 맞추어 다시금 정상적인 전하량을 재충전해 주어야 한다. 이러한 동작은 주기적으로 반복되어야만 데이터의 기억이 유지되는데, 이러한 셀 전하의 재충전 과정을 리프레쉬(refresh) 동작이라 한다.
리프레쉬 동작은 메모리 컨트롤러로부터 메모리로 리프레쉬 커맨드가 입력될 때마다 수행되는데, 메모리 컨트롤러는 메모리의 데이터 유지 시간(data retention time)을 고려해 일정 시간마다 메모리로 리프레쉬 커맨드를 입력한다. 데이터 유지 시간이란 메모리 셀의 데이터가 리프레쉬 동작 없이 유지될 수 있는 시간을 나타낼 수 있다. 메모리 장치에 포함된 메모리 셀들은 어떤 기준 이상의 데이터 유지 시간을 가지도록 설계되므로, 이러한 기준을 고려하여 리프레쉬 동작의 간격이 결정될 수 있다.
그런데 어떤 메모리 셀의 저장된 전하량이 해당 메모리 셀이 연결된 워드 라인에 인접한 워드 라인의 액티브-프리차지에 의해 영향을 받는 경우 이러한 메모리 셀의 데이터는 리프레쉬 간격보다 짧은 시간에 데이터가 열화될 수 있다. 이러한 현상을 로우 해머(ROW HAMMER)라고 한다.
도 1 은 로우 해머를 설명하기 위해 메모리 장치에 포함된 셀 어레이의 일부를 나타낸 도면이다. 'BL'은 비트라인이다.
도 1을 참조하면, 'WLK-1', 'WLK', 'WLK+1'은 셀 어레이 내에서 나란히 배치된 3개 워드 라인이다. 'HIGH_ACT'가 표시된 'WLK'는 액티브 횟수가 많거나, 액티브 빈도가 높거나, 또는 액티브 시간이 긴 워드 라인이고, 'WLK-1' 및 'WLK+1'은 'WLK'와 인접하게 배치된 워드 라인이다. 'CELL_K-1', 'CELL_K', 'CELL_K+1'은 각각 'WLK-1', 'WLK', 'WLK+1'에 연결된 메모리 셀이다. 메모리 셀(CELL_K-1, CELL_K, CELL_K+1)은 셀 트랜지스터(TR_K-1, TR_K, TR_K+1) 및 셀 캐패시터(CAP_K-1, CAP_K, CAP_K+1)를 포함한다.
도 1에서 'WLK'가 많이 액티브 되거나, 자주 액티브되거나 또는 긴 시간 동안 액티브 되는 경우 'WLK'의 전압이 자주 토글하거나 긴 시간 동안 높은 전압으로 유지되어, 'WLK'와 'WLK-1' 및 'WLK+1' 사이에 발생하는 커플링 현상으로 인해 'WLK-1' 및 'WLK+1'에 연결된 메모리 셀들(CELL_K-1, CELL_K+1)에 저장된 데이터에도 영향을 미칠 수 있다. 이러한 영향은 메모리 셀에 저장된 데이터가 유지될 수 있는 시간을 감소시킬 수 있다.
상기와 같은 로우 해머를 방지하여 메모리 시스템의 성능을 개선시키기 위한 다양한 연구가 개발되고 있다.
본 발명의 실시 예가 해결하고자 하는 기술적 과제는, 로우 해머에 취약한 뱅크의 사용을 최소화할 수 있는 메모리 시스템 및 이의 동작 방법을 제공하는 데 있다.
본 발명의 일 실시 예에 따르면, 메모리 시스템은, 다수의 뱅크를 포함하는 메모리 장치; 및 상기 메모리 장치의 동작을 제어하며, 호스트로부터 요청되는 커맨드 셋으로 구성된 프로그램 별로 상기 다수의 뱅크들 각각의 로우 해머 정보를 산출하고, 상기 호스트로부터 특정 프로그램이 요청되면, 상기 특정 프로그램에 해당하는 상기 각 뱅크의 로우 해머 정보를 토대로 상기 뱅크들을 스케쥴링하는 메모리 컨트롤러를 포함할 수 있다.
본 발명의 일 실시 예에 따르면, 메모리 시스템의 동작 방법은, 호스트로부터 요청되는 커맨드 셋으로 구성된 프로그램 별로 메모리 장치에 포함된 다수의 뱅크들 각각의 로우 해머 정보를 산출하여 정보 저장부에 저장하는 단계; 및 상기 호스트로부터 특정 프로그램이 요청되면, 상기 정보 저장부에 저장된 로우 해머 정보 중 상기 특정 프로그램에 해당하는 상기 각 뱅크의 로우 해머 정보를 토대로 상기 뱅크들을 스케쥴링하는 단계를 포함할 수 있다.
제안된 실시 예에 따른 메모리 시스템은, 호스트로부터 요청되는 커맨드 셋으로 구성된 프로그램 별로 각 뱅크의 로우 해머 정보를 모니터링하고, 호스트로부터 특정 프로그램이 요청되면 특정 프로그램에 해당하는 각 뱅크의 로우 해머 정보를 토대로 뱅크들을 스케쥴링할 수 있다. 따라서, 각 프로그램 별로 로우 해머에 취약한 뱅크의 사용을 최소화함으로써, 메모리 시스템의 성능을 최적화할 수 있다.
도 1 은 로우 해머를 설명하기 위해 메모리 장치에 포함된 셀 어레이의 일부를 나타낸 도면이다.
도 2 는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 블록도 이다.
도 3 은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 상세 블록도 이다.
도 4 는 도 3 의 로우 해머 분석부의 상세 블록도 이다.
도 5 는 도 3 의 정보 저장부의 상세 블록도 이다.
도 6 은 본 발명의 실시 예에 따른 메모리 시스템의 제 1 동작을 설명하기 위한 순서도 이다.
도 7 은 도 6 의 제 1 동작을 설명하기 위한 타이밍도 이다.
도 8a 및 도 8b 는 도 6 및 도 7 의 이해를 돕기 위한 도면 이다.
도 9 는 본 발명의 실시 예에 따른 메모리 시스템의 제 2 동작을 설명하기 위한 순서도 이다.
도 10 은 도 9 의 이해를 돕기 위한 도면 이다.
도 11 은 본 발명의 다른 실시 예에 따른 메모리 시스템을 설명하기 위한 상세 블록도 이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시 예들을 첨부 도면을 참조하여 설명하고자 한다.
지금까지는 로우 해머를 방지하기 위한 방법으로 리프레쉬 주기를 짧게 하는 것이 제안되어 왔다. 하지만, 일괄적으로 리프레쉬 주기를 짧게 하는 것은 불필요한 리프레쉬 동작으로 인한 파워 소모와 성능 저하를 야기 할 수 있다. 특히, 메모리 장치를 충분히 테스트한 후 출하하더라도, 실제로 메모리 장치가 실장되어 사용되는 시스템 환경, 해당 시스템 환경에서 CPU(호스트)가 요청하는 커맨드들의 조합 (이하, “커맨드 셋”이라 한다), 그리고 메모리 셀 등의 공정 변수에 의해 추가로 로우 해머가 발생될 수 있다. 로우 해머를 방지하기 위해서는, 상기의 요소들을 모두 고려하여 실제로 메모리 시스템이 사용되는 필드에서 직접 조치를 취할 필요가 있다.
이하, 제안 발명에서는, 필드에서 메모리 시스템의 성능을 최적화하는 방법에 대해 논의하고자 한다.
도 2 는 본 발명의 실시예에 따른 메모리 시스템(10)이 적용된 데이터 처리 시스템을 설명하기 위한 블록도 이다.
도 2 를 참조하면, 데이터 처리 시스템은 메모리 시스템(10)과 호스트(20)를 포함할 수 있다. 호스트(20)는, 코어(core)로서 지칭될 수 있는 독립적이고 실질적인 프로세서를 의미하며, 프로세서 1개로 구현될 수도 있으며, 또는 2개 이상 포함하는 멀티-코어 프로세서(multi-core processor)로 구현될 수도 있다. 메모리 시스템(10)은 메모리 컨트롤러(100)와 메모리 장치(200)를 포함할 수 있다.
메모리 장치(200)는 다수의 뱅크들(BANK1~BANKN)을 구비할 수 있다. 다수의 뱅크들(BANK1~BANKN) 각각은 워드 라인(WL)과 비트 라인(BL) 사이에 연결된 다수의 메모리 셀들(MC)을 포함하는 메모리 셀 어레이로 구성될 수 있다. 본 발명에 따른 메모리 장치(200)는 워드 라인이 포함된 메모리 셀 어레이를 포함하는 기억 장치로서 로우 해머(ROW HAMMER)가 발생할 수 있는 것이면 충분하며 특정한 종류의 것으로 한정되는 것은 아니다.
메모리 컨트롤러(100)는 호스트(20)로부터 입력되는 요청(REQ)에 응답하여 커맨드(CMD), 데이터(DATA), 어드레스(ADDR)를 메모리 장치(200)로 전달하여 메모리 장치(200)의 동작을 제어할 수 있다. 한편, 호스트(20)로부터 입력되는 요청(REQ)은 단순히 리드 커맨드 혹은 라이트 커맨드 만을 포함할 수도 있지만, 서로 다른 어플리케이션을 수행하기 위한 다수 개의 커맨드들의 조합(즉, 커맨드 셋)일 수도 있다. 이하에서는, 호스트(20)로부터 입력되는 커맨드 셋으로 구성되어 서로 다른 어플리케이션을 수행하기 위한 동작을 “프로그램(program)”이라고 정의한다. 본 발명의 실시예에 따른 메모리 컨트롤러(100)는 호스트(20)로부터 요청되는 커맨드 셋으로 구성된 프로그램 별로 다수의 뱅크들(BANK1~BANKN) 각각의 로우 해머 정보를 산출하고, 호스트(20)로부터 특정 프로그램이 요청되면, 산출된 로우 해머 정보 중에서, 특정 프로그램에 해당하는 각 뱅크(BANK1~BANKN)의 로우 해머 정보를 토대로 뱅크들(BANK1~BANKN)을 스케쥴링할 수 있다.
보다 상세하게, 메모리 컨트롤러(100)는, 제어 로직(110), 로우 해머(RH) 정보 관리부(120), 에러 정정 코드(ECC)부(130), 호스트 인터페이스(I/F)(140), 메모리 인터페이스(I/F)(150) 및 그들 사이를 연결하는 버스(160)를 포함할 수 있다.
호스트 인터페이스(140)는 호스트(20)와 메모리 컨트롤러(100) 사이에 위치하여, 호스트(20)로부터 입력되는 요청들(REQ)을 버퍼링하여 내부 구성들로 전달하고, 요청들(REQ)의 처리 결과들을 호스트(20)로 전송할 수 있다.
메모리 인터페이스(150)는 메모리 컨트롤러(100)와 메모리 장치(200) 사이에 위치하여, 메모리 컨트롤러(100)로부터 메모리 장치(200)로 커맨드(CMD)와 어드레스(ADD)를 전달하고, 메모리 장치(200)와 메모리 컨트롤러(100) 간에 데이터(DATA)를 송/수신할 수 있다.
ECC부(130)는, 라이트 동작 시 라이트 데이터를 이용하여 패리티(parity) 비트를 생성하고, 리드 동작 시 메모리 장치(200)로부터 독출된 리드 데이터에 포함된 에러를 검출 및 정정한다. 즉, ECC부(130)는, 패리티(parity) 비트를 이용하여 리드 데이터의 에러 비트를 정정하되, 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정하지 못함을 알리는 에러 정정 실패 신호를 출력할 수 있다. ECC부(130)는, 에러 정정된 리드 데이터 및 리드 데이터의 에러 정보를 제어 로직(110)으로 제공하고, 리드 데이터의 에러 정보를 RH 정보 관리부(120)로 제공할 수 있다.
RH 정보 관리부(120)는, 하나의 프로그램(이하, '제 1 프로그램'이라 한다)의 각 리프레쉬 주기 동안 다수의 뱅크들(BANK1~BANKN) 각각에 입력되는 커맨드(CMD) 및 어드레스(ADDR)를 토대로 해당 뱅크의 크리티컬 어드레스를 설정할 수 있다. 그리고, 하나의 프로그램과 동일한 커맨드 셋을 가지는 다음 프로그램 (이하, '제 2 프로그램'이라 한다) 동안, 각 뱅크의 크리티컬 어드레스에 대한 에러 보정수를 누적 카운트하여 로우 해머 정보를 산출할 수 있다. 이 때, 로우 해머 정보는 프로그램 별 각 뱅크의 리프레쉬 주기 및 프로그램 별 각 뱅크의 로우 해머 발생 순위를 포함할 수 있다.
제어 로직(110)은 메모리 시스템(10)의 전체적인 동작을 제어하며, 호스트(20)로부터의 요청(REQ)에 응답하여, 메모리 장치(200)에 대한 라이트 동작 또는 리드 동작을 제어한다. 또한, 제어 로직(110)은 메모리 장치(200)의 리페어 정보 혹은 ECC부(130)로부터 제공되는 리드 데이터의 에러 정보를 토대로 뱅크 어드레스 스왑을 통한 어드레스 리맵 동작을 수행할 수 있다. 따라서, 제어 로직(110)은 리페어가 발생한 뱅크 혹은 에러가 발생한 뱅크가 되도록 사용되지 않도록 스케쥴링하여 메모리 시스템(10)의 성능을 개선시킬 수 있다.
특히, 본 발명의 실시 예에 따른 제어 로직(110)은 호스트(20)로부터 특정 프로그램이 요청되면, RH 정보 관리부(120)에 의해 산출된 로우 해머 정보 중에서, 특정 프로그램에 해당하는 각 뱅크(BANK1~BANKN)의 로우 해머 정보를 토대로 어드레스 리맵 동작을 수행함으로써 뱅크들(BANK1~BANKN)을 스케쥴링할 수 있다.
예를 들어, 해머 정보의 프로그램 별 각 뱅크의 로우 해머 발생 순위를 토대로 제 1 프로그램 시 제 1 뱅크의 로우 해머가 가장 많이 발생함을 파악하는 경우, 제어 로직(110)은 어드레스 리맵 동작을 통해 제 1 프로그램에서는 제 1 뱅크가 최소한으로 선택되도록 스케쥴링할 수 있다. 동시에, 제어 로직(110)은 로우 해머 정보의 프로그램 별 각 뱅크의 리프레쉬 주기를 이용하여 제 1 뱅크가 선택되더라도 제 1 뱅크의 리프레쉬 주기가 다른 뱅크보다 더 짧도록 조절하여 메모리 시스템(10)의 성능을 최적화할 수 있다.
반면, 로우 해머 정보의 프로그램 별 각 뱅크의 로우 해머 발생 순위를 토대로 제 2 프로그램에서 제 2 뱅크에서 로우 해머가 가장 적게 발생함을 파악하는 경우, 제어 로직(110)은 어드레스 리맵 동작을 통해 상기 제 2 프로그램에서는 제 2 뱅크가 다른 뱅크들보다 자주 선택되도록 상기 뱅크들을 스케쥴링하고, 로우 해머 정보의 프로그램 별 각 뱅크의 리프레쉬 주기를 이용하여 상기 제 2 뱅크의 리프레쉬 주기가 다른 뱅크들보다 더 길도록 조절할 수 있다.
따라서, 본 발명에 따른 메모리 시스템(10)은 프로그램 별로 로우 해머 리스크가 높은 뱅크의 순위를 추출하고, 어드레스 리맵을 통하여 뱅크들을 스케쥴링함으로써 각 프로그램 별로 로우 해머에 취약한 뱅크의 사용을 최소화하여 메모리 시스템의 성능을 최적화할 수 있다.
한편, 상기에서 설명된 메모리 컨트롤러(100)의 구성은 발명과 직접적으로 관련된 구성만을 도시하고 있을 뿐이며, 메모리 컨트롤러(100)는 상기의 구성 외에도 다른 구성들을 더 포함할 수 있다. 예를 들어, 메모리 컨트롤러(100)의 동작 메모리로서, 메모리 컨트롤러(100)의 구동을 위한 데이터를 저장하기 위한 메모리(미도시)가 추가적으로 구비될 수 있다. 메모리는, 메모리 컨트롤러(100)가 호스트(20)로부터의 요청(REQ)에 응답하여, 메모리 장치(200)로부터 리드 데이터를 호스트(20)로 제공하고 호스트(20)로부터 라이트 데이터를 메모리 장치(200)에 제공할 때, 메모리 컨트롤(100)와 메모리 장치(200)의 동작에 필요한 데이터를 임시 저장할 수 있다.
도 3 은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 상세 블록도 이다.
도 3 의 메모리 시스템은 도 2 의 메모리 시스템(10)의 제어 로직(110)과 RH 정보 관리부(120)를 구체적으로 도시한 블록도 이다. 설명의 편의를 위해, 도 3 에서는, 도 2 의 ECC부(130), 호스트 인터페이스(140) 및 메모리 인터페이스(150)의 구성은 생략하고, 에러 정보(ECC_INF)가 ECC부(130)로부터 RH 정보 관리부(120)로 제공되고, 호스트 커맨드(H_CMD), 호스트 어드레스(H_ADDR) 및 호스트 데이터(H_DATA)가 호스트 인터페이스(140)를 통해 호스트(20)로부터 제공되고, 메모리 커맨드(M_CMD), 메모리 어드레스(M_ADDR) 및 메모리 데이터(M_DATA)가 메모리 인터페이스(150)를 통해 메모리 장치(200)로부터 제공되는 경우를 도시하고 있다.
도 3 을 참조하면, RH 정보 관리부(120)는 커맨드/어드레스(CA) 제어부(310), 로우 해머(RH) 분석부(320) 및 정보 저장부(330)를 포함할 수 있다.
CA 제어부(310)는, 호스트 커맨드(H_CMD) 및 호스트 어드레스(H_ADDR)를 토대로 프로그램 타입 신호(PGM_NO), 액티브 커맨드(ACT) 및 타겟 어드레스(RADD)를 출력할 수 있다. 또한, CA 제어부(310)는, 호스트 커맨드(H_CMD) 및 호스트 어드레스(H_ADDR)를 토대로, 하나의 프로그램 구간을 구분하는 프로그램 종료 신호(PGM_END) 및 리프레쉬 주기를 정의하는 리프레쉬 커맨드(REF)를 생성할 수 있다.
프로그램 타입 신호(PGM_NO)는 커맨드 셋에 따른 프로그램의 타입을 구별/결정하기 위한 신호이다. 예를 들어, 특정 게임 어플리케이션을 수행하기 위한 {커맨드 A - 커맨드 B- 커맨드 C - 커맨드 A}의 커맨드 셋을 포함하는 제 1 프로그램과, 특정 음악 어플리케이션을 수행하기 위한 {커맨드 D - 커맨드 E}의 커맨드 셋을 포함하는 제 2 프로그램이 있다고 가정하면, 프로그램 타입 신호(PGM_NO)는 제 1 프로그램을 나타내는 제 1 비트 및 제 2 프로그램을 나타내는 제 2 비트로 구성될 수 있다. 또는, 프로그램 타입 신호(PGM_NO)는 제 1 프로그램을 나타내는 로직 로우 레벨 혹은 제 2 프로그램을 나타내는 로직 하이 레벨을 가지도록 정의될 수 있다. 하지만, 이는 하나의 예시 일뿐 본 발명의 프로그램의 타입은 이에 한정되지 않으며, M 개의 프로그램들의 타입들이 있는 경우, 프로그램 타입 신호(PGM_NO)는 M 개의 프로그램들의 타입들을 구별하기 위한 다수 개의 비트 수(예를 들어, log2 M 보다 크거나 같고 M 보다 작거나 같은 비트 수)를 포함할 수 있다. 프로그램 종료 신호(PGM_END)는 해당 프로그램이 종료되면 활성화되는 신호일 수 있다. 타겟 어드레스(RADD)는 특정 뱅크의 어드레스와 해당 뱅크의 로우 어드레스 정보를 포함할 수 있다. 액티브 커맨드(ACT)는 타겟 어드레스(RADD)에 대응되는 특정 뱅크의 워드 라인을 활성화시키기 위한 신호일 수 있다.
RH 분석부(320)는, 제 1 프로그램의 각 리프레쉬 주기 동안 액티브 커맨드(ACT) 및 타겟 어드레스(RADD)를 토대로 각 뱅크의 크리티컬 어드레스(CRT_ADD)를 설정하고, 제 1 프로그램과 동일한 커맨드 셋을 가지는 제 2 프로그램 동안 크리티컬 어드레스(CRT_ADD)에 대한 에러 보정수를 누적 카운트하여 각 뱅크의 로우 해머 정보(RH_INF)를 산출할 수 있다. 이 때, RH 분석부(320)는, 프로그램 타입 신호(PGM_NO) 및 프로그램 종료 신호(PGM_END)에 따라 특정 프로그램을 정의하고, 리프레쉬 커맨드(REF)에 따라 하나의 리프레쉬 주기를 정의할 수 있다.
정보 저장부(330)는 프로그램 타입 신호(PGM_NO)에 따라, 각 뱅크의 로우 해머 정보(RH_INF)를 저장할 수 있다. 바람직하게, 정보 저장부(330)는 프로그램들의 타입들의 수(M)에 대응하는 제 1 내지 제 M 저장부(330_1 ~ 330_M)를 포함하고, 프로그램 타입 신호(PGM_NO)에 따라 제 1 내지 제 M 저장부(330_1 ~ 330_M) 중 대응되는 저장부를 선택하여 각 뱅크의 로우 해머 정보(RH_INF)를 저장할 수 있다.
제어 로직(110)은 호스트로부터 특정 프로그램이 요청되면, 정보 저장부(330)의 제 1 내지 제 M 저장부(330_1 ~ 330_M) 중, 특정 프로그램에 해당하는 저장부에 저장된 각 뱅크의 로우 해머 정보(RH_INF)를 이용하여 어드레스 리맵 동작을 수행하여 메모리 커맨드(M_CMD), 메모리 어드레스(M_ADDR) 및 메모리 데이터(M_DATA)를 메모리 장치로 제공할 수 있다.
보다 상세하게, RH 분석부(320)는, 어드레스 설정부(322), 에러 분석부(324) 및 계산부(326)를 포함할 수 있다.
어드레스 설정부(322)는, 제 1 프로그램의 각 리프레쉬 주기 동안, 각 뱅크에 입력되는 액티브 커맨드(ACT)의 수를 카운팅하고, 카운팅 수 및 타겟 어드레스(RADD)에 따라 각 뱅크의 크리티컬 어드레스(CRT_ADD)를 설정할 수 있다. 에러 분석부(324)는, ECC부(도 2 의 130)로부터 제공되는 ECC 정보(ECC_INF)를 토대로 각 뱅크의 크리티컬 어드레스(CRT_ADD)에 대한 에러 보정수를 제 2 프로그램 동안 누적하여 카운팅하고, 누적 카운팅된 에러 보정수를 누적 에러 보정수(ACC_ECC)로 출력할 수 있다. 계산부(326)는 누적 에러 보정수(ACC_ECC)를 토대로 각 뱅크의 로우 해머 정보(RH_INF)를 산출할 수 있다.
도 4 는 도 3 의 RH 분석부(320)의 상세 블록도 이다.
도 4 를 참조하면, 어드레스 설정부(322)는 어드레스 선택부(410) 및 어드레스 저장부(420)를 포함할 수 있다.
어드레스 선택부(410)는, 리프레쉬 커맨드(REF)에 따라 각 뱅크에 입력되는 액티브 커맨드(ACT)의 수를 타겟 어드레스(RADD) 별로 카운팅하고, 카운팅 수가 임계값을 초과하는 경우, 해당 타겟 어드레스(RADD)의 인접 어드레스를 각 뱅크의 크리티컬 어드레스(CRT_ADD)로 선택할 수 있다. 바람직하게, 어드레스 선택부(410)는 각 뱅크에 입력되는 액티브 커맨드(ACT)의 수를 타겟 어드레스(RADD) 별로 카운팅하며, 리프레쉬 커맨드(REF)에 따라 리셋되는 카운터를 포함할 수 있다. 따라서, 어드레스 선택부(410)는, 각 리프레쉬 주기 마다 액티브 커맨드(ACT)의 카운팅 수를 초기화할 수 있다.
참고로, 인접 어드레스는 액티브 커맨드(ACT)가 수행될 타겟 어드레스(RADD)에 대응하는 워드 라인(이하, '타겟 워드 라인'이라고 한다)에 인접한 워드 라인들을 지정하기 위한 것이다. 인접한 워드 라인은 타겟 워드 라인 바로 옆의 하나 또는 두 개의 워드 라인을 포함할 수 있다. 다른 실시예에서, 인접한 워드 라인은 타겟 워드 라인 주변의 8개, 16개 또는 기타 다른 개수의 워드 라인 전체를 의미할 수도 있다. 본 실시 예에서 비교 기준이 되는 임계값은 실험적으로 미리 결정될 수 있다. 임계값이 너무 작으면 인접한 워드 라인을 활성화하는데 필요한 동작이 빈번하게 발생하므로 시스템의 성능을 저하시킬 수 있고, 임계값이 너무 크면 로우 해밍에 의한 데이터 파괴 현상을 방지하지 못할 수 있다. 따라서 임계값은 타겟 워드 라인에 대한 연속적인 접근/액티브 회수, 리프레쉬 주기, 메모리 장치 내의 워드 라인 접근 분포 등의 다양한 요소를 고려하여 결정될 수 있다.
어드레스 저장부(420)는, 프로그램 타입 신호(PGM_NO)에 따라 어드레스 선택부(410)에서 선택된 각 뱅크의 크리티컬 어드레스(CRT_ADD)를 저장하거나 출력할 수 있다. 어드레스 저장부(420)는 프로그램들의 타입들의 수(M)에 대응하는 제 1 내지 제 M 단위 저장부(420_1~420_M)를 포함하고, 프로그램 타입 신호(PGM_NO)에 따라 제 1 내지 제 M 단위 저장부(420_1~420_M) 중 대응되는 단위 저장부를 선택하여 각 뱅크의 크리티컬 어드레스(CRT_ADD)를 저장하거나 저장된 크리티컬 어드레스(CRT_ADD)를 출력할 수 있다. 예를 들어, 소정 프로그램을 의미하는 프로그램 타입 신호(PGM_NO)가 첫번째(혹은 홀수 번째)로 입력되면, 어드레스 저장부(420)는 소정 프로그램에 대응되는 제 1 단위 저장부에 각 뱅크의 크리티컬 어드레스(CRT_ADD)를 저장하고, 소정 프로그램을 의미하는 프로그램 타입 신호(PGM_NO)가 두번째(혹은 짝수 번째)로 입력되면, 어드레스 저장부(420)는 제 1 단위 저장부에 저장된 각 뱅크의 크리티컬 어드레스(CRT_ADD)를 출력할 수 있다.
에러 분석부(324)는 누적 카운터(430) 및 에러 저장부(440)를 포함할 수 있다.
누적 카운터(430)는, 프로그램 종료 신호(PGM_END)에 따라 ECC 정보(ECC_INF)를 토대로 각 뱅크의 크리티컬 어드레스(CRT_ADD)에 대한 에러 보정수를 누적 카운팅하여 누적 에러 보정수(ACC_ECC)를 출력할 수 있다. 누적 카운터(430)는, 하나의 프로그램 동안 각 뱅크의 크리티컬 어드레스(CRT_ADD)에 대한 에러 보정수를 누적하여 카운팅할 수 있다. 에러 저장부(440)는 누적 카운터(430)로부터 제공되는 각 뱅크의 누적 에러 보정수(ACC_ECC)를 저장할 수 있다. 바람직하게, 누적 카운터(430) 및 에러 저장부(440)는, 프로그램 종료 신호(PGM_END)에 따라 리셋되어, 하나의 프로그램 동안 누적 카운팅된 누적 에러 보정수(ACC_ECC)를 초기화할 수 있다.
계산부(326)는 주기 변환부(450) 및 랭킹 결정부(460)를 포함할 수 있다.
주기 변환부(450)는, 누적 에러 보정수(ACC_ECC)를 토대로 각 뱅크의 리프레쉬 주기를 변환할 수 있다. 랭킹 결정부(460)는, 누적 에러 보정수(ACC_ECC)를 토대로 각 뱅크의 로우 해머 발생 순위를 결정할 수 있다. 주기 변환부(450)에서 변환된 각 뱅크의 리프레쉬 주기 및 랭킹 결정부(460)에서 결정된 각 뱅크의 로우 해머 발생 순위는 각 뱅크의 로우 해머 정보(RH_INF)로 출력될 수 있다.
상기와 같은 과정을 거쳐, RH 분석부(320)는 프로그램 별 각 뱅크의 리프레쉬 주기(REF_RATE) 및 로우 해머 발생 순위(RANKING)를 포함하는 로우 해머 정보(RH_INF)를 산출하여 출력할 수 있다.
도 5 는 도 3 의 정보 저장부(330)의 상세 블록도 이다.
도 5 를 참조하면, 정보 저장부(330)는 프로그램 타입 신호(PGM_NO)에 따라 선택되는 제 1 내지 제 M 저장부(330_1 ~ 330_M)를 포함할 수 있다.
제 1 내지 제 M 저장부(330_1 ~ 330_M) 각각은 다수의 뱅크들(도 2 의 BANK1~BANKN))의 수에 대응하는 N 개의 단위 저장부(REG_BK1~REG_BKN)를 포함할 수 있다. 즉, 본 발명의 실시예에 따른 정보 저장부(330)는 프로그램들의 타입들의 수(M) * 뱅크들의 수(N)에 대응하는 M*N 개의 단위 저장부를 구비할 수 있다. M*N 개의 단위 저장부는 각각, 프로그램 별 각 뱅크의 리프레쉬 주기(REF_RATE) 및 로우 해머 발생 순위(RANKING)를 포함하는 로우 해머 정보(RH_INF)를 저장할 수 있다.
이하, 도 2 내지 도 10 을 참조하여, 본 발명의 실시예에 따른 메모리 시스템의 동작 방법에 대해 설명하고자 한다. 이하에서, 메모리 시스템의 동작 방법을 제 1 동작과 제 2 동작으로 나누어서 설명하기로 한다. 제 1 동작은 각 뱅크의 크리티컬 어드레스(CRT_ADD)를 설정하는 동작이고, 제 2 동작은 설정된 각 뱅크의 크리티컬 어드레스(CRT_ADD)에 대해 누적 에러 보정수(ACC_ECC)를 생성하여 각 뱅크의 로우 해머 정보(RH_INF)를 산출하는 동작으로 정의될 수 있다. 제 1 동작이 제 1 프로그램 동안 수행된 후, 제 2 동작이 제 1 프로그램과 동일한 커맨드 셋으로 구성된 제 2 프로그램 동안 수행될 수 있다. 즉, 제 1 동작 및 제 2 동작은 각각 동일한 커맨드 셋으로 구성된 동일 프로그램에서 순차적 독립적으로 수행될 수 있다. 또한, 제 1 동작 및 제 2 동작은 호스트의 요청에 따라 파워업(부트업)시 한번만 수행되거나 또는 주기적으로 수행될 수도 있다.
도 6 은 본 발명의 실시 예에 따른 메모리 시스템의 제 1 동작을 설명하기 위한 순서도 이다. 도 7 은 도 6 의 메모리 시스템의 제 1 동작을 설명하기 위한 타이밍도 이다. 도 8a 및 도 8b 는 도 6 및 도 7 의 이해를 돕기 위한 도면 이다.
도 6 을 참조하면, 호스트(20)로부터 특정 프로그램 i가 요청되면(S610), RH 정보 관리부(120)의 CA 제어부(310)는, 호스트 커맨드(H_CMD) 및 호스트 어드레스(H_ADDR)를 토대로 프로그램 타입 신호(PGM_NO), 리프레쉬 커맨드(REF), 액티브 커맨드(ACT) 및 타겟 어드레스(RADD)를 출력한다.
리프레쉬 커맨드(REF)가 입력되면(S620), RH 분석부(320)의 어드레스 설정부(322)의 어드레스 선택부(410)는 다음 리프레쉬 커맨드(REF)가 입력될 때까지 각 뱅크에 입력되는 액티브 커맨드(ACT)의 수를 타겟 어드레스(RADD) 별로 카운팅한다(S630).
다음 리프레쉬 커맨드(REF)가 입력될 때까지 상기의 과정은 되풀이될 수 있다(S640의 NO).
다음 리프레쉬 커맨드(REF)가 입력되면(S640의 YES), 어드레스 선택부(410)는 카운팅 수가 임계값을 초과하는 지를 확인할 수 있다(S650). 카운팅 수가 임계값을 초과하는 경우(S650의 YES), 어드레스 선택부(410)는 해당 타겟 어드레스(RADD)의 인접 어드레스를 각 뱅크의 크리티컬 어드레스(CRT_ADD)로 선택하고(S660), 어드레스 저장부(420)는 프로그램 타입 신호(PGM_NO)에 따라 설정된 각 뱅크의 크리티컬 어드레스(CRT_ADD)를 저장한다(S670). 따라서, 프로그램 별로 각 뱅크의 크리티컬 어드레스(CRT_ADD)가 어드레스 저장부(420)에 저장될 수 있다.
반면, 카운팅 수가 임계값을 초과하지 않는 경우(S650의 NO), 어드레스 설정부(322)는 해당 뱅크의 크리티컬 어드레스(CRT_ADD)를 설정하지 않는다.
어드레스 선택부(410)는 리프레쉬 커맨드(REF)에 따라 액티브 커맨드(ACT)의 카운팅 수를 초기화할 수 있다(S680).
이 후, 특정 프로그램 i가 종료될 때까지, 상기의 동작(S630~S680)은 되풀이 될 수 있다(S690의 NO). 특정 프로그램 i가 종료되면(S690의 YES), 제 1 동작은 종료될 수 있다.
도 7 및 도 8a 를 참조하면, 제 1 리프레쉬 주기(REF_PER1) 동안, 각 뱅크에 입력되는 액티브 커맨드(ACT)의 수가 각 타겟 어드레스(RADD) 별로 카운팅된다. 예를 들어, 제 1 리프레쉬 주기(REF_PER1) 동안 제 1 뱅크의 제 1 로우 어드레스(RADD1)에 대해서는 10번의 액티브 커맨드(ACT)가 입력되고, 제 1 뱅크의 제 3 로우 어드레스(RADD3)에 대해서는 7번의 액티브 커맨드(ACT)가 입력되어 5로 설정된 임계값을 초과하는 경우, 도 7 및 도 8b 에 도시된 바와 같이 제 1 로우 어드레스(RADD1) 및 제 3 로우 어드레스(RADD3)의 인접 어드레스가 제 1 뱅크의 크리티컬 어드레스(CRT_ADD)로 설정될 수 있다. 반면, 제 2 리프레쉬 주기(REF_PER2) 동안 제 1 뱅크의 로우 어드레스에 대한 액티브 커맨드(ACT)의 카운팅 수가 임계값을 초과하지 않는 경우, 제 1 뱅크에 대한 크리티컬 어드레스(CRT_ADD)는 설정되지 않을 수 있다.
도 9 는 본 발명의 실시 예에 따른 메모리 시스템의 제 2 동작을 설명하기 위한 순서도 이다. 도 10 은 도 9 의 이해를 돕기 위한 도면 이다.
도 9 및 도 10 을 참조하면, 도 6 의 특정 프로그램 i가 수행되어 각 뱅크의 크리티컬 어드레스(CRT_ADD)가 설정된 후, 호스트(20)로부터 특정 프로그램 i가 재요청 된다(S910).
RH 정보 관리부(120)의 CA 제어부(310)는, 호스트 커맨드(H_CMD) 및 호스트 어드레스(H_ADDR)를 토대로 프로그램 타입 신호(PGM_NO), 프로그램 종료 신호(PGM_END), 리프레쉬 커맨드(REF), 액티브 커맨드(ACT) 및 타겟 어드레스(RADD)를 출력한다.
RH 분석부(320)의 어드레스 설정부(322)의 어드레스 저장부(420)는 프로그램 타입 신호(PGM_NO)에 따라 저장된 각 뱅크의 크리티컬 어드레스(CRT_ADD)를 출력할 수 있다(S920).
RH 분석부(320)의 에러 분석부(324)의 누적 카운터(430)는 ECC 정보(ECC_INF)를 토대로 어드레스 저장부(420)에 저장된 각 뱅크의 크리티컬 어드레스(CRT_ADD)에 대한 에러 보정수를 하나의 프로그램 동안 누적하여 카운팅하여, 누적 에러 보정수(ACC_ECC)를 출력한다(S930).
프로그램 종료 신호(PGM_END)에 따라 특정 프로그램 i가 종료되면(S940의 YES), 에러 저장부(440)는 누적 카운터(430)로부터 제공되는 특정 프로그램 i에 대한 각 뱅크의 누적 에러 보정수(ACC_ECC)를 저장할 수 있다(S950).
계산부(326)는 누적 에러 보정수(ACC_ECC)를 토대로 각 뱅크의 로우 해머 정보(RH_INF)를 산출할 수 있다.
보다 자세하게, 계산부(326)의 주기 변환부(450)는, 누적 에러 보정수(ACC_ECC)를 토대로 각 뱅크의 리프레쉬 주기를 변환할 수 있다(S960). 랭킹 결정부(460)는, 누적 에러 보정수(ACC_ECC)를 토대로 각 뱅크의 로우 해머 발생 순위를 결정할 수 있다(S970). 주기 변환부(450)에서 변환된 각 뱅크의 리프레쉬 주기 및 랭킹 결정부(460)에서 결정된 각 뱅크의 로우 해머 발생 순위는 각 뱅크의 로우 해머 정보(RH_INF)로 출력될 수 있다.
정보 저장부(330)는 프로그램 타입 신호(PGM_NO)에 따라 제 1 내지 제 M 저장부(330_1 ~ 330_M) 중 대응되는 저장부를 선택하고, 계산부(326)로부터 전달되는 각 뱅크의 로우 해머 정보(RH_INF)를 저장할 수 있다(S980).
이 후, 누적 카운터(430) 및 에러 저장부(440)는, 프로그램 종료 신호(PGM_END)에 따라 리셋되어, 하나의 프로그램 동안 누적 카운팅된 누적 에러 보정수(ACC_ECC)를 초기화할 수 있다(S990).
이 후, 제어 로직(110)은 호스트로부터 특정 프로그램 i가 요청되면, 정보 저장부(330)의 제 1 내지 제 M 저장부(330_1 ~ 330_M) 중, 특정 프로그램 i에 해당하는 저장부에 저장된 각 뱅크의 로우 해머 정보(RH_INF)를 이용하여 어드레스 리맵 동작을 수행하여 메모리 커맨드(M_CMD), 메모리 어드레스(M_ADDR) 및 메모리 데이터(M_DATA)를 메모리 장치로 제공할 수 있다.
상기와 같이, 제안 발명에서는, 메모리 컨트롤러가, 호스트로부터 요청되는 커맨드 셋으로 구성된 프로그램 별로 메모리 장치의 다수의 뱅크들 각각의 로우 해머 페일 경향을 모니터링하여 로우 해머 정보로 관리한다. 이 후, 호스트로부터 특정 프로그램이 요청되면, 특정 프로그램에 해당하는 각 뱅크의 로우 해머 정보를 토대로 어드레스 리맵을 통해 로우 해머 발생률이 낮은 순위의 뱅크가 우선적으로 선택되도록 뱅크들을 스케쥴링할 수 있다. 필요에 따라서는, 로우 해머 발생률이 낮은 순위의 뱅크의 리프레쉬 주기가 다른 뱅크들에 비해 길게 조절할 수 있다. 따라서, 필드에서의 메모리 시스템의 성능을 최적화할 수 있다.
인텔 등 주요 CPU 업체에서는, 최근 FPGA 등을 통하여 사용자가 프로그램을 자유롭게 바꿀 수 있는 딥 러닝(deep learning)을 위한 프로세서 개발을 진행 중이고, 이러한 기술이 서버 시장에 주요 트렌드(major trend)로 자리 잡을 가능성이 있다. 향후 IoT 시장에서 유저가 CPU의 프로그램을 기계학습(machine learning)/인공지능 등을 위해 직접 수정하여 만들 트렌드가 형성될 때, 메모리 컨트롤러가 유저가 직접 작성하는 다양한 프로그램을 실시간으로 분석하여 프로그램 별로 각 뱅크의 로우 해머 정보를 모니터링하여 CPU 스케쥴링에 바로 반영하는 해당 기술이 중요해 질 것이라 예상된다.
한편, 상기의 실시 예에서는, 하나의 뱅크 내에서는 공정 변동(process variation)이 매우 적은 경향을 가지므로, 즉, 하나의 뱅크 내의 셀들의 공정 특성이 매우 비슷하기 때문에, 각 뱅크에 대한 로우 해머 정보(RH_INF)를 저장하도록 설명되었다. 하지만, 본 발명은 이에 한정되지 않는다. 다른 실시 예에서는, 각 뱅크의 로우 해머 정보(RH_INF) 대신에, 사용자의 요구에 따라 랭크(rank) 혹은 메모리 블록 단위의 로우 해머 정보(RH_INF)를 저장하도록 조절할 수 있다.
또한, 로우 해머가 액티브 커맨드(ACT) 및 리프레쉬 커맨드(REF) 패턴에 영향을 많이 받는 페일 경향을 가지므로, 상기의 실시 예에서는 프로그램 별 로우 해머 정보(RH_INF)를 저장하도록 설명되었다. 하지만, 본 발명은 이에 한정되지 않는다. 다른 실시 예에서는, 프로그램 별 로우 해머 정보(RH_INF) 대신에, 로우 해머에 영향을 미칠 수 있는 단위로 로우 해머 정보(RH_INF)를 저장하도록 조절할 수 있다.
이하, 도 11 을 참조하여, 동시에 수행되는 프로그램들을 처리하는 경우 본 발명의 실시예에 따른 메모리 시스템에 대해 알아보고자 한다.
도 11 은 본 발명의 다른 실시 예에 따른 RH 정보 관리부를 설명하기 위한 상세 블록도 이다. 도 11 의 메모리 시스템은 도 2 의 메모리 시스템(10)의 제어 로직(110)과 RH 정보 관리부(120)를 도시한 블록도 이다.
도 11 을 참조하면, RH 정보 관리부(1200)는 커맨드/어드레스(CA) 제어부(1210), 로우 해머(RH) 분석부(1220), 정보 저장부(1230) 및 저장 선택부(1240)를 포함할 수 있다.
CA 제어부(1210)는, 호스트 커맨드(H_CMD) 및 호스트 어드레스(H_ADDR)를 토대로 프로그램 타입 신호(PGM_NO), 액티브 커맨드(ACT) 및 타겟 어드레스(RADD)를 출력할 수 있다. 또한, CA 제어부(1210)는, 호스트 커맨드(H_CMD) 및 호스트 어드레스(H_ADDR)를 토대로, 동시에 수행되는 K 개의 프로그램들의 구간을 각각 정의하는 다수 개의 프로그램 종료 신호들(PGM_END<1:K>) 및 리프레쉬 주기를 정의하는 리프레쉬 커맨드(REF)를 생성할 수 있다. 본 실시예에서, 프로그램 타입 신호(PGM_NO)는 커맨드 셋에 따른 프로그램의 타입을 구별/결정하기 위한 신호로, 동시에 수행되는 프로그램들에 대한 정보를 포함하고 있다. 예를 들어, 최대 4 개의 프로그램들을 동시에 수행할 수 있는 메모리 시스템에서 특정 게임 어플리케이션을 수행하기 위한 제 1 프로그램과 특정 음악 어플리케이션을 수행하기 위한 제 2 프로그램이 동시에 수행되는 경우, 프로그램 타입 신호(PGM_NO)는 4 비트의 신호로 구성되어, 제 1 프로그램과 제 2 프로그램을 동시에 나타낼 수 있는 로직 값(예를 들어, '0011')을 가질 수 있다.
RH 분석부(1220)는, 동시에 수행되는 K 개의 프로그램들에 대응되는 다수 개의 RH 분석기들(1220_1~1220_K)을 포함할 수 있다. 다수 개의 RH 분석기들(1220_1~1220_K)은 동시에 수행되는 프로그램들의 최대 수에 대응될 수 있으며, 프로그램 타입 신호(PGM_NO)의 각 비트에 따라 활성화될 수 있다. 예를 들어, 최대 4 개의 프로그램들을 동시에 수행할 수 있는 메모리 시스템에서는, 4 개의 RH 분석기들이 구비될 수 있으며, '0011'의 프로그램 타입 신호(PGM_NO)에 따라 제 1 및 제 2 RH 분석기들(1220_1, 1220_2)이 동시에 활성화될 수 있다. 도 11 의 RH 분석기들(1220_1~1220_K)은 각각 도 3 의 RH 분석부(320)에 대응될 수 있으므로 이에 대한 자세한 설명은 생략하기로 한다.
저장 선택부(1240)는 다수 개의 로우 해머 분석기(1220_1~1220_K)로부터 동시에 출력되는 각 뱅크의 로우 해머 정보(RH_INF1~RH_INFK)를 프로그램 타입 신호(PGM_NO)에 따라 순차적으로 출력할 수 있다.
정보 저장부(1230)는 프로그램 타입 신호(PGM_NO)에 따라, 저장 선택부(1240)로부터 순차적으로 출력되는 각 뱅크의 로우 해머 정보(RH_INF)를 저장할 수 있다. 정보 저장부(1230)는 프로그램들의 타입들의 수(M)에 대응하는 제 1 내지 제 M 저장부(1230_1 ~ 1230_M)를 포함하고, 프로그램 타입 신호(PGM_NO)에 따라 제 1 내지 제 M 저장부(1230_1 ~ 1230_M) 중 대응되는 다수 개의 저장부를 순차적으로 선택하여 각 뱅크의 로우 해머 정보(RH_INF)를 저장할 수 있다.
제어 로직(1100)은 호스트로부터 특정 프로그램들이 요청되면, 정보 저장부(1230)의 제 1 내지 제 M 저장부(1230_1 ~ 1230_M) 중, 특정 프로그램들에 해당하는 저장부에 저장된 각 뱅크의 로우 해머 정보들(RH_INF)를 이용하여 어드레스 리맵 동작을 수행하여 메모리 커맨드(M_CMD), 메모리 어드레스(M_ADDR) 및 메모리 데이터(M_DATA)를 메모리 장치로 제공할 수 있다. 도 11 의 제어 로직(1100)은 도 3 의 제어 로직(110)과 실질적으로 동일하므로 상세한 설명은 생략하기로 한다.
상기와 같이, 다른 실시예에 따른 메모리 시스템은 동시에 수행되는 프로그램 별로 로우 해머 리스크가 높은 뱅크의 순위를 추출하고, 어드레스 리맵을 통하여 뱅크들을 스케쥴링함으로써 각 프로그램 별로 로우 해머에 취약한 뱅크의 사용을 최소화하여 메모리 시스템의 성능을 최적화할 수 있다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기록되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.
10: 메모리 시스템 20: 호스트
100: 메모리 컨트롤러 110: 제어 로직
120: 로우 해머 정보 관리부 130: ECC부
140: 호스트 인터페이스 150: 메모리 인터페이스
200: 메모리 장치

Claims (20)

  1. 다수의 뱅크를 포함하는 메모리 장치; 및
    상기 메모리 장치의 동작을 제어하며, 호스트로부터 요청되는 커맨드 셋으로 구성된 프로그램 별로 상기 다수의 뱅크들 각각의 로우 해머 정보를 산출하고, 상기 호스트로부터 특정 프로그램이 요청되면, 상기 특정 프로그램에 해당하는 상기 각 뱅크의 로우 해머 정보를 토대로 상기 뱅크들을 스케쥴링하는 메모리 컨트롤러
    를 포함하는 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    하나의 프로그램의 각 리프레쉬 주기 동안 상기 각 뱅크에 입력되는 액티브 커맨드 및 어드레스를 토대로 해당 뱅크의 크리티컬 어드레스를 설정하고, 상기 하나의 프로그램과 동일한 커맨드 셋을 가지는 다음 프로그램 동안 상기 각 뱅크의 크리티컬 어드레스에 대한 에러 보정수를 누적 카운트하여 상기 로우 해머 정보를 산출하는 메모리 시스템.
  3. 제 1 항에 있어서,
    상기 로우 해머 정보는,
    상기 프로그램 별, 상기 각 뱅크의 리프레쉬 주기; 및
    상기 프로그램 별, 상기 각 뱅크의 로우 해머 발생 순위
    를 포함하는 메모리 시스템.
  4. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 특정 프로그램에 해당하는 로우 해머 정보가 제 1 뱅크의 로우 해머가 가장 많이 발생함을 알리는 경우, 어드레스 리맵 동작을 통해 상기 제 1 뱅크가 최소한으로 선택되도록 스케쥴링하고, 상기 제 1 뱅크의 리프레쉬 주기가 다른 뱅크보다 더 짧도록 조절하는 메모리 시스템.
  5. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 특정 프로그램에 해당하는 로우 해머 정보가 제 2 뱅크에서 로우 해머가 가장 적게 발생함을 알리면, 어드레스 리맵 동작을 통해 상기 제 2 뱅크가 다른 뱅크들보다 자주 선택되도록 상기 뱅크들을 스케쥴링하고, 상기 제 2 뱅크의 리프레쉬 주기가 다른 뱅크들보다 더 길도록 조절하는 메모리 시스템.
  6. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    제 1 프로그램의 각 리프레쉬 주기 동안 상기 각 뱅크에 입력되는 커맨드 및 어드레스를 토대로 해당 뱅크의 크리티컬 어드레스를 설정하고, 상기 제 1 프로그램과 동일한 커맨드 셋을 가지는 제 2 프로그램 동안 상기 각 뱅크의 크리티컬 어드레스에 대한 에러 보정수를 누적 카운트하여 상기 각 뱅크의 로우 해머 정보를 산출하는 로우 해머 정보 관리부; 및
    상기 특정 프로그램이 요청되면, 상기 특정 프로그램에 해당하는 상기 로우 해머 정보를 이용하여 어드레스 리맵 동작을 수행하여 상기 뱅크들을 스케쥴링하는 제어 로직
    을 포함하는 메모리 시스템.
  7. 제 6 항에 있어서,
    상기 로우 해머 정보 관리부는,
    상기 호스트로부터 전달되는 상기 커맨드 및 상기 어드레스를 토대로 프로그램 타입 신호, 액티브 커맨드 및 타겟 어드레스를 출력하는 커맨드/어드레스 제어부;
    상기 제 1 프로그램의 각 리프레쉬 주기 동안 상기 액티브 커맨드 및 상기 타겟 어드레스를 토대로 상기 각 뱅크의 크리티컬 어드레스를 설정하고, 상기 제 2 프로그램 동안 상기 크리티컬 어드레스에 대한 에러 보정수를 누적 카운트하여 상기 각 뱅크의 로우 해머 정보를 산출하는 로우 해머 분석부; 및
    상기 프로그램 타입 신호에 따라, 상기 각 뱅크의 로우 해머 정보를 저장하는 정보 저장부
    를 포함하는 메모리 시스템.
  8. 제 7 항에 있어서,
    상기 로우 해머 분석부는,
    상기 제 1 프로그램의 상기 각 리프레쉬 주기 동안, 상기 각 뱅크에 입력되는 상기 액티브 커맨드의 수를 카운팅하고, 카운팅 수 및 상기 타겟 어드레스에 따라 상기 각 뱅크의 크리티컬 어드레스를 설정하는 어드레스 설정부;
    상기 제 2 프로그램 동안 ECC 정보를 토대로 상기 각 뱅크의 크리티컬 어드레스에 대한 상기 에러 보정수를 누적하여 카운팅하는 에러 분석부; 및
    상기 누적 카운팅된 에러 보정수를 토대로 상기 각 뱅크의 로우 해머 정보를 산출하는 계산부
    를 포함하는 메모리 시스템.
  9. 제 8 항에 있어서,
    상기 어드레스 설정부는,
    리프레쉬 커맨드에 따라 상기 각 뱅크에 입력되는 상기 액티브 커맨드의 수를 상기 타겟 어드레스 별로 카운팅하고, 카운팅 수가 임계값을 초과하는 경우, 해당 타겟 어드레스의 인접 어드레스를 상기 각 뱅크의 크리티컬 어드레스로 선택하는 어드레스 선택부; 및
    상기 프로그램들의 타입 수에 대응하는 다수 개의 단위 저장부를 포함하며, 상기 프로그램 타입 신호에 따라 상기 단위 저장부들 중 하나를 선택하여 상기 각 뱅크의 크리티컬 어드레스를 저장하거나 출력하는 어드레스 저장부
    를 포함하는 메모리 시스템.
  10. 제 8 항에 있어서,
    상기 에러 분석부는,
    상기 제 2 프로그램 동안 상기 ECC 정보를 토대로 상기 각 뱅크의 크리티컬 어드레스에 대한 상기 에러 보정수를 누적 카운팅하는 누적 카운터; 및
    상기 누적 카운팅된 에러 보정수를 저장하는 에러 저장부
    를 포함하는 메모리 시스템.
  11. 제 8 항에 있어서,
    상기 계산부는,
    상기 누적 카운팅된 에러 보정수에 따라 상기 각 뱅크의 리프레쉬 주기를 변환하는 주기 변환부; 및
    상기 누적 카운팅된 에러 보정수에 따라 상기 각 뱅크의 로우 해머 발생 순위를 결정하는 랭킹 결정부
    를 포함하는 메모리 시스템.
  12. 제 7 항에 있어서,
    상기 정보 저장부는,
    상기 프로그램들의 타입 수 * 상기 뱅크들의 수에 대응하는 단위 저장부
    를 구비하는 메모리 시스템.
  13. 제 1 항에 있어서,
    상기 메모리 컨트롤러는,
    상기 호스트로부터 전달되는 상기 커맨드 및 상기 어드레스를 토대로 프로그램 타입 신호, 액티브 커맨드 및 타겟 어드레스를 출력하는 커맨드/어드레스 제어부;
    상기 프로그램들 중, 동시에 수행되는 프로그램들에 대응되는 다수 개의 로우 해머 분석기 - 각 로우 해머 분석기는, 하나의 프로그램의 각 리프레쉬 주기 동안 상기 액티브 커맨드 및 상기 타겟 어드레스를 토대로 해당 뱅크의 크리티컬 어드레스를 설정하고, 상기 하나의 프로그램과 동일한 커맨드 셋을 가지는 다음 프로그램 동안 상기 각 뱅크의 크리티컬 어드레스에 대한 에러 보정수를 누적 카운트하여 상기 각 뱅크의 로우 해머 정보를 산출함-;
    상기 다수 개의 로우 해머 분석기로부터 동시에 출력되는 상기 각 뱅크의 로우 해머 정보를 상기 프로그램 타입 신호에 따라 순차적으로 출력하는 저장 선택부;
    상기 프로그램 타입 신호에 따라, 상기 저장 선택부에서 순차적으로 출력되는 상기 각 뱅크의 로우 해머 정보를 저장하는 정보 저장부; 및
    상기 호스트로부터 특정 프로그램이 요청되면, 상기 특정 프로그램에 해당하는 상기 로우 해머 정보를 이용하여 어드레스 리맵 동작을 수행하여 상기 뱅크들을 스케쥴링하는 제어 로직
    를 포함하는 메모리 시스템.
  14. 호스트로부터 요청되는 커맨드 셋으로 구성된 프로그램 별로 메모리 장치에 포함된 다수의 뱅크들 각각의 로우 해머 정보를 산출하여 정보 저장부에 저장하는 단계; 및
    상기 호스트로부터 특정 프로그램이 요청되면, 상기 정보 저장부에 저장된 로우 해머 정보 중 상기 특정 프로그램에 해당하는 상기 각 뱅크의 로우 해머 정보를 토대로 상기 뱅크들을 스케쥴링하는 단계
    를 포함하는 메모리 시스템의 동작 방법.
  15. 제 14 항에 있어서,
    상기 다수의 뱅크들 각각의 로우 해머 정보를 산출하는 단계는,
    하나의 프로그램의 각 리프레쉬 주기 동안 상기 각 뱅크에 입력되는 액티브 커맨드 및 어드레스를 토대로 해당 뱅크의 크리티컬 어드레스를 설정하고, 상기 하나의 프로그램과 동일한 커맨드 셋을 가지는 다음 프로그램 동안 상기 각 뱅크의 크리티컬 어드레스에 대한 에러 보정수를 누적 카운트하여 상기 로우 해머 정보를 산출하는 메모리 시스템의 동작 방법.
  16. 제 14 항에 있어서,
    상기 로우 해머 정보는,
    상기 프로그램 별, 상기 각 뱅크의 리프레쉬 주기; 및
    상기 프로그램 별, 상기 각 뱅크의 로우 해머 발생 순위
    를 포함하는 메모리 시스템의 동작 방법.
  17. 제 14 항에 있어서,
    상기 뱅크들을 스케쥴링하는 단계는,
    상기 특정 프로그램에 해당하는 로우 해머 정보가 제 1 뱅크의 로우 해머가 가장 많이 발생함을 알리는 경우, 어드레스 리맵 동작을 통해 상기 제 1 뱅크가 최소한으로 선택되도록 스케쥴링하고, 상기 제 1 뱅크의 리프레쉬 주기가 다른 뱅크보다 더 짧도록 조절하는 메모리 시스템의 동작 방법.
  18. 제 14 항에 있어서,
    상기 뱅크들을 스케쥴링하는 단계는,
    상기 특정 프로그램에 해당하는 로우 해머 정보가 제 2 뱅크에서 로우 해머가 가장 적게 발생함을 알리면, 어드레스 리맵 동작을 통해 상기 제 2 뱅크가 다른 뱅크들보다 자주 선택되도록 상기 뱅크들을 스케쥴링하고, 상기 제 2 뱅크의 리프레쉬 주기가 다른 뱅크들보다 더 길도록 조절하는 메모리 시스템의 동작 방법.
  19. 제 14 항에 있어서,
    상기 다수의 뱅크들 각각의 로우 해머 정보를 산출하여 정보 저장부에 저장하는 단계는,
    상기 호스트로부터 전달되는 커맨드 및 어드레스를 토대로 프로그램 타입 신호, 액티브 커맨드 및 타겟 어드레스를 출력하는 단계;
    제 1 프로그램의 각 리프레쉬 주기 동안, 상기 각 뱅크에 입력되는 상기 액티브 커맨드의 수를 카운팅하고, 카운팅 수 및 상기 타겟 어드레스에 따라 상기 각 뱅크의 크리티컬 어드레스를 설정하는 단계;
    상기 제 1 프로그램과 동일한 커맨드 셋을 가지는 제 2 프로그램 동안, ECC 정보를 토대로 상기 각 뱅크의 크리티컬 어드레스에 대한 상기 에러 보정수를 누적하여 카운팅하는 단계;
    상기 누적 카운팅된 에러 보정수를 토대로 상기 각 뱅크의 로우 해머 정보를 산출하는 단계; 및
    상기 프로그램 타입 신호에 따라, 상기 각 뱅크의 로우 해머 정보를 상기 정보 저장부에 저장하는 단계
    를 포함하는 메모리 시스템의 동작 방법.
  20. 제 14 항에 있어서,
    상기 정보 저장부는,
    상기 프로그램들의 타입 수 * 상기 뱅크들의 수에 대응하는 단위 저장부
    를 포함하는 메모리 시스템의 동작 방법.
KR1020170122105A 2017-09-21 2017-09-21 메모리 시스템 및 그의 동작 방법 KR20190033387A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170122105A KR20190033387A (ko) 2017-09-21 2017-09-21 메모리 시스템 및 그의 동작 방법
US15/940,062 US10725695B2 (en) 2017-09-21 2018-03-29 Memory system and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170122105A KR20190033387A (ko) 2017-09-21 2017-09-21 메모리 시스템 및 그의 동작 방법

Publications (1)

Publication Number Publication Date
KR20190033387A true KR20190033387A (ko) 2019-03-29

Family

ID=65719270

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170122105A KR20190033387A (ko) 2017-09-21 2017-09-21 메모리 시스템 및 그의 동작 방법

Country Status (2)

Country Link
US (1) US10725695B2 (ko)
KR (1) KR20190033387A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022139057A1 (ko) * 2020-12-21 2022-06-30 서울대학교산학협력단 카운터 기반의 로우 해머 방지를 위한 선택적 로우 해머 리프레쉬 장치 및 그 방법

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190123875A (ko) * 2018-04-25 2019-11-04 삼성전자주식회사 반도체 메모리 장치 및 이를 구비하는 메모리 시스템
CN108829348B (zh) * 2018-05-29 2022-03-04 上海兆芯集成电路有限公司 存储器装置及命令重排序方法
US10726903B2 (en) * 2018-09-21 2020-07-28 Nanya Technology Corporation Row-determining circuit, DRAM, and method for refreshing a memory array
US11594273B2 (en) * 2020-10-14 2023-02-28 Hewlett Packard Enterprise Development Lp Row hammer detection and avoidance
US11749333B2 (en) 2020-12-10 2023-09-05 SK Hynix Inc. Memory system
CN112786087B (zh) * 2021-03-15 2022-04-26 长鑫存储技术有限公司 刷新电路及存储器
KR20230051873A (ko) 2021-10-12 2023-04-19 삼성전자주식회사 해머 리프레시 로우 어드레스 검출기, 이를 포함하는 반도체 메모리 장치 및 메모리 모듈

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9269436B2 (en) * 2013-03-12 2016-02-23 Intel Corporation Techniques for determining victim row addresses in a volatile memory
US9449671B2 (en) * 2013-03-15 2016-09-20 Intel Corporation Techniques for probabilistic dynamic random access memory row repair
KR101976452B1 (ko) 2013-04-22 2019-05-10 에스케이하이닉스 주식회사 반도체 장치
US9690505B2 (en) * 2013-09-27 2017-06-27 Hewlett Packard Enterprise Development Lp Refresh row address
KR20160035444A (ko) * 2014-09-23 2016-03-31 에스케이하이닉스 주식회사 스마트 리프레쉬 장치
US10497409B2 (en) 2014-12-17 2019-12-03 International Business Machines Corporation Implementing DRAM row hammer avoidance
KR20170024307A (ko) * 2015-08-25 2017-03-07 삼성전자주식회사 내장형 리프레쉬 콘트롤러 및 이를 포함하는 메모리 장치
KR20170082066A (ko) * 2016-01-05 2017-07-13 에스케이하이닉스 주식회사 반도체시스템
US10490251B2 (en) * 2017-01-30 2019-11-26 Micron Technology, Inc. Apparatuses and methods for distributing row hammer refresh events across a memory device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022139057A1 (ko) * 2020-12-21 2022-06-30 서울대학교산학협력단 카운터 기반의 로우 해머 방지를 위한 선택적 로우 해머 리프레쉬 장치 및 그 방법

Also Published As

Publication number Publication date
US20190087127A1 (en) 2019-03-21
US10725695B2 (en) 2020-07-28

Similar Documents

Publication Publication Date Title
KR20190033387A (ko) 메모리 시스템 및 그의 동작 방법
KR102373544B1 (ko) 요청 기반의 리프레쉬를 수행하는 메모리 장치, 메모리 시스템 및 메모리 장치의 동작방법
US9318182B2 (en) Apparatus, method and system to determine memory access command timing based on error detection
US7773441B2 (en) Memory malfunction prediction system and method
JP5629391B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
KR101578511B1 (ko) 리드 전압 설정 방법
KR101683357B1 (ko) 비휘발성 메모리의 멀티스트로브 판독을 이용하여 상태 신뢰 데이터를 획득하는 방법 및 시스템
Lucas et al. Sparkk: Quality-scalable approximate storage in DRAM
US10996870B2 (en) Deterministic read disturb counter-based data checking for NAND flash
US8560767B2 (en) Optimizing EDRAM refresh rates in a high performance cache architecture
KR20140125986A (ko) 반도체 장치
KR20170035150A (ko) 트레이닝 동작을 제어하는 메모리 컨트롤러, 메모리 시스템 및 그의 동작방법
KR20150064953A (ko) 반도체 메모리 장치
JP2019520639A (ja) インテグラルポストパッケージリペア
US10991412B2 (en) Storage device and method for operating storage device
KR20210026103A (ko) 저장 장치 및 그 동작 방법
Sharifi et al. Online profiling for cluster-specific variable rate refreshing in high-density dram systems
KR20140112164A (ko) 디램 및 리프레시 제어방법
KR20170027556A (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US10614892B1 (en) Data reading method, storage controller and storage device
US8873327B2 (en) Semiconductor device and operating method thereof
KR20200005009A (ko) 전자 장치, 전자 장치의 컴파일링 방법 및 전자 장치의 동작 방법
JP2019083082A (ja) フラッシュメモリモジュール及びフラッシュメモリ
EP3553662A1 (en) Intergral post package repair
KR102491652B1 (ko) 산포 타입을 결정하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법