本系列文章是学习了网课《哈尔滨工业大学–计算机组成原理》之后,用以梳理思路而整理的听课笔记及相关思维拓展。本文涉及到的观点均为个人观点,如有不同意见,欢迎在评论区讨论。
例题精选
1、解释接口和端口的概念
下面是一个简单的基本外部设备接口,中间部分是IO接口,连接CPU和外部设备,是一个连接部件。
各种数据信息、状态信息和控制信息会经过IO接口中对应的寄存器暂存,也就是“数据口”、“状态口”和“控制口”。
这些寄存器称为“端口”。
2、假设有一个数据采集系统,当输入数据准备好后发出Ready就绪信号,可向CPU送出8位数据。设计一个中断方式的输入接口电路。
以数据输入为例:
①数据采集系统将数据发送至8位寄存器时
②发出Ready信号
③该信号使中断请求触发器置“1”,并向CPU发中断请求INTR
④CPU响应中断,执行中断服务程序,地址译码输出低、 R D ‾ \overline{RD} RD输出低、M/ I O ‾ \overline{IO} IO低,与门输出低,打开三态门
⑤读取8位数据到CPU
3、程序查询方式的输入输出系统中,假设每一个查询操作需要100个始终周期,CPU的频率为50MHz。
现在要对鼠标和硬盘进行查询,CPU每秒查30次鼠标,硬盘以32位为字长传输数据,每32位查询一次,传输速率为2MBps。求解CPU对这两个设备查询所花费的时间比率。
CPU每秒钟查询鼠标所花费的始终周期数量:30 * 100 = 3000个时钟周期
CPU的频率为50MHz,每秒50 × 1 0 6 10^6 106 个时钟周期,鼠标查询对CPU的占用比率为:3000 / (50 × 1 0 6 10^6 106 )* 100% = 0.006%
硬盘的传输速率为2MBps,传输32位以后,就会查询一次,那么以这个传输速率,硬盘每秒需要CPU查询的次数为:2MBps / 4B = 512K,每次查询占用的时钟周期数量为100,所以硬盘每秒查询占用的时钟周期数量为:512K * 100 = 52.4 × 1 0 6 10^6 106次,所以硬盘的查询对CPU的时间比率为(52.4 × 1 0 6 10^6 106)/(50 × 1 0 6 10^6 106 )* 100% = 105%,CPU完全不够硬盘查询用的。
4、假设硬盘采用DMA方式与主机交换信息,传输速率依旧为2MBps,但是DMA的初始化和收尾工作分别需要占用1000个时钟周期和500个时钟周期。每次DMA的传输数据长度为4KB,那么在50MHz的处理器上工作,CPU需要使用多少时间比率进行DMA的辅助操作。
4KB数据传输,需要4KB / 2MBps = 0.002秒,也就是,每秒传输1 / 0.002 = 500次数据
在每个4KB数据传输的前后,分别需要1000个时钟周期初始化,500个时钟周期收尾,这部分是由CPU处理的,也就是,每秒CPU需要500 * (1000 + 500) = 75000个时钟周期去处理硬盘的数据传输。
DMA辅助操作占用CPU的时间比率就是:75000 / (50 * 1 0 6 10^6 106)* 100% = 1.5%
5、调用中断服务程序和子程序的区别
中断服务程序是当产生中断事件以后,CPU响应中断,去执行的程序;子程序就是程序执行流程中又去调用另外一个程序。有以下区别:
中断服务程序 | 子程序 |
---|---|
除了软中断,一般都是随机的 | 由CALL指令引起,就是你在程序中,调用了另外一个程序,就会生成CALL指令去调用 |
由硬件向量产生向量地址,再由向量地址找到中断服务程序的入口地址 | 子程序调用的子程序入口地址由CALL指令中的地址码给出 |
需要保护程序断点,但是由中断隐指令完成 | 由CALL指令本身完成 |
需要对多个同时发生的中断进行裁决 | 一般没有这个问题 |
重要概念
1、IO接口电路功能
IO接口电路通常具有选址、传送命令、传送数据和反映设备状态的功能。
分别对应设备选择电路、命令寄存器和命令译码器、数据缓冲寄存器和反映设备状态的标记(通常有工作触发器、完成触发器、中断请求触发器和中断屏蔽触发器)。
2、IO与主机交换信息的方式
程序查询方式、程序中断方式、DMA方式、通道方式和IO处理机方式。
3、通过DMA方式和主存之间传递数据
通常使用三种方法使用主存,停止访问主存、周期挪用、DMA和CPU交替访问内存。
DMA数据传送过程可以分为预处理、数据传送和后处理三个阶段。
4、中断过程
一次中断过程大致可以分为中断请求、中断判优、中断响应、中断服务和中断返回。
中断服务程序流程
单重中断的执行顺序为:保护现场、设备服务、恢复现场、开中断和中断返回。
多重中断的执行顺序为:保护现场、开中断、设备服务、恢复现场和中断返回。