KR101895133B1 - 다수의 PCIe 링크 폭들을 지원하기 위한 듀얼 PHY들의 사용 - Google Patents

다수의 PCIe 링크 폭들을 지원하기 위한 듀얼 PHY들의 사용 Download PDF

Info

Publication number
KR101895133B1
KR101895133B1 KR1020167000572A KR20167000572A KR101895133B1 KR 101895133 B1 KR101895133 B1 KR 101895133B1 KR 1020167000572 A KR1020167000572 A KR 1020167000572A KR 20167000572 A KR20167000572 A KR 20167000572A KR 101895133 B1 KR101895133 B1 KR 101895133B1
Authority
KR
South Korea
Prior art keywords
pcie
phys
phy
connectors
selector
Prior art date
Application number
KR1020167000572A
Other languages
English (en)
Other versions
KR20160019507A (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 KR20160019507A publication Critical patent/KR20160019507A/ko
Application granted granted Critical
Publication of KR101895133B1 publication Critical patent/KR101895133B1/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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details of memory controller using bus width
    • 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
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus

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)

Abstract

여기에 설명된 시스템들은 PCIe 디바이스 컴포넌트들이 변동하는 구성들의 호스트 시스템들에 의해 그리고 다수의 PCIe 토폴로지들에 의해 사용될 수 있게 한다. 일부 경우들에서, 다수의 변동하는 PHY들 및 PCIe 코어들이 활용되어 호스트 인터페이스 설계에 의해 만족될 수도 있는 애플리케이션 및/또는 사양들의 수를 증가시킨다. 또한, 여기에 설명된 일부 시스템들은 다수의 애플리케이션들을 위해 구성될 수 있는 호스트 인터페이스를 생성하기 위해 다수의 싱크로나이저들, 클록 멀티플라이어 유닛들, 및 셀렉터들을 포함할 수도 있다. 여기에 개시된 시스템들의 사용의 유연성의 증가에도 불구하고, PCIe 기반 디바이스들에 대한 본 개시물의 시스템들을 사용함으로써 비용들이 감소될 수 있다.

Description

