选择题
T2:后缀表达式(逆波兰表达式)—— 注意 操作数的顺序!
- 中缀转后缀
- 运算顺序不唯一,因此对应的后缀表达式也不唯一
- “左优先”原则:只要左边的运算符能先计算,就优先算左边的
- 用栈实现中缀表达式的计算
- 1、初始化两个栈,操作数栈和运算符栈
- 2、若扫描到操作数,压入操作数栈
- 3、若扫描到运算符或界限符,则按照“中缀转后缀”相同的逻辑压入运算符栈(期间也会弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈)
- 后缀求值
- 后缀表达式的手算方法
- 从左往右扫描,每遇到一个运算符,就让运算符前面最近的两个操作数执行对应运算,合体为一个操作数。注意:两个操作数的左右顺序。
- 后缀表达式用栈实现计算
- 后缀表达式的手算方法
T4:平衡二叉树
T5:图的遍历
T7:迪杰斯特拉算法 —— 最短路径
T8:最小生成树 —— 注意环
T12:速度提高。提高。不是提高了。
T14:IEEE754
T18:微程序控制
T21:IO接口
- 硬件向量法识别中断源(向量中断、80x86采用)
- 中断类型号(向量地址):中断服务程序的入口地址的地址。指针的指针,对应一个中断服务程序
- 中断向量表(入口地址):中断服务程序的入口地址
- 中断类型号用于指出中断向量的地址,CPU响应中断请求后,将中断应答信号INTR 发回到数据总线上,CPU从数据总线上读取中断类型号后,查找中断向量表,找到相应中断处理程序的入口
解答题
T41:哈夫曼树(最佳归并树)
有序表合并的最坏情况下的比较次数 m+n-1.
T43:计算机的性能指标 计算
注:
第一问中问的是 至少 。因为此时除了CPU可能还要其他部件需要访存,比如DMA。
第四问中考虑 宏观 的情况。
计算机的性能指标
访存过程中的一些参数
平均每条指令访存n次; Cache命中率为H;
假设使用页式虚拟存储器,在cache缺失的情况下访问主存时缺页率为m。
则
平均每条指令访问cache次数为nxH;
平均每条指令访问主存次数为n×(1-H);平均每条指令访存缺页次数为n×(1-H)×m。
I/0方式 1秒内外设占用CPU的时间=1秒内需要传送的次数×每次传送占用的时间
DMA控制器与CPU共用内存的安排
低位交叉存储器
存储器带宽:每秒能访问的位数
低位交叉能提供的最大带宽为存储体数量×单个存储体的带宽
计组 | 交叉编址 & 流水线_西皮呦的博客-CSDN博客_交叉编址
T44:指令流水线
1、计算机采用5段流水方式执行指令,各流水段分别是
取指(IF)、译码/读寄存器(ID)、执行/计算有效地址(EX)、访问存储器(M)、和结果写回寄存器(WB)
2、流水线的耗时计算
1)使用k段流水线时,一般每段占用一个时钟周期,若没有阻塞,连续执行n条指令耗费的时钟周期数为k+(n-1)。
2)流水线充分流动时,每个时钟周期均有一条指令完成;不使用流水线时,每k个时钟周期有一条指令完成;
故使用k段流水线的机器工作能力与k台不使用流水线的机器相同。
3、影响流水线的因素
-
- 数据 指令 分开:
- 数据 指令 分开:
-
- 1、把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。
-
-
- 硬件阻塞(stall)
- 软件插入“NOP”
- 硬件阻塞(stall)
-
- 2、转发技术即数据旁路技术。下图中那条线 ~
- 即下一条想要取出Reg的数据,不必等前一条指令将Reg的数据写回(其实1存储周期结束后已经准备好咯),而是用数据旁路技术直接用。
- 即下一条想要取出Reg的数据,不必等前一条指令将Reg的数据写回(其实1存储周期结束后已经准备好咯),而是用数据旁路技术直接用。
- 3、编译优化:通过编译器调整指令顺序来解决数据相关。
-
- 按序发射:当一条指令之前的指令都进行取指操作后,才可进行取指。
- 按序完成:前面的指令执行完之后后面指令才能执行完。
- 即不考虑任何优化。