[go: up one dir, main page]

KR20220033976A - Enhanced read-ahead capability for storage devices - Google Patents

Enhanced read-ahead capability for storage devices 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
address
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
KR1020210082734A
Other languages
Korean (ko)
Other versions
KR102692838B1 (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/en
Application granted granted Critical
Publication of KR102692838B1 publication Critical patent/KR102692838B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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) 유휴 시간 동안 프리-페치될 수 있고 캐시 버퍼에 저장될 수 있다.In the context of data storage, an approach for pre-fetching data prior to a read request is to receive a read request and a next read request, and to send metadata corresponding to the read request to a next data storage address corresponding to the next read request. It involves updating. In response to later receiving the read request again, the next data store address may be read from the read request metadata, and the next data may be pre-fetched from the next data store address before processing the subsequent read request. Moreover, the next data may be pre-fetched during read queue idle time in anticipation of another incoming next read request in response to the next data being returned to the host from the buffer rather than a read of non-volatile memory and It can be stored in a cache buffer.

Description

저장 디바이스들에 대한 강화된 선판독 능력 {ENHANCED READ-AHEAD CAPABILITY FOR STORAGE DEVICES}ENHANCED READ-AHEAD CAPABILITY FOR STORAGE DEVICES

관련 출원의 상호 참조Cross-referencing of related applications

본 출원은 2018년 6월 19일자로 출원된 미국 특허 출원 제 16/012,311호의 일부 계속 출원이며, 이에 대한 우선권의 이익을 주장하며, 이들 모두의 전체 내용은 본 명세서에 완전히 기재된 바와 같이 모든 목적을 위해 참고로 포함된다.This application is a continuation-in-part of U.S. Patent Application No. 16/012,311, filed June 19, 2018, and claims the benefit of priority thereto, the entire contents of which are incorporated herein by reference for all purposes. incorporated by reference for

기술분야technical field

본 개시의 양태들은 저장 디바이스들의 분야에 관한 것으로, 더욱 구체적으로는, 판독 동작들의 속도를 향상시키기 위한 강화된 선판독(read-ahead) 능력에 관한 것이다.Aspects of the present disclosure relate to the field of storage devices, and more particularly, to enhanced read-ahead capability to improve speed of read operations.

중앙 처리 유닛들, 그래픽 프로세서들, 및 다른 처리 요소들의 속도가 증가함에 따라, 저장 디바이스들은 컴퓨팅 시스템들의 전체 성능에서 병목(bottleneck)이 되었다. 하드 디스크 드라이브(HDD)들에 대해 고체 상태 드라이브(SSD)들이 동작하는 속도는 이러한 문제를 다소 완화시켰다. 그것과는 관계없이, 주어진 SSD는 여전히 호스트 상의 장애물일 수 있고, SSD들의 성능은 서로 크게 다를 수 있다.As the speed of central processing units, graphics processors, and other processing elements increases, storage devices have become a bottleneck in the overall performance of computing systems. The speed at which solid state drives (SSDs) operate relative to hard disk drives (HDDs) have alleviated this problem somewhat. Regardless, a given SSD can still be an obstacle on the host, and the performance of the SSDs can vary widely from one another.

저장 디바이스의 상대적 성능은 주어진 디바이스의 용량 및 그의 판독 및 기입 속도와 같은 다수의 인자들에 기초하여 평가될 수 있다. 대부분의 기입 속도들이 시간 경과에 따라 증가되었지만, 판독 시간은 저장 디바이스들의 성능에 있어서 중요한 제한 인자였다. 순차적인 판독 기법들은 토글 레이트들을 증가시키지만 대신 전력 소모가 증가되면서 속도들을 소정의 정도로 증가시킨 것이다.The relative performance of a storage device can be evaluated based on a number of factors, such as the capacity of a given device and its read and write speed. Although most write speeds have increased over time, read time has been a significant limiting factor in the performance of storage devices. Sequential read techniques increase the toggle rates, but instead increase the speeds to some degree with increased power consumption.

랜덤 판독은 속도를 증가시키고자 하는 목적을 위한 특정한 과제를 제시한다. 매체의 인접한 위치들로부터 데이터의 큰 연속적인 블록들이 판독될 수 있게 하는 순차적인 판독들과는 대조적으로, 랜덤 판독들은 매체 상의 다양한 비인접 위치들에 걸쳐 산란된 데이터를 탐색한다. 따라서, 랜덤 판독들은 판독 프로세스에 대한 레이턴시를 도입하며, 이는 연관된 호스트의 저장 디바이스의 전체 성능에 영향을 미친다.Random readout presents certain challenges for the purpose of increasing speed. In contrast to sequential reads, which allow large successive blocks of data to be read from contiguous locations on the medium, random reads search for data that is scattered across various non-contiguous locations on the medium. Thus, random reads introduce latency to the read process, which affects the overall performance of the storage device of the associated host.

저장 디바이스들이 데이터를 판독하는 속도를 증가시키기 위해 선판독 기법이 본 명세서에 개시된다. 주어진 기입 동작에 대한 데이터는 다음 기입의 위치가 데이터와 함께 저장되도록 스토리지에 기입될 수 있다. 나중에, 데이터가 스토리지로부터 판독되고 있을 때, 데이터와 함께 기입된 다음 기입의 위치로부터 다른 데이터가 프리-페치(pre-fetch)될 수 있다. 다음 위치가 후속 판독 동작의 타겟인 경우, 다른 데이터는 그 데이터가 저장된 위치로부터 이미 판독되었을 직후에 호스트로 반환될 수 있다. 이에 의해, 이러한 프로세스는 후속 판독 동작을 가속화한다.A read-ahead technique is disclosed herein to increase the speed at which storage devices read data. Data for a given write operation may be written to storage such that the location of the next write is stored with the data. Later, as data is being read from storage, other data may be pre-fetched from the location of the next write that was written with the data. If the next location is the target of a subsequent read operation, other data may be returned to the host immediately after it has already been read from the location where it was stored. Thereby, this process accelerates subsequent read operations.

데이터 저장의 맥락에서, 판독 요청 이전에 데이터를 프리-페치하기 위한 접근법은 판독 요청 및 다음 판독 요청을 수신하는 것, 및 다음 판독 요청에 대응하는 다음 데이터 저장 어드레스로 판독 요청에 대응하는 메타데이터를 업데이트하는 것을 수반한다. 나중에 판독 요청을 다시 수신하는 것에 응답하여, 다음 데이터 저장 어드레스는 판독 요청 메타데이터로부터 판독될 수 있고, 다음 데이터는 후속하는 판독 요청을 처리하기 전에 다음 데이터 저장 어드레스로부터 프리-페치될 수 있다. 더욱이, 다음 데이터는, 다음 데이터가 비휘발성 메모리의 판독보다는 버퍼로부터 호스트로 반환될 수 있는 것에 응답하여, 다른 인커밍 다음 판독 요청을 예상하고 판독 큐(queue) 유휴 시간 동안 프리-페치될 수 있고 캐시 버퍼에 저장될 수 있다.In the context of data storage, an approach for pre-fetching data prior to a read request is to receive a read request and a next read request, and to send metadata corresponding to the read request to a next data storage address corresponding to the next read request. It involves updating. In response to later receiving the read request again, the next data store address may be read from the read request metadata, and the next data may be pre-fetched from the next data store address before processing the subsequent read request. Moreover, the next data may be pre-fetched during read queue idle time in anticipation of another incoming next read request in response to the next data being returned to the host from the buffer rather than a read of non-volatile memory and It can be stored in a cache buffer.

본 개시의 다수의 양태들은 하기 도면들을 참조하여 더 잘 이해될 수 있다. 도면들 내의 구성요소들은 반드시 축척대로 도시된 것은 아니며, 대신에 본 개시의 원리를 명확하게 예시하는데 중점을 둔다. 더욱이, 도면들에서, 동일한 도면 부호는 여러 도면에 걸쳐 대응하는 부분들을 나타낸다. 이들 도면들과 관련하여 몇몇 실시예들이 설명되지만, 본 개시는 본 명세서에 개시된 실시예들에 제한되지 않는다. 그와 반대로, 모든 대안들, 수정들, 및 등가물들을 포함시키고자 한다.
도 1은 일 구현예에서의 컴퓨팅 시스템을 예시한다.
도 2는 일 구현예에서의 기입 프로세스를 예시한다.
도 3은 일 구현예에서의 판독 프로세스를 예시한다.
도 4는 일 구현예에서의 동작 시나리오를 예시한다.
도 5는 일 구현예에서의 컴퓨팅 시스템을 예시한다.
도 6은 일 구현예에서의 기입 프로세스를 예시한다.
도 7은 일 구현예에서의 판독 프로세스를 예시한다.
도 8은 일 구현예에서의 동작 아키텍처를 예시한다.
도 9a 및 도 9b는 일 구현예에서의 동작 아키텍처를 예시한다.
도 10은 일 구현예에서의 전력 제어 프로세스를 예시한다.
도 11은 일 구현예에서의 단순화된 컴퓨팅 시스템 아키텍처를 예시한다.
도 12는 일 구현예에서의 판독 시간을 감소시키기 위한 접근법을 예시한다.
도 13은 일 구현예에서의 데이터를 프리-페치하는 방법을 예시한다.
도 14는 일 구현예에서의 데이터를 판독 큐에 프리-페치하는 방법을 예시한다.
A number of aspects of the present disclosure may be better understood with reference to the following drawings. Elements in the drawings are not necessarily drawn to scale, emphasis instead being placed on clearly illustrating the principles of the present disclosure. Moreover, in the drawings, the same reference numerals refer to corresponding parts throughout the various drawings. Although some embodiments are described in connection with these drawings, the present disclosure is not limited to the embodiments disclosed herein. On the contrary, the intention is to cover all alternatives, modifications, and equivalents.
1 illustrates a computing system in one implementation.
2 illustrates a write process in one implementation.
3 illustrates a read process in one implementation.
4 illustrates an operating scenario in one implementation.
5 illustrates a computing system in one implementation.
6 illustrates a write process in one implementation.
7 illustrates a read process in one implementation.
8 illustrates an operational architecture in one implementation.
9A and 9B illustrate an operational architecture in one implementation.
10 illustrates a power control process in one implementation.
11 illustrates a simplified computing system architecture in one implementation.
12 illustrates an approach for reducing read time in one implementation.
13 illustrates a method of pre-fetching data in one implementation.
14 illustrates a method of pre-fetching data into a read queue in one implementation.

향상된 선판독 능력을 갖는 개선된 저장 디바이스가 본 명세서에 개시된다. 다양한 구현예들에서, 주어진 판독 동작 후에 다음에 어떤 어드레스가 판독될 것인지 예측함으로써 판독 시간들이 감소된다(그리고 속도가 증가된다). 그 어드레스의 데이터는 그 어드레스를 타겟으로 하는 후속 판독 요청에 앞서 프리-페치될 수 있다.An improved storage device with improved read-ahead capability is disclosed herein. In various implementations, read times are reduced (and speed is increased) by predicting which address will be read next after a given read operation. Data at that address may be pre-fetched prior to subsequent read requests targeting that address.

예측된 어드레스는 기입 커맨드들이 큐에 나타날 때 기입 커맨드들에 관하여 저장된 정보로부터 도출될 수 있다. 이러한 어드레스 추적은 다음 판독 커맨드에 대한 예측자로서 각각의 어드레스의 판독 동안 사용될 수 있다. 일 예에서, 예측된 어드레스는 선행 판독 동작의 페이로드로부터 획득된다. 즉, 이전 기입 동작 동안, 다음 기입의 어드레스는 주어진 기입의 페이로드 내의 데이터와 함께 스토리지에 기입될 수 있다. 이후에, 그 페이로드가 판독 요청의 대상인 경우, 그 페이로드는 다음 기입 어드레스가 되는 것의 어드레스를 획득하기 위해 파싱될 수 있다. 그 후, 다음 기입 어드레스는 다음/예측된 판독 어드레스로서 활용될 수 있다.The predicted address may be derived from stored information about the write commands as they appear in the queue. This address tracking can be used during the read of each address as a predictor for the next read command. In one example, the predicted address is obtained from the payload of a read-ahead operation. That is, during a previous write operation, the address of the next write may be written to storage along with the data in the payload of a given write. Then, if that payload is the subject of a read request, it can be parsed to obtain the address of what becomes the next write address. The next write address may then be utilized as the next/predicted read address.

이와 같이, 예측된 어드레스에서의 데이터는, 잠재적으로 동일한 어드레스로 향할 수 있는 임의의 후속 판독들에 앞서 프리-페치될 수 있다. 데이터는 관련 판독을 예상하여 버퍼링될 수 있다. 다음 판독 요청이 예측된 어드레스로 향하는 경우, 버퍼링된 데이터는 판독 동작을 대기할 필요 없이 즉시 반환될 수 있다. 다음 판독이 예측된 어드레스로 향하지 않는 경우, 데이터는 폐기될 수 있다.As such, data at the predicted address may be pre-fetched prior to any subsequent reads that could potentially be directed to the same address. Data may be buffered in anticipation of relevant reads. When the next read request is directed to the predicted address, the buffered data can be returned immediately without having to wait for a read operation. If the next read is not directed to the expected address, the data may be discarded.

다음 기입 커맨드의 어드레스를 획득하는 것은, 매체 상에 데이터를 프로그래밍하는 데 걸리는 시간의 양으로 인해 주어진 기입을 수행하는 동안 큐에 다른 기입 커맨드들을 가질 확률이 높기 때문에 가능하다. 반대로, 큐에서 다른 판독 요청들을 가질 확률은 판독 대(versus) 기입의 상대적 속도로 인해 낮다. 따라서, 이러한 다음 판독을 예측하는 것은, 판독 큐가 비어 있는 판독 동안일 가능성이 있기 때문에 유용하다.Obtaining the address of the next write command is possible because there is a high probability of having other write commands in the queue while performing a given write due to the amount of time it takes to program data onto the medium. Conversely, the probability of having other read requests in the queue is low due to the relative speed of read versus write. Thus, predicting this next read is useful because it is likely during a read where the read queue is empty.

일부 구현예들에서, 전력 소모는, 모든 예측들이 성공적이지 않을 것이기 때문에, 강화된 선판독의 결과로서 증가할 수 있다. 중복 오버헤드 및 여분의 전력 소모를 감소시키기 위한 대책은 전술된 제안된 예측들의 성공률을 추적하는 것이다. 예측 판독은 성공률이 소정 임계치를 초과할 때 조건적으로 인에이블되고, 성공률이 임계치 미만으로 떨어질 때 디스에이블될 수 있다.In some implementations, power consumption may increase as a result of enhanced read-ahead since not all predictions will be successful. A countermeasure to reduce redundancy overhead and extra power consumption is to track the success rate of the above-mentioned proposed predictions. Predictive reads may be conditionally enabled when the success rate exceeds a predetermined threshold and disabled when the success rate falls below a threshold.

다양한 구현예들에서, 저장 디바이스는, 예를 들어, 고체 상태 드라이브(solid-state drive, SSD), 하드 디스크 드라이브(HDD), 하이브리드(hybrid) SSD -HDD, 또는 임의의 다른 유형의 저장 디바이스일 수 있다. 디바이스는 NAND 기반 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM), 자기 데이터 스토리지, 광학 데이터 스토리지, 및/또는 임의의 다른 유형의 저장 기술과 같은, 데이터가 매체에 기입되고 매체로부터 판독되는 방법을 감독하는 제어기를 포함한다.In various implementations, the storage device may be, for example, a solid-state drive (SSD), a hard disk drive (HDD), a hybrid SSD-HDD, or any other type of storage device. can A device is a device that oversees how data is written to and read from a medium, such as NAND-based flash memory, dynamic random access memory (DRAM), magnetic data storage, optical data storage, and/or any other type of storage technology. includes a controller.

