Condividi tramite


Tabelle di descrizione del sistema ACPI

L'implementazione della specifica hardware ACPI (Advanced Configuration and Power Interface) non è necessaria nelle piattaforme basate su SoC, ma gran parte della specifica del software ACPI è (o può essere) necessaria. ACPI definisce un meccanismo generico di passaggio di tabelle estendibile, oltre a tabelle specifiche per descrivere la piattaforma nel sistema operativo.

Le strutture e le intestazioni delle tabelle, inclusi i campi ID e checksum, sono definite nella specifica ACPI 5.0. Windows usa questo meccanismo di passaggio di tabella, oltre alle tabelle specifiche descritte in questo articolo.

L'idea alla base di queste tabelle è consentire al software generico di supportare blocchi di proprietà intellettuale standard (IP) che possono essere integrati in varie piattaforme in modi diversi. Con la strategia di tabella, gli attributi delle variabili della piattaforma di una determinata piattaforma vengono forniti in una tabella e usati dal software generico per adattarsi al set specifico di blocchi IP integrati nella piattaforma. Questo software può quindi essere scritto una volta, testato accuratamente e quindi ottimizzato nel tempo.

Puntatore alla descrizione del sistema di radice (RSDP)

Windows dipende dal firmware UEFI per avviare la piattaforma hardware. Di conseguenza, Windows userà la tabella di sistema EFI per individuare il RSDP, come descritto nella sezione 5.2.5.2, "Ricerca del RSDP nei sistemi abilitati UEFI", della specifica ACPI 5.0. Il firmware della piattaforma inserisce l'indirizzo del RSDT o XSDT nell'RSDP. Se vengono forniti entrambi gli indirizzi di tabella, Windows preferisce XSDT.

Tabella di descrizione del sistema radice (RSDT)

RSDT (o XSDT) includono puntatori a qualsiasi altra tabella di descrizione di sistema fornita sulla piattaforma. In particolare, questa tabella contiene puntatori alle tabelle seguenti:

  • Tabella hardware ACPI fissa (FADT)

  • Controller di interruzioni multiple - tabella (MADT)

  • Facoltativamente, la tabella delle risorse di sistema di base (CSRT)

  • Tabella delle porte di debug 2 (DBG2)

  • Tabella delle risorse grafica di avvio (BGRT)

  • Tabella dei dati sulle prestazioni del firmware (FPDT)

  • Tabella di descrizione del sistema di base (DSDT)

  • Facoltativamente, tabelle di descrizione di sistema aggiuntive (SSDT)

Tabella di descrizione ACPI fissa (FADT)

La tabella hardware ACPI fissa (FADT) contiene informazioni importanti sulle varie funzionalità hardware fisse disponibili nella piattaforma. Per supportare le piattaforme ACPI ridotte dall'hardware, ACPI 5.0 estende la definizione di tabella FADT come indicato di seguito:

  • Il campo Flags all'interno di FADT (offset 112) ha due nuovi flag:

    HARDWARE_REDUCED_ACPI offset bit 20. Indica che l'hardware ACPI non è disponibile in questa piattaforma. Questo flag deve essere impostato se il modello di programmazione hardware fisso ACPI non è implementato.

    Capacità LOW_POWER_S0_IDLE_BIT offset del bit 21. Indica che la piattaforma supporta stati di inattività a basso consumo all'interno dello stato di alimentazione del sistema ACPI S0 che sono più efficienti dal punto di vista energetico rispetto a qualsiasi stato di sospensione Sx. Se questo flag è impostato, Windows non tenterà di dormire e riprendere, ma userà invece gli stati di inattività della piattaforma e lo standby connesso.

  • Il campo FADT Preferred_PM_Profile (offset di byte 45) include una nuova opzione, "Tablet". Questo ruolo influenza i criteri di risparmio energia per la visualizzazione e l'input e influisce sulla visualizzazione delle tastiere sullo schermo.

  • Il campo "IA-PC Boot Architecture Flags" (offset 109) ha un nuovo flag "RTC Not Present" (offset bit 5) per indicare che l'RTC DEL PC non è implementato o non esiste negli indirizzi legacy. Se questo flag è impostato, la piattaforma deve implementare il dispositivo ACPI Time and Alarm Control Method. Per ulteriori informazioni, consulta la sezione Control Method Time and Alarm device nell'articolo Dispositivi definiti ACPI.

  • Vengono aggiunti nuovi campi per supportare la sospensione/ripresa del PC tradizionale nelle piattaforme ACPI ridotte a livello hardware. Questi campi vengono ignorati da Windows, ma devono essere presenti nella tabella per la conformità.

  • Se il flag HARDWARE_REDUCED_ACPI è impostato, tutti i campi relativi alla specifica hardware ACPI vengono ignorati dal sistema operativo.

