Mọi điều bạn cần biết về PCI Express

Kể từ khi lần đầu tiên được phát hành trong năm  1981 , máy tính đã có những khe cắm mở rộng mà tại đó bạn có thể lắp thêm Card cung cấp những tính năng mà Motherboard không có .

Hiện tại khe cắm mở rộng thông dụng nhất hay có đó chính là PCI Express (PCIe) . Trong phần này chúng ta sẽ biết về loại kết nối này xem nó làm việc như thế nào . khe cắm ra làm sao …

Trước khi nói về PCIe , chúng ta cần nói đôi chút về lịch sử của những khe cắm mở rộng PC và những điều chủ yếu để bạn có thể hiểu PCIe khác nhau cái gì .

Dưới đây là danh sách những kiểu khe cắm mở rộng đã phát hành trong lịch sử PC :

 

·         ISA (Industry Standard Architecture)

·         MCA (Micro Channel Architecture)

·         EISA (Extended Industry Standard Architecture)

·         VLB (VESA Local Bus)

·         PCI (Peripheral Component Interconnect)

·         PCI-X (Peripheral Component Interconnect eXtended)

·         AGP (Accelerated Graphics Port)

·         PCI Express (Peripheral Component Interconnect Express)

 

Những kiểu khe cắm mới được đưa ra đó là do những khe cắm cũ hơn đã quá chậm cho những ứng dụng nào đó .

Ví dụ ISA ban đầu , có trong máy IBM PC đầu tiên và IMB PC XT và cùng với những biến thể khác của nó , có tốc độ truyền dữ liệu theo lí thuyết ( băng thông ) chỉ 4.77MB/s . Phiên bản 16-bit ISA , dùng trong IBM PC AT trong năm  1984 , có băng thông gấp đôi lên tới 8MB/s ( 8MHz truyền 16-bit trong mỗi chu kì 2 xung nhịp ) . Những với băng thông ISA 16-bit vẫn quá chậm khi dùng cho những ứng dụng cần băng thông cao hơn như video .

IBM đã phát hành khe mở rộng MCA cho những máy tính dòng PS/2 , và vì bản quyền nên các nhà sản xuất khác không  thể sao chép hoặc sử dụng . Do đó MCA chỉ có mặt trong những máy tính do IBM sản xuất . Lúc đó 9 nhà sản xuất PC cộng tác với nhau để tạo ra khe cắm EISA , nhưng đã không  thu được thành công vì hai lí do .

 

Đầu tiên , nó duy trì tính tương thích với những khe ISA ban đầu , do đó tốc độ xung nhịp như của khe ISA 16-bit .

Thứ hai , liên minh này lại không  bao gồm những nhà sản xuất Motherboard , do đó mà những người dùng  tự lắp ráp ( Do-it-yourself ) và những nhà sản xuất khác lại không  truy cập được tới khe cắm này .

 

Khe cắm tốc độ cao thực sự đầu tiên là VLB . Tốc độ cao hơn đạt được là do kết hợp khe cắm với Bus cục bộ của CPU , là bus ngoài của CPU . Với cách thức tiếp cận như vậy thì khe VLB làm việc với tốc độ bằng với tốc độ Bus ngoài của CPU . Bảng bên dưới liệt kê danh sách Bus này với tốc độ 33MHz nhưng tốc độ thực của nó sẽ phụ thuộc vào việc CPU sử dụng ( hầu hết những CPU hồi đó dùng tốc độ bus ngoài là 33MHz , nhưng lại có một số CPU có tốc độ ngoài là 25MHz và 40MHz ) . Vấn đề của Bus VLB đó là nó thiết kế đặc biệt cho Bus cục bộ của những bộ vi xử lí  kiểu 486 . Khi Chip Pentium phát hành nó không  còn tương thích nữa vì khi ấy Bus cục bộ có tính năng kỹ thuật khác đó là tốc độ Bus ngoài 64MHz và dữ liệu 64-bit thay vì 33MHz và dữ liệu 32-bit .

Giải pháp công nghiệp  mở rộng đầu tiên xuất hiện từ năm  1992 , khi đó Intel đứng đầu để tạo ra khe cắm mở rộng có tên gọi PCI . Về sau những công ty  này liên minh với nhau thành nhóm có tên gọi PCI-SIG (PCI Special Interest Group).

PCI-SIG chịu trách nhiệm đưa ra những chuẩn hóa cho khe cắm PCI , PCI-X và PCI Express .

PCI là Bus không phụ thuộc vào nền tảng  , được kết nối tới hệ thống  dùng Chip cầu ( là một phần của Chipset trên Motherboard ) . Bất kì lúc nào có CPU mới được phát hành , bạn vẫn có thể dùng cùng Bus PCI bằng cách thiết kế lại Chip cầu thay vì thiết kế lại Bus , đó là một mục tiêu để tạo ra Bus PCI .

