学计算机的,谁没在“组成原理”和“体系结构”这两座大山前摔过跟头?《计算机系统组成与体系结构》这本,算是专门给想翻过去的人递的梯子。计科、电子、信管专业的同学,拿它当教材正合适。自学党要是真想弄明白代码在硅片上到底怎么跑的,翻它准没错。不注水。路子也正。但说句实在话,你要是微架构老手,想挖高性能处理器最前沿的细节;或者干脆是个写业务代码的,对底层硬件压根没兴趣,那这书,可能真不对你的胃口。再就是,它走的是经典教材的稳健路子。指望看两页就能上手敲代码?或者找点碎片化技术爽文爽一下?翻个两三章,估计你就得喊累。买之前,心里得先有本账。
翻开书前,先掂量掂量自己。编程底子得有,高中的代数公式可别全还给老师了。要是能对数字电路有个大概印象,上手能顺当不少。看书的时候,脑子里最好一直悬着这么三个问题:底层的布尔逻辑,咋一步步堆成复杂指令的?软件指令跟硬件电路,到底靠啥搭桥?搞架构的,在性能、功耗和成本之间,到底怎么拍板取舍?我总觉得,拿着这些宏观问题去抠微观电路,整本书的脉络自己就串起来了。全书就分三块:数字逻辑与有限状态机、计算机组成与系统结构、高级专题。这顺序排得挺聪明。步步递进。没搞那些花里胡哨的跳跃。
具体怎么啃?听我一句劝。第一部分,数字逻辑和有限状态机,老老实实从第一个字读起。千万别跳。布尔代数、数字部件、组合跟顺序逻辑、可编程器件,这些都得过一遍。尤其是有限状态机,往后全书都靠它撑场子。在这儿别急着翻页。把逻辑门咋翻转、触发器咋记状态,掰开揉碎了看。这是后面所有硬件设计的地基。进了第二部分,计算机组成和系统结构,重心得挪到指令集架构、寄存器传输语言、CPU设计、控制部件、算术运算、存储器和I/O上。这部分是全书的硬菜。得慢读。寄存器传输语言那套抽象表达,控制部件的时序怎么排,存储器的层级咋映射,配合着书里的图和例子,多推敲几遍。别一口吞个囫囵。太急。可能得反复翻个两三页,才能咂摸出点门道。
推进到这儿,最容易卡脖子的地方,通常是从抽象逻辑往具体CPU设计过渡的节骨眼上。寄存器传输语言的语法解析,控制部件的时序配合,还有算术运算的硬件实现跟I/O的并行机制,看着都挺绕。我带过不少学生,卡在这儿的时候,逻辑推倒重来好几遍还是懵。遇到死胡同,别硬刚逻辑推导。退回去。重新看看有限状态机的基础模型。琢磨琢磨数据在寄存器之间咋流转,指令咋被拆解执行的。书里第三部分的高级专题,像RISC计算机和并行处理,属于进阶内容。我觉得吧,等前两部分啃扎实了再碰。不然基础没打牢,上来就追高深,容易把自己憋出内伤。这书可能未必适合速成。硬啃反而伤神。
说到底,这书不玩理论堆砌的虚招。密度适中,读起来也不累。按着逻辑门、状态机、整机设计的顺序一步步来,耐着性子把底子打实,你迟早能看穿计算机的底层骨架。后面要是想往深了钻,或者上手搞工程,这书给你铺的路,绝对够硬。不过话得说回来,硬件这东西,光看书不画图、不跑仿真,终究是隔靴搔痒。书是引子。具体的坑,还得你自己一步步蹚过去。