BIOS

 

一、BIOS

在计算机体系中,BIOS 有着比操作系统更为底层和基础性的作用,是机器点亮后第一个被激活的系统程序,主要负责检测、访问与调试底层硬件资源,并分配给操作系统,以保障整个机器顺利安全运转。

BIOS(Basic Input Output System),即基础输入输出系统,是刻在主板 ROM 芯片上不可篡改的启动程序,BIOS 负责计算系统自检程序(POST,Power On Self Test)和系统自启动程序,因此是计算机系统启动后的第一道程式。由于不可篡改性,故程序存储在 ROM 芯片中,并且在断电后,依然可以维持原有设置。

BIOS 主要功能是控制计算机启动后的基本程式,包括硬盘驱动(如装机过程中优先选择 DVD 或者 USB 启动盘),键盘设置,软盘驱动,内存和相关设备。

二、BMC

BMC(Baseboard Management Controller),基板管理控制器,是服务器的基本核心功能子系统,负责服务器的硬件状态管理、操作系统管理、健康状态管理、功耗管理等核心功能。

BMC 是独立于服务器系统之外的小型操作系统是一个集成在主板上的芯片,也有产品是通过 PCIE 等形式插在主板上,对外表现形式只是一个标准的 RJ45 网口,拥有独立 IP 的固件系统。服务器集群一般使用 BMC 指令进行大规模无人值守操作,包括服务器的远程管理、监控、安装、重启等。

三、IPMI

IPMI(Intelligent Platform Management Interface),智能型平台管理接口。

IPMI 是一组交互标准管理规范,由 Intel、HP、Dell 和 NEC 公司于1998年9月16日共同提出,主要用于服务器系统集群自治,监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。同时,IPMI 还负责记录各种硬件的信息和日志记录,用于提示用户和后续问题的定位。目前,IPMI 已经为超过 200 多家计算机供应商所支持。

IPMI 是独立于主机系统 CPU、BIOS/UEFI 和 OS 之外,可独立运行的板上部件,其核心部件即为 BMC。或者说,BMC 与其他组件如 BIOS/UEFI、CPU 等交互,都是经由 IPMI 来完成。在 IPMI 协助下,用户可以远程对关闭的服务器进行启动、重装、挂载 ISO 镜像等。、

 四、UEFI

EFI(Extensible Firmware Interface),是可扩展固件接口,由于传统的 BIOS 是基于 16 位处理器开发的汇编程序,在面对 32/64 处理器时,效率低下的短板即暴露出来,因此, Intel 推出的一种计算系统中 BIOS 新的替代升级方案。

UEFI(Unified Extensible Firmware Interface),统一可扩展固件接口,是 EFI 的规范化版本,也是BIOS的进化版。为便于将UEFI BIOS与传统BIOS区分,传统BIOS又被称为Legacy BIOS 。2005年,Intel 将 EFI 交由 UEFI Forum 来推广与发展,EFI 更名 UEFI。UEFI 负责加电自检(POST)、联系操作系统以及提供连接操作系统与硬件的接口。

现有主流 BIOS 固件公司已基本采用 UEFI。

从主要功能上来说,UEFI BIOS 和 Legacy BIOS 都是为了初始化硬件平台并引导操作系统。两者主要差异在于 Legacy BIOS 无统一标准,而 UEFI BIOS 统一定义了固件和操作系统之间的接口标准。二者优劣势表现在:

1、UEFI BIOS 主要以 C 语言编写,易于实现跨架构跨平台支持并共享代码模块,而 Legacy BIOS 通过则是汇编语言编写
2、UEFI BIOS 完整支持新固件安全功能,从最大程度上降低固件被攻击的风险
3、Legacy BIOS 移植性差,重复开发现象严重。整体而言,UEFI BIOS 较 Legacy BIOS 的优势明显

五、NUMA

NUMA的诞生背景

在NUMA出现之前,CPU朝着高频率的方向发展遇到了天花板,转而向着多核心的方向发展。

在一开始,内存控制器还在北桥中,所有CPU对内存的访问都要通过北桥来完成。此时所有CPU访问内存都是“一致的”,如下图所示:

 
UMA

这样的架构称为UMA(Uniform Memory Access),直译为“统一内存访问”,这样的架构对软件层面来说非常容易,总线模型保证所有的内存访问是一致的,即每个处理器核心共享相同的内存地址空间。但随着CPU核心数的增加,这样的架构难免遇到问题,比如对总线的带宽带来挑战、访问同一块内存的冲突问题。为了解决这些问题,有人搞出了NUMA。

