HyperTransport Bus sử dụng cho các bộ vi xử lý AMD

Các bộ vi xử lý nền tảng kiến trúc AMD64 – như Athlon 64, Athlon 64

X2, Athlon 64 FX, Opteron, Sempron và Phenom – có hai bus ngoài.

Một được sử dụng cho việc truyền thông giữa CPU và bộ nhớ được gọi

là “memory bus”, bus kia được sử dụng cho việc truyền thông giữa CPU

và tất cả các thành phần khác của máy tính thông qua chipset của bo

mạch chủ và được gọi là HyperTransport – I/O (Input/Output) bus.

Trong hướng dẫn này, chúng tôi sẽ giới thiệu cho các bạn về cách

HyperTransport bus làm việc và nêu ra một số lỗi mà người dùng

thường hiểu nhầm đối với bus này.

Đối với tất cả các bộ vi xử lý khác – gồm có bộ vi xử lý AMD không dựa

trên kiến trúc AMD64 (như các bộ vi xử lý Athlon, Athlon XP và Sempron

socket 462) – CPU này chỉ có một bus ngoài, chúng cũng được biết đến như

front side bus (FSB). Đối với phương pháp này, bus ngoài chịu trách nhiệm

cho cả việc truyền thông I/O và bộ nhớ.

Về mặt lý thuyết, kiến trúc được sử dụng cho các bộ vi xử lý AMD64 tốt

hơn, theo lý thuyết, chúng có thể truyền thông với bộ nhớ và với các thành

phần máy tính khác (như video card) tại cùng một thời điểm, điều không thể

đối với các bộ vi xử lý khác chỉ có một đường dữ liệu bên ngoài.

Trên hình 1 bạn có thể xem cách một bộ vi xử lý AMD64 truyền thông với

thế giới bên ngoài thế nào. Chip “bridge” là chipset của bo mạch chủ. Phụ

thuộc vào chipset bạn có thể có một hoặc hai chip. Đối với các giải pháp 2

chip, tất cả thiết bị ngoại vi (như ổ đĩa cứng, các card bổ sung, sound

card,…) đều được kết nối đến chip thứ hai (chip thứ hai này được gọi là cầu

nối phía Nam, không hiển thị trong hình 1), trong khi các giải pháp đơn chip,

mọi thứ đều được kết nối đến chip đơn này.

Hình 1: Vị trí của HyperTransport bus trên bộ vi xử lý AMD64. Nguồn:

Hardwaresecrets

Các CPU AMD dành cho các máy chủ - ví dụ như bộ vi xử lý Opteron – có

thể có một, hai hoặc 3 HyperTransport bus, phụ thuộc vào từng mô hình.

Các bus mở rộng này được sử dụng để kết nối với một số CPU để cho phép

chúng có thể trao đổi với nhau, nghĩa là được sử dụng trên các máy chủ có

nhiều CPU trên bo mạch chủ. Các CPU của máy desktop và notebook không

hỗ trợ kiểu cấu hình này vì chỉ có một HyperTransport bus trên chúng.

Trong bài này chúng ta có nhắc nhiều đến kiến trúc AMD64 nhưng sẽ không

giới thiệu sâu về kiến trúc này, mà sẽ dành riêng một bài khác để có thể giới

thiệu được chi tiết hơn.

Bên cạnh việc cung cấp các bộ vi xử lý AMD64 với các đường dữ liệu riêng

biệt cho bộ nhớ và I/O, HyperTransport còn có những ưu điểm khác: nó

cung cấp các liên kết riêng cho các hoạt động vào, ra của CPU, cho phép

CPU có thể gửi (ghi) và nhận (đọc) dữ liệu I/O tại cùng một thời điểm

(nghĩa là song song). Đối với kiến trúc truyền thống sử dụng bus ngoài đơn

thì bus được sử dụng cho cả hoạt động vào và ra nên việc đọc và ghi không

thể được thực hiện đồng thời.

Hình 2: HyperTransport bus cung cấp các đường dữ liệu vào/ra riêng biệt.

Nguồn: Hardwaresecrets

HyperTransport 1.x

HyperTransport bus có thể hoạt động dưới một vài cấu hình clock và độ

rộng (nghĩa là số bit được truyền mỗi lần). Đây có thể là vấn đề gây ra nhiều

