ĐƯỜNG TRUYỀN BUS

609 views
Skip to first unread message

son hoang

unread,
Oct 21, 2011, 10:10:47 PM10/21/11
to fourhero
I. Chức năng và thông số của BUS
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.

Hình 5.1. 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.
Ví dụ 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.
II. BUS trong máy vi tính.
II.1. 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.
II.2. 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.

, trong một phần- T1 bắt đầu bằng sườn lên của tín hiệu
đồng hồ 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 và tích cực. Tín hiệu (memory
request, truy cập bộ nhớ) chứ không phải thiết bị I/O; còn
tín hiệu (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 và .
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 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ờ 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 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 ít nhất là 60ns. Khoảng thời gian này là quan
trọng nếu tín hiệu đ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 và 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 và 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 đã đả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 5.1. Giá trị của một số thông số thời gian
Ký hiệu Tham số Min Max
TAD Thời gian trễ của tín hiệu địa chỉ 110
TML Thời gian địa chỉ ổn định trước tín hiệu
60
TM Thời gian trễ của so với sườn xuống của tín hiệu đồng hồ
T1 85
TRL Thời gian trễ của so với sườn xuống của tín hiệu đồng
hồ 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 đồng hồ T3 50
TMH Thời gian trễ của so với sườn xuống của tín hiệu đồng
hồ T3 85
TRH Thời gian trễ của 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
0

II.3. 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 5.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 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 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 và đượ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à (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 (Slave SYNchronization) tích cực.
Khi master nhận được tín hiệu 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 và
và .
Khi slave nhận được sự đảo tín hiệu 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 . 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 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 tích cực. Đến
lượt mình, tín hiệu lại gây ra sự đảo mức của các đường
địa chỉ, và và . Cuối cùng sự đảo mức của lại gây ra sự
đảo mức tín hiệu 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. được đặt lên mức tích cực.
2. được đặt tích cực để đáp lại tín hiệu
3. được đảo để đáp lại tín hiệu
4. được đảo để đáp lại tín hiệu 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.
III. Trọng tài bus (bus arbitration).
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.
III.1 Trọng tài bus tập trung
Hình 5.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êuh 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.

Hình 5.4. 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.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.
Hình 5.5. Trọng tài bus tập trung có hai mứ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.
III.2 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 5.6


Hình 5.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.
IV. Xử lý ngắt
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.

V. Một số bus thông dụng
V.1 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 , , ,
Để đ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 , ở mức tích cực.
CPU sử dụng các tín hiệu - đưa vào chip điều khiển bus 8288
để tạo ra các tín hiệu , , , 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 (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 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.
V.2. 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.
V.3. 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.
V.4. 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.

Reply all
Reply to author
Forward
0 new messages