KR20130075694A - 고성능 ahci 인터페이스 - Google Patents

고성능 ahci 인터페이스 Download PDF

Info

Publication number
KR20130075694A
KR20130075694A KR1020120153134A KR20120153134A KR20130075694A KR 20130075694 A KR20130075694 A KR 20130075694A KR 1020120153134 A KR1020120153134 A KR 1020120153134A KR 20120153134 A KR20120153134 A KR 20120153134A KR 20130075694 A KR20130075694 A KR 20130075694A
Authority
KR
South Korea
Prior art keywords
command
host
instruction
memory
progress
Prior art date
Application number
KR1020120153134A
Other languages
English (en)
Other versions
KR101428317B1 (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 KR20130075694A publication Critical patent/KR20130075694A/ko
Application granted granted Critical
Publication of KR101428317B1 publication Critical patent/KR101428317B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead

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)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Communication Control (AREA)

Abstract

본 방법은 임의의 주어진 시간에 단일 명령만의 처리를 지원하는 저장 프로토콜에 따라, 메모리에서의 실행을 위한 다수의 명령을 호스트로부터 수신하는 단계를 포함한다. 제1 시간에, 제1 명령과 다른 제2 명령이 저장 프로토콜에 따라 현재 처리가 지원되는 단일 명령으로서 역할하도록 선택되는 경우에도, 제1 명령이 메모리에서 실행되며, 제1 명령과 관련된 데이터가 호스트와 교환된다. 제1 명령이 현재 처리가 지원되는 단일 명령으로서 역할하도록 선택되는 것을 검출할 때, 제1 명령의 진행이 제1 시간보다 늦은 제2 시간에 호스트에 보고된다.

Description

