KR20190071582A - 스토리지 디바이스들에서 시스템 타임 스탬프를 사용하는 백그라운드 데이터 리프레시 - Google Patents

스토리지 디바이스들에서 시스템 타임 스탬프를 사용하는 백그라운드 데이터 리프레시 Download PDF

Info

Publication number
KR20190071582A
KR20190071582A KR1020180138110A KR20180138110A KR20190071582A KR 20190071582 A KR20190071582 A KR 20190071582A KR 1020180138110 A KR1020180138110 A KR 1020180138110A KR 20180138110 A KR20180138110 A KR 20180138110A KR 20190071582 A KR20190071582 A KR 20190071582A
Authority
KR
South Korea
Prior art keywords
blocks
ssd
data
timestamp
storage device
Prior art date
Application number
KR1020180138110A
Other languages
English (en)
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 KR20190071582A publication Critical patent/KR20190071582A/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/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0625Power saving in 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/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/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
    • 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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

호스트로부터의 타임 스탬프를 사용하여 스토리지 디바이스들에 대한 백그라운드 리프레시를 수행하기 위한 기술들이 설명된다. 일 예에서, 방법은 호스트로부터 타임 스탬프를 수신하는 단계, 타임 스탬프를 스토리지 디바이스에 저장하는 단계, 및 스토리지 디바이스의 하나 이상의 블록에 저장된 데이터에 대한 보유 시간을 데이터가 하나 이상의 블록에 기입된 때를 표시하는 제2 타임 스탬프에 대한 타임 스탬프에 기초하여 결정하는 단계를 포함한다. 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 스토리지 디바이스는 데이터를 스토리지 디바이스의 하나 이상의 다른 블록으로 이동시키고, 이는 리프레시 기입들을 호스트로부터의 액티비티와 인터리빙하는 것을 포함할 수 있다.

Description

