KR20160077110A - 입력 출력 데이터 정렬 - Google Patents

입력 출력 데이터 정렬 Download PDF

Info

Publication number
KR20160077110A
KR20160077110A KR1020167013329A KR20167013329A KR20160077110A KR 20160077110 A KR20160077110 A KR 20160077110A KR 1020167013329 A KR1020167013329 A KR 1020167013329A KR 20167013329 A KR20167013329 A KR 20167013329A KR 20160077110 A KR20160077110 A KR 20160077110A
Authority
KR
South Korea
Prior art keywords
data
interface
unaligned
header
consumer
Prior art date
Application number
KR1020167013329A
Other languages
English (en)
Other versions
KR101865261B1 (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 KR20160077110A publication Critical patent/KR20160077110A/ko
Application granted granted Critical
Publication of KR101865261B1 publication Critical patent/KR101865261B1/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/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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output 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
    • 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

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)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본원에서는 컴퓨팅 시스템에서 비정렬 데이터를 처리하는 기술이 설명된다. 이 기술은 I/O 인터페이스를 통해 입력/출력(I/O) 디바이스로부터 데이터를 수신하는 것을 포함한다. 데이터가 상기 컴퓨팅 시스템에 관하여 비정렬되어 있으면 I/O 인터페이스에서 데이터에 값들을 추가하는 것에 의해서 데이터가 패딩됨으로써, I/O 디바이스와 연관되는 데이터의 소비자는 추가되는 값들을 무시할 수 있게 된다.

Description