고성능 AHCI 인터페이스{HIGH-PERFORMANCE AHCI INTERFACE}
본 발명은 일반적으로 데이터 저장에 관한 것으로서, 구체적으로는 메모리 명령들의 동시 실행을 위한 방법들 및 시스템들에 관한 것이다.
저장 장치들과 통신하기 위한 다양한 저장 프로토콜들이 이 분야에 공지되어 있다. 저장 프로토콜의 일례는 SATA(Serial Advanced Technology Attachment) 프로토콜이다. AHCI(Advanced Host Controller Interface)라고 하는 프로토콜은 SATA 프로토콜을 이용한 호스트 시스템 메모리와 부착된 저장 장치들 간의 데이터의 교환을 지정한다.
SATA는 예를 들어 본 명세서에서 참고로 포함되는 "Serial ATA International Organization: Serial ATA Revision 3.0," June 2, 2009에 지정되어 있다. AHCI는 예를 들어 본 명세서에 참고로 포함되는 "Serial ATA Advanced Host Controller Interface (AHCI),"revision 1.3, June 26, 2008에 지정되어 있다.
본 명세서에서 설명되는 본 발명의 일 실시예는 임의의 주어진 시간에 단일 명령만의 처리를 지원하는 저장 프로토콜에 따라, 메모리에서의 실행을 위한 다수의 명령을 호스트로부터 수신하는 단계를 포함하는 방법을 제공한다. 제1 시간에, 제1 명령과 다른 제2 명령이 저장 프로토콜에 따라 현재 처리가 지원되는 단일 명령으로서 역할하도록 선택되는 경우에도, 제1 명령이 메모리에서 실행되며, 제1 명령과 관련된 데이터가 호스트와 교환된다. 제1 명령이 현재 처리가 지원되는 단일 명령으로서 역할하도록 선택되는 것을 검출할 때, 제1 명령의 진행이 제1 시간보다 늦은 제2 시간에 호스트에 보고된다.
일부 실시예들에서, 저장 프로토콜은 AHCI(Advanced Host Controller Interface) 프로토콜을 포함한다. 일 실시예에서, 제1 명령을 실행하는 단계는 제1 시간에 제1 명령의 진행의 보고를 억제하는 단계를 포함한다. 개시되는 실시예에서, 제1 명령을 실행하는 단계는 제1 시간에 제1 명령의 진행을 캐싱(caching)하는 단계를 포함하고, 진행을 보고하는 단계는 캐싱된 진행을 제2 시간에 호스트에 보고하는 단계를 포함한다. 일 실시예에서, 호스트는 처리가 지원되는 단일 명령의 진행을 보고하기 위한 하나 이상의 레지스터를 제공하고, 진행을 보고하는 단계는 레지스터들을 캐싱된 진행으로 갱신하는 단계를 포함한다.
다른 실시예에서, 데이터를 교환하는 단계는 적어도 하나의 다른 명령과 관련된 추가 데이터와 인터리빙(interleaving)된 제1 명령과 관련된 데이터의 둘 이상의 부분을 교환하는 단계를 포함한다. 또 다른 실시예에서, 데이터를 교환하는 단계는 제1 명령이 저장 프로토콜에 따라 현재 처리가 지원되는 단일 명령이 아닌 경우에도 제1 명령과 관련된 데이터를 호스트와 교환하는 단계를 포함한다.
또 다른 실시예에서, 제1 명령을 실행하는 단계는 제1 명령이 저장 프로토콜에 따라 현재 처리가 지원되는 단일 명령이 아닌 경우에도 제1 명령을 실행하는 단계를 포함한다. 일 실시예에서, 명령들을 수신하는 단계는 호스트로부터 명령들을 제1 순서로 억셉트(accept)하는 단계, 및 명령들을 제1 순서와 다른 제2 순서로 실행하는 단계를 포함한다. 데이터를 교환하는 단계는 호스트의 프로세서와 관계없이 호스트 내의 호스트 메모리로부터 또는 호스트 메모리로 데이터를 전송하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 메모리 및 메모리 제어기를 포함하는 장치가 추가로 제공된다. 메모리 제어기는 임의의 주어진 시간에 단일 명령만의 처리를 지원하는 저장 프로토콜에 따라, 메모리에서 실행하기 위한 다수의 명령을 호스트로부터 수신하고, 제1 명령과 다른 제2 명령이 저장 프로토콜에 따라 현재 처리가 지원되는 단일 명령으로서 역할하도록 선택되는 경우에도, 제1 시간에 메모리에서 제1 명령을 실행하고, 제1 명령과 관련된 데이터를 호스트와 교환하며, 제1 명령이 처리가 지원되는 단일 명령으로서 역할하도록 선택되는 것을 검출할 때, 제1 명령의 진행을 제1 시간보다 늦은 제2 시간에 호스트에 보고하도록 구성된다.
본 발명의 일 실시예에 따르면, 호스트 및 저장 장치를 포함하는 시스템도 제공된다. 저장 장치는 임의의 주어진 시간에 단일 명령만의 처리를 지원하는 저장 프로토콜에 따라, 저장 장치의 메모리에서 실행하기 위한 다수의 명령을 호스트로부터 수신하고, 제1 명령과 다른 제2 명령이 저장 프로토콜에 따라 현재 처리가 지원되는 단일 명령으로서 역할하도록 선택되는 경우에도, 제1 시간에 메모리에서 제1 명령을 실행하고, 제1 명령과 관련된 데이터를 호스트와 교환하며, 제1 명령이 처리가 지원되는 단일 명령으로서 역할하도록 선택되는 것을 검출할 때, 제1 명령의 진행을 제1 시간보다 늦은 제2 시간에 호스트에 보고하도록 구성된다.
본 발명은 아래의 도면들과 함께 이루어지는 본 발명의 실시예들에 대한 아래의 상세한 설명으로부터 더 충분히 이해될 것이다.
도 1은 본 발명의 일 실시예에 따른 데이터 저장 시스템을 개략적으로 도시하는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 다수의 명령의 동시 AHCI-준수(compliant) 실행을 위한 방법을 개략적으로 나타내는 흐름도이다.
개요
일부 저장 프로토콜들은 저장 장치가 다수의 저장 명령을 동시에 그리고 아마도 순서 없이 수신 및 처리하는 것을 가능하게 한다. 예를 들어, SATA 프로토콜은 호스트가 최대 32개의 미결 명령을 저장 장치에 대해 발행할 수 있는 NCQ(Native Command Queuing) 모드를 지원한다. 이러한 특징은 적절한 저장 장치들이 높은 효율 및 작은 레이턴시(latency)로 명령들을 실행하는 것을 가능하게 한다.
AHCI 저장 프로토콜은 SATA 위에 정의되며, 저장 장치들과 호스트 메모리 사이의 직접 데이터 교환을 위한 표준화된 인터페이스 및 데이터 구조들을 제공한다. 그러나, AHCI는 임의의 주어진 시간에 단일 명령만에 대한 데이터 전송 및 진행 보고를 지정한다.
본 명세서에서 설명되는 본 발명의 실시예들은 저장 장치가 다수의 명령을 동시에 그리고 순서 없이 처리하는 동시에 AHCI를 준수하는 것을 가능하게 하는 데이터 저장을 위한 개량된 방법들 및 시스템들을 제공한다. 본 명세서에서 설명되는 실시예들은 주로 AHCI를 참조하지만, 개시되는 기술들은 소정 시간에 단일 명령만의 처리를 지원하는 다른 저장 프로토콜과 함께 이용될 수도 있다.
일부 실시예들에서, 저장 장치는 메모리 및 제어기를 포함한다. 제어기는 호스트로부터 명령들을 수신하고, 메모리에서 명령들을 실행한다. AHCI 프로토콜에 따르면, 임의의 주어진 시간에 단일 명령이 선택되고, 이 단일 명령에 대해서만 데이터 전송 및 진행 보고가 허가된다. 그러나, 개시되는 실시예들에서, 제어기는 다수의 명령을 동시에 실행하고, 아마도 단일 명령에 대해 데이터를 순서 없이 또는 여러 명령의 인터리빙된 데이터를, 예를 들어 저장 장치의 일부 내부 스케줄링 선호들에 따라 전송한다.
실행되는 명령이 AHCI 프로토콜에 따라 현재 처리가 지원되는 단일 명령과 다른 경우, 제어기는 실행되는 명령과 관련된 데이터를 호스트 메모리와 직접 교환하지만, 적절한 AHCI 레지스터들을 이용하여 명령의 진행을 호스트에 보고하는 것을 억제한다. 대신에, 제어기는 명령의 진행을 캐싱하고, 나중에 해당 명령이 AHCI 프로토콜에 따르는 단일 명령으로서 선택되는 경우에만 진행을 호스트에 보고한다. 게다가, 특정 명령으로부터의 데이터가 순서 없이 전송되는 경우, 진행 보고는 통상적으로 데이터 전송의 순서화된 부분에 대해서만 발생할 것이다.
즉, 제어기는 어느 명령이 현재 AHCI 프로토콜에 의한 처리를 위해 선택되는지에 관계없이 다수의 수신된 명령을 동시에 그리고 아마도 순서 없이 또는 인터리빙 방식으로 실행한다. 통상적으로, 제어기는 각각의 실행되는 명령의 데이터를 이들이 이용 가능하거나 요구되자마자 호스트 메모리와 직접 교환하며, 따라서 데이터를 버퍼링할 필요를 없앤다. 다수의 상이한 명령의 데이터는 필요에 따라 인터리빙 방식으로 호스트 메모리와 교환될 수 있다.
그러나, AHCI 프로토콜의 준수를 유지하기 위하여, 제어기는 실행되는 명령의 진행 보고를, 명령이 AHCI 프로토콜에 의해 처리가 허가되는 단일 명령으로서 역할하도록 선택될 때까지, 연기한다. 따라서, 일부 예들에서, 호스트는 소정 명령으로부터의 데이터를 그의 메모리와 저장 장치 제어기에 의해 교환할 것이지만, 이 명령에 대한 진행 보고는 나중에 도착할 것이다. 이러한 방식으로 데이터 전송과 진행 보고를 분리하는 것은 AHCI 프로토콜을 위반하지 않는다.
개시되는 기술은 메모리 장치가 동시적인 그리고 순서 없는 명령 실행의 성능 이익들을 갖는 동시에 AHCI 사양을 따르는 것을 가능케 한다. 데이터가 생성되자마자 호스트 메모리로 전송되므로 어떠한 데이터 버퍼링도 필요하지 않으며, 호스트에서 AHCI 드라이버들의 어떠한 변경도 필요하지 않다.
시스템 설명
도 1은 본 발명의 일 실시예에 따른 데이터 저장 시스템(20)을 개략적으로 나타내는 블록도이다. 시스템(20)은 저장 장치, 이 예에서는 반도체 드라이브(SSD)(28)에 데이터를 저장하는 호스트(24)를 포함한다. 호스트(24) 및 SSD(28)는 PCI(Peripheral Component Interconnect) 또는 PCIe(PCI-express) 버스(30)를 통해 서로 통신한다.
호스트(24)는 예를 들어 개인용 컴퓨터 또는 이동 컴퓨팅 또는 통신 장치, 또는 엔터프라이즈 시스템을 포함할 수 있다. 대안 실시예들에서, 개시되는 기술들은 임의의 다른 적절한 타입의 저장 장치와 함께 그리고 다양한 다른 호스트들과 함께 이용될 수 있다.
호스트(24)는 전술한 AHCI 프로토콜에 따라 SSD(28)에 데이터를 저장하도록 구성된다. SSD(28)는 아래에 더 상세히 설명되는 기술들을 이용하여 다수의 저장 명령을 병렬로 그리고 아마도 순서 없이 실행하는 동시에 AHCI 사양을 따르도록 구성된다.
호스트(24)는 AHCI 드라이버(36) 및 PCI 루트 컴플렉스(root complex)(40)를 이용하여 SSD(28)와 통신하는 중앙 처리 유닛(CPU)(32)을 포함한다. AHCI 드라이버(36)는 실행을 위한 명령들을 할당하고, 데이터 전송을 위한 링크 리스트들을 준비하며, 각각의 명령의 완료를 상위 소프트웨어 계층들에 보고한다. 드라이버는 지정된 MMIO(Memory-Mapped I/O) 레지스터들, 미결 명령들을 실행하기 위한 호스트 CPU 메모리 구조들 내의 데이터 구조들을 설정한다.
호스트(24)는 호스트 메모리(44), 통상적으로 RAM(Random Access Memory)을 포함한다. 호스트 메모리(44)는 호스트 내의 다양한 기능들을 도울 수 있다. AHCI 사양에 따르면, SSD(28)는 통상적으로 호스트 메모리와 직접 데이터를 교환하며, 예를 들어 판독 명령에서 검색된 데이터를 저장하거나, 기록 명령에서 기록될 데이터를 판독한다.
SSD(28)는 호스트(24)에 의해 제공되는 데이터를 저장하는 데 사용되는 비휘발성 메모리를 포함한다. 본 예에서, 비휘발성 메모리는 다수의 NAND 플래시 메모리 장치(48)를 포함한다. 대안 실시예들에서, 비휘발성 메모리는 임의의 다른 적절한 타입의 메모리를 포함할 수 있다. SSD 제어기(52)가 예를 들어 개시되는 기술들을 이용하여 플래시 장치들(48) 내의 데이터 저장 및 검색 및 호스트(24)와의 인터페이싱을 포함하는 SSD의 다양한 기능들을 수행한다. "SSD 제어기" 및 "메모리 제어기"라는 용어는 본 명세서에서 교환 가능하게 사용된다.
도 1의 예에서, SSD 제어기(52)는 SSD와 호스트 사이에서 PCI 인터페이스로서 역할하는 PCI 제어기를 포함한다. 프론트엔드 CPU(60)가 많은 기능 중에서 특히 SSD 제어기의 AHCI 프로토콜 동작을 관리하는 소프트웨어를 실행한다. DMA(Direct Memory Access) 모듈(64)이 버스(30)를 통해 호스트 메모리(44)와 직접(즉, CPU(32)와 관계없이) 데이터를 교환한다. 내부 메모리(68), 통상적으로 동적 RAM(DRAM)이 SSD 제어기에서의 내부 저장을 위해 사용된다. 통상적으로, 본 명세서에서 설명되는 인터페이싱 및 통신 프로세스들은 프론트엔드 CPU(60)에 의해 SSD 제어기(52)의 다른 요소들을 이용하여 수행된다.
PCI 제어기(56), 프론트엔드 CPU(60) 및/또는 DMA 모듈(64)을 포함하는 SSD 제어기(52)는 하드웨어로 구현될 수 있다. 대안으로서, SSD 제어기의 소정 기능들, 예컨대 CPU(60)의 기능들은 적절한 소프트웨어를 실행하는 마이크로프로세서를 이용하여 또는 하드웨어 및 소프트웨어 요소들의 조합에 의해 구현될 수 있다. 일부 실시예들에서, CPU(60)는 본 명세서에서 설명되는 기능들을 수행하도록 소프트웨어로 프로그래밍되는 범용 프로세서를 포함한다. 소프트웨어는 예를 들어 네트워크를 통해 전자 형태로 프로세서로 다운로드될 수 있거나, 대안으로서 또는 추가로 자기, 광학 또는 전자 메모리와 같은 유형 매체들 상에서 제공 및/또는 저장될 수 있다.
도 1의 시스템 구성은 단지 개념의 명료화를 위해 도시된 구성 예이다. 임의의 다른 적절한 시스템 구성도 사용될 수 있다. 예를 들어, 일부 실시예들에서는, 둘 이상의 SSD가 동일 호스트에 접속될 수 있다. 다양한 인터페이스들, 어드레싱 회로들, 타이밍 및 시퀀싱 회로들 및 디버깅 회로들과 같이, 본 발명의 원리들을 이해하는 데 필요하지 않은 요소들은 명료화를 위해 도면으로부터 생략되었다.
도 1에 도시된 예시적인 SSD 구성에서, 메모리 장치들(48) 및 SSD 제어기(52)는 개별 집적 회로들(IC들)로서 구현된다. 그러나, 대안 실시예들에서, 메모리 장치들 및 SSD 제어기는 단일 멀티-칩 패키지(MCP) 또는 시스템 온 칩(SoC) 내의 개별 반도체 다이들 상에 집적될 수 있으며, 내부 버스에 의해 상호 접속될 수 있다. 추가적인 대안으로서, SSD 제어기 회로의 일부 또는 전부는 메모리 장치들(48) 중 하나 이상이 배치되는 동일 다이 상에 위치할 수 있다. 추가적인 대안으로서, SSD 제어기(52)의 기능의 일부 또는 전부는 소프트웨어로 구현될 수 있으며, 호스트(24)에 의해 또는 임의의 다른 타입의 메모리 제어기에 의해 수행될 수 있다. 일부 실시예들에서, 호스트(24) 및 SSD 제어기(52)는 동일 다이 상에 또는 동일 장치 패키지 내의 개별 다이들 상에 제조될 수 있다.
AHCI-준수 동시 명령 실행
SATA 프로토콜은 다수의 저장 명령의 동시 실행을 지원하지만, AHCI 사양의 프로토콜 및 데이터 구조들은 한 번에 하나의 명령만에 대한 실행 및 진행 보고를 지원한다. AHCI에 따르면, 호스트는 다수의 미결 명령을 저장 장치에 대해 발행할 수 있다. 그러나, 저장 장치는 순서 없이 실행할 명령들을 선택할 수 있지만, 여러 명령의 데이터를 인터리빙하지 않거나 순서 없이 특정 명령의 데이터를 반환하지 않아야 한다.
통상적으로, 호스트(24) 내의 AHCI 드라이버(36)는 주어진 시간에 다수의 미결 명령 중에서 단일 명령을 선택한다. 데이터 전송 및 진행 보고는 그 단일 명령에 대해서만 지원된다. 현재 선택된 단일 명령의 실행이 완료될 때, AHCI 드라이버는 실행할 다른 명령을 선택한다. 이러한 유형의 순차적인 순서화된 동작은 SSD 저장 성능을 현저히 저하시키는데, 예를 들어 레이턴시를 증가시키고 처리량을 감소시킬 수 있다.
일부 실시예들에서, SSD 제어기(52)는 AHCI 프로토콜의 위의 제한들을 따르며, AHCI의 표준 프로토콜 및 데이터 구조들을 사용한다. 그러나, SSD 제어기는 다수의 명령을 동시에 실행하며, 아마도 특정 명령의 데이터를 순서 없이 전달한다. 이러한 특징은 데이터의 전송과 진행의 보고를 분리함으로써 달성된다.
호스트 내의 AHCI 드라이버(36)의 관점에서, SSD는 현재 선택된 명령만을 실행하고, DMA 모듈(64)을 이용하여 명령과 관련된 데이터를 호스트 메모리(44)와 교환하며, 명령 실행이 완료될 때까지 명령의 진행으로 호스트를 갱신할 것으로 예상된다. AHCI 드라이버는 명령 실행 진행을 보고하기 위한 레지스터들을 포함하여, 이러한 흐름을 위한 적절한 명령들 및 데이터 구조들을 제공한다.
일부 실시예들에서, SSD 제어기(52)는 호스트(24)로부터 다수의 저장 명령(예로서, 판독 및 기록 명령들)을 수신한다. SSD 제어기는 반드시 호스트로부터 명령들이 수신된 순서로는 아니고, SSD(28)의 일부 스케줄링 선호들에 따라 메모리 장치들(48)에서 명령들을 실행한다. 더욱이, SSD 제어기는 주어진 명령이 현재 AHCI 드라이버에 의해 실행을 위해 선택되는지의 여부에 관계없이 이 명령을 실행한다.
소정 명령을 실행할 때, SSD 제어기는 명령과 관련된 데이터를 호스트 메모리(44)와 교환한다. 예를 들어, 기록 명령을 실행할 때, SSD 제어기는 호스트 메모리로부터 저장할 데이터를 판독하고, 데이터를 플래시 장치들(48)에 저장한다. 판독 명령에서, SSD 제어기는 플래시 장치들(48)로부터 검색된 데이터를 호스트 메모리(44)에 저장한다.
SSD 제어기는 실행되는 명령이 AHCI 드라이버(36)에 의해 현재 실행을 위해 선택된 단일 명령인지의 여부에 관계없이 전술한 데이터 교환을 수행한다. 따라서, SSD 제어기는 명령들을 효율적으로, 순서 없이, 소정의 적절한 선호, 정책 또는 기준들에 따라 실행하는 자유를 갖는다. 데이터가 명령 실행 동안 이용 가능하게 되자마자 호스트 메모리와 교환되므로, SSD 제어기에서는 버퍼링이 필요하지 않게 된다.
SSD 제어기가 AHCI 드라이버에 의해 현재 실행을 위해 선택되지 않은 명령을 실행하는 시나리오를 고려한다. 그러한 경우에, AHCI 드라이버는 SSD가 이 명령의 실행 진행을 보고하기 위한 수단을 제공하지 않는다. (이때, AHCI 드라이버는 실제로는 AHCI 드라이버에 의해 현재 선택된 단일 명령인 상이한 명령에 대한 진행 보고를 예상한다.) 따라서, 일부 실시예들에서, SSD 제어기는 현재 실행되는 명령이 AHCI 드라이버에 의해 선택되는 나중 시간까지 이 명령에 대한 진행 보고를 연기한다.
일부 실시예들에서, AHCI 드라이버(36)는 하나 이상의 레지스터를 제공하며, 이들을 이용하여 SSD는 AHCI 드라이버에 의해 현재 선택된 단일 명령의 실행 진행을 보고할 것으로 예상된다. AHCI 드라이버에 의해 현재 선택되지 않은 명령을 실행할 때, SSD 제어기(52)는 통상적으로 예를 들어 메모리(68) 내의 내부 레지스터들에서 실행되고 있는 명령에 대한 진행 보고를 캐싱한다. 이후에, 이 명령이 실행을 위해 AHCI 드라이버에 의해 선택될 때, SSD 제어기는 캐싱된 명령 진행 보고로 AHCI 드라이버 레지스터들을 갱신한다.
개시되는 기술을 이용할 때, 종종 SSD 제어기는 현재 실행되고 있지만 AHCI 드라이버에 의해 실행을 위해 선택되지 않은 명령에 대한 데이터를 호스트 메모리와 교환한다. 이 명령에 대한 진행 보고는 연기되므로, AHCI 드라이버는 통상적으로 데이터가 교환된 것 또는 명령 실행이 완료된 것을 모른다. AHCI 드라이버는 나중에 명령을 선택하고 적절한 진행 보고를 수신한 때만 명령의 완료 및 데이터의 교환을 알게 된다.
더욱이, 이러한 기술을 이용하면, SSD 제어기는 둘 이상의 명령의 데이터를 호스트 메모리와 인터리빙 방식으로 교환할 수 있는데, 즉 필요에 따라 상이한 명령들에 대한 데이터의 부분들을 교대로 전송할 수 있다. 주어진 명령의 실행이 완료되고, 모든 관련 데이터가 호스트 메모리와 교환된 후, SSD 제어기는 이러한 진행을 호스트에 보고할 것이다. 이러한 종류의 동작은 AHCI 사양을 위반하지 않는데, 그 이유는 각각의 명령이 통상적으로 호스트 메모리(44) 내의 전용 공간을 사전에 할당받기 때문이다. 한편, 이러한 종류의 동작은 상당한 병렬성, 따라서 성능 향상을 가능하게 한다.
도 2는 본 발명의 일 실시예에 따른 다수의 명령의 동시 AHCI 준수 실행을 위한 방법을 개략적으로 나타내는 흐름도이다. 방법은 입력 단계 70에서 SSD(28)의 SSD 제어기(52)가 호스트(24)로부터 다수의 저장 명령을 수신하는 것으로부터 시작된다.
실행 단계 74에서, SSD 제어기(52)는 플래시 장치들(48) 내에서 다수의 명령을 실행한다. 통상적으로, SSD 제어기는 소정의 내부 스케줄링 선호에 따라, 아마도 동시에 그리고 아마도 순서 없이 명령들을 실행한다. 명령 실행은 어느 명령이 호스트 내의 AHCI 드라이버(36)에 의해 현재 실행을 위해 선택되는지에 관계없이 수행된다. 실행 동안, SSD 제어기는 다양한 명령들의 진행, 예를 들어 어느 명령들이 현재 진행중이고 어느 명령들이 완료되었는지를 추적한다.
다수의 명령의 실행 동안, 보고 검사 단계 78에서, SSD 제어기(52)는 임의의 명령이 호스트에 보고되어야 하는 진행 갱신을 갖는지를 검사한다. 그렇지 않은 경우, 방법은 전술한 단계 74로 복귀한다. 주어진 명령이 보고되어야 하는 진행 갱신을 갖는 경우, 선택 검사 단계 82에서, SSD 제어기는 이 명령이 AHCI 사양에 따라 AHCI 드라이버(36)에 의해 현재 실행을 위해 선택된 단일 명령인지를 검사한다.
해당 명령이 AHCI 드라이버의 관점에서 현재 선택된 명령인 경우, 진행 보고 단계 86에서, SSD 제어기는 적절한 AHCI 레지스터들을 갱신함으로써 이 명령의 진행을 보고한다. 그렇지 않은 경우, 연기 단계 90에서, SSD 제어기는 진행 보고를 연기한다. SSD 제어기는 통상적으로 진행 보고를 캐싱하고, 나중에 해당 명령이 AHCI 드라이버에 의해 실행을 위해 선택되는 것을 검출할 때 AHCI 레지스터들을 갱신한다. 이어서, 방법은 전술한 단계 74로 복귀한다.
다수의 명령의 실행 동안, 데이터 검사 단계 94에서, SSD 제어기(52)는 임의의 명령이 호스트 메모리(44)와 교환할 데이터를 갖는지를 검사한다. 그렇지 않은 경우, 방법은 전술한 단계 74로 복귀한다. 주어진 명령이 교환할 데이터를 갖는 경우, 데이터 전송 단계 98에서, SSD 제어기는 적용 가능한 대로 호스트 메모리로 또는 호스트 메모리로부터 데이터를 전송한다. SSD 제어기는 주어진 명령이 AHCI 드라이버에 의해 실행을 위해 현재 선택되는지에 관계없이 데이터가 이용 가능하게 되자마자 또는 데이터가 요구되자마자 데이터를 전송한다. 이어서, 방법은 전술한 단계 74로 복귀한다.
전술한 실시예들은 예시적으로 제공되며, 본 발명은 위에서 구체적으로 설명되고 제시된 것으로 한정되지 않는다는 것을 알 것이다. 오히려, 본 발명의 범위는 전술한 다양한 특징들의 조합들 및 하위 조합들 모두는 물론, 위의 설명을 읽을 때 이 분야의 기술자들에게 떠오르고 종래 기술에서 개시되지 않은 다양한 변형들 및 변경들도 포함한다. 본 특허 출원에 참고로 포함된 문헌들은 본원의 구성 요소로서 간주되어야 하며, 다만 이러한 포함된 문헌들에서 임의의 용어들이 본 명세서에서 명시적으로 또는 암시적으로 이루어지는 정의들과 충돌하는 방식으로 정의된다면, 본 명세서에서의 정의들만이 고려되어야 한다.

