KR20170099852A - 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치 - Google Patents

고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치 Download PDF

Info

Publication number
KR20170099852A
KR20170099852A KR1020177013818A KR20177013818A KR20170099852A KR 20170099852 A KR20170099852 A KR 20170099852A KR 1020177013818 A KR1020177013818 A KR 1020177013818A KR 20177013818 A KR20177013818 A KR 20177013818A KR 20170099852 A KR20170099852 A KR 20170099852A
Authority
KR
South Korea
Prior art keywords
volatile memory
solid state
state drive
logical blocks
memory chips
Prior art date
Application number
KR1020177013818A
Other languages
English (en)
Other versions
KR102462305B1 (ko
Inventor
아난드 에스. 라말린감
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Priority to KR1020227037879A priority Critical patent/KR20220150437A/ko
Publication of KR20170099852A publication Critical patent/KR20170099852A/ko
Application granted granted Critical
Publication of KR102462305B1 publication Critical patent/KR102462305B1/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)
  • Read Only Memory (AREA)
  • Semiconductor Memories (AREA)

Abstract

고체 상태 드라이브의 제어기는 고체 상태 드라이브의 비휘발성 메모리 내에 저장된 데이터의 리팩킹을 개시하고, 고체 상태 드라이브의 비휘발성 메모리 내에 저장된 데이터의 리프레싱은 고체 상태 드라이브의 비휘발성 메모리 내에 저장된 데이터의 리팩킹 동안 수행된다. 논리적 블록들은 고체 상태 드라이브의 비휘발성 메모리 내에 저장된 데이터가 리팩킹되는 동안 고체 상태 드라이브의 비휘발성 메모리의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 배치된다.

Description

