USB 2.0 đã tránh va chạm như thế nào?


33

Nhìn vào các chân của các ổ cắm USB 3.0, tôi có thể thấy rằng có các cặp truyền và nhận riêng biệt, tuy nhiên đối với USB 2.0 chỉ có một cặp pin "dữ liệu". Làm thế nào để USB 2.0 đảm bảo rằng các thiết bị không giao tiếp đồng thời?


2
Bạn cũng có thể quan tâm đến việc xem xét những thứ như CSMA / CD, đó là cách giải quyết nó trong các bối cảnh khác
PlasmaHH

1
Các cặp truyền / nhận riêng biệt không giải quyết được tất cả các xung đột. Hãy tưởng tượng bạn có một ổ đĩa và modem, cả hai đều muốn gửi một số dữ liệu đến máy chủ, vì vậy cả hai đều bắt đầu truyền. Ở đâu? Trên cùng một cặp: máy chủ nhận. Xung đột vẫn còn đó. Đây không phải là cách USB hoạt động, nhưng đây chính xác là cách 10/100 Ethernet hoạt động: mọi hướng đều có cặp riêng nhưng ánh sáng "va chạm" trên hub vẫn nhấp nháy.
Đặc vụ_L

Câu trả lời:


67

USB hoàn toàn là chủ nô. Thiết bị không truyền trừ khi chủ nhà bảo nó truyền.

Ngay cả cái gọi là chế độ "ngắt" thực sự là bỏ phiếu: ví dụ, cứ sau 8 mili giây (hoặc ít hơn nếu bạn có chuột game thủ), PC hỏi chuột "vị trí của bạn là gì" và chuột trả lời.

Tương tự nếu bạn có giao diện nối tiếp USB chẳng hạn. Khi giao diện nhận dữ liệu trên dòng nối tiếp, nó sẽ không truyền nó đến PC. Thay vào đó, nó sẽ đợi PC bắt đầu giao dịch và yêu cầu dữ liệu.

Đây trang web có một lời giải thích tốt về những gói tin được trao đổi. Về cơ bản, hãy nhớ rằng USB đã được triển khai để cho phép thiết bị ngoại vi câm và rẻ nhất có thể hoạt động, điều đó có nghĩa là hầu hết trí thông minh đều có trong máy chủ, bộ điều khiển usb máy chủ, HĐH và trình điều khiển. Điều này là rất rõ ràng khi đọc thông số kỹ thuật.

Firewire (ví dụ) có một triết lý hoàn toàn khác, nó mạnh mẽ hơn nhiều, nó là đa chủ để các thiết bị có thể nói chuyện với nhau mà không cần sự trợ giúp từ chủ / chủ. Nó thực sự gần gũi hơn nhiều trong triết lý của nó với một cái gì đó như vòng mã thông báo với các giao dịch đẳng thời được đặt trên đầu, so với USB. Tuy nhiên "multi master" có nghĩa là nó yêu cầu một bộ vi điều khiển mạnh mẽ trong các thiết bị, chạy một ngăn xếp phần mềm phức tạp. Do đó, nó đắt hơn, và do đó giới hạn trong các sản phẩm đắt tiền như máy quay phim và vỏ ổ cứng nhanh. Một con chuột lửa không có ý nghĩa, nó sẽ quá đắt. Đó là một trong những lý do khiến FireWire thất bại.


3
Giải thích tuyệt vời và so sánh rất phù hợp với FireWire (và vâng, hãy xây dựng mạng cung cấp dựa trên mã thông báo cho ... thực tế, nhiều nhất là 5 thiết bị trên xe buýt).
Marcus Müller

3
Đây là một câu trả lời tốt, nhưng tôi nghĩ nó sẽ đầy đủ hơn nếu bạn đề cập đến bảng liệt kê. Khám phá những thiết bị nào được kết nối với mạng động không có khả năng phân xử (chẳng hạn như mạng đa chủ sẽ có) là một vấn đề không hề nhỏ và theo nhiều cách định nghĩa tại sao USB không thể sử dụng cấu trúc liên kết bus thực sự.
Jon

Cảm ơn;) Tôi không biết các thông tin chi tiết về liệt kê từ phía máy chủ. Nhưng IMO lý do thực sự khiến USB giống như vậy là vì nó được thiết kế vào giữa những năm 1990 và tại thời điểm đó, các bộ vi điều khiển ngày nay đắt hơn, và cách để các thiết bị giá rẻ là làm cho chúng trở nên ngu ngốc nhất có thể với ít RAM và mã càng tốt Bên cạnh đó, nó hoạt động rất tốt, nó là một điểm ngọt ngào.
peufeu

