发现基础很重要,打算重新学一遍基础 这是这个系列的第一篇,之后会持续出,一边学一边出笔记,每天都会学,坚持做到日更
写的文章不为迎合大众,只为学习使用,肯定不够专业,如果有不明白的地方,可以下面留言,互相探讨,虽然我不是大牛,但也会尽量解答。
学习路上,诸君互相勉励
一、冯诺依曼模型
冯诺依曼模型分为5个组成部分:
- 中央处理器(CPU)
- 内存
- 输?设备
- 输出设备
- 总线
CPU可以分为:控制单元,逻辑运算单元和寄存器。 其中,控制单元负责控制 CPU ?作,逻辑运算单元负责计算,?寄存器可以分为多种类,每种寄存器的功能?不尽相同。 寄存器又可以分为:指令寄存器,通用寄存器和程序计数器等
总线可以分为:控制总线,地址总线和数据总线。 地址总线传的是内存中的地址,数据总线传的是对应地址的内存数据,控制总线传的是控制信号,例如:中断。
二、CPU
32 位和 64 位 CPU 最主要区别在于?次能计算多少字节数据: 32位一次4字节。64位一次8字节,称为CPU位宽 CPU 的位宽越高,一次能读取的内存指令越多
CPU Cache 也在CPU里,分为L1,L2和L3。L1体积最小,离CPU最近
为什么CPU里有了内存还需要寄存器?
因很简单,因为内存离 CPU 太远了,?寄存器就在 CPU ?,还紧挨着控制单元和逻辑运算单元,?然计算时速度会很快。 说白了就是就近原则,离得近,办事效率快
二、寄存器
寄存器的分类的?
通?寄存器 ,?来存放需要进?运算的数据,?如需要进?加和运算的两个数据。
程序计数器 ,?来存储 CPU 要执?下?条指令「所在的内存地址」,注意不是存储了下?条要执?的指令,此时指令还在内存中,程序计数器只是存储了下?条指令的地址。
指令寄存器 ,?来存放程序计数器指向的指令,也就是指令本身,指令被执?完成之前,指令都存储在这?。
三、总线
总线的分类?
地址总线 ,?于指定 CPU 将要操作的内存地址;
数据总线 ,?于读写内存的数据;
控制总线 ,?于发送和接收信号,?如中断、设备复位等信号,CPU 收到信号后?然进?响应,这时也需要控制总线;
当 CPU 要读写内存数据的时候,?般需要通过两个总线,?先要通过「地址总线」来指定内存的地址;再通过「数据总线」来传输数据;一来一回
地址总线并不是只有一条,有多少条,线路就有多少位宽,如果地址总线只有 1 条,那?次只能操作 2 个内存地址,如果想要 CPU 操作 4G 的内存,那么就需要 32 条地址总线,因为 2 ^ 32 = 4G 。线路位宽就是32
CPU 的位宽最好不要?于线路位宽,因为 32位 CPU ?次最多只能操作 32 位宽的地址总线和数据总线。所以32 位 CPU 最?只能操作 4GB 内存,就算你装了 8 GB 内存条,也没?。地址总线传的慢,你CPU处理的再快也没用啊,数据跟不上
并不是说CPU的位宽,越高越好。如果计算的数额不超过 32 位数字的情况下,32 位和 64 位 CPU 之间没什么区别的,只有当计算超过 32 位数字的情况下,64 位的优势才能体现出来。
四、执行过程
第?步,CPU 读取「程序计数器」的值,这个值是指令的内存地址,然后 CPU 的「控
制单元」操作「地址总线」指定需要访问的内存地址,接着通知内存设备准备数据,数据
准备好后通过「数据总线」将指令数据传给 CPU,CPU 收到内存传来的数据后,将这个
指令数据存?到「指令寄存器」。
第?步,CPU 分析「指令寄存器」中的指令,确定指令的类型和参数,如果是计算类型
的指令,就把指令交给「逻辑运算单元」运算;如果是存储类型的指令,则交由「控制单
元」执?;
第三步,CPU 执?完指令后,「程序计数器」的值?增,表示指向下?条指令。这个?
增的??,由 CPU 的位宽决定,?如 32 位的 CPU,指令是 4 个字节,需要 4 个内存地
址存放,因此「程序计数器」的值会?增 4;
|