首页 > 其他分享 >[笔记]组成原理_输入/输出系统

[笔记]组成原理_输入/输出系统

时间:2023-07-16 22:23:45浏览次数:37  
标签:输出 传送 DMA 中断 笔记 指令 IO CPU 输入

I/O接口

I/O接口的功能

IO接口的主要功能有:

  1. 进行地址译码设备选择。(CPU送来选择外设的地址码后,接口必须对地址进行译码,以产生设备选择信息,使主机能和指定外设交换信息。)
  2. 实现主机和外设的通信联络控制。(解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间交换信息,以保证整个计算机系统能统一、协调地工作。)
  3. 实现数据缓冲。(CPU与外设之间的速度往往不匹配,为消除速度差异,接口必须设置数据缓冲寄存器用于数据的暂存,以避免因速度不一致而丢失数据。)
  4. 信号格式的转换。(外设与主机两者的电平数据格式都可能存在差异,接口应提供计算机与外设的信号格式的转换功能,如电平转换、并/串或串/并转换、模/数或数/模转换等。)
  5. 传送控制命令和状态信息。

(简单来说就是①选址功能②传送命令功能③传送数据功能④反应IO设备工作状态的功能。)

I/O接口的基本结构

关于IO接口的基本结构,会考到到几个基本的部件,比如数据缓冲寄存器状态/控制寄存器这些IO接口上的部件和它的相关功能。

IO接口在主机侧通过IO总线与内存、CPU相连。

通过数据总线,在数据缓冲寄存器与内存或CPU的寄存器之间进行数据传送,同时接口和设备的状态信息被记录在状态寄存器中。通过数据线将状态信息送到CPU。

CPU对外设的命令也通过数据线传送,一般将其送到IO接口的控制寄存器。状态寄存器和控制寄存器在传送方向上是相反的。

接口中的地址线:用于给出要访问的I/O接口中的寄存器的地址,它和读/写控制信号一起被送到IO接口的控制逻辑部件,通过控制线传送来的读写信号确认是读寄存器还是写寄存器。此外,控制线还会传送一些仲裁信号和握手信号。

I/O指令

对数据缓冲寄存器、状态/控制寄存器的访问操作是通过相应的指令来完成的,通常称这类指令为I/O指令,I/O指令只能在操作系统内核的底层I/O软件中使用,它是一种特权指令

(接口和端口是两个不同的概念,端口是指接口电路中可以进行读写的寄存器,若干端口加上相应的控制逻辑才可以组成接口。)

I/O接口的类型

按数据传送方式可分为:并行接口(一个字节或一个字的所有位同时传送)和串行接口(一位一位地传送),接口要完成数据格式的转换。

按主机访问IO设备的控制方式:可分为程序查询接口、中断接口和DMA接口等。

还有按功能选择的灵活性可分为可编程接口和不可编程接口等。

I/O端口及其编址

分为与存储器统一编址独立编址两种。

统一编址

优点:不需要专门的输入输出指令,可使CPU访问IO的操作更灵活,更方便,还可使端口有较大的编址空间。

缺点:端口占用存储器地址使内存容量变小,而且利用存储器编制的IO设备进行数据输入输出操作,执行速度较慢

独立编址

IO端口的地址空间与主存地址空间是两个独立的地址空间,因而无法从地址码的形式上区分,需要设置专门的IO指令来访问IO端口。

优点:输入输出指令与存储器指令有明显区别。程序编制清晰,便于理解。

缺点:输入输出指令少,一般只能对端口进行传送操作,尤其需要CPU提供存储器读/写、I/O设备读/写两组控制信号,增加了控制的复杂性

(在统一编址方式下,存储单元和IO设备是靠不同的地址码,而非地址线来区分的。在独立编址方式下,存储单元和IO设备是靠不同的指令来区分的。)

I/O方式

常用的IO方式有程序查询、程序中断、DMA和通道等,其中前两种方式更依赖于CPU中程序指令的执行。

