《逻辑与计算机设计基础(原书第5版)》——1.2 计算机系统设计的抽象层次

1.2 计算机系统设计的抽象层次

正如莫格里奇(Moggridge是IDEO公司的共同创办人,他设计了世界上第一台笔记本电脑—译者注)所说的那样,设计就是一个理解问题的所有相关限制,并找到能平衡这些限制的解决方案的过程。在计算机系统中,典型的限制包括功能、速度、成本、功耗、面积和可靠性。在写作这本教材的2014年,最新的集成电路有数十亿个晶体管,设计这种电路一次只设计一个晶体管是不现实的。为了控制复杂性,计算机系统设计通常采用“自顶向下”的方法,在高层对系统进行说明,然后将设计不断分解为较小的块,直到每一个块小到能够实现为止。最后,这些块互相连接起来组成整个系统。上一节介绍的通用计算机是一个通过块互连组成一个完整系统的好例子。这本教材从小块开始,然后逐渐将它们放在一起构成更大、更复杂的块。
计算机系统设计过程的基础是“抽象的层次”概念。像通用计算机这样的计算机系统可以从电路到算法进行多个层次的观察,在每一个较高的抽象层次都隐藏了较低层次的细节和复杂度。抽象去除了系统中有关部件的不必要的实现细节,使得设计者可以聚焦于有助于问题得到解决的关键方面。例如,当编写一个计算机程序将两个变量相加,并将结果存储到第三个变量时,我们重点考虑用来说明变量和描述加法操作的编程语言的结构。而当程序执行时,真正发生的事情是电荷通过晶体管而到处移动,并存储在电容层,形成数据位和一些完成加法与保存结果所需要的控制信号位。在编写程序时,如果要我们为一个一个的位直接描述电流的流动那将是困难的。相反,控制它们的细节通过几层抽象进行了处理,这些抽象将程序转变为一系列的更为详细的表示,最终控制电荷的流动来实现计算。《逻辑与计算机设计基础(原书第5版)》——1.2 计算机系统设计的抽象层次

图1-5给出了现代计算系统典型的抽象层次。在抽象的最高层,算法描述解决问题的一系列步骤。然后,这些算法用高级编程语言,如C++、Python或Java,写成程序。当程序运行时,在操作系统的控制下它与其他程序共享计算资源。操作系统和程序都由指令序列构成,这些指令是运行这些程序的处理器所特有的;程序员可以使用的指令和寄存器(内部数据存储器)集合是大家所知的指令集结构。处理器硬件是指令集结构实现的一种特定方式,称之为微结构;厂家经常制造几种不同的微结构来执行同样的指令集。微结构可以描述为底层一系列的寄存器之间的数据传输。这些寄存器传输可以分解为通过逻辑门来实现的针对位集合的逻辑运算,它们是用晶体管或其他可以控制电子流动的物理器件来实现的电子电路。
抽象的一个重要特点是修改低层抽象不需要改变它上层的内容。例如,用C++编写的程序可以通过C++编译器在任何计算机系统上进行编译,然后执行。作为另外一个例子,一个基于Intel x86指令集结构的可执行程序,可以在该结构的任何一个微结构(实现)上运行,不管这个实现来自Intel还是AMD。因此,抽象允许我们继续使用较高抽象层次的方案,即便是低层实现已经发生了改变。
本教材主要关心从逻辑门到操作系统的抽象层次,重点关注从硬件到硬件与软件之间的接口的设计。通过理解抽象层次的相互作用,对于一个给定的设计我们可以选择一个恰当的抽象层次来集中考虑,忽略一些不必要的细节,优化系统的某些方面,这些方面可能对一个成功的设计应在各种限制中取得平衡有最为重要的影响。通常,对一个设计的较高抽象层次可能进行的改进要比较低抽象层次的修改多得多。例如,可以重新设计硬件电路,使得两数相乘的速度比原设计快20%~50%,但是如果改进算法,完全不用乘法也许对整个电路的速度有更大的影响。随着技术进步和计算机系统变得越来越复杂,设计工作已经转移到较高的抽象层次,在较低层次上的设计过程都已经自动化了。有效地利用自动化过程需要掌握那些抽象层次上的设计基础知识。
数字设计过程简介
数字计算机系统的设计从问题的说明和系统所能达到的性能开始。设计过程通常包括反复地将某一抽象层次的系统表示转换为下一个较低抽象层次的表示,例如,将寄存器传输转换为逻辑门,逻辑门再转换为晶体管电路。
虽然设计过程的具体细节与抽象层次有关,但设计过程通常包括对系统行为进行说明,生成优化的解,然后验证解满足功能和限制条件,如速度和成本的规格说明。作为设计过程的一个具体例子,以下步骤是第2章和第3章将要介绍的组合数字电路的设计流程。
1)功能描述:如果没有现成的描述,则为电路写一个。
2)形式化:推导出能够反映所需输入与输出逻辑关系的真值表或初始布尔方程。
3)优化:使用两级或多级优化,使得所需的逻辑门的数量最少。用逻辑门画出逻辑图或给出电路的网表。
4)工艺映射:把逻辑图或网表转化成新的可以用工艺实现的新的图或网表。
5)验证:验证最后设计的正确性。
对于数字电路,功能描述可以有多种形式,如用文本或者用硬件描述语言(HDL)来描述,其中应该包括输入和输出各自的符号或名字。形式化将功能描述转化为可以化简的形式,这些形式通常是真值表或布尔表达式。在获取真值表或布尔表达式的过程中,必须正确解读功能的文字描述。通常功能描述是不完全的,任何错误的解释可能导致错误的真值表或表达式。
优化的方法有多种,例如第2章将要介绍的代数运算、卡诺图方法(第2章介绍),或基于计算机优化程序。针对不同的应用,可根据具体要求来选择优化方法。一个实用的设计必须考虑一些限制条件,如门电路的使用成本,信号通过电路所允许的最大传播时间,每个门的最大扇出。麻烦的是,门电路成本、门延迟和扇出限制,在工艺映射阶段之前实际上都是未知的。所以,很难定义最好的优化结果是什么,必须重复多次优化和工艺映射,对电路精益求精使之具有规定的功能同时又满足指定的约束条件。
这里所做的关于数字设计过程的简单介绍给本教材的剩余部分提供了一个线路图。通用计算机主要由数字模块互连构成。要想深入理解每个模块的工作机制,必须先具备数字系统相关原理与工作的基础知识。本书第1~5章讲述有关数字电路逻辑设计的相关知识。第4章和第6章主要讨论数字系统中的主要部件的工作机制与设计方法。第7章讲述RAM的工作机理和特性。第8章介绍简单计算机的数据通路与控制。第9~12章讲解计算机的设计基础。第9章会给出计算机指令集结构中的典型指令。第10章讲述CPU结构与设计。第11章将讨论输入输出设备以及CPU与这些设备进行信息交换的各种方式。最后,与cache和MMU相关的多级存储体系将在第12章做具体介绍。
为了让读者在学习过程中对整个知识体系有一个清晰的概念,做到“既见树木又见森林”,我们在每章的开头会有一个讨论,简单介绍每章的内容,并将它与本章所介绍的通用计算机的对应部件联系起来。本书结束时,我们将学习到计算机中的大多数模块,及其功能与设计的相关基本知识。

上一篇:大厂面试来了,欢聚时代四年多经验的Java面经


下一篇:推荐20个非常优秀的网站菜单设计案例