《计算机系统要素》是一本由Noam Nisan / Shimon Schocken著作,电子工业出版社出版的16开图书,本书定价:45.00元,页数:325,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。
《计算机系统要素》精选点评:
●Cpu is a art, but pipeline is a black magic, Compiler art, code generator black magic, virtual machine art, vm optimize black magic.
●受益匪浅
●好玩的书!
●还不错哦
●自学入门神书
●唉翻译太糟糕了;后面的软件 project 又太范了,大概了解下计算机各个部分吧
●拨云见雾
●很不错的一本学底层硬件逻辑的书.让你知道怎么回事.
●其实书中还是把很多东西简化了,看完这本书只是觉得对于计算机有了更深点的体会吧,但是有个完全的了解还是没有。
《计算机系统要素》读后感(一):梦寻百千度,回首阑珊处
偶然间看到Shimon Schocken在TED的一期演讲,介绍其为学生开发了一套逐步构建现代计算机的课程,该课程让大家了解现代计算机如何从基本门电路开始慢慢被构建。
《计算机系统要素》读后感(二):做完很有成就感的书
首先,这本书可以作为学习计算机系统的入门书先看看,主要是要实践,把CPU和编译器做完后会发现自己很有成就感,这时候自信心和兴趣都会有所提高,然后继续看些较深入的计算机体系结构的书。
书中对每个项目都有循序渐进的方案实行,这样会让我们对项目有一个很好的习惯:循序渐进的实现而不是非要一次性的实现所有功能。
对于编译器部分推荐用类似于Python这样的脚本语言实现,用C语言实现总感觉有些蹩脚。
本书貌似已经买不到了,不过网上还是有清晰版的pdf的,打印出来,有些章节要反复看,呵呵,你会有一个美妙的旅程。
《计算机系统要素》读后感(三):总结性神书
不得不说,这简直是一本神书。以前,学了模电、数电,知道了逻辑电路与时序电路;学了微机、单片机,有个计算机的雏形;学了汇编,知道计算机的工作方式;之后学了C、Java、PHP各种高级语言,知道了怎么编程;学了Linux,了解了操作系统;之后又接触了数据结构,编译器。尽管如此,在读这本书之前,对这些课程如何联系起来的,计算机怎么一步一步构建起来还是毫无头绪,对于程序为什么会被运行,是怎么烧写的完全没有概念。读了此书之后,一切都串起来了,计算机的发展史不再是一些无聊的技术术语,计算机的构建一步步变得明朗。建议大家有上面课程支撑的人去读,不需要实现书中的项目,只做了解,读完之后,你会发现收获会大到无法想象,你会有一个质的提升。
《计算机系统要素》读后感(四):一个能DIY的CPU逻辑设计
读这本书最大的收获,原来设计一个“从内存中读取指令并执行”的电路并不如想象中那么复杂,用几十个D触发器加一堆逻辑门就能搞出来。
当然,要把这么多内容放到一本书里,必然有很多省略之处。
数字电路方面,模型比较理想化,要想真的用TTL或FPGA实现Hack还有一些现实的困难要克服,当然不能苛求这本书把数字电路讲得过细,那就喧宾夺主了。
CPU设计方面,虽然Hack很简单,但它是怎么一步一步设计出来的,为什么要这样设计,理由何在,设计过程中做了哪些权衡考虑,这些在书中并没有明显的说明。
硬件设计,特别是CPU的设计,是为软件服务的。具体地说,就是成为C语言的编译目标,CPU提供的指令应该能充分支持C语言的高效实现,毕竟C语言是使用最广泛的系统语言。这一点Hack并没有完全做到,甚至没有提到,比如它没有逻辑移位指令(C语言有移位操作符),也不能实现函数调用(因为PC的值不能压栈)。Hack的A寄存器可以用来作基址寄存器,即内存访问时的地址,等于是个指针。如果书中能把C语言的常见指针操作用Hack汇编语言翻译阐述一遍,就能相互映照,加深理解,但可惜没有。这方面, Patterson & Hennessy 那本《Computer Organization and Design: The Hardware/Software Interface》要好得多。不过,cod讲的CPU可就没那么容易实现了,那是一块类MIPS的32-bit RISC CPU。
CPU除了支持C语言,另外还得支持现代操作系统,具体说来,就是区分用户态和内核态,支持系统调用以便在两者之间转换,支持虚拟内存,让多个进程能有彼此独立的地址空间,等等。这方面我还没有找到一本特别好的书,很多操作系统教材以X86为例,但x86的内存管理机制复杂得一塌糊涂,补丁累补丁(8086->80286->80386->x64,一路补丁打下来,还得向下兼容),花精力在这上面实在不值。我希望能看到以MIPS或者ARM为平台的操作系统教材。
性能方面,书中也着墨不多。Hack造出来了,那么它的性能如何,够不够快,能不能更快,瓶颈在哪里?Hack CPU是一个同步时序逻辑电路,它的时钟频率能上到多少MHz,制约因素是啥,它能容忍的clock skew是多少ps,它在执行指令时各个信号的时序图如何,这些书里都没有提到。Hack是个单周期CPU,如果要提速,一般是流水化+cache,这又会引入一大堆的头疼问题。这方面,《Computer Systems: A Programmer's Perspective》讲得很好。
Hack的另外一个弱点是输入输出,它用内存映射方式的IO,这本身没问题,但是它不支持中断,也就是说只能用轮询的方式输入输出数据,这可不妙。中断是一个关键概念,不仅是输入输出,单CPU上能实现多任务,全靠操作系统在处理时钟中断时顺便切换当前任务(当然,也有其他切换任务的机会,比如从系统调用返回时)。要学这一块看似神奇的任务切换,不用劳烦复杂的操作系统教材,一本uC/OS-II的书就搞定了。
学Hack,好处是它简单,几天就能上手弄懂;坏处是它太简单,可以作为学习的起点,但不宜作为学习的全部。
《计算机系统要素》读后感(五):当之无愧的哈佛CS101
不知道有多少人像我一样,在看了Shimon Schocken的那个TED演讲之后对这门网络课程产生了兴趣;也不知道有多少人像我一样,坚持做完了整本书的项目。在断断续续3个月的学习过程中,我对计算机有了更加深入的认识,同时,超过1500行的代码和一个个实打实的project给了我前所未有的成就感——想象一下在这么一台每一个nand门都是由你自己搭建的计算机上顺利运行弹球游戏的场景吧!那是多么令人激动!
事实上,这本书是nand2tetris这门网络课程的配套教材,该课程其他所有资料都需要到官方网站上下载。这门课程曾经是哈佛大学计算机系的一门公共课,由于其内容实在是太强大,被众学生戏称为CS101。它其中大多数章节都是独立的,从nand2tetris这个名字就可以看出,第一章到第十二章实际上就是让你从最基本的Nand门开始构建计算机,直到让俄罗斯方块在你的计算机上顺利运行。
不可否认,这本书对于很多内容都没有深入讨论,有些关键性问题干脆直接封装起来了,但是这并不影响本书的含金量。作者的出发点是希望读者能够对计算机架构有一个整体了解,而不是纠结于细节。同时,这种写作思路也使得该课程几乎没有学习门槛,只需要会一门基本的编程语言便可以开始学习,所有人都可以完成这门课程。(要知道最小的完成者只有11岁!)作为一个亲历者,我强烈建议,无论你是什么年龄,学什么专业,开始学习这门课程吧!它绝对会给你意想不到的收获!
最后,我将所有关于这门课的资料整理了一下,其中包括了我自己写的讲解文章和代码,希望能够帮助到同样对这门课程感兴趣的人。
该网络课程的官方网站(包含全套资料)
官方读者问答论坛(管理员回复速度很快)
TED《Shimon Schocken:自组织式计算机课程》:
讲解文章(附代码):
放在Github上的代码:
Chapter 1~4
https://github.com/cmoylan/Elements-of-Computing-Systems
Chapter 5~12
https://github.com/ThomasCJY/The_Elements_of_Computing_Systems
该书作者并不鼓励我们看答案学习,他希望我们能够自己思考解决问题,我也建议大家不要依赖于答案,因为思考的过程的确能够给你带来很多帮助。但是,在写代码的过程中,一些很傻瓜的问题往往又会把你折磨的死去活来,我在做的时候就常想,要是有个答案能参考,我能节约50个小时。所以,给出答案只是为了帮助大家不在不必要的环节上浪费时间。最后,希望所有人都能在学习过程中收获快乐!
--------------------------------------------------------------------------------------
2015/3/18更新
读完这本书,对系统有兴趣的同学可以马上去看《Computer Systems: A Programmer's Perspective》这本书,配合coursera上的《计算机软硬件接口》课程,和CSAPP官网的lab实验,可以迅速提升你对于计算机系统的认识。