Tabelas de descrição do sistema ACPI

A implementação da Especificação de Hardware da ACPI (Configuração Avançada e Da Interface de Energia) não é necessária em plataformas baseadas em SoC, mas grande parte da Especificação de Software acPI é (ou pode ser) necessária. O ACPI define um mecanismo genérico e extensível de passagem de tabela, além de tabelas específicas para descrever a plataforma para o sistema operacional.

Estruturas de tabela e cabeçalhos, incluindo campos de ID e soma de verificação, são definidos na especificação ACPI 5.0. O Windows utiliza esse mecanismo de passagem de tabela, além das tabelas específicas descritas neste artigo.

A ideia por trás dessas tabelas é habilitar o software genérico para dar suporte a blocos de IP (propriedade intelectual) padrão que podem ser integrados a várias plataformas de diversas maneiras. Com a estratégia de tabela, os atributos de variável de plataforma de uma determinada plataforma são fornecidos em uma tabela e usados por software genérico para se adaptar ao conjunto específico de blocos ip integrados à plataforma. Portanto, esse software pode ser gravado uma vez, testado minuciosamente e otimizado ao longo do tempo.

Ponteiro de descrição do sistema raiz (RSDP)

O Windows depende do firmware UEFI para inicializar a plataforma de hardware. Portanto, o Windows usará a tabela do sistema EFI para localizar o RSDP, conforme descrito na seção 5.2.5.2, "Localizando o RSDP em sistemas habilitados para UEFI", da especificação ACPI 5.0. O firmware da plataforma preenche o endereço do RSDT ou do XSDT no RSDP. (Se ambos os endereços de tabela forem fornecidos, o Windows preferirá o XSDT.)

RSDT (Root System Description Table)

O RSDT (ou XSDT) inclui ponteiros para quaisquer outras tabelas de descrição do sistema fornecidas na plataforma. Especificamente, esta tabela contém ponteiros para as seguintes tabelas:

  • A tabela de hardware ACPI fixa (FADT)

  • A tabela de controladores de interrupção múltipla (MADT)

  • Opcionalmente, a CSRT (Tabela de Recursos do Sistema Principal)

  • A tabela de porta de depuração 2 (DBG2)

  • A Tabela de Recursos gráficos de inicialização (BGRT)

  • Tabela de dados de desempenho do firmware (FPDT)

  • A tabela de descrição do sistema base (DSDT)

  • Opcionalmente, tabelas de descrição do sistema adicionais (SSDT)

Tabela de descrição de ACPI fixa (FADT)

A FADT (Tabela de Hardware acpi fixa) contém informações importantes sobre os vários recursos de Hardware Fixo disponíveis na plataforma. Para dar suporte a plataformas ACPI reduzidas por hardware, o ACPI 5.0 estende a definição da tabela FADT da seguinte maneira:

  • O campo Sinalizadores dentro do FADT (deslocamento 112) tem dois novos sinalizadores:

    HARDWARE_REDUCED_ACPI Deslocamento de bits 20. Indica que o hardware ACPI não está disponível nesta plataforma. Esse sinalizador deve ser definido se o modelo de programação de hardware fixo acpi não for implementado.

    LOW_POWER_S0_IDLE_CAPABLE Deslocamento de bits 21. Indica que a plataforma dá suporte a estados ociosos de baixa potência dentro do estado de energia do sistema ACPI S0 que são mais eficientes em termos de energia do que qualquer estado de suspensão Sx. Se esse sinalizador estiver definido, o Windows não tentará dormir e retomar, mas usará estados ociosos da plataforma e conectados em espera.

  • O campo Preferred_PM_Profile FADT (deslocamento de bytes 45) tem uma nova entrada de função, "Tablet". Essa função influencia a política de gerenciamento de energia para a exibição e a entrada e afeta a exibição de teclados na tela.

  • O campo "Sinalizadores de Arquitetura de Inicialização de IA-PC" (deslocamento 109) tem um novo sinalizador "CMOS RTC Não Presente" (deslocamento de bits 5) para indicar que o CMOS RTC do computador não está implementado ou não existe nos endereços herdados. Se esse sinalizador estiver definido, a plataforma deverá implementar o dispositivo acpi time and alarm control method. Para obter mais informações, consulte a seção Tempo do Método de Controle e Dispositivo de alarme no artigo Dispositivos definidos por ACPI .

  • Novos campos são adicionados para dar suporte à suspensão/retomada do computador tradicional em plataformas ACPI reduzidas por hardware. Esses campos são ignorados pelo Windows, mas devem estar presentes na tabela para conformidade.

  • Se o sinalizador HARDWARE_REDUCED_ACPI estiver definido, todos os campos relacionados à Especificação de Hardware do ACPI serão ignorados pelo sistema operacional.

