第1章ACPI簡述1.1首要目標1
1.2電源管理2
1.3遺留支持3
1.4OEM實現策略3
1.5電源和睡眠按鈕3
1.6ACPI規范與結構4
1.7OS、平臺兼容性5
1.7.1平臺實現ACPI定義的接口5
1.7.2OSPM實現5
1.7.3OS要求6
第2章ACPI基本術語及概念
2.1通用ACPI術語7
2.2各種狀態定義12
2.2.1全局系統狀態定義12
2.2.2設備電源狀態定義13
2.2.3睡眠狀態定義14
2.2.4處理器電源狀態定義15
2.2.5設備和處理器性能狀態定義15
2.3電源狀態16
2.3.1平臺電源管理特征17
2.4電源管理標準18
2.5跨設備依賴18
2.6硬件編程模型18
2.6.1固定硬件編程模型19
2.6.2通用硬件編程模型19
目錄
IV計算機系統核心開發:高級配置與電源管理最佳實踐
2.7ACPI硬件特征20
2.8ACPI寄存器模型21
2.9系統描述表頭部25
第3章ASL編程語言
3.1ASL語法28
3.1.1ASL語法表示法28
3.2ASL概念29
3.2.1ASL名字29
3.2.2ASL字面常量29
3.2.3ASL資源模板30
3.2.4ASL宏31
3.2.5ASL數據類型31
3.2.6ACPI名字空間39
3.2.7定義塊41
3.2.8控制方法執行43
3.2.9資源描述符類型46
3.3常用ASL操作符62
3.3.1ACPI表管理62
3.3.2ASL編譯控制64
3.3.3常量64
3.3.4混雜命名對象創建65
3.3.5操作區域和字段71
3.3.6字節數組字段77
3.3.7同步78
3.3.8對象參考79
3.3.9整數運算79
3.3.10邏輯操作符82
3.3.11方法執行控制83
3.3.12數據類型轉換和處理87
3.3.13資源描述符宏93
3.3.14控制方法對象108
3.4預定義的對象109
3.4.1\_GL(GlobalLockMutex)109
3.4.2_OSI(OperatingSystemInterface)109
3.4.3\_OS(OSNameObject)112
目錄V
3.4.4\_REV(RevisionDataObject)112
3.5轉化ASL到AML112
第4章系統描述表架構
4.1概要115
4.2ACPI系統描述表117
4.2.1保留位和字段117
4.2.2兼容性118
4.2.3地址格式118
4.2.4UUID(UniversalUniformIdentifiers)119
4.2.5RSDP119
4.2.6RSDT120
4.2.7XSDT121
4.2.8FADT121
4.2.9FACS140
4.2.10DSDT143
4.2.11SSDT143
4.2.12MADT144
4.2.13SBST151
4.2.14ECDT151
4.2.15SRAT153
4.2.16SLIT155
4.3其他ACPI表156
4.3.1MCFG156
4.3.2HPET157
4.3.3DMAR158
4.3.4微軟軟件授權表158
4.3.5SPMI159
4.3.6SPCR160
第5章ACPI事件編程模型
5.1ACPI事件編程模型組件165
5.2ACPI事件類型166
5.3固定事件處理166
5.4通用目的事件處理167
VI計算機系統核心開發:高級配置與電源管理最佳實踐
5.4.1針對GPE處理的_Exx、_Lxx和_Qxx方法170
5.4.2GPE喚醒事件171
5.5設備對象通知173
第_______6章設備及系統配置
6.1設備標識對象176
6.1.1_ADR(Address)177
6.1.2_CID(CompatibleID)178
6.1.3_CLS(ClassCode)179
6.1.4_DDN(DOSDeviceName)179
6.1.5_HID(HardwareID)179
6.1.6_HRV(HardwareRevision)180
6.1.7_MLS(MultipleLanguageString)180
6.1.8_SUB181
6.1.9_STR(String)181
6.1.10_UID(UniqueID)182
6.1.11_SUN(SlotUserNumber)182
6.2設備配置對象183
6.2.1_CDM(ClockDomain)184
6.2.2_CRS(CurrentResourceSettings)184
6.2.3_DIS(Disable)185
6.2.4_DMA(DirectMemoryAccess)185
6.2.5_DSD(DeviceSpecificData)187
6.2.6_FIX(FixedRegisterResourceProvider)187
6.2.7_GSB(GlobalSystemInterruptBase)189
6.2.8_HPP(HotPlugParameters)190
6.2.9_HPX(HotPlugParametersExtensions)192
6.2.10_MAT(MultipleAPICTableEntry)195
6.2.11_OSC(OperatingSystemCapabilities)196
6.2.12_PRS(PossibleResourceSetting)202
6.2.13_PRT(PCIRoutingTable)202
6.2.14_PXM(Proximity)205
6.2.15_SLI(SystemLocalityInformation)205
6.2.16_CCA(CacheCoherencyAttribute)207
6.2.17_SRS(SetResourceSettings)208
6.3設備插入、移走和狀態對象209
目錄VII
6.3.1_EDL(EjectDeviceList)210
6.3.2_EJD(EjectDependentDevice)211
6.3.3_EJx(Eject)212
6.3.4_LCK(Lock)212
6.3.5_OST(OSPMStatusIndication)212
6.3.6_RMV(Remove)216
6.3.7_STA(Status)216
6.4其他對象和控制方法217
6.4.1_INI(Init)218
6.4.2_REG(Region)218
6.4.3_BBN(BaseBusNumber)220
6.4.4_SEG(Segment)220
6.4.5_GLK(GlobalLock)222
6.5系統配置對象222
6.6ISA設備配置222
第7章電源和性能管理
7.1聲明電源資源對象228
7.2為電源資源定義的子對象228
7.2.1_OFF229
7.2.2_ON229
7.2.3_STA(Status)229
7.3設備電源管理對象229
7.3.1_DSW(DeviceSleepWake)231
7.3.2_PSx(PowerStatex)231
7.3.3_PSC(PowerStateCurrent)231
7.3.4_PR0(PowerResourceforD0)232
7.3.5_PR1(PowerResourceforD1)232
7.3.6_PR2(PowerResourceforD2)233
7.3.7_PR3(PowerResourceforD3hot)233
7.3.8_PRW(PowerResourceforWake)233
7.3.9_PSW(PowerStateWake)234
7.3.10_IRC(InRushCurrent)235
7.3.11_S1D(S1DeviceState)235
7.3.12_S2D(S2DeviceState)235
7.3.13_S3D(S3DeviceState)236
VIII計算機系統核心開發:高級配置與電源管理最佳實踐
7.3.14_S4D(S4DeviceState)236
7.3.15_S0W(S0DeviceWakeState)237
7.3.16_S1W(S1DeviceWakeState)237
7.3.17_S2W(S2DeviceWakeState)237
7.3.18_S3W(S3DeviceWakeState)238
7.3.19_S4W(S4DeviceWakeState)238
7.4OEM提供的系統級別控制方法238
7.4.1\_PTS239
7.4.2系統\_Sx狀態239
7.4.3\_SWS(SystemWakeSource)242
7.4.4\_TTS(TransitionToState)242
7.4.5\_WAK(SystemWake)243
7.5OSPM使用_PTS、_TTS和_WAK243
7.6控制設備電源244
7.6.1獲取設備電源能力244
7.6.2設置設備電源狀態244
7.6.3獲取設備電源狀態245
7.6.4喚醒計算機245
7.6.5調制解調器設備電源管理示例245
第8章ACPI嵌入式控制器接口規范
8.1嵌入式控制器接口描述250
8.2嵌入式控制器寄存器描述251
8.2.1嵌入式控制器狀態寄存器251
8.2.2嵌入式控制器命令寄存器252
8.2.3嵌入式控制器數據寄存器252
8.3嵌入式控制器命令集252
8.3.1讀嵌入式控制器252
8.3.2寫嵌入式控制器252
8.3.3突發使能嵌入式控制器253
8.3.4突發屏蔽嵌入式控制器253
8.3.5查詢嵌入式控制器253
8.4中斷模型254
8.4.1事件中斷模型254
8.4.2命令中斷模型254
8.5嵌入式控制器接口算法255
目錄IX
8.6嵌入式控制器描述信息255
8.7通過嵌入式控制器實現的SMBus主控制器接口255
8.7.1寄存器描述256
8.7.2協議描述259
8.8SMBus設備261
8.8.1SMBus設備訪問限制262
8.8.2SMBus設備命令訪問限制262
8.9在ACPI名字空間中定義一個嵌入式控制器設備262
8.10在ACPI名字空間中定義一個ECSMBus主控制器266
第9章ACPI系統管理總線接口規范
9.1SMBus概要268
9.1.1SMBus從地址268
9.1.2SMBus協議269
9.1.3SMBus狀態碼269
9.1.4SMBus命令值269
9.2ASL代碼訪問SMBus270
9.2.1聲明SMBus主控制器對象270
9.2.2聲明SMBus設備271
9.2.3聲明SMBus操作區域271
9.2.4聲明SMBus字段272
9.2.5聲明和使用SMBus數據緩沖區274
9.3使用SMBus協議275
9.3.1快速讀/寫(SMBQuick)275
9.3.2發送/接收字節(SMBSendReceive)276
9.3.3讀/寫字節(SMBByte)277
9.3.4讀/寫雙字節(SMBWord)278
9.3.5讀/寫塊(SMBBlock)278
9.3.6雙字節過程調用(SMBProcessCall)279
9.3.7塊過程調用(SMBBlockProcessCall)280
第10章處理器配置和控制
10.1處理器電源狀態282
10.1.1處理器電源狀態C0283
10.1.2處理器電源狀態C1285
X計算機系統核心開發:高級配置與電源管理最佳實踐
10.1.3處理器電源狀態C2285
10.1.4處理器電源狀態C3285
10.1.5額外處理器電源狀態286
10.2刷新緩存287
10.3聲明處理器287
10.3.1_PDC(ProcessorDriverCapabilities)288
10.3.2處理器電源狀態控制289
10.3.3處理器風門控制292
10.3.4處理器性能控制297
10.4處理器聚合設備302
10.4.1邏輯處理器空載302
10.4.2_PUR(ProcessorUtilizationRequest)302
第11章ACPI定義的設備和設備特定對象
11.1\_SI系統指示標記304
11.1.1_SST(SystemStatus)305
11.1.2_MSG(Message)305
11.1.3_BLT(BatteryLevelThreshold)305
11.1.4ASL代碼示例305
11.2電池設備306
11.3控制型外蓋設備306
11.3.1_LID307
11.3.2實現示例307
11.4控制型電源和睡眠按鈕設備310
11.5嵌入式控制器設備312
11.6通用容器設備313
11.7ATA控制器設備313
11.7.1_GTF(GetTaskFile)313
11.7.2IDE控制器設備314
11.7.3SATA控制器設備317
11.8GPE塊設備318
11.9模塊設備319
11.10內存設備322
11.10.1地址解碼323
11.10.2內存設備的_OSC定義323
11.11_UPC(USBPortCapabilities)324
目錄XI
11.12USB2.0主控制器和_UPC、_PLD326
11.13設備對象名沖突327
11.13.1_DSM(DeviceSpecificMethod)327
11.14PC/ATRTC/CMOS設備327
11.14.1PC/AT兼容RTC/CMOS設備(PNP0B00)327
11.14.2IntelPIIX4兼容RTC/CMOS設備(PNP0B01)328
11.14.3DallasSemiconductor兼容RTC/CMOS設備(PNP0B02)329
11.15I/OAPIC設備329
第12章電源和電表設備
12.1電池管理330
12.1.1電池通訊331
12.1.2電池容量331
12.1.3電池容量規格331
12.1.4低電量容量級別332
12.1.5電池校準333
12.2智能電池子系統334
12.2.1ACPI智能電池狀態改變通知要求335
12.2.2智能電池對象336
12.2.3_SBS(SmartBatterySubsystem)336
12.3控制型電池338
12.3.1電池事件339
12.3.2電池控制方法339
12.3.3ASL代碼示例347
12.4AC適配器和電源對象348
12.4.1_PSR(PowerSource)349
12.4.2_PCL(PowerConsumeList)349
12.4.3_PIF(PowerSourceInformation)350
12.4.4_PRL(PowerSourceRedundancyList)350
12.5電表350
12.5.1_PMC(PowerMeterCapabilities)351
12.5.2_PTP(PowerTripPoints)352
12.5.3_PMM(PowerMeterMeasurement)352
12.5.4_PAI(PowerAveragingInterval)352
12.5.5_GAI(GetAveragingInterval)353
12.5.6_SHL(SetHardwareLimit)353
XII計算機系統核心開發:高級配置與電源管理最佳實踐
12.5.7_GHL(GetHardwareLimit)353
12.5.8_PMD(PowerMeteredDevices)353
12.6電源和電表名字空間示例353
第13章散熱管理
13.1散熱控制355
13.1.1主動和被動冷卻模型356
13.1.2性能和節省電量356
13.1.3噪聲357
13.1.4多個散熱區357
13.1.5主動、被動和臨界策略357
13.1.6動態地改變冷卻溫度觸發點358
13.1.7識別溫度改變359
13.1.8主動冷卻360
13.1.9被動冷卻361
13.1.10臨界關機362
13.2冷卻首選項362
13.2.1評估散熱設備列表364
13.2.2評估設備散熱關系信息364
13.2.3風扇設備通知364
13.3風扇設備364
13.3.1_FIF(FanInformation)365
13.3.2_FPS(FanPerformanceStates)366
13.3.3_FSL(FanSetLevel)366
13.3.4_FST(FanStatus)366
13.4散熱對象367
13.4.1_ACx(ActiveCooling)367
13.4.2_ALx(ActiveList)368
13.4.3_ART(ActiveCoolingRelationshipTable)368
13.4.4_CRT(CriticalTemperature)370
13.4.5_DTI(DeviceTemperatureIndication)370
13.4.6_HOT(HotTemperature)370
13.4.7_NTT(NotificationTemperatureThreshold)370
13.4.8_PSL(PassiveList)370
13.4.9_PSV(Passive)371
13.4.10_RTV(RelativeTemperatureValues)371
目錄XIII
13.4.11_SCP(SetCoolingPolicy)371
13.4.12_TC1(ThermalConstant1)374
13.4.13_TC2(ThermalConstant2)374
13.4.14_TMP(Temperature)374
13.4.15_TPT(TripPointTemperature)375
13.4.16_TRT(ThermalRelationshipTable)375
13.4.17_TSP(ThermalSamplingPeriod)375
13.4.18_TST(TemperatureSensorThreshold)375
13.4.19_TZD(ThermalZoneDevices)376
13.4.20_TZM(ThermalZoneMember)376
13.4.21_TZP(ThermalZonePolling)376
13.5OS設備驅動散熱接口376
13.6散熱區接口要求377
13.7散熱區示例377
13.7.1基礎散熱區378
13.7.2多速率風扇379
13.7.3具有多個設備的散熱區381
第14章系統地址映射接口
14.1INT15h,E820h——查詢系統地址映射387
14.2E820假設和限制389
14.3UEFI啟動服務功能389
14.4UEFI假設和限制390
14.5地址映射示例390
14.6操作系統調用示例391
第15章喚醒和睡眠
15.1睡眠狀態393
15.1.1S1睡眠狀態395
15.1.2S2睡眠狀態396
15.1.3S3睡眠狀態396
15.1.4S4睡眠狀態397
15.1.5S5軟關機狀態398
15.1.6從工作狀態轉換到睡眠狀態398
15.1.7從工作狀態轉換到軟關機狀態399
XIV計算機系統核心開發:高級配置與電源管理最佳實踐
15.2刷新緩存399
15.3初始化400
15.3.1將系統置于ACPI模式401
15.3.2BIOS對內存進行初始化402
15.3.3加載OS404
15.3.4退出ACPI模式405
第16章NUMA架構平臺
16.1NUMA節點406
16.2系統位置407
16.2.1SRAT定義407
16.2.2系統資源關聯更新407
16.3系統位置距離信息407
16.3.1在線插拔408
16.3.2對已存在位置的影響408
第17章ACPI平臺錯誤接口(APEI)
17.1硬件錯誤和錯誤源409
17.2OSPM和系統固件之間的關系410
17.3錯誤源發現410
17.3.1啟動錯誤源410
17.3.2ACPI錯誤源411
17.4固件首先處理錯誤420
17.5錯誤序列化421
17.5.1序列化動作表421
17.5.2操作425
17.6錯誤注入429
17.6.1EINJ429
17.6.2注入指令項430
17.6.3注入指令431
17.6.4觸發動作表433
17.6.5錯誤注入操作433
第18章ACPI功能實現
18.1架構概要436
18.1.1ACPICA系統概要436
18.1.2ACPICA子系統架構438
18.1.3OS服務層架構440
18.2設計細節441
18.2.1ACPI名字空間基本原理441
18.2.2執行模型443
18.2.3原理和理論449
18.3實現細節450
18.3.1主機OS初始化順序要求450
18.3.2ACPICA初始化順序要求451
18.3.3多線程支持456
18.3.4通用目的事件支持461
18.3.5混雜ACPICA行為463
18.4ACPICA部署向導464
18.4.1使用ACPICA子系統接口464
18.4.2實現OS服務層469__