Bus là đường dữ liệu tại đó bạn có thể gắn một số thiết bị cùng một lúc , chia xẻ đường dữ liệu này . Điều này rất tiện lợi nó cho phép những linh kiện tích hợp sẵn trên Motherboard như Chip mạng có thể được kết nối tới bus PCI mà không  cần phải dùng  tới Card cắm mở rộng .

Mặc dù có những cấu hình khác nhau nhưng hầu hết Bus PCI có tốc độ 33MHz với đường dữ liệu 32-bit cho phép băng thông lên tới 133MB/s .

Bus PCI-X là một phiên bản của bus PCI , làm việc với tốc độ xung nhịp cao hơn và đường dữ liệu rộng hơn cho những Motherboard của máy chủ để có băng thông lớn hơn và tốc độ cao hơn như những Card mạng tốc độ cao và mạch điều khiển RAID .

Khi Bus PCI quá chậm để dùng  cho Card màn hình cao cấp thì khe AGP được phát triển . Khe này chỉ được dùng  cho Card màn hình .

Về sau cuối cùng thì PCI-SIG đã phát triển một kết nối có tên gọi PCI Express ( có tên cũ là 3GIO và có tên chính thức viết tắt là PCIe ) .

PCI Express làm việc hoàn toàn khác với bus PCI .

 

  • PCI là một Bus , trong khi đó PCIe là kết nối điểm-điểm , có nghĩa là nó nối chỉ hai thiết bị với nhau không  có thiết bị khác có thể chia xẻ kết nối này . Trên Motherboard dùng những khe PCI chuẩn , tất cả thiết bị PCI được nối tới Bus PCI và chia xẻ cùng đường dữ liệu , do vậy sẽ tạo nên “nút thắt cổ chai” ( có nghĩa là hiệu suất giảm khi có nhiều thiết bị muốn truyền dữ liệu cùng một lúc ) có thể xảy ra . Trên Motherboard với những khe PCIe , mỗi khe PCIe được nối tới Chipset Motherboard dùng những đường dữ liệu riêng ( Lane ) không  chia xẻ Lane này với những khe PCIe khác . Cũng tương tự như vậy với những thiết bị tích hợp trên Motherboard như điều khiển mạng , SATA , USB , thường được kết nối tới Chipset của Motherboard dùng những kết nối PCIe riêng biệt .
  • PCI và những khe cắm mở rộng từ trước dùng truyền thông theo phương thức song song , nhưng PCIe truyền thông dựa trên nối tiếp với tốc độ cao .
  • PCIe dựa trên những Lane riêng biệt , có thể tạo thành nhóm để tạo ra những kết nối có băng thông cao hơn . “x” đi theo kết nối PCIe cho biết số Lane mà kết nối đó sử dụng .

Bên dưới là bảng so sánh những tính năng kỹ thuật chính của những khe cắm mở rộng đã từng tồn tại trên PC .

 

Khe cắm

Tốc độ xung nhịp

Số Bit

Dữ liệu truyền

đi trong mỗi xung nhịp

Băng thông

ISA

4.77 MHz

8

1

4.77 MB/s

ISA

8 MHz

16

1

8 MB/s

MCA

10 MHz

16

1

NA

MCA

10 MHz

32

1

NA

EISA

8.33 MHz

32

1

33.3 MB/s

VLB

33 MHz

32

1

133 MB/s

PCI

33 MHz

32

1

133 MB/s

PCI-X 64

66 MHz

64

1

533 MB/s

PCI-X 133

133 MHz

64

1

1,066 MB/s

PCI-X 266

133 MHz

64

2

2,132 MB/s

PCI-X 533

133 MHz

64

4

4,266 MB/s

AGP x1

66 MHz

32

1

266 MB/s

AGP x2

66 MHz

32

2

533 MB/s

AGP x4

66 MHz

32

4

1,066 MB/s

AGP x8

66 MHz

32

8

2,133 MB/s

PCIe 1.0 x1

2.5 GHz

1

1

250 MB/s

PCIe 1.0 x4

2.5 GHz

4

1

1,000 MB/s

PCIe 1.0 x8

2.5 GHz

8

1

2,000 MB/s

PCIe 1.0 x16

2.5 GHz

16

1

4,000 MB/s

PCIe 2.0 x1

5 GHz

1

1

500 MBs

PCIe 2.0 x4

5 GHz

4

1

2,000 MB/s

PCIe 2.0 x8

5 GHz

8

1

4,000 MB/s

PCIe 2.0 x16

5 GHz

16

1

8,000 MB/s