Claims (20)

  1. 임의의 주어진 시간에 단일 명령만의 처리를 지원하는 저장 프로토콜에 따라 메모리에서의 실행을 위한 다수의 명령을 호스트로부터 수신하는 단계;
    제1 시간에, 제1 명령과 다른 제2 명령이 상기 저장 프로토콜에 따라 상기 처리가 현재 지원되는 상기 단일 명령으로서 역할하도록 선택되는 경우에도, 상기 메모리에서 상기 제1 명령을 실행하고, 상기 제1 명령과 관련된 데이터를 상기 호스트와 교환하는 단계; 및
    상기 제1 명령이 상기 처리가 현재 지원되는 상기 단일 명령으로서 역할하도록 선택되는 것을 검출할 때, 상기 제1 시간보다 늦은 제2 시간에 상기 제1 명령의 진행을 상기 호스트에 보고하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 저장 프로토콜은 AHCI(Advanced Host Controller Interface) 프로토콜을 포함하는 방법.
  3. 제1항에 있어서, 상기 제1 명령을 실행하는 단계는 상기 제1 시간에 상기 제1 명령의 진행을 보고하는 것을 억제하는 단계를 포함하는 방법.
  4. 제1항에 있어서, 상기 제1 명령을 실행하는 단계는 상기 제1 시간에 상기 제1 명령의 진행을 캐싱(caching)하는 단계를 포함하고, 상기 진행을 보고하는 단계는 상기 캐싱된 진행을 상기 제2 시간에 상기 호스트에 보고하는 단계를 포함하는 방법.
  5. 제4항에 있어서, 상기 호스트는 처리가 지원되는 상기 단일 명령의 진행을 보고하기 위한 하나 이상의 레지스터를 제공하며, 상기 진행을 보고하는 단계는 상기 캐싱된 진행으로 상기 레지스터들을 갱신하는 단계를 포함하는 방법.
  6. 제1항에 있어서, 상기 데이터를 교환하는 단계는 적어도 하나의 다른 명령과 관련된 추가적인 데이터와 인터리빙(interleaving)된 상기 제1 명령과 관련된 상기 데이터의 둘 이상의 부분을 교환하는 단계를 포함하는 방법.
  7. 제1항에 있어서, 상기 데이터를 교환하는 단계는 상기 제1 명령이 상기 저장 프로토콜에 따라 상기 처리가 현재 지원되는 상기 단일 명령이 아닌 경우에도 상기 제1 명령과 관련된 상기 데이터를 상기 호스트와 교환하는 단계를 포함하는 방법.
  8. 제1항에 있어서, 상기 제1 명령을 실행하는 단계는 상기 제1 명령이 상기 저장 프로토콜에 따라 상기 처리가 현재 지원되는 상기 단일 명령이 아닌 경우에도 상기 제1 명령을 실행하는 단계를 포함하는 방법.
  9. 제1항에 있어서, 상기 명령들을 수신하는 단계는 상기 호스트로부터 상기 명령들을 제1 순서로 억셉트(accept)하는 단계를 포함하고, 상기 명령들을 상기 제1 순서와 다른 제2 순서로 실행하는 단계를 포함하는 방법.
  10. 제1항에 있어서, 상기 데이터를 교환하는 단계는 상기 호스트의 프로세서와 관계없이 상기 호스트 내의 호스트 메모리로 또는 상기 호스트 메모리로부터 상기 데이터를 전송하는 단계를 포함하는 방법.
  11. 메모리; 및
    임의의 주어진 시간에 단일 명령만의 처리를 지원하는 저장 프로토콜에 따라 상기 메모리에서의 실행을 위한 다수의 명령을 호스트로부터 수신하고, 제1 명령과 다른 제2 명령이 상기 저장 프로토콜에 따라 상기 처리가 현재 지원되는 상기 단일 명령으로서 역할하도록 선택되는 경우에도, 제1 시간에 상기 메모리에서 상기 제1 명령을 실행하고, 상기 제1 명령과 관련된 데이터를 상기 호스트와 교환하며, 상기 제1 명령이 상기 처리가 지원되는 상기 단일 명령으로서 역할하도록 선택되는 것을 검출할 때, 상기 제1 시간보다 늦은 제2 시간에 상기 제1 명령의 진행을 상기 호스트에 보고하도록 구성되는 메모리 제어기
    를 포함하는 장치.
  12. 제11항에 있어서, 상기 저장 프로토콜은 AHCI(Advanced Host Controller Interface) 프로토콜을 포함하는 장치.
  13. 제11항에 있어서, 상기 메모리 제어기는 상기 제1 시간에 상기 제1 명령의 진행을 보고하는 것을 억제하도록 구성되는 장치.
  14. 제11항에 있어서, 상기 메모리 제어기는 상기 제1 시간에 상기 제1 명령의 진행을 캐싱하고, 상기 캐싱된 진행을 상기 제2 시간에 상기 호스트에 보고하도록 구성되는 장치.
  15. 제14항에 있어서, 상기 호스트는 처리가 지원되는 상기 단일 명령의 진행을 보고하기 위한 하나 이상의 레지스터를 제공하며, 상기 메모리 제어기는 상기 캐싱된 진행으로 상기 레지스터들을 갱신함으로써 상기 진행을 보고하도록 구성되는 장치.
  16. 제11항에 있어서, 상기 메모리 제어기는 적어도 하나의 다른 명령과 관련된 추가적인 데이터와 인터리빙된 상기 제1 명령과 관련된 상기 데이터의 둘 이상의 부분을 교환하도록 구성되는 장치.
  17. 제11항에 있어서, 상기 메모리 제어기는 상기 제1 명령이 상기 저장 프로토콜에 따라 상기 처리가 현재 지원되는 상기 단일 명령이 아닌 경우에도 상기 제1 명령과 관련된 상기 데이터를 상기 호스트와 교환하도록 구성되는 장치.
  18. 제11항에 있어서, 상기 메모리 제어기는 상기 제1 명령이 상기 저장 프로토콜에 따라 상기 처리가 현재 지원되는 상기 단일 명령이 아닌 경우에도 상기 제1 명령을 실행하도록 구성되는 장치.
  19. 제11항에 있어서, 상기 메모리 제어기는 상기 호스트로부터 상기 명령들을 제1 순서로 수신하고, 상기 명령들을 상기 제1 순서와 다른 제2 순서로 실행하도록 구성되는 장치.
  20. 호스트; 및
    저장 장치
    를 포함하고,
    상기 저장 장치는, 임의의 주어진 시간에 단일 명령만의 처리를 지원하는 저장 프로토콜에 따라 상기 저장 장치의 메모리에서의 실행을 위한 다수의 명령을 상기 호스트로부터 수신하고, 제1 명령과 다른 제2 명령이 상기 저장 프로토콜에 따라 상기 처리가 현재 지원되는 상기 단일 명령으로서 역할하도록 선택되는 경우에도, 제1 시간에 상기 메모리에서 상기 제1 명령을 실행하고, 상기 제1 명령과 관련된 데이터를 상기 호스트와 교환하며, 상기 제1 명령이 상기 처리가 지원되는 상기 단일 명령으로서 역할하도록 선택되는 것을 검출할 때, 상기 제1 시간보다 늦은 제2 시간에 상기 제1 명령의 진행을 상기 호스트에 보고하도록 구성되는 시스템.
KR1020120153134A 2011-12-27 2012-12-26 고성능 ahci 인터페이스 KR101428317B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161580324P 2011-12-27 2011-12-27
US61/580,324 2011-12-27
US13/560,152 2012-07-27
US13/560,152 US8713204B2 (en) 2011-12-27 2012-07-27 High-performance AHCI interface

Publications (2)

Publication Number Publication Date
KR20130075694A true KR20130075694A (ko) 2013-07-05
KR101428317B1 KR101428317B1 (ko) 2014-08-07

Family

ID=47522271

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120153134A KR101428317B1 (ko) 2011-12-27 2012-12-26 고성능 ahci 인터페이스

Country Status (9)

Country Link
US (1) US8713204B2 (ko)
EP (1) EP2610731A3 (ko)
JP (1) JP5896328B2 (ko)
KR (1) KR101428317B1 (ko)
CN (1) CN103186351B (ko)
BR (1) BR102012033264A2 (ko)
DE (1) DE202012013729U1 (ko)
TW (1) TWI474254B (ko)
WO (1) WO2013101357A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101988287B1 (ko) * 2012-11-26 2019-06-12 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
TWI507883B (zh) * 2013-09-18 2015-11-11 Realtek Semiconductor Corp 記憶卡存取裝置、其控制方法與記憶卡存取系統
CN105808444B (zh) * 2015-01-19 2019-01-01 东芝存储器株式会社 存储装置及非易失性存储器的控制方法
KR102564165B1 (ko) 2016-04-25 2023-08-04 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04190435A (ja) 1990-11-26 1992-07-08 Hitachi Ltd マルチプロセッサシステムのメモリアクセス順序保証方式
JPH05189154A (ja) 1992-01-14 1993-07-30 Nec Corp シーケンシャル動作ディスクファイル装置
JPH11167557A (ja) 1997-12-02 1999-06-22 Hitachi Ltd 共有メモリアクセス順序保証方法及びマルチプロセッサシステム
US6141707A (en) * 1998-05-28 2000-10-31 Emc Corporation Input/output request allocation by establishing master command queue among plurality of command queues to receive and store commands, determine logical volume, and forwarding command to determined logical volume
JP2005215729A (ja) 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置
US20070174504A1 (en) * 2006-01-05 2007-07-26 Pao-Ching Tseng Method and Apparatus for Advanced Technology Attachment Packet Interface Native Command Queuing
US7464228B2 (en) 2006-05-31 2008-12-09 Dell Products L.P. System and method to conserve conventional memory required to implement serial ATA advanced host controller interface
US7844777B2 (en) * 2007-06-26 2010-11-30 Intel Corporation Cache for a host controller to store command header information
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
US8131921B2 (en) 2008-09-17 2012-03-06 Intel Corporation Command suspension in response, at least in part, to detected acceleration and/or orientation change
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
US8200857B2 (en) * 2009-11-30 2012-06-12 Lsi Corporation Coalescing multiple contexts into a single data transfer in a media controller architecture
US8219776B2 (en) 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
JP5216719B2 (ja) 2009-08-27 2013-06-19 京セラドキュメントソリューションズ株式会社 情報処理装置および制御装置
TWI405085B (zh) * 2010-01-29 2013-08-11 Innostor Technology Corp 應用於儲存裝置之多重傳輸介面的切換方法
GB2481384B (en) * 2010-06-21 2018-10-10 Advanced Risc Mach Ltd Key allocation when tracing data processing systems
US8281043B2 (en) * 2010-07-14 2012-10-02 Intel Corporation Out-of-band access to storage devices through port-sharing hardware
US8595522B2 (en) 2010-09-30 2013-11-26 Intel Corporation Monitoring transaction requests using a policy engine within a storage drive driver to change power capability and latency settings for a storage drive