제어기는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있고, 디바이스의 메모리 컴포넌트들을 호스트로 브리지(bridge)한다. 하드웨어 구현에서, 제어기는 저장 매체에 결합된 제어 회로를 포함한다. 제어 회로는 호스트로부터 기입 요청들을 수신하는 수신 회로를 포함한다. 각각의 기입 요청은 기입 요청의 타겟인 데이터뿐만 아니라 데이터에 대한 타겟 어드레스를 포함한다. 타겟 어드레스는 논리 블록 어드레스(LBA), 물리 블록 어드레스(PBA), 또는 데이터를 저장할 곳을 설명하는 다른 이러한 식별자일 수 있다.The controller may be implemented in hardware, firmware, software, or a combination thereof, and bridges the memory components of the device to the host. In a hardware implementation, the controller includes control circuitry coupled to the storage medium. The control circuitry includes a receive circuitry for receiving write requests from the host. Each write request includes the target address for the data as well as the data that is the target of the write request. The target address may be a logical block address (LBA), a physical block address (PBA), or other such identifier that describes where to store the data.

제어 회로는 또한 이전 기입 요청 이후에 다음 기입 요청에 대한 다음 기입 어드레스를 식별하는 위치 회로를 포함한다. 제어 회로 내의 기입 회로는 기입 요청에 대한 데이터 및 다음 기입 어드레스의 표시를 기입 요청에 대한 타겟 어드레스에 기입한다. 다시 말하면, 기입 요청의 대상인 데이터는 다음 기입 요청의 어드레스와 스토리지에 기입된다. 본 명세서에 사용되는 바와 같이, "표시(indication)"는 매체 상에 후속적으로 저장될 데이터의 세트의 위치를 식별하거나 또는 확인하는데 사용될 수 있는 임의의 데이터 값, 비트 값, 신호, 플래그, 조건, 오프셋, 코드, 또는 수를 지칭한다.The control circuitry also includes a location circuit that identifies a next write address for a next write request after a previous write request. A write circuit in the control circuit writes the data for the write request and the indication of the next write address to the target address for the write request. In other words, the data that is the object of the write request is written to the address and storage of the next write request. As used herein, “indication” means any data value, bit value, signal, flag, condition that can be used to identify or confirm the location of a set of data to be subsequently stored on a medium. , offset, code, or number.

간단한 예에서, 기입되는 16 kb 페이지 중 4 바이트가 다음 기입의 어드레스를 위해 사용될 수 있다(0.025% 오버헤드). 다음 기입의 어드레스는 주어진 페이지의 헤더 섹션에 기입될 수 있지만, 페이지의 사용자 데이터 섹션에 어드레스를 저장하는 것이 또한 가능하다. 어드레스의 예는 PBA들, LBA들 또는 양자 모두뿐만 아니라 다음 기입의 위치를 나타내는 임의의 다른 정보를 포함한다. 일부 구현예들에서, 다음 기입 어드레스는 다이, 페이지, 및 블록 정보를 포함하는 다음 데이터가 저장되는 위치의 절대 어드레스이다. 다른 구현예들에서, 다음 기입 어드레스의 표시는 다음 어드레스를 해결하는데 사용될 수 있는 현재 LBA 또는 PBA로부터의 오프셋일 수 있다. 또 다른 예들에서, 다음 어드레스는 어드레스의 속기(short-hand) 버전에 기입될 수 있다. 다음 기입의 어드레스는 인코딩된 형태, 인코딩되지 않은 형태, 또는 임의의 다른 방식으로 저장될 수 있다.In a simple example, 4 bytes of a 16 kb page being written can be used for the address of the next write (0.025% overhead). The address of the next write can be written in the header section of a given page, but it is also possible to store the address in the user data section of the page. Examples of addresses include PBAs, LBAs, or both, as well as any other information indicating the location of the next write. In some implementations, the next write address is the absolute address of where the next data including die, page, and block information is stored. In other implementations, the indication of the next write address may be an offset from the current LBA or PBA that may be used to resolve the next address. In still other examples, the next address may be written to a short-hand version of the address. The address of the next write may be stored in encoded form, unencoded form, or in any other manner.

기입 요청들에 후속하여, 호스트는 초기 기입 요청에서와 동일한 어드레스를 타겟으로 하는 판독 요청을 전달(communicate)할 수 있다. 제어 회로 내의 판독 회로는 타겟 어드레스로부터 데이터 및 다음 기입 어드레스를 판독한다. 또한, 판독 회로는 다음 판독 요청에 앞서 다음 데이터를 획득하기 위해 다음 기입 어드레스에 의해 표시된 위치에서 선판독한다. 전술한 바와 같이, 선판독 어드레스로서 기능하는 다음 기입 어드레스 LBA, PBA, 오프셋, 플래그 등에 의해 표시될 수 있다. 예를 들어, LBA의 경우에, 제어 회로는 다음 데이터를 페치하기 위해 LBA를 PBA로 변환한다. 다른 예에서, 다음 기입 어드레스가 PBA로서 저장되었다면 어떠한 변환도 필요하지 않다. 오프셋, 신호, 플래그 등의 경우에, 제어 회로는 현재 PBA로부터의 선판독 PBA 및 오프셋, 신호, 플래그 등과 관련된 값을 계산할 수 있다. 다음 판독 요청이 호스트에 의해 전달되면, 다음 데이터는 호스트로 즉시 반환될 준비가 된다. 일부 경우들에서, 초기 판독 요청과 다음 판독 요청 양측은 랜덤 판독 요청들로 간주되고, 따라서 판독 동작들은 랜덤 판독들로 간주된다. 일부 구현예들에서, 제어 회로는 다음 기입 어드레스의 표시를 저장하고 다음 데이터를 저장하기 위한 버퍼 회로를 더 포함한다. 버퍼링된 다음 기입 어드레스의 표시는 후속 판독 요청과 관련하여 타겟 어드레스와 비교될 수 있는 값으로서 저장될 수 있다. 예를 들어, 버퍼링된 값은 LBA일 수 있으며, 이는 후속 판독 요청에서 LBA와 비교될 수 있다. 특정 실시예들에서, 후속 판독 요청들이 PBA들을 활용하면, 버퍼링된 값은 LBA 대신에 PBA일 수 있다. 일부 시나리오들에서, 다수의 선판독 동작들과 연관된 어드레스들 및 데이터는 버퍼에 동시에 저장될 수 있다. 버퍼는 데이터의 하나 이상의 페이지들을 수용할 수 있도록 크기가 정해질 수 있다. 하나의 시나리오에서, 버퍼는 96 kB 이하의 RAM, 또는 대략 4 페이지의 데이터의 크기일 수 있다. 그러나, 페이지 크기와 마찬가지로, RAM 크기가 증가할 수 있다는 것이 이해될 수 있다.Subsequent to the write requests, the host may communicate a read request targeting the same address as in the initial write request. A read circuit in the control circuit reads data from the target address and the next write address. Further, the read circuit pre-reads at the position indicated by the next write address to obtain the next data prior to the next read request. As described above, the next write address serving as a read-ahead address may be indicated by LBA, PBA, offset, flag, or the like. For example, in the case of an LBA, the control circuitry converts the LBA to a PBA to fetch the next data. In another example, no conversion is required if the next write address is stored as a PBA. In the case of offsets, signals, flags, etc., the control circuitry may calculate a read-ahead PBA from the current PBA and values associated with the offset, signal, flag, etc. When the next read request is forwarded by the host, the next data is ready to be returned immediately to the host. In some cases, both the initial read request and the next read request are considered random read requests, and thus read operations are considered random reads. In some implementations, the control circuit further comprises a buffer circuit for storing the indication of the next write address and for storing the next data. An indication of the next buffered write address may be stored as a value that may be compared to the target address in relation to subsequent read requests. For example, the buffered value may be an LBA, which may be compared to the LBA in a subsequent read request. In certain embodiments, if subsequent read requests utilize PBAs, the buffered value may be a PBA instead of an LBA. In some scenarios, addresses and data associated with multiple read-ahead operations may be simultaneously stored in a buffer. The buffer may be sized to accommodate one or more pages of data. In one scenario, the buffer may be 96 kB or less of RAM, or approximately 4 pages of data in size. However, as with page size, it may be understood that RAM size may increase.

그 후, 제어 회로의 비교기 부분은 다음 판독 요청에 특정된 다음 타겟 어드레스가 다음 기입 어드레스와 매칭된다는 것을 결정할 수 있다. 이것은 버퍼 내의 다음 기입 어드레스의 값을 다음 판독 요청에서의 어드레스의 값과 비교함으로써 달성될 수 있다. 예를 들어, 다음 판독 요청에서의 LBA가 버퍼 내의 LBA와 비교될 수 있다. 다른 예에서, 다음 판독 요청에서의 PBA가 버퍼 내의 PBA와 비교될 수 있다. 일부 대안적인 실시예들에서, 버퍼에 저장된 값은 매체 상에 저장되거나 선판독 동작 동안 계산됨에 따라 다음 기입 어드레스의 실제 값과 오프셋만큼 상이할 수 있다. 이러한 상황에서, 제어 회로는 실제 값을 다음 판독 요청에서의 값과 비교하기 전에 실제 값을 계산할 것이다. 제어 회로의 비교기 또는 다른 요소(들)는 값들이 서로 매칭되는 상황에서 다음 판독 요청에 응답하여 다음 데이터를 호스트에 반환할 수 있다. 다음 판독 요청에 주어진 다음 타겟 어드레스가 다음 기입 어드레스와 매칭되지 않으면, 비교기는 다음 데이터를 폐기할 수 있다.The comparator portion of the control circuit may then determine that the next target address specified in the next read request matches the next write address. This can be accomplished by comparing the value of the next write address in the buffer with the value of the address in the next read request. For example, the LBA in the next read request may be compared to the LBA in the buffer. In another example, the PBA in the next read request may be compared to the PBA in the buffer. In some alternative embodiments, the value stored in the buffer may differ by an offset from the actual value of the next write address as stored on the medium or calculated during a pre-read operation. In this situation, the control circuit will calculate the actual value before comparing it to the value in the next read request. The comparator or other element(s) of the control circuit may return the next data to the host in response to the next read request in the situation where the values match each other. If the next target address given in the next read request does not match the next write address, the comparator may discard the next data.

제어기는 일부 구현예들에서 기입 큐 및 판독 큐를 포함할 수 있다. 판독 큐는 호스트로부터 판독 요청들을 수신하고, 기입 큐는 기입 요청들을 수신한다. 판독 요청들은, 비휘발성 저장 매체들에서 데이터를 판독할 위치를 표시할 수 있어서, 제어기가 주어진 판독 요청에 의해 표시된 위치로부터 데이터를 페치할 수 있게 한다.The controller may include a write queue and a read queue in some implementations. The read queue receives read requests from the host, and the write queue receives write requests. The read requests may indicate a location from which to read data from the non-volatile storage media, allowing the controller to fetch data from the location indicated by the given read request.

그렇게 하면, 제어기는 위치로부터 판독된 페이로드로부터 다음 판독 요청의 예측된 어드레스를 파싱한다. 그 후, 제어기는 다음 판독 요청을 실제로 수신하기 앞서, 다음 판독 요청의 예측된 위치로부터 추가의 데이터를 프리-페치할 수 있다. 다음 판독 요청의 실제 위치가 예측된 위치와 상이한 경우, 제어기는 단순히 다음 데이터를 폐기하고, 실제 위치로부터 계속 판독할 수 있다.In doing so, the controller parses the predicted address of the next read request from the payload read from the location. The controller may then pre-fetch additional data from the predicted location of the next read request before actually receiving the next read request. If the actual position of the next read request is different from the predicted position, the controller may simply discard the next data and continue reading from the actual position.

기입 큐에 대해, 큐에서의 기입 요청들 각각은 주어진 기입 요청에 대해 데이터를 기입할 곳을 표시한다. 제어기의 예측기 부분은 이전 기입 요청 이후에 다음 기입 요청에 의해 표시된 위치에 기초하여 다음 판독 요청에 대한 예측된 위치를 식별한다. 제어기의 기입 부분은 이전 기입 요청에 대해 표시된 위치에, 이전 기입 요청에 대한 데이터 및 예측된 위치의 표시를 기입할 수 있다. 제어기의 버퍼 부분은 다음 판독 요청에 대한 예측된 위치의 표시 및 또한 다음 데이터를 저장할 수 있다.For a write queue, each write request in the queue indicates where to write data for a given write request. The predictor portion of the controller identifies the predicted position for the next read request based on the position indicated by the next write request after the previous write request. The write portion of the controller may write the data for the previous write request and an indication of the predicted position at the location indicated for the previous write request. A buffer portion of the controller may store an indication of the predicted location for the next read request and also the next data.

전술한 바와 같이, 비교기 부분은 다음 판독 요청에 의해 표시된 위치가 다음 판독 요청에 대한 예측된 위치와 매칭된다는 것을 결정할 수 있다. 제어기의 비교기 또는 다른 부분(들)은 다음 데이터를 호스트로 반환할 수 있다. 다음 데이터는, 다음 판독 요청에 의해 표시된 위치가 다음 판독 요청에 대한 예측된 위치와 매칭되지 않는 경우에 폐기될 수 있다.As described above, the comparator portion may determine that the position indicated by the next read request matches the predicted position for the next read request. The comparator or other part(s) of the controller may then return data to the host. Next data may be discarded if the position indicated by the next read request does not match the predicted position for the next read request.

이러한 강화된 선판독 기술은 상기 논의 및 도 1 내지 도 10의 하기의 논의로부터 명백할 수 있는 바와 같이, 다양한 기술적 이점들을 제공한다. 예를 들어, 판독 요청에 앞서 데이터를 프리-페치하는 것은 판독 속도를 증가시킨다. 이는 그들의 데이터가 매체 상에 분산되어 있기 때문에 완료되는데 더 긴 시간량을 취하는 랜덤 판독의 경우에 특히 유익할 수 있다. 다른 예에서, 호스트 상의 요청 애플리케이션은 제어기가 알 필요가 없다. 오히려, 제어기는 요청 애플리케이션의 어떠한 지식 없이 강화된 선판독을 채용할 수 있다.This enhanced read-ahead technique provides various technical advantages, as will be apparent from the discussion above and the following discussion of FIGS. 1-10. For example, pre-fetching data prior to a read request increases the read speed. This can be particularly beneficial in the case of random reads that take a longer amount of time to complete because their data is spread across the medium. In another example, the requesting application on the host does not need to be known by the controller. Rather, the controller may employ enhanced pre-reading without any knowledge of the requesting application.

이제 도면들을 참조하면, 도 1은 강화된 선판독 기술의 구현예에서의 컴퓨팅 시스템(100)을 예시한다. 컴퓨팅 시스템(100)은 호스트(101) 및 저장 디바이스(110)를 포함한다. 호스트(101)는 저장 디바이스(110)에 데이터를 기입하고 그로부터 데이터를 판독할 수 있는 임의의 호스트 서브시스템을 나타낸다. 저장 디바이스(110)는 데이터를 판독하고 기입할 목적으로 호스트(101)에 내부적으로 또는 외부적으로 접속할 수 있는 임의의 디바이스를 나타낸다. 저장 디바이스(110)의 예들은 고체 상태 드라이브(SSD)들, 썸 드라이브(thumb drive)들, 하드 디스크 드라이브(HDD)들, 하이브리드 SSD/HDD 드라이브들, 및 이들의 임의의 변형 또는 조합을 포함하지만, 이에 제한되지 않는. 컴퓨팅 시스템(100)의 예들은 개인용 컴퓨터들, 랩톱 컴퓨터들, 서버 컴퓨터들, 태블릿 컴퓨터들, 모바일 폰들, 네트워크 드라이브들, 소비자 전자 장치들(예를 들어, 카메라들, 텔레비전들, 및 미디어 플레이어들), 게이밍 디바이스들, 내구성 제품 디바이스들, 및 하나 이상의 저장 디바이스들을 활용하는 임의의 다른 시스템, 변형, 또는 이들의 조합을 포함하지만, 이에 제한되지 않는다.Referring now to the drawings, FIG. 1 illustrates a computing system 100 in an implementation of an enhanced read-ahead technique. The computing system 100 includes a host 101 and a storage device 110 . Host 101 represents any host subsystem capable of writing data to and reading data from storage device 110 . Storage device 110 represents any device capable of internally or externally connecting to host 101 for the purpose of reading and writing data. Examples of storage device 110 include solid state drives (SSDs), thumb drives, hard disk drives (HDDs), hybrid SSD/HDD drives, and any variation or combination thereof, although , but not limited thereto. Examples of computing system 100 include personal computers, laptop computers, server computers, tablet computers, mobile phones, network drives, consumer electronic devices (eg, cameras, televisions, and media players). ), gaming devices, durable product devices, and any other system, variant, or combination thereof utilizing one or more storage devices.

