一个能DIY的CPU逻辑设计_计算机系统要素书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 计算机系统要素 > 一个能DIY的CPU逻辑设计
陈硕 计算机系统要素 的书评 发表时间:2009-04-25 21:04:58

一个能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,好处是它简单,几天就能上手弄懂;坏处是它太简单,可以作为学习的起点,但不宜作为学习的全部。

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“一个能DIY的CPU逻辑设计”的回应

漫漫人生路 2016-10-06 20:24:58

MARK

老苏奇遇记 2016-03-29 14:04:18

特地注册来点有用!

hardfist 2015-08-13 07:39:57

《操作系统设计 xinu方法》就是讲基于mips的嵌入式系统。

peter li 2015-04-10 14:26:49

讲的不错!

龙少 2014-03-13 12:39:20

实现函数调用不一定用PC压栈.

lophyxp 2014-02-02 21:59:36

这本书如何和《编码》相比,可以算做《编码》内容的继续深入。《计算机系统要素》之后可以看清华大学 网格与集群计算研究组 的《CPU芯片逻辑设计》。或者从日本引进的三件套《30天自制操作系统》《CPU自制入门》《自制编程语言》。

tek-life 2011-02-10 08:10:06

这本书和《编码》相比呢?

sowhat 2010-09-21 14:27:23

楼主说了一堆废话+显摆。

野猪 2009-10-19 19:07:36

这本书极适合作为信息技术的本科教材,我看了之后后悔4
年书白念了

五月 2009-10-10 22:38:20

高质量的评论,学习了

平凡的老鱼 2009-05-04 22:37:57

这本书的定位,似乎本来就是做为简单上手的教材来说的。。。
这本书的目的,作者的原意是为提供一个欣赏计算机系统大局观的美景,既然是景色,当然不会详细到很多的细节,否则那就是一部厚厚的著作了。