高级CPU设计

1早期提速方法

早期提速方式是减少晶体管的切换时间。这种提速方式最终会遇到瓶颈,所以开发商发明了新技术来提升性能,不但让简单指令运行更快,也让它可以运行更复杂的运算。

2提速方法

2.1 除法

除法的方法是做一串剪发,比如16除4会变成16-4-4-4-4,碰到0或负数才停下,但这种方法要多个时钟周期,很低效,所以现代CPU直接在硬件层面设计了除法,可以直接给ALU除法指令,折让ALU更大更复杂一些

2.2 额外电路

现代处理器有专门电路处理,图形操作,解码压缩视频,加密文档等等,如果用标准操作来实现,要多个时钟周期。
你可能听过某些处理器有MMX,3DNOW,SEE,他们额外电路做更复杂的操作
在这里插入图片描述
现代处理器有上千条指令,也有各种复杂的电路

3RAM问题

超高的时钟速度带来另一个问题,如何快速传递给CPU,就像强大的蒸汽机,但无法快速加煤。RAM就成了瓶颈。
在这里插入图片描述
RAM在cpu之外意味这数据要用先来传递,叫总线。总线只有几厘米粗,电信号速度接近光,但CPU每秒可以处理上亿条指令,很小的延迟也会造成问题。
ram还需要时间找地址,取数据,配置,输出数据
一条从内存存读数据的指令可能要多个时钟周期

4RAM解决方法-缓存

解决延迟的方法就是给cpu加一点ram叫缓存。
在这里插入图片描述
因为处理器里空间不大,所以缓存一般只有KB或MB,而RAM都是GB起步,缓存提高了速度
在这里插入图片描述

虽然花时间久一点,但数据可以存在缓存,这很实用,因为数据常常是一个个按顺序处理
举个例子,算餐厅的当天收入,先取RAM地址100的交易额,ram与其只给1个值,直接给一批值
在这里插入图片描述
把地址100-200都复制到缓存,当处理器要下次交易额时,地址101,缓存会说:我已经有了,现在就给你,不用去RAM读取数据,因为缓存离CPU近,一个时钟周期就能给数据-CPU不用空等,比反复取RAM拿数据快得多、
如果想要的数据已经在缓存中叫缓存命中,如果想要的数据不在缓存中,叫缓存未命中
缓存也可以当临时空间存一些中间值,适合长/复杂的运算。
继续刚才的例子,如果餐厅想把算完的结果存到地址150,就像之前,数据不是直接存到RAM,而是存在缓存,这样不但存起来快一些,如果还要继续算,取值也快一些。

5脏位

这样带来一个问题,缓存和RAM不一致了
这种不一致必须记录下来,之后要同步因此缓存每块空间,有一个特殊标记,叫脏位。
同步一般在当缓存满了而CPU又要缓存时。
在这里插入图片描述
如果是脏的,在加载新内容之前,会把数据写回RAM

6指令流水线

想象在宾馆操作,这样要1h才能洗完
在这里插入图片描述
我们可以用并行处理进一步提高效率

在这里插入图片描述
cpu也可以如此,之前演示了取指-解码-执行,不断重复
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
举个例子,你在读某个数据,而正在执行的指令回该这个数据,因此流水线处理器,要先弄清楚数据依赖性,必要时停止流水线,避免出问题
高端cpu会更近一步,动态排序有依赖关系的指令,这叫乱序执行

7条件跳转

如之前的jump negative 这些指令回改变程序的执行流,简单的流水线处理器,看到JUMP指令会停一会,等待条件值的确定,一旦jump结果除了,处理器就继续流水线,因为空等会造成延迟,所以高端处理器会有一些技巧。
可以把jump想成岔路口 ,高端cpu会预测路线,然后把指令放入流水线,这叫推测执行
当路线正确,流水线已经塞满正确指令,可以马上运行,如果cpu猜错了,就要清空流水线
为了减少清空流水线,厂商设计了猜测那条分支更有可能,叫分支预测。
现代cpu正确率超过90%
如果多加几个相同电路,执行出现频率很高的指令,举个例子cpu有四个,八个甚至更多完全相同的ALU,可以同事执行多个数学运算,目前说的方法,都是优化一个指令流的吞吐量,另一个提升性能的方法就是运行多个指令流,用多核处理器。

8多核处理器

在这里插入图片描述
当多核不够,可以用多个cpu。
高端计算机,如Youtube服务器,2或4个cpu是最常见的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值