다수의 PCIe 링크 폭들을 지원하기 위한 듀얼 PHY들의 사용{USING DUAL PHYS TO SUPPORT MULTIPLE PCIE LINK WIDTHS}
본 개시물은 플래시 드라이브를 포함하지만 이것으로 제한되지 않는 비휘발성 저장 서브시스템들에 관한 것이다. 더욱 구체적으로는, 본 개시물은 호스트 시스템의 루트 콤플렉스 (root complex) 와 저장 디바이스 제어기 사이에서 통신하기 위한 PCIe (Peripheral Component Interconnect Express) 커넥터들을 사용하는 비휘발성 저장 서브시스템들에 대한 시스템들 및 방법들에 관한 것이다.
PCIe 는 AGP 표준과 PCI 표준을 포함하는 다수의 구 표준들을 대체하도록 설계된 고속 직렬 확장 카드들에 대한 표준이다. PCIe 는 네트워크 카드들과 그래픽스 카드들을 포함하는 다양한 확장 카드들에 대해 사용될 수도 있다. 또한, PCIe 표준은 솔리드 스테이트 드라이브들에 대해 사용될 수도 있다.
PCIe 표준을 준수하는 디바이스들은 다양한 컴포넌트들을 포함할 수도 있고 다수의 사이즈들 및 폼 팩터들로 될 수도 있다. 예를 들어, PCIe 준수 디바이스들은 하나의 레인, 4개의 레인들, 또는 16개의 레인들을 포함할 수도 있다. 또한, PCIe 준수 디바이스들은, 랩톱들에서 사용될 수 있는 미니 카드들로서 설계될 수도 있다.
도면들 전반에 걸쳐, 참조 부호들은 참조된 엘리먼트들 사이의 유사성을 나타내기 위해 재사용된다. 도면들은 여기에 설명된 본 발명의 실시형태들을 예시하도록 그리고 그 범위를 제한하지 않도록 제공된다.
도 1a 는 x4 PCIe 링크를 통해 저장 디바이스와 통신하는 호스트 시스템의 일 예를 예시한 블록도이다.
도 1b 는 도 1a 에 예시된 저장 디바이스와 통신하는 호스트 시스템의 더욱 상세화된 예를 예시한 블록도이다.
도 1c 는 도 1b 에 예시된 호스트 인터페이스의 더욱 상세화된 예를 예시한 블록도이다.
도 2a 는 x2 PCIe 링크들의 쌍을 통해 저장 디바이스와 통신하는 2개의 루트 콤플렉스들을 갖는 호스트 시스템의 일 예를 예시한 블록도이다.
도 2b 는 도 2a 의 SoC (System on Chip) 에 포함될 수도 있는 호스트 인터페이스의 일 예를 예시한 블록도이다.
도 3 은 1개 또는 2개의 루트 콤플렉스들에 의해 사용될 수도 있는 듀얼 PHY들 (dual physical interfaces) 을 갖는 호스트 인터페이스의 일 예를 예시한 블록도이다.
도 4 는 x8 PCIe 링크를 통해 PCIe 카드와 통신하는 호스트 시스템의 일 예를 예시한 블록도이다.
도 5 는 1개 또는 2개의 루트 콤플렉스들에 의해 사용될 수도 있는 쿼드 PHY 와 듀얼 PHY들의 조합을 갖는 호스트 인터페이스의 일 예를 예시한 블록도이다.
본 발명의 특정 실시형태들이 설명되지만, 이들 실시형태들은 오직 예로서만 제시되며, 본 발명의 범위를 제한하려고 의도된 것이 아니다. 실제로, 여기에 설명된 신규한 방법들 및 시스템들은 다양한 다른 형태들로 구현될 수도 있다. 또한, 여기에 설명된 방법들 및 시스템들의 형태에 있어서 다양한 생략들, 대체들, 및 변경들은 본 발명의 사상을 벗어나는 일 없이 행해질 수도 있다.
개관
상술된 바와 같이, PCIe (Peripheral Component Interconnect Express) 준수 디바이스들은 다양한 사이즈들 및 형태들로 될 수도 있다. 또한, PCIe 표준은 그래픽스 카드들 및 솔리드 스테이트 드라이브들을 포함하는 다양한 타입들의 디바이스들에서 사용될 수도 있다. 일반적으로, PCIe 준수 디바이스들에는 용도 특정된 다수의 컴포넌트들이 공급된다. 그러나, 용도 특정됨에도 불구하고, 많은 PCIe 준수 디바이스들은 유사한 타입들의 컴포넌트들을 공유할 수도 있다. 예를 들어, 다수의 PCIe 준수 디바이스들은 PCIe 디바이스와 하나 이상의 루트 콤플렉스 (root complex) 들을 통한 호스트 시스템 사이의 통신을 용이하게 하도록 설계되는 호스트 인터페이스를 포함할 수도 있다. 일부 PCIe 준수 디바이스들이 컴포넌트 타입들을 공유하지만, 각각의 컴포넌트는 서브-컴포넌트들이 용도 특정될 수도 있고 사용의 유연성이 가능하지 않기 때문에 개별적으로 설계된다.
본 개시물의 일부 실시형태들은, 변동하는 수의 연관된 루트 콤플렉스들을 가질 수도 있는 다양한 PCIe 준수 디바이스들에 의해 사용되도록 하는 유연성을 제공하는 호스트 인터페이스 설계들에 관한 것이다. 일부 실시형태들에서, 유연성있는 호스트 인터페이스들은 PCIe 디바이스와 연관된 하나 이상의 비용들을 감소시킬 수 있다. 이 감소된 비용은 일부 경우들에서 호스트 인터페이스들의 유연성의 증가에도 불구하고 달성될 수 있다.
여기에 제시된 일부 실시형태들은 변동하는 사이즈들의 PHY들 (physical interfaces) 그리고, 일부 경우들에서, 변동하는 사이즈들의 PCIe 코어들을 활용하여, 호스트 인터페이스가 다양한 시스템들 및 PCIe 토폴로지들에 의해 사용될 수 있게 한다. 예를 들어, 여기에 설명된 일부 실시형태들은 각각의 호스트에 대해 호스트 인터페이스를 재설계하는 일 없이 1개, 2개, 또는 그 이상의 루트 콤플렉스들을 갖는 호스트 디바이스들에 의해 사용될 수도 있다. 여기에 개시된 PHY들은 PCIe PHY들을 포함할 수도 있다.
설명을 단순화하기 위해, 본 개시물이 PCIe 의 관점에서 설명되지만, 본 개시물은 이러한 것으로 제한되지 않는다. 예를 들어, 본 개시물은 고속 직렬 인터페이스를 포함하는 임의의 타입의 직렬 인터페이스에서 활용될 수도 있다. 또한, 본 개시물은 하나 이상의 프로세싱 코어들 및 직렬 인터페이스를 포함하는 임의의 타입의 디바이스 및/또는 카드에서 사용될 수도 있다.
시스템 개관
도 1a 는 x4 PCIe 링크를 통해 저장 디바이스 (104) 와 통신하는 호스트 시스템 (102) 의 일 예를 예시한 블록도이다. 하나의 실시형태에서, 저장 디바이스 (104) 는 SSD, 하드 디스크 드라이브, 하이브리드 디스크 드라이브, 또는 임의의 다른 데이터 저장 디바이스일 수도 있다. 호스트 시스템 (102) 은 저장 디바이스와 통신할 수도 있는 임의의 컴퓨팅 디바이스를 포함할 수도 있다. 도시된 바와 같이, 호스트 시스템 (102) 은 저장 디바이스 (104) 의 SoC (System on Chip; 108) 와 통신함으로써 저장 디바이스와 통신하는 루트 콤플렉스 (106) 를 포함할 수도 있다. 루트 콤플렉스 (106) 는, 예를 들어, 프로세스 대신에 트랜잭션 요청들을 생성함으로써, 메모리 액세스 커맨드들을 프로세싱하는 것을 용이하게 할 수 있는 임의의 시스템을 포함할 수 있다. 저장 디바이스 (104) 는 하나 이상의 비휘발성 솔리드 스테이트 메모리 어레이들 (160) (도 1b 에 예시됨) 을 포함할 수도 있는 임의의 타입의 저장 매체들을 포함할 수 있다. 일부 실시형태들에서, 회전 자기 매체들과 같은 다른 타입들의 매체들은 솔리드 스테이트 메모리 대신에 또는 그 솔리드 스테이트 메모리에 부가적으로 사용될 수도 있다. SoC (108) 는 저장 디바이스 (104) 및 비휘발성 솔리드 스테이트 메모리 어레이들 (160) 과 상호작용하기 위한 하나 이상의 컴포넌트들을 포함할 수 있다.
저장 디바이스 (104) 및 SoC (108) 의 추가 상세들이, 저장 디바이스 (104) 와 통신하는 호스트 시스템 (102) 의 더욱 상세화된 예를 예시한 블록도인 도 1b 에 예시된다. 도 1b 에 도시된 바와 같이, 호스트 시스템 (102) 은 루트 콤플렉스 (106) 에 부가적으로 프로세서 (132) 를 포함할 수도 있다. 프로세서는 저장 디바이스 (104) 로/로부터 메모리 액세스 커맨드들을 발행하고 데이터 트래픽을 핸들링할 수도 있다. 일부 경우들에서, 루트 콤플렉스 (106) 는 프로세서 (132) 가 루트 콤플렉스 (106) 에 대한 메모리 액세스 요청들의 적어도 부분적인 프로세싱을 오프-로딩하는 것을 허용함으로써 중재자로서 작용할 수도 있다. 2개의 개별적인 컴포넌트들로서 예시되었지만, 일부 경우들에서, 루트 콤플렉스 (106) 는 프로세서 (132) 의 부분으로서 포함될 수도 있다.
이전에 서술된 바와 같이, 저장 디바이스 (104) 는 다수의 비휘발성 솔리드 스테이트 메모리 어레이들 (160) 을 포함할 수도 있다. 이 어레이들은, 예를 들어, 플래시 집적 회로들, C-RAM (Chalcogenide RAM), 상 변화 메모리 (PC-RAM 또는 PRAM), 프로그래밍가능한 금속화 셀 RAM (PMC-RAM 또는 PMCm), OUM (Ovonic Unified Memory), RRAM (Resistance RAM), NAND 메모리, NOR 메모리, EEPROM, FeRAM (Ferroelectric Memory), 또는 다른 이산 NVM 칩들을 포함할 수도 있다. 솔리드 스테이트 저장 디바이스들은, 당업계에 알려진 바와 같이, 블록들, 페이지들, 및 섹터들로 물리적으로 분할될 수도 있다. 저장의 다른 형태들 (예를 들어, 배터리 백업 휘발성 DRAM 또는 SRAM 디바이스들, 자기 디스크 드라이브들 등) 이 부가적으로 또는 대안적으로 사용될 수도 있다.
저장 디바이스 (104) 는 신호들을 루트 콤플렉스 (106) 로부터 SoC (108) 로 통신하거나 그 역으로 통신하는 커넥터들 (112) 을 포함할 수도 있다. 커넥터들 (112) 은 PCIe 커넥터들 또는 차동 입/출력 커넥터들과 같은 물리적인 커넥터들일 수도 있다. 신호들은 메모리 액세스 커맨드들과 데이터 양쪽 모두를 포함할 수도 있다.
일부 경우들에서, SoC (108) 는 제어기로서 기능할 수도 있다. SoC (108) 는 적어도 호스트 인터페이스 (110) 및 메모리 제어기 (114) 를 포함할 수도 있다. 도시되지 않았지만, SoC (108) 는 비휘발성 솔리드 스테이트 메모리 어레이들 (160) 의 관리와 그 비휘발성 솔리드 스테이트 메모리 어레이들 (160) 로의 액세스를 용이하게 하는 부가적인 컴포넌트들을 포함할 수도 있다. 예를 들어, SoC (108) 는 ECC (Error Correcting Code) 시스템들을 포함할 수도 있다.
호스트 인터페이스 (110) 는 커넥터들 (112) 을 통해 루트 콤플렉스 (106) 로부터 신호들을 수신하고 그 신호들을 메모리 제어기 (114) 에 의한 프로세싱을 위해 준비하기 위한 임의의 시스템을 포함할 수 있다. 이들 신호들은 비휘발성 솔리드 스테이트 메모리 어레이 (160) 에의 저장을 위해 메모리 액세스 커맨드들 및 데이터를 포함할 수도 있다. 또한, 호스트 인터페이스 (110) 는 루트 콤플렉스 (106) 에 프로비저닝하기 위해 메모리 제어기 (114) 로부터 수신된 신호들을 프로세싱하도록 구성될 수도 있다. 일부 경우들에서, 호스트 인터페이스는 호스트 프로세서 (116) 를 포함할 수도 있다. 호스트 프로세서 (116) 는 호스트 인터페이스 (110) 에서 수신된 신호들의 프로세싱을 용이하게 할 수 있는 임의의 시스템을 포함할 수도 있다. 호스트 인터페이스 (110) 에 관한 더욱 상세들은 도 1c 와 관련하여 아래에 설명된다.
메모리 제어기 (114) 는 비휘발성 솔리드 스테이트 메모리 어레이 (160) 와 통신하기 위한 임의의 시스템을 포함할 수 있다. 메모리 제어기 (114) 는 호스트 인터페이스 (110) 로부터 수신된 메모리 액세스 커맨드들에 응답하여 비휘발성 솔리드 스테이트 메모리 어레이 (160) 에 액세스할 수도 있다. 또한, 메모리 제어기 (114) 는 가비지 콜렉션 및 웨어 레벨링과 같은 메모리 관리 커맨드들을 수행할 수도 있다. 일부 실시형태들에서, 메모리 제어기 (114) 는 메모리 관리 및 메모리 액세스 커맨드들 중 일부 또는 전부를 수행하기 위한 프로세서 (120) 를 포함할 수도 있다.
도 1c 는 도 1b 에 예시된 호스트 인터페이스 (110) 의 더욱 상세화된 예를 예시한 블록도이다. 호스트 인터페이스 (110) 는, 도 1b 에 예시된 호스트 프로세서 (116) 에 부가적으로, 쿼드 PHY (140) 및 x4 PCIe 코어 (142) 를 포함할 수도 있다. 쿼드 PHY (140) 는 4개의 레인들을 지원할 수 있는 PHY 이다. 쿼드 PHY 의 각각의 핀은 커넥터들 (112) 의 커넥터 (112A 내지 112D) 와 연관된 PCIe 레인과 통신할 수도 있다. 도 1c 에 예시된 바와 같이, 커넥터들 (112) 의 각각의 커넥터 (112A 내지 112D) 는 2개의 차동 시그널링 쌍들 (예를 들어, E10/11 및 E13/14, E19/20 및 E22/23 등) 을 포함하는 레인일 수도 있다. 차동 시그널링 쌍들 중 하나는 데이터 및/또는 커맨드들을 송신하기 위해 사용될 수도 있고 차동 시그널링 쌍들 중 하나는 데이터 및/또는 커맨드들을 수신하기 위해 사용될 수도 있다. 4개의 커넥터들 (112A 내지 112D) 및 단일의 쿼드 PHY (140) 가 예시되지만, 커넥터들의 수와 쿼드 PHY들의 수가 달라질 수 있다. 예를 들어, 호스트 인터페이스 (110) 는 2개의 쿼드 PHY들을 포함할 수도 있고, 이 각각의 쿼드 PHY 는 총 8개의 커넥터들에 대해 4개의 커넥터들과 통신한다.
쿼드 PHY (140) 는 커넥터들 (112) 로부터 신호들을 수신하고 그 신호들을 PCIe 코어 (142) 에 제공하기 전에 다수의 신호 프로세싱 동작들을 수행하도록 구성된 임의의 타입의 물리적 인터페이스를 포함할 수 있다. 예를 들어, 쿼드 PHY (140) 는 다른 신호 프로세싱 기능들을 재정형, 재생성, 필터링, 또는 수행할 수도 있다. 또한, 쿼드 PHY (140) 는 수신된 신호의 주파수를 변경할 수도 있다. 일부 경우들에서, 쿼드 PHY (140) 는 직렬 신호를 취득하고 그것을 병렬 신호로 컨버팅할 수도 있다. 예를 들어, 쿼드 PHY (140) 는 데이터의 고속 직렬 스트림을 취득하고 그것을 저속 병렬 스트림으로 컨버팅할 수도 있다. 일단 신호가 프로세싱되었다면, 쿼드 PHY (140) 는 신호를 PCIe 코어 (142) 에 제공할 수도 있다.
일부 실시형태들에서, 이 신호는 Intel® 에 의해 발행된 PIPE (PCI Express) 에 대한 PHY 인터페이스와 같은 산업 표준과 매칭하도록 수정될 수도 있다. 유리하게는, PIPE 표준을 구현함으로써, 상이한 제조자들에 의해 개발된 PHY들 및 PCIe 코어들은 서로 기능하도록 구성될 수 있다. 일부 경우들에서, PIPE 표준은 쿼드 PHY (140) 및 PCIe 코어 (142) 에 의해 구현될 수도 있다. 그러나, 다른 경우들에서, 쿼드 PHY (140) 와 PCIe 코어 (142) 사이의 성공적인 통신을 가능하게 하기 위해 쿼드 PHY (140) 및/또는 PCIe 코어 (142) 로 전송되거나 또는 쿼드 PHY (140) 및/또는 PCIe 코어 (142) 로부터 수신된 신호들을 수정하도록 PIPE (144) 와 같은 중재자가 사용될 수도 있다. 도 1c 에서 개별적인 디바이스로서 예시되었지만, 통상적으로 PIPE (144) 는 디바이스들 사이의 통신을 위한 신호들의 포맷을 나타내는 개념적인 디바이스이다. 다시 말해서, PIPE (144) 디바이스의 요건들은 호스트 인터페이스 (110) 의 개별적인 컴포넌트로서보다는 쿼드 PHY (140) 및 PCIe 코어 (142) 의 부분으로서 구현될 수도 있다.
상술된 바와 같이, 호스트 인터페이스 (110) 는 x4 PCIe 코어를 포함할 수도 있다. x4 PCIe 코어는 메모리 제어기 (114) 와 같은 제어기 및 루트 콤플렉스 사이의 통신을 용이하게 할 수 있는 임의의 타입의 PCIe 코어를 포함할 수도 있다. PCIe 코어는 통신을 용이하게 하도록 다수의 디지털 신호 프로세싱 (DSP) 기능들을 수행할 수도 있다. 예를 들어, PCIe 코어는 에러 정정을 수행하는 것, 요청들의 재송신을 요청하는 것, 수신된 데이터를 패킷화하는 것, 데이터 링크를 추후에 확립하는 것 등을 할 수도 있다.
멀티 루트 콤플렉스 시스템의 예
일부 경우들에서 다수의 루트 콤플렉스들이 PCIe 코어를 공유할 수도 있지만, 일반적으로, 각각의 루트 콤플렉스 및/또는 프로세서는 개별적인 PCIe 코어를 사용하거나 그와 연관된다. 따라서, 도 1c 에 제시된 예는 루트 콤플렉스 (106) 및/또는 단일 프로세서 (132) 를 포함하는 호스트 시스템 (102) 에의 사용을 위해 구성되는 호스트 인터페이스 (110) 를 예시한다. 그러나, 도 2a 에 예시된 바와 같이, 호스트 시스템 (202) 은 다수의 루트 콤플렉스들을 포함할 수도 있다.
도 2a 는 x2 PCIe 링크들의 쌍을 통해 저장 디바이스 (204) 와 통신하는 2개의 루트 콤플렉스들 (206A, 206B) 을 갖는 호스트 시스템 (202) 의 일 예를 예시한 블록도이다. 저장 디바이스 (204) 는 이전에 설명된 SoC (108) 와 유사한 기능성을 가질 수도 있는 SoC (208) 를 포함할 수도 있다. SoC (108) 에서처럼, SoC (208) 는 저장 디바이스 (204) 에 대한 제어기로서 기능할 수도 있다.
도 2b 는 도 2a 의 SoC (System on Chip; 208) 에 포함될 수도 있는 호스트 인터페이스 (210) 의 일 예를 예시한 블록도이다. 호스트 인터페이스 (210) 는 SoC (208) 를 저장 디바이스 (204) 에 연결하는데 사용될 수도 있는 커넥터들 (212) 을 통해 루트 콤플렉스들 (206A, 206B) 과 통신할 수도 있다. 커넥터들 (212) 은 물리적인 커넥터들일 수도 있고 커넥터들 (112) 에 대해 이전에 설명된 실시형태들 중 일부 또는 전부를 포함할 수도 있다. 커넥터들 (112) 에서처럼, 커넥터들 (212) 은 4개의 커넥터들을 포함할 수도 있고 이 각각의 커넥터는 커넥터들 (112A 내지 112D) 에 대해 설명된 바와 같이 2개의 차동 시그널링 쌍들의 레인을 포함한다. 그러나, 커넥터들 (112A 내지 112D) 과는 달리, 커넥터들 (212) 중 4개의 커넥터들은 커넥터들의 2개 쌍들, 커넥터들 (212A, 212B) 및 커넥터들 (213A, 213B) 로 분할될 수도 있다.
커넥터들 (212A, 212B 및 213A, 213B) 의 각각의 쌍은 상이한 루트 콤플렉스 (206A, 206B) 에 할당되거나 그 상이한 루트 콤플렉스 (206A, 206B) 와 연관될 수도 있다. 다시 말해서, 일부 경우들에서, 커넥터들 (212A, 212B 및 213A, 213B) 의 각각의 쌍은 상이한 루트 콤플렉스 (206A, 206B) 로부터 신호들을 수신하고 신호들을 그 상이한 루트 콤플렉스 (206A, 206B) 에 송신하도록 구성될 수도 있다. 또한, 도 2b 에 예시된 바와 같이, 커넥터들 (212A, 212B 및 213A, 213B) 의 각각의 쌍은 상이한 쿼드 PHY (240A, 240B) 와 통신할 수도 있다. 커넥터들 (212A, 212B) 은 쿼드 PHY (240A) 와 통신할 수도 있고 커넥터들 (213A, 213B) 은 쿼드 PHY (240B) 와 통신할 수도 있다.
각각의 쿼드 PHY (240A, 240B) 는 x4 PCIe 코어 (242A, 242B) 와 각각 통신할 수도 있다. 따라서, 루트 콤플렉스 (206A) 는 데이터 및/또는 커맨드를 커넥터들 (212A, 212B) 에 제공할 수도 있고, 이 데이터 및/또는 커맨드는 쿼드 PHY (240A) 를 통해 PCIe 코어 (242A) 에 제공된다. 이와 유사하게, 루트 콤플렉스 (206B) 는 데이터 및/또는 커맨드를 커넥터들 (213A, 213B) 에 제공할 수도 있고, 이 데이터 및/또는 커맨드는 쿼드 PHY (240B) 를 통해 PCIe 코어 (242B) 에 제공된다. 또한, PCIe 코어들 (242A, 242B) 은 쿼드 PHY들 (240A, 240B) 및 대응하는 커넥터들 (212A, 212B 및 213A, 213B) 각각을 통해 루트 콤플렉스들 (206A, 206B) 각각과 통신할 수도 있다.
도 2b 에 예시된 바와 같이, 일부 경우들에서 호스트 시스템 (202) 이 다수의 루트 콤플렉스들 (206A, 206B) 을 포함할 때, PCIe 코어들 (242A, 242B) 및 쿼드 PHY들 (240A, 240B) 의 부분들은 충분히 활용되지 않거나 또는 전혀 활용되지 않을 수도 있다. 예를 들어, 도 2b 의 쿼드 PHY (240A) 의 핀들 0 및 1 은 커넥터들 (212A, 212B) 과 통신할 수도 있지만, 핀들 2 및 3 은 미연결된 채로 유지될 수도 있고 또는 종단될 수도 있다. 이와 마찬가지로, 쿼드 PHY (240B) 의 핀들 2 및 3 은 미연결된 채로 유지될 수도 있고 또는 종단될 수도 있다. 또한, 쿼드 PHY들 (240A, 240B) 과 PCIe 코어들 (242A, 242B) 사이에 4개의 커넥션들이 도 2b 에 나타나 있지만, 단지 2개의 커넥션들이 활용될 수도 있다. 일부 실시형태들에서, 단지 2개의 커넥션들이 쿼드 PHY들 (240A, 240B) 과 PCIe 코어들 (242A, 242B) 사이에 형성될 수도 있다. 이러한 경우들에서, 쿼드 PHY들 (240A, 240B) 및 PCIe 코어들 (242A, 242B) 의 초과 용량과 연관된 부분들 및/또는 기능 블록들은 비활성화되거나, 종단되거나, 또는 그렇지 않으면 동작불가능하게 되고, 또는 기능할 수도 있지만 미사용될 수도 있다. 예시되지 않았지만, 호스트 인터페이스 (110) 와 유사하게, 호스트 인터페이스 (210) 는 호스트 프로세서를 포함할 수도 있다.
특정 실시형태들에서, 호스트 인터페이스 (210) 가 다수의 루트 콤플렉스들을 포함하는 호스트 시스템 (202) 에 의해 사용될 수 있게 하는 것은 에너지, 공간, 및 돈과 같은 리소스들을 소비시킬 수도 있다. 또한, 일부 경우들에서, 쿼드 PHY들을 사용하는 것은 호스트 인터페이스 (210) 의 적용에 대한 유연성을 감소시킬 수도 있다. 감소된 유연성 및 소비된 리소스들에 대한 하나의 솔루션은 호스트 인터페이스와는 상이한 사이즈들의 PHY들을 사용하는 것이다. 예를 들어, 쿼드 PHY들 대신에, 또는 쿼드 PHY들과 조합하여 듀얼 PHY들을 사용하는 것은, 소비된 리소스들의 양을 감소시키고 호스트 인터페이스의 유연성을 증가시킬 수 있다. 대안적인 호스트 인터페이스들의 예들이 도 3 및 도 5 와 관련하여 아래에 제시된다.
듀얼 PHY들을 갖는 예시적인 호스트 인터페이스
도 3 은 1개 또는 2개의 루트 콤플렉스들 (예를 들어, 루트 콤플렉스들 (206A, 206B)) 에 의해 사용될 수도 있는 듀얼 PHY들 (dual physical interfaces; 340A, 340B) 을 갖는 호스트 인터페이스 (310) 의 일 예를 예시한 블록도이다. 호스트 인터페이스 (310) 는 호스트 인터페이스 (210) 와 유사한 기능성을 포함할 수도 있다. 예를 들어, 호스트 인터페이스 (210) 에서처럼, 호스트 인터페이스 (310) 는 2개의 루트 콤플렉스들과 2개의 PCIe 코어들 사이의 통신을 가능하게 한다.
일반적으로, 호스트 인터페이스 (210) 는 단일 루트 콤플렉스에 의해 사용되지 않는다. 호스트 인터페이스 (210) 가 단일 루트 콤플렉스에 의해 사용되는 경우들에서, 호스트 인터페이스 (210) 는 (예를 들어, 커넥터들 (212A, 212B) 을 통한) 2개의 PCIe 레인들로 제한될 수도 있다. 그러나, 호스트 인터페이스 (310) 는 단일 루트 콤플렉스를 포함하는 호스트에 의해 사용될 수도 있다. 또한, 호스트 인터페이스 (310) 는 단일 루트 콤플렉스를 갖는 호스트 (예를 들어, 호스트 (102)) 에 커넥터들 (312A, 312B, 313A, 313B) 을 통한 4개의 PCIe 레인들로의 액세스를 제공할 수도 있다.
호스트 인터페이스 (310) 는 커넥터들 (312) 을 통해 호스트의 하나 이상의 루트 콤플렉스들과 통신할 수도 있다. 도 3 에 나타낸 바와 같이, 커넥터들 (312) 은 차동 입/출력 커넥터들일 수도 있다. 커넥터들 (212) 에서처럼, 커넥터들 (312) 은 커넥터들의 2개 쌍들, 커넥터들 (312A, 312B) 및 커넥터들 (313A, 313B) 로 분할될 수도 있다.
또한, 커넥터들 (212) 에서처럼, 커넥터들 (312A, 312B 및 313A, 313B) 의 각각의 쌍은 상이한 루트 콤플렉스 (예를 들어, 루트 콤플렉스들 (206A, 206B)) 와 통신하거나 또는 그와 연관되도록 구성될 수도 있다. 다시 말해서, 일부 경우들에서, 커넥터들 (312A, 312B 및 313A, 313B) 의 각각의 쌍은 상이한 루트 콤플렉스 (206A, 206B) 로부터 신호들을 수신하고 신호들을 그 상이한 루트 콤플렉스 (206A, 206B) 에 송신하도록 구성될 수도 있다. 또한, 도 3 에 예시된 바와 같이, 커넥터들 (312A, 312B 및 313A, 313B) 의 각각의 쌍은 상이한 듀얼 PHY (340A, 340B) 와 통신할 수도 있다. 커넥터들 (312A, 312B) 은 듀얼 PHY (340A) 와 통신할 수도 있고 커넥터들 (313A, 313B) 은 듀얼 PHY (340B) 와 통신할 수도 있다.
호스트 인터페이스 (210) 에서처럼, 호스트 인터페이스 (310) 는 PCIe 코어들 (342A, 342B) 의 쌍을 포함할 수도 있다. 예시된 실시형태에서, PCIe 코어 (342A) 는, 일부 경우들에서, 최대 4개의 커넥터들 (312A, 312B, 313A, 313B) 로부터 호스트 인터페이스 (310) 에 수신된 신호들을 프로세싱하는 것이 가능한 x4 PCIe 코어 (342A) 이다. PCIe 코어 (342B) 는, 일부 경우들에서, 최대 2개의 커넥터들 (313A, 313B) 로부터 호스트 인터페이스 (310) 에 수신된 신호들을 프로세싱하는 것이 가능한 x2 PCIe 코어이다. 도 3 에 예시된 예에서 PCIe 코어들 (342A, 342B) 은 호스트 인터페이스 (310) 가 x4 PCIe 코어에 액세스하는 단일 루트 콤플렉스, 또는 각각이 개별적인 PCIe 코어에 액세스하는 것이 가능한 2개의 루트 콤플렉스들을 지원할 수 있게 하도록 선택되었다.
유리하게는, 특정 실시형태들에서, 호스트 인터페이스 (310) 는 호스트 인터페이스 (210) 에 비해 더 큰 유연성을 제공하는데 이는 호스트 인터페이스 (310) 가 하나의 루트 콤플렉스를 포함하는 호스트 시스템 및 2개의 루트 콤플렉스들을 포함하는 호스트 시스템 양쪽 모두에 의해 사용될 수 있기 때문이다. 또한, 단일 루트 콤플렉스를 포함하는 호스트 시스템에 의해 사용되었을 때, 호스트 인터페이스 (310) 는 루트 콤플렉스가 x4 PCIe 코어의 4개의 레인들을 사용할 수 있게 한다. 또한, 호스트 인터페이스 (310) 는 호스트 인터페이스 (210) 보다 더 작은 PHY들을 사용하여 리소스들 (예를 들어, 돈, 사이즈, 전력) 을 덜 소비하는 한편 호스트 인터페이스 (210) 보다 더 큰 기능성 및 유연성을 지원한다.
도 3 은 단일 루트 콤플렉스 및 듀얼 루트 콤플렉스 호스트 시스템들 양쪽 모두를 지원하면서 최소 수 및 사이즈의 PCIe 코어들을 사용하는 호스트 인터페이스의 하나의 예시적인 구성을 제시한다. 그러나, 다른 구성들이 가능하다. 예를 들어, 양쪽의 PCIe 코어들 (342A, 342B) 은 x4 PCIe 코어들일 수도 있다. 제 2 예로서, PCIe 코어 (342A) 는 x4 PCIe 코어일 수도 있고 PCIe 코어 (342B) 는 x8 PCIe 코어일 수도 있다.
각각의 듀얼 PHY (340A, 340B) 는 클록 멀티플라이어 유닛 (clock multiplier unit (CMU); 350A, 350B) 을 포함한다. CMU들 (350A, 350B) 은 호스트 인터페이스 (310) 로부터 외부적으로 수신된 또는 듀얼 PHY들 (340A, 340B) 로부터 외부적으로 수신된 클록 신호를 수정하는 것이 가능한 임의의 시스템을 포함할 수 있다. 예를 들어, 클록 신호는 핀 입력 (미도시) 으로부터 호스트 인터페이스 (310) 로 수신될 수도 있다. 제 2 예로서, 클록 신호는 외부 소스로부터 또는 클록 생성기로부터 제어기에 수신되고 호스트 인터페이스 (310) 에 제공될 수도 있다. 클록 신호가 어디에 수신되는지에 상관없이, CMU들 (350A, 350B) 은 클록 신호의 주파수를 증가 또는 감소시킴으로써 클록 신호를 수정할 수도 있다. 일부 실시형태들에서, CMU들 (350A, 350B) 은 생략되거나 및/또는 비액티브할 수도 있다.
호스트 인터페이스 (310) 는 또한 듀얼 PHY들 (340A, 340B) 에 제공된 클록 신호를 동기화하도록 구성된 싱크로나이저 (352), 또는 sync 를 포함할 수도 있다. 일부 실시형태들에서, 싱크로나이저 (352) 는 CMU들 (350A, 350B) 을 제어함으로써 듀얼 PHY들 (340A, 340B) 에 제공된 클록 신호를 동기화할 수도 있다. CMU들 (350A, 350B) 을 제어하는 것은 CMU들 (350A, 350B) 의 동작을 동기화하는 것을 포함할 수도 있다. 대안적으로, 싱크로나이저 (352) 는 CMU (예를 들어, CMU (352A)) 를 선택하여 양쪽의 듀얼 PHY들 (350A, 350B) 에 대한 클록 신호를 수정함으로써 그리고 비-선택된 CMU (예를 들어, CMU (352B)) 를 비활성화시킴으로써 클록 신호를 동기화할 수도 있다. 일부 경우들에서, 동기화된 클록 신호는, PCIe 코어들 (342A, 342B) 및 호스트 프로세서 (316) 와 같은, 호스트 인터페이스 (310) 에 포함된 다른 디바이스들에 제공될 수도 있다. 일부 실시형태들에서, 싱크로나이저 (352) 는 생략되거나 및/또는 비액티브할 수도 있다. 예를 들어, 호스트 시스템이 2개의 루트 콤플렉스들을 포함하는 경우들에서, 각각의 루트 콤플렉스가 커맨드들/데이터를 비동기적으로 제공할 수도 있으므로 클록 신호들을 동기화하는 것은 불필요할 수도 있다. 그러나, 일부 경우들에서, 다수의 루트 콤플렉스들이 서로 비동기적으로 기능하더라도, 싱크로나이저 (352) 는 여전히 클록 신호들 및/또는 CMU들 (350A, 350B) 을 동기화하여 비휘발성 솔리드 스테이트 메모리 어레이(들) 의 동기화된 메모리 액세스를 유지할 수도 있다.
도 3 을 더 참조하면, 호스트 인터페이스 (310) 는 하나 이상의 셀렉터들 및/또는 멀티플렉서들 (360A, 360B) 을 포함할 수도 있다. 셀렉터들 (360A, 360B) 은 듀얼 PHY들 (340A, 340B) 각각으로부터 수신된 신호를 선택된 PCIe 코어 (342A, 342B) 에 보낸다. 도 3 에 예시된 바와 같이, 듀얼 PHY (340B) 로부터 수신된 신호들은 호스트 프로세서 (316) 로부터 셀렉터 (360B) 에 수신된 셀렉터 신호에 적어도 부분적으로 기초하여 PCIe 코어 (342A) 또는 PCIe 코어 (342B) 중 어느 하나에 제공될 수도 있다. 듀얼 PHY (340A) 로부터의 신호들은 PCIe 코어 (342A) 에 제공될 수도 있다.
셀렉터 (360A) 와 PCIe 코어들 사이의 단일 커넥션으로 예시된 바와 같이, 일부 경우들에서, 듀얼 PHY (340A) 로부터의 신호들은 셀렉터 신호와 상관없이 PCIe 코어 (342A) 에 제공된다. 이러한 경우들에서, 호스트 프로세서 (316) 는 셀렉터 (360A) 와 통신하지 않을 수도 있다. 또한, 일부의 이러한 경우들에서, 호스트 인터페이스 (310) 는 셀렉터 (360A) 를 포함하지 않을 수도 있다. 그러나, 다른 경우들에서, 도 3 에 예시된 바와 같이, 선택이 사이즈 하나의 PCIe 코어들의 세트로부터 된 것에 상관없이 셀렉터 (360A) 가 포함된다. 유리하게는, 특정 실시형태들에서, 셀렉터 (360A) 를 포함하는 것은 호스트 인터페이스 (310) 가 듀얼 PHY (340A) 와 PCIe 코어 (342A) 사이, 그리고 듀얼 PHY (340B) 와 PCIe 코어 (342B) 사이에 동일한 또는 실질적으로 동일한 통신 레이턴시를 유지할 수 있게 한다. 일부의 대안적인 실시형태들에서, 셀렉터 (360A) 는, 셀렉터 (360B) 에 의해 듀얼 PHY (340B) 와 PCIe 코어들 (342A, 342B) 사이의 신호 경로에 도입되는 것과 같은 동일한 또는 실질적으로 동일한 양의 레이턴시를 제공하도록 구성되는 레이턴시 블록에 의해 대체될 수도 있고, 이 레이턴시 블록은 하나 이상의 딜레이 엘리먼트들 (예를 들어, 플립 플롭들) 로부터 생성될 수도 있다.
호스트 프로세서 (316) 는 미리 인스톨되거나 미리 구성될 수도 있는 펌웨어에 기초하여 선택 신호를 생성하거나 그 선택 신호를 셀렉터들 (360A, 360B) 에 제공할 수도 있다. 일부 경우들에서, 호스트 인터페이스 (310) 에 제공된 외부 신호는 셀렉터 신호로서 셀렉터들 (360A, 360B) 에 제공될 수도 있다. 대안적으로, 외부 신호는 호스트 프로세서 (316) 에 의해 사용되어 셀렉터 신호를 결정할 수도 있다. 일부 실시형태들에서, 셀렉터 신호는 호스트 인터페이스 (310) 와 통신하는 호스트 시스템에 응답하여 자동적으로 결정될 수도 있다. 예를 들어, 호스트 시스템이 하나의 루트 콤플렉스를 포함하는 경우, 호스트 프로세서 (316) 는 셀렉터 신호를 셀렉터 (360B) 에 제공하여 셀렉터가 듀얼 PHY (340B) 로부터 수신된 신호들을 PCIe 코어 (342A) 에 제공하게 할 수도 있다. 대안적으로, 호스트 시스템이 2개의 루트 콤플렉스들을 포함하는 경우, 호스트 프로세서 (316) 는 셀렉터 신호를 셀렉터 (360B) 에 제공하여 셀렉터가 듀얼 PHY (340B) 로부터 수신된 신호들을 PCIe 코어 (342B) 에 제공하게 할 수도 있다. 일부 경우들에서, 호스트 인터페이스 (310) 는 미리 구성된다. 이러한 경우들에서, PHY 로부터 신호들을 수신하는 PCIe 코어는 동작 동안 변경되지 않는다.
일부의 이러한 경우들에서, 호스트에 포함된 루트 콤플렉스들의 수에 상관없이, 셀렉터 신호는 변경되지 않을 것이다. 예를 들어, 호스트 인터페이스 (310) 가 2개의 루트 콤플렉스들을 포함하는 호스트에의 사용을 위해 미리 구성되었다고 생각하자. 이러한 경우, 하나의 루트 콤플렉스로부터 수신된 신호들은 커넥터들 (312A, 312B) 에게, 듀얼 PHY (340A) 에게, 그리고 그 후에 PCIe 코어 (342A) 에게 셀렉터 (360A) 를 통해 통신될 것이다. 이와 유사하게, 제 2 루트 콤플렉스로부터 수신된 신호들은 커넥터들 (313A, 313B) 에게, 듀얼 PHY (340B) 에게, 그리고 그 후에 PCIe 코어 (342B) 에게 셀렉터 (360B) 를 통해 통신될 것이다. 위의 예를 계속하여, 단일 루트 콤플렉스를 갖는 호스트가 호스트 인터페이스 (310) 에 의해 SSD 에 연결된 것으로 이제 생각하자. 이러한 경우, 커넥터들 (312A, 312B) 은 루트 콤플렉스로부터 신호들을 수신할 수도 있지만, 커넥터들 (313A, 313B) 은 어더한 신호들도 수신하지 못할 수도 있고 듀얼 PHY (350B) 및 PCIe 코어 (342B) 는 활용되지 않을 수도 있다. 다른 경우들에서, PHY들 (340A, 340B) 과 PCIe 코어들 (342A, 342B) 양쪽 모두는 단일 루트 콤플렉스로부터 명령들 및 데이터를 수신할 수도 있다.
예시적인 PCIe 카드
지금까지 본 개시물의 실시형태들은 솔리드 스테이트 드라이브와 같은 저장 디바이스에 대해 설명되었다. 그러나, 본 개시물은 이러한 것으로 제한되지 않는다. 본 개시물은 PCIe 카드 (예를 들어, PCIe 그래픽스 카드, PCIe 네트워크 카드, PCIe USB 카드 등) 와 같은 다른 PCIe 기반 디바이스들에 적용될 수 있다. 도 4 는 x8 PCIe 링크를 통해 PCIe 카드 (404) 와 통신하는 호스트 시스템 (402) 의 일 예를 예시한 블록도이다.
저장 디바이스 (104) 에서처럼, PCIe 카드 (404) 는 호스트 시스템 (402) 의 루트 콤플렉스 (406) 와 통신하는 SoC (408) 를 포함할 수도 있다. SoC (408) 는 SoC (108) 와 유사하게 구성될 수도 있다. 다시 말해서, SoC (408) 는 PCIe 카드의 타입에 기초하여 메모리 제어기일 수도 있고 또는 메모리 제어기가 아닐 수도 있는 제어기 및 호스트 인터페이스를 포함할 수도 있다. 또한, SoC 의 호스트 인터페이스는 상이한 사이즈의 PHY들을 사용하여 PCIe 카드 (404) 가 다수의 루트 콤플렉스들을 포함할 수도 있는 다른 호스트 시스템들에 의해 활용될 수 있게 하도록 구성될 수도 있다. 다수의 루트 콤플렉스들에 의해 사용될 수도 있는 PCIe 카드 (404) 의 SoC (408) 에 대한 호스트 인터페이스의 일 예가 도 5 에 예시된다.
PCIe 카드에 대한 예시적인 호스트 인터페이스
도 5 는 1개 또는 2개의 루트 콤플렉스들에 의해 사용될 수도 있는 쿼드 PHY (540C) 와 듀얼 PHY들 (540A, 540B) 의 조합을 갖는 호스트 인터페이스 (510) 의 일 예를 예시한 블록도이다. 호스트 인터페이스 (510) 는 호스트 인터페이스들 (310, 210) 과 유사한 기능성을 포함할 수도 있다. 예를 들어, 호스트 인터페이스들 (210, 310) 에서처럼, 호스트 인터페이스 (510) 는 2개의 루트 콤플렉스들 및 2개의 PCIe 코어들 사이의 통신을 가능하게 한다.
또한, 이전에 설명된 호스트 인터페이스들에서처럼, 호스트 인터페이스 (510) 는 커넥터들 (512) 의 세트를 통해 하나 이상의 루트 콤플렉스들과 통신할 수도 있다. 커넥터들 (512) 은 호스트 인터페이스 (510) 에 포함된 PHY들 및/또는 호스트 시스템의 다수의 루트 콤플렉스들에 기초하여 커넥터들의 다수의 세트들로 분할될 수도 있다. 예를 들어, 커넥터들 (512) 은 듀얼 PHY (540A) 와 연관된 커넥터들 (512A, 512B) 및 듀얼 PHY (540B) 와 연관된 커넥터들 (513A, 513B) 을 포함할 수도 있다. 커넥터들 (512A, 512B 및 513A, 513B) 의 양쪽 쌍들은 제 1 루트 콤플렉스와 통신하도록 구성될 수도 있다. 쿼드 PHY (540C) 와 연관될 수도 있는 커넥터들 (514A 내지 514D) 은 제 2 루트 콤플렉스와 통신하도록 구성될 수도 있다. 대안적으로, 커넥터들 (512A, 512B, 513A, 513B, 514A 내지 514D) 은 단일 루트 콤플렉스와 통신하도록 구성될 수도 있다.
또한, 호스트 인터페이스 (510) 는 호스트 인터페이스들 (210, 310) 에 대해 이전에 설명된 것과 같은 컴포넌트들 중 일부 또는 전부를 포함할 수도 있다. 예를 들어, 도 5 에 예시된 바와 같이, 호스트 인터페이스 (510) 는 쿼드 PHY (540C) 및 듀얼 PHY들 (540A, 540B) 을 포함하는 다수의 PHY들을 포함할 수도 있다. 각각의 PHY (540A, 540B, 540C) 는 CMU (550A, 550B, 550C) 를 각각 포함할 수도 있다. CMU들 (550A 내지 550C) 은 PHY들 (540A 내지 540C) 각각에 수신된 클록 신호를 체배하거나 수정하도록 구성될 수도 있다. 호스트 인터페이스 (310) 에서처럼, CMU들 (550A 내지 550C) 중 일부 또는 전부는 다수의 팩터들, 예컨대 마스터 CMU 로서 선택된 CMU 및/또는 호스트 시스템의 다수의 루트 콤플렉스들에 기초하여 액티브할 수도 있고 또는 액티브하지 않을 수도 있다. 마스터 CMU 는 각각의 PHY 에 대한 클록 신호들의 수정 또는 체배를 제어할 수도 있다. 일부 경우들에서, 나머지 CMU들은 인액티브할 수도 있다. 다른 경우들에서, 나머지 CMU들은 마스터 CMU 로부터의 명령들에 기초하여 대응 PHY들에 대한 클록 신호들을 수정하는 슬레이브 CMU들일 수도 있고, 마스터 CMU 는 그 자체가 명령들을 수신하거나 싱크로나이저에 의해 제어될 수도 있다.
호스트 인터페이스 (310) 에서처럼, 호스트 인터페이스 (510) 는 PHY들 (540A 내지 540C) 에서 수신된 클록 신호들을 동기화하기 위한 싱크로나이저들 (552A, 552B) 을 포함할 수도 있다. 2개의 싱크로나이저들이 도 5 에 예시되지만, 일부 실시형태들에서, 호스트 인터페이스 (510) 는 PHY들 (540A 내지 540C) 에서 수신된 클록 신호들 및/또는 CMU들 (550A 내지 550C) 중 일부 또는 전부를 동기화하도록 구성되는 단일 싱크로나이저를 포함할 수도 있다. 싱크로나이저는 싱크로나이저 (352) 에 대한 이전에 설명된 프로세스들 중 일부 또는 전부를 사용하여 PHY들 (540A 내지 540C) 의 클록 신호들 및/또는 CMU들 (550A 내지 550C) 을 동기화할 수 있다. 예를 들어, 싱크로나이저들 (552A, 552B) 은, 단일 루트 콤플렉스가 호스트 시스템에서 사용될 때, 3개의 PHY들 (540A 내지 540C) 모두의 클록 신호들을 동기화할 수도 있다. 대안적으로, 예컨대 일부 경우들에서 2개의 루트 콤플렉스들이 호스트 시스템에 포함될 때, 루트 콤플렉스 (552A) 는 PHY들 (540A, 540B) 의 클록 신호들을 동기화할 수도 있다. 일부 경우들에서, 싱크로나이저 (552B) 는 PHY (540C) 의 CMU (550C) 를 제어할 수도 있다. 대안적으로, 싱크로나이저 (552B) 는 인액티브할 수도 있다.
도 5 를 더 참조하면, 호스트 인터페이스 (510) 는 PCIe 코어들 (542A, 542B) 의 쌍을 포함할 수도 있다. 2개의 PCIe 코어들 (542A, 542B) 을 포함함으로써, 호스트 인터페이스 (510) 를 포함하는 PCIe 카드 (또는 SSD 카드) 는 1개 또는 2개의 루트 콤플렉스들을 포함하는 시스템들에 의해 활용될 수 있다. 일부 실시형태들에서, 호스트 인터페이스 (510) 는 대안적인 수의 PCIe 코어들을 포함하도록 구성될 수도 있다. 예를 들어, 호스트 인터페이스 (510) 는 3개의 PCIe 코어들로 구성될 수 있어서, 호스트 인터페이스 (510) 가 3개의 루트 콤플렉스들을 포함하는 호스트들에 의해 사용될 수 있게 한다. 이러한 일 예시적인 구성에서, 셀렉터들 중 하나 이상은 3개의 PCIe 코어들 사이를 선택하도록 구성될 수도 있다. 또한, PCIe 코어들 (542A, 542B) 이 x4 및 x8 코어들로서 각각 예시되지만, 다른 사이즈의 코어들이 가능하다. 예를 들어, 양쪽의 PCIe 코어들 (542A, 542B) 은 x8 코어들일 수 있다.
이전에 나타낸 바와 같이, 호스트 인터페이스 (510) 는 제어 신호에 기초하여 PCIe 코어들 (542A, 542B) 사이를 선택할 수도 있는 다수의 셀렉터들 (560A, 560B) 을 포함할 수도 있고, 이 제어 신호는 호스트 프로세서 (516) 로부터 또는 외부 제어 신호로부터 수신될 수도 있다. 또한, 호스트 인터페이스 (510) 는 셀렉터들 (560A, 560B) 에 의해 제공되는 바와 같이 PCIe 코어 (542B) 와 쿼드 PHY (550) 사이에 동일한 또는 실질적으로 유사한 레이턴시를 제공하도록 구성되는 레이턴시 유닛 (562) 을 포함할 수도 있다. 일부 경우들에서, 레이턴시 유닛 (562) 은 레이턴시를 신호에 부가하거나 제어할 수 있는 임의의 컴포넌트들 또는 디바이스들을 포함할 수도 있다. 예를 들어, 레이턴시 유닛은 하나 이상의 플립 플롭들 또는 래치들을 포함할 수도 있다. 일부 실시형태들에서, 도 3 에 대해 설명된 바와 같이, 레이턴시 유닛 (562) 은 단일 PCIe 코어로부터 선택하거나, 또는 비활성화된 그의 선택 기능을 갖는 셀렉터일 수도 있다.
예시되지 않았지만, 일부 실시형태들에서, 레이턴시 유닛 (562) 은 제어 신호 또는 다른 신호를 수신하여 레이턴시 유닛 (562) 이 셀렉터들 (560A, 560B) 중 하나 이상에 의해 도입된 레이턴시와 일관성있는 레이턴시를 유지하는 것을 용이하게 할 수도 있다. 이 제어 신호 또는 다른 신호는 호스트 프로세서 (516) 또는 다른 것에 의해 제공될 수도 있다. 일부 경우들에서, 레이턴시 유닛은 쿼드 PHY (540C) 로부터 수신된 신호에 적용하기에 적절한 레이턴시를 결정하기 위해 하나 또는 섹터들이 레이턴시 유닛을 인에이블시키기 전에 또는 후에 신호들을 수신할 수도 있다. 예를 들어, 레이턴시 유닛이, 셀렉터 (560B) 에 제공된 이전 명령이 셀렉터 (540B) 를 통해 PCIe 코어 (542B) 에 전달되는데 4개의 클록 사이클들이 걸렸다면, 레이턴시 유닛 (562) 은 쿼드 PHY (540C) 로부터 수신된 신호들에 4개의 클록 사이클들의 레이턴시를 도입시킬 수도 있다.
결론
개시된 시스템들 및 방법들은 호스트 인터페이스가 다수의 애플리케이션들에 의해 활용될 수 있게 한다. 호스트 인터페이스는 PCIe 기반 솔리드 스테이트 드라이브 및/또는 PCIe 카드가 변동하는 수의 프로세서들 및/또는 루트 콤플렉스들을 갖는 호스트들에 의해 사용될 수 있게 하는 다수의 PHY 사이즈들 및 구성들을 포함할 수 있다. 또한, 호스트 인터페이스는 PCIe 기반 솔리드 스테이트 드라이브 및/또는 PCIe 카드가 변동하는 수의 프로세서들 및/또는 루트 콤플렉스들을 갖는 호스트들에 의해 사용될 수 있게 하는 변동하는 사이즈들 및 구성들을 갖는 다수의 PCIe 코어들을 포함할 수 있다. 그에 따라, 상이한 SSD 및 PCIe 카드 애플리케이션들 및 구성들을 설계하고 제조하는 것에 대해 증가된 유연성 및 감소된 비용 (예를 들어, 금전적 비용, 에너지 비용, 공간 비용) 이 획득된다.
다른 변형들
당업자들은, 일부 실시형태들에서, 다른 접근법들 및 방법들이 사용될 수 있다는 것을 인식할 것이다. 예를 들어, 일부 실시형태들에서, 각각의 PHY 는 그 자신의 PCIe 코어와 연관될 수도 있고 다수의 PHY들은 단일 루트 콤플렉스와 연관될 수도 있다. 이러한 경우, 셀렉터들은 옵션적일 수도 있다. 부가적인 시스템 컴포넌트들이 활용될 수 있고, 개시된 시스템 컴포넌트들은 결합 또는 생략될 수 있다. 실시형태에 따라, 상술된 특정 단계들이 제거될 수도 있고, 다른 것들이 부가될 수도 있다.
본 개시물의 특정 실시형태들이 설명되었지만, 이들 실시형태들은 오직 예로서만 제시되었으며, 본 개시물의 범위를 제한하려고 의도된 것이 아니다. 실제로, 여기에 설명된 신규한 방법들, 디바이스들 및 시스템들은 다양한 다른 형태들로 구현될 수도 있다. 또한, 여기에 설명된 방법들 및 시스템들의 형태에 있어서 다양한 생략들, 대체들 및 변경들이 본 개시물의 사상으로부터 벗어나는 일 없이 행해질 수도 있다. 첨부된 청구항들 및 그 등가물들은 이러한 형태들 또는 수정들을 본 개시물의 범위 및 사상 내에 있도록 커버하는 것으로 의도된다. 예를 들어, 당업자는, 다양한 실시형태들에서, 실제 물리적 및 논리적 구조들은 도면들에 도시된 것들과 상이할 수도 있는 것을 인식할 것이다. 실시형태에 따라, 설명된 예들 및 프로세스들에서 설명된 특정 단계들은 상이한 순서로 수행되고, 제거될 수도 있고, 다른 것들이 부가될 수도 있다. 또한, 위에 개시된 특정 실시형태들의 피처들 및 속성들은 그들 모두가 본 개시물의 범위 내에 있는 부가적인 실시형태들을 형성하도록 상이한 방법들로 결합될 수도 있다. 본 개시물이 특정된 바람직한 실시형태들 및 애플리케이션들을 제공하지만, 여기에 설명된 피처들 및 이점들 모두를 제공하지 않는 실시형태들을 포함하여 당업자들에게 명백한 다른 실시형태들이 또한 본 개시물의 범위 내에 있다. 그에 따라, 본 개시물의 범위는 오직 첨부된 청구항들을 참조하여 정의되는 것으로 의도된다.

