virtualizare USB

virtualizare USB

După cum se știe, principala noutate USB 3.0 caietul de sarcini. a fost de a crește rata de date de până la 5,0 Gbit / s în modul SuperSpeed. prin dispozitive USB de putere este, de asemenea, îmbunătățit de port, a adăugat mecanisme pentru a îmbunătăți performanța de unități de disc conectate prin USB-bus. Dar potențialul uriaș al noului standard nu se limitează la cele mai înalte realizări ale tehnologiei. Documentul oferă o perspectivă clară de punere în aplicare mecanism de virtualizare-controler USB.

Măsura în care se pune problema de virtualizare este esențială pentru platforme personale? Cu alte cuvinte: cât de important este și care are nevoie de ea? Să nu sari la concluzii. Remarcăm doar că încă soluția acestor probleme a fost încredințată unui tip special de echipament AnywhereUSB. producția Digi International. Ca urmare, utilizatorul primește USB peste IP și preț-terestre neprietenos de un astfel de preț platforma devaysa comparabil.

Specificații USB 3.0 elimină acest blestem și procesul de decongelare virtualizarea Bus universal. Introducerea noului standard necesară dezvoltarea unui controler de gazdă moderne. Deci, a existat un USB 3.0 xHCI (Extensible Host Controller Interface). Dezvoltatorii sale optimizate inițial arhitectura controler pentru a sprijini virtualizare, crearea unui nou tip de dispozitiv este de multe ori se face referire la dispozitivele partajate nativ.

Pe Co SR-IOV și Intel VT-x

Vorbind de periferice de virtualizare, folosim des cuvintele: supraveghetorul a dat controlerul oaspete la dispoziția problemei sau supervizor emulează un controler virtual pentru oaspete al problemei. Luați în considerare natura de nivel redus al acestor operațiuni.

Unitate de optimizare xHCI MMIO

Din cele de mai sus rezultă că, dacă într-o singură pagină, dimensiunea de 4 kilobytes are cel puțin un caz, tratamentul la care doriți să capturați, atunci pagina va trebui să-l marcați ca nu este prezent și de a folosi-o pentru mecanismul de software de emulare.

Acum, să ne amintim că USB 3.0 xHCI registre controler sunt împărțite în două grupe:

  1. registre Low-touch. Aceste registre de tratament sunt rare, ele pot emula software-ul, fără a compromite performanța. În exemplul nostru, un bloc xHCIOperationalRegisters registre.
  2. registre de înaltă atingere. aceste registre inversiune apare rapid, astfel încât acestea trebuie să servească în hardware, prin intermediul SR-IOV. În exemplul nostru, un bloc de xHCI Runtime Registri.

Metoda de optimizare este simplu și evident - Locul înregistrează două dintre grupuri la diferite 4 blocuri kilobyte. În acest caz, mecanismele de virtualizare incluse în procesorul central (de exemplu, Intel VT-x) folosind 4-Kbyte granularitate poate atribui un statut optim separat pentru fiecare grup de registre. Acesta este principiul utilizat pentru plasarea acestor două grupuri xHCI registre controler.

În ciuda simplității unor astfel de soluții, multe dintre dispozitivele existente, arhitectura care este dezvoltat înainte de apariția tehnologiilor SR-IOV, virtualizarea incomodă, deoarece registrele cu statut diferit sunt într-un bloc de 4 kilobyte.

Dispozitivele USB de virtualizare

  1. Butuci integrate - butuci aranjate pe un singur cip cu un controler xHCI, inclusiv Hub Rate de potrivire (RMH).
  2. Butuci încorporate - noduri formate ca cipuri separate pe placa de sistem dispus între controler și conectorii USB xHCI.
  3. Huburile externe, hub-uri externe, utilizatorul se conectează.

Pentru a implementa matrice moale conexiunile cu comutare virtuale între controlerul gazdă și dispozitivul USB utilizează structura xHCI-IOV Structura capacitate, situată în blocul de registru de configurare.

controler xHCI alocă fiecare USB bloc parametru dispozitiv, numit dispozitiv Slot. Acest bloc este folosit pentru toate operațiunile dispozitivului, nu numai sarcini de virtualizare. La rândul său, xHCI-IOV Structura Capability Structura cuprinde un bloc de registre, un registru pentru fiecare slot Device. Aceste atribute definesc registrele pentru dispozitivul utilizând slotul dispozitivului. Un astfel de atribut este numărul de controller-ul gazdă virtuală căruia îi aparține dispozitivul. Scrierea valoarea acestui atribut, dispozitivul specificat transmite supervizorul predeterminat problema de oaspeți. Rețineți că, atunci când se utilizează atributul opțional Slot emulat, posibil suport hardware pentru emularea de dispozitive USB care nu există fizic.

Este semnificativ faptul că procesele asociate cu conexiunea fizică și deconectarea de dispozitive la un port USB, loc, în termeni de timp CPU, relativ rare, servit cu mecanisme software de emulare. O ilustrare a acestui fapt este că registrele PORTSC - Stare Port / control, utilizate pentru monitorizarea și controlul porturilor, sunt un grup de registre de joasă-touch. Numai după ce se servește conexiunea, iar supraveghetorul a trecut USB-dispozitiv este una dintre sarcinile oaspete vin în mecanismele pentru a asigura hardware-ul de conectare la fiecare sarcini clienți exclusiv cu dispozitivele USB.