读《计算机体系结构》

读《计算机体系结构》_第1张图片
链接:
https://foxsen.github.io/archbase/
以龙芯处理器为基础介绍的书,研究怎么造计算机。

1,引言

1.1 计算机体系结构的研究内容

冯·诺依曼结构最核心的思想是什么?
实际上,冯·诺依曼结构就是数据和程序都存在存储器中,CPU从内存中取指令和数据进行运算,并且把结果也放在内存中。概括起来就是存储程序和指令驱动执行。

1.2 衡量计算机的指标

性能,价格,功耗

1.2.1 计算机的性能

性能的最本质定义是“完成一个任务所需要的时间”。
体系结构有一个常用的指标叫MIPS(Million Instructions Per Second),即每秒执行多少百万条指令。
现在常用一个性能指标MFLOPS(Million FLoating point Operations Per Second),即每秒做多少百万浮点运算,也有类似的问题。如果数据供不上,运算能力再强也没有用。

1.2.2 计算机的价格

通过一些技术手段让一般用户五年左右就需要换掉电脑。这些手段包括:控制芯片老化寿命,不再更新老版本的操作系统而新操作系统的文档格式不与老的保持兼容,发明新的应用使没有升级的计算机性能不够,等等。

1.2.3 计算机的功耗

电热棒的功率是1000W左右,1MW就是1000个电热棒的功率。
曙光5000高性能计算机在中科院计算所的地下室组装调试时,运行一天电费就是一万多块钱
反相器由一个PMOS管和一个NMOS管组成。其功耗主要可以分为三类:开关功耗、短路功耗和漏电功耗。
开关功耗主要是电容的充放电,比如当输出端从0变到1时,输出端的负载电容从不带电变为带电,有一个充电的过程;当输出端从1变到0时,电容又有一个放电的过程。在充电、放电的过程中就会产生功耗。
短路功耗就是P管和N管短路时产生的功耗。当反相器的输出为1时,P管打开,N管关闭;输出为0时,则N管开,P管闭。但在开、闭的转换过程中,电流的变化并不像理论上那样是一个方波,而是有一定的斜率。在这个变化的过程中会出现N管和P管同时部分打开的情况,这时候就产生了短路功耗。
漏电功耗是指MOS管不能严格关闭时发生漏电产生的功耗。以NMOS管为例,如果栅极有电N管就导通;否则N管就关闭。但在纳米级工艺下,MOS管沟道很窄,即使栅极不加电压,源极和漏极之间也有电流;另外栅极下的绝缘层很薄,只有几个原子的厚度,从栅极到沟道也有漏电流。漏电流大小随温度升高呈指数增加,因此温度是集成电路的第一杀手。

优化芯片功耗一般从两个角度入手——动态功耗优化和静态功耗优化。
升级工艺是降低动态功耗的有效方法,因为工艺升级可以降低电容和电压,从而成倍地降低动态功耗。
可以通过选择低功耗工艺降低芯片静态功耗,集成电路生产厂家一般会提供高性能工艺和低功耗工艺,低功耗工艺速度稍慢一些但漏电功耗成数量级降低。

以可靠性为例,计算机中用的CPU可以分为商用级、工业级、军品级、宇航级等。

1.3 计算机体系结构的发展

20世纪五六十年代

由于工艺技术的限制,计算机都做得很简单,计算机体系结构主要研究怎么做加减乘除,Computer Architecture基本上等于Computer Arithmetic。

20世纪七八十年代的时候,以精简指令集

(Reduced Instruction Set Computer,简称RISC)兴起为标志,指令系统结构(Instruction Set Architecture,简称ISA)成为计算机体系结构的研究重点。笔者上大学的时候系统结构老师告诉我们,计算机体系结构就是指令系统结构,是计算机软硬件之间的界面。

20世纪90年代以后

计算机体系结构要考虑的问题把CPU、存储系统、IO系统和多处理器也包括在内,研究的范围大大地扩展了。

