Cạnh tranh băng thông USB — Thiết bị cùng chậm

Niềm tin phổ biến rằng mỗi cổng USB độc lập là sai. Thiết bị chia sẻ cùng upstream link, hub, speed domain hoặc tài nguyên controller cạnh tranh băng thông, trong khi thiết bị trên đường riêng thì không. Khi thiết bị nặng băng thông như camera hay ổ cứng ngoài chạy cùng controller với thiết bị khác, tất cả đều chậm lại. Hướng dẫn này giải thích topology USB thực tế, nhận diện triệu chứng cạnh tranh, và đưa ra chiến lược kết nối lại mà hầu hết người dùng không bao giờ biết.

Hầu hết người dùng giả định mỗi cổng USB trên máy tính là lane độc lập với kết nối riêng tới hệ thống. Cắm ổ vào một cổng và camera vào cổng khác, kỳ vọng tự nhiên là không thiết bị nào ảnh hưởng thiết bị kia. Hỏi hàng chục người dùng tại sao thiết bị cùng chậm, đa số đổ lỗi cho thiết bị, cáp, hoặc hệ điều hành. Mô hình tinh thần đó sai, và đó là lý do nhiều phiên khắc phục USB kết thúc trong bực bội.

Cổng USB không độc lập. Chúng được nhóm dưới controller, và mỗi thiết bị gắn vào một controller chia sẻ một bus với tổng băng thông cố định. Khi thiết bị trên bus cần nhiều hơn những gì nó có thể cung cấp, chúng cạnh tranh, và tất cả trên bus chậm — kể cả thiết bị gần như không dùng băng thông. Cuộc cạnh tranh đó là bus contention.

Cạnh tranh giải thích một danh sách dài triệu chứng bí ẩn: webcam rớt khung hình khi ổ cứng ngoài bắt đầu copy, âm thanh crackling khi máy in bắt đầu job, MIDI controller ngắt kết nối giữa biểu diễn. Trong nhiều trường hợp thiết bị không hỏng — chúng bị starve, và starve do layout kết nối chứ không phải phần cứng. Chuyển cùng thiết bị sang port khác và vấn đề thường biến mất.

Sơ đồ topology USB với controller, root hub và thiết bị kết nối minh họa băng thông chia sẻ

Topology USB thực tế hoạt động thế nào

Traffic USB tuân theo phân cấp nghiêm ngặt. Trên cùng là host controller, chip trên bo mạch chạy giao thức USB. Mỗi controller sở hữu một hoặc nhiều root hub, kết thúc ở cổng vật lý trên mặt sau. Cáp và downstream hub mở rộng bus sâu hơn, thiết bị gắn ở cuối. Việc thiết bị có cạnh tranh phụ thuộc việc chia cùng upstream link, hub, speed domain, và tài nguyên controller. Thiết bị trên speed domain riêng (USB 2.0 vs USB 3.x) hoặc nhánh root hub riêng cùng controller có thể không cạnh tranh — thấy cùng tên controller không chứng minh chúng chia một pool băng thông.

Mỗi controller có một upstream link tới hệ thống với băng thông cố định. Tổng throughput của tất cả thiết bị downstream không thể vượt quá dung lượng upstream link đó, bất kể cắm bao nhiêu thiết bị. Hub chia upstream link giữa các port downstream, nên thêm hub không tạo băng thông mới — nó chỉ chia nhỏ băng thông hiện có cho nhiều thiết bị hơn. Kiến trúc này giải thích tại sao sáu cổng trên mặt sau máy để bàn có thể chia cùng một upstream link: chúng đều là port downstream của cùng một root hub, tất cả nối tới cùng một controller.

Trong hệ thống hiện đại, controller nằm trong chipset thay vì chip riêng, đó là lý do layout port bo mạch có vẻ tùy tiện. Nhà sản xuất quyết định cổng vật lý nào kết nối controller nào, và nhóm đó không in trên vỏ. Bốn cổng sau có thể nằm trên một controller trong khi front-panel header route tới controller khác, không có gợi ý trực quan. Cách duy nhất để biết nhóm là kiểm tra trong software.