Claims (28)

  1. 저장 디바이스로서,
    복수의 비휘발성 솔리드 스테이트 메모리 디바이스들;
    호스트 시스템으로부터 메모리 액세스 커맨드들을 수신하도록 구성된 PCIe (Peripheral Component Interconnect Express) 커넥터들의 세트; 및
    상기 복수의 비휘발성 솔리드 스테이트 메모리 디바이스들에 액세스하기 위한 메모리 액세스 커맨드들을 수신하고 프로세싱하도록 구성된 제어기
    를 포함하고,
    상기 제어기는 호스트 인터페이스를 포함하고,
    상기 호스트 인터페이스는,
    복수의 PHY들 (physical interfaces); 및
    상기 복수의 PHY들을 통해 전달되는 신호들을 프로세싱하도록 구성된 하나 이상의 PCIe 코어들
    을 포함하고,
    상기 PHY들 각각은 상기 PCIe 커넥터들의 세트로부터 PCIe 커넥터들의 서브세트와 통신하도록 구성되며,
    상기 복수의 PHY들 중 적어도 하나는 듀얼 PCIe PHY 를 포함하여, 상기 호스트 인터페이스가 다수의 PCIe 토폴로지들에 의해 사용될 수 있게 하는, 저장 디바이스.
  2. 제 1 항에 있어서,
    상기 PHY들 각각은, 상기 호스트 인터페이스에서 수신된 클록 신호의 주파수를 체배하는 한편 상기 클록 신호의 제공자 시스템과의 동기성을 유지하도록 구성된 클록 멀티플라이어 유닛을 포함하는, 저장 디바이스.
  3. 제 2 항에 있어서,
    상기 호스트 인터페이스는, 상기 PHY들 각각의 클록 신호를 동기화하도록 구성된 싱크로나이저를 더 포함하는, 저장 디바이스.
  4. 제 3 항에 있어서,
    상기 싱크로나이저는,
    상기 복수의 PHY들로부터 PHY 를 선택하는 것;
    선택된 상기 PHY 의 클록 멀티플라이어 유닛에 적어도 부분적으로 기초하여 상기 PHY들 각각의 클록 신호를 동기화하는 것; 및
    상기 복수의 PHY들로부터 나머지 PHY 각각의 클록 멀티플라이어 유닛을 비활성화하는 것
    에 의해 상기 PHY들 각각의 클록 신호를 동기화하도록 구성되는, 저장 디바이스.
  5. 제 1 항에 있어서,
    상기 호스트 인터페이스는 셀렉터들의 세트를 더 포함하고,
    상기 셀렉터들 각각은 상기 복수의 PHY들로부터의 대응 PHY 와 연관되는, 저장 디바이스.
  6. 제 5 항에 있어서,
    상기 셀렉터들의 세트로부터의 적어도 하나의 셀렉터는, 상기 셀렉터에 제공되는 셀렉터 신호에 적어도 부분적으로 기초하여 상기 대응 PHY 로부터 데이터/커맨드 신호를 수신하도록 상기 하나 이상의 PCIe 코어들로부터 PCIe 코어를 선택하도록 구성되는, 저장 디바이스.
  7. 제 6 항에 있어서,
    상기 호스트 인터페이스는 호스트 프로세서를 더 포함하고,
    상기 호스트 프로세서는 상기 셀렉터 신호를 상기 셀렉터에 제공하도록 구성되는, 저장 디바이스.
  8. 제 5 항에 있어서,
    상기 셀렉터들의 세트로부터의 적어도 하나의 셀렉터는, 상기 하나 이상의 PCIe 코어들로부터의 하나의 PCIe 코어와 연관되고,
    상기 적어도 하나의 셀렉터는 상기 적어도 하나의 셀렉터와 연관된 신호 경로에 대한 레이턴시의 정도를 유지하도록 구성되는, 저장 디바이스.
  9. 제 5 항에 있어서,
    상기 호스트 인터페이스는 상기 복수의 PHY들로부터의 제 1 PHY 와 연관된 레이턴시 유닛을 더 포함하고,
    상기 레이턴시 유닛은, 제 2 신호 레이턴시와 매칭하는, 상기 제 1 PHY 와 상기 하나 이상의 PCIe 코어들로부터의 제 1 대응 PCIe 코어 사이의 제 1 신호 레이턴시를 유지하도록 구성되고,
    상기 제 2 신호 레이턴시는 상기 복수의 PHY들로부터의 제 2 PHY 와 상기 하나 이상의 PCIe 코어들로부터의 제 2 대응 PCIe 코어 사이의 신호 레이턴시와 연관되는, 저장 디바이스.
  10. 제 1 항에 있어서,
    상기 PCIe 커넥터들의 세트는 차동 입/출력 커넥터들의 세트를 포함하는, 저장 디바이스.
  11. 제 1 항에 있어서,
    상기 하나 이상의 PCIe 코어들로부터의 각각의 PCIe 코어는 호스트 시스템의 개별적인 루트 콤플렉스 (root complex) 와 연관되는, 저장 디바이스.
  12. 제 1 항에 있어서,
    상기 제어기는 솔리드 스테이트 드라이버 제어기인, 저장 디바이스.
  13. 제 1 항에 있어서,
    상기 적어도 하나의 PHY 는 듀얼 PCIe PHY 가 아닌, 저장 디바이스.
  14. 제 1 항에 있어서,
    상기 제어기는, 상기 복수의 비휘발성 솔리드 스테이트 메모리 디바이스들 및 상기 호스트 인터페이스와 통신하도록 구성된 메모리 제어기를 더 포함하는, 저장 디바이스.
  15. PCIe (Peripheral Component Interconnect Express) 카드에 대한 제어기로서,
    상기 제어기는,
    복수의 PHY들 (physical interfaces); 및
    상기 복수의 PHY들과 통신하도록 구성된 하나 이상의 PCIe 코어들
    을 포함하고,
    상기 PHY들 각각은 PCIe 커넥터들의 세트로부터 PCIe 커넥터들의 서브세트와 통신하도록 구성되며,
    적어도 하나의 PHY 는 적어도 하나의 다른 PHY 와는 상이한 수의 PCIe 커넥터들을 지원하여, 상기 제어기가 다수의 PCIe 카드 토폴로지들에 의해 사용될 수 있게 하는, PCIe 카드에 대한 제어기.
  16. 제 15 항에 있어서,
    상기 PHY들 각각은, 상기 제어기에서 수신된 클록 신호를 수정하는 한편 상기 클록 신호의 제공자 시스템과의 동기성을 유지하도록 구성된 클록 멀티플라이어 유닛을 포함하는, PCIe 카드에 대한 제어기.
  17. 제 16 항에 있어서,
    상기 PHY들 각각의 클록 신호를 동기화하도록 구성된 싱크로나이저를 더 포함하는, PCIe 카드에 대한 제어기.
  18. 제 17 항에 있어서,
    상기 싱크로나이저는,
    상기 복수의 PHY들로부터 PHY 를 선택하는 것;
    선택된 상기 PHY 의 클록 멀티플라이어 유닛을 사용하여 상기 PHY들 각각의 클록 신호를 동기화하는 것; 및
    상기 복수의 PHY들로부터 나머지 PHY 각각의 클록 멀티플라이어 유닛을 비활성화하는 것
    에 의해 상기 PHY들 각각의 클록 신호를 동기화하도록 구성되는, PCIe 카드에 대한 제어기.
  19. 제 15 항에 있어서,
    셀렉터들의 세트를 더 포함하고,
    상기 셀렉터들 각각은 상기 복수의 PHY들로부터의 대응 PHY 와 연관되는, PCIe 카드에 대한 제어기.
  20. 제 19 항에 있어서,
    상기 셀렉터들의 세트로부터의 적어도 하나의 셀렉터는, 상기 셀렉터에 제공되는 셀렉터 신호에 적어도 부분적으로 기초하여 상기 대응 PHY 로부터 데이터/커맨드 신호를 수신하도록 상기 하나 이상의 PCIe 코어들로부터 PCIe 코어를 선택하도록 구성되는, PCIe 카드에 대한 제어기.
  21. 제 19 항에 있어서,
    상기 셀렉터들의 세트로부터의 적어도 하나의 셀렉터는, 상기 하나 이상의 PCIe 코어들로부터 대안적인 PCIe 코어의 선택을 가능하게 하는 일 없이 상기 복수의 PHY들로부터의 PHY 와 상기 하나 이상의 PCIe 코어들로부터의 대응 PCIe 코어 사이에서 통신된 신호의 신호 레이턴시를 수정하는, PCIe 카드에 대한 제어기.
  22. 제어기로서,
    복수의 PHY들 (physical interfaces); 및
    상기 복수의 PHY들과 통신하도록 구성된 하나 이상의 프로세싱 코어들
    을 포함하고,
    상기 PHY들 각각은 직렬 인터페이스 커넥터들의 세트로부터 직렬 인터페이스 커넥터들의 서브세트와 통신하도록 구성되며,
    적어도 하나의 PHY 는 적어도 하나의 다른 PHY 와는 상이한 수의 직렬 인터페이스 커넥터들을 지원하는, 제어기.
  23. 제 22 항에 있어서,
    상기 PHY들 각각은, 상기 제어기에서 수신된 클록 신호를 수정하는 한편 상기 클록 신호의 제공자 시스템과의 동기성을 유지하도록 구성된 클록 멀티플라이어 유닛을 포함하는, 제어기.
  24. 제 23 항에 있어서,
    상기 PHY들 각각의 클록 신호를 동기화하도록 구성된 싱크로나이저를 더 포함하는, 제어기.
  25. 제 24 항에 있어서,
    상기 싱크로나이저는,
    상기 복수의 PHY들로부터 PHY 를 선택하는 것;
    선택된 상기 PHY 의 클록 멀티플라이어 유닛을 사용하여 상기 PHY들 각각의 클록 신호를 동기화하는 것; 및
    상기 복수의 PHY들로부터 나머지 PHY 각각의 클록 멀티플라이어 유닛을 비활성화하는 것
    에 의해 상기 PHY들 각각의 클록 신호를 동기화하도록 구성되는, 제어기.
  26. 제 22 항에 있어서,
    셀렉터들의 세트를 더 포함하고,
    상기 셀렉터들 각각은 상기 복수의 PHY들로부터의 대응 PHY 와 연관되는, 제어기.
  27. 제 26 항에 있어서,
    상기 셀렉터들의 세트로부터의 적어도 하나의 셀렉터는, 상기 셀렉터에 제공되는 셀렉터 신호에 적어도 부분적으로 기초하여 상기 대응 PHY 로부터 데이터/커맨드 신호를 수신하도록 상기 하나 이상의 프로세싱 코어들로부터 프로세싱 코어를 선택하도록 구성되는, 제어기.
  28. 제 26 항에 있어서,
    상기 셀렉터들의 세트로부터의 적어도 하나의 셀렉터는, 상기 하나 이상의 프로세싱 코어들로부터 대안적인 프로세싱 코어의 선택을 가능하게 하는 일 없이 상기 복수의 PHY들로부터의 PHY 와 상기 하나 이상의 프로세싱 코어들로부터의 대응 프로세싱 코어 사이에서 통신된 신호의 신호 레이턴시를 수정하는, 제어기.
