首页 > 其他分享 >哈工大刘宏伟老师《计算机组成原理》课程笔记

哈工大刘宏伟老师《计算机组成原理》课程笔记

时间:2022-10-03 20:34:56浏览次数:57  
标签:中断 总线 笔记 宏伟 地址 哈工大 指令 寄存器 CPU

目录

1.0 课程简介

  • 计算机组成原理位于计算机课程硬件部分的最上层,如何实现计算机体系结构所体现的属性(如何实现指令)

  • 计算机系统结构是连接软硬件的桥梁部分,核心内容是指令集,机器语言程序员编写在硬件系统上运行的程序所用到的计算机属性(用到哪些指令)

1.1 计算机系统简介

  • 计算机软件分为系统软件和应用软件,系统软件用来管理整个计算机系统资源,包括语言处理程序、操作系统、服务性程序、数据库管理系统、网络软件等,应用软件是按任务需要编制成的各种程序
  • 系统软件借助硬件接口(如指令集)来完成功能,应用软件调用系统软件接口来实现具体任务

1.2 计算机的基本组成

1.2.1 冯诺依曼计算机

(1)特点

  • 计算机由五大部件组成
  • 指令和数据以同等地位存于存储器,按地址寻访
  • 指令和数据用二进制表示
  • 指令由操作码和地址码组成
  • 存储程序(核心特点)
  • 以运算器为中心

(2)硬件组成

  • 存储器用来存放数据和程序
  • 控制器用于指挥程序运行
  • 运算器包含算术运算和逻辑运算
  • 输入输出设备用于转化信息形式

1.2.2 现代计算机硬件框图

  • 以存储器为中心的计算机硬件框图 :输入输出设备同存储器打交道,减小运算器压力
  • 计算机硬件包括主机和IO设备,主机包括CPU和主存,CPU包括运算器ALU和控制器CU

1.2.3 存储器

  • 存储器由存储体、MAR和MDR组成

  • 存储体由一块块存储单元组成,存储单元中存放一串二进制代码,存储字是存储单元中二进制代码的组合,存储字长是存储单元中二进制代码的位数,每个存储单元都有一个地址号,按地址寻访

  • MAR是存储器地址寄存器,保存存储单元地址和编号,长度反应存储单元个数

  • MDR是存储器数据寄存器,保存要存入和要取出的数据,长度反应存储单元字长

1.2.4 运算器

  • 运算器由算术逻辑单元(ALU)和寄存器组成,ALU是组合电路,需要寄存器参与保存运算
  • 数据寄存器X保存输入,ACC为累加寄存器,MQ用来保存乘除数据

  • 乘法的微操作过程

1.2.5控制器

(1)控制器的功能:

  • 解释指令(取指令、分析、取操作数、执行、保存)、保证指令的按序执行

(2)控制器的组成

  • 控制器由程序计数器(PC)、指令寄存器(IR)和控制单元(CU)组成
  • 完成一条指令需要取指令(PC),分析指令(IR)和执行指令(CU)
  • PC寄存器保存当前指令的地址,具有计数功能
  • IR寄存器存放当前要执行的指令,将操作码送入CU分析
  • CU发出控制信号,控制相应部件来完成一系列微操作,从而执行指令

(3)以取数指令为例,分析主机完成一条指令的过程

(4)ax^2+bx+c程序的执行过程

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

  • 机器字长:CPU一次能处理数据的位数,与CPU中寄存器位数有关
  • 运算速度:主频(时钟周期的倒数,有关但不是决定)、核数及每个核支持的线程数、CPI(执行一条指令所需的时钟周期数)、MIPS(每秒执行百万条指令)、FLOPS(每秒浮点运算次数)
  • 存储容量:主存容量(可使用存储单元个数*存储字长来表示存储体容量,MAR * MDR;也可使用字节数来表示)、辅存容量(字节数表示)

3.1 总线的基本概念

  • 总线是各个部件共享的传输介质,是信号的公共传输线,同一时刻只能在两个部件间传输信息
  • 以存储器为中心的双总线结构,但主存仍然无法同时向系统总线和存储总线传输信息

3.2 总线的分类

(1)片内总线:芯片内部的总线