5
Không chính xác, USB là một chiếc xe buýt . Nó chỉ có một cấu trúc liên kết (ngôi sao) khác với xe buýt "tuyến tính" quen thuộc hơn. Tất cả các giao dịch máy chủ USB 2.0 (HS) được phát trên tất cả các phân đoạn của ngôi sao, vì vậy nó không khác nhiều so với xe buýt "tuyến tính". Tương tự như bus tuyến tính, tất cả các thiết bị đều thấy hoạt động của bus gần như cùng một lúc. Sự khác biệt duy nhất là phản ứng của thiết bị không hiển thị đối với một số thiết bị khác đang ngồi trên các nhánh khác nhau.
Ale..chenski

2
@rahuldottech thật tuyệt nếu nó hoạt động , nhưng FireWire kém tin cậy hơn nhiều so với USB, đặc biệt là plug & play WRT. Và với USB, bạn hoàn toàn có thể dễ dàng kết nối nhiều ổ đĩa vào một cổng bằng cách sử dụng thêm một trung tâm. Có một sự đánh đổi hiệu suất, nhưng độ tin cậy và dễ dàng hơn hẳn.
leftaroundabout

18

Trong các thiết bị khung USB không thể giao tiếp đồng thời, vì chúng chỉ "nói" khi máy chủ USB "cho phép" chúng nói chuyện. Và máy chủ USB cho phép một thiết bị khác chỉ "nói chuyện" khi giao thức giao dịch tuần tự với thiết bị đầu tiên được hoàn thành. Và các thiết bị USB không có bất kỳ phương tiện nào để tự "nói chuyện", không có cơ chế ngắt hoạt động trong USB. Tóm lại, cơ chế thực hiện kỷ luật này như sau.

Sau khi thiết bị USB 2.0 được kết nối, máy chủ sẽ liệt kê chúng bằng cách gán địa chỉ duy nhất cho mỗi thiết bị.

Mọi giao dịch trên xe buýt được bắt đầu bởi máy chủ USB.

Tiêu đề của mỗi giao dịch USB mang địa chỉ thiết bị cụ thể. Ngay cả khi các giao dịch được phát trên toàn bộ cây USB (trên ví dụ của bộ điều khiển máy chủ cụ thể), chỉ có thiết bị có địa chỉ trùng khớp sẽ phản hồi giao dịch và lấy dữ liệu hoặc phản hồi với dữ liệu.

Liên kết "đối tác" sau đó sẽ gửi xác nhận theo hướng từ người nhận dữ liệu thành công. Toàn bộ giao dịch tuân theo giao thức được thiết lập với trình tự xác định mã thông báo, thời gian chờ và mã sửa lỗi, để đảm bảo tính toàn vẹn của giao dịch.

Tất cả các thiết bị khác chỉ lắng nghe và bỏ qua lưu lượng truy cập không được hướng đến chúng.

Đó là về nó, nó là giao diện "bán song công".


1
Không quen thuộc với giao thức USB, vậy làm thế nào để máy chủ biết đúng thiết bị đã phản hồi?
Derek 朕 會 17/2/18

@Derek 會, chủ nhà biết điều này vì đây là thiết bị duy nhất được cho là phản hồi, không ai khác sẽ trả lời. Giao dịch USB 2.0 là "nguyên tử", không có phản hồi hoãn lại, mọi thứ đều phụ thuộc vào thời gian chờ. Không có phản hồi kịp thời (giao dịch chưa hoàn thành) sẽ dẫn đến việc thử lại nó.
Ale..chenski

Để theo dõi, câu hỏi của tôi là vì mọi thiết bị được kết nối với cùng một xe buýt, điều gì ngăn tôi giả vờ là một thiết bị khác cũng được kết nối?
Derek 朕 會

7
@Derek 會: Không có gì. Đó là lý do tại sao bạn không cắm các phím USB ngẫu nhiên mà bạn nhận được từ các thị trường ngoài đường. Bạn không thể tin tưởng họ.
Cuộc đua nhẹ nhàng với Monica

7
@Derek 會, mục đích độc hại sang một bên, một thiết bị USB phải chấp nhận một địa chỉ trong quá trình liệt kê và một thiết bị khác sẽ có một địa chỉ khác, tất cả được điều khiển bởi máy chủ. Điều này không khác gì khi một số mô-đun bộ nhớ được kết nối với một bus song song, nhưng mỗi mô-đun chỉ đáp ứng với bộ giải mã địa chỉ / chip chọn. Và nếu hai thiết bị USB vô tình phản hồi (giả sử máy chủ bị hỏng khi gán địa chỉ), sẽ có một mớ va chạm trên xe buýt và sẽ không có gói nào vượt qua CRC (được gắn vào mỗi mã thông báo USB) và cổng tương ứng sẽ bị vô hiệu hóa do lỗi lớn.
Ale..chenski
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.