1.程序查询方式

CPU啥都不干就像只舔狗一样守着IO端口一遍遍问“亲爱的你要发信息吗?”

在这种控制方式下,CPU一旦启动IO就必须停止现行程序的运行。

2.程序中断方式

(这一部分似乎跟OS的中断关系密切。大量内容都是OS相关的。)

中断请求标记触发器:为记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器,当其状态为1时表示中断源有请求,这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中段源中。

通过INTR线发出的是可屏蔽中断,通过NMI线发出的是不可屏蔽中断。

中断响应优先级

①不可屏蔽中断>内部中断>可屏蔽中断。

②DMA中断请求优先于IO设备传送的中断请求。

(中断优先级包括响应优先级和处理优先级,响应优先级是在硬件线路上是固定的,不便于改动,处理优先级可利用中断屏蔽技术动态调整,以实现多重中断。)

CPU响应中断的时间是在每条指令执行阶段的结束时刻。

中断响应过程

CPU响应中断后,经过某些操作转去执行中断服务程序。这些操作是由硬件直接实现的,将其称为中断隐指令,中断隐指令,并不是指令系统中一条真正的指令,只是一种虚拟的说法,本质上是硬件的一系列自动操作。它所完成的操作如下:

  • ①关中断
  • ②保存断点
  • ③引出中断服务程序

中断向量

啥是中断向量:每个中断都有一个唯一的类型号,每个中断类型号都对应一个中断服务程序,每个中断服务程序都有一个入口地址,CPU必须找到入口地址,即中断向量。

在中断向量的问题上,需要搞清楚几个容易错乱的概念:中断向量地址、中断向量、中断服务程序的入口

中断向量中断服务程序的入口地址,中断向量地址是内存中存放中断向量的地址,也就是说,中断向量地址是中断服务程序入口地址的地址(开始套娃)。

中断处理过程

  • ①关中断
  • ②保存断点
  • ③中断服务程序寻址
  • ④保存现场和屏蔽字

现场和断点这两类信息都不能被中断服务程序破坏,

现场信息,因为用指令可直接访问,所以在通常在中断服务程序中通过指令把它们保存到栈中,即由软件实现

而断点信息,则由CPU在中断响应时自动保存到栈或指定的寄存器中,即由硬件实现

  • ⑤开中断
  • ⑥执行中断服务程序
  • ⑦关中断
  • ⑧恢复现场和屏蔽字
  • ⑨开中断、中断和返回

其中①~③是由中断隐指令(硬件自动)完成,④~⑨由中断服务程序完成。

恢复现场是指在中断返回前,必须将寄存器的内容恢复到中断处理前的状态。这部分工作由中断服务程序完成,中断返回由中断服务程序的最后一条中断返回指令完成。(是中断返回指令,不是随随便便一条无条件跳转指令就行哒!)

中断处理优先级

屏蔽触发器:1表示屏蔽该中断源的请求,0表示可以正常申请。

3.DMA方式

Dma方式是一种完全由硬件进行成组信息传送的控制方式,它具有程序中断方式的优点,即在数据准备阶段,CPU与外设并行工作,DMA方式在外设与内存之间开辟一条直接数据通道,信息传送不再经过CPU,降低了CPU在传送数据时的开销,因此称为直接存储器存取方式。由于数据传送不再经过CPU,也就不需要保护恢复CPU现场等繁琐操作

在DMA传送过程中,DMA控制器将接管CPU的地址总线、数据总线和控制总线,CPU的主存控制信号被禁止使用,由此可见,DMA控制器必须具有控制系统总线的能力。

DMA的传送方式

主存和IO设备之间交换信息时不通过CPU,但当IO设备与CPU同时访问主存时可能发生冲突。为了有效地使用主存,DMA控制器与CPU通常采用以下三种方法使用主存:

1.停止CPU访存

