各位小伙伴想要博客相关资料的话,关注公众号:chuanyeTry即可领取相关资料!
锁存器:利用 AND、OR、NOT 逻辑门,实现存储 1 位数字的器件。
寄存器:1 组并排的锁存器。
矩阵:以矩阵的方式来存放锁存器的组合件,n* n 门锁矩阵可存放 n^2 个锁存器,但同一时间只能写入/读取 1 个数字。(早期为 16*16 矩阵)。
位址:锁存器在矩阵中的行数与列数。eg.12 行 8 列。
多路复用器:一组电线,输入 2 进制的行址&列址,可启用矩阵中某个锁存器。
内存(RAM):随机存取存储器,由一系列矩阵以及电路组成的器件,可根据地址来写入、读取数据。类似于人类的短期记忆,记录当前在做什么事情。
作用:存储 1 位数字。
图示:
锁存器需要同时输入 2 个数字,不太方便。
为了使用更方便,只用 1 根电线控制数据输入,发展了门锁这个器件。另外,用另一根电线来控制整个结构的开关。(和复位作用不同)
作用:并排使用门锁,存储多位数字
图示:
作用:n* n 的矩阵有 n^ 2 个位址,则可以存储 n^2 个数。但 1 个矩阵只可记录 1 位数字,n 个矩阵组合在一起,才可记录 n 位数。如 1 个 8 位数,会按位数分成 8 个数,分别存储在 8 个矩阵的同一个位址中。
8 个矩阵,则可以记录 256 个 8 位数字。
通俗理解:16* 16 的门锁矩阵,可理解为 1 个公寓,1 个公寓 256 个房间。
8 个门锁矩阵并排放,则有了 8 个公寓。
规定每一个公寓同一个编号的房间,都有一样的标记(地址),共同组成 8 位数字。
那么 8 个公寓就能存 (8*256 / 8)个数字。
原因:16*16 的门锁矩阵虽然有 256 个位置,但每次只能存/取其中 1 个位置的数字。因此,要表示 8 位数字,就需要同时调用 8 个门锁矩阵。
图示:
使用方法:在多路复用器中输入位址,x 行 x 列(2 进制),即可点亮 x 行 x 列的锁存器。
举例:
粗略定义:将一堆独立的存储模块和电路看做 1 个单元,组成内存方块,n 个内存方块组成内存模块。在一个电路板上所有的内存方块统称为内存(RAM)。
图示:
第一个 CPU
由于早期计算机每个字只有 8 位,指令只占 4 位,意味着只能有 16 个指令,这远远不够。
现代计算机有两种方式解决指令不够用的问题:
最直接的是用更多位来表示指令,如 32 位或 64 位。
采用“可变指令长度”,令不同的指令的长度不同,尽量节约位数。
– 假设 1 个字为 16 位,如果某指令不需要操作内存,则可以省去寻址的位数。
– 该情况下,部分指令后面需要跟数据,如 JUMP,称为立即值。
早期通过加快晶体管速度,来提升 CPU 速度。但很快该方法到达了极限。
后来给 CPU 设计了专门除法电路+其他电路来做复杂操作:如游戏,视频解码。
为了不让 CPU 空等数据,在 CPU 内部设置了一小块内存,称为缓存,让 RAM 可以一次传输一批数据到 CPU 中。(不加缓存,CPU 没位置放大量数据)
缓存也可以当临时空间,存一些中间值,适合长/复杂的运算。
脏位:储存在缓存中与 RAM 不一致的数据。
空等原因:从 RAM 到 CPU 的数据传输有延迟(要通过总线,RAM 还要时间找地址、取数据、配置、输出数据)。
缓存同步一般发生在 CPU 缓存已满,但 CPU 仍需往缓存内输入数据。此时,被标记为脏位的数据会优先传输回 RAM,腾出位置以防被覆盖,导致计算结果有误。
作用:让取址→解码→执行三个步骤同时进行。并行执行指令,提升CPU性能。
原本需要 3 个时钟周期执行 1 个指令,现在只需要 1 个时钟周期。
设计难点:数据具有依赖性 跳转程序
数据依赖性解决方法:乱序运行、预测分支(高端 CPU)
多核处理器:一个 CPU 芯片中,有多个独立处理单元。但因为它们整合紧密,可以共享一些资源。
在一台计算机中,用无数个 CPU,做怪兽级的复杂运算,如模拟宇宙形成。