Tutte le altre impostazioni FADT mantengono i loro significati dalla versione precedente, ACPI 4.0. Per altre informazioni, vedere la sezione 5.2.9 , "Tabella descrizione ACPI fissa (FADT)", della specifica ACPI 5.0.

Tabella di descrizione multipla APIC (MADT)

Nelle implementazioni PC di ACPI vengono utilizzati la Tabella di Descrizione dei APIC Multipli (MADT) e i descrittori del controller degli interrupt specifici del PC per descrivere il modello di interrupt di sistema. Per le piattaforme SoC basate su Arm, ACPI 5.0 aggiunge descrittori per il Generic Interrupt Controller (GIC) e il GIC Distributor di Arm Holdings. Windows include il supporto della posta in arrivo per il server di distribuzione GIC e GIC. Per ulteriori informazioni su questi descrittori, vedere le sezioni 5.2.12.14, "GIC Structure" e 5.2.12.15, "GIC Distributor Structure", della specifica ACPI 5.0.

Le strutture descrittore del controller dell'interrupt sono elencate immediatamente dopo il campo Flags nel MADT. Per le piattaforme Arm, viene elencato un descrittore per ogni GIC, seguito da uno per ogni server di distribuzione GIC. Il GIC corrispondente al processore di avvio deve essere la prima voce nell'elenco dei descrittori del controller di interrupt.

Tabella descrittiva del timer generico (GTDT)

Come per il controller di interrupt, è disponibile una tabella di descrizione timer standard in ACPI. Per i sistemi Arm che utilizzano il timer GIT, è possibile usare IL GTDT di ACPI per sfruttare il supporto predefinito per GIT in Windows.

Tabella delle risorse di sistema principali (CSRT)

Le risorse di sistema principali sono funzioni hardware condivise, ad esempio controller di interrupt, timer e controller DMA a cui il sistema operativo deve serializzare l'accesso. Dove esistono standard di settore per funzionalità come timer e controller di interrupt (sia nelle architetture x86 che Arm), Windows integra il supporto per queste funzionalità in base alle tabelle standard descritte in ACPI (ad esempio, MADT e GTDT). Tuttavia, fino a quando il settore non converge sugli standard di interfaccia controller DMA, è necessario supportare alcuni dispositivi non standard nel sistema operativo.

Windows supporta il concetto di estensioni HAL per risolvere questo problema. Le estensioni HAL sono moduli specifici di SoC, implementati come DLL, che adattano Windows HAL a un'interfaccia hardware specifica di una classe specifica di CSR richiesta da Windows. Per identificare e caricare questi moduli CSR non standard, Microsoft ha definito una nuova tabella ACPI. Questa tabella, che ha una firma riservata "CSRT" nella specifica ACPI, deve essere inclusa nel RSDT se nella piattaforma vengono utilizzati registri di configurazione non standard.

CsrT descrive i gruppi di risorse di csr, in cui ogni gruppo di risorse identifica l'hardware di un particolare tipo. Windows usa l'identificatore fornito per il gruppo di risorse per trovare e caricare l'estensione HAL necessaria per questo gruppo. I gruppi di risorse all'interno del file CSRT possono contenere anche singoli descrittori di risorse, a seconda del tipo CSR e delle esigenze dell'estensione HAL. Il formato e l'uso di questi descrittori di risorse sono definiti dal writer di estensioni HAL, che può rendere l'estensione molto più portabile e supportare varie piattaforme SoC diverse semplicemente modificando i descrittori di risorse contenuti nel CSRT.

Per supportare la manutenzione delle estensioni HAL e per gestire le risorse di sistema usate da queste estensioni, ogni gruppo di risorse descritto in CSRT deve essere rappresentato anche come dispositivo all'interno dello spazio dei nomi ACPI della piattaforma. Per altre informazioni, vedere la sezione "Tabella descrizione sistema differenziata (DSDT)". Gli identificatori di dispositivo usati nell'intestazione del gruppo di risorse devono corrispondere agli identificatori usati nel nodo dello spazio dei nomi del dispositivo. Per altre informazioni, vedere la sezione Identificazione del dispositivo in ACPI nell'articolo Oggetti dello spazio dei nomi di gestione dei dispositivi . L'esistenza di questi dispositivi dello spazio dei nomi del gruppo di risorse consente di manutenere l'estensione HAL tramite il servizio di aggiornamento di Windows.

Per altre informazioni, vedere la specifica della tabella delle risorse di sistema di base (CSRT).

Tabella Porta di Debug 2 (DBG2)

Microsoft richiede una porta di debug in tutti i sistemi. Per descrivere le porte di debug incorporate in una piattaforma, Microsoft definisce la tabella delle porte di debug 2 (DBG2) per ACPI. Questa tabella specifica una o più porte indipendenti a scopo di debug. La presenza della tabella DBG2 indica che la piattaforma include almeno una porta di debug. Questa tabella include informazioni sull'identità e sulla configurazione delle porte di debug. La tabella si trova nella memoria di sistema con altre tabelle ACPI e deve essere fatto riferimento nella tabella ACPI RSDT.

