Bővíthető gazdavezérlő interfész - Extensible Host Controller Interface
Az eXtensible Host Controller Interface ( xHCI ) egy számítógépes interfész specifikáció, amely meghatározza az univerzális soros busz (USB) gazdavezérlőjének nyilvántartási szintű leírását , amely képes csatlakozni az USB 1.x, 2.0 és 3.x kompatibilis eszközökkel . A specifikációt USB 3.0 gazdavezérlő specifikációnak is nevezik .
Az xHCI fejleszti a már meglévő Open Host Controller Interface (OHCI) és az Universal Host Controller Interface (UHCI) architektúrákat a legelterjedtebben a szélesebb sebességtartomány egyetlen szabványon belüli kezelésében, valamint az erőforrások hatékonyabb kezelésében a mobil hosztok érdekében korlátozott energiaforrások (például táblagépek és mobiltelefonok), valamint az alacsony és nagy sebességű eszközök keverésének támogatása.
Építészeti célok
Az xHCI radikális szakítást jelent az előző generációs USB gazdavezérlő interfész architektúrákhoz (azaz az Open Host Controller Interface (OHCI), az Universal Host Controller Interface (UHCI) és az Enhanced Host Controller Interface (EHCI)) számos tekintetben. Az alábbiakban az xHCI architektúra legfontosabb céljai láthatók:
- Hatékony működés - az üresjárati teljesítmény és a teljesítmény jobb, mint a korábbi USB gazdavezérlő architektúrák.
- Eszközszintű programozási modell, amely teljes mértékben megfelel a meglévő USB szoftvermodellnek
- Válassza le a szoftverhez bemutatott gazdavezérlő interfészt az alatta lévő USB -protokollokról
- Csökkentse a gazdagép memóriahozzáféréseinek számát, és teljes mértékben szüntesse meg azokat, ha az USB -eszközök tétlenek
- Távolítsa el a regiszter írásait és minimalizálja a regiszter olvasásait a normál adatátvitelhez
- Távolítsa el a "Companion Controller" modellt
- Engedélyezze a hardveres „áthidalási” módokat a rendszer erőforrás-korlátozott helyzetében, hogy az eszközök továbbra is elérhetők legyenek, de talán kevésbé optimális teljesítmény/teljesítményponton
- Képesség biztosítása a különböző piacok számára a hardver képességek megkülönböztetésére, pl. A célvezérlő teljesítményének, teljesítményének és költségeinek kiegyenlítése az egyes piacokon
- Határozzon meg egy kibővíthető architektúrát, amely egyszerű utat biztosít az új USB specifikációkhoz és technológiákhoz, például nagyobb sávszélességű interfészekhez, optikai átviteli közeghez stb.
Építészeti részletek
Minden sebesség támogatása
Az OHCI és az UHCI vezérlők csak USB 1 sebességű eszközöket (1,5 Mbit/s és 12 Mbit/s) támogatnak, az EHCI pedig csak USB 2 eszközöket (480 Mbit/s).
Az xHCI architektúrát úgy tervezték, hogy egyetlen meghajtóköteg alatt támogassa az összes USB -sebességet, beleértve a SuperSpeed (5 Gbit/s) és a jövőbeli sebességeket is.
Energia hatékonyság
Amikor az USB -t eredetileg 1995 -ben fejlesztették ki, asztali platformokra irányították, hogy megakadályozzák a számítógépeken megjelenő csatlakozók terjedését, pl. PS/2 , soros port , párhuzamos port , játékport stb., És a gazda energiafogyasztása nem volt fontos szempont annak idején. Azóta a mobil platformok váltak a választott platformokká, és az akkumulátoraik miatt az energiafogyasztás kulcsfontosságú szempont volt. Az örökölt USB gazdavezérlők (OHCI, UHCI és EHCI) architektúrája nagyon hasonló volt, mivel az USB -n végrehajtandó tranzakciók "ütemtervét" a gazda memóriájában található szoftver építette fel, és a gazdavezérlő hardvere folyamatosan olvassa a menetrendeket annak meghatározására, hogy milyen tranzakciókat kell végrehajtani az USB -n, és mikor, még akkor is, ha nincs adatáthelyezés. Ezenkívül az eszközről történő leolvasás esetén az eszközt minden ütemezési intervallumban lekérdezték, még akkor is, ha nem volt olvasandó adat.
- Az xHCI kiküszöböli a gazda memórián alapuló USB tranzakció ütemezését, lehetővé téve a nulla memória aktivitását, ha nincs USB adatmozgás.
- Az xHCI csökkenti az időszakos eszközlekérdezések szükségességét azáltal, hogy lehetővé teszi az USB 3.0 vagy újabb eszközök számára, hogy értesítsék a gazdavezérlőt, ha rendelkezésre állnak az olvasható adatok, és áthelyezi a megszakításos tranzakciókat használó lekérdező USB 2.0 és 1.1-es eszközök kezelését a CPU-vezérlésből USB illesztőprogram az USB gazdavezérlőhöz. Az EHCI, az OHCI és az UHCI gazdavezérlők automatikusan kezelik a CPU lekérdezését, ha nincs szükség módosításokra, és ha egyetlen eszköznek sem kell megszakításokat küldenie, de mindegyik a CPU -ra támaszkodva állítja be a vezérlők ütemezését. Ha a megszakítási tranzakciókat használó bármely USB -eszköz rendelkezik adatokkal, amelyeket küldeni kell, akkor az xHCI gazdavezérlő megszakítást küld, hogy értesítse a CPU -t arról, hogy van egy megszakítási tranzakció, amelyet kezelni kell. Mivel a CPU -nak már nem kell kezelnie az USB busz lekérdezését, több időt tölthet alacsony energiafogyasztású állapotban.
- Az xHCI nem igényli, hogy az implementációk támogassák az összes fejlett USB 2 és 3 energiagazdálkodási funkciót, beleértve az USB 2 LPM, USB 3 U1 és U2 állapotokat, HERD, LTM, Function Wake stb .; de ezek a jellemzők szükségesek az xHCI összes előnyének megvalósításához.
Virtualizációs támogatás
A régebbi USB gazdagép-vezérlő architektúrák komoly hiányosságokat mutatnak, ha virtualizált környezetekben alkalmazzák. A régebbi USB gazda-vezérlő interfészek viszonylag egyszerű hardveres adatszivattyút határoznak meg; ahol a teljes buszkezeléssel (sávszélesség-kiosztás, címkiosztás stb.) kapcsolatos kritikus állapot a gazda-vezérlő meghajtó (HCD) szoftverében található . A szabványos hardver IO virtualizációs technika - az I/O interfész -regiszterek replikálása - alkalmazása a régi USB gazdavezérlő interfészen problémás, mivel a kritikus állapot, amelyet virtuális gépeken (VM) kell kezelni, nem érhető el a hardver számára. Az xHCI architektúra áthelyezi e kritikus állapot vezérlését hardverbe, lehetővé téve az USB -erőforrás -kezelést a virtuális gépeken. Az xHCI virtualizációs funkciók a következőkről is gondoskodnak:
- az egyes USB-eszközök közvetlen hozzárendelése (függetlenül attól, hogy hol vannak a busztopológiában) bármely virtuális géphez
- minimalizálva a futásidejű, virtuális gépek közötti kommunikációt
- támogatja a natív USB-eszközmegosztást
- a PCIe SR-IOV (egygyökeres I/O virtualizáció ) támogatása
Egyszerűsített illesztőprogram -architektúra
Az EHCI OHCI vagy UHCI vezérlőket használ "társvezérlőkként", ahol az USB 2 eszközöket az EHCI veremen keresztül kezelik, és az EHCI portlogikája lehetővé teszi egy alacsony vagy teljes sebességű USB-eszköz átirányítását egy "kísérő" UHCI vagy OHCI vezérlő, ahol a kis sebességű vagy teljes sebességű USB-eszközöket a megfelelő UHCI vagy OHCI veremen keresztül kezelik. Például egy USB 2 PCIe gazdavezérlő kártya, amely 4 USB "Standard A" csatlakozót tartalmaz, általában egy 4 portos EHCI és két 2 portos OHCI vezérlőt jelenít meg a rendszerszoftverben. Ha nagy sebességű USB-eszközt csatlakoztat a 4 csatlakozó bármelyikéhez, akkor az eszköz az EHCI-vezérlő 4 gyökér hub-portjának egyikén keresztül kezelhető. Ha kis sebességű vagy teljes sebességű USB-eszközt csatlakoztat az 1-es vagy 2-es csatlakozóhoz, akkor az az egyik OHCI-vezérlő gyökér hub-portjához kerül irányításra, valamint a csatlakozókhoz csatlakoztatott alacsony és teljes sebességű USB-eszközökhöz. A 3 vagy 4 a másik OHCI vezérlő gyökér hub portjaira kerül. Az EHCI függősége a különálló gazdavezérlőktől a nagysebességű USB-eszközökhöz, valamint az alacsony és teljes sebességű USB-eszközök csoportja összetett kölcsönhatásokat és függőségeket eredményez az EHCI és az OHCI/UHCI illesztőprogramok között.
- Az xHCI architektúra kiküszöböli a kiegészítő vezérlők és külön illesztőprogram -kötegek szükségességét.
- Az illesztőprogram által korábban végrehajtott ütemezési, sávszélesség -kezelési és USB -eszköz -hozzárendelési funkciók beépítése az xHCI hardverbe egyszerűbb, karcsúbb, alacsonyabb késleltetésű szoftverköteget tesz lehetővé az xHCI számára.
Stream támogatás
Az USB 3.0 SuperSpeed specifikációhoz hozzáadták a Streams támogatását, elsősorban a nagy teljesítményű USB -n keresztüli tárolási műveletek lehetővé tétele érdekében. Klasszikusan 1: 1 kapcsolat volt az USB végpont és a rendszermemória puffere között, és a gazdavezérlő kizárólagosan felelős az összes adatátvitel irányításáért. A Streams megváltoztatta ezt a paradigmát azáltal, hogy 1-től sokhoz "végpont-puffer" társítást biztosított, és lehetővé tette az eszköz számára, hogy irányítsa a gazdavezérlőt, hogy melyik puffert kell áthelyezni. Az USB Stream végponthoz tartozó USB -adatátvitelt az xHCI ugyanúgy ütemezi, mint bármely más tömeges végpontot, azonban az átvitelhez tartozó adatpuffert az eszköz határozza meg.
- Az xHCI USB Stream támogatás lehetővé teszi, hogy akár 64 ezer puffert is társítson egyetlen végponthoz.
- Az xHCI Streams protokoll támogatása lehetővé teszi egy USB -eszköz számára, hogy válassza ki, melyik puffert továbbítja az xHCI a végpont ütemezésekor.
Skálázhatóság
Az xHCI architektúrát úgy tervezték, hogy nagymértékben skálázható legyen, és képes támogatni 1–255 USB -eszközt és 1–255 gyökér hub -portot. Mivel minden USB -eszköz legfeljebb 31 végpontot határozhat meg, egy 255 eszközt támogató xHCI -nek 7 906 különálló végpontot kell támogatnia. Klasszikusan minden végponthoz társított memóriapuffert fizikai memóriablokkok sora ír le, ahol a sorhoz fejmutató, farokmutató, hosszúság és egyéb regiszterek szükségesek állapotuk meghatározásához. A sorállapot meghatározásának számos módja van, de ha minden sorhoz 32 bájt regiszterteret feltételeznénk, akkor majdnem 256 KB nyilvántartási területre lenne szükség a 7 906 sor támogatásához. Általában csak kis számú USB-eszköz csatlakozik egy rendszerhez egyszerre, és egy USB-eszköz átlagosan 3-4 végpontot támogat, amelyek közül csak a végpontok egy része aktív egyszerre. Az xHCI a sor memóriáját végpontkontextus adatszerkezetként tartja fenn a rendszermemóriában. Az összefüggéseket úgy tervezték, hogy az xHCI gyorsítótárazhassa őket, és ki -be lapozzon a végpont tevékenységének függvényében. Így a gyártó méretezheti belső xHCI Endpoint Context gyorsítótár -területét és erőforrásait, hogy megfeleljen a termékeikre vonatkozó gyakorlati használati modelleknek, és ne az általuk támogatott architekturális korlátoknak. Ideális esetben a belső gyorsítótár -területet úgy választják ki, hogy normál használati körülmények között ne legyen kontextus -lapozás az xHCI által. Ezenkívül az USB -végpont tevékenysége is heves. Vagyis bármikor nagyszámú végpont állhat készen az adatok áthelyezésére, azonban csak egy részhalmaz aktívan mozgatja az adatokat. Például az egér megszakítási IN végpontja nem tudja órákig továbbítani az adatokat, ha a felhasználó távol van az asztalától. Az xHCI szállítóspecifikus algoritmusai észlelhetik ezt az állapotot, és ezt a végpontot jelölik ki a lapozáshoz, ha más végpontok elfoglaltak.
- Az xHCI architektúra nagy maximális értékeket tesz lehetővé a támogatott USB -eszközök, portok, megszakítóvektorok stb. Számára, de a megvalósításnak csak a marketingkövetelmények teljesítéséhez szükséges számot kell meghatároznia. Például egy gyártó dönthet úgy, hogy 16 eszközre korlátozza a táblagép xHCI megvalósításához támogatott USB -eszközök számát.
- A gyártó tovább használhatja az xHCI architektúra jellemzőit, hogy belső erőforrásait a célhasználati modellekhez igazítsa. Például, ha a gyártó a használhatósági tesztelés során megállapítja, hogy a táblagép -felhasználók 95% -a soha nem fog 4 USB -eszköznél többet csatlakoztatni, és minden USB -eszköz általában 4 végpontot (vagy kevesebbet) határoz meg, akkor a 16 végpontkontextus belső gyorsítótárazása biztosítja, hogy normál körülmények között körülmények között nem lesz rendszermemória -tevékenység a végpont -kontextus lapozás miatt.
Történelem
Az Open Host Controller Interface (OHCI) specifikációt egy vállalati konzorcium (Compaq, Microsoft és National Semiconductor) határozta meg nyílt specifikációként az USB 1.0 eszközök támogatására. Az Universal Host Controller Interface (UHCI) olyan specifikációra utal, amelyet az Intel eredetileg saját interfészként definiált az USB 1.0 eszközök támogatására. Az UHCI specifikációt végül nyilvánosságra hozták, de csak azután, hogy a többi iparág elfogadta az OHCI specifikációt.
Az EHCI specifikációt az Intel határozta meg az USB 2.0 eszközök támogatására. Az EHCI architektúrát az UHCI és az OHCI vezérlők után modellezték, amelyekhez szoftverre volt szükség az USB tranzakciós ütemtervek memóriába építéséhez, valamint a sávszélesség és a címkiosztás kezeléséhez. Hogy kiküszöbölje az USB 2.0 gazdavezérlő interfész nyílt verziójának meghatározására irányuló felesleges iparági erőfeszítéseket, az Intel az EHCI specifikációt az iparág rendelkezésére bocsátotta, licencdíjak nélkül.
Az EHCI licencmodellt az Intel xHCI specifikációjához folytattuk, azonban jelentősen kibővített iparági hozzájárulással. Több mint 100 vállalat járult hozzá az xHCI specifikációhoz. Az USB-megvalósítók fóruma (USB-IF) szintén finanszírozott egy sor xHCI-megfelelőségi tesztet, hogy maximalizálja a különböző xHCI-implementációk kompatibilitását.
Az xHCI 1.0 vezérlőket 2009 decembere óta szállítják. A Linux kernelek 2009 óta tartalmaznak xHCI illesztőprogramokat, de a régebbi kernelekhez vannak illesztőprogramok online. Az XP, Vista és Windows 7 rendszerhez készült Windows illesztőprogramok a megfelelő xHCI gyártóktól kaphatók. A beágyazott rendszer xHCI illesztőprogramjai az MCCI , a Jungo és más szoftvergyártóktól kaphatók . Az xHCI IP -blokkok több gyártótól is elérhetők a testreszabáshoz SOC környezetben. Az xHCI 1.1 vezérlők és eszközök szállítása 2015 -ben kezdődött.
Verziótörténet
Az xHCI specifikáció "errata" fájlokat használ a frissítések és pontosítások meghatározásához egy adott kiadáshoz. A hibák fájljaiban bekövetkezett változások minden egyes kiadásban felhalmozódnak. Tekintse meg a kapcsolódó hibafájlokat a konkrét módosítások részleteiért. Az xHCI hibafájlokban meghatározott legtöbb változtatás pontosítás, nyelvtani vagy helyesírási javítás, további kereszthivatkozás stb., Amelyek nem befolyásolják az illesztőprogram megvalósítását. Az építészetileg meghatározott módosítások egy képességjelzőt használnak annak meghatározására, hogy egy adott funkciót támogat -e az xHCI megvalósítás, és egy engedélyezési jelzőt a funkció bekapcsolásához.
Előzetes kiadások
Az xHCI specifikáció a 2010 -es hivatalos megjelenés előtt több változaton keresztül fejlődött:
- xHCI 0.9 : 2008 augusztusában jelent meg.
- USB 0.95 : 2008 decemberében jelent meg.
- USB 0.96 : 2009 augusztusában jelent meg.
- USB 0.96a : 1.0 Release Candidate, 2010 áprilisában jelent meg. Az első szállítási eszközök ezen a verzión alapulnak.
xHCI 1.0
-
xHCI 1.0 : Az első nyilvános kiadás, 2010. május 21.
Meghatározott USB adatátviteli sebesség: 1,5 Mbit/s ( alacsony sebesség ), 12 Mbit/s ( teljes sebesség ), 480 Mbit/s ( nagysebességű ) és 5 Gbit/ s ( SuperSpeed ). -
xHCI 1.0, hibás fájlok 1-4 : Megjelent 2011. január 17-én.
Beépített visszajelzés a nagyobb 1.0 nyilvános közönségtől, mentés-visszaállítási pontosítások és hardver LPM támogatás. -
xHCI 1.0, hibás fájlok 1-6 : Megjelent 2011. március 18-án
. -
xHCI 1.0, hibás fájlok 1-7 : Megjelent 2011. június 13-án
.
xHCI 1.1
- xHCI 1.1 : Megjelenés időpontja : 2013. december 21. Meghatározott USB 3.1 adatátviteli sebesség 10 Gbit/s ( SuperSpeed+ ). Ez az xHCI 1.0 1-21 hibás fájlokat tartalmazza. Lehetővé teszi a vezérlő számára, hogy nagyobb számú (legfeljebb 1023) kapartely puffert igényeljen a HCSPARAMS2 képességregiszterben.
xHCI 1.2
- xHCI 1.2 : 2019. május. A megadott USB 3.2 adatátviteli sebesség 10 Gbit/s ( SuperSpeedPlus Gen1x2 ) és 20 Gbit/s ( SuperSpeedPlus Gen2x2 ).