PCIe 3.0 x1

8 GHz

1

1

1,000 MB/s

PCIe 3.0 x4

8 GHz

4

1

4,000 MB/s

PCIe 3.0 x8

8 GHz

8

1

8,000 MB/s

PCIe 3.0 x16

8 GHz

16

1

16,000 MB/s

 

 

Từ song song tới nối tiếp

 

Kết nối PCIe được phát triển cực kì tiên tiến trong việc truyền thông giữa những thiết bị ngoại vi với máy tính . Nó khác với Bus PCI nhiều khía cạnh nhưng có một thứ quan trọng nhất đó là cách dữ liệu được truyền đi .

Kết nối PCIe là một ví dụ khác cho thấy xu hướng chuyển từ việc truyền dữ liệu từ song song sang nối tiếp . Giao diện dùng truyền thông nối tiếp chủ yếu bao gồm USB , Ethernet , SATA và SAS .

Trước PCIe , tất cả Bus PC và những khe cắm mở rộng đều dùng truyền thông song song đó là cách mà nhiều Bit dữ liệu được gửi đi trên đường truyền dữ liệu cùng một lúc .

Trong truyền thông nối tiếp chỉ có một Bit được truyền đi trên đường dữ liệu trong mỗi chu kì xung nhịp .Đầu tiên truyền thông song song nhanh hơn vì số lượng Bit dữ liệu được truyền đi nhiều hơn cùng một lúc .

Tuy nhiên truyền thông song song sẽ gặp phải một số vấn đề ngăn cản nó đạt tới tốc độ xung nhịp cao hơn . Tốc độ cao hơn thì vấn đề giao thoa điện từ trường (EMI) lớn hơn và độ trễ lớn .

Khi dòng điện đi qua dây dẫn sẽ xuất hiện trường điện từ xung quanh dây dẫn . Trường này có thể làm ảnh hưởng tới độ chính xác của thông tin trong dây dẫn bên cạnh . Khi truyền song song , vài Bit được truyền cùng một lúc và mỗi Bit nằm trên một dây dẫn khác . Ví dụ truyền thông 32-bit ( trong khe PCI chuẩn ) nó cần tới 32 dây dẫn để truyền dữ liệu và với tốc độ cao tất cả những dây dữ liệu này sẽ tạo ra trường điện  từ rất lớn dễ dàng xảy ra vấn đề giao thao trường điện từ khiến cho dữ liệu bị sai lệch .

 

\"\"

Hình trên cho thấy sự sai lệch từ bên phát sang tới bên thu khi truyền song song

 

Như đã nói bên trên , mối Bit trong truyền thông song song được truyền trên một dây dẫn riêng biệt và điều đó rất khó để tạo ra 32 dây dẫn có cùng độ dài chính xác trên Motherboard . Với tốc độ cao hơn , dữ liệu truyền qua dây dẫn ngắn hơn sẽ tới trước dữ liệu truyền qua dây dẫn dài hơn và như thế đã tạo ra những mức trễ khác nhau khiến cho bên thu phải chờ cho tới khi tất cả các Bit được nhận đủ và điều đó ảnh hưởng nghiêm trọng tới hiệu suất làm việc . Độ trễ càng tăng khi mà tốc độ xung nhịp càng tăng .

 

\"\"

Độ trễ giữa bên thu và bên phát khi truyền song song

 

Truyền thông nối tiếp đã đơn giản hơn so với truyền thông song song với số dây dẫn để truyền dữ liệu ít hơn .

Truyền thông nối tiếp thông thường cần 4 dây dẫn : 2 cho dữ liệu truyền và 2 cho dữ liệu nhận ; sử dụng kỹ thuật chống lại sự giao thoa điện từ trường có tên gọi truyền vi sai . Truyền vi sai , cùng tín hiệu được truyền đi  trên hai dây dẫn , dây dẫn thứ hai truyền tín hiệu đảo cực so với tín hiệu gốc , như hình dưới .

Khi bên thu nhận tín hiệu , nó có thể so sánh hai tín hiệu , tất nhiên tín hiệu đảo cực phải được khôi phục lại . Nếu có sự khác nhau giữa hai tín hiệu thì đó là nhiễu và bên thu biết là nhiễu để bỏ nó đi .

 

\"\"

Kỹ thuật vi sai

 

Bên cạnh việc loại bỏ nhiều điện từ trường , truyền thông nối tiếp không  chịu vấn đề trễ . Với cách này có thể dễ dàng đạt tới tốc độ cao hơn và đơn giản hơn so với truyền thông song song .

