书名:《CPU通识课》
作者:靳国杰 张戈
读完:2022-07-04 · 微信读书
这本书从指令集、流水线讲到多核并行、制造工艺和产业生态,是一本CPU入门读物。书里讲了乱序执行和并行加速的基本原理,也讲了CPU产业里谁定标准、谁分钱的问题。
下面是我的划线,按主题整理。
一、人人可学CPU
书里给了几个动手的入口。
全世界最大的开源电路模块网站OpenCores(https://opencores.org),上面有各种类型的开源处理器,数量超过200个,可以作为一个参考资料库,但是近几年更新缓慢,很多项目已经有10多年没有更新了。另外一个大型社区就是Github,里面也有一些CPU设计源代码。搜索关键字“CPU FPGA”可以找到600多个项目,但是这些项目活跃度都很低,其中获得Star评分最高的是一个兼容RISC-V指令集的CPU设计项目,获得了5400个Star。相比Github上随便一个软件组件项目就能获得上万个Star,CPU的开源资源确实是比较薄弱的。
在验证阶段,推荐一个开源仿真器软件iverilog。iverilog的执行过程是“先编译,然后运行”。它首先读取CPU项目的Verilog描述代码,转换成实际的数字电路,再进行仿真运行,显示出CPU电路的状态变化。
二、指令、流水线与乱序执行
统计表明,计算机中各种指令的使用率相差悬殊,可以总结为“二八原则”:CPU中最常用的20%指令,占用80%的执行频率。使用最频繁的指令往往是加减运算、条件判断、内存访问这些最原始的指令
Tomasulo算法的本质思想是,保留站把有序的指令变成无序的执行,并且通过保留站中的“源操作数”域保存每条指令的临时计算结果,使得最终结果正确。
保留站使指令变成乱序执行,ROB使指令有序提交,这两个部件实现了相反的操作。
保留站提高了CPU执行指令的效率,ROB保证指令的执行结果仍然符合软件本身的顺序。
重命名寄存器用于处理指令之间的数据相关性,保存指令执行的中间结果,同时实现了对例外的精确处理。重命名寄存器是保留站和ROB之间的桥梁。
静态流水线就像是一条高速公路,只有一个车道,每一辆汽车是一个流水线阶段,所有汽车依次往前开;动态流水线允许个别汽车“超车”,在有的汽车发生故障阻塞高速公路时,后面的汽车可以绕到前面继续开;多发射就是把高速公路变成多个车道,所有汽车齐头并进地往前开。
三、从一个核到多个核
如果是在一个芯片内部单纯提高处理器核数,虽然计算指标得到提升,但是内存访问通道的数量少,将形成访存瓶颈,出现“茶壶倒饺子”的问题,最终限制整机性能表现。
CPU可以将多个线程都以硬件的方式执行,只要实际运行的线程数量不超过CPU支持的执行环境数量,就不需要分时复用,这是真正意义上的并行执行。
对于计算问题在多核上运行所带来的性能提升,取决于计算问题中可以改造成并行算法的比例。
S=1/(1-a+a/n)
上式中,a为并行计算部分所占比例,n为并行处理结点个数(即多核的核数)。S为并行算法相比串行算法的性能提升幅度,称为“加速比”。
可以列举几个边界数据来验证这个公式。当a=1时(即没有串行,只有并行),最大加速比S=n,即并行算法只需要串行算法的1/n时间;当a=0时(即只有串行,没有并行),最小加速比S=1,即并行算法和串行算法的时间相同,多核没有发挥作用。最后还有一种情况,假设核数无限增大,当n→∞时,极限加速比S→ 1/(1-a),这也就是加速比的上限。例如,若串行代码占整个代码的25%,则并行处理的总体性能不可能超过串行处理的4倍。
Amdahl定律给软件编程人员的启示是要尽可能增大算法中的并行部分,而不是一味追求高核数的计算机系统。这在计算资源极为昂贵的20世纪60年代是非常有价值的定律。
原子指令的实现机制一般是在CPU的互联网络中实现一个全局的原子寄存器,所有CPU对这个原子寄存器的访问是互斥的。
四、工艺、生态与“地主”
进入2020年,集成电路工艺发展到5nm节点,主流的SOI和FinFET似乎也将要到达其物理极限。三星公司推出全环绕栅极(Gate-All-Around,GAA)晶体管结构,宣称能够取代FinFET,Intel表示在其5nm制程中放弃FinFET而转向GAA。“后FinFET时代”何去何从?掌握先进制造工艺就是抢占半导体技术的制高点,我辈不能只是作壁上观,更要发奋图强。
产业链存在剥削现象,一个产业链最终的价值是消费者给的,而产业链内部的利益分成则主要是由生态主导者定的。产业链企业怎么分钱,不是干得多就分得多,也不是做芯片的必然分得多,而是“地主”分得多——“地主”就是控制解决方案、控制产业生态的那个企业。
商界有一条名言流传已久,套用在CPU上同样适用:一流的企业做标准(对应到CPU是知识产权),二流的企业做品牌(对应到CPU是生态),三流的企业做产品(对应到CPU是芯片制造)
……通用处理能力、单核性能、设计能力”,这3个主题词是龙芯的长期优化方向,贯穿了龙芯从2010年至今的产品设计原则。
五、推荐阅读
请我喝杯咖啡……[1]王元,沈富可,曹红霞. 计算机科学的足迹[M]. 上海: 上海科技教育出版社,2015.
[2]吴军. 浪潮之巅[M]. 4版. 北京: 人民邮电出版社,2019.
[3]水头一寿,米泽辽,藤田裕士. CPU自制入门[M]. 赵谦,译. 北京: 人民邮电出版社,2014.
[4]赛因特. 集成电路版图基础[M]. 李伟华,孙伟锋,译. 北京: 清华大学出版社,2020.
[5]Agarwal Anant,Lang Jeffrey H. 模拟和数字电子电路基础[M].于歆杰,朱桂萍,刘秀成,译. 北京: 清华大学出版社,2008.
[6]矢泽久雄. 计算机是怎样跑起来的[M]. 胡屹,译. 北京: 人民邮电出版社,2015.
[7]万木杨. 大话处理器[M].北京: 清华大学出版社,2011.
[8]田民波. 图解芯片技术[M]. 北京: 化学工业出版社,2019.