Windows Device Manager nhóm kết nối USB dưới Universal Serial Bus controllers. Mỗi entry USB Root Hub đại diện nhánh USB tree, nhưng một host controller có thể quản lý nhiều root hub. Công cụ như USB Device Tree Viewer hoặc USBView hiển thị hierarchy controller-to-hub-to-device chính xác hơn. macOS hiển thị trong System Report dưới USB, Linux qua lsusb -t.

Băng thông thực sự quan trọng

Băng thông là ngôn ngữ của cạnh tranh, và hai con số quan trọng hơn mọi con số khác. Bus USB 2.0 được đánh giá 480 Mbps (USB-IF: USB 2.0 Specification, Section 5.7.6). Sau overhead giao thức, trần thực tế thường 250-280 Mbps (~30-35 MB/s). Bus USB 3.0 đánh giá 5 Gbps, gấp khoảng mười lần, trần thực tế thường 300-400 MB/s tùy controller và cáp.

So sánh thiết bị tiêu thụ:

  • Webcam 1080p 30 fps compressed stream 20-50 Mbps.
  • SSD ngoài khi copy file lớn thường 100-400 MB/s.
  • Máy in burst data trong xung ngắn khi in.
  • Chuột, bàn phím, receiver dùng vài kilobit/giây, không đáng kể.

Đặt camera và ổ ngoài trên cùng bus USB 2.0: ổ một mình có thể tiêu thụ toàn bộ băng thông, để camera gần như không còn gì. Thêm thiết bị thứ ba, controller không thể đáp ứng tất cả, nên service theo lượt. Isochronous transfer — kiểu transfer camera và audio interface dùng — reserve băng thông cố định trên bus. Khi stream camera reserve phần của nó, phần còn lại cho thiết bị khác bị thu hẹp, và thiết bị best-effort như chuột và ổ ngoài phải cạnh tranh cho phần còn lại. Nếu tổng reserve vượt băng thông bus, controller bắt đầu drop frame camera hoặc delay transfer best-effort.

Con số quan trọng không phải tổng băng thông controller, mà là băng thông còn lại sau khi mỗi thiết bị claim phần của nó. Một camera 50 Mbps không chiếm 50 Mbps — nó chiếm 50 Mbps cộng với overhead và reserve isochronous có thể đẩy tổng tiêu thụ lên cao hơn. Trên bus 280 Mbps, hai stream camera 50 Mbps mỗi cái, cùng với overhead, có thể để lại rất ít cho thiết bị khác.

Minh họa phân bổ băng thông USB cho thấy nhiều thiết bị chia sẻ một bus controller

Bốn lầm tưởng về USB

Lầm tưởng một: “USB 3.0 và 2.0 độc lập.” Điện riêng, đúng — nhưng chỉ trên bo mạch. Cắm thiết bị USB 2.0 vào hub USB 3.0: hub conforme có đường riêng, thiết bị chạy High-Speed 480 Mbps. Nhưng một số hub cũ negotiate xuống Full-Speed 12 Mbps — không cảnh báo, không lỗi, giảm throughput mười lần. Luôn kiểm tra tốc độ negotiated trong Device Manager.

Lầm tưởng hai: “Nhiều port, nhiều băng thông.” Thêm hub hoặc cắm thiết bị vào port còn lại không tạo throughput. Mặt sau sáu port trên một controller cung cấp cùng băng thông như một port trên controller đó. Nhiều port là tiện lợi, không bao giờ là băng thông.

Lầm tưởng ba: “Receiver không dây cần USB 3.0 cho tốc độ.” Receiver chuột truyền vài kilobit/giây — port USB 2.0 dư gấp nghìn lần. Kẻ thù thực là RF interference. Tín hiệu USB 3.0 tạo noise 2-2.8 GHz (Intel: USB 3.x Interference Whitepaper, 2015), trùng băng 2.4 GHz receiver dùng.

