KR20220033976A - 저장 디바이스들에 대한 강화된 선판독 능력 - Google Patents

저장 디바이스들에 대한 강화된 선판독 능력 Download PDF

Info

Publication number
KR20220033976A
KR20220033976A KR1020210082734A KR20210082734A KR20220033976A KR 20220033976 A KR20220033976 A KR 20220033976A KR 1020210082734 A KR1020210082734 A KR 1020210082734A KR 20210082734 A KR20210082734 A KR 20210082734A KR 20220033976 A KR20220033976 A KR 20220033976A
Authority
KR
South Korea
Prior art keywords
read
read request
request
next data
data storage
Prior art date
Application number
KR1020210082734A
Other languages
English (en)
Inventor
베니스티 샤이
나본 아리엘
엘리아쉬 토머
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/017,626 external-priority patent/US11449428B2/en
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20220033976A publication Critical patent/KR20220033976A/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering 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/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

데이터 저장의 맥락에서, 판독 요청 이전에 데이터를 프리-페치하기 위한 접근법은 판독 요청 및 다음 판독 요청을 수신하는 것, 및 다음 판독 요청에 대응하는 다음 데이터 저장 어드레스로 판독 요청에 대응하는 메타데이터를 업데이트하는 것을 수반한다. 나중에 판독 요청을 다시 수신하는 것에 응답하여, 다음 데이터 저장 어드레스는 판독 요청 메타데이터로부터 판독될 수 있고, 다음 데이터는 후속하는 판독 요청을 처리하기 전에 다음 데이터 저장 어드레스로부터 프리-페치될 수 있다. 더욱이, 다음 데이터는, 다음 데이터가 비휘발성 메모리의 판독보다는 버퍼로부터 호스트로 반환될 수 있는 것에 응답하여, 다른 인커밍 다음 판독 요청을 예상하고 판독 큐(queue) 유휴 시간 동안 프리-페치될 수 있고 캐시 버퍼에 저장될 수 있다.

Description

