当前位置: 首页 > >

《计算机组成原理》复*笔记

发布时间:



计算机组成原理复*目录
第一章 计算机系统概论1.1 计算机系统简介1.1.1 计算机的软硬件概念1.1.2 计算机系统的层次结构1.1.3 计算机组成和计算机体系结构

1.2 计算机的基本组成1.2.1 冯?诺伊曼计算机的特点1.2.2 计算机的硬件框图1.2.3 计算机的硬件组成

1.3 计算机硬件的主要技术指标
第二章 计算机的发展及应用第三章 系统总线3.1 总线的基本概念3.2 总线的分类3.3 总线特性及性能指标3.3.1 总线特性3.3.2 总线性能指标

3.4 总线结构3.5 总线控制3.5.1 总线判优控制3.5.2 总线通信控制


第四章 存储器4.1 概述4.1.1 存储器分类4.1.2 存储器层次结构

4.2 主存储器
第五章 输入输出系统5.1 概述5.2 I/O设备5.3 I/O接口5.4 I/O设备与主机信息传送的控制方式
第六章 计算机的运算方法6.1 无符号数和有符号数6.2 数的定点表示和浮点表示6.3 定点运算
第七章 指令系统7.1 机器指令7.2 操作类型7.3 寻址方式
第八章 CPU的结构和功能8.1 CPU的结构8.2 指令周期8.3 指令流水8.4 中断系统
第九章 控制单元的功能9.1 微操作命令的分析9.2 控制单元的功能




第一章 计算机系统概论
1.1 计算机系统简介
1.1.1 计算机的软硬件概念


1、计算机系统由硬件软件两大部分组成。
??硬件:指计算机的实体,如主机、输入输入设备、外存储器、网络通信设备等。
??主机包括中央处理器CPU存储器,其中CPU由运算器控制器组成。
??软件:软件包括系统软件和应用软件。
??系统软件:用来管理整个计算机系统,如语言处理程序、操作系统、数据库管理系统、网络软件等。
??应用软件:按任务需要编制成的各种程序。


1.1.2 计算机系统的层次结构

??通常,将高级语言程序翻译成机器语言程序的软件称为翻译程序。翻译程序有两种:一种是编译程序,一种是解释程序。
编译程序:是将用户编写的高级语言程序(源程序)的全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序。
解释程序:将源程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句,接着翻译源程序的下一条语句,并执行这条语句,如此重复直至完成源程序的全部翻译任务。
下图为多层次结构的计算机系统:


1.1.3 计算机组成和计算机体系结构

??计算机组成是指如何实现计算机体系结构所体现的属性。(具体指令的实现,取指令、分析指令、取操作数)
??计算机体系结构是指哪些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性。(指令系统、数据类型、寻址技术、I/O机理)


1.2 计算机的基本组成
1.2.1 冯?诺伊曼计算机的特点

1、计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成。
2、指令和数据以同等地位存放于存储器内,并可按地址寻访。
3、指令和数据均用二进制数表示。
4、指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。
5、指令在存储器内按顺序存放。
6、机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。


1.2.2 计算机的硬件框图

1、现代计算机硬件框图
??算数逻辑单元(Arithmetic Login Unit,ALU),用来完成算数逻辑运算。控制单元(Control Unit,CU) 用来解释存储器中的指令,并发出各种操作命令来执行指令。ALU和CU是CPU的核心部件,CPU是指将运算器和控制器集成到一个电路芯片中.。I/O设备也受CU控制,用来完成相应的输入、输出操作。


1.2.3 计算机的硬件组成

1、存储器的基本组成
??主存储器包括存储体M、各种逻辑部件及控制电路等。存储体由许多存储单元组成,每个存储单元又包含若干个存储元件,每个存储元件能寄存一位二进制代码“0”或“1”。一个存储单元可存储一串二进制代码,称这串二进制代码为一个存储字,这串二进制代码的位数成为存储字长


??主存的工作方式就是按存储单元的地址号来实现对存储字各位的存(写入)、取(读出)。这种存取方式称为按地址存取方式,即按地址访问存储器。为了实现按地址访问的方式,主存中还必须配置两个寄存器MAR和MDR。


?? MAR(Memoty Address Register) 是存储器地址寄存器,用来存放欲访问的存储单元的地址,其位数对应存储单元的个数。如MAR=4,存储单元的个数为2的4次方。


??**MDR(Memory Data Register)**是存储器数据寄存器,用来存放从存储体某单元取出的代码或者准备往某存储单元存入的代码,其位数与存储字长相等。如MDR=8,存储字长为8位。

2、运算器的基本组成
??运算器最少包含3个寄存器和一个算数逻辑单元(ALU),其中ACC为累加器,MQ为乘商寄存器,X为操作数寄存器。


3、控制器的基本组成
??控制器由程序计数器(Program Counter,PC)指令寄存器(Instruction Register,IR) 以及 控制单元(CU) 组成。PC用来存放当前欲执行指令的地址,它与主存的MAR之间有一条直接通路,且具有自动加1的功能,即可自动形成下一条指令的地址。IR用来存放当前的指令,IR的内容来自主存的MDR。CU用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象。


4、执行指令的过程
(1)取指阶段: 先命令存储器读出一条指令,程序计数器加1。
(2)分析阶段: 指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址。
(3)执行阶段: 根据操作数所在的地址以及指令的操作码完成某种操作。


1.3 计算机硬件的主要技术指标

1、机器字长
??机器字长是指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。字长越长,数的表示范围越大,精度也越高。
2、存储容量
??存储器的容量应该包括主存容量和辅存容量。主存容量是指主存中存放二进制代码的总位数。即 存储容量 = 存储单元个数 × 存储字长
??MAR的位数反映了存储单元的个数,MDR的位数反映了存储字长
??现代计算机中常以字节数来描述容量的大小,因一个字节已被定义为8位二进制代码,故用字节数便能反应主存容量。
注意:单位问题
??1、K是数值,一般是1024,即2的10次方,M为2的20次方 。1G = 2的10次方M = 2的20次方K = 2的30次方
??2、KB是单位,其中B是字节。
??3、基本存储单元:
??位(bit):二进制数中的一个位数,0或1,最小单位。
??字节(Byte,B):每8位组成一个字节。


3、运算速度
??计算机的运算速度与许多因素有关,如机器的主频、执行什么样的操作、主存本身的速度等都有关。


第二章 计算机的发展及应用


第三章 系统总线
3.1 总线的基本概念

1、计算机系统的五大部件之间的互连方式有两种,一种是各部件之间使用单独的连线,称为分散连接;另一种是将各部件连到一组公共信息传输线上,称为总线连接。
2、总线是连接多个部件的信息传输线,是各部件共享的传输介质。


3.2 总线的分类

按数据传送方式分:并行传输总线串行传输总线
按连接部件不同分:片内总线系统总线通信总线


    系统总线: 是指CPU、主存I/O设备各大部件之间地信息传输线。通信总线: 用于计算机系统之间或计算机系统与其它系统(如控制仪表、移动通信等)之间的通信。