hiểu sai và lỗi về HyperTransport.

HyperTransport là một bus được tạo bởi sự cộng tác sản xuất của một vài

nhà máy, bao gồm AMD, nVidia và Apple. Bus này có thể được sử dụng

trên một số ứng dụng và nó không bị hạn chế đối với các bộ vi xử lý của

AMD.

Điều đó có nghĩa rằng cấu hình thực của HyperTransport bus sẽ phụ thuộc

vào các chuyên gia phát triển phần cứng.

Một số chuyên gia phát triển tuyên bố về tốc độ truyền tải một cách quá mức

của HyperTransport bus mà họ đang sử dụng.

Các bộ vi xử lý AMD64 hiện hành sử dụng HyperTransport 1 (HT1) hay

HyperTransport 2 (HT2), và các bộ vi xử lý AMD sắp tới sử dụng

HyperTransport 3 (HT3). Trong tất cả các trường hợp này, bộ vi xử lý AMD

sử dụng các liên kết 16bit, thậm chí HyperTransport còn cho phép sử dụng

các liên kết 32bit.

HyperTransport 1 được sử dụng trên tất cả các socket 754 và socket AM2

Sempron (các bộ vi xử lý AM2 sử dụng HyperTransport 2.0).

Đây là một phân tích thống kê về tất cả các tốc độ truyền tải và clock có thể

đối với HyperTransport 1.x (nghĩa là được cung cấp trên socket 754):

 200 MHz = 400 MT/s = 800 MB/s

 400 MHz = 800 MT/s = 1.600 MB/s

 600 MHz = 1.200 MT/s = 2.400 MB/s

 800 MHz = 1.600 MT/s = 3.200 MB/s

HyperTransport truyền tải 2 dữ liệu trên mỗi một chu kỳ clock, khái niệm đã

được biết đến như DDR, tốc độ dữ liệu kép. Công thức để tìm ra tốc độ

truyền tải lớn nhất theo lý thuyết là:

Tốc độ truyền tải = độ rộng xung (số bit) x clock x số đơn vị dữ liệu trên

mỗi chu kỳ/ 8.

Như vậy với các bộ vi xử lý socket 754, HyperTransport bus có thể làm việc

đến 800 MHz hay 3.200 MB/s.

- Nói tốc độ clock được sử dụng bởi HyperTransport 1.x là 1.600 MHz bởi

vì mỗi một chu kỳ clock hai dữ liệu được truyền tải, hiệu suất đạt được

tương đương với tốc độ clock 1.600 MHz chỉ truyền tải một dữ liệu trên chu

kỳ clock. Cuối cùng tốc độ truyền tải sẽ như nhau, như công thức ở trên thay

vì sử dụng “2” cho “số dữ liệu trên mỗi chu kỳ clock”, nó sẽ sử dụng là “1”.

Điều này cũng xảy ra tương tự với DDR và các bộ nhớ mới hơn có tốc độ

clock tuyên bố là gấp đôi tốc độ clock thực (nghĩa là các bộ nhớ DDR2-800

làm việc thực tế là 400MHz nhưng truyền tải hai dữ liệu trên mỗi chu kỳ

clock).

- AMD nói rằng tốc độ clock là 1.600MT/s. MT/s là viết tắt của cụm Mega

Transfers per Second hay hàng triệu truyền tải trong một giây. Đây mới là

đúng cách để diễn tả ý tưởng trên. Truyền tải trên giây bằng tốc độ clock

nhân với số lần dữ liệu truyền tải trên mỗi chu kỳ.

Nói rằng tốc độ truyền tải lớn nhất của HyperTransport 1.x là 6.400 MB/s.

Điều đó là bởi vì tốc độ truyền tải đã được tuyên bố là cho mỗi đường dữ

liệu (nghĩa là 3.200MB/s cho đường dẫn đầu vào và 3.200MB/s cho đường

dẫn đầu ra), chính vì vậy một số người đã đơn giản hóa bằng cách nhân tốc

độ truyền tải lên hai để dùng chung cho cả hai đường dữ liệu. Chúng tôi

không đồng ý với ý tưởng này vì nói như thể cũng giống như nói rằng tốc độ

tối đa của một đường cao tốc nào đó là 130Km/h thì mỗi một chiều chỉ có