Lầm tưởng bốn: “Cạnh tranh băng thông hiếm.” Nó là một trong những nguyên nhân thường bị bỏ qua nhất, chính vì vô hình. Thiết bị hiếm khi báo bị starve. Chúng rớt khung, crackle, stutter, ngắt — mỗi triệu chứng bị đổ lỗi cho thiết bị.

Laptop hay Desktop? Vấn đề khác nhau

Laptop có một đến ba controller cho mọi thứ: tất cả port USB, webcam tích hợp, fingerprint reader, và thường Bluetooth nội bộ. Laptop ngày càng gộp Thunderbolt và USB vào một controller. Quản lý nguồn BIOS tích cực có thể idle hoặc disable controller để tiết kiệm pin. Trên laptop, việc kiểm soát topology còn khó hơn: một số nhà sản xuất route webcam nội bộ và Bluetooth qua cùng controller với port USB ngoài, nghĩa là webcam của bạn và ổ ngoài cắm vào port cạnh nhau chia sẻ cùng bus mà bạn không biết.

Desktop thường có nhiều controller hơn — hai đến bốn. Layout thường nhóm nhiều port sau dưới một controller, và một chuỗi hub có thể funnel hàng chục thiết bị vào một bus. Lỗi desktop điển hình không phải thiếu controller mà là gán port kém: thiết bị nặng kết thúc trên cùng bus với mọi thứ khác. Tuy nhiên, desktop cho phép sửa: thêm card PCIe USB mở rộng controller độc lập, cung cấp bus riêng cho thiết bị nặng băng thông.

Bảng chẩn đoán triệu chứng

  • Camera rớt khung hìnhbão hòa băng thông trên controller chia sẻ. Camera stream là canary kinh điển: tiêu thụ băng thông liên tục, nên là thiết bị đầu tiên lỗi khi thiết bị khác trên bus yêu cầu phần của nó. Đây cũng là lý do một kiểm tra luồng webcam thời gian thực có thể hiển thị bản xem trước cục bộ sạch trong khi luồng mã hóa bị suy giảm — bus có thể đang làm camera thiếu hụt trước cả khi encoder chạy.
  • Âm thanh cracklingvấn đề băng thông hoặc nguồn trên hub chia sẻ. Audio interface nhạy latency. Khi bus bão hòa, transfer bị trễ, delay hiện thành click và crackle.
  • MIDI controller ngắt kết nốinhạy latency trên bus bão hòa. Khi transfer slot bị starve, host coi thiết bị không phản hồi và drop kết nối.
  • Receiver không dây stutterRF interference từ USB 3.0 hoặc cạnh tranh băng thông. Receiver cạnh USB 3.0: nghi RF trước. Hoạt động idle nhưng stutter under load: nghi bus.
  • Ổ ngoài copy chậmchia băng thông với thiết bị active khác. Throughput ổ sụp khi camera hoặc ổ thứ hai active trên cùng bus.
  • Ngắt kết nối intermittentngưỡng nguồn hoặc băng thông vượt. Ngắt khi thiết bị khác bận: băng thông. Ngắt khi thêm thiết bị: nguồn.

Lập bản đồ. Tách biệt. Kiểm tra.

  1. Xác định controller. Mở Device Manager, expand Universal Serial Bus controllers. Dùng USB Device Tree Viewer cho mapping chính xác.
  2. Nhóm thiết bị nặng băng thông trên controller riêng. Camera trên một controller, ổ ngoài trên controller khác.
  3. Dùng port bo mạch trực tiếp cho thiết bị quan trọng. Chuột gaming, audio interface, MIDI controller: bỏ qua hub, cắm trực tiếp mặt sau.
  4. Dùng hub có điện cho thiết bị cần nguồn, không băng thông.
  5. Di chuyển receiver không dây xa USB 3.0. Dùng port USB 2.0 mặt sau hoặc cáp mở rộng.
  6. Retest under load sau mỗi thay đổi. Chạy camera stream và drive copy cùng lúc. Layout đúng khi không thiết bị nào degrade.

So sánh song song layout USB tối ưu vs layout có vấn đề cạnh tranh băng thông

Trình duyệt không phải công cụ topology

API USB của trình duyệt là WebHID, nhận diện thiết bị HID kết nối sau khi có quyền người dùng. Nó không hiển thị topology controller đầy đủ, băng thông từng thiết bị, hoặc hierarchy controller-to-hub-to-device. Công cụ USB device info trên site này dùng WebHID để hiển thị thiết bị HID kết nối và vendor/product ID; nó là công cụ nhận diện thiết bị, không phải bộ phân tích topology.

Để mapping topology đầy đủ, dùng USB Device Tree Viewer (Windows), USBView, hoặc system_profiler SPUSBDataType (macOS).

Kết luận

USB chia sẻ, không dedicated. Mỗi port là cửa vào bus có băng thông cố định, và mỗi thiết bị chia dung lượng. Khi thiết bị cùng chậm, thường không hỏng — chúng đang cạnh tranh.

Sửa hiếm khi cần phần cứng mới — đôi khi, phản trực giác, nước đi tốt nhất là rút, không thêm. Lập bản đồ topology, tách thiết bị nặng băng thông sang controller khác, giữ thiết bị quan trọng trên port bo mạch trực tiếp, và cho receiver không dây kết nối USB 2.0 sạch. Sau đó test: chạy camera stream và drive copy cùng lúc và xem gì break. Layout sống sót test đó là layout đáng giữ.

Sửa hiếm khi cần phần cứng mới — đôi khi, phản trực giác, nước đi tốt nhất là rút, không thêm. Lập bản đồ topology, tách thiết bị nặng băng thông sang controller khác, giữ thiết bị quan trọng trên port bo mạch trực tiếp, và cho receiver không dây kết nối USB 2.0 sạch. Sau đó test: chạy camera stream và drive copy cùng lúc và xem gì break. Layout sống sót test đó là layout đáng giữ.

Câu hỏi thường gặp

Vì sao camera của tôi rớt khung hình khi cắm chuột?

Có thể cả hai kết nối cùng USB controller, trực tiếp trên bo mạch hoặc qua cùng chuỗi hub. Stream camera 1080p tiêu thụ khoảng ba mươi đến năm mươi megabit mỗi giây, và bus USB 2.0 chỉ có khoảng hai trăm tám mươi megabit throughput thực tế sau overhead giao thức. Ở 30–50 Mbps, camera để lại phần lớn bus 280 Mbps trống — nhưng isochronous slice đã reserve cộng với burst từ thiết bị khác có thể đẩy bus tới trần thực tế. Khi đó, controller thin out transfer best-effort, nên chuột, dù băng thông không đáng kể, có thể cảm giác phản hồi chậm. Mọi thiết bị trên bus đó đều chịu ảnh hưởng.

Cổng USB 3.0 có thực sự độc lập với cổng USB 2.0?

Về vật lý, có và không. USB 3.0 và USB 2.0 dùng lane điện khác nhau trên cùng connector, nên thiết bị USB 3.0 trên cổng USB 3.0 không cạnh tranh trực tiếp băng thông với thiết bị USB 2.0. Trên hub USB 3.0 conforme, đường USB 2.0 và SuperSpeed xử lý riêng, và thiết bị USB 2.0 thường hoạt động ở High-Speed (480 Mbps). Tuy nhiên, một số hub cũ hoặc chất lượng thấp, hoặc vấn đề cáp và tín hiệu, có thể khiến thiết bị negotiate ở tốc độ thấp hơn, như Full-Speed (12 Mbps). Luôn kiểm tra tốc độ negotiated trong Device Manager. Cổng điện riêng, nhưng kiến trúc hub vẫn tạo bottleneck bất ngờ.

