KR101988287B1 - 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법 - Google Patents

저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법 Download PDF

Info

Publication number
KR101988287B1
KR101988287B1 KR1020120134589A KR20120134589A KR101988287B1 KR 101988287 B1 KR101988287 B1 KR 101988287B1 KR 1020120134589 A KR1020120134589 A KR 1020120134589A KR 20120134589 A KR20120134589 A KR 20120134589A KR 101988287 B1 KR101988287 B1 KR 101988287B1
Authority
KR
South Korea
Prior art keywords
interface
host
data
storage device
memory access
Prior art date
Application number
KR1020120134589A
Other languages
English (en)
Other versions
KR20140067404A (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 삼성전자주식회사
Priority to KR1020120134589A priority Critical patent/KR101988287B1/ko
Priority to US14/038,892 priority patent/US8990462B2/en
Priority to DE102013112894.7A priority patent/DE102013112894A1/de
Priority to NL2011838A priority patent/NL2011838B1/en
Priority to CN201310608184.5A priority patent/CN103838687B/zh
Priority to JP2013243556A priority patent/JP6265706B2/ja
Publication of KR20140067404A publication Critical patent/KR20140067404A/ko
Application granted granted Critical
Publication of KR101988287B1 publication Critical patent/KR101988287B1/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/38Information transfer, e.g. on bus
    • 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
    • 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
    • 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/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

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)
  • Bus Control (AREA)

Abstract

본 발명에 따른 저장 장치는, 제 1 인터페이스에 따라 데이터를 송수신하는 제 1 인터페이스 회로, 상기 제 1 인터페이스 회로와 상기 제 1 인터페이스에 따라 통신하는 호스트 버스 어댑터, 상기 호스트 버스 어댑터와 상기 제 2 인터페이스에 따라 통신하는 제 2 인터페이스 에뮬레이터, 외부의 호스트 메모리와 데이터 전송을 수행하기 위한 직접 메모리 억세스 회로, 데이터를 저장하는 적어도 하나의 비휘발성 메모리 장치, 및 상기 제 2 인터페이스 에뮬레이터에서 출력된 입출력 요청에 따라 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고, 상기 직접 메모리 억세스 회로는 상기 데이터 전송시 상기 제 1 인터페이스 회로부터 양방향 데이터 전송을 수행하도록 구현되고, 상기 데이터 전송 후에 상기 제 2 인터페이스에 따른 프레임 정보 구조 시퀀스가 발생된다.

Description