Todas as outras configurações fadt mantêm seus significados da versão anterior, ACPI 4.0. Para obter mais informações, consulte a seção 5.2.9, "Tabela de Descrição de ACPI Fixa (FADT)", da especificação ACPI 5.0.

Tabela de descrição de várias APIC (MADT)

Em implementações de PC de ACPI, os descritores madt (tabela de descrição de várias APIC) e descritores de controlador de interrupção específicos do computador são usados para descrever o modelo de interrupção do sistema. Para plataformas SoC baseadas em Arm, o ACPI 5.0 adiciona descritores para o Controlador de Interrupção Genérico (GIC) da Arm Holdings e o Distribuidor GIC. O Windows inclui suporte à caixa de entrada para o GIC e o Distribuidor GIC. Para obter mais informações sobre esses descritores, consulte as seções 5.2.12.14, "Estrutura GIC" e 5.2.12.15, "Estrutura do Distribuidor GIC", da especificação ACPI 5.0.

As estruturas do descritor do controlador de interrupção são listadas imediatamente após o campo Sinalizadores no MADT. Para plataformas arm, um descritor é listado para cada GIC, seguido por um para cada Distribuidor GIC. O GIC correspondente ao processador de inicialização deve ser a primeira entrada na lista de descritores do controlador de interrupção.

Tabela de descrição do temporizador genérico (GTDT)

Assim como acontece com o controlador de interrupção, há uma tabela de descrição do temporizador padrão no ACPI. Para sistemas Arm que utilizam o temporizador GIT, o GTDT da ACPI pode ser usado para aproveitar o suporte interno para o GIT no Windows.

CSRT (Core System Resources Table)

Os CSRs (Core System Resources) são funções de hardware compartilhadas, como controladores de interrupção, temporizadores e controladores de DMA aos quais o sistema operacional deve serializar o acesso. Onde existem padrões do setor para recursos como temporizadores e controladores de interrupção (em arquiteturas x86 e Arm), o Windows cria suporte para esses recursos com base nas tabelas padrão descritas em ACPI (por exemplo, MADT e GTDT). No entanto, até que o setor converga nos padrões de interface do controlador DMA, há a necessidade de dar suporte a alguns dispositivos não padrão no sistema operacional.

O Windows dá suporte ao conceito de extensões HAL para resolver esse problema. As extensões HAL são módulos específicos de SoC, implementados como DLLs, que adaptam o WINDOWS HAL a uma interface de hardware específica de uma classe específica de CSR exigida pelo Windows. Para identificar e carregar esses módulos CSR não padrão, a Microsoft definiu uma nova tabela ACPI. Essa tabela, que tem uma assinatura reservada de "CSRT" na especificação acpi, deve ser incluída no RSDT se CSRs não padrão forem usadas na plataforma.

O CSRT descreve grupos de recursos de CSRs, em que cada grupo de recursos identifica o hardware de um tipo específico. O Windows usa o identificador fornecido para o grupo de recursos localizar e carregar a extensão HAL necessária para esse grupo. Os grupos de recursos dentro do CSRT também podem conter descritores de recursos individuais, dependendo do tipo CSR e das necessidades da extensão HAL. O formato e o uso desses descritores de recursos são definidos pelo gravador de extensão HAL, que pode tornar a extensão muito mais portátil e, assim, dar suporte a várias plataformas soc diferentes simplesmente alterando os descritores de recursos contidos no CSRT.

Para dar suporte à manutenção de extensões HAL e gerenciar os recursos do sistema usados por essas extensões, cada grupo de recursos descrito no CSRT também deve ser representado como um dispositivo dentro do namespace ACPI da plataforma. Para obter mais informações, consulte a seção "Tabela de Descrição diferenciada do sistema (DSDT)". Os identificadores de dispositivo usados no cabeçalho do grupo de recursos devem corresponder aos identificadores usados no nó de namespace do dispositivo. Para obter mais informações, consulte a seção Identificação do dispositivo no ACPI no artigo Objetos de namespace de gerenciamento de dispositivos . A existência desses dispositivos de namespace do grupo de recursos permite que a extensão HAL seja atendida pelo Serviço de Windows Update.

Para obter mais informações, consulte a especificação CSRT (Core System Resources Table).

Tabela de porta de depuração 2 (DBG2)

A Microsoft requer uma porta de depuração em todos os sistemas. Para descrever as portas de depuração internas em uma plataforma, a Microsoft define a DBG2 (Tabela de Porta de Depuração 2) para ACPI. Esta tabela especifica uma ou mais portas independentes para fins de depuração. A presença da tabela DBG2 indica que a plataforma inclui pelo menos uma porta de depuração. Esta tabela inclui informações sobre a identidade e a configuração das portas de depuração. A tabela está localizada na memória do sistema com outras tabelas ACPI e deve ser referenciada na tabela ACPI RSDT.

