KR20200089770A - 저장 기록 명령에 기록 스트림 속성 활용 - Google Patents

저장 기록 명령에 기록 스트림 속성 활용 Download PDF

Info

Publication number
KR20200089770A
KR20200089770A KR1020207020753A KR20207020753A KR20200089770A KR 20200089770 A KR20200089770 A KR 20200089770A KR 1020207020753 A KR1020207020753 A KR 1020207020753A KR 20207020753 A KR20207020753 A KR 20207020753A KR 20200089770 A KR20200089770 A KR 20200089770A
Authority
KR
South Korea
Prior art keywords
data
data item
data stream
stream
identifier
Prior art date
Application number
KR1020207020753A
Other languages
English (en)
Other versions
KR102411400B1 (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 KR20200089770A publication Critical patent/KR20200089770A/ko
Application granted granted Critical
Publication of KR102411400B1 publication Critical patent/KR102411400B1/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1096Write circuits, e.g. I/O line write drivers
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 스트림 속성에 기초하여 저장 동작 파라미터를 결정하는 예시적인 방법은 : 제어기에 의해, 데이터 아이템 및 데이터 아이템을 포함하는 데이터 스트림의 식별자를 특정하는 기록 명령을 수신하는 단계, 데이터 스트림의 식별자의 일부는 데이터 스트림에 의해 포함된 데이터 아이템에 의해 공유된 데이터 속성을 인코딩하고; 데이터 속성을 사용하여 저장 동작 파라미터를 결정하는 단계; 및 데이터 아이템 및 저장 동작 파라미터를 특정하는 명령을 메모리 디바이스로 송신하는 단계를 포함한다.

Description

저장 기록 명령에 기록 스트림 속성 활용
본 개시는 전반적으로 저장 디바이스에 관한 것이고, 보다 구체적으로, 저장 기록 명령에서 기록 스트림 속성(write stream attribute)을 특정하고 활용하는 것에 관한 것이다.
솔리드 스테이트 드라이브(SSD : solid-state derive)와 같은 저장 디바이스는 하나 이상의 비 휘발성 메모리 디바이스를 포함할 수 있다. SSD는 메모리 디바이스들 상의 데이터 할당을 관리하고, 저장 디바이스들과 호스트 컴퓨터 시스템 사이의 인터페이스를 제공할 수 있는 제어기를 더 포함할 수 있다.
본 개시는 이하에 제공된 상세한 설명 및 본 개시의 다양한 구현의 첨부 도면으로부터 보다 완전하게 이해될 것이다.
도 1은 본 개시의 하나 이상의 양태에 따라 동작하는 예시적인 컴퓨팅 환경을 개략적으로 예시한다.
도 2는 본 개시의 하나 이상의 양태에 따라 하나 이상의 저장 디바이스를 관리하는 저장 디바이스 제어기와 통신하는 호스트 시스템에 의해 구현될 수 있는 프로그래밍 모델을 개략적으로 예시한다.
도 3은 본 개시의 하나 이상의 양태에 따라 예시적인 기록 스트림 명령의 구조를 개략적으로 예시한다.
도 4는 본 개시의 하나 이상의 양태에 따라 동작하는 저장 디바이스 제어기에 의해 구현되는 예시적인 데이터 배치 전략(data placement strategy)을 개략적으로 예시한다.
도 5는 본 개시의 하나 이상의 양태에 따라 데이터 스트림 속성에 기초하여 저장 동작 파라미터를 결정하는 예시적인 방법(500)의 흐름도이다.
도 6은 본 개시의 하나 이상의 양태에 따라 스트림 기록 명령의 데이터 스트림 식별자 필드 내에 데이터 스트림 속성을 제공하는 예시적인 방법(600)의 흐름도이다.
도 7은 본 개시의 하나 이상의 양태에 따라 동작하는 예시적인 저장 디바이스 제어기의 블록도이다.
도 8은 본 개시의 구현들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도를 개략적으로 예시한다.
본 개시의 양태는 호스트 시스템에 의해 저장 디바이스 제어기로 송신되는 저장 기록 명령에서 기록 스트림 속성을 특정하고 활용하는 것에 관한 것이다. 호스트 시스템은 저장 디바이스에 기록될 데이터를 몇몇의 데이터 스트림으로 그룹화하여, 각각의 데이터 스트림이 동일한 관련 데이터 그룹에 속하는 데이터 아이템(data item) (예를 들어, 단일 데이터 구조와 관련된 데이터, 예컨대, 파일 또는 데이터베이스)을 함유하도록 할 것이다. 따라서, 단일 데이터 스트림에 의해 함유된 데이터 아이템은 예상된 미디어 사용 패턴, 예를 들어, 예상된 체류 시간(retention time) ("스트림 온도(stream temperature)"로도 지칭됨) 또는 워크로드 유형(workload type)을 반영하는 하나 이상의 속성을 공유할 수 있다. 특정 구현예들에서, 데이터 스트림은 호스트 시스템에 의해 저장 디바이스 제어기로 송신되는 각각의 기록 명령의 전용 필드에 의해 식별될 수 있다. 저장 디바이스 제어기는 예를 들어, 동일한 데이터 스트림의 데이터 아이템들을 저장 매체의 연접 섹션(contiguous section)에 배치함으로써 저장 매체(예를 들어, NAND(negative-and) 플래시 메모리)의 사용을 최적화하기 위해 스트림 식별 정보를 활용할 수 있다.
본 개시의 하나 이상의 양태에 따라 기록 명령의 스트림 식별자 필드의 하나 이상의 비트는 데이터 스트림의 데이터 아이템에 의해 공유되는 하나 이상의 데이터 속성을 특정하기 위해 활용될 수 있다. 따라서, 호스트 시스템에 의해 저장 디바이스 제어기에 송신된 각각의 기록 명령은 스트림을 식별할 뿐만 아니라 데이터 스트림의 데이터 아이템에 의해 공유되는 데이터 속성을 나타낼 수 있다. 저장 디바이스 제어기는 예를 들어, 하나 이상의 데이터 속성을 공유하는 둘 이상의 데이터 스트림의 데이터 아이템을 저장 매체의 동일하거나 또는 물리적으로 근접한 섹션에 배치함으로써, 및/또는 실질적으로 다른 데이터 속성을 갖는 2 개 이상의 데이터 스트림을 저장 매체의 동일하거나 또는 물리적으로 근접한 섹션에 배치를 피함으로써 저장 시스템의 사용을 추가로 최적화하기 위해 데이터 속성에 의해 강화된 스트림 식별 정보를 활용할 수 있다. 이러한 배치 전략은 이하에 보다 상세히 설명되는 바와 같이 저장 매체의 내구성을 최대화하기 위해 매체에 걸쳐 프로그래밍 및 소거 사이클을 균일하게 분배하는 것에 관한 것일 수 있다.
따라서, 본 개시의 양태는 저장 매체의 사용을 추가로 최적화하기 위해 데이터 스트림 속성으로 각각의 기록 명령을 향상시킴으로써 저장 디바이스 및 시스템의 다양한 일반적인 구현에 비해 현저한 개선을 나타낸다. 상기 참조된 방법 및 시스템의 다양한 양태는 제한적인 것이 아니라 예시적인 방식으로 이하에 상세히 설명된다.
도 1은 본 개시의 하나 이상의 양태에 따라 동작하는 예시적인 컴퓨팅 환경(100)을 개략적으로 예시한다. 일반적으로, 컴퓨팅 환경(100)은 저장 디바이스(110)를 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 저장 디바이스(110)에 데이터를 기록하고 저장 디바이스(110)로부터 데이터를 판독할 수 있다. 호스트 시스템(120)은 예컨대, 데스크톱 컴퓨터, 랩톱 컴퓨터, 네트워크 서버, 모바일 디바이스 또는 메모리 및 프로세싱 디바이스를 포함하는 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스일 수 있다. 호스트 시스템(120)은 저장 디바이스(110)를 포함하거나 이에 결합되어 호스트 시스템(120)은 저장 디바이스(110)로부터 데이터를 판독하거나 거기에 데이터를 기록할 수 있다. 예를 들어, 호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 저장 디바이스(110)에 결합될 수 있다. 물리적 호스트 인터페이스의 예로는 SATA(Serial Advanced Technology Attachment) 인터페이스, PCI(Peripheral Component Interconnect Express) 인터페이스, USB(Universal Serial Bus) 인터페이스, NVMe(NVM Express), 파어버 채널(Fibre Channel), 시리얼 부착된 SCSI(SAS) 등을 포함하지만, 이것에 한정되지는 않는다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 저장 디바이스(110) 사이에서 데이터를 송신하는데 사용될 수 있다. 예시적인 예에서, 호스트 시스템(120)은 도 8의 컴퓨터 시스템(800)에 의해 표현될 수 있다.
도 1에 도시된 바와 같이, 저장 디바이스(110)는 제어기(111) 및 저장 매체 예컨대, 메모리 디바이스(112A 내지 112N)를 포함할 수 있다. 특정 구현들에서, 메모리 디바이스들(112A 내지 112N)은 NAND 플래시 메모리와 같은 비 휘발성 메모리 디바이스들에 의해 제공될 수 있다. 메모리 디바이스들(112A 내지 112N) 각각은 단일 레벨 셀(SLC), 멀티 레벨 셀(MLC) 또는 쿼드 레벨 셀(QLC)과 같은 하나 이상의 메모리 셀 어레이를 포함할 수 있다. 메모리 셀들 각각은 호스트 시스템(120)에 의해 사용되는 데이터 비트들(예를 들어, 데이터 블록들)을 저장할 수 있다. NAND 플래시 메모리와 같은 비 휘발성 메모리 디바이스들이 설명되었지만, 메모리 디바이스들(112A 내지 112N)은 임의의 다른 유형의 메모리에 기반될 수 있다. 예를 들어, 메모리 디바이스들(112A 내지 112N)은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 상 변화 메모리(PCM), MRAM(Magneto Random Access Memory), NOR(Negative-or) 플래시 메모리 및 EEPROM(Electrically Erasable Programmable Read-Only Memory)에 의해 제공될 수 있다. 더욱이, 메모리 디바이스들(112A 내지 112N)의 메모리 셀들은 데이터를 저장하는데 사용되는 메모리 디바이스의 유닛을 지칭할 수 있는 메모리 페이지 또는 데이터 블록으로 그룹화될 수 있다.
제어기(111)는 메모리 디바이스들(112A 내지 112N)과 통신하여 메모리 디바이스들(112A-112N)로부터 데이터를 판독하거나 거기에 데이터를 기록하는 것을 포함하는 동작들을 수행할 수 있다. 제어기(111)는 하나 이상의 집적 회로, 펌웨어 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 동작에서, 제어기(111)는 호스트 시스템(120)으로부터 명령 또는 동작을 수신할 수 있고, 명령 또는 동작을 지시 또는 적절한 명령으로 변환하여 메모리 디바이스(112A-112N)에 대한 원하는 액세스를 달성할 수 있다. 제어기(111)는 다른 동작 예컨대, 마모 레벨링(wear leveling), 가비지 컬렉션, 에러 검출 및 ECC(error-correcting code), 암호화, 캐싱 및 메모리 디바이스들(112A-112N)과 관련된 로직 블록 어드레스와 물리적 블록 어드레스 간의 어드레스 변환과 같은 다른 동작을 담당할 수 있다.
본 개시의 시스템 및 방법을 구현하기 위해, 제어기(111)는 착신 데이터를 메모리 디바이스(112A-112N)의 특정 위치에 할당하는데 활용될 수 있는 데이터 할당 기능 컴포넌트(115)를 포함할 수 있다. 컴포넌트 특정은 순전히 기능적인 특성이고, 즉, 데이터 할당 컴포넌트의 기능은 이하에서 더 상세히 설명되는 바와 같이 제어기(111)의 하나 이상의 하드웨어 컴포넌트 및/또는 펌웨어 모듈에 의해 구현될 수 있음에 유의해야 한다. 저장 디바이스(110)는 명확성 및 간결성을 위해 도 1에서 생략된 추가 회로 또는 컴포넌트를 포함할 수 있다.
도 2는 본 개시의 하나 이상의 양태에 따라 하나 이상의 메모리 디바이스(112A-112N)를 관리하는 저장 디바이스 제어기(111)와 통신하는 호스트 시스템(120)에 의해 구현될 수 있는 프로그래밍 모델을 개략적으로 예시한다. 도 2에 의해 개략적으로 도시된 바와 같이, 호스트 시스템은 하나 이상의 애플리케이션(210A-210B)을 실행할 수 있다. 예시적인 예에서, 애플리케이션(210A)은 파일 시스템 드라이버(220)와 통신할 수 있으며, 이는 호스트 시스템(120)의 커널 스페이스에서 실행될 수 있고, 호스트 시스템(120)의 사용자 스페이스에서 실행되는 애플리케이션(210A)을 포함하는 하나 이상의 애플리케이션(210)에 의해 개시되는 특정 시스템 호출(call), 예컨대, 판독 및 기록 호출을 프로세싱하기 위해 사용될 수 있다. 파일 시스템 드라이버(220)는 애플리케이션(210A)에 의해 발행된 판독, 기록 및 다른 시스템 호출을 저장 드라이버(230)에 대한 저 레벨 애플리케이션 프로그래밍 인터페이스(API) 호출로 변환하기 위해 사용될 수 있고, 이는 결국 하나 이상의 메모리 디바이스(112A-112N)를 제어하는 디바이스 제어기(111)와 통신할 수 있다. 저장 드라이버(230)는 호스트 시스템의 커널 모드에서 실행 중일 수 있으며, 파일 시스템 드라이버(220)에 의해 발행된 API 호출 및/또는 애플리케이션(210B)에 의해 발행된 시스템 호출을 하나 이상의 메모리 디바이스들(112A-112N)을 관리하는 저장 디바이스 제어기(111)에 의해 프로세싱될 저장 인터페이스 명령으로 프로세싱하는데 사용될 수 있다.
예시적인 예에서, 저장 드라이버(230)는 블록 저장 모델을 구현할 수 있으며, 여기서 데이터는 하나 이상의 미리 정의된 크기의 블록으로 그룹화되고, 블록 번호에 의해 자체 어드레스를 가질 수 있다(addressable). 블록 저장 모델은 데이터의 블록을 저장 및 검색하기 위한 "판독” 및 "기록" 명령을 구현할 수 있다. 예시적인 예에서, 저장 드라이버(230)는 키-값 저장 모델을 구현할 수 있으며, 여기서 데이터는 키-값 쌍(key-value pair)의 "값" 컴포넌트로 표현되고 키-값 쌍의 "키" 컴포넌트에 의해 자체 어드레스를 가질 수 있다. 키 값 저장 모델은 기능적으로 블록 저장 모델의 "기록” 및 "판독" 명령과 유사한 "풋 앤드 겟(put and get)" 명령을 구현할 수 있다. 따라서, 본 출원에서 사용되는 용어 "데이터 아이템(data item)"은 데이터 블록 또는 키-값 쌍을 지칭할 수 있다.
호스트 시스템(120)에 의해 실행되는 애플리케이션(210A-210B) 및/또는 저장 드라이버(230)는 메모리 디바이스들(112)에 기록될 데이터를 몇몇 데이터 스트림으로 그룹화할 수 있어서 동일한 데이터 스트림에 속하는 데이터 아이템들은 하나 이상의 속성을 공유할 것이다. 예시적인 예에서, 데이터 속성은 데이터 스트림의 예상 체류 시간("스트림 온도(stream temperature)"로도 지칭됨)을 반영할 수 있어서, "핫(hot)" 데이터 스트림은 비교적 짧은 시간 기간 (예를 들어, 미리 정의된 낮은 임계값 아래로 떨어지는 시간 기간) 내에 덮어 쓰여지는 것(overwritten)이 가능한 숏-리빙(short-living) 데이터 아이템을 포함할 것이고, 반면 "콜드(cold)" 데이터 스트림은 비교적 긴 시간 기간 (예를 들어, 미리 정의된 높은 임계값을 초과하는 시간 기간) 동안 덮어 쓰여지는 것이 불가능한 정적 데이터 아이템을 포함한다. 예시적인 예에서, 데이터 스트림 온도는 데이터 스트림을 생성하는 애플리케이션(210)에 의해 저장 드라이버(230)에 전달될 수 있으며, 따라서, 추정하여 예상되는 체류 시간(retention time)을 알 수 있다. 데이터 스트림 온도는 예를 들어, IOCTL(Input/Output Control) 시스템 호출을 통해 저장 드라이버(230)에 전달될 수 있다. 대안적으로, 데이터 스트림 온도는 메모리 디바이스(112A-112N)에 기록될 착신 데이터를 버퍼링할 수 있는 저장 드라이버(230)에 의해 결정될 수 있고, 메모리 디바이스들(112A-112N)에 기록될 하나 이상의 데이터 아이템들에 관한 애플리케이션(210)에 의해 요청된 덮어 쓰기(overwrite) 동작의 평균 빈도(average frequency)에 기초하여 스트림 온도를 추정할 수 있다. 저장 드라이버(230)는 그런 다음 저장 디바이스(110)에 기록될 버퍼링된 데이터를 2개 이상의 데이터 스트림으로 그룹화할 수 있고, 이하에 보다 상세히 설명되는 바와 같이 저장 디바이스 제어기(111)에 데이터 스트림 온도를 나타내는 스트림 기록 명령을 발행할 수 있다.
다른 예시적인 예에서, 데이터 속성은 데이터 스트림의 워크로드 유형, 예를 들어, 데이터가 하나 이상의 데이터베이스 및/또는 파일 시스템과 관련된 로깅 데이터를 나타내는 "로그 데이터(log date)" 속성 또는 데이터가 다른(데이터베이스 또는 파일 시스템 로그와 관련되지 않은) 유형의 데이터를 나타내는 것을 표시하는 "사용자 데이터(user data)" 속성을 반영할 수 있다. 데이터 스트림 워크로드 유형은 데이터 스트림을 생성하는 애플리케이션(210)에 의해 저장 드라이버(230)에 전달될 수 있고 따라서, 추정하여 그것의 워크로드 유형을 알 수 있다. 데이터 스트림 워크로드 유형은, 예를 들어, IOCTL(Input/Output Control) 시스템 호출을 통해 저장 드라이버(230)에 전달될 수 있다. 저장 드라이버는 "로그 데이터" 속성으로 라벨링된 데이터를 하나 이상의 데이터 스트림으로 그룹화할 수 있고, 이하에서 본 출원에 더 상세히 설명되는 바와 같이, 워크로드 유형을 나타내는 스트림 기록 명령을 저장 디바이스 제어기(111)에 발행할 수 있다.
특정 구현들에서, 데이터 스트림은 호스트 시스템에 의해 저장 디바이스 제어기로 송신되는 각각의 기록 명령의 전용 필드(dedicated field)에 의해 식별될 수 있다. 도 3은 본 개시의 하나 이상의 양태에 따라 예시적인 기록 스트림 명령의 구조를 개략적으로 예시한다. 기록 스트림 명령(300)은 다른 필드들 중에서 명령 유형(예를 들어, 기록 스트림 명령)을 특정하는 동작 코드 필드(operation code field)(310)를 포함할 수 있다. 기록 스트림 명령(300)은 명령의 하나 이상의 파라미터를 특정하는 플래그 필드(flag field)(320)를 더 포함할 수 있다. 기록 스트림 명령(300)은 저장 디바이스에 저장된 데이터의 LBA를 특정하는 LBA(Logical Block Address) 필드(330)를 더 포함할 수 있다. 기록 스트림 명령(300)은 비트 스트링(bit string)로 표현된 스트림 식별자 필드(340)를 더 포함할 수 있으며, 이는 부호 없는(unsigned) 정수 값으로 해석될 수 있다. 스트림 식별자 필드(340)의 하나 이상의 비트(예컨대, 하나 이상의 최상위 비트 그룹 또는 하나 이상의 최하위 비트 그룹)는 데이터 스트림의 데이터 아이템에 의해 공유되는 하나 이상의 데이터 스트림 속성(350)을 특정하기 위해 활용될 수 있다. 데이터 스트림 예시적인 예에서, 스트림 식별자 필드(340)의 하나 이상의 비트는 데이터 스트림 온도를 특정하는데 활용될 수 있다 (예를 들어, 콜드 스트림(cold stream)을 나타내는 "0” 및 핫 스트림(hot stream)을 나타내는 "1", 또는 알 수 없는 스트림을 나타내는 "00", 콜드 스트림을 나타내는 "01", 중간 스트림 온도(medium stream temperature)를 나타내는 "10" 및 핫 스트림을 나타내는 "11"). 예시적인 예에서, 스트림 식별자 필드(340)의 하나 이상의 비트는 데이터 스트림의 워크로드 유형을 스트림을 특정하기 위해 활용될 수 있다(예를 들어, "로그 데이터" 워크로드 유형을 나타내는 "1” 및 "사용자 데이터" 워크로드 유형을 나타내는 "0"). 기록 스트림 명령(300)은 명확성 및 간결성을 위해 도 3에서 생략된 다양한 다른 필드들을 포함할 수 있다.
따라서, 호스트 시스템에 의해 저장 디바이스 제어기에 송신된 각각의 기록 명령은 스트림을 식별할 뿐만 아니라 데이터 스트림의 데이터 아이템에 의해 공유되는 데이터 속성을 나타낼 수 있다. 저장 디바이스 제어기는 저장 매체의 사용을 최적화할 저장 동작 파라미터(예를 들어, 저장 매체상의 데이터 배치를 정의하는 하나 이상의 파라미터)를 결정하기 위해 데이터 속성에 의해 강화된 스트림 식별 정보를 활용할 수 있다. 저장 디바이스 제어기는 프로그래밍 및 소거 사이클을 매체에 걸쳐 균일하게 분배하는 것에 관한 하나 이상의 마모 레벨링 방법(wear leveling method)을 구현할 수 있다. 저장 디바이스 제어기에 의해 구현된 마모 레벨링 방법은 "핫" 데이터를 비교적 심한 마모(heavy wear)를 경험한 물리적 블록에 배치하는 것을 피하는 단계를 수반할 수 있다. 저장 디바이스 제어기는 적은 횟수의 프로그래밍/소거 사이클 횟수를 경험한 블록으로부터 더 심한 마모 블록으로 적어도 특정 시간 기간(예를 들어, 특정 임계값을 초과하는 시간 기간)동안 수정되지 않은 데이터를 이동시키거나 및/또는 "콜드(cold)" 데이터를 배치할 수 있다. 이 전략은 "핫" 데이터에 대한 저 마모(low-worn) 블록을 제거하는 동시에 고 마모(heavily-worn) 블록의 예상 마모를 줄인다.
예시적인 예에서, 하나의 데이터 스트림의 하나 이상의 데이터 아이템을 소거하는 것은 저장 매체의 동일하거나 물리적으로 근접한 섹션 내에 저장된 하나 이상의 데이터 아이템을 소거하는 것을 요구할 수 있다. 따라서, 저장 매체의 동일하거나 물리적으로 근접한 섹션 내에 실질적으로 상이한 예상 체류 시간을 갖는 데이터 스트림을 배치하는 것은 저장 매체 상의 제어기에 의해 수행될 과잉 수의 프로그래밍 및 소거 사이클을 초래할 수 있다. 반대로, 저장 매체의 동일하거나 물리적으로 근접한 섹션 내에 유사한 예상 체류 시간을 갖는 데이터 스트림을 배치하는 것은 저장 매체 상의 제어기에 의해 수행될 프로그래밍 및 소거 사이클의 수를 감소시킬 수 있다. 따라서, 본 개시의 하나 이상의 양태들에서 동작하는 저장 디바이스 제어기는 저장 매체의 내구성을 최대화하기 위해 매체에 걸쳐 프로그래밍 및 소거 사이클을 균일하게 분배하는 것에 관한 데이터 배치 전략(data placement strategy)을 구현할 수 있다.
도 4는 본 개시의 하나 이상의 양태에 따라 동작하는 저장 디바이스 제어기에 의해 구현되는 예시적인 데이터 배치 전략을 개략적으로 예시한다. 예시적인 예에서, 저장 디바이스 제어기는 하나 이상의 데이터 속성(예컨대, 데이터 스트림 온도 및/또는 데이터 스트림 워크로드 유형)을 공유하는 2 개 이상의 데이터 스트림의 데이터 아이템을 저장 매체의 동일하거나 물리적으로 근접한 섹션에 배치할 수 있다. 예시적인 예에서, "저장 매체의 섹션(section of the storage media)"은 예컨대, NAND 유형 플래시 메모리의 단일 레벨 셀(SLC), 멀티 레벨 셀(MLC) 또는 쿼드 레벨 셀(QLC)과 같은 하나 이상의 메모리 셀 그룹으로 표현될 수 있다. 다른 예시적인 예에서, "저장 매체의 섹션"은 동일한 신호(예를 들어, 워드 라인 또는 비트 라인)에 의해 자체 어드레스를 가질 수 있는(addressable) 메모리 유닛의 그룹으로 표현될 수 있다.
도 4에 도시된 바와 같이, 데이터 아이템들(410A-410N 및 420A-420K)을 포함하는 데이터 스트림들(410 및 420)은 개별적으로, 스트림 온도(412)(예를 들어, "핫"을 표시하는 "H")를 공유할 수 있다. 따라서, 저장 디바이스 제어기는 예를 들어, 데이터 아이템들(410A, 410B 및 420A)를 포함하는 데이터 스트림들(410 및 420)의 데이터 아이템들을 저장 매체(400)의 동일한 섹션(450A)에 배치하기 위해 하나 이상의 디바이스 레벨 명령들을 데이터 저장 디바이스들에 발행할 수 있다.
다른 예시적인 예에서, 저장 디바이스 제어기는 실질적으로 상이한 데이터 속성(예를 들어, 데이터 스트림 온도 및/또는 데이터 스트림 워크로드 유형)을 갖는 2 개 이상의 데이터 스트림을 저장 매체의 동일하거나 물리적으로 근접한 섹션에 배치하는 것을 피할 수 있다. 도 4에 도시된 바와 같이, 데이터 아이템들(430A-430M)을 포함하는 데이터 스트림(430)은 데이터 스트림들(410 및 420)에 의해 공유되는 스트림 온도(412)와는 다른 스트림 온도(432)(예를 들어, "콜드(cold)"를 나타내는 "C")를 가질 수 있다. 따라서, 저장 디바이스 제어기는 예를 들어, 데이터 아이템들(430A, 430B 및 430C)를 포함하는 데이터 스트림(430)의 데이터 아이템들을 저장 매체(400)의 섹션(450B)에 배치하기 위해 하나 이상의 디바이스 레벨 명령들을 데이터 저장 디바이스들에 발행할 수 있다.
도 5는 본 개시의 하나 이상의 양태에 따라 데이터 스트림 속성에 기초하여 저장 동작 파라미터를 결정하는 예시적인 방법(500)의 흐름도이다. 방법(500)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그램 가능한 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운용 또는 실행되는 명령) 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시예에서, 방법(500)은 도 1의 저장 디바이스 제어기(111)에 의해 수행될 수 있다.
도 5에 도시된 바와 같이, 블록(510)에서, 방법을 구현하는 프로세싱 로직은 호스트 시스템으로부터 저장 디바이스 제어기에 의해 관리되는 메모리 디바이스에 기록될 데이터 아이템을 특정하는 기록 명령을 수신할 수 있다. 기록 명령은 기록 명령이 속하는 데이터 스트림의 식별자(identifier)를 추가로 지정할 수 있다. 예시적인 예에서, 데이터 스트림의 식별자는 부호 없는 정수 값에 의해 제공된다. 데이터 스트림의 식별자의 일부는 데이터 스트림의 데이터 아이템에 의해 공유되는 하나 이상의 데이터 속성을 인코딩할 수 있다. 예시적인 예에서, 데이터 속성은 데이터 스트림의 데이터 아이템의 예상 체류 시간을 반영하는 값을 포함할 수 있다. 다른 예시적인 예에서, 데이터 속성은 본 출원에 더 상세히 설명된 바와 같이, 데이터 스트림의 데이터 아이템의 워크로드 유형을 반영하는 값을 포함할 수 있다.
블록(520)에서, 프로세싱 로직은 데이터 스트림에 의해 포함된 데이터 아이템에 의해 공유되는 데이터 속성을 결정하기 위해 데이터 스트림의 식별자를 파싱(parse)할 수 있다. 예시적인 예에서, 데이터 스트림의 식별자를 파싱하는 것은 데이터 스트림 식별자 내의 미리 정의된 위치로부터 시작하여 미리 정의된 크기의 비트 스트링을 식별하는 것을 포함할 수 있다.
블록(530)에서, 프로세싱 로직은 데이터 속성에 기초하여, 예를 들어, 저장 매체에 걸 쳐 프로그래밍 사이클을 균일하게 분배함으로써 저장 매체의 사용을 최적화할 하나 이상의 저장 동작 파라미터(예를 들어, 저장 매체 상의 데이터 배치를 정의하는 하나 이상의 파라미터)를 결정할 수 있다. 예시적인 예에서, 저장 동작 파라미터는 데이터 아이템을 저장하기 위해 활용될 메모리 디바이스의 섹션을 식별할 수 있다. 다른 예시적인 예에서, 식별된 섹션은 물리적으로 근접한 다른 섹션에 위치될 수 있으며, 이는 상기에서 더 상세히 설명된 바와 같이, 저장되는 데이터 아이템과 동일한 속성을 갖는 다른 데이터 스트림을 저장하기 위해 사용된다.
블록(540)에서, 프로세싱 로직은 상기에서 더 상세히 설명된 바와 같이, 데이터 아이템 및 저장 동작 파라미터를 특정하는 명령을 저장 디바이스에 송신할 수 있다.
도 6은 본 개시의 하나 이상의 양태에 따라 스트림 기록 명령의 데이터 스트림 식별자 필드 내에 데이터 스트림 속성을 제공하는 예시적인 방법(600)의 흐름도이다. 방법(600)은 하드웨어(예를 들어, 프로세싱 디바이스, 회로부, 전용 로직, 프로그램 가능한 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 프로세싱 디바이스 상에서 운용 또는 실행되는 명령) 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시예들에서, 방법(600)은 도 1의 호스트 시스템(120)에 의해(예를 들어, 도 2의 저장 드라이버(230)에 의해) 수행될 수 있다.
도 6에 도시된 바와 같이, 블록(610)에서, 방법을 구현하는 프로세싱 로직은 저장 디바이스에 기록될 복수의 데이터 아이템을 수신할 수 있다. 복수의 데이터 아이템은 도 2를 참조하여 상기에서 더 상세히 설명된 바와 같이 호스트 시스템에서 실행되는 애플리케이션에 의해 생성될 수 있다.
블록(620)에서, 프로세싱 로직은 수신된 데이터 아이템을 하나 이상의 데이터 스트림으로 그룹화할 수 있어서 단일 데이터 스트림에 의해 함유된 데이터 아이템은 예상된 매체 사용 패턴, 예를 들어, 예상된 체류 시간("스트림 온도"라고도 함) 또는 워크로드 유형을 반영하는 하나 이상의 속성을 공유할 수 있다. 예시적인 예에서, 프로세싱 로직은 복수의 데이터 아이템 중에서 하나 이상의 데이터 속성을 공유하는 2개 이상의 데이터 아이템을 식별할 수 있다. 데이터 속성 값에 기초하여, 프로세싱 로직은 식별된 데이터 아이템을 새로 생성된 또는 기존 데이터 스트림에 부가할 수 있다. 예시적인 예에서, 데이터 속성은 데이터 스트림의 데이터 아이템의 예상 체류 시간을 반영하는 값을 포함할 수 있다. 다른 예시적인 예에서, 데이터 속성은 상기에서 더 상세히 설명된 바와 같이, 데이터 스트림의 데이터 아이템의 워크로드 유형을 반영하는 값을 포함할 수 있다.
블록(630)에서, 프로세싱 로직은 데이터 속성의 인코딩된 형태를 포함하는 데이터 스트림 식별자를 생성할 수 있다. 예시적인 예에서, 데이터 스트림 식별자는 부호 없는 정수 값에 의해 제공될 수 있으며, 그 중 하나 이상의 비트는 데이터 스트림의 데이터 아이템에 의해 공유되는 데이터 속성을 인코딩하는데 활용될 수 있다. 예시적인 예에서, 데이터 속성들을 인코딩하는 비트 스트링은 미리 정의된 크기를 가질 수 있고, 데이터 스트림 식별자 내의 미리 정의된 위치로부터 시작될 수 있다. 예시적인 예에서, 데이터 속성은 데이터 스트림의 데이터 아이템의 예상 체류 시간을 반영하는 값을 포함할 수 있다. 다른 예시적인 예에서, 데이터 속성은 상기에서 더 상세히 설명된 바와 같이, 데이터 스트림의 데이터 아이템의 워크로드 유형을 반영하는 값을 포함할 수 있다.
블록(640)에서, 프로세싱 로직은 제 1 데이터 아이템 및 제 2 데이터 아이템에 의해 포함된 데이터를 특정하는 하나 이상의 기록 명령을 저장 디바이스의 제어기로 송신할 수 있다. 각각의 기록 명령은 데이터 스트림 식별자를 추가로 특정할 수 있으며, 그 중 리저브드 부분(reserved part)은 데이터 속성을 인코딩한다.
도 7은 도 1의 제어기(111)의 기능을 구현할 수 있는 예시적인 저장 디바이스 제어기(700)의 블록도이다. 도 7에 도시된 바와 같이, 제어기(700)는 물리적 호스트 인터페이스(706)를 통해 호스트 시스템과 인터페이스하는 호스트 인터페이스 회로부(714)를 포함할 수 있다. 호스트 인터페이스 회로부(714)는 호스트 시스템으로부터 수신된 명령을 디바이스 레벨 명령으로 변환하기 위해 활용될 수 있다. 호스트 인터페이스 회로부(714)는 호스트 메모리 변환 회로부(716)와 통신할 수 있으며, 이는 호스트 어드레스를 메모리 디바이스 어드레스로 변환하는데 사용될 수 있다. 예를 들어, 호스트 메모리 변환 회로부(716)는 호스트 시스템 판독 또는 기록 동작에 의해 특정된 로직 블록 어드레스(LBA)를 로직 유닛 번호(LUN)(750)에 의해 식별된 비 휘발성 메모리 유닛으로 보내지는 명령으로 변환할 수 있다. 호스트 메모리 변환 회로부(716)는 호스트 인터페이스 회로(714)로부터 수신된 정보에 기초하여 패리티 정보를 계산할 수 있는 예컨대, XOR(exclusive or) 회로부와 같은 에러 검출/정정 회로부를 포함할 수 있다.
메모리 관리 회로부(718)는 호스트 메모리 변환 회로부(716) 및 스위치(720)에 결합될 수 있다. 메모리 관리 회로부(718)는 초기화, 마모 레벨링, 가비지 컬렉션, 재생 및/또는 에러 검출/정정을 포함하지만 이에 한정되지 않는 다양한 메모리 관리 동작을 제어할 수 있다. 메모리 관리 회로부(718)는 휘발성 메모리(717) 및/또는 LUN(750)에 의해 식별된 비 휘발성 메모리로부터 데이터를 검색하기 위해 사용될 수 있는 블록 관리 회로부(740)를 포함할 수 있다. 예를 들어, 블록 관리 회로부(740)는 정보 예컨대, LUN들(750)의 유효 데이터 블록의 식별, 소거 카운트 및/또는 다른 상태 정보를 검색할 수 있다. 메모리 관리 회로부(718)는 LUN들(750)에 의해 식별된 로직 유닛 상의 특정 위치들에 착신 데이터를 할당하기 위해 활용될 수 있는 데이터 할당 컴포넌트(115)를 더 포함할 수 있다. 컴포넌트 특정은 순전히 기능적 특성, 즉 데이터 할당 컴포넌트의 기능은 전술한 메모리 관리 동작 중 적어도 일부를 구현하기 위해 사용될 수 있는 프로세서(728)와 같은 제어기(700)의 하나 이상의 하드웨어 컴포넌트 및/또는 펌웨어 모듈에 의해 구현될 수 있다는 점에 유의해야 한다.
스위치(720)는 호스트 메모리 변환 회로부(716), 메모리 관리 회로부(718), 비 휘발성 메모리 제어 회로부(722) 및/또는 휘발성 메모리 제어 회로부(724)에 결합될 수 있다. 스위치(720)는 다수의 버퍼를 포함하거나 및/또는 다수의 버퍼에 결합될 수 있다. 예를 들어, 스위치(720)는 내부 정적 랜덤 액세스 메모리(SRAM) 버퍼(ISB)(725)를 포함할 수 있다. 스위치는 휘발성 메모리(717)에 포함된 DRAM 버퍼(727)에 결합될 수 있다. 일부 실시예들에서, 스위치(720)는 제어기(700)의 다양한 컴포넌트들 사이의 인터페이스를 제공할 수 있다.
비 휘발성 메모리 제어 회로부(722)는 수신된 판독 명령에 대응하는 정보를 버퍼들(예를 들어, ISB(725) 또는 버퍼(727)) 중 하나에 저장할 수 있다. 더욱이, 비 휘발성 메모리 제어 회로부(722)는 버퍼들 중 하나로부터 정보를 검색하고 LUN(750)에 의해 식별된 비 휘발성 메모리의 로직 유닛에 정보를 기록할 수 있다. LUN(750)에 의해 식별된 로직 유닛들은 다수의 채널에 의해 비 휘발성 메모리 제어 회로부(722)에 결합될 수 있다. 일부 실시예에서, 다수의 채널들이 비 휘발성 메모리 제어 회로부(722)에 의해 총괄하여 제어될 수 있다. 일부 실시예에서, 각각의 메모리 채널은 이산의 채널 제어 회로부(748)에 결합될 수 있다. 특정 채널 제어 회로부(748)는 단일 채널에 의해 하나 초과의 메모리 유닛(750)에 결합될 수 있다.
비 휘발성 메모리 제어 회로부(722)는 각각의 채널 제어 회로부(748)에 결합된 채널 요청 큐(CRQ : channel request queue)(747)를 포함할 수 있다. 또한, 각각의 채널 제어 회로부(748)는 다수의 메모리 유닛 명령 큐(CQ)(746)에 결합된 메모리 유닛 요청 큐(RQ)(744)를 포함할 수 있다. CRQ(747)은 채널 간에 공유된 명령(예를 들어, 기록 요청 또는 판독 요청)을 저장하도록 구성될 수 있고, RQ(744)는 특정 채널 상의 메모리 유닛(750) 간의 명령을 저장하도록 구성될 수 있고, CQ(746)는 현재 명령 및 현재 명령 다음에 실행될 다음 명령을 큐잉(queue)하도록 구성될 수 있다.
CRQ(747)는 스위치(720)로부터 명령을 수신하고 RQ(744) 중 하나(예를 들어, 해당 명령이 타겟된 LUN(750)에 의해 식별된 특정 로직 유닛과 관련된 채널과 관련된 RQ(744))로 명령을 중계(relay)하도록 구성될 수 있다. RQ(744)는 제 1 수의 명령이 RQ(744)에 의해 수신되었던 순서로 LUN(750)에 의해 식별된 특정 로직 유닛과 관련된 CQ(746)로 특정 메모리 유닛(750)에 대한 제 1 수의 명령을 중계하도록 구성될 수 있다. 명령 파이프 라인은 로직 유닛에 대한 명령이 특정한 순서(예를 들어, RQ(744)에 의해 수신된 순서)로 이동하도록 구성될 수 있다. RQ(744)는 특정 로직 유닛이 가득 찬 것과 관련된 CQ(746)에 응답하여 특정 로직 유닛에 대한 명령을 큐잉하도록 구성될 수 있고, CRQ(747)는 특정 RQ (744)가 가득 찬 것에 응답하여 특정 RQ(744)에 대한 명령을 큐잉하도록 구성될 수 있다.
RQ(744)는 LUN(750)에 의해 식별된 상이한 로직 유닛에 대한 다수의 명령을 로직 유닛의 상태에 따른 순서대로 로직 유닛과 관련된 CQ(746)에 중계할 수 있다. 예를 들어, 로직 준비 상태는 준비(ready)/사용 중 상태(busy state) 일 수 있다. 명령 파이프 라인은 상이한 로직 유닛들 사이의 명령이 순서가 맞지 않게(out of order) 이동할 수 있도록 구성될 수 있다(예를 들어, 해당 시간에 전체 메모리 동작에 효율적인 것에 따라 RQ(744)에 의해 수신된 순서와 상이한 순서로). 예를 들어, RQ(744)는 제 2 CQ(746)와 관련된 상이한 로직 유닛의 상태가 사용 중인 것에 응답하여 제 2 수의 명령으로부터의 제 2 명령을 제 2 CQ(746)로 중계하기 전에 제 2 수의 명령 중 제 1 명령을 제 1 CQ(746)에 중계하도록 구성될 수 있고, 여기서, 제 1 명령은 제 2 명령보다 시간 상 나중에 수신된다. RQ(744)는 제 2 CQ(746)와 관련된 로직 유닛의 상태가 준비되어 있는 것에 응답하여(예를 들어, 제 1 명령을 중계한 후에) 제 2 명령을 제 2 CQ(746)에 중계하도록 구성될 수 있다.
일부 실시예에서, 각각의 채널에 대한 제어 회로들은 각각의 채널 제어 회로(748)에 결합된 이산의 에러 검출/정정 회로부(737)(예를 들어, 에러 정정 코드(ECC) 회로부) 및/또는 하나 초과의 채널과 함께 사용될 수 있는 다수의 에러 검출/정정 회로(737)를 포함할 수 있다. 에러 검출/정정 회로부(737)는 BCH(Bose-Chaudhuri-Hocquenghem) 에러 정정과 같은 에러 정정을 적용하여 LUN(750)에 의해 식별된 로직 유닛에 저장된 정보와 관련된 에러를 검출 및/또는 정정하도록 구성될 수 있다. 에러 검출/정정 회로부(737)는 SLC, MLC 또는 QLC 동작에 대해 상이한 에러 정정 방식을 제공하도록 구성될 수 있다.
도 8은 컴퓨터 시스템이 본 출원에서 논의된 임의의 하나 이상의 방법론을 수행하게 하는 명령의 세트가 실행될 수 있는 예시적인 컴퓨터 시스템(800)을 예시한다. 예시적인 예에서, 컴퓨터 시스템(800)은 도 1의 호스트 시스템(120)의 기능을 구현할 수 있다. 대안적인 구현예에서, 컴퓨터 시스템은 LAN, 인트라넷, 엑스트라넷 및/또는 인터넷의 다른 컴퓨터 시스템에 결합(예를 들어, 네트워크로 결합)될 수 있다. 컴퓨터 시스템은 클라이언트 서버 네트워크 환경의 서버 또는 클라이언트 컴퓨터 시스템의 능력에서, 피어 투 피어(또는 분산) 네트워크 환경의 피어 컴퓨터 시스템 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에 서버 또는 클라이언트 컴퓨터 시스템으로 동작할 수 있다.
컴퓨터 시스템은 퍼스널 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), 개인용 디지털 보조기(PDA), 셀룰러 전화기, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 컴퓨터 시스템이 수행할 액션을 특정하는 일련의 명령(순차적 또는 다른 방식)을 실행할 수 있는 임의의 컴퓨터 시스템일 수 있다. 또한, 단일 컴퓨터 시스템이 예시되어 있지만, "컴퓨터 시스템"이라는 용어는 또한 본 출원에서 논의된 하나 이상의 방법론을 수행하기 위해 명령 세트(또는 복수 세트)를 개별적으로 또는 공동으로 실행하는 컴퓨터 시스템의 임의의 집합을 포함하는 것으로 간주된다.
예시적인 컴퓨터 시스템(800)은 버스(830)를 통해 서로 통신하는 프로세싱 디바이스(802), 메인 메모리(804)(예를 들어, ROM(read-only memory), 플래시 메모리, DRAM(Dynamic Random Access Memory)), 정적 메모리(806)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 디바이스(818)을 포함한다. 예시적인 예에서, 데이터 저장 디바이스(818)은 도 1의 저장 디바이스(110)의 기능을 구현할 수 있다.
프로세싱 디바이스(802)는 마이크로 프로세서, 중앙 프로세싱 유닛 등과 같은 하나 이상의 범용 프로세싱 디바이스를 나타낸다. 보다 구체적으로, 프로세싱 디바이스는 복잡한 명령 세트 컴퓨팅(CISC) 마이크로 프로세서, 축소 명령 세트 컴퓨팅(RISC) 마이크로프로세서, 매우 긴 명령 워드(VLIW) 마이크로 프로세서, 또는 다른 명령 세트를 구현하는 프로세서, 또는 명령 세트의 조합을 구현하는 프로세서일 수 있다. 프로세싱 디바이스(802)는 또한 예컨대, ASIC(application specific integrated circuit), FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 디바이스일 수 있다. 프로세싱 디바이스(802)는 본 출원에서 논의된 동작 및 단계를 수행하기 위한 명령(826)을 실행하도록 구성된다.
컴퓨터 시스템(800)은 네트워크(820)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(808)를 더 포함할 수 있다. 컴퓨터 시스템(800)은 또한 비디오 디스플레이 유닛(810)(예를 들어, 액정 디스플레이(LCD) 또는 음극선 관(CRT)), 알파벳-숫자 입력 디바이스(812)(예를 들어, 키보드), 커서 제어 디바이스(814)(예를 들어, 마우스), 그래픽 프로세싱 유닛(822), 신호 생성 디바이스(816)(예를 들어, 스피커), 그래픽 프로세싱 유닛(822), 비디오 프로세싱 유닛(828) 및 오디오 프로세싱 유닛(832)를 포함할 수 있다.
데이터 저장 디바이스(818)는 본 출원에 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 하나 이상의 명령 또는 소프트웨어(826) 세트가 저장되는 컴퓨터 판독 가능 저장 매체(824)를 포함할 수 있다. 명령들(826)은 컴퓨터 시스템(800)에 의한 그것의 실행 동안에 메인 메모리(804) 내에 및/또는 프로세싱 디바이스(802) 내에 완전히 또는 적어도 부분적으로 또한 상주할 수 있고, 메인 메모리(804) 및 프로세싱 디바이스(802)은 또한 컴퓨터 판독 가능 저장 매체를 구성한다. 컴퓨터 판독 가능 저장 매체(824), 데이터 저장 디바이스(818) 및/또는 메인 메모리(804)는 도 1의 저장 디바이스(110)에 해당할 수 있다.
일 구현예에서, 명령(826)은 데이터 할당 컴포넌트(예를 들어, 도 1의 데이터 할당 컴포넌트(115))에 대응하는 기능을 구현하기 위한 명령을 포함한다. 컴퓨터 판독 가능 저장 매체(824)가 예시적인 구현에서 단일 매체인 것으로 도시되어 있지만, "컴퓨터 판독 가능 저장 매체"라는 용어는 하나 이상의 명령 세트를 저장하는 단일 매체 또는 다중 매체(예를 들어, 중앙 집중식 또는 분산 데이터베이스, 및/또는 관련된 캐시 및 서버)를 포함하는 것으로 간주되어야 한다. "컴퓨터 판독 가능 저장 매체"라는 용어는 또한 컴퓨터에 의해 실행되는 명령 세트를 저장 또는 인코딩할 수 있고 컴퓨터로 하여금 본 개시의 하나 이상의 방법론을 수행하게 하는 임의의 매체를 포함하는 것으로 간주된다. "컴퓨터 판독 가능 저장 매체"라는 용어는 따라서 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하지만 이에 한정되지는 않는다.
전술한 상세한 설명의 일부 부분은 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 알고리즘 및 심벌 표현의 관점에서 제시되었다. 이들 알고리즘 설명 및 표현은 데이터 프로세싱 분야의 당업자가 자신의 작업의 내용을 다른 당업자에게 가장 효과적으로 전달하기 위해 사용되는 방식이다. 여기서 알고리즘은 일반적으로 원하는 결과를 도출하는 자체 일관된 동작 시퀀스 인 것으로 생각된다. 작업은 물리적 수량의 물리적 조작을 요구하는 작업이다. 일반적으로, 반드시 그런 것은 아니지만, 이러한 양은 저장, 결합, 비교 및 달리 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 이들 신호를 비트, 값, 엘리먼트, 심볼, 문자, 용어, 숫자 등으로 지칭하는 것이 주로 일반적인 사용의 이유로 때때로 편리한 것으로 입증되었다.
그러나 이러한 용어 및 유사한 용어는 모두 적절한 물리량과 관련이 있으며 이러한 수량에 적용되는 편리한 라벨링이라는 점을 명심해야 한다. 상기 논의로부터 명백하게 달리 명시되지 않는 한, 설명 전반에 걸쳐, "수신” 또는 "결정” 또는 "송신" 또는 "반영(reflecting)” 또는 "특정(specifying)” 또는 "식별” 또는 "제공" 과 같은 용어를 활용하는 것은 컴퓨터 시스템의 레지스터 및 메모리 내에서 물리적 (전자) 수량으로 표현된 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 그러한 정보 저장 디바이스 내부의 물리적 수량으로 유사하게 표현되는 다른 데이터로 변환 및 조작하는 컴퓨터 시스템, 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스를 언급할 수 있다는 것이 이해된다.
본 개시는 또한 본 출원에서의 동작을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적을 위해 특별히 구성될 수 있거나, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 컴퓨터 판독 가능 저장 매체 예컨대, 한정되는 것은 아니지만, 플로피 디스크, 광 디스크, CD-ROM 및 자기-광학 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령을 저장하기에 적합한 임의의 유형의 매체를 포함하는 임의 유형의 디스크에 저장될 수 있고, 각각은 컴퓨터 시스템 버스에 결합된다.
본 출원에 제시된 알고리즘 및 디스플레이는 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련이 없다. 다양한 범용 시스템이 본 명세서의 교시에 따른 프로그램과 함께 사용될 수 있거나, 방법을 수행하기 위해보다 특화된 디바이스를 구성하는 것이 편리하다는 것이 입증될 수 있다. 다양한 이들 시스템의 구조는 이하의 설명에서 설명될 것이다. 추가하여, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 본 출원에 설명된 바와 같이 본 개시의 교시를 구현하기 위해 다양한 프로그래밍 언어가 사용될 수 있다는 것이 이해될 것이다.
본 개시는 본 개시에 따른 프로세스를 수행하기 위해 컴퓨터 시스템 (또는 다른 전자 디바이스)를 프로그래밍하는데 사용될 수 있는 명령이 그 위에 저장된 컴퓨터 판독 가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 컴퓨터 판독 가능 매체는 기계(예를 들어, 컴퓨터 시스템)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 컴퓨터 판독 가능(예를 들어, 컴퓨터 판독 가능) 매체는 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스 등을 포함한다.
전술한 명세서에서, 본 개시의 구현들은 그것의 특정 예시적인 구현을 참조하여 설명되었다. 이하의 청구 범위에 개시된 본 개시의 구현예들의 넓은 사상 및 범위를 벗어나지 않고 다양한 변형이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 방법에 있어서,
    제어기에 의해, 데이터 아이템(data item) 및 상기 데이터 아이템을 포함하는 데이터 스트림(data stream)의 식별자(identifier)를 특정하는 기록 명령을 수신하는 단계;
    상기 데이터 스트림의 식별자를 파싱(parsing)함으로써, 상기 데이터 스트림에 의해 포함된 데이터 아이템에 의해 공유된 데이터 속성(data attribute)을 결정하는 단계;
    상기 데이터 속성을 사용하여 저장 동작 파라미터를 결정하는 단계; 및
    상기 데이터 아이템 및 상기 저장 동작 파라미터를 특정하는 명령을 메모리 디바이스로 송신하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서, 상기 저장 동작 파라미터는 상기 데이터 아이템을 저장하기 위해 활용될 상기 메모리 디바이스의 섹션을 식별하는, 방법.
  3. 제 1 항에 있어서, 상기 데이터 속성은 상기 데이터 스트림에 의해 포함된 데이터 아이템의 체류 시간(retention time)을 반영하는 값을 포함하는, 방법.
  4. 제 1 항에 있어서, 상기 데이터 속성은 상기 데이터 스트림에 의해 포함된 데이터 아이템의 워크로드 유형(workload type)을 특정하는, 방법.
  5. 제 1 항에 있어서, 상기 데이터 스트림의 식별자를 파싱하는 단계는,
    상기 데이터 스트림의 식별자 내에서 미리 정의된 위치로부터 시작하여 미리 정의된 크기의 비트 스트링(bit string)을 식별하는 단계를 더 포함하는, 방법.
  6. 제 1 항에 있어서, 상기 저장 동작 파라미터를 결정하는 단계는,
    프로그래밍 사이클을 상기 메모리 디바이스의 저장 매체에 걸쳐 균일하게 분배하기 위해, 상기 데이터 아이템을 저장하기 위해 활용될 상기 메모리 디바이스의 섹션을 식별하는 단계를 포함하는, 방법.
  7. 제 1 항에 있어서, 상기 저장 동작 파라미터를 결정하는 단계는,
    상기 메모리 디바이스의 제 2 섹션에 물리적으로 근접하여 상기 데이터 아이템을 저장하는데 활용될 상기 메모리 디바이스의 제 1 섹션을 식별하는 단계로서, 상기 제 2 섹션은 상기 데이터 속성에 의해 특징 지워지는 제 2 데이터 스트림의 하나 이상의 데이터 아이템을 저장하는, 상기 제 1 섹션을 식별하는 단계;를 포함하는, 방법.
  8. 시스템에 있어서,
    메모리 디바이스;
    상기 메모리 디바이스들에 동작 가능하게 결합된 제어기로서, 상기 제어기는,
    데이터 아이템 및 상기 데이터 아이템을 포함하는 데이터 스트림의 식별자를 특정하는 기록 명령을 수신하고;
    데이터 스트림의 식별자를 파싱함으로써, 상기 데이터 스트림에 의해 포함된 데이터 아이템에 의해 공유된 데이터 속성을 결정하고;
    상기 데이터 속성을 사용하여 저장 동작 파라미터를 결정하고; 및
    상기 데이터 아이템 및 상기 저장 동작 파라미터를 특정하는 명령을 메모리 디바이스에 송신하는, 상기 제어기를 포함하는, 시스템.
  9. 제 8 항에 있어서, 상기 저장 동작 파라미터는 상기 데이터 아이템을 저장하기 위해 활용될 상기 메모리 디바이스의 섹션을 식별하는, 시스템.
  10. 제 8 항에 있어서, 상기 데이터 속성은 상기 데이터 스트림에 의해 포함된 데이터 아이템의 체류 시간(retention time)을 반영하는 값을 포함하는, 시스템.
  11. 제 8 항에 있어서, 상기 데이터 속성은 상기 데이터 스트림에 의해 포함된 데이터 아이템의 워크로드 유형(workload type)을 특정하는, 시스템.
  12. 제 8 항에 있어서, 상기 데이터 스트림의 식별자의 일부가 상기 데이터 스트림의 식별자 내에 미리 정의된 위치로부터 시작하는 미리 정의된 크기의 비트 스트링에 의해 제공되는, 시스템.
  13. 제 8 항에 있어서, 상기 저장 동작 파라미터를 결정하는 단계는,
    프로그래밍 사이클을 상기 메모리 디바이스의 저장 매체에 걸쳐 균일하게 분배하기 위해, 상기 데이터 아이템을 저장하기 위해 활용될 상기 메모리 디바이스의 섹션을 식별하는 단계를 포함하는, 시스템.
  14. 제 8 항에 있어서, 상기 저장 동작 파라미터를 결정하는 단계는,
    상기 메모리 디바이스의 제 2 섹션에 물리적으로 근접하여 상기 데이터 아이템을 저장하는데 활용될 상기 메모리 디바이스의 섹션을 식별하는 단계로서, 상기 제 2 섹션은 상기 데이터 속성에 의해 특징 지워지는 제 2 데이터 스트림의 하나 이상의 데이터 아이템을 저장하는, 상기 섹션을 식별하는 단계;를 포함하는, 시스템.
  15. 방법에 있어서,
    저장 디바이스에 기록될 복수의 데이터 아이템을 프로세서에 의해 수신하는 단계;
    상기 복수의 데이터 아이템들 중에서, 데이터 속성을 공유하는 제 1 데이터 아이템 및 제 2 데이터 아이템을 식별하는 단계;
    상기 데이터 속성의 인코딩된 형태를 포함하는 데이터 스트림 식별자를 생성하는 단계; 및
    상기 제 1 데이터 아이템 및 상기 제 2 데이터 아이템에 의해 포함된 데이터를 특정하는 하나 이상의 기록 명령을 상기 저장 디바이스의 제어기로 송신하는 단계로서, 각각의 기록 명령은 상기 데이터 스트림 식별자를 추가로 특정하는, 상기 송신하는 단계를 포함하는, 방법.
  16. 제 15 항에 있어서, 상기 저장 디바이스는 솔리드 스테이트 드라이브(SSD : solid-state derive)인, 방법.
  17. 제 15 항에 있어서, 상기 데이터 속성은 제 1 데이터 아이템과 제 2 데이터 아이템의 체류 시간을 특정하는, 방법.
  18. 제 17 항에 있어서, 상기 제 1 데이터 아이템과 제 2 데이터 아이템을 식별하는 단계는,
    요청된 덮어 쓰기(overwrite) 동작의 평균 빈도(average frequency)에 기초하여 상기 제 1 데이터 아이템 및 상기 제 2 데이터 아이템의 체류 시간을 추정하는 단계를 더 포함하는, 방법.
  19. 제 15 항에 있어서, 상기 데이터 속성은 제 1 데이터 아이템과 제 2 데이터 아이템의 워크로드 유형을 특정하는, 방법.
  20. 제 15 항에 있어서, 상기 데이터 속성의 인코딩된 형태는 상기 데이터 스트림 식별자 내에 미리 정의된 위치로부터 시작하는 미리 정의된 크기의 비트 스트링에 의해 제공되는, 방법.