65Km/h, điều này quả thực rất dễ gây nhầm lẫn.

Một hiểu sai khác nói rằng bus ngoài hoặc FSB của Athlon 64 (hoặc các

CPU dựa trên AMD64 nào đó) là 16.00MHz. Cái này cũng có phần đúng.

Chúng ta có thể nói điều đó khi chỉ quan tâm đến các hoạt động vào ra

nhưng không đề cập đến bộ nhớ, vì các bộ vi xử lý kiến trúc AMD64 có hai

bus ngoài riêng biệt. Như vậy tốt hơn chúng ta nên nói HyperTransport chứ

không phải “external bus” hay “FSB” để tránh nhầm lẫn. Bạn cũng cần biết

một điều rằng các bộ vi xử lý AMD có thể làm việc với một tốc độ clock

dưới tốc độ đã tuyên bố 1.600 MT/s (800 MHz). Thực tế rằng chúng có thể

làm việc ở bất kỳ tốc độ nào trong danh sách đã công bố ở trên.

Chipset có thể nhận ra tốc độ clock thấp hơn với CPU và thậm chí một bước

8bit thay vì 16bit. Trong thực tế, khi các chipset Athlon 64 đầu tiên mới ra

đời, VIA đã tuyên bố rằng chipset của họ cho Athlon 64, K8T800 có nhiều

ưu điểm hơn để cạnh trạnh với HyperTransport bus ở tốc độ 1.600MT/s khi

không làm việc ở tốc độ truyền tải cực đại.

Tại website chính thức của HyperTransport, bạn sẽ thấy rằng họ tuyên bố

tốc độ truyền tải lớn nhất là 12,8 GB/s đối với HyperTransport 1.x. Tốc độ

truyền tải lớn nhất này được thực hiện bằng cách sử dụng các liên kết 32bit –

vì các bộ vi xử lý AMD sử dụng các liên kết 16bit. Nếu làm một phép toán

bạn sẽ nhận được kết quả 6.400 MB/s (32 bits x 800 MHz x 2 / 8). Đây là

một sự hợp tác gấp đôi tốc độ lớn nhất chỉ vì có hai đường dữ liệu được

cung cấp (một cho phát và một cho nhận). Như chúng tôi đã nói trước,

chúng tôi không đồng ý với quan niệm tính toán tốc độ truyền tải như vậy.

HyperTransport 2.0

HyperTransport 2.0 bổ sung thêm một số tốc độ clock mới – tốc độ truyên

tải mới và tính năng mới, bản đồ hóa PCI Express, đây là tính năng sẽ giúp

giao tiếp giữa HyperTransport và PCI Express – hay nói theo cách khác, làm

cho nó dễ dàng hơn đối với các CPU khi giao tiếp với thiết bị PCI Express.

Tốc độ truyền tải và clock mới giới thiệu trong HyperTransport 2.0 được cho

dưới đây, thừa nhận các liên kết 16bit (là cấu hình được sử dụng bởi bộ vi

xử lý AMD):

 1.000 MHz = 2.000 MT/s = 4.000 MB/s

 1.200 MHz = 2.400 MT/s = 4.800 MB/s

 1.400 MHz = 2.800 MT/s = 5.600 MB/s

Các thiết bị HyperTransport 2.0 cũng có thể làm việc với tốc độ truyền tải

của HyperTransport 1.x.

AMD sử dụng HyperTransport 2.0 trên tất cả các CPU AMD64 sockets 939

và AM2 (ngoại trừ trên các CPU Sempron, CPU sử dụng HyperTransport

1.0), mặc dù vậy chỉ hỗ trợ tốc độ HT2 thấp hơn – trong thực tế AMD được

quan tâm đến nhiều hơn trong tính năng bản đồ hóa PCI Express so với mặt

tốc độ truyền tải cao. Tuy vậy các bộ vi xử lý này dựa trên tốc độ truyền tải

lớn nhất của các liên kết HT2 là 4.000 MB/s

Để làm cho một số thứ bớt lộn xộn, AMD sử dụng lại vài lần tên “HT1” để

miêu tả HyperTransport bus của CPU có các liên kết HyperTransport của họ

đang làm việc ở tốc độ 1.000 MHz. Điều này có thể tránh người dùng thừa