저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법{STORAGE DEVICE AND COMPUTING SYSTEM HAVINT ITS AND DATA TRANSFERING METHOD THEREOF}
본 발명은 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법에 관한 것이다.
근래에 컴퓨팅 시스템(computing system)에서 저장 장치(storage device)로써 솔리드 스테이트 디스크(SSD, solid state drive)가 많이 사용되고 있다. SSD는 데이터를 저장하기 위하여 플래시 메모리와 같은 비휘발성 메모리를 사용하며, 종래의 HDD(hard disk drive)에 비교하여 내구성, 크기, 전력 등의 면에서 좋은 특성을 보인다. SSD는 호스트와의 통신 방법에 따라 PCI(peripheral component interconnect) SSD와 SATA(serial advanced technology attachment) SSD로 구분된다.
본 발명은 양방향 데이터 전송을 수행할 수 있는 저장 장치를 제공하는데 있다.
본 발명은 호스트 버퍼 어댑터를 구비하는 저장 장치를 제공하는 데 있다.
본 발명의 실시 예에 따른 외부의 호스트와 제 1 인터페이스를 통해 통신하고 내부적으로 제 2 인터페이스를 통해 통신하도록 하기 위한 호스트 버스 어댑터를 구비한 저장 장치의 데이터 전송 방법은: 상기 호스트 버스 어댑터에 쓰기 커맨드 및 읽기 커맨드를 발행하는 단계; 상기 쓰기 커맨드에 응답하여 상기 제 1 인터페이스를 이용하여 읽기 직접 메모리 억세스 동작을 수행하면서, 상기 읽기 커맨드에 응답하여 상기 제 1 인터페이스를 이용하여 쓰기 직접 메모리 억세스 동작을 수행하는 단계; 및 상기 쓰기 커맨드 및 상기 읽기 커맨드에 응답하여 상기 제 2 인터페이스에 따른 프레임 정보 구조 시퀀스들을 발생하는 단계를 포함하고, 상기 제 1 인터페이스는 양방향 데이터 전송을 수행하고, 상기 제 2 인터페이스는 단방향 데이터 전송을 수행한다.
본 발명의 실시 예에 따른 중앙처리장치, 메인 메모리, 상기 중앙처리장치와 제 1 인터페이스를 통해 통신하고 내부적으로 제 2 인터페이스를 통해 통신하기 위한 호스트 버퍼 어댑터를 구비한 저장 장치를 포함하는 컴퓨팅 시스템의 데이터 전송 방법은: 상기 메인 메모리에 입출력 요청에 대응하는 커맨드 큐를 전송하는 단계; 상기 메인 메모리에 상기 입출력 요청되었다는 정보를 상기 호스트 버퍼 어댑터에 전송하는 단계; 상기 정보에 응답하여 상기 메인 메모리에 상기 입출력 요청에 대응하는 프레임 정보 구조를 전송함으로써 상기 입출력 요청을 페칭하는 단계; 상기 입출력 요청에 응답하여 상기 제 1 인터페이스에 따라 상기 메인 메모리와 상기 저장 장치 사이에서 데이터를 전송하는 단계; 상기 데이터 전송 후에 상기 제 2 인터페이스에 따라 프레임 정보 구조 시퀀스를 발생하는 단계; 상기 저장 장치에서 인터럽트를 발생하는 단계; 및 상기 중앙처리 장치에서 상기 발생된 인터럽트를 근거로 하여 상기 입출력 요청을 완료하는 단계를 포함한다.
본 발명의 실시 예에 따른 저장 장치는, 제 1 인터페이스에 따라 외부와 통신하는 제 1 인터페이스 회로; 상기 제 1 인터페이스 회로와 상기 제 1 인터페이스에 따라 통신하는 호스트 버스 어댑터; 상기 호스트 버스 어댑터와 제 2 인터페이스에 따라 통신하는 제 2 인터페이스 에뮬레이터; 외부의 호스트 메모리와 데이터 전송을 수행하기 위한 직접 메모리 억세스 회로; 데이터를 저장하는 적어도 하나의 비휘발성 메모리 장치; 및 상기 제 2 인터페이스 에뮬레이터에서 출력된 입출력 요청에 따라 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고, 상기 직접 메모리 억세스 회로는 상기 데이터 전송시 상기 제 1 인터페이스 회로부터 양방향 데이터 전송을 수행하도록 구현되고, 상기 데이터 전송 후에 상기 제 2 인터페이스에 따른 프레임 정보 구조 시퀀스가 발생된다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은, 호스트 버스; 상기 호스트 버스에 제 1 인터페이스를 통하여 연결된 호스트 프로세서; 상기 호스트 프로세서에 연결된 호스트 메모리; 상기 호스트 버스에 상기 제 1 인터페이스를 통하여 연결되고 RAID(redundant array of independent disks) 기능을 수행하기 위한 레이드 제어기; 및 상기 레이드 제어기에 상기 제 1 인터페이스를 통하여 연결된 복수의 저장 장치들을 포함하고, 상기 복수의 저장 장치들 중에서 적어도 하나는, 상기 제 1 인터페이스에 따라 데이터를 송수신하는 제 1 인터페이스 회로; 상기 제 1 인터페이스 회로와 상기 제 1 인터페이스에 따라 통신하는 호스트 버스 어댑터; 상기 호스트 버스 어댑터와 상기 제 2 인터페이스에 따라 통신하는 제 2 인터페이스 에뮬레이터; 상기 호스트 메모리와 데이터 전송을 수행하기 위한 직접 메모리 억세스 회로; 데이터를 저장하는 적어도 하나의 비휘발성 메모리 장치; 및 상기 제 2 인터페이스 에뮬레이터에서 출력된 입출력 요청에 따라 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고, 상기 직접 메모리 억세스 회로는 상기 데이터 전송시 상기 제 1 인터페이스 회로부터 양방향 데이터 전송을 수행하도록 구현되고, 상기 데이터 전송 후에 상기 제 2 인터페이스에 따른 프레임 정보 구조 시퀀스가 발생된다.
본 발명의 실시 예에 따른 저장 장치는, 호스트 버스 어댑터 드라이버를 구비함으로써 종래의 그것과 비교하여 호환성을 유지할 수 있다.
또한 본 발명의 실시 예에 다른 저장 장치는 양방향 데이터 전송을 수행함으로써, 데이터 전송 효율을 극대화시킬 수 있다.
도 1은 본 발명에 따른 컴퓨팅 시스템에 대한 제 1 실시 예를 보여주는 블록도이다.
도 2는 본 발명의 실시 예 따른 호스트 및 저장 장치 사이의 데이터 흐름을 개략적으로 보여주는 도면이다.
도 3은 도 2에 도시된 양방향 데이터 전송을 예시적으로 보여주는 흐름도이다.
도 4는 본 발명에 따른 데이터 전송 방법을 예시적으로 보여주는 흐름도이다.
도 5는 본 발명에 따른 컴퓨팅 시스템에 대한 제 2 실시 예를 보여주는 블록도이다.
도 6은 본 발명에 따른 컴퓨팅 시스템에 대한 제 3 실시 예를 보여주는 블록도이다.
도 7은 본 발명에 따른 컴퓨팅 시스템에 대한 제 4 실시 예를 보여주는 블록도이다.
도 8은 본 발명에 따른 컴퓨팅 시스템에 대한 제 5 실시 예를 보여주는 블록도이다.
도 9는 본 발명에 따른 컴퓨팅 시스템에 대한 제 6 실시 예를 보여주는 블록도이다.
도 10은 본 발명의 실시 예에 따른 입출력 요청 관점에서 바라본 컴퓨팅 시스템을 보여주는 도면이다.
도 11은 도 10에 도시된 AHCI 제어기를 포함하는 SSD 제어기의 PCI 헤더를 예시적으로 보여주는 도면이다.
도 12는 도 10에 도시된 AHCI 엔진에 저장되는 호스트 제어 정보를 예시적으로 보여주는 도면이다.
도 13은 도 10에 도시된 AHCI 엔진에 저장되는 포트 정보를 예시적으로 보여주는 도면이다.
도 14a~ 도14h는 도 10에 도시된 AHCI 엔진과 SATA 에뮬레이터 사이에 송수신되는 FIS에 대한 규정을 예시적으로 보여주는 도면들이다.
도 15는 도 10에 도시된 메인 메모리의 호스트 버퍼의 구조를 예시적으로 보여주는 도면이다.
도 16은 도 15에 도시된 커맨드 리스트 구조를 예시적으로 보여주는 도면이다.
도 17은 도 16에 도시된 커맨드 테이블을 예시적으로 보여주는 도면이다.
도 18은 도 15에 도시된 입력된 Received FIS 구조를 예시적으로 보여주는 도면이다.
도 19는 도 10에 도시된 컴퓨팅 시스템에서 진행되는 읽기 명령을 수행하는 과정을 예시적으로 보여주는 도면이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명에 따른 컴퓨팅 시스템(1000)에 대한 제 1 실시 예를 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(1000)은 호스트 버스(1001), 적어도 하나의 호스트 프로세서(1100), 적어도 하나의 호스트 메모리(1200), 및 저장 장치(1300)를 포함한다. 아래에서는 호스트 버스(1001), 적어도 하나의 호스트 프로세서(1110), 및 적어도 하나의 호스트 메모리(1200)를 호스트(Host)라고 부르겠다.
호스트 버스(1001)는 컴퓨팅 시스템(1000)의 구성 요소들(예를 들어, 프로세서(1100)과 저장 장치(1300)) 사이의 제 1 인터페이스(1st interface)에 따라 데이터를 전송할 수 있다. 여기서 제 1 인터페이스는 양방향 데이터 전송(full duplex, 다른 말로, '전이중 통신')이 가능한 인터페이스일 수 있다. 즉, 제 1 인터페이스는 독립적으로 이용 가능한 송신 채널(Tx) 및 수신 채널(Rx)을 제공할 것이다. 예를 들어, 제 1 인터페이스에는 FC(fiber channel), USB(universal serial bus) 3.0, SAS(serial attached SCSI), PCIe(peripheral component interconnect express), SPI(serial peripheral interface), 선더볼트 인터페이스(thunderbolt interface), 라이트닝 볼트 인터페이스(lightning bolt interface) 등이 될 수 있다.
호스트 프로세서(1100)는 컴퓨팅 시스템(1000)의 전반적인 동작을 제어한다. 호스트 프로세서(1100)는 제 1 인터페이스 회로(1110)를 포함한다. 제 1 인터페이스 회로(1110)는 제 1 인터페이스에 따라 호스트 버스(1001)에 연결될 것이다. 호스트 프로세서(1100)는 도시되지 않았지만 호스트 메모리(1200)를 제어하기 위한 메모리 제어기를 포함할 수 있다.
호스트 메모리(1200)는 호스트 프로세서(1100)에 연결되고, 호스트 프로세서(1100)의 제어에 따라 동작 중에 필요한 데이터를 저장할 수 있다. 호스트 메모리(1200)는 디램(DRAM)과 같은 비휘발성 메모리 장치 혹은 피램(PRAM)과 같은 비휘발성 메모리 장치로 구현될 수 있다.
저장 장치(1300)는 제 1 인터페이스에 따라 호스트 버스(1001)에 연결되고, 데이터를 저장한다. 저장 장치(1300)는 외부적으로 제 1 인터페이스에 따라 호스트 프로세서(1100)와 통신을 수행하고, 내부적으로 제 2 인터페이스에 따라 통신을 수행한다. 여기서 제 2 인터페이스는 제 1 인터페이스와 달리 양방향 데이터 전송(full duplex)을 수행하지 않고, 단반향 데이터 전송(half duplex)을 수행할 수 있다. 예를 들어, 제 2 인터페이스에는 ATA 인터페이스, SATA 인터페이스일 수 있다.
저장 장치(1300)는 제 1 인터페이스 회로(1320, 다른 말로, '외부 인터페이스 회로'), 호스트 버스 어댑터(1320), 제 2 인터페이스 에뮬레이터(1330, 다른 말로, '내부 인터페이스 회로'), 직접 메모리 억세스(direct memory access; DMA) 회로(1340), 적어도 하나의 비휘발성 메모리 장치(1350), 및 메모리 제어기(1360)를 포함한다.
제 1 인터페이스 회로(1320)는 호스트 버스(1001)에 연결되고, 외부와 제 1 인터페이스에 따라 통신할 것이다.
호스트 버스 어댑터(1320)는 제 1 인터페이스에 따라 제 1 인터페이스 회로(1320)와 통신할 것이다. 호스트 버스 어댑터(1320)는 호스트 프로세서(1100)로부터 출력된 적어도 하나의 커맨드를 저장 장치(1300)가 이해하도록 구현된 하드웨어 및/혹은 소프트웨어일 수 있다. 실시 예에 있어서, 호스트 버스 어댑터(1320)는 AHCI(advanced host controller interface)일 수 있다.
제 2 인터페이스 에뮬레이터(1330)는 제 2 인터페이스에 따라 호스트 버스 어댑터(1320)와 통신할 것이다. 제 2 인터페이스 에뮬레이터(1330)는 저장 장치(1300)를 위한 제 2 인터페이스 에뮬레이션을 제공할 것이다. 예를 들어, 제 2 인터페이스 에뮬레이터(1330)는 제 2 인터페이스의 프레임 정보 구조(frame information structure; 이하, 'FIS')를 이용하여 호스트 버스 어댑터(1320)와 통신하도록 구현될 것이다. 따라서 FIS는 제 2 인터페이스 규정에 따른 데이터 패킷일 수 있다. 제 2 인터페이스 에뮬레이터(1330)는 메모리 제어기(1360)에/부터 FIS 트랜잭션(transaction)을 처리하거나, 호스트 버스 어댑터(1320)를 통하여 호스트의 FIS를 처리할 수 있다.
DMA 회로(1340)는 호스트 프로세서(1100)로부터 입력된 NCQ(native command queuing) 커맨드(write command, read command)에 따라 제 1 인터페이스 회로(1310)를 제어함으로써, 저장 장치(1300)가 호스트 메모리(1200)에 데이터를 읽거나 쓸 수 있도록 구현될 것이다. DMA 회로(1340)는 호스트 버스(1001)의 송신 채널(TX)와 수신 채널(RX)을 이용하여 양방향 데이터 전송(full duplex data transfer)을 수행하기 위한 송신 DMA 회로(도시되지 않음) 및 수신 DMA 회로(도시되지 않음)를 구비할 수 있다.
적어도 하나의 비휘발성 메모리 장치(1350)는 데이터를 저장하는 장치로써, 플래시 메모리(예를 들어, 낸드 플래시 메모리), PRAM(phase-change RAM), MRAM(magnetic RAM), RRAM(resistive RAM), FRAM(ferroelectric RAM), VNAND(vertical NAND) 등과 같은 비휘발성 메모리 장치 중 적어도 하나일 수 있다.
메모리 제어기(1360)는 제 2 인터페이스 에뮬레이터(1330)로부터 출력된 FIS 트랜잭션에 따라 적어도 하나의 비휘발성 메모리 장치(1350)를 제어할 수 있다.
일반적으로, 제 2 인터페이스(예를 들어, 단방향 데이터 전송하는 인터페이스)를 지원하는 저장 장치는 양방향 데이터 전송을 수행할 수 없다. 반면에, 본 발명의 실시 예에 따른 컴퓨팅 시스템(1000)은, 저장 장치(1300)가 제 1 인터페이스(예를 들어, 양방향 데이터 전송하는 인터페이스)를 지원하는 호스트 버스 어댑터(1320) 및 제 2 인터페이스의 FIS를 이용하여 호스트 버스 어댑터와 통신하는 제 2 인터페이스 에뮬레이터(1330)를 구비함으로써, 내부적으로 제 2 인터페이스에 따라 데이터를 전송하면서도 외부적으로 제 1 인터페이스에 따라 양방향 데이터 전송을 가능케 할 수 있다. 즉, 본 발명에 따른 컴퓨팅 시스템(1000)은 제 2 인터페이스 조건을 만족하면서 데이터 전송 속도를 두 배로 극대화시킬 수 있다.
또한, 본 발명의 실시 예에 따른 컴퓨팅 시스템(1000)은 제 1 인터페이스를 지원하는 호스트 버스 어댑터(1320)를 갖는 저장 장치(1300)를 구비함으로써, 종래의 그것과 비교하여 저장 장치(1300)를 위한 호스트 드라이버(host driver)를 별도로 개발할 필요가 없다. 즉, 본 발명의 실시 예에 따른 호스트 프로세서(1100)는 종래의 호스트 드라이버를 이용하여 본 발명의 저장 장치(1300)를 구동할 수 있다.
도 2는 본 발명의 실시 예 따른 호스트 및 저장 장치 사이의 데이터 흐름을 개략적으로 보여주는 도면이다. 도 1 및 도 2를 참조하면, 데이터 흐름은 다음과 같다.
호스트 프로세서(1100)는 저장 장치(1300)에 데이터 전송과 관련된 NCQ 커맨드(쓰기 커맨드 혹은 읽기 커맨드, CMD)을 수행할 수 있는지를 먼저 판별할 것이다. 이를 위하여 호스트 프로세서(1100)는 이전 커맨드(prior CMD)가 완료되었는지 확인하기 위한 호스트 버스 어댑터(1320)의 레지스터를 읽는다(S11). 만일, 호스트 버스 어댑터(1320)의 레지스터를 읽은 결과로써, 이전 커맨드(prior CMD)가 완료되었다면, 호스트 프로세서(1100)는 커맨드(CMD)을 호스트 메모리(1200)에 발행할 것이다(S12). 이 후에, 호스트 프로세서(1100)는 호스트 메모리(1200)에 커맨드(CMD)가 발행되었다는 사실을 알려주는 커맨드 FIS(CMD FIS)를 호스트 버스 어댑터(1320)에 전송할 것이다(S13). 이후, 제 2 인터페이스 에뮬레이터(1330)는 호스트 메모리(1200)에 커맨드 FIS 관련 정보(예를 들어, 커맨드 종류, 어드레스, 데이터 등)를 저장시킴으로써 커맨드 페칭(CMD Fetching)할 것이다(S14). 이로써, 호스트 메모리(1200)는 저장 장치(1300)와 데이터를 전송할 수 있는 영역을 설정하게 될 것이다.
이 후에 읽기 커맨드 혹은 쓰기 커맨드(CMD)에 의하여 호스트 메모리(1200)과 저장 장치(1300) 사이에서 제 2 인터페이스 규정을 만족하면서 데이터 전송이 수행될 것이다. 여기서 데이터 전송은 양방향 데이터 전송이 될 수 있다. 즉, 동시에 입력된 읽기 커맨드와 쓰기 커맨드에 따라 양방향 데이터 전송이 수행되거나, 읽기 커맨드와 쓰기 커맨드가 혼재된 상태에서 양방향 데이터 전송이 수행될 수 있다(S15). 데이터 전송이 완료되면, 호스트 버스 어댑터(1320)는 인터럽트를 호스트 메모리(1200)에 전송할 것이다(S16). 이 후, 호스트 프로세서(1100)는 커맨드(CMD)에 따른 동작이 완료되었다는 커맨드 완료 정보를 호스트 메모리(1200)에 전송할 것이다(S17).
본 발명에 따른 컴퓨팅 시스템(1000)은 NCQ 커맨드(CMD)에 따라 양방향 데이터 전송을 수행할 수 있다.
도 3은 도 2에 도시된 양방향 데이터 전송을 예시적으로 보여주는 흐름도이다. 도 3을 참조하면, 양방향 데이터 전송은 다음과 같다.
DMA 회로(1340)의 송신 DMA 회로는 쓰기 커맨드(Write CMD)에 따라 시스템 버스(1001)의 송신 채널(TX)을 이용하여 쓰기 데이터(Write Data)를 호스트 메모리(1200)로부터 입력받고, DMA 회로(1340)의 수신 DMA 회로는 읽기 커맨드(Read CMD)에 따라 시스템 버스(1001)의 수신 채널(RX)을 이용하여 읽기 데이터(Read Data)를 호스트 메모리(1200)로 전송할 것이다(S21). 즉, 쓰기 데이터(Write Data) 및 읽기 데이터(Read Data) 전송은 병렬로 처리될 수 있다.
시스템 버스(1001)의 송신 채널(TX)을 통하여 쓰기 데이터(Write Data)가 전송이 완료되면, 제 2 인터페이스 규정에 따른 쓰기 데이터 FIS(Write Data FIS: DMA Setup FIS, Non-Data FIS, SDB(set device bits) FIS)가 호스트 메모리(1200)에 전송될 것이다(S22, S23, S24). 여기서 DMA Setup FIS는 데이터를 송신하기 위하여 DMA 회로(1340, 도 1 참조)를 설정한다는 정보를 포함하고, Non-Data FIS는 데이터가 없다는 정보를 포함하고, SDB FIS는 데이터 송신을 완료했는지, 송신 상태가 성공했는지 정보를 포함할 것이다. 여기서 Non-Data FIS는 호스트 메모리(1200)에서 발생하여 저장 장치(1300)로 전송될 것이다. 도시되지 않았지만, 제 2 인터페이스 전송 규정을 만족하기 위하여 Data FIS는 제 2 인터페이스 에뮬레이터(1330, 도 1 참조)에서 헤더만 발생되고, 발생된 Data FIS는 호스트 버스 어댑터(1320, 도 1 참조)에서 제 2 인터페이스 에뮬레이션을 위해 이용될 것이다.
또한, 시스템 버스(1001)의 수신 채널(RX)를 통하여 읽기 데이터(Read Data)가 전송이 완료되면, 제 2 인터페이스 규정에 따른 읽기 데이터 FIS(Read Data FIS: DMA Setup FIS, Non-Data FIS, SDB FIS)가 호스트 메모리(1200)에 전송될 것이다(S25, S26, S27). 여기서 DMA Setup FIS는 데이터를 수신하기 위하여 DMA 회로(1340, 도 1 참조)할지 정보를 포함하고, Non-Data FIS는 데이터가 없다는 정보를 포함하고, SDB FIS는 데이터 수신을 완료했는지, 수신 상태가 성공했는지 정보를 포함할 것이다.
실시 예에 있어서, 쓰기 데이터 FIS(Write Data FIS) 및 읽기 데이터(Read Data FIS)는 쓰기 데이터(Write Data) 및 읽기 데이터(Read Data) 전송이 끝난 후에 순차적으로 발생할 수 있다.
실시 예에 있어서, 쓰기 데이터 FIS(Write Data FIS) 및 읽기 데이터(Read Data FIS) 각각은 DMA Setup FIS, Non-Data FIS, SDB FIS를 순차적으로 발생할 수 있다.
본 발명의 실시 예에 따른 양방향 데이터 전송 방법은, 제 1 인터페이스 규정에 따른 쓰기 데이터(Write Data) 및 읽기 데이터(Read Data) 전송을 수행한 뒤, 제 2 인터페이스 규정에 따른 DATA FIS(Write FIS, Read FIS)를 가상으로 발생 및 전송할 것이다.
도 4는 본 발명에 따른 데이터 전송 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 4를 참조하면, 데이터 전송 방법은 다음과 같다.
호스트 프로세서(1100)는 저장 장치(1300)에 NCQ 커맨드(읽기/쓰기)를 발행한다(S110). 여기서 NCQ 커맨드는 쓰기 커맨드 및 읽기 커맨드를 동시에 발행하거나, 순차적으로 발행할 것이다. NCQ 커맨드에 따라 호스트 메모리(1200) 및 저장 장치(1300) 사이에서 제 1 인터페이스를 이용하여 병렬적으로 쓰기 DMA 동작과 읽기 DMA 동작이 수행될 것이다(S120). 쓰기 DAM 동작 및 읽기 DMA 동작이 완료된 후에 제 2 인터페이스를 만족하기 위한 데이터 FIS 시퀀스(예를 들어, DMA Setup FIS ⇒ Non-Data FIS ⇒ SDB FIS) 가 저장 장치(1300)로부터 호스트 메모리(1200)에 전송될 것이다(S130).
본 발명의 실시 예에 따른 데이터 전송 방법은, 제 1 인터페이스 규정에 따라 DMA 동작들을 수행한 뒤에, 제 2 인터페이스 규정에 따라 Data FIS를 전송할 것이다.
도 1 내지 도 4에서 설명된 컴퓨팅 시스템(1000)은 외부적으로 제 1 인터페이스 규정에 따라 호스트 버스(1001)에 연결되고 내부적으로 제 2 인터페이스 규정에 따라 동작하는 저장 장치(1300)를 구비하였다. 본 발명의 실시 예에 따른 컴퓨팅 시스템은 제 1 인터페이스 규정에 따라 호스트 버스에 연결하고 및 동작하는 저장 장치를 더 포함할 수 있다.
도 5는 본 발명에 따른 컴퓨팅 시스템에 대한 제 2 실시 예를 보여주는 블록도이다. 도 5을 참조하면, 컴퓨팅 시스템(2000)은 호스트 버스(2001), 적어도 하나의 호스트 프로세서(2100), 적어도 하나의 호스트 메모리(2200), 제 1 저장 장치(2300) 및 제 2 저장 장치(2400)를 포함한다. 여기서 호스트 버스(2001), 호스트 프로세서(2100), 및 호스트 메모리(2200)는 도 1에 도시된 호스트 버스(1001), 호스트 프로세서(1100), 호스트 메모리(1200)에 동일한 동작으로 및 구조로 구현될 것이다.
제 2 저장 장치(2400)는 제 1 인터페이스에 따라 호스트 버스(2001)에 연결된다. 제 2 저장 장치(2400)는 제 1 인터페이스 회로(2410), 적어도 하나의 비휘발성 메모리 장치(2450) 및 메모리 제어기(2460)를 포함한다. 제 1 인터페이스 회로(2410)는 제 1 인터페이스 규정에 따라 호스트와 통신을 수행하도록 구현될 것이다. 메모리 제어기(2460)는 제 1 인터페이스 규정에 따라 커맨드 및 데이터 전송을 수행하고, 호스트의 요청에 따라 비휘발성 메모리 장치(2450)를 제어할 것이다.
한편, 제 2 저장 장치(2400)는 제 1 인터페이스 저장 장치라고 불릴 수 있다. 이때, 제 1 저장 장치(2310)는 호스트가 제 1 인터페이스 저장 장치처럼 볼 수 있기 때문에 의사(pseudo) 제 1 인터페이스 저장 장치라고 불릴 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은 RAID(redundant array of independent disks) 기능을 더 포함할 수 있다. 여기서 RAID 기능은 복수의 저장 장치들을 하나의 논리 장치처럼 동작하게 함으로써, 개별 저장 장치의 제한된 용량을 사용자가 원하는 만큼 확장하거나, 저장 장치에 저장된 데이터의 안정성을 보전하기 위해 사용된다.
도 6은 본 발명에 따른 컴퓨팅 시스템에 대한 제 3 실시 예를 보여주는 블록도이다. 도 6을 참조하면, 컴퓨팅 시스템(3000)은 호스트 버스(3001), 적어도 하나의 호스트 프로세서(3100), 적어도 하나의 호스트 메모리(3200), RAID 제어기(3300), 제 1 저장 장치(3400) 및 제 2 저장 장치(3500)를 포함한다. 여기서 호스트 버스(3001), 호스트 프로세서(3100), 및 호스트 메모리(3200)는 도 1에 도시된 호스트 버스(1001), 호스트 프로세서(1100), 호스트 메모리(1200)에 동일한 동작으로 및 구조로 구현될 것이다.
RAID 제어기(3300)는 제 1 인터페이스에 따라 호스트 버스(3001)에 연결되고, RAID 기능을 제공하기 위하여 제 1 및 제 2 저장 장치들(3400, 3500)을 제어할 것이다. 여기서 RAID 기능은 데이터 미러링 기술을 포함할 수 있다. 예를 들어, 데이터 미러링 기술은 제 1 저장 장치(3400)에 데이터를 저장하면서 동시에 동일한 데이터를 제 2 저장 장치(3500)에 저장하는 것이다. 여기서 RAID 제어기(3300)는 제 1 인터페이스에 따라 제 1 및 제 2 저장 장치들(3400, 3500)에 연결될 것이다. 여기서 제 1 및 제 2 저장 장치들(3400, 3500) 각각은 도 1에 도시된 저장 장치(1300)와 동일한 구성 및 동작으로 구현될 것이다. 즉, 제 1 및 제 2 저장 장치들(3400, 3500) 각각은 의사 제 1 인터페이스 저장 장치이다.
본 발명의 실시 예에 따른 컴퓨팅 시스템(3000)은 의사 제 1 인터페이스 저장 장치들(3400, 3500)을 이용하여 RAID 기능을 수행할 수 있다.
도 6에 도시된 컴퓨팅 시스템(3000)에서 2개의 저장 장치들(3400, 3500)이 도시되었다. 하지만 본 발명의 RAID 기능을 수행하기 위한 저장 장치들의 개수에 여기에 제한되지 않을 것이다. 본 발명의 컴퓨팅 시스템(3000)은 3개 이상의 의사 제 1 인터페이스 저장 장치들을 이용하여 RAID 기능을 수행할 수 있다.
도 6에 도시된 컴퓨팅 시스템(3000)에서 저장 장치는 모두 의사 제 1 인터페이스 저장 장치들(3400, 3500)이었다. 하지만 본 발명의 컴퓨팅 시스템이 여기에 제한될 필요는 없다. 본 발명의 컴퓨팅 시스템은 적어도 하나의 HDD(hard disk drive)을 구비할 수 있다.
도 7은 본 발명에 따른 컴퓨팅 시스템에 대한 제 4 실시 예를 보여주는 블록도이다. 도 7을 참조하면, 컴퓨팅 시스템(4000)은 호스트 버스(4001), 적어도 하나의 호스트 프로세서(4100), 적어도 하나의 호스트 메모리(4200), RAID 제어기(4300), 저장 장치(4400) 및 HDD(4500)을 포함한다. 여기서 호스트 버스(4001), 호스트 프로세서(4100), 및 호스트 메모리(4200)는 도 1에 도시된 호스트 버스(1001), 호스트 프로세서(1100), 호스트 메모리(1200)에 동일한 동작으로 및 구조로 구현될 것이다.
RAID 제어기(4300)는 제 1 인터페이스에 따라 호스트 버스(4001)에 연결되고, RAID 기능을 제공하기 위하여 저장 장치(4400) 및 HDD(4500)을 제어할 것이다. RAID 제어기(4300)는 호스트의 쓰기 요청에 응답하여 쓰기 데이터를 저장 장치(4400)에 저장하는 동시에 HDD(4500)에도 저장시킬 것이다.
본 발명의 실시 예에 따른 컴퓨팅 시스템(4000)은 의사 제 1 인터페이스 저장 장치(4400) 및 HDD(4500)을 이용하여 하이브리드 방식으로 RAID 기능을 수행할 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은 제 1 인터페이스가 PCIe 인터페이스이고, 제 2 인터페이스가 SATA 인터페이스일 수 있다.
도 8은 본 발명에 따른 컴퓨팅 시스템에 대한 제 5 실시 예를 보여주는 블록도이다. 도 8을 참조하면, 컴퓨팅 시스템(5000)은 호스트 칩셋(5100)과 SSDe 저장 장치(5300)를 포함한다. 호스트 칩셋(5100)과 SSDe 저장 장치(5300)는 PCIe 인터페이스를 통하여 연결될 것이다.
호스트 칩셋(5100)은 AHCI 제어기(5110), PCIe 루프 포트(5120), 및 PCIe 레인(5130)을 포함한다. SSDe 저장 장치(5300)는 SSD 제어기(5001)를 포함한다. 여기서 SSD 제어기(5001)는 PCIe 물리층(5310), PCIe 링크층(5320), PCIe 전송층(5330), 및 AHCI 제어기(5340)를 포함한다.
PCIe 물리층(5310)은 PCIe 레인(5310)을 통하여 호스트 칩셋(5100)의 PCIe 루트 포트(5120)에 연결될 것이다. PCIe 물리층(5310)은 호스트 칩셋(5100)에서 수신한 아날로그 신호를 디지털 데이터로 변환하거나, 호스트 칩셋(5100)로부터 송신할 디지털 데이터를 아날로그 신호로 변환할 것이다.
PCIe 링크층(5320)은 PCIe 물리층(5310)의 디지털 데이터를 PCIe 표준 엔코딩/디코딩을 수행한다.
PCIe 전송층(5330)은 호스트 칩셋(5100)과 어플리케이션 층 사이에서 엔코딩/디코딩된 데이터(혹은, 데이터 패킷)를 전송하기 위한 FIS 관리한다. AHCI 제어기(5340)는 PCIe 규정의 데이터 패킷을 SATAe 규정의 데이터 패킷으로 변경한다.
AHCI 제어기(5340)는 SSDe 저장 장치(5300)를 PCIe 링크를 통해 호스트에 연결되어 있는 PCIe 저장 장치로 보이게 할 것이다.
본 발명의 실시 예에 따른 컴퓨팅 시스템(5000)은 호스트 칩셋(5100)과 SSDe 저장 장치(5300) 사이에서 PCIe 레인을 통하여 PCIe 링크 계층을 이용하여 데이터 패킷을 송수신할 것이다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은 의사 제 1 인터페이스 저장 장치와 제 2 인터페이스 저장 장치를 모두 포함할 수도 있다.
도 9는 본 발명에 따른 컴퓨팅 시스템에 대한 제 6 실시 예를 보여주는 블록도이다. 도 9을 참조하면, 컴퓨팅 시스템(6000)은 중앙처리장치(CPU, 6100), 디램(6200), 내부 채널 제어기(6300), AHCI 저장장치(6400), 및 SATA 저장장치(6500)를 포함한다. 중앙처리장치(6100) 및 디램(6200)은 도 1에 도시된 호스트 프로세서(1100) 및 호스트 메모리(1200) 각각에 대응할 것이다.
내부 채널 제어기(6100)는 PCIe 인터페이스에 따라 연결되고, PCIe 루트 콤플렉스(6310), AHCI 제어기(6320), SATA 제어기(6320)를 포함한다.
AHCI 저장장치(6400)는 PCIe 인터페이스를 통하여 내부 채널 제어기(6100)에 연결되고, PCIe 규정의 데이터 패킷을 SATA 규정의 데이터 패킷으로 변환하는 AHCI 제어기(6410)를 포함한다. AHCI 저장장치(6400)는 외부적으로 PCIe 저장장치로 보이나, 내부적으로 SATA 저장장치이다. AHCI 저장 장치(6400)는 도 1에 도시된 저장 장치(1300)와 동일한 동작 및 구성으로 구현될 것이다.
SATA 저장장치(6500)는 SATA 인터페이스를 통하여 내부 채널 제어기(6100)에 연결되고, SATA 규정의 데이터 패킷을 처리하는 SATA 제어기(6510)를 포함한다. SATA 저장장치(6500)는 내부 채널 제어기(6100)의 SATA 제어기(6330)의 제어에 따라 SATA 데이터 패킷을 송수신한다. 여기서 송수된 SATA 데이터 패킷은 내부 채널 제어기(6100)의 AHCI 제어기(6320)에 따라 PCIe 데이터 패킷으로 변환되고, 변환된 PCIe 데이터 패킷은 PCIe 인터페이스를 통하여 중앙처리장치(6100)로 송수신될 것이다.
본 발명의 실시 예에 따른 컴퓨팅 시스템(6000)은 PCIe 인터페이스를 통하여 내부 채널 제어기(6300)에 연결된 의사 PCIe 저장 장치(6400) 및 SATA 저장 장치(6500)를 포함할 것이다.
도 10은 본 발명의 실시 예에 따른 입출력 요청(IO RQ) 관점에서 바라본 컴퓨팅 시스템(7000)을 보여주는 도면이다. 도 10을 참조하면, 컴퓨팅 시스템(7000)은 중앙처리장치(7100), 메인 메모리(7200), 및 SATAe 저장장치(7300)를 포함한다.
SATAe 저장 장치(7300)는 비휘발성 메모리 장치(7350) 및 그것을 제어하는 SATA 제어기(7360)를 포함한다. 여기서 SATA 제어기(7360)는 PCIe 인터페이스 회로(7361), SATAe 엔진(7362), 온-칩 에스램(7363) 및 디램 버퍼(7354)를 포함한다. SATAe 엔진(7362)은 AHCI 엔진(7320), SATA 에뮬레이터(7330), DMA 회로(7340)를 포함한다. 특히, DMA 회로(7340)는 데이터 송신을 위한 송신 DMA 회로(DMA1, 7341), 데이터 수신을 위한 수신 DMA 회로(DMA2, 7342)를 포함한다.
입출력 요청(IO RQ)의 과정은 다음과 같다. 입출력 요청(IO RQ)이 가능하다면, 중앙처리장치(7100)는 메인 메모리(7200)에 입출력 요청(IO RQ)을 전송할 것이다(①) 입출력 요청(IO RQ)에 대응하는 커맨드 큐(command queue)는 커맨드 헤드(command header; CH)/커맨드 FIS(command frame information structure; CFIS), PRDT(physical region descriptor table), 호스트 버퍼(host buffer)를 포함한다. 여기서 PRDT는 호스트에 전송될 데이터나 호스트로부터 전송될 데이터를 저장하는 메모리 영역을 가리키는 구조체를 저장하는 테이블이다. PRD(physical region descriptor)는 대응하는 메모리 영역의 주소와 크기를 포함한다.
중앙처리장치(7100)는 입출력 요청(IQ RQ)을 하였다는 초인종(doorbell) 정보를 SATAe 저장 장치(7300)에 전송한다(②). SATAe 저장 장치(7300)의 AHCI 엔진(7320)에는 초인종 정보를 저장하기 위한 호스트 레지스터(예를 들어, PxCI)를 포함할 것이다. SATAe 저장 장치(7300)는 입출력 요청(IO RQ)에 응답하여 FIS 관련 정보를 메인 메모리(7200)에 전송함으로써 입출력 요청(IO RQ) 페칭을 한다(③). 또한, 입출력 요청(IO RQ)에 대응하는 FIS가 자체적으로 업데이트된다(④). 메인 메모리(7200)와 SATAe 저장 장치(7300) 사이에서 송신 DMA 회로(7341) 및 수신 DMA 회로(7342)를 통하여 입출력 요청(IO RQ)에 따른 데이터 전송이 각각 수행될 것이다. 데이터 전송이 완료될 때, SATAe 저장 장치(7300)는 중앙처리장치(7100)로 인터럽트를 전송할 것이다(⑤). 중앙처리장치(7100)는 인터럽트를 입력받고 입출력 요청(IO RQ)이 완료되었다는 정보를 SATAe 저장 장치(7300)에 전송할 것이다(⑥).
본 발명의 실시 예에 따른 컴퓨팅 시스템(7000)은 메인 메모리(7200)와 SATAe 저장 장치(7300) 사이에서 입출력 요청(IO RQ)에 따라 양방향 데이터 전송을 수행할 수 있다.
도 11은 도 10에 도시된 AHCI 엔진(7320)에 입출력되는 데이터 패킷의 PCI 헤더를 예시적으로 보여주는 도면이다. 도 11을 참조하면, ABAR은 AHCI 베이스 어드레스로써, 호스트 제어 레지스터의 시작 주소는 ABAR에 0x0000를 더한 값이 될 수 있고, 포트 레지스터의 시작 주소는 ABAR에 0x0100를 더한 값이 될 수 있다.
도 12는 도 10에 도시된 AHCI 엔진(7320)에 저장되는 호스트 제어 정보를 예시적으로 보여주는 도면이다. 도 12를 참조하면, 호스트 제어 레지스터의 시작 주소(ABAR+0x0000)로부터 00h~03h에 대응하는 호스트 제어 레지스터들은 호스트 능력 정보를 저장하고, 0Ch~0Fh에 대응하는 호스트 제어 레지스터들은 결합된 포트 정보를 저장할 것이다.
도 13은 도 10에 도시된 AHCI 엔진(7320)에 저장되는 포트 정보를 예시적으로 보여주는 도면이다. 도 13을 참조하면, 포트 레지스터의 시작 주소(ABAR+0x0100)로부터 00h~03h에 대응하는 포트 레지스터들은 커맨드 리스트 베이스 어드레스에 대한 포트 정보를 저장하고, 08h~0Bh에 대응하는 포트 레지스터들은 FIS 베이스 어드레스에 대한 포트 정보를 저장하고, 28h~2Bh에 대응하는 포트 레지스터들은 SATA 상태에 대한 포트 정보를 저장하고, 38h~3Bh에 대응하는 포트 레지스터들은 커맨드 이슈에 대한 포트 정보를 저장할 것이다.
도 14a ~ 도14h는 도 10에 도시된 AHCI 엔진(7320)과 SATA 에뮬레이터(7330) 사이에 송수신되는 FIS에 대한 규정을 예시적으로 보여주는 도면이다. 도 14a ~ 도 14b를 참조하면, FIS에 대한 규정은 SATA 3.0 스펙을 만족할 것이다. 도 14a은 FIS 종류이고, 도 14b는 H2D FIS 레이아웃, 도 14c는 D2H FIS 레이아웃, 도 14d는 PIO Setup FIS 레이아웃, 도 14e는 DMA Setup FIS 레이아웃, 도 14f는 DMA Activate FIS 레이아웃, 도 14g는 Data FIS 레이아웃, 도 14h는 SDB FIS 레이아웃을 보여주는 도면들이다.
도 15는 도 10에 도시된 메인 메모리(7200)의 호스트 버퍼의 구조를 예시적으로 보여주는 도면이다. 도 15를 참조하면, 포트 레지스터(PxCLB)는 커맨드 테이블(CT)을 식별하기 위한 복수의 커맨드들을 갖는 커맨드 리스트 구조(커맨드 큐)를 저장하고, 포트 레지스터(PxFB)는 입력된 FIS 구조를 저장한다. 커맨드 리스트 구조에 대한 메인 메모리(7200)에서 호스트 버퍼의 베이스 어드레스는 포트 레지스터(PxCLB)를 통해 식별될 수 있다. FIS 구조에 대한 메인 메모리(7200)에서 호스트 버퍼의 베이스 어드레스는 포트 레지스터(PXFB)를 통해 식별할 수 있다.
도 16은 도 15에 도시된 커맨드 리스트 구조를 예시적으로 보여주는 도면이다. 도 16을 참조하면, 커맨드 헤더(command header) 각각은 커맨드 테이블 베이스 어드레스 및 커맨드 테이블 베이스 어드레스 상위 32비틀 저장한다.
도 17은 도 16에 도시된 커맨드 테이블을 예시적으로 보여주는 도면이다. 도 17를 참조하면, 커맨드 테이블은 복수의 아이템들(Item0 ~ Item CHz[PRDTL]-1)을 갖는 PRDT(physical region descriptor table)을 포함한다. 여기서 아이템들(Item0 ~ Item CHz[PRDTL]-1) 각각은 데이터 베이스 어드레스(DBA)를 포함한다. 데이터 베이스 어드레스(DBA)는 메인 메모리(7200)의 호스트 버퍼에 저장될 것이다. 여기서 PRDT은 프리페칭(prefetching)을 위해 사용될 것이다.
도 18은 도 15에 도시된 입력된 Received FIS 구조를 예시적으로 보여주는 도면이다. 도 18를 참조하면, FIS는 DMA 셋업 FIS, PIO 셋업 FIS, D2H 레지스터 FIS, 미확인 FIS, 예비 영역을 포함한다.
도 19는 도 10에 도시된 컴퓨팅 시스템(7000)에서 진행되는 읽기 audf여을 수행하는 과정을 예시적으로 보여주는 도면이다. 도 19를 참조하면, AHCI 엔진(7320)의 레지스터(PxCI)는 NCQ 커맨드를 전송 받고, AHCI 엔진(7320)은 NQQ 커맨드에 따른 FIS 정보를 SATAe 에뮬레이터(7330)와 주고 받고, 관련된 FIS 정보(CH, H2D FIS, PRD 테이블 등)을 호스트 디램(7200)으로 전송함으로써 커맨드 페칭한다. 이후, SATAe 엔진(7362)은 호스트 디램(7200)를 억세스함으로써, 커맨드에 따른 입출력 데이터가 전송될 것이다. 이후에, SATA 규정에 따른 DMA 셋업 FIS 및 SDB FIS를 SATAe 에뮬레이터(7330)로부터 AHCI 엔진(7320)으로 전송되고, AHCI 엔진(7320)은 이것들을 메인 메모리(7200)로 전송할 것이다. 이후, 읽기 완료에 대한 정보가 AHCI 엔진(7320)로 전송될 것이다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000, 2000, 3000, 4000, 5000, 6000, 7000: 컴퓨팅 시스템
1100: 호스트 프로세서
1200: 호스트 메모리
1001: 호스트 버스
1300: 저장 장치
1310: 제 1 인터페이스 회로
1320: 호스트 버스 어댑터
1330: 제 2 인터페이스 에뮬레이터
1340: 직접 메모리 억세스 회로
1350: 비휘발성 메모리 장치
1360: 메모리 제어기
FIS: 프레임 정보 구조
CH: 커맨드 헤더
CFIS: 커맨드 프레임 정보 구조
PRDT: 물리 영역 디스크립터 테이블