Windows usa il valore Tipo di porta nella tabella DBG2 per identificare e caricare il trasporto Kernel Debugger (KD), ad esempio USB o seriale, richiesto dal sistema. Il trasporto KD usa quindi il valore Port Subtype nella tabella DBG2 per identificare l'interfaccia hardware usata dalla porta. Altre informazioni nella tabella DBG2 specificano l'indirizzo di sistema dei registri delle porte, utilizzato dal modulo di interfaccia hardware per il sottotipo specificato. Infine, la tabella DBG2 deve includere un riferimento al nodo del dispositivo nello spazio dei nomi ACPI corrispondente alla porta di debug. Questo riferimento consente a Windows di gestire i conflitti tra l'uso del debug e l'uso normale del dispositivo, se presente, e anche per integrare il debugger con transizioni di alimentazione.

Per altre informazioni, vedere la specifica Microsoft Debug Port Table 2 (DBG2).

Tabella di descrizione del sistema differenziato (DSDT)

In ACPI, i dispositivi periferici e le funzionalità hardware di sistema nella piattaforma sono descritti nella tabella di descrizione del sistema differenziato (DSDT), che viene caricata all'avvio o nelle tabelle SSDT (Secondary System Description Tables), caricate in fase di avvio o caricate dinamicamente in fase di esecuzione. Per i soC, la configurazione della piattaforma è in genere statica, quindi DSDT potrebbe essere sufficiente, anche se le unità SSDT possono essere usate anche per migliorare la modularità della descrizione della piattaforma.

ACPI definisce un linguaggio interpretato (ACPI source language o ASL) e un ambiente di esecuzione (macchina virtuale ACPI) per descrivere i dispositivi e le funzionalità di sistema e i relativi controlli specifici della piattaforma, in modo indipendente dal sistema operativo. AsL viene usato per definire oggetti denominati nello spazio dei nomi ACPI e il compilatore ASL Microsoft viene usato per produrre codice di byte ACPI machine language (AML) per la trasmissione al sistema operativo nel DSDT. Il driver ACPI di Windows in arrivo, Acpi.sys, implementa la macchina virtuale ACPI e interpreta il codice byte AML. Un oggetto AML potrebbe semplicemente restituire informazioni di descrizione. In alternativa, un oggetto AML potrebbe essere un metodo che esegue il calcolo o esegue operazioni di I/O. Un metodo di controllo è un oggetto AML eseguibile che usa i driver di dispositivo del sistema operativo per eseguire operazioni di I/O sull'hardware della piattaforma. AsL usa OpRegions per astrarre i vari spazi di indirizzi accessibili nel sistema operativo. I metodi di controllo eseguono operazioni di I/O come una serie di trasferimenti da e verso campi denominati dichiarati in OpRegions.

Per altre informazioni su OpRegions, vedere la sezione 5.5.2.4, "Accesso alle aree operative", nella specifica ACPI 5.0. Per maggiori informazioni su ASL e sui metodi di controllo, vedere la sezione 5.5, "Spazio dei nomi ACPI", nella specifica ACPI 5.0.

Windows fornisce supporto per lo sviluppo e il debug del codice ASL. Il compilatore ASL include un disassembler per consentire allo sviluppatore di caricare un namespace da un target di debug. Il compilatore ASL può quindi essere usato per riapplicare lo spazio dei nomi alla destinazione per la creazione rapida di prototipi e test, senza dover eseguire il flashing del firmware di sistema. Inoltre, il debugger del kernel Windows, insieme a una versione controllata (CHK) del driver Acpi.sys, supporta la traccia e l'analisi dell'esecuzione AML. Per altre informazioni, vedere Debugger AMLI.

Tabella delle mitigazioni della sicurezza di Windows SMM (WSMT)

La specifica WSMT (Windows SMM Security Mitigations Table) contiene i dettagli di una tabella ACPI (Advanced Configuration and Power Interface) creata per l'uso con sistemi operativi Windows che supportano le funzionalità di sicurezza basata su virtualizzazione di Windows.

Queste informazioni si applicano ai sistemi operativi seguenti:

Windows Server 2016

Windows 10, versione 1607

Per ulteriori informazioni, consultare la Tabella di mitigazioni di sicurezza SMM di Windows (WSMT) (download DOCX).

Tabella del firmware di avvio iSCSI (iBFT)

La tabella iSCSI Boot Firmware (iBF) (iBFT) è un blocco di informazioni che contiene vari parametri utili per il processo di avvio iSCSI. iBFT è il meccanismo con cui i valori dei parametri iBF vengono trasmessi al sistema operativo. iBF genera e riempie l'iBFT. IBFT è disponibile per il sistema operativo Windows per consentire un flusso coerente del processo di avvio.

Per ulteriori informazioni, vedere la specifica iSCSI Boot Firmware Table (iBFT) (download DOCX).