nhận rằng chỉ các phần của HT2 mới có thể làm việc đến tốc độ 1.400 MHz

(5.600 MB/s).

Một số người cho rằng liên kết 1.000 MHz/4.000 MB/s HyperTransport này

được sử dụng bởi các bộ vi xử lý socket 939 và AM2 với:

- 2.000 MHz. Điều này có lẽ là vì trên mỗi một chu kỳ clock có hai dữ liệu

được truyền tải, hiệu suất đạt được sẽ bằng với tốc độ clock 2.000MHz đang

được truyền tải chỉ một dữ liệu trên chu kỳ. Kết quả cuối cùng đều như

nhau, như công thức được thể hiện ở trên thay vì sử dụng “2” cho “số dữ

liệu trên số chu kỳ clock” thì lúc này là “1”. Điều tương tự cũng xảy ra đối

với DDR và các bộ nhớ sau này.

- 2.000 MT/s. Đây là tốc độ truyền tải chính thức của AMD. Tên viết tắt của

thuật ngữ này đã được giới thiệu trong phần trên. Đây là cách đúng đắn để

diễn tả ý tưởng trên. Truyền tải trên mỗi giây bằng số tốc độ clock nhân với

số lượng dữ liệu được truyền tải trên mỗi chu kỳ.

- 8.000 MB/s. Điều này xảy ra vì tốc độ truyền tải đã tuyên bố là cho mỗi

đường dữ liệu (có nghĩa là 4.000 MB/s cho mỗi đường dữ liệu vào ra riêng

biệt). Phần này cũng như phần trước mà chúng tôi đã đề cập, và chúng tôi

cũng đã bày tỏ quan điểm không đồng ý với quan niệm này, quan niệm dễ

gây nhầm lẫn.

Một hiểu sai khác là nói rằng bus ngoài hay FSB (Front Side Bus) của

Athlon 64 (hay của bất kỳ CPU dựa trên AMD64 nào) là 2.000MHz. Cái

này cũng có phần đúng. Chúng ta có thể nói điều đó khi chỉ quan tâm đến

các hoạt động vào ra nhưng không đề cập đến bộ nhớ, vì các bộ vi xử lý kiến

trúc AMD64 có hai bus ngoài riêng biệt. Như vậy tốt hơn chúng ta nên nói

HyperTransport chứ không phải “external bus” hay “FSB” để tránh nhầm

lẫn. Cũng giống như HyperTransport 1.x bạn cần phải lưu ý rằng các bộ vi

xử lý socket 939 và AM2 có thể làm việc với bất kỳ tốc độ clock nào dưới

1.000 MHz.

Một lần nữa các giá trị chính thức cho HyperTransport 2.0 lại được thổi

phồng lên như trong một tuyên bố rằng chúng sử dụng các liên kết 32bit và

nhân 2 vì có hai liên kết được cung cấp (một cho phát và một cho nhận dữ

liệu). Và cũng vậy, chúng tôi cũng không đồng ý với quan điểm này.

HyperTransport 3.0

Bên cạnh việc bổ sung thêm tốc độ clock – tốc độ truyền tải mới -

HyperTransport 3.0 còn có một số tính năng mới hơn so với HyperTransport

2.0, như chế độ hoạt động AC, Link Splitting, Hot Plugging và Dynamic

Link Clock/Width Adjustment. Các bộ vi xử lý AMD sắp tới như Phenom,

sẽ sử dụng phiên bản HyperTransport bus mới này.

HyperTransport 3.0 sẽ được sử dụng trên các CPU socket AM2+ và 1207+.

HyperTransport 3.0 có thêm các tốc độ clock mới, vẫn giữ tương thích với

HT1 và HT2:

 1.800 MHz = 3.600 MT/s = 7.200 MB/s

 2.000 MHz = 4.000 MT/s = 8.000 MB/s

 2.400 MHz = 4.800 MT/s = 9.600 MB/s

 2.600 MHz = 5.200 MT/s = 10.400 MB/s

AMD tuyên bố rằng các CPU sắp tới của họ sẽ hỗ trợ tốc độ truyền HT3 lớn

nhất – 10.400 MB/s – AMD gọi là 5,2 GT/s, nghĩa là hàng tỉ truyền tải trong

