CA-读书报告-李煦-2021112864


A. 计算机体系结构是一门权衡的科学
计算机体系结构更多地是一门“艺术”而不是“科学”。
计算机如果真的是一门科学,那就是一门权衡的科学。计算机架构师不断发展知识基础,这样就能够来更好的进行权衡;这个过程尤其表现在微处理器的演变过程中。
B. 转化的级别
在问题的解决过程中,需要通过一系列的转换过程来逐步将问题转化到电子(或设备)级别。转换的级别可以分为算法、机械语言、指令集架构(ISA)、微架构和电子数字电路。每个微处理器都由实现硬件结构(微架构)的电路组成,为软件提供一个接口(ISA)。不同的ISA会影响编译器开发的接口质量以及微架构执行的工作方式。在层次结构的每个步骤中,从算法的选择到语言、ISA、微架构和电路的选择都需要在性能和成本之间进行权衡。这些转换的选择都是基于性能和经济之间的权衡。
以下是按照转化的方法来构建的流程图:
1 |
|
从算法的选择到语言、ISA架构、电路的选择,每个层级都存在选择和权衡。通常情况下,但并非总是如此,选择是在更高的性能和更低的成本之间进行。
C. 设计的关键点
设计处理器涉及到做出权衡,所以要考虑微处理器里面最重要的特征。强烈影响设计的有性能、成本、散热和功耗;同时另一个设计点是高可用性,也就是不会产生错误;追求高性能和低功耗。
D. 应用空间
应用程序的空间越来越大,是因为人们对计算机的用途也越来越广泛,也就导致了对微处理器的需求和每个需求所做的权衡就会不断扩展。
计算机和微处理器的使用方面可以在科学应用,基于交易的应用、网络应用、确保交付应用、嵌入式应用、媒体应用、随机软件包等地方发挥作用。
每一个这样的应用都有他们的不同的地方、每一个应用区域都针对微处理器需要不同程度的统筹协调的进行特殊处理,以完成对应的工作。
E. 处理的基础
简单的把一个微处理器的行为定义为执行命令。为了做到这一点,处理器需要做到下面三件事:
- 为能够让每个指令正确运行的处理器核心提供命令
- 为每一条指令提供所需要的数据
- 运行每一个被要求的指令
F. 指令的提供
在过去的取指方案里,一条指令被提取,解码并传送给处理器核心进行处理。现在随着技术的发展,从一次性提取一条指令变成了一次性可以提取四条指令,甚至现在有可能已经能够一次性提取六条或者八条。有三件事情会阻碍我们将指令完全传输给内核并执行:
- 指令Cache的不命中
- 取指暂停(fetch misses)
- 条件预测错误。
G. 数据的提供
为了提供有效的数据,需要满足三个条件:
具备提供无线的所需要的数据的能力
能够以极快的速度提供数据的能力
能够用合理的成本提供数据的能力
现在使用的是存储的层次结构,一小部分数据能够在一到三个时间周期获取,更多的程序能够在十到十六个时钟周期获取,这些都是在芯片内的存储的情况;更多的数据是在芯片以外的方式进行存储,获取数据可能需要到数百个时间周期。
实际上,在作者的那个年代,外部芯片的延迟还很糟糕,作者提出,在几年内在外部内存访问数据可能需要数千个处理器周期。
H. 指令处理
要执行这些指令所需的操作,需要足够数量的功能单元来处理数据,一旦数据可用,即时提供结果到需要它作为源操作数的功能单元。然而,足够的互连并不足够。随着芯片周期时间的减小,将一个部分芯片中的功能单元产生的结果转发到另一个部分芯片中需要这些结果作为源操作数的功能单元的延迟也会变得更糟。
Part 2 处理器发展的推动因素
许多因素帮助了微处理器的发展:
- 购买大众的意愿抢购供应商生产的产品——如果没有市场,任何产品都无法产生。
- 工程师在遇到问题时想出答案的创造力——没有解决方案,就不会有进化。
- ❗进化的动因则是:新的需求、瓶颈和好运。
A. 新的需求
早期处理器限制在每个周期获取一条指令,对指令进行解码并交给核心中的单元进行处理。
对高性能的需求。有一个演变方向是变成了宽问题处理器,能够每个周期提取、解码和发送多个指令到执行核心。有另外一个演变方向,能够在执行核心中包含多个功能单元,一次可以做多个指令的操作。
又出现了新的功耗需求。要求是提供先前相同的计算机性能,但是能够降低先前的功耗。
预测未来的需求是人机交互的需求。
B. 瓶颈
我们已经在上面确定了指令处理的三个组成部分(指令提供、数据提供和执行指令的操作),以及它们各自需要做什么。到目前为止,微处理器的大部分改进都是由于试图消除阻碍这三个组件工作的瓶颈。
解决取指周期太长的问题
解决方法:指令缓存。
由条件分支导致取指令的过程当中不能取到的指令
解决方法:条件分支预测器
C. 好运气
能够使用之前没有优化的剩余空间来做更多的优化,这就是作者所陈述的好运气(Good Furtune)的内容。作者给出的例子是引入了片上浮点加速器和片商多媒体指令扩展功能。
Part 3 演化:从1971到如今(2001)
微处理器已经从Intel 4004的2300个晶体管发展到今天的样子。这种进化是由上面所说的几个因素造成的。最后演变出来的结果就是,奔腾IV与1971年的英特尔4004几乎没有相似之处。下面是这种进化的一些例子。
A. 流水线
早期的微处理器在开始处理下一条指令之前先处理一条指令从取到执行结束。流水线,至少从20世纪60年代开始就出现在大型计算机中,是解决性能瓶颈的一个明显的解决方案。商业上可行的微处理器,如英特尔8086,在20世纪70年代末通过在当前指令执行时预取下一条指令,向流水线迈出了第一步。
B. 芯片内缓存
芯片内缓存的发展过程
- 1984年摩托罗拉推出了一个具有商业可行性的芯片缓存处理器。
- 1986年,摩托罗拉公司推出了首款包含独立片上指令和数据缓存的微处理器。
- 1994年开始出现拥有两级缓存的高性能微处理器。
C. 分支预测
如果需要等待上一条指令产生条件跳转所需要的结果,那么条件跳转的线路的优势就会丢失。硬件(运行时)分支预测器直到20世纪90年代初才出现在微处理器芯片上。一些早期引入运行时分支预测器的微处理器是摩托罗拉的MC88110、Digital的Alpha 21064和英特尔的Pentium。
D. 片上的浮点单元
片上浮点单元早期的微处理器有一个单独的芯片来处理浮点运算。随着晶体管越来越小,芯片越来越大,晶体管数量达到了浮点单元可以与主处理单元放在同一芯片上的程度,利用了“新的”备用容量,节省了不必要的片外通信。摩托罗拉MC88100和英特尔486是20世纪80年代末在主处理器芯片上采用浮点单元的两种早期芯片
E. 额外特殊功能单元
早期的微处理器只有一个或者很少的功能单元。但是人们发现可以利用多个单元来并发执行提高效率。后面先后引入了单独地址的ALU
、更复杂的LOAD/STORE存储单元、辅助图形处理单元等。
F. 乱序执行
最初,指令只能顺序执行,如果有数据正在执行,且下一条指令需要上一条指令产生的结果,就会产生瓶颈。
从20世纪60年代以来,IBM就饶过了这个瓶颈,使用了乱序处理。后来出现了乱序处理和精确异常处理的结合。为了适应乱序执行,就使用了大量的寄存器混叠和保留站。遵循的思想就是,只要指令的资源可用,指令就被允许执行。 但是它们在退出的时候还是严格按照顺序。要做大这一点就要一个在发生异常恢复状态的结构,这在现在大多数微处理器上表现的就是Recorder Buffer。
G. 集群处理器
由于片上的频率增加,导致芯片内一个功能单元产生的数值不能传递到对应的接受单元,所以有了将执行核心划分为多个集群的概念。一个集群的功能单元产生的结果将由同一个集群中的另一个单元来使用。
H. 芯片内的多处理器
问题出现:当指令缓存访问导致缓存缺失的时候,指令供应就会受到影响,在等待缓存确实被满足的过程中会浪费大量的容量。所以出现了备用容量的概念,在20世纪90年代出现之后,它被扩展到允许在交替的周期中从单个指令流里面单独获取。
I. 高频率内核
在计算密集型任务中,等待早期指令生成结果的源操作数的流依赖关系可能是一个重要的瓶颈。一个解决方案——以比微处理器其他部分快得多的频率运行执行核。奔腾IV芯片于2000年推出,其工作频率为1.7 GHz,但ALU的工作频率为3.4 GHz。
Part 4 十亿晶体管芯片的未来
讨论了在未来的十年里(指的是2001到2011),如何利用10亿个晶体管的技术能力来涉及计算机架构。作者介绍了几种不同的设计方案,包括CMP,SMT、单处理器、简单核心和片上系统,并且表达了自己对最高性能处理器的偏好。所以作者接下来进行更加细致的讲解:
A. 新型微处理器
也就是将原来在软件层面实现的算法和程序放在硬件上来实现,真正的成为一个能够解决问题的处理器,就是新型处理器的进化方向。可以采用的形式是:使用可重构的逻辑、在ISA中设置特殊的专用指令,或者是在芯片上提供的集成功能单元。

B. 新型数据通路
新型数据通路的挑战就在于根据新的导线长度限制重新设计数据路径。
C. 软错误的纠错机制
另外一个需要考虑的因素就是那些容易受到时钟频率影响的材质问题,会不经意的让处理器出现错误。所以未来的处理器需要能够纠正这样的错误功能。
D. 异步和同步单元的共存问题
由于部分模块同步和异步的性质,当时钟周期在六千兆赫的时候情况就会更糟。作者的期望是能看到在一定的固定时间内进行异步运行的结构,同时和全局的时钟进行同步。不同的结构将要不同的时间,所以就更需要异步操作来解决独特的倾斜问题。
E. 不同功能的不同周期时间
因为不同的模块功能所需要时间(时钟周期数)不同,所以可以例如通过让不需要快速运行的部件设计为慢速运行来达到优化时钟分配的作用,为了解决不同功能的不同周期时间,作者提出希望未来的处理器能够只能的使用时钟,在需要的提放提高速度,在不需要的地方降低速度。这样就能动态的分配资源,节约资源。
F. 新材料
作者不了解未来的材料怎么出现,但是根据摩尔定律,每隔五年就会有关键材料的提升,作者希望未来的材料能够胜任够优秀处理器的功率要求和散热问题。
G. 扩展使用微程序
作者基于离片带宽和片上带宽的成本和丰富性,提出未来的处理器需要更有效的利用片上的带宽。使用扩展的微程序是实现设一个目标的方式。这些微代码能够进行动态的重新编译,计算一些符合指令,调整缓存的替换策略或者用其他的方式来执行计算从而使得主要指令流速度更快。
H. 可重构逻辑
未来的微处理器可能会采用较高粒度的可重构逻辑结构。这种结构可以根据不同应用的需求动态调整,使得微处理器能够更有效地满足特定应用的要求。
I. 展望综合
作者根据自己对未来处理器的设想提出了如下的清单内容:
- 类似于块结构的ISA或者重播机制
- 利用核心的剩余能力来调整硬件结构的片上微程序
- 动态编译正在执行程序
- 三级缓存
- 用于数值预测的硬件
- 监视和影响芯片能源使用的片上结构
Part 5 总结
自1971年被发明以来,微处理器经历了一段激动人心的旅程。很少有技术能像它那样取得如此巨大的进步。不幸的是,有些人认为这个黄金时代即将结束。但这种唱反调的人以前也有过。他们说MIPS R2000是1986年所有人都需要的微处理器,十年后,他们说英特尔奔腾Pro是所有人都需要的微处理器。该行业继续做得更好,该技术的用户继续使用“更好”。这并不是说事情不会改变,不再需要新的创造力。在下游,我们可能需要一个彻底的范式转变,比如量子计算来拯救我们,但我们现在几乎没有受到限制。当然,我们需要开发更好的CAD工具。当前的CAD工具在验证当今的微处理器方面存在困难,更不用说本文中的建议了。当然,我们需要更广泛地思考微处理器的概念。但最重要的是,摩尔定律仍然存在,而且仍然提供了大量的机会。
- 标题: CA-读书报告-李煦-2021112864
- 作者: Molaters
- 创建于 : 2023-11-24 11:30:49
- 更新于 : 2023-10-12 17:04:02
- 链接: https://molaters.github.io/2023/11/24/计算机体系结构/CA-读书报告-李煦-2021112864/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。