3.3 总线特性及性能指标
3.3.1 总线特性

1、机械特性:指总线在机械连接方式上的一些性能,如插头与插座使用的标准、它们的集合尺寸、形状等。
2、电气特性:指总线的每一根传输线上信号的传递方向和有效的电*范围。通常规定CPU发出的信号称为输出信号,送入CPU的信号称为输入信号。
3、功能特性:指总线中每根传输线的功能。
4、时间特性:指总线中的任一根线在什么时间内有效。


3.3.2 总线性能指标

1、总线宽度:通常指数据总线的根数。
2、总线带宽:总线带宽可理解为总线的数据传输速率,即单位时间内总线上传输数据的位数,通常用每秒传输信息的字节数来衡量,单位可用MBps(兆字节每秒)表示。
3、时钟同步/异步:总线上的数据与时钟同步工作的总线称为同步总线,与时钟不同步工作的总线位异步总线。
4、总线复用:一条信号线上分时传送两种信号。
5、信号线数:地址总线、数据总线和控制总线三种总线数的总和。


3.4 总线结构

总线结构分为单总线结构和多总线结构两种。


    单总线结构:将CPU、主存、I/O设备(通过I/O接口)都挂在一组总线上,允许I/O设备之间、I/O设备与CPU之间或I/O设备与主存之间直接交换信息。双总线结构:将速度较低的I/O设备从单总线上分离出来,形成主存总线与I/O总线分开的结构。

3.5 总线控制

??由于总线上连接着多个部件,什么时候由哪个部件发送信息,如何给信息传送定时,如何防止信息丢失,如何避免多个部件同时发送,如何规定接收信息的部件等一系列问题都需要由总线控制器统一管理。主要包括判优控制(仲裁逻辑)和通信控制。


3.5.1 总线判优控制

??总线上所连接的各类设备,按其对总线有无控制功能可分为主设备(模块)和从设备(模块)两种。主设备对总线有控制权,从设备只能响应从主设备发来的总线命令,对总线没有控制权。总线上信息的传送是由主设备启动的,如某 个主设备欲与另一个设备(从设备)进行通信时,首先由主设备发出总线请求信号,若多个主设备同时要使用总线时,就由总线控制器的判优、总裁逻辑按一定的优先等级顺序确定哪个主设备使用总线。


3.5.2 总线通信控制

??众多部件共享总线,在争夺总线控制权时,应按各部件的优先等级来解决。在通信时间上,则应按分时方式来处理,即以获得总线使用权的先后顺序分时占用总线。
??通常完成一次总线操作的时间称为总线周期,可分为4个阶段:
1、申请分配阶段:取得了使用权的主模块提出申请,经总线仲裁机构决定下一传输周期的总线使用权授于某一申请者。
2、寻址阶段:取得了使用权的主模块通过总线发出本此要访问的从模块的地址及有关命令,启动参与本此传输的从模块。
3、传数阶段:主模块和从模块进行数据交换,数据由源模块发出,经数据总线流入目的模块。
4、结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。
??总线通信控制主要解决通信双方如何获知传输开始和传输结束,以及通信双方如何协调如何配合。
常用四种方式:同步通信异步通信半同步通信分离式通信


第四章 存储器
4.1 概述
4.1.1 存储器分类

1、按存储介质分类
(1)半导体存储器: TTL、MOS
(2)磁表面存储器:磁头、磁载体
(3)磁芯存储器:硬磁材料、环状元件
(4)光盘存储器:激光、激光材料
2、按存取方式分类
按存取方式可分为:随机存储器、只读存储器、顺序存储器和直接存取存储器。
(1)随机存储器(RAM)
RAM是一种可读/写存储器,其特点是存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关。计算机主存都采用这种随机存储器。
(2)只读存储器(ROM)
只读存储器只能对其存储的内容读出,而不能对其重新写入的存储器。
(3)串行访问存储器
顺序存取存储器: 磁带
直接存取存储器: 磁盘
2、按在计算机中的作用分类


4.1.2 存储器层次结构

存储系统层次结构主要体现在缓存-主存和主存-辅存这两个存储层次上。缓存-主存层次主要解决CPU和主存速度不匹配的问题。由于缓存的速度比主存高,只要将CPU*期要用的信息存取缓存,CPU便可以直接从缓存获取信息。主存-辅存层次主要解决存储系统的容量问题。


4.2 主存储器

一、半导体随机存取存储器(RAM)


    静态RAM(static RAM,SRAM)
    ??SRAM静态存储单元的每个存储位需要四到六个晶体管组成.比较典型的是六管存储单元,即一个存储单元存储一位信息"0"或"1".静态存储单元保存的信息比较稳定,信息为非破坏性读出,故不需要重写或者刷新操作;另一方面,其结构简单,可靠性高,速度较快,但其占用元件较多,占硅片面积大,且功耗大,所以集成度不高.

    动态RAM(Dynamic RAM,DRAM)
    ??常见的DRAM存储单元有三管式和单管式两种,它们的共特点是靠电容存储电荷的原理来寄存信息.若电容上存有足够的电荷表示“”,电容上无电荷表示"0".电容上的电荷一般只能维持1-2ms,因此即使电源不掉电,电容上的电荷会自动消失.因此,为保证信息的不丢失,必须在2ms之内就要对存储单元进行一次恢复操作,这个过程称为再生或者刷新.与SRAM相比,DRAM具有集成度更高,功耗低等特点,目前被各类计算机广泛使用.


二、只读存储器(ROM)


??前面介绍的DRAM和SRAM均为可任意读/写的随机存储器,当掉电时,所存储的内容消失,所以是易失性存储器.只读存储器,即使停电,存储内容也不丢失.根据半导体制造工艺不同,分为ROM,PROM,EPROM,EEROM和Flash Memory


    只读存储器(ROM)

    掩模式ROM由芯片制造商在制造时写入内容,以后只能读而不能再写入.其基本存储原理是以元件的“有/无”来表示该存储单元的信息(“1”或“0”),可以用二极管或晶体管作为元件,显而易见,其存储内容是不会改变的.

    可编程序的只读存储器(PROM)

    PROM可由用户根据自己的需要来确定ROM中的内容,常见的熔丝式PROM是以熔丝的通和断开来表示所存的信息为“1”或“0”.刚出厂的产品,其熔丝是全部接通的.根据需要断开某些单元的熔丝(写入).显而易见,断开后的熔丝是不能再接通了,因而一次性写入的存储器.掉电后不会影响其所存储的内容.

    可擦可编程序的只读存储器(EPROM)

    为了能修改ROM中的内容,出现了EPROM.利用浮动栅MOS电路保存信息,信息改写用紫外线照射即可擦除.

    可电擦可编程序只读存储器(EEPROM)

    EEPROM的编程序原理与EPROM相同,擦除原理完全不同,重复改写次数有限制(因氧化层被磨损),一般10万次.

    其读写操作可按每个位或每个字节进行,类似SRAM,但每字节的写入周期要几毫秒,比SRAM长得多.E2PROM每个存储单元采则2个晶体管.其栅极氧化层比EPROM薄,因此具有电擦除功能.

    快除读写存储器(Flash Memory) F1ash Memory是在EPROM与E2PROM基础上发展起来的,其读写过程和E2PROM不同,F1ash Memory的读写操作一般是以块为单位.


