KR20170058278A - 메모리 디바이스들 및 방법들 - Google Patents

메모리 디바이스들 및 방법들 Download PDF

Info

Publication number
KR20170058278A
KR20170058278A KR1020160147560A KR20160147560A KR20170058278A KR 20170058278 A KR20170058278 A KR 20170058278A KR 1020160147560 A KR1020160147560 A KR 1020160147560A KR 20160147560 A KR20160147560 A KR 20160147560A KR 20170058278 A KR20170058278 A KR 20170058278A
Authority
KR
South Korea
Prior art keywords
nand flash
flash chip
dram
memory
chips
Prior art date
Application number
KR1020160147560A
Other languages
English (en)
Other versions
KR101823983B1 (ko
Inventor
모니쉬 샤
Original Assignee
구글 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 인코포레이티드 filed Critical 구글 인코포레이티드
Publication of KR20170058278A publication Critical patent/KR20170058278A/ko
Application granted granted Critical
Publication of KR101823983B1 publication Critical patent/KR101823983B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

메모리 디바이스는 복수의 NAND 플래시 칩들, NAND 플래시 칩들과 데이터 통신하는 DRAM(dynamic random access memory) 부분, 및 제어기를 포함한다. 각각의 NAND 플래시 칩은 제 1 저장 용량을 갖고, 메모리 섹션을 포함하고, 각각의 메모리 섹션은 복수의 페이지들을 포함한다. DRAM 부분은 적어도 제 1 저장 용량만큼 큰 제 2 저장 용량을 갖는다. 제어기는 데이터를 기록하기 위해 현재 선택된 NAND 플래시 칩으로서 NAND 플래시 칩들 중 하나를 선택하고, 현재 선택된 NAND 플래시 칩 내의 모든 유효 페이지들을 DRAM 부분으로 복제하고, NAND 플래시 칩들 중 하나 내의 특정 물리적 위치로 맵핑되는 논리적 메모리 위치로의 기록 요청에 응답하여, 특정 물리적 위치를 포함하는 특정 페이지로의 기록 위해 현재 선택된 NAND 플래시 칩을 할당하도록 구성된다.

Description

메모리 디바이스들 및 방법들{MEMORY DEVICES AND METHODS}
[0001] 본 명세서는 일반적으로 메모리 시스템들에 관한 것이다.
[0002] 다양한 컴퓨터들 및 유사한 시스템들을 위한 데이터 및 명령들을 유지 및 저장하기 위해 매우 다양한 메모리 디바이스들이 사용될 수 있다. 종래의 컴퓨팅 시스템들에서, DRAM(Dynamic Random Access Memory) 기술은 전형적으로 애플리케이션이 고속으로 동작하기 위해 컴퓨터의 동적 메모리를 동작시키는데 채용되었다. 그러나, 컴퓨터 시스템들 내의 메인 메모리로서 사용되는 DRAM은 더 이상 과거에서와 같이 빠르게 스케일링하지 않는다. 결과적으로, DRAM 저장소는 컴퓨팅 환경들에서 제한된 자원이 되고 있다.
[0003] 제한된 DRAM을 해결하기 위해, 디스크 드라이브들은 빈번하지 않게 사용되는 메모리 데이터를 DRAM으로부터 디스크 드라이브로 복제하기 위해 스왑 공간(swap space)으로서 사용될 수 있다. 이어서, 데이터가 다음에 사용될 때, 데이터는 DRAM으로 다시 복제될 수 있다. 그러나, 일반적으로, 그 프로세스는 심각한 성능 결과들을 갖는다. 따라서, 그 프로세스는 현대 서버들에서 좀처럼 사용되지 않는다. 그러한 성능 결과들을 해결하기 위해, NAND 플래시-기반 고체-상태 드라이브들(SSD들)은 스왑 공간으로서 사용될 수 있다. 그러나, 실제로 NAND 플래시-기반 SSD들의 사용은 성능에 대한 바람직하지 않은 영향을 가질 수 있다. 예를 들면, 플래시-기반 메모리는, 메인 메모리에 대한 DRAM을 전체적으로 채용하는 종래의 시스템들에서와 같이 개별적인 어드레스들 대신에 전체 섹터들을 업데이트해야 하는 것과 연관된 레이턴시 및 데이터에 대한 더 느린 기록 시간들을 포함하는 특정 제한들을 갖는다.
[0004] 본 명세서에 설명된 주제의 하나의 혁신적인 양상은 복수의 NAND 플래시 칩들, NAND 플래시 칩들과 데이터 통신하는 DRAM(dynamic random access memory) 부분, 및 제어기를 포함하는 메모리 디바이스에서 구현된다. 복수의 NAND 플래시 칩들 각각은 메모리 섹션을 포함하여, 각각의 메모리 섹션은 복수의 페이지들을 포함하고, 각각의 NAND 플래시 칩은 제 1 저장 용량을 갖는다. DRAM 부분은 적어도 복수의 NAND 플래시 칩들 각각의 제 1 저장 용량만큼 큰 제 2 저장 용량을 갖는다. 제어기는 데이터를 기록하기 위해 현재 선택된 NAND 플래시 칩으로서 NAND 플래시 칩들 중 하나를 선택하고, 현재 선택된 NAND 플래시 칩들 내의 모든 유효 페이지들을 DRAM 부분으로 복제하도록 구성된다. 제어기는 또한, NAND 플래시 칩들 중 하나 내의 특정 물리적 위치로 맵핑되는 논리적 메모리 위치로의 기록 요청에 응답하여, 특정 물리적 위치를 포함하는 특정 페이지로의 기록을 위해 현재 선택된 NAND 플래시 칩을 할당하도록 구성된다.
[0005] 특정 구현들에서, 제어기는 현재 선택된 NAND 플래시 칩이 풀(full)인 것으로 식별된 후에 데이터를 기록하기 위한 큐잉된 NAND 플래시 칩으로서 복수의 NAND 플래시 칩들 중 다른 하나를 선택하고, 큐잉된 NAND 플래시 칩 내의 모든 유효 페이지들을 DRAM 부분으로 복제하도록 구성된다. 특정 구현들에서, 제어기는 복수의 NAND 플래시 칩들에 저장된 특정 페이지를 액세스하기 위한 요청에 응답하여 복수의 NAND 플래시 칩들로부터의 특정 페이지를 DRAM을 포함하는 메인 메모리로 판독하도록 구성된다.
[0006] 본 명세서에 설명된 주제의 하나의 혁신적인 양상은 방법들에서 구현되고, 방법들은 데이터를 기록하기 위해 현재 선택된 NAND 플래시 칩으로서 복수의 NAND 플래시 칩들 중 하나를 선택하는 동작 ― 복수의 NAND 플래시 칩들 각각은 메모리 섹션을 포함하고, 각각의 메모리 섹션은 복수의 페이지들을 포함하고, 각각의 NAND 플래시 칩은 제 1 저장 용량을 가짐 ― , 현재 선택된 NAND 플래시 칩 내의 모든 유효 페이지들을, NAND 플래시 칩들과 데이터 통신하는 DRAM(dynamic random access memory) 부분으로 복제하는 동작 ― DRAM 부분은 적어도 복수의 NAND 플래시 칩들 각각의 제 1 저장 용량만큼 큰 제 2 저장 용량을 가짐 ― , 및 NAND 플래시 칩들 중 하나 내의 특정 물리적 위치로 맵핑되는 논리적 메모리 위치로의 기록 요청에 응답하여, 특정 물리적 위치를 포함하는 특정 페이지에 기록하기 위해 현재 선택된 NAND 플래시 칩을 할당하는 동작을 포함한다.
[0007] 일반적으로, 본 명세서에 설명된 주제의 다른 양상은, 현재 선택된 NAND 플래시 칩이 풀인 것으로 식별된 후에, 데이터를 기록하기 위해 큐잉된 NAND 플래시 칩으로서 복수의 NAND 플래시 칩들 중 다른 하나를 선택하는 동작, 및 큐잉된 NAND 플래시 칩 내의 모든 유효 페이지들을 DRAM 부분으로 복제하는 동작을 포함하는 방법들에서 구현될 수 있다.
[0008] 본 명세서에 설명된 주제의 다른 양상은, 복수의 NAND 플래시 칩들에 저장된 특정 페이지를 액세스하기 위한 요청에 응답하여, 복수의 NAND 플래시 칩들로부터의 특정 페이지를 DRAM을 포함하는 메인 메모리로 판독하는 동작들을 포함하는 방법들에서 구현될 수 있다.
[0009] 이들 양상들의 다른 실시예들은 방법들의 동작들을 수행하도록 구성되고 컴퓨터 저장 디바이스들 상에서 인코딩된 대응하는 시스템들, 장치 및 컴퓨터 프로그램들을 포함한다.
[0010] 이들 및 다른 구현들 각각은 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 예를 들면, 복수의 NAND 플래시 칩들 중 다른 하나는 복수의 NAND 플래시 칩들 중 가장 적은 수의 유효 페이지들을 갖는 것에 기초하여 큐잉된 NAND 플래시 칩으로서 선택된다. 특정 구현들에서, 현재 선택된 NAND 플래시 칩에 데이터를 기록하기 위한 특정 물리적 위치는 (i) 최소 액세스된 페이지 및 (ii) 최소 최근에 사용된 페이지 중 적어도 하나에 기초하여 결정된다.
[0011] 특정 구현들에서, 메모리 섹션은 각각의 NAND 플래시 칩의 파티션(partition)을 포함하고, 파티션들은 동일한 각각의 NAND 플래시 칩의 다른 파티션에서의 기록 동작 동안에 각각의 NAND 플래시 칩의 제 1 파티션에서 판독 동작을 허용한다. 특정 구현들에서, 메모리 섹션은 각각의 구성요소 NAND 플래시 칩을 포함한다.
[0012] 특정 구현들에서, 각각의 NAND 플래시 칩은 다수의 파티션들을 포함하고, 각각의 파티션은 특정 저장 용량을 갖고, DRAM 부분의 제 2 저장 용량은 적어도 각각의 파티션의 특정 저장 용량만큼 크다. 특정 구현들에서, 각각의 NAND 플래시 칩은 다수의 파티션들을 포함하고, 각각의 파티션은 특정 저장 용량을 갖고, DRAM 부분의 제 2 저장 용량은 각각의 파티션의 특정 저장 용량의 크기와 대략 동일하거나 대략 2 배이다.
[0013] 특정 구현들에서, 복수의 NAND 플래시 칩들은 입력/출력(I/O) 버스에 커플링된 모듈의 부분이고, 모듈은 DRAM 부분을 더 포함하고, DRAM 부분의 제 2 저장 용량은 각각의 NAND 플래시 칩의 제 1 저장 용량의 크기의 대략 2 배이다. 특정 구현들에서, 복수의 NAND 플래시 칩들은 입력/출력(I/O) 버스에 커플링되고, DRAM 부분은 DRAM을 포함하는 메인 메모리의 부분이다. 특정 구현들에서, 복수의 NAND 플래시 칩들 및 DRAM 부분은 모듈의 부분이고, DRAM 부분의 제 2 저장 용량은 적어도 각각의 NAND 플래시 칩의 제 1 저장 용량의 2 배만큼 크다.
[0014] 본 발명의 하나 이상의 실시예들의 세부사항들은 첨부된 도면들 및 아래의 설명에 제시된다. 본 발명의 다른 특징들 및 이점들은 설명, 도면들 및 청구항들로부터 명백해질 것이다.
[0015] 도 1은 본 개시의 구현들에 따른 메모리 디바이스를 포함하는 시스템의 예를 도시한다.
[0016] 도 2a는 본 개시의 구현들에 따른 메모리 디바이스를 포함하는 시스템의 예를 도시한다.
[0017] 도 2b는 본 개시의 구현들에 따른 메모리 디바이스를 포함하는 시스템의 예를 도시한다.
[0018] 도 2c는 본 개시의 구현들에 따른 메모리 디바이스를 포함하는 시스템의 예를 도시한다.
[0019] 도 3은 본 개시의 구현들에 따른 NAND 플래시 모듈의 예를 도시한다.
[0020] 도 4는 본 개시의 구현들에 따른 방법에 대한 예시적인 흐름도를 도시한다.
[0021] 다양한 도면들에서 동일한 참조 번호들 및 지정들은 동일한 엘리먼트들을 표시한다.
[0022] 아래에 설명되는 메모리 시스템은 DRAM의 부분과 데이터 통신하는 NAND 플래시 칩들을 포함한다. 각각의 NAND 플래시 칩은 복수의 페이지들을 갖는 메모리 섹션을 정의하고, 각각의 NAND 플래시 칩은 제 1 저장 용량을 갖는다. DRAM 부분은 NAND 플래시 칩들과 데이터 통신한다. DRAM 부분은 적어도 NAND 플래시 칩들 각각의 제 1 저장 용량만큼 큰 제 2 저장 용량을 갖는다.
[0023] 메모리 시스템은 또한 데이터를 기록하기 위해 현재 선택된 NAND 플래시 칩으로서 NAND 플래시 칩들 중 하나를 선택하고, 이어서 현재 선택된 NAND 플래시 칩 내의 모든 유효 페이지들을 DRAM 부분으로 복제하도록 구성된 제어기를 포함한다.
[0024] NAND 플래시 칩들 중 하나 내의 특정 물리적 위치로 맵핑되는 논리적 메모리 위치로의 기록 요청에 응답하여, 제어기는 특정 물리적 위치를 포함하는 특정 페이지로의 기록을 위해 현재 선택된 NAND 플래시 칩을 할당한다.
[0025] 특정 구현들에서, 페이지는 최소 액세스된 페이지, 최소 최근에 사용된 페이지 등 또는 이들의 임의의 조합과 같이 특정 메트릭들에 기초하여 메인 메모리(예를 들면, DRAM)로부터 제거되고 NAND 플래시 칩에 기록되도록 선택될 수 있다.
[0026] 이들 메모리 시스템들은 단일 패키징된 디바이스 상에 포함될 수 있거나, 컴퓨터 디바이스 내에 분배될 수 있다. 도 1-2c는 메모리 시스템이 상이한 변화들로 구현될 수 있는 방법의 예시적인 예시들이다.
[0027] 도 1은 본 개시의 구현들에 따른 메모리 디바이스를 포함하는 시스템(100)의 예를 도시한다. 시스템(100)은 CPU(central processing unit)(110)와 같은 프로세서, DRAM 부분(120), 입력/출력(I/O) 버스(130), HDD(hard disk drive)와 같은 디스크 드라이브(140) 및 NAND 플래시 메모리 부분(150)을 포함할 수 있다. I/O 버스(130)는 입력 및 출력 디바이스들이 CPU(110)와 통신하기 위해 사용되는 경로일 수 있다. I/O 버스는, 예를 들면, PCIe(Peripheral Component Interconnect Express)일 수 있다. 디스크 드라이브(140)는 데이터의 장기간 저장을 위해 사용될 수 있다.
[0028] 시스템(100)은 컴퓨팅 디바이스와 같은 전자 디바이스에서 구현될 수 있다. DRAM 부분(120)은 메인 메모리일 수 있고, CPU(110)에 직접적으로 액세스 가능할 수 있다. 메인 메모리는, 예를 들면, 원하는 위치의 메모리 어드레스를 전달하는 어드레스 버스, 및 데이터를 판독 또는 기록하는데 사용되는 데이터 버스를 사용하여 프로세서(예를 들면, CPU(110))에 연결하는 1차 저장소일 수 있다.
[0029] 스왑 공간 디바이스로서 플래시 메모리를 사용할 때, 플래시 메모리로 기록하는 것은 소거 동작 다음에 프로그램 동작을 요구한다. 그러한 동작들은 전형적으로 판독 동작들보다 훨씬 더 느리고, 그러한 동작들이 발생하는 동안에, 판독 동작들이 차단된다. 따라서, 판독들의 평균 및 테일(tail) 레이턴시는 불리하게 증가될 수 있다.
[0030] 이전 단락에 설명된 이슈들을 해결하기 위해, 임의의 정해진 시간에서, 하나의 NAND 플래시 칩이 기록을 위해 선택될 수 있다. 선택된 NAND 플래시 칩 내의 모든 유효 페이지들은 DRAM 부분으로 판독될 수 있어서, 그 NAND 플래시 칩으로부터 판독할 필요가 없다. 오히려, 선택된 NAND 플래시 칩 내의 유효 페이지들이 판독된 DRAM 부분으로부터 판독들이 발생할 수 있다. 선택된 NAND 플래시 칩에 대해 모든 새로운 기록들이 이루어질 수 있다.
[0031] 또한, 일부 구현들에서, 다음의 기록을 위해 다른 NAND 플래시 칩이 큐잉될 수 있다. 제 2 NAND 플래시 칩이 큐잉된 NAND 플래시 칩으로서 선택되는 경우에, 선택된 NAND 플래시 칩 및 큐잉된 NAND 플래시 칩 둘 모두 내의 모든 유효 페이지들은 DRAM 부분으로 판독될 수 있어서, 그러한 2 개의 NAND 플래시 칩들로부터 판독될 필요가 없다. 제 1, 선택된 NAND 플래시 칩에 대해 모든 새로운 기록들이 이루어질 수 있다. 그러한 제 1 NAND 플래시 칩이 풀일 때, 큐잉된 NAND 플래시 칩에 대해 후속 기록들이 이루어질 수 있고, 이어서 이것은 기록을 위한 현재 NAND 플래시 칩이 될 수 있다. 새로운 NAND 플래시 칩들이 다음의 큐잉된 칩으로서 선택될 수 있고, 다음의, 큐잉된 NAND 플래시 칩 내의 모든 유효 페이지들이 DRAM 부분으로 판독될 수 있다.
[0032] 더 이상 기록되지 않는, 제 1 선택된 NAND 플래시 칩으로부터의 페이지들은, 필요에 따라, DRAM으로부터 퇴거(evict)될 수 있다. 예를 들면, 각각의 페이지는, 페이지가 더럽지(dirty) 않다면, 폐기되거나, 다시 플래시 메모리에 기록될 수 있다.
[0033] NAND 플래시 칩이 다음의, 큐잉된 NAND 플래시 칩이 되도록 큐잉하기 위해 선택될 때, 선택은 선택될 자격이 있는, 복수의 NAND 플래시 칩들 중 가장 적은 수의 유효 페이지들을 갖는 NAND 플래시 칩에 기초할 수 있다. 때때로, 웨어 레벨링(wear leveling) 이유로, 웨어 레벨링 정책 또는 절차에 기초하여 상이한 선택이 이루어질 수 있다. 웨어 레벨링에 대한 그러한 기술들은 당분야 알려져 있고, 예를 들면, 동적 웨어 레벨링 및 정적 웨어 레벨링의 기술들을 포함한다.
[0034] 앞서 설명된 바와 같이, 시스템은 NAND 플래시 메모리와 별개인 메인 메모리(예를 들면, DRAM)를 가질 수 있고, 여기서 NAND 플래시 메모리는 I/O 버스에 연결되고, DRAM은 I/O 버스에 직접적으로 연결되지 않고, 반면에 NAND 플래시 메모리는 DRAM과 데이터 통신한다. 그러나, 특정 구현들에서, 캐시로서 기능하는 DRAM 부분 및 NAND 플래시 메모리 둘 모두는 메인 메모리 DRAM과 별개인 I/O 버스를 통해 연결될 수 있다. 예를 들면, 도 2a에서, I/O 버스에 연결된 NAND 플래시 메모리와 함께 DRAM 캐시가 도시된다.
[0035] 도 2a는 본 개시의 구현들에 따른 메모리 디바이스를 포함하는 시스템의 예를 도시한다. 도 2a에 도시된 바와 같이, 본 개시의 메모리 디바이스는, 예를 들면, 정상 DRAM DIMM(dual in-line memory module)이 사용되는 방식과 유사하게 서버에 플러깅하는 DIMM일 수 있다. 그러나, 본 개시의 DIMM은 제 1 양의 DRAM(255) 및 제 2, 더 많은 양의 NAND 플래시 메모리(250)를 포함할 수 있다. 예시적인 시스템은 32 GB의 DRAM 및 128 GB의 사용 가능한 NAND 플래시 메모리를 가질 수 있다.
[0036] 도 1에 관련하여 위의 설명과 유사하게, 도 2a에 도시된 시스템(200)은 또한 CPU(central processing unit)(210)와 같은 프로세서, DRAM(220), 입력/출력(I/O) 버스(230), 및 HDD(hard disk drive)와 같은 디스크 드라이브(240)를 포함할 수 있다. 메모리 디바이스는 NAND 플래시 메모리(250) 및 DRAM 부분(255)을 포함할 수 있다.
[0037] DIMM은 또한 DRAM 부분(255) 및 NAND 플래시 메모리(250) 둘 모두를 제어하도록 구성된 제어기를 가질 수 있다. DIMM 및 제어기는 본원에 설명된 스왑 공간으로서 NAND 플래시 메모리(250)를 사용하도록 구성될 수 있다. DRAM 부분(255)은, 현재 기록되는 NAND 플래시 칩을 캐싱(cache)하는데 필요로 되는 양과 대략 동일한 저장 용량을 가질 수 있다. 대안적으로, DRAM 부분(255)은 현재 기록되는 NAND 플래시 칩 및 다음에 기록되는 큐잉된 NAND 플래시 칩을 캐싱하는데 필요로 되는 양과 대략 동일한 저장 용량을 가질 수 있다. DRAM(220)은, 예를 들면, 페이지들이 요청될 때, NAND 플래시 메모리(250)로부터 판독된 페이지들을 저장하는데 사용될 수 있다. 전형적인 페이지 크기는, 예를 들면, 4 KB일 수 있다.
[0038] 32 GB의 DRAM 및 128 GB의 사용 가능한 NAND 플래시 메모리를 갖는 시스템의 위의 예에서, 비록 32 GB의 실제 DRAM만이 존재할지라도, 시스템은 128 GB의 DRAM을 갖는 시스템과 유사한 방식으로 수행할 수 있다. 그 성능은 본원에 설명된 방식으로 사용되는 128 GB의 플래시 메모리를 가짐으로써 생성된다.
[0039] VM(virtual memory) 시스템 또는 관리기는, 프로그램 메모리가 운영 시스템에 따라 실행되는 하나 이상의 프로그램들에 의해 활용되는 방법을 제어할 수 있다. 일반적으로, 데이터가 메인 메모리로부터 페칭(fetch)될 때, 판독 또는 기록 액세스가 검출되는지 여부에 관한 결정이 이루어진다. 그러한 결정은 페이지 폴트 메커니즘 또는 다른 이벤트에서 트리거링될 수 있다. 페이지가 먼저 액세스될 때, 페이지는 플래시 메모리로부터 DRAM으로 복제될 수 있다. VM 시스템은, 이것이 발생할 때, 페이지 폴트를 취할 수 있다. 이어서, 페이지로의 판독들 및 기록들은 DRAM 복제로부터 서빙될 수 있다. 상이한 페이지가 DRAM으로 이동될 필요가 있을 때, 현재 페이지가 더럽지 않을 때 현재 페이지가 간단히 폐기되거나, 다시 플래시 메모리에 기록될 수 있다. 예를 들면, 메인 메모리가 풀이고, 플래시 메모리로부터의 새로운 페이지가 도입될 필요가 있을 때, 페이지는 대체 알고리즘들에 기초하여 선택되고, 더러운 경우 폐기되거나 다시 플래시로 푸싱되고, 즉, 메인 메모리에서 그의 재임(tenure) 동안에 수정될 수 있다.
[0040] 임의의 새로운 메모리가 할당될 필요가 있을 때, 이것은 플래시 메모리로부터 할당될 수 있다. 이것은 캐싱 정책에 따라 DRAM에서 캐싱될 수 있거나 캐싱될 수 없다. 최소 액세스된 페이지, 최소 최근에 사용된 페이지 등 또는 이들의 임의의 조합과 같이, 다양한 그러한 캐싱 정책들이 사용될 수 있다. 캐싱은 페이지들 단위들로 동작할 수 있는 VM 시스템에 의해 관리될 수 있다.
[0041] 플래시 메모리를 사용하는 것은 "기록 시 복제"를 요구할 수 있고, 즉, 논리적 어드레스가 기록될 때마다, 데이터는 새로운 물리적 어드레스에 있을 것이다. 이것은 또한 알려진 맵핑 테이블을 요구한다. 그러나, 본 개시의 구현들은 이러한 맵핑을 달성하기 위해 가상 메모리 페이지 테이블에 의존할 수 있다.
[0042] 위의 도 2a를 참조하여 설명된 바와 같이, 시스템은 NAND 플래시 칩들과 동일한 패키지에 통합된 DRAM 캐시를 가질 수 있다. 그러나, 모든 메모리 컴포넌트들이 동일한 패키지에 포함될 필요는 없다. 예를 들면, 도 2b에서, NAND 플래시 칩들과 별개이지만 여전히 NAND 플래시 칩들과 데이터 통신하는 것으로 DRAM 캐시가 도시된다.
[0043] 특히, 도 2b는 본 개시의 구현들에 따른 메모리 디바이스를 포함하는 시스템의 예를 도시한다. 도 2b에 도시된 시스템(200)은 CPU(central processing unit)(210)와 같은 프로세서, DRAM(220), DRAM 부분(225), 입력/출력(I/O) 버스(230), HDD(hard disk drive)와 같은 디스크 드라이브(240) 및 NAND 플래시 메모리(250)를 포함할 수 있다.
[0044] 도 2b에 도시된 바와 같이, NAND 플래시 메모리(250)는 I/O 버스(230) 상에 있고, 반면에 DRAM 부분(225)은 현재 기록되는 NAND 플래시 칩에 대한 캐시로서 활용되도록 메인 메모리 DRAM(220)로부터 배분될 수 있다. 특정 구현들에서, DRAM 부분(225)은 필요에 따라 동적으로 배분될 수 있다. 또한, DRAM 부분(225)은 현재 기록되는 NAND 플래시 칩 및 다음에 기록될 큐잉된 NAND 플래시 칩에 대한 캐시로서 활용되도록 메인 메모리 DRAM(220)으로부터 배분될 수 있다. DRAM(220)은, 예를 들면, 페이지들이 요청될 때, NAND 플래시 메모리(250)로부터 판독되는 페이지들을 저장하는데 사용될 수 있다.
[0045] 위의 도 2b를 참조하여 설명된 바와 같이, 시스템은 I/O 버스에 개별적으로 연결된 NAND 플래시 메모리를 갖는 메인 메모리 DRAM으로부터 배분된 DRAM 캐시를 가질 수 있다. 그러나, 특정 구현들에서, NAND 플래시 메모리 및 DRAM 둘 모두를 포함하는 하이브리드 DIMM은 메인 메모리 DRAM으로부터 개별적으로 사용될 수 있다. 예를 들면, 도 2c에서, DIMM은 NAND 플래시 메모리 및 DRAM을 갖는 것으로 도시되고, 여기서 DRAM의 부분은 캐시로서 활용되도록 DRAM 부분으로서 배분될 수 있다.
[0046] 도 2c는 본 개시의 구현들에 따른 메모리 디바이스를 포함하는 시스템의 예를 도시한다. 도 2c에 도시된 시스템(200)은 CPU(central processing unit)(210)와 같은 프로세서, DRAM(220), 입력/출력(I/O) 버스(230) 및 HDD(hard disk drive)와 같은 디스크 드라이브(240)를 포함할 수 있다. NAND 플래시 메모리(250) 및 DRAM 부분(270) 둘 모두를 포함하는 DIMM(280)은 DRAM(220)을 포함하는 메인 메모리 DIMM들과 함께 메모리 버스 상에 설치될 수 있다.
[0047] DIMM(280)은 DRAM 부분(270) 및 NAND 플래시 메모리(250) 둘 모두를 제어하도록 구성된 제어기(260)를 포함할 수 있다. DRAM 부분(270)은 현재 기록되는 NAND 플래시 칩에 대한 캐시로서 활용되는 그의 저장 용량의 부분만을 가질 수 있다. 따라서, 현재 기록되는 NAND 플래시 칩에 대한 캐시로서 활용되지 않는 DRAM 부분(270)의 부분은 정상 DRAM으로서 활용될 수 있다. 예를 들면, 캐시로서 활용되지 않는 DRAM 부분(270)의 그 부분은 NAND 플래시 메모리(250) 스왑 공간으로부터 판독되는 페이지들을 저장할 수 있다.
[0048] 특정 구현들에서, DRAM 부분(270)은 현재 기록되는 NAND 플래시 칩 및 다음에 기록되는 큐잉된 NAND 플래시 칩에 대한 캐시로서 활용되는 그의 저장 용량의 부분만을 가질 수 있다. 따라서, 현재 기록되는 NAND 플래시 칩 및 다음에 기록되는 큐잉된 NAND 플래시 칩에 대한 캐시로서 활용되지 않는 DRAM 부분(270)의 부분은, 앞서 설명된 바와 같이, 정상 DRAM으로서 활용될 수 있다.
[0049] 도 1-2c에 관련하여 앞서 언급된 NAND 플래시 메모리는 몇몇의 NAND 플래시 칩들을 포함할 수 있다. 예를 들면, 도 3에서, NAND 플래시 메모리는 몇몇의 NAND 플래시 칩들을 포함하는 메모리 모듈로서 도시되고, 여기서 모듈은 I/O 버스에 연결된다.
[0050] 도 3은 본 개시의 구현들에 따른 NAND 플래시 모듈의 예를 도시한다. NAND 플래시 메모리 부분(150/250)은 제어기(160) 및 한 세트의 NAND 플래시 칩들(170a-170n)을 포함할 수 있다. NAND 플래시 메모리 부분(150/250)은 DRAM 부분(120)과 데이터 통신할 수 있다. NAND 플래시 메모리 부분(150/250)의 원하는 저장 용량을 달성하기 위해 임의의 크기의 임의의 n 개의 NAND 플래시 칩들이 사용될 수 있다. NAND 플래시 메모리 부분(150/250)의 원하는 저장 공간을 생성하기 위해, 일부 오버프로비저닝(overprovisioning)이 요구될 수 있다. 예를 들면, 특정 NAND 플래시 메모리 부분(150/250)에서, 각각의 NAND 플래시 칩은 4 GB일 수 있다. 따라서, NAND 플래시 메모리 부분(150/250)에 대해 128 GB의 저장 공간이 요구되면, 128 GB를 위해 그러한 32 개의 4 GB NAND 플래시 칩들이 요구될 것이다. 예를 들면, 25 퍼센트 오버프로비저닝을 가정하면, 총 40 개의 NAND 플래시 칩들이 제공될 수 있다. 이것은, 예를 들면, 모든 128 GB의 메모리가 사용될 때, 각각의 NAND 플래시 칩이 평균적으로 80 % 차지되고 그렇지 않다면 80 % 미만 차지될 수 있다는 것을 보장한다.
[0051] n 개의 NAND 플래시 칩들(170a-170n) 각각은 하나 이상의 메모리 섹션들을 포함할 수 있다. 다시 말해서, 메모리 섹션은 각각의 구성요소 NAND 플래시 칩일 수 있거나, 각각의 NAND 플래시 칩은 메모리 섹션들로서 하나 이상의 파티션들을 포함할 수 있다. NAND 플래시 칩을 파티션들을 포함하는 경우에, 기록 동작이 하나의 파티션에서 진행 중이면, 그 기록 동작은 동일한 NAND 플래시 칩 상의 임의의 다른 파티션으로의 판독 동작을 방지하지 않는다. 다시 말해서, 파티션들은 각각의 NAND 플래시 칩의 다른 파티션에서의 기록 동작 동안에 각각의 NAND 플래시 칩의 제 1 파티션에서의 판독 동작을 허용한다.
[0052] 특정 구현들에서, 각각의 NAND 플래시 칩은 다수의 파티션들을 포함하고, 각각의 파티션은 특정 저장 용량을 갖는다. 그러한 구현들에서, DRAM 부분의 저장 용량, 예를 들면, 제 2 저장 용량은 구성요소 NAND 플래시 칩의 저장 용량 미만이지만 적어도 각각의 파티션의 특정 저장 용량만큼 클 수 있다. 특히, 특정 구현들에서, DRAM 부분의 제 2 저장 용량은 각각의 파티션의 특정 저장 용량의 크기와 대략 동일하거나 대략 2 배이다.
[0053] NAND 플래시 칩들이 파티션들을 포함하는 경우에, 캐시로서 기능하는 DRAM 부분에 대해, NAND 플래시 칩들이 파티션들을 포함하지 않을 때보다 더 적은 양의 DRAM이 필요로 될 수 있다. 예를 들면, 각각의 NAND 플래시 칩이 16 GB이고, 각각 4 GB의 4 개의 파티션들로 분할되면, NAND 플래시 메모리에 대한 캐시로서 DRAM 부분은 하나의 파티션의 크기와 대략 동일한 4 GB 또는 2 개의 파티션들의 크기와 대략 동일한 8 GB의 저장 용량을 가질 수 있다. 대조적으로, 파티션들 없이, DRAM 부분은 하나의 NAND 플래시 칩의 크기와 대략 동일한 16 GB, 또는 2 개의 NAND 플래시 칩들의 크기오 대략 동일한 32 GB를 가질 수 있다.
[0054] 도 4는 본 개시의 구현들에 따른 방법(400)에 대한 예시적인 흐름도를 도시한다. 스왑 공간으로서 플래시 메모리를 구현하기 위해, 다이 레벨에서 플래시 메모리로의 기록들은 다음의 프로세스(400)에 따라 발생할 수 있다. NAND 플래시 메모리를 구성하는 NAND 플래시 칩들 중 하나가 (410)에서 데이터를 기록하기 위해 현재 선택된 NAND 플래시 칩으로서 선택될 수 있다. 위에 설명된 바와 같이, 각각의 NAND 플래시 칩은 특정 저장 용량을 가질 수 있고, 하나 이상의 페이지들을 포함하는 메모리 섹션을 가질 수 있다. 예를 들면, 페이지 크기는 4 KB일 수 있다. 대안적으로, 페이지 크기는 4 KB보다 더 클 수 있는데, 예를 들면, 4 KB의 임의의 배수, 예를 들면, 8 KB, 256 KB, 2 MB일 수 있다.
[0055] 특정 구현들에서, NAND 플래시 메모리를 구성하는 NAND 플래시 칩들 중 다른 하나는, 현재 선택된 NAND 플래시 칩이 풀인 것으로 식별된 후에, 데이터를 기록하기 위해 큐잉된 NAND 플래시 칩으로서, (420)에서, 선택될 수 있다. 특정 구현들에서, 큐잉된 NAND 플래시 칩이 사용되지 않을 수 있고, 프로세스는 (420)을 포함하지 않을 수 있다. 큐잉된 NAND 플래시 칩이 선택되는 경우에, 현재 선택된 NAND 플래시 칩 및 큐잉된 NAND 플래시 칩 내의 모든 유효 페이지들은, (430)에서, NAND 플래시 칩들과 데이터 통신하는 DRAM 부분으로 복제된다. 큐잉된 NAND 플래시 칩이 사용되지 않는 경우에, 현재 선택된 NAND 플래시 칩 내의 모든 유효 페이지들은, (430)에서, NAND 플래시 칩들과 데이터 통신하는 DRAM 부분으로 복제된다. 앞서 설명된 바와 같이, DRAM 부분은 적어도 NAND 플래시 칩들 각각의 저장 용량만큼 큰 저장 용량을 가질 수 있다.
[0056] (440)에서 NAND 플래시 칩들 중 하나 내의 특정 물리적 위치로 맵핑되는 논리적 메모리 위치로의 기록 요청에 응답하여, 특정 물리적 위치를 포함하는 특정 페이지로의 기록을 위해, 현재 선택된 NAND 플래시 칩이, (450)에서, 할당된다. 따라서, 현재 선택된 NAND 플래시 칩 및 큐잉된 NAND 플래시 칩에 저장된 페이지들로의 판독들 및 기록이 DRAM 복제로부터 서빙될 수 있어서, 현재 선택된 NAND 플래시 칩 및 큐잉된 NAND 플래시 칩으로부터의 어떠한 판독도 발생할 필요가 없다. 오히려, 모든 새로운 기록들은, 예를 들면, 현재 선택된 NAND 플래시 칩이 풀일 때까지 현재 선택된 NAND 플래시 칩으로 갈 수 있다. 이어서, 후속 기록들은 큐잉된 NAND 플래시 칩으로 갈 수 있고, 이것은 기록하기 위한 NAND 플래시 칩이 되고, 새로운 NAND 플래시 칩은 큐잉된 NAND 플래시 칩으로서 선택될 수 있다. 프로세스는 반복되고, 새로운 큐잉된 NAND 플래시 칩 내의 모든 유효 페이지들은 DRAM으로 판독된다. 또한, 더 이상 기록되지 않는 제 1 현재 선택된 NAND 플래시 칩으로부터의 페이지들은 필요에 따라 DRAM으로부터 퇴거될 수 있다.
[0057] 본 개시의 구현들의 설명들이 단일 제어기 및 단일 어셈블리를 포함하지만, 특정 구현들은 2 개의 별개의 제어기들 및 어셈블리들을 포함할 수 있다. 예를 들면, 제어기를 갖는 하나의 어셈블리는 플래시 메모리를 포함할 수 있고, 제어기를 갖는 다른 어셈블리는 DRAM을 포함할 수 있다. 또한, 특정 구현들은 DRAM 캐시 부분에 대한 기존의 시스템 DRAM을 사용할 수 있다.
[0058] 본 개시의 구현들에 따라, 설계될 수 있는 더 빠른 액세스 시간들을 갖는 NAND 플래시 칩들은 훨씬 더 양호한 성능을 제공할 것이다. 예를 들면, NAND 플래시 칩들 자체의 회로 설계를 변경함으로써, 액세스 시간들은 10 마이크로초 미만으로 개선될 수 있다. 또한, NAND 플래시 칩들은 더 넓고 더 빠른 인터페이스들로 설계될 수 있고, 이것은 본 개시의 구현들에 따라 페이지 전송이 더 빠르게 완료되도록 허용한다.
[0059] 다수의 구현들이 설명되었다. 그럼에도 불구하고, 본 개시의 사상 및 범위에서 벗어나지 않고서 다양한 수정들이 이루어질 수 있다는 것이 이해될 것이다. 예를 들면, 위에 도시된 다양한 형태들의 흐름들은 단계들이 재정렬되거나, 부가 또는 제거되어 사용될 수 있다.
[0060] 본 발명의 구현들 및 본 명세서에 설명된 기능 동작들 모두는, 본 명세서에 개시된 구조들 및 그들의 구조적 등가물들을 비롯하여 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어 또는 이들 중 하나 이상의 조합들에서 구현될 수 있다. 본 발명의 구현들은 하나 이상의 컴퓨터 프로그램 제품들, 즉, 데이터 프로세싱 장치에 의한 실행을 위한 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 컴퓨터 판독 가능 매체 상에서 인코딩된 컴퓨터 프로그램 명령들의 하나 이상의 모듈들로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 기계-판독 가능 저장 디바이스, 기계-판독 가능 저장 기판, 메모리 디바이스, 기계-판독 가능 전파 신호를 초래하는 물질의 구성, 또는 이들 중 하나 이상의 조합일 수 있다. 용어 "데이터 프로세싱 장치"는 예로서 프로그래밍 가능 프로세서, 컴퓨터 또는 다수의 프로세서들 또는 컴퓨터들을 포함하여 데이터를 프로세싱하기 위한 모든 장치, 디바이스 및 기계들을 포함한다. 장치는, 하드웨어 이외에, 논의중인 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들면, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 시스템 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인공적으로 생성된 신호, 예를 들면, 적절한 수신기 장치로의 송신을 위해 정보를 인코딩하기 위해 생성된 기계-생성 전기, 광학 또는 전자기 신호이다.
[0061] 본 개시가 많은 세부사항들을 포함하지만, 이들은 청구될 수 있는 범위 또는 본 발명의 범위에 대한 제한으로서가 아니라, 오히려 본 발명의 특정 구현들에 특정될 수 있는 특징들의 설명들로서 해석되어야 한다. 별도의 구현들의 맥락에서 본 명세서에 설명된 특정 특징들은 또한 단일 구현에서 결합하여 구현될 수 있다. 반대로, 단일 구현의 맥락에서 설명된 다양한 특징들은 또한 별도로 다수의 구현들에서 또는 임의의 적합한 부조합으로 구현될 수 있다. 게다가, 특징들이 특정 조합들 및 심지어 이와 같이 초기에 청구된 것으로 동작하는 것으로 위에 설명될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우들에서 조합으로부터 실시될 수 있고, 청구된 조합은 부조합 또는 부조합의 변형에 관련될 수 있다.
[0062] 유사하게, 동작들이 특정한 순서로 도면들에 도시되지만, 이것은 이러한 동작들이 도시한 특정한 순서 또는 순차적 순서로 수행되거나, 모든 예시된 동작들이 원하는 결과들을 달성하기 위해 수행되는 것을 요구하는 것으로 이해되지 않아야 한다. 특정 상황들에서, 멀티태스킹 및 동시의 프로세싱이 유리할 수 있다. 더구나, 위에 설명된 구현들에서 다양한 시스템 컴포넌트들의 분리는 모든 구현들에서의 이러한 분리를 요구하는 것으로 이해되지 않아야 하고, 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로 단일 소프트웨어 제품 내에 함께 통합될 수 있거나 다수의 소프트웨어 제품들 내에 패키징될 수 있다는 것을 이해하여야 한다.
[0063] 따라서, 본 개시의 특정한 구현들이 설명되었다. 다른 구현들이 다음의 청구범위 내에 있다. 예를 들어, 청구항들에 언급된 동작들은 상이한 순서로 수행될 수 있고 원하는 결과들을 여전히 달성할 수 있다. 다수의 구현들이 설명되었다. 그럼에도 불구하고, 본 개시의 사상 및 범위에서 벗어나지 않고서 다양한 수정들이 이루어질 수 있다는 것이 이해될 것이다. 예를 들면, 위에 도시된 다양한 형태들의 흐름들은 단계들이 재정렬되거나, 부가 또는 제거되어 사용될 수 있다. 따라서, 다른 구현들이 다음의 청구항들의 범위 내에 있다.

Claims (20)

  1. 메모리 디바이스로서,
    복수의 NAND 플래시 칩들(flash chips) ― 상기 복수의 NAND 플래시 칩들 각각은 메모리 섹션을 포함하고, 각각의 메모리 섹션은 복수의 페이지들을 포함하고, 각각의 NAND 플래시 칩은 제 1 저장 용량을 가짐 ― ,
    상기 NAND 플래시 칩들과 데이터 통신하는 DRAM(dynamic random access memory) 부분 ― 상기 DRAM 부분은 적어도 상기 복수의 NAND 플래시 칩들 각각의 제 1 저장 용량만큼 큰 제 2 저장 용량을 가짐 ― , 및
    제어기를 포함하고, 상기 제어기는,
    데이터를 기록하기 위해 현재 선택된 NAND 플래시 칩으로서 상기 NAND 플래시 칩들 중 하나를 선택하고,
    상기 현재 선택된 NAND 플래시 칩 내의 모든 유효 페이지들을 상기 DRAM 부분으로 복제하고, 그리고
    상기 NAND 플래시 칩들 중 하나 내의 특정 물리적 위치로 맵핑되는 논리적 메모리 위치로의 기록 요청에 응답하여, 상기 특정 물리적 위치를 포함하는 특정 페이지에 기록하기 위해 상기 현재 선택된 NAND 플래시 칩을 할당하도록 구성되는,
    메모리 디바이스.
  2. 제 1 항에 있어서,
    적어도 하나의 제어기는,
    상기 현재 선택된 NAND 플래시 칩이 풀(full)인 것으로 식별된 후에, 데이터를 기록하기 위해 큐잉된(queued) NAND 플래시 칩으로서 상기 복수의 NAND 플래시 칩들 중 다른 하나를 선택하고, 그리고
    상기 큐잉된 NAND 플래시 칩 내의 모든 유효 페이지들을 상기 DRAM 부분으로 복제하도록 구성되는,
    메모리 디바이스.
  3. 제 2 항에 있어서,
    상기 복수의 NAND 플래시 칩들 중 다른 하나는 상기 복수의 NAND 플래시 칩들 중 가장 적은 수의 유효 페이지들을 갖는 것에 기초하여 큐잉된 NAND 플래시 칩으로서 선택되는,
    메모리 디바이스.
  4. 제 1 항에 있어서,
    상기 현재 선택된 NAND 플래시 칩에 데이터를 기록하기 위한 특정 물리적 위치는 (i) 최소 액세스된 페이지 및 (ii) 최소 최근에 사용된 페이지 중 적어도 하나에 기초하여 결정되는,
    메모리 디바이스.
  5. 제 1 항에 있어서,
    상기 메모리 섹션은 각각의 NAND 플래시 칩의 파티션(partition)을 포함하고,
    파티션들은 동일한 각각의 NAND 플래시 칩의 다른 파티션에서의 기록 동작 동안에 각각의 NAND 플래시 칩의 제 1 파티션에서 판독 동작을 허용하는,
    메모리 디바이스.
  6. 제 1 항에 있어서,
    상기 메모리 섹션은 각각의 구성요소 NAND 플래시 칩을 포함하는,
    메모리 디바이스.
  7. 제 1 항에 있어서,
    상기 복수의 NAND 플래시 칩들은 입력/출력(I/O) 버스에 커플링된 모듈의 부분이고,
    상기 모듈은 상기 DRAM 부분을 더 포함하고,
    상기 DRAM 부분의 제 2 저장 용량은 각각의 NAND 플래시 칩의 제 1 저장 용량의 크기의 대략 2 배인,
    메모리 디바이스.
  8. 제 1 항에 있어서,
    상기 복수의 NAND 플래시 칩들은 입력/출력(I/O) 버스에 커플링되고,
    상기 DRAM 부분은 DRAM을 포함하는 메인 메모리의 부분인,
    메모리 디바이스.
  9. 제 1 항에 있어서,
    상기 복수의 NAND 플래시 칩들 및 상기 DRAM 부분은 메모리 버스에 커플링된 모듈의 부분이고,
    상기 DRAM 부분의 제 2 저장 용량은 적어도 각각의 NAND 플래시 칩의 제 1 저장 용량의 2 배만큼 큰,
    메모리 디바이스.
  10. 제 1 항에 있어서,
    적어도 하나의 제어기는,
    상기 복수의 NAND 플래시 칩들에 저장된 특정 페이지를 액세스하기 위한 요청에 응답하여, 상기 복수의 NAND 플래시 칩들로부터의 특정 페이지를 DRAM을 포함하는 메인 메모리로 판독하도록 구성되는,
    메모리 디바이스.
  11. 방법으로서,
    데이터를 기록하기 위해 현재 선택된 NAND 플래시 칩으로서 복수의 NAND 플래시 칩들 중 하나를 선택하는 단계 ― 상기 복수의 NAND 플래시 칩들 각각은 메모리 섹션을 포함하고, 각각의 메모리 섹션은 복수의 페이지들을 포함하고, 각각의 NAND 플래시 칩은 제 1 저장 용량을 가짐 ― ,
    상기 현재 선택된 NAND 플래시 칩 내의 모든 유효 페이지들을, 상기 NAND 플래시 칩들과 데이터 통신하는 DRAM(dynamic random access memory) 부분으로 복제하는 단계 ― 상기 DRAM 부분은 적어도 상기 복수의 NAND 플래시 칩들 각각의 제 1 저장 용량만큼 큰 제 2 저장 용량을 가짐 ― , 및
    상기 NAND 플래시 칩들 중 하나 내의 특정 물리적 위치로 맵핑되는 논리적 메모리 위치로의 기록 요청에 응답하여, 상기 특정 물리적 위치를 포함하는 특정 페이지에 기록하기 위해 상기 현재 선택된 NAND 플래시 칩을 할당하는 단계를 포함하는,
    방법.
  12. 제 11 항에 있어서,
    상기 현재 선택된 NAND 플래시 칩이 풀인 것으로 식별된 후에, 데이터를 기록하기 위해 큐잉된 NAND 플래시 칩으로서 상기 복수의 NAND 플래시 칩들 중 다른 하나를 선택하는 단계, 및
    상기 큐잉된 NAND 플래시 칩 내의 모든 유효 페이지들을 상기 DRAM 부분으로 복제하는 단계를 더 포함하는,
    방법.
  13. 제 12 항에 있어서,
    상기 복수의 NAND 플래시 칩들 중 다른 하나는 상기 복수의 NAND 플래시 칩들 중 가장 적은 수의 유효 페이지들을 갖는 것에 기초하여 큐잉된 NAND 플래시 칩으로서 선택되는,
    방법.
  14. 제 11 항에 있어서,
    상기 현재 선택된 NAND 플래시 칩에 데이터를 기록하기 위한 특정 물리적 위치는 (i) 최소 액세스된 페이지 및 (ii) 최소 최근에 사용된 페이지 중 적어도 하나에 기초하여 결정되는,
    방법.
  15. 제 11 항에 있어서,
    상기 메모리 섹션은 각각의 NAND 플래시 칩의 파티션을 포함하고,
    파티션들은 동일한 각각의 NAND 플래시 칩의 다른 파티션에서의 기록 동작 동안에 각각의 NAND 플래시 칩의 제 1 파티션에서 판독 동작을 허용하는,
    방법.
  16. 제 11 항에 있어서,
    상기 메모리 섹션은 각각의 구성요소 NAND 플래시 칩을 포함하는,
    방법.
  17. 제 11 항에 있어서,
    상기 복수의 NAND 플래시 칩들은 입력/출력(I/O) 버스에 커플링된 모듈의 부분이고,
    상기 모듈은 상기 DRAM 부분을 더 포함하고,
    상기 DRAM 부분의 제 2 저장 용량은 각각의 NAND 플래시 칩의 제 1 저장 용량의 크기의 대략 2 배인,
    방법.
  18. 제 11 항에 있어서,
    상기 복수의 NAND 플래시 칩들은 입력/출력(I/O) 버스에 커플링되고,
    상기 DRAM 부분은 DRAM을 포함하는 메인 메모리의 부분인,
    방법.
  19. 제 11 항에 있어서,
    상기 복수의 NAND 플래시 칩들 및 상기 DRAM 부분은 모듈의 부분이고,
    상기 DRAM 부분의 제 2 저장 용량은 적어도 각각의 NAND 플래시 칩의 제 1 저장 용량의 2 배만큼 큰,
    방법.
  20. 제 11 항에 있어서,
    상기 복수의 NAND 플래시 칩들에 저장된 특정 페이지를 액세스하기 위한 요청에 응답하여, 상기 복수의 NAND 플래시 칩들로부터의 특정 페이지를 DRAM을 포함하는 메인 메모리로 판독하는 단계를 더 포함하는,
    방법.
KR1020160147560A 2015-11-09 2016-11-07 메모리 디바이스들 및 방법들 KR101823983B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/936,486 2015-11-09
US14/936,486 US9880778B2 (en) 2015-11-09 2015-11-09 Memory devices and methods

Publications (2)

Publication Number Publication Date
KR20170058278A true KR20170058278A (ko) 2017-05-26
KR101823983B1 KR101823983B1 (ko) 2018-01-31

Family

ID=57256152

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160147560A KR101823983B1 (ko) 2015-11-09 2016-11-07 메모리 디바이스들 및 방법들

Country Status (7)

Country Link
US (1) US9880778B2 (ko)
EP (1) EP3166019B1 (ko)
JP (1) JP6339645B2 (ko)
KR (1) KR101823983B1 (ko)
CN (1) CN107025179B (ko)
SG (1) SG10201609225QA (ko)
TW (1) TWI617972B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606484B2 (en) * 2017-06-23 2020-03-31 Google Llc NAND flash storage device with NAND buffer
CN110287128B (zh) * 2019-05-21 2021-06-04 北京融芯微科技有限公司 一种融合闪存的cpu虚拟dram控制器
CN114115507B (zh) * 2021-11-30 2023-08-08 杭州海康威视数字技术股份有限公司 存储器及写数据的方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07114500A (ja) * 1993-10-19 1995-05-02 Matsushita Electric Ind Co Ltd 不揮発性メモリ記憶装置
JPH08129509A (ja) 1994-11-01 1996-05-21 Canon Inc メモリ制御装置及び方法
JP2002251884A (ja) * 2001-02-21 2002-09-06 Toshiba Corp 半導体記憶装置及びそのシステム装置
JP4049297B2 (ja) * 2001-06-11 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
CN1717662B (zh) * 2002-11-28 2010-04-28 株式会社瑞萨科技 存储器模块、存储器系统和信息仪器
US7681004B2 (en) 2005-06-13 2010-03-16 Addmm, Llc Advanced dynamic disk memory module
JP2007041813A (ja) * 2005-08-02 2007-02-15 Toshiba Corp 情報処理システムおよび情報処理方法
US8060696B2 (en) * 2007-04-27 2011-11-15 Siemens Medical Solutions Usa, Inc. Positron emission tomography event stream buffering
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
CN100547566C (zh) 2007-06-28 2009-10-07 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的控制方法
JP2009032324A (ja) 2007-07-26 2009-02-12 Spansion Llc 複数のメモリブロックを備える不揮発性記憶装置
US8185685B2 (en) * 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
US8332572B2 (en) * 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
JP4745356B2 (ja) * 2008-03-01 2011-08-10 株式会社東芝 メモリシステム
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP5032371B2 (ja) 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
KR101067457B1 (ko) * 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
US8738840B2 (en) 2008-03-31 2014-05-27 Spansion Llc Operating system based DRAM/FLASH management scheme
KR101056560B1 (ko) 2009-02-11 2011-08-11 (주)인디링스 고체 상태 디스크 시스템에서 버퍼 캐시의 프로그래밍 방법및 장치
US8566639B2 (en) 2009-02-11 2013-10-22 Stec, Inc. Flash backed DRAM module with state of health and/or status information accessible through a configuration data bus
AU2010264524B2 (en) 2009-06-22 2015-03-19 Ampio Pharmaceuticals, Inc. Method for treatment of diseases
US8296496B2 (en) * 2009-09-17 2012-10-23 Hewlett-Packard Development Company, L.P. Main memory with non-volatile memory and DRAM
US8838903B2 (en) * 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use
JP5010723B2 (ja) * 2010-09-22 2012-08-29 株式会社東芝 半導体記憶制御装置
WO2012048444A1 (en) * 2010-10-14 2012-04-19 Freescale Semiconductor, Inc. Are Memory controller and method for accessing a plurality of non-volatile memory arrays
JP2012133416A (ja) * 2010-12-17 2012-07-12 Toshiba Corp メモリシステム
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US20140281157A1 (en) 2013-03-13 2014-09-18 Kabushiki Kaisha Toshiba Memory system, memory controller and method
JP6021759B2 (ja) 2013-08-07 2016-11-09 株式会社東芝 メモリシステムおよび情報処理装置
KR20150055413A (ko) 2013-11-13 2015-05-21 에스케이하이닉스 주식회사 데이터 저장 장치

Also Published As

Publication number Publication date
US20170131908A1 (en) 2017-05-11
TW201719381A (zh) 2017-06-01
EP3166019A1 (en) 2017-05-10
EP3166019B1 (en) 2021-07-07
CN107025179B (zh) 2020-12-08
TWI617972B (zh) 2018-03-11
US9880778B2 (en) 2018-01-30
SG10201609225QA (en) 2017-06-29
JP2017097861A (ja) 2017-06-01
JP6339645B2 (ja) 2018-06-06
KR101823983B1 (ko) 2018-01-31
CN107025179A (zh) 2017-08-08

Similar Documents

Publication Publication Date Title
US10719393B2 (en) Memory system for controlling nonvolatile memory
JP6832187B2 (ja) データストレージサブシステムにおけるキャッシングのための方法およびシステム
CN109144887B (zh) 存储器系统及控制非易失性存储器的控制方法
CN114402282B (zh) 存取存储的元数据以识别存储数据的存储器装置
US20150095554A1 (en) Storage processor managing solid state disk array
KR20200035311A (ko) 캐시 라인 데이터
JP2022548642A (ja) タイプ付けされていないメモリアクセスのタイプ付けされているメモリアクセスに対するマッピング
JP7427081B2 (ja) メモリ名前空間へデータをバインドするためのメモリシステム
JP2022548887A (ja) メモリタイプへのページテーブルフック
US20170083444A1 (en) Configuring fast memory as cache for slow memory
US11314655B2 (en) Storage device configurable mapping granularity system where data is written without performing read-modify-write operations
KR101823983B1 (ko) 메모리 디바이스들 및 방법들
JP2021506028A (ja) 共通のメモリページからメモリへのキャッシュラインのリンス
JP2019212103A (ja) メモリシステム
US20210374063A1 (en) Method for processing page fault by processor
US11768628B2 (en) Information processing apparatus
CN116710886A (zh) 精简配置的分离式存储器中的页面调度
EP4033346A1 (en) Affinity-based cache operation for a persistent storage device
US11797183B1 (en) Host assisted application grouping for efficient utilization of device resources
EP4120087A1 (en) Systems, methods, and devices for utilization aware memory allocation
US20230019878A1 (en) Systems, methods, and devices for page relocation for garbage collection
CN115809018A (zh) 改善系统的读取性能的设备和方法

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