PCIe 란 무엇인가? 그 구조와 특징을 알아보자.

PCIe 란 무엇인가? 그 구조와 특징을 알아보자.

(*이미지가 안보이는 경우 webp로 제작된 이미지이므로 ie11을 제외한 브라우저에서 사용해주시면 감사하겠습니다.)

 

 

PCI Express

PCIe 란 무엇인가?

그래픽카드를 꼽으면서 맨날 궁금해서 여러가지 조사를 하면서 종합해봤습니다.

컴퓨터를 전공으로 하거나 컴퓨터를 좋아하시는 분이라면 아주 재밌을거같은 내용입니다.

 

PCIe라는 이름의 유래

PCIe를 알기위해서는 우선 PCI 버스를 먼저 알아야 이해하기 좋습니다.

먼저 PCI를 소개합니다.

 

PCI vs PCIe

 

PCI(Peripheral Component Interconnect Bus)는 1992년 6월 컴퓨터에서 주변기기 장착을 위해 인텔에서 발표한 버스 규격으로 1990년 초부터 ISA의 한계를 예측하고 1990년대 초부터 ISA를 대체할 버스 규격으로 PCI를 개발했습니다.

 

그후 PCI는 거의 모든 데스크탑 컴퓨터에서 쓸수있는 표준 버스장치가 되었으며 이또한 기술적인 한계가 있어 그 후속 버스 규격을 개발하는데 2003년 '인텔, 델, HP, IBM'의 미국의 대표 IT기업들이 합작하며 PCI의 후속 인터페이스를 발표하였는데 그 이름이 PCIe(PCI Express)입니다.

실질적으로 PCIe는 이전의 PCI의 데이터 전송 속도의 두배입니다.

PCIe의 연결은 직렬로  연결된 하나 이상의 데이터 전송 레인으로 구성됩니다.

각 레인은 두 쌍의 와이어로 구성되며, 한쌍은 수신용으로 나머지 다른 하나는 전송용입니다. 

각레인은 PCI 컨트롤러와 확장 카드 사이의 독립적인 연결을 합니다.

 

*PCIe도 인텔이 주도하에 만들어졌다.

2020의 인텔은 ...

 

이제 PCI와 PCIe를 비교하면서 PCIe를 알아보도록 하겠습니다.

 

1.슬롯차이

 

좌 32비트 / 우 64비트 PCI 인터페이스

우선 PCI와 PCIe는 슬롯 크기가 다릅니다. PCI는 124핀이 있는32비트, 188핀이 있는 64비트 버전 슬롯이 각각 존재합니다.

32비트는 85mm의 길이를, 64비트는 130mm 길이의 슬롯을 사용합니다.

전자는 일반 데스크톱 사용자가, 후자는 일반적으로 서버에서 많이 사용되었습니다.

 

이제 PCIe 슬롯입니다.

 

PCIe는 각각 1/2/4/8/12/16/32 레인에 해당하는

x1, x2, x4, x8, x12, x16및 x32의 7가지 버전이 있습니다. x32는 크기가 커서 보통 일반 사용자용 보트에서는 보기 힘듭니다.

 

PCIe x 16 슬롯 : 길이는 89mm이고 핀은 164개 입니다. 주로 그래픽카드에 사용되며 x1, x4,x8 장치와 역 호환이 됩니다.

 

PCie x8 슬롯 : 길이는 56mm 이고, 핀은 98개입니다.

대역폭은 PCIe x16슬롯의 절반에 불과합니다.

 

PCIe x4 슬롯 : 길이는 39mm이고, 핀은 64개 입니다.

주로 PCIe SSD 또는 M.2 SSD를 설치하는데 사용됩니다. 대부분의 경우 PCIe x4 슬롯은 M.2 인터페이스 형태로 제공되고 있습니다. (용도가 M.2 SSD라서 그런듯 합니다.)

 

PCIe x1 슬롯 : 길이가 25mm에 불과하고 핀은 36개 있습니다.