三、主存储器和CPU的连接
??1个存储器的芯片的容量是有限的,它在字数或字长方面与实际存储器的要求都有很大差距,所以需要在字向和位向进行扩充才能满足需要.根据存储器所需的存储容量和所提供的芯片的实际容量,可以计算出总的芯片数.一个存储器的容量为M×N位,若使用L×K位存储器芯片,那么,这个存储器共需要M/L×N/K存储器芯片.


    位扩展
    ??位扩展指的是用多个存储器器件对字长进行扩充.位扩展的连接方式是将多片存储器的地址,片选己,读写控制端R/W可相应并联,数据端分别引出.字扩展
    ??字扩展指的是增加存储器中字的数量。 静态存储器进行字扩展时,将各芯片的地址线,数据线,读写控制线相应并联,而由片选信号来区分各芯片的地址范围。字位扩展
    ??实际存储器往往需要字向和位向同时扩充。

七、高速缓冲存储器(Cache)


    问题的提出
    避免 CPU “空等” 现象
    CPU 和主存(DRAM)的速度差异

    程序访问的局部性

    ??从大量的统计中得到的一个规律是,程序中对于存储空间90%的访问局限于存储空间的10%的区域中,而另外10%的访问则分布在存储空间的其余90%的区域中.这就是通常说的局部性原理.访存的局部性规律包括两个方面:

    时间局部性:如果一个存储项被访问,则可能该项会很快被再次访问.

    空间局部性:如果一个存储项被访问,则该项及其邻*的项也可能很快被访问.

    Cache的基本工作原理

    ??Cache通常由两部分组成,块表和快速存储器。其工作原理是:处理机按主存地址访问存储器,存储器地址的高段通过主存-Cache地址映象机构借助查表判定该地址的存储单元是否在Cache中,如果在,则Cache命中,按Cache地址访问Cache.否则,Cache不命中,则需要访问主存,并从主存中调入相应数据块到Cache中,若Cache中已写满,则要按某种算法将Cache中的某一块替换出去,并修改有关的地址映象关系.

    ??从这个工作原理我们可以看出,它已经涉及到了两个问题.首先是定位,然后是替换的问题.
    Cache的存在对程序员是透明的.其地址变换和数据块的替换算法均由硬件实现.通常Cache被集成到CPU内以提高访问速度.

    Cache和主存之间的映射方式

    因为处理机访问都是按主存地址访问的,而Cache的空间远小于主存,如何知道这一次的访问内容是不是在Cache中,在Cache中的哪一个位置呢? 这就需要地址映象,即把主存中的地址映射成Cache中的地址。让Cache中一个存储块(空间)与主存中若干块相对应,如此,访问一个主存地址时,就可以对应地知道在cache中哪一个地址了。地址映象的方法有三种:直接映象,全相联映象和组相联映象.

    直接映象就是将主存地址映象到Cache中的一个指定地址。任何时候,主存中存储单元的数据只能调入到Cache中的一个位置,这是固定的,若这个位置已有数据,则产生冲突,原来的块将无条件地被替换出去.

    全相联映象就是任何主存地址可映象到任何Cache地址的方式。在这种方式下,主存中存储单元的数据可调入到Cache中的任意位置。只有在Cache中的块全部装满后才会出现块冲突。

    组相联映象指的是将存储空间的页面分成若干组,各组之间的直接映象,而组内各块之间则是全相联映象.

    Cache中主存块的替换算法


??在直接映象方式下,不存在块替换的算法,因为每一块的位置映象是固定的,需要哪一块数据就可直接确定地将该块数据调入上层确定位置。而其他两种映象就存在替换策略的问题,就是要选择替换到哪一个Cache块,即替换算法。


?? 随机算法RAND
??随机法是随机地确定被替换的块,比较简单,可采用一个随机数产生器产生一个随机的被替换的块,但它也没有根据访存的局部性原理故不能提高Cache的命中率。


?? 先进先出FIFO算法
??(1)选择最早装入上层的页作为被替换的页
??(2)实现方便,利用了主存历史的信息
??(3)不能正确反映程序局部性原理,命中率不高,可能出现一种异常现象.


??*期最少使用法LRU
??(1)选择*期最少访问的页作为被替换的页
??(2)比较正确反映程序局部性,利用访存的历史信息,命中率较高
??(3)实现较复杂


    Cache写策略

??对Cache的写操作,情况比读操作要复杂一些.由于写入Cache时,并没有写入主存,因此就出现Cache和主存数据不一致的情况.如何处理Cache和主存不一致的方法就称为更新策略.


(1)写回法


1)是指在CPU执行写操作时,信息只写入Cache中,仅当需要替换时,才将改写过的Cache块先送回主存(写回),然后再调块(设置dirty位)


2)有利于省去许多将中间结果写入主存的无谓开销.


3)需设修改位增加Cache的复杂性


(2)全写法(写直达法)


1)在写操作时,将数据同时写入Cache和主存


2)实现开销小,简单


3)为了写中间结果浪费了不少时间


八、虚拟存储器


    虚拟存储器的基本概念

??虚拟存储器是主存的扩展,虚拟存储器的空间大小取决于计算机的访存能力而不是实际外存的大小,实际存储空间可以小于虚拟地址空间.从程序员的角度看,外存被看作逻辑存储空间,访问的地址是一个逻辑地址(虚地址),虚拟存储器使存储系统既具有相当于外存的容量又有接*于主存的访问速度.
??虚拟存储器的访问也涉及到虚地址与实地址的映象,替换算法等,这与Cache中的类似,前面我们讲的地址映象以块为单位,而在虚拟存储器中,地址映象以页为单位.设计虚拟存储系统需考虑的指标是主存空间利用率和主存的命中率.
??虚拟存储器与Cache存储器的管理方法有许多相同之处,它们都需要地址映象表和地址变换机构.但是二者也是不同的.


虚拟存储器的三种不同管理方式:按存储映象算法,分为段式,页式和段页式等,这些管理方式的基本原理是类似的.


    页式虚拟存储器

页式管理:是把虚拟存储空间和实际空间等分成固定大小的页,各虚拟页可装入主存中的不同实际页面位置.页式存储中,处理机逻辑地址由虚页号和页内地址两部分组成,实际地址也分为页号和页内地址两部分,由地址映象机构将虚页号转换成主存的实际页号.


页式管理用一个页表,包括页号,每页在主存中起始位置,装入位等.页表是虚拟页号与物理页号的映射表.页式管理由操作系统进行,对应用程序员的透明的。


    段式虚拟存储器

段式管理: 把主存按段分配的存储管理方式.它是一种模块化的存储管理方式,每个用户程序模块可分到一个段,该程序模块只能访问分配给该模块的段所对应的主存空间.段长可以任意设定,并可放大和缩小.


