KR101077339B1 - 반도체 기억 장치 - Google Patents
반도체 기억 장치 Download PDFInfo
- Publication number
- KR101077339B1 KR101077339B1 KR1020097018224A KR20097018224A KR101077339B1 KR 101077339 B1 KR101077339 B1 KR 101077339B1 KR 1020097018224 A KR1020097018224 A KR 1020097018224A KR 20097018224 A KR20097018224 A KR 20097018224A KR 101077339 B1 KR101077339 B1 KR 101077339B1
- Authority
- KR
- South Korea
- Prior art keywords
- unit
- data
- memory area
- area
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
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)
- Computer Hardware Design (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
반도체 기억 장치는 휘발성 반도체 메모리로 구성된 제1 메모리 영역(11), 비휘발성 반도체 메모리로 구성된 제2 및 제3 메모리 영역(12, 13), 및 다음의 처리를 실행하는 컨트롤러(10)를 포함한다. 컨트롤러(10)는 제1 단위로 복수의 데이터를 제1 메모리 영역에 기억시키는 제1 처리, 제1 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제2 메모리 영역에 기억시키는 제2 처리, 및 제2 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제3 메모리 영역에 기억시키는 제3 처리를 실행한다.
Description
본 발명은 비휘발성 반도체 메모리를 구비한 반도체 기억 장치에 관한 것이다.
NAND형 플래시 메모리와 같이, 비휘발성 반도체 메모리는, 데이터가 기억되는 경우에, 블록으로 불리는 단위로 한번 데이터를 소거하고 나서 그 후에 기입을 행하는 타입과, 페이지(page)로 불리는 단위로 판독 및 기입을 행하는 타입과, 소거, 판독 및 기입의 단위가 고정되는 타입을 갖는다.
한편, 퍼스널 컴퓨터 등의 호스트 기기가 하드디스크 드라이브 등의 2차 기억 장치에 대하여 데이터의 판독 및 기입을 행하는 단위는 섹터로 불린다. 섹터는 비휘발성 반도체 메모리에서의 소거, 판독 및 기입의 단위와는 독립적으로 결정된다.
예를 들면, 비휘발성 반도체 메모리에서의 블록 단위의 크기(블록 사이즈)는 512 kB이며 페이지 단위의 크기(페이지 사이즈)는 4 kB인 반면에, 호스트 기기에서의 섹터 단위의 크기(섹터 사이즈)는 512 B이다.
이와 같이, 몇몇 경우에서, 비휘발성 반도체 메모리에서의 소거, 판독 및 기입의 단위는 호스트 기기에서의 판독 및 기입의 단위보다도 클 수 있다.
따라서, 비휘발성 반도체 메모리를 사용하여 퍼스널 컴퓨터에서의 하드디스크 드라이브 등의 2차 기억 장치가 구성되는 경우, 호스트 기기로서의 퍼스널 컴퓨터로부터의 섹터 사이즈의 데이터는 비휘발성 반도체 메모리의 블록 사이즈 및 페이지 사이즈에 적합하여 이에 기입될 필요가 있다.
한편, 플래시 메모리, 예를 들면, NAND형 플래시 메모리는 데이터의 기입에 앞서 행해지는 블록의 소거 횟수의 증가에 따라 메모리 셀의 열화가 진행되는 성질을 갖는다. 따라서, 비휘발성 반도체 메모리 내의 모든 메모리 셀의 소거 횟수가 실질적으로 동일해지도록 데이터 갱신 위치를 비휘발성 반도체 메모리 내에서 균등하게 분산시키는 웨어 레벨링(wear leveling)으로 불리는 처리가 행해진다.
예를 들면, 호스트 기기에 의해 지정되는 2차 기억 장치의 논리 어드레스는 데이터 갱신 위치를 나타내는 비휘발성 반도체 메모리의 물리 어드레스로 변환됨으로써, 데이터 갱신 위치는 균등하게 분산된다.
한편, 대용량의 2차 기억 장치에서 상기 어드레스 변환이 행해지는 경우, 데이터 관리의 단위가 작은 사이즈(예를 들면, 페이지 사이즈)이면, 논리 어드레스와 물리 어드레스 간의 대응표(어드레스 변환 테이블 또는 관리 테이블)는 커진다. 결과적으로, 대응표는 2차 기억 장치 내의 컨트롤러의 주 메모리에 수납되지 않음으로써, 어드레스 변환이 고속으로 행해질 수 없다는 문제가 발생한다. 따라서, 2차 기억 장치 내의 데이터 관리의 단위는 블록 사이즈와 같이 페이지 사이즈보다도 사이즈가 클 필요가 있다.
이와 같은 문제를 해결하기 위해서, 데이터를 기억한 블록(데이터 블록)에 대응시키도록 로그 블록(log block)으로 불리는 또 다른 블록이 제공되는 기술이 알려져 있다(예를 들면, 일본 특허출원공개 제2002-366423호를 참조).
이 기술에서는, 데이터는 로그 블록 내의 미사용 페이지에 기입되고, 로그 블록에 미사용 페이지가 없는 경우, 또는 로그 블록이 충분하지 않은 경우, 로그 블록에 기억된 데이터는 데이터 블록에 반영되어 기입 효율을 향상시킨다.
그렇지만, 이 기술은, 데이터 블록과 로그 블록이 일대일 대응하기 때문에, 동시에 갱신할 수 있는 블록의 수가 로그 블록의 수로 한정된다는 문제가 있다.
즉, 작은 사이즈의 데이터가 다수의 블록에 기입되는 경우, 로그 블록에 미사용 페이지가 다수 존재하는 상태에서 데이터 반영 처리가 행해짐으로써, 기입 효율은 향상되지 않는다.
또한, 블록의 소거 횟수를 억제하기 위해서, 블록 사이즈보다도 사이즈가 작은 페이지의 단위로 데이터를 때때로 관리하고, 갱신된 페이지 사이즈의 데이터를 또 다른 소거된 블록에 추가(부가적으로 기입)할 수 있다.
이 경우, 갱신된 페이지 사이즈의 데이터가 또 다른 블록에 기입되기 때문에, 원래 기억되어 있는 구(old) 데이터는 무효 데이터가 된다. 그렇지만, 무효 데이터를 포함하는 블록 내에 유효 데이터가 존재하는 경우에, 블록 내의 데이터는 재 이용을 위해 소거될 수 없다.
이것은, 소거가 블록 단위로 행해질 필요가 있고, 따라서, 유효 데이터가 동일한 블록에 기억되는 경우, 유효 데이터의 소거를 방지하기 위해서, 유효 데이터가 또 다른 블록에 재기입될 때까지 블록 내의 데이터가 소거될 수 없기 때문이다.
이러한 무효 데이터의 존재는 유효 데이터의 양보다도 더 큰 비휘발성 반도체 메모리의 기억 영역을 필요로 한다.
그렇지만, 2차 기억 장치에서 데이터의 갱신이 진행되면, 무효 데이터의 양은 증가된다. 따라서, 무효 데이터 및 유효 데이터를 포함하는 데이터 용량은 커진다. 결과적으로, 비휘발성 반도체 메모리 내의 기억 영역에 데이터를 기억할 수 없을 수도 있다.
무효 데이터를 소거할 목적으로, 블록으로부터 수집되는 유효 데이터가 미사용된 블록에 재기입되는 처리(콤팩션(compaction))가 실행된다(예를 들면, 일본 특허출원공개 제2005-222550호를 참조).
I. 본 발명의 일 형태에 따른 반도체 기억 장치는, 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되고, 제1 단위는 반도체 기억 장치에 대한 액세스 단위인 제1 메모리 영역과, 제2 단위로 데이터의 기입을 행하고 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되고, 제3 단위는 제2 단위의 2배 이상의 자연수배인 제2 및 제3 메모리 영역과, 컨트롤러를 포함하고, 이 컨트롤러는 제1 단위로 복수의 데이터를 제1 메모리 영역에 기억시키는 제1 처리와, 제1 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제2 메모리 영역에 기억시키고, 제1 관리 단위는 제1 단위의 2배 이상의 자연수배이며 제3 단위 미만인 제2 처리와, 제2 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제3 메모리 영역에 기억시키고, 제2 관리 단위는 제1 관리 단위의 2배 이상의 자연수배인 제3 처리를 실행한다.
II. 본 발명의 일 형태에 따른 반도체 기억 장치는, 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되고, 제1 단위는 반도체 기억 장치에 대한 액세스 단위인 제1 메모리 영역과, 제2 단위로 데이터의 기입을 행하고 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되고, 제3 단위는 제2 단위의 2배 이상의 자연수배인 제2, 제3 및 제4 메모리 영역과, 컨트롤러를 포함하고, 이 컨트롤러는 제1 단위로 복수의 데이터를 제1 메모리 영역에 기억시키는 제1 처리와, 제1 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제4 메모리 영역에 기억시키고, 제1 관리 단위는 제1 단위의 2배 이상의 자연수배이며 제3 단위 미만인 제2 처리와, 제2 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제3 메모리 영역에 기억시키고, 제2 관리 단위는 제1 관리 단위의 2배 이상의 자연수배이며 적어도 제3 단위인 제3 처리와, 제4 메모리 영역에 가장 오래된 할당 순서를 갖는 제3 단위의 영역을 제2 메모리 영역으로 이동시키는 제4 처리와, 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 제2 메모리 영역 내의 제3 단위의 미사용 영역 내에 재기입하는 제5 처리를 실행한다.
본 발명의 일 형태에 따른 반도체 기억 장치는, 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되고, 제1 단위는 반도체 기억 장치에 대한 액세스 단위인 제1 메모리 영역과, 제2 단위로 데이터의 기입을 행하고 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되고, 제3 단위는 제2 단위의 2배 이상의 자연수배인 제2, 제3, 제4 및 제5 메모리 영역과, 컨트롤러를 포함하고, 이 컨트롤러는 제1 단위로 복수의 데이터를 제1 메모리 영역에 기억시키는 제1 처리와, 제1 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제4 메모리 영역에 기억시키고, 제1 관리 단위는 제1 단위의 2배 이상의 자연수배이며 제3 단위 미만인 제2 처리와, 제2 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제5 메모리 영역에 기억시키고, 제2 관리 단위는 제1 관리 단위의 2배 이상의 자연수배이며 제3 단위 미만인 제3 처리와, 제4 메모리 영역에 가장 오래된 할당 순서를 갖는 제3 단위의 영역을 제2 메모리 영역으로 이동시키는 제4 처리와, 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 제2 메모리 영역 내의 제3 단위의 미사용 영역 내에 재기입하는 제5 처리와, 제5 메모리 영역에 가장 오래된 할당 순서를 갖는 제3 단위의 영역을 제3 메모리 영역으로 이동시키는 제6 처리와, 제3 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 제3 메모리 영역 내의 제3 단위의 미사용 영역 내에 재기입하는 제7 처리를 실행한다.
III. 본 발명의 일 형태에 따른 반도체 기억 장치는, 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되고, 제1 단위는 반도체 기억 장치에 대한 액세스 단위인 제1 메모리 영역과, 제2 단위로 데이터의 기입을 행하고 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되고, 제3 단위는 제2 단위의 2배 이상의 자연수배인 제2, 제3 및 제4 메모리 영역과, 컨트롤러를 포함하고, 이 컨트롤러는 제1 단위로 복수의 데이터를 제1 메모리 영역에 기억시키는 제1 처리와, 제1 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제4 메모리 영역에 기억시키고, 제1 관리 단위는 제1 단위의 2배 이상의 자연수배이며 제3 단위 미만인 제2 처리와, 제2 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제3 메모리 영역에 기억시키고, 제2 관리 단위는 제1 관리 단위의 2배 이상의 자연수배이며 적어도 제3 단위인 제3 처리와, 제4 메모리 영역 내의 제3 단위의 영역을 선택하여 선택된 영역을 제2 메모리 영역으로 이동시키는 제4 처리와, 가장 오래된 기입 순서를 갖는 하나로부터 순서대로 제3 단위의 영역 내의 데이터를 순차 선택하고 선택된 데이터를 제2 메모리 영역 내의 제3 단위의 미사용 영역 내에 재기입하는 제5 처리와, 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 제2 메모리 영역 내의 제3 단위의 미사용 영역 내에 재기입하는 제6 처리를 실행한다.
도 1은 제1 기본 구성을 나타내는 다이어그램.
도 2는 제2 기본 구성을 나타내는 다이어그램.
도 3은 캐시 관리 테이블을 나타내는 다이어그램.
도 4는 페이지 관리 테이블을 나타내는 다이어그램.
도 5는 페이지 관리 테이블을 나타내는 다이어그램.
도 6은 블록 관리 테이블을 나타내는 다이어그램.
도 7은 물리 블록 관리 테이블을 나타내는 다이어그램.
도 8은 물리 블록 관리 테이블을 나타내는 다이어그램.
도 9는 제1 메모리 영역에서의 데이터 기억 처리를 나타내는 플로차트.
도 10은 제1 메모리 영역으로부터의 데이터 출력 처리를 나타내는 플로차트.
도 11은 제1 메모리 영역으로부터의 데이터 출력 처리를 나타내는 플로차트.
도 12는 제1 메모리 영역으로부터 제2 메모리 영역으로의 데이터 전송을 나타내는 다이어그램.
도 13은 제1 메모리 영역으로부터 제3 메모리 영역으로의 데이터 전송을 나타내는 다이어그램.
도 14는 제1 메모리 영역으로부터 제3 메모리 영역으로의 데이터 전송을 나타내는 다이어그램.
도 15는 제2 메모리 영역으로부터 제3 메모리 영역으로의 데이터 전송을 나타내는 플로차트.
도 16은 제2 메모리 영역으로부터 제3 메모리 영역으로의 데이터 전송의 상태를 나타내는 다이어그램.
도 17은 시스템 예를 나타내는 다이어그램.
도 18은 시스템 예를 나타내는 다이어그램.
도 19는 콤팩션(compaction)의 예를 나타내는 다이어그램.
도 20은 제1 실시예의 구성을 나타내는 다이어그램.
도 21은 캐시 관리 테이블을 나타내는 다이어그램.
도 22는 페이지 관리 테이블을 나타내는 다이어그램.
도 23은 블록 관리 테이블을 나타내는 다이어그램.
도 24는 페이지 FIFO 관리 테이블을 나타내는 다이어그램.
도 25는 물리 블록 관리 테이블을 나타내는 다이어그램.
도 26은 제4 메모리 영역에서의 FIFO 처리를 나타내는 플로차트.
도 27은 처리 P1을 나타내는 플로차트.
도 28은 콤팩션의 처리예 1을 나타내는 플로차트.
도 29는 콤팩션의 처리예 2를 나타내는 플로차트.
도 30은 제2 실시예의 구성을 나타내는 다이어그램.
도 31은 트랙 관리 테이블을 나타내는 다이어그램.
도 32는 트랙 FIFO 관리 테이블을 나타내는 다이어그램.
도 33은 물리 블록 관리 테이블을 나타내는 다이어그램.
도 34는 제5 메모리 영역에서의 FIFO 처리를 나타내는 플로차트.
도 35는 콤팩션의 처리예 1을 나타내는 플로차트.
도 36은 콤팩션의 처리예 2를 나타내는 플로차트.
도 37은 제3 실시예의 구성을 나타내는 다이어그램.
도 38은 제4 메모리 영역에서의 FIFO 처리를 나타내는 플로차트.
도 39는 처리 P1을 나타내는 플로차트.
도 40은 제4 메모리 영역의 상태를 나타내는 다이어그램.
도 41은 제2 메모리 영역으로부터 제3 메모리 영역으로의 데이터 전송 처리의 처리예 및 콤팩션 처리를 나타내는 플로차트.
도 42는 제2 메모리 영역의 상태를 나타내는 다이어그램.
도 43은 제2 메모리 영역의 상태를 나타내는 다이어그램.
도 44는 제2 메모리 영역의 상태를 나타내는 다이어그램.
도 45는 제2 메모리 영역의 상태를 나타내는 다이어그램.
도 46은 제2 메모리 영역의 상태를 나타내는 다이어그램.
도 47은 데이터 관리 단위의 예를 설명하는 다이어그램.
도 48은 클러스터 관리 테이블을 나타내는 다이어그램.
도 49는 제4 메모리 영역에서의 FIFO 처리를 나타내는 플로차트.
도 50은 SSD의 예를 나타내는 다이어그램.
도 51은 일 블록의 구성예를 나타내는 다이어그램.
도 52는 메모리 셀 트랜지스터에서의 임계 전압 분포를 나타내는 다이어그램.
도 53은 드라이브 제어 회로의 구성예를 나타내는 다이어그램.
도 54는 프로세서의 구성예를 나타내는 다이어그램.
도 55는 휴대용 컴퓨터의 예를 나타내는 다이어그램.
도 56은 휴대용 컴퓨터의 시스템의 예를 나타내는 다이어그램.
이하, 본 발명을 실행하기 위한 최선의 형태에 대하여 도면을 참조하여 설명한다.
[I. 기입 효율의 향상을 실현하는 반도체 기억 장치]
1. 개요
본 실시예에 따른 반도체 기억 장치는 호스트 기기로부터의 섹터 단위 데이터 스트림을 제1 메모리 영역에 기억시키고, 제1 메모리 영역에 기억된 데이터가 " 작은 단위(제1 관리 단위)" 또는 "큰 단위(제2 관리 단위)"로 관리되어야 하는지를 식별하며, "작은 단위" 데이터 및 "큰 단위" 데이터를 각각 제2 메모리 영역 및 제3 메모리 영역에 기억시키는 것을 특징으로 한다.
또한, 본 실시예에 따른 반도체 기억 장치는 제2 메모리 영역에 기억된 "작은 단위"를 하나의 "큰 단위" 데이터에 합병하여, "큰 단위" 데이터를 제3 메모리 영역에 기억시키는 것을 특징으로 한다.
"큰 단위"의 사이즈는 "작은 단위"의 사이즈의 자연수배이다. 각 "작은 단위" 데이터에서, 복수의 섹터 단위 데이터는 논리 어드레스의 순으로 순차 배열된다. 마찬가지로, 각 "큰 단위" 데이터에서, 복수의 섹터 단위 데이터는 논리 어드레스의 순으로 순차 배열된다.
달리 말하면, 본 실시예에 따른 반도체 기억 장치는 협소한 논리 어드레스의 범위 내의 복수의 섹터 단위 데이터(미립자(fine grained) 데이터)를 "작은 단위"로 제2 메모리 영역에 기억시키고, 광범위한 논리 어드레스의 범위 내의 복수의 섹터 데이터(조립자(coarse grained) 데이터)를 "큰 단위"로 제3 메모리 영역에 기억시킨다.
또한, 일정량의 "작은 단위" 데이터가 제2 메모리 영역에 축적되는 경우, 본 실시예에 따른 반도체 기억 장치는 데이터를 "큰 단위" 데이터로 병합하고 "큰 단위" 데이터를 제3 메모리 영역에 기억시킨다(디프래그먼테이션).
예를 들면, NAND형 플래시 메모리에서 "작은 단위"의 사이즈가 페이지 단위의 사이즈와 동일하고 "큰 단위"의 사이즈가 블록 단위의 사이즈와 동일한 경우를 고려할 수 있다. 달리 말하면, 섹터 단위(제1 단위) 데이터는 제1 메모리 영역에 기억되고, 페이지 단위(제2 단위)는 제2 메모리 영역에 기억되며, 블록 단위(제3 단위)는 제3 메모리 영역에 기억된다.
이 경우에, 호스트 기기로부터 반도체 기억 장치로 전송되는 섹터 단위 데이터는 최초로 제1 메모리 영역에 기억된다. 제1 메모리 영역에 기억된 데이터는 데이터의 수 또는 데이터 양에 기초하여 제2 메모리 영역 또는 제3 메모리 영역에 전송되는지가 결정된다.
즉, 제1 메모리 영역에 기억된 데이터가 제1 조건을 만족시키는 경우, 데이터는 "큰 단위"로 관리되고 블록 단위 데이터로서 제3 메모리 영역의 각 블록에 기억된다. 이 경우에, 블록 단위 데이터가 기입에 부수하여 소거될지라도, 기입 효율은 낮아지지 않는다.
한편, 제1 메모리 영역에 기억된 데이터가 제1 조건을 만족시키지 못하는 경우, 데이터는 "작은 단위"로 관리되고 페이지 단위 데이터로서 제2 메모리 영역의 각 페이지에 기억된다. 이 경우에, 블록 단위의 소거량은 추가 방식으로 페이지 단위 데이터를 기억시켜 감소될 수 있다.
제2 메모리 영역에 기억된 페이지 단위와 동등한 "작은 단위"의 데이터는 제2 조건에 기초하여 더 선택된다. 선택된 데이터를 포함하는 복수의 데이터는 "큰 단위" 데이터로 병합된다. "큰 단위" 데이터는 블록 단위 데이터로서 제3 메모리 영역의 각 블록에 기억된다.
제1 조건은 예를 들면 데이터의 수에 의해 규정된다.
즉, 제1 메모리 영역에 소정의 임계값에 도달하는 경우, 데이터는 제3 메모리 영역에 전송되고, 제1 메모리 영역에 기억된 데이터의 수가 소정의 임계값에 도달하지 않는 경우, 데이터는 제2 메모리 영역에 전송된다.
변형적으로, 제1 및 제2 메모리 영역에 기억된 데이터의 총수가 소정의 임계값에 도달하는지가 결정될 수 있다. 즉, 총수가 소정의 임계값에 도달하는 경우, 데이터는 제3 메모리 영역에 전송되고, 총수가 소정의 임계값에 도달하지 않는 경우, 데이터는 제2 메모리 영역에 전송된다.
제2 조건은 예를 들면 기입 순서 또는 유효 데이터의 수에 의해 규정된다.
제2 조건이 기입 순서에 의해 규정되는 경우, 제2 메모리 영역에서의 블록 중에서 검출된 기입 순서가 가장 빠른 블록 내의 데이터가 순차 선택되고, 선택된 데이터는 제3 메모리 영역에 전송된다.
제2 메모리 영역에서의 각 블록에 대하여, 제2 조건이 유효 데이터의 수에 의해 규정되는 경우, 제2 메모리 영역에 기억된 페이지 단위의 유효 데이터의 수는 블록 내의 유효 데이터의 논리 어드레스가 블록 단위의 사이즈에 의해 정렬될 때 논리 어드레스 범위에 합계되고, 합계된 값이 가장 큰 블록 내의 유효 데이터는 제3 메모리 영역에 전송된다.
한편, "논리 어드레스가 소정의 사이즈(페이지 단위 또는 블록 단위의 사이즈 등)에 의해 정렬된다"라는 것은 논리 어드레스를 소정의 사이즈로 나눗셈하였을 때의 나머지가 0이도록 하는 어드레스로 논리 어드레스가 끝수 버림된다는 것을 의미한다. 예를 들면, 논리 어드레스 A를 사이즈 S로 정렬시켜 계산된 어드레스는 (A - (A를 S로 나눗샘하였을 때의 나머지))이다. 마찬가지로, "논리 어드레스 범위가 소정의 사이즈로 정렬되었다"라는 것은 어드레스로부터의 소정 사이즈의 범위가 소정의 사이즈로 논리 어드레스를 정렬시켜 계산되었다는 것을 의미한다.
본 실시예에 따른 반도체 기억 장치는 호스트 기기로부터의 데이터 사이즈 또는 데이터 양에 관계없이 기입 효율의 향상, 및 성능 열화와 수명 단축의 방지를 실현할 수 있다.
특히, 본 실시예의 효과는, 반도체 기억 장치가 소거, 판독 및 기입의 단위가 고정되는 비휘발성 반도체 메모리(예를 들면, NAND형 플래시 메모리)로 구성되고, 퍼스널 컴퓨터용의 2차 기억 장치(SSD: Solid State Drive)로서 사용되는 경우에 가장 현저하다.
이러한 반도체 기억 장치의 용량은 대형화되는 경향이 있으며, 복수의 비트가 하나의 메모리 셀에 기억되는 MLC(Multi Level Cell) 기술에 의해 용량의 증가 실현되는 경우에, 소거, 판독 및 기입의 단위는 실질적인 기입 성능을 유지하기 위해서 커지는 경향이 있다.
또한, 퍼스널 컴퓨터 등에서, 2차 기억 장치 상의 데이터는 종종 "작은 단위"로 갱신된다. 이 데이터가 블록 단위와 같은 "큰 단위"만으로 관리되는 경우, 데이터 갱신량에 대한 데이터 소거량은 커지게 됨으로써, 기입 효율은 낮아지고, 메모리 셀의 열화는 가속된다.
본 실시예에서 나타낸 바와 같이, 호스트 기기로부터의 데이터 스트림은 "작은 단위"와 "큰 단위"로 구분되고, "작은 단위" 데이터와 "큰 단위" 데이터는 각각 다른 메모리 영역에 기입됨으로써, 위와 같은 문제가 발생할 가능성을 감소시킬 수 있다.
달리 말하면, 반도체 기억 장치에서 2개의 관리 단위, 즉 "작은 단위"와 "큰 단위"를 이용함으로써, 비휘발성 반도체 메모리의 데이터 소거량은 호스트 기기로부터의 데이터 기입량에 대하여 최적화되고 기입 효율은 향상된다.
2. 실시예
본 발명의 실시예를 설명한다.
본 실시예에 관련한 개념으로서의 기입 효율을 설명한다.
플래시 메모리, 예를 들면, NAND형 플래시 메모리에서의 메모리 셀의 열화에 대하여, 호스트 기기로부터의 기입 데이터 양에 요구되는 플래시 메모리에서의 블록 단위 데이터의 소거량은 중요한 요소이다.
본 실시예에서, 데이터 소거량을 기입 효율의 값으로 칭한다.
기입 데이터 양에 대한 블록 단위 데이터의 소거량이 작으면, 기입 효율의 값은 작아지고, 메모리 셀의 열화 진행은 비교적 느려진다.
이 현상은 기입 효율이 향상된다는 것을 의미한다. 한편, 블록 단위 데이터의 소거량이 크면, 기입 효율의 값은 커진다. 이 현상은 기입 효율이 떨어진다는 것을 의미한다.
즉, 플래시 메모리에서의 메모리 셀의 열화를 방지하기 위해서는, 블록 단위 데이터의 소거량을 감소시킴으로써, 기입 효율을 향상시키는 것이 중요하다.
플래시 메모리를 사용한 반도체 기억 장치에서의 기입 효율이 떨어지는 예를 나타낸다.
본 실시예에서, 플래시 메모리에서의 블록 단위의 사이즈 및 페이지 단위의 사이즈는 각각 512 kB와 4 kB인 것으로 가정하고, 호스트 기기의 섹터 단위의 사이즈는 512 B인 것으로 가정하며, 데이터 관리 단위의 사이즈는 블록 단위와 동일한 512 kB인 것으로 가정한다.
1 섹터의 사이즈를 가지며 데이터 X의 논리 어드레스 범위에 포함된 논리 어드레스를 갖는 데이터 Y의 갱신시의 처리를, 블록 단위와 동일한 사이즈를 갖는 데이터 X가 플래시 메모리에 기억되어 있는 상태에서 고려한다.
데이터 X는 플래시 메모리의 블록 B1 전체에 기억되는 것으로 가정한다.
먼저, 블록 B1로부터의 데이터 X는 임시 기억 영역 상에서 판독되고, 데이터 X의 일부는 호스트 기기로부터의 갱신 데이터 Y로 대체됨으로써, 최신 데이터가 생성된다. 그리고 나서, 블록 B1과는 다른 블록 B2 내의 데이터가 소거되고, 최신 데이터가 블록 B2에 기입된다.
이 처리에서, 상술한 바와 같이, 512 B의 데이터 Y를 기입하기 위해서 블록 B1로부터 512 kB의 데이터 X를 판독하고, 더욱이 블록 B2에 최신 데이터를 기입하기 위해서 블록 B2 내의 512 kB의 데이터를 소거할 필요가 있다.
따라서, 플래시 메모리에서의 소거량은 호스트 기기로부터의 기입 데이터 양에 대하여 크고, 이로써 기입 효율은 매우 나쁘다.
본 예에서의 기입 효율의 값은 512 kB/512 B = 1024이다.
일반적으로, NAND형 플래시 메모리에서, 블록 소거 처리 및 기입 처리에 상 상한 시간이 걸리며, 따라서, 기입 효율의 열화는 소거된 블록에서의 블록 단위 데이터의 소거량과 기입 데이터 양이 호스트 기기로부터의 기입 데이터 양에 대하여 크다는 것을 의미하며, 동시에, 반도체 기억 장치의 레이트 성능이 나빠진다는 것을 의미한다.
(1) 기본 구성
도 1은 본 실시예에 따른 반도체 기억 장치의 제1 기본 구성을 나타낸다.
제1 메모리 영역(11)은 호스트 기기로부터 데이터를 일시적으로 기억시킨다. 데이터는 제1 메모리 영역(11)에 섹터 단위(제1 단위)로 기입된다. 제1 메모리 영역(11)은 예를 들면 DRAM(Dynamic Random Access Memory)과 같은 휘발성 반도체 메모리로 구성된다.
제1 메모리 영역(11)을 포함하는 휘발성 반도체 메모리에서의 판독/기입의 물리 단위는 섹터 단위 이하이다. 호스트 기기는 섹터 단위의 논리 어드레스(LBA: Logical Block Addressing)를 이용하여 반도체 기억 장치에의 액세스를 실행한다. 따라서, 제1 메모리 영역(11)은 섹터 단위로 입력 데이터를 관리한다.
제2 메모리 영역은 비휘발성 반도체 메모리, 예를 들면, NAND형 플래시 메모리 내의 블록으로 구성된다. 제3 메모리 영역은 비휘발성 반도체 메모리, 예를 들면, NAND형 플래시 메모리 내의 블록으로 구성된다.
제2 및 제3 메모리 영역(12, 13)은 각각 개별적인 비휘발성 반도체 메모리(메모리 칩)로 구성된다. 각각의 메모리 칩은 기입 성능과 같이 다른 성능을 가질 수 있거나, 또는 다른 기억 용량을 가질 수 있다. 예를 들면, 제2 메모리 영 역(12)은 SLC(Single level cell) 기술을 이용한 NAND형 플래시 메모리로 구성될 수 있으며, 제3 메모리 영역(13)은 MLC(Multi level cell) 기술을 이용한 NAND형 플래시 메모리로 구성될 수 있다.
비휘발성 반도체 메모리에서, 판독/기입이 한번에 실행되는 단위는 페이지(제2 단위)이며 소거가 한번에 실행되는 단위는 블록(제3 단위)이다.
하나의 블록 단위는 복수의 페이지 단위로 구성된다. 또한, 본 실시예에 따른 비휘발성 반도체 메모리는 페이지를 포함하는 블록 내의 데이터가 한번 소거되지 않으면 동일한 페이지에 재기입되는 것을 허용하지 않는다.
따라서, 대체 데이터(새로운 데이터)가 호스트 기기로부터 입력되면, 새로운 데이터와 동일한 논리 어드레스를 갖는, 블록에 원래 기억된 구 데이터는 무효 데이터로서 처리된다. 새로운 데이터는 구 데이터에 우선하는 유효 데이터로서 처리되며, 구 데이터는 새로운 데이터를 참조하여 무시되는 무효 데이터로서 처리된다.
설명을 단순화하기 위해서, 각각의 단위를 아래와 같이 가정한다.
반도체 기억 장치에서의 데이터 관리 단위인 "작은 단위(제1 관리 단위)"의 사이즈는 페이지 단위의 사이즈(한 페이지 내에서의 기억 가능한 데이터 양)와 동일하다. "큰 단위(제2 관리 단위)"의 사이즈는 블록 단위의 사이즈(한 블록 내에서의 기억 가능한 데이터 양)와 동일하다. "작은 단위"의 사이즈는 섹터 단위 사이즈의 자연수배이다.
데이터의 사이즈를 나타내는 제1, 제2 및 제3 단위는 반도체 기억 장치에 호스트 기기로부터의 주 데이터에 부가되는 용장 데이터(ECC: Error Checking/Correcting Code, 내부 제어용 플래그 등)를 포함하지 않는다.
일반적으로, 비휘발성 반도체 메모리, 예를 들면 NAND형 플래시 메모리를 포함하는 시스템은 주 데이터에 용장 데이터를 부가한 상태에서 판독/기입을 실행한다. 그렇지만, 설명을 단순화하기 위해서, 각각의 단위를 위와 같이 가정한다.
제2 메모리 영역(12)은 페이지 단위와 동일한 "작은 단위"로 제1 메모리 영역(11)으로부터 전송되는 데이터를 기억시킨다. 제3 메모리 영역(13)은 블록 단위와 동일한 "큰 단위"로 제1 메모리 영역(11) 또는 제2 메모리 영역(12)으로부터 전송되는 데이터를 기억시킨다.
제2 메모리 영역(12)은 "작은 단위"로 갱신되는 데이터의 일부만을 제어하기 때문에 제3 메모리 영역(13)의 용량보다도 작은 용량을 가질 수 있다.
다음의 설명에서, 한 블록 단위 데이터는 한 블록에 완전히 기억되며, 한 페이지 단위 데이터는 한 페이지에 완전히 기억된다. 각각의 블록은 복수의 페이지로 구성되며, 복수의 페이지 단위 데이터는 한 블록에 기억된다.
컨트롤러(10)는 CPU 및 주 메모리를 가지며, 데이터 관리를 실행하는 프로그램을 동작시킬 수 있다. 본 실시예에서, 컨트롤러(10)에 의해 실현되는 기능들은 임의의 하드웨어와 소프트웨어 또는 이들의 조합으로서 구현될 수 있다. 이들 기능이 하드웨어 또는 소프트웨어로서 구현되는지는 실제의 실시예 또는 전체 시스템에 부과된 설계 제약에 좌우된다. 당업자는 실제의 실시예 각각에 대하여 다양한 방법에 의해 이들 기능을 구현할 수 있으며, 본 발명의 범위는 그 구현의 결정을 포함한다.
논리 어드레스에 의해 액세스되는 데이터가 제1, 제2 및 제3 메모리 영역(11, 12, 13)에서 어디에 기억되는지를 관리하기 위해서, 컨트롤러(10)는 주 메모리에 캐시 관리 테이블, 페이지 관리 테이블, 블록 관리 테이블, 및 물리 블록 관리 테이블을 갖는다.
컨트롤러(10)의 주 메모리가 DRAM과 같은 휘발성 반도체 메모리로 구성되는 경우, 제1 메모리 영역(11)은 컨트롤러(10)의 주 메모리로 구성될 수 있다.
도 2는 본 실시예에 따른 반도체 기억 장치의 제2 기본 구성을 나타낸다.
제2 기본 구성은 도 1의 제1 기본 구성과는 다음의 점에서 상이하다.
제2 및 제3 메모리 영역(12, 13)은 비휘발성 반도체 메모리(22)로 구성된다. 제1 메모리 영역(11)을 포함하는 휘발성 반도체 메모리는 DRAM인 것으로 가정하고, 제2 및 제3 메모리 영역(12, 13)을 포함하는 비휘발성 반도체 메모리(22)는 예를 들면 NAND형 플래시 메모리인 것으로 가정한다.
제2 및 제3 메모리 영역(12, 13)은 비휘발성 반도체 메모리(22)에서 기억 영역을 공유하도록 구성되며, 컨트롤러(10)는 비휘발성 반도체 메모리(22) 내의 블록을 제2 메모리 영역(12) 또는 제3 메모리 영역(13)에 할당한다. 제2 및 제3 메모리 영역(12, 13)에의 할당은 정적이 아니라 동적이다. 제2 및 제3 메모리 영역(12, 13)에의 할당은 컨트롤러(10)에 의해 제어된다. 제2 및 제3 메모리 영역(12, 13)은 복수의 비휘발성 반도체 메모리(메모리 칩) 상에서 구성될 수 있다. 컨트롤러(10)는 하나의 별개의 기억 영역으로서 비휘발성 반도체 메모리 내의 복수의 블록 전체를 처리할 수 있다.
컨트롤러(10)는 주 메모리에 캐시 관리 테이블, 페이지 관리 테이블, 블록 관리 테이블, 및 물리 관리 테이블을 갖는다.
도 1 및 도 2에서, 이들 관리 테이블은 반도체 기억 장치에 전원 공급이 없는 상태에서 비휘발성 반도체 메모리에 기억된다. 컨트롤러(10)는 전원 공급 시에 주 메모리 상에서 이들 관리 테이블을 판독한다. 컨트롤러(10)는 호스트 기기로부터 지정된 논리 어드레스 공간을 비휘발성 반도체 메모리에서의 데이터의 물리 위치와 연관시키기 위해서 어드레스 변환을 실행한다.
-- 캐시 관리 테이블 --
도 3은 캐시 관리 테이블의 예를 나타낸다.
캐시 관리 테이블은 페이지 단위와 동일한 "작은 단위"로 도 1 및 도 2의 제1 메모리 영역(11)에 기억된 데이터를 제어한다. 유효 데이터의 제어는 섹터 단위로 실행된다.
하나의 엔트리가 제1 메모리 영역(11)에서 한 페이지 단위의 한 영역에 할당된다고 가정한다.
엔트리의 수는 제1 메모리 영역(11) 내에 포함될 수 있는 페이지 단위 데이터의 수, 즉 (제1 메모리 영역(11)의 총 용량)/(페이지 단위의 사이즈)보다 크지 않은 것으로 가정한다.
페이지 단위 데이터의 논리 어드레스, 제1 메모리 영역(11)의 물리 어드레스, 및 페이지 단위의 관련 영역에서의 유효 데이터의 위치를 나타내는 섹터 플래그는 각각의 엔트리와 연관된다.
각각의 엔트리에 대응되는 데이터를 일시적으로 기억시키는 페이지 단위의 영역은 제1 메모리 영역(11)에서 제공되며, 그 영역의 물리 어드레스는 각각의 엔트리에 기억된다. 페이지 단위의 영역이 연속적으로 배치되는 것과 같이, 엔트리에 대응하는 영역의 물리 어드레스가 고정되면, 물리 어드레스는 엔트리에 기억되는 것을 필요로 하지 않는다.
제1 메모리 영역(11)에서의 페이지 단위의 각 영역은 캐시 관리 테이블에서 섹터 단위의 영역으로 더 구분된다. 섹터 단위의 각 영역 내의 데이터 상태는 섹터 플래그의 값을 "1" 또는 "0"으로서 설정함으로써 표현된다.
섹터 플래그 "1"을 갖는 영역에서, 호스트 기기로부터의 유효 데이터가 기어된다. 섹터 플래그 "0"을을 갖는 영역에서, 호스트 기기로부터 기입된 최근 데이터는 기억되지 않음으로써, 영역은 무효 영역으로서 처리된다. 모든 섹터 플래그가 "0"인 엔트리는 미사용 엔트리인 것으로 간주된다.
이와 같은 캐시 관리 테이블의 구성은 논리 어드레스가 각 엔트리에 할당되는 풀 어소시에이티브(full associative) 방법으로 불리는 제어 방법에 기초한다. 그렇지만, 제1 메모리 영역(11)에서의 논리 어드레스와 물리 어드레스 간의 대응은 n-way 세트 어소시에이티브 방법 등에 의해 제어될 수 있다.
-- 페이지 관리 테이블 --
도 4는 페이지 관리 테이블의 예를 나타낸다.
페이지 관리 테이블은 페이지 단위와 동일한 "작은 단위"로 도 1 및 도 2의 제2 메모리 영역(12)에 기억된 데이터를 제어한다.
제2 메모리 영역(12)에서 한 페이지 단위의 한 영역에 하나의 엔트리가 할당된다고 가정한다.
엔트리의 수는 제2 메모리 영역(12)에 포함될 수 있는 페이지 단위 데이터의 수, 즉 (제2 메모리 영역(12)의 총 용량)/(페이지 단위의 사이즈)보다도 크지 않은 것으로 가정한다.
페이지 단위 데이터의 논리 어드레스 및 제2 메모리 영역(12)의 물리 어드레스는 각각의 엔트리와 연관된다.
예를 들면, 물리 어드레스 A를 갖는 한 페이지 단위 데이터는 물리 어드레스 A에 의해 지정된 제2 메모리 영역(12)에서의 블록 0의 제1 페이지에 기억되고, 물리 어드레스 C를 갖는 한 페이지 단위 데이터는 물리 어드레스 C에 의해 지정된 제2 메모리 영역(12)에서의 블록 1의 제2 페이지에 기억된다. 무효 엔트리는, 예를 들면, 엔트리의 유효 또는 무효를 나타내는 플래그를 제공하거나, 또는 무효 논리 어드레스 또는 무효 물리 어드레스를 엔트리에 기억시킴으로써 표현된다.
도 5는 페이지 관리 테이블의 또 다른 예를 나타낸다. 도 5에서의 페이지 관리 테이블은 나중에 설명한다.
-- 블록 관리 테이블 --
도 6은 블록 관리 테이블의 예를 나타낸다.
블록 관리 테이블은 블록 단위와 동일한 "큰 단위"로 도 1 및 도 2의 제3 메모리 영역(13)에 기억된 데이터를 제어한다.
제3 메모리 영역(13)에서 한 블록 단위의 한 영역에 하나의 엔트리가 할당된 다고 가정한다.
엔트리의 수는 제3 메모리 영역(13)에 포함될 수 있는 블록 단위 데이터의 수, 즉 (제3 메모리 영역(13)의 총 용량)/(블록 단위의 사이즈)보다도 크지 않은 것으로 가정한다.
각각의 엔트리는 논리 어드레스의 순으로 배열된다. 블록 단위 데이터의 논리 어드레스에 대응하고 제3 메모리 영역(13) 내의 블록을 지정하는 물리 어드레스는 각각의 엔트리와 연관된다. 무효 엔트리는, 예를 들면, 엔트리의 유효 또는 무효를 나타내는 플래그를 제공하거나, 또는 무효 물리 어드레스를 엔트리에 기억시킴으로써 표현된다.
-- 물리 블록 관리 테이블 --
도 7 및 도 8은 물리 블록 관리 테이블의 예를 나타낸다.
도 7의 물리 블록 관리 테이블은 제1 기본 구성에서 사용되고 도 1의 제2 및 제3 메모리 영역(12, 13)에서의 블록의 취급(사용/미사용)을 제어한다. 도 7(a)에 도시된 바와 같이, 유용성에 대한 포인터는 제2 메모리 영역(12)용의 물리 블록 관리 테이블에 기억되고, 물리 블록 관리 테이블은 블록 내의 페이지의 유용성을 제어한다.
도 7(b)에 도시된 바와 같이, 기억 영역을 절약하기 위해서, 페이지의 유용성은 제3 메모리 영역(13)용의 물리 블록 관리 테이블에 의해 제어되지 않는다.
도 8의 물리 블록 관리 테이블은 제2 기본 구성에서 사용되며 도 2의 비휘발성 반도체 메모리(22) 내의 기억 영역(블록)이 제2 메모리 영역(12)으로서 이용되 는지(사용), 또는 이용되지 않는지(미사용: 유효 데이터는 존재하지 않음)의 여부를 제어한다. 기억 영역이 제2 메모리 영역(12)으로서 이용되는 경우, 물리 블록 관리 테이블은 이와 연관된 페이지의 유용성을 제어한다.
제2 및 제3 메모리 영역(12, 13)에서 하나의 블록(물리 블록)에는 하나의 엔트리가 할당된다고 가정한다.
엔트리의 수는 데이터 영역으로서 이용될 수 있는 블록의 수보다도 크지 않은 것으로 가정한다.
물리 어드레스 및 이 물리 어드레스에 의해 지정된 블록의 취급은 각각의 엔트리와 연관되며, 제2 메모리 영역(12)에서 이용되는 블록에 대하여, 페이지의 유용성이 관리된다.
페이지 유용성은 페이지마다 "기입 가능" 상태(이 기억 영역은 비어있음)와 "기입 불가" 상태(이 기억 영역은 구 데이터가 한번 기입되고 새로운 데이터가 또 다른 기억 영역에 재기입되기 때문에 무효함)를 구별할 수 있도록 구성된다.
각 페이지에 대한 데이터 기입 시퀀스에서, 비휘발성 반도체 메모리가 물리 어드레스의 상승 순서로 데이터의 기입을 행하면, 페이지 유용성은 데이터가 블록에 추가될 수 있는 미사용 페이지의 위치를 기억시킴으로써 관리된다.
제2 메모리 영역(12)용 블록에서의 페이지의 유용성으로서, 예를 들면, 블록 내의 미사용 페이지를 관리하는 도 4에 도시된 데이터 구조가 채택된다.
본 실시예에서, 페이지 유용성은 물리 블록 관리 테이블에 기억된다; 그렇지만, 도 5에 도시된 바와 같이, 이는 페이지 관리 테이블에 기억될 수 있다. 이 경 우에, 페이지 관리 테이블은 제2 메모리 영역(12)에 이용되는 물리 블록의 단위로 구분되고, 페이지 유용성과 함께 논리 어드레스를 기억시킨다.
위와 같은 서술에서, 설명을 단순화하기 위해서, 제2 메모리 영역(12)에 이용되는 "작은 단위(제1 관리 단위)"는 페이지 단위인 것으로 가정하고, 제3 메모리 영역(13)에 이용되는 "큰 단위(제2 관리 단위)"는 블록 단위인 것으로 가정한다; 그렇지만, 관리 단위는 이러한 설정에 제한되지 않는다.
하드디스크 드라이브(자기 디스크 장치)의 대체로서 2차 기억 장치를 포함하는 NAND형 플래시 메모리와 같은 비휘발성 반도체 메모리에서, 소거, 판독 및 기입의 단위가 고정되는 것이 중요하다.
예를 들면, 페이지는 분할됨으로써 제어되는데, 구체적으로, 제2 메모리 영역(12)에 이용되는 "작은 단위"의 사이즈는 섹터 단위 사이즈의 자연수배일 수 있으며 페이지 단위의 사이즈는 "작은 단위" 사이즈의 2배 이상의 자연수배일 수 있다.
변형적으로, 복수의 페이지는 집합적으로 제어되는데, 구체적으로, 제2 메모리 영역(12)에 이용되는 "작은 단위"의 사이즈는 페이지 단위 사이즈의 2배 이상의 자연수배일 수 있으며 블록 단위의 사이즈는 "작은 단위" 사이즈의 2배 이상의 자연수배일 수 있다.
마찬가지로, 블록은 분할됨으로써 제어되는데, 구체적으로, 제3 메모리 영역(13)에 이용되는 "큰 단위"의 사이즈는 "작은 단위" 사이즈의 2배 이상의 자연수배일 수 있으며 블록 단위의 사이즈는 "큰 단위" 사이즈의 2배 이상의 자연수배일 수 있다.
변형적으로, 복수의 블록은 집합적으로 제어되는데, 구체적으로, 제3 메모리 영역(13)에 이용되는 "큰 단위"의 사이즈는 블록 단위 사이즈의 2배 이상의 자연수배일 수 있다.
제2 및 제3 메모리 영역(12, 13)에서의 소거의 단위는 동일(예를 들면, 블록 사이즈)할 수 있거나, 또는 복수의 블록을 동시에 소거함으로써 다를 수 있다.
(2) 처리 방법
도 1 및 도 2의 컨트롤러(10)에 의해 실행되는 처리를 설명한다.
A. 제1 메모리 영역에의 데이터 기억 처리
제1 메모리 영역(11)에의 데이터 기억 처리를 도 9를 참조하여 설명한다.
호스트 기기로부터의 입력 데이터는 제1 메모리 영역(11)에 최초로 기입되고 데이터는 일정 기간동안 제1 메모리 영역(11)에 기억된다. 이 때, 도 3의 캐시 관리 테이블이 갱신된다.
1. 컨트롤러(10)는 페이지 단위와 동일한 "작은 단위"의 사이즈로 입력 데이터의 논리 어드레스를 정렬한다(단계 ST1).
2. 컨트롤러(10)는 캐시 관리 테이블로부터의 페이지 단위의 사이즈로 정렬된 논리 어드레스 범위에 대응하는 엔트리를 검색한다(단계 ST2).
3. 컨트롤러(10)는 제1 메모리 영역(11)에서 대응하는 엔트리가 존재하는지를 판단한다. 대응하는 엔트리가 제1 메모리 영역(11)에서 검출되면, 컨트롤러(10)는 이 엔트리를 선택하고 이 처리는 단계 ST8로 진행한다. 대응하는 엔트리 가 제1 메모리 영역(11)에서 검출되지 않으면, 이 처리는 단계 ST4로 진행한다.
4. 컨트롤러(10)는 캐시 관리 테이블을 검색하고 미사용 엔트리가 존재하는지를 판단한다(단계 ST4). 미사용 엔트리가 검출되면, 이 처리는 단계 ST6으로 진행한다. 미사용 엔트리가 검출되지 않으면, 이 처리는 단계 ST5로 진행한다.
5. 컨트롤러(10)는 다음에 설명하는 "제1 메모리 영역으로부터의 데이터 출력 처리"를 실행한다. 이로써, 데이터는 제1 메모리 영역(11)으로부터 제2 메모리 영역(12) 및 제3 메모리 영역(13)으로 출력된다(단계 ST5). 결과적으로, 출력된 데이터에 대응하는 캐시 관리 테이블 내의 엔트리는 미사용 엔트리인 것으로 설정된다. 이 때, 이 엔트리 내의 모든 섹터 플래그는 "0"으로 설정된다. 이 설정을 완료한 후에, 이 처리는 단계 ST4로 복귀한다.
6. 컨트롤러(10)는 호스트 기기로부터의 입력 데이터에 대한 미사용 엔트리를 선택한다(단계 ST6).
7. 컨트롤러(10)는 선택된 엔트리에 페이지 단위의 사이즈로 입력 데이터의 논리 어드레스를 정렬시켜 얻어진 논리 어드레스를 설정한다(단계 ST7). 즉, 컨트롤러(10)는 입력 데이터에 대응하는 엔트리로서 선택된 엔트리를 결정한다.
8. 컨트롤러(10)는 입력 데이터의 논리 어드레스 및 선택된 엔트리의 논리 어드레스와 물리 어드레스에 기초하여 데이터 기입용 물리 어드레스를 결정한다. 컨트롤러(10)는 물리 어드레스에 의해 지정된 영역에 입력 데이터를 기입하도록 제1 메모리 영역(11)을 포함하는 휘발성 반도체 메모리에 지시한다(단계 ST8).
또한, 컨트롤러(10)는 페이지 단위의 영역 내의 데이터 기입 위치에 대응하 는 섹터 플래그를 "1"로 설정한다.
호스트 기기로부터의 입력 데이터가 페이지 사이즈보다도 큰 경우, 캐시 관리 테이블 내의 복수의 엔트리가 요구될 수 있다. 이와 같은 경우, 컨트롤러(10)는 위의 처리를 반복함으로써 복수의 엔트리를 갱신한다.
B. 제1 메모리 영역으로부터의 데이터 출력 처리
제1 메모리 영역으로부터의 데이터 출력 처리를 도 10 및 도 11을 참조하여 설명한다.
컨트롤러(10)는 제1 메모리 영역(11)으로부터 출력되는 페이지 단위 데이터를 선택하고 그 데이터를 제1 조건에 따라 제2 메모리 영역(12) 또는 제3 메모리 영역(13)에 전송한다. 예를 들면, 제1 조건은 데이터의 수에 의해 정해진다. 구체적으로, 컨트롤러(10)는 다음의 처리 (a) 또는 처리 (b)를 실행한다.
(a). 컨트롤러(10)는 제1 메모리 영역(11)에서의 데이터의 수를 계수하고 블록 단위와 동일한 "큰 단위" 또는 페이지 단위와 동일한 "작은 단위" 중 어느 하나로 데이터를 관리하도록 결정한다.
1. 컨트롤러(10)는 출력되는 페이지 단위("작은 단위") 데이터의 논리 어드레스 LA를 블록 단위("큰 단위")의 사이즈로 정렬한다(단계 ST1).
2. 컨트롤러(10)는 도 3의 캐시 관리 테이블을 검색함으로써 블록 단위의 사이즈의 논리 어드레스 범위에 포함된 엔트리의 수를 계수한다(단계 ST2).
예를 들면, 도 12의 예에 따라, 블록 단위의 사이즈로 정렬된 논리 어드레스 범위 X에 포함된 엔트리의 수는 3, 즉 LA1, LA4 및 LA6이다.
3. 컨트롤러(10)는 엔트리의 수가 소정의 임계값 이상인지를 판단한다. 예를 들면, 소정의 임계값은 블록 단위("큰 단위")의 한 영역에 기억될 수 있는 페이지 단위("작은 단위") 데이터의 총수 중 50%로 설정될 수 있다(단계 ST3).
엔트리의 수가 소정의 임계값 미만이면, 컨트롤러(10)는 논리 어드레스 범위에 포함된 각각의 데이터를 페이지 단위와 동일한 "작은 단위"의 데이터로서 제2 메모리 영역(12)에 전송한다.
엔트리의 수가 적어도 소정의 임계값이면, 컨트롤러(10)는 논리 어드레스 범위에 포함된 복수의 데이터를 블록 단위와 동일한 "큰 단위"의 데이터로서 제3 메모리 영역(13)에 전송한다.
· "작은 단위"의 경우(도 10 및 도 12의 플로차트를 참조)
컨트롤러(10)는 제1 메모리 영역(11)으로부터 출력되는 데이터를 선택하고 선택된 데이터를 페이지 단위의 데이터로서 제2 메모리 영역(12)에 전송한다. 도 10에서의 단계 ST4 이후의 단계들이 참조된다.
이하, 한 페이지 단위 데이터가 제1 메모리 영역(11)으로부터 전송되는 경우의 처리를 설명한다. 복수의 페이지 단위 데이터가 전송되는 경우, 다음의 처리가 반복된다.
4. 컨트롤러(10)는 도 4의 페이지 관리 테이블을 검색하고 제1 메모리 영역(11)으로부터 전송되는 기입 데이터와 동일한 논리 어드레스 LA를 갖는 엔트리가 존재하는지를 판단한다(단계 ST4).
이러한 엔트리가 검출되면, 컨트롤러(10)는 이 엔트리를 선택하고 이 처리는 단계 ST9로 진행한다. 이러한 엔트리가 검출되지 않으면, 이 처리는 단계 ST5로 진행한다.
5. 컨트롤러(10)는 페이지 관리 테이블에서 미사용 엔트리가 존재하는지를 판단한다(단계 ST5).
미사용 엔트리가 검출되면, 이 처리는 단계 ST7로 진행한다. 미사용 엔트리가 검출되지 않으면, 이 처리는 단계 ST6으로 진행한다.
6. 컨트롤러(10)는 "제2 메모리 영역으로부터 제3 메모리 영역으로 데이터 전송 처리"를 실행한다(단계 ST6). 결과적으로, 출력된 데이터에 대응하는 엔트리는 미사용 엔트리로 설정된다. 컨트롤러(10)는 이용 가능한 미사용 엔트리를 얻고 이 처리는 단계 ST5로 복귀한다.
7. 컨트롤러(10)는 미사용 엔트리를 기입 데이터의 목적지로서 선택한다(단계 ST7).
8. 컨트롤러(10)는 선택된 엔트리에 대한 페이지 단위의 기입 데이터의 논리 어드레스를 설정한다(단계 ST8). 선택된 엔트리는 기입 데이터에 대응하는 엔트리로서 처리된다.
9. 컨트롤러(10)는 선택된 엔트리 내의 기입 위치를 결정한다(단계 ST9). 기입 위치를 결정하는 처리를 아래에서 설명한다.
9-1. 컨트롤러(10)는 도 7 또는 도 8의 물리 블록 관리 테이블을 검색하고 제2 메모리 영역(12)에 이용되는 "기입 가능" 상태의 미사용 페이지를 블록을 선택한다. 이러한 블록이 검출되면, 컨트롤러(10)는 기입 데이터의 목적지로서 블록 내의 미사용 페이지를 선택한다(단계 ST9-1).
페이지 단위로의 데이터의 기입에서, 제2 메모리 영역(12)을 포함하는 비휘발성 반도체 메모리가 물리 어드레스의 상승 순서로 데이터의 기입만을 행할 수 있다면, 컨트롤러(10)는 데이터가 추가될 수 있는 미사용 페이지를 선택한다.
미사용 페이지가 제2 메모리 영역(12)에 이용되는 블록에서 검출되면, 이 처리는 단계 ST10으로 진행한다. 미사용 페이지가 제2 메모리 영역(12)에 이용되는 블록에서 검출되지 않으면, 이 처리는 단계 ST9-2로 진행한다.
컨트롤러(10)는 도 7 또는 도 8의 물리 블록 관리 테이블을 검색하고 미사용 블록이 존재하는지를 판단한다(단계 ST9-2). 미사용 블록이 검출되면, 이 처리는 단계 ST9-4로 진행한다. 미사용 블록이 검출되지 않으면, 이 처리는 단계 ST9-3으로 진행한다.
9-3. 컨트롤러(10)는 "미사용 블록을 생성하기 위해서 제2 메모리 영역으로부터 제3 메모리 영역으로의 데이터 전송 처리"를 실행한다(단계 ST9-3). 미사용 블록을 생성한 후, 이 처리는 단계 ST9-2로 복귀한다.
9-4. 컨트롤러(10)는 제2 메모리 영역(12)에 대한 미사용 블록을 얻는다(단계 ST9-4).
9-5. 컨트롤러(10)는 얻어진 미사용 블록에 대응하는 도 7 또는 도 8의 물리 블록 관리 테이블의 "제2 메모리 영역(12)(사용)"에의 엔트리를 갱신한다. 제2 기본 구성(도 8)에서, 컨트롤러(10)는 페이지 유용성을 기억시키는 영역을 취득하고, 이 영역은 엔트리와 연관된다(단계 ST9-5).
9-6. 컨트롤러(10)는 얻어진 미사용 블록 내의 데이터를 소거하도록 비휘발성 반도체 메모리에 지시하고, 모든 페이지 유용성을 "기입 가능" 상태로 갱신한다. 컨트롤러(10)는 기입 데이터의 목적지로서 블록 내의 미사용 페이지 중 하나를 선택한다(단계 ST9-6).
기입 위치를 결정하는 처리는 위의 설명으로 완료된다.
10. 컨트롤러(10)는 페이지 단위 데이터를 구성하는 모든 섹터 단위 데이터가 제1 메모리 영역(11)에 존재하는지를 판단한다(단계 ST10).
컨트롤러(10)는 도 3의 캐시 관리 테이블에서 기입 데이터에 대응하는 엔트리의 섹터 플래그를 스캔한다. 모든 섹터 플래그가 "1"이면, 이 처리는 단계 ST12로 진행한다. 임의의 섹터 플래그가 "0"이면, 이 처리는 단계 ST11로 진행한다.
11. 임의의 섹터 플래그가 "0"이면, 모든 섹터 단위 데이터가 제1 메모리 영역(11)에서 완료되는 것은 아니다. 따라서, 컨트롤러(10)는 제2 메모리 영역(12) 및/또는 제3 메모리 영역(13)으로부터 섹터 플래그 "0"을 갖는 섹터 위치에 대응하는 결여된 데이터를 수집한다(단계 ST11).
컨트롤러(10)는 제2 메모리 영역(12)으로부터 결여된 데이터의 판독을 시도한다.
컨트롤러(10)는 페이지 단위의 사이즈로 섹터 단위 데이터의 논리 어드레스를 정렬하고 정렬된 논리 어드레스에서 페이지 관리 테이블을 검색한다.
엔트리가 검출되면, 컨트롤러(10)는 엔트리에 기록된 물리 어드레스에 대응하는 페이지 단위 데이터에 포함된 결여된 데이터를 판독한다. 엔트리가 검출되지 않으면, 컨트롤러(10)는 제3 메모리 영역(13)으로부터 결여된 데이터의 판독을 시도한다.
컨트롤러(10)는 블록 단위의 사이즈로 섹터 단위 데이터의 논리 어드레스를 정렬하고 정렬된 논리 어드레스에서 블록 관리 테이블을 검색한다.
엔트리가 검출되면, 컨트롤러(10)는 엔트리에 기록된 물리 어드레스에 대응하는 블록 단위 데이터에 포함된 결여된 데이터의 판독을 시도한다.
제2 메모리 영역(12) 또는 제3 메모리 영역(13)으로부터 판독된 결여된 데이터는 제1 메모리 영역(11)의 작업 영역 또는 컨트롤러(10)의 주 메모리에 일시적으로 기억된다; 그렇지만, 이것에 제한되지 않는다.
12. 페이지 단위 데이터를 구성하는 모든 섹터 단위 데이터를 완료한 후, 컨트롤러(10)는 제2 메모리 영역(12)에서 기입 데이터의 목적지로서 선택된 미사용 페이지에 페이지 단위 데이터를 기입하도록 비휘발성 반도체 메모리에 지시한다. 컨트롤러(10)는 물리 블록 관리 테이블에서의 대응하는 페이지 유용성을 "기입된" 상태(충만: 이 기억 영역은 유효 데이터로 채워짐)로 갱신한다(단계 ST12).
페이지 단위 데이터를 기입한 후, 컨트롤러(10)는 기입 데이터의 논리 어드레스와 기입 데이터의 목적지로서의 페이지의 물리 어드레스를 페이지 관리 테이블의 선택된 엔트리에 등록한다.
물리 어드레스가 새로운 물리 어드레스를 등록하기 전에 선택된 엔트리에 이미 기억되면, 컨트롤러(10)는 물리 어드레스를 오버라이트한다. 구 물리 어드레스에 의해 표시된 페이지에 기억되는 구 데이터는 무효 데이터가 된다.
13. 컨트롤러(10)는 도 3의 캐시 관리 테이블을 갱신한다. 기입 데이터에 대응하는 엔트리는 무효 상태가 되고 호스트 기기로부터의 입력 데이터에 대하여 해제된다(단계 ST13).
이어서, 컨트롤러(10)는 도 7 또는 도 8의 물리 블록 관리 테이블을 스캔하고, 모든 페이지 단위 데이터가 무효 데이터인 "사용" 블록을 "미사용" 블록으로 설정하는 해제 처리를 실행한다.
구체적으로, 물리 블록 관리 테이블에서 "사용"으로 설정되고 페이지 관리 테이블에서 물리 어드레스에 의해 표시된 페이지가 존재하지 않는 블록에 대응하는 엔트리는 "미사용"으로 설정된다. 도 8의 구성에서, 페이지 유용성을 기억시키는 영역이 해제된다.
· "큰 단위"의 경우(도 11, 도 13 및 도 14의 플로차트를 참조)
컨트롤러(10)는 제1 메모리 영역(11)으로부터 출력되는 데이터를 선택하고 선택된 데이터를 블록 단위의 데이터로서 제3 메모리 영역(13)에 전송한다. 도 11에서의 단계 ST4' 이후의 단계가 참조된다.
컨트롤러(10)는 도 7 또는 도 8의 물리 블록 관리 테이블을 검색하고 미사용 블록을 얻는다. 컨트롤러(10)는 얻어진 미사용 블록을 제3 메모리 영역(13)에 할당한다(단계 ST4').
컨트롤러(10)는 얻어진 미사용 블록에 대응하는 물리 블록 관리 테이블의 "제3 메모리 영역(13)(사용)"에의 엔트리를 갱신하고 얻어진 미사용 블록에서의 데이터를 소거하도록 비휘발성 반도체 메모리에 지시한다.
"큰 단위"의 사이즈가 블록 단위의 사이즈 미만이면, 컨트롤러(10)는 "작은 단위"의 경우와 같이 제3 메모리 영역(13)에 이용되는 "기입 가능" 상태의 "큰 단위"의 미사용 영역을 갖는 블록을 선택할 수 있다.
5'. 블록 단위 데이터를 구성하는 모든 섹터 단위 데이터가 컨트롤러(10)는 제1 메모리 영역(11)에 존재하는지를 판단한다(단계 ST5').
구체적으로, 컨트롤러(10)는 도 3의 캐시 관리 테이블이 블록 단위의 사이즈의 논리 어드레스 범위에 포함된 페이지 단위 데이터에 대응하는 모든 엔트리를 포함하는지를 판단하고, 동시에, 이들 엔트리의 모든 섹터 플래그가 "1"인지를 판단한다.
블록 단위 데이터를 구성하는 모든 섹터 단위 데이터가 제1 메모리 영역(11)에서 완료되면, 이 처리는 단계 ST7'로 진행한다. 논리 어드레스 범위에 포함된 페이지 단위 데이터에 대응하는 모든 엔트리가 검출되지는 않거나, 또는 임의의 섹터 플래그가 "0"이면, 이 처리는 단계 ST6'로 진행한다.
6'. 컨트롤러(10)는 캐시 관리 테이블에 포함되지 않는 페이지 위치 및 제2 메모리 영역(12) 및/또는 제3 메모리 영역(13)으로부터의 섹터 플래그 "0"을 갖는 섹터 위치에 대응하는 결여된 데이터를 수집한다(단계 ST6').
컨트롤러(10)는 도 13에 도시된 바와 같이 제2 메모리 영역(12)으로부터의 결여된 데이터의 판독을 시도한다.
컨트롤러(10)는 페이지 단위의 사이즈로 섹터 단위 데이터의 논리 어드레스를 정렬하고 정렬된 논리 어드레스에서 페이지 관리 테이블을 검색한다.
엔트리가 검출되면, 컨트롤러(10)는 엔트리에 기록된 물리 어드레스에 대응하는 페이지 단위 데이터에 포함된 결여된 데이터를 판독한다.
엔트리가 검출되지 않으면, 컨트롤러(10)는 도 14에 도시된 바와 같이 제3 메모리 영역(13)으로부터의 결여된 데이터의 판독을 시도한다.
컨트롤러(10)는 블록 단위의 사이즈로 섹터 단위 데이터의 논리 어드레스를 정렬하고 정렬된 논리 어드레스에서 블록 관리 테이블을 검색한다. 컨트롤러(10)는 엔트리에 기록된 물리 어드레스에 대응하는 블록 단위 데이터에 포함된 결여된 데이터를 판독한다.
제2 메모리 영역(12) 또는 제3 메모리 영역(13)으로부터 판독된 결여된 데이터는 제1 메모리 영역(11)의 작업 영역 또는 컨트롤러(10)의 주 메모리에 일시적으로 기억된다; 그렇지만, 이것에 제한되지 않는다.
7'. 블록 단위 데이터를 구성하는 모든 섹터 단위 데이터를 완료한 후, 컨트롤러(10)는 제3 메모리 영역(13)에서 기입 데이터의 목적지로서 선택된 미사용 블록에 블록 단위 데이터를 기입하도록 비휘발성 반도체 메모리에 지시한다(단계 ST7').
블록 단위 데이터를 기입한 후, 컨트롤러(10)는 기입 데이터의 목적지로서의 블록의 물리 어드레스를 블록 단위의 사이즈의 논리 어드레스 범위에 대응하는 블록 관리 테이블의 엔트리에 등록한다.
물리 어드레스가 새로운 물리 어드레스를 등록하기 전에 선택된 엔트리에 이미 기억되면, 컨트롤러(10)는 물리 어드레스를 오버라이트한다. 구 물리 어드레스 에 의해 표시된 블록에 기억되는 구 데이터는 무효 데이터가 된다.
8'. 컨트롤러(10)는 도 3의 캐시 관리 테이블을 갱신한다. 기입 데이터에 대응하는 엔트리는 무효 상태가 되고 호스트 기기로부터의 입력 데이터에 대하여 해제된다(단계 ST8').
이어서, 컨트롤러(10)는 도 7 또는 도 8의 물리 블록 관리 테이블 및 도 6의 블록 관리 테이블을 스캔하고, 블록 단위 데이터가 무효인 "사용" 블록을 "미사용" 블록으로 설정하는 해제 처리를 실행한다.
구체적으로, 물리 블록 관리 테이블에서 "사용"으로 설정되고 블록 관리 테이블에서 물리 어드레스에 의해 표시되지 않는 블록에 대응하는 엔트리는 "미사용"으로 설정된다.
마찬가지로, 블록 단위 사이즈의 기입 데이터의 논리 어드레스 범위에 포함된 논리 어드레스에 대응하는 엔트리가 도 4 또는 도 5의 페이지 관리 테이블에 존재하면, 엔트리는 무효 상태가 된다. 제2 메모리 영역(12)에 기억된 데이터의 제3 메모리 영역(13)에의 전송에 기초하여, 참조 방지를 위해 제2 메모리 영역(12)에 기억된 데이터를 무효화하기 위해서, 이러한 처리가 행해진다.
또한, 제2 메모리 영역(12)에서, 컨트롤러(10)는 모든 페이지 단위 데이터가 무효 데이터인 "사용" 블록을 "미사용" 블록으로 설정한다. 도 8의 구성에서, 페이지 유용성을 기억시키는 영역이 해제된다.
(b). 컨트롤러(10)는 제1 및 제2 메모리 영역(11, 12)에서 데이터의 수를 계수하고, 블록 단위와 동일한 "큰 단위" 또는 페이지 단위와 동일한 "작은 단위" 중 어느 하나로 데이터를 관리하도록 결정한다.
이 경우에, 컨트롤러(10)는 도 3의 캐시 관리 테이블 및 도 4 또는 도 5의 페이지 관리 테이블을 검색하고, 블록 단위의 사이즈로 출력되는 데이터의 물리 어드레스를 정렬시켜 계산되는 논리 어드레스 범위에 포함되는 엔트리의 총수를 제1 및 제2 메모리 영역(11, 12)에서 계수한다.
엔트리의 총수가 블록 단위("큰 단위")의 한 영역에서 기억될 수 있는 페이지 단위 데이터("작은 단위")의 총수 중 적어도 50%와 같이 소정의 임계값 이상이면, 출력되는 데이터는 "큰 단위"로 관리되고, 엔트리의 총수가 소정의 임계값 미만이면, 출력되는 데이터는 "작은 단위"로 관리된다(단계 ST1 → 단계 ST2 → 단계 ST3).
· "작은 단위"의 경우(도 10의 플로차트를 참조)
컨트롤러(10)는 상술한 경우 "(a)"에서와 같이 제1 메모리 영역(11)으로부터 출력된 데이터를 페이지 단위의 데이터로서 제2 메모리 영역(12)에 기억시킨다. 제1 메모리 영역(11)으로부터 출력된 데이터를 제2 메모리 영역(12)에 기입한 후, 도 3의 캐시 관리 테이블은 상술한 경우 "(a)"에서와 같이 기입 데이터에 대응하는 엔트리를 무효 상태가 되도록 갱신된다. 또한, 도 4 또는 도 5의 페이지 관리 테이블 및 도 7 또는 도 8의 물리 블록 관리 테이블이 갱신된다(단계 ST4 내지 단계 ST13).
· "큰 단위"의 경우(도 11의 플로차트를 참조)
컨트롤러(10)는 상술한 경우 "(a)"에서와 같이 제1 메모리 영역(11)으로부터 출력된 데이터를 블록 단위의 데이터로서 13에 기억시킨다. 제1 메모리 영역(11)으로부터 출력된 데이터를 제3 메모리 영역(13)에 기입한 후, 도 3의 캐시 관리 테이블은 상술한 경우 "(a)"에서와 같이 기입 데이터에 대응하는 엔트리를 무효 상태가 되도록 갱신된다. 또한, 도 4의 페이지 관리 테이블, 도 6의 블록 관리 테이블, 및 도 7 또는 도 8의 물리 블록 관리 테이블이 갱신된다(단계 ST4' 내지 단계 ST8').
도 11의 플로차트에서, 단계 ST4'는 단계 ST7' 직전에 배치될 수 있다. 이 경우에, 컨트롤러(10)는 제3 메모리 영역(13)에 기입되는 데이터의 결정 후에 "미사용" 블록을 제3 메모리 영역(13)에 할당할 수 있다.
C. 제2 메모리 영역으로부터 제3 메모리 영역으로의 데이터 전송 처리
제2 메모리 영역(12)으로부터 제3 메모리 영역(13)으로의 데이터 전송 처리를 도 15를 참조하여 설명한다.
제2 메모리 영역(12)의 용량은 일반적으로 제3 메모리 영역(13)의 용량보다도 작게 설정되고, 따라서, 일정량의 데이터가 제2 메모리 영역(12)에 축적되면(페이지 단위와 동일한 "작은 단위"의 사이즈의 데이터에 의해 점유되는 블록의 수는 제2 메모리 영역(12)의 용량으로 정해진 허용된 범위를 초과함), 컨트롤러(10)는 제2 조건 하에서 제2 메모리 영역(12)으로부터 배출 블록을 선택한다.
컨트롤러(10)는 배출 블록에 기억된 페이지 단위와 동일한 "작은 단위"의 사이즈의 각 데이터를 블록 단위와 동일한 "큰 단위"의 사이즈의 데이터로서 제3 메모리 영역(13)에 전송한다.
달리 말하면, 컨트롤러(10)는 데이터 관리 단위를 페이지 단위와 동일한 "작은 단위"로부터 블록 단위와 동일한 "큰 단위"로 변경시킨다. 이 처리에서, "큰 단위"의 사이즈의 논리 어드레스 범위에 포함된 "복수의 프래그먼트 "작은 단위" 데이터는 제1, 제2 및 제3 메모리 영역(11, 12, 13)으로부터 수집되고 블록 단위 데이터로 병합된다(디프래그먼테이션).
제2 조건은 기입 순서 유효 데이터의 수에 의해 정해진다. 구체적으로, 컨트롤러(10)는 다음의 처리 (a) 또는 처리 (b)를 실행한다.
(a). 컨트롤러(10)는 제2 메모리 영역(12)에 할당된 블록 중에서 기입 순서가 가장 오래된 블록을 선택한다. 선택된 블록에 포함된 각각의 페이지 단위 데이터는 블록 단위 데이터로 병합되고 나서, 제3 메모리 영역(13)에 기입된다. 이 경우에, 컨트롤러(10)는 제2 메모리 영역(12)에서 블록의 기입 순서를 관리한다. 기입 순서 정보는, 예를 들면, 컨트롤러(10), 비휘발성 반도체 메모리, 다른 메모리 유닛에 기억된다.
(b). 컨트롤러(10)는, 제2 메모리 영역(12)에서의 각 블록에 대하여, 블록 내의 페이지 단위("작은 단위") 사이즈의 유효 데이터의 논리 어드레스를 블록 단위("큰 단위")의 사이즈로 정렬시켜 계산된 논리 어드레스 범위 내의 제2 메모리 영역(12)에 기억된 페이지 단위 데이터를 합계한다. 컨트롤러(10)는 합계된 값이 최대인 블록을 선택하고, 블록 내의 각 유효 데이터는 블록 단위 데이터로 병합되어 제3 메모리 영역(13)에 기입된다(단계 ST1 내지 단계 ST8).
이하, 경우 "(b)"를 설명한다.
1. 예를 들면, 도 16에 도시된 바와 같이, 컨트롤러(10)는 제2 메모리 영역(12)에 할당된 각 블록 내의 페이지 단위의 사이즈의 유효 데이터와 연관된 논리 어드레스 LA를 블록 단위의 사이즈로 정렬한다(단계 ST1).
2. 컨트롤러(10)는 블록 단위의 사이즈로 정렬된 논리 어드레스 범위마다 제2 메모리 영역(12)에 기억된 유효 데이터의 수를 계수한다. 블록 단위 사이즈의 논리 어드레스 범위 X1, X2 및 X3 내의 유효 데이터의 수는 각각 3, 2 및 1이다.
3. 컨트롤러(10)는 제2 메모리 영역(12) 내의 블록마다 단계 ST2에서 계수된 유효 데이터의 수를 합계한다(단계 ST3). 컨트롤러(10)는 논리 어드레스가 겹치는 유효 데이터의 2중 계수를 실행하지 않는다.
제2 메모리 영역(12)에서의 블록 Y1에 대하여, 블록 Y1 내의 유효 데이터는 a1 및 a4이다. 유효 데이터 a1은 블록 단위의 사이즈의 논리 어드레스 범위 X1에 포함된다. 논리 어드레스 X1에서, 제2 메모리 영역(12)에 3개의 유효 데이터 a1, a2 및 a3이 존재한다.
유효 데이터 a4는 블록 단위의 사이즈의 논리 어드레스 범위 X2에 포함된다. 논리 어드레스 범위 X2에서 제2 메모리 영역(12)에 2개의 유효 데이터 a4 및 a6이 존재한다.
결과적으로, 제2 메모리 영역(12)에서의 블록 Y1에 대하여, 물리 어드레스 범위 Y1에 유효 데이터 a1 및 a4를 포함하는 논리 어드레스 범위 X1 및 X2에서의 유효 데이터의 총수는 5이다.
블록 Y2에 대하여, 물리 어드레스 범위 Y2에 유효 데이터 a2 및 a3을 포함하 는 논리 어드레스 범위 X1에서의 유효 데이터의 총수는 3이다.
블록 Y3에 대하여, 물리 어드레스 범위 Y3에 유효 데이터 a6 및 a9를 포함하는 논리 어드레스 범위 X2 및 X3에서의 유효 데이터의 총수는 3이다.
4. 컨트롤러(10)는 단계 ST3에서 합계된 총수가 가장 큰 블록에 기억된 유효 데이터를 포함하는 블록 단위의 사이즈의 논리 어드레스 범위에서 유효 데이터를 선택한다(단계 ST4).
도 16의 경우에, 총수가 가장 큰 물리 어드레스 범위 Y1에 유효 데이터를 포함하는 블록 단위 사이즈의 논리 어드레스 범위 X1 및 X2에서의 유효 데이터 a1, a2, a3, a4 및 a6은 제3 메모리 영역(13)에 기입된다.
다음의 설명은 선택된 블록 내의 페이지 단위 데이터를 한 블록 단위 데이터로 병합하고 블록 단위 데이터를 제3 메모리 영역(13)에 기입하는 처리를 보여준다. 다음의 처리는 선택된 블록 내의 모든 페이지 단위 데이터가 제3 메모리 영역(13)에 기입될 때까지 반복된다.
컨트롤러(10)는 도 7 또는 도 8의 물리 블록 관리 테이블을 검색하고, 기입 데이터의 목적지로서 "미사용" 블록을 얻는다. 이 미사용 블록은 제3 메모리 영역(13)에 할당된다. 컨트롤러(10)는 얻어진 미사용 블록에 대응하는 도 7 또는 도 8의 물리 블록 관리 테이블의 "제3 메모리 영역(13)(사용)"에의 엔트리를 갱신하고 얻어진 미사용 블록에서의 데이터를 소거하도록 비휘발성 반도체 메모리에 지시한다(단계 ST5).
6. 컨트롤러(10)는 페이지 단위 데이터를 블록 단위 데이터로 병합한다. 구 체적으로, 컨트롤러(10)는 블록 단위의 사이즈로 페이지 단위 데이터의 논리 어드레스를 정렬시켜 계산된 논리 어드레스 범위에 포함된 유효 데이터를 제1, 제2, 및 제3 메모리 영역(11, 12, 13)으로부터 수집한다(단계 ST6).
컨트롤러(10)는 도 3의 캐시 관리 테이블을 검색한다. 블록 단위의 사이즈로 정렬된 논리 어드레스 범위에 대응하는 엔트리가 검출되면, 컨트롤러(10)는 엔트리 내의 섹터 플래그 "1"을 갖는 모든 섹터 단위 데이터를 제1 메모리 영역(11)으로부터 판독한다.
제1 메모리 영역(11)으로부터 판독되지 않는 유효 데이터를 포함하는 논리 어드레스 범위에 대하여, 컨트롤러(10)는 도 4 또는 도 5의 페이지 관리 테이블을 검색한다. 논리 어드레스 범위와 연관된 페이지 단위 데이터의 논리 어드레스에 대응하는 엔트리가 검출되면, 컨트롤러(10)는 엔트리에 기록된 물리 어드레스에 대응하는 페이지 단위 데이터에 포함된, 제1 메모리 영역(11)으로부터 판독되지 않는 유효 데이터를 제2 메모리 영역(12)으로부터 판독한다.
제1 및 제2 메모리 영역(11, 12)으로부터 판독되지 않는 유효 데이터를 포함하는 논리 어드레스 범위에 대하여, 컨트롤러(10)는 도 6의 블록 관리 테이블을 검색한다. 블록 단위의 사이즈로 정렬된 논리 어드레스에 대응하는 엔트리를 검출한 후, 엔트리에 기록된 물리 어드레스에 대응하는 블록 단위 데이터에 포함되지 않은, 제1 및 제2 메모리 영역(11, 12)으로부터 판독되지 않는 유효 데이터를 제3 메모리 영역(13)으로부터 판독한다.
제1 메모리 영역(11), 제2 메모리 영역(12), 및/또는 제3 메모리 영역(13)으 로부터 판독된 유효 데이터가 일시적으로 기억되는 목적지는 제1 메모리 영역(11)의 작업 영역 또는 컨트롤러(10)의 주 메모리이다; 그렇지만, 이것에 제한되지 않는다.
7. 블록 단위 데이터를 구성하는 모든 섹터 단위 데이터를 완료한 후, 컨트롤러(10)는 기입 데이터의 목적지로서 선택된 미사용 블록에 블록 단위 데이터에 기입하도록 비휘발성 반도체 메모리에 지시한다(단계 ST7).
도 15의 플로차트에서, 단계 ST5는 단계 ST7 직전에 배치될 수 있다. 이 경우에, 컨트롤러(10)는 제3 메모리 영역(13)에 기입되는 데이터의 결정 후에 "미사용" 블록을 제3 메모리 영역(13)에 할당할 수 있다.
블록 단위 데이터를 기입한 후, 컨트롤러(10)는 기입 데이터의 목적지로서의 블록의 물리 어드레스를 블록 단위의 사이즈의 논리 어드레스 범위에 대응하는 블록 관리 테이블의 엔트리에 등록한다.
물리 어드레스가 새로운 물리 어드레스를 등록하기 전에 선택된 엔트리에 이미 기억되면, 컨트롤러(10)는 물리 어드레스를 오버라이트한다. 구 물리 어드레스에 의해 표시된 블록에 기억되는 구 데이터는 무효 데이터가 된다.
컨트롤러(10)는 제1, 제2 및 제3 메모리 영역(11, 12, 13)으로부터 수집된 기입 데이터에 대응하는 엔트리를 무효화한다(단계 ST8).
컨트롤러(10)는 도 3의 캐시 관리 테이블을 갱신한다. 기입 데이터에 대응하는 엔트리는 무효 상태가 되고 호스트 기기로부터의 입력 데이터에 대하여 해제된다.
이어서, 컨트롤러(10)는 도 7 또는 도 8의 물리 블록 관리 테이블 및 도 6의 블록 관리 테이블을 스캔하고, 블록 단위 데이터가 무효인 "사용" 블록을 "미사용" 블록으로 설정하는 해제 처리를 실행한다.
구체적으로, 물리 블록 관리 테이블에서 "사용"으로 설정되고 블록 관리 테이블에서 물리 어드레스에 의해 표시되지 않는 블록에 대응하는 엔트리는 "미사용"으로 설정된다.
마찬가지로, 블록 단위 사이즈의 기입 데이터의 논리 어드레스 범위에 포함된 논리 어드레스에 대응하는 엔트리가 도 4 또는 도 5의 페이지 관리 테이블에 존재하면, 엔트리는 무효 상태가 된다. 제2 메모리 영역(12)에 기억된 데이터의 제3 메모리 영역(13)에의 전송에 기초하여, 참조 방지를 위해 제2 메모리 영역(12)에 기억된 데이터를 무효화하기 위해서, 이러한 처리가 행해진다.
또한, 제2 메모리 영역(12)에서, 컨트롤러(10)는 모든 페이지 단위 데이터가 무효 데이터인 "사용" 블록을 "미사용" 블록으로 설정한다. 도 8의 구성에서, 페이지 유용성을 기억시키는 영역이 해제된다.
D. 기타
위의 설명에 부가하여, 제1 메모리 영역(11)으로부터 제2 메모리 영역(12) 및/또는 제3 메모리 영역(13)으로의 데이터 전송 처리와 제2 메모리 영역(12)으로부터 제3 메모리 영역(13)으로의 데이터 전송 처리는 호스트 기기에 의해 지정된 소정의 시간에서 행해질 수 있다.
예를 들면, 반도체 기억 장치가 캐시 플러시 커맨드를 수신하면, 컨트롤 러(10)는 제1 조건에 따라 제1 메모리 영역(11)으로부터 제2 메모리 영역(12) 및/또는 제3 메모리 영역(13)으로의 데이터 전송을 실행한다.
(3) 시스템 예
도 17은 제2 기본 구성에 대응하는 시스템 예를 나타낸다.
호스트 기기(31)는 본 실시예에 따른 반도체 기억 장치(32)로 데이터 전송을 실행한다. 호스트 기기(31)는 예를 들면, 노트북 컴퓨터와 같은 퍼스널 컴퓨터이다. 반도체 기억 장치(31)는 예를 들면 호스트 기기(31)에 장착된 2차 기억 장치로서의 SSD이다.
반도체 기억 장치(32)는 제1, 제2 및 제3 메모리 영역(11, 12, 13)과, 이들 메모리 영역을 제어하는 컨트롤러(10)를 포함한다. 제1 메모리 영역(11)은 DRAM과 같은 휘발성 반도체 메모리(21)에 포함되고, 제2 및 제3 메모리 영역(12, 13)은 NAND형 플래시 메모리와 같은 비휘발성 반도체 메모리(22)에 포함된다.
컨트롤러(10)는 CPU 및 주 메모리(프로그램, 관리 정보 및 작업을 저장함)를 갖는다. 컨트롤러(10)는 캐시 관리 테이블, 페이지 관리 테이블, 블록 관리 테이블, 및 물리 블록 관리 테이블에 기초하여 논리 어드레스를 물리 어드레스로 변환시킴으로써 제1, 제2 및 제3 메모리 영역(11, 12, 13)에서의 데이터 위치를 관리한다.
호스트 기기(31)로부터의 데이터는 호스트 I/F(인터페이스)(23)를 통하여 반도체 기억 장치(32)에 입력된다. 호스트 기기(31)는 섹터 단위로 반도체 기억 장치(32)에의 액세스를 실행한다.
도 18은 호스트 기기(31)로부터의 데이터의 흐름을 나타낸다.
위의 처리 방법에서 설명한 바와 같이, 호스트 기기(31)로부터의 데이터는 제1 메모리 영역(11)에 기억되고 나서, 제1 조건에 따라 제2 메모리 영역(12) 또는 제3 메모리 영역(13)에 전송된다. 또한, 제2 메모리 영역(12)에 기억된 데이터는 제2 조건에 따라 제3 메모리 영역(13)에 전송된다.
제2 메모리 영역(12) 및 제3 메모리 영역(13) 내의 블록은 일대일로 대응하지 않는다. 물리 블록 관리 테이블에 기초하여, 비휘발성 반도체 메모리(22) 내의 복수의 블록 중 일부는 제2 메모리 영역(12)으로서 이용되고, 또 다른 부분은 제3 메모리 영역(13)으로서 이용된다.
(4) 동작예
도 18을 참조하여 기입 효율을 비교함으로써 본 실시예의 동작예를 설명한다. 동시에, 관리 테이블의 사이즈의 분석을 설명한다.
A. 기입 효율의 비교
다음의 설명에서, 휘발성 반도체 메모리(21)는 DRAM인 것으로 가정하고, 비휘발성 반도체 메모리(22)는 NAND형 플래시 메모리인 것으로 가정한다. 블록 단위의 사이즈 및 NAND형 플래시 메모리의 페이지 단위는 512 kB 및 4 kB이며, 호스트 기기로부터의 섹터 단위의 사이즈는 512 B인 것으로 가정한다. 제1 조건에서 정해진 소정의 임계값("데이터의 수" 또는 "데이터 양")은 NAND형 플래시 메모리에서의 블록 단위 사이즈의 50%(256 kB)인 것으로 가정한다.
다음의 처리를 고려한다: 블록 단위 데이터 X의 논리 어드레스 범위에 포함 된 1 섹터 단위 데이터 Y는 블록 단위 데이터 X가 제3 메모리 영역(13)에 기억되는 상태로 갱신되고, 이후, 데이터 Y는 제2 메모리 영역(12) 또는 제3 메모리 영역(13)에 기입되어 불활성 데이터가 된다.
호스트 기기(31)로부터 보는 바와 같이, 블록 단위 데이터 X의 논리 어드레스 범위에 포함된 섹터 단위 데이터 Y는 데이터 Y가 제2 메모리 영역(12) 또는 제3 메모리 영역(13)에 기억되었을 때에 갱신된 상태가 된다.
(a). 동작예 1
데이터 Y가 제1 메모리 영역(11)에 데이터가 존재하지 않는 초기 상태에서 제1 메모리 영역(11)에 기입되는 경우, 결과적으로, 섹터 단위 데이터 Y(512 B)만이 데이터 Y를 포함하는 블록 단위의 사이즈의 논리 어드레스 범위를 넘어 제1 메모리 영역(11)에 존재한다(논리 어드레스 범위는 데이터 X의 논리 어드레스 범위와 동일함). 컨트롤러(10)는 캐시 관리 테이블을 검색함으로써 데이터 양을 검출할 수 있다.
위의 사이즈 512 B는 제1 조건에서 소정의 임계값으로 정해진 256 kB보다도 작다.
컨트롤러(10)는 페이지 단위의 사이즈로 데이터 Y의 논리 어드레스를 정렬시켜 계산된 논리 어드레스 범위를 넘어 페이지 단위 데이터(이하 데이터 P라 칭함)로서 제1 메모리 영역(11)에 기억된 데이터 Y를 제2 메모리 영역(12)에 전송한다.
섹터 단위 데이터의 사이즈가 페이지 단위의 사이즈보다도 작기 때문에, 결여된 데이터는, 예를 들면, 페이지 단위 데이터 P를 완료하기 위해서 제3 메모리 영역(13)으로부터 판독될 필요가 있다.
컨트롤러(10)는 블록 단위의 사이즈로 데이터 P의 논리 어드레스를 정렬하여 정렬된 논리 어드레스(데이터 X의 논리 어드레스와 동일함)에서 블록 관리 테이블을 검색한다.
논리 어드레스에 대응하는 엔트리가 검출되면, 컨트롤러(10)는 데이터 X가 기억되는 물리 어드레스를 검사한다.
컨트롤러(10)는 제3 메모리 영역(13)에서 데이터 X로부터의 데이터 P의 논리 어드레스 범위에 대응하는 페이지 단위 데이터를 휘발성 반도체 메모리(21) 상에서 판독하고, 그 위에 데이터 Y를 기입하여 데이터 P의 이미지를 생성한다.
컨트롤러(10)는 섹터 단위 데이터 Y를 포함하는 페이지 단위 데이터 P를 제2 메모리 영역(12)에서의 미사용 페이지에 기입하고 캐시 관리 테이블, 페이지 관리 테이블, 및 블록 관리 테이블을 갱신한다. 제2 메모리 영역(12)에 기입된 데이터 Y는 비휘발성 데이터가 된다.
데이터 Y와 사이즈가 동일한 데이터가 연속적으로 기입되는 경우, 1 블록 단위가 128 페이지 단위로 구성되기 때문에, 반도체 기억 장치(32)는 (128 페이지의 기입을 위한) 128 섹터 단위의 데이터의 갱신을 위해 하나의 블록 단위 데이터를 소거한다.
이 경우에, 기입 효율은 512 kB/(512 B × 128) = 8이며, 기입 효율은 본 실시예를 이용하지 않는 경우(512 kB/512 B = 1024)에 비해서 향상된다. 본 예에서, 1 섹터 단위 데이터가 갱신된다; 그렇지만, 하나의 페이지 단위 데이터가 갱신되 면, 기입 효율은 더욱 향상된다.
위에서 제공된 특허 문헌의 기술에서, 데이터 블록 및 로그 블록은 일대일로 대응하지 않고, 따라서, 예를 들면 다른 블록에 속하는 128개의 섹터 각각의 데이터가 갱신되면, 128개의 블록이 소거되는데 요구된다.
변형적으로, 본 실시예에서, 제2 메모리 영역(12) 내의 블록 및 제3 메모리 영역(13) 내의 블록은 일대일로 대응하지 않는다. 따라서, 다른 블록에 기억된 복수의 섹터 단위 데이터가 갱신되면, 대체 데이터는 제2 메모리 영역(12)의 동일한 블록에 기억될 수 있으며 이 경우에서의 데이터 소거량은 단지 한 블록 단위의 사이즈이다.
(b). 동작예 2
블록 단위의 사이즈로 데이터 Y의 논리 어드레스를 정렬시켜 계산된 논리 어드레스 범위(데이터 X의 논리 어드레스 범위와 동일함)에 포함된 384 kB의 대체 데이터가 이미 제1 메모리 영역(11)에 기입된 초기 상태를 가정한다.
이 초기 상태에서, 데이터 X의 논리 어드레스 범위에 포함되고 제1 메모리 영역(11)에 기억되지 않는 섹터 단위 데이터 Y가 제1 메모리 영역(11)에 기입되는 경우, 데이터 Y를 포함하는 (384 kB + 512 B)의 데이터는 데이터 X의 논리 어드레스 범위에 존재한다. 컨트롤러(10)는 캐시 관리 테이블을 검색하여 데이터 양을 검출할 수 있다.
위의 사이즈(384 kB + 512 B)는 제1 조건에서 소정의 임계값으로 정해진 256 kB보다도 작지 않다.
컨트롤러(10)는 블록 단위의 사이즈로 데이터 Y의 논리 어드레스를 정렬시켜 계산된 논리 어드레스 범위를 넘어 제1 메모리 영역(11)에 기억되는 데이터 Y를 포함하는 (384 kB + 512 B)의 데이터를 블록 단위 데이터(이하 데이터 B로 칭함)로서 제3 메모리 영역(13)에 전송한다.
섹터 단위 데이터 Y의 사이즈가 블록 단위의 사이즈보다도 작기 때문에, 결여된 데이터는, 예를 들면, 블록 단위 데이터 B를 완료하기 위해서 제3 메모리 영역(13)으로부터 판독될 필요가 있다.
컨트롤러(10)는 데이터 B의 논리 어드레스(데이터 X의 논리 어드레스와 동일함)에서 블록 관리 테이블을 검색하여 데이터 X가 기억되는 물리 어드레스를 검출한다. 컨트롤러(10)는 데이터 X를 제3 메모리 영역(13)으로부터 휘발성 반도체 메모리(21)로 판독하고 그 위에 데이터 Y를 기입하여 데이터 B의 이미지를 형성한다.
컨트롤러(10)는 "미사용" 블록 내의 데이터를 소거하고 소거된 미사용 블록을 제3 메모리 영역(13)에 할당한다. 섹터 단위 데이터 Y를 포함하는 블록 단위 데이터 B는 이 블록에 기입된다. 캐시 관리 테이블 및 블록 관리 테이블이 갱신된다. 이에 따라, 제3 메모리 영역(13)에 기입된 섹터 단위 데이터 Y는 비휘발성 데이터가 된다.
이 경우, 반도체 기억 장치(32)는 약 384 kB(384 kB + 512 B)의 데이터의 갱신을 위해 하나의 블록 단위 데이터를 소거한다.
따라서, 기입 효율은 512 kB/384 kB = 1.33이고, 기입 효율은 약 384 kB의 데이터가 섹터 단위로 갱신되는 경우(512 kB/512 B = 1024)에 비해서 향상된다.
본 예에서, 약 384 kB의 데이터가 갱신된다; 그렇지만, 데이터의 사이즈가 블록 단위의 사이즈로서 512 kB에 더 근접해지면, 기입 효율은 더욱 향상된다.
B. 관리 테이블의 사이즈
비휘발성 반도체 메모리가 "작은 단위"로 관리되면, 컨트롤러(10)는 호스트 기기(31)로부터의 데이터 사이즈 또는 데이터 양에 관계없이 데이터 기입 위치의 미세 제어를 실행할 수 있으며 기입 효율은 향상될 수 있다. 그렇지만, 어드레스 변환을 실행하는 관리 데이터는 사이즈가 커지므로, 컨트롤러(10)에서의 처리 효율은 떨어질 수 있다.
변형적으로 본 실시예에서, 2개의 관리 단위, 즉 "작은 단위"와 "큰 단위"가 채택된다. 데이터 관리 분석에 따른 관리 테이블을 이용함으로써, 컨트롤러(10)는 "작은 단위"로 관리되는 데이터의 수의 증가를 억제한다. 따라서, 본 실시예에 따른 반도체 기억 장치(32)는 관리 테이블의 사이즈의 증가를 방지하고 높은 기입 효율을 실현한다.
(5) 기타
제2 및 제3 메모리 영역(12, 13)에 대하여, 본 실시예의 처리 이외에 다음의 처리가 행해질 수 있다.
A. 제2 메모리 영역의 콤팩션(compaction)
도 19에 도시된 바와 같이, 제2 메모리 영역(12)에서의 무효 데이터의 수가 증가되고, 블록의 수가 "기입 가능" 상태로 페이지가 없는 경우, 컨트롤러(10)는 유효 데이터만을 수집하여 이들 유효 데이터를 미사용 블록에 복사할 수 있다.
결과적으로, 유효 데이터가 원래 기억되는 블록이 해제될 수 있으므로, 제2 메모리 영역(12)에서의 무효 데이터의 수는 감소되고, 미사용 블록의 수는 증가된다. 이 처리는 유효 데이터가 수집되어 미사용 블록(콤팩션 블록)에 복사되는 것에 기초한 제2 메모리 영역(12)의 콤팩션으로 불린다.
기입 효율은 콤팩션에 의해 더욱 향상될 수도 있다. 그렇지만, 본 실시예에서, 마찬가지의 경우에, 제2 메모리 영역(12)으로부터 제3 메모리 영역(13)으로의 데이터 전송 처리는 콤팩션으로 대체될 수 있으며, 따라서, 콤팩션은 보조 처리이다.
예를 들면, 컨트롤러(10)는 제2 메모리 영역(12)에서 블록마다 "작은 단위"의 무효 데이터의 수를 계산한다. 컨트롤러(10)는 무효 데이터의 수의 하강 순서로 블록을 순차 선택하고, 따라서, 선택된 블록 내의 유효 데이터는 소거된 미사용 블록에 복사된다. 유효 데이터로 채워진 블록은 제2 메모리 영역(12)에 할당된다.
예를 들면, 제2 메모리 영역(12)에 포함된 무효 데이터의 총수가 소정의 임계값보다도 커지는 경우에 콤팩션이 행해진다.
B. 제3 메모리 영역의 콤팩션
제3 메모리 영역(13)의 콤팩션은 제3 메모리 영역(13)에서의 데이터 관리 단위("큰 단위")의 사이즈가 블록 단위의 사이즈 미만인 경우에 적용될 수 있다.
도 19에 도시된 바와 같이, 제3 메모리 영역(13)에서의 무효 데이터의 수가 증가되고, 블록의 수가 "기입 가능" 상태로 페이지가 없는 경우, 컨트롤러(10)는 유효 데이터만을 수집하여 이들 유효 데이터를 미사용 블록에 복사할 수 있다.
결과적으로, 유효 데이터가 원래 기억되는 블록이 해제될 수 있으므로, 제3 메모리 영역(13)에서의 무효 데이터의 수는 감소되고, 미사용 블록의 수는 증가된다. 이 처리는 유효 데이터가 수집되어 미사용 블록(콤팩션 블록)에 복사되는 것에 기초한 제3 메모리 영역(13)의 콤팩션으로 불린다.
예를 들면, 컨트롤러(10)는 제3 메모리 영역(13)에서 블록마다 "큰 단위"의 무효 데이터의 수를 계산한다. 컨트롤러(10)는 무효 데이터의 수의 하강 순서로 블록을 순차 선택하고, 따라서, 선택된 블록 내의 유효 데이터는 소거된 미사용 블록에 복사된다. 유효 데이터로 채워진 블록은 제3 메모리 영역(13)에 할당된다.
예를 들면, 제3 메모리 영역(13)에 포함된 무효 데이터의 총수가 소정의 임계값보다도 커지는 경우에 콤팩션이 행해진다.
3. 요약
본 실시예에 따라, 다음의 구성은 호스트 기기로부터의 데이터 사이즈 또는 데이터 양에 관계없이 기입 효율의 향상 및 성능 열화와 수명 단축의 방지를 실현할 수 있다.
· 기억 위치의 할당
반도체 기억 장치는, 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되고, 제1 단위는 반도체 기억 장치에 대한 액세스 단위인 제1 메모리 영역과, 제2 단위로 데이터의 기입을 행하고 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되고, 제3 단위는 제2 단위의 2배 이상의 자연수배인 제2 및 제3 메모리 영역과, 다음의 처리를 실행하는 컨트롤러를 포함한다.
이 컨트롤러는, 제1 단위로 복수의 데이터를 제1 메모리 영역에 기억시키는 제1 처리와, 제1 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제2 메모리 영역에 기억시키고, 제1 관리 단위는 제1 단위의 2배 이상의 자연수배이며 제3 단위 미만인 제2 처리와, 제2 관리 단위로 제1 메모리 영역으로부터 출력되는 데이터를 제3 메모리 영역에 기억시키고, 제2 관리 단위는 제1 관리 단위의 2배 이상의 자연수배인 제3 처리를 실행한다.
· 제2 메모리 영역으로부터 제3 메모리 영역으로의 데이터 처리(디프래그먼테이션)
컨트롤러는 제2 메모리 영역으로부터 출력되는 제1 관리 단위의 데이터를 선택하는 제4 처리와, 제2 관리 단위로 선택된 데이터를 포함하는 데이터를 제3 메모리 영역에 기억시키는 제5 처리를 더 실행한다.
· 공유 메모리
제2 및 제3 메모리 영역은 동일한 비휘발성 반도체 메모리를 공유하며, 컨트롤러는 제3 단위의 영역을 제2 및 제3 메모리 영역에 각각 할당한다.
· 할당 조건 1(제1 메모리 영역에서의 데이터의 수)
컨트롤러는 제1 메모리 영역으로부터 출력되는 데이터의 논리 어드레스를 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고, 논리 어드레스 범위에 포함되고 제1 메모리 영역에 기억되는 데이터의 수를 계수하고, 데이터의 수가 소정의 임계값 미만이면 제2 처리를 실행하며, 데이터의 수가 소정의 임계값 이상이면 제3 처리를 실행한다.
· 할당 조건 2(제1 및 제2 메모리 영역에서의 데이터의 수)
컨트롤러는 제1 메모리 영역으로부터 출력되는 데이터의 논리 어드레스를 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고, 논리 어드레스 범위에 포함되고 제1 및 제2 메모리 영역에 기억되는 데이터의 수를 계수하고, 데이터의 수가 소정의 임계값 미만이면 제2 처리를 실행하며, 데이터의 수가 소정의 임계값 이상이면 제3 처리를 실행한다.
· 디프래그먼테이션의 트리거
컨트롤러는 제2 메모리 영역에 기억된 복수의 유효 및 무효 데이터에 의해 점유되는 제3 단위의 영역의 수가 허용 가능한 범위를 초과하면 제4 및 제5 처리를 실행한다.
· 디프래그먼테이션 조건 1(구 데이터)
제4 처리에서, 컨트롤러는 제2 메모리 영역에서 기입 순서가 가장 오래된 제3 단위의 영역을 검출하고, 제3 단위의 검출된 영역에 기억된 제1 관리 단위의 유효 데이터 각각을 선택한다.
· 디프래그먼테이션 조건 2(유효 데이터)
제4 처리에서, 컨트롤러는 유효 데이터의 논리 어드레스를 제2 메모리 영역 내의 제3 단위의 영역마다 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고, 논리 어드레스 범위에 포함되고 제2 메모리 영역에 기억되는 유효 데이터의 수를 계수하고, 제2 메모리 영역 내의 제3 단위의 영역마다 유효 데이터의 수를 합계하고, 총수가 가장 큰 제3 단위의 영역을 검출하며, 제3 단위의 영역에 기억된 제1 관리 단위의 유효 데이터 각각을 선택한다.
· 디프래그먼테이션 조건 3(무효 데이터)
제4 처리에서, 컨트롤러는 제2 메모리 영역 내의 제3 단위의 영역마다 무효 데이터의 수를 계수하고, 무효 데이터의 수가 가장 적은 제3 단위의 영역을 검출하며, 제3 단위의 영역에 기억된 제1 관리 단위의 유효 데이터 각각을 선택한다.
· 제2 메모리 영역에서의 데이터 관리 단위: 작음
제2 단위는 제1 관리 단위의 2배 이상의 자연수배이다.
· 제2 메모리 영역에서의 데이터 관리 단위: 큼
제1 관리 단위는 제2 단위의 2배 이상의 자연수배이며, 제3 단위는 제1 관리 단위의 2배 이상의 자연수배이다.
· 제3 메모리 영역에서의 데이터 관리 단위: 작음
제3 단위는 제2 관리 단위의 2배 이상의 자연수배이다.
· 제3 메모리 영역에서의 데이터 관리 단위: 큼
제2 관리 단위는 제3 단위의 2배 이상의 자연수배이다.
· 제2 메모리 영역의 무효화
제2 처리에서, 컨트롤러는 제1 관리 단위의 새로운 데이터를 제2 메모리 영역 내의 제2 단위의 미사용 영역에 기입하고, 새로운 데이터의 논리 어드레스가 구 데이터의 논리 어드레스에 대응하면 제2 메모리 영역에 기억된 구 데이터를 무효로 설정하고, 새로운 데이터를 구 데이터에 우선하는 유효 데이터로서 처리하며, 구 데이터를 새로운 데이터를 참조하여 무시되는 무효 데이터로서 처리한다.
· 제2 메모리 영역의 콤팩션
컨트롤러는 제2 메모리 영역 내의 무효 데이터의 수가 소정의 임계값을 초과하는지를 판단하고, 제2 메모리 영역 내의 제3 단위의 영역마다 무효 데이터의 수를 계수하고, 무효 데이터의 수가 가장 큰 하나로부터 순서대로 제3 단위의 영역 내의 유효 데이터를 선택하고, 제3 단위의 제1 영역 - 제1 영역은 비어있음 - 내의 선택된 유효 데이터를 재기입하고, 선택된 유효 데이터를 재기입한 후에 제2 메모리 영역에 제1 영역을 할당하고, 제2 메모리 영역 내의 제3 단위의 제2 영역 - 제2 영역은 제1 영역 내의 선택된 유효 데이터를 재기입시켜 유효 데이터를 갖지 않음 - 을 해제한다.
· 제3 메모리 영역의 무효화
제3 처리에서, 컨트롤러는 제2 관리 단위의 새로운 데이터를 제3 메모리 영역 내의 제3 단위의 미사용 영역에 기입하고, 새로운 데이터의 논리 어드레스가 구 데이터의 논리 어드레스에 대응하면 제3 메모리 영역에 기억된 구 데이터를 무효로 설정하고, 새로운 데이터를 구 데이터에 우선하는 유효 데이터로서 처리하며, 구 데이터를 새로운 데이터를 참조하여 무시되는 무효 데이터로서 처리한다.
· 제3 메모리 영역의 콤팩션
컨트롤러는 제3 메모리 영역 내의 유효 데이터의 수가 소정의 임계값을 초과하는지를 판단하고, 제3 메모리 영역 내의 제3 단위의 영역마다 제2 관리 단위의 무효 데이터의 수를 계수하고, 무효 데이터의 수가 가장 큰 것으로부터 순서대로 제3 단위의 영역 내의 유효 데이터를 선택하고, 제3 메모리 영역 내의 제3 단위의 미사용 영역에 제2 관리 단위의 선택된 유효 데이터를 재기입하며, 제3 단위의 영역을 해제한다. 제2 관리 단위는 제3 단위 미만이다.
4. 응용예
본 실시예에 따른 반도체 기억 장치는, 예를 들면, 노트북 컴퓨터와 같은 퍼스널 컴퓨터에서의 2차 기억 장치로서 사용되는 SSD에 적용될 수 있다. 이 경우에서의 구체예를 나중에 설명한다.
5. 결론
본 실시예에 따라, 소거, 판독 및 기입의 단위가 고정되는 비휘발성 반도체 메모리를 사용한 반도체 기억 장치는 호스트 기기로부터의 데이터 사이즈 또는 데이터 양에 관계없이 기입 효율의 향상 및 성능 열화와 수명 단축의 방지를 실현할 수 있다.
본 발명은 상술한 실시예들에 제한되지 않으며, 그 구성요소들은 본 발명의 사상 및 범위를 벗어나지 않고서 변형 및 구체화될 수 있다. 다양한 본 발명은 상술한 실시예들에서 개시된 복수의 구성요소의 적절한 조합에 의해 형성될 수 있다. 예를 들면, 몇 개의 구성요소는 실시예에서 개시된 모든 구성요소로부터 제외될 수 있거나, 또는 다른 실시예 상의 구성요소들이 서로 적절하게 조합될 수 있다.
[II. 소거 횟수의 증가를 방지하는 반도체 기억 장치]
1. 개요
단락 I.에서 설명한 콤팩션은 무효 데이터의 소거에 기초한 기억 장치의 효율적인 이용이 우수하다. 그렇지만, 콤팩션은 동일한 데이터가 다른 블록에 기입되는 복사 동작을 필요로 하고, 따라서, 콤팩션을 받기 쉬운 유효 데이터가 즉시 갱신되는 경우에, 블록의 소거 횟수가 증가되는 부작용을 발생시킨다.
콤팩션에 의해 새롭게 이용되는 블록은 유효 데이터로 채워진다; 그렇지만, 콤팩션을 받기 쉬운 데이터가 갱신되는 경우, 데이터는 무효 데이터가 된다. 또한, 블록 내의 무효 데이터의 수가 증가되는 경우, 블록 내의 유효 데이터는 다시 콤팩션을 받기 쉬워진다. 결과적으로, 블록의 소거 횟수가 증가될 수 있다.
이러한 구성에 따라, 콤팩션을 받기 쉬운 데이터는 바람직하기로 낮은 갱신 주파수를 가지며, 데이터를 판별하는 수단이 요구된다.
이러한 지식에 기초하여, 본 실시예에서, 갱신 주파수가 높은 데이터를 갱신 주파수가 낮은 데이터와 판별하는 수단이 제공되고, 갱신 주파수가 낮은 데이터는 콤팩션을 받기 쉬운 타깃이 되므로, 콤팩션을 받기 쉬운 데이터는 즉시 갱신되는 것이 방지된다. 이러한 구성에 따라, 블록의 소거 횟수는 메모리 셀의 열화를 방지하기 위해서 감소된다.
특정한 구성으로서, 다음의 메모리 영역이 제공된다.
· 제1 단위 이하로 데이터의 판독 및 기입을 행하는 휘발성 반도체 메모리 내의 제1 메모리 영역;
· 제2 단위로 데이터의 판독 및 기입을 행하고 제3 단위로 데이터의 소거를 행하며, "작은 단위(제1 관리 단위)"로 관리되고, "작은 단위"의 사이즈가 제1 단 위의 사이즈의 자연수배인 비휘발성 반도체 메모리 내의 제2 단위의 영역으로 구성된 제2 메모리 영역;
· 제2 단위로 데이터의 판독 및 기입을 행하고 제3 단위로 데이터의 소거를 행하며, "큰 단위(제2 관리 단위)"로 관리되고, "큰 단위"의 사이즈가 "작은 단위"의 사이즈의 2배 이상의 자연수배이며 제3 단위의 사이즈의 자연수배인 비휘발성 반도체 메모리 내의 제3 단위의 영역으로 구성된 제3 메모리 영역; 및
· 제2 단위로 데이터의 판독 및 기입을 행하고 제3 단위로 데이터의 소거를 행하며, "작은 단위"로 관리되고, "작은 단위"의 사이즈가 제1 단위의 사이즈의 자연수배인 비휘발성 반도체 메모리 내의 제3 단위의 영역으로 구성된 제4 메모리 영역.
제4 메모리 영역은 갱신 주파수가 높은 데이터를 갱신 주파수가 낮은 데이터와 판별하는 수단으로서 이용된다. 개략적으로, 단락 I.에서 설명한 기본 구성 이외에, 제4 메모리 영역은 갱신 주파수가 높은 데이터를 갱신 주파수가 낮은 데이터와 판별하도록 제공된다.
제1 단위의 복수의 데이터가 제1 메모리 영역에 기입되고 나서, 제3 메모리 영역 또는 제4 메모리 영역에 기입된다. 제4 메모리 영역은 FIFO(First-In First-Out) 구조를 갖는다. 제4 메모리 영역에 이용되는 제3 단위의 "사용" 영역의 수가 허용된 범위보다 커지는 경우, 제3 조건을 만족시키며 제2 메모리 영역에서 할당 순서가 가장 오래된 제3 단위의 영역에 기억되는 유효 데이터는 "큰 단위" 데이터로서 제4 메모리 영역에 전송된다.
제3 조건을 만족시키지 않는 유효 데이터를 포함하는 제2 메모리 영역에서 할당 순서가 가장 오래된 제3 단위의 영역은 제2 메모리 영역으로 이동된다. 제2 메모리 영역에 이용되는 제3 단위의 "사용" 영역의 수가 허용된 범위보다도 커지고 제4 조건이 만족되는 경우, 제2 메모리 영역 내의 유효 데이터가 선택되어 제3 단위의 미사용 영역에 복사된다. 유효 데이터로 채워진 제3 단위의 영역은 제2 메모리 영역에 할당된다(콤팩션).
제2 메모리 영역에서 콤팩션을 받기 쉬운 타깃이 갱신 주파수가 낮은 데이터가 되는 원리는 다음과 같다.
제4 메모리 영역이 제3 단위의 FIFO 구조를 갖기 때문에, 제4 메모리 영역에 입력된 데이터는 일정 기간동안 제4 메모리 영역에 체류한다. 따라서, 갱신 주파수가 높은 데이터는 제4 메모리 영역에서 갱신된다. 데이터가 갱신되는 경우, 구 데이터는 무효 데이터가 되고, 대체 데이터가 제4 메모리 영역에 새로 입력되기 때문에, 갱신 주파수가 높은 데이터는 출력되지 않고서 제4 메모리 영역에 체류한다.
제2 메모리 영역 내의 유효 데이터는 콤팩션을 받기 쉬운 타깃이 되고, 제4 메모리 영역 내의 유효 데이터는 콤팩션을 받기 쉬운 타깃이 되지 않으므로, 갱신 주파수가 낮은 데이터는 콤팩션을 받기 쉬운 타깃이 될 수 있다. 결과적으로, 콤팩션의 부작용으로서 블록에 대한 소거 횟수의 증가를 방지할 수 있다.
2. 실시예
(1) 제1 실시예
도 20은 제1 실시예에 따른 반도체 기억 장치를 나타낸다.
제1 메모리 영역(11)은 호스트 기기로부터 데이터를 일시적으로 기억시킨다. 데이터는 섹터 단위(제1 단위) 이하로 제1 메모리 영역(11)에 기입된다. 제1 메모리 영역(11)은 DRAM과 같은 휘발성 반도체 메모리로 구성된다.
제2 메모리 영역(12)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성된다. 비휘발성 반도체 메모리(22)에서, 판독/기입이 한번에 실행되는 단위는 페이지(제2 단위)이며 소거가 한번에 실행되는 단위는 블록(제3 단위)이다. 블록 단위의 사이즈는 페이지 단위의 사이즈의 자연수배이다. 제2 메모리 영역(12)은 페이지 단위와 동일한 "작은 단위"로 데이터를 기억시킨다.
제3 메모리 영역(13)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성되고 블록 단위와 동일한 "큰 단위"로 데이터를 기억시킨다.
제4 메모리 영역(14)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성되고 페이지 단위와 동일한 "작은 단위"로 데이터를 기억시킨다.
제1 메모리 영역(11)의 기억 용량은 비휘발성 반도체 메모리(22) 내의 한 블록 단위의 사이즈보다도 큰 것으로 가정하고, 비휘발성 반도체 메모리(22)의 기억 용량은 반도체 기억 장치(예를 들면, SSD)의 제품 명세로서 제공되는 기억 용량보다도 큰 것으로 가정한다.
비휘발성 반도체 메모리(22)의 기억 용량은 다음과 같이 제2, 제3 및 제4 메모리 영역(12, 13, 14)에 할당된다.
반도체 기억 장치의 제품 명세로서 제공되는 기억 용량과 동일하거나 이보다도 큰 기억 용량은 제3 메모리 영역(13)에 할당된다.
제3 메모리 영역(13)의 기억 용량을 비휘발성 반도체 메모리(22)의 기억 용량에서 감산하여 남은 기억 용량은 제2 및 제4 메모리 영역(12, 14)에 할당된다. 제2 및 제4 메모리 영역(12, 14)의 각 기억 용량 및 이들 간의 레이트는 제한되지 않는다.
제2, 제3 및 제4 메모리 영역(12, 13, 14)은, 예를 들면, NAND형 플래시 메모리와 같은 비휘발성 반도체 메모리(22) 내의 하나 이상의 블록으로 구성된다.
데이터의 사이즈를 나타내는 제1, 제2 및 제3 단위는 반도체 기억 장치에 호스트 기기로부터의 주 데이터에 부가되는 용장 데이터(ECC, 내부 제어 플래그 등)를 포함하지 않는다.
일반적으로, 비휘발성 반도체 메모리, 예를 들면, NAND형 플래시 메모리를 포함하는 시스템은 주 데이터에 용장 데이터를 부가한 상태에서 판독/기입을 실행한다. 그렇지만, 설명을 단순화하기 위해서, 각각의 단위는 위에서와 같이 가정한다.
컨트롤러(10)는 CPU 및 주 메모리를 가지며, 데이터 관리를 실행하는 프로그램을 동작시킬 수 있다. 본 실시예에서, 컨트롤러(10)에 의해 실현되는 기능들은 임의의 하드웨어와 소프트웨어 또는 이들의 조합으로서 구현될 수 있다. 이들 기능이 하드웨어 또는 소프트웨어로서 구현되는지는 실제의 실시예 또는 전체 시스템에 부과된 설계 제약에 좌우된다.
컨트롤러(10)의 주 메모리가 DRAM과 같은 휘발성 반도체 메모리로 구성되는 경우, 제1 메모리 영역(11)은 컨트롤러(10)의 주 메모리로 구성될 수 있다.
컨트롤러(10)는 호스트 기기로부터의 논리 어드레스에 의해 액세스되는 데이터가 제1, 제2, 제3 및 제4 메모리 영역(11, 12, 13, 14)에서 어디에 기억되는지를 관리하기 위해서 캐시 관리 테이블, 페이지 관리 테이블, 블록 관리 테이블, 페이지 FIFO 관리 테이블, 및 물리 블록 관리 테이블을 포함한다. 이들 관리 테이블은 반도체 기억 장치의 동작중에 컨트롤러(10)의 주 메모리 상에서 확장된다.
-- 캐시 관리 테이블 --
도 21은 캐시 관리 테이블의 예를 나타낸다.
캐시 관리 테이블은 페이지 단위와 동일한 "작은 단위"로 도 20의 제1 메모리 영역(11)에 기억된 데이터를 제어한다. 유효 데이터의 제어는 섹터 단위로 실행된다.
제1 메모리 영역(11)에서 한 페이지 단위의 한 영역에 하나의 엔트리가 할당된다.
엔트리의 수는 제1 메모리 영역(11)에 포함될 수 있는 페이지 단위 데이터의 수, 즉 (제1 메모리 영역(11)의 총 용량)/(페이지 단위의 사이즈)보다도 크지 않은 것으로 가정한다.
페이지 단위 데이터의 논리 어드레스, 제1 메모리 영역(11)의 물리 어드레스, 및 페이지 단위의 관련 영역 내의 유효 데이터의 위치를 나타내는 섹터 플래그는 각각의 엔트리와 연관된다.
각각의 엔트리에 대응되는 데이터를 일시적으로 기억시키는 페이지 단위의 영역은 제1 메모리 영역(11)에 제공되고, 그 영역의 물리 어드레스는 각각의 엔트 리에 기억된다. 페이지 단위의 영역이 연속적으로 배치되는 것과 같이, 엔트리에 대응하는 영역의 물리 어드레스가 고정되면, 물리 어드레스는 엔트리에 기억되는 것이 요구되지 않는다.
제1 메모리 영역(11) 내의 페이지 단위의 각 영역은 캐시 관리 테이블 내의 섹터 단위의 영역으로 더 분할된다. 섹터 단위의 각 영역 내의 데이터 상태는 섹터 플래그의 값을 "1" 또는 "0"으로 설정함으로써 표현된다.
섹터 플래그가 "1"인 영역에서, 호스트 기기로부터의 유효 데이터가 기억된다. 섹터 플래그가 "0"인 영역에서, 호스트 기기로부터 기입되는 최근의 데이터는 기억되지 않으므로, 그 영역은 무효 영역으로 처리된다. 모든 섹터 플래그가 "0"인 엔트리는 미사용 엔트리인 것으로 간주된다.
이러한 캐시 관리 테이블의 구성은 논리 어드레스가 각각의 엔트리에 할당되는 풀 어소시에이티브 방법으로 불리는 제어 방법에 기초한다. 그렇지만, 제1 메모리 영역(11)에서의 논리 어드레스와 물리 어드레스 간의 대응은 n-way 세트 어소시에이티브 방법 등에 의해 제어될 수 있다.
-- 페이지 관리 테이블 --
도 22는 페이지 관리 테이블의 예를 나타낸다.
페이지 관리 테이블은 페이지 단위와 동일한 "작은 단위"로 도 20의 제2 및 제4 메모리 영역(12, 14)에 기억된 데이터를 제어한다.
제2 및 제4 메모리 영역(12, 14)에서 하나의 블록에 하나의 엔트리가 할당된다고 가정한다.
엔트리의 수는, 처리시 블록을 등록하기 위해서, 제2 및 제4 메모리 영역(12, 14)에 포함될 수 있는 블록의 수, 즉 [(제2 및 제4 메모리 영역(12, 14)의 총 용량/(블록 단위의 사이즈)]를 허용하는 수에 대한 허용이 제공되는 것으로 가정한다.
제2 메모리 영역(12) 또는 제4 메모리 영역(14)에 할당된 블록의 물리 어드레스는 각각의 엔트리와 연관되며, 블록 내의 페이지 단위 데이터의 논리 어드레스는 각각의 엔트리에 기록된다.
페이지 유용성은 페이지마다 "기입 가능" 상태(이 기억 영역은 비어있음)와 "기입 불가" 상태(이 기억 영역은 구 데이터가 한번 기입되고 새로운 데이터가 또 다른 기억 영역에 기입되기 때문에 무효함)를 식별할 수 있도록 구성된다.
-- 블록 관리 테이블 --
도 23은 블록 관리 테이블의 예를 나타낸다.
블록 관리 테이블은 블록 단위와 동일한 "큰 단위"로 도 20의 제3 메모리 영역(13)에 기억된 데이터를 제어한다.
제3 메모리 영역(13)에서 한 블록 단위의 한 영역에 하나의 엔트리가 할당된다고 가정한다.
엔트리의 수는 제3 메모리 영역(13) 내에 포함될 수 있는 블록 단위 데이터의 수, 즉 (제3 메모리 영역(13)의 총 용량)/(블록 단위의 사이즈)보다도 크지 않은 것으로 가정한다.
각각의 엔트리는 논리 어드레스의 순으로 배열된다. 블록 단위 데이터의 논 리 어드레스에 대응하고 제3 메모리 영역(13) 내의 블록을 지정하는 물리 어드레스는 각각의 엔트리와 연관된다.
-- 페이지 FIFO 관리 테이블 --
도 24는 페이지 FIFO 관리 테이블의 예를 나타낸다.
페이지 FIFO 관리 테이블은 도 20의 제4 메모리 영역(14)에 할당된 블록 내의 데이터를 제어한다.
제4 메모리 영역(14)에서 하나의 블록은 하나의 엔트리에 할당된다고 가정한다.
엔트리의 수는 제4 메모리 영역(14)에 할당될 수 있는 블록의 수, 즉 (제4 메모리 영역(14)의 총 용량)/(블록 단위의 사이즈)인 것으로 가정한다.
제4 메모리 영역(14)은 페이지 FIFO 관리 테이블을 이용하여 블록 단위의 FIFO(First-In First-Out) 구조로 관리된다.
제4 메모리 영역(14)에 새로 할당(입력)된 블록에 대응하는 엔트리는 페이지 FIFO 관리 테이블의 상단(입구 측)에 부가되며, FIFO 관리 테이블에 원래 등록된 엔트리는 하나씩 후방으로 시프트된다.
FIFO 관리 테이블의 하단(출구 측)의 엔트리와 연관된 할당 순서가 가장 오래된 블록은 제4 메모리 영역(14)으로부터 출력된다.
-- 물리 블록 관리 테이블 --
도 25는 물리 블록 관리 테이블의 예를 나타낸다.
물리 블록 관리 테이블은 비휘발성 반도체 메모리(22) 내의 블록의 취급을 제어한다.
제2, 제3 및 제4 메모리 영역(12, 13, 14)에서 하나의 블록(물리 블록)에 하나의 엔트리가 할당된다고 가정한다. 엔트리의 수는 데이터 영역으로서 이용될 수 있는 블록의 수인 것으로 가정한다.
각각의 엔트리는 블록의 물리 어드레스와 연관되며 블록의 취급(기억 영역(블록)이 제2, 제3 및 제4 메모리 영역(사용)으로서 이용되는지 또는 이용되지 않는지(미사용)의 여부)을 기억시킨다.
도 20의 컨트롤러(10)에 의해 실행되는 처리 플로를 설명한다.
컨트롤러(10)는 호스트 기기로부터의 섹터 단위(제1 단위) 데이터를 제1 메모리 영역(11)에 최초로 기입하고 그 영역에 일정 기간동안 데이터를 기억시킨다. 이 데이터 기억 처리에 대하여, 단락 I.에서 설명한 "제1 메모리 영역에서의 데이터 기억 처리"가 적용될 수 있다.
컨트롤러(10)는, 소정의 조건(단락 I.에서 설명한 "B. 제1 메모리 영역으로부터의 데이터 출력 처리"의 제1 조건과 실질적으로 동일할 수 있음)에 기초하여, 제1 메모리 영역(11)에 기억된 데이터가 "작은 단위"(제1 관리 단위)" 또는 "큰 단위(제2 관리 단위)" 중 어느 것으로 관리되어야 하는지를 판별한다.
"작은 단위"의 사이즈는 페이지 단위의 사이즈의 자연수배이거나 또는 페이지 단위의 사이즈는 "작은 단위"의 사이즈의 자연수배이다.
"큰 단위"의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배이며, 동시에, 블록 단위의 사이즈"의 사이즈의 자연수배이다.
본 실시예에서, 설명을 단순화하기 위해서, 관리 테이블에 이용되는 각각의 단위를 아래와 같이 가정한다.
제2 및 제4 메모리 영역(12, 14)에서의 데이터 관리 단위인 "작은 단위"의 사이즈는 페이지 단위(제2 단위)의 사이즈와 동일하다. 제3 메모리 영역(13)에서의 데이터 관리 단위인 "큰 단위"의 사이즈는 블록 단위(제3 단위)의 사이즈와 동일하다.
그렇지만, 페이지는 분할됨으로써 제어되는데, 구체적으로, "작은 단위"의 사이즈는 섹터 단위의 사이즈의 자연수배일 수 있으며 페이지 단위의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배일 수 있다.
변형적으로, 복수의 페이지는 집합적으로 제어되는데, 구체적으로, "작은 단위"의 사이즈는 페이지 단위의 사이즈의 2배 이상의 자연수배일 수 있으며 블록 단위의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배일 수 있다.
마찬가지로, 블록은 분할됨으로써 제어되는데, 구체적으로, "큰 단위"의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배일 수 있으며 블록 단위의 사이즈는 "큰 단위"의 사이즈의 2배 이상의 자연수배일 수 있다.
변형적으로, 복수의 블록은 집합적으로 제어되는데, 구체적으로, "큰 단위"의 사이즈는 블록 단위의 사이즈의 2배 이상의 자연수배일 수 있다.
이러한 단위 간의 관계는 다음의 예로 설정될 수 있다: 섹터 단위(제1 단위) 휴대용 컴퓨터(200) "작은 단위" < 페이지 단위(제2 단위) < 블록 단위(제3 단위) ≤ "큰 단위".
제1 메모리 영역(11)에 기억된 데이터가 "작은 단위"로 관리되면, 데이터는 제4 메모리 영역(14)으로 전송된다. 제1 메모리 영역(11)에 기억된 데이터가 "큰 단위"로 관리되면, 데이터는 제3 메모리 영역(13)으로 전송된다.
이 데이터 출력 처리는 단락 I.에서 설명한 "B. 제1 메모리 영역으로부터의 데이터 출력 처리"와 실질적으로 동일하다. 그렇지만, 단락 I.와는 달리, "작은 단위" 데이터의 목적지는 제4 메모리 영역(14)이다.
A. 제4 메모리 영역에서의 FIFO 처리
이미 설명한 바와 같이, 제4 메모리 영역(14)은 블록 단위의 FIFO 구조를 갖는다. 도 26은 제4 메모리 영역(14)에서의 FIFO 처리를 나타낸다.
1. 컨트롤러(10)는 추가 방식으로 기입 데이터를 위해 준비된 블록(이하, 페이지 추가용 물리 블록으로 칭함)에 대응하는 페이지 관리 테이블의 엔트리를 참조한다. 컨트롤러(10)는 제1 메모리 영역(11)으로부터 출력된 데이터를 페이지 단위와 동일한 "작은 단위"의 데이터로서 페이지 추가용 물리 블록의 기입 가능 상태의 페이지에 기억시킨다(단계 ST1).
컨트롤러(10)는 캐시 관리 테이블을 검색하고 출력되는 것이 결정되는 페이지 단위 데이터를 구성하는 모든 섹터 단위 데이터가 제1 메모리 영역(11)에 존재하는지를 판단한다.
모든 섹터 단위 데이터가 제1 메모리 영역(11)에서 완료되는 것이 아니면, 컨트롤러(10)는 제2, 제3 및 제4 메모리 영역(12, 13, 14)으로부터 결여된 데이터를 수집한다.
페이지 단위 데이터를 구성하는 모든 섹터 단위 데이터를 완료한 후, 컨트롤러(10)는 페이지 단위 데이터를 기입하도록 비휘발성 반도체 메모리(22)에 지시한다.
2. 컨트롤러(10)는 페이지 단위 데이터가 기입된 페이지에 대응하는 엔트리에 기록된 논리 어드레스를 페이지 관리 테이블에서 갱신한다(단계 ST2). 제2 및 제4 메모리 영역(12, 14)에 기입된, 동일한 논리 어드레스 범위에 포함되는 구 데이터는 무효 데이터가 된다.
3. 컨트롤러(10)는 페이지 추가용 물리 블록에 미사용 페이지가 존재하는지를 판단한다(단계 ST3). 미사용 페이지가 검출되지 않으면, 이 처리는 단계 ST4로 진행한다. 미사용 페이지가 검출되면 이 처리는 단계 ST1로 복귀한다.
4. 컨트롤러(10)는 페이지 FIFO 관리 테이블의 엔트리를 하나씩 후방으로 시프트하고, 페이지 추가용 물리 블록의 물리 어드레스를 페이지 FIFO 관리 테이블의 상단의 엔트리에 부가한다(단계 ST4). 결과적으로, 페이지 추가용 물리 블록은 제4 메모리 영역(14)에 할당된다.
5. 컨트롤러(10)는 페이지 FIFO 관리 테이블로부터 오버플로(overflow)하는 페이지 FIFO 관리 테이블의 하단의 엔트리와 연관된 할당 순서가 가장 오래된 블록에 대하여 다음의 처리 P1을 실행한다(단계 ST5).
B. 처리 P1
도 27은 처리 P1의 플로차트를 나타낸다.
1. 컨트롤러(10)는 도 22의 페이지 관리 테이블을 검색하고 제4 메모리 영 역(14)으로부터 오버플로하는 블록의 물리 어드레스가 기록되는 엔트리를 검출한다(단계 ST1).
2. 컨트롤러(10)는 엔트리에 기록된 페이지 단위 데이터의 논리 어드레스를 고정한다(단계 ST2). 다음의 처리는 각각의 논리 어드레스에 적용된다.
컨트롤러(10)는 블록 단위와 동일한 "큰 단위"의 사이즈로 페이지 단위 데이터의 논리 어드레스를 정렬하고, 페이지 관리 테이블에서 블록 단위의 사이즈로 정렬된 논리 어드레스 범위에 포함된 논리 어드레스의 수를 계수한다(단계 ST3).
한편, "논리 어드레스가 소정의 사이즈(페이지 단위 또는 블록 단위의 사이즈 등)에 의해 정렬된다"라는 것은 논리 어드레스를 소정의 사이즈로 나눗셈하였을 때의 나머지가 0이도록 하는 어드레스로 논리 어드레스가 끝수 버림된다는 것을 의미한다. 예를 들면, 논리 어드레스 A를 사이즈 S로 정렬시켜 계산된 어드레스는 (A - (A를 S로 나눗샘하였을 때의 나머지))이다. 마찬가지로, "논리 어드레스 범위가 소정의 사이즈로 정렬되었다"라는 것은 어드레스로부터의 소정 사이즈의 범위가 소정의 사이즈로 논리 어드레스를 정렬시켜 계산되었다는 것을 의미한다.
컨트롤러(10)가 페이지 FIFO 관리 테이블에 포함된 물리 어드레스를 갖는 엔트리에서만 논리 어드레스의 수를 계수하면, 제4 메모리 영역(14)에 기억된 페이지 단위 데이터의 수가 취득된다. 한편, 컨트롤러(10)가 엔트리를 제한하지 않으면, 제2 및 제4 메모리 영역(12, 14)에 기억된 페이지 단위 데이터의 수가 취득된다. 컨트롤러(10)는 어느 한 조건을 선택할 수 있다.
4. 컨트롤러(10)는 단계 ST3에서 계수된 논리 어드레스의 수가 소정의 임계 값 이상(제3 조건)인지를 판단한다. 예를 들면, 소정의 임계값은 블록 단위("큰 단위")의 한 영역에 기억될 수 있는 페이지 단위("작은 단위") 데이터의 총수 중 50%로 설정될 수 있다(단계 ST4).
단계 ST3에서 계수된 논리 어드레스의 수가 소정의 임계값 미만이면, 이 처리는 단계 ST5로 진행한다. 단계 ST3에서 계수된 논리 어드레스의 수가 적어도 소정의 임계값이면, 이 처리는 단계 ST6으로 진행한다.
5. 컨트롤러(10)는 페이지 단위 데이터에 어느 것도 행하지 않는다. 즉, 페이지 단위 데이터는 제4 메모리 영역(14)으로부터 오버플로하는 블록에 체류한다(단계 ST5).
6. 컨트롤러(10)는 블록 단위와 동일한 "큰 단위"의 사이즈의 데이터로서 페이지 단위 데이터를 제3 메모리 영역(13)으로 전송한다.
컨트롤러(10)는, 블록 단위의 사이즈로 정렬된 논리 어드레스 범위에 포함된 유효 데이터를 제1, 제2, 제3 및 제4 메모리 영역(11, 12, 13, 14)으로부터 수집함으로써, 페이지 단위 데이터를 블록 단위 데이터로 병합한다(디프래그먼테이션).
블록 단위 데이터를 구성하는 유효 데이터를 완료한 후, 컨트롤러(10)는 블록 단위 데이터를 제3 메모리 영역(13)의 미사용 블록에 기입하도록 비휘발성 반도체 메모리(22)에 지시한다.
7. 컨트롤러(10)는 기입 데이터의 논리 어드레스 범위에 포함되는 데이터를 제1, 제2, 제3 및 제4 메모리 영역(11, 12, 13, 14)에서 무효화한다(단계 ST7).
블록 내의 모든 데이터가 무효 데이터가 되면, 컨트롤러(10)는 블록을 해제 하고 물리 블록 관리 테이블에서 블록의 상태를 "사용" 상태로부터 "미사용" 상태로 설정한다.
8. 컨트롤러(10)는 엔트리 내의 모든 논리 어드레스가 처리되었는지를 판단한다(단계 ST8). 엔트리 내의 모든 논리 어드레스가 처리되었으면, 이 처리는 완료된다. 엔트리 내의 모든 논리 어드레스가 처리되었으면, 이 처리는 단계 ST3으로 복귀한다.
처리 P1을 완료한 후, 제4 메모리 영역(14)으로부터 오버플로하는 블록에 유효 데이터가 남아있으면, 컨트롤러(10)는 물리 블록 관리 테이블에서 블록에 대응하는 엔트리를 "제2 메모리 영역(12)(사용)"으로 설정한다.
제4 메모리 영역(14)으로부터 제2 메모리 영역(12)으로의 데이터 전송에서, 컨트롤러는 데이터를 판독/기입하도록 비휘발성 반도체 메모리(22)에 지시하지 않고서 페이지 FIFO 관리 테이블 및 물리 블록 관리 테이블만을 갱신한다(이동 처리).
페이지 추가용 물리 블록에 미사용 페이지가 존재하지 않으면, 컨트롤러(10)는 물리 블록 관리 테이블을 검색하여 미사용 블록을 얻는다. 미사용 블록 내의 데이터를 소거한 후, 이 블록은 페이지 추가용 물리 블록에 새로 할당된다. 컨트롤러(10)는 페이지 관리 테이블에서 미사용 엔트리를 검색한다. 페이지 추가용 물리 블록에 대응하는 물리 어드레스는 미사용 엔트리에 기록된다.
제4 메모리 영역(14)으로부터의 블록의 이동에 따라, 페이지 단위로 관리되는 블록의 수는 제2 메모리 영역(12)에서 증가된다. 제2 메모리 영역(12) 내의 블 록의 수가 허용된 범위, 즉 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수를 초과하면, 컨트롤러(10)는 다음의 순서에 의해 제2 메모리 영역(12)으로부터 제3 메모리 영역(13)으로의 데이터 전송 처리 또는 콤팩션을 실행한다.
C. 처리예 1
도 28은 처리예 1의 플로차트를 나타낸다.
1. 컨트롤러(10)는 페이지 관리 테이블을 스캔하고 제2 메모리 영역(12)에 기억된 페이지 단위와 동일한 "작은 단위"의 데이터 수(논리 어드레스의 수)를 계수한다(단계 ST1).
단계 ST1에서, 페이지 FIFO 관리 테이블에 포함된 물리 어드레스를 갖는 엔트리 및 페이지 추가용 물리 블록에 대응하는 엔트리는 스캔되는 타깃이 아니다. 즉, 컨트롤러(10)는 제3 메모리 영역(13)만을 스캔한다.
2. 컨트롤러(10)는 제2 메모리 영역(12)에 기억된 페이지 단위의 유효 데이터의 총수가 소정의 임계값보다도 크지 않다(제4 조건). 예를 들면, 소정의 임계값은 제2 메모리 영역(12)에 기억될 수 있는 페이지 단위 데이터의 수일 수 있다(단계 ST2).
유효 데이터의 총수가 소정의 임계값보다도 크면, 제2 메모리 영역(12) 내의 블록의 수가 콤팩션에 의해 허용된 범위로 감소될 수 없기 때문에, 이 처리는 단계 ST3으로 진행한다. 유효 데이터의 총수가 소정의 임계값보다도 크지 않으면, 이 처리는 단계 ST6으로 진행한다.
3. 컨트롤러(10)는 소정의 조건에 기초하여 제2 메모리 영역(12) 내의 유효 데이터를 선택하고 선택된 데이터를 블록 단위와 동일한 "큰 단위"의 데이터로서 제3 메모리 영역(13)으로 전송한다(단계 ST3). 예를 들면, 소정의 조건은 "C. 제2 메모리 영역으로부터 제3 메모리 영역으로의 데이터 전송 처리"(단락 I.에서 설명됨)의 제2 조건과 실질적으로 동일할 수 있다.
컨트롤러(10)는 블록 단위의 사이즈로 정렬된 논리 어드레스 범위에 포함된 유효 데이터를 제1, 제2, 제3, 및 제4 메모리 영역(11, 12, 13,14)으로부터 수집하여 페이지 단위의 유효 데이터를 블록 단위 데이터로 병합한다(디프래그먼테이션).
블록 단위 데이터를 구성하는 유효 데이터를 완료한 후, 컨트롤러(10)는 블록 단위 데이터를 제3 메모리 영역(13)의 미사용 블록에 기입하도록 비휘발성 반도체 메모리(22)에 지시한다.
4. 컨트롤러(10)는 기입 데이터의 논리 어드레스 범위에 포함되는 데이터를 제1, 제2, 제3 및 제4 메모리 영역(11, 12, 13, 14)에서 무효화한다(단계 ST4).
블록 내의 모든 데이터가 무효 데이터가 되면, 컨트롤러(10)는 블록을 해제하고 물리 블록 관리 테이블에서 블록의 상태를 "사용" 상태로부터 "미사용" 상태로 설정한다.
5. 컨트롤러(10)는 제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수 이하인지를 판단한다(단계 ST5).
제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수 이하이면, 이 처리는 완료된다. 제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수보다 크면, 이 처리는 단계 ST1로 복귀한다.
6. 컨트롤러(10)는 물리 블록 관리 테이블을 검색하여 미사용 블록을 얻는다. 미사용 블록 내의 데이터를 소거한 후, 이 블록은 콤팩션 블록에 할당된다. 컨트롤러(10)는 페이지 관리 테이블에서 미사용 엔트리를 검색한다. 콤팩션 블록의 물리 어드레스는 미사용 엔트리와 연관된다(단계 ST6).
7. 컨트롤러(10)는 제2 메모리 영역(12)에 유효 데이터의 수가 가장 적은 블록으로부터 순서대로 페이지 단위의 유효 데이터를 순차 선택한다(단계 ST7). 선택된 유효 데이터는 콤팩션 블록에 복사되고 콤팩션 블록에 대응하는 페이지 관리 테이블의 엔트리 내의 논리 어드레스는 복사된 데이터의 논리 어드레스로 갱신된다.
컨트롤러(10)는 물리 블록 관리 테이블의 엔트리를 "제2 메모리 영역(12)(사용)"으로 갱신함으로써 유효 데이터로 채워진 콤팩션 블록을 제2 메모리 영역(12)에 할당한다.
단계 ST7(콤팩션)에서, 복사된 데이터의 논리 어드레스 범위에 포함된 최근의 유효 데이터는 제1 메모리 영역(11)으로부터 판독될 수 있으며 복사된 데이터는 최근의 유효 데이터로 오버라이트될 수 있다. 복사된 데이터에 취해진 제1 메모리 영역(11) 내의 섹터 단위 데이터는 무효 상태가 된다.
8. 컨트롤러(10)는 복사된 데이터와 동일한 논리 어드레스를 갖는 데이터를 제2 메모리 영역(12)에서 무효화한다(단계 ST8). 블록 내의 모든 데이터가 무효 데이터가 되면, 컨트롤러(10)는 블록을 해제하고 물리 블록 관리 테이블에서 블록의 상태를 "사용" 상태로부터 "미사용" 상태로 설정한다.
9. 컨트롤러(10)는 제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수 이하인지를 판단한다(단계 ST9).
제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수 이하이면, 이 처리는 완료된다. 제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수보다 크면, 이 처리는 단계 ST6으로 복귀한다.
D. 처리예 2
도 29는 처리예 2의 플로차트를 나타낸다.
1. 컨트롤러(10)는 페이지 관리 테이블을 스캔하고 페이지 단위와 동일한 "작은 단위"의 유효 데이터의 수(논리 어드레스의 수)가 가장 적은 2개의 블록을 선택한다(단계 ST1).
단계 ST1에서, 페이지 FIFO 관리 테이블에 포함된 물리 어드레스를 갖는 엔트리 및 페이지 추가용 물리 블록에 대응하는 엔트리는 스캔되는 타깃이 아니다. 즉, 컨트롤러(10)는 제3 메모리 영역(13)만을 스캔한다.
2. 컨트롤러(10)는 페이지 단위의 유효 데이터의 총수가 소정의 임계값(예를 들면, 제3 단위에 포함된 제2 단위의 수)보다도 크지 않은지를 판단한다(제4 조건)(단계 ST2).
유효 데이터의 총수가 소정의 임계값보다도 크면, 제2 메모리 영역(12) 내의 블록의 수가 콤팩션에 의해 허용된 범위로 감소될 수 없기 때문에, 이 처리는 단계 ST3으로 진행한다. 유효 데이터의 총수가 소정의 임계값보다도 크지 않으면, 이 처리는 단계 ST6으로 진행한다.
3. 컨트롤러(10)는 소정의 조건에 기초하여 제2 메모리 영역(12) 내의 유효 데이터를 선택하고 선택된 데이터를 블록 단위와 동일한 "큰 단위"의 데이터로서 제3 메모리 영역(13)으로 전송한다(단계 ST3). 예를 들면, 소정의 조건은 "C. 제2 메모리 영역으로부터 제3 메모리 영역으로의 데이터 전송 처리"(단락 I.에서 설명됨)의 제2 조건과 실질적으로 동일할 수 있다.
컨트롤러(10)는 블록 단위의 사이즈로 정렬된 논리 어드레스 범위에 포함된 유효 데이터를 제1, 제2, 제3, 및 제4 메모리 영역(11, 12, 13,14)으로부터 수집하여 페이지 단위의 유효 데이터를 블록 단위 데이터로 병합한다(디프래그먼테이션).
블록 단위 데이터를 구성하는 유효 데이터를 완료한 후, 컨트롤러(10)는 블록 단위 데이터를 제3 메모리 영역(13)의 미사용 블록에 기입하도록 비휘발성 반도체 메모리(22)에 지시한다.
4. 컨트롤러(10)는 기입 데이터의 논리 어드레스 범위에 포함되는 데이터를 제1, 제2, 제3 및 제4 메모리 영역(11, 12, 13, 14)에서 무효화한다(단계 ST4).
블록 내의 모든 데이터가 무효 데이터가 되면, 컨트롤러(10)는 블록을 해제하고 물리 블록 관리 테이블에서 블록의 상태를 "사용" 상태로부터 "미사용" 상태로 설정한다.
5. 컨트롤러(10)는 제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수 이하인지를 판단한다(단계 ST5).
제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수 이하이면, 이 처리는 완료된다. 제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수보다 크면, 이 처리는 단계 ST1로 복귀한다.
6. 컨트롤러(10)는 물리 블록 관리 테이블을 검색하여 미사용 블록을 얻는다. 미사용 블록 내의 데이터를 소거한 후, 이 블록은 콤팩션 블록에 할당된다. 컨트롤러(10)는 페이지 관리 테이블에서 미사용 엔트리를 검색한다. 콤팩션 블록의 물리 어드레스는 미사용 엔트리와 연관된다(단계 ST6).
7. 컨트롤러(10)는 제2 메모리 영역(12)에 유효 데이터의 수가 가장 적은 블록으로부터 순서대로 페이지 단위의 유효 데이터를 순차 선택한다(단계 ST7). 선택된 유효 데이터는 콤팩션 블록에 복사되고 콤팩션 블록에 대응하는 페이지 관리 테이블의 엔트리 내의 논리 어드레스는 복사된 데이터의 논리 어드레스로 갱신된다.
컨트롤러(10)는 물리 블록 관리 테이블의 엔트리를 "제2 메모리 영역(12)(사용)"으로 갱신함으로써 유효 데이터로 채워진 콤팩션 블록을 제2 메모리 영역(12)에 할당한다.
단계 ST7에서, 복사된 데이터의 논리 어드레스 범위에 포함된 최근의 유효 데이터는 제1 메모리 영역(11)으로부터 판독될 수 있으며 복사된 데이터는 최근의 유효 데이터로 오버라이트될 수 있다. 복사된 데이터에 취해진 제1 메모리 영역(11) 내의 섹터 단위 데이터는 무효 상태가 된다.
8. 컨트롤러(10)는 복사된 데이터와 동일한 논리 어드레스를 갖는 데이터를 제2 메모리 영역(12)에서 무효화한다(단계 ST8). 블록 내의 모든 데이터가 무효 데이터가 되면, 컨트롤러(10)는 블록을 해제하고 물리 블록 관리 테이블에서 블록의 상태를 "사용" 상태로부터 "미사용" 상태로 설정한다.
9. 컨트롤러(10)는 제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수 이하인지를 판단한다(단계 ST9).
제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수 이하이면, 이 처리는 완료된다. 제2 메모리 영역(12) 내의 블록의 수가 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수보다 크면, 이 처리는 단계 ST6으로 복귀한다.
처리예 2의 단계 ST1에서, 유효 데이터의 수가 가장 적은 2개의 블록이 선택되지만, 그 개수는 2개로 제한되지 않으며, 2개 이상의 블록이 선택될 수 있다.
또한, 처리예 2의 단계 ST2에서의 "소정의 임계값"은 선택된 블록의 수보다 하나 더 적은 블록에 기억될 수 있는 페이지 단위 데이터의 수로 설정될 수 있다.
(2) 제2 실시예
도 30은 제2 실시예에 따른 반도체 기억 장치를 나타낸다.
"작은 단위"의 사이즈는 페이지 단위의 사이즈의 자연수배이거나 또는 페이지 단위의 사이즈는 "작은 단위"의 사이즈의 자연수배이다.
"큰 단위"의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배이며, 동시에, 블록 단위의 사이즈는 "큰 단위"의 사이즈의 2배 이상의 자연수배이다.
그렇지만, 페이지는 분할됨으로써 제어되는데, 구체적으로, "작은 단위"의 사이즈는 섹터 단위의 사이즈의 자연수배일 수 있으며 페이지 단위의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배일 수 있다.
이러한 단위 간의 관계는 다음의 예로 설정될 수 있다: 섹터 단위(제1 단위) < "작은 단위" < 페이지 단위(제2 단위) < "큰 단위" < 블록 단위(제3 단위).
제2 실시예에서, 트랙 단위는 "큰 단위"로서 이용될 수 있다. 트랙 단위의 사이즈는 페이지 단위의 사이즈의 2배 이상의 자연수배이며 블록 단위의 사이즈는 트랙 단위의 사이즈의 2배 이상의 자연수배이다.
트랙 단위의 이용에 따라, 블록 관리 테이블 대신에 트랙 관리 테이블 및 트랙 FIFO 관리 테이블을 이용하는 데이터 관리가 행해진다.
제5 실시예에서와 같이, 설명을 단순화하기 위해서, 페이지 단위는 "작은 단위"로서 이용된다. 그렇지만, 클러스터 단위는 "작은 단위"로서 이용될 수 있다. 클러스터 단위의 사이즈는 섹터 단위의 사이즈의 2배 이상의 자연수배이며 페이지 단위의 사이즈는 클러스터 단위의 사이즈의 2배 이상의 자연수배이다. 클러스터 단위를 이용하는 데이터 관리는 후술한다.
제1 메모리 영역(11)은 호스트 기기로부터 데이터를 일시적으로 기억시킨다. 데이터는 섹터 단위(제1 단위) 이하로 제1 메모리 영역(11)에 기입된다. 제1 메모리 영역(11)은 DRAM과 같은 휘발성 반도체 메모리에 포함된다.
제2 메모리 영역(12)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성된다. 비휘발성 반도체 메모리(22)에서, 판독/기입이 한번에 실행되는 단위는 페이 지(제2 단위)이며 소거가 한번에 실행되는 단위는 블록(제1 단위)이다. 블록 단위의 사이즈는 페이지 단위의 사이즈의 자연수배이다. 제2 메모리 영역(12)은 페이지 단위와 동일한 "작은 단위"로 데이터를 기억시킨다.
제3 메모리 영역(13)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성되고 트랙 단위와 동일한 "큰 단위"로 데이터를 기억시킨다.
제4 메모리 영역(14)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성되고 페이지 단위와 동일한 "작은 단위"로 데이터를 기억시킨다.
제5 메모리 영역(15)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성되고 트랙 단위와 동일한 "큰 단위"로 데이터를 기억시킨다.
제1 메모리 영역(11)의 기억 용량은 비휘발성 반도체 메모리(22)에서 한 블록 단위의 사이즈보다도 큰 것으로 가정하고, 비휘발성 반도체 메모리(22)의 기억 용량은 반도체 기억 장치(예를 들면, SSD)의 제품 명세로서 제공되는 기억 용량보다도 큰 것으로 가정한다.
비휘발성 반도체 메모리(22)의 기억 용량은 다음과 같이 제2, 제3, 제4 및 제5 메모리 영역(12, 13, 14, 15)에 할당된다.
기억 용량은 제3 및 제5 메모리 영역(13, 15)의 기억 용량의 총합이 반도체 기억 장치의 제품 명세로서 제공되는 기억 용량보다도 크도록 제3 및 제5 메모리 영역(13, 15)에 할당된다(예를 들면, 반도체 기억 장치의 제품 명세로서 제공되는 기억 용량보다도 약 1 내지 5% 만큼 더 큰 용량이 할당됨).
제3 및 제5 메모리 영역(13, 15) 간의 용량의 레이트는 제한되지 않지만, 예 를 들면, 제3 메모리 영역(13)의 기억 용량은 반도체 기억 장치의 제품 명세로서 제공되는 기억 용량과 동일하게 설정되며, 제5 메모리 영역(15)의 기억 용량은 제3 메모리 영역(13)의 기억 용량의 약 1 내지 5%로 설정된다.
제3 및 제5 메모리 영역(13, 15)의 기억 용량을 비휘발성 반도체 메모리(22)의 기억 용량에서 감산함으로써 남아있는 기억 용량이 제2 및 제4 메모리 영역(12, 14)에 할당된다. 제2 및 제4 메모리 영역(12, 14)의 각 기억 용량과 이들 간의 레이트는 제한되지 않는다.
제2, 제3, 제4 및 제5 메모리 영역(12, 13, 14, 15)은, 예를 들면, NAND형 플래시 메모리와 같은 비휘발성 반도체 메모리(22)에서 하나 이상의 블록으로 구성된다.
제2 실시예에서는, 제1 실시예에서 설명한 제1, 제2, 제3 및 제4 메모리 영역(11, 12, 13, 14) 이외에, 제5 메모리 영역이 하나 이상의 블록을 할당하여 제공된다.
제1 실시예에서와 같이, 데이터의 사이즈를 나타내는 제1, 제2 및 제3 단위는 호스트 기기로부터의 주 데이터에 부가되는 용장 데이터(ECC, 내부 제어 플래그 등)를 반도체 기억 장치에 포함하지 않는다.
컨트롤러(10)는 데이터 관리를 실행하는 프로그램을 동작시킨다. 컨트롤러(10)에 의해 실현되는 기능들은 임의의 하드웨어와 소프트웨어 또는 이들의 조합으로서 구현될 수 있다. 이들 기능이 하드웨어 또는 소프트웨어로서 구현되는지는 실제의 실시예 또는 전체 시스템에 부과된 설계 제약에 좌우된다.
컨트롤러(10)의 주 메모리가 DRAM과 같은 휘발성 반도체 메모리로 구성되는 경우, 제1 메모리 영역(11)은 컨트롤러(10)의 주 메모리로 구성될 수 있다.
컨트롤러(10)는, 호스트 기기로부터의 논리 어드레스에 의해 액세스되는 데이터가 제1, 제2, 제3, 제4 및 제5 메모리 영역(11, 12, 13, 14, 15)에서 어디에 기억되는지를 관리하기 위해서, 캐시 관리 테이블, 페이지 관리 테이블, 트랙 관리 테이블, 페이지 FIFO 관리 테이블, 트랙 FIFO 관리 테이블, 및 물리 블록 관리 테이블을 포함한다.
-- 캐시 관리 테이블 --
도 30의 캐시 관리 테이블은 페이지 단위와 동일한 "작은 단위"로 제1 메모리 영역(11)에 기억된 데이터를 제어한다. 유효 데이터의 제어는 섹터 단위로 실행된다.
캐시 관리 테이블의 구성은 제1 실시예에서와 같이 도 21에 도시되어 있다. 캐시 관리 테이블은 제1 실시예에서 이미 설명하였기 때문에, 여기서 설명을 생략한다.
-- 페이지 관리 테이블 --
도 30의 페이지 관리 테이블은 페이지 단위와 동일한 "작은 단위"로 제2 및 제4 메모리 영역(12, 14)에 기억된 데이터를 제어한다.
페이지 관리 테이블의 구성은 제1 실시예에서와 같이 도 22에 도시되어 있다. 페이지 관리 테이블은 제1 실시예에서 이미 설명하였기 때문에, 여기서 설명을 생략한다.
-- 트랙 관리 테이블 --
도 31은 트랙 관리 테이블의 예를 나타낸다.
트랙 관리 테이블은 트랙 단위와 동일한 "큰 단위"로 제3 및 제5 메모리 영역(13, 15)에 기억된 데이터를 제어한다.
제3 및 제5 메모리 영역(13, 15)에서 하나의 블록에 하나의 엔트리가 할당된다고 가정한다.
엔트리의 수는, 처리시 블록을 등록하기 위해서, 제3 및 제5 메모리 영역(13, 15)에 포함될 수 있는 블록의 수, 즉 [(제3 및 제5 메모리 영역(13, 15)의 총 용량/(블록 단위의 사이즈)]를 허용하는 수에 대한 허용이 제공되는 것으로 가정한다.
제3 메모리 영역(13) 또는 제5 메모리 영역(15)에 할당된 블록의 물리 어드레스는 각각의 엔트리와 연관되며, 블록 내의 트랙 단위 데이터의 논리 어드레스는 각각의 엔트리에 기록된다.
페이지 유용성은 트랙 단위의 영역 내의 페이지에 대하여 "기입 가능" 상태(이 기억 영역은 비어있음)와 "기입 불가" 상태(이 기억 영역은 구 데이터가 한번 기입되고 새로운 데이터가 또 다른 기억 영역에 기입되기 때문에 무효함)를 식별할 수 있도록 구성된다.
본 예에서, 엔트리는 블록 단위로 구성된다; 그렇지만, 고속으로 블록의 논리 어드레스를 데이터의 논리 어드레스로부터 검색하기 위해서, 트랙 관리 테이블의 엔트리는 논리 어드레스의 순서로 배열된 트랙 단위로 구성될 수 있다.
-- 페이지 FIFO 관리 테이블 --
도 30의 페이지 FIFO 관리 테이블은 제4 메모리 영역(14)에 할당된 블록 내의 데이터를 제어한다.
제1 실시예에서와 같이, 페이지 FIFO 관리 테이블의 구성이 도 24에 도시되어 있다. 페이지 FIFO 관리 테이블을 제1 실시예에서 이미 설명하였기 때문에, 여기서 그 설명은 생략한다.
-- 트랙 FIFO 관리 테이블 --
도 32는 트랙 FIFO 관리 테이블의 예를 나타낸다.
트랙 FIFO 관리 테이블은 제5 메모리 영역(15)에 할당된 블록 내의 데이터를 제어한다.
제5 메모리 영역(15)에서 하나의 블록에는 하나의 엔트리가 할당된다고 가정한다. 엔트리의 수는 제5 메모리 영역(15)에 할당될 수 있는 블록의 수, 즉 (제5 메모리 영역(15)의 총 용량)/(블록 단위의 사이즈)인 것으로 가정한다.
제5 메모리 영역(15)은 트랙 FIFO 관리 테이블을 이용하여 블록 단위의 FIFO(First-In First-Out) 구조로 관리된다.
제5 메모리 영역(15)에 새로 할당(입력)된 블록에 대응하는 엔트리는 트랙 FIFO 관리 테이블의 상단(입구 측)에 부가되고, 트랙 FIFO 관리 테이블에 원래 등록된 엔트리는 하나씩 후방으로 시프트된다.
엔트리의 수가 허용된 범위를 초과하는 경우, 트랙 FIFO 관리 테이블의 하단(출구 측)의 엔트리와 연관된 할당 순서가 가장 오래된 블록은 제5 메모리 영 역(15)으로부터 출력된다.
-- 물리 블록 관리 테이블 --
도 33은 물리 블록 관리 테이블의 예를 나타낸다.
물리 블록 관리 테이블은 비휘발성 반도체 메모리(22)에서의 블록의 취급을 제어한다.
하나의 블록(물리 블록)에는 하나의 엔트리가 할당된다고 가정한다. 엔트리의 수는 데이터 영역으로서 사용될 수 있는 블록의 수인 것으로 가정한다. 각각의 엔트리는 블록의 논리 어드레스와 연관되며 블록의 취급(기억 영역(블록)이 제2, 제3, 제4 및 제5 메모리 영역(사용)으로 사용되는지 또는 사용되지 않는지(미사용)의 여부)을 기억시킨다.
도 30의 컨트롤러(10)에 의해 실행되는 처리 플로를 설명한다.
제1 메모리 영역(11)에 기억된 데이터는 "작은 단위" 또는 "큰 단위"로 분류되고, "작은 단위" 데이터는 제4 메모리 영역(14)에 출력된다. 제4 메모리 영역(14)에서의 FIFO 처리의 동작은 제1 실시예와 동일하다.
즉, 제4 메모리 영역(14)에서의 FIFO 처리는 도 26의 플로와 동일하다. 제4 메모리 영역(14)으로부터 오버플로하는 블록에 적용되는 처리는 도 27의 플로와 실질적으로 동일하다(그렇지만, "큰 단위" 데이터의 목적지는 제5 메모리 영역(15)이다).
도 28 또는 도 29의 플로에 도시된 바와 같이, 본 구성에 따라, 제2 메모리 영역(12)에서 콤팩션을 받기 쉬운 타깃은 제2 메모리 영역(12)으로부터 출력되는 갱신 주파수가 낮은 데이터이며, 소거 횟수는 메모리 셀의 열화를 방지하도록 감소된다.
그렇지만, 제2 실시예에서, 제1 메모리 영역(11)으로부터 "큰 단위" 데이터로서 출력되도록 결정되는 데이터 및 제2 및 제4 메모리 영역(12, 14)으로부터 "큰 단위" 데이터로서 출력되도록 결정되는 데이터는 갱신 주파수가 높은 데이터와 갱신 주파수가 낮은 데이터로 분할된다. 갱신 주파수가 낮은 데이터만에 관한 기술은 기본적으로 설명된 콤팩션을 받기 쉬운 타깃이다.
본 실시예에서, 블록 단위보다도 사이즈가 작은 트랙 단위는 "큰 단위"로서 이용되며, 제3 및 제5 메모리 영역(13, 15)에서의 데이터 관리는 트랙 단위로 행해진다. 즉, 관리 단위의 사이즈는 제3 및 제5 메모리 영역(13, 15)에서 블록 단위(최소의 소거 단위)의 사이즈보다도 작고, 따라서, 무효 데이터가 블록에서 발생되므로, 콤팩션 처리가 행해질 필요가 있다.
여기서, 갱신 주파수가 높은 데이터와 갱신 주파수가 낮은 데이터는 서로 판별되며, 콤팩션의 효율을 향상시키기 위해서, 블록 단위의 FIFO 구조를 갖는 제5 메모리 영역(15)은 제3 메모리 영역(13)의 앞에 배치된다.
다음의 동작을 설명한다. 제1 메모리 영역(11)으로부터 "큰 단위" 데이터로서 출력되도록 결정되는 데이터와 제2 및 제4 메모리 영역(12, 14)으로부터 "큰 단위" 데이터로서 출력되도록 결정되는 데이터는 제5 메모리 영역(15)에서 FIFO 처리를 받기 쉽다.
A. 제5 메모리 영역에서의 FIFO 처리
도 34는 제5 메모리 영역(15)에서의 FIFO 처리를 나타낸다. 설명을 단순화하기 위해서, 제1 메모리 영역(11)으로부터 "큰 단위" 데이터로서 출력되도록 결정되는 데이터를 특히 고려한다.
1. 컨트롤러(10)는 추가 방식으로 기입 데이터를 위해 준비된 블록(이하, 트랙 추가용 물리 블록으로 칭함)에 대응하는 트랙 관리 테이블의 엔트리를 참조한다. 컨트롤러(10)는 트랙 단위와 동일한 "큰 단위"의 데이터로서 제1 메모리 영역(11)으로부터 출력된 데이터를 트랙 추가용 물리 블록에서 기입 가능 상태를 갖는 트랙 단위의 영역에 기억시킨다(단계 ST1).
컨트롤러(10)는 캐시 관리 테이블을 검색하고 출력이 결정되는 트랙 단위 데이터를 구성하는 모든 섹터 단위 데이터가 제1 메모리 영역(11)에 존재하는지를 판단한다.
모든 섹터 단위 데이터가 제1 메모리 영역(11)에서 완료되는 것이 아니면, 컨트롤러(10)는 제2, 제3, 제4 및 제5 메모리 영역(12, 13, 14, 15)으로부터 결여된 데이터를 수집한다.
트랙 단위 데이터를 구성하는 모든 섹터 단위 데이터를 완료한 후, 컨트롤러(10)는 트랙 단위 데이터를 트랙 추가용 물리 블록에 기입하도록 비휘발성 반도체 메모리(22)에 지시한다.
2. 컨트롤러(10)는 트랙 단위 데이터가 기입된 트랙 단위의 영역(페이지)에 대응하는 엔트리에 기록된 논리 어드레스를 트랙 관리 테이블에서 갱신한다(단계 ST2). 제2, 제3, 제4 및 제5 메모리 영역(12, 13, 14, 15)에 기입된, 동일한 논리 어드레스 범위에 포함된 구 데이터는 무효 데이터가 된다.
3. 컨트롤러(10)는 트랙 추가용 물리 블록에 트랙 단위의 미사용 영역(미사용 페이지)이 존재하는지를 판단한다(단계 ST3). 미사용 페이지가 검출되지 않으면, 이 처리는 단계 ST4로 진행한다. 미사용 페이지가 검출되면, 이 처리는 단계 ST1로 복귀한다.
4. 컨트롤러(10)는 트랙 FIFO 관리 테이블의 엔트리를 하나씩 후방으로 시프트하고, 트랙 추가용 물리 블록의 물리 어드레스를 트랙 FIFO 관리 테이블의 상단의 엔트리에 부가한다(단계 ST4). 결과적으로, 트랙 추가용 물리 블록은 제4 메모리 영역(14)에 할당된다.
5. 컨트롤러(10)는 "제3 메모리 영역(13)(사용)"이 되는 블록에 대응하는 엔트리를 물리 블록 관리 테이블에서 갱신한다(단계 ST5).
제5 메모리 영역(15)으로부터 제3 메모리 영역(13)으로의 데이터 전송에서, 컨트롤러는 데이터를 판독/기입하도록 비휘발성 반도체 메모리(22)에 지시하지 않고서 트랙 FIFO 관리 테이블 및 물리 블록 관리 테이블만을 갱신한다(이동 처리).
B. 처리예 1
도 35는 처리예 1의 플로차트를 나타낸다.
1. 컨트롤러(10)는 물리 블록 관리 테이블을 검색하여 미사용 블록을 얻는다. 미사용 블록 내의 데이터를 소거한 후, 이 블록은 콤팩션 블록에 할당된다. 컨트롤러(10)는 트랙 관리 테이블에서 미사용 엔트리를 검색한다. 콤팩션 블록의 물리 어드레스는 미사용 엔트리와 연관된다(단계 ST1).
2. 컨트롤러(10)는 트랙 관리 테이블을 스캐닝하여 유효 데이터의 수가 가장 적은 블록으로부터 순서대로 트랙 단위의 유효 데이터를 순차 선택한다. 선택된 유효 데이터는 콤팩션 블록에 복사되고 콤팩션 블록과 연관되는 트랙 관리 테이블의 엔트리 내의 논리 어드레스는 복사된 데이터의 논리 어드레스로 갱신된다(단계 ST2).
트랙 관리 테이블의 스캐닝에서, 트랙 FIFO 관리 테이블에 포함된 물리 어드레스와 연관된 엔트리 및 물리 블록 관리 테이블에 대응하는 엔트리는 스캐닝되지 않는다. 즉, 제3 메모리 영역(13)은 스캐닝되지만, 제5 메모리 영역(15)은 스캐닝되지 않는다.
단계 ST2(콤팩션)에서, 복사된 데이터의 논리 어드레스 범위에 포함된 유효 데이터는 제1, 제2, 제4 메모리 영역(11, 12, 14)으로부터 판독될 수 있으며 복사된 데이터는 유효 데이터로 오버라이트된다. 콤팩션에 관계된 제1, 제2, 제4 메모리 영역(11, 12, 14) 내의 유효 데이터는 무효 상태가 된다.
3. 블록 내의 모든 데이터가 무효 데이터가 되면, 컨트롤러(10)는 블록을 해제하고 물리 블록 관리 테이블에서 블록의 상태를 "사용" 상태로부터 "미사용" 상태로 설정한다(단계 ST3).
4. 컨트롤러(10)는 제3 메모리 영역(13) 내의 블록의 수가 제3 메모리 영역(13)의 용량으로 정해진 소정의 블록 수인지를 판단한다(단계 ST4).
제3 메모리 영역(13) 내의 블록의 수가 제3 메모리 영역(13)의 용량으로 정해진 소정의 블록 수 이하이면, 이 처리는 완료된다. 제3 메모리 영역(13) 내의 블록의 수가 제3 메모리 영역(13)의 용량으로 정해진 소정의 블록 수보다도 크면, 이 처리는 단계 ST1로 복귀한다.
C. 처리예 2
콤팩션은 제3 메모리 영역(13) 내의 블록을 이용하여 간단히 행해지지 않을 수 있다. 구체적으로, 반도체 기억 장치의 제품 명세로서의 기억 용량이 제3 메모리 영역(13)의 기억 용량보다도 크고 제3 및 제5 메모리 영역(13, 15)의 총 기억 용량보다도 작은 경우, 콤팩션은 행해지지 않을 수 있다.
이러한 상황은 제품 명세로서의 용량이 반도체 기억 장치에서의 NAND형 플래시 메모리의 총 용량에 가능한 한 근접해져야 하는 요구로 인해 발생할 수 있다.
이 경우, 제3 메모리 영역(13)에 존재하는 무효 데이터의 총 사이즈(기억 용량)가 블록 단위의 사이즈에 도달하지 않으면, 미사용 블록은 콤팩션이 제3 메모리 영역(13)에서 얼마나 많이 행해지더라도 새로 생성될 수 없다.
따라서, 이러한 상황에서, 콤팩션은 예외적인 기준에 대해서만 제3 메모리 영역(13)과 제5 메모리 영역(15) 모두에 적용된다(제5 조건).
도 36은 처리예 2의 플로차트를 나타낸다.
1. 컨트롤러(10)는 물리 블록 관리 테이블을 검색하여 미사용 블록을 얻는다. 미사용 블록 내의 데이터를 소거한 후, 이 블록은 콤팩션 블록에 할당된다. 컨트롤러(10)는 트랙 관리 테이블에서 미사용 엔트리를 검색한다. 콤팩션 블록의 물리 어드레스는 미사용 엔트리와 연관된다(단계 ST1).
2. 컨트롤러(10)는 트랙 관리 테이블을 스캐닝하여 유효 데이터의 수가 가장 적은 블록으로부터 순서대로 트랙 단위의 유효 데이터를 순차 선택한다. 선택된 유효 데이터는 콤팩션 블록에 복사되고 콤팩션 블록과 연관되는 트랙 관리 테이블의 엔트리 내의 논리 어드레스는 복사된 데이터의 논리 어드레스로 갱신된다(단계 ST2).
트랙 관리 테이블의 스캐닝에서, 트랙 FIFO 관리 테이블에 포함된 물리 어드레스와 연관된 엔트리가 또한 스캐닝된다. 즉, 제3 메모리 영역(13) 제5 메모리 영역(15)이 스캐닝된다.
단계 ST2(콤팩션)에서, 복사된 데이터의 논리 어드레스 범위에 포함된 유효 데이터는 제1, 제2, 제4 메모리 영역(11, 12, 14)으로부터 판독될 수 있으며 복사된 데이터는 유효 데이터로 오버라이트된다. 콤팩션에 관계된 제1, 제2, 제4 메모리 영역(11, 12, 14) 내의 유효 데이터는 무효 상태가 된다.
3. 블록 내의 모든 데이터가 무효 데이터가 되면, 컨트롤러(10)는 블록을 해제하고 물리 블록 관리 테이블에서 블록의 상태를 "사용" 상태로부터 "미사용" 상태로 설정한다(단계 ST3).
4. 컨트롤러(10)는 콤팩션 블록을 트랙 FIFO 관리 테이블의 상단에 부가한다(단계 ST4). 이것은 제5 메모리 영역(15) 내의 무효 데이터가 감소될 필요가 있기 때문이다.
제5 메모리 영역(15) 내의 무효 데이터의 수가 감소되면, 제3 메모리 영역(13) 내의 무효 데이터의 수는 증가된다. 따라서, 콤팩션은 위의 처리예 1에 나타낸 바와 같이 제3 메모리 영역(13)에만 적용되므로, 제3 메모리 영역(13) 내의 유효 데이터가 수집되고, 미사용 블록은 제3 메모리 영역(13)에서 생성될 수 있다.
5. 컨트롤러(10)는 제3 및 제5 메모리 영역(13, 15) 내의 블록의 수가 제3 및 제5 메모리 영역(13, 15)의 용량으로 정해진 소정의 블록 수인지를 판단한다(단계 ST5).
제3 및 제5 메모리 영역(13, 15) 내의 블록의 수가 제3 및 제5 메모리 영역(13, 15)의 용량으로 정해진 소정의 블록 수이면, 이 처리는 완료된다. 제3 및 제5 메모리 영역(13, 15) 내의 블록의 수가 제3 및 제5 메모리 영역(13, 15)의 용량으로 정해진 소정의 블록 수보다도 크면, 이 처리는 단계 ST1로 복귀한다.
처리예 1 및 2에서의 각 단계 ST1에서, 제1 실시예(도 29)에서의 처리예 2로서, 트랙 단위의 유효 데이터의 수가 가장 적은 2개 이상의 블록이 선택될 수 있으며 유효 데이터는 콤팩션 블록에 복사될 수 있다.
제2 실시예에서, 컨트롤러(10)는 기억 영역(블록)을 제2 메모리 영역(12), 제3 메모리 영역(13), 제4 메모리 영역(14), 및 제5 메모리 영역(15)에 할당하므로, 비휘발성 반도체 메모리에서의 데이터 관리가 행해진다. 그렇지만, 이것에 제한되지 않는다.
예를 들면, 데이터 관리는 제4 메모리 영역(14)을 구성하지 않고서 제2 메모리 영역(12), 제3 메모리 영역(13), 및 제5 메모리 영역(15)을 구성하여 행해질 수 있다. 이와 달리, 데이터 관리는 제2 메모리 영역(12) 및 제4 메모리 영역(14)을 구성하지 않고서 제3 메모리 영역(13) 및 제5 메모리 영역(15)을 구성하여 행해질 수 있다.
(3) 제3 실시예
제3 실시예는 구현 비용 및 입증 비용을 감소시키기 위한 제2 및 제4 메모리 영역(12, 14)에서의 데이터 관리 구성에 관한 것이다.
도 37은 제3 실시예에 따른 반도체 기억 장치를 나타낸다.
제1 메모리 영역(11)은 호스트 기기로부터 데이터를 일시적으로 기억시킨다. 데이터는 섹터 단위(제1 단위)로 제1 메모리 영역(11)에 기입된다. 제1 메모리 영역(11)은 DRAM과 같은 휘발성 반도체 메모리에 포함된다.
제2 메모리 영역(12)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성된다. 비휘발성 반도체 메모리(22)에서, 판독/기입이 한번에 실행되는 단위는 페이지(제2 단위)이며 소거가 한번에 실행되는 단위는 블록(제3 단위)이다. 블록 단위의 사이즈는 페이지 단위의 사이즈의 자연수배이다. 제2 메모리 영역(12)은 페이지 단위와 동일한 "작은 단위"로 데이터를 기억시킨다.
제3 메모리 영역(13)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성되고 블록 단위와 동일한 "큰 단위"로 데이터를 기억시킨다.
제4 메모리 영역(14)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성되고 페이지 단위와 동일한 "작은 단위"로 데이터를 기억시킨다.
제1 메모리 영역(11)의 기억 용량은 비휘발성 반도체 메모리(22)에서 한 블록 단위의 사이즈보다도 큰 것으로 가정하고, 비휘발성 반도체 메모리(22)의 기억 용량은 반도체 기억 장치(예를 들면, SSD)의 제품 명세로서 제공되는 기억 용량보다도 큰 것으로 가정한다.
비휘발성 반도체 메모리(22)의 기억 용량은 다음과 같이 제2, 제3, 및 제4 메모리 영역(12, 13, 14)에 할당된다.
반도체 기억 장치의 제품 명세로서 제공되는 기억 용량과 동일하거나 이보다도 큰 기억 용량은 제3 메모리 영역(13)에 할당된다.
제3 메모리 영역(13)의 기억 용량을 비휘발성 반도체 메모리(22)의 기억 용량에서 감산함으로써 남아있는 기억 용량은 제2 및 제4 메모리 영역(12, 14)에 할당된다. 제2 및 제4 메모리 영역(12, 14)의 각 기억 용량과 레이트는 제한되지 않는다.
제2, 제3, 제4 메모리 영역(12, 13, 14)은, 예를 들면, NAND형 플래시 메모리와 같은 비휘발성 반도체 메모리(22)에서의 하나 이상의 블록으로 구성된다.
호스트 기기로부터의 주 데이터에 부가되는 용장 데이터(ECC, 내부 제어 플래그 등)를 반도체 기억 장치에 포함하지 않는다.
컨트롤러(10)는 CPU 및 주 메모리를 가지며, 데이터 관리를 실행하는 프로그램을 동작시킬 수 있다. 본 실시예에서, 컨트롤러(10)에 의해 실현되는 기능들은 임의의 하드웨어와 소프트웨어 또는 이들의 조합으로서 구현될 수 있다. 이들 기능이 하드웨어 또는 소프트웨어로서 구현되는지는 실제의 실시예 또는 전체 시스템에 부과된 설계 제약에 좌우된다.
컨트롤러(10)의 주 메모리가 DRAM과 같은 휘발성 반도체 메모리로 구성되는 경우, 제1 메모리 영역(11)은 컨트롤러(10)의 주 메모리로 구성될 수 있다.
컨트롤러(10)는, 호스트 기기로부터의 논리 어드레스에 의해 액세스되는 데 이터가 제1, 제2, 제3, 및 제4 메모리 영역(11, 12, 13, 14)에서 어디에 기억되는지를 관리하기 위해서, 캐시 관리 테이블, 페이지 관리 테이블, 블록 관리 테이블, 페이지 FIFO 관리 테이블, 및 물리 블록 관리 테이블을 포함한다. 이들 관리 테이블은 반도체 기억 장치의 동작중에 컨트롤러(10)의 주 메모리 상에서 확장된다.
-- 캐시 관리 테이블 --
도 37의 캐시 관리 테이블은 페이지 단위와 동일한 "작은 단위"로 제1 메모리 영역(11)에 기억된 데이터를 제어한다. 유효 데이터의 제어는 섹터 단위로 실행된다.
캐시 관리 테이블의 구성은 제1 실시예에서와 같이 도 21에 도시되어 있다. 캐시 관리 테이블은 제1 실시예에서 이미 설명하였기 때문에, 여기서 상세한 설명을 생략한다.
-- 페이지 관리 테이블 --
도 37의 페이지 관리 테이블은 페이지 단위와 동일한 "작은 단위"로 제2 및 제4 메모리 영역(12, 14)에 기억된 데이터를 제어한다.
페이지 관리 테이블의 구성은 제1 실시예에서와 같이 도 22에 도시되어 있다. 페이지 관리 테이블은 제1 실시예에서 이미 설명하였기 때문에, 여기서 상세한 설명을 생략한다.
-- 블록 관리 테이블 --
도 37의 블록 관리 테이블은 블록 단위와 동일한 "큰 단위"로 제3 메모리 영역(13)에 기억된 데이터를 제어한다.
블록 관리 테이블의 구성은 제1 실시예에서와 같이 도 23에 도시되어 있다. 블록 관리 테이블은 제1 실시예에서 이미 설명하였기 때문에, 여기서 상세한 설명을 생략한다.
-- 페이지 FIFO 관리 테이블 --
도 37의 페이지 FIFO 관리 테이블은 제4 메모리 영역(14)에 할당된 블록 내의 데이터를 제어한다.
페이지 FIFO 관리 테이블의 구성은 제1 실시예에서와 같이 도 24에 도시되어 있다. 페이지 FIFO 관리 테이블은 제1 실시예에서 이미 설명하였기 때문에, 여기서 상세한 설명을 생략한다.
-- 물리 블록 관리 테이블 --
도 37의 물리 블록 관리 테이블은 비휘발성 반도체 메모리(22)에서의 블록의 취급을 제어한다.
물리 블록 관리 테이블의 구성은 제1 실시예에서와 같이 도 25에 도시되어 있다. 물리 블록 관리 테이블은 제1 실시예에서 이미 설명하였기 때문에, 여기서 상세한 설명을 생략한다.
도 37의 컨트롤러(10)에 의해 실행되는 처리 플로를 설명한다.
도 37의 컨트롤러(10)에 의한 처리 플로를 설명한다.
컨트롤러(10)는 호스트 기기로부터의 섹터 단위(제1 단위) 데이터를 제1 메모리 영역(11)에 기입하고 일정 기간동안 데이터를 기억시킨다. 이 데이터 기억 처리에 대하여, 단락 I.에서 설명한 "A. 제1 메모리 영역에서의 데이터 기억 처리" 가 적용될 수 있다.
컨트롤러(10)는, 소정의 조건(단락 I.에서 설명한 "B. 제1 메모리 영역으로부터의 데이터 출력 처리"의 제1 조건과 실질적으로 동일할 수 있음)에 기초하여, 제1 메모리 영역(11)에 기억된 데이터가 "작은 단위"(제1 관리 단위)" 또는 "큰 단위(제2 관리 단위)" 중 어느 것으로 관리되어야 하는지를 판별한다.
"작은 단위"의 사이즈는 페이지 단위의 사이즈의 자연수배이거나 또는 페이지 단위의 사이즈는 "작은 단위"의 사이즈의 자연수배이다.
"큰 단위"의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배이며, 동시에, 블록 단위의 사이즈"의 사이즈의 자연수배이다.
본 실시예에서, 설명을 단순화하기 위해서, 관리 테이블에 이용되는 각각의 단위를 아래와 같이 가정한다.
제2 및 제4 메모리 영역(12, 14)에서의 데이터 관리 단위인 "작은 단위"의 사이즈는 페이지 단위(제2 단위)의 사이즈와 동일하다. 제3 메모리 영역(13)에서의 데이터 관리 단위인 "큰 단위"의 사이즈는 블록 단위(제3 단위)의 사이즈와 동일하다.
그렇지만, 페이지는 분할됨으로써 제어되는데, 구체적으로, "작은 단위"의 사이즈는 섹터 단위의 사이즈의 자연수배일 수 있으며 페이지 단위의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배일 수 있다.
변형적으로, 복수의 페이지는 집합적으로 제어되는데, 구체적으로, "작은 단위"의 사이즈는 페이지 단위의 사이즈의 2배 이상의 자연수배일 수 있으며 블록 단 위의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배일 수 있다.
마찬가지로, 블록은 분할됨으로써 제어되는데, 구체적으로, "큰 단위"의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배일 수 있으며 블록 단위의 사이즈는 "큰 단위"의 사이즈의 2배 이상의 자연수배일 수 있다.
변형적으로, 복수의 블록은 집합적으로 제어되는데, 구체적으로, "큰 단위"의 사이즈는 블록 단위의 사이즈의 2배 이상의 자연수배일 수 있다.
이러한 단위 간의 관계는 다음의 예로 설정될 수 있다: 섹터 단위(제1 단위) < "작은 단위" < 페이지 단위(제2 단위) < 블록 단위(제3 단위) ≤ "큰 단위".
제1 메모리 영역(11)에 기억된 데이터가 "작은 단위"로 관리되면, 데이터는 제4 메모리 영역(14)으로 전송된다. 제1 메모리 영역(11)에 기억된 데이터가 "큰 단위"로 관리되면, 데이터는 제3 메모리 영역(13)으로 전송된다.
이 데이터 출력 처리는 단락 I.에서 설명한 "B. 제1 메모리 영역으로부터의 데이터 출력 처리"와 실질적으로 동일하다. 그렇지만, 단락 I.와는 달리, "작은 단위" 데이터의 목적지는 제4 메모리 영역(14)이다.
A. 제4 메모리 영역에서의 FIFO 처리
이미 설명한 바와 같이, 제4 메모리 영역(14)은 블록 단위의 FIFO 구조를 갖는다. 도 38은 제4 메모리 영역(14)에서의 FIFO 처리를 나타낸다.
1. 컨트롤러(10)는 추가 방식으로 기입 데이터를 위해 준비된 블록(이하, 페이지 추가용 물리 블록으로 칭함)에 대응하는 페이지 관리 테이블의 엔트리를 참조한다. 컨트롤러(10)는 제1 메모리 영역(11)으로부터 출력된 데이터를 페이지 단위 와 동일한 "작은 단위"의 데이터로서 페이지 추가용 물리 블록의 기입 가능 상태의 페이지에 기억시킨다(단계 ST1).
2. 컨트롤러(10)는 페이지 단위 데이터가 기입된 페이지에 대응하는 엔트리에 기록된 논리 어드레스를 페이지 관리 테이블에서 갱신한다(단계 ST2). 제2 및 제4 메모리 영역(12, 14)에 기입된, 동일한 논리 어드레스 범위에 포함되는 구 데이터는 무효 데이터가 된다.
3. 컨트롤러(10)는 페이지 추가용 물리 블록에 미사용 페이지가 존재하는지를 판단한다(단계 ST3). 미사용 페이지가 검출되지 않으면, 이 처리는 단계 ST4로 진행한다. 미사용 페이지가 검출되면 이 처리는 단계 ST1로 복귀한다.
4. 컨트롤러(10)는 페이지 FIFO 관리 테이블의 엔트리를 하나씩 후방으로 시프트하고, 페이지 추가용 물리 블록의 물리 어드레스를 페이지 FIFO 관리 테이블의 상단의 엔트리에 부가한다(단계 ST4). 결과적으로, 페이지 추가용 물리 블록은 제4 메모리 영역(14)에 할당된다.
5. 컨트롤러(10)는 물리 어드레스가 페이지 FIFO 관리 테이블에 기록되는 모든 블록에 대한 다음의 처리 P1을 제4 메모리 영역(14)에서 실행한다(단계 ST5).
처리 P1은 콤팩션을 채택하는 점에서 제1 실시예와 제2 실시예는 상이하다. 이 점은 제4 메모리 영역(14)에서의 블록의 이용 효율이 나쁜 경우에 효율적이다. 기입 동작의 증가를 억제하기 위해서, 유효 데이터가 많은 블록은 콤팩션의 대상으로부터 제외된다.
B. 처리 P1
도 39는 처리 P1의 플로차트를 나타낸다. 도 40은 처리 P1을 실행하는 동안 제4 메모리 영역(14)에서의 블록의 상태를 나타낸다. 각각의 블록은 복수의 페이지로 구성된다. 각각의 페이지는 페이지 관리 테이블에서의 페이지 유용성을 참조하여 "유효", "무효", 및 "공백"을 포함한 임의의 3개의 상태가 된다.
1. 컨트롤러(10)는, 페이지 FIFO 관리 테이블에 기록된 물리 어드레스에서 페이지 관리 테이블을 검색함으로써, 제4 메모리 영역(14) 내의 모든 블록에 대하여 각각의 블록에 기억된 유효 데이터의 수를 계수한다(단계 ST1).
2. 컨트롤러(10)는 단계 ST1에서 계수된 유효 데이터의 수가 소정의 임계값 이상인 블록이 존재하는지를 판단한다. 예를 들면, 소정의 임계값은 블록 단위("큰 단위")의 한 영역에 기억될 수 있는 페이지 단위("작은 단위") 데이터의 총수 중 50%로 설정될 수 있다(단계 ST2).
유효 데이터의 수가 소정의 임계값 이상인 블록이 검출되면, 이 처리는 단계 ST3으로 진행한다. 블록이 검출되지 않으면, 이 처리는 단계 ST4로 진행한다.
3. 컨트롤러(10)는 유효 데이터의 수가 소정의 임계값 이상인 블록을 제2 메모리 영역(12)으로 이동시킨다(단계 ST3). 즉, 블록의 물리 어드레스에 대하여, 컨트롤러(10)는 페이지 FIFO 관리 테이블의 엔트리를 무효화하고 물리 블록 관리 테이블의 엔트리를 "제2 메모리 영역(사용)"이 되도록 갱신한다.
제4 메모리 영역(14)으로부터 제2 메모리 영역(12)으로의 데이터 전송에서, 컨트롤러는 데이터를 판독/기입하도록 비휘발성 반도체 메모리(22)에 지시하지 않고서 페이지 FIFO 관리 테이블 및 물리 블록 관리 테이블만을 갱신한다(이동 처리 ).
4. 컨트롤러(10)는 제4 메모리 영역(14)에서 할당 순서가 가장 오래된 블록으로부터 순서대로 유효 데이터를 순차 선택한다. 선택된 유효 데이터는 소거된 미사용 블록(콤팩션 블록)에 복사한다. 컨트롤러(10)는 유효 데이터가 채워진 콤팩션 블록을 제2 메모리 영역(12)에 할당한다(단계 ST4).
5. 컨트롤러(10)는 복사된 데이터와 동일한 논리 어드레스를 갖는 데이터를 제4 메모리 영역(14)에서 무효화한다. 블록 내의 모든 데이터가 무효 데이터가 되면, 컨트롤러(10)는 블록을 해제하고 물리 블록 관리 테이블에서 블록의 상태를 "사용" 상태로부터 "미사용" 상태로 설정한다(단계 ST5).
페이지 추가용 물리 블록에 미사용 페이지가 존재하지 않으면, 컨트롤러(10)는 물리 블록 관리 테이블을 검색하여 미사용 블록을 얻는다. 미사용 블록 내의 데이터를 소거한 후, 이 블록은 페이지 추가용 물리 블록에 새로 할당된다. 컨트롤러(10)는 페이지 관리 테이블에서 미사용 엔트리를 검색한다. 페이지 추가용 물리 블록에 대응하는 물리 어드레스는 미사용 엔트리에 기록된다.
제4 메모리 영역(14)으로부터의 블록의 이동에 따라, 페이지 단위로 관리되는 블록의 수는 제2 메모리 영역(12)에서 증가된다. 제2 메모리 영역(12) 내의 블록의 수가 허용된 범위, 즉 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수이면, 컨트롤러(10)는 다음의 순서에 의해 제2 메모리 영역(12)으로부터 제3 메모리 영역(13)으로의 데이터 전송 처리 또는 콤팩션을 실행한다.
또한, 제1 실시예와 달리, 처리 P1은 제3 메모리 영역(13)으로의 데이터 전 송 처리(디프래그먼테이션)를 포함하지 않는다. 이것은 제4 메모리 영역(14)으로부터 제2 메모리 영역(12)으로의 데이터 전송 처리를 단순화한다.
C. 처리예
도 41은 처리예의 플로차트를 나타낸다. 도 42 내지 도 46은 도 41의 처리를 실행하는 동안 제2 메모리 영역(12)에서의 블록의 상태를 나타낸다. 도 42 내지 도 46에 예시된 바와 같이, 제2 메모리 영역(12)에서의 블록의 할당 순서는 컨트롤러(10)에 의해 관리된다.
각각의 블록은 복수의 페이지로 구성된다. 각각의 페이지는 페이지 관리 테이블에서의 페이지 유용성을 참조하여 "유효", "무효", 및 "공백"을 포함한 임의의 3개의 상태가 된다.
1. 위의 처리 P1에 따라, 컨트롤러(10)는 제4 메모리 영역(14)으로부터 제2 메모리 영역(12)으로 데이터를 전송한다(단계 ST1).
2. 컨트롤러(10)는 제2 메모리 영역(12) 내의 블록의 수가 허용된 범위를 초과하는지를 판단한다(단계 ST2). 허용된 범위는 제2 메모리 영역(12)의 용량으로 정해진 소정의 블록 수일 수 있다.
블록의 수가 허용된 범위를 초과하지 않으면, 이 처리는 완료된다. 블록의 수가 허용된 범위를 초과하면 이 처리는 단계 ST3으로 진행한다.
3. 컨트롤러(10)는 페이지 관리 테이블을 참조하여 블록의 특정 범위에 기억된 유효 데이터의 수(엔트리의 수)를 계수하고 특정 범위에 기억된 유효 데이터의 총수가 소정의 임계값보다도 큰지를 판단한다(단계 ST3).
특정 범위는, 예를 들면, 제2 메모리 영역(12)에 2개의 인접 블록을 포함한다. "인접 블록"은 할당 순서가 연속적인 블록을 의미한다. 도 42의 "윈도"는 블록의 특정 범위를 나타낸다. "윈도"의 개시 위치는 할당 순서가 가장 오래된 블록을 포함하도록 설정된다.
단계 ST3에서의 소정의 임계값은 특정 범위에 포함된 블록의 절반에 기억될 수 있는 페이지 단위 데이터의 수일 수 있다. 도 42는 특정 범위에 포함된 2개의 블록을 나타내며, 소정의 수는 2개의 블록의 절반인 하나의 블록에 기억될 수 있는 페이지 단위 데이터의 수로 설정된다.
유효 데이터의 수가 소정의 임계값보다도 크면, 이 처리는 단계 ST4로 진행한다. 유효 데이터의 수가 소정의 임계값 이하이면, 이 처리는 단계 ST7로 진행하고 컨트롤러(10)는 현재의 "윈도"에 대하여 디프래그먼테이션 및 콤팩션(도 43 및 도 44)을 실행한다.
4. 컨트롤러(10)는 "윈도"를 가장 오래된 측으로부터 더 새로운 측으로 시프트한다(단계 ST4). 구체적으로, 컨트롤러(10)는 제2 메모리 영역(12)에서 할당 순서가 가장 오래된 블록 측으로부터 할당 순서가 가장 새로운 블록으로 하나씩 "윈도"를 시프트한다.
5. 컨트롤러(10)는 "윈도"가 제2 메모리 영역(12)에서 할당 순서가 가장 새로운 블록을 초과했는지를 판단한다(단계 ST5). "윈도"가 할당 순서가 가장 새로운 블록을 초과했으면, 이 처리는 단계 ST6으로 진행한다. "윈도"가 할당 순서가 가장 새로운 블록을 초과하지 않았으면, 이 처리는 단계 ST3으로 복귀한다.
6. 컨트롤러(10)는 할당 순서가 가장 오래된 블록 내의 모든 유효 데이터를 선택하고 선택된 유효 데이터를 블록 단위와 동일한 "큰 단위"의 데이터로서 제3 메모리 영역(13)으로 전송한다(디프래그먼테이션)(단계 ST6). 단계 ST6은 컨트롤러(10)가 제2 메모리 영역(12)에서 콤팩션의 타깃을 검출할 수 없다.
도 45에 도시된 바와 같이, 할당 순서가 가장 오래된 블록에 기억된 유효 데이터의 논리 어드레스를 블록 단위("큰 단위")의 사이즈로 정렬시켜 계산되는, 논리 어드레스 범위에 포함된 유효 데이터는 제1, 제2, 제3, 및 제4 메모리 영역(11, 12, 13, 14)으로부터 수집된다.
컨트롤러(10)는 블록 단위 데이터를 제3 메모리 영역(13)에 기입하도록 비휘발성 반도체 메모리(22)에 지시한다. 블록 단위 데이터를 기입한 후, 컨트롤러(10)는 할당 순서가 가장 오래된 블록을 해제하고, 이 처리는 단계 ST2로 복귀한다. "윈도"의 위치는 개시 위치로 재설정된다.
7. 컨트롤러(10)는 물리 블록 관리 테이블을 검색하여 미사용 블록(콤팩션 블록)을 얻는다(단계 ST7). 미사용 블록은 콤팩션을 위해 제공되고 단계 ST7에서 요구되는 미사용 블록의 수는 특정 범위에 포함된 블록의 절반이다. 도 44에서, 하나의 미사용 블록이 콤팩션을 위해 제공된다. 컨트롤러(10)는 미사용 블록 내의 데이터를 소거하도록 비휘발성 반도체 메모리(22)에 지시한다.
8. 컨트롤러(10)는 "윈도"에 기억된 유효 데이터를 순차 선택한다(단계 ST8). "윈도"에 기억된 모든 유효 데이터가 처리되었으면, "윈도"보다 더 새로운 측에 위치하는 블록에 기억된 유효 데이터가 할당 순서로부터 순서대로 더 선택된 다.
9. 컨트롤러(10)는 선택된 유효 데이터의 논리 어드레스를 블록 단위("큰 단위")의 사이즈로 정렬시켜 계산되는, 논리 어드레스 범위에 포함된 유효 데이터의 총수가 제2 및 제4 메모리 영역(12, 14)에서 소정의 임계값 이상인지를 판단한다(단계 ST9). 단계 ST9에서의 소정의 임계값은 블록 단위("큰 단위")의 한 영역에 기억될 수 있는 페이지 단위("작은 단위") 데이터의 총수의 50%로 설정될 수 있다.
유효 데이터의 총수가 소정의 임계값 미만이면, 이 처리는 단계 ST10으로 진행한다. 유효 데이터의 총수가 소정의 임계값 이상이면, 이 처리는 단계 ST11로 진행한다.
10. 컨트롤러(10)는 도 44에 도시된 바와 같이 선택된 유효 데이터를 콤팩션 블록에 복사(재기입)한다(단계 ST10). 복사된 유효 데이터의 논리 어드레스는 페이지 관리 테이블에서 콤팩션 블록과 연관된 엔트리 상에 새로 기록된다. 제2 메모리 영역(12)에 할당된 블록과 연관된 엔트리 상에 원래 기록된 복사된 유효 데이터의 논리 어드레스는 페이지 관리 테이블에서 무효 상태로 설정된다.
11. 컨트롤러(10)는, 도 43에 도시된 바와 같이, 블록 단위("큰 단위")의 사이즈로 정렬된 논리 어드레스 범위에 포함된 유효 데이터를 제1, 제2, 제3, 및 제4 메모리 영역(11, 12, 13, 14)으로부터 수집하고, 선택된 유효 데이터를 블록 단위와 동일한 "큰 단위"의 데이터로서 제3 메모리 영역(13)으로 전송한다(디프래그먼테이션)(단계 ST11).
12. 컨트롤러(10)는 모든 데이터가 단계 ST10에서의 콤팩션 또는 단계 ST11 에서의 디프래그먼테이션에 따라 무효로 되는 블록을 해제한다(단계 ST12). 컨트롤러(10)는, 도 46에 도시된 바와 같이, 물리 블록 관리 테이블에서 블록의 상태를 "사용" 상태로부터 "미사용" 상태로 설정한다.
13. 컨트롤러(10)는 콤팩션 블록이 페이지 단위의 유효 데이터로 채워지는지를 판단한다(단계 ST13). 콤팩션 블록이 유효 데이터로 채워지지 않으면, 이 처리는 단계 ST8로 복귀한다. 콤팩션 블록이 유효 데이터로 채워지면, 이 처리는 단계 ST14로 진행한다.
그렇지만, 모든 유효 데이터가 단계 ST8에서 선택될지라도 콤팩션 블록이 유효 데이터로 채워질 수 없는 경우에, 이 처리는 단계 ST14로 진행한다. 이 경우에, 미사용 페이지를 갖는 콤팩션 블록은 제2 메모리 영역(12)에 할당될 수 있다.
14. 컨트롤러(10)는, 도 44에 도시된 바와 같이, 제2 메모리 영역(12)에서 "윈도"의 직전에 콤팩션 블록을 삽입한다. 즉, 콤팩션 블록은 "윈도"보다 더 오래된 측 상에 삽입되므로, 제2 메모리 영역(12)에 새로 할당된 블록은 다시 콤팩션의 타깃이 되는 것이 방지된다.
페이지 관리 테이블 및 물리 블록 관리 테이블을 갱신한 후, 이 처리는 단계 ST2로 복귀한다. 이 처리가 단계 ST2로 복귀하고 새로운 콤팩션 처리가 트리거링되는 경우, "윈도"의 위치는 도 46에 도시된 바와 같이 현재의 위치에 유지된다.
본 처리예에서, 컨트롤러(10)는 콤팩션이 특정 범위("윈도")에 대해서만 적용되는지를 판단하므로, 콤팩션의 타깃을 검출하는 검색 처리는 단순화될 수 있으며 구현 비용 및 검증 비용은 감소될 수 있다.
특정 범위에 포함된 블록의 수는 2개로 제한되지 않는다. 컨트롤러(10)는 특정 범위로서 3개 이상의 블록을 정할 수 있다. 컨트롤러(10)는 특정 범위에 포함된 블록의 수로부터 하나만큼 감소된 블록에 기억될 수 있는 페이지 단위 데이터의 수보다도 큰지를 판단할 수 있다.
3. 응용예
이러한 실시예들에 따른 반도체 기억 장치는 노트북 컴퓨터와 같은 퍼스널 컴퓨터용의 2차 기억 장치로서 사용되는 SSD(Solid State Drive)에 적용될 수 있다. 이 경우에서의 구체예를 아래에서 설명한다.
5. 결론
제1, 제2, 및 제3 실시예에 따른 반도체 기억 장치는 갱신 주파수가 낮은 데이터를 콤팩션 처리시키므로, 비휘발성 반도체 메모리에서의 블록의 소거 횟수를 감소시킨다. 또한, 반도체 기억 장치는 단락 I.에서 설명한 바와 같이 2개의 데이터 관리 단위, 즉 "큰 단위" 및 "작은 단위"를 사용하므로, 기입 효율의 향상을 실현한다.
본 발명은 상술한 실시예들로 제한되지 않으며, 그 구성요소들은 본 발명의 사상 및 범위를 벗어나지 않고서 변형 및 구체화될 수 있다. 또한, 상술한 실시예들에서 개시된 복수의 구성요소의 적절한 조합은 다양한 본 발명을 형성할 수 있다. 예를 들면, 몇 개의 구성요소는 이러한 실시예들에서 개시된 모든 구성요소로부터 생략될 수 있다. 더욱이, 상이한 실시예 상의 구성요소들이 서로 적절하게 조합될 수 있다.
[III. 데이터 관리 단위와 판독/기입/소거 단위 간의 관계]
1. 개요
위의 설명에서, 단락 I. 및 단락 II.에 따른 반도체 기억 장치를 각각 설명한다. 본 단락에서는, 위의 설명에서 사용된 제1, 제2, 및 제3 단위와 "작은 단위" 및 "큰 단위"를 구체적으로 설명한다.
제1 단위는 제1 메모리 영역(11)을 포함하는 휘발성 또는 비휘발성 반도체 메모리에 대하여 데이터 입력 및/또는 출력 단위로서 특정된다. 제1 메모리 영역(11)은 제1 단위 이하로 데이터의 판독/기입을 행한다. 예를 들면, 제1 단위는 섹터 단위일 수 있다. 퍼스널 컴퓨터와 같은 호스트 기기는 섹터 단위로 반도체 기억 장치에의 액세스를 실행한다.
제2 단위는 제2, 제3, 제4, 및 제5 메모리 영역(11, 12, 13, 14, 15)을 포함하는 비휘발성 반도체 메모리에서의 최소 데이터 판독 및/또는 기입 단위로서 특정된다.
제3 단위는 제2, 제3, 제4, 및 제5 메모리 영역(11, 12, 13, 14, 15)을 포함하는 비휘발성 반도체 메모리에서의 최소 데이터 소거 단위로서 특정된다.
제2, 제3, 제4, 및 제5 메모리 영역(11, 12, 13, 14, 15)이 NAND형 플래시 메모리로 구성되면, 제2 단위는 페이지 단위일 수 있으며, 제3 단위는 블록 단위일 수 있다.
제2 및 제3 단위는 비휘발성 반도체 메모리로 구성된 제2, 제3, 제4, 및 제5 메모리 영역(12, 13, 14, 15)에 대하여 데이터 판독/기입/소거 단위로서 물리적으 로 특정된다.
한편, 반도체 기억 장치에서의 데이터 관리 단위("작은 단위" 및 "큰 단위")는 비휘발성 반도체 메모리에서의 물리적 판독/기입/소거 단위에 대응할 수 있거나, 또는 이와 상이할 수 있다.
다음의 실시예에서, 제2 및 제4 메모리 영역(12, 14)에 대한 데이터 관리 단위인 "작은 단위"는 클러스터 단위이다. 클러스터 단위의 사이즈는 섹터 단위의 사이즈의 자연수배이며, 페이지 단위의 사이즈는 클러스터 단위의 사이즈의 2배 이상의 자연수배이다. 클러스터 단위의 사이즈는 호스트 기기의 파일 시스템에 사용되는 파일 관리 단위의 사이즈와 동일할 수 있다.
2. 실시예
본 발명의 실시예를 설명한다.
도 47은 본 발명의 실시예에 따른 반도체 기억 장치를 나타낸다.
제1 메모리 영역(11)은 호스트 기기로부터 데이터를 일시적으로 기억시킨다. 데이터는 섹터 단위(제1 단위) 이하로 제1 메모리 영역(11)에 기입된다. 제1 메모리 영역(11)은 DRAM과 같은 휘발성 반도체 메모리로 구성된다.
제2 메모리 영역(12)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성된다. 비휘발성 반도체 메모리(22)에서, 판독/기입이 한번에 실행되는 단위는 페이지(제2 단위)이며 소거가 한번에 실행되는 단위는 블록(제3 단위)이다. 블록 단위의 사이즈는 페이지 단위의 사이즈의 자연수배이다. 제2 메모리 영역(12)은 클러스터 단위와 동일한 "작은 단위"로 데이터를 기억시킨다.
제3 메모리 영역(13)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성되고 블록 단위와 동일한 "큰 단위"로 데이터를 기억시킨다.
제4 메모리 영역(14)은 비휘발성 반도체 메모리(22) 내의 블록으로 구성되고 클러스터 단위와 동일한 "작은 단위"로 데이터를 기억시킨다.
제1 메모리 영역(11)의 기억 용량은 비휘발성 반도체 메모리(22) 내의 한 블록 단위의 사이즈보다도 큰 것으로 가정하고, 비휘발성 반도체 메모리(22)의 기억 용량은 반도체 기억 장치(예를 들면, SSD)의 제품 명세로서 제공되는 기억 용량보다도 큰 것으로 가정한다.
비휘발성 반도체 메모리(22)의 기억 용량은 다음과 같이 제2, 제3 및 제4 메모리 영역(12, 13, 14)에 할당된다.
반도체 기억 장치의 제품 명세로서 제공되는 기억 용량과 동일하거나 이보다도 큰 기억 용량은 제3 메모리 영역(13)에 할당된다.
제3 메모리 영역(13)의 기억 용량을 비휘발성 반도체 메모리(22)의 기억 용량에서 감산함으로써 남아있는 기억 용량은 제2 및 제4 메모리 영역(12, 14)에 할당된다. 제2 및 제4 메모리 영역(12, 14)의 각 기억 용량 및 이들 간의 레이트는 제한되지 않는다.
컨트롤러(10)는 CPU 및 주 메모리를 가지며, 데이터 관리를 실행하는 프로그램을 동작시킬 수 있다. 본 실시예에서, 컨트롤러(10)에 의해 실현되는 기능들은 임의의 하드웨어와 소프트웨어 또는 이들의 조합으로서 구현될 수 있다. 이들 기능이 하드웨어 또는 소프트웨어로서 구현되는지는 실제의 실시예 또는 전체 시스템 에 부과된 설계 제약에 좌우된다.
컨트롤러(10)의 주 메모리가 DRAM과 같은 휘발성 반도체 메모리로 구성되는 경우, 제1 메모리 영역(11)은 컨트롤러(10)의 주 메모리로 구성될 수 있다.
컨트롤러(10)는, 호스트 기기로부터의 논리 어드레스에 의해 액세스되는 데이터가 제1, 제2, 제3, 및 제4 메모리 영역(11, 12, 13, 14)에서 어디에 기억되는지를 관리하기 위해서, 캐시 관리 테이블, 클러스터 관리 테이블, 블록 관리 테이블, 클러스터 FIFO 관리 테이블, 및 물리 블록 관리 테이블을 포함한다. 이들 관리 테이블은 반도체 기억 장치의 동작중에 컨트롤러(10)의 주 메모리 상에서 확장된다.
-- 캐시 관리 테이블 --
도 47의 캐시 관리 테이블은 페이지 단위와 동일한 "작은 단위"로 제1 메모리 영역(11)에 기억된 데이터를 제어한다. 유효 데이터의 제어는 섹터 단위로 실행된다.
캐시 관리 테이블의 구성은 단락 II.의 제1 실시예에서와 같이 도 21에 도시되어 있다. 그렇지만, 본 실시예에서, 제1 메모리 영역(11)에서 클러스터 단위의 한 영역에는 하나의 엔트리가 할당된다고 가정한다.
엔트리의 수는 제1 메모리 영역(11)에 포함될 수 있는 클러스터 단위 데이터의 수, 즉 (제1 메모리 영역(11)의 용량)/(클러스터 단위의 사이즈)보다도 크지 않은 것으로 가정한다.
클러스터 단위 데이터의 논리 어드레스, 제1 메모리 영역(11)의 물리 어드레 스, 및 클러스터 단위의 관련 영역 내의 유효 데이터의 위치를 나타내는 섹터 플래그는 각각의 엔트리와 연관된다.
-- 클러스터 관리 테이블 --
도 47의 클러스터 관리 테이블은 클러스터 단위와 동일한 "작은 단위"로 제2 및 제4 메모리 영역(12, 14)에 기억된 데이터를 제어한다. 클러스터 단위의 사이즈는 섹터 단위의 사이즈의 자연수배이며, 페이지 단위의 사이즈는 클러스터 단위의 사이즈의 2배 이상의 자연수배이다.
도 48은 클러스터 관리 테이블의 예를 나타낸다.
제2 및 제4 메모리 영역(12, 14)에서 하나의 블록에는 하나의 엔트리가 할당된다고 가정한다.
엔트리의 수는, 처리시 블록을 등록하기 위해서, 제2 및 제4 메모리 영역(12, 14)에 포함될 수 있는 블록의 수, 즉 [(제2 및 제4 메모리 영역(12, 14)의 총 용량/(블록 단위의 사이즈)]를 허용하는 수에 대한 허용이 제공되는 것으로 가정한다.
제2 메모리 영역(12) 또는 제4 메모리 영역(14)에 할당된 블록의 물리 어드레스는 각각의 엔트리와 연관되며, 블록 내의 클러스터 단위 데이터의 논리 어드레스는 각각의 엔트리에 기록된다.
도 48에서, 페이지 단위의 사이즈는 클러스터 단위의 사이즈의 2배인 것으로 가정한다. 페이지 유용성은 클러스터마다 "기입 가능" 상태(이 기억 영역은 비어있음)와 "기입 불가" 상태(이 기억 영역은 구 데이터가 한번 기입되고 새로운 데이 터가 또 다른 기억 영역에 기입되기 때문에 무효함)를 식별할 수 있도록 구성된다.
또한, 페이지 경계를 수행하지 않는 클러스터 단위 데이터가 제4 메모리 영역(14)에 기입되는 경우에, 동일한 페이지 내의 클러스터 단위 나머지 영역에 대응하는 클러스터 유용성은 "기입 불가" 상태로 설정된다. 클러스터 단위의 나머지 영역이 유효 데이터를 기억시키지 않지만, 데이터 기입 단위가 페이지 단위이고 비휘발성 반도체 메모리(22)가 나머지 영역을 사용할 수 없기 때문에, 컨트롤러(10)는 나머지 영역을 무효 데이터로서 처리한다.
-- 블록 관리 테이블 --
도 47의 블록 관리 테이블은 블록 단위와 동일한 "큰 단위"로 제3 메모리 영역(13)에 기억된 데이터를 제어한다. 블록 관리 테이블의 구성은 단락 II.의 제1 실시예에서와 같이 도 23에 도시되어 있다.
-- 클러스터 FIFO 관리 테이블 --
도 47의 클러스터 FIFO 관리 테이블은 제4 메모리 영역(14)에 할당된 블록 내의 데이터를 제어한다. 클러스터 FIFO 관리 테이블의 구성은 단락 II.의 제1 실시예에서와 같이 도 24에 도시되어 있다.
-- 물리 블록 관리 테이블 --
도 47의 물리 블록 관리 테이블은 비휘발성 반도체 메모리(22)에서의 블록의 취급을 제어한다. 물리 블록 관리 테이블의 구성은 단락 II.의 제1 실시예에서와 같이 도 25에 도시되어 있다.
도 47의 컨트롤러(10)에 의해 실행되는 처리 플로를 설명한다.
컨트롤러(10)는 호스트 기기로부터의 섹터 단위(제1 단위) 데이터를 제1 메모리 영역(11)에 기입하고 일정 기간동안 데이터를 기억시킨다. 이 데이터 기억 처리에 대하여, 단락 I.에서 설명한 "A. 제1 메모리 영역에서의 데이터 기억 처리"가 적용될 수 있다.
컨트롤러(10)는, 소정의 조건(단락 I.에서 설명한 "B. 제1 메모리 영역으로부터의 데이터 출력 처리"의 제1 조건과 실질적으로 동일할 수 있음)에 기초하여, 제1 메모리 영역(11)에 기억된 데이터가 "작은 단위"(제1 관리 단위)" 또는 "큰 단위(제2 관리 단위)" 중 어느 것으로 관리되어야 하는지를 판별한다.
"작은 단위"의 사이즈는 페이지 단위의 사이즈의 자연수배이거나 또는 페이지 단위의 사이즈는 "작은 단위"의 사이즈의 자연수배이다.
"큰 단위"의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배이며, 동시에, 블록 단위의 사이즈"의 사이즈의 자연수배이다.
본 실시예에서, 제2 및 제4 메모리 영역(12, 14)에서의 데이터 관리 단위인 "작은 단위"의 사이즈는 섹터 단위의 사이즈의 2배 이상의 자연수배이며, 페이지 단위의 사이즈는 "작은 단위"의 사이즈의 2배 이상의 자연수배이다. 이 관계를 만족시키는 "작은 단위"를 클러스터 단위라 한다. 설명을 단순화하기 위해서, 제3 메모리 영역(13)에서의 데이터 관리 단위인 "큰 단위"의 사이즈는 블록 단위의 사이즈와 동일하다.
이러한 단위 간의 관계는 다음의 예로 설정될 수 있다: 섹터 단위(제1 단위) < 클러스터 단위("작은 단위") < 페이지 단위(제2 단위) < 블록 단위(제3 단위) ≤ "큰 단위".
제1 메모리 영역(11)에 기억된 데이터가 "작은 단위"로 관리되면, 데이터는 제4 메모리 영역(14)으로 전송된다. 제1 메모리 영역(11)에 기억된 데이터가 "큰 단위"로 관리되면, 데이터는 제3 메모리 영역(13)으로 전송된다.
이 데이터 출력 처리는 단락 I.에서 설명한 "B. 제1 메모리 영역으로부터의 데이터 출력 처리"와 실질적으로 동일하다. 그렇지만, 단락 I.와는 달리, "작은 단위" 데이터의 목적지는 제4 메모리 영역(14)이다. 클러스터 단위의 사이즈가 페이지 단위의 사이즈보다도 작으면, 복수의 클러스터 단위 데이터가 관계되고 제4 메모리 영역(14)으로 전송될 수 있다.
A. 제4 메모리 영역에서의 FIFO 처리
이미 설명한 바와 같이, 제4 메모리 영역(14)은 블록 단위의 FIFO 구조를 갖는다. 도 49는 제4 메모리 영역(14)에서의 FIFO 처리를 나타낸다.
1. 컨트롤러(10)는 추가 방식으로 기입 데이터를 위해 준비된 블록(이하, 클러스터 추가용 물리 블록으로 칭함)에 대응하는 클러스터 관리 테이블의 엔트리를 참조한다. 컨트롤러(10)는 클러스터 단위와 동일한 "작은 단위"의 데이터로서 클러스터 추가용 물리 블록의 기입 가능 상태의 클러스터 단위의 영역에 제1 메모리 영역(11)으로부터 출력된 데이터를 기억시킨다(단계 ST1).
컨트롤러(10)는 캐시 관리 테이블을 검색하고 출력이 결정되는 클러스터 단위 데이터를 구성하는 모든 섹터 단위 데이터가 제1 메모리 영역(11)에 존재하는지를 판단한다.
모든 섹터 단위 데이터가 제1 메모리 영역(11)에서 완료되는 것이 아니면, 컨트롤러(10)는 제2, 제3, 및 제4 메모리 영역(12, 13, 14)으로부터 결여된 데이터를 수집한다.
페이지 단위 데이터를 구성하는 모든 섹터 단위 데이터를 완료 한 후, 컨트롤러(10)는 클러스터 단위 데이터를 기입하도록 비휘발성 반도체 메모리(22)에 지시한다. 단계 ST1에서의 기입 처리에서, 동일한 페이지에 기억될 수 있는 복수의 클러스터 단위 데이터가 함께 기입되는 것이 바람직하다.
2. 컨트롤러(10)는 클러스터 단위 데이터가 기입된 페이지에 대응하는 엔트리에 기록된 논리 어드레스를 클러스터 관리 테이블에서 갱신한다(단계 ST2). 제2 및 제4 메모리 영역(12, 14)에 기입된, 동일한 논리 어드레스 범위에 포함되는 구 데이터는 무효 데이터가 된다.
3. 컨트롤러(10)는 클러스터 추가용 물리 블록에 클러스터 단위의 미사용 페이지가 존재하는지를 판단한다(단계 ST3). 클러스터 단위의 미사용 페이지가 검출되지 않으면, 이 처리는 단계 ST4로 진행한다. 클러스터 단위의 미사용 페이지가 검출되면 이 처리는 단계 ST1로 복귀한다.
4. 컨트롤러(10)는 클러스터 FIFO 관리 테이블의 엔트리를 하나씩 후방으로 시프트하고, 클러스터 추가용 물리 블록의 물리 어드레스를 클러스터 FIFO 관리 테이블의 상단의 엔트리에 부가한다(단계 ST4). 결과적으로, 클러스터 추가용 물리 블록은 제4 메모리 영역(14)에 할당된다.
5. 컨트롤러(10)는 물리 어드레스가 클러스터 FIFO 관리 테이블에 기록되는 모든 블록에 대한 처리 P1을 제4 메모리 영역(14)에서 실행한다(단계 ST5).
처리 P1은 단락 II.에서 설명한 도 39의 "B. 처리 P1"과 실질적으로 동일할 수 있다. 그렇지만, 유효 데이터는 클러스터 단위로 관리된다.
3. 결론
반도체 기억 장치에서의 데이터 관리 단위("작은 단위" 및 "큰 단위")는 비휘발성 반도체 메모리에서의 물리적 판독/기입/소거 단위에 대응할 수 있거나, 또는 이와 상이할 수 있다.
반도체 기억 장치는 다음의 데이터 관리 단위를 채택할 수 있다. 2개의 데이터 관리 단위는 "큰 단위"의 사이즈가 "작은 단위"의 사이즈의 2배 이상의 자연수배인 관계를 만족시킨다.
(1) "작은 단위"의 사이즈는 페이지 단위의 사이즈와 동일하며, "큰 단위"의 사이즈는 블록 단위의 사이즈와 동일하다.
(2) "작은 단위"의 사이즈는 페이지 단위의 사이즈와 동일하며, "큰 단위"의 사이즈는 블록 단위보다도 작은 트랙 단위의 사이즈와 동일하다.
(3) "작은 단위"의 사이즈는 페이지 단위보다도 작은 클러스터 단위의 사이즈와 동일하며, "큰 단위"의 사이즈는 블록 단위의 사이즈와 동일하다.
(4) "작은 단위"의 사이즈는 페이지 단위보다도 작은 클러스터 단위의 사이즈와 동일하며, "큰 단위"의 사이즈는 블록 단위보다도 작은 트랙 단위의 사이즈와 동일하다.
물론, 반도체 기억 장치는, 예를 들면, 비휘발성 반도체 메모리의 명세(페이 지 단위의 사이즈, 또는 블록 단위의 사이즈), 또는 호스트 기기에서의 파일 관리 단위에 기초하여, 위의 실시예에서 설명한 어떠한 관계를 만족시키는 기타 다른 데이터 관리 단위를 채택할 수 있다.
[IV. 응용예]
위의 실시예에서 나타낸 반도체 기억 장치에 따른 응용예를 설명한다.
이러한 반도체 기억 장치들은, 예를 들면, 노트북 컴퓨터와 같은 퍼스널 컴퓨터용의 2차 기억 장치로서 사용되는 SSD에 적용된다.
도 50은 SSD의 구성예를 나타낸다.
SSD(100)는 데이터 기억용의 복수의 NAND형 플래시 메모리(NAND 메모리)(10), 데이터 캐시용 또는 작업 영역용 DRAM(101), 플래시 메모리(10) 및 DRAM(101) 제어용 드라이브 제어 회로(102), 및 전원 회로(103)를 포함한다.
위의 실시예의 제1 메모리 영역(11)은 DRAM(101)으로 구성될 수 있다. DRAM(101)로 구성된 제1 메모리 영역(11)은 NAND 메모리(10)용 기입 캐시로서 기능한다. 드라이브 제어 회로(102)는 위의 실시예에서 컨트롤러(10)를 포함할 수 있다.
드라이브 제어 회로(102)는 SSD(100)의 외부에 제공되는 상태 디스플레이 LED를 제어하는 제어 신호를 출력한다. FeRAM(Ferro electric Random Access Memory), MRAM(Magnetic Random Access Memory), 또는 NOR형 플래시 메모리는 DRAM(20) 대신에 사용될 수 있다. 즉, 제1 메모리 영역(11)은 NAND 메모리(10)보다도 기입 속도가 높은 불활성 랜덤 액세스 메모리로 구성될 수 있다.
SSD(100)는 직렬 ATA I/F와 같은 ATA 인터페이스(ATA I/F)를 통하여 퍼스널 컴퓨터와 같은 호스트 기기와 데이터를 송수신한다. SSD(100)는 RS232C 인터페이스(RS232C I/F)를 통한 디버그용 장치와 데이터 송수신한다.
전원 회로(104)는 외부 전원을 수신하고, 이 외부 전원을 사용하여 복수의 내부 전원을 발생시킨다. 이들 복수의 내부 전원은 SSD(100) 내의 각 부분에 공급된다. 전원 회로(103)는 외부 소스의 상승을 검출하고 파워 온 리셋 신호를 발생시킨다. 파워 온 리셋 신호는 드라이브 제어 회로(102)로 송신된다.
NAND 메모리(10)는 복수의 블록으로 구성된다. 각각의 블록은 데이터 소거의 최소 단위이다. 도 51은 NAND 메모리(10) 내의 한 블록의 구성예를 나타낸다.
각각의 블록은 X 방향을 따라 순차 정렬된 (m + 1)개의 NAND 스트링을 포함한다(m: 정수 ≥ 0). (m + 1)개의 NAND 스트링에 포함된 각각의 선택 트랜지스터(ST1)에서, 드레인은 비트 라인 BL0 내지 BLm에 접속되고, 게이트는 선택 게이트 라인 SGD에 공통 접속된다. 선택 트랜지스터(ST2)에서, 소스는 소스 라인 SL에 공통 접속되고, 게이트는 선택 게이트 라인 SGS에 공통 접속된다.
각 메모리 셀 트랜지스터(MT)는 반도체 기판 상에 형성된 적층형 게이트 구조를 갖는 MOSFET(Metal Oxide Semiconductor Field Effect Transistor)으로 구성된다. 적층형 게이트 구조는 게이트 절연막을 통하여 반도체 기판 상에 형성된 전하 축적층(부동 게이트 전극) 및 내부-게이트 절연막을 통하여 전하 축적층 상에 형성된 제어 게이트 전극을 포함한다. 메모리 셀 트랜지스터(MT)는 부동 게이트 전극에 주입되는 전극의 수에 따라 임계 전압이 변화되고 임계 전압의 차에 따라 데이터를 기억시킨다.
메모리 셀 트랜지스터(MT)는 1 비트(SLC: Single Level Cell) 또는 2이상의 비트(MLC: Multi Level Cell)를 기억시키도록 포함될 수 있다.
각각의 NAND 스트링에서, (n + 1)개의 메모리 셀 트랜지스터(MT)는 각각의 전류 경로가 직렬 접속되도록 선택 트랜지스터(ST1)의 소스와 선택 트랜지스터(ST2)의 드레인 사이에 배치된다. 즉, 복수의 메모리 셀 트랜지스터(MT)는 인접 메모리 셀 트랜지스터가 확산 영역(소스 영역 또는 드레인 영역)을 공유하도록 Y 방향으로 직렬 접속된다.
제어 게이트 전극은 드레인 측에 가장 인접한 메모리 셀 트랜지스터(MT)로부터 순서대로 워드 라인 WL0 내지 WLn에 각각 접속된다. 따라서, 워드 라인 WL0에 접속된 메모리 셀 트랜지스터(MT)의 드레인은 선택 트랜지스터(ST1)의 소스에 접속되고, 워드 라인 WLn에 접속된 메모리 셀 트랜지스터(MT)의 소스는 선택 트랜지스터(ST2)의 드레인에 접속된다.
워드 라인 WL0 내지 WLn은 제3 단위로 NAND 스트링 사이에 접속되어, 메모리 셀 트랜지스터(MT) 내의 제어 게이트 전극을 공유한다. 즉, 제3 단위로 동일한 라인 상에 있는 메모리 셀 트랜지스터(MT) 내의 제어 게이트 전극은 동일한 워드 라인 WL에 접속된다. 동일한 워드 라인 WL에 접속된 (m + 1)개의 메모리 셀 트랜지스터(MT)는 페이지로서 처리되고, 데이터 기입 및 데이터 판독은 페이지 단위로 행해진다.
비트 라인 BL0 내지 BLm은 제3 단위 사이에 접속되어, 선택 트랜지스터(ST1) 의 드레인을 공유한다. 즉, 복수의 제3 단위로 동일한 라인 상에 있는 NAND 스트링은 동일한 비트 라인 BL에 접속된다.
위의 실시예의 제2, 제3, 제4, 및 제5 메모리 영역은 NAND 메모리(메모리들)(10)로 구성될 수 있다. 메모리 영역 각각은 복수의 NAND 메모리(10) 상에서 구성될 수 있다. 다른 방법으로, 메모리 영역 각각은 개별의 NAND 메모리(10)로 구성될 수 있다. 더욱이, 각 NAND 메모리(10)는 상이한 성능을 가질 수 있다. 예를 들면, 제4 메모리 영역(14)은 SLC형 NAND 메모리로 구성될 수 있으며, 기타 다른 메모리 영역은 MLC형 NAND 메모리로 구성될 수 있다.
복수의 NAND 메모리(10)는 드라이브 제어 회로(102)에 병렬 접속된다. 병렬 접속된 NAND 메모리(10) 내의 복수 블록은 동시에 소거될 수 있으며 SSD(100)에서의 최소 소거 단위인 확장된 블록 단위를 형성할 수 있다. 병렬 접속된 NAND 메모리(10) 내의 복수 페이지는 동시에 기입 및 판독될 수 있으며 SSD(100)에서의 최소 기입 및 판독 단위인 확장된 페이지 단위를 형성할 수 있다.
부동 게이트 전극을 갖는 구조인 메모리 셀 트랜지스터(MT)는 MONOS(Metal Oxide Nitride Oxide Silicon) 타입과 같은 전하 축적층으로서의 질화막 인터페이스 상의 전자를 트래핑하여 임계값의 조정을 실현할 수 있는 구조를 가질 수 있다. 마찬가지로, MONOS 구조를 갖는 메모리 셀 트랜지스터(MT)는 1 비트 또는 2이상의 비트를 기억시키도록 포함될 수 있다.
도 52는 하나의 메모리 셀이 2 비트 데이터를 기억시키는 4-레벨 시스템에서의 임계 분포의 예를 나타낸다.
메모리 셀은 4-레벨 시스템에서 상위 페이지 데이터 "x" 및 하위 페이지 데이터 "y"로 정의된 4-레벨 데이터 "xy" 중 하나를 기억시킨다. 4-레벨 데이터는 "11", "01", "00" 및 "10"이다. 데이터 "11"(소거 상태)은 메모리 셀 트랜지스터(MT)의 임계 전압이 마이너스인 상태를 갖는다.
하위 페이지 데이터의 기입 동작에서, 데이터 "11"은 하위 페이지 데이터 "y"의 기입에 의해 데이터 "10"로 선택적으로 프로그래밍된다. 상위 페이지 데이터를 기입하기 전에, 데이터 "10"의 임계 분포는 데이터 "01" 및 데이터 "00"의 임계 분포 사이에 위치하고, 기입 페이지 데이터를 기입한 후에 얻어지는 임계 분포보다도 넓을 수 있다. 상위 페이지 데이터의 기입 동작에서, 상위 페이지 데이터 "x"의 기입에 의해서, 데이터 "11"은 데이터 "01"로 선택적으로 프로그래밍되고, 데이터 "10"은 데이터 "00"으로 선택적으로 프로그래밍된다.
메모리 셀 트랜지스터(MT)의 임계 분포는 다중-레벨 데이터 저장 시스템이 적용되는 경우에 미세 제어되는 것이 요구된다. 임계 분포는 메모리 셀 트랜지스터(MT)의 열화에 영향이 미친다. 따라서, 반도체 기억 장치에서의 비휘발성 반도체 메모리가 다중-레벨 데이터 저장 시스템을 채택하는 경우, 기입 효율의 향상과 소거 횟수의 감소는 본질적으로 효과적이다.
또한, 도 52에 도시된 바와 같이, 하위 페이지 데이터만이 기입되는 상태에서의 임계 분포가 상위 페이지 데이터가 기입되는 상태에서의 기입 분포와 다르면, 앞서 기입된 하위 페이지 데이터는 상위 페이지 프로그래밍을 실행하는 경우에 전력 공급 차단으로 인해 상실될 수 있다.
이러한 문제에 대하여, "작은 단위" 데이터가 추가 방식으로 기입되는 제4 메모리 영역(14)은 의사-SLC 블록으로 구성될 수 있다. 의사-SLC 블록은 하위 페이지만이 데이터 기입에 사용되는 블록이다. 이 구성은 하위 페이지 데이터의 상실을 방지한다. 또한, 하위 페이지 프로그래밍은 미세 제어를 요하지 않으므로, 기입 속도는 향상된다.
제4 메모리 영역(14)이 의사-SLC 블록으로 구성되면, 의사-SLC 블록과 정상 블록(MLC 블록)은 제2 메모리 영역(12)에서 서로 섞인다. 의사-SLC 블록의 기억 용량은 MLC 블록의 기억 용량의 절반이다. 따라서, 제2 메모리 영역(12)에서의 콤팩션 처리에서, 의사-SLC 블록에서의 유효 데이터는 MLC 블록에 복사된다.
도 53은 드라이브 제어 회로의 구성예를 나타낸다.
드라이브 제어 회로(102)는 데이터 액세스용 버스(104), 제1 회로 제어 버스(105), 및 제2 회로 제어 버스(106)를 포함한다.
전체의 드라이브 제어 회로(102)를 제어하는 프로세서(107)는 제1 회로 제어 버스(105)에 접속된다. 변형적으로, 각 제어 프로그램(FW: 펌웨어)에 부트 프로그램을 기억시키는 부트 ROM(108)은 ROM 컨트롤러(109)를 통하여 제1 회로 제어 버스(105)에 접속된다. 또한, 파워 온 리셋 신호를 전원 회로(103)로부터 수신하고 리셋 신호 및 클록 신호를 각 섹션에 공급하는 클록 컨트롤러(110)는 제1 회로 제어 버스(105)에 접속된다.
제2 제어 회로 버스(106)는 제1 회로 제어 버스(105)에 접속된다. 상태 디스플레이 신호를 상태 디스플레이 LED에 공급하는 병렬 IO(PIO) 회로(111) 및 RS232C 인터페이스를 제어하는 직렬 IO(SIO) 회로(112)는 제2 제어 회로 버스(106)에 접속된다.
ATA 인터페이스 컨트롤러(ATA 컨트롤러)(113), 제1 ECC(Error Check and Correct) 회로(114), NAND 컨트롤러(115), 및 DRAM 컨트롤러(119)는 데이터 액세스 버스(104) 및 제1 회로 제어 버스(105) 모두에 접속된다. ATA 컨트롤러(113)는 ATA 인터페이스를 통하여 호스트 기기와 송수신한다. 데이터 작업 영역으로서 이용되는 SRAM(102)은 SRAM 컨트롤러(121)를 통하여 데이터 액세스 버스(104)에 접속된다.
NAND 컨트롤러(115)는 4개의 NAND 메모리(10)로 인터페이스 처리를 행하는 NAND I/F(118), 제2 ECC 회로(117), 및 NAND 메모리와 DRAM 간의 액세스를 제어하는 DMA 전송 제어용 DMA 컨트롤러(116)를 포함한다.
도 54는 처리의 구성예를 나타낸다.
프로세서(107)는 데이터 제어부(122), ATA 커맨드 처리부(123), 시큐리티 제어부(124), 부트 로더(125), 초기화 제어부(126), 및 디버그 서포트부(127)를 포함한다.
데이터 제어부(122)는 NAND 메모리와 DRAM 간의 데이터 전송 및 NAND 컨트롤러(115)와 제1 ECC 회로(114)를 통한 NAND 칩에 대한 다양한 기능들을 제어한다.
ATA 커맨드 처리부(123)는 ATA 컨트롤러(113) 및 DRAM 컨트롤러(119)를 통하여 데이터 제어부(122)와 협동하여 데이터 전송 처리를 행한다. 시큐리티 제어부(124)는 데이터 제어부(122) 및 ATA 커맨드 처리부(123)와 협동하여 다양한 시큐 리티 정보를 제어한다. 부트 로더(125)는 파워-온 시 NAND 메모리(10)로부터 SRAM(120)으로 각 제어 프로그램(FW)을 로딩한다.
초기화 제어부(126)는 드라이브 제어 회로(102)에서 각 컨트롤러 및 회로를 초기화한다. 디버그 서포트부(127)는 RS232C 인터페이스를 통하여 외부로부터 공급되는 디버그용 데이터를 처리한다.
도 55는 SSD가 장착된 휴대용 컴퓨터의 예를 나타낸다.
휴대용 컴퓨터(200)는 주 본체(201)와 디스플레이부(202)를 포함한다. 디스플레이부(202)는 디스플레이 하우징(203) 및 이 디스플레이 하우징(203)에 수용된 디스플레이 장치(204)를 포함한다.
주 본체(201)는 섀시(205), 키보드(206), 및 포인팅 장치로서의 터치 패드(207)를 포함한다. 섀시(205)는 주 회로 보드, ODD부(Optical Disk Device), 카드 슬롯, 및 SSD(100)를 포함한다.
카드 슬롯은 섀시(205)의 주변 벽에 인접하도록 제공되다. 주변 벽은 카드 슬롯을 향하는 개구부(208)를 갖는다. 사용자는 개구부(208)를 통하여 섀시(205)의 외부로부터 카드 슬롯에 대하여 부가적인 장치를 삽입 및 제거할 수 있다.
SSD(100)는 휴대용 컴퓨터(200)에 장착되는 상태로 종래의 HDD 대시에 사용될 수 있거나 또는 휴대용 컴퓨터(200)의 카드 슬롯에 삽입되는 상태로 부가적인 장치로서 사용될 수 있다.
도 56은 SSD가 장착된 휴대용 컴퓨터의 시스템의 예를 나타낸다.
휴대용 컴퓨터(200)는 CPU(301), 노스 브리지(302), 주 메모리(303), 비디오 컨트롤러(304), 오디오 컨트롤러(305), 사우스 브리지(309), BIOS-ROM(310), SSD(100), ODD부(310), 내장형 컨트롤러/키보드 컨트롤러(EC/KBC) IC(311), 및 네트워크 컨트롤러(312)로 구성된다.
CPU(301)는 휴대용 컴퓨터(200)의 동작을 제어하는 프로세서이며, SDD(100)로부터 주 메모리(303)로 로딩되는 운영 체제(OS)를 실행한다. ODD부(311)가 판독 처리 및 기입 처리 중 하나를 광학 디스크로 실행하는 경우, CPU(301)는 이들 처리를 실행한다.
CPU(301)는 BIOS-ROM(310)에 기억된 시스템 BIOS(Basic Input Output System)를 실행한다. 시스템 BIOS는 휴대용 컴퓨터(200)의 하드웨어를 제어하는 프로그램이다.
노스 브리지(302)는 CPU(301)의 로컬 버스를 사우스 브리지(309)에 접속하는 브리지 장치이다. 노스 브리지(302)는 주 메모리(303)에의 액세스를 제어하는 메모리 컨트롤러를 갖는다.
노스 브리지(302)는 AGP(Accelerated Graphics Port) 버스를 통하여 비디오 컨트롤러(304)와 오디오 컨트롤러(305) 간의 통신을 실행한다.
주 메모리(303)는 프로그램 또는 데이터를 일시적으로 저장하고, CPU(301)의 작업 영역으로서 기능하다. 주 메모리(303)는 예를 들면 DRAM으로 구성된다.
비디오 컨트롤러(304)는 휴대용 컴퓨터(200)의 디스플레이 모니터(LCD)(317)에 사용되는 디스플레이부를 제어하는 비디오 재생 컨트롤러이다.
오디오 컨트롤러(305)는 휴대용 컴퓨터(200)의 스피커(319)를 제어하는 오디 오 재생 컨트롤러이다.
사우스 브리지(309)는 LPC(Low Pin Count) 버스에 접속된 장치들을 제어하고, PCI(Peripheral Component Interconnect) 버스에 접속된 장치들을 제어한다. 사우스 브리지(309)는 ATA 인터페이스를 통하여 소프트웨어 및 데이터가 기억된 메모리 장치인 SSD(100)를 제어하다.
휴대용 컴퓨터(200)는 섹터 단위로 SSD(100)에의 액세스를 실행한다. 기입 커맨드, 판독 커맨드 및 플래시 커맨드는 ATA 인터페이스를 통하여 입력된다.
사우스 브리지(309)는 BIOS-ROM(310) 및 ODD부(310)를 제어하는 기능을 갖는다.
EC/KBC(311)는 전원을 제어하는 내장형 컨트롤러, 및 키보드(KB)(314)와 터치 패드(207)를 제어하는 키보드 컨트롤러가 통합된 하나의 칩 마이크로컴퓨터이다.
EC/KBC(311)는 사용자에 의한 파워 버튼의 동작에 기초하여 휴대용 컴퓨터(200)의 전원의 온/오프를 설정하는 기능을 갖는다. 네트워크 컨트롤러(312)는, 예를 들면, 인터넷 등의 네트워크에의 통신을 실행하는 통신 장치이다.
상술한 실시예들에서의 반도체 기억 장치가 SSD로서 포함되어 있지만, 이것은, 예를 들면, SDTM 카드가 대표적인 메모리 카드로서 구성될 수 있다. 반도체 기억 장치가 메모리 카드로서 구성되는 경우, 이것은 휴대용 컴퓨터에 뿐만 아니라 셀 폰, PDA(Personal Digital Assistant), 디지털 스틸 카메라, 및 디지털 비디오 카메라와 같은 다양한 전자 장치에 적용될 수 있다.
본 발명의 반도체 기억 장치는 SSD와 같은 퍼스널 컴퓨터 및 SDTM 카드와 같은 메모리 카드용의 2차 저장 장치에 효과적이다.
Claims (84)
- 반도체 기억 장치로서,상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2 및 제3 메모리 영역과,컨트롤러를 포함하고, 상기 컨트롤러는상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제2 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처리를 실행시키는 것인 반도체 기억 장치.
- 제1항에 있어서, 상기 제2 처리에서, 상기 컨트롤러는상기 제1 관리 단위의 데이터를 구성하며 상기 제1 메모리 영역에 기억되지 않은 데이터를 상기 제2 및 제3 메모리 영역 중 적어도 하나로부터 판독하고,상기 제1 메모리 영역에 기억된 데이터와 상기 제2 및 제3 메모리 영역 중 적어도 하나로부터 판독된 데이터를 상기 제1 관리 단위의 데이터로 병합하는 것인 반도체 기억 장치.
- 제1항에 있어서, 상기 제3 처리에서, 상기 컨트롤러는상기 제2 관리 단위의 데이터를 구성하며 상기 제1 메모리 영역에 기억되지 않은 데이터를 상기 제2 및 제3 메모리 영역 중 적어도 하나로부터 판독하고,상기 제1 메모리 영역에 기억된 데이터와 상기 제2 및 제3 메모리 영역 중 적어도 하나로부터 판독된 데이터를 상기 제2 관리 단위의 데이터로 병합하는 것인 반도체 기억 장치.
- 제1항에 있어서, 상기 컨트롤러는,상기 제2 메모리 영역으로부터 출력되는 상기 제1 관리 단위의 데이터를 선택하는 제4 처리와,상기 제2 관리 단위로 상기 선택된 데이터를 포함하는 데이터를 상기 제3 메모리 영역에 기억시키는 제5 처리를 실행시키는 것인 반도체 기억 장치.
- 제4항에 있어서, 상기 제5 처리에서, 상기 컨트롤러는상기 선택된 데이터의 논리 어드레스를 상기 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고,상기 제1, 제2 및 제3 메모리 영역 중 적어도 하나로부터 상기 논리 어드레스 범위에 포함된 데이터를 판독하며,상기 선택된 데이터와 상기 제1, 제2 및 제3 메모리 영역 중 적어도 하나로부터 판독된 데이터를 상기 제2 관리 단위의 데이터로 병합하는 것인 반도체 기억 장치.
- 제1항에 있어서,상기 제2 및 제3 메모리 영역은 동일한 비휘발성 반도체 메모리를 공유하고,상기 컨트롤러는 상기 제3 단위의 영역을 상기 제2 및 제3 메모리 영역에 각각 할당하는 것인 반도체 기억 장치.
- 제1항에 있어서, 상기 제1 처리에서, 상기 컨트롤러는상기 반도체 기억 장치에 입력되는 데이터의 논리 어드레스를 상기 제1 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고,상기 제1 메모리 영역 내의 상기 논리 어드레스 범위에 대응하는 상기 제1 관리 단위의 영역 내에 상기 제1 단위의 데이터를 기억시키는 것인 반도체 기억 장치.
- 제7항에 있어서, 상기 제1 처리에서, 상기 컨트롤러는상기 논리 어드레스 범위가 상기 제1 단위의 데이터를 상기 제1 메모리 영역에 기억시키는데 이용 가능한지를 판단하고,상기 논리 어드레스 범위가 이용 가능하지 않으면 상기 제2 및 제3 처리 중 적어도 하나를 실행시키는 것인 반도체 기억 장치.
- 제1항에 있어서, 상기 컨트롤러는상기 제1 메모리 영역으로부터 출력되는 데이터의 논리 어드레스를 상기 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고,상기 논리 어드레스 범위에 포함되고 상기 제1 메모리 영역에 기억되는 상기 제1 관리 단위의 데이터를 계수하고,상기 계수된 데이터의 합계가 미리 정해진 임계값 미만이면 상기 제2 처리를 실행시키며,상기 계수된 데이터의 합계가 상기 미리 정해진 임계값과 동일하거나 그 이상이면 상기 제3 처리를 실행시키는 것인 반도체 기억 장치.
- 제1항에 있어서, 상기 컨트롤러는상기 제1 메모리 영역으로부터 출력되는 데이터의 논리 어드레스를 상기 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고,상기 논리 어드레스 범위에 포함되고 상기 제1 및 제2 메모리 영역에 기억되 는 상기 제1 관리 단위의 데이터를 계수하고,상기 계수된 데이터의 합계가 미리 정해진 임계값 미만이면 상기 제2 처리를 실행시키며,상기 계수된 데이터의 합계가 상기 미리 정해진 임계값과 동일하거나 그 이상이면 상기 제3 처리를 실행시키는 것인 반도체 기억 장치.
- 제4항에 있어서, 상기 비휘발성 반도체 메모리는, 상기 제3 단위의 영역에 포함된 상기 제2 단위의 영역 내에 데이터를 재기입하기 전에 상기 제3 단위의 영역 내의 데이터를 소거할 필요가 있는 것인 반도체 기억 장치.
- 제11항에 있어서, 상기 제2 처리에서, 상기 컨트롤러는상기 제1 메모리 영역으로부터 출력되는 상기 제1 관리 단위의 새로운 데이터를 상기 제2 메모리 영역 내의 상기 제2 단위의 미사용 영역에 기입하고,상기 새로운 데이터(new data)의 논리 어드레스가 상기 제2 메모리 영역에 기억된 구 데이터(old data)의 논리 어드레스에 대응하면 상기 구 데이터를 무효로 설정하고,상기 새로운 데이터를 상기 구 데이터에 우선하는 유효 데이터로서 처리하며,상기 구 데이터를 상기 새로운 데이터를 참조함으로써 무시되는 무효 데이터로서 처리하는 것인 반도체 기억 장치.
- 제12항에 있어서, 상기 컨트롤러는, 상기 제2 메모리 영역에 기억된 복수의 유효 및 무효 데이터가 점유하는 상기 제3 단위의 영역의 합계가 허용 가능한 범위를 초과하면 제4 및 제5 처리를 실행시키는 것인 반도체 기억 장치.
- 제13항에 있어서, 상기 제4 처리에서, 상기 컨트롤러는상기 제2 메모리 영역에서 기입 순서가 가장 오래된 상기 제3 단위의 영역을 검출하고,상기 제3 단위의 검출된 영역에 기억된 상기 제1 관리 단위의 각 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제13항에 있어서, 상기 제4 처리에서, 상기 컨트롤러는유효 데이터의 논리 어드레스를 상기 제2 메모리 영역 내의 상기 제3 단위의 영역마다 상기 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고,상기 논리 어드레스 범위에 포함되고 상기 제2 메모리 영역에 기억된 상기 제1 관리 단위의 유효 데이터를 계수하고,상기 제2 메모리 영역 내의 상기 제3 단위의 영역마다 상기 계수된 유효 데이터의 수를 합계하고,상기 유효 데이터의 합계가 가장 큰 상기 제3 단위의 영역을 검출하며,상기 제3 단위의 검출된 영역에 기억된 상기 제1 관리 단위의 각 유효 데이 터를 선택하는 것인 반도체 기억 장치.
- 제13항에 있어서, 상기 제4 처리에서, 상기 컨트롤러는상기 제2 메모리 영역 내의 상기 제3 단위의 영역마다 상기 제1 관리 단위의 무효 데이터를 계수하고,상기 계수된 무효 데이터의 수가 가장 적은 상기 제3 단위의 영역을 검출하며,상기 제3 단위의 검출된 영역에 기억된 상기 제1 관리 단위의 각 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제12항에 있어서, 상기 컨트롤러는상기 제2 메모리 영역 내의 무효 데이터의 합계가 미리 정해진 임계값을 초과하는지를 판단하고,상기 제2 메모리 영역 내의 상기 제3 단위의 영역마다 상기 제1 관리 단위의 무효 데이터를 계수하고,상기 무효 데이터의 수가 가장 큰 것으로부터 순서대로 상기 제3 단위의 영역 내의 유효 데이터를 선택하고,선택된 유효 데이터를, 상기 제2 단위의 미사용 영역을 갖는, 상기 제3 단위의 제1 영역 내에 복사하고,상기 선택된 유효 데이터를 복사한 후에 상기 제2 메모리 영역에 상기 제1 영역을 할당하며,상기 제2 메모리 영역으로부터, 상기 제1 영역 내에 선택된 유효 데이터를 복사한 결과로서 유효 데이터를 갖지 않는, 상기 제3 단위의 제2 영역을 해제시키는 것인 반도체 기억 장치.
- 제11항에 있어서, 상기 제3 처리에서, 상기 컨트롤러는상기 제1 메모리 영역으로부터 출력되는 상기 제2 관리 단위의 새로운 데이터를 상기 제3 메모리 영역 내의 상기 제2 단위의 미사용 영역에 기입하고,상기 새로운 데이터의 논리 어드레스가 상기 제3 메모리 영역에 기억된 구 데이터의 논리 어드레스에 대응하면 상기 구 데이터를 무효로 설정하고,상기 새로운 데이터를 상기 구 데이터에 우선하는 유효 데이터로서 처리하며,상기 구 데이터를 상기 새로운 데이터를 참조함으로써 무시되는 무효 데이터로서 처리하는 것인 반도체 기억 장치.
- 제18항에 있어서, 상기 컨트롤러는상기 제3 메모리 영역 내의 무효 데이터의 합계가 미리 정해진 임계값을 초과하는지를 판단하고,상기 제3 메모리 영역 내의 상기 제3 단위의 영역마다 상기 제2 관리 단위의 무효 데이터를 계수하고,상기 무효 데이터의 수가 가장 큰 것으로부터 순서대로 상기 제3 단위의 영역 내의 유효 데이터를 선택하고,선택된 유효 데이터를 상기 제2 단위의 미사용 영역을 갖는, 상기 제3 단위의 제1 영역 내에 복사하고,상기 선택된 유효 데이터를 복사한 후에 상기 제3 메모리 영역에 상기 제1 영역을 할당하고,상기 제3 메모리 영역으로부터, 상기 제1 영역 내에 선택된 유효 데이터를 복사한 결과로서 유효 데이터를 갖지 않는, 상기 제3 단위의 제2 영역을 해제시키며,상기 제2 관리 단위는 상기 제3 단위 미만인 것인 반도체 기억 장치.
- 제1항에 있어서, 상기 제2 단위는 상기 제1 관리 단위의 2배 이상의 자연수배인 것인 반도체 기억 장치.
- 제1항에 있어서, 상기 제1 관리 단위는 상기 제2 단위의 2배 이상의 자연수배이며,상기 제3 단위는 상기 제1 관리 단위의 2배 이상의 자연수배인 것인 반도체 기억 장치.
- 제1항에 있어서, 상기 제3 단위는 상기 제2 관리 단위의 2배 이상의 자연수 배인 것인 반도체 기억 장치.
- 제1항에 있어서, 상기 제2 관리 단위는 상기 제3 단위의 2배 이상의 자연수배인 것인 반도체 기억 장치.
- 반도체 기억 장치로서,상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3 및 제4 메모리 영역과,컨트롤러를 포함하고, 상기 컨트롤러는상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처리와,상기 제4 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 제3 단위의 미사용 영역 내에 재기입하는 제5 처리를 실행시키는 것인 반도체 기억 장치.
- 제24항에 있어서, 상기 제2 처리에서, 상기 컨트롤러는상기 제1 메모리 영역으로부터 출력되는 상기 제1 관리 단위의 새로운 데이터를, 상기 제3 단위의 추가 영역에 포함되는, 상기 제2 단위의 미사용 영역에 기입하고,상기 새로운 데이터의 논리 어드레스가 상기 제2 및 제4 메모리 영역에 기억된 구 데이터의 논리 어드레스에 대응하면 상기 구 데이터를 무효로 설정하고,상기 새로운 데이터를 상기 구 데이터에 우선하는 유효 데이터로서 처리하고,상기 구 데이터를 상기 새로운 데이터를 참조함으로써 무시되는 무효 데이터로서 처리하며,상기 제2 단위의 미사용 영역이 새로운 데이터로 기입되면 상기 제3 단위의 추가 영역을 상기 제4 메모리 영역에 할당하는 것인 반도체 기억 장치.
- 제25항에 있어서, 상기 컨트롤러는상기 제4 메모리 영역 내의 할당 순서가 가장 오래된 상기 제3 단위의 영역에 기억된 상기 제1 관리 단위의 유효 데이터를 선택하고,상기 제2 관리 단위로 상기 선택된 유효 데이터를 포함하는 데이터를 상기 제3 메모리 영역에 기억시키는 제6 처리를 실행시키는 것인 반도체 기억 장치.
- 제26항에 있어서, 상기 제6 처리에서, 상기 컨트롤러는할당 순서가 가장 오래된 상기 제3 단위의 영역 내의 각 유효 데이터의 논리 어드레스를 상기 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고,상기 논리 어드레스 범위에 포함되며 상기 제4 메모리 영역에 기억되는 상기 제1 관리 단위의 유효 데이터를 계수하며,상기 계수된 유효 데이터의 합계가 미리 정해진 임계값 이상이면 상기 논리 어드레스 범위에 포함된 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제26항에 있어서, 상기 제6 처리에서, 상기 컨트롤러는할당 순서가 가장 오래된 상기 제3 단위의 영역 내의 각 유효 데이터의 논리 어드레스를 상기 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고,상기 논리 어드레스 범위에 포함되며 상기 제2 및 제4 메모리 영역에 기억되는 상기 제1 관리 단위의 유효 데이터를 계수하며,상기 계수된 유효 데이터의 합계가 미리 정해진 임계값 이상이면 상기 논리 어드레스 범위에 포함된 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제26항에 있어서, 상기 컨트롤러는, 상기 제4 메모리 영역 내의 복수의 유효 및 무효 데이터가 점유하는 상기 제3 단위의 영역의 합계가 허용된 범위를 초과하면 상기 제4 및 제6 처리 중 적어도 하나를 실행시키는 반도체 기억 장치.
- 제26항에 있어서, 상기 컨트롤러는상기 제2 메모리 영역으로부터 출력되는 상기 제1 관리 단위의 유효 데이터를 선택하고,상기 제2 관리 단위로 상기 선택된 유효 데이터를 포함하는 데이터를 상기 제3 메모리 영역에 기억시키는 제7 처리를 실행시키는 것인 반도체 기억 장치.
- 제30항에 있어서, 상기 컨트롤러는, 상기 제2 메모리 영역에 기억된 복수의 유효 및 무효 데이터가 점유하는 상기 제3 단위의 영역의 합계가 허용된 범위를 초과하면 상기 제5 및 제7 처리 중 적어도 하나를 실행시키는 것인 반도체 기억 장치.
- 제31항에 있어서, 상기 컨트롤러는상기 제2 메모리 영역 내의 유효 데이터의 합계가 상기 제2 메모리 영역에 기억시킬 수 있는 데이터의 합계와 동일하거나 그보다 작으면 제5 처리를 실행시키고,상기 제2 메모리 영역 내의 유효 데이터의 합계가 상기 제2 메모리 영역에 기억시킬 수 있는 데이터의 합계보다도 크면 제7 처리를 실행시키는 것인 반도체 기억 장치.
- 제31항에 있어서, 상기 컨트롤러는상기 제2 메모리 영역에서 유효 데이터의 수가 가장 적은 것으로부터 순서대로 상기 제3 단위의 제1 예정 수의 영역을 선택하고,상기 제1 예정 수의 영역 내의 유효 데이터의 합계가 상기 제3 단위의 제2 예정 수의 영역에 기억시킬 수 있는 데이터의 합계와 동일하면 제5 처리를 실행시키며,상기 제1 예정 수의 영역 내의 유효 데이터의 합계가 상기 제2 예정 수의 영역에 기억시킬 수 있는 데이터의 합계보다 크면 제7 처리를 실행시키고,상기 제2 예정 수는 상기 제1 예정 수보다 적은 것인 반도체 기억 장치.
- 제24항에 있어서, 상기 제5 처리에서, 상기 컨트롤러는, 상기 제2 메모리 영역에서 유효 데이터의 수가 가장 적은 것으로부터 순서대로 상기 제3 단위의 영역 내의 상기 제1 관리 단위의 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제30항에 있어서, 상기 제7 처리에서, 상기 컨트롤러는, 상기 제2 메모리 영역에서 유효 데이터의 수가 가장 큰 상기 제3 단위의 영역 내의 상기 제1 관리 단 위의 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 반도체 기억 장치로서,상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3, 제4 및 제5 메모리 영역과,컨트롤러를 포함하고, 상기 컨트롤러는상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제5 메모리 영역에 기억시키는 제3 처리와,상기 제4 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메 모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제5 처리와,상기 제5 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제3 메모리 영역으로 이동시키는 제6 처리와,상기 제3 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제3 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제7 처리를 실행시키는 것인 반도체 기억 장치.
- 제36항에 있어서, 상기 제2 처리에서, 상기 컨트롤러는상기 제1 메모리 영역으로부터 출력되는 상기 제1 관리 단위의 새로운 데이터를, 상기 제3 단위의 추가 영역에 포함되는, 상기 제2 단위의 미사용 영역에 기입하고,상기 새로운 데이터의 논리 어드레스가 상기 제2 및 제4 메모리 영역에 기억된 구 데이터의 논리 어드레스에 대응하면 상기 구 데이터를 무효로 설정하고,상기 새로운 데이터를 상기 구 데이터에 우선하는 유효 데이터로서 처리하고,상기 구 데이터를 상기 새로운 데이터를 참조함으로써 무시되는 무효 데이터로서 처리하며,상기 제2 단위의 미사용 영역이 새로운 데이터로 기입되면 상기 제3 단위의 추가 영역을 상기 제4 메모리 영역에 할당하는 것인 반도체 기억 장치.
- 제37항에 있어서, 상기 컨트롤러는상기 제4 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역에 기억된 상기 제1 관리 단위의 유효 데이터를 선택하고,상기 제2 관리 단위로 상기 선택된 유효 데이터를 포함하는 데이터를 상기 제3 메모리 영역에 기억시키는 제8 처리를 실행시키는 것인 반도체 기억 장치.
- 제38항에 있어서, 상기 제8 처리에서, 상기 컨트롤러는할당 순서가 가장 오래된 상기 제3 단위의 영역 내의 각 유효 데이터의 논리 어드레스를 상기 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고,상기 논리 어드레스 범위에 포함되며 상기 제4 메모리 영역에 기억되는 상기 제1 관리 단위의 유효 데이터를 계수하며,상기 계수된 유효 데이터의 합계가 미리 정해진 임계값 이상이면 상기 논리 어드레스 범위에 포함된 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제38항에 있어서, 상기 제8 처리에서, 상기 컨트롤러는할당 순서가 가장 오래된 상기 제3 단위의 영역 내의 각 유효 데이터의 논리 어드레스를 상기 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고,상기 논리 어드레스 범위에 포함되며 상기 제2 및 제4 메모리 영역에 기억되는 상기 제1 관리 단위의 유효 데이터를 계수하며,상기 계수된 유효 데이터의 합계가 미리 정해진 임계값 이상이면 상기 논리 어드레스 범위에 포함된 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제38항에 있어서, 상기 컨트롤러는, 상기 제4 메모리 영역 내의 복수의 유효 및 무효 데이터가 점유하는 상기 제3 단위의 영역의 합계가 허용된 범위를 초과하면 상기 제4 및 제8 처리 중 적어도 하나를 실행시키는 것인 반도체 기억 장치.
- 제38항에 있어서, 상기 컨트롤러는상기 제2 메모리 영역으로부터 출력되는 상기 제1 관리 단위의 유효 데이터를 선택하고,상기 제2 관리 단위로 상기 선택된 상기 제2 메모리 영역으로부터 출력되는 상기 제1 관리 단위의 유효 데이터를 포함하는 데이터를 상기 제5 메모리 영역에 기억시키는 제9 처리를 실행시키는 것인 반도체 기억 장치.
- 제42항에 있어서, 상기 컨트롤러는, 상기 제2 메모리 영역 내의 복수의 유효 및 무효 데이터가 점유하는 상기 제3 단위의 영역의 합계가 허용된 범위를 초과하면 상기 제5 및 제9 처리 중 적어도 하나를 실행시키는 것인 반도체 기억 장치.
- 제43항에 있어서, 상기 컨트롤러는상기 제2 메모리 영역 내의 유효 데이터의 합계가 상기 제2 메모리 영역에 기억시킬 수 있는 데이터의 합계와 동일하거나 그보다 작으면 제5 처리를 실행시키고,상기 제2 메모리 영역 내의 유효 데이터의 합계가 상기 제2 메모리 영역에 기억시킬 수 있는 데이터의 합계보다도 크면 제9 처리를 실행시키는 반도체 기억 장치.
- 제43항에 있어서, 상기 컨트롤러는상기 제2 메모리 영역에서 유효 데이터의 수가 가장 적은 것으로부터 순서대로 상기 제3 단위의 제1 예정 수의 영역을 선택하고,상기 제1 예정 수의 영역 내의 유효 데이터의 합계가 상기 제3 단위의 제2 예정 수의 영역에 기억시킬 수 있는 데이터의 합계와 동일하면 제5 처리를 실행시키며,상기 제1 예정 수의 영역 내의 유효 데이터의 합계가 상기 제2 예정 수의 영역에 기억시킬 수 있는 데이터의 합계보다 크면 제9 처리를 실행시키며,상기 제2 예정 수는 상기 제1 예정 수보다 적은 것인 반도체 기억 장치.
- 제36항에 있어서, 상기 제5 처리에서, 상기 컨트롤러는, 상기 제2 메모리 영역에서 유효 데이터의 수가 가장 적은 것으로부터 순서대로 상기 제3 단위의 영역에 기억된 상기 제1 관리 단위의 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제42항에 있어서, 상기 제9 처리에서, 상기 컨트롤러는, 상기 제2 메모리 영역에서 유효 데이터의 수가 가장 큰 상기 제3 단위의 영역 내의 상기 제1 관리 단 위의 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제36항에 있어서, 상기 제3 처리에서, 상기 컨트롤러는상기 제1 메모리 영역으로부터 출력되는 상기 제2 관리 단위의 새로운 데이터를, 상기 제3 단위의 추가 영역에 포함되는, 상기 제2 단위의 미사용 영역에 기입하고,상기 새로운 데이터의 논리 어드레스가 상기 제2 및 제4 메모리 영역에 기억된 구 데이터의 논리 어드레스에 대응하면 상기 구 데이터를 무효로 설정하고,상기 새로운 데이터를 상기 구 데이터에 우선하는 유효 데이터로서 처리하고,상기 구 데이터를 상기 새로운 데이터를 참조함으로써 무시되는 무효 데이터로서 처리하며,상기 제2 단위의 미사용 영역이 새로운 데이터로 기입되면 상기 제3 단위의 추가 영역을 상기 제5 메모리 영역에 할당하는 것인 반도체 기억 장치.
- 제48항에 있어서, 상기 컨트롤러는, 상기 제5 메모리 영역 내의 복수의 유효 및 무효 데이터가 점유하는 상기 제3 단위의 영역의 합계가 허용된 범위를 초과하면 상기 제6 처리를 실행시키는 것인 반도체 기억 장치.
- 제42항에 있어서, 상기 컨트롤러는, 상기 제3 메모리 영역 내의 복수의 유효 및 무효 데이터가 점유하는 상기 제3 단위의 영역의 합계가 허용된 범위를 초과하면 상기 제9 처리를 실행시키는 것인 반도체 기억 장치.
- 제42항에 있어서, 상기 제9 처리에서, 상기 컨트롤러는, 상기 제3 메모리 영역에서 유효 데이터의 수가 가장 적은 상기 제3 단위의 영역에 포함된 상기 제2 관리 단위의 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제36항에 있어서, 상기 제7 처리에서, 상기 컨트롤러는 상기 제5 메모리 영역에 기억된 상기 제2 관리 단위의 유효 데이터를 더 선택하는 것인 반도체 기억 장치.
- 제52항에 있어서, 상기 제7 처리에서, 상기 컨트롤러는상기 제3 메모리 영역에 기억된 유효 데이터의 합계가 상기 제3 단위의 한 영역에 기억시킬 수 있는 데이터의 합계 미만이면 상기 제5 메모리 영역에 기억된 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 반도체 기억 장치로서,상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3 및 제4 메모리 영역과,컨트롤러를 포함하고, 상기 컨트롤러는상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처리와,상기 제4 메모리 영역 내의 상기 제3 단위의 영역을 선택하고 선택된 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리와,상기 제4 메모리 영역 내의 데이터를 선택하고, 선택된 데이터를 상기 제2 단위의 미사용 영역을 갖는 상기 제3 단위의 영역에 복사하며, 상기 제3 단위의 영역을 상기 제2 메모리 영역에 할당하는 제5 처리와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제6 처리를 실행시키는 것인 반도체 기억 장치.
- 제54항에 있어서, 상기 제2 처리에서, 상기 컨트롤러는상기 제1 메모리 영역으로부터 출력되는 상기 제1 관리 단위의 새로운 데이터를, 상기 제3 단위의 추가 영역에 포함되는, 상기 제2 단위의 미사용 영역에 기입하고,상기 새로운 데이터의 논리 어드레스가 상기 제2 및 제4 메모리 영역에 기억된 구 데이터의 논리 어드레스에 대응하면 상기 구 데이터를 무효로 설정하고,상기 새로운 데이터를 상기 구 데이터에 우선하는 유효 데이터로서 처리하고,상기 구 데이터를 상기 새로운 데이터를 참조함으로써 무시되는 무효 데이터로서 처리하며,상기 제2 단위의 미사용 영역이 새로운 데이터로 기입되면 상기 제3 단위의 추가 영역을 상기 제4 메모리 영역에 할당하는 것인 반도체 기억 장치.
- 제55항에 있어서, 상기 컨트롤러는, 상기 제4 메모리 영역에 기억된 복수의 유효 및 무효 데이터가 점유하는 상기 제3 단위의 영역의 합계가 허용된 범위를 초과하면 상기 제4 및 제5 처리 중 적어도 하나를 실행시키는 것인 반도체 기억 장치.
- 제56항에 있어서, 상기 제4 처리에서, 상기 컨트롤러는유효 데이터의 합계가 미리 정해진 임계값과 동일하거나 그보다 큰 상기 제3 단위의 영역을 선택하고,상기 제3 단위의 선택된 영역을 상기 제4 메모리 영역으로부터의 상기 제2 메모리 영역에 할당하는 것인 반도체 기억 장치.
- 제57항에 있어서, 상기 제5 처리에서, 상기 컨트롤러는, 상기 제4 처리를 실행한 후에 할당 순서가 가장 오래된 상기 제3 단위의 영역으로부터 순서대로 상기 제4 메모리 영역 내의 유효 데이터를 순차적으로 선택하는 것인 반도체 기억 장치.
- 제55항에 있어서, 상기 컨트롤러는상기 제2 메모리 영역으로부터 출력되는 상기 제1 관리 단위의 유효 데이터를 선택하고,상기 제2 관리 단위로 상기 선택된 유효 데이터를 포함하는 데이터를 상기 제3 메모리 영역에 기억시키는 제7 처리를 실행시키는 것인 반도체 기억 장치.
- 제59항에 있어서, 상기 컨트롤러는, 상기 제2 메모리 영역에 기억된 복수의 유효 및 무효 데이터가 점유하는 상기 제3 단위의 영역의 합계가 허용된 범위를 초과하면 상기 제6 및 제7 처리 중 적어도 하나를 실행시키는 것인 반도체 기억 장치.
- 제60항에 있어서, 상기 컨트롤러는상기 제2 메모리 영역에서 상기 제3 단위의 복수의 영역을 포함하는 윈도(window) 내의 상기 제1 관리 단위의 유효 데이터를 계수하고,상기 윈도 내의 유효 데이터의 합계가 미리 정해진 임계값보다 크면, 상기 제2 메모리 영역에서 보다 오래된 할당 순서측으로부터 더 새로운 할당 순서측으로 상기 윈도를 시프트시키며,상기 윈도 내의 유효 데이터의 합계가 상기 미리 정해진 임계값보다 크지 않으면, 상기 윈도 내의 유효 데이터에 대하여 상기 제6 및 제7 처리 중 적어도 하나를 실행시키는 것인 반도체 기억 장치.
- 제61항에 있어서, 상기 미리 정해진 임계값은, 상기 윈도 내의 상기 제3 단위의 복수의 영역에서 하나의 영역이 감소된 상기 제3 단위의 영역에 기억시킬 수 있는 데이터의 합계와 동일한 것인 반도체 기억 장치.
- 제61항에 있어서, 상기 제7 처리에서, 상기 컨트롤러는상기 윈도 내의 유효 데이터의 논리 어드레스를 상기 제2 관리 단위로 정렬시켜 논리 어드레스 범위를 계산하고,상기 논리 어드레스 범위에 포함되며 상기 제2 및 제4 메모리 영역에 기억되는 유효 데이터의 합계를 계수하며,상기 계수된 유효 데이터의 합계가 미리 정해진 임계값 이상이면 상기 제7 처리의 타깃에 대한 유효 데이터를 선택하는 것인 반도체 기억 장치.
- 제61항에 있어서, 상기 제6 처리에서, 상기 컨트롤러는, 상기 제7 처리를 실행한 후에, 상기 윈도 내의 상기 제3 단위의 영역으로부터 상기 제2 메모리 영역 내의 더 새로운 할당 순서측으로 순서대로, 유효 데이터를 순차적으로 선택하는 것인 반도체 기억 장치.
- 제64항에 있어서, 상기 제6 처리에서, 상기 컨트롤러는, 유효 데이터로 기입되는 상기 제3 단위의 영역을 상기 윈도보다도 오래된 할당 순서측에 삽입하는 것인 반도체 기억 장치.
- 제65항에 있어서, 상기 윈도가 상기 제2 메모리 영역 내의 가장 오래된 할당 순서측에 도달하면, 상기 컨트롤러는할당 순서가 가장 오래된 상기 제3 단위의 영역 내의 상기 제1 관리 단위의 모든 유효 데이터를 선택하고,상기 제2 관리 단위로 상기 선택된 유효 데이터를 포함하는 데이터를 상기 제3 메모리 영역에 기억시키는 것인 반도체 기억 장치.
- 제1항, 제24항, 제36항 및 제54항 중 어느 한 항에 있어서, 상기 비휘발성 반도체 메모리는, 다중 비트 데이터가 하나의 메모리 셀에 프로그래밍되는 상기 제3 단위의 MLC(Multi Level Cell) 영역을 포함하는 것인 반도체 기억 장치.
- 제24항, 제36항 및 제54항 중 어느 한 항에 있어서, 상기 비휘발성 반도체 메모리는, 다중 비트 데이터가 하나의 메모리 셀에 프로그래밍되는 상기 제3 단위의 MLC(Multi Level Cell) 영역과 단일 비트 데이터가 하나의 메모리 셀에 프로그래밍되는 상기 제3 단위의 SLC(Single Level Cell) 영역을 포함하고,상기 컨트롤러는 상기 제3 단위의 SLC 영역을 상기 제4 메모리 영역에 할당하고, 상기 제3 단위의 MLC 영역을 다른 메모리 영역에 할당하는 것인 반도체 기억 장치.
- 제68항에 있어서, 상기 컨트롤러는상기 제3 단위의 SLC 영역을 상기 제4 메모리 영역으로부터 상기 제2 메모리 영역으로 이동시키고,상기 제2 메모리 영역에서의 상기 제3 단위의 SLC 영역 내의 데이터를 선택하고, 선택된 데이터를 상기 제2 단위의 미사용 영역을 갖는 상기 제3 단위의 MLC 영역에 복사하며, 상기 제3 단위의 MLC 영역을 상기 제2 메모리 영역에 할당하는 것인 반도체 기억 장치.
- 제1항, 제24항, 제36항 및 제54항 중 어느 한 항에 있어서, 상기 제1 관리 단위의 사이즈는 상기 제2 단위의 사이즈와 동일한 것인 반도체 기억 장치.
- 제1항, 제24항 및 제54항 중 어느 한 항에 있어서, 상기 제2 관리 단위의 사이즈는 상기 제3 단위의 사이즈와 동일한 것인 반도체 기억 장치.
- 제12항, 제25항, 제37항, 제48항 및 제55항 중 어느 한 항에 있어서, 상기 컨트롤러는 상기 제2 단위의 모든 영역이 무효화되는 상기 제3 단위의 영역을 무효화시키는 것인 반도체 기억 장치.
- 반도체 기억 장치를 제어하는 방법으로서, 상기 반도체 기억 장치는상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2 및 제3 메모리 영역을 구비하며, 상기 방법은상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리를 실행하는 단계와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제2 메모리 영역에 기억시키는 제2 처리를 실행하는 단계와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처 리를 실행하는 단계를 포함하는 것인 반도체 기억 장치의 제어 방법.
- 반도체 기억 장치를 제어하는 방법으로서, 상기 반도체 기억 장치는상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3 및 제4 메모리 영역을 구비하며, 상기 방법은상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리를 실행하는 단계와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리를 실행하는 단계와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처리를 실행하는 단계와,상기 제4 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리를 실행하는 단계와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제5 처리를 실행하 는 단계를 포함하는 것인 반도체 기억 장치의 제어 방법.
- 반도체 기억 장치를 제어하는 방법으로서, 상기 반도체 기억 장치는상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3, 제4 및 제5 메모리 영역을 구비하며, 상기 방법은상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리를 실행하는 단계와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리를 실행하는 단계와,상기 제1 관리 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제5 메모리 영역에 기억시키는 제3 처리를 실행하는 단계와,상기 제4 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리를 실행하는 단계와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제5 처리를 실행하 는 단계와,상기 제5 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제3 메모리 영역으로 이동시키는 제6 처리를 실행하는 단계와,상기 제3 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제3 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제7 처리를 실행하는 단계를 포함하는 것인 반도체 기억 장치의 제어 방법.
- 반도체 기억 장치를 제어하는 방법으로서, 상기 반도체 기억 장치는상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3 및 제4 메모리 영역을 구비하며, 상기 방법은상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리를 실행하는 단계와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리를 실행하는 단계와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처 리를 실행하는 단계와,상기 제4 메모리 영역 내의 상기 제3 단위의 영역을 선택하고 선택된 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리를 실행하는 단계와,상기 제4 메모리 영역 내의 데이터를 선택하고, 선택된 데이터를 상기 제2 단위의 미사용 영역을 갖는 상기 제3 단위의 영역에 복사하며, 상기 제3 단위의 영역을 상기 제2 메모리 영역에 할당하는 제5 처리를 실행하는 단계와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제6 처리를 실행하는 단계를 포함하는 것인 반도체 기억 장치의 제어 방법.
- 정보 처리 장치로서,CPU와,상기 CPU에 접속된 노스 브리지(north bridge)와,상기 노스 브리지에 접속된 주 메모리와,상기 노스 브리지에 접속된 사우스 브리지(south bridge)와,상기 사우스 브리지에 접속된 반도체 기억 장치를 포함하고, 상기 반도체 기억 장치는상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2 및 제3 메모리 영역과,컨트롤러를 포함하고, 상기 컨트롤러는상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제2 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처리를 실행시키는 것인 정보 처리 장치.
- 정보 처리 장치로서,CPU와,상기 CPU에 접속된 노스 브리지와,상기 노스 브리지에 접속된 주 메모리와,상기 노스 브리지에 접속된 사우스 브리지와,상기 사우스 브리지에 접속된 반도체 기억 장치를 포함하고, 상기 반도체 기억 장치는상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기 입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3 및 제4 메모리 영역과,컨트롤러를 포함하고, 상기 컨트롤러는상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처리와,상기 제4 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제5 처리를 실행시키는 것인 정보 처리 장치.
- 정보 처리 장치로서,CPU와,상기 CPU에 접속된 노스 브리지와,상기 노스 브리지에 접속된 주 메모리와,상기 노스 브리지에 접속된 사우스 브리지와,상기 사우스 브리지에 접속된 반도체 기억 장치를 포함하고,상기 반도체 기억 장치는상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3, 제4 및 제5 메모리 영역과,컨트롤러를 포함하고, 상기 컨트롤러는상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제5 메모리 영역에 기억시키는 제3 처리와,상기 제4 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제5 처리와,상기 제5 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제3 메모리 영역으로 이동시키는 제6 처리와,상기 제3 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제3 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제7 처리를 실행시키는 것인 정보 처리 장치.
- 정보 처리 장치로서,CPU와,상기 CPU에 접속된 노스 브리지와,상기 노스 브리지에 접속된 주 메모리와,상기 노스 브리지에 접속된 사우스 브리지와,상기 사우스 브리지에 접속된 반도체 기억 장치를 포함하고,상기 반도체 기억 장치는상기 반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3 및 제4 메모리 영역과,컨트롤러를 포함하고, 상기 컨트롤러는상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처리와,상기 제4 메모리 영역 내의 상기 제3 단위의 영역을 선택하고 선택된 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리와,상기 제4 메모리 영역 내의 데이터를 선택하고, 선택된 데이터를 상기 제2 단위의 미사용 영역을 갖는 상기 제3 단위의 영역에 복사하며, 상기 제3 단위의 영역을 상기 제2 메모리 영역에 할당하는 제5 처리와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제6 처리를 실행시키는 것인 정보 처리 장치.
- 컨트롤러로서,반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2 및 제3 메모리 영역을 제어하고,상기 컨트롤러는 데이터 제어 유닛을 포함하며, 상기 데이터 제어 유닛은상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제2 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처리를 실행하는 것인 컨트롤러.
- 컨트롤러로서,반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3 및 제4 메모리 영역을 제어하고,상기 컨트롤러는 데이터 제어 유닛을 포함하며, 상기 데이터 제어 유닛은상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처리와,상기 제4 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제5 처리를 실행하는 것인 컨트롤러.
- 컨트롤러로서,반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3, 제4 및 제5 메모리 영역을 제어하고,상기 컨트롤러는 데이터 제어 유닛을 포함하며, 상기 데이터 제어 유닛은상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제5 메모리 영역에 기억시키는 제3 처리와,상기 제4 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제5 처리와,상기 제5 메모리 영역에서 할당 순서가 가장 오래된 상기 제3 단위의 영역을 상기 제3 메모리 영역으로 이동시키는 제6 처리와,상기 제3 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제3 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제7 처리를 실행하 는 것인 컨트롤러.
- 컨트롤러로서,반도체 기억 장치에 대한 액세스 단위인 제1 단위 이하로 데이터의 기입을 행하는 휘발성 반도체 메모리로 구성되는 제1 메모리 영역과,제2 단위로 데이터의 기입을 행하고 상기 제2 단위의 2배 이상의 자연수배인 제3 단위로 데이터의 소거를 행하는 비휘발성 반도체 메모리로 구성되는 제2, 제3 및 제4 메모리 영역을 제어하고,상기 컨트롤러는 데이터 제어 유닛을 포함하며, 상기 데이터 제어 유닛은상기 제1 단위로 복수의 데이터를 상기 제1 메모리 영역에 기억시키는 제1 처리와,상기 제1 단위의 2배 이상의 자연수배이며 상기 제3 단위 미만인 제1 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제4 메모리 영역에 기억시키는 제2 처리와,상기 제1 관리 단위의 2배 이상의 자연수배인 제2 관리 단위로 상기 제1 메모리 영역으로부터 출력되는 데이터를 상기 제3 메모리 영역에 기억시키는 제3 처리와,상기 제4 메모리 영역 내의 상기 제3 단위의 영역을 선택하고 선택된 영역을 상기 제2 메모리 영역으로 이동시키는 제4 처리와,상기 제4 메모리 영역 내의 데이터를 선택하고, 선택된 데이터를 상기 제2 단위의 미사용 영역을 갖는 상기 제3 단위의 영역에 복사하며, 상기 제3 단위의 영역을 상기 제2 메모리 영역에 할당하는 제5 처리와,상기 제2 메모리 영역 내의 데이터를 선택하고 선택된 데이터를 상기 제2 메모리 영역 내의 상기 제3 단위의 미사용 영역 내에 재기입하는 제6 처리를 실행하는 것인 컨트롤러.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007339943 | 2007-12-28 | ||
JPJP-P-2007-339943 | 2007-12-28 | ||
JPJP-P-2008-046227 | 2008-02-27 | ||
JP2008046227 | 2008-02-27 | ||
PCT/JP2008/073950 WO2009084724A1 (en) | 2007-12-28 | 2008-12-25 | Semiconductor storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090106651A KR20090106651A (ko) | 2009-10-09 |
KR101077339B1 true KR101077339B1 (ko) | 2011-10-26 |
Family
ID=40824430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020097018224A KR101077339B1 (ko) | 2007-12-28 | 2008-12-25 | 반도체 기억 장치 |
Country Status (7)
Country | Link |
---|---|
US (12) | US8065470B2 (ko) |
EP (1) | EP2225643B1 (ko) |
JP (5) | JP4533968B2 (ko) |
KR (1) | KR101077339B1 (ko) |
CN (1) | CN101632068B (ko) |
TW (1) | TWI396083B (ko) |
WO (1) | WO2009084724A1 (ko) |
Families Citing this family (262)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7934052B2 (en) | 2007-12-27 | 2011-04-26 | Pliant Technology, Inc. | System and method for performing host initiated mass storage commands using a hierarchy of data structures |
KR101077339B1 (ko) | 2007-12-28 | 2011-10-26 | 가부시끼가이샤 도시바 | 반도체 기억 장치 |
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
JP4592774B2 (ja) * | 2008-03-01 | 2010-12-08 | 株式会社東芝 | メモリシステム |
JP4653817B2 (ja) * | 2008-03-01 | 2011-03-16 | 株式会社東芝 | メモリシステム |
KR101067457B1 (ko) | 2008-03-01 | 2011-09-27 | 가부시끼가이샤 도시바 | 메모리 시스템 |
JP4745356B2 (ja) * | 2008-03-01 | 2011-08-10 | 株式会社東芝 | メモリシステム |
JP4691123B2 (ja) * | 2008-03-01 | 2011-06-01 | 株式会社東芝 | メモリシステム |
JP4691122B2 (ja) * | 2008-03-01 | 2011-06-01 | 株式会社東芝 | メモリシステム |
JP4439569B2 (ja) * | 2008-04-24 | 2010-03-24 | 株式会社東芝 | メモリシステム |
JP5317690B2 (ja) | 2008-12-27 | 2013-10-16 | 株式会社東芝 | メモリシステム |
JP2010157130A (ja) | 2008-12-27 | 2010-07-15 | Toshiba Corp | メモリシステム |
JP5221332B2 (ja) | 2008-12-27 | 2013-06-26 | 株式会社東芝 | メモリシステム |
KR101269366B1 (ko) | 2009-02-12 | 2013-05-29 | 가부시끼가이샤 도시바 | 메모리 시스템 및 메모리 시스템의 제어 방법 |
JP5268710B2 (ja) * | 2009-02-27 | 2013-08-21 | 株式会社東芝 | 半導体記憶装置 |
JP5341584B2 (ja) * | 2009-03-17 | 2013-11-13 | 株式会社東芝 | コントローラ、及びメモリシステム |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
US20110002169A1 (en) | 2009-07-06 | 2011-01-06 | Yan Li | Bad Column Management with Bit Information in Non-Volatile Memory Systems |
JP2011022657A (ja) * | 2009-07-13 | 2011-02-03 | Fujitsu Ltd | メモリシステムおよび情報処理装置 |
WO2011021367A1 (ja) * | 2009-08-21 | 2011-02-24 | パナソニック株式会社 | 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム |
JP2011128998A (ja) * | 2009-12-18 | 2011-06-30 | Toshiba Corp | 半導体記憶装置 |
JP2011145838A (ja) * | 2010-01-13 | 2011-07-28 | Toshiba Corp | 記憶装置管理装置および記憶装置の管理方法 |
JP4738536B1 (ja) * | 2010-01-29 | 2011-08-03 | 株式会社東芝 | 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法 |
JP5404483B2 (ja) | 2010-03-17 | 2014-01-29 | 株式会社東芝 | メモリシステム |
JP2011192239A (ja) * | 2010-03-17 | 2011-09-29 | Sony Corp | 記憶装置および記憶システム |
JP2011192240A (ja) * | 2010-03-17 | 2011-09-29 | Sony Corp | 記憶装置および記憶システム |
JP5066209B2 (ja) | 2010-03-18 | 2012-11-07 | 株式会社東芝 | コントローラ、データ記憶装置、及びプログラム |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US9183134B2 (en) * | 2010-04-22 | 2015-11-10 | Seagate Technology Llc | Data segregation in a storage device |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) * | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US9104546B2 (en) * | 2010-05-24 | 2015-08-11 | Silicon Motion Inc. | Method for performing block management using dynamic threshold, and associated memory device and controller thereof |
JP2012008651A (ja) | 2010-06-22 | 2012-01-12 | Toshiba Corp | 半導体記憶装置、その制御方法および情報処理装置 |
JP2012033002A (ja) * | 2010-07-30 | 2012-02-16 | Toshiba Corp | メモリ管理装置およびメモリ管理方法 |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US9021192B1 (en) | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
US8688660B1 (en) * | 2010-09-28 | 2014-04-01 | Amazon Technologies, Inc. | System and method for providing enhancements of block-level storage |
US9304867B2 (en) | 2010-09-28 | 2016-04-05 | Amazon Technologies, Inc. | System and method for providing flexible storage and retrieval of snapshot archives |
KR101713051B1 (ko) * | 2010-11-29 | 2017-03-07 | 삼성전자주식회사 | 하이브리드 메모리 시스템, 및 그 관리 방법 |
JP2012128645A (ja) | 2010-12-15 | 2012-07-05 | Toshiba Corp | メモリシステム |
JP2012128643A (ja) | 2010-12-15 | 2012-07-05 | Toshiba Corp | メモリシステム |
JP2012141946A (ja) * | 2010-12-16 | 2012-07-26 | Toshiba Corp | 半導体記憶装置 |
JP5535128B2 (ja) | 2010-12-16 | 2014-07-02 | 株式会社東芝 | メモリシステム |
TWI479505B (zh) * | 2010-12-16 | 2015-04-01 | Phison Electronics Corp | 資料管理方法、記憶體控制器與記憶體儲存裝置 |
JP2012128816A (ja) | 2010-12-17 | 2012-07-05 | Toshiba Corp | メモリシステム |
JP2012133416A (ja) | 2010-12-17 | 2012-07-12 | Toshiba Corp | メモリシステム |
JP5178857B2 (ja) * | 2011-02-16 | 2013-04-10 | 株式会社東芝 | メモリシステム |
US9342446B2 (en) * | 2011-03-29 | 2016-05-17 | SanDisk Technologies, Inc. | Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache |
US8537613B2 (en) * | 2011-03-31 | 2013-09-17 | Sandisk Technologies Inc. | Multi-layer memory system |
JP2012221251A (ja) | 2011-04-08 | 2012-11-12 | Toshiba Corp | メモリシステムの制御方法、情報処理装置、及びプログラム |
KR101467941B1 (ko) | 2011-04-26 | 2014-12-02 | 엘에스아이 코포레이션 | 비휘발성 저장부에 대한 가변 오버프로비저닝 |
JP5708216B2 (ja) * | 2011-05-09 | 2015-04-30 | ソニー株式会社 | フラッシュメモリ装置、メモリ制御装置、メモリ制御方法、ストレージシステム |
US8910020B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | Intelligent bit recovery for flash memory |
US8909982B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | System and method for detecting copyback programming problems |
US9898402B2 (en) | 2011-07-01 | 2018-02-20 | Micron Technology, Inc. | Unaligned data coalescing |
US8930614B2 (en) * | 2011-07-29 | 2015-01-06 | Kabushiki Kaisha Toshiba | Data storage apparatus and method for compaction processing |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US9195530B1 (en) | 2011-09-06 | 2015-11-24 | Western Digital Technologies, Inc. | Systems and methods for improved data management in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
KR20130032155A (ko) * | 2011-09-22 | 2013-04-01 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 관리 방법 |
US8793543B2 (en) | 2011-11-07 | 2014-07-29 | Sandisk Enterprise Ip Llc | Adaptive read comparison signal generation for memory systems |
US8924815B2 (en) | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US9048876B2 (en) | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
JP5674634B2 (ja) | 2011-12-28 | 2015-02-25 | 株式会社東芝 | コントローラ、記憶装置およびプログラム |
US20130173842A1 (en) * | 2011-12-28 | 2013-07-04 | King Ying Ng | Adaptive Logical Group Sorting to Prevent Drive Fragmentation |
US10698826B1 (en) | 2012-01-06 | 2020-06-30 | Seagate Technology Llc | Smart file location |
US20150015913A1 (en) * | 2012-01-10 | 2015-01-15 | Kyocera Document Solutions Inc. | Image processing apparatus and image forming apparatus |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US20130219105A1 (en) * | 2012-02-16 | 2013-08-22 | Micron Technology, Inc. | Method, device and system for caching for non-volatile memory device |
US9251055B2 (en) | 2012-02-23 | 2016-02-02 | Kabushiki Kaisha Toshiba | Memory system and control method of memory system |
US8924636B2 (en) | 2012-02-23 | 2014-12-30 | Kabushiki Kaisha Toshiba | Management information generating method, logical block constructing method, and semiconductor memory device |
JP5687648B2 (ja) * | 2012-03-15 | 2015-03-18 | 株式会社東芝 | 半導体記憶装置およびプログラム |
JP2013196115A (ja) | 2012-03-16 | 2013-09-30 | Toshiba Corp | メモリシステム |
JP5835040B2 (ja) * | 2012-03-19 | 2015-12-24 | 富士通株式会社 | 情報処理システムおよびデータ記録制御方法 |
US9110600B1 (en) | 2012-03-19 | 2015-08-18 | Amazon Technologies, Inc. | Triggered data shelving to a different storage system and storage deallocation |
US9053008B1 (en) | 2012-03-26 | 2015-06-09 | Western Digital Technologies, Inc. | Systems and methods for providing inline parameter service in data storage devices |
US9268692B1 (en) | 2012-04-05 | 2016-02-23 | Seagate Technology Llc | User selectable caching |
US9542324B1 (en) | 2012-04-05 | 2017-01-10 | Seagate Technology Llc | File associated pinning |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
JP5619812B2 (ja) * | 2012-04-24 | 2014-11-05 | ウィンボンドエレクトロニクス コーポレーション | 半導体記憶装置 |
US11379354B1 (en) | 2012-05-07 | 2022-07-05 | Amazon Technologies, Inc. | Data volume placement techniques |
US9246996B1 (en) | 2012-05-07 | 2016-01-26 | Amazon Technologies, Inc. | Data volume placement techniques |
US9503517B1 (en) | 2012-05-07 | 2016-11-22 | Amazon Technologies, Inc. | Data volume placement techniques |
US9823840B1 (en) | 2012-05-07 | 2017-11-21 | Amazon Technologies, Inc. | Data volume placement techniques |
US9804993B1 (en) | 2012-05-07 | 2017-10-31 | Amazon Technologies, Inc. | Data volume placement techniques |
KR20130128685A (ko) * | 2012-05-17 | 2013-11-27 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 프로그램 방법 |
KR101979392B1 (ko) * | 2012-05-17 | 2019-05-16 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 프로그램 방법 |
US9164804B2 (en) | 2012-06-20 | 2015-10-20 | Memory Technologies Llc | Virtual memory module |
CN103514110B (zh) * | 2012-06-20 | 2016-08-24 | 华为技术有限公司 | 非易失性存储设备的缓存管理方法及装置 |
TWI479315B (zh) * | 2012-07-03 | 2015-04-01 | Phison Electronics Corp | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 |
JP5813589B2 (ja) * | 2012-07-13 | 2015-11-17 | 株式会社東芝 | メモリシステムおよびその制御方法 |
US9811414B2 (en) * | 2012-07-25 | 2017-11-07 | Silicon Motion Inc. | Method for managing data stored in flash memory and associated memory device and controller |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9116820B2 (en) | 2012-08-28 | 2015-08-25 | Memory Technologies Llc | Dynamic central cache memory |
US20140219021A1 (en) * | 2013-02-07 | 2014-08-07 | Seagate Technology Llc | Data protection for unexpected power loss |
US10282286B2 (en) * | 2012-09-14 | 2019-05-07 | Micron Technology, Inc. | Address mapping using a data unit type that is variable |
JP5550741B1 (ja) * | 2012-09-25 | 2014-07-16 | 株式会社東芝 | ソリッドステートドライブにデータを再配置するストレージ装置、ストレージコントローラ及び方法 |
KR20140044121A (ko) | 2012-10-04 | 2014-04-14 | 삼성전자주식회사 | 멀티 인터페이스를 갖는 멀티포트 반도체 메모리 장치 |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US20140189211A1 (en) * | 2012-12-31 | 2014-07-03 | Sandisk Enterprise Ip Llc | Remapping Blocks in a Storage Device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9003264B1 (en) | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
US10073851B2 (en) * | 2013-01-08 | 2018-09-11 | Apple Inc. | Fast new file creation cache |
US10642505B1 (en) | 2013-01-28 | 2020-05-05 | Radian Memory Systems, Inc. | Techniques for data migration based on per-data metrics and memory degradation |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US9229854B1 (en) | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US8990458B2 (en) | 2013-02-28 | 2015-03-24 | Kabushiki Kaisha Toshiba | Controller, semiconductor storage device and method of controlling data writing |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9612956B2 (en) * | 2013-03-15 | 2017-04-04 | Seagate Technology Llc | Multi-tiered caching for data storage management in a device |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9009576B1 (en) | 2013-03-15 | 2015-04-14 | Sandisk Enterprise Ip Llc | Adaptive LLR based on syndrome weight |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9136877B1 (en) | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
JP6089844B2 (ja) * | 2013-03-22 | 2017-03-08 | 富士通株式会社 | 制御装置,ストレージ装置,及び制御プログラム |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
JP6028670B2 (ja) * | 2013-04-22 | 2016-11-16 | 株式会社デンソー | データ記憶装置 |
JP2014225196A (ja) * | 2013-05-17 | 2014-12-04 | 学校法人 中央大学 | 半導体記憶装置およびその制御方法 |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9043517B1 (en) | 2013-07-25 | 2015-05-26 | Sandisk Enterprise Ip Llc | Multipass programming in buffers implemented in non-volatile data storage systems |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
CN107391389B (zh) | 2013-08-05 | 2020-11-24 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法以及记忆装置与控制器 |
CN107741913B (zh) | 2013-08-05 | 2021-09-07 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法、记忆装置与控制器 |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9563385B1 (en) | 2013-09-16 | 2017-02-07 | Amazon Technologies, Inc. | Profile-guided data preloading for virtualized resources |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9852066B2 (en) * | 2013-12-20 | 2017-12-26 | Sandisk Technologies Llc | Systems and methods of address-aware garbage collection |
US9684568B2 (en) | 2013-12-26 | 2017-06-20 | Silicon Motion, Inc. | Data storage device and flash memory control method |
CA2881206A1 (en) | 2014-02-07 | 2015-08-07 | Andrew WARFIELD | Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US9497889B2 (en) | 2014-02-27 | 2016-11-15 | Sandisk Technologies Llc | Heat dissipation for substrate assemblies |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
CN105917289A (zh) * | 2014-03-13 | 2016-08-31 | 联发科技股份有限公司 | 控制存储阵列装置以节省更多功率的方法及其相关装置 |
US10250673B1 (en) | 2014-03-14 | 2019-04-02 | Amazon Technologies, Inc. | Storage workload management using redirected messages |
US9348377B2 (en) | 2014-03-14 | 2016-05-24 | Sandisk Enterprise Ip Llc | Thermal isolation techniques |
US9485851B2 (en) | 2014-03-14 | 2016-11-01 | Sandisk Technologies Llc | Thermal tube assembly structures |
US9519319B2 (en) | 2014-03-14 | 2016-12-13 | Sandisk Technologies Llc | Self-supporting thermal tube structure for electronic assemblies |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US9710173B2 (en) | 2014-05-20 | 2017-07-18 | Micron Technology, Inc. | Read cache memory with DRAM class promotion |
TWI521541B (zh) | 2014-05-22 | 2016-02-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
CN105224238B (zh) * | 2014-05-29 | 2019-01-15 | 群联电子股份有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
CN105393228B (zh) * | 2014-06-25 | 2019-09-03 | 华为技术有限公司 | 读写闪存中数据的方法、装置及用户设备 |
WO2016002325A1 (ja) * | 2014-07-04 | 2016-01-07 | 日本電気株式会社 | 情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム |
TWI529530B (zh) * | 2014-08-25 | 2016-04-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10552085B1 (en) | 2014-09-09 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for directed data migration |
WO2016046880A1 (ja) * | 2014-09-22 | 2016-03-31 | 株式会社日立製作所 | ストレージ装置、半導体記憶装置及びその制御方法 |
US9530490B2 (en) * | 2014-10-27 | 2016-12-27 | Sandisk Technologies Llc | Compaction process for a data storage device |
US9934872B2 (en) | 2014-10-30 | 2018-04-03 | Sandisk Technologies Llc | Erase stress and delta erase loop count methods for various fail modes in non-volatile memory |
KR20160070920A (ko) * | 2014-12-10 | 2016-06-21 | 에스케이하이닉스 주식회사 | 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법 |
CN105701021B (zh) * | 2014-12-10 | 2021-03-02 | 慧荣科技股份有限公司 | 数据储存装置及其数据写入方法 |
US9690491B2 (en) * | 2014-12-17 | 2017-06-27 | Sandisk Technologies Llc | System and method for managing data in a memory device |
US9632705B2 (en) | 2014-12-17 | 2017-04-25 | Sandisk Technologies Llc | System and method for adaptive memory layers in a memory device |
US9224502B1 (en) | 2015-01-14 | 2015-12-29 | Sandisk Technologies Inc. | Techniques for detection and treating memory hole to local interconnect marginality defects |
WO2016120906A1 (ja) * | 2015-01-30 | 2016-08-04 | 三菱電機株式会社 | A/d変換装置、d/a変換装置、及びplc |
US10032524B2 (en) | 2015-02-09 | 2018-07-24 | Sandisk Technologies Llc | Techniques for determining local interconnect defects |
US10715460B2 (en) | 2015-03-09 | 2020-07-14 | Amazon Technologies, Inc. | Opportunistic resource migration to optimize resource placement |
US9269446B1 (en) | 2015-04-08 | 2016-02-23 | Sandisk Technologies Inc. | Methods to improve programming of slow cells |
US9564219B2 (en) | 2015-04-08 | 2017-02-07 | Sandisk Technologies Llc | Current based detection and recording of memory hole-interconnect spacing defects |
JP6860965B2 (ja) * | 2015-06-12 | 2021-04-21 | 任天堂株式会社 | 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 |
US10552058B1 (en) | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
KR20170015760A (ko) * | 2015-07-31 | 2017-02-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
TWI585770B (zh) * | 2015-08-11 | 2017-06-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
CN106469019B (zh) * | 2015-08-18 | 2020-01-07 | 群联电子股份有限公司 | 存储器管理方法、存储器控制电路单元及存储器储存装置 |
KR102406722B1 (ko) | 2015-09-25 | 2022-06-09 | 삼성전자주식회사 | 자기 메모리 장치 및 그 제조 방법 |
US10268411B1 (en) * | 2015-11-18 | 2019-04-23 | Veritas Technologies Llc | Policy and heuristic based conversion of write-optimized virtual disk format into read-optimized virtual disk format |
JP6512091B2 (ja) * | 2015-12-22 | 2019-05-15 | 株式会社デンソー | 情報管理装置、情報管理方法及び情報管理プログラム |
US10254967B2 (en) * | 2016-01-13 | 2019-04-09 | Sandisk Technologies Llc | Data path control for non-volatile memory |
US11423053B2 (en) * | 2016-01-30 | 2022-08-23 | Micro Focus Llc | Log event cluster analytics management |
US10216536B2 (en) * | 2016-03-11 | 2019-02-26 | Vmware, Inc. | Swap file defragmentation in a hypervisor |
US10942844B2 (en) | 2016-06-10 | 2021-03-09 | Apple Inc. | Reserved memory in memory management system |
JP2018018271A (ja) * | 2016-07-27 | 2018-02-01 | 富士通株式会社 | ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム |
JP2018041204A (ja) | 2016-09-06 | 2018-03-15 | 東芝メモリ株式会社 | メモリ装置及び情報処理システム |
CN106448735B (zh) * | 2016-09-13 | 2019-09-13 | 天津大学 | 用于大容量非易失性存储器的数据快速擦除方法 |
US10528267B2 (en) | 2016-11-11 | 2020-01-07 | Sandisk Technologies Llc | Command queue for storage operations |
US10528286B2 (en) | 2016-11-11 | 2020-01-07 | Sandisk Technologies Llc | Interface for non-volatile memory |
US10528255B2 (en) | 2016-11-11 | 2020-01-07 | Sandisk Technologies Llc | Interface for non-volatile memory |
KR20180058456A (ko) | 2016-11-24 | 2018-06-01 | 삼성전자주식회사 | 메모리를 관리하는 방법 및 장치. |
US10296224B2 (en) * | 2016-12-21 | 2019-05-21 | Intel Corporation | Apparatus, system and method for increasing the capacity of a storage device available to store user data |
IT201700057287A1 (it) * | 2017-05-26 | 2018-11-26 | St Microelectronics Srl | Procedimento per gestire schede a circuito integrato, scheda ed apparecchiatura corrispondenti |
JP7030463B2 (ja) | 2017-09-22 | 2022-03-07 | キオクシア株式会社 | メモリシステム |
TWI653538B (zh) * | 2017-11-13 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置與記憶體裝置之資料處理方法 |
US11635894B2 (en) | 2018-03-16 | 2023-04-25 | Micron Technology, Inc. | Clustered parity for NAND data placement schema |
CN112074908B (zh) * | 2018-03-16 | 2024-05-24 | 美光科技公司 | Nand数据放置模式 |
US10452296B1 (en) | 2018-03-23 | 2019-10-22 | Amazon Technologies, Inc. | Accelerated volumes |
JP2019185350A (ja) * | 2018-04-09 | 2019-10-24 | 東芝メモリ株式会社 | メモリシステム及びメモリシステムの制御方法 |
US11343314B1 (en) | 2018-04-30 | 2022-05-24 | Amazon Technologies, Inc. | Stream-based logging for distributed storage systems |
US10459655B1 (en) | 2018-04-30 | 2019-10-29 | Amazon Technologies, Inc. | Rapid volume backup generation from distributed replica |
US10776173B1 (en) | 2018-04-30 | 2020-09-15 | Amazon Technologies, Inc. | Local placement of resource instances in a distributed system |
US11023157B2 (en) | 2018-04-30 | 2021-06-01 | Amazon Technologies, Inc. | Intermediary duplication to facilitate copy requests in distributed storage systems |
KR102538222B1 (ko) * | 2018-06-26 | 2023-06-01 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치를 포함하는 스토리지 시스템, 그리고 스토리지 장치를 액세스하는 방법 |
US10768835B1 (en) | 2018-06-27 | 2020-09-08 | Amazon Technologies, Inc. | Opportunistic storage service |
US11121981B1 (en) | 2018-06-29 | 2021-09-14 | Amazon Technologies, Inc. | Optimistically granting permission to host computing resources |
JP7089423B2 (ja) * | 2018-07-12 | 2022-06-22 | ルネサスエレクトロニクス株式会社 | 情報処理装置及び制御方法 |
US10931750B1 (en) | 2018-07-30 | 2021-02-23 | Amazon Technologies, Inc. | Selection from dedicated source volume pool for accelerated creation of block data volumes |
US10956442B1 (en) | 2018-07-30 | 2021-03-23 | Amazon Technologies, Inc. | Dedicated source volume pool for accelerated creation of block data volumes from object data snapshots |
US11068192B1 (en) | 2019-03-26 | 2021-07-20 | Amazon Technologies, Inc. | Utilizing mutiple snapshot sources for creating new copy of volume in a networked environment wherein additional snapshot sources are reserved with lower performance levels than a primary snapshot source |
US10983719B1 (en) | 2019-03-28 | 2021-04-20 | Amazon Technologies, Inc. | Replica pools to support volume replication in distributed storage systems |
TWI786288B (zh) * | 2019-04-09 | 2022-12-11 | 韓商愛思開海力士有限公司 | 儲存裝置、儲存裝置的控制方法及記錄媒體 |
US11237732B2 (en) * | 2019-08-06 | 2022-02-01 | Intel Corporation | Method and apparatus to improve write bandwidth of a block-based multi-level cell nonvolatile memory |
FR3103620B1 (fr) * | 2019-11-21 | 2021-11-26 | St Microelectronics Rousset | Procédé d’écriture dans une mémoire volatile et circuit intégré correspondant |
US11175984B1 (en) | 2019-12-09 | 2021-11-16 | Radian Memory Systems, Inc. | Erasure coding techniques for flash memory |
DE102021113450A1 (de) | 2020-08-13 | 2022-02-17 | Samsung Electronics Co., Ltd. | Seitenpufferschaltungen und diese enthaltende nichtflüchtige Speichervorrichtungen |
US11262918B1 (en) * | 2020-09-30 | 2022-03-01 | Amazon Technologies, Inc. | Data storage system with uneven drive wear reduction |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US12067282B2 (en) | 2020-12-31 | 2024-08-20 | Pure Storage, Inc. | Write path selection |
US12093545B2 (en) | 2020-12-31 | 2024-09-17 | Pure Storage, Inc. | Storage system with selectable write modes |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
TWI775268B (zh) | 2021-01-07 | 2022-08-21 | 慧榮科技股份有限公司 | 儲存裝置、快閃記憶體控制器及其控制方法 |
US11861222B2 (en) * | 2021-05-17 | 2024-01-02 | Micron Technology, Inc. | Object management in tiered memory systems |
US11526286B1 (en) | 2021-06-29 | 2022-12-13 | Amazon Technologies, Inc. | Adaptive snapshot chunk sizing for snapshots of block storage volumes |
US11853201B2 (en) | 2022-05-25 | 2023-12-26 | Micron Technology, Inc. | Selective single-level memory cell operation |
US12039178B2 (en) * | 2022-07-14 | 2024-07-16 | Micron Technology, Inc. | Apparatus with memory block management and methods for operating the same |
US12039179B2 (en) * | 2022-09-29 | 2024-07-16 | SanDisk Technologies, Inc. | Finding and releasing trapped memory in uLayer |
JP2024077215A (ja) * | 2022-11-28 | 2024-06-07 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060179212A1 (en) | 2005-02-07 | 2006-08-10 | Kim Jin-Hyuk | Flash memory control devices that support multiple memory mapping schemes and methods of operating same |
US20070028034A1 (en) | 2005-07-29 | 2007-02-01 | Sony Corporation | Computer system |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US377920A (en) * | 1888-02-14 | Welch | ||
US347575A (en) * | 1886-08-17 | Car brake | ||
JP3868585B2 (ja) | 1996-07-30 | 2007-01-17 | シャープ株式会社 | メモリ管理装置及びコンピュータ読み取り可能な記録媒体 |
CN100557716C (zh) * | 1999-04-27 | 2009-11-04 | 松下电器产业株式会社 | 半导体存储卡及其控制方法 |
US20080209114A1 (en) * | 1999-08-04 | 2008-08-28 | Super Talent Electronics, Inc. | Reliability High Endurance Non-Volatile Memory Device with Zone-Based Non-Volatile Memory File System |
US7953931B2 (en) * | 1999-08-04 | 2011-05-31 | Super Talent Electronics, Inc. | High endurance non-volatile memory devices |
US8078794B2 (en) * | 2000-01-06 | 2011-12-13 | Super Talent Electronics, Inc. | Hybrid SSD using a combination of SLC and MLC flash memory arrays |
US8019943B2 (en) * | 2000-01-06 | 2011-09-13 | Super Talent Electronics, Inc. | High endurance non-volatile memory devices |
JP2002278828A (ja) | 2001-03-21 | 2002-09-27 | Sony Corp | ガーベージコレクション実行方法、コンピュータプログラム、プログラム格納媒体、および情報処理装置 |
KR100389867B1 (ko) | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
US7254668B1 (en) * | 2002-10-28 | 2007-08-07 | Sandisk Corporation | Method and apparatus for grouping pages within a block |
KR100526190B1 (ko) | 2004-02-06 | 2005-11-03 | 삼성전자주식회사 | 플래시 메모리의 재사상 방법 |
JP4713867B2 (ja) * | 2004-09-22 | 2011-06-29 | 株式会社東芝 | メモリコントローラ,メモリ装置及びメモリコントローラの制御方法 |
KR101257848B1 (ko) * | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법 |
US7752382B2 (en) * | 2005-09-09 | 2010-07-06 | Sandisk Il Ltd | Flash memory storage system and method |
JP4413840B2 (ja) * | 2005-09-20 | 2010-02-10 | 株式会社東芝 | 記憶媒体再生装置、記憶媒体再生方法および記憶媒体再生プログラム |
JP4660353B2 (ja) | 2005-11-01 | 2011-03-30 | 株式会社東芝 | 記憶媒体再生装置 |
JP4575288B2 (ja) | 2005-12-05 | 2010-11-04 | 株式会社東芝 | 記憶媒体、記憶媒体再生装置、記憶媒体再生方法および記憶媒体再生プログラム |
US7711890B2 (en) * | 2006-06-06 | 2010-05-04 | Sandisk Il Ltd | Cache control in a non-volatile memory device |
JP2008033788A (ja) * | 2006-07-31 | 2008-02-14 | Matsushita Electric Ind Co Ltd | 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法 |
KR100771521B1 (ko) * | 2006-10-30 | 2007-10-30 | 삼성전자주식회사 | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 |
JP4575346B2 (ja) | 2006-11-30 | 2010-11-04 | 株式会社東芝 | メモリシステム |
US20080235441A1 (en) * | 2007-03-20 | 2008-09-25 | Itay Sherman | Reducing power dissipation for solid state disks |
JP2008197981A (ja) | 2007-02-14 | 2008-08-28 | Toshiba Corp | 半導体記憶装置 |
US8370562B2 (en) * | 2007-02-25 | 2013-02-05 | Sandisk Il Ltd. | Interruptible cache flushing in flash memory systems |
JP2008217857A (ja) * | 2007-02-28 | 2008-09-18 | Toshiba Corp | メモリコントローラ及び半導体装置 |
US7630252B2 (en) * | 2007-06-25 | 2009-12-08 | Sandisk Corporation | Systems for programming multilevel cell nonvolatile memory |
US7719889B2 (en) * | 2007-06-25 | 2010-05-18 | Sandisk Corporation | Methods of programming multilevel cell nonvolatile memory |
US20090043831A1 (en) * | 2007-08-11 | 2009-02-12 | Mcm Portfolio Llc | Smart Solid State Drive And Method For Handling Critical Files |
JP4564520B2 (ja) | 2007-08-31 | 2010-10-20 | 株式会社東芝 | 半導体記憶装置およびその制御方法 |
US8566504B2 (en) * | 2007-09-28 | 2013-10-22 | Sandisk Technologies Inc. | Dynamic metablocks |
KR101077339B1 (ko) | 2007-12-28 | 2011-10-26 | 가부시끼가이샤 도시바 | 반도체 기억 장치 |
JP5010505B2 (ja) | 2008-03-01 | 2012-08-29 | 株式会社東芝 | メモリシステム |
JP5032371B2 (ja) | 2008-03-01 | 2012-09-26 | 株式会社東芝 | メモリシステム |
JP4498426B2 (ja) * | 2008-03-01 | 2010-07-07 | 株式会社東芝 | メモリシステム |
JP2009211233A (ja) | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
JP2009211234A (ja) | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
JP4745356B2 (ja) * | 2008-03-01 | 2011-08-10 | 株式会社東芝 | メモリシステム |
JP4691122B2 (ja) | 2008-03-01 | 2011-06-01 | 株式会社東芝 | メモリシステム |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
JP2010009548A (ja) | 2008-06-30 | 2010-01-14 | Toshiba Corp | 記憶装置、制御装置、記憶システム、および記憶方法 |
JP2010015195A (ja) | 2008-06-30 | 2010-01-21 | Toshiba Corp | 記憶制御装置及び記憶制御方法 |
JP4551958B2 (ja) | 2008-12-22 | 2010-09-29 | 株式会社東芝 | 半導体記憶装置および半導体記憶装置の制御方法 |
JP5198245B2 (ja) | 2008-12-27 | 2013-05-15 | 株式会社東芝 | メモリシステム |
JP5317689B2 (ja) | 2008-12-27 | 2013-10-16 | 株式会社東芝 | メモリシステム |
JP2010157130A (ja) | 2008-12-27 | 2010-07-15 | Toshiba Corp | メモリシステム |
JP5268710B2 (ja) | 2009-02-27 | 2013-08-21 | 株式会社東芝 | 半導体記憶装置 |
JP5341584B2 (ja) | 2009-03-17 | 2013-11-13 | 株式会社東芝 | コントローラ、及びメモリシステム |
JP5404483B2 (ja) | 2010-03-17 | 2014-01-29 | 株式会社東芝 | メモリシステム |
JP5066209B2 (ja) | 2010-03-18 | 2012-11-07 | 株式会社東芝 | コントローラ、データ記憶装置、及びプログラム |
JP2012008651A (ja) | 2010-06-22 | 2012-01-12 | Toshiba Corp | 半導体記憶装置、その制御方法および情報処理装置 |
JP2012128643A (ja) | 2010-12-15 | 2012-07-05 | Toshiba Corp | メモリシステム |
US20150120988A1 (en) * | 2013-10-28 | 2015-04-30 | Skymedi Corporation | Method of Accessing Data in Multi-Layer Cell Memory and Multi-Layer Cell Storage Device Using the Same |
-
2008
- 2008-12-25 KR KR1020097018224A patent/KR101077339B1/ko not_active IP Right Cessation
- 2008-12-25 EP EP08868057.4A patent/EP2225643B1/en active Active
- 2008-12-25 WO PCT/JP2008/073950 patent/WO2009084724A1/en active Application Filing
- 2008-12-25 JP JP2009535161A patent/JP4533968B2/ja not_active Expired - Fee Related
- 2008-12-25 CN CN200880008447.6A patent/CN101632068B/zh not_active Expired - Fee Related
- 2008-12-26 TW TW97151099A patent/TWI396083B/zh not_active IP Right Cessation
-
2009
- 2009-09-02 US US12/552,330 patent/US8065470B2/en active Active
- 2009-09-02 US US12/552,461 patent/US7953920B2/en not_active Expired - Fee Related
- 2009-09-02 US US12/552,442 patent/US8065471B2/en active Active
- 2009-09-02 US US12/552,403 patent/US7962688B2/en not_active Expired - Fee Related
-
2010
- 2010-06-14 JP JP2010134864A patent/JP5039177B2/ja not_active Expired - Fee Related
- 2010-06-14 JP JP2010134862A patent/JP5039175B2/ja not_active Expired - Fee Related
- 2010-06-14 JP JP2010134863A patent/JP5039176B2/ja not_active Expired - Fee Related
- 2010-06-14 JP JP2010134861A patent/JP5039174B2/ja active Active
-
2011
- 2011-10-12 US US13/271,838 patent/US20120033496A1/en not_active Abandoned
-
2012
- 2012-08-09 US US13/571,034 patent/US8782331B2/en active Active
-
2014
- 2014-05-20 US US14/282,242 patent/US9134924B2/en active Active
-
2015
- 2015-08-10 US US14/822,138 patent/US9703486B2/en active Active
-
2017
- 2017-06-08 US US15/617,220 patent/US10248317B2/en active Active
-
2019
- 2019-03-26 US US16/364,280 patent/US10845992B2/en active Active
-
2020
- 2020-10-29 US US17/083,529 patent/US11513682B2/en active Active
-
2022
- 2022-10-27 US US17/974,740 patent/US11960719B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060179212A1 (en) | 2005-02-07 | 2006-08-10 | Kim Jin-Hyuk | Flash memory control devices that support multiple memory mapping schemes and methods of operating same |
US20070028034A1 (en) | 2005-07-29 | 2007-02-01 | Sony Corporation | Computer system |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11960719B2 (en) | Semiconductor storage device with volatile and nonvolatile memories to allocate blocks to a memory and release allocated blocks | |
KR101079936B1 (ko) | 메모리 시스템 | |
US8108593B2 (en) | Memory system for flushing and relocating data | |
US20140250264A1 (en) | Memory system | |
US20110022784A1 (en) | Memory system |
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 | ||
LAPS | Lapse due to unpaid annual fee |