新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 从4004到core i7:处理器的进化史 (3)-1—万事开头难

从4004到core i7:处理器的进化史 (3)-1—万事开头难

作者:时间:2014-02-19来源:摘自《果壳小组》网收藏

  我们就用一个最简单的例子说起。

本文引用地址:http://www.eepw.com.cn/article/221768.htm

  现在让我们暂时先忘掉编程和,集中精力来解下面这一道小学算术题:

  1+2=?

  不要以为算出答案就完事了,我们来仔细想一想我们是怎么算数的。

  首先我们是有眼睛的,所以看到了上面的那道算术题。

  其次我们的眼睛是有焦点的,也就是说我们一般一时间只能看清一道算术题中的某一个数字符号。

  然后我们会做加法。我们并非生来就会做加法,而是因为我们都上过小学,学过算数。换言之,我们被训练过,大脑中有了相应的突触连接。我们只能被训练做有限的事情。万能显然不是用来形容人类或者的。

  有了上面的生理基础还不够。我们还需要一支笔来书写,一张纸来记录。

  我们先不要急着往计算机上靠拢,而是想一想我们上面究竟都弄清楚了些神马:

  我们有一个需求,即计算1+2=?我们用清楚的语言描述了这个需求。这叫做设计捕捉(design capture)。

  我们能描述清楚满足这种需求的流程:

  用眼睛从题目的最左端向右扫视,辨认沿途碰到的每一个符号,同时将符号分成两堆:数和运算符。

  这些符号我们可以记在大脑中,但是想象我们是某种极其健忘的生物,必须要用笔记录在纸上。

  想要完成一次运算,我们至少得明白加法的含义,并且短暂地记住加数和被加数。

  我们终于完成了运算,赶快把结果写在题目后面,免得忘掉了。

  以上我们有了一个切实可行的算法。你可以注意到,这种算法其实是高度抽象、灵活的。比方说,我可以把眼睛换成摄像头,把大脑换成一个最简单的那种按起来滴滴响的计算器,等等。这就是说,我们有了一个行为描述(behavioral discrption),这种描述其实并没有指定具体的解决方案。

  接下来让我们假设我们突然获得了有关半导体的知识,突然明白了用MOS管可以实现。对于高效、正确地完成大量小学算术题这个任务,你有什么想法呢?

  算术题可以用比特表示出来,因为算术题的种类(加减乘除等等)是有限的,运算数也很好用比特表示出来(请相关人员自行脑补补码等内容)。运算这个操作十分简单、机械本身也很好用数字逻辑表示出来。为了存贮这些比特,我们可能需要一些记忆单元(类比于符号和笔纸的关系)。十分幸运的是,这些记忆单元也非常容易用晶体管搭建出来(寄存器、缓存、内存(主存))。

  但是算术题本身却可以千变万化。可以是1+2,可以是2+3,可以是3+4......尽管其中每一个操作用晶体管搭出来都很简单,组合却是没有穷尽的。也就是说,我们最好在临算术之前用某种方式告诉晶体管它要完成的究竟是哪一道算术题。

  以上我们区分了行为描述中两种不同的成分:固定、机械的和灵活多变、无法穷尽的。我们很自然地想到刻在硅片上的电路板极其擅长前者,而后者恐怕就要由我们的更强大的大脑代劳了。这就是硬件/软件划分(hw/sw partitioning)。不要小瞧了这个划分,在很多数字系统中软硬划分常常决定了整个工程执行的速度。总之,每个组件只做一件事情,但要做好。Divide and conquer.这不光是的设计哲学。

  软硬划分是亿万程序员和相比起来寥寥无几的CPU设计师的神圣不可侵犯的契约。这个划分是如此的坚固,以至于千千万万的freshman在学到时想都不想就认为编程是一件自然的事情。

c语言相关文章:c语言教程



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