计算机组成原理 知识结构导图

计算机组成原理

计算机组成原理

计算机

组成

  • 存储器

    • 分类

      • 作用

        • 主存 MM:存放 运行时 所需的大量 程序和数据。CPU可以直接访问的存储器,也可以和Cache 交换数据

          • MAR(地址寄存器):找到所选的存储单元,用于寻址,其位数对应存储单元的个数,其长度与PC长度相等。
          • MDR(数据寄存器):暂存存储器读写信息,其位数和存储字长相等,一般未字节的二次幂的整数倍
          • 时序控制逻辑:产生各种时序信号
        • 辅存:存放 暂时不用 的 程序和数据,以及一些需要 永久保存的信息。不能与CPU交换信息。

        • Cache(高速缓冲存储器):存储器层次顶层,位于主存 和 CPU 之间,用于存放 正在执行 的 程序段和数据,以便CPU可使用,一般集成在CPU中,通常由SRAM构成。
          Cache与CPU之间数据交换单位为字;Cache与主存之间数据交换单位为Cache块(行)

          • 原理

            • 程序访问局部性原理

              • 时间局部性:最近未来要用的信息,很可能是现在正在使用的信息(程序存在循环)
              • 空间局部性:最近未来要用的信息,很可能与现在正在使用的信息在存储空间上邻近(指令顺序存放、执行)
            • 工作原理:仅保存主存中最活跃的若干块的副本。Cache和主存划分为相等的块,Cache块(Cache行)由若干字节组成,块长(Cache行长)为块的长度。Cache容量(块数) < 主存容量(块数)

              		- 读请求:访存地址若在Cache命中,就将此地址转换为Cache地址,即不访问主存;
              

若不命中,需访问主存,并一次性从主存调入Cache;又若Cache满,需替换算法
- 写请求:需按写策略(Cache与主存内容存在不一致的情况);

			- 映射方式

				- 直接映射:主存的任何一块只能装入Cache唯一的位置,若该地址有内容将替换。实现简单,不灵活,冲突概率最高,空间利用率最低

访存过程:
(1)通过访存地址确定行号,在Cache对应 行标记 和 主存地址标记 进行比较,若相等且有效位为 1,则命中,根据 块内地址 从Cache行中存取信息。
(2)若不命中,从主存读出该地址所在的一块信息送入Cache,将 有效位 置1,并 标记 设置为地址标记 同时该地址内容送至 CPU。
- 全相联映射:主存中的任何一块可以装入Cache中的任何位置,每行的标记用于指出该行取自于主存的地址块,然而需要 CPU访存是与所有Cache行标记 进行比较,造成速度慢,成本高,但冲突概率低,空间利用率高、命中率高。
- 组相联映射:将Cache空间分成大小相同的组,主存的任何一块都可装入一组(直接)内任意位置(全相联)。即 组间 直接映射,组内 全相联映射。
访存过程:
(1)找到访存地址中间的组号 以 确定对应的Cache组;
(2)将对应Cache组中每个行的标记与主存地址的高位标记进行比较;
(3)若有一个 相等 且 有效位 为 1,则命中,根据 主存地址的块内地址 在Cache行中存取信息;
(4)若都不相等 或 有效位 为 0,则未命中,CPU从主存读出该地址所在的一块信息 送到对应Cache组的一个空闲行中,并将 有效位 置 1,设置标记,同时将 改地址内容送至CPU

			- 替换算法

				- 随机算法(RAND):随机地确定替换Cache块,简单,命中率低,未依据程序访问的局部性原理
				- 先进先出算法(FIFO):队列,选择最早调入的行进行替换,实现容易,而最早调入抑或是最经常使用而被替换,故未依据程序访问的局部性原理
				- 最近(期)最少使用算法(LRU):堆栈类算法,选择近期内 长久未访问过的Cache行作为替换行,命中率高,依据程序访问的局部性原理
				- 最不经常使用算法(LFU):【难以实现】

			- 写策略

				- Cache写命中(write-hit)

					- 全写法(写直通法,write-through):将数据同时 写入 Cache 和 主存。当某一块需要替换时,则不必写回主存,用新调入的块直接覆盖。

优点:实现简单,能随时保存主存数据正确性
缺点:增加访存次数,降低Cache效率

可以在Cache和主存之间添加一个【写缓冲】(Write-Buffer),这是FIFO队列,Cache先将数据写到 Cache 和 Write-Buffer中,由Write-Buffer再控制内容写入主存。以减少直接写入主存的时间损耗,但写频繁时,使写缓冲饱和、溢出。
- 写回法(write-bace):只修改Cache的内容,当此块被调出时再写回主存。每个Cache行需设置一个标志位(脏位)以标识是否被CPU修改过。
优点:减少访存次数
缺点:存在不一致的隐患

				- Cache写未命中

					- 写分配法(write-allocate):加载主存中的块到Cache中,再更新该Cache行。利用了程序的空间局部性原理,但每次未命中时,都需要从主存中读一块。
					- 非写分配法(not-write-allocate):只写入,而不进行调块

	- 介质

		- 磁表面:磁盘、磁带
		- 磁芯
		- 半导体:RAM (MOS型存储器)、ROM(双极型存储器)
		- 光盘

	- 方式

		- RAM(随机存储器):主要用作主存或Cache。

任何一个存储单元的内容可以按其地址随机存取(读写),且存取时间与单元物理位置无关。

			- SRAM(静态RAM):存储元由双稳态触发器(六晶体管MOS)记忆信息,可非破坏性读出,且无需刷新。

一般用于组成Cache。
优点:读取速度快;
缺点:集成度低、功耗大。
- DRAM(动态RAM):利用存储元电路中的栅极电容上的电荷存储信息,而电荷一般只维持1~2ms,意味着即使电源不断电,信息也会自动消失,故每隔一段时间需要刷新。通常只用 一个晶体管,也就比SRAM密度更高。
采用地址复用技术,地址线为原来 1/2 地址信号分行、列两次传送。
一般组成大容量主存系统。
相对SRAM优点:易集成、价位低、容量大和功耗低等;
缺点:存取速度比SRAM慢

				- 集中刷新:在一段固定的时间进行刷新,且刷新期间,不能对访问存储器进行读写(死时间、死区),但读写操作时不受刷新工作影响
				- 分散刷新:将每行刷新分散到各个工作周期中。使一个存储器系统工作周期分为两部分:前半部分,正常读写或保持;后半部分,用于刷新。造成系统的存取周期增加,降低整机速度,但没有死区。
				- 异步刷新:将刷新周期除以行数,得到两次刷新操作之间的时间间隔 t ,利用逻辑电路每隔时间 t 产生一次刷新请求。缩短了死区,避免了使CPU连续等待过长时间,且减少刷新次数,使整机效率提高。

		- ROM(只读存储器):通常存放 固定不变的程序(信息一旦写入,就不能再写入新信息)。

任何一个存储单元只能随机读出而不能写入。
优点:结构简单,位密度比RAM高;具有非易失性,可靠性高。

			- 掩模式只读存储器(MROM):(厂商)直接写入后,无法修改。

优点:可靠性高,集成度高,价格便宜;缺点:灵活性差。
- 一次可编程只读存储器(PROM):运行用户用专门设备烧写,但一旦写入不可修改。
- 可擦除可编程只读寄存器(EPROM):用户可利用编程器写入信息,而且在擦除后,亦可再次改写。编程次数有限,写入时间长,不能替代RAM

				- 紫外线擦除(UVEPROM)
				- 

			- 闪存存储器(Flash Memory):在电擦除基础发展,即可在不加电情况下长期保持信息,又能在线进行快速擦除与重写,价格便宜、集成度高。
			- 固态硬盘(Solid State Drives, SSD):用固态电子存储芯片阵列制成硬盘,由控制单元和存储单元(FLASH芯片)组成。可长期保存信息、快速擦写信息,读写速度快,低功耗,但价格高。

		- 串行访问存储器:对存储单元进行读写操作时,需按其物理地址先后顺序寻址

			- SAM(顺序存取存储器):信息的排列、寻址、读写操作按顺序进行,存取时间的长短  与  信息在存储体上的位置  有关。但存取速度慢,如磁带。

