KR102398201B1 - 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치 - Google Patents

프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치 Download PDF

Info

Publication number
KR102398201B1
KR102398201B1 KR1020170083817A KR20170083817A KR102398201B1 KR 102398201 B1 KR102398201 B1 KR 102398201B1 KR 1020170083817 A KR1020170083817 A KR 1020170083817A KR 20170083817 A KR20170083817 A KR 20170083817A KR 102398201 B1 KR102398201 B1 KR 102398201B1
Authority
KR
South Korea
Prior art keywords
read
packet
write
data
management circuit
Prior art date
Application number
KR1020170083817A
Other languages
English (en)
Other versions
KR20190003911A (ko
Inventor
김영식
김진우
남희현
양경보
연지승
이영근
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170083817A priority Critical patent/KR102398201B1/ko
Priority to US15/855,840 priority patent/US10789019B2/en
Priority to DE102018110012.4A priority patent/DE102018110012A1/de
Priority to CN201810722287.7A priority patent/CN109213441B/zh
Publication of KR20190003911A publication Critical patent/KR20190003911A/ko
Application granted granted Critical
Publication of KR102398201B1 publication Critical patent/KR102398201B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0638Organizing or formatting or addressing of data
    • 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/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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0653Monitoring storage devices or 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/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/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
    • 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/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • 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/10Address translation
    • 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
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • 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)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 발명은 불휘발성 메모리 및 컨트롤러를 포함하는 스토리지 장치를 제공한다. 컨트롤러는 작업 관리 회로 및 프로세서를 포함한다. 작업 관리 회로는 불휘발성 메모리와 관련되는 제 1 유형의 작업을 관리하고, 프로세서는 불휘발성 메모리와 관련되는 제 2 유형의 작업을 처리한다. 작업 관리 회로는 프로세서의 개입 없이 제 1 유형의 작업을 관리한다. 프로세서는 작업 관리 회로로부터 수신되는 알림에 응답하여 제 2 유형의 작업이 처리되도록 작업 관리 회로로 관리 커맨드를 제공한다. 본 발명은 고성능 및 고효율의 스토리지 장치를 제공한다.

Description

프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치 {STORAGE DEVICE MANAGING SIMPLE JOB WITHOUT INTERVENTION OF PROCESSOR}
본 개시는 전자 장치에 관한 것으로, 좀 더 구체적으로는 데이터를 저장하고 출력하는 스토리지 장치의 구성들 및 동작들에 관한 것이다.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 전자 회로들의 동작들에 따라 고유의 기능을 수행한다. 스토리지 장치는 전자 장치들의 한 예시이다. 스토리지 장치는 데이터를 저장하기 위한 메모리 장치를 포함한다. 메모리 장치는 데이터를 저장하거나 저장된 데이터를 출력하고, 이로써 스토리지 장치는 사용자에게 스토리지 서비스를 제공한다.
한편, 다양한 전자 장치가 많은 사람에 의해 이용되고 데이터의 양이 점점 증가함에 따라, 대용량의 스토리지 장치에 대한 요구 역시 증가하였다. 나아가, 많은 양의 데이터를 빠르게 처리할 수 있는 고성능 및 고효율의 스토리지 장치에 대한 요구 역시 증가하였다.
대부분의 전자 장치는 특정 회로 또는 구성 요소가 전반적인 동작들을 제어하도록 구성되는 중앙 집중식 아키텍처(Centralized Architecture)로 구현된다. 중앙 집중식 아키텍처에서, 전자 장치의 성능은 그 특정 회로 또는 구성 요소의 성능 및 처리량(Throughput)에 의존하여 한정된다. 따라서, 중앙 집중식 아키텍처는 고성능 및 고효율의 전자 장치에 대한 요구를 충족시키기에 적절하지 않게 되었다.
본 개시의 실시 예들은 하드웨어 자동화 아키텍처(Hardware-automated Architecture)로 구현되는 스토리지 장치의 구성들 및 동작들을 제공할 수 있다. 본 개시의 실시 예들에서, 스토리지 장치는 프로세서의 제어에 전적으로 의존하는 대신, 전용(Dedicated) 하드웨어 회로에 의해 단순 작업(Simple Job)들을 관리할 수 있다.
몇몇 실시 예에서, 스토리지 장치는 불휘발성 메모리 및 컨트롤러를 포함할 수 있다. 컨트롤러는 작업 관리 회로 및 프로세서를 포함할 수 있다. 작업 관리 회로는 불휘발성 메모리와 관련되는 제 1 유형의 작업을 관리할 수 있고, 프로세서는 불휘발성 메모리와 관련되는 제 2 유형의 작업을 처리할 수 있다. 작업 관리 회로는 프로세서의 개입 없이 제 1 유형의 작업을 관리할 수 있다. 프로세서는, 작업 관리 회로로부터 수신되는 알림에 응답하여, 제 2 유형의 작업이 처리되도록 작업 관리 회로로 관리 커맨드를 제공할 수 있다.
몇몇 실시 예에서, 스토리지 장치는 불휘발성 메모리 및 컨트롤러를 포함할 수 있다. 컨트롤러는 작업 관리 회로 및 프로세서를 포함할 수 있다. 작업 관리 회로는 불휘발성 메모리와 관련되는 제 1 유형의 작업을 관리할 수 있고, 프로세서는 불휘발성 메모리와 관련되는 제 2 유형의 작업을 처리할 수 있다. 제 1 유형의 작업이 작업 관리 회로에 의해 정상적으로 관리되는 동안, 프로세서는 제 1 유형의 작업에 개입하지 않을 수 있다. 프로세서는, 프로세서가 제 1 유형의 작업에 개입하지 않는 동안 개입 조건이 충족되는 경우에, 제 2 유형의 작업이 처리되도록 관리 커맨드를 출력할 수 있다.
몇몇 실시 예에서, 스토리지 장치는 불휘발성 메모리 및 컨트롤러를 포함할 수 있다. 컨트롤러는 불휘발성 메모리의 동작을 제어할 수 있고, 쓰기 관리 회로, 읽기 관리 회로, 데이터 영역 관리 회로, 및 프로세서를 포함할 수 있다. 쓰기 관리 회로는 쓰기 데이터가 불휘발성 메모리에 저장되도록 제 1 유형의 제 1 작업을 관리할 수 있다. 읽기 관리 회로는 읽기 데이터가 외부로 출력되도록 제 1 유형의 제 2 작업을 관리할 수 있다. 데이터 영역 관리 회로는 제 1 작업 및 제 2 작업을 수행하는 것과 관련하여 불휘발성 메모리, 쓰기 데이터, 및 읽기 데이터 중 적어도 하나의 상태의 정보를 획득할 수 있다. 프로세서는 불휘발성 메모리와 관련되는 제 2 유형의 제 3 작업을 처리할 수 있다. 데이터 영역 관리 회로는 획득되는 정보에 기초하여 프로세서로 알림을 제공할 수 있다. 프로세서는, 알림이 데이터 영역 관리 회로로부터 수신되지 않는 경우에, 제 1 작업 및 제 2 작업에 개입하지 않을 수 있다.
몇몇 실시 예에서, 스토리지 장치는 불휘발성 메모리 및 컨트롤러를 포함할 수 있다. 불휘발성 메모리는 쓰기 데이터를 저장하고 읽기 데이터를 출력할 수 있다. 컨트롤러는 쓰기 데이터를 불휘발성 메모리로 전달하기 위한 제 1 경로, 불휘발성 메모리로부터 출력된 읽기 데이터를 외부로 전달하기 위한 제 2 경로, 및 프로세서를 포함할 수 있다. 제 1 경로를 따라 쓰기 데이터를 불휘발성 메모리로 전달하는 것 또는 제 2 경로를 따라 불휘발성 메모리로부터 출력된 읽기 데이터를 외부로 전달하는 것과 관련하여 오류 또는 예외가 발생하는 경우, 프로세서는 제 1 경로 및 제 2 경로 중 적어도 하나 상에서 수행되는 관리 동작을 지시하는 관리 커맨드를 출력할 수 있다. 오류 또는 예외가 발생하지 않는 경우, 프로세서는 제 1 경로 및 제 2 경로 상에서 수행되는 일반 동작에 개입하지 않을 수 있다.
몇몇 실시 예에서, 스토리지 장치는 불휘발성 메모리, 컨트롤러, 및 버퍼 메모리를 포함할 수 있다. 컨트롤러는 작업 관리 회로 및 프로세서를 포함할 수 있다. 작업 관리 회로는 불휘발성 메모리와 관련되는 제 1 유형의 작업을 관리할 수 있고, 프로세서는 불휘발성 메모리와 관련되는 제 2 유형의 작업을 처리할 수 있다. 버퍼 메모리는 제 1 메타데이터 및 제 2 메타데이터를 저장할 수 있다. 제 1 메타데이터는 제 1 유형의 작업이 작업 관리 회로에 의해 관리되는 때에 생성되거나 참조될 수 있고, 제 2 메타데이터는 제 2 유형의 작업이 프로세서에 의해 처리되는 때에 생성되거나 참조될 수 있다. 프로세서는, 제 1 유형의 작업이 작업 관리 회로에 의해 정상적으로 관리되는 동안 제 1 유형의 작업에 개입하지 않을 수 있다. 프로세서는 작업 관리 회로에 의해 제 1 메타데이터를 버퍼 메모리에 저장하는 것 및 작업 관리 회로에 의해 제 1 메타데이터를 버퍼 메모리로부터 읽는 것에 개입하지 않을 수 있다.
본 개시의 실시 예들에 따르면, 상대적으로 빈번하게 수행되는 단순 작업들이 프로세서의 개입 없이 전용 하드웨어 회로에 의해 관리될 수 있다. 따라서, 스토리지 장치의 성능이 프로세서의 성능 및 버퍼 메모리의 처리량에 의존하지 않을 수 있고, 프로세서 및 버퍼 메모리의 전력 소모 및 발열이 감소할 수 있다. 결과적으로, 본 개시의 실시 예들은 고성능 및 고효율의 스토리지 장치를 제공할 수 있다.
도 1은 몇몇 실시 예에 따른 스토리지 장치를 포함하는 전자 시스템의 예시적인 구성을 보여주는 블록도이다.
도 2는 도 1의 스토리지 장치와 관련되는 예시적인 구성을 보여주는 블록도이다.
도 3 및 도 4는 몇몇 실시 예에 따른 도 2의 스토리지 장치의 예시적인 동작들을 설명하기 위한 블록도들이다.
도 5는 몇몇 실시 예에 따른 도 2의 컨트롤러의 예시적인 구성을 보여주는 블록도이다.
도 6은 몇몇 실시 예에 따른 도 5의 패킷의 예시적인 구성을 보여주는 개념도이다.
도 7 및 도 8은 몇몇 실시 예에 따라 도 2의 스토리지 장치에서 수행되는 예시적인 쓰기 동작을 설명하기 위한 블록도들이다.
도 9는 몇몇 실시 예에 따라 도 2의 스토리지 장치에서 수행되는 예시적인 쓰기 동작을 설명하는 흐름도이다.
도 10 내지 도 12는 몇몇 실시 예에 따라 도 2의 스토리지 장치에서 수행되는 예시적인 읽기 동작을 설명하기 위한 블록도들이다.
도 13은 몇몇 실시 예에 따라 도 2의 스토리지 장치에서 수행되는 예시적인 읽기 동작을 설명하는 흐름도이다.
도 14는 몇몇 실시 예에 따라 도 2의 스토리지 장치에서 수행되는 예시적인 관리 동작을 설명하기 위한 블록도이다.
도 15는 몇몇 실시 예에 따라 도 2의 스토리지 장치에서 수행되는 예시적인 관리 동작을 설명하는 흐름도이다.
도 16은 몇몇 실시 예에 따른 도 2의 스토리지 장치의 전반적인 동작을 설명하는 흐름도이다.
도 17은 도 1의 스토리지 장치와 관련되는 예시적인 구성을 보여주는 블록도이다.
아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)가 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 몇몇 실시 예가 명확하고 상세하게 설명될 것이다.
I. 전반적인 시스템 구성 및 동작
도 1은 몇몇 실시 예에 따른 스토리지 장치(1300)를 포함하는 전자 시스템(1000)의 예시적인 구성을 보여주는 블록도이다.
전자 시스템(1000)은 메인 프로세서(1101), 워킹 메모리(1200), 스토리지 장치(1300), 통신 블록(1400), 유저 인터페이스(1500), 및 버스(1600)를 포함할 수 있다. 예로서, 전자 시스템(1000)은 데스크톱(Desktop) 컴퓨터, 랩톱(Laptop) 컴퓨터, 태블릿(Tablet) 컴퓨터, 스마트폰, 웨어러블(Wearable) 장치, 비디오 게임기(Video Game Console), 워크스테이션(Workstation), 서버(Server), 전기 자동차 등과 같은 전자 장치들 중 하나일 수 있다.
메인 프로세서(1101)는 전자 시스템(1000)의 전반적인 동작들을 제어할 수 있다. 메인 프로세서(1101)는 다양한 종류의 산술 연산들 및/또는 논리 연산들을 처리할 수 있다. 이를 위해, 메인 프로세서(1101)는 전용(Special-purpose) 회로(예컨대, FPGA(Field Programmable Gate Array), ASICs(Application Specific Integrated Circuits) 등)를 포함할 수 있다. 예로서, 메인 프로세서(1101)는 하나 이상의 프로세서 코어를 포함할 수 있고, 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서(Application Processor)로 구현될 수 있다.
워킹 메모리(1200)는 전자 시스템(1000)의 동작에 이용되는 데이터를 저장할 수 있다. 예로서, 워킹 메모리(1200)는 메인 프로세서(1101)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 예로서, 워킹 메모리(1200)는 DRAM(Dynamic RAM), SDRAM(Synchronous RAM) 등과 같은 휘발성 메모리, 및/또는 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지 장치(1300)는 하나 이상의 메모리 장치 및 컨트롤러를 포함할 수 있다. 스토리지 장치(1300)의 메모리 장치는 전력 공급에 관계없이 데이터를 저장할 수 있다. 예로서, 스토리지 장치(1300)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다. 예로서, 스토리지 장치(1300)는 SSD(Solid State Drive), 카드 스토리지, 임베디드(Embedded) 스토리지 등과 같은 스토리지 매체를 포함할 수 있다.
통신 블록(1400)은 전자 시스템(1000)의 외부 장치/시스템과 통신할 수 있다. 예로서, 통신 블록(1400)은 LTE(Long Term Evolution), WIMAX(Worldwide Interoperability for Microwave Acess), GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access), Bluetooth, NFC(Near Field Communication), Wi-Fi(Wireless Fidelity), RFID(Radio Frequency Identification) 등과 같은 다양한 무선 통신 규약 중 적어도 하나, 및/또는 TCP/IP(Transfer Control Protocol/Internet Protocol), USB(Universal Serial Bus), Firewire 등과 같은 다양한 유선 통신 규약 중 적어도 하나를 지원할 수 있다.
유저 인터페이스(1500)는 사용자와 전자 시스템(1000) 사이의 통신을 중재할 수 있다. 예로서, 유저 인터페이스(1500)는 키보드, 마우스, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등과 같은 입력 인터페이스를 포함할 수 있다. 예로서, 유저 인터페이스(1500)는 LCD(Liquid Crystal Display) 장치, LED(Light Emitting Diode) 표시 장치, OLED(Organic LED) 표시 장치, AMOLED(Active Matrix OLED) 표시 장치, 스피커, 모터 등과 같은 출력 인터페이스를 포함할 수 있다.
버스(1600)는 전자 시스템(1000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 전자 시스템(1000)의 구성 요소들은 버스(1600)의 버스 포맷에 기초하여 서로 데이터를 교환할 수 있다. 예로서, 버스 포맷은 USB, SCSI(Small Computer System Interface), PCIe(Peripheral Component Interconnect Express), M-PCIe(Mobile PCIe), ATA(Advanced Technology Attachment), PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI), IDE(Integrated Drive Electronics), EIDE(Enhanced IDE), NVMe(Nonvolatile Memory Express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스 규약 중 하나 이상을 포함할 수 있다.
스토리지 장치(1300)는 본 개시의 실시 예들에 따라 하드웨어 자동화 아키텍처(Hardware-automated Architecture)로 구현될 수 있다. 본 개시의 실시 예들에서, 스토리지 장치(1300)는 내부 프로세서의 제어에 전적으로 의존하는 대신, 전용(Dedicated) 하드웨어 회로에 의해 단순 작업(Simple Job)들을 관리할 수 있다. 상대적으로 빈번하게 수행되는 단순 작업들이 내부 프로세서의 개입 없이 전용 하드웨어 회로에 의해 관리될 수 있기 때문에, 스토리지 장치(1300)의 성능 및 효율이 향상될 수 있다. 스토리지 장치(1300)의 예시적인 구성들 및 동작들이 도 2 내지 도 17을 참조하여 설명될 것이다.
다만, 이하의 설명들에서 스토리지 장치(1300)가 제공되지만, 본 발명은 여기에 한정되지 않는다. 본 개시의 실시 예들은 메모리 소자를 포함하는 어떠한 유형의 장치에든 채용될 수 있다. 예로서, 본 발명의 실시 예들은 워킹 메모리(1200)에 포함되는 휘발성 메모리 및/또는 불휘발성 메모리를 위해서도 채용될 수 있다. 이하의 설명들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지는 않는다.
도 2는 도 1의 스토리지 장치(1300)와 관련되는 예시적인 구성을 보여주는 블록도이다. 도 1의 전자 시스템(1000)은 도 2의 전자 시스템(1000a)을 포함할 수 있다. 도 1의 스토리지 장치(1300)는 도 2의 스토리지 장치(1300a)를 포함할 수 있다.
도 1을 참조하여 설명된 것처럼, 메인 프로세서(1101)는 버스(1600)를 통해 스토리지 장치(1300a)와 통신할 수 있다. 본 개시에서, 스토리지 장치(1300a)로 접근할 수 있는 객체는 "호스트(1100a)"로 불릴 수 있다. 메인 프로세서(1101)는 호스트(1100a)로서 동작할 수 있는 객체들의 한 예시일 수 있으나, 본 발명은 여기에 한정되지 않는다.
호스트(1100a)는 스토리지 장치(1300a)와 데이터(DAT)를 교환할 수 있다. 스토리지 장치(1300a)는 호스트(1100a)로부터 수신되는 커맨드(CMD)에 응답하여, 호스트(1100a)로 스토리지 서비스를 제공할 수 있다.
예로서, 호스트(1100a)는 쓰기 커맨드 및 쓰기 데이터를 스토리지 장치(1300a)로 제공할 수 있다. 스토리지 장치(1300a)는 쓰기 커맨드에 응답하여, 요청된 쓰기 데이터를 저장할 수 있다. 예로서, 호스트(1100a)는 읽기 커맨드를 스토리지 장치(1300a)로 제공할 수 있다. 스토리지 장치(1300a)는 읽기 커맨드에 응답하여, 요청된 읽기 데이터를 호스트(1100a)로 출력할 수 있다.
스토리지 장치(1300a)는 하나 이상의 메모리 장치(1310) 및 컨트롤러(1330a)를 포함할 수 있다. 도 2는 두 개의 메모리 장치(1311, 1319)를 보여주지만, 스토리지 장치(1300a)에 포함되는 메모리 장치들의 개수는 다양하게 변경 또는 수정될 수 있다.
메모리 장치들(1311, 1319) 각각은 호스트(1100a)에 의해 요청되는 데이터를 저장하거나 출력할 수 있다. 이를 위해, 메모리 장치들(1311, 1319) 각각은 데이터를 저장하기 위한 메모리 영역(들)을 포함할 수 있다. 예로서, 메모리 장치들(1311, 1319) 각각이 낸드 플래시 메모리(NAND-type Flash Memory)를 포함하는 경우, 메모리 장치들(1311, 1319) 각각은 복수의 워드 라인 및 복수의 비트 라인을 따라 형성되는 메모리 셀 어레이를 포함할 수 있고, 메모리 장치들(1311, 1319)로 지시되는(Directed) 동작들은 페이지(Page) 단위 또는 블록(Block) 단위의 메모리 영역에 대해 수행될 수 있다. 그러나, 도 1을 참조하여 설명된 것처럼, 메모리 장치들(1311, 1319) 각각의 유형 및 구성은 다양하게 변경 또는 수정될 수 있다.
메모리 영역은 "어드레스"로 불리는 값에 기초하여 식별되고 지시될(Indicated) 수 있다. 쓰기 데이터는 어드레스에 의해 지시되는 메모리 영역에 저장될 수 있고, 읽기 데이터는 어드레스에 의해 지시되는 메모리 영역으로부터 출력될 수 있다.
호스트(1100a)는 메모리 장치들(1311, 1319)의 특정 메모리 영역과 관련하여 데이터(DAT)를 교환하기 위해, 스토리지 장치(1300a)로 어드레스(ADDR)를 제공할 수 있다. 스토리지 장치(1300a)는 호스트(1100a)로부터 수신되는 요청(예컨대, 커맨드(CMD)) 및 어드레스(ADDR)에 기초하여 메모리 장치들(1311, 1319)을 제어할 수 있다.
한편, 호스트(1100a)에 의해 처리되는 어드레스(ADDR)는 메모리 장치들(1311, 1319) 내에서 메모리 영역을 지시하는 어드레스와 상이할 수 있다. 예로서, 호스트(1100a)에 의해 처리되는 어드레스(ADDR)는 "논리 어드레스"로 불릴 수 있고, 메모리 장치들(1311, 1319)을 위한 어드레스는 "물리 어드레스"로 불릴 수 있다. 스토리지 장치(1300a)는 메모리 장치들(1311, 1319)을 적절히 제어하기 위해, 호스트(1100a)에 의해 처리되는 논리 어드레스와 메모리 장치들(1311, 1319)을 위한 물리 어드레스 사이에서 어드레스 변환(Address Translation)을 수행할 수 있다.
컨트롤러(1330a)는 스토리지 장치(1300a)의 전반적인 동작들을 제어할 수 있다. 예로서, 컨트롤러(1330a)는 메모리 장치들(1311, 1319)의 동작들을 스케줄링하거나, 스토리지 장치(1300a)에서 처리되는 신호들/데이터를 인코딩하고 디코딩할 수 있다. 예로서, 컨트롤러(1330a)는 메모리 장치들(1311, 1319)이 데이터를 저장하거나 출력하도록 메모리 장치들(1311, 1319)을 제어할 수 있다.
컨트롤러(1330a)는 위에서 설명된 및 아래에서 설명될 몇몇 동작을 수행하도록 구성되는 하나 이상의 하드웨어 구성 요소(예컨대, 아날로그 회로, 논리 회로 등)를 포함할 수 있다. 나아가, 컨트롤러(1330a)는 하나 이상의 프로세서 코어를 포함할 수 있다. 위에서 설명된 및 아래에서 설명될 컨트롤러(1330a)의 몇몇 동작은 소프트웨어 및/또는 펌웨어의 프로그램 코드로 구현될 수 있고, 컨트롤러(1330a)의 프로세서 코어(들)는 프로그램 코드의 명령어 집합을 실행할 수 있다. 컨트롤러(1330a)의 프로세서 코어(들)는 명령어 집합을 실행하기 위해 다양한 종류의 산술 연산들 및/또는 논리 연산들을 처리할 수 있다.
버퍼 메모리(1350)는 스토리지 장치(1300a)의 동작에 이용되는 데이터를 버퍼링할 수 있다. 예로서, 버퍼 메모리(1350)는 컨트롤러(1330a)에 의해 참조되는 데이터를 일시적으로 저장할 수 있다. 그러나, 뒤에서 설명될 것처럼, 버퍼 메모리(1350)는 메모리 장치들(1311, 1319)에 저장될 쓰기 데이터 또는 메모리 장치들(1311, 1319)로부터 출력된 읽기 데이터를 저장하지 않을 수 있다. 대신, 버퍼 메모리(1350)는 컨트롤러(1330a)에 의해 참조될 메타데이터를 저장하기 위한 보조(Auxiliary) 메모리로서 제공될 수 있다. 예로서, 버퍼 메모리(1350)는 SRAM(Static RAM), DRAM, SDRAM 등과 같은 휘발성 메모리, 및/또는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
도 3 및 도 4는 몇몇 실시 예에 따른 도 2의 스토리지 장치(1300a)의 예시적인 동작들을 설명하기 위한 블록도들이다.
도 3 및 도 4를 참조하면, 컨트롤러(1330a)는 제 1 유형 작업 관리 회로(HW) 및 프로세서(1339)를 포함할 수 있다. 제 1 유형 작업 관리 회로(HW)는 메모리 장치들(1311, 1319)과 관련되는 제 1 유형의 작업을 관리할 수 있다. 프로세서(1339)는 메모리 장치들(1311, 1319)과 관련되는 제 2 유형의 작업을 처리할 수 있다. 예로서, 제 1 유형의 작업은 제 2 유형의 작업보다 빈번하게 수행되는 단순 작업을 포함할 수 있다.
예로서, 제 1 유형의 작업은 메모리 장치들(1311, 1319)의 제 1 단위 크기의 메모리 영역에 대해 수행되는 동작을 포함할 수 있다. 예로서, 제 1 단위 크기는 페이지 단위 크기를 포함할 수 있다. 예로서, 제 1 유형의 작업은 메모리 장치들(1311, 1319)에 쓰기 데이터를 저장하기 위한 쓰기 동작, 메모리 장치들(1311, 1319)로부터 읽기 데이터를 출력하기 위한 읽기 동작 등과 같은 일반 동작을 포함할 수 있다.
예로서, 제 2 유형의 작업은 메모리 장치들(1311, 1319)의 제 2 단위 크기의 메모리 영역에 대해 수행되는 동작을 포함할 수 있다. 제 2 단위 크기는 제 1 단위 크기와 상이할 수 있고, 예로서, 블록/서브블록(Sub-block)/슈퍼블록(Super-block) 단위 크기를 포함할 수 있다. 예로서, 제 2 유형의 작업은 가비지 콜렉션(Garbage Collection), 웨어 레벨링(Wear Leveling), 리드 리프레시(Read Refresh), 오류 검출 및 정정(Error Detection and Correction), 전력 장애 보호(Power Failure Protection) 등과 같은 관리 동작을 포함할 수 있다.
아래의 설명들에서, 위 예들에 기반하는 실시 예들이 설명될 것이다. 다만, 이러한 실시 예들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지는 않는다. 제 1 유형의 작업은 빈번하게 수행되는 단순 작업을 프로세서(1339)의 개입 없이 관리하기 위해 다양하게 변경 또는 수정될 수 있다. 나아가, 제 2 유형의 작업은 복합 작업(Complex Job)을 프로세서(1339)의 제어 하에서 처리하기 위해 다양하게 변경 또는 수정될 수 있다. 제 1 단위 크기 및 제 2 단위 크기 역시 다양하게 변경 또는 수정될 수 있고, 서로 동일할 수 있다.
도 3은 제 1 유형의 작업과 관련되는 동작을 보여준다. 예로서, 제 1 유형의 작업은 호스트(1100a)에 의해 요청되는 동작을 포함할 수 있다. 제 1 유형의 작업은 프로세서(1339)의 개입 없이 제 1 유형 작업 관리 회로(HW)에 포함되는 하드웨어 회로의 동작에 따라 관리될 수 있다.
예로서, 제 1 유형의 작업이 관리되는 동안, 프로세서(1339)의 개입은 데이터를 위해 버퍼 영역을 할당하는 것, 데이터를 버퍼링하는 것, 데이터 입력/출력을 트리거(Trigger)하는 것, 데이터 입력/출력의 경로를 제어하는 것 등을 포함하여 모든 동작들로부터 배제될 수 있다. 제 1 유형의 작업이 제 1 유형 작업 관리 회로(HW)에 의해 정상적으로 관리되는 동안, 프로세서(1339)는 제 1 유형의 작업에 개입하지 않을 수 있고 버퍼 메모리(1350)와 통신하지 않을 수 있다.
제 1 유형의 작업이 쓰기 동작을 포함하는 경우, 제 1 유형 작업 관리 회로(HW)는 호스트(1100a)로부터 수신되는 쓰기 데이터를 하나 이상의 메모리 장치(1310)로 전달할 수 있다. 제 1 유형의 작업이 읽기 동작을 포함하는 경우, 제 1 유형 작업 관리 회로(HW)는 하나 이상의 메모리 장치(1310)로부터 출력되는 읽기 데이터를 호스트(1100a)로 전달할 수 있다. 쓰기 데이터 및 읽기 데이터는 패킷 단위의 스트림(PC_S)으로 전달될 수 있다.
그동안, 버퍼 메모리(1350)는 하나 이상의 메모리 장치(1310)에 저장될 쓰기 데이터 또는 하나 이상의 메모리 장치(1310)로부터 출력된 읽기 데이터를 저장하지 않을 수 있다. 대신, 쓰기 데이터 및 읽기 데이터는 제 1 유형 작업 관리 회로(HW) 내부의 버퍼에서 관리될 수 있다.
제 1 유형 작업 관리 회로(HW)에 포함되는 하드웨어 회로의 예시적인 구성은 도 5를 참조하여 상세히 설명될 것이다. 패킷의 예시적인 구성은 도 6을 참조하여 상세히 설명될 것이다. 예시적인 제 1 유형의 작업은 도 7 내지 도 13을 참조하여 상세히 설명될 것이다.
도 4는 제 2 유형의 작업과 관련되는 동작을 보여준다. 예로서, 제 2 유형의 작업은 호스트(1100a)의 요청과 관계없이 수행되는 동작을 포함할 수 있다. 제 2 유형의 작업은 프로세서(1339)의 제어에 따라(예컨대, 프로세서(1339) 상에서 실행되는 소프트웨어 및/또는 펌웨어의 프로그램 코드에 기초하여) 처리될 수 있다.
예로서, 제 1 유형 작업 관리 회로(HW)는 하나 이상의 메모리 장치(1310) 및 컨트롤러(1330a)의 동작들에 관한 상태(Status)를 모니터링할 수 있다. 제 1 유형 작업 관리 회로(HW)는 모니터링되는 상태에 기초하여, 프로세서(1339)의 개입을 트리거하기 위한 개입 조건을 관리할 수 있다. 예로서, 모니터링되는 상태는 제 1 유형의 작업(예컨대, 쓰기 동작, 읽기 동작 등)과 관련하여 오류 또는 예외(Exception)가 발생하는지 여부와 관련될 수 있다. 예로서, 개입 조건은 제 1 유형의 작업과 관련되는 오류 또는 예외가 발생하는 경우에 충족될 수 있다.
프로세서(1339)가 제 1 유형의 작업에 개입하지 않는 동안 개입 조건이 충족되는 경우, 제 1 유형 작업 관리 회로(HW)는 모니터링된 상태의 정보를 포함하는 알림(Notification)을 프로세서(1339)로 제공할 수 있다. 따라서, 제 1 유형 작업 관리 회로(HW)는 개입 조건이 충족되었음을 프로세서(1339)로 알릴 수 있다.
프로세서(1339)는, 제 1 유형 작업 관리 회로(HW)로부터 수신되는 알림에 응답하여, 제 2 유형의 작업을 처리하기 위한 관리 커맨드를 출력할 수 있다. 제 1 유형 작업 관리 회로(HW)는 프로세서(1339)로부터 관리 커맨드를 수신할 수 있다. 제 1 유형 작업 관리 회로(HW)는 관리 커맨드에 의해 지시되는(Directed) 제 2 유형의 작업을 수행할 수 있다. 제 2 유형의 작업은 모니터링된 상태(예컨대, 제 1 유형의 작업과 관련되는 오류 또는 예외)를 해소(Resolve)하기 위한 관리 동작을 포함할 수 있다.
예로서, 제 2 유형의 작업은 하나 이상의 메모리 장치(1310)로 지시되는 관리 동작을 포함할 수 있다. 제 1 유형 작업 관리 회로(HW)는 프로세서(1339)의 제어에 따라 제 2 유형의 작업을 수행하기 위해 하나 이상의 메모리 장치(1310)와 통신할 수 있다. 예시적인 제 2 유형의 작업은 도 14 및 도 15를 참조하여 상세히 설명될 것이다.
II. 컨트롤러 및 패킷의 예시적인 구성
도 5는 몇몇 실시 예에 따른 도 2의 컨트롤러(1330a)의 예시적인 구성을 보여주는 블록도이다.
컨트롤러(1330a)는 호스트 인터페이스 계층(1331a), 메모리 인터페이스 계층(1332), 쓰기 관리 회로(1333), 읽기 관리 회로(1335), 데이터 영역(Data Domain) 관리 회로(1337), 및 프로세서(1339)를 포함할 수 있다. 예로서, 쓰기 관리 회로(1333), 읽기 관리 회로(1335), 및 데이터 영역 관리 회로(1337)는 도 3 및 도 4의 제 1 유형 작업 관리 회로(HW)에 포함될 수 있다.
호스트 인터페이스 계층(1331a)은 호스트(1100a)와 인터페이싱할 수 있다. 예로서, 호스트 인터페이스 계층(1331a)은 호스트(1100a)로부터 수신되는 커맨드 및 데이터를 컨트롤러(1330a)에서 처리되는 포맷으로 변환할 수 있다. 예로서, 호스트 인터페이스 계층(1331a)은 컨트롤러(1330a)에서 처리된 데이터를 호스트(1100a)에서 다루어지는 포맷으로 변환할 수 있고, 변환된 포맷의 데이터를 호스트(1100a)로 출력할 수 있다.
메모리 인터페이스 계층(1332)은 하나 이상의 메모리 장치(1310)와 인터페이싱할 수 있다. 예로서, 메모리 인터페이스 계층(1332)은 쓰기 데이터 및 관련 커맨드를 하나 이상의 메모리 장치(1310)에서 다루어지는 포맷으로 변환할 수 있다. 예로서, 메모리 인터페이스 계층(1332)은 하나 이상의 메모리 장치(1310)로부터 수신되는 읽기 데이터를 컨트롤러(1330a)에서 처리되는 포맷으로 변환할 수 있다.
쓰기 관리 회로(1333)는 제 1 유형의 작업을 관리할 수 있다. 예로서, 쓰기 관리 회로(1333)는 쓰기 데이터를 하나 이상의 메모리 장치(1310)에 저장하기 위한 쓰기 동작을 관리할 수 있다. 이 예에서, 쓰기 관리 회로(1333)는 호스트(1100a)로부터 수신되는 쓰기 데이터를 하나 이상의 메모리 장치(1310)로 전달하기 위한 쓰기 경로 상에 놓일 수 있다.
읽기 관리 회로(1335)는 제 1 유형의 작업을 관리할 수 있다. 예로서, 읽기 관리 회로(1335)는 읽기 데이터를 컨트롤러(1330a)의 외부로(예컨대, 호스트(1100a)로) 출력하기 위한 읽기 동작을 관리할 수 있다. 이 예에서, 읽기 관리 회로(1335)는 하나 이상의 메모리 장치(1310)로부터 출력되는 읽기 데이터를 컨트롤러(1330a)의 외부로 전달하기 위한 읽기 경로 상에 놓일 수 있다.
데이터 영역 관리 회로(1337)는 제 1 유형의 작업을 수행하는 것과 관련하여, 하나 이상의 메모리 장치(1310), 쓰기 데이터, 및 읽기 데이터 중 적어도 하나의 상태의 정보를 획득할 수 있다. 쓰기 관리 회로(1333) 및 읽기 관리 회로(1335)는 제 1 유형의 작업을 수행함에 따라 다양한 상태의 정보를 데이터 영역 관리 회로(1337)로 제공할 수 있다. 데이터 영역 관리 회로(1337)는, 획득되는 정보에 기초하여, 하나 이상의 메모리 장치(1310) 및 컨트롤러(1330a)의 동작들에 관한 상태를 모니터링할 수 있다.
프로세서(1339)는 하나 이상의 프로세서 코어를 포함할 수 있다. 프로세서(1339)는 프로세서 코어의 동작에 따라 소프트웨어(SW) 및/또는 펌웨어(FW)의 프로그램 코드를 실행할 수 있다. 프로세서(1339)는 소프트웨어 및/또는 펌웨어의 프로그램 코드를 실행하여, 제 2 유형의 작업을 처리할 수 있다.
커맨드 및 데이터는 패킷 단위의 스트림으로 전달될 수 있다. 이를 위해, 몇몇 실시 예에서, 호스트 인터페이스 계층(1331a)은 패킷화기(Packetizer, PCZ)를 포함할 수 있다.
패킷화기(PCZ)는 호스트(1100a)로부터 수신되는 커맨드 및 데이터를 부가 정보(예컨대, 패킷의 목적지(Destination), 어드레스, 오류 검사(Check) 비트 등)와 결합하여, 패킷(PCW1) 또는 패킷(PCR1)을 생성할 수 있다. 쓰기 커맨드 및 쓰기 데이터가 호스트(1100a)로부터 수신되는 경우, 패킷화기(PCZ)는 헤더(Header) 부분, 데이터 부분, 및 테일(Tail) 부분을 포함하는 패킷(PCW1)을 생성할 수 있다. 예로서, 헤더 부분은 쓰기 커맨드의 정보를 포함할 수 있고, 데이터 부분은 쓰기 데이터를 포함할 수 있다. 테일 부분은 데이터 부분의 완료를 지시하기에(Indicate) 적절한 정보를 포함할 수 있다.
한편, 읽기 커맨드가 호스트(1100a)로부터 수신되는 경우, 패킷화기(PCZ)는 헤더 부분을 포함하는 패킷(PCR1)을 생성할 수 있다. 헤더 부분은 읽기 커맨드의 정보를 포함할 수 있다. 읽기 동작과 관련하여 데이터가 수신되지 않을 수 있기 때문에, 몇몇 경우 패킷(PCR1)은 데이터 부분 및 테일 부분을 포함하지 않을 수 있다.
패킷화기(PCZ)는 호스트(1100a)로부터 수신되는 커맨드 및 데이터로부터 패킷(PCW1) 또는 패킷(PCR1)을 생성하도록 구성되는 하드웨어 회로를 포함할 수 있다. 컨트롤러(1330a)에서 처리되는 패킷의 예시적인 구성은 도 6을 참조하여 더 설명될 것이다.
쓰기 관리 회로(1333)는 제 1 내부 버퍼(1333a) 및 버퍼 관리기(1333b)를 포함할 수 있다. 쓰기 관리 회로(1333)는 패킷(PCW1) 또는 패킷(PCR1)을 수신할 수 있다. 패킷(PCW1) 또는 패킷(PCR1)의 헤더 부분이 커맨드의 정보를 포함하는 경우, 쓰기 관리 회로(1333)는, 헤더 부분을 참조하여, 수신되는 패킷이 쓰기 동작과 관련되는지 또는 읽기 동작과 관련되는지 판별할 수 있다.
쓰기 관리 회로(1333)가 쓰기 동작과 관련되는 패킷(PCW1)을 수신한 경우, 제 1 내부 버퍼(1333a)는 패킷(PCW1)에 포함되는 다양한 정보 및 쓰기 데이터를 버퍼링할 수 있다. 예로서, 제 1 내부 버퍼(1333a)는 SRAM과 같은 메모리 소자를 포함할 수 있다. 버퍼 관리기(1333b)는, 제 1 내부 버퍼(1333a)가 정보를 저장하는 경우에 위험(Hazard) 또는 충돌(Collision)이 발생하지 않도록, 제 1 내부 버퍼(1333a)의 버퍼 영역의 할당을 관리할 수 있다.
쓰기 관리 회로(1333)는, 제 1 내부 버퍼(1333a)에 버퍼링된 쓰기 데이터에 기초하여, 패킷(PCW2)을 메모리 인터페이스 계층(1332)으로 전달할 수 있다. 메모리 인터페이스 계층(1332)은, 패킷(PCW2)의 헤더 부분을 참조하여, 쓰기 데이터를 저장할 메모리 영역의 물리 어드레스를 판별할 수 있다. 메모리 인터페이스 계층(1332)은 판별된 물리 어드레스의 메모리 영역을 포함하는 타겟(Target) 메모리 장치로 쓰기 데이터를 전달할 수 있다. 따라서, 쓰기 데이터가 하나 이상의 메모리 장치(1310)에 저장될 수 있다.
쓰기 동작이 수행되는 경우, 쓰기 관리 회로(1333)는 호스트(1100a)로부터 수신되는 논리 어드레스를 물리 어드레스로 맵핑할 수 있다. 맵핑될 물리 어드레스는 쓰기 관리 회로(1333), 데이터 영역 관리 회로(1337), 및/또는 프로세서(1339)에 의해 관리되는 가용(Available) 물리 어드레스들의 목록으로부터 선택될 수 있다. 쓰기 데이터는 하나 이상의 메모리 장치(1310)의 맵핑된 물리 어드레스의 메모리 영역에 저장될 수 있다.
쓰기 관리 회로(1333)는 수신된 논리 어드레스 및 맵핑된 물리 어드레스의 정보를 데이터 영역 관리 회로(1337)로 제공할 수 있다. 데이터 영역 관리 회로(1337)는 논리 어드레스와 물리 어드레스 사이의 대응 관계의 정보를 버퍼 메모리(1350)에서 관리할 수 있다. 버퍼 메모리(1350)는 대응 관계의 정보를 제 1 메타데이터로서 저장할 수 있다. 예시적인 쓰기 동작은 도 7 내지 도 9를 참조하여 더 설명될 것이다.
반면, 쓰기 관리 회로(1333)가 읽기 동작과 관련되는 패킷(PCR1)을 수신한 경우, 쓰기 관리 회로(1333)는 패킷(PCR1)을 데이터 영역 관리 회로(1337)로 전달할 수 있다. 예로서, 쓰기 관리 회로(1333)는, 수신된 패킷의 부가 정보에 기초하여, 그 수신된 패킷을 라우팅(Route)하도록 구성될 수 있다. 쓰기 관리 회로(1333)는 커맨드 및 데이터를 전달하는 것과 관련하여 스위치의 역할을 할 수 있다.
데이터 영역 관리 회로(1337)는, 버퍼 메모리(1350)에 저장된 제 1 메타데이터의 대응 관계를 참조하여, 패킷(PCR1)에 대응하는 물리 어드레스를 획득할 수 있다. 즉, 제 1 메타데이터는 제 1 유형의 작업이 관리되는 때에 생성되거나 참조될 수 있다. 데이터 영역 관리 회로(1337)는 획득된 물리 어드레스의 정보를 포함하는 패킷(PCR2)을 생성할 수 있다. 데이터 영역 관리 회로(1337)는 패킷(PCR2)을 메모리 인터페이스 계층(1332)으로 전달할 수 있다.
메모리 인터페이스 계층(1332)은, 패킷(PCR2)의 헤더 부분을 참조하여, 획득된 물리 어드레스의 메모리 영역을 포함하는 타겟 메모리 장치로 읽기 커맨드를 전달할 수 있다. 따라서, 읽기 데이터가 타겟 메모리 장치로부터 출력될 수 있다. 메모리 인터페이스 계층(1332)은 출력된 읽기 데이터를 포함하는 패킷(PCR3)을 읽기 관리 회로(1335)로 제공할 수 있다.
읽기 관리 회로(1335)는 제 2 내부 버퍼(1335a)를 포함할 수 있다. 제 2 내부 버퍼(1335a)는 패킷(PCR3)에 포함되는 다양한 정보를 버퍼링할 수 있다. 예로서, 제 2 내부 버퍼(1335a)는 SRAM과 같은 메모리 소자를 포함할 수 있다. 읽기 관리 회로(1335)는, 제 2 내부 버퍼(1335a)에 버퍼링된 읽기 데이터에 기초하여, 호스트 인터페이스 계층(1331a)으로 패킷(PCR4)을 전달할 수 있다.
호스트 인터페이스 계층(1331a)은 패킷(PCR4)에 포함되는 읽기 데이터를 호스트(1100a)로 전달할 수 있다. 따라서, 읽기 데이터가 하나 이상의 메모리 장치(1310)로부터 컨트롤러(1330a)의 외부로 출력될 수 있다. 예시적인 읽기 동작은 도 10 내지 도 13을 참조하여 더 설명될 것이다.
쓰기 관리 회로(1333), 읽기 관리 회로(1335), 및 데이터 영역 관리 회로(1337) 각각은 위에서 설명된 및 아래에서 설명될 동작들을 수행하도록 구성되는 하드웨어 회로를 포함할 수 있다. 쓰기 관리 회로(1333), 읽기 관리 회로(1335), 및 데이터 영역 관리 회로(1337)는 프로세서(1339)의 개입 없이 제 1 유형의 작업을 자동으로 처리할 수 있다. 커맨드 및 데이터가 일정한(Regular) 포맷으로 패킷화될 수 있기 때문에, 쓰기 관리 회로(1333), 읽기 관리 회로(1335), 및 데이터 영역 관리 회로(1337) 각각의 하드웨어 회로는 프로세서(1339)의 개입 없이도 패킷의 부가 정보에 기초하여 패킷 단위의 스트림을 관리할 수 있다.
제 1 유형의 작업이 정상적으로 관리되는 동안, 프로세서(1339)는 제 1 유형의 작업에 개입하지 않을 수 있다. 나아가, 프로세서(1339)는 패킷화기(PCZ)에 의해 패킷을 생성하는 것 및 쓰기 경로 및 읽기 경로를 따라 패킷 단위의 스트림을 전달하는 것에 개입하지 않을 수 있다. 게다가, 프로세서(1339)는 데이터 영역 관리 회로(1337)에 의해 제 1 메타데이터를 버퍼 메모리(1350)에 저장하는 것 및 데이터 영역 관리 회로(1337)에 의해 제 1 메타데이터를 버퍼 메모리(1350)로부터 읽는 것에 개입하지 않을 수 있다.
제 1 유형의 작업이 관리되는 동안, 데이터 영역 관리 회로(1337)는 쓰기 관리 회로(1333) 및 읽기 관리 회로(1335)로부터 다양한 정보를 획득할 수 있다. 획득되는 정보는, 오류 또는 예외를 포함하여, 하나 이상의 메모리 장치(1310) 및 컨트롤러(1330a)의 동작들에 관한 다양한 상태를 지시할 수 있다. 데이터 영역 관리 회로(1337)는, 획득되는 정보에 기초하여, 프로세서(1339)의 개입을 트리거하기 위한 개입 조건을 관리할 수 있다.
제 1 유형의 작업과 관련하여 오류 또는 예외가 발생하는 경우, 컨트롤러(1330a) 또는 스토리지 장치(1300a)의 동작에 장애(Failure)가 발생할 수 있다. 그러나, 제 1 유형의 작업은 단순 작업을 포함할 수 있고, 오류 또는 예외를 해소하는 데에 적절하지 않을 수 있다. 오류 또는 예외를 해소하기 위해 제 2 유형의 작업이 요구될 수 있고, 프로세서(1339)는 제 2 유형의 작업을 처리하기 위해 개입할 수 있다.
예로서, 제 1 유형의 작업과 관련하여 오류 또는 예외가 발생하는 경우, 개입 조건이 충족될 수 있다. 데이터 영역 관리 회로(1337)는 프로세서(1339)로 알림을 제공하여, 개입 조건이 충족되었음을 프로세서(1339)로 알릴 수 있다. 알림이 수신되지 않는 경우, 프로세서(1339)는 제 1 유형의 작업을 관리하는 것, 패킷을 생성하고 전달하는 것, 및 제 1 메타데이터를 관리하는 것에 개입하지 않을 수 있다.
반면, 알림이 수신되는 경우, 프로세서(1339)는 제 2 유형의 작업을 처리하기 위해 관리 커맨드를 데이터 영역 관리 회로(1337)로 제공할 수 있다. 관리 커맨드는 쓰기 경로 및 읽기 경로 중 적어도 하나 상에서 수행되는 관리 동작을 지시할(Direct) 수 있다. 알림 및 관리 커맨드는 패킷(PCC)의 헤더 부분에 포함될 수 있다.
프로세서(1339)는 제 2 유형의 작업을 처리하기 위해 버퍼 메모리(1350)와 통신할 수 있다. 버퍼 메모리(1350)는 제 2 메타데이터를 저장할 수 있다. 제 2 메타데이터는 제 2 유형의 작업이 처리되는 때에 생성되거나 참조될 수 있다. 즉, 프로세서(1339)는 제 2 유형의 작업을 처리하기 위해 제 2 메타데이터를 버퍼 메모리(1350)에 저장하거나 버퍼 메모리(1350)에 저장된 제 2 메타데이터를 읽을 수 있다.
데이터 영역 관리 회로(1337)는 관리 커맨드에 응답하여, 제 2 유형의 작업을 수행할 수 있다. 즉, 오류 또는 예외가 발생하는 경우, 프로세서(1339)가 개입할 수 있고 제 2 유형의 작업이 프로세서(1339)의 제어에 따라 수행될 수 있다. 제 2 유형의 작업이 쓰기 동작 및/또는 읽기 동작을 수반하는 경우, 데이터 영역 관리 회로(1337)는 쓰기 관리 회로(1333) 및/또는 읽기 관리 회로(1335)로 적절한 커맨드를 제공할 수 있다. 예시적인 관리 동작은 도 14 및 도 15를 참조하여 더 설명될 것이다.
본 개시의 실시 예들에 따르면, 컨트롤러(1330a)는 제 1 유형의 작업과 관련되는 데이터 영역을 포함할 수 있다. 나아가, 컨트롤러(1330a)는 제 2 유형의 작업과 관련되는 제어 영역(Control Domain)을 포함할 수 있다. 쓰기 관리 회로(1333) 및 읽기 관리 회로(1335)는 데이터 영역에서 제 1 유형의 작업을 관리할 수 있고, 프로세서(1339)는 제어 영역에서 제 2 유형의 작업을 처리할 수 있다. 데이터 영역 관리 회로(1337)는 데이터 영역에서 제 1 유형의 작업을 관리할 수 있고, 제어 영역에서 프로세서(1339)의 개입을 트리거할 수 있다.
중앙 집중식 아키텍처(Centralized Architecture)의 경우, 쓰기 데이터 및 읽기 데이터를 포함하여 모든 데이터 흐름이 버퍼 메모리(1350)로 집중(Concentrated)되고, 프로세서(1339)가 제 1 유형의 작업 및 제 2 유형의 작업 모두에 개입한다. 이 경우, 스토리지 장치(1300a)의 성능은 프로세서(1339)의 성능 및 버퍼 메모리(1350)의 처리량(Throughput)에 의존하여 한정된다. 단순 작업을 프로세서(1339)에 의해 처리하는 것은 프로세서(1339)의 부하(Load)를 증가시키고 버퍼 메모리(1350)의 대역폭을 과도하게 점유한다.
반면, 본 개시의 실시 예들에 따른 하드웨어 자동화 아키텍처(Hardware-automated Architecture)의 경우, 단순 작업을 프로세서(1339)의 개입 없이 별개의 하드웨어 회로에 의해 관리하는 것은 스토리지 장치(1300a)의 성능 및 효율을 향상시킬 수 있다. 게다가, 프로세서(1339) 및 버퍼 메모리(1350)의 전력 소모 및 발열이 감소할 수 있고, 스토리지 장치(1300a)의 수명 및 신뢰성의 측면에서 이익이 있을 수 있다.
도 5에 도시된 것처럼, 쓰기 경로는 읽기 경로와 물리적으로 별개일 수 있다. 따라서, 쓰기 동작 및 읽기 동작은 병렬로 또는 동시에 수행될 수 있다. 이는 단순 작업을 처리하기 위한 성능을 더욱 향상시킬 수 있다.
위에서 설명된 것처럼, 버퍼 메모리(1350)는 제 1 메타데이터 및 제 2 메타데이터를 저장할 수 있다. 몇몇 실시 예에서, 제 1 메타데이터는 제 2 메타데이터와 별개로 저장될 수 있다(예컨대, 제 1 메타데이터를 저장하기 위한 메모리 영역은 제 2 메타데이터를 저장하기 위한 메모리 영역과 상이할 수 있다). 몇몇 실시 예에서, 데이터 영역 관리 회로(1337)만 제 1 메타데이터 및 제 2 메타데이터 모두로 액세스할 수 있고, 프로세서(1339)는 데이터 영역 관리 회로(1337)를 통해 제 2 메타데이터를 읽을 수 있다. 이러한 실시 예들에 따르면, 제 1 메타데이터 및 제 2 메타데이터가 각각 데이터 영역 관리 회로(1337) 및 프로세서(1339)에 의해 독립적으로 관리되더라도, 제 1 메타데이터 및 제 2 메타데이터의 일관성(Coherency) 및 무결성(Integrity)이 확보될 수 있다.
도 6은 몇몇 실시 예에 따른 도 5의 패킷의 예시적인 구성을 보여주는 개념도이다.
도 5를 참조하여 설명된 것처럼, 하나의 패킷은 헤더 부분, 데이터 부분, 및 테일 부분을 포함할 수 있다. 데이터 부분은 쓰기 데이터 또는 읽기 데이터를 포함할 수 있다.
예로서, 헤더 부분은 라우팅 정보, 논리 어드레스(LPN)의 정보, 물리 어드레스(PPN)의 정보, 커맨드(CMD)의 정보, 상태 정보 등을 포함할 수 있다. 라우팅 정보는 패킷의 목적지를 지시할(Indicate) 수 있고, 예로서 구성 요소 식별자(Component Identifier) 또는 마커(Marker)를 포함할 수 있다.
논리 어드레스(LPN)는 호스트(1100a)로부터 수신되는 어드레스를 포함할 수 있고, 물리 어드레스(PPN)는 논리 어드레스(LPN)와 맵핑되는 물리 어드레스를 포함할 수 있다. 커맨드(CMD)는 패킷에 의해 요청되는 동작의 유형을 지시할 수 있다. 상태 정보는 하나 이상의 메모리 장치(1310) 및 컨트롤러(1330a)의 동작들에 관한 상태(예컨대, 오류 또는 예외와 관련되는 상태)를 지시할 수 있다.
다만, 하나의 패킷의 헤더 부분은 도 6에 나타낸 정보 중 적어도 하나의 정보를 포함하지 않을 수 있다. 예로서, 물리 어드레스(PPN)의 정보는 호스트 인터페이스 계층(1331a)으로부터 쓰기 관리 회로(1333)로 제공되는 패킷(예컨대, PCW1)에 포함되지 않을 수 있다. 예로서, 상태 정보는 호스트(1100a)로부터 하나 이상의 메모리 장치(1310)로 쓰기 데이터를 전달하기 위해 생성되는 패킷 또는 하나 이상의 메모리 장치(1310)로부터 호스트(1100a)로 읽기 데이터를 전달하기 위해 생성되는 패킷에 포함되지 않을 수 있다. 헤더 부분의 구성은 패킷의 목적에 의존하여 다양하게 변경 또는 수정될 수 있다.
테일 부분은 데이터 부분의 완료를 지시하기에 적절한 정보를 포함할 수 있다. 예로서, 테일 부분은 DIF(Data Integrity Feature), DIX(Data Integrity Extention), CRC(Cyclic Redundancy Check) 등과 같은 무결성/오류 검사 정보를 포함할 수 있다. 다만, 본 발명은 여기에 한정되지 않고, 테일 부분은 다른 정보를 포함하도록 구성될 수 있다.
하나의 패킷은 헤더 부분, 데이터 부분, 및 테일 부분 모두를 포함할 수 있다. 또는, 하나의 패킷은 헤더 부분, 데이터 부분, 및 테일 부분 중 적어도 하나를 포함하지 않을 수 있다.
예로서, 호스트(1100a)로부터 하나 이상의 메모리 장치(1310)로 쓰기 데이터를 전달하기 위해 생성되는 패킷 또는 하나 이상의 메모리 장치(1310)로부터 호스트(1100a)로 읽기 데이터를 전달하기 위해 생성되는 패킷은 헤더 부분, 데이터 부분, 및 테일 부분 모두를 포함할 수 있다. 예로서, 호스트(1100a)로부터 하나 이상의 메모리 장치(1310)로 읽기 커맨드를 전달하기 위해 생성되는 패킷, 데이터 영역 관리 회로(1337)로부터 프로세서(1339)로 제공되는 알림 패킷, 및 프로세서(1339)로부터 데이터 영역 관리 회로(1337)로 제공되는 관리 커맨드 패킷은 헤더 부분만을 포함할 수 있다.
다만, 위 예들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지는 않는다. 패킷의 구성은 프로세서(1339)의 개입 없이 별개의 하드웨어 회로에 의해 제 1 유형의 작업을 자동으로 관리하기 위해 다양하게 변경 또는 수정될 수 있다.
III. 예시적인 제 1 유형의 작업 - 쓰기 동작
도 7 및 도 8은 몇몇 실시 예에 따라 도 2의 스토리지 장치(1300a)에서 수행되는 예시적인 쓰기 동작을 설명하기 위한 블록도들이다. 도 9는 몇몇 실시 예에 따라 도 2의 스토리지 장치(1300a)에서 수행되는 예시적인 쓰기 동작을 설명하는 흐름도이다. 더 나은 이해를 가능하게 하기 위해, 도 7 내지 도 9가 함께 참조될 것이다.
도 7을 참조하면, 호스트 인터페이스 계층(1331a)은 호스트(1100a)로부터 쓰기 커맨드 및 쓰기 데이터를 수신할 수 있다(도 9의 S110 동작). 패킷화기(PCZ)는 쓰기 커맨드 및 쓰기 데이터를 패킷화할 수 있다(도 9의 S120 동작). 예로서, 패킷화기(PCZ)는 쓰기 커맨드 및 쓰기 데이터를 부가 정보와 결합하여, 패킷(PCW1)을 생성할 수 있다. 예로서, 패킷(PCW1)의 헤더 부분은 쓰기 커맨드 및 논리 어드레스의 정보를 포함할 수 있고, 패킷(PCW1)의 데이터 부분은 쓰기 데이터를 포함할 수 있다. 패킷(PCW1)은 쓰기 관리 회로(1333)로 제공될 수 있다.
몇몇 경우, 패킷(PCW1)의 헤더 부분은 데이터의 종류, 데이터의 구성, 예외 등의 정보를 포함할 수 있다. 쓰기 관리 회로(1333)는 패킷(PCW1)에 포함되는 정보에 기초하여, 각 정보를 관리할 것인지 여부 및 각 정보를 어떻게 관리할 것인지를 결정할 수 있다.
도 8을 참조하면, 예로서, 버퍼 관리기(1333b)는 버퍼 인덱스 및 논리 어드레스를 관리할 수 있다. 버퍼 인덱스는 제 1 내부 버퍼(1333a)의 각 버퍼 영역의 위치를 지시할 수 있다. 예로서, "0xA8"의 논리 어드레스와 관련되는 쓰기 데이터(D1)가 "1"의 버퍼 인덱스의 버퍼 영역에서 버퍼링되는 경우, 버퍼 관리기(1333b)는 "1"의 버퍼 인덱스가 "0xA8"의 논리 어드레스에 대응하도록 버퍼 인덱스 및 논리 어드레스를 관리할 수 있다.
예로서, 버퍼 관리기(1333b)는 버퍼 인덱스 및 논리 어드레스를 저장하기 위한 메모리 소자를 포함할 수 있다. 또는, 버퍼 관리기(1333b)는 버퍼 인덱스 및 논리 어드레스를 관리하기 위해 제 1 내부 버퍼(1333a)의 일부 메모리 영역을 이용할 수 있다.
제 1 내부 버퍼(1333a)는 각 버퍼 인덱스의 버퍼 영역에서 쓰기 데이터를 버퍼링할 수 있다. 도 8은 쓰기 데이터만 각 버퍼 인덱스의 버퍼 영역에서 관리됨을 보여준다. 그러나, 몇몇 실시 예에서 제 1 내부 버퍼(1333a)는 각 쓰기 데이터와 관련되는 다른 정보(예컨대, 논리 어드레스, 커맨드 등)를 더 관리할 수 있다.
쓰기 관리 회로(1333)가 패킷(PCW1)을 수신하는 경우, 버퍼 관리기(1333b)는 패킷(PCW1)에 응답하여 제 1 내부 버퍼(1333a)의 상태를 검사할 수 있다. 예로서, 버퍼 관리기(1333b)는 수신된 패킷(PCW1)에 포함되는 논리 어드레스가 이미 관리되고 있는지 여부를 검사할 수 있다. 따라서, 버퍼 관리기(1333b)는 위험 또는 충돌을 관리할 수 있다(도 9의 S130 동작).
예로서, 몇몇 경우, 패킷(PCW1)에 포함되는 쓰기 데이터는 제 1 내부 버퍼(1333a)에서 이미 버퍼링되고 있는 이전 쓰기 데이터와 관련되는 논리 어드레스와 동일한 논리 어드레스를 수반할 수 있다. 이는 호스트(1100a)가 동일한 논리 어드레스와 관련하여 이전 쓰기 데이터를 새로운 쓰기 데이터로 변경하도록 의도한다는 것을 의미할 수 있다. 따라서, 버퍼 관리기(1333b)의 판별에 응답하여, 제 1 내부 버퍼(1333a)는 동일한 논리 어드레스와 관련하여 이전 쓰기 데이터를 무효화(Invalidate)할 수 있고 새로운 쓰기 데이터를 버퍼링할 수 있다. 이는 동일한 논리 어드레스와 관련하여 데이터가 충돌하는 것을 방지할 수 있다.
반면, 몇몇 경우, 패킷(PCW1)은 새롭게 수신되는 논리 어드레스를 포함할 수 있다. 이 경우, 버퍼 관리기(1333b)는 패킷(PCW1)에 포함되는 새로운 쓰기 데이터를 위해 새로운 버퍼 인덱스의 버퍼 영역을 할당할 수 있다. 버퍼 관리기(1333b)는 새로운 버퍼 인덱스 및 새롭게 수신된 논리 어드레스를 관리할 수 있고, 제 1 내부 버퍼(1333a)는 할당된 버퍼 영역에서 새로운 쓰기 데이터를 버퍼링할 수 있다.
한편, 몇몇 경우, 호스트(1100a)로부터 수신되는 쓰기 데이터의 크기는 한 번의 쓰기 동작에 의해 저장되는 프로그램 단위 데이터의 프로그램 단위 크기와 상이할 수 있다. 예로서, 호스트(1100a)는 4킬로바이트(KB)의 쓰기 데이터를 스토리지 장치(1300a)로 제공할 수 있지만, 쓰기 동작은 한 번에 32KB의 프로그램 단위 데이터를 하나 이상의 메모리 장치(1310)에 저장할 수 있다. 이 경우, 제 1 내부 버퍼(1333a)는 프로그램 단위 데이터가 누적될 때까지 복수의 쓰기 데이터를 버퍼링할 수 있다(도 9의 S140 동작). 반대로, 쓰기 데이터의 크기가 프로그램 단위 크기보다 큰 경우, 쓰기 관리 회로(1333)는 쓰기 데이터를 복수의 프로그램 단위 데이터로 분할할 수 있다.
프로그램 단위 데이터가 누적된 경우, 쓰기 관리 회로(1333)는 프로그램 단위 데이터에 대해 가용 물리 어드레스를 할당할 수 있다(도 9의 S150 동작). 따라서, 프로그램 단위 데이터의 각 쓰기 데이터와 관련되는 논리 어드레스가 물리 어드레스와 맵핑될 수 있다. 할당될 물리 어드레스는 쓰기 관리 회로(1333), 데이터 영역 관리 회로(1337), 및/또는 프로세서(1339)에 의해 관리되는 가용 물리 어드레스들의 목록으로부터 선택될 수 있다.
다시 도 7을 참조하면, 쓰기 관리 회로(1333)는 패킷(PCW3)을 데이터 영역 관리 회로(1337)로 제공할 수 있다. 패킷(PCW3)의 헤더 부분은 쓰기 어드레스와 관련되는 논리 어드레스 및 할당된 물리 어드레스의 정보를 포함할 수 있다. 따라서, 데이터 영역 관리 회로(1337)는, 수신된 패킷(PCW3)에 기초하여, 논리 어드레스와 물리 어드레스 사이의 대응 관계를 관리할 수 있다. 데이터 영역 관리 회로(1337)는 대응 관계를 제 1 메타데이터(MD1)에서 관리할 수 있다(도 9의 S160 동작). 버퍼 메모리(1350)는 제 1 메타데이터(MD1)를 저장할 수 있다.
쓰기 관리 회로(1333)는 프로그램 단위 데이터를 위한 패킷(PCW2)을 준비할 수 있다(도 9의 S160 동작). 패킷(PCW2)은 프로그램 단위 데이터, 및 할당된 물리 어드레스를 지시하는 부가 정보를 포함할 수 있다. 쓰기 관리 회로(1333)는 패킷(PCW2)을 메모리 인터페이스 계층(1332)으로 전달할 수 있다. 따라서, 쓰기 데이터 및 쓰기 커맨드는 패킷 단위의 스트림으로 쓰기 경로를 따라 쓰기 관리 회로(1333)를 통해 전달될 수 있다.
프로그램 단위 데이터 및 할당된 물리 어드레스는 하나 이상의 메모리 장치(1310)로 전달될 수 있다(도 9의 S170 동작). 따라서, 프로그램 단위 데이터는 할당된 물리 어드레스에 의해 지시되는 메모리 영역에 저장될 수 있다.
IV. 예시적인 제 1 유형의 작업 - 읽기 동작
도 10 내지 도 12는 몇몇 실시 예에 따라 도 2의 스토리지 장치(1300a)에서 수행되는 예시적인 읽기 동작을 설명하기 위한 블록도들이다. 도 13은 몇몇 실시 예에 따라 도 2의 스토리지 장치(1300a)에서 수행되는 예시적인 읽기 동작을 설명하는 흐름도이다. 더 나은 이해를 가능하게 하기 위해, 도 10 내지 도 13이 함께 참조될 것이다.
도 10을 참조하면, 호스트 인터페이스 계층(1331a)은 호스트(1100a)로부터 읽기 커맨드를 수신할 수 있다(도 13의 S210 동작). 패킷화기(PCZ)는 읽기 커맨드를 패킷화할 수 있다(도 13의 S220 동작). 예로서, 패킷화기(PCZ)는 읽기 커맨드를 부가 정보와 결합하여, 패킷(PCR1)을 생성할 수 있다. 예로서, 패킷(PCR1)의 헤더 부분은 읽기 데이터와 관련되는 읽기 커맨드 및 논리 어드레스의 정보를 포함할 수 있다. 패킷(PCR1)은 쓰기 관리 회로(1333)로 제공될 수 있다.
도 11을 참조하면, 쓰기 관리 회로(1333)가 패킷(PCR1)을 수신하는 경우, 버퍼 관리기(1333b)는 패킷(PCR1)에 응답하여 제 1 내부 버퍼(1333a)의 상태를 검사할 수 있다(도 13의 S230 동작). 예로서, 버퍼 관리기(1333b)는 수신된 패킷(PCR1)에 포함되는 논리 어드레스가 이미 관리되고 있는지 여부(즉, 패킷(PCR1)에 의해 요청되는 읽기 데이터가 제 1 내부 버퍼(1333a)에서 버퍼링되는지 여부)를 검사할 수 있다.
몇몇 경우, 패킷(PCR1)에 의해 요청되는 읽기 데이터가 이미 하나 이상의 메모리 장치(1310)에 저장되었을 수 있고, 제 1 내부 버퍼(1333a)에서 버퍼링되지 않을 수 있다(즉, 버퍼 미스(Buffer Miss), 도 13의 S240 동작의 No). 이 경우, 쓰기 관리 회로(1333)는 읽기 커맨드 및 논리 어드레스를 포함하는 패킷(PCR1)을 데이터 영역 관리 회로(1337)로 제공할 수 있다.
데이터 영역 관리 회로(1337)는, 패킷(PCR1) 및 읽기 커맨드에 응답하여, 논리 어드레스를 획득할 수 있다. 데이터 영역 관리 회로(1337)는, 버퍼 메모리(1350)의 제 1 메타데이터(MD1)에 기초하여, 획득된 논리 어드레스에 대응하는 물리 어드레스를 획득할 수 있다(도 13의 S250 동작). 데이터 영역 관리 회로(1337)는 패킷(PCR2)을 생성할 수 있다. 패킷(PCR2)의 헤더 부분은 읽기 커맨드 및 획득된 물리 어드레스의 정보를 포함할 수 있다.
패킷(PCR2)은 메모리 인터페이스 계층(1332)으로 제공될 수 있다. 따라서, 읽기 커맨드 및 물리 어드레스가 메모리 인터페이스 계층(1332)을 통해 하나 이상의 메모리 장치(1310)로 제공될 수 있다. 읽기 커맨드에 응답하여, 물리 어드레스에 의해 지시되는 메모리 영역으로부터 읽기 데이터가 출력될 수 있다.
메모리 인터페이스 계층(1332)은, 출력된 읽기 데이터에 기초하여, 패킷(PCR3)을 읽기 관리 회로(1335)로 제공할 수 있다. 패킷(PCR3)의 데이터 부분은 출력된 읽기 데이터를 포함할 수 있고, 따라서 읽기 관리 회로(1335)는 읽기 데이터를 수신할 수 있다(도 13의 S255 동작). 제 2 내부 버퍼(1335a)는 읽기 데이터를 버퍼링할 수 있다. 예로서, 읽기 관리 회로(1335)는 제 2 내부 버퍼(1335a)에서 읽기 데이터 및 각 읽기 데이터와 관련되는 논리 어드레스를 관리할 수 있다.
반면, 몇몇 경우, 패킷(PCR1)에 의해 요청되는 읽기 데이터가 하나 이상의 메모리 장치(1310)에 아직 저장되지 않았을 수 있고, 아직 제 1 내부 버퍼(1333a)에서 버퍼링될 수 있다(즉, 버퍼 히트(Buffer Hit), 도 13의 S240 동작의 Yes). 예로서, 도 12를 참조하면, "0x3F"의 논리 어드레스와 관련되는 읽기 데이터(D3)는 프로그램 단위 데이터가 누적되기 전에 제 1 내부 버퍼(1333a)에서 버퍼링될 수 있다. 호스트(1100a)는 읽기 데이터(D3)를 읽고자 의도할 수 있다.
버퍼 관리기(1333b)는 패킷(PCR1)에 기초하여 버퍼 히트를 판별할 수 있다. 이 경우, 쓰기 관리 회로(1333)는 패킷(PCR5)을 읽기 관리 회로(1335)로 제공할 수 있다. 패킷(PCR5)의 데이터 부분은 읽기 데이터(D3)를 포함할 수 있다. 따라서, 읽기 관리 회로(1335)는 제 1 내부 버퍼(1333a)에 버퍼링된 쓰기 데이터로부터 읽기 데이터(D3)를 획득할 수 있다(도 13의 S260 동작). 제 2 내부 버퍼(1335a)는 읽기 데이터를 버퍼링할 수 있다.
다시 도 10을 참조하면, 읽기 관리 회로(1335)는 패킷(PCR3)의 데이터 부분(즉, 하나 이상의 메모리 장치(1310)로부터 출력된 읽기 데이터) 또는 패킷(PCR5)의 데이터 부분(즉, 쓰기 관리 회로(1333)에서 버퍼링되었던 읽기 데이터)을 버퍼링할 수 있다(도 13의 S270 동작). 읽기 관리 회로(1335)는 읽기 데이터를 위한 패킷(PCR4)을 준비할 수 있다(도 13의 S270 동작). 패킷(PCR4)의 헤더 부분은 호스트(1100a)에 의해 요청된 논리 어드레스의 정보를 포함할 수 있고, 패킷(PCR4)의 데이터 부분은 호스트(1100a)에 의해 요청된 읽기 데이터를 포함할 수 있다.
읽기 관리 회로(1335)는 패킷(PCR4)을 호스트 인터페이스 계층(1331a)으로 전달할 수 있다. 따라서, 읽기 데이터는 패킷 단위의 스트림으로 읽기 경로를 따라 읽기 관리 회로(1335)를 통해 전달될 수 있다. 읽기 데이터는 컨트롤러(1330a)의 외부로(예로서, 호스트(1100a)로) 전달될 수 있다(도 13의 S280 동작).
몇몇 실시 예에서, 메모리 인터페이스 계층(1332)은 읽기 동작의 결과와 관련되는 정보를 패킷(PCR3)에 추가할 수 있다. 예로서, 읽기 동작의 결과와 관련되는 정보는 오류, 예외 등의 정보를 포함할 수 있다. 몇몇 경우, 읽기 동작의 결과와 관련되는 정보는 읽기 데이터와 함께 호스트(1100a)로 전달될 수 있다.
V. 예시적인 제 2 유형의 작업
도 14는 몇몇 실시 예에 따라 도 2의 스토리지 장치(1300a)에서 수행되는 예시적인 관리 동작을 설명하기 위한 블록도이다. 도 15는 몇몇 실시 예에 따라 도 2의 스토리지 장치(1300a)에서 수행되는 예시적인 관리 동작을 설명하는 흐름도이다. 더 나은 이해를 가능하게 하기 위해, 도 14 및 도 15가 함께 참조될 것이다.
도 14를 참조하면, 데이터 영역 관리 회로(1337)는 하나 이상의 메모리 장치(1310) 및 컨트롤러(1330a)의 동작들에 관한 상태를 모니터링할 수 있다(도 15의 S310 동작). 데이터 영역 관리 회로(1337)는, 모니터링되는 상태에 기초하여, 프로세서(1339)의 개입을 트리거하기 위한 개입 조건을 관리할 수 있다. 몇몇 실시 예에서, 데이터 영역 관리 회로(1337)는 개입 조건을 관리하기 위해 하드웨어 회로(예컨대, 카운터 회로, 래치 회로 등)를 포함할 수 있다.
예로서, 데이터 영역 관리 회로(1337)는 쓰기 관리 회로(1333) 및 읽기 관리 회로(1335)로부터 다양한 정보를 획득할 수 있다. 쓰기 관리 회로(1333)는 정보를 포함하는 패킷(PCC1)을 데이터 영역 관리 회로(1337)로 제공할 수 있다. 읽기 관리 회로(1335)는 정보를 포함하는 패킷(PCC2)을 데이터 영역 관리 회로(1337)로 제공할 수 있다.
예로서, 패킷(PCC1)의 헤더 부분은 쓰기 데이터가 하나 이상의 메모리 장치(1310)에 저장됨에 따라 쓰기 데이터에 의해 점유된 메모리 영역의 물리 어드레스의 정보를 포함할 수 있다. 데이터 영역 관리 회로(1337)는, 패킷(PCC1)에 기초하여, 하나 이상의 메모리 장치(1310)의 스페어(Spare) 영역들 또는 가용 영역들의 절대적/상대적인 양을 관리할 수 있다. 데이터 영역 관리 회로(1337)는, 패킷(PCC1)에 기초하여, 하나 이상의 메모리 장치(1310)의 각 메모리 영역의 웨어 레벨을 관리할 수 있다. 이를 위해, 예로서, 데이터 영역 관리 회로(1337)는 카운터 회로를 이용하여 양 또는 레벨을 카운트할 수 있다.
예로서, 패킷(PCC2)의 헤더 부분은 읽기 데이터가 하나 이상의 메모리 장치(1310)로부터 출력됨에 따라 액세스된 메모리 영역의 물리 어드레스의 정보를 포함할 수 있다. 예로서, 패킷(PCC2)의 헤더 부분은 읽기 데이터의 오류(예컨대, 패리티 비일관성(Parity Inconsistency), 정정 불가능한 ECC(Uncorrectable Error Correction Code) 오류, 메모리 페일(Memory Fail) 등)의 정보를 포함할 수 있다. 데이터 영역 관리 회로(1337)는, 패킷(PCC2)에 기초하여, 카운터 회로를 이용하여 특정 메모리 영역으로의 액세스들의 횟수를 카운트할 수 있다. 데이터 영역 관리 회로(1337)는, 패킷(PCC2)에 기초하여, 읽기 데이터의 오류를 판별할 수 있다.
이외에도, 데이터 영역 관리 회로(1337)는, 센서 회로를 이용하여, 컨트롤러(1330a)로 공급되는 전력의 상태가 불안정한지 여부를 모니터링하거나 하드웨어 회로의 온도를 감지할 수 있다. 따라서, 데이터 영역 관리 회로(1337)는 스토리지 장치(1300a)에서 수행되는 동작들을 모니터링할 수 있고 스토리지 장치(1300a)의 동작 상태에 관한 다양한 정보를 획득할 수 있다.
데이터 영역 관리 회로(1337)는, 획득되는 정보에 기초하여, 프로세서(1339)의 개입을 트리거하기 위한 개입 조건이 충족되었는지 여부를 판별할 수 있다(도 15의 S320 동작). 개입 조건은 스토리지 장치(1300a)의 동작에 오류 또는 예외적인 상태가 발생하는 경우에 충족될 수 있다.
예로서, 개입 조건은 카운터 회로의 카운트 값이 기준 값보다 커지거나 작아진 경우(예컨대, 스페어 영역들의 양이 기준 양보다 적어진 경우, 웨어 레벨이 기준 레벨보다 높아진 경우 등)에 충족될 수 있다. 예로서, 개입 조건은 제 1 유형의 작업과 관련되는 오류 또는 예외가 발생한 경우(예컨대, 읽기 데이터에 정정 불가능한 ECC 오류가 있는 경우 등)에 충족될 수 있다. 예로서, 개입 조건은 비정상 상태가 관측된 경우(예컨대, 전력 공급이 불안정한 경우, 하드웨어 회로의 온도가 과도하게 높은 경우 등)에 충족될 수 있다.
개입 조건이 충족되지 않는 경우(도 15의 S320 동작의 No), 데이터 영역 관리 회로(1337)는 스토리지 장치(1300a)의 상태를 계속 모니터링할 수 있다(도 15의 S310 동작).
반면, 개입 조건이 충족되는 경우(도 15의 S320 동작의 Yes), 데이터 영역 관리 회로(1337)는 프로세서(1339)의 개입을 트리거하기 위해 패킷(PCC3)을 프로세서(1339)로 제공할 수 있다. 패킷(PCC3)은 데이터 영역 관리 회로(1337)에 의해 모니터링된 상태(예컨대, 카운트 값, 오류, 예외, 비정상 상태 등)의 정보를 프로세서(1339)로 알리기 위해 제공될 수 있다(도 15의 S330 동작).
패킷(PCC3)이 수신되는 경우, 프로세서(1339)는 제 2 유형의 작업을 처리하기 위해 패킷(PCC4)을 출력할 수 있다. 예로서, 패킷(PCC4)의 헤더 부분은 데이터 영역 관리 회로(1337)에 의해 모니터링된 상태를 해소하기 위해 수행될 관리 동작을 지시하는(Direct) 관리 커맨드를 포함할 수 있다. 데이터 영역 관리 회로(1337)는, 프로세서(1339)로부터 수신되는 패킷(PCC4)에 기초하여, 관리 커맨드를 수신할 수 있다(도 15의 S340 동작).
프로세서(1339)는 소프트웨어 및/또는 펌웨어의 프로그램 코드에 기초하여 관리 커맨드를 준비할 수 있다. 프로세서(1339)는 제 2 유형의 작업을 처리하기 위해, 제 2 메타데이터(MD2)를 버퍼 메모리(1350)에 저장하거나 제 2 메타데이터(MD2)를 버퍼 메모리(1350)로부터 읽을 수 있다. 예로서, 제 2 메타데이터(MD2)는 하나 이상의 메모리 장치(1310)의 스페어 영역들 또는 가용 영역들의 정보, 하나 이상의 메모리 장치(1310)의 메모리 영역들의 웨어 레벨들의 정보, 하나 이상의 메모리 장치(1310)의 메모리 영역들에서 수행된 읽기 동작들의 횟수의 정보, 오류 검출 및 정정에 이용되는 ECC 정보 등 중 적어도 하나를 포함할 수 있다.
데이터 영역 관리 회로(1337)는 관리 커맨드에 의해 지시되는 관리 동작을 수행할 수 있다(도 15의 S350 동작). 관리 동작이 쓰기 동작 및/또는 읽기 동작을 수반하는 경우, 데이터 영역 관리 회로(1337)는 쓰기 관리 회로(1333) 및/또는 읽기 관리 회로(1335)로 적절한 커맨드를 제공할 수 있다.
예로서, 스페어 영역들의 양이 기준 양보다 적어진 경우, 관리 동작은 스페어 영역들을 확보하기 위한 가비지 콜렉션을 포함할 수 있다. 데이터 영역 관리 회로(1337)는 무효화(Invalidated) 메모리 영역 및 희생(Victim) 메모리 영역의 정보를 포함하고 가비지 콜렉션을 요청하는 패킷(PCC5)을 메모리 인터페이스 계층(1332)으로 제공할 수 있다. 따라서, 스페어 영역들을 확보하기 위해 읽기 동작 및 쓰기 동작이 수반될 수 있다.
가비지 콜렉션 동안, 하나 이상의 메모리 장치(1310)로부터 읽힌 데이터는 패킷(PCR6)에 포함되어 읽기 관리 회로(1335)로 제공될 수 있다. 읽기 관리 회로(1335)는 수신된 데이터를 포함하는 패킷(PCW4)을 쓰기 관리 회로(1333)로 제공할 수 있다. 쓰기 관리 회로(1333)는 수신된 데이터를 포함하는 패킷(PCW5)을 메모리 인터페이스 계층(1332)으로 제공할 수 있다. 데이터는, 스페어 영역들이 확보되도록, 새로운 메모리 영역에 정렬될 수 있다.
예로서, 읽기 데이터에 ECC 오류가 있는 경우, 관리 동작은 오류를 해소하고 읽기 데이터를 복구(Recovery)하기 위한 복구 동작을 포함할 수 있다. 프로세서(1339)는, 패킷(PCC4)을 통해, 읽기 데이터를 복구하기 위해 참조되는 메타데이터를 데이터 영역 관리 회로(1337)로 제공할 수 있다. 데이터 영역 관리 회로(1337)는 수신된 메타데이터를 포함하는 패킷(PCC5)을 메모리 인터페이스 계층(1332)으로 제공할 수 있다. 따라서, 메타데이터에 기초하여 복구된 읽기 데이터를 포함하는 패킷(PCR6)이 읽기 관리 회로(1335)로 제공될 수 있다.
예로서, 컨트롤러(1330a)로 공급되는 전력의 상태가 불안정한 경우, 관리 동작은 쓰기 관리 회로(1333)에서 버퍼링되는 데이터를 보존하기 위한 플러시(Flush) 동작을 포함할 수 있다. 데이터 영역 관리 회로(1337)는 쓰기 관리 회로(1333)에서 버퍼링되는 데이터를 하나 이상의 메모리 장치(1310)로 플러시 할 것을 쓰기 관리 회로(1333)에게 요청할 수 있다. 따라서, 전력 공급이 중단되더라도, 쓰기 관리 회로(1333)에서 버퍼링되는 데이터가 손실되지 않을 수 있다.
이외에도, 웨어 레벨링(Wear Leveling), 리드 리클레임(Read Reclaim), 리드 리프레시(Read Refresh), 배드 블록(Bad Block) 관리 등과 같이 다양한 관리 동작이 위에서 설명된 것과 유사한 방식에 따라 수행될 수 있다.
다만, 위 예들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지는 않는다. 개입 조건 및 관리 동작은 프로세서(1339)의 제어에 따라 복합 동작을 처리하고 하나 이상의 메모리 장치(1310) 및 컨트롤러(1330a)를 적절히 동작시키기 위해 다양하게 변경 또는 수정될 수 있다.
VI. 부연 설명
도 16은 몇몇 실시 예에 따른 도 2의 스토리지 장치(1300a)의 전반적인 동작을 설명하는 흐름도이다.
스토리지 장치(1300a)와 관련하여 어떤 작업이 요청되지 않는 경우(S410 동작의 No), 컨트롤러(1330a)는 대기할 수 있다. 반면, 스토리지 장치(1300a)와 관련하여 특정 작업이 요청되는 경우(S410 동작의 Yes), 컨트롤러(1330a)는 그 특정 작업을 관리 또는 처리하기 위해 요구되는 동작을 수행할 수 있다.
본 개시의 실시 예들에서, 요청되는 작업은 제 1 유형의 작업 및 제 2 유형의 작업 중 하나일 수 있다(S420 동작). 요청되는 작업이 제 1 유형의 작업인 경우, 요청되는 작업은 하드웨어 회로(예컨대, 도 3 및 도 4의 제 1 유형 작업 관리 회로(HW), 및 도 5 및 도 17의 쓰기 관리 회로(1333), 읽기 관리 회로(1335), 및 데이터 영역 관리 회로(1337))에 의해 관리될 수 있다(S430 동작). 프로세서(1339)(예컨대, 프로세서(1339) 상에서 실행되는 소프트웨어 및/또는 펌웨어의 프로그램 코드)는 제 1 유형의 작업에 개입하지 않을 수 있다.
요청되는 작업이 제 2 유형의 작업인 경우, 하드웨어 회로는 프로세서(1339)의 개입을 트리거할 수 있다(S440 동작). 프로세서(1339)는, 프로세서(1339) 상에서 실행되는 소프트웨어 및/또는 펌웨어의 프로그램 코드에 기초하여, 관리 커맨드를 준비할 수 있다(S441 동작). 프로세서(1339)로부터의 관리 커맨드에 응답하여, 하드웨어 회로가 제 2 유형의 작업을 수행할 수 있다(S442 동작). 프로세서(1339)는 제 2 유형의 작업을 처리하는 것에만 개입할 수 있다.
한편, 몇몇 경우, 프로세서(1339)가 제 2 유형의 작업을 처리하는 동안, 제 1 유형의 작업이 전용 하드웨어 회로에 의해 관리될 수 있다. 즉, 제 1 유형의 작업은 제 2 유형의 작업에 기인하여 중단됨이 없이, 제 2 유형의 작업을 처리하는 것과 동시에 관리될 수 있다. 제 1 유형의 작업은 프로세서(1339)의 개입 없이 전용 하드웨어 회로에 의해 관리될 수 있고, 따라서 제 2 유형의 작업과 병렬로 다루어질 수 있다.
도 17은 도 1의 스토리지 장치(1300)와 관련되는 예시적인 구성을 보여주는 블록도이다. 도 1의 전자 시스템(1000)은 도 17의 전자 시스템(1000b)을 포함할 수 있다. 도 1의 스토리지 장치(1300)는 도 17의 스토리지 장치(1300b)를 포함할 수 있다.
도 2 및 도 5를 도 17과 비교하면, 몇몇 실시 예에서, 패킷화기(PCZ)가 컨트롤러(1330b)의 호스트 인터페이스 계층(1331b)에 포함되는 대신, 호스트(1100b)에 포함될 수 있다. 패킷화기(PCZ)는 호스트(1100b)에서 생성되는 커맨드(CMD), 데이터(DAT), 및 어드레스(ADDR)에 기초하여 패킷을 생성할 수 있다. 따라서, 컨트롤러(1330b)는 호스트(1100b)와 패킷(PCW 또는 PCR)을 교환할 수 있고, 패킷(PCW 또는 PCR)에 기초하여 제 1 유형의 작업을 관리할 수 있다.
도 17과 관련하여 설명되지 않은 다른 구성 요소들은 도 1 내지 도 16을 참조하여 설명된 것들과 실질적으로 동일하게 구성되고 동작할 수 있다. 간결성을 위해, 중복되는 설명들은 생략될 것이다.
위 설명들은 본 발명을 구현하기 위한 예시적인 구성들 및 동작들을 제공하도록 의도된다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 위 실시 예들을 단순하게 변경하거나 수정하여 얻어질 수 있는 구현들도 포함할 것이다. 또한, 본 발명의 기술 사상은 위에서 설명된 실시 예들을 앞으로 용이하게 변경하거나 수정하여 달성될 수 있는 구현들도 포함할 것이다.
1000, 1000a, 1000b : 전자 시스템

Claims (20)

  1. 스토리지 장치에 있어서,
    불휘발성 메모리 장치;
    버퍼 메모리; 및
    상기 불휘발성 메모리 장치 및 버퍼 메모리를 제어하도록 구성된 컨트롤러를 포함하고,
    상기 컨트롤러는:
    소프트웨어 코드를 실행하도록 구성된 프로세서;
    호스트 인터페이스 레이어;
    상기 프로세서의 간섭없이 상기 불휘발성 메모리 장치에 대한 쓰기 동작을 관리하도록 구성된 쓰기 관리 회로, 단, 상기 쓰기 동작은 상기 호스트 인터페이스 레이어를 통해 상기 쓰기 동작과 연관된 제1 쓰기 패킷을 수신하는 것, 상기 제1 쓰기 패킷에 포함된 제1 쓰기 데이터를 상기 쓰기 관리 회로의 제1 내부 버퍼에 버퍼링하는 것, 상기 제1 쓰기 패킷에 대응하는 논리 주소에 대하여 상기 불휘발성 메모리 장치의 물리 주소를 할당하는 것, 상기 제1 내부 버퍼에 버퍼링된 상기 제1 쓰기 데이터 및 상기 할당된 물리 주소를 포함하는 제2 쓰기 패킷을 출력하는 것, 및 상기 논리 주소 및 상기 할당된 물리 주소의 정보를 포함하는 제3 쓰기 패킷을 출력하는 것을 포함하고;
    상기 쓰기 관리 회로로부터 상기 제3 쓰기 패킷을 수신하고, 상기 제3 쓰기 패킷에 포함된 상기 논리 주소 및 상기 할당된 물리 주소의 정보를 포함하는 제1 메타 데이터를 상기 버퍼 메모리에 저장하도록 구성된 데이터 도메인 관리 회로; 및
    상기 제2 쓰기 패킷을 수신하고, 상기 쓰기 데이터가 상기 할당된 물리 주소에 대응하는 메모리 영역에 저장되도록 상기 불휘발성 메모리 장치를 제어하도록 구성된 메모리 인터페이스 레이어를 포함하고,
    상기 불휘발성 메모리 장치에 대한 가비지 콜렉션이 요구되는 경우, 상기 데이터 도메인 관리 회로 및 상기 쓰기 관리 회로는 상기 소프트웨어 코드를 실행하는 상기 프로세서로부터의 제1 제어 패킷에 응답하여 상기 가비지 콜렉션을 수행하는 스토리지 장치.
  2. 제 1 항에 있어서,
    상기 호스트 인터페이스 레이어는 쓰기 커맨드, 상기 제1 쓰기 데이터, 및 부가 정보를 조합하여 상기 제1 쓰기 패킷을 생성하도록 구성된 패킷화기를 포함하고,
    상기 부가 정보는 상기 제1 쓰기 패킷의 목적지, 주소, 및 에러 체크 비트 중 적어도 하나를 포함하는 스토리지 장치.
  3. 제 2 항에 있어서,
    상기 컨트롤러는 상기 프로세서의 상기 간섭없이 상기 불휘발성 메모리 장치에 대한 읽기 동작을 관리하도록 구성된 읽기 관리 회로를 더 포함하는 스토리지 장치.
  4. 제 3 항에 있어서,
    상기 쓰기 관리 회로는 상기 제1 내부 버퍼의 할당을 관리하도록 구성된 버퍼 관리자를 더 포함하는 스토리지 장치.
  5. 제 4 항에 있어서,
    상기 쓰기 관리 회로는 상기 호스트 인터페이스 레이어로부터 제1 읽기 패킷을 수신하고, 상기 버퍼 관리자가 상기 제1 읽기 패킷에 대응하는 읽기 데이터가 상기 제1 내부 버퍼에 없는 것으로 판별한 경우, 상기 제1 읽기 패킷을 상기 데이터 도메인 관리 회로로 상기 제1 읽기 패킷을 전송하도록 더 구성되고,
    상기 데이터 도메인 관리 회로는 상기 버퍼 메모리의 메타 데이터를 기반으로 상기 제1 읽기 패킷에 대응하는 물리 주소를 획득하고, 상기 제1 읽기 패킷에 대응하는 상기 물리 주소를 포함하는 제2 읽기 패킷을 출력하도록 더 구성되고,
    상기 메모리 인터페이스 레이어는 상기 제2 읽기 패킷을 수신하고, 상기 제1 읽기 패킷에 대응하는 상기 물리 주소로부터 제1 읽기 데이터를 읽도록 상기 불휘발성 메모리 장치를 제어하고, 상기 제1 읽기 데이터를 포함하는 제3 읽기 패킷을 출력하도록 더 구성되고,
    상기 읽기 관리 회로는 상기 제3 읽기 패킷을 수신하고, 상기 제1 읽기 데이터를 상기 읽기 관리 회로의 제2 내부 버퍼에 버퍼링하고, 상기 제2 내부 버퍼에 버퍼링된 상기 제1 읽기 데이터를 포함하는 제4 읽기 패킷을 출력하도록 더 구성되고,
    상기 호스트 인터페이스 레이어는 상기 제4 읽기 패킷을 수신하고, 상기 제4 읽기 패킷을 기반으로 상기 제1 읽기 데이터를 출력하도록 더 구성되는 스토리지 장치.
  6. 제 4 항에 있어서,
    상기 쓰기 관리 회로는 상기 호스트 인터페이스 레이어로부터 제1 읽기 패킷을 수신하고, 상기 버퍼 관리자가 상기 제1 읽기 패킷에 대응하는 제1 읽기 데이터가 상기 제1 내부 버퍼에 존재하는 것으로 판별한 경우, 상기 제1 읽기 데이터를 포함하는 제5 읽기 패킷을 상기 읽기 관리 회로로 전송하도록 더 구성되고,
    상기 읽기 관리 회로는 상기 제5 읽기 패킷을 수신하고, 상기 제1 읽기 데이터를 포함하는 제6 읽기 패킷을 출력하도록 더 구성되고,
    상기 호스트 인터페이스 레이어는 상기 제6 읽기 패킷을 수신하고, 상기 제6 읽기 패킷을 기반으로 상기 제1 읽기 데이터를 출력하도록 더 구성되는 스토리지 장치.
  7. 제 3 항에 있어서,
    상기 데이터 도메인 관리 회로는 상기 쓰기 관리 회로로부터의 데이터 크기에 대한 정보를 포함하는 제3 제어 패킷을 기반으로 제2 제어 패킷을 출력하도록 더 구성되고,
    상기 프로세서는 상기 데이터 도메인 관리 회로로부터의 상기 제2 제어 패킷에 응답하여 상기 제1 제어 패킷을 출력하도록 더 구성된 스토리지 장치.
  8. 제 7 항에 있어서,
    상기 프로세서는 상기 버퍼 메모리에 저장된 제2 메타 데이터를 기반으로 상기 제1 제어 패킷을 출력하고,
    상기 제2 메타 데이터는 상기 불휘발성 메모리 장치의 스페어 영역 또는 가용 영역에 대한 정보, 상기 불휘발성 메모리 장치의 메모리 영역들의 웨어 레벨들의 정보, 상기 불휘발성 메모리 장치의 메모리 영역들에서 수행된 읽기 동작들의 횟수에 대한 정보, 및 에러 정정 및 검출에서 사용된 ECC 정보 중 적어도 하나를 포함하는 스토리지 장치.
  9. 제 7 항에 있어서,
    상기 데이터 도메인 관리 회로는 상기 제1 제어 패킷에 응답하여, 상기 메모리 인터페이스 레이어로 제4 제어 패킷을 출력하도록 더 구성되고,
    상기 제4 제어 패킷은 희생 메모리 블록에 대한 정보를 포함하는 스토리지 장치.
  10. 제 9 항에 있어서,
    상기 메모리 인터페이스 레이어는 상기 제4 제어 패킷에 응답하여 상기 불휘발성 메모리 장치의 상기 희생 메모리 블록으로부터 상기 가비지 콜렉션을 위한 데이터를 읽고, 상기 가비지 콜렉션을 위한 상기 데이터를 포함하는 제1 읽기 패킷을 출력하도록 더 구성된 스토리지 장치.
  11. 제 10 항에 있어서,
    상기 읽기 관리 회로는 상기 제1 읽기 패킷에 응답하여, 상기 가비지 콜렉션을 위한 상기 데이터를 포함하는 제4 쓰기 패킷을 출력하도록 더 구성된 스토리지 장치.
  12. 제 11 항에 있어서,
    상기 쓰기 관리 회로는 상기 제4 쓰기 패킷에 응답하여, 상기 가비지 콜렉션을 위한 상기 데이터를 포함하는 제5 쓰기 패킷을 출력하도록 구성된 스토리지 장치.
  13. 제 12 항에 있어서,
    상기 메모리 인터페이스 레이어는, 상기 가비지 콜렉션을 위한 상기 데이터가 상기 희생 메모리 블록과 다른 메모리 블록에 저장되도록 상기 불휘발성 메모리 장치를 제어하도록 더 구성된 스토리지 장치.
  14. 제 3 항에 있어서,
    상기 데이터 도메인 관리 회로는 상기 읽기 관리 회로로부터의 제3 제어 패킷을 기반으로 제2 제어 패킷을 출력하도록 더 구성되고,
    상기 제3 제어 패킷은 읽기 데이터의 에러에 대한 정보를 포함하고,
    상기 프로세서는 상기 데이터 도메인 관리 회로로부터의 상기 제2 제어 패킷에 응답하여, 제4 제어 패킷을 출력하도록 더 구성되고,
    상기 제4 제어 패킷은 상기 읽기 데이터의 상기 에러를 정정하는데 참조되는 메타 데이터와 관련된 정보를 포함하는 스토리지 장치.
  15. 제 14 항에 있어서,
    상기 데이터 도메인 관리 회로는 상기 제4 제어 패킷에 응답하여, 메타 데이터와 연관된 정보를 포함하는 제5 제어 패킷을 출력하도록 더 구성된 스토리지 장치.
  16. 제 15 항에 있어서,
    상기 메모리 인터페이스 레이어는 상기 불휘발성 메모리 장치로부터 데이터를 읽고, 상기 제5 제어 패킷에 포함된 상기 메타 데이터를 기반으로 상기 불휘발성 메모리 장치로부터 읽은 데이터의 에러를 정정하고, 상기 정정된 읽은 데이터를 포함하는 제1 읽기 패킷을 출력하도록 더 구성된 스토리지 장치.
  17. 제 1 항에 있어서,
    상기 프로세서는 상기 소프트웨어 코드를 실행함으로써, 상기 불휘발성 메모리 장치에 대한 웨어 레벨링 동작, 리드 리클레임, 리드 리프레쉬, 전력 관리 동작, 배드 블록 관리 동작, 및 에러 검출 및 정정 동작 중 적어도 하나를 포함하는 관리 동작을 실행하도록 더 구성된 스토리지 장치.
  18. 스토리지 장치에 있어서,
    불휘발성 메모리 장치;
    버퍼 메모리; 및
    상기 불휘발성 메모리 장치 및 버퍼 메모리를 제어하도록 구성된 컨트롤러를 포함하고,
    상기 컨트롤러는:
    소프트웨어 코드를 실행하도록 구성된 프로세서;
    외부 호스트로부터의 쓰기 요청에 응답하여 제1 쓰기 패킷을 출력하고, 상기 외부 호스트로부터의 읽기 요청에 응답하여 제1 읽기 패킷을 출력하도록 구성된 호스트 인터페이스 레이어;
    상기 프로세서의 간섭없이, 상기 호스트 인터페이스 레이어로부터의 상기 제1 쓰기 패킷에 응답하여 제2 쓰기 패킷 및 제3 쓰기 패킷을 출력하고, 상기 호스트 인터페이스로부터의 상기 제1 읽기 패킷에 응답하여 제2 읽기 패킷을 출력하도록 구성된 쓰기 관리 회로;
    상기 프로세서의 간섭없이, 상기 제3 쓰기 패킷에 응답하여 상기 버퍼 메모리에 제1 메타 데이터를 저장하고, 상기 제2 읽기 패킷에 응답하여 제3 읽기 패킷을 출력하도록 구성된 데이터 도메인 관리 회로;
    상기 제2 쓰기 패킷에 응답하여 상기 쓰기 요청에 대응하는 제1 쓰기 데이터를 상기 불휘발성 메모리 장치에 저장하고, 상기 제2 읽기 패킷에 응답하여 제3 읽기 패킷을 출력하도록 구성된 메모리 인터페이스 레이어; 및
    상기 프로세서의 간섭없이, 상기 제3 읽기 패킷에 응답하여 상기 읽기 요청에 대응하는 제1 읽기 데이터를 포함하는 제4 읽기 패킷을 출력하도록 구성된 읽기 관리 회로를 포함하고,
    상기 불휘발성 메모리 장치에 대한 가비지 콜렉션이 요구되는 경우, 상기 데이터 도메인 관리 회로 및 상기 쓰기 관리 회로는 상기 소프트웨어 코드를 실행하는 상기 프로세서로부터의 제1 제어 패킷에 응답하여 상기 가비지 콜렉션을 수행하고,
    상기 쓰기 관리 회로는 상기 호스트 인터페이스 레이어로부터 수신된 상기 제1 쓰기 패킷에 대응하는 쓰기 동작을 관리하고, 상기 쓰기 동작은 상기 쓰기 요청에 대한 상기 제1 쓰기 데이터를 제1 내부 버퍼에 버퍼링하는 것, 상기 제1 쓰기 패킷에 대응하는 논리 주소에 대하여 상기 불휘발성 메모리 장치의 물리 주소를 할당하는 것을 포함하고,
    상기 제2 쓰기 패킷은 상기 제1 내부 버퍼에 버퍼링된 상기 제1 쓰기 데이터 및 상기 할당된 물리 주소를 포함하고, 상기 제3 쓰기 패킷은 상기 논리 주소 및 상기 할당된 물리 주소의 정보를 포함하는 스토리지 장치.
  19. 제 18 항에 있어서,
    상기 쓰기 관리 회로는:
    상기 불휘발성 메모리 장치에 저장될 상기 제1 쓰기 데이터를 버퍼링하도록 구성된 상기 제1 내부 버퍼; 및
    상기 제1 내부 버퍼의 할당을 관리하도록 구성된 버퍼 관리자를 포함하고,
    상기 버퍼 관리자가 상기 제1 내부 버퍼에 상기 제1 읽기 데이터가 존재하는 것으로 판별한 경우, 상기 쓰기 관리 회로는 상기 제2 읽기 패킷 대신에, 상기 제1 읽기 데이터를 포함하는 제5 읽기 패킷을 출력하고,
    상기 읽기 관리 회로는 상기 제5 읽기 패킷에 응답하여 상기 제1 읽기 데이터를 포함하는 제6 읽기 패킷을 출력하는 스토리지 장치.
  20. 제 19 항에 있어서,
    상기 프로세서는 상기 소프트웨어 코드를 실행함으로써, 상기 불휘발성 메모리 장치에 대한 웨어 레벨링 동작, 리드 리클레임, 리드 리프레쉬, 전력 관리 동작, 배드 블록 관리 동작, 및 에러 검출 및 정정 동작 중 적어도 하나를 포함하는 관리 동작을 실행하도록 더 구성된 스토리지 장치.
KR1020170083817A 2017-06-30 2017-06-30 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치 KR102398201B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020170083817A KR102398201B1 (ko) 2017-06-30 2017-06-30 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치
US15/855,840 US10789019B2 (en) 2017-06-30 2017-12-27 Storage device capable of managing jobs without intervention of a processor
DE102018110012.4A DE102018110012A1 (de) 2017-06-30 2018-04-26 Speichervorrichtung, die in der Lage ist Jobs ohne Eingreifen eines Prozessors zu verwalten
CN201810722287.7A CN109213441B (zh) 2017-06-30 2018-06-29 能够管理工作而无需处理器干预的存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170083817A KR102398201B1 (ko) 2017-06-30 2017-06-30 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치

Publications (2)

Publication Number Publication Date
KR20190003911A KR20190003911A (ko) 2019-01-10
KR102398201B1 true KR102398201B1 (ko) 2022-05-17

Family

ID=64661880

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170083817A KR102398201B1 (ko) 2017-06-30 2017-06-30 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치

Country Status (4)

Country Link
US (1) US10789019B2 (ko)
KR (1) KR102398201B1 (ko)
CN (1) CN109213441B (ko)
DE (1) DE102018110012A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6757708B2 (ja) * 2017-10-31 2020-09-23 株式会社日立製作所 情報処理装置及び構成要素の管理方法
CN110554298B (zh) * 2019-08-27 2022-03-22 江苏芯盛智能科技有限公司 芯片和芯片测试方法
KR20220074993A (ko) * 2019-12-06 2022-06-03 미쓰비시덴키 가부시키가이샤 콘트롤러
KR20210081088A (ko) * 2019-12-23 2021-07-01 에스케이하이닉스 주식회사 메모리 컨트롤러를 포함하는 스토리지 장치
KR20210103228A (ko) * 2020-02-13 2021-08-23 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US11500581B2 (en) 2020-09-25 2022-11-15 Western Digital Technologies, Inc. Efficient TLP fragmentations in extended LBA environment
KR20220067797A (ko) 2020-11-18 2022-05-25 에스케이하이닉스 주식회사 메모리 컨트롤러
US11537524B2 (en) 2020-11-20 2022-12-27 Western Digital Technologies, Inc. Effective PCIe utilization by PCIe TLP coalescing
US11853218B2 (en) 2020-11-20 2023-12-26 Western Digital Technologies, Inc. Semi and cached TLP coalescing
EP4273706A1 (en) * 2022-05-02 2023-11-08 Samsung Electronics Co., Ltd. Storage device, memory device, and system including storage device and memory device
US20240069771A1 (en) * 2022-08-29 2024-02-29 Micron Technology, Inc. Read operations for mixed data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170123722A1 (en) 2015-10-28 2017-05-04 Sandisk Technologies Inc. System and method for utilization of a data buffer
US20170286288A1 (en) 2016-03-30 2017-10-05 Sandisk Technologies Llc Method and System for Blending Data Reclamation and Data Integrity Garbage Collection
US20180143904A1 (en) 2016-11-21 2018-05-24 Sanmina Corporation Dual inline memory module
US20180341429A1 (en) 2017-05-25 2018-11-29 Western Digital Technologies, Inc. Non-Volatile Memory Over Fabric Controller with Memory Bypass

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0551494A4 (en) * 1991-08-07 1995-03-01 Adaptec Inc Intelligent hardware for automatically reading and writing multiple sectors of data between a computer bus and a disk drive
JPH0798941A (ja) * 1993-09-28 1995-04-11 Hitachi Ltd ディスク型記録媒体を用いた記録再生装置
US5778422A (en) * 1996-04-04 1998-07-07 International Business Machines Corporation Data processing system memory controller that selectively caches data associated with write requests
US7457897B1 (en) 2004-03-17 2008-11-25 Suoer Talent Electronics, Inc. PCI express-compatible controller and interface for flash memory
US6823472B1 (en) * 2000-05-11 2004-11-23 Lsi Logic Corporation Shared resource manager for multiprocessor computer system
US8031623B2 (en) * 2004-10-25 2011-10-04 Ineoquest Technologies, Inc. System and method for creating multiple transportation streams of streaming media network test traffic in packet-based networks
JP4470455B2 (ja) 2003-11-05 2010-06-02 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2006244653A (ja) * 2005-03-04 2006-09-14 Matsushita Electric Ind Co Ltd ストリームデータ記録装置、およびストリームデータ記録方法
US20090070654A1 (en) * 2006-02-09 2009-03-12 International Business Machines Corporation Design Structure For A Processor System With Background Error Handling Feature
KR100801884B1 (ko) 2006-04-25 2008-02-12 (재)대구경북과학기술연구원 플래시 메모리, 플래시 메모리의 제어 방법 및 직렬인터페이스 장치
KR100869675B1 (ko) 2007-02-05 2008-11-21 지인정보기술 주식회사 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
US7769958B2 (en) * 2007-06-22 2010-08-03 Mips Technologies, Inc. Avoiding livelock using intervention messages in multiple core processors
US7688652B2 (en) 2007-07-18 2010-03-30 Mosaid Technologies Incorporated Storage of data in memory via packet strobing
KR20110019491A (ko) 2009-08-20 2011-02-28 삼성전자주식회사 데이터 처리 방법 및 데이터 처리 시스템
KR20110087036A (ko) * 2010-01-25 2011-08-02 삼성전자주식회사 덮어쓰기 가능한 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법
US8588228B1 (en) 2010-08-16 2013-11-19 Pmc-Sierra Us, Inc. Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner
KR101736384B1 (ko) * 2010-09-29 2017-05-16 삼성전자주식회사 비휘발성 메모리 시스템
US9606863B2 (en) 2010-10-25 2017-03-28 SMART High Reliability Solutions, LLC Fabric-based solid state drive architecture
US9009391B2 (en) 2010-10-25 2015-04-14 Fastor Systems, Inc. Solid state drive architecture
WO2014143023A1 (en) * 2013-03-15 2014-09-18 Hewlett-Packard Development Company, L.P. Memory module controller supporting extended writes
US20160321010A1 (en) * 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
US20170046260A1 (en) * 2015-08-14 2017-02-16 Kabushiki Kaisha Toshiba Storage device and method for saving write cache data
CN106569727B (zh) * 2015-10-08 2019-04-16 福州瑞芯微电子股份有限公司 一种多控制器间多存储器共享并行数据读写装置及其写入、读取方法
KR20170083817A (ko) 2016-01-11 2017-07-19 부산대학교 산학협력단 복수의 gps를 이용한 이동 로봇의 위치 추정 방법
US20170337103A1 (en) * 2016-05-19 2017-11-23 Intel Corporation Method and apparatus to provide data redundancy in a solid-state drive
US10296224B2 (en) * 2016-12-21 2019-05-21 Intel Corporation Apparatus, system and method for increasing the capacity of a storage device available to store user data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170123722A1 (en) 2015-10-28 2017-05-04 Sandisk Technologies Inc. System and method for utilization of a data buffer
US20170286288A1 (en) 2016-03-30 2017-10-05 Sandisk Technologies Llc Method and System for Blending Data Reclamation and Data Integrity Garbage Collection
US20180143904A1 (en) 2016-11-21 2018-05-24 Sanmina Corporation Dual inline memory module
US20180341429A1 (en) 2017-05-25 2018-11-29 Western Digital Technologies, Inc. Non-Volatile Memory Over Fabric Controller with Memory Bypass

Also Published As

Publication number Publication date
US10789019B2 (en) 2020-09-29
CN109213441A (zh) 2019-01-15
US20190004869A1 (en) 2019-01-03
KR20190003911A (ko) 2019-01-10
CN109213441B (zh) 2024-01-23
DE102018110012A1 (de) 2019-01-03

Similar Documents

Publication Publication Date Title
KR102398201B1 (ko) 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치
CN111373362B (zh) 具有分布式读取/写入处理的多设备存储系统
US9858015B2 (en) Solid-state storage management
US9558107B2 (en) Extending useful life of a non-volatile memory by health grading
KR102533072B1 (ko) 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법
US11435943B2 (en) Storage device sharing attribute information with host device to use host memory buffer and electronic device including the same
KR101581859B1 (ko) 메모리 시스템 및 그것의 플래시 변환 계층의 데이터 관리 방법
US10817418B2 (en) Apparatus and method for checking valid data in memory system
KR102398181B1 (ko) 쓰기 데이터를 위해 할당될 물리 어드레스를 미리 관리하는 스토리지 장치
CN106469126B (zh) 处理io请求的方法及其存储控制器
US11360868B2 (en) Redundant cloud memory storage for a memory subsystem
JP6140093B2 (ja) キャッシュメモリ、誤り訂正回路およびプロセッサシステム
US11294834B2 (en) Data processing system allocating memory area in host as extension of memory and operating method thereof
TW201526002A (zh) 用於基於資料存取頻率以頻寬最佳化或寫碼率最佳化碼字儲存資料之技術
JP7067256B2 (ja) データ転送装置およびデータ転送方法
US9003261B2 (en) Memory system
US12019917B2 (en) Peer RAID control among peer data storage devices
US20230418490A1 (en) Rate Levelling Among Peer Data Storage Devices

Legal Events

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