2.周期挪用(或周期窃取):这个还要分成三种情况,当IO设备有DMA请求时,情况①:CPU没在访问主存,此时相安无事。②:CPU正在访存,此时必须待存取周期结束后,CPU再将总线占有权让出。③:CPU与IO设备同时请求访问主存,出现访存冲突,此时CPU要暂时放弃总线占有权,IO缓存优先级高于CPU缓存,因为IO不立即缓存就可能丢失数据,此时由IO设备挪用一个或几个存取周期,传送完一个数据后,立即释放总线,是一种单字传送方式。

3.DMA与CPU交替访存:将一个CPU周期分为C1、C2两个周期,一个专供CPU访存,一个专供DMA访存。这种方式不需要总线使用权的申请、建立和归还过程。

DMA的传送过程

1.预处理

2.数据传送:DMA的数据传输可以以单字节或字为基本单位,也可以以数据块为基本单位。数据传送阶段完全由DMA硬件控制,CPU不掺和。

3.后处理

1、3两个阶段是有CPU的参与的,数据传送阶段没有CPU的事。

DMA方式和中断方式的区别

  1. 中断方式是程序的切换,需要保护和恢复现场。而DMA方式不中断现行程序,无需保护现场。除了预处理和后处理,其他时候不占用任何CPU资源
  2. 对中断请求的响应只能发生在每条指令执行结束时(即执行周期后),而对DMA请求的响应可以发生在任意一个机器周期结束时(取址、间址、执行周期后均可)
  3. Dma请求的优先级高于中断请求。
  4. 中断方式具有处理异常事件的能力,而dma方式仅局限于大批数据的传送。
  5. 从数据传送来看,中断方式靠程序传送,dma方式靠硬件传送。

补充

在每条指令的执行过程中,每个总线周期要检查一次有无中断请求。(错误,每条指令周期结束后,CPU会统一扫描各个中断源,然后进行判优来决定响应哪个中断源,而不是在每条指令的执行过程中这样做。总线周期指的是像取址、间址这些操作的周期,进行这些操作时一条指令还没执行完呢,自然不能检查中断去了。)

检测有无DMA请求,一般安排在一条指令执行过程的末尾。(错误,CPU会在每个存储周期结束后检查是否有dma请求,而不是在指令执行过程的末尾这样做。)

中断响应由高到低的优先次序宜用:访管→程序性→重新启动。

在配有通道的计算机系统中,用户程序需要输入输出时,引起的中断是访管中断。

在中断响应周期中,CPU主要完成的工作是关中断、保护断点、发中断响应信号并形成向量地址。(也就是执行中断隐指令

设置中断屏蔽标志可以改变多个中断源的中断请求优先级(错误,注意分清中断响应次序和中断处理次序,中断响应次序由硬件排队电路决定)多个中断服务程序执行完的次序(正确)。

在CPU响应中断中,保护两个关键的硬件状态是:PC和PSW

在各种IO方式中,中断方式的特点是:CPU与外设并行工作,传送与主程序串行工作;DMA方式的特点是:CPU与外设并行工作,传送与主程序并行工作。

一个完整的DMA过程,部分由DMA控制器控制,部分由CPU控制。(注意表述,是完整的DMA过程,而不是单指数据传输的过程,预处理和后处理过程是需要CPU参与的。)

CPU响应DMA请求的条件是当前机器周期执行完。(DMA请求可不会等到指令周期执行完的时候才会被响应。)

在主机和外设的信息传送中,直接存储器存取(DMA)不是一种程序控制方式。(只有DMA方式是靠硬件电路实现的,三种基本的程序控制方式,即直接程序传送、程序中断、通道控制都需要程序的干预。)

 

标签:输出,传送,DMA,中断,笔记,指令,IO,CPU,输入
From: https://www.cnblogs.com/soaring27221/p/17558714.html

相关文章

  • 学校招生报名小程序开发笔记(一)
    背景这是一个以报名为核心的职业学校招生小程序,目的是方便想要系统学习技能,入门某项技能或者领域的初高中毕业生,了解该学校的基本情况及各个专业,并提供报名路径,致力于技能型人才培养功能规划主要功能包括专业介绍,专业选择,资料填报,查看审核结果,学校概况,招生指南,入学须知,就业升学,多彩......
  • ASP.NET Core学习笔记
    ASP.NETCore教程:https://www.bilibili.com/video/BV1Kk4y117Xy/?p=2&spm_id_from=pageDriver&vd_source=34dc5215532143d76607ef8957c72691的笔记ASP.NETCore启动流程ASP.NETCoreWeb应用程序最初作为控制台应用程序启动,Main()方法是应用程序的入口点。因此,当我们执行AS......
  • JUC笔记
    JUC并发编程狂神说:https://space.bilibili.com/952564491.什么是JUCJUC就是java.util.concurrent下面的类包,专门用于多线程的开发。源码+官方文档面试高频问!java.util工具包业务:无法通过普通的线程代码Thread实现。Runnable没有返回值、效率相比于Callable相对较......
  • vue.js 只能输入大写字母
    如何实现Vue.js只能输入大写字母本文将向刚入行的开发者介绍如何使用Vue.js实现只允许输入大写字母的输入框效果。我们将使用Vue.js的指令和事件处理来达到这个目标。实现流程下面是实现该功能的步骤,我们将逐一介绍每个步骤的实现细节。步骤描述1.创建Vue......
  • vue+axios实现输入框多条件搜索功能
    Vue+Axios实现输入框多条件搜索功能在现代的Web开发中,搜索功能是一个非常重要的特性。用户们希望能够根据自己的需求输入多个条件来筛选出所需要的数据。Vue.js是一个流行的JavaScript框架,可以轻松地实现这样的功能。而Axios是一个基于Promise的HTTP库,可以方便地与后端进行数据......
  • 莫比乌斯反演学习笔记
    莫比乌斯反演数论函数数论函数是指定义域为正整数的一类函数。基本的数论函数恒等函数\(I(n)=1\)元函数\(e(n)=[n=1]\)单位函数\(id(n)=n\)莫比乌斯函数$$\mu(n)=\begin{cases}0,&n的约数中包含大于1的完全平方数\(-1)^k,&k为x含有的质因子种类数\end{cases}$$欧......
  • 服务器笔记之nginx安装SSL证书
    服务器笔记之安装SSL证书参考腾讯云服务器官方文档进行配置SSL证书Nginx服务器SSL证书安装部署-证书安装-文档中心-腾讯云(tencent.com)【一】前提条件已经注册并备案过的域名已获取证书【二】下载证书SSL证书Nginx服务器SSL证书安装部署-证书安装-文......
  • 服务器笔记之安装Alist
    服务器笔记之安装Alist【一】docker安装我使用的是docker命令安装dockerrun-d--restart=always-v/etc/alist:/opt/alist/data-p5244:5244-ePUID=0-ePGID=0-eUMASK=022--name="alist"xhofe/alist:latest通过命令查看容器dockerpsCONTAINERIDIMAGE......
  • [学习笔记] 2-SAT
    一、2-SAT2-SAT问题是给定\(n\)个变量\(x_1,x_2,\dots,x_n\),取值只有\(0\)或\(1\),然后这些变量要满足一些条件,比如:如果\(x_1=1\)那么\(x_2=0\)之类的。然后我们要解决的问题就是判定是否存在一组\((x_1,x_2,\dots,x_n)\)满足条件,如果存在输出方案。考虑......
  • 数据结构练习笔记——创建有序单链表
    创建有序单链表【问题描述】为从键盘终端输入的m个整数创建带头结点的有序单链表存储结构,使输入的数据元素在单链表中按照元素值递增有序。【输入形式】第一行:单链表中元素个数m第二行:单链表中的m个整数【输出形式】按递增有序形式输出m个整数【样例输入】513245【......