고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치{METHOD AND APPARATUS FOR IMPROVING READ PERFORMANCE OF A SOLID STATE DRIVE}
고체 상태 드라이브(SSD)는 데이터를 지속적으로 저장하기 위해 메모리로서 집적 회로 어셈블리들을 사용하는 데이터 저장 디바이스이다.
NAND SSD들은 그것이 판독 대역폭, 기입 대역폭 및 랜덤 입/출력 동작들에 이를 때 하드 디스크 드라이브들보다 상당한 장점을 갖는다. 이 개선된 대역폭은 전형적으로 판독 및 기입 동작들 동안에 많은 NAND 다이들을 병렬로 동작하게 하는 능력들로부터 비롯된다.
유사한 참조 번호들이 전체에 걸쳐 대응하는 부분들을 나타내는 도면을 이제 참조한다:
도 1은 특정 실시예들에 따른, 3D NAND 칩들을 갖는 SSD가 호스트에 결합된 컴퓨팅 환경의 블록도를 도시하고;
도 2는 특정 실시예들에 따른, SSD 내의 데이터의 예시적인 표현을 나타낸 블록도를 도시하고;
도 3은 특정 실시예들에 따른, SSD 내의 데이터를 리프레시하는 것과 동시에 SSD 내의 데이터를 주기적으로 리팩킹하면서 논리적 블록들을 물리적으로 인접하게 재구성하는 것을 나타낸 블록도를 도시하고;
도 4는 특정 실시예들에 따른, 논리적 블록 어드레스 인접(logical block address adjacency)에 대한 데이터의 재배열이 없는 데이터의 리팩킹을 나타낸 블록도를 도시하고;
도 5는 특정 실시예들에 따른, 논리적 블록 어드레스 인접에 대한 데이터의 재배열이 있는 데이터의 리팩킹을 나타낸 블록도를 도시하고;
도 6은 특정 실시예들에 따른, 데이터를 리프레시하는 것과 동시에 판독 요구들에 대한 개선된 응답을 위해 고체 상태 드라이브들 내에서 오름차순으로 물리적으로 인접하게 논리적 블록들을 리팩킹하고 재구성하는 제1 플로우차트를 도시하고;
도 7은 특정 실시예들에 따른, 데이터를 리프레시하는 것과 동시에 판독 요구들에 대한 개선된 응답을 위해 고체 상태 드라이브들 내에서 오름차순으로 물리적으로 인접하게 논리적 블록들을 리팩킹하고 재구성하는 제2 플로우차트를 도시하고;
도 8은 특정 실시예들에 따른, 4개의 페이지가 동시에 판독되는 것이 허용될 때 예시적인 3D NAND에서의 평면 병렬성(planar parallelism) 및 예시적인 성능 개선을 나타낸 블록도를 도시하고;
도 9는 특정 실시예들에 따른, 컴퓨터 디바이스의 블록도를 도시한다.
많은 유형의 SSD들은 전력 없이 데이터를 유지하고 비휘발성 저장 기술의 유형인 NAND-기반 플래시 메모리를 사용한다. 단일-레벨-셀(SLC) NAND에서, 각각의 셀은 2개의 상태 중 하나의 상태로 존재하고, 셀 당 1 비트의 정보를 저장한다. 멀티-레벨 셀(MLC) NAND는 동일한 수의 트랜지스터들을 사용하여 더욱 많은 비트가 저장되게 하기 위해 셀 당 다수의 레벨을 사용하는 고체-상태 플래시 메모리이다. 3차원(3D) NAND 플래시는 서로의 상부 상에 평면 메모리 셀들의 다수의 층(예를 들어, 32개의 층)을 적층한 플래시 메모리의 유형이다. 일반성의 손실 없이, 3D NAND 플래시의 구조는 트레이 내에 각각의 쿠키가 있는 오븐 선반 내의 다수의 적층된 쿠키 트레이들이 메모리 셀인 것으로 시각화될 수 있다.
NAND는 블록 기반 비휘발성 메모리이다. NAND-기반 플래시 메모리 SSD들은 매모리의 전체 블록들 상에서 동작한다. 메모리 셀에 기입하기 전에, 메모리 셀은 소거될 필요가 있고, 메모리 셀들에의 큰 전압의 인가를 요구하고, 이것은 전체 메모리 셀 블록에 단지 한번 일어날 수 있다. 예를 들어, 데이터의 1킬로바이트(KB)가 128KB의 소거 블록 크기를 갖는 SSD 내의 NAND 디바이스에 기입될 예정이면, SSD는 대상 블록으로부터 127KB를 판독하고, 그 블록을 소거하고 오래된 데이터 플러스 새로운 데이터를 다시 그 블록 내로 기입할 필요가 있다. SSD 펌웨어는 블록들을 사전 소거하여 새로운 데이터를 이들 사전 소거된 블록들에 기입하기를 시도할 수 있다. 기존의 SSD들은 "데이터 리프레시"를 위한 메커니즘들을 갖고, 여기서 데이터 리프레시 시에 데이터는 NAND 셀들 내의 전하 손실로 인한 데이터 손실을 방지하기 위해 주기적으로 재기입된다.
다음의 설명에서, 그 일부를 형성하고 몇 가지 실시예들을 도시한 첨부 도면을 참조한다. 다른 실시예들이 이용될 수 있고 구조적 및 동작 변화들이 이루어질 수 있다는 것이 이해된다.
특정 상황들에서, SSD들을 위한 바람직한 용량은 약 200GB이다. 200GB SSD는 25개의 8GB MLC NAND 다이들을 포함할 수 있다. 특정 3D NAND들로 3D NAND 다이 당 저장 용량은 TLC가 3D NAND 다이에서 사용될 때 3D NAND 다이 당 48GB와 같이, 8GB보다 상당히 많을 수 있다. 이것은 200GB SSD가 단지 5개의 48GB 3D NAND 다이들을 가질 수 있다는 것을 의미할 수 있다. 8GB로부터 48GB로의 NAND 다이들의 용량의 증가는 SSD에 이용가능한 NAND 병렬성을 5의 인자만큼 감소시킨다. 판독과 기입 대역폭 둘 다는 리소그래피가 계속 축소함에 따라 다이 당 더 낮은 비트를 취한다. 이 예에 대한 순수한 결과는, 동시실행(concurrency)이 5배 감소함으로 인해 악화되어 판독들과 기입들 둘 다에 대해 다이 당 대역폭이 감소한다는 것이다.
NAND SSD들은 랜덤 판독 동작들을 위해 효율적이다. 페이지 크기들이 더 커지고 동시실행이 줄어들고 Tread(판독과 관련된 시간)이 배가하면(TLC에 대한 100초와 MLC에 대한 80초 사이), 초당 판독 동작들에서 20배 감소가 있을 수 있다.
기존의 NAND 제어기 기술은 여러 개의 NAND 다이들이 판독들 및 기입들을 병렬로 수행하게 하는 것에 기초한다. 이러한 기존의 NAND 제어기들을 위한 메커니즘들은 항상 다이 당 이용가능한 NAND 대역폭을 최적화하는 것에 집중할 수 없고 대신에 다이 당 내구성을 최대화하는 것에 집중할 수 있다. 특정 고밀도 3D NAND로, 200GB SSD는 단지 5개의 3D NAND 다이들을 가질 수 있다. 5개의 3D NAND 다이들을 갖는 이 SSD는 호스트 기입들의 20GB/일 및 3의 내부 기입 확장(SSD에 의한 60GB NAND 기입들/일)을 가정하면 10년의 내구성(즉, 유용한 수명)을 가질 수 있다. 이 내구성은 SSD 내의 소자들의 나머지가 3년 내지 5년의 수명을 가질 수 있음에 따라 SSD들의 전형적인 유용한 수명의 3년 내지 5년을 위해 필요할 수 있는 것보다 훨씬 넉넉하다.
특정 실시예들은 SSD의 내구성과 절충하면서 SSD에 결합된 호스트에 가시적인 다이 당 판독 대역폭을 최대화하는 데 도움을 주는 메커니즘들을 제공한다. 이러한 실시예들에서, 판독 동작들의 성능이 향상된다. 이러한 실시예들에서, 데이터의 리팩킹은 SSD 내의 데이터를 리프레시하는 것과 동시에 논리적 블록 어드레스(LBA) 인접에 대한 데이터의 재배열로 수행된다. 16KB 페이지 크기 및 4개의 평면에서의 평면 병렬성을 지원하는 3D NAND 디바이스들을 갖는 SSD의 실시예에서, 4KB 분산된 내용이 저장된 실시예의 성능의 1600%인 성능이 달성될 수 있다.
도 1은 특정 실시예들에 따른, 복수의 3D NAND 칩들(104a ... 104n)을 갖는 고체 상태 드라이브(102)가 호스트(106)에 결합된 컴퓨팅 환경(100)의 블록도를 도시한다. (패키지라고도 하는) 칩은 복수의 NAND 디바이스들로 구성되고, 여기서 각각의 NAND 디바이스는 복수의 다이들을 제어한다. 도 1에서 설명된 실시예들은 또한 고용량 MLC NAND 칩들에 적용될 수 있다.
고체 상태 드라이브(102)는 NAND 메모리, NOR 메모리 또는 일부 다른 적합한 비휘발성 메모리와 같은, 비휘발성 메모리로 구성될 수 있다. 특정 실시예들에서, 고체 상태 드라이브(102)는 수 테라바이트들 이상의 데이터를 저장할 수 있다. 특정 실시예들은 다른 유형들의 비휘발성 메모리, 위상 변화 메모리(PCM), 3차원 크로스 포인트 메모리, 저항 메모리, 나노와이어 메모리, 강유전성 트랜지스터 랜덤 액세스 메모리(FeTRAM), 멤리스터 기술을 결합한 자기저항 랜덤 액세스 메모리(MRAM), 스핀 트랜스퍼 토크(STT)-MRAM, 바이트 어드레스가능한 랜덤 액세스 비휘발성 메모리 등에 적용될 수 있다.
특정 실시예들에서, 호스트(106)는 퍼스널 컴퓨터, 메인프레임, 전화 디바이스, 스마트폰, 저장 제어기, 블레이드 컴퓨터, 메모리를 갖는 프로세서 등과 같은 임의의 적합한 컴퓨터 디바이스로 구성될 수 있다. 특정 대안적 실시예들에서, 컴퓨터 디바이스(106)는 (주변 컴포넌트 인터커넥트(PCIe), 시리얼 어드밴스트 기술 어태치먼트(SATA), 시리얼 어태치트 소형 컴퓨터 시스템 인터페이스(SAS)와 같은) 버스, 또는 인터넷, 저장 영역 네트워크(SAN), 근거리 네트워크(LAN) 등과 같은, 네트워크를 통해 SSD(102)와 통신할 수 있다. SATA 규격의 추가 상세들은 오레곤주 비버톤(Beaverton, OR)의 SATA 국제기구(SATA-IO)에 의해, 2013년 8월 릴리스된, "Serial ATA 규격, 개정안 3.2"라고 하는 발표에서 발견될 수 있다. 또 하나의 예에서, 인터페이스 및/또는 상호접속 프로토콜은 NVMe(Non-Volatile Memory Host Controller Interface Express)에 따를 수 있고 및/또는 호환가능할 수 있다. NVMe의 추가 상세들은 NVM Express™ Work Group에 의해 2014년 11월 3일자 릴리스된, "NVM Exress™, 개정안 1.2"라고 하는 발표, 및/또는 이 규격의 초기 및/또는 후속 버전들에서 발견될 수 있다(NVM Express는 NVM Express, Inc.의 상표임).
특정 실시예들에서, 고체 상태 드라이브(102)는 I/O 동작들을 수행하기 위해 고체 상태 드라이브(102)와 상호작용하는 운영 체제를 갖는 컴퓨터 디바이스(도시 안됨) 내에 포함될 수 있다. 운영 체제는 4KB의 페이지 크기를 사용할 수 있다.
3D NAND 칩들(104a ... 104n)은 각각 16KB의 페이지 크기를 가질 수 있는 반면, 호스트(106)는 판독 동작들을 위해 4KB의 페이지 크기를 사용할 수 있다. 바꾸어 말하면, 파일 시스템 클러스터/노드 크기는 4KB이고 여기서 파일 시스템 클러스터/노드는 파일 시스템에 의해 할당된 공간의 입도의 단위에 대응하고, NAND 페이지 크기는 16KB이고 여기서 NAND 페이지는 NAND로의 기입의 입도의 단위이다. 3D NAND 칩들을 위한 16KB의 페이지 크기는 데이터가 요구될 때 16KB의 적어도 하나의 페이지가 복귀된다는 것을 의미한다. 예를 들어, 4KB 판독 요구가 NAND 칩에 대해 이루어질 때 데이터의 적어도 16KB가 복귀된다.
고체 상태 드라이브(102)는 펌웨어, 하드웨어, 소프트웨어 또는 이들의 임의의 조합에서 구현되는 제어기(108)를 포함한다. 제어기(108)는 논리적 블록 어드레스(LBA) 인접에 대한 재배열을 하는 리팩킹 애플리케이션(a repacking with rearrangement for logical block address (LBA) adjacency application)이라고도 하는 애플리케이션(110)을 포함한다. LBA 인접에 대한 재배열을 하는 리팩킹은 데이터의 리프레싱 동안 실행된다. 제어기(108)는 4KB의 페이지 크기를 사용하는 인다이렉션 테이블(112)을 또한 포함한다.
특정 실시예들에서, 고체 상태 드라이브(102)에서 단일 칩 선택을 갖는 3D NAND 칩(참조 번호들(114a ... 114n)) 당 단지 하나의 채널이 있을 수 있고 결과적으로 병렬성이 복수의 3D NAND 칩들(104a ... 104n) 중 각각의 3D NAND 칩으로부터의 판독 동작들에서 가능하지 않을 수 있다. 다른 실시예들에서 평면 병렬성이 가능할 수 있다. 특정 실시예들에서, 큰 다이 용량들로 인해, 8 채널 제어기에서, 채널 당 1개 이하의 다이가 있고 그러므로 128KB 요구가 이루어질 때에도, 동시실행은 5보다 크지 않을 수 있다. 그래서 데이터가 팩킹되지 않으면, 특정 실시예들에서 판독할 능력은 4KB의 5배, 즉, 한 번에 20KB이다. 데이터가 팩킹되면, 잠재적으로 시스템은 16KB의 5배, 즉, 한 번에 80KB를 획득할 수 있다. 제어기(108)는 4KB 또는 4KB의 배수의 페이지 크기로 판독 동작들(참조 번호(116))을 요구하는 반면, 3D NAND 칩들(104a ... 104n)은 16KB의 페이지 크기의 데이터를 나타낸다.
도 1에 도시한 특정 실시예들에서, 고체 상태 드라이브(102)의 제어기(108)는 데이터 리프레시가 수행되는 시간 동안 고체 상태 드라이브(102)의 3D NAND 칩들(104a ... 104n) 내에 저장된 데이터의 리팩킹을 주기적으로 개시한다. 특정 실시예들에서, 데이터의 각각의 리팩킹 동안, 논리적 블록들은 고체 상태 드라이브(102)의 3D NAND 칩들(104a ... 104n)의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 배치된다. 후속하여, 판독 요구들이 복수의 논리적 블록들에 대해 호스트(106)로부터 고체 상태 드라이브(102)에 의해 수신될 때, 복수의 논리적 블록들이 오름차순으로 물리적으로 인접하게 저장되어 있다고 결정한 것에 응답하여, 제어기(108)는 오름차순으로 물리적으로 인접하게 저장된 복수의 논리적 블록들을 페치하기 위해 고체 상태 드라이브(102)의 하나 이상의 3D NAND 칩들(비휘발성 메모리 칩들)(104a ... 104n)에 단일 요구를 디스패치한다.
도 2는 특정 실시예들에 따른, 고체 상태 드라이브 내의 데이터의 예시적인 표현(202)을 나타낸 블록도(200)를 도시한다. 범례(204)는 균일한 회색 영역(206)이 호스트(106)에 의해 기입된 데이터를 나타내고 여기서 데이터는 유효 데이터라는 것을 도시한다. 빗금친 영역(210)은 후속하여 새로운 위치에 기입된 호스트로부터의 데이터(212)를 나타낸다. 교차 빗금친 영역(214)은 결함이 있는 NAND 블록들(216)을 나타낸다. 백색 영역(218)은 새로운 데이터를 기입하기 위한 사전 소거된 위치들(220)을 나타낸다.
범례(204)에 따르면, 예시적인 표현(202)에서, 참조 번호(222)는 호스트(106)에 의해 기입된 데이터를 도시하고, 여기서 기입된 데이터는 유효하고, 참조 번호(224)는 후속하여 새로운 위치에 기입된 호스트(106)로부터의 데이터를 도시하고, 참조 번호(226)는 결함이 있는 NAND 블록을 도시하고, 참조 번호(228)는 새로운 데이터를 기입하기 위한 사전 소거된 위치를 도시한다. 데이터의 예시적인 표현(202)에서, 참조 번호들(230, 232, 및 234)은 호스트에 의해 기입된 유효 데이터로서 논리적 블록 어드레스들 10, 19, 및 15를 도시한다. 참조 번호들(230, 232, 234)을 통해 도시한 논리적 블록 어드레스들 각각은 고체 상태 드라이브(102) 내의 3D NAND 칩들(104a ... 104n)의 페이지 크기가 16KB임에 따라 데이터의 16KB를 나타낸다는 점에 주목할 수 있다.
도 3은 특정 실시예들에 따른, SSD 내의 데이터를 리프레시하는 것과 동시에 고체 상태 드라이브 내의 데이터를 주기적으로 리팩킹(302)하면서 논리적 블록들을 물리적으로 인접하게 재구성하는 것을 도시한 블록도(300)를 도시한다. 기존의 SSD들은 NAND 셀들 내의 전하 손실로 인한 데이터 손실을 방지하기 위해 데이터가 주기적으로 재기입되는 "데이터 리프레시"를 한다. 고체 상태 드라이브 내의 데이터의 초기 리팩킹 및 리프레싱(302)은 참조 번호(302)를 통해 도시된다. 고체 상태 드라이브 내의 데이터의 초기 리팩킹(302) 동안, (참조 번호(304)를 통해 도시한 바와 같이) 논리적 블록들은 고체 상태 드라이브의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 배치된다. 후속하여, 일정 기간의 경과 후에 데이터의 다른 리팩킹 및 리프레싱이 개시되고(참조 번호(306)) 고체 상태 드라이브(102) 내에 저장된 데이터를 리팩킹하는 동안, (참조 번호(308)를 통해 도시한 바와 같이) 논리적 블록들은 고체 상태 드라이브(102)의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 배치된다. (참조 번호(310)를 통해 도시한 바와 같이) 주기적 간격들로 데이터를 리팩킹하고 데이터를 리팩킹하는 동안 고체 상태 드라이브의 사전 소거된 위치들 내에 오름차순으로 인접하게 논리적 블록들을 배치하는 과정이 계속된다.
특정 실시예들에서 고체 상태 드라이브들의 판독 성능을 개선하기 위해 논리적 블록들을 고체 상태 드라이브(102)의 사전 소거된 위치들 내에 오름차순으로 인접하게 배치하는 동작들이 리팩킹 동안 수행되고, 여기서 리팩킹은 고체 상태 드라이브(102)의 리프레싱이 수행되는 것과 동시에 수행된다. 그러므로, 실시예들은 단지 데이터를 리팩킹하는 방법이 아니다. 실시예들은 데이터 리팩킹과 전하 손실 방지 둘 다를 수행한다. 전하 손실을 방지하기 위한 "데이터 리프레시 기술"을 위한 종래 기술의 방법들이 공지되어 있다. 본질적으로, 특정 실시예들에서, 데이터 리팩킹은 내구성 손실 또는 전력 또는 다른 인자들에 대한 상당한 추가 부담 없이 데이터 리프레싱 시에 "자유로운" 동안 들어온다.
도 4는 특정 실시예들에 따른, 특정 종래 기술의 고체 상태 드라이브들에서 수행되는 것과 같이 논리적 블록 어드레스 인접에 대한 데이터의 재배열이 없는 데이터의 리팩킹을 나타낸 블록도(400)를 도시한다.
도 4에서, 데이터의 초기 구성이 참조 번호(402)를 통해 도시되고, 논리적 블록 어드레스 인접에 대한 재배열 없이 데이터를 리팩킹한(참조 번호(404)) 후의 구성이 참조 번호(406)를 통해 도시된다. (참조 번호들(410, 412, 414)로 표시된) 논리적 블록 어드레스들 10, 19, 15는 데이터의 리팩킹 동안 사전 소거된 위치들(416, 418, 420)로 물리적으로 인접하게 이동되지만, 리팩킹된 후의 논리적 블록 어드레스들은 인접의 오름차순으로 되지 않고, 여기서 인접의 오름차순은 논리적 블록들 x, x+1, x+2 등이 순차로 차례로 배치되는 것을 의미한다(예를 들어, 논리적 블록 어드레스들 15, 16, 17, 18, 19, 20으로 표시된 블록들은 그들 사이에 어떤 개입하는 갭들 또는 블록들 없이 사전 소거된 위치들 내에 순차적으로 저장될 것이다). 기존의 데이터 리프레시에 데이터 리팩킹 기술을 부가함으로써, 특정 실시예들은 잘 팩킹된 데이터 내용뿐만 아니라 리프레시된 NAND 셀들을 발생한다.
논리적 블록 어드레스들이 데이터의 리팩킹 동안 인접의 오름차순으로 재배열되지 않기 때문에, 호스트(106)가 고체 상태 드라이브(102)로부터 복수의 인접하는 페이지들의 판독을 요구하면, 요구된 복수의 인접하는 페이지들이 3D NAND 칩들(104a ... 104n) 상의 복수의 16KB 논리적 블록들을 가로질러 분산될 때 다수의 페치들이 3D NAND 칩들(104a ... 104n)로부터 수행될 필요가 있을 수 있고, 이것은 판독 동작들에 대한 성능 저하를 초래한다. 예를 들어, 호스트는 각각의 페이지가 4KB인 논리적 어드레스 x로부터 시작하는 12개의 페이지를 요구할 수 있다. 12개의 페이지는 3D NAND 칩들(104a ... 104n) 상에 저장 공간의 적어도 48KB를 필요로 하는데, 즉, NAND 페이지 크기가 16KB이므로, 12개의 페이지는 3개의 16KB NAND 페이지들 내에 저장될 수 있다. 그러나, 3개의 16KB NAND 페이지가 인접의 오름차순으로 배치되지 않으면, 3개의 페이지는 제어기(108)로부터의 3개의 페치 명령을 3D NAND 칩들(104a ... 104n)에 보냄으로써 하나씩 페치되어야 하고, 이것은 판독 동작들의 성능에 영향을 준다.
도 5는 특정 실시예들에 따른, 논리적 블록 어드레스 인접에 대한 재배열이 있는 데이터의 리팩킹을 도시한 블록도(500)를 도시한다.
도 5에서, 데이터의 초기 구성이 참조 번호(502)를 통해 도시되고, 논리적 블록 어드레스 인접에 대한 재배열과 함께 데이터를 리팩킹한(참조 번호(504)) 후의 구성이 참조 번호(506)를 통해 도시된다. (참조 번호들(510, 512, 514)로 표시된) 논리적 블록 어드레스들 0, 1, 2는 데이터의 리팩킹 동안 사전 소거된 위치들(516, 518, 520)로 물리적으로 인접하게 이동되지만, 리팩킹된 후의 논리적 블록 어드레스들은 인접의 오름차순으로 되고, 여기서 인접의 오름차순은 논리적 블록들 x, x+1, x+2 등이 순차로 차례로 배치되는 것을 의미한다(즉, 논리적 블록 어드레스들 15, 16, 17, 18, 19, 20은 그들 사이에 어떤 개입하는 갭들 또는 논리적 블록 어드레스들 없이 사전 소거된 위치들 내에 순차적으로 저장될 수 있다).
논리적 블록 어드레스들이 데이터의 리팩킹 동안 인접의 오름차순으로 재배열되기 때문에, 호스트(106)가 고체 상태 드라이브(102)로부터 복수의 인접하는 페이지들의 판독을 요구하면, 요구된 복수의 인접하는 페이지들이 3D NAND 칩들(104a ... 104n) 상의 복수의 16KB 논리적 블록들을 가로질러 분산될 때 단일 페치만이 3D NAND 칩들(104a ... 104n)로부터 수행될 필요가 있을 수 있고, 이것은 판독 동작들에 대한 성능 향상을 초래한다.
예를 들어, 호스트(106)는 각각의 페이지가 4KB인 논리적 어드레스 "0"으로부터 시작하는 8개의 페이지를 요구할 수 있다. 8개의 페이지는 3D NAND 칩들(104a ... 104n) 상의 저장 공간의 적어도 32KB를 요구할 수 있는데, 즉, NAND 페이지 크기가 16KB이므로, 8개의 페이지가 2개의 16KB NAND 페이지 내에 저장될 수 있다. 2개의 16KB NAND 페이지가 인접의 오름차순으로 배치되기 때문에(참조 번호들(516, 518)), 2개의 페이지는 제어기로부터의 2개의 페치 명령들을 3D NAND 칩들(104a ... 104n)에 보냄으로써 하나씩 페치될 필요는 없다. 대신에 논리적 어드레스 "0"으로 시작하는 2개의 페이지에 대한 단일 페치 명령은 판독 요구를 충족시키기 위해 페이지들(516, 518)에 복귀할 수 있다. 이것은 8개의 4KB 페이지들을 저장하는 16KB 고체 상태 드라이브 페이지 크기의 확대된 보기(참조 번호(521))를 통해 도시되고, 여기서 4KB는 호스트 및 인다이렉션 테이블 페이지 크기이다. 인다이렉션 테이블(112)은 제1 4KB 블록(526)을 어드레스할 수 있고 데이터의 32KB가 제1 4KB 블록(526)으로부터 시작하여 복귀되기를 요구할 수 있다. 특정 실시예들에서, (참조 번호(528)를 통해 도시한 바와 같이) 인접 오름차순으로 배열된 물리적으로 인접하는 논리적 블록 어드레스들의 32개의 블록들이 3D NAND 칩들(104a ... 104n)로부터 제어기(108)에 의해 단일 페치를 통해 복귀된다. 도 5에 의해 도시된 실시예들에서 수행된 단일 페치는 도 4에 도시한 메커니즘들에서 수행되어야 하는 다수의 페치들에 비해 판독 성능을 향상시킨다. 특정 실시예들에서(예를 들어, SSD가 200GB이고, 각각의 NAND 다이가 48GB이고, 그러므로 200GB SSD에서 5개의 다이가 사용되는 실시예들에서), 큰 다이 용량으로 인해, 8 채널 제어기에서, 채널 당 1개 또는 더 적은 수의 다이가 있을 수 있고 그러므로 128KB 요구가 있을 때에도, 동시실행은 5보다 크지 않을 수 있다. 그래서 데이터가 팩킹되지 않으면, 시스템은 4KB의 5배, 즉, 특정 실시예들에서 결국 한 번에 20KB를 판독할 능력으로 될 수 있다. 데이터가 팩킹되면, 16KB의 5배, 즉, 한 번에 80KB를 판독하는 것이 가능할 수 있다. 그러므로 상대적 판독 성능이 데이터가 팩킹되지 않을 때의 판독 성능에 비해 400%일 수 있다. NAND들의 추가 발생들은 다이 당 용량을 2배로 되게 한다(예를 들어, 다이 당 48GB로부터 96GB로). 그래서 이 400%의 상대적 판독 성능이 매우 유용하다. 400%의 상대적 판독 성능은 3D NAND에서의 1 평면 판독을 위한 것이라는 점에 주목하여야 한다. 클라이언트 사용 모델을 위해, 그리고 3D NAND의 제1 발생을 위해, 400%의 판독 성능이 적당할 수 있고, 3D NAND들에서 처리하기 위한 쿼드 평면에 대해 복잡성을 추가할 필요가 없을 수 있다(3D NAND들에서 처리하는 쿼드 평면은 나중에 도 8에서 설명되고, 4개를 처리하는 쿼드 평면에서 판독들은 쿼드 평면 3D NAND에 의해 병렬로 처리될 수 있다). 제2 발생 NAND를 위한 특정 실시예들에서, 쿼드 평면 판독들이 가능할 수 있고(나중에 도 8에서 설명됨) 1600%의 상대적 판독 성능이 획득될 수 있다.
도 6은 고체 상태 드라이브 내의 데이터를 리프레시하는 것과 동시에, 판독 요구들에 대한 개선된 응답을 위해 고체 상태 드라이브들 내에서 오름차순으로 물리적으로 인접하게 논리적 블록들을 리팩킹하고 재구성하는 제1 플로우차트(600)를 도시한다. 도 6에 도시한 동작들은 고체 상태 드라이브(102)의 제어기(108)에서 실행하는 애플리케이션(110)에 의해 수행될 수 있고, 여기서 애플리케이션(110)은 인다이렉션 테이블(112)을 사용한다.
제어는 데이터 리팩킹이 고체 상태 드라이브(102)에서 시작하고, 특정 실시예들에서 데이터의 리프레싱이 데이터 리팩킹과 동시에 수행되는 블록 602에서 시작한다. 제어는 애플리케이션(110)이 톱니 패턴으로(즉, 좌측으로부터 우측으로 그리고 상부로부터 하부로) 고체 상태 데이터 표현(예를 들어, 502)을 횡단하는 블록 604로 진행한다. (블록 606에서) 유효 데이터는 논리적 블록 어드레스들이 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 배치되도록 사전 소거된 위치들로 이동된다. 블록 606으로부터 제어는 시간 주기 이후에 데이터의 리팩킹의 또 하나의 라운드를 수행하기 위해 블록 602로 복귀할 수 있다.
블록 606으로부터, 제어는 또한 시간 주기 이후에 블록 608로 진행할 수 있다. (블록 608에서) 제어기(108)는 호스트(106)로부터 더 대형의 판독 요구를 수신할 수 있다. (블록 610에서) 제어기(108)는 인다이렉션 테이블(112)을 체크하여 판독 요구에서 요구된 논리적 블록 어드레스들이 오름차순으로 물리적으로 인접하게 저장되어 있다는 것을 결정한다. (블록 612에서) 제어기(108)는 다음에 3D NAND 칩들(104a ... 104n) 내에 오름차순으로 물리적으로 인접하게 저장된 논리적 블록 어드레스들을 판독하기 위해 단일의 NAND 판독을 디스패치한다.
그러므로 도 5 및 도 6은 4KB의 페이지 크기를 갖는 호스트로부터의 대형 판독 요구를 충족시키기 위해, 단일 페치를 사용하여 각각 16KB의 복수의 NAND 페이지를 판독하는 특정 실시예들을 도시하고, 여기서 대형 판독 요구는 16KB보다 많은 데이터를 요구한다. 예를 들어, 데이터의 32KB가 호스트(106)에 의해 요구되면 2개의 NAND 페이지들이 제어기(108)에 의해 복수의 NAND 칩들(104a ... 104n)에 대해 이루어진 단일 페치 요구를 통해 회수될 수 있다. 특정 실시예들에서, 페치 요구는 페치를 위한 시작하는 논리 어드레스 및 페치될 페이지들의 수를 필요로 한다. 다른 실시예들에서, 페치 요구는 페치를 위한 시작하는 논리 어드레스를 단지 필요로 하고 페이지들은 시작하는 논리 어드레스로부터 판독을 시작하는 것을 계속 유지한다.
도 7은 판독 요구들에 대한 개선된 응답을 위해 고체 상태 드라이브들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 리팩킹하고 구성하는 제2 플로우차트(700)를 도시한다. 도 7에 도시한 동작들은 고체 상태 드라이브(102)의 제어기(108)에서 실행하는 애플리케이션(110)에 의해 수행될 수 있고, 여기서 애플리케이션(110)은 인다이렉션 테이블(112)을 사용한다.
제어는 고체 상태 드라이브(102)의 제어기(108)가 고체 상태 드라이브(102) 내에 저장된 데이터의 주기적 리팩킹을 개시하는 블록 702에서 시작하고, 여기서 고체 상태 드라이브 내에 저장된 데이터의 리프레싱은 고체 상태 드라이브(102) 내에 저장된 데이터의 리팩킹 동안에 수행된다. (블록 704에서) 논리적 블록들은 고체 상태 드라이브(102) 내에 저장된 데이터가 리팩킹되는 동안 고체 상태 드라이브(102)의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 배치된다.
제어는 판독 요구가 복수의 논리적 블록들에 대해 호스트(106)로부터 수신되는 블록 706으로 진행한다. 복수의 논리적 블록들이 오름차순으로 물리적으로 인접하게 저장되어 있다고 결정한 것에 응답하여, 복수의 논리적 블록들을 페치하기 위해 단일 요구가 고체 상태 드라이브(102)의 비휘발성 메모리 칩들(104a ... 104n)에 대해 이루어진다.
특정 실시예들에서, 호스트(106)는 고체 상태 드라이브(102)보다 작은 크기의 논리적 블록들을 나타낸다. 고체 상태 드라이브(102) 내의 인다이렉션 테이블(112)은 고체 상태 드라이브(102) 내에 저장된 유효 데이터의 가장 최근의 카피들에 대한 포인터들을 유지하고, 인다이렉션 테이블(112)은 호스트(106)와 동일한 크기의 복수의 논리적 블록들을 나타낸다. 특정 실시예들에서, 고체 상태 드라이브(102)는 3차원 NAND 칩들(104a ... 104n)로 구성되고, 단지 하나의 칩 선택을 갖는 3차원 NAND 칩 당 단지 하나의 채널이 있고 병렬 판독 요구들이 단지 하나의 채널에 의해 보내질 수 없다. 게다가, 특정 실시예들에서, NAND 페이지 크기는 16KB이고 호스트(106)로부터 고체 상태 드라이브(102)로의 요구들이 4KB의 페이지 크기들에서 이루어진다. 특정 실시예들에서, NAND 칩들은 16KB 페이지 외에 "평면" 병렬성을 가질 수 있다. 예를 들어, 특정 NAND들은 4개의 평면을 갖고, 결과적으로 데이터의 64KB가 4KB와 동일한 시간 지속기간 내에 판독될 수 있게 하여 결국 분산된 4KB 데이터의 판독들에 대해 1600% 판독 대역폭을 가져다 준다.
특정 실시예들에서, 고체 상태 드라이브(102) 내의 데이터의 리팩킹이 주기적으로 수행되고, 고체 상태 드라이브(102)의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 배치하는 것은 데이터 리프레시 동안 고체 상태 드라이브(102) 내의 데이터의 각각의 주기적 리팩킹 동안 수행된다. 고체 상태 드라이브(102) 내에 저장된 데이터가 리팩킹되는 동안 고체 상태 드라이브(102)의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 배치하는 것은 고체 상태 드라이브(102) 내에 저장된 데이터가 리팩킹되는 동안 고체 상태 드라이브(102)의 사전 소거된 위치들 내에 무작위 순서로 물리적으로 인접하게 논리적 블록들을 배치하는 것에 비해 판독 성능을 개선시킨다.
종래 기술에서, 인다이렉션 테이블(112)의 내부 인다이렉션 시스템은 4K이고 일반적으로 각각의 4K가 상이한 소거 블록 상에 있게 된다. 64KB 호스트 판독은 16개의 4K 판독들이 상이한 NAND 블록들에 디스패치되게 할 것이다. 도 1-7에 도시된 특정 실시예들은 "논리적 블록 어드레스 0" 내지 "논리적 블록 어드레스 N"이 NAND 내에 서로 인접하여 배치되도록 데이터를 리팩킹한다. 데이터 유지, 배경 데이터 리프레시를 제공하는 기존의 NAND 정책은 데이터를 리프레시하는 것뿐만 아니라 데이터를 물리적으로 인접하게 팩킹하는 데에 맞게 다시 만들어질 수 있다. 그렇게 하면 속도 혼합(velocity mixing)으로 인한 기입 증폭의 약간의 증가를 초래할 것이지만 실제 이용가능한 내구성이 고체 상태 드라이브들을 위한 3년 사용 모델에 부합하는 데 요구되는 것보다 훨씬 더 넉넉하기 때문에, 이것은 판독 성능을 증가시키기 위한 적절한 절충일 것이다.
도 8은 특정 실시예들에 따른, 4개의 페이지가 동시에 판독되는 것이 허용될 때 예시적인 3D NAND에서의 평면 병렬성 및 예시적인 성능 개선을 나타낸 블록도(800)를 도시한다.
4개의 평면을 갖는 예시적인 3D NAND의 개략도가 참조 번호(802)를 통해 도시된다. 4개의 평면을 갖는 3D NAND를 위한 페이지 크기는 16KB이다(참조 번호(804)). 특정 실시예들에서, (참조 번호(806)를 통해 도시한 바와 같이) 4개의 평면을 갖는 3D NAND 내에 한 번에 판독되는 것이 허용된 페이지들의 수는 4이다. 그러므로, 한 번에 판독되는 데이터의 총량은 16KB의 4배인 64KB이다(참조 번호(808)를 통해 도시). 그러므로 4KB 분산된 내용이 SSD 내에 배치된 상황에 대한 성능은 16배까지이고, 즉, SSD가 4KB 분산된 내용을 저장한 상황에서의 성능이 100%이면 4개의 페이지가 한 번에 판독될 수 있는 16KB 페이지 크기를 갖는 3D NAND에서 성능은 1600%이다.
그러므로 도 8은 4KB 분산된 내용이 저장된 상황에서의 성능의 1600%인 성능을 달성하기 위해 예시적인 3D NAND에서의 평면 병렬성을 도시한다.
설명된 동작들은 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 발생하기 위해 표준 프로그래밍 및/또는 공학 기술들을 사용하는 방법, 장치, 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 설명된 동작들은 "컴퓨터 판독가능 저장 매체" 내에 유지된 코드로서 구현될 수 있고, 여기서 프로세서는 컴퓨터 판독가능 저장 매체로부터 코드를 판독하여 실행할 수 있다. 컴퓨터 판독가능 저장 매체는 전자 회로, 저장 재료들, 무기 재료들, 유기 재료들, 생물학적 재료들, 케이싱, 하우징, 코팅, 및 하드웨어 중 적어도 하나를 포함한다. 컴퓨터 판독가능 저장 매체는 자기 저장 매체(예를 들어, 하드 드라이브 드라이브들, 플로피 디스크들, 테이프 등), 광학 저장 디바이스(CD-ROM들, DVD들, 광학 디스크들 등), 휘발성 및 비휘발성 메모리 디바이스들(예를 들어, EEPROM, ROM, PROM, RAM, DRAM, SRAM, 플래시 메모리, 펌웨어, 프로그램가능한 로직 등), 고체 상태 디바이스들(SSD) 등을 포함할 수 있지만, 이들로 제한되지 않는다. 설명된 동작들을 구현하는 코드는 하드웨어 디바이스(예를 들어, 집적 회로 칩, 프로그램가능한 게이트 어레이(PGA), 주문형 집적 회로(ASIC) 등)에서 구현된 하드웨어 로직에서 더 구현될 수 있다. 더 또한, 설명된 동작들을 구현하는 코드는 "전송 신호들"에서 구현될 수 있고, 여기서 전송 신호들은 공간을 통해 또는 광 섬유, 구리 배선 등과 같은 전송 매체를 통해 전파할 수 있다. 코드 또는 로직이 인코드되는 전송 신호들은 무선 신호, 위성 전송, 무선 파들, 적외선 신호들, 블루투스 등을 더 포함할 수 있다. 컴퓨터 판독가능 저장 매체 상에 내장된 프로그램 코드는 송신국 또는 컴퓨터로부터 수신국 또는 컴퓨터에 전송 신호로서 송신될 수 있다. 컴퓨터 판독가능 저장 매체는 전송 신호만으로 구성되지 않는다. 본 기술 분야의 통상의 기술자들은 많은 수정이 이 구성에 대해 이루어질 수 있고, 제조 물품은 본 기술 분야에 공지된 적합한 정보 포함 매체를 포함할 수 있다는 것을 인식할 것이다.
특정 실시예들의 양태들을 위한 동작들을 수행하는 컴퓨터 프로그램 코드는 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성될 수 있다. 플로우차트의 블록들 및 블록도들은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다.
도 9는 특정 실시예들에 따른, 호스트(106)(호스트(106)는 적어도 하나의 프로세서를 포함)와 고체 상태 드라이브(102) 둘 다를 포함하는 시스템(900)의 블록도를 도시한다. 예를 들어, 특정 실시예들에서 시스템(900)은 둘 다 시스템(900) 내에 포함된 호스트(106) 및 고체 상태 드라이브(102)를 갖는 컴퓨터(예를 들어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 태블릿, 이동 전화 또는 기타 적합한 컴퓨터 디바이스)일 수 있다. 예를 들어, 특정 실시예들에서 시스템(900)은 고체 상태 드라이브(102)를 포함하는 랩탑 컴퓨터일 수 있다. 시스템(900)은 특정 실시예들에서 적어도 하나의 프로세서(904)를 포함할 수 있는 회로(902)를 포함할 수 있다. 시스템(900)은 또한 메모리(906)(예를 들어, 휘발성 메모리 디바이스), 및 저장 디바이스(908)를 포함할 수 있다. 저장 디바이스(908)는 고체 상태 드라이브(102) 또는 비휘발성 메모리 디바이스(예를 들어, EEPROM, ROM, PROM, RAM, DRAM, SRAM, 플래시, 펌웨어, 프로그램가능한 로직 등)를 포함하는 다른 드라이브들 또는 디바이스들을 포함할 수 있다. 저장 디바이스(908)는 또한 자기 디스크 드라이브, 광학 디스크 드라이브, 테이프 드라이브 등을 포함할 수 있다. 저장 디바이스(908)는 내부 저장 디바이스, 부착된 저장 디바이스 및/또는 네트워크 액세스가능한 저장 디바이스를 포함할 수 있다. 시스템(900)은 메모리(906) 내로 로드되어 프로세서(904) 또는 회로(902)에 의해 실행될 수 있는 코드(912)를 포함하는 프로그램 로직(910)을 포함할 수 있다. 특정 실시예들에서, 코드(912)를 포함하는 프로그램 로직(910)은 저장 디바이스(908) 내에 저장될 수 있다. 특정 다른 실시예들에서, 프로그램 로직(910)은 회로(902)에서 구현될 수 있다. 그러므로, 도 9가 다른 요소들과 별도로 프로그램 로직(910)을 도시하지만, 프로그램 로직(910)은 메모리(906) 및/또는 회로(902)에서 구현될 수 있다. 시스템(900)은 또한 디스플레이(914)(예를 들어, 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 음극선관(CRT) 디스플레이, 터치스크린 디스플레이, 또는 임의의 다른 적합한 디스플레이)를 포함할 수 있다. 시스템(900)은 또한 키보드, 마우스, 조이스틱, 트랙패드, 또는 임의의 다른 적합한 입력 디바이스들과 같은, 하나 이상의 입력 디바이스(916)를 포함할 수 있다. 도 9에 도시된 것들 이외의 다른 컴포넌트들 또는 디바이스들이 또한 시스템(900)에서 발견될 수 있다.
특정 실시예들은 컴퓨터 시스템 내로 사람 또는 자동화 처리 통합 컴퓨터 판독가능 코드에 의해 컴퓨팅 명령어를 구축하는 방법에 관한 것일 수 있고, 컴퓨팅 시스템과 조합하여 코드는 설명된 실시예들의 동작들을 수행하는 것이 가능하게 된다.
용어들 "한 실시예", "실시예", "실시예들", "하나 이상의 실시예", "일부 실시예들", 및 "하나의 실시예"는 달리 명백히 명시되지 않는다면 "하나 이상의 (그러나 모두는 아닌) 실시예"를 의미한다.
용어들 "포함하는", "구성하는", "갖는" 및 이들의 변형들은 달리 명백히 명시되지 않는다면, "포함하지만, 제한되지 않는"을 의미한다.
아이템들의 나열된 리스팅은 아이템들 중 어떤 것 또는 모두가 달리 명백히 명시되지 않는다면, 상호 배타적이라는 것을 함축하지 않는다.
단수 표현은 달리 명백히 명시되지 않는다면, "하나 이상"을 의미한다.
서로 통신하는 디바이스들은 달리 명백히 명시되지 않는다면, 서로 연속 통신할 필요는 없다. 또한, 서로 통신하는 디바이스들은 직접적으로 또는 하나 이상의 중간체를 통해 간접적으로 통신할 수 있다.
서로 통신하는 여러 소자들을 갖는 실시예의 설명은 모든 이러한 소자들이 요구되는 것을 함축하지 않는다. 반대로 다양한 선택적 소자들이 다양한 가능한 실시예들을 예시하기 위해 설명된다.
또한, 공정 단계들, 방법 단계들, 알고리즘들이 순차적 순서로 설명되지만, 이러한 공정들, 방법들 및 알고리즘들은 대안적 순서들로 동작하도록 구성될 수 있다. 바꾸어 말하면, 설명될 수 있는 단계들의 임의의 순차 또는 순서는 단계들이 그 순서로 수행되어야 한다는 요건을 반드시 나타내지 않는다. 여기에 설명된 공정들의 단계들은 실제로 임의의 순서로 수행될 수 있다. 또한, 일부 단계들은 동시에 수행될 수 있다.
단일 디바이스 또는 물품이 여기에 설명될 때, (그들이 협력하든 안 하든 간에) 하나보다 많은 디바이스/물품이 단일 디바이스/물품 대신에 사용될 수 있다는 것을 용이하게 알게 될 것이다. 유사하게, (그것들이 협력하든 안하든 간에) 하나보다 많은 디바이스 또는 물품이 여기에 설명되는 경우에, 단일 디바이스/물품이 하나보다 많은 디바이스 또는 물품 대신에 사용될 수 있고 또는 상이한 수의 디바이스들/물품들이 도시한 수의 디바이스들 또는 프로그램들 대신에 사용될 수 있다는 것을 용이하게 알게 될 것이다. 디바이스의 기능성 및/또는 특징들은 이러한 기능성/특징들을 갖는 것으로 명시적으로 설명되지 않는 하나 이상의 다른 디바이스에 의해 대안적으로 실시될 수 있다. 그러므로, 다른 실시예들은 디바이스 자체를 포함할 필요는 없다.
도면에 도시되었을 수 있는 적어도 특정 동작들은 특정 순서로 발생하는 특정 이벤트들을 도시한다. 대안적 실시예들에서, 특정 동작들이 상이한 순서로 수행되고, 수정, 또는 제거될 수 있다. 더구나, 단계들이 상기 설명된 로직에 부가될 수 있고 설명된 실시예들에 여전히 따를 수 있다. 게다가, 여기에 설명된 동작들은 순차적으로 발생할 수 있거나 특정 동작들은 병렬로 처리될 수 있다. 더 또한, 동작들은 단일 처리 유닛에 의해 또는 분배된 처리 유닛들에 의해 수행될 수 있다.
다양한 실시예들의 상기 설명은 예시 및 설명의 목적을 위해 제시되었다. 개시된 정확한 형태들로 한정하거나 제한하려는 의도는 아니다. 많은 수정들 및 변형들이 상기 교시에 비추어서 가능하다.
예들
다음의 예들은 추가 실시예들에 관한 것이다.
예 1은 고체 상태 드라이브의 성능을 개선시키는 방법이다. 상기 고체 상태 드라이브의 제어기는 상기 고체 상태 드라이브의 비휘발성 메모리 내에 저장된 데이터의 리팩킹을 개시하고, 상기 고체 상태 드라이브의 상기 비휘발성 메모리 내에 저장된 상기 데이터의 리프레싱은 상기 고체 상태 드라이브의 상기 비휘발성 메모리 내에 저장된 상기 데이터의 상기 리팩킹 동안 수행된다. 논리적 블록들은 상기 고체 상태 드라이브의 상기 비휘발성 메모리 내에 저장된 상기 데이터가 리팩킹되는 동안 상기 고체 상태 드라이브의 상기 비휘발성 메모리의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 배치된다.
예 2에서, 예 1의 주제는, 복수의 논리적 블록들에 대해 호스트로부터 판독 요구를 수신하는 단계; 및 상기 복수의 논리적 블록들이 오름차순으로 물리적으로 인접하게 저장되어 있다고 결정한 것에 응답하여, 상기 복수의 논리적 블록들을 페치하기 위해 상기 고체 상태 드라이브의 하나 이상의 비휘발성 메모리 칩에 단일 요구를 디스패치하는 단계를 포함할 수 있다.
예 3에서, 예 2의 주제는, 상기 논리적 블록들은 상기 고체 상태 드라이브보다 상기 호스트에서 더 작은 크기로 나타내어지는 것을 포함할 수 있다.
예 4에서, 예 3의 주제는, 상기 고체 상태 드라이브 내의 인다이렉션 테이블은 상기 고체 상태 드라이브 내에 저장된 유효 데이터의 가장 최근의 카피들의 물리적 메모리 어드레스들에 대한 포인터들을 유지하고, 상기 인다이렉션 테이블은 상기 호스트와 동일한 크기로 상기 복수의 논리적 블록들을 나타내는 것을 포함할 수 있다.
예 5에서, 예 1의 주제는, 상기 고체 상태 드라이브는 3차원 NAND 칩들로 구성되고, 하나의 칩 선택만을 갖는 3차원 NAND 칩 당 하나의 채널만이 있고 상기 하나의 채널만에 의해 병렬 판독 요구들이 보내질 수 없는 것을 포함할 수 있다.
예 6에서, 예 5의 주제는, NAND 페이지 크기는 16킬로바이트이고 호스트로부터 상기 고체 상태 드라이브로의 요구들이 4킬로바이트의 페이지 크기들에서 이루어지는 것을 포함할 수 있다.
예 7에서, 예 1의 주제는, 상기 고체 상태 드라이브 내의 데이터의 상기 리팩킹은 주기적으로 수행되고, 상기 고체 상태 드라이브의 비휘발성 메모리의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 배치하는 단계는 상기 고체 상태 드라이브 내의 상기 데이터의 각각의 주기적 리팩킹 동안 수행되는 것을 포함할 수 있다.
예 8에서, 예 1의 주제는, 상기 고체 상태 드라이브의 상기 비휘발성 메모리 내에 저장된 상기 데이터가 리팩킹되는 동안 상기 고체 상태 드라이브의 비휘발성 메모리의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 배치하는 단계는 상기 고체 상태 드라이브의 상기 비휘발성 메모리 내에 저장된 상기 데이터가 리팩킹되는 동안 상기 고체 상태 드라이브의 비휘발성 메모리의 상기 사전 소거된 위치들 내에 무작위 순서로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것에 비해 판독 성능을 개선시키고, 상대적 판독 성능은 평면 병렬성이 상기 고체 상태 드라이브에 의해 한 번에 4개의 페이지가 판독되는 것이 허용되도록 지원될 때 최대 1600%인 것을 포함할 수 있다.
예 9는 복수의 비휘발성 메모리 칩들; 및 상기 복수의 비휘발성 메모리 칩들에 결합된 제어기를 포함하고, 상기 제어기는 상기 복수의 비휘발성 메모리 칩들 내에 저장된 데이터의 리팩킹을 개시하고 - 상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터의 리프레싱은 상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터의 상기 리팩킹 동안 수행됨 -; 상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터가 리팩킹되는 동안 상기 복수의 비휘발성 메모리 칩들의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 배치하도록 동작가능한 장치이다.
예 10에서, 예 9의 주제는, 상기 제어기는 복수의 논리적 블록들에 대해 호스트로부터 판독 요구를 수신하고; 상기 복수의 논리적 블록들이 오름차순으로 물리적으로 인접하게 저장되어 있다고 결정한 것에 응답하여, 상기 복수의 논리적 블록들을 페치하기 위해 하나 이상의 비휘발성 메모리 칩에 단일 요구를 디스패치하도록 더 동작가능한 것을 포함할 수 있다.
예 11에서, 예 10의 주제는, 상기 호스트는 논리적 블록들을 상기 복수의 비휘발성 메모리 칩들보다 더 작은 크기로 나타내는 것을 포함할 수 있다.
예 12에서, 예 11의 주제는, 인다이렉션 테이블은 상기 복수의 비휘발성 메모리 칩들 내에 저장된 유효 데이터의 가장 최근의 카피들의 물리적 메모리 어드레스들에 대한 포인터들을 유지하고, 상기 인다이렉션 테이블은 상기 호스트와 동일한 크기로 상기 복수의 논리적 블록들을 나타내는 것을 포함할 수 있다.
예 13에서, 예 9의 주제는, 상기 복수의 비휘발성 메모리 칩들은 3차원 NAND 칩들로 구성되고, 하나의 칩 선택만을 갖는 3차원 NAND 칩 당 하나의 채널만이 있고 상기 하나의 채널만에 의해 병렬 판독 요구들이 보내질 수 없는 것을 포함할 수 있다.
예 14에서, 예 13의 주제는, NAND 페이지 크기는 16킬로바이트이고 호스트로부터 상기 장치로의 요구들이 4킬로바이트의 페이지 크기들에서 이루어지는 것을 포함할 수 있다.
예 15에서, 예 9의 주제는, 상기 복수의 비휘발성 메모리 칩들 내의 데이터의 상기 리팩킹은 주기적으로 수행되고, 상기 복수의 비휘발성 메모리 칩들의 상기 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것은 상기 복수의 비휘발성 메모리 칩들 내의 상기 데이터의 각각의 주기적 리팩킹 동안 수행되는 것을 포함할 수 있다.
예 16에서, 예 9의 주제는, 상기 데이터가 리팩킹되는 동안 상기 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것은 상기 데이터가 리팩킹되는 동안 상기 사전 소거된 위치들 내에 무작위 순서로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것에 비해 판독 성능을 개선시키고, 상대적 판독 성능은 평면 병렬성이 상기 장치에 의해 한 번에 4개의 페이지가 판독되는 것이 허용되도록 지원될 때 최대 1600%인 것을 포함할 수 있다.
예 17은 복수의 비휘발성 메모리 칩들을 포함하는 고체 상태 드라이브; 디스플레이; 및 상기 고체 상태 드라이브 및 상기 디스플레이에 결합된 프로세서를 포함하고, 상기 고체 상태 드라이브는 상기 복수의 비휘발성 메모리 칩들 내에 저장된 데이터의 리팩킹을 개시하고 - 상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터의 리프레싱은 상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터의 상기 리팩킹 동안 수행됨 -; 상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터가 리팩킹되는 동안 상기 복수의 비휘발성 메모리 칩들의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 배치하도록 동작가능한 시스템이다.
예 18에서, 예 17의 주제는, 상기 제어기는 복수의 논리적 블록들에 대해 호스트로부터 판독 요구를 수신하고; 상기 복수의 논리적 블록들이 오름차순으로 물리적으로 인접하게 저장되어 있다고 결정한 것에 응답하여, 상기 복수의 논리적 블록들을 페치하기 위해 하나 이상의 비휘발성 메모리 칩에 단일 요구를 디스패치하도록 더 동작가능한 것을 포함할 수 있다.
예 19에서, 예 18의 주제는, 상기 호스트는 논리적 블록들을 상기 복수의 비휘발성 메모리 칩들보다 더 작은 크기로 나타내는 것을 포함할 수 있다.
예 20에서, 예 19의 주제는, 인다이렉션 테이블은 상기 복수의 비휘발성 메모리 칩들 내에 저장된 유효 데이터의 가장 최근의 카피들의 물리적 메모리 어드레스들에 대한 포인터들을 유지하고, 상기 인다이렉션 테이블은 상기 호스트와 동일한 크기로 상기 복수의 논리적 블록들을 나타내는 것을 포함할 수 있다.
예 21에서, 예 17의 주제는, 상기 복수의 비휘발성 메모리 칩들은 3차원 NAND 칩들로 구성되고, 하나의 칩 선택만을 갖는 3차원 NAND 칩 당 하나의 채널만이 있고 상기 하나의 채널만에 의해 병렬 판독 요구들이 보내질 수 없는 것을 포함할 수 있다.
예 22에서, 예 21의 주제는, NAND 페이지 크기는 16킬로바이트이고 호스트로부터 상기 장치로의 요구들이 4킬로바이트의 페이지 크기들에서 이루어지는 것을 포함할 수 있다.
예 23에서, 예 17의 주제는, 상기 복수의 비휘발성 메모리 칩들 내의 데이터의 상기 리팩킹은 주기적으로 수행되고, 상기 복수의 비휘발성 메모리 칩들의 상기 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것은 상기 복수의 비휘발성 메모리 칩들 내의 상기 데이터의 각각의 주기적 리팩킹 동안 수행되는 것을 포함할 수 있다.
예 24에서, 예 17의 주제는, 상기 데이터가 리팩킹되는 동안 상기 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것은 상기 데이터가 리팩킹되는 동안 상기 사전 소거된 위치들 내에 무작위 순서로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것에 비해 판독 성능을 개선시키고, 상대적 판독 성능은 평면 병렬성이 상기 장치에 의해 한 번에 4개의 페이지가 판독되는 것이 허용되도록 지원될 때 최대 1600%인 것을 포함할 수 있다.

