处理机字长,(也称机器字长)
总线宽度: 运算器和存储器之间的数据总线宽度
存储器容量: 存储单元的总数目 (其中主存储器指的是 CPU 可以直接访问的存储器, 反映了计算机的处理能力)
存储器带宽: 一定时间从存储器独处的数据量 (Byte/s)
运算速度: 可由 CPU 主时钟频率 f 或时钟周期 T 反应 ( CPU执行时间 = T X 周期数 )
CPI (Cycle Per Instruction): 执行一条指令所需的周期数 (暂时可以将时钟周期理解为一种 “货币”
MIPS: 每秒几(百万)条定点指令
MFLOPS: 每秒几(百万)条浮点指令
关系转换
1) 求 CPI : 每条指令几个周期 -> 总周期 / 指令条数
2) 求 MIPS: 每秒多少条指令 = 每条指令多少秒取倒数.
1. 计算机由运算器, 控制器, 存储器, 输入设备, 输出设备五大部件组成,
2. 采用二进制体系表示数据和指令
a. 物理上容易实现
b. 编码, 计数简单
c. 数码 0,1 正好对应 false, true
3. 采用存储程序方式工作 (将事先写好的程序存储起来)
a. 将程序当做数据对待, 程序和该程序处理的数据一样进行对待.
系统软件
服务性质程序, 数据库, 计算机网络软件,操作系统, 语言处理程序, 标准库程序等.
应用软件
桌面软件, 手机移动应用软件等
计算机处理的数据信息有 “数值信息” 和 “非数值信息”.
-`
a. 字长变换:
b. 字长变换:
c. 字长变换:
d. 补码转十进制 (和普通二进制转换区别不是很大, 最高位权值师傅的)
加减法: 对阶, 尾数求和, 尾数规格化, 舍入, 溢出判断,
乘除法: 阶码运算, 尾数运算, 尾数规格化, 舍入, 溢出判断
进制运算基础
什么玩意是进制?
各种进制之间的转换
二进制转换十进制
十进制转换二进制
二进制转换八进制
八进制转换二进制
十六进制转换二进制
二进制转换十六进制
二进制的原码, 补码, 反码表示法
补码表示法
补码表示法定义
求补码的运算
直接求补码的不足之处
反码表示法
反码表示法定义
反码表示法作用
小数的二进制码表示法
指令: 指示计算机执行某种操作的命令
指令系统: 所有机器指令的集合
高级语言: 指的是抽象程度高
指令系统的发展
50年代: 板太大, 功能简单
60年代 出现系列机(向后兼容) 如 Intel
70年代, 指令系统越来越复杂
指令系统分类
1). CISC (Complex INstruction Set Computer) 复杂指令系统计算机 --> 采用复杂的指令系统(偏向硬件)
PS–> 系统复杂, 指令多, 格式多, 字长长度不定, 可访内存指令不受限, 各个指令执行时间相差大, 大多采用微程序控制器(用简单功能拼成 复杂功能, 但因访问内存反而变慢)
2). RISC 精简指令系统计算机 --> 简化指令系统的复杂程度, 并优化硬件, 其实不止是硬件被优化了, 总体而言, 都是很不错的.
PS–> 采用频率表搞得简单指令, 指令长度固定, 格式少, 采用流水线技术(优化硬件)
使用较多通用寄存器, 以组合逻辑控制为主, 优化程序编译过程.
指令系统约束
1). 完整性
Def: 指令系统指令丰富, 功能齐全(有些常用的操作可以直接使用硬件来完成, 而不是通过软件)
PS–> 指令越多, 硬件越复杂, 虽然软件减压, 但有些指令使用率极低, 这种复杂指令系统(CISC)会给硬件带来麻烦, 相应地我们使用(RISC)将一些不常用的指令通过软件来进行编写, 整体系统效果不变但是硬件的优化效果变好了.
2). 有效性
a. 时间有效性 --> 执行速度快
b. 空间有效性 --> 占用空间小
3). 规整性
a. 对称性
b. 均齐性
c. 指令格式和数据格式一致性
4). 兼容性 向上兼容
低级语言与硬件结构之间的关系
低级语言: 面向机器的语言, 和具体机器的指令系统密切相关
高级语言: 和机器无关
如何区分低级语言和高级语言?
答: 根据语言的抽象程度来定夺.
低级语言和高级语言混合编程
一些高级语言提供了汇编语言的调用接口, 当高级语言无法满足效率时, 可以高级和低级混合使用.
低级语言和高级语言的比较
低级语言比高级语言而言, 除了需要掌握算法以外, 还需要掌握机器硬件知识, 其规则也多, 相应地, 由于低级语言几乎是一句一句写出, 在作为程序运行在机器之前的阶段, 需要手动编译, 且对编译的要求低, 而且这种相对来说, 效率会显得低下.
指令格式
Def. 指令格式是指 指令字用二进制代码表示时采用的结构, 由 “操作码字段”(指明操作性质的命令码) 和 “地址码字段”(说明操作数地址或者操作数本身) 组成
操作码
固定长度 --> 所有指令长度均相同, 适用于小规模, 指令不同的场合, 优点是速度快
可变不定长度 --> 频率的用位数少的操作码, 不常用的利用操作码扩展技术进行扩展, 适用于大规模, 充分利用软硬件资源.
操作码的补充
规整性: 位数与位置皆固定
非规整性: 若机器字长16位, 操作码可占4-16位, 遍及整个指令
eg1.
eg2.
eg3.
地址码结构
Def. 由一条指令中由几个操作数地址决定, 脚叫几地址指令
零地址
一地址
二地址
三地址
按位置划分指令类型 (二地址)
SS
RR
SR
操作数类型
地址数据
数值数据 (定点数, 浮点数)
字符数据
逻辑数据 (与或非, 不考虑进位)
指令和数据寻址方式
地址 操作数和指令所在存储单元的编号
寻址方式 形成操作数或指令地址的方式
寻址方式分类
指令寻址
顺序寻址
有一个程序计数器(PC): 所有程序的第一条指令都放在PC中, 之后依次 +1 (所指的是指令所对应的长度)
跳跃寻址
就不是一次 +1 了, Jump到哪就是哪 (在分支或者循环中用的多)
操作数寻址
注: 一般而言, 操作数的地址码不是操作数的有效地址, 而是由形式地址和寻址方式组成.
有关学习操作数地址的方向
操作数在哪里?
位置信息如何表述?
适合对什么样的数据?
性能方面的特点是什么?
操作数在指令中
立即寻址 --> 下面例子中的形式地址A就是操作数(把那些使用最频繁的变量存储在寄存器中以供使用)
OP | # | A |
---|
优点: 无需访问内存, 速度较快(但没有寄存器存地址快)
缺点: 形式地址A字段的位数限制了立即数的范围
操作数在寄存器中
隐含寻址
寄存器寻址
操作数在存储器(内存)中
直接寻址
间接寻址
寄存器间接寻址
相对寻址方式
基址寻址
变址寻址
在看下面的小节的时候, 让我们先来看几个问题吧~
在计算机中, 程序指的是什么?
告诉计算机每一步动作的一组指令
程序是由什么组成的?
程序是由数据和指令所组成的
机器语言是什么?
CPU可以直接识别并使用的语言被称之为机器语言
正在运行的程序存储在什么地方?
运行时的程序存储在计算机的内存中
什么是内存地址呢?
在内存中, 用来表示命令和数据存储位置的数值
在计算机的构成元件中, 负责程序的解释和运行的是哪个?
CPU(也是本章节的主人公)所负责的就是解释和运行最终转换成机器语言的程序内容
在CPU的内部是由寄存器, 控制器, 运算器和时钟四个部分构成, 各个部分之间是由电流信号相互连通.
寄存器 --> 存储暂存指令, 数据
控制器 -->
运算器 -->
时钟 -->
总显示各部件间的连接通路, 各个部件通过对线路分时共享 (通过三态门来控制), 实现地址 数据和 控制信息的交换.
1. 各部件连接方式
1. 传送方式
本章主要学习的是如何通过接口来控制信号
做个比喻, 接口是个中介人, 两头拉拢, 中介人需要由什么构成呢?
I/O 接口组成:
a. 数据寄存器,
b. 控制寄存器,
c. 状态寄存器,
d. 地址寄存器,
e. 设备识别电路,
f. 控制电路等等;通过接口, 主机可以和外存完成数据信息, 状态信息, 状态信息的交换等
3. 端口: 接口中的一个可以被CPU访问的寄存器,
注: 接口是端口 + 控制逻辑
1. 控制
2. 数据缓冲
3. 数据格式变换(数/模转换)
4. 寻址功能
5. 传递控制命令和状态信息功能
Def. 在前面, 咱们有提到, 端口实际上就是一个个特定的寄存器, I/O 端口地址是主机与外设直接通讯的地址, I/O 设备的编号方式就是端口的编址方式,
主要包括两种:
1. 第一种, 统一编址:
把 I/O 端口当做存储器的单元来分配地址 (访问存储器的同时, 既可访问 I/O 端口)
2. 第二种, 独立编址
不占空间, 但功能较弱, 仅限于传输
CPU不断的询问程序执行完毕没, CPU执行效率低下
CPU 暂停现行程序, 转去执行某个中断处理程序, 处理完毕后自动恢复
2). DMA (硬件)Def. 保存断点 --> 保护现场 --> 恢复现场 --> 恢复断点 ,
1). 保存断点: 断点地址存入堆栈
2). 保护现场: 地址虽有, 但寄存器有可能被修改, 所以寄存器中的内容应该入堆栈.
3). 恢复现场 和 恢复断点 是 1 和 2 的逆向过程.