2.1.1. Định nghĩa BUS:
Bus là đường truyền tín hiệu điện nối các thiết bị khác nhau trong một hệ thống máy tính. Bus có nhiều dây dẫn được gắn trên mainboard, trên các dây này có các đầu nối đưa ra, các đầu này được sắp xếp và cách nhau những khoảng quy định để có thể cắm vào đó những I/O board hay board bộ nhớ (bus hệ thống – system bus).
2.1.2. Phân loại các Bus trong hệ thống:
Các Bus trong hệ thống máy tính
Cũng có những bus dùng cho mục đích chuyên biệt, thí dụ nối 1 vi xửlý với 1 hay nhiều vi xửlý khác hoặc nối với bộnhớcục bộ (local bus). Trong vi xửlý cũng có một số bus đểnối các thành phần bên trong của bộ vi xử lý với nhau. Người thiết kếchip vi xửlý có thểtuỳý lựa chọn loại bus bên trong nó, còn với các bus liên hệ 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í của bus đểngười thiết kế mainboard có thể ghép nối chip vi xử lý với các thiết bịkhác. Một sốbus được sử 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 có chip 80386 IBM PC,
PC/AT
Máy IBM/PC, IBM/PC/AT Massbus Máy PDP – 11, và VAX Microchannel Máy PS/2
Multibus II Một số hệ thống có chip 80386
Versabus Một số hệ thống có chip xử lý của Motorola VME Một số hệ thống có chip xử lý họ 68x0 của
Motorola
Nói cách khác, các bus này phải tuân theo 1 chuẩn nào đó. Tập các quy tắc của chuẩn còn được gọi là giao thức bus (bus protocol)
Ngoài ra, 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.
Bus thường phân loại theo 3 cách sau: • Theo tổchức phần cứng (nhưtrên)
• Theo giao thức truyền thông ( bus đồng bộvà không đồng bộ) • Theo loại tín hiệu truyền trên bus ( bus địa chỉ, bus dữliệu,…) 2.1.3. Bus hệ thống:
Thường có nhiều thiết bị nối với bus, một số thiết bị là tích cực (active) có thể đòi hỏi truyền thông trên bus, trong khi đó có các thiết bịthụ động chờ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ủ (master) còn thiết bịthụ động là tớ(slave).
Ví dụ: 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òn bộ điều khiển đĩa là slave. Tuy nhiên, bộ điều khiển đĩa ra lệnh cho bộ nhớ nhận dữliệu thì nó lại giữvai trò master.
2.1.3 Bus Driver và Bus Receiver:
Tín hiệu điện trong máy tính phát ra thường không đủ để điều khiển bus, nhất là khi bus khá dài và có nhiều thiết bị nối với nó. Chính vì thế mà hầu hết các bus master được nối với bus thông qua 1 chip gọi là bus driver, vềcơbản nó là một bộkhuếch đại tín hiệu số. Tương tự như vậy, hầu hết các slave được nối với bus thông qua bus receiver. Đối với các thiết
bị khi thì đóng vai trò master, khi thì đóng vai trò slave, người ta sử dụng 1 chip kết hợp gọi là transceiver. Các chip này đóng vai trò ghép nối và là các thiết bị3 trạng thái, cho phép nó có thể ởtrạng thái thứ 3 – hởmạch (thảnổi). Giống như vi xử lý, 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 có ánh xạ1 – 1 giữa các tín hiệu ởcác chân ra của vi xử lý và các đường dây của bus. Thí dụ: một số chíp vi xử lý có 3 chân ra, truyền ra các tín hiệu báo chíp vi xử lý đang thực hiện các thao tác MEMR, MEMW, IOR, IOW hay thao tác khác, một số Bus điển hình có các đường trên. Các vấn đềquan trọng nhất liên quan đến thiết kếbus là: xung clock bus (sự phân chia thời gian, hay còn gọi là bus blocking), cơ chế phân xử bus (bus arbitration), xử lý ngắt và xửlý lỗi.
Các bus có thể được chia theo giao thức truyền thông 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 clock bus.
2.1.4 Bus đồng bộ (Synchronous bus):
Bus đồng bộ có một đường đ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 ÷ 50MHz. 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.
Chu kỳ đọc trong Bus đồng bộ
Hình trên là giản đồthời gian của một bus đồng bộvới tần số xung clock là 4MHz, nhưvậy chu kỳ bus là 250ns.
Giảsử đọc 1 byte từbộ nhớchiếm 3 chu kỳbus (750ns), tương ứng với T1, T2, T3 nhưhình vẽ. Vì tất cả các tín hiệu điện thay đổi mức không phải là tức thời, nên trên hình vẽcó các sườn xung, ta giảsử các sườn xung kéo dài 10ns.
• T1 bắt đầu bằng cạnh dương của xung clock, trong một phần thời gian của T1, vi xử lý đặt địa chỉ byte cần đọc lên bus địa chỉ. Sau khi tín hiệu địa chỉ được xác lập, vi xử lý đặt các tín hiệu MREQ và RD tích cực mức thấp, tín hiệu MREQ (Memory Request) - xác định truy xuất bộ nhớ chứ không phải thiết bị I/O, còn tín hiệu RD - chọn đọc chứkhông phải ghi dữliệu.
• T2: 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 cạnh âm của T3, vi xử lý nhận dữ liệu trên bus dữ liệu, chứa vào thanh ghi bên trong vi xử lý và chốt dữ liệu. Sau đó vi xử lý đảo các tín hiệu MREQ v à R D .
Như vậy thao tác đọc đã hoàn thành, tại chu kỳ máy tiếp theo vi xử lý có thể thực hiện thao tác khác. Các giá trịcụ thể về thời gian của hình vẽ trên có thể được giải thích chi tiết như sau:
• TAD: TAD <110ns, nghĩa là nhà sản xuất vi xử lý đảm bảo rằng trong mọi chu kỳ đọc toán hạng từ bộ nhớ, vi xửlý sẽ đưa ra tín hiệu địa chỉkhông nhiều hơn 110 ns tính từ thời điểm cạnh dương của T1. • TDS: giá trịnhỏ nhất là 50ns, có nghĩa là nhà sản xuất bộ nhớphải đảm
bảo rằng dữ liệu đã ổn định trên bus dữ liệu ít nhất là 50ns trước điểm giữa cạnh âm của T3. Yêu cầu này đảm bảo cho vi xửlý đọc dữliệu tin cậy.
Khoảng thời gian bắt buộc đối với TAD và TDS xác định rằng trong trường hợp xấu nhất, bộ nhớ chỉcó 250 + 250 + 125 – 110 – 50 = 465 ns tính từ thời điểm có tín hiệu địa chỉ cho tới khi tạo ra dữ liệu trên bus dữ liệu. Nếu bộ nhớ không có khảnăng đáp ứng đủ nhanh, nó phát tín hiệu
WAIT trước cạnh âm của T2. Thao tác này đưa thêm các trạng thái chờ – wait state (tức là đưa thêm vào 1 chu kỳ bus), khi bộ nhớ đã đưa ra tín hiệu ổn định, nó sẽ đảo WAIT thành WAIT
• TML: đảm bảo tín hiệu địa chỉ sẽ được xác lập trước tín hiệu MREQ ít nhất 60ns. Khoảng thời gian này sẽ quan trọng nếu tín hiệu MREQ điều khiển quá trình tạo tín hiệu chon chip CS hay CE do 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 75ns.
• TM, TRL cho phép hai tín hiệu MREQ và RD tích cực trong khoảng thời gian 85ns tính từ thời điểm xuống của xung clock T1. Trong trường hợp xấu nhất, chíp nhớ chỉ có 250 + 250 – 85 – 50 = 365ns sau khi 2 tín hiệu trên tích cực để đưa dữ liệu ra bus dữ liệu. 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 clock.
• TMH, TRH: thời gian đểcác tín hiệu MREQ và RD được đảo sau khi dữliệu đã được vi xử lý nhận vào.
• TDH: Thời gian bộ nhớcần giữ data trên bus sau khi tín hiệu RD đã đảo.
Giản đồ thời gian một chu kỳ đọc trên bus đồng bộ đã được đơn giản hoá so với thực tế, trong đó các tín hiệu cần sử dụng lớn hơn nhiều. Giá trị tới hạn của các thông số cho trong bảng sau:
Ký hiệu Tham số Min (ns) Max (ns)
TAD Thời gian trể của địa chỉ 100
TML Thời gian địa chỉ ổn định trước MREQ bù
TM Thời gian trể của MREQ so với cạnh âm của T1
85 TRL Thời gian trễ của RD bù so sườn xuống
của tín hiệu đồng bộ T1
85 TDS Thời gian thiết lập dữ liệu trước sườn
xuống của tín hiệu xung clock( tín hiệu đồng hồ)
50 TMH Thời gian trể của MREQ bù so với sườn
xuống của tín hiệu đồng hồ T3
85 TRH Thời gian trể của RD bù so với sườn
xuống của tín hiệu đồng hồ T3
85 TDH Thời gian lưu trữ dữliệu từlúc đảo tín
hiệu RD bù
0 Truyền theo khối:
Ngoài các chu kỳ đọc/ghi, một số bus truyền dữliệu đồng bộ còn
hỗ trợtruyền dữ liệu theo khối. Khi bắt đầu thao tác đọc khối, bus master báo cho slave biết số byte cần được truyền đi, thí dụ truyền con số này đi trong chu kỳ T1, sau đó đáng lẽ truyền đi 1 byte, slave đưa ra trong mỗi chu kỳ 1 byte cho tới 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ỳ clock chứ không phải 3n chu kỳ.
Một cách khác để cho truyền dữ liệu nhanh hơn là giảm chu kỳ. Ở ví dụ trên: 1 byte được truyền đi trong 750ns, vậy bus có tốc độtruyền
1.33MBps. Nếu xung clock có tần số8MHz, thời gian 1 chu kỳ chỉcòn một nửa, tốc độsẽlà 2.67MBps. Tuy nhiên, giảm chu kỳ bus dẫn đến khó khăn về mặt kỹ thuật, các tín hiệu truyền trên các đường khác nhau không phải luôn có cùng tốc độ, dẫn đến hiệu ứng bus skew. Điều quan trọng là thời gian chu kỳ phải dài hơn so với skew đểtránh việc những khoảng thời gian được số hoá lại trởthành các đại lượng biến thiên liên tục.
2.1.5 Bus bất đồng bộ( Asynchronous bus)
Bus bất đồng bộ không sử dụng xung clock đồng bộ, 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ị khác nhau. Làm việc với các 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. Mọi công việc được tiến hành trong khoảng thời gian là bội số của xung clock, nếu 1 thao tác nào đó của vi xử lý hay bộ nhớ hoàn thành trong 3.1 chu kỳ thì nó cũng sẽphải kéo dài trong 4 chu kỳ. Khi đã 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 những tiến bộ của công nghệ. Chẳng hạn sau khi đã xây bus với sự định thời nhưtrên,
công nghệmới đưa ra các vi xửlý và bộ nhớ có thời gian chu kỳ là 100ns chứ không còn là 750ns như cũ, thì chúng vẫn chạy với tốc độ thấp nhưcác vi xử lý, bộ nhớ loại cũ, bởi vì giao thức bus đòi hỏi bộnhớphải đưa được dữ liệu ra và ổn định trước thời điểm cạnh âm của T3. Nếu có nhiều thiết bị khác nhau cùng nối với 1 bus, trong đó có thể có một số thiết bị hoạt động nhanh hơn 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ịcó tốc độthấp nhất.
Bus bất đồng bộ ra đời nhằm khắc phục những nhược điểm của bus đồng bộ. Trước hết master phát ra địa chỉ nhớ mà nó muốn truy cập, sau đó phát tín hiệu MREQ bù tích cực đểxác định cần truy xuất bộ nhớ. Tín hiệu này cần thiết khi bộ nhớ và các cổng I/O sử dụng chung miền địa chỉ. Sau khi phát địa chỉ, bên master cũng phải phát tín hiệu 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 ghi.
Các tính hiệu MREQ bù và RD bù được đưa ra sau tín hiệu địa chỉmột khoảng thời gian phụ thuộc tốc độ hoạt động của master. Sau khi 2 tín hiệu này đã ổn định, master sẽ phát ra tính hiệu MSYN (master synchrization) ở 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 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, đưa dữ liệu của ô nhớ được yêu cầu lên bus dữ liệu. Khi hoàn thành slave sẽ phát tín hiệu SSYN (slave synchronization) tích cực.
Chu kỳ đọc của Bus bất đồng bộ
Master nhận được tín hiệu SSYN tích cực thì xác định được dữ liệu của slave đã sẵn sàng nên 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, RD, và SSYN. Khi slave nhận được tín hiệu MSYN không tích cực, nó xác định kết thúc chu kỳ và đảo tín hiệu SSYN làm bus trở lại trạng thái ban đầu, mọi tín hiệu đều không tích cực, chờbus master mới. Trên giản đồthời gian của bus bất đồng bộ, ta sửdụng mũi tên đểthể hiện nguyên nhân và kết quả MSYN 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 tích cực, đến lượt mình tín hiệu SSYN lại gây ra sự đảo mức của các đường địa chỉ, MREQ bù, RD bù, và SSYN. Cuối cùng sự đảo mức của MSYN lại gây ra sự đảo mức tín hiệu SSYN và kết thúc chu kỳ.
Tập các tín hiệu phối hợp với nhau như vậy được gọi là bắt tay toàn phần (full handshake), chủ yếu gồm 4 tín hiệu sau:
• MSYN tích cực.
• SSYN bù tích cực để đáp lại tín hiệu MSYN.
• MSYN được đảo để đáp lại tín hiệu SSYN bù (tích cực). • SSYN bù được đảo để đáp lại tính hiệu MSYN không tích cực.
Ta có thểnhận thấy bắt tay toàn phần là độc lập thời gian, mỗi sựkiện được gây ra bởi 1 sự kiện trước đó chứ không phải bởi xung clock. Nếu 1 cặp master-slave nào đó hoạt động chậm thì cặp master-slave kếtiếp không hềbị ảnh hưởng. Tuy ưu điểm của bus bất đồng bộ rất rõ ràng, nhưng trong thực tếphần lớn các bus đang sử dụng là loại đồng bộ. Nguyên nhân là các hệ thống sử dụng bus đồng bộ dễ thiết kế hơn. Vi xử lý 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à bộ nhớ đáp ứng ngay, không cần tín hiệu phản hồi. Chỉ cần các chọn phù hợp thì mọi hoạt động đều trôi chảy, không cần phải bắt tay.
2.1.6 Phân xử bus (bus arbitration)
Trong hệthống máy tính không phải chỉcó CPU làm bus master, các chip I/O cũng có lúc làm bus master đểcó thể đọc hay ghi bộ nhớ và gọi ngắt. Các bộ đồng xử lý cũng có thể làm bus master. Như vậy nảy sinh ra vấn đề: điều gì sẽ xảy ra khi 2 thiết bịtrởlên đồng thời cần làm bus master? Từ đó cần có một cơ chếphân xử đểtránh sự hỗn loạn của hệthống. Cơchếphân xửcó thểlà tập trung hay không tập trung.
2.1.7 Phân xử bus tập trung
Nhiều vi xử lý có đơn vị phân xử được chế tạo nằm ngay trong chip CPU, trong một số máy tính mini, đơn vị này nằm ngoài chíp CPU. Theo cơ chế này thì bộ phân xử (arbiter) chỉcó thể biết có yêu cầu chiếm dụng bus hay không mà không biết có bao nhiêu đơn vị muốn chiếm dụng bus. Khi arbiter nhận được yêu cầu, nó sẽ phát ra 1 tín hiệu cho phép trên đường dây (bus grant: cho phép sửdụng bus). Đường dây này nối qua tất cảcác thiết bịI/O theo kiểu nối tiếp.