-
概论:分类应用,概念,基本组成,层次结构
-
计算机组成基本结构
-
冯 诺伊曼结构
-
CPU
-
控制器:CC,ALU
-
运算器:CU(主要是控制电路,指令译码):IR,PC
-
-
主存
- 主存储器:MDR,MAR
-
-
计算机执行指令的过程
-
取指:PC, MAR, M, MDR, IR
-
译码:OP(IR),CU
-
执行:ADD(IR), MAR, M, MDR, ACC
-
回写:回写到目标地址
-
-
基本的简单模型
-
CPU
-
北桥:一般是用于一些高速设备和CPU之间的连接,如显卡。
-
南桥:主要是用作非运算类的设备,如IO
-
系统芯片SoC(System on a clip):将计算机的所有电子系统集成到单一的芯片上面
-
Moore’s Law
-
-
-
总线系统
-
*处理器(ALU)(运算器和控制器)
-
逻辑运算
-
R型:and/or/nor
-
i型:andi/ori(高16位全为0,不是对于低位的复制
-
-
算术运算
-
R型:add/addu,sub/subu
-
i型:addi/addiu
-
加法和减法的实现
-
半加法器half adder
-
将两个二进制相加,使用异或门实现
-
改进:正常位实现异或门实现,进行使用与门实现
-
-
全加器full adder:由两个半加器构成,并且增加一个进行线路
-
溢出:仅仅针对有符号的数进行相加
-
判断标志:Cin和Cout不想等,就溢出
-
门电路:异或门相连,值不同时就为真,就溢出
-
为什么可以作为标志位?
-
当Cin为0时,Cout为1表示最高位两个1相加,溢出
-
当Cin为1时,Cout为0表示,进入的是两个0相加,即这一位不存在
-
-
-
-
减法:在最低位使用一个异或门
-
MIPS:addu和addiu是两条不处理溢出的指令
-
X86: 把opcode看作是有符号的,多了一个标志位OF
-
-
加法的逻辑优化·
-
行波进位加法器(RCA,Ripple Carry Adder)
-
结构:低位全加器的Cout连接至高一位全加器Cin,因此,第二位要先等第一位计算完成后再计算
-
优点:电路简单,设计方便
-
缺点:高位必须等待低位进行
-
耗费时间(以4位累加器件):T+2T*4= 9T
-
-
超前进位加法器(CLA)
-
本质上是将电路进位计算,这也意味着电路会复杂表
-
32位的CLA;常见方法:使用4个CLA进行桥接
-
C1 = G0+P0C0
-
C2 = G1+P1C1
-
C3 = G2+ P2C2
-
耗费时间:4T
-
-
-
-
乘法器:
-
无多位暂存寄存器,进行到哪一位就对哪一位进行直接的相加
-
基本硬件:
-
乘数寄存器Multiplier 带右移
-
被乘数寄存器Multiplicand 带左移
-
乘积寄存器Product
-
ALU(8位加法器:乘积最大数)
-
控制电路
-
-
基本过程:
-
1.检查“乘数寄存器”最低位
-
2.值为1执行:乘积值和被乘数相加;或者不进行
-
3.1将被乘数寄存器向左移动一位;
-
3.2 将乘数寄存器向右移动一位
-
\4. 是否已经到第N次相关的循环
-
-
优化:
-
软件:
- 因为寄存器的值被改变后,需要等到下一个clock改变才会生效,所以,2,3.1,3.2可并行进行;
-
硬件
-
将被“乘数寄存器”使用最小值,并去掉移位功能
-
将“乘积寄存器”的高位用来存储相关,低4位用于存储乘数,并进行相应的右移动
-
乘数寄存器不要
-
alu改为最少位数的
-
-
-
-
除法器:
-
基本硬件
-
除数寄存器 Divisor:带向右移动
-
商 Quotient:带向左移动
-
余数(被除数寄存器) Remainder
-
ALU:(加法和减法两种)
-
-
基本过程
-
1 余数 = 余数- 除数
-
2 检查余数
-
2.1 大于等于0 ,商左移1位,新的设为1
-
2.2 小于0,回退(加回原来的值),新的最右位设为0
-
3 除数右移1位
-
4 检查值是否已经循环完毕或者余数精确值
-
-
优化:
-
软件:因为检查后的值会导致执行不同,因此,无法并行执行
-
硬件:
-
除数寄存器,与上面类似
-
商寄存器取消
-
alu类似
-
余数寄存器
-
与乘法类似,高32位为记录相应的值,低32位存相应的商
-
支持左移和右移,执行加法时左移,执行减法时右移动
-
-
-
-
-
门电路基本原理:
-
非门
-
与门
-
或门
-
异或门:两值不相同时,则取真值
-
-
寄存器的基本原理:
- D触发器:output的值随着clock周期进行相关的变化
-
-
指令系统(x86,MIPS ISA)
-
RISC和CISC:精简指令集和复杂指令集
-
X86体系结构
-
X8086
-
以IP作为PC
-
具备16位地址,所以寻址能力是2^16
-
为了扩展寻址能力到2^20, 增加了4个段寄存器:CS代码段, DS数据段, ES附加段, SS堆栈段
-
逻辑地址->物理地址
- 16位段基值:16位偏移量->段基值左移4位形成实际20位段基值:16位偏移量-> 2^物理地址(20位)+偏移量
-
-
X80386
- 在8086的基础上新增加FS,GS两个段寄存器,以及10个通用寄存器,形成总共的32位
-
X86-64
-
新增8个64位的寄存器
-
地址不是统一长度,需要实现变址
-
-
-
X86指令简介
-
指令的分类:
-
运算类指令:ADD/ADC(带进位)/INC
-
传送类指令:MOV EBX,40
-
转移类指令:JNZ
-
控制类指令:LOOP
-
-
-
X86复杂指令例子
-
串操作指令
-
作用
-
对存储器中的每一个数据进行每次一个元素的操作
-
基本单位是字节或字
-
串长度可达64KB
-
-
分类
-
共5条串操作指令
-
另有3种重复前缀,与串操作指令配合使用
-
-
例子:MOVSB
-
MOV AX,DS
-
MOV ES,AX
-
MOV SI,2040H
-
MOV DI,2060H
-
CLD
-
MOV CX,3(定义执行三次)
-
REP MOVSB
-
-
-
-
MIPS体系结构(MIPS相关的部分需要重看)
-
由MIPS公司发展而来,现在仍然广泛运用于数字电视,机顶盒等嵌入式设备
-
MIPS指令特点
-
固定指令长度
-
简单寻址模式
-
指令数量少,功能简单
-
只支持Load和Store这两种对存储器的访问
-
load和store的区别(方向完全相反):由寄存器写入临时寄存器($8),由临时寄存器($8)写入寄存器
-
lw $8,12($9)/sw $8,40($19)
-
-
-
-
MIPS体系指令
-
举例MIPS实现A[10]=h + A[3]
-
lw $8,12($9)
-
add $8,$18,$8; $8 = $8+$18
-
sw $8,40($19)
-
-
分类:
-
符号的基本含义
-
opcode操作寄存器
-
rs源操作寄存器
-
rt第二个源操作寄存器
-
rd目的操作寄存器
-
shamt移位寄存器
-
funct计算
-
-
R型:寄存器 32
- 基本结构:opcode: rs: rt: rd: shamt: funct = 6bit: 5bit: 5bit: 5bit: 5bit: 6bit
-
I型:立即执行
-
基本结构:opcode: rs: rt: immediate = 6bit: 5bit: 5bit: 16bit
-
PC+2^15 bytes
-
-
J型:转移类
-
分支指令:控制相关的分支系统
-
条件分支 beq rs, rt, true
-
如何充分发挥16bit作用?
-
以当前pc为准16bit 2^15
-
MIPS固定为32位
-
16位位移量的基础上 加4位 2^15 = 2^17
-
-
分支不成立:pc=pc+4
-
分支成立:pc =(pc+4)+ immediate*4
-
-
非条件分支
-
opcode占用6位
-
pc= (pc的高4位)+地址量:地址范围就变为2^(32-4)
-
如何调用更远的目的地址?
-
2次调用j指令
-
使用jr指令:jr,js
-
-
-
-
-
-
-
-
周期处理器
-
单周期处理器
-
处理器的设计步骤
-
1.分析指令系统,得出对数据通路的需求。
-
2.为数据通路选择合适的组件。
-
3.连接组件建立数据通路。
-
4.分析每条指令的实现,以确定控制信号。
-
5.集成控制信号,形成完整的控制逻辑。
-
-
需求:
-
数据通路:
-
指令
-
运算指令:
-
访存指令:
-
只有访存指令才需要访存时间
-
lw负责从源寄存器取值,写会寄存器
-
sw负责将值写回rd,缺少回写
-
-
分支指令:
- 只负责判断,不会写入寄存器值
-
-
控制信号:
-
控制信号的逻辑表达式:
-
控制器的逻辑表达式:opcode(6bit)和func(6bit)构成
-
-
-
流水线处理器
-
指令执行处理过程
-
取指Fetch
-
译码Decode
-
执行Execute
-
访存Memory
-
回写Write back
-
-
流水线的优化
-
简单优化
-
流水线的平衡
- 不平衡的流水线会对性能造成影响,主要是等待耗时
-
时钟周期
-
将大的操作进行再切分小的。形成超级流水线技术(Super pipeling)
-
实际操作:提升时钟的相关的频率
-
缺点:单条指令的延迟读取比例会增加,进而影响性能
-
-
历史处理器的发展:
-
频率就是流水线深度的体现(时钟周期)
-
Intel:
-
1986 R200/R3000 5级
-
1993 Pentinum 5级
-
1995 Pentinum Pro 12级(尝试引入RISC创造流水线)
-
2004 Pentinum 4(Presoft)31级
-
-
ARM:
-
1997 ARM9/ARM11 5级
-
2013 CoreX-A57 15 级别(现在基本主流芯片基本维持的深度)
-
-
-
-
超标量流水线SuperScalar
-
原理:拓宽流水线(通常具有2条以上的并行工作的流水线的结构)
-
采用超标量的芯片:1964 CDC600(第一台)->Cortex-A9
-
与标量之间的区别:
-
单周期->标量流水线:时间并行性的优化
-
标量流水线->超标量流水线:空间并行性的优化
-
-
多核CPU
- 在一个CPU芯片中集成了多个超标量处理器的处理器核
-
-
-
流水线的冒险
-
通用解决方案:
- 流水线停顿(stall),产生空泡,通俗地说就是等待;
-
结构冒险
-
产生原因:同一个指令被同时执行读和写的操作(本质是硬件资源的不足)
-
问题:指令和数据放在同一存储,不能同时读存储器?
- 指令和数据在存储器而不是寄存器时,进行单独的存储。
-
问题:读和写同时发生?
- 前半个时钟读,后半个时钟写,并且设置独立的读写口。
-
-
数据冒险
-
产生原因:一条指令需要使用之前的指令结果,但结果没有写回。
-
问题:需要使用到先前的指令?
-
软件:使用nop来占用更多时间周期,达到时钟平衡
-
数据前递(Forwading):省略相关的执行步骤(如读写寄存器),硬件实现叫旁路(即增加多的硬件实现相应的功能)
-
-
问题:一条指令需要使之前指令的访存结果?
- 单数据无法解决,因此只能使用硬件上前递解决
-
-
控制冒险
-
产生原因:无法确定下一条指令出现的冒险
-
Branch Frequency:
-
i7:4 * 16
-
ARM Cortex-A15: 3*15
-
-
转移指令占流水线的比例大概在15%~25%
-
延迟转移技术:将不需要参与前者运算的指令放进需要等待的周期中,从而节约一个周期。
-
-
-
主要思想:分析相关的停顿和寄存器,从而进行相关的优化。
-
-
-
存储管理:与操作习题存储器管理类似
-
基本功能:
-
非易失性(断电仍然保存,主要是bios和芯片)
-
可读可写
-
随机访问(与位置有关)
-
访问时间
-
-
层次结构(从第一项到最后一项为过程方向)
-
CPU
-
SRAM(cache)
-
DRAM(内存)
-
DISK
-
-
DRAM
-
基本结构:通过行地址/列地址进行定位访问数据
-
基本过程
-
行选 -> tRCD -> 列选 -> CL ->数据-> 预充电->tRP -> 行地址->tRCD
-
行选和列选的过程主要是对单元进行刷新(refresh),使得原来表示“1”的电荷有效,表示为“0”的保持无电荷状态
-
-
发展
-
SDRAM 同步Sync的过程是通过提升时钟来提升相关的频率
-
SDR SDRAM单通道 同步动态存储
- 只在时钟clock上升时传送数据
-
DDR SDRAM双通道 同步动态存储
- 时钟clock上升和下降都传送数据
-
-
优点:
-
集成度高
-
功耗低
-
价格较低
-
-
缺点:
-
速度较慢
-
定时刷新
-
-
-
SRAM(cache)
-
相同的一个DRAM单位,SRAM需要6个mos晶体管
-
基本结构
-
地址线
-
片线:是否有读写功能
-
数据线
-
读/写线:决定是否进行读/写
-
-
优化条件:
-
空间局部性:以数据块(block)为单位。
-
时间局部性:提高访问数据的频率
-
-
策略
-
命中时策略
-
写穿透Write Through:数据同时写入cache和主存
-
写返回Write Back:数据只写入cache,仅当被替换时再写入cache
-
-
失效时策略
-
写不分配Write allocate:直接写入主存
-
写分配Write Non-allocate:将该数据的块写入cache后,再将数据写入cache
-
-
-
访问时间
-
计算公式:
-
失效原因:
-
义务失效 compulsory miss: 完全访问不到
-
容量失效capacity miss:不能存下更多的块
-
冲突失效conflict miss:替换算法
-
-
组合方式:(解决容量失效)
-
直接相联
-
全相联
-
-
替换算法(解决冲突失效,具体的可在操作系统中查看)
-
随机
-
轮转
-
最少使用
-
-
-
-
单位:
-
总结:除高速缓存和内存外,都采用国际单位制的10进制,2进制的单位缩写需要在国际单位后面加i
-
1 Byte = 8 bits(看清楚缩写,bit才为一个二进制)
-
-
-
中断和异常
-
来源和历史
-
第一台带有中断的机器UNIVAC
-
中断工作的最初原理是:专向地址为0的执行修复或者停机
-
-
表结构
-
内存分区
-
中断专用区:一般用于初始化代码
-
通用区
-
中断专用区:主要用于中断向量表
-
-
基本
-
中断向量:
-
基本表示方法:IP:CS(实模式)
-
物理地址计算:CS左移4位(2^4)+偏移量IP
-
-
内容和地址的区别:
-
内容:中断指令*相应的位数
-
地址:根据IP:CS从低到高进行取出
-
-
扩展:
-
保护模式:EIP(16->32):CS
-
保护模式下:段基址不在CS中而在内存中
-
GTD 全局描述符表
-
GTDR 全局描述符表的地址寄存器
-
中断描述符表:
-
专用中断:0~4
- 类型2:非屏蔽中断,不属于内部中断
-
保留中断:5~31
-
用户自定义:32~255
-
-
-
-
处理过程
-
\1. 关中断
-
\2. 保存中断点
-
3.识别中断源
-
4.保护现场
-
5.执行中断程序
-
主要是为了响应高优先级
-
通过中断标志位进行判断IF(1时允许响应)
-
相关指令
-
STI: 1
-
CLI:0
-
-
-
6.恢复现场并返回
-
-
内部中断的分类
-
类型0:除法错中断
-
与OF位有关
-
一般由程序员自定义
-
-
类型4:溢出中断
- 恢复现场并返回
-
类型1:单步中断 :
-
与TF位有关
-
除了单步中断外,所有内部中断都不可以通过软件方法屏蔽
-
-
类型3:断点中断
-
常用方法:通过类型3确定出现问题的大体方向,通过类型1进行内部详细筛查
-
特点:
-
中断类型号
-
屏蔽方式
-
优先级
-
-
功能调用:
-
INT指令
-
ROM BIOS中断
-
例子
-
MOV AH,1
-
MOV CX,0
-
MOV DX,0
-
INT 1AH
-
-
10H
-
0 设置显示位置
-
2 设置光标位置
-
-
1AH
-
0读时钟
-
1置时钟
-
-
-
DOS中断
-
INT 21H
-
比BIOS更完善和易于操作
-
06H 直接控制IO
-
09H 显示字符串
-
2CH 取时间
-
2DH 设置时间
-
-
-
-
-
输入和输出设备 (I/O相关设备)
-
I/O的基本功能
-
数据缓冲:解决CPU与外设之间的速度差距
-
提供联络信息:协调与同步数据交换过程
-
信号与信息格式的转换:模/数,数/模,串/并,并/串转换,电平转换
-
设备选择
-
中断管理
-
可编程
-
-
I/O指令说明:
-
IN AC,PORT
-
OUT PORT,AC
- OUT中存在M/IO来决定读取memory还是IO
-
取指方式
-
直接取址
-
间接取址
-
-
-
I/O设备的编制方式
-
分开和统一是指I/O设备和存储器的结合方式
-
统一编址
-
优点
-
可以用访问存储器的指令来访问I/O端口,访问存储器的指令功能比较齐全,可以实现直接对I/O端口内的数据进行处理
-
可以将CPU中的I/O操作与访问存储器操作统一设计为一套控制逻辑,
-
-
缺点
-
由于I/O端口占用了一部分存储器地址空间,因而使存储地址空间减小
-
由于利用访问存储器的指令来进行I/O操作,指令的长度通常比单独I/O指令要长,因而指令的执行时间也比较长
-
-
-
分开编址
-
优点
-
I/O端口不占用存储器地址,不会减少用户的存储器地址空间
-
I/O指令编码短,执行速度快
-
I/O指令的地址码较短,地址译码方便
-
采用单独的I/O指令,使程序中I/O操作和其他操作层次清晰,便于理解
-
-
缺点
-
-
-
I/O的控制方式
-
含义:
- CPU控制外设的数据传送类
-
方式:
-
软件方式
-
程序控制方式(无条件传送,程序查询方式)
-
无条件传送: 不检查状态之直接传送,容易造成数据冲突
-
程序查询方式:通过CPU循环查找I/O设备是否有请求
-
-
中断控制方式
-
中断检查相应的状态,不用CPU循环。设备可以向CPU发送相关的信息。
-
NMI 非屏蔽中断
-
INTR 可屏蔽中断
-
PIC中断控制器
-
APIC硬件外部中断
-
-
-
-
硬件方式
-
直接存储方式(DMA):通过硬件实现相应的中断
-
DMAC芯片
-
拥有两个模块:M:内存模块和S:从模块接口
-
作为CPU的一部分
-
-
-
-
-
-