본문 바로가기

대학교시절

PCI Express™



PCI Express™



1. 개요


PCI Express는 다양한 미래 컴퓨팅과 통신 플랫폼을 위해 I/O 상호 연결을 할 것이다. 대역폭 한계는 늘어나고 병렬버스는 직렬 인터페이스로 대체되지만 소프트웨어 인터페이스나 그것의 모델 기법과 같은 PCI의 속성들은 그대로 유지 될 것이다. 분할 트랜잭션 프로토콜은 우선순위화 되어있다. 그들의 타겟에 전송되는 패킷이 최적화 되어 내부에 구현되어 있다. PCI Express는 PCI와 자연스러운 통합을 지원하고 새로운 시스템 형태를 사용하기 위해 우리는 다양한 형태의 요소를 이해해야 한다. 



2. 탄생 배경


기존의 PCI 버스는 지난 10년 동안 많은 것을 제공하였고 그것은 다음 몇 년에도 중요한 역할을 수행할 것이다. 오늘날 프로세서와 I/O 장치는 좀 더 높은 I/O 대역폭을 요구한다.


1990년대의 PCI signaling technology가 멀티 드롭, 병렬버스에 관하여 발표했다. 그리고 그 성능의 실제 한계에 인접 해 있다고 말했다. 전압을 내리거나 주파수를 올리는 조정을 쉽게 할 수 없었다. 


이러한 한계들을 밀어내고 더 높은 대역폭을 만들기 위해, 우리는 약간의 성능 이득을 위해서라면 큰 비용 증가도 마다하지 않았다. 범용 I/O 버스를 만들기 위해 모든 방법들을 접근하였습니다.


오늘날의 소프트웨어 어플리케이션들은 I/O 하위시스템 같은 플랫폼 하드웨어들을 더 많이 요구하고 있다. 오늘날의 데이터 속도 증가에 따라 플랫폼은 여러 개의 동시 전송을 처리를 가능하게 해야한다.



2. 최근 기술


빠른 속도, 낮은 핀 수, point to point 등의 최근의 기술 발전은 주요 대역폭 개선에 대한 매력적인 대안을 제공한다. 오늘의 플랫폼에서 여러 병렬 버스는 하나 이상의 레인을 갖춘 PCI Express Link로 대체된다. 그리고 각각 좀 더 많은 레인을 추가하여 각 Link를  확장한다. 서버 플랫폼에서의 추가 대역폭은 버스 브릿지나 그래픽카드와 같은 곳에 Link 하는데 적용된다. 


PCI Express 스위치는 fan-out의 수용성을 제공하고 고성능 I/O와 입력 작업을 위해 직렬 연결 방식을 제공한다. 


언제나 내가 구현 할 수 있는 논리적 요소를 스위치라고 한다. 스위치에는 호스트 다리로 또는 호스트 다리의 구성 요소 아니면 별도의 구성 요소로 구현 될 수 있다.



3. 구성


PCI 주소 모델과의 호환성은 모든 기존 응용 프로그램과 드라이버가 변경되지 않아도 작동하도록 유지된다. PCI Express 구성은 PCI Plug-and-Play에 정의 된 표준 메커니즘을 사용한다. Software Layer 은 읽기, 쓰기 요청을 발생한다. 그 요청은 Transaction Layer에서 패킷을 기반으로 한 split-transaction 프로토콜을 사용하여 I/O 장치에 전송이 된다. Link Layer 은 신뢰성 높은 데이터 전송 메커니즘을 만들기 위해 그 패킷에게 일렬 번호와 CRC를 추가한다. 처음 2.5Gb/s/direction의 속도는 예전 PCI 데이터 속도에 두 배에 근접한 200MB/s의 통신 채널을 제공한다. 각 Layer을 자세히 살펴보면 다음과 같습니다.


가. PHYSICAL LAYER


기본 PCI Express 두 개의 낮은 전압과  각기 다른 신호 쌍으로 구성된다. 그 신호는 전송신호와 수신신호이다. 데이터 클럭은 매우 높은 데이터 처리 속도를 위해 8b/10b 인코딩 방식 사용하고 있다. 초기 주파수는 2.5Gb/s/direction이며, 이것은  실리콘 기술 발전 의해 10Gb/s/direction까지 증가 할 것으로 예상한다. Physical Layer는 Link Layer와 두 개의 PCI Express Agent 사이에서 패킷들을 전송한다. Physical Layer는 X1, X2, X4, x8, x12, x32 레인들을 제공하고 byte data로 분할한다. 각 바이트는 레인에서 8b/10b 인코딩으로 전송된다. 이 data는 분할과 재조립방식으로 다른 레이어의 제한을 받지 않는다. 초기화하는 동안, 각 PCI Express 링크는 링크의 양쪽 끝에서 두 에이전트 작업 교섭에 따라 레인의 폭 및 주파수가 설정된다.


