24/05/2018, 19:34

Các bus trong vi xử lý và máy vi tính

Một trong những hoạt động và chức năng cơ bản của máy tính là truyền số liệu (data transfer). Sự hoạt động của máy tính do các bộ vi xử lý điều khiển. Bộ vi xử lý và các chip hỗ trợ khác đến lượt mình cũng thường xuyên phải truyền số liệu giữa ...

Một trong những hoạt động và chức năng cơ bản của máy tính là truyền số liệu (data transfer). Sự hoạt động của máy tính do các bộ vi xử lý điều khiển. Bộ vi xử lý và các chip hỗ trợ khác đến lượt mình cũng thường xuyên phải truyền số liệu giữa các khối, bộ phận trong và ngoài chúng với nhau.

Vì có rất nhiều các bộ phận , khối riêng rẽ trong bản thân các Chip và các đường truyền số liệu rất đa dạng, nên một cách hợp lý ta không thể thực hiện các đường nối giữa các bộ phận , khối từng đôi một với nhau mà ta nối chung tất cả các lối vào/ lối ra của các khối riêng rẽ với nhau lên một hệ thống các đường dẫn chung; hệ thống này được gọi là bus.

Các bus trong một hệ thống máy tính

Các bộ phận, khối được nối lên bus phải thoả mãn một yêu cầu là có khả năng được cắt ra hoặc nối trở lại theo lệnh của điều khiển. Lúc một output được cắt ra khỏi bus, nó ở trạng thái trở kháng cao (High impedance, Hi-Z).

Quy tắc nghiêm ngặt của truyền số liệu là trong mỗi thời điểm, tối đa chỉ có một output được cấp số liệu lên bus.

Do trong mỗi thời điểm một output thường cần phải đồng thời cấp số liệu cho nhiều input, cho nên nó cần phải có khả năng phát ra (source) ở mức logic cao hoặc nuốt vào (sink) ở mức logic thấp, một dòng điện lớn tới vài chục mA cấp cho các input đó, đóng vai trò tải của output.

Thông số đặc trưng cho đường bus là trở kháng vào của nó (gồm có điện trở thuần và dung kháng). Thường điện trở thuần khoảng vài K là thoả mãn yêu cầu của output, chỉ có dung kháng của bus gây khó khăn cho các thiết bị output, (vì nó cản trở tăng tốc độ biến thiên của các mức điện áp trên bus), do đó dung kháng được xem là thông số đặc trưng của bus.

Xét trường hợp một bus có điện dung vào 100 pF. Nếu muốn tốc độ biến thiên điện áp trên bus là du/dt =2V/10ns thì thiết bị output phải nuốt được dòng điện điện dung là i = dq/dt = C(du/dt) = 20 mA.

Căn cứ theo cấu hình của các thiết bị nối vào bus, người ta phân chúng thành 3 nhóm như sau:

- Output cấp số liệu cho bus.

- Input nhận số liệu từ bus.

- In/ Out khi là input, khi là output.

Bus trong vi xử lý và bus bộ xử lý

Trong các bộ vi xử lý có một hệ thống các bus dùng để truyền số liệu, lệnh, các tín hiệu điều khiển ,... , giữa các khối bên trong của nó. Ngoài ra có một hệ thống các bus đưa ra ngoài qua các chân của nó. Các đường bus trong được điều khiển bởi khối điều khiển tuỳ thuộc hoặc vào nội dung lệnh đuợc giải mã hoặc theo các điều khiển ngắt của bên ngoài đưa vào vi xử lý. Các đường bus này hoạt động theo nhịp của một clock bên trong vi xử lý.

Xét với ví dụ các đường bus trong kiến trúc của vi xử lý 8088 như đã giới thiệu trong chương III.

Các bus trong vi xử lý truyền số liệu giữa các khối với nhau, có hai loại đường truyền, một chiều và hai chiều. Hệ các đường bus nối với các bộ phận, khối bên ngoài vi xử lý gồm 20 đường địa chỉ (AD0 - AD 19), 8 đường số liệu ( ), và các đường thuộc bus điều khiển.

Chính khối điều khiển phát các tín hiệu điều khiển các bus.

Bus bộ vi xử lý là đường truyền dẫn giữa CPU và các chip hỗ trợ trung gian. Những chip hỗ trợ này được gọi là bộ chip (chip set). Bus này dùng để truyền dữ liệu giữa CPU và bus hệ thống chính hoặc giữa CPU và cache ngoài.

Vì mục đích của bus bộ xử lý để gửi hoặc nhận thông tin từ CPU với tốc độ nhanh nhất có thể, nên bus này hoạt động nhanh hơn nhiều so với bất kỳ bus nào khác trong hệ thống và đảm bảo tránh hiện tượng tắc nghẽn ở đây. Bus bộ xử lý bao gồm bus dữ liệu, bus địa chỉ và bus điều khiển. Trong một hệ thống thiết kế cho VXL Pentium, bus bộ xử lý có 64 đường dữ liệu, 32 đường địa chỉ. Pentium Pro và Pentium II có 36 đường địa chỉ.

Bus bộ xử lý hoạt động ở tốc độ đồng hồ cơ sở giống như CPU chạy ngoại trú. Ví dụ Pentium II 333MHz chạy ở tốc độ đồng hồ 333MHz nội trú nhưng chỉ ở 66,6 MHz ngoại trú.

Tốc độ truyền của bus bộ xử lý được xác định bằng cách nhân độ rộng dữ liệu với tốc độ đồng hồ cơ sở rồi chia cho 8.

