目录¶
第2章:数据的机器级表示与处理¶
第3章:程序的转换及机器级表示¶
第4章:程序的链接¶
第6章:层次结构存储系统¶
第7章:异常控制流¶
第8章:I/O操作的实现¶
计算机系统概述¶
冯诺依曼计算机体系¶
- 基本思想:
- 采用存储程序工作方法:将事先编好的程序和原始数据送入主存后才能执行程序,启动执行后,计算机能在不需要操作人员干预下自动完成逐条指令去除和执行的任务
- 由运算器,控制器,存储器,输入输出设备构成
- 存储器存放数据和指令;控制器自动取出并执行指令;运算器进行算数逻辑运算;
- 内部用二进制进行储存,每条指令由操作码和操作地址码组成,指出操作类型和操作数的地址
- 现代计算机基本结构:
- ALU的运算结果会产生标志信息,如零标志ZF,负标志SF等记录在标志寄存器中
- 从主存获取的指令存储在指令计数器寄存器IR,数据在 GPRs
- 程序计数器PC用于实现自动按序读取主存中的指令,计算机会自动计算下一条指令的地址并送到PC中保存(开始时取指令)
- 总线连接不同部件进行数据传输,包含地址线数据线控制线。cpu送到地址线的主存地址存放在主存地址寄存器MAR;发送或从数据线收集来的信息存储在主存数据寄存器中MDR
- 过程:根据PC取指令-指令译码-取操作数-指令执行-回写结果-修改PC的值-执行下一条指令
指令和执行¶
- 使用01书写指令太麻烦,使用汇编语言简化
- 用助记符表示操作码
- 用标号表示位置
- 用助记符表示寄存器
- 汇编语言由汇编指令构成:用助记符和标号来表示的指令
- 指令可以描述:取(或存一个数);两个数加(或减、乘、除、与、或等);根据运算结果判断是否转移执行
-
机器语言和汇编语言都是面向机器结构的语言,故它们统称为机器级语言
-
编译程序(Complier):将高级语言源程序转换为机器级目标程序,执行时只要启动目标程序即可
- 解释程序(Interpreter ):将高级语言语句逐条翻译成机器指令并立即执行,不生成目标文件。
- 翻译程序把元语言/程序翻译成目标语言/程序
- 指令由操作码字段和地址字段组成
- 指令执行的各阶段可以进一步细分为若干个微操作,微操作需要相应的控制信号(通过控制线发出)。CPU中所有微操作都由时钟信号进行定时,时钟信号(clock signal)的宽度为一个时钟周期(clock cycle)。一条指令的执行时间包含一个或多个时钟周期
- 例题:
程序的开发与运行¶
- shell程序将用户从键盘的输入读入cpu寄存器再到主存,形成缓冲字符串“./hello”,就受到回车后shell调用系统内核中的历程,加载可执行文件hello到存储器,将第一条指令存入pc开始执行程序
计算机系统层次结构¶
机器语言编程 | |
---|---|
汇编语言编程 | |
现代计算机用高级语言编程 |
- 语言处理系统包括:各种语言处理程序(如编译、汇编、链接)、运行时系统(如库函数,调试、优化等功能)
- 操作系统包括人机交互界面、提供服务功能的内核例程
-
isa规定了软件如何使用硬件
-
可执行的指令的集合,包括指令格式、操作种类以及每种操作对应的操作数的相应规定;
- 指令可以接受的操作数的类型;
- 操作数所能存放的寄存器组的结构,包括每个寄存器的名称、编号、长度和用途;
- 操作数所能存放的存储空间的大小和编址方式;
- 操作数在存储空间存放时按照大端还是小端方式存放;
- 指令获取操作数的方式,即寻址方式;
- 指令执行过程的控制方式,包括程序计数器、条件码定义等
前端 | 高级语言程序->中间代码 | 词法、语法及语义分析中间代码生成 | 遵循语言规范 |
---|---|---|---|
后端 | 中间代码->目标代码 | 目标代码生成及优化 | 遵循ISA规范和ABI规范 |
- ABI是为运行在特定ISA及特定操作系统之上的应用程序所遵循的一种机器级目标代码层接口描述了应用程序和操作系统之间、应用程序和所调用的库之间、不同组成部分(如过程或函数)之间在较低层次上的机器级代码接口。
计算机性能评估¶
- 两种:
- 完成任务需要的时间:响应时间、执行时间、等待时间
- 一定时间完成的任务:吞吐率、带宽
cpi¶
- cpi每条指令用时
- cpi:每条指令平均需要的时钟周期数目
- 对于某一条特定的指令而言,其CPI是一个确定的值。但是,对于某一个程 序或一台机器而言,其CPI是一个平均值,表示该程序或该机器指令集中每 条指令执行时平均需要多少时钟周期。
- 也就是总时钟周期数/指令数目
mips(定点执行速度)¶
- 定点指令执行速度,是一个平均值,用时钟频率/平均cpi,每秒完成运算指令的数目
- 不同机器指令集不同,不同指令不同
- 具有一定局限性,不一定真实反应速度
- 题意:alu加快一倍,计算cpi等
- 浮点操作速度
- 每秒浮点运算次数所 量测的实际上就是浮点运算器的执行速度。而最常用来测量每秒浮点运算次数的基 准程序(benchmark)之一,就是Linpack。
- 基准程序可以用于评估计算机性能,但是可能会被针对性优化(作弊)
amdahl定律¶
- 对系统中某部分(硬件或软件)进行更新所带来的系统 性能改进程度,取决于该部分被使用的频率或其执行时间占总执行 时间的比例。