Claims (24)

  1. 고체 상태 드라이브의 성능을 개선시키는 방법으로서,
    상기 고체 상태 드라이브의 제어기에 의해, 상기 고체 상태 드라이브의 비휘발성 메모리 내에 저장된 데이터의 리팩킹(repacking)을 개시하는 단계 - 상기 고체 상태 드라이브의 상기 비휘발성 메모리 내에 저장된 상기 데이터의 리프레싱(refreshing)은 상기 고체 상태 드라이브의 상기 비휘발성 메모리 내에 저장된 상기 데이터의 상기 리팩킹 동안 수행됨 -; 및
    상기 고체 상태 드라이브의 상기 비휘발성 메모리 내에 저장된 상기 데이터가 리팩킹되는 동안 상기 고체 상태 드라이브의 상기 비휘발성 메모리의 사전 소거된 위치들(pre-erased locations) 내에 오름차순(increasing order)으로 물리적으로 인접하게 논리적 블록들을 배치하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 방법은
    복수의 논리적 블록들에 대해 호스트로부터 판독 요구를 수신하는 단계; 및
    상기 복수의 논리적 블록들이 오름차순으로 물리적으로 인접하게 저장되어 있다고 결정한 것에 응답하여, 상기 복수의 논리적 블록들을 페치(fetch)하기 위해 상기 고체 상태 드라이브의 하나 이상의 비휘발성 메모리 칩에 단일 요구를 디스패치(dispatching)하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서, 상기 논리적 블록들은 상기 고체 상태 드라이브보다 상기 호스트에서 더 작은 크기로 나타내어지는 방법.
  4. 제3항에 있어서, 상기 고체 상태 드라이브 내의 인다이렉션 테이블(indirection table)은 상기 고체 상태 드라이브 내에 저장된 유효 데이터의 가장 최근의 카피들(most recent copies)의 물리적 메모리 어드레스들에 대한 포인터들을 유지하고, 상기 인다이렉션 테이블은 상기 호스트와 동일한 크기로 상기 복수의 논리적 블록들을 나타내는 방법.
  5. 제1항에 있어서, 상기 고체 상태 드라이브는 3차원 NAND 칩들로 구성되고, 하나의 칩 선택만을 갖는 3차원 NAND 칩 당 하나의 채널만이 있고 상기 하나의 채널만에 의해 병렬 판독 요구들이 보내질(handed) 수 없는 방법.
  6. 제5항에 있어서, NAND 페이지 크기는 16킬로바이트이고 호스트로부터 상기 고체 상태 드라이브로의 요구들이 4킬로바이트의 페이지 크기들에서 이루어지는(made) 방법.
  7. 제1항에 있어서, 상기 고체 상태 드라이브 내의 데이터의 상기 리팩킹은 주기적으로 수행되고, 상기 고체 상태 드라이브의 상기 비휘발성 메모리의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 배치하는 단계는 상기 고체 상태 드라이브 내의 상기 데이터의 각각의 주기적 리팩킹 동안 수행되는 방법.
  8. 제1항에 있어서, 상기 고체 상태 드라이브의 상기 비휘발성 메모리 내에 저장된 상기 데이터가 리팩킹되는 동안 상기 고체 상태 드라이브의 비휘발성 메모리의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 배치하는 단계는 상기 고체 상태 드라이브의 상기 비휘발성 메모리 내에 저장된 상기 데이터가 리팩킹되는 동안 상기 고체 상태 드라이브의 비휘발성 메모리의 상기 사전 소거된 위치들 내에 무작위 순서(random order)로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것에 비해 판독 성능을 개선시키고, 상대적 판독 성능은 평면 병렬성(planar parallelism)이 상기 고체 상태 드라이브에 의해 한 번에 4개의 페이지가 판독되는 것이 허용되도록 지원될 때 최대 1600%인 방법.
  9. 장치로서,
    복수의 비휘발성 메모리 칩들; 및
    상기 복수의 비휘발성 메모리 칩들에 결합된 제어기
    를 포함하고, 상기 제어기는
    상기 복수의 비휘발성 메모리 칩들 내에 저장된 데이터의 리팩킹을 개시하고 - 상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터의 리프레싱은 상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터의 상기 리팩킹 동안 수행됨 -;
    상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터가 리팩킹되는 동안 상기 복수의 비휘발성 메모리 칩들의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 배치
    하도록 동작가능한 장치.
  10. 제9항에 있어서, 상기 제어기는
    복수의 논리적 블록들에 대해 호스트로부터 판독 요구를 수신하고;
    상기 복수의 논리적 블록들이 오름차순으로 물리적으로 인접하게 저장되어 있다고 결정한 것에 응답하여, 상기 복수의 논리적 블록들을 페치하기 위해 하나 이상의 비휘발성 메모리 칩에 단일 요구를 디스패치하도록 더 동작가능한 장치.
  11. 제10항에 있어서, 상기 논리적 블록들은 상기 복수의 비휘발성 메모리 칩들보다 상기 호스트에서 더 작은 크기로 나타내어지는 장치.
  12. 제11항에 있어서, 인다이렉션 테이블은 상기 복수의 비휘발성 메모리 칩들 내에 저장된 유효 데이터의 가장 최근의 카피들의 물리적 메모리 어드레스들에 대한 포인터들을 유지하고, 상기 인다이렉션 테이블은 상기 호스트와 동일한 크기로 상기 복수의 논리적 블록들을 나타내는 장치.
  13. 제9항에 있어서, 상기 복수의 비휘발성 메모리 칩들은 3차원 NAND 칩들로 구성되고, 하나의 칩 선택만을 갖는 3차원 NAND 칩 당 하나의 채널만이 있고 상기 하나의 채널만에 의해 병렬 판독 요구들이 보내질 수 없는 장치.
  14. 제13항에 있어서, NAND 페이지 크기는 16킬로바이트이고 호스트로부터 상기 장치로의 요구들이 4킬로바이트의 페이지 크기들에서 이루어지는 장치.
  15. 제9항에 있어서, 상기 복수의 비휘발성 메모리 칩들 내의 데이터의 상기 리팩킹은 주기적으로 수행되고, 상기 복수의 비휘발성 메모리 칩들의 상기 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것은 상기 복수의 비휘발성 메모리 칩들 내의 상기 데이터의 각각의 주기적 리팩킹 동안 수행되는 장치.
  16. 제9항에 있어서, 상기 데이터가 리팩킹되는 동안 상기 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것은 상기 데이터가 리팩킹되는 동안 상기 사전 소거된 위치들 내에 무작위 순서로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것에 비해 판독 성능을 개선시키고, 상대적 판독 성능은 평면 병렬성이 상기 장치에 의해 한 번에 4개의 페이지가 판독되는 것이 허용되도록 지원될 때 최대 1600%인 장치.
  17. 시스템으로서,
    복수의 비휘발성 메모리 칩들을 포함하는 고체 상태 드라이브;
    디스플레이; 및
    상기 고체 상태 드라이브 및 상기 디스플레이에 결합된 프로세서
    를 포함하고, 상기 고체 상태 드라이브는
    상기 복수의 비휘발성 메모리 칩들 내에 저장된 데이터의 리팩킹을 개시하고 - 상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터의 리프레싱은 상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터의 상기 리팩킹 동안 수행됨 -;
    상기 복수의 비휘발성 메모리 칩들 내에 저장된 상기 데이터가 리팩킹되는 동안 상기 복수의 비휘발성 메모리 칩들의 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 논리적 블록들을 배치
    하도록 동작가능한 시스템.
  18. 제17항에 있어서, 상기 고체 상태 드라이브는
    복수의 논리적 블록들에 대해 호스트 운영 체제로부터 판독 요구를 수신하고;
    상기 복수의 논리적 블록들이 오름차순으로 물리적으로 인접하게 저장되어 있다고 결정한 것에 응답하여, 상기 복수의 논리적 블록들을 페치하기 위해 하나 이상의 비휘발성 메모리 칩에 단일 요구를 디스패치하도록 더 동작가능한 시스템.
  19. 제18항에 있어서, 상기 호스트 운영 체제는 상기 복수의 비휘발성 메모리 칩들보다 더 작은 크기로 논리적 블록들을 나타내는 시스템.
  20. 제19항에 있어서, 인다이렉션 테이블은 상기 복수의 비휘발성 메모리 칩들 내에 저장된 유효 데이터의 가장 최근의 카피들의 물리적 메모리 어드레스들에 대한 포인터들을 유지하고, 상기 인다이렉션 테이블은 상기 호스트 운영 체제와 동일한 크기로 상기 복수의 논리적 블록들을 나타내는 시스템.
  21. 제17항에 있어서, 상기 복수의 비휘발성 메모리 칩들은 3차원 NAND 칩들로 구성되고, 하나의 칩 선택만을 갖는 3차원 NAND 칩 당 하나의 채널만이 있고 상기 하나의 채널만에 의해 병렬 판독 요구들이 보내질 수 없는 시스템.
  22. 제21항에 있어서, NAND 페이지 크기는 16킬로바이트이고 호스트 운영 체제로부터 상기 고체 상태 드라이브로의 요구들이 4킬로바이트의 페이지 크기들에서 이루어지는 시스템.
  23. 제17항에 있어서, 상기 복수의 비휘발성 메모리 칩들 내의 데이터의 상기 리팩킹은 주기적으로 수행되고, 상기 복수의 비휘발성 메모리 칩들의 상기 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것은 상기 복수의 비휘발성 메모리 칩들 내의 상기 데이터의 각각의 주기적 리팩킹 동안 수행되는 시스템.
  24. 제17항에 있어서, 상기 데이터가 리팩킹되는 동안 상기 사전 소거된 위치들 내에 오름차순으로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것은 상기 데이터가 리팩킹되는 동안 상기 사전 소거된 위치들 내에 무작위 순서로 물리적으로 인접하게 상기 논리적 블록들을 배치하는 것에 비해 판독 성능을 개선시키고, 상대적 판독 성능은 평면 병렬성이 상기 고체 상태 드라이브에 의해 한 번에 4개의 페이지가 판독되는 것이 허용되도록 지원될 때 최대 1600%인 시스템.
