当前位置: 首页 > news >正文

【计组】总线与IO

总线

同步定时方式

采用公共时钟信号协调发送方和接收方的传送

异步定时方式

采用握手信号来实现定时控制

不互锁

对于主设备:请求,隔一段时间自动撤销请求

对于从设备:回答,隔一段时间自动撤销回答

半互锁

对于主设备:请求,收到回答后撤销请求

对于从设备:回答,隔一段时间自动撤销回答

全互锁

对于主设备:请求,收到回答后撤销请求

对于从设备:回答,获知主设备请求已撤销后撤销回答

分离事务通信方式

将总线事务分解成请求+应答,不传送数据时释放总线,使总线可以接受其他设备的请求

中断和异常

异常

故障

指令执行时被检测到的异常事件

断点为当前指令

终止

指令执行时发生的硬件故障

一般直接终止程序的执行,不会回头

自陷

预先安排的一种异常,执行完自陷指令后CPU会陷入内核态,根据陷阱类型完成不同的处理程序(因为是预先安排的,所以通常是为了达成某些目的)

断点为下一条指令/转移目标地址

内中断皆为不可屏蔽中断

中断

NMI

任何时候只要发生NMI就必须要立刻进行处理

DMA请求>NMI        DMA请求不是DMA中断

做选择题时说的“中断”大概率不考虑NMI!

INTR

CPU可在中断控制器中设置屏蔽字来屏蔽INTR

识别异常/中断源的方式

软件识别方式

CPU设置一个用于记录异常原因的异常状态寄存器

OS使用一个统一的异常查询程序,按照一定的优先级顺序查询异常状态寄存器,并处理异常

硬件识别方式(向量中断)

中断向量:异常/中断处理程序的入口地址,硬件生成

中断向量表:存放中断向量

中断类型号:用来标识异常/中断,和中断向量一一对应

响应中断的条件

CPU处于开中断

至少有一个未被屏蔽的中断请求

当前指令刚执行完

中断处理的过程

响应(中断隐指令)

1.关中断

2.保存断点(PC和PSW)

3.识别中断源,转到相应的处理程序

处理(中断服务程序)

单重中断

1.保存现场

2.执行中断服务程序

3.恢复现场

4.开中断(这里开中断是因为现场已经恢复完了)

5.中断返回

多重中断

1.保存现场和屏蔽字

0表示允许中断,1表示屏蔽中断

2.开中断(从这里开始才能接收到新的中断)

3.执行中断服务程序

4.关中断(这里关中断是为了恢复现场时的安全)

5.恢复现场和屏蔽字

6.开中断(这里开中断是因为现场已经恢复完了)

7.中断返回

优先级

响应优先级:硬件决定

处理优先级:屏蔽字决定

多个中断同时到达,由响应优先级决定处理顺序

多个中断先后到达,由到达次序决定处理顺序

I/O接口与I/O端口

功能

进行地址译码和设备选择

实现主机和外设的通信联络控制

实现数据缓冲

信号格式的转换(电平转换、并/串转换、模/数转换)

IO接口的通用结构

数据线

读写数据

状态字(命令字)

控制字

中断类型号

地址线

I/O端口地址

如果某个I/O接口能够作为数据通信的主控设备(如DMA控制器),那么它就可以发起总线事务并控制总线进行数据传送,地址线方向为输出

控制线

各种信号

I/O端口编址

统一编址

独立编址

需要设置专门的I/O指令

程序查询方式

特点

信息交换完全由 CPU 执行程序实现

CPU 与外设串行工作

工作流程

程序中断方式

特点

通过中断请求CPU转去处理,在处理的过程中完成数据传输,处理完毕后回到现行程序

CPU 与外设并行工作

中断IO方式请求的是处理器的时间

工作流程

DMA

特点

传送数据不经过CPU

采用“请求-响应”方式

主要用于磁盘等高速设备数据传送

DMA方式请求的是总线控制权

CPU与外设并行工作

工作流程

1.DMA控制器的初始化

CPU执行一段初始化程序:

1.准备内存区

2.设置传送参数

3.向DMA控制器发送“启动DMA传送”命令,然后调度CPU执行其他进程,由DMA控制器掌权

2.DMA数据传送

DMA控制器给出内存地址

读写线发命令

每完成一个数据传送,字计数值减1并修改主存地址,字计数器为0时完成所有IO操作

3.DMA的后处理

字计数器为0时,发出DMA结束的中断请求信号给CPU,转入中断服务程序,做一些数据校验等后处理工作

传送方式

停止CPU访存

DMA传输时,由DMA控制器发一个停止信号给CPU,使CPU脱离总线,停止访问主存,直到DMA传送一块数据结束

周期挪用

DMA传输时,CPU让出一个总线事务周期,由DMA控制器挪用一个主存周期来访问主存,传送完一个数据后立即释放总线,是一种单字传输方式

每个块只需要初始化一次,在传输过程中每传输一个字DMA控制器就要重新申请总线(这个才是周期挪用的单字传输!),最后进行后处理

DMA与CPU交替访存

DMA请求与DMA中断

计算(CPU用于I/O或DMA的时间占整个CPU时间的百分比)

方法

用于I/O的时钟周期数/CPU在1s内能够提供的时钟周期数

主频xHz=1s内CPU可以提供x个时钟周期

例题

http://www.dtcms.com/a/352597.html

相关文章:

  • 【C++】智能指针底层原理:引用计数与资源管理机制
  • 菜鸡还没有找到工作(DAY41)
  • 永磁同步电机无速度算法--高频脉振正弦波注入到两相静止坐标系
  • 全新机器人遥操作触觉感知解决方案
  • postman使用教程
  • MATLAB 实现子图不规则排列
  • 【软考论文】论自动化测试方法及其应用
  • 这个AI有点懒
  • ZAM5404B:通道速率和信号带宽双提升,工业采集更高效
  • Tokenizer
  • 2025全国大学生数学建模B题思路+模型+代码9.4开赛后第一时间更新,备战国赛,算法解析支持向量机(SVM)
  • 华为云之CodeArts IDE Online平台部署Homepage个人导航页【玩转华为云】
  • k230 canMV 单路、双路、三路摄像头高清显示源代码
  • 数据存储工具 ——Redis
  • 构建面向人工智能决策的世界模型引擎所需的基本知识体系
  • 视觉工具:文字显示、图像标注与多模板匹配
  • Mysql——一条 update 语句的执行过程
  • Prometheus 指标类型
  • Solon Web 的两种 Context-Path 配置
  • Vuex 和 Pinia 各自的优点
  • MATLAB中函数的详细使用
  • Linux-孤儿进程和僵死进程
  • RAG中使用到的相关函数注释——LangChain核心函数
  • tracebox工具使用
  • LKT4202UGM耗材防伪安全芯片,守护您的消费电子产品
  • 从串口到屏幕:如何用C#构建一个军工级数据实时监控
  • JUC之synchronized关键字
  • Dify 从入门到精通(第 57/100 篇):Dify 的知识库扩展(进阶篇)
  • 8.26学习总结
  • 在 C# 中使用 Consul 客户端库实现服务发现