KR101579681B1 - Sas를 통한 pcie 터널링 - Google Patents

Sas를 통한 pcie 터널링 Download PDF

Info

Publication number
KR101579681B1
KR101579681B1 KR1020140059145A KR20140059145A KR101579681B1 KR 101579681 B1 KR101579681 B1 KR 101579681B1 KR 1020140059145 A KR1020140059145 A KR 1020140059145A KR 20140059145 A KR20140059145 A KR 20140059145A KR 101579681 B1 KR101579681 B1 KR 101579681B1
Authority
KR
South Korea
Prior art keywords
pcie
sas
expander
data
connection
Prior art date
Application number
KR1020140059145A
Other languages
English (en)
Other versions
KR20140147001A (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 KR20140147001A publication Critical patent/KR20140147001A/ko
Application granted granted Critical
Publication of KR101579681B1 publication Critical patent/KR101579681B1/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
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • 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
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

본 명세서에 제공된 시스템들 및 방법들은 SAS 도메인을 통한 PCIe 데이터 터널링을 제공한다. 데이터 시스템(100)은 SAS 확장기(101), 확장기에 연결된 PCIe 타겟 디바이스(111), 및 호스트 시스템(105) 및 확장기에 통신가능하게 연결된 SAS 제어기(104)를 포함한다. 제어기는 SAS 프로토콜을 통해 확장기와의 접속을 개방하고, PCIe 프로토콜을 통한 접속을 통해 타겟 디바이스와 호스트 시스템 사이에 패킷 데이터를 전송하도록 동작가능하다. 예를 들어, 제어기 및 확장기는 접속에서 데이터의 패킷들을 버퍼링하도록 동작할 수 있다. 제어기는 접속에서 전송될 다수의 데이터 패킷들을 발행할 수 있다. 그 다음, 발행된 다수의 데이터 패킷들은 PCIe 프로토콜을 통한 접속을 통해 타겟 디바이스와 호스트 시스템 사이에서 전송된다.

Description

SAS를 통한 PCIE 터널링{PCIE TUNNELING THROUGH SAS}
관련 출원들에 대한 상호 참조
본 문서는 본 명세서에서 참조로 인용되는 "PCIE TUNNELING THROUGH SAS" 라는 명칭의 미국 가특허 출원 제61/836,282호(2013년 6월 18일 출원)에 대한 우선권을 주장한다.
기술분야
전반적으로, 본 발명은 PCIe(Peripheral Component Interconnect Express) 프로토콜을 통해 SAS(Serial Attached Small Computer System Interface) 도메인의 SAS 접속들을 통해 PCIe 트래픽을 터널링하는 것에 관한 것이다.
많은 저장 디바이스 인터페이스들이 존재하며, 전형적인 SAS 도메인들에 대해 계속해서 도전을 하고 있다. 예를 들어, PCIe 기반 저장 디바이스들은 이제 전형적인 SAS 도메인들과 병렬로 구성되고 있다. 이러한 PCIe 저장 디바이스들은 업스트림 SAS 스토리지 제어기들로 및 업스트림 SAS 스토리지 제어기들로부터 데이터를 전송할 것이 요구될 수 있으며, 데이터는 네이티브 PCIe 인터페이스 상에 위치될 수 있다. 그러나, PCIe는 패킷 기반의 비접속형 전송 프로토콜이며, SAS는 비접속 전송들에 대해 제공하지 않는 단부간(end-to-end) 접속 기반 프로토콜이므로, 상호 작용을 특히 어렵게 만든다.
본 명세서에 제공된 시스템들 및 방법들은, 하나 이상의 PCIe 가능 SAS 확장기들, 하나 이상의 전형적인 SAS 확장기들 및 하나 이상의 PCIe 가능 SAS 제어기들의 토폴로지를 포함하는 SAS 도메인을 통한 PCIe 트래픽 터널링을 제공한다. PCIe 트래픽의 터널링은 SAS 토폴로지에서의 PCIe 타겟 디바이스들(예를 들면, SOP(SCSI-Over-PCIe) 디바이스들, NVMe(Non-Volatile Memory Express) 디바이스들 및 SATAexpress(Serial AT-Attachment Express) 디바이스들)이, SAS 확장기들 및 SAS 제어기를 포함하는 SAS 도메인을 통해 PCIe 기반 호스트 시스템에 접속될 수 있도록 한다. 일 실시예에서, 데이터 시스템은 SAS 확장기와, 그 확장기에 연결된 PCIe 타겟 디바이스와, 호스트 시스템 및 그 확장기에 통신가능하게 연결된 SAS 제어기를 포함한다. 제어기는 SAS 프로토콜을 통한 확장기와의 SAS 접속을 개방하고, PCIe 프로토콜을 통한 접속을 통해 타겟 디바이스와 호스트 시스템 사이에 패킷 데이터를 전송하도록 동작할 수 있다. 예를 들어, 제어기 및 확장기는 접속에서의 데이터의 패킷들을 버퍼링하도록 동작할 수 있다. 제어기는 접속에서 전송될 다수의 데이터 패킷들을 발행할 수 있다. 그 다음, 발행된 다수의 데이터 패킷들은 PCIe 프로토콜을 통한 SAS 접속을 통해 타겟 디바이스와 호스트 시스템 사이에서 전송된다.
본 명세서에 개시된 다양한 실시예들은 디자인 선택상 다양한 방식으로 구현될 수 있다. 예를 들어, 실시예들은 컴퓨터 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합의 형태를 취할 수 있다. 다른 예시적인 실시예들이 이하에 기술된다.
이제, 본 발명의 몇몇 실시예들이 첨부된 도면들을 참조하여, 단지 예로써 기술된다. 동일한 참조 번호는 모든 도면들에 대해 동일한 요소 또는 동일한 타입의 요소를 나타낸다.
도 1은 SAS 도메인을 통해 PCIe 데이터를 터널링하는 예시적인 데이터 시스템의 블록도이다.
도 2는 SAS 도메인을 통해 PCIe 데이터 터널링을 위한 예시적인 프로세스의 흐름도이다.
도 3은 SAS 도메인에서의 SAS 구성요소들 사이의 SAS 접속들을 형성하고, PCIe 데이터 패킷들을 터널링하도록 동작가능한 SAS 링크들의 예시적인 블록도이다.
도 4는 SAS 도메인을 통한 예시적인 PCIe 터널링의 블록도이다.
도 5는 SAS 도메인을 통한 예시적인 PCIe 터널링의 다른 블록도이다.
도 6은 예시적인 PCIe 가능 SAS 확장기의 블록도이다.
도 7은 도 6의 PCIe 가능 SAS 확장기의 예시적인 PCIe 타겟 애그리게이터(aggregator)의 블록도이다.
도 8은 예시적인 PCIe 가능 SAS 제어기의 블록도이다.
도 9는 도 8의 PCIe 가능 SAS 제어기의 예시적인 PCIe/SAS 상호 작용 개시자의 블록도이다.
도 10은 컴퓨터 판독가능 매체가 본 명세서에서의 방법들을 수행하기 위한 인스트럭션들을 제공하는 예시적인 컴퓨팅 시스템의 블록도이다.
도면들 및 이하의 설명은 본 발명의 특정한 예시적인 실시예들을 보여준다. 따라서, 본 기술 분야의 당업자라면, 비록 본 명세서에서 명시적으로 기술되거나 도시되지는 않았지만, 본 발명의 원리들을 구현하고, 본 발명의 영역 내에 포함되는 다양한 구성들을 고안할 수 있음을 이해할 것이다. 더욱이, 본 명세서에 기술된 임의의 예들은 본 발명의 원리에 대한 이해를 돕기 위한 것이며, 그와 같이 구체적으로 인용된 예들 및 조건들로 제한되지 않는 것으로 해석되어야 한다. 그 결과, 본 발명은 이하에 기술되는 특정한 실시예들 또는 예들로 제한되지 않는다.
도 1은 SAS 도메인(100)을 통해 PCIe 데이터를 터널링하는 예시적인 데이터 시스템의 블록도이다. 본 실시예에서, SAS 도메인(100)은 PCIe 가능 SAS 확장기(PCIe/SAS 확장기(101))와, 전형적인 SAS 확장기(102)와, PCIe 가능 SAS 제어기(PCIe/SAS 제어기(104))를 통해 PCIe 호스트 시스템(105)에 연결된 다른 PCIe 가능 SAS 확장기(PCIe/SAS 확장기(103))로 구성된다. 확장기(102)는 확장기들(101, 103) 사이에 연결되어, SAS 프로토콜을 통해 복수의 SAS 타겟 디바이스들(110)에 접속하도록 동작할 수 있다. PCIe/SAS 확장기들(101, 103)은 둘다 PCIe 프로토콜을 통해 PCIe 타겟 디바이스들(111)과, 그리고 SAS 프로토콜을 통해 (다른 SAS 확장기들(102) 뿐만 아니라) SAS 타겟 디바이스들(110)과 접속 및 통신하도록 동작할 수 있다. PCIe/SAS 제어기(104)와 PCIe/SAS 확장기(101/103)의 결합은, 데이터 시스템(100)이 SAS 프로토콜을 통해 PCIe 패킷 데이터를 터널링함으로써 SAS 도메인(100)을 통해 PCIe 호스트 시스템(105)과 PCIe 타겟 디바이스들(111) 사이에 PCIe 패킷 통신들을 전송할 수 있도록 한다. 또한, PCIe/SAS 제어기(104)는 PCIe 데이터를 SAS로 변형(translate)하여, 데이터를 PCIe 호스트 시스템(105)으로부터 적절한 SAS 타겟 디바이스(110)로 라우팅한다. 일 실시예에서, 다수의 PCIe 타겟 디바이스들(111)이, PCIe/SAS 제어기(104)의 PCIe/SAS 상호 작용 개시자(이하에 보다 상세히 설명됨) 및 포트층을 통해 PCIe 패킷들이 흐를 수 있도록 하는 방식으로, PCIe/SAS 제어기(104)에 직접 부착되어, 단지 PCIe/SAS 제어기(104) 내에서의 터널링을 제공한다.
PCIe 타겟 디바이스들(111) 및 SAS 타겟 디바이스들(110)의 예들은, 디스크 드라이브들 및 SSD(solid state drive)들과 같은 저장 디바이스들을 포함한다. 이와 관련하여, 타겟 디바이스들(110, 111)은 PCIe 호스트 시스템(105)을 대신하여 데이터 스토리지를 제공할 수 있다. 그리고, PCIe 호스트 시스템(105)은 확장기들(101, 102, 103)의 SAS 도메인(100)을 통한 타겟 디바이스들(110, 111) 중 임의의 것과의 입/출력(I/O) 동작들을 위해 PCIe 프로토콜을 통해 판독/기입 요청들을 구성할 수 있다. PCIe 호스트 시스템(105)은, 예를 들면, 서버들, 워크스테이션들, 개인용 컴퓨터 등을 포함하는, PCIe 프로토콜을 통해 I/O 동작들을 수행하도록 동작할 수 있는 임의의 적절한 컴퓨팅 디바이스 또는 시스템일 수 있다.
PCIe/SAS 제어기(104)는 디바이스 발견을 수행하고, 타겟 디바이스들(110, 111)의 데이터를 관리하고, 해당 데이터에 대한 I/O 코맨드들을 처리하도록 동작할 수 있는 임의의 디바이스, 시스템, 소프트웨어, 또는 이들의 조합이다. 예를 들어, PCIe/SAS 제어기(104)는 고객 주문형(custom) 회로, 관련된 프로그램 메모리에 저장된 프로그래밍된 인스트럭션들을 실행하는 특수 목적 또는 범용 프로세서, 또는 이들의 몇몇 조합으로서 구현될 수 있다. PCIe/SAS 제어기(104)는 독립된 SAS 디바이스, 호스트의 HBA(Host Bus Adapter), 또는 PCIe 호스트 시스템(105)의 통합된 구성요소일 수 있다.
PCIe/SAS 제어기(104)는 PCIe 프로토콜을 통해 패킷 데이터를 PCIe 호스트 시스템(105)과 연결 및 통신하도록 적응된 전단(front-end) 인터페이스(이하에 보다 상세히 도시 및 기술됨)를 포함한다. 또한, PCIe/SAS 제어기(104)는 PCIe 디바이스들(예를 들면, PCIe/SAS 확장기들(101, 103) 및 PCIe 타겟 디바이스들(111)) 및 SAS 디바이스들(예를 들면, SAS 타겟 디바이스들(110) 및 SAS 확장기들(102)) 둘다에 연결 및 둘다를 지원하도록 적응되는 백엔드(backend) 인터페이스(이하에 보다 상세히 도시 및 기술됨)를 포함한다. 예를 들어, PCIe/SAS 제어기(104)는 확장기들(101, 103)과 같은 다수의 원격/SAS 확장기들을 지원하기 위해 PCIe 제어, SAS 접속 신용 관리 및 버퍼링을 제공한다. 또한, PCIe/SAS 제어기(104)는 SAS 도메인(100)을 통해 액세스가능한 PCIe 타겟 디바이스들(111)에 대한 루트 컴플렉스(root complex)로서 동작한다. PCIe/SAS 제어기(104)는 다운스트림 부착형 타겟 디바이스들(110, 111)의 PCIe 시스템 열거(enumeration)를 수행하여 SAS 도메인 관리를 돕는다.
SAS 확장기(102)는 SAS 프로토콜을 통해 데이터의 접속 기반 전송을 제공하도록 동작가능한 임의의 디바이스, 시스템, 소프트웨어, 또는 이들의 조합이다. 이와 관련하여, SAS 확장기(102)는 복수의 물리적 트랜시버들, 또는 "Phys"를 통해, SAS 타겟 디바이스들(110) 및 다른 확장기들과 같은 다른 SAS 구성요소들에 접속할 수 있다. PCIe/SAS 확장기들(101, 103)은 SAS 타겟 디바이스들(110) 뿐만 아니라, 부착된 PCIe 디바이스들(111), SAS 확장기들(102) 및 다른 PCIe/SAS 확장기들을 지원 및 그들과 통신하도록 동작가능한 임의의 디바이스들, 시스템들, 소프트웨어, 또는 이들의 조합이다. 이와 관련하여, PCIe/SAS 확장기들(101, 103) 각각은 타겟 디바이스들(110, 111) 각각에 대한 PCIe 및 SAS 트래픽 둘다를 서비스하기 위한 복수의 SAS Phy/PCIe 링크들을 갖는다(이하에 보다 상세히 도시됨). PCIe/SAS 확장기들(101, 103)은 다수의 PCIe 디바이스들(111)을 지원하기 위해 PCIe 제어, 디바이스 신용 관리 및 버퍼링을 제공하도록 동작가능하다. 또한, PCIe/SAS 확장기들(101, 103)은 SAS 확장기(102)에 대한 표준 SAS 인터페이스를 제공하고, 확장기(102) 및 다른 SAS 디바이스들(예를 들면, SAS 타겟 디바이스들(110))과 통신하도록 동작가능하다.
SAS 도메인(100)이 특정한 수의 PCIe/SAS 확장기들, 전형적인 SAS 확장기들, PCIe 타겟 디바이스들 및 SAS 디바이스들에 대하여 도시 및 기술되지만, 본 발명은 SAS 프로토콜에 의해 제한될 수 있는 것이 아닌, SAS 도메인(100)에서의 임의의 특정한 수의 구성요소들이도록 의도되지 않는다. 데이터 시스템의 특정한 동작 세부사항, 및 보다 구체적으로, SAS 도메인(100)이, 이제 도 2의 흐름도에 대하여 기술된다.
도 2는 SAS 도메인(100)을 통해 PCIe 데이터를 터널링하기 위한 예시적인 프로세스(200)의 흐름도이다. 본 실시예에서, PCIe 타겟 디바이스(111)는 SAS 확장기에 연결되고(프로세스 요소(201)), 확장기는 PCIe/SAS 제어기(104)에 연결된다(프로세스 요소(202)). 언급한 바와 같이, PCIe/SAS 제어기(104)는 PCIe 호스트 시스템(105)에 (PCIe 호스트 시스템(105)의 일부로서 또는 PCIe 호스트 시스템(105)과는 별개로) 연결되어, PCIe 호스트 시스템(105) 대신에 PCIe 데이터 패킷들을 전송한다. 따라서, PCIe 구성요소들의 엔드포인트들을 갖는 SAS 도메인(100)이 (예를 들면, PCIe/SAS 제어기(104)를 통해 PCIe/SAS 확장기(103)로, PCIe/SAS 제어기(104)를 통해 PCIe/SAS 확장기(101)로) 수립된다.
프로세스 요소(203)에서, SAS 도메인(100)에서의 SAS 구성요소들 중 하나가 PCIe/SAS 제어기(104)와 SAS 확장기 사이에 SAS 접속을 개방한다. 예를 들어, PCIe 타겟 디바이스들(111) 중 하나는 PCIe 기반 데이터 패킷들을 PCIe 호스트(105)에 전송할 필요가 있을 수 있다. 따라서, PCIe 타겟(111)은 PCIe/SAS 확장기(101/103)에게 PCIe/SAS 제어기(104)와의 접속을 개방하도록 지시할 수 있다. 대안적으로, PCIe 호스트 시스템(105)은 PCIe 기반 데이터 패킷들을 PCIe 타겟 디바이스(111)에게 전송할 필요가 있을 수 있다. 그 다음, PCIe 호스트 시스템(105)은 PCIe/SAS 제어기(104)에게 타겟 디바이스(111)에 대한 SAS 접속을 개방하도록 지시할 수 있다. 어느 경우에서든, 프로세스 요소(204)에서, SAS 접속이 PCIe 데이터 패킷들의 전송을 행하도록 개방될 수 있는 시간까지, PCIe/SAS 제어기(104)에서 또는 PCIe/SAS 확장기(101/103)에서 PCIe 데이터 패킷들은 SAS 접속의 엔드 포인트들에서 버퍼링된다.
SAS 접속의 엔드 포인트들 사이에서 데이터 패킷들을 전송하기 전에, 프로세스 요소(205)에서, PCIe/SAS 구성요소(즉, 제어기(104) 또는 확장기(101/103))는 SAS 접속을 통해 전송될 다수의 PCIe 데이터 패킷들을 발행한다. 예를 들어, PCIe 프로토콜은 비접속형 데이터 전송 프로토콜이기 때문에, PCIe 데이터 패킷들은 그들이 적절한 PCIe 엔드포인트에 도달하는 것을 보장하도록 SAS 접속을 통해 추적된다. 일 실시예에서, SAS 접속의 각각의 엔드 포인트는 데이터 패킷들의 신용 관리가 SAS 접속의 엔드 포인트들에서 처리될 수 있도록 PCIe 프로토콜의 데이터 링크층 패킷들(Data Link Layer Packet; DLLP)을 통해 다음 버퍼링 노드에서 이용가능한(예를 들면, 이용가능한 버퍼 공간을 나타내는) 신용들의 양을 전송한다.
접속이 수립되고, 다수의 PCIe 데이터 패킷들이 모니터링되는 경우, 프로세스 요소(206)에서, SAS 접속의 각각의 엔드 포인트는 엔드 포인트에서의 버퍼로부터 PCIe 트랜잭션층 패킷들(Transaction Layer Packets)을 검색하여, 발행된 다수의 데이터 패킷들을 PCIe 프로토콜을 통한 SAS 접속을 통해 타겟 디바이스(111)와 PCIe 호스트 시스템(105) 사이에서 전송함으로써, SAS 접속을 통해 PCIe 트래픽을 터널링한다. SAS 도메인(100)을 통한 PCIe 터널링의 구현에 관한 추가적인 세부사항은 이하의 실시예들에서 도시 및 기술된다.
도 3은 PCIe 데이터 패킷들을 터널링하기 위해 SAS 디바이스들 사이에 SAS 접속들을 형성하도록 동작가능한 SAS 링크들의 예시적인 블록도이다. 개별적인 SAS 접속들 및 관련된 데이터 전송들은 "x1" Phy 폭으로 발생되며, PCIe는 논리적 상호접속들을 용이하게 하는데 이용된 "x1", "x2", "x4" 또는 그이상의 실제 Phys를 가질 수 있다. 도 1의 SAS 도메인(100) 내의 접속들은, 본 명세서에서 이용된 바와 같은 트래픽의 동적인 혼합(dynamic mix)을 전송하도록 동작가능하다. 이러한 예에서, PCIe 및 SAS 트래픽의 혼합은 4-phy SAS 와이드포트 상에서 운반된다.
전형적인 SAS 접속 프로토콜은 SAS 링크(250)에 도시된 바와 같이, OA(Open Accept)를 수신하는 OAF(Open Address Frame)로 발생되며, 그에 응답하여 SAS 접속이 형성된다. SAS 접속이 개방되면, SAS 데이터 프레임들 또는 PCIe 데이터 패킷들 및 관련된 제어가 개방 SAS 접속 내에서 교환된다. 후속하여 SAS 접속은, SAS 링크들(250, 251, 253)에 도시된 바와 같이, CLOSE 프리미티브(primitive)들이 교환되어, 접속을 서비스하는 모든 확장기들이 경로(route)를 티어 다운(tear down)하도록 프롬프팅하는 때에 폐쇄된다.
이러한 예에서, 4개의 상이한 프로토콜들이 또한 예시된다. 즉, SAS 링크(250)에서의 SSP(Serial SCSI Protocol), SAS 링크(253)에서의 STP(Serial ATA Tunneled Protocol), SAS 링크(250)에서의 SMP(Serial Management Protocol) 및 SAS 링크들(250, 253)에서의 PTP(PCIe Tunneled Protocol). 보다 구체적으로, SAS 링크(250)는 SSP 프레임들 및 프리미티브들이 엔드 포인트들 사이에서 전송될 수 있도록 하는, SSP를 통한 SAS 접속의 개방을 예시한다. 접속이 폐쇄된 후에, SAS 구성요소(예를 들면, 확장기들(101/103) 및/또는 PCIe/SAS 제어기(104))는 PTP를 통한 SAS 접속을 개방하도록 동작가능하여, PCIe 데이터 패킷들이 PCIe 프로토콜의 TLP(Transaction Layer Packets) 및 DLLP(Data Link Layer Packets)를 통해 전송될 수 있도록 한다. PCIe 데이터 패킷들이 전송된 후, SAS 접속이 폐쇄되고, 이 경우 SMP를 통한, 다른 데이터 전송을 위해 이용가능해진다.
SAS 링크(251)는, PCIe 데이터 패킷들이 PTP를 통한 SAS 접속을 통해 전송되는 유사한 실시예를 도시한다. 여기서, PTP는 접속을 개방 및 폐쇄하여, 그 이후에 SAS 링크(251) 상에서의 SSP 접속을 허용한다.
SAS 링크(252)는 PTP를 통한 PCIe 데이터 트래픽을 제공하는 것에 전적으로 전용된다. 예를 들어, PCIe 패킷들을 전송하기 위해 형성된 SAS 접속은, PCIe 대역폭의 정적인 할당이 요망되는 경우, 지속적인 접속일 수 있다. PTP는 어떤 추가적인 자격을 갖는 레거시 OAF들을 레버리징(leveraging)함으로써, SAS 확장기(102)와 같은 중간 레거시 SAS 확장기들을 포함하는 SAS 도메인에서 동작할 수 있다. 예를 들어, PTP 접속은 OAF에서 호환가능한 특징들을 갖는 레거시 STP 프로토콜을 이용하여 개방되어, 터널링의 타입을 PTP로서 부여할 수 있다. 이러한 경우에 있어서의 중간 확장기는 노멀(normal)로서 동작하는데, 그것은 SAS CLOSE 프리미티브들이 SAS 접속의 접속 엔드포인트들 사이에서 교환되기를 기다리는 동안 SAS 접속이 개방되면, 단순히 DWORDS를 전달하기 때문이다.
SAS 링크(253)는 STP에 대한 SAS 접속의 개방 및 폐소와 더불어 PTP와의 SAS 접속의 유사한 개방 및 폐쇄를 도시한다. 따라서, SAS 링크들은 임의의 특정한 프로토콜로 제한되지 않는다. 즉, 여기서 SAS 링크들은 SAS 도메인(100)을 통한 PCIe 트래픽을 전용하는데 이용될 수 있고/있거나, 임의의 특정 링크를 통한 SAS 접속들의 SAS 개방들 및 폐쇄들을 통한 SSP, STP, SMP 및 PTP를 통한 다른 형태의 데이터 트래픽을 포함한다.
도 4는 도 1에 도시된 것과 유사한 SAS 도메인(100)을 통한 예시적인 PCIe 터널링의 블록도이다. 이 도면은 TLP 데이터 스트림(303)에서의 PCIe TLP들이 단부 PCIe 디바이스들(301) 사이에서 흐르고, PCIe DLLP들이 DLLP 패킷 스트림들(304-1, 304-3)의 네이티브 PCIe 링크들을 이동하며, DLLP 패킷 스트림들(304-2)을 통해 터널링되는 것을 도시한다. 예시의 목적을 위해, SAS 도메인(100)은 PCIe/SAS 확장기(101), SAS 확장기들(102-1, 102-2)의 쌍, 및 PCIe/SAS 제어기(104)로 구성된다. 경로(304-2)가 전술한 바와 같이 SAS 프로토콜의 OAF들 및 OA들을 이용하여 형성되는 것에 대응하여, SAS 접속이 전체 PCIe 패킷 경로(310)에 대해 형성된다. PCIe 엔드포인트들(301)이, PCIe/SAS 제어기(104)에 연결하는 PCIe 호스트 시스템(105)에 의해서, 및 PCIe/SAS 확장기(101)에 연결하는 PCIe 타겟 디바이스(111)에 의해 형성된다. SAS 도메인 접속 엔드포인트들(302)이 확장기(101), 확장기들(102) 및 제어기(104)의 SAS 구성요소들을 통한 SAS 접속들에 기초하여 형성된다.
언급한 바와 같이, SAS 도메인(100)을 통한 PCIe 터널링을 구현하기 위해, PCIe 데이터 패킷들이 SAS 도메인(100)에서의 접속 엔드포인트들(302)에서 버퍼링될 수 있다. 그 다음, PCIe 프로토콜의 DLLP 패킷들이 PCIe 프로토콜에서의 TLP 데이터 패킷들을 추적하는데 이용될 수 있다. 예를 들어, PCIe 프로토콜은 TLP들 및 DLLP들 둘다에 대해 제공된다. DLLP 패킷 스트림들(304-1, 304-2, 304-3)이 다양한 접속 엔드포인트들(301, 302)에서의 PCIe 패킷 경로(310)를 따라 구성되어, 대응하는 접속 엔드포인트들(301)에서의 PCIe 타겟 디바이스(111)와 PCIe/SAS 제어기(104) 사이의 TLP 데이터 스트림(303)에서의 TLP 데이터 패킷들을 추적한다. TLP들은 최종 사용자 데이터 송신을 지원하며, DLLP 패킷들은 흐름 제어를 관리하고 TLP들을 수신확인(acknowledge)하기 위해 PCIe 링크 기능들 사이에서 이용된다. 도 4는 DLLP들이 SAS 도메인(100)의 SAS 접속 엔드포인트(302)에서 종료되면서, 네이티브 PCIe 경로 엔드포인트들(301) 사이에 있는 중에 PCIe 패킷 경로(310)에서의 TLP 데이터 경로(303)를 따라 TLP들이 SAS 도메인(100)을 통해 통과하는 방법을 도시한다.
PCIe 패킷들이 SAS 도메인(100)을 이동함에 따라 PCIe 흐름 제어 및 TLP 수신확인을 관리하기 위해 PCIe/SAS 확장기(101)와 PCIe/SAS 제어기(104) 사이의 PCIe 패킷 경로(310)의 SAS 접속 부분을 통해 독립적인 DLLP 패킷 스트림(304-2)이 교환된다. 단일의 TLP 패킷 스트림(303)이 도시되지만, 다수의 TLP 패킷 스트림들이 존재할 수 있으며, 전형적으로 단일의 SAS 접속을 통해 지원된다(예를 들면, 다수의 PCIe 타겟 디바이스들(111)이 하나의 SAS 접속에서 서비스될 수 있다). 다수의 TLP 패킷 스트림들이, 도 1에 유사하게 도시된 바와 같이, PCIe/SAS 확장기들(101, 103) 중 임의의 것에 부착된 타겟 디바이스들(111)의 PCIe/SAS 집합(aggreation)으로 구현될 수 있다.
PCIe/SAS 확장기(101) 및 PCIe/SAS 제어기(104)의 Phy/링크층 내에서 적절한 TLP 시퀀스 번호 대체가 발생된다. 추가적으로, PCIe "리플레이(replay)" 버퍼들이 DLLP 패킷 스트림(304-2)을 따라 DLLP 엔드 포인트들(302) 각각에서 구성될 수 있다. 이러한 리플레이 버퍼들은 PCIe 패킷 경로(310)에서 뿐만 아니라 전형적인 PCIe 세그먼트들을 통해 손실되거나 또는 에러가 있는 TLP들에 대해 호출(invoke)될 수 있다. 대안적으로, DLLP 종료 및 관련된 PCIe 리플레이 버퍼들이, 도 5에 도시된 바와 같이, DLLP 패킷 스트림(304-2)을 따라 중간 PCIe/SAS 확장기(103)로서 구현될 수 있다. 예를 들어, PCIe 프로토콜이 이동된 모든 TLP를 수신확인한다. TLP에 대한 목적지 노드가 TLP에서 에러를 검출한다면(예를 들면, 불량 CRC, 불량 심볼 등), 목적지 노드는 ACK DLLP에 반대되는 것으로서 NAK DLLP를 소스 노드에 다시 전송한다. 소스 노드는 그것이 전송한, 그리고 리플레이 버퍼에서 아직 수신확인되지 않은 모든 TLP의 카피를 유지한다. 소스 노드가 NAK DLLP를 수신한 경우, 그것은 에러로 도달한 TLP로 시작하는 리플레이 버퍼에 저장된 모든 TLP들을 재전송한다.
도 6은 예시적인 PCIe/SAS 확장기(101/103)의 블록도이다. PCIe/SAS 확장기(101/103)는 SAS 타겟 디바이스들(110) 및 PCIe 타겟 디바이스들(111)을 지원하도록 동작가능하다. 이와 관련하여, PCIe 트래픽 및 SAS 트래픽은 둘다, 대응하는 PCIe Phys/링크들(351-1 - 4), SAS Phys/링크들(360-1 - 4) 및 SAS Phys/링크들(361-1 - 4)를 통해 확장기 모듈(353)에 의해 서비스된다. 예를 들어, SAS Phys/링크들(361-1 - 4)은 업스트림 SAS 확장기(102)에 연결될 수 있다. 따라서, SAS Phys/링크들(361-1 - 4)은 업스트림 SAS 확장기(102)의 대응하는 SAS Phys/링크들에 연결하고, PCIe 데이터가 다른 PCIe 가능 디바이스(예를 들면, 다른 PCIe/SAS 확장기 또는 PCIe/SAS 제어기(104))로부터 통과해 전송될 수 있는 SAS 접속을 형성하도록 동작가능하다.
확장기 모듈(353)은 확장기 접속 라우터(355), 확장기 접속 관리자(354) 및 브로드캐스트 전파 프로세서(356)를 포함한다. 확장기 접속 관리자(354)는 확장기 내에 다양한 링크 층들의 접속들을 형성하기 위한 요청들을 서비스한다. 확장기 접속 라우터(355)는 확장기 내의 링크층들 사이의 스위칭 기능을 제공한다. 브로드캐스트 전파 프로세서(356)는 PCIe/SAS 애그리게이터(aggregator)(352)를 통해 부착된 PCIe 타겟 디바이스들(111)을 발견하고, 입력되는 브로드캐스트 요청들을 처리하고, 요청들이 SAS 프로토콜 요건들마다 전달되는 것을 보장하도록 동작가능하다. 일반적으로, 부착된 PCIe 타겟 디바이스들(111)과 관련되는 발견된 정보는 PCIe/SAS 제어기(104)와 같은 PCIe 가능 SAS 개시자들에 이용가능하게 만들어지며, 본질적으로, 예를 들면, 벤더 고유의 SMP 기능들에 의해서 또는 새로운 표준화된 SMP PCIe 디바이스 발견 기능들에 의해, 그 정보를 전형적인 레거시 SAS 제어기들로부터 차단한다. 일반적으로, 이러한 모듈들 각각은 PCIe 터널링된 접속들을 서비스하면서 그의 표준 SAS 동작을 유지한다.
PCIe/SAS 애그리게이터(352)는 확장기 모듈(353)의 표준 SAS 확장기 기능에 대한 표준 인터페이스를 제공하면서, 다수의 PCIe 타겟 디바이스들(111)을 지원하는데 필요한 PCIe 제어, 디바이스마다의(per-device) 신용 관리 및 버퍼링을 제공한다. PCIe 신용 관리는 PCIe 디바이스가 그 트랜잭션층(즉, TLP)에서의 각각의 수신 버퍼에 대한 초기 신용의 양을 알려줄 수 있도록 하는 PCIe 프로토콜의 방안이다. 링크의 반대 단부에서의 디바이스는, 이러한 디바이스에게 트랜잭션들을 전송할 때, 각각의 TLP가 그의 어카운트(account)로부터 소비하는 신용들의 수를 카운트한다. 전송하는 PCIe 디바이스는 그의 소비된 신용 카운트가 그의 신용 제한을 초과하지 않았을 때에 TLP를 송신한다. 수신하는 디바이스가 그의 버퍼로부터 TLP를 처리하는 것을 완료할 때에, 수신하는 디바이스는 신용들의 리턴을 송신 디바이스에게 시그널링하며, 그것은 복원된 양만큼 신용 제한을 증가시킨다. PCIe 데이터 패킷들이 이러한 방식으로 SAS 접속을 통해 터널링될 때에, DLLP들이 중간 확장기들을 통해 통과되어, PCIe/SAS 애그리게이터(352) 및 PCIe/SAS 상호 작용 개시자(이하에 보다 상세히 설명됨)가 SAS 접속의 지속기간 동안 DLLP 프레임들을 직접 교환할 수 있도록 한다.
PCIe 트래픽은 패킷화되기 때문에, 다수의 PCIe 타겟 디바이스들(111)이 단일의 물리적 SAS 접속을 공유할 수 있다. 그리고, 그와 같이, PCIe 트래픽이 PCIe/SAS 애그리게이터(352)로부터 확장기 접속 관리자(354) 및 확장기 접속 라우터(355)로의 하나 이상의 접속 요청들 상에서 운반되어, 부착된 PCIe 타겟 디바이스들(111)을 서비스하기 위한 적절한 대역폭을 형성하게 된다. 즉, 서비스된 PCIe 타겟 디바이스들(111)의 수와 이용된 확장기 기능 인터페이스들의 수 사이의 기본적인 관계는 없다.
다수의 PCIe 타겟 디바이스들(111) 사이에서 다수의 SAS 접속들을 공유할 때, TLP 시퀀스 번호들이 각각의 PCIe 타겟 디바이스(111)에 대해 독립적으로 추적된다. TLP 시퀀스 번호들은 패킷들이 그들의 미리규정된 목적지로 적절히 전달되도록 보장하는데 이용된다. 일 실시예에서, 경로 식별자가 SAS 도메인(100)을 통한 송신을 위한 패킷들을 준비하는 TLP의 시작부에서 TLP 시퀀스 번호와 함께 포함된다. 예를 들어, TLP 시퀀스 번호에 인접한 TLP에서의 제1 니블(nibble)은 통상적으로 모두 논리 "0들"로 세팅된다. 제1 니블은 고유한 PCIe 타겟 디바이스들(111)에 대한 다수의 상이한 경로들(예를 들면, 16)을 인코딩하는데 대신 이용될 수 있다. 대안적으로 또는 추가적으로, PCIe/SAS 애그리게이터(352)는 TLP 헤더를 점검하여, TLP에 적용되는 특정한 어드레싱 및 라우팅을 파악함으로써, SAS 접속들의 세트를 공유할 수 있는 PCIe 타겟 디바이스들(111)의 수에 대한 제한들을 제거할 수 있다.
도 7은 도 6의 PCIe/SAS 확장기(101/103)의 예시적인 PCIe/SAS 애그리게이터(352)의 블록도이다. 본 실시예에서, PCIe/SAS 애그리게이터(352)는 PCIe/SAS 확장기(101/103)의 확장기 접속 관리자(354) 및 확장기 접속 라우터(355)로의 및 그것들로부터의 SAS 접속들에 대한 요청들을 처리하도록 동작가능한 확장기 인터페이스(404)를 포함한다. SAS 접속이 수립되면, PCIe 패킷들의 하나 이상의 스트림이 확장기 인터페이스(404)를 통해 통과될 수 있다. 이와 관련하여, DLLP 접속 엔드포인트(301)에는, PCIe/SAS 확장기(101/103)와 PCIe/SAS 제어기(104) 사이에서 SAS 도메인(100)을 통해 전송된 DLLP 패킷들을 종료하기 위해, 각각의 개방 SAS 접속에 대한 DLLP 종료 모듈들(403-1 - 4)이 제공된다. 언급한 바와 같이, 이러한 DLLP 패킷들은 단부간 TLP 패킷들을 수신확인하고, SAS 도메인(100)을 통한 PCIe 패킷 송신에 대해 이용가능한 신용을 관리한다.
PCIe TLP들은 DLLP 종료 모듈들(403-1 - 4)을 통해 PCIe 데이터 패킷 스위치(401)로 이동한다. PCIe 데이터 패킷 스위치(401)는 각각의 PCIe Phy/링크에 대한 흐름 제어 신용 정보를 유지하고, DLLP 종료들(403-1 - 4)과 PCIe Phy/링크 사이에서 데이터 패킷들을 전달할지, 또는 신용의 부족으로 인해 즉각적으로 전달될 수 없는 데이터 패킷을 버퍼링할지의 여부에 대한 신용 기반 결정들을 수행한다. 신용이 이용가능해질 때, PCIe 데이터 패킷 스위치(401)는 데이터 패킷의 목적지에 따라, PCIe 패킷 버퍼(402)에 저장된 TLP들을 PCIe Phy/링크 또는 DLLP 종료들(403-1 - 4)로 전달한다.
언급한 바와 같이, SAS 접속들은, 특정 SAS 링크의 대역폭이 PCIe 트래픽에 대해 최대화될 때에, PCIe 트래픽의 지속적인 이용에 전용될 수 있다. 그렇지 않은 경우, 일반적으로 PCIe 타겟 디바이스들(111)에 대해 이용가능한 대역폭은, 일반적으로 PCIe 호스트 시스템(105)의 이용가능한 SAS 대역폭 및 업스트림 대역폭의 함수인 PCIe/SAS 애그리게이터(352)에서 이용가능한 신용들의 함수이다.
도 8은 예시적인 PCIe/SAS 제어기(104)의 블록도이다. PCIe/SAS 제어기(104)는 전형적인 SAS 타겟 디바이스들(110) 및 PCIe 타겟 디바이스들(111)을 지원하도록 동작가능하다. PCIe/SAS 제어기(104)는 다운스트림 PCIe 타겟 디바이스들(111)의 PCIe 열거를 수행하여, SAS 도메인(100)에 부착된 PCIe 타겟 디바이스들(111)의 토폴로지를 형성함으로써, PCIe 타겟 디바이스들(111)에 대한 "루트 컴플렉스"로서 동작하도록 할 수 있다. PCIe/SAS 제어기(104)는 PCIe 프로토콜에 따라 PCIe 제어 및 PCIe/SAS 접속 신용 관리를 관리하는 PCIe/SAS 상호 작용 개시자(415)를 포함한다. 이와 관련하여, PCIe/SAS 상호 작용 개시자(415)는 다수의 업스트림 PCIe/SAS 확장기들(101/103)을 지원하기 위한 버퍼링을 제공한다. 예를 들어, PCIe 프로토콜은 비접속형 프로토콜이므로, 데이터 패킷들은 SAS 접속을 통한 PCIe 데이터 패킷들의 전송을 제어 및 추적하기 위해 SAS 도메인(100) 내의 PCIe 접속 엔드포인트들에서 버퍼링될 필요가 있다. PCIe/SAS 상호 작용 개시자(415)는 PCIe 호스트 시스템(105)으로부터의 데이터 패킷들의 버퍼링을 제공하고, 그 목적지 PCIe/SAS 확장기(101/103)로 전송되는 PCIe 데이터 패킷들과 관련된 신용들을 관리한다.
PCIe/SAS 상호 작용 개시자(415)는 PCIe 호스트 시스템(105)을, SAS 도메인(100)을 통해 액세스가능한 PCIe/SAS 확장기들(101/103)에 부착되는 PCIe 타겟 디바이스들(111)의 접속 세부사항들로부터 차단하는 비투명 PCIe 브리지로서 어느 정도까지는 동작한다. 즉, SAS 도메인(100)을 통한 데이터 패킷들의 다양한 PCIe 타겟 디바이스들(100)로의/로부터의 접속, 라우팅 및 전송의 복잡도는, PCIe 호스트 시스템(105)이 다른 작업들에 대해 그의 처리 능력들을 이용할 수 있도록, PCIe/SAS 제어기(104) 내로 푸시 다운(pushed down)된다. 이와 관련하여, PCIe/SAS 상호 작용 개시자(415)는 SAS 포트층(414)과 작용하여, 데이터 패킷들을 그들의 목적지 PCIe/SAS 확장기들(101/103)로 라우팅한다. 즉, SAS 포트층(414)은 PCIe/SAS 상호 작용 개시자(415)에 의해 지시된 것으로서 PCIe 데이터 패킷들을 라우팅하기 위한 스위칭 기능으로서 동작한다.
또한, PCIe/SAS 제어기(104)는 SAS 도메인(100)에서의 확장기들, 즉, 레거시 SAS 확장기들(102) 또는 PCIe/SAS 확장기들(101/103)에 부착된 SAS 타겟 디바이스들(110) 사이에서 SAS 데이터를 라우팅하기 위해 SAS 전송 모듈(416)을 포함한다. SAS 전송 모듈(416)은 SAS 포트층(414)의 스위칭을 통해 SAS 타겟 디바이스들(110)에게 전형적인 SAS 통신들을 제공하도록 동작한다.
PCIe 호스트 인터페이스(417)는 PCIe 호스트 시스템(105)의 PCIe 도메인과 SAS 도메인(100) 사이에 통신들을 제공하기 위해 PCIe/SAS 제어기(104)로 구성된다. 예를 들어, "xN" PCIe Phy/링크(418)는 PCIe 호스트 시스템(105)의 PCIe 논리 상호접속들에 따라 PCIe 데이터 패킷들을 수신한다(예를 들면, x1 Phys, x2 Phys, x4 Phys 등). 그러한 데이터 패킷들이 SAS 타겟 디바이스들(110)을 향한 것이라면, PCIe 호스트 인터페이스(417)는 그러한 데이터 패킷들을, SAS 전송 모듈(416)을 통한 SAS 도메인(100)을 통한 SAS 타겟 디바이스들(110)로의 전송을 위해, SAS 데이터로 변형시킨다.
도 9는 도 8의 PCIe/SAS 제어기의 예시적인 PCIe/SAS 상호 작용 개시자(415)의 블록도이다. PCIe/SAS 상호 작용 개시자(415)는 SAS 포트층 제어기(451)와 상호 작용하여, PCIe TLP 데이터 패킷들을 PCIe/SAS 확장기(101/103)로 및 PCIe/SAS 확장기(101/103)로부터 전송하기 위해 SAS 접속들을 형성한다. PCIe TLP 데이터 패킷들은, PCIe 버퍼 관리자 및 호스트 시스템 인터페이스(452)에 의해 제어되는 PCIe 패킷 버퍼(454)에 저장된다. 다시, 상기 실시예들에 따르면, PCIe 데이터 패킷들은 PCIe 호스트 시스템(105)과 PCIe 타겟 디바이스(111) 사이의 PCIe 데이터 패킷들의 전송 동안 SAS 도메인(100)에서의 접속 엔드포인트들에서 버퍼링된다. 이와 관련하여, PCIe 패킷 버퍼(454)는 PCIe 엔드포인트(301) 및 SAS 엔드 포인트(302)의 비투명 브리지 상호 작용 포인트로서 동작한다.
DLLP 종료 모듈들(453-1 - 4)은, PCIe/SAS 애그리게이터(352)의 DLLP 종료 모듈들(403)과 유사한 방식으로 PCIe/SAS 확장기(101/103)와 PCIe/SAS 제어기(104) 사이에서 전달된 DLLP 패킷들을 종료한다. 이것은 DLLP 패킷들이 TLP 패킷들을 수신확인하고, SAS 접속들을 통한 PCIe 패킷 송신에 대해 이용가능한 신용을 관리할 수 있도록 한다.
다른 예시를 제공하기 위해, PCIe 데이터 패킷들이 PCIe/SAS 제어기(104)와 PCIe/SAS 확장기(101/103)에 부착된 PCIe 타겟 디바이스(111) 사이에서 전송될 때, PCIe 데이터 패킷들의 전송을 필요로 하는 구성요소로부터의 표준 SAS OAF가 2개의 구성요소들 사이에 SAS 접속을 형성한다. SAS 접속은 PCIe 데이터 패킷들에서의 구성요소가 전송할 PCIe 데이터 패킷들을 갖거나 또는 그렇지 않은 경우 SAS 프로토콜에 의해 지시되는 한 개방된다. 구성요소가 PCIe 데이터 패킷들을 전송할 필요가 더 이상 없을 경우, 그 구성요소는 SAS 프로토콜의 CLOSE 프리미티브를 발행한다. STP 접속들의 경우, CLOSE 프리미티브가 양 방향에서 교환되면, SAS 접속은 종료되고, 후속하여 접속에 참여하는 확장기들(101/102/103)에 의해 티어 다운된다.
개방 접속의 전체 듀플렉스 이용을 개선하기 위해, 접속의 일측은 그 CLOSE 프리미티브를 전송하기 전에, 그것이 SAS 접속을 개시한 접속에서의 구성요소로부터 CLOSE 프리미티브를 수신한 이후까지 기다릴 수 있다. 대안적으로 또는 추가적으로, SAS 접속의 폐쇄는 SAS 접속에서 PCIe 타겟 디바이스(111)와 PCIe/SAS 제어기(104) 사이에서 전송되는 TLP 데이터 패킷들을 해석함으로써 수행될 수 있다. 이것은 후속하는 SAS 접속들에서의 대역폭 요건들을 예측하는데 도움이 될 수 있다. 그러나, 지속적인 SAS 접속이 전술한 바와 같이 구현되어, PCIe 트래픽에 대해 필요한 대역폭을 제공할 수 있다. 지속적인 SAS 접속은 SAS 프로토콜의 관련된 타이머들 및 EXTEND_CONNECTION 프리미티브를 이용한 SPL-3 지속 접속들의 변형으로서 구현될 수 있다.
임의의 경우, 확장기(101/103)의 PCIe/SAS 애그리게이터(352) 및 PCIe/SAS 제어기(104)의 PCIe/SAS 상호 작용 개시자(405)는 SAS 접속의 폐쇄를, 임의의 PCIe 신용, TLP 시퀀스 번호들 및 SAS 구성요소들 사이의 DLLP 경로와 관련된 임의의 다른 파라미터들의 현재 상태를 유지하기 위한 표시로서 간주한다. SAS 프로토콜에서의 명시적인 인코딩들은 PTP를 구현하고, SAS 도메인(100)에서의 PTP 접속을 식별하는데 이용될 수 있다. 대안적으로, PCIe/SAS 제어기(104)에서의 분리된 WWN(World Wide Name)을 이용하여, PCIe/SAS 상호 작용 개시자(405)에 대한 PTP 접속을 지시할 수 있다. 그 다음, 고유한 WWN들이 PCIe/SAS 확장기(101/103)에서 이용되어, 복수의 부착된 PCIe 타겟 디바이스들(111)을 식별하고, 확장기 접속 관리자(354)를 신호(cue)하여, PCIe/SAS 애그리게이터(352)에 대한 SAS 접속을 완료할 수 있다. 또한, SAS 접속은 OA가 수신되고, DWORDs가 중간 확장기들에 의해 전달되어, 레거시 확장기들(예를 들면, 확장기(102))과 동작가능할 때의 포인트까지 STP를 이용하여 형성될 수 있다.
SAS 도메인(100)을 통한 PTP 접속이 개방되면, PCIe 규칙들이 일반적으로, SAS 도메인(100)에서의 STP 데이터 전송들에 적용되는 STP 규칙들과 유사한 방식으로, 모든 PCIe 데이터 패킷 송신들에 적용된다. 예를 들어, SAS 접속이 개방될 때, DWORDS가 중간 확장기들을 통해 전달되어, PCIe 통신이 SAS 접속의 단부에서 정확하게 제공되도록 한다. 일 실시예에서, SAS 접속은 PCIe/SAS 확장기(101/103) 및/또는 PCIe/SAS 제어기(104)에서의 PCIe 데이터 패킷들의 버퍼 레벨들에 기초하여 폐쇄될 수 있다. 예시를 의해, PCIe/SAS 제어기(104)가 신용이 부족하기 때문에(즉, PCIe 패킷 버퍼(402)가 이용가능한 버퍼 공간을 갖지 못하기 때문에) PCIe 데이터 패킷들을 PCIe/SAS 확장기(101)로 전송할 수 없다면, PCIe/SAS 제어기(104)는 PCIe/SAS 확장기(101)에 대한 SAS 접속을 폐쇄하도록 선택할 수 있다. 또한, 접속은 어떤 미리결정된 양의 패킷들을 전송시의 진행에 기초하여, 또는 버퍼 레벨들이 0으로 되는 경우, 폐쇄될 수 있다.
본 발명은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예, 또는 하드웨어 및 소프트웨어 요소들 둘다를 포함하는 실시예의 형태를 취할 수 있다. 일 실시예에서, 본 발명은 제한적인 것은 아니지만, 펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함하는 소프트웨어로 구현된다. 도 10은 컴퓨터 판독가능 매체(506)가 본 명세서에서 개시된 방법들 중 임의의 것을 수행하기 위한 인스트럭션들을 제공할 수 있는 컴퓨팅 시스템(500)을 도시한다.
더욱이, 본 발명은 컴퓨터 또는 임의의 인스트럭션 실행 시스템에 의해서 또는 그것들과 함께 이용하기 위한 프로그램 코드를 제공하는 컴퓨터 판독가능 매체(506)로부터 액세스가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 이러한 설명의 목적으로, 컴퓨터 판독가능 매체(506)는 컴퓨터 시스템(500)을 포함하는 인스트럭션 실행 시스템, 장치 또는 디바이스에 의해서 또는 그것들과 함께 이용하기 위한 프로그램을 명백하게 저장할 수 있는 임의의 장치일 수 있다.
매체(506)는 임의의 유형의 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템(또는 장치 또는 디바이스)일 수 있다. 컴퓨터 판독가능 매체(506)의 예들은 반도체 또는 고체 상태 메모리, 자기 테이프, 탈착가능 컴퓨터 디스켓, RAM(random access memory), ROM(read-only memory), 경화(rigid) 자기 디스크 및 광학 디스크를 포함한다. 광학 디스크들의 현재의 예들은 CD-ROM(compact disk-read only memory), CD-R/W(compact disk - read/write) 및 DVD를 포함한다.
프로그램 코드를 저장 및/또는 실행하기에 적절한 컴퓨팅 시스템(500)은 시스템 버스(510)를 통해 메모리(508)에 직접적으로 또는 간접적으로 연결된 하나 이상의 프로세서들(502)을 포함할 수 있다. 메모리(508)는 프로그램 코드의 실제 실행 동안 이용된 로컬 메모리, 벌크 스토리지(bulk storage), 및 실행 동안에 코드가 벌크 스토리지로부터 검색되는 횟수를 감소시키기 위해 적어도 일부 프로그램 코드의 일시적인 저장을 제공하는 캐시 메모리들을 포함할 수 있다. 입/출력 또는 I/O 디바이스들(504)(제한적인 것은 아니지만, 키보드들, 디스플레이들, 포인팅 디바이스들 등을 포함함)이 시스템에 직접 또는 중간의 I/O 제어기들을 통해 연결될 수 있다. 또한, 네트워크 어댑터들이 시스템에 연결되어, 컴퓨팅 시스템(500)이 호스트 시스템 인터페이스들(512)을 통한 것과 같이 다른 데이터 처리 시스템들에 연결되거나, 또는 중간의 개인 또는 공용 네트워크들을 통해 원격 프린터들 또는 저장 디바이스들에 연결되도록 할 수 있다. 모뎀들, 케이블 모뎀 및 이더넷 카드들은 단지 몇 가지의 현재 이용가능한 타입의 네트워크 어댑터들이다.

Claims (10)

  1. SAS(Serial Attached Small Computer System Interface) 아키텍처에서 동작가능한 방법으로서,
    PCIe(Peripheral Component Interconnect Express) 타겟 디바이스를 SAS 확장기(expander)에 연결(link)하는 단계(201)와,
    상기 확장기를 SAS 제어기에 연결하는 단계(202) - 상기 SAS 제어기는 PCIe 호스트 시스템과 통신가능하게 연결됨 - 와,
    상기 제어기와 상기 확장기 사이에서 SAS 접속을 개방(open)하는 단계(203)와,
    상기 접속에서의 엔드 포인트에서 데이터의 패킷들을 버퍼링하는 단계(204)와,
    상기 접속에서 전송될 다수의 데이터 패킷들을 발행하는 단계(205)와,
    상기 발행된 다수의 데이터 패킷들을 PCIe 프로토콜을 통해 상기 타겟 디바이스와 상기 호스트 시스템 사이에서 상기 접속을 통해서 전송하는 단계(206)를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 확장기를 복수의 PCIe 타겟 디바이스들에 접속하는 단계와,
    PCIe 데이터를 상기 호스트 시스템으로부터 상기 PCIe 타겟 디바이스들로 라우팅하는 단계를 더 포함하는
    방법.
  3. 제2항에 있어서,
    상기 PCIe 타겟 디바이스들을 다른 SAS 확장기에게 단일의 PCIe 타겟 디바이스로서 나타내기 위해 상기 복수의 PCIe 타겟 디바이스들을 애그리게이팅(aggregating)하는 단계를 더 포함하는
    방법.
  4. 제1항에 있어서,
    상기 확장기와 상기 제어기 사이에서 데이터 링크층 패킷들(Data Link Layer Packets)을 교환하는 단계를 더 포함하는
    방법.
  5. 제4항에 있어서,
    상기 제어기에서 상기 데이터 링크층 패킷들을 종료 및 처리하는 단계와,
    상기 제어기에서 상기 데이터 링크층 패킷들을 통해 트랜잭션층 패킷들(Transaction Layer Packets)의 신용 관리를 수행하는 단계를 더 포함하는
    방법.
  6. 데이터 시스템(100)으로서,
    SAS 확장기(101)와,
    상기 확장기에 연결된 PCIe 타겟 디바이스(111)와,
    PCIe 호스트 시스템(105) 및 상기 확장기에 통신가능하게 연결된 SAS 제어기(104) - 상기 제어기는 SAS 프로토콜을 통해 상기 확장기와의 접속을 개방하고, PCIe 프로토콜을 통해 상기 타겟 디바이스와 상기 호스트 시스템 사이에서 상기 접속을 통해서 패킷 데이터를 전송하도록 동작가능함 - 를 포함하는
    데이터 시스템.
  7. 제6항에 있어서,
    상기 확장기는 복수의 PCIe 타겟 디바이스들에 접속하고, PCIe 데이터를 상기 호스트 시스템으로부터 상기 PCIe 타겟 디바이스들로 라우팅하도록 동작가능한 애그리게이터(aggregator)(352)를 포함하는
    데이터 시스템.
  8. 제7항에 있어서,
    상기 애그리게이터는 상기 PCIe 타겟 디바이스들을 다른 SAS 확장기에게 단일의 PCIe 타겟 디바이스로서 나타내도록 더 동작가능한
    데이터 시스템.
  9. 제6항에 있어서,
    상기 확장기는 SAS를 다른 SAS 확장기에게 제공하도록 동작가능한 애그리게이터(352)를 포함하는
    데이터 시스템.
  10. 제6항에 있어서,
    상기 제어기는 상기 확장기와 데이터 링크층 패킷들을 교환하도록 동작가능한 개시자(an initiator)(415)를 포함하는
    데이터 시스템.
KR1020140059145A 2013-06-18 2014-05-16 Sas를 통한 pcie 터널링 KR101579681B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361836282P 2013-06-18 2013-06-18
US61/836,282 2013-06-18
US13/929,537 US9424224B2 (en) 2013-06-18 2013-06-27 PCIe tunneling through SAS
US13/929,537 2013-06-27

Publications (2)

Publication Number Publication Date
KR20140147001A KR20140147001A (ko) 2014-12-29
KR101579681B1 true KR101579681B1 (ko) 2015-12-22

Family

ID=50819568

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140059145A KR101579681B1 (ko) 2013-06-18 2014-05-16 Sas를 통한 pcie 터널링

Country Status (6)

Country Link
US (1) US9424224B2 (ko)
EP (1) EP2816488A3 (ko)
JP (1) JP2015005282A (ko)
KR (1) KR101579681B1 (ko)
CN (1) CN104239256B (ko)
TW (1) TWI533140B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014005261A1 (zh) * 2012-07-02 2014-01-09 杭州华为数字技术有限公司 存储扩展装置及服务器
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
US9280508B1 (en) * 2013-09-30 2016-03-08 Pmc-Sierra Us, Inc. Apparatus and method for interoperability between SAS and PCI express
CN104579883B (zh) * 2014-12-30 2019-01-15 合肥欣奕华智能机器有限公司 一种节点设备、总线网络及其连接方法
US9690738B2 (en) * 2015-01-16 2017-06-27 Qualcomm Incorporated Peripheral component interconnect express (PCIe) hosts adapted to support remote PCIe endpoints
US10114778B2 (en) 2015-05-08 2018-10-30 Samsung Electronics Co., Ltd. Multi-protocol IO infrastructure for a flexible storage platform
CN108885599B (zh) * 2016-01-29 2019-09-03 美高森美解决方案美国股份有限公司 用于串行附连小型计算机系统接口链路的方法和设备
US10534738B2 (en) 2018-01-17 2020-01-14 Western Digital Technologies, Inc. Host bus adaptor with configurable interface
JP6635209B2 (ja) * 2018-04-18 2020-01-22 富士通クライアントコンピューティング株式会社 情報処理システム
JP6579255B1 (ja) * 2018-12-28 2019-09-25 富士通クライアントコンピューティング株式会社 情報処理システム、および中継装置
DE102020110559A1 (de) 2019-08-14 2021-02-18 Samsung Electronics Co., Ltd. Rechensystem zur Reduzierung von Latenz zwischen seriell verbundenen elektronischen Vorrichtungen
KR20210021202A (ko) 2019-08-14 2021-02-25 삼성전자주식회사 직렬로 연결된 전자 장치들 사이의 레이턴시를 감소시키기 위한 컴퓨팅 시스템
GB2592672A (en) * 2020-03-06 2021-09-08 Daimler Ag A high-speed data link (HSDL)-peripheral component interconnect express (PCIe) interface for establishing communication in vehicles
CN113220107A (zh) * 2021-05-10 2021-08-06 联芸科技(杭州)有限公司 PCIe链路的功耗管理方法以及终端设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120192038A1 (en) * 2011-01-20 2012-07-26 Byungcheol Cho Sas-based semiconductor storage device memory disk unit

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058749B2 (en) * 2003-11-13 2006-06-06 Dell Products L.P. System and method for communications in serial attached SCSI storage network
US8301810B2 (en) 2004-12-21 2012-10-30 Infortrend Technology, Inc. SAS storage virtualization controller, subsystem and system using the same, and method therefor
US7496700B1 (en) * 2005-01-12 2009-02-24 Pmc-Sierra, Inc. Serial tunneling protocol (STP) flow control in SAS expanders without SATA link state machine
US7814245B2 (en) * 2006-10-05 2010-10-12 Lsi Corporation Apparatus and methods for improved SATA device interaction without a SAS expander
US7627709B2 (en) * 2006-12-12 2009-12-01 Spectra Logic Corporation Computer bus power consuming device
US7917682B2 (en) 2007-06-27 2011-03-29 Emulex Design & Manufacturing Corporation Multi-protocol controller that supports PCIe, SAS and enhanced Ethernet
US8332552B2 (en) 2008-11-13 2012-12-11 International Business Machines Corporation Supporting multiple high bandwidth I/O controllers on a single chip
US8694709B2 (en) * 2010-04-26 2014-04-08 Dell Products L.P. Systems and methods for improving connections to an information handling system
US8281054B2 (en) 2010-08-25 2012-10-02 Lsi Corporation Methods and apparatus for improved host/initiator utilization in serial advanced technology attachment communication
US8874820B2 (en) 2010-12-28 2014-10-28 Silicon Image, Inc. Mechanism for facilitating a configurable port-type peripheral component interconnect express/serial advanced technology attachment host controller architecture
CN102749958B (zh) 2011-04-18 2017-01-25 中国南方电网有限责任公司调峰调频发电公司 主机板及采用所述主机板的服务器
US8751836B1 (en) * 2011-12-28 2014-06-10 Datadirect Networks, Inc. Data storage system and method for monitoring and controlling the power budget in a drive enclosure housing data storage devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120192038A1 (en) * 2011-01-20 2012-07-26 Byungcheol Cho Sas-based semiconductor storage device memory disk unit

Also Published As

Publication number Publication date
TWI533140B (zh) 2016-05-11
US9424224B2 (en) 2016-08-23
EP2816488A3 (en) 2015-01-07
US20140372637A1 (en) 2014-12-18
CN104239256A (zh) 2014-12-24
KR20140147001A (ko) 2014-12-29
TW201508489A (zh) 2015-03-01
CN104239256B (zh) 2018-03-09
JP2015005282A (ja) 2015-01-08
EP2816488A2 (en) 2014-12-24

Similar Documents

Publication Publication Date Title
KR101579681B1 (ko) Sas를 통한 pcie 터널링
US7660917B2 (en) System and method of implementing multiple internal virtual channels based on a single external virtual channel
US10152441B2 (en) Host bus access by add-on devices via a network interface controller
US7290066B2 (en) Methods and structure for improved transfer rate performance in a SAS wide port environment
US7743178B2 (en) Method and apparatus for SATA tunneling over fibre channel
US7937447B1 (en) Communication between computer systems over an input/output (I/O) bus
JP5005041B2 (ja) Sasデバイスの間の複数単一方向仮想接続の装置および方法
US9558148B2 (en) Method to optimize network data flows within a constrained system
US7643410B2 (en) Method and apparatus for managing a connection in a connection orientated environment
US8924610B1 (en) SAS/SATA store-and-forward buffering for serial-attached-SCSI (SAS) storage network
KR101287353B1 (ko) 직렬 연결 scsi 확장자 및 이를 통한 데이터 전송 방법
US9436412B2 (en) Preemptive connection switching for serial attached small computer system interface systems
KR20120019403A (ko) 스위칭 디바이스 및 스위칭 디바이스에서 동작 가능한 방법
WO2006019770A2 (en) System and method for transmitting data in storage controllers
US10614012B2 (en) System and method for controlling the performance of serial attached SCSI (SAS) target devices
US10171193B2 (en) Fractional multiplexing of serial attached small computer system interface links
EP1794953B1 (en) Method and system for using an in-line credit extender with a host bus adapter
US7986630B1 (en) High performance architecture for fiber channel targets and target bridges
WO2017132527A1 (en) Fractional multiplexing of serial attached small computer system interface links
TWI240859B (en) Error forwarding in an enhanced general input/output architecture and related methods
WO2016122514A1 (en) Communications over a serial attached small computer interface (sas)

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