펌 웨어, 운영 체제 소프트웨어는 포함되지 않는다. PCI Express 아키텍처는 속도 업그레이드 및 고급 인코딩 기법을 통해 성능 향상을 이룬다.


미래에 속도, 기술 또는 미디어를 인코딩 것은 오로지 Physical Layer에만 영향을 미칠 것이다.


나. DATA LINK LAYER


LINK LAYER의 주요 역할은 PCI Express 링크에서 패킷 전달의 신뢰성을 보장하는 것이다. LINK LAYER는 데이터 무결성에 대한 책임을 지고, TRANSACTION LAYER 패킷에 순서 번호와 CRC를 추가한다. 대부분의 패킷들은 Transaction Layer에서 시작 된다.


신용에 기반을 둔  flow control 프로토콜은 어느 곳으로부터 버퍼가 이 패킷을 받는 것이 가능하다고 알 때 패킷 전송을 보장한다.


다. TRANSACTION LAYER


Transaction Layer는 Software Layer로 부터 읽기 및 쓰기 요청을 받고 Link Layer에 전송할 요청 패킷을 만든다. 모든 요청들은 분할 트랜젝션으로 구현되고 몇 개의 요청 패킷들은 응답 패킷을 필요 할 것이다. Transaction Layer는 Link Layer에서 응답 패킷을 받고 원래의 소프트웨어 요청에 연결한다.


각 패킷은 패킷을 만든이에게 응답을 보낼 수 있도록 고유한 식별자가 있다.


패킷 형식은 32 bit 메모리 주소방식 또는 확장된 64 비트 메모리 주소방식을 지원한다. 패킷은 또한 "no-snoop", "relaxed ordering" "priority" 와 같은 속성을 가지고 있고 이는 I/O 서브 시스템으로부터 온 패킷의 경로를 최적화 하는데 사용될 것이다.


Transaction Layer 4개의 주소공간을 지원한다. 그것은 세 개의 PCI 주소 공간과 하나의 메시지 공간을 포함한다. 


PCI Expresss는 인터럽트 처리와 메시지 공간의 사용을 위해 기본 방법으로 MSI의 개념을 재사용한다. 이는 인터럽트, 전력 관리 요청, 재설정 등 모든 앞의 측파대 신호를 지원할 것이다. 우리는 PCI Express Message를 가상 선으로 생각할 수 있다. 그것은 그들의 영향이 현재 플랫폼 구현에서 사용되는 측파대 신호의 넓은 집합을 제거할 것이기 때문이다.


라. S/W & OS


소프트웨어 호환성은 I/O 상호연결을 주 목적으로 하는 3새대에게 가장 중요하다. 상호 연결 호환성에게는 두 면이 있다. 첫 번째는 초기화하거나 열거하는 것이고 두 번 째는 사용시간이다.


PCI는 최적화된 시스템 환경을 만들기 위해 강력한 초기화 모델을 가진다. OS는 추가된 모든 하드웨어 장치를 발견할 수 있다. 그러면 메모리, I/O공간, 인터럽트과 같은 시스템 리소스 할당한다. 


PCI 구성공간과 I/O장치의 프로그램 작동가능 여부는  PCI Express 아키텍쳐에서 변하지 않는 핵심 개념이다.


사실, 모든 OS는 PCI Express 기반 플랫폼 위에서 수정 없이 부팅을 할 수 있을 것이다.


PCI에서 지원하는 런 타임 소프트웨어는 불러오기, 저장하기, 공유하기가 되는 메모리 모델이다. 이것들은 변화 없이 모든 존재하는 소프트웨어를 실행하는 것이 가능하기 위해 PCI Express 아키텍처를 유지한다. 새로운 소프트웨어는 새로운 기능을 사용할 것이다.


4. 기타


가. 기계적 개념


PCI Express 링크의 낮은 신호 수는 I/O 서브 시스템 설계에 대한 혁신적인 접근과 새로운 시스템 분할을 촉진하는 진화적인 접근을 가능하게 한다.


나. 작동 특성


PCI Express의 차별적인 point to point 연결은 아주 적은 신호들을 사용하여 매우 빠른 상호연결을 제공한다.

그것의 메시지 공간은 모든 앞의 측파대 신호들을 제거하여 최소의 내부 신호를 결과로 갖는다. PCI Express의 100MB/s/pin은 필요한 대역폭에서 낮은 비용 구현으로 바뀌는 것을 가능하게 한다.