스토리지 디바이스들에서 시스템 타임 스탬프를 사용하는 백그라운드 데이터 리프레시{BACKGROUND DATA REFRESH USING A SYSTEM TIMESTAMP IN STORAGE DEVICES}
본 설명들은 일반적으로 솔리드 스테이트 드라이브들과 같은 스토리지 디바이스들에 관련되고, 보다 자세한 설명들은 스토리지 디바이스들에 대해 시스템 타임 스탬프를 사용하는 백그라운드 데이터 리프레시를 위한 기술들에 관련된다.
모바일, 클라이언트, 및 기업 세그먼트들에 걸쳐 시스템들이 데이터 스토리지에 대해 SSD들(solid state drives)을 사용하는 추세가 존재한다. NAND SSD들과 같은, 솔리드 스테이트 드라이브들은 비-휘발성 스토리지를 포함한다. 비-휘발성 스토리지는 디바이스에 전력이 중단되더라도 상태가 확정적인 스토리지를 지칭한다. 그러나, 비-휘발성 스토리지 디바이스들은 유한한 데이터 보유 능력들을 갖고, 비-휘발성 스토리지 디바이스에 저장되는 데이터가 리프레시될 것을 요구할 수 있다. 데이터를 리프레시하는 것의 실패는 비-휘발성 스토리지 상에 저장되는 데이터의 손실을 초래할 수 있다.
다음의 설명은 본 발명의 실시예들의 구현들의 예로서 주어지는 예시들을 갖는 도면들의 논의를 포함한다. 이러한 도면들은, 제한으로서가 아니라, 예로서 이해되어야 한다. 본 명세서에서 사용되는 바와 같이, 하나 이상의 "실시예들(embodiments)" 또는 "예들(examples)"에 대한 참조들은 본 발명의 적어도 하나의 구현에 포함되는 특정 특징, 구조, 및/또는 특성을 설명하는 것으로서 이해되어야 한다. 따라서, 본 명세서에서 나타나는 "일 실시예에서(in one embodiment)" 또는 "일 예에서(in one example)"와 같은 문구들은 본 발명의 다양한 실시예들 및 구현들을 설명하고, 반드시 모두가 동일한 실시예를 지칭하는 것은 아니다. 그러나, 이들이 또한 반드시 상호 배타적인 것은 아니다.
도 1은, 일 예에 따라, 백그라운드 데이터 리프레시가 구현될 수 있는 SSD가 있는 시스템의 블록도를 도시한다.
도 2는 호스트로부터 SSD로의 시스템 클록 정보의 통신의 예를 도시하는 블록도이다.
도 3a는 SSD에 대한 슈퍼 블록의 예를 도시한다.
도 3b는 정확한 데이터 리프레시를 가능하게 하도록 SSD가 저장할 수 있는 정보의 예를 도시하는 테이블이다.
도 4a는 Identify Controller 데이터 구조의 예를 도시하고, 이는 주어진 스토리지 디바이스에 의해 어떤 특징들이 지원되는지 식별하는데 사용될 수 있고, 스토리지 디바이스가 시스템 클록 정보를 수락할 수 있는지를 포함한다.
도 4b는 시스템 클록 정보가 Set Feature 커맨드를 통해 호스트로부터 스토리지 디바이스로 어떻게 전송될 수 있는지의 예를 도시하는 테이블이다.
도 5는 시스템 타임 스탬프를 사용하여 백그라운드 리프레시를 수행하기 위한 방법의 예를 도시하는 흐름도이다.
도 6은 시스템 타임 스탬프를 사용하여 백그라운드 리프레시를 수행하기 위해 스토리지 디바이스에 의해 수행되는 방법의 예를 도시하는 흐름도이다.
도 7은 백그라운드 리프레시를 가능하게 하도록 시스템 타임 스탬프를 제공하기 위해 호스트에 의해 수행되는 방법의 예를 도시하는 흐름도이다.
도 8은 백그라운드 리프레시 레이트를 설정하기 위한 의사 코드의 예이다.
도 9는, 일 예에 따라, 백그라운드 데이터 리프레시가 구현될 수 있는 SSD가 있는 컴퓨팅 디바이스의 예의 블록도이다.
도 10은, 일 예에 따라, 백그라운드 데이터 리프레시가 구현될 수 있는 SSD가 있는 모바일 디바이스의 예의 블록도이다.
본 명세서에 제시되는 창의적 개념들의 다른 잠재적인 실시예들 또는 구현들을 논의할 뿐만 아니라, 이하 설명되는 실시예들의 일부 또는 전부를 도시할 수 있는, 도면들의 설명을 포함하여, 특정 상세 사항들 및 구현들의 설명이 뒤따른다.
본 명세서에서는, SSD들(solid state drives)과 같은, 비-휘발성 스토리지 디바이스들에 대한 백그라운드 데이터 리프레시를 위한 기술들이 설명된다. 백그라운드 데이터 리프레시는 스토리지 디바이스에 저장되는 "콜드 데이터(cold data)"를 리프레시하여 보유 관련 에러들 또는 실패들을 회피하는 것을 포함한다. 콜드 데이터는 스토리지 디바이스 상에 저장되고 빈번하게 액세스되지 않는 데이터이다. 콜드 데이터는 스토리지 디바이스의 최대 보유 능력에 근접하거나 또는 이를 초과하는 기간 동안 액세스되지 않고 스토리지 디바이스 상에 저장될 수 있다. 데이터를 리프레시하는 것은 데이터를 다른 위치에 기입하는 것(또는 데이터를 동일한 위치에 재-기입하는 것)을 포함하고, 이는 데이터 손실을 방지할 수 있다.
서버들에서 사용되는 SSD들과 같은, 기업 SSD들(solid state drives)은 내부 시간 클록에 의존하는 리프레시 기술들을 구현한다. 기업 SSD들이 항상 파워 온되고, 데이터가 SSD 블록들에 기입된 시간 클록을 유지하는 것은 일반적이다. 그러나, 모바일 또는 다른 소비자 디바이스들에서 사용되는 SSD들은 지속적으로 파워 온되는 것은 아니고, 빈번하게 저 전력 상태들에 진입하여 전력 소비를 감소시키고 배터리 수명을 보존한다. 파워 다운될 때 또는 최저 전력 모드들에서, 시간 클록을 유지하기 위한 컴포넌트들을 포함하는, 스토리지 디바이스의 컴포넌트들의 대부분이 파워 오프된다. 따라서, SSD들에 저장되는 데이터를 리프레시하기 위한 기존의 기술들은 모바일 및 다른 소비자 SSD들에 대해 비효율적이다.
내부 클록에 의존하는 대신 시스템 클록을 사용하는 백그라운드 데이터 리프레시를 위한 기술은 스토리지가 파워 오프되었거나 또는 저 전력 상태에 있더라도 스토리지 디바이스들 상에 저장되는 콜드 데이터의 리프레시를 가능하게 할 수 있다. 일 예에서, 스토리지 디바이스는 데이터가 슈퍼 블록에 기입된 때를 표시하는 데이터를 저장하고 있는 각각의 슈퍼 블록(또는 각각의 블록, 페이지, 또는 다른 세분성)에 대한 타임 스탬프 정보를 유지한다. 스토리지 디바이스가 파워 오프되거나 또는 저 전력 상태로 들어갈 때, 스토리지 디바이스는 타임 스탬프 정보를 NVM(nonvolatile media)에 저장한다. 스토리지 디바이스가 파워 업하거나 저 전력 상태를 벗어난 이후에, 스토리지 디바이스는 비-휘발성 스토리지로부터 타임 스탬프 정보를 로딩하고, 현재 시간을 표시하는 호스트로부터 타임 스탬프를 또한 수신한다. 기존의 기술들과 대조적으로, 스토리지 디바이스는 호스트로부터 수신되는 현재 타임 스탬프를 사용하여, 디바이스가 파워 오프되었거나 또는 기간 동안 저 전력 상태에 있었더라도, 데이터를 저장하는 슈퍼 블록들 각각에서 데이터에 대한 보유 시간을 정확하게 결정할 수 있다. 보유 시간이 임계값을 초과하면, 스토리지 디바이스는 데이터를 리프레시할 수 있다. 일 예에서, 스토리지 디바이스는 큐에 이러한 슈퍼 블록들을 넣고 큐로부터의 기입들을 호스트 트래픽과 인터리빙함으로써 데이터를 리프레시한다. 따라서, 호스트로부터의 시스템 클록을 사용하는 리프레시 기술들은 모바일 및 다른 소비자 디바이스들에서의 보유 시간들의 정확한 결정을 가능하게 하고 데이터의 손실을 감소시킬 수 있다.
도 1은, 일 예에 따라, 백그라운드 데이터 리프레시가 구현될 수 있는 SSD가 있는 시스템의 블록도를 도시한다. 시스템(100)은 호스트(110)와 연결되는 SSD(solid state drive)(102)를 포함한다.
호스트(110)는 SSD(102)에 접속하는 호스트 하드웨어 플랫폼을 나타낸다. 호스트(110)는 CPU(central processing unit)(120) 또는 다른 프로세서를 호스트 프로세서로서 포함한다. CPU(120)는, SSD(102)에 저장되는 데이터를 액세스하여, 그 데이터를 판독하거나 그 데이터를 스토리지(122)에 기입하라는, 요청들을 생성하는 임의의 호스트 프로세서를 나타낸다. 이러한 프로세서는 단일 또는 멀티코어 프로세서, 컴퓨팅 디바이스를 위한 주 프로세서, 그래픽 프로세서, 주변기기 프로세서, 또는 부 또는 보조 프로세서, 또는 이들의 조합을 포함할 수 있다. 호스트(110)는 칩셋(114)을 포함하고, 이는 CPU(120)와, SSD(102)를 포함하는, 시스템(100)의 다른 컴포넌트들 사이의 데이터의 흐름을 제어 또는 관리할 수 있는 하드웨어 컴포넌트들을 나타낸다. 예를 들어, 칩셋(114)은 SSD(102)에 대한 액세스를 가능하게 하는 인터커넥트 회로들 및 로직을 포함할 수 있다. 일 예에서, 칩셋(114)은 스토리지 제어기를 포함하고, 이는 SSD(102) 내의 제어기(130)와는 별도인 호스트 측 제어기이다. 도 1은, SSD에 대한 액세스를 제어하는 로직을 포함하는, 호스트에서의 칩셋을 도시하지만, 다른 예들에서, 호스트(110)는 칩셋을 포함하지 않을 수 있거나, 또는 칩셋을 포함한다면, 스토리지 제어기가 칩셋과 독립적일 수 있다. 일 예에서, 칩셋, 스토리지 제어기, 또는 양자 모두는 CPU(120)와 통합된다. 호스트(110)는 시스템 클록을 생성하는 클록 생성기(132)를 또한 포함한다. 일 예에서, 클록 생성기(132)는, 플랫폼(100)의 동작을 동기화하는데 사용하기 위한 타이밍 신호를 생성하는, 공진 회로 및 증폭기와 같은, 회로를 포함한다.
호스트는, 운영 체제(112), 파일 시스템(124), BIOS(basic input/output system)(118), 드라이버(116), 및 다른 펌웨어 및 소프트웨어와 같은, 하드웨어 상에서 실행되는 펌웨어 및 소프트웨어를 또한 포함한다. 시스템이 파워 온될 때, BIOS(118)는 하드웨어를 초기화하고 운영 체제(112)를 로딩(loading)하는 것을 통상적으로 담당한다. 운영 체제(112)는 시스템의 리소스들의 공유 뿐만 아니라 시스템(100) 상의 액티비티들의 관리, 조정, 및 스케줄링을 통상적으로 담당한다. 파일 시스템(124)은 소프트웨어, 펌웨어, 또는 양자 모두와 상호 작용하여 SSD(102)를 액세스한다. 예를 들어, 호스트(110)는 운영 체제(112) 및 파일 시스템(124)이 SSD를 액세스할 수 있는 SSD 드라이버를 포함할 수 있다. SSD 드라이버의 일 예는 Intel® RST(Rapid Storage Technology) 드라이버이다. 시스템(100)이 호스트 운영 체제 및 데이터를 저장하는 SSD가 있는 컴퓨터 시스템으로서 도시되지만, 시스템(100)은 SPI(serial peripheral interface) 스토리지 또는 SPI 버스에 접속되는 스토리지, LSM 기반(log-structured-merge 기반) 키-값 솔루션들, 3차원 교차점 메모리 기반 솔루션들, 또는 다른 스토리지 시스템들을 대안적으로 포함할 수 있다.
SSD(102)는 데이터를 저장하기 위한 비-휘발성 스토리지(122)(NVM(nonvolatile media)이라고 또한 지칭될 수 있음)를 포함하는 솔리드 스테이트 드라이브를 나타낸다. SSD(102)는 PCIe(PCI Express), 직렬 ATA(advanced technology attachment), 병렬 ATA, 및/또는 USB(universal serial bus) 인터페이스를 사용하여 프로세서에 접속되는 플래시 기반 드라이브일 수 있다. 스토리지(122)는 NAND, NOR 플래시, PCM(phase change memory), PCMS(phase change memory with switch), 저항성 메모리, 또는 다른 비-휘발성 스토리지 매체 중 하나 이상을 포함할 수 있다. 데이터는 SLC(single level cell), TLC(triple level cell), QLC(Quad level cell), 및/또는 MLC(multi-level cell) 포맷으로 저장될 수 있다. TLC, QLC, 및/또는 MLC 셀들 또는 블록들은 사용자 데이터를 저장하는데 통상적으로 사용된다. 일반적으로 스토리지 밀도에서의 감소의 대가로 더 빠른 액세스 속도를 갖는, SLC 셀들 또는 블록들은 통상적으로 사용자 데이터를 저장하지 않고, 통상적으로 호스트에 의해 액세스 가능하지 않다. SLC 셀들 또는 블록들은 SSD에 의해 SSD의 동작에 관련되는 "시스템 데이터(system data)"를 저장하는데 사용될 수 있다.
비-휘발성 스토리지(122) 이외에, SSD(102)는 DRAM(108)(또는 다른 휘발성 메모리)을 또한 포함할 수 있다. DRAM(108)은 솔리드 스테이트 드라이브(102)가 파워 온(예를 들어, 동작 준비)되는 동안 데이터를 저장할 수 있는 휘발성 메모리를 포함한다. DRAM(108)은, 예를 들어, LPDDR3(low power dual data rate version 3, original release by JEDEC(Joint Electronic Device Engineering Council) JESD209-3B, August 2013 by JEDEC), LPDDR4(LOW POWER DOUBLE DATA RATE(LPDDR) version 4, JESD209-4, originally published by JEDEC in August 2014), 또는 다른 타입들의 DRAM들을 포함할 수 있다. DRAM은, DDR Double Data Rate (DDR) SDRAM에 대한 JESD79F, DDR2 SDRAM에 대한 JESD79-2F, DDR3 SDRAM에 대한 JESD79-3F, 또는 DDR4 SDRAM에 대한 JESD79-4A(이러한 표준들은 www.jedec.org에서 이용 가능함)와 같은, JEDEC(Joint Electron Device Engineering Council)에 의해 널리 알려진 표준을 준수할 수 있다. 다른 휘발성 메모리가 사용될 수 있다. 일부 SSD들은 DRAM을 포함하지 않는다(예를 들어,"DRAM이 없는(DRAM-less)" SSD들). 하나의 이러한 예에서, SSD는 SSD 제어기 메모리(도시되지 않음)를 포함할 수 있고, 이는 통상적으로 SRAM이다. DRAM(108)은, 논리-물리 인다이렉션 테이블(logical-to-physical indirection table) 또는 다른 이러한 정보와 같은, SSD(102)의 동작에 관련된 데이터를 저장하는데 사용될 수 있다.
SSD(102)는 스토리지(122)에 대한 액세스를 제어하는 제어기(130)를 또한 포함한다. 일 예에서, 제어기(130)는 스토리지(122)에 대한 인터페이스를 포함하고, 호스트(110)에 대한 인터페이스를 포함한다. 제어기(130)는 스토리지(122)로의 기입 및 스토리지(122)로부터의 판독을 제어하는 하드웨어 로직이다. 제어기(130)는 직렬 ATA 또는 통합된 드라이브 전자 제어기와 같은 인터페이스에 접속되는 ASIC(application specific integrated circuit controller) 디바이스일 수 있다. 다른 예에서, 제어기(130)는 프로세서 또는 다른 처리 회로(도시되지 않음)를 포함한다. 일 예에서, 제어기(130)는 단일 집적 회로 칩 상으로의 SoC(System-on-a-Chip)에 포함될 수 있다.
SSD(102)는 펌웨어(104)를 또한 포함한다. 펌웨어(104)는 번역, 가비지 컬렉션(garbage collection), 웨어 레벨링(wear levelling), 및 SSD(102)의 동작 및 최적화를 위한 다른 기능들과 같은 다양한 기능들을 수행할 수 있다. 일 예에서, 펌웨어(104)는 FTL(flash translation layer)을 포함할 수 있고, 이는 파일 시스템(124)으로부터 수신되는 요청들의 LBA들(logical block addresses)과 같은 논리 어드레스들에 대한 물리 어드레스 공간을 식별하는 인다이렉션(indirection)을 제공하는 로직을 포함한다.
도시되는 예에서, 펌웨어(104)는 백그라운드 리프레시를 수행하여 스토리지(122)에 저장된 데이터가 손실되지 않는 것 또는 손상되지 않는 것을 보장하는 리프레시 로직(140)을 포함한다. SSD들에서 데이터를 리프레시하기 위한 기존의 기술들은 어느 데이터를 리프레시할지 결정하는데 SSD "파워 온 시간들(power on hours)" 또는 (제어기(130)의 ASIC 시간 클록과 같은) SSD 내부의 클록에 통상적으로 의존한다. 이러한 기존의 기술들은, SSD가 빈번하게 파워 다운되거나 저 전력 상태로 들어가는, 모바일 디바이스들과 같은, 일부 시스템들에 대한 데이터를 리프레시할 때를 결정하는데 비효율적이다. 예를 들어, SSD "파워 온 시간들(power on hours)"은 SSD가 파워 온 상태에 얼마나 많은 시간 있는지 표시하는 SSD 상에(예를 들어, SSD 상의 레지스터에, 또는, 호스트에 의해 액세스 가능하지 않은 SSD의 블록들에서와 같이, SSD 상의 다른 위치에) 저장되는 카운트를 나타낸다. SSD "파워 온 시간들(power on hours)"에 의존하는 리프레시 기술들은, 데이터가 스토리지(122)에 보유되지만, 디바이스가 파워 오프되거나 또는 저 전력 상태에 있는 시간을 고려하지 않는다. 따라서, 이러한 기술들은 데이터의 불충분하게 빈번한 리프레시 및 데이터 손실을 초래할 수 있다. 유사하게, SSD(102) 상에 위치되는 시간 클록에 의존하는 리프레시 기술들 또한 충분히 정확하지 않을 수 있고, 그 이유는 SSD(102)가 파워 다운되거나 또는 최저 전력 상태들에 있을 때 클록을 포함하는 회로가 파워 다운되기 때문이다.
그러나, 기존의 기술들과 달리, SSD 펌웨어(104)는 데이터가 각각의 슈퍼 블록에 기입된 때에 관한 정보를 유지함으로써 그리고 호스트로부터의 현재 타임 스탬프에 기초하여 SSD 스토리지(122)에 저장되는 데이터의 보유 시간을 정확하게 추적할 수 있다. 보유 시간을 정확하게 추적함으로써, SSD 펌웨어(104)는 데이터 손실을 회피하기 위해 데이터가 리프레시될 필요가 있을 때를 보다 정확하게 결정할 수 있다. 예를 들어, 도 2는 호스트로부터 SSD로의 시스템 클록 정보의 통신의 예를 도시하는 블록도이다. 도 2는 SSD(204)와 연결되는 SSD 드라이버(202)를 도시한다. SSD 드라이버는 도 1에 도시되는 호스트(110)의 SSD 드라이버(128)와 동일하거나 또는 유사할 수 있고, SSD(204)는 도 1의 SSD(102)와 동일하거나 또는 유사할 수 있다. 블록들(206, 208, 및 210)은 호스트로부터 SSD로 타임 스탬프를 통신하는 방법에서의 동작들을 나타낸다. 도시되는 예에서, 동작들(206, 208, 및 210)은 파워 온 또는 저 전력 상태로부터의 벗어남 이후에 발생한다. 저 전력 상태는 "슬립 상태(sleep state)"일 수 있다. 일 예에서, 저 전력 상태는 SSD(204)의 컴포넌트들의 대부분(SSD 제어기, DRAM, NVM 및 보드 상의 다른 개별 컴포넌트들을 포함함)이 턴 오프되는 상태이다(예를 들어, NVMe(Non-volatile Memory Express) 프로토콜에서의 PS4 및 PCIe(PCI Express) 프로토콜에서의 L1 또는 L1.2). NVMe 프로토콜은 2017년 5월 1일에 공개된 NVMe Specification version 1.3 또는 NVMe Specification의 다른 버전에서 설명되는 프로토콜을 지칭할 수 있다. PCIe 프로토콜은 2010년 11월 10일에 공개된 PCI Express® Base Specification version 3.0 또는 PCI Express® Base Specification의 다른 버전에서 설명되는 프로토콜을 지칭할 수 있다.
SSD(204)가 파워 온된 이후 또는 SSD(204)가 저 전력 상태를 벗어난 이후, SSD(204)는, 블록(206)에서, SSD가 초기화되고 호스트 커맨드들을 수락할 준비가 되었다는 점을 SSD 드라이버(202)에 통지한다. 일 예에서는, (동작 208에서) 제1 I/O 커맨드시(예를 들어, 직후), SSD 드라이버(202)가, 동작 210에서, SSD(204)에 시스템 클록 정보를 (예를 들어, 타임 스탬프의 형태로) 전송한다. 다른 예에서는, SSD 드라이버(202)가 제1 I/O 커맨드 이전에 시스템 클록 정보를 SSD에 전송할 수 있다. 일 예에서, 시스템 클록 정보가 전송되는 커맨드는 디바이스(SSD) 준비를 위한 PCIe/NVMe 프로토콜 핸드셰이크의 완료시 스토리지 드라이버에 의해 트리거된다. 일단 SSD(204)가 호스트로부터 시스템 클록 정보를 수신하면, SSD는 호스트로부터의 시스템 클록 정보를 사용하여 보유 시간들을 정확하게 결정하고 임계값을 초과하는 것으로 인해 손실되거나 또는 손상될 위험이 있는 데이터를 리프레시할 수 있다. 예를 들어, SSD는 주어진 슈퍼 블록에 데이터가 기입된 때를 표시하는 타임 스탬프들을 저장할 수 있다. 호스트로부터 현재 타임 스탬프에 대해 주어진 슈퍼 블록에 데이터가 기입된 때를 표시하는 타임 스탬프들에 기초하여, SSD는 슈퍼 블록들에 대한 보유 시간들을 또한 결정하고 저장할 수 있다. 일 예에서, SSD는 (예를 들어, SSD의 DRAM이 파워 온되고 동작하는 상태에서) SSD가 동작하고 있는 동안 SSD의 휘발성 메모리에 타임 스탬프 정보 및 보유 시간들을 저장할 수 있다.
위에 간단하게 언급된 바와 같이, SSD는 (예를 들어, 기입된 각각의 슈퍼 블록에 대해) 슈퍼 블록 세분성에 관한 이러한 정보를 추적할 수 있다. 슈퍼 블록(밴드라고 또한 알려짐)은 모든 다이들에 걸치는 모든 평면들에 걸치는 블록이다. 도 3a는 쿼드 평면, 4 NAND 다이 SSD에 대한 슈퍼 블록의 예를 도시한다. 도 3a에 도시되는 예에서, SSD는 4개의 상이한 다이들(예를 들어, 다이들 0, 1, 2, 및 3)을 갖고, 각각의 다이는 4개의 평면들(예를 들어, 0, 1, 2 및 3)을 갖고, 각각의 평면은 블록들(예를 들어, 블록들 0 내지 n)을 갖는다. 따라서, 도시되는 예에서, 슈퍼 블록 0은 각각의 다이의 각각의 평면에서의 블록 0을 포함한다. 따라서, 일 예에서, SSD는 각각의 슈퍼 블록(예를 들어, 슈퍼 블록들 0 내지 n)에 대한 타임 스탬프들 및 보유 시간을 추적할 수 있다. 도 3b는 SSD가 정확한 데이터 리프레시를 가능하게 하도록 저장할 수 있는 정보를 도시하는 테이블이다. 도 3b의 테이블에 도시되는 정보(예를 들어, 타임 스탬프들 및 보유 시간들)는 SSD가 동작하고 있는 동안 휘발성 메모리에 그리고 SSD가 파워 오프될 때 또는 저 전력 모드(예를 들어, DRAM이 동작하지 않는 저 전력 모드)에 있을 때 비-휘발성 스토리지에 저장될 수 있다. 예를 들어, 도 1을 참조하면, SSD(102)의 DRAM(108)은 SSD가 동작하고 있을 때 타임 스탬프 및 보유 시간 정보를 저장할 수 있다. DRAM이 없는 SSD에서, 타임 스탬프 및 보유 시간 정보는, SSD 제어기 메모리와 같은, 다른 위치에 저장될 수 있다. 다음으로, 저 전력 모드에 진입하거나 또는 파워 오프되기 이전에, SSD(102)는 타임 스탬프 및 보유 시간 정보를 SSD 스토리지(122)에 저장할 수 있다. 하나의 이러한 예에서, SSD(102)는 타임 스탬프 및 보유 시간 정보를 SSD 스토리지(122)의 SLC 블록들(예를 들어, 통상적으로는 호스트에 의해 직접 액세스 가능하지 않은 예약된 또는 "시스템(system)" SLC 블록들)에 저장한다. 다시 도 3b를 참조하면, 타임 스탬프 및 보유 시간이 초 단위이지만, 시간의 다른 세분성들(예를 들어, 분들, 시간들, 날짜들, 또는 다른 시간의 단위들)이 사용될 수 있다는 점에 주목한다. 유사하게, 도 3b에서의 테이블이 각각의 슈퍼 블록에 대한 타임 스탬프들이 저장되는 예를 도시하더라도, 다른 세분성들이 사용될 수 있다. 예를 들어, SSD는 각각의 블록에 대해, 또는 기입된 블록들 또는 슈퍼 블록들에 대해서만, 또는 다른 세분성들에 대해 타임 스탬프 정보를 저장할 수 있다.
도시되는 예에서, 테이블의 각각의 엔트리는 슈퍼 블록이 기입된 때를 표시하는 기입 타임 스탬프를 포함한다. SSD는 호스트 상의 시간 클록에 기초하여 현재 타임 스탬프를 또한 저장한다. 도 2를 참조하여 설명되는 예에서, 호스트는 (예를 들어, 파워 업 또는 저 전력 모드로부터의 벗어남 이후에) SSD가 초기화되고 커맨드들을 수락할 준비가 되었다는 통지를 SSD로부터 수신하는 것에 응답하여 SSD에 현재 타임 스탬프를 전송한다. 도 3b의 테이블이 (각각의 슈퍼 블록에 대해) 현재 타임 스탬프를 다수 회 도시하더라도, SSD는, 각각의 슈퍼 블록에 대해서 보다는, 현재 타임 스탬프를 한 번만 저장할 수 있다는 점에 주목한다. 일 예에서, SSD는 각각의 슈퍼 블록에 대해 데이터 보유 시간을 또한 저장한다. 일 예에서, 데이터 보유 시간은 현재 타임 스탬프로부터 기입 타임 스탬프를 감산함으로써 계산된다.
다시 현재 타임 스탬프를 참조하면, 일 예에서, 호스트로부터 SSD로의 현재 타임 스탬프의 통신을 위해 프로토콜이 수립된다. SSD 펌웨어 및 SSD 드라이버 양자 모두가 준수하는 프로토콜을 갖는 것에 의해, SSD 드라이버는 SSD가 예상하는 것과 일치하는 타임 스탬프를 제공할 수 있고, SSD는 호스트로부터 수신되는 타임 스탬프를 정확하게 해석할 수 있다. 도 4a 및 도 4b는 호스트로부터 SSD로 타임 스탬프를 통신하기 위한 프로토콜의 일부 특징들의 예를 도시한다.
도 4a는 Identify Controller 데이터 구조의 예를 도시하고, 이는 주어진 스토리지 디바이스에 의해 어떤 특징들이 지원되는지 식별하는데 사용될 수 있고, 스토리지 디바이스가 시스템 클록 정보를 수락할 수 있는지를 포함한다. 데이터 구조(400A)는 NVMe(Non-volatile Memory Express)와 같은 프로토콜 또는 다른 스토리지 프로토콜에서 사용될 수 있다. NVMe는 Identify 커맨드를 정의하고, 이는 어떤 능력들 및 설정들이 스토리지 제어기(예를 들어, 도 1의 SSD 제어기(130))에 적용되는지를 식별하기 위해 호스트가 스토리지 디바이스에 전송하는 것이다. Identify 커맨드를 수신하는 것에 응답하여, 스토리지 디바이스는 하나 이상의 특징에 관한 정보를 포함하는 데이터 구조(예를 들어, Identify Controller 데이터 구조(400A))를 리턴할 것이다. 데이터 구조(400A)에서, 바이트들의 범위는 벤더 특정 특징들을 위해 예약된다. 도시되는 예에서는, 바이트들 4095:3072이 벤더 특정 특징들을 위해 예약되고, 스토리지 디바이스가 시스템 클록 정보를 수락하는 특징을 지원하는지 식별하기 위한 하나의 바이트를 포함한다. 바이트 3072의 비트 0을 논리 1로 설정함으로써, 스토리지 디바이스는 이러한 특징이 지원된다는 점을 표시하고, 이러한 비트를 논리 0으로 설정함으로써, 스토리지 디바이스는 이러한 특징이 지원되지 않는다는 점을 표시한다. 반대의 관례가 또한 사용될 수 있다(예를 들어, 논리 0은 특징이 지원된다는 점을 표시할 수 있다). 이러한 바이트가 ('O/M' 컬럼에서 'M'에 의해 표시되는 바와 같이) 필수인 것으로 도시되더라도, 이러한 바이트는 다른 예들에서 선택적일 수 있다.
스토리지 디바이스가 (예를 들어, 데이터 구조(400A)에서 바이트 3072에 의해 표시되는 바와 같이) 시스템 클록 정보를 수락하는 특징을 지원하면, 호스트는, 파워 업 이후 또는 저 전력 상태로부터의 벗어남 이후와 같이, 일부 미리 결정된 시간들에 시스템 클록 정보를 스토리지 디바이스에 통신할 수 있다. 예를 들어, 호스트는 벤더 고유의 Set Feature 커맨드를 통해 시스템 클록 정보를 통신할 수 있다.
도 4b는 시스템 클록 정보가 Set Feature 커맨드를 통해 호스트로부터 스토리지 디바이스로 어떻게 전송될 수 있는지의 예를 도시하는 테이블이다. 예를 들어, 테이블 400B는 NVMe Set Features 커맨드에 대한 Feature Identifiers를 도시한다. 호스트가 Set Features 커맨드를 스토리지 디바이스에 전송하기 이전에, (예를 들어, SSD 드라이버(128)와 같은 스토리지 드라이버를 통해) 호스트는 Feature Identifier를 C0h로 설정하여 시스템 클록에 의해 표시되는 바와 같이 현재 시간을 반영한다. 현재 타임 스탬프는 미리 결정된 날짜 및 시간 이후에 경과되는 것과 같은 초들(또는 ms(milliseconds), 분들, 시간들, 또는 다른 시간의 세분성)의 수로서 정의될 수 있다. 포맷이 프로토콜에 의해 정의되고 호스트 및 스토리지 디바이스 양자 모두가 뒤따르는 한 다른 타임 스탬프 포맷들이 가능하다. 도시되는 예에서, 시스템 클록 정보 특징은 벤더 특정 특징들에 있다(예를 들어, 벤더 특정 특징 식별자들은 도시되는 예에서 바이트들 C0h 내지 FFh를 포함한다). 그러나, 다른 특징 식별자들 또는 다른 커맨드들이 사용될 수 있다. 호스트는 다음으로 특징 식별자들을 포함하는 커맨드를 스토리지 디바이스에 전송한다. 스토리지 디바이스는, 위에서 그리고 이하 보다 상세히 설명되는 바와 같이, 데이터 보유 시간의 결정을 위해 현재 타임 스탬프를 저장할 수 있다.
도 5 내지 도 7은 시스템 타임 스탬프를 사용하여 백그라운드 리프레시를 수행하기 위한 방법들의 예들을 도시하는 흐름도들이다. 도 5는 시스템 관점에서의 흐름도이고, 호스트와 스토리지 디바이스 양자 모두에 의해 수행되는 동작들을 포함한다. 도 6은 스토리지 디바이스 관점에서의 흐름도이다. 도 7은 호스트 관점에서의 흐름도이다. 위에 언급된 바와 같이, 비-휘발성 매체에서 데이터를 리프레시하기 위한 기존의 기술들은 빈번하게 파워 오프되거나 저 전력 상태에 들어가는 스토리지 디바이스들에 대해 비효율적일 수 있다. 도 5 내지 도 7의 방법들에서는, 데이터 보유 시간을 보다 정확하게 결정하기 위해 호스트로부터의 타임 스탬프가 사용되고, 따라서 향상된 데이터 리프레시를 가능하게 할 수 있다.
도 5를 참조하면, 방법 500은, 동작 502에서, SSD 파워 온하는 것으로 시작한다. 대안적으로, 방법 500은 SSD가 저 전력 상태를 벗어나는 것(예를 들어, 웨이크 업하는 것 또는 더 높은 전력 상태에 진입하는 것)으로 시작될 수 있다. SSD는 도 1의 SSD(102)와 동일하거나 또는 유사할 수 있다. SSD 펌웨어가 다음으로 동작 504에서 타임 스탬프 테이블을 비-휘발성 스토리지로부터 DRAM으로 로딩한다. 예를 들어, 도 1을 참조하면, SSD 펌웨어(104)는 타임 스탬프 테이블을 SSD 스토리지(122)로부터 DRAM(108)으로 로딩할 수 있다. SSD가 DRAM을 포함하지 않는 일 예에서, SSD 펌웨어는 타임 스탬프 테이블을 SSD 스토리지(122)로부터 SSD 제어기 메모리로 로딩할 수 있다. 타임 스탬프 테이블을 로딩하는 것은 SSD 스토리지(122)로부터 하나 이상의 슈퍼 블록(또는 다른 세분성)에 대한 기입 타임 스탬프들을 로딩하는 것을 포함할 수 있다. 호스트 측 상의 SSD 드라이버는 다음으로, 동작 506에서, 제1 호스트 I/O 커맨드 상에서 현재 타임 스탬프를 전송한다. 예를 들어, SSD 드라이버(128)는, 도 4b에 도시되는 바와 같은, 벤더 고유의 Set Features 커맨드를 통해 타임 스탬프를 전송할 수 있다. 하나의 이러한 예에서, SSD 드라이버는 제1 호스트 I/O 커맨드 직후에(예를 들어, 제1 기입, 판독, 또는 다른 I/O 커맨드 이후에) 벤더 고유의 Set Features 커맨드를 통해 타임 스탬프를 전송한다. 일 예에서, 호스트는 결정론적 거동을 가능하게 하도록 제1 I/O 커맨드 직후에 (예를 들어, 제1 I/O 커맨드와 벤더 고유의 Set Features 커맨드 사이의 개재 커맨드들 없이) 타임 스탬프 정보를 전송한다. 다른 예에서, SSD 드라이버는 제1 I/O 커맨드 이전에 타임 스탬프를 전송할 수 있거나, 또는 타임 스탬프가 제1 기입 커맨드 이후에 전송되면, 제1 I/O 커맨드와 벤더 고유의 Set Features 커맨드 사이에 하나 이상의 개재 커맨드가 존재할 수 있다. 벤더 고유의 Set Features 커맨드 이외의 다른 커맨드들이 사용될 수 있다.
SSD 펌웨어는 다음으로, 동작 508에서, 테이블에서 각각의 슈퍼 블록에 대한 보유 시간으로 타임 스탬프 테이블을 업데이트한다. 예를 들어, SSD 펌웨어(104)는 현재 타임 스탬프로부터 기입 타임 스탬프를 감산함으로써 각각의 슈퍼 블록에 대한 데이터 보유 시간을 계산할 수 있다. 일 예에서, SSD 펌웨어는 각각의 슈퍼 블록에 대해 계산된 데이터 보유 시간을 저장한다.
하나 이상의 슈퍼 블록에 대한 보유 시간을 결정한 이후에, SSD 펌웨어는, 동작 510에서, 보유 시간이 임계값을 초과하는지 알아보도록 체크할 수 있다. 임계값은 SSD의 특성들에 의존하는 미리 결정된 수일 수 있다. 임계값은 정적(예를 들어, 동일한 임계값이 SSD의 수명 전반적으로 사용됨) 또는 동적(예를 들어, 임계값은 시간에 걸쳐 SSD가 사용됨에 따라 업데이트될 수 있음)일 수 있다. 보유 시간이 임계값을 초과하면, 510 예 분기, SSD 펌웨어는, 동작 512에서, 슈퍼 블록들을 BDR(background data refresh) 큐로 이동시키고, 데이터가 이동되어야 한다는 것을 표시하도록 슈퍼 블록에 대한 플래그(예를 들어, BDR 플래그)를 설정한다. 큐는 펌웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 일 예에서, 슈퍼 블록을 BDR 큐로 이동시키는 것은 슈퍼 블록에 대한 BDR 플래그를 설정하는 것을 포함할 수 있다. 플래그는 하나의 비트 또는 다수의 비트들을 포함할 수 있고, 주어진 슈퍼 블록에서의 데이터가 이동되어야 한다는 것을 표시하도록 플래그를 설정하는 것은, 플래그를 논리 1 또는 논리 0으로, 또는 슈퍼 블록에서의 데이터가 이동되어야 한다는 것을 표시하는 다른 값으로 설정하는 것을 포함할 수 있다. 다른 예에서, 슈퍼 블록을 BDR 큐로 이동시키는 것은 슈퍼 블록을 식별하는 일부 정보를 큐 데이터 구조에 저장하는 것을 또한 또는 대안적으로 포함할 수 있다. BDR 플래그가 설정되면(예를 들어, 데이터가 이동되어야 한다는 것을 표시하는 값으로 설정되면), 514 예 분기, SSD 펌웨어는, 516에서, 호스트 액티비티를 BDR 기입들과 인터리빙하여 유효 데이터를 BDR 큐에서의 슈퍼 블록들로부터 새로운 슈퍼 블록들로 이동시킨다. 동작들 중 하나 이상은 가비지 컬렉션 루틴(garbage collection routine)에 의해 수행될 수 있고, 이는 통상적으로 SSD 펌웨어의 루틴(예를 들어, 도 1의 펌웨어(104)의 일부)이다. 예를 들어, BDR 기입들의 수행 및 BDR 기입들과의 호스트 액티비티의 인터리빙이 가비지 컬렉션 루틴에 의해 수행될 수 있다.
주어진 슈퍼 블록의 보유 시간이 임계값을 초과하지 않으면, 510 아니오 분기, 슈퍼 블록은 큐에 배치되지 않고, BDR 플래그는 설정되지 않고(514 아니오 분기), SSD는, 동작 518에서, 진행 중인 호스트 액티비티를 처리하는 것을 계속한다. 따라서, 일 예에서는, 모든 전력 사이클에서, SSD 펌웨어가 각각의 슈퍼 블록에 대한 데이터 보유 시간을 스캐닝한다(scan through). 보유 시간이 보유 시간 임계값을 초과하면, 슈퍼 블록들은 데이터를 이동시키기 위해 가비지 컬렉션 루틴에 의해 픽업되도록 BDR 큐에 놓이고, BDR 플래그가 펌웨어에 의해 설정된다. 펌웨어는 BDR 플래그를 체크하고, 설정되면, 펌웨어는 가비지 컬렉션 루틴을 트리거하고, BDR 큐에서의 블록들은 가비지 컬렉션을 위해 우선순위화될 수 있다. SSD가 저 전력 상태로 가고 있거나 또는 파워 오프될 것일 때, SSD 펌웨어는 타임 스탬프 정보를 SSD 스토리지(122)에 저장하여서, 이러한 정보는 SSD가 웨이크 업 또는 파워 업될 때 검색될 수 있다.
도 6 또한, 일 예에 따라, 호스트로부터의 타임 스탬프를 사용하여 백그라운드 리프레시를 수행하는 방법의 흐름도이다. 도 6의 방법 600은 스토리지 디바이스에 의해 수행된다(예를 들어, 도 1의 펌웨어(104)와 같은, SSD 펌웨어에 의해 수행된다). 방법 600은, 동작 602에서, 호스트(예를 들어, 도 1의 호스트(110))로부터 타임 스탬프를 수신하는 것으로 시작한다. 예를 들어, 펌웨어는, 호스트로부터의 타임 스탬프를 포함하는 벤더 고유의 Set Features 커맨드와 같은, 커맨드를 수신할 수 있다. SSD 펌웨어는 다음으로, 동작 604에서, 타임 스탬프를 스토리지 디바이스에 저장한다. 예를 들어, 펌웨어는 SSD의 DRAM(예를 들어, 도 1의 SSD(102)의 DRAM(108))에 타임 스탬프를 저장할 수 있다. 호스트로부터 타임 스탬프를 수신한 이후에, 펌웨어는, 동작 606에서, 기입 타임 스탬프에 대한 타임 스탬프에 기초하여 스토리지 디바이스의 하나 이상의 블록에 저장된 데이터에 대한 보유 시간을 결정한다. 기입 타임 스탬프는 데이터가 하나 이상의 블록(예를 들어, 블록들, 슈퍼 블록들, 또는 스토리지 공간의 다른 세분성)에 기입된 때를 표시한다. 펌웨어는 하나 이상의 블록의 보유 시간들을 DRAM에 또한 저장할 수 있다. 보유 시간이 임계값을 초과하면, 펌웨어는, 동작 608에서, 데이터를 스토리지 디바이스의 하나 이상의 다른 블록으로 이동시킨다. 예를 들어, 펌웨어(예를 들어, 도 1의 리프레시 로직(140))는 리프레시 기입들을 호스트 액티비티와 인터리빙하여 호스트 액티비티의 백그라운드에서 데이터를 리프레시할 수 있다.
도 7은, 일 예에 따라, 시스템 클록에 기초하여 현재 타임 스탬프를 스토리지 디바이스에 송신하는 방법의 흐름도이다. 도 7의 방법 700은 호스트(예를 들어, 도 1의 호스트(110)의 SSD 드라이버(128))에 의해 수행될 수 있다. 방법 700은, 동작 702에서, 스토리지 디바이스가 커맨드들을 수신할 준비가 된 점을 표시하는 통지를 호스트가 스토리지 디바이스(예를 들어, 도 1의 SSD(102))로부터 수신하는 것으로 시작한다. 호스트는 다음으로, 동작 704에서, 호스트의 시스템 클록에 기초하여 현재 타임 스탬프 정보를 벤더 고유의 Set Features 커맨드를 통해 스토리지 디바이스에 전송한다. 예를 들어, 호스트는 도 4b에 명시되는 바와 같이 커맨드를 통해 타임 스탬프를 전송할 수 있다. 그러나, 스토리지 디바이스에 타임 스탬프를 제공하는데 다른 커맨드들이 또한 사용될 수 있다. 스토리지 디바이스는 현재 타임 스탬프를 저장하고, 현재 타임 스탬프에 기초하여 스토리지 디바이스의 블록들에 저장된 데이터의 보유 시간을 결정할 수 있다.
따라서, 도 5 내지 도 7의 방법들은 현재 타임 스탬프를 호스트로부터 스토리지 디바이스로 송신하고, 현재 타임 스탬프를 사용하여 스토리지 디바이스 상에 저장되는 데이터의 보유 시간들을 결정하고, 보유 시간들에 기초하여 백그라운드 리프레시를 수행하기 위한 방법들을 도시한다. 위에 간단하게 언급된 바와 같이, 데이터를 리프레시하는 것은 리프레시 액티비티가 호스트 액티비티와 인터리빙될 수 있다는 의미에서 백그라운드에서 행해질 수 있다. 그러나, 호스트 액티비티 뿐만 아니라 리프레시로 인해 수행될 필요가 있는 기입들의 볼륨은 현저히 다를 수 있다. 따라서, 일 예에서, 스토리지 디바이스(예를 들어, SSD 펌웨어)는 리프레시 기입들 대 호스트 액티비티의 비율을 동적으로 결정할 수 있다. 예를 들어, 리프레시 기입들 및 호스트 액티비티를 인터리빙하기 위한 비율은, 큐에서의 블록들의 보유 시간들, 호스트로부터의 커맨드들의 수, 리프레시될 블록들의 수, 및 리프레시를 수행하기 위한 가용 공간(예를 들어, 비어 있는 블록들의 수) 중 하나 이상에 기초할 수 있다.
도 8은 백그라운드 리프레시 레이트를 설정하기 위한 의사 코드(800)의 예이다. 의사 코드(800)에서, 리프레시를 위한 백그라운드 기입들의 레이트는 다음의 변수들: 소스 블록으로부터 이동하는 유효 단위들의 백분율, 및 목적지에 대해 이용 가능한 비어 있는 블록들의 백분율에 기초하여 달라질 것이다. 소스 블록으로부터 이동할 유효 단위들의 백분율은: 블록에서의 전체 단위들로 나눈 블록에서의 유효 단위들(여기서 전체 단위들은 유효 및 무효 블록들 양자 모두를 포함함)로 주어진다. 비어 있는 블록들의 백분율은 총 할당된 비어 있는 블록들로 나눈 현재 비어 있는 블록들로 주어진다. (라인 802에서) 유효 단위들의 백분율이 25%보다 작으면 또는 비어 있는 블록들의 백분율이 75%보다 크면, 라인들 804 내지 810 에서, 이는 기입할 데이터가 덜 존재하거나 또는 기입에 이용 가능한 공간이 더 존재한다는 표시이므로, 호스트 액티비티 대 백그라운드 기입 액티비티 비율은 4:1과 같은 상대적으로 높은 비율로 설정될 수 있다. (라인 812에서) 유효 단위들의 %가 50%보다 작거나 비어 있는 블록들의 백분율이 50%보다 크면, 라인들 814 내지 818에서, 펌웨어는 호스트 액티비티 대 백그라운드 기입 액티비티의 비율을 2:1로 설정할 수 있다. 라인 820에서, 유효 단위들의 백분율이 75%보다 작거나 또는 비어 있는 블록들의 백분율이 25%보다 크면, 라인들 822 내지 826에서, 호스트 액티비티 대 백그라운드 기입 액티비티의 비율은 1:2로 설정될 수 있다. (라인 828에서) 그렇지 않으면, 라인들 830-834에서, 호스트 액티비티 대 백그라운드 기입 액티비티의 비율은 1:4로 설정될 수 있다. 이러한 비율들은 예들이고, 백그라운드 리프레시를 수행하여 성능 타겟들을 달성하고 데이터 손상을 방지하는데 다른 비율들이 사용될 수 있다. 예를 들어, 4:1보다 높은 비율(예를 들어, 8:1, 16:1, 32:1, 또는 더 높은 비율)이 사용될 수 있거나, 1:4보다 낮은 비율(예를 들어, 1:8, 1:16, 1:32, 또는 더 낮은 비율)이 사용될 수 있다.
도 9는 백그라운드 데이터 리프레시 기술들을 구현하는 비-휘발성 스토리지 디바이스를 포함하는 컴퓨팅 시스템의 예의 블록도이다. 시스템(900)은 본 명세서에서의 임의의 예에 따른 컴퓨팅 디바이스를 나타내고, 랩톱 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 서버, 게임 또는 엔터테인먼트 제어 시스템, 스마트폰, 또는 다른 전자 디바이스일 수 있다.
시스템(900)은 프로세서(910)를 포함하고, 이는 시스템(900)에 대한 명령어들의 처리, 동작 관리, 및 실행을 제공한다. 프로세서(910)는 임의의 타입의 마이크로프로세서, CPU(central processing unit), GPU(graphics processing unit), 처리 코어, 또는 시스템(900)에 대한 처리를 제공하는 다른 처리 하드웨어, 또는 프로세서들의 조합을 포함할 수 있다. 프로세서(910)는 시스템(900)의 전체 동작을 제어하고, 하나 이상의 프로그램 가능 범용 또는 특수 목적 마이크로프로세서, DSP들(digital signal processors), 프로그램 가능 제어기들, ASIC들(application specific integrated circuits), PLD들(programmable logic devices) 등, 또는 이러한 디바이스들의 조합일 수 있거나 이들을 포함할 수 있다.
일 예에서, 시스템(900)은 프로세서(910)에 연결되는 인터페이스(912)를 포함하고, 이는 메모리 서브시스템(920) 또는 그래픽 인터페이스 컴포넌트들(940)과 같은, 대역폭이 더 높은 접속들을 필요로 하는 시스템 컴포넌트들에 대한 속도가 더 높은 인터페이스 또는 스루풋이 높은 인터페이스를 나타낼 수 있다. 인터페이스(912)는 인터페이스 회로를 나타내고, 이는 독립형 컴포넌트일 수 있거나 프로세서 다이 상에 통합될 수 있다. 인터페이스(912)는 프로세서 다이 상에 회로로서 통합되거나 또는 칩 상의 시스템 상의 컴포넌트로서 통합될 수 있다. 존재하는 경우, 그래픽 인터페이스(940)는 시스템(900)의 사용자에게 시각적 디스플레이를 제공하기 위한 그래픽 컴포넌트들에 인터페이스한다. 그래픽 인터페이스(940)는 독립형 컴포넌트일 수 있거나 또는 프로세서 다이 또는 칩 상의 시스템 상에 통합될 수 있다. 일 예에서, 그래픽 인터페이스(940)는 사용자에게 출력을 제공하는 HD(high definition) 디스플레이를 구동할 수 있다. 일 예에서, 디스플레이는 터치스크린 디스플레이를 포함할 수 있다.
메모리 서브시스템(920)은 시스템(900)의 메인 메모리를 나타내고, 프로세서(910)에 의해 실행될 코드에 대한 스토리지, 또는 루틴을 실행하는데 사용될 데이터 값들을 제공한다. 메모리 서브시스템(920)은 ROM(read-only memory), 플래시 메모리, DRAM과 같은 하나 이상의 다양한 RAM(random access memory), 또는 다른 메모리 디바이스들, 또는 이러한 디바이스들의 조합과 같은 하나 이상의 메모리 디바이스(930)를 포함할 수 있다. 메모리 서브시스템(930)은, 다른 것들 중에서, 시스템(900)에서의 명령어들의 실행을 위한 소프트웨어 플랫폼을 제공하는 OS(운영 체제)(932)를 저장하고 호스팅한다. 추가적으로, 애플리케이션들(934)은 메모리(930)로부터의 OS(932)의 소프트웨어 플랫폼 상에서 실행될 수 있다. 애플리케이션들(934)은 하나 이상의 기능의 실행을 수행하는 자신의 동작 로직을 갖는 프로그램들을 나타낸다. 프로세스들(936)은 OS(932) 또는 하나 이상의 애플리케이션(934) 또는 조합에 보조 기능들을 제공하는 에이전트들 또는 루틴들을 나타낸다. 일 예에서, 메모리 서브시스템(920)은 메모리 제어기(922)를 포함하고, 이는 메모리(930)에 커맨드들을 생성하고 발행하는 메모리 제어기이다. 메모리 제어기(922)는 프로세서(910)의 물리적 부분 또는 인터페이스(912)의 물리적 부분일 수 있다는 점이 이해될 것이다. 예를 들어, 메모리 제어기(922)는, 프로세서 다이 또는 칩 상의 시스템 상에 통합되는 것과 같이, 프로세서(910)와 함께 회로 상에 통합되는, 통합 메모리 제어기일 수 있다.
구체적으로 도시되지는 않지만, 시스템(900)은, 메모리 버스, 그래픽 버스, 인터페이스 버스들 등과 같은, 디바이스들 사이의 하나 이상의 버스 또는 버스 시스템들을 포함할 수 있다는 점이 이해될 것이다. 버스들 또는 다른 신호 라인들은 컴포넌트들을 함께 통신 가능하게 또는 전기적으로 연결할 수 있거나, 또는 컴포넌트들을 통신 가능하고 전기적으로 연결할 수 있다. 버스들은 물리적 통신 라인들, 지점-대-지점 접속들(point-to-point connections), 브릿지들, 어댑터들, 제어기들, 또는 다른 회로 또는 이들의 조합을 포함할 수 있다. 버스는, 예를 들어 시스템 버스, PCI(Peripheral Component Interconnect) 버스, PCIe(PCI Express), HyperTransport 또는 ISA(industry standard architecture) 버스, SCSI(small computer system interface) 버스, USB(universal serial bus), 또는 IEEE(Institute of Electrical and Electronics Engineers) 표준 994 버스 중 하나 이상을 포함할 수 있다.
일 예에서, 시스템(900)은 인터페이스(914)를 포함하고, 이는 인터페이스(912)에 연결될 수 있다. 인터페이스(914)는 인터페이스(912)보다 저속인 인터페이스일 수 있다. 일 예에서, 인터페이스(914)는 인터페이스 회로를 나타내고, 이는 독립형 컴포넌트들 및 집적 회로를 포함할 수 있다. 일 예에서, 다수의 사용자 인터페이스 컴포넌트들 또는 주변기기 컴포넌트들, 또는 양자 모두가 인터페이스(914)에 연결된다. 네트워크 인터페이스(950)는 하나 이상의 네트워크를 통해 원격 디바이스들(예를 들어, 서버들, 다른 컴퓨팅 디바이스들)과 통신하는 능력을 시스템(900)에 제공한다. 네트워크 인터페이스(950)는 Ethernet 어댑터, 무선 상호 접속 컴포넌트들, 셀룰러 네트워크 상호 접속 컴포넌트들, USB(universal serial bus), 또는 다른 유선 또는 무선 표준들 기반 또는 독점적 인터페이스들을 포함할 수 있다.
일 예에서, 시스템(900)은 하나 이상의 I/O(input/output) 인터페이스(들)(960)를 포함한다. I/O 인터페이스(960)는 사용자가 시스템(900)과 상호 작용하는 하나 이상의 인터페이스 컴포넌트들(예를 들어, 오디오, 영숫자, 촉각/터치, 또는 다른 인터페이싱)을 포함할 수 있다. 주변기기 인터페이스(970)는 위에서 구체적으로 언급되지 않은 임의의 하드웨어 인터페이스를 포함할 수 있다. 주변기기들은 시스템(900)에 의존적으로 접속하는 디바이스들을 일반적으로 지칭한다. 의존적 접속은 동작이 그 상에서 실행되고 사용자가 그와 상호 작용하는 소프트웨어 플랫폼 또는 하드웨어 플랫폼 또는 양자 모두를 시스템(900)이 제공하는 것이다. 시스템(900)은 전원(902)을 또한 포함하고, 이는 시스템(900)의 컴포넌트들에 전력을 제공한다. 보다 구체적으로, 전원(902)은 통상적으로 시스템(902)에서 하나의 또는 다수의 전력 공급기들(904)과 인터페이스하여 시스템(900)의 컴포넌트들에 전력을 제공한다.
일 예에서, 시스템(900)은 데이터를 비-휘발성 방식으로 저장하는 스토리지 서브시스템(980)을 포함한다. 일 예에서는, 특정 시스템 구현들에서, 스토리지(980)의 적어도 특정 컴포넌트들이 메모리 서브시스템(920)의 컴포넌트들과 중첩될 수 있다. 스토리지 서브시스템(980)은 스토리지 디바이스(들)(981)를 포함하고, 이는 비-휘발성 스토리지(984)를 포함한다. 비-휘발성 스토리지(984)는, 하나 이상의 자기, 솔리드 스테이트, 또는 광학 기반 디스크들, 또는 이들의 조합과 같은, 다량의 데이터를 비-휘발성 방식으로 저장하기 위한 임의의 종래의 매체일 수 있다. 스토리지(984)는 코드 또는 명령어들 및 데이터(986)를 영구적 상태로 유지한다(즉, 시스템(900)으로의 전력의 중단에도 불구하고 값이 보유된다). 메모리(930)가 통상적으로 프로세서(910)에 명령어들을 제공하는 실행 또는 동작 메모리이더라도, 스토리지(984)는 일반적으로 "메모리(memory)"인 것으로 고려될 수 있다. 스토리지(984)가 비-휘발성인 반면에, 메모리(930)는 휘발성 메모리를 포함할 수 있다(즉, 시스템(900)으로의 전력이 중단되면 데이터의 값 또는 상태가 불확정적이다). 일 예에서, 스토리지 서브시스템(980)은 스토리지 디바이스(981)와 인터페이스하는 호스트 측 제어기(982) 및 호스트와 인터페이스하는 스토리지 측 제어기(985)를 포함한다. 일 예에서, 제어기(982)는 인터페이스(914) 또는 프로세서(910)의 물리적 부분이거나, 또는 프로세서(910) 및 인터페이스(914) 양자 모두에서의 회로들 또는 로직을 포함할 수 있다. 스토리지 디바이스(981)는 펌웨어(983)를 또한 포함하고, 이는, 도 1의 펌웨어(104)에 관하여 위에 설명된 바와 같이, 다양한 기능들을 수행할 수 있다. 일 예에서, 스토리지 디바이스(981)는 도 1의 SSD(102)와 동일하거나 또는 유사할 수 있다. 하나의 이러한 예에서, 스토리지 디바이스(981)는, 본 명세서에서 설명되는 바와 같이, 호스트로부터의 타임 스탬프를 사용하여 향상된 백그라운드 리프레시 기술들을 수행한다.
도 10은 백그라운드 데이터 리프레시 기술들을 구현하는 비-휘발성 스토리지 디바이스를 포함하는 모바일 디바이스의 예의 블록도이다. 디바이스(1000)는, 컴퓨팅 태블릿, 모바일 폰 또는 스마트폰, 무선 인에이블형 e-리더, 또는 다른 모바일 디바이스와 같은, 모바일 컴퓨팅 디바이스를 나타낸다. 컴포넌트들 중 특정의 것이 일반적으로 도시되고, 이러한 디바이스의 모든 컴포넌트들이 디바이스(1000)에 도시되는 것은 아니라는 점이 이해될 것이다.
디바이스(1000)는 프로세서(1010)를 포함하고, 이는 디바이스(1000)의 주 처리 동작들을 수행한다. 프로세서(1010)는, 마이크로프로세서들, 애플리케이션 프로세서들, 마이크로컨트롤러들, 프로그램 가능 로직 디바이스들, 또는 다른 처리 수단들과 같은, 하나 이상의 물리적 디바이스들을 포함할 수 있다. 프로세서(1010)에 의해 수행되는 처리 동작들은 애플리케이션들 및/또는 디바이스 기능들이 실행되는 운영 플랫폼 또는 운영 체제의 실행을 포함한다. 처리 동작들은 인간 사용자와의 또는 다른 디바이스들과의 I/O(input/output)에 관련된 동작들, 전력 관리에 관련된 동작들, 및/또는 디바이스(1000)를 다른 디바이스에 접속하는 것에 관련된 동작들, 또는 이들의 조합을 포함한다. 처리 동작들은 오디오 I/O, 디스플레이 I/O, 또는 다른 인터페이싱, 또는 이들의 조합에 관련된 동작들을 또한 포함할 수 있다. 프로세서(1010)는 메모리에 저장되는 데이터를 실행할 수 있다. 프로세서(1010)는 메모리에 저장되는 데이터를 기입 또는 편집할 수 있다.
일 예에서, 시스템(1000)은 하나 이상의 센서(1012)를 포함한다. 센서(1012)는 내장형 센서들 또는 외부 센서들에 대한 인터페이스들, 또는 이들의 조합을 나타낸다. 센서들(1012)은 시스템(1000)으로 하여금 시스템(1000)이 구현되는 환경 또는 디바이스의 하나 이상의 조건을 모니터링 또는 검출할 수 있게 한다. 일 예에서는, 하나 이상의 센서(1012)가 프로세서(1010)와 통합되는 프론트엔드 회로를 통해 프로세서(1010)에 연결된다. 일 예에서는, 하나 이상의 센서(1012)가 시스템(1000)의 다른 컴포넌트를 통해 프로세서(1010)에 연결된다.
일 예에서, 디바이스(1000)는 오디오 서브시스템(1020)을 포함하고, 이는 오디오 기능들을 컴퓨팅 디바이스에 제공하는 것과 연관된 하드웨어(예를 들어, 오디오 하드웨어 및 오디오 회로들) 및 소프트웨어(예를 들어, 드라이버들, 코덱들) 컴포넌트들을 나타낸다. 오디오 기능들은 스피커 및/또는 헤드폰 출력 뿐만 아니라 마이크로폰 입력을 포함할 수 있다. 이러한 기능들을 위한 디바이스들이 디바이스(1000)에 통합되거나, 또는 디바이스(1000)에 접속될 수 있다. 일 예에서, 사용자는 프로세서(1010)에 의해 수신되고 처리되는 오디오 커맨드들을 제공함으로써 디바이스(1000)와 상호 작용한다.
디스플레이 서브시스템(1030)은 사용자에게 제시하기 위한 시각적 디스플레이를 제공하는 하드웨어(예를 들어, 디스플레이 디바이스들) 및 소프트웨어 컴포넌트들(예를 들어, 드라이버들)을 나타낸다. 일 예에서, 디스플레이는 사용자가 컴퓨팅 디바이스와 상호 작용하기 위한 촉각 컴포넌트들 또는 터치스크린 엘리먼트들을 포함한다. 디스플레이 서브시스템(1030)은 디스플레이 인터페이스(1032)를 포함하고, 이는 디스플레이를 사용자에게 제공하는데 사용되는 특정 스크린 또는 하드웨어 디바이스를 포함한다. 일 예에서는, 디스플레이 인터페이스(1032)가 디스플레이에 관련된 적어도 일부 처리를 수행하는 프로세서(1010)와는 별도인 (그래픽 프로세서와 같은) 로직을 포함한다. 일 예에서, 디스플레이 서브시스템(1030)는 사용자에게 출력 및 입력 양자 모두를 제공하는 터치스크린 디바이스를 포함한다.
I/O 제어기(1040)는 사용자와의 상호 작용에 관련된 하드웨어 디바이스들 및 소프트웨어 컴포넌트들을 나타낸다. I/O 제어기(1040)는, 오디오 서브시스템(1020), 또는 디스플레이 서브시스템(1030), 또는 양자 모두의 일부인 하드웨어를 관리하도록 동작할 수 있다. 추가적으로, I/O 제어기(1040)는 사용자가 그를 통해 시스템과 상호 작용할 수도 있는 디바이스(1000)에 접속하는 추가적 디바이스들에 대한 접속 지점을 도시한다. 예를 들어, 디바이스(1000)에 부착될 수 있는 디바이스들은 마이크로폰 디바이스들, 스피커 또는 스테레오 시스템들, 비디오 시스템들 또는 다른 디스플레이 디바이스, 키보드 또는 키패드 디바이스들, 또는 카드 리더기들 또는 다른 디바이스들과 같은 특정 애플리케이션들과의 사용을 위한 다른 I/O 디바이스들을 포함할 수도 있다.
일 예에서, 디바이스(1000)는 배터리 전력 사용, 배터리의 충전, 및 전력 절약 동작에 관련된 특징들을 관리하는 전력 관리(1050)를 포함한다. 전력 관리(1050)는, 전력을 시스템(1000)의 컴포넌트들에 제공하는, 전원(1052)으로부터의 전력을 관리한다.
메모리 서브시스템(1060)은 디바이스(1000)에 정보를 저장하기 위한 메모리 디바이스(들)(1062)를 포함한다. 메모리 서브시스템(1060)은 비-휘발성(메모리 디바이스로의 전력이 중단되면 상태가 변경되지 않음) 또는 휘발성(메모리 디바이스로의 전력이 중단되면 상태가 불확정적임) 메모리 디바이스들, 또는 이들의 조합을 포함할 수 있다. 메모리(1060)는 애플리케이션 데이터, 사용자 데이터, 음악, 사진들, 문서들, 또는 다른 데이터 뿐만 아니라 시스템(1000)의 애플리케이션들 및 기능들의 실행에 관련된 시스템 데이터(장기적 또는 일시적)를 저장할 수 있다. 일 예에서, 메모리 서브시스템(1060)은 (시스템(1000)의 제어의 일부로 또한 고려될 수 있고, 잠재적으로는 프로세서(1010)의 일부로 고려될 수 있는) 메모리 제어기(1064)를 포함한다. 메모리 제어기(1064)는 메모리 디바이스(1062)에 커맨드들을 생성하고 발행하는 스케줄러를 포함한다.
접속성(1070)은 디바이스(1000)로 하여금 외부 디바이스들과 통신할 수 있게 하는 하드웨어 디바이스들(예를 들어, 무선 또는 유선 커넥터들 및 통신 하드웨어, 또는 유선 및 무선 하드웨어의 조합) 및 소프트웨어 컴포넌트들(예를 들어, 드라이버들, 프로토콜 스택들)을 포함한다. 외부 디바이스는, 다른 컴퓨팅 디바이스들, 무선 액세스 포인트들 또는 기지국들과 같은, 별도의 디바이스들 뿐만 아니라 헤드셋들, 프린터들, 또는 다른 디바이스들과 같은 주변기기들일 수 있다. 일 예에서, 시스템(1000)은 메모리에 저장하기 위해 또는 디스플레이 디바이스 상의 디스플레이를 위해 외부 디바이스와 데이터를 교환한다. 교환된 데이터는, 데이터를 판독, 기록, 또는 편집하기 위해, 메모리에 저장될 데이터, 또는 메모리에 이미 저장된 데이터를 포함할 수 있다.
접속성(1070)은 다수의 상이한 타입들의 접속성을 포함할 수 있다. 일반화하기 위해, 디바이스(1000)는 셀룰러 접속성(1072) 및 무선 접속성(1074)이 있는 것으로 도시된다. 셀룰러 접속성(1072)은, GSM(global system for mobile communications) 또는 변형물들 또는 파생물들, CDMA(code division multiple access) 또는 변형물들 또는 파생물들, TDM(time division multiplexing) 또는 변형물들 또는 파생물들, LTE(long term evolution - "4G"라고 또한 지칭됨), 또는 다른 셀룰러 서비스 표준들을 통해 제공되는 것과 같이, 무선 캐리어들에 의해 제공되는 셀룰러 네트워크 접속성을 일반적으로 지칭한다. 무선 접속성(1074)은 셀룰러가 아닌 무선 접속성을 지칭하고, (Bluetooth와 같은) 개인 영역 네트워크들, (WiFi와 같은) 로컬 영역 네트워크들, 또는 (WiMax와 같은) 광역 네트워크들, 또는 다른 무선 통신, 또는 이들의 조합을 포함할 수 있다. 무선 통신은 비-솔리드 매체를 통해 변조된 전자기 복사의 사용을 통한 데이터의 전달을 지칭한다. 유선 통신은 솔리드 통신 매체를 통해 발생한다.
주변기기 접속들(1080)은 하드웨어 인터페이스들 및 커넥터들 뿐만 아니라, 소프트웨어 컴포넌트들(예를 들어, 드라이버들, 프로토콜 스택들)을 포함하여 주변기기 접속들을 이룬다. 디바이스(1000)는 다른 컴퓨팅 디바이스들로의 주변기기 디바이스("~로"(1082))일 뿐만 아니라, 이에 접속되는 주변기기 디바이스들("~로부터"(1084))을 가질 수 있다는 점이 이해될 것이다. 디바이스(1000)는 디바이스(1000) 상의 콘텐츠를 관리하는 것(예를 들어, 다운로딩하는 것, 업로딩하는 것, 변경하는 것, 또는 동기화하는 것)과 같은 목적들을 위해 다른 컴퓨팅 디바이스들에 접속하는 "도킹(docking)" 커넥터를 보통 갖는다. 추가적으로, 도킹 커넥터는, 디바이스(1000)로 하여금, 예를 들어, 시청각적 또는 다른 시스템들로의 콘텐츠 출력을 제어하게 하는 특정 주변기기들에 디바이스(1000)가 접속하도록 허용할 수 있다.
독점적 도킹 커넥터 또는 다른 독점적 접속 하드웨어 외에도, 디바이스(1000)는 공통의 또는 표준 기반 커넥터들을 통해 주변기기 접속들(1080)을 이룰 수 있다. 공통 타입들은 USB(Universal Serial Bus) 커넥터(다수의 상이한 하드웨어 인터페이스들 중 임의의 것을 포함할 수 있음), MDP(MiniDisplayPort)를 포함하는 DisplayPort, HDMI(High Definition Multimedia Interface), Firewire, 또는 다른 타입을 포함할 수 있다.
디바이스(1000)는 SSD(solid state drive)(1011)를 또한 포함하고, 이는 디바이스(1000)에 대한 비-휘발성 스토리지를 제공한다. SSD(1011)는 도 1의 SSD(102)와 동일하거나 또는 유사할 수 있다. 하나의 이러한 예에서, SSD(1011)는, 본 명세서에 설명되는 바와 같이, 호스트로부터의 타임 스탬프를 사용하여 향상된 백그라운드 리프레시 기술들을 수행한다.
백그라운드 리프레시 기술들을 구현하기 위한 방법들, 장치들, 및 시스템들의 예들이 뒤따른다. 일 예에서, 방법은 호스트로부터 타임 스탬프를 수신하는 단계, 타임 스탬프를 스토리지 디바이스에 저장하는 단계, 스토리지 디바이스의 하나 이상의 블록에 저장된 데이터에 대한 보유 시간을 데이터가 하나 이상의 블록에 기입된 때를 표시하는 제2 타임 스탬프에 대한 타임 스탬프에 기초하여 결정하는 단계, 및 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 데이터를 스토리지 디바이스의 하나 이상의 다른 블록에 이동시키는 단계를 포함한다. 일 예에서, 호스트로부터 타임 스탬프를 수신하는 단계는 스토리지 디바이스를 파워 온하는 것 또는 스토리지 디바이스가 저 전력 상태를 벗어나는 것에 응답한다. 일 예에서, 호스트로부터 타임 스탬프를 수신하는 단계는 스토리지 디바이스를 파워 온한 이후 또는 저 전력 상태를 벗어난 이후 제1 기입 커맨드에 추가로 응답한다. 일 예에서, 이러한 방법은, 복수의 슈퍼 블록들 각각에 대해, 주어진 슈퍼 블록에 데이터가 기입된 때를 표시하는 타임 스탬프 및 주어진 슈퍼 블록에 기입된 데이터에 대한 보유 시간을 저장하는 단계, 스토리지 디바이스를 파워 온하는 것 또는 스토리지 디바이스가 저 전력 상태를 벗어나는 것에 응답하여, 복수의 슈퍼 블록들에 대한 데이터 보유 시간들을 스캐닝하는 단계, 및 복수의 슈퍼 블록들 중 하나 이상의 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 데이터를 복수의 슈퍼 블록들 중 하나 이상으로부터 하나 이상의 다른 슈퍼 블록으로 이동시키는 단계를 추가로 포함한다.
일 예에서, 이러한 방법은, 저 전력 상태에 진입하는 것 또는 스토리지 디바이스를 파워 다운하는 것에 응답하여, 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 비-휘발성 메모리에 저장하는 단계, 및, 더 낮은 전력 상태를 벗어나는 것 또는 스토리지 디바이스를 파워 온하는 것에 응답하여, 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 비-휘발성 메모리로부터 로딩하는 단계를 포함한다. 일 예에서, 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 저장하는 단계는 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 스토리지 디바이스의 하나 이상의 SLC(single level cell) 슈퍼 블록에 저장하는 단계를 포함한다. 일 예에서, 데이터를 이동시키는 단계는 하나 이상의 블록에 저장된 데이터에 대한 보유 시간이 임계값을 초과한 것을 표시하도록 큐에 하나 이상의 블록을 배치하는 단계, 및 호스트로부터의 액세스들을 큐로부터의 기입들과 인터리빙하는 단계를 포함한다. 일 예에서, 큐에 하나 이상의 블록을 배치하는 단계는 하나 이상의 블록을 식별하고 하나 이상의 블록에 저장된 데이터에 대한 보유 시간이 임계값을 초과한 것을 표시하도록 플래그를 설정하는 단계를 포함한다. 일 예에서, 이러한 방법은 호스트로부터의 액세스들을 큐로부터의 기입들과 인터리빙하기 위한 비율을 조정하는 단계를 포함하고, 인터리빙하기 위한 비율은, 큐에서의 블록들의 보유 시간들, 호스트로부터의 커맨드들의 수, 리프레시될 블록들의 수, 및 리프레시를 수행하기 위한 가용 공간 중 하나 이상에 기초한다. 일 예에서, 타임 스탬프를 수신하는 단계는 호스트로부터의 벤더 고유의 커맨드를 통해 타임 스탬프를 수신하는 단계를 포함한다.
일 예에서, SSD(solid state storage device)는 데이터를 저장하는 솔리드 스테이트 스토리지, 및 호스트로부터 타임 스탬프를 수신하고, 타임 스탬프를 솔리드 스테이트 스토리지에 저장하고, 솔리드 스테이트 스토리지의 하나 이상의 블록에 저장된 데이터에 대한 보유 시간을 데이터가 하나 이상의 블록에 기입된 때를 표시하는 제2 타임 스탬프에 대한 타임 스탬프에 기초하여 결정하고, 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 데이터를 스토리지 디바이스의 하나 이상의 다른 블록에 이동시키는 로직을 포함한다. 일 예에서, 호스트로부터의 타임 스탬프의 수신은 SSD를 파워 온하는 것 또는 SSD가 저 전력 상태를 벗어나는 것에 응답한다. 일 예에서, 호스트로부터의 타임 스탬프의 수신은 SSD를 파워 온한 이후 또는 SSD를 벗어난 이후 제1 기입 커맨드에 추가로 응답한다. 일 예에서, 로직은, 복수의 슈퍼 블록들 각각에 대해, 주어진 슈퍼 블록에 데이터가 기입된 때를 표시하는 타임 스탬프 및 주어진 슈퍼 블록에 기입된 데이터에 대한 보유 시간을 추가로 저장한다.
일 예에서, 로직은 추가로, 스토리지 디바이스를 파워 온하는 것 또는 스토리지 디바이스가 저 전력 상태를 벗어나는 것에 응답하여, 복수의 슈퍼 블록들에 대한 데이터 보유 시간들을 스캐닝하고, 복수의 슈퍼 블록들 중 하나 이상의 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 데이터를 복수의 슈퍼 블록들 중 하나 이상으로부터 하나 이상의 다른 슈퍼 블록으로 이동시킨다. 일 예에서, SSD는 휘발성 메모리를 추가로 포함하고, 저 전력 상태에 진입하는 것 또는 SSD를 파워 다운하는 것에 응답하여, 로직은 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 비-휘발성 스토리지에 저장하고, 더 낮은 전력 상태를 벗어나는 것 또는 SSD를 파워 온하는 것에 응답하여, 로직은 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 비-휘발성 스토리지로부터 휘발성 메모리로 로딩한다. 일 예에서, 저 전력 상태에 진입하는 것 또는 SSD를 파워 다운하는 것에 응답하여, 로직은 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 스토리지 디바이스의 하나 이상의 SLC(single level cell) 슈퍼 블록에 저장한다. 일 예에서, 그 데이터를 이동시키는 로직은 하나 이상의 블록에 저장된 데이터에 대한 보유 시간이 임계값을 초과한 것을 표시하도록 큐에 하나 이상의 블록을 배치하고, 호스트로부터의 액세스들을 큐로부터의 기입들과 인터리빙한다. 일 예에서, 큐에 하나 이상의 블록을 배치하는 로직은, 하나 이상의 블록을 식별하고 하나 이상의 블록에 저장된 데이터에 대한 보유 시간이 임계값을 초과한 것을 표시하도록 플래그를 설정한다. 일 예에서, 로직은, 호스트로부터의 액세스들을 큐로부터의 기입들과 인터리빙하기 위한 비율을 조정하고, 인터리빙하기 위한 비율은, 큐에서의 블록들의 보유 시간들, 호스트로부터의 커맨드들의 수, 리프레시될 블록들의 수, 및 리프레시를 수행하기 위한 가용 공간 중 하나 이상에 기초한다. 일 예에서, 로직은 호스트로부터의 벤더 고유의 커맨드를 통해 타임 스탬프를 수신한다. 일 예에서, 로직은 SSD에 대한 펌웨어를 포함한다.
일 예에서, 시스템은 프로세서 및 프로세서와 연결되는 비-휘발성 스토리지 디바이스를 포함하고, 비-휘발성 스토리지 디바이스는 본 명세서에 설명되는 특징들을 포함한다. 일 예에서, SSD(solid state storage device)는 데이터를 저장하는 비-휘발성 스토리지, 및 호스트로부터 타임 스탬프를 수신하고, 타임 스탬프를 비-휘발성 스토리지에 저장하고, 비-휘발성 스토리지의 하나 이상의 블록에 저장된 데이터에 대한 보유 시간을 데이터가 하나 이상의 블록에 기입된 때를 표시하는 제2 타임 스탬프에 대한 타임 스탬프에 기초하여 결정하고, 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 데이터를 비-휘발성 스토리지 디바이스의 하나 이상의 다른 블록에 이동시키는 수단을 포함한다.
일 예에서, 호스트로부터의 타임 스탬프의 수신은 SSD를 파워 온하는 것 또는 SSD가 저 전력 상태를 벗어나는 것에 응답한다. 일 예에서, 호스트로부터의 타임 스탬프의 수신은 SSD를 파워 온한 이후 또는 저 전력 상태를 벗어난 이후 제1 I/O(input/output) 커맨드에 추가로 응답한다. 일 예에서, SSD는, 복수의 슈퍼 블록들 각각에 대해, 주어진 슈퍼 블록에 데이터가 기입된 때를 표시하는 타임 스탬프 및 주어진 슈퍼 블록에 기입된 데이터에 대한 보유 시간을 저장하는 수단을 포함한다. 일 예에서, SSD는, SSD를 파워 온하는 것 또는 SSD 디바이스가 저 전력 상태를 벗어나는 것에 응답하여, 복수의 슈퍼 블록들에 대한 데이터 보유 시간들을 스캐닝하고, 복수의 슈퍼 블록들 중 하나 이상의 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 데이터를 복수의 슈퍼 블록들 중 하나 이상으로부터 하나 이상의 다른 슈퍼 블록으로 이동시키는 수단을 포함한다. 일 예에서, SSD는 휘발성 메모리, 및 저 전력 상태에 진입하는 것 또는 SSD를 파워 다운하는 것에 응답하여, 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 비-휘발성 스토리지에 저장하고, 더 낮은 전력 상태를 벗어나는 것 또는 스토리지 디바이스를 파워 온하는 것에 응답하여, 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 비-휘발성 스토리지로부터 휘발성 메모리로 로딩하는 수단을 추가로 포함한다. 일 예에서, SSD는 저 전력 상태에 진입하는 것 또는 SSD를 파워 다운하는 것에 응답하여, 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 SSD의 하나 이상의 SLC(single level cell) 슈퍼 블록에 저장하는 수단을 추가로 포함한다. 일 예에서, 그 데이터를 이동시키는 수단은, 하나 이상의 블록에 저장된 데이터에 대한 보유 시간이 임계값을 초과한 것을 표시하도록 큐에 하나 이상의 블록을 배치하고, 호스트로부터의 액세스들을 큐로부터의 기입들과 인터리빙한다. 일 예에서, 큐에 하나 이상의 블록을 배치하는 수단은, 하나 이상의 블록을 식별하고 하나 이상의 블록에 저장된 데이터에 대한 보유 시간이 임계값을 초과한 것을 표시하도록 플래그를 설정한다. 일 예에서, SSD는 호스트로부터의 액세스들을 큐로부터의 기입들과 인터리빙하기 위한 비율을 조정하는 수단을 포함하고, 인터리빙하기 위한 비율은, 큐에서의 블록들의 보유 시간들, 호스트로부터의 커맨드들의 수, 리프레시될 블록들의 수, 및 리프레시를 수행하기 위한 가용 공간 중 하나 이상에 기초한다. 일 예에서, SSD는 호스트로부터의 벤더 고유의 커맨드를 통해 타임 스탬프를 수신하는 수단을 포함한다. 일 예에서는, 액세스될 때 동작들의 수행으로 하여금 본 명세서에 설명되는 바와 같이 백그라운드 리프레시를 수행하기 위한 방법을 실행하게 하는 콘텐츠를 저장하는 컴퓨터 판독 가능 스토리지 매체를 포함하는 제조 물품이 제공된다.
본 명세서에 도시되는 바와 같은 흐름도들은 다양한 프로세스 액션들의 시퀀스들의 예들을 제공한다. 이러한 흐름도들은 소프트웨어 또는 펌웨어 루틴에 의해 실행될 동작들 뿐만 아니라 물리적 동작들을 표시할 수 있다. 일 예에서, 흐름도는 FSM(finite state machine)의 상태를 도시할 수 있고, 이는 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 특정 시퀀스 또는 순서로 도시되지만, 달리 명시되지 않는 한, 액션들의 순서는 수정될 수 있다. 따라서, 도시되는 실시예들은 예로서만 이해되어야 하며, 프로세스는 상이한 순서로 수행될 수 있고, 일부 액션들은 병렬로 수행될 수 있다. 추가적으로, 하나 이상의 액션들이 다양한 예들에서 생략될 수 있고; 따라서, 모든 액션들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 흐름들이 가능하다.
다양한 동작들 또는 기능들이 본 명세서에 설명될 경우, 이들은 소프트웨어 코드, 명령어들, 구성, 데이터, 또는 이들의 조합으로서 설명되거나 또는 정의될 수 있다. 콘텐츠는 직접 실행 가능할 수 있거나("오브젝트(object)" 또는 "실행 가능(executable)" 형태), 소스 코드, 또는 차이 코드("델타(delta)" 또는 "패치(patch)" 코드)일 수 있다. 본 명세서에 설명되는 실시예들의 소프트웨어 콘텐츠는 그 상에 콘텐츠가 저장되는 제조 물품을 통해, 또는 통신 인터페이스를 통해 데이터를 전송하는 통신 인터페이스를 동작시키는 방법을 통해 제공될 수 있다. 머신 판독 가능 스토리지 매체는 머신으로 하여금 설명되는 기능들 또는 동작들을 수행하게 할 수 있고, 기록 가능한/기록 가능하지 않은 매체(예를 들어, ROM(read only memory), RAM(random access memory), 자기 디스크 스토리지 매체, 광학 스토리지 매체, 플래시 메모리 디바이스들 등)와 같이, 머신(예를 들어, 컴퓨팅 디바이스, 전자 시스템 등)에 의해 액세스 가능한 형태로 정보를 저장하는 임의의 메커니즘을 포함한다. 통신 인터페이스는, 메모리 버스 인터페이스, 프로세서 버스 인터페이스, 인터넷 접속, 디스크 제어기 등과 같은, 다른 디바이스에 통신하는 하드웨어 내장형, 무선, 광학 등의 매체 중 임의의 것에 인터페이스하는 임의의 메커니즘을 포함한다. 통신 인터페이스는 통신 인터페이스를 준비하여 소프트웨어 콘텐츠를 설명하는 데이터 신호를 제공하도록 구성 파라미터들을 제공하거나 신호들을 전송하거나, 또는 이들 양자 모두에 의해 구성될 수 있다. 통신 인터페이스는 통신 인터페이스에 전송되는 하나 이상의 커맨드 또는 신호를 통해 액세스될 수 있다.
본 명세서에 설명되는 다양한 컴포넌트들은 설명되는 동작들 또는 기능들을 수행하기 위한 수단일 수 있다. 본 명세서에 설명되는 각각의 컴포넌트는 소프트웨어, 하드웨어,또는 이들의 조합을 포함한다. 이러한 컴포넌트들은 소프트웨어 모듈들, 하드웨어 모듈들, 특수-목적 하드웨어(예를 들어, 주문형 하드웨어, ASIC들(application specific integrated circuits), DSP들(digital signal processors) 등), 내장형 제어기들, 하드웨어 내장형 회로 등으로서 구현될 수 있다.
본 명세서에 설명되는 것 외에도, 본 발명의 개시되는 실시예들 및 구현들에 대해 다양한 수정들이 그 범위를 벗어나지 않으면서 이루어질 수 있다. 따라서, 본 명세서에서의 도시들 및 예들은 제한적인 의미가 아니라 예시적인 의미로 해석되어야 한다. 본 발명의 범위는 뒤따르는 청구항들을 참조하는 것에 의해서만 측정되어야 한다.