KR1020167000572A 2013-06-11 2014-06-11 다수의 PCIe 링크 폭들을 지원하기 위한 듀얼 PHY들의 사용 KR101895133B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361833772P 2013-06-11 2013-06-11
US61/833,772 2013-06-11
US14/026,062 2013-09-13
US14/026,062 US9436630B2 (en) 2013-06-11 2013-09-13 Using dual phys to support multiple PCIe link widths
PCT/US2014/042007 WO2014201178A1 (en) 2013-06-11 2014-06-11 Using dual phys to support multiple pcie link widths

Publications (2)

Publication Number Publication Date
KR20160019507A KR20160019507A (ko) 2016-02-19
KR101895133B1 true KR101895133B1 (ko) 2018-09-04

Family

ID=52006478

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167000572A KR101895133B1 (ko) 2013-06-11 2014-06-11 다수의 PCIe 링크 폭들을 지원하기 위한 듀얼 PHY들의 사용

Country Status (9)

Country Link
US (1) US9436630B2 (ko)
EP (1) EP3008605B1 (ko)
JP (1) JP2016526716A (ko)
KR (1) KR101895133B1 (ko)
CN (1) CN105359120B (ko)
AU (1) AU2014278189B2 (ko)
CA (1) CA2915056C (ko)
HK (1) HK1221032A1 (ko)
WO (1) WO2014201178A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710421B2 (en) 2014-12-12 2017-07-18 Intel Corporation Peripheral component interconnect express (PCIe) card having multiple PCIe connectors
US10229085B2 (en) 2015-01-23 2019-03-12 Hewlett Packard Enterprise Development Lp Fibre channel hardware card port assignment and management method for port names
US10353442B2 (en) * 2015-01-30 2019-07-16 Hewlett-Packard Development Company, L.P. Expansion slot interface
US10817447B2 (en) * 2016-11-14 2020-10-27 Intel Corporation Input/output translation lookaside buffer (IOTLB) quality of service (QoS)
CN108363670B (zh) 2017-01-26 2020-07-14 华为技术有限公司 一种数据传输的方法、装置、设备和系统
KR101767181B1 (ko) 2017-02-21 2017-08-22 한국과학기술정보연구원 다목적 어댑터 카드 및 그 통합 방법
US10365706B2 (en) * 2017-03-03 2019-07-30 Qualcomm Incorporated Asymmetric power states on a communication link
US10565041B2 (en) * 2017-05-19 2020-02-18 Western Digital Technologies, Inc. Managing phys of a data storage target device
US10223318B2 (en) * 2017-05-31 2019-03-05 Hewlett Packard Enterprise Development Lp Hot plugging peripheral connected interface express (PCIe) cards
CN117669631A (zh) 2017-06-05 2024-03-08 铠侠股份有限公司 存储卡及主机设备
JP2019046045A (ja) 2017-08-31 2019-03-22 東芝メモリ株式会社 記憶装置及び通信制御方法
US10706001B2 (en) * 2018-01-30 2020-07-07 Western Digital Technologies, Inc. Modular and scalable PCIe controller architecture
TW202005485A (zh) * 2018-06-01 2020-01-16 緯穎科技服務股份有限公司 擴充快捷外設互聯標準兼容性的電路
JP2020149493A (ja) 2019-03-14 2020-09-17 キオクシア株式会社 評価装置、半導体装置、及び送信制御方法
CN113485768B (zh) * 2021-07-13 2022-08-19 湖南国科微电子股份有限公司 一种phy参数配置装置及ssd
JP2024014337A (ja) * 2022-07-22 2024-02-01 キオクシア株式会社 メモリシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6856556B1 (en) 2003-04-03 2005-02-15 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US20090049222A1 (en) 2004-03-17 2009-02-19 Super Talent Electronics, Inc. PCI Express-Compatible Controller And Interface For Flash Memory
WO2012169820A2 (en) 2011-06-08 2012-12-13 Taejin Info Tech Co., Ltd. Semiconductor storage device memory disk unit with multiple host interfaces