Một điều quan trọng khác nhau nữa giữa song song và nối tiếp đó là truyền thông song song thường dùng Half-Duplex có nghĩa là cùng dây dẫn được dùng để truyền và nhận dữ liệu như vậy nếu đang truyền thì không thể nhận và ngược lại . Truyền thông nối tiếp là Full-Duplex , dây dẫn truyền và thu dữ liệu hoàn toàn khác nhau cho phép thực hiện hai công việc cùng một lúc .

Đó là những lí do chính mà giới công nghiệp ưu tiên sử dụng truyền thông nối tiếp thay vì song song trong PCIe .

Bạn có thể tự hỏi “Truyền thông nối tiếp không  chậm hơn sao ?” . Nó phụ thuộc vào những gì bạn so sánh . Nếu bạn so sánh truyền thông song song 33MHz , truyền 32-bit trong mỗi chu kì xung nhịp thì nó sẽ nhanh hơn 32 lần so với truyền thông nối tiếp 33MHz với một Bit được truyền đi trong mỗi chu kì xung nhịp . Tuy nhiên nếu bạn so sánh cùng truyền thông song song và nối tiếp xem cái nào đạt được nhanh nhất thì PCI 133MB/s ( 33MHz x 32-bit ) thấp hơn nhiều so với PCIe nối tiếp 250MB/s ( 2.5GHz x 1-bit ) thế hệ đầu tiên .

Như vậy khái niệm nối tiếp “thường” chậm hơn so với song song là trong máy tính rất cũ thời trước thường có những cổng “Serial Port” và “Parallel Port” .

 

Những mode hoạt động

 

Kết nối PCIe dựa trên khái niệm “Lane” , là truyền thông nối tiếp tốc độ cao , 1-Bit và Full-Duplex . Những Lane có thể nhóm lại để tăng băng thông .

Ví dụ , khi 2 thiết bị dùng 4-Lane cho kết nối của mình được coi như là kết nối “x4” đạt được băng thông gấp 4 lần so với một Lane . Trong hình dưới , minh họa hai thiết bị kết nối với nhau dùng 2-Lane ( x2 ) . Mặc dù theo lí thuyết có thể nhớm từ 1 tới 32 Lane nhưng hầu hết sử dụng là x4 , x8 và x16 .

 

\"\"

Kết nối PCIe x2

 

PCIe 1.0 và 2.0 dùng hệ thống  mã hóa 8b/10b ( tương tự như Fast Ethernet 100Mbps) , có nghĩa là 10-bit mã hóa truyền đi trong đó có chứa 8-bit dữ liệu .Thông thường để chuyển đổi giữa bps ( Bit per second ) thành Bps ( Byte per second ) theo phương thức chia 8 vì 1-Byte là 8-bit . Tuy nhiên theo cách mã hóa 8b/10b bạn cần phải chia 10 chứ không  phải chia 8 . Đó là lí do tại sao tốc độ 2.5GHz và 5GHz trên 1-Lane lại có băng thông 250MB/s và 500MB/s chứ không  phải là 312.5MB/s và 625MB/s . Với 2-bit thêm vào trong mã hóa đã làm hao phí tới 20% băng thông của kênh .

PCIe 3.0 dùng hệ thống  mã hóa khác có tên gọi 128b/130b . Hệ thống  mã hóa này truyền 130-bit trong đó có chứa 128-bit dữ liệu và chỉ mất 2-bit phụ . Nếu so sánh với PCIe 2.0 thì 128-bit thì phải cần tới 32-bit phụ . Do có bit phụ ít hơn nên PCIe 3.0 có thể đạt được băng thông gấp 2 so với PCIe 2.0 với tốc độ 8GHz thay vì 10GHz .

PCIe 4.0 sẽ được phát hành trong 2 năm  tới sẽ duy trì hệ thống  mã hóa 128b/130b , có tốc độ xung nhịp cao gấp đôi nên có băng thông gấp 2 so với PCIe 3.0 .

 

PCIe

Mã hóa

Tốc độ

xung nhịp

Băng thông  

(x1)

1.0

8b/10b

2.5 GHz

250 MB/s

2.0

8b/10b

5 GHz

500 MB/s

3.0

128b/130b

8 GHz

1 GB/s

4.0

128b/130b

16 GHz

2 GB/s

 

 

Như đã nói bên trên , những Lane được nhóm lại với nhau để cho băng thông rộng hơn .

PCIe 2.0 x8 có băng thông 4GB/s ( 500MB/s x 8 ) , PCIe 2.0 x16 có băng thông 8GB/s .

PCIe 3.0 x16 có băng thông lên tới 16GB/s .

 

\"\"

Kiểu khe cắm PCIe

 

 

\"\"

Những khe PCI , PCIe trên Motherboard

 

 

\"\"

Những chân cắm của Card màn hình

 

\"\"\"\"