系统中通过一个段表指明各段在主存中的位置.段表中包括段名(段号),段起点,装入位和段长等.段表本身也是一个段.段一般是按程序模块分的.


    段页式虚拟存储器

段页式管理:是上述两种方法的结合,它将存储空间按逻辑模块分成段,每段又分成若干个页,访存通过一个段表和若干个页表进行.段的长度必须是页长的整数倍,段的起点必须是某一页的起点.


    TLB(快表)

??在虚拟存储器中进行地址变换时,需要虚页号变换成主存中实页号的内部地址变换,这一般通过查内页表实现.当表中该页对应的装入位为真时,表示该页在主存中,可按主存地址问主存;如果装入位为假时,表示该页不在存储器中,就产生页失效中断,需从外存调入页.


??中断处理时先通过外部地址变换,一般通过查外页表,将虚地址变换为外存中的实际地址,到外存中去选页,然后通过I/0通道调入内存.当外存页面调入主存中时还存在一个页面替换略的问题.


??提高页表的访问速度是提高地址变换速度的关键.因为,每次访存都要读页表,如果页存放在主存中,就意味着访存时间至少是两次访问主存的时间,这样查表的代价大大.只有内部地址变换速度提高到使访问主存的速度接*于不采用虚拟存储器时的访主存速度时,虚拟存储器才能实用.


??根据访存的局部性,表内各项的使用的概率不是均匀分布的.在一段时间内,可能只用表中的很少几项,因此应重点提高使用概率高的这部分页表的访问速度,可用快速硬件构成全表小得多的部分表格,而将整个表格放在主存中,这就引出了快表和慢表的概念和技术.这样,虚地址到实地址的变换方法如后图所示.


??查表时,根据虚页表同时查找快表和慢表,当在快表中查到该虚页号时,就能很快找到对应的实页号,将其送入主存实地址寄存器,同时使慢表的查找作废,这时主存的访问速度没降低多少.


??如果在快表中查不到,则经过一个访主存的时间延迟后,将从慢表中查到的实页送入实地址寄存器,同时将此虚页号和对应的实页号送入快表,这里也涉及到用一个替换算法从快表中替换出一行.


快表的存在对所有的程序员都是透明的.


第五章 输入输出系统
5.1 概述

一、 输入输出系统的发展概况

二、 输入输出系统的组成

三、 I/O设备与主机的联系方式


1.I/O编址方式


通常将I/O设备码视为地址码,对I/O地址码的编址可采用两种方式:


(1)统一编址: 用取数、存数指令。就是将I/O地址看作是存储器地址的一部分.如在64K地址的存储空间中,划出8K地址作为I/O的地址,.凡是在这8K地址范围内的访问,就是对 I/O的访问,所用的指令与访存指令相似。


(2)不统一编址: 有专门的I/O 指令,就是指I/O地址和存储器地址是分开的,所有对I/O的访问必须有专用的I/O指令。


显然统一编址占用了存储空间,减少了主存容量,但无需专用的I/O指令。不统一编址由于不占用主存空间,故不影响主存容量,但需设 I/O专用指令.因此,设计机器时,需根据实际情况权衡考虑选取何种编址方式.


2.设备选址
用设备选择电路识别是否被选中。由于每台设备都赋予一个设备号,因此,当要启动某一设备时,可由I/O指令的设备码字段直接指出该设备的设备号.。通过接口电路中的设备选择电路,便可选中要交换信息的设备。


3.传送方式


并行传送
串行传送


4.联络方式 三种联络方式


(1)立即响应方式


(2)异步工作采用应答信号联络: I/O设备与主机工作速度不匹配时,通常采用异步工作方式。一应一答。


(3)同步工作采用同步时标联络


5.I/O与主机的连接方式


I/O设备与主机的连接方式通常有两种:辐射式总线式.


采用辐射式连接方式时,要求每台 I/O设备都有一套控制线路和一组信号线,因此所用的器件和连线较多,对 I/O设备的增删都比较困难.这种连接方式大多出现在计算机发展的初期阶段.


采用总线连接方式时,通过一组总线(包括地址线,数据线,控制线等),将所有的I/O设备与主机连接。这种连接方式是现代大多数计算机系统所采用的方式。


为了进一步提高CPU的工作效率,又出现了DMA(Direct Memory Access)技术,其特点是I/O 与主存之间有一条直接数据通路,I/O设备可以与主存直接交换信息,使CPU 在I/O与主存交换信息时,能继续完成自身的工作,故其资源利用率得到了进一步的提高。


二、I/O设备与主机信息传送的控制方式
(1)程序查询方式
(2)程序中断方式
(3)DMA方式


5.2 I/O设备

一、外部设备大致分三类
1、人机交互设备: 键盘、鼠标、打印机
2、计算机信息存储设备: 磁盘、光盘、磁带
3、机?机通信设备: 调*獾髌
二、输入设备
1、键盘: 按键、判断哪个键按下
2、鼠标: 机械式:金属球; 光电式: 光电转换器
3、触摸屏


三、输出设备
1、显示器
2、打印机


四、其他
1、A/D、D/A: 模拟/数字转换器
2、终端 : 由键盘和显示器组成
3、汉字处理 :汉字输入、汉字存储、汉字输出


5.3 I/O接口

一、概述
接口可以看作是两个系统或两个部件之间的交接部分,既可以是两种硬设备之间的连接电路,也可以是两份软件之间的共同逻辑边界。I/O接口通常是指主机与I/O设备之间设置的一个硬件电路及其相应的软件控制。


二、接口的功能和组成
1、I/O接口的基本功能是:


(1)实现设备的选择


(2)实现数据缓冲达到速度匹配


(3)实现数据串并格式转换


(4)实现电*转换


(5)传送控制命令


(6)反映设备的状态(“忙”,“就绪”,“中断请求”)


2、接口的组成
(1)设备选择电路
(2)命令寄存器、命令译码器
(3)数据缓冲寄存器
(4)设备状态标记


5.4 I/O设备与主机信息传送的控制方式

一、程序查询方式


程序查询方式的核心问题是每时每刻需要不断查询I/O设备是否准备好.CPU不断地询问外设是否准备好:如果准备好,CPU执行IO操作;否则,CPU一直等待.CPU大部分时间处于等待状态,利用率不高。


二、 程序中断方式


1、中断的基本概念


计算机在执行程序的过程中,当出现异常情况或者特殊情况时,CPU停止当前程序的运行,转向对这些异常情况或者特殊情况的处理,处理结束之后再返回到现行程序的间断处继续运行,该过程就是中断.


2、中断响应过程


(1)当多个中断源向CPU提出中断请求时,CPU在任何一个时刻只能接受一个中断源的请求,所以,当多个中断源同时请求时,CPU必须对各个中断源的请求进行排队,且只能接受级别最高的中断源的请求,不允许低级别的中断源中断正在运行的中断服务程序.


