설계 PCI Express의 필요성과 목적
페이지 정보
작성자 ATSRO 댓글 0건 조회 10,022회 작성일 19-10-11 14:31본문
PCI Express의 필요성과 목적
PCI가 가진 한계의 돌파
PCI Express는 기본적으로 PCI가 가지는 한계점을 돌파하기 위해서 제안되었다. 이러한 한계점을 어떻게 돌파할 수 있는가를 생각해보자.
의외로 방법은 간단하다. 바로 직렬연결기술을 사용하는 것이다. 이미 필자의 많은 글에서도 보았듯, 고속의 데이터 전송이 필요한 곳에서 직렬연결기술은 그 입지를 지속적으로 넓혀가고 있다. I/O 버스에서도 마찬가지로 하이퍼트랜스포트와 같은 직렬연결기술이 등장하고 있는데, PCI Express도 예외는 아니다. 어떻게 보면 PCI Express는 하이퍼트랜스포트와 대단히 유사하다.
우선, PCI는 병렬 신호전송방식으로 인하여 신호왜곡에 대단히 취약하다. 이 때문에 클럭주파수를 향상시키기가 매우 까다롭다. 직렬연결기술은 이 문제를 간단히 해소한다. 직렬전송방식으로 바꾸면서 버스 폭을 줄이고 동작주파수를 높이는 것은 이미 RDRAM과 시리얼 ATA 등에서 보아온 방식이다.
이로 인해서 까다로운 라우팅 룰이 단순해지며, 이는 회로의 단순화로 이어진다. 물론, 이 뿐만 아니라 이전에 언급했던 직렬전송기술의 장점도 이어받을 수 있다.
제한된 대역폭의 다양화도 보다 쉽게 이루어진다. 이것은 하이퍼트랜스포트를 상기하면 쉽게 이해할 수 있다. PCI Express는 기본적으로는 하이퍼트랜스포트와 상당히 유사한 직렬전송방식이며, 최소 200MB/s에서 최대 6.4GB/s까지의 대역폭을 구현한다. 따라서 다양한 주변기기에 대응할 수 있게 된다.
PCI의 구조를 그대로 계승하면서 최대 6.4GB/s의 높은 대역폭을 구현할 수 있기 때문에 결과적으로 상당히 다양화되어 있는 많은 인터페이스 종류를 통합할 수 있게 된다. 예를 들어서 AGP의 경우 PCI가 가지는 한계로 인해서 독자적으로 그래픽 코어와 시스템의 메모리 브릿지간을 이어주는 일종의 고속 P2P 포트를 구성한 것인데, PCI Express는 높은 데이터 전송률과 함께, P2P 방식의 직렬연결로 구성되기 때문에 AGP를 대체할 수 있다.(물론, AGP는 그 외의 특징도 다수 가지고 있으며, 현재 PCI Express가 적용될 것이라는 확답도 나오지 않은 상태이기 때문에 AGP가 PCI Express로 대체될 가능성은 적다고 보아야 한다.)
PCI Express의 목표와 하이퍼트랜스포트와의 차이
PCI Express가 달성하고자 하는 목표 역시 하이퍼트랜스포트와 매우 유사하다. 하지만 상당부분에서 하이퍼트랜스포트와는 다른모습을 보인다. 다음의 내용을 보자.
•첫째, 저가격 대량생산을 지향한다. 즉, PCI Express가 특별한 고성능/고가의 시스템이 아닌, 일반 사용자용 시스템을 비롯한 모든 범위의 시스템에 적용되기 위해서 제안된 것임을 의미한다. 이는 PCI-X와 확연히 다른 부분이다. PCI-X가 고속의 인터페이스를 바탕으로 서버 등에서 사용되는 어플리케이션에 초점을 맞추고 있는 것과는 분명 틀리다.
•두번째, 데스크탑, 모바일 PC, 서버, 통신장비 등에서 사용되는 규격을 단일화한다. 즉, 첫번째 목표와 맥락을 같이하는 것이다. 이로써 다양한 장비와 분야에 사용되는 주변기기를 통일할 수 있어서 각종 주변기기의 제작을 더욱 용이하게 할 수 있다.
•세번째, PCI와의 소프트웨어 호환성을 유지한다. 병렬연결에서 직렬연결로 전환되었기 때문에 물리적 호환성을 유지하는 것은 불가능하다. 그러나 소프트웨어적인 호환성을 유지함으로써 기존의 운영체제나 설정/디바이스 드라이버 인터페이스를 그대로 보존할 수 있어서 PCI에서 PCI Express로의 이행을 보다 유연하게 한다.
•네번째, 전력관리 및 핫플러깅 등의 진보된 기능을 탑재한다. 특히 핫플러깅은 새로이 등장하는 I/O 버스들에는 필수적으로 따라붙는 것이며, 전력관리 기능은 모바일 시스템에서의 잇점을 고려한 것이라고 생각할 수 있다.
•다섯째, 다양한 성능을 제공함으로써 다종다양한 하드웨어에 적절히 대응한다. 이는 앞서 설명한 내용과 같다. 이와 더불어 핀(pin)당 대역폭을 증가시켜서 소수의 핀으로도 높은 대역폭을 구성할 수 있게 만들면서 적은 오버헤드 및 레이턴시만을 가지도록 하여서 최대한의 성능을 추구한다.
•칩간의 연결(chip to chip) 및 보드간 연결(board to board), 그리고 도킹 시스템을 통한 연결 등이 고려되고 있다.
마지막 항목을 제외하면 하이퍼트랜스포트와 매우 유사하다. 하이퍼트랜스포트는 칩간 연결을 위해서 만들어진 것이며 보드 외부로의 연결은 고려되고 있지 않다. 그러나 PCI Express는 보드간 연결을 비롯하여 도킹 시스템을 통한 연결까지도 가능하다. 또한, 다음과 같은 점에서 하이퍼트랜스포트와는 큰 차이점을 보여준다.
•프로세서를 위한 동시성 상호연결기술을 지원하지 않는다.
•메모리 연결용 버스로 사용되지 않는다.
•클러스터 시스템 구성을 위한 케이블 연결을 지원한다.
하이퍼트랜스포트와 연관지어 생각해보자. 하이퍼트랜스포트는 기본적으로 보드 내의 칩간연결만을 지원하는 고속의 직렬 버스 방식이다. 그 과정에서 프로세서와 메모리까지도 하이퍼트랜스포트로 연결되며, 특히 다수의 프로세서 사이에는 cHT로 연결되어서 프로세서의 캐시 동시성 문제를 해결하고 있다.
이것은 인텔이 프로세서 버스를 변경할 의사가 없음을 방증한다. 인텔이 주도적으로 밀고 있는 PCI Express는 프로세서와는 무관하게 각 브릿지부터 연결이 시작된다. 프로세서는 현재의 AGTL+ 버스의 연장선상에 있는 버스구조로 연결될 것이다.
한편, PCI Express에는 '클러스터링을 위한 케이블 연결'이 포함되어 있다. 이것은 인텔의 프로세서가 AGTL+ 버스구조를 고수함으로써 빚어지는 다수의 프로세싱 환경에서의 불리함을 극복하기 위한 것이다. AGTL+ 버스구조는 기본적으로 셰어드 버스이다. 그렇기 때문에 다수의 프로세서가 하나의 버스를 공유하며, 프로세서가 많아질수록 버스의 효율성은 저하된다. 이러한 이유로, 인텔 프로세서를 사용한 시스템은 단일 시스템에서 4개를 초과하는 프로세서를 사용하는 경우가 거의 없고 그 이상의 프로세서를 사용한 병렬처리를 위해서는 클러스터링이 필수적이다.
PCI Express는 클러스터링을 위한 '단거리의 고속 외부 케이블 연결'을 지원함으로써 대규모 시스템에 AMD의 하이퍼트랜스포트와는 다른 방법으로 대응하고 있다.
PCI Express의 기술적 특징
PCI Layer와 호환성의 유지
PCI Express는 다음과 같은 5개 계층을 갖는다.
여기서, PCI가 PCI Express로 변화되면서 변경이 가해지는 부분은 Transaction(변환), Data Link(연결), Physical(물리적) 계층 뿐이다. 그 위의 S/W 계층을 비롯하여 Config/OS 계층은 변화하지 않는다. 그 결과, PCI Express는 기존의 운영체제와 디바이스 드라이버를 그대로 유지하면서 동작한다. 인텔은 인텔 개발자 포럼에서 Windows XP에 별도의 드라이버 추가/변경 등이 없이 그대로 PCI Express를 사용할 수 있도록 만들겠다고 하였는데, 이것은 바로 S/W 및 Config/OS 레이어가 그대로 유지됨으로써 가능해진다.
그 아래의 변환 계층부터는 PCI Express의 특징을 극명하게 드러내고 있다. 간단히 살펴보면 변환 계층에서는 패킷 단위의 전송을 할 수 있도록 데이터 패킷을 형성하고 이를 연결 계층으로 전달한다. 그리고 연결 계층에서 데이터 신뢰도를 위한 CRC 코드를 삽입한 후 물리적 계층에서 8b/10b 인코딩이 이루어지고 전송된다. 흔히 이야기하는 거의 모든 특징은 물리적 계층에 집중되어 있다고 보아도 좋다.
패킷의 생성과 데이터의 전달
변환 계층(Transaction Layer)에서 만들어내는 데이터 패킷은 헤더와 데이터로 구성되어 있다. 이 패킷이 연결 계층(Data Link Layer)로 들어가면 변환 계층에서 만들어낸 패킷의 앞뒤에 패킷의 순서를 정한 번호와 CRC 코드가 덧붙여진다. 그리고 이것이 물리적 계층으로 옮겨지면 그 앞뒤로 프레임이 붙어서 PCI Express 버스를 통해서 전달될 데이터 패킷이 완성된다.
물리적 계층에서는 연결 계층을 통해 전달받은 패킷을 직렬화(serialize)한다. 이 때 사용되는 것이 8b/10b 인코딩 스킴으로써, 이에 대해서는 Serial ATA 강좌에서 언급한 바 있다.
관련강좌보기 : Serial ATA에 적용된 기술과 물리적 특징
변환 계층에서의 헤더, 연결 계층에서의 패킷순서번호, CRC 데이터, 물리적 계층에서의 프레임 및 8b/10b 인코딩 과정에서의 제어코드와 인코딩 과정으로 인해서 전달되는 데이터는 실제 데이터에 비해서 상당히 늘어난다. 그래서 PCI Express는 초기에 2.5GHz의 클럭으로 동작하는데, 실제 데이터 전송속도는 핀당 100MB/s가 된다.
다양한 대역폭의 확보
PCI Express는 하이퍼트랜스포트와 마찬가지로 듀얼 심플렉스(Dual Simplex) 방식의 버스이다.
듀얼 심플렉스라는 것은 단방향으로의 데이터버스가 2개 1조로 구성되어, 하나의 버스는 데이터를 보내는데에만, 다른 하나의 버스는 데이터를 받는 데에만 사용되는 방식을 지칭한다. 즉, PCI Express는 기본적으로 2개의 데이터 전달 통로(lane)를 갖는다.
PCI Express의 동작클럭이 2.5GHz로, 하나의 통로에서는 100MB/s의 대역폭을 갖게 되므로, PCI Express가 가질 수 있는 최소의 데이터 전송 대역폭은 200MB/s라는 이야기가 된다. 이것만으로도 현존하는 32bit PCI가 가지는 133MB/s를 50%정도 상회하는 것이다. 또한 규격상으로 PCI Express는 1X, 2X, 4X, 8X, 12X, 16X, 32X의 전달 통로 폭을 갖는다. 이 경우의 데이터 전송 대역폭은 다음과 같다.
단방향 데이터 전송폭
양방향 데이터 전송폭
1X
100MB/s
200MB/s
2X
200MB/s
400MB/s
4X
400MB/s
800MB/s
8X
800MB/s
1,600MB/s
12X
1,200MB/s
2,400MB/s
16X
1,600MB/s
3,200MB/s
32X
3,200MB/s
6,400MB/s
32X의 PCI Express는 최대 6.4GB/s의 데이터 전송폭을 갖는다. 이것은 AGP 8X의 2.1GB/s를 200% 이상 상회하는 것이며, PCI보다는 무려 50배에 가까운 것이다. 따라서, 현존하는 어떠한 주변기기의 대역폭도 무리없이 소화해낼 수 있다.
직렬전송에서의 특징과 토폴로지
그런데, 하이퍼트랜스포트와 마냥 똑같지만은 않다. 하이퍼트랜스포트, PCI Express 모두 P2P 토폴로지를 가지지만, 하이퍼트랜스포트의 경우 P2P 토폴로지 상에서 터널 및 브릿지-터널 등의 구조를 허용하고 있어서 사실상 트리(tree)구조의 형성이 가능하다. 그러나 PCI Express는 순수한 P2P 형태의 구성만이 가능하다는 차이점을 가진다. 다음의 일러스트는 하이퍼트랜스포트의 P2P와 PCI Express의 P2P가 어떠한 차이를 가지는가를 단적으로 보여준다.
하이퍼트랜스포트에서의 버스구성
PCI Express에서의 버스구성
이러한 특징 때문에, PCI Express에서는 하이퍼트랜스포트와는 약간 다른 방법으로 하위 하드웨어들의 트리구조를 형성한다. 바로 '스위치(switch)'를 이용하는 것이다.
스위치는 일종의 분배기, 또는 허브라고 생각하면 정확하다. 스위치 아래쪽으로는 각종 주변기기들이 PCI Express를 통해서 물려 있고, 스위치는 호스트 브릿지에 보다 고속의 PCI Express로 연결되어 있다. 이러한 구조를 통해서 PCI Express의 트리구조는 형성된다.
PCI SIG에서 2003년에 등장하리라고 예상하고 있는 시스템들의 간단한 토폴로지를 살펴보자.
1. 데스크탑 모바일 PC에서의 PCI Express(3GIO) 적용
2. 서버/웍스테이션에서의 PCI Express 적용
3. 네트웍 통신장비에서의 PCI Express 적용
스위치 적용 구조를 통해 PCI Express는 높은 확장성과 함께 높은 I/O 성능을 보장받는다. 여기서의 스위치는 호스트 브릿지 안에 집적될 수 있는 논리적 요소이지만, 별도의 구성요소로 존재할 수도 있다. PCI Express와 PCI가 공존하는 까닭은 낮은 대역폭만을 요구하는 다양한 장비들 및 기존의 PCI 주변기기들의 사용자를 보호하기 위함이지만, 시간이 흐르게 되면 PCI Express로 대체될 것이다.
서버의 경우 PCI Express가 PCI-X의 상위개념으로써 존재하며, 내부적으로는 PCI Express와 PCI/PCI-X를, 외부적으로는 인피니밴드를 사용하게 된다. 네트웍장비에서는 여러가지 트래픽 타입에 따라 다수의 스위치를 사용하여 전체적인 트래픽 소통을 최적화할 수 있다.
인터페이스
PCI Express가 하이퍼트랜스포트와 다른 가장 큰 차이점은 역시 보드간 연결(board-to-board)을 지원한다는 것이다. 하이퍼트랜스포트는 CPU와 메모리, 호스트 브릿지에 중심을 둔 칩간 연결 버스의 특성을 강하게 띄고 있지만, PCI Express는 현존하는 PCI를 그대로 승계하여, 스위치를 사용한 다수의 주변기기 연결을 중시하는 고속의 보드간 직렬연결 버스의 성격이 강하다.
그래서, PCI Express에서는 외부 인터페이스의 형태도 고려되고 있다. 물론 이것은 기존의 PCI와의 호환성을 어느정도 유지하는 선에서의 고려이기에 다음과 같은 형태로 구분된다.
1. 저속의 PCI Express 인터페이스 구성
내장형 PCI Express 인터페이스는 기본적으로 현존하는 PCI와 같은 폼팩터를 기준으로 만들어진다. 즉, 일반적인 PCI 카드의 크기 뿐만 아니라 LP(Low Profile) 타입의 작은 형태로도 만들어진다. 다만, 슬롯의 형태는 위 일러스트와 같이 변경된다.
저속의 PCI Express를 위해서는 기존의 PCI 커넥터 앞쪽으로 작은 PCI Express 커넥터만이 추가된다. 적은 수의 핀만을 사용해도 무방하기 때문에 커넥터의 크기는 상당히 작아서, PCI 슬롯의 앞쪽 좁은 공간에 들어간다. 따라서, 같은 자리에 기존의 PCI도 사용할 수 있으며, 필요에 따라 PCI Express를 지원하는 주변기기 역시 사용할 수 있다.
여기에는 각방향 1~2개의 통로를 가지는 PCI Express가 사용될 수 있으며, 그 속도는 200~400MB/s가 된다.
2. 고속의 PCI Express 인터페이스 구성
그보다 빠른 속도를 가지는 인터페이스, 예를 들어서 그래픽카드 등을 위해서는 4개 이상의 각방향 통로를 가지는 버스, 즉 800MB/s 이상의 데이터 전송 대역폭이 필요하다. 이를 위해 별도의 PCI Express 슬롯이 존재한다. 이것은 PCI 슬롯 앞쪽에 위치하는 저속 PCI Express 슬롯보다는 크지만, 현재의 AGP 슬롯보다도 작은 크기를 가지게 된다.
3. 외장 장치를 위한 PCI Express 인터페이스
PCI Express로 변화하면서 가장 눈에 띄게 변할 부분은 바로 이 외장 PCI Express의 지원이다. 현재까지의 PCI 버스는 시스템 외부로는 뻗어나올 수 없었다. 넓은 버스폭으로 인한 데이터 왜곡과 멀티드랍 방식의 동기화 문제 때문이었다. 그러나 PCI Express는 P2P 연결로써 동기화를 절실히 요하지 않으며, 직렬전송이기 때문에 데이터 왜곡으로부터 어느정도 자유롭다.
그래서 PCI Express는 외장 장치의 제작이 가능해진다. 기존에는 SCSI나 USB, IEEE1394 등의 다른 인터페이스를 통해서 외부 장치를 사용해야 했으나 PCI Express 부터는 직접 외부 장치를 사용하는 것이 가능해진다. 즉, 외부 사운드카드나 TV 캡춰/인코딩 유닛 등이 직접 PCI Express에 연결되기 때문에 낮은 대역폭으로 인한 한계가 사라지고 다양한 외장 유닛들이 등장할 수 있다.
4. 노트북 등의 모바일 기기를 위한 PCI Express 인터페이스
모바일 시스템에서도 변화가 일어난다. 노트북에 무슨 PCI 슬롯이냐고 할지 모르지만, 노트북 등에도 분명히 PCI 슬롯이 존재한다. 이것은 miniPCI라는 것으로, 주로 네트웍 어댑터나 모뎀 등이 장착된다.
현재의 미니 PCI는 상당히 큰 커넥터를 가지고 있어서 공간적인 문제가 절실한 노트북 등에서 상당한 공간을 차지한다. 그러나 이것이 PCI Express로 변경되면 큰 커넥터 대신 매우 작은 크기의 커넥터를 사용할 수 있어서 차지하는 공간이 줄어들며, 또한 케이블링이 가능해지기 때문에 배치의 유연성도 훨씬 높아져서 노트북을 설계하는 디자이너들에게 기존보다 훨씬 높은 자유도를 부여하고 보다 작고 가벼운 노트북을 만들 수 있도록 해준다.
하이퍼트랜스포트와 PCI Express, 3세대 I/O의 미래
지금까지 1, 2세대 IO와 함께 3세대 IO인 하이퍼트랜스포트, 그리고 PCI Express에 대해서 알아보았다. 여기서 우리는 PCI Express나 하이퍼트랜스포트를 떠나서라도, 직렬전송기술이 대세로 자리잡고 있음을 알 수 있었다. RDRAM으로 시작된 직렬전송기술은 이후 USB, IEEE1394 등으로 다양한 분야로 모습을 드러내었고, 시리얼 ATA와 함께 본격적으로 적용되기 시작하였다. 그리고 하이퍼트랜스포트와 PCI Express를 바탕으로 시스템의 주축으로써 자리잡게 되는 것이다.
PCI Express와 하이퍼트랜스포트는 대단히 유사한 버스방식이지만, 각각이 포함하고 있는 범주에서 약간의 차이를 보이며, 이것은 곳 사용되는 용도의 차이로 이어진다.
하이퍼트랜스포트가 해머 아키텍쳐의 차세대 프로세서를 위한, 프로세서와 메모리, 호스트 브릿지간의 데이터 전송구조에 무게를 싣고 있다면, PCI Express는 주변기기를 위한 고속의 인터페이스, 그리고 '고속의 단거리 외부 버스'라는 의미에 중심이 실려 있다. 즉, PCI Express와 하이퍼트랜스포트가 정면대결로 인해 어느 한쪽만이 살아남는 일은 없으리라는 것이 필자의 생각이다.
현재까지는 하이퍼트랜스포트쪽에 조금 더 무게가 실리고 있는 듯한 느낌이다.(어찌되었던 하이퍼트랜스포트가 적용된 시스템은 곧 등장할 예정이지만, PCI Express는 2003년 하반기에 등장한다고 하니까..) 하지만, 하이퍼트랜스포트는 새로이 구성된 컨소시움을 통해서 만들어진것임에 반해서, PCI Express는 십여년의 역사를 가지고 있는 PCI SIG에서 제정/지원하고 있다는 점에서는 PCI Express가 잇점을 가지고 있다.
이상적인 경우라면 CPU와 메모리, 호스트브릿지 등의 시스템의 '축'이 하이퍼트랜스포트로 구성되고, 외부연결 및 각종 확장카드 연결이 PCI Express가 되는 것이라고 할 수 있겠는데, 이를 위해서 AMD와 인텔이 손을 잡을지는 의문이다.(VIA나 SiS 등의 업체에서는 저런 구성이 등장할 가능성이 농후하다)
프로세서에 이어서 차세대 I/O 버스로까지 이어지고 있는 인텔과 AMD의 대결구도라고도 할 수 있는 PCI Express와 하이퍼트랜스포트의 입지경쟁은 완전히 동등한 입장과 배경에서의 경쟁이 아니기에 뚜렷하게 승패가 갈리지는 않겠지만, 아직까지 완벽히 정해진 것이 없기에 이러한 상황이 어떻게 변할 것인가에 대해서는 지켜보는 수밖에 없을 것이다. 어찌되었건 가장 좋은건 Win-WIn이 아닐까
출처: http://cafe.naver.com/gusigi/11
PCI가 가진 한계의 돌파
PCI Express는 기본적으로 PCI가 가지는 한계점을 돌파하기 위해서 제안되었다. 이러한 한계점을 어떻게 돌파할 수 있는가를 생각해보자.
의외로 방법은 간단하다. 바로 직렬연결기술을 사용하는 것이다. 이미 필자의 많은 글에서도 보았듯, 고속의 데이터 전송이 필요한 곳에서 직렬연결기술은 그 입지를 지속적으로 넓혀가고 있다. I/O 버스에서도 마찬가지로 하이퍼트랜스포트와 같은 직렬연결기술이 등장하고 있는데, PCI Express도 예외는 아니다. 어떻게 보면 PCI Express는 하이퍼트랜스포트와 대단히 유사하다.
우선, PCI는 병렬 신호전송방식으로 인하여 신호왜곡에 대단히 취약하다. 이 때문에 클럭주파수를 향상시키기가 매우 까다롭다. 직렬연결기술은 이 문제를 간단히 해소한다. 직렬전송방식으로 바꾸면서 버스 폭을 줄이고 동작주파수를 높이는 것은 이미 RDRAM과 시리얼 ATA 등에서 보아온 방식이다.
이로 인해서 까다로운 라우팅 룰이 단순해지며, 이는 회로의 단순화로 이어진다. 물론, 이 뿐만 아니라 이전에 언급했던 직렬전송기술의 장점도 이어받을 수 있다.
제한된 대역폭의 다양화도 보다 쉽게 이루어진다. 이것은 하이퍼트랜스포트를 상기하면 쉽게 이해할 수 있다. PCI Express는 기본적으로는 하이퍼트랜스포트와 상당히 유사한 직렬전송방식이며, 최소 200MB/s에서 최대 6.4GB/s까지의 대역폭을 구현한다. 따라서 다양한 주변기기에 대응할 수 있게 된다.
PCI의 구조를 그대로 계승하면서 최대 6.4GB/s의 높은 대역폭을 구현할 수 있기 때문에 결과적으로 상당히 다양화되어 있는 많은 인터페이스 종류를 통합할 수 있게 된다. 예를 들어서 AGP의 경우 PCI가 가지는 한계로 인해서 독자적으로 그래픽 코어와 시스템의 메모리 브릿지간을 이어주는 일종의 고속 P2P 포트를 구성한 것인데, PCI Express는 높은 데이터 전송률과 함께, P2P 방식의 직렬연결로 구성되기 때문에 AGP를 대체할 수 있다.(물론, AGP는 그 외의 특징도 다수 가지고 있으며, 현재 PCI Express가 적용될 것이라는 확답도 나오지 않은 상태이기 때문에 AGP가 PCI Express로 대체될 가능성은 적다고 보아야 한다.)
PCI Express의 목표와 하이퍼트랜스포트와의 차이
PCI Express가 달성하고자 하는 목표 역시 하이퍼트랜스포트와 매우 유사하다. 하지만 상당부분에서 하이퍼트랜스포트와는 다른모습을 보인다. 다음의 내용을 보자.
•첫째, 저가격 대량생산을 지향한다. 즉, PCI Express가 특별한 고성능/고가의 시스템이 아닌, 일반 사용자용 시스템을 비롯한 모든 범위의 시스템에 적용되기 위해서 제안된 것임을 의미한다. 이는 PCI-X와 확연히 다른 부분이다. PCI-X가 고속의 인터페이스를 바탕으로 서버 등에서 사용되는 어플리케이션에 초점을 맞추고 있는 것과는 분명 틀리다.
•두번째, 데스크탑, 모바일 PC, 서버, 통신장비 등에서 사용되는 규격을 단일화한다. 즉, 첫번째 목표와 맥락을 같이하는 것이다. 이로써 다양한 장비와 분야에 사용되는 주변기기를 통일할 수 있어서 각종 주변기기의 제작을 더욱 용이하게 할 수 있다.
•세번째, PCI와의 소프트웨어 호환성을 유지한다. 병렬연결에서 직렬연결로 전환되었기 때문에 물리적 호환성을 유지하는 것은 불가능하다. 그러나 소프트웨어적인 호환성을 유지함으로써 기존의 운영체제나 설정/디바이스 드라이버 인터페이스를 그대로 보존할 수 있어서 PCI에서 PCI Express로의 이행을 보다 유연하게 한다.
•네번째, 전력관리 및 핫플러깅 등의 진보된 기능을 탑재한다. 특히 핫플러깅은 새로이 등장하는 I/O 버스들에는 필수적으로 따라붙는 것이며, 전력관리 기능은 모바일 시스템에서의 잇점을 고려한 것이라고 생각할 수 있다.
•다섯째, 다양한 성능을 제공함으로써 다종다양한 하드웨어에 적절히 대응한다. 이는 앞서 설명한 내용과 같다. 이와 더불어 핀(pin)당 대역폭을 증가시켜서 소수의 핀으로도 높은 대역폭을 구성할 수 있게 만들면서 적은 오버헤드 및 레이턴시만을 가지도록 하여서 최대한의 성능을 추구한다.
•칩간의 연결(chip to chip) 및 보드간 연결(board to board), 그리고 도킹 시스템을 통한 연결 등이 고려되고 있다.
마지막 항목을 제외하면 하이퍼트랜스포트와 매우 유사하다. 하이퍼트랜스포트는 칩간 연결을 위해서 만들어진 것이며 보드 외부로의 연결은 고려되고 있지 않다. 그러나 PCI Express는 보드간 연결을 비롯하여 도킹 시스템을 통한 연결까지도 가능하다. 또한, 다음과 같은 점에서 하이퍼트랜스포트와는 큰 차이점을 보여준다.
•프로세서를 위한 동시성 상호연결기술을 지원하지 않는다.
•메모리 연결용 버스로 사용되지 않는다.
•클러스터 시스템 구성을 위한 케이블 연결을 지원한다.
하이퍼트랜스포트와 연관지어 생각해보자. 하이퍼트랜스포트는 기본적으로 보드 내의 칩간연결만을 지원하는 고속의 직렬 버스 방식이다. 그 과정에서 프로세서와 메모리까지도 하이퍼트랜스포트로 연결되며, 특히 다수의 프로세서 사이에는 cHT로 연결되어서 프로세서의 캐시 동시성 문제를 해결하고 있다.
이것은 인텔이 프로세서 버스를 변경할 의사가 없음을 방증한다. 인텔이 주도적으로 밀고 있는 PCI Express는 프로세서와는 무관하게 각 브릿지부터 연결이 시작된다. 프로세서는 현재의 AGTL+ 버스의 연장선상에 있는 버스구조로 연결될 것이다.
한편, PCI Express에는 '클러스터링을 위한 케이블 연결'이 포함되어 있다. 이것은 인텔의 프로세서가 AGTL+ 버스구조를 고수함으로써 빚어지는 다수의 프로세싱 환경에서의 불리함을 극복하기 위한 것이다. AGTL+ 버스구조는 기본적으로 셰어드 버스이다. 그렇기 때문에 다수의 프로세서가 하나의 버스를 공유하며, 프로세서가 많아질수록 버스의 효율성은 저하된다. 이러한 이유로, 인텔 프로세서를 사용한 시스템은 단일 시스템에서 4개를 초과하는 프로세서를 사용하는 경우가 거의 없고 그 이상의 프로세서를 사용한 병렬처리를 위해서는 클러스터링이 필수적이다.
PCI Express는 클러스터링을 위한 '단거리의 고속 외부 케이블 연결'을 지원함으로써 대규모 시스템에 AMD의 하이퍼트랜스포트와는 다른 방법으로 대응하고 있다.
PCI Express의 기술적 특징
PCI Layer와 호환성의 유지
PCI Express는 다음과 같은 5개 계층을 갖는다.
여기서, PCI가 PCI Express로 변화되면서 변경이 가해지는 부분은 Transaction(변환), Data Link(연결), Physical(물리적) 계층 뿐이다. 그 위의 S/W 계층을 비롯하여 Config/OS 계층은 변화하지 않는다. 그 결과, PCI Express는 기존의 운영체제와 디바이스 드라이버를 그대로 유지하면서 동작한다. 인텔은 인텔 개발자 포럼에서 Windows XP에 별도의 드라이버 추가/변경 등이 없이 그대로 PCI Express를 사용할 수 있도록 만들겠다고 하였는데, 이것은 바로 S/W 및 Config/OS 레이어가 그대로 유지됨으로써 가능해진다.
그 아래의 변환 계층부터는 PCI Express의 특징을 극명하게 드러내고 있다. 간단히 살펴보면 변환 계층에서는 패킷 단위의 전송을 할 수 있도록 데이터 패킷을 형성하고 이를 연결 계층으로 전달한다. 그리고 연결 계층에서 데이터 신뢰도를 위한 CRC 코드를 삽입한 후 물리적 계층에서 8b/10b 인코딩이 이루어지고 전송된다. 흔히 이야기하는 거의 모든 특징은 물리적 계층에 집중되어 있다고 보아도 좋다.
패킷의 생성과 데이터의 전달
변환 계층(Transaction Layer)에서 만들어내는 데이터 패킷은 헤더와 데이터로 구성되어 있다. 이 패킷이 연결 계층(Data Link Layer)로 들어가면 변환 계층에서 만들어낸 패킷의 앞뒤에 패킷의 순서를 정한 번호와 CRC 코드가 덧붙여진다. 그리고 이것이 물리적 계층으로 옮겨지면 그 앞뒤로 프레임이 붙어서 PCI Express 버스를 통해서 전달될 데이터 패킷이 완성된다.
물리적 계층에서는 연결 계층을 통해 전달받은 패킷을 직렬화(serialize)한다. 이 때 사용되는 것이 8b/10b 인코딩 스킴으로써, 이에 대해서는 Serial ATA 강좌에서 언급한 바 있다.
관련강좌보기 : Serial ATA에 적용된 기술과 물리적 특징
변환 계층에서의 헤더, 연결 계층에서의 패킷순서번호, CRC 데이터, 물리적 계층에서의 프레임 및 8b/10b 인코딩 과정에서의 제어코드와 인코딩 과정으로 인해서 전달되는 데이터는 실제 데이터에 비해서 상당히 늘어난다. 그래서 PCI Express는 초기에 2.5GHz의 클럭으로 동작하는데, 실제 데이터 전송속도는 핀당 100MB/s가 된다.
다양한 대역폭의 확보
PCI Express는 하이퍼트랜스포트와 마찬가지로 듀얼 심플렉스(Dual Simplex) 방식의 버스이다.
듀얼 심플렉스라는 것은 단방향으로의 데이터버스가 2개 1조로 구성되어, 하나의 버스는 데이터를 보내는데에만, 다른 하나의 버스는 데이터를 받는 데에만 사용되는 방식을 지칭한다. 즉, PCI Express는 기본적으로 2개의 데이터 전달 통로(lane)를 갖는다.
PCI Express의 동작클럭이 2.5GHz로, 하나의 통로에서는 100MB/s의 대역폭을 갖게 되므로, PCI Express가 가질 수 있는 최소의 데이터 전송 대역폭은 200MB/s라는 이야기가 된다. 이것만으로도 현존하는 32bit PCI가 가지는 133MB/s를 50%정도 상회하는 것이다. 또한 규격상으로 PCI Express는 1X, 2X, 4X, 8X, 12X, 16X, 32X의 전달 통로 폭을 갖는다. 이 경우의 데이터 전송 대역폭은 다음과 같다.
단방향 데이터 전송폭
양방향 데이터 전송폭
1X
100MB/s
200MB/s
2X
200MB/s
400MB/s
4X
400MB/s
800MB/s
8X
800MB/s
1,600MB/s
12X
1,200MB/s
2,400MB/s
16X
1,600MB/s
3,200MB/s
32X
3,200MB/s
6,400MB/s
32X의 PCI Express는 최대 6.4GB/s의 데이터 전송폭을 갖는다. 이것은 AGP 8X의 2.1GB/s를 200% 이상 상회하는 것이며, PCI보다는 무려 50배에 가까운 것이다. 따라서, 현존하는 어떠한 주변기기의 대역폭도 무리없이 소화해낼 수 있다.
직렬전송에서의 특징과 토폴로지
그런데, 하이퍼트랜스포트와 마냥 똑같지만은 않다. 하이퍼트랜스포트, PCI Express 모두 P2P 토폴로지를 가지지만, 하이퍼트랜스포트의 경우 P2P 토폴로지 상에서 터널 및 브릿지-터널 등의 구조를 허용하고 있어서 사실상 트리(tree)구조의 형성이 가능하다. 그러나 PCI Express는 순수한 P2P 형태의 구성만이 가능하다는 차이점을 가진다. 다음의 일러스트는 하이퍼트랜스포트의 P2P와 PCI Express의 P2P가 어떠한 차이를 가지는가를 단적으로 보여준다.
하이퍼트랜스포트에서의 버스구성
PCI Express에서의 버스구성
이러한 특징 때문에, PCI Express에서는 하이퍼트랜스포트와는 약간 다른 방법으로 하위 하드웨어들의 트리구조를 형성한다. 바로 '스위치(switch)'를 이용하는 것이다.
스위치는 일종의 분배기, 또는 허브라고 생각하면 정확하다. 스위치 아래쪽으로는 각종 주변기기들이 PCI Express를 통해서 물려 있고, 스위치는 호스트 브릿지에 보다 고속의 PCI Express로 연결되어 있다. 이러한 구조를 통해서 PCI Express의 트리구조는 형성된다.
PCI SIG에서 2003년에 등장하리라고 예상하고 있는 시스템들의 간단한 토폴로지를 살펴보자.
1. 데스크탑 모바일 PC에서의 PCI Express(3GIO) 적용
2. 서버/웍스테이션에서의 PCI Express 적용
3. 네트웍 통신장비에서의 PCI Express 적용
스위치 적용 구조를 통해 PCI Express는 높은 확장성과 함께 높은 I/O 성능을 보장받는다. 여기서의 스위치는 호스트 브릿지 안에 집적될 수 있는 논리적 요소이지만, 별도의 구성요소로 존재할 수도 있다. PCI Express와 PCI가 공존하는 까닭은 낮은 대역폭만을 요구하는 다양한 장비들 및 기존의 PCI 주변기기들의 사용자를 보호하기 위함이지만, 시간이 흐르게 되면 PCI Express로 대체될 것이다.
서버의 경우 PCI Express가 PCI-X의 상위개념으로써 존재하며, 내부적으로는 PCI Express와 PCI/PCI-X를, 외부적으로는 인피니밴드를 사용하게 된다. 네트웍장비에서는 여러가지 트래픽 타입에 따라 다수의 스위치를 사용하여 전체적인 트래픽 소통을 최적화할 수 있다.
인터페이스
PCI Express가 하이퍼트랜스포트와 다른 가장 큰 차이점은 역시 보드간 연결(board-to-board)을 지원한다는 것이다. 하이퍼트랜스포트는 CPU와 메모리, 호스트 브릿지에 중심을 둔 칩간 연결 버스의 특성을 강하게 띄고 있지만, PCI Express는 현존하는 PCI를 그대로 승계하여, 스위치를 사용한 다수의 주변기기 연결을 중시하는 고속의 보드간 직렬연결 버스의 성격이 강하다.
그래서, PCI Express에서는 외부 인터페이스의 형태도 고려되고 있다. 물론 이것은 기존의 PCI와의 호환성을 어느정도 유지하는 선에서의 고려이기에 다음과 같은 형태로 구분된다.
1. 저속의 PCI Express 인터페이스 구성
내장형 PCI Express 인터페이스는 기본적으로 현존하는 PCI와 같은 폼팩터를 기준으로 만들어진다. 즉, 일반적인 PCI 카드의 크기 뿐만 아니라 LP(Low Profile) 타입의 작은 형태로도 만들어진다. 다만, 슬롯의 형태는 위 일러스트와 같이 변경된다.
저속의 PCI Express를 위해서는 기존의 PCI 커넥터 앞쪽으로 작은 PCI Express 커넥터만이 추가된다. 적은 수의 핀만을 사용해도 무방하기 때문에 커넥터의 크기는 상당히 작아서, PCI 슬롯의 앞쪽 좁은 공간에 들어간다. 따라서, 같은 자리에 기존의 PCI도 사용할 수 있으며, 필요에 따라 PCI Express를 지원하는 주변기기 역시 사용할 수 있다.
여기에는 각방향 1~2개의 통로를 가지는 PCI Express가 사용될 수 있으며, 그 속도는 200~400MB/s가 된다.
2. 고속의 PCI Express 인터페이스 구성
그보다 빠른 속도를 가지는 인터페이스, 예를 들어서 그래픽카드 등을 위해서는 4개 이상의 각방향 통로를 가지는 버스, 즉 800MB/s 이상의 데이터 전송 대역폭이 필요하다. 이를 위해 별도의 PCI Express 슬롯이 존재한다. 이것은 PCI 슬롯 앞쪽에 위치하는 저속 PCI Express 슬롯보다는 크지만, 현재의 AGP 슬롯보다도 작은 크기를 가지게 된다.
3. 외장 장치를 위한 PCI Express 인터페이스
PCI Express로 변화하면서 가장 눈에 띄게 변할 부분은 바로 이 외장 PCI Express의 지원이다. 현재까지의 PCI 버스는 시스템 외부로는 뻗어나올 수 없었다. 넓은 버스폭으로 인한 데이터 왜곡과 멀티드랍 방식의 동기화 문제 때문이었다. 그러나 PCI Express는 P2P 연결로써 동기화를 절실히 요하지 않으며, 직렬전송이기 때문에 데이터 왜곡으로부터 어느정도 자유롭다.
그래서 PCI Express는 외장 장치의 제작이 가능해진다. 기존에는 SCSI나 USB, IEEE1394 등의 다른 인터페이스를 통해서 외부 장치를 사용해야 했으나 PCI Express 부터는 직접 외부 장치를 사용하는 것이 가능해진다. 즉, 외부 사운드카드나 TV 캡춰/인코딩 유닛 등이 직접 PCI Express에 연결되기 때문에 낮은 대역폭으로 인한 한계가 사라지고 다양한 외장 유닛들이 등장할 수 있다.
4. 노트북 등의 모바일 기기를 위한 PCI Express 인터페이스
모바일 시스템에서도 변화가 일어난다. 노트북에 무슨 PCI 슬롯이냐고 할지 모르지만, 노트북 등에도 분명히 PCI 슬롯이 존재한다. 이것은 miniPCI라는 것으로, 주로 네트웍 어댑터나 모뎀 등이 장착된다.
현재의 미니 PCI는 상당히 큰 커넥터를 가지고 있어서 공간적인 문제가 절실한 노트북 등에서 상당한 공간을 차지한다. 그러나 이것이 PCI Express로 변경되면 큰 커넥터 대신 매우 작은 크기의 커넥터를 사용할 수 있어서 차지하는 공간이 줄어들며, 또한 케이블링이 가능해지기 때문에 배치의 유연성도 훨씬 높아져서 노트북을 설계하는 디자이너들에게 기존보다 훨씬 높은 자유도를 부여하고 보다 작고 가벼운 노트북을 만들 수 있도록 해준다.
하이퍼트랜스포트와 PCI Express, 3세대 I/O의 미래
지금까지 1, 2세대 IO와 함께 3세대 IO인 하이퍼트랜스포트, 그리고 PCI Express에 대해서 알아보았다. 여기서 우리는 PCI Express나 하이퍼트랜스포트를 떠나서라도, 직렬전송기술이 대세로 자리잡고 있음을 알 수 있었다. RDRAM으로 시작된 직렬전송기술은 이후 USB, IEEE1394 등으로 다양한 분야로 모습을 드러내었고, 시리얼 ATA와 함께 본격적으로 적용되기 시작하였다. 그리고 하이퍼트랜스포트와 PCI Express를 바탕으로 시스템의 주축으로써 자리잡게 되는 것이다.
PCI Express와 하이퍼트랜스포트는 대단히 유사한 버스방식이지만, 각각이 포함하고 있는 범주에서 약간의 차이를 보이며, 이것은 곳 사용되는 용도의 차이로 이어진다.
하이퍼트랜스포트가 해머 아키텍쳐의 차세대 프로세서를 위한, 프로세서와 메모리, 호스트 브릿지간의 데이터 전송구조에 무게를 싣고 있다면, PCI Express는 주변기기를 위한 고속의 인터페이스, 그리고 '고속의 단거리 외부 버스'라는 의미에 중심이 실려 있다. 즉, PCI Express와 하이퍼트랜스포트가 정면대결로 인해 어느 한쪽만이 살아남는 일은 없으리라는 것이 필자의 생각이다.
현재까지는 하이퍼트랜스포트쪽에 조금 더 무게가 실리고 있는 듯한 느낌이다.(어찌되었던 하이퍼트랜스포트가 적용된 시스템은 곧 등장할 예정이지만, PCI Express는 2003년 하반기에 등장한다고 하니까..) 하지만, 하이퍼트랜스포트는 새로이 구성된 컨소시움을 통해서 만들어진것임에 반해서, PCI Express는 십여년의 역사를 가지고 있는 PCI SIG에서 제정/지원하고 있다는 점에서는 PCI Express가 잇점을 가지고 있다.
이상적인 경우라면 CPU와 메모리, 호스트브릿지 등의 시스템의 '축'이 하이퍼트랜스포트로 구성되고, 외부연결 및 각종 확장카드 연결이 PCI Express가 되는 것이라고 할 수 있겠는데, 이를 위해서 AMD와 인텔이 손을 잡을지는 의문이다.(VIA나 SiS 등의 업체에서는 저런 구성이 등장할 가능성이 농후하다)
프로세서에 이어서 차세대 I/O 버스로까지 이어지고 있는 인텔과 AMD의 대결구도라고도 할 수 있는 PCI Express와 하이퍼트랜스포트의 입지경쟁은 완전히 동등한 입장과 배경에서의 경쟁이 아니기에 뚜렷하게 승패가 갈리지는 않겠지만, 아직까지 완벽히 정해진 것이 없기에 이러한 상황이 어떻게 변할 것인가에 대해서는 지켜보는 수밖에 없을 것이다. 어찌되었건 가장 좋은건 Win-WIn이 아닐까
출처: http://cafe.naver.com/gusigi/11