§1 计算机概论

数组计算机由运算器,存储器,控制器输入输出设备构成(冯诺依曼)
控制器用于产生微命令,控制全机操作。微命令产生方式有两种,一是组合逻辑电路产生,二是微程序产生。对应硬布线控制器和微程序控制器
总线是为多个部件分时共享的一组信息传输线路,其分类如下

总线分类

计算机的性能指标有1.基本字长 2.存储容量 3.运算速度(cpi|mips|时钟频率) 4.带宽

§2 数据表示及运算

定点/浮点及其表示

定点数可分纯小数和纯整数。对于n位数值位,纯小数的表示范围为$[0,1-2^{-n}]$,纯整数的表示范围为$[0,2^n-1]$。
在计算机中,浮点数N可表示为$N=2^e.M$,M为尾数,e为阶码。

在IEEE754标准中,浮点数的阶码采用移码方式,在尾数前面隐含了一个1(转十进制时需手动加入);而尾数必须规格化(非0的尾数,其绝对值应大于或等于0.5)。因为阶码使用移码,所以实际值和阶码存在一个偏移值,在32位浮点数中有$E=e+127$,在64位浮点数中有$E=e+1024$,其中E为移码,e为实际指数,因此在32位浮点数中有$e\in[-126,127]$,可用于判断是否溢出。当阶码尾数全0时,表示0;当阶码全1尾数全0时表示无穷

对于补码表示的尾数,其规格化满足(小数点前的是符号位)
$$
\left{
\begin{array}{l}
0.1xxxxxxx \quad positive,{1\over 2}\leq|M|<1 \ \ 1.0xxx1xxx \quad negative,{1\over2}<|M|<1
\end{array}
\right.
$$
而对于原码表示的尾数其形式为 $.1xxxxxx$ 并满足 ${1\over 2}\leq|M|<1$


数据表示有原码,补码和移码,下面是转换方式

  • 补码$\rightleftharpoons$原码:对于负数符号位不变,从右往左找第一个’1‘,该位置左边的数求反
  • 补码$\rightleftharpoons$移码:符号位求反
  • 原码$\rightleftharpoons$移码:$[e]_{yi}=2^k+e,2^k>e\ge -2^k$,k为数值位个数,e不带符号位

定点加减除法

$$[x+y]{bu}=[x]{bu}+[y]{bu}$$
$$[x-y]
{bu}=[x]{bu}+[-y]{bu}$$
[y]求[-y]:称为变补,包括符号位取反末尾加1
两负或两正相加时可能溢出,溢出判断:符进⊕数进/双符号位是否一样


定点除法首先判断除数是否大于被除数(绝对值),是可行,否溢出。除法两种方法,一是扩余法、二是缩除法,两者都使用加减交替法(商0加y,商1减y),一个缩除法例子如下

定点除法,缩除法

浮点加减法

浮点加减法分以下四步

  • 0检查
  • 小阶向大阶对齐
  • 尾数相加减
  • 结果可能规格化和舍入

对于结果M如果$|M|<{1\over 2}$或表现为00.0xxx或11.1xxx时,需要左规;如果$|M|>1$或表现为01.xxx或10.1xxx时,需要右规

§3 存储器

存储器概述

按系统内地位存储器可分为,主存、外存和高速缓存
按存储介质存储器可分为半导体存储器、磁表面存储器、光盘存储器等
按存取方式存储器可分为随机存储器、顺序存储器、直接存取存储器等
存储器的技术指标有存储容量、存取时间、存储周期、存储器带宽


SRAM静态读写存储器,相比DRAM动态存储器速度快,容量小。DRAM使用电容存储信息需要定时刷新,刷新方法有集中刷新、分散刷新(每行刷新插到读写周期中)和异步刷新

ROM只读存储器,如EPROM、EEPROM、flash

存储器设计

位扩展,地址线相同,扩展数据线。单元扩展,数据线相同,扩展地址线。
设计时请务必画图,并注意片选逻辑

存储器技术

如果想给cpu和主存的通信提速,可以提高存储器单元的字长、使用双端口存储器、使用交叉存储器或使用cache

双端口存储器拥有两组相互独立的读写控制电路,端口上设置了$\overline{vusy}$标志。当两个端口的地址不相同时,两个端口上的读写不会发生冲突;当两个端口的地址相同并一读一写时,优先允许一方操作并给对方设置$\overline{vusy}$标志(低电平)以暂时禁止对方操作。

一个由若干个模块组成的主存储器是线性编址的,这些地址在各模块有两种安排方式:顺序方式和交叉方式。

  • 在顺序方式中某个模块进行存取时其他模块不工作,模块间串行工作因此带宽受限$t=nT$。
  • 在交叉方式中连续地址分布在相邻的不同模块内,对连续字的成块传送可实现多模块流水式并行存取,大大提高存储器的带宽。$t=T+(n-1)\tau$
  • 若模块存取一个字的周期为T,总线传送周期为$\tau$,交叉模块数为m,流水式存取要求$T=m\tau$,$m={T\over \tau}$称为交叉存取度,模块数必须大于等于m

cache是一种高速缓冲存储器,是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。
在一个程序执行期间,若$N_c$表示cache完成存取的次数,$N_m$表示内存完成存取的次数,则cache的命中率h为
$$h={N_c\over N_c+N_m}$$
若$t_c$表示命中时cache访问时间,$t_m$表示未命中时内存访问时间,则cache/主存系统的平均访问时间$t_a$为
$$t_a=ht_c+(1-h)t_m$$
设$r={t_m\over t_c}$表示主存慢于cache的倍率,访存效率e为
$$e={t_c\over t_a}={1\over r+(1-r)h}$$


主存和cache的地址映射有全相联映射,直接映射和组相联映射

  • 全相联映射:主存的一个块直接拷贝到cache中的任意一行上,灵活但难设计实现。cache的标记为内存中的块号
  • 直接映射:一个主存块只能拷贝到cache的一个特定行位置上去,cache的行号$i$和主存的块号$j$有如下函数关系:$i=j \mod m$(m为cache行数)。简单低成本但易冲突。内存中块号(s位),后r位用于cache行定位,前s-r位(标记)用于最后命中比较
  • 组相联映射:将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪一行是不定的。内存中块号(s位),后d位用于cache组定位,前s-d位(标记)用于和该组中的所有行进行命中比较

caceh的替换策略有 最不经常使用(LFU)、近期最少使用(LRU)、随机替换
cache的操作策略有 写回法(被修改被换出时写回)、全写法(cache内存同步改)、写一次法(同写回法,但是第一次命中时同时写入内存)

§4 指令系统

一个完善的指令系统应满足:完备性、有效性、规整性、兼容性

指令格式

指令的基本格式为

操作码 OP 地址码 A

其中地址码可多个,根据地址码的个数,有分零/一/二/三地址指令
根据操作数的位置(寄存器/存储器),指令又可分RR/SS/RS型指令
根据指令长度,可分单/双/三字长指令,通常指令长度越长越不利于提高机器速度
/!!分析指令格式可从上面几点分析,再加上指令条数!!/

显地址方式:指令中明显指明地址。
隐地址方式:地址隐含约定,不出现在指令中。使用隐地址可以减少指令中的地址数,简化地址结构。

指令和数据寻址方式

注意两者不要搞混!!
指令寻址方式有两种,顺序寻址方式跳跃寻址方式

操作数寻址是指寻找操作数地址或操作数的方式,有很多种

  • 立即寻址:指令直接给出操作数
  • 直接寻址:指令直接给出操作数地址(寄存器/内存中),特别的有寄存器直接寻址
  • 间接寻址:指令给出操作数的间接地址(寄存器/内存中),特别的有寄存器间接寻址
  • 基址寻址:寄存器中是内存地址,加上一个偏移量(定值)得到有效地址
  • 变址寻址:指令给出一个寄存器号和一个地址量,寄存器值(可变)与地址量之和为有效地址
  • 相对寻址:隐含使用PC,PC加上给出的偏移量得到有效地址
  • 还有段寻址和堆栈寻址

/!!分析寻址方式可分析寻址方式个数,寄存器个数!!/

为I/O端口分配地址的方式有两种:单独编址(只要地址)、统一编址(要地址和空间)
I/O指令设置方式有两种:专用I/O指令(显式I/O指令)、传送指令实现(隐式I/O指令)

§5 CPU

CPU组成功能

cpu四功能:指令控制、操作控制、时间控制、数据加工
cpu由控制器和运算器组成
cpu中的主要寄存器,分析时要用到

  • 指令寄存器IR:存放当前正在执行的指令
  • 程序计数器PC:指示下条指令在存储器中的位置,会自增(分析时的起点)
  • 程序状态字寄存器PSW:记录当前程序的运行状态和工作方式
  • 地址寄存器AR:保存当前CPU所访问的数据cache存储器中单元的地址
  • 数据缓冲寄存器DR:存放CPU与主存之间交换的数据

指令周期

CPU周期/机器周期,通常用内存中读取一个指令字的最短时间来规定,一个cpu周期包含若干个时钟周期
CPU取出并执行一条指令所需用的时间叫做一个指令周期,指令周期包含两个及以上的cpu周期(非访存指令需2个cpu周期并在第一个周期中完成取址计数译码)

微程序控制器

硬布线控制器中时序信号采用主状态周期——节拍电位—节拍脉冲 三级体制,分别对应指令周期、cpu周期、时钟周期
控制器/时序控制方式有如下

  • 同步控制:各项操作受统一时序控制。时序关系简单,时序划分规整,控制逻辑简单但是时间安排不合理。部件速度相近/位置相近使用
  • 异步控制:各项操作按不同需要安排时间,不受统一时序控制,采用异步应答方式。时间安排紧凑、合理但是控制复杂。部件速度差异大/传送时间不确定时使用
  • 混合方式:不同指令安排不同时钟周期数,总线周期中插入延长周期,同步方式引入异步应答

组合逻辑控制方式产生微命令速度快,但是设计复杂,不易修改扩展


微程序控制器中时序信号采用节拍电位——节拍脉冲二级体制。
若干微命令编制成一条微指令,若干微指令组成一段微程序,解释执行一条机器指令。执行微命令的过程称微操作,微操作可分为相容性和相斥性两种。
微指令的基本格式分操作控制和顺序控制两部分

操作控制 顺序控制

按微指令格式分类有垂直型微指令、水平型微指令和混合型微指令

  • 垂直型微指令:一条微指令定义并执行一种基本操作。微指令短而简单,易于编写微程序;但是写出来的微程序长,执行慢效率低
  • 水平型微指令:一条微指令定义并执行几种并行的基本操作。微程序短,执行速度快;但微指令长,不便于写微程序
  • 混合型微指令:在垂直型的基础上增加一些不太复杂的并行操作,综合以上优点

微指令的编码方法有直接控制法(微命令按位给出)、分段直接/间接编译法

微指令的顺序控制部分用来生成下条微指令的地址(后继微地址),生成的方法有两种:增量方式断定方式。断定方式的条件有n位标志,可实现2^n^路跳转,涉及为地址寄存器的n位,其原理如下

断定方式

微程序控制方式易于修改、扩展指令系统功能,性价比高但是速度慢执行效率不高

流水CPU

广义上并行性有两种含义:同时性和并发性。并行性有三种形式分别是时间并行、空间并行、时空并行。

  • 时间并行:指时间重叠
  • 空间并行:指资源重复
  • 时空并行:拥有两种特点

流水线中有三种相关冲突分别是资源相关、数据相关、控制相关

  • 资源相关:多个指令争夺使用同个部件,解决方法是延迟一方使用或增加部件
  • 数据相关:指令执行有顺序要求,存在写后写、读后写、写后读相关;解决方法有定向/后退法或设置专用通路
  • 控制相关:转移指令引起,解决方法有后退法和转移预测法

RISC

即精简指令集,相对与CISC有以下特点:

  • 等长指令,寻址方式少,无SS型指令
  • 指令数少且指令功能简单,控制器多采用硬布线方式
  • 寄存器多,强调指令流水的优化

§6 总线系统

总线仲裁

即总线控制权的分配,一般采用按优先级/公平策略进行仲裁。按照总线仲裁电路位置的不同,仲裁方式分集中式仲裁分布式仲裁两种

  • 集中式仲裁:控制逻辑集中在一处,分三种
    • 链式查询——优先级固定,离仲裁器越近越高,实现简单易扩展但容易出现饥饿现象
    • 计数器定时查询——数到谁谁使用,计数器从0开始则同上,从中止点开始则公平
    • 独立请求——每个模块有一组独立的请求/允许线,判优速度快,且与模块数无关
  • 分布式仲裁:制逻辑分散在与总线连接的各个设备上,竞争使用。有自举/冲突检测/并行竞争分布式仲裁三种常见方式

§7 硬盘

相同编号的磁道组成一个柱面,柱面数和一个面的磁道数相等
硬盘容量 = 柱面数×扇区数×每扇区字节数×磁头数

技术指标

  • 存储密度:单位长度或单位面积的磁层表面所能存储的二进制信息量
  • 存储容量
  • 寻址时间:找道时间+等待时间(平均半圈时间)
  • 数据传输率:单位时间内向主机传送数据的字节数

§8 输入输出系统

接口用于主机和外设的信息交换,按传送格式可分为串行接口、并行接口;按时序分同步接口、异步接口;按传送控制方式分的话请看下面

程序查询方式

用I/O指令编程实现信息传送。实际上就是cpu挨个去问外设准备好交互没有。实时并行能力差

程序中断方式

中断分类:硬件中断和软中断;内中断和外中断;可屏蔽中断和不可屏蔽中断;向量中断和非向量中断

Ⅰ——中断响应的条件是

  • 1.外设有请求,且未被屏蔽
  • 2.CPU开中断
  • 3.一条指令(非停机指令)结束
  • 4.无优先级更高的请求

Ⅱ——获取服务程序入口地址

  • 非向量中断:服务程序入口组织在查询程序中,响应时根据中断源转入入口
  • 向量中断:服务程序入口组织在中断向量表中,响应时硬件生成向量地址然后取得入口地址

Ⅲ——响应过程

  • 关中断,保存断点位置,算出向量地址获取中断向量并转入中断服务程序(硬件)
  • 保护现场,执行服务,开中断,恢复现场,恢复断点返回(软件,开中断提前可以允许多级中断)

DMA方式

即直接依靠硬件实现主存与I/O间的数据传送(DMA控制器接管总线),传送期间不需CPU程序干预,送期间只要CPU不访存可并行。
初始化需要程序指定数据初始地址和数据量,传送过程硬件自动实现,完成后转入中断处理
DMA控制器功能

  • 接收初始化信息
  • 接收接口DMA请求,向cpu申请总线
  • 接收cpu总线响应,向接口发回DMA应答
  • 接管总线权,控制DMA传送

中断是在一条指令结束时响应请求,作程序切换;DMA是在一个总周期结束时响应请求,作总线权切换

    添加新评论 | #

    Markdown Supported
    简单数学题:NaN + NaN =
    表情

    Comments | ?? 条评论

    • 单身为狗 24 年

    • 朝循以始 夜继以终

    • Blog: Von by Bersder

    • Alive: 0 天 0 小时 0 分

    Support:

    frame ssr server DNS music player

    © 2019-2024 ᛟᛊᚺᛁᚾᛟ

    back2top