một giây. Tuy vậy chúng tôi vẫn cho rằng các CPU đó sẽ vẫn chỉ tương

thích với tốc độ thấp hơn. Điều này là vì có hai thứ. Đầu tiên là các CPU nền

tảng HT3 mới có thể được cài đặt trên các bo mạch nền tảng HT2 – ví dụ

như cài đặt một bộ vi xử lý socket AM2+ trên bản mạch socket AM2 – và

như vậy họ cũng sẽ không đạt được hiệu suất I/O tối đa. Thứ hai là tại thời

điểm ra mắt, có thể một vài chipset sẽ không thể chạy với tốc độ truyền tải

10.400 MB/s, ngay cả nếu chúng là HT3, cũng giống như điều xảy ra khi

Athlon 64 ra mắt lần đầu tiên.

Tương tự như điều xảy ra với các tốc độ clock thấp hơn, có thể sẽ có người

gọi tốc độ clock lớn nhất của HT3 thành 5.2 GHz hay tốc độ truyền tải lớn

nhất của nó thành 20.8 GB/s

Một lần nữa tốc độ truyền tải được HyperTransort giới thiệu lại được cường

điệu cao hơn. Họ thông báo HyperTransport 3,0 có một tốc độ truyền tải lớn

41,6 GB/s. Để có được con số này, họ tính toán các liên kết 32-bit (không

phải 16-bit) và nhân số tìm được với hai bởi vì có hai liên kết. Thuật toán

được sử dụng là 2.600 MHz x 32 x 2 / 8 x 2. Như chúng tôi đã giải thích, các

vi xử lý AMD sử dụng các liên kết 16-bit chứ không phải 32-bit và chúng tôi

không đồng ý với phương pháp nhân đôi tốc độ truyền tải này bởi thực tế chỉ

có một liên kết để truyền tải và một liên kết khác để nhận dữ liệu. Chúng tôi

sẽ chỉ đồng ý với điều này nếu các liên kết có cùng hướng.

Ở đây chúng tôi chỉ đi vào giới thiệu các tính năng mới được mở rộng trong

HyperTransport 3.0.

Chế độ hoạt động AC cho phép HyperTransport bus có thể thực hiện trên

các khoảng cách dài hơn. Mục tiêu là cho phép HyperTransport có thể được

sử dụng trực tiếp đến các trường hợp kết nối, bo mạch và các bảng nối đa

năng. Các bộ vi xử lý sẽ không sử dụng tính năng này.

Phân tách kết nối (Link splitting) cho phép liên kết 16bit để có thể được truy

cập như hai liên kết 8bit độc lập. Điều này có thể được sử dụng cho việc

tăng số liên kết có sẵn, cho phép thêm số lượng CPU có thể được kết nối mà

không cần sử dụng bất kỳ phần cứng mở rộng nào.

Hot Plugging cho phép các thiết bị HyperTransport có thể được cài đặt và

hủy bỏ cài đặt khi bus đang chạy. Nó không cho phép bạn thay thế CPU khi

hệ thống được bật vì CPU có một số chân khác bên cạnh HyperTransport,

nhưng tính năng này có thể được sử dụng trên các máy chủ lưu trữ HT3.

Cuối cùng là Dynamic Link Clock/Width Adjustment, tính năng được sử

dụng bởi các CPU AMD nền tảng HT3 – khi chúng được cài đặt trên bo

mạch chủ bằng chipset HT3. Tính năng này cho phép CPU có thể thay đổi

clock và số lượng bít được phát trên mỗi một chu kỳ clock mang tính động.

Ý tưởng ở đây là giảm công suất tiêu thụ. Ví dụ, nếu CPU cảm nhận rằng

HyperTransport bus của nó ở 2.600 MHz (10.400 MB/s) là quá nhiều so với

những gì nó đang thực hiện được thì nó có thể giảm bus xuống 1.000 MHz

(4.000 MB/s) – hoặc bất kỳ một tốc độ gì đó mà nó cho là sẽ phù hợp hơn.

Cũng tương tự với số lượng bit được phát trên mỗi chu kỳ - nó có thể được

giảm từ 16 đến bất cứ số nào mà CPU cảm thấy hợp lý, dựa trên hiệu suất sử

dụng của hệ thống hiện hành.