입력 출력 데이터 정렬{INPUT OUTPUT DATA ALIGNMENT}
본 명세서는 일반적으로 비정렬 데이터(unaligned data)를 처리하는 기술에 관한 것이다. 특히, 본 명세서는 컴퓨팅 디바이스(computing device) 용으로 되어 있는 입력/출력 인터페이스에서 수신되는, 입력/출력 디바이스로부터의 비정렬 데이터를 처리하는 것에 관한 것이다.
컴퓨팅 디바이스는 입력/출력(input/output; I/O) 디바이스와 같은 디바이스로부터 데이터를 수신하도록 구성될 수 있다. I/O 디바이스는 I/O 인터페이스를 통해 컴퓨팅 디바이스 프로세서, 메모리 등을 포함하는 컴퓨팅 디바이스의 플랫폼(platform)과 통신할 수 있는 디바이스이다. I/O 디바이스는 키보드, 마우스, 디스플레이, 네트워크 인터페이스 제어기(network interface controller; NIC), 그래픽 처리 장치(graphics processing unit; GPU) 등을 포함할 수 있다. I/O 디바이스로부터 수신되는 데이터는 컴퓨팅 시스템에 의해 프로세싱되도록 정해져 있을 수 있다. 컴퓨팅 디바이스는 데이터를 균일한 크기로 되어 있는 세그먼트(segment) 또는 "라인(line)"들로 분할하는 구조를 구현함으로써 자체의 메모리 계층(memory hierarchy)을 최적화할 수 있다. 각각의 "라인"은 컴퓨팅 디바이스에 의한 프로세싱에 이용 가능한 데이터의 단위이다. 컴퓨팅 시스템은 데이터 세그먼트의 어드레스(address)와 크기를 라인의 구조와 정렬시킴으로써 I/O 디바이스로부터의 데이터를 조직할 수 있다. 일부 시나리오에서, I/O 디바이스로부터 수신되는 데이터는 컴퓨팅 디바이스 메모리 내의 버퍼(buffer)로 향할 수 있다. 상기 메모리는 캐시 라인으로 공지되어 있는, 최근에 사용된 메모리의 세그먼트에 고성능 액세스(access)를 제공하는 캐시(cache)에 의해 최적화될 수 있다. I/O 디바이스로부터의 데이터는 캐시 라인 경계에 있지 않을 수 있거나 또는 데이터는 캐시 라인 크기의 우수의 배수가 아닐 수 있다. 이 데이터는 "비정렬(unaligned)" 데이터로서 칭해진다. 예를 들어, 비정렬되어 있는 데이터는 소정의 캐시 라인 크기보다 더 작은 수신 데이터를 포함할 수 있다. I/O 디바이스로부터 수신되는 비정렬 데이터는 새로 인입하는 데이터를 메모리 내에 이미 있는 데이터와 통합하는 판독 수정 기록 동작과 같이 수행될 추가 동작을 요구함으로써 컴퓨팅 디바이스의 레이턴시(latency)를 증가시킬 수 있다.
도 1은 정렬 로직(alignment logic)을 포함하는 컴퓨팅 시스템을 도시하는 블록도이다.
도 2는 정렬 로직을 포함하는 I/O 인터페이스를 통해 시스템 플랫폼에 접속되는 I/O 디바이스를 도시하는 블록도이다.
도 3은 패킷 헤더(packet header) 내에 정렬 표시를 포함하는 I/O 인터페이스를 통해 시스템 플랫폼에 접속되는 I/O 디바이스를 도시하는 블록도이다.
도 4는 비정렬 데이터를 처리하는 방법을 도시하는 블록도이다.
도 5는 비정렬 데이터를 처리하는 대안의 방법을 도시하는 블록도이다.
동일한 구성요소 및 특징을 칭하기 위하여 명세서 및 도면 전체에 걸쳐 동일한 번호가 사용된다. 100대의 번호는 원래 도 1에서 발견되는 특징들을 칭하고, 200대의 번호는 원래 도 2에서 발견되는 특징들을 칭하고, 기타 등등이다.
본 명세서는 일반적으로 컴퓨팅 시스템에서 비정렬 데이터를 처리하는 기술에 관한 것이다. 컴퓨팅 시스템은 다양한 입력/출력(I/O) 디바이스로부터 데이터를 수신할 수 있다. 예를 들어, 네트워크 인터페이스 제어기(network interface controller; NIC)는 네트워크로부터 데이터를 수신하고 이 데이터를 I/O 인터페이스를 통해 지속성 메모리 유닛(persistent memory unit), 프로세싱 유닛 등을 포함하는 컴퓨팅 시스템의 플랫폼으로 제공한다. 일부 시나리오에서, I/O 디바이스로부터의 데이터는 자신이 I/O 인터페이스에서 수신될 때 컴퓨팅 시스템 메모리 시스템에 대하여 정렬되지 않는다. 예를 들어, 컴퓨팅 시스템은 64 바이트의 캐시 라인 경계를 가지는 I/O 디바이스로부터 데이터를 수신할 수 있다. 그러나, I/O 디바이스로부터의 데이터가 65 바이트의 길이인 경우, 데이터는 2개의 세그먼트에 기록되어야만 한다: 64 바이트 전체 라인 요청 및 1 바이트 부분 라인 요청. 본원에서 칭해지는 바의 비정렬 데이터는 전체 라인 요청이 아니지만, 대신에 캐시 라인의 64 바이트 데이터 정렬 구조와 같이, 소정의 컴퓨팅 시스템과 연관되는 데이터 정렬 구조에 기초하는 부분 라인 요청인 데이터이다. 부분 요청은 부분 라인 요청을 컴퓨팅 시스템 내의 메모리와 통합하는 데 캐시가 필요한 판독 수정 기록(read-modify-write; RMW)과 같이 추가 동작이 수행될 필요가 있을 수 있다.
본원에서 설명되는 기술은 비정렬된 데이터를 수신한다. RMW를 수행하기보다는, 본 기술은 데이터가 비정렬되어 있을 때 데이터에 값들을 추가함으로써 데이터를 패딩(padding)하는 것을 포함한다. 소정의 I/O 디바이스와 연관되는 소프트웨어 드라이버는 캐시 내의 비정렬 데이터를 판독할 때 추가된 값들을 무시하도록 구성되고, 이에 의해 그와 같은 동작과 연관되는 RMW 동작 및 어떠한 레이턴시의 증가도 방지된다. 컴퓨팅 시스템의 디바이스 소프트웨어를 포함하는 컴퓨팅 시스템 및 I/O 디바이스 사이의 서비스 계약(service contract)에 의해 컴퓨팅 시스템은 패딩된 데이터를 효과적으로 추가 및 무시하는 것이 가능하다. 컴퓨팅 시스템은 I/O 디바이스에 의해 전송되는 데이터의 소비자이고, 여기서 I/O 디바이스는 생산자(producer) 역할을 하고 있다.
도 1은 정렬 로직을 포함하는 컴퓨팅 시스템을 도시하는 블록도이다. 컴퓨팅 시스템(100)은 프로세서(102)를 구비하는 컴퓨팅 디바이스(101), 비일시적 컴퓨터 판독 가능 매체를 포함하는 저장 디바이스(104) 및 메모리 디바이스(106)를 포함한다. 컴퓨팅 디바이스(101)는 디바이스 드라이버(108), I/O 인터페이스(110) 및 I/O 디바이스(112, 114, 116)를 포함한다.
I/O 디바이스(112, 114, 116)는 그래픽 처리 장치를 포함하는 그래픽 디바이스, 디스크 드라이브, 네트워크 인터페이스 제어기(NIC) 등과 같이, 데이터를 I/O 인터페이스(110)에 제공하도록 구성되는 다양한 디바이스를 포함할 수 있다. 일부 실시예에서, I/O 디바이스(112)와 같은 I/O 디바이스는 도 1에 도시되는 바와 같이 네트워크(120)를 통해 원격의 디바이스(118)에 접속된다.
I/O 디바이스(112, 114, 116)는 I/O 인터페이스(110)에 데이터를 제공하도록 구성된다. 상술한 바와 같이, I/O 디바이스로부터 제공되는 데이터는 컴퓨팅 디바이스(101)의 캐시 구조와 비정렬될 수 있다. 본원에서 칭해지는 바와 같은 캐시 정렬 구조는 데이터가 컴퓨터 메모리에 대한 캐시 내에서 배열 및 액세스되는 방식이고 시스템별로 상이할 수 있다. 다양한 유형의 캐시 정렬 구조는 다른 캐시 정렬 구조 중에서도, 64 바이트 캐시 정렬 구조, 128 바이트 캐시 정렬 구조를 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스(101)의 메모리 디바이스(106)에 대한 캐시는 64 바이트 캐시 정렬 구조로 구성될 수 있다. 도 1에 도시되는 바와 같이, 메모리(106)는 메모리 디바이스(106)에 포함되는 데이터와 일관되도록 유지되는 다수의 바이트의 길이의 캐시 라인들을 가지는 캐시(122)를 포함한다.
일부 실시예에서, I/O 인터페이스(110)는 I/O 디바이스(112, 114, 116)로부터 수신되는 비정렬 데이터를 처리하도록 구성되는, 파선의 박스(124)에 의해 표시되는 정렬 로직을 포함한다. 일부 실시예에서, 정렬 로직(126)은 I/O 디바이스(112)의 파선의 박스(126)에 의해 표시되는 바와 같이, I/O 디바이스 내에 배치되고, 여기서 정렬 로직(126)은 아래에서 더 상세하게 논의되는 바와 같이 I/O 인터페이스(110)에서 수행되기 위해 비정렬 데이터를 패딩하는 것과 관련되는 명령들로 데이터의 패킷을 구성할 수 있다. 어느 실시예에서든, 정렬 로직(124이든 아니면 126이든)은 적어도 부분적으로 비정렬 데이터를 처리하는 하드웨어 로직을 포함한다. 일부 실시예에서, 하드웨어 로직은 I/O 디바이스로부터 수신되는 비정렬 데이터를 처리하도록 구성되는 집적 회로이다. 일부 실시예에서, 정렬 로직은 프로세서, 마이크로컨트롤러 등에 의해 실행 가능한 프로그램 코드와 같이 다른 유형의 하드웨어 로직을 포함하고, 여기서 프로그램 코드는 비일시적 컴퓨터 판독 가능 매체에 저장된다. 비정렬 데이터의 처리는 비정렬 데이터에 값을 추가하는 것에 의해 비정렬 데이터를 패딩함으로써, 추가된 값들이 드라이버(108)와 같은 컴퓨팅 시스템 구성요소에 의해 무시되고 반면에 패딩된 데이터 내의 유효 데이터가 컴퓨팅 시스템 구성요소에 의해 판독되는 것을 포함한다. I/O 인터페이스(110)는 정렬을 필요로 하는 I/O 디바이스로부터의 데이터 트래픽을 분류하기 위하여 도 1에서 130에 의해 표시되는 상호접속의 라우팅 특징들을 사용할 수 있다. 본원에서 칭해지는 바와 같은 상호접속(interconnect)은 주변 구성요소 상호접속 익스프레스(Peripheral Component Interconnect Express; PCIe) 또는 임의의 다른 상호접속 패브릭 기술(fabric technology)과 같이, 광범위한 향후의 컴퓨팅 및 통신 플랫폼에 대하여 정의되는 통신 결합이다. 본원에서 설명되는 기술에서, 상호접속(130)은 I/O 인터페이스(110)에서 고유 식별된 소스로부터 수신되는 데이터에 대하여 정렬 로직이 수행되어야 함을 표시하기 위하여 데이터 트래픽을 예를 들어, 고유 물리 링크, 가상 채널, 디바이스 ID 또는 데이터 스트림 ID에 의해 분류할 수 있다. I/O 인터페이스(110)는 컴퓨팅 디바이스(101) 및 I/O 디바이스(112) 사이의 서비스 계약이 설정되는 때를 식별하기 위하여 고유 식별자로 구성될 수 있다.
컴퓨팅 디바이스(101)의 프로세서(102)는 저장되어 있는 명령을 실행하도록 적응되는 주 프로세서일 수 있다. 프로세서(102)는 단일 코어 프로세서, 멀티코어 프로세서, 컴퓨팅 클러스터(computing cluster) 또는 임의의 수의 다른 구성일 수 있다. 프로세서(102)는 복소 명령어 세트 컴퓨터(Complex Instruction Set Computer; CISC) 또는 축소 명령어 세트 컴퓨터(Reduced Instruction Set Computer; RISC) 프로세서, x86 명령어 세트 호환 프로세서, 멀티 코어 또는 임의의 다른 마이크로프로세서 또는 중앙 처리 장치(central processing unit; CPU)로서 구현될 수 있다.
메모리 디바이스(106)는 랜덤 액세스 메모리(random access memory; RAM)(예를 들어, 정적 랜덤 액세스 메모리(static RAM; SRAM), 동적 랜덤 액세스 메모리(dynamic RAM; DRAM), 영 커패시터 RAM(zero capacitor RAM), 실리콘-옥사이드-니트라이드-옥사이드-실리콘(Silicon-Oxide-Nitride-Oxide-Silcon; SONOS), 임베디드 DRAM(embedded DRAM), 익스텐디드 데이터 아웃 RAM(extended data out RAM), 더블 데이터 레이트(double data rate; DDR) RAM, 저항성 랜덤 액세스 메모리(resistive RAM; RRAM), 파라미터 랜덤 액세스 메모리(parameter RAM; PRAM) 등), 판독 전용 메모리(read only memory; ROM)(예를 들어, 마스크 ROM(Mask ROM), 프로그램 가능 ROM(programmable read only memory; PROM), 소거 가능 프로그램 가능 ROM(erasable programmable read only memory; EPROM), 전기적 소거 가능 프로그램 가능 ROM(electrically EPROM; EEPROM) 등), 플래시 메모리 또는 임의의 다른 적절한 메모리 시스템을 포함할 수 있다. 주 프로세서(102)는 시스템 버스(128)(예를 들어, 주변 구성요소 상호접속(PCI), 산업 표준 아키텍처(Industry Standard Architecture; ISA), PCI-Express, HyperTransport®, NuBus 등)를 통해 메모리(106), 저장 디바이스(104), 드라이버(108), I/O 인터페이스(110) 및 I/O 디바이스(112, 114, 116)를 포함하는 구성요소에 접속될 수 있다.
도 1의 블록도는 컴퓨팅 디바이스(101)가 도 1에 도시되는 구성요소들 모두를 포함해야만 하는 것을 나타내도록 의도되지 않는다. 더욱이, 컴퓨팅 디바이스(101)는 특정 구현의 세부사항에 따라, 도 1에 도시되지 않은 임의의 수의 추가 구성요소를 포함할 수 있다.
도 2는 정렬 로직을 포함하는 I/O 인터페이스를 통해 시스템 플랫폼에 접속되는 I/O 디바이스를 도시하는 블록도이다. 시스템 플랫폼(202)은 도 1을 참조하여 상술한 바와 같이 메모리 유닛, 저장 디바이스, 프로세서, 디바이스 드라이버를 포함하는 시스템 소프트웨어 등을 포함할 수 있다. 시스템 플랫폼(202)은 메모리 캐시(122)를 통해 일관적인 메모리 동작을 사용하도록 구성된다. 도 2의 파선의 박스(204)는 메모리로부터의 데이터가 시스템 플랫폼(202)의 데이터 정렬 구조에 따라 정렬되어 있는 일관적인 메모리 공간을 표현한다. 논의를 위해, 도 2에서의 시스템 플랫폼(202)은 다른 데이터 정렬 구조가 구현될 수 있을지라도 64 바이트 데이터 정렬 구조를 가지는 것으로 가정된다. 파선의 박스(206)는 시스템 플랫폼(202)과 연관되는, 도 1의 I/O 인터페이스(110)와 같은 I/O 인터페이스로의 접속을 표현한다. I/O 디바이스로의 또는 I/O 디바이스로부터의 데이터 전송은 플랫폼 메모리 캐시(122)에 대하여 비정렬되는 어드레스로 또는 이 어드레스로부터의 전송일 수 있다.
상술한 바와 같이, I/O 인터페이스(110)는 도 2에 도시되는 네트워크 인터페이스 제어기(NIC)(208)와 같은 I/O 디바이스로부터 비정렬 데이터를 수신할 수 있다. NIC(208)로부터의 비정렬 데이터는 I/O 인터페이스(110)의 정렬 로직(124)에서 수신될 수 있다. I/O 인터페이스(110)는 도 2에서의 NIC(208)와 같은 I/O 디바이스의 버스 디바이스 기능(bus device function; BDF)과 같은 고유 ID를 인식하도록 구성될 수 있어서, 캐시(122) 내에 임의의 비정렬 데이터를 저장하기 전에, 정렬 로직(124)은 시스템 플랫폼(202) 내의 메모리 캐시(122)에 대한 데이터 정렬 구조에 부합하는 값들을 추가하는 것에 의해서 비정렬 데이터를 패딩할 것을 지시받게 된다. 이 예에서, 캐시(122)는 64 바이트 데이터 정렬 구조를 가지는 캐시 라인을 포함한다. 고유 ID를 사용하는 것은 I/O 디바이스를 I/O 인터페이스에 등록하는 하나의 메커니즘이다. NIC(208)와 같은 I/O 디바이스를 I/O 인터페이스(110)에 등록하는 것은 도 1을 참조하여 상술한 정렬 서비스 계약을 설정하는 것의 일부이다.
정렬 로직(124)에 의한 비정렬 데이터의 패딩은 도 2의 NIC 디바이스 드라이버(210)와 같은 컴퓨팅 플랫폼에서 가동 중인 시스템 소프트웨어가 비정렬 데이터를 판독하고 추가된 값을 무시하도록 구성될 수 있는 그러한 것이다. 실시예에서, 드라이버는 비정렬 데이터를 판독하고 I/O 인터페이스(110) 및 NIC 드라이버(210)와 같은 디바이스 드라이버 사이의 사전정의된 합의에 기초하여 추가된 값을 무시한다. 예를 들어, NIC(208)는 I/O 인터페이스(110)에 65 바이트의 데이터를 제공할 수 있다. 이 예에서 캐시 라인은 캐시(122)의 데이터 정렬 구조에 따라 길이가 64 바이트이므로 캐시(122)에는 데이터의 처음 64 바이트가 저장된다. 데이터의 여분의 1 바이트는 정렬 로직에 의해서 데이터의 63 바이트에 더 채워지도록 0과 같은 추가된 값으로 패딩된다. NIC 드라이버(210) 및 I/O 인터페이스(110) 사이의 합의로 인해 NIC 드라이버(210)는 캐시를 메모리(106)와 동기화하도록 수행되는 RMW 동작을 요구하지 않으면서 데이터의 제 1 바이트를 판독하고 추가된 값들의 63 바이트를 무시할 수 있다.
정렬은 캐시 라인 크기로 제한되지 않음이 주지된다. 실시예에서, 정렬 로직(124)은 캐시 라인 크기 입도(granularity), 페이지 크기 입도 등과 같이 시스템 플랫폼의 소정의 데이터 정렬 구조에 대하여 가장 큰 허용 가능한 정렬 입도에 따라 데이터를 패딩한다.
도 3은 패킷 헤더 내에 정렬 표시를 포함하는 I/O 인터페이스를 통해 시스템 플랫폼에 접속되는 I/O 디바이스를 도시하는 블록도이다. 위에 도 2를 참조하여 논의된 바와 같이, 시스템 플랫폼(202)은 다른 데이터 정렬 구조가 구현될 수 있을지라도 64 바이트 캐시 정렬 구조를 가지는 일관적인 메모리 공간(204) 내에 구성될 수 있다. 파선 박스(206)는 도 1의 I/O 인터페이스(110)와 같이, 시스템 플랫폼(202)과 연관되는 I/O 인터페이스로의 접속을 도시한다. I/O 디바이스로의 또는 I/O 디바이스로부터의 데이터 전송은 플랫폼 메모리 캐시(122)에 대하여 비정렬되어 있는 어드레스로의 또는 이 어드레스로부터의 전송일 수 있다.
일부 실시예에서, 도 3에 도시되는 NIC(302)와 같은 I/O 디바이스는 데이터 패킷(304)의 헤더(header) 내에서 정렬 데이터를 제공한다. 패킷(304)은 제어 헤더 블록(306), 어드레스 블록(308) 및 데이터 블록(310)과 같은 블록을 포함한다. 전형적으로, 패킷 헤더는 정렬과는 상관없이 데이터의 유효 길이를 식별하는 네트워크 헤더를 포함한다. 본원에서 논의되는 실시예에서, 제어 헤더 블록(306)은 도 3에 도시되는 바와 같이, 정렬 데이터(312)를 포함한다. 이 실시예에서, NIC(302)와 같은 I/O 디바이스는 제어 헤더 블록(306) 내에 정렬 데이터(312)를 포함하도록 구성되는 정렬 로직(126)을 포함한다. 정렬 데이터(312)는 데이터 패킷(304)이 비정렬 데이터를 포함함으로써 I/O 인터페이스(110)가 정렬 로직(124)을 통해 데이터를 패딩하게 됨을 I/O 인터페이스(110)에 표시한다. 이 시나리오에서, 정렬 데이터(312)는 정렬 데이터(312)가 I/O 인터페이스(110)에 의해 프로세싱되고 패딩이 발생할 수 있는지 그리고 원하는 정렬인지를 추론하도록 데이터 패킷(304) 내에 임베딩(embedding)된다. 일부 실시예에서, 패킷(304) 내에 정렬 데이터(312)를 구현하는 것은 정렬 데이터(312)를 해석하기 위해 I/O 인터페이스(110)를 적절하게 구성함으로써 I/O 인터페이스(110)에서 정렬 로직(124) 없이 프로세싱된다.
도 4는 비정렬 데이터를 처리하는 방법을 도시하는 블록도이다. 블록 402에서, I/O 인터페이스의 캐시에서 입력/출력(I/O) 디바이스로부터 데이터가 수신된다. 비정렬 데이터는 블록 404에서 I/O 디바이스와 연관되는 드라이버가 추가된 값을 무시하도록 패딩된다.
일부 실시예에서, 패딩은 RMW 동작을 수행하지 않고 수행된다. 즉, 비정렬 데이터를 수신하고 비정렬 데이터에 대해 RMW를 수행하기보다는 오히려, I/O 인터페이스는 데이터를, I/O 디바이스와 연관되는 드라이버뿐만 아니라 패딩된 데이터에 액세스하는 컴퓨팅 시스템의 소프트웨어에 의해 무시되는 값으로 패딩한다. 일부 실시예에서 추가되는 값은 I/O 디바이스 및 드라이버 사이에 설정된 계약에 기초하여 무시된다. 이 계약은 무시되는 추가 값들에 의해서 패딩될 때 비정렬 데이터의 유효 바이트들이 판독될 수 있도록 하드웨어 로직, 펌웨어, 소프트웨어 또는 이의 임의의 결합을 적어도 부분적으로 포함하는 로직으로서 구현될 수 있다. 일부 실시예에서, 수신되는 데이터의 유효 바이트들은 I/O 디바이스로부터 제공되는 패킷 헤더 내의 길이 필드(length field)에 의해 표시된다.
도 5는 비정렬 데이터를 처리하는 대안의 방법을 도시하는 블록도이다. 도 3에 관하여 상술한 바와 같이, 일부 실시예에서, 데이터는 블록 502에서, I/O 인터페이스에서 데이터를 패킷들의 시퀀스로서 전송하는 상호접속을 통해 수신된다. 각각의 패킷은 헤더 세그먼트 및 데이터 세그먼트로 구성된다. 헤더는 블록 506에서, 헤더 내의 표시에 응답하여 패딩이 수행되도록 블록 504에서, 비정렬 데이터가 I/O 인터페이스에서 패딩되는 것을 표시한다. 이 실시예에서, 패킷 헤더는 패킷을 I/O 인터페이스에 제공하기 전에 I/O 디바이스에서 구성된다.
본원에서 설명되는 실시예에서, 데이터는 상호접속 패브릭 아키텍처를 통해 I/O 인터페이스로 또는 I/O 인터페이스로부터 I/O 디바이스로 또는 I/O 디바이스로부터 제공된다. 하나의 상호접속 패브릭 아키텍처는 주변 구성요소 상호접속(PCI) 익스프레스(PCIe) 아키텍처를 포함한다. PCIe의 1차 목적은 상이한 판매자가 만드는 구성요소 및 디바이스가 다수의 시장 세그먼트(market segment); 고객(데스크탑 및 모바일), 서버(표준 및 기업) 및 임베디드 및 통신 디바이스에 걸친 개방형 아키텍처에서 연동할 수 있도록 하는 것이다. PCI 익스프레스는 광범위한 향후의 컴퓨팅 및 통신 플랫폼에 대하여 정의되는 고성능, 범용 상호접속이다. 사용 모델, 부하 저장 아키텍처 및 소프트웨어 인터페이스와 같은 일부의 PCI 속성은 자체의 개정을 통해 유지되어 왔으나, 반면에 이전의 병렬 버스 구현은 고도로 크기조정 가능한, 전체 직렬의 인터페이스로 대체되었다. PCI 익스프레스의 보다 최신의 버전은 새로운 레벨의 성능 및 특징을 전달하기 위하여 지점 대 지점(point-to-point) 상호접속, 스위치 기반 기술 및 패킷화 프로토콜에서 발전된 것을 이용한다. 전력 관리, 서비스 품질(Quality Of Service; QoS), 핫-플러그/핫-스왑 지원(Hot-Plug/Hot-Swap support), 데이터 무결성(Data Integrity), 및 에러 처리는 PCI 익스프레스에 의해 지원되는 발전된 특징 중 일부에 속한다.
도 6을 참조하면, 구성요소의 세트를 상호 접속시키는 지점 대 지점 링크로 구성되는 패브릭의 하나의 실시예가 도시된다. 시스템(600)은 제어기 허브(615)에 결합되는 시스템 메모리(610) 및 프로세서(605)를 포함한다. 프로세서(605)는 마이크로프로세서, 호스트 프로세서, 임베디드 프로세서, 코 프로세서 또는 다른 프로세서와 같은 임의의 프로세싱 요소를 포함한다. 프로세서(605)는 프론트 사이드 버스(front-side bus; FSB)(606)를 통해 제어기 허브(615)에 결합된다. 하나의 실시예에서, FSB(606)는 후술되는 바와 같이 직렬 지점 대 지점 상호 접속이다. 다른 실시예에서, 링크(606)는 상이한 상호 접속 표준과 호환되는 직렬, 차동 상호접속 아키텍처를 포함한다.
시스템 메모리(610)는 랜덤 액세스 메모리(RAM), 비휘발성(non-volatile; NV) 메모리 또는 시스템(600) 내의 디바이스에 의해 액세스될 수 있는 다른 메모리와 같은 임의의 메모리 디바이스를 포함한다. 시스템 메모리(610)는 메모리 인터페이스(616)를 통해 제어기 허브(615)에 결합된다. 메모리 인터페이스의 예는 더블 데이터 레이트(double-data rate; DDR) 메모리 인터페이스, 듀얼 채널(dual-channel) DDR 메모리 인터페이스 및 동적 RAM(DRAM) 메모리 인터페이스를 포함한다.
하나의 실시예에서, 제어기 허브(615)는 주변 구성요소 상호접속 익스프레스(PCIe 또는 PCIE) 상호접속 계층 내의 루트 허브(root hub), 루트 컴플렉스(root complex), 또는 루트 제어기이다. 제어기 허브(615)의 예는 칩셋, 메모리 제어기 허브(memory controller hub; MCH), 노스브릿지(northbridge), 상호접속 제어기 허브(interconnect controller hub; ICH) 사우스브릿지(southbridge) 및 루트 제어기/허브를 포함한다. 흔히 용어 칩셋은 2개의 물리적으로 분리되어 있는 제어기 허브, 즉, 상호접속 제어기 허브(ICH)에 결합되는 메모리 제어기 허브(MCH)를 칭한다. 현재의 시스템은 흔히 프로세서(605)와 통합되는 MCH를 포함하고 반면에 제어기(615)는 후술되는 바와 유사한 방식으로 I/O 디바이스와 통신할 수 있음이 주지되어야 한다. 일부 실시예에서, 피어 투 피어 라우팅(peer-to-peer routing)은 선택사양으로 루트 컴플렉스(615)를 통해 지원된다.
여기서, 제어기 허브(615)는 직렬 링크(619)를 통해 스위치/브릿지(620)에 결합된다. 또한 인터페이스/포트(617 및 621)로 칭해질 수 있는 입력/출력 모듈(617 및 621)은 제어기 허브(615) 및 스위치(620) 사이에 통신을 제공하는 층식 프로토콜 스택(stack)을 포함/구현한다. 하나의 실시예에서, 스위치(620)에 다수의 디바이스가 결합될 수 있다.
스위치/브릿지(620)는 패킷/메시지를, 디바이스(625)로부터 업스트림(upstream), 즉 루트 컴플렉스 쪽으로의 계층 위로, 제어기 허브(615)까지, 그리고 다운스트림(downstream), 즉 루트 제어기로부터 멀어지는 계층 아래로, 프로세서(605) 또는 시스템 메모리(610)로부터 디바이스(625)까지 라우팅한다. 스위치(620)는 하나의 실시예에서 다수의 가상 PCI-대-PCI 브릿지 디바이스의 로직 조립체로서 칭해진다. 디바이스(625)는 I/O 디바이스, 네트워크 인터페이스 제어기(Network Interface Controller; NIC), 애드인(add-in) 카드, 오디오 프로세서, 네트워크 프로세서, 하드 드라이브, 저장 디바이스, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 휴대용 저장 디바이스, 파이어와이어 디바이스(firewire device), 범용 직렬 버스(Universal Serial Bus; USB) 디바이스, 스캐너 및 다른 입력/출력 디바이스와 같은 전자 시스템에 결합되는 임의의 내부 또는 외부 디바이스 또는 구성요소를 포함한다. 흔히 PCIe에서 디바이스와 같은 통칭은 엔드포인트(endpoint)로서 칭해진다. 명시적으로 도시되지 않을지라도, 디바이스(625)는 레거시(legacy) 또는 다른 버전의 PCI 디바이스를 지원하기 위해 PCIe 대 PCI/PCI-X 브릿지를 포함할 수 있다. PCIe에서의 엔드포인트 디바이스는 흔히 레거시, PCIe 또는 루트 컴플렉스 통합 엔드포인트로서 분류된다.
그래픽 가속기(graphics accelerator)(630)는 또한 직렬 링크(632)를 통해 제어기 허브(615)에 결합된다. 하나의 실시예에서, 그래픽 가속기(630)는 MCH에 결합되고, MCH는 ICH에 결합된다. 그리고 나서 스위치(620), 그리고 이에 따라 I/O 디바이스(625)가 ICH에 결합된다. I/O 모듈(631 및 618)은 또한 그래픽 가속기(630) 및 제어기 허브(615) 사이를 통신하기 위해 층식 프로토콜 스택을 구현할 수 있다. 위의 MCH 논의와 유사하게, 그래픽 제어기 또는 그래픽 가속기(630) 자체는 프로세서(605) 내에 통합될 수 있다.
도 7로 전환해서, 층식 프로토콜 스택의 실시예가 도시된다. 층식 프로토콜 스택(700)은 퀵 패스 상호접속(Quick Path Interconnect; QPI) 스택, PCIe 스택, 차세대 고성능 컴퓨팅 상호접속 스택 또는 다른 층식 스택과 같은 임의의 형태의 층식 통신 스택을 포함한다. 도 6 내지 도 9를 참조하는 바로 아래의 논의가 PCIe 스택에 관한 것일지라도, 다른 상호접속 스택에 동일한 개념이 적용될 수 있다. 하나의 실시예에서, 프로토콜 스택(700)은 트랜잭션 층(transaction layer)(705), 링크 층(710) 및 물리 층(720)을 포함하는 PCIe 프로토콜 스택이다. 도 6에서의 인터페이스(617, 618, 621, 622, 626 및 631)와 같은 인터페이스는 통신 프로토콜 스택(700)으로 표현될 수 있다. 통신 프로토콜 스택으로서의 표현은 또한 프로토콜 스택을 구현/포함하는 모듈 또는 인터페이스로서 칭해질 수 있다.
PCI 익스프레스는 구성요소들 사이에서 정보를 통신하기 위하여 패킷을 사용한다. 패킷은 정보를 전송 구성요소로부터 수신 구성요소로 전달하기 위하여 트랜잭션 층(705) 및 데이터 링크 층(710)에 형성된다. 전송되는 패킷은 다른 층을 통과하여 흐르므로, 이 패킷들은 패킷을 상기 층들에서 처리하는 데 필요한 추가 정보를 가지도록 확장된다. 수신 측에서, 역 프로세스가 발생하고 패킷들은 자신의 물리 층(720) 표현에서 데이터 링크 층(710) 표현으로 그리고 최종적으로(트랜잭션 층 패킷에 대해) 수신 디바이스의 트랜잭션 층(705)에 의해 프로세싱될 수 있는 형태로 변형된다.
트랜잭션 층
하나의 실시예에서, 트랜잭션 층(705)은 데이터 링크 층(710) 및 물리 층(720)과 같이, 디바이스의 프로세싱 코어 및 상호접속 아키텍처 사이에 인터페이스를 제공할 수 있다. 이 점에 있어서, 트랜잭션 층(705)의 1차 책무는 패킷(즉, 트랜잭션 층 패킷(transaction layer packet), 즉 TLP)의 조립 및 분해이다. 트랜잭션 층(705)은 전형적으로 TLP에 대한 크레디트 기반(credit-base) 플로우 제어를 관리한다. PCIe는 분리 트랜잭션, 즉 요청 및 응답이 시간에 의해 분리되는 트랜잭션을 구현하여, 목표 디바이스가 응답을 위해 데이터를 수집하는 동안 링크가 다른 트래픽을 운반하는 것이 가능하다.
게다가 PCIe는 크레디트 기반 플로우 제어를 활용한다. 이 방식에서, 디바이스는 트랜잭션 층(705)에서 수신 버퍼의 각 버퍼 별로 초기 크레디트의 양을 광고한다. 도 6에 있는 제어기 허브(615)와 같이, 링크의 대향하는 단에 있는 외부 디바이스는 각각의 TLP에 의해 소비되는 크레디트의 수를 계수한다. 트랜잭션이 크레디트 한계를 초과하지 않으면 이 트랜잭션은 전송될 수 있다. 응답을 수신하면 크레디트의 양이 회복된다. 크레디트 방식의 장점은 크레디트 한계를 만나지 않으면 크레디트 복귀의 레이턴시가 성능에 영향을 미치지 않는다는 점이다.
하나의 실시예에서, 4개의 트랜잭션 어드레스 공간은 구성 어드레스 공간, 메모리 어드레스 공간, 입력/출력 어드레스 공간 및 메시지 어드레스 공간을 포함한다. 메모리 공간 트랜잭션은 데이터를 메모리 매핑 장소로/로부터 전송하기 위해 판독 요청 및 기록 요청 중 하나 이상을 포함한다. 하나의 실시예에서, 메모리 공간 트랜잭션은 2개의 상이한 어드레스 포맷, 예를 들어, 32 비트 어드레스와 같은 짧은 어드레스 포맷 또는 64 비트 어드레스와 같은 긴 어드레스 포맷을 사용할 수 있다. 구성 공간 트랜잭션은 PCIe 디바이스의 구성 공간에 액세스하는 데 사용된다. 구성 공간에 대한 트랜잭션은 판독 요청 및 기록 요청을 포함한다. 메시지 공간 트랜잭션(또는 단순히 메시지)은 PCIe 에이전트(agent) 사이의 대역 내 통신을 지원하도록 정의된다.
그러므로, 하나의 실시예에서, 트랜잭션 층(705)은 패킷 헤더/페이로드(706)를 조립한다. 현재 패킷 헤더/페이로드에 대한 포맷은 PCIe 사양 웹사이트에 있는 PCIe 사양에서 확인될 수 있다. 상술한 바와 같이, 하나의 실시예에서, 패킷 헤더는 패킷 내의 데이터가 비정렬되고 I/O 인터페이스에서 패딩되도록 구성 명령으로 구성된다.
신속히 도 8을 참조하면, PCIe 트랜잭션 기술자(descriptor)의 하나의 실시예가 도시된다. 하나의 실시예에서, 트랜잭션 기술자(800)는 트랜잭션 정보를 전달하는 메커니즘이다. 이 점에 있어서, 트랜잭션 기술자(800)는 시스템 내의 트랜잭션의 아이덴티피케이션(identification)을 지원한다. 다른 잠재성 있는 사용예는 디폴트 트랜잭션 오더링(ordering)의 수정 및 트랜잭션의 채널과의 연계를 추적하는 것을 포함한다.
트랜잭션 기술자(800)는 전역 식별자 필드(802), 속성 필드(804) 및 채널 식별자 필드(806)를 포함한다. 도시된 예에서, 전역 식별자 필드(802)는 국지의 트랜잭션 식별자 필드(808) 및 소스 식별자 필드(810)를 포함하는 것으로 도시된다. 하나의 실시예에서, 전역 트랜잭션 식별자(802)는 모든 미해결 요청에 고유하다.
하나의 구현에 따르면, 국지의 트랜잭션 식별자 필드(808)는 요청 에이전트에 의해 생성되는 필드이고, 이는 상기 요청 에이전트에 대해 완료를 요구하는 모든 미해결 요청에 대해 고유하다. 더욱이, 이 예에서, 소스 식별자(810)는 PCIe 계층 내의 요청자 에이전트를 고유하게 식별한다. 따라서, 소스 ID(810)과 함께, 국지의 트랜잭션 식별자(808) 필드는 계층 영역 내에서 트랜잭션의 전역 아이덴티피케이션을 제공한다.
속성 필드(804)는 트랜잭션의 특성 및 관계를 명시한다. 이 점에 있어서, 속성 필드(804)는 잠재적으로 트랜잭션의 디폴트 처리의 수정을 가능하게 하는 추가 정보를 제공하는 데 사용된다. 하나의 실시예에서, 속성 필드(804)는 우선순위 필드(812), 예비 필드(814), 오더링 필드(816), 노 스누프(no-snoop) 필드(818)를 포함한다. 여기서, 우선순위 하위 필드(812)는 트랜잭션에 우선순위를 할당하기 위하여 개시자(initiator)에 의해 수정될 수 있다. 예비 속성 필드(814)는 향후, 또는 판매자가 정의한 용례를 위해 예비된 상태로 남겨둔다. 우선순위 또는 보안 속성을 사용하는 가능한 사용 모델은 예비 속성 필드를 사용하여 구현될 수 있다.
이 예에서, 오더링 속성 필드(816)는 디폴트 오더링 규칙을 수정할 수 있는 오더링의 유형을 전달하는 선택 정보를 공급하는 데 사용된다. 하나의 예의 구현에 따르면, "0"의 오더링 속성은 디폴트 오더링 규칙이 적용될 수 있음을 표시하고, "1"의 오더링 속성은 완화된 오더링(relaxed ordering)을 표시하고, 기록은 동일한 방향으로 기록을 패스할 수 있고 판독 완료는 동일한 방향으로 기록을 패스할 수 있다. 스누프 속성 필드(818)는 트랜잭션이 스누핑되는지를 결정하는 데 활용된다. 도시되는 바와 같이, 채널 ID 필드(806)는 트랜잭션이 연관되어 있는 채널을 식별한다.
링크 층
또한 데이터 링크 층(710)으로서 칭해지는 링크 층(710)은 트랜잭션 층(705) 및 물리 층(720) 사이의 중간 단계 역할을 한다. 하나의 실시예에서, 데이터 링크 층(710)의 책무는 2개의 구성요소의 링크 사이에서 트랜잭션 층 패킷(TLP)을 교환하는 신뢰성 있는 메커니즘을 제공하는 것이다. 데이터 링크 층(710)의 한 측은 트랜잭션 층(705)에 의해 조립되는 TLP를 받아들이고, 패킷 시퀀스 식별자(711), 즉, 아이덴티피케이션 번호 또는 패킷 번호를 적용하고, 에러 검출 코드, 즉 CRC(712)를 계산 및 적용하고, 물리 층에 걸쳐 외부 디바이스로 전송하기 위해 수정된 TLP를 물리 층(720)에 제출한다.
물리 층
하나의 실시예에서, 물리 층(720)은 패킷을 외부 디바이스에 물리적으로 전송하기 위해 로직 하위 블록(721) 및 전기 하위 블록(722)을 포함한다. 여기서, 로직 하위 블록(721)은 물리 층(721)의 "디지털" 기능을 담당한다. 이 점에 있어서, 로직 하위 블록은 물리 하위 블록(722)에 의해 전송되는 발신 정보를 준비하는 전송 섹션 및 수신되는 정보를 링크 층(710)에 패스하기 전에 이 정보를 식별 및 준비하는 수신 섹션을 포함한다.
물리 블록(722)은 송신기 및 수신기를 포함한다. 송신기는 로직 하위 블록(721)에 의해 심볼을 공급받고, 전송기는 심볼을 직렬화하여 외부 디바이스로 전송한다. 수신기는 외부 디바이스로부터 직렬화된 심볼을 공급받고 수신된 신호를 비트 스트림으로 변환한다. 비트 스트림은 직렬화 해제(de-serialized)되고 로직 하위 블록(721)으로 공급된다. 하나의 실시예에서, 8b/10b 전송 코드가 사용되고, 여기서 10-비트 심볼이 전송/수신된다. 여기서, 패킷을 프레임(723)으로 프레임화하기 위해 특수 심볼이 사용된다. 게다가, 하나의 예에서, 수신기는 또한 착신하는 직렬 스트림으로부터 복구되는 심볼 클럭을 제공한다.
상술한 바와 같이, 트랜잭션 층(705), 링크 층(710) 및 물리 층(720)이 PCIe 프로토콜 스택의 특정 실시예를 참조하여 논의될지라도, 층식 프로토콜 스택은 그렇게 제한되지 않는다. 실제로, 임의의 층식 프로토콜이 포함/구현될 수 있다. 예로서, 층식 프로토콜로서 표현되는 포트/인터페이스는: (1) 패킷을 조립하는 제 1 층, 즉, 트랜잭션 층; 패킷을 시퀀싱(sequencing)하는 제 2 층, 즉, 링크 층; 및 패킷을 전송하는 제 3 층, 즉 물리 층을 포함한다. 특정한 예로서, 공통 표준 인터페이스(common standard interface; CSI) 층식 프로토콜이 사용된다.
도 9를 참조하면, PCIe 직렬 지점 대 지점 패브릭의 실시예가 도시된다. PCIe 직렬 지점 대 지점 링크의 실시예가 도시될지라도, 직렬 지점 대 지점 링크는 직렬 데이터를 전송하기 위한 임의의 전송 경로를 포함하는 것과 같이, 그렇게 제한되지 않는다. 도시되는 실시예에서, 기본 PCIe 링크는 2개의 저 전압, 차동 구동 신호 쌍: 전송 쌍(906/911) 및 수신 쌍(912/907)을 포함한다. 이에 따라, 디바이스(905)는 데이터를 디바이스(910)에 전송하는 전송 로직(906) 및 데이터를 디바이스(910)로부터 수신하는 수신 로직(907)을 포함한다. 즉, 2개의 전송 경로, 즉 경로(916 및 917) 및 2개의 수신 경로, 즉 경로(918 및 919)는 PCIe 링크 내에 포함된다.
전송 경로는 전송 라인, 구리 라인, 광 라인, 무선 통신 채널, 적외선 통신 링크 또는 다른 통신 경로와 같이, 데이터를 전송하기 위한 임의의 경로를 칭한다. 디바이스(905) 및 디바이스(910)와 같은 2개의 디바이스 사이의 접속은 링크(415)와 같은 링크로서 칭해진다. 링크는 하나의 레인(lane)을 지원할 수 있고 - 각각의 레인은 차동 신호 쌍(전송을 위한 하나의 쌍, 수신을 위한 하나의 쌍)의 세트를 표현한다. 대역폭을 크기 조정하기 위해, 링크는 xN에 의해 표기되는 다수의 레인을 집속시킬 수 있고, 여기서 N은 1, 2, 4, 8, 12, 16, 32, 64 또는 그보다 더 넓은 임의의 지원되는 링크 폭이다.
차동 쌍은 차동 신호를 전송하기 위한, 라인(416 및 417)과 같은 2개의 전송 경로를 칭한다. 하나의 예로서, 라인(416)이 저 전압 레벨에서 고 전압 레벨로, 즉, 상승하는 에지(rising edge)로 토글링(toggling)할 때, 라인(417)은 고 로직 레벨로부터 저 로직 레벨로, 즉 하강하는 에지(falling edge)로 구동한다. 차동 신호는 잠재적으로 더 양호한 신호 무결성, 즉 교차 결합, 전압 오버슈트(overshoot)/언더슈트(undershoot), 링잉(ringing) 등과 같이, 더 양호한 전기 특성을 나타낸다. 이것으로 더 양호한 타이밍 윈도우(timing window)가 가능하고, 이 더 양호한 타이밍 윈도우로 인해 더 빠른 전송 주파수가 가능해진다.
실시예는 구현 또는 예이다. 명세서에서, "실시예", "하나의 실시예", "일부 실시예", "다양한 실시예", 또는 "다른 실시예"라 함은 실시예와 관련하여 기술되는 특정한 특징, 구조 또는 특성이 적어도 일부 실시예에 포함되지만 반드시 본 기술의 모든 실시예에 포함되는 것은 아님을 의미한다. 다양하게 등장하는 "실시예", "하나의 실시예" 또는 "일부 실시예"는 반드시 모두 동일한 실시예를 칭하는 것은 아니다.
본원에서 기술되고 도시되는 모든 구성요소, 특징, 구조, 특성이 특정한 실시예 또는 실시예들에 포함될 필요는 없다. 명세서가 구성요소, 특징, 구조 또는 특성이 포함될 "수도 있다", "수도 있을 것이다", "수 있다" 또는 "수 있을 것이다"라고 진술하면, 예를 들어, 상기 특정한 구성요소, 특징, 구조 또는 특성이 포함될 것을 요구하지 않는다. 명세서 또는 청구항이 요소를 "a" 또는 "an"으로 칭하면, 이것은 요소가 단 하나 있음을 의미하지 않는다. 명세서 또는 청구항이 "추가" 요소를 칭하면, 이것은 추가 요소들이 하나 이상 존재하는 것을 배제하지 않는다.
일부 실시예가 특정한 구현을 참조하여 기술되었을지라도, 일부 실시예에 따라 다른 구현이 가능한 것이 주의되어야 한다. 추가로, 도면에서 도시되고/되거나 본원에서 기술되는 회로 요소 또는 다른 특징의 배열 및/또는 순서는 도시되고 기술되는 특정한 방식으로 배열될 필요가 없다. 일부 실시예에 따라 많은 다른 배열이 가능하다.
도면에서 도시되는 각각의 시스템에서, 요소는 일부 경우에 각각 표현되는 요소가 상이하고/상이하거나 유사할 수 있음을 제시하기 위하여 동일한 참조 번호 또는 상이한 참조 번호를 가질 수 있다. 그러나, 요소는 상이한 구현을 가지고 본원에서 도시되고 기술되는 시스템 일부 또는 모두와 함께 작동하는 데 충분히 유연할 수 있다. 도면에서 도시되는 다양한 요소는 동일하거나 상이할 수 있다. 어떤 것이 제 1 요소로 칭해지고 어떤 것이 제 2 요소로 칭해지는지는 임의적이다.
앞서 언급한 예에서 명시한 것은 하나 이상의 실시예 어딘가에서 사용될 수 있음이 이해될 수 있다. 예를 들어, 상술한 컴퓨팅 디바이스의 모든 선택사양의 특징은 또한 본원에서 기술되는 컴퓨터 판독 가능 매체 또는 방법 중 어느 것에 대해서도 구현될 수 있다. 더욱이, 본원에서 실시예를 설명하기 위하여 흐름도 및/또는 상태도가 사용되었을지라도, 기술은 상기 도로 또는 본원에서 대응하는 설명으로 제한되지 않는다. 예를 들어, 플로우는 각각 도시된 박스 또는 상태를 통하여 또는 본원에서 도시되고 설명되는 바와 정확하게 동일한 순서로 이동할 필요가 없다.
본 기술은 본원에서 기재되는 특정한 세부사항으로 제한되지 않는다. 실제로, 본 명세서의 이점을 지니는 당업자는 본 기술의 범위 내에서 상술한 설명 및 도면으로부터 많은 다양한 변형이 행해질 수 있음을 인정할 것이다. 이에 따라, 청구항에 대한 임의의 수정을 포함하는 다음의 청구항이 본 기술의 범위를 정의한다.

