Động lực
Với tốc độ tín hiệu là 480 MBit / s, các thiết bị USB 2.0 sẽ có thể truyền dữ liệu với tốc độ lên tới 60 MB / s. Tuy nhiên, các thiết bị ngày nay dường như bị giới hạn ở mức 30-42 MB / s trong khi đọc [ Wiki: USB ]. Đó là một chi phí 30 phần trăm.
USB 2.0 là một tiêu chuẩn thực tế cho các thiết bị bên ngoài trong hơn 10 năm. Một trong những ứng dụng quan trọng nhất cho giao diện USB từ rất sớm là lưu trữ di động. Thật không may, USB 2.0 đã nhanh chóng hạn chế tốc độ tắc nghẽn đối với các ứng dụng đòi hỏi băng thông này, một ổ cứng ngày nay chẳng hạn có khả năng hơn 90 MB / giây khi đọc tuần tự. Xem xét sự hiện diện của thị trường lâu dài và nhu cầu liên tục về băng thông cao hơn, chúng ta nên kỳ vọng rằng hệ sinh thái USB 2.0 đã được tối ưu hóa qua nhiều năm và đạt được hiệu suất đọc gần với giới hạn lý thuyết.
Băng thông tối đa lý thuyết trong trường hợp của chúng tôi là gì? Mọi giao thức đều có phí bao gồm cả USB và theo tiêu chuẩn USB 2.0 chính thức, nó là 53.248 MB / s [ 2 , Bảng 5-10]. Điều đó có nghĩa là về mặt lý thuyết , các thiết bị USB 2.0 ngày nay có thể nhanh hơn 25%.
Phân tích
Để đến bất cứ nơi nào gần gốc rễ của vấn đề này, phân tích sau đây sẽ cho thấy những gì đang xảy ra trên xe buýt trong khi đọc dữ liệu tuần tự từ một thiết bị lưu trữ. Giao thức được chia nhỏ từng lớp và chúng tôi đặc biệt quan tâm đến câu hỏi tại sao 53.248 MB / s là số lý thuyết tối đa cho các thiết bị ngược dòng số lượng lớn. Cuối cùng, chúng tôi sẽ nói về các giới hạn của phân tích có thể cung cấp cho chúng tôi một số gợi ý về chi phí bổ sung.
Ghi chú
Trong suốt câu hỏi này, chỉ có tiền tố thập phân được sử dụng.
Máy chủ lưu trữ USB 2.0 có khả năng xử lý nhiều thiết bị (thông qua trung tâm) và nhiều điểm cuối trên mỗi thiết bị. Điểm cuối có thể hoạt động trong các chế độ chuyển khác nhau. Chúng tôi sẽ giới hạn phân tích của chúng tôi ở một thiết bị duy nhất được gắn trực tiếp vào máy chủ và có khả năng liên tục gửi các gói đầy đủ qua điểm cuối hàng loạt ngược dòng ở chế độ Tốc độ cao.
Đóng khung
Giao tiếp tốc độ cao USB được đồng bộ hóa trong một cấu trúc khung cố định. Mỗi khung hình dài 125 chúng tôi và bắt đầu bằng gói Start-Of-Frame (SOF) và bị giới hạn bởi và chuỗi End-Of-Frame (EOF). Mỗi gói bắt đầu bằng SYNC và kết thúc bằng và End-Of-Packet (EOF). Những trình tự đã được thêm vào sơ đồ cho rõ ràng. EOP có thể thay đổi kích thước và dữ liệu gói, đối với SOF, nó luôn là 5 byte.
Mở hình ảnh trong một tab mới để xem phiên bản lớn hơn.
Giao dịch
USB là một giao thức điều khiển chính và mỗi giao dịch được bắt đầu bởi máy chủ. Thời gian giữa SOF và EOF có thể được sử dụng cho các giao dịch USB. Tuy nhiên, thời gian cho SOF và EOF rất nghiêm ngặt và máy chủ chỉ bắt đầu các giao dịch có thể hoàn thành đầy đủ trong khoảng thời gian miễn phí.
Giao dịch chúng tôi quan tâm là một giao dịch IN số lượng lớn thành công. Giao dịch bắt đầu với gói mã thông báo IN, sau đó máy chủ chờ gói dữ liệu DATA0 / DATA1 và xác nhận việc truyền bằng gói bắt tay ACK. EOP cho tất cả các gói này là 1 đến 8 bit tùy thuộc vào dữ liệu gói, chúng tôi giả sử trường hợp xấu nhất ở đây.
Giữa mỗi ba gói này, chúng tôi phải xem xét thời gian chờ đợi. Chúng nằm giữa bit cuối cùng của gói IN từ máy chủ và bit đầu tiên của gói DATA0 của thiết bị và giữa bit cuối cùng của gói DATA0 và bit đầu tiên của gói ACK. Chúng tôi không phải xem xét bất kỳ sự chậm trễ nào nữa vì máy chủ có thể bắt đầu gửi IN tiếp theo ngay sau khi gửi ACK. Thời gian truyền cáp được xác định là tối đa 18 ns.
Chuyển khoản số lượng lớn có thể gửi tối đa 512 byte cho mỗi giao dịch IN. Và máy chủ lưu trữ sẽ cố gắng phát hành càng nhiều giao dịch càng tốt ở giữa các dấu phân cách khung. Mặc dù chuyển số lượng lớn có mức độ ưu tiên thấp nhưng nó có thể chiếm hết thời gian có sẵn trong một vị trí khi không có giao dịch nào khác đang chờ xử lý.
Để đảm bảo phục hồi đồng hồ đúng, các tiêu chuẩn xác định phương thức nhồi bit gọi. Khi gói sẽ yêu cầu một chuỗi rất dài của cùng một đầu ra, một sườn bổ sung được thêm vào. Điều đó đảm bảo sườn sau tối đa 6 bit. Trong trường hợp xấu nhất, điều này sẽ làm tăng tổng kích thước gói lên 7/6. EOP không bị nhồi bit.
Mở hình ảnh trong một tab mới để xem phiên bản lớn hơn.
Tính toán băng thông
Một giao dịch IN số lượng lớn có tổng phí là 24 byte và tải trọng 512 byte. Đó là tổng cộng 536 byte. Khoảng thời gian giữa là 7487 byte. Không cần nhồi bit, có không gian cho 13.968 gói. Có 8000 Micro-Frames mỗi giây, chúng ta có thể đọc dữ liệu với 13 * 512 * 8000 B / s = 53.248 MB / s
Đối với dữ liệu hoàn toàn ngẫu nhiên, chúng tôi hy vọng rằng việc nhồi bit là cần thiết ở một trong 2 ** 6 = 64 chuỗi 6 bit liên tiếp. Đó là mức tăng của (63 * 6 + 7) / (64 * 6). Nhân tất cả các byte có thể bị nhồi bit bởi các số đó sẽ cho tổng thời lượng giao dịch là (19 + 512) * (63 * 6 + 7) / (64 * 6) + 5 = 537,38 Byte. Kết quả là có 13.932 gói trên mỗi Micro-Frame.
Có một trường hợp đặc biệt khác bị thiếu trong các tính toán này. Tiêu chuẩn xác định thời gian đáp ứng thiết bị tối đa là 192 bit lần [ 2 , Chương 7.1.19.2]. Điều này phải được xem xét khi quyết định nếu gói cuối cùng vẫn phù hợp với khung trong trường hợp thiết bị cần thời gian đáp ứng đầy đủ. Chúng ta có thể giải thích điều đó bằng cách sử dụng một cửa sổ 7439 byte. Băng thông kết quả là giống hệt nhau.
Những gì còn lại
Phát hiện lỗi và phục hồi chưa được bảo hiểm. Có thể lỗi là đủ thường xuyên hoặc phục hồi lỗi là tốn thời gian đủ để có tác động đến hiệu suất trung bình.
Chúng tôi đã giả định phản ứng máy chủ và thiết bị ngay lập tức sau các gói và giao dịch. Cá nhân tôi không thấy bất kỳ nhu cầu xử lý lớn nào ở cuối gói hoặc giao dịch ở hai bên và do đó tôi không thể nghĩ ra bất kỳ lý do nào khiến máy chủ hoặc thiết bị không thể đáp ứng ngay lập tức với việc triển khai phần cứng được tối ưu hóa đầy đủ. Đặc biệt trong hoạt động bình thường, hầu hết các công việc giữ sách và phát hiện lỗi có thể được thực hiện trong quá trình giao dịch và các gói và giao dịch tiếp theo có thể được xếp hàng.
Chuyển cho các điểm cuối khác hoặc giao tiếp bổ sung đã không được xem xét. Có thể giao thức chuẩn cho các thiết bị lưu trữ yêu cầu một số giao tiếp kênh bên liên tục tiêu tốn thời gian khe có giá trị.
Có thể có một giao thức bổ sung cho các thiết bị lưu trữ cho trình điều khiển thiết bị hoặc lớp hệ thống tệp. (tải trọng gói == dữ liệu lưu trữ?)
Câu hỏi
Tại sao các triển khai ngày nay không có khả năng phát trực tuyến ở mức 53 MB / s?
Đâu là nút thắt trong việc triển khai ngày nay?
Và một tiềm năng tiếp theo: Tại sao không ai cố gắng loại bỏ nút thắt như vậy?
Người giới thiệu
[1] Thông số kỹ thuật USB 2.0 chính thức