(2)每个设备都配备一个中断请求触发器和中断屏蔽触发器,当中断请求触发器为“1”时,表示该设备向CPU提出中断请求,如果中断屏蔽触发器为“1”时,表示该设备被屏蔽,即封锁其中断源的请求.


(3)当多个中断源同时向CPU提出请求,CPU需要对这些中断源的请求进行排队,也称中断判优,有两种判优的方法:


1)查询法


由测试程序按一定优先排队次序检查各个设备的“中断触发器”(或称为中断标志),当遇到第一个“1”标志时,即找到了优先进行处理的中断源,通常取出其设备码,根据设备码转入相应的中断服务程序.


2)串行排队链法


由硬件组成一个串行的优先链,称作排队链.


一旦CPU确定接受某个中断源的请求,就需要执行该设备的中断服务程序,因此需要找到中断服务程序的入口地址.入口地址的寻找可以用软件或硬件的方法实现.硬件向量法就是通过向量地址来寻找设备的中断服务程序的入口地址.中断向量地址形成部件可以通过向接受请求的中断源发送中断响应信号,然后由被响应的设备回送设备码,根据设备码来产生中断向量地址.


3、中断处理过程


中断处理过程可分以下几个步骤:


(1)关中断


进入不可再次响应中断的状态,由硬件自动实现.因为接下去要保存断点,保存现场.在保存现场过程中,即使有更高级的中断源申请中断,CPU也不应该响应;否则,如果现场保存不完整,在中断服务程序结束之后,也就不能正确地恢复现场并 继续执行现行程序.


(2)保存断点和现场.


为了在中断处理结束后能正确地返回到中断点,在响应中断时,必须把当前的程序计数器PC中的内容(即断点)保存起来.


现场信息一般指的是程序状态字,中断屏蔽寄存器和CPU中各寄存器的内容.


(3)判别中断源,转向中断服务程序.


在多个中断源同时请求中断的情况下,本次实际响应的只能是优先权最高的那个中断源.所以,需进一步判别中断源,并转入相应的中断服务程序入口.


(4)开中断.


因为接下去就要执行中断服务程序,开中断将允许更高级中断请求得到响应,实现中断嵌套.


(5)执行中’断服务程序.


不同中断源的中断服务程序是不同的,实际有效的中断处理工作是在此程序段中实现的.


(6)退出中断.


在退出时,又应进入不可中断状态,即关中断,恢复现场,恢复断点,然后开中断,返回原程序执行.


4、多重中断和中断屏蔽的概念.


多重中断:是指在处理某一个中断过程又发生了新的中断请求,从而中断该服务程序的执行,又转去进行新的中断处理.这种重叠处理中断的现象又称为中断嵌套.


中断屏蔽:当产生中断请求后,用程序方式有选择地封锁部分中断,而允许其余部分中断仍得到响立,称为中断屏蔽.


实现方法是为每个中断源设置一个中断屏蔽触发器来屏蔽该设备的中断请求.具体说,用程序方法将该触发器置“1”,则对应的设备中断被封锁,若将其置“0”,才允许该设备的中断请求得到响应.由各设备的中断屏蔽触发器组成中断屏蔽寄存器.


三、DMA方式


1、DMA是I/O设备与主存储器之间由硬件组成的直接数据通路,用于高速I/O设备与主存之间的成组数据传送.


2、数据传送是在DMA控制器控制下进行的,由DMA控制器给出当前正在传送的数据字的主存地址,并统计传送数据的个数以确定一组数据的传送是否已结束.在主存中要开辟连续地址的专用缓冲器,用来提供或接收传送的数据.在数据传送前和结束后要通过程序或中断方式对缓冲器和DMA控制器进行预处理和后处理。


3、DMA 方式与程序中断方式的比较


特性中断方式DMA方式
数据传送程序硬件
响应时间指令执行结束存取周期结束
处理异常情况不能
中断请求传送数据后处理
优先级

4、DMA控制器的组成;


(1)主存地址寄存器(MAR) : 寄存器初始值为主存缓冲区的首地址.


(2)外围设备地址寄存器(ADR ) : 该寄存器存放I/O设备的设备码,具体内容取决于I/O设备的数据格式和地址字编址方式.


(3)字数计数器(WC) : 该计数器对传送数据的总字数进行统计.


(4) 控制与状态寄存器(CSR) : 该寄存器用来存放控制字和状态字.


(5) 数据缓冲寄存器(DBR): 该寄存器用来暂存I/O设备与主存传送的数据.


(6)中断机构 : 当字计数器溢出(全“0”)时,表示一批数据交换完成,由“溢出信号”通过中断机构向CPU提出中断请求,请求CPU作DMA操作后处理.


5、DMA传送过程.


(1)DMA预处理


在进行DMA数据传送之前要用程序做一些必要的准备工作.先由CPU执行几条输入输出指令,测试设备状态,向DMA控制器的设备地址寄存器中送入设备地址并启动设备,在主存地址寄存器中送入交换数据的主存起始地址,在数据字数寄存器中送入交换的数据个数.在这些工作完成之后,CPU继续执行原来的程序.


(2)DMA控制I/O设备与主存之间的数据交换


I/O设备启动后,若为输入数据,则要进行以下操作:


1)从输入介质读入一个字到数据缓冲寄存器DBR中.


2)向CPU发DMA请求,在取得总线控制权后,将DBR中的数据送人主存的数据寄存器.


3)将DMA中的MAR内容送主存的地址寄存器,启动写操作,将数据写入主存.


4)将WC内容减1,将MAR的内容加1,给出下一个字的地址.


5)判断WC是否为“0”,若不是,说明还有数据需要传送,检查无错后准备下一字的输入.若WC为0,表明一组数据已传送完毕,此时应置结束标志,向CPU发中断请求.


(3) CPU中断原程序进行后处理


若需继续交换数据,则又要对DMA控制器进行初始化;若不需交换数据,则停止外设;若为出错,则转错误诊断及处理程序.


6、DMA三种工作方式:


(1)CPU暂停方式


主机响应DMA请求后,让出存储总线,直到一组数据传送完毕后,DMA控制器才把总线控制权交还给CPU


(2)CPU周期窃取方式


DMA控制器与主存储器之间传送一个数据,占用(窃取)一个或几个CPU周期,即CPU暂停工作一个或几个周期,然后继续执行程序


(3)CPU和DMA交替工作方式


当CPU的工作周期比主存访问时间长时,使用这种方式.这种方式不需要总线使用权的申请,建立和归还过程.将CPU周期分成C1和C2两个周期,其中C1专门用于给DMA访问主存,C2提供给CPU访问主存.总线使用权通过C1和C2分别控制.CPU和DMA各自有自己的访问地址寄存器,数据寄存器和读写信号。


第六章 计算机的运算方法
6.1 无符号数和有符号数

一、 无符号数
无符号数就是指正整数,机器字长的全部位数均用来表示数值的大小,相当于数的绝对值。


一、 有符号数