Claims (25)

  1. 컴퓨팅 시스템(computing system)에서 비정렬 데이터(unaligned data)를 프로세싱하는 방법으로서,
    입력/출력(input/output; I/O) 인터페이스를 통해 I/O 디바이스로부터 데이터를 수신하는 단계와,
    상기 데이터가 비정렬되어 있으면 상기 I/O 인터페이스에서 상기 데이터에 값들을 추가하는 것에 의해서 상기 데이터를 패딩(padding)함으로써 상기 I/O 디바이스와 연관되는 상기 데이터의 소비자가 상기 추가된 값들을 무시하도록 하는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 패딩은 상기 비정렬 데이터에 대한 판독-수정-기록(read-modify-write) 동작을 수행하지 않고 수행되는
    방법.
  3. 제 1 항에 있어서,
    상기 데이터는 상기 I/O 인터페이스에서 헤더(header)를 포함하는 패킷 내에서 수신될 수 있고, 상기 방법은 상기 비정렬 데이터가 상기 I/O 인터페이스에서 패딩될 수 있음을 상기 헤더 내에 표시하는 것을 포함하고, 상기 패딩은 상기 헤더 내의 상기 표시에 응답하여 수행되는
    방법.
  4. 제 3 항에 있어서,
    상기 패킷 헤더는 상기 I/O 디바이스에서 상기 비정렬 데이터가 패딩될 수 있음을 표시하도록 구성되는
    방법.
  5. 제 1 항에 있어서,
    상기 소비자는 상기 소비자와 상기 I/O 인터페이스 사이에서 사전정의되는 계약에 기초하여 상기 추가된 값을 무시하는
    방법.
  6. 제 1 항에 있어서,
    상기 데이터 내의 길이 필드(length field)에 기초하여 상기 수신된 데이터의 유효 바이트를 결정하는 단계를 포함하는
    방법.
  7. 제 1 항에 있어서,
    캐시는 정렬 입도(alignment granularity)와 연관되고, 상기 정렬 입도는,
    캐시 라인 경계 입도,
    페이지 경계 입도,
    구성 가능 입도, 또는
    이의 임의의 조합을 포함하는
    방법.
  8. 로직(logic) 및 병치 코드(collocated code)를 포함하는 시스템으로서, 상기 코드는 실행될 때, 상기 로직으로 하여금,
    입력/출력(I/O) 디바이스로의 I/O 인터페이스에서 데이터를 수신하고,
    상기 데이터가 비정렬되어 있으면 상기 I/O 인터페이스에서 상기 데이터에 추가되는 값에 의해서 상기 데이터를 패딩함으로써 상기 I/O 디바이스와 연관되는 상기 데이터의 소비자가 상기 추가된 값들을 무시하도록 하는
    시스템.
  9. 제 8 항에 있어서,
    상기 패딩은 상기 비정렬 데이터에 대한 판독-수정-기록 동작을 수행하지 않고 수행되는
    시스템.
  10. 제 8 항에 있어서,
    상기 데이터는 상기 I/O 인터페이스에서 헤더를 포함하는 패킷 내에서 수신되고, 상기 시스템은 하드웨어 로직을 적어도 부분적으로 포함하는 상기 I/O 디바이스의 로직을 포함하고, 상기 로직은 상기 비정렬 데이터가 상기 I/O 인터페이스에서 패딩될 수 있음을 상기 헤더 내에 표시할 수 있고, 상기 패딩은 상기 헤더 내의 상기 표시에 응답하여 수행되는
    시스템.
  11. 제 10 항에 있어서,
    상기 패킷 헤더는 상기 I/O 디바이스에서, 상기 비정렬 데이터가 패딩될 수 있음을 표시하도록 구성되는
    시스템.
  12. 제 8 항에 있어서,
    상기 소비자는 상기 소비자와 상기 I/O 인터페이스 사이에서 사전정의되는 계약에 기초하여 상기 추가된 값을 무시하는
    시스템.
  13. 제 8 항에 있어서,
    드라이버는 상기 데이터 내의 길이 필드에 기초하여 상기 수신된 데이터의 유효 바이트를 결정하는
    시스템.
  14. 제 8 항에 있어서,
    캐시는 정렬 입도와 연관되고, 상기 정렬 입도는,
    캐시 라인 경계 입도,
    페이지 경계 입도,
    구성 가능 입도, 또는
    이의 임의의 조합을 포함하는
    시스템.
  15. 장치로서,
    입력/출력(I/O) 디바이스로의/로부터의 I/O 인터페이스에서 비정렬 데이터를 수신하고,
    상기 I/O 인터페이스에서 상기 비정렬 데이터에 값을 추가함으로써 상기 I/O 디바이스와 연관되는 상기 데이터의 소비자가 상기 추가된 값을 무시할 수 있도록 하는 로직을 포함하는
    장치.
  16. 제 15 항에 있어서,
    상기 I/O 디바이스는 프로세싱을 위해 데이터를 상기 컴퓨팅 디바이스에 전송할 수 있는
    장치.
  17. 제 15 항에 있어서,
    상기 값은 상기 비정렬 데이터에 대한 판독-수정-기록 동작을 수행하지 않고 추가되는
    장치.
  18. 제 15 항에 있어서,
    상기 장치는 하드웨어 로직을 적어도 부분적으로 포함하는 I/O 디바이스 로직을 포함하고, 상기 하드웨어 로직은,
    데이터 패킷을 상기 I/O 인터페이스에 제공하고,
    상기 I/O 인터페이스에서 패딩되는 비정렬 데이터를 상기 데이터 패킷의 헤더 내에 표시하고, 상기 값은 상기 헤더 내의 표시에 응답하여 추가되는
    장치.
  19. 제 15 항에 있어서,
    상기 소비자는 상기 소비자와 상기 I/O 인터페이스 사이에서 사전정의되는 계약에 기초하여 상기 추가된 값을 무시하는
    장치.
  20. 제 15 항에 있어서,
    드라이버는 헤더 내의 길이 필드에 기초하여 상기 수신된 데이터의 유효 바이트를 결정하는
    장치.
  21. 제 15 항에 있어서,
    캐시는 정렬 입도와 연관되고, 상기 정렬 입도는,
    캐시 라인 경계 입도,
    페이지 경계 입도,
    구성 가능 입도, 또는
    이의 임의의 조합을 포함하는
    장치.
  22. 코드를 포함하는 비일시적 컴퓨터 판독가능 매체로서, 상기 코드는 실행될 때, 프로세싱 디바이스로 하여금 컴퓨팅 시스템에서 비정렬 데이터를 프로세싱하는 방법을 수행하도록 하고, 상기 방법은,
    입력/출력(I/O) 디바이스로부터 I/O 인터페이스를 통해 데이터를 수신하는 단계와,
    상기 데이터가 비정렬되어 있으면 상기 I/O 인터페이스에서 상기 데이터에 값들을 추가하는 것에 의해서 상기 데이터를 패딩함으로써 상기 I/O 디바이스와 연관되는 상기 데이터의 소비자가 상기 추가된 값들을 무시하도록 하는 단계를 포함하는
    비일시적 컴퓨터 판독가능 매체.
  23. 제 22 항에 있어서,
    상기 패딩은 상기 비정렬 데이터에 대한 판독-수정-기록 동작을 수행하지 않고 수행되는
    비일시적 컴퓨터 판독가능 매체.
  24. 제 22 항에 있어서,
    상기 데이터는 상기 I/O 인터페이스에서 헤더를 포함하는 패킷 내에서 수신될 수 있고, 상기 방법은 상기 비정렬 데이터가 상기 I/O 인터페이스에서 패딩될 수 있음을 상기 헤더 내에 표시하는 것을 포함하고, 상기 패딩은 상기 헤더 내의 상기 표시에 응답하여 수행되는
    비일시적 컴퓨터 판독가능 매체.
  25. 제 22 항에 있어서,
    상기 소비자는 상기 소비자와 상기 I/O 인터페이스 사이에서 사전정의되는 계약에 기초하여 상기 추가된 값을 무시하는
    비일시적 컴퓨터 판독가능 매체.
