Partilhar via


Tabelas de descrição do sistema ACPI

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

As estruturas e cabeçalhos da tabela, incluindo campos 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 é permitir que o software genérico suporte blocos de propriedade intelectual (IP) padrão que podem ser integrados em várias plataformas de diversas maneiras. Com a estratégia de tabela, os atributos variáveis de plataforma de uma determinada plataforma são fornecidos em uma tabela e usados por softwares genéricos para se adaptar ao conjunto específico de blocos IP integrados à plataforma. Este software pode, portanto, ser escrito uma vez, exaustivamente testado e, em seguida, 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. Assim, 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 insere o endereço do RSDT ou XSDT no RSDP. (Se ambos os endereços de tabela forem fornecidos, o Windows prefere o XSDT.)

Tabela de Descrição do Sistema Raiz (RSDT)

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 controlador de interrupção múltipla (MADT)

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

  • A Tabela 2 da Porta de Depuração (DBG2)

  • A tabela de recursos gráficos de inicialização (BGRT)

  • A Tabela de Dados de Desempenho de Firmware (FPDT)

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

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

Tabela de descrição ACPI fixa (FADT)

A Tabela de Hardware ACPI Fixo (FADT) contém informações importantes sobre os vários recursos de Hardware Fixo disponíveis na plataforma. Para suportar plataformas ACPI com hardware reduzido, a ACPI 5.0 estende a definição da tabela FADT da seguinte forma:

  • O campo Flags dentro do FADT (posição 112) tem dois novos sinalizadores:

    HARDWARE_REDUCED_ACPI Deslocamento de bit 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 bit 21. Indica que a plataforma suporta estados de inatividade de baixo consumo de energia 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á suspender e retomar, mas usará estados ociosos da plataforma e modo de espera conectado.

  • O campo Preferred_PM_Profile FADT (deslocamento de byte 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 "IA-PC Boot Architecture Flags" (deslocamento 109) tem um novo sinalizador "CMOS RTC Not Present" (bit offset 5) para indicar que o CMOS RTC do PC não está implementado ou não existe nos endereços herdados. Se esse sinalizador estiver definido, a plataforma deve implementar o dispositivo ACPI Time and Alarm Control Method. Para obter mais informações, consulte a secção Control Method Time e dispositivo de alarme no artigo dispositivos definidos pelo ACPI.

  • Novos campos são adicionados para suportar a suspensão/retomada tradicional do PC em plataformas ACPI com hardware reduzido. Esses campos são ignorados pelo Windows, mas devem estar presentes na tabela para fins de conformidade.

  • Se o sinalizador HARDWARE_REDUCED_ACPI estiver definido, todos os campos relacionados à especificação de hardware 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 ACPI fixa (FADT)", da especificação ACPI 5.0.

Tabela de descrição de múltiplos APIC (MADT)

Em implementações de PC da ACPI, a Multiple APIC Description Table (MADT) e os descritores de controlador de interrupção específicos do PC são usados para descrever o modelo de interrupção do sistema. Para plataformas SoC baseadas em Arm, a ACPI 5.0 adiciona descritores para o controlador de interrupções genérico (GIC) e o distribuidor GIC da Arm Holdings. O Windows inclui suporte de caixa de entrada para o GIC e GIC Distributor. 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)

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

Tabela de Recursos do Sistema Principal (CSRT)

Os Recursos do Sistema Principal (CSRs) são funções de hardware compartilhadas, como controladores de interrupção, temporizadores e controladores DMA aos quais o sistema operacional deve serializar o acesso. Quando existem padrões da indústria para recursos como temporizadores e controladores de interrupção (nas 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 a indústria convirja para os padrões de interface do controlador DMA, há uma necessidade de suportar alguns dispositivos não padrão no sistema operacional.

O Windows suporta o conceito de extensões HAL para resolver este problema. As extensões HAL são módulos específicos do SoC, implementados como DLLs, que adaptam o HAL do Windows 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. Esta tabela, que tem uma assinatura reservada de "CSRT" na especificação ACPI, deve ser incluída no RSDT se CSRs não padronizados forem usados na plataforma.

O CSRT descreve grupos de recursos de CSRs, onde cada grupo de recursos identifica hardware de um tipo específico. O Windows usa o identificador fornecido para o grupo de recursos para 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 de CSR e das necessidades da extensão HAL. O formato e o uso desses descritores de recursos é definido pelo escritor de extensão HAL, que pode tornar a extensão muito mais portátil e, assim, suportar 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 seguinte 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 de dispositivo na ACPI no artigo Objetos de namespace de gerenciamento de dispositivos . A existência desses dispositivos de namespace de grupo de recursos permite que a extensão HAL seja atendida pelo Serviço de Atualização do Windows.

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 a(s) porta(s) de depuração incorporada(s) em uma plataforma, a Microsoft define a Tabela de Porta de Depuração 2 (DBG2) para ACPI. Esta tabela especifica uma ou mais porta(s) independentes(s) 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 da(s) porta(s) de diagnóstico. 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 Port Type na tabela DBG2 para identificar e carregar o transporte KD (Kernel Debugger) (por exemplo, USB ou serial) que o sistema exige. Em seguida, o transporte KD usa o valor 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 dos registos de porta no sistema, que é usado pelo módulo de interface de hardware para o subtipo especificado. Finalmente, a tabela DBG2 deve incluir uma referência ao nó do dispositivo no namespace ACPI que corresponde à porta de depuração. Esta referência possibilita que o Windows gerencie conflitos entre o uso de depuração e o uso normal do dispositivo, se existirem, e também integre o depurador com as transições de energia.

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

Tabela de Descrição do Sistema Diferenciado (DSDT)

Na 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 nas Tabelas de Descrição do Sistema Secundário (SSDTs), que são carregadas na inicialização ou carregadas dinamicamente em tempo de execução. Para SoCs, a configuração da plataforma é tipicamente estática, então o DSDT pode ser suficiente, embora os SSDTs também possam ser usados para melhorar a modularidade da descrição da plataforma.

A 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 forma independente do sistema operacional. ASL é usado para definir objetos nomeados no namespace ACPI, e o compilador Microsoft ASL é usado para produzir código de byte ACPI machine language (AML) para transmissão para o sistema operacional no DSDT. O driver ACPI do Windows da caixa de entrada, Acpi.sys, implementa a máquina virtual ACPI e interpreta o código de byte AML. Um objeto AML pode simplesmente retornar informações de descrição. Ou, um objeto AML pode ser um método que executa 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. A 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, "ACPI Namespace", na especificação ACPI 5.0.

O Windows fornece suporte para desenvolver e depurar código ASL. O compilador ASL inclui um desassemblador para permitir que o desenvolvedor carregue um namespace de um alvo de depuração. O compilador ASL pode então ser usado para reaplicar o namespace ao destino para prototipagem e teste rápidos, sem a necessidade de flashear o firmware do sistema. Além disso, o Depurador do Kernel do Windows, em conjunto com uma versão verificada (CHK) do driver Acpi.sys, suporta o rastreamento e a análise da execução AML. Para obter mais informações, consulte O depurador AMLI.

Tabela de mitigações de segurança do Windows SMM (WSMT)

A especificação WSMT (Tabela de Mitigações de Segurança do Windows SMM) contém detalhes de uma tabela ACPI (Advanced Configuration and Power Interface) criada para uso com sistemas operacionais Windows que oferecem suporte a recursos de segurança baseada em virtualização (VBS) do Windows.

Estas informações aplicam-se aos seguintes sistemas operativos:

Windows Server 2016

Windows 10, versão 1607

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

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

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

Para obter mais informações, consulte a especificação iBFT (iSCSI Boot Firmware Table) (download DOCX).