KR1020207020753A 2017-12-20 2018-12-14 저장 기록 명령에 기록 스트림 속성 활용 KR102411400B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/849,014 US10878859B2 (en) 2017-12-20 2017-12-20 Utilizing write stream attributes in storage write commands
US15/849,014 2017-12-20
PCT/US2018/065813 WO2019125961A1 (en) 2017-12-20 2018-12-14 Utilizing write stream attributes in storage write commands

Publications (2)

Publication Number Publication Date
KR20200089770A true KR20200089770A (ko) 2020-07-27
KR102411400B1 KR102411400B1 (ko) 2022-06-22

Family

ID=66814700

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207020753A KR102411400B1 (ko) 2017-12-20 2018-12-14 저장 기록 명령에 기록 스트림 속성 활용

Country Status (6)

Country Link
US (3) US10878859B2 (ko)
EP (1) EP3729252A4 (ko)
KR (1) KR102411400B1 (ko)
CN (1) CN111512279B (ko)
TW (2) TWI773858B (ko)
WO (1) WO2019125961A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294853B1 (en) * 2017-06-22 2022-04-05 Amazon Technologies, Inc. Archiver for data stream service
US10664268B2 (en) * 2018-10-24 2020-05-26 EMC IP Holding Company LLC Data storage optimization using replication statistics to automatically generate NVMe stream identifiers
US11314446B2 (en) * 2020-06-25 2022-04-26 Micron Technology, Inc. Accelerated read translation path in memory sub-system
EP4180976A4 (en) * 2020-07-31 2023-09-06 Huawei Technologies Co., Ltd. MEMORY PROTECTION METHOD AND PROXY PROTECTION CONTROL DEVICE
US11757468B2 (en) * 2020-09-24 2023-09-12 Sandisk Technologies Llc Soft data compression for non-volatile memory
US11604591B2 (en) * 2020-12-17 2023-03-14 Micron Technology, Inc. Associating data types with stream identifiers for mapping onto sequentially-written memory devices
US20230054002A1 (en) * 2021-08-18 2023-02-23 Samsung Electronics Co., Ltd. Lifecycle-aware persistent storage

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130103891A (ko) * 2012-03-12 2013-09-25 주식회사 포티스 Rc리셋 회로를 이용한 2중 리셋 장치
KR20170017411A (ko) * 2015-08-06 2017-02-15 류연민 눈을 마사지해주는 안구마사지기

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0993143A (ja) * 1995-09-27 1997-04-04 Victor Co Of Japan Ltd 誤り検出符号生成方法及び装置
CN1573806B (zh) 1996-06-28 2013-06-19 索尼株式会社 信息处理装置
KR100214309B1 (ko) 1997-05-09 1999-08-02 윤종용 디지털비디오디스크 재생장치에 있어서 디스크램블링 신뢰도를 향상시키는 방법 및 장치
US6536011B1 (en) 1998-10-22 2003-03-18 Oak Technology, Inc. Enabling accurate demodulation of a DVD bit stream using devices including a SYNC window generator controlled by a read channel bit counter
US7231502B2 (en) 2004-02-04 2007-06-12 Falcon Stor Software, Inc. Method and system for storing data
US8131089B2 (en) 2004-08-31 2012-03-06 France Telecom Visibility data compression/decompression method, compression system and decoder
JP2006085862A (ja) 2004-09-17 2006-03-30 Toshiba Corp 情報記憶媒体、情報記録方法及び装置、情報再生方法及び装置
CA2614602A1 (en) 2005-07-21 2007-03-08 Expway Methods and devices for compressing and decompressing structured documents
JP2007264780A (ja) 2006-03-27 2007-10-11 Seiko Epson Corp データ通信を利用した装置制御
EP2001235B1 (en) 2007-06-08 2013-05-22 Samsung Electronics Co., Ltd. MPEG-4 format extension for recording stereoscopic or synthetic 3D video data with related metadata
US20090012934A1 (en) 2007-07-03 2009-01-08 Corbis Corporation Searching for rights limited media
TWI371691B (en) 2007-12-16 2012-09-01 Infortrend Technology Inc Storage controller for handling data stream and method thereof
EP2263145B1 (en) 2008-02-12 2020-02-05 NetApp, Inc. Hybrid media storage system architecture
WO2010022542A1 (en) 2008-08-28 2010-03-04 Telefonaktiebolaget L M Ericsson (Publ) Recovery of media gateway resources for terminations
US8166264B2 (en) 2009-02-05 2012-04-24 Hitachi, Ltd. Method and apparatus for logical volume management
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US9245653B2 (en) 2010-03-15 2016-01-26 Intelligent Intellectual Property Holdings 2 Llc Reduced level cell mode for non-volatile memory
US8396839B1 (en) * 2010-06-25 2013-03-12 Emc Corporation Representing de-duplicated file data
US8626989B2 (en) * 2011-02-02 2014-01-07 Micron Technology, Inc. Control arrangements and methods for accessing block oriented nonvolatile memory
JP5547154B2 (ja) * 2011-09-21 2014-07-09 株式会社東芝 メモリ・デバイス
US8799559B2 (en) 2011-10-24 2014-08-05 Sandisk Technologies Inc. Endurance enhancement coding of compressible data in flash memories
US10203881B2 (en) 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
KR101997572B1 (ko) 2012-06-01 2019-07-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
US9128820B1 (en) * 2012-06-18 2015-09-08 Western Digital Technologies, Inc. File management among different zones of storage media
US9183218B1 (en) * 2012-06-29 2015-11-10 Emc Corporation Method and system to improve deduplication of structured datasets using hybrid chunking and block header removal
JP2014056445A (ja) * 2012-09-12 2014-03-27 Fujitsu Ltd ストレージ装置、ストレージ制御プログラムおよびストレージ制御方法
US9395924B2 (en) 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
JP6443794B2 (ja) 2013-08-16 2018-12-26 エルエスアイ コーポレーション ホストとコントローラとの間でパーティション化された変換レイヤ
US9478292B2 (en) * 2013-10-27 2016-10-25 Sandisk Technologies Llc Read operation for a non-volatile memory
US10652936B2 (en) 2014-03-21 2020-05-12 Nokia Technologies Oy Short identifiers for device-to-device (D2D) broadcast communications
US9208878B2 (en) * 2014-03-25 2015-12-08 International Business Machines Corporation Non-volatile memory based on retention modulation
US9093160B1 (en) * 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US10228854B2 (en) 2014-08-20 2019-03-12 Sandisk Technologies Llc Storage devices and methods for optimizing use of storage devices based on storage device parsing of file system metadata in host write operations
US9558128B2 (en) 2014-10-27 2017-01-31 Seagate Technology Llc Selective management of security data
US10409526B2 (en) * 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
US9760281B2 (en) 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
US10656838B2 (en) * 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US11461010B2 (en) * 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10509770B2 (en) 2015-07-13 2019-12-17 Samsung Electronics Co., Ltd. Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US10067683B2 (en) 2016-07-19 2018-09-04 Western Digital Technologies, Inc. Systems and methods for classifying data in solid state drives
EP3530018B1 (en) 2016-10-21 2019-12-25 Telefonaktiebolaget LM Ericsson (PUBL) Identifier of variable length for a pool of core network control entities

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130103891A (ko) * 2012-03-12 2013-09-25 주식회사 포티스 Rc리셋 회로를 이용한 2중 리셋 장치
KR20170017411A (ko) * 2015-08-06 2017-02-15 류연민 눈을 마사지해주는 안구마사지기

Also Published As

Publication number Publication date
US20220172754A1 (en) 2022-06-02
US10878859B2 (en) 2020-12-29
KR102411400B1 (ko) 2022-06-22
EP3729252A4 (en) 2021-10-27
WO2019125961A1 (en) 2019-06-27
CN111512279B (zh) 2023-10-20
US20210074337A1 (en) 2021-03-11
EP3729252A1 (en) 2020-10-28
US11574664B2 (en) 2023-02-07
CN111512279A (zh) 2020-08-07
US20190189167A1 (en) 2019-06-20
TW201937488A (zh) 2019-09-16
TW202244920A (zh) 2022-11-16
TWI773858B (zh) 2022-08-11
US11393510B2 (en) 2022-07-19

Similar Documents

Publication Publication Date Title
US20240004587A1 (en) Specifying media type in write commands
KR102411400B1 (ko) 저장 기록 명령에 기록 스트림 속성 활용
US11086554B2 (en) Writing same data on a storage system
US11604749B2 (en) Direct memory access (DMA) commands for noncontiguous source and destination memory addresses
US11995338B2 (en) Performing operation on data blocks concurrently and based on performance rate of another operation on data blocks
US11561902B2 (en) Cache operations in a hybrid dual in-line memory module
US20220413749A1 (en) Operation based on consolidated memory region description data
US20190227743A1 (en) Identifying a read operation for a storage device based on a workload of a host system
US12007898B2 (en) Utilizing a designated memory address to pre-fetch for memory sub-system with cache
US11797183B1 (en) Host assisted application grouping for efficient utilization of device resources
US20230195635A1 (en) Latency reduction using stream cache

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right