KR1020167013329A 2013-12-23 2013-12-23 입력 출력 데이터 정렬 KR101865261B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/077577 WO2015099676A1 (en) 2013-12-23 2013-12-23 Input output data alignment

Publications (2)

Publication Number Publication Date
KR20160077110A true KR20160077110A (ko) 2016-07-01
KR101865261B1 KR101865261B1 (ko) 2018-06-07

Family

ID=53479351

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167013329A KR101865261B1 (ko) 2013-12-23 2013-12-23 입력 출력 데이터 정렬

Country Status (8)

Country Link
US (1) US20160350250A1 (ko)
EP (1) EP3087454A4 (ko)
JP (1) JP6273010B2 (ko)
KR (1) KR101865261B1 (ko)
CN (1) CN105765484B (ko)
BR (1) BR112016011256B1 (ko)
DE (1) DE112013007700T5 (ko)
WO (1) WO2015099676A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437667B2 (en) * 2016-03-29 2019-10-08 International Business Machines Corporation Raid system performance enhancement using compressed data
US9760514B1 (en) * 2016-09-26 2017-09-12 International Business Machines Corporation Multi-packet processing with ordering rule enforcement
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10372603B2 (en) * 2017-11-27 2019-08-06 Western Digital Technologies, Inc. Handling of unaligned writes
JP2023027970A (ja) 2021-08-18 2023-03-03 キオクシア株式会社 メモリシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095611A1 (en) * 2004-11-02 2006-05-04 Standard Microsystems Corporation Hardware supported peripheral component memory alignment method
JP2007323467A (ja) * 2006-06-02 2007-12-13 Fujitsu Ltd Dma回路およびデータ転送方法
KR20120113853A (ko) * 2011-04-06 2012-10-16 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
DE69625790T2 (de) * 1995-09-01 2003-11-20 Philips Electronics Na Verfahren und vorrichtung für anpassbare operationen durch einen prozessor
EP1182571B1 (en) * 2000-08-21 2011-01-26 Texas Instruments Incorporated TLB operations based on shared bit
JP2003308206A (ja) * 2002-04-15 2003-10-31 Fujitsu Ltd プロセッサ装置
US7376763B2 (en) * 2003-07-17 2008-05-20 International Business Machines Corporation Method for transferring data from a memory subsystem to a network adapter by extending data lengths to improve the memory subsystem and PCI bus efficiency
US7685434B2 (en) * 2004-03-02 2010-03-23 Advanced Micro Devices, Inc. Two parallel engines for high speed transmit IPsec processing
US7302525B2 (en) * 2005-02-11 2007-11-27 International Business Machines Corporation Method and apparatus for efficiently accessing both aligned and unaligned data from a memory
US7296108B2 (en) * 2005-05-26 2007-11-13 International Business Machines Corporation Apparatus and method for efficient transmission of unaligned data
US7461214B2 (en) * 2005-11-15 2008-12-02 Agere Systems Inc. Method and system for accessing a single port memory
JP4740766B2 (ja) * 2006-02-27 2011-08-03 富士通株式会社 データ受信装置、データ送受信システム、データ送受信システムの制御方法及びデータ受信装置の制御プログラム
US7681102B2 (en) * 2006-04-03 2010-03-16 Qlogic, Corporation Byte level protection in PCI-Express devices
IL187038A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure data processing for unaligned data
US8230125B2 (en) * 2007-10-30 2012-07-24 Mediatek Inc. Methods for reserving index memory space in AVI recording apparatus
US8458677B2 (en) * 2009-08-20 2013-06-04 International Business Machines Corporation Generating code adapted for interlinking legacy scalar code and extended vector code
US20120089765A1 (en) * 2010-10-07 2012-04-12 Huang Shih-Chia Method for performing automatic boundary alignment and related non-volatile memory device
WO2013032446A1 (en) * 2011-08-30 2013-03-07 Empire Technology Development Llc Hardware-based array compression
JP5857735B2 (ja) * 2011-12-27 2016-02-10 株式会社リコー 画像処理方法、画像処理装置、及び制御プログラム
WO2014038070A1 (ja) * 2012-09-07 2014-03-13 富士通株式会社 情報処理装置,並列計算機システム及び情報処理装置の制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095611A1 (en) * 2004-11-02 2006-05-04 Standard Microsystems Corporation Hardware supported peripheral component memory alignment method
KR20070083913A (ko) * 2004-11-02 2007-08-24 스탠다드 마이크로시스템즈 코포레이션 하드웨어 지원 주변 컴포넌트 메모리 정렬 방법
JP2007323467A (ja) * 2006-06-02 2007-12-13 Fujitsu Ltd Dma回路およびデータ転送方法
KR20120113853A (ko) * 2011-04-06 2012-10-16 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템

