首页 > 其他分享 >第7章-输入输出系统

第7章-输入输出系统

时间:2023-04-26 20:55:21浏览次数:29  
标签:DMA 中断 端口 输入输出 系统 查询 地址 CPU

第7章 输入/输出系统

7.2 I/O接口

7.2.1 I/O接口的功能
  1. 进行地址译码和设备选择
  2. 实现主机和外设的通信联络控制
  3. 实现数据缓冲
  4. 信号格式的转换
  5. 传送控制命令和状态信息
7.2.2 I/O接口的基本结构

image-20230422221546501

7.2.4 IO端口及其编址
1.统一编制

把IO端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问I/O端口,又称存储器映射方式

不同的地址码区分主存和IO设备,IO地址要求相对固定在地址的某部分。

例:系统总线中地址线共10根,则可以访问的存储单元个数为2^10=1024个,假设要给10个IO端口编址:

(1)0-9表示IO地址,10-1023表示为主存单元地址

(2)0-1013为主存单元地址,1014-1023为IO地址

(3)10-19为IO地址,0-9,20-1023为主存单元地址

优点:

不需要专门的输入/输出指令,所有访存指令都可以直接访问端口,程序设计灵活性高。

端口有较大的编址空间

读写控制逻辑电路简单

缺点:

端口占用了主存地址空间,使主存地址空间变小,外设寻址时间长(地址位数多,地址译码速度慢)

2.独立编址

I/O端口和存储器地址无关,独立编址CPU需要设置专门的输入/输出指令访问端口,又称I/O映射方式。

靠不同的指令区分内存和I/O设备。

优点:

使用专门的I/O指令,指令编址清晰

I/O端口地址位数少,地址译码速度快

I/O端口的地址不占用主存地址空间

缺点:

I/O指令类型少,一般只能对端口进行传送操作。

程序设计灵活性差

需要CPU提供存储器读/写,I/O设备读/写两组控制信号,增加了控制逻辑电路的复杂性。

做题总结
  1. 磁盘驱动器向盘片磁道记录数据时采用串行方式写入
  2. 程序员进行系统调用访问设备使用的是逻辑地址
  3. 在I/O总线的数据线上传输的信息包括(I/O接口中的命令字,I/O接口中的状态字,中断类型号)
    数据缓冲寄存器和命令/状态寄存器的内容都是通过数据线来传送的;地址线用以传送与CPU交换数据的端口地址;而控制线用以给I/O端口发送读/写信号,只是用来对端口进行读/写控制的。
  4. I/O指令实现的数据传送通常发生在(通用寄存器和I/O端口之间)
    I/O端口是指I/O接口中用于缓冲信息的寄存器,由于主机和I/O设备的工作方式和工作速度有很大差异,I/O端口应运而生。在执行一条指令时,CPU使用地址总线选择所请求的I/O端口,使用数据总线在CPU寄存器和端口之间传送数据。
  5. 不属于I/O接口的是(磁盘驱动器)
    打印机适配器,网络控制器,可编程中断控制器都属于I/O接口

7.3 I/O方式

7.3.1 程序查询方式

image-20230423202047285

主要特点:CPU有“踏步”等待现象,CPU与I/O串行工作。接口设计简单,设备量少。

例题:

在程序查询方式的输入/输出系统中,假设不考虑处理时间,每一个查询操作需要100个时钟周期,CPU时钟频率为50MHz。现有鼠标和硬盘两个设备,而且CPU必须每秒对鼠标进行30次查询,硬盘以32为字长为单位传送数据,即每32位被CPU查询一次,传输率为2×2^20B/s。求CPU对这两个设备查询所花费的时间比率,由此可得出什么结论?

时间的角度:

一个时钟周期=1/50MHz=20ns

一个查询耗时为100×20ns=2000ns

1)鼠标

每秒查询鼠标时间为 30×2000ns=60000ns

时间比率为60000ns/1s=0.006%

所以对鼠标的查询基本不影响CPU的性能

2)硬盘

每32位查询一次,传输率为2×2^20B/s

每秒需要查询的次数为2×220B/4B=219次

查询硬盘耗时=219×2000ns=1.05×109ns

查询硬盘所花费的时间比率=1.05×10^9ns/1s=105%

即使CPU将全部时间都用于对硬盘的查询也不能满足对磁盘传输的需求

频率的角度:

时钟频率为50MHz,故每秒的时钟周期数为5×10^6个时钟周期

1)鼠标

总共所需的时钟周期数为30×100=3000个时钟周期

比率为3000/(5×10^6)=0.006%

2)键盘

每秒需要查询的次数为2×220B/4B=219次

比率为219×100/5×106≈105%

独占查询

CPU100%的时间都在查询I/O状态,完全串行

定时查询

在保证数据不丢失的情况下,每隔一段时间CPU就查询一次I/O状态,查询的间隔内CPU可以执行其他程序

7.3.2 程序中断方式

工作流程:

1.中断请求

中断源向CPU发送中断请求信号。

2.中断响应

响应中断的条件

中断判优:在多个中断源同时提出请求时,通过硬件排队器来选择优先响应哪个中断

1)硬件故障中断属于最高级,其次是软件中断;

2)非屏蔽中断优于可屏蔽中断;

3)DMA请求优于I/O设备传送的中断请求

4)高速设备优于低速设备

5)输入设备优于输出设备

6)实时设备优于普通设备

3.中断处理

中断隐指令(关中断,保存断点,引出中断服务程序)

中断服务程序(1保护现场 2中断服务(设备服务)3恢复现场(中间可能还有开中断) 4中断返回)

image-20230423214120079

中断向量:中断服务程序的地址

向量地址(中断类型号):是这个中断向量的地址

向量地址->中断向量->中断服务程序

#4.中断处理过程(多重中断)

多重中断也称中断嵌套

1)关中断

2)保存断点

3)中断服务程序寻址

4)保存现场和屏蔽字

5)开中断(\)

6)执行中断服务程序

7)关中断

8)恢复现场和屏蔽字

9)开中断、中断返回

5.中断类型

外部中断:是指CPU执行指令以外的事件产生的中断,通常来自CPU与内存以外的中断。

6.中断响应优先级和中断处理优先级的区别

中断响应优先级是由硬件排队线路或中断查询程序的查询顺序决定的,不可动态改变;而中断处理优先级可以由中断屏蔽字来改变,反映的正是正在处理的中断是否比新的中断的处理优先级低(若对新中断的屏蔽位为“0”,则让新中断先处理)处理完后再回到刚才被中止的中断继续处理。

7.中断向量和向量地址

中断向量中的内容是中断服务程序的地址

向量地址中的内容是中断向量的地址

向量地址->中断向量->中断服务程序

7.3.3 DMA方式

image-20230424204840203

在DMA传送方式中,由外部设备向DMA控制器发出DMA请求,再由DMA控制器向CPU发出总线请求信号。在DMA方式中,DMA控制器在传送期间有总线控制权,这时CPU不能响应I/O中断。

CPU和DMA控制器同时要求使用存储器总线时,DMA请求的优先级更高。因为DMA请求得不到及时响应,I/O传输的数据可能会丢失。

DMA方式和中断方式的区别

中断 DMA
数据传送 程序控制
程序的切换->保存和恢复现场
硬件控制
CPU只需进行预处理和后处理
中断请求 传送数据 后处理
响应 指令执行周期结束后响应中断 每个机器周期结束均可,总线空闲时即可响应DMA请求
适用场景 CPU控制,低速设备(字符型设备) DMA控制器控制,高速设备
优先级 优先级低于DMA 优先级高于中断
异常处理 能处理异常事件 仅传送数据
做题总结

1.外部中断是指CPU执行指令以外的事件产生的中断。

键盘输入属于外部事件,能引起外部中断;

除数为0,属于异常,异常属于内中断,发生在CPU内部;

浮点数运算下溢将按机器零处理,不会产生中断。

访存缺页属于内部异常

定时器到时描述的是时钟中断,属于外部中断;

网络数据包到达描述的也是CPU执行指令以外的事件,也属于外部中断。

2.中断优先级由中断屏蔽字决定

3.中断服务程序在内核态下执行

4.一个扇区的平均访问时间=寻道时间+延迟时间+传输时间

延迟时间一般为转速的一半,传输时间为转速÷扇区数(记得要把单位统一)

寻道时间就是平均寻道时间

