计算机科学(学习笔记三)

内容来源:计算机科学

指令和程序

指令:指示计算机要做什么的代码,多条指令共同组成程序。

计算机指令长度

由于早期计算机每个字只有8位,指令只占4位,意味着只能有16个指令,这远远不够。

现代计算机有两种方式解决指令不够用的问题:

最直接的是用更多位来表示指令,如32位或64位。

采用"可变指令长度",令不同的指令的长度不同,尽量节约位数。

该情况下,部分指令后面需要跟数据,如JUMP,称为立即值。

高级CPU设计

现代处理器有专门的电路来处理图形操作,解码压缩视频,加密文档等等,如果使用标准操作来实现需要很多个时钟周期。即便如此,现如今的CPU一秒最少也有上亿次的指令,超高的时钟速度带来一个问题,如何快速地传递数据给CPU,也就是RAM出现了瓶颈。

总线:

RAM是CPU独立之外的组件,所以数据的传递需要通过数据线来实现,我们称之为总线。RAM传输数据需要经过很多到程序,取地址,取数据,配置.....一条普通的指令就需要很多个时钟周期,这会造成CPU空等,就像一台高效的蒸汽机却没有煤能烧。

解决方法:

**1.**给CPU加一点RAM------"缓存"

如果没有缓存,也就是RAM只能一个一个的传输数据给CPU,而有了缓存之后RAM可以成批成批的给CPU传输数据。 缓存也可以临时空间,存一些中间值,适合长或者复杂的运算。

CPU将计算好的数据返回到缓存中,而不是直接存到RAM中,这同样会加快运行速度,但出现了一个问题:缓存和RAM不一致,这种不一致必须记录下来之后要同步。因此缓存里的每块空间都有一个特殊标记,叫做**"脏位"**(dirty bit)。

同步一般发生在当缓存满了而CPU又要缓存的时候,在清理缓存之前,会先检查"脏位",如果是"脏"的就会在加载新缓存前将数据写回RAM中。

2."指令流水线"

也就是并行处理,CPU的每一部分并不冲突,可同时进行所有部分。之前可能三个时钟周期完成一个指令,现在可以一个周期完成一个指令。

同样也一定存在一定的问题,如数据的"依赖性",方法是动态排序有依赖关系的指令。又如"问题跳转"(JUMP),会改变指令的顺序,方法是"推测执行"(分支预测),现代CPU预测准确率超过90%。

3.运行多个指令流(超标量处理器)

刚刚说过的方法都是优化一个指令流的吞吐量,另一个方法是,同时运行多个指令流,一个时钟周期完成多个指令(通过使用多核处理器)

多核处理器的意思就是一个CPU芯片里有多个独立的处理单元,他们可以合作运算,共用缓存。当有更高需求时会使用多个CPU

相关推荐
bohu837 小时前
OpenCV笔记3-图像修复
笔记·opencv·图像修复·亮度增强·图片磨皮
大丈夫立于天地间8 小时前
ISIS基础知识
网络·网络协议·学习·智能路由器·信息与通信
doubt。8 小时前
【BUUCTF】[RCTF2015]EasySQL1
网络·数据库·笔记·mysql·安全·web安全
Chambor_mak9 小时前
stm32单片机个人学习笔记14(USART串口数据包)
stm32·单片机·学习
Zelotz9 小时前
线段树与矩阵
笔记
汇能感知9 小时前
光谱相机在智能冰箱的应用原理与优势
经验分享·笔记·科技
PaLu-LI10 小时前
ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果
c++·人工智能·opencv·学习·ubuntu·计算机视觉
yuanbenshidiaos10 小时前
【大数据】机器学习----------计算机学习理论
大数据·学习·机器学习
汤姆和佩琦10 小时前
2025-1-20-sklearn学习(42) 使用scikit-learn计算 钿车罗帕,相逢处,自有暗尘随马。
人工智能·python·学习·机器学习·scikit-learn·sklearn
Tech智汇站10 小时前
Quick Startup,快捷处理自启程序的工具,加快电脑开机速度!
经验分享·科技·学习·学习方法·改行学it