Family Cites Families (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7099969B2 (en) 2003-11-06 2006-08-29 Dell Products L.P. Dynamic reconfiguration of PCI Express links
US7676613B2 (en) 2004-08-03 2010-03-09 Lsi Corporation Methods and structure for assuring correct data order in SATA transmissions over a SAS wide port
US7502256B2 (en) 2004-11-30 2009-03-10 Siliconsystems, Inc. Systems and methods for reducing unauthorized data recovery from solid-state storage devices
US20060168377A1 (en) 2005-01-21 2006-07-27 Dell Products L.P. Reallocation of PCI express links using hot plug event
US7584319B1 (en) 2005-03-31 2009-09-01 Pmc-Sierra, Inc. Connection management in serial attached SCSI (SAS) expanders
US7705850B1 (en) 2005-11-08 2010-04-27 Nvidia Corporation Computer system having increased PCIe bandwidth
JP4775846B2 (ja) 2006-03-20 2011-09-21 株式会社日立製作所 物理リンクの割当てを制御するコンピュータシステム及び方法
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US7562174B2 (en) * 2006-06-15 2009-07-14 Nvidia Corporation Motherboard having hard-wired private bus between graphics cards
US7765373B1 (en) 2006-06-27 2010-07-27 Siliconsystems, Inc. System for controlling use of a solid-state storage subsystem
US8108692B1 (en) 2006-06-27 2012-01-31 Siliconsystems, Inc. Solid-state storage subsystem security solution
US7509441B1 (en) 2006-06-30 2009-03-24 Siliconsystems, Inc. Systems and methods for segmenting and protecting a storage subsystem
US7447807B1 (en) 2006-06-30 2008-11-04 Siliconsystems, Inc. Systems and methods for storing data in segments of a storage subsystem
US8161227B1 (en) 2006-10-30 2012-04-17 Siliconsystems, Inc. Storage subsystem capable of programming field-programmable devices of a target computer system
US8549236B2 (en) 2006-12-15 2013-10-01 Siliconsystems, Inc. Storage subsystem with multiple non-volatile memory arrays to protect against data losses
US7657663B2 (en) * 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US7685337B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7685338B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7685374B2 (en) 2007-07-26 2010-03-23 Siliconsystems, Inc. Multi-interface and multi-bus structured solid-state storage subsystem
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8078918B2 (en) 2008-02-07 2011-12-13 Siliconsystems, Inc. Solid state storage subsystem that maintains and provides access to data reflective of a failure risk
US7962792B2 (en) 2008-02-11 2011-06-14 Siliconsystems, Inc. Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem
US7733712B1 (en) 2008-05-20 2010-06-08 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US8151037B1 (en) 2008-05-28 2012-04-03 Marvell International Ltd. Interface for solid-state memory
US8375151B1 (en) 2009-02-12 2013-02-12 Siliconsystems, Inc. Command portal for securely communicating and executing non-standard storage subsystem commands
US8583835B1 (en) 2008-08-06 2013-11-12 Siliconsystems, Inc. Command portal for executing non-standard storage subsystem commands
US8719483B2 (en) * 2008-10-15 2014-05-06 Nec Corporation Multi-root PCI express switch, boot method thereof, and multi-root PCI manager program
US9176859B2 (en) 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US8432768B2 (en) * 2009-01-12 2013-04-30 Rambus Inc. Mesochronous signaling system with multiple power modes
US8090899B1 (en) 2009-03-04 2012-01-03 Western Digital Technologies, Inc. Solid state drive power safe wear-leveling
US8725946B2 (en) 2009-03-23 2014-05-13 Ocz Storage Solutions, Inc. Mass storage system and method of using hard disk, solid-state media, PCIe edge connector, and raid controller
US10079048B2 (en) 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8243525B1 (en) 2009-09-30 2012-08-14 Western Digital Technologies, Inc. Refreshing non-volatile semiconductor memory by reading without rewriting
US8254172B1 (en) 2009-09-30 2012-08-28 Western Digital Technologies, Inc. Wear leveling non-volatile semiconductor memory based on erase times and program times
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8135903B1 (en) 2009-10-30 2012-03-13 Western Digital Technologies, Inc. Non-volatile semiconductor memory compressing data to improve performance
US8261012B2 (en) 2009-10-30 2012-09-04 Western Digital Technologies, Inc. Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal
US8397107B1 (en) 2009-12-11 2013-03-12 Western Digital Technologies, Inc. Data storage device employing data path protection using both LBA and PBA
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
US8316176B1 (en) 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8713066B1 (en) 2010-03-29 2014-04-29 Western Digital Technologies, Inc. Managing wear leveling and garbage collection operations in a solid-state memory using linked lists
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8612669B1 (en) 2010-06-28 2013-12-17 Western Digital Technologies, Inc. System and method for performing data retention in solid-state memory using copy commands and validity and usage data
US8447920B1 (en) 2010-06-29 2013-05-21 Western Digital Technologies, Inc. System and method for managing data access in non-volatile memory
US8521972B1 (en) 2010-06-30 2013-08-27 Western Digital Technologies, Inc. System and method for optimizing garbage collection in data storage
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8638602B1 (en) 2010-09-10 2014-01-28 Western Digital Technologies, Inc. Background selection of voltage reference values for performing memory read operations
US8769190B1 (en) 2010-09-15 2014-07-01 Western Digital Technologies, Inc. System and method for reducing contentions in solid-state memory access
US8788779B1 (en) 2010-09-17 2014-07-22 Western Digital Technologies, Inc. Non-volatile storage subsystem with energy-based performance throttling
US8612804B1 (en) 2010-09-30 2013-12-17 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US8601313B1 (en) 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US8615681B2 (en) 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8392635B2 (en) 2010-12-22 2013-03-05 Western Digital Technologies, Inc. Selectively enabling a host transfer interrupt
US8589723B2 (en) * 2010-12-22 2013-11-19 Intel Corporation Method and apparatus to provide a high availability solid state drive
US8683113B2 (en) 2011-02-04 2014-03-25 Western Digital Technologies, Inc. Concurrently searching multiple devices of a non-volatile semiconductor memory
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
US8769232B2 (en) 2011-04-06 2014-07-01 Western Digital Technologies, Inc. Non-volatile semiconductor memory module enabling out of order host command chunk media access
US8751728B1 (en) 2011-04-29 2014-06-10 Western Digital Technologies, Inc. Storage system bus transfer optimization
US8862804B2 (en) 2011-04-29 2014-10-14 Western Digital Technologies, Inc. System and method for improved parity determination within a data redundancy scheme in a solid state memory
US9021178B2 (en) 2011-05-02 2015-04-28 Western Digital Technologies, Inc. High performance path for command processing
US8503237B1 (en) 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US8719531B2 (en) 2011-06-14 2014-05-06 Western Digital Technologies, Inc. System and method for performing data retention that incorporates environmental conditions
US8423722B1 (en) 2011-08-26 2013-04-16 Western Digital Technologies, Inc. System and method for high performance command processing in solid state drives
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US8724422B1 (en) 2012-02-29 2014-05-13 Western Digital Technologies, Inc. System and method for charging back-up charge storage element for data storage device using spindle phase switching elements
US9003224B2 (en) 2012-04-25 2015-04-07 Western Digital Technologies, Inc. Managing unreliable memory in data storage systems
US8788778B1 (en) 2012-06-04 2014-07-22 Western Digital Technologies, Inc. Garbage collection based on the inactivity level of stored data
US8966343B2 (en) 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US8788880B1 (en) 2012-08-22 2014-07-22 Western Digital Technologies, Inc. Efficient retry mechanism for solid-state memory failures
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9177638B2 (en) 2012-11-13 2015-11-03 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US20140223255A1 (en) 2012-12-18 2014-08-07 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6856556B1 (en) 2003-04-03 2005-02-15 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US7126857B2 (en) 2003-04-03 2006-10-24 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US20090049222A1 (en) 2004-03-17 2009-02-19 Super Talent Electronics, Inc. PCI Express-Compatible Controller And Interface For Flash Memory
WO2012169820A2 (en) 2011-06-08 2012-12-13 Taejin Info Tech Co., Ltd. Semiconductor storage device memory disk unit with multiple host interfaces

Also Published As

Publication number Publication date
JP2016526716A (ja) 2016-09-05
EP3008605A1 (en) 2016-04-20
AU2014278189A1 (en) 2016-02-04
HK1221032A1 (zh) 2017-05-19
AU2014278189B2 (en) 2019-07-25
CA2915056A1 (en) 2014-12-18
CN105359120A (zh) 2016-02-24
CA2915056C (en) 2021-04-20
US20140365704A1 (en) 2014-12-11
EP3008605A4 (en) 2017-03-22
KR20160019507A (ko) 2016-02-19
EP3008605B1 (en) 2019-09-25
CN105359120B (zh) 2018-09-11
US9436630B2 (en) 2016-09-06
WO2014201178A1 (en) 2014-12-18

Similar Documents

Publication Publication Date Title
KR101895133B1 (ko) 다수의 PCIe 링크 폭들을 지원하기 위한 듀얼 PHY들의 사용
US11983140B2 (en) Efficient deconfiguration of a reconfigurable data processor
CN113383327B (zh) 可重配置数据处理器的配置加载
TWI740897B (zh) 具有窄帶寬中繼器通道的記憶體子系統
KR102256441B1 (ko) 저전력 메모리 디바이스들에 대한 공통 다이 구현
CN109478177B (zh) 双数据率命令总线
CN110083554A (zh) 用于配置混合存储器模块的存储器的i/o的设备及方法
CN109753458B (zh) 包括多数据速率存储器设备的存储设备以及存储器控制器
KR20210098831A (ko) 비휘발성 메모리에서의 구성가능한 기입 커맨드 지연
US11669487B2 (en) Secondary device detection using a synchronous interface
US11868300B2 (en) Deferred communications over a synchronous interface
US20220121612A1 (en) Static identifiers for a synchronous interface
US10175903B2 (en) N plane to 2N plane interface in a solid state drive (SSD) architecture
JP5973134B2 (ja) システムlsi

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant