KR20170133236A - PCIe 장치들에서의 고속 입출력을 위한 스토리지 시스템, 방법 및 장치 - Google Patents

PCIe 장치들에서의 고속 입출력을 위한 스토리지 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR20170133236A
KR20170133236A KR1020160166906A KR20160166906A KR20170133236A KR 20170133236 A KR20170133236 A KR 20170133236A KR 1020160166906 A KR1020160166906 A KR 1020160166906A KR 20160166906 A KR20160166906 A KR 20160166906A KR 20170133236 A KR20170133236 A KR 20170133236A
Authority
KR
South Korea
Prior art keywords
data
routing
communicating
request
host system
Prior art date
Application number
KR1020160166906A
Other languages
English (en)
Other versions
KR102395075B1 (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 KR20170133236A publication Critical patent/KR20170133236A/ko
Application granted granted Critical
Publication of KR102395075B1 publication Critical patent/KR102395075B1/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
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

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

Abstract

PCIe 장치들에서의 고속 입력/출력(IO)을 위한 방법들 및 시스템들의 실시 예들이 설명된다. 방법들은 사용자 또는 애플리케이션으로부터 데이터 처리 장치 및 메모리 장치를 포함하는 호스트, 시스템과 데이터를 통신하기 위한 명령어들을 포함하는 입력/출력(IO; input/output) 요청을 수신하는 단계, IO 블록 분석기에서 IO 요청으로부터 정보를 분석하여 호스트 시스템과 데이터를 통신하기 위한 복수의 통신 경로들 중 하나를 선택하는 단계, 선택된 통신 경로에 응답하여 전송 라우팅 정보 전송기에서 라우팅 명령어를 정의하는 단계, 호스트 시스템의 집적 IO(IIO; integrated IO) 모듈로 라우팅 명령어를 포함하는 트랜잭션 계층 패킷(TLP; Transaction Layer Packet)을 통신하는 단계, 데이터 전송 라우터를 통해 라우팅 명령어에 따라 주변 회로로부터 데이터 처리 장치 및 메모리 장치 중 하나로 데이터를 라우팅하는 단계를 포함한다.

Description

PCIe 장치들에서의 고속 입출력을 위한 스토리지 시스템, 방법 및 장치{STORAGE SYSTEM, METHOD, AND APPARATUS FOR FAST IO ON PCIe DEVICES}
본 발명은 데이터 관리 시스템들에 관한 것으로써, 더욱 상세하게는, PCIe 장치들에서의 고속 입력/출력(IO)을 위한 스토리지 시스템들, 방법들, 및 장치들에 관한 것이다.
컴퓨터 시스템들과 같이 데이터 관리 시스템들은 중앙 처리 유닛(CPU; central processing unit), 메모리 장치, 입출력 장치들, 및 호스트 시스템 및 구성들 사이의 정보를 전송하는 루트 컴플렉스(root complex) 또는 장치 인터커넥터를 포함하는 다양한 코어 구성들을 구비한 호스트 시스템을 일반적으로 포함한다. 인터커넥터 프로토콜들 중 하나의 예는 호스트 시스템 구성들 사이에서의 데이터 전송 모드들을 정의하는 PCIe이다.
집적 메모리 액세스(DMA; direct memory access), 직접 캐시 액세스(DCA; direct cache access), 및 데이터 직접 입출력(DDIO; data direct I/O)은 호스트 시스템들(메모리 또는 캐시들) 및 입출력 장치들 사이에서 데이터를 전송하기 위한 현재의 기법들이다. DMA는 입출력 장치들 및 호스트 시스템 메모리 사이에서 데이터를 전송한다. DDIO는 입출력 장치들 및 호스트 CPU의 마지막 레벨 캐시(LLC; last level cache) 사이에서 데이터를 전송한다. DCA는 DMA와 유사하게, 입출력 장치들 및 호스트 시스템 메모리 사이에서 데이터를 전송하나, 데이터 전송이 완료된 이후에, DCA는 메모리로부터 CPU 캐시들로 데이터를 프리페치(prefetch)한다.
호스트 시스템들은 복수의 데이터 관리 포트들(multiple data handling ports)을 포함할 수 있다. 복수의 데이터 관리 포트들 각각은 DMA, DCA, 또는 DDIO 프로토콜들 중 하나에 의해 데이터를 전송하도록 구성될 수 있다. 이러한 포트들은 이하에서, "멀티-포트들(multi-ports)"라 칭한다. 일반적인 시스템은 DMA로 구성된 일부 멀티-포트들, DDIO로 구성된 일부 멀티-포트들, 가능하게는 DAC로 구성된 일부 멀티-포트들을 포함할 수 있다. 현존하는 시스템 소프트웨어들은 이러한 기법들(DMA, DCA, 또는 DDIO) 중 하나를 사용하여 IO 요청을 장치들로 전송한다. 그러나, DMA, DCA, 또는 DDIO 프로토콜들의 기능적인 측면들을 조합하거나 또는 멀티플렉싱, QoS(quality of service) 제어, 또는 캐시 흐름-제어를 위하여 프로토콜들 사이를 동적으로 전환하는 방법은 현재 없다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명은 라우팅 정보를 기반으로 메모리 및 캐시 사이의 데이터 경로들을 동적으로 변경하는 라우팅 디멀티플렉서를 포함하는 집적된 입력/출력(IIO; integrated input/output) 모듈 및 장치, 메모리, 및 캐시 사이의 IO 흐름을 제어하는 방법들을 제공할 수 있다.
PCIe 장치들에서의 고속 입력/출력(IO)을 위한 스토리지 시스템들, 방법들, 및 장치들의 실시 예들이 설명된다. 실시 예에서, 방법은 사용자 또는 애플리케이션으로부터 IO 요청을 수신하는 단계를 포함할 수 있다. 상기 IO 요청은 호스트 시스템과 데이터를 통신하기 위한 명령어들을 포함할 수 있다. 상기 호스트 시스템은 데이터 처리 장치 및 메모리 장치를 포함할 수 있다. 상기 방법은 IO 블록 분석기에서 상기 IO 요청으로부터 정보를 분석하여 상기 호스트 시스템과 상기 데이터를 통신하기 위한 복수의 통신 경로들 중 하나를 선택하는 단계를 더 포함할 수 있다. 또한, 방법은 상기 선택된 통신 경로에 응답하여, 전송 라우팅 정보 전송기에서 라우팅 명령어를 정의하는 단계를 포함할 수 있다. 또한, 상기 방법은 상기 라우팅 명령어를 포함하는 트랜잭션 계층 패킷(TLP)을 상기 호스트 시스템의 집적된 IO(IIO; integrated IO) 모듈로 통신하는 단계를 포함할 수 있다. 상기 방법은 데이터 전송 라우터를 통해 상기 라우팅 명령어에 따라 상기 데이터를 주변 장치로부터 상기 처리 장치 또는 상기 메모리 장치 중 하나로 라우팅하는 단계를 더 포함할 수 있다.
시스템의 실시 예는 IO 관리자를 포함하는 주변 장치를 포함한다. 상기 IO 관리자는 IO 요청을 수신하도록 구성된다. 상기 IO 요청은 호스트 시스템과 데이터를 통신하기 위한 명령어들을 포함한다. 상기 호스트 시스템은 처리 장치 및 메모리 장치를 포함한다. 상기 IO 관리자는 상기 IO 요청으로부터의 정보를 분석하여 상기 호스트 시스템과 상기 데이터를 통신하기 위한 복수의 통신 경로들 중 하나를 선택하도록 구성된다. 상기 IO 관리자는 상기 선택된 통신 경로에 응답하여 라우팅 명령어를 정의하도록 구성된다. 상기 시스템은 상기 주변 장치와 연결되고, 상기 호스트 시스템의 IIO 모듈로 상기 라우팅 정보를 포함하는 TLP를 전송하도록 구성되는 데이터 전송 장치를 더 포함할 수 있다.
장치는 주변 회로와 연결된 데이터 전송 장치를 포함할 수 있다. 데이터 전송 장치는 호스트 시스템의 IIO 모듈로 라우팅 명령어를 포함하는 TLP를 통신하도록 구성된다. 이러한 실시 예에서, 라우팅 명령어는 상기 호스트 시스템과 상기 데이터를 통신하기 위한 복수의 통신 경로들 중 하나의 선택을 포함하고, 상기 선택은 IO 요청에 포함된 명령어들에 응답하여 결정된다.
본 발명에 따르면, 향상된 성능을 갖는 PCIe 장치들에서의 고속 입출력을 위한 스토리지 시스템, 방법 및 장치가 제공된다.
본 발명들은 실시 예들을 통해 설명되고, 유사한 참조 기호들이 유사한 구성들을 가리키는 첨부된 도면들에 의해 제한되지 않는다. 도면들의 구성들은 단순화 및 명확성을 위하여 도시되며, 필수적으로 스케일되어 도시되지 않는다.
도 1은 PCIe 장치들에서의 고속 IO를 위한 시스템의 실시 예를 보여주는 블록도이다.
도 2는 PCIe 장치들에서의 고속 IO를 위한 시스템의 실시 예를 보여주는 블록도이다.
도 3은 PCIe 장치들에서의 고속 IO를 위한 방법의 실시 예를 보여주는 순서도이다.
도 4a는 PCIe 장치들에서의 고속 IO의 실시 예를 보여주는 논리적 도면이다.
도 4b는 PCIe 장치들에서의 DMA IO를 보여주는 논리적 도면이다.
도 4c는 PCIe 장치들에서의 DDIO를 보여주는 논리적 도면이다.
도 4d는 PCIe 장치들에서의 DCA IO를 보여주는 논리적 도면이다.
도 5는 PCIe 장치들에서의 고속 IO를 위하여 특정하게 구성된 시스템의 실시 예를 보여주는 논리적 도면이다.
도 6은 PCIe 장치들에서의 고속 IO를 위한 방법의 실시 예를 보여주는 예시적인 순서도이다.
도 7은 PCIe 장치들에서의 고속 IO를 위한 방법의 실시 예를 보여주는 예시적인 순서도이다.
도 8은 PCIe 장치들에서의 고속 IO를 위한 방법의 실시 예를 보여주는 예시적인 순서도이다.
도 9는 트랜잭션 계층 패킷(TLP; transaction layer packet)의 실시 예를 보여주는 논리적 도면이다.
도 10은 본 발명의 실시 예들에 따라 특정하게 구성된 컴퓨팅 시스템의 블록도이다.
시스템들 및 방법들의 실시 예들은 PCIe 장치들의 고속 IO를 위하여 기재된다. 실시 예에서, PCIe 장치는 중복(redundancy), 성능(performance), 및 서비스 품질(QoS)을 위한 복수의 일관된 IO 포트들(multiple consistent IO ports)를 포함할 수 있다. 또한, PCIe 장치는 패킷 빌더(packet builder) 및 라우팅 스크래치 패드들(routing scratch pads)의 세트를 포함할 수 있다. 라우팅 스트래치 패드들의 세트는 각 포트에 대한 라우팅 정보(routing information)를 저장하는데 사용될 수 있다. 패킷 빌더는 라우팅 스크래치 패트에 설정된 라우팅 정보를 포함하는 PCIe TLP(translation layer packet)들을 동적으로 구성할 수 있다.
본 발명의 실시 예들은 시스템 소프트웨어 또는 펌웨어에 의해 정의될 수 있는 IO 관리자(IO manager)를 더 제공한다. IO 관리자는 IO 블록 분석기 및 라우팅 정보 전송기를 포함하는 전송 라우팅 의사 결정자(transfer routing decision maker)를 포함할 수 있다. IO 블록 분석기는 데이터 특성들을 기반으로 라우팅 정보를 생성할 수 있다. 라우팅 정보 전송기는 MMIO(memory mapped IO)를 통해 PCIe 장치의 라우팅 스크래치 패드로 정보를 전송할 수 있다. 또한, PCIe 장치는 라우팅 정보를 동적으로 사용하여 라우팅 제어 레지스터들을 설정하도록 CPU에게 알릴 수 있다.
라우팅 정보를 기반으로 메모리 및 캐시 사이의 데이터 경로들을 동적으로 변경하는 라우팅 디멀티플렉서를 포함하는 집적된 입력/출력(IIO; integrated input/output) 모듈 및 장치, 메모리, 및 캐시 사이의 IO 흐름을 제어하는 방법들이 본문에서 기재된다.
도 1은 PCIe 장치들에서의 고속 IO를 위한 시스템(100)의 실시 예를 보여주는 예시적인 블록도이다. 실시 예에서, 시스템(100)은 호스트 시스템(102)을 포함하고, 하나 또는 그 이상의 주변 엔드포인트들(peripheral endpoints)(114)을 선택적으로 포함할 수 있다. 예를 들어, 호스트 시스템(102)은 컴퓨터와 같은 데이터 관리 장치일 수 있다. 주변 엔드포인트는 PCIe 또는 유사한 데이터 버스를 통해 호스트 시스템(102)과 통신하도록 구성되는 주변 장치일 수 있다. 예시들은 PCIe 확장 장치들, 데이터 스토리지 장치들, 서버 블레이드들(server blades) 등을 포함할 수 있다.
실시 예에서, 호스트 시스템(102)은 물리 인터페이스(110)를 통해 연결된 하나 또는 그 이상의 내부 엔드포인트들(112) 또는 외부 엔드포인트들(114), CPU(106), 및 메모리(108) 사이에서 데이터를 통신하기 위한 통신 패브릭을 형성하는 루트 컴플렉스(root complex, 104)를 포함할 수 있다. 루트 컴플렉스(104)는 PCIe와 같은 데이터 통신 프로토콜에 따라 동작할 수 있다. 실시 예에서, 루트 컴플렉스(103) 및/또는 물리 인터페이스(110)는 도 4에 도시된 바와 같은 복수의 데이터 통신 포트들을 포함할 수 있다. 다양한 엔드포인트들(112, 114)은 루트 컴플렉스(104)를 통해 CPU(106) 및/또는 메모리(108)와 통신할 수 있다.
도 2는 시스템(200)의 다른 실시 예를 보여주는 예시적인 블록도이다. 실시 예에서, CPU(106)는 복수의 CPU 코어들(202)을 포함할 수 있다. 시스템(200)은 CPU 코어들(202), 메모리(108), 및 하나 또는 그 이상의 엔드포인트들 사이에서 데이터를 통신하는 루트 컴플렉스(104)를 유사하게 포함할 수 있다. "엔드포인트"의 용어는 도 1에 도시된 내부 엔드포인트(112) 및 외부 엔드포인트(114)를 포함할 수 있다. 엔드포인트들의 예들은 그래픽 처리 유닛(204), 하나 또는 그 이상의 네트워크 인터페이스들(206), 디스크 제어기(208), 다른 PCIe 엔드포인트들(210a)을 포함할 수 있다. 또한, 시스템(200)은 PCI/PCI-x로의 PCI 스위치/PCIe 브릿지(212)(PCI switch/PCIe bridge to PCI/PCI-x)를 포함할 수 있다. 일부 다른 실시 예들에서, PCI 스위치는 PCIe 브릿지로부터 분리될 수 있다. PCI 스위치는 복수의 PCIe 엔드포인트들(210b, 210c)로 전환된(switched) 통신을 제공할 수 있다. PCIe 브릿지는 레거시(legacy) PCI 또는 PCI-x 프로토콜에 따라 동작하는 레거시 엔드포인트들(214)로의 연결성(connectivity)을 제공할 수 있다.
도 3은 PCIe 장치들에서의 고속 IO를 위한 방법(300)의 실시 예를 보여주는 예시적인 순서도이다. 실시 예에서, 방법(300)은 302 단계에 도시된 바와 같이, 사용자 또는 애플리케이션으로부터 IO 요청을 수신하는 것을 포함할 수 있다. IO 요청은 CPU(106)와 같은 처리 장치 및 메모리 장치(108)를 포함하는 호스트 시스템(102)과 데이터를 통신하기 위한 명령어들을 포함한다. 304 단계에서, 방법(300)은 IO 요청으로부터의 정보를 분석하여 호스트 시스템(102)과 데이터를 통신하기 위한 복수의 통신 경로들 중 하나를 선택하는 것을 포함할 수 있다. 방법(300)은 306 단계에 도시된 바와 같이, 선택된 통신 경로에 응답하여 라우팅 명령어를 정의하는 것을 포함할 수 있다. 308 단계에서, 방법(300)은 호스트 시스템(102)의 IIO 모듈로 TLP의 라우팅 명령어를 통신하는 것을 포함할 수 있다. 예시적으로, 308 단계에서, 라우팅 명령어를 포함하는 TLP가 호스트 시스템(102)의 IIO 모듈로 통신될 수 있다. 310 단계에 도시된 바와 같이, 방법(300)은 라우팅 명령어에 따라 데이터를 주변 장치로부터 처리 장치 또는 메모리 장치 중 하나로 라우팅하는 것을 더 포함할 수 있다.
당업자는 도 3에 도시된 방법(300)의 기능 블록들(또는 단계들)은 하나 또는 그 이상의 기능적인 모듈들로 구현될 수 있음을 인지할 수 있다. 본문에서 기재된 바와 같이, "모듈"의 용어는 본문에서 모듈과 연관되어 설명된 기능을 제공하도록 구성되는 소프트웨어, 펌웨어, 및/또는 하드웨어의 임의의 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드 및/또는 명령어 세트 또는 명령어들로써 구현될 수 있고, 본문에서 기재된 구현에서 사용되는 "하드웨어"의 용어는, 예를 들어, 하드 와이어된 회로, 프로그램 가능한 회로, 상태 머신 회로, 및/또는 프로그램 가능한 회로에 의해 실행되는 명령어들을 저장하는 펌웨어, 및 그것들의 조합을 포함할 수 있다. 모듈들은 집적 회로(IC; integrated circuit), 시스템-온-칩(SoC) 등과 같은 대형 시스템의 일부를 형성하는 회로로써 집합적으로 또는 개별적으로 구현될 수 있다. 그러나 이에 한정되는 것은 아니다. 도 3에 도시된 방법들의 구성들 또는 단계들은 IO 관리자(502), 고속 IO PCIe 장치(514), 및 호스트 시스템(102)을 포함하는, 이하에서 설명되는, 도 5의 시스템들의 하나 또는 그 이상의 구성들에 의해 수행될 수 있다. 예를 들어, IO 관리자(502)는 302 단계에 도시된 바와 같이 IO 요청을 수신할 수 있다. 또한, IO 관리자(502)는 304 단계에서, IO 요청으로부터의 정보를 분석할 수 있다. 고속 IO PCIe 장치(514)는 308 단계에서 도시된 바와 같이, TLP 패킷의 라우팅 명령어를 호스트 시스템(102)으로 통신할 수 있다. 호스트 시스템(102)은 310 단계에 도시된 바와 같이, 데이터를 라우팅할 수 있다.
도 4a는 PCIe 장치들에서의 고속 IO 모드(402)의 실시 예를 보여주는 논리적 도면이다. 고속 IO 모드(402)에서, 소프트웨어 애플리케이션(404)은 IO 요청을 생성하고, IO 장치(406)로 요청을 통신할 수 있다. IO 장치(406)는 호스트 시스템(102)으로 요청을 통신할 수 있다. 이러한 실시 예에서, 집적된 IO(IIO) 모듈(410)은 요청을 수신하고, 요청을 메모리 제어기(412)와 통신할지 또는 CPU 코어(202)와 연관된 마지막 레벨 캐시(LLC)와 통신할지를 판별할 수 있다. 요청이 IO 요청의 긴급한 통신을 요구하는 데이터 특성들을 포함하는 경우, 요청은 LLC(414)로 전송될 수 있다. IO 요청이 긴급하지 않거나 또는 더 많은 데이터 처리량이 요구되는 경우, IIO 모듈(410)은 IO 요청을 메모리 컨트롤러(412)로 전송할 수 있다. 이러한 실시 예에서, IO 요청으로부터 데이터는 메모리(108)와 통신될 수 있다. 즉, 2가지 가능한 데이터 경로가 생성되고, 데이터 특성을 기반으로 IO 요청들을 관리하기 위해 동적으로 사용될 수 있다.
본문에서 사용되는 바와 같이, "데이터 특성(data characteristic)"은 IO 요청의 긴급성의 레벨을 가리키는 명시적 태그(explicit tag), 지시자, 설정, 필드 값, 사용자 입력 등을 포함할 수 있다. 또는, 데이터 특성은 IO 요청을 전송하는 소프트웨어 애플리케이션(404)의 식별 및/또는 분류와 같은 IO 요청의 고유 속성(inherent property), LLC(414)의 상태, 포트 가용성(port availability) 등일 수 있다.
도 4b는 PCIe 장치들에서의 DMA IO 모드(416)를 보여주는 논리적 도면이다. 이러한 실시 예에서, 선택된 포트들이 DMA IO 관리를 위하여 구성되므로, IO 요청은 오직 메모리(108)와 통신한다. 반대로, 도 4c는 PCIe 장치들에서의 DDIO를 보여주는 논리적 도면이다. DDIO 모드(418)에서, IO 요청들은 LLC(414) 또는 다른 CPU 캐시와 직접적으로 통신된다. 도 4d는 PCIe 장치들에서의 DCA IO 모드(420)를 보여주는 논리적 도면이다. DCA 모드(420)에서, IO 요청들은 처음에 메모리(108)로 전송되나, 프리페치 동작(prefetch operation)이 트리거되고, 다음에 IO 요청이 좀 더 빠른 처리를 위하여 LLC(414)로 통신된다.
도 5는 PCIe 장치들에서의 고속 IO를 위하여 특정하게 구성된 시스템(500)의 실시 예를 보여주는 논리적 도면이다. 실시 예에서, 애플리케이션은 IO 요청을 IO 관리자(502)로 전송한다. 이후에, IO 요청을 장치 드라이버의 DMA 요청 발생기(512)를 통해 IO 장치들로 전송하기 위하여, IO 요청이 IO 관리자(502)의 블록(504)으로 변환된다. 또한, 블록 정보는 전송 라우팅 의사 결정자(506)의 IO 블록 분석기(508)로 전달될 수 있다. IO 블록 분석기(508)는 블록(504)을 2개의 카테고리들(캐시로의 전송 및 메모리로의 전송) 중 하나로 분류할 수 있다. 블록(504)을 분류하기 위하여, IO 블록 분석기(508)는 사용자 힌트들, 블록(504)의 종류, 예를 들어, 블록이 사용자-요청 블록인지 또는 프리페치 블록인지를 가리키는 종류, LLC 상태, 사용자 우선 순위 등과 같은 다양한 방법들을 사용할 수 있다. 다른 실시 예에서, 이러한 기준들은 분류를 위하여 조합될 수 있다. 블록이 IO 블록 분석기(508)에 의해 일단 분류되면, 라우팅 정보는 라우팅 정보 전송기(routing information sender)(510)를 통해 고속 IO PCIe 장치(514)의 전송 라우팅 정보 전송기(transfer routing information transmitter)(522)로 전달된다. "고속 IO PCIe 장치(FastIO PCIe device)"의 용어는 본문에 기재된 고속 IO 처리들의 적어도 일부를 수행할 수 있는 PCIe 장치를 지칭하고, 특정 실시 예에서, 도 5의 514 구성으로 도시된다. 그러나, 라우팅 정보가 이전에 전송된 블록의 것과 동일한 경우, 라우팅 정보를 통신하는 단계는 생략될 수 있다.
실시 예에서, DMA 요청이 DMA 요청 발생기(512)로부터 고속 IO PCIe 장치(514)의 Rx/Tx DMA 레지스터(518)로 전송되기 전에 라우팅 정보가 전송될 수 있다. 일 실시 예에서, 전송 라우팅 정보 전송기(522)의 라우팅 스크래치 패드(516)는 라우팅 정보 전송기(510)로부터 수신된 전송 라우팅 정보를 저장할 수 있다. 고속 IO PCIe 장치(514)가 트랜잭션 계층 패킷(TLP; Transaction Layer Packet)(520)을 형성할 때, 전송 라우팅 정보는 TLP에 내장되고, IIO 모듈(410)로 통신될 수 있다.
실시 예에서, IIO 모듈(410)은 TLP에 내장된 라우팅 정보를 사용하여 데이터 전송 라우터(526)의 라우팅 제어 레지스터(528)를 초기화할 수 있다. TLP의 목적은 각 DMA 요청에 대하여 호스트 시스템(102)으로 메모리 어드레스, 사이즈 등과 같은 DMA 정보를 전송하는 것이다. 그래서, DMA 엔진(524)은 TLP 전송 이후에, 데이터를 IIO 모듈(526)로 전송한다. 데이터는 라우팅 제어 레지스터(528)에 저장된 목적지로 라우팅 디멀티플렉서(demux)(530)에 의해 전송될 수 있으며, 라우팅 디멀티플렉서(demux)(530)는 라우팅 제어 레지스터(528)에 저장된 TLP로부터의 라우팅 정보에 의해 제어된다. 데이터는 LLC(414) 또는 메모리 제어기(412)를 통해 메모리(108)로 통신될 수 있다.
도 6은 PCIe 장치들에서의 고속 IO를 위한 방법(600)의 실시 예를 보여주는 예시적인 순서도이다. 방법(600)의 사상들은 IO 관리자(502)의 하나 또는 그 이상의 구성들에 의해 수행될 수 있다. 실시 예에서, 방법(600)은 602 단계에 도시된 바와 같이, IO 관리자(502)에 의해 사용자 애플리케이션으로부터 IO 요청을 수신하는 것을 포함한다. 604 단계에서, IO 블록 분석기(508)는 블록을 분석하여 요청된 전송 모드를 판별할 수 있다. 606 단계에 도시된 바와 같이, 데이터 특성에 따라, IO 블록 분석기(508)는 장치-투-메모리(D2M) 또는 장치-투-캐시(D2C)로 모드를 설정할 수 있다. 608 단계에서, 새로운 모드가 시스템을 위하여 현재 설정된 모드와 동일한지 판별될 수 있다. 만약 그렇다면, 614 단계에서, DMA 요청이 DMA 요청 발생기(512)에 의해 전송된다. 만약 그렇지 않다면, 610 단계에서, 현재 모드가 새로운 모드로 설정되고, 612 단계에서, 장치 라우팅 스크래치 패드(516)가 라우팅 정보 전송기(510)에 의해 갱신되고, 이후에, 614 단계에서, DMA 요청이 DMA 요청 발생기(512)에 의해 전송된다.
도 7은 PCIe 장치들에서의 고속 IO를 위한 방법(700)의 실시 예를 보여주는 예시적인 순서도이다. 방법(700)의 사상들은 고속 IO PICE 장치(514)에 의해 수행될 수 있다. 실시 예에서, 방법(700)은 702 단계에 도시된 바와 같이, Rx/Tx DMA 레지스터(518)를 통해 DMA 요청을 수신하는 것을 포함한다. 704 단계에서, DMA 기술어(descriptor)는 Rx/Tx DMA 레지스터(518)에 의해 수신될 수 있고, 전송 라우팅 정보 전송기(522)는 DMA 기술어를 회수할 수 있다. 또한, 706 단계에서, 전송 라우팅 정보 전송기(522)는 라우팅 스크래치 패드(516)를 읽어 전송 모드가 D2C인지 또는 D2M인지 체크할 수 있다. 708 단계에서, 전송 라우팅 정보 전송기(522)는 전송 모드에 대한 정보를 포함하는 TLP를 구성할 수 있다. 710 단계에서, 전송 라우팅 정보 전송기(522)는 TLP를 IIO 모듈(526)로 전송할 수 있다. 712 단계에 도시된 바와 같이, DMA 엔진(524)은 DMA 데이터를 생성하고, 그것을 호스트 시스템(102)으로 전송할 수 있다. 714 단계에서, DMA가 완료된 경우, 716 단계에서, DMA 요청이 종료될 수 있다. 만약 그렇지 않다면, DMA 엔진(524)은 DMA가 완료될 때까지, DMA 데이터를 계속해서 생성하고, 그것을 호스트 시스템(102)으로 전송할 수 있다.
도 8은 PCIe 장치들에서의 고속 IO를 위한 방법(800)의 실시 예를 보여주는 예시적인 순서도이다. 방법(800)의 사상들은 IIO 모듈(526)을 포함하는, 호스트 시스템(102)의 구성들에 의해 수행될 수 있다. 실시 예에서, 방법(800)은 802 단계에서, 고속 IO PCIe 장치(514)로부터 TLP를 수신하는 것을 포함할 수 있다. 804 단계에서, 방법(800)은 라우팅 제어 레지스터(528)를 D2C 라우팅을 가리키는 값 또는 D2M 라우팅을 가리키는 값으로 설정하는 것을 포함한다. 806 단계에서, 데이터 전송 라우터(526)는 고속 IO PCIe 장치(514)로부터 DMA 패킷을 수신할 수 있다. 808 단계에서, 라우팅 제어 레지스터(528)가 D2C로 설정된 경우, 810 단계에 도시된 바와 같이, DMA 패킷이 라우팅 디멀티플렉서(530)에 의해 LLC(414)의 캐싱 에이전트로 전송될 수 있다. 만약 그렇지 않다면, 812 단계에 도시된 바와 같이, 라우팅 디멀티플렉서(530)는 DMA 패킷을 메모리 제어기(412)로 전송할 수 있다. 814 단계에서, DMA가 완료된 경우, 816 블록에서, DMA 요청이 종료될 수 있다. 그렇지 않다면, 814 단계에서 DMA가 완료될 때까지, DMA 패킷들이 라우팅 제어 레지스터(528)에 의해 정의된 대로, LLC(414)의 캐시 에이전트 또는 메모리 컨트롤러(412) 중 하나로 반복적으로 전송될 수 있다.
도 9는 본 발명의 실시 예들에 따른 사용을 위하여 변형될 수 있는 트랜잭션 계층 패킷(TLP)의 실시 예를 보여준다. 일 실시 예에서, TLP는 예비 비트(902)를 포함할 수 있다. 이러한 실시 예에서, 예비 비트(902)는 라우팅 스크래치 패드(516)에 저장된 라우팅 정보를 기반으로 라우팅 정보 전송기(522)에 의해 값으로 할당될 수 있다. 실시 예에서, "0" 비트 값은 DMA가 메모리(108)로 전송되는 것임을 가리킬 수 있고, "1" 비트 값은 DMA가 LLC(414)로 전송되는 것임을 가리킬 수 있다.
도 10은 도 5의 전송 라우팅 정보 전송기(552)를 포함하는 고속 IO PCIe 장치(514)를 포함하는 컴퓨팅 시스템(1000)의 블록도이다. 컴퓨팅 시스템(1000)은 클럭(1004), 랜덤 액세스 메모리(RAM; random access memory)와 같은 메모리(108), 사용자 인터페이스(1008), 기저 대역 칩셋과 같은 모뎀(1010), 솔리드 스테이트 드라이브/디스크(SSD; solid state drive/disk), 및/또는 CPU(106), 시스템 버스(1202)와 전기적으로 연결될 수 있는 모든 것들을 포함할 수 있다. 컴퓨팅 시스템(1000)은 도 5의 전송 라우팅 정보 전송기(522)를 포함하는 고속 IO PCIe 장치(514)를 포함할 수 있다. 고속 PCIe 장치(514)는 시스템 버스(1002)와 전기적으로 연결될 수 있다.
이하의 설명은 본 발명의 특정한 사상이 구형될 수 있는 적절한 머신 또는 머신들의 개략적이고 일반적인 설명을 제공하도록 의도된다. 일반적으로, 머신 또는 머신들은 프로세서들, 메모리, 예를 들어, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 및 다른 상태 보존 매체, 스토리지 장치들, 비디오 인터페이스, 및 입력/출력 인터페이스 포트들과 연결된 시스템 버스를 포함한다. 머신 또는 머신들은 키보드, 마이크 등과 같은 종래의 입력 장치들로부터의 입력뿐만 아리나, 다른 머신으로부터 수신된 명령들, 가상 현실(VR; virtual reality) 환경과의 통신, 생체 인식 피드백, 또는 다른 입력 신호들에 의해, 적어도 일부에서, 제어될 수 있다. 본문에서 사용되는 바와 같이, "머신(machine)"의 용어는 싱글 머신, 가상 머신, 또는 머신들, 가상 머신들 또는 함께 동작하는 장치들이 전기적으로 연결된 시스템을 포괄적으로 포함하는 것으로 의도된다. 예시적인 머신들은 개인용 컴퓨터, 워크스테이션, 서버, 휴대용 컴퓨터, 포켓용 컴퓨터, 전화기, 태블릿 등과 같은 컴퓨팅 장치들뿐만 아니라, 개인 또는 대중 교통 수단, 예를 들어, 자동차, 기차, 택시 등과 같은 수송 장치들을 포함한다.
머신 또는 머신들은 프로그램 가능하거나 또는 프로그램 가능하지 않은 로직 장치들 또는 어레이들, ASIC(Application Specific Integrated Circuit), 내장 컴퓨터, 스마트 카드 등과 같은 내장된 제어기들을 포함할 수 있다. 머신 또는 머신들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 연결과 같은 하나 또는 그 이상의 원격 머신들로의 하나 또는 그 이상의 연결들을 활용할 수 있다. 머신들은 인트라넷, 인터넷, 근거리 통신망(LAN; local area network), 원거리 통신망(WAN; wide area network)와 같은 물리적 및/또는 논리적 네트워크의 방식에 의해 연결될 수 있다. 당업자는 네트워크 통신이 무선 주파수(RF; Radio Frequency), 위성, 마이크로파, IEEE 545.11, 블루투스, 광, 적외선, 케이블, 레이저 등과 같은 다양한 유선/무선 단거리 또는 장거리 캐리어들 및 프로토콜을 활용할 수 있음을 이해할 수 있다.
본 발명의 실시 예들은 기계들에 의해 액세스될 때 기계들에 작업들을 수행하거나 또는 요약 데이터 타입들 또는 저레벨 하드웨어 구성들을 정의하도록 하는 기능들, 절차들, 데이터 구조들, 애플리케이션 프로그램들을 포함하는 연관된 데이터를 참조하거나 또는 관련하여 설명될 수 있다. 연관된 데이터는 휘발성 또는 불휘발성 메모리(예를 들어, RAM, ROM)에 저장될 수 있거나 또는 하드 드라이브, 플로피 디스크, 광 스토리지, 테이프, 플래시 메모리, 메모리 스틱, 디지틸 비디오 디스크, 생체 스토리지 등을 포함하는 연관된 스토리지 매체 및 다른 저장 장치들에 저장될 수 있다. 연관된 데이터는 물리적 또는 논리적 네트워크를 포함하는 전송 환경상에서 패킷, 직렬 데이터, 병렬 데이터, 전파 신호들 등과 같은 형태로 제공될 수 있고, 압축되거나 또는 암호화된 형식으로 사용될 수 있다. 연관된 데이터는 분산된 환경에서 사용될 수 있고, 논리적으로 또는 원격으로 장치 액세스를 위하여 저장될 수 있다.
실시 예들을 참조하여 본 발명의 이론들이 설명되었으나, 실시 예들은 본 발명의 기술적 사상으로부터의 벗어남 없이 변형될 수 있고, 다른 적절한 방식과 조합될 수 있음은 잘 이해될 것이다. 그리고, 상세한 설명이 특정 실시 예들을 집중되었으나, 다른 구성들이 고려된다. 특히, 본문에서 "본 발명의 실시 예에 따르면"과 같은 표현들이 사용되었으나, 이러한 표현들은 일반적으로, 참조 실시 예의 가능성을 의미하며, 본 발명이 특정 실시 예 구성들에 한정됨을 의미하지 않는다. 본문에 기재된 바와 같이, 이러한 용어들은 다른 실시 예들과 조합될 수 있는 동일한 또는 다른 실시 예들을 참조할 수 있다.
본 발명의 실시 예들은 하나 또는 그 이상의 프로세서들에 의해 실행될 수 있는 명령어들을 포함하는 유형의 비일시적인 기계 판독 가능한 매체(tangible, non-transitory machine-readable medium)를 포함할 수 있다. 명령어들은 본문에 기재된 바와 같은 본 발명의 구성 요소들을 수행하기 위한 명령어들을 포함할 수 있다.
상술된 실시 예들은 본 발명을 한정하는 것은 아니다. 비록 일부 실시 예들이 설명되었으나, 당업자는 본문의 이점들 및 새로운 특징으로부터의 벗어남 없이 본 발명의 가능한 다양한 변형을 용이하게 수행할 수 있다. 따라서, 이러한 변형들은 특허청구범위에 정의된 본 발명의 사상 내에 포함되도록 의도될 수 있다.

Claims (10)

  1. 데이터 관리 장치들에서 고속 입력/출력(IO; input/output)을 위한 방법에 있어서,
    데이터 처리 장치 및 메모리 장치를 포함하는 호스트 시스템과 데이터를 통신하기 위한 명령어들을 포함하는 입력/출력(IO; input/output) 요청을 애플리케이션으로부터 수신하는 단계;
    IO 블록 분석기에서 상기 IO 요청으로부터 정보를 분석하여 상기 호스트 시스템과 상기 데이터를 통신하기 위한 복수의 통신 경로들 중 하나를 선택하는 단계;
    상기 선택된 통신 경로에 응답하여 전송 라우팅 정보 전송기에서 라우팅 명령어를 정의하는 단계;
    상기 호스트 시스템의 집적 IO(IIO; integrated IO) 모듈로 트랜잭션 계층 패킷(TLP; Transaction Layer Packet)의 상기 라우팅 명령어를 통신하는 단계;
    데이터 전송 라우터를 통해 상기 라우팅 명령어에 따라 주변 장치로부터 상기 데이터 처리 장치 및 상기 메모리 장치 중 하나로 상기 데이터를 라우팅하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    직접 데이터 IO(DDIO; Direct Protocol IO) 프로토콜에 따른 제1 통신 경로를 따라 상기 데이터를 통신하는 단계를 더 포함하고,
    상기 제1 통신 경로는 상기 데이터 처리 장치와 연관된 마지막 레벨 캐시(LLC; Last Level Cache)로 상기 데이터를 통신하는 것을 포함하는 방법.
  3. 제 1 항에 있어서,
    직접 메모리 액세스(DMA; Direct Memory Access) 프로토콜에 따른 제2 통신 경로를 따라 상기 데이터를 통신하는 단계를 더 포함하고,
    상기 제2 통신 경로를 상기 메모리 장치로 상기 데이터를 통신하는 것을 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 호스트 시스템과 연결된 데이터 전송 장치의 상기 라우팅 명령어를 라우팅 스크래치 패드 구성에 저장하는 단계를 더 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 데이터 전송 장치로부터 상기 IIO 모듈의 라우팅 제어 레지스터로 상기 라우팅 명령어를 통신하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 라우팅 명령어를 통신하는 단계는 상기 스크래치 패드에 저장된 상기 라우팅 명령어에 따라 상기 TLP의 라우팅 제어 비트를 설정하는 단계를 포함하는 방법.
  7. 제 5 항에 있어서,
    상기 데이터 처리 장치로 제1 데이터 특성을 포함하는 데이터를 통신하는 단계를 더 포함하는 방법.
  8. 제 5 항에 있어서,
    상기 라우팅 제어 레지스터에 저장된 상기 라우팅 명령어에 따라 상기 메모리 장치로 제2 데이터 특성을 포함하는 데이터를 통신하는 단계를 더 포함하는 방법.
  9. 데이터 관리 장치들에서의 고속 입력/출력(IO; input/output)을 위한 시스템에 있어서,
    데이터 처리 장치 및 메모리 장치를 포함하는 호스트 시스템과 데이터를 통신하기 위한 명령어들을 포함하는 입력/출력(IO; Input/Output) 요청을 수신하고, 상기 IO 요청으로부터 정보를 분석하여 상기 호스트 시스템과 상기 데이터를 통신하기 위한 복수의 통신 경로들 중 하나를 선택하고, 상기 선택된 통신 경로에 응답하여 라우팅 명령어를 정의하도록 구성되는 관리자를 포함하는 주변 회로; 및
    상기 주변 회로와 연결되고, 트랜잭션 계층 패킷(TLP; Transaction Layer Packet)의 상기 라우팅 명령어를 상기 호스트 시스템의 집적된 IO(IIO; integrated IO) 모듈로 통신하도록 구성되는 데이터 전송 장치를 포함하는 시스템.
  10. 제 9 항에 있어서,
    상기 호스트 장치는 직접 데이터 IO(DDIO; Direct Data IO) 프로토콜에 따른 제1 통신 경로를 따라 상기 데이터를 통신하도록 구성되고,
    상기 제1 통신 경로는 상기 데이터 처리 장치와 연관된 마지막 레벨 캐시(LLC; Last Level Cache)로 상기 데이터를 통신하는 것을 포함하는 시스템.

KR1020160166906A 2016-05-25 2016-12-08 PCIe 장치들에서의 고속 입출력을 위한 스토리지 시스템, 방법 및 장치 KR102395075B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662341604P 2016-05-25 2016-05-25
US62/341,604 2016-05-25
US15/227,961 2016-08-04
US15/227,961 US10762030B2 (en) 2016-05-25 2016-08-04 Storage system, method, and apparatus for fast IO on PCIE devices

Publications (2)

Publication Number Publication Date
KR20170133236A true KR20170133236A (ko) 2017-12-05
KR102395075B1 KR102395075B1 (ko) 2022-05-09

Family

ID=60418866

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160166906A KR102395075B1 (ko) 2016-05-25 2016-12-08 PCIe 장치들에서의 고속 입출력을 위한 스토리지 시스템, 방법 및 장치

Country Status (2)

Country Link
US (3) US10762030B2 (ko)
KR (1) KR102395075B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200117383A (ko) 2019-04-04 2020-10-14 한국전자통신연구원 고속 입출력 인터커넥션을 이용한 데이터 고속 처리 방법 및 이를 위한 장치

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977198B2 (en) 2018-09-12 2021-04-13 Micron Technology, Inc. Hybrid memory system interface
US10809929B2 (en) * 2018-11-30 2020-10-20 International Business Machines Corporation Combined hardware/software-enforced segmentation of multi-tenant memory/storage systems
CN113759430B (zh) * 2020-05-29 2023-05-26 同方威视技术股份有限公司 一种非车载式货物/车辆检查系统及其通信方法
US20210014324A1 (en) * 2020-09-24 2021-01-14 Intel Corporation Cache and memory content management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097481A1 (en) * 2001-03-01 2003-05-22 Richter Roger K. Method and system for performing packet integrity operations using a data movement engine
US20150180782A1 (en) * 2013-12-24 2015-06-25 Todd Rimmer Method, apparatus and system for qos within high performance fabrics
US9164679B2 (en) * 2011-04-06 2015-10-20 Patents1, Llc System, method and computer program product for multi-thread operation involving first memory of a first memory class and second memory of a second memory class

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6510164B1 (en) * 1998-11-16 2003-01-21 Sun Microsystems, Inc. User-level dedicated interface for IP applications in a data packet switching and load balancing system
US6424621B1 (en) * 1998-11-17 2002-07-23 Sun Microsystems, Inc. Software interface between switching module and operating system of a data packet switching and load balancing system
CN1437724A (zh) * 2000-03-03 2003-08-20 坦诺网络公司 使用内部处理器存储空间的高速数据处理
US6651131B1 (en) * 2000-09-06 2003-11-18 Sun Microsystems, Inc. High bandwidth network and storage card
US7379475B2 (en) * 2002-01-25 2008-05-27 Nvidia Corporation Communications processor
WO2002086989A2 (en) * 2001-04-24 2002-10-31 Broadcom Corporation Alerting system, architecture and circuitry
KR100708128B1 (ko) * 2005-04-30 2007-04-17 삼성전자주식회사 낸드 플래시 메모리 제어 장치 및 방법
US8392632B2 (en) * 2007-02-14 2013-03-05 Samsung Electronics Co., Ltd Method and apparatus for data processing in mobile communication system
US8423710B1 (en) * 2009-03-23 2013-04-16 Marvell International Ltd. Sequential writes to flash memory
US9535849B2 (en) 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US20110103391A1 (en) * 2009-10-30 2011-05-05 Smooth-Stone, Inc. C/O Barry Evans System and method for high-performance, low-power data center interconnect fabric
US20110246686A1 (en) 2010-04-01 2011-10-06 Cavanagh Jr Edward T Apparatus and system having pci root port and direct memory access device functionality
US8745292B2 (en) 2010-06-23 2014-06-03 International Business Machines Corporation System and method for routing I/O expansion requests and responses in a PCIE architecture
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US8788873B2 (en) 2011-04-14 2014-07-22 Cisco Technology, Inc. Server input/output failover device serving highly available virtual devices
US9003077B2 (en) 2011-09-30 2015-04-07 Oracle International Corporation Sharing IOMMU mappings across devices in a DMA group
US9098423B2 (en) 2011-10-05 2015-08-04 Taejin Info Tech Co., Ltd. Cross-boundary hybrid and dynamic storage and memory context-aware cache system
WO2013133826A1 (en) * 2012-03-07 2013-09-12 Intel Corporation Scalable, common reference-clocking architecture using a separate, single clock source for blade and rack servers
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
KR101975027B1 (ko) * 2012-05-04 2019-05-03 삼성전자주식회사 시스템 온 칩, 이의 동작 방법, 이를 포함하는 장치들
KR102011135B1 (ko) * 2012-12-11 2019-08-14 삼성전자주식회사 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
US9262270B2 (en) * 2012-12-28 2016-02-16 Intel Corporation Live error recovery
US20140198790A1 (en) * 2013-01-17 2014-07-17 International Business Machines Corporation Data link layer analysis with packet trace replay
US9977754B2 (en) * 2013-09-09 2018-05-22 Samsung Electronics Co., Ltd. Electronic system with diagnostic interface mechanism and method of operation thereof
US10248328B2 (en) * 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
US20160154756A1 (en) * 2014-03-31 2016-06-02 Avago Technologies General Ip (Singapore) Pte. Ltd Unordered multi-path routing in a pcie express fabric environment
US9907085B2 (en) * 2014-09-26 2018-02-27 Avago Technologies General Ip (Singapore) Pte. Ltd. WIFI-coordinated LAA-LTE
EP3203915B1 (en) * 2014-10-08 2023-12-06 BFLY Operations, Inc. Parameter loader for ultrasound probe and related apparatus and methods
US10198185B2 (en) * 2014-12-31 2019-02-05 Samsung Electronics Co., Ltd. Computing system with processing and method of operation thereof
US10387343B2 (en) * 2015-04-07 2019-08-20 International Business Machines Corporation Processing of events for accelerators utilized for parallel processing
US20160378545A1 (en) * 2015-05-10 2016-12-29 Apl Software Inc. Methods and architecture for enhanced computer performance
US10120809B2 (en) * 2015-09-26 2018-11-06 Intel Corporation Method, apparatus, and system for allocating cache using traffic class
US9779026B2 (en) * 2016-01-14 2017-10-03 Seagate Technology Llc Cache bypass utilizing a binary tree
US10386913B2 (en) * 2016-04-01 2019-08-20 Platina Systems Corporation Priority based power-off during partial power loss
WO2018039482A1 (en) * 2016-08-24 2018-03-01 Raduchel William J Network-enabled graphics processing module
WO2020051254A1 (en) * 2018-09-05 2020-03-12 Fungible, Inc. Dynamically changing configuration of data processing unit when connected to storage device or computing device
US10642764B1 (en) * 2019-03-01 2020-05-05 Western Digital Technologies, Inc. Data transfer command latency of a host device
US11126575B1 (en) * 2019-03-05 2021-09-21 Amazon Technologies, Inc. Interrupt recovery management
US11184267B2 (en) * 2019-10-31 2021-11-23 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Intelligent in-band telemetry auto-configuration for IP networks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097481A1 (en) * 2001-03-01 2003-05-22 Richter Roger K. Method and system for performing packet integrity operations using a data movement engine
US9164679B2 (en) * 2011-04-06 2015-10-20 Patents1, Llc System, method and computer program product for multi-thread operation involving first memory of a first memory class and second memory of a second memory class
US20150180782A1 (en) * 2013-12-24 2015-06-25 Todd Rimmer Method, apparatus and system for qos within high performance fabrics

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200117383A (ko) 2019-04-04 2020-10-14 한국전자통신연구원 고속 입출력 인터커넥션을 이용한 데이터 고속 처리 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
US20200364176A1 (en) 2020-11-19
US11531636B2 (en) 2022-12-20
US20230122094A1 (en) 2023-04-20
US20170344510A1 (en) 2017-11-30
KR102395075B1 (ko) 2022-05-09
US10762030B2 (en) 2020-09-01

Similar Documents

Publication Publication Date Title
US11929927B2 (en) Network interface for data transport in heterogeneous computing environments
US10324873B2 (en) Hardware accelerated communications over a chip-to-chip interface
US11531636B2 (en) Storage system, method, and apparatus for fast IO on PCIE devices
US7937447B1 (en) Communication between computer systems over an input/output (I/O) bus
US10152441B2 (en) Host bus access by add-on devices via a network interface controller
CN102866971B (zh) 传输数据的装置、系统及方法
KR102427550B1 (ko) 재구성 가능한 멀티 포트들을 구비한 PCIe 스토리지 시스템을 위한 서비스 품질을 인식하는 입출력 관리
KR100555394B1 (ko) Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘
CN111656336B (zh) 一种pcie发送、接收方法及装置、设备和系统
JP2019075109A (ja) データ記憶装置及びブリッジ装置
KR101300447B1 (ko) 메시지 통신 기술
US20020071450A1 (en) Host-fabric adapter having bandwidth-optimizing, area-minimal, vertical sliced memory architecture and method of connecting a host system to a channel-based switched fabric in a data network
EP3828709A1 (en) Communication method and network card
CN112631959A (zh) 用于相干消息的高带宽链路层
US10911261B2 (en) Method, apparatus and system for hierarchical network on chip routing
CN105095150A (zh) 一种支持片上网络的网络接口
EP3087454A1 (en) Input output data alignment
US10877911B1 (en) Pattern generation using a direct memory access engine
WO2015055008A1 (zh) 一种存储控制芯片及磁盘报文传输方法
CN110958216A (zh) 安全的在线网络分组传输
EP3631640B1 (en) Communication between field programmable gate arrays
US11886372B1 (en) Systems and methods for packing of transaction layer (TL) packets

Legal Events

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