处理器结构

2018-10-24 14:44:36 浏览数 (1)

处理器硬件结构

现代计算机结构处理过程:

  • 输入设备输入数据,存储器存储输入数据
  • 控制器接收指令控制存储器将数据送入ALU进行计算
  • 控制器接收指令将计算后的结果存入存储器
  • 控制器接收指令将存储器数据输出到输出设备

冯诺依曼结构

所有复杂运算都是通过简单运算组合而成。而CPU中最核心的部分为ALU。

ALU(算数逻辑单元):主要由与门和或门构成,用来进行二进制数据的计算。

处理器模型

ISA:指令集体系架构,也是目前使用的最广的CPU体系架构。主要包括一套指令集以及一些寄存器,而程序员针对这些指令集以及寄存器进行编程,而不需要关心具体的硬件。

在PC上,大部分用的Intel和AMD处理器都是基于x86指令集,而嵌入式设备上的程序大部分使用的AMR指令集。

处理器

  • 指令集体系结构:x86,arm,armv7,mips等
  • 处理器微架构:NetBurst等
  • 处理器物理实现:20nm/40mn的集成电路工艺,电子计算机,量子计算机等

而处理器除了内核外,还有其他很多东西,如I/O,电源,电池,时钟等等。

处理器结构

CPU硬件指标

MIPS:每秒执行指令数,而实际中该值会偏低,因为实际情况中会遇到并行,Cache Miss,通信效率,总线冲突等问题。

功耗:现在设备中CPU与显卡功耗非常大

指令集体系结构

处理器模型: 例如C=A B;语句:

  • 操作数:C,B,A均为操作数,操作数存储在主存中

由于从Memory访问数据很慢,于是CPU在ALU附近加入了寄存器,用来存储计算中产生的中间数据,避免将这些数据存入主存再读取的耗时

  • 操作码(op): 为操作码

处理器模型

对于C=A B可以分为以下指令执行:

代码语言:javascript复制
load R3,#0;// 加载#0地址存储的数据到R3寄存器
load R2,#1;   // 加载#1地址存储的数据到R2寄存器
add R0,R3,R2;// 将R3,R2寄存器的数据相加保存到R0寄存器中
store R0,#2;// 将R0寄存器中的数据保存到#2地址

其中load,add,store为指令,R0,R1,R2,R3为寄存器,#1,#2为主存地址

这种指令的写法就是汇编语言,处理器公司也会对外发布指令集手册,而这手册也是使用汇编语言来描述。

而计算机无法理解loadstore等指令,也不知道具体的寄存器为R1R0,计算机只知道0和1,所以最终编译过后每一条指令均如01011101011001,代表着load R3 ,#0;

最初程序员直接写汇编语言来进行程序开发,直到Fortran的出现,才出现了高级语言,能让程序员从解放出来。

高级语言的转换

指令集的发展

CISC:复杂指令集,提供了很多与高级语言以及特性相关的指令(如复杂的寻址模式,直接对应的指针运算)等,导致指令集非常庞大。而x86的CPU仍然在使用CISC指令集。

RISC:精简指令集,相对于CISC来说减少了许多直接的指令,只保留了常用的简单的指令。如Mips,Arm,Power等CPU使用RISC指令集。

RISC使得CPU不需要浪费大量的晶体管来做复杂而又较少使用的功能,X86的指令集有1000多页,而RISC指令集手册只有200页左右,并且精简指令集的大部分指令都可以在1个cycle执行完,并且使用了定长编码,使得指令译码的过程变得简单,并且CPU的频率得到了大幅度的提升

可是CISC的一条指令对应着多条RISC指令,所以在执行复杂操作的时候,RISC指令集使得CPU与存储器之间的数据交换增多,而存储器的速度远远低于CPU执行速度,比较容易导致性能恶化

PS:芯片的制程工艺(32nm,22nm)决定了芯片内部晶体管的数量,晶体管数量越多,则芯片能完成的任务也就越多

手机上的CPU大部分用的是ARM,无论是高通还是TI,还是三星使用的还是ARM内核。因为ARM在设计之初就将低功耗,低成本的优先级放在了高性能之前。

ARM自己不生产芯片,而是向半导体公司提供指令集与内核授权,让半导体公司生产ARM指令集的芯片。

计算机字长(Word)

16位计算机的字长为16bit。 32位计算机的字长为32bit。 64位计算机的字长为64bit。

字长代表着处理器一次处理数据的长度,主要由运算器和寄存器决定。

32位处理器,每个寄存器都可以存储32位的数据,而加法器可以支持两个32位的数据相加

image.png

0 人点赞