KR101245011B1 - 복수의 전달을 큐잉하는 방법, 복수의 불연속 어드레스 범위 전달 요청 방법, 제품 및 시스템 - Google Patents

복수의 전달을 큐잉하는 방법, 복수의 불연속 어드레스 범위 전달 요청 방법, 제품 및 시스템 Download PDF

Info

Publication number
KR101245011B1
KR101245011B1 KR1020117007703A KR20117007703A KR101245011B1 KR 101245011 B1 KR101245011 B1 KR 101245011B1 KR 1020117007703 A KR1020117007703 A KR 1020117007703A KR 20117007703 A KR20117007703 A KR 20117007703A KR 101245011 B1 KR101245011 B1 KR 101245011B1
Authority
KR
South Korea
Prior art keywords
command
tagged
interface
memory
list
Prior art date
Application number
KR1020117007703A
Other languages
English (en)
Other versions
KR20110053261A (ko
Inventor
로버트 로이어
앰버 허프만
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20110053261A publication Critical patent/KR20110053261A/ko
Application granted granted Critical
Publication of KR101245011B1 publication Critical patent/KR101245011B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

단일 명령 내에서 복수의 불연속 어드레스 범위들의 전달을 큐잉하는 시스템 및 방법이 개시된다. 시스템에 대한 실시예는 시스템 프로세서, 데이터 및 실행 가능한 소프트웨어를 저장하는 메모리 및 시스템 메모리 내에 저장된 전달 명령을 수신하는 저장 디바이스를 포함한다. 호스트 컨트롤러 인터페이스 드라이버는 하나 이상의 시스템 프로세서에 의해서 실행되고 복수의 불연속 어드레스 범위들을 저장 장치 전달 요청으로부터 수집하고, 불연속 어드레스 범위 각각에 대해서, 시작 어드레스 및 전달할 데이터 양을 태깅된 명령 리스트(tagged command list) 내에 기록한다. 호스트 컨트롤러 인터페이스 드라이버는 상기 태깅된 명령 리스트 내에 어드레스 범위의 개수를, 명령 내에 태깅된 전달 동작 코드(opcode)를 기록하고, 저장 장치에 대한 명령 테이블 내에 명령 및 태깅된 명령 리스트를 저장한다. 호스트 컨트롤러 디바이스는 메모리 내 명령 테이블에 대한 베이스 어드레스 및 태깅된 명령 리스트에 대한 오프셋을, 명령 큐에 저장된 명령 헤더 내로 기록한다.

Description

복수의 전달을 큐잉하는 방법, 복수의 불연속 어드레스 범위 전달 요청 방법, 제품 및 시스템{METHOD AND SYSTEM FOR QUEUING TRANSFERS OF MULTIPLE NON-CONTIGUOUS ADDRESS RANGES WITH A SINGLE COMMAND}
본 발명은 하드 디스크 및/또는 비휘발성 메모리를 액세스하는 분야에 관한 것이다. 특히, 본 발명은 단일 명령(command) 내에서 복수의 불연속(non-contiguous) 어드레스 범위들의 전달들(transfers)을 큐잉(queuing)하는 기술에 관한 것이다.
현대의 컴퓨터 시스템에서, 다양한 저장 디바이스들이 소프트웨어 및/또는 데이터를 저장하고 액세스하는데 사용된다. 통상적으로, 이들은 HDD(하드 디스크 드라이브)와 같은 자기 저장 디바이스, 컴팩트 디스크(CD)와 같은 광학 저장 디스크 및 플래시 메모리 고체상태 드라이브(SSD)를 포함한다.
HDD에서, 정보는 고속으로 회전하는 자기 플래터(magnetic platter) 상에 저장되고 판독/기록 헤드 블록에 의해서 자기 플래터로부터/로 판독(read)/기록(write)된다. 마이크로컨트롤러는 플래터에 대해서 헤드의 움직임을 제어하고, 외부 인터페이스와 통신하고, 디스크 캐시 버퍼와 함께 작동한다. 데이터는 플래터의 상이한 부분들에 기록될 수 있고 작업부하(workload)가 랜덤하거나 거의 랜덤할 때에는 헤드를 플래터 위의 필요한 위치로 이동시키기 위해서 상당한 양의 시간이 필요로 하게 될 수 있다. 기록 요청 재정렬(reorder) 기능과 룩 어헤드 판독(look-ahead reading) 기능은 HDD 시스템에서 성능을 크게 증가시킬 수 있다.
논리적 블록 어드레싱(LBA)은 저장 디바이스 내에서 데이터 블록의 위치를 지정하는데 통상적으로 사용된다. LBA는 어드레스를 지칭하거나 블록(즉, 인덱스)을 지칭할 수 있으며, 후자의 경우에 제 1 블록은 LBA = 0이며 제 1 블록은 LBA = 1 등이다. LBA 방식은 저장 디바이스의 물리적 세부 사항들을 운영 체제 소프트웨어에 노출시키는 CHS(실린더 헤드 섹터) 방식과 같은 초기의 어드레싱 방식들을 대체한다. 논리적 블록들은 통상적으로 512 바이트 또는 1024 바이트이다(ISO 9660 CD는 2048 바이트 블록들을 사용한다). 블록-레벨 I/O을 요하는 시스템 호(system call)는 LBA 규정 사항들을 저장 디바이스 드라이버에 전달한다. 몇몇 간단한 경우에, 논리적 블록 크기는 저장 디바이스로부터 판독되거나 저장 디바이스로 기록될 수 있는 최소 물리적 섹터와 동일한 크기일 수 있다.
SSD에서, NAND 또는 NOR 로직을 기초로 한 플래시 메모리들은 마이크로컨트롤러에 의해서 제어되는 몇 개의 칩들 내에 데이터를 저장한다. SSD는 고속 판독 시간을 가지지만(즉, 필요한 셀 또는 셀들만이 오직 발견되어서 판독되어야 하지만), 상대적으로 저속 기록 시간을 갖는다(즉, 새로운 데이터를 셀 또는 셀들에 기록하기 이전에 기존의 데이터가 이 셀 또는 셀들로부터 소거되어야 함). 염려 사항이 될 수 있는 어떠한 스피닝(spinning) 디스크 또는 판독/기록 헤드도 존재하지 않으며 따라서 액세스 레이턴시(latency)는 HDD의 경우에서보다 덜 문제가 된다.
데이터 전송 요청들을 재정렬함으로써 보다 고속 성능을 실현하기 위해서, NCQ(Native Command Queuing)와 같은 큐잉 기술들이 (가령, 직렬 ATA(Advanced Technology Attachment) HDD에서 사용되도록) 도입되어서 판독 명령 및 기록 명령이 실행되는 순서를 최적화시킨다. SSD에서 큐잉 기술을 사용하는 일 장점은 디바이스들이 일련의 명령들을 완료할 때에 이들이 스톨링되지(stalled) 않게 복수의 명령들이 디바이스들에 전달될 수 있다는 것이다. 전달할 가능한 한 많은 데이터를 갖기 때문에 또한 대량의 병행 구현 사항들이 존재한다.
호스트 컨트롤러 인터페이스(가령, SATA(직렬 ATA) 디바이스를 위한 AHCI(Advanced Host Controller Interface) 또는 플래시 메모리 저장 디바이스를 위한 NVMHCI(Non-Volatile Memory Host Controller Interface))는 NCQ와 같은 기술들을 이용하기 위해서 소프트웨어가 시스템 메모리 구조를 통해서 (호스트 버스 어댑터와 같은) 디바이스들과 통신하도록 하게 하는 하드웨어 메카니즘이다.
Microsoft? Windows?, Berkeley Software Distribution(BSD, 때때로 Berkeley Unix로 지칭됨) 및 Linux?와 같은 수많은 현대의 운영 체제는 AHCI와 같은 호스트 제어기 인터페이스를 지원하지만 이러한 인터페이스는 명령 큐 내의 한정된 개수의 (즉, 32 개의) 인-플라이트(in-flight) 명령만을 지원하고 매 완료된 요청에 대해서 시스템 인터럽트를 생성한다. 통상적으로, 복수의 요청 또는 명령들은 자연적으로는 함께 만족되고 완료되며, 디바이스들의 성능이 개선됨에 따라서 디바이스들은 보다 많은 명령들을 소비할 수 있는 용량을 가질 수 있다. 한편, SCSI 프로토콜은 264 개까지의 명령들이 큐잉되게 할 수 있지만 이러한 긴 큐를 지원하는 구현 사항들은 매우 비싸며 프로토콜 오버헤드는 AHCI에서보다 매우 커지게 된다.
현재까지, 큰 개수의 저장 디바이스 전달 요청을 서비스할 수 있는 보다 효율적인 방법, 구조 및 시스템들이 완벽하게 개발되지는 않았다.
본 발명은 다음의 첨부 도면을 참조하여서 한정적인 아닌 예시적인 방식으로 설명될 것이다.
도 1은 단일 명령으로 복수의 불연속 어드레스 범위들에 대한 저장 디바이스 전달을 요청하는 시스템의 일 실시예를 나타내고 있다.
도 2는 단일 명령으로 복수의 불연속 어드레스 범위들에 대한 저장 디바이스 전달을 요청하는 프로세스의 일 실시예의 흐름도이다.
도 3은 단일 명령으로 복수의 불연속 어드레스 범위들에 대한 저장 디바이스 전달을 요청하는 프로세스의 다른 실시예의 흐름도이다.
도 4a는 저장 디바이스 전달할 어드레스 범위를 지정하는 데이터 구조의 일 실시예를 나타내고 있다.
도 4b는 태깅된 전달 명령 및 불연속 어드레스 범위들의 태깅된 명령 리스트를 포함하는 명령 테이블 데이터 구조의 실시예를 나타낸다.
도 4c는 저장 디바이스 태깅된 전달 명령을 지정하는 데이터 구조의 일 실시예를 나타낸다.
도 4d는 저장 디바이스 태깅된 전달 명령을 지정하는 데이터 구조의 다른 실시예를 나타낸다.
도 4e는 메모리 내의 명령 테이블에 대한 베이스 어드레스 및 불연속 어드레스 범위들의 태깅된 명령 리스트에 대한 오프셋을 포함하는 저장 디바이스 명령 헤더를 지정하는 데이터 구조의 실시예를 나타낸다.
도 4f는 복수의 명령 헤더를 포함하는 저장 디바이스 명령 큐를 지정하는 데이터 구조의 실시예를 나타낸다.
도 4g는 저장 디바이스 태깅된 전달 명령을 지정하는 데이터 구조의 다른 실시예를 나타낸다.
단일 명령 내에서 복수의 불연속 어드레스 범위들의 전달을 큐잉하는 방법 및 시스템들이 이하에서 기술될 것이다. 몇몇 실시예에서, 이 시스템은 하나 이상의 시스템 프로세서와, 데이터 및 실행 가능한 소프트웨어를 저장하는 시스템 메모리 및 시스템 메모리 내에 저장된 전달 명령을 수신하는 저장 디바이스를 포함한다. 몇몇 실시예에서, 시스템 메모리 내에 저장된 호스트 컨트롤러 인터페이스 드라이버(가령, SATA(직렬 ATA) 디바이스를 위한 AHCI(Advanced Host Controller Interface) 또는 NAND 플래시 메모리 저장 디바이스를 위한 NVMHCI(Non-Volatile Memory Host Controller Interface))가 하나 이상의 시스템 프로세서에 의해서 실행될 때에, 저장 디바이스 전달 요청으로부터 복수의 불연속 어드레스 범위들을 수집하고, 시작 어드레스 및 각 불연속 어드레스 범위에 대해 전달할 데이터 양을 태깅된 명령 리스트(tagged command list) 내에 기록한다. 또한, 태깅된 명령 리스트 내에 있는 불연속 어드레스 범위들의 카운트 수 및 명령 내의 태깅된 전달 동작 코드(opcode)를 기록하고, 이 명령 및 태깅된 명령 리스트를 저장 디바이스를 위한 시스템 메모리 내의 명령 테이블 내에 저장한다. 명령 테이블에 대한 베이스 메모리 어드레스 및 태깅된 명령에 대한 오프셋을 명령 헤더 내에 기록하고, 이 명령 헤더는 특정 호스트 제어기 인터페이스에 따라서 명령 큐 내에 저장된다. 몇몇 다른 실시예들에서, 태깅된 전달 명령은 호스트 대 디바이스 레지스터 FIS(프레임 정보 구조) 내에서 (가령, ATAPI(ATA 패킷 인터페이스) 명령 및/또는 SATA NCQ 명령과 같은 SATA 명령에서와 같이) 물리적 전송 메카니즘에 따라서 저장 디바이스에 전송될 수 있다. 이 태깅된 전달 명령은 저장 디바이스가 데이터 FIS(즉, 데이터 패킷)로서 요청할 수 있는 복수의 불연속 어드레스 범위들을 저장하는 태깅된 명령 리스트의 가용성을 나타낼 수 있다.
이로써, 단일 명령으로 복수의 불연속 어드레스 범위들을 전달하는 동작을 큐잉함으로써 큰 개수의 저장-디바이스 전달 요청을 서비스할 수 있는 보다 효율적이면서 비용 측면에서 유리한 방법, 구조 및 시스템이 제공된다.
다음의 설명에서, 복수의 특정 세부 사항들이 제시된다. 그러나, 본 발명의 실시예들은 이러한 특정 실시예들 없이도 실시될 수 있다. 다른 실례에서, 잘 알려진 회로, 구조 및 기술들은 본 설명을 이해를 모호하게 하지 않도록 세부적으로 설명되지 않을 것이다. 본 발명의 이러한 실시예 및 다른 실시예들은 다음의 교시 사항에 따라서 실현될 수 있으며 다양한 수정 및 변경 사항들이 본 발명의 더 넓은 기술적 사상 및 범위를 일탈하지 않고서 다음의 교시 사항들로부터 이루어질 수 있음이 자명하다. 따라서, 이 명세서 및 도면은 본 발명을 한정하는 차원에서 해석되기보다는 예시적으로 설명하는 것으로 해석되어야 하며 본 발명은 청구 범위 및 이의 균등 범위로만 규정될 수 있다.
도 1은 단일 명령으로 복수의 불연속 어드레스 범위들에 대한 저장 디바이스 전달을 요청하기 위한 시스템(101)의 일 실시예를 나타내고 있다. 시스템(101)은 복수의 시스템 프로세서, 즉 중앙 프로세서(111), 메모리 제어 프로세서(112), 입출력(I/O) 제어 프로세서(113), 그래픽 프로세서(114) 및 DMA(직접 메모리 액세스) 프로세서를 포함한다. 또한, 시스템(101)은 SSD(120), 디스크 드라이브(121), PCI(Peripheral Component Interconnect) 및/또는 PCI-E(PCI Express) 디바이스(122) 및/또는 플래시 메모리 저장 장치(126)와 같은 소정의 저장 디바이스들을 포함한다. 시스템(101)은 또한 데이터 및 실행 가능한 소프트웨어를 저장하는 시스템 메모리(115), 오디오 입출력부(I/O)(123), USB 입출력부(124), LAN 입출력부(125), BIOS(117), 키패드 인터페이스(118) 및 마우스 인터페이스(119)를 포함한다. SSD(120), 디스크 드라이브(121), PCI 디바이스(122) 및/또는 플래시 메모리 저장 장치(126)와 같은 저장 디바이스들은 시스템 메모리(115)에 접속되어서 저장-디바이스 전달 요청에 따라서 다양한 어드레스 범위들로부터/로 데이터를 전달하기 위해서 시스템 메모리(115) 내에 저장된 전달 명령들을 수신한다.
시스템 메모리(115)는 프로세서 실행 가능한 호스트 컨트롤러 인터페이스 드라이버(116)를 저장한다. 시스템(101)의 몇몇 실시예에서, 드라이버(116)는 (가령, SSD(120) 또는 디스크 드라이브(120) 내의) SATA 디바이스를 위한 AHCI 드라이버 및/또는 (가령, 플래시 메모리 저장 장치(126)와 같은) NAND 플래시 메모리 저장 디바이스를 위한 NVMHCI를 포함할 수 있다. 하나 이상의 시스템 프로세서들에 의해서 실행될 때에, 드라이버(116)는 하나 이상의 시스템 프로세서로 하여금 대응하는 저장-디바이스 전달 요청으로부터 복수의 불연속 어드레스 범위들을 수집하고 각 불연속 어드레스 범위에 대해 전달한 데이터 양 및 시작 어드레스를 태깅된 명령 리스트(tagged command list) 내에 기록하게 한다. 또한, 드라이버(116)를 실행시키는 시스템 프로세서는 태깅된 전달 동작 코드(tagged-transfer opcode) 및 상기 태깅된 명령 리스트 내의 불연속 어드레스 범위들의 수를 명령 내에 기록하며, 여기서 상기 명령 및 상기 태깅된 명령 리스트 양자는 특정 저장 디바이스를 위한 시스템 메모리(115) 내의 명령 테이블 내에 저장된다. 시스템 메모리(115) 내의 명령 테이블에 대한 베이스 어드레스 및 태깅된 명령 리스트에 대한 오프셋이 상기 저장 디바이스에 대한 명령 큐 내에 저장된 명령 헤더들 중 하나에 기록될 수 있다.
시스템(101)은 각 태깅된 전달 명령에 대해서 태깅된 명령 리스트 내의 복수의 불연속 어드레스 범위들에 대한 저장 디바이스 전달을 요청하기 위한, 본 명세서에서 기술된 프로세스에 따라서 사용될 수 있다.
도 2는 단일 명령으로 복수의 불연속 어드레스 범위들에 대한 저장 디바이스 전달을 요청하는 프로세스(201)의 일 실시예의 흐름도이다. 이 프로세스(201) 및 본 명세서에서 개시된 다른 프로세스들은 범용 머신들 또는 특정 목적의 머신들 또는 이들의 조합에 의해서 실행가능하며 머신 판독 가능한 매체 내에 포함되어 있는 전용 하드웨어 또는 소프트웨어 또는 펌웨어 동작 코드들을 포함할 수 있는 프로세싱 블록들에 의해서 수행될 수 있다.
프로세싱 블록(211)에서, 복수의 불연속 어드레스 범위들의 리스트가 대응하는 저장-디바이스 전달 요청들로부터 식별된다. 프로세싱 블록(213)에서, 단일 명령이 호스트 컨트롤러 인터페이스를 통해서 전송되어서 저장 디바이스가 상기 복수의 불연속 어드레스 범위들의 리스트를 전달할 것을 요청한다. 이 프로세스(201)의 몇몇 실시예들은 호스트 대 디바이스 레지스터 FIS(프레임 정보 구조) 내에서 (가령, ATAPI(ATA 패킷 인터페이스) 명령 및/또는 SATA NCQ 명령과 같은 SATA 명령에서와 같이) 물리적 전송 메카니즘에 따라서 저장 디바이스와 통신하는 태깅된 전달 명령을 제공한다. 이 태깅된 전달 명령은 복수의 불연속 어드레스 범위들을 저장하는 태깅된 명령 리스트의 가용성을 나타낼 수 있다. 이어서, 저장 디바이스는 상기 태깅된 명령 리스트를 데이터 FIS(즉, 하나 이상의 데이터 패킷)으로서 요청하거나 직접 메모리 액세스한다. 이어서, 프로세싱 블록(215)에서, 프로세스(201)는 요청된 데이터 전달이 완료될 것을 대기하고 완료되면 프로세싱 블록(217)으로 진행한다. 프로세싱 블록(217)에서, 저장 디바이스가 복수의 불연속 어드레스 범위들의 리스트를 전달하도록 요청하는 단일 명령의 완료에 대응하는 단일 인터럽트가 수신된다. 이어서, 프로세싱 블록(219)에서, 단일 인터럽트가 서비스된다.
도 3은 단일 명령으로 복수의 불연속 어드레스 범위들에 대한 저장 디바이스 전달을 요청하는 프로세스(301)의 다른 실시예의 흐름도이다. 프로세싱 블록(311)에서, 복수의 불연속 어드레스 범위들의 리스트가 대응하는 저장-디바이스 전달 요청들로부터 식별된다. 프로세싱 블록(312)에서, 식별된 불연속 어드레스 범위들의 리스트 각각에 대해서, 시작 어드레스 및 전달한 데이터 양이 태깅된 명령 리스트 내에 기록된다. 프로세싱 블록(313)에서, 태깅된 명령 리스트 내의 불연속 어드레스 범위들의 수에 대한 카운트 및 태깅된 전달 동작 코드(opcode)가 단일 명령 내에 기록되며, 이 단일 명령은 상기 태깅된 명령 리스트를 따라서 메모리 내의 명령 테이블 내에 저장된다. 프로세싱 블록(314)에서, 메모리 내의 명령 테이블에 대한 베이스 어드레스 및 태깅된 명령 리스트에 대한 오프셋이 명령 큐 내에 저장된 명령 헤더 내에 기록된다.
프로세싱 블록(315)에서, 프로세스(301)는 요청된 데이터 전달이 완료될 것을 대기하고 완료되면 프로세싱 블록(317)으로 진행한다. 프로세싱 블록(317)에서, 저장 디바이스가 복수의 불연속 어드레스 범위들의 리스트를 전달하도록 요청하는 단일 명령의 완료에 대응하는 단일 인터럽트가 수신된다. 이어서, 프로세싱 블록(319)에서, 단일 인터럽트가 서비스된다.
특정 호스트 컨트롤러 인터페이스에 따라서 저장 디바이스 전달을 요청하는 추가적인 세부 사항들은 상기 특정 호스트 제어기 인터페이스에 대한 대응하는 공개된 명세 사항들에서 개시되어 있다(가령, 웹상에서 인텔사로부터 입수 가능한 "Serial ATA AHCI(Advanced Host Controller Interface) 1.3" 또는 "Serial ATA International Organization: Serial ATA Revision 2.6" 또는 "Non-Volatile Memory Host Controller Interface(NVMHCI) 1.0"을 참조하라).
도 4a는 저장 디바이스 전달할 어드레스 범위(401)를 지정하는 32 비트 필드 시퀀스를 포함하는 데이터 구조의 일 실시예를 나타내고 있다. 어드레스 범위(401)는 LBA 또는 시작 섹터 어드레스(411a, 411b) 및 전달할 데이터 섹터의 양(412)을 포함한다. 어드레스 범위(401)는 프로세싱 블록(312)에서 전술한 바와 같이 태깅된 명령 리스트 내에 기록된다. 이러한 태깅된 명령 리스트는 일종의 분산/수집 리스트를 나타낼 수 있다. 통상적인 분산/수집 리스트(scatter/gather list)가 물리적 어드레스로/로부터 가상 어드레스로부터/로 가는데 사용된다면, 태깅된 명령 리스트는 분산된 논리적 어드레스 맵으로 복수의 판독 동작 또는 기록 동작을 이하에서 기술되는 명령(403,404 또는 408)과 같은 단일 명령으로 결합시킨다.
도 4b는 적합한 길이를 갖는 (가령, 32 바이트 또는 64 바이트까지일 수 있는) 태깅된 전달 명령 및 (가령, 어드레스 범위(401)와 유사한) 불연속 어드레스 범위들의 태깅된 명령 리스트(423)를 포함하는 명령 테이블 데이터 구조(402)의 실시예를 나타낸다. 명령 테이블 데이터 구조(402)는 호스트 컨트롤러 인터페이스에 의해서 규정되는 바와 같은 물리적 영역 기술자(Physical Region Description: PRD) 테이블(422), 메타데이터, PRD 인덱스 등과 같은 다른 데이터 섹션 및/또는 테이블들을 더 포함할 수 있다. 명령 테이블 데이터 구조(402)는 프로세싱 블록(313)에 따라서 메모리(가령, 시스템 메모리(115)) 내에 저장될 수 있다.
도 4c는 태깅된 명령 리스트 내의 불연속 어드레스 범위들의 개수에 대한 카운트(432) 및 태깅된 전달 동작 코드(opcode)(431)를 포함하는 저장 디바이스 태깅된 전달 명령(403)을 특정하는 32 비트 필드 시퀀스를 포함하는 데이터 구조의 실시예를 나타내고 있다. 이 태깅된 전달 명령(403)은 프로세싱 블록(313)에 따라서 (가령, 명령 테이블 데이터 구조(402)와 같은) 명령 테이블 내에 저장될 수 있다. 다양한 태깅된 전달 동작 코드(431)가 판독 또는 기록 시에 사용될 수 있으며 상기 명령(403)은 또한 AHCI 및/또는 NVMHCI와 같은 호스트 제어기 인터페이스에 의해서 특정되거나 SATA와 같은 버스 인터페이스에 의해서 특정되는 어드레스 데이터, 파라미터, 속성 등을 저장하는 다른 필드들을 포함할 수 있다.
도 4d는 태깅된 명령 리스트 내의 불연속 어드레스 범위들의 개수에 대한 카운트(442) 및 태깅된 전달 동작 코드(opcode)(441)를 포함하는 저장 디바이스 태깅된 전달 명령(404)을 특정하는 32 비트 필드 시퀀스를 포함하는 데이터 구조의 실시예를 나타내고 있다. 이 명령(404)의 실시예들에서, 태깅된 명령 리스트 내의 불연속 어드레스 범위들의 개수에 대한 카운트(442)는 기존의 호스트 제어기 인터페이스의 (가령, 섹터들의 총 개수에 대하여) 선행하여 지정된 필드를 대체할 수 있다.
도 4e는 (가령, 시스템 메모리(115)와 같은) 메모리 내의 명령 테이블(가령, 명령 테이블 데이터 구조(402))에 대한 베이스 어드레스(451a,451b) 및 불연속 어드레스 범위들(어드레스 범위(401))의 태깅된 명령 리스트(가령, 명령 리스트(423))에 대한 오프셋(452)을 포함하는 저장 디바이스 명령 헤더(450)를 특정하는 32 비트 필드 시퀀스를 포함하는 데이터 구조(405)의 실시예를 나타내고 있다. 이 명령 헤더(450)는 프로세싱 블록(314)에 따라서 메모리 내에 저장될 수 있다.
도 4f는 대응하는 명령 테이블(470 내지 473)(가령, 명령 테이블 데이터 구조(402))를 식별하는 복수의 명령 헤더(460 내지 463)(가령, 명령 헤더(450))를 포함하는 저장 디바이스 명령 큐(406)를 특정하는 데이터 구조(407)의 실시예를 나타태며 이는 프로세싱 블록(314)에 따라서 저장될 수 있다. 명령 큐(406)에 대한 메모리(가령, 시스템 메모리(115)) 내의 베이스 어드레스는 포트 레지스터(465)를 통해서 저장 디바이스를 위해서 식별될 수 있다. 이 메모리 내의 추가 베이스 어드레스는 포트 레지스터(466)를 통해서 식별될 수도 있다.
도 4g는 태깅된 명령 리스트 내의 불연속 어드레스 범위들의 개수에 대한 카운트(482) 및 태깅된 전달 동작 코드(opcode)(481)를 포함하는 저장 디바이스 태깅된 전달 명령(408)에 대한 패킷을 특정하는 8 비트 레지스터 시퀀스를 포함하는 데이터 구조의 다른 실시예를 나타내고 있다. 이 명령(408)의 몇몇 실시예에서, (가령, 규정된 PRD 또는 명령 테이블에 따라서) 태깅된 명령 리스트 어드레스/오프셋(483a-c 또는 483a-f)이 (가령, SATA ATAPI 및/또는 SATA NCQ와 같은) 기존의 버스 인터페이스의 LBA(선형 블록 어드레스) 대신에 DMA를 위해서 특정될 수 있다.
위의 설명들은 본 발명의 바람직한 실시예들을 설명하기 위한 것이다. 특히 급속하게 성장하고 몇몇 진보된 기술들이 용이하게는 예상되지 않는 이러한 기술 분야에서, 위의 교시 사항으로부터, 본 발명은 그의 배열 및 세부 사항에 있어서 다음의 청구 범위 및 그의 균등 범위 내에 있는 본 발명의 원리를 일탈하지 않고서 본 기술 분야의 당업자에 의해서 수정될 수 있다.

Claims (25)

  1. 단일 명령과 연관된 복수의 전달(a plurality of transfers)을 큐잉하는 방법으로서,
    복수의 불연속(non-contiguous) 어드레스 범위들을 전달하기 위해 저장 디바이스에 요청하는 단일 명령을 인터페이스를 통해 전송하는 단계 - 상기 단일 명령은 상기 복수의 불연속 어드레스 범위들이 저장되는 태깅된 명령 리스트의 위치에 대한 참조(reference)를 포함하고, 상기 단일 명령 및 상기 태깅된 명령 리스트는 저장 디바이스의 명령 테이블 내에 저장됨 - 와,
    상기 복수의 불연속 어드레스 범위들의 전달이 완료되면 단일 인터럽트를 수신하는 단계를 포함하는
    복수의 전달을 큐잉하는 방법.
  2. 제 1 항에 있어서,
    상기 인터페이스는 직렬 ATA(Advanced Technology Attachment) 버스 인터페이스인
    복수의 전달을 큐잉하는 방법.
  3. 제 1 항에 있어서,
    상기 인터페이스는 SCSI(Small Computer System Interface)인
    복수의 전달을 큐잉하는 방법.
  4. 제 1 항에 있어서,
    상기 인터페이스는 SAS(Serial Attached SCSI) 인터페이스인
    복수의 전달을 큐잉하는 방법.
  5. 제 1 항에 있어서,
    상기 인터페이스는 AHCI(Advanced Host Controller Interface)인
    복수의 전달을 큐잉하는 방법.
  6. 제 5 항에 있어서,
    상기 인터페이스는 직렬 ATA 저장 디바이스용인
    복수의 전달을 큐잉하는 방법.
  7. 제 1 항에 있어서,
    상기 인터페이스는 NVMHCI(Non-Volatile Memory Host Controller Interface)인
    복수의 전달을 큐잉하는 방법.
  8. 제 6 항에 있어서,
    상기 인터페이스는 NAND 플래시 메모리 저장 디바이스용인
    복수의 전달을 큐잉하는 방법.
  9. 제 6 항에 있어서,
    상기 인터페이스는 상변화 메모리 저장 디바이스용인
    복수의 전달을 큐잉하는 방법.
  10. 저장 디바이스 내의 복수의 불연속 어드레스 범위들의 전달을 요청하는 방법으로서,
    상기 복수의 불연속 어드레스 범위들의 각각에 대해 전달할 데이터 양 및 시작 어드레스를 태깅된 명령 리스트(tagged command list) 내에 기록(recording)하는 단계와,
    상기 태깅된 명령 리스트 내에 기록된 상기 복수의 불연속 어드레스 범위들의 개수의 카운트 및 태깅된 전달 연산 코드(opcode)를 단일 명령 내에 기록하는 단계―상기 단일 명령 및 상기 태깅된 명령 리스트는 메모리 내의 명령 테이블 내에 저장됨―와,
    상기 메모리 내의 명령 테이블에 대한 베이스 어드레스 및 상기 태깅된 명령 리스트에 대한 오프셋을 명령 헤더 내에 기록하는 단계―상기 명령 헤더는 명령 큐 내에 저장된 복수의 명령 헤더 중 하나임―를 포함하는
    복수의 불연속 어드레스 범위 전달 요청 방법.
  11. 제 10 항에 있어서,
    적어도 상기 명령 헤더 내에 기록된 상기 메모리 내의 명령 테이블에 대한 상기 베이스 어드레스 및 상기 태깅된 명령 리스트에 대한 상기 오프셋으로부터, 그리고 상기 명령 내에 기록된 상기 불연속 어드레스 범위들의 개수의 상기 카운트로부터 직렬 ATA 버스 인터페이스에 대한 명령 패킷을 생성하는 단계를 포함하는
    복수의 불연속 어드레스 범위 전달 요청 방법.
  12. 제 10 항에 있어서,
    상기 명령 큐는 AHCI용 명령 큐인
    복수의 불연속 어드레스 범위 전달 요청 방법.
  13. 제 10 항에 있어서,
    상기 명령 큐는 NVMHCI용 명령 큐인
    복수의 불연속 어드레스 범위 전달 요청 방법.
  14. 제 10 항에 있어서,
    상기 명령 큐는 SAS 인터페이스용 명령 큐인
    복수의 불연속 어드레스 범위 전달 요청 방법.
  15. 머신 판독 가능한 매체로서,
    상기 머신 판독 가능한 매체는 상태(state) 및 실행 가능한 데이터 중 적어도 하나를 저장하여, 하나 이상의 머신에 의해서 액세스되는 경우, 상기 하나 이상의 머신으로 하여금,
    복수의 불연속 어드레스 범위들을 대응하는 복수의 전달 요청들로부터 수집하게 하고,
    상기 복수의 불연속 어드레스 범위들의 각각에 대해 전달할 데이터 양 및 시작 어드레스를 태깅된 명령 리스트(tagged command list) 내에 기록하게 하며,
    상기 태깅된 명령 리스트 내에 기록된 상기 복수의 불연속 어드레스 범위들의 개수의 카운트 및 태깅된 전달 연산 코드(opcode)를 단일 명령 내에 기록―상기 단일 명령 및 상기 태깅된 명령 리스트는 메모리 내의 명령 테이블 내에 저장됨―하게 하며,
    상기 메모리 내의 명령 테이블에 대한 베이스 어드레스 및 상기 태깅된 명령 리스트에 대한 오프셋을 명령 헤더 내에 기록―상기 명령 헤더는 명령 큐 내에 저장된 복수의 명령 헤더 중 하나임―하게 하는
    머신 판독 가능한 매체.
  16. 제 15 항에 있어서,
    상기 머신 판독 가능한 매체는 상태 및 실행 가능한 데이터 중 적어도 하나를 저장하여, 하나 이상의 머신에 의해서 액세스되는 경우, 상기 하나 이상의 머신으로 하여금,
    적어도 상기 명령 헤더 내에 기록된 상기 메모리 내의 명령 테이블에 대한 상기 베이스 어드레스 및 상기 태깅된 명령 리스트에 대한 상기 오프셋으로부터, 그리고 상기 명령 내에 기록된 상기 불연속 어드레스 범위들의 개수의 상기 카운트로부터 직렬 ATA 버스 인터페이스에 대한 명령 패킷을 생성하게 하는
    머신 판독 가능한 매체.
  17. 제 15 항에 있어서,
    상기 명령 큐는 AHCI용 명령 큐인
    머신 판독 가능한 매체.
  18. 제 15 항에 있어서,
    상기 명령 큐는 NVMHCI용 명령 큐인
    머신 판독 가능한 매체.
  19. 제 15 항에 있어서,
    상기 명령 큐는 SAS 인터페이스용 명령 큐인
    머신 판독 가능한 매체.
  20. 단일 명령으로 복수의 불연속 어드레스 범위들의 전달을 요청하는 시스템으로서,
    하나 이상의 시스템 프로세서와,
    데이터 및 실행 가능한 소프트웨어를 저장하는 시스템 메모리와,
    상기 시스템 메모리에 커플링(coupling)되어서 상기 시스템 메모리 내에 저장된 전달 명령을 수신하는 저장 디바이스와,
    상기 시스템 메모리 내에 저장된 프로세서 실행 가능한 호스트 컨트롤러 인터페이스 드라이버를 포함하며,
    상기 프로세서 실행 가능한 호스트 컨트롤러 인터페이스 드라이버는 상기 하나 이상의 시스템 프로세서에 의해서 실행되는 경우, 상기 하나 이상의 시스템 프로세서로 하여금,
    복수의 불연속 어드레스 범위들을 대응하는 복수의 저장 디바이스 전달 요청들로부터 수집하게 하고,
    상기 복수의 불연속 어드레스 범위들의 각각에 대해 전달할 데이터 양 및 시작 어드레스를 태깅된 명령 리스트(tagged command list) 내에 기록하게 하며,
    상기 태깅된 명령 리스트 내에 기록된 상기 복수의 불연속 어드레스 범위들의 개수의 카운트 및 태깅된 전달 연산 코드(opcode)를 단일 명령 내에 기록―상기 단일 명령 및 상기 태깅된 명령 리스트는 상기 저장 디바이스에 대한 상기 시스템 메모리 내의 명령 테이블 내에 저장됨―하게 하며,
    상기 메모리 내의 명령 테이블에 대한 베이스 어드레스 및 상기 태깅된 명령 리스트에 대한 오프셋을 명령 헤더 내에 기록―상기 명령 헤더는 명령 큐 내에 저장된 복수의 명령 헤더 중 하나임―하게 하는
    시스템.
  21. 제 20 항에 있어서,
    상기 호스트 컨트롤러 인터페이스는 직렬 ATA용 AHCI인
    시스템.
  22. 제 20 항에 있어서,
    상기 프로세서 실행 가능한 호스트 컨트롤러 인터페이스 드라이버는, 상기 하나 이상의 시스템 프로세서에 의해서 실행되는 경우, 상기 하나 이상의 시스템 프로세서로 하여금,
    적어도 상기 명령 헤더 내에 기록된 상기 메모리 내의 명령 테이블에 대한 상기 베이스 어드레스 및 상기 태깅된 명령 리스트에 대한 상기 오프셋으로부터, 그리고 상기 명령 내에 기록된 상기 불연속 어드레스 범위들의 개수의 상기 카운트로부터 직렬 ATA 버스 인터페이스에 대한 명령 패킷을 생성하게 하는
    시스템.
  23. 제 20 항에 있어서,
    상기 호스트 컨트롤러 인터페이스는 NVMHCI인
    시스템.
  24. 제 23 항에 있어서,
    상기 호스트 컨트롤러 인터페이스는 NAND 플래시 메모리 저장 디바이스용 인터페이스인
    시스템.
  25. 제 23 항에 있어서,
    상기 호스트 컨트롤러 인터페이스는 상변화 메모리 저장 디바이스용 인터페이스인
    시스템.
KR1020117007703A 2008-12-22 2009-12-07 복수의 전달을 큐잉하는 방법, 복수의 불연속 어드레스 범위 전달 요청 방법, 제품 및 시스템 KR101245011B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/342,065 2008-12-22
US12/342,065 US9128699B2 (en) 2008-12-22 2008-12-22 Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
PCT/US2009/067031 WO2010074944A2 (en) 2008-12-22 2009-12-07 Method and system for queuing transfers of multiple non-contiguous address ranges with a single command

Publications (2)

Publication Number Publication Date
KR20110053261A KR20110053261A (ko) 2011-05-19
KR101245011B1 true KR101245011B1 (ko) 2013-03-19

Family

ID=42267799

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117007703A KR101245011B1 (ko) 2008-12-22 2009-12-07 복수의 전달을 큐잉하는 방법, 복수의 불연속 어드레스 범위 전달 요청 방법, 제품 및 시스템

Country Status (6)

Country Link
US (1) US9128699B2 (ko)
EP (1) EP2361404B1 (ko)
JP (1) JP2012508428A (ko)
KR (1) KR101245011B1 (ko)
CN (1) CN102171649B (ko)
WO (1) WO2010074944A2 (ko)

Families Citing this family (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738841B2 (en) 2007-12-27 2014-05-27 Sandisk Enterprise IP LLC. Flash memory controller and system including data pipelines incorporating multiple buffers
US9128699B2 (en) 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
US8725977B2 (en) * 2010-02-17 2014-05-13 Seagate Technology Llc NVMHCI attached hybrid data storage
TWI465905B (zh) * 2010-09-22 2014-12-21 Toshiba Kk 記憶體系統、主機控制器、及直接記憶體存取之控制方法
US8924627B2 (en) 2011-03-28 2014-12-30 Western Digital Technologies, Inc. Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency
US8910020B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc Intelligent bit recovery for flash memory
US8909982B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc System and method for detecting copyback programming problems
CN102243617B (zh) * 2011-07-08 2014-01-01 福建星网锐捷网络有限公司 读/写处理方法、设备及系统
US9134909B2 (en) 2011-08-30 2015-09-15 International Business Machines Corporation Multiple I/O request processing in a storage system
US8984182B2 (en) 2011-10-06 2015-03-17 Marvell International Ltd. SCSI I/O command aggregation
US8918554B2 (en) * 2011-10-06 2014-12-23 Marvell International Ltd. Method and apparatus for effectively increasing a command queue length for accessing storage
US8938658B2 (en) 2011-11-07 2015-01-20 Sandisk Enterprise Ip Llc Statistical read comparison signal generation for memory systems
US9048876B2 (en) 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US8924815B2 (en) 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US8713204B2 (en) * 2011-12-27 2014-04-29 Apple Inc. High-performance AHCI interface
US20130173842A1 (en) * 2011-12-28 2013-07-04 King Ying Ng Adaptive Logical Group Sorting to Prevent Drive Fragmentation
US8990477B2 (en) * 2012-04-19 2015-03-24 Sandisk Technologies Inc. System and method for limiting fragmentation
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9032184B2 (en) * 2012-09-14 2015-05-12 HGST Netherlands B.V. Implementing drive list mode for reads and writes for hard disk drives
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
KR101988287B1 (ko) * 2012-11-26 2019-06-12 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
KR101993187B1 (ko) 2012-11-26 2019-06-27 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
WO2014094250A1 (zh) * 2012-12-19 2014-06-26 华为技术有限公司 数据处理方法和设备
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9003264B1 (en) 2012-12-31 2015-04-07 Sandisk Enterprise Ip Llc Systems, methods, and devices for multi-dimensional flash RAID data protection
US9971710B2 (en) 2013-02-07 2018-05-15 Microsoft Technology Licensing, Llc Optimizing data transfers between heterogeneous memory arenas
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9128634B1 (en) 2013-03-11 2015-09-08 Marvell International Ltd. Systems and methods of packed command management for non-volatile storage devices
US20140281147A1 (en) * 2013-03-13 2014-09-18 Kabushiki Kaisha Toshiba Memory system
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9009576B1 (en) 2013-03-15 2015-04-14 Sandisk Enterprise Ip Llc Adaptive LLR based on syndrome weight
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
TWI506430B (zh) * 2013-03-20 2015-11-01 Phison Electronics Corp 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
CN104346285B (zh) * 2013-08-06 2018-05-11 华为技术有限公司 内存访问处理方法、装置及系统
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9141563B2 (en) 2013-09-11 2015-09-22 Kabushiki Kaisha Toshiba Memory system
US9778859B2 (en) 2013-09-18 2017-10-03 Western Digital Technologies, Inc. Doorless protocol having multiple queue read requests in flight
US9535870B2 (en) 2013-09-18 2017-01-03 HGST Netherlands B.V. Acknowledgement-less protocol for solid state drive interface
US9547472B2 (en) 2013-09-18 2017-01-17 HGST Netherlands B.V. ACK-less protocol for noticing completion of read requests
US9158349B2 (en) 2013-10-04 2015-10-13 Sandisk Enterprise Ip Llc System and method for heat dissipation
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US10977201B1 (en) * 2013-11-13 2021-04-13 Avago Technologies International Sales Pte. Limited Per IO direct memory access redirection
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9549457B2 (en) 2014-02-12 2017-01-17 Sandisk Technologies Llc System and method for redirecting airflow across an electronic assembly
US9497889B2 (en) 2014-02-27 2016-11-15 Sandisk Technologies Llc Heat dissipation for substrate assemblies
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9348377B2 (en) 2014-03-14 2016-05-24 Sandisk Enterprise Ip Llc Thermal isolation techniques
US9519319B2 (en) 2014-03-14 2016-12-13 Sandisk Technologies Llc Self-supporting thermal tube structure for electronic assemblies
US9485851B2 (en) 2014-03-14 2016-11-01 Sandisk Technologies Llc Thermal tube assembly structures
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US9384830B2 (en) 2014-05-06 2016-07-05 Micron Technology, Inc. Apparatuses and methods for performing multiple memory operations
CN103942162B (zh) 2014-05-14 2020-06-09 清华大学 在存储器中进行多访问的方法、装置和存储系统
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9881680B2 (en) 2014-06-03 2018-01-30 Qualcomm Incorporated Multi-host power controller (MHPC) of a flash-memory-based storage device
US9632953B2 (en) * 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
US9690720B2 (en) 2014-06-03 2017-06-27 Qualcomm Incorporated Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US9720860B2 (en) 2014-06-06 2017-08-01 Toshiba Corporation System and method for efficient processing of queued read commands in a memory system
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9952805B2 (en) 2014-09-11 2018-04-24 Hitachi, Ltd. Storage system and data write method using a logical volume to either store data successfully onto a first memory or send a failure response to a server computer if the storage attempt fails
CN104731839B (zh) * 2014-10-08 2018-04-27 记忆科技(深圳)有限公司 一种ssd的前端数据管理加速的方法及一种ssd设备
CN105426322B (zh) * 2015-12-31 2019-05-28 华为技术有限公司 一种数据的预取方法及装置
CN110088722B (zh) * 2017-03-24 2022-08-30 西部数据技术公司 用于存储器设备中位置检测的系统和方法
TWI636363B (zh) * 2017-08-08 2018-09-21 慧榮科技股份有限公司 用來於一記憶裝置中進行動態資源管理之方法以及記憶裝置及其控制器
US10761775B2 (en) * 2018-02-09 2020-09-01 Samsung Electronics Co., Ltd. System and method for NVMe inter command association in SSD storage using a bridge device
CN111736779B (zh) * 2018-04-25 2022-01-11 上海忆芯实业有限公司 Nvm接口命令的优化执行方法与装置
US11726704B2 (en) 2020-03-31 2023-08-15 Kioxia Corporation Buffer optimization for solid-state drives
CN113064550A (zh) * 2021-03-19 2021-07-02 珠海市一微半导体有限公司 一种缩短外部存储器访问时间的控制装置及控制方法
US11934303B2 (en) * 2022-05-12 2024-03-19 Micron Technology, Inc. Atomic write operations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080071189A (ko) * 2005-12-22 2008-08-01 인텔 코오퍼레이션 다중 스레드형 프로세서에서의 실행 우선순위 결정

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5911135B2 (ja) 1979-01-17 1984-03-13 株式会社日立製作所 デ−タ処理システムのデ−タ転送方式
JP3132056B2 (ja) 1991-07-17 2001-02-05 いすゞ自動車株式会社 導電性砥粒及び電解砥石の製造方法
US6029226A (en) 1996-09-30 2000-02-22 Lsi Logic Corporation Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command
JPH10296636A (ja) 1997-04-30 1998-11-10 Mitsubishi Materials Corp メタルボンド砥石
JPH10310840A (ja) 1997-05-12 1998-11-24 Sumitomo Electric Ind Ltd 超硬質複合部材とその製造方法
JPH11338644A (ja) 1998-05-22 1999-12-10 Hitachi Ltd ディスク制御装置及び記憶装置
JP4330200B2 (ja) 1999-02-24 2009-09-16 住友電気工業株式会社 ナビゲーション装置
JP2001154811A (ja) 1999-11-30 2001-06-08 Toshiba Corp 計算機システム
JP2001209500A (ja) 2000-01-28 2001-08-03 Fujitsu Ltd ディスク装置およびディスク装置のリード・ライト処理方法
US6826650B1 (en) * 2000-08-22 2004-11-30 Qlogic Corporation Disk controller configured to perform out of order execution of write operations
US6973484B1 (en) * 2000-12-29 2005-12-06 3Pardata, Inc. Method of communicating data in an interconnect system
JP2002269560A (ja) 2001-03-06 2002-09-20 Seiko Epson Corp テンプレートマッチング方法、それを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体、テンプレートマッチング装置、位置決め装置および実装装置
US6901461B2 (en) * 2002-12-31 2005-05-31 Intel Corporation Hardware assisted ATA command queuing
US7512722B2 (en) * 2003-07-31 2009-03-31 International Business Machines Corporation Method for completing a plurality of chained list DMA commands that include a fenced list DMA command element
US7328304B2 (en) 2004-02-27 2008-02-05 Intel Corporation Interface for a block addressable mass storage system
US7105430B2 (en) 2004-03-26 2006-09-12 Freescale Semiconductor, Inc. Method for forming a semiconductor device having a notched control electrode and structure thereof
US7698473B2 (en) 2005-01-05 2010-04-13 Sony Computer Entertainment Inc. Methods and apparatus for list transfers using DMA transfers in a multi-processor system
JP4993061B2 (ja) 2005-03-16 2012-08-08 ヤマハ発動機株式会社 最適化装置、最適化方法および最適化プログラム
US7568056B2 (en) 2005-03-28 2009-07-28 Nvidia Corporation Host bus adapter that interfaces with host computer bus to multiple types of storage devices
JP2006338371A (ja) 2005-06-02 2006-12-14 Toshiba Corp メモリシステム
US7376782B2 (en) * 2005-06-29 2008-05-20 Intel Corporation Index/data register pair for indirect register access
US7805543B2 (en) 2005-06-30 2010-09-28 Intel Corporation Hardware oriented host-side native command queuing tag management
CN100373362C (zh) * 2005-12-22 2008-03-05 北京中星微电子有限公司 直接存储访问控制器
JP2008033721A (ja) * 2006-07-31 2008-02-14 Matsushita Electric Ind Co Ltd Dma転送制御装置
JP2008117195A (ja) 2006-11-06 2008-05-22 Hitachi Ltd 半導体記憶装置
JP2008140142A (ja) 2006-12-01 2008-06-19 Fuji Xerox Co Ltd 情報処理システム
US20090150894A1 (en) * 2007-12-10 2009-06-11 Ming Huang Nonvolatile memory (NVM) based solid-state disk (SSD) system for scaling and quality of service (QoS) by parallelizing command execution
US9128699B2 (en) 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080071189A (ko) * 2005-12-22 2008-08-01 인텔 코오퍼레이션 다중 스레드형 프로세서에서의 실행 우선순위 결정

Also Published As

Publication number Publication date
CN102171649A (zh) 2011-08-31
KR20110053261A (ko) 2011-05-19
CN102171649B (zh) 2015-04-08
US9128699B2 (en) 2015-09-08
US20100161936A1 (en) 2010-06-24
EP2361404A2 (en) 2011-08-31
EP2361404A4 (en) 2012-05-30
WO2010074944A2 (en) 2010-07-01
EP2361404B1 (en) 2018-05-16
JP2012508428A (ja) 2012-04-05
WO2010074944A3 (en) 2010-09-16

Similar Documents

Publication Publication Date Title
KR101245011B1 (ko) 복수의 전달을 큐잉하는 방법, 복수의 불연속 어드레스 범위 전달 요청 방법, 제품 및 시스템
JP4777263B2 (ja) マスストレージアクセラレータ
US9720860B2 (en) System and method for efficient processing of queued read commands in a memory system
EP2715730B1 (en) Apparatus including memory system controllers and related methods for memory management using blok tables
US8924659B2 (en) Performance improvement in flash memory accesses
KR101663066B1 (ko) 하이브리드 디바이스에서의 고체 상태 메모리 커맨드 큐
JP5128079B2 (ja) ユニバーサルストレージバスアダプタ
Seppanen et al. High performance solid state storage under linux
KR101560469B1 (ko) 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들
US9298393B2 (en) Buffer management for increased write speed in large sector data storage device
US8060669B2 (en) Memory controller with automatic command processing unit and memory system including the same
US20120221809A1 (en) Storage apparatus and data processing method of the same
CN115993930A (zh) 用于有序访问块修改存储器中的数据的系统、方法和装置
US10268386B2 (en) Data storage device including temporary storage locations
US9236066B1 (en) Atomic write-in-place for hard disk drives
US8667188B2 (en) Communication between a computer and a data storage device
US20030200385A1 (en) Method and system for increasing disk drive performance

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160303

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170302

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee