计算机体系结构复习总结

第一章 概述

第二章 处理器体系结构

处理器设计,两个主要问题:指令集和机器结构(组成原理)

• 体系结构(Architecture)到底是什么?
– 程序员眼中的计算机的组织方法
体系结构的要素:指令集和操作数的组织方法(寄存器、内存)
• 要了解一国人,先要懂一国语言。(计算机,指令集)
• 计算机的语言:词汇->指令,词典->指令集。
• 指令集(s1)的符号表示 -> 汇编语言($s1) -> 机器语言(0101)

操作数位置

 ALU:ADD、SUB、AND、OR……
寄存器(register):在处理器内部,靠近ALU,速度极快,成本昂贵。
操作数的可寻址性:内存容量增加 -> 内存地址长度增加 -> 一条指令内可能无法容纳多个内存地址。
计算:对 4GB 内存空间进行线性寻址,需要多少根(位)地址线?
答:
32根。10根寻址1K,20根寻址1M,30根寻址1G,32寻址4G,每个内存单元大小为1Byte。

字节序

 一个字包含的4个字节如何使用?
• 大端(Big Endianness)机器
– 数字的高位(MSB)位于字地址上
• 小端(Little Endianness)机器
– 数字的低位(MSB)位于字地址上
大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

函数调用

•保存 Caller 的状态(为什么?哪里?寄存器?谁来保存?)
• 将实参传给 Callee
• 保存调用点的返回地址
• 将程序控制权交给 Callee
• 为 Callee 的局部变量分配内存空间,Callee运行
• 接收 Callee 的返回值并传给 Caller
• 从调用点返回

栈指针和帧指针之间的区别

在函数的执行过程中,栈指针的位置有可能发生变化。栈帧内的所有元素的访问都基于栈指针,如果栈指针变化,则所有元素的访问方法都会变化……

帧指针在栈帧内的位置固定,通过偏移量访问其他元素。

帧指针包含栈中与被执行过程相关的活动记录的第一个地址,并且这个过程的执行过程都不会改变。当然,如果该过程又调用了别的过程,则它的帧指针也需要进行保存和恢复,这由被调用者来完成。因此被调用者所做的第一件事就是将帧指针保存到栈中,并将当前的栈指针复制给帧指针。

指令格式

习题

2-12

如何使用已有的LC-2200 ISA来模拟一条减法指令

答:利用负数二进制可表示为正数取反后加一

nand 与非

B <-  B NAND B    ; not B
B <-  B+1               ; B+1
A <-  A+B               ; A+B

2-21

 答:间接寻址:取内存中所存内存地址指向的内容

LW Rx, Ry, 0

LW Rx, Rx, 0

第三章 处理器的实现

只允许同时读写单个寄存器的寄存器堆称为单端口寄存器堆(SPRF)。

允许同时读写两个寄存器的寄存器堆,称为双端口寄存器堆(DPRF)

 

数据通路的工作原理

在LC-2200处理器中,在ALU之后没有寄存器文件,因为ALU操作的结果被写入IR指向的目标寄存器中,所以结果被直接从ALU驱动到总线上到正确的寄存器。

数据通路的设计

处理器(CPU)包含两个主要部分
– 数据通路(data path):所有的逻辑资源
– 控制逻辑(control unit):为数据通路提供控制信号

控制单元实现

• 控制单元的本质?FSM。 • FSM的工作原理:输入和当前状态 -> 输出和新状态。
• 当前状态存在哪里?状态寄存器。
• 输出和新状态信息从哪来?查找表格。
• 表格内容变化吗?设计好就不变了。
• 表格存在哪里?非易失性存储(ROM)。

第四章 中断、陷入及异常

同步事件

在规划好的时间点发生的事件,与系统的其他活动协调一致。

异步事件

在系统计划之外发生的事情

三种程序执行的不连续性

中断

  • 一般指外部I/O设备引起的不连续性。与系统的正常运行是异步的。

陷入

  • 程序正常运行过程中发生的操作系统调用(读写文件、网络发送数据)
  • Linux用户模式、程序栈 -> 内核模式特权指令、内核栈,也叫软件中断

异常

  • 一般由于程序执行错误导致(除以零)
  •  某些编程语言的异常机制,允许错误传播

修改FSM

改进的中断Handler

中断处理的完整流程

• 外部设备置位INT线;
• 处理器在当前指令周期完成之后,检查INT线;
• 如果发现有外部中断请求,处理器进入INT宏状态,并置位INTA线;
• 外部设备收到INTA信号之后,将自己在IVT中的中断向量放到数据线上;
• 处理器收到中断向量后,在IVT中进行查找,找到其对应的Handler地址,设为0x5000; • 处理器将当前PC值存入$k0,然后将0x5000写入PC,开始中断Handler流程。

 体系结构和硬件改进总结

• 一个中断向量表IVT,存储各个Handler的内存地址;
• 一个异常/陷入寄存器(ETR),包含内部E、T值;
• 接收外部中断值的硬件机制;
• 用户/内核模式,以及相应的处理器mode位;
• 与mode位相关的用户/内核栈;
• 一种硬件机制:在$k0中保存PC,并能从IVT中检索Handler地址;
• 3条新指令:禁止中断、运行中断、中断返回

中断处理流程

接受中断请求

 

 INT宏状态——接受向量

 

 转交控制权给处理程序代码

 

 返回原始程序

第五章 处理器性能与流水线处理器的设计

时间和空间性能指标

衡量程序性能的两个重要的指标:

  •  空间指标:程序的代码和数据需要多少内存空间?(内存印迹,memory footprint)
  •   时间指标:程序执行需要多少时间?

处理器的两种设计思路:

  • CISC:复杂指令集计算机,一条指令,多种操作,内存印迹小(时代限制:内存、缓存出现)
  • RISC:精简指令集计算机,与CISC互相影响

程序的内存印迹与执行时间没有直接关系

程序的执行时间

设n为程序执行的总指令数,则有:
执行时间 = (∑ CPIj) * 时钟周期时间, 1 ≤ j ≤ n  或者:执行时间 = n * CPIAvg * 时钟周期时间
注:n是被指令数,而不是程序内静态指令数简单求和

CPI:关注的是单条指令需要的时间,概念Latency(延时)
概念吞吐量 Throughput,关注的是单位时间内执行的指令数目
单位:IPC,Instructions Per Clock cycle

提高处理器的性能

(1)减少时钟周期时间(提高CPU主频)

(2)改进数据通路组织以减小CPI

(3)减少执行的指令数

例5-1

 

 例5-4

加速比

三种冒险

三种冒险
结构性冒险、数据冒险、控制冒险
• 降低流水线的效率(IPC<1) • 流水线是同步的,指令无法传递至下一个阶段就会发送“气泡”
• “气泡”即NOP空指令
• 编译器编译后的程序,未加优化时可能出现CPI不高,但是执行时间很长的情况(三种冒险)

指令流水

例5-11

例5-12

 

 例5-17

 

 习题

3.    What would be the execution time for a program containing 2,000,000 instructions if the processor clock was running at 8 MHz and each instruction takes 4 clock cycles?

        exec. time = n*CPI ave*clock cycle time
        exec. time = 2000000(4)(1/8000000)
        exec. time = 1 sec

4.     A smart architect re-implements a given instruction-set architecture, halving the CPI for 50% of the instructions, while increasing the clock cycle time of the processor by 10%. How much faster is the new implementation compared to the original? Assume that the usage of all instructions is equally likely in determining the execution time of any program for the purposes of this problem.

        Old CPI                                   = 1
        Old Clock Cycle Time             = 1
        Old Total Time        = 1 * 1      = 1
        New CPI                                 = 0.5
        New Clock Cycle Time           = 1.1
        New Total Time  = 0.5 * 1.1   = 0.55
        Speedup        = Old Total Time / New Total Time = 1 / 0.55 = 1.82

The new implementation has a speedup of 1.82, meaning that the new implementation is 82% faster than the old implementation.

 6. Given the CPI of various instruction classes
               Class          CPI
               R-type    2
               I-type     10
               J-type    3
               S-type    4
    And instruction frequency as shown:
               Class    Program 1    Program 2
               R    3    10
               I    3    1
               J    5    2
               S    2    3
    Which code will execute faster and why?


    Program 1 Total CPI    = 3  * 2 + 3 * 10 + 5 * 3 + 2 * 4
                = 6      + 30     + 15    + 8
                = 59
    Program 2 Total CPI    = 10 * 2 + 1 * 10 + 2 * 3 + 3 * 4
                = 20     + 10     + 6     + 12
                = 48
Program 2 will execute faster since the total number of cycles it will take to execute is less than the total number of cycles of Program 1.

第六章 处理器调度

什么是操作系统?一个为执行用户程序供资源的程序。

什么是资源?处理器、内存、IO(输入输出)

如何创建一个程序?从问题描述到内存印迹

调度基础

有两种主要的调度类型:

  • 抢占式调度 Preemptive
  • 非抢占式调度 Non-preemptive

基本的调度步骤

  •  获得处理器控制权
  • 当前运行的进程的状态保存
  • 选择一个新进程运行
  • 把新选择的进程分发到处理器上运行

进程控制块(PCB)

性能指标

系统中心

  •  处理器利用率:处理器繁忙的时间比例
  • 吞吐量:单位时间内完成的作业个数
  • 平均周转时间: 作业进入和离开系统所花的平均时间
  • 平均等待时间:作业在系统中需要等待的平均时间

用户中心:

  •  响应时间:系统需要响应用户的时间

饥饿:一个作业一直没有进展(响应时间无限大)
护送效应:防止长时间运行的作业完全占据CPU的使用。

讨论前提

  • 忽略进程切换时间(context switch)
  • 一个I/O队列
  • I/O请求按被进程请求的顺序处理。

非抢占式调度算法

先到先服务FCFS

最短作业优先SJF

优先级 priority

例6-1

例6-3

轮转调度器

习题 6-11

Assuming each process requires a CPU burst followed by an I/O burst followed by a final CPU burst (as in Example 1 in Section 6.6):

FCFS

 

SJF

 

Round Robin (assumed timeslice = 2)

第七章 内存管理技术

静态重定位

指的是一个进程的内存界限在链接并创建可执行程序的时候被设定。

在链接器生成可执行文件时,确定进程的内存上下限。
• 体系结构提供上下限寄存器,PCB负责操作(how)。
• 分发器分发进程时,设置PCB中上下限寄存器的值,不再更改。
• 进程替换(swap),进程出入内存使用同样的内存位置。
• 缺点:原内存空间一旦被占用,被替换出去的进程就无法再被加载。
• 静态重命名:进程加载时改变内存位置的技术,加载器将修改原程序中所有与内存地址相关的语句。(60年代IBM大型机)

动态重定位

是指能够把可执行程序加载到内存中任意能装得下该进程的区域。

• 体系结构提供:基址寄存器和限长寄存器
• 只要能满足进程的内存大小需求,就可以将可执行程序放到内存里的任何位置。
• 偏移操作在进程加载入内存时发生。
• 进程被替换出内存之后,不一定返回到之前的地址。

固定尺寸分区

内部碎片

外部碎片

变长分区

最佳适应

  •  使用大小最合适的内存分区
  • 内部碎片较少,但是搜索时间较长

首次适应

  • 使用第一个大小合适的内存分区
  • 内部碎片偏多,但是搜索速度快

分页虚拟内存

 

假设页/帧的大小是4KB 假设虚拟地址是32位(4Gb)假设物理地址是28位(256Mb)
虚拟地址和物理地址的布局各是什么样的?页表的项数和页帧的个数各是多少?

分页的硬件支持

• CPU中需要增加一个寄存器:页表基址寄存器 PTBR(Page Table Base Register),存储当前进程的页表的基地址。
PTBR的作用:将虚拟页号(VPN)翻译成物理页号(PFN)

• 页表存在于内核内存空间,每个进程都拥有自己的PTBR,指向自己的页表数据结构。

CPU每次内存请求,实际上要访问几次内存?
• 第一次:访问当前进程的页表;第二次:访问实际物理内存地址。
• 效率不高。可以采用缓存机制,加快访问速度

第十章 输入输出与稳定存储

内存映射I/O

目的:让设备控制器内的寄存器对CPU可见

将外部设备的寄存器,融入到内存地址空间中去。为其分配地址空间:5000/5002
CPU执行指令:load/store MEM[5000]

DMA

工作机制:内存缓冲区<->设备
所有操作通过CPU写寄存器完成,存在与CPU争夺总线使用权的情况

磁盘存储器结构

磁盘调度算法

先到先服务 FCFS

最短寻道时间优先 SSTF

SCAN

C-SCAN

LOOK

C-LOOK

I/O总线与驱动设备演化

即插即用总线(Plug and Play)

并行总线

串行总线

PCIe

设备驱动

习题

10-2

 10-4

 

第十一章 文件系统

文件属性

文件的属性叫做元数据(meta data),元数据需要占用额外的存储空间
 
常见的文件属性
– 文件名
– 文件别名
– 拥有者
– 创建时间
– 最后写时间
– 访问权限:读、写、执行
– 文件大小
 

文件别名

可以在文件系统层面创建别名
Linux: ln foo bar
• 即创建一个具有相同状态的目录项:硬链接(hard link)
 
也可以只是原文件的链接(快捷方式)
Linux: ln –s fox box
• 即创建一个软连接

Linux权限操作例子

Linux命令 chmod
• $ chmod u+w filename
• $ chmod o-x filename
• $ chmod 751 filename
• 更改所有者(管理员权限):chown rama xzhang 将xzhang文件的所有者修改为rama
• 更改组(所有者、管理员):chgrp cs2200 foo 将文件foo 的所有组修改为cs2200

空闲链表

包含可用磁盘块的空闲链表
• 最先适配和最佳适配策略
• 每个文件对应单一节点,可能存在外部碎片和内部碎片问题
• 需要周期性缩并磁盘
• 改进:溢出区域,用于存放越界的大文件

 

文件分配表FAT

将磁盘分区,每个分区都有FAT
• 一个特殊的目录,包含了每个文件到FAT索引的映射关系;-1代表文件的最后一个磁盘块
• 比链接分配的故障几率更小
• 逻辑分区的存在,限制了磁盘空间的使用效率。

索引分配

Unix设计方法

 

posted @ 2020-07-02 00:04  王陸  阅读(5413)  评论(0编辑  收藏  举报