Delen via


ACPI-systeembeschrijvingstabellen

De implementatie van de HARDWAREspecificatie van Advanced Configuration and Power Interface (ACPI) is niet vereist op SoC-platforms, maar veel van de ACPI-softwarespecificatie is (of kan worden) vereist. ACPI definieert een algemeen, uitbreidbaar mechanisme voor tabeldoorgifte, plus specifieke tabellen voor het beschrijven van het platform voor het besturingssysteem.

Tabelstructuren en headers, inclusief id- en controlesomvelden, worden gedefinieerd in de ACPI 5.0-specificatie. Windows maakt gebruik van dit mechanisme voor tabeldoorgifte, naast de specifieke tabellen die in dit artikel worden beschreven.

Het idee achter deze tabellen is om generieke software in staat te stellen standaard ip-blokken (intellectuele eigendom) te ondersteunen die op verschillende manieren kunnen worden geïntegreerd in verschillende platforms. Met de tabelstrategie worden de platformvariabele kenmerken van een bepaald platform geleverd in een tabel en gebruikt door algemene software om zich aan te passen aan de specifieke set IP-blokken die zijn geïntegreerd in het platform. Deze software kan daarom eenmaal worden geschreven, grondig getest en vervolgens in de loop van de tijd geoptimaliseerd.

Hoofdsysteembeschrijving aanwijzer (RSDP)

Windows is afhankelijk van UEFI-firmware om het hardwareplatform op te starten. Daarom gebruikt Windows de EFI-systeemtabel om de RSDP te vinden, zoals beschreven in sectie 5.2.5.2, 'De RSDP zoeken op UEFI-systemen', van de ACPI 5.0-specificatie. De platformfirmware vult het adres van de RSDT of XSDT in de RSDP in. (Als beide tabeladressen zijn opgegeven, geeft Windows de voorkeur aan de XSDT.)

Hoofdsysteembeschrijvingstabel (RSDT)

De RSDT (of XSDT) bevat aanwijzers naar andere systeembeschrijvingstabellen die op het platform worden geleverd. Deze tabel bevat met name aanwijzers naar de volgende tabellen:

  • De vaste ACPI-hardwaretabel (FADT)

  • De tabel met meerdere interruptcontrollers (MADT)

  • De Core System Resource Table (CSRT) kan optioneel worden gebruikt.

  • De foutopsporingspoorttabel 2 (DBG2)

  • De Boot Graphics Resource Table (BGRT)

  • De Firmware Performance Data Table (FPDT)

  • De DSDT -tabel (Base System Description Table)

  • Eventueel aanvullende systeembeschrijvingstabellen (SSDT)

Vaste ACPI Description Table (FADT)

De vaste ACPI-hardwaretabel (FADT) bevat belangrijke informatie over de verschillende functies voor vaste hardware die beschikbaar zijn op het platform. Ter ondersteuning van hardwarearme ACPI-platformen breidt ACPI 5.0 de FADT-tabeldefinitie als volgt uit:

  • Het veld Vlaggen binnen de FADT (offset 112) heeft twee nieuwe vlaggen:

    HARDWARE_REDUCED_ACPI bit offset 20. Geeft aan dat ACPI-hardware niet beschikbaar is op dit platform. Deze vlag moet worden ingesteld als het ACPI-vaste hardwareprogrammeermodel niet is geïmplementeerd.

    LOW_POWER_S0_IDLE_CAPABLE Bit offset 21. Geeft aan dat het platform ondersteuning biedt voor niet-actieve statussen binnen de acsI S0-systeemstroomstatus die energie-efficiënter zijn dan elke Sx-slaapstand. Als deze vlag is ingesteld, probeert Windows niet te slapen en te hervatten, maar gebruikt in plaats daarvan niet-actieve platformstatussen en verbonden stand-by.

  • Het veld FADT Preferred_PM_Profile (byte offset 45) heeft een nieuwe rolvermelding, 'Tablet'. Deze rol is van invloed op het energiebeheerbeleid voor de weergave en invoer en is van invloed op de weergave van schermtoetsenborden.

  • Het veld 'IA-PC Boot Architecture Flags' (offset 109) heeft een nieuwe vlag 'CMOS RTC Not Present' (bit offset 5) om aan te geven dat de CMOS RTC van de pc niet is geïmplementeerd of niet bestaat op de verouderde adressen. Als deze vlag is ingesteld, moet het platform het apparaat ACPI Time en Alarm Control Method implementeren. Zie voor meer informatie de sectie Besturingsmethode Tijd- en Alarminrichting in het artikel door ACPI gedefinieerde apparaten.

  • Er worden nieuwe velden toegevoegd ter ondersteuning van de traditionele slaapstand/hervatting van pc's op hardware gereduceerde ACPI-platforms. Deze velden worden genegeerd door Windows, maar moeten aanwezig zijn in de tabel voor naleving.

  • Als de vlag HARDWARE_REDUCED_ACPI is ingesteld, worden alle velden met betrekking tot de ACPI-hardwarespecificatie genegeerd door het besturingssysteem.

Alle andere FADT-instellingen behouden hun betekenissen uit de vorige versie, ACPI 4.0. Zie voor meer informatie sectie 5.2.9, "Fixed ACPI Description Table (FADT)", van de ACPI 5.0 specificatie.

Multiple APIC Description Table (MADT)

In PC-implementaties van ACPI worden de MADT(Multiple APIC Description Table) en PC-specifieke interrupt controller descriptors gebruikt om het systeemonderbreidingsmodel te beschrijven. Voor op Arm gebaseerde SoC-platforms voegt ACPI 5.0 descriptoren toe voor de Generieke Interrupt Controller (GIC) van Arm Holdings en de GIC-distributiemodule. Windows bevat ingebouwde ondersteuning voor de GIC en GIC-distributeur. Zie de secties 5.2.12.14, "GIC Structure" en 5.2.12.15, "GIC Distributor Structure", van de ACPI 5.0-specificatie voor meer informatie over deze descriptors.

De beschrijvingsstructuren van de interruptcontroller worden direct na het veld Vlaggen in de MADT weergegeven. Voor Arm-platforms wordt één descriptor vermeld voor elke GIC, gevolgd door één voor elke GIC-distributeur. De GIC die overeenkomt met de opstartprocessor moet de eerste vermelding zijn in de lijst met interruptcontrollerdescriptors.

Algemene timerbeschrijvingstabel (GTDT)

Net als bij de interruptcontroller is er een standaardtabel met timerbeschrijvingen in ACPI. Voor Arm-systemen die gebruikmaken van de GIT-timer, kan de GTDT van ACPI worden gebruikt om gebruik te maken van de ingebouwde ondersteuning voor de GIT in Windows.

Core System Resources Table (CSRT)