Khi thiết kế các bộ vi xử lý, có thể tuỳ ý lựa chọn loại bus bên trong vi xử lý, còn với các bus liên hệ với bên ngoài cần phải xác định rõ các quy tắc làm việc cũng như các đặc điểm kỹ thuật về điện và cơ khí để người thiết kế Main Board có thể ghép nối vi xử lý với các thiết bị khác. nói cách khác, các bus này phải tuân theo một chuẩn nhất định. Tập các quy tắc của chuẩn còn được gọi là nghi thức bus (bus protocol).

Trong thế giới máy tính có rất nhiều loại bus khác nhauđược sử dụng, các bus này nói chung là không tương thích với nhau. Sau đây là một số loại bus được dùng phổ biến:

Tên bus Lĩnh vực áp dụng
- Camac Vật lý hạt nhân
- EISA Một sô hệ thống dùng bộ VXL 8036
- IBM PC, PC/AT Máy tính IBM PC, IBM/PC/AT
- Massbus Máy PDP - 1 và VAX
- Microchannel Máy PS/2
- Multibus I Một số hệ thống có VXL 8088, 8086
- Multibus II Một số hệ thống có VXL 80386
- Versabus Một số hệ thống dùng VXL Motorola
- VME Một số hệ thống dùng VXL 68x0 của Motorola

Người ta thường phân loại bus theo ba cách sau:

1. Theo tổ chức phần cứng (như các loại bus nêu trên)

2. Theo nghi thức truyền thông (bus đồng bộ và không đồng bộ).

3. Theo loại tín hiệu truyền trên bus (bus địa chỉ, bus dữ liệu ...)

Sự làm việc của các bus

Thường có nhiều thiết bị nối với bus, một số là thiết bị tích cực và có thể đòi hỏi truyền thông tin trên bus, trong khi đó lại có các thiết bị thụ động chờ các yêu cầu từ các thiết bị khác. Các thiết bị tích cực được gọi là chủ bus (master), còn các thiết bị thụ động là tớ (slave).

Khi CPU ra lệnh cho bộ điều khiển đĩa đọc/ ghi một khối dữ liệu thì CPU là master cò bộ điều khiển đĩa là slave. Tuy nhiên khi bộ điều khiển đĩa ra lệnh cho bộ nhớ nhận dữ liệu mà nó đọc từ đĩa thì nó lại giữ vai trò của master.

Bus Driver và Bus Receiver.

Tín hiệu điện mà các thiết bị trong máy tính phát ra thường không đủ mạnh để điều khiển được bus, nhất là khi bus khá dài và có nhiều thiết bị nối với nó. Chính vì vậy mà hầu hết các bus master được nối với bus thông qua một chip được gọi là bus driver, về căn bản đó là bộ khuyếch đại tín hiệu số. Tương tự như vậy, hầu hết các slave bus được nối với bus thông qua bus receiver. Đối với các thiết bị có thể khi thì đóng vai trò master, khi thì đóng vai trò slave, người ta sử dụng một chip kết hợp, gọi là transceiver. Các chip này đóng vai trò ghép nối và thường là các thiết bị 3 trạng thái, cho phép có thể ở trạng thái thứ ba: hở mạch (còn gọi là thả nổi).

Giống như MPU, bus có các đường địa chỉ, đường số liệu và đường điều khiển. Tuy nhiên không nhất thiết phải có ánh xạ một - một giữa các tín hiệu ở các chân ra của MPU và các đường dây của bus.

Những vấn đề quan trọng nhất liên quan đến thiết kế bus là: Nhịp đồng hồ bus (sự phân chia thời gian, hay còn gọi là bus cloking), cơ chế trọng tài bus (bus arbitration), xử lý ngắt và xử lý lỗi.

Các bus có thể được chia theo nghi thức truyền thông tin thành hai loại riêng biệt là bus đồng bộ và bus không đồng bộ phụ thuộc vào việc sử dụng nhịp đồng hồ bus.

Bus đồng bộ (Synchronous bus)

Bus đồng bộ có một đường dây điều khiển bởi một bô dao động thạch anh, tín hiệu trên đường dây này có dạng sóng vuông, với tần số thường nằm trong khoảng 5MHz - 50 MHz. Mọi hoạt động bus xảy ra trong một số nguyên lần chu kỳ này và được gọi là chu kỳ bus.

Giản đồ thời gian của một bus đồng bộ với tần số đồng hồ là 4MHz, như vậy chu kỳ bus là 250nS.

- T1 bắt đầu bằng sườn lên của tín hiệu đồng hồ , trong một phần thời gian của T1, MPU đặt địa chỉ của byte cần đọc lên bus địa chỉ. Sau khi tín hiệu địa chỉ được thiết lập giá trị mới, MPU đặt các tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} và RD¯ size 12{ {overline { ital "RD"}} } {} tích cực. Tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} (memory request, truy cập bộ nhớ) chứ không phải thiết bị I/O; còn tín hiệu RD¯ size 12{ {overline { ital "RD"}} } {} (Read) chọn Read.

- T2 là thời gian cần thiết để bộ nhớ giải mã địa chỉ và đưa dữ liệu lên bus dữ liệu.

- T3 tại sườn xung xuống của T3, MPU nhận dữ liệu trên bus dữ liệu, chứa vào thanh ghi bên trong MPU và chốt dữ liệu. Sau đó MPU đảo các tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} và RD¯ size 12{ {overline { ital "RD"}} } {}.

Như vậy đã kết thúc một thao tác đọc, tại chu kỳ máy tiếp theo MPU có thể thực hiện một thao tác khác.

- TAD : theo giản đồ thời gian, TAD size 12{ <= {}} {} 110ns, đây là thông số do nhà sản xuất đảm bảo, MPU sẽ đưa ra tín hiệu địa chỉ không chậm hươn 110ns tính từ thời điểm giữa sườn lên của T1.