Hub USB có chia băng thông giữa thiết bị kết nối?

Hub USB không chia băng thông như network switch chia port. Thay vào đó, tất cả thiết bị kết nối cùng hub chia sẻ một upstream connection tới controller. Hub arbitrate truy cập tới upstream link, nghĩa là tổng băng thông tất cả thiết bị downstream không thể vượt quá dung lượng port upstream. Hub USB 2.0 upstream tới controller cung cấp tối đa hai trăm tám mươi megabit cho tất cả port cộng lại, bất kể cắm bao nhiêu thiết bị.

Tôi có thể xem sử dụng băng thông USB trong Device Manager?

Không, và điều này quan trọng: Device Manager không báo utilization băng thông. Nó hiển thị thiết bị gắn vào controller nào và tốc độ hoạt động, nhưng không hiển thị bao nhiêu băng thông đang được tiêu thụ. Để đo sử dụng băng thông thực tế, bạn cần công cụ bên thứ ba như USB Device Tree Viewer hoặc HWiNFO, hiển thị throughput từng thiết bị. Device Manager hữu ích cho topology mapping — xem thiết bị nào chia controller — nhưng không cho real-time bandwidth monitoring.

Vì sao receiver chuột không dây hoạt động kém khi cắm vào hub USB 3.0?

Tín hiệu USB 3.0 tạo nhiễu tần số vô tuyến trong dải hai đến hai điểm tám gigahertz, trùng với tần số hầu hết receiver chuột và bàn phím không dây dùng. Cắm receiver vào cổng hoặc hub USB 3.0, đặc biệt qua cáp ngắn, đặt antenna receiver trong vùng RF noise làm giảm chất lượng kết nối. Dùng cổng USB 2.0 trực tiếp trên bo mạch, hoặc dùng cáp mở rộng USB đi kèm receiver để di chuyển ra xa cổng USB 3.0.

Thêm hub USB có điện có sửa vấn đề băng thông?

Hub có điện giúp nguồn điện nhưng không tăng băng thông. Tất cả thiết bị trên cùng hub vẫn chia upstream link duy nhất tới controller, nên thêm hub có điện vào bus bão hòa băng thông không tạo throughput mới. Hub có điện hữu ích khi thiết bị bị rớt do thiếu nguồn, là vấn đề khác với cạnh tranh băng thông. Để sửa cạnh tranh băng thông, bạn cần chuyển thiết bị sang controller khác, không thêm hub vào cùng controller.

Tôi có thể dùng một cổng USB cho cả máy in và camera cùng lúc?

Kỹ thuật có, nhưng kết quả thực tế phụ thuộc việc có chia controller và mỗi thiết bị cần bao nhiêu băng thông. Máy in thường gửi data burst ngắn trong job in rồi idle, trong khi camera stream liên tục. Nếu cả hai trên cùng controller USB 2.0, stream liên tục của camera có thể starve máy in khi đang in, gây in chậm hoặc ngắt kết nối. Hoạt động tốt nhất trên controller riêng, đặc biệt nếu job in lớn hoặc camera stream độ phân giải cao.

Làm sao biết máy tính có bao nhiêu USB controller?

Trong Windows, mở Device Manager và expand Universal Serial Bus controllers. Mỗi entry USB Root Hub đại diện cho một nhánh của USB tree, không nhất thiết controller riêng — một host controller có thể quản lý nhiều root hub. Thiết bị dưới mỗi hub chia băng thông trên cùng bus. Trên desktop thường thấy hai đến bốn controller; laptop, một đến ba. macOS hiển thị trong System Report dưới USB, Linux hiển thị qua lsusb -t. Điểm mấu chốt: port nhóm dưới cùng host controller chia băng thông, port dưới controller khác thì không.

Bài viết liên quan