CPU的完整英文名称是(中央处理单元),它是计算机的主要设备之一。该功能主要是解释计算机的指令并处理计算机软件中的数据。计算机的编程能力主要是中央处理器的编程。
论冯诺依曼的结构.
冯·诺依曼的架构是计算机设计的概念结构,它结合了程序的指令存储器和数据存储器。冯·诺依曼结构隐含地指导了将存储设备与中央处理器分离的概念。因此,根据这种结构设计的计算机也称为存储程序计算机,这也是大多数计算机设计的主要参考原理。
第一台计算机只包含固定目的程序。一些现代计算机仍然保持这种设计,通常是为了简单或教育。例如,计算器只有一个固定的数学计算程序,它不能用作文字处理软件而不能用于玩游戏。如果要更改此机器的程序,则必须更改行、以更改结构甚至重新设计机器。当然,第一台计算机不像它们设计的那样可编程。当时所谓的“重写程序”可能是指笔和纸设计过程的步骤,然后完成了工程细节,并且结构改变了电路布线或机器的结构。
存储程序计算机的概念已经改变了一切。通过创建一组指令集结构并将所谓的操作转换为一系列程序指令的操作细节,程序可以在程序运行时自动修改程序的操作内容,使机器更加灵活。通过将指令用作特殊类型的静态数据,存储的程序计算机可以在程序的控制下容易地改变其程序并改变其操作内容。
冯·诺依曼结构和存储程序计算机是常用术语。哈佛架构是一种将程序数据与普通数据分开的设计概念,但并未完全打破冯·诺依曼的架构。
CPU的执行原理
无论其外观如何,CPU的主要工作原理是执行存储在称为程序的程序中的一系列指令。在这里,我们讨论了一种设计用于遵循von Neumann流行架构的设备。程序以一系列数字存储在计算机的内存中。几乎所有的冯·诺依曼CPU都分四个阶段运行:提取、解码执行、并重写。
(1)提取从程序的内存中检索指令(数值或一系列值)。程序的存储单元由程序计数器指定,程序计数器包含识别程序当前位置的值。换句话说,程序计数器在当前程序中记录CPU的跟踪。一旦指令恢复,PC就根据指令的长度递增存储单元[iwordlength]。通常必须从相对较慢的内存中查询指令搜索,这会导致CPU等待发送指令。这个问题主要在现代处理器的缓存和分段架构中得到解决。
(2)解码
CPU根据从存储器中提取的指令确定其执行行为。在解码阶段,指令被分成重要部分。根据CPU的指令集架构(ISA)的定义,将值解释为指令[isa]。指令值的一部分是指示必须执行哪些操作的操作代码。其他值通常提供指令所需的信息。
(3)执行
在提取和解码阶段之后,它进入执行阶段。在此阶段,它连接到可以执行所需操作的多个CPU组件。例如,需要加法运算,算术逻辑单元将连接到一组输入和一组输出。输入提供要添加的值,输出将包含总和的结果。 ALU包含用于在输出上执行正常和简单逻辑运算(例如加法和位操作)的电路。如果加法产生的结果太大而CPU无法处理,则可以在标志寄存器中设置溢出标志。
(4)再写一次
在最后阶段,编写并简单地以特定格式写入执行阶段的结果。操作结果通常写入CPU的内部寄存器,以便通过后续指令快速访问。在其他情况下,结果可以写得更慢,作为更大和更便宜的主存储器。请记住,前面的四个阶段与我们的编程非常相关,但编程语言可以简化,阶段2和阶段3被组合并分为:加载,处理和写入。在多线程的编程中,理解这些概念是很重要的,这些概念可以扩展,加载数据,执行它们的位置以及记录结果的位置。指令数据通常从内存加载,但内存访问时间比CPU慢n倍,因此为了加快处理速度,CPU通常会将指令加载到更接近CPU的寄存器中,或L1,L2,L3。缓存用于加速,最终结果写回内存。正是因为CPU执行指令很复杂,所以涉及到许多问题,例如多个子进程一起工作以处理任务以及如何确保程序数据的原子性,顺序和可见性。 。而这正是Java内存模型的意义所在。在其他不同的编程语言中,操作系统中实际上存在抽象的存储器模型来处理不同CPU架构的差异。这需要注意。
多核单核CPU与多核CPU
多个单核CPU:
成本较高,因为每个CPU都需要一定的线路电路支持,这对主板上的设计来说非常不方便。并且当执行多线程任务时,线程通信协作也是一个问题。从属总线传输速度较慢,每个线程在不同的CPU上运行。结果,每个缓存在不同的子进程之间打开,这将浪费资源。同时,如果线程协作,将生成冗余数据,这将增加内存过载。
单核多CPU:
它能够克服几个单核CPU基本上提到的所有缺点。它不需要考虑硬件过载和复杂性问题,但它也可以很好地解决进程间互操作性问题,减少内存过载,因为在多核CPU上运行的多线程程序是一个领域共享内存,数据传输速度比总线快,没有冗余数据。单个多核CPU的问题也很明显。假设两个程序(每个程序都有许多线程和几乎完整的缓存)以共享方式使用CPU。在程序之间切换时,更换命令和光学数据是一个问题。
单个多核CPU已经成为个人计算机的主要配置,并且一些大型CPU在一些大型服务器上也很常见。
超线程的“超线程技术”是使用两个特殊的硬件指令,以两个逻辑核心模拟成超线程两个物理芯片,在单一的处理器和相关的硬件和软件执行的线程级并行计算。借助大幅提高运营效率的支持,使双处理器在单处理器中的性能得以提升。实际上,超线程本质上是一种可以完全“动员”CPU内部非活动处理的内部资源的技术。
每单位时间时,CPU只能处理一个线程,在这种单元中,是否处理每单位时间多于一个的线程,是不可能的,除非有两个中央处理单元,HT技术英特尔是单位处理单个核以集成两个逻辑处理单元,即物理核,两个逻辑核,每单位时间处理两个子过程,模拟双核的操作。
简而言之,超线程模拟单核中的两个逻辑处理单元,可以提高程序执行的同步性能,提高系统CPU资源的利用率。
此时,CPU数量,内核数量和逻辑CPU数量计算如下:
(1)核心总数=物理CPU数量X每个物理CPU核心数量
(2)逻辑CPU的总数=物理CPU的数量X每个物理CPU的核心数量X超链接数量
一些概念解释如下:
1个物理CPU
真实服务器中插槽中的CPU数量
物理CPU的数量,可以在没有重复物理识别的情况下计算
2个逻辑CPU
Linux用户肯定不熟悉/ proc / cpuinfo文件。它用于存储CPU的硬件信息。
信息的内容列出了0-n处理器的规格。必须考虑到,如果你认为n是真实的CPU数,那就是一个很大的错误。
一般来说,我们认为CPU可以拥有多个内核,以及英特尔超线程技术(HT),它可以在逻辑上再次划分CPU内核的数量。
逻辑CPU数量=物理CPU数量x CPU核心此规格值x 2(如果ht兼容并已启用)
备注:Linux中top所见的CPU也是逻辑CPU的数量。
3个CPU核心
可在CPU、处理数据,作为电流I5 760芯片组的量,是一个双核CPU 4线、和i5 CPU 2250是一个四线四个核。通常,每个内核的物理CPU数量必须等于逻辑CPU的数量。如果它们不相等,则服务器CPU支持超线程技术。
(可以移动描述中的信息)
在linux中查看此信息的命令如下:
#显示物理CPU的数量
Cat / proc / cpuinfo | grep"物理标识" |订购| uniq | wc -l
#查看每个物理CPU中的核心数(即核心数)
Cat / proc / cpuinfo | grep"cpu内核" | UNIQ
#查看逻辑CPU的数量。
Cat / proc / cpuinfo | grep"processor" | wc -l
例如,在Mac Pro计算机中,您可以通过选项关于系统,系统报告,查看当前系统的基本配置,如下所示:
型号名称:MacBook Pro
型号标识符:MacBookPro11,4
处理器名称:IntelCore i7
处理器速度:2.2GHz
处理器数量:1
核心总数:4
L2缓存(每个核心):256KB
缓存L3:6MB
内存:16GB
启动ROM版本:187.0.0.0.0
SMC版本(系统):2.29f24
序列号(系统):C02SK27CG8WN
硬件UUID:652D3965-1BF1-5614-AA0D-63DC5B6DD347
例如,以上信息显示当前系统物理上只有一个CPU,但该CPU有四个内核。然后检索CPU逻辑的数量,你会发现,屏幕为8:(打开Mac上的活动监视器,并在底部的中心,然后双击该CPU的负荷,你可以看到)
这是因为每个核具有两个超线程,使8个逻辑CPU = 1号物理CPU *的4个核* 2个超线程,最后,如果我想要写一个密集的线程计算可以指的线程数程序的任务由逻辑CPU的数量决定。当然,如果它是IO中的一项密集型任务,您可以再开一点。
CPU性能参数计算机的性能在很大程度上取决于CPU的性能,CPU的性能主要体现在它运行的速度上。影响运行速度的性能指标包括CPU运行频率、容量缓存、命令系统和逻辑结构等参数。
在大多数情况下,我们主要关心的是CPU的主频率,也称为时钟频率,它是同步电路中时钟的基频。它以兆赫兹的“每秒时钟周期”进行测量。 (MHz)或千兆赫(GHz)用于指示CPU、处理数据的速度。通常,时钟速度越高,CPU处理数据的速度就越快。
在上面的Mac参数中,我们可以看到,在Intel Core i7处理器下,主频为2.2 GHz,目前的高频处理器也在4 GHz以内,主要原因主要是散热,改善了频率当温度超过一定范围时,热量密度迅速增加,这是不经济的并导致散热。