KR20190123090A - 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents

메모리 컨트롤러 및 이를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20190123090A
KR20190123090A KR1020180046823A KR20180046823A KR20190123090A KR 20190123090 A KR20190123090 A KR 20190123090A KR 1020180046823 A KR1020180046823 A KR 1020180046823A KR 20180046823 A KR20180046823 A KR 20180046823A KR 20190123090 A KR20190123090 A KR 20190123090A
Authority
KR
South Korea
Prior art keywords
memory
blocks
block
refresh operation
read
Prior art date
Application number
KR1020180046823A
Other languages
English (en)
Other versions
KR102434343B1 (ko
Inventor
최영근
임동함
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020180046823A priority Critical patent/KR102434343B1/ko
Priority to US16/198,269 priority patent/US11061608B2/en
Priority to CN201811555910.0A priority patent/CN110390979B/zh
Publication of KR20190123090A publication Critical patent/KR20190123090A/ko
Application granted granted Critical
Publication of KR102434343B1 publication Critical patent/KR102434343B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/40607Refresh operations in memory devices with an internal cache or data buffer
    • 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/40622Partial refresh of memory arrays
    • 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
    • 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/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1084Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/0409Online test

Landscapes

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

Abstract

본 기술은 메모리 블록들의 리드 카운트 값과, 상기 메모리 블록들의 어드레스 맵핑 정보를 저장하는 버퍼 메모리; 및 상기 리드 카운트 값을 모니터링하고, 상기 모니터링 결과에 따라 리프레쉬(refresh)가 필요한 대상 블록들의 리프레쉬 동작을 슈퍼 블록 단위로 수행할지 또는 개별 블록 단위로 수행할지를 결정하는 중앙 처리 장치를 포함하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템을 포함한다.

Description

메모리 컨트롤러 및 이를 포함하는 메모리 시스템{Memory controller and memory system having the same}
본 기술은 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 리프레쉬(refresh) 동작을 수행할 수 있는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다.
메모리 시스템(memory system)은 저장 장치(storage device) 및 메모리 컨트롤러(memory controller)를 포함할 수 있다.
저장 장치는 다수의 메모리 장치들을 포함할 수 있으며, 메모리 장치들은 데이터를 저장하거나, 저장된 데이터를 출력할 수 있다. 예를 들면, 메모리 장치들은 전원 공급이 차단되면 저장된 데이터가 소멸되는 휘발성 메모리 장치들로 이루어지거나, 전원 공급이 차단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 장치들로 이루어질 수 있다.
메모리 컨트롤러는 호스트(host)와 저장 장치 사이에서 데이터 통신을 제어할 수 있다.
호스트는 PCI-E(Peripheral Component Interconnect - Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜을 사용하여 메모리 컨트롤러를 통해 메모리 장치와 통신할 수 있다. 호스트와 메모리 시스템 간의 인터페이스 프로토콜들은 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들이 포함될 수 있다.
본 발명의 실시예는 리프레쉬 대상 블록의 개수에 따라 슈퍼 블록 또는 개별 블록 단위로 리프레쉬 동작을 수행할 수 있는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템을 제공한다.
본 발명의 실시예에 따른 메모리 컨트롤러는, 메모리 블록들의 리드 카운트 값과, 상기 메모리 블록들의 어드레스 맵핑 정보를 저장하는 버퍼 메모리; 및 상기 리드 카운트 값을 모니터링하고, 상기 모니터링 결과에 따라 리프레쉬(refresh)가 필요한 대상 블록들의 리프레쉬 동작을 슈퍼 블록 단위로 수행할지 또는 개별 블록 단위로 수행할지를 결정하는 중앙 처리 장치를 포함한다.
본 발명의 실시예에 따른 메모리 시스템은, 다수의 메모리 블록들이 포함되는 다수의 메모리 장치들; 및 상기 메모리 장치들에 포함된 상기 메모리 블록들의 리프레쉬 동작 수행시, 상기 리프레쉬 동작이 필요한 메모리 블록들의 개수에 따라 상기 메모리 블록들을 슈퍼 블록 단위 또는 개별 블록 단위로 상기 리프레쉬 동작이 수행되도록 상기 메모리 장치들을 제어하는 메모리 컨트롤러를 포함한다.
본 기술에 따른 메모리 컨트롤러 및 이를 포함하는 메모리 시스템은 슈퍼 블록 또는 개별 블록 단위로 리프레쉬 동작을 선택적으로 수행함으로써, 리프레쉬 동작의 효율을 높일 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 도 1의 중앙 처리 장치를 구체적으로 설명하기 위한 도면이다.
도 3은 도 1의 메모리 장치를 설명하기 위한 도면이다.
도 4는 도 3의 메모리 블록들을 설명하기 위한 도면이다.
도 5는 슈퍼 블록을 설명하기 위한 도면이다.
도 6은 버퍼 메모리에 저장되는 정보를 설명하기 위한 도면이다.
도 7은 메모리 컨트롤러와 저장 장치를 제어하는 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 실시예에 따른 리프레쉬 동작을 설명하기 위한 순서도이다.
도 9 및 도 10은 본 발명의 리프레쉬 동작의 제1 케이스(case)를 설명하기 위한 도면들이다.
도 11 내지 도 13은 본 발명의 리프레쉬 동작의 제2 케이스(case)를 설명하기 위한 도면들이다.
도 14는 본 발명의 실시예에 따른 리맵(re-map) 방법을 설명하기 위한 도면이다.
도 15은 본 발명의 실시예에 따른 언맵(un-map) 방법을 설명하기 위한 도면이다.
도 16은 도 1에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 17은 도 1에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 18은 도 1에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 19는 도 1에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(1000)은 데이터가 저장되는 저장 장치(1100)와, 상기 저장 장치(1100)와 호스트(2000) 사이에서 통신하는 메모리 컨트롤러(1200)를 포함할 수 있다.
저장 장치(1100)는 다수의 메모리 장치들(MD1~MDi; i는 양의 정수)을 포함할 수 있다. 예를 들면, 메모리 장치들(MD1~MDi)은 전원 공급이 차단되면 저장된 데이터가 소멸되는 휘발성 메모리 장치(volatile memory device) 또는 전원 공급이 차단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 장치(non-volatile memory device)로 구현될 수 있다. 도 1에는 비휘발성 메모리 장치로 구현된 메모리 장치들(MD1~MDi)이 실시예로써 도시되었다. 예를 들면, 비휘발성 메모리 장치는 플래시 메모리 장치(FLASH memory device)일 수 있다.
메모리 장치들(MD1~MDi)은 다수의 채널들(channels; CH1~CHk)에 연결될 수 있다. 예를 들면, 제1 내지 제k 채널들(CH1~CHk) 각각에 다수의 메모리 장치들(MD1~MDi)이 연결될 수 있다.
메모리 컨트롤러(1200)는 중앙 처리 장치(Central Processor Unit; 200), 에러 정정 회로(Error Correction Circuit; ECC; 210), 내부 메모리(Internal Memory; 220), 메모리 인터페이스(Memory Interface; 230), 버퍼 메모리(Buffer Memory; 240) 및 호스트 인터페이스(Host Interface; 250)를 포함할 수 있다.
중앙 처리 장치(200)는 저장 장치(1100)를 제어하기 위한 각종 연산을 수행하거나, 커맨드(command) 및 어드레스(address)를 생성할 수 있다. 중앙 처리 장치(200)는 저장 장치(1100)에 포함된 메모리 장치들(MD1~MDi)의 리드(read) 횟수를 모니터링 할 수 있고, 모니터링 결과에 따라 메모리 장치들(MD1~MDi)의 데이터를 다시 쓰기 위한 리프레쉬(refresh) 동작을 제어할 수 있다. 예를 들면, 중앙 처리 장치(200)는 리드 카운트(count)에 따라 리프레쉬가 필요한 메모리 장치들의 개수를 판단하고, 판단 결과에 따라 메모리 장치들(MD1~MDi)을 슈퍼 블록(super block) 또는 개별 블록(single block) 단위로 리프레쉬할 수 있다. 슈퍼 블록은 논리적 단위로써 다수의 물리적 메모리 블록들을 하나의 논리 블록으로써 관리하기 위한 단위일 수 있다. 개별 블록은 물리적 메모리 블록 각각을 의미한다.
내부 메모리(220)는 메모리 컨트롤러(1200)의 동작에 필요한 다양한 정보들을 저장할 수 있다. 예를 들면, 내부 메모리(220)는 논리적, 물리적(logical, physical) 어드레스 맵 테이블들(address map tables)을 포함할 수 있다. 어드레스 맵 테이블들은 메모리 장치들(MD1~MDi)에도 저장될 수 있으며, 메모리 시스템(1000)이 부팅될 때 메모리 장치들(MD1~MDi)에 저장된 어드레스 맵 테이블이 다시 내부 메모리(220)로 로드(load)될 수 있다. 내부 메모리(220)는 RAM(random access memory), DRAM(dynamic RAM), SRAM(static RAM), 캐시(cache) 및 강하게 결합된 메모리(tightly coupled memory; TCM) 중 적어도 하나 이상으로 구성될 수 있다.
메모리 인터페이스(230)는 메모리 컨트롤러(1200)와 저장 장치(1100) 사이에서 커맨드, 어드레스 및 데이터 등을 주고받을 수 있다. 예를 들면, 메모리 인터페이스(230)는 제1 내지 제k 채널들(CH1~CHk)을 통해 메모리 장치들(MD1~MDi)에 커맨드, 어드레스 및 데이터 등을 전송할 수 있고, 메모리 장치들(MD1~MDi)로부터 데이터 등을 수신할 수 있다.
버퍼 메모리(240)는 메모리 시스템(1000)의 프로그램 또는 리드 동작 수행 시, 데이터를 임시로 저장할 수 있다. 예를 들면, 버퍼 메모리(240)는 프로그램 동작 시, 선택된 메모리 장치의 프로그램 동작이 패스(pass)될 때까지 원본 프로그램 데이터를 임시로 저장할 수 있다. 또한, 버퍼 메모리(240)는 리드 동작 시, 메모리 장치로부터 리드된 데이터를 임시로 저장한 후, 호스트 인터페이스(250)에 데이터를 순차적으로 전송할 수 있다. 또한, 버퍼 메모리(240)에도 어드레스 맵 테이블들이 저장될 수 있으며, DRAM으로 구성될 수 있다.
호스트 인터페이스(250)는 메모리 컨트롤러(1200)와 호스트(2000) 사이에서 커맨드, 어드레스 및 데이터 등을 주고받을 수 있다. 예를 들면, 호스트 인터페이스(250)는 호스트(2000)로부터 요청(request), 어드레스 및 데이터 등을 수신할 수 있고, 호스트(2000)에 데이터 등을 전송할 수 있다. 중앙 처리 장치(200), 호스트 프로세서(2100), 내부 메모리(220), 메모리 인터페이스(230), 버퍼 메모리(240) 및 호스트 인터페이스(250)는 버스(bus; 260)를 통해 서로 통신할 수 있다.
호스트(2000)는 호스트 프로세서(Host Processor; 2100) 및 저장 인터페이스(Storage Interface; 2200)를 포함할 수 있다. 호스트 프로세서(2100)와 저장 인터페이스(2200)는 버스(bus; 2300)를 통해 서로 통신할 수 있다.
호스트 프로세서(2100)는 메모리 시스템(1000)의 프로그램 동작(program operation)을 제어할 수 있는 프로그램 요청(program request), 또는 리드 동작(read operation)을 제어할 수 있는 리드 요청(read request)을 생성할 수 있으며, 이 외에도 소거 요청 등의 다양한 동작 요청들을 생성할 수 있다.
저장 인터페이스(2200)는 PCIe(Peripheral Component Interconnect Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(serial attached SCSI) 또는 NVMe(Non-Volatile Memory Express)와 같은 인터페이스 프로토콜을 사용하여 메모리 시스템(1000)과 통신할 수 있다. 저장 인터페이스(2200)는 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들을 포함할 수 있다.
도 2는 도 1의 중앙 처리 장치를 구체적으로 설명하기 위한 도면이다.
도 2를 참조하면, 중앙 처리 장치(200)는 메모리 장치들(MD1~MDi)의 리프레쉬 동작을 제어하기 위하여 리프레쉬 모니터부(Refresh Monitor Unit; 310), 어드레스 관리부(Address Management Unit; 320) 및 커맨드 생성부(CMD Generator; 330)를 포함할 수 있다.
리프레쉬 모니터부(310)는 메모리 장치들(MD1~MDi) 각각의 리드 횟수를 카운트할 수 있고, 리프레쉬가 필요한 메모리 장치들의 개수를 판단할 수 있다. 이를 위해, 리프레쉬 모니터부(310)는 리드 카운터(Read Counter; 11) 및 카운트 판단부(Count Detector; 12)를 포함할 수 있다.
리드 카운터(11)는 메모리 장치들(MD1~MDi)에 포함된 메모리 블록들 각각의 리드 동작 횟수를 카운트 할 수 있다. 예를 들면, 선택된 메모리 장치의 선택된 메모리 블록에서 리드 동작이 수행될 때마다, 리드 카운터(11)는 해당 메모리 블록의 리드 카운트 횟수를 증가시킬 수 있다. 증가된 리드 카운트 값은 버퍼 메모리(240)에 저장될 수 있다.
또한, 리드 카운터(11)는 리프레쉬 동작이 종료된 대상 블록들의 리드 카운트 값이 초기화되도록 버퍼 메모리(240)를 제어할 수 있다.
카운트 판단부(12)는 리드 카운터(11)에서 카운트되는 리드 동작 횟수를 기초하여 리프레쉬가 필요한 메모리 장치들의 개수를 판단하고, 리프레쉬가 필요한 메모리 장치들의 개수와 미리 설정된 개수(이하, 설정 개수)를 비교하여 카운트 신호(CT_SIG)를 출력할 수 있다. 예를 들면, 카운트 판단부(12)는 미리 설정된 임계 값이 메모리 블록들의 리드 카운트 값을 비교하여 리프레쉬가 필요한 메모리 블록들의 개수를 산출할 수 있다. 예를 들면, 리프레쉬가 필요한 메모리 블록들은 리드 카운트 값이 임계 값보다 높은 메모리 블록들일 수 있다. 리프레쉬가 필요한 경우는 저장 장치(1100)에 따라 다를 수 있으므로, 임계 값은 저장 장치(1100)에 따라 다르게 설정될 수 있다. 카운트 신호(CT_SIG)를 결정하는 설정 개수는 각 채널에 연결된 메모리 장치들의 개수의 1/2일 수 있다. 또는, 설정 개수는 슈퍼 블록에 포함된 메모리 블록들의 개수의 1/2일 수 있다. 또는, 설정 개수는 전체 메모리 블록들의 개수의 1/2일 수도 있다. 또는, 설정 개수는 저장 장치(1100)의 싸이클링 횟수가 증가할수록 점차 적어질 수 있다. 여기서, 설정 개수는 본 실시예의 이해를 돕기 위한 것이므로 1/2로 제한되지 않는다. 즉, 카운트 판단부(12)는 리프레쉬가 필요한 메모리 블록들의 개수가 많은지 적은지를 판단하고, 판단 결과에 따라 카운트 신호(CT_SIG)를 출력할 수 있다. 리프레쉬가 필요한 메모리 블록들의 개수가 많고 적음의 기준은 저장 장치(1100)에 따라 다르게 설정될 수 있으며, 저장 장치(1100)의 동작 횟수, 싸이클링 횟수 등에 따라 달라질 수 있다.
어드레스 관리부(320)는 카운트 신호(CT_SIG)에 따라 리프레쉬 동작을 수행할 슈퍼 블록 또는 메모리 블록을 선택하기 위한 인덱스(IND#)를 출력할 수 있다. 예를 들면, 어드레스 관리부(320)는 카운트 신호(CT_SIG)가 하이(high)이면 리프레쉬 동작을 슈퍼 블록 단위로 수행하기 위한 인덱스(IND#)를 출력할 수 있고, 카운트 신호(CT_SIG)가 로우(low)이면 리프레쉬 동작을 개별 블록 단위로 수행하기 위한 인덱스(IND#)를 출력할 수 있다. 또한, 어드레스 관리부(320)는 리프레쉬 동작 시, 대상 블록에 저장된 데이터가 임시 블록으로 카피(copy)되면, 대상 블록의 어드레스를 임시 블록으로 리맵(re-map)할 수 있다. 어드레스 관리부(320)는 임시 블록에 임시로 저장된 데이터가 대상 블록으로 다시 카피백(copy-back)되면, 임시 블록의 어드레스를 언맵(un-map)할 수 있다. 인덱스(IND#)에 따른 어드레스는 도 6에서 구체적으로 후술하도록 한다.
커맨드 생성부(330)는 카운트 신호(CT_SIG)에 응답하여 슈퍼 블록 단위의 리프레쉬 커맨드(CMD) 또는 개별 블록 단위의 리프레쉬 커맨드(CMD)를 생성하고 출력할 수 있다. 예를 들면, 커맨드 생성부(330)는 카운트 신호(CT_SIG)가 하이(high)이면 리프레쉬 동작을 슈퍼 블록 단위로 수행하기 위한 커맨드(CMD)을 출력할 수 있고, 카운트 신호(CT_SIG)가 로우(low)이면 리프레쉬 동작을 개별 블록 단위로 수행하기 위한 커맨드(CMD)를 출력할 수 있다.
도 3은 도 1의 메모리 장치를 설명하기 위한 도면이다.
도 1의 메모리 장치들(MD1~MDi)은 서로 동일하게 구성될 수 있으므로, 도 3에서는 이 중에서 어느 하나의 메모리 장치(MD1)를 예를 들어 구체적으로 설명하도록 한다.
도 3을 참조하면, 메모리 장치(MD1)는 데이터가 저장되는 메모리 셀 어레이(Memory Cell Array; 110)와 프로그램, 리드 또는 소거 등의 동작을 수행하도록 구성된 전압 생성부(Voltage Generator; 120), 로우 디코더(Row Decoder; 130), 페이지 버퍼 그룹(Page Buffer Group; 140), 컬럼 디코더(Column Decoder; 150), 입출력 회로(Input-output Circuit; 160) 및 제어 로직(Control Logic; 170)을 포함할 수 있다.
메모리 셀 어레이(110)는 다수의 메모리 블록들(B1~Bk; k는 양의 정수)을 포함할 수 있다. 메모리 블록들(B1~Bk)은 다수의 메모리 셀들을 포함하며, 2차원 또는 3차원 구조로 구현될 수 있다. 예를 들면, 2차원 구조의 메모리 블록들(B1~Bk)에서는 메모리 셀들이 기판(substrate)에 수평방향으로 배열될 수 있다. 3차원 구조의 메모리 블록들(B1~Bk)에서는 메모리 셀들이 기판에 수직방향으로 적층될 수 있다.
전압 생성부(120)는 동작 신호들(OP_SIG)에 응답하여 각 동작에 필요한 동작 전압들(Vop)을 생성하고 출력할 수 있다. 예를 들면, 전압 생성부(120)는 동작 신호들(OP_SIG)이 프로그램 동작에 관한 신호인 경우, 프로그램 전압, 패스 전압 및 프로그램 검증 전압 등을 생성할 수 있다. 전압 생성부(120)는 동작 신호들(OP_SIG)이 리드 동작에 관한 신호인 경우, 리드 전압 및 패스 전압 등을 생성할 수 있다. 전압 생성부(120)는 동작 신호들(OP_SIG)이 소거 동작에 관한 신호인 경우, 소거 전압, 패스 전압 및 소거 검증 전압 등을 생성할 수 있다.
로우 디코더(130)는 로우 어드레스(RADD)에 응답하여 로컬 라인들(local lines; LL)을 통해 동작 전압들(Vop)을 선택된 메모리 블록에 전달할 수 있다. 예를 들면, 리프레쉬 동작 시 로우 디코더(130)는 로우 어드레스(RADD)에 따라 선택된 대상 블록 또는 임시 블록에 동작 전압들(Vop)을 전달할 수 있다.
페이지 버퍼 그룹(140)은 비트 라인들(bit lines; BL)을 통해 메모리 블록들(B1~Bk)에 연결될 수 있으며, 비트 라인들(BL) 각각에 연결된 다수의 페이지 버퍼들을 포함할 수 있다. 페이지 버퍼 그룹(140)은 페이지 제어 신호들(PBSIG)에 응답하여 비트 라인들(BL)의 전압을 제어하거나, 비트 라인들(BL)의 전압 또는 전류를 센싱할 수 있다.
컬럼 디코더(150)는 컬럼 어드레스(CADD)에 응답하여 페이지 버퍼 그룹(140)과 데이터를 주고 받거나, 입출력 회로(160)와 데이터를 주고받을 수 있다. 예를 들면, 컬럼 디코더(150)는 컬럼 라인들(CL)을 통해 페이지 버퍼 그룹(140)과 데이터를 주고받을 수 있고, 데이터 라인들(DL)을 통해 입출력 회로(160)와 데이터를 주고받을 수 있다.
입출력 회로(160)는 입출력 라인들(IO)을 통해 메모리 컨트롤러(1200)와 통신할 수 있다. 예를 들면, 입출력 회로(160)는 입출력 라인들(IO)을 통해 수신된 커맨드(CMD) 및 어드레스(ADD)를 제어 로직(170)으로 전달할 수 있고, 데이터(DATA)를 컬럼 디코더(150)로 전송할 수 있다. 또한, 입출력 회로(160)는 메모리 블록들(B1~Bk)로부터 리드된 데이터(DATA)를 입출력 라인들(IO)을 통해 메모리 컨트롤러(1200)로 출력할 수 있다.
제어 로직(170)은 커맨드(CMD)에 응답하여 동작 신호들(OP_SIG) 및 페이지 제어 신호들(PBSIG)을 출력할 수 있고, 어드레스(ADD)에 응답하여 로우 어드레스(RADD) 및 컬럼 어드레스(CADD)를 출력할 수 있다. 예를 들면, 제어 로직(170)은 리프레쉬에 대응되는 커맨드(CMD) 및 어드레스(ADD)가 수신되면, 어드레스(ADD)에 따라 리프레쉬 대상 블록과 임시 블록을 선택할 수 있고, 대상 블록의 데이터가 임시 블록에 임시로 카피(copy)된 후, 임시 블록의 데이터를 대상 블록으로 다시 카피백(copy-back) 되도록 전압 생성부(120), 로우 디코더(130), 페이지 버퍼 그룹(140) 및 컬럼 디코더(150)를 제어할 수 있다.
리프레쉬 동작 시, 리드 카운트가 증가하여 리프레쉬가 필요한 블록은 대상 블록이 되고, 대상 블록의 데이터를 카피하여 임시로 데이터를 저장하는 블록은 임시 블록이 될 수 있다. 이에 따라, 메모리 블록들(B1~Bk)은 대상 블록들이 포함되는 영역과 임시 블록들이 포함되는 영역으로 구분될 수 있다. 이러한 메모리 블록들의 구성은 다음의 도면을 참조하여 설명하도록 한다.
도 4는 도 3의 메모리 블록들을 설명하기 위한 도면으로써, 12 개의 메모리 블록들(B1~B12)을 예를 들어 설명하도록 한다.
도 4를 참조하면, 제1 내지 제12 메모리 블록들(B1~B12) 중 일부는 사용자 블록(UB)에 포함될 수 있고, 일부는 예비 블록(reserved block; RSB)에 포함될 수 있다. 사용자 블록(UB)에 포함된 메모리 블록들(B1~B8)에는 일반적인 사용자 데이터가 저장될 수 있다. 예비 블록(RSB)에 포함된 메모리 블록들(B9~B12)은 사용자 블록(UB)에서 배드 블록이 발생한 경우 배드 블록을 대체하는데 사용되거나, 리프레쉬 동작 시 사용자 블록(UB)에 저장된 데이터를 임시로 저장하는데 사용될 수 있다. 사용자 블록(UB)과 예비 블록(RSB)에 포함되는 메모리 블록들(B1~B12)의 개수는 메모리 장치(MD1)에 따라 다를 수 있다. 또는, 예비 블록은 전체 메모리 블록들(B1~B12) 중에서 소거 카운트 값이 특정 횟수보다 적은 블록들로 구성될 수도 있다. 즉, 메모리 블록들(B1~B12)은 처음부터 사용자 블록(UB)과 예비 블록(RSB)으로 구분되지 않고 일정 싸이클링 횟수가 되면 소거 동작이 수행된 횟수(즉, 소거 카운트 값)를 서로 비교하고, 비교 결과에 따라 상대적으로 소거 카운트 값이 적은 메모리 블록들이 예비 블록(RSB)으로 지정될 수도 있다.
도 5는 슈퍼 블록을 설명하기 위한 도면이다.
도 5를 참조하면, 동일한 채널(CH1)에 연결된 제1 내지 제i 메모리 장치들(MD1~MDi)의 메모리 블록들은 다수의 슈퍼 블록들(SB1~SBk)에 포함될 수 있다. 상술한 바와 같이, 슈퍼 블록(super block)은 논리적 단위이며, 물리적으로 서로 구분된 메모리 블록들을 하나의 논리 블록으로써 관리하기 위하여 사용될 수 있다. 예를 들면, 제1 슈퍼 블록(SB1)에는 제1 내지 제i 메모리 장치들(MD1~MDi) 각각에 포함된 제1 메모리 블록들이 포함될 수 있고, 제2 슈퍼 블록(SB2)에는 제1 내지 제i 메모리 장치들(MD1~MDi) 각각에 포함된 제2 메모리 블록들이 포함될 수 있다. 이러한 방식으로 제k 슈퍼 블록(SBk)에는 제1 내지 제i 메모리 장치들(MD1~MDi) 각각에 포함된 제k 메모리 블록들이 포함될 수 있다. 본 실시예에서 리프레쉬 동작은 슈퍼 블록 또는 개별 블록 단위로 수행될 수 있다.
도 6은 버퍼 메모리에 저장되는 정보를 설명하기 위한 도면이다.
도 6을 참조하면, 버퍼 메모리(240)에는 메모리 시스템의 동작에 관련된 다양한 정보가 저장될 수 있다. 정보의 종류에 따라 버퍼 메모리(240)에는 다양한 테이블들이 저장될 수 있다. 예를 들면, 버퍼 메모리(240)에는 리드 카운트 테이블(RC_T), 슈퍼 블록 테이블(SB_T), L2P 테이블(L2P_T) 및 P2L 테이블(P2L_T)이 포함될 수 있다. 이 외에도 버퍼 메모리(240)에는 더욱 다양한 정보를 각각 저장하는 테이블들이 포함될 수 있다.
리드 카운트 테이블(RC_T)에는 메모리 블록들의 리드 카운트 값이 저장될 수 있다. 리드 카운트 테이블(RC_T)의 인덱스(IND)에는 메모리 장치(MD#)와 메모리 블록(B#) 어드레스가 저장될 수 있고, 저장 값(VAL)에는 리드 카운트 값(CNT#)이 저장될 수 있다. 여기서, ‘#’은 각 정보의 숫자(number)를 의미한다. 예를 들면, 제1 인덱스(IND1)가 제1 메모리 장치(MD1)에 포함된 제1 메모리 블록(B1) 어드레스인 경우, 제1 인덱스(IND1)의 저장 값(VAL)은 제1 메모리 장치(MD1)에 포함된 제1 메모리 블록(B1)의 제1 리드 카운트 값(CNT1)이 될 수 있다. 즉, 업데이트 동작 시, 제1 인덱스(IND1)에 대한 값(VAL)이 입력되면 제1 리드 카운트 값(CNT1)이 업데이트될 수 있고, 제1 인덱스(IND1)에 대한 출력 시 제1 리드 카운트 값(CNT1)이 출력될 수 있다. 이러한 방식으로, 리드가 수행된 메모리 장치와, 메모리 장치에 포함된 메모리 블록들에 대한 리드 카운트 값(CNT1~6)이 업데이트될 수 있다. 또한, 리프레쉬 동작 시, 리드 카운트 테이블(RC_T)은 중앙 처리 장치(200)로부터 수신된 인덱스(IND#)에 대응되는 저장 값(VAL)을 출력할 수 있다.
슈퍼 블록 테이블(SB_T)에는 슈퍼 블록들에 포함되는 메모리 블록들의 블록 어드레스(BADD)가 저장될 수 있다. 슈퍼 블록 테이블(SB_T)의 인덱스(IND)에는 슈퍼 블록들의 어드레스(SB1~SB6)가 저장될 수 있고, 블록 어드레스(BADD)에는 각 슈퍼 블록에 포함된 메모리 블록들의 물리 어드레스(B1~B6)가 저장될 수 있다. 예를 들면, 제1 슈퍼 블록(SB1)에 제1 메모리 블록들(B1)이 포함되는 경우, 제1 슈퍼 블록(SB1)은 제1 인덱스(IND1)가 되고, 제1 메모리 블록들(B1)은 블록 어드레스(BADD)가 될 수 있다. 여기서, 제1 메모리 블록들(B1)은 각 메모리 장치들에 포함된 메모리 블록들 중 제1 메모리 블록들(B1)이 제1 슈퍼 블록(SB1)에 포함된다는 것을 의미한다. 만약, 도 6과 다르게, 제1 슈퍼 블록(SB1)에 제1 내지 제4 메모리 장치들의 메모리 블록들의 물리 어드레스가 저장된다고 가정하고, 이 중에서 제2 메모리 장치에서만 제7 메모리 블록이 제1 슈퍼 블록(SB1)에 포함되고 나머지 메모리 장치들에서는 제1 메모리 블록들이 제1 슈퍼 블록(SB1)에 포함된다고 가정하면, 제1 인덱스(IND1)에 대응되는 블록 어드레스(BADD)는 ‘B1, B7, B1, B1’이 될 수 있다.
이러한 방식으로 각 슈퍼 블록들에 포함되는 메모리 블록들의 물리 어드레스가 저장 또는 업데이트될 수 있다.
L2P 테이블(L2P_T)에는 논리 어드레스의 인덱스(IND)에 대응되는 물리 어드레스(PADD)가 저장될 수 있다. 예를 들면, 논리 어드레스는 호스트와 메모리 컨트롤러 사이에서 통신하는 어드레스일 수 있고, 물리 어드레스는 메모리 컨트롤러와 메모리 장치들 사이에서 통신하는 어드레스일 수 있다. 따라서, 메모리 컨트롤러는 논리 어드레스와 물리 어드레스를 서로 매칭하여 L2P 테이블(L2P Table)로 관리할 수 있다. 예를 들면, 리프레쉬 동작 시, 대상 블록의 데이터가 예비 블록으로 카피(copy)되면, 기존 논리 어드레스에 대응되는 물리 어드레스가 예비 블록으로 업데이트될 수 있다. 이처럼, 카피된 메모리 블록의 어드레스로 맵핑이 바뀌는 경우를 리맵(re-map)이라 할 수 있다.
P2L 테이블(P2L_T)에는 물리 어드레스의 인덱스(IND)에 대응되는 논리 어드레스(LADD)가 저장될 수 있다. 본 실시예에서는 리프레쉬 동작 시 예비 블록에 카피된 데이터가 대상 블록으로 다시 카피백(copy-back)되면, 리맵된 어드레스가 리맵되기 이전의 어드레스로 바뀌게 되는데, 이를 언맵(un-map)이라 할 수 있다.
리프레쉬 동작 시, 리드 카운트 테이블(RC_T)은 메모리 장치 및 메모리 블록에 대한 인덱스(IND#)에 대응되는 카운트 값(CNT#)을 중앙 처리 장치(200)로 출력할 수 있다. 리프레쉬 동작 시, 슈퍼 블록 테이블(SB_T)은 슈퍼 블록 단위로 레프레쉬가 수행된 경우, 리프레쉬된 메모리 블록들의 물리 어드레스로 블록 어드레스(BADD)를 업데이트할 수 있다. 리프레쉬 동작 시, L2P 테이블(L2P_T)은 리프레쉬된 논리 어드레스에 대응되는 물리 어드레스를 리맵(re-map)할 수 있고, 기존의 리맵(re-map) 이전의 물리 어드레스에 대응되는 논리 어드레스를 삭제할 수 있다. 또한, L2P 테이블(L2P_T)은 언맵(un-map) 시 리맵된 물리 어드레스를 리맵 이전의 물리 어드레스로 업데이트할 수 있다. 리프레쉬 동작 시, P2L 테이블(P2L_T)은 리맵된 물리 어드레스를 업데이트할 수 있고, 언맵 시 리맵된 물리 어드레스를 삭제하고 언맵 이전의 물리 어드레스로 업데이트할 수 있다.
도 7은 메모리 컨트롤러와 저장 장치를 제어하는 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 메모리 컨트롤러(1200)는 리프레쉬 동작 시, 커맨드와 함께 리프레쉬 대상 메모리 블록의 어드레스(#ADD)를 저장 장치(1100)에 전송할 수 있다. 저장 장치(1100)는 커맨드(CMD) 및 어드레스(#ADD)에 응답하여 리프레쉬 대상 블록의 데이터를 예비 블록으로 카피하고, 예비 블록의 데이터를 대상 블록으로 다시 카피백 할 수 있다.
도 8은 본 발명의 실시예에 따른 리프레쉬 동작을 설명하기 위한 순서도이다.
도 8을 참조하면, 리프레쉬 동작이 시작되면, 중앙 처리 장치(도 2의 200)는 리프레쉬 대상 블록의 개수가 설정 개수보다 많은지를 판단할 수 있다(S81). 예를 들면, 중앙 처리 장치(200)는 리드 카운트 테이블(도 6의 RC_T)에 저장된 카운트 값(CNT#) 각각을 미리 설정된 임계 값과 비교하고, 카운트 값(CNT#)이 임계 값보다 많은지 적은지를 판단할 수 있다. 저장 장치(1100)에 따라 리프레쉬가 필요한 리드 카운트 값이 다를 수 있으므로, 임계 값은 저장 장치(1100)에 따라 다를 수 있다.
리프레쉬 대상 블록의 개수가 설정 개수보다 많으면(예), 대상 블록이 포함된 슈퍼 블록 단위로 카피(copy) 동작이 수행될 수 있다(S82). 예를 들면, 슈퍼 블록에 포함된 메모리 블록들 중에서 리프레쉬가 필요한 블록의 개수가 설정 개수보다 많은 경우, 슈퍼 블록에 포함된 모든 메모리 블록들에 대하여 가비지 컬렉션(garbage collection) 동작이 수행될 수 있다. 예를 들면, ‘S82’ 단계에서는 슈퍼 블록에 포함된 모든 메모리 블록들의 데이터가 다른 슈퍼 블록으로 카피될 수 있다. 예를 들면, 오픈 블록이 개수가 많은 다른 슈퍼 블록이 타겟 슈퍼 블록으로 선택될 수 있고, 대상 블록이 포함된 슈퍼 블록의 데이터는 선택된 타겟 슈퍼 블록으로 카피될 수 있다. 카피 동작이 완료된 후에는 기존의 대상 블록들의 소거 동작이 수행될 수 있다.
대상 블록의 데이터가 모두 타겟 슈퍼 블록으로 카피되더라도, 대상 블록의 논리 어드레스는 그대로 유지되므로, 대상 블록의 논리 어드레스에 맵핑되는 물리 어드레스를 타겟 슈퍼 블록의 물리 어드레스로 리맵(re-map)될 수 있다(S83).
‘S81’ 단계에서, 리프레쉬 대상 블록의 개수가 설정 개수보다 적으면(아니오), 리프레쉬 대상 블록에 대해서만 개별적으로 카피(copy) 동작이 수행될 수 있다(S84). 예를 들면, 슈퍼 블록에 포함된 메모리 블록들 중에서 리프레쉬가 필요한 블록의 개수가 설정 개수보다 적은 경우, 리프레쉬 대상 블록이 아닌 블록들은 리프레쉬 동작이 불필요하므로, 슈퍼 블록에 포함되더라도 리프레쉬 대상 블록들에 대해서만 리프레쉬가 수행될 수 있다. 이를 위해, ‘S84’ 단계에서는 개별 블록 단위로 카피 동작이 수행될 수 있다. 개별 블록 단위의 카피 동작이 수행되기 때문에, 슈퍼 블록이 아닌 예비 블록들로 데이터가 카피될 수 있다. 카피 동작이 완료된 후에는 기존의 리프레쉬 대상 블록들에 대한 개별 소거 동작이 수행될 수 있다.
대상 블록의 데이터가 모두 예비 블록들로 카피되면, 대상 블록에 맵핑된 논리 어드레스는 그대로 존재하므로, 논리 어드레스에 맵핑되는 물리 어드레스가 예비 블록들로 리맵(re-map)될 수 있다(S85).
이어서, 예비 블록들에 카피된 데이터는 개별 블록 단위로 소거된 메모리 블록들로 다시 카피백(copy-back)될 수 있다(S86).
대상 블록들의 데이터가 카피된 예비 블록들은 다시 프리(free) 블록들이 되므로, 예비 블록들에 대한 논리-물리 어드레스의 맵핑을 제거하기 위한 언맵(un-map) 동작이 수행될 수 있다(S87). 이처럼, 대상 블록들의 데이터를 예비 블록들로 카피한 후, 카피된 데이터를 다시 대상 블록들로 카피백함으로써, 예비 블록들의 개수를 다시 확보할 수 있다.
‘S83’ 또는 ‘S87’ 단계가 완료되면, 리프레쉬된 대상 블록들의 리드 카운트 값(CNT#)은 초기화되고, 리프레쉬 동작이 종료될 수 있다(S88).
상술한 바와 같이, 리프레쉬 동작 시 예비 블록들에 카피된 데이터를 대상 블록에 다시 카피백하여 예비 블록들을 프리(free) 블록으로 유지함으로써, 추후 리프레쉬 동작을 동일한 메모리 장치 내에서 빠르게 수행할 수 있고, 사용자 블록에서 배드 블록 발생 시 배드 블록을 슈퍼 블록 또는 예비 블록들로 빠르게 대체할 수 있다. 즉, 슈퍼 블록 또는 예비 블록들의 개수가 확보되면 리프레쉬 또는 배드 블록이 발생한 블록들에 대한 관리를 즉시 진행할 수 있으므로, 메모리 시스템의 동작 속도를 개선할 수 있고, 신뢰성도 향상시킬 수 있다.
상술한 리프레쉬 동작 중 슈퍼 블록 단위로 리프레쉬가 수행되는 경우를 제1 케이스라고 가정하고, 개별 블록 단위로 리프레쉬가 수행되는 경우를 제2 케이스라고 가정하여, 각 케이스를 구체적으로 설명하면 다음과 같다.
도 9 및 도 10은 본 발명의 리프레쉬 동작의 제1 케이스(도 8의 S81~S83에 대응됨)를 설명하기 위한 도면들이고, 도 11 내지 도 13은 본 발명의 리프레쉬 동작의 제2 케이스(도 8의 S84~S87에 대응됨)를 설명하기 위한 도면들이다.
도 9 내지 도 13에서, 제1 슈퍼 블록(SB1)에 제1 내지 제8 메모리 장치들(MD1~MD8)의 제1 메모리 블록들(B1)이 포함된 경우를 가정하고, 슈퍼 블록 또는 개별 블록 단위의 기준이 되는 설정 개수를 4개로 가정한다. 또한, 제1 내지 제8 메모리 장치들(MD1~MD8) 각각 제1 내지 제12 메모리 블록들(B1~B12)을 포함하고, 이 중에서 제1 내지 제8 메모리 블록들(B1~B8)이 사용자 블록(UB)에 포함되며 슈퍼 블록으로 관리되고, 제9 내지 제12 메모리 블록들(B9~B12)이 예비 블록(RSB)에 포함되어 개별적으로 사용된다고 가정한다.
도 9를 참조하면, 제1 슈퍼 블록(SB1)에서 리프레쉬 대상 블록의 개수가 설정 개수보다 많은 경우(S81의 ‘예’), 메모리 컨트롤러는 리프레쉬 동작이 슈퍼 블록 단위로 수행되도록 저장 장치를 제어할 수 있다. 예를 들면, 제1 슈퍼 블록(SB1)에 포함된 제1 메모리 블록들(B1) 중에서 제1 내지 제5 메모리 장치들(MD1~MD5)에 포함된 제1 메모리 블록들(B1)이 리프레쉬 대상 블록들이 되는 경우를 가정하여 설명하면 다음과 같다.
도 10을 참조하면, 리프레쉬 대상 블록의 개수가 설정 개수보다 많으므로, 제1 슈퍼 블록(SB1)에 포함된 모든 제1 메모리 블록들(B1)에 대하여 카피(copy) 동작이 수행될 수 있다(S82). 예를 들면, 제1 슈퍼 블록(SB1)에 포함된 모든 제1 메모리 블록들(B1)의 데이터는 다른 슈퍼 블록, 예를 들면 제6 슈퍼 블록(BS6)으로 카피될 수 있다. 이에 따라, 제1 슈퍼 블록(SB1)에 맵핑되는 물리 어드레스는 제1 메모리 블록(B1)에서 제6 메모리 블록(B6)으로 리맵(re-map)될 수 있다.
슈퍼 블록 단위로 수행되는 카피 동작에서는 예비 블록들(RSB)이 사용되지 않으므로, 예비 블록들(RSB)을 확보하기 위한 카피백 및 언맵 동작이 수행되지 않는다.
도 11을 참조하면, 제1 슈퍼 블록(SB1)에서 리프레쉬 대상 블록의 개수가 설정 개수보다 적은 경우(S81의 ‘아니오’), 메모리 컨트롤러는 리프레쉬 동작이 개별 블록 단위로 수행되도록 저장 장치를 제어할 수 있다. 예를 들면, 제1 슈퍼 블록(SB1)에 포함된 제1 메모리 블록들(B1) 중에서 제1 메모리 장치(MD1)에 포함된 제1 메모리 블록(B1)만 리프레쉬 대상 블록이 되는 경우를 가정하여 설명하면 다음과 같다.
도 12를 참조하면, 리프레쉬 대상 블록의 개수가 설정 개수보다 적으므로, 제1 슈퍼 블록(SB1)에 포함된 제1 메모리 블록들(B1) 중 제1 메모리 장치(MD1)의 제1 메모리 블록(B1)에 대해서만 카피(copy) 동작이 수행될 수 있다(S84). 예를 들면, 제1 슈퍼 블록(SB1)에 포함된 제1 메모리 블록들(B1) 중 제1 메모리 장치(MD1)의 제1 메모리 블록(B1)에 저장된 데이터는 예비 블록(RSB)에 포함된 메모리 블록들 중 제1 메모리 장치(1MD1)의 제9 메모리 블록(B9)으로 카피될 수 있다. 이에 따라, 제1 슈퍼 블록(SB1)에 맵핑되는 물리 어드레스 중 제1 메모리 장치(MD1)의 제1 메모리 블록(B1)은 제1 메모리 장치(MD1)의 제9 메모리 블록(B9)으로 리맵(re-map)될 수 있다(S85).
도 13을 참조하면, 제1 메모리 장치(MD1)의 제9 메모리 블록(B9)에 카피된 데이터는 제1 메모리 장치(MD1)의 제1 메모리 블록(B1)으로 다시 카피백(copy-back)될 수 있다(S86). 카피백 동작이 완료되면, 리맵된 어드레스를 다시 되돌려야 하므로, 리맵된 어드레스에 대하여 언맵(un-map) 동작이 수행될 수 있다.
도 11 내지 도 13에 도시된 바와 같이, 슈퍼 블록 내에서 리프레쉬 대상 블록의 개수가 설정 개수보다 적은 경우에는 슈퍼 블록 단위가 아닌 개별 블록 단위로 메모리 블록들에 대하여 리프레쉬 동작이 수행될 수 있다.
다음은 상술한 리프레쉬 동작 중, 어드레스를 리맵(re-map)하는 방법과 언맵(un-map)하는 방법을 실시예를 통하여 구체적으로 설명하도록 한다.
도 14는 본 발명의 실시예에 따른 리맵(re-map) 방법을 설명하기 위한 도면이고, 도 15는 본 발명의 실시예에 따른 언맵(un-map) 방법을 설명하기 위한 도면이다.
도 14를 참조하면, 리프레쉬 동작이 수행되기 이전의 L2P 테이블(L2P_T)에서, 제1 논리 테이블(LT1)에는 제1 논리 어드레스(L1)에 대응하여 제1 메모리 블록(B1)의 물리 어드레스가 맵핑될 수 있다. 이는 제1 논리 어드레스에 대응되는 데이터는 제1 메모리 블록(B1)에 저장되어 있는 것을 의미한다. 또한, P2L 테이블(P2L_T)에서, 제1 물리 테이블(PT1)에는 제1 물리 어드레스(B1)에 대응하여 제1 논리 어드레스(L1)가 맵핑될 수 있다. 이는 제1 물리 어드레스에 저장된 데이터는 제1 논리 어드레스(L1)에 대응된다는 것을 의미한다.
리프레쉬 동작 시 대상 블록의 데이터가 예비 블록으로 카피되면, 대상 블록의 어드레스가 예비 블록의 어드레스로 리맵(re-map)될 수 있다. 예를 들면, 제1 메모리 블록(B1)의 데이터가 예비 블록인 제9 메모리 블록(B9)으로 카피된 경우, L2P 테이블(L2P_T)에는 제2 논리 테이블(LT2)이 생성될 수 있고, 제2 논리 테이블(LT2)에서는 제1 논리 어드레스(L1)에 제9 메모리 블록(B9)이 맵핑될 수 있다(51).
이어서, P2L 테이블(P2L_T)에서는 제1 물리 테이블(PT1)의 인덱스가 제9 메모리 블록(B9)으로 업데이트될 수 있다(52). L2P 테이블(L2P_T)의 제1 논리 테이블(LT1)에 제1 논리 어드레스(L1)에 대응되는 동일한 인덱스(IND)가 존재하면 안되므로, 기존의 제1 논리 테이블(LT1)에서 리프레쉬 이전의 인덱스(IND)는 삭제될 수 있다(53).
도 15를 참조하면, 리프레쉬 동작 시 예비 블록에 카피된 데이터가 대상 블록으로 다시 카피백(copy-back)되면, 리맵(re-map)된 L2P 테이블(L2P_T)과 P2L 테이블(P2L_T)에서 기존 맵핑 테이블이 제거되는 언맵 동작이 수행된다. 따라서, 카피백 및 언맵 동작은 리프레쉬 대상 블록의 개수가 설정 개수보다 적은 경우에만 수행될 수 있다. 예를 들면, 도 8의 ‘S81’ 단계에서 ‘아니오’인 경우에만 카피백 및 언맵 동작이 수행될 수 있다. 언맵 동작은 다음과 같이 수행될 수 있다. P2L 테이블(P2L_T)의 제1 물리 테이블(PT2)에서 리맵된 테이블의 인덱스(IND)가 제거되고(61), 제1 메모리 블록(B1)을 인덱스로 하는 제2 물리 테이블(PT2)이 생성될 수 있다(62). 제1 메모리 블록(B1)에 대응되는 논리 어드레스는 제1 논리 어드레스(L1)를 유지할 수 있다. 즉, 리프레쉬 동작이 수행되더라도 논리 어드레스는 변경되지 않으므로, 제1 논리 어드레스(L1)는 그대로 유지될 수 있다.
이어서, 리맵 동작 시 L2P 테이블(L2P)에서 제1 논리 어드레스(L1)에 대응되는 물러 어드레스가 제9 메모리 블록(B9)으로 변경되었으므로, 언맵 동작에서는 제9 메모리 블록(B9)의 어드레스가 제1 메모리 블록(B1)의 어드레스도 재 변경될 수 있다(64).
따라서, 언맵 동작이 수행되면, L2P 테이블(L2P_T)에서는 제2 논리 테이블(LT2)에 기존의 제1 논리 테이블(LT1)의 정보가 저장되고, P2L 테이블(P2L_T)에서는 제2 물리 테이블(PT2)에 기존의 제1 물리 테이블(PT1)의 정보가 저장될 수 있다.
도 16은 도 1에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 16을 참조하면, 메모리 시스템(Memory System; 30000)은 이동 전화기(cellular phone), 스마트폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant) 또는 무선 통신 장치로 구현될 수 있다. 메모리 시스템(30000)은 저장 장치(1100)와 상기 저장 장치(1100)의 동작을 제어할 수 있는 메모리 컨트롤러(1200)를 포함할 수 있다. 메모리 컨트롤러(1200)는 프로세서(Processor; 3100)의 제어에 따라 저장 장치(1100)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 소거(erase) 동작 또는 리드(read) 동작 등을 제어할 수 있다.
저장 장치(1100)에 프로그램된 데이터는 메모리 컨트롤러(1200)의 제어에 따라 디스플레이(Display; 3200)를 통하여 출력될 수 있다.
무선 송수신기(RADIO TRANSCEIVER; 3300)는 안테나(ANT)를 통하여 무선 신호를 주고받을 수 있다. 예컨대, 무선 송수신기(3300)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(3100)에서 처리(process)될 수 있는 신호로 변경할 수 있다. 따라서, 프로세서(3100)는 무선 송수신기(3300)로부터 출력된 신호를 처리(process)하고 처리(process)된 신호를 메모리 컨트롤러(1200) 또는 디스플레이(3200)로 전송할 수 있다. 메모리 컨트롤러(1200)는 프로세서(3100)에 의하여 처리(process)된 신호를 저장 장치(1100)에 전송할 수 있다. 또한, 무선 송수신기(3300)는 프로세서(3100)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다. 입력 장치(Input Device; 3400)는 프로세서(3100)의 동작을 제어하기 위한 제어 신호 또는 프로세서(3100)에 의하여 처리(process)될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad) 또는 키보드로 구현될 수 있다. 프로세서(3100)는 메모리 컨트롤러(1200)로부터 출력된 데이터, 무선 송수신기(3300)로부터 출력된 데이터, 또는 입력 장치(3400)로부터 출력된 데이터가 디스플레이(3200)를 통하여 출력될 수 있도록 디스플레이(3200)의 동작을 제어할 수 있다.
실시 예에 따라, 저장 장치(1100)의 동작을 제어할 수 있는 메모리 컨트롤러(1200)는 프로세서(3100)의 일부로서 구현될 수 있고 또한 프로세서(3100)와 별도의 칩으로 구현될 수 있다.
도 17은 도 1에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 17을 참조하면, 메모리 시스템(Memory System; 40000)은 PC(personal computer), 태블릿(tablet) PC, 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
메모리 시스템(40000)은 저장 장치(1100)와 상기 저장 장치(1100)의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(1200)를 포함할 수 있다.
프로세서(Processor; 4100)는 입력 장치(Input Device; 4200)를 통하여 입력된 데이터에 따라 저장 장치(1100)에 저장된 데이터를 디스플레이(Display; 4300)를 통하여 출력할 수 있다. 예컨대, 입력 장치(4200)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
프로세서(4100)는 메모리 시스템(40000)의 전반적인 동작을 제어할 수 있고 메모리 컨트롤러(1200)의 동작을 제어할 수 있다. 실시 예에 따라 저장 장치(1100)의 동작을 제어할 수 있는 메모리 컨트롤러(1200)는 프로세서(4100)의 일부로서 구현되거나, 프로세서(4100)와 별도의 칩으로 구현될 수 있다.
도 18은 도 1에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 18을 참조하면, 메모리 시스템(50000)은 이미지 처리 장치, 예컨대 디지털 카메라, 디지털 카메라가 부착된 이동 전화기, 디지털 카메라가 부착된 스마트 폰, 또는 디지털 카메라가 부착된 태블릿 PC로 구현될 수 있다.
메모리 시스템(50000)은 저장 장치(1100)와 상기 저장 장치(1100)의 데이터 처리 동작, 예컨대 프로그램 동작, 소거 동작 또는 리드 동작을 제어할 수 있는 메모리 컨트롤러(1200)를 포함한다.
메모리 시스템(50000)의 이미지 센서(Image Sensor; 5200)는 광학 이미지를 디지털 신호들로 변환할 수 있고, 변환된 디지털 신호들은 프로세서(Processor; 5100) 또는 메모리 컨트롤러(1200)로 전송될 수 있다. 프로세서(5100)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이(Display; 5300)를 통하여 출력되거나 메모리 컨트롤러(1200)를 통하여 저장 장치(1100)에 저장될 수 있다. 또한, 저장 장치(1100)에 저장된 데이터는 프로세서(5100) 또는 메모리 컨트롤러(1200)의 제어에 따라 디스플레이(5300)를 통하여 출력될 수 있다.
실시 예에 따라 저장 장치(1100)의 동작을 제어할 수 있는 메모리 컨트롤러(1200)는 프로세서(5100)의 일부로서 구현되거나 프로세서(5100)와 별개의 칩으로 구현될 수 있다.
도 19는 도 1에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 실시 예를 설명하기 위한 도면이다.
도 19를 참조하면, 메모리 시스템(Memory System; 70000)은 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 메모리 시스템(70000)은 저장 장치(1100), 메모리 컨트롤러(1200) 및 카드 인터페이스(Card Interface; 7100)를 포함할 수 있다.
메모리 컨트롤러(1200)는 저장 장치(1100)와 카드 인터페이스(7100) 사이에서 데이터의 교환을 제어할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(7100)는 호스트(HOST; 60000)의 프로토콜에 따라 호스트(60000)와 메모리 컨트롤러(1200) 사이에서 데이터 교환을 인터페이스할 수 있다. 실시 예에 따라 카드 인터페이스(7100)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스(7100)는 호스트(60000)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방식을 의미할 수 있다.
메모리 시스템(70000)이 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(60000)의 호스트 인터페이스(6200)와 접속될 때, 호스트 인터페이스(6200)는 마이크로프로세서(Microprocessor; μP; 6100)의 제어에 따라 카드 인터페이스(7100)와 메모리 컨트롤러(1200)를 통하여 저장 장치(1100)와 데이터 통신을 수행할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000: 메모리 시스템 1100: 저장 장치
1200: 메모리 컨트롤러 200: 중앙 처리 장치
210: 에러 정정 회로 220: 내부 메모리
230: 메모리 인터페이스 240: 버퍼 메모리
250: 호스트 인터페이스 310: 리프레쉬 모니터부
320: 어드레스 관리부 330: 커맨드 생성부
SB1~SBk: 슈퍼 블록

Claims (20)

  1. 메모리 블록들의 리드 카운트 값과, 상기 메모리 블록들의 어드레스 맵핑 정보를 저장하는 버퍼 메모리; 및
    상기 리드 카운트 값을 모니터링하고, 상기 모니터링 결과에 따라 리프레쉬(refresh)가 필요한 대상 블록들의 리프레쉬 동작을 슈퍼 블록 단위로 수행할지 또는 개별 블록 단위로 수행할지를 결정하는 중앙 처리 장치를 포함하는 메모리 컨트롤러.
  2. 제1항에 있어서, 상기 버퍼 메모리는,
    리드 동작이 수행되는 상기 메모리 블록들 각각에 대한 상기 리드 카운트 값을 저장하고 업데이트하는 리드 카운트 테이블;
    상기 슈퍼 블록들에 포함되는 상기 메모리 블록들의 어드레스를 저장하는 슈퍼 블록 테이블;
    논리 어드레스에 맵핑된 물리 어드레스를 저장하는 L2P 테이블; 및
    상기 물리 어드레스에 맵핑된 상기 논리 어드레스를 저장하는 P2L 테이블을 포함하는 메모리 컨트롤러.
  3. 제1항에 있어서, 상기 중앙 처리 장치는,
    상기 리드 카운트 값을 모니터링하고, 상기 대상 블록의 개수를 설정 개수와 비교하여 카운트 신호를 출력하는 리프레쉬 모니터부;
    상기 카운트 신호에 응답하여 리프레쉬 동작을 수행하기 위한 커맨드를 출력하는 커맨드 생성부; 및
    상기 카운트 신호에 응답하여 상기 버퍼 메모리로부터 어드레스를 출력하기 위한 인덱스를 출력하는 어드레스 관리부를 포함하는 메모리 컨트롤러.
  4. 제3항에 있어서, 상기 리프레쉬 모니터부는,
    메모리 장치들에 포함된 상기 메모리 블록들 각각에서 수행되는 리드 동작의 횟수를 카운트하여 리드 카운트 값을 상기 버퍼 메모리에 저장하는 리드 카운터; 및
    상기 리드 카운트 값을 임계 값과 비교하여 상기 리프레쉬 동작이 필요한 대상 블록들의 개수를 산출하고, 상기 대상 블록들의 개수와 설정 개수를 비교하여 카운트 신호를 출력하는 카운트 판단부를 포함하는 메모리 컨트롤러.
  5. 제4항에 있어서,
    상기 임계 값 및 상기 설정 개수는 상기 메모리 장치들에 따라 다르게 설정되는 메모리 컨트롤러.
  6. 제4항에 있어서, 상기 리드 카운터는,
    상기 리드 카운트 값이 상기 임계 값보다 높은 블록들을 상기 대상 블록들로 구분하고,
    상기 리프레쉬 동작이 종료된 상기 대상 블록들의 상기 리드 카운트 값을 초기화하는 메모리 컨트롤러.
  7. 제6항에 있어서,
    상기 리드 카운터는 상기 리프레쉬 동작이 종료된 상기 대상 블록들의 상기 카운트 값이 초기화되도록 상기 버퍼 메모리를 제어하는 메모리 컨트롤러.
  8. 제4항에 있어서, 상기 커맨드 생성부는,
    상기 카운트 신호에 따라 상기 대상 블록들의 개수가 상기 설정 개수보다 많은 것으로 판단되면, 상기 메모리 블록들을 상기 슈퍼 블록 단위로 상기 리프레쉬 동작을 수행하기 위한 커맨드를 출력하고,
    상기 카운트 신호에 따라 상기 대상 블록들의 개수가 상기 설정 개수보다 적은 것으로 판단되면, 상기 메모리 블록들을 상기 개별 블록 단위로 상기 리프레쉬 동작을 수행하기 위한 커맨드를 출력하는 메모리 컨트롤러.
  9. 제4항에 있어서, 상기 어드레스 관리부는,
    상기 카운트 신호에 따라 상기 대상 블록들의 개수가 상기 설정 개수보다 많은 것으로 판단되면, 상기 메모리 블록들을 상기 슈퍼 블록 단위로 상기 리프레쉬 동작을 수행하기 위한 인덱스를 출력하고,
    상기 카운트 신호에 따라 상기 대상 블록들의 개수가 상기 설정 개수보다 적은 것으로 판단되면, 상기 메모리 블록들을 상기 개별 블록 단위로 상기 리프레쉬 동작을 수행하기 위한 인덱스를 출력하는 메모리 컨트롤러.
  10. 제9항에 있어서, 상기 버퍼 메모리는,
    상기 인덱스에 따라 상기 리프레쉬 동작의 대상이 되는 블록들의 어드레스를 출력하는 메모리 컨트롤러.
  11. 제1항에 있어서,
    상기 슈퍼 블록 단위로 상기 리프레쉬 동작이 수행되는 경우,
    상기 중앙 처리 장치는 상기 슈퍼 블록에 포함된 모든 메모리 블록들에 대하여 상기 리프레쉬 동작이 수행되도록 상기 메모리 블록들이 포함된 메모리 장치들을 제어하는 메모리 컨트롤러.
  12. 제1항에 있어서,
    상기 개별 블록 단위로 상기 리프레쉬 동작이 수행되는 경우,
    상기 중앙 처리 장치는 상기 리프레쉬 동작의 대상이 되는 메모리 블록들에 대해서만 상기 리프레쉬 동작이 수행되도록 상기 메모리 블록들이 포함된 메모리 장치들을 제어하는 메모리 컨트롤러.
  13. 제1항에 있어서,
    상기 중앙 처리 장치는 상기 리프레쉬 동작이 종료된 상기 메모리 블록의 상기 리드 카운트 값이 초기화되도록 상기 버퍼 메모리를 제어하는 메모리 컨트롤러.
  14. 다수의 메모리 블록들이 포함되는 다수의 메모리 장치들; 및
    상기 메모리 장치들에 포함된 상기 메모리 블록들의 리프레쉬 동작 수행시, 상기 리프레쉬 동작이 필요한 메모리 블록들의 개수에 따라 상기 메모리 블록들을 슈퍼 블록 단위 또는 개별 블록 단위로 상기 리프레쉬 동작이 수행되도록 상기 메모리 장치들을 제어하는 메모리 컨트롤러를 포함하는 메모리 시스템.
  15. 제14항에 있어서,
    상기 메모리 장치들 각각에 포함된 상기 메모리 블록들은 사용자 블록 또는 예비 블록에 포함되는 메모리 시스템.
  16. 제15항에 있어서,
    상기 리프레쉬 동작의 대상이 되는 상기 메모리 블록들은 상기 사용자 블록에 포함된 블록들이고,
    상기 예비 블록에 포함되는 상기 메모리 블록들은 상기 리프레쉬 동작 시 상기 사용자 블록에 포함된 메모리 블록들의 데이터를 임시로 저장하는데 사용되는 블록들인 메모리 시스템.
  17. 제14항에 있어서, 상기 메모리 컨트롤러는,
    상기 메모리 블록들의 리드 카운트 값과, 상기 메모리 블록들의 어드레스 맵핑 정보를 저장하는 버퍼 메모리; 및
    상기 리드 카운트 값을 모니터링하고, 상기 모니터링 결과에 따라 리프레쉬(refresh)가 필요한 대상 블록들의 리프레쉬 동작을 슈퍼 블록 단위로 수행할지 또는 개별 블록 단위로 수행할지를 결정하는 중앙 처리 장치를 포함하는 메모리 시스템.
  18. 제17항에 있어서, 상기 버퍼 메모리는,
    리드 동작이 수행되는 메모리 블록들 각각에 대한 상기 리드 카운트 값을 저장하고 업데이트하는 리드 상기 카운트 테이블;
    상기 슈퍼 블록들에 포함되는 상기 메모리 블록들의 어드레스를 저장하는 슈퍼 블록 테이블;
    논리 어드레스에 맵핑된 물리 어드레스를 저장하는 L2P 테이블; 및
    상기 물리 어드레스에 맵핑된 상기 논리 어드레스를 저장하는 P2L 테이블을 포함하는 메모리 시스템.
  19. 제17항에 있어서, 상기 중앙 처리 장치는,
    상기 리드 카운트 값을 모니터링하고, 상기 대상 블록의 개수를 설정 개수와 비교하여 카운트 신호를 출력하는 리프레쉬 모니터부;
    상기 카운트 신호에 응답하여 리프레쉬 동작을 수행하기 위한 커맨드를 출력하는 커맨드 생성부; 및
    상기 카운트 신호에 응답하여 상기 버퍼 메모리로부터 어드레스를 출력하기 위한 인덱스를 출력하는 어드레스 관리부를 포함하는 메모리 시스템.
  20. 제19항에 있어서, 상기 리프레쉬 모니터부는,
    메모리 장치들에 포함된 상기 메모리 블록들 각각에서 수행되는 리드 동작의 횟수를 카운트하여 리드 카운트 값을 상기 버퍼 메모리에 저장하는 리드 카운터; 및
    상기 리드 카운트 값을 임계 값과 비교하여 상기 리프레쉬 동작이 필요한 대상 블록들의 개수를 산출하고, 상기 대상 블록들의 개수와 설정 개수를 비교하여 카운트 신호를 출력하는 카운트 판단부를 포함하는 메모리 시스템.
KR1020180046823A 2018-04-23 2018-04-23 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 KR102434343B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180046823A KR102434343B1 (ko) 2018-04-23 2018-04-23 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US16/198,269 US11061608B2 (en) 2018-04-23 2018-11-21 Memory controller and memory system having the same
CN201811555910.0A CN110390979B (zh) 2018-04-23 2018-12-19 存储器控制器和具有存储器控制器的存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180046823A KR102434343B1 (ko) 2018-04-23 2018-04-23 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20190123090A true KR20190123090A (ko) 2019-10-31
KR102434343B1 KR102434343B1 (ko) 2022-08-22

Family

ID=68237864

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180046823A KR102434343B1 (ko) 2018-04-23 2018-04-23 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Country Status (3)

Country Link
US (1) US11061608B2 (ko)
KR (1) KR102434343B1 (ko)
CN (1) CN110390979B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836366B2 (en) 2021-04-05 2023-12-05 SK Hynix Inc. Memory system and method of operating the same

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3250491B1 (en) 2015-01-26 2022-06-01 Curt G. Joa, Inc. Product turner and placer
KR102434343B1 (ko) * 2018-04-23 2022-08-22 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US11392292B2 (en) * 2019-07-15 2022-07-19 Micron Technology, Inc. Maintenance operations for memory devices
CN112233715A (zh) 2019-07-15 2021-01-15 美光科技公司 用于存储器系统的维护操作
KR102653235B1 (ko) * 2019-10-16 2024-04-01 에스케이하이닉스 주식회사 메모리 블록을 효율적으로 관리할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법
US11011217B1 (en) * 2019-12-20 2021-05-18 Micron Technology, Inc. Selective extension of a fine granularity mode for memory refresh operations
US11721384B2 (en) * 2020-04-17 2023-08-08 Advanced Micro Devices, Inc. Hardware-assisted dynamic random access memory (DRAM) row merging
EP4002368A1 (en) * 2020-09-22 2022-05-25 Changxin Memory Technologies, Inc. Memory data refresh method and controller therefor, and memory
US11853617B2 (en) * 2021-09-07 2023-12-26 Micron Technology, Inc. Managing write disturb based on identification of frequently-written memory units
TW202324112A (zh) * 2021-12-09 2023-06-16 韓商愛思開海力士有限公司 用以動態管理儲存裝置中的主機讀取運作及讀取刷新運作的方法、儲存裝置及其記錄媒體

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170286288A1 (en) * 2016-03-30 2017-10-05 Sandisk Technologies Llc Method and System for Blending Data Reclamation and Data Integrity Garbage Collection

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8166233B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Garbage collection for solid state disks
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
KR101577721B1 (ko) 2010-07-09 2015-12-29 삼성전자주식회사 메모리 시스템 및 그것의 리프레쉬 방법
US9021319B2 (en) * 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9087554B1 (en) * 2012-12-21 2015-07-21 Samsung Electronics Co., Ltd. Memory device, method for performing refresh operation of the memory device, and system including the same
US9570198B2 (en) * 2014-05-16 2017-02-14 SK Hynix Inc. Read disturb detection
KR102189757B1 (ko) 2014-07-30 2020-12-11 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템, 및 이의 동작 방법
KR102252376B1 (ko) * 2014-12-08 2021-05-14 삼성전자주식회사 셀 특성 플래그를 이용하여 리프레쉬 동작을 제어하는 메모리 장치
US10915256B2 (en) * 2015-02-25 2021-02-09 SK Hynix Inc. Efficient mapping scheme with deterministic power transition times for flash storage devices
US10147500B2 (en) * 2015-05-22 2018-12-04 SK Hynix Inc. Hybrid read disturb count management
KR101718713B1 (ko) 2015-05-29 2017-03-22 주식회사 이에프텍 비휘발성 메모리 시스템
US10049717B2 (en) 2016-03-03 2018-08-14 Samsung Electronics Co., Ltd. Wear leveling for storage or memory device
US10481830B2 (en) * 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
US10340016B2 (en) * 2017-06-26 2019-07-02 Micron Technology, Inc. Methods of error-based read disturb mitigation and memory devices utilizing the same
TWI629591B (zh) * 2017-08-30 2018-07-11 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
KR102434343B1 (ko) * 2018-04-23 2022-08-22 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170286288A1 (en) * 2016-03-30 2017-10-05 Sandisk Technologies Llc Method and System for Blending Data Reclamation and Data Integrity Garbage Collection

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836366B2 (en) 2021-04-05 2023-12-05 SK Hynix Inc. Memory system and method of operating the same

Also Published As

Publication number Publication date
KR102434343B1 (ko) 2022-08-22
CN110390979B (zh) 2024-01-09
US11061608B2 (en) 2021-07-13
US20190324689A1 (en) 2019-10-24
CN110390979A (zh) 2019-10-29

Similar Documents

Publication Publication Date Title
KR102434343B1 (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US10120615B2 (en) Memory management method and storage controller using the same
TWI765044B (zh) 記憶體系統及其操作方法
US9021218B2 (en) Data writing method for writing updated data into rewritable non-volatile memory module, and memory controller, and memory storage apparatus using the same
KR20200095103A (ko) 데이터 저장 장치 및 그 동작 방법
US11782825B2 (en) Memory system which stores a plurality of write data grouped into a transaction
KR20170105760A (ko) 데이터 저장 장치 및 그것의 동작 방법
US9619380B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
KR20190054426A (ko) 메모리 시스템 및 그것의 동작 방법
KR102578188B1 (ko) 메모리 컨트롤러 및 이의 동작 방법
US20170329539A1 (en) Data writing method, memory control circuit unit and memory storage device
KR20210003625A (ko) 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
KR20200114086A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
CN110309075B (zh) 存储器控制器以及具有存储器控制器的存储器系统
US20230004325A1 (en) Data processing system and operating method thereof
US10445014B2 (en) Methods of operating a computing system including a host processing data of first size and a storage device processing data of second size and including a memory controller and a non-volatile memory
US11586379B2 (en) Memory system and method of operating the same
US11221946B2 (en) Data arrangement method, memory storage device and memory control circuit unit
KR20190073125A (ko) 메모리 시스템 및 이의 동작 방법
KR20210156061A (ko) 저장 장치 및 그 동작 방법
KR20190102998A (ko) 컨트롤러, 데이터 저장 장치 및 그것의 동작 방법
KR20200142698A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11657000B2 (en) Controller and memory system including the same
US20230205427A1 (en) Storage device including memory controller and operating method of the same
US20230195648A1 (en) Methods of operating host device and storage device, and electronic device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant