KR102618699B1 - 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템 - Google Patents

호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템 Download PDF

Info

Publication number
KR102618699B1
KR102618699B1 KR1020160124781A KR20160124781A KR102618699B1 KR 102618699 B1 KR102618699 B1 KR 102618699B1 KR 1020160124781 A KR1020160124781 A KR 1020160124781A KR 20160124781 A KR20160124781 A KR 20160124781A KR 102618699 B1 KR102618699 B1 KR 102618699B1
Authority
KR
South Korea
Prior art keywords
host
storage device
volatile memory
asynchronous event
erase
Prior art date
Application number
KR1020160124781A
Other languages
English (en)
Other versions
KR20180035271A (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 KR1020160124781A priority Critical patent/KR102618699B1/ko
Priority to US15/605,968 priority patent/US10592130B2/en
Priority to CN201710839469.8A priority patent/CN107870869B/zh
Publication of KR20180035271A publication Critical patent/KR20180035271A/ko
Priority to US16/799,894 priority patent/US11157180B2/en
Priority to US17/405,242 priority patent/US11579779B2/en
Application granted granted Critical
Publication of KR102618699B1 publication Critical patent/KR102618699B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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
    • 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/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
    • 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
    • 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

Abstract

본 발명은 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템에 관한 것이다. 본 발명의 실시 예에 따른 컴퓨팅 시스템은 스토리지 장치 및 호스트를 포함할 수 있다. 스토리지 장치는 불휘발성 메모리를 포함하고, 호스트는 상기 불휘발성 메모리의 물리 주소에 기초하여 상기 스토리지 장치를 제어하며, 상기 스토리지 장치로 비동기 이벤트 요청 명령을 전송할 수 있다. 상기 스토리지 장치는 상기 불휘발성 메모리를 모니터링하고, 상기 모니터링의 결과에 기초하여 상기 비동기 이벤트 요청 명령에 대응하는 비동기 이벤트 요청을 상기 호스트로 전송하고, 상기 비동기 이벤트 요청은 상기 모니터링의 결과에 대응하여 상기 호스트의 다른 명령을 요청하는 것을 포함할 수 있다. 본 발명의 실시 예에 따르면, 스토리지 장치도 호스트로 요청을 할 수 있고, 스토리지 장치의 요청에 따라 호스트는 신뢰성 향상 동작을 수행할 수 있다.

Description

호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템{COMPUTING SYSTEM INCLUDING STORAGE DEVICE CONTROLLED BY HOST}
본 발명은 컴퓨팅 시스템에 관한 것으로, 좀 더 구체적으로는, 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템에 관한 것이다.
플래시 메모리 장치를 기반으로 하는 데이터 저장 장치의 대표적인 예로써, 솔리스 스테이트 드라이브(solid state drive; SSD)가 있다. SSD와 같은 데이터 저장 장치에 사용되는 인터페이스로 SATA(Serial ATA), PCIe(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI) 등이 있다. SSD의 성능은 점차 개선되고 있고, 동시에 처리되는 데이터 양도 점차 증가하고 있다. 하지만, SATA와 같은 종래의 인터페이스는 SSD와 같은 데이터 저장 장치에 특화된 인터페이스가 아니므로, 근본적으로 한계점을 가지고 있다. 그 결과, SSD에 걸맞는 표준화된 인터페이스를 만들고자 하는 노력의 일환으로써, NVMe(Non-Volatile Memory Express)가 탄생하게 되었다. NVMe는 SSD와 같은 데이터 저장 장치와 호스트 소프트웨어 간에 통신하는 레지스터 레벨의 인터페이스이다. NVMe는 종래의 PCIe 버스를 기반으로 하며, SSD에 최적화된 인터페이스이다.
SSD는 일반적인 SSD 및 오픈 채널 SSD(Open-channel SSD)를 포함한다. 일반적인 SSD는 SSD 내에 플래시 변환 계층을 포함하여, 호스트로부터 논리 주소 기반의 명령을 수신한다. 반면에, 오픈 채널 SSD는 SSD 내에 플래시 변환 계층을 포함하고 있지 않아, 호스트로부터 물리 주소 기반의 명령을 수신한다. 대신에, 호스트는 플래시 변환 계층을 포함하고, 데이터가 저장된 오픈 채널 SSD의 물리 주소를 직접 관리한다.
본 발명은 위에서 설명한 기술적 과제를 해결하기 위한 것으로, 본 발명의 목적은 호스트로 신뢰성 향상 동작의 요청이 가능한 스토리지 장치를 포함하는 컴퓨팅 시스템을 제공하는 데 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은 스토리지 장치 및 호스트를 포함할 수 있다. 스토리지 장치는 불휘발성 메모리를 포함하고, 호스트는 상기 불휘발성 메모리의 물리 주소에 기초하여 상기 스토리지 장치를 제어하며, 상기 스토리지 장치로 비동기 이벤트 요청 명령을 전송할 수 있다. 상기 스토리지 장치는 상기 불휘발성 메모리를 모니터링하고, 상기 모니터링의 결과에 기초하여 상기 비동기 이벤트 요청 명령에 대응하는 비동기 이벤트 요청을 상기 호스트로 전송하고, 상기 비동기 이벤트 요청은 상기 모니터링의 결과에 대응하여 상기 호스트의 다른 명령을 요청하는 것을 포함할 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은 스토리지 장치 및 호스트를 포함할 수 있다. 스토리지 장치는 불휘발성 메모리를 포함하고, 호스트는 상기 불휘발성 메모리의 물리 주소에 기초하여 상기 스토리지 장치를 제어하며, 상기 스토리지 장치로 상기 불휘발성 메모리의 선택된 메모리 블록의 소거 명령을 전송하는 호스트를 포함할 수 있다. 상기 스토리지 장치는 상기 소거 명령에 응답하여 소거 패스 응답 또는 소거 지연 위반 응답을 상기 호스트로 전송하고, 상기 소거 지연 위반 응답은, 상기 선택된 메모리 블록의 이전 소거 시점부터 정해진 소거 지연 시간 이내에 상기 소거 명령이 상기 스토리지 장치에 수신된 경우, 전송될 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치도 호스트로 요청을 할 수 있고, 스토리지 장치의 요청에 따라 호스트는 신뢰성 향상 동작을 수행할 수 있다.
도 1은 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 비동기 이벤트 요청의 사용 방법을 보여주는 순서도이다.
도 4는 본 발명의 다른 실시 예에 따른 비동기 이벤트 요청의 사용 방법을 보여주는 순서도이다.
도 5는 본 발명의 다른 실시 예에 따른 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 6은 본 발명의 실시 예에 따른 소거 패스 응답 또는 소거 지연 위반 응답을 예시적으로 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 호스트에서의 소거 동작을 보여주는 순서도이다.
도 8은 본 발명의 실시 예에 따른 스토리지 장치에서의 소거 동작을 보여주는 순서도이다.
도 9는 본 발명의 실시 예에 따른 비동기 이벤트 요청을 활용한 소거 동작을 보여주는 순서도이다.
도 10은 본 발명의 또 다른 실시 예에 따른 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 예를 들면, 스토리지 장치(200)는 오픈 채널 SSD로서 동작할 수 있다. 이하에서, 스토리지 장치(200)는 오픈 채널 SSD인 것으로 가정한다.
호스트(100)는 스토리지 장치(200)의 전반적인 동작을 제어할 수 있다. 예를 들면, 호스트(100)는 플래시 변환 계층(Flash Translation Layer; FTL, 110)을 포함할 수 있다. 플래시 변환 계층(110)은 호스트(100)에서 사용되는 논리 주소와 스토리지 장치(200)의 불휘발성 메모리(220)의 물리 주소를 맵핑할 수 있다. 따라서, 호스트(100)는 플래시 변환 계층(110)을 통해 불휘발성 메모리(220)의 물리 주소를 직접 관리할 수 있다.
호스트(100)는 스토리지 장치(200)로 다양한 명령(CMD)을 전송할 수 있다. 예를 들면, 호스트(100)는 읽기, 쓰기, 및 소거 등의 기본적인 명령(CMD)들을 전송할 수 있다. 기본적인 명령(CMD)들은 불휘발성 메모리(220)의 물리 주소를 기반으로 생성될 수 있다. 또한, 호스트(100)는 데이터 배치(Data Placement), 입출력 스케줄링(I/O Scheduling), 및 백그라운 동작(Background Operation)과 같은 스토리지 장치(200)의 관리 동작들을 수행할 수 있다. 이러한 관리 동작들도 불휘발성 메모리(220)의 물리 주소를 기반으로 수행될 수 있다.
스토리지 장치(200)는 메모리 컨트롤러(210) 및 불휘발성 메모리(220)를 포함할 수 있다. 예를 들면, 메모리 컨트롤러(210)는 호스트(100)로부터 읽기, 쓰기, 및 소거 등의 기본적인 명령(CMD)들을 수신할 수 있다. 메모리 컨트롤러(210)는 수신된 명령(CMD)에 따라 데이터를 불휘발성 메모리(220)에 저장하거나 불휘발성 메모리(220)에 저장된 데이터를 독출할 수 있다. 수신된 명령(CMD)에 대응하는 동작이 완료된 경우, 스토리지 장치(200)는 호스트(100)로 수신된 명령(CMD)에 대응하는 응답(RSP)을 전송할 수 있다.
또한, 메모리 컨트롤러(210)는 불휘발성 메모리(220)의 데이터 신뢰성과 관련된 명령(CMD)을 수신할 수 있다. 예를 들면, 메모리 컨트롤러(210)는 수신된 명령(CMD)에 따라 리클레임(Reclaim) 동작, 에러 정정 동작, 가비지 콜렉션(GC, Garbage Collection) 동작 및 카피-백(Copy-back) 동작 등을 수행할 수 있다. 수신된 명령(CMD)에 대응하는 동작이 완료된 경우, 스토리지 장치(200)는 호스트(100)로 수신된 명령(CMD)에 대응하는 응답(RSP)을 전송할 수 있다.
다만, 오픈 채널 SSD의 경우 호스트(100)가 불휘발성 메모리(220)의 물리 주소를 관리하고 있기 때문에, 스토리지 장치(200)는 불휘발성 메모리(220)에 저장된 데이터의 위치를 단독으로 변경할 수 없다. 따라서, 불휘발성 메모리(220)에 저장된 데이터의 신뢰성에 문제가 발생하는 경우, 스토리지 장치(200)는 호스트(100)로 필요한 명령(CMD)을 요청할 필요가 있다.
도 2는 본 발명의 실시 예에 따른 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다. 도 2를 참조하면, 컴퓨팅 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함할 수 있다. 예를 들면, 스토리지 장치(1200)는 오픈 채널 SSD로서 동작할 수 있다. 이하에서, 스토리지 장치(1200)는 오픈 채널 SSD인 것으로 가정한다.
호스트(1100)는 호스트 프로세서 및 호스트 메모리를 포함할 수 있다. 예를 들면, 호스트 프로세서는 호스트(1100)에서 수행되는 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버 등)를 실행할 수 있다. 호스트 프로세서는 호스트 메모리에 로딩되는 운영 체제(OS), 응용 프로그램(application program)을 실행할 수 있다. 호스트 프로세서는 스토리지 장치(1200)로 전송될 프로그램 데이터를 호스트 메모리에 저장하거나, 스토리지 장치(1200)로부터 읽어낼 데이터를 호스트 메모리에 저장하도록 제어할 수 있다. 호스트 프로세서는 복수 개 제공될 수 있다.
호스트 메모리가 워킹 메모리로써 사용되는 경우, 호스트 메모리에는 응용 프로그램, 파일 시스템, 및 장치 드라이버 등이 로딩될 수 있다. 호스트 메모리가 스토리지 장치(1200)로의 데이터 전송을 위한 임시 버퍼로써 사용되는 경우, 데이터가 저장될 수 있다. 호스트 메모리는 그 용도에 따라 하나 또는 복수 개의 호스트 메모리들이 제공될 수 있다. 호스트 메모리는 SRAM (static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리이거나, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리이거나, 또는 이들의 조합으로 구성될 수 있다.
호스트(1100)는 소정의 인터페이싱 방식에 기초하여 스토리지 장치(1200)와 통신할 수 있다. 예를 들면, 소정의 인터페이싱 방식은 PCIe(PCI express)를 기반으로 하는 NVMe(NVM express)일 수 있다. 하지만, 소정의 인터페이싱 방식은 NVMe에만 한정되는 것은 아니다. NVMe를 사용하는 경우, 스토리지 장치(1200)는 NVMe 스펙(specification)에서 규정하는 비동기 이벤트 요청(Asynchronous event request, AER)을 사용할 수 있다. 스토리지 장치(1200)는 비동기 이벤트 요청(AER)을 이용하여 호스트(1100)에게 필요한 요청을 할 수 있다. 하지만, 소정의 인터페이싱 방식이 NVMe가 아닌 경우에도, 스토리지 장치(1200)는 비동기 이벤트 요청(AER)에 대응하는 요청 수단을 사용할 수 있다. 이하에서는 예시적으로, 스토리지 장치(1200)가 NVMe의 스펙에서 규정하는 비동기 이벤트 요청(AER)을 사용하는 것으로 가정한다.
예를 들면, 호스트(1100)는 비동기 이벤트 요청 명령(AER_CMD)을 스토리지 장치(1200)에 전송할 수 있다. 비동기 이벤트 요청 명령(AER_CMD)은 비동기 이벤트 요청(AER)을 수신하기 위한 명령이다. 즉, 스토리지 장치(1200)의 비동기 이벤트 요청(AER)은 비동기 이벤트 요청 명령(AER_CMD)에 대응하는 응답이 된다. 호스트(1100)는 비동기 이벤트 요청 명령(AER_CMD)에 대한 응답을 기다리지 않고 다른 동작을 수행할 수 있다. 비동기 이벤트 요청 명령(AER_CMD)을 수신한 스토리지 장치(1200)는 불휘발성 메모리(1220)를 모니터링할 수 있다. 스토리지 장치(1200)는 모니터링 중 불휘발성 메모리(1220)에서 문제를 발견한 경우 비동기 이벤트 요청(AER)을 호스트(1100)에 전송할 수 있다. 비동기 이벤트 요청(AER)은 이전에 수신된 비동기 이벤트 요청 명령(AER_CMD)과 일대일로 대응할 수 있다.
비동기 이벤트 요청(AER)을 수신한 호스트(1100)는 스토리지 장치(1200)에 정보 요청 명령을 전송할 수 있다. 즉, 호스트(1100)는 스토리지 장치(1200)에 모니터링 결과에 따른 불휘발성 메모리(1220)의 문제 발생 부분에 대한 정보를 요청할 수 있다. 스토리지 장치(1200)는 정보 요청 명령에 응답하여 문제가 발생한 불휘발성 메모리(1200)의 메모리 블록의 정보를 호스트(1100)에 전송할 수 있다.
호스트(1100)는 수신된 불휘발성 메모리(1200)의 메모리 블록의 정보에 기초하여 스토리지 장치(1200)로 신뢰성 향상 동작을 지시할 수 있다. 예를 들면, 호스트(1100)는 불휘발성 메모리(1220)의 오류 페이지의 리클레임(Reclaim) 동작을 수행할 수 있다. 호스트(1100)는 오류 페이지에 저장된 데이터를 다른 물리 주소에 맵핑하고, 스토리지 장치(1200)로 오류 페이지에 저장된 데이터의 이동을 지시할 수 있다.
스토리지 장치(1200)는 메모리 컨트롤러(1210) 및 불휘발성 메모리(1220)를 포함할 수 있다. 메모리 컨트롤러(1210)는 호스트 인터페이스 및 스토리지 인터페이스를 포함할 수 있다. 호스트 인터페이스는 호스트(1100)와 스토리지 장치(1200) 사이의 인터페이싱을 제공할 수 있다. 호스트 인터페이스가 수행하는 인터페이싱 방식은 PCIe(PCI express)를 기반으로 하는 NVMe(NVM express)일 수 있다. 하지만, 이에 한정되지 않는다.
스토리지 인터페이스는 호스트(1100)와 스토리지 장치(1200)가 인터페이싱할 수 있는 물리적인 연결을 제공할 수 있다. 스토리지 인터페이스는 다양한 요청에 따라 생성되는 커맨드, 어드레스, 데이터 등을 스토리지 장치(1200)로 전송할 수 있도록 한다. 스토리지 인터페이스의 인터페이싱 방식은 PCIe(PCI express)를 기반으로 하는 NVMe(NVM express)일 수 있다. 그러나, 스토리지 인터페이스는 NVMe에만 한정되는 것은 아니다.
불휘발성 메모리(1220)는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리들 중 어느 하나를 포함하거나, 이들의 조합으로 구성될 수 있다.
도 3은 본 발명의 실시 예에 따른 비동기 이벤트 요청의 사용 방법을 보여주는 순서도이다. 도 3을 참조하면, 스토리지 장치(1200)는 비동기 이벤트 요청(AER)을 이용하여 불휘발성 메모리(1220)에 필요한 동작을 호스트(1100)에 요청할 수 있다.
S110 단계에서, 호스트(1100)는 비동기 이벤트 요청 명령(AER_CMD)을 스토리지 장치(1200)에 전송할 수 있다. 예를 들면, 추후에 스토리지 장치(1200)가 비동기 이벤트 요청(AER)을 호스트(1100)로 전송하기 위해서, 우선 스토리지 장치(1200)는 비동기 이벤트 요청 명령(AER_CMD)을 수신할 필요가 있다. 비동기 이벤트 요청 명령(AER_CMD) 및 비동기 이벤트 요청(AER)은 하나의 쌍을 이룬다. 호스트(1100)는 비동기 이벤트 요청 명령(AER_CMD)의 응답을 기다리지 않고 다른 동작을 수행할 수 있다.
S120 단계에서, 비동기 이벤트 요청 명령(AER_CMD)을 수신한 스토리지 장치(1200)는 불휘발성 메모리(1220)를 모니터링 할 수 있다. 예를 들면, 스토리지 장치(1200)는 불휘발성 메모리(1220)의 오류 발생 블록 및 페이지를 검출할 수 있다. 불휘발성 메모리(1220)의 메모리 블록 또는 페이지에서 오류가 발생하면, 스토리지 장치(1200)는 비동기 이벤트 요청(AER)을 생성할 수 있다.
S130 단계에서, 스토리지 장치(1200)는 모니터링 결과에 따라 비동기 이벤트 요청(AER)을 호스트(1100)에 전송한다. 예를 들면, 불휘발성 메모리(1220)의 메모리 블록 또는 페이지에서 오류가 발생하면, 스토리지 장치(1200)는 비동기 이벤트 요청(AER)을 호스트(1100)에 전송한다. 비동기 이벤트 요청(AER)은 불휘발성 메모리(1200)의 문제 발생 사실 또는 문제 발생 위험 등을 알리는 역할을 한다. 다만, 비동기 이벤트 요청(AER)은 문제 발생 사실을 포함할 뿐이며, 구체적인 불휘발성 메모리(1200)의 정보는 포함하지 않는다. 비동기 이벤트 요청(AER)은 비동기 이벤트 요청 명령(AER_CMD)에 대응하는 응답이다.
S140 단계에서, 호스트(1100)는 수신된 비동기 이벤트 요청(AER)에 대응하여 정보 요청 명령을 스토리지 장치(1200)에 전송할 수 있다. 예를 들면, 호스트(1100)는 불휘발성 메모리(1200)의 문제가 발생한 메모리 블록 또는 페이지의 정보를 요청할 수 있다.
S150 단계에서, 스토리지 장치(1200)는 문제가 발생한 불휘발성 메모리(1200)의 상세 정보를 호스트(1100)에 전송할 수 있다. 예를 들면, 스토리지 장치(1200)는 문제가 발생한 메모리 블록 또는 페이지의 주소, 데이터의 오류 비트 수, 및 소거 횟수 등을 호스트(1100)에 제공할 수 있다.
S160 단계에서, 호스트(1100)는 문제가 발생한 불휘발성 메모리에 대한 조치를 수행할 수 있다. 예를 들면, 호스트(1100)는 리클레임 동작을 수행할 수 있다. 호스트(1100)는 문제가 발생한 데이터를 불휘발성 메모리(1220)의 새로운 물리 주소에 맵핑시키고, 스토리지 장치(1200)로 문제가 발생한 데이터를 이동시키도록 리클레임 명령을 전송할 수 있다.
이상에서 살펴본 바와 같이, 본 발명에 따른 컴퓨팅 시스템(1000)에 포함된 스토리지 장치(1200)는 필요한 시점에 호스트(1100)로 비동기 이벤트 요청(AER)을 전송할 수 있다. 따라서, 스토리지 장치(1200)는 비동기 이벤트 요청(AER)을 통해 필요한 동작을 호스트(1100)에 요청할 수 있다.
도 4는 본 발명의 다른 실시 예에 따른 비동기 이벤트 요청의 사용 방법을 보여주는 순서도이다. 도 4를 참조하면, 스토리지 장치(1200)는 비동기 이벤트 요청(AER)을 이용하여 불휘발성 메모리(1220)에 필요한 동작을 호스트(1100)에 요청할 수 있다. 비동기 이벤트 요청 명령(AER_CMD)과 비동기 이벤트 요청(AER)은 일대일로 대응될 수 있다. 도 4에서, 호스트(1100)는 제 1 비동기 이벤트 요청 명령(AER_CMD)에 대한 비동기 이벤트 요청(AER)을 수신한 후 제 2 비동기 이벤트 요청 명령(AER_CMD)을 다시 전송할 수 있다. 제 1 비동기 이벤트 요청 명령(AER_CMD)에 대응하는 비동기 이벤트 요청(AER)은 이미 사용되었기 때문에, 새로운 제 2 비동기 이벤트 요청 명령(AER_CMD)이 전송될 필요가 있다.
S210 단계에서, 호스트(1100)는 제 1 비동기 이벤트 요청 명령(AER_CMD)을 스토리지 장치(1200)에 전송할 수 있다. 호스트(1100)는 제 1 비동기 이벤트 요청 명령(AER_CMD)의 응답을 기다리지 않고 다른 동작을 수행할 수 있다.
S220 단계에서, 제 1 비동기 이벤트 요청 명령(AER_CMD)을 수신한 스토리지 장치(1200)는 불휘발성 메모리(1220)를 모니터링 할 수 있다. 예를 들면, 스토리지 장치(1200)는 불휘발성 메모리(1220)의 오류 발생 블록 및 페이지를 검출할 수 있다. 불휘발성 메모리(1220)의 메모리 블록 또는 페이지에서 오류가 발생하면, 스토리지 장치(1200)는 비동기 이벤트 요청(AER)을 생성할 수 있다.
S230 단계에서, 스토리지 장치(1200)는 모니터링 결과에 따라 비동기 이벤트 요청(AER)을 호스트(1100)에 전송한다. 예를 들면, 비동기 이벤트 요청(AER)은 불휘발성 메모리(1200)의 문제 발생 사실 또는 문제 발생 위험 등을 알리는 역할을 한다. 다만, 비동기 이벤트 요청(AER)은 문제 발생 사실을 포함할 뿐이며, 구체적인 불휘발성 메모리(1200)의 정보는 포함하지 않는다. 여기서 전송된 비동기 이벤트 요청(AER)은 제 1 비동기 이벤트 요청 명령(AER_CMD)에 대응하는 것이다.
S240 단계에서, 호스트(1100)는 수신된 비동기 이벤트 요청(AER)에 대응하여 정보 요청 명령을 스토리지 장치(1200)에 전송할 수 있다. 예를 들면, 호스트(1100)는 불휘발성 메모리(1200)의 문제가 발생한 메모리 블록 또는 페이지의 정보를 요청할 수 있다.
S250 단계에서, 스토리지 장치(1200)는 문제가 발생한 불휘발성 메모리(1200)의 상세 정보를 호스트(1100)에 전송할 수 있다. 예를 들면, 스토리지 장치(1200)는 문제가 발생한 메모리 블록 또는 페이지, 데이터의 오류 비트 수, 및 소거 횟수 등을 호스트(1100)에 제공할 수 있다.
S260 단계에서, 호스트(1100)는 제 2 비동기 이벤트 요청 명령(AER_CMD)을 스토리지 장치(1200)로 전송할 수 있다. 예를 들면, 비동기 이벤트 요청 명령(AER_CMD)과 비동기 이벤트 요청(AER)은 일대일로 대응한다. 호스트(1100)는 제 1 비동기 이벤트 요청 명령(AER_CMD)에 대한 비동기 이벤트 요청(AER)을 이미 S230 단계에서 수신하였다. 따라서, 스토리지 장치(1200)가 다른 비동기 이벤트 요청(AER)을 전송하기 위해서, 호스트(1100)는 제 2 비동기 이벤트 요청 명령(AER_CMD)을 전송할 필요가 있다.
S270 단계에서, 호스트(1100)는 문제가 발생한 불휘발성 메모리에 대한 조치를 수행할 수 있다. 예를 들면, 호스트(1100)는 리클레임 동작을 수행할 수 있다. 호스트(1100)는 문제가 발생한 데이터를 불휘발성 메모리(1220)의 새로운 물리 주소에 맵핑시키고, 스토리지 장치(1200)로 문제가 발생한 데이터를 이동시키도록 명령을 전송할 수 있다.
이상에서 살펴본 바와 같이, 본 발명에 따른 컴퓨팅 시스템(1000)에 포함된 스토리지 장치(1200)는 필요한 시점에 호스트(1100)로 비동기 이벤트 요청(AER)을 전송할 수 있다. 따라서, 스토리지 장치(1200)는 비동기 이벤트 요청(AER)을 통해 필요한 동작을 호스트(1100)에 요청할 수 있다. 또한, 제 1 비동기 이벤트 요청 명령(AER_CMD)에 대응하는 비동기 이벤트 요청(AER)을 수신한 후, 호스트(1100)는 제 1 비동기 이벤트 요청 명령(AER_CMD)을 스토리지 장치(1200)에 전송할 수 있다. 따라서, 스토리지 장치(1200)는 계속적으로 필요한 요청을 호스트(1100)로 전달할 수 있다.
도 5는 본 발명의 다른 실시 예에 따른 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다. 도 5를 참조하면, 컴퓨팅 시스템(2000)은 호스트(2100) 및 스토리지 장치(2200)를 포함할 수 있다. 예를 들면, 스토리지 장치(2200)는 오픈 채널 SSD로서 동작할 수 있다. 이하에서, 스토리지 장치(2200)는 오픈 채널 SSD인 것으로 가정한다. 스토리지 장치(2200)의 불휘발성 메모리(2210)는 다양한 원인으로 인해 소거된 후 다시 소거되기까지 소정의 시간이 필요하다. 이러한 소정의 시간을 필수 소거 지연(Mandatory Erase Delay) 시간으로 정의한다. 이러한 필수 소거 지연 시간은 불휘발성 메모리(2210)의 소거 단위인 메모리 블록 단위로 적용될 수 있다.
호스트(2100)는 소정의 인터페이싱 방식에 기초하여 스토리지 장치(1200)와 통신할 수 있다. 예를 들면, 소정의 인터페이싱 방식은 PCIe(PCI express)를 기반으로 하는 NVMe(NVM express)일 수 있다. 하지만, 소정의 인터페이싱 방식은 NVMe에만 한정되는 것은 아니다.
호스트(2100)는 호스트 프로세서 및 호스트 메모리를 포함할 수 있다. 예를 들면, 호스트 프로세서는 호스트(2100)에서 수행되는 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버 등)를 실행할 수 있다. 호스트 프로세서는 호스트 메모리에 로딩되는 운영 체제(OS), 응용 프로그램(application program)을 실행할 수 있다. 호스트 프로세서는 스토리지 장치(2200)로 전송될 프로그램 데이터를 호스트 메모리에 저장하거나, 스토리지 장치(2200)로부터 읽어낼 데이터를 호스트 메모리에 저장하도록 제어할 수 있다. 호스트 프로세서는 복수 개 제공될 수 있다.
호스트 메모리가 워킹 메모리로써 사용되는 경우, 호스트 메모리에는 응용 프로그램, 파일 시스템, 및 장치 드라이버 등이 로딩될 수 있다. 호스트 메모리가 스토리지 장치(2200)로의 데이터 전송을 위한 임시 버퍼로써 사용되는 경우, 데이터가 저장될 수 있다. 호스트 메모리는 그 용도에 따라 하나 또는 복수 개의 호스트 메모리들이 제공될 수 있다. 호스트 메모리는 SRAM (static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리이거나, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리이거나, 또는 이들의 조합으로 구성될 수 있다.
호스트(2100)는 소거 명령(ERS_CMD)을 스토리지 장치(2200)에 전송할 수 있다. 예를 들면, 호스트(2100)는 플래시 변환 계층(2110)을 통해 소거 대상 메모리 블록들을 검색할 수 있다. 검색 결과에 따라 호스트(2100)는 하나의 메모리 블록을 소거 대상으로 선택할 수 있다. 호스트(2100)는 선택된 메모리 블록에 대한 소거 명령(ERS_CMD)을 전송할 수 있다. 호스트(2100)는 선택된 메모리 블록의 물리 주소를 지정하여 소거 명령(ERS_CMD)을 전송할 수 있다.
한편, 스토리지 장치(2200)는 수신된 소거 명령(ERS_CMD)에 대응하는 메모리 블록의 소거 가능 여부를 판별할 수 있다. 예를 들면, 메모리 컨트롤러(2210)는 선택된 메모리 블록의 이전 소거 시점을 검사할 수 있다. 각 메모리 블록은 필수 소거 지연(Mandatory Erase Delay)를 가질 수 있다. 메모리 컨트롤러(2210)는 소거 명령(ERS_CMD)이 필수 소거 지연 조건을 만족하는지 여부를 판별할 수 있다.
스토리지 장치(2200)는 메모리 컨트롤러(2210) 및 불휘발성 메모리(2220)를 포함할 수 있다. 메모리 컨트롤러(2210)는 호스트 인터페이스 및 스토리지 인터페이스를 포함할 수 있다. 호스트 인터페이스는 호스트(2100)와 스토리지 장치(2200) 사이의 인터페이싱을 제공할 수 있다. 호스트 인터페이스가 수행하는 인터페이싱 방식은 PCIe(PCI express)를 기반으로 하는 NVMe(NVM express)일 수 있다. 하지만, 이에 한정되지 않는다.
스토리지 인터페이스는 호스트(2100)와 스토리지 장치(2200)가 인터페이싱할 수 있는 물리적인 연결을 제공할 수 있다. 스토리지 인터페이스는 다양한 요청에 따라 생성되는 커맨드, 어드레스, 데이터 등을 스토리지 장치(2200)로 전송할 수 있도록 한다. 스토리지 인터페이스의 인터페이싱 방식은 PCIe(PCI express)를 기반으로 하는 NVMe(NVM express)일 수 있다. 하지만, 스토리지 인터페이스는 NVMe에만 한정되는 것은 아니다.
스토리지 장치(2200)는 소거 명령(ERS_CMD)에 대해 소거 응답(ERS_RSP)을 전송할 수 있다. 예를 들면, 이전 소거 시점으로부터 필수 소거 지연 시간 이내에 소거 명령(ERS_CMD)이 도달한 경우, 메모리 컨트롤러(2210)는 소거 지연 위반(Erase Delay Violation) 응답을 전송할 수 있다. 이전 소거 시점으로부터 필수 소거 지연 시간 경과 후에 소거 명령(ERS_CMD)이 도달한 경우, 메모리 컨트롤러(2210)는 소거 패스(Erase Pass) 응답을 전송할 수 있다. 이 경우, 메모리 컨트롤러(2210)는 선택된 메모리 블록의 소거 동작을 수행할 수 있다.
불휘발성 메모리(2220)는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리들 중 어느 하나를 포함하거나, 이들의 조합으로 구성될 수 있다.
도 6은 본 발명의 실시 예에 따른 소거 패스 응답 또는 소거 지연 위반 응답을 예시적으로 보여주는 도면이다. 도 6을 참조하면, 호스트(2100)로부터의 소거 명령(ERS_CMD)에 대해, 스토리지 장치(2200)는 소거 패스 응답 또는 소거 지연 위반 응답을 전송할 수 있다.
특정 메모리 블록에 대한 이전 소거 명령에 대해, 스토리지 장치(2200)는 특정 메모리 블록의 소거 동작을 수행하고 소거 패스 응답을 호스트(2100)로 전송할 수 있다(Case A). 이 시점부터 필수 소거 지연은 계산될 수 있다. 이전 소거 시점으로부터 필수 소거 지연 시간 이내에 소거 명령(ERS_CMD)이 도달한 경우, 스토리지 장치(2200)는 소거 지연 위반(Erase Delay Violation) 응답을 전송할 수 있다(Case B). 이전 소거 시점으로부터 필수 소거 지연 시간 경과 후에 소거 명령(ERS_CMD)이 도달한 경우, 스토리지 장치(2200)는 소거 패스(Erase Pass) 응답을 전송할 수 있다(Case C). 이 경우, 스토리지 장치(2200)는 특정 메모리 블록의 소거 동작을 다시 수행할 수 있다.
도 7은 본 발명의 실시 예에 따른 호스트에서의 소거 동작을 보여주는 순서도이다. 도 7을 참조하면, 호스트(2100)는 불휘발성 메모리(2220)에서 하나의 메모리 블록을 소거 대상으로서 선택할 수 있다. 호스트(2100)는 선택된 메모리 블록에 대해 소거 명령을 스토리지 장치(2200)로 전송하고, 소거 명령에 대응하는 응답을 스토리지 장치(2200)로부터 수신할 수 있다.
S310 단계에서, 호스트(2100)는 불휘발성 메모리(2220)의 프리 블록을 검색할 수 있다. 예를 들면, 호스트(2100)는 플래시 변환 계층(2110)을 통해 프리 블록을 검색할 수 있다. 플래시 변환 계층(2110)은 불휘발성 메모리(2220)의 메모리 블록들의 상태 정보를 관리한다. 플래시 변환 계층(2110)은 소거될 메모리 블록들을 프리 블록 리스트로 관리할 수 있다. 검색 결과에 따라, 호스트(2100)는 불휘발성 메모리(2220)의 하나의 메모리 블록을 소거 대상으로 선택할 수 있다.
S320 단계에서, 호스트(2100)는 프리 블록 검색 결과에 기초하여 선택된 메모리 블록의 소거 명령을 스토리지 장치(2200)로 전송할 수 있다. 예를 들면, 호스트(2100)는 선택된 메모리 블록의 물리 주소를 지정하여 소거 명령을 전송할 수 있다.
S330 단계에서, 호스트(2100)는 스토리지 장치(2200)로부터 선택된 메모리 블록의 소거 명령에 대한 응답을 수신할 수 있다. 예를 들면, 소거 명령에 대한 응답은 소거 패스 응답 또는 소거 지연 위반 응답을 포함할 수 있다. 스토리지 장치(2200)로부터 소거 패스 응답을 수신한 경우, 호스트(2100)는 S340 단계로 이동할 수 있다. S340 단계에서, 호스트(2100)는 선택된 메모리 블록에 대한 소거 동작을 종료할 수 있다. 한편, 스토리지 장치(2200)로부터 소거 지연 위반 응답을 수신한 경우, 호스트(2100)는 S310 단계부터 다시 수행할 수 있다. 이 경우, 호스트(2100)는 플래시 변환 계층(2110)을 통해 프리 블록을 다시 검색할 수 있다. 또한, 호스트(2100)는 이전에 선택된 메모리 블록과 다른 메모리 블록을 선택할 수 있다.
도 8은 본 발명의 실시 예에 따른 스토리지 장치에서의 소거 동작을 보여주는 순서도이다. 도 8을 참조하면, 스토리지 장치(2200)는 호스트(2100)의 소거 명령에 대하여 소거 패스 응답 또는 소거 지연 위반 응답을 전송할 수 있다.
S410 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록의 소거 명령을 수신할 수 있다. 예를 들면, 스토리지 장치(2200)는 호스트(2100)로부터 선택된 메모리 블록의 물리 주소가 지정된 소거 명령을 수신할 수 있다.
S420 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록의 이전 소거 시점을 확인할 수 있다. 예를 들면, 메모리 컨트롤러(2210)는 불휘발성 메모리(2220)의 메모리 블록들 각각의 소거 시점을 저장할 수 있다. 메모리 컨트롤러(2210)는 이전 소거 시점을 소거 가능 여부의 기준으로 이용할 수 있다.
S430 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록이 소거 지연 조건을 만족하는지 여부를 판별할 수 있다. 예를 들면, 선택된 메모리 블록의 이전 소거 시점으로부터 필수 소거 지연 시간 이내에 선택된 메모리 블록의 소거 명령이 도달한 경우, 스토리지 장치(2200)는 S470 단계로 이동하여 소거 지연 위반 응답을 호스트(2100)로 전송할 수 있다. 한편, 선택된 메모리 블록의 이전 소거 시점으로부터 필수 소거 지연 시간이 경과한 후 선택된 메모리 블록의 소거 명령이 도달한 경우, 스토리지 장치(2200)는 S440 단계로 이동한다.
S440 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록의 소거 동작을 실행할 수 있다. S450 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록의 소거 시점을 업데이트할 수 있다. 예를 들면, 선택된 메모리 블록의 소거 시점은 가장 최근에 소거된 시점으로 업데이트되고, 이 시점을 기준으로 필수 소거 지연 시간은 다시 계산될 수 있다. S460 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록에 대하여 소거 패스 응답을 호스트(2100)로 전송할 수 있다.
도 9는 본 발명의 실시 예에 따른 비동기 이벤트 요청을 활용한 소거 동작을 보여주는 순서도이다. 도 9를 참조하면, 선택된 메모리 블록의 소거 동작은 비동기 이벤트 요청(AER)을 활용하여 수행될 수 있다.
S505 단계에서, 호스트(2100)는 불휘발성 메모리(2220)의 프리 블록을 검색할 수 있다. 예를 들면, 호스트(2100)는 플래시 변환 계층(2110)을 통해 프리 블록을 검색할 수 있다. 플래시 변환 계층(2110)은 불휘발성 메모리(2220)의 메모리 블록들의 상태 정보를 관리한다. 검색 결과에 따라, 호스트(2100)는 불휘발성 메모리(2220)의 하나의 메모리 블록을 소거 대상으로 선택할 수 있다.
S510 단계에서, 호스트(2100)는 선택된 메모리 블록의 소거 명령을 스토리지 장치(2200)로 전송할 수 있다. 예를 들면, 소거 명령은 선택된 메모리 블록의 물리 주소를 포함할 수 있다. S515 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록의 이전 소거 시점을 확인할 수 있다. 예를 들면, 메모리 컨트롤러(2210)는 불휘발성 메모리(2220)의 메모리 블록들 각각의 소거 시점을 저장할 수 있다. 메모리 컨트롤러(2210)는 이전 소거 시점을 소거 가능 여부의 기준으로 이용할 수 있다.
S520 단계에서, 스토리지 장치(2200)는 소거 지연 위반 응답을 호스트(2100)로 전송할 수 있다. 즉, 선택된 메모리 블록의 이전 소거 시점으로부터 필수 소거 지연 시간 이내에 선택된 메모리 블록의 소거 명령이 도달한 경우이다.
S525 단계에서, 호스트(2100)는 선택된 메모리 블록의 소거 동작에 대한 비동기 이벤트 요청 명령(AER_CMD)을 스토리지 장치(2200)에 전송할 수 있다. 예를 들면, 호스트(2100)는 비동기 이벤트 요청 명령(AER_CMD)을 전송하고 다른 동작을 수행할 수 있다.
S530 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록의 필수 소거 지연을 카운트할 수 있다. 예를 들면, 메모리 컨트롤러(2210)는 선택된 메모리 블록의 필수 소거 지연 시간의 남은 시간을 계산할 수 있다.
S535 단계에서, 선택된 메모리 블록의 필수 소거 지연 시간이 경과하면, 스토리지 장치(2200)는 선택된 메모리 블록에 대한 비동기 이벤트 요청을 호스트(2100)로 전송할 수 있다. S540 단계에서, 호스트(2100)는 선택된 메모리 블록에 대해 다시 소거 명령을 전송할 수 있다.
S545 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록에 대한 소거 동작을 실행할 수 있다. 이때 스토리지 장치(2200)는 선택된 메모리 블록에 대한 필수 소거 지연을 검사하지 않는다. 메모리 컨트롤러(2210)가 선택된 메모리 블록의 소거 가능 여부를 이미 알고 있기 때문이다.
S550 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록의 소거 시점을 업데이트할 수 있다. S555 단계에서, 스토리지 장치(2200)는 선택된 메모리 블록에 대한 소거 패스 응답을 전송할 수 있다. S560 단계에서, 호스트(2100)는 선택된 메모리 블록의 소거 동작을 종료할 수 있다.
본 실시 예에 따르면, 스토리지 장치(2200)는 소거 동작 시 비동기 이벤트 요청을 이용하여 선택된 메모리 블록의 소거 가능 여부를 능동적으로 호스트(2100)로 통보할 수 있다. 또한, 호스트(2100)는 프리 블록을 검색하는 시간을 줄일 수 있고, 스토리지 장치(2200)는 선택된 메모리 블록의 소거 가능 여부를 판단하는 시간을 줄일 수 있다.
도 10은 본 발명의 또 다른 실시 예에 따른 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템을 보여주는 블록도이다. 도 10을 참조하면, 컴퓨팅 시스템(3000)은 제 1 및 제 2 스토리지 장치들(3200, 3300)을 포함할 수 있다. 제 1 또는 제 2 스토리지 장치들(3200, 3300)은 도 2 및 도 5와 같이 메모리 컨트롤러 및 불휘발성 메모리를 포함할 수 있다.
호스트(3100)은 제 1 및 제 2 스토리지 장치들(3200, 3300)의 맵핑 테이블들(MAP1, MAP2)을 각각 관리할 수 있다. 호스트(3100)는 제 1 및 제 2 스토리지 장치들(3200, 3300) 각각의 물리 주소에 기반하여 명령을 전송할 수 있다. 호스트(3100)는 제 1 및 제 2 스토리지 장치들(3200, 3300) 각각에 비동기 이벤트 요청 명령을 전송할 수 있다. 호스트(3100)는 제 1 및 제 2 스토리지 장치들(3200, 3300) 중 어느 하나로부터 비동기 이벤트 요청을 수신한 경우 제 1 및 제 2 스토리지 장치들(3200, 3300) 사이에서 데이터를 이동할 수 있다. 예를 들면, 호스트(3100)는 제 1 스토리지 장치(3200)의 리클레임 동작을 통해 데이터를 제 2 스토리지 장치(3300)로 이동시킬 수 있다. 또한, 호스트(3100)는 제 2 스토리지 장치(3300)의 리클레임 동작을 통해 데이터를 제 1 스토리지 장치(3200)로 이동시킬 수 있다.
호스트(3100)는 데이터 배치(Data Placement), 입출력 스케줄링(I/O Scheduling), 및 백그라운 동작(Background Operation)과 같은 스토리지 장치(200)의 관리 동작들을 수행할 수 있다. 예를 들면, 호스트(3100)는 이러한 관리 동작들을 제 1 및 제 2 스토리지 장치들(3200, 3300)의 물리 주소를 기반으로 수행할 수 있다. 또한, 호스트(3100)는 제 1 및 제 2 스토리지 장치들(3200, 3300)을 통합하여 이러한 관리 동작들을 수행할 수 있다. 따라서, 호스트(3100)는 제 1 및 제 2 스토리지 장치들(3200, 3300)을 효율적으로 관리할 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 위에서 설명한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
10, 1000, 2000, 3000: 컴퓨팅 시스템
100, 1100, 2100, 3100: 호스트
110, 1110, 2110, 3110: 플래시 변환 계층
200, 1200, 2200: 스토리지 장치
210, 1210, 2210: 메모리 컨트롤러
220, 1220, 2220: 불휘발성 메모리
3200: 제 1 스토리지 장치
3300: 제 2 스토리지 장치

Claims (20)

  1. 불휘발성 메모리; 및
    플래시 변환 계층을 포함하고, 상기 불휘발성 메모리의 물리 주소를 직접 관리하는 외부 장치로부터 상기 불휘발성 메모리의 특정한 저장 영역에 대한 소거 명령을 수신하고, 상기 특정한 저장 영역에 대한 지연 여부를 검사하여 상기 특정한 저장 영역에 대한 필수 소거 지연 시간이 경과하지 않은 경우 상기 외부 장치로 지연 위반 응답을 송신하고, 소거 동작에 대한 비동기 이벤트 요청 명령을 수신하고, 상기 특정한 저장 영역에 대한 상기 필수 소거 지연 시간이 경과한 경우 상기 외부 장치로 비동기 이벤트 요청을 송신하고, 그리고 상기 외부 장치로부터 상기 소거 명령을 다시 수신하도록 구성된 컨트롤러를 포함하고,
    상기 컨트롤러는 상기 컨트롤러가 상기 외부 장치로부터 상기 소거 명령을 다시 수신한 후 상기 특정한 저장 영역에 대한 지연 여부를 검사하지 않고 상기 소거 동작을 수행하도록 구성된 스토리지 장치.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 스토리지 장치는 상기 외부 장치와 PCIe 기반 NVMe 인터페이스를 사용하여 통신하는 스토리지 장치.
  5. 제 1 항에 있어서,
    상기 컨트롤러는 상기 불휘발성 메모리의 특정한 메모리 블록의 상기 소거 동작을 위해, 상기 비동기 이벤트 요청 명령을 수신하도록 구성된 스토리지 장치.
  6. 제 1 항에 있어서,
    상기 특정한 저장 영역에 대한 지연 여부를 검사하여 상기 특정한 저장 영역에 대한 상기 필수 소거 지연 시간이 경과한 경우 상기 컨트롤러는 상기 외부 장치로 패스 응답을 송신하도록 구성된 스토리지 장치.
  7. 삭제
  8. 불휘발성 메모리; 및
    플래시 변환 계층을 포함하고, 상기 불휘발성 메모리의 물리 주소를 직접 관리하는 외부 장치로부터 동작을 요청하는 비동기 이벤트 요청 명령을 수신하고, 상기 불휘발성 메모리를 모니터링하고, 상기 모니터링 결과에 기초하여 비동기 이벤트 요청을 상기 외부 장치로 송신하고, 그리고 상기 비동기 이벤트 요청에 대응하는 문제가 있는 상기 불휘발성 메모리의 특정한 제1 저장 영역과 관련된 정보를 요청하는 정보 요청 명령을 수신하고, 상기 정보 요청 명령에 응답하여 상기 제1 저장 영역의 정보를 상기 외부 장치로 송신하고, 상기 제1 저장 영역의 정보에 기초한 상기 외부 장치로부터의 지시에 기초하여 상기 제1 저장 영역에 저장된 데이터를 특정한 제2 저장 영역으로 이동시키는 리클레임 동작을 수행하도록 구성된 컨트롤러를 포함하고,
    상기 컨트롤러는 상기 외부 장치로부터 수신된 상기 불휘발성 메모리의 상기 특정한 제2 저장 영역에 대한 제1 명령에 기반하여 상기 동작을 수행하도록 구성된 스토리지 장치.
  9. 삭제
  10. 제 8 항에 있어서,
    상기 비동기 이벤트 요청은 문제 발생 사실 또는 문제 발생 위험을 나타내는 스토리지 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 제 8 항에 있어서,
    상기 컨트롤러는 어드레스, 데이터의 오류 비트 수, 및/또는 소거 횟수를 나타내는 응답 정보를 송신하도록 구성되는 스토리지 장치.
  15. 불휘발성 메모리; 및
    플래시 변환 계층을 포함하고, 상기 불휘발성 메모리의 물리 주소를 직접 관리하는 외부 장치로부터 동작을 요청하는 제1 비동기 이벤트 요청 명령을 수신하고, 상기 불휘발성 메모리를 모니터링하고, 제1 모니터링 결과에 기초하여 제1 비동기 이벤트 요청을 상기 외부 장치로 송신하고, 제2 비동기 이벤트 요청 명령을 수신하고, 제2 모니터링 결과에 기초하여 제2 비동기 이벤트 요청을 송신하고, 그리고 상기 제2 비동기 이벤트 요청에 대응하고, 문제가 있는 상기 불휘발성 메모리의 특정한 제1 저장 영역과 관련된 정보를 요청하는 정보 요청 명령을 수신하고, 상기 정보 요청 명령에 응답하여 상기 제1 저장 영역의 정보를 상기 외부 장치로 송신하고, 상기 제1 저장 영역의 정보에 기초한 상기 외부 장치로부터의 지시에 기초하여 상기 제1 저장 영역에 저장된 데이터를 특정한 제2 저장 영역으로 이동시키는 리클레임 동작을 수행하도록 구성되는 컨트롤러를 포함하고,
    상기 컨트롤러는 상기 외부 장치로부터 수신된 상기 불휘발성 메모리의 상기 특정한 제2 저장 영역에 대한 제1 명령에 기반하여, 상기 동작을 수행하도록 구성된 스토리지 장치.
  16. 삭제
  17. 제 15 항에 있어서,
    상기 컨트롤러는 상기 제1 모니터링 결과를 송신한 후, 상기 제2 비동기 이벤트 요청 명령을 수신하도록 구성된 스토리지 장치.
  18. 제 15 항에 있어서,
    상기 정보 요청 명령은, 문제가 있는 상기 불휘발성 메모리의 적어도 일부와 관련된 정보의 요청을 포함하는 스토리지 장치.
  19. 제 15 항에 있어서,
    상기 컨트롤러는 문제가 있는 상기 불휘발성 메모리의 어드레스, 데이터의 오류 비트 수, 및/또는 소거 횟수를 나타내는 응답 정보를 송신하도록 구성되는 스토리지 장치.
  20. 제 15 항에 있어서,
    상기 제1 비동기 이벤트 요청은 문제 발생 사실 또는 문제 발생 위험을 나타내는 스토리지 장치.
KR1020160124781A 2016-09-28 2016-09-28 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템 KR102618699B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020160124781A KR102618699B1 (ko) 2016-09-28 2016-09-28 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
US15/605,968 US10592130B2 (en) 2016-09-28 2017-05-26 Computing systems including storage devices controlled by hosts
CN201710839469.8A CN107870869B (zh) 2016-09-28 2017-09-18 包括由主机控制的存储装置的计算系统
US16/799,894 US11157180B2 (en) 2016-09-28 2020-02-25 Computing systems including storage devices controlled by hosts
US17/405,242 US11579779B2 (en) 2016-09-28 2021-08-18 Computing systems including storage devices controlled by hosts

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160124781A KR102618699B1 (ko) 2016-09-28 2016-09-28 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20180035271A KR20180035271A (ko) 2018-04-06
KR102618699B1 true KR102618699B1 (ko) 2024-01-02

Family

ID=61686204

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160124781A KR102618699B1 (ko) 2016-09-28 2016-09-28 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템

Country Status (3)

Country Link
US (3) US10592130B2 (ko)
KR (1) KR102618699B1 (ko)
CN (1) CN107870869B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102618699B1 (ko) 2016-09-28 2024-01-02 삼성전자주식회사 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
KR102387922B1 (ko) * 2017-02-07 2022-04-15 삼성전자주식회사 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
US10542089B2 (en) * 2017-03-10 2020-01-21 Toshiba Memory Corporation Large scale implementation of a plurality of open channel solid state drives
JP7131053B2 (ja) * 2018-04-24 2022-09-06 富士通株式会社 記憶装置,情報処理プログラムおよび情報処理システム
CN109491593B (zh) * 2018-09-28 2020-11-17 方一信息科技(上海)有限公司 一种数据存储管理系统及方法
KR102590439B1 (ko) * 2018-10-01 2023-10-18 에스케이하이닉스 주식회사 메모리 시스템
KR102637478B1 (ko) * 2018-12-05 2024-02-15 삼성전자주식회사 오픈 채널 솔리드 스테이트 드라이브, 이를 포함하는 비휘발성 메모리 시스템 및 오픈 채널 솔리드 스테이트 드라이브의 파워 로스 프로텍션 방법
KR20200095010A (ko) * 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 메모리 시스템에서 맵 정보를 전송하는 방법 및 장치
US10860228B1 (en) * 2019-06-24 2020-12-08 Western Digital Technologies, Inc. Method to switch between traditional SSD and open-channel SSD without data loss
US10901624B1 (en) 2019-07-01 2021-01-26 Western Digital Technologies, Inc. Dummy host command generation for supporting higher maximum data transfer sizes (MDTS)
US10901733B1 (en) * 2019-07-01 2021-01-26 Western Digital Technologies, Inc. Open channel vector command execution
KR20210039872A (ko) 2019-10-02 2021-04-12 삼성전자주식회사 프리 블록의 할당을 관리하는 호스트 시스템, 이를 포함하는 데이터 처리 시스템 및 호스트 시스템의 동작방법
KR20210041159A (ko) 2019-10-04 2021-04-15 삼성전자주식회사 정정 가능한 독출 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법
KR20220012019A (ko) * 2020-07-22 2022-02-03 삼성전자주식회사 메모리 모듈 및 이를 포함하는 메모리 시스템
CN113986123A (zh) * 2021-10-22 2022-01-28 深圳忆联信息系统有限公司 基于行为监控的ssd优化管理方法、装置及计算机设备
US11934684B2 (en) 2021-12-14 2024-03-19 Western Digital Technologies, Inc. Maximum data transfer size per tenant and command type

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009129268A (ja) 2007-11-26 2009-06-11 Mitsubishi Electric Corp 監視制御回路を有する車載電子制御装置
JP2012234363A (ja) 2011-04-28 2012-11-29 Toshiba Corp メモリシステム
JP2015111388A (ja) 2013-11-05 2015-06-18 エルエスアイ コーポレーション ソリッドステートメモリシステムにおけるレイテンシーベースのデータ再利用のシステム及び方法

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US8161226B2 (en) 2005-12-27 2012-04-17 Intel Corporation Methods and apparatus to share a thread to reclaim memory space in a non-volatile memory file system
JP4461170B2 (ja) 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
KR100965029B1 (ko) * 2008-05-13 2010-06-21 주식회사 하이닉스반도체 불휘발성 메모리 장치 및 그 프로그램 검증 방법
KR20100093885A (ko) 2009-02-17 2010-08-26 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US9437312B2 (en) * 2009-02-26 2016-09-06 Sandisk Il Ltd. Management of write-protected data in a semiconductor memory
JP2010205167A (ja) 2009-03-05 2010-09-16 Nec Corp 不揮発性メモリ、その制御方法及びプログラム
KR20100102925A (ko) 2009-03-12 2010-09-27 삼성전자주식회사 리드 리클레임 신호를 발생하는 불휘발성 메모리 장치 및 이를 포함하는 메모리 시스템
KR20120096212A (ko) 2011-02-22 2012-08-30 삼성전자주식회사 비휘발성 메모리 장치, 메모리 컨트롤러, 및 이들의 동작 방법
KR20120132820A (ko) * 2011-05-30 2012-12-10 삼성전자주식회사 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법
US8681554B2 (en) 2011-08-29 2014-03-25 Hitachi, Ltd. Semiconductor storage device comprising electrically rewritable nonvolatile semiconductor memory
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US9274945B2 (en) 2011-12-15 2016-03-01 International Business Machines Corporation Processing unit reclaiming requests in a solid state memory device
US9471812B2 (en) * 2012-03-06 2016-10-18 Freescale Semiconductor, Inc. Method for implementing security of non-volatile memory
KR102077811B1 (ko) * 2012-08-29 2020-02-14 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 방법
KR101932920B1 (ko) * 2012-09-14 2019-03-18 삼성전자 주식회사 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
US10180901B2 (en) 2012-10-19 2019-01-15 Oracle International Corporation Apparatus, system and method for managing space in a storage device
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
US9431113B2 (en) * 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9152555B2 (en) * 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9262316B2 (en) * 2013-12-09 2016-02-16 International Business Machines Corporation Recording dwell time in a non-volatile memory system
US9274866B2 (en) * 2013-12-09 2016-03-01 International Business Machines Corporation Programming non-volatile memory using a relaxed dwell time
KR102218735B1 (ko) * 2014-01-21 2021-02-23 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 소거 방법
US9507722B2 (en) 2014-06-05 2016-11-29 Sandisk Technologies Llc Methods, systems, and computer readable media for solid state drive caching across a host bus
KR102179829B1 (ko) 2014-07-10 2020-11-18 삼성전자주식회사 런 타임 배드 셀을 관리하는 스토리지 시스템
US9678827B2 (en) 2014-10-07 2017-06-13 SK Hynix Inc. Access counts for performing data inspection operations in data storage device
US9916237B2 (en) * 2014-12-12 2018-03-13 Sandisk Technologies Llc Model based configuration parameter management
KR102211868B1 (ko) 2014-12-15 2021-02-04 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10339048B2 (en) * 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
US9766819B2 (en) * 2014-12-30 2017-09-19 Sandisk Technologies Llc Systems and methods for managing storage endurance
US20180275894A1 (en) * 2015-01-20 2018-09-27 Hitachi, Ltd. Storage system
US9535607B2 (en) * 2015-02-12 2017-01-03 SK Hynix Inc. Semiconductor system performing status read for semiconductor device and operating method thereof
CN105608027B (zh) * 2015-12-18 2018-10-19 华为技术有限公司 非易失存储设备和访问非易失存储设备的方法
JP6523193B2 (ja) * 2016-03-08 2019-05-29 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
US10101939B2 (en) * 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
US10203884B2 (en) * 2016-03-30 2019-02-12 Intel Corporation Methods and apparatus to perform erase-suspend operations in memory devices
KR20180016679A (ko) * 2016-08-04 2018-02-19 삼성전자주식회사 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법
US9996477B2 (en) * 2016-09-14 2018-06-12 Western Digital Technologies, Inc. Asynchronous drive telemetry data notification
KR102618699B1 (ko) * 2016-09-28 2024-01-02 삼성전자주식회사 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
KR102387922B1 (ko) * 2017-02-07 2022-04-15 삼성전자주식회사 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
US10254979B1 (en) * 2017-09-28 2019-04-09 Intel Corporation Relocating or aborting a block of data by a host, based on media policies managed by a storage device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009129268A (ja) 2007-11-26 2009-06-11 Mitsubishi Electric Corp 監視制御回路を有する車載電子制御装置
JP2012234363A (ja) 2011-04-28 2012-11-29 Toshiba Corp メモリシステム
JP2015111388A (ja) 2013-11-05 2015-06-18 エルエスアイ コーポレーション ソリッドステートメモリシステムにおけるレイテンシーベースのデータ再利用のシステム及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Apurva Vaidya 외."NVMe Based PCIe SSD Validation - Challenges and Solutions".SDC 2013.,2013.09.17.,(제1면 내지 제24면)*

Also Published As

Publication number Publication date
KR20180035271A (ko) 2018-04-06
CN107870869A (zh) 2018-04-03
US20180088841A1 (en) 2018-03-29
US10592130B2 (en) 2020-03-17
US20200192584A1 (en) 2020-06-18
CN107870869B (zh) 2023-11-03
US20210382635A1 (en) 2021-12-09
US11579779B2 (en) 2023-02-14
US11157180B2 (en) 2021-10-26

Similar Documents

Publication Publication Date Title
KR102618699B1 (ko) 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
US11593259B2 (en) Directed sanitization of memory
JP6224253B2 (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
US9858015B2 (en) Solid-state storage management
KR20180016679A (ko) 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법
US20140281338A1 (en) Host-driven garbage collection
US20170160989A1 (en) Solid state disk and method for implementing trim command of the same
TWI682279B (zh) 儲存裝置及電腦系統
CN113508368A (zh) 用于存储器子系统中的单独的只读高速缓存和写入-读取高速缓存的未完成命令队列的使用
US20170177218A1 (en) Memory system and method for controlling nonvolatile memory
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
KR20110046232A (ko) 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법
KR102336335B1 (ko) 메모리 서브 시스템에 대한 기입 원자성 관리
US11366770B2 (en) Storage controller managing completion timing, and operating method thereof
US10490237B2 (en) Data storage device and method of operating the same
KR102516539B1 (ko) 메모리 컨트롤러 및 그 동작 방법
KR101549569B1 (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
CN112447227A (zh) 命令跟踪
KR102523965B1 (ko) 데이터 저장 장치
KR20210066933A (ko) 메모리 서브-시스템의 제어기 메모리 버퍼 탄력성 상태에 대한 정보를 호스트 시스템으로 제공하기
CN113168289B (zh) 使用逐出和恢复管理存储装置中的冗余上下文
KR101831126B1 (ko) 스토리지 내의 데이터 처리 장치의 제어 방법

Legal Events

Date Code Title Description
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)