- TDS : Giá trị nhỏ nhất là 50ns, thông số này cho phép dữ liệu được đưa ra ổn định trên bus dữ liệu ít nhất là 50ns trước thời điểm giữa sườn xuống của T3. Yêu cầu về thời gian này đảm bảo cho MPU đọc dữ liệu liệu tin cậy.

Khoảng thời gian bắt buộc đối với TAD và TDS cũng nói lên rằng, trong trường hợp xấu nhất, bộ nhớ chỉ có 250 + 250+ 125 - 110 - 50 = 465ns tính từ thời điểm có tín hiệu địa chỉ cho tới khi nó đưa dữ liệu ra bus địa chỉ. Nếu bộ nhớ không đáp ứng đủ nhanh, nó cần phải phát tín hiệu xin chờ WAIT¯ size 12{ {overline { ital "WAIT"}} } {} trước sườn xuống của T2. Thao tác này đưa thêm vào một trạng thái chờ (wait state), khi bộ nhớ đã đưa ra dữ liệu ổn định, nó sẽ đảo tín hiệu WAIT¯ size 12{ {overline { ital "WAIT"}} } {} thành WAIT.

- TML: Đảm bảo rằng tín hiệu địa chỉ sẽ được thiết lập trước tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} ít nhất là 60ns. Khoảng thời gian này là quan trọng nếu tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} điều khiển sự tạo ra tín hiệu chọn chip CS, bởi vì một số chip nhớ đòi hỏi phải nhận được tín hiệu địa chỉ trước tín hiệu chọn chip. Như vậy không thể chọn chip nhớ với thời gian thiết lập là 75ns.

- TM, TRL: Các giá trị bắt buộc đối với 2 đại lượng này có ý nghĩa là cả hai tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} và RD¯ size 12{ {overline { ital "RD"}} } {} sẽ là tích cực trong khoảng thời gian 85ns tính từ thừi điểm xuống của xung đồng hồ T1. Trong trường hợp xấu nhất, chip nhớ chỉ có 250 + 250 - 85- 50 = 365ns sau khi hai tín hiệu trên là tích cực để đưa dữ liệu ra bus. Sự bắt buộc về thời gian này bổ sung thêm sự bắt buộc thời gian với tín hiệu đồng hồ.

- TMH, TRH: Hai đại lượng này cho biết cần có bao nhiêu thời gian để các tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} và RD¯ size 12{ {overline { ital "RD"}} } {} sẽ được đảo sau khi dữ liệu đã được MPU đọc vào.

- TDH: Cho biết bộ nhớ cần phải lưu dữ liệu bao lâu trên bus sau khi tín hiệu RD¯ size 12{ {overline { ital "RD"}} } {} đã đảo.

Block Transfer, truyền tải khối dữ liệu.

Ngoài các chu kỳ đọc/ ghi, một số bus đồng bộ còn hỗ trợ truyền dữ liệu theo khối. Khi một thao tác đọc/ ghi bắt đầu, bus master báo cho slave biết có bao nhiêu byte cần truyền đi, sau đó slave sẽ liên tục đưa ra mỗi chu kỳ một byte, cho đến khi đủ số byte được thông báo. Như vậy, khi đọc dữ liệu theo khối, n byte dữ liệu cần n+2 chu kỳ, thay cho 3n chu kỳ như trước.

Cách khác làm cho bus truyền dữ liệu nhanh hơn là làm cho các chu kỳ ngắn lại. Trong ví dụ trên, mỗi byte được truyền đi trong 750ns, vậy bus có dải thông là 1.33MBs. Nếu xung đồng hồ là 8MHz, thời gian một chu kỳ chỉ còn một nửa, giải thông sẽ là 2.67MBs.

Tuy vậy việc giảm chu kỳ bus dẫn đến các khó khăn về mặt kỹ thuật, các bit tín hiệu truyền trên các đường dây khác nhau trong bus không phải luôn có cùng vận tốc, dẫn đến một hiệu ứng, gọi là bus skew.

Khi nghiên cứu về bus cần phải quan tâm đến vấn đề tín hiệu tích cực nên là mức thấp hay mức cao. Điều này tuỳ thuộc vào người thiết kế bus xác định mức nào là thuận lợi hơn.

Bảng Giá trị của một số thông số thời gian

Ký hiệu Tham số Min Max
T AD Thời gian trễ của tín hiệu địa chỉ 110
T ML Thời gian địa chỉ ổn định trước tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} 60
T M Thời gian trễ của MREQ¯ size 12{ {overline { ital "MREQ"}} } {} so với sườn xuống của tín hiệu đồng hồ T1 85
T RL Thời gian trễ của RD¯ size 12{ {overline { ital "RD"}} } {} so với sườn xuống của tín hiệu đồng hồ T1 85
T DS Thời gian thiết lập dữ liệu trước sườn xuống của tín hiệu đồng hồ T3 50
T MH Thời gian trễ của MREQ¯ size 12{ {overline { ital "MREQ"}} } {} so với sườn xuống của tín hiệu đồng hồ T3 85
T RH Thời gian trễ của RD¯ size 12{ {overline { ital "RD"}} } {} so với sườn xuống của tín hiệu đồng hồ T3 85
T DH Thời gian lưu trữ dữ liệu từ lúc đảo tín hiệu RD¯ size 12{ {overline { ital "RD"}} } {} 0

Bus không đồng bộ (asynchronous bus)

Bus không đồng bộ không sử dụng một xung đồng hồ định nhịp. Chu kỳ của nó có thể kéo dài tuỳ ý và có thể khác nhau đối với các cặp thiết bị trao đổi tin khác nhau.

