Bài đăng nổi bật

Redo log, undo log và binary log

Đây là ba loại log mà bạn đã từng nghe khi tiếp cận mysql. Trong các cơ sở dữ liệu quan hệ (RDBMS) khác, cũng sẽ có các thành phần có vai tr...

Thứ Tư, 20 tháng 1, 2016

QPI - Quick Path Interconnect

Trước khi nói đến QPI, chúng ta sẽ điểm lại một số công nghệ lịch sử.

Front side bus: Bus dùng chung cho tất cả các core của CPU. Giới hạn bandwidth của front side bus là điểm hạn chế performance của hệ thống và đó cũng là lý do phải thay thế FSB.


Tiếp sau front side bus, intel sử dụng kiến trúc dual independent bus, bằng cách tăng số bus giữa processor với chip set ngoài để nâng cao bandwidth. Hai bus này hoạt động độc lập nhưng có một số data chung bị duplicate trên hai bus nên chipset được thiết kế thêm một snoop filter đóng vai trò cache các data chung này


Tiếp tục tăng số bus lên ta có kiến trúc dedicated high-speed interconnect


Trong tất cả các kiến trúc trên thì memory controller vẫn bị tách rời khỏi CPU. Phải đợi những tiến bộ sau này về công nghệ nano, CPU mới được tích hợp memory controller thẳng vào trong. Công nghệ giao tiếp QPI được dùng để kết nối các processor với nhau và giữa processor với IO hub. Trong hình vẽ dưới, QPI được biểu thị bởi các cặp đường mũi tên một chiều. Đối thủ của QPI là HyperTransport do AMD phát triển.


QPI bus có 20 bits, có hai chiều, mỗi chiều 20 bits, nhờ vậy QPI cho phép truyền nhận đồng thời 20 bits. Trong 20 bits này chỉ có 16 bits truyền data, còn 4 overhead bits dùng để kiểm tra và sửa lỗi. Khác với FSB là share bus cho cả read/write request, QPI dùng các đường bus riêng biệt nên tối ưu hoạt động read/write.


Tuy bus width của QPI thấp hơn so với FSB nhưng bù lại xung nhịp hoạt động của nó lại cao hơn. Thử tính với 16 bits data, xung nhịp 6.4 GHz, transfer per clock cycle = 1 thì bandwidth của QPI bằng 16 x 6.4 x 1 / 8 = 12.8 GB/s cho mỗi đường so với bandwidth tối đa khi dùng FSB chỉ đến 4.2 GB/s (xem hình vẽ đầu tiên). Và hơn nữa, QPI không phải vận chuyển các memory request (do memory controller đã được tích hợp vào CPU) nên sẽ ít bận rộn hơn so với FSB.

Đi vào chi tiết của QPI:


Chúng ta thấy, mỗi bits của QPI cần hai dây (wire), như vậy mỗi đường QPI theo một chiều cần 20 x 2 + 4 dây dùng cho clock cycle = 84 dây. So với FSB cần 150 dây thì số dây ít hơn hẳn.

Hiện tại QPI vẫn đang được sử dụng rộng rãi cho mọi CPU intel hiện nay. Trên các dòng sản phẩm server, tôi thường thấy thông số Intel QPI speed và # of QPI Links biểu thị tốc độ QPI và số đường QPI trên các chủng loại CPU có thể công tác làm việc với CPU khác. Như vậy có lẽ trên server, QPI thường chỉ được dùng để làm bus giao tiếp giữa các CPU với nhau. Dùng để nối giữa CPU và IO hub có lẽ là QPI dùng cho dòng sản phẩm desktop. Thông tin này tôi chưa chắc chắn lắm, chỉ là phỏng đoán từ quan sát chứ chưa phải kết luận từ tài liệu chính thức.

Hãy xem
http://ark.intel.com/products/75786/Intel-Xeon-Processor-E5-2430L-v2-15M-Cache-2_40-GHz
có QPI link = 2, số max configuration CPU là 2, cho biết CPU Xeon-E5-2430L có thể làm việc với một CPU khác.

Còn:
http://ark.intel.com/products/64620/Intel-Xeon-Processor-E5-1660-15M-Cache-3_30-GHz-0_0-GTs-Intel-QPI
thông số QPI link và speed đều bằng 0, max configuration = 1, chứng tỏ nó là CPU hoạt động đơn lẻ.

Về đơn vị của QPI speed là GT/s, nghĩa là Gigatransfer/s, đơn vị tính bằng xung nhịp x số transfer trong một clock cycle mà không tính đến số bits truyền. Ví dụ 7.2GT/s thì tương ứng: 7.2 GT/s * 16 / 8 = 14.4 GB/s (Công thức tính bandwidth = clock cycle x số transfer trong một clock cycle x số byte, đơn vị sẽ là GB/s nếu clock cycle là GHz và MB/s nếu clock cycle là MHz)

Tham khảo:

http://www.intel.com/content/www/us/en/io/quickpath-technology/quick-path-interconnect-introduction-paper.html
https://en.wikipedia.org/wiki/Front-side_bus
http://www.hardwaresecrets.com/everything-you-need-to-know-about-the-quickpath-interconnect-qpi/

1 nhận xét: