CPU架构

一、CPU组成

CPU内部由ALU(算术逻辑单元)、CU(控制器)、寄存器(PC、IR、PSW、DR、通用寄存器等)、中断系统组成,外部通过总线与控制总线、数据总线、地址总线进行相连,对数据和程序进行相关的操作

CPU的功能:
(1)指令控制:按照顺序进行取指操作,由控制器CU完成取指和分析指令的操作。
(2)操作控制:能对指令进行译码、寄存、执行的有关操作。
(3)时间控制:对各种操作进行的时间实施定时。
(4)数据加工:能够进行算术运算和逻辑运算,该功能的实现由ALU寄存器(算术逻辑单元)完成。
(5)处理中断:能够响应输入输出设备发出的中断请求。

一、控制器,又叫控制单元(CU,Control Unit)
控制器的功能:
(1)从指令cache中取出一条指令,并指出下一条指令在指令cache中的位置。
(2)对指令进行译码或测试,并产生相应的操作控制信号,以便于启动规定的动作。例如:一次数据cache的读写操作,一个算术逻辑运算操作,一个输入输出操作。
(3)指挥并控制CPU,数据cache和输入输出设备之间数据流向的方向。

控制器内部的组成部分:

程序计数器(PC):用来存放下一条要执行的指令的地址。
指令寄存器(IR):用来存放当前正在执行的指令。
指令译码器(ID):对指令进行“翻译”,确定指令执行什么操作,以决定操作的性质和方法。
控制电路:根据指令译码器的分析,发出控制信号,完成该指令的所有操作。
详细分析CPU取指的流程:
指令的地址保存在程序计数器(PC)中,取指过程中,不需要使用ALU,要想把指令从内存单元中取出来,先要知道指令的地址,即需要从PC中取出指令地址。PC先把指令地址传输到MAR(存储器地址寄存器),通过MAR把信号送到地址总线,最后送到存储器。这时存储器已经得到系统将要执行的指令地址。
然后由控制单元CU向存储器发出读命令,读出的数据由存储器通过数据总线送到MDR,再由MDR送到==IR(指令寄存器)==中。这是程序计数器PC自动加一,从而确定了下一条指令的地址。

二、运算器,又叫算术逻辑单元(ALU,Arithmetic Logic Unit)


针对每一种算术运算,都必须有一个相对应的基本硬件配置,其核心部件是加法器和寄存器。
算术逻辑单元的功能:
(1)执行所有的算术运算。
(2)执行所有的逻辑运算,并进行逻辑测试。如零值测试或两个数的比较。

三、寄存器


寄存器是用来暂时保存运算和控制过程中的原始数据,中间结果,最终结果以及控制、状态信息的。CPU的寄存器被分为:用户可见寄存器、控制和状态寄存器

用户可见寄存器:
(1)通用寄存器:存放原始数据和运算结果,可以作为某种寻址方式所需的专用寄存器。当算术逻辑单元ALU执行算数或逻辑运算时,通用寄存器为ALU提供一个工作区。现代计算机中,为了减少CPU访问存储器的次数,提高运算速度,往往设置大量的寄存器。通用寄存器一般由CPU直接访问,CPU对寄存器的访问速度远大于访问主存的速度。
(2)数据寄存器:存放操作数、运算结果和运算的中间结果,以减少访问存储器的次数,或者存放从存储器读取的数据以及写入存储器的数据的寄存器。寄存了将要写入到计算机主存储器(例如:RAM)的数据,或由计算机主存储器读取后的数据。它就像缓冲器,持有从内存复制的数据,以准备给处理器使用。
(3)地址寄存器:用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止 。
(4)条件码寄存器:存放条件码(条件码:体现当前指令执行结果的各种状态信息,如有无进位(CF位)、有无溢出(OV位)、结果正负(SF位)、结果是否为零(ZF位)、奇偶标志位(P位)等),可作程序分支的依据。

控制和状态寄存器
(1)控制寄存器:控制寄存器(CR0~CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性。
(2)状态寄存器:
状态寄存器:存放条件码
PSW寄存器:保存由算数指令和逻辑指令运算或测试结果建立的各种条形码;保存中断和系统工作状态等信息。

四、多核与单核,多线程与单线程

1.什么是核?

控制单元是整个CPU的指挥控制中心,包括指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)、时序发生器和程序计数器等部件,对协调整个电脑有序工作极为重要。

运算单元是核心组成部分,其包括执行算术运算和逻辑运算。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。

存储单元包括CPU片内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。

通常,控制单元和运算单元统称为一个核Core,换言之,单核是指CPU中包括一个控制单元和一个运算单元。那么对于对核CUP而言,就是由多个核组织(多个控制单元和多个运算单元),共用存储单元。如下图多核CPU架构图。

多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个执行而已,其实并没有快(反而慢),同一时间只能一个线程在跑,而系统给每个线程切换的的时间片段大概10ms左右,看起来像是同时跑, 但实际上是每个线程跑一点点就换到其它线程继续跑.
单核开多线程的缺点:效率不会有提高的,切换线程反倒会增加开销。一般没有必要的话,尤其在单核CPU的时候,不推荐使用多线程单核CPU的时候,不推荐使用多线程。

单核使用CPU的情况:因为IO操作不占用CPU,I/O操作又有磁盘IO,网络IO,占用CPU真正的是计算。

eg:CPU 对磁盘的文件进行操作。

从上图我们就可以发现CPU在将指令告诉DMA的时候就处于空闲状态了。

如果磁盘IO读取的数据较大,则会长时间停留在第三步中。

那么CPU空闲下来的时间,为啥我们不好好利用起来呢?

因此就出现了多线程,当一个任务被执行到第三步 磁盘将内容加载到内存中的时候且执行时间巨长,CPU则空闲的,那么我们就切换线程,让它执行其他的任务,整体就提高的任务完成的效率。

1.并发性:多线程允许应用程序同时执行多个任务。即使在单核 CPU 上,操作系统可以使用时间分片来切换不同线程的执行,从而实现并发性。这对于某些任务并行性不高,但需要同时处理多个任务的情况仍然有用。
2.10密集型任务:在进行大量10操作(如文件读写、网络请求、数据库查询)时,多线程可以提高应用程序的效率。当一个线程在等待10操作完成时,CPU可以切换到另一个线程,以充分利用CPU时间。
3.异步编程:多线程可以用于异步编程,以提高应用程序的响应性。例如,在图形用户界面(GUI)应用程序中,一个线程可以负责用户界面的渲染,而另一个线程可以处理用户输入或后台任务。
4.任务分解:多线程可以用于将大型任务分解成更小的子任务,以便并行执行这些子任务。这可以提高某些计算密集型任务的性能。
5.多核 CPU 迁移:如果应用程序已经使用多线程,将来可以更容易地迁移到多核 CPU 环境中。这样,即使只有一个核心可用,应用程序也能够更好地利用多核CPU的性能。
虽然在单核 CPU 上无法实现真正的并行计算,但多线程仍然可以提供一定程度的并发性和任务切换,从而改善应用程序的性能和响应性。
多个cpu的话就可以在多个cpu中同时执行。

线程必然不是越多越好,线程切换也是要开销的,当你增加一个线程的时候,增加的额外开销要小于该线程能够消除的阻塞时间,这才叫物有所值。

什么时候该使用多线程呢?这要分四种情况讨论:

a.多核CPU——计算密集型任务。此时要尽量使用多线程,可以提高任务执行效率,例如加密解密,数据压缩解压缩(视频、音频、普通数据),否则只能使一个核心满载,而其他核心闲置。

b.单核CPU——计算密集型任务。此时的任务已经把CPU资源100%消耗了,就没必要也不可能使用多线程来提高计算效率了;相反,如果要做人机交互,最好还是要用多线程,避免用户没法对计算机进行操作。

c.单核CPU——IO密集型任务,使用多线程还是为了人机交互方便,

d.多核CPU——IO密集型任务,这就更不用说了,跟单核时候原因一样

五、CPU的多核和应用程序的多线程的关系是怎么样的?

a1: 多核就是系统同时可以运行多个线程,比如双核可以同时执行两个线程。单核儿只能一次执行一个线程。

a2: 试了一个ping 从192.168.0.1 到192.169.0.255的程序
用多线程做的,发现在单核的机器上和多核的机器运行性能有两倍左右的差异。

a3: 多核对于用户,应该说对于程序员来说,是透明的,根本不用管它,当你是单核的编程就可以了,除非使用OpenMP进行编程,就用很多条条框框了,另外你上面的测试是不准确的,网络(主要是远程主机)会因为不同时候而有不同的响应速度,你应该在干净的本机同环境下进行测试.但是,对于多线程多核优于单核还是可以确定的. 总之,我们不用担心程序在单核或多核上会出现并发问题.

a4: 多核指的是CPU有多个核心,多线程是程序有多个线程在同时执行。
多核也要用多线程才能发挥优势。
同样,多线程要在多核上才能真正有优势。
这点来说,对程序员不是透明的。程序员可以控制程序/线程在哪个CPU(核)上运行。用户也可以控制程序在哪几个核上运行。所以多核,多线程对用户和程序员都不是透明的。程序员必须了解这方面的知识。才能让程序最大限度的发挥机器的性能。

六、常见的CPU架构

目前市场上主流的芯片架构有 X86、ARM、RISC-V和MIPS四种:

RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)。

MIPS(发音为“Maps”)

七、CPU指令集

    我们平常所接触到CPU架构也就剩X86和ARM两者,按照最核心的不同可以被分为两大类,即“复杂指令集”与“精简指令集”系统,也就是经常看到的“CISC”与“RISC”。

要了解X86和ARM CPU架构,就得先了解CISC复杂指令集和RISC精简指令集 ,因为它们第一个区别就是X86使用了复杂指令集(CISC),而后者使用精简指令集(RISC)。造成他们使用不同该指令集的原因在于,面向的设备、对象、性能要求是不一样。手机SoC普遍都是采用ARM提供的核心作为基础,依据自身需求改变SoC的核心架构,而ARM正正是RISC精简指令集的代表人物。CPU巨头Intel、AMD所采用的X86架构已经沿用了数十年,是CISC复杂指令集的典型代表。

CISC复杂指令系统就是为了增强原有指令的功能,设置更为复杂的新指令实现部分大量重复的软件功能的硬件化。由于早期的电脑主频低、运行速度慢,为了提高运算速度,不得已将更多的复杂指令加入到指令系统中来提高电脑的处理效率,慢慢形成以桌面电脑为首的复杂指令系统计算机。其指令集也是在不断更新增加当中,如Intel为X299平台上的处理器增加了AVX 512指令集,目的就是为了提高某一方面的性能。

虽然CISC可以实现高性能CPU设计,但是设计起来就相当麻烦了,要保持庞大硬件设计正确是一件不容易的事情,还要确保性能有所提升,不能开倒车,因此桌面CPU研发时间也慢慢地变长。这时候,以ARM为首的一些RISC精简指令系统计算机开始崭露头角了。

RISC可以说是从CISC中取其精华去其糟粕,简化指令功能,让指令的平均执行周期减少,达到提升计算机工作主频的目的,同时引入大量通用寄存器减少不必要的读写过程,提高子程序执行速度,这样一来程序运行时间缩短并且减少了寻址,提高了编译效率,最终达到高性能目的。

七、CPU架构之大小核

       从前的X86传统CPU,如果是四核或者是双核,内部的四个、两个个核心都是一模一样的,这样的话,由于一旦软件只能调度一个核心,处于高频工作,但由于架构限制,其余核心也要保持同样的高频率和高电压状态,这样就浪费了大量的能量在做无用功。后来就发展出了异步多核,允许不同核心工作在不同频率上,以此换来更低功耗。

由于移动设备更加在意功耗,所以ARM采用了更加激进的做法,八个核里面允许有不同Cortex-A架构核心,那就是著名的ARM bigLITTLE。这样的大小核设计目的很明确,就是在有限的电池容量中,兼顾性能、续航的需求,因此SoC内部的CPU是采用异构计算,既有高性能大核心,也有低功耗小核心。

链接:大小核详细解释

英特尔从12代酷睿开始,为其处理器引入了全新的“大小核”混合设计架构。

1.大核(Performance Core),也称为P核或大核,通常拥有较高的主频和强大的计算能力,适合处理高性能需求的任务,如运行大型应用程序和高图形要求的游戏等

