硬件结构

2021-10-11  本文已影响0人  今年五年级

冯诺依曼模型
1945年,冯诺依曼和其他计算机科学家提出了计算机具体实现的报告,遵循了图灵机的设计,提出用 电子元件 构造计算机,并约定用二进制进行计算和存储,将计算机基本结构分为5部分:中央处理器,内存,输入设备,输出设备,总线

内存

程序和数据都存储在内存,内存的区域是线性的类似于数组(所以内存的读写任何1个数据的速度都是一样的),内存中的数据存储单位是bit,即0或1,最小的存储单位为字节byte,1byte=8bit
内存地址自增且从0开始编号,最大地址为内存总字节数-1,

CPU

平常所说的32位cpu,64位cpu称之为cpu的位宽,32 位和 64 位 CPU 最主要区别在于一次能计算多少字节数据

于是为了能一次计算大的数值,cpu需要支持多个字节一起计算,cpu位宽越大,可计算数值越大,比如32位cpu最大能一次计算的整数为2^32-1

cpu内部还有一些组件,常见的有寄存器控制单元逻辑运算单元等。其中,控制单元负责控制 CPU工作,逻辑运算单元负责计算,而寄存器可以分为多种类,每种寄存器的功能不相同

CPU 中的寄存器主要作用是存储计算时的数据
问题:为什么有了内存还需要寄存器?
原因很简单,因为内存离 CPU 太远了,而寄存器就在 CPU 里面,还紧挨着控制单元和逻辑运算单元,自然计算时速度会很快。常见寄存器如下:

总线

总线用于CPU和存储单元(如内存)以及其他设备之间通信,可以参照上面的图片,分为3种

输入、输出设备

输入设备向计算机输入数据,计算机运算完毕后向输出设备输出数据。输入设备是键盘的话,按下按键的时候是需要和cpu进行交互的,此时用到控制总线

总线位宽与cpu位宽的关系
数据是通过操作电压的方式在总线上进行传输,低电压表示0,高电压表示1,比如十进制的7表示成2进制就是111
如果只有一条总线,那么传输111,这个数据需要传输3次,因为每次只能传递1bit的数据,这样一位一位传输的方式,称为串行,下一个bit必须等待上一个bit传输完成才能进行传输

要想传输的数据多,那么最简单的办法就是增加线路,避免低效率的串行传输,线路的位宽最好能访问所有的内存地址,如果地址总线只有1条,那么只能传送0或者1,那么cpu一次只能访问0位置内存地址和1位置内存地址,2个地址。如果有2条,那么能同时传送2bit的数据,能寻址22=4个内存地址(00,01,10,11),如果cpu要寻址4G内存地址,那么需要32根地址总线,因为232=4G

对于 64 位 CPU 就可以⼀次性算出加和两个 64 位数字的结果,因为 64 位 CPU 可以1次读出64 位的数字,并且 64 位 CPU 内部的逻辑运算单元也支持 64 位数字的计算

但不代表 64 位 CPU 性能比32 位 CPU高很多,很少需要算超过 32 位的数字,所以如果计算的数额不超过 32 位数字的情况下,32 位和 64 位 CPU 之间没什么区别的,只有当计算超过 32 位数字的情况下,64 位的优势才能体现出来

32位cpu最大只能操作4G内存,即便安装了8G内存,因为寻址不到,也没用。而64位cpu最大寻址空间为2^64

cpu的指令周期
即cpu执行程序的步骤

  1. cpu读取程序计数器获取要执行的指令地址,然后由控制单元操作地址总线找到指令的内存地址位置,然后通知内存设备准备数据,数据准备好后通过数据总线将指令数据传给cpu,cpu收到指令数据后,存储到指令寄存器
  2. cpu分析指令寄存器中的指令,确定指令的类型和参数,如果为计算类型指令,交由逻辑运算单元处理,如果为存储指令交由控制单元处理
  3. cpu执行完指令后,程序计数器值自增,指向下一条指令
    简单总结就是,一个程序执行的时候,CPU 会根据程序计数器里的内存地址,从内存中把需要执行的指令读取到指令寄存器中执行,然后根据指令长度自增,开始顺序读取下一条指令

CPU 从程序计数器读取指令、到执行、再到一条指令,这个过程会不断循环,直到程序执行结束,这个不断循环的过程被称为 CPU 的指令周期

a=1+2执行过程

  1. 首先将程序代码翻译成汇编语言程序-> 编译成汇编代码
  2. 使用汇编器翻译成机器码,机器码由0,1组成,一条条机器码,就是一条条计算机指令,这才是cpu能够认识的东西

内存中存放指令的地方叫正文段,存放数据的地方叫数据段
程序编译过程中,编译器通过分析代码,发现 1 和 2 是数据,于是程序运行时,内存会有个专门的区域来存放这些数据,这个区域就是「数据段」

指令和数据在内存中的存放
指令
指令的内容是一串二进制数字的机器码,每条指令都有对应的机器码,CPU 通过解析机器码来知道指令的内容。不同的 CPU 有不同的指令集,也就是对应着不同的汇编语言和不同的机器码

指令分为5大类

指令的执行速度
CPU 的硬件参数都会有 GHz 这个参数,比如1个 1 GHz 的 CPU,指的是时钟频率是 1 G,代表着 1 秒会产生1G 次数的脉冲信号,每一次脉冲信号⾼低电平的转换就是一个周期,称为时钟周期
周期之间的关系

对于一个指令周期来说,我们取出一条指令,然后执行它,至少需要两个 CPU 周期。取出指令至少需要一个 CPU 周期,执行至少也需要一个 CPU 周期,复杂的指令则需要更多的 CPU 周期。而一个CPU周期是若干时钟周期之和

如何让程序跑的更快
程序执行的时候,耗费的 CPU 时间少就说明程序是快的,对于程序的 CPU 执行时间,我们可以拆解成CPU 时钟周期数(CPU Cycles)和时钟周期时间(Clock Cycle Time)的乘积
程序的cpu执行时间=CPU 时钟周期数 x 时钟周期时间

上一篇下一篇

猜你喜欢

热点阅读