Claims (19)

  1. 외부의 호스트와 제 1 인터페이스를 통해 통신하고 내부적으로 제 2 인터페이스를 통해 통신하도록 하기 위한 호스트 버스 어댑터를 구비한 저장 장치의 데이터 전송 방법에 있어서:
    상기 호스트 버스 어댑터에 쓰기 커맨드 및 읽기 커맨드를 발행하는 단계;
    상기 쓰기 커맨드에 응답하여 상기 제 1 인터페이스를 이용하여 읽기 직접 메모리 억세스 동작을 수행하면서, 상기 읽기 커맨드에 응답하여 상기 제 1 인터페이스를 이용하여 쓰기 직접 메모리 억세스 동작을 수행하는 단계; 및
    상기 쓰기 커맨드 및 상기 읽기 커맨드에 응답하여 상기 제 2 인터페이스에 따른 프레임 정보 구조 시퀀스들을 발생하는 단계를 포함하고,
    상기 제 1 인터페이스는 양방향 데이터 전송을 수행하고, 상기 제 2 인터페이스는 단방향 데이터 전송을 수행하며,
    상기 프레임 정보 구조 시퀀스들은 상기 읽기 직접 메모리 억세스 동작 및 상기 쓰기 직접 메모리 억세스 동작들이 완료된 후에 발생되는 데이터 전송 방법.
  2. 제 1 항에 있어서,
    상기 쓰기 커맨드 및 상기 읽기 커맨드는 네이티브 커맨드 큐잉(native command queuing; NCQ)에 따라 상기 호스트 버스 어댑터에 입력되는 데이터 전송 방법.
  3. 제 1 항에 있어서,
    상기 쓰기 및 상기 읽기 커맨드를 발행하기 전에 상기 저장 장치의 이전 커맨드가 완료되었는지를 판별하기 위하여 상기 호스트 버스 어댑터의 제 1 레지스터를 읽는 단계를 더 포함하는 데이터 전송 방법.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 중앙처리장치, 메인 메모리, 상기 중앙처리장치와 제 1 인터페이스를 통해 통신하고 내부적으로 제 2 인터페이스를 통해 통신하기 위한 호스트 버퍼 어댑터를 구비한 저장 장치를 포함하는 컴퓨팅 시스템의 데이터 전송 방법에 있어서:
    상기 중앙처리장치에서 상기 메인 메모리에 입출력 요청에 대응하는 커맨드 큐를 전송하는 단계;
    상기 중앙처리장치에서 상기 메인 메모리에 상기 입출력 요청되었다는 정보를 상기 호스트 버퍼 어댑터에 전송하는 단계;
    상기 저장 장치에서 상기 정보에 응답하여 상기 메인 메모리에 상기 입출력 요청에 대응하는 프레임 정보 구조를 전송함으로써 상기 입출력 요청을 페칭하는 단계;
    상기 저장 장치에서 상기 입출력 요청에 응답하여 상기 제 1 인터페이스에 따라 상기 메인 메모리와 상기 저장 장치 사이에서 데이터를 전송하는 단계;
    상기 데이터 전송 후에 상기 제 2 인터페이스에 따라 프레임 정보 구조 시퀀스를 발생하는 단계;
    상기 저장 장치에서 인터럽트를 발생하는 단계; 및
    상기 중앙처리 장치에서 상기 발생된 인터럽트를 근거로 하여 상기 입출력 요청을 완료하는 단계를 포함하는 데이터 전송 방법.
  9. 제 8 항에 있어서,
    상기 제 1 인터페이스는 양방향 데이터 전송을 수행하는 인터페이스이고,
    상기 제 2 인터페이스는 단방향 데이터 전송을 수행하는 인터페이스인 데이터 전송 방법.
  10. 제 9 항에 있어서,
    상기 제 1 인터페이스는 PCIe(peripheral component interconnect express) 인터페이스이고,
    상기 제 2 인터페이스는 SATA(serial advanced technology attachment) 인터페이스인 데이터 전송 방법.
  11. 제 1 인터페이스에 따라 데이터를 송수신하는 제 1 인터페이스 회로;
    상기 제 1 인터페이스 회로와 상기 제 1 인터페이스에 따라 통신하는 호스트 버스 어댑터;
    상기 호스트 버스 어댑터와 제 2 인터페이스에 따라 통신하는 제 2 인터페이스 에뮬레이터;
    외부의 호스트 메모리와 데이터 전송을 수행하기 위한 직접 메모리 억세스 회로;
    데이터를 저장하는 적어도 하나의 비휘발성 메모리 장치; 및
    상기 제 2 인터페이스 에뮬레이터에서 출력된 입출력 요청에 따라 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고,
    상기 직접 메모리 억세스 회로는 상기 데이터 전송시 상기 제 1 인터페이스 회로부터 양방향 데이터 전송을 수행하도록 구현되고,
    상기 데이터 전송 후에 상기 제 2 인터페이스에 따른 프레임 정보 구조 시퀀스가 발생되며,
    상기 직접 메모리 억세스 회로는,
    상기 호스트 메모리로부터 데이터를 읽어오기 위한 제 1 직접 메모리 억세스 회로; 및
    상기 호스트 메모리에 데이터를 쓰기 위한 제 2 직접 메모리 억세스 회로를 포함하고,
    상기 제 1 및 제 2 직접 메모리 억세스 회로들은 상기 제 1 인터페이스의 양방향 데이터 전송을 수행하도록 동시에 병렬로 동작하는 저장 장치.
  12. 제 11 항에 있어서,
    상기 제 1 인터페이스는 PCIe(peripheral component interconnect express) 인터페이스이고,
    상기 제 2 인터페이스는 SATA(serial advanced technology attachment) 인터페이스인 저장 장치.
  13. 호스트 버스;
    상기 호스트 버스에 제 1 인터페이스를 통하여 연결된 호스트 프로세서;
    상기 호스트 프로세서에 연결된 호스트 메모리;
    상기 호스트 버스에 상기 제 1 인터페이스를 통하여 연결되고 RAID(redundant array of independent disks) 기능을 수행하기 위한 레이드 제어기; 및
    상기 레이드 제어기에 상기 제 1 인터페이스를 통하여 연결된 복수의 저장 장치들을 포함하고,
    상기 복수의 저장 장치들 중에서 적어도 하나는,
    상기 제 1 인터페이스에 따라 외부와 통신하는 제 1 인터페이스 회로;
    상기 제 1 인터페이스 회로와 상기 제 1 인터페이스에 따라 통신하는 호스트 버스 어댑터;
    상기 호스트 버스 어댑터와 제 2 인터페이스에 따라 통신하는 제 2 인터페이스 에뮬레이터;
    상기 호스트 메모리와 데이터 전송을 수행하기 위한 직접 메모리 억세스 회로;
    데이터를 저장하는 적어도 하나의 비휘발성 메모리 장치; 및
    상기 제 2 인터페이스 에뮬레이터에서 출력된 입출력 요청에 따라 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고,
    상기 직접 메모리 억세스 회로는 상기 데이터 전송시 상기 제 1 인터페이스 회로부터 양방향 데이터 전송을 수행하도록 구현되고,
    상기 데이터 전송 후에 상기 제 2 인터페이스에 따른 프레임 정보 구조 시퀀스가 발생되는 컴퓨팅 시스템.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 제 13 항에 있어서,
    상기 직접 메모리 억세스 회로는,
    상기 호스트 메모리로부터 데이터를 읽어오기 위한 제 1 직접 메모리 억세스 회로; 및
    상기 호스트 메모리에 데이터를 쓰기 위한 제 2 직접 메모리 억세스 회로를 포함하고,
    상기 제 1 및 제 2 직접 메모리 억세스 회로들은 상기 제 1 인터페이스의 양방향 데이터 전송을 수행하도록 동시에 병렬로 동작하는 컴퓨팅 시스템.