例:若转速为7200转/分,扇区数为500

则延迟时间=60÷7200×1000÷2≈8.33÷2ms

传输时间=8.33ms÷500

标签:DMA,中断,端口,输入输出,系统,查询,地址,CPU
From: https://www.cnblogs.com/Jinx8823/p/17357248.html

相关文章

  • 系统日志管理审核
    系统日志管理系统日志记录协议(syslog)旨在标准化网络设备用于与日志服务器通信的消息格式。网络上的路由器、交换机、防火墙和Unix/Linux服务器等许多设备都支持它,从而更轻松地管理这些设备生成的日志。系统日志监控和管理对于每个组织减少系统停机时间、提高网络性能和加强企业......
  • Ubuntu系统中查看USB摄像头信息(分辨率、设备节点、压缩格式等)(转)
    *下面将详细介绍在Ubuntu系统中USB摄像头涉及到的常见命令1:安装V4L2包:(v4l2:Videoforlinux2,为linux中关于视频设备的内核驱动。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video*下,如果只有一个视频设备,通常为/dev/video0。)sudoapt-getinstal......
  • Linux 系统导入MySQL的sql脚本
    1、使用mysql-uroot-p命令连接数据库 2、将数据库文件上传到/root目录下 3、使用use命令打开数据库 4、设置编码格式:setnamesutf8; 5、使用命令source/root/+文件名,屏幕上就会不断的滚,直到最后提示导入成功。 ......
  • Linux扩大虚拟机系统磁盘空间
    Linux扩大虚拟机系统磁盘空间一、基本步骤1.虚拟机保持关闭状态,设置->磁盘->拓展->最大磁盘大小 设成30G2.创建新分区3.格式化分区4.挂载分区(创建新分区后,需要挂载才能使用)5.解挂分区(解挂后,数据会保留,重新挂载,数据依旧存在)6.删除分区(删除后,数据不存在) 二、创建......
  • 《深入理解计算机系统》第五章学习笔记 优化程序性能
    编写高效程序需要做到以下几点:第一,我们必须选择一组适当的算法和结构。第二,我们必须编写出编译器能够有效优化以转换成高效可执行代码的源代码。C语言的有些特性,例如执行指针运算和强制类型转换的能力,使得编译器很难对它进行优化。第三,针对处理运算量特别大的计算,将一个任务分成多......
  • C# 获取系统DPI缩放比例以及分辨率大小
    一般方法System.Windows.Forms.Screen类//获取当前主屏幕分辨率intscreenWidth=Screen.PrimaryScreen.Bounds.Width;intscreenHeight=Screen.PrimaryScreen.Bounds.Height;//获取指定屏幕分辨率ScreensecondaryScreen=Screen.AllScreens[1];intsecondaryScree......
  • PGSQL系统表之 pg_class 记载表和几乎所有有字段或者是那些类似表的东西
     pg_classpg_class表记载表和几乎所有有字段或者是那些类似表的东西。包括索引(不过还要参阅pg_index)、序列、视图、物化视图、复合类型和一些特殊关系类型;参阅relkind。在下面,当指所有这些对象的时候说"关系"(relations)。不是所有字段对所有关系类型都有意义。表47-11......
  • P.22-认证配置详解、P.23-权限系统的作用、P.24-授权基本流程
    P.22-认证配置详解在SecurityConfig下进行修改@ConfigurationpublicclassSecurityConfigextendsWebSecurityConfigurerAdapter{//创建BCryptPasswordEncoder注入容器@BeanpublicPasswordEncoderpasswordEncoder(){returnnewBCryptPasswordEn......
  • 分布式编译系统的搭建
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:dan文章来源:GreatSQL社区原创由于MySQL源码编译单机耗费的时间过于长,最近MySQL变成8.0.27以后编译时间明显更耗时了,并且办公室内有多余的空闲......
  • 系统认知篇:防腐层、门面模式及适配模式的本质
    作者:京东科技倪新明门面模式和适配器模式是代码级的设计模式,而防腐层本质是一种防御型策略,在更高的层级对系统进行解耦1关于防腐层Anti-CorruptionLayer(ACL)如下:Implementafaçadeoradapterlayerbetweendifferentsubsystemsthatdon'tsharethesamesema......