Claims (20)

  1. 방법으로서,
    호스트로부터 타임 스탬프를 수신하는 단계;
    상기 타임 스탬프를 스토리지 디바이스에 저장하는 단계;
    상기 스토리지 디바이스의 하나 이상의 블록에 저장된 데이터에 대한 보유 시간을 상기 데이터가 상기 하나 이상의 블록에 기입된 때를 표시하는 제2 타임 스탬프에 대한 상기 타임 스탬프에 기초하여 결정하는 단계; 및
    상기 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 상기 데이터를 상기 스토리지 디바이스의 하나 이상의 다른 블록으로 이동시키는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 호스트로부터 상기 타임 스탬프를 수신하는 단계는 상기 스토리지 디바이스를 파워 온하는 것 또는 상기 스토리지 디바이스가 저 전력 상태를 벗어나는 것에 응답하는 방법.
  3. 제2항에 있어서,
    상기 호스트로부터 상기 타임 스탬프를 수신하는 단계는 상기 스토리지 디바이스를 파워 온한 이후 또는 상기 저 전력 상태를 벗어난 이후 제1 I/O(input/output) 커맨드에 추가로 응답하는 방법.
  4. 제1항에 있어서,
    복수의 슈퍼 블록들 각각에 대해, 주어진 슈퍼 블록에 데이터가 기입된 때를 표시하는 타임 스탬프 및 상기 주어진 슈퍼 블록에 기입된 데이터에 대한 보유 시간을 저장하는 단계를 추가로 포함하는 방법.
  5. 제4항에 있어서,
    상기 스토리지 디바이스를 파워 온하는 것 또는 상기 스토리지 디바이스가 저 전력 상태를 벗어나는 것에 응답하여, 상기 복수의 슈퍼 블록들에 대한 데이터 보유 시간들을 스캐닝하는 단계(scanning through); 및
    상기 복수의 슈퍼 블록들 중 하나 이상의 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 상기 데이터를 상기 복수의 슈퍼 블록들 중 하나 이상으로부터 하나 이상의 다른 슈퍼 블록으로 이동시키는 단계
    를 추가로 포함하는 방법.
  6. 제4항에 있어서,
    저 전력 상태에 진입하는 것 또는 상기 스토리지 디바이스를 파워 다운하는 것에 응답하여, 상기 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 상기 스토리지 디바이스의 비-휘발성 스토리지에 저장하는 단계; 및
    더 낮은 전력 상태를 벗어나는 것 또는 상기 스토리지 디바이스를 파워 온하는 것에 응답하여, 상기 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 상기 비-휘발성 스토리지로부터 상기 스토리지 디바이스의 휘발성 메모리로 로딩하는 단계
    를 추가로 포함하는 방법.
  7. 제6항에 있어서,
    상기 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 상기 비-휘발성 스토리지에 저장하는 단계는,
    상기 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 상기 스토리지 디바이스의 하나 이상의 SLC(single level cell) 슈퍼 블록에 저장하는 단계를 포함하는 방법.
  8. 제1항에 있어서,
    상기 데이터를 이동시키는 단계는,
    상기 하나 이상의 블록에 저장된 데이터에 대한 보유 시간이 상기 임계값을 초과한 것을 표시하도록 큐에 상기 하나 이상의 블록을 배치하는 단계; 및
    상기 호스트로부터의 액세스들을 상기 큐로부터의 기입들과 인터리빙하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 큐에 상기 하나 이상의 블록을 배치하는 단계는 상기 하나 이상의 블록을 식별하고 상기 하나 이상의 블록에 저장된 데이터에 대한 보유 시간이 상기 임계값을 초과한 것을 표시하도록 플래그를 설정하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    상기 호스트로부터의 액세스들을 상기 큐로부터의 기입들과 인터리빙하기 위한 비율을 조정하는 단계를 추가로 포함하고;
    상기 인터리빙하기 위한 비율은, 상기 큐에서의 블록들의 보유 시간들, 상기 호스트로부터의 커맨드들의 수, 리프레시될 블록들의 수, 및 리프레시를 수행하기 위한 가용 공간 중 하나 이상에 기초하는 방법.
  11. 제1항에 있어서,
    상기 타임 스탬프를 수신하는 단계는,
    상기 호스트로부터의 벤더 고유의 커맨드를 통해 상기 타임 스탬프를 수신하는 단계를 포함하는 방법.
  12. SSD(solid state storage device)로서,
    데이터를 저장하는 비-휘발성 스토리지; 및
    로직을 포함하고, 상기 로직은,
    호스트로부터 타임 스탬프를 수신하고;
    상기 타임 스탬프를 상기 비-휘발성 스토리지에 저장하고;
    상기 비-휘발성 스토리지의 하나 이상의 블록에 저장된 데이터에 대한 보유 시간을 상기 데이터가 상기 하나 이상의 블록에 기입된 때를 표시하는 제2 타임 스탬프에 대한 상기 타임 스탬프에 기초하여 결정하고;
    상기 보유 시간이 임계값을 초과한다는 결정에 응답하여, 상기 데이터를 상기 비-휘발성 스토리지의 하나 이상의 다른 블록으로 이동시키는 SSD.
  13. 제12항에 있어서,
    상기 호스트로부터의 상기 타임 스탬프의 수신은 상기 SSD를 파워 온하는 것 또는 상기 SSD가 저 전력 상태를 벗어나는 것에 응답하는 SSD.
  14. 제12항에 있어서,
    상기 호스트로부터의 상기 타임 스탬프의 수신은 상기 SSD를 파워 온한 이후 또는 상기 SSD에 의해 저 전력 상태를 벗어난 이후 제1 I/O(input/output) 커맨드에 추가로 응답하는 SSD.
  15. 제12항에 있어서,
    상기 로직은 추가로,
    복수의 슈퍼 블록들 각각에 대해, 주어진 슈퍼 블록에 데이터가 기입된 때를 표시하는 타임 스탬프 및 상기 주어진 슈퍼 블록에 기입된 데이터에 대한 보유 시간을 저장하는 SSD.
  16. 제15항에 있어서,
    상기 로직은 추가로,
    상기 SSD를 파워 온하는 것 또는 상기 SSD가 저 전력 상태를 벗어나는 것에 응답하여, 상기 복수의 슈퍼 블록들에 대한 데이터 보유 시간들을 스캐닝하고;
    상기 복수의 슈퍼 블록 중 하나 이상의 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 상기 데이터를 상기 복수의 슈퍼 블록들 중 하나 이상으로부터 하나 이상의 다른 슈퍼 블록으로 이동시키는 SSD.
  17. 제15항에 있어서,
    휘발성 메모리를 추가로 포함하고;
    저 전력 상태에 진입하는 것 또는 상기 SSD를 파워 다운하는 것에 응답하여, 상기 로직은 상기 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 상기 비-휘발성 메모리에 저장하고;
    더 낮은 전력 상태를 벗어나는 것 또는 상기 SSD를 파워 온하는 것에 응답하여, 상기 로직은 상기 복수의 슈퍼 블록들 각각에 대한 타임 스탬프 및 보유 시간을 상기 비-휘발성 스토리지로부터 상기 휘발성 메모리로 로딩하는 SSD.
  18. 제12항에 있어서,
    상기 로직은 상기 SSD에 대한 펌웨어를 포함하는 SSD.
  19. 액세스될 때 동작들의 수행으로 하여금 방법을 실행하게 하는 콘텐츠를 저장하는 컴퓨터 판독 가능 스토리지 매체를 포함하는 제조 물품으로서, 상기 방법은,
    호스트로부터 타임 스탬프를 수신하는 단계;
    상기 타임 스탬프를 스토리지 디바이스에 저장하는 단계;
    상기 스토리지 디바이스의 하나 이상의 블록에 저장된 데이터에 대한 보유 시간을 상기 데이터가 상기 하나 이상의 블록에 기입된 때를 표시하는 제2 타임 스탬프에 대한 상기 타임 스탬프에 기초하여 결정하는 단계; 및
    상기 보유 시간이 임계값을 초과한다고 결정하는 것에 응답하여, 상기 데이터를 상기 스토리지 디바이스의 하나 이상의 다른 블록으로 이동시키는 단계
    를 포함하는 제조 물품.
  20. 제19항에 있어서,
    상기 호스트로부터 상기 타임 스탬프를 수신하는 단계는 상기 스토리지 디바이스를 파워 온하는 것 또는 상기 스토리지 디바이스가 저 전력 상태를 벗어나는 것에 응답하는 제조 물품.