O Windows usa o valor Tipo de Porta na tabela DBG2 para identificar e carregar o transporte do Depurador de Kernel (KD) (por exemplo, USB ou serial) exigido pelo sistema. Em seguida, o transporte KD usa o valor de Subtipo de Porta na tabela DBG2 para identificar a interface de hardware usada pela porta. Outras informações na tabela DBG2 especificam o endereço do sistema dos registros de porta, que é usado pelo módulo de interface de hardware para o subtipo especificado. Por fim, a tabela DBG2 deve incluir uma referência ao nó do dispositivo no namespace acpi que corresponde à porta de depuração. Essa referência permite que o Windows gerencie conflitos entre o uso de depuração e o uso normal do dispositivo, se houver, e também integre o depurador com transições de energia.

Para obter mais informações, consulte a especificação DBG2 (Microsoft Debug Port Table 2).

Tabela de descrição do sistema diferenciada (DSDT)

No ACPI, os dispositivos periféricos e os recursos de hardware do sistema na plataforma são descritos na Tabela de Descrição diferenciada do sistema (DSDT), que é carregada na inicialização ou em SSDTs (Tabelas de Descrição do Sistema Secundário), que são carregadas na inicialização ou carregadas dinamicamente em tempo de execução. Para SoCs, a configuração da plataforma normalmente é estática, portanto, o DSDT pode ser suficiente, embora os SSDTs também possam ser usados para melhorar a modularidade da descrição da plataforma.

O ACPI define uma linguagem interpretada (linguagem de origem ACPI ou ASL) e um ambiente de execução (máquina virtual ACPI) para descrever dispositivos e recursos do sistema e seus controles específicos da plataforma, de maneira independente do sistema operacional. O ASL é usado para definir objetos nomeados no namespace acpi e o compilador do Microsoft ASL é usado para produzir código de byte de linguagem de máquina ACPI (AML) para transmissão para o sistema operacional no DSDT. O driver de ACPI do Windows de caixa de entrada, Acpi.sys, implementa a máquina virtual ACPI e interpreta o código de byte do AML. Um objeto AML pode simplesmente retornar informações de descrição. Ou um objeto AML pode ser um método que executa a computação ou faz operações de E/S. Um método de controle é um objeto AML executável que usa os drivers de dispositivo do sistema operacional para fazer operações de E/S no hardware da plataforma. O ASL usa OpRegions para abstrair os vários espaços de endereço acessíveis no sistema operacional. Os métodos de controle executam operações de E/S como uma série de transferências de e para campos nomeados declarados em OpRegions.

Para obter mais informações sobre OpRegions, consulte a seção 5.5.2.4, "Access to Operation Regions", na especificação ACPI 5.0. Para obter mais informações sobre ASL e métodos de controle, consulte a seção 5.5, "Namespace ACPI", na especificação ACPI 5.0.

O Windows dá suporte ao desenvolvimento e depuração de código ASL. O compilador ASL inclui um desmontador para permitir que o implementador carregue um namespace de um destino de depuração. Em seguida, o compilador ASL pode ser usado para reaplicar o namespace ao destino para criação rápida de protótipos e testes, sem precisar piscar o firmware do sistema. Além disso, o Depurador do Kernel do Windows, em conjunto com uma versão marcada (CHK) do driver de Acpi.sys, dá suporte ao rastreamento e à análise da execução do AML. Para obter mais informações, consulte O Depurador AMLI.

Tabela de Mitigações de Segurança do SMM do Windows (WSMT)

A especificação WSMT (Windows SMM Security Mitigations Table) contém detalhes de uma tabela ACPI (Interface de Energia e Configuração Avançada) que foi criada para ser usada com sistemas operacionais Windows que dão suporte a recursos de VBS (segurança baseada em virtualização) do Windows.

Essas informações se aplicam aos seguintes sistemas operacionais:

Windows Server 2016

Windows 10, versão 1607

Para obter mais informações, consulte a especificação WSMT (Tabela de Mitigações de Segurança) do SMM do Windows (download do DOCX).

Tabela de firmware de inicialização iSCSI (iBFT)

A iBFT (Tabela de Firmware de Inicialização iSCSI) é um bloco de informações que contém vários parâmetros que são úteis para o processo de inicialização iSCSI. O iBFT é o mecanismo pelo qual os valores de parâmetro iBF são transmitidos para o sistema operacional. O iBF compila e preenche o iBFT. O iBFT está disponível para o sistema operacional Windows para habilitar um fluxo consistente do processo de inicialização.

Para obter mais informações, consulte a especificação iBFT (tabela de firmware de inicialização iSCSI) (download do DOCX).