(2)系统总线:计算机各部件之间的信息传输,分为

  • 数据总线,双向,一般小于等于机器字长和存储字长
  • 地址总线,单向,与存储地址、I/O地址有关
  • 控制总线:双向(CPU发出存储器读写指令,总线允许,中断确认等;CPU接受中断请求,总线请求等)

3.3 总线的性能指标

  • 总线宽度:同时可以传输多少位数据,数据线的根数
  • 标准传输率:每秒传输的最大字节数MBps

3.4 总线控制

3.4.1 总线判优控制

  • 通过是否能对总线发出占用请求,将设备分为主设备(主模块)和从设备(从模块)。主设备可以对总线有控制权,从设备响应从主设备发来的总线命令。
  • 总线判优控制可以分为集中式和分布式,下面介绍集中集中式总线判优控制结构

(1)链式查询方式

  • 总线控制部件通过BG来链式查询这些接口是否提出了BR,遇到了BR则交出控制权

(2)计数器定时查询方式

  • 通过设备地址线来查找某个设备是否发出总线请求。计数器的值通过设备地址线进行传输,来查找某个设备是否发出请求。可以自定义计数器的计数方式,来改变从哪个设备先查询等。

(3)独立请求方式

  • 为每个I/O接口增加了BR和BG,通过排队器来进行优先级排队。这种方式使用的线数较多。

3.4.2 总线通信控制

  • 目的是解决通信双方(主从设备)协调配合的问题

(1)总线传输周期(完成一次主从设备传输所需时间)

  • 申请分配阶段:主设备申请,总线决定
  • 寻址阶段:主设备向从设备给出地址和命令
  • 传数阶段:主从设备数据交换
  • 结束阶段:主从设备撤销信息

(2)总线通信四种方式

  • 同步通信:由统一时钟控制数据传送
  • 异步通信:没有统一时钟,采用应答方式
  • 半同步通信:同步异步结合
  • 分离式通信:充分挖掘系统总线每个瞬间的潜力

(3)同步通信

  • 强制同步,如果设备间速度不同,需要等待慢的设备

(4)异步通信

  • 不互锁:不管从设备是否接收到请求信号,过段时间主设备都会撤销请求。不管主设备是否接收到应答信号,从设备多段时间都会撤销应答
  • 半互锁和全互锁针对上面进行改进

(5)半同步通信

  • 同步异步结合,增加等待响应信号,当数据没准备好时,WAIT为低电平,等待一个T

(6)分离式通信

  • 上述三种通信的共同点:

    • 一个总线传输周期内:
    • 主模块发地址、命令占用总线;
    • 从模块准备数据时不占用总线,总线空闲;
    • 从模块向主模块发数据时,占用总线
  • 通过分离式通信将总线空闲的时间利用起来

  • 分离式通信的总线传输周期分为两个子周期

    • 第一个子周期,主模块申请占用总线,用完后放弃总线使用权;
    • 第二个子周期从模块申请占用总线(变为主模块),传输信息
  • 分离式通信特点:

    • 各模块有权申请占用总线;
    • 采用同步方式通信,不等应答;
    • 各模块准备数据时,不占用总线;
    • 充分提高了总线的有效占用;

4.1 存储器分类

4.1.1 按存储介质分类

  • 半导体存储器,是易失的,分为TTL(晶体管,速度快,电流控制)和CMOS(金属氧化物半导体,功耗小,电压控制)
  • 磁表面存储器
  • 磁芯存储器
  • 光盘存储器

4.1.2 按存取方式分类

(1)存取时间与物理地址无关(随机访问)

  • 随机存储器 可读可写 RAM
  • 只读存储器 只读 ROM

(2)存取时间与物理地址有关(串行访问)

  • 顺序存取存储器 磁带
  • 直接存取存储器 磁盘

4.1.3 按在计算机中的作用分类

(1)主存储器

  • RAM(分为静态RAM和动态RAM)
  • ROM(MROM、PROM、EPROM、EEPROM)

(2)Flash Memory

  • 介于主存和辅存之间,SSD,U盘

(3)高速缓冲存储器(cache)

  • 介于CPU和主存之间

(4)辅助存储器

  • 磁盘、磁带、光盘

4.2 存储器的层次结构

(1)分层结构

  • 寄存器分为体系结构寄存器(指令可操作)和非体系结构寄存器(指令不可操作)
  • 一部分缓存在CPU中

(2)缓存—主存层次和主存—辅存层次

  • 缓存——主存层次,使用硬件方法连接到一个整体(对程序员透明,即不需要了解),解决CPU和主存之间速度差距较大的问题,缓存即为cache,CPU可以直接从缓存调用数据,cache和主存也进行数据交换。使用主存储器的实地址和物理地址。
  • 主存——辅存层次,使用软硬件结合方式连接,解决容量不足问题。这个层次称为虚拟存储器,使用虚地址和逻辑地址。

4.3 主存储器

4.3.1 概述

(1)主存与CPU之间的联系

(2)主存中存储单元地址的分配

  • 寻址指当CPU请求数据时获得该数据在内存上的位置的过程

  • 地址是按字节进行编码的,也就是说以字节为单位分配的

  • 字节是硬件能访问的最小单位,需要访问某一位要用到位运算符

  • 按字和按字节寻址:访问的地址范围是一样的,只是方式的不同(按字访问需要预留专门的地址线来访问内部的字节)

4.3.2 半导体存储芯片简介

(1)基本结构

(2)片选线

  • 第4组上存储第48K到64K个存储单元

  • 片选线的作用是能够同时访问8位数据

(3)译码驱动方式

  • 通过重合法能够减少译码线根数

4.3.3 RAM和ROM

  • RAM(随机存取存储器)和ROM(只读存储器)都是半导体存储器
  • RAM断电易失,分为静态SRAM和动态DRAM,SRAM由触发器电路组成,速度快,功耗大,造价高,用于Cache,DRAM由CMOS电容组成,速度慢,数据保留时间短,需要充电刷新,用于内存条
  • ROM分为MROM、PROM、EPROM、EEPROM,主要用于BIOS,闪存由ROM发展而来

4.3.4 存储器与CPU的连接

  • 地址线、数据线、读写命令线和片选线

4.4 高速缓冲存储器

4.4.1 概述

(1)提出

  • 避免CPU“空等”现象
  • 程序访问的局部性原理:时间和空间

(2)Cache的工作原理

  • 主存和缓存都按块存储,块的大小相同
  • 如果主存块已调入缓存,则CPU访问时称作命中,否则未命中
  • Cache的命中率:CPU欲访问的信息在Cache中的比率

(3)Cache的基本结构

  • Cache存储体、主存Cache地址映射变换机构、Cache替换机构

(4)Cache的读写操作

  • 写时需要注意Cache和主存的一致性,有写直达法(既写Cache又写内存),写回法(只写Cache,只在Cache数据被替换时才写回主存)

4.5 辅助存储器

  • 不直接与CPU交换信息

  • 磁记录原理:写时线圈通电改变磁化单元方向表示0、1,读时线圈移动切割磁感线产生不同方向电流

5.1 输入输出系统概述

(1)输入输出系统的组成

  • IO软件(包括IO指令和通道指令)、IO硬件

  • CPU将IO指令交予IO通道来处理,通道程序可以执行IO操作

  • IO硬件分为设备和接口,设备通过接口连接到总线上

  • 采用通道方式的话,IO硬件可分为设备、设备控制器和通道

(2)IO设备编址方式

  • 统一编址:IO设备地址为内存地址的一部分,取数、存数指令是CPU指令的一部分
  • 不统一编址:有专门的IO指令

(3)IO设备和主机信息传送的控制方式

  • 程序查询方式:CPU等待IO准备数据

  • 程序中断方式:CPU和IO并行,IO准备好后发出中断请求,CPU保存现场,执行中断服务程序

  • DMA:IO通过DMA控制器,进行周期挪用,直接和内存交互,一个存取周期内,CPU不能使用系统总线访问内存

6.1 无符号数和有符号数

6.1.1 无符号数

  • 没有正负号,寄存器位数即为无符号数表示范围

6.1.2 有符号数

  • 真值转化为机器数,机器数保存符号、小数点位置及其数值

(1)原码表示

  • 整数:符号位+, +数值部分,符号位0正1负
  • 小数:符号位+. +小数部分,符号位0正1负
  • ,和.方便阅读,都不在计算机中存储

(2)补码表示

  • 将减法转化为加法,“模”的概念,相当于用一个与负数等价的正数来代替负数

(3)三种机器数的对比

  • 最高位为符号位,书写上用","(整数)和"."(小数)将数值部分和符号位隔开
  • 对于正数,原码=补码=反码
  • 对于负数,符号位为1,数值部分:补码为原码除符号位外每位取反加1,反码为原码除符号位外每位取反

(4)移码

  • 用于直接判断真值大小
  • 移码同补码的数值位相同,符号位取反

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

6.2.1 定点表示

  • 按照约定方式确定小数点位置,在数符和数值间称为小数定点机,在数值后为整数定点机
  • 定点表示的数范围小

6.2.2 浮点表示

  • N=S*r^j,S为尾数,为小数,可正可负,j为阶码,为整数,可正可负,r为基址,通常为2
  • 原码/补码/反码表示形式:j的原码/补码/反码的整数形式+; +S的原码/补码/反码的小数形式
  • 上溢:阶码>最大阶码,下溢:阶码<最小阶码,按机器零处理

6.2.3 定点运算

  • 定点数的乘法可以转化为移位运算和加法运算

7.1 机器指令

  • 指令系统是硬件和软件的中间层

  • 当减少地址数(比如使用寄存器)后,能够增大指令的寻址范围、缩短指令字长或者减少访存次数

  • 指令字长取决于操作码长度、操作数地址长度和操作数地址个数

  • 指令字长固定的话,指令字长可以等于存储字长,可变的话,可以按字节的倍数变化

7.2 操作数类型和操作种类

7.2.1 数据在存储器中的存放方式

  • 边界对准方式:数据存放的起始地址是数据长度的整数倍,既可以在一个周期内完成存储访问,也不太浪费存储空间

7.2.2 操作类型

(1)陷阱指令:意外事故的中断

  • 一般不给用户使用,出现事故时,由CPU自动产生并执行(隐指令)
  • 设置供用户使用的陷阱指令,如INT TYPE(软中断),用户使用完成系统调用

(2)输入输出

  • 入:端口中的数据—>CPU寄存器
  • 出:CPU寄存器—>端口数据

7.3 寻址方式

  • 分为指令的寻址(确定下一跳指令的地址)和数据的寻址(确定本条指令的操作数地址)

7.3.1 指令寻址

  • 分为顺序寻址(PC+1,按字和字节编制方式加的数不一样)和跳跃寻址(JMP等)

7.3.2 数据寻址

  • 指令格式:操作码+寻址特征+形式地址A
  • 形式地址(A):指令字中的地址,有效地址(EA):操作数的真实地址

(1)立即寻址

  • 形式地址就是操作数
  • 不访存

(2)直接寻址

  • 有效地址由形式地址直接给出
  • 访一次存,操作数地址不易修改

(3)隐含寻址

  • 操作数地址隐藏在操作码中
  • ADD、MOVS

(4)间接寻址

  • 有效地址由形式地址间接提供
  • 多次访存,可扩大寻址范围,便于编制程序(不用该形式地址,只用改里面的值)

(5)寄存器寻址

  • 有效地址为寄存器编号

(6)寄存器间接寻址

  • 有效地址在寄存器中
  • 便于编制循环程序

(7)基址寻址

  • 采用专用寄存器Br作为基址寄存器,程序执行过程中,Br内容不变,形式地址可变,有利于多道程序
  • 采用通用寄存器Ro作为基址寄存器,用户指定通用寄存器,Ro内容不变,形式地址可变

(8)变址寻址

  • 采用IX或者通用寄存器作为变址寄存器
  • EA=(IX)+A
  • IX内容可变,形式地址不变
  • 便于处理数组问题

(9)相对寻址

  • EA=(PC)+A
  • A相对于当前指令的位移量,用补码
  • 便于程序浮动,广泛用于转移指令

(10)堆栈寻址

  • 分为硬堆栈(由寄存器存储数据)和软堆栈(指定存储空间)
  • 借助ESP寄存器