1、机器数与真值
带符号数是指在计算机中将数的符号数码化。在计算机中,一般规定二进制的最高位为符号位,最高位为“0”表示该数为正,为“1”表示该数为负。这种在机器中使用符号位也被数码化的数称为机器数,把带‘+’或‘-’符号的数称为真值。


根据符号位和数值位的编码方法不同,机器数分为原码,补码反码


2、原码表示法


机器数的最高位为符号位,0表示正数,1表示负数,数值跟随其后,并以绝对值形式给出。这是与真值最接*的一种表示形式。为了区别整数和小数,约定整数的符号位与数值位之间用逗号隔开;小数的符号位与数值位之间用小数点隔开。


整数:
x = + 1110, x原码 = 0,1110;
x = - 1110,x原码 = 1,1110;
小数:
x = 0.1101, x原码 = 0.1101;
x = -0.1101, x原码 = 1.1101;

3、补码表示法
(1)补数
对模12来说,-5可以用其补数+7表示。
一个负数可用它的正补数来代替,而这个正补数可以用模加上负数本身求得。
一个正数和一个负数互为补数时,它们的绝对值之和即为模数。
正数的补数即该正数本身。
(2)补码
x=+1010,则x的补码位0,1010
x=-0.1101,则x的补码为1.0011。
当真值为负时,补码可由原码除符号位外每位取反,末位加1求得。


4、反码表示法
反码通常用来作为由原码求补码或者由补码求原码的中间过渡。


5、三种机器数总结
(1)三种机器数的最高位均为符号位。符号数和数值部分之间可用“.”(小数)或“,”(整数)隔开。
(2)当真值为正时,原码、补码和反码的表示形式均相同,即符号位用“0”表示,数值部分与真值相同。
(3)当真值为负时,原码、补码和反码的表示形式不同,但其符号位都用“1”表示,而数值部分有这样的关系,即补码是原码的“求反加1”,反码是原码的“每位求反”。
6、移码
同一个真值的移码和补码仅差一个符号位,若将补码的符号位由“0”改为“1”,或从“1”改为“0”,即可得到该真值的移码。


6.2 数的定点表示和浮点表示

一、定点表示
小数点固定在某一位置的数为定点数,当小数点位于数符和第一数值位之间时,机器内的数为纯小数;当小数点位于数值位之后时,机器内的数为纯整数。采用定点数的机器称为定点机。
二、浮点表示
1、浮点数是指小数点位置可浮动的数据,通常以下式表示:
N = S × r的j次方
式中,S为尾数,j为阶码,r是基数。在计算机中,基数可取2、4、8或16等。
2、浮点数由阶码j和尾数S表示,阶码是整数,阶符和阶码的位数m合起来反应浮点数的表示范围及小数点的实际位置;尾数是小数,其位数n反映了浮点数的精度;
3、浮点数的规格化
将尾数最高位为1的浮点数称为规格化数,浮点数规格化后,其精度最高。
当基数为2时,尾数最高位为1的数为规格化数。规格化时,尾数左移一位,阶码减一;尾数右移一位,阶码加一。


6.3 定点运算

一、移位运算
1、算数移位规则
正数:原码、补码、反码 填0;
负数:原码 填0; 补码 左移填0,右移填1; 反码 填1;
2、
对于正数,三种机器数移位后符号均不变,左移时最高数位丢1,结果出错;右移时最低位丢1,影响精度。
对于负数,三种机器数算数移位后符号位均不变。负数原码左移时,高位丢1,结果出错;右移时,低位丢1,影响精度。负数的补码左移时,高位丢0,结果出错
3、算术移位和逻辑移位的区别
算术移位:有符号数的移位。
逻辑移位:无符号数的移位。
逻辑左移:低位填0,高位移丢。
逻辑右移:高位填0,低位移丢。


二、加减法运算
1、补码加减运算公式
2、例题:

3、溢出判断
当运算结果超出机器数所能表示的范围时,称为溢出.显然,两个异号数相加或两个同号数相减,其结果是不会溢出的.仅当两个同号数相加或者两个异号数相减时,才有可能发溢出的情况,一旦溢出,运算结果就不正确了,因此必须将溢出的情况检查出来.判别方法有三种:


1〉当符号相同的两数相加时,如果结果的符号与加数(或被加数)不相同,则为溢出.


2〉当任意符号两数相加时,如果C=Cf,运算结果正确,其中C为数值最高位的进位,Cf为符号位的进位.如果C≠Cf ,则为溢出,所以溢出条件=C?Cf .


3〉采用双符号fs2fs1.正数的双符号位为00,负数的双符号位为11.符号位参与运算,当结果的两个符号位甲和乙不相同时,为溢出.所以溢出条件= fs2?fs1 ,或者溢出条件= fs2fs1 + fs2fs1


三、乘法运算


四、除法运算


五、算数逻辑单元
1、ALU电路 (组合逻辑电路)
针对每一种算术运算,都必须有一个相对应的基本硬件配置,其核心部件是加法器和寄存器。当需要完成逻辑运算时,势必需要配置相应的逻辑电路,而ALU电路是既能完成算术运算又能完成逻辑运算的部件。


ALU部件是运算器中的主要组成部分,又称多功能函数发生器,主要用于完成各种算术运算和逻辑运算.


ALU的算术运算部件包含加法器,减法器,乘法器,除法器,增量器(+1),减量器(-1),BCD码运算器等组件.


ALU的主要工作是根据CPU指令要求执行各种指定运算,如加法,减法,乘法,除法,比较,逻辑移位等操作.


2、快速进位链
(1)并行加法器
并行加法器由若干个全加器组成,为了提高运算速度,减少延迟时间,可以采用并行进位法,也叫提前进位或先行进位.


(2)串行进位链:是指并行加法器中的进位信号采用串行传递。


(3)并行进位链:是指并行加法器中的进位信号是同时产生的,又称先行进位、跳跃进位等。
1)单重分组跳跃进位:就是将n位全加器分成若干小组,小组内的进位同时产生,小组与小组之间采用串行进位,这种进位又有组内并行、组间串行之称。
2)双重分组跳跃进位:就是将n位全加器分成若干大组,每个大组又分成若干小组,而每个大组内所包含的各个小组的最高位进位是同时产生的,大组与大组间采用串行进位。


第七章 指令系统
7.1 机器指令

人们*惯把每一条机器语言的语句称为机器指令,而又将全部机器指令的集合称为机器的指令系统。
一、 指令的一般格式
1、指令的基本格式


计算机是通过执行指令来处理各种数据的.为了指出数据的来源,操作结果的去向及所执行的操作,一条指令必须包含下列信息:


(1)操作码,具体说明了操作的性质及功能.


(2)操作数的地址.


(3)操作结果的存储地址.


(4)下一条指令的地址.


从上述分析可知,一条指令实际*街中畔⒓床僮髀牒偷刂仿搿


操作码(operation code)用来表示该指令所要完成的操作(如加,减,乘,除,数据传送等),其长度取决于指令系统中的指令条数.如操作码占7位,则该机器最多包含27=128条指令.


地址码用来描述该指令的操作对象,或直接给出操作数或指出操作数的存储器地址或寄存器地址(即寄存器名).


操作码的长度不固定会增加指令译码和分析难度,使控制器的设计复杂.


2、指令的执行过程
(1)读取指令


指令地址(在PC中)送到地址寄存器


读主存,读出内容(指令代码)送入指令寄存器IR


(2) 分析指令


形成下一条指令的地址并送到PC中


(3)执行指令


用一到几个执行步骤,完成指令的运算、操作功能,


不同的指令操作步骤和具体运算、操作功能各不相同


检查有无中断请求,无中断请求、进入下一条指令的执行过程


3、定长操作码指令格式
(1)零地址指令
格式: OP


OP??操作码


指令中只有操作码,而没有操作数或没有操作数地址,这种指令有两种可能:


1)无需任何操作数,如空操作指令,停机指令等.


2)所需的操作数是默认的.如堆栈结构计算机的运算指令,所需的操作数默认在堆栈中,由堆栈指针SP隐含指出,操作结果仍然放回堆栈中.又如Intel 8086的字符串处理指令,源,目的操作数分别默认在源变址寄存器SI和目的变址寄存器DI所指定的存储器单元中.


(2)一地址指令


格式: OP A


OP??操作码


A??操作数的存储器地址或寄存器名


指令中只给出一个地址,该地址既是操作数的地址,又是操作结果的存储地址.如加1,减1和移位等单操作数指令均采用这种格式,对这一地址所指定的操作数执行相应的操作后,产生的结果又存回该地址中.


在某些字长较短的微型机中(如早期的Z80,Intel8080,MC6800等),大多数算术逻辑指令也采用这种格式,第一个源操作数由地址码A给出,第二个源操作数在一个默认的寄存器中,运算结果仍送回到这个寄存器中,替换了原寄存器内容,通常把这个寄存器称累加器.


(3)二地址指令


格式:OP A1 A2


OP??操作码


A1??第一个源操作数的存储器地址或寄存器地址。


A2??第二个源操作数和存放操作结果的存储器地址或寄存器地址。


这是最常见的指令格式,两个地址指出两个源操作数地址,其中一个还是存放结果的目的地址.对两个源操作数进行操作码所规定的操作后,将结果存入目的地址,在本例中即为A2指定的地址


(4)三地址指令


格式: OP A1 A2 A3


OP??操作码


A1??第一个源操作数的存储器地址或寄存器地址


A2??第二个源操作数的存储器地址或寄存器地址


A3??操作结果的存储器地址或寄存器地址


其操作是对A1,A2指出的两个源操作数进行操作码(OP)所指定的操作,结果存入A3中.


(5)多地址指令


在某些性能较好的大,中型机甚至高档小型机中,往往设置一些功能很强的,用于处理成批数据的指令,如字符串处理指令,向量,矩阵运算指令等.


为了描述一批数据,指令中需要多个地址来指出数据存放的首地址,长度和下标等信息。


4、扩展操作码指令格式


设某机器的指令长度为16位,包括4位基本操作码字段和三个4位地址字段,其格式下:


OP(4) ? A1(4) ? A2(4) ? A3(4)


4位基本操作码有16个码点(即有16种组合),若全部用于表示三地址指令,则只有16条.但,若三地址指令仅需15条,两地址指令需15条,一地址指令需15条,零地址指令需16条,共61条指令,应如何安排操作码?


显然,只有4位基本操作码是不够的,必须将操作码的长度向地址码字段扩展才行.


一种可供扩展的方法和步骤如下:


(1)15条三地址指令的操作码由4位基本操作码从0000~1110给出,剩下一个码点1111用于把操作码扩展到A1,即4位扩展到8位;


(2)15条二地址指令的操作码由8位操作码从11110000~11111110给出,剩下一个码点11111111用于把操作码扩展到A2,即从8位扩展到12位;


(3)15条一地址指令的操作码由12位操作码从111111110000~111111111110给出,剩下的一个码点111111111111用于把操作码扩展到A3,即从12位扩展到16位;


(4)16条零地址指令的操作码由16位操作码从1111111111110000~1111111111111111给出.


指令字长取决于操作码的长度、操作数地址的长度和操作数地址的个数.为了提高指令的运行速度和节省存储空间,通常尽可能的吧常用的指令(如数据传输指令、算逻运算指令等)设计成单字长或短字长格式的指令。


7.2 操作类型

一、指令操作类型
1、数据传送


数据传送包括寄存器与寄存器,寄存器与存储单元,存储单元与存储单元之间的传送


2、算术逻辑操作


这操作可实现算术运算(加,减,乘,除,增1,减1,取负即求补)逻辑运算(与,或,非,异或)


3、移位


移位可分为算术移位,逻辑移位和循环移位三种


4、转移


(1)无条件转移


不受任何约束条件直接把程序转移到下一条需执行指令的地址


(2)条件转移


根据当前指令的执行结果决定是否需要转移


(3)调用与返回


子程序可在多处被调用

子程序调用可出现在子程序中,即允许子程序嵌套

每个CALL指令都对应一条RETURN指令


CPU必须记住返回地址,使子程序能准确返回,返回地址存放在以下3处


寄存器内:机器内设有专用寄存器,专用于存放返回地址

子程序的入口地址内:

栈顶内:现代计算机都设有堆栈,执行RETURN指令后,便可自动从堆栈内取出应返回的地址。


(4)陷阱(Trap)与陷阱指令


其实是一种意外事故的中断,一般不提供给用户使用,作为隐指令,再出现故障时,由CPU自动产生并执行。


5、输入输出


对于I/O单独编址的计算机而言,通常设有输入输出指令,他完成从外设中的寄存器读入一个数据到CPU寄存器内,或将数据从CPU的寄存器输出至某外设的寄存器中


6、其它


包括等待指令、停机指令、空操作指令、开中断指令、关中断指令、置条件码指令等


7.3 寻址方式

寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令格式和指令功能。
寻址方式分为指令寻址数据寻址两大类。
一、指令寻址
1、 指令寻址
指令寻址分为顺序寻址跳跃寻址两种.


顺序寻址可以通过程序计数器PC加1自动形成下一条指令的地址。
跳跃寻址则通过转移类指令实现,是通过对PC的运算得到新的下一条指令的地址。


二、数据寻址
1、数据寻址的概念
数据寻址的方式种类较多,在指令字中必须设一字段来指明属于哪一种寻址方式。指令的地址码字段通常都不代表操作数的真实地址,把它称为形式地址,记作A。操作数的真实地址称为有效地址,记作EA,它是由寻址方式和形式地址共同来确定的。
2、寻址方式:
(1)立即寻址


