KR20180010975A - 다양한 워크로드들에 대한 솔리드 스테이트 드라이브들의 내부 사전 컨디셔닝 - Google Patents

다양한 워크로드들에 대한 솔리드 스테이트 드라이브들의 내부 사전 컨디셔닝 Download PDF

Info

Publication number
KR20180010975A
KR20180010975A KR1020170075965A KR20170075965A KR20180010975A KR 20180010975 A KR20180010975 A KR 20180010975A KR 1020170075965 A KR1020170075965 A KR 1020170075965A KR 20170075965 A KR20170075965 A KR 20170075965A KR 20180010975 A KR20180010975 A KR 20180010975A
Authority
KR
South Korea
Prior art keywords
preselected
ribbon
data
parameters
pbas
Prior art date
Application number
KR1020170075965A
Other languages
English (en)
Other versions
KR101903577B1 (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 KR20180010975A publication Critical patent/KR20180010975A/ko
Application granted granted Critical
Publication of KR101903577B1 publication Critical patent/KR101903577B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/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/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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/40Response verification devices using compression techniques
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • 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
    • 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/202Non-volatile memory
    • G06F2212/2022Flash 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/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • 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/7211Wear leveling
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/40Response verification devices using compression techniques
    • G11C2029/4002Comparison of products, i.e. test results of chips or with golden chip
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

다양한 워크로드들에 대하여 SSD들을 내부적으로 사전 컨디셔닝하기 위한 시스템들 및 방법들이 개시된다. 한가지 이러한 방법은, (1) 리본들 전반에 걸친 무효 분포, 워크로드들의 전송 사이즈, 및 워크로드들의 랜덤성을 포함하는 사전 컨디셔닝 파라미터들을 수신하는 단계; (2) 백분율의 랜덤 데이터 및 백분율의 비랜덤 데이터를 포함하는 워크로드 데이터를 생성하는 단계 - 백분율들은 워크로드들의 랜덤성 파라미터에 기초함 -; (3) 무효 분포 파라미터를 사용하여, 리본의 사전 선택된 물리적 블록 어드레스(PBA)들을 결정하는 단계; (4) 리본이 가득 찰 때까지, 사전 선택된 전송 사이즈를 사용하여, 리본의 사전 선택된 PBA들 각각에 워크로드 데이터의 일부를 기입하는 단계 - 전송 사이즈는 워크로드들의 전송 사이즈 파라미터에 기초함 -; (5) 무효 분포 파라미터를 사용하여 사전 선택되지 않은 리본의 모든 PBA들을 무효인 것으로서 마킹하는 단계; 및 (6) 사전 선택된 종료 조건이 충족될 때까지 (2) 내지 (5) 단계들을 반복하는 단계를 포함한다.

Description

다양한 워크로드들에 대한 솔리드 스테이트 드라이브들의 내부 사전 컨디셔닝{INTERNALLY PRECONDITIONING SOLID STATE DRIVES FOR VARIOUS WORKLOADS}
본 개시내용의 양태들은 일반적으로 솔리드 스테이트 드라이브(solid state drive)(SSD)들에 관한 것으로, 더욱 상세하게는 다양한 워크로드들에 대하여 SSD들을 내부적으로 사전 컨디셔닝(preconditioning)하는 것에 관한 것이다.
다양한 소비자 전자 제품들에서는, 비휘발성 메모리(NVM)들을 포함하는 솔리드 스테이트 드라이브(SSD)들이 대용량 스토리지를 위해 종래의 회전식 하드 디스크 드라이브들을 대체하거나 보완하는 경우가 많다. 이들 비휘발성 메모리들은 하나 이상의 플래시 메모리 디바이스들을 포함할 수 있고, 플래시 메모리 디바이스들은 논리적으로 블록들로 분할될 수 있고, 블록들 각각은 논리적으로 어드레스 가능한 페이지들로 추가로 분할될 수 있다. 이러한 어드레스 가능한 페이지들은 다양한 사이즈들(예를 들어, 512 바이트, 1 킬로바이트, 2 킬로바이트, 4 킬로바이트) 중 임의의 것일 수 있으며, 이들 사이즈들은 호스트 컴퓨팅 디바이스에 의해 사용되는 논리적 블록 어드레스 사이즈들과 매치될 수도 매치되지 않을 수도 있다.
SSD들의 성능을 테스트할 때, 동일하거나 유사한 동작 조건들 하에서 SSD들을 비교하는 것이 종종 바람직하다. 정상 상태에서 동작하는 임의의 SSD에서 자주 발생하는 무효 데이터(invalid data)를 포함하는 블록들이 없는 새 SSD는 많이 사용된 SSD보다 빠르게 수행될 것이므로, 테스터들은 실제 사용 하에서의 정상 상태 조건들과 유사한 상태로 SSD를 가져 오는 경우가 많다. 따라서, SSD를 성능 테스트하기 전에, 테스터는 SSD에 한 번 또는 여러 번 기입을 함으로써 SSD를 정상 상태 조건으로 사전 컨디셔닝하는 경우가 많을 것이다.
그러나, 대용량 SSD들의 사전 컨디셔닝은 시간 소모적인 프로세스일 수 있는데, 이들은 다수의 전체 드라이브 기입들이 순차적이고 그 후에는 랜덤일 것, 모든 논리적 블록 어드레스(LBA)들이 유효한 것을 보장할 것, 간접 테이블(indirection table)에 매핑될 것, 및 다른 그러한 태스크들을 요구하기 때문이다. 드라이브들이 점점 더 커짐에 따라, 이 프로세스 시간이 크게 증가하여, 정상 상태 성능을 측정하고 특성화하는 데 엄청난 시간이 소요되게 된다. 예를 들어, 3.84 테라바이트(TB) 드라이브는 하나의 상태의 사전 컨디셔닝에는 28시간 이상 걸리고, 다른 상태의 사전 컨디셔닝에는 4일 이상 걸릴 수 있다. 따라서, SSD들을 사전 컨디셔닝하기 위한 개선된 방법이 필요하다.
일 양태에서, 본 개시내용은 비휘발성 메모리(NVM)를 포함하는 솔리드 스테이트 드라이브(SSD)를 내부적으로 사전 컨디셔닝하기 위한 방법에 관한 것으로서, 본 방법은, (1) 리본들 전반에 걸친 무효 분포(invalidity distribution across ribbons), 워크로드들의 전송 사이즈, 및 워크로드들의 랜덤성을 포함하는 복수의 사전 선택된 사전 컨디셔닝 파라미터들을 수신하는 단계; (2) 사전 선택된 백분율의 랜덤 데이터 및 사전 선택된 백분율의 비랜덤 데이터를 포함하는 워크로드 데이터를 생성하는 단계 - 랜덤 데이터의 사전 선택된 백분율 및 비랜덤 데이터의 사전 선택된 백분율은 워크로드들의 랜덤성 파라미터에 기초함 -; (3) 리본들 전반에 걸친 무효 분포 파라미터를 사용하여, NVM의 리본의 복수의 사전 선택된 물리적 블록 어드레스(PBA)들을 결정하는 단계; (4) 리본이 가득 찰 때까지, 사전 선택된 전송 사이즈를 사용하여, 리본의 사전 선택된 PBA들 각각에 워크로드 데이터의 일부를 기입하는 단계 - 사전 선택된 전송 사이즈는 워크로드들의 전송 사이즈 파라미터에 기초함 -; (5) 리본들 전반에 걸친 무효 분포 파라미터를 사용하여 사전 선택되지 않은 리본의 모든 PBA들을 무효인 것으로서 마킹하는 단계; 및 (6) 사전 선택된 종료 조건이 충족될 때까지 (2) 내지 (5) 단계들을 반복하는 단계를 포함한다.
다른 양태에서, 본 개시내용은 솔리드 스테이트 드라이브(SSD)를 내부적으로 사전 컨디셔닝하기 위한 시스템에 관한 것으로서, 본 시스템은, 메모리; 비휘발성 메모리(NVM); 및 메모리 및 NVM에 연결되는 프로세서를 포함하고, 프로세서는, (1) 리본들 전반에 걸친 무효 분포, 워크로드들의 전송 사이즈, 및 워크로드들의 랜덤성을 포함하는 복수의 사전 선택된 사전 컨디셔닝 파라미터들을 수신하고, (2) 사전 선택된 백분율의 랜덤 데이터 및 사전 선택된 백분율의 비랜덤 데이터를 포함하는 워크로드 데이터를 생성하고 - 랜덤 데이터의 사전 선택된 백분율 및 비랜덤 데이터의 사전 선택된 백분율은 워크로드들의 랜덤성 파라미터에 기초함 -, (3) 리본들 전반에 걸친 무효 분포 파라미터를 사용하여, NVM의 리본의 복수의 사전 선택된 물리적 블록 어드레스(PBA)들을 결정하고, (4) 리본이 가득 찰 때까지, 사전 선택된 전송 사이즈를 사용하여, 리본의 사전 선택된 PBA들 각각에 워크로드 데이터의 일부를 기입하고 - 사전 선택된 전송 사이즈는 워크로드들의 전송 사이즈 파라미터에 기초함 -, (5) 리본들 전반에 걸친 무효 분포 파라미터를 사용하여 사전 선택되지 않은 리본의 모든 PBA들을 무효인 것으로서 마킹하고, (6) 사전 선택된 종료 조건이 충족될 때까지 (2) 내지 (5)를 반복하도록 구성된다.
도 1은 본 개시내용의 일 실시예에 따라 사전 선택된 워크로드에 의해 솔리드 스테이트 디바이스(SSD)의 내부 사전 컨디셔닝을 수행할 수 있는 SSD의 블록도이다.
도 2는 본 개시내용의 일 실시예에 따라 사전 선택된 워크로드에 의해 SSD를 내부적으로 사전 컨디셔닝하기 위한 프로세스의 흐름도이다.
도 3은 본 개시내용의 일 실시예에 따라 사전 선택된 파라미터들에 기초한 4개의 리본 SSD에 대한 예시적인 무효 레이아웃이다.
도 4는 본 개시내용의 일 실시예에 따라 SSD를 내부적으로 사전 컨디셔닝하는 데 사용될 수 있는 리본들 전반에 걸친 무효 분포 파라미터에 대한 랜덤 샘플 데이터의 테이블 및 대응하는 그래프이다.
도 5는 본 개시내용의 일 실시예에 따라 SSD를 내부적으로 사전 컨디셔닝하는 데 사용될 수 있는 리본들 전반에 걸친 무효 분포 파라미터에 대한 부분 볼륨 샘플 데이터의 테이블 및 대응하는 그래프이다.
도 6은 본 개시내용의 일 실시예에 따라 사전 선택된 파라미터들에 기초한 10개의 리본 SSD에 대한 예시적인 무효 레이아웃이다.
이제 도면들을 참조하여, 사전 선택된 파라미터들 세트에 기초하여 다양한 워크로드들에 대하여 SSD들을 내부적으로 사전 컨디셔닝하기 위한 시스템들 및 방법들이 설명된다. 한 가지 그러한 방법은 (1) 리본들 전반에 걸친 무효 분포, 워크로드들의 전송 사이즈, 및 워크로드들의 랜덤성을 포함하는 복수의 사전 선택된 사전 컨디셔닝 파라미터들을 수신하는 단계; (2) 사전 선택된 백분율의 랜덤 데이터 및 사전 선택된 백분율의 비랜덤 데이터를 포함하는 워크로드 데이터를 생성하는 단계 - 랜덤 데이터의 사전 선택된 백분율 및 비랜덤 데이터의 사전 선택된 백분율은 워크로드들의 랜덤성 파라미터에 기초함 -; (3) 리본들 전반에 걸친 무효 분포 파라미터를 사용하여, NVM의 리본의 복수의 사전 선택된 물리적 블록 어드레스(PBA)들을 결정하는 단계; (4) 리본이 가득 찰 때까지, 사전 선택된 전송 사이즈를 사용하여, 리본의 사전 선택된 PBA들 각각에 워크로드 데이터의 일부를 기입하는 단계 - 사전 선택된 전송 사이즈는 워크로드들의 전송 사이즈 파라미터에 기초함 -; (5) 리본들 전반에 걸친 무효 분포 파라미터를 사용하여 사전 선택되지 않은 리본의 모든 PBA들을 무효인 것으로서 마킹하는 단계; 및 (6) 사전 선택된 종료 조건이 충족될 때까지 (2) 내지 (5) 단계들을 반복하는 단계에 의해, 비휘발성 메모리(NVM)를 포함하는 SSD를 내부적으로 사전 컨디셔닝하는 것을 포함한다. 일 양태에서, 사전 선택된 종료 조건은 NVM 내의 각각의 리본이 가득 차게 될 때 충족된다. SSD를 내부적으로 사전 컨디셔닝하기 위한 한 가지 그러한 시스템은 메모리, 비휘발성 메모리(NVM), 및 메모리 및 NVM에 연결되고 상술한 방법을 수행하도록 구성되는 프로세서를 포함한다.
(예를 들어, 호스트를 사용하여) SSD들을 외부적으로 컨디셔닝하는 관련 분야의 사전 컨디셔닝 기술들과는 대조적으로, 본 명세서에서 설명되는 시스템들 및 방법들의 양태들은 SSD를 내부적으로 사전 컨디셔닝하는 것을 포함할 수 있다. 결과적으로, 본 명세서에서 설명되는 내부 사전 컨디셔닝의 시스템들 및 방법들은 SSD 성능의 훨씬 더 신속한 특성화를 가능하게 하는데, 특히 (예를 들어, 펌웨어 또는 다른 곳에서) 드라이브의 설계에 변경들이 가해질 때 더욱 그러하다. 또한, 이러한 내부 사전 컨디셔닝의 시스템들 및 방법들은 코드 테스트 주기를 획기적으로 줄이고, 및/또는 펌웨어 개발자에게 성능 트윅들(performance tweaks)을 만들고 이를 미세 조정할 더 많은 기회들을 허용한다.
도 1은, 본 개시내용의 일 실시예에 따라 사전 선택된 워크로드에 의해 SSD의 내부 사전 컨디셔닝을 수행할 수 있는 솔리드 스테이트 디바이스(SSD)의 블록도이다. 시스템(100)은 호스트(102), 및 호스트(102)에 연결되는 SSD 스토리지 디바이스(104)를 포함한다. 호스트(102)는 호스트(102)와 SSD 스토리지 디바이스(104) 사이에서 데이터를 전송하기 위한 커맨드들을 SSD 스토리지 디바이스(104)에 제공한다. 예를 들어, 호스트(102)는 SSD 스토리지 디바이스(104)에 데이터를 기입하기 위한 기입 커맨드를 SSD 스토리지 디바이스(104)에 제공하거나, 또는 SSD 스토리지 디바이스(104)로부터 데이터를 판독하기 위한 판독 커맨드를 SSD 스토리지 디바이스(104)에 제공할 수 있다. 호스트(102)는 데이터 스토리지 또는 리트리브에 대한 필요성 및 SSD 스토리지 디바이스(104)와 통신하기 위한 호환가능한 인터페이스를 갖는 임의의 시스템 또는 디바이스일 수 있다. 예를 들어, 호스트(102)는 컴퓨팅 디바이스, 퍼스널 컴퓨터, 휴대용 컴퓨터 또는 워크 스테이션, 서버, 개인 휴대 정보 단말기, 디지털 카메라, 디지털 전화기 등일 수 있다.
SSD 스토리지 디바이스(104)는 호스트 인터페이스(106), 제어기(108), 메모리(110) 및 비휘발성 메모리(112)를 포함한다. 호스트 인터페이스(106)는 제어기(108)에 연결되고, 호스트(102)와 제어기(108) 사이의 통신을 용이하게 한다. 또한, 제어기(108)는 메모리(110) 및 비휘발성 메모리(112)에 연결된다. 호스트 인터페이스(106)는 IDE(Integrated Drive Electronics) 인터페이스, USB(Universal Serial Bus) 인터페이스, SP(Serial Peripheral) 인터페이스, ATA(Advanced Technology Attachment) 인터페이스, SCSI(Small Computer System Interface), IEEE 1394(Firewire) 인터페이스 등과 같은 임의의 타입의 통신 인터페이스일 수 있다. 일부 실시예들에서, 호스트(102)는 SSD 스토리지 디바이스(104)를 포함한다. 다른 실시예들에서, SSD 스토리지 디바이스(104)는 호스트(102)에 대해 원격이거나 또는 호스트(102)와 통신으로 연결되는 원격 컴퓨팅 시스템에 포함된다. 예를 들어, 호스트(102)는 무선 통신 링크를 통해 SSD 스토리지 디바이스(104)와 통신할 수 있다.
제어기(108)는 SSD 스토리지 디바이스(104)의 동작을 제어한다. 다양한 실시예들에서, 제어기(108)는 호스트 인터페이스(106)를 통해 호스트(102)로부터 커맨드들을 수신하고, 호스트(102)와 비휘발성 메모리(112) 사이에서 데이터를 전송하기 위한 커맨드들을 수행한다. 제어기(108)는 SSD 스토리지 디바이스(104)의 동작을 제어하기 위해 마이크로프로세서, 마이크로 제어기, 임베디드 제어기, 로직 회로, 소프트웨어, 펌웨어 등과 같은 임의의 타입의 프로세싱 디바이스를 포함할 수 있다.
일부 실시예들에서, 본 명세서에서 제어기(108)에 의해 수행되는 것으로 설명되는 기능들 중 일부 또는 전부의 기능들은 SSD 스토리지 디바이스(104)의 다른 엘리먼트에 의해 대신 수행될 수 있다. 예를 들어, SSD 스토리지 디바이스(104)는 본 명세서에서 제어기(108)에 의해 수행되는 것으로 설명되는 기능들 중 하나 이상의 기능들을 수행하기 위하여 마이크로프로세서, 마이크로 제어기, 임베디드 제어기, 로직 회로, 소프트웨어, 펌웨어 또는 임의의 종류의 프로세싱 디바이스를 포함할 수 있다. 일부 실시예들에서, 본 명세서에서 제어기(108)에 의해 수행되는 것으로 설명되는 기능들 중 하나 이상의 기능들은 호스트(102)에 의해 대신 수행된다. 일부 실시예들에서, 본 명세서에서 제어기(108)에 의해 수행되는 것으로 설명되는 기능들 중 일부 또는 전부의 기능들은 비휘발성 메모리 엘리먼트들 및 자기 스토리지 엘리먼트들 모두를 포함하는 하이브리드 드라이브 내의 제어기와 같은 다른 엘리먼트에 의해 대신 수행될 수 있다.
메모리(110)는 데이터를 저장할 수 있는 임의의 메모리, 컴퓨팅 디바이스 또는 시스템일 수 있다. 예를 들어, 메모리(110)는 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 플래시 스토리지, 소거가능한 프로그래머블 판독 전용 메모리(EPROM), 전기적으로 소거가능한 프로그래머블 판독 전용 메모리(EEPROM) 등일 수 있다. 다양한 실시예들에서, 제어기(108)는 호스트(102)와 비휘발성 메모리(112) 사이에서 데이터를 전송하는 동안에 데이터를 저장하기 위해 메모리(110) 또는 그 일부를 사용한다. 예를 들어, 메모리(110) 또는 메모리(110)의 일부는 캐시 메모리일 수 있다.
비휘발성 메모리(NVM)(112)는 제어기(108)로부터 데이터를 수신하고, 그 데이터를 저장한다. 비휘발성 메모리(112)는 플래시 스토리지 시스템, 솔리드 스테이트 드라이브, 플래시 메모리 카드, 보안 디지털(SD) 카드, USB(universal serial bus) 메모리 디바이스, 콤팩트플래시(CompactFlash) 카드, 스마트미디어(SmartMedia) 디바이스, 플래시 스토리지 어레이 등과 같은 임의의 타입의 비휘발성 메모리일 수 있다.
제어기(108) 또는 NVM(112)은 본 명세서에서 설명되는 사전 선택된 워크로드에 의해 SSD를 내부적으로 사전 컨디셔닝하기 위한 프로세스들 중 임의의 프로세스를 수행하도록 구성될 수 있다.
도 2는 본 개시내용의 일 실시예에 따라 사전 선택된 워크로드에 의해 SSD를 내부적으로 사전 컨디셔닝하기 위한 프로세스(200)의 흐름도이다. 특정 실시예들에서, 프로세스(200)는 (예를 들어, SSD에서) 도 1의 제어기(108)에 의해 수행될 수 있다.
블록(202)에서, 프로세스는 리본들 전반에 걸친 무효 분포, 워크로드들의 전송 사이즈 및 워크로드들의 랜덤성을 포함하는 복수의 사전 선택된 사전 컨디셔닝 파라미터들을 수신한다. 일 양태에서, 프로세스는 도 1의 호스트(102)와 같은 호스트로부터 사전 선택된 사전 컨디셔닝 파라미터들을 수신한다. 일 양태에서, 사전 선택된 사전 컨디셔닝 파라미터들은 또한 리본들의 에이지(age of ribbons) 파라미터를 포함할 수 있다.
일 양태에서, 리본들 전반에 걸친 무효 분포 파라미터는 특정 리본에서 무효인 다수의 물리적 블록 어드레스(PBA)들을 특정할 수 있다. 다른 양태에서, 리본들 전반에 걸친 무효 분포 파라미터는 특정 리본에서 무효인 물리적 블록 어드레스(PBA)들의 수를 나타내는 백분율을 특정할 수 있다. 몇몇 실시예들에서, 리본들 전반에 걸친 무효 분포 파라미터는 특정 리본 또는 다수의 리본들(예를 들어, 리본들의 어레이)에 대한 무효 정보를 특정할 수 있다.
일 양태에서, 리본들의 에이지 파라미터는 SSD 내의 임의의 특정 리본이 소거된 횟수(예를 들어, 소거 사이클들의 수)를 특정할 수 있다.
일 양태에서, 워크로드들의 전송 사이즈는 SSD 내의 특정 리본 또는 모든 리본들에 기입되는 데이터의 사전 선택된 전송 사이즈를 특정할 수 있다. 일 양태에서, 워크로드들의 전송 사이즈는 4 킬로바이트(Kb) 또는 최대 64Kb일 수 있다. 이 파라미터는 종종 이 프로세스와 같은 내부 알고리즘들, 및 가비지 수집 등과 같은 기타 알고리즘들에 주목할 만한 영향을 미친다.
일 양태에서, 워크로드들의 랜덤성 파라미터는 0과 1 사이의 값(예를 들어, 백분율)을 특정하며, 0은 완전히 순차적인 것(예를 들어, 랜덤성 없음)에 대응하고, 1은 완전히 랜덤인 것에 대응한다. 일 양태에서, 워크로드들의 랜덤성 파라미터는 가비지 수집들 및 조각 모음(defragmentation)과 같은 알고리즘들에 주목할만한 영향을 미친다. 일 양태에서, 워크로드들의 랜덤성 파라미터는 SSD 내의 모든 리본들에 적용된다. 다른 양태에서, 워크로드들의 랜덤성 파라미터들은 SSD 내의 각각의 리본에 대한 별도의 파라미터를 포함할 수 있다.
블록(204)에서, 프로세스는 사전 선택된 백분율의 랜덤 데이터 및 사전 선택된 백분율의 비랜덤 데이터를 포함하는 워크로드 데이터를 생성하며, 여기서 랜덤 데이터의 사전 선택된 백분율 및 비랜덤 데이터의 사전 선택된 백분율은 워크로드들의 랜덤성 파라미터에 기초한다. 일 양태에서, 프로세스는 난수 생성기를 사용하여 랜덤 데이터를 생성할 수 있다. 그러한 일 양태에서, 프로세스는 아마도 긴 주기 길이 및 심지어 균일성을 갖는 의사 난수 생성기(PRNG)를 사용할 수 있다. 일 양태에서, 워크로드들의 랜덤성 파라미터는 100퍼센트일 수 있다. 그러한 경우, 랜덤 데이터의 사전 선택된 백분율은 100퍼센트일 것이고, 워크로드 데이터는 랜덤 데이터만을 포함할 것이다. 다른 양태에서, 워크로드들의 랜덤성 파라미터는 0퍼센트일 수 있다. 그러한 경우, 비랜덤 데이터의 사전 선택된 백분율은 100퍼센트일 것이고, 워크로드 데이터는 비랜덤(예를 들어, 순차적인) 데이터만을 포함할 것이다.
일 양태에서, 랜덤 데이터 및 비랜덤 데이터는 논리적 블록 어드레스들일 수 있으며, 종종 SSD들의 메모리 어드레스들에 저장될 수 있다. 일부 양태들에서, 워크로드 데이터는 또한 임의의 호스트 데이터와 같은 추가 데이터를 포함할 수도 있다. 한 가지 그러한 경우에, 임의의 데이터는 (예를 들어, 사전 컨디셔닝 파라미터들 중 일부 또는 전부의 사전 컨디셔닝 파라미터들과 같은) 난수 시드를 사용하여 생성될 수 있다. 일 양태에서, 워크로드 데이터의 추가 데이터는 사전 컨디셔닝 파라미터들 중 임의의 또는 모든 사전 컨디셔닝 파라미터들을 포함할 수 있다. 일 양태에서, 워크로드 데이터는 메타데이터인 하나의 부분 및 임의의 호스트 데이터인 다른 부분을 포함하는 것으로 보일 수 있다. 메타데이터는 랜덤 데이터 및 비랜덤 데이터를 포함할 수 있으며, 여기서 이러한 데이터는 논리적 블록 어드레스들일 수 있다. 메타데이터는 순환 중복 검사(cyclic redundancy check)(CRC)를 추가로 포함할 수 있으며, 여기서 CRC는 대응하는 논리적 블록 어드레스들을 시드로서 사용하여 생성될 수 있다.
블록(206)에서, 프로세스는 리본들 전반에 걸친 무효 분포 파라미터를 사용하여 NVM의 리본의 복수의 사전 선택된 물리적 블록 어드레스(PBA)들을 결정한다. 일 양태에서, 프로세스는 기입되는 리본 내의 PBA들의 수 및 적절한 슬롯들을 결정한다. 예를 들어, 리본들 전반에 걸친 무효 분포 파라미터가 50퍼센트이면, 프로세스는 데이터 기입을 위해 PBA들 중 절반의 PBA들을 선택할 수 있다. 적절한 슬롯들은 리본들 전반에 걸친 무효 분포 파라미터 및 워크로드들의 전송 사이즈 파라미터 모두를 사용하여 결정될 수 있다.
그 후, 블록(208)에서, 프로세스는 리본이 가득 찰 때까지, 사전 선택된 전송 사이즈를 사용하여, 리본의 사전 선택된 PBA들(예를 들어, 블록(206)에서 결정됨) 각각에 워크로드 데이터의 일부를 기입하며, 여기서 사전 선택된 전송 사이즈는 워크로드들의 전송 사이즈 파라미터에 기초한다.
블록(210)에서, 프로세스는 리본들 전반에 걸친 무효 분포 파라미터를 사용하여 사전 선택되지 않은 리본의 모든 PBA들을 무효인 것으로서 마킹한다.
블록(212)에서, 프로세스는 사전 선택된 종료 조건이 충족될 때까지 블록들(204 내지 210)을 반복한다. 일 양태에서, 사전 선택된 종료 조건은 NVM 내의 각각의 리본이 가득 찰 때 충족된다. 다른 양태들에서, 사전 선택된 종료 조건은 일부 리본들은 가득 차 있고 다른 리본들은 완전히 소거될 때 충족될 수 있다.
일 양태에서, 프로세스는 또한 SSD의 간접 테이블에서 홀들(예를 들어, 제로들)을 검색한다. 그 후, 프로세스는 홀들 각각에 워크로드 데이터로부터의 랜덤 데이터 또는 기타 랜덤 데이터를 기입할 수 있다. 결과적으로, 프로세스는 이에 의해 간접 테이블의 홀들에 랜덤 매핑을 할당할 수 있다. 간접 테이블은 논리적 블록 어드레스(LBA)들을 물리적 블록 어드레스들에 매핑하는 데 사용되는 대형 테이블이다. 일 양태에서, 간접 테이블은 플랫 어레이, 트리 또는 다른 적절한 데이터 구조로서 구현될 수 있다.
일 양태에서, 프로세스는 리본들의 에이지 파라미터에 기초하여, SSD의 리본 소거 카운트 테이블을 업데이트한다. 일 양태에서, 사전 선택된 사전 컨디셔닝 파라미터들은 또한 각각의 리본에 대한 소거 카운트를 포함할 수 있다.
일 양태에서, 프로세스는 상이한 순서로 액션들의 시퀀스를 수행할 수 있다. 다른 양태에서, 프로세스는 액션들 중 하나 이상의 액션들을 스킵할 수 있다. 다른 양태들에서, 액션들 중 하나 이상의 액션들이 동시에 수행된다. 일부 양태들에서는, 추가 액션들이 수행될 수 있다.
프로세스의 다른 변형들은 다른 타입들의 파라미터들을 드라이브에 전달하는 것을 포함할 수 있다. 이러한 새로운 파라미터들은 NAND 전압 임계치들, NAND 결함 매핑들 및 다른 특정 구현 파라미터들을 포함할 수 있지만, 이에 제한되지 않으며, 여기서 NAND는 NVM들에서 일반적으로 사용되는 NAND 플래시 메모리들에 관한 것이다.
도 3은 본 개시내용의 일 실시예에 따라 사전 선택된 파라미터들에 기초한 4개의 리본 SSD에 대한 예시적인 무효 레이아웃(300)이다. 일 양태에서, 가능한 SSD 레이아웃을 나타내는 예시적인 레이아웃(300)은 언급된 파라미터들(예를 들어, 사전 선택된 파라미터들)을 사용하여 도 2의 사전 컨디셔닝 방법/프로세스에 의해 생성될 수 있다. 도 3의 상단에서 볼 수 있는 바와 같이, 사전 선택된 파라미터들은 [50%, 50%, 10%, 90%]의 리본들 전반에 걸친 무효 파라미터들의 세트, [14, 15, 16, 17]의 리본들의 에이지 파라미터들의 세트, [20, 22, 24, 26]의 소거 카운트 파라미터들의 세트, 8 킬로바이트 또는 kB(예를 들어, 2개의 LBN들, 여기서 1개의 LBN은 4kB의 사이즈를 가짐)의 워크로드(들)의 전송("Xfer") 사이즈 파라미터, 및 90%의 워크로드(들)의 랜덤성(예를 들어, 전송들 중 10%가 마지막 LBN에서 순차적일 것이며, 효과적으로는 비랜덤임)을 포함한다. 다른 실시예들에서, 이들 파라미터들의 서브세트가 사용될 수 있다.
도 3의 아래의 파라미터 리스트에서 알 수 있는 바와 같이, 리본당 0 내지 3으로 번호 매겨진 4개의 리본들 및 20개의 물리적 블록 어드레스들(PBA들/슬롯들)이 있다. 레이아웃(300)은 "리본 PBA 슬롯 오프셋(Ribbon PBA Slot Offset)" 번호 및 리본 번호에 대한 컬럼들을 갖는 테이블과 같은 포맷을 갖는다. 테이블 상단에는, 각각의 리본 번호에 대해 에이지(시퀀스 또는 "seq"라고 지칭될 수도 있음) 및 소거 카운트와 같은 리본 메타데이터가 열거된다. 테이블의 아래 부분에서, 테이블은 리본의 각각의 어드레스/슬롯의 컨텐츠, 및 랜덤 데이터(예를 들어, 슬롯 오프셋들 0 및 1에서의 리본 0 참조), 비랜덤 데이터(예를 들어, 슬롯 오프셋들 16 및 17에서의 리본 1 참조) 또는 무효 데이터가 각각의 슬롯(예를 들어, 메모리 위치)에 저장되는지 여부를 도시한다. 일 양태에서, 리본 0 및 슬롯 오프셋들 0 및 1에 도시된 데이터는 "RandLBN[0]" 및 "RandLBN[0] + 1"을 열거하기 때문에, 이것이 적어도 부분적으로 순차적으로 보일 수 있지만, 2개의 슬롯 블록은 하나의 유닛으로서 기입되고 있으며, 집합적으로는 랜덤이다.
테이블 바로 아래에서 볼 수 있는 바와 같이, 계산된 무효(무효 슬롯들/총 슬롯들)는 각각의 리본에 대한 리본들 전반에 걸친 무효 파라미터에 정확히 대응한다. 테이블을 통해 알 수 있는 바와 같이, 사전 컨디셔닝 프로세스는 랜덤 또는 비랜덤 데이터(예를 들어, 슬롯들 0 및 1에서의 리본 0)를 이용하여 한 번에 2개의 PBA들을 기입하며, 여기서 기입되는 PBA들의 수는 워크로드들의 전송 사이즈에 대응한다. 테이블에서 알 수 있는 바와 같이, 사전 컨디셔닝 프로세스는 워크로드들의 랜덤성 파라미터, 이 경우 90%에 대응하는 레이트로 랜덤 데이터(예를 들어, 랜덤 LBA들)와 비랜덤 데이터(예를 들어, 비랜덤 LBA들)를 산재시킨다. 이와 같이, 대략 10회 전송들마다, 지정된 슬롯에 기입되는 데이터가 비랜덤 또는 순차적일 수 있다. 다른 실시예들에서, 프로세스는 파라미터들에 따라 상이한 방식들로 동작할 수 있다. 도 3에는 도시되지 않았지만, 기입되는 각각의 슬롯은 메타데이터 및 임의의 호스트 데이터와 같은 추가 데이터를 포함할 수 있다. 메타데이터는 랜덤 LBA들 및 비랜덤 LBA들을 포함할 수 있다. 메타데이터는 순환 중복 검사(CRC)를 추가로 포함할 수 있으며, 여기서 CRC는 대응하는 논리적 블록 어드레스를 시드로서 사용하여 생성될 수 있다. 일 양태에서는, 논리적 블록 어드레스(LBA)가 데이터 무결성 체크로서 리본(예를 들어, SSD)의 각각의 슬롯(예를 들어, PBA)에 저장되어, 저장된 LBA가 간접 테이블에 저장된 대응하는 LBA와 매치될 수 있게 한다.
도 4는 본 개시내용의 일 실시예에 따라 SSD를 내부적으로 사전 컨디셔닝하는 데 사용될 수 있는 리본들 전반에 걸친 무효 분포 파라미터에 대한 랜덤 샘플 데이터의 테이블(402) 및 대응하는 그래프(404)이다. 도 4의 예에서는, 10개의 리본들이 있다고 가정한다. 테이블(402)은 리본 번호 및 대응하는 무효 분포 및 에이지를 나타낸다. 예를 들어, 리본 0은 100의 무효 및 0의 에이지를 갖는다. 그래프(404)는 무효 대 리본 번호를 도시하며, 랜덤하게 할당된 샘플 데이터를 감안하면 결과적인 곡선은 상당히 선형이다.
도 5는 본 개시내용의 일 실시예에 따라 SSD를 내부적으로 사전 컨디셔닝하는 데 사용될 수 있는 리본들 전반에 걸친 무효 분포 파라미터에 대한 부분 볼륨 샘플 데이터의 테이블(502) 및 대응하는 그래프(504)이다. 도 5의 예에서도, 다시 10개의 리본들이 있다고 가정한다. 테이블(502)은 리본 번호 및 대응하는 무효 분포 및 에이지를 나타낸다. 예를 들어, 리본 0은 100의 무효 및 0의 에이지를 갖는다. 그래프(504)는 무효 대 리본 번호를 도시하며, 부분 볼륨 할당된 샘플 데이터를 감안한 결과적인 곡선이 나온다. 일 양태에서는, 부분 볼륨이 워크로드로서 정의될 수 있으며, 여기서는 드라이브의 LBA들의 서브세트만이 사용된다. 이에 의해 도 5에 디스플레이된 특성이 얻어지며, 여기서는 논리적 블록 어드레스들이 더 높은 빈도로 그들의 이전 리본 위치들을 반복하고 무효화하기 때문에, 더 많은 리본들이 높은 무효를 갖는다.
도 6은 본 개시내용의 일 실시예에 따라 사전 선택된 파라미터들에 기초한 10개의 리본 SSD에 대한 예시적인 무효 레이아웃(600)이다. 도 6으로부터 알 수 있는 바와 같이, 리본당 20개의 논리적 블록 번호(LBN)들이 존재하며, 각각의 LBN은 다수의 LBA들로 구성된다. 레이아웃(600)은 리본 번호, 에이지(시퀀스 또는 "seq"라고도 지칭될 수 있음), 리본 레이아웃 및 무효(예를 들어, 리본들 전반에 걸친 무효 분포)에 대한 컬럼들을 갖는 테이블과 같은 포맷을 갖는다. 예를 들어, 리본 0은 73의 에이지, 10의 무효, LBN들 중 10개의 LBN이 무효인 것으로 되었음을 나타내는 대응하는 레이아웃을 갖는다. 파라미터들의 리스트(602)는 레이아웃(600) 아래에 도시된다.
상기 설명은 본 발명의 다수의 특정 실시예들을 포함하지만, 이들은 본 발명의 범위를 제한하는 것으로 해석되어서는 안되며, 오히려 그 특정 실시예들의 예들로서 해석되어야 한다. 따라서, 본 발명의 범위는 기술된 실시예들에 의해서가 아니라 첨부된 청구 범위 및 그 균등물들에 의해 결정되어야 한다.
전술한 다양한 특징들 및 프로세스들은 서로 독립적으로 사용될 수 있거나, 다양한 방식들로 조합될 수 있다. 모든 가능한 조합들 및 하위조합들은 본 개시내용의 범위 내에 속하는 것으로 의도된다. 또한, 일부 구현들에서는 특정 방법, 이벤트, 상태 또는 프로세스 블록들이 생략될 수 있다. 본 명세서에서 설명되는 방법들 및 프로세스들은 또한 임의의 특정 시퀀스로 제한되지 않으며, 그에 관련된 블록들 또는 상태들은 적절한 다른 시퀀스들로 수행될 수 있다. 예를 들어, 설명된 태스크들 또는 이벤트들은 구체적으로 개시된 것 이외의 순서로 수행될 수 있거나, 복수의 것이 단일 블록 또는 상태로 조합될 수 있다. 예시적인 태스크들 또는 이벤트들은 직렬, 병렬 또는 일부 다른 적절한 방식으로 수행될 수 있다. 태스크들 또는 이벤트들은 개시된 예시적인 실시예들에 추가되거나 그로부터 제거될 수 있다. 본 명세서에서 설명되는 예시적인 시스템들 및 컴포넌트들은 설명된 것과 상이하게 구성될 수 있다. 예를 들어, 개시된 예시적인 실시예들과 비교하여 엘리먼트들이 추가, 제거 또는 재배치될 수 있다.

Claims (18)

  1. 비휘발성 메모리(NVM)를 포함하는 솔리드 스테이트 드라이브(SSD)를 내부적으로 사전 컨디셔닝(preconditioning)하기 위한 방법으로서,
    (1) 리본들 전반에 걸친 무효 분포(invalidity distribution across ribbons), 워크로드들의 전송 사이즈, 및 워크로드들의 랜덤성을 포함하는 복수의 사전 선택된 사전 컨디셔닝 파라미터들을 수신하는 단계;
    (2) 사전 선택된 백분율의 랜덤 데이터 및 사전 선택된 백분율의 비랜덤 데이터를 포함하는 워크로드 데이터를 생성하는 단계 - 상기 랜덤 데이터의 사전 선택된 백분율 및 상기 비랜덤 데이터의 사전 선택된 백분율은 워크로드들의 랜덤성 파라미터에 기초함 -;
    (3) 리본들 전반에 걸친 무효 분포 파라미터를 사용하여, 상기 NVM의 리본의 복수의 사전 선택된 물리적 블록 어드레스(PBA)들을 결정하는 단계;
    (4) 상기 리본이 가득 찰 때까지, 사전 선택된 전송 사이즈를 사용하여, 상기 리본의 상기 사전 선택된 PBA들 각각에 상기 워크로드 데이터의 일부를 기입하는 단계 - 상기 사전 선택된 전송 사이즈는 워크로드들의 전송 사이즈 파라미터에 기초함 -;
    (5) 상기 리본들 전반에 걸친 무효 분포 파라미터를 사용하여 사전 선택되지 않은 상기 리본의 모든 PBA들을 무효인 것으로서 마킹하는 단계; 및
    (6) 사전 선택된 종료 조건이 충족될 때까지 (2) 내지 (5) 단계들을 반복하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 사전 선택된 종료 조건이 충족될 때까지 (2) 내지 (5) 단계들을 반복하는 단계는 상기 NVM 내의 각각의 리본이 가득 찰 때까지 (2) 내지 (5) 단계들을 반복하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 복수의 사전 선택된 사전 컨디셔닝 파라미터들을 수신하는 단계는 상기 SSD에서의 호스트로부터 상기 복수의 사전 선택된 사전 컨디셔닝 파라미터들을 수신하는 단계를 포함하고,
    상기 워크로드 데이터를 생성하는 단계는 상기 SSD에서 상기 워크로드 데이터를 생성하는 단계를 포함하고,
    상기 복수의 사전 선택된 PBA들을 결정하는 단계는 상기 SSD에서 상기 복수의 사전 선택된 PBA들을 결정하는 단계를 포함하고,
    상기 리본의 상기 사전 선택된 PBA들 각각에 상기 워크로드 데이터의 일부를 기입하는 단계는 상기 SSD에서 상기 리본의 상기 사전 선택된 PBA들 각각에 상기 워크로드 데이터의 일부를 기입하는 단계를 포함하는 방법.
  4. 제1항에 있어서,
    상기 SSD의 간접 테이블(indirection table)에서 홀들을 검색하는 단계; 및
    상기 홀들 각각에 상기 워크로드 데이터로부터의 랜덤 데이터를 기입하는 단계
    를 추가로 포함하는 방법.
  5. 제1항에 있어서, 상기 복수의 사전 선택된 사전 컨디셔닝 파라미터들은 리본들의 에이지(age)를 추가로 포함하고,
    상기 방법은,
    리본들의 에이지 파라미터에 기초하여, 상기 SSD의 리본 소거 카운트 테이블을 업데이트하는 단계
    를 추가로 포함하는 방법.
  6. 제1항에 있어서, 상기 워크로드 데이터를 생성하는 단계는 의사 난수 생성기를 사용하여 상기 워크로드 데이터를 생성하는 단계를 포함하는 방법.
  7. 제1항에 있어서, 상기 워크로드들의 전송 사이즈 파라미터는 4k 블록들 또는 64k 블록들 중 적어도 하나를 포함하는 방법.
  8. 제1항에 있어서, 상기 워크로드들의 랜덤성 파라미터는 0부터 1까지 중의 값인 방법.
  9. 제1항에 있어서,
    상기 워크로드 데이터의 랜덤 데이터 또는 상기 워크로드 데이터의 비랜덤 데이터 중 어느 것을 사용하여, 상기 복수의 PBA들 각각에 대한 논리적 블록 어드레스들을 결정하는 단계를 추가로 포함하고,
    상기 리본의 상기 사전 선택된 PBA들 각각에 상기 워크로드 데이터의 일부를 기입하는 단계는 상기 리본의 상기 사전 선택된 PBA들 각각에 상기 논리적 블록 어드레스들 중 하나의 논리적 블록 어드레스를 기입하는 단계를 포함하는 방법.
  10. 솔리드 스테이트 드라이브(SSD)를 내부적으로 사전 컨디셔닝하기 위한 시스템으로서,
    메모리;
    비휘발성 메모리(NVM); 및
    상기 메모리 및 상기 NVM에 연결되는 프로세서
    를 포함하고,
    상기 프로세서는,
    (1) 리본들 전반에 걸친 무효 분포, 워크로드들의 전송 사이즈, 및 워크로드들의 랜덤성을 포함하는 복수의 사전 선택된 사전 컨디셔닝 파라미터들을 수신하고,
    (2) 사전 선택된 백분율의 랜덤 데이터 및 사전 선택된 백분율의 비랜덤 데이터를 포함하는 워크로드 데이터를 생성하고 - 상기 랜덤 데이터의 사전 선택된 백분율 및 상기 비랜덤 데이터의 사전 선택된 백분율은 워크로드들의 랜덤성 파라미터에 기초함 -,
    (3) 리본들 전반에 걸친 무효 분포 파라미터를 사용하여, 상기 NVM의 리본의 복수의 사전 선택된 물리적 블록 어드레스(PBA)들을 결정하고,
    (4) 상기 리본이 가득 찰 때까지, 사전 선택된 전송 사이즈를 사용하여, 상기 리본의 상기 사전 선택된 PBA들 각각에 상기 워크로드 데이터의 일부를 기입하고 - 상기 사전 선택된 전송 사이즈는 워크로드들의 전송 사이즈 파라미터에 기초함 -,
    (5) 상기 리본들 전반에 걸친 무효 분포 파라미터를 사용하여 사전 선택되지 않은 상기 리본의 모든 PBA들을 무효인 것으로서 마킹하고,
    (6) 사전 선택된 종료 조건이 충족될 때까지 (2) 내지 (5)를 반복하도록
    구성되는 시스템.
  11. 제10항에 있어서, 상기 프로세서는 상기 NVM 내의 각각의 리본이 가득 찰 때까지 (2) 내지 (5)를 반복하도록 추가로 구성되는 시스템.
  12. 제10항에 있어서, 상기 프로세서는 호스트로부터 상기 복수의 사전 선택된 사전 컨디셔닝 파라미터들을 수신하도록 추가로 구성되는 시스템.
  13. 제10항에 있어서, 상기 프로세서는,
    상기 SSD의 간접 테이블에서 홀들을 검색하고,
    상기 홀들 각각에 상기 워크로드 데이터로부터의 랜덤 데이터를 기입하도록
    추가로 구성되는 시스템.
  14. 제10항에 있어서,
    상기 복수의 사전 선택된 사전 컨디셔닝 파라미터들은 리본들의 에이지를 추가로 포함하고,
    상기 프로세서는, 리본들의 에이지 파라미터에 기초하여, 상기 SSD의 리본 소거 카운트 테이블을 업데이트하도록 추가로 구성되는 시스템.
  15. 제10항에 있어서, 상기 프로세서는 의사 난수 생성기를 사용하여 상기 워크로드 데이터를 생성하도록 추가로 구성되는 시스템.
  16. 제10항에 있어서, 상기 워크로드들의 전송 사이즈 파라미터는 4k 블록들 또는 64k 블록들 중 적어도 하나를 포함하는 시스템.
  17. 제10항에 있어서, 상기 워크로드들의 랜덤성 파라미터는 0부터 1까지 중의 값인 시스템.
  18. 제10항에 있어서, 상기 프로세서는,
    상기 워크로드 데이터의 랜덤 데이터 또는 상기 워크로드 데이터의 비랜덤 데이터 중 어느 것을 사용하여, 상기 복수의 PBA들 각각에 대한 논리적 블록 어드레스들을 결정하고,
    상기 리본의 상기 사전 선택된 PBA들 각각에 상기 논리적 블록 어드레스들 중 하나의 논리적 블록 어드레스를 기입하도록
    추가로 구성되는 시스템.
KR1020170075965A 2016-07-21 2017-06-15 다양한 워크로드들에 대한 솔리드 스테이트 드라이브들의 내부 사전 컨디셔닝 KR101903577B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/216,541 US9965198B2 (en) 2016-07-21 2016-07-21 Internally preconditioning solid state drives for various workloads
US15/216,541 2016-07-21

Publications (2)

Publication Number Publication Date
KR20180010975A true KR20180010975A (ko) 2018-01-31
KR101903577B1 KR101903577B1 (ko) 2018-10-04

Family

ID=60890398

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170075965A KR101903577B1 (ko) 2016-07-21 2017-06-15 다양한 워크로드들에 대한 솔리드 스테이트 드라이브들의 내부 사전 컨디셔닝

Country Status (4)

Country Link
US (1) US9965198B2 (ko)
KR (1) KR101903577B1 (ko)
CN (1) CN107644667B (ko)
DE (1) DE102017112751B4 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10298834B2 (en) 2006-12-01 2019-05-21 Google Llc Video refocusing
US10546424B2 (en) 2015-04-15 2020-01-28 Google Llc Layered content delivery for virtual and augmented reality experiences
US10444931B2 (en) 2017-05-09 2019-10-15 Google Llc Vantage generation and interactive playback
US10469873B2 (en) 2015-04-15 2019-11-05 Google Llc Encoding and decoding virtual reality video
US10341632B2 (en) 2015-04-15 2019-07-02 Google Llc. Spatial random access enabled video system with a three-dimensional viewing volume
US10567464B2 (en) 2015-04-15 2020-02-18 Google Llc Video compression with adaptive view-dependent lighting removal
US10275898B1 (en) 2015-04-15 2019-04-30 Google Llc Wedge-based light-field video capture
US10540818B2 (en) 2015-04-15 2020-01-21 Google Llc Stereo image generation and interactive playback
US10419737B2 (en) 2015-04-15 2019-09-17 Google Llc Data structures and delivery methods for expediting virtual reality playback
US10412373B2 (en) 2015-04-15 2019-09-10 Google Llc Image capture for virtual reality displays
US10275174B2 (en) * 2016-08-23 2019-04-30 Samsung Electronics Co., Ltd. System and method for pre-conditioning a storage device
US10679361B2 (en) 2016-12-05 2020-06-09 Google Llc Multi-view rotoscope contour propagation
US10594945B2 (en) 2017-04-03 2020-03-17 Google Llc Generating dolly zoom effect using light field image data
US10474227B2 (en) 2017-05-09 2019-11-12 Google Llc Generation of virtual reality with 6 degrees of freedom from limited viewer data
US10354399B2 (en) 2017-05-25 2019-07-16 Google Llc Multi-view back-projection to a light-field
US10965862B2 (en) 2018-01-18 2021-03-30 Google Llc Multi-camera navigation interface
US11967391B2 (en) 2021-08-06 2024-04-23 SK Hynix Inc. System and method for testing multicore SSD firmware based on preconditions generation

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5347489A (en) 1992-04-21 1994-09-13 Intel Corporation Method and circuitry for preconditioning shorted rows in a nonvolatile semiconductor memory incorporating row redundancy
US5537357A (en) 1994-06-27 1996-07-16 Intel Corporation Method for preconditioning a nonvolatile memory array
JPH11213691A (ja) 1998-01-20 1999-08-06 Toshiba Corp 不揮発性半導体記憶装置
US6233178B1 (en) 1999-10-14 2001-05-15 Conexant Systems, Inc. Method and apparatus for pre-conditioning flash memory devices
US7580905B2 (en) * 2003-12-15 2009-08-25 Intel Corporation Adaptive configuration of platform
US7433228B2 (en) 2005-09-20 2008-10-07 Spansion Llc Multi-bit flash memory device having improved program rate
CN101872320A (zh) * 2010-04-16 2010-10-27 浪潮电子信息产业股份有限公司 一种关于ssd硬盘可靠性及性能的测试及统计方法
US8239618B2 (en) 2010-05-27 2012-08-07 Dell Products L.P. System and method for emulating preconditioning of solid-state device
US8422303B2 (en) * 2010-12-22 2013-04-16 HGST Netherlands B.V. Early degradation detection in flash memory using test cells
CN102411993B (zh) * 2011-11-24 2014-12-10 曙光信息产业股份有限公司 固态硬盘的测试方法和装置
US9524800B2 (en) 2012-09-26 2016-12-20 International Business Machines Corporation Performance evaluation of solid state memory device
CN103049397B (zh) * 2012-12-20 2015-09-16 中国科学院上海微系统与信息技术研究所 一种基于相变存储器的固态硬盘内部缓存管理方法及系统
US20140214793A1 (en) * 2013-01-29 2014-07-31 Nec Laboratories America, Inc. Cost-Effective Data Layout Optimization Over Heterogeneous Storage Classes

Also Published As

Publication number Publication date
KR101903577B1 (ko) 2018-10-04
DE102017112751B4 (de) 2022-06-15
US20180024753A1 (en) 2018-01-25
DE102017112751A1 (de) 2018-01-25
US9965198B2 (en) 2018-05-08
CN107644667A (zh) 2018-01-30
CN107644667B (zh) 2021-01-26

Similar Documents

Publication Publication Date Title
KR101903577B1 (ko) 다양한 워크로드들에 대한 솔리드 스테이트 드라이브들의 내부 사전 컨디셔닝
US10657047B2 (en) Data storage device and method of performing partial garbage collection
KR101818578B1 (ko) 비휘발성 메모리를 갖는 시스템을 위한 동적 및 정적 데이터의 처리
US9417803B2 (en) Adaptive mapping of logical addresses to memory devices in solid state drives
US9229876B2 (en) Method and system for dynamic compression of address tables in a memory
US10739996B1 (en) Enhanced garbage collection
US9152559B2 (en) Metadata storage associated with wear-level operation requests
US9213645B2 (en) Command aware partial page programming
US8316176B1 (en) Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US9753847B2 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US9747202B1 (en) Storage module and method for identifying hot and cold data
KR101394845B1 (ko) 비휘발성 메모리 상태 정보를 획득하여 이용하기 위한 시스템들 및 방법들
US10496334B2 (en) Solid state drive using two-level indirection architecture
US20190294345A1 (en) Data-Retention Controller Using Mapping Tables in a Green Solid-State-Drive (GNSD) for Enhanced Flash Endurance
JP7010667B2 (ja) メモリシステムおよび制御方法
JP2015530685A (ja) ソリッドステートドライブにおける物理論理マッピングのための方法、装置及びシステム
US9852066B2 (en) Systems and methods of address-aware garbage collection
KR20140057082A (ko) 비휘발성 메모리 시스템 및 이와 통신하는 호스트
KR20180022538A (ko) 저장 장치를 사전 조정하는 방법 및 시스템
US12026101B2 (en) Methods of operating host device and storage device, and electronic device
Fazackerley et al. A flash resident file system for embedded sensor networks
US20180217753A1 (en) Memory system and control method
Peleato et al. Analysis of trade-offs in V2P-table design for NAND flash

Legal Events

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