Làm việc với bus đồng bộ dễ dàng hơn do nó được định thời một cách gián đoạn, tuy vậy chính đặc điểm này cũng dẫn đến nhược điểm. Thứ nhất là: mọi công việc được tiến hành trong những khoảng thời gian là bội số nhịp đồng hồ bus, nếu một thao tác nào đó của CPU hay bộ nhớ có thể hoàn thành trong 3,2 chu kỳ thì nó sẽ phải kéo dài thành 4 chu kỳ. Điều hạn chế lớn nữa là đã chọn chu kỳ bus và đã xây dựng bộ nhớ, I/O Card cho bus này thì khó có thể tận dụng được được những tiến bộ của công nghệ. Chẳng hạn sau khi đã xây dựng bus với sự định thời như trên, công nghệ mới đưa ra các chip CPU và chip nhớ có thời gian chu kỳ là 100ns (thay cho 250ns như cũ), chúng vẫn cứ phải chạy với tốc độ thấp như các CPU và chip nhớ loại cũ, bởi vì nghi thức bus đòi hỏi chip nhớ phải đưa ra dữ liệu và ổn định dữ liệu ngay trước thời điểm ứng với sườn xuống của T3. Nếu có nhiều thiết bị khác nhau nối với một bus, trong đó có một số thiết bị có thể hoạt động nhanh hơn các thiết bị khác thì cần phải đặt bus hoạt động phù hợp với thiết bị chậm nhất.

Bus không đồng bộ ra đời nhằm khắc phục các nhược điểm của bus đồng bộ. Hình 3 minh hoạ sự hoạt động của bus không đồng bộ, trong đó master yêu cầu đọc bộ nhớ.

Trước hết master cần phát ra địa chỉ nhớ mà nó muốn truy cập, sau đó phát tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} tích cực để báo rằng nó muốn truy cập bộ nhớ chứ không phải cổng I/O. Tín hiệu này là cần thiết vì bộ nhớ và các cổng I/O đều có thể dùng chung một miền địa chỉ. Tiếp theo master phải phát tín hiệu RD¯ size 12{ {overline { ital "RD"}} } {} tích cực để bên slave biết rằng master sẽ thực hiện thao tác đọc chứ không phải là thao tác ghi.

Các tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} và RD¯ size 12{ {overline { ital "RD"}} } {} được đưa ra sau tín hiệu định địa chỉ bao lâu tuỳ thuộc vào tốc độ của master. Sau khi hai tín hiệu này đã ổn định, master sẽ phát tín hiệu đặc biệt, là MSYN¯ size 12{ {overline { ital "MSYN"}} } {} (Master SYNchronization) ở mức tích cực để báo cho slave biết rằng các tín hiệu cần thiết đã sẵn sàng trên bus, slave có thể nhận lấy. Khi slave nhận các tín hiệu này, nó sẽ thực hiện công việc với tốc độ nhanh nhất có thể được (nhanh chóng đưa dữ liệu của ô nhớ yêu cầu lên bus dữ liệu). Khi hoàn thành, slave sẽ phát tín hiệu SSYN¯ size 12{ {overline { ital "SSYN"}} } {} (Slave SYNchronization) tích cực.

Khi master nhận được tín hiệu SSYN¯ size 12{ {overline { ital "SSYN"}} } {}tích cực, nó biết rằng dữ liệu của slave đã sẵn sàng và thực hiện việc chốt dữ liệu, sau đó đảo các đường địa chỉ cũng như các tín hiệu MREQ¯ size 12{ {overline { ital "MREQ"}} } {} và RD¯ size 12{ {overline { ital "RD"}} } {} và MSYN¯ size 12{ {overline { ital "MSYN"}} } {}.

Khi slave nhận được sự đảo tín hiệu MSYN¯ size 12{ {overline { ital "MSYN"}} } {} thành không tích cực, nó biết rằng một chu kỳ đã kết thúc và đảo tín hiệu SSYN¯ size 12{ {overline { ital "SSYN"}} } {}. Bây giờ bus lại trở lại trạng thái ban đầu, mọi tín hiệu đều là không tích cực, tất cả sẵn sàng chờ bus master mới.

Trên giản đồ thời gian của bus không đồng bộ, ta sử dụng mũi tên để thể hiện nguyên nhân và kết quả. Việc đưa MSYN¯ size 12{ {overline { ital "MSYN"}} } {}lên mức tích cực dẫn đến việc truyền dữ liệu ra bus dữ liệu và đồng thời cũng dẫn đến việc slave phát ra tín hiệu SSYN¯ size 12{ {overline { ital "SSYN"}} } {}tích cực. Đến lượt mình, tín hiệu SSYN¯ size 12{ {overline { ital "SSYN"}} } {}lại gây ra sự đảo mức của các đường địa chỉ, MREQ¯ size 12{ {overline { ital "MREQ"}} } {}và RD¯ size 12{ {overline { ital "RD"}} } {} và MSYN¯ size 12{ {overline { ital "MSYN"}} } {}. Cuối cùng sự đảo mức của MSYN¯ size 12{ {overline { ital "MSYN"}} } {} lại gây ra sự đảo mức tín hiệu SSYN¯ size 12{ {overline { ital "SSYN"}} } {}và kết thúc một chu kỳ đọc.

Full handshake

Tập các tín hiệu phối hợp với nhau như vậy được gọi là Full handshake, nó chủ yếu gồm có 4 sự kiện sau:

1. MSYN¯ size 12{ {overline { ital "MSYN"}} } {}được đặt lên mức tích cực.

2. SSYN¯ size 12{ {overline { ital "SSYN"}} } {}được đặt tích cực để đáp lại tín hiệu MSYN¯ size 12{ {overline { ital "MSYN"}} } {}

3. MSYN¯ size 12{ {overline { ital "MSYN"}} } {}được đảo để đáp lại tín hiệu SSYN¯ size 12{ {overline { ital "SSYN"}} } {}

4. SSYN¯ size 12{ {overline { ital "SSYN"}} } {} được đảo để đáp lại tín hiệu MSYN¯ size 12{ {overline { ital "MSYN"}} } {} thành không tích cực.

Ta có thể nhận thấy Full handshake là quan hệ nhân quả, độc lập với thời gian. Nếu một cặp master-slave nào đó hoạt động chậm hoặc thời gian bị kéo dài thì cặp master-slave kế tiếp không hề bị ảnh hưởng.

Tuy ưu điểm của bus không đồng bộ rất rõ ràng, nhưng trong thực tế phần lớn các bus đang được sử dụng là loại bus đồng bộ. Lý do căn bản là các hệ thống sử dụng bus đồng bộ là dễ thiết kế hơn. CPU chỉ cần chuyển các mức tín hiệu cần thiết sang trạng thái tích cực là các chip nhớ đáp ứng ngay, không cần tín hiệu phản hồi. Chỉ cần các chip được chọn phù hợp thì mọi hoạt động đều trôi chảy.

Trong hệ thống máy tính không phải chỉ có CPU làm bus master, thực tế các chip I/O cũng có lúc phải làm chủ bus để có thể đọc hoặc ghi vào bộ nhớ và để gọi ngắt; các bộ đồng xử lý cũng có thể làm chủ bus. Như vậy cần phải giải quyết vấn đề tranh chấp khi có từ hai thiết bị trở lên đồng thời muốn làm chủ bus. Để giải quyết vấn đề này cần có một cơ chế trọng tài để tránh sự xung đột. Cơ chế trọng tài có thể là tập trung hoặc không tập trung.

Trọng tài bus tập trung

Hình 4 là một ví dụ đơn giản về trọng tài bus tập trung. ở đây, một trọng tài bus duy nhất sẽ quyết định thiết bị nào được là chủ bus tiếp theo. Nhiều bộ VXL có đơn vị trọng tài bus được thiết kế ngay trong chip VXL, trong một số máy tính mini, đơn vị trọng tài bus nằm ngoài CPU.

Theo cơ chế này, trọng tài chỉ có thể biết là có yêu cầu chiếm dụng bus hay không, chứ không biết có bao nhiêu đơn vị muốn chiếm bus. Khi trọng tài bus nhận được một yêu cầu, nó sẽ phát ra một tín hiệu cho phép trên đường dây bus grant (cho dùng bus). Đường dây này nối qua tất cả các thiết bị vào/ ra theo kiểu nối tiếp.

Khi thiết bị nằm gần trọng tài nhất nhận được tín hiệu cho phép, nó sẽ kiểm tra xem có phải chính nó đã phát yêu cầu chiếm bus không? Nếu đúng thì nó sẽ chiếm lấy bus và không truyền tiếp tín hiệu cho phép trên đường dây. Nếu nó kiểm tra thấy không phải là yêu cầu của mình thì tiếp tục truyền tín hiệu cho phép tới thiết bị kế tiếp trên đường dây.

Trọng tài bus tập trung có một mức, mắc nối tiếp

Một số loại bus có nhiều mức độ ưu tiên, với mỗi mức ưu tiên có một đường dây yêu cầu bus và một đường dây cho chiếm bus. Hình 5 là một ví dụ về bus có hai mức (các bus trong thực tế thường có 4, 8 hay 16 mức). Mỗi thiết bị trong hệ thống máy tính nối với một trong các mức yêu cầu bus, các thiết bị thường được sử dụng hơn được gắn với đường dây có mức ưu tiên cao hơn.

Trọng tài bus tậpức, mắc nối tiếp

Nếu có một số thiết bị ở các mức ưu tiên khác nhau cùng yêu cầu, trọng tài bus sẽ chỉ phát tín hiệu cho phép đối với yêu cầu có mức ưu tiên cao nhất. Trong số các thiết bị có cùng mức ưu tiên, thiết bị gần trọng tài bus hơn sẽ có quyền ưu tiên cao hơn.

Một số trọng tài bus có đường dây thứ ba nối tới các thiết bị để các thiết bị xác nhận việc nhận được tín hiệu cho phép và chiếm dụng bus, gọi là đường dây biên nhận acknowledgement (ACK). Ngay sau khi một thiết bị phát tín hiệu tích cực trên đường dây ACK, trọng bus có thể đảo tín hiệu trên các đường dây trên các đường dây yêu cầu bus và cho phép dùng bus thành mức không tích cực. Kết quả là các thiết bị khác có thể đòi hỏi chiếm dụng bus trong khi thiết bị đầu tiên đang dùng bus. Khi kết thúc phiên làm việc hiện thời, bus master kế tiếp sẽ được lựa chọn. Cách làm việc như vậy làm tăng hiệu quả sử dụng bus, nhưng cần thêm một đường truyền tín hiệu ACK và cấu trúc của các thiết bị cũng phức tạp hơn. Các chip của Motorola sử dụng các bus loại này.

Trọng tài bus không tập trung

Trong cơ chế trọng tài bus không tập trung, không cần sử dụng một đơn vị riêng làm trọng tài bus, nhờ vậy giảm được giá thành phần cứng. Trong một số loại máy tính khác nhau, người ta đã sử dụng một vài kiểu trọng tài bus theo cơ chế này.

Trọng tài bus không tập trong trong multibus

Trong Multibus, người ta cho phép có thể lựa chọn cơ chế trọng tài bus không tập trung hoặc không tập trung, cơ chế trọng tài bus không tập trung được thực hiện theo sơ đồ trên hình 6

Trọng tài bus không tập trung trong Multibus

Người ta chỉ sử dụng 3 đường dây, không phụ thuộc vào số lượng thiết bị nối với bus. Bao gồm:

+ Yêu cầu chiếm dụng bus (bus request)

+ Trạng thái bus (bus busy), được bus master đặt ở mức tích cực

+ Trọng tài bus, được mắc nối tiếp qua các thiết bị

Khi không có thiết bị nào yêu cầu chiếm bus, đường dây trọng tài bus truyền mức tích cực tới tất cả các thiết bị. Khi một đơn vị nào đó muốn chiếm dụng bus, đầu tiên nó kiểm tra bus có rỗi không và kiểm tra đầu vào của đường trọng tài bus, nếu thấy có điện áp IN = 5V thì nó có thể xin bus bằng cách đưa tín hiệu yêu cầu bus (Request) và xoá tín hiệu OUT, tức là đặt OUT = 0V. Do đó các thiết bị ưu tiên thấp hơn sẽ không xin được bus. Lúc này nó trở thành bus master.

Một chức năng quan trọng của bus là xử lý ngắt. Khi CPU ra lệnh cho một thiết bị trong máy tính thực hiện việc đọc, ghi hay xử lý tin, nó thường chờ đợi tín hiệu ngắt do thiết bị I/O phát ra khi hoàn thành công việc được CPU yêu cầu. Khi nhận được tín hiệu ngắt, CPU đáp ứng ngay, đó có thể là việc nhận dữ liệu do thiết bị I/O chuyển về, cũng có thể là việc tiếp tục gửi dữ liệu tới thiết bị I/O hoặc CPU sử dụng bus cho một thao tác khác ... . Như vậy chính ngắt phát ra tín hiệu yêu cầu bus.

Vì có thể có nhiều thiết bị ngoại vi cùng phát tín hiệu ngắt, cho nên cũng cần có một cơ chế trọng tài giống như đối với các bus thông thường. Giải pháp thường dùng là gán các mức độ ưu tiên cho các thiết bị và sử dụng một trọng tài tập trung để trao quyền ưu tiên cho các thiết bị và sử dụng một trongh tài tập trung để trao quyền ưu tiên cho các thiết bị quan trọng thường xuyên được sử dụng.

Bus IBM PC

Đây là ví dụ điển hình về một loại bus được sử dụng trong các hệ thống thương mại, nó được sử dụng rộng rãi trong các hệ thống vi xử lý dựa trên chip 8088. Hầu hết họ PC, kể cả các máy tương thích đều sử dụng bus này. Chính bus IBM PC tạo nên cơ sở cho bus IBM PC/AT và nhiều loại bus khác. Bus này có 62 đường dây, trong đó có 20 đường địa chỉ, 8 đường số liệu và các đường tín hiệu khác. .... Được liệt kê trong bảng 5.1

Về mặt vật lý, bus IBM PC được thiết kế ngay trên bo mạch chính và có khoảng gần chục đầu nối dạng khe cắm (slot) để cắm các card mở rộng, trên mỗi khe cắm có 62 chân được chia thành hai hàng.

Tín hiệu Số dây In Out giải thích
OSC 1 x Chân dao động (14,31818 MHz)
CLK 1 x Xung đồng hồ (4,77 MHHz)
RESET 1 x Tín hiệu reset CPU và các thiết bị I/O
A0 - A9 20 x Các đường dây địa chỉ
D0 - D7 8 x Các đường truyền dữ liệu
ALE 1 x Chốt địa chỉ
(MEMR) 1 x Đọc bộ nhớ
(MEMW) 1 x Ghi vào bộ nhớ
(IOR) 1 x Đọc cổng I/O
(IOW) 1 x Ghi ra cổng I/O
AEN 1 x Adress ENable, yêu cầu bus địa chỉ
(IOCHCHK) 1 x I/O Chanel Check
IOCHRDY 1 x I/O Chanel Ready
IRQ2 - IRQ7 6 x Các đường yêu cầu ngắt
DRQ1 - DRQ3 3 x DMA Request
DACK0 - DACK3 4 x DMA Acknowleage
T/C 1 x Terminal/Count
Power 5
GND 3
Reserved 1

Tín hiệu đồng hồ OSC và CLK

Các máy IBM PC đầu tiên sử dụng các phần tử dao động thạch anh, ở tần số 14,31818 MHz, tần số này được chọn phải thoả mãn việc tạo ra tín hiệu đồng bộ màu hệ NTSC. Tần số này cao hơn so với chuẩn 8088 (tần số cực đại là 5 MHz), do đó nó được chia ba thành 4,77MHz. Tần số 4,77 MHz được dùng làm đồng hồ chính để xác định chu kỳ bus. Tín hiệu tần số 4,77 MHz cũng có trên bus IBM PC và ký hiệu là CLK. Tín hiệu này không cân xứng như tín hiệu đông hồ 14,31818 MHz mà trong một chu kỳ bao gồm 2/3 thời gian ở mức thấp và 1/3 thời gian ở mức cao.

Tín hiệu RESET

Tín hiệu RESET trên bus do chip 8284A tạo ra. Để RESET CPU, các mạch điện bên ngoài gửi tín hiệu tới 8284A, nó sẽ đặt tín hiệu reset lên mức tchs cực, buộc CPU và các thiết bị I/O khở tạo lại.

Các đường địa chỉ và dữ liệu

CPU không nối trực tiếp với các đường địa chỉ và đương số liệu của bus, mà thông qua các chip khác. Các đường địa chỉ được chốt bằng cách dùng 3 chip 74LS373, mỗi chip là một bộ 8 thanh ghi chốt, tuy nhiên chỉ sử dụng 20 trong số 24 đường có thể.

Các đường dữ liệu sẽ được lấy mẫu (đọc nhanh giá trị) hoặc cung cấp giá trị trong những thời gian xác định, như trong sườn dương của một tín hiệu đồng hồ nào đó, vì vậy không cần chốt. Các đường dữ liệu của bus được điều khiển bởi bus transceiver (chip 74LS245). Chân DIR xác định hướng của tín hiệu là đi đến hay đi ra từ CPU.