KR1020180138110A 2017-12-14 2018-11-12 스토리지 디바이스들에서 시스템 타임 스탬프를 사용하는 백그라운드 데이터 리프레시 KR20190071582A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/842,799 US11099760B2 (en) 2017-12-14 2017-12-14 Background data refresh using a system timestamp in storage devices
US15/842,799 2017-12-14

Publications (1)

Publication Number Publication Date
KR20190071582A true KR20190071582A (ko) 2019-06-24

Family

ID=65137937

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180138110A KR20190071582A (ko) 2017-12-14 2018-11-12 스토리지 디바이스들에서 시스템 타임 스탬프를 사용하는 백그라운드 데이터 리프레시

Country Status (5)

Country Link
US (1) US11099760B2 (ko)
JP (1) JP7235226B2 (ko)
KR (1) KR20190071582A (ko)
CN (1) CN110045915A (ko)
DE (1) DE102018128601A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10798140B1 (en) 2018-07-16 2020-10-06 Amazon Technologies, Inc. Stream data record reads using push-mode persistent connections
US10855754B1 (en) 2018-07-16 2020-12-01 Amazon Technologies, Inc. Isolated read channel categories at streaming data service
US10768830B1 (en) * 2018-07-16 2020-09-08 Amazon Technologies, Inc. Streaming data service with isolated read channels
CN113383387A (zh) * 2019-01-29 2021-09-10 美光科技公司 存储器装置及其管理方法
US11899576B2 (en) * 2019-06-11 2024-02-13 Micron Technology, Inc. Dynamically modifying garbage collection rates for a memory subsystem in a closed-loop system
JP7321851B2 (ja) * 2019-09-09 2023-08-07 キオクシア株式会社 メモリシステムおよびガベッジコレクション制御方法
US11231863B2 (en) * 2019-12-19 2022-01-25 Micron Technology, Inc. Block family-based error avoidance for memory devices
TWI712045B (zh) * 2020-01-16 2020-12-01 慧榮科技股份有限公司 資料儲存裝置修復方法
JP2021121901A (ja) * 2020-01-31 2021-08-26 キオクシア株式会社 メモリシステムおよび制御方法
US11562792B2 (en) 2020-03-18 2023-01-24 Kioxia Corporation Memory system having a non-volatile memory and a controller configured to switch a mode for controlling an access operation to the non-volatile memory
JP2021149549A (ja) 2020-03-19 2021-09-27 キオクシア株式会社 ストレージ装置およびアドレス変換テーブルのキャッシュ制御方法
US11556257B2 (en) * 2020-08-14 2023-01-17 Micron Technology, Inc. Selectable wear life indicator based on data retention
US11422825B2 (en) * 2020-12-30 2022-08-23 Kioxia Corporation Determination of power-off duration of NVMe SSD
US11698751B2 (en) * 2021-06-07 2023-07-11 Western Digital Technologies, Inc. Data storage device and method for low-latency power state transitions by having power islanding in a host memory buffer
US11543993B1 (en) * 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
CN113672450B (zh) * 2021-07-19 2022-11-22 荣耀终端有限公司 固态硬盘的处理方法和装置
CN114168077A (zh) * 2021-12-07 2022-03-11 深圳忆联信息系统有限公司 固态硬盘的时间戳管理方法、装置、计算机设备及存储介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493772B1 (en) * 1999-08-23 2002-12-10 International Business Machines Corporation System and method with guaranteed maximum command response time
US6513074B1 (en) * 2000-01-06 2003-01-28 International Business Machines Corporation SCSI bus intelligent listening device and method
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
JP4977703B2 (ja) * 2005-08-03 2012-07-18 サンディスク コーポレイション 予定再生操作を伴う不揮発性メモリ
US9727473B2 (en) 2008-09-30 2017-08-08 Intel Corporation Methods to communicate a timestamp to a storage system
US8411519B2 (en) * 2010-06-04 2013-04-02 Apple Inc. Selective retirement of blocks
US8650353B2 (en) * 2011-07-01 2014-02-11 Intel Corporation Apparatus, system, and method for refreshing non-volatile memory
KR101596606B1 (ko) * 2011-08-19 2016-03-07 가부시끼가이샤 도시바 정보 프로세싱 장치, 정보 프로세싱 장치를 제어하는 방법, 제어 도구를 저장하는 비일시적 기록 매체, 호스트 디바이스, 성능 평가 도구를 저장하는 비일시적 기록 매체, 및 외부 메모리 디바이스를 위한 성능 평가 방법
JP2013047913A (ja) * 2011-08-29 2013-03-07 Toshiba Corp 情報処理装置、情報処理装置の制御方法、制御ツール、及びホスト装置
US8966343B2 (en) * 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US8898548B1 (en) * 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
JP2015001909A (ja) * 2013-06-17 2015-01-05 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
US9165668B1 (en) * 2013-07-29 2015-10-20 Western Digital Technologies, Inc. Data retention monitoring using temperature history in solid state drives
CN106170773A (zh) * 2014-01-09 2016-11-30 桑迪士克科技有限责任公司 用于裸芯上缓冲式非易失性存储器的选择性回拷
US9811457B2 (en) * 2014-01-16 2017-11-07 Pure Storage, Inc. Data placement based on data retention in a tiered storage device system
US20160093397A1 (en) * 2014-09-30 2016-03-31 Emc Corporation Method and system for improving flash storage utilization using read-threshold tables
US9547440B2 (en) * 2014-11-07 2017-01-17 International Business Machines Corporation Managing a set of blocks in a storage system
US9852799B2 (en) * 2014-11-19 2017-12-26 Sandisk Technologies Llc Configuration parameter management for non-volatile data storage
US9916237B2 (en) * 2014-12-12 2018-03-13 Sandisk Technologies Llc Model based configuration parameter management
US10048898B2 (en) * 2015-06-15 2018-08-14 Sandisk Technologies Llc Data retention in a memory block based on local heating
US20170062023A1 (en) * 2015-08-26 2017-03-02 Intel Corporation Systems and methods to rejuvenate nonvolatile memory using timestamps
KR102529696B1 (ko) * 2016-07-14 2023-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10255179B2 (en) * 2016-12-30 2019-04-09 Western Digital Technologies, Inc. Garbage collection read throttling
US10824376B2 (en) * 2017-12-08 2020-11-03 Sandisk Technologies Llc Microcontroller architecture for non-volatile memory

