关于cpu指的是什么

学人智库 时间:2018-01-13 我要投稿
【www.unjs.com - 学人智库】

关于cpu指的是什么

中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。主要包括运算器(ALU,Arithmetic and Logic Unit)和控制器(CU,Control Unit)两大部件。此外,还包括若干个寄存器和高速缓冲存储器及实现它们之间联系的数据、控制及状态的总线。它与内部存储器和输入/输出设备合称为电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据。计算机的性能在很大程度上由CPU的性能所决定,而CPU的性能主要体现在其运行程序的速度上。

cpu降频问题

cpu做为能耗很高的硬件,最近几年厂商在节能方面做了很多处理,在服务器运行时,基于负载情况可调节成节能模式,节省电能,副作用是cpu的频率会降低,导致应用程序性能降低。

有第三方统计,服务器规模达到万台以上时,最大的成本消耗其实是电能

bios 设置

一般服务器的BIOS设置中会有一项来说明是否开启cpu节能模式

但是我们发现有些服务器即使关闭了cpu节能,还是会有被降频的情况。

操作系统

操作系统也能对cpu频率进行调整,主要有两个工具

X86_ENERGY_PERF_POLICY

x86_energy_perf_policy 是红帽提供设置intel cpu节能模式的工具,默认我们服务器都是normal模式,我们要想获取最高性能要开启性能模式。

x86_energy_perf_policy performance

它是通过msr cpu寄存器来调整cpu频率,基本就是写/dev/cpu/*/msr这个设备

参考 http://www.centosabc.com/archives/844

服务器上我们已经调整了此参数,但是还是有机器出现降频情况。最后发现在centos7中还有一个工具可以调节cpu频率,就是cpupower。

cpupower

cpupower是centos7上(实际上是在3.04内核后)引入的一个工具,用于在用户态微调cpu频率。

x86_energy_perf_policy 可理解为“硬调节”,cpupower属于“微调”

调整cpu频率无非就是要在“能耗”和“性能”上取得平衡,基本上调整的策略有以下几种。

而在centos7上有一个kernel-tools的包,提供一些工具来调整和查看cpu的状态

/etc/sysconfig/cpupower

/usr/bin/centrino-decode

/usr/bin/cpupower

/usr/bin/powernow-k8-decode

/usr/bin/tmon

/usr/bin/turbostat

/usr/bin/x86_energy_perf_policy

/usr/lib/systemd/system/cpupower.service

我们默认的策略是这样

cpupower frequency-info --policy

analyzing CPU 0:1200000 3200000 powersave

powersave运行最小频率,当然cpu也会根据使用繁忙程度来升频率,有可能它的算法没有那么智能,导致你要用cpu时候,它还没来得及升上来。 注意这个文件“/usr/lib/systemd/system/cpupower.service”,说明cpupower已经变成一个服务了,再看下这个文件“/etc/sysconfig/cpupower”

# See "cpupower help" and cpupower(1) for more info

CPUPOWER_START_OPTS="frequency-set -g performance"

CPUPOWER_STOP_OPTS="frequency-set -g ondemand

说明只要启动这个服务,默认就调整成performance模式了。

systemctl start cpupower

其它

查看当前cpu策略

cpupower frequency-info --policy

修改策略

cpupower frequency-set -g powersave

实时查看cpu频率

watch -n 1 "cat /proc/cpuinfo | grep MHz"

内核信息查看

#使用的intel驱动

/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver

#intel_pstate驱动详细信息

/sys/devices/system/cpu/intel_pstate/

#各种频率相关

/sys/devices/system/cpu/cpu0/cpufreq/

#查看当前cpu策略

/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

CPU工作的过程

CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码。它把指令分解成一系列的微操作,然后发出各种控制命令,执行微操作系列,从而完成一条指令的执行。指令是计算机规定执行操作的类型和操作数的基本命令。指令是由一个字节或者多个字节组成,其中包括操作码字段、一个或多个有关操作数地址的字段以及一些表征机器状态的状态字以及特征码。有的指令中也直接包含操作数本身。

提取

第一阶段,提取,从存储器或高速缓冲存储器中检索指令(为数值或一系列数值)。由程序计数器(Program Counter)指定存储器的位置。(程序计数器保存供识别程序位置的数值。换言之,程序计数器记录了CPU在程序里的踪迹。)

解码

解码线路

CPU根据存储器提取到的指令来决定其执行行为。在解码阶段,指令被拆解为有意义的片段。根据CPU的指令集架构(ISA)定义将数值解译为指令。一部分的指令数值为运算码(Opcode),其指示要进行哪些运算。其它的数值通常供给指令必要的信息,诸如一个加法(Addition)运算的运算目标。

执行

在提取和解码阶段之后,紧接着进入执行阶段。该阶段中,连接到各种能够进行所需运算的CPU部件。

例如,要求一个加法运算,算术逻辑单元(ALU,Arithmetic Logic Unit)将会连接到一组输入和一组输出。输入提供了要相加的数值,而输出将含有总和的结果。ALU内含电路系统,易于输出端完成简单的普通运算和逻辑运算(比如加法和位元运算)。如果加法运算产生一个对该CPU处理而言过大的结果,在标志暂存器里可能会设置运算溢出(Arithmetic Overflow)标志。

写回

最终阶段,写回,以一定格式将执行阶段的结果简单的写回。运算结果经常被写进CPU内部的暂存器,以供随后指令快速存取。在其它案例中,运算结果可能写进速度较慢,但容量较大且较便宜的主记忆体中。某些类型的指令会操作程序计数器,而不直接产生结果。这些一般称作“跳转”(Jumps),并在程式中带来循环行为、条件性执行(透过条件跳转)和函式。许多指令会改变标志暂存器的状态位元。这些标志可用来影响程式行为,缘由于它们时常显出各种运算结果。例如,以一个“比较”指令判断两个值大小,根据比较结果在标志暂存器上设置一个数值。这个标志可借由随后跳转指令来决定程式动向。在执行指令并写回结果之后,程序计数器值会递增,反复整个过程,下一个指令周期正常的提取下一个顺序指令。

[关于cpu指的是什么]