Lý do chính của việc nối các chân của MPU với bên ngoài thông qua các bộ đệm chính là vì nó được chế tạo theo công nghệ MOS, CPU không có khả năng cung cấp đủ dòng để điều khiển tất cả các phần tử nối với bus. Các chip làm bộ đệm dùng công nghệ TTL có khả năng cung cấp đủ dòng cho cả các thiết bị nối với bus.

Ngoài ra còn lý do khác là, khi có một thiết bị nào đó khác CPU muốn trở thành bus master (như DMAC), CPU cần phải thả nổi các bus. Phương pháp đơn giản nhất được áp dụng là thiết bị đó phải phát tín hiệu AEN (Address ENable) để đảo tín hiệu cho phép đưa ra trên các thanh ghi chốt và transceiver, làm cho các bus được thả nổi.

Tín hiệu ALE (Address Latch Enable)

Tín hiệu ALE được đặt mức tích cực khi CPU đang điều khiển các đường tín hiệu địa chỉ, cho phép các chip 74LS373 biết khi nào cần chốt địa chỉ lại. Tín hiệu này củ bus cũng cho bộ nhớ và các chip I/O biết khi nào các tín hiệu trên bus địa chỉ là hợp lệ.

Các đường tín hiệu MEMR ¯ size 12{ {overline { ital "MEMR"}} } {} , MEMW ¯ size 12{ {overline { ital "MEMW"}} } {} , IOR ¯ size 12{ {overline { ital "IOR"}} } {} , IOW ¯ size 12{ {overline { ital "IOW"}} } {}

Để điều khiển việc đọc/ ghi vào bộ nhớ hoặc các thiết bị vào/ra. Nhờ các tín hiệu này, bus cung cấp hai thông gian địa chỉ riêng biệt, một cho MEM và một cho I/O. Bộ nhớ sẽ không phản ứng khi thấy tín hiệu IOR¯ size 12{ {overline { ital "IOR"}} } {}, IOW¯ size 12{ {overline { ital "IOW"}} } {} ở mức tích cực.

CPU sử dụng các tín hiệu S0¯ size 12{ {overline {S0}} } {}- S2¯ size 12{ {overline {S2}} } {} đưa vào chip điều khiển bus 8288 để tạo ra các tín hiệu MEMR¯ size 12{ {overline { ital "MEMR"}} } {}, MEMW¯ size 12{ {overline { ital "MEMW"}} } {}, IOR¯ size 12{ {overline { ital "IOR"}} } {}, IOW¯ size 12{ {overline { ital "IOW"}} } {}cùng với tín hiệu ALE. Chip điều khiển bus cũng nhận tín hiệu điều khiển ANE từ bus, tín hiệu này do một thiết bị muốn trở thành bus master đưa ra, khi nhận được tín hiệu ANE, chip điều khiển bus sẽ phát tín hiệu điều khiển các chip chốt địa chỉ nà chip bus transceiver thả nổi bus.

Tín hiệu IOCHCHK ¯ size 12{ {overline { ital "IOCHCHK"}} } {} (I/O CHanel CHeck)

Tín hiệu này sẽ tích cực khi có lỗi chẵn /lẻ bị phát hiện trên bus. Tín hiệu này sẽ tác động mmọt ngắt NMI.

Tín hiệu IOCHRDY (I/O CHanel ReaDY)

Tín hiệu này do bộ nhớ đưa ra khi tốc độ hoạt động của nó thấp, yêu cầu CPU cho thêm một số chu kỳ để đợi, bằng cách chèn wait states vào các chu kỳ đọc/ghi bộ nhớ.

Các tín hiệu IRQ2-IRQ7.

Là các tín hiệu do các thiết bị ngoại vi đưa ra, đưa đến chip điều khiển ngắt 8259A. Khi có tín hiệu gửi đến chip điều khiển ngắt, nó sẽ kiểm soát các tín hiệu này và đưa ra một tín hiệu yêu cầu ngắt tới CPU và đặt số hiệu vectơ ngắt lên đường dữ liệu khi CPU cần đến. IRQ0 thường được mạch đồng hồ và IRQ1 được bàn phím sử dụng.

Các tín hiệu liên quan đến DMA

Các tín hiệu còn lại nói chung liên quan đến hoạt động DMA, chẳng hạn khi CPU yêu cầu ổ đĩa đọc một khối dữ liệu, mạch điều khiển ổ đĩa sẽ chờ nhận được byte đầu tiên từ ổ đĩa đưa ra, sau đó phát ra một yêu cầu trở thành bus master để ghi byte đó vào bộ nhớ.

Chip 8237A được INTEL thiết kế nhằm quản lý các nghi thức bus và thực hiện DMA trong đó có việc taưng địa chỉ bộ nhớ và giảm con đếm sau khi truyền mỗi byte. Việc này nó thực hiện thay cho các thiết bị I/O, giúp giảm giá thành của chúng.

Về căn bản, chip 8237A là một CPU nhỏ, có các chương trình được ghi sẵn bên trong. Khi 8088 muốn bắt đầu hoạt động DMA đối với một thiết bị ngoại vi nào đó, nó nạp số hiệu vào thiết bị, địa chỉ ô nhớ, số byte, hướng truyền và các thông tin khác vào các thanh ghi bên trong 8237A. Khi chip điều khiển đã sẵn sàng đọc hoặc ghi byte đầu tiên, nó đặt mức tích cực lên một trong các đường DRQ của bus để đưa vào chip 8237A. Khi nhận được tín hiệu, 8237A đòi chiếm bus và sẵn sàng truyền một byte. Chip 8237A phát tín hiệu DACK¯ size 12{ {overline { ital "DACK"}} } {}tới chip điều khiển báo cho nó biết hãy ghi hoặc đọc byte của mình (trong thao tác đọc hoặc ghi tương ứng). Trong khoảng một chu kỳ này, chip 8237A điều khiển hoạt động của bus như một bus master.