KR1020120134589A 2012-11-26 2012-11-26 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법 KR101988287B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020120134589A KR101988287B1 (ko) 2012-11-26 2012-11-26 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
US14/038,892 US8990462B2 (en) 2012-11-26 2013-09-27 Storage device, computing system including the same and data transferring method thereof
DE102013112894.7A DE102013112894A1 (de) 2012-11-26 2013-11-22 Speichervorrichtung, Computersystem mit derselben und dazugehöriges Verfahren zur Datenübertragung
NL2011838A NL2011838B1 (en) 2012-11-26 2013-11-25 Storage device, computing system including the same and data transferring method thereof.
CN201310608184.5A CN103838687B (zh) 2012-11-26 2013-11-26 贮存设备、包括其的计算系统及其数据传送方法
JP2013243556A JP6265706B2 (ja) 2012-11-26 2013-11-26 記憶装置及びそれを含むコンピューティングシステムと、それのデータ転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120134589A KR101988287B1 (ko) 2012-11-26 2012-11-26 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법

Publications (2)

Publication Number Publication Date
KR20140067404A KR20140067404A (ko) 2014-06-05
KR101988287B1 true KR101988287B1 (ko) 2019-06-12

Family

ID=50514009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120134589A KR101988287B1 (ko) 2012-11-26 2012-11-26 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법