Also Published As

Publication number Publication date
JP7235226B2 (ja) 2023-03-08
CN110045915A (zh) 2019-07-23
US11099760B2 (en) 2021-08-24
JP2019106174A (ja) 2019-06-27
US20190034114A1 (en) 2019-01-31
DE102018128601A1 (de) 2019-06-19

Similar Documents

Publication Publication Date Title
US11099760B2 (en) Background data refresh using a system timestamp in storage devices
US11789880B2 (en) Load reduced nonvolatile memory interface
CN108604456B (zh) 在存储器插槽中支持多个存储器类型
CN107408099B (zh) 基于检测传感器数据的阻抗补偿
TWI721003B (zh) 記憶體裝置及用於記憶體管理的系統
US11709623B2 (en) NAND-based storage device with partitioned nonvolatile write buffer
US20180004659A1 (en) Cribbing cache implementing highly compressible data indication
TWI718213B (zh) 彈性dll(延遲鎖定迴路)校準技術
EP3161622B1 (en) Accelerating boot time zeroing of memory based on non-volatile memory (nvm) technology
US10599206B2 (en) Techniques to change a mode of operation for a memory device
KR20170052576A (ko) 메모리와 호스트 시스템 간의 ecc 메타데이터 교환
WO2014085268A1 (en) Apparatus, method and system for memory device access with a multi-cycle command
KR20210118727A (ko) 행 주소 지정 및 열 주소 지정이 가능한 메모리의 동적 데이터에 대한 에러 정정
EP3836145A1 (en) System approach to reduce stable threshold voltage (vt) read disturb degradation
US11500446B2 (en) Reducing power consumption in nonvolatile memory due to standby leakage current
EP4020220A1 (en) Utilizing nand buffer for dram-less multilevel cell programming
CN115203080A (zh) 避免在低功率下存取相干存储器设备时处理器停止
US20220083280A1 (en) Method and apparatus to reduce latency for random read workloads in a solid state drive

Legal Events

Date Code Title Description
E902 Notification of reason for refusal