王道 计算机组成原理课件_计算机组成原理

01 | 冯·诺依曼体系结构

计算机结构

冯·诺依曼体系

概念:将程序指令和数据一起存储的计算机设计概念结构,冯·诺依曼体系结构又被称为存储程序计算机

可编程:计算机本身是由各种门电路组合而成的,然后通过组装出一个固定的电路板,来完成一个特定的计算程序。

例如:老式计算器(计算器的本质是一个不可编程的计算机),电路板规定了只能进行范围内操作,在计算机硬件层面已经写死,如果需要修改功能则需要重新组装电路。

结构组件

  1. 存储器:存储需要运行的数据和指令
  2. 控制器:控制程序指令流转
  3. 运算器:运算操作
  4. 输入设备
  5. 输出设备

Tips:现代计算机本质上来说都是冯诺依曼机

b31395af07baf832b5a1d88cc0b0f2fb.png

冯诺依曼存在瓶颈问题

存储器和CPU是分开的,导致CPU和存储器速率之间的问题无法调和。因为CPU的处理速率比较快,存储器相对慢一些,导致CPU经常空转等待数据传输。

8a1e6031e504db74a787e00888e1e664.png

现代计算机的结构

概念:本质上来说还是冯诺依曼体系的计算机,用来解决上述冯诺依曼存在的瓶颈问题,对CPU的组成部分进行了重构,加入高速缓存。

268e624e387c9997da1ab9b868829f28.png

系统硬件组成

(1)总线

  • 概念:贯穿整个系统的一组电子通道,负责在各个组件之间传递信息字节。
  • 通常总线被设计为传送定长的字节块,也被称为字(Word),字长(即字节数)跟操作系统有关,是一个基本的信息参数,通常的是4个字节或者8个。

(2)I/O设备

  • 概念:输入/输出设备,是系统于外部世界的联系通道。
  • 每个I/O设备都通过一个控制器或适配器与I/O总线相连接。关于控制器和适配器的区别在于其封装方式不同
    • 控制器:主板上的芯片组
    • 适配器:插在主板插槽上的卡

(3)主存储器

  • 概念:指代临时存储设备,下述会解析,用来存放程序和程序处理的数据
  • 从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的地址(数组索引)
  • 我们所编写的Java代码亦或者打开的程序如QQ.exe(平时存储在磁盘中)都必须加载到内存里才能运行。故,内存越大,能加载的东西自然越多。

668357850a40dee8c52271246c8a87a6.png

(4)处理器

  • 概念:中央处理单元CPU,解释执行存储在主存中指令的引擎。主要组件有以下组成:
  1. 运算器:包含:算术逻辑单元(Arithmetic Logic Unit,ALU)和处理器寄存器(Processor Register)的处理器单元(Processing Unit),用来完成各种算术和逻辑运算。主要用来完成各种数据的运算操作。
  2. 控制器:是一个包含指令寄存器(Instruction Register)和程序计数器(Program Counter)的控制器单元(Control Unit/CU),用来控制程序的流程,通常就是不同条件下的分支和跳转。
  3. 存储器:此处主要指代的是高速缓存部分,相比较于之前的从内存读取数据,直接从高速缓存读取,解决了CPU空转等待的问题。
  • 总结:任何一台计算机的任何一个部件都可以归到运算器、控制器、存储器、输入设备和输出设备中,而所有的现代计算机也都是基于这个基础架构来设计开发的。

efc40e2d7ea9b162116bc67a3a3f7263.png

主存和CPU关联:

所有加载到内存中的数据都必须被CPU读取,CPU计算完成之后再把数据写回内存。CPU和内存都是计算机的基本硬件,CPU不能插到内存上,反之亦然,故必须引入中间件作为集成--主板。

主板:主板是一个有着各种各样,有时候多达数十乃至上百个插槽的配件。我们的 CPU 要插在主板上,内存也要插在主板上。主板的芯片组(Chipset)和总线(Bus)解决了 CPU 和内存之间如何通信的问题

  • 数据传输方向:芯片组控制了数据传输的流转,也就是数据从哪里到哪里的问题。
  • 数据传输通道:总线是实际数据传输的高速公路。因此,总线速度(Bus Speed)决定了数据能传输得多快。

92be111ceddcd98420f7a3d664f1c20c.png

高速缓存

局部性原理:程序具有访问局部区域里的数据和代码的趋势,通过让高速缓存中存放可能经常访问的数据,大部分的内存操作都能在快速的高速缓存中完成,更快更高效。

在上述冯诺依曼体系中,指出了其存在的瓶颈问题:导致CPU空转等待,CPU利用效率不高。而在后续的计算机体系结构中引入了高速缓存存储器(cache memory)作为暂时的集结区域,存放存储器近期可能会需要的信息。

对于L1高速缓存的容量可以高达数万字节,访问速度和访问寄存器一样快。但是还是存在容量不够的问题,引入了高速缓存L2,此时容量扩大盗了数十万甚至数百万。

进程访问L2高速缓存的时间比访问L1要长达5倍之多,但是相比访问主存还是快了很多。

存储器层次结构

设计思想:让上一层的存储器作为低一层的存储器的高速缓存。

51786ded8161fb0f896e24a89ff6153d.png

多核CPU高速缓存

超线程概念:

超线程HT(Hyper-Threading)技术是在单个核心处理单元中集成两个逻辑处理单元,也就是一个实体内核(共享的运算单元),两个逻辑内核(有各自独立的处理器状态),在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源。双核4线程也就是这么由来的。

虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每各CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续因此超线程的性能并不等于两颗CPU的性能。

多处理器

多处理器(Multiprocessor)系统由不同芯片上的多个处理器组成。不足在于其高昂的价格,因为它们需要多个芯片,这比单芯片解决方案要昂贵得多。

双核与多核处理器

双核处理器是指单个芯片上有两个CPU,而多核处理器则是指在单个芯片上包含任意多个(如2、4或8)CPU的处理器。多核处理器的挑战在于软件开发部分。系统性能提升的多少直接与通过多线程编程源代码的并行程度有关。2个不同的进程可以分别在不同的核心中同时执行,这大大加快了系统的速度。由于2个核心都在一个芯片上,因此它们之间的通信也要更快,系统也会有更小地延迟。

1419e1f384f6a82682baecfbc7718966.png

参考:多个CPU和多核CPU以及超线程(Hyper-Threading)

缓存一致性问题

参考上图的多核处理器,基于高速缓存的存储交互很好的解决了处理器与内存速度之间的矛盾,但是为计算机系统带来了更高的复杂度:缓存一致性问题。

在多核处理器系统中,每个处理器都有其自己的高速缓存,并且又共享同一主内存,当多个处理器的运算任务都涉及同一块内存区域时,将可能导致割自己的缓存数据不一致。

为了解决一致性问题,需要在各个处理器访问缓存时遵守一些协议,来保证缓存的一致性。

另外:为了使处理器内部的运算单元尽量充分的被利用,处理器可能会对输入的代码进行乱序执行优化(假设两行指令,下一行不依赖于上一行的计算结果)。处理器会在计算之后将乱序的执行结果进行重组,保证该结果与顺序结果时一致的。但是不保证程序中的各个语句计算的先后顺寻与输入代码顺序一致。

具体的可以参考Java内存模型。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值