Country Status (6)

Country Link
US (1) US8990462B2 (ko)
JP (1) JP6265706B2 (ko)
KR (1) KR101988287B1 (ko)
CN (1) CN103838687B (ko)
DE (1) DE102013112894A1 (ko)
NL (1) NL2011838B1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9513869B2 (en) 2013-09-18 2016-12-06 HGST Netherlands B.V. Doorbell-less endpoint-initiated protocol for storage devices
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
US10042792B1 (en) * 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
TWI579762B (zh) * 2014-05-06 2017-04-21 瑞昱半導體股份有限公司 固態硬碟控制電路及相關的固態硬碟裝置與固態硬碟存取系統
WO2016020979A1 (ja) * 2014-08-05 2016-02-11 株式会社日立製作所 計算機システム及び仲介デバイス
US9880783B2 (en) 2015-10-28 2018-01-30 Sandisk Technologies Llc System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller
US10496422B2 (en) * 2015-11-12 2019-12-03 Total Phase, Inc. Serial device emulator using two memory levels with dynamic and configurable response
TWI615770B (zh) * 2015-11-17 2018-02-21 群聯電子股份有限公司 資料存取方法、記憶體控制電路單元與記憶體儲存裝置
CN107145459B (zh) 2016-03-01 2021-05-18 华为技术有限公司 一种级联板、ssd远程共享访问的系统和方法
KR20180043451A (ko) * 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
CN106909523B (zh) * 2017-02-24 2019-11-22 深圳市恒扬数据股份有限公司 大规模数据传输方法及系统
US11356636B2 (en) * 2018-01-19 2022-06-07 Caavo Inc Device identification and power state determination using media device information
CN110321063A (zh) * 2018-03-31 2019-10-11 深圳忆联信息系统有限公司 数据处理方法及存储设备
CN109446015B (zh) * 2018-10-26 2022-05-27 北京计算机技术及应用研究所 一种NVMe原型仿真验证结构
KR20200054004A (ko) * 2018-11-09 2020-05-19 삼성전자주식회사 호스트와 통신을 수행하는 전자 장치 및 그 동작 방법
TWI753541B (zh) * 2019-10-22 2022-01-21 威鋒電子股份有限公司 晶片及介面轉換裝置
US11176074B2 (en) 2019-10-22 2021-11-16 Via Labs, Inc. Chip and interface conversion device
US11782616B2 (en) 2021-04-06 2023-10-10 SK Hynix Inc. Storage system and method of operating the same
KR102555800B1 (ko) * 2021-04-06 2023-07-17 에스케이하이닉스 주식회사 스토리지 시스템 및 그 동작 방법
CN113703683B (zh) * 2021-08-28 2022-05-13 江苏华存电子科技有限公司 一种单一的优化冗余存储系统的装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100077117A1 (en) * 2008-09-22 2010-03-25 Micron Technology, Inc. SATA MASS STORAGE DEVICE EMULATION ON A PCIe INTERFACE
WO2012140670A2 (en) * 2011-04-11 2012-10-18 Ineda Systems Pvt. Ltd Multi-host sata controller

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1222876C (zh) * 1999-09-22 2005-10-12 网孔公司 磁盘冗余阵列控制器和使其与主机连接的方法
US7284082B2 (en) * 2004-08-19 2007-10-16 Lsi Corporation Controller apparatus and method for improved data transfer
JP2006139548A (ja) 2004-11-12 2006-06-01 Hitachi Global Storage Technologies Netherlands Bv メディア・ドライブ及びそのコマンド実行方法
JP2006164012A (ja) * 2004-12-09 2006-06-22 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びそのパワー・セーブ・モードの制御方法
US8019940B2 (en) 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid
US8244937B2 (en) 2008-09-30 2012-08-14 Micron Technology, Inc. Solid state storage device controller with parallel operation mode
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
US8055816B2 (en) 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8341338B2 (en) 2009-05-06 2012-12-25 Samsung Electronics Co., Ltd. Data storage device and related method of operation
US8200857B2 (en) * 2009-11-30 2012-06-12 Lsi Corporation Coalescing multiple contexts into a single data transfer in a media controller architecture
KR20100120518A (ko) 2009-05-06 2010-11-16 삼성전자주식회사 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법
US8131889B2 (en) 2009-11-10 2012-03-06 Apple Inc. Command queue for peripheral component
US20110296131A1 (en) 2010-05-31 2011-12-01 Samsung Electronics Co., Ltd Nonvolatile memory system and the operation method thereof
KR20120134589A (ko) 2011-06-03 2012-12-12 이훈규 멀티미디어 콘텐츠 제작 시스템 및 방법
US8713204B2 (en) * 2011-12-27 2014-04-29 Apple Inc. High-performance AHCI interface

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100077117A1 (en) * 2008-09-22 2010-03-25 Micron Technology, Inc. SATA MASS STORAGE DEVICE EMULATION ON A PCIe INTERFACE
WO2012140670A2 (en) * 2011-04-11 2012-10-18 Ineda Systems Pvt. Ltd Multi-host sata controller

