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 al sistema operativo.
Le strutture di tabella e le intestazioni, inclusi i campi ID e checksum, sono definite nella specifica ACPI 5.0. Windows usa questo meccanismo di passaggio di tabelle, oltre alle tabelle specifiche descritte in questo articolo.
L'idea alla base di queste tabelle consiste nell'abilitare il software generico per 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 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 di RSDT o XSDT in RSDP. Se vengono forniti entrambi gli indirizzi di tabella, Windows preferisce XSDT.
Tabella descrizione sistema radice (RSDT)
RSDT (o XSDT) include puntatori a qualsiasi altra tabella di descrizione di sistema fornita nella piattaforma. In particolare, questa tabella contiene puntatori alle tabelle seguenti:
Tabella hardware ACPI fissa (FADT)
Tabella del controller di interruzione multipla (MADT)
Facoltativamente, la tabella delle risorse di sistema di base (CSRT)
Tabella porta di debug 2 (DBG2)
Tabella delle risorse grafiche di avvio (BGRT)
Tabella dei dati sulle prestazioni del firmware (FPDT)
Tabella di descrizione del sistema di base (DSDT)
Facoltativamente, altre tabelle di descrizione di sistema (SSDT)
Tabella 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 all'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.
LOW_POWER_S0_IDLE_CAPABLE offset bit 21. Indica che la piattaforma supporta stati di inattività a basso consumo all'interno dello stato di alimentazione del sistema ACPI S0 più efficiente rispetto a qualsiasi stato di sospensione Sx. Se questo flag è impostato, Windows non tenterà di sospendere e riprendere, ma userà invece gli stati di inattività della piattaforma e lo standby connesso.
Il campo Preferred_PM_Profile FADT (offset byte 45) include una nuova voce di ruolo, "Tablet". Questo ruolo influenza i criteri di risparmio energia per la visualizzazione e l'input e influisce sulla visualizzazione delle tastiere su schermo.
Il campo "IA-PC Boot Architecture Flags" (offset 109) ha un nuovo flag "RTC Not Present" (offset di 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 e Alarm Control Method. Per altre informazioni, vedere la sezione Control Method Time and Alarm device nell'articolo ACPI defined devices (Dispositivi definiti ACPI ).
Vengono aggiunti nuovi campi per supportare la sospensione/ripresa del PC tradizionale nelle piattaforme ACPI ridotte all'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 il significato della 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 APIC multipla (MADT)
Nelle implementazioni PC di ACPI, i descrittori di controller di interrupt specifici del PC vengono usati per descrivere il modello di interrupt del sistema. Per le piattaforme SoC basate su Arm, ACPI 5.0 aggiunge descrittori per il controller di interrupt generico (GIC) di Arm Holding e il distributore GIC. 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, "Struttura GIC" e 5.2.12.15, "Struttura di distribuzione GIC", della specifica ACPI 5.0.
Le strutture del descrittore del controller interrupt vengono elencate immediatamente dopo il campo Flags in MADT. Per le piattaforme Arm, viene elencato un descrittore per ogni GIC, seguito da uno per ogni server di distribuzione GIC. Il controller di sicurezza virtuale corrispondente al processore di avvio deve essere la prima voce nell'elenco dei descrittori del controller di interrupt.
Tabella descrizione timer generica (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 GTDT di ACPI per sfruttare il supporto predefinito per GIT in Windows.
Tabella delle risorse di sistema di base (CSRT)
Le risorse di sistema di base sono funzioni hardware condivise, ad esempio controller di interrupt, timer e controller DMA a cui il sistema operativo deve serializzare l'accesso. Se esistono standard di settore per funzionalità quali timer e controller di interruzione (sia nelle architetture x86 che arm), Windows crea 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 del 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 del 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 in RSDT se nella piattaforma vengono usate CSP non standard.This table, which has a reserved signature of "CSRT" in the ACPI specification, must be included in the RSDT if non-standard CSRs are used on the platform.
CsrT descrive i gruppi di risorse dei CSP, in cui ogni gruppo di risorse identifica l'hardware di un determinato 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 di CSRT possono anche contenere 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 è definito dal writer di estensioni HAL, che può rendere l'estensione molto più portabile e supportare quindi 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 "Differdd System Description Table (DSDT)" seguente. Gli identificatori del 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 dei dispositivi in ACPI nell'articolo Oggetti dello spazio dei nomi Gestione dispositivi. L'esistenza di questi dispositivi dello spazio dei nomi del gruppo di risorse consente di gestire l'estensione HAL dal servizio Windows Update.
Per altre informazioni, vedere la specifica CSRT (Core System Resources Table).
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 della porta 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 Sottotipo porta 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, che viene usato dal modulo dell'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 descrizione sistema differenziata (DSDT)
In ACPI, i dispositivi periferici e le funzionalità hardware di sistema nella piattaforma sono descritti nella tabella di descrizione sistema differenziata (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, pertanto il 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 Microsoft ASL viene usato per produrre codice di byte ACPI (AML) per la trasmissione al sistema operativo nel DSDT. Il driver ACPI 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 può 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 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 altre informazioni sui metodi ASL e di controllo, vedere la sezione 5.5, "ACPI Namespace", nella specifica ACPI 5.0.
Windows offre supporto per lo sviluppo e il debug del codice ASL. Il compilatore ASL include un disassembler per consentire all'implementatore di caricare uno spazio dei nomi da una destinazione 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 di Windows, insieme a una versione selezionata (CHK) del driver Acpi.sys, supporta la traccia e l'analisi dell'esecuzione di AML. Per altre informazioni, vedere Debugger AMLI.
Tabella delle mitigazioni della sicurezza di Windows SMM (WSMT)
La specifica WSMT (Security Mitigations Table) di Windows SMM 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 altre informazioni, vedere la specifica WSMT (Windows SMM Security Mitigations Table) (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 compila e compila iBFT. IBFT è disponibile per il sistema operativo Windows per consentire un flusso coerente del processo di avvio.
Per altre informazioni, vedere la specifica iSCSI Boot Firmware Table (iBFT) (download DOCX).