顺序存取:信息通常 以 文件或数据库形式按顺序存放,无唯一对应的地址。
- DAM(直接存取存储器):介于随机存取 和 顺序存取 之间。
存取时两步逻辑动作,第一寻道,使磁头指向被选磁道,第二在被选磁道上顺序存取。
如磁盘、光盘。

	- 保存性质

		- 易失性存储器:断电失去信息。如RAM
		- 非易失性存储器:断电仍保存信息。如ROM、磁表面、光盘

- 指标(目标是大容量、低成本、高速度)

	- 
	- 

		- 存取时间(Ta):指启动一次存储器操作 到 完成该操作 所经历的时间
		- 存取周期(Tm):读写周期或访问周期。指存储器进行一次完整的读写操作所需的全部时间,即连续两次独立访问存储器(读/写)操作之间所需的最小时间。
		- 主存宽带(Bm):数据传输率。指每秒从主存进出信息的最大数量,单位为  字/秒;字节/秒(B/s);位/秒(b/s)

	- 单位成本:

- 多级层次化结构

(主要思想:上一层存储器作为低一层存储器的高速缓存)

	- Cache-主存:数据调动由 硬件 自动完成,对 所有程序员透明。兼顾Cahce速度、主存价格和容量
	- 主存-辅存:数据调动由 硬件 和 操作系统 自动完成,对 应用程序员透明。兼顾主存速度、辅存价格和容量
	- 虚存(虚拟存储系统):主存 和 联机工作的辅存 在 硬件 和 系统软件 的共同管理下工作,对 应用程序员是透明的。具有主存的速度 和  辅存的容量。

虚地址(虚存页号+页内字地址|段号+段内地址|段号+段内地址+页内地址)为用户编程允许涉及的地址,所对应存储空间为虚拟空间或程序空间;
实地址(物理地址,主存页号+页内字地址)为实际的主存单元地址;
虚地址 远大于 实地址,CPU适用虚地址时,首席按 虚地址和实地址的关系 判断 对应存储单元是否已在主存中:(1)若在,通过地址变换,CPU访问主存中的实际单元;(2)若不在,把包含这个字的一页或一段调入主存中后在由CPU访问;(3)若主存已满,采取替换算置换
辅存地址=磁盘号+盘面号+磁道号+扇区号,在操作系统管理下,程序先送入磁盘,再将当前运行所需的部分调入主存,供CPU使用,其余留在磁盘中。

		- 页式:虚拟空间和主存空间划分成同样大小的页,主存的页为实页,虚存的页为虚页,虚存地址划分为  虚页号、页内地址。

有效位(装入位)表示对应页面是否在主存(1在,也表现存放该页的物理地址(实地址,主存地址);0不在,页表项可存放该页磁盘地址)
脏位(修改位)表示页面是否被修改,虚存采用写回法策略,以判断替换时是否需要写回磁盘
引用位(使用位)配合替换算法进行置换

			- 页表(慢表,存放在主存中):访存前,先访问主存查页表,再访问主存取数据,若缺页则需采取页面替换、页面修改。

(1)CPU执行命令时,先将虚拟地址转换为主存物理地址;
(2)每一个进程都有 页表基址寄存器(存放该进程页表首地址),依据虚拟地址高位部分的虚拟页号找到对应页表项;
(3)若装入位为1,已在主存,则取出物理页号,和虚拟地址低位部分的页内地址拼接,形成实际的物理地址;
(4)若装入位为0,未在主存,则 缺页。
优点:页面长度固定,页表简单,调入方便
缺点:无法充分利用造成浪费,页不是逻辑上独立的实体,处理、保护、共享不方便,访存次数增加
- 快表(TLB,存放Cache中):依据程序执行的局部性原理,在一段时间内 总是经常访问的页 放在 Cache组成的快表中,先查快表,若命中,则无需查页表(慢表)。
通常采用全相联或组相联方式,每给快表项 由 页表项 内容加上一个 快表标记字段 组成,快表标记 表示该表项取自 页表中对应虚页号的页表项

				- 全相联方式下,该页表项对应虚页号
				- 组相联方式下,该页表项对应虚页号的高位部分,虚页号的低位部分用于选择快表组 的 组索引

			- 具有TLB和Cache的多级存储系统:

查找时,快表和慢表可同时进行,若快表中有查得虚页号,慢表查找作废。

		- 段式:按程序的逻辑结构划分,各段长度可变,应程序而异。虚拟地址划分为  段号 、段内地址。

			- 段表(存放在主存中):每行记录一段对应段号、装入位、段起址,段长等。

(1)CPU根据虚拟地址访存时,首先根据段号与段表基地址拼接成对应段行;
(2)根据段表行的装入位判断该段是否已调入主存;
(3)若装入位为1时,已在主存,段表读出该段在主存中的起始地址,与段内地址(偏移量)相加,得到对应主存实地址;
(4)若装入位为0,未在主存。
优点:段的分界与程序自然分界相对应,因而具有逻辑独立性,易于编译、管理、修改、保护、多道程序的共享。
缺点:段长度不固定,故分配空间易产生碎片

		- 段页式(在主存中):程序逻辑结构分段,每段再划分为固定大小的页,主存空间页划分为大小相等的页。每个程序对应一个段表,每一段对应一个页表,段长须为页长的整数倍,段起址须为某一页的起点。

虚拟地址分为 段号 、段内地址、页内地址
(1)CPU根据虚拟地址访存时,根据段号得到段表地址;
(2)由段表中取得该段的页表起始地址,与虚地址页号合成,得到页表地址;
(3)从页表中取出实页号,与页内地址拼接形成主存实际地址。
程序对主存的调入、调出基本单位为页。
优点:兼顾页式和段式优点,可按段实现共享和保护
缺点:地址变换过程中需要 2 次查表,系统开销大

- 并行技术

	- 双端口RAM(空间并行):同一存储器有两组相互独立的地址线、数据线、读写控制线,允许两独立的控制器同时异步地访问存储单元。

		- 两端口不同时对同一地址单元存取数据
		- 两端口同时对同一地址单元读出数据
		- 两端口同时对同一地址单元写入数据
		- 两端口同时对同一地址单元操作,一个写数据,另一个读数据

	- 多模块存储器(时间并行)

		- 单体多字存储器:只有一个存储体,每个存储单元存储 m 个字,总线宽度也为 m 个字。使之一次可一次并行读出 m 个字,地址必循顺序排列 并处于同一存储单元。在一个存储周期内,从同一地址取出 m 条指令,将指令逐条送至 CPU 执行,即每个 1/m 存储周期,CPU向主存取一条指令。

优点:增大了存储器的带宽,提高了单体存储器工作速度
缺点:指令和数据在主存内必须连续存放,一旦遇到转移指令,或操作数不能连续存放,则不可适用
- 多体并行存储器:由多体模块组成,每个模块都有相同的容量和存取速度,各个模块有独立的读写电路、地址寄存器和数据寄存器。可并行工作,亦可交叉工作。

			- 高位交叉编址(顺序方式):高位地址表示体号,低位地址表示体内地址。

把低位的体内地址送到 由高位体号所确定的模块内进行译码。访问一个连续主存块时,总数先在一个模块内访问,等到访问结束,再到下一模块。
CPU按顺序访问存储模块,存储模块不能被并行访问,故不能提高存储器吞吐率
- 低位交叉编制(交叉方式):低位为体号,高位位体内地址。
把 高位体内地址 送至 由低位体号地址确定的模块内 进行译码。程序连续存放在相邻模块中(交叉存储器),可在不改变每个模块存取周期的前提下,采用流水线的方式并行存取,提高存储器带宽。

  • 运算器
    (对数据进行加工)

    • ALU(算术逻辑单元):用于暂存 操作数OP 和 中间结果【核心】

      • ACC(累加器)
      • MQ(乘商寄存器)
      • X(操作数寄存器)
      • IX(变址寄存器)
      • BR(基质寄存器)
    • PSW(程序状态寄存器):存放状态信息 或 处理机信息,eg.结果是否溢出、有无进位或借位、结果是否为负……

    • 暂存寄存器:暂存从主存读出数据(该数据不能存放在 通用寄存器,通用寄存器对应用程序员透明,会易被破坏原内容)

    • ACC(累加寄存器):一个通用寄存器,暂时存放ALU运算结果,可以作为 加法运算 的一个输入端

    • CT(计数器):控制除法运算操作的操作步骤

    • 移位器:对操作数或运算结果进行移位运算

  • 控制器
    (协调并控制计算机各部件执行程序的指令序列)

    • PC(程序计数器):存放当前欲执行的地址。自动+1以形成下一条指令地址,与主存的MAR有一条直接通路
    • IR(指令寄存器):存放当前指令。其内容主要来源与主存的MDR。指令中的操作数OP(IR) 送至 CU,用以 分析指令 并 发出各种微操作命令序列;而 地址码 Ad(IR) 送往 MAR,用以取操作数。
    • CU(控制单):
      硬布线CU输入信号来源
      (1)经译码器 译码产生的指令信息;
      (2)时序系统产生的机器周期 和 节拍(一个机器周期包含若干时钟周期,T周期)信号
      (3)执行单元的反馈信息(标志)
    • 指令译码器:对操作码字段进行译码,向控制器提供特定信号
    • MAR(存储器地址寄存器):存放要访问的主存单元的地址
    • MDR(存储器数据寄存器):存放向主存写入的信息或主存读出的信息
    • 时序系统:由CLOCK(统一时钟)分频产生各种时序信号
    • 微操作信号发生器:根据 IR的指令、PSW的状态信息、条件信号形成所需的控制信号
  • I/O 输入/输出设备

    • 以主机为中心而言,将信息从外部设备传送到主机为输入,反之为输出。

      • I/O软件:包括驱动程序、用户程序、管理程序、升级补丁等,采用I/O指令和通道指令实现CPU与I/O设备信息交换
      • I/O硬件:包括外部设备、设备控制器和接口、I/O总线等,通过设备控制器控制I/O设备具体动作,通过I/O接口与主机(总线)相连
    • 外部设备:包括输入/输出设备及通过输入/输出接口才能访问的外存储设备

      • 输入设备:键盘、鼠标

      • 输出设备:显示器、打印机

      • 外存设备:除计算机内存及CPU缓存等外的存储器

        • 磁盘存储器

          • 存储区域

            • 磁头数(Heads):记录面数,磁头用于读/写入盘片上记录面的信息,一个记录面对应一个磁头
            • 柱面数(Cylinders):硬盘每面盘片上的磁道数,一个盘组中,不同记录面的相同编号(位置)的主磁道 构成一个圆柱面
            • 扇区数(Sectors):每条磁道上的扇区数
          • 组成

            • 硬盘驱动器:核心部件为 磁头 和 盘片 组件(温彻斯特盘 为 可移动磁头 固定盘片 的硬盘存储器)
            • 磁盘控制器:硬盘存储器 和 主机接口,标准有IDE、SCSI、SATA等
            • 盘片
          • 原理:磁头 和 磁性 记录介质 相对运动时,通过电磁转换完成 读/写 操作

            • 编码方法:通过一种方案,将一连串的二进制信息变换成存储介质磁层中一个磁化翻转状态的序列,并使读/写电路容易、可靠实现转换
            • 磁记录方式:采用 调频(FM) 和 改进型调频(MFM)
          • 性能指标

            • 磁盘容量

              • 非格式化容量:磁记录表面可利用磁化单元总数,有道密度 和 位密度 计算而来
              • 格式化容量:按照某种特点的记录格式所能存储信息的总量
            • 记录密度:盘片单位面积上记录的二进制信息量

              • 道密度:沿磁盘半径方向单位长度的磁道数
              • 位密度:磁道单位长度上能记录的二进制代码位数
              • 面密度:位密度 x 道密度
            • 平均存取时间

              • 寻道时间:磁头移动到目的磁道的时间
              • 旋转延迟时间:磁头定位到要读写扇区的时间,取旋转一周时间的一半
              • 传输时间:传输数据所需的时间
            • 数据传输率:磁盘存储器在单位时间内,向主机传送数据的字节数

          • 磁盘地址

          • 工作过程:
            (1)取控制字(寻址);
            (2)执行控制字(读盘、写盘)。
            每个操作对应一个控制字。
            机械硬盘读写操作是串行。

        • 磁盘阵列:RAID(廉价冗余磁盘阵列)将多个独立的物理磁盘组成一个独立的逻辑盘,数据在物理盘上分割交叉存储、并行访问,有良好的存储性能、可靠性、安全性。

          • RAID0:无冗余 和 无校验 ,把连续多个数据块 交替地存放在 不同物理磁盘的扇区中,几个磁盘交叉并行读写
            扩大了存储容量,提高磁盘数据存取速度,无容错能力
          • RAID1:镜像,使2个磁盘同时读写,互为备份
            容量减少一半(一个磁盘当两个用)
          • RAID2:纠错的海明码
          • RAID3:位交叉奇偶校验
          • RAID4:块交叉奇偶校验
          • RAID5:无独立校验的奇偶校验
        • 光盘存储器

        • 固态硬盘

    • 接口:在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件。协调包括过程中速度的匹配、电平和格式转换

      • 功能

        • (1)实现主机和外设的通信联络控制
        • (2)进行地址译码和设备选择
        • (3)实现数据缓冲
        • (4)格式化的转换
        • (5)传送控制命令和状态信息
      • 基本结构

      • 类型

        • 按数据传送方式

          • 并行
          • 串行
        • 按功能选择的灵活性

          • 可编程
          • 不可编程
        • 主机访问 I/O设备 的控制方式

          • 程序查询方式:设置一个数据缓冲寄存器(数据端口)和一个设备状态寄存器(状态端口),由CPU通过程序不断查询I/O设备是否就绪,从而控制I/O设备与主机交换信息
            CPU有【踏步】现象,CPU 与 I/O串行工作,接口设计简单,设备量少。
            一段时间内,CPU只能和一台外设交换信息,效率低。

            • (1)CPU执行初始化程序,并预制传递参数
            • (2)向 I/O 接口发出命令字,启动 I/O设备
            • (3)从外设接口读取其状态信息
            • (4)CPU不断查询 I/O设备状态,直到外设准备就绪
            • (5)传送一次数据
            • (6)修改地址和计数器参数
            • (7)判断传送是否结束,否转到到(3),直至计数器为0
          • 程序中断方式:只在I/O设备准备就绪并向CPU发出中断请求时才予以响应,待到处理完后,CPU自动返回到现行程序的断点处,继续执行原程序。
            主要思想:CPU在程序中安排好于某个时刻启动某台外设,然后CPU继续执行原来的程序,而无需等待。
            一台机器有多个中断源,而每个中断源向CPU发出中断请求时间是随机的。中断系统在任一瞬间只能响应一个中断源请求。

            • 异常:由CPU内部异常引起,可分 硬故障中断 和 程序性异常。

              • 硬故障中断:硬连线出现异常,如 电源掉电、存储器线路错误等

              • 程序性异常(软中断):CPU内部因执行指令而引起的异常时间,如 整除0、溢出、断点、单步跟踪、非法指令、溢栈、地址越界、缺页、分时系统中的时间片中断、用户态到核心态的切换等

              • 按报告方式和返回方式又分

                • (1)故障(Falut):引起故障等指令启动、执行结束前被检测到的异常事件。因无通过异常处理程序恢复故障,一次不能回到远断点执行,必须终止进程的执行
                • (2)自陷(Trap,陷阱,陷入):预先安排的一种【异常】事件。当自陷指令转移指令时,并不是返回到下一条指令执行,而是返回到 转移目标指令 指令执行,无条件 或 有条件 地自动调出操作系统内核程序进行执行
                • (3)终止(Abort):如果在执行指令的过程中发生计算机无法进行执行的硬件故障,如电源掉电、线路故障等,则程序无法继续执行 ,只能终止。此时调用中断服务程序重启系统,该异常是随机产生的。
            • 外部中断:来自CPU外部,与CPU执行指令无关的事件所引起,如 I/O中断、外部信号中断、各种定时器引起的时钟中断等

              • (1)【缺页】或【溢出】:由特点的指令在执行过程中产生,而中断不和任何指令相关联,也不阻止任何指令完成
              • (2)异常的检测:由CPU自身完成,不必通过外部的某个信号通知CPU。
                对于中断,CPU必须通过总线获取中断源的标识信息,才可获知具体设备产生的何种中断
            • 作用

              • (1)实现CPU与I/O设备并行工作
              • (2)处理硬件故障和软件错误
              • (3)实现人机交互,用户干预机器
              • (4)实现多道程序、分时操作、多道程序的切换
              • (5)实现处理快速响应
              • (6)实现应用程序和操作系统(管态程序)的切换(软中断)
              • (7)多处理器系统中各处理器之间的信息交流和任务切换
            • 工作流程

                1. 中断请求:中断请求标记触发器INTR(1有请求,0无请求),由多个INTR组成中断请求标记寄存器(可集成在CPU或各个中断源中)
                  通过INTR发出的外中断是可屏蔽中断(内中断皆为不可屏蔽中断),在关中断IF=1的情况下不响应
                  通过NMI信号发出的是不可屏蔽中断,即使是关中断IF=0情况下也会响应
                  不可屏蔽中断优先级最高
                1. 中断判优:
                  硬件实现,通过硬件排队器实现,可设计在CPU中,又可分散在各个中断源中。
                  软件实现,通过查询程序实现
                1. CPU响应中断条件
                • (1)中断源有中断请求
                • (2)CPU允许中断及开中断
                • (3)一条指令执行完毕,且没有更紧迫任务
                1. 中断响应:
                  中断隐指令 不是指令系统一条真正的指令,没有操作码(不能被用户使用),是当CPU响应中断后,由硬件操作转去执行中断程序
                • (1)关中断:CPU响应中断后,首先要保护程序断点和现场信息,该过程中CPU不能响应其它中断请求
                • (2)保存断点:确保中断服务程序执行完毕,后能正确返回原程序(指令直接无法读取PC、PSWR)
                • (3)引出中断服务程序:取出的中断服务程序入口地址并传送给PC
                1. 中断向量:CPU所需的入口地址(每个中断都有一个类型号,每个中断类型号对于一个中断服务程序,每个中断服务程序都要一个入口地址)
                  中断向量表,把系统中的全部中断向量集中存在存储器的某个区域
                  当CPU响应中断后,中断硬件回自动将中断向量送至CPU,由CPU实现程序切换(中断向量法,向量中断)。
                1. 中断处理过程
                • (1)关中断
                • (2)保存断点
                • (3)引出中断服务程序
                • (4)保存现场 和 屏蔽字
                • (5)开中断
                • (6)执行中断服务程序
                • (7)关中断
                • (8)恢复现场 和 屏蔽字
                • (9)开中断、中断返回
            • 多重中断(中断嵌套):若CPU在执行中断过程中,又有新的更高优先级中断请求,CPU暂停现行中断服务转去处理新中断请求(单重中断,CPU不予响应)

            • 中断屏蔽(主要应用于多重中断)

              • (1)在中断服务程序中提前设置开中断指令
              • (2)优先级别高的中断源 有权 中断 优先权低的中断源
          • DMA(直接数据通路)方式:在数据准备阶段,CPU与外设并行工作,主存和I/O设备之间有一条直接数据通路,当主存和I/O设备交换信息时,无需调用中断服务程序(数据不经过CPU,降低CPU开销,也不需要保护、恢复CPU现场),完全由硬件进行 成组信息 传送。

            • 特点

              • (1)使主存与CPU的固定联系挂钩,主存即可被CPU访问,又可被外设访问
              • (2)数据块传送时,主存地址的确定、传送数据的技术等都由硬件电路直接实现
              • (3)主存中要开辟专用缓冲区,及时供给和接收外设的数据
              • (4)DMA传送速度快,CPU和外设并行工作,提高了系统效率
              • (5)DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理
            • 功能

              • 接收外设发出DMA请求后,并向CPU发出总线请求
              • CPU响应次总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期
              • 确定传送数据的主存单元地址及长度,并自动修改主存地址计数和传送长度计数
              • 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作
              • 向CPU报告DMA操作的结束
            • DMA控制器组成

              • 主存地址计数器:存放要交换数据的主存地址
              • 传送长度计数器:记录传送数据的长度
              • 数据缓冲计数器:暂存每次传送的数据
              • DMA请求触发器:每当I/O设备准备号数据后,给出一个控制信号,使DMA请求触发器置位
              • 控制/状态 逻辑:由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对DMA请求信号 和 CPU响应时间 进行协调和同步
              • 中断机构:当每一数据库传送完成后触发中断机构,向CPU提出中断请求
            • 传送方式
              I/O访存优先级高于CPU访存,同时I/O数据易失,需挪用一个以上的存取周期,完成一个数据传送后(单字传送方式),释放总线

                1. 停止CPU访存:当 I/O设备由 DMA请求,DMA控制器向CUP发【停止】信号,使CPU脱离总线,停止访问主存;直到DMA 一个数据(单字传送) 传送结束,DMA通知CPU可以使用主存,总线控制器交还给CPU
                1. 周期挪用(周期窃取)
                • 情况1:CPU不在访存,与I/O访存请求不冲突;
                • 情况2:CPU正在访存,必须待存取周期结束后,CPU再让出总线占有权
                • 情况3:CPU 和 I/O设备 同时请求访存,出现访存冲突,CPU需暂时让出总线占有权
                1. DMA与CPU交替访存:适用于CPU的工作周期比主存存取周期长的情况
            • 工作过程

              • (1)预处理:
                CPU执行几条I/O指令,测试 I/O设备 状态,向DMA控制器有关寄存器 设置初值、传送方向、启动该设备等;
                CPU继续执行原来程序,直到 I/O 设备准备号发送数据(输入) 或 接收数据(输出)时,I/O 设备向DMA控制器发DMA请求;
                再由DMA控制器发向CPU发总线请求(也可称为DMA请求),用以传送数据
              • (2)数据传送(完全由DMA控制器完成):DMA占用总线后,数据输入输出通过(DMA控制器,而非CPU进行)循环实现。
                DMA数据传输 可 以单字节(或字)为基本单位,也可 以 数据块 为基本单位(硬盘)。
              • (3)后处理:DMA向CPU发中断请求,CPU执行中断服务程序,包括校验送入主存数据、测试传送过程正确性(出错,则转入诊断程序)、决定是否继续DMA传送其它数据
          • 通道方式:在系统中设有通道控制部件,每个通道都挂接若干外设,主机在执行I/O命令时,只需启动有关通道,通道将执行通道程序,从而完成I/O操作

      • 端口

        • 数据端口:CPU对该端口执行 读写操作
        • 状态端口:CPU对该端口执行 读操作
        • 控制端口:CPU对该端口执行 写操作
      • 编址

        • 统一编址(存储器映射方式):把 I/O端口 当作存储器的单元 进行 地址分配(不需要CPU设置专门的指令),用统一的访存指令即可访问 I/O端口
        • 独立编址(I/O映射方式):I/O端口 的地址空间 与 主存地址空间 是 两个独立的地址,(无法从地址码上对二者进行区分)需要设置转专门的 I/O指令 访问 I/O端口
          优点:I/O指令 与 存储器指令,有明显区分,程序编制清晰,便于理解
          缺点: I/O指令少,一般只能对端口进行传送操作,尤其需要CPU提供存储器读/写,I/O设备读/写两组信号,增加控制的复杂性

工作过程

    1. 将程序和数据装入主存
    1. 将源程序转换成可执行文件
    • (1)预编译:hello.c -> hello.i,处理#开头的命令,eg.#include导入.h头文件插入程序文件
    • (2)编译:hello.i -> hello.s,每条语句 以一种文本格式翻译成 低级机器语言指令
    • (3)汇编 :hello.s -> hello.o,汇编器(as)翻译出机器指令,生成二进制文件\
    • (4)链接:hello.o -> hello,链接器(ld)合并出可执行文件
    1. 从可执行文件的首地址开始 逐步执行指令
    • (1)取指令:PC -> MAR -> M -> MDR -> IR
    • (2)分析指令:OP(IR) -> CU
    • (3)执行指令:Ad(IR) -> MAR -> M -> MDR -> ACC

多级层次结构

  • 微程序机器M0:由硬件直接执行微指令
  • 传统机器M1:用户微程序解释机器指令
  • 虚拟机器M2:用机器语言解释操作系统
  • 虚拟机器M3:用汇编程序翻译成机器语言程序
  • 虚拟机器M4:用编译程序翻译成汇编语言程序

性能指标

  • 机器字长:一般等于内部寄存器大小,字长越长,数的表示范围越大

  • 数据通路带宽:数据总线一次所能并行传输信息的位数

  • 主存容量:可用 字数x字长 表示,MAR 反映存储单元的个数 及 可寻址范围的最大值

  • 运算速度

    • 吞吐量:系统再单位时间内出来请求的数量
    • 响应时间:从用户发起一个请求,到系统对该请求做出响应并获得所需结果的时间
    • 主频:主频越高,完成指令的一个步骤所用时间越短
    • CPU时钟周期:节拍脉冲或T周期,主频的倒数,CPU最小单位时间,执行指令的每个动作至少需要1个时钟周期
    • CPI:执行一条指令所需的 时间周期数
    • CPU执行时间(运行一个程序所花费时间):
    • MIPS(每秒执行多少百万指令 ):
    • MFLOPS(每秒执行多少 百万 次浮点数运算):
    • GFLOPS(每秒执行多少 十亿 次浮点数运算):
    • TELOPS(每秒执行多少 万亿 次浮点数运算):

数据表述和运算

数制与编码

  • 机制转换

    • 除基取余法:取余所得结果是由低位到高位
    • 乘基取整法:取整所得结果是由高位到低位
  • ASCII(0~127,共128个字符)

    • 4857:09
    • 6590:AB
    • 97122:az
  • 汉字:输入编码、汉字内码、汉字字形码

  • 校验码

    • 奇偶校验
    • 海明码
    • CRC(循环冗余检验)

定点数

  • 无符号数:整个机器字长的全部二进制均为数值位

  • 有符号数:一般第一位为符号位,0为正,1为负

    • 定点小数:符号位 和 数值位 之间的位为小数点位置
    • 定点整数:有效数值部分的最后一位为小数点位置(隐含)
  • 原码

    • 小数:
    • 整数:
  • 反码(范围同原码)

    • 小数:
    • 整数:
  • 补码

    • 小数(多 -1):
    • 整数(多 -2^n):
  • 移码(只能表示整数,常用来表示浮点数的阶码):

    • 移码中的零表示唯一,

    • 一个真值的移码和补码仅差一个符号位,即1表示正,0表示负

    • 移码全0时,

    • 移码全1时,

    • 移码保持数据原有的大小顺序,移码越大真值越大

  • 运算

    • 移位

      • 算术移位:数字移动,小数点不动

        • 左移1位,若不溢出,相当乘2
        • 右移1位,相当除2
      • 逻辑移位:将操作数视为无符号数

        • 逻辑左移,高位移出,低位添0
        • 逻辑右移,低位移出,高位添0
      • 循环移位:移出的数位又移回数据中,而是否带进位须看是否带 进位标志位CF 加入循环位移。适合将数据的低字节数据和高字节数据互换。

        • 带CF的循环移位(大循环)
        • 不带CF的循环移位(小循环)
    • 加法、减法

      • 原码

        • 加法

          • 符号位相同,绝对值相加
          • 符号位不同,做减法,绝对值大的数 - 绝对值小的数,结果的符号位 与 绝对值大的数 相同
        • 减数 符号取反,再按 原码加法 进行运算

      • 补码(参与操作数皆用补码表示,运算结果仍为补码)

        • 符号位同数值位按同样规则进行运算,符号位所产生的进位丢弃。
        • 参加运算的数为 定点小数,模
        • 参加运算的数是 定点整数,模
        • 公式(mod M目的将溢出位丢弃)
    • 乘法(累加-右移)

      • 原码一位乘法(先运算数值位,最后判断符号位):
      • 补码一位乘法(Booth算法,通过相加和相减操作计算乘积):
    • 除法(累减-逻辑左移)

      • 原码除法运算(补恢复余数法,数值位和符号位亦是分开运算):
      • 补码除法运算(加减替换法,同样符号位和数值位一同运算):
    • 符号扩展(短位与长位相加时,eg.8位数和32位数相加)

      • 正数:所有附加位都 用0填充

      • 负数

        • 原码:与正数相同,符号位为1

        • 反码:原有形式的符号位 移动到 新形式的符号位,新表示形式的所有附加位用 1 填充

        • 补码:原有形式的符号位 移动到 新形式的符号位,新表示形式的所有附加位

          • 对于整数 用1填充
          • 对于小数 用0填充
    • 溢出

      • 一位符号位

      • 双符号位(模4补码)

      • 一位符号位根据数据位的进位情况判断溢出

浮点数:r 为浮点数阶码的底(隐含),与尾数的基数相同,通常 r = 2。j 和 S 皆为 有符号 定点数,j为 阶码,S 为 尾数。

  • 规格化

    • 左规:当浮点数运算结果为非规格化时,将尾数S 算术左移一位,阶码 j - 1(当基数r = 2时),或许进行多次。
    • 右规:当浮点数运算结果 尾数S 出现溢出 (双符号位为 01 或 10),将尾数S 算术右移一位,阶码j + 1 (当基数 r = 2 时),只需进行1次。
  • 范围:

  • IEEE 754:

    • 单精度:
    • 双精度:
  • 运算(用补码)

    • 加减法

        1. 对阶:使两个操作数的小数点位置对齐
        • 先求阶差

        • 小阶向大阶看齐:小阶尾数右移一位,阶数 + 1,直至阶码相等,同时右移也将产生误差。

        1. 尾数求和:尾数按定点数做加(减)法【对阶后阶码 ; 尾数求和结果】
        1. 结果规格化
        • 双符号

          • 左规:当尾数出现 00.0xx…x 或 11.1xx…x时。尾数左移一位,阶码减1,直至符号位和第一位数位不同为止。
          • 右规:当尾数求和 溢出,如 10.xx…x 或 01.xx…x时。尾数仅需右移一位,阶码加1。
        • 单符号

          • S > 0

            • 判断真值、原码、反码、补码规格化形式0.1xx…x
          • S < 0

            • 判断真值规格化形式 -0.1xx…x;
            • 判断原码规格化形式 1.1xx…x;
            • 判断反码、补码规格化形式 1.0xx…x
        1. 舍入:对阶和右规过程中,易出现尾数低位丢失,引起误差
        • 0舍1入法

          • 尾数右移时,若被移去的最高数值位为0,则舍去
          • 尾数右移时,若被移去的最高数值位为1,则进行尾数末位 加1,并再次右规(防止溢出)
        • 恒置1法:尾数右移时,不论丢失的最高数值位是1还是0,都使右移后的尾数末位恒置为1(该方法可能使尾数变大或变小)

        1. 溢出判断:由阶码符号决定
        • 当 阶码的符号位 出现 01 时,即 阶码 > 最大阶码,表示上溢,进行中断处理;
        • 当 阶码的符号位 出现 10 时,即 阶码 < 最小阶码,表示下溢,按机器零处理;
    • 乘除法

      • (1)0操作数检查(除法)
      • (2)阶码加减操作
      • (3)尾数乘除操作
      • (4)结果规格化

ALU(算逻单元)

总线

总线是一组能为多个部件分时共享的公共信息传送线路

  • 特点

    • 分时:同一时刻只允许 有一个部件向总线发送信息,若系统中有多个部件,则它们只能分时向总线发送信息
    • 共享:总线上挂接多个部件,各个部件之间互相交换的信息 都可通过这组线路分时共享,在某一时刻只允许有一个部件向总线发送信息,但多个部件可同时从总线上接收相同的信息。
  • 设备

    • 主设备:获得总线控制权的设备
    • 从设备:被主设备访问的设备,只能响应从 主设备 发来的各种总线命令
  • 特性

    • 机械
    • 电气
    • 功能
    • 时间
  • 猝发传输方式:在一个总线周期内传输存储地址连续的多个数据字的总线传输方式

  • 分类

    • 片内总线:芯片内部总线,CPU芯片内部寄存器与寄存器之间、寄存器与ALU之间的公共连接线

    • 系统总线

      • 数据总线:传输各功能部件之间的数据信息,且是双向传输,其位数与机器字长,存储字长有关
      • 地址总线:数据总线上的源数据或目的数据所在的 主存单元 或 I/O 端口的地址,是单向传输,地址总线的位数与主存地址空间大小有关
      • 控制总线:传输控制信息,包括 CPU送出的控制命令 和 主存或外设 返回 CPU的 反馈信号
    • 通信总线(外部总线):计算机系统之间 或 计算机系统与其它系统(远程通信设备、测试设备)之间传输信息的总线

      • 时序控制

        • 同步总线
        • 异步总线
      • 数据传输格式

        • 并行总线
        • 串行总线
  • 结构

    • 单总线结构:将CPU、主存、I/O设备(通过I/O接口)都挂在一组(并非一根)总线上,允许I/O设备之间、I/O和主存之间、CPU与主存之间、CPU与外设之间 直接交换信息。
      优点:结构简单,成本低,易于接入新设备
      缺点:带宽低,负载重,不支持并发传送(多个部件只能争用唯一总线)
    • 双总线结构:
      (1)主存总线,用于在CPU、主存和通道之间传送数据;
      (2)I/O总线,用于在多个外部设备与通道之间传送数据。
      优点:实现了存储器总线 和 I/O总线 分离
      缺点:需要增加通道等硬件
    • 三总线结构:
      (1)主存总线,用于在CPU和内存之间传送地址、数据和控制信息;
      (2)I/O总线,用于在CPU和各类外设之间通信;
      (3)DMA(直接内存访问)总线,用于在内存和高速外设之间直接传送数据。
      优点:提高了I/O设备的性能,使其更快地响应命令
      缺点:系统工作效率低
  • 性能指标

    • 总线传输周期(总线周期):一次总线操作所需时间(包括申请阶段、寻址阶段、传输阶段、结束阶段),通常由若干个总线时钟周期构成。
    • 总线时钟周期:机器时钟周期。计算机由一个统一的时钟,控制计算机各个部件(包括总线)
    • 工作频率(总线频率):总线上 各种操作的频率,为 总线周期的倒数(实际上1s内传送几次数据)
    • 时钟频率:机器的时钟频率,为 时钟周期倒数
    • 宽度(总线位宽):总线上同时能传输的数据位数,指 数据总线根数
    • 带宽:总线的最大数据传输率,即单位时间内总线上最多可传输数据的位数,单位 字节/秒(B/s)【最重要指标】
    • 总线复用:一种信号线在不同的时间传传输不同的信息(使用较少的线传输更多信息、从而节省空间和成本)
    • 信号线数:系统总线数的总和

仲裁

  • 集中仲裁

    • 链式查询方式
    • 计数器定时查询方式
    • 独立请求方式
  • 分布仲裁

操作

  • (1)申请分配阶段:由需要使用总线的主模块(或主设备)提出申请,经总线仲裁决定 下一传输周期的总线使用权 授予 其一申请者
  • (2)寻址阶段:取得使用权的主模块 通过总线发出本次要访问的 从模块(或从设备)的地址及有关命令,启动参与本次传输的从模块
  • (3)传输阶段:主模块和从模块进行数据交换,可单向或双向进行数据传送
  • (4)结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权

定时

  • 同步定时方式:采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。
    时钟产生相等的时间间隔,每个间隔构成一个总线周期。
    一个总线周期中,发送方和接收方可以进行一次数据传送。
    每个部件或设备 发送或接收信息 都在固定的总线传送周期中,一个总线的传送周期结束,下一个总线的传送周期开始
    同步通信适用于 总线长度较短 及 总线所接存取时间比较近 的系统

  • 异步定时方式:没有统一的时钟,也没有固定的时间间隔,完全依靠传送双方相互制约的【握手】信号来实现定时控制,把交换信息的两个部件或设备分为主设备和从设备,主设备提出交换信息的【请求】信号,经接口传送到从设备;从设备 到 主设备 的请求后通过接口向主设备发出【回答】信号。
    根据【请求】或【回答】信号的撤销 采取互锁
    优点:总线周期长度可变,能保证两个工作速度相差很大的部件 或 设备之间 可靠地进行信息交换,自动适应时间的配合
    缺点:较同步复杂、速度慢

    • 不互锁方式:
      主设备发出【请求】信号后,不必等从设备的【回答】信号,而是经过一段时间便撤销【请求】信号。
      从设备在接到【请求】信号后,发出【回答】信号,经过一段时间后自动撤销【回答】信号。
      双方不存在互锁关系。
    • 半互锁方式:
      主设备发出【请求】信号后,必须等到从设备的【回答】信号后,才撤销【请求】信号,有互锁关系。
      从设备在接到【请求】信号后,发出【回答】信号,但不必等待获知主设备【请求】信号撤销,经过一段时间后自动撤销【回答】信号,不存在互锁关系。
    • 全互锁方式:
      主设备发出【请求】信号后,必须等到从设备的【回答】信号后,才撤销【请求】信号。
      从设备发出【回答】信号,必须获知主设备【请求】信号撤销后,再撤销【回答】信号。
      双方存在互锁关系。

总线标准

  • ISA(工业标准体系)
  • EISA(扩展的ISA)
  • VESA(视频电子标准协会)
  • PCI(外部设备互连)
  • PCI-E(PCI-Express)
  • AGP(加速图形接口)
  • RS-232C
  • USB(通用串行总线)
  • PCMCIA
  • IDE(集成设备电路)
  • SCSI(小型计算机系统接口)
  • SATA(串行高级技术附件)

CPU 中央处理器

功能

    1. 指令控制(程序的顺序控制):完成取指、分析指令、执行指令
    1. 操作控制:一条指令的功能由若干操作信号的组合控制
    1. 时间控制:为每条指令按时间顺序提供相应的控制信号
    1. 数据加工:对数据进行算逻运算
    1. 中断处理:对计算机运行过程中出现的异常情况和特殊请求进行处理

结构

  • 运算器
  • 控制器

指令执行过程

  • 指令周期:
    无条件转移指令 JMP X,执行时无需访存,只有 取址(取址、分析) 和 执行;
    间接寻址,取址、间址、执行(先访存一次取有效地址,再访存取操作数);
    CPU中断方式与 I/O交换信息,取址、间址、执行、中断(每条指令执行结束前,先发中断查询信号,若有中断请求,进入中断响应)

  • 指令周期数据流

    • (1)取址周期(标志触发器,1 -> FE)
    • (2)间址周期(标志触发器,1 -> IND)
    • (3)执行周期(标志触发器,1 -> EX)
      取操作数、并根据 IR 的指令字的操作码 通过 ALU 产生 执行结果(不同指令执行周期不同,没有 统一数据流向)
    • (4)中断周期(标志触发器,1 -> INT)
  • 执行方案

    • 顺序执行

      • 单指令周期:所有指令都在固定时钟周期内完成,指令周期取决于执行时间最长的指令的执行时间,指令间串行执行
      • 多指令周期:不同类型的指令选用不同的执行步骤,按需分配周期,指令间串行执行。
    • 流水线方案

      • 指令流水线:指令间可并行执行
        五级流水:IF(取指)、ID(译码)、OF(取操作数)、EX(执行)、WB(回写)

        • 指令集特征:
          (1)指令长度应尽量一致;
          (2)指令格式应尽量规整;
          (3)采用 Load/Store 指令;
          (4)数据和指令再存储器中对齐存放
        • 特点:
          (1)把一个任务(一条指令或一个操作)分解为几个有联系的子任务,每个子任务由 一个 专门部件执行,并依靠多个功能部件 并行工作 缩短程序 的执行时间;
          (2)流水线每个功能段部件后面都需要一个 缓冲寄存器(锁存器,保存执行结果,供下一流水段使用);
          (3)流水线中的各功能段的时间应尽量相等(避免堵塞、断流);
          (4)必须是处理连续任务(才能返回流水线效率优势);
          (5)流水线需要 装入(第一个任务进入流水线到输出流水线的时间) 和 排空(最后一个任务进入流水线到输出的时间) 时间。
      • 分类

        • 部件功能级:复杂的 ALU 组成;
          处理机级:一条指令解释过程 划分多个子过程;
          处理机间接:宏流水,每个处理机完成某一专门任务,各处理机得到结果须存放再下一个处理机共享的存储器中
        • 单功能:只能时序一种固定的专门功能的流水线;
          多功能:通过各段间不同连接方式可以同时或不同时时序多种功能的流水线
        • 动态:同一时间内,不同段可分别实现某各自运算;
          静态:同一时间内,流水线各段只能按同一种功能的连接方式工作
        • 线性:从输入到输出,每个功能段只允许经过一次,不存在反馈回路;
          非线性:存在反馈回路,某些功能段将数次通过流水线(适合递归运算)
      • 影响因素

        • 资源冲突:多条指令同时竞争同一资源;
          解决方案

            1. 前一指令访存时,使后一相关指令(以及其后续指令)暂停一个时钟周期
            1. 单独设置数据存储器 和 指令存储器,使取数 和 取指令 操作各自在 不同的存储器 进行
        • 数据冲突:当多条指令重叠处理时容易发生以下3种冲突:
          (1)RAW(写后读),当前指令将数据写入寄存器后,下一条指令才能从该寄存器读出数据,否则先读后写,所读到的是旧(错误)数据;
          (2)WAR(读后写),当前指令读出数据后,下一条指令才能写该寄存器,否则先写后读,所读到的是新(错误)数据;
          (3)WAW(写后写),当前指令写入寄存器后,下一条指令才能写该寄存器,否则,下一条指令在当前指令之前 先写,使寄存器的值 不是新值。
          解决方案

            1. 把遇到的数据相关的指令及其后续指令都暂停一致几个时钟周期,直到数据相关问题消失后在继续执行
            • stall 硬件阻塞
            • 软件插入 “NOP” 指令
            1. 设置相关专用通道,即不等,前一条指令的 ALU计算结果 写回寄存器组,下一条指令也不从寄存器读数据, 直接 将 前一条指令ALU计算结果 作为自己的 输入数据,
            1. 通过编译器对数据相关的指令编译优化,调整指令顺序
        • 控制冲突:一条指令要确定下一条指令的地址是,可能出现断流【控制冒险】
          解决方案

            1. 对转移指令进行分支预测,尽早生成转移目标地址
            • 简单(静态)分支预测,预测条件不满足,继续执行分支指令的后续地址
            • 动态分支预测,根据历史情况,进行动态预测调整,准确率较高
            1. 预取转移成功 和 不成功 两个控制流方向上的目标指令
            1. 加快和提前形成条件码
            1. 提高转移方向的猜准率
      • 性能指标

        • 吞吐率
        • 加速比
        • 效率
      • 超标量流水线

数据通路

  • 数据通路部件 如 ALU、通用寄存器、PSW、异常和中断处理逻辑等

  • 结构

      1. CPU内部单总线方式
      1. CPU内部三总线方式
      1. 专用数据通路方式

指令系统

格式

  • 操作码:执行何种性质的操作以及何种功能,识别指令、了解指令功能及区分操作数地址内容的组成和使用方法等信息
  • 地址码:该处被操作的信息(指令或数据)的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序入口地址等
  • 定长指令字结构:所有指令长度相等。指令字最高位部分分配若干位(定长)表示操作码,n位操作码,最大能表示2^n指令。执行速度快,控制简单
  • 变长指令字结构:全部指令的操作码字段位数不固定,且分散地放在指令字的不同位置,主存一般按字节编址,所以指令字长位字节的整数倍。

扩展操作码方法,操作码长度随地址码减少而增加。需注意

- (1)不允许短码是长码的前缀,即短操作码 不能于长操作码的前面部分相同(一般 使用频率高的指令 分配 较短操作码,使用频率低 分配 较长操作码)
- (2)各指令的操作码一定不能重复

操作类型

  • 数据传送:
    MOV:寄存器之间;
    LOAD:内存单元读取数据到CPU;
    STORE:CPU写数据到内存单元
  • 算术和逻辑操作:
    ADD:加;
    SUB:减;
    CMP:比较;
    MUL:乘
    DIV:除;
    INC:加1;
    DEC:减1;
    AND:与;
    OR:或;
    NOT:取反(非);
    XOR:异或
  • 移位操作:算法移位、逻辑移位、循环移位
  • 转移操作:
    JMP:无条件转移,在任何情况下都要执行转移操作;
    BRANCH:有条件转移,仅在特定条件满足时才执行转移操作(转移条件一般是某个标志位值);
    CALL:调用;
    RET:返回;
    TRAP:陷阱
  • 输入输出操作

寻址方式

形式地址(A)非真实地址,结合寻址方式计算出有效地址(EA)

  • 指令寻址

    • 顺序寻址:可通过程序计数器PC 加1(1个指令字长),自动形成下一条指令地址

    • 跳跃寻址:通过转移类指令实现。下一条指令的地址码不由程序计数器给出,而是本条指令给出下一条指令地址的计算方式。(可能受到状态寄存器PSW和操作数控制),跳跃结果是当前指令修改PC值,故下一条指令仍然通过PC给出

      • 绝对地址:由标记符直接得到
      • 先对地址:相对于当前指令地址的偏移量
  • 数据寻址
    操作码|寻址特征|形式地址A

    • 隐含寻址:不明显给出操作数地址,而在指令中隐含操作数地址
      优点:有利于缩短指令字长;
      缺点:需增加存储操作数 或 隐含地址的硬件

    • 立即寻址:地址字段指出的不是操作数地址,而是操作数本身(立即数),数据采用补码形式存放。
      优点:指令在执行阶段不访问主存,指令执行时间最短;
      缺点:形式地址A位数限制立即数范围

    • 直接寻址:字中的形式地址A是操作数的真实地址EA,EA=A。
      优点:简单,指令执行阶段仅访问一次主存,不需要专门计算操作数的地址;
      缺点:形式地址A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改

    • 间接寻址:地址字段的形式地址不是操作数的真实地址,而是操作数有效地址所在的存储单元的地址,即操作数的地址的地址,EA=(A)
      优点:可扩大寻址范围(EA位数 > A位数),便于编程(可方便地完成子程序返回),
      缺点:指令在执行阶段要多次访存(一次间接访存寻址需两次访存,多次间接寻址需根据存储字的最高位确定访存次数),访问速度过慢(一般扩大寻址访问使用寄存器间接寻址)

    • 寄存器寻址:指令字中直接给出操作数所在的寄存器编号,即EA=Ri,操作数在由Ri所指的寄存器内内
      优点:指令在执行阶段不访问主存,只访问寄存器,因寄存器数量较少,对应地址码长度较小,使得指令字短且因不用访存,执行速度快,支持向量/矩阵运算;
      缺点:寄存器价格昂贵,个数有限

    • 寄存器间接寻址:寄存器Ri给出不是一个操作数,而是操作数所在主存单元地址,EA=(Ri)
      特点:比一般间接寻址速度快,指令在执行阶段需要访问主存(操作数在主存中)

    • 相对寻址:PC内容加上指令格式中的A(现当指令地址位移量,可正可负,补码表示) 而形成 操作数的EA,即EA=(PC) + A
      优点:操作数的地址不是固定的,随PC值改变而改变,且指令地址之间总是相差一个固定值,便于程序浮动(可应用于转移指令)

    • 基址寻址:将CPU基址寄存器BR的内容加上指令格式中的A 而形成EA,即EA=(BR) + A,程序执行过程中,基址寄存器内容固定(作为基地址),形式地址A可变(作为偏移量),BR位数 > A位数。
      基址寄存器【面向操作系统】,其内容由操作系统或管理程序确定,主要用于解决程序逻辑空间,与存储器物理空间无关。
      基质寄存器可采用 专门寄存器;也可采用 通用寄存器,可由用户决定具体寄存器作为基址寄存器,但内容由操作系统决定。
      优点:可扩大寻址范围,用户不必考虑程序存于主存的具体空间区域,因此有利于多道程序设计,并可用编制浮动程序。

    • 变址寻址:变址寄存器IX 和 A 而形成EA,即EA=(IX) + A,在程序执行过程中,变址寄存器内容可(由用户而)变(作为偏移量),形式地址A固定(作为基地址),IX位数 > A位数,且IX位数足以表示整个存储空间。
      变址寄存器【面向用户】,IX寄存器可采用 专用寄存器,也可采用 通用寄存器。
      优点:可扩大寻址范围,处理数值过程中,可将A作为首地址,不断IX内容,则轻易形成数组中任一数据地址,特别适合循环程序

    • 堆栈寻址:存储器或专用寄存器中 特定一块的、按 LIFO(后进先出,栈)原则管理存储区。
      堆栈指针SP由存储区中 读/写单元的地址 用一个特定寄存器给出。
      大部分指令表现 无操作数指令 的形式(操作数地址都隐含使用SP),在读/写堆栈中的一个单元前后都伴有自动完成对SP内容的增量和减量操作

      • 硬堆栈(寄存器堆栈):成本高,不适合做大容量堆栈
      • 软堆栈:从主存划出一段区域

CISC(复杂指令系统)

  • 指令系统复杂庞大,指令数目一般在200条以上
  • 指令长度不固定,指令格式多,寻址方式多
  • 可以访存的指令不受限制
  • 各种指令使用平度相差很大
  • 各种指令执行时间相差很大,大多数需多个时钟周期才能实现
  • 控制器大多数采用微程序控制(有些程序非常复杂,大多数指令需多个时钟周期才能完成)
  • 难以用优化编译生成高校的目标代码程序

RISC(精简指令系统)

  • 选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合实现
  • 指令长度固定,指令格式、寻址方式种类少,
  • 只有 Load/Store(取值/存数)指令访存,其余指令的操作都在寄存器之间进行
  • CPU中通用寄存器的数量相当多
  • RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成
  • 以硬布线控制为主,不用或少用微程序控制
  • 特别重视编译优化工作,以减少程序执行时间

X86汇编

动态微程序设计:需要可写控制寄存器支持,可采用EPROM(可擦可编程只读存储器)

毫微程序设计:若硬件不由不由微程序控制,即由 存放在第二级控制存储器 的 毫微程序解释,并直接控制硬件

微操作:计算机最基本、不可再分解的操作;

微命令:将控制部件 向 执行部件 发出的各种指令,构成控制序列的最小单元,相容性微命令 可以同时产生、共同完成一些微操作,互斥性微命令 机器中不允许同时出现的微命令;

  • 微命令与微操作一 一对应,微命令是微操作的控制信号,微操作是微命令的执行过程。
    微地址:存放微指令的控制存储器的单元地址;
    微指令:若干微命令的集合,(1)操作控制字段(操作码),(2)顺序控制字段(地址码);
    微周期:从控制存储器中读取一条微指令并执行相应微操作所需的时间;
    主存储器:存放程序、数据,CPU外部,RAM实现;
    控制存储器CM:存放微程序,CPU内部,ROM实现;
    程序:机器指令的有序集合,完成特定的功能,软件设计员事先放在 主存 或 辅存 中;
    微程序:微指令的有序集合,一条指令的功能由另一段微程序实现,描述机器语言,实时解释器由计算机设计者事先存放在 控制存储器 ,一般并提供用户使用。

对比项目\类别

工作原理

  • 微程序控制信号以微程序的形式存放
    在控制器中,执行指令时读出即可
  • 微操作控制信号由组合逻辑电路根据当前
    指令码、状态、时序,即时产生

执行速度

规整性

  • 较规整
  • 烦琐、不规则

应用场合

  • CISC CPU
  • RISC CPU

易扩展性

  • 易扩展修改
  • 不易

DMA与中断区别

中断是程序切换,需要保护和恢复现场;

DMA只有预处理和后处理需要占用CPU资源

中断请求的响应只能发生在每条指令执行完成时(指令执行周期后);

DMA请求响应,只要在CPU不占用总线,可以在每个机器周期结束时(在取指周期、间指周期、执行周期后均可)

中断传送过程需要CPU干预;

DMA传送过程无需CPU干预,数据传输率高,故而适合高速外设的成组数据传送

DMA请求优先级高于中断请求

中断方式具有对异常事件的处理能力;

DMA仅局限于 传送数据块的 I/O操作

从数据传送看,中断方式依靠程序传送;

DMA依靠硬件传送

存储器芯片内部结构

存储体(存储矩阵):存储单元集合。由 行选择线 (X) 和 列选择线 (Y) 来选择所访问单元,存储体的相同行、列上的位同时被读出或写入

地址译码器:将地址转换为译码输出线上的高电平,以驱动相应的读写电路

I/O 控制电路:控制被选中单元的读写,具有放大信息作用

片选控制信号:在访问某个字时,必须选中该存储字所在芯片,其它芯片不被选中

读/写控制信号:根据CPU命令,控制选中单元进行读写

主存储器基本组成

指令执行过程中需要访问主存时,CPU首先把 访问单元的地址 送到 MAR 中,通过 地址线 将 主存地址 送到 主存 中的 地址寄存器,以便地址译码器进行译码选中相应单元,同时CPU将读写信号通过 控制线 送到 主存 的 读写控制电路

写操作,CPU同时将要写的信息送到 MDR 中,在读写控制电路控制下,经 数据线 将信号写入选中单元

读操作,主存读出选中内容送到 数据线,然后送到 MDR 中。

数据线宽度 与 MDR的宽度相同

地址线的宽度 与 MAR 的宽度相同
地址线的位数决定了主存地址空间的最大寻址范围
数据线数和地址线数共同反映存储体容量大小

总结

类型

  • 参与运算

    • 部分积

      • 乘数

  • 方向 次数 每位次数

原码一位乘法

  •               否                    2位                 0位
    
  •               n
    
  •               右                 n                    1
    

补码一位乘法

  •               是                    2位                 1位
    
  •               n + 1
    
  •               右                 n                    1
    

原码加减交替(除)法

  •               否                      -                      -
    
  •               N + 1 或 N + 2
    
  •               左                N                   
    
  •               若最终余数为负,需恢复余数
    

补码加减交替(除)法

  •               是                      -                      -
    
  •               N + 1
    
  •               左                N                   
    
  •               商末位恒置1
    
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值