书评 | 《计算机体系结构》读后感
Posted turingbooks
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了书评 | 《计算机体系结构》读后感相关的知识,希望对你有一定的参考价值。
当我完成《一个64位操作系统的设计与实现》的写作时,本以为熟练地控制处理器便是接触到了处理器的真谛,但当我读完《计算机体系结构:量化研究方法》之后,才知道“星辰大海的波澜壮阔”。因为这本书的两位作者 John L. Hennessy 和 David A. Patterson 是计算机体系结构领域的权威,而这本书被尊称为计算机体系结构领域的“圣经”,下文我就将其简称为“体系结构圣经”。
虽然“体系结构圣经”只有7章,可是每一章所涵盖的信息量非常庞大,涉及计算机科学(软件/硬件)、微电子科学、统计学、物理学等诸多领域的知识。我在阅读每一章的过程中都会感叹自己的知识体系存在不少盲区。
要说“体系结构圣经”的“好”,不得不提一下《计算机组成原理》。尽管《计算机组成原理》一书中已经阐述了计算机是由处理器、缓存、内存、总线、外设等硬件组成,而且清楚、准确地描述了各个器件之间的关系、彼此之间如何连接等;但是关于诸如处理器、缓存该如何配比与选型,这本书却没有提供一套成型的理论——这也是长期以来困扰我的问题之一——虽然知道如何配置处理器的各个寄存器,但是却没有一套方法指导我们如何根据应用场景去合理地规划各个功能模块的特性。
老子曰:“有道无术,术尚可求也。有术无道,止于术。”不夸张地说,“体系结构圣经”可谓有道有术,不仅能帮你指明前方的路,也能帮你走好脚下的路!
接下来,我从CPU性能公式切入,举个简单的例子来分享一下我们该如何阅读这本书。
CPU性能计算
个人认为,“体系结构圣经”这本书最硬核的地方在于提供了一套方法,对处理器的微体系结构进行逐部分的量化分析,进而帮助我们分析出处理器各部分的性能瓶颈。这套方法从性能、功耗、成本、可靠性等多个方面来诠释如何量化地分析计算机的性能。下图根据一款CPU的性能分析结果所绘制,图片来自Brendan Gregg(《性能之巅》作者)博客的一篇介绍CPI火焰图性能分析工具的文章。
图片来源:https://www.brendangregg.com/blog/images/2014/cpi-freebsd-kernel.svg
此图绘制的原理是统计程序运行过程中各函数执行的 CPI(clock cycles per instruction,每条指令的时钟周期数),并将它们以火焰的形式描画出来。以下是 CPI 的计算公式:
其中:
CPI:每条指令的时钟周期数——组成与指令集体系结构
程序的 CPU 时钟周期数:执行一个程序所需的时钟周期数——硬件技术与组成
指令数:一个程序所包含的指令数——指令集体系结构和编译器技术
CPI 火焰图是从 CPU 火焰图演变而来,它在 CPU 火焰图的基础上将每个函数的 CPI 大小以红蓝两色填充到每个横条中,红色(指令执行越快颜色越深)代表指令执行(Runing),蓝色(指令执行越慢颜色越深)代表流水线停止(Stalled)。CPU 火焰图是通过监测、采集、统计 CPU 执行的程序的调用栈,并将采样函数和函数的调用栈作为横纵轴绘制的采样效果图。(采样出来的效果图通常与火焰形状相似,故称作火焰图。)
说到流水线的停止,导致停止的因素有很多种,下图是Intel提供的处理器微体系结构示意图,此图自顶向下逐层拆解各主要功能模块的性能瓶颈,这些性能瓶颈问题的分析方法都可以从“体系结构圣经”中找到答案。
现在,我们可以借助性能检测程序(分析工具)直观地判断出函数的性能(基于 CPI 公式),并根据处理器微体系结构(硬件设备)做进一步的性能瓶颈分析。
注:此图源自Intel的《体系结构优化参考手册》
分享案例就结束了,我还想提一点——这本书有不少让人拍案叫绝的“小亮点”。比如,每章都会有一节称为“融会贯通”的内容。顾名思义,它把一章内的知识点全部关联起来,让读者对所有知识点有个连贯和系统的认知,而不是甩出来几个孤零零的概念和冷冰冰的公式,然后留下读者独自在风中凌乱。再比如,各章有专门的“谬论与易犯错误”小节来纠正我们常见的错误观念。关于其他惊喜之处,我这里就不一一展开了,大家可以自行阅读与发现。
一些建议
虽然“体系结构圣经”是一本好书,但它还是有不足的地方,比如说书中一些硬件结构相关的插图,绘制得有些晦涩,要是能再直观一些就更好了。此外,就个人而言,感觉书中的一些数据还不够准确,比如访问Cache的延迟,书中通常给出的数据以纳秒为单位,但是常规CPU DataSheet提供的数据会以Cycle为单位标注Cache的延迟,请详见下图。猜测背后的原因可能是:以纳秒为单位,想必是为了让初学者对Cache的访问延迟有个更直观的理解,毕竟Cycle不是一个明确的时间单位。
注:此图源自Intel的《体系结构优化参考手册》
最后,非常庆幸能有这样一本书将计算机各主要功能模块的性能瓶颈分析方法和性能瓶颈优化方法阐述清楚,希望这本书可以一直更新下去。
详尽、经典、实战
体系结构奠基作品
本书主要讨论促使计算机性能在 20 世纪取得飞速增长的体系结构思想和编译器改进,导致这些剧变的原因,以及 21 世纪体系结构思想、编译器和解释器面临的挑战和富有前景的方法。
书中系统地介绍了计算机系统的设计基础、指令集系统结构、流水线和指令集并行技术、层次化存储系统与存储设备、互连网络以及多处理器系统等重要内容。
另外,本书对近些年火热的云计算、手机客户端技术、人工智能等相关内容也有涉猎。
近距离审视组成和硬件
改变人们学习和研究的方式
十几年前,“计算机体系结构”仅仅指代指令集设计,其他方面的设计就算作“实现”,隐含之意就是,实现方式不太重要……
但本书认为,真正的计算机体系结构是:设计满足目标和功能需求的组成和硬件。其中“组成”包括存储器系统、存储器互连、内部处理器或CPU的设计等。硬件是指计算机的具体实现,包括计算机的详尽逻辑设计和封装技术。
对真实系统进行分析
揭开计算机体系结构的神秘面纱
本书的核心是采用同样的量化方法对真实系统进行分析,这种方法采用的工具包括:程序的经验数据、试验和模拟。
通过强调成本、性能和能耗之间的权衡以及优秀的工程设计,阐述那些为未来技术发展奠定基础的基本原理。上述量化方法对过去的隐式并行计算机是有效的,我们相信它对未来的计算机同样有效。
重要概念没有时效性
但此时第 6 版再及时不过
体系结构利用摩尔定律和登纳德缩放比例定律,构建规模更大、并行程度更高的系统。
而摩尔定律近来因为物理限制和经济因素的共同影响而放缓,登纳德缩放比例定律于 10 年前终结,这对计算机体系结构的影响,与由单核到多核的转变一样深远。
本书第 6 版全面更新,给出了最新的技术发展、成本、示例和参考资料,同时为了跟上开源体系结构的最新发展,书中使用的指令集体系结构更新为RISC-V。
新增专用体系结构
预言体系结构的“重生”
人们早就知道,与通用处理器实现方案相比,定制的领域专用体系结构可以拥有更高的性能、更低的功耗,并且需要更少的硅面积。
但在过去,通用处理器的单线程性能每年提升 40%,而与采用最先进的标准微处理器相比,开发定制体系结构显然需要更多的时间才能上市,从而使定制体系结构的优势丧失殆尽。
而现在,单核处理器的性能提升速度已经非常缓慢,这也就是说,定制体系结构的优势在很长一段时间里都不会因通用处理器而变得过时,甚至永远不会过时。本书用一整章来介绍几种领域的专用体系结构,并提供了实现示例。
久负盛名的权威著作全面升级
传承经典、更新更全
相关阅读
简介
本书讲述了一个64位多核操作系统的自制过程。此操作系统自制过程是先从虚拟平台构筑起一个基础框架,随后再将基础框架移植到物理平台中进行升级、完善与优化。为了凸显64位多核操作系统的特点,物理平台选用搭载着Intel Core-i7处理器的笔记本电脑。与此同时,本书还将Linux内核的源码精髓、诸多官方白皮书以及多款常用协议浓缩于其中,可使读者在读完本书后能够学以致用,进而达到理论联系实际的目的。全书共分为16章。第1~2章讲述了操作系统的基础概念和开发操作系统需要掌握的知识;第3~5章在虚拟平台下快速构建起一个操作系统模型;第6~16章将在物理平台下对操作系统模型做进一步升级、优化和完善。本书既适合在校学习理论知识的初学者,又适合在职工作的软件工程师或有一定基础的业余爱好者。
本书特色
1.基于Intel Core i7处理器的64位多核操作系统 2.引入诸多Linux内核的设计精髓 3.既可在Bochs虚拟机中执行,又可通过U盘引导运行于笔记本电脑
作者介绍
田宇,Linux内核爱好者,曾在多家大中型软件公司从事软件开发工作,参与过多款高端嵌入式产品的开发研制,主要负责Linux内核和驱动的研发,以及开源操作系统环境的深度定制。
以上是关于书评 | 《计算机体系结构》读后感的主要内容,如果未能解决你的问题,请参考以下文章