zoukankan      html  css  js  c++  java
  • 什么是ACPI,什么是APIC

    ACPI和APIC有什么关系?

    很多人问道了什么ACPI,什么是APIC,他们有没有关系?名字这么相近。下面给出我对其的一些理解,具体的解释可以查看内核文档库的内核参数文件:
    /usr/src/`uname -r`/Documents/kernel-parameters.txt

    ACPI就是Advanced Configuration and Power Interface的缩写,意思是“高级配置与电源接口”。这是英特尔、微软和东芝共同开发的一种电源管理标准。
     ACPI可实现以下功能:   
     1、用户可以使外设在指定时间开关;   
     2、使用笔记本电脑的用户可以指定计算机在低电压的情况下进入低功耗状态,以保证重要的应用程序运行;   
     3、操作系统可以在应用程序对时间要求不高的情况下降低时钟频率;
     4、操作系统可以根据外设和主板的具体需求为它分配能源;
     5、在无人使用计算机时可以使计算机进入休眠状态,但保证一些通信设备打开;
     6、即插即用设备在插入时能够由ACPI来控制。
     不 过,ACPI和其他的电源管理方式一样,要想享受到上面这些功能,必须要有软件和硬件的支持。在软件方面,Windows 98及其后续产品和Windows 2000都对ACPI给予了全面的支持;而Linux的内核目前对此支持得并不是太理想。硬件方面比较麻烦,除了要求主板、显卡和网卡等外设要支持 ACPI外,还需要机箱电源的配合。电源在提供5伏电压给主板的同时,还必须使电流稳定在720毫安以上才可以,这样它才能够实现电脑的“睡眠”和“唤 醒”。
     ACPI共有六种状态,分别是S0到S5,它们代表的含义分别是:
     S0--实际上这就是我们平常的工作状态,所有设备全开,功耗一般会超过80W;
     S1--也称为POS(Power on Suspend),这时除了通过CPU时钟控制器将CPU关闭之外,其他的部件仍然正常工作,这时的功耗一般在30W以下;(其实有些CPU降温软件就是利用这种工作原理)
     S2--这时CPU处于停止运作状态,总线时钟也被关闭,但其余的设备仍然运转;
     S3--这就是我们熟悉的STR(Suspend to RAM),这时的功耗不超过10W;
     S4--也称为STD(Suspend to Disk),这时系统主电源关闭,但是硬盘仍然带电并可以被唤醒;
     S5--这种状态是最干脆的,就是连电源在内的所有设备全部关闭,功耗为0。

     我 们最常用到的是S3状态,即Suspend to RAM(挂起到内存)状态,简称STR。顾名思义,STR就是把系统进入STR前的工作状态数据都存放到内存中去。在STR状态下,电源仍然继续为内存等 最必要的设备供电,以确保数据不丢失,而其他设备均处于关闭状态,系统的耗电量极低。一旦我们按下Power按钮(主机电源开关),系统就被唤醒,马上从 内存中读取数据并恢复到STR之前的工作状态。内存的读写速度极快,因此我们感到进入和离开STR状态所花费的时间不过是几秒钟而已;而S4状态,即 STD(挂起到硬盘)与STR的原理是完全一样的,只不过数据是保存在硬盘中。由于硬盘的读写速度比内存要慢得多,因此用起来也就没有STR那么快了。 STD的优点是只通过软件就能实现,比如Windows 2000就能在不支持STR的硬件上实现STD。
    之前的电源管理是APM(Advanced Power Management),那么ACPI和APM相比有什么区别呢?

    2、ACPI与APM比较
    APM 1.0&1.1:由BIOS执行电源管理;
    APM 1.2:操作系统定义电源管理时间,由BIOS负责执行;
    ACPI:BIOS收集硬件信息,定义电源管理方案;由操作系统负责执行。
    APM是一种软件解决方案,因此是与操作系统有关的, 而ACPI是工业标准,包括了软件和硬件方面的规范。

    APIC (高级可编程中断控制器)对计算机来讲有两个作用,
    一是管理IRQ的分配,可以把传统的16个IRQ扩展到24个(传统的管理方式叫PIC),以适应更多的设备。
    二是管理多CPU。由于Nf2主板并不支持多CPU,所以,APIC关闭直接的影响是减少了可用的IRQ。
    不过,如果板卡不是非常多的话,关闭 APIC对系统是没有什么影响的。
    要实现SMP功能,我们使用的CPU必须具备以下要求:
    CPU 内部必须内置APIC单元。Intel 多处理规范的核心就是高级可编程中断控制器(Advanced Programmable Interrupt Controllers--APICs)的使用。CPU通过彼此发送中断来完成它们之间的通信。通过给中断附加动作(actions),不同的CPU可以 在某种程度上彼此进行控制。每个CPU有自己的APIC(成为那个CPU的本地APIC),并且还有一个I/O APIC来处理由I/O设备引起的中断,这个I/O APIC是安装在主板上的,但每个CPU上的APIC则不可或缺,否则将无法处理多CPU之间的中断协调。
    APIC可能遇到的问题,很多这类问题可以通过BIOS更新来解决。

    下面的是通过更改HAL类型来解决
      CPU实际运行频率与BIOS设定频率不符
      NF2的用户大约有10%的会出现CPU实际运行频率与BIOS设定频率不符的问题。我们称之为“频率不对”。
      这种现象带来的直接后果就是在测试3dmark或跑3D游戏的时候,会感觉不流畅,也称之为“顿”。
       一般在更改BIOS设置后、更新驱动后重启时,用测试软件如Aida32、MBM5等可以看到CPU的运行频率和你在BIOS里设置得不一样,而且差距 很大。这个时候,用super pi测试CPU速度,会比平常花费时间长好几秒,用3dmark跑测试,会比平常低几百分甚至上千分。在3dmark中看到的CPU频率,也与BIOS设 定不符合。
      如果出现这种情况,则属于我们所讨论的“频率不对”的问题。
      不过,不是所有的3D游戏“顿”都是这个原因。判断的方法是:如果你只有个别游戏“顿”,或者用上述软件测试频率正确,就不是此问题。
      如果判断确实属此问题,解决的方法也很简单,经过网友讨论,只要关闭APIC功能即可。(注意,是APIC,不是ACPI)。

    有一些服务器(比如IBM的,HP的),安装LINUX时,会给出内核的错误,导致无法安装,这个时候可以在安装的时候输入
    linux acpi=off noapic
    应该是安装上的。<!---->
     
    (原文转自: http://unixboy.iteye.com/blog/156501)
  • 相关阅读:
    STM32 F4 DAC DMA Waveform Generator
    STM32 F4 General-purpose Timers for Periodic Interrupts
    Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
    Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
    查看SQL Server服务运行帐户和SQL Server的所有注册表项
    Pycharm使用技巧(转载)
    SQL Server 2014内存优化表的使用场景
    Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys.exit()调用 optparse argparse
    Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
    Python第六天 类型转换
  • 原文地址:https://www.cnblogs.com/wanghetao/p/2999164.html
Copyright © 2011-2022 走看看