KR101543102B1 - 플래시 판독 명령 완료의 시간 추정에 기초한 호스트 판독 명령 반환 재정렬 - Google Patents

플래시 판독 명령 완료의 시간 추정에 기초한 호스트 판독 명령 반환 재정렬 Download PDF

Info

Publication number
KR101543102B1
KR101543102B1 KR1020130149818A KR20130149818A KR101543102B1 KR 101543102 B1 KR101543102 B1 KR 101543102B1 KR 1020130149818 A KR1020130149818 A KR 1020130149818A KR 20130149818 A KR20130149818 A KR 20130149818A KR 101543102 B1 KR101543102 B1 KR 101543102B1
Authority
KR
South Korea
Prior art keywords
host
read command
cost
memory die
volatile memory
Prior art date
Application number
KR1020130149818A
Other languages
English (en)
Other versions
KR20140071938A (ko
Inventor
조아오 알칸타라
졸탄 스저보크세브
Original Assignee
에이취지에스티 네덜란드 비.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이취지에스티 네덜란드 비.브이. filed Critical 에이취지에스티 네덜란드 비.브이.
Publication of KR20140071938A publication Critical patent/KR20140071938A/ko
Application granted granted Critical
Publication of KR101543102B1 publication Critical patent/KR101543102B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/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
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM
    • 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

Abstract

판독 명령에 응답하여 호스트로의 데이터 반환을 관리하기 위하여, 고체 상태 드라이브(SSD)의 동작 감시기는 대응하는 플래시 다이 상에서의 판독 동작을 완료하기 위한 추정된 시간을 특징화하는 메트릭(metric)을 유지하기 위해 이용되는 카운터를 관리한다. 타이머는 시간이 지남에 따라 카운터를 감소시키는 주기적인 이벤트를 발생한다. 각각의 카운터에 저장된 값은 대응하는 다이에 전송되는 플래시 동작에 대해 발생되고, 일반적으로, 동작 이력 및 동작의 물리적 위치에 기초한다. 판독 명령이 특정한 다이에 전송하는 것으로 스케줄이 정해질 때마다, 그 특정한 판독 동작에 대한 시간 추정치가 검색되고, 이 정보에 기초하여, 호스트로 데이터를 반환하기 위한 최적의 순서가 결정된다. 이 순서는 호스트로의 데이터 전달을 스케줄링하고 프로그래밍하기 위해 이용되어, 최소 수의 판독 명령이 다른 판독 명령에 의해 차단된다.

Description

플래시 판독 명령 완료의 시간 추정에 기초한 호스트 판독 명령 반환 재정렬{HOST READ COMMAND RETURN REORDERING BASED ON TIME ESTIMATION OF FLASH READ COMMAND COMPLETION}
발명의 실시예는 고체 상태 드라이브(SSD: solid-state drive)로부터 호스트로 데이터를 반환하는 순서를 결정하기 위한 추정 메커니즘에 관한 것이다.
고체 상태 드라이브(SSD)는 데이터를 지속적으로 저장하기 위한 메모리 유닛으로서 집적 회로 어셈블리를 이용하는 데이터 저장 장치이다. SSD 기술은 종래의 블록 입력/출력(I/O: input/output) 하드 디스크 드라이브(HDD: hard disk drive)와 호환되는 전자 인터페이스를 이용한다. SSD는 임의의 움직이는 기계 부품을 사용하지 않으며, 이는 가동성(movable) 판독-기록 헤드를 이용하여 회전하는 자기 디스크 상에 데이터를 저장하는 종래의 HDD와 SSD를 구별한다.
현재, 대부분의 SSD는 NAND-기반 플래시 메모리(flash memory)를 이용하고, 이 NAND-기반 플래시 메모리는 전력의 부재 시에 데이터를 유지하고 (플래시 메모리는 EEPROM으로부터 개발되었으므로) 전기적으로 소거(erase) 및 재프로그래밍될 수 있는 비휘발성 메모리 형태이다. 또한, 하이브리드 드라이브(hybrid drive)는 동일한 유닛에서 SSD 및 HDD 둘 모두의 특징을 조합하며, 자주 액세스되는 데이터의 성능을 향상시키기 위하여 SSD 캐시(cache)와 하드 디스크 드라이브를 전형적으로 포함한다. 플래시 메모리는 플로팅-게이트(floating-gate) 트랜지스터로 만들어진 메모리 셀의 어레이(array)에 정보를 저장한다.
기업용 SSD 구현은, 예를 들어 서버에서, 데스크톱 및 랩톱 HDD 및 SSD 드라이브와 상이하고 더 높은 성능 표준으로 전형적으로 유지된다. 즉, 기업용 SSD는 상대적으로 높은 I/O 성능을 제공하도록 전형적으로 요구된다. 그러므로, 최적의 완전한 판독 및 혼합된 판독/기록 성능은 많은 SSD 개발 엔지니어의 목표이다.
발명의 실시예는 고체 상태 드라이브(SSD) 저장 장치에서 이용하기 위하여 판독 명령에 응답하여 호스트로의 데이터 반환을 관리하기 위한 것이다. 최적의 완전한 판독 및 혼합된 판독/기록 성능은 데이터가 호스트로 반환되는 순서에 의해 영향을 받고, 데이터가 호스트로 반환되는 순서는 호스트가 판독 명령을 송신한 순서에 반드시 대응하는 것은 아니다.
실시예에 따르면, 고체 상태 드라이브(SSD)의 동작 감시기는 대응하는 플래시 다이 상에서의 판독 동작을 완료하기 위한 추정된 시간, 즉, 동작 비용(operation cost)을 특징화하는 메트릭(metric)을 관리하기 위해 사용되는 카운터를 관리하도록 구성된다. 동작 감시기는 카운터를 감소시키는 주기적인 이벤트를 발생하는 타이머를 개시한다. 각각의 카운터에 저장된 값은 대응하는 다이에 전송(submit)되는 플래시 동작에 대해 발생되고, 일반적으로, 동작의 이력 및 물리적 위치에 기초하고 있다. 판독 명령이 특정한 다이에 전송되는 것으로 스케줄이 정해질 때마다, 예를 들어, 제어기 펌웨어는 그 특정한 플래시 판독 동작에 대한 시간 추정치를 검색할 수 있다. 이 정보에 기초하여, 호스트로 데이터를 반환하기 위한 최적의 순서가 결정 가능하다. 이 순서는 호스트로의 데이터 전달을 스케줄링하고 프로그래밍하기 위해 이용되고, 최적의 순서는, 차단기(blocker) 명령이 호스트로 반환되도록 이용 가능한 대응하는 데이터를 가지지 않을 때, 최소 수의 판독 명령이 다른 판독 명령에 의해 차단되는 순서를 나타낸다.
SSD 장치에 의해 수신된 판독 명령에 응답하여 호스트로의 반환을 관리하기 위한 방법의 실시예에 따르면, 데이터 명령은 호스트로부터 수신되고, 동작 비용은 각각의 비휘발성 메모리 다이에 전송되는 각각의 동작에 대해 발생된다. 각각의 동작 코스트는 주기적인 이벤트(예를 들어, 클록 틱(clock tick))를 발생하는 타이머에 기초하여 감소된다. 따라서, 카운터에서 나타난 동작 비용은 시간이 지남에 따라 감소하며, 마치 대응하는 다이를 판독하기 위한 시간이 시간이 지남에 따라 감소하는 것과 같다. 호스트로부터 수신된 판독 명령의 총비용은 판독 명령과 연관된 각각의 비휘발성 메모리 다이에 전송되는 각각의 동작에 대한 현재의 동작 비용에 기초하여 연산된다. 판독 명령의 총비용에 기초하여, 호스트로부터 수신된 다른 판독 명령에 비해, 요청된 데이터를 호스트로 반환하기 위한 순서가 결정된다.
발명의 실시예의 발명의 내용 부분에서 논의된 실시예는 본 명세서에서 논의된 모든 실시예를 제시, 설명, 또는 교시하도록 의도된 것이 아니다. 따라서, 발명의 실시예는 이 부분에서 논의된 것보다 추가적 또는 상이한 특징을 포함할 수 있다.
발명의 실시예는 첨부한 도면의 도면에서 제한을 위한 것이 아니라 예를 들기 위하여 도시되어 있으며, 첨부한 도면에서 유사한 참조 번호는 유사한 구성요소를 지칭한다.
도 1은 발명의 실시예가 구현될 수 있는 일 예의 동작 환경을 예시하는 블록도이다.
도 2는 발명의 실시예가 구현될 수 있는 일 예의 동작 환경의 일부분을 메모리 동작 감시기에 초점을 맞춰 예시하는 블록도이다.
도 3은 발명의 실시예에 따라 메모리 동작 감시기를 예시하는 블록도이다.
도 4는 발명의 실시예에 따라 호스트로의 반환을 관리하기 위한 방법을 예시하는 순서도이다.
고체 상태 드라이브(SSD) 저장 장치에서 이용하기 위하여, 호스트로부터의 판독 명령에 응답하여 데이터 반환을 관리하기 위한 방법이 설명된다. 다음의 설명에서는, 설명을 위하여, 본 명세서에 설명된 발명의 실시예의 철저한 이해를 제공하기 위하여 다수의 특정한 세부사항이 기술되어 있다. 그러나, 본 명세서에 설명된 발명의 실시예는 이 특정한 세부사항 없이 실시될 수도 있다는 것이 명백할 것이다. 다른 사례에서는, 본 명세서에 설명된 발명의 실시예를 불필요하게 모호하게 하는 것을 회피하기 위하여, 잘 알려진 구조 및 장치가 블록도 형태로 도시되어 있다.
고체 상태 드라이브 구성
발명의 실시예는 고체 상태 드라이브(SSD) 저장 장치를 관리하기 위하여 이용될 수 있다. 도 1은 발명의 실시예가 구현될 수 있는 일 예의 동작 환경을 예시하는 블록도이다. 도 1은 SSD(102)가 주 통신 인터페이스(106)를 통해 호스트 장치(104)와 통신 가능하게 결합되어 있는 일반적인 SSD 구조(100)를 예시한다. 발명의 실시예는 도 1에 도시된 바와 같은 구성으로 제한되지 않고, 오히려, 실시예는 SSD와는 다른 환경들에 적용 가능하며 도 1에 예시된 것과 다른 SSD 구성에서 구현될 수 있다. 예를 들어, 실시예는 데이터의 기록 및 판독을 위한 비휘발성 메모리 저장 부품에 의존하는 다른 환경에서 동작하도록 구현될 수 있다.
호스트 장치(104)(또는 간단히 "호스트")는 특히, 하나 이상의 메모리 장치에 대해 데이터 I/O 요청 또는 호출을 행하는 임의의 유형의 컴퓨팅 하드웨어 또는 소프트웨어를 폭넓게 나타낸다. 예를 들어, 호스트(104)는 컴퓨터, 태블릿(tablet), 이동 전화, 또는 일반적으로 메모리를 포함하거나 메모리와 상호작용하는 임의의 유형의 컴퓨팅 장치 상에서 실행되는 운영 체제(operating system)일 수 있다. 호스트 장치(104)를 SSD(102)에 결합하는 주 인터페이스(106)는 예를 들어, 컴퓨터의 내부 버스 또는 통신 케이블 또는 무선 통신 링크 등일 수 있다.
도 1에 예시된 일 예의 SSD(102)는 인터페이스(110), 제어기(112)(예를 들어, 펌웨어 로직을 그 내부에 갖는 제어기), 어드레싱(114) 기능 블록, 데이터 버퍼 캐시(116), 에러 정정 코드(ECC: error correction code)(118), 및 하나 이상의 비휘발성 메모리 부품(120a, 120b, 120n)을 포함한다.
인터페이스(110)는 부품, 즉, 이 상황에서는 SSD(102) 및 호스트 장치(104) 사이의 상호작용점(point of interaction)이고, 하드웨어 및 소프트웨어 둘 모두의 수준에서 적용 가능하다. 이것은 부품이 입력/출력 시스템 및 연관된 프로토콜을 통해 다른 부품과 통신하도록 한다. 하드웨어 인터페이스는 인터페이스에서의 기계적, 전기적 및 논리적 신호 및 이 신호를 시퀀싱(sequencing)하기 위한 프로토콜에 의해 전형적으로 설명된다. 통상적이고 표준적인 인터페이스의 일부 비제한적인 예는 SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), 및 SATA(Serial ATA)를 포함한다.
SSD(102)는 제어기(112)를 포함하고, 이 제어기는 비휘발성 메모리(120a, 120b, 120n)를 호스트 장치(104)에 브리지(bridge)하는 것과 같이, 비휘발성 메모리 부품(예를 들어, NAND 플래시)을 호스트에 브리지하는 전자기기를 포함한다. 제어기는 전형적으로, 펌웨어-레벨(firmware-level) 코드를 실행하는 내장된 프로세서이고, SSD 성능에 있어서 중요한 인자이다.
제어기(112)는 어드레싱(114) 기능 블록을 통해 비휘발성 메모리(120a, 120b, 120n)와 인터페이스한다. 어드레싱(114) 기능은 예를 들어, 호스트(104)로부터 SSD(102) 상의, 즉, SSD(102)의 비휘발성 메모리(120a, 120b, 120n) 상의 대응하는 물리적 블록 어드레스(physical block address)로의 논리적 블록 어드레스(LBA: logical block address) 사이의 매핑(mapping)을 관리하도록 동작한다. 비휘발성 메모리 페이지 및 호스트 섹터는 상이한 크기이므로, SSD는 호스트가 데이터를 섹터로 기록하거나 섹터로부터 데이터를 판독하는 것 사이에서 변환하도록 하는 데이터 구조와, 그 데이터가 실제로 위치되는 물리적 비휘발성 메모리 페이지를 구축하고 유지해야 한다. 이 테이블 구조 또는 "매핑(mapping)"은 제어기(112) 및 어드레싱(114)에 액세스 가능한 DRAM 또는 일부 다른 로컬 휘발성 메모리 부품과 같은 SSD의 휘발성 메모리(122)에서의 세션(session) 동안에 구축되고 유지될 수 있다. 대안적으로, 테이블 구조는 비휘발성 메모리(120a, 120b, 120n)와 같은 SSD의 비휘발성 메모리에서의 세션에 걸쳐 더욱 지속적으로 유지될 수 있다.
어드레싱(114)은 비휘발성 메모리(120a, 120b, 120n) 외에, 데이터 버퍼 캐시(116) 및 에러 정정 코드(ECC)(118)와 상호작용한다. SSD(102)의 데이터 버퍼 캐시(116)는 DRAM을 하드 디스크 드라이브에서의 캐시와 유사한 캐시로서 전형적으로 이용한다. 데이터 버퍼 캐시(116)는 캐시된 데이터에 대한 추후의 요청의 속도를 증가시키기 위한 캐시로서 작동할 뿐만 아니라, 비휘발성 메모리 부품으로의 데이터의 전송 및 비휘발성 메모리 부품으로부터의 데이터 전송을 위한 버퍼 또는 저장 영역으로서 작동한다. 데이터 버퍼 캐시(116)는 전형적으로 휘발성 메모리로 구현되므로, 그 내부에 저장된 데이터는 영구적으로 캐시에 저장되지 않으며, 즉, 데이터는 지속적이지 않다.
ECC(118)는 여분의 데이터 또는 패리티 데이터(parity data)를 메시지에 추가하는 시스템이어서, 전송 처리 동안 또는 저장 중에 다수의 에러가 도입되더라도, 메시지는 수신기에 의해 복구될 수 있다.
마지막으로, SSD(102)는 하나 이상의 비휘발성 메모리(120a, 120b, 120n) 부품을 포함한다. 비-제한적인 예를 들면, 비휘발성 메모리 부품(120a, 120b, 120n)은 플래시 메모리(예를 들어, NAND 또는 NOR 플래시), 또는 현재 또는 추후에 이용 가능한 다른 유형의 고체 상태 메모리로서 구현될 수 있다. 비휘발성 메모리(120a, 120b, 120n) 부품은 데이터가 지속적으로 저장되는 실제적인 메모리 전자 부품이다. SSD(102)의 비휘발성 메모리(120a, 120b, 120n) 부품은 하드 디스크 드라이브(HDD) 저장 장치에서의 하드 디스크와 유사한 것으로 간주될 수 있다.
호스트로부터의 판독 명령에 응답하여 호스트로의 데이터 반환을 관리하는 발명의 실시예가 설명된다. 그 결과, 판독 명령과 연관된 데이터가 호스트로 반환되어야 하는 최적의 순서가 결정가능하고, 더욱 성능이 우수한 SSD 저장 장치가 달성 가능하다.
메모리 동작 감시기
도 2는 발명의 실시예가 구현될 수 있는 일 예의 동작 환경의 일부분을 메모리 동작 감시기에 초점을 맞춰 예시하는 블록도이다. 일 예의 동작 환경(200)은 CPU(204)에 통신 가능하게 결합된 메모리 동작 감시기(202)(이하, "동작 감시기"라고 지칭됨)를 포함한다. 또한 동작 감시기(202)는 하나 이상의 채널(206a, 206b, 206n)에 결합되고, 각각의 채널은 하나 이상의 비휘발성 메모리 다이(memory die)에 결합된다. 예를 들기 위하여, 도 2는 다이(die)(208a0), 다이(208a1), 다이(208a2)에 결합되어 이 다이와 통신하는 채널(206a); 다이(208b0, 208b1, 208b2)에 결합되어 이 다이와 통신하는 채널(206b); 및 다이(208n0, 208n1, 208n2)에 결합되어 이 다이와 통신하는 채널(206n)을 도시한다. 도 2에 도시된 채널 및 대응하는 메모리 다이의 수는 예를 들기 위한 것이고, 발명의 실시예는 도시된 정확한 구성으로 제한되지 않는다는 것에 주목해야 한다.
실시예에 따르면, 동작 감시기(202)는 도 3을 참조하여 설명된 바와 같이 동작한다. 일반적으로, 동작 감시기(202)는 실행 가능한 작업을 수행함에 있어서 제어기를 보조하도록 구성되는 하드웨어 가속기로서 간주될 수 있다. 실시예에 따르면, 동작 감시기(202)는 제어기(112)에서 구현되지만(도 1), 발명의 실시예의 실시는 그렇게 제한되지 않는다. 그러므로, 동작 감시기(202)는 기본적으로 SSD(102)(도 1) 내의 어디든지, 예를 들어, 심지어 메모리 다이(208a0-208n2) 중 하나 이상에서 구현될 수 있다. 동작 감시기(202)는 펌웨어 또는 하드웨어로 구현될 수 있다. 도 3을 참조하여 더욱 상세하게 설명되는 바와 같이, 동작 감시기(202)는 일반적으로 추정기 기능으로서 기능한다.
동작 환경(200)은 동작 감시기(202)의 기능성(functionality)과 연관된 명령어, 절차 등을 실행하기 위한 전용(dedicated) 또는 공유(shared) CPU(204)를 포함할 수 있다. CPU(204)는 메모리 다이(208a0-208n2)와 연관된 동작을 서비스하기 위한 실행가능 로직을 실행할 수 있는 SSD(102) 프로세서이다. 유사하게, 각각의 채널(206a, 206b, 206n)은 그 각각의 메모리 다이뿐만 아니라 서로 인터페이스한다. 채널은 다수의 엔티티(entity) 또는 부품과의 통신 "파이프라인(pipeline)"으로 간주될 수 있다. 그러므로, SSD(102)의 채널(206a, 206b, 206n)은 동작 감시기(202) 및 각각의 채널의 각각의 메모리 다이 사이, 그리고 CPU(204)와 각각의 채널의 각각의 메모리 다이 사이의 통신 및 동작 라인(line)으로서 기능한다.
플래시 메모리는 비휘발성 메모리의 한 유형이다. 플래시 메모리는 전기적으로 소거 가능한 프로그램가능 판독 전용 메모리(EEPROM: electrically erasable programmable read-only memory)의 한 유형이다. 메모리 다이는 비휘발성 메모리의 하드웨어 유닛이다. 플래시 메모리 다이는 개별 집적 회로 다이이고, 이러한 다이는 적어도 하나의 플래시 메모리 집적 회로를 포함한다. 다이는 데이터가 플래시 메모리 상에 저장되는 로우 레벨 매체(low level medium)이다.
도 3은 발명의 실시예에 따라 메모리 동작 감시기를 예시하는 블록도이다. 도 3의 메모리 동작 감시기(202)는 다수의 다이 카운터(die counter)를 포함하고, 이 다이 카운터 각각은 하나 이상의 대응하는 메모리 다이와 연관된다. 예를 들어, 다이 카운터(302a0, 302a1, 302a2)는 대응하는 다이(208a0, 208a2)(도 2)와 연관되고; 다이 카운터(302b0, 302b1, 302b2)는 대응하는 다이(208b0, 208b1, 208b2)(도 2)와 연관되고; 다이 카운터(302n0, 302n1, 302n2)는 대응하는 다이(208n0, 208n1, 208n2)(도 2)와 연관된다. 메모리 다이의 수와 마찬가지로, 도 3에 도시된 다이 카운터의 수는 예를 들기 위한 것이고, 발명의 실시예는 도시된 정확한 구성 및 다이 카운터의 수로 제한되지 않는다는 점에 주의해야 한다.
다이 카운터(302a0-302n2)는 대응하는 다이(208a0-208n2)(도 2) 상의 판독 동작과 연관된 완료 시간을 추적하기 위해 이용되는 데이터 구조이다. 특정한 다이 상에서 판독 동작을 완료하기 위한 추정된 시간은 대응하는 다이 카운터에 저장되는 "동작 비용(operation cost)" 메트릭(metric)을 특징으로 한다. 다이 카운터(302a0-302n2)에 저장된 동작 비용 값은 다이(208a0-208n2)에 전송되는 모든 플래시 동작 동안 발생되고, 실시예에 따르면, 다이 이력(die history) 및 동작의 물리적 위치에 기초하고 있다.
메모리 동작 감시기(202)는 다이 카운터(302a0-302n2)와 연관되는 타이머(304)를 포함한다. 타이머(304)는 모든 다이 카운터(302a0-302n2)를 감소시키는 클록 틱(clock tick)과 같은 주기적인 이벤트(event)를 발생한다. 비제한적인 예를 들면, 타이머(304)는 1 ㎲ 클록 틱을 발생할 수 있다. 일단 초기화되면, 타이머(304)는 임의의 판독 명령에 관계없이 틱을 행한다. 타이머(304)는 예를 들어, 종종 구성 가능한 고정된 주파수에서 감소하는 디지털 카운터로서 구현될 수 있다. 더욱 정교한 타이머는 타이머 값과 소프트웨어 또는 다른 로직에 의해 설정된 특정한 값을 비교하기 위하여 비교 로직을 이용할 수 있고, 이 특정한 값은 타이머 값이 미리 설정된 값과 일치할 때 일부 작동을 개시한다. 이러한 유형의 타이머는 예를 들어, 펄스를 발생하기 위하여 사용될 수 있다. 실시예에 따르면, 펄스를 발생하기 위하여 비교 로직을 이용하는 디지털 카운터는 다이 카운터(302a0-302n2)에서 값을 감소시키기 위하여 이용된다. 그러나, 이용되는 타이머의 유형은 구현마다 변동될 수 있다.
따라서, 동작 감시기(202)는 다이 카운터(302a0-302n2)에 동작 비용을 로드(load)하고 타이머(304)로부터의 클록 틱마다 이 동작 비용 값을 감소시킴으로써, 고체 상태 드라이브를 포함하는 모든 플래시 다이 상에서의 플래시 판독 동작의 완료 시간을 추정하고 관리한다.
메모리 동작 감시기(202)는 하나 이상의 프로그램 비용 레지스터(program cost register)(314a, 314b, 314c, 314n)를 포함한다. 프로그램 비용 레지스터(314a-314n)는 기록 동작으로 알려진 페이지 프로그램 동작(page program operation)을 완료하기 위해 걸리는 시간을 설명하기 위하여 이용된다. 도 3에 도시된 프로그램 비용 레지스터의 수는 예를 들기 위한 것이고, 발명의 실시예는 도시된 정확한 구성 및 프로그램 비용 레지스터의 수로 제한되지 않는다. 비용 레지스터의 수는 설계 선택의 사항일 수 있고, 예를 들어, 비휘발성 메모리(120a-120n)(도 1) 및 SSD(102)(도 1) 구조에 기초할 수 있다. 그러나, 실시예에 따르면, 프로그램 비용을 위하여 4개의 가능한 값을 유지하기 위하여 4개의 코스트 레지스터가 이용되고, 이러한 프로그램 비용 값은 비휘발성 메모리(120a-120n) 내에서의 페이지 위치로 인한 프로그래밍 변동을 설명한다. 일반적인 프로그램 비용 레지스터(314a-314n) 값은 비휘발성 메모리(120a-120n)로부터 미리 결정될 수 있지만, 이 값은 요청된 데이터가 저장되는 비휘발성 메모리 상에서의 관련된 위치에 기초하여, 비휘발성 메모리의 유형 등에 기초하여 변동될 수 있다.
동작 감시기(202)는 소거 비용 레지스터(310) 및 판독 비용 레지스터(312)를 포함한다. 소거 비용 레지스터(310)는 소거 동작을 완료하기 위해 걸리는 시간을 나타내는 값을 저장하기 위해 이용되고, 판독 비용 레지스터(312)는 판독 동작을 완료하기 위해 걸리는 시간을 나타내는 값을 저장하기 위해 이용된다. 간략함을 위하여 하나의 소거 비용 레지스터(310) 및 하나의 판독 비용 레지스터(312)가 도 3에 도시되어 있고, 발명의 실시예는 본 명세서에서 설명된 더 넓은 교시 내용의 상대적으로 간단한 구현을 위하여 도시된 바와 같이 구현될 수 있다. 즉, 간단한 구현은 다양한 비용 정보를 저장하기 위하여 간단한 레지스터를 사용할 수 있다.
그러나, 판독, 소거, 및 프로그램 비용은 SSD의 수명에 걸쳐 그리고 다이(208a0-208n2) 내의 상이한 블록에 걸쳐 변동된다. 그러므로, 실시예의 구현은 비용이 추정되는 입도(granularity)의 수준에서 변동될 수 있다. 그러므로, 실시예의 상대적으로 더욱 복잡한 구현은 다이, 블록, 또는 페이지에 기초하여, 그리고 드라이브의 수명에 걸쳐 이 비용이 변화함에 따라, 판독, 소거 및 프로그램 비용의 다수의 변동을 저장하기 위하여 메모리(308)를 이용할 수 있다. 비용 메트릭의 다수의 변동을 저장하는 더 큰 메모리(308)는 더욱 정확한 비용 추정치를 생성할 가능성이 있으므로, 비용 입도 대 추정 정확도는 구현 수준에서 관리될 수 있는 교환(tradeoff)이다.
프로그램(즉, 기록 동작) 비용, 판독 비용 및 소거 비용이 고려되는 하나의 이유는 비휘발성 메모리 다이(208a0-208n2) 상에서의 판독 동작의 완료 시간, 및 이에 따라, 데이터가 호스트(104)(도 1)로 반환되는 최적의 순서가 동일한 다이를 목표로 하는 다른 호스트 명령으로 인한 판독 동작(즉, 무작위 판독 시나리오)뿐만 아니라, 예를 들어, 호스트 기록 동작 및 가비지 수집(garbage collection) 동작으로 인한 판독 동작(즉, 무작위 혼합 시나리오)과 동시에 실행하는 기록, 소거 및 판독 동작에 의해 영향을 받는다는 것이다. 그러므로, 데이터가 호스트(104)(도 1)로 반환되어야 하는 명령의 최적의 순서는 적어도 부분적으로 기저 동작(background operation)뿐만 아니라 무작위 혼합 및 무작위 판독 시나리오로 인해 호스트가 명령을 SSD(102)(도 1)로 송신한 순서에 반드시 대응하는 것은 아니다.
동작 감시기(202)의 제어 로직(306)은 다이 카운터(302a0-302n2)를 파퓰레이트(populate) 및 관리하고 동작 감시기(202)의 대안적인 실시예에서 구현될 수 있는 임의의 다른 레지스터뿐만 아니라, 프로그램 비용 레지스터(314a-314n), 소거 비용 레지스터(310), 및 판독 비용 레지스터(312)와 같은 다양한 레지스터를 구성하도록 실행하는 로직이다. 또한, 제어 로직(306)은 다수의 다이(208a0-208n2)(도 2)에 걸쳐 또는 다수의 비휘발성 메모리(120a-120n)(도 1)에 걸쳐 다양한 동작 비용(예를 들어, 소거 비용, 판독 비용)을 평균화하는 것과 같이, 현재의 또는 실제적인 동작 완료 시간에 기초하여 레지스터 동작 비용을 조절하는 것 등과 같이, 데이터를 호스트(104)로 반환해야 하는 최적의 순서를 결정하는 것을 지원하는 다른 작업 및 연산을 수행할 수 있다. 제어 로직(306)의 범위는 제한되도록 의도된 것이 아니고, 다른 기능을 수행하기 위한 이러한 로직의 확장이 구체적으로 고려된다.
동작 감시기(202)는 각각의 채널(206a, 206b, 206n)(도 2)에 대응하는 하나 이상의 채널 버스 제어부(316a, 316b, 316n)를 포함한다. 실시예에 따르면, 채널 버스 제어부(316a-316n)는 예를 들어, 채널(206a-206n)이 다이(208a0-208n2)에 대한 동작을 용이하게 하는 채널 버스(도 2)를 스누핑(snooping)함으로써, 다이(208a0-208n2)(도 2) 상에서의 동작의 시작 및 종료를 검출하도록 구성된다. 이러한 검출된 동작 활동은 다이 카운터(302a0-302n2)의 동작 비용 값을 파퓰레이트 및 관리하기 위하여 제어 로직(306)에 의해 이용될 수 있다.
동작 감시기(202)의 메모리(308)는 동작 감시기(202)가 다양한 목적으로 이용 가능한 메모리이며, 이 다양한 목적의 일부는 원하는 비용 메트릭 입도 및 동작 감시기(202)에서 구체화될 수 있는 자체 조절 특징의 상황에서 본 명세서에서 더욱 상세하게 설명된다. 메모리(308)의 유형 및 형태는 제한되지 않고, 관련된 설계 제약, 목적 등에 기초하여 구현마다 변동될 수 있다.
호스트로의 반환을 관리하기 위한 방법
도 4는 발명의 실시예에 따라 호스트로의 반환을 관리하기 위한 방법을 예시하는 순서도이다. 도 4에 예시된 프로세스는 SSD(102)(도 1)와 같은 SSD에서 구현될 수 있다. 더욱 구체적으로, 도 4에 예시된 프로세스는 발명의 실시예에 따라 SSD(102)의 제어기(112)(도 1)에서 구현될 수 있다. 또한, 실시예에 따르면, 도 4의 프로세스는 메모리 동작 감시기(202)(도 2)에서 구현된다. 프로세스 로직은 SSD(102) 내의 아날로그 또는 디지털 하드웨어 회로로서, 또는 SSD(102) 내에서 CPU(204)(도 2) 또는 MPU와 같은 프로세서에 의해 실행되는 펌웨어 명령어(firmware instruction)로서 구현될 수 있다.
도 4의 블록(402)에서는, 데이터 판독 명령이 호스트로부터 수신된다. 예를 들어, 데이터 판독 명령은 SSD(102)(도 1)의 인터페이스(110)(도 1)를 통해 제어기(112)(도 1)에서 호스트 장치(104)(도 1)로부터 수신된다. 큐잉된(queued) 명령 시스템에서는, 호스트는 다수의 판독 및 기록 명령을, 즉, SSD(102)가 동시에 그리고 순간적으로 처리할 수 있는 것보다 더 많은 명령을 SSD(102)와 같은 저장 장치로 송신할 수 있다. 특히, 호스트에 의해 명령이 송신되는 순서가 항상 최고의 SSD 성능을 위하여 호스트로 데이터를 응답하거나 반환하기 위한 최고의 순서인 것은 아니다. 이것은 부분적으로, 플래시 메모리로부터 데이터를 판독하기 위한 대기 시간이 예를 들어, 목표 다이가 아이들(idle)인지 여부와, 목표 다이가 소거, 페이지 프로그램 또는 판독 동작으로 비지(busy)인지 여부에 기초하여 변동되기 때문이다.
제어기(112)(도 1)는 데이터가 비휘발성 메모리(120a-120n)(도 1)의 어디에 저장되는지에 대한 "지식"을 가지고 있다. 따라서, 제어기(112)는 요청들이 수신되는 순서로 요청에 응답하여 메모리로부터 데이터를 불러올 수 있지만, 상이한 동작은 예를 들어, 비휘발성 메모리가 현재 무엇을 그리고 어떻게 동작하고 있는지, 메모리의 이전 동작이 무엇이었는지, 관련 데이터가 메모리에서 어디에 위치되는지 등에 따라 상이한 양의 시간이 걸린다. 중요하게도, 본 명세서에 설명된 실시예는 성능을 위하여 데이터를 호스트로 반환해야 하는 최적의 순서를 결정한다. 대조적으로, 최적이 아닌 반환 순서가 사용되면, 시스템은 데이터가 호스트로 반환될 수 있기 전에 다른 메모리 동작이 완료하기 위해 더 길게 및/또는 더 자주 대기하도록 종종 요구된다.
블록(404)에서는, 각각의 비휘발성 메모리 다이에 전송되는 각각의 동작에 대해 동작 비용이 발생된다. 예를 들어, 소거 비용 레지스터(310)(도 3), 판독 비용 레지스터(312)(도 3), 및 프로그램 비용 레지스터(314a-314n)(도 3)의 값과, 목표 메모리 다이가 현재 처리하고 있거나 큐잉한 것에 기초하여, 메모리 동작 감시기(202)(도 2)의 제어 로직(306)(도 3)은 대응하는 다이 카운터(302a0-302n2)(도 3)에서의 목표 다이(예를 들어, 도 2의 하나 이상의 다이(208a0-208n2))에 대한 동작 비용을 구축하고 저장한다. 동작 비용은 호스트로부터의 판독 요청에 응답하여 발생될 수 있지만 반드시 그렇지 않다는 것에 주의해야 한다.
실시예에 따르면, 카운터들에 저장된 동작 비용 값은 특정한 판독 명령에 대하여, 다이에 전송되는 모든 비휘발성 메모리 동작에 대해 자동으로 발생된다. 앞에서 설명된 바와 같이, 제어 로직(306)(도 3)은 판독 명령에 응답하여 다양한 다이 카운터(302a0-302n2)(도 3)에 대한 현재의 값을 연산하기 위하여, 각각의 채널 버스로부터 채널 버스 제어부(316a-316n)(도 3)에 의해 얻어진 정보, 예를 들어, 동작 시작 및 종료 시간을 이용할 수 있다. 대안적으로, 카운터에 저장된 동작 비용 값은 모든 비휘발성 메모리 다이에 대해 자동으로 발생되고 일정하게 관리되므로, 호스트로부터의 판독 명령에 응답하여 요청될 때 이용 가능하다. 따라서, 제어 로직(306)은 시간이 지남에 따라 다양한 다이 카운터(302a0-302n2)의 초기화 및 플러싱(flushing)을 개시하기 위하여, 각각의 채널 버스로부터 채널 버스 제어기(316a-316n)에 의해 얻어진 정보를 이용할 수 있다.
블록(406)에서는, 시간이 지남에 따라, 각각의 동작 비용이 주기적인 이벤트를 발생하는 타이머에 기초하여 감소된다. 예를 들어, 대응하는 다이 카운터(302a0-302n2)(도 3)에서의 목표 다이(예를 들어, 도 2의 하나 이상의 다이(208a0-208n2))에 대해 발생된 동작 비용은 타이머(304)(도 3)의 클록 틱에 기초하여 시간이 지남에 따라 감소된다. 논의를 위하여, 하나 이상의 다이가 소거, 판독, 또는 기록 동작으로 현재 비지 상태라고 가정하면, 대응하는 다이에서의 동작 비용은 각각의 현재의 동작에 대한 완료를 위한 시간을 반영한다. 그 다음으로, 시간이 경과하고 동작들이 완료되어 감에 따라, 다이 카운터에서의 동작 비용은 감소하는 타이머(304) 클록 틱에 기초하여 이에 대응하여 감소하고 있고, 그 의도는 현재의 동작의 동작 비용을 현재의 동작 완료와 일치하는 영(zero)으로 감소시키는 것이다.
NAND 플래시와 같은 어떤 유형의 비휘발성 메모리의 경우, 메모리로부터 판독될 수 있거나 메모리에 기록될 수 있는 최대 데이터량은 페이지(page)이다. 예를 들어, 페이지는 8 Kb의 데이터일 수 있다. 그러므로, 판독 또는 기록 명령은 종종 다수의 다이에 걸쳐 분산된다. 판독 동작을 설명하는 호스트 데이터 명령을 수신 시에, 제어기(112)(도 1) 펌웨어는 데이터 명령을 다이 판독 동작들로 분할할 수 있고, 이 다이 판독 동작들의 수는 명령 길이에 의존한다. 예를 들어, 8 Kb 페이지들에 있어서, 호스트로부터의 64 Kb 판독 명령은 다이로부터 8개의 판독들, 즉, 64 Kb 판독 명령에 대한 8 Kb 각각의 8개의 판독을 요구할 것이다.
블록(408)에서는, 호스트로부터 수신된 판독 명령의 전체 비용이 각각의 비휘발성 메모리 다이에 전송되는 각각의 동작에 대한 현재의 동작 비용에 기초하여 연산된다. 예를 들어, 다이로부터 데이터의 각각의 세그먼트(segment)를 검색하기 위해 요구되는 모든 판독 동작의 완료를 위한 최대의 시간이 계산된다. 64 Kb 판독 명령의 예로 계속하면, 호스트로부터 판독 명령을 이행하기 위해 판독될 필요가 있는 8개 다이의 각각에 대한 동작 비용은 다이 판독 동작의 이러한 집합의 완료를 위한 최대의 시간을 결정하기 위하여 비교되어, 판독 명령의 전체 동작 비용을 연산한다. 논의된 바와 같이, 각각의 판독 동작의 완료를 위한 시간은 각각의 다이가 현재 행하고 있는 것을 고려하고, 각각의 다이가 그 동작 수명 동안에 행한 것을 고려할 수도 있다.
예를 들어, 그리고 하나의 실시예에 따르면, 동작 감시기(202)(도 3)는 설명된 바와 같이 다이 카운터(302a0-302n2)(도 3)에서 동작 비용을 구축하고 관리하는 것을 담당하는데 반해, 제어기(112)(도 1) 펌웨어는 블록(408)에서와 같이, 전체 동작 비용을 연산하는 것을 담당하고 있다. 그러나, 기능성의 분포는 구현마다 변동될 수 있고, 설명된 분포로 제한되지 않는다. 예를 들어, 대안적인 실시예에서는, 전체 동작 비용이 동작 감시기(202)에 의해 연산될 수 있고 제어기(112) 펌웨어로 반환될 수 있다.
블록(410)에서는, 블록(408)에서 연산된 판독 명령의 전체 코스트에 기초하여, 호스트로부터 수신된 다른 판독 명령에 비해, 요청된 데이터를 어떤 순서로 호스트로 반환할 것인지가 결정된다. 논의된 바와 같이, 명령들이 호스트에 의해 송신되는 순서가 항상 최고의 SSD 성능을 위하여 데이터를 호스트로 응답하거나 반환해야 할 최고의 순서인 것은 아니다. 도 4의 방법은 다양한 판독 명령이 호스트로부터 수신되는 순서를 기본적으로 고려하지 않으면서 데이터를 호스트에 반환하기 위한 "최고" 또는 "최적"의 순서를 추정한다. 이와 같이, 가장 작은 동작 비용을 갖는, 즉, 완료를 위한 가장 짧은 시간을 갖는 다이 동작은 다이 동작이 완료를 위한 더 큰 동작 비용 및 시간을 가지기 전에 호스트로 반환될 수 있으므로, 반환이 큐잉되어 더 짧은 동작의 반환을 차단하는 더 긴 동작을 회피한다.
예를 들어, 그리고 하나의 실시예에 따르면, 제어기(112)(도 1) 펌웨어는 블록(410)에서와 같이 반환 순서를 결정하는 것을 담당하고 있다. 그러나, 기능성의 분포는 구현마다 변동될 수 있고 설명된 분포로 제한되지 않는다. 예를 들어, 대안적인 실시예에서는, 반환 순서가 동작 감시기(202)에 의해 연산될 수 있고 제어기(112) 펌웨어로 반환될 수 있다.
동작 비용 추정 프로세스가 어떻게 진행될 수 있는지를 요약하기 위하여, 실시예에 따르면, 호스트(104)(도 1)로부터 판독 명령을 수신 시에, 제어기(112)(도 1)는 판독 명령의 목표가 되는 (도 2의 다이(208a0-208n2)의) 각각의 비휘발성 메모리 다이의 동작 비용을 동작 감시기((도 2 및 도 3)에 문의한다. 효과적으로, 제어기(112)는 각각의 목표가 된 다이의 동작의 현재 상태를 고려하여, 각각의 목표가 된 다이의 판독을 완료하기 위한 시간량을 동작 감시기(202)에 문의한다. 그 다음으로, 제어기(112)는 모든 목표가 된 다이에 대한 동작 비용에 기초하여 판독 명령의 전체 비용을 연산한다. 판독 명령의 전체 비용으로부터, 제어기는 호스트로부터의 다른 판독 명령에 비해, 판독 명령에 응답하여 데이터를 반환하기 위한 높은 성능의 순서를 결정할 수 있다.
추정기 메커니즘의 자체-조절
플래시 메모리의 특성 및 성능은 시간이 지나면서 그리고 사용함에 따라 변화하고(예를 들어, 프로그램 시간, 소거 시간 등), 동작 비용 추정치들은 부분적으로 플래시의 특성에 기초하므로, 플래시가 비휘발성 메모리로 이용되는 실시예에 따르면, 초기 동작 비용 값은 드라이브의 수명에 걸쳐 조절될 수 있다. 이와 같이, 소거 비용 레지스터(310), 판독 비용 레지스터(312), 및 프로그램 비용 레지스터(314a-314n)(도 3)에서의 값은 사용과 함께 발생하는 완료 시간 변동에 기초하여, 즉, 플래시의 동작 이력에 기초하여 시간이 지남에 따라 조절될 수 있다.
실시예에 따르면, 동작 감시기(202)(도 2)는 플래시의 물리적 특성으로 인해 시간경과에 따른 동작 비용 변화를 식별하기 위하여 각각의 다이가 다양한 동작을 위해 이용되는 횟수를 추적한다. 이를 위하여, 동작 감시기(202)는 플래시가 열화함에 따라 동작 비용 레지스터 값을 조절하기 위하여, 채널 버스 제어부(316a-316n)(도 3)로부터 얻어질 수 있는, 플래시로부터의 실제적인 데이터를 이용할 수 있다. 이러한 정보는 각각의 플래시 메모리 부품과 연관된 정밀한 다이-의존 열화를 제공할 수 있고, 동작 감시기(202)의 메모리(308)(도 3)에 저장될 수 있다. 이러한 정보의 정밀함은 구현마다 변동될 수 있고, 이에 따라, "다이별(per-die)" 또는 심지어 "블록별(per-block)"로 수집 및 저장될 수 있다. 그러므로, 메모리(308)는 플래시 열화 데이터를 위해 구현된 정밀도에 기초하여 이에 대응하여 크기가 정해질 수 있다.
상기한 명세서에서는, 발명의 실시예는 구현마다 변동될 수 있는 다수의 특정한 세부사항을 참조하여 설명되었다. 따라서, 발명의 실체 및 출원인이 의도한 발명에 대한 유일하고 배타적인 척도는 임의의 추후의 보정을 포함하는 특정한 형태의 본 출원의 청구범위이다. 이러한 청구항에 포함된 용어에 대해 본 명세서에서 명시적으로 기재된 임의의 정의는 청구항에서 이용된 것과 같은 용어의 의미를 결정할 것이다. 이에 따라, 청구항에서 명시적으로 인용되지 않은 어떠한 제한, 구성요소, 성질, 특징, 장점 또는 속성도 이러한 청구항의 범위를 어떠한 방식으로든 제한하지 않아야 한다. 따라서, 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 한다.

Claims (15)

  1. 호스트로부터 고체 상태 드라이브(SSD: solid-state drive) 장치에 의해 수신된 판독 명령에 응답하여 상기 호스트로의 반환을 관리하기 위한 방법으로서,
    상기 호스트로부터 데이터 판독 명령을 수신하는 단계;
    상기 판독 명령에 대응하는 각각의 비휘발성 메모리 다이에 전송되는 각각의 동작의 완료를 위한 추정된 시간에 기초하여 상기 판독 명령의 완료를 위한 전체 추정된 시간을 연산하는 단계;
    상기 판독 명령의 완료를 위한 상기 전체 추정된 시간에 기초하여, 상기 호스트로부터 수신된 다른 데이터 판독 명령에 비해, 요청된 데이터를 상기 호스트로 어떤 순서로 반환하는지를 결정하는 단계; 및
    결정된 순서로 상기 요청된 데이터를 상기 호스트로 반환하는 단계를 포함하는, 방법.
  2. 호스트로부터 고체 상태 드라이브(SSD: solid-state drive) 장치에 의해 수신된 판독 명령들에 응답하여 상기 호스트로의 반환들을 관리하기 위한 방법으로서,
    상기 호스트로부터 데이터 판독 명령을 수신하는 단계;
    각각의 비휘발성 메모리 다이에 전송되는 각각의 동작에 대한 동작 비용(operation cost)를 발생하는 단계로서, 각각의 동작 비용은 주기적인 이벤트에 기초하여 시간이 지남에 따라 감소되는, 단계;
    상기 판독 명령에 대응하는 상기 각각의 비휘발성 메모리 다이에 전송되는 각각의 동작에 대한 현재의 동작 비용에 기초하여 상기 판독 명령의 전체 비용을 연산하는 단계;
    상기 판독 명령의 상기 전체 비용에 기초하여, 상기 호스트로부터 수신된 다른 데이터 판독 명령에 비해, 요청된 데이터를 상기 호스트로 어떤 순서로 반환하는지를 결정하는 단계; 및
    결정된 순서로 상기 요청된 데이터를 상기 호스트로 반환하는 단계를 포함하는, 방법.
  3. 제2항에 있어서,
    상기 동작 비용을 발생하는 단계는, (1) 목표 비휘발성 메모리 다이가 아이들(idle)인지 여부, (2) 목표 비휘발성 메모리 다이가 소거 동작으로 비지(busy)인지 여부, (3) 목표 비휘발성 메모리 다이가 페이지 프로그램 동작으로 비지인지 여부, 및 (4) 목표 비휘발성 메모리 다이가 판독 동작으로 비지인지 여부 중의 적어도 하나에 기초하여 동작 비용을 발생하는 단계를 포함하는, 방법.
  4. 제2항에 있어서,
    상기 동작 비용을 발생하는 단계는, 비휘발성 메모리 다이에 전송되는 대응하는 동작의 완료를 위한 시간을 추정하는 단계를 포함하는, 방법.
  5. 제2항에 있어서,
    상기 동작 비용을 발생하는 단계는, 비휘발성 메모리 다이 상에서의 동작의 물리적 위치에 기초하여 동작 비용을 발생하는 단계를 포함하는, 방법.
  6. 제2항에 있어서,
    상기 동작 비용을 발생하는 단계는, 비휘발성 메모리 다이의 동작 이력에 기초하여 동작 비용을 발생하는 단계를 포함하는, 방법.
  7. 제2항에 있어서,
    상기 요청된 데이터를 상기 호스트로 반환하는 단계는, 제1 동작 비용보다 적은 제2 동작 비용에 기초하여, 제1 판독 명령에 대응하는 제1 동작 비용을 갖는 제1 요청된 데이터 전에, 제2 판독 명령에 대응하는 제2 동작 비용을 갖는 제2 요청된 데이터를 상기 호스트로 반환하는 단계를 포함하는, 방법.
  8. 제7항에 있어서,
    상기 제1 판독 명령이 상기 호스트로부터 수신된 후에 상기 제2 판독 명령이 상기 호스트로부터 수신된, 방법.
  9. 제2항에 있어서,
    상기 동작 비용은 추정된 동작 비용이고,
    상기 동작 비용을 발생하는 단계는,
    상기 추정된 동작 비용과, 비휘발성 메모리 다이에 전송되는 대응하는 동작의 완료를 위한 시간 사이의 차이를 식별하는 단계; 및
    상기 차이에 기초하여 상기 추정된 동작 비용을 조절하는 단계를 포함하는, 방법.
  10. 비휘발성 메모리 다이와, 상기 비휘발성 메모리 다이 상에서의 동작을 관리하기 위한 제어기를 포함하는 고체 상태 드라이브(SSD)로서,
    상기 제어기로부터, 상기 제어기에 의해 호스트로부터 수신된 데이터 판독 명령의 동작 비용에 대한 요청을 수신하고,
    각각의 비휘발성 메모리 다이에 전송되는 각각의 동작의 완료를 위한 시간을 나타내는 동작 비용을 발생하는 것과, 상기 동작 비용을 대응하는 카운터에 저장하는 것을 포함하여, 각각의 비휘발성 메모리 다이와 각각 연관되는 카운터를 관리하고,
    주기적인 이벤트를 발생하는 타이머에 기초하여 각각의 동작 비용을 감소시키고,
    상기 제어기에 의해 수신된 상기 판독 명령에 대응하는 각각의 비휘발성 메모리 다이에 전송되는 각각의 동작에 대한 현재의 동작 비용을 상기 제어기로 반환하고, 상기 현재의 동작 비용은 상기 판독 명령에 대응하는 각각의 비휘발성 메모리 다이와 연관된 각각의 카운터의 현재의 값에 기초하도록 구성된 동작 감시기; 및
    상기 각각의 비휘발성 메모리 다이에 전송되는 각각의 동작에 대한 현재의 동작 비용에 기초하여 상기 판독 명령의 전체 비용을 연산하고,
    상기 판독 명령의 상기 전체 비용에 기초하여, 상기 호스트로부터 수신된 다른 데이터 판독 명령에 비해, 상기 요청된 데이터를 상기 호스트로 어떤 순서로 반환하는지를 결정하도록 구성된 상기 제어기를 포함하는, 고체 상태 드라이브(SSD).
  11. 제10항에 있어서,
    하나 이상의 채널 버스 제어부를 더 포함하고,
    상기 동작 감시기가 카운터를 관리하는 것은, 상기 비휘발성 메모리 다이와 연관된 채널 버스를 감시함으로써 비휘발성 메모리 다이에 전송되는 동작의 지속기간이 결정되는 상기 하나 이상의 채널 버스 제어부로부터의 정보에 기초하여, 각각의 동작에 대한 동작 비용을 발생하는 것을 포함하는, 고체 상태 드라이브(SSD).
  12. 제10항에 있어서,
    상기 비휘발성 메모리 다이 상에서의 소거 동작의 완료를 위한 시간에 대응하는 값을 관리하기 위한 하나 이상의 소거 비용 레지스터;
    상기 비휘발성 메모리 다이 상에서의 판독 동작의 완료를 위한 시간에 대응하는 값을 저장하기 위한 하나 이상의 판독 비용 레지스터;
    상기 비휘발성 메모리 다이 상에서의 기록 동작의 완료를 위한 시간에 대응하는 값을 저장하기 위한 하나 이상의 프로그램 비용 레지스터를 더 포함하고,
    각각의 동작에 대한 동작 비용을 발생하는 것은 상기 소거 비용 레지스터, 상기 판독 비용 레지스터, 및 상기 프로그램 비용 레지스터와 연관된 각각의 값들 중 하나 이상에 기초하고 있는, 고체 상태 드라이브(SSD).
  13. 제10항에 있어서,
    상기 동작 감시기가 카운터들을 관리하는 것은,
    카운터로부터의 동작 비용과, 대응하는 비휘발성 메모리 다이에 전송되는 대응하는 동작의 완료를 위한 실제 시간 사이의 차이를 식별하는 것, 및
    상기 차이에 기초하여 상기 카운터의 동작 비용을 조절하는 것을 포함하는, 고체 상태 드라이브(SSD).
  14. 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 시퀀스의 명령어를 저장하는 고체 상태 드라이브 제어기로서,
    호스트로부터 데이터 판독 명령을 수신하고;
    상기 판독 명령에 대응하는 각각의 비휘발성 메모리 다이에 전송되는 각각의 동작의 완료를 위한 추정된 시간에 기초하여 상기 판독 명령의 완료를 위한 전체 추정된 시간을 연산하고;
    상기 판독 명령의 완료를 위한 상기 전체 추정된 시간에 기초하여, 상기 호스트로부터 수신된 다른 데이터 판독 명령에 비해, 요청된 데이터를 상기 호스트로 어떤 순서로 반환하는지를 결정하고;
    결정된 순서로 상기 요청된 데이터를 상기 호스트로 반환하는 동작을 야기하는 하나 이상의 시퀀스의 명령어를 저장하는, 고체 상태 드라이브 제어기.
  15. 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 시퀀스의 명령어를 저장하는 고체 상태 드라이브 제어기로서,
    호스트로부터 데이터 판독 명령을 수신하고;
    각각의 비휘발성 메모리 다이에 전송되는 각각의 동작에 대한 동작 비용(operation cost)를 발생하고, 각각의 동작 비용은 주기적인 이벤트에 기초하여 시간이 지남에 따라 감소되고;
    상기 판독 명령에 대응하는 상기 각각의 비휘발성 메모리 다이에 대해 행해지는 각각의 동작에 대한 현재의 동작 비용에 기초하여 상기 판독 명령의 전체 비용을 연산하고;
    상기 판독 명령의 상기 전체 비용에 기초하여, 상기 호스트로부터 수신된 다른 데이터 판독 명령에 비해, 요청된 데이터를 상기 호스트로 어떤 순서로 반환하는지를 결정하고;
    결정된 순서로 상기 요청된 데이터를 상기 호스트로 반환하는 동작을 야기하는 하나 이상의 시퀀스의 명령어를 저장하는, 고체 상태 드라이브 제어기.
KR1020130149818A 2012-12-04 2013-12-04 플래시 판독 명령 완료의 시간 추정에 기초한 호스트 판독 명령 반환 재정렬 KR101543102B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/705,103 2012-12-04
US13/705,103 US9032177B2 (en) 2012-12-04 2012-12-04 Host read command return reordering based on time estimation of flash read command completion

Publications (2)

Publication Number Publication Date
KR20140071938A KR20140071938A (ko) 2014-06-12
KR101543102B1 true KR101543102B1 (ko) 2015-08-07

Family

ID=49979436

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130149818A KR101543102B1 (ko) 2012-12-04 2013-12-04 플래시 판독 명령 완료의 시간 추정에 기초한 호스트 판독 명령 반환 재정렬

Country Status (5)

Country Link
US (3) US9032177B2 (ko)
JP (1) JP5719013B2 (ko)
KR (1) KR101543102B1 (ko)
DE (1) DE102013020269A1 (ko)
GB (1) GB2509603B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230096289A (ko) 2021-12-23 2023-06-30 국민대학교산학협력단 저장장치의 입출력 응답시간 추적 장치 및 방법

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9508437B2 (en) * 2014-01-30 2016-11-29 Sandisk Technologies Llc Pattern breaking in multi-die write management
KR102317786B1 (ko) 2015-02-02 2021-10-26 삼성전자주식회사 스토리지 디바이스에서의 입출력 처리 방법 및 이를 적용하는 스토리지 디바이스 및 비휘발성 메모리 디바이스
KR102339779B1 (ko) 2015-04-06 2021-12-15 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법
US9477408B1 (en) 2015-04-14 2016-10-25 Samsung Electronics Co., Ltd. Memory systems having improved out-of-order execution of commands and methods for operating the same
CN106067321B (zh) * 2015-04-21 2020-09-15 爱思开海力士有限公司 适于存储器编程暂停-恢复的控制器
US9875053B2 (en) * 2015-06-05 2018-01-23 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
CN106933492B (zh) * 2015-12-30 2020-05-22 伊姆西Ip控股有限责任公司 有助于固态硬盘的磨损平衡的方法和装置
US10636065B2 (en) 2016-03-09 2020-04-28 Western Digital Technologies, Inc. Data storage device, method and system, and control of data storage device based on writing operations and lifetime
US10540274B2 (en) 2016-03-29 2020-01-21 Micron Technology, Inc. Memory devices including dynamic superblocks, and related methods and electronic systems
US10146444B2 (en) 2016-10-03 2018-12-04 Samsung Electronics Co., Ltd. Method for read latency bound in SSD storage systems
US10901892B2 (en) * 2017-05-18 2021-01-26 Western Digital Technologies, Inc. Locality grouping during garbage collection with flush of buffered write data upon completion of garbage collection operation
US10740228B2 (en) * 2017-05-18 2020-08-11 Sandisk Technologies Llc Locality grouping during garbage collection of a storage device
US10140027B1 (en) * 2017-05-26 2018-11-27 Seagate Technology Llc Data transfers with adaptively adjusted polling times
US10528268B2 (en) * 2017-09-12 2020-01-07 Toshiba Memory Corporation System and method for channel time management in solid state memory drives
KR102427323B1 (ko) * 2017-11-08 2022-08-01 삼성전자주식회사 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법
KR102626048B1 (ko) * 2018-03-21 2024-01-18 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
JP2019175292A (ja) 2018-03-29 2019-10-10 東芝メモリ株式会社 電子機器、コンピュータシステム、および制御方法
US11593262B1 (en) * 2018-04-25 2023-02-28 Seagate Technology Llc Garbage collection command scheduling
US11150836B2 (en) 2018-06-28 2021-10-19 Seagate Technology Llc Deterministic optimization via performance tracking in a data storage system
JP2020149588A (ja) * 2019-03-15 2020-09-17 キオクシア株式会社 メモリシステム及びメモリコントローラ
US11074011B2 (en) 2019-03-20 2021-07-27 Western Digital Technologies, Inc. Solid state drive latency estimation interface for host performance tuning
US10971215B1 (en) 2020-02-24 2021-04-06 Western Digital Technologies, Inc. Dynamically adjust data transfer speed for non-volatile memory die interfaces
US11645009B2 (en) 2021-03-03 2023-05-09 Western Digital Technologies, Inc. Data storage with improved read parallelism
US11531499B2 (en) * 2021-03-04 2022-12-20 Western Digital Technologies, Inc. Data storage that controls decode performance by changing program PLC
CN116882335B (zh) * 2023-09-06 2023-12-22 上海芯存天下电子科技有限公司 操作时间仿真获取方法、装置、电子设备及存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6013589A (en) * 1998-03-13 2000-01-11 The Procter & Gamble Company Absorbent materials for distributing aqueous liquids
US6513089B1 (en) * 2000-05-18 2003-01-28 International Business Machines Corporation Dual burst latency timers for overlapped read and write data transfers
US7146524B2 (en) * 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
EP2299375A3 (en) * 2002-11-14 2012-02-01 EMC Corporation Systems and methods for restriping files in a distributed file system
US7379974B2 (en) 2003-07-14 2008-05-27 International Business Machines Corporation Multipath data retrieval from redundant array
US20050041453A1 (en) 2003-08-22 2005-02-24 Brazis Paul W. Method and apparatus for reading and writing to solid-state memory
US7512762B2 (en) 2004-10-29 2009-03-31 International Business Machines Corporation System, method and storage medium for a memory subsystem with positional read data latency
US7493439B2 (en) * 2006-08-01 2009-02-17 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
US7802061B2 (en) 2006-12-21 2010-09-21 Intel Corporation Command-based control of NAND flash memory
US7937321B2 (en) * 2007-01-16 2011-05-03 Verizon Patent And Licensing Inc. Managed service for detection of anomalous transactions
US9021482B2 (en) 2007-05-04 2015-04-28 International Business Machines Corporation Reordering data responses using ordered indicia in a linked list
US8140739B2 (en) 2008-08-08 2012-03-20 Imation Corp. Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
US8504789B2 (en) 2009-06-29 2013-08-06 Mosaid Technologies Incorporated Bridging device having a frequency configurable clock domain
US8495332B2 (en) 2009-07-24 2013-07-23 Apple Inc. Controller for optimizing throughput of read operations
JP4929379B2 (ja) 2010-06-30 2012-05-09 株式会社東芝 半導体記憶装置及びデータ書き込み読み出し方法
US8467249B2 (en) 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8589655B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230096289A (ko) 2021-12-23 2023-06-30 국민대학교산학협력단 저장장치의 입출력 응답시간 추적 장치 및 방법
US11768532B2 (en) 2021-12-23 2023-09-26 Kookmin University Industry Academy Cooperation Foundation Tracking apparatus and method of I/O latency for storage devices

Also Published As

Publication number Publication date
JP5719013B2 (ja) 2015-05-13
JP2014110058A (ja) 2014-06-12
GB2509603A (en) 2014-07-09
US20150212735A1 (en) 2015-07-30
GB2509603B (en) 2015-05-20
GB201320971D0 (en) 2014-01-15
DE102013020269A1 (de) 2014-06-05
KR20140071938A (ko) 2014-06-12
US20160253095A1 (en) 2016-09-01
US9652156B2 (en) 2017-05-16
US9354814B2 (en) 2016-05-31
US20140156911A1 (en) 2014-06-05
US9032177B2 (en) 2015-05-12

Similar Documents

Publication Publication Date Title
KR101543102B1 (ko) 플래시 판독 명령 완료의 시간 추정에 기초한 호스트 판독 명령 반환 재정렬
US11880267B2 (en) Information processing device, external storage device, host device, relay device, control program, and control method of information processing device
US9923562B1 (en) Data storage device state detection on power loss
US9348520B2 (en) Lifetime extension of non-volatile semiconductor memory for data storage device
WO2016069194A1 (en) Method and system for throttling bandwidth based on temperature
KR20210111527A (ko) 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
KR20140113211A (ko) 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법
US9690696B1 (en) Lifetime extension of memory for data storage system
US11537315B2 (en) Apparatus and method for erasing data programmed in a non-volatile memory block in a memory system
US20200310896A1 (en) Apparatus and method for checking an operation status of a memory device in a memory system
TW201438019A (zh) 具有使用歷程記錄的主記憶體模組以及此主記憶體模組於電腦系統之應用
WO2014141545A1 (ja) ストレージ制御装置、及びストレージ制御システム

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
FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 4