CHƯƠNG 8: THIẾT BỊ NGOẠI VI VÀ GHÉP NỐI
8.4. Kết nối truyền thông và ghép nối máy tính
8.4.1. Kết nối bên trong máy tính
Không giống như các mạng viễn thông có nhiều bộ truyền tin và bộ nhận tin được đặt ở các vị trí địa lý rộng lớn khác nhau, máy tính chỉ có một số lượng cụ thể các thiết bị được nối với nhau trong một phạm vi có hạn, khoảng cách từ vài millimeter cho tới vài meter.Trong một hệ thống có N thiết bị cần kết nối với nhau. Với kịch bản xấu nhất, ta sẽ phải cần có N2/2 đường kết nối. Tuy nhiên, rất may là không phải tất cả các thiết bị sẽ được kết nối như vậy.
Bus là được định nghĩa là một hệ thống dây dẫn được sử dụng để kết nối một số lượng các thiết bị lại với nhau. Hình 8.13 là ví dụ hệ thống bus trên mainboard.
Hình 8.13. Mainboard nhìn từ trên xuống
Kết nối bus
Một hệ thống bus sẽ bao gồm nhiều thành phần như các bộ kết nối, các dây dẫn và giao thức truyền thông. Các dây dẫn có thể được phân loại thành từng nhóm:
nhóm điều khiển, nhóm địa chỉ, nhóm dữ liệu và nhóm cung cấp nguồn như trên hình 8.14. Một hệ thống bus có thể có một vài đường dây cung cấp nguồn, thông thường đó là các tín hiệu nguồn đất GND, +5V và -15V
Hình 8.14. Hệ thống bus điển hình
Trong hệ thống truyền thông trong máy tính có thể có rất nhiều thiết bị. Tuy nhiên tại một thời điểm sẽ chỉ có 1 thiết bị có thể được truyền dữ liệu. Tất cả các thiết bị luôn luôn nghe ngóng đường truyền, nhưng sẽ chỉ có 1 thiết bị được phép nhận dữ liệu. Chỉ có 1 thiết bị được coi là thiết bị chủ bus master, còn tất cả các thiết bị còn lại được coi là thiết bị tớ slave. Thiết bị chủ sẽ điều khiển hệ thống bus và nó có thể là thiết bị truyền cũng như là thiết bị nhận.
Ưu điểm của kết nối bus là giảm thiểu được các kết nối ở tất cả các thiết bị với tất cả các thiết bị khác, giảm thiểu được các kết nối dây phức tạp do đó giảm được giá thành hệ thống. Nhược điểm của kết nối bus là tốc độ kết nối bị hạn chế, vấn đề truy cập, chia sẻ chung một hệ thống bus và khả năng mở rộng hệ thống
Hầu hết các máy tính PC có cùng một cách tổ chức hệ thống bus. Đơn giản là tất cả các thiết bị đều sử dụng chung một hệ thống bus được gọi là system bus như hình 8.15. Phương pháp tổ chức này tỏ ra đơn giản, tiết kiệm dây dẫn do đó
Hình 8.15. Tổ chức bus với máy tính PC thông thường
giảm thiểu chi phí hệ thống. Tuy nhiên, nhược điểm của nó là có thể xảy ra tình huống cả CPU và các thiết bị I/O cùng đòi chiếm dụng bus và sẽ xảy ra xung đột. Để giải quyết vấn đề này, ta sẽ phải sử dụng 1 chip chuyên dụng để phân xử bus. Vấn đề phân xử bus sẽ được đề cập ngay trong mục này.
Đối với hệ thống máy chủ, máy tính main frame đòi hỏi lượng dữ liệu trao đổi lớn, tổ chức bus được phân tách ra theo chức năng như trên hình 8.16. Hệ thống main frame có thể được trang bị một hay nhiều CPU, bộ nhớ chính và các bộ xử lý vào ra I/O. Trên máy tính loại này thường có 3 hệ thống bus: memory bus được sử dụng để các bộ xử lý I/O đọc và ghi dữ liệu với bộ nhớ chính mà không cần thông qua CPU; I/O bus cho phép CPU phát các lệnh đến tất cả các bộ xử lý I/O; và hệ thống bus tương tác trực tiếp giữa CPU với bộ nhớ chính. Với cách tổ chức như vậy, CPU có thể đồng thời trao đổi dữ liệu với các thiết bị I/O và trao
đổi dữ liệu với bộ nhớ chính (Tất nhiên là tại cùng một thời điểm không thể trao đổi với 2 thiết bị ngoại vi).
Hình 8.16. Tổ chức bus với máy tính main frame
Bus đồng bộ
Bus đồng bộ là hệ thống bus hoạt động dưới sự đồng bộ của một tín hiệu xung nhịp đồng hồ. Ví dụ như quá trình đọc dữ liệu từ bộ nhớ về CPU được thể hiện trên hình 8.17 dưới đây
Hình 8.17. Hoạt động của bus đồng bộ
Tại chu kỳ đầu tiên T1, khi xung nhịp đồng hồ còn ở mức cao, CPU đặt địa chỉ của ô nhớ cần đọc dữ liệu lên bus địa chỉ. Ngay sau đó trong khoảng T1, sau khi tín hiệu địa chỉ đã ổn định, tín hiệu và sẽ được kích hoạt. Tín hiệu là tín hiệu chỉ ra rằng CPU sẽ tương tác với bộ nhớ. Tín hiệu là tín hiệu mà CPU chỉ ra đây là quá trình đọc dữ liệu về CPU. Cả hai tín hiệu và đều tích cực ở mức điện áp 0V. Quá trình đọc dữ liệu thường diễn ra chậm hơn so với tốc độ bus, do đó toàn bộ thời gian T2 được dành cho việc truy cập bộ nhớ. Tại chu kỳ T3, CPU sẽ đọc dữ liệu truyền về trên đường data bus.
Ngay sau khi hoàn thành quá trình đọc dữ liệu, CPU sẽ giải phóng tín hiệu và .
Bus không đồng bộ
Nếu ta đặt bộ nhớ đồng bộ vào một hệ thống bus đồng bộ có tốc độ cao hơn tốc độ của bộ nhớ, khi đó thời gian truy cập vẫn không được cải thiện bởi vì tốc độc xung nhịp là không đổi. Nếu ta tăng tốc độ xung nhịp để phù hợp với tốc độ cao của bộ nhớ, các thiết bị có tốc độ thấp hơn sẽ không thể hoạt động bình thường.
Bus không đồng bộ được sử dụng để giải quyết vấn đề trên, tất nhiên là cách giải quyết của nó tương đối phức tạp vì nó không có xung nhịp đồng bộ. Một thiết bị chủ master sẽ đặt tất cả mọi thứ mà nó cần lên hệ thống bus (địa chỉ, dữ liệu, tín hiệu điều khiển), sau đó kích hoạt tín hiệu đồng bộ chủ (master synchronization). Thiết bị tớ sẽ đáp ứng với tốc độ nhanh nhất có thể rồi kích hoạt tín hiệu đồng bộ tớ (slave synchronization) khi kết thúc quá trình truyền nhận. Tiếp đó, thiết bị chủ sẽ giải phóng rồi thiết bị tớ giải phóng . Bằng cách này, hệ thống chủ/tớ hoạt động với tốc độ cao sẽ hoạt động hiệu quả hơn so với hệ thống chủ/tớ hoạt động với tốc độ thấp.
Để tỡm hiểu rừ hơn về quỏ trỡnh trao đổi dữ liệu khụng đồng bộ, ta sẽ xem xột quá trình đọc dữ liệu không đồng bộ được miêu tả trên hình 8.16. Để đọc được dữ liệu trong bộ nhớ, CPU đặt tín hiệu địa chỉ lên bus địa chỉ, sau đó là kích hoạt tín hiệu và . Khi các tín hiệu này ổn định, CPU sẽ kích hoạt . Sự kiện này kích hoạt bộ nhớ thực hiện hoạt động đọc. Quá trình đọc bộ nhớ sẽ kết thúc khi tín hiệu được kích hoạt bởi bộ nhớ. Ta cũng có thể nhỡn rừ quỏ trỡnh này thụng qua cỏc mũi tờn cú trờn hỡnh 8.18. Phương phỏp trao
đổi dữ liệu như trên còn được gọi là full handshake. Lưu ý rằng quá trình trao đổi dữ liệu không đồng bộ không sử dụng tín hiệu xung nhịp clock.
Khi phát sinh lỗi hệ thống, hệ thống bus không đồng bộ tỏ ra rất khó phân tích, kiểm tra lỗi so với hệ thống bus đồng bộ. Chính vì vậy mà trong máy tính PC, chủ yếu ta thường sử dụng bus đồng bộ.
Hình 8.18. Hoạt động của bus không đồng bộ
Phân xử bus
Bây giờ hãy giả sử là tại một thời điểm có nhiều hơn một thiết bị cần truy cập bus. Câu hỏi đặt ra là thiết bị nào sẽ được quyết định làm master ? Vấn đề phân xử bus có thể được giải quyết bởi một trong hai phương pháp cơ bản: phân xử bus tập trung và phân xử bus không tập trung. Hình 8.19 mô tả hai phương pháp phân xử bus. Phân xử bus tập trung được mô tả trong hình 8.19a. Thiết bị 0 đến thiết bị n cùng được nối vào một hệ thống bus (hệ thống bus này không được mô tả trong hình) và có cùng một đường dây tín hiệu bus request nối với bộ phân xử. Khi một thiết bị muốn làm master để thực hiện trao đổi dữ liệu, nó kích hoạt tín hiệu yêu cầu. Khi bộ phân xử nhận thấy có tín hiệu yêu cầu, nó sẽ quyết định xem tín hiệu cho phép có được cung cấp hay không (trong một số trường hợp, hệ thống bus không được phép gián đoạn). Nếu tín hiệu phân xử được cung cấp, nó sẽ kích hoạt tín hiệu cho phép. Tín hiệu cho phép được nối nối tiếp từ thiết bị này đến thiết bị khác. Thiết bị đầu tiên nhận được tín hiệu cho phép và nó cũng đồng thời muốn trở thành bus master sẽ nắm quyền truy cập bus và ngăn cấm các thiết bị ở phía sau nó truy cập bus. Nếu thiết bị không
muốn truy cập bus, nó đơn giản là chuyển tín hiệu cho phép ra thiết bị phía sau.
Thiết bị nào ở gần bộ phân xử sẽ có mức ưu tiên cao hơn so với các thiết bị phía sau.
Hình 8.19. Phân xử bus
Trong một số trường hợp, việc phân xử bus có 1 mức ưu tiên như vậy tỏ ra không thích hợp. Khi đó, ta có thể thực hiện phân xử bus có nhiều mức ưu tiên như hình 8.19b. Tín hiệu yêu cầu với số hiệu nhỏ hơn có mức ưu tiên cao hơn.
Do vậy, để xác định mức ưu tiên cao hơn cho một thiết bị, nó sẽ được gắn với tín hiệu yêu cầu có số hiệu nhỏ. Các thiết bị có cùng mức ưu tiên sẽ được nhóm thành từng nhóm và đưa vào cùng một bộ phân xử bus.
Phân xử bus không tập trung được thể hiện trên hình 8.19c. Lưu ý rằng hệ thống sẽ không có bộ phân xử. Tín hiệu cho phép luôn được cung cấp vào hệ thống các thiết bị. Khi một thiết bị muốn truy cập bus, nó sẽ kích hoạt tín hiệu yêu cầu lên đường bus request rồi kiểm tra tín hiệu trên đường dây busy. Nếu tín hiệu trên đường busy là không tích cực, nó sẽ chuyển tín hiệu 0 đến các thiết bị được đánh số cao hơn trong dãy kết nối (tức là ngắt tín hiệu cho phép đến các thiết bị
phía sau), tích cực đường tín hiệu busy và giải phóng tín hiệu yêu cầu. Nếu tín hiệu busy là bận, hoặc nếu thiết bị không có nhu cấu truy cập bus, nó chỉ cần đơn giản là chuyển tín hiệu cho phép đến các thiết bị phía sau.
Phân xử bus cần hoạt động với tốc độ cao, do đó phân xử bus tập trung chỉ thích hợp với hệ thống có số lượng thiết bị nhỏ (thường tối đa là 8 thiết bị). Trong trường hợp số lượng thiết bị lớn, phân xử bus không tập trung tỏ ra thích hợp hơn