大家好,我们已经介绍了基本的逻辑关系 又介绍了通过这些基本逻辑关系经过一些简单的变换 就能够推出其它的像与非,或非,异或 同或这样的逻辑关系,同样的通过基本逻辑门 经过简单的组合,我们可以组合出与非,或非,异或 同或这样的门电路 进一步我们又介绍了通过这些基本的逻辑门电路 以及各种简单的逻辑门电路 我们组合出了像触发器像加法器 这样子的一些逻辑电路,就稍微复杂一些的逻辑电路 那么这些逻辑电路 我们回忆一下我们从最初的与或非这样的 基本逻辑关系到最后的加法器 我们会发现实际上它们整个的工作 都有点像这种搭积木一样的,从最小的地方 逐渐逐渐逐渐这样的扩展下去 那么今天我们来看一下,从这样子的最小的原子 我们把这个最小的逻辑电路 我们可以暂时称为它的原子细胞 我们从这样子的原子细胞怎么样和 我们今天的计算机能够建立起一种对应的关系呢? 我们这一讲,就希望给大家去解释这些内容 当然我们在第二讲里头 我们就已经给大家有过一些整体的介绍 大家知道了整个计算机系统的组成 特别是主机系统的组成,那么在主机系统里头 有一个最主要的部件 事实上也是我们整个计算机最主要的部件 就是CPU或者说微处理器 那么CPU是我们整个计算机的核心,那么CPU里边 运算器因为它这个运算器从名字上我们就可以感觉出来 它实际上是在做运算的,我们计算机所做的工作 我们已经说了好几次了就是执行程序 那么我们这个执行程序的工作 实际上也可以说是一种运算 所以整个程序的执行都是在运算器里来完成的 所以运算器和控制器一起共同组成了CPU的一个核心部分 运算器的主要的功能 就是完成各种算术逻辑运算以及其它的一些操作 同时它还有一项就是暂时存放一些中间的运算结果 那么这里的第一条就是做各种操作 主要是在算术逻辑单元就是ALU里头完成的 而存放各种中间的运算结果以及一些特征信息 那么它是在各种寄存器里来做的 因为算术逻辑单元我们刚刚在上一讲里头 我们已经给大家有过解释就是算术逻辑单元里头 最基本的部件是加法器,所以加法器我们再上一讲里 已经给大家有过简单的介绍 那么在这里我们来看一下寄存器 寄存器实际上在我们前面已经提到 就是用来暂时存放一些信息的 寄存器和存储器的最主要的区别有两点 第一,就是在它的位置上,存储器是一个独立的部件 我们在前面讲主机的组装的时候 我么可以看到,内存实际上是一个存储条 外存是个硬盘还有其它的一些等等 而寄存器是在CPU里边的,这是在位置上它们的不同 另外的一个不同,寄存器里只存放的信息是非常非常少的 都是由多少位二进制来计算的,比如可以 存8位,存16位,存64位等等 而内存也好硬盘也好,那它的容量相对要大的很多很多 那么寄存器既然是存放信息的,言下之意它就具有记忆功能 那么刚才我们刚刚学到了,它的一种逻辑电路叫触发器 它是具有记忆功能的一种部件 所以触发器就可以用来制作寄存器 一个触发器可以存一位二进制 那么N个触发器就可以存N位二进制码 那么我们如果要做一个8位的寄存器 我们就可以用8个触发器就可以了 好,这就是一个用四个D触发器来构造出一个 四位的寄存器的一个简单的电路 在这里这个CP端是控制端,当CP端出现有效信号的时候 我们已经根据前面分析D触发器的基本过程 控制端一旦有效,D端的状态就决定了Q端的状态 也就是说当D端为0的时候,Q端就是0 那么这个时候就相当于我们把D端的这个0 存放在了相应的Q端上,那么四个这样的触发器 就存放了四位0和1,这就是寄存器 说完了寄存器,下面我们来看一下 另外一个就是我们的算术逻辑单元 我们前面只介绍了加法器,我们为什么介绍加法器 是因为算术逻辑单元本身是做算术运算 它的基本功能是算术运算 而算术运算我们说加减乘除 最后都归结我加法和移位的操作 所以加法器是我们算术逻辑运算单元里面 最基本的一个部件 那么算术逻辑单元到底怎么样来完成这样一个加法呢 因为刚才我们解释了加法器实际上 不管是全加器也好半加器也好 都是完成一位二进制的运算 我们今天给出一个算术逻辑单元完成一次加法运算的 一个整体的一个框架 也就帮助大家理解计算机是怎么样完成加法的 因为在计算机里边 不论是加法还是减法,不论做什么运算 数据在计算机中的存储都是以补码的形式来存放的 所以它的加减运算也都是以补码的形式来进行的 我们来看一个例子,比如我们来计算一下,X加Y的补码 根据我们前面学习的这个机器数的 表示和运算这一讲里头讲过的 X加Y的补码就等于X补码加Y的补码 那么我们来看一下运算器怎么样实现的 这个就是实现一个定点数补码加法运算的 一个电路的一个电路图 假设我们现在要做X补码加Y的补码 好,这个是个控制信号 上面那个F是加法器 这个控制信号由控制器来产生 当要做这个X的补加Y的补码的时候 首先,它会使控制器会发出一个控制型号 使这个与门的输入端变成高电平也就是输入一个1 如果与门只要两输入的话,一个输入端是1 那么与门的输出就完全由一个端的状态里来决定 所以这个时候,与门我们可以就称为它属于开门了 那么这个时候X的状态通过与门就传送进了加法器里头 那么这是X,那么Y呢,那么第二个数要求加数Y 那么这个时候要发出另外一个控制信号 这个控制信号使得这个与门变成开门状态 那么这个时候Y和就由触发器的Q端输出了 我们说任何一个触发器都有两个输出端 而且这两个是互为反向的,一个Q,一个Q非 那么如果我们在Q端输出的是这个Y的话 那么这个Y通过这个与门 就这样子沿着这样一条路进到了加法器里头 然后就实现了X的补码加Y的补码 那么好,如果我们这个时候要计算的是X减Y的补码怎么办 我们说X减Y的补码相当于X的补码加负Y的补码 那么这个时候,触发器的Q端就不会再输出了 这个时候由Q非端会输出信号,为什么会Q非端呢? 因为作为触发器来讲 实际上它的Q端和Q非端是同时有状态出现的 只不过刚才,我们只是把Q端的状态送进去了 这个时候如果要做减Y的运算的话 我们这个时候把Q端的状态让它不要进去 而是在Q非端的状态进去,这个Q非端状态的进去 靠这个控制器发出相应的控制信号 就是现在这个圈所表达的这个信号 就是Y非到加法器,那么好 这个就使得右侧这个与门的输入端变高 好了,那么右侧这个与门一旦开门的话 那么Y非就Q非端的状态 就沿着这条路进来了 进到了加法器那么刚才这个触发器的就是Q端 也就是在这里Y为什么就出不去了呢? 它实际上还是在触发器的门口 但是因为左侧的这个与门它的就是Y到F的这个控制信号 这个时候无效,就是它属于0状态 所以左侧这个与门被关掉了 所以这个时候Y是进不去的 而出去的只是Y非,所以这个就是X减Y它的实现的基本原理 这个就是算术逻辑单元完成一次定点数的 两个整数的加法就是用这样的一个基本的示意 有关其它的比如像浮点的运算 运算器是非常非常复杂的 我们在这里就不再多说了 同样的,我们由逻辑门可以组合出加法器 我们又有逻辑门加上触发器组合出了寄存器 那么各种逻辑门电路我们可以组合出算术逻辑单元 那么由它们我们组合出了CPU 我们由触发器和各种逻辑门我们可以组合出存储器 那么由存储器和CPU组合出了计算机的主机系统 那么又由各种其它的部件合在一起 我们组成了整个计算机,我们这样子想一下 我们会发现实际上任何复杂的逻辑电路 都是由基本逻辑门组合而成的 所以硬件系统,它的构造就像我们搭积木一样 是从最小的这些小方块一个一个一个一个搭起来 就像我们盖楼是由一块砖一块砖最后就垒成了楼房 所以系统的构造方法,它的基本方法我们这样子描述 就是自底向上,逐层封装和抽象 最后就构成了整个系统,我们想一想是不是这样一个道理 我们这个不仅仅是硬件系统是这样子的一个构造的原理 软件系统也是一样的,事实上在这里封装也好 抽象也好,我们未来在面向对象的程序设计中 我们都会看到这样的名词,就是说我们在做事情的时候 不管是设计软件也好设计硬件也好 我们设计好了一个电路或者是设计好了一段程序 如果这段程序 或者这样一个电路是一个具有独立的功能的 这样一个完整的电路或者完整的程序的话 我们就可以把它封装在一起这个时候我们只需要告诉别人 你输入什么样的东西 或者说我的输入端应该有什么样的电信号或者电的信号特征 然后我会从这里得到什么样的输出就可以了 这就是像我们工厂里的零件一样,这个零件是怎么样生产的 我们其实并不关心,我们只关心这个零件放在那里以后 我们它怎么用 我们用这些零件怎么样能够装出一台机器来 这就是我们所关心的 所以我们的机器的安装或者说我们任何一台机器实际上都是 由大大小小简单复杂各种各样的零件最后组装而成 这个过程我们就可以说是自底向上 或者是自里向外的这样子的一个过程 然后逐层的这种通过把每构造出一块由 最基本的零件构造出的一个稍微复杂的部件 我们就把它封装起来 然后这个部件又可以作为更复杂的部件里面的一个小部件 然后构成一个更大一点的一个部件 更大一点的部件又经过若干这样的大一点部件 我们就可以构造出系统,一层一层的这样的上去 这个就是整个系统构造的一个基本的思路和方法 当然作为一个大的系统的设计来讲 它的过程和这种构造正好是反方向的 我们拿到一个大的问题,我们首先要知道 它是由多少个小问题来组成的 或者说它怎么样能够把这个任务进行拆分 所以对一个大系统的设计方法来讲 我们说它是自顶向下分析和分解就是把它分成 一个一个的子问题 然后每一个子问题再分成更小的子问题 直到分到一个人就可以在一个可以接受的时间里 能够解决的这样的一个问题 那么对于这样子的系统构造来讲,它是自底向上的 所以系统设计和系统的构造 正好它们的设计思路或者方法都是一个相反的或者不同的 我们希望通过这一讲 我希望给大家传递这样一个一个信息 或者说帮助大家,理解或者初步的建立起来 我们做系统设计和系统构造的一些基本思路和方法 这些不仅仅是我们今天语言上的一个总结 实际上从我们最早讲基本逻辑门 一直到它的组合的就是一些简单逻辑门 再到一些组合的逻辑电路这样逐渐的 最后我们刚才讲到一直构造出CPU 构造出计算机这样一个过程 我们去通过这样一个构造的过程里头 我们去理解系统构造或者系统设计它的一个基本的思路 好,最后我们把这部分内容来小结一下 我们已经知道计算机内部的信息都是0和1来表示的 也就是计算机能够唯一识别的是这样0和1表示的二进制信息 那么我们如果把0来对应到假,1对应到真的话 那么0和1就可以变成为逻辑变量 而实现逻辑变量之间关系的这种电路 我们称为逻辑电路 任何一种逻辑电路都是由基本逻辑门电路来构成的 基本逻辑门的它们不同的连接或者不同的组合 就可以构造出任何复杂的逻辑电路 包括我们的CPU,最后以至于构成我们今天的计算机 好,这一讲就到这里