호스트(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)와 같은 (그러나 이에 제한되지 않는) 하나 이상의 인터페이스 프로토콜들을 활용할 수 있다.Host 101 communicates with storage device 110 via connection 103 . Connection 103 represents one or more physical interconnects coupling host 101 and storage device 110 and through which storage communications may flow between host 101 and storage device 110 . When communicating with the storage device 110 , the host 101 may include a serial ATA (SATA), Fiber Channel, Firewire, Serial Attached Small Computer Systems Interface (SAS), ATA/IDE (Advanced Technology Attachment/Integrated Drive) Electronics), Universal Serial Bus (USB), and one or more interface protocols such as, but not limited to, Peripheral Component Interconnect Express (PCIe).

저장 디바이스(110)는 제어기(111) 및 저장 매체(115)를 포함한다. 제어기(111)는 데이터를 저장 매체(115)에 기입하고 저장 매체(115)로부터 데이터를 판독하는 것에 대해 감시 역할을 수행하는 하나 이상의 처리 요소들을 나타낸다. 제어기(111)는, 하드웨어, 그러나 또한 제어기(111)에 의해 실행 가능한 펌웨어, 소프트웨어, 또는 다른 형태의 프로그램 명령어들로 구현될 수 있는, 도 2 및 도 3에서 더욱 상세히 설명되는 기입 프로세스(200) 및 판독 프로세스(300)를 각각 실행시킬 수 있다. 저장 매체(115)는 데이터가 기입되고 판독될 수 있는 임의의 비휘발성 매체이다. 예들에는 NAND 플래시 매체, DRAM 매체, 상변화 매체, 자기 매체, 및 광학 매체가 포함되지만 이에 제한되지 않는다. 접속(113)은 제어기(111)와 저장 매체(115)를 결합하는 하나 이상의 물리적 상호접속을 나타낸다.The storage device 110 includes a controller 111 and a storage medium 115 . The controller 111 represents one or more processing elements that perform a monitoring role for writing data to and reading data from the storage medium 115 . The controller 111 may be implemented in hardware, but also in firmware, software, or other form of program instructions executable by the controller 111 , the write process 200 described in more detail in FIGS. 2 and 3 . and read process 300 , respectively. Storage medium 115 is any non-volatile medium to which data can be written and read. Examples include, but are not limited to, NAND flash media, DRAM media, phase change media, magnetic media, and optical media. Connection 113 represents one or more physical interconnects coupling controller 111 and storage medium 115 .

동작 시, 호스트(101)는 저장 매체(115) 상에서 수행되도록 판독 및 기입 요청들을 제어기(111)에 전달하고, 그 중 기입 요청들(121) 및 판독 요청(125)이 대표적이다. 제어기(111)는 기입 요청들(121)을 처리할 때 기입 프로세스(200)를 실행하고, 판독 요청(125)을 처리할 때 판독 프로세스(300)를 실행한다. 하기는 기입 프로세스(200) 및 판독 프로세스(300)의 상세한 논의이며, 도 2 및 도 3에서의 단계들을 각각 삽입구적으로 참조한다.In operation, the host 101 transmits read and write requests to the controller 111 to be performed on the storage medium 115 , among which the write requests 121 and the read request 125 are representative. The controller 111 executes the write process 200 when processing the write requests 121 and executes the read process 300 when processing the read request 125 . The following is a detailed discussion of the write process 200 and the read process 300, with reference to the steps in FIGS. 2 and 3 respectively in parentheses.

도 2를 참조하면, 제어기(111)는 호스트(101)로부터 주어진 기입 요청을 수신한다(단계 201). 기입 요청은 기입될 데이터 및 저장 매체(115) 상에 데이터를 기입할 곳을 나타내는 위치를 포함한다. 위치는 물리 블록 어드레스(PBA), 논리 블록 어드레스(LBA), 또는 임의의 다른 적합한 표시에 의해 주어질 수 있다. 일부 경우들에서, 위치는 기입 요청 자체에 주어지지 않을 수 있지만, 오히려 기입 요청을 수신할 때 호스트(101)에 의해 별도로 제공되거나 제어기(111)에 의해 결정될 수 있다.Referring to FIG. 2 , the controller 111 receives a given write request from the host 101 (step 201). The write request includes the data to be written and a location indicating where to write the data on the storage medium 115 . The location may be given by a physical block address (PBA), logical block address (LBA), or any other suitable indication. In some cases, the location may not be given in the write request itself, but rather may be separately provided by the host 101 or determined by the controller 111 when receiving the write request.

다음으로, 제어기(111)는 호스트(101)에 의해 제출된 다음 기입 요청의 다음 위치를 식별한다(단계 203). 이것은 예를 들어, 기입 큐에서 다음 기입 요청과 연관된 어드레스를 판독함으로써 달성될 수 있다. 그 후, 제어기(111)는 초기 기입 요청에 대해 특정된 위치에 기입될 페이로드를 생성한다(단계 205). 페이로드는 적어도 제1 기입 요청에 대한 데이터 및 다음 기입 요청에 대한 다음 위치를 포함할 수 있다. 다음 위치는 PBA일 수 있지만, 대안으로 LBA일 수 있다.Next, the controller 111 identifies the next location of the next write request submitted by the host 101 (step 203). This may be accomplished, for example, by reading the address associated with the next write request from the write queue. The controller 111 then generates a payload to be written to the location specified for the initial write request (step 205). The payload may include at least data for the first write request and a next location for the next write request. The next location may be a PBA, but alternatively an LBA.

이러한 예에서 단지 하나의 다음 위치만이 페이로드 내에 포함되지만, 다수의 위치가 단일 페이로드에 저장될 수 있다는 것이 이해되어야 한다. 예를 들어, 다음 어드레스 및 그 이후의 다음 어드레스 모두는 주어진 페이로드에 저장될 수 있다. 또한, 본 명세서에 사용되는 바와 같이 용어 "다음(next)"은 큐 내의 바로 다음 어드레스를 지칭하지만, 변형이 가능하다. 예를 들어, 바로 다음 어드레스는 스킵될 수 있고, 그 이후의 다음 어드레스가 대신 사용되고 페이로드 내에 포함될 수 있다.Although in this example only one of the following locations is included in the payload, it should be understood that multiple locations may be stored in a single payload. For example, both the next address and the next address thereafter may be stored in a given payload. Also, as used herein, the term “next” refers to the immediately next address in a queue, although variations are possible. For example, the immediately next address may be skipped, and the next address thereafter may be used instead and included in the payload.

페이로드를 생성한 경우, 제어기(111)는 기입 요청에 대해 특정된 초기 위치에 페이로드를 기입한다(단계 207). 이러한 방식으로, 기입 요청에 대한 데이터는 큐에서 다음 기입 요청에 대한 위치의 아이덴티티와 함께 저장된다. 기입 프로세스(200)는 요청에 대한 데이터와 함께 각각의 선행 요청을 따르도록 다음 기입 요청의 어드레스를 기입하는 후속 기입 요청에 대해 계속될 수 있다. 후속 위치 정보는 그 논의가 후속하는 판독 프로세스(300)에 대한 예측된 위치로서 역할을 할 수 있다.When generating the payload, the controller 111 writes the payload to the initial location specified for the write request (step 207). In this way, the data for a write request is stored along with the identity of the position for the next write request in the queue. The write process 200 may continue for subsequent write requests writing the address of the next write request to follow each preceding request along with data for the request. Subsequent location information may serve as a predicted location for the reading process 300 that is discussed subsequently.

도 3의 판독 프로세스(300)를 참조하면, 제어기(111)는 호스트(101)로부터 주어진 판독 요청을 수신한다(단계 301). 판독 요청은 제어기(111)가 데이터를 판독하는 어드레스를 포함한다. 위치는 PBA 또는 LBA로서 특정될 수 있으며, 이 경우에 제어기(111)는 LBA를 PBA로 변환한다.Referring to the read process 300 of FIG. 3 , the controller 111 receives a given read request from the host 101 (step 301 ). The read request includes an address from which the controller 111 reads data. The location may be specified as a PBA or an LBA, in which case the controller 111 converts the LBA to a PBA.

제어기(111)는 판독 요청에 의해 주어진 어드레스에서 저장 매체(115)로부터 페이로드를 페치하고(단계 303), 그것의 데이터 및 기입 프로세스(200)의 맥락에서 데이터와 함께 저장되었던 다음 위치로 페이로드를 파싱한다(단계 305). 데이터는 호스트(101)로 반환될 수 있고(단계 306), 다음 위치는 다음 데이터를 프리-페치하기 위해 사용된다(단계 307).The controller 111 fetches the payload from the storage medium 115 at the address given by the read request (step 303 ), and its data and the payload to the next location where it was stored along with the data in the context of the write process 200 . is parsed (step 305). The data may be returned to the host 101 (step 306), and the next location is used to pre-fetch the next data (step 307).

프리-페치 단계가 항상 발생할 필요는 없다는 것을 알 수 있다. 오히려, 제어기(111)는, 페이로드가 널 값(null value)을 포함하거나 그렇지 않으면 다음 위치를 포함하지 않으면, 데이터를 프리-페치하려고 시도하는 것을 억제할 수 있다. 다른 선택적인 예에서, 제어기(111)는 판독 요청이 랜덤 판독 요청이 아닌 경우, 파싱 및 프리-페칭 단계들을 억제할 수 있다. 즉, 단계 305 및 단계 307로 진행하기 전에, 제어기(111)는 판독 요청이 랜덤 판독 요청인지를 먼저 결정할 수 있다. 제어기(111)는 판독 요청이 랜덤 판독이라는 것을 자체적으로 확인할 수 있거나, 호스트(101)에 의해 그 사실을 인지할 수 있다.It can be seen that the pre-fetch step need not always occur. Rather, the controller 111 may refrain from attempting to pre-fetch the data if the payload contains a null value or otherwise does not contain the next position. In another optional example, the controller 111 may suppress the parsing and pre-fetching steps if the read request is not a random read request. That is, before proceeding to steps 305 and 307, the controller 111 may first determine whether the read request is a random read request. The controller 111 may determine by itself that the read request is a random read, or it may be aware of that fact by the host 101 .

다음 위치의 어드레스 및 프리-페치된 데이터는, 후속 판독 요청이 수신될 때 이들이 이용 가능하도록 버퍼링될 수 있다. 일부 구현예들에서, 페이로드는 하나 보다 많은 다음 어드레스를 포함할 수 있으며, 이 경우에, 제어기는 다수의 위치로부터 데이터를 프리-페치하고 버퍼링할 수 있다. 그 후, 다수의 "다음 어드레스들"이 또한 버퍼링될 것이다.The address of the next location and the pre-fetched data may be buffered so that they are available when a subsequent read request is received. In some implementations, the payload may include more than one next address, in which case the controller may pre-fetch and buffer data from multiple locations. After that, a number of "next addresses" will also be buffered.

제어기(111)는 후속 판독 요청에서의 어드레스 및 버퍼 내의 다음 어드레스가 동일한지를 결정하기 위해 후속 판독 요청에서의 어드레스를 버퍼 내의 다음 어드레스(또는 버퍼에 존재하는 경우 다수의 다음 어드레스)와 비교한다. 후속 판독 요청에서의 어드레스 및 버퍼 내의 다음 어드레스가 동일하면, 제어기(111)는 프리-페치된 데이터를 페치하는 것보다는, 후속 판독 요청에 응답해 호스트(101)로 반환할 수 있다.The controller 111 compares the address in the subsequent read request to the next address in the buffer (or multiple next addresses if present in the buffer) to determine if the address in the subsequent read request and the next address in the buffer are the same. If the address in the subsequent read request and the next address in the buffer are the same, the controller 111 may return the pre-fetched data to the host 101 in response to the subsequent read request, rather than fetching it.

도 1에 예시된 예시적인 시나리오를 다시 참조하면, 호스트(101)는 기입 요청들(121)을 저장 디바이스(110)에 제출한다. 기입 요청들(121)은 데이터(d1) 및 어드레스(L1)를 갖는 제1 요청을 포함하고; 제2 요청은 데이터(d2) 및 위치(L2)를 포함하며; n 번째 요청은 데이터(dn) 및 위치(Ln)를 포함한다.Referring back to the example scenario illustrated in FIG. 1 , the host 101 submits write requests 121 to the storage device 110 . write requests 121 include a first request with data d1 and address L1; the second request includes data d2 and location L2; The nth request contains data dn and location Ln.

기입 프로세스(200)를 제1 기입 요청에 적용하면, 제어기(111)가 저장 매체(115)에 기입될 페이로드들(123)을 생성한다. 제어기(111)는 제1 요청 내의 데이터 및 제2 요청 내의 어드레스로부터 페이로드(d1_ L2)를 생성한다. 페이로드는 저장 매체(115)에 기입된다. 마찬가지로, 제어기(111)는 제2 요청에 대한 페이로드(d2_ L3)를 생성한다. N번째 요청에 대해 생성된 페이로드는 n번째 요청으로부터의 데이터 및 큐에서의 다음 기입 요청의 위치, 또는 dn_Ln+를 포함한다.Applying the write process 200 to the first write request, the controller 111 generates payloads 123 to be written to the storage medium 115 . The controller 111 generates the payload d1_L2 from the data in the first request and the address in the second request. The payload is written to the storage medium 115 . Similarly, the controller 111 generates a payload d2_L3 for the second request. The payload generated for the Nth request contains the data from the nth request and the position of the next write request in the queue, or dn_Ln+.

호스트(101)는 또한 판독 요청(125)이 나타내는 판독 요청을 제출한다. 판독 요청(125)은 다른 유형의 판독들이 가능하지만, 예를 들어, 랜덤 판독 요청을 나타낼 수 있는 바와 같은 위치(L1)를 식별한다.Host 101 also submits a read request indicated by read request 125 . Read request 125 identifies location L1 as other types of reads are possible, but may represent, for example, a random read request.

판독 프로세스(300)를 적용하면, 제어기(111)는 호스트(101)로부터의 판독 요청들에 응답하여 페이로드들(127)을 페치(및 프리-페치)한다. 예를 들어, 제어기(111)는 상기 논의된 제1 기입 요청에 대한 페이로드인 위치(L1)로부터의 페이로드 또는 d1_ L2를 페치한다.Applying read process 300 , controller 111 fetches (and pre-fetches) payloads 127 in response to read requests from host 101 . For example, the controller 111 fetches the payload from location L1 or d1_L2, which is the payload for the first write request discussed above.

제어기(111)는 다음 위치(L2)를 획득하기 위해 페이로드를 파싱한다. 페이로드(d1)의 데이터 부분은 호스트(101)로 반환될 수 있다. 제어기(111)는 또한 L2로 향한 다른 판독 요청을 예상하여, 위치(L2)에서의 페이로드를 프리-페치한다. 그 페이로드는 또한 그의 데이터 부분(d2) 및 위치 부분(L3)으로 파싱된다.The controller 111 parses the payload to obtain the next location L2. The data portion of the payload d1 may be returned to the host 101 . Controller 111 also pre-fetches the payload at location L2 in anticipation of another read request directed to L2. The payload is also parsed into its data part (d2) and location part (L3).

L2로 향하는 다른 판독 요청이 수신된다고 가정하면, 제어기(111)는 데이터를 페치할 필요 없이 데이터(d2)로 응답을 즉시 반환할 수 있다. 그러나, L2로 향하는 판독 요청들이 수신되지 않은 경우, 데이터(d2)는 일정 기간 후에 폐기되거나 오버라이팅될 수 있다. 제어기는 제한의 제약에 도달할 때까지 위치(L3)에서, 그리고 그 후 위치(Ln+)에서 페이로드를 선택적으로 프리-페치할 수 있다.Assuming another read request to L2 is received, the controller 111 may immediately return a response with data d2 without the need to fetch the data. However, if no read requests to L2 are received, the data d2 may be discarded or overwritten after a period of time. The controller may optionally pre-fetch the payload at location L3 and thereafter at location Ln+ until the constraint of the limit is reached.

