τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Αυτό το άρθρο περιγράφει οδηγίες σχετικά με τον τρόπο προσεκτικής διαχείρισης του εύρους ζώνης USB. Κάθε πρόγραμμα οδήγησης πελάτη USB είναι υπεύθυνο για την ελαχιστοποίηση του εύρους ζώνης USB που χρησιμοποιεί και για την επιστροφή του αχρησιμοποίητου εύρους ζώνης στη δεξαμενή του διαθέσιμου εύρους ζώνης το συντομότερο δυνατό.
Εδώ, πιστεύουμε ότι η ταχύτητα του USB 2.0 είναι 480Mbps, 12Mbps και 1,5Mbps, που αντιστοιχούν σε υψηλή ταχύτητα, πλήρη ταχύτητα και χαμηλή ταχύτητα αντίστοιχα από τις εγκαταστάσεις αυτού του άρθρου φαίνεται ότι το USB 3.0 μειώνει το πρόβλημα εύρους ζώνης, αλλά το πρόβλημα εύρους ζώνης δεν είναι ένα ανεπαρκές ανώτερο όριο, αλλά ένα πρόβλημα προγραμματισμού ιβίσκου.
Ο ανταγωνισμός για το εύρος ζώνης στο δίαυλο USB προέρχεται από πολλές πηγές, συμπεριλαμβανομένου υλικού και λογισμικού. Είναι δύσκολο να προβλεφθεί με ακρίβεια το μέγεθος του εύρους ζώνης που είναι διαθέσιμο σε ένα πρόγραμμα οδήγησης πελάτη USB. Οι ελεγκτές κεντρικού υπολογιστή USB απαιτούν ένα συγκεκριμένο εύρος ζώνης για να λειτουργήσουν. Η απαιτούμενη ποσότητα εξαρτάται από το αν ο ελεγκτής είναι υψηλής ταχύτητας. Διαφέρει από σύστημα σε σύστημα. Οι διανομείς USB που λειτουργούν με υψηλή ταχύτητα πρέπει μερικές φορές να μεταφράζουν συναλλαγές μεταξύ θυρών ανοδικής ροής υψηλής ταχύτητας και συσκευών χαμηλότερης ταχύτητας κατάντη και αυτή η διαδικασία μετάφρασης καταναλώνει εύρος ζώνης. Ωστόσο, εάν η μετατροπή συναλλαγής απαιτεί εύρος ζώνης εξαρτάται από τον τύπο της συνδεδεμένης συσκευής και την τοπολογία του δέντρου συσκευών.
Η πιο σοβαρή πίεση στους πόρους εύρους ζώνης συνήθως προέρχεται από προγράμματα οδήγησης πελατών USB που μονοπωλούν το εύρος ζώνης. Το σύστημα κατανέμει εύρος ζώνης με σειρά προτεραιότητας. Εάν το πρώτο πρόγραμμα οδήγησης USB που φορτώθηκε ζητήσει όλο το διαθέσιμο εύρος ζώνης, τα επόμενα προγράμματα οδήγησης USB που φορτώθηκαν δεν θα επιτρέψουν εύρος ζώνης στις συσκευές τους. Το σύστημα δεν μπορεί να διαμορφώσει ή να απαριθμήσει τη συσκευή. Επειδή ο λόγος για την αποτυχία της απαρίθμησης δεν είναι προφανής, η εμπειρία χρήστη είναι κακή.
Μερικές φορές τα προγράμματα οδήγησης πελατών εξαντλούν το διαθέσιμο εύρος ζώνης μέσω μεταφορών διακοπής υψηλής ταχύτητας. Αλλά μακράν το πιο συνηθισμένο σενάριο είναι ότι το πρόγραμμα οδήγησης πελάτη εκχωρεί πολύ μεγάλο εύρος ζώνης για μια σταθερή μεταφορά και δεν το ελευθερώνει έγκαιρα. Το σύστημα διατηρεί το εκχωρημένο εύρος ζώνης έως ότου το πρόγραμμα οδήγησης που το ζήτησε να κλείσει το τελικό του σημείο ανοίγοντας ένα άλλο τελικό σημείο ή να αφαιρεθεί η συσκευή στην οποία του εκχωρήθηκε εύρος ζώνης. Το σύστημα δεν εκχωρεί εγγυημένο εύρος ζώνης για μαζικές μεταφορές, επομένως οι μαζικές μεταφορές δεν είναι ποτέ η αιτία αποτυχιών απαρίθμησης. Ωστόσο, η απόδοση μιας συσκευής μαζικής μεταφοράς εξαρτάται από το μέγεθος του εύρους ζώνης που εκχωρείται στη συσκευή για τακτικές (σταθερές αναμονές και διακοπές) μεταφορές.
Η προδιαγραφή USB 2.0 απαιτεί οι σταθερές συσκευές να έχουν τερματικά σημεία μηδενικού εύρους ζώνης στις προεπιλεγμένες ρυθμίσεις διεπαφής τους. Αυτό διασφαλίζει ότι δεν δεσμεύεται εύρος ζώνης για τη συσκευή έως ότου το πρόγραμμα οδήγησης λειτουργίας ανοίξει μια μη προεπιλεγμένη διεπαφή, η οποία βοηθά στην αποφυγή αποτυχιών απαρίθμησης λόγω υπερβολικών αιτημάτων εύρους ζώνης κατά τη διαμόρφωση της συσκευής. Δεν εμποδίζει τα προγράμματα οδήγησης πελατών να εκχωρούν υπερβολικό εύρος ζώνης μετά τη διαμόρφωση των συσκευών τους, εμποδίζοντας έτσι τη σωστή λειτουργία άλλων συσκευών.
Το κλειδί για τη σωστή διαχείριση εύρους ζώνης είναι ότι κάθε συσκευή USB στο σύστημα που εκτελεί σταθερές μεταφορές πρέπει να παρέχει πολλαπλές εναλλακτικές ρυθμίσεις (Alt) για κάθε διεπαφή που περιέχει σταθερά τελικά σημεία και το πρόγραμμα οδήγησης πελάτη πρέπει να χρησιμοποιεί αυτές τις ρυθμίσεις Alt με σύνεση. Τα προγράμματα οδήγησης πελατών θα πρέπει πρώτα να ζητήσουν τη ρύθμιση διεπαφής με το υψηλότερο εύρος ζώνης. Εάν το αίτημα αποτύχει, το πρόγραμμα οδήγησης πελάτη θα πρέπει να ζητήσει τις ρυθμίσεις διασύνδεσης με όλο και μικρότερα εύρη ζώνης μέχρι να επιτύχει το αίτημα.
Για παράδειγμα, ας υποθέσουμε ότι μια συσκευή webcam έχει την ακόλουθη διεπαφή:
Διεπαφή 0 (Προεπιλεγμένες ρυθμίσεις διεπαφής: Δεν υπάρχουν τελικά σημεία με μη μηδενικό σταθερό εύρος ζώνης στις προεπιλεγμένες ρυθμίσεις)
Const Endpoint 1: Μέγιστο μέγεθος πακέτου = 0 byte
Const Endpoint 2: Μέγιστο μέγεθος πακέτου = 0 byte
Διασύνδεση 0 Ρύθμιση Alt 1
Const Endpoint 1: Μέγιστο μέγεθος πακέτου = 256 byte
Const Endpoint 2: Μέγιστο μέγεθος πακέτου = 256 byte
Διασύνδεση 0 Ρύθμιση Alt 2
Const Endpoint 1: Μέγιστο μέγεθος πακέτου = 512 byte
Const Endpoint 2: Μέγιστο μέγεθος πακέτου = 512 byte
Το πρόγραμμα οδήγησης της κάμερας web διαμορφώνει την κάμερα web ώστε να χρησιμοποιεί τις προεπιλεγμένες ρυθμίσεις διεπαφής κατά την προετοιμασία. Οι προεπιλεγμένες ρυθμίσεις δεν έχουν σταθερό εύρος ζώνης, επομένως χρησιμοποιώντας τις προεπιλεγμένες ρυθμίσεις κατά την προετοιμασία αποφεύγεται ο κίνδυνος να μην είναι δυνατή η απαρίθμηση της κάμερας web λόγω αποτυχίας αιτήματος σταθερού εύρους ζώνης.
Όταν το πρόγραμμα οδήγησης πελάτη είναι έτοιμο να εκτελέσει σταθερές ισόχρονες μεταφορές, θα πρέπει να προσπαθήσει να χρησιμοποιήσει τη ρύθμιση Alt 2, επειδή η ρύθμιση Alt 2 έχει το μεγαλύτερο μέγεθος πακέτου. Εάν το αίτημα αποτύχει, το πρόγραμμα οδήγησης μπορεί να δοκιμάσει δεύτερη φορά χρησιμοποιώντας τη ρύθμιση Alt 1. Επειδή η ρύθμιση Alt 1 απαιτεί λιγότερο εύρος ζώνης, αυτό το αίτημα μπορεί να πετύχει ακόμα και αν το πρώτο αίτημα αποτύχει. Οι πολλαπλές ρυθμίσεις Alt επιτρέπουν στον οδηγό να κάνει πολλές προσπάθειες πριν εγκαταλείψει.
Μόλις η κάμερα web τεθεί σε αδράνεια, το εκχωρημένο εύρος ζώνης μπορεί να επιστραφεί στη διαθέσιμη ομάδα εύρους ζώνης επιλέγοντας ξανά τις προεπιλεγμένες ρυθμίσεις.
Οι χρήστες μπορούν να δουν πόσο εύρος ζώνης έχει εκχωρήσει ένας ελεγκτής USB ελέγχοντας τις ιδιότητες του ελεγκτή στη Διαχείριση Συσκευών των Windows. Επιλέξτε τις ιδιότητες του ελεγκτή και αναζητήστε την καρτέλα Για προχωρημένους. Αυτή η ένδειξη δεν υποδεικνύει πόσο εύρος ζώνης εκχωρεί ο διανομέας USB για τη μετάφραση συναλλαγών.
Η λειτουργία Device Manager που αναφέρει τη χρήση εύρους ζώνης ελεγκτή USB δεν λειτουργεί σωστά στα Windows XP.
Το μέγιστο μέγεθος μεταφοράς καθορίζει ένα σκληρά κωδικοποιημένο όριο στη στοίβα προγράμματος οδήγησης USB. Τα μεγέθη μεταφοράς κάτω από αυτά τα όρια ενδέχεται να αποτύχουν λόγω περιορισμών πόρων συστήματος. Για να αποφύγετε αυτούς τους τύπους αστοχιών και να διασφαλίσετε τη συμβατότητα με όλες τις εκδόσεις των Windows, αποφύγετε τη χρήση μεγάλων μεγεθών μεταφοράς για μεταφορές USB.
Το μέλος MaximumTransferSize της δομής USBD_PIPE_INFORMATION είναι ξεπερασμένο. Η στοίβα προγράμματος οδήγησης USB αγνοεί την τιμή στο MaximumTransferSize για σύνθετες και μη σύνθετες συσκευές.
Στα Windows 2000, η στοίβα προγράμματος οδήγησης USB αρχικοποιεί το MaximumTransferSize σε USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE. Τα προγράμματα οδήγησης πελάτη μπορούν να ορίσουν μια μικρότερη τιμή κατά τη διαμόρφωση της συσκευής. Για σύνθετες συσκευές, τα προγράμματα οδήγησης πελάτη ανά λειτουργία μπορούν να αλλάξουν το Μέγιστο Μέγεθος Μεταφοράς του σωλήνα μόνο σε μη προεπιλεγμένες ρυθμίσεις διεπαφής.
Το μέγεθος μεταφοράς USB περιορίζεται από:
Ο περιορισμός του μεγέθους μεταφοράς χρησιμοποιώντας το MaximumTransferSize δεν επηρεάζει άμεσα το εύρος ζώνης που καταναλώνει η συσκευή. Το πρόγραμμα οδήγησης πελάτη πρέπει να αλλάξει τις ρυθμίσεις διεπαφής ή να περιορίσει το μέγιστο μέγεθος πακέτου που έχει οριστεί στο μέλος MaximumPacketSize του USBD_PIPE_INFORMATION.
Το μέγιστο μέγεθος πακέτου ορίζεται από το πεδίο wMaxPacketSize του περιγραφέα τελικού σημείου. Τα προγράμματα οδήγησης πελάτη μπορούν να προσαρμόσουν το μέγεθος του πακέτου USB σε επιλεγμένα αιτήματα διεπαφής στη συσκευή. Η αλλαγή αυτής της τιμής δεν αλλάζει το wMaxPacketSize στη συσκευή.
Μέσα στο ζητούμενο URB βρίσκεται η δομή USBD_PIPE_INFORMATION του σωλήνα. Σε αυτή τη δομή,
Όταν ένα πρόγραμμα οδήγησης πελάτη εκδίδει αίτημα ανάγνωσης, το buffer μετάδοσης πρέπει να είναι πολλαπλάσιο του μέγιστου μεγέθους πακέτου. Ακόμα κι αν το πρόγραμμα οδήγησης απαιτεί λιγότερα δεδομένα από το μέγιστο μέγεθος πακέτου, πρέπει να ζητήσει ολόκληρο το πακέτο. Η μεταφορά ολοκληρώνεται όταν η συσκευή στέλνει ένα πακέτο μικρότερο από το μέγιστο μέγεθος (σύντομο πακέτο).
Σε παλαιότερους ελεγκτές, τα προγράμματα οδήγησης πελατών μπορούν να παρακάμψουν αυτήν τη συμπεριφορά. Στο μέλος TransferFlags του URB μεταφοράς δεδομένων, το πρόγραμμα οδήγησης πελάτη πρέπει να ορίσει τη σημαία USBD_SHORT_TRANSFER_OK. Αυτή η σημαία επιτρέπει στη συσκευή να στέλνει πακέτα μικρότερα από το wMaxPacketSize.
Στους ελεγκτές κεντρικού υπολογιστή xHCI, το USBD_SHORT_TRANSFER_OK αγνοεί μαζικά τελικά σημεία και διακόπτει τα τελικά σημεία. Η μετάδοση σύντομων πακέτων στον ελεγκτή EHCI δεν προκαλεί συνθήκη σφάλματος.
Στους ελεγκτές κεντρικού υπολογιστή EHCI, το USBD_SHORT_TRANSFER_OK αγνοείται για μαζικά και τερματικά σημεία διακοπής.
Στους ελεγκτές κεντρικού υπολογιστή UHCI και OHCI, εάν το USBD_SHORT_TRANSFER_OK δεν έχει οριστεί για μαζικές μεταφορές ή διακοπή, οι σύντομες μεταφορές πακέτων θα σταματήσουν το τελικό σημείο και θα επιστρέψουν τον κωδικό σφάλματος της μεταφοράς.
Το πρόγραμμα οδήγησης στοίβας προγραμμάτων οδήγησης USB επιβάλλει διαφορετικά όρια στο μέγεθος του πακέτου κατά την εγγραφή σε μια συσκευή από ό,τι κατά την ανάγνωση από τη συσκευή. Ορισμένα προγράμματα οδήγησης πελατών πρέπει συχνά να μεταδίδουν μικρές ποσότητες δεδομένων ελέγχου για τη διαχείριση των συσκευών τους. Σε αυτήν την περίπτωση, δεν είναι πρακτικό να περιοριστεί η μεταφορά δεδομένων σε πακέτα ομοιόμορφου μεγέθους. Επομένως, κατά τη διάρκεια της εγγραφής δεδομένων, η στοίβα προγράμματος οδήγησης δεν αποδίδει κάποιο ειδικό νόημα σε πακέτα που είναι μικρότερα από το μέγιστο μέγεθος του τελικού σημείου. Αυτό επιτρέπει στο πρόγραμμα οδήγησης πελάτη να χωρίσει μεγάλες μεταφορές στη συσκευή σε πολλαπλά URB μεγέθους μικρότερο ή ίσο με το μέγιστο.
Ο οδηγός πρέπει να τερματίσει τη μεταφορά με ένα πακέτο μικρότερο από το μέγιστο μέγεθος ή να χρησιμοποιήσει ένα πακέτο μηδενικού μήκους για να οριοθετήσει το τέλος της μεταφοράς. Η μεταφορά δεν ολοκληρώνεται έως ότου το πρόγραμμα οδήγησης στείλει ένα πακέτο μικρότερο από το wMaxPacketSize. Εάν το μέγεθος μεταφοράς είναι ακριβώς πολλαπλάσιο της μέγιστης τιμής, ο οδηγός πρέπει να στείλει ένα οριοθετημένο πακέτο μηδενικού μήκους για να τερματίσει ρητά τη μεταφορά.
Όπως απαιτείται από την προδιαγραφή USB, το πρόγραμμα οδήγησης πελάτη είναι υπεύθυνο για την οριοθέτηση των μεταφορών δεδομένων χρησιμοποιώντας πακέτα μηδενικού μήκους. Η στοίβα προγράμματος οδήγησης USB δεν δημιουργεί αυτόματα αυτά τα πακέτα.
Τα συμβατά προγράμματα οδήγησης USB 2.0 και USB 1.1 πρέπει να μεταδίδουν ένα πακέτο μέγιστου μεγέθους (wMaxPacketSize) και στη συνέχεια να τερματίζουν τη μετάδοση με ένα πακέτο μικρότερο από το μέγιστο μέγεθος ή να οριοθετούν το τέλος της μετάδοσης με ένα πακέτο μηδενικού μήκους. Η μεταφορά δεν ολοκληρώνεται έως ότου το πρόγραμμα οδήγησης στείλει ένα πακέτο μικρότερο από το wMaxPacketSize. Εάν το μέγεθος μεταφοράς είναι ακριβώς πολλαπλάσιο της μέγιστης τιμής, ο οδηγός πρέπει να στείλει ένα οριοθετημένο πακέτο μηδενικού μήκους για να τερματίσει ρητά τη μεταφορά
Το πρόγραμμα οδήγησης της συσκευής είναι υπεύθυνο για την οριοθέτηση των μεταφορών δεδομένων χρησιμοποιώντας πακέτα μηδενικού μήκους όπως απαιτείται από την προδιαγραφή USB. Η στοίβα USB του συστήματος δεν δημιουργεί αυτόματα αυτά τα πακέτα.