NUMA构架细节

NUMA 全称 Non-Uniform Memory Access,译为“非一致性内存访问”。这种构架下,不同的内存器件和CPU核心从属不同的 Node,每个 Node 都有自己的集成内存控制器(IMC,Integrated Memory Controller)。

在 Node 内部,架构类似SMP,使用 IMC Bus 进行不同核心间的通信;不同的 Node 间通过QPI(Quick Path Interconnect)进行通信,如下图所示:

 
NUMA

一般来说,一个内存插槽对应一个 Node。需要注意的一个特点是,QPI的延迟要高于IMC Bus,也就是说CPU访问内存有了远近(remote/local)之别,而且实验分析来看,这个差别非常明显

在Linux中,对于NUMA有以下几个需要注意的地方:

  • 默认情况下,内核不会将内存页面从一个 NUMA Node 迁移到另外一个 NUMA Node;

  • 但是有现成的工具可以实现将冷页面迁移到远程(Remote)的节点:NUMA Balancing;

  • 关于不同 NUMA Node 上内存页面迁移的规则,社区中有依然有不少争论。

 

六、CPU指令集

 所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。

SSE指令集

  由于MMX指令并没有带来3D游戏性能的显著提升,1999年Intel公司在Pentium III CPU产品中推出了数据流单指令序列扩展指令(SSE)。SSE兼容MMX指令,它可以通过SIMD(单指令多数据技术)和单时钟周期并行处理多个浮点来有效地提高浮点运算速度。

SSE2指令集

  在Pentium 4 CPU中,Intel公司开发了新指令集SSE2。这一次新开发的SSE2指令一共144条,包括浮点SIMD指令、整形SIMD指令、SIMD浮点和整形数据之间转换、数据在MMX寄存器中转换等几大部分。

SSE3指令集

  相对于SSE2,SSE3又新增加了13条新指令,此前它们被统称为pni(prescott new instructions)。13条指令中,一条用于视频解码,两条用于线程同步,其余用于复杂的数学运算、浮点到整数转换和SIMD浮点运算。

SSE4指令集

  SSE4又增加了50条新的增加性能的指令,这些指令有助于编译、媒体、字符/文本处理和程序指向加速。

3D Now!扩展指令集

  3D Now!指令集是AMD公司1998年开发的多媒体扩展指令集,共有21条指令。针对MMX指令集没有加强浮点处理能力的弱点,重点提高了AMD公司K6系列CPU对3D图形的处理能力。

X86指令集

  要知道什么是指令集还要从当今的X86架构的CPU说起。X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,IBM1981年推出的世界第一台PC机中的CPU—i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器则另外使用X87指令,以后就将X86指令集和X87指令集统称为X86指令集。

EM64T指令集

  Intel公司的EM64T(Extended Memory 64 Technology)即64位内存扩展技术。该技术为服务器和工作站平台应用提供扩充的内存寻址能力,拥有更多的内存地址空间,可带来更大的应用灵活性,特别有利于提升音频视频编辑、CAD设计等复杂工程软件及游戏软件的应用。

RISC指令集

  RISC指令集是以后高性能CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。目前使用RISC指令集的体系结构主要有ARM、MIPS。

3DNow!+指令集

  在原有的指令集基础上,增加到52条指令,其中包含了部分SSE指令,该指令集主要用于新型的AMD CPU上。

                     

 七、CPU缓存

不管是AMD还是英特尔,CPU缓存都是分等级的,L1是CPU的指令缓存(L1是指令缓存这句话并不严谨,但是通常你可以这么理解),L2和L3是数据缓存,并不是什么AMD的就都可以来装数据。

通常情侣下,CPU配比的缓存也是有依据的,理论上讲提高CPU L2缓存大小是可以显著提升CPU性能的。但是CPU调取数据是通过缓存调取,不是直接由内存调取(此话不严谨,但通常你可以这么理解因为在出现微处理器之前没有真正意义上的缓存结构),当L2缓存里面的数据没有被CPU命中时,如果有L3缓存,CPU会优先从L3里面调取,如果没有,则是从内存调取。L2,L3的数据都来自内存,因为CPU从内存调取的速度比从缓存里调取的速度慢,所以L3能够提高CPU调取数据的效率和速度,L3其实是很重要的。

再有就是,因为现在很多的CPU里都有核心显卡,尤其是英特尔CPU内置的核心显卡也是使用L3缓存。

当然,有人会问,为什么不直接提高L2缓存大小?首先要知道,CPU上的缓存成本是非常大的,而且L3本身的目的就是加快CPU数据的调取,弥补L2,降低成本。

补充一句,正确的处理器缓存工作顺序是调取L1指令,然后从L2提取数据,如果未命中则进入L3,如果无L3,则从内存调取数据。

日常应用中,主要是通过鼠标操作软件按钮进而触发程序事件,这些程序在汇编中就是调用CPU中的一些寄存器附值或转换或逻辑,一些数值是什么类型(整数还是浮点)去调用CPU中的不同单元或者寻址(多数在内存上),所以性能的理解就是CPU-内存,两者决定电脑的日常性能

CPU内核包括了一二级缓存,三级缓存不在内核内,一二级缓存与CPU同频速度快延迟小,三级缓存与总线同频,像早期AMD的HT总线及Intel的QPI总线,后来自2代开始Intel换了环形总线,就目前 主流CPU来说,环形总线的频率比主频差一点点,早期主频低的时候理解为同频就行了,所以这个Intel环形总线频率几乎与CPU同频延迟非常小(甚至与二级缓存差不太多);但AMD的就不行了,不管早期HT总线还是近期的光纤总线它的三缓延迟都相对大点,三级缓存可共享,每个核心也分配的有专属空间,跨区访问延迟就大

缓存主要是缓冲内核与内存,因为内存的延迟更大,所以常用的数据存放在缓存中有利于减少CPU访问延迟提升效率,因为不同架构CPU总线速度不一样,内核架构效率不一样,单纯围着三级缓存的容量大小看意义也不大

八、ACPI

 ACPI,高级配置和电源管理接口(Advanced Configuration and Power Management Interface),1997年由Intel、Microsoft、Toshiba 所共同制定提供操作系统应用程序管理所有电源管理接口。2000年8月推出 ACPI 2.0规格。2004年9月推出 ACPI 3.0规格。2009年6月16日则推出 ACPI 4.0规格。2011年12月推出ACPI5.0规格。

作为标准中最广为认可的部分,电源管理经历了较多的改进。
早先,Advanced Power Management模型(APM)将电源管理几乎完全分配给BIOS控制,这大大的限制了操作系统在控制电能消耗方面的功能。
当前,ACPI的电源管理特性从以前只适用便携式计算机(例如膝上型计算机)到桌上型电脑、工作站和服务器。例如,系统可能会进入极低功率消耗状态。这些就是可利用在多数桌面型电脑上的“睡眠”和“休眠”设置。睡眠和休眠状态可以通过移动鼠标,按键盘按键,从另外一台电脑接收一条信息(如果连接到了一个局域网)或者重大系统错误来唤醒系统。
如果ACPI在BIOS和其他系统硬件中被实现,它就可以由操作系统所调用(触发)。
ACPI可以实现的功能包括:
系统电源管理(System power management)
设备电源管理(Device power management)
处理器电源管理(Processor power management)
设备和处理器性能管理(Device and processor performance management)
配置/即插即用(Configuration/Plug and Play)
系统事件(System Event)
电池管理(Battery management)
温度管理(Thermal management)
嵌入式控制器(Embedded Controller)
SMBus控制器(SMBus Controller)

STD是一种省电的高级应用,全称为“Suspend To Disk””(STD就是休眠至硬盘功能,将当前系统状态保存到硬盘后,硬盘随即停止转动,系统进入低功耗状态当再开机时系统会跳过自检,直接从硬盘恢复原来的系统状态,而不是正常系统的默认状态,从而缩短了开机时间。)这种模式由于硬盘文件格式的兼容性可能会出现问题,刷新BIOS就可以解决问题。

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

ACPI VS APM

如前面提到的,ACPI取代了APM。这主要归咎于APM将电源管理归于BIOS,OS无从插手,而且其只有电源管理的能力而没有配置的功能(ACPI里的Configuration)。有趣的是APM也是微软和Intel发明的,那是在1992年,他们为了支持那时候才开始火热的IBM兼容机,才加上了电源管理模块。可是计划赶不上变化,才没过几年就不得不提出新的规范。从APM到ACPI的转化使得OS可以全面掌控各个电源模式的转化,并提供了配置功能。

NUMA

 https://www.cnblogs.com/qinlulu/p/13204789.html

原文地址:https://www.cnblogs.com/ytdyz/p/13264300.html