용도는 네트워크카드, 사운드 카드, USB 3.0 / 3.1 확장카드등 비교적 광범위 하게 쓰이고 있습니다.

2. PCI vs PCIe 대역폭

 

모뎀 비트 바이트
32 비트 (33Mhz) 1066.66 Mbit/s 133.33 MB/s
32 비트 (66Mhz) 2133.33 Mbit/s 266.66 MB/s
64비트 (33Mhz) 2133.33 Mbit/s 266.66 MB/s
64비트 (66Mhz) 4266.66 Mbit/s 533.33 MB/s

우선 PCI의 버스속도는 32/64비트별로 비트수에 따라 다릅니다.

PCI는 그렇게 설명할 요소가 없습니다.

PCI는 비트방식으로 PCIe에서는 비트 대신 레인방식으로 변경되었다고 보면됩니다.

 

이제 PCIe에 대해 알아보도록 하죠.

 

PCIe의 속도는 레인과 버전에 따라 다릅니다.

Transfer rate는 레인당 대역폭입니다.

예시로 PCIe 3.0 x1 은 8GT/s 만큼의 대역폭을 PCIe 3.0 x8 은 64 GT/s의 대역폭을 가진다고 불수있습니다.

 

2-1. PCIe(express) 의 버전별 속도

 

 

조금 자세히 알아 보겠습니다.

PCIe의 최대 대역폭을 보면 PCIe 1.0 을 기준으로 보면 2.5GT/s(초당 기가 전송)라는 말은 각 방향으로

동시에 2.5GT/s(=2.5Gb/s) 를 전달할수있다는 말입니다.

*G는 10의 9승 기가라는 의미, T는 전송의 Transfer 단위입니다.

 

초당 기가전송는 초당 기가비트와 동일하지만 여기서 인터페이스 오버 헤드로 인해 손실된 비트를 포함된 수치입니다. 즉 '실질적인' 전송되는 값입니다.

 

오버헤드와 인코딩방식은 같이 설명하겠습니다.

Line code라는 부호화체계방식(인코딩방식)이 있는데

PCIe 2.0을 보자면 8b/10b라고 기재되어있습니다. 이를 쉽게 말하면

1바이트(8비트)를 10비트로 전송하는 것.

8비트 단위를 10비트 코드로 변환시키는 블록 코딩 방식이라고 설명하는데

너무 길어지고 하니 생략하겠습니다.

결과적으로 대략 8비트에서 10비트로 전송하는 8b/10b 인코딩 방식은 20%정도를 오버헤드로 쓰여지고 있습니다.

여기서 오버헤드는 어떤처리를 하기위해 들어가는 간접적인 처리 시간 및 메모리등을 말합니다.

오버헤드는 예를 들어

A를 단순하게 실행하면 결과가 나오기 까지 10초가 발생합니다.

하지만 안정성과 여러 부가적인 요소를 더해 B라는 처리를 추가한 결과

13초가 발생하였다면 오버헤드는 3초가 발생한것입니다.

 

그러면 PCIe1.0을 기준으로 8b/10b 인코딩방식을 사용해 이론적인 대역폭의 20%가 오버헤드로 손실 되었습니다. 2.5GT/s 의 80%가 손실되었으므로 (2.5*0.8)

실질적인 전송량은 2GT/s == 250MB/s (1byte 는 8bit) 입니다.

위에서 설명을 못했는데 위 수치들은 레인당 대역폭입니다.

x1의 실질적인 전송량은 200 MB/s 므로 x16 레인은 3,200 MB/s 가 되는걸 알수있습니다.

 

PCIe에서 크게 데이터를 잘못 전송하는 일을 방지 하기 위해 오버헤드가 발생합니다. 이박에 노이즈와 에러등등 여러가지를 해결하기위해 오버헤드가 발생합니다.

오버헤드자체가 0이 될수는 없겠지만 줄이는 방식이 좋습니다. (물론 과정을 생략하지 않고 동일한 오버헤드 과정에서)

이를 확인할수있는 점이 PCIe 2.0 ➡ 3.0에서의 인코딩의 변화입니다.