7.4 指令格式举例

  • IBM 360
  • Intel 8086:指令字长1~6个字节,地址格式包含零地址、一地址、二地址

7.5 RISC和CISC

7.5.1 RISC(精简指令集)

  • 选用频度高的简单指令,复杂指令由简单指令来组合
  • 指令长度固定,格式少
  • 只有LOAD/STORE指令访存
  • 采用流水技术,一个时钟周期完成一条指令
  • 采用组合逻辑实现控制器

7.5.2 CISC(复杂指令集)

  • 指令复杂庞大,长度不固定,各市多
  • 访存指令不收限制
  • 大多数指令需要多个时钟周期来执行
  • 采用微程序控制器

7.5.3 处理器分类

  • x86是CISC,ARM、MIPS和RISC-V是RISC

8.1 CPU的结构

8.1.1 CPU功能

8.1.2 CPU结构

8.2 指令周期

  • 取出并执行一条指令所需的全部时间,包括取指周期、间址周期、执行周期和中断周期四个机器周期
  • 间址周期是从内存中取出地址码的时间
  • CPU周期又称机器周期,CPU完成基本操作所需用时,通常用内存读取一个字指令字的时间来表示
  • 时钟周期又称震荡周期,是时钟频率(主频)的倒数,CPU完成最基本动作,最小单位,控制产生一个或多个并行的微操作命令

8.3 指令流水

8.3.1 提高机器速度

  • 提高访存速度(Cache)
  • 提高IO和主机之间的传送速度(中断、DMA、通道)
  • 提高运算器速度(改进算法)
  • 提高整机处理能力(开发系统的并行性)

8.3.2 系统的并行性

  • 并发(同一时间段)和同时(同一时刻)
  • 并行的等级:过程级(程序和进程,由软件实现)、指令级(指令内部和之间,由硬件实现)

8.3.3 指令流水原理

  • 将指令周期划分为多个阶段,不同部件完成当前指令后不用等待,进入下一个指令
  • 二级流水、多级流水

8.3.4 影响指令流水线性能的因素

  • 结构相关:不同指令争用同一功能部件
  • 数据相关:不同指令访问操作数时的冲突,使用旁路技术(也称前向通道)解决,不用等待写入主存或寄存器,直接送入下一个指令
  • 控制相关:由条件转移指令引起,只有执行后才知道下一个指令是什么

8.3.5 流水线的多发技术

  • 超标量技术:每个时钟周期内可并发多条指令
  • 超流水线技术:一个时钟周期内再分段
  • 超长指令字技术:由编译器挖掘指令的并行性,将多条指令组成一条多个操作码字段的超长指令字

8.3.6 流水线结构

  • 指令流水线结构:对完成指令的周期分段
  • 运算流水线结构:对运算周期进行分段

8.4 中断系统

8.4.1 引起中断的因素

  • 人为设置的中断,如转管指令
  • 程序性事故,如溢出,除法错误
  • 硬件故障
  • IO设备
  • 外部事件,如键盘中断程序

8.4.2 中断请求标记和中断判优逻辑

  • 一个请求源对应一个INTR中断请求标记触发器
  • 中断判优逻辑接口电路

8.4.3 中断服务程序入口地址查询

  • 硬件向量法

  • 软件查询法

8.4.4 中断响应

(1)响应中断的条件

  • CPU允许中断触发器EINT=1

(2)响应中断的时间

  • 指令执行周期结束时刻由CPU发查询信号至各个INTR

(3)中断隐指令:不是指令,由硬件直接实现

  • 保护程序断点:存于特定地址内或者进栈
  • 寻找服务程序入口:硬件向量法(PC=向量地址)或者软件查询法(PC=中断识别程序入口地址)
  • 硬件关中断EINT=0

8.4.5 保护现场和恢复现场

(1)保护现场

  • 保护断点,由中断隐指令完成
  • 保存寄存器内容,由中断服务程序完成

(2)恢复现场

  • 由中断服务程序完成

8.4.6 多重中断

(1)概念

  • 执行中断服务程序过程中,收到更重要的中断请求

(2)实现多重中断的条件

  • 提前开中断
  • 优先级高的中断源有权中断优先级低的中断源

(3)屏蔽技术

  • 通过屏蔽触发器,设置中断屏蔽字,调整中断的优先级
  • 只能改变处理的优先级,不能改变响应的优先级
  • 流程:保护现场->置屏蔽字->开中断->中断服务->关中断->恢复现场->恢复屏蔽字->开中断->中断返回

9.1 微操作命令的分析

  • 一条指令的四个周期内所要做的微操作命令
  • 微操作命令:可以理解为针对寄存器和存储器的基本操作

9.2 控制单元

  • 控制方式:产生不同微操作命令序列所用的时序控制方式

(1)同步控制方式:任一微操作由统一基准时序信号控制

(2)异步控制方式:采用应答方式(如IO操作)

(3)联合控制方式

(4)人工控制方式:Reset、停机开关

10.1 组合逻辑设计

  • 控制器的设计分为组合逻辑设计(RISC)和微程序设计(CISC)

(1)组合逻辑设计步骤

  • 安排微操作时序

  • 列出操作时间表(在哪个节拍执行哪些微操作,哪些指令会用到)

  • 写出微操作命令的最简表达式(在什么条件下会用到该微操作命令)

  • 画出逻辑图

(2)微程序设计思想

  • 一条机器指令由多个微操作命令组成,将同一节拍内的几个并行的微操作命令组成微指令
  • 微指令(例10100000)为1的部分表示在当前节拍为高电平时有效的微操作命令
  • 微指令组成微程序,一条机器指令对应一个微程序,存入控制存储器(ROM)
  • 设计思想为存储逻辑

(3)微程序控制单元的基本框图

标签:中断,总线,笔记,宏伟,地址,哈工大,指令,寄存器,CPU
From: https://www.cnblogs.com/z5onk0/p/16751168.html

相关文章

  • 《Unix&Linux系统编程》第七章学习笔记
    第11章EXT2文件系统Linux一直使用EXT2作为默认文件系统。EXT3是EXT2的扩展,增加了一个日志文件,它将文件系统的变更记录在日志中,日志可在文件系统崩溃时更快地从错误中恢复......
  • 《Unix/Linux系统编程》第五周学习笔记
    《Unix/Linux系统编程》第五周学习笔记EXT2文件系统ext2功能Ext2(第二扩充文件系统)是一种功能强大、易扩充、性能上进行全面的优化的文件系统,也是目前Linux文件系统实际......
  • 20201322陈俊池学习笔记5
    第十一章EXT2文件系统一、知识点归纳11.1EXT2文件系统Linux一直将EXT2作为默认文件系统。EXT3是EXT2的扩展。EXT3中增加的主要内容是一个日志文件,他将文件系统的变更......
  • 第十一章学习笔记
     第十一章主要内容:EXT2文件系统及其数据结构 什么是EXT2文件系统 EXT2第二代扩展文件系统secondextendedfilesystem,缩写为ext2,是LINUX内核所用的文件系统。......
  • Springboot笔记
    SpringBootHelloWorld1.创建Meven工程2.引入依赖pom.xml<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</a......
  • Ipyton使用笔记[1003]
    第一次使用:字符串操作   In[1]:lst=[11,12,13,7,1,3,2,2,5,6,10,7]In[2]:lstOut[2]:[11,12,13,7,1,3,2,2,5,6,10,7]In[3]:lst1=[11,12,13,......
  • Visual Studio Code= 笔记
    第一次ES6//letschool='magedu'//console.log(school.charAt(2))//g//console.log(school[2])//g//console.log(school.toUpperCase())//MAGEDU//console......
  • 树链剖分学习笔记(未完)
    思想树链剖分用于将树分割成若干条链的形式,以维护树上路径的信息。具体来说,将整棵树剖分为若干条链,使它组合成线性结构,然后用其他的数据结构维护信息。重链剖分原理首......
  • 信安系统学习笔记五
    第十一章EXT2文件系统一.知识点归纳EXT2文件系统TheSecondExtendedFileSystem(ext2)文件系统是Linux系统中的标准文件系统,是通过对Minix的文件系统进行扩展而得到......
  • Jenkins 20220927笔记本4
                          ......