到了21世纪

网络就是计算机,计算机体系结构要覆盖的面更广了:向上突破了软硬件界面,需要考虑软硬件的紧密协同;向下突破了逻辑设计和工艺实现的界面,需要从晶体管的角度考虑结构设计。

在2010年之前

计算机工业的发展主要是工艺驱动为主,应用驱动为辅,都是计算机工艺厂家先挖空心思发明出应用然后让大家去接受。

但在2010年之后

随着计算机基础软硬件的不断成熟,IT产业的主要创新从工艺转向应用。可以预计,未来计算机应用对体系结构的影响将超过工艺技术,成为计算机体系结构发展的首要动力。

1.4 体系结构设计的基本原则

1.4.1 平衡性

一个结构最终体现出的性能受限于其瓶颈部分。

CPU 微结构

一般的CPU微结构研究专注于其中某些重要因素如Cache命中率和转移猜测命中率的改善,但通用CPU微结构中影响性能的因素非常复杂,重排序缓冲项数、发射队列项数、重命名寄存器个数、访存队列项数、失效队列项数、转移指令队列项数与一级Cache失效延迟、二级Cache失效延迟、三级Cache失效延迟等需要平衡设计,有关队列大小应保证一级Cache和二级Cache的失效不会引起流水线的堵塞。

计算机

一台个人计算机使用起来比较卡顿,一般人会觉得主要是由于CPU性能不够,实际上真正引起性能卡顿的可能是内存带宽、硬盘或网络带宽、GPU性能,或者是CPU和GPU之间数据传输不顺,等等。

通用 CPU 设计有一个关于计算性能和访存带宽平衡的经验原则,即峰值浮点运算速度(MFLOPS)和峰值访存带宽(MB/s)为1∶1左右。
SIMD(Single Instruction Multiple Data)一般只有科学计算使用,一般的事务处理不会用SIMD的浮点性能。

结构设计要统筹兼顾,抓住主要因素的同时不要忽略次要因素,否则当主要的瓶颈问题解决以后,原来不是瓶颈的次要因素可能成为瓶颈。

1.4.2 局部性

当结构设计基本平衡以后,优化性能要抓主要矛盾,重点改进最频繁发生事件的执行效率。

访存局部性包括时间局部性和空间局部性两种。

  • 时间局部性指的是一个数据被访问后很有可能多次被访问。
  • 空间局部性指的是一个数据被访问后,它邻近的数据很有可能被访问,例如数组按行访问时相邻的数据连续被访问,按列访问时虽然空间上不连续,但每次加上一个固定的步长,也是一种特殊的空间局部性。
    计算机体系结构使用访存局部性原理来提高性能的地方很多,如高速缓存、TLB、预取都利用了访存局部性。

1.4.3 并行性

第一个层次的并行性是指令级并行。

  • 一种是时间并行,即指令流水线。
  • 另一种是空间并行,即多发射,或者叫超标量。乱序执行(Out-of-Order Execution)
    第二个层次的并行性是数据级并行,主要指单指令流多数据流(SIMD)的向量结构。
    第三个层次的并行性是任务级并行。

1.4.虚拟化

虚拟化是体系结构设计者为用户提供友好界面的一个基本方法,虚拟化的本质就是在不好用的硬件和友好的用户界面之间架一座“桥梁”。
1,虚拟存储技术“虚拟”了内存
2,多线程和虚拟机技术则“虚拟”了CPU
3,流水线和多发射这样的结构得以实现,在维持串行编程模型的情况下提高了速度。
4,Cache, 现代处理器往往80%以上的晶体管都用在Cache上了
5,分布式共享存储系统中的Cache一致性协议

1.5 本章小结

1.6 习题


共 12 章。
讲的内容很多是以前不知道的,但最主要的是此书系统性的讲解介绍。
有讲解,有对比。
以前的计算机结构也有讲,但只是浮于表面,远不如此书。

你可能感兴趣的:(计算机,其他)