Also Published As

Publication number Publication date
KR101865261B1 (ko) 2018-06-07
WO2015099676A1 (en) 2015-07-02
US20160350250A1 (en) 2016-12-01
JP6273010B2 (ja) 2018-01-31
EP3087454A1 (en) 2016-11-02
DE112013007700T5 (de) 2016-09-08
BR112016011256A2 (ko) 2017-08-08
CN105765484A (zh) 2016-07-13
EP3087454A4 (en) 2017-08-02
BR112016011256B1 (pt) 2022-07-05
CN105765484B (zh) 2019-04-09
JP2017503237A (ja) 2017-01-26

Similar Documents

Publication Publication Date Title
US11726939B2 (en) Flex bus protocol negotiation and enabling sequence
US11755486B2 (en) Shared buffered memory routing
KR101689998B1 (ko) 고성능 인터커넥트 링크 계층
KR101298862B1 (ko) Pci 익스프레스를 통해 ⅰd 기반 스트림을 가능하게 하는 방법 및 장치
US11366773B2 (en) High bandwidth link layer for coherent messages
KR101865261B1 (ko) 입력 출력 데이터 정렬
US11593280B2 (en) Predictive packet header compression
EP4016309A1 (en) System, apparatus and method for handling multi-protocol traffic in data link layer circuitry
US9678904B2 (en) PCI express data transmission
US9753876B1 (en) Processing of inbound back-to-back completions in a communication system
US10275388B2 (en) Simultaneous inbound multi-packet processing
US10176135B2 (en) Multi-packet processing with ordering rule enforcement

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal