计算机系统结构基础知识

多程序结构

第一级:微程序级,这级的机器语言是微指令集,用微指令编写的微程序一般是由硬件执行的。
第二级:传统机器级,这级的机器语言是该机的指令集,用机器语言编写的程序可以由微程序进行解释。
第三级:操作系统级,由操作系统直接管理传统机器中的软硬件资源,也是传统机器的眼神。
第四级:汇编语言级,这级的机器语言是汇编语言,完成汇编语言翻译的程序叫做汇编程序。
第五级:高级语言级,这级的机器语言是高级语言,用编译程序来完成高级语言翻译的工作。
第六级:应用语言级,是为了使计算机满足某种用途而专门设计的,这一级的语言就是各种面向问题的应用语言。

虚拟机和物理机

  • 物理机:用硬件/固件实现的机器
  • 虚拟机:是指由软件实现的机器,目的:在一台计算机上实现另一台计算机

    解释和翻译

    解释:每当一条L+1级指令被译码后,就直接去执行一串等效的L级指令,然后再去取下一条L+1级的指令
    翻译:先把L+1级程序全部变成L级程序后,再去执行新产生的L级程序,在执行过程中L+1级程序不再被访问
    注:解释执行比编译后执行所花的时间多,但占用的存储空间较少

    计算机系统结构

  • 计算机系统结构:指的是计算机系统的软、硬件的界面,即机器语言程序员所看到的传统机器级所具有的属性
  • 计算机组成:指的是计算机系统结构的逻辑实现,包含物理机器级中的数据流和控制流的组成和逻辑实现等。它着眼于物理机器级内各事件的排序方式和控制方式、各部件的功能以及各部件之间的关系
  • 计算机实现:指的是计算机组成的物理实现,包括处理机和主存等部件的物理结构等。它着眼于器件技术和微组装技术
  • 举例:确定指令集中是否含有乘法指令属于计算机系统结构的内容,但乘法指令是用专门的乘法器实现,还是利用加法器经多步操作来实现,属于计算机组成,而乘法器、加法器的物理实现,如期间的选定及所用的微组装技术等,属于计算机实现。

    透明性

    这种本来存在的事务或属性,但从某个角度看又好像不存在的概念称为透明性

    模拟和仿真

  • 模拟:指用软件的方法在一台现有的计算机(称为宿主机host)上实现另一台计算机(称为虚拟机)的指令集
  • 仿真:指用一台计算机(称为宿主机)上的微程序去解释实现另一台计算机(称为目标机)的指令集
    注:模拟程序存放在内存中,仿真微程序则是存放在控制存储器中,因此仿真方法的运行速度比模拟方法的快,但仿真只能在系统结构差距不大的计算机之间使用

    并行性

  • 并行性:指计算机系统在同一时刻或同一时间间隔内进行多种计算或操作
  • 包括同时性与并发性
    • 同时性:指两个或两个以上的事件在同一时刻发生
    • 并发性:指两个或两个以上的事件在同一时间间隔内发生

      提高并行性的技术途径

  • 技术途径

    • 时间重叠:让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备地不同部分,以加快硬件周转而获得速度

    • 资源重复:重复设置硬件资源

    • 资源共享:软件方法,使多个任务按一定时间顺序轮流使用同一套硬件设备

耦合度

反映多机系统中各计算机之间物理连接的紧密程度和交互作用能力的强弱。分为紧密耦合和松散耦合。

紧密耦合

又称直接耦合系统,计算机的物理连接的带宽较高,通过总线或高速开关互联,可共享内存

松散耦合

又称间接耦合,通过通道或通信线路实现计算机之间的互联,可以共享外村设备,能实现更大范围的资源共享。

Amdahl定律

  • Amdahl定律:加速某部件执行速度所能获得的系统性能加速比,受限于该部件的执行时间占系统中总执行时间的百分比
  • 两个影响因素:
    • 可改进比例(Fe)
    • 部件加速比(Se)

      决定CPU性能的3个参数及计算方法

  • CPU时间 = IC CPI 时钟周期时间
  • 参数:
    • 时钟周期时间:取决于硬件实现技术和计算机组成
    • CPI:取决于计算机组成和指令集结构
    • IC:取决于指令集结构和编译技术

      程序局部性原理

  • 局部性原理:指程序执行时所访问的存储器地址分布不是随机的,而是相对簇聚的
  • 分类:

    • 时间局部性:指程序即将用到的信息很可能就是目前正在使用的信息
    • 空间局部性:指程序即将用到的信息很可能与当前正在使用的信息在空间上相邻或临近

      计算机设计者的主要任务

      主要任务包括
  • 指令系统的设计

  • 数据表示的设计
  • 功能的组织
  • 逻辑设计及其物理实现等

    计算机设计的主要方法

    由上往下 设计

    从层次结构的最上面一级开始,逐层往下设计各层机器

    由下往上 设计

    从层次结构的最下面一级开始,逐层往上设计各层的机器

    从中间开始 设计

    软硬件设计分离和脱节是上述“由上往下”和“由下往上”设计方法的主要缺点

    计算机性能的比较方法

    执行时间和吞吐率

    执行时间:单个程序所花的时间
    吞吐率:单位时间完成的任务

    基准测试程序

性能比较

  • 总执行时间
  • 调和平均值法

    Ri 表示由n个程序组成的工作负荷中执行第i个程序的速度,Ri = 1/Ti;Ti为第i个程序的执行时间
  • 几何平均值法

    Π表示连乘

    冯诺依曼结构的主要特点

  • 计算机以运算器为中心
  • 在存储器中,指令和数据同等对待
  • 存储器是按地址访问、按顺序线性编址的一维结构,每个单元的位数是固定的
  • 指令的执行是顺序的,即一般是按照指令在存储器中存放的顺序执行
  • 指令由操作数和地址码组成
  • 指令和数据均以二进制编码表示,采用二进制计算

    现代计算机对比冯诺依曼体系结构

  • 对输入/输出方式的改进:DMA、通道
  • 采用并行处理技术
  • 存储器组织结构的发展:通用寄存器组、Cache
  • 指令集的发展:CISC、RISC

    实现软件可移植性的三种方法

  • 软件的可移植性:指一个软件不经修改或者只需少量修改就可以由一台计算机移植到另一台计算机上执行
  • 常用方法:
    • 采用系列机
    • 模拟和仿真
    • 统一高级语言

      指令系统的设计

      指令系统结构的分类

  • 堆栈
    • 指令字比较短,程序占用的空间比较小
  • 累加器
    • 指令字比较短,程序占用的空间比较小
  • 通用寄存器组
    • 可分为R-M型和R-R型

      寻址方式

      信息存储的整数边界概念

      字节信息的起始地址为:X…XXXX
      半字信息的起始地址为:X…XXX0
      单字信息的起始地址为:X…XX00
      双字信息的起始地址为:X…X000

      指令系统的设计和优化

      指令系统设计的基本原则

      指令系统的基本要求是完整性,规整性,正交性,高效率,兼容性
  • 完整性是指在一个有限可用的存储空间内,对于任何可解的问题,编制计算程序时,指令系统所提供的指令足够使用。
  • 规整性主要包括对称性和均匀性。
    • 对称性是指所有与指令系统有关的存储单元的使用,操作码的设置等都是对称的
    • 均匀性是指对于各种不同的操作数类型,字长,操作种类和数据存储单元,指令的设置都要同等对待
  • 正交性是指在指令中各个不同含义的字段,如操作类型,数据类型,寻址方式字段等,在编码时应互不相关,相互独立
  • 高效率是指指令的执行速度快,使用频度高。
  • 兼容性主要是要实现向后兼容,指令系统可以增加新指令,但不能删除指令或更改指令的功能。

    指令操作码的优化

    指令一般由两部分组成:操作码和地址码。

    哈夫曼编码

    操作码的优化程度可以用信息熵H来衡量,它表示用二进制表示n个码点时,理论上的最短平均编码长度
    可以通过构造哈夫曼树来求得

    等长扩展码

    例如15/15/15法和8/64/512法。
    15/15/15法是在4位的16个码点中用15个码点表示最常用的15种指令,剩下的一个码点用于扩展到下一个4位下。
    8/64/512法是用头4位的0XXX表示最常用的8种指令,接着扩展码扩展成两个4位,其中的1XXX0XXX的64个码点表示64种指令,然后在扩展成3个4位,用1XXX1XXX0XXX的512个码点表示512种指令

    定长操作码

    所有指令的操作码都是同一长度的,特别是RISC结构

    CISC存在的问题

  • 各种指令的使用频度相差悬殊,二八定律
  • 指令系统庞大,指令条数多,功能复杂导致①占用大量芯片面积②增加研制成本,易造成设计错误
  • 许多指令操作繁杂,CPI比较大
  • 不利于采用流水技术来提高性能

    改进方向

  • 面向目标程序增强指令功能
    • 增强运算型指令的功能
    • 增强数据传送指令的功能
  • 面向高级语言的优化实现来改进指令系统
  • 面向操作系统的优化实现改进指令系统

    设计RISC机器遵循的原则

    表示操作数类型的方法

    (1)由指令的操作码决定操作数类型
    (2)给数据加上标识(tag),由数据本身给出操作数类型

    MIPS指令系统结构

    MIPS的指令格式

  • I 类指令
    • 包括所有的load和store指令,立即数指令,分支指令,寄存器跳转指令,寄存器链接跳转指令
  • R 类指令
    • 包括ALU指令,专用寄存器读写指令,move指令等
  • J 类指令
    • 包括跳转指令,跳转并链接指令,自陷指令,异常返回指令。

      常用MIPS指令

      load and store

      ALU

      控制指令