도 4는 본 명세서에 개시된 강화된 선판독 기술의 다양한 타이밍 양태들을 보여주는 구현예에서의 동작 시나리오(400)를 예시한다. 동작 시나리오(400)는 호스트(401), 기입 큐(403), 판독 큐(404), 제어기(405), 및 매체(407)를 포함한다. 별도로 도시되지만, 기입 큐(404) 및 판독 큐(404)는 제어기(405)에 대해 외부적으로 또는 내부적으로 구현될 수 있다. 다른 요소들, 접속들 등이 명료함을 위해 수반될 수 있지만 도시되지는 않는다는 것이 이해될 수 있다.4 illustrates an operating scenario 400 in an implementation showing various timing aspects of the enhanced read-ahead technique disclosed herein. The operational scenario 400 includes a host 401 , a write queue 403 , a read queue 404 , a controller 405 , and a medium 407 . Although shown separately, the write queue 404 and the read queue 404 may be implemented externally or internally to the controller 405 . It may be understood that other elements, connections, etc. may be involved for purposes of clarity but are not shown.

동작 중에, 호스트(401)는 w1(d1, L1) 및 w2(d2, L2)로 표기된 기입 큐(403)에 2개의 기입 요청을 전달한다. 호스트(401)와 큐들 사이의 직접 전달로서 도시되지만, 요청들은 제어기(405)를 포함하는, 기입 큐(403)에 도달하기 전에 다른 물리적 또는 논리적 요소들을 통해 라우팅될 수 있다는 것이 이해될 수 있다.During operation, host 401 forwards two write requests to write queue 403 denoted w1 (d1, L1) and w2 (d2, L2). Although shown as a direct transfer between the host 401 and the queues, it may be understood that requests may be routed through other physical or logical elements before reaching the write queue 403 , including the controller 405 .

제어기(405)는 기입 요청들이 큐 내에 수신되는 일반 순서로 기입 요청들을 구현한다. 따라서, 제어기(405)는 먼저 w1을 구현하고, 이어서 w2를 구현한다. 제1 기입 요청에 관하여, 제어기(405)는 다음 기입 요청의 어드레스 - 즉, w2를 식별하기 위해 큐를 조사한다. L2가 공지되어 있는 경우, 제어기(405)는 d1 및 L2를 포함하는 w1에 대한 페이로드를 생성한다. 그 후, 제어기(405)는 제1 기입 요청(L1)에 의해 특정된 위치에서 매체(407)에 d1 및 L2를 기입한다.The controller 405 implements the write requests in the normal order in which they are received in the queue. Thus, the controller 405 implements w1 first, and then implements w2. For the first write request, the controller 405 looks in the queue to identify the address of the next write request - ie, w2. If L2 is known, controller 405 generates a payload for w1 comprising d1 and L2. Then, the controller 405 writes d1 and L2 to the medium 407 at the position specified by the first write request L1.

큐의 일반적인 순서에 따라, 제어기(405)는 다음으로 제2 기입 요청을 처리한다. 예시적인 목적을 위해, 제3 기입 요청이 기입 큐(403)에서 w2 뒤에 있고 L3으로 어드레싱되는 것으로 가정된다. 따라서, 제어기(405)는 d2 및 L3을 포함하는 w2에 대한 페이로드를 생성한다. 그 후, 페이로드는 매체(407)에서 L2에 기입된다.Following the general order of the queue, the controller 405 next processes the second write request. For illustrative purposes, it is assumed that a third write request is behind w2 in write queue 403 and addressed to L3 . Thus, the controller 405 generates a payload for w2 that includes d2 and L3. The payload is then written to L2 in medium 407 .

나중에, 기입들이 완료된 후에, 호스트(401)는 w1에 대해 이전에 기입된 데이터를 획득하기 위해 판독 요청들을 제출할 수 있다. 판독 큐(404)는 데이터를 획득할 어드레스를 나타내는 판독 요청으로 채워진다. 제어기(405)는 데이터(d1) 및 다음 위치(L2)를 포함하는, 지시된 어드레스에 저장된 페이로드를 페치한다.Later, after the writes are complete, the host 401 may submit read requests to obtain the data previously written to w1. The read queue 404 is filled with read requests indicating the address from which to obtain the data. The controller 405 fetches the payload stored at the indicated address, including the data d1 and the next location L2.

제어기(405)는 페이로드를 그의 데이터 및 위치 컴포넌트들로 파싱하고 데이터 부분을 호스트(401)로 반환한다. 위치 부분에 의해, 제어기(405)는 위치(L2)에서 페이로드를 프리-페치한다. 페이로드는 데이터(d2) 및 다른 "다음" 위치(L3)를 포함한다. 제어기(405)는, 데이터와 함께 저장되었던 위치와는 대조적으로, 데이터가 검색되었던 위치(L2)와 데이터를 버퍼링한다. 제어기(405)는 L3에 저장된 페이로드에 대한 다른 프리-페치를 선택적으로 수행할 수 있다.The controller 405 parses the payload into its data and location components and returns the data portion to the host 401 . By the location part, the controller 405 pre-fetches the payload at location L2. The payload contains data d2 and another "next" location (L3). The controller 405 buffers the data with the location L2 from which the data was retrieved, as opposed to the location where it was stored with the data. The controller 405 may optionally perform another pre-fetch on the payload stored in L3.

호스트(401)는 후속 판독 요청을 전달한다. 제어기(405)는 그에 응답하여 후속 판독 요청에서의 위치를 버퍼에 저장된 위치와 비교한다. 이러한 예에서, 양측의 어드레스들은 L2를 반영한다. 이와 같이, 제어기(405)는 매체(407)로부터 데이터를 페치해야 하기보다는, 버퍼링된 데이터(d2)로 판독 요청에 응답할 수 있다.Host 401 forwards subsequent read requests. Controller 405 in response compares the position in the subsequent read request to the position stored in the buffer. In this example, addresses on both sides reflect L2. As such, the controller 405 may respond to the read request with buffered data d2 rather than having to fetch the data from the medium 407 .

도 5는 멀티-스레드형 환경의 맥락에서 적용되는 바와 같은 강화된 선판독 기술의 다른 구현예에서의 컴퓨팅 시스템(500)을 도시한다. 컴퓨팅 시스템(500)은 호스트(501) 및 저장 디바이스(510)를 포함한다. 호스트(501)는 저장 디바이스(510)에 데이터를 기입하고 그로부터 데이터를 판독할 수 있는 임의의 멀티-스레드형 서브시스템을 나타낸다. 저장 디바이스(510)는 데이터를 판독하고 기입할 목적으로 호스트(501)에 내부적으로 또는 외부적으로 접속할 수 있는 임의의 디바이스를 나타낸다.5 illustrates a computing system 500 in another implementation of an enhanced read-ahead technique as applied in the context of a multi-threaded environment. The computing system 500 includes a host 501 and a storage device 510 . Host 501 represents any multi-threaded subsystem capable of writing data to and reading data from storage device 510 . Storage device 510 represents any device capable of internally or externally connecting to host 501 for the purpose of reading and writing data.

스레드(502) 및 스레드(504)는 각각 멀티-스레드형 환경에서 이용 가능할 수 있는 다양한 스레드들을 나타낸다. 각각의 스레드는 호스트(501)에서 구동되는 상이한 애플리케이션, 유틸리티, 또는 컴포넌트에 런-시간에 동적으로 할당될 수 있다. 스레드들은 요청들(522)(스레드(502)와 연관됨) 및 요청들(524)(스레드(504)와 연관됨)에 의해 표현되는 판독 요청들을 저장 디바이스(510)에 제출한다.Threads 502 and 504 each represent various threads that may be available in a multi-threaded environment. Each thread may be dynamically assigned at run-time to a different application, utility, or component running on the host 501 . Threads submit read requests, represented by requests 522 (associated with thread 502 ) and requests 524 (associated with thread 504 ) to storage device 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)와 같은 (그러나 이에 제한되지 않는) 하나 이상의 인터페이스 프로토콜들을 활용할 수 있다.Host 501 communicates with storage device 510 via connection 503 . Connection 503 represents one or more physical interconnects that communicatively couple host 501 and storage device 510 . When communicating with the storage device 510 , the host 501 may include a serial ATA (SATA), Fiber Channel, Firewire, Serial Attached Small Computer Systems Interface (SAS), Advanced Technology Attachment/Integrated Drive (ATA/IDE), Electronics), Universal Serial Bus (USB), and one or more interface protocols such as, but not limited to, Peripheral Component Interconnect Express (PCIe).

저장 디바이스(510)는 제어기(511) 및 매체(515)를 포함한다. 제어기(511)는 매체(515)에 관하여 판독 및 기입 프로세서들을 제어하는 하나 이상의 처리 요소들을 나타낸다. 제어기(511)는 도 6 및 도 7 각각에서 더욱 상세히 설명되는, 기입 프로세서(600) 및 판독 프로세서(700)를 실행할 수 있다. 매체(515)는 데이터가 기입되고 판독될 수 있는 임의의 비휘발성 매체이다. 예들에는 NAND 플래시 매체, DRAM 매체, 상변화 매체, 자기 매체, 및 광학 매체가 포함되지만 이에 제한되지 않는다. 접속(513)은 제어기(511)와 매체(515)를 결합하는 하나 이상의 물리적 상호접속을 나타낸다.The storage device 510 includes a controller 511 and a medium 515 . Controller 511 represents one or more processing elements that control read and write processors with respect to medium 515 . Controller 511 may execute write processor 600 and read processor 700 , which are described in greater detail in FIGS. 6 and 7 , respectively. Medium 515 is any non-volatile medium to which data can be written and read. Examples include, but are not limited to, NAND flash media, DRAM media, phase change media, magnetic media, and optical media. Connection 513 represents one or more physical interconnects coupling controller 511 and medium 515 .

동작 시, 호스트(501)는 판독 및 기입 요청들을 제어기(511)에 전달한다. 제어기(511)는 기입 요청들을 처리할 때 기입 프로세스(600)를 실행하고, 판독 요청들을 처리할 때 판독 프로세스(700)를 실행한다. 하기는 기입 프로세스(600) 및 판독 프로세스(600)의 상세한 논의이며, 도 6 및 도 7의 단계들을 각각 삽입구적으로 참조한다.In operation, host 501 forwards read and write requests to controller 511 . Controller 511 executes write process 600 when processing write requests and executes read process 700 when processing read requests. The following is a detailed discussion of the write process 600 and the read process 600, with reference to the steps of FIGS. 6 and 7 respectively in parentheses.

도 6을 참조하면, 제어기(511)는 호스트(501)로부터 다중의 기입 요청(2)을 수신한다(단계 501). 각각의 기입 요청은 기입될 데이터 및 매체(515) 상에 데이터를 기입할 곳을 나타내는 위치를 포함한다. 위치는 물리 블록 어드레스(PBA), 논리 블록 어드레스(LBA), 또는 임의의 다른 적합한 어드레스에 의해 주어질 수 있다. 일부 경우들에서, 위치는 기입 요청 자체에 주어지지 않을 수 있지만, 오히려 기입 요청을 수신할 때 호스트(501)에 의해 별도로 제공되거나 제어기(511)에 의해 결정될 수 있다.Referring to FIG. 6 , the controller 511 receives multiple write requests 2 from the host 501 (step 501). Each write request includes the data to be written and a location on the medium 515 indicating where to write the data. The location may be given by a physical block address (PBA), logical block address (LBA), or any other suitable address. In some cases, the location may not be given in the write request itself, but rather may be separately provided by the host 501 or determined by the controller 511 upon receiving the write request.

임의의 주어진 기입 요청에 대해, 제어기(511)는 임의의 주어진 기입 요청 이후의 다음 요청과 연관된 스레드를 식별한다(단계 603). 스레드는 다음 기입 요청에서 식별될 수 있거나 일부 다른 방식으로 결정될 수 있다. 제어기(511)는 인스턴트 요청과 연관된 스레드를 다음 요청과 연관된 스레드와 비교하여 이들이 동일한지를 결정한다(단계 605).For any given write request, the controller 511 identifies the thread associated with the next request after any given write request (step 603). The thread may be identified in the next write request or may be determined in some other way. Controller 511 compares the thread associated with the instant request to the thread associated with the next request to determine if they are identical (step 605).

스레드들이 동일한 경우, 제어기(511)는 인스턴트 요청에 대한 데이터 및 다음 기입 요청의 다음 어드레스로 구성된 페이로드를 생성한다(단계 607). 그 후, 페이로드는 표시된 어드레스에 기입된다(단계 609). 그러나, 스레드들이 동일하지 않은 경우, 제어기(511)는 단순히 데이터를 표시된 어드레스에 기입하고(단계 606), 이에 의해 페이로드를 생성하는 단계를 피함으로써 자원을 보존할 수 있다.If the threads are the same, the controller 511 generates a payload consisting of the data for the instant request and the next address of the next write request (step 607). The payload is then written to the indicated address (step 609). However, if the threads are not identical, the controller 511 may conserve resources by simply writing data to the indicated address (step 606), thereby avoiding generating a payload.

도 7을 참조하면, 제어기(511)는 타겟 어드레스를 식별하는 판독 요청을 수신한다(단계 701). 이에 응답하여, 제어기(511)는 임의의 정보가 이전 판독 요청에 대해 버퍼링되었는지 여부를 결정하기 위해 선판독 플래그를 체크한다(단계 703). 플래그가 인에이블되는 경우, 제어기(511)는 버퍼 내에 저장된 어드레스에 대하여 요청에서의 타겟 어드레스를 평가한다(단계 705). 이 어드레스들이 동일한 경우, 제어기는 이전 판독 요청을 처리하는 맥락에서 프리-페치된 버퍼로부터 데이터를 판독할 수 있다(단계 706).Referring to Fig. 7, the controller 511 receives a read request identifying the target address (step 701). In response, controller 511 checks the read-ahead flag to determine whether any information has been buffered for the previous read request (step 703). If the flag is enabled, the controller 511 evaluates the target address in the request against the address stored in the buffer (step 705). If these addresses are the same, the controller may read data from the pre-fetched buffer in the context of processing the previous read request (step 706).

어드레스들이 동일하지 않은 경우, 제어기(511)는 판독 요청에서 특정된 어드레스에서 페이로드를 페치하는 것으로 진행한다(단계 707). 제어기(511)는, 적어도 데이터, 및 대상 데이터 이후에 기입될 다음 데이터에 속하는 어드레스를 포함하는 컴포넌트 부분들로 페이로드를 파싱한다(단계 709).If the addresses are not the same, the controller 511 proceeds to fetch the payload at the address specified in the read request (step 707). The controller 511 parses the payload into component parts containing at least data and an address belonging to the next data to be written after the target data (step 709).

이러한 데이터를 이용하여, 제어기(511)는 데이터를 호스트(501)로 판독할 수 있다(단계 710). 제어기(511)는 또한, 다음 어드레스가 널(null)인지 또는 다음 어드레스가 스토리지에 기입되지 않았음을 나타내는 어떤 다른 값인지를 체크한다(단계 711). 이것은 예를 들어, 주어진 기입 요청을 따르는 다음 기입 요청이 동일한 스레드로부터 유래하지 않은 경우일 수 있다(도 6과 관련하여 상기 단계 605 참조).Using this data, the controller 511 can read the data to the host 501 (step 710). The controller 511 also checks whether the next address is null or some other value indicating that the next address has not been written to storage (step 711). This may be the case, for example, when the next write request following a given write request does not originate from the same thread (see step 605 above with respect to FIG. 6 ).

다음 어드레스 값이 널인 경우, 제어기(511)는 플래그를 디스에이블로 설정하여(단계 712), 후속 판독 요청을 수신할 때, 어드레스들을 비교하는 단계가 생략될 수 있다. 다음 어드레스가 널이 아닌 경우, 제어기(511)가 플래그 값을 인에이블로 설정하여(또는 유지시켜), 후속 판독 요청에서의 타겟 어드레스들이 비교될 수 있다(단계 713).If the next address value is null, the controller 511 sets the flag to disable (step 712), so that when receiving a subsequent read request, the step of comparing the addresses can be omitted. If the next address is not null, the controller 511 sets (or maintains) the flag value to enable (or maintains), so that the target addresses in subsequent read requests can be compared (step 713).

플래그를 설정하면, 제어기(511)는 대상 페이로드로부터 파싱된 다음 어드레스의 위치에 저장된 페이로드를 프리-페치한다(단계 715). 제어기(511)는 다음 데이터에 대응하는 어드레스와 함께, 버퍼에 프리-페치된 페이로드로부터의 다음 데이터를 저장한다(단계 717). 그 다음 어드레스는, 판독 프로세스(700)가 단계(705)로 복귀할 때 후속 판독 요청에 포함된 후속 타겟 어드레스와 비교될 수 있다.Upon setting the flag, the controller 511 pre-fetches the payload stored at the location of the next address parsed from the target payload (step 715). The controller 511 stores the next data from the pre-fetched payload in a buffer, along with the address corresponding to the next data (step 717). The next address may be compared to the subsequent target address included in the subsequent read request when the read process 700 returns to step 705 .

