BUS hệ thống (system BUS) là một phần không thể thiếu trong hệ thống SoC. BUS hệ thống có vai trò chính trong việc trung chuyển dữ liệu giữa các thành phần trong hệ thống SoC. Nó cùng là một trong những thành phần chính ảnh hưởng đến hiệu năng của một chip SoC. Loạt bài viết này sẽ trình bày về một trong những giao thức BUS phổ biến nhất hiện nay là giao thức AXI.
1) BUS là gì?
Trong hệ thống SoC, BUS là thành phần chính kết nối các master và slave. Nó giúp các master có thể truy xuất (đọc/ghi) các slave bằng cách chuyển thông tin điều khiển và dữ liệu từ master đến slave; đồng thời, chuyển dữ liệu và thông tin phản hồi từ slave đến master.
Hãy tưởng tượng, một thành phố có rất nhiều tòa nhà, để di chuyển từ tòa nhà này đến tòa nhà khác thì bạn phải đi qua các con đường. Bus giống như "các con đường" liên kết giữa các master và slave.
Để giao thông trong thành phố có thể thông suốt thì mọi người tham gia giao thông phải tuân thủ luật giao thông. Giao thức bus chính là luật giao thông mà các master và slave phải tuân thủ khi kết nối với hệ thống bus.
Tại các điểm giao nhau như ngã ba, ngã tư, ... hệ thống đèn giao thông được sử dụng để điều tiết quá trình giao thông. Nó sẽ phân xử phía nào được phép đi, phía nào phải đứng chờ. Bus cũng có chức năng phân xử tương tự. Khi nhiều master cùng yêu cầu truy cập đến các slave, bus sẽ phân xử xem yêu cầu nào được đáp ứng trước, yêu cầu nào được đáp ứng sau.
Các tòa nhà nằm trên các con đường trong thành phố đều có số nhà gọi là địa chỉ giúp xác định chính xác vị trí của nó. Các slave kết nối với bus cũng có địa chỉ (address), master muốn truy cập đến slave nào thì phải gửi yêu cầu kèm theo địa chỉ của slave đó. Bus có nhiệm vụ giải mã địa chỉ để đưa các yêu cầu của master đến đúng slave mong muốn.
Tóm lại, bus là có chức năng cơ bản là:
Để giao thông trong thành phố có thể thông suốt thì mọi người tham gia giao thông phải tuân thủ luật giao thông. Giao thức bus chính là luật giao thông mà các master và slave phải tuân thủ khi kết nối với hệ thống bus.
Tại các điểm giao nhau như ngã ba, ngã tư, ... hệ thống đèn giao thông được sử dụng để điều tiết quá trình giao thông. Nó sẽ phân xử phía nào được phép đi, phía nào phải đứng chờ. Bus cũng có chức năng phân xử tương tự. Khi nhiều master cùng yêu cầu truy cập đến các slave, bus sẽ phân xử xem yêu cầu nào được đáp ứng trước, yêu cầu nào được đáp ứng sau.
Các tòa nhà nằm trên các con đường trong thành phố đều có số nhà gọi là địa chỉ giúp xác định chính xác vị trí của nó. Các slave kết nối với bus cũng có địa chỉ (address), master muốn truy cập đến slave nào thì phải gửi yêu cầu kèm theo địa chỉ của slave đó. Bus có nhiệm vụ giải mã địa chỉ để đưa các yêu cầu của master đến đúng slave mong muốn.
Tóm lại, bus là có chức năng cơ bản là:
- Liên kết (interconnect) giữa các master, slave hoặc giữa các bus khác trong hệ thống
- Phân xử truy cập (arbitrate)
- Giải mã địa chỉ (decode)
Hình 1: Minh họa về BUS hệ thống |
2) AXI là gì?
AXI (Advanced eXtensible Interface) là một trong các giao thức BUS (BUS protocol) trong họ AMBA (Advanced Microcontroller Bus Architecture) được phát triển bởi hãng ARM. Giao thức AXI được sử dụng phổ biến vì đây là giao thức mở, có nhiều đặc điểm hỗ trợ các hệ thống hiệu năng cao (high-performance) và tần số cao (high-frequency). Những đặc điểm này gồm:
Bạn đọc lưu ý, loạt bài này không có mục tiêu "dịch" lại tài liệu chuẩn mà tập trung minh họa, giải thích về giao thức bus AXI từ đó làm rõ từng đặc điểm và phân tích những ưu điểm của chuẩn bus này.
- (1) AXI tách riêng pha truyền địa chỉ (address), thông tin điều khiển (control) với pha truyền dữ liệu (data)
- (2) Hỗ trợ việc trao đổi dữ liệu unaligned và hỗ trợ write strobe
- (3) Hỗ trợ các transaction theo cơ chế burst và chỉ cần phát địa chỉ đầu tiên của burst
- (4) Tách riêng kênh dữ liệu đọc (read) và kênh dữ liệu ghi (write)
- (5) Hỗ trợ phát nhiều địa chỉ chồng lấn (multiple outstanding)
- (6) Các transaction có thể hoàn thành không theo thứ tự (out-of-order)
- (7) Cho phép chèn thêm các tầng thanh ghi giúp timing của BUS nói riêng và của hệ thống tốt hơn.
Bạn đọc lưu ý, loạt bài này không có mục tiêu "dịch" lại tài liệu chuẩn mà tập trung minh họa, giải thích về giao thức bus AXI từ đó làm rõ từng đặc điểm và phân tích những ưu điểm của chuẩn bus này.
2) Giao thức AXI quy định điều gì?
Giao thức AXI quy định về chuẩn giao tiếp (interface) giữa:
Đọc và ghi gọi chung là một truy cập (access). Một truy cập được hiểu là một transaction nên trong bài viết, đôi khi tác giả sử dụng một trong hai thuật ngữ này với cùng một ý nghĩa.
3) Cấu trúc phân kênh của AXI
AXI hoạt động dựa trên 5 loại kênh độc lập. "Độc lập" hiểu theo nghĩa là mỗi kênh có vai trò, nhiệm vụ khác nhau và việc hoàn thành nhiệm vụ của mỗi kênh không bị phụ thuộc vào kênh khác chứ không có nghĩa là "không liên quan đến nhau". 5 kênh này gồm:
Một truy cập (access) hoặc một transaction bao gồm 4 thông tin cơ bản:
Một transaction đọc được quản lý bởi 2 kênh:
Cấu trúc phân kênh này thể hiện rõ đặc điểm "(4) Tách riêng kênh dữ liệu đọc (read) và kênh dữ liệu ghi (write)" đã nói phía trên. Việc tách riêng này giúp transaction ghi và transaction đọc có thể thực hiện song song mà không cần phải theo thứ tự.
Giao thức APB (Advanced Peripheral Bus) là một ví dụ về việc không tách riêng kênh dữ liệu đọc và kênh dữ liệu ghi nên tại một thời điểm, chỉ đọc hoặc ghi được truyền trên interface.
4) Transaction đọc
Một transaction đọc gồm hai bước xử lý:
Một transaction ghi gồm 3 bước xử lý:
Chú ý, response của transaction ghi chỉ phát khi burst đã hoàn thành và chỉ một response được phát để báo hiệu cho một burst. Điều này khác với transaction đọc, mỗi dữ liệu đọc kèm theo một response và giá trị response có thể khác nhau. Xét lại ví dụ hình 4, trong transaction A, response 0 có thể báo hiệu dữ liệu đọc thứ nhất không "không lỗi" nhưng response 1 có thể báo lỗi dữ liệu đọc thứ 2. Các giá trị (loại response) sẽ được trình bày cụ thể ở những phần sau.
Bài này đã giải thích 3 đặc điểm (1) (4) và (5) của giao thức AXI. Các đặc điểm khác sẽ được làm rõ trong các bài tiếp theo.
Tham khảo:
1. ARM, AMBA® AXI™ and ACE™ Protocol Specification, 2011
- Một master và interconnect (bus)
- Một slave và interconnect (bus)
- Một master và một slave (một master kết nối trực tiếp với một slave)
Hình 2: Interface và interconnect (bus) |
Interface là một nhóm các tín hiệu giao tiếp giữa hai thành phần. Interconnect (bus) là một thiết kế thường gồm nhiều interface, mỗi interface được kết nối với với một master, một slave hoặc một interconnect khác. Trong một interface giữa 2 interconnect, một bus sẽ đóng vai trò như master và bus còn lại có vai trò như slave. Xét hình minh họa 2, giữa BUS 0 và BUS 1 có một giao tiếp (interface), nếu BUS 0 là master thì BUS 1 là slave hoặc ngược lại.
Cũng như các giao thức bus khác, AXI quy định cơ chế, cách thức xử lý cho 2 hoạt động cơ bản là:
- Đọc (read hoặc read access): master lấy dữ liệu từ slave
- Ghi (write hoặc write access): master phát dữ liệu cho slave
3) Cấu trúc phân kênh của AXI
AXI hoạt động dựa trên 5 loại kênh độc lập. "Độc lập" hiểu theo nghĩa là mỗi kênh có vai trò, nhiệm vụ khác nhau và việc hoàn thành nhiệm vụ của mỗi kênh không bị phụ thuộc vào kênh khác chứ không có nghĩa là "không liên quan đến nhau". 5 kênh này gồm:
- Kênh địa chỉ đọc (Read address channel), gọi tắt là kênh AR, truyền thông tin địa chỉ và thông tin điều khiển của một transaction đọc từ master đến slave
- Kênh dữ liệu đọc (Read data channel), gọi tắt là kênh R, truyền dữ liệu đọc và thông tin response của một transaction đọc từ slave đến master
- Kênh địa chỉ ghi (Write address channel), gọi tắt là kênh AW, truyền thông tin địa chỉ và thông tin điều khiển của một transaction ghi từ master đến slave
- Kênh dữ liệu ghi (Write data channel), gọi tắt là kênh W, truyền dữ liệu ghi từ master đến slave
- Kênh đáp ứng ghi (Write response channel), gọi tắt là kênh B, truyền thông tin response của một transaction ghi từ slave đến master.
Hình 3: Các kênh trong một interface AXI |
- Thông tin địa chỉ (address) để xác định đích (vị trí, slave) mà transaction sẽ được xử lý.
- Thông tin điều khiển (control) để xác định thuộc tính của transaction như loại burst, độ dài (length) burst, kích thước (size) burst và các thuộc tính khác.
- Thông tin dữ liệu (data) của transaction
- Thông tin response để xác định trạng thái của transaction có bị lỗi hay không.
Một transaction đọc được quản lý bởi 2 kênh:
- Kênh AR
- Kênh R
- Kênh AW
- Kênh W
- Kênh B
Cấu trúc phân kênh này thể hiện rõ đặc điểm "(4) Tách riêng kênh dữ liệu đọc (read) và kênh dữ liệu ghi (write)" đã nói phía trên. Việc tách riêng này giúp transaction ghi và transaction đọc có thể thực hiện song song mà không cần phải theo thứ tự.
Giao thức APB (Advanced Peripheral Bus) là một ví dụ về việc không tách riêng kênh dữ liệu đọc và kênh dữ liệu ghi nên tại một thời điểm, chỉ đọc hoặc ghi được truyền trên interface.
4) Transaction đọc
Một transaction đọc gồm hai bước xử lý:
- Phía Master gửi một thông tin địa chỉ và thông tin điều khiển để khởi động một transaction đọc trên kênh AR.
- Phía slave gửi các dữ liệu kèm thông tin response trên kênh R. Số lượng dữ liệu và thông tin response được quy định bởi thông tin điều khiển phát từ phía master trên kênh AR.
Hình 4: Transaction đọc |
Hoạt động này thể hiện rõ đặc điểm "(1) AXI tách riêng pha truyền địa chỉ (address), thông tin điều khiển (control) với pha truyền dữ liệu (data)" đã nói phía trên.
Việc tách riêng này giúp transaction kế tiếp có thể được khởi tạo mà không cần phải chờ transaction trước hoàn thành. Ví dụ hình 4 thể hiện 2 transaction đọc được xử lý chồng lấn lên nhau. Điều này thể hiện đặc điểm "(5) Hỗ trợ phát nhiều địa chỉ chồng lấn (multiple outstanding)".
5) Transaction ghiMột transaction ghi gồm 3 bước xử lý:
- Phía master gửi một thông tin địa chỉ và thông tin điều khiển để khởi động một transaction ghi trên kênh AW
- Phía master gửi các dữ liệu ghi trên kênh W. Số lượng dữ liệu ghi được quy định bởi thông tin điều khiển phát từ phía master trên kênh AW
- Phía slave gửi thông tin response khi burst ghi đã hoàn thành.
Hình 5: Transaction ghi |
Bài này đã giải thích 3 đặc điểm (1) (4) và (5) của giao thức AXI. Các đặc điểm khác sẽ được làm rõ trong các bài tiếp theo.
Tham khảo:
1. ARM, AMBA® AXI™ and ACE™ Protocol Specification, 2011
Bài viết rất hay cho người mới bắt đầu.
Trả lờiXóaCảm ơn tác giả rất nhiều.
Cám ơn thầy/anh về bài viết rất hay và nhiều thông tin bổ ích, đọc tài liệu của thầy/anh so với bài viết tiếng Anh rất dễ hiểu và giúp e tiết kiệm rất nhiều thời gian trong việc tiềm hiểu giao thức AXI bus này ạ.
Trả lờiXóaCám ơn vì bài viết ạ.
Trả lờiXóaEm cảm ơn ạ. Nội dung rõ ràng, chắt lọc được những ý chính và dễ hiểu hơn các tài liệu AXI của ARM nhiều.
Trả lờiXóa