저장 디바이스들에 대한 강화된 선판독 능력 {ENHANCED READ-AHEAD CAPABILITY FOR STORAGE DEVICES}
관련 출원의 상호 참조
본 출원은 2018년 6월 19일자로 출원된 미국 특허 출원 제 16/012,311호의 일부 계속 출원이며, 이에 대한 우선권의 이익을 주장하며, 이들 모두의 전체 내용은 본 명세서에 완전히 기재된 바와 같이 모든 목적을 위해 참고로 포함된다.
기술분야
본 개시의 양태들은 저장 디바이스들의 분야에 관한 것으로, 더욱 구체적으로는, 판독 동작들의 속도를 향상시키기 위한 강화된 선판독(read-ahead) 능력에 관한 것이다.
중앙 처리 유닛들, 그래픽 프로세서들, 및 다른 처리 요소들의 속도가 증가함에 따라, 저장 디바이스들은 컴퓨팅 시스템들의 전체 성능에서 병목(bottleneck)이 되었다. 하드 디스크 드라이브(HDD)들에 대해 고체 상태 드라이브(SSD)들이 동작하는 속도는 이러한 문제를 다소 완화시켰다. 그것과는 관계없이, 주어진 SSD는 여전히 호스트 상의 장애물일 수 있고, SSD들의 성능은 서로 크게 다를 수 있다.
저장 디바이스의 상대적 성능은 주어진 디바이스의 용량 및 그의 판독 및 기입 속도와 같은 다수의 인자들에 기초하여 평가될 수 있다. 대부분의 기입 속도들이 시간 경과에 따라 증가되었지만, 판독 시간은 저장 디바이스들의 성능에 있어서 중요한 제한 인자였다. 순차적인 판독 기법들은 토글 레이트들을 증가시키지만 대신 전력 소모가 증가되면서 속도들을 소정의 정도로 증가시킨 것이다.
랜덤 판독은 속도를 증가시키고자 하는 목적을 위한 특정한 과제를 제시한다. 매체의 인접한 위치들로부터 데이터의 큰 연속적인 블록들이 판독될 수 있게 하는 순차적인 판독들과는 대조적으로, 랜덤 판독들은 매체 상의 다양한 비인접 위치들에 걸쳐 산란된 데이터를 탐색한다. 따라서, 랜덤 판독들은 판독 프로세스에 대한 레이턴시를 도입하며, 이는 연관된 호스트의 저장 디바이스의 전체 성능에 영향을 미친다.
저장 디바이스들이 데이터를 판독하는 속도를 증가시키기 위해 선판독 기법이 본 명세서에 개시된다. 주어진 기입 동작에 대한 데이터는 다음 기입의 위치가 데이터와 함께 저장되도록 스토리지에 기입될 수 있다. 나중에, 데이터가 스토리지로부터 판독되고 있을 때, 데이터와 함께 기입된 다음 기입의 위치로부터 다른 데이터가 프리-페치(pre-fetch)될 수 있다. 다음 위치가 후속 판독 동작의 타겟인 경우, 다른 데이터는 그 데이터가 저장된 위치로부터 이미 판독되었을 직후에 호스트로 반환될 수 있다. 이에 의해, 이러한 프로세스는 후속 판독 동작을 가속화한다.
데이터 저장의 맥락에서, 판독 요청 이전에 데이터를 프리-페치하기 위한 접근법은 판독 요청 및 다음 판독 요청을 수신하는 것, 및 다음 판독 요청에 대응하는 다음 데이터 저장 어드레스로 판독 요청에 대응하는 메타데이터를 업데이트하는 것을 수반한다. 나중에 판독 요청을 다시 수신하는 것에 응답하여, 다음 데이터 저장 어드레스는 판독 요청 메타데이터로부터 판독될 수 있고, 다음 데이터는 후속하는 판독 요청을 처리하기 전에 다음 데이터 저장 어드레스로부터 프리-페치될 수 있다. 더욱이, 다음 데이터는, 다음 데이터가 비휘발성 메모리의 판독보다는 버퍼로부터 호스트로 반환될 수 있는 것에 응답하여, 다른 인커밍 다음 판독 요청을 예상하고 판독 큐(queue) 유휴 시간 동안 프리-페치될 수 있고 캐시 버퍼에 저장될 수 있다.
본 개시의 다수의 양태들은 하기 도면들을 참조하여 더 잘 이해될 수 있다. 도면들 내의 구성요소들은 반드시 축척대로 도시된 것은 아니며, 대신에 본 개시의 원리를 명확하게 예시하는데 중점을 둔다. 더욱이, 도면들에서, 동일한 도면 부호는 여러 도면에 걸쳐 대응하는 부분들을 나타낸다. 이들 도면들과 관련하여 몇몇 실시예들이 설명되지만, 본 개시는 본 명세서에 개시된 실시예들에 제한되지 않는다. 그와 반대로, 모든 대안들, 수정들, 및 등가물들을 포함시키고자 한다.
도 1은 일 구현예에서의 컴퓨팅 시스템을 예시한다.
도 2는 일 구현예에서의 기입 프로세스를 예시한다.
도 3은 일 구현예에서의 판독 프로세스를 예시한다.
도 4는 일 구현예에서의 동작 시나리오를 예시한다.
도 5는 일 구현예에서의 컴퓨팅 시스템을 예시한다.
도 6은 일 구현예에서의 기입 프로세스를 예시한다.
도 7은 일 구현예에서의 판독 프로세스를 예시한다.
도 8은 일 구현예에서의 동작 아키텍처를 예시한다.
도 9a 및 도 9b는 일 구현예에서의 동작 아키텍처를 예시한다.
도 10은 일 구현예에서의 전력 제어 프로세스를 예시한다.
도 11은 일 구현예에서의 단순화된 컴퓨팅 시스템 아키텍처를 예시한다.
도 12는 일 구현예에서의 판독 시간을 감소시키기 위한 접근법을 예시한다.
도 13은 일 구현예에서의 데이터를 프리-페치하는 방법을 예시한다.
도 14는 일 구현예에서의 데이터를 판독 큐에 프리-페치하는 방법을 예시한다.
향상된 선판독 능력을 갖는 개선된 저장 디바이스가 본 명세서에 개시된다. 다양한 구현예들에서, 주어진 판독 동작 후에 다음에 어떤 어드레스가 판독될 것인지 예측함으로써 판독 시간들이 감소된다(그리고 속도가 증가된다). 그 어드레스의 데이터는 그 어드레스를 타겟으로 하는 후속 판독 요청에 앞서 프리-페치될 수 있다.
예측된 어드레스는 기입 커맨드들이 큐에 나타날 때 기입 커맨드들에 관하여 저장된 정보로부터 도출될 수 있다. 이러한 어드레스 추적은 다음 판독 커맨드에 대한 예측자로서 각각의 어드레스의 판독 동안 사용될 수 있다. 일 예에서, 예측된 어드레스는 선행 판독 동작의 페이로드로부터 획득된다. 즉, 이전 기입 동작 동안, 다음 기입의 어드레스는 주어진 기입의 페이로드 내의 데이터와 함께 스토리지에 기입될 수 있다. 이후에, 그 페이로드가 판독 요청의 대상인 경우, 그 페이로드는 다음 기입 어드레스가 되는 것의 어드레스를 획득하기 위해 파싱될 수 있다. 그 후, 다음 기입 어드레스는 다음/예측된 판독 어드레스로서 활용될 수 있다.
이와 같이, 예측된 어드레스에서의 데이터는, 잠재적으로 동일한 어드레스로 향할 수 있는 임의의 후속 판독들에 앞서 프리-페치될 수 있다. 데이터는 관련 판독을 예상하여 버퍼링될 수 있다. 다음 판독 요청이 예측된 어드레스로 향하는 경우, 버퍼링된 데이터는 판독 동작을 대기할 필요 없이 즉시 반환될 수 있다. 다음 판독이 예측된 어드레스로 향하지 않는 경우, 데이터는 폐기될 수 있다.
다음 기입 커맨드의 어드레스를 획득하는 것은, 매체 상에 데이터를 프로그래밍하는 데 걸리는 시간의 양으로 인해 주어진 기입을 수행하는 동안 큐에 다른 기입 커맨드들을 가질 확률이 높기 때문에 가능하다. 반대로, 큐에서 다른 판독 요청들을 가질 확률은 판독 대(versus) 기입의 상대적 속도로 인해 낮다. 따라서, 이러한 다음 판독을 예측하는 것은, 판독 큐가 비어 있는 판독 동안일 가능성이 있기 때문에 유용하다.
일부 구현예들에서, 전력 소모는, 모든 예측들이 성공적이지 않을 것이기 때문에, 강화된 선판독의 결과로서 증가할 수 있다. 중복 오버헤드 및 여분의 전력 소모를 감소시키기 위한 대책은 전술된 제안된 예측들의 성공률을 추적하는 것이다. 예측 판독은 성공률이 소정 임계치를 초과할 때 조건적으로 인에이블되고, 성공률이 임계치 미만으로 떨어질 때 디스에이블될 수 있다.
다양한 구현예들에서, 저장 디바이스는, 예를 들어, 고체 상태 드라이브(solid-state drive, SSD), 하드 디스크 드라이브(HDD), 하이브리드(hybrid) SSD -HDD, 또는 임의의 다른 유형의 저장 디바이스일 수 있다. 디바이스는 NAND 기반 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM), 자기 데이터 스토리지, 광학 데이터 스토리지, 및/또는 임의의 다른 유형의 저장 기술과 같은, 데이터가 매체에 기입되고 매체로부터 판독되는 방법을 감독하는 제어기를 포함한다.
제어기는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있고, 디바이스의 메모리 컴포넌트들을 호스트로 브리지(bridge)한다. 하드웨어 구현에서, 제어기는 저장 매체에 결합된 제어 회로를 포함한다. 제어 회로는 호스트로부터 기입 요청들을 수신하는 수신 회로를 포함한다. 각각의 기입 요청은 기입 요청의 타겟인 데이터뿐만 아니라 데이터에 대한 타겟 어드레스를 포함한다. 타겟 어드레스는 논리 블록 어드레스(LBA), 물리 블록 어드레스(PBA), 또는 데이터를 저장할 곳을 설명하는 다른 이러한 식별자일 수 있다.
제어 회로는 또한 이전 기입 요청 이후에 다음 기입 요청에 대한 다음 기입 어드레스를 식별하는 위치 회로를 포함한다. 제어 회로 내의 기입 회로는 기입 요청에 대한 데이터 및 다음 기입 어드레스의 표시를 기입 요청에 대한 타겟 어드레스에 기입한다. 다시 말하면, 기입 요청의 대상인 데이터는 다음 기입 요청의 어드레스와 스토리지에 기입된다. 본 명세서에 사용되는 바와 같이, "표시(indication)"는 매체 상에 후속적으로 저장될 데이터의 세트의 위치를 식별하거나 또는 확인하는데 사용될 수 있는 임의의 데이터 값, 비트 값, 신호, 플래그, 조건, 오프셋, 코드, 또는 수를 지칭한다.
간단한 예에서, 기입되는 16 kb 페이지 중 4 바이트가 다음 기입의 어드레스를 위해 사용될 수 있다(0.025% 오버헤드). 다음 기입의 어드레스는 주어진 페이지의 헤더 섹션에 기입될 수 있지만, 페이지의 사용자 데이터 섹션에 어드레스를 저장하는 것이 또한 가능하다. 어드레스의 예는 PBA들, LBA들 또는 양자 모두뿐만 아니라 다음 기입의 위치를 나타내는 임의의 다른 정보를 포함한다. 일부 구현예들에서, 다음 기입 어드레스는 다이, 페이지, 및 블록 정보를 포함하는 다음 데이터가 저장되는 위치의 절대 어드레스이다. 다른 구현예들에서, 다음 기입 어드레스의 표시는 다음 어드레스를 해결하는데 사용될 수 있는 현재 LBA 또는 PBA로부터의 오프셋일 수 있다. 또 다른 예들에서, 다음 어드레스는 어드레스의 속기(short-hand) 버전에 기입될 수 있다. 다음 기입의 어드레스는 인코딩된 형태, 인코딩되지 않은 형태, 또는 임의의 다른 방식으로 저장될 수 있다.
기입 요청들에 후속하여, 호스트는 초기 기입 요청에서와 동일한 어드레스를 타겟으로 하는 판독 요청을 전달(communicate)할 수 있다. 제어 회로 내의 판독 회로는 타겟 어드레스로부터 데이터 및 다음 기입 어드레스를 판독한다. 또한, 판독 회로는 다음 판독 요청에 앞서 다음 데이터를 획득하기 위해 다음 기입 어드레스에 의해 표시된 위치에서 선판독한다. 전술한 바와 같이, 선판독 어드레스로서 기능하는 다음 기입 어드레스 LBA, PBA, 오프셋, 플래그 등에 의해 표시될 수 있다. 예를 들어, LBA의 경우에, 제어 회로는 다음 데이터를 페치하기 위해 LBA를 PBA로 변환한다. 다른 예에서, 다음 기입 어드레스가 PBA로서 저장되었다면 어떠한 변환도 필요하지 않다. 오프셋, 신호, 플래그 등의 경우에, 제어 회로는 현재 PBA로부터의 선판독 PBA 및 오프셋, 신호, 플래그 등과 관련된 값을 계산할 수 있다. 다음 판독 요청이 호스트에 의해 전달되면, 다음 데이터는 호스트로 즉시 반환될 준비가 된다. 일부 경우들에서, 초기 판독 요청과 다음 판독 요청 양측은 랜덤 판독 요청들로 간주되고, 따라서 판독 동작들은 랜덤 판독들로 간주된다. 일부 구현예들에서, 제어 회로는 다음 기입 어드레스의 표시를 저장하고 다음 데이터를 저장하기 위한 버퍼 회로를 더 포함한다. 버퍼링된 다음 기입 어드레스의 표시는 후속 판독 요청과 관련하여 타겟 어드레스와 비교될 수 있는 값으로서 저장될 수 있다. 예를 들어, 버퍼링된 값은 LBA일 수 있으며, 이는 후속 판독 요청에서 LBA와 비교될 수 있다. 특정 실시예들에서, 후속 판독 요청들이 PBA들을 활용하면, 버퍼링된 값은 LBA 대신에 PBA일 수 있다. 일부 시나리오들에서, 다수의 선판독 동작들과 연관된 어드레스들 및 데이터는 버퍼에 동시에 저장될 수 있다. 버퍼는 데이터의 하나 이상의 페이지들을 수용할 수 있도록 크기가 정해질 수 있다. 하나의 시나리오에서, 버퍼는 96 kB 이하의 RAM, 또는 대략 4 페이지의 데이터의 크기일 수 있다. 그러나, 페이지 크기와 마찬가지로, RAM 크기가 증가할 수 있다는 것이 이해될 수 있다.
그 후, 제어 회로의 비교기 부분은 다음 판독 요청에 특정된 다음 타겟 어드레스가 다음 기입 어드레스와 매칭된다는 것을 결정할 수 있다. 이것은 버퍼 내의 다음 기입 어드레스의 값을 다음 판독 요청에서의 어드레스의 값과 비교함으로써 달성될 수 있다. 예를 들어, 다음 판독 요청에서의 LBA가 버퍼 내의 LBA와 비교될 수 있다. 다른 예에서, 다음 판독 요청에서의 PBA가 버퍼 내의 PBA와 비교될 수 있다. 일부 대안적인 실시예들에서, 버퍼에 저장된 값은 매체 상에 저장되거나 선판독 동작 동안 계산됨에 따라 다음 기입 어드레스의 실제 값과 오프셋만큼 상이할 수 있다. 이러한 상황에서, 제어 회로는 실제 값을 다음 판독 요청에서의 값과 비교하기 전에 실제 값을 계산할 것이다. 제어 회로의 비교기 또는 다른 요소(들)는 값들이 서로 매칭되는 상황에서 다음 판독 요청에 응답하여 다음 데이터를 호스트에 반환할 수 있다. 다음 판독 요청에 주어진 다음 타겟 어드레스가 다음 기입 어드레스와 매칭되지 않으면, 비교기는 다음 데이터를 폐기할 수 있다.
제어기는 일부 구현예들에서 기입 큐 및 판독 큐를 포함할 수 있다. 판독 큐는 호스트로부터 판독 요청들을 수신하고, 기입 큐는 기입 요청들을 수신한다. 판독 요청들은, 비휘발성 저장 매체들에서 데이터를 판독할 위치를 표시할 수 있어서, 제어기가 주어진 판독 요청에 의해 표시된 위치로부터 데이터를 페치할 수 있게 한다.
그렇게 하면, 제어기는 위치로부터 판독된 페이로드로부터 다음 판독 요청의 예측된 어드레스를 파싱한다. 그 후, 제어기는 다음 판독 요청을 실제로 수신하기 앞서, 다음 판독 요청의 예측된 위치로부터 추가의 데이터를 프리-페치할 수 있다. 다음 판독 요청의 실제 위치가 예측된 위치와 상이한 경우, 제어기는 단순히 다음 데이터를 폐기하고, 실제 위치로부터 계속 판독할 수 있다.
기입 큐에 대해, 큐에서의 기입 요청들 각각은 주어진 기입 요청에 대해 데이터를 기입할 곳을 표시한다. 제어기의 예측기 부분은 이전 기입 요청 이후에 다음 기입 요청에 의해 표시된 위치에 기초하여 다음 판독 요청에 대한 예측된 위치를 식별한다. 제어기의 기입 부분은 이전 기입 요청에 대해 표시된 위치에, 이전 기입 요청에 대한 데이터 및 예측된 위치의 표시를 기입할 수 있다. 제어기의 버퍼 부분은 다음 판독 요청에 대한 예측된 위치의 표시 및 또한 다음 데이터를 저장할 수 있다.
전술한 바와 같이, 비교기 부분은 다음 판독 요청에 의해 표시된 위치가 다음 판독 요청에 대한 예측된 위치와 매칭된다는 것을 결정할 수 있다. 제어기의 비교기 또는 다른 부분(들)은 다음 데이터를 호스트로 반환할 수 있다. 다음 데이터는, 다음 판독 요청에 의해 표시된 위치가 다음 판독 요청에 대한 예측된 위치와 매칭되지 않는 경우에 폐기될 수 있다.
이러한 강화된 선판독 기술은 상기 논의 및 도 1 내지 도 10의 하기의 논의로부터 명백할 수 있는 바와 같이, 다양한 기술적 이점들을 제공한다. 예를 들어, 판독 요청에 앞서 데이터를 프리-페치하는 것은 판독 속도를 증가시킨다. 이는 그들의 데이터가 매체 상에 분산되어 있기 때문에 완료되는데 더 긴 시간량을 취하는 랜덤 판독의 경우에 특히 유익할 수 있다. 다른 예에서, 호스트 상의 요청 애플리케이션은 제어기가 알 필요가 없다. 오히려, 제어기는 요청 애플리케이션의 어떠한 지식 없이 강화된 선판독을 채용할 수 있다.
이제 도면들을 참조하면, 도 1은 강화된 선판독 기술의 구현예에서의 컴퓨팅 시스템(100)을 예시한다. 컴퓨팅 시스템(100)은 호스트(101) 및 저장 디바이스(110)를 포함한다. 호스트(101)는 저장 디바이스(110)에 데이터를 기입하고 그로부터 데이터를 판독할 수 있는 임의의 호스트 서브시스템을 나타낸다. 저장 디바이스(110)는 데이터를 판독하고 기입할 목적으로 호스트(101)에 내부적으로 또는 외부적으로 접속할 수 있는 임의의 디바이스를 나타낸다. 저장 디바이스(110)의 예들은 고체 상태 드라이브(SSD)들, 썸 드라이브(thumb drive)들, 하드 디스크 드라이브(HDD)들, 하이브리드 SSD/HDD 드라이브들, 및 이들의 임의의 변형 또는 조합을 포함하지만, 이에 제한되지 않는. 컴퓨팅 시스템(100)의 예들은 개인용 컴퓨터들, 랩톱 컴퓨터들, 서버 컴퓨터들, 태블릿 컴퓨터들, 모바일 폰들, 네트워크 드라이브들, 소비자 전자 장치들(예를 들어, 카메라들, 텔레비전들, 및 미디어 플레이어들), 게이밍 디바이스들, 내구성 제품 디바이스들, 및 하나 이상의 저장 디바이스들을 활용하는 임의의 다른 시스템, 변형, 또는 이들의 조합을 포함하지만, 이에 제한되지 않는다.
호스트(101)는 접속(103)을 통해 저장 디바이스(110)와 통신한다. 접속(103)은 호스트(101)와 저장 디바이스(110)를 결합하고 저장 통신이 호스트(101)와 저장 디바이스(110) 사이에서 흐를 수 있는 하나 이상의 물리적 상호접속을 나타낸다. 호스트(101)는, 저장 디바이스(110)와 통신할 때 직렬 ATA(SATA), 섬유 채널, 파이어와이어(Firewire), SAS(Serial Attached Small Computer Systems Interface), ATA/IDE(Advanced Technology Attachment/Integrated Drive Electronics), 범용 직렬 버스(USB), 및 PCIe(Peripheral Component Interconnect Express)와 같은 (그러나 이에 제한되지 않는) 하나 이상의 인터페이스 프로토콜들을 활용할 수 있다.
저장 디바이스(110)는 제어기(111) 및 저장 매체(115)를 포함한다. 제어기(111)는 데이터를 저장 매체(115)에 기입하고 저장 매체(115)로부터 데이터를 판독하는 것에 대해 감시 역할을 수행하는 하나 이상의 처리 요소들을 나타낸다. 제어기(111)는, 하드웨어, 그러나 또한 제어기(111)에 의해 실행 가능한 펌웨어, 소프트웨어, 또는 다른 형태의 프로그램 명령어들로 구현될 수 있는, 도 2 및 도 3에서 더욱 상세히 설명되는 기입 프로세스(200) 및 판독 프로세스(300)를 각각 실행시킬 수 있다. 저장 매체(115)는 데이터가 기입되고 판독될 수 있는 임의의 비휘발성 매체이다. 예들에는 NAND 플래시 매체, DRAM 매체, 상변화 매체, 자기 매체, 및 광학 매체가 포함되지만 이에 제한되지 않는다. 접속(113)은 제어기(111)와 저장 매체(115)를 결합하는 하나 이상의 물리적 상호접속을 나타낸다.
동작 시, 호스트(101)는 저장 매체(115) 상에서 수행되도록 판독 및 기입 요청들을 제어기(111)에 전달하고, 그 중 기입 요청들(121) 및 판독 요청(125)이 대표적이다. 제어기(111)는 기입 요청들(121)을 처리할 때 기입 프로세스(200)를 실행하고, 판독 요청(125)을 처리할 때 판독 프로세스(300)를 실행한다. 하기는 기입 프로세스(200) 및 판독 프로세스(300)의 상세한 논의이며, 도 2 및 도 3에서의 단계들을 각각 삽입구적으로 참조한다.
도 2를 참조하면, 제어기(111)는 호스트(101)로부터 주어진 기입 요청을 수신한다(단계 201). 기입 요청은 기입될 데이터 및 저장 매체(115) 상에 데이터를 기입할 곳을 나타내는 위치를 포함한다. 위치는 물리 블록 어드레스(PBA), 논리 블록 어드레스(LBA), 또는 임의의 다른 적합한 표시에 의해 주어질 수 있다. 일부 경우들에서, 위치는 기입 요청 자체에 주어지지 않을 수 있지만, 오히려 기입 요청을 수신할 때 호스트(101)에 의해 별도로 제공되거나 제어기(111)에 의해 결정될 수 있다.
다음으로, 제어기(111)는 호스트(101)에 의해 제출된 다음 기입 요청의 다음 위치를 식별한다(단계 203). 이것은 예를 들어, 기입 큐에서 다음 기입 요청과 연관된 어드레스를 판독함으로써 달성될 수 있다. 그 후, 제어기(111)는 초기 기입 요청에 대해 특정된 위치에 기입될 페이로드를 생성한다(단계 205). 페이로드는 적어도 제1 기입 요청에 대한 데이터 및 다음 기입 요청에 대한 다음 위치를 포함할 수 있다. 다음 위치는 PBA일 수 있지만, 대안으로 LBA일 수 있다.
이러한 예에서 단지 하나의 다음 위치만이 페이로드 내에 포함되지만, 다수의 위치가 단일 페이로드에 저장될 수 있다는 것이 이해되어야 한다. 예를 들어, 다음 어드레스 및 그 이후의 다음 어드레스 모두는 주어진 페이로드에 저장될 수 있다. 또한, 본 명세서에 사용되는 바와 같이 용어 "다음(next)"은 큐 내의 바로 다음 어드레스를 지칭하지만, 변형이 가능하다. 예를 들어, 바로 다음 어드레스는 스킵될 수 있고, 그 이후의 다음 어드레스가 대신 사용되고 페이로드 내에 포함될 수 있다.
페이로드를 생성한 경우, 제어기(111)는 기입 요청에 대해 특정된 초기 위치에 페이로드를 기입한다(단계 207). 이러한 방식으로, 기입 요청에 대한 데이터는 큐에서 다음 기입 요청에 대한 위치의 아이덴티티와 함께 저장된다. 기입 프로세스(200)는 요청에 대한 데이터와 함께 각각의 선행 요청을 따르도록 다음 기입 요청의 어드레스를 기입하는 후속 기입 요청에 대해 계속될 수 있다. 후속 위치 정보는 그 논의가 후속하는 판독 프로세스(300)에 대한 예측된 위치로서 역할을 할 수 있다.
도 3의 판독 프로세스(300)를 참조하면, 제어기(111)는 호스트(101)로부터 주어진 판독 요청을 수신한다(단계 301). 판독 요청은 제어기(111)가 데이터를 판독하는 어드레스를 포함한다. 위치는 PBA 또는 LBA로서 특정될 수 있으며, 이 경우에 제어기(111)는 LBA를 PBA로 변환한다.
제어기(111)는 판독 요청에 의해 주어진 어드레스에서 저장 매체(115)로부터 페이로드를 페치하고(단계 303), 그것의 데이터 및 기입 프로세스(200)의 맥락에서 데이터와 함께 저장되었던 다음 위치로 페이로드를 파싱한다(단계 305). 데이터는 호스트(101)로 반환될 수 있고(단계 306), 다음 위치는 다음 데이터를 프리-페치하기 위해 사용된다(단계 307).
프리-페치 단계가 항상 발생할 필요는 없다는 것을 알 수 있다. 오히려, 제어기(111)는, 페이로드가 널 값(null value)을 포함하거나 그렇지 않으면 다음 위치를 포함하지 않으면, 데이터를 프리-페치하려고 시도하는 것을 억제할 수 있다. 다른 선택적인 예에서, 제어기(111)는 판독 요청이 랜덤 판독 요청이 아닌 경우, 파싱 및 프리-페칭 단계들을 억제할 수 있다. 즉, 단계 305 및 단계 307로 진행하기 전에, 제어기(111)는 판독 요청이 랜덤 판독 요청인지를 먼저 결정할 수 있다. 제어기(111)는 판독 요청이 랜덤 판독이라는 것을 자체적으로 확인할 수 있거나, 호스트(101)에 의해 그 사실을 인지할 수 있다.
다음 위치의 어드레스 및 프리-페치된 데이터는, 후속 판독 요청이 수신될 때 이들이 이용 가능하도록 버퍼링될 수 있다. 일부 구현예들에서, 페이로드는 하나 보다 많은 다음 어드레스를 포함할 수 있으며, 이 경우에, 제어기는 다수의 위치로부터 데이터를 프리-페치하고 버퍼링할 수 있다. 그 후, 다수의 "다음 어드레스들"이 또한 버퍼링될 것이다.
제어기(111)는 후속 판독 요청에서의 어드레스 및 버퍼 내의 다음 어드레스가 동일한지를 결정하기 위해 후속 판독 요청에서의 어드레스를 버퍼 내의 다음 어드레스(또는 버퍼에 존재하는 경우 다수의 다음 어드레스)와 비교한다. 후속 판독 요청에서의 어드레스 및 버퍼 내의 다음 어드레스가 동일하면, 제어기(111)는 프리-페치된 데이터를 페치하는 것보다는, 후속 판독 요청에 응답해 호스트(101)로 반환할 수 있다.
도 1에 예시된 예시적인 시나리오를 다시 참조하면, 호스트(101)는 기입 요청들(121)을 저장 디바이스(110)에 제출한다. 기입 요청들(121)은 데이터(d1) 및 어드레스(L1)를 갖는 제1 요청을 포함하고; 제2 요청은 데이터(d2) 및 위치(L2)를 포함하며; n 번째 요청은 데이터(dn) 및 위치(Ln)를 포함한다.
기입 프로세스(200)를 제1 기입 요청에 적용하면, 제어기(111)가 저장 매체(115)에 기입될 페이로드들(123)을 생성한다. 제어기(111)는 제1 요청 내의 데이터 및 제2 요청 내의 어드레스로부터 페이로드(d1_ L2)를 생성한다. 페이로드는 저장 매체(115)에 기입된다. 마찬가지로, 제어기(111)는 제2 요청에 대한 페이로드(d2_ L3)를 생성한다. N번째 요청에 대해 생성된 페이로드는 n번째 요청으로부터의 데이터 및 큐에서의 다음 기입 요청의 위치, 또는 dn_Ln+를 포함한다.
호스트(101)는 또한 판독 요청(125)이 나타내는 판독 요청을 제출한다. 판독 요청(125)은 다른 유형의 판독들이 가능하지만, 예를 들어, 랜덤 판독 요청을 나타낼 수 있는 바와 같은 위치(L1)를 식별한다.
판독 프로세스(300)를 적용하면, 제어기(111)는 호스트(101)로부터의 판독 요청들에 응답하여 페이로드들(127)을 페치(및 프리-페치)한다. 예를 들어, 제어기(111)는 상기 논의된 제1 기입 요청에 대한 페이로드인 위치(L1)로부터의 페이로드 또는 d1_ L2를 페치한다.
제어기(111)는 다음 위치(L2)를 획득하기 위해 페이로드를 파싱한다. 페이로드(d1)의 데이터 부분은 호스트(101)로 반환될 수 있다. 제어기(111)는 또한 L2로 향한 다른 판독 요청을 예상하여, 위치(L2)에서의 페이로드를 프리-페치한다. 그 페이로드는 또한 그의 데이터 부분(d2) 및 위치 부분(L3)으로 파싱된다.
L2로 향하는 다른 판독 요청이 수신된다고 가정하면, 제어기(111)는 데이터를 페치할 필요 없이 데이터(d2)로 응답을 즉시 반환할 수 있다. 그러나, L2로 향하는 판독 요청들이 수신되지 않은 경우, 데이터(d2)는 일정 기간 후에 폐기되거나 오버라이팅될 수 있다. 제어기는 제한의 제약에 도달할 때까지 위치(L3)에서, 그리고 그 후 위치(Ln+)에서 페이로드를 선택적으로 프리-페치할 수 있다.
도 4는 본 명세서에 개시된 강화된 선판독 기술의 다양한 타이밍 양태들을 보여주는 구현예에서의 동작 시나리오(400)를 예시한다. 동작 시나리오(400)는 호스트(401), 기입 큐(403), 판독 큐(404), 제어기(405), 및 매체(407)를 포함한다. 별도로 도시되지만, 기입 큐(404) 및 판독 큐(404)는 제어기(405)에 대해 외부적으로 또는 내부적으로 구현될 수 있다. 다른 요소들, 접속들 등이 명료함을 위해 수반될 수 있지만 도시되지는 않는다는 것이 이해될 수 있다.
동작 중에, 호스트(401)는 w1(d1, L1) 및 w2(d2, L2)로 표기된 기입 큐(403)에 2개의 기입 요청을 전달한다. 호스트(401)와 큐들 사이의 직접 전달로서 도시되지만, 요청들은 제어기(405)를 포함하는, 기입 큐(403)에 도달하기 전에 다른 물리적 또는 논리적 요소들을 통해 라우팅될 수 있다는 것이 이해될 수 있다.
제어기(405)는 기입 요청들이 큐 내에 수신되는 일반 순서로 기입 요청들을 구현한다. 따라서, 제어기(405)는 먼저 w1을 구현하고, 이어서 w2를 구현한다. 제1 기입 요청에 관하여, 제어기(405)는 다음 기입 요청의 어드레스 - 즉, w2를 식별하기 위해 큐를 조사한다. L2가 공지되어 있는 경우, 제어기(405)는 d1 및 L2를 포함하는 w1에 대한 페이로드를 생성한다. 그 후, 제어기(405)는 제1 기입 요청(L1)에 의해 특정된 위치에서 매체(407)에 d1 및 L2를 기입한다.
큐의 일반적인 순서에 따라, 제어기(405)는 다음으로 제2 기입 요청을 처리한다. 예시적인 목적을 위해, 제3 기입 요청이 기입 큐(403)에서 w2 뒤에 있고 L3으로 어드레싱되는 것으로 가정된다. 따라서, 제어기(405)는 d2 및 L3을 포함하는 w2에 대한 페이로드를 생성한다. 그 후, 페이로드는 매체(407)에서 L2에 기입된다.
나중에, 기입들이 완료된 후에, 호스트(401)는 w1에 대해 이전에 기입된 데이터를 획득하기 위해 판독 요청들을 제출할 수 있다. 판독 큐(404)는 데이터를 획득할 어드레스를 나타내는 판독 요청으로 채워진다. 제어기(405)는 데이터(d1) 및 다음 위치(L2)를 포함하는, 지시된 어드레스에 저장된 페이로드를 페치한다.
제어기(405)는 페이로드를 그의 데이터 및 위치 컴포넌트들로 파싱하고 데이터 부분을 호스트(401)로 반환한다. 위치 부분에 의해, 제어기(405)는 위치(L2)에서 페이로드를 프리-페치한다. 페이로드는 데이터(d2) 및 다른 "다음" 위치(L3)를 포함한다. 제어기(405)는, 데이터와 함께 저장되었던 위치와는 대조적으로, 데이터가 검색되었던 위치(L2)와 데이터를 버퍼링한다. 제어기(405)는 L3에 저장된 페이로드에 대한 다른 프리-페치를 선택적으로 수행할 수 있다.
호스트(401)는 후속 판독 요청을 전달한다. 제어기(405)는 그에 응답하여 후속 판독 요청에서의 위치를 버퍼에 저장된 위치와 비교한다. 이러한 예에서, 양측의 어드레스들은 L2를 반영한다. 이와 같이, 제어기(405)는 매체(407)로부터 데이터를 페치해야 하기보다는, 버퍼링된 데이터(d2)로 판독 요청에 응답할 수 있다.
도 5는 멀티-스레드형 환경의 맥락에서 적용되는 바와 같은 강화된 선판독 기술의 다른 구현예에서의 컴퓨팅 시스템(500)을 도시한다. 컴퓨팅 시스템(500)은 호스트(501) 및 저장 디바이스(510)를 포함한다. 호스트(501)는 저장 디바이스(510)에 데이터를 기입하고 그로부터 데이터를 판독할 수 있는 임의의 멀티-스레드형 서브시스템을 나타낸다. 저장 디바이스(510)는 데이터를 판독하고 기입할 목적으로 호스트(501)에 내부적으로 또는 외부적으로 접속할 수 있는 임의의 디바이스를 나타낸다.
스레드(502) 및 스레드(504)는 각각 멀티-스레드형 환경에서 이용 가능할 수 있는 다양한 스레드들을 나타낸다. 각각의 스레드는 호스트(501)에서 구동되는 상이한 애플리케이션, 유틸리티, 또는 컴포넌트에 런-시간에 동적으로 할당될 수 있다. 스레드들은 요청들(522)(스레드(502)와 연관됨) 및 요청들(524)(스레드(504)와 연관됨)에 의해 표현되는 판독 요청들을 저장 디바이스(510)에 제출한다.
호스트(501)는 접속(503)을 통해 저장 디바이스(510)와 통신한다. 접속(503)은 호스트(501)와 저장 디바이스(510)를 통신 가능하게 결합하는 하나 이상의 물리적 상호접속들을 나타낸다. 호스트(501)는, 저장 디바이스(510)와 통신할 때 직렬 ATA(SATA), 섬유 채널, 파이어와이어(Firewire), SAS(Serial Attached Small Computer Systems Interface), ATA/IDE(Advanced Technology Attachment/Integrated Drive Electronics), 범용 직렬 버스(USB), 및 PCIe(Peripheral Component Interconnect Express)와 같은 (그러나 이에 제한되지 않는) 하나 이상의 인터페이스 프로토콜들을 활용할 수 있다.
저장 디바이스(510)는 제어기(511) 및 매체(515)를 포함한다. 제어기(511)는 매체(515)에 관하여 판독 및 기입 프로세서들을 제어하는 하나 이상의 처리 요소들을 나타낸다. 제어기(511)는 도 6 및 도 7 각각에서 더욱 상세히 설명되는, 기입 프로세서(600) 및 판독 프로세서(700)를 실행할 수 있다. 매체(515)는 데이터가 기입되고 판독될 수 있는 임의의 비휘발성 매체이다. 예들에는 NAND 플래시 매체, DRAM 매체, 상변화 매체, 자기 매체, 및 광학 매체가 포함되지만 이에 제한되지 않는다. 접속(513)은 제어기(511)와 매체(515)를 결합하는 하나 이상의 물리적 상호접속을 나타낸다.
동작 시, 호스트(501)는 판독 및 기입 요청들을 제어기(511)에 전달한다. 제어기(511)는 기입 요청들을 처리할 때 기입 프로세스(600)를 실행하고, 판독 요청들을 처리할 때 판독 프로세스(700)를 실행한다. 하기는 기입 프로세스(600) 및 판독 프로세스(600)의 상세한 논의이며, 도 6 및 도 7의 단계들을 각각 삽입구적으로 참조한다.
도 6을 참조하면, 제어기(511)는 호스트(501)로부터 다중의 기입 요청(2)을 수신한다(단계 501). 각각의 기입 요청은 기입될 데이터 및 매체(515) 상에 데이터를 기입할 곳을 나타내는 위치를 포함한다. 위치는 물리 블록 어드레스(PBA), 논리 블록 어드레스(LBA), 또는 임의의 다른 적합한 어드레스에 의해 주어질 수 있다. 일부 경우들에서, 위치는 기입 요청 자체에 주어지지 않을 수 있지만, 오히려 기입 요청을 수신할 때 호스트(501)에 의해 별도로 제공되거나 제어기(511)에 의해 결정될 수 있다.
임의의 주어진 기입 요청에 대해, 제어기(511)는 임의의 주어진 기입 요청 이후의 다음 요청과 연관된 스레드를 식별한다(단계 603). 스레드는 다음 기입 요청에서 식별될 수 있거나 일부 다른 방식으로 결정될 수 있다. 제어기(511)는 인스턴트 요청과 연관된 스레드를 다음 요청과 연관된 스레드와 비교하여 이들이 동일한지를 결정한다(단계 605).
스레드들이 동일한 경우, 제어기(511)는 인스턴트 요청에 대한 데이터 및 다음 기입 요청의 다음 어드레스로 구성된 페이로드를 생성한다(단계 607). 그 후, 페이로드는 표시된 어드레스에 기입된다(단계 609). 그러나, 스레드들이 동일하지 않은 경우, 제어기(511)는 단순히 데이터를 표시된 어드레스에 기입하고(단계 606), 이에 의해 페이로드를 생성하는 단계를 피함으로써 자원을 보존할 수 있다.
도 7을 참조하면, 제어기(511)는 타겟 어드레스를 식별하는 판독 요청을 수신한다(단계 701). 이에 응답하여, 제어기(511)는 임의의 정보가 이전 판독 요청에 대해 버퍼링되었는지 여부를 결정하기 위해 선판독 플래그를 체크한다(단계 703). 플래그가 인에이블되는 경우, 제어기(511)는 버퍼 내에 저장된 어드레스에 대하여 요청에서의 타겟 어드레스를 평가한다(단계 705). 이 어드레스들이 동일한 경우, 제어기는 이전 판독 요청을 처리하는 맥락에서 프리-페치된 버퍼로부터 데이터를 판독할 수 있다(단계 706).
어드레스들이 동일하지 않은 경우, 제어기(511)는 판독 요청에서 특정된 어드레스에서 페이로드를 페치하는 것으로 진행한다(단계 707). 제어기(511)는, 적어도 데이터, 및 대상 데이터 이후에 기입될 다음 데이터에 속하는 어드레스를 포함하는 컴포넌트 부분들로 페이로드를 파싱한다(단계 709).
이러한 데이터를 이용하여, 제어기(511)는 데이터를 호스트(501)로 판독할 수 있다(단계 710). 제어기(511)는 또한, 다음 어드레스가 널(null)인지 또는 다음 어드레스가 스토리지에 기입되지 않았음을 나타내는 어떤 다른 값인지를 체크한다(단계 711). 이것은 예를 들어, 주어진 기입 요청을 따르는 다음 기입 요청이 동일한 스레드로부터 유래하지 않은 경우일 수 있다(도 6과 관련하여 상기 단계 605 참조).
다음 어드레스 값이 널인 경우, 제어기(511)는 플래그를 디스에이블로 설정하여(단계 712), 후속 판독 요청을 수신할 때, 어드레스들을 비교하는 단계가 생략될 수 있다. 다음 어드레스가 널이 아닌 경우, 제어기(511)가 플래그 값을 인에이블로 설정하여(또는 유지시켜), 후속 판독 요청에서의 타겟 어드레스들이 비교될 수 있다(단계 713).
플래그를 설정하면, 제어기(511)는 대상 페이로드로부터 파싱된 다음 어드레스의 위치에 저장된 페이로드를 프리-페치한다(단계 715). 제어기(511)는 다음 데이터에 대응하는 어드레스와 함께, 버퍼에 프리-페치된 페이로드로부터의 다음 데이터를 저장한다(단계 717). 그 다음 어드레스는, 판독 프로세스(700)가 단계(705)로 복귀할 때 후속 판독 요청에 포함된 후속 타겟 어드레스와 비교될 수 있다.
도 8은 강화된 선판독 기술의 기입측의 구현 및 연관된 예시적인 시나리오에서의 동작 아키텍처(800)를 예시한다. 도 8과 관련하여, 도 9a 및 도 9b는 연관된 예시적인 시나리오뿐만 아니라 상기 강화된 선판독 기술의 판독측의 구현에서의 동작 아키텍처(900)를 예시한다. 2개의 아키텍처들은 SSD, 하이브리드 HDD/SSD 등과 같은 적합한 저장 디바이스와 관련하여 (임의의 여분의 요소들 없이) 조합될 수 있다는 것이 이해될 수 있다.
도 8을 참조하면, 동작 아키텍처(800)는 기입 큐(810), 매체(810), 및 위치 모듈(801), 수신 모듈(803), 및 기입 모듈(805)에 의해 표현되는 다양한 동작 모듈들을 포함한다. 위치 모듈(801), 수신 모듈(803), 및 기입 모듈은 하드웨어, 펌웨어, 또는 다른 소프트웨어뿐만 아니라 이들의 임의의 변형 또는 조합으로 구현될 수 있다. 기입 큐(810)는 매체(830)로부터 외부적으로 구현될 수 있지만, 내부적으로 구현될 수도 있다. 어느 경우든, 기입 큐(810)는 위치 모듈(801), 수신 모듈(803), 및 기입 모듈(805) 중 하나 이상에 액세스 가능하다. 동작 아키텍처(800)는 시스템 버스, 인터페이스들, 및 상호접속들 등과 같은 명료함을 위해 생략되는 다른 요소들을 포함할 수 있다는 것이 이해될 수 있다.
동작 시에, 기입 요청들은 호스트(미도시)로부터 기입 큐(810)에 수신되고 큐 내의 순서 또는 장소를 점유한다. 기입 요청들은 장소(811)에서의 요청(w1); 장소(813)에서의 요청(w2); 장소(815)에서의 요청(w3), 및 장소(817)에서의 요청(wn)에 의해 표현된다. 그에 따라서, 기입 요청들은 그 순서: w1, w2, w3, wn 등으로 처리된다.
수신 모듈(803)은 기입 요청들이 실행될 기입 큐(810)로부터 디스패치됨에 따라 기입 요청들을 수신한다. 일례로서, 수신 모듈(803)은 요청(w1)을 수신하고 이를 기입 모듈(805)에 전달한다. 요청(w1)은 데이터(d1) 및 데이터를 기입할 위치 식별자(L1)를 포함한다.
위치 결정 모듈(801)은, 이러한 경우에 w2인 대상 기입 요청 이후에 큐에서의 다음 기입 요청의 위치를 식별하기 위해 기입 큐(810)를 조사한다. w2의 위치는 L2이고, 따라서 위치 모듈(801)은 L2를 기입 모듈(805)에 전달한다. 기입 모듈(805)은 수신 모듈(803)로부터의 정보 및 위치 모듈로부터의 정보 양측을 수신하고, L1에 기입될 페이로드를 생성한다. 이러한 예에서, 페이로드(831)는 d1과 L2의 조합이다.
유사한 동작이 큐 내의 다른 기입 요청들에 대해 수행된다. 페이로드(833)는 w2와 연관되어 생성되고, 데이터(d2) 및 위치(L3)를 포함한다. 페이로드(835)는 w3과 연관되어 생성되고, 데이터(d3) 및 위치(L4)를 포함한다. 최종으로, 페이로드(837)는 wn과 연관되어 생성되고, 데이터(dn) 및 위치(Ln+)를 포함한다. 이러한 방식으로, 페이로드들은 판독 프로세스 동안 검사되고, 적절한 경우 프리-페치되어, 판독 프로세스를 가속할 수 있다.
도 9a를 참조하면, 동작 아키텍처(900)는 판독 큐(950), 매체(910), 및 비교 모듈(941), 판독 모듈(943), 및 버퍼(947)에 의해 표현되는 다양한 동작 모듈들을 포함한다. 판독 모듈(943)은 파싱 모듈(945)을 포함할 수 있지만, 파싱 모듈은 판독 모듈(943)에 대해 외부적으로 구현될 수 있다. 비교 모듈(941), 판독 모듈(943), 버퍼(947), 및 파싱 모듈(945)은 하드웨어, 펌웨어, 또는 다른 소프트웨어뿐만 아니라 이들의 임의의 변형 또는 조합으로 구현될 수 있다. 판독 큐(910)는 매체(930)로부터 외부적으로 구현될 수 있지만, 내부적으로 구현될 수도 있다. 어느 경우든, 판독 큐(910)는 비교 모듈(941), 판독 모듈(943), 및 버퍼(947) 중 하나 이상에 액세스 가능하다. 동작 아키텍처(900)는 시스템 버스, 인터페이스들, 및 상호접속들 등과 같은 명료함을 위해 생략되는 다른 요소들을 포함할 수 있다는 것이 이해될 수 있다.
동작 시, 판독 요청들은 호스트로부터 판독 큐(950)에 수신된다. 판독 요청은 도 9a에서 r1에 의해 표현되고, 도 9b에서 r2 및 r3에 의해 표현된다. 요청들은 각각 장소(951), 장소(953), 및 장소(955)에 의해 표현되는, 큐 내의 순서 또는 장소를 갖는다. 순차적인 판독 요청들이 랜덤 판독 요청들 사이에서 산재될 수 있지만, 순차적 판독 요청들과는 대조적으로 판독 요청들은 랜덤 판독 요청들인 것으로 예시를 위해 가정된다.
판독 요청들은 큐로부터 취해지고, 비교 모듈(941)에 전달된다. 비교 모듈(941)은 주어진 판독 요청에서의 어드레스를 (만약 있다면) 버퍼(947)에서 버퍼링된 어드레스와 비교하여, 대상 데이터가 페치될 필요가 있거나 이미 프리-페치되었는지를 결정한다. 이러한 예에서, 판독 요청(r1)은 위치(L1)와 관련된다. L1은 버퍼(947) 내의 Lx와 비교된다. 그들이 매칭되지 않기 때문에, 비교 모듈(941)은 어드레스를 판독 모듈(943)로 전달한다.
판독 모듈(943)은 위치(L1)로부터 페이로드(931)를 페치하는 것을 담당한다. 파싱 모듈(945)은 페이로드를 그의 컴포넌트 부분들(d1 및 L2)로 파싱한다. 판독 모듈(943)은 d1을 호스트로 반환할 수 있고, L2로부터 페이로드(933)를 프리-페치한다. 페이로드(933)는 데이터(d2) 및 위치(L3)를 포함한다. 데이터(d2)는 위치(L2)와 관련하여 저장되도록 버퍼(947)에 전달된다.
도 9b는 도 9a에서 시작되는 예시적인 시나리오의 연속을 예시한다. 도 9b에서, 판독 요청(r2)은 비교 모듈(941)에 의해 수신되고 큐로부터 취해진다. 여기서, 비교 모듈(941)은 r2 내의 타겟 어드레스가 버퍼(947) 내의 저장된 어드레스와 동일하다고 결정한다. 그에 따라, 비교 모듈(941)은 버퍼(942)로부터 호스트로 데이터(d2)를 판독하도록 판독 모듈(943)에 지시한다. 판독 모듈(943)은 이 단계에서 생략될 수 있다.
위치(L2)에서의 페이로드가 L3의 다음 어드레스를 참조하기 때문에, 판독 모듈은 L3에서 페이로드(935)를 선택적으로 프리-페치할 수 있다. 그렇게 함에 있어서, 파싱 모듈은 데이터(d3)를 획득하기 위해 페이로드(935)를 파싱할 것이다. 데이터(d3) 및 위치(L3)는 버퍼(947)에 저장되어 하나 이상의 후속 판독 요청들에 대해 비교될 것이다.
도 10은 본 명세서에 개시된 강화된 선판독 기술이 다양한 동작 조건들에 기초하여 동적으로 인에이블되고 디스에이블되는 구현예에서의 전력 제어 프로세스(1000)를 예시한다. 고체 상태 드라이브 또는 다른 적합한 저장 디바이스 내의 제어기는 하드웨어, 펌웨어, 또는 다른 소프트웨어로 구현될 수 있는 전력 제어 프로세스(1000)를 채용할 수 있다.
동작 시, 주어진 제어기는 강화된 판독 프로세스의 맥락에서 이루어진 선판독 시도들에 대한 히트 레이트를 추적한다(단계 1001). 히트 레이트는 프리-페치된 데이터가 후속 판독 요청에 의해 실제로 요청되는 레이트에 관련될 수 있다. 예를 들어, 제1 위치로 향한 초기 판독 요청은 제2 위치를 식별하는 페이로드를 발생시킬 수 있다. 그 후, 제2 위치에서의 데이터는 제2 위치를 타겟팅할 수 있는(또는 타겟팅하지 않을 수 있는) 임의의 후속 판독 요청에 앞서 프리-페치될 것이다. 다음 판독 요청이 제2 위치로 향하는 경우, 프리-페치는 히트로 간주될 것이고, 반면에 다음 판독 요청이 상이한 위치로 향하는 경우, 프리-페치는 미스(miss)로 간주될 것이다.
제어기는 프리-페치된 데이터가 후속 판독 요청의 대상이 되는 횟수를 카운트함으로써 프리-페치 동작들의 성공률을 추적할 수 있다. 제어기는 또한 히트 레이트가 주어진 임계치 미만으로 떨어지는지 여부를 분석할 수 있다(단계 1003).
히트 레이트가 임계치 이상으로 유지되는 경우, 제어기는 선판독 프로세스가 인에이블된 상태로 계속해서 동작할 수 있다. 히트 레이트가 임계치 미만으로 떨어지는 경우, 제어기는 선판독 프로세스를 디스에이블시킨다(단계 1005).
선판독 프로세스를 재인에이블시키기 위해, 제어기는 주기적으로 하나 이상의 다른 조건들을 평가한다(단계 1006). 예를 들어, 선판독은 일정 기간 동안 디스에이블될 수 있고 만료시 자동으로 재인에이블된다. 다른 예에서, 선판독은 배터리 레벨 또는 다른 전력 조건이 충족될 때까지 디스에이블된 상태로 유지될 수 있다. 그 때까지, 제어기는 선판독 프로세스가 디스에이블된 상태로 동작한다.
선판독 프로세스를 디스에이블하는 것은, 높은 비율의 미싱된(missed) 선판독 시도들 면에서 전력, 처리 사이클, 또는 다른 자원들을 보존할 수 있다. 조건들의 변화 시에 프로세스를 재인에이블시키는 것은 디바이스가 강화된 선판독의 이점을 회복할 수 있게 한다.
예시적인 동작 컨텍스트의 물리적 설명: 데이터 저장 시스템
데이터를 판독하고 기입할 목적으로 호스트(1150)에 접속할 수 있는 고체 상태 드라이들(SSD)들 및/또는 하드 디스크 드라이브(HDD)들 및/또는 하이브리드 SSD-HDD 드라이브들 또는 임의의 다른 유형의 저장 디바이스 또는 이들의 변형 또는 조합과 같은 다중의 데이터 저장 디바이스(DSD)들이 공통 인클로저에 수용될 수 있는 고용량 디지털 데이터 저장 시스템들에 대한 상업적 요구가 있다. 데이터 저장 시스템은 종종 DSD들의 로우(row)들이 장착되는 다수의 선반들을 수용하는 대형 인클로저를 포함한다.
랜덤 판독 성능이 데이터 저장 디바이스의 성능 제한 인자이고 판독 프로세스에 레이턴시를 도입함으로써 디바이스의 전체 성능에 영향을 미칠 수 있음을 상기한다. 따라서, 다음에 어느 어드레스가 판독될 것을 예측하는 임의의 수단은 시간을 절약할 수 있으며, 이는 전체 디바이스 레이턴시의 감소를 초래할 수 있다. 따라서, 어느 데이터가 다음에 제어기로부터 요청될지를 예측하고 "선판독"(또는 "프리-페치")을 개시하는 방식은 랜덤 판독 성능을 증가시키고 디바이스 레이턴시를 감소시킬 수 있다.
도 11은 실시예에 따른 단순화된 컴퓨팅 시스템 아키텍처를 예시하는 블록도이다. 예시적인 컴퓨팅 시스템 아키텍처는 다수의 데이터 저장 디바이스(DSD)들((1104a)(DSD1), 1104b(DSD2), 및 1104n(DSDn)(일괄적으로, 1104a 내지 1104n))를 포함하는 데이터 저장 시스템(1100)을 포함하며, 여기서 n은 구현마다 다를 수 있는 DSD들의 임의의 수를 나타낸다. 각각의 DSD(1104a 내지 1104n)는 대응하는 통신 또는 인터페이스 프로토콜(1115)에 따라 각각의 통신 인터페이스(1114)를 통해 시스템 제어기(1102)의 일부 감시 제어와 통신하고 그 감시 제어 하에 있다. 각각의 DSD(1104a 내지 1104n)는 데이터가 대응하는 NVM(1106)에 어떻게 기입되고 그로부터 어떻게 판독되는지를 감독하는 각각의 DSD 메모리 제어기(1108)에 의해 제어된 대응하는 비휘발성 메모리(NVM)(1106)(예를 들어, 통상적으로, SSD들의 경우에는 NAND 플래시 메모리 및 HDD들의 경우에는 스피닝 자기 디스크 매체의 형태)를 포함한다.
데이터 저장 시스템(1100)의 시스템 제어기(1102)는 적어도 메모리(1110), 프로세서(1112), 및 판독 큐(1113)를 포함한다. 판독 큐(1113)는 호스트(1150)로부터의 판독 요청들을 수신하고 그리고/또는 이에 의해 채워지고, 여기서, 판독 요청들은 (예를 들어, 논리 블록 어드레스 또는 "LBA" 또는 물리 블록 어드레스 또는 "PBA"를 통해) 요청된 데이터를 획득하거나 판독할 NVM(1106)에서의 위치를 표시할 수 있고, 이에 의해, 대응하는 DSD 제어기(1108)가 주어진 판독 요청에 의해 표시된 적절한 NVM(1106) 메모리 위치로부터 데이터를 페치할 수 있게 한다. 내부적으로 그리고 개별적으로 도시되지만, 판독 큐(1113)는 시스템 제어기(1102)에 대해 외부적으로 또는 내부적으로 구현될 수 있거나, 메모리(1110) 내에서 구현될 수 있다. 다른 요소들, 접속들 등이 시스템 제어기(1102)와 관련될 수 있지만, 명확함을 위해 본 명세서에 도시되지는 않는다는 것이 이해될 수 있다.
시스템 제어기(1102)에 의해 또는 DSD 메모리 제어기(1108)에 의해 수행되고 있거나 수행 가능한 것으로 본 명세서에 기술되는 처리, 기능들, 절차들, 동작들, 방법 단계들 등은, 하나 이상의 메모리 유닛들에 저장되고, 하나 이상의 프로세서들에 의해 실행될 때 이러한 성능을 야기하는 명령어들의 하나 이상의 시퀀스들의 실행에 의한 조항(enactment)을 포함한다. 시스템 제어기(1102) 및 DSD 제어기(1108)는 소프트웨어, 하드웨어, 및 펌웨어의 임의의 형태 및/또는 조합으로 구현될 수 있다. 예를 들어, 시스템 제어기(1102)는 본 명세서의 다른 곳에 기술된 바와 같이 선판독 능력을 가능하게 하는 (비제한적인 예에 대해, 펌웨어와 같은) 이러한 명령어들을 저장하기 위한 적어도 하나의 메모리 유닛(예를 들어, 메모리(1110)) 및 이러한 명령어들을 실행하기 위한 적어도 하나의 프로세서(예를 들어, 프로세서(1112))를 포함하는 응용 주문형 집적 회로(ASIC)를 포함할 수 있다.
데이터 저장 시스템(1100)은 실행 가능한 코드가 실행되는 하드웨어 머신(비제한적인 예들에 대해, 컴퓨터, 하드웨어 서버 등)에서, 또는 하나 이상의 프로세서들(비제한적인 예들에 대해, 저장 서버, 파일 서버, 데이터베이스 서버, 애플리케이션 서버, 미디어 서버 등과 같은 소프트웨어 서버)에 의해 실행 가능한 소프트웨어 명령어들로서 구현될 수 있는 호스트(1150)와 통신 가능하게 결합될 수 있다. 호스트(1150)는 일반적으로 데이터 저장 시스템(1100)의 클라이언트를 나타내고, 데이터 저장 시스템(1100)에 판독 및 기입 요청들(입/출력 또는 "IO")을 만드는 능력을 갖는다. 시스템 제어기(1102)는 또한 "호스트"로 지칭될 수 있는데, 그 이유는 이 용어가 데이터 저장 디바이스 또는 DSD들(1104a 내지 1104n)과 같은 디바이스들의 어레이에 대해 IO 호출들을 만드는 임의의 디바이스와 관련하여 종종 일반적으로 사용되기 때문이다. 호스트(1150)는, 데이터 저장 시스템(1100)과 통신할 때 직렬 ATA(SATA), 섬유 채널, 파이어와이어(Firewire), SAS(Serial Attached Small Computer Systems Interface), ATA/IDE(Advanced Technology Attachment/Integrated Drive Electronics), 범용 직렬 버스(USB), PCIe(Peripheral Component Interconnect Express) 등과 같은 (그러나 이에 제한되지 않는) 하나 이상의 인터페이스 프로토콜들을 활용할 수 있다.
이전 판독 동작들에 기초하여 메타데이터 힌트들을 사용한 판독 예측
분석에 따르면, 랜덤 판독 로그(log)들은 상당한 양의 반복 패턴을 나타낸다. 일 실시예에 따르면, "선판독"에 대한 하나의 접근법은 현재 판독 어드레스의 메타데이터에서 다음 판독 커맨드 어드레스를 저장하는 것을 수반한다. 이러한 메타데이터 업데이트는, 일 실시예에 따라, 메모리 위치를 판독하고 새로운 값을 그 위치에 원자적 작업으로서 동시에 기입하는 것 모두를 제공하는 종래의 "판독-수정-기입" 동작을 통해 수행될 수 있다. 선판독하기 위한 이러한 접근법은, 도달하는 각각의 판독 커맨드에 대해, 이전 판독 커맨드의 메타데이터를 현재 판독 커맨드의 위치(및 크기)에 대한 표시(예를 들어, "힌트")로 업데이트하는 것을 일반적으로 수반할 수 있다. 그 후, 이러한 정보는 향후 랜덤 판독 커맨드들의 프리-페치를 실행하기 위해 향후에, 즉, 동일한 판독 커맨드를 수신할 때 사용될 수 있다. 따라서, 서비스 품질(QoS) 파라미터가 상당히 개선될 수 있다. 즉, 커맨드 실행 레이턴시의 맥락에서(예를 들어, 완료 포스팅을 통한 커맨드 도달로부터), 선판독 예측 히트 레이트가 높은 경우, 커맨드 실행의 레이턴시는 시간 상 앞선 매체로부터의 판독으로 인해 감소된다. 따라서, 커맨드 실행 레이턴시의 형태에서와 같은 QoS는, 예를 들어, 호스트가 한 번에 디바이스에 단지 몇 개(예를 들어, 최대 8까지)의 두드러진 커맨드들만을 송신하는 낮은 큐 깊이 시나리오들에서 특히 주목할 만한 파라미터이다.
도 12는 일 실시예에 따른 판독 시간을 감소시키는 접근법을 예시하는 블록도이다. 예를 들어, 이러한 프로세스는 멀티-애플리케이션 및/또는 멀티-호스트 메모리 시스템 환경에서 구현될 수 있다. 이러한 접근법 또는 동작은 2 개의 프로세스들: (i) 랜덤 판독 동작들 아래에 놓인 패턴들을 찾거나 식별하는 것, 프로세스들 사이를 구별하는 것, 및 (ii) 데이터/메타데이터를 예측 및 업데이트하는 것을 포함하도록 구현될 수 있다.
도 12는 다수의 호스트 판독 요청들 또는 커맨드들이 처리를 대기하면서 배치되거나 일시적으로 저장된 판독 큐(1113)를 도시한다. 예를 들어, 일련의 수신된 판독 요청들("판독 n", "판독 n+1" 내지 "판독 n+x")이 판독 큐(1113)에 도시되고, 여기서, n은 처리를 위한 다음의(즉, 큐의 상단에서의) 판독 요청을 나타내고, x는 임의의 주어진 시간에 판독 큐(1113)에 유지되고 있는 판독 요청들의 임의의 수를 나타낸다. 일 실시예에 따르면, 현재 판독 요청("판독 n")을 반복하는 것(프로세스(1202)로 라벨링됨)은, 요청("판독 n")이 유래되는 (예를 들어, 도 11의 호스트(1150) 상에서 실행되는) 애플리케이션을 식별하는 애플리케이션 식별자("ID")에 기초하여, 판독 큐(1113)로부터 처리된 판독 요청들의 집합으로부터, 블록(1203)에서 판독 패턴들을 분류하는 것을 수반한다. 예를 들어, 제어기(1102)(도 11)는 활성인 현재 애플리케이션 ID들의 테이블을 유지할 수 있고, 주어진 애플리케이션 ID와 연관된 인커밍 판독 요청에 응답하여, 제어기(1102)는 그 애플리케이션 ID와 연관된 다음 판독 요청("판독 n+1")에 대해 판독 큐(1113)를 모니터링한다. 따라서, 블록(1204)에서, 각각의 애플리케이션 ID에 대해, 대응하는 판독 패턴이 결정되거나 식별된다.
블록(1204)에서 식별된 판독 요청들로부터, (예를 들어, 판독 요청들 및 기입 요청들이 시스템 성능 능력/메트릭의 맥락에서 개별적으로 종종 고려됨에 따라) 일 실시예에 따른 임의의 기입 요청들, 커맨드들, 또는 패턴(들)을 제외하고, 블록(1205)에서, 다음 판독 요청이 예측된다("판독 n+1"의 예측). 그로부터, 블록(1205)의 다음 판독 요청 예측에 기초하여, 블록(1206)에서, "판독 n+1"에 대응하는 다음 저장 어드레스를 포함하는, "판독 n" 판독 요청에 대응하는 메타데이터(1207)에 대한 업데이트가 NVM(1106)에 푸시되거나 저장된다. 즉, "판독 n" 요청에 대응하는 NVM(1106)에서의 메타데이터(1207)는 다음 판독 요청, 즉, "판독 n+1" 요청으로부터 획득된 다음 데이터 저장 어드레스로 업데이트된다. 논의한 바와 같이 그리고 일 실시예에 따라, 호스트 기입 커맨드에 응답하기 보다는 판독 큐(1113)로부터 "판독 n+1" 요청을 처리하는 것에 응답하는 것과 같이, 블록(1206)에서, "판독-수정-기입" 동작이 "판독 n" 메타데이터 업데이트를 NVM(1106)에 푸시하기 위해 활용된다. 따라서, "여분의" 기입 동작들을 추가하는 동안, 결과적인 이점들이 향후의 판독 성능에 대해 나타난다. 더욱이 그리고 일 실시예에 따르면, "판독 n" 요청에 대응하는 메타데이터(1207)에서 업데이트된 다음 데이터 저장 어드레스는 물리 어드레스(예를 들어, PBA)보다는 논리 어드레스(예를 들어, LBA)이어서, 가비지 컬렉션(garbage collection) 동안 NVM(1106)에서 메타데이터(1207)를 업데이트해야 하는 것과 연관된 성능 히트를 회피한다.
따라서, 상술한 바에 기초하여, 다른 "판독 n" 판독 요청이 제어기(1102)(도 11)에 의해 처리될 때마다, 다음 판독 요청("판독 n+1")의 저장 위치(예를 들어, 저장 어드레스)의 "힌트" 또는 예측이 "판독 n"과 연관된 메타데이터(1207)로부터 이용 가능하며, "판독 n+1" 데이터는 후속하는 판독 요청을 처리하기 전에 NVM(1106)(도 11)으로부터 프리-페치될 수 있다. 따라서, 판독 패턴들에 기초한 예측이 정확하다면, "판독 n+1"인 것으로 예상되는 다음 판독 요청에 대응하는 데이터는, 그 시간에 응답 판독 커맨드를 실행할 필요 없이 제어기(1102)에 이미 이용 가능하다. 일 실시예에 따르면, (블록(1203)에서) 그들 각각의 애플리케이션 ID들에 기초하여 분류되는 판독 요청들을 고려하여, "판독 n"에 대응하는 NVM(1106)에서의 메타데이터(1207)는 "판독 n" 및 동일한 애플리케이션 ID에 대응하는 "판독 n+1" 양측에 응답하여 "판독 n+ 1"만의 다음 저장 어드레스를 포함하도록 업데이트된다.
일 실시예에 따르면, 정확한 데이터일 가능성이 높은 이전의 "판독 n+1"로부터 식별된 NVM(1106)의 다음 저장 위치로부터의 "다음 데이터"(1209)는 판독 큐(1113)에 대응하는 유휴(1208) 처리 시간의 발생에 응답하여 페치된다. 관련된 실시예에 따르면, 유휴(1208) 시간 동안 프리-페치되는 것과 같은, 예측된 다음 판독 요청 "판독 n+1"에 대한 다음 데이터(1209)는 블록(1210)에서, 캐시 버퍼(1211)에 배치되거나 저장된다(예를 들어, 메모리(1110) 내에서 구현될 수 있다). 따라서, 다음 판독 요청 "판독 n+1"에 대응하는 데이터는, 다음 판독 요청 "판독 n+1"을 다시 수신하는 것에 응답하여 판독 커맨드를 실행할 필요 없이 캐시 버퍼(1211)에서 이미 이용 가능하며, 따라서 캐시 버퍼(1211)로부터 호스트(1150)(도 11)로 직접 반환될 수 있다.
다수의 애플리케이션 ID들에 대한 상술한 절차를 유지하기 위해, 구현 아키텍처의 문제로서, 각각의 트랙커가 대응하는 "선판독" 요청들 및/또는 메타데이터 업데이트들뿐만 아니라 그 자체의 애플리케이션 ID 및 대응하는 인커밍 판독 요청들을 처리할 수 있도록 여러 "트랙커" 프로세스들 또는 처리 스레드들을 유지하는 것이 바람직하다.
데이터를 프리-페치하는 방법
도 13은 일 실시예에 따른 데이터를 프리-페치하는 방법을 예시하는 흐름도이다. 도 13의 프로세스 또는 절차는, 하나 이상의 메모리 유닛들에 저장되고, 하나 이상의 프로세서들에 의해 실행될 때, 프로세스의 수행을 야기하는 명령어들의 하나 이상의 시퀀스들로서 실행을 위해 구현될 수 있다. 예를 들어, 하나 이상의 메모리 유닛들(예를 들어, 도 11의 메모리(1110), 또는 펌웨어에 고유한 판독 전용 메모리(ROM))에 저장된 명령어들의 시퀀스들은, 하나 이상의 프로세서들(예를 들어, 도 11의 시스템 제어기(1102)의 프로세서(1112))에 의해 실행될 때, 도 13에 예시된 프로세스를 수행할 수 있고 그리고/또는 그 프로세스의 수행을 야기할 수 있다.
블록(1302)에서, 판독 요청이 호스트로부터 수신되고, 여기서 판독 요청은 대응하는 데이터 저장 어드레스를 포함하고, 판독 요청은 판독 큐에 배치된다. 예를 들어, 판독 요청 "판독 n"(도 12)이 호스트(1150)(도 11)로부터 판독 큐(1113)(도 11 및 도 12)로 수신된다.
블록(1304)에서, 다음 판독 요청이 호스트로부터 수신되고, 다음 판독 요청은 대응하는 다음 데이터 저장 어드레스를 포함하고, 다음 판독 요청은 판독 큐에 배치된다. 예를 들어, 판독 요청 "판독 n+1"(도 12)이 호스트(1150)로부터 판독 큐(1113)로 수신된다.
블록(1306)에서, 판독 요청에 대응하는 메타데이터는 다음 판독 요청으로부터의 다음 데이터 저장 어드레스로 비휘발성 메모리에서 업데이트된다. 예를 들어, 판독 요청 "판독 n"에 대응하는 메타데이터(1207)는 다음 판독 요청 "판독 n+1"로부터의 다음 데이터 저장 어드레스로 NVM(1106)에서 업데이트된다.
블록(1308)에서, 호스트로부터 판독 요청을 다시 수신하는 것에 응답하여, 판독 요청에 대응하는 메타데이터로부터의 다음 데이터 저장 어드레스는 비휘발성 메모리로부터 판독된다. 예를 들어, 호스트(1150)로부터 판독 요청 "판독 n"을 다시 수신하는 것에 응답하여, 판독 요청 "판독 n"에 대응하는 메타데이터(1207)(도 12)로부터의 다음 데이터 저장 어드레스는 NVM(1106)으로부터 판독된다.
블록(1310)에서, 다음 데이터 저장 어드레스로부터의 다음 데이터가 판독 큐로부터 후속하는 판독 요청을 처리하기 이전에 페치된다. 예를 들어, 블록(1308)에서 NVM(1106)으로부터 판독된 바와 같이 다음 데이터 저장 어드레스로부터의 다음 데이터가, 판독 큐로부터 후속하는 판독 요청을 처리하기 이전에, 즉, 후속하는 판독 요청이 예측된 바와 같이 실제로 판독 요청 "판독 n+1"일 것이라는 것을 예상하고 페치된다.
도 14은 일 실시예에 따른 판독 큐에 데이터를 프리-페치하는 방법을 예시하는 흐름도이다. 도 13에서 같이, 도 14의 프로세스 또는 절차는, 하나 이상의 메모리 유닛들에 저장되고, 하나 이상의 프로세서들에 의해 실행될 때, 프로세스의 수행을 야기하는 명령어들의 하나 이상의 시퀀스들로서 실행을 위해 구현될 수 있다. 예를 들어, 하나 이상의 메모리 유닛들(예를 들어, 도 11의 메모리(1110), 또는 펌웨어에 고유한 판독 전용 메모리(ROM))에 저장된 명령어들의 시퀀스들은, 하나 이상의 프로세서들(예를 들어, 도 11의 시스템 제어기(1102)의 프로세서(1112))에 의해 실행될 때, 도 14에 예시된 프로세스를 수행할 수 있고 그리고/또는 그 프로세스의 수행을 야기할 수 있고, 이는 도 13의 프로세스에 대한 선택적인 계속 및/또는 확대 프로세스로서 이해될 수 있다.
블록(1402)에서, 판독 큐와 연관되거나 그에 대응하는 유휴 처리 시간의 발생에 응답하여, 다음 데이터 저장 어드레스로부터의 다음 데이터가 페치된다. 예를 들어, NVM(1106)으로부터 판독된 바와 같이, 다음 데이터 저장 어드레스로부터의 다음 데이터는 판독 큐(1113)에서의 후속하는 판독 요청이 예측된 바와 같이 판독 요청 "판독 n+1"이라는 것을 예상하고, 유휴 시간 동안 NVM(1106)으로부터 페치된다.
블록(1404)에서, 다음 데이터 저장 어드레스로부터의 다음 데이터는 캐시 버퍼에 배치된다. 예를 들어, 판독 요청 "판독 n"과 연관된 메타데이터(1207)로부터의 (원래 판독 요청 "판독 n+1"로부터의) 다음 데이터 저장 어드레스에 기초하여, 블록(1402)에서 페치되었던 다음 데이터가 캐시 버퍼(1211)에 저장된다.
블록(1406)에서, 호스트로부터 다음 판독 요청을 다시 수신하는 것에 응답하여, 다음 데이터는 캐시 버퍼(1211)로부터 호스트로 반환된다. 예를 들어, 호스트(1150)로부터 다음 판독 요청 "판독 n+1"을 다시 수신하는 것에 응답하여, 다음 데이터는 캐시 버퍼(1211)로부터 판독되고 호스트(1150)로 반환된다.
이러한 강화된 선판독 기술은 전술한 설명 및 예시로부터 명백할 수 있는 바와 같은 다양한 기술적 이점들을 제공한다. 예를 들어, 예측된 다음 판독 요청에 앞서, 데이터를 프리-페치하는 것은 판독 속도를 증가시킨다 이는 그들의 데이터가 매체 상에 분산되어 있기 때문에 완료되는데 더 긴 시간량을 취하는 랜덤 판독의 경우에 특히 유익할 수 있다.
본 기술분야의 통상의 기술자가 이해하는 바와 같이, 본 발명의 양태들은 시스템, 방법, 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 발명의 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함), 또는 소프트웨어 양태와 하드웨어 양태를 조합한 실시예의 형태를 취할 수 있는데, 이들은 모두 일반적으로 본 명세서에서 "회로", "모듈", 또는 "시스템"으로 지칭될 수 있다. 더욱이, 본 발명의 양태들은 컴퓨터 판독 가능 프로그램 코드가 수록된 하나 이상의 컴퓨터 판독 가능 매체(들)에 수록된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
포함된 설명들 및 도면들은 당업자에게 최상의 모드를 만들고 사용하는 방법을 교시하기 위해 특정 실시예들을 묘사한다. 본 발명의 원리들을 교시하기 위해, 일부 종래의 양태들은 단순화되거나 생략되었다. 당업자는 본 개시의 범주 내에 속하는 이들 실시예들로부터의 변형들을 이해할 것이다. 당업자는 전술된 특징부들이 다양한 방식으로 조합되어 다수의 실시예들을 형성할 수 있다는 것을 이해할 것이다. 결과적으로, 본 발명은 전술된 특정 실시예들로 제한되는 것이 아니라, 청구항들 및 이들의 등가물들에 의해서만 제한된다.

Claims (20)

  1. 전자 디바이스로서,
    비휘발성 저장 매체;
    판독 큐; 및
    상기 비휘발성 저장 매체에 결합되고,
    호스트로부터 대응하는 데이터 저장 어드레스를 포함하는 판독 요청을 수신하며, 상기 판독 요청을 상기 판독 큐에 배치하고;
    상기 호스트로부터 대응하는 다음 데이터 저장 어드레스를 포함하는 다음 판독 요청을 수신하며, 상기 다음 판독 요청을 상기 판독 큐에 배치하며; 그리고
    상기 비휘발성 저장 매체에서의 상기 판독 요청에 대응하는 메타데이터를 상기 다음 판독 요청으로부터의 상기 다음 데이터 저장 어드레스로 업데이트
    하도록 구성된
    제어 회로를 포함하는, 전자 디바이스.
  2. 제1항에 있어서, 상기 제어 회로는: 상기 호스트로부터 상기 판독 요청을 다시 수신하는 것에 응답하여,
    상기 판독 요청에 대응하는 상기 메타데이터로부터의 상기 다음 데이터 저장 어드레스를 상기 비휘발성 저장 매체로부터 판독하며; 그리고
    후속하는 판독 요청을 처리하기 앞서 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 페치
    하도록 더 구성되는, 전자 디바이스.
  3. 제1항에 있어서, 상기 제어 회로는 상기 판독 큐에 대응하는 유휴 처리 시간의 발생에 응답하여 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 페치하도록 더 구성되는, 전자 디바이스.
  4. 제1항에 있어서, 상기 비휘발성 저장 매체에서의 상기 판독 요청에 대응하는 상기 메타데이터의 상기 업데이트는, 기입 요청을 제외하고, 상기 다음 판독 요청에 기초하며 상기 다음 판독 요청에 응답하는, 전자 디바이스.
  5. 제1항에 있어서, 상기 판독 요청에 대응하는 메타데이터에서 업데이트된 상기 다음 데이터 저장 어드레스는 상기 다음 판독 요청에 대응하는 논리 블록 어드레스(LBA)인, 전자 디바이스.
  6. 제1항에 있어서, 상기 제어 회로는 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 캐시 버퍼에 배치하도록 더 구성되는, 전자 디바이스.
  7. 제6항에 있어서, 상기 제어 회로는 상기 호스트로부터 상기 다음 판독 요청을 다시 수신하는 것에 응답하여, 상기 캐시 버퍼로부터 상기 다음 데이터를 상기 호스트에 반환하도록 더 구성되는, 전자 디바이스.
  8. 제1항에 있어서, 상기 메타데이터를 업데이트하는 것은, 판독-수정-기입 커맨드를 활용하여 상기 다음 데이터 저장 어드레스를 상기 비휘발성 저장 매체에 기입하는 것을 포함하는, 전자 디바이스.
  9. 제1항에 있어서, 상기 제어 회로는 판독 요청들 각각에 대응하는 애플리케이션 식별자에 기초하여 하나 이상의 호스트들로부터 상기 판독 요청들을 분류하도록 더 구성되며;
    상기 다음 데이터 저장 어드레스로 상기 비휘발성 저장 매체에서 상기 판독 요청에 대응하는 상기 메타데이터를 업데이트하는 것은, 동일한 애플리케이션 식별자에 대응하는 판독 요청과 다음 판독 요청 양측에만 응답하는, 전자 디바이스.
  10. 제9항에 있어서, 상기 제어 회로는 각각의 애플리케이션 식별자에 대응하는 판독 요청들에 대응하는 상기 메타데이터를 업데이트하기 위해 각각의 상이한 애플리케이션 식별자에 대응하는 각각의 트랙커 프로세스를 실행하도록 더 구성되는, 저장 디바이스.
  11. 제1항에 있어서, 상기 장치는 데이터 저장 디바이스인, 전자 디바이스.
  12. 방법으로서,
    호스트로부터 대응하는 데이터 저장 어드레스를 포함하는 판독 요청을 수신하며, 상기 판독 요청을 판독 큐에 배치하는 단계;
    상기 호스트로부터 대응하는 다음 데이터 저장 어드레스를 포함하는 다음 판독 요청을 수신하며, 상기 다음 판독 요청을 상기 판독 큐에 배치하는 단계; 및
    비휘발성 저장 매체에서의 상기 판독 요청에 대응하는 메타데이터를 상기 다음 판독 요청으로부터의 상기 다음 데이터 저장 어드레스에 대응하는 논리 어드레스로 업데이트하는 단계
    를 포함하는, 방법
  13. 제12항에 있어서, 상기 호스트로부터 상기 판독 요청을 다시 수신하는 것에 응답하여,
    상기 판독 요청에 대응하는 상기 메타데이터로부터의 상기 다음 데이터 저장 어드레스를 상기 비휘발성 저장 매체로부터 판독하는 단계; 및
    후속하는 판독 요청을 처리하기 앞서 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 페치하는 단계
    를 더 포함하는, 방법.
  14. 제12항에 있어서, 상기 판독 큐에 대응하는 유휴 처리 시간의 발생에 응답하여 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 페치하는 단계를 더 포함하는, 방법.
  15. 제12항에 있어서, 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 캐시 버퍼에 배치하는 단계를 더 포함하는, 방법.
  16. 제15항에 있어서, 상기 호스트로부터 상기 다음 판독 요청을 다시 수신하는 것에 응답하여, 상기 캐시 버퍼로부터 상기 다음 데이터를 상기 호스트에 반환하는 단계를 더 포함하는, 방법.
  17. 제12항에 있어서, 상기 메타데이터를 업데이트하는 단계는 판독-수정-기입 커맨드를 활용하여 상기 다음 데이터 저장 어드레스에 대응하는 논리 어드레스를 상기 비휘발성 스토리지에 기입하는 단계를 포함하는, 방법.
  18. 제12항에 있어서, 판독 요청들 각각에 대응하는 애플리케이션 식별자에 기초하여 하나 이상의 호스트들로부터 상기 판독 요청들을 분류하는 단계를 더 포함하며;
    상기 판독 요청에 대응하는 상기 메타데이터를 업데이트하는 단계는, 동일한 애플리케이션 식별자에 대응하는 판독 요청과 다음 판독 요청 양측에만 응답하여 수행되는, 방법.
  19. 제18항에 있어서, 각각의 애플리케이션 식별자에 대응하는 판독 요청들에 대응하는 상기 메타데이터를 업데이트하기 위해 각각의 상이한 애플리케이션 식별자에 대응하는 각각의 트랙커 프로세스를 실행하는 단계를 더 포함하는, 방법.
  20. 컴퓨팅 시스템으로서,
    호스트로부터 대응하는 데이터 저장 어드레스를 포함하는 판독 요청을 수신하며, 상기 판독 요청을 판독 큐에 배치하는 수단;
    상기 호스트로부터 대응하는 다음 데이터 저장 어드레스를 포함하는 다음 판독 요청을 수신하며, 상기 다음 판독 요청을 상기 판독 큐에 배치하는 수단;
    비휘발성 저장 매체에서의 상기 판독 요청에 대응하는 메타데이터를 상기 다음 판독 요청으로부터의 상기 다음 데이터 저장 어드레스로 업데이트하는 수단;
    상기 호스트로부터 상기 판독 요청을 다시 수신하는 것에 응답하여,
    상기 판독 요청에 대응하는 상기 메타데이터로부터의 상기 다음 데이터 저장 어드레스를 상기 비휘발성 저장 매체로부터 판독하며;
    후속하는 판독 요청을 처리하기 앞서 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 페치하는 수단
    을 포함하는, 컴퓨팅 시스템.
