现在我们得到了实现冯诺依曼体系结构的硬件,
现在我们将这些部件通过设计来满足我们的需求,并将这个实现图画出来。
CPU 是一个微型冯诺依曼体系结构的实现。
那么我们说他的内部也是 冯诺依曼体系结构 的实现。
所以他也有如下功能:
CPU:
运算:运算单元
控制:控制单元
存储:存储单元
输入输出:数据,地址,控制总线
计算机组成:(单台)
运算/控制:CPU
存储:缓存,硬盘
输入输出:外设
微服务:(多台计算机)
运算:运算服务器
控制:调度服务器
存储:数据中心
输入输出:网络,网卡,外设
当我们这么看现有的体系,都没有逃出 冯诺依曼的体系结构。
而微服务就是在这样的基础上增加了网络的知识。并没有什么本质上的变化。
当我们知道只要研究明白CPU就可以为所欲为,因为CPU就代表了计算机的整体结构。
那么第一步我们来讨论运算器和控制器:
当我们就需要如何处理接受到的信息。计算机是模拟人脑的计算过程。
我就需要首先搞一套符号来和计算机来进行沟通,让计算机知道我们对他说什么。计算机好进行处理。
那么我们现在拿出我们之前提到过的的逻辑电路,引出0和1,来和计算机约定这样的符号进行沟通。
0-1 的组合就被命名为二进制,0-7的组合就被命名为八进制,0-9 的组合就被命名为十进制,0-9 A-F 的组合就被命名为十六进制。
通过上面的具体的进制,我们即可总结出如下的结论:
逢 2 进1,逢8进1,逢10 进 1, 逢 16 进1。
而通过这样的规律从而进行数据的转化。当我们使用10进制,或者16进制计算时,只需要将它转化的为计算机识别的二进制即可。如何转化不在这里讨论,之后单独讨论。
我们就将使用 01 的组合来表达我们需要告诉计算的信息。
比如说我需要计算 10 + 9 = ? 那么我们就规定 1 使用二进制如何表示呢
将 10 装换为二进制 1010 ,将 9 转化为 二进制 1001,
那么我还需要将 + 号进行二级制表示,那么我就规定 0001101(当前数值仅仅是在举例并不代表 + 这个符号在实现时真的是这个值) 表示 + 这个符号,同理 = 号我们也可以使用 规定的二进制来表示,如果我们沿着这样的思路去做,就会得到一张 二进制和符号的对应关系表,而计算机在处理的时候只需要查询表结构,就知道此符号表示什么,将他转化为二进制即可并交给运算器去运算。
而我们的运算器接受到二进制的数据,使用布尔运算数学知识,将他进行运算。
但是我们这里是解决了运算的问题,但是我们还有问题存在。那就是,我们的数据从何而来,我们计算的结果又存到哪里去呢,我们在处理复杂的表达式时,中间产生的数据放到哪里去呢?
比如说 1 + 2 + 3 根据运算规则,我们首先需要计算的是 1 + 2 = 3 那么输出时用户只需要知道这个整体的表达是6即可,并不想知道经过如何的计算,他只需要结果。那么在计算的时候,我们又需要将这个计算出来的3进行保存,然后我们再将 3 + 3 进行运算,交给用户最终的结果。
这里我们就需要加入一个成员,这个成员就是存储单元,来解决我们这个问题。
那么我们现在就来选择一个我们的存储设备。我们有如下的选择
- 掉电就丢失的存储器
- 掉电不丢失的存储器
1). 掉电就丢失的存储器的特点:RAM(随机存储器)
- 字面意思掉电就丢失
- 速度快
2). 掉电不丢失的存储器的特点:ROM (只读存储器)
- 字面意思掉电不丢失
- 速度慢
因为速度的问题,这个存储单元的选择了随机存储器,这是因为CPU的计算速度太快了,而如果CPU速度过快,而读取和写入的速度过慢,就是变成了木桶效应。
木桶效应:一只水桶能装多少水,取决于那个最短的木板。
所以如果我们选择了ROM,那么就会大大的拖慢计算的处理速度。
但是我们还是需要持久化数据,所以ROM也必不可少。
为了提升整体的计算速度,就得去匹配CPU的速度,RAM也得使用起来。
但是RAM的制作成本比较高,速度越快,价格越贵。相反ROM的制作成本相对低,速度慢,价格低。
根据这样的情况,其结果就变成离CPU越近存储器越快,离CPU越远的存储器越慢。
为了匹配CPU的速度,我们就在CPU的旁边放置了一块缓存,用于缓存主存中的数据,他是缓存了主存中的数据,是寄存在存储器上,所以CPU的存储器我们称之为寄存器。
速度:
寄存器 > 主存 > 硬盘
而根据计算机的发展史,我们知道计算机追求的目标是:更小的单元,更多的逻辑,更高的性能,更低的功耗。