Chip 8237A có 4 kênh độc lập và có thể quản lý đồng thời 4 đường truyền.

Tín hiệu T/C (Terminal/Count)

Đường T/C được chip 8237A đặt mức tích cực khi con đếm byte (byte count) bàng 0, báo cho bộ điều khiển I/O biết rằng công việc yêu cầu đã hoàn tất, đã đến lúc báo hiệu cho 8258A gọi ngắt tới CPU.

Bus IBM PC/AT

Bus IBM PC/AT là bước phát triển tiếp theo của thế hệ bus IBM PC nhằm phát huy được những khả năng hơn hẳn của bộ VXL 80286 so với 8088 trước nó. Với bus địa chỉ 24 dây, có khả năng đánh địa chỉ cho 224 = 16MB bộ nhớ và có bus dữ liệu 16 bit.

Với giải pháp mở rộng PC bus, bổ sung thêm vào các khe cắm cũ một đoạn khe cắm ngắn, trên đó có 36 dây tín hiệu, tăng thêm cho bus địa chỉ 4 dây, bus dữ liệu 8 dây, các đường yêu cầu ngắt, kênh DMA, ... . Nhờ vậy các card mở rộng trước đây vẫn dùng cho IBM PC có thể dùng cho IBM PC/AT.

Ngoài việc mở rộng bus, tần số tín hiệu đồng hồ bus cũng được tăng từ 4,77 MHz ở PC bus thành 8MHz, nhờ đó tốc độ truyền thông trên bus cũng tăng lên nhiều.

Năm 1991 tổ chức IEEE (Institute of Electrical and Electronic Engineers) đã đưa ra tiêu chuẩn quốc tế cho bus của máy AT, gọi là bus ISA (Industrial Standard Architecture)

Các nhà sản xuất PC khác đã đưa ra một chuẩn khác, đó là bus EISA (Extended ISA), về căn bản bus này là sự mở rộng bus PC/AT thành 32 bit, giữ nguyên tính tương thích với các máy tính và các card mở rộng đã có.

Ở thế hệ PS/2, thế hệ sau của IBM PC/AT một bus hoàn toàn mới được áp dụng, bus Micro chanel.

Bus PCI

Vào đầu năm 1992, Intel đã thành lập nhóm công nghệ mới. Nhằm nghiên cứu cải thiện các đặc tính kỹ thuật và những hạn chế của các bus hiện có như: bus ISA, bus EISA.

PCI (Peripheral Component Interconnect, liên kết các thành phần ngoại vi). Định chuẩn bus PCI đã được đưa ra vào tháng 6 năm 1992 và được cập nhật vào tháng 4 năm 1993, đã thiết kế lại bus PC truyền thống bằng cách bổ sung thêm một bus khác vào giữa CPU và bus I/O.

Bus PCI thường được gọi là bus mezzanine vì nó bổ sung thêm một tầng khác vào cấu hình bus truyền thống. PCI bỏ qua bus I/O tiêu chuẩn, nó sử dụng bus hệ thống để tăng tốc độ đồng hồ bus lên và khai thác hết lợi thế của đường dẫn dữ liệu của CPU.

Thông tin được truyền qua bus PCI ở 33MHz và độ rộng dữ liệu đầy đủ của CPU. Khi bus ấy được sử dụng để nối với CPU 32 bit, dải thông là 132 MBit/s, được tính theo công thức: 33MHz*32bit/8 = 132MBit/s. Khi bus ấy được sử dụng với những hệ thống bổ sung 64 bit, dải thông tăng gấp đôi, nghĩa là tốc đọ truyền dữ liệu đạt tới 264MBs. Lý do chíng mà bus PCI đã tăng tốc độ nhanh hơn các bus khác là nó có thể hoạt động đồng thời với bus vi xử lý. CPU có thể được xử lý dữ liệu trong các cache ngoại trú, trong khi bus PCI phải truyền thông tin liên tục giữa các thành phần khác của hệ thống, đây là ưu điểm thiết kế chính của bus PCI.

Định chuẩn PCI có ba cấu hình, mỗi cấu hình được thiết kế cho một kiểu hệ thống riêng biệt với những quy định nguồn riêng. Định chuẩn 5V cho những hệ thống máy tính văn phòng, định chuẩn 3,3V cho các hệ thống máy tính xách tay và những định chuẩn chung cho những bo mẹ và các cạc hoạt động trong hai kiểu ấy.

Bus nối tiếp chung USB

Bus USB (Universal Serial Bus) là một công nghệ bus mới đầy triển vọng, nhanh chóng phổ biến trong những thế máy tính ngày nay. Chủ yếu USB là cáp cho phép nối lên tới 127 thiết bị bằng cách sử dụng chuỗi xích. Tuy nhiên nó truyền dữ liệu không nhanh bằng FireWire, ở tốc độ 12MBs nó có khả năng đáp ứng cho hầu hết các thiết bị ngoại vi. Định chuẩn USB được đưa ra vào năm 1996 do một hội đồng gồm những đại diện của các nhà sản xuất máy tính lớn như Compaq, Digital, IBM, NEC và Northen Telecom.

Một ưu điểm nổi bật của USB là những thiết bị ngoại vi tự nhận dạng, một đặc trưng hết sức thuận lợi cho việc cài đặt, xác lập các thiết bị ngoại vi. Đặc trưng này hoàn toàn tương thích với những công nghệ PnP và cung cấp tiêu chuẩn công nghệ cho kết nối tương lai. Hơn nữa, những thiết bị USB có khả năng cắm nóng.

0