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(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)进行通信,如下图所示:
一般来说,一个内存插槽对应一个 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规格。
STD是一种省电的高级应用,全称为“Suspend To Disk””(STD就是休眠至硬盘功能,将当前系统状态保存到硬盘后,硬盘随即停止转动,系统进入低功耗状态当再开机时系统会跳过自检,直接从硬盘恢复原来的系统状态,而不是正常系统的默认状态,从而缩短了开机时间。)这种模式由于硬盘文件格式的兼容性可能会出现问题,刷新BIOS就可以解决问题。
ACPI VS APM
如前面提到的,ACPI取代了APM。这主要归咎于APM将电源管理归于BIOS,OS无从插手,而且其只有电源管理的能力而没有配置的功能(ACPI里的Configuration)。有趣的是APM也是微软和Intel发明的,那是在1992年,他们为了支持那时候才开始火热的IBM兼容机,才加上了电源管理模块。可是计划赶不上变化,才没过几年就不得不提出新的规范。从APM到ACPI的转化使得OS可以全面掌控各个电源模式的转化,并提供了配置功能。
https://www.cnblogs.com/qinlulu/p/13204789.html