Core System Resources (CDR's) zijn gedeelde hardwarefuncties, zoals interruptcontrollers, timers en DMA-controllers waarnaar het besturingssysteem toegang moet serialiseren. Waar industriestandaarden bestaan voor functies zoals timers en interruptcontrollers (op zowel x86- als Arm-architecturen), wordt Windows gebouwd ter ondersteuning van deze functies op basis van de standaardtabellen die worden beschreven in ACPI (bijvoorbeeld MADT en GTDT). Totdat de branche echter convergeert op DMA-controllerinterfacestandaarden, is het nodig om sommige niet-standaardapparaten in het besturingssysteem te ondersteunen.

Windows ondersteunt het concept van HAL-extensies om dit probleem op te lossen. HAL-extensies zijn SoC-specifieke modules, geïmplementeerd als DLL's, die de Windows HAL aanpassen aan een specifieke hardware-interface van een specifieke klasse CSR die door Windows is vereist. Om deze niet-standaard CSR-modules te identificeren en te laden, heeft Microsoft een nieuwe ACPI-tabel gedefinieerd. Deze tabel, die een gereserveerde handtekening van CSRT in de ACPI-specificatie heeft, moet worden opgenomen in de RSDT als niet-standaard CDR's op het platform worden gebruikt.

De CSRT beschrijft resourcegroepen van CDR's, waarbij elke resourcegroep hardware van een bepaald type identificeert. Windows gebruikt de id die is opgegeven voor de resourcegroep om de vereiste HAL-extensie voor deze groep te zoeken en te laden. Resourcegroepen binnen de CSRT kunnen ook afzonderlijke resourcedescriptors bevatten, afhankelijk van het CSR-type en de behoeften van de HAL-extensie. De indeling en het gebruik van deze resourcedescriptors wordt gedefinieerd door de HAL-extensieschrijver, die de extensie veel draagbaarder kan maken en daardoor verschillende SoC-platforms ondersteunt door de resourcedescriptors in de CSRT te wijzigen.

Ter ondersteuning van het onderhoud van HAL-extensies en voor het beheren van de systeemresources die door deze extensies worden gebruikt, moet elke resourcegroep die in de CSRT wordt beschreven, ook worden weergegeven als een apparaat in de ACPI-naamruimte van het platform. Zie de volgende sectie 'Gedifferentieerde systeembeschrijvingstabel (DSDT)' voor meer informatie. De apparaat-id's die worden gebruikt in de koptekst van de resourcegroep moeten overeenkomen met de id's die worden gebruikt in het knooppunt van de naamruimte van het apparaat. Zie de sectie Apparaatidentificatie in de sectie ACPI in het artikel Apparaatbeheernaamruimteobjecten voor meer informatie. Het bestaan van apparaten in de naamruimte van de resourcegroep stelt de HAL-extensie in staat te worden onderhouden door de Windows Update-service.

Zie de CSRT-specificatie (Core System Resources Table) voor meer informatie.

Fouten opsporen in poorttabel 2 (DBG2)

Microsoft vereist een poort voor foutopsporing op alle systemen. Microsoft definieert de foutopsporingspoorten die zijn ingebouwd in een platform om de foutopsporingspoortentabel 2 (DBG2) voor ACPI te beschrijven. In deze tabel worden een of meer onafhankelijke poorten opgegeven voor foutopsporing. De aanwezigheid van de tabel DBG2 geeft aan dat het platform ten minste één debugpoort bevat. Deze tabel bevat informatie over de identiteit en configuratie van de poort(en) voor foutopsporing. De tabel bevindt zich in het systeemgeheugen met andere ACPI-tabellen en moet worden verwezen in de ACPI RSDT-tabel.

Windows gebruikt de waarde Poorttype in de tabel DBG2 om het benodigd transport voor de Kernel Debugger (KD), zoals USB of serieel, te identificeren en te laden. Het KD-transport gebruikt vervolgens de waarde van het poortsubtype in de tabel DBG2 om de hardware-interface te identificeren die door de poort wordt gebruikt. Andere informatie in de tabel DBG2 bevat het systeemadres van de poortregisters, die wordt gebruikt door de hardwareinterfacemodule voor het opgegeven subtype. Ten slotte moet de tabel DBG2 een verwijzing bevatten naar het apparaatknooppunt in de ACPI-naamruimte die overeenkomt met de poort voor foutopsporing. Met deze verwijzing kan Windows conflicten beheren tussen foutopsporing en normaal gebruik van het apparaat, indien van toepassing, en ook om het foutopsporingsprogramma te integreren met energieovergangen.

Zie de Specificatie microsoft Debug Port Table 2 (DBG2) voor meer informatie.

Gedifferentieerde systeembeschrijvingstabel (DSDT)

In ACPI worden randapparaten en systeemhardwarekenmerken van het platform beschreven in de Differentiated System Description Table (DSDT), die bij het opstarten wordt geladen, of in Secondary System Description Tables (SSDT's), die bij het opstarten worden geladen of tijdens de uitvoering dynamisch kunnen worden geladen. Voor SoCs is de platformconfiguratie doorgaans statisch, dus de DSDT kan voldoende zijn, hoewel SSDT's ook kunnen worden gebruikt om de modulariteit van de platformbeschrijving te verbeteren.

ACPI definieert een geïnterpreteerde taal (ACPI-brontaal of ASL) en een uitvoeringsomgeving (virtuele ACPI-machine) voor het beschrijven van systeemapparaten en -functies, en hun platformspecifieke besturingselementen, op een os-agnostische manier. ASL wordt gebruikt om benoemde objecten in de ACPI-naamruimte te definiëren en de Microsoft ASL-compiler wordt gebruikt voor het produceren van AML-bytecode (ACPI Machine Language) voor verzending naar het besturingssysteem in de DSDT. Het Windows ACPI-stuurprogramma (inbox), Acpi.sys, implementeert de ACPI-virtuele machine en interpreteert de AML-bytecode. Een AML-object retourneert mogelijk gewoon beschrijvingsgegevens. Een AML-object kan ook een methode zijn waarmee berekeningen worden uitgevoerd of I/O-bewerkingen worden uitgevoerd. Een controlemethode is een uitvoerbaar AML-object dat gebruikmaakt van de apparaatstuurprogramma's van het besturingssysteem om I/O-bewerkingen uit te voeren op de platformhardware. ASL maakt gebruik van OpRegions om de verschillende adresruimten te abstraheren die toegankelijk zijn in het besturingssysteem. Besturingsmethoden voeren I/O-bewerkingen uit als een reeks overdrachten naar en van benoemde velden die zijn gedeclareerd in OpRegions.

Zie sectie 5.5.2.4, 'Toegang tot bewerkingsregio's' in de specificatie ACPI 5.0 voor meer informatie over OpRegion. Zie sectie 5.5, ACPI-naamruimte, in de specificatie ACPI 5.0 voor meer informatie over ASL- en controlemethoden.

Windows biedt ondersteuning voor het ontwikkelen en opsporen van fouten in ASL-code. De ASL-compiler bevat een disassembler om de ontwikkelaar in staat te stellen een namespace te laden vanuit een debugdoel. De ASL-compiler kan vervolgens worden gebruikt om de naamruimte opnieuw toe te passen op het doelsysteem voor snelle prototypen en testen, zonder de systeemfirmware te hoeven flashen. Daarnaast ondersteunt het Windows Kernel Debugger, in combinatie met een gecontroleerde (CHK)-versie van het Acpi.sys-stuurprogramma, het traceren en analyseren van AML-uitvoering. Zie het AMLI-foutopsporingsprogramma voor meer informatie.

Windows SMM Security Mitigations Table (WSMT)

De WSMT-specificatie (Windows SMM Security Mitigations Table) bevat details van een ACPI-tabel (Advanced Configuration and Power Interface) die is gemaakt voor gebruik met Windows-besturingssystemen die ondersteuning bieden voor windows-functies voor beveiliging op basis van virtualisatie (VBS).

Deze informatie is van toepassing op de volgende besturingssystemen:

Windows Server 2016

Windows 10, versie 1607

Zie de Windows SMM WSMT-specificatie (Security Mitigations Table) (DOCX-download) voor meer informatie.

iSCSI Boot Firmware Table (iBFT)

De iSCSI Boot Firmware (iBF) Table (iBFT) is een informatieblok met verschillende parameters die nuttig zijn voor het iSCSI-opstartproces. De iBFT is het mechanisme waarmee iBF-parameterwaarden worden overgebracht naar het besturingssysteem. De iBF bouwt en vult de iBFT in. De iBFT is beschikbaar voor het Windows-besturingssysteem om een consistente stroom van het opstartproces mogelijk te maken.

Zie de iSCSI Boot Firmware Table -specificatie (iBFT) (DOCX-download) voor meer informatie.