PCIe 2.0에서 3.0으로 전환시 레인 당 처리량(Transfer rate)은 5.0GT/s 에서 8.0GT/s 로 60% 정도 많은데도 불구하고 실제 속도는 PCIe 2.0보다 두배 빠른속도를 가집니다.

이유를 보자면 Line code(인코딩 방식)이 보다 효율적인 방식을 사용했기 때문입니다. 인코딩방식이 8b/10b ➡ 128b/130b 로 변경되었는데 8b/10b방식은 실질 전송량에서 25%를 깍아 먹는데 반해

128b/130b 로의 변경은 오버헤드가 1% 정도로 줄여서 실질적인 성능은 2배가 된셈입니다.

 

 

3. PCI vs PCIe의 호환성

 

PCI : 32 비트 PCI 인터페이스는 64비트 PCI 제품과 호환되지 않지만

64비트 PCI 인터페이스는 32비트 PCI 제품과 호환됩니다.(하위 호환)

 

PCIe : PCIe 인터페이스는 레인에 따라 길이가 다릅니다.

PCIe도 일반저그올 긴 슬롯(높은 레인수)은 짧은 인터페이스(적은 레인수) 제품과 호환 됩니다.

예를 들면 PCIe x16 슬롯은 PCIe x4 또는 x8 제품과 호환이 가능합니다.

역으로 짧은 슬롯의 제품들은(x4,x8) 긴 인터페이스 제품(x16,x32)과 호환되지 않습니다.

길이 자체가 삽입할수 없기 때문이죠.

PCIe는 PCI때와는 다르게 버전이 있습니다. 다른 버전은 서로 호환이 됩니다.

이게 무슨 말이냐? 하실수도 있는데

예를 들어 PCIe 3.0 버전은 PCIe 2.0 버전과 호환됩니다.

 

PCIe 3.0 x4 레인 연결은 PCIe 1.0 x16 또는 PCIe x8 레인과 거의 동등한 대역폭을 가지며

표를 잘모면 버전이 높으면 그전 버전의 절반정도의 레인과 대역폭이 동등합니다.

 

PCI와 PCIe의 호환성 : PCIe 인터페이스는 PCI 인터페이스와 서로 호환성을두고 개발 하지 않았기에 서로 호환이 되지 않습니다.

 

PCIe는 슬롯면에서 버전별로, 호환성에 대해 알아보았는데 이외에도

 

4. 직렬 통신

PCI는 병렬 구조에 반해 PCIe는 직렬 구조의 데이터전송방식 입니다.

병렬 구조보다 성능저하가 적고 보다 효율적인 버스 시스템을 만들수있습니다.

 

 

5. 레인(lane)

앞에서 먼저 나오긴 했지만 따로 설명하겠습니다.

PCI에서는 비트방식의 단위를 사용했는데 PCIe에서는 레인이라는 독특한 방식의 단위를 사용합니다.

PCIe에서 x는 배수개념보단 각 레인 개수단위로 보는게 맞습니다.

위 설며에서도 x숫자의 개수만큼 대역폭이 증가합니다.

예를 들자면 x1이 500MB/s 대역폭이면 x4는 500MB/s 레인이 4개라서 종합적으로 2,000 MB/s

각레인은 고유한 대역폭을 가지는 직렬 전송 방식을 사용해 레인끼리 간섭 문제를 최소화할수 있었습니다.

 

여러모로 기존의 방식보다 훨씬 효율적이고 버전이 올라가면서 대역폭문제도 맞춰서 향상하고 있어

앞으로도 쭈욱 쓰일거같은 PCIe였습니다.

 

 

나머지는 2편에서 올리도록하겠습니다. 

대충 남은 내용 PCIe의 버전별 역사,PCI의 미래, 게임에서 PCIe 3.0 vs 4.0 의 논란

 

'IT > PC' 카테고리의 다른 글

MS 엣지 브라우저 차단기 _ Edge Blocker v1.8  (1) 2023.05.08