KR1020210082734A 2020-09-10 2021-06-24 저장 디바이스들에 대한 강화된 선판독 능력 KR20220033976A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/017,626 2020-09-10
US17/017,626 US11449428B2 (en) 2018-06-19 2020-09-10 Enhanced read-ahead capability for storage devices

Publications (1)

Publication Number Publication Date
KR20220033976A true KR20220033976A (ko) 2022-03-17

Family

ID=80476325

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210082734A KR20220033976A (ko) 2020-09-10 2021-06-24 저장 디바이스들에 대한 강화된 선판독 능력

Country Status (3)

Country Link
JP (1) JP7170093B2 (ko)
KR (1) KR20220033976A (ko)
CN (1) CN114168495A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114842896A (zh) * 2022-05-05 2022-08-02 合肥兆芯电子有限公司 基于写入行为预测的写入控制方法、存储装置及控制电路

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009301595A (ja) * 2008-06-10 2009-12-24 Hitachi Ltd ディスク装置及びその記録方法
JP5296041B2 (ja) * 2010-12-15 2013-09-25 株式会社東芝 メモリシステムおよびメモリシステムの制御方法
WO2012140813A1 (ja) * 2011-04-14 2012-10-18 パナソニック株式会社 データ転送装置
KR20140028618A (ko) * 2012-08-29 2014-03-10 삼성전자주식회사 쓰기 페일을 줄이는 메모리 장치, 이를 포함하는 메모리 시스템 및 그 쓰기 방법
US10956044B2 (en) * 2013-05-16 2021-03-23 Advanced Micro Devices, Inc. Memory system with region-specific memory access scheduling
CN104679480A (zh) * 2013-11-27 2015-06-03 上海芯豪微电子有限公司 一种指令集转换系统和方法
WO2017017842A1 (ja) * 2015-07-30 2017-02-02 株式会社日立製作所 メモリの制御装置、記憶装置、および、メモリの書込み方法
US9904635B2 (en) * 2015-08-27 2018-02-27 Samsung Electronics Co., Ltd. High performance transaction-based memory systems
JP2019537097A (ja) * 2016-09-29 2019-12-19 ベリタス テクノロジーズ エルエルシー Iノードのアクセスパターンの追跡及びiノードの先取り
JP6677627B2 (ja) * 2016-12-20 2020-04-08 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびメモリアクセス方法
JP2018120346A (ja) * 2017-01-24 2018-08-02 日本電気株式会社 情報処理システムおよび情報処理システムの制御方法
JP2019204150A (ja) * 2018-05-21 2019-11-28 日本電信電話株式会社 通信用入出力装置

Also Published As

Publication number Publication date
JP7170093B2 (ja) 2022-11-11
JP2022046413A (ja) 2022-03-23
CN114168495A (zh) 2022-03-11

Similar Documents

Publication Publication Date Title
US11188256B2 (en) Enhanced read-ahead capability for storage devices
JP6514569B2 (ja) データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応
US9280474B2 (en) Adaptive data prefetching
US9164676B2 (en) Storing multi-stream non-linear access patterns in a flash based file-system
US11379381B2 (en) Main memory device having heterogeneous memories, computer system including the same, and data management method thereof
KR101522402B1 (ko) 반도체 디스크 장치 및 그것의 데이터 관리 방법
US8590001B2 (en) Network storage system with data prefetch and method of operation thereof
US20150143045A1 (en) Cache control apparatus and method
US8762628B2 (en) Information processing apparatus and cache method
CN107797759B (zh) 访问缓存信息的方法、装置与驱动器
CN107797760B (zh) 一种访问缓存信息的方法、装置与固态驱动器
JP2013530448A (ja) キャッシュストレージアダプタアーキテクチャ
US9983997B2 (en) Event based pre-fetch caching storage controller
US20130086307A1 (en) Information processing apparatus, hybrid storage apparatus, and cache method
US11263139B2 (en) Hardware accelerators and access methods thereof
KR20200089770A (ko) 저장 기록 명령에 기록 스트림 속성 활용
KR20100005539A (ko) 캐시 메모리 시스템 및 캐시의 프리페칭 방법
KR20220033976A (ko) 저장 디바이스들에 대한 강화된 선판독 능력
US8661169B2 (en) Copying data to a cache using direct memory access
US11449428B2 (en) Enhanced read-ahead capability for storage devices
CN115470157A (zh) 预取方法、电子设备、存储介质及程序产品
US10346070B2 (en) Storage control apparatus and storage control method
US9367467B2 (en) System and method for managing cache replacements
US9542318B2 (en) Temporary cache memory eviction
CN117032594B (zh) 一种读命令调度方法、处理方法、装置及存储设备

Legal Events

Date Code Title Description
E902 Notification of reason for refusal