도 8은 강화된 선판독 기술의 기입측의 구현 및 연관된 예시적인 시나리오에서의 동작 아키텍처(800)를 예시한다. 도 8과 관련하여, 도 9a 및 도 9b는 연관된 예시적인 시나리오뿐만 아니라 상기 강화된 선판독 기술의 판독측의 구현에서의 동작 아키텍처(900)를 예시한다. 2개의 아키텍처들은 SSD, 하이브리드 HDD/SSD 등과 같은 적합한 저장 디바이스와 관련하여 (임의의 여분의 요소들 없이) 조합될 수 있다는 것이 이해될 수 있다.8 illustrates an implementation of a write-side of an enhanced read-ahead technique and an operational architecture 800 in an associated example scenario. Referring to FIG. 8 , FIGS. 9A and 9B illustrate an operational architecture 900 in the implementation of the read side of the enhanced pre-read technique as well as the associated example scenario. It may be appreciated that the two architectures may be combined (without any extra elements) in connection with a suitable storage device such as an SSD, hybrid HDD/SSD, or the like.

도 8을 참조하면, 동작 아키텍처(800)는 기입 큐(810), 매체(810), 및 위치 모듈(801), 수신 모듈(803), 및 기입 모듈(805)에 의해 표현되는 다양한 동작 모듈들을 포함한다. 위치 모듈(801), 수신 모듈(803), 및 기입 모듈은 하드웨어, 펌웨어, 또는 다른 소프트웨어뿐만 아니라 이들의 임의의 변형 또는 조합으로 구현될 수 있다. 기입 큐(810)는 매체(830)로부터 외부적으로 구현될 수 있지만, 내부적으로 구현될 수도 있다. 어느 경우든, 기입 큐(810)는 위치 모듈(801), 수신 모듈(803), 및 기입 모듈(805) 중 하나 이상에 액세스 가능하다. 동작 아키텍처(800)는 시스템 버스, 인터페이스들, 및 상호접속들 등과 같은 명료함을 위해 생략되는 다른 요소들을 포함할 수 있다는 것이 이해될 수 있다.Referring to FIG. 8 , an operational architecture 800 includes a write queue 810 , a medium 810 , and various operational modules represented by a location module 801 , a receive module 803 , and a write module 805 . include The location module 801 , the receive module 803 , and the write module may be implemented in hardware, firmware, or other software, as well as any variation or combination thereof. Write queue 810 may be implemented externally from medium 830 , but may also be implemented internally. In either case, the write queue 810 is accessible to one or more of the location module 801 , the receive module 803 , and the write module 805 . It may be appreciated that the operational architecture 800 may include other elements that are omitted for clarity, such as a system bus, interfaces, and interconnects, and the like.

동작 시에, 기입 요청들은 호스트(미도시)로부터 기입 큐(810)에 수신되고 큐 내의 순서 또는 장소를 점유한다. 기입 요청들은 장소(811)에서의 요청(w1); 장소(813)에서의 요청(w2); 장소(815)에서의 요청(w3), 및 장소(817)에서의 요청(wn)에 의해 표현된다. 그에 따라서, 기입 요청들은 그 순서: w1, w2, w3, wn 등으로 처리된다.In operation, write requests are received from a host (not shown) into a write queue 810 and occupy an order or place in the queue. Write requests include request w1 at location 811; request w2 at location 813; Represented by a request w3 at a location 815 , and a request wn at a location 817 . Accordingly, write requests are processed in that order: w1, w2, w3, wn, etc.

수신 모듈(803)은 기입 요청들이 실행될 기입 큐(810)로부터 디스패치됨에 따라 기입 요청들을 수신한다. 일례로서, 수신 모듈(803)은 요청(w1)을 수신하고 이를 기입 모듈(805)에 전달한다. 요청(w1)은 데이터(d1) 및 데이터를 기입할 위치 식별자(L1)를 포함한다.The receiving module 803 receives write requests as they are dispatched from the write queue 810 to be executed. As an example, the receiving module 803 receives the request w1 and forwards it to the writing module 805 . The request w1 contains data d1 and a location identifier L1 to which to write the data.

위치 결정 모듈(801)은, 이러한 경우에 w2인 대상 기입 요청 이후에 큐에서의 다음 기입 요청의 위치를 식별하기 위해 기입 큐(810)를 조사한다. w2의 위치는 L2이고, 따라서 위치 모듈(801)은 L2를 기입 모듈(805)에 전달한다. 기입 모듈(805)은 수신 모듈(803)로부터의 정보 및 위치 모듈로부터의 정보 양측을 수신하고, L1에 기입될 페이로드를 생성한다. 이러한 예에서, 페이로드(831)는 d1과 L2의 조합이다.The positioning module 801 examines the write queue 810 to identify the position of the next write request in the queue after the target write request, which in this case is w2. The location of w2 is L2 , so the location module 801 passes L2 to the write module 805 . The writing module 805 receives both the information from the receiving module 803 and the information from the location module, and generates a payload to be written to L1 . In this example, payload 831 is a combination of d1 and L2.

유사한 동작이 큐 내의 다른 기입 요청들에 대해 수행된다. 페이로드(833)는 w2와 연관되어 생성되고, 데이터(d2) 및 위치(L3)를 포함한다. 페이로드(835)는 w3과 연관되어 생성되고, 데이터(d3) 및 위치(L4)를 포함한다. 최종으로, 페이로드(837)는 wn과 연관되어 생성되고, 데이터(dn) 및 위치(Ln+)를 포함한다. 이러한 방식으로, 페이로드들은 판독 프로세스 동안 검사되고, 적절한 경우 프리-페치되어, 판독 프로세스를 가속할 수 있다.A similar operation is performed for other write requests in the queue. The payload 833 is generated in association with w2 and includes data d2 and a location L3. Payload 835 is generated in association with w3 and includes data d3 and location L4. Finally, a payload 837 is generated in association with wn and includes data dn and a location Ln+. In this way, the payloads can be checked during the read process and pre-fetched where appropriate, thereby accelerating the read process.

도 9a를 참조하면, 동작 아키텍처(900)는 판독 큐(950), 매체(910), 및 비교 모듈(941), 판독 모듈(943), 및 버퍼(947)에 의해 표현되는 다양한 동작 모듈들을 포함한다. 판독 모듈(943)은 파싱 모듈(945)을 포함할 수 있지만, 파싱 모듈은 판독 모듈(943)에 대해 외부적으로 구현될 수 있다. 비교 모듈(941), 판독 모듈(943), 버퍼(947), 및 파싱 모듈(945)은 하드웨어, 펌웨어, 또는 다른 소프트웨어뿐만 아니라 이들의 임의의 변형 또는 조합으로 구현될 수 있다. 판독 큐(910)는 매체(930)로부터 외부적으로 구현될 수 있지만, 내부적으로 구현될 수도 있다. 어느 경우든, 판독 큐(910)는 비교 모듈(941), 판독 모듈(943), 및 버퍼(947) 중 하나 이상에 액세스 가능하다. 동작 아키텍처(900)는 시스템 버스, 인터페이스들, 및 상호접속들 등과 같은 명료함을 위해 생략되는 다른 요소들을 포함할 수 있다는 것이 이해될 수 있다.Referring to FIG. 9A , the operational architecture 900 includes a read queue 950 , a medium 910 , and various operational modules represented by a compare module 941 , a read module 943 , and a buffer 947 . do. The read module 943 may include a parsing module 945 , but the parsing module may be implemented external to the read module 943 . The comparison module 941 , the reading module 943 , the buffer 947 , and the parsing module 945 may be implemented in hardware, firmware, or other software, as well as any variation or combination thereof. The read queue 910 may be implemented externally from the medium 930 , but may also be implemented internally. In either case, read queue 910 is accessible to one or more of compare module 941 , read module 943 , and buffer 947 . It may be appreciated that the operational architecture 900 may include other elements that are omitted for clarity, such as a system bus, interfaces, and interconnects, and the like.

동작 시, 판독 요청들은 호스트로부터 판독 큐(950)에 수신된다. 판독 요청은 도 9a에서 r1에 의해 표현되고, 도 9b에서 r2 및 r3에 의해 표현된다. 요청들은 각각 장소(951), 장소(953), 및 장소(955)에 의해 표현되는, 큐 내의 순서 또는 장소를 갖는다. 순차적인 판독 요청들이 랜덤 판독 요청들 사이에서 산재될 수 있지만, 순차적 판독 요청들과는 대조적으로 판독 요청들은 랜덤 판독 요청들인 것으로 예시를 위해 가정된다.In operation, read requests are received in read queue 950 from the host. The read request is represented by r1 in FIG. 9A, and r2 and r3 in FIG. 9B. Requests have an order or place in the queue, each represented by place 951 , place 953 , and place 955 . Although sequential read requests may be interspersed among random read requests, it is assumed for purposes of illustration that read requests are random read requests as opposed to sequential read requests.

판독 요청들은 큐로부터 취해지고, 비교 모듈(941)에 전달된다. 비교 모듈(941)은 주어진 판독 요청에서의 어드레스를 (만약 있다면) 버퍼(947)에서 버퍼링된 어드레스와 비교하여, 대상 데이터가 페치될 필요가 있거나 이미 프리-페치되었는지를 결정한다. 이러한 예에서, 판독 요청(r1)은 위치(L1)와 관련된다. L1은 버퍼(947) 내의 Lx와 비교된다. 그들이 매칭되지 않기 때문에, 비교 모듈(941)은 어드레스를 판독 모듈(943)로 전달한다.Read requests are taken from the queue and passed to a comparison module 941 . The comparison module 941 compares the address in the given read request with the address buffered in the buffer 947 (if any) to determine whether the target data needs to be fetched or has already been pre-fetched. In this example, the read request r1 is associated with the location L1. L1 is compared to Lx in buffer 947. Since they do not match, the compare module 941 passes the address to the read module 943 .

판독 모듈(943)은 위치(L1)로부터 페이로드(931)를 페치하는 것을 담당한다. 파싱 모듈(945)은 페이로드를 그의 컴포넌트 부분들(d1 및 L2)로 파싱한다. 판독 모듈(943)은 d1을 호스트로 반환할 수 있고, L2로부터 페이로드(933)를 프리-페치한다. 페이로드(933)는 데이터(d2) 및 위치(L3)를 포함한다. 데이터(d2)는 위치(L2)와 관련하여 저장되도록 버퍼(947)에 전달된다.The read module 943 is responsible for fetching the payload 931 from the location L1 . The parsing module 945 parses the payload into its component parts d1 and L2. The read module 943 may return d1 to the host, and pre-fetch the payload 933 from L2. Payload 933 includes data d2 and location L3. Data d2 is passed to buffer 947 to be stored in relation to location L2.

도 9b는 도 9a에서 시작되는 예시적인 시나리오의 연속을 예시한다. 도 9b에서, 판독 요청(r2)은 비교 모듈(941)에 의해 수신되고 큐로부터 취해진다. 여기서, 비교 모듈(941)은 r2 내의 타겟 어드레스가 버퍼(947) 내의 저장된 어드레스와 동일하다고 결정한다. 그에 따라, 비교 모듈(941)은 버퍼(942)로부터 호스트로 데이터(d2)를 판독하도록 판독 모듈(943)에 지시한다. 판독 모듈(943)은 이 단계에서 생략될 수 있다.9B illustrates a continuation of the example scenario that begins in FIG. 9A . In FIG. 9B , a read request r2 is received by comparison module 941 and taken from the queue. Here, the comparison module 941 determines that the target address in r2 is the same as the stored address in the buffer 947 . Accordingly, the comparison module 941 instructs the reading module 943 to read the data d2 from the buffer 942 to the host. The reading module 943 may be omitted in this step.

위치(L2)에서의 페이로드가 L3의 다음 어드레스를 참조하기 때문에, 판독 모듈은 L3에서 페이로드(935)를 선택적으로 프리-페치할 수 있다. 그렇게 함에 있어서, 파싱 모듈은 데이터(d3)를 획득하기 위해 페이로드(935)를 파싱할 것이다. 데이터(d3) 및 위치(L3)는 버퍼(947)에 저장되어 하나 이상의 후속 판독 요청들에 대해 비교될 것이다.Since the payload at location L2 refers to the next address in L3, the read module can selectively pre-fetch the payload 935 at L3. In doing so, the parsing module will parse the payload 935 to obtain data d3. Data d3 and location L3 will be stored in buffer 947 and compared for one or more subsequent read requests.

도 10은 본 명세서에 개시된 강화된 선판독 기술이 다양한 동작 조건들에 기초하여 동적으로 인에이블되고 디스에이블되는 구현예에서의 전력 제어 프로세스(1000)를 예시한다. 고체 상태 드라이브 또는 다른 적합한 저장 디바이스 내의 제어기는 하드웨어, 펌웨어, 또는 다른 소프트웨어로 구현될 수 있는 전력 제어 프로세스(1000)를 채용할 수 있다.10 illustrates a power control process 1000 in an implementation in which the enhanced read-ahead technique disclosed herein is dynamically enabled and disabled based on various operating conditions. A controller in a solid state drive or other suitable storage device may employ the power control process 1000 , which may be implemented in hardware, firmware, or other software.

동작 시, 주어진 제어기는 강화된 판독 프로세스의 맥락에서 이루어진 선판독 시도들에 대한 히트 레이트를 추적한다(단계 1001). 히트 레이트는 프리-페치된 데이터가 후속 판독 요청에 의해 실제로 요청되는 레이트에 관련될 수 있다. 예를 들어, 제1 위치로 향한 초기 판독 요청은 제2 위치를 식별하는 페이로드를 발생시킬 수 있다. 그 후, 제2 위치에서의 데이터는 제2 위치를 타겟팅할 수 있는(또는 타겟팅하지 않을 수 있는) 임의의 후속 판독 요청에 앞서 프리-페치될 것이다. 다음 판독 요청이 제2 위치로 향하는 경우, 프리-페치는 히트로 간주될 것이고, 반면에 다음 판독 요청이 상이한 위치로 향하는 경우, 프리-페치는 미스(miss)로 간주될 것이다.In operation, a given controller tracks the hit rate for pre-read attempts made in the context of the enhanced read process (step 1001). The hit rate may relate to the rate at which the pre-fetched data is actually requested by subsequent read requests. For example, an initial read request directed to a first location may generate a payload identifying a second location. The data at the second location will then be pre-fetched prior to any subsequent read request that may (or may not) target the second location. If the next read request is directed to the second location, the pre-fetch will be considered a hit, whereas if the next read request is directed to a different location, the pre-fetch will be considered a miss.

제어기는 프리-페치된 데이터가 후속 판독 요청의 대상이 되는 횟수를 카운트함으로써 프리-페치 동작들의 성공률을 추적할 수 있다. 제어기는 또한 히트 레이트가 주어진 임계치 미만으로 떨어지는지 여부를 분석할 수 있다(단계 1003).The controller may track the success rate of pre-fetch operations by counting the number of times the pre-fetched data is subject to a subsequent read request. The controller may also analyze whether the hit rate has fallen below a given threshold (step 1003).

히트 레이트가 임계치 이상으로 유지되는 경우, 제어기는 선판독 프로세스가 인에이블된 상태로 계속해서 동작할 수 있다. 히트 레이트가 임계치 미만으로 떨어지는 경우, 제어기는 선판독 프로세스를 디스에이블시킨다(단계 1005).If the hit rate remains above the threshold, the controller may continue to operate with the pre-read process enabled. If the hit rate drops below the threshold, the controller disables the read-ahead process (step 1005).

선판독 프로세스를 재인에이블시키기 위해, 제어기는 주기적으로 하나 이상의 다른 조건들을 평가한다(단계 1006). 예를 들어, 선판독은 일정 기간 동안 디스에이블될 수 있고 만료시 자동으로 재인에이블된다. 다른 예에서, 선판독은 배터리 레벨 또는 다른 전력 조건이 충족될 때까지 디스에이블된 상태로 유지될 수 있다. 그 때까지, 제어기는 선판독 프로세스가 디스에이블된 상태로 동작한다.To re-enable the read-ahead process, the controller periodically evaluates one or more other conditions (step 1006). For example, pre-read may be disabled for a period of time and automatically re-enabled upon expiration. In another example, pre-read may remain disabled until a battery level or other power condition is met. Until then, the controller operates with the read-ahead process disabled.

선판독 프로세스를 디스에이블하는 것은, 높은 비율의 미싱된(missed) 선판독 시도들 면에서 전력, 처리 사이클, 또는 다른 자원들을 보존할 수 있다. 조건들의 변화 시에 프로세스를 재인에이블시키는 것은 디바이스가 강화된 선판독의 이점을 회복할 수 있게 한다.Disabling the read-ahead process may conserve power, processing cycles, or other resources in terms of a high rate of missed read-ahead attempts. Re-enabling the process upon changes in conditions allows the device to recover the benefits of enhanced read-ahead.

예시적인 동작 컨텍스트의 물리적 설명: 데이터 저장 시스템Physical Description of Exemplary Action Context: Data Storage System

데이터를 판독하고 기입할 목적으로 호스트(1150)에 접속할 수 있는 고체 상태 드라이들(SSD)들 및/또는 하드 디스크 드라이브(HDD)들 및/또는 하이브리드 SSD-HDD 드라이브들 또는 임의의 다른 유형의 저장 디바이스 또는 이들의 변형 또는 조합과 같은 다중의 데이터 저장 디바이스(DSD)들이 공통 인클로저에 수용될 수 있는 고용량 디지털 데이터 저장 시스템들에 대한 상업적 요구가 있다. 데이터 저장 시스템은 종종 DSD들의 로우(row)들이 장착되는 다수의 선반들을 수용하는 대형 인클로저를 포함한다.Solid state drives (SSDs) and/or hard disk drives (HDDs) and/or hybrid SSD-HDD drives or any other type of storage that can connect to host 1150 for the purpose of reading and writing data. There is a commercial need for high capacity digital data storage systems in which multiple data storage devices (DSDs), such as devices or variations or combinations thereof, can be housed in a common enclosure. A data storage system often includes a large enclosure that houses a number of shelves on which rows of DSDs are mounted.

랜덤 판독 성능이 데이터 저장 디바이스의 성능 제한 인자이고 판독 프로세스에 레이턴시를 도입함으로써 디바이스의 전체 성능에 영향을 미칠 수 있음을 상기한다. 따라서, 다음에 어느 어드레스가 판독될 것을 예측하는 임의의 수단은 시간을 절약할 수 있으며, 이는 전체 디바이스 레이턴시의 감소를 초래할 수 있다. 따라서, 어느 데이터가 다음에 제어기로부터 요청될지를 예측하고 "선판독"(또는 "프리-페치")을 개시하는 방식은 랜덤 판독 성능을 증가시키고 디바이스 레이턴시를 감소시킬 수 있다.Recall that random read performance is a performance limiting factor of data storage devices and can affect the overall performance of the device by introducing latency into the read process. Thus, any means of predicting which address will be read next may save time, which may result in a reduction in overall device latency. Thus, a way of predicting which data will be requested from the controller next and initiating a “pre-read” (or “pre-fetch”) can increase random read performance and reduce device latency.

도 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들의 경우에는 스피닝 자기 디스크 매체의 형태)를 포함한다.11 is a block diagram illustrating a simplified computing system architecture in accordance with an embodiment. An exemplary computing system architecture is a data storage system including a number of data storage devices (DSDs) 1104a (DSD1), 1104b (DSD2), and 1104n (DSDn) (collectively, 1104a-1104n). 1100), where n represents any number of DSDs, which may vary from implementation to implementation. Each DSD 1104a - 1104n communicates with and is under the supervisory control of some supervisory control of the system controller 1102 via a respective communication interface 1114 according to a corresponding communication or interface protocol 1115 . Each DSD 1104a - 1104n has a corresponding non-volatile memory (NVM) 1106 controlled by a respective DSD memory controller 1108 that oversees how data is written to and read from the corresponding NVM 1106 . ) (eg, typically in the form of NAND flash memory in the case of SSDs and spinning magnetic disk media in the case of HDDs).

데이터 저장 시스템(1100)의 시스템 제어기(1102)는 적어도 메모리(1110), 프로세서(1112), 및 판독 큐(1113)를 포함한다. 판독 큐(1113)는 호스트(1150)로부터의 판독 요청들을 수신하고 그리고/또는 이에 의해 채워지고, 여기서, 판독 요청들은 (예를 들어, 논리 블록 어드레스 또는 "LBA" 또는 물리 블록 어드레스 또는 "PBA"를 통해) 요청된 데이터를 획득하거나 판독할 NVM(1106)에서의 위치를 표시할 수 있고, 이에 의해, 대응하는 DSD 제어기(1108)가 주어진 판독 요청에 의해 표시된 적절한 NVM(1106) 메모리 위치로부터 데이터를 페치할 수 있게 한다. 내부적으로 그리고 개별적으로 도시되지만, 판독 큐(1113)는 시스템 제어기(1102)에 대해 외부적으로 또는 내부적으로 구현될 수 있거나, 메모리(1110) 내에서 구현될 수 있다. 다른 요소들, 접속들 등이 시스템 제어기(1102)와 관련될 수 있지만, 명확함을 위해 본 명세서에 도시되지는 않는다는 것이 이해될 수 있다.The system controller 1102 of the data storage system 1100 includes at least a memory 1110 , a processor 1112 , and a read queue 1113 . Read queue 1113 receives and/or fills read requests from host 1150 , where read requests are (eg, logical block address or “LBA” or physical block address or “PBA”) may indicate the location in the NVM 1106 to obtain or read the requested data from, thereby causing the corresponding DSD controller 1108 to obtain data from the appropriate NVM 1106 memory location indicated by the given read request. to be able to fetch Although shown internally and separately, read queue 1113 may be implemented externally or internally to system controller 1102 , or may be implemented within memory 1110 . It may be understood that other elements, connections, etc., may be associated with the system controller 1102 , but are not shown herein for the sake of clarity.

시스템 제어기(1102)에 의해 또는 DSD 메모리 제어기(1108)에 의해 수행되고 있거나 수행 가능한 것으로 본 명세서에 기술되는 처리, 기능들, 절차들, 동작들, 방법 단계들 등은, 하나 이상의 메모리 유닛들에 저장되고, 하나 이상의 프로세서들에 의해 실행될 때 이러한 성능을 야기하는 명령어들의 하나 이상의 시퀀스들의 실행에 의한 조항(enactment)을 포함한다. 시스템 제어기(1102) 및 DSD 제어기(1108)는 소프트웨어, 하드웨어, 및 펌웨어의 임의의 형태 및/또는 조합으로 구현될 수 있다. 예를 들어, 시스템 제어기(1102)는 본 명세서의 다른 곳에 기술된 바와 같이 선판독 능력을 가능하게 하는 (비제한적인 예에 대해, 펌웨어와 같은) 이러한 명령어들을 저장하기 위한 적어도 하나의 메모리 유닛(예를 들어, 메모리(1110)) 및 이러한 명령어들을 실행하기 위한 적어도 하나의 프로세서(예를 들어, 프로세서(1112))를 포함하는 응용 주문형 집적 회로(ASIC)를 포함할 수 있다.The process, functions, procedures, operations, method steps, etc., being performed or described herein as being executable by the system controller 1102 or by the DSD memory controller 1108 may be stored in one or more memory units. stored and comprising the enactment by execution of one or more sequences of instructions that, when executed by one or more processors, result in such performance. System controller 1102 and DSD controller 1108 may be implemented in any form and/or combination of software, hardware, and firmware. For example, the system controller 1102 may include at least one memory unit for storing such instructions (for a non-limiting example, such as firmware) enabling a read-ahead capability as described elsewhere herein. for example, an application specific integrated circuit (ASIC) including memory 1110) and at least one processor (eg, processor 1112) for executing such instructions.

데이터 저장 시스템(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) 등과 같은 (그러나 이에 제한되지 않는) 하나 이상의 인터페이스 프로토콜들을 활용할 수 있다.Data storage system 1100 may be configured on a hardware machine (for non-limiting examples, a computer, hardware server, etc.) on which executable code is executed, or on one or more processors (for non-limiting examples, a storage server, a file server, may be communicatively coupled with host 1150 , which may be implemented as software instructions executable by a software server such as a database server, application server, media server, etc.). Host 1150 generally represents a client of data storage system 1100 and has the ability to make read and write requests (input/output or “IO”) to data storage system 1100 . System controller 1102 may also be referred to as a “host,” as the term is used in reference to a data storage device or any device that makes IO calls to an array of devices, such as DSDs 1104a - 1104n. Because it is often used in general. When the host 1150 communicates with the data storage system 1100 , Serial ATA (SATA), Fiber Channel, Firewire, Serial Attached Small Computer Systems Interface (SAS), ATA/IDE (Advanced Technology Attachment/Integrated) Drive Electronics), Universal Serial Bus (USB), Peripheral Component Interconnect Express (PCIe), etc. may utilize one or more interface protocols, such as, but not limited to.

이전 판독 동작들에 기초하여 메타데이터 힌트들을 사용한 판독 예측Read prediction using metadata hints based on previous read operations

분석에 따르면, 랜덤 판독 로그(log)들은 상당한 양의 반복 패턴을 나타낸다. 일 실시예에 따르면, "선판독"에 대한 하나의 접근법은 현재 판독 어드레스의 메타데이터에서 다음 판독 커맨드 어드레스를 저장하는 것을 수반한다. 이러한 메타데이터 업데이트는, 일 실시예에 따라, 메모리 위치를 판독하고 새로운 값을 그 위치에 원자적 작업으로서 동시에 기입하는 것 모두를 제공하는 종래의 "판독-수정-기입" 동작을 통해 수행될 수 있다. 선판독하기 위한 이러한 접근법은, 도달하는 각각의 판독 커맨드에 대해, 이전 판독 커맨드의 메타데이터를 현재 판독 커맨드의 위치(및 크기)에 대한 표시(예를 들어, "힌트")로 업데이트하는 것을 일반적으로 수반할 수 있다. 그 후, 이러한 정보는 향후 랜덤 판독 커맨드들의 프리-페치를 실행하기 위해 향후에, 즉, 동일한 판독 커맨드를 수신할 때 사용될 수 있다. 따라서, 서비스 품질(QoS) 파라미터가 상당히 개선될 수 있다. 즉, 커맨드 실행 레이턴시의 맥락에서(예를 들어, 완료 포스팅을 통한 커맨드 도달로부터), 선판독 예측 히트 레이트가 높은 경우, 커맨드 실행의 레이턴시는 시간 상 앞선 매체로부터의 판독으로 인해 감소된다. 따라서, 커맨드 실행 레이턴시의 형태에서와 같은 QoS는, 예를 들어, 호스트가 한 번에 디바이스에 단지 몇 개(예를 들어, 최대 8까지)의 두드러진 커맨드들만을 송신하는 낮은 큐 깊이 시나리오들에서 특히 주목할 만한 파라미터이다.According to the analysis, the random read logs exhibit a significant amount of repeating patterns. According to one embodiment, one approach to "read ahead" involves storing the next read command address in the metadata of the current read address. This metadata update may be performed via a conventional "read-modify-write" operation that provides both reading a memory location and writing a new value to that location concurrently as an atomic operation, according to one embodiment. there is. This approach to pre-reading generally involves, for each read command that arrives, updating the metadata of the previous read command with an indication (eg, a “hint”) about the location (and size) of the current read command. can be accompanied by This information can then be used in the future, ie when receiving the same read command, to execute a pre-fetch of future random read commands. Accordingly, the quality of service (QoS) parameter can be significantly improved. That is, in the context of command execution latency (eg, from command arrival via completion posting), if the read-ahead prediction hit rate is high, the latency of command execution is reduced due to reading from the medium ahead in time. Thus, QoS, such as in the form of command execution latency, is particularly important in low queue depth scenarios, for example, where the host sends only a few (eg, up to 8) salient commands to the device at a time. This is a notable parameter.

도 12는 일 실시예에 따른 판독 시간을 감소시키는 접근법을 예시하는 블록도이다. 예를 들어, 이러한 프로세스는 멀티-애플리케이션 및/또는 멀티-호스트 메모리 시스템 환경에서 구현될 수 있다. 이러한 접근법 또는 동작은 2 개의 프로세스들: (i) 랜덤 판독 동작들 아래에 놓인 패턴들을 찾거나 식별하는 것, 프로세스들 사이를 구별하는 것, 및 (ii) 데이터/메타데이터를 예측 및 업데이트하는 것을 포함하도록 구현될 수 있다.12 is a block diagram illustrating an approach to reducing read time in accordance with one embodiment. For example, such a process may be implemented in a multi-application and/or multi-host memory system environment. This approach or operation involves two processes: (i) finding or identifying patterns underlying random read operations, distinguishing between the processes, and (ii) predicting and updating data/metadata. It can be implemented to include

도 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에 대해, 대응하는 판독 패턴이 결정되거나 식별된다.12 illustrates a read queue 1113 in which a number of host read requests or commands are placed or temporarily stored awaiting processing. For example, a series of received read requests (“read n”, “read n+1” through “read n+x”) are shown in read queue 1113 , where n is the next represents a read request (ie, at the top of the queue), and x represents any number of read requests that are being held in the read queue 1113 at any given time. According to one embodiment, repeating the current read request (“read n”) (labeled process 1202 ) is where the request (“read n”) originates (eg, the host ( classifying read patterns at block 1203 from the set of read requests processed from the read queue 1113 based on an application identifier (“ID”) that identifies the application (executing on 1150 ). For example, controller 1102 (FIG. 11) can maintain a table of current application IDs that are active, and in response to an incoming read request associated with a given application ID, controller 1102 can display the next read associated with that application ID. Monitor read queue 1113 for requests (“read n+1”). Accordingly, at block 1204, for each application ID, a corresponding read pattern is determined or identified.

블록(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)를 업데이트해야 하는 것과 연관된 성능 히트를 회피한다.From the read requests identified at block 1204 , any write requests according to an embodiment (eg, as read requests and write requests are often considered separately in the context of a system performance capability/metric); Excluding commands, or pattern(s), at block 1205 , the next read request is predicted (prediction of “read n+1”). From there, based on the prediction of the next read request of block 1205 , at block 1206 , metadata 1207 corresponding to the “read n” read request, including the next storage address corresponding to “read n+1”. ) is pushed or stored in NVM 1106 . That is, the metadata 1207 in the NVM 1106 corresponding to the “read n” request is updated with the next data storage address obtained from the next read request, ie, the “read n+1” request. As discussed and in accordance with one embodiment, such as responding to processing a “read n+1” request from read queue 1113 rather than responding to a host write command, at block 1206 , “read-modify- A "write" operation is utilized to push a "read n" metadata update to the NVM 1106 . Thus, while adding "extra" write operations, the resulting benefits appear for future read performance. Moreover and according to one embodiment, the next data storage address updated in metadata 1207 corresponding to a "read n" request is a logical address (eg, LBA) rather than a physical address (eg, PBA), Avoids the performance hit associated with having to update metadata 1207 in NVM 1106 during garbage collection.

따라서, 상술한 바에 기초하여, 다른 "판독 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"만의 다음 저장 어드레스를 포함하도록 업데이트된다.Thus, based on the above, whenever another "read n" read request is processed by the controller 1102 (FIG. 11), the storage location (eg, "read n+1") of the next read request ("read n+1") A "hint" or prediction of the storage address) is available from the metadata 1207 associated with "read n", the "read n+1" data being retrieved from the NVM 1106 (FIG. 11) prior to processing a subsequent read request. can be pre-fetched from Thus, if the prediction based on the read patterns is correct, then the data corresponding to the next read request, which is expected to be "read n+1", is already available to the controller 1102 without having to execute a response read command at that time. . According to one embodiment, given read requests classified based on their respective application IDs (at block 1203 ), metadata 1207 in NVM 1106 corresponding to “read n” is “ It is updated to include the next storage address of only "read n+1" in response to both "read n+1" corresponding to read n" and the same application ID.

일 실시예에 따르면, 정확한 데이터일 가능성이 높은 이전의 "판독 n+1"로부터 식별된 NVM(1106)의 다음 저장 위치로부터의 "다음 데이터"(1209)는 판독 큐(1113)에 대응하는 유휴(1208) 처리 시간의 발생에 응답하여 페치된다. 관련된 실시예에 따르면, 유휴(1208) 시간 동안 프리-페치되는 것과 같은, 예측된 다음 판독 요청 "판독 n+1"에 대한 다음 데이터(1209)는 블록(1210)에서, 캐시 버퍼(1211)에 배치되거나 저장된다(예를 들어, 메모리(1110) 내에서 구현될 수 있다). 따라서, 다음 판독 요청 "판독 n+1"에 대응하는 데이터는, 다음 판독 요청 "판독 n+1"을 다시 수신하는 것에 응답하여 판독 커맨드를 실행할 필요 없이 캐시 버퍼(1211)에서 이미 이용 가능하며, 따라서 캐시 버퍼(1211)로부터 호스트(1150)(도 11)로 직접 반환될 수 있다.According to one embodiment, the "next data" 1209 from the next storage location of the NVM 1106 identified from the previous "read n+1" which is likely to be correct data is idle corresponding to the read queue 1113 . (1208) Fetched in response to the occurrence of processing time. According to a related embodiment, the next data 1209 for the predicted next read request “read n+1”, such as pre-fetched during the idle 1208 time, is stored in the cache buffer 1211 at block 1210 , according to a related embodiment. disposed or stored (eg, implemented within memory 1110 ). Thus, the data corresponding to the next read request "read n+1" is already available in the cache buffer 1211 without the need to execute a read command in response to receiving the next read request "read n+1" again; Therefore, it can be returned directly from the cache buffer 1211 to the host 1150 (FIG. 11).

다수의 애플리케이션 ID들에 대한 상술한 절차를 유지하기 위해, 구현 아키텍처의 문제로서, 각각의 트랙커가 대응하는 "선판독" 요청들 및/또는 메타데이터 업데이트들뿐만 아니라 그 자체의 애플리케이션 ID 및 대응하는 인커밍 판독 요청들을 처리할 수 있도록 여러 "트랙커" 프로세스들 또는 처리 스레드들을 유지하는 것이 바람직하다.In order to maintain the above procedure for multiple application IDs, as a matter of implementation architecture, each tracker has its own application ID and corresponding corresponding "read-ahead" requests and/or metadata updates, as well as It is desirable to maintain several “tracker” processes or processing threads to be able to handle incoming read requests.

데이터를 프리-페치하는 방법How to pre-fetch data

도 13은 일 실시예에 따른 데이터를 프리-페치하는 방법을 예시하는 흐름도이다. 도 13의 프로세스 또는 절차는, 하나 이상의 메모리 유닛들에 저장되고, 하나 이상의 프로세서들에 의해 실행될 때, 프로세스의 수행을 야기하는 명령어들의 하나 이상의 시퀀스들로서 실행을 위해 구현될 수 있다. 예를 들어, 하나 이상의 메모리 유닛들(예를 들어, 도 11의 메모리(1110), 또는 펌웨어에 고유한 판독 전용 메모리(ROM))에 저장된 명령어들의 시퀀스들은, 하나 이상의 프로세서들(예를 들어, 도 11의 시스템 제어기(1102)의 프로세서(1112))에 의해 실행될 때, 도 13에 예시된 프로세스를 수행할 수 있고 그리고/또는 그 프로세스의 수행을 야기할 수 있다.13 is a flowchart illustrating a method of pre-fetching data according to an embodiment. The process or procedure of FIG. 13 may be implemented for execution as one or more sequences of instructions that are stored in one or more memory units and, when executed by one or more processors, result in execution of the process. For example, sequences of instructions stored in one or more memory units (eg, memory 1110 of FIG. 11 , or read-only memory (ROM) specific to firmware) may be executed by one or more processors (eg, When executed by the processor 1112 of the system controller 1102 of FIG. 11 ) may perform and/or cause performance of the process illustrated in FIG. 13 .

블록(1302)에서, 판독 요청이 호스트로부터 수신되고, 여기서 판독 요청은 대응하는 데이터 저장 어드레스를 포함하고, 판독 요청은 판독 큐에 배치된다. 예를 들어, 판독 요청 "판독 n"(도 12)이 호스트(1150)(도 11)로부터 판독 큐(1113)(도 11 및 도 12)로 수신된다.At block 1302, a read request is received from a host, wherein the read request includes a corresponding data storage address and the read request is placed in a read queue. For example, a read request “read n” (FIG. 12) is received from host 1150 (FIG. 11) to read queue 1113 (FIG. 11 and FIG. 12).

블록(1304)에서, 다음 판독 요청이 호스트로부터 수신되고, 다음 판독 요청은 대응하는 다음 데이터 저장 어드레스를 포함하고, 다음 판독 요청은 판독 큐에 배치된다. 예를 들어, 판독 요청 "판독 n+1"(도 12)이 호스트(1150)로부터 판독 큐(1113)로 수신된다.At block 1304 , a next read request is received from the host, the next read request includes a corresponding next data storage address, and the next read request is placed in a read queue. For example, a read request “read n+1” ( FIG. 12 ) is received from host 1150 into read queue 1113 .

블록(1306)에서, 판독 요청에 대응하는 메타데이터는 다음 판독 요청으로부터의 다음 데이터 저장 어드레스로 비휘발성 메모리에서 업데이트된다. 예를 들어, 판독 요청 "판독 n"에 대응하는 메타데이터(1207)는 다음 판독 요청 "판독 n+1"로부터의 다음 데이터 저장 어드레스로 NVM(1106)에서 업데이트된다.At block 1306 , the metadata corresponding to the read request is updated in the non-volatile memory with the next data storage address from the next read request. For example, the metadata 1207 corresponding to the read request “read n” is updated in the NVM 1106 with the next data storage address from the next read request “read n+1”.

블록(1308)에서, 호스트로부터 판독 요청을 다시 수신하는 것에 응답하여, 판독 요청에 대응하는 메타데이터로부터의 다음 데이터 저장 어드레스는 비휘발성 메모리로부터 판독된다. 예를 들어, 호스트(1150)로부터 판독 요청 "판독 n"을 다시 수신하는 것에 응답하여, 판독 요청 "판독 n"에 대응하는 메타데이터(1207)(도 12)로부터의 다음 데이터 저장 어드레스는 NVM(1106)으로부터 판독된다.At block 1308 , in response to again receiving the read request from the host, the next data storage address from the metadata corresponding to the read request is read from the non-volatile memory. For example, in response to again receiving the read request "read n" from the host 1150, the next data storage address from the metadata 1207 (FIG. 12) corresponding to the read request "read n" is the NVM ( 1106).

블록(1310)에서, 다음 데이터 저장 어드레스로부터의 다음 데이터가 판독 큐로부터 후속하는 판독 요청을 처리하기 이전에 페치된다. 예를 들어, 블록(1308)에서 NVM(1106)으로부터 판독된 바와 같이 다음 데이터 저장 어드레스로부터의 다음 데이터가, 판독 큐로부터 후속하는 판독 요청을 처리하기 이전에, 즉, 후속하는 판독 요청이 예측된 바와 같이 실제로 판독 요청 "판독 n+1"일 것이라는 것을 예상하고 페치된다.At block 1310, the next data from the next data storage address is fetched from the read queue prior to processing a subsequent read request. For example, at block 1308 , the next data from the next data storage address as read from the NVM 1106 is from the read queue prior to processing a subsequent read request, ie, the subsequent read request was predicted. It is fetched with the expectation that it will actually be a read request "read n+1"

도 14은 일 실시예에 따른 판독 큐에 데이터를 프리-페치하는 방법을 예시하는 흐름도이다. 도 13에서 같이, 도 14의 프로세스 또는 절차는, 하나 이상의 메모리 유닛들에 저장되고, 하나 이상의 프로세서들에 의해 실행될 때, 프로세스의 수행을 야기하는 명령어들의 하나 이상의 시퀀스들로서 실행을 위해 구현될 수 있다. 예를 들어, 하나 이상의 메모리 유닛들(예를 들어, 도 11의 메모리(1110), 또는 펌웨어에 고유한 판독 전용 메모리(ROM))에 저장된 명령어들의 시퀀스들은, 하나 이상의 프로세서들(예를 들어, 도 11의 시스템 제어기(1102)의 프로세서(1112))에 의해 실행될 때, 도 14에 예시된 프로세스를 수행할 수 있고 그리고/또는 그 프로세스의 수행을 야기할 수 있고, 이는 도 13의 프로세스에 대한 선택적인 계속 및/또는 확대 프로세스로서 이해될 수 있다.14 is a flow diagram illustrating a method of pre-fetching data into a read queue according to one embodiment. 13 , the process or procedure of FIG. 14 may be implemented for execution as one or more sequences of instructions stored in one or more memory units, and when executed by one or more processors, result in execution of the process. . For example, sequences of instructions stored in one or more memory units (eg, memory 1110 of FIG. 11 , or read-only memory (ROM) specific to firmware) may be executed by one or more processors (eg, When executed by the processor 1112 of the system controller 1102 of FIG. 11 ) may perform and/or cause performance of the process illustrated in FIG. 14 , which may correspond to the process of FIG. 13 . It may be understood as an optional continuation and/or escalation process.

블록(1402)에서, 판독 큐와 연관되거나 그에 대응하는 유휴 처리 시간의 발생에 응답하여, 다음 데이터 저장 어드레스로부터의 다음 데이터가 페치된다. 예를 들어, NVM(1106)으로부터 판독된 바와 같이, 다음 데이터 저장 어드레스로부터의 다음 데이터는 판독 큐(1113)에서의 후속하는 판독 요청이 예측된 바와 같이 판독 요청 "판독 n+1"이라는 것을 예상하고, 유휴 시간 동안 NVM(1106)으로부터 페치된다.At block 1402, in response to the occurrence of an idle processing time associated with or corresponding to the read queue, the next data from the next data storage address is fetched. For example, the next data from the next data storage address, as read from the NVM 1106 , expects the subsequent read request in the read queue 1113 to be a read request “read n+1” as expected. and fetched from NVM 1106 during idle time.

블록(1404)에서, 다음 데이터 저장 어드레스로부터의 다음 데이터는 캐시 버퍼에 배치된다. 예를 들어, 판독 요청 "판독 n"과 연관된 메타데이터(1207)로부터의 (원래 판독 요청 "판독 n+1"로부터의) 다음 데이터 저장 어드레스에 기초하여, 블록(1402)에서 페치되었던 다음 데이터가 캐시 버퍼(1211)에 저장된다.At block 1404, the next data from the next data storage address is placed in the cache buffer. For example, based on the next data storage address (from the original read request “read n+1”) from the metadata 1207 associated with the read request “read n”, the next data that was fetched at block 1402 is It is stored in the cache buffer 1211 .

블록(1406)에서, 호스트로부터 다음 판독 요청을 다시 수신하는 것에 응답하여, 다음 데이터는 캐시 버퍼(1211)로부터 호스트로 반환된다. 예를 들어, 호스트(1150)로부터 다음 판독 요청 "판독 n+1"을 다시 수신하는 것에 응답하여, 다음 데이터는 캐시 버퍼(1211)로부터 판독되고 호스트(1150)로 반환된다.At block 1406 , in response to again receiving the next read request from the host, the next data is returned from the cache buffer 1211 to the host. For example, in response to again receiving the next read request “read n+1” from the host 1150 , the next data is read from the cache buffer 1211 and returned to the host 1150 .

이러한 강화된 선판독 기술은 전술한 설명 및 예시로부터 명백할 수 있는 바와 같은 다양한 기술적 이점들을 제공한다. 예를 들어, 예측된 다음 판독 요청에 앞서, 데이터를 프리-페치하는 것은 판독 속도를 증가시킨다 이는 그들의 데이터가 매체 상에 분산되어 있기 때문에 완료되는데 더 긴 시간량을 취하는 랜덤 판독의 경우에 특히 유익할 수 있다.This enhanced read-ahead technique provides various technical advantages as may be apparent from the foregoing description and examples. For example, pre-fetching data prior to the next predicted read request increases the read speed. This is particularly beneficial in the case of random reads that take a longer amount of time to complete because their data is spread across the medium. can do.

본 기술분야의 통상의 기술자가 이해하는 바와 같이, 본 발명의 양태들은 시스템, 방법, 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 발명의 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함), 또는 소프트웨어 양태와 하드웨어 양태를 조합한 실시예의 형태를 취할 수 있는데, 이들은 모두 일반적으로 본 명세서에서 "회로", "모듈", 또는 "시스템"으로 지칭될 수 있다. 더욱이, 본 발명의 양태들은 컴퓨터 판독 가능 프로그램 코드가 수록된 하나 이상의 컴퓨터 판독 가능 매체(들)에 수록된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.As will be understood by one of ordinary skill in the art, aspects of the present invention may be embodied as a system, method, or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, all of which are generic. may be referred to herein as a “circuit”, “module”, or “system”. Moreover, aspects of the invention may take the form of a computer program product embodied on one or more computer readable medium(s) having computer readable program code embodied thereon.

포함된 설명들 및 도면들은 당업자에게 최상의 모드를 만들고 사용하는 방법을 교시하기 위해 특정 실시예들을 묘사한다. 본 발명의 원리들을 교시하기 위해, 일부 종래의 양태들은 단순화되거나 생략되었다. 당업자는 본 개시의 범주 내에 속하는 이들 실시예들로부터의 변형들을 이해할 것이다. 당업자는 전술된 특징부들이 다양한 방식으로 조합되어 다수의 실시예들을 형성할 수 있다는 것을 이해할 것이다. 결과적으로, 본 발명은 전술된 특정 실시예들로 제한되는 것이 아니라, 청구항들 및 이들의 등가물들에 의해서만 제한된다.The included descriptions and drawings depict specific embodiments to teach those skilled in the art how to make and use the best mode. In order to teach the principles of the present invention, some conventional aspects have been simplified or omitted. Those skilled in the art will appreciate variations from these embodiments that fall within the scope of the present disclosure. Those skilled in the art will appreciate that the features described above may be combined in various ways to form multiple embodiments. Consequently, the present invention is not limited to the specific embodiments described above, but only by the claims and their equivalents.

Claims (20)

전자 디바이스로서,
비휘발성 저장 매체;
판독 큐; 및
상기 비휘발성 저장 매체에 결합되고,
호스트로부터 대응하는 데이터 저장 어드레스를 포함하는 판독 요청을 수신하며, 상기 판독 요청을 상기 판독 큐에 배치하고;
상기 호스트로부터 대응하는 다음 데이터 저장 어드레스를 포함하는 다음 판독 요청을 수신하며, 상기 다음 판독 요청을 상기 판독 큐에 배치하며; 그리고
상기 비휘발성 저장 매체에서의 상기 판독 요청에 대응하는 메타데이터를 상기 다음 판독 요청으로부터의 상기 다음 데이터 저장 어드레스로 업데이트
하도록 구성된
제어 회로를 포함하는, 전자 디바이스.
An electronic device comprising:
non-volatile storage media;
read queue; and
coupled to the non-volatile storage medium;
receive a read request comprising a corresponding data storage address from a host, and place the read request in the read queue;
receive a next read request including a corresponding next data storage address from the host, and place the next read request in the read queue; And
update metadata corresponding to the read request in the non-volatile storage medium to the next data storage address from the next read request
configured to
An electronic device comprising a control circuit.
제1항에 있어서, 상기 제어 회로는: 상기 호스트로부터 상기 판독 요청을 다시 수신하는 것에 응답하여,
상기 판독 요청에 대응하는 상기 메타데이터로부터의 상기 다음 데이터 저장 어드레스를 상기 비휘발성 저장 매체로부터 판독하며; 그리고
후속하는 판독 요청을 처리하기 앞서 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 페치
하도록 더 구성되는, 전자 디바이스.
The method of claim 1 , wherein the control circuitry is configured to: in response to again receiving the read request from the host,
read the next data storage address from the metadata corresponding to the read request from the non-volatile storage medium; And
Fetch the next data from the next data storage address prior to processing a subsequent read request.
An electronic device further configured to:
제1항에 있어서, 상기 제어 회로는 상기 판독 큐에 대응하는 유휴 처리 시간의 발생에 응답하여 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 페치하도록 더 구성되는, 전자 디바이스.The electronic device of claim 1 , wherein the control circuitry is further configured to fetch next data from the next data storage address in response to occurrence of an idle processing time corresponding to the read queue. 제1항에 있어서, 상기 비휘발성 저장 매체에서의 상기 판독 요청에 대응하는 상기 메타데이터의 상기 업데이트는, 기입 요청을 제외하고, 상기 다음 판독 요청에 기초하며 상기 다음 판독 요청에 응답하는, 전자 디바이스.The electronic device of claim 1 , wherein the update of the metadata corresponding to the read request in the non-volatile storage medium is based on and responsive to the next read request, except for a write request. . 제1항에 있어서, 상기 판독 요청에 대응하는 메타데이터에서 업데이트된 상기 다음 데이터 저장 어드레스는 상기 다음 판독 요청에 대응하는 논리 블록 어드레스(LBA)인, 전자 디바이스.The electronic device according to claim 1, wherein the next data storage address updated in the metadata corresponding to the read request is a logical block address (LBA) corresponding to the next read request. 제1항에 있어서, 상기 제어 회로는 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 캐시 버퍼에 배치하도록 더 구성되는, 전자 디바이스.The electronic device of claim 1 , wherein the control circuit is further configured to place next data from the next data storage address into a cache buffer. 제6항에 있어서, 상기 제어 회로는 상기 호스트로부터 상기 다음 판독 요청을 다시 수신하는 것에 응답하여, 상기 캐시 버퍼로부터 상기 다음 데이터를 상기 호스트에 반환하도록 더 구성되는, 전자 디바이스.The electronic device of claim 6 , wherein the control circuit is further configured to return the next data from the cache buffer to the host in response to receiving back the next read request from the host. 제1항에 있어서, 상기 메타데이터를 업데이트하는 것은, 판독-수정-기입 커맨드를 활용하여 상기 다음 데이터 저장 어드레스를 상기 비휘발성 저장 매체에 기입하는 것을 포함하는, 전자 디바이스.The electronic device of claim 1 , wherein updating the metadata comprises writing the next data storage address to the non-volatile storage medium utilizing a read-modify-write command. 제1항에 있어서, 상기 제어 회로는 판독 요청들 각각에 대응하는 애플리케이션 식별자에 기초하여 하나 이상의 호스트들로부터 상기 판독 요청들을 분류하도록 더 구성되며;
상기 다음 데이터 저장 어드레스로 상기 비휘발성 저장 매체에서 상기 판독 요청에 대응하는 상기 메타데이터를 업데이트하는 것은, 동일한 애플리케이션 식별자에 대응하는 판독 요청과 다음 판독 요청 양측에만 응답하는, 전자 디바이스.
The method of claim 1 , wherein: the control circuit is further configured to classify the read requests from one or more hosts based on an application identifier corresponding to each of the read requests;
and updating the metadata corresponding to the read request in the non-volatile storage medium with the next data storage address responds only to both a read request corresponding to the same application identifier and a next read request.
제9항에 있어서, 상기 제어 회로는 각각의 애플리케이션 식별자에 대응하는 판독 요청들에 대응하는 상기 메타데이터를 업데이트하기 위해 각각의 상이한 애플리케이션 식별자에 대응하는 각각의 트랙커 프로세스를 실행하도록 더 구성되는, 저장 디바이스.10. The storage according to claim 9, wherein the control circuit is further configured to execute a respective tracker process corresponding to each different application identifier to update the metadata corresponding to read requests corresponding to each application identifier. device. 제1항에 있어서, 상기 장치는 데이터 저장 디바이스인, 전자 디바이스.The electronic device of claim 1 , wherein the apparatus is a data storage device. 방법으로서,
호스트로부터 대응하는 데이터 저장 어드레스를 포함하는 판독 요청을 수신하며, 상기 판독 요청을 판독 큐에 배치하는 단계;
상기 호스트로부터 대응하는 다음 데이터 저장 어드레스를 포함하는 다음 판독 요청을 수신하며, 상기 다음 판독 요청을 상기 판독 큐에 배치하는 단계; 및
비휘발성 저장 매체에서의 상기 판독 요청에 대응하는 메타데이터를 상기 다음 판독 요청으로부터의 상기 다음 데이터 저장 어드레스에 대응하는 논리 어드레스로 업데이트하는 단계
를 포함하는, 방법
As a method,
receiving a read request comprising a corresponding data storage address from a host and placing the read request in a read queue;
receiving a next read request comprising a corresponding next data storage address from the host and placing the next read request in the read queue; and
updating metadata corresponding to the read request in a non-volatile storage medium with a logical address corresponding to the next data storage address from the next read request;
a method comprising
제12항에 있어서, 상기 호스트로부터 상기 판독 요청을 다시 수신하는 것에 응답하여,
상기 판독 요청에 대응하는 상기 메타데이터로부터의 상기 다음 데이터 저장 어드레스를 상기 비휘발성 저장 매체로부터 판독하는 단계; 및
후속하는 판독 요청을 처리하기 앞서 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 페치하는 단계
를 더 포함하는, 방법.
13. The method of claim 12, wherein in response to receiving the read request back from the host,
reading the next data storage address from the metadata corresponding to the read request from the non-volatile storage medium; and
fetching the next data from the next data storage address prior to processing a subsequent read request;
A method further comprising:
제12항에 있어서, 상기 판독 큐에 대응하는 유휴 처리 시간의 발생에 응답하여 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 페치하는 단계를 더 포함하는, 방법.13. The method of claim 12, further comprising fetching next data from the next data storage address in response to the occurrence of an idle processing time corresponding to the read queue. 제12항에 있어서, 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 캐시 버퍼에 배치하는 단계를 더 포함하는, 방법.13. The method of claim 12, further comprising placing next data from the next data storage address into a cache buffer. 제15항에 있어서, 상기 호스트로부터 상기 다음 판독 요청을 다시 수신하는 것에 응답하여, 상기 캐시 버퍼로부터 상기 다음 데이터를 상기 호스트에 반환하는 단계를 더 포함하는, 방법.16. The method of claim 15, further comprising returning the next data from the cache buffer to the host in response to again receiving the next read request from the host. 제12항에 있어서, 상기 메타데이터를 업데이트하는 단계는 판독-수정-기입 커맨드를 활용하여 상기 다음 데이터 저장 어드레스에 대응하는 논리 어드레스를 상기 비휘발성 스토리지에 기입하는 단계를 포함하는, 방법.13. The method of claim 12, wherein updating the metadata comprises utilizing a read-modify-write command to write a logical address corresponding to the next data storage address to the non-volatile storage. 제12항에 있어서, 판독 요청들 각각에 대응하는 애플리케이션 식별자에 기초하여 하나 이상의 호스트들로부터 상기 판독 요청들을 분류하는 단계를 더 포함하며;
상기 판독 요청에 대응하는 상기 메타데이터를 업데이트하는 단계는, 동일한 애플리케이션 식별자에 대응하는 판독 요청과 다음 판독 요청 양측에만 응답하여 수행되는, 방법.
13. The method of claim 12, further comprising: classifying the read requests from one or more hosts based on an application identifier corresponding to each of the read requests;
and updating the metadata corresponding to the read request is performed only in response to both a read request corresponding to the same application identifier and a next read request.
제18항에 있어서, 각각의 애플리케이션 식별자에 대응하는 판독 요청들에 대응하는 상기 메타데이터를 업데이트하기 위해 각각의 상이한 애플리케이션 식별자에 대응하는 각각의 트랙커 프로세스를 실행하는 단계를 더 포함하는, 방법.19. The method of claim 18, further comprising executing a respective tracker process corresponding to each different application identifier to update the metadata corresponding to read requests corresponding to each application identifier. 컴퓨팅 시스템으로서,
호스트로부터 대응하는 데이터 저장 어드레스를 포함하는 판독 요청을 수신하며, 상기 판독 요청을 판독 큐에 배치하는 수단;
상기 호스트로부터 대응하는 다음 데이터 저장 어드레스를 포함하는 다음 판독 요청을 수신하며, 상기 다음 판독 요청을 상기 판독 큐에 배치하는 수단;
비휘발성 저장 매체에서의 상기 판독 요청에 대응하는 메타데이터를 상기 다음 판독 요청으로부터의 상기 다음 데이터 저장 어드레스로 업데이트하는 수단;
상기 호스트로부터 상기 판독 요청을 다시 수신하는 것에 응답하여,
상기 판독 요청에 대응하는 상기 메타데이터로부터의 상기 다음 데이터 저장 어드레스를 상기 비휘발성 저장 매체로부터 판독하며;
후속하는 판독 요청을 처리하기 앞서 상기 다음 데이터 저장 어드레스로부터의 다음 데이터를 페치하는 수단
을 포함하는, 컴퓨팅 시스템.
A computing system comprising:
means for receiving a read request comprising a corresponding data storage address from a host and placing the read request in a read queue;
means for receiving a next read request comprising a corresponding next data storage address from the host and placing the next read request in the read queue;
means for updating metadata corresponding to the read request in a non-volatile storage medium with the next data storage address from the next read request;
in response to receiving the read request back from the host,
read the next data storage address from the metadata corresponding to the read request from the non-volatile storage medium;
means for fetching the next data from the next data storage address prior to processing a subsequent read request
A computing system comprising:
KR1020210082734A 2020-09-10 2021-06-24 Enhanced read-ahead capability for storage devices Active KR102692838B1 (en)

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 (2)

Publication Number Publication Date
KR20220033976A true KR20220033976A (en) 2022-03-17
KR102692838B1 KR102692838B1 (en) 2024-08-06

Family

ID=80476325

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210082734A Active KR102692838B1 (en) 2020-09-10 2021-06-24 Enhanced read-ahead capability for storage devices

Country Status (3)

Country Link
JP (1) JP7170093B2 (en)
KR (1) KR102692838B1 (en)
CN (1) CN114168495B (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114842896B (en) * 2022-05-05 2025-07-22 合肥兆芯电子有限公司 Write control method based on write behavior prediction, storage device and control circuit
CN119443194B (en) * 2025-01-08 2025-07-11 中昊芯英(杭州)科技有限公司 Data processing device, method and related equipment

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130138867A1 (en) * 2011-11-30 2013-05-30 International Business Machines Corporation Storing Multi-Stream Non-Linear Access Patterns in a Flash Based File-System
US20160070647A1 (en) * 2014-09-09 2016-03-10 Kabushiki Kaisha Toshiba Memory system
KR20170014496A (en) * 2015-07-30 2017-02-08 에스케이하이닉스 주식회사 Memory system and operation method for the same
US20190384529A1 (en) * 2018-06-19 2019-12-19 Western Digital Technologies, Inc. Enhanced read-ahead capability for storage devices
KR20200030325A (en) * 2018-09-12 2020-03-20 삼성전자주식회사 Storage device and system

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3973597B2 (en) * 2003-05-14 2007-09-12 株式会社ソニー・コンピュータエンタテインメント Prefetch instruction control method, prefetch instruction control device, cache memory control device, object code generation method and device
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
JP2009301595A (en) * 2008-06-10 2009-12-24 Hitachi Ltd Disk drive and its recording method
US8327077B2 (en) * 2009-11-13 2012-12-04 International Business Machines Corporation Method and apparatus of parallel computing with simultaneously operating stream prefetching and list prefetching engines
JP5296041B2 (en) * 2010-12-15 2013-09-25 株式会社東芝 Memory system and memory system control method
WO2012140813A1 (en) * 2011-04-14 2012-10-18 パナソニック株式会社 Data transfer device
KR20140028618A (en) * 2012-08-29 2014-03-10 삼성전자주식회사 Memory device for reducimg write fail, system includinmg tha same, and method there-of
US9110677B2 (en) * 2013-03-14 2015-08-18 Sandisk Technologies Inc. System and method for predicting and improving boot-up sequence
KR102453193B1 (en) * 2013-05-16 2022-10-11 어드밴스드 마이크로 디바이시즈, 인코포레이티드 Memory system with region-specific memory access scheduling
US9223706B2 (en) * 2013-07-02 2015-12-29 Infinidat Ltd. System, method and a non-transitory computer readable medium for a pre-fetch operation
US9632947B2 (en) * 2013-08-19 2017-04-25 Intel Corporation Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
CN104679480A (en) * 2013-11-27 2015-06-03 上海芯豪微电子有限公司 Instruction set transition system and method
US9740621B2 (en) * 2014-05-21 2017-08-22 Qualcomm Incorporated Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
WO2017017842A1 (en) * 2015-07-30 2017-02-02 株式会社日立製作所 Memory control device, storage device, and memory write method
US9904635B2 (en) * 2015-08-27 2018-02-27 Samsung Electronics Co., Ltd. High performance transaction-based memory systems
US10866897B2 (en) * 2016-09-26 2020-12-15 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer
CN110352410B (en) * 2016-09-29 2023-01-20 华睿泰科技有限责任公司 Tracking access patterns of index nodes and pre-fetching index nodes
JP6677627B2 (en) * 2016-12-20 2020-04-08 株式会社ソニー・インタラクティブエンタテインメント Information processing apparatus and memory access method
JP2018120346A (en) * 2017-01-24 2018-08-02 日本電気株式会社 Information processing system and control method of information processing system
CN107038125B (en) * 2017-04-25 2020-11-24 上海兆芯集成电路有限公司 Processor cache with independent pipeline to accelerate prefetch requests
EP3425165B1 (en) * 2017-07-05 2022-08-31 General Electric Technology GmbH Mechanical component
JP2019204150A (en) * 2018-05-21 2019-11-28 日本電信電話株式会社 Input-output apparatus for communication
US10649776B2 (en) * 2018-06-29 2020-05-12 Western Digital Technologies, Inc. System and method for prediction of multiple read commands directed to non-sequential data
US11061591B2 (en) * 2018-11-02 2021-07-13 Samsung Electronics Co., Ltd. Storage device processing stream data, system including the same, and operation method thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130138867A1 (en) * 2011-11-30 2013-05-30 International Business Machines Corporation Storing Multi-Stream Non-Linear Access Patterns in a Flash Based File-System
US20160070647A1 (en) * 2014-09-09 2016-03-10 Kabushiki Kaisha Toshiba Memory system
KR20170014496A (en) * 2015-07-30 2017-02-08 에스케이하이닉스 주식회사 Memory system and operation method for the same
US20190384529A1 (en) * 2018-06-19 2019-12-19 Western Digital Technologies, Inc. Enhanced read-ahead capability for storage devices
KR20200030325A (en) * 2018-09-12 2020-03-20 삼성전자주식회사 Storage device and system

Also Published As

Publication number Publication date
JP7170093B2 (en) 2022-11-11
CN114168495A (en) 2022-03-11
JP2022046413A (en) 2022-03-23
CN114168495B (en) 2025-09-23
KR102692838B1 (en) 2024-08-06

Similar Documents

Publication Publication Date Title
US11188256B2 (en) Enhanced read-ahead capability for storage devices
US11449428B2 (en) Enhanced read-ahead capability for storage devices
US8590001B2 (en) Network storage system with data prefetch and method of operation thereof
US20150143045A1 (en) Cache control apparatus and method
US20150356019A1 (en) Dynamic cache allocation policy adaptation in a data processing apparatus
US8762628B2 (en) Information processing apparatus and cache method
KR20150028610A (en) Storage device and data porcessing method thereof
CN107797759B (en) Method, device and driver for accessing cache information
CN107797760B (en) Method and device for accessing cache information and solid-state drive
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
CN113407119A (en) Data prefetching method, data prefetching device and processor
CN115793978A (en) Data reading method of solid-state hard disk, solid-state hard disk controller, and solid-state hard disk
KR102692838B1 (en) Enhanced read-ahead capability for storage devices
CN117032595B (en) Sequential flow detection method and storage device
KR20100005539A (en) Cache memory system and prefetching method thereof
US10346070B2 (en) Storage control apparatus and storage control method
US8661169B2 (en) Copying data to a cache using direct memory access
CN119759273A (en) Hardware acceleration method, device, equipment and medium
JP2015184883A (en) Computer system
US9542318B2 (en) Temporary cache memory eviction
US9367467B2 (en) System and method for managing cache replacements
CN116185287A (en) A method, device and solid-state hard disk for reducing read delay
US12499047B2 (en) Enhanced read cache for stream switching in storage device

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20210624

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20231127

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20240722

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20240802

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20240802

End annual number: 3

Start annual number: 1

PG1601 Publication of registration