计算机组成
2021-10-23 15:29:31 121 举报
AI智能生成
计组的概念最多,所以自己就把所有概念总结起来,制作不需要课本的最全思维导图!
作者其他创作
大纲/内容
中央处理器<br>
中央处理器CPU
CPU组成<br>
运算器<br>
ALU<br>算数逻辑单元<br>
暂存寄存器
ACC<br>累加寄存器 <br>
通用寄存器组<br>
AX 累加器
BX 基址寄存器<br>
CX 计数器
DX 数据寄存器
PSW<br>状态字寄存器<br>
OF 溢出标志<br>
SF 符号标志<br>
ZF 零标志<br>
CF 进/借位标志<br>
移位器
CT 计数器<br>
控制器<br>
PC 程序计数器 <br>
IR 指令寄存器<br>
ID 指令译码器<br>
MAR<br>存储地址寄存器<br>
MDR<br>存储器数据寄存器<br>
时序系统
微操作发生器
其他
MMU<br>存储器管理单元<br>
指令部件<br>
CU 控制单元<br>
中断机构
BIU<br>总线接口单元<br>
CPU功能<br>
指令控制<br>
PC, IR, ID
操作控制
时间控制
数据加工
ALU, REG ,REG组<br>
异常及中断处理<br>
外部访问
I/O访问<br>
寄存器组织<br>
用户可见寄存器<br>
数据寄存器<br>
累加寄存器 AC<br>
地址寄存器 AR<br>
基址寄存器<br>
程序计数器 PC<br>
通用寄存器组 GPRS<br>
状态字寄存器 PSR<br>
专用寄存器<br>
指令寄存器 IR<br>
存储器地址寄存器 MAR<br>
存储器数据寄存器 MDR
控制寄存器<br>
微指令寄存器
CPU工作流程<br>
指令周期
取指周期<br>
间址周期<br>
执行周期<br>
中断周期<br>
CPU/机器周期
时钟周期
异常/中断<br>
中断处理程序<br>
中断响应<br>
中断周期<br>
指令执行过程<br>
<font color="#B71C1C">取指</font>令<br>
指令操作<font color="#B71C1C">译码</font>
<font color="#B71C1C">取</font>操作<font color="#B71C1C">数</font><br>
数据操作/<font color="#B71C1C">运算</font><br>
<font color="#B71C1C">保存</font>结果
指令地址计算/<font color="#B71C1C">PC+1</font>
指令执行方案<br>
单指令周期CPU<br>
多指令周期CPU<br>
流水线方案
基本结构图<br>
<br>
CPU 控制方式<br>
同步控制方式<br>
异步控制方式<br>
联合控制方式<br>
数据通路<br>
组成<br>
部件
ALU<br>
通用寄存器
状态寄存器<br>
Cache
MMU<br>
浮点运算逻辑<br>
<font color="#B71C1C">异常和中断</font>处理逻辑<br>
基本结构
总线结构<br>
内部单总线<br>
内部三总线
点点结构
专用数据通路方式
微操作与控制<br>
寄存器间传送uOP<br>
算逻运算uOP<br>
执行算数或逻辑运算
执行过程组织<br>
设计<br>
指令系统分析
功能部件设计
单周期数据通路设计<br>
指令系统分析<br>
功能部件设计
数据操作单元<br>
地址计算单元
寄存器组
特殊功能寄存器
部件互连设计
指令执行过程的组织<br>
多周期数据通路设计
控制器
控制器类型
硬布线控制器
时序系统
时钟周期
机器周期
指令周期
微操作命令分析
类型
单周期<br>
多周期
微程序控制器
相关概念
微命令与微操作<br>
微指令与微周期<br>
主存储器与 <font color="#B71C1C">CM控制存储器</font><br>
程序与微程序<br>
微程序与机器指令
微指令编码方式
直接编码
字段直接编码
字段间接编码
混合编码
微指令格式
水平型微指令
垂直型微指令<br>
混合型微指令
常见寄存器
地址寄存器 MAR<br>
微地址寄存器 CMAR<br>
指令寄存器 IR<br>
微指令寄存器 <span class="equation-text" data-index="0" data-equation="\mu" contenteditable="false"><span></span><span></span></span> IR<br>
基本组成<br>
控制存储器 CM<br>
微指令寄存器 CMDR<br>
微指令形成部件
微地址寄存器 CMAR<br>
工作过程<br>
执行取微指令公共操作<br>
由<font color="#B71C1C">机器指令</font>的<font color="#B71C1C">操作码</font>字段通过<font color="#B71C1C">微地址形成部件</font>产生<br>该机器指令所对应的<font color="#B71C1C">微程序入口地址</font>,并送入 CMAR<br>
从 <font color="#B71C1C">CM</font>中逐条<font color="#B71C1C">取出</font>对应的<font color="#B71C1C">微指令并执行</font><br>
执行完一条机器指令的一个微程序后,又<font color="#B71C1C">回到</font>取指微程序的<font color="#B71C1C">入口</font>地址,继续第一步<br>
微程序与硬布线控制器比较
工作原理
以微程序形式控制执行<br>
由组合逻辑电路即时产生<br>
执行速度<br>
慢<br>
快<br>
规整性
较规整<br>
繁琐<br>
应用场合
CISC CPU<br>
RISC CPU<br>
易扩充性
易扩充<br>
困难<br>
时序型号形成
组织
电路组成<br>
主要功能
(PC程序计数器) 取指<br>取值,并指出下一条指令所在主存位置<br>
(IR 指令寄存器,指令译码器,时序系统)译码<br>对指令进行译码或测试,产生相应的操作控制信号<br>
执行<br>指挥并控制CPU、主存、I/O设备之间数据流方向<br>
指令流水线技术<br>
概念<br>
指令执行方式
顺序/串行执行方式<br>
流水线/并行执行方式
指令集特征<br>
长度尽量一致
格式尽力规整<br>
采用Load/Store指令<br>
数据和指令在存储器中对齐
相关概念
任务拆分<br>
锁存器<br>
时间尽量相等<br>
连续任务执行
装入时间<br>
排空时间<br>
性能指标
吞吐律 Throughput<br>
<br><span class="equation-text" data-index="0" data-equation="TP=n/T_k" contenteditable="false"><span></span><span></span></span><br>
加速比 Speedup<br>
<br><span class="equation-text" data-index="0" data-equation="S=T_0/T_k" contenteditable="false"><span></span><span></span></span>
效率 Efficiency<br>
<br><span class="equation-text" data-index="0" data-equation="E=T_0/kT_k" contenteditable="false"><span></span><span></span></span>
流水线分类<br>
单/多功能<br>
静/动态<br>
线性/非线性<br>
顺序/乱序<br>
标量/向量<br>
部件功能/处理机/处理机间级<br>
并行技术<br>
超级流水线
多发射流水线
超标量流水线<br>
乱序发射流水线<br>
超长指令字技术
流水线技术<br>
流水线冲突/冒险<br>
资源冲突/结构冒险<br>
数据冲突/数据冒险<br>
写后读 RAW<br>
读后写 WAR<br>
写后写 WAW<br>
控制冲突/控制冒险<br>
冒险处理
结构冒险处理<br>
数据冒险处理<br>
暂停几个时钟周期<br>
硬件阻塞 stall<br>
软件插入 NOP<br>
设置相关专用通路<br>
调整指令顺序<br>
控制冒险处理<br>
分支预测<br>
简单预测<br>
动态预测
加快和提前形成条件码<br>
提高转移方向的猜准率<br>
周期计算<br>
取各功能段最长时间作为CPU周期<br>
注意功能段处理时间和流水线时间区别
CPI
单周期CPU = 1<br>
多周期CPU > 1<br>
基本流水线 = 1<br>
超标量流水线 < 1<br>
常见问题<br>
流水线越多,指令执行一定越快?<br>
指令相关、数据相关概念
中断异常处理
中断源识别<br>
总线<br>
概述
定义
特性<br>
物理特性/机械特性<br>
尺寸、形状<br>
功能特性<br>
每根传输线的功能<br>
电气特性<br>
传输方向和有效电平范围<br>
时间特性<br>
信号和时序的关系<br>
性能指标<br>
总线宽度<br>
总线带宽<br>
数据线宽度 = MDR 宽度【单次传输】
地址线宽度 = MAR宽度【寻址范围】<br>
负载能力
总线周期<br>
总线时钟周期<br>
总线工作频率<br>
总线时钟频率<br>
总线复用<br>
信号线数<br>
结构与互连
总线标准<br>
ISA总线<br>
EISA<br>
PCI总线
PCI-E<br>
不考
AGP<br>
RS-232C<br>
USB<br>
PCMCIA<br>
IDE
SCSI
SATA
VESA
总线结构<br>
单总线结构
多总线结构
双总线
多总线
总线互连
总线分类<br>
片内总线<br>
系统总线<br>
数据总线<br>
地址总线<br>
控制总线
通信/外部总线<br>
同步总线<br>
异步总线<br>
传输内容<br>
数据线
操作数
指令
中断类型号
控制线<br>
总线仲裁<br>
集中式<br>
链式查询<br>
独立请求方式
计时器定时查询<br>
分布式
自举式仲裁<br>
竞争式仲裁
定时与传输
总线定时<br>
同步定时<br>
异步定时
不互锁方式<br>
半互锁方式<br>
全互锁方式<br>
半同步定时
总线操作过程<br>
申请以及分配
传输请求阶段<br>
总线仲裁阶段<br>
寻址阶段<br>
传输数据阶段<br>
结束阶段<br>
总线事务方式
并行传输<br>
串行传输
PCI-Express<br>
突发/猝发传输<br>
同步传输<br>
总线设备
主设备<br>
从设备
补充<br>
引入总线的好处<br>
一个总线能否在同一时刻使多对主从设备进行通信
输入/输出系统<br>
I/O系统基本概念<br>
组成
I/O硬件<br>
I/O软件<br>
接口<br>
外存设备
外部设备<br>
输出设备
输入设备<br>
外设与主机的联系<br>
连接方式<br>
分散连接<br>
总线连接
编制方式<br>
统一编址
独立编址<br>
识别方式
联络方式
数据放松方式<br>
外设与I/O接口的联络方式<br>
外部设备
输入设备<br>
键盘、鼠标<br>
输出设备
显示器<br>
类别
显示器件分类
CRT阴极射线管<br>
LCD液晶显示器<br>
LED发光二极管<br>
信息内容分类<br>
字符显示器
图像显示器<br>
图形显示器<br>
参数
屏幕大小<br>
对角线长度,单位:英寸<br>
分辨率<br>
宽 <span class="equation-text" data-index="0" data-equation="\times" contenteditable="false"><span></span><span></span></span> 高像素乘积 【例如:<span class="equation-text" data-index="1" data-equation=" 1024 \times 768" contenteditable="false"><span></span><span></span></span><br>
灰度级
黑白显示器中像素点的亮暗差别<br>
刷新频率<br>
单位时间内扫描整个屏幕内容的次数<br>
显示存储器 VRAM<br>
VRAM 容量 = <span class="equation-text" data-index="0" data-equation="分辨率 \times 灰度级位数" contenteditable="false"><span></span><span></span></span><br>
VRAM 宽带 = <span class="equation-text" data-index="0" data-equation="分辨率 \times 灰度级位数 \times 帧频" contenteditable="false"><span></span><span></span></span><br>
打印机
针式打印机
喷墨式打印机<br>
激光打印机<br>
外存储器<br>
性能指标<br>
存储密度
存储容量
寻址时间
数据传输率
误码率<br>
平均存取时间
磁表面存储原理<br>
磁记录原理<br>
磁记录方式<br>
归零制 RZ<br>
不归零制 NRZ<br>
调频制 FM<br>
改进型调频制 MFM<br>
磁盘存储器
记录格式<br>
定长记录格式
不定长记录格式<br>
磁盘设备组成<br>
存储区域<br>
磁头<br>
柱面<br>
扇区<br>
硬盘存储器组成<br>
磁盘驱动器
磁盘控制器
磁盘操作时间
寻道时间<br>
定义:将磁头移动到指定位置所需时间<br>
决定因素:<b>磁盘调度算法</b><br>
延迟时间
定义:磁头定位都某一磁道的扇区(块号)所需要的时间
决定因素:<b>磁盘转速</b><br>
传输时间
定义:从磁盘读出或向磁盘写入数据所经历的时间<br>
决定因素:<b>磁盘转速</b><br>
磁盘阵列 RAID<br>
RAID 0<br>
RAID 1<br>
RAID 2<br>
RAID 3<br>
RAID 4<br>
RAID 5<br>
磁盘地址
驱动器号 | 柱面(磁道) 号 | 盘面号 | 扇区号 <br>
光盘存储器
CD-ROM<br>
CD-R<br>
CD-RW<br>
DVD-ROM<br>
固态硬盘<br>
基于Flash Memory技术,被归类于ROM的一种<br>
I/O接口(I/O控制器)<br>
I/O接口功能<br>
主机和外设的通信联络控制
进行地址译码和设备选择
实现数据缓冲<br>
信号格式的转换<br>
传送控制命令和状态信息<br>
I/O接口组成
图示
<br>
I/O接口分类<br>
数据传输方式
并行接口<br>
串行接口<br>
访问控制方式<br>
程序查询<br>
中断
DMA
I/O接口访问
I/O端口<br>
定义<br>
端口类型<br>
数据端口【读写】<br>
状态端口【只读】<br>
控制端口【只写】<br>
编址方式
统一编址
独立编址
I/O指令
I/O 访问控制方式<br>
程序查询方式/<br>程序直接控制方式<br>
程序中断方式
中断相关概念
CPU响应中断条件
中断源
中断请求
中断判优<br>
中断响应<br>
中断向量 IV<br>
中断屏蔽<br>
中断允许标志 IF<br>
中断处理过程<br>
中断响应/中断隐指令
关中断
保存断点
中断服务程序寻址
中断处理
保存现场和屏蔽字<br>
开中断
执行中断服务程序<br>
中断返回
关中断<br>
恢复现场和屏蔽字<br>
开中断、中断返回<br>
中断分类<br>
可屏蔽与不可屏蔽<br>
可屏蔽中断<br>
不可屏蔽中断
单重中断与多重中断<br>
多重中断
单重中断
向量与非向量中断<br>
非向量中断【软件识别】<br>
向量中断【硬件识别】<br>
中断系统结构
中断请求连接方式
独立请求<br>
共用请求<br>
中断判优<br>
软件判优
串行判优<br>
并行判优<br>
DMA方式<br>
传送过程<br>
预处理
<b>CPU</b>给DMA控制器<font color="#B71C1C">发出读命令</font><br>
数据传送钱由<b>DMA控制器</b><font color="#B71C1C">请求总线</font>使用权
DMA传送前由<font color="#B71C1C"><b><font color="#000000">设备驱动程序</font></b>设置</font>传送<font color="#B71C1C">参数</font>
数据传送<br>
初始化DMA控制器并启动磁盘<br>
从磁盘传输<font color="#B71C1C">一块数据</font>到内存缓冲区<br>
后处理<br>
<b>DMA控制器</b>发出<font color="#B71C1C">中断请求</font><br>
CPU在指令周期末尾检查中断并处理<br>
执行"DMA结束"中断服务程序<br>
与中断方式区别<br>
过程上<br>
中断为程序切换,需保存和恢复现场;
DMA方式处理预处理和后处理,其余不占用CPU资源
响应时刻<br>
中断在指令周期结束后(末尾);<br>
DMA请求可发生在每个及其周期结束时(取指、间址、执行)均可以<br>只要CPU不占用总线即可被响应<br>
CPU参与<br>
中断过程需要CPU参与<br>
DMA传送过程不需要CPU干预,因此数据传输效率高,适合高速外设数据传送<br>
优先级<br>
DMA优先级高于中断请求<br>
作用范围<br>
中断方式除I/O外,还有异常处理能力<br>
DMA仅局限于传送数据块I/O操作<br>
数据传输<br>
中断I/O采用软件完成<br>
DMA采用硬件完成<br>
基本单位<br>
组成
主存地址计数器<br>
传送长度计数器<br>
数据缓冲寄存器<br>
DMA请求触发器<br>
"控制/状态"逻辑<br>
中断机构
四类寄存器<br>
命令/状态寄存器 CR<br>
内存地址寄存器AR<br>
数据寄存器DR<br>
数据计数器DC<br>
传送方式<br>
停止CPU访存<br>
周期挪用/周期窃取<br>
DMA与CPU交替访存<br>
通道方式<br>
补充总结<br>
寄存器<br>
触发器<br>
<b><font color="#B71C1C">地址</font></b>/编址
地址
主存单元<br>
块号<br>
编址
编制方式
高位顺序编址<br>
低位交叉编址<br>
按字编址
按字节编址
寻址
程序执行时间<br>
CPI
CPU时钟频率<br>
数据交换<br>
数据通路结构<br>
编译机器码<br>
编译优化<br>
<b><font color="#B71C1C">页表</font></b>概念关系<br>
页面大小 -> 页内地址位数<br>
虚地址空间大小 -> 虚拟地址位数<br>
虚拟<b>地址</b>=页号+页内偏移<br>
页表项<br>页号 -> 页框号/块号/页帧号<br>
页表 包含页表项<br>
图示
<br>
<font color="#B71C1C"><b>Cache</b></font>与内存块
Cache行<br>
每行位数 = 数据位 + 标记 <br>
cache 地址=(行号,块内地址)
块内地址=log【主存块大小/编址大小】<br>
行号 =log 【数据区大小 / 主存块大小】<br>
标记 tag<br>=内存块位-Cache地址+特殊标记位<br>=内存块位-Cache行号-块内地址+特殊标记位<br>
相关概念<br>
主存地址位数<br>
编址方式<br>
映射方式<br>
主存块【Cache行】大小<br>
字位数<br>
写策略
Cache数据容量、总容量<br>
<font color="#B71C1C"><b>位数</b></font>计算<br>
PC 程序计数器<br>
IR 指令寄存器<br>
<font color="#B71C1C"><b>指令</b></font>字长
操作码位数计算<br>
单位换算<br>
秒<br>
十次幂<br>
<font color="#B71C1C"><b>语言</b></font>级别
机器语言<br>
汇编语言
高级语言
<b><font color="#B71C1C">位/字长/格式</font></b>
字长
机器字长<br>
存储字长
指令字长<br>
数据字长
位与字节
单位
位bit
字节Byte<br>
字word<br>
存储单元
大小端模式
大端模式<br>
小端模式<br>
C语言的数值
进制<br>
16进制表示<br>0x(具体16进制值)<br>
8进制表示<br>0(具体8进制值)<br>
数据字节数<br>
int 4B<br>
short 2B<br>
char 1B<br>
图示<br>
<br>
数据转换<br>
有符号->无符号<br>
浮点数->整数<br>
高精度->低精度<br>
强制转换规则<br>
转换路径
等级优先次序
常见数值精度<br>
char 4bit/1B
整数
有符号<br>-128~127<br>
无符号<br>0~255<br>
short 16bit/4B
整数<br>
有符号<br>-32 768 ~ 32 767<br>
无符号<br>0~65 535
int 32bit/8B<br>
整数<br>
有符号<br>-2,147,483,64<b>8</b>~2,147,483,647
无符号<br>0~4,294,967,291<br>
[long/double] 64bit/16B<br>
存储
整数/补码<br>
i = 0x123<br>
浮点数/IEEE754
f = 1.456E3<br>
unsigned int/ int / float<br>
周期<br>
时钟周期<br>
振荡周期
CPU周期/机器周期<br>
状态周期<br>
指令周期
总线周期
任务周期
中断周期/中断响应周期
存取周期<br>
<br>
935 考纲
2021】<br>一、计算机系统概述<br> (一)计算机发展历程<br> (二)计算机系统层次结构<br> 1.计算机硬件的基本组成<br> 2.计算机软件的分类<br> 3.计算机的工作过程<br> (三)计算机性能指标<br> 响应时间、吞吐率,CPU时钟周期、主频<br>、CPI、CPU执行时间,MIPS、MFLOPS<br> 二、数据的表示和运算<br> (一)数制与编码<br> 1.进位计数制及其相互转换<br> 2.数据编码:<br>机器数及其编码,BCD码,字符编码<br> <font color="#E0E0E0"> 3<strike>.校验码</strike></font><br>(二)数据的表示<br>1. 数值数据的定点表示:<br>无符号数的表示,有符号数的表示<br>2. 数值数据的浮点表示:<br>浮点表示方法,IEEE754标准<br>3. 非数值数据的表示:<br>字符与字符串的表示,逻辑数的表示<br>(三) 定点数的运算<br> 位移运算,位扩展运算,<br>原码加/减运算,补码加/减运算,<br>原码一位乘法运算,补码一位乘法运算,<br>溢出概念和判别方法<br> (四)浮点数的运算<br> 加/减运算<br> (五)算术逻辑单元ALU<br> 1.串行进位加法器和并行进位加法器<br> 2.算术逻辑单元ALU的功能和结构 <br> 三、存储器层次结构<br> (一)存储器的分类<br> (二)存储器的层次化结构<br> (三)半导体随机存取存储器<br> 1. SRAM存储器的工作原理<br> 2. DRAM存储器的工作原理<br> 3.只读存储器<br>(四)主存储器<br>主存的逻辑设计,主存与CPU的连接<br>,提高访存速度的措施<br> (五)高速缓冲存储器(Cache)<br> 1.Cache的基本工作原理<br> 2.Cache和主存之间的映射方式<br> 3. Cache中主存块的替换算法<br> 4. Cache写策略<br> (六)虚拟存储器<br> 1.虚拟存储器的基本概念<br> 2.虚拟存储器的实现<br> 页式虚拟存储器,段式虚拟存储器,<br>段页式虚拟存储器,TLB(快表)<br> 四、指令系统<br> (一)指令格式<br>指令的功能,指令的基本格式,<br>操作码字段的功能及表示,<br>地址码字段的功能及表示,<br>指令字的相关概念<br> (二)指令的寻址方式<br> 1.有效地址的概念<br> 2.数据寻址和指令寻址<br> 3.常见寻址方式<br> (三) CISC和RISC的基本概念<br> 五、中央处理器(CPU)<br> (一) CPU的功能和基本结构<br>(二) 指令执行过程<br> CPU的工作流程,指令的执行过程,<br>CPU基本操作与微操作的关系,<br>指令执行过程的微操作序列<br>(三)数据通路的功能和基本结构<br>数据通路的类型,单总线数据通路的基本结构,<br>微操作与微操作命令的关系,<br>指令执行过程的微操作命令序列<br> (四)控制器的功能和工作原理<br> 1.硬布线控制器<br>基本结构,时序系统组成,<br>信号时序控制方式,微操作控制信号形成<br> 2.微程序控制器<br> 微程序相关概念,微指令的编码方式,<br>微地址的形成方式<br> (五)指令流水线<br> 1.指令流水线的基本概念<br> 2.指令流水线的基本实现<br> 3.超标量和动态流水线的基本概念<br> (六)多核处理器的基本概念<br> 六、总线<br> (一)总线概述<br> 1.总线的基本概念<br> 2.总线的分类<br> 3.总线的组成及性能指标<br>4. 总线的操作过程<br> (二)总线仲裁<br> 1.集中仲裁方式:链式查询,<br>计数器定时查询,独立请求<br> 2.分布仲裁方式的基本概念<br> (三)总线操作定时<br> 同步定时方式,异步定时方式,半同步定时方式<br> (四)总线标准 <br> 七、输入输出(I/O)系统<br> (一)I/O系统基本概念<br> (二)外部设备<br> 输入设备,输出设备,外存储器<br> (三) I/O接口(I/O控制器)<br> 1.I/O接口的功能和基本结构<br> 2.I/O端口及其编址<br><font color="#E0E0E0"> 3.I/O地址空间及其编码</font><br> (四)I/O方式<br> 1.程序查询方式<br> 2.程序中断方式<br> 中断的基本概念,中断响应过程,<br>中断处理过程,多重中断和中断屏蔽的概念<br> 3.DMA方式<br> DMA控制器的组成,DMA传送过程<br><font color="#E0E0E0"><strike>4.通道方式</strike></font><br>
2022】<br>一、计算机系统概述<br> (一)计算机发展历程<br> (二)计算机系统层次结构<br> 1.计算机硬件的基本组成<br> 2.计算机的工作过程<br> (三)计算机性能指标<br> 响应时间、吞吐率,CPU时钟周期、主频<br>、CPI、CPU执行时间,MIPS、MFLOPS<br> 二、数据的表示和运算<br> (一)数制与编码<br> 1.进位计数制及其相互转换<br> 2.数据编码:<br>机器数及其编码,BCD码,字符编码<br> (二)数据的表示<br> 1.数值数据的定点表示:<br>无符号数的表示,有符号数的表示<br> 2.数值数据的浮点表示:<br>浮点表示方法,IEEE754标准<br> 3.非数值数据的表示:<br>字符与字符串的表示,逻辑数的表示<br> (三)定点数的运算<br> 位移运算,位扩展运算,补码加/减运算,<br>原码一位乘法运算,补码一位乘法运算,<br>溢出概念和判别方法<br> (四)浮点数的运算<br> 加/减运算<br> (五)算术逻辑单元ALU<br> 1.串行进位加法器和并行进位加法器<br> 2.算术逻辑单元ALU的功能和结构 <br> 三、存储器层次结构<br> (一)存储器的分类<br> (二)存储器的层次化结构<br> (三)半导体随机存取存储器<br> 1.SRAM存储器的工作原理<br> 2.DRAM存储器的工作原理<br> 3.只读存储器<br> (四)主存储器<br> 主存的逻辑设计,主存与CPU的连接,<br>提高访存速度的措施<br> (五)高速缓冲存储器(Cache)<br> 1.Cache的基本工作原理<br> 2.Cache和主存之间的映射方式<br> 3.Cache中主存块的替换算法<br> 4.Cache写策略<br> (六)虚拟存储器<br> 1.虚拟存储器的基本概念<br> 2.虚拟存储器的实现<br> 页式虚拟存储器,段式虚拟存储器,<br>段页式虚拟存储器,TLB(快表)<br> <font color="#388E3C">四、指令系统<br> (一)指令格式<br> 指令的功能,指令的基本格式,<br>操作码字段的功能及表示,<br>地址码字段的功能及表示,<br>指令字的相关概念<br> (二)指令的寻址方式<br> 1.有效地址的概念<br> 2.数据寻址和指令寻址<br> 3.常见寻址方式<br> (三)CISC和RISC的基本概念<br> 五、中央处理器(CPU)</font><br> (一)CPU的功能和基本结构<br> (二)指令执行过程<br> CPU的工作流程,指令的执行过程,<br>CPU基本操作与微操作的关系,<br>指令执行过程的微操作序列<br> (三)数据通路的功能和基本结构<br> 数据通路的类型,单总线数据通路的基本结构,<br>微操作与微操作命令的关系,<br>指令执行过程的微操作命令序列<br> (四)控制器的功能和工作原理<br> 1.硬布线控制器<br>基本结构,时序系统组成,<br>时序信号形成,微操作控制信号形成<br> 2.微程序控制器<br> (五)异常和中断机制<br> 1.异常和中断的基本概念<br> 2.异常和中断的处理过程<br> (六)指令流水线<br> 1.指令流水线的基本概念<br> 2.指令流水线的基本实现<br> 3.超标量和动态流水线的基本概念<br> (六)多核处理器的基本概念<br> 六、总线<br> (一)总线概述<br> 1.总线的基本概念<br> 2.总线的分类<br> 3.总线的组成及性能指标<br> 4.总线的操作过程<br> (二)总线仲裁<br> 1.集中仲裁方式:链式查询,<br>计数器定时查询,独立请求<br> 2.分布仲裁方式的基本概念<br> <font color="#FF0000">(三)总线传输与定时</font><br> 总线事务类型,总线定时方式,总线标准<br> 七、输入输出(I/O)系统<br> <font color="#388E3C">(一)I/O系统基本概念<br> (二)外部设备<br> 输入设备,输出设备,外存储器<br> (三) I/O接口(I/O控制器)<br> 1.I/O接口的功能和基本结构<br> 2.I/O端口及其编址<br> (四)I/O方式<br> 1.程序查询方式<br> 2.程序中断方式<br> 中断响应过程,中断处理过程,多重中断和中断屏蔽的概念<br> 3.DMA方式<br> DMA控制器的组成,DMA传送过程</font><br>
系统概述<br>
功能
数据处理
数据存储<br>
数据传输
发展<br>
历史<br>
电子管/磁鼓存储器<br>
晶体管/磁芯存储器
中小规模集成电路//磁芯
超大规模集成电路/半导体<br>
趋势
微型化、网络化、智能化<br>
巨型化、并行化、超高速<br>
组成<br>
冯诺依曼计算机
五大部件<br>硬件结构<br>
计算器【核心】<br>
控制器
存储器
输入设备
输出设备
工作方式
“<font color="#B71C1C">存储程序</font>”<br>
<b>程序</b>由若干条<b>指令组成</b>的指令序列<br>
程序执行可看作指令执行过程,取指令、分析指令、执行指令
顺序取指工作<br>
以运算器为中心,I/O和存储器数据都经过运算器<br>
根据指令周期的不同阶段区分存储器取出的是指令还是数据
存储器结构<br>
只需一个存储器,可为由定长单元组成的一维空间<br>
指令数据都由二进制表示<br>
现代计算机结构<br>
硬件结构<br>
存储器<br>
主存
辅存<br>
存储字长
运算器
加法器 ALU<br>
浮点运算器 FPU<br>
各类寄存器<br>
控制器
程序计数器 PC<br>
指令寄存器 IR<br>
指令译码器 ID<br>
控制单元 CU<br>
I/O设备
辅存 和 I/O 合称外设<br>
总线
系统总线<br>
数据总线 DBus
控制总线 CBus<br>
地址总线 ABus<br>
总线传输<br>
工作方式<br>
总线传输
优点
传输控制简单、可扩展性好
缺点<br>
需要分时进行信息传输【总线共用】<br>
I/O接口<br>
定义
在外设和总线之间增设连接电路<br>
主要功能
数据缓冲、格式转换、通信控制...<br>
其他名称<br>
设备适配器、设备控制器<br>
层次结构
编程语言级别
高级语言M4<br>
汇编语言M3
操作系统M2【平台/软硬交界面】<br>
机器语言M1<br>
微程序级M0<br>
翻译/解释
翻译<br>将程序直接转化为可执行【机器语言】程序<br>
解释<br>每一条语句在运行中动态解释为一条等效机器语言<br>
软件与硬件<br>
OS 软硬件交界面【虚拟机器与实际机器之间部分】<br>
工作过程<br>
程序执行顺序
<font color="#B71C1C">顺序</font>型指令<br>
<font color="#B71C1C">跳转</font>(转移)型指令<br>
程序执行机制
程序执行 <span class="equation-text" data-index="0" data-equation="\sim " contenteditable="false"><span></span><span></span></span>循环的指令执行
指令执行过程<br>
取指令<br><span class="equation-text" data-index="0" data-equation="IR \leftarrow M[(PC)],PC \leftarrow (PC)+"1"" contenteditable="false"><span></span><span></span></span><br>
分析指令<br><span class="equation-text" data-index="0" data-equation="ID \leftarrow (IR),输出 OP(IR)【操作码】,Ad(IR)【地址码】" contenteditable="false"><span></span><span></span></span><br>
执行指令
控制执行 CU<br>
指标
硬件技术
机器字长 = CPU 整数运算处理位数
CPU 主频<br>
<b>节拍脉冲</b>/机器脉冲源
CPU<b> 主时钟周期</b>/<font color="#B71C1C">节拍周期</font><br>
CPU <b>时钟周期 </b><br>
时钟脉冲信号的宽度
CPU <b>主频</b>/时钟频率<br>
单位<br>一般为 MHz 或 GHz【10进制量】<br>
CPI<br>
存储容量<br>
CPU 可寻址空间大小<br>
2^MDR <span class="equation-text" data-index="0" data-equation="\times" contenteditable="false"><span></span><span></span></span> 2^MAR
字数 <span class="equation-text" data-index="0" data-equation="\times" contenteditable="false"><span></span><span></span></span> 字长<br>
编址单位<br>
字
字节
数据通路带宽<br>
性能<br>
响应时间/执行时间
定义<br>一个任务从提交到完成所花的全部时间<br>
公式<br><span class="equation-text" data-index="0" data-equation="T_{响应}=T_{CPU}+T_{等待}" contenteditable="false"><span></span><span></span></span><br>
CPU时间<br><span class="equation-text" data-index="0" data-equation="T_{CPU}=[\sum(I_i\times CPI_i)]\times T_C=I_N\times CPI \div {f}" contenteditable="false"><span></span><span></span></span><br>
吞吐率/吞吐量
定义<br>单位时间内计算机完成的总工作量<br>
公式<br><span class="equation-text" data-index="0" data-equation="T_p=总工作量/总时间" contenteditable="false"><span></span><span></span></span>
单位<br>
MFLOPS<br>
MIPS
指令条数 / (指令时间 <span class="equation-text" data-index="0" data-equation="\times" contenteditable="false"><span></span><span></span></span> 1e6)<br>
主频 / CPI <br>
数据表示与运算<br>
数据编码<br>
数值转换
进位计数制<br>
按权展开<br>
公式<br><span class="equation-text" data-index="0" data-equation="(N)_R=(k_{n-1}..k_{-m})_R=k_{n-1}R^{n-1}+...+k_{-m}R^{-m}=\sum k_iR^i" contenteditable="false"><span></span><span></span></span><br>
常用进位单位<br>
Binary 二进制<br>
【%o】Octal 八进制<br>
8进制表示<br>0(具体8进制值)<br>
Decimal 十进制<br>
【%x】Hexadecimal 十六进制<br>
16进制表示<br>0x(具体16进制值)<br>
二进制编码优点<br>
表示方便<br>
对应布尔逻辑运算<br>
编码和运算规则简单,能够用逻辑门电路方便实现<br>
进制转换<br>
二次幂进制转换<br>
二进制转八进制<br>
二进制转十六进制<br>
十进制转换<br>
任意进制数转换为十进制<br>
十进制转换为任意进制<br>
整数转换<br>
除基取余<br>
减权定位<br>
小数转换<br>
乘基取整<br>
减权定位<br>
机器数编码<br>
概念
机器数<br>
真值<br>
有符号数编码<br>
原码<br>
n位机器数,1位表示符号,n-1位表示数值,则数值最高权位2^{n-2}<br><span class="equation-text" data-index="0" data-equation="[X]_原=\begin{cases} X ,0\leq X<2^{n-1}【\sum_{i=1}^{n-2}2^i=2^{n-1}-1】\\2^{n-1}-X=2^{n-1}+|X|,-2^{n-1}<X\leq 0 \end{cases}\\ [+0]_原=0000\neq [-0]_原=1000" contenteditable="false"><span></span><span></span></span>
运算<br>
加减运算先比较大小,符号与数值分开运算【手工运算】
表示范围与真值相同,但编码 +0 ≠ -0
补码<br>
表示<br><span class="equation-text" data-index="0" data-equation="[X]_原=\begin{cases} 2^n+X=X ,0\leq X<2^{n-1}\\2^{n}+X=2^{n}-|X|,-2^{n-1}\leq X\leq 0 \end{cases},(\mod 2^n)\\ [+0]_原= [-0]_原= 0000" contenteditable="false"><span></span><span></span></span>
[X]与[-X]转化<br>
全部位取反末位加1【相反数补码】<br><span class="equation-text" data-index="0" data-equation="[X]_补+[-X]_补=0(\mod 2^n);\\(2^n-1)+1-[X]_补=([X]_补)取反+1=[-X]_补" contenteditable="false"><span></span><span></span></span>
运算<br>
正数补码=正数原码
负数补码=<span class="equation-text" data-index="0" data-equation="2^n" contenteditable="false"><span></span><span></span></span>-真值原码(数值位为各位取反,末位加1)<br>
补码运算符号位一起参与计算<br>非溢出运算下,符号位直接参与到运算中,并且舍去第<span class="equation-text" data-index="0" data-equation="n+1" contenteditable="false"><span></span><span></span></span>位<br>
负数补码 = 负数反码 + 1<br>正数补码 = 反码 = 原码<br>
反码<br>
移码<br>
表示 【补码符号位取反】<br><span class="equation-text" data-index="0" data-equation="[X]_移=2^{n-1}+X;2^{n-1}为偏移常数" contenteditable="false"><span></span><span></span></span><br>
特点
零表示唯一<br><span class="equation-text" data-index="0" data-equation="[+0]_移=2^n+0=[-0]_移=2^n-0=10..0" contenteditable="false"><span></span><span></span></span>
真值的补码和移码在符号位相反<br>
移码全为0时,对应真值最小值 <span class="equation-text" data-index="0" data-equation="-2^n" contenteditable="false"><span></span><span></span></span>; 移码全为一时,对应真值最大值 <span class="equation-text" data-index="1" data-equation="2^n-1" contenteditable="false"><span></span><span></span></span><br>
移码保持了数据的原有大小顺序,移码越大真值越大,反之同理
无符号编码
BCD编码<br>
有权码<br>
8421码【默认】<br>
公式<br><span class="equation-text" data-index="0" data-equation="x D=\sum_{i=0}^3 2^i*a_i;+=1100[10],-=1101[11]\\ 例:+6=0110 \space 1100;" contenteditable="false"><span></span><span></span></span><br>
其他<br>2421、5211、4311码<br>
无权码<br>
余3码<br>
公式<br><span class="equation-text" data-index="0" data-equation="=8421码+3" contenteditable="false"><span></span><span></span></span><br>
格雷码<br>
无符号数编码
字符编码<br>
字符<br>
输入码<br>
字模/字形码<br>
内码<br>
交换码
字符集<br>
ASCII<br>
GB2312-80<br>
Unicode<br>
字符编码
数据校验码<br>
概念
数据校验<br>
校验码<br>
数据信息/数据位<br>
校验信息/校验位
码距
判断编码冗余程度<br>
码字中位置不同的个数的最小值<br>
编码类型
奇偶校验码<br>
基本原理<br>
通过校验码中1的个数为奇数(偶)来判断是否有误<br><span class="equation-text" data-index="0" data-equation="数据位M=m_n...m_1,校验位P=p_1,则校验码位MP=m_n...m_1p_1\\奇校验位P=m_n \bigoplus ... \bigoplus m_1\bigoplus 1,偶校验位m_n \bigoplus ... \bigoplus m_1" contenteditable="false"><span></span><span></span></span>
异或<br><span class="equation-text" data-index="0" data-equation="\bigoplus ,优化计算为求和\mod 2" contenteditable="false"><span></span><span></span></span><br>
故障字<br>
<br><span class="equation-text" data-index="0" data-equation="S=p'\bigoplus p'',S=0表示正确,S=1表示错误" contenteditable="false"><span></span><span></span></span>
优缺点
优点:简单,开销小<br>缺点:码距为2较小,不能确定错位置,无纠错能力<br>
海明校验码<br>
基本原理<br>
相关概念
单纠错码 SEC<br>
单纠错双检错码 SEC-DED<br>
校验位数确定
故障字表示 ≥ 所有的错误状态<br><span class="equation-text" data-index="0" data-equation="2^k \geq n+k+1【单纠错】" contenteditable="false"><span></span><span></span></span>
双位出错+单位出错情况<br><span class="equation-text" data-index="0" data-equation="2^k\geq (n+k)(n+k-1)+n+k+1" contenteditable="false"><span></span><span></span></span>
分组规则
CRC循环冗余校验码<br>
编码<br>
<span class="equation-text" data-index="0" data-equation="n 位数据多项式 M(x), k 位校验位 R(x),除数 G(x)\\G(x)又称为生成多项式\\CRC码位n+k位,可用M(x)\cdot x^k+R(x)表示" contenteditable="false"><span></span><span></span></span>
校验
数据表示
数据<br>
数值数据
进制选择
符号表示
有符号数<br>编码最高位表示符号,原码<br>
无符号数<br>符号放在最低位,BCD码<br>
小数点表示
定点
浮点
编码方式
非数值数据
定点数
定点整数<br>
%u】没有符号位所以数值多一位<br><span class="equation-text" data-index="0" data-equation="0 \sim 2^n-1 【无符号整数】" contenteditable="false"><span></span><span></span></span>
%d】有符号整数【最高位为符号】<br><span class="equation-text" data-index="0" data-equation="(-2^{n-1}+1)\sim (+2^{n-1}-1) 【原码】" contenteditable="false"><span></span><span></span></span><br>
有符号整数<br><span class="equation-text" data-index="0" data-equation="-2^{n-1}\sim (+2^{n-1}-1)【补码】" contenteditable="false"><span></span><span></span></span><br>
定点小数
纯小数<br><span class="equation-text" data-index="0" data-equation="(-1+2^{-(n-1)}) \sim (1-2^{-(n-1)})【原码】" contenteditable="false"><span></span><span></span></span><br>
纯小数<br><span class="equation-text" data-index="0" data-equation="-1 \sim (1-2^{-(n-1)})【补码】" contenteditable="false"><span></span><span></span></span><br>
实数/浮点数
表示<br>
<span class="equation-text" data-index="0" data-equation="X=\pm M\times R^E【M尾数,E指数/阶,R基数】" contenteditable="false"><span></span><span></span></span>
浮点表示法<br>
十进制转浮点数<br>
<br><span class="equation-text" data-index="0" data-equation="(+13/128)_{10}=(+1011/1000000)_2=+0.1101\times 2^{-11}\\ [+0.1101]_补=0.1101000000,尾数01101000000\\ [-11]_补=11101,阶为11101【尾数/阶码最高位为符号位】\\ \therefore 浮点数为 11101\space 01101000000" contenteditable="false"><span></span><span></span></span>
浮点数转十进制<br>
<br><span class="equation-text" data-index="0" data-equation="11010\space 10011011100B\\尾数1.00110011100=-0.1100100100\\阶码 11010=-0110=-6" contenteditable="false"><span></span><span></span></span>
最大整数/最小负数
<br><span class="equation-text" data-index="0" data-equation="正max=-负min=(1-2^{m-1})\times 2^{+(e-1)}\\正min=(2^{m})\times 2^{-(e-1)}" contenteditable="false"><span></span><span></span></span>
浮点数规格化<br>
类似于科学计数法,通过左右规格操作【左右移位】<br>把浮点数真值部分表示为<span class="equation-text" data-index="0" data-equation="\pm0.1" contenteditable="false"><span></span><span></span></span>xxx
一般格式<br>
<br><span class="equation-text" data-index="0" data-equation="S_E阶符| E阶值|S_M数符|M尾数值" contenteditable="false"><span></span><span></span></span>
IEEE 754标准<br>
标准格式<br><span class="equation-text" data-index="0" data-equation="S数符|E阶码|M尾数" contenteditable="false"><span></span><span></span></span>
32位单精度 float<br>
格式<br><span class="equation-text" data-index="0" data-equation="1(符号位 S)|8阶码(移码E)|23尾数(原码M)|【32总长度】" contenteditable="false"><span></span><span></span></span><br>
规格化真值
<br><span class="equation-text" data-index="0" data-equation="(-1)^s\times 1.M\times 2^{E-127}" contenteditable="false"><span></span><span></span></span>
格式参数<br>
<br><span class="equation-text" data-index="0" data-equation="E=0、M=0时,真值=\pm 0【机器零】" contenteditable="false"><span></span><span></span></span>
<br><span class="equation-text" data-index="0" data-equation="E=0、M\neq0时,(-1)^S\times 2^{-126}\times 0.M【非规格化数】" contenteditable="false"><span></span><span></span></span>
<br><span class="equation-text" data-index="0" data-equation="1\leq E \leq 254,(-1)^S\times 2^{E-127}\times 1.M【规格化数】" contenteditable="false"><span></span><span></span></span>
最小规格化正数<br><span class="equation-text" data-index="0" data-equation="E=1,M=0,S=0\implies 2^{-126}\times 1.0" contenteditable="false"><span></span><span></span></span><br>
最大规格化负数<br><span class="equation-text" data-index="0" data-equation="E=1,M=0,S=1 \implies -1.0\times 2^{-126}" contenteditable="false"><span></span><span></span></span><br>
<br><span class="equation-text" data-index="0" data-equation="E=255,M=0,(-1)^S\times \infty【\pm \infty】" contenteditable="false"><span></span><span></span></span>
<br><span class="equation-text" data-index="0" data-equation="E=255,M\neq 0,NaN【非数值】" contenteditable="false"><span></span><span></span></span>
求浮点数机器码<br>
2011真题<br><span class="equation-text" data-index="0" data-equation="float变量x分配在32位浮点寄存器FR1中,x=-8.25则FR1的内容为" contenteditable="false"><span></span><span></span></span><br>
解法<br>
规格化/原码表示<br><span class="equation-text" data-index="0" data-equation="-1000.0100 \implies -1.000010 \times 2^3" contenteditable="false"><span></span><span></span></span><br>
通过规格化数公式求出 E 和 M 的值<br><span class="equation-text" data-index="0" data-equation="E-127=3,M=000010" contenteditable="false"><span></span><span></span></span><br>
求出FRI的二进制值<br><span class="equation-text" data-index="0" data-equation="1|1000\space0010|0000\space 1000\space ..." contenteditable="false"><span></span><span></span></span><br>
化为16进制表示<br><span class="equation-text" data-index="0" data-equation="1100(C)|0001(1)|0000(0)|0100(4)" contenteditable="false"><span></span><span></span></span><br>
结果<br><span class="equation-text" data-index="0" data-equation="C104\space 0000H" contenteditable="false"><span></span><span></span></span><br>
64位双精度 double<br>
格式<br><span class="equation-text" data-index="0" data-equation="1数符|11阶码|51尾数|【64总长度】" contenteditable="false"><span></span><span></span></span><br>
规格化真值
<br><span class="equation-text" data-index="0" data-equation="(-1)^s\times 1.M\times 2^{E-1023}" contenteditable="false"><span></span><span></span></span>
浮点数表示范围<br>
单精度<br><span class="equation-text" data-index="0" data-equation="E=254,M=1.1...1(23bit)\\2^{127}\times (2-2^{-23})" contenteditable="false"><span></span><span></span></span><br>
双精度<br><span class="equation-text" data-index="0" data-equation="E=2046,M=1.1...1(23bit)\\2^{1023}\times (2-2^{-52})" contenteditable="false"><span></span><span></span></span>
非数值数据
逻辑数表示
表示<br>位向量。通常于整数长度种类相同,需要通过指令操作码才能区分<br>
运算<br>&与,| 或,!非,~取反,^异或<br>
字符/字符串表示<br>
表示<br>交换码和扩展码;交换码即实际编码位,扩展码用来补全字节整数位<br>
运算<br>=,>,<等关系运算<br>
实现方法<br>ZF【是否位0】,CF【是否借位】,SF【符号标志】,OF【溢出标志】<br>
字符串<br>一般由软件转字符串位字符操作,并用特定字符表示结束位置;C语言'\0'表示结束符<br>
数据运算<br>
加减运算<br>
定点数运算<br>
补码加减<br>
运算规则<br>
补码带符号一起算<br><span class="equation-text" data-index="0" data-equation="\begin{cases}[A]_补+[B]_补=[A+B]_补(\mod 2)\\ [A]_补+[-B]_补=[A-B]_补(\mod 2)\end{cases}" contenteditable="false"><span></span><span></span></span>
溢出判断
定义<br>
特征<br>
方法<br>OF=1溢出<br>
一个符号位判断溢出<br><span class="equation-text" data-index="0" data-equation="OF[溢出标志]=(a_{n-1}\bigoplus z_{n-1})\&(b_{n-1}\bigoplus z_{n-1})" contenteditable="false"><span></span><span></span></span><br>
进位位值判断溢出<br><span class="equation-text" data-index="0" data-equation="OF=C_{n-1}\bigoplus C_{n-2}[01正溢出,10负溢出]" contenteditable="false"><span></span><span></span></span><br>
双符号位编码判断溢出[01正溢出,10负溢出]<br><span class="equation-text" data-index="0" data-equation="+ 【00】,-【11】,OF=z_{n-1}\bigoplus z_{n-2}" contenteditable="false"><span></span><span></span></span><br>
原码<br>
运算规则<br>
判断求和/求差<br>
<br><span class="equation-text" data-index="0" data-equation="op=a_{n-1}\bigoplus b_{n-1} \bigoplus op; =0求和,=1求差" contenteditable="false"><span></span><span></span></span>
求和<br>
<br><span class="equation-text" data-index="0" data-equation="z_{n-1}=a_{n-1},z_{n-2}...z_0=a_{n-2}...a_0+b_{n-2}...b_0,OF=C_{n-2}" contenteditable="false"><span></span><span></span></span>
求差
溢出判断
无符号加减运算<br>
运算规则
原码减法使用补数计算<br><span class="equation-text" data-index="0" data-equation="[A+B]_补=[A]_无+[B]_无(\mod 2)\\ [A-B]_无=[A]_无+[B]_补(\mod 2)" contenteditable="false"><span></span><span></span></span>
溢出判断
进位位值判断溢出【Ci 表示第 i 位是否进位】<br><span class="equation-text" data-index="0" data-equation="OF=C_{n-1}\bigoplus C_{-1}【C_{-1}最低位进位】" contenteditable="false"><span></span><span></span></span><br>
浮点数运算<br>
运算步骤
对阶<br>
小阶对大阶,大阶作为运算结果的阶<br>
尾数右移为算数移位,移除的数值进入附加位<br>
尾数加减
可通过规格化改变小数点,一般采用双符号位进行运算<br>
尾数规格化<br>
将<span class="equation-text" data-index="0" data-equation="|M|" contenteditable="false"><span></span><span></span></span>移动至 <span class="equation-text" data-index="1" data-equation="[0.5,1.0)" contenteditable="false"><span></span><span></span></span>区间内<br>
尾数舍入
截断法<br>
恒置1法
舍入法<br>
原码
补码<br>
查表舍入法
溢出判断<br>
附加位/IEEE 754<br>
保护位和舍入位<br>【在运算时添加到尾数末尾】<br>
十进制数运算<br>
加法校正规则<br>
减法校正规则
乘法运算<br>
循环右移法<br>
无符号乘法<br>
运算规则<br>
循环进行 n 次判断-加法-移位操作【n维乘数位数】<br>部分积的位数为 被乘数的位数<br>
逻辑实现<br>
寄存器【存放乘数、部分积高位】<br>
Cnt计数器,控制循环次数;
控制门、加法器、移位寄存器
溢出判断<br>
<br><span class="equation-text" data-index="0" data-equation="OF=z_{2n-1}+...+z_n" contenteditable="false"><span></span><span></span></span>
原码一位乘法
运算规则<br>
计算乘积符号<br><span class="equation-text" data-index="0" data-equation="x_s \bigoplus y_s" contenteditable="false"><span></span><span></span></span>
计算真值【无符号乘法】<br>
递推逻辑<br><span class="equation-text" data-index="0" data-equation="P_0=0\\P_1=(P_0+|A|\times b_0)\times 2^{-1}\\...\\P_n=(P_{n-1}+|A|\times b_{n-1})\times 2^{-1}" contenteditable="false"><span></span><span></span></span><br>
代码表达<br>
手算模拟图示
<br>
与运算器部件<br>
ACC 乘积高位<br>
<span class="equation-text" data-index="0" data-equation="(ACC)+[|X|]_原" contenteditable="false"><span></span><span></span></span>
<span class="equation-text" data-index="0" data-equation="(ACC)+0" contenteditable="false"><span></span><span></span></span><br>
MQ 乘数、乘积低位<br>
X 通用寄存器【结果】<br>
图示
<br>
补码一位乘法
运算规则<br>Booth算法<br>
表示<br><span class="equation-text" data-index="0" data-equation="[A]_补=a_{n-1}...a_0,[B]_补=b_{n-1}...b_0(补加位b_{-1}=0)" contenteditable="false"><span></span><span></span></span><br>
递推逻辑<br><span class="equation-text" data-index="0" data-equation="[P_0]_补=0,b_{n-1}=0\\ [P_{i+1}]_补=([P_{i-1}]_补+|A|\times(b_{i-1}-b_i))\times 2^{-1}\\...\\P_n=(P_{n-1}+|A|\times (b_{n-2}-b_{n-1})))\times 2^{-1}" contenteditable="false"><span></span><span></span></span><br>
结论【判断位-加法-算数右移】<br><span class="equation-text" data-index="0" data-equation="00或11,+0\\01,+[A]_补\\10,+[-A]_补" contenteditable="false"><span></span><span></span></span><br>
与原码乘法比较<br>
<br>
运算器结构
<br>
手算模拟<br>
<br>
阵列乘法器<br>
并行运算,用物理空间换时间<br>
竖式计算(笔算)<br>
确定符号位<br>
每次左移相乘再相加<br>
移位运算<br>
操作<br>
左移
右移
类型
逻辑移位
对象<br>
<font color="#B71C1C">无符号数</font><br>
运算规则<br>
<<左移末位补 0<br>>>右移首位补0
算术移位
对象<br>
<font color="#B71C1C">有符号数</font>
运算规则<br>
<br>
溢出判断
原码<<丢1,补码算数<<移丢符号相反位<br>
右移不会溢出,但是会产生精度误差<br>
其他移位运算
带进位的逻辑移位<br>
循环移位<br>
位扩展运算<br>
零扩展<br>机器出高位添0,适用于无符号数<br>
符号扩展<br>高位添符号位,适用于有符号数【补码】<br>
溢出判断<br>
一位符号位
溢出逻辑表达式<br><span class="equation-text" data-index="0" data-equation="V=A_sB_s\overline S_s+\overline{A_s}\overline B_sSs" contenteditable="false"><span></span><span></span></span><br>
V=0 无溢出<br>
V=1 有溢出
双符号位<br>
溢出逻辑判断表达式<br><span class="equation-text" data-index="0" data-equation="V = S_{s1}\bigoplus S_{s2};" contenteditable="false"><span></span><span></span></span><br>
01 上溢<br>
10 下溢<br>
00 正数<br>
11 负数<br>
操作可能溢出影响
对阶 不会<br>
右规 阶码上溢<br>
尾数舍入 阶码上溢<br>
左规 阶码下溢<br>
尾数溢出 不一定<br>
一位符号位并根据数据位进位情况判断<br>
运算器组成
加法器组成<br>
一位全加器<br>
输出位<br><span class="equation-text" data-index="0" data-equation="S_i=A_i\bigoplus B_i\bigoplus C_{i-1}" contenteditable="false"><span></span><span></span></span>
进位位【+ 逻辑或】<br><span class="equation-text" data-index="0" data-equation="C_i=A_{i}\&B_{i}+(A_{i}\bigoplus B_{i})\&C_{i-1}" contenteditable="false"><span></span><span></span></span><br>
并行加法器
串行进位<br>
先行/并行进位
ALU组成<br>
74181【4位ALU】16种算数运算和逻辑运算<br>
运算功能<br>
定点运算<br>
逻辑运算<br>
浮点运算<br>
关系运算<br>由逻辑、算数运算实现<br>
运算器部件<br>
ALU<br>算数逻辑单元<br>
暂存寄存器
ACC<br>累加寄存器 <br>
通用寄存器组<br>
PSW<br>状态字寄存器<br>
OF 溢出标志<br>
SF 符号标志<br>
ZF 零标志<br>
CF 进/借位标志<br>
移位器
CT 计数器<br>
图解<br>
定点运算结构<br>
运算器与CPU
C语言类型转换
相同字长/类型<br>有符号数无符号数<br>
二进制数值不改变,但解释方式不同<br>
不同字长整数
高字长 -> 低字长<br>采取高位多余部分截断,保留低位数据<br>
低字长 -> 高字长<br>扩展后真值保持不变<br>
char 转 int<br>高位部分补0即可<br>
数据存储/排列
大小端模式
LSB 小端存储<br>
MSB 大端存储<br>
数据"边界对齐"<br>
图示<br>
<br>
边界对齐<br>
边界不对齐<br>
存储系统<br>
存储器分类
存储介质分类<br>
半导体器件<br>
TTL
MOS【广泛】<br>
磁性材料
磁芯<br>
磁表面<br>
磁盘<br>
磁带
光介质材料<br>
光盘<br>
存取方式分类<br>
随机存取 RAM
编制单位<br>存储字<br>
操作方式<br>存取<br>
存取时间<br>固定<br>
常见类型<br>
RAM / EPROM<br>
只读存储器 ROM<br>
串行访问存储器<br>
顺序存取 SAM<br>
编制单位<br>记录块<br>
操作方式<br>存取<br>
常见类型<br>
磁带<br>
直接存取 DAM<br>
编制单位<br>记录块<br>
操作方式<br>存取<br>
存取时间<br>可变(与访问地址关系较小<br>
常见类型<br>
磁盘<br>
光盘<br>
应用功能分类
主存储器 MM<br>
组成<br>ROM、RAM<br>
功能<br>存放指令和数据<br>
辅助存储器 AM<br>
高速缓冲存储器 Cache<br>
控制存储器 CM<br>
组成<br><font color="#B71C1C">ROM(只读)</font><br>
功能<br>用于<font color="#B71C1C">存放</font>指令系统的<font color="#B71C1C">全部微指令</font><br>
按信息可保存性分类<br>
易失性存储器<br>
RAM<br>
非易失性存储器<br>
ROM<br>
磁表面存储器<br>
光存储器<br>
破坏性读出
非破坏性读出
技术指标<br>
存储容量<br>
单位/单位换算<br>bit位,Byte字节,8bit=1Byte=1B,KB,MB,GB,TB,ZB<br>
计算公式<br>存储字数<span class="equation-text" data-index="0" data-equation=" \times" contenteditable="false"><span></span><span></span></span> 字长<br>
存取速度
存取/访问时间 <br>
T存取 = T完成 - T启动<br>
存储周期
存期周期=存取时间+恢复时间
主存带宽
单位<br>Mbps(兆位/秒),MB/s(兆字节/秒)<br>
总线传输周期<br>
单位成本
每位价格 = 总成本/总容量<br>
层次结构
划分原理<br>
局部性原理
时间局部性
空间局部性
Cache -> 主存 -> 辅存
Cache-主存<br>
主存-辅存
半导体存储技术
RAM
静态 SRAM<br>
存储元<br><b>触发器</b><br>
6位MOS型结构<br>
芯片基本组成<br>
存储矩阵/阵列
排列方式<br>一维、二维<br>
信号延迟<br>线路长度成正比<br>
地址译码器
功能<br>将每个地址信号转换为相应电平信号<br>
方式<br>
单译码
双译码
图示结构<br>
<br>
I/O门<br>
功能<br>从所有列的存储单元中,选择一个进行I/O<br>
读写电路
组成与长度<br>由读、写放大器组成,每个读写电路只能读写一位数据<br>而芯片中读写电路则于存储单元长度相同<br>
控制电路
<span class="equation-text" data-index="0" data-equation="\overline{CS}" contenteditable="false"><span></span><span></span></span>片选信号<br>
芯片引脚<br>
数据引脚
地址引脚
图示结构
A10~A0地址引脚,D1~D0数据引脚<br><span class="equation-text" data-index="0" data-equation="\overline{CS}片选引脚【低电平有效】\\\overline{WE}读写引脚【低电平写,高电平读】" contenteditable="false"><span></span><span></span></span><br>
动态 DRAM<br>
存储单元<br><b>MOS管(电容)</b><br>
相比SRAM存储单元结构简单了不少
芯片基本组成<br>
存储矩阵<br>
地址译码器
读写电路
地址锁存器<br>
再生电路
时序控制电路
行时钟<br><span class="equation-text" data-index="0" data-equation="\overline{RAS}" contenteditable="false"><span></span><span></span></span><br>
列时钟<br><span class="equation-text" data-index="0" data-equation="\overline{CAS}" contenteditable="false"><span></span><span></span></span><br>
写时钟<br><span class="equation-text" data-index="0" data-equation="\overline{WE}" contenteditable="false"><span></span><span></span></span><br>
图示结构
<br>
芯片引脚
数据引脚
地址引脚
芯片读写周期<br>
读周期
写周期
刷新周期
芯片刷新操作
方式<br>
集中式<br>
分散式
异步式
减小刷新<br>
18】假定DRAM芯片中存储阵列的行数为r,列数为c<br>对于一个2K x 1位的DRAM芯片,为保证其他地址引脚最少<br>且尽量减少刷新开销,则 r , c 的取值分别为<br>
地址线复用技术
SRAM v.s. DRAM <br>
存储信息<br>
触发器/电容<br>
破坏性读出<br>
非/是<br>
需要刷新<br>
不要/要<br>
送行列地址<br>
同时送/分两次<br>
运行速度
快/慢<br>
集成度<br>
低/高<br>
发热量(功耗)<br>
大/小<br>
存储成本<br>
高/低<br>
主要用途<br>
高速缓存/主机内存<br>
ROM <br>非易失存储<br>
MROM掩模式存储器<br>
PROM 一次可编程<br>
EPROM (光)可擦除编程<br>
EEPROM 电可擦除<br>
Flash 闪存<br>
U盘<br>
SSD 固态存储器<br>
引脚数计算
假设 某芯片容量为 1024【地址个数】<span class="equation-text" data-index="0" data-equation="\times " contenteditable="false"><span></span><span></span></span>8【数据位数】位<br>
地址引脚<br>
地址引脚数 = <span class="equation-text" data-index="0" data-equation="\log_2{(地址个数)} = 10" contenteditable="false"><span></span><span></span></span><br>
地址个数 = 总存储容量 / 数据位数<br>
数据引脚<br>
数据引脚数=存储单元长度=数据位数 = 8
<b>引脚总个数</b> = 数据线 + 地址线 + 片选线 + 读/写控制线(RD+WE)<br>
真题
408/14】<br>容量为256MB的存储器由若干4M x 8位的 DRAM芯片<br>(就是DRAM存储器)构成,则其地址引脚和数据引脚分别为<br>
主存储器 MM<br>
基本组成<br>
主存容量<br>主存容量=存储字长<span class="equation-text" data-index="0" data-equation="\times" contenteditable="false"><span></span><span></span></span> 存储字数 = 主存单元长度 <span class="equation-text" data-index="1" data-equation="\times" contenteditable="false"><span></span><span></span></span>主存单元个数<br>
主存<br>通常由 RAN 和 ROM 芯片构成<br>
容量扩展<br>
位扩展法<br>
又称 <b>位并联法</b><br>将多个存储器芯片并联从而增加<b>存储字长</b><br>
片选信号<span class="equation-text" data-index="0" data-equation=" \overline {CS}" contenteditable="false"><span></span><span></span></span> 要连接所有芯片<br>
<b>m片</b> 8K x 1 位,组成 8K x <b>m位</b>的存储器<br>
图示
地址由A0~A9进行并联,CS片选信号,一次全部芯片选中<br>
字扩展法
又称 <b>地址串联法</b><br>通过芯片串联起来增加<b>存储字数</b><br>
2K x 4位的芯片组成一个 8K x 8位的存储器<br>则0B1FH所在芯片最小地址为<br>
图示
增加高位A10~Ax,作为片选信号,选择第几个芯片的位置<br>
字位扩展法<br>
行(位扩展/并联)<br>
列(字扩展/串联)
真题
与CPU存储器接口
数据线连接
数据线数=可访问数据位数=MDR宽度
数据线 ≠ SRAM芯片数据引脚<br>
地址线连接
地址线数 = 主存最大可寻址空间=MAR宽度<br>
控制线连接
读写操作<br>
片选<br>
线选法<br>
译码片选法
字选
Intel 8088 CPU
图示<br>
<br>
部件<br>
<span class="equation-text" data-index="0" data-equation="IO/\bar M" contenteditable="false"><span></span><span></span></span><br>
<span class="equation-text" data-index="0" data-equation="\overline{RD}及\overline{WR}" contenteditable="false"><span></span><span></span></span>
READY<br>
A0~A19<br>
D0~D7<br>
提高访存速度
增强DRAM<br>
FPM DRAM(快页模式)<br>
SDRAM/<font color="#B71C1C">异步</font>DRAM<br>
在时钟周期控制下操作<br>
<font color="#B71C1C">突发传输</font>模式<br>在第一个数据被访问后,可以连续传输多个数据<br>
DDR SDRAM<br>双倍数据速率<br>
双端口 RAM 存储器
多模块存储器<br>
单体多字存储器<br>
多体交叉存储器<br>
高位顺序编址<br>
顺序编址
顺序访问<br>
低位交叉编址
交叉编址
并行访问
冲突访问<br>
访问时间<br>
交叉存取度<br><span class="equation-text" data-index="0" data-equation="m\geq T/r" contenteditable="false"><span></span><span></span></span><br>
总线传输周期<br><span class="equation-text" data-index="0" data-equation="r = T/m" contenteditable="false"><span></span><span></span></span><br>
顺序访问<br><span class="equation-text" data-index="0" data-equation="t=mT" contenteditable="false"><span></span><span></span></span><br>
交叉访问<br><span class="equation-text" data-index="0" data-equation="t=T+(m-1)r\leq 2T" contenteditable="false"><span></span><span></span></span><br>
带宽<br><span class="equation-text" data-index="0" data-equation="W=q/t" contenteditable="false"><span></span><span></span></span><br>
图示<br>
高位交叉编址<br>
低位交叉编制<br>
工作方式
串行访问
并行访问
交叉访问<br>
Cache<br>
基本原理<br>
性能指标
命中率<br><span class="equation-text" data-index="0" data-equation="H_C=N_C/(N_C+N_M)\\N_C、N_M分别为CPU访存使用Cache和主存命中次数" contenteditable="false"><span></span><span></span></span><br>
平均访问时间<br>
命中时访问一次Cache, 没命中时访问一次Cache和主存<br><span class="equation-text" data-index="0" data-equation="T_A=H_CT_{Cache}+(1-H_C)(T_{mem}+T_{Cache})" contenteditable="false"><span></span><span></span></span><br>
也可记作<br><span class="equation-text" data-index="0" data-equation="H_c\times 命中时间+(1-H_c)\times非命中时间" contenteditable="false"><span></span><span></span></span><br>
存储空间管理<br>
信息交换单位
<b>交换单位</b><br>Cache块(行)<br>
Cache块(行)长<br>块由若干字节构成,块的长度<br>
CPU 与 Cache交换以字为单位,而Cache 与主存以Cache块为单位<br>
地址映射表/阵列编址单位
与主存相同
信息组织<br>
阵列表、目录表
需对Cache的字编址
指令类别<br>
将 指令Cache 和 数据Cache 进行分开<br>有利于减少指令流水线资源冲突<br>
Cache地址<br>
cache 地址 = cache 行号 + 块内地址
传输优化<br>
提高<span class="equation-text" data-index="0" data-equation="H_C" contenteditable="false"><span></span><span></span></span><br>局部性原理<br>
时间局部性
空间局部性
减小<span class="equation-text" data-index="0" data-equation="T_{mem}" contenteditable="false"><span></span><span></span></span><br>利用猝发传输<br>
访问过程
图示<br>
<br>
地址映射
直接映射
转换公式<br><span class="equation-text" data-index="0" data-equation="j=i\mod 2^c=i \mod G【余数表示块号】\\【j为Cache块号,i为内存块号,2^c为Cache块总数】" contenteditable="false"><span></span><span></span></span>
地址结构<br><span class="equation-text" data-index="0" data-equation="标记 | Cache 行号 | 块内地址=|区号|区内块号|块内地址|【rgl】" contenteditable="false"><span></span><span></span></span><br>
相关概念<br>
区<br>
图示<br>
<br>
全相联映射<br>
转换<br>Cache每一块与主存每一块都相联,<br>所以内存每一块都能够快速找到适应的Cache位置<br>
地址结构<br><span class="equation-text" data-index="0" data-equation="标记|块内地址" contenteditable="false"><span></span><span></span></span><br>
组相联映射
转换<br>组件采用直接映射,组内采用全相联映射<br><span class="equation-text" data-index="0" data-equation="j=i\mod Q=i \mod \lceil Cache块数/n路 \rceil \\【Q为Cache组数,i主存块号,j为Cache行的组号】" contenteditable="false"><span></span><span></span></span><br>
Q = 1 全相联映射<br>
Q = Cache 直接映射<br>
Q = r ,r路组相联<br>
Q = 2 ,2路组相联<br>
地址结构<br><span class="equation-text" data-index="0" data-equation="标记|组号|块内地址" contenteditable="false"><span></span><span></span></span>
相关问题<br>
不常见转换方法<br><span class="equation-text" data-index="0" data-equation="j = \lfloor i / 2^c\rfloor 【商表示块号】" contenteditable="false"><span></span><span></span></span><br>
图示<br>
<br>
替换算法<br>
随机算法 RAND<br>
先进先出算法 FIFO<br>
最近最少使用算法 LRU<br>
写策略<br>
写命中
write-through<br>全写法/直写方式<br>
写缓冲
write-back<br>回写法<br>
写不命中
非写分配法
写分配法<br>
Pentium芯片<br>
结构<br>
多级Cache结构<br>
<br>
哈佛结构<br>
<br>
组织<br>
特殊标记位
有效位【必备】<br>
脏位/一致维护位<br>
引用位/替换算法控制位<br>
Cache总容量
Cache行<br>
cache 地址=(行号,块内地址)
标记 tag<br>=内存块位-Cache地址+特殊标记位<br>=内存块位-Cache行号-块内地址+特殊标记位<br>
Cache行数 x 每行位数<br>
每行位数 = 数据位 + 标记 + 特殊标记位<br>
其他常见问题
Cache行大小与命中率关系
行长越大,<b>空间局部性</b>的效果越好
行长大时,未命中,需要花更多从主存<b>读入时间</b><br>
行长太大,Cache项数变小,因而<b>命中律</b>的可能性变小<br>
发生取指令Cache缺失的处理过程是什么<br>
程序计数器恢复当前指令的值<br>
对主存进行读的操作<br>
将读入的指令写入Cache中,更改有效位和标记位<br>
重新执行当前指令
多级Cache<br>
指令Cache 和 数据Cache
虚拟存储器<br>
相关概念<br>
程序地址空间<br>
从 0 开始编址<br>
逻辑地址<br>程序中存储器地址<br>
物理地址<br>主存的地址<br>
地址空间<br>表示任何一个计算机实体所占用的内存大小
主存空间分配<br>
连续分配<br>
单一连续
固定分区
动态分区/可变分区分配
首次适应<br>
简单,相对最好和最快<br>
最佳适应
外部碎片多<br>
最坏适应
不容易产生小碎片,但容易导致大内存块耗尽,性能差
邻近适应/循环首次适应
比首次适应算法还差
非连续分配
扩充
基本原理<br>
组成<br>
工作过程<br>
理论基础<br>
局部性原理<br>
存储管理<br>
段式
逻辑地址<br>
(段号S,段内偏移量W)<br>
段表<br>
(段号S,段长,本段在主存的始址)<br>
每个进程都有一张段表,大多数驻留在内存中
地址变换机构
段共享和保护
可同时读不可写【纯代码/可重入代码】<br>
存取控制保护
地址越界保护<br>
异常
段缺失异常
段页不在内存页表中<br>
越界异常
超过段长<br>
越权异常
读写权限越权<br>
页式
页/页面大小
页框=页帧=内存块<br>
进程块=页/页面<br>
<b>页面太小</b>:页表过长,增加转换开销,降低换入/换出率
<b>页面太大</b>:页内碎片多,降低内存利用率<br>
地址结构
(页号P,页内地址偏移W)<br>
实地址=主存页号+页内字地址<br>
虚地址=虚存页号+页内字地址
辅存地址=磁盘号+盘面号+磁道号+扇区号<br>
页表
记录<b>进程页面</b>在<b>内存</b>中对应的<b>物理地址</b>
页表存放于内存中,由<b>页表项</b>构成
每个进程一个页表
页表项<br>
(页号P,块号B)<br>
地址变换机构
基本地址变换<br>
快表地址变换<br>
两级页表
地址转换<br>
n级页表
虚拟地址空间
内核地址空间
用户地址空间<br>
用户栈<br>
共享库<br>
堆<br>
可读写数据区<br>
只读数据和代码区<br>
工作过程
<br>
TLB/Page/Cache缺失组合情况<br>
段页式存储
多通道存储器
3通道存储器DDR3<br>
指令系统<br>
指令格式<br>
概念<br>
指令 (机器指令)<br>
能够被硬件直接识别和执行的命令<br>
机器语言的基本单元<br>
<b>指令系统/指令集</b><br>所有<font color="#B71C1C">机器指令的集合</font><br>
指令格式<br>指令所有信息的编码格式<br>
基本格式<br>操作码字段 | 地址码字段<br>
操作码
地址码
指令字<br>采用<font color="#B71C1C">指令格式编码</font>的机器指令<br>
指令格式<br>
指令字长<br>
单字长指令
半字长指令<br>
双字长指令<br>
按地址数划分<br>
零地址指令<br>
不需要操作数指令,如空操作指令<br>
用在<b>堆栈计算机</b>中,参与运算的操作数隐含与栈顶和次栈顶<br>
一地址指令
指令格式<br><span class="equation-text" data-index="0" data-equation="| OP | A_1|" contenteditable="false"><span></span><span></span></span><br>
OP(A1) -> A1<br>
(ACC)OP(A1)->ACC<br>
二地址指令
指令格式<br><span class="equation-text" data-index="0" data-equation="| OP | A_1|A_2|" contenteditable="false"><span></span><span></span></span><br>
(A1)OP(A2)->A1<br>
三地址指令<br>
指令格式<br><span class="equation-text" data-index="0" data-equation="|OP|A_1|A_2|A_3(结果)|" contenteditable="false"><span></span><span></span></span>
(A1)OP(A2)->A3
四地址指令
指令格式<br><span class="equation-text" data-index="0" data-equation="|OP|A_1|A_2|A_3(结果)|A_4(下址)|" contenteditable="false"><span></span><span></span></span>
(A1)OP(A2)->A3,A4=下一条地址要执行的地址
指令个数计算<br>
一个计算机系统采用32位单字长指令,地址码位12位<br>若定义了250条而地址指令,则还可以有 24K 条单地址指令<br>
格式<br>
定长操作码
扩展操作码<br>
不允许断码是长码前缀<br>
不允许重复<br>
操作类型<br>
数据传输<br>
MOV 寄存器 — 寄存器<br>
LOAD 寄存器 — 存储单元(内存)<br>
STORE 存储单元 — 存储单元<br>
运算
算数/逻辑运算<br>R1 <- (R0) + M[1000H]<br>R2 <- (R0)&(R1)
ADD, SUB, CMP, MUL, DIV,<br>INC, DEC, AND, OR, NOT, XOR<br>
移位操作<br>
逻辑移位
对象<br>
运算规则<br>
带进位的逻辑移位<br>
算术移位
对象<br>
运算规则<br>
<br>
溢出判断
原码<<丢1,补码算数<<移丢符号相反位<br>
右移不会溢出,但是会产生精度误差<br>
循环移位
转移控制
操作类型<br>无条件转移/跳转指令(JMP)、<br>条件转移(BRANCH)、调用(CALL)<br>返回(RET)、陷阱(TRAP)<br>
输入输出操作<br>
指令的寻址方式
指令寻址方式<br>
顺序寻址<br>
程序计数器PC+1<br>(1个指令字长)<br>
跳跃寻址<br>
通过转移类指令实现<br>
数据寻址方式<br>
直接寻址<br>EA=A<br>
间接寻址<br>EA=(A)<br>
寄存器寻址<br>EA=Ri<br>
寄存器间接寻址<br>EA=(Ri)<br>
偏移寻址
相对寻址<br>EA=(PC)+A
基址寻址<br>EA=(BR)+A<br>
变址寻址<br>EA=(IX)+A<br>
隐含寻址<br>
立即寻址<br>
堆栈寻址<br>
硬堆栈/寄存器堆栈<br>
软堆栈/主存堆栈<br>
操作数存放方式
寄存器中存放方式<br>
存储器中存放方式
指令系统
发展<br>
冯诺依曼机
指令区分<br>
指令执行<br>
Pentium指令系统
数据表示<br>
操作数存放<br>
寻址方式
指令格式
指令功能<br>
CISC指令系统<br>
X86 汇编指令<br>
RISC指令系统<br>
ARM
MIPS指令系统<br>
数据表示<br>
操作数存放<br>
寻址方式
指令格式
指令功能<br>
CISC与RISC对比
指令系统
复杂
精简<br>
指令数目<br>
一般大于200条<br>
一般小于100条<br>
可访问指令
不加限制<br>
只有Load/Store<br>
各指令执行时间<br>
差别大
基本一个周期<br>
各指令使用频度<br>
差别大<br>
常用<br>
寄存器数量<br>
较少<br>
多
目标代码<br>
难以优化<br>
采用优化编译<br>
控制方式
绝大多数微程序<br>
绝大多数组合逻辑<br>
指令流水线
一定方式实现<br>
必须实现<br>
指令操作<br>
指令的操作数
整数、浮点数、字符、指针<br>
数组、结构体<br>
指令的操作 <br>Intel 80x86<br>
第 a 个寄存器 Ra, 寄存器内容 (Ra)<br>
第 b 个存储单元 M[b],存储单元内容 M[b] ,如M[1000H]<br>
目的操作数 <- 源操作数 1 OP 源操作数 2<br>R2 <- (R0) + (R1), M[1000H] <- (R0)+M[1000H]<br>
指令操作用C语言符号表示<br>
指令运行周期<br>
取指周期<br><span class="equation-text" data-index="0" data-equation="1\rightarrow FE" contenteditable="false"><span></span><span></span></span><br>
<br><span class="equation-text" data-index="0" data-equation="PC\rightarrow MAR\rightarrow 地址总线 \rightarrow 主存" contenteditable="false"><span></span><span></span></span><br>
<br><span class="equation-text" data-index="0" data-equation="CU发出控制信号 \rightarrow 控制总线 \rightarrow 主存" contenteditable="false"><span></span><span></span></span>
<br><span class="equation-text" data-index="0" data-equation="主存 \rightarrow 数据总线 \rightarrow MDR \rightarrow IR" contenteditable="false"><span></span><span></span></span>
<br><span class="equation-text" data-index="0" data-equation="CU发出读命令\rightarrow PC内容加1" contenteditable="false"><span></span><span></span></span>
间址周期<br><span class="equation-text" data-index="0" data-equation="1\rightarrow IND" contenteditable="false"><span></span><span></span></span><br>
<br><span class="equation-text" data-index="0" data-equation="Ad(IR)(或MDR)\rightarrow MAR \rightarrow 地址总线 \rightarrow 主存" contenteditable="false"><span></span><span></span></span>
<span class="equation-text" data-index="0" data-equation="CU 发出读命令 \rightarrow 控制总线 \rightarrow 主存" contenteditable="false"><span></span><span></span></span>
<span class="equation-text" data-index="0" data-equation="主存 \rightarrow 数据总线 \rightarrow MDR" contenteditable="false"><span></span><span></span></span>
执行周期<br><span class="equation-text" data-index="0" data-equation="1\rightarrow EX" contenteditable="false"><span></span><span></span></span><br>
中断周期<br><span class="equation-text" data-index="0" data-equation="1\rightarrow INT" contenteditable="false"><span></span><span></span></span><br>
<br><span class="equation-text" data-index="0" data-equation="CU 控制将SP减1 \rightarrow,SP\rightarrow MAR \rightarrow 地址总线 \rightarrow 主存" contenteditable="false"><span></span><span></span></span>
<br><span class="equation-text" data-index="0" data-equation="CU 发出写命令 \rightarrow 控制总线 \rightarrow 主存" contenteditable="false"><span></span><span></span></span><br>
<br><span class="equation-text" data-index="0" data-equation="PC \rightarrow MDR \rightarrow 数据总线 \rightarrow 主存(程序断点入口)" contenteditable="false"><span></span><span></span></span>
<span class="equation-text" data-index="0" data-equation="CU(中断程序入口地址)\rightarrow PC" contenteditable="false"><span></span><span></span></span>
指令流水线技术<br>
概念<br>
指令执行方式
顺序/串行执行方式<br>
流水线执行方式
指令集特征<br>
长度尽量一致
格式尽力规整<br>
采用Load/Store指令<br>
数据和指令在存储器中对齐
特点
任务拆分<br>
锁存器<br>
时间尽量相等<br>
连续任务执行
装入时间<br>
排空时间<br>
性能
吞吐律 Throughput<br>
<br><span class="equation-text" data-index="0" data-equation="TP=n/T_k" contenteditable="false"><span></span><span></span></span><br>
加速比 Speedup<br>
<br><span class="equation-text" data-index="0" data-equation="S=T_0/T_k" contenteditable="false"><span></span><span></span></span>
效率 Efficiency<br>
<br><span class="equation-text" data-index="0" data-equation="E=T_0/kT_k" contenteditable="false"><span></span><span></span></span>
分类<br>
单/多功能<br>
静/动态<br>
线性/非线性<br>
顺序/乱序<br>
标量/向量<br>
部件功能/处理机/处理机间级<br>
并行技术<br>
超级流水线
多发射流水线
超标量流水线<br>
乱序发射流水线<br>
超长指令字技术
标准流水线<br>
流水线冲突/冒险<br>
资源冲突/结构冒险<br>
数据冲突/数据冒险<br>
写后读 RAW<br>
读后写 WAR<br>
写后写 WAW<br>
控制冲突/控制冒险<br>
冒险处理
结构冒险处理<br>
数据冒险处理<br>
暂停几个时钟周期<br>
硬件阻塞 stall<br>
软件插入 NOP<br>
设置相关专用通路<br>
调整指令顺序<br>
控制冒险处理<br>
分支预测<br>
简单预测<br>
动态预测
加快和提前形成条件码<br>
提高转移方向的猜准率<br>
周期计算<br>
取各功能段最长时间作为CPU周期<br>
注意功能段处理时间和流水线时间区别
CPI
单周期CPU = 1<br>
多周期CPU > 1<br>
基本流水线 = 1<br>
超标量流水线 < 1<br>
常见问题<br>
流水线越多,指令执行一定越快?<br>
指令相关、数据相关概念
0 条评论
下一页