Also Published As

Publication number Publication date
WO2013101357A1 (en) 2013-07-04
CN103186351B (zh) 2016-05-25
US20130166781A1 (en) 2013-06-27
US8713204B2 (en) 2014-04-29
JP2013137772A (ja) 2013-07-11
TW201342193A (zh) 2013-10-16
BR102012033264A2 (pt) 2013-10-08
DE202012013729U1 (de) 2020-07-07
KR101428317B1 (ko) 2014-08-07
CN103186351A (zh) 2013-07-03
EP2610731A3 (en) 2016-10-12
JP5896328B2 (ja) 2016-03-30
TWI474254B (zh) 2015-02-21
EP2610731A2 (en) 2013-07-03

Similar Documents

Publication Publication Date Title
US8683126B2 (en) Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8583839B2 (en) Context processing for multiple active write commands in a media controller architecture
US20150212734A1 (en) Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8954644B2 (en) Apparatus and method for controlling memory
KR101428317B1 (ko) 고성능 ahci 인터페이스
KR101857911B1 (ko) 가상채널을 이용한 다중 채널 메모리 제어기
CN115495389A (zh) 存储控制器、计算存储装置以及计算存储装置的操作方法
US7409486B2 (en) Storage system, and storage control method
US7913013B2 (en) Semiconductor integrated circuit
US9128924B2 (en) Method and apparatus for wireless broadband systems direct data transfer
US9110856B2 (en) Interface control apparatus, data storage apparatus and method for interface control
Xue et al. Softssd: Software-defined ssd development platform for rapid flash firmware prototyping
JP2016528634A (ja) ハードウェア自動デバイス・オペレーション・イニシエータの実装するための方法およびコントローラ
Yan et al. An efficient parallel executing command scheduler for NAND flash storage systems
CN110968537B (zh) 一种基于pcie ssd的fpga搜索匹配方法

Legal Events

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

Payment date: 20170704

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 5