KR1020177013818A 2014-12-23 2015-11-23 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치 KR102462305B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227037879A KR20220150437A (ko) 2014-12-23 2015-11-23 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/581,723 2014-12-23
US14/581,723 US9778848B2 (en) 2014-12-23 2014-12-23 Method and apparatus for improving read performance of a solid state drive
PCT/US2015/062215 WO2016105780A1 (en) 2014-12-23 2015-11-23 Method and apparatus for improving read performance of a solid state drive

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227037879A Division KR20220150437A (ko) 2014-12-23 2015-11-23 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170099852A true KR20170099852A (ko) 2017-09-01
KR102462305B1 KR102462305B1 (ko) 2022-11-03

Family

ID=56129385

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227037879A KR20220150437A (ko) 2014-12-23 2015-11-23 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치
KR1020177013818A KR102462305B1 (ko) 2014-12-23 2015-11-23 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227037879A KR20220150437A (ko) 2014-12-23 2015-11-23 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치

Country Status (5)

Country Link
US (2) US9778848B2 (ko)
KR (2) KR20220150437A (ko)
CN (1) CN107003813B (ko)
TW (1) TWI570558B (ko)
WO (1) WO2016105780A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9778848B2 (en) 2014-12-23 2017-10-03 Intel Corporation Method and apparatus for improving read performance of a solid state drive
US10528462B2 (en) 2016-09-26 2020-01-07 Intel Corporation Storage device having improved write uniformity stability
TWI620067B (zh) * 2016-12-01 2018-04-01 英業達股份有限公司 伺服器系統與讀取方法
US10884919B2 (en) * 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US20190034105A1 (en) * 2017-12-28 2019-01-31 Intel Corporation Storage device having programmed cell storage density modes that are a function of storage device capacity utilization
US10921988B2 (en) 2018-02-15 2021-02-16 SK Hynix Inc. System and method for discovering parallelism of memory devices
US11231873B2 (en) * 2018-12-07 2022-01-25 Intel Corporation Apparatus and method for assigning velocities to write data
CN112313747A (zh) * 2018-12-25 2021-02-02 英特尔公司 用于非易失性存储介质的减少次数的擦除验证
US10725706B1 (en) * 2019-01-23 2020-07-28 Qualcomm Incorporated Apparatus and method of scheduling universal flash storage refresh operations according to a refresh handover mechanism
US11315611B2 (en) 2020-01-07 2022-04-26 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
US11385837B2 (en) * 2020-01-07 2022-07-12 SK Hynix Inc. Memory system
TW202141290A (zh) 2020-01-07 2021-11-01 韓商愛思開海力士有限公司 記憶體中處理(pim)系統和pim系統的操作方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110307646A1 (en) * 2008-06-13 2011-12-15 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
KR20120001405A (ko) * 2010-06-29 2012-01-04 삼성전자주식회사 메모리 시스템 및 그것의 웨어 레벨링 방법
JP2012141944A (ja) * 2010-12-16 2012-07-26 Toshiba Corp メモリシステム
KR20140113110A (ko) * 2013-03-15 2014-09-24 삼성전자주식회사 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000172917A (ja) * 1998-12-02 2000-06-23 Sanden Corp 自動販売機の制御装置
US7082495B2 (en) * 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
KR100533682B1 (ko) * 2003-12-26 2005-12-05 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
US20060181949A1 (en) * 2004-12-31 2006-08-17 Kini M V Operating system-independent memory power management
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
TW200949841A (en) * 2008-05-28 2009-12-01 Silicon Power Comp & Comm Inc Solid state disk and accessing method thereof
US9123422B2 (en) 2012-07-02 2015-09-01 Super Talent Technology, Corp. Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8166233B2 (en) 2009-07-24 2012-04-24 Lsi Corporation Garbage collection for solid state disks
CN101667458B (zh) * 2009-09-22 2012-07-04 成都市华为赛门铁克科技有限公司 一种固态硬盘全盘擦除的方法和相应的设备
US9311229B2 (en) 2011-03-29 2016-04-12 Blackberry Limited System and method for managing flash memory
KR101826047B1 (ko) * 2011-09-28 2018-02-07 삼성전자주식회사 저장 장치 및 그 구동 방법
US9122401B2 (en) * 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
US9619177B2 (en) * 2014-06-05 2017-04-11 Kabushiki Kaisha Toshiba Memory system including non-volatile memory, buffer memory, and controller controlling reading data from non-volatile memory
KR20160004073A (ko) * 2014-07-02 2016-01-12 삼성전자주식회사 비휘발성 메모리 장치 및 그 구동 방법
KR20160064364A (ko) * 2014-11-27 2016-06-08 삼성전자주식회사 패스트 오픈을 위한 어드레스 맵 운영방법 및 그에 따른 메모리 시스템
US9778848B2 (en) 2014-12-23 2017-10-03 Intel Corporation Method and apparatus for improving read performance of a solid state drive

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110307646A1 (en) * 2008-06-13 2011-12-15 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
KR20120001405A (ko) * 2010-06-29 2012-01-04 삼성전자주식회사 메모리 시스템 및 그것의 웨어 레벨링 방법
JP2012141944A (ja) * 2010-12-16 2012-07-26 Toshiba Corp メモリシステム
KR20140113110A (ko) * 2013-03-15 2014-09-24 삼성전자주식회사 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법