Also Published As

Publication number Publication date
JP6265706B2 (ja) 2018-01-24
NL2011838A (en) 2014-05-27
US20140149607A1 (en) 2014-05-29
CN103838687A (zh) 2014-06-04
KR20140067404A (ko) 2014-06-05
DE102013112894A1 (de) 2014-05-28
US8990462B2 (en) 2015-03-24
CN103838687B (zh) 2018-10-19
NL2011838B1 (en) 2016-07-15
JP2014106977A (ja) 2014-06-09

Similar Documents

Publication Publication Date Title
KR101988287B1 (ko) 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
KR101934519B1 (ko) 저장 장치 및 그것의 데이터 전송 방법
KR101988260B1 (ko) 임베디드 멀티미디어 카드, 및 이의 동작 방법
US7225289B2 (en) Virtual IDE storage with PCI express interface
US20170147233A1 (en) Interface architecture for storage devices
JP5128079B2 (ja) ユニバーサルストレージバスアダプタ
KR101932920B1 (ko) 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법
US20130007332A1 (en) Controllable transaction synchronization for peripheral devices
TWI699696B (zh) 具有介面控制機構之電子系統及其操作方法
JP5918359B2 (ja) メモリシステムコントローラを含む装置および関連する方法
KR102020466B1 (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
US7606964B2 (en) Virtual USB flash memory storage device with PCI express interface, controller and method thereof
US20060206639A1 (en) [virtual ide card reader with pci express]
JP6102032B2 (ja) ストレージにアクセスするためのコマンドキュー長を効率的に増やす方法及び装置
KR102395541B1 (ko) 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
CN103403667A (zh) 数据处理方法和设备
CN104281413B (zh) 命令队列管理方法、存储器控制器及存储器储存装置
KR102140297B1 (ko) 불휘발성 메모리 장치 및 그것을 포함하는 데이터 저장 장치
US20130275652A1 (en) Methods and structure for transferring additional parameters through a communication interface with limited parameter passing features
US11074010B2 (en) Storage system and control method thereof
KR20170094674A (ko) 데이터 저장 장치
CN213338708U (zh) 一种控制部件及存储设备
TWI277874B (en) Method for access non-standard register in serial advanced technology attachment (SATA) device
US20120303859A1 (en) Implementing storage adapter performance optimization with parity update footprint mirroring
US8656059B2 (en) Methods for exchanging administrative information through a communication interface with limited administrative information exchange features

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