早期计算机通过减少晶体管的切换时间提高运行速度。
过去的除法运算是通过若干个减法周期而实现的,现代ALU已存在真正意义上的除法功能等高级运算指令,因此,ALU甚至CPU的复杂度在不断上升,计算机发展史的复杂度与速度的平衡司空见惯。
CPU与RAM信息交互速度不一致
超高的时钟速度赋予了CPU更快的数据处理速度,但计算机所有操作的数据都源于RAM,CPU与RAM之间的数据交互速度小于cpu的数据处理速度,延迟的产生会造成一定问题。
交互桥梁 总线 解决延迟(两种方法)
1.“缓存”:
CACHE 缓存数据按批次传递到缓存中,CPU从缓存读取或写入数据。
CACHE HIT 缓存命中:CPU想要的数据已经存在缓存中。
CACHE MISS 缓存未命中:CPU想要的数据未存在缓存中。
DIRTY BIT 脏位:缓存会在RAM结构的基础上在每一个地址处设立一个特殊标志,即脏位。CPU改写数据只在缓存中改写,当改写成功并与RAM对应地址的数据不同,脏位标志则会变“脏”,当缓存和RAM进行同步数据时(清理缓存腾出的空间),会先检查脏位,如果是“脏”的,在加载新内容之前,会把数据写回RAM。
2.“指令流水线”:
原始的CPU工作流程都是一个一个周期完成,也就是非并行的工作模式。
原始CPU工作流程现代的CPU则采用并行处理指令的模式,增加了一个时钟周期完成的任务数目。
现代CPU工作流程 “指令流水线”存在的问题
1.假如B指令的执行需要的数据,必须是上一步指令A执行完后产生的数据,则此时的CPU不能采用“指令流水线的”工作模式。因此流水线处理器的使用前提是先弄清数据的依赖性,在必要时刻停止该工作模式。
乱序执行:针对这种问题,高端CPU会更进一步动态排序有依赖关系的指令,最小化流水线的停工时间。
2.条件跳转:跳转指令会改变程序的执行流。简单的流水线处理器,看到JUMP指令会先停一会,等待条件值确定下来,再判断是否跳转,继续流水线的模式。同样,这也会产生延迟,为了消灭延迟,高级cpu采用推测执行。
推测执行:CPU自行预测JUMP条件值的结果,并预先其结果对应的后续指令放入流水线,当JUMP的真实结果出来后,与CPU的预测值进行核对,如果猜对了,则马上执行已经塞满正确指令的流水线;如果猜错了,就要清空流水线。
分支预测:为了尽可能减少清空流水线的次数,提高CPU的预测正确率,CPU厂商开发的一种复杂的方法。(现代CPU的正确率超过90%)
多线程处理器
多线程其实就是单核多线程并行工作。
多线程并行工作模式多核处理器
之前提及到的都是基于一个指令流,多核其实就是在一个CPU芯片里,有多个独立处理单元,基于多个指令流的工作模式。
四核处理器神威神威·太湖之光超级计算机
神威·太湖之光
世界最快的超级计算机,含40960个CPU,每个CPU有256个核心,总共超过1千万个核心,每个核心的频率是1.45GHz,每秒可以执行9.3亿亿次浮点数运算。
网友评论