所需的操作数由指令的地址码部分直接给出,就称为立即数(或直接数)寻址方式.这种方式的特点是取指时,操作码和一个操作数同时被取出,不必再次访问存储器,提高了指令的执行速度.但是由于这一操作数是指令的一部分,不能修改,而一般情况下,指令所处理的数据都是在不断变化的(如上条指令的执行结果作为下条指令的操作数),故这种方式只能适用于操作数固定的情况.通常用于给某一寄存器或存储器单元赋初值或提供一个常数等.(图中“#”表示立即寻址的标记,A的位数限制了这类指令所能表述的立即数的范围)


(2)直接寻址


指令的地址码部分给出操作数在存储器中的地址.


(3)隐含寻址


操作数的地址隐含在操作码或者某个寄存器中.


(4)间接寻址


在寻址时,有时根据指令的地址码所取出的内容既不是操作数,也不是下一条要执行的指令,而是操作数的地址或指令的地址,这种方式称为间接寻址或间址.


(5)寄存器寻址


计算机的中央处理器一般设置有一定数量的通用寄存器,用以存放操作数,操作数的地址或中间结果.假如指令地址码部分给出某一通用寄存器地址,而且所需的操作数就在这一寄存器中,则称为寄存器寻址.通用寄存器的数量一般在几个至几十个之间,比存储单元少很多,因此地址码短,而且从寄存器中存取数据比从存储器中存取快得多,所以这种方式可以缩短指令长度,节省存储空间,提高指令的执行速度,在计算机中得到广泛应用.


(6)寄存器间接寻址 EA = ( Ri)有效地址在寄存器中


寄存器中给出的是操作数的地址,因此还需要访问一次存储器才能得到操作数.


(7)基址寻址


在计算机中设置一个专用的基址寄存器,或由指令指定一个通用寄存器为基址寄存器.操作数的地址由基址寄存器的内容和指令的地址码A相加得到


(8)变址寻址


指令地址码部分给出的地址A和指定的变址寄存器X的内容通过加法器相加,所得的和作为地址从存储器中读出所需的操作数.这是几乎所有计算机都采用的一种寻址方式.


(9)相对寻址


把程序计数器PC的内容(即当前执行指令的地址)与指令的地址码部分给出的位移量(disp)之和作为操作数的地址或转移地址,称为相对寻址.


主要用于转移指令,执行本条指令后,将转移到(PC)+disp,(PC)为程序计数器的内容.相对寻址有两个特点:


1〉转移地址不是固定的,它随着PC值的变化而变化,并且总是与PC相差一个固定值disp,因此无论程序装人存储器的任何地方,均能正确运行,对浮动程序很适用.


2〉位移量可正,可负,通常用补码表示.如果位移量为n位,则这种方式的寻址范围在


(PC)-2n-1 ~(PC)+2n-1-1之间

计算机的程序和数据一般是分开存放的,程序区在程序执行过程中不允许修改.在程序与数据分区存放的情况下,不用相对寻址方式来确定操作数地址.


(10)堆栈寻址


在一般计算机中,堆栈主要用来暂存中断和子程序调用时现场数据及返回地址,用于访问堆栈的指令只有压入(即进栈)和弹出(即退栈)两种,它们实际上是一种特殊的数据传送指令:


压入指令(PUSH)是把指定的操作数送入堆栈的栈顶;


弹出指令(POP)的操作刚好相反,是把栈顶的数据取出,送到指令所指定的目的地.


一般的计算机中,堆栈从高地址向低地址扩展,即栈底的地址总是大于或等于栈顶的地址(也有少数计算机刚好相反)当执行压入操作时,首先把堆栈指针(SP)减量(减量的多少取决于压入数据的字节数,若压入一个字节,则减1;若压入两个字节,则减2,以此类推),然后把数据送人SP所指定的单元;当执行弹出操作时,首先把sp所指定的单元(即栈顶)的数据取出,然后根据数据的大小(即所占的字节数)对SP增量.


三、设计指令格式应考虑的各种因素


指令系统集中反映了机器的性能,又是程序员编程的依据,高档机必须能兼容低档机的程序运行,称之为“向上兼容”.


指令格式集中体现了指令系统的功能.为此,在确定指令系统时,必须从以下几个方面综合考虑.


① 操作类型:包括指令数及操作的难易程度


② 数据类型:确定哪些数据类型可以参加操作


③ 指令格式:包括指令字长、操作码位数、地址码位数、地址个数、寻址方式类型、以及指令字长和操作码位数是否可变等.


④ 寻址方式:包括指令和操作数具体有哪些寻址方式.


⑤ 寄存器个数:寄存器的多少直接影响指令的执行时间.


四、CISC和RISC的基本概念
1.CISC(复杂指令集计算机)


随着VLSI技术的发展,计算机的硬件成本不断下降,软件成本不断提高,使得人们热衷于在指令系统中增加更多的指令和复杂的指令,来提高操作系统的效率,并尽量缩短指令系统与高级语言的语义差别,以便于高级语言的编译和降低软件成本.


另外,为了做到程序兼容,同一系列计算机的新机器和高档机的指令系统只能扩充而不能减去任意一条,因此,促使指令系统越来越复杂,某些计算机的指令多达几百条.例如,DEC公司的VAX 11/780计算机有303条指令,18种寻址方式,我们称这些计算机为复杂指令系统计算机(complex instruction set computer,简称CISC).Intel公司的180X86微处理器,IBM公司的大,中计算机均为CISC.


2.RISC(简单指令集计算机)


1975年IBM公司开始研究指令的合理性问题,IBM的John cocke 提出了RISC的想法. 对CISC的测试表明:
最长使用的是一些简单指令,占指令总数的20%,但在程序中出现的频率却占80%. 而占20%的复杂指令,为实现其功能而设计的微程序代码却占总代码的80%.CISC研制时间长,成本高,难于实现流水线;因此出现了RISC技术。


第八章 CPU的结构和功能
8.1 CPU的结构

一、CPU功能
计算机对信息进行处理(或计算)是通过程序的执行而实现的,程序是完成某个确定算法的指令序列,要预先存放在存储器中。控制器的作用是控制程序的执行,它必须具有以下基本功能:
1、取指令
控制器必须具备能从存储器中取出指令的功能。
2、分析指令
分析指令包括两部分内容:其一,分析此指令要完成什么操作,即控制器需发出什么操作命令;其二,分析参加这次操作的操作数地址,即操作数的有效地址。
3、执行指令
执行指令就是根据分析指令产生的“操作命令”和“操作数地址”的要求,形成操作控制信号序列,通过对运算器、存储器以及I/O设备的操作,执行每条指令。
4、控制程序输入及结果的输出
5、总线管理
6、处理异常情况和特殊请求


二、CPU的寄存器
1、用户可见寄存器:用户可以对这类寄存器编程,以及通过优化使CPU因使用这类寄存器而减少对主存的访问次数。
(1)通用寄存器:存放操作数,可作某种寻址方式所需的专用寄存器。
(2)数据寄存器:存放操作数(满足各种数据类型)
(3)地址寄存器:存放地址,其位数应满足最大的地址范围。
(4)条件码寄存器:存放条件码,可作为程序分支的依据。


2、控制和状态寄存器:用户不可对这类寄存器编程,它们被控制部件使用,以控制CPU的操作,也可被带有特权的操作系统程序使用,从而控制



友情链接: