以后只想绕着组成原理走
讲的是不错但是章节安排不合理,第一章概述引出无数个头绪;第二章用汇编语言写循环体写递归调用,让你充当人肉编译器;第三章看了前几节就不想看了,感觉有些太繁琐。其实第四章的cpu体系结构讲的好,而且用不到多少占了半本书的前三章;知道汇编指令的机器码格式后就可通读这一章了。行文总体上不够简洁,跟大多数美式教材一样,直接将整个课堂呈现在书页之间。
可是这前三章实在太拦路虎,于是我转而求助另外两本书,但是计算机组成的书莫名其妙地都十分新手不友好,我又开始瞎想自己是不是缺了什么准备知识,却一直没想着去试着读一下这本书的第四章,再加上期末学校的事情繁多得一批,就这样蹉跎了一个月。
昨天我怀着愤恨,赌着气一口气看了第四章的四五十页,大概知道了机器码怎样控制电路、流水线在硬件层怎么实现。习题不想做了,不知道为什么习题总是让我去算执行一些指令的耗时(大概是这个意思吧,好几个单词看不懂),可是书里好像并没有提哪些逻辑单元是同时运行而哪些是顺序运行的,至少在对应的section里没有。
其它的内容不想再看了。
够了,再加上从别处学到的存储器层次的知识,后面再学操作系统、计算机网络应该就够用了;不够了再回来补。反正我是再也不想碰计算机组成了,也没有兴趣了。要不是还能学得动数学我真要怀疑自己智商了。本来想打四星,毕竟是饱受赞誉的一部教材,可是在豆瓣读书和淘宝上我给的好评太多了吧,其中违心的好评难道连一半都没有吗? 我真的是产生过撕书的冲动啊。
痛苦。
为什么不能先从二进制逻辑开始?既然计算机系的学生都学离散数学,为什么不能先通过逻辑电路讲一下比如说加法器、锁存器、译码器、多路选择器?然后我们可以用这些知识来模仿一个简单到可笑的CPU,然后认识到CPU工作的大致流程是取指、译码、执行、访存、写回;我们还可以为这个笑话一样的CPU写一些笑话一样的机器码。这样一个作为科普都显得没水平的介绍却可以——至少让我——很容易地理解CPU的设计思想。这个应该作为每一本组成原理教材的第一章,这第一章除此之外不伸展任何其他的头绪;习题是让读者列出一些机器码指令在这个CPU中怎样流动,以及其他一些次要的。然后在接下来的章节里逐一揭露这个笑话CPU的缺陷、丑态,比如它竟然在执行一条指令的时候让自己的硬件资源闲置,这样堂而皇之地浪费时间简直不能忍,于是借题发挥,我们来讲流水线技术及其硬件实现,以及怎样应对在流水线中发生的数据冲突和控制冲突等问题。然后,第一部分就是这样,像历史、传记、成长心路或者随便爱什么是什么东西一样把CPU从无到有呈现出来了。第二部分再讲汇编指令怎样翻译为机器语言,以及我们为什么需要”指令集架构层“,这一部分不要讲什么递归调用,不要让读者充当编译器,不要变成简到极致的《汇编语言》;读者应该另外专门学汇编语言,就这样明白准确白纸黑字地告诉他!第三部分可以讲CPU的技术进步是多么不留情分地把存储器的技术进步甩在身后,于是我们需要层次化的存储器结构。第四部分讲I/O系统。第五部分叫作“Advanced topics",到这时才综合地讲多核、多处理器等等深入的知识,再说DRAM、SRAM、磁盘,再讲core i7等等例子;此时读者已经知道计算机到底是什么鬼,不会一头雾水。