Also Published As

Publication number Publication date
US20160179376A1 (en) 2016-06-23
TW201636848A (zh) 2016-10-16
US9778848B2 (en) 2017-10-03
CN107003813A (zh) 2017-08-01
US10114556B2 (en) 2018-10-30
US20180121092A1 (en) 2018-05-03
CN107003813B (zh) 2021-11-19
TWI570558B (zh) 2017-02-11
KR20220150437A (ko) 2022-11-10
KR102462305B1 (ko) 2022-11-03
WO2016105780A1 (en) 2016-06-30

Similar Documents

Publication Publication Date Title
KR102462305B1 (ko) 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치
US11379151B2 (en) Flow control of large sequential host read commands based on a queue threshold
CN105900069B (zh) 对被存储在闪存存储器中的数据的推测性预取
US9727250B2 (en) Nonvolatile memory system and operation method of a memory controller that manages page serial numbers according to program elapsed times of pages
CN110955384B (zh) 数据储存装置以及非挥发式存储器控制方法
TW201621912A (zh) 用於組態和控制非揮發性快取記憶體的系統及方法
US20100030948A1 (en) Solid state storage system with data attribute wear leveling and method of controlling the solid state storage system
KR20170026926A (ko) 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치
US11966329B2 (en) Address map caching for a memory system
US20190303299A1 (en) Control unit for data storage system and method for updating logical-to-physical mapping table
US10254979B1 (en) Relocating or aborting a block of data by a host, based on media policies managed by a storage device
US10430108B2 (en) Concurrent copying of first and second subsets of pages from media such as SLC NAND to media such as QLC or MLC NAND for completion of copying of data
KR102656172B1 (ko) 가상 스트림들과 물리 스트림들을 맵핑하기 위한 스토리지 장치 및 그것의 동작 방법
KR20130084846A (ko) 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
KR20120124285A (ko) 배드 블록 관리를 위한 방법 및 메모리 시스템
US20170003911A1 (en) Information processing device
KR20200016074A (ko) 데이터 처리 시스템 및 그의 동작 방법
KR102435863B1 (ko) 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법
KR20100012468A (ko) 고속 동작하는 반도체 스토리지 시스템
US20180181323A1 (en) Storing a plurality of contexts in a single band in a non-volatile memory device
CN107003811B (zh) 减少在固态驱动器中输入和输出操作的混杂
CN115390747A (zh) 存储设备及其操作方法
CN115543860A (zh) 数据处理系统及其操作方法
KR20220005322A (ko) 메모리 컨트롤러 및 그 동작 방법
TWI705328B (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