2.小核(Efficiency Core),也称为E核或小核,则是低功耗、高效率的设计,能够处理低负载和多核工作负载,如日常应用、浏览网页和接听电话等。

  1.什么叫arm架构

  ARM架构过去称作进阶精简指令集机器(AdvancedRISCMachine,更早称作:AcornRISCMachine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。

  在今日,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。ARM处理器可以在很多消费性电子产品上看到,从可携式装置(PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机)到电脑外设(硬盘、桌上型路由器)甚至在导弹的弹载计算机等军用设施中都有他的存在。在此还有一些基于ARM设计的派生产品,重要产品还包括Marvell的XScale架构和德州仪器的OMAP系列。

2.ARM架构图

  下图所示的是ARM构架图。它由32位ALU、若干个32位通用寄存器以及状态寄存器、32&TImes;8位乘法器、32&TImes;32位桶形移位寄存器、指令译码以及控制逻辑、指令流水线和数据/地址寄存器组成。

  1、ALU:它有两个操作数锁存器、加法器、逻辑功能、结果以及零检测逻辑构成。

  2、桶形移位寄存器:ARM采用了32&TImes;32位的桶形移位寄存器,这样可以使在左移/右移n位、环移n位和算术右移n位等都可以一次完成。

  3、高速乘法器:乘法器一般采用“加一移位”的方法来实现乘法。ARM为了提高运算速度,则采用两位乘法的方法,根据乘数的2位来实现“加一移位”运算;ARM高速乘法器采用32&TImes;8位的结构,这样,可以降低集成度(其相应芯片面积不到并行乘法器的1/3)。

  4、浮点部件:浮点部件是作为选件供ARM构架使用。FPA10浮点加速器是作为协处理方式与ARM相连,并通过协处理指令的解释来执行。

  5、控制器:ARM的控制器采用的是硬接线的可编程逻辑阵列PLA。

  6、寄存器

3.x86架构

  目前的PC架构绝大多数都是Intel的X86架构,貌似也是因为INTEL的这个X86架构早就了目前INTEL如日中天的地位。X86架构(The X86 architecture)是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。

1:CPU,大家都不陌生的名词,中央处理器,计算机的核心大脑。

  2: 北桥(North Bridge Chipset):北桥是电脑主板上的一块芯片,位于CPU插座边,起连接作用。

  3:南桥芯片(South Bridge)是主板芯片组的重要组成部分,一般位于主板上离CPU插槽较远的下方,PCI插槽的附近,这种布局是考虑到它所连接的I/O总线较多,离处理器远一点有利于布线。

  4: 内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。

  5:显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。

  6:显示j接口

  7:网卡是工作在链路层的网络组件,是局域网中连接计算机和传输介质的接口,不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等。

  8:声卡的基本功能是把来自话筒、磁带、光盘的原始声音信号加以转换,输出到耳机、扬声器、扩音机、录音机等声响设备,或通过音乐设备数字接口(MIDI)使乐器发出美妙的声音。

  9:SATA(Serial Advanced Technology Attachment,串行高级技术附件)是一种基于行业标准的串行硬件驱动器接口,是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范。

  10:硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。

  11:总线

八、arm架构和x86架构有什么区别

 X86结构的电脑无论如何都比ARM结构的系统在性能方面要快得多、强得多。X86的CPU随便就是1G以上、双核、四核大行其道,通常使用45nm(甚至更高级)制程的工艺进行生产;而ARM方面:CPU通常是几百兆,最近才出现1G左右的CPU,制程通常使用不到65nm制程的工艺,可以说在性能和生产工艺方面ARM根本不是X86结构系统的对手。

  但ARM的优势不在于性能强大而在于效率,ARM采用RISC流水线指令集,在完成综合性工作方面根本就处于劣势,而在一些任务相对固定的应用场合其优势就能发挥得淋漓尽致。

1.扩展能力

X86结构的电脑采用“桥”的方式与扩展设备(如:硬盘、内存等)进行连接,而且x86结构的电脑出现了近30年,其配套扩展的设备种类多、价格也比较便宜,所以x86结构的电脑能很容易进行性能扩展,如增加内存、硬盘等。

  ARM结构的电脑是通过专用的数据接口使CPU与数据存储设备进行连接,所以ARM的存储、内存等性能扩展难以进行(一般在产品设计时已经定好其内存及数据存储的容量),所以采用ARM结构的系统,一般不考虑扩展。基本奉行“够用就好”的原则。

2.操作系统的兼容性

X86系统由微软及Intel构建的Wintel联盟一统天下,垄断了个人电脑操作系统近30年,形成巨大的用户群,也深深固化了众多用户的使用习惯,同时x86系统在硬件和软件开发方面已经形成统一的标准,几乎所有x86硬件平台都可以直接使用微软的视窗系统及现在流行的几乎所有工具软件,所以x86系统在兼容性方面具有无可比拟的优势。

  ARM系统几乎都采用Linux的操作系统,而且几乎所有的硬件系统都要单独构建自己的系统,与其他系统不能兼容,这也导致其应用软件不能方便移植,这一点一直严重制约了ARM系统的发展和应用。GOOGLE开发了开放式的Android系统后,统一了ARM结构电脑的操作系统,使新推出基于ARM结构的电脑系统有了统一的、开放式的、免费的操作系统,为ARM的发展提供了强大的支持和动力。

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值