首页 > 其他分享 >IO介绍-中

IO介绍-中

时间:2024-12-11 14:20:25浏览次数:6  
标签:控制器 介绍 cpu IO 设备 CPU 通道

系统接口

块设备接口

  1. 块设备:数据的存取和传输都是以数据块为单位的设备。典型的块设备是磁盘。该设备的基本特征是传输速率高,另一特征是可寻址,即能指定数据的输入源地址及输出的目标地址,可随机读写。磁盘设备通常采用DMA方式。
  2. 隐藏了磁盘的二维结构
  3. 将抽象命令映射为低层操作:块设备支持上层发来的对文件或设备的打开、读写、关闭等抽象命令。该接口会将上述的接口转换成实际的需要的更为复杂的命令

流设备接口

流设备接口实际上也是字符设备接口,它反应了大部分字符设备的本质特征,用于控制字符设备的输入或输出。
  1. 字符设备:数据存取都是以字符为单位,如键盘、打印机等。字符设备基本的特征是传输速度慢,通常每秒几个字节到几千个字节。还有一个特征是不可寻址,不能只能数据的输入源和输出的目标地址。字符设备在输入/输出时采用中断驱动方式
  2. get和put操作:由于字符是不可寻址的,因而对它只能采用顺序存取的方式。通常是为每一个字符设备建立一个字符缓冲区(队列),设备的IO字符流顺序地进入队列,或者是从队列中取走一个字符。get是从缓冲区立刻获取一个字符,pu是把一个新的字符写入缓冲区,等待送到设备
  3. in-control :因为字符设备类型太多,为了统一管理他们,通常在流设备接口中提供一种通用的in-control指令,在该指令中包含了许多参数,每一个参数表示一个鱼具体设备相关的特定功能。大多数字符设备是独占设备,必须采取互斥方式实现共享。因为,设备提供了打开和关闭的操作。在使用这类设备时,必须先打开设备,才能使用。如果已被打开,表示其他进程正在使用该设备。

网络通信接口

网卡

 

设备与控制器之间的接口

一般情况下,设备不是直接和cpu进行连接的,硬件设备是和设备控制器连接的。因此,IO设备中应该包含与设备控制器之间的接口。在该接口中,有三种类型的信号:
  1. 数据信号线:比如输入设备中,由外界输入的信号经过转换器转换后,所形成的数据通常是先进入缓冲器中,当数据量达到一定量后,再从缓冲器通过一组数据信号线传送给设备控制器;对于输出设备而言,是先从设备控制器经过数据线传来的一批缓冲器中,经过适当的转换后,再逐个字符输出
  2. 控制信号线:是由设备控制器向设备发送控制信号的通路。该信号规定了设备要执行的操作,如读操作或写操作或者是移动磁头的操作
  3. 状态信号线:用来传送设备的当前状态的信号。设备当前的状态有:在读、在写、已读、已写、并准好新的数据传送

设备控制器

一个设备控制器可以控制多个设备,它是一个可编址的设备。连接一个设备的话,就只有一个设备地址,连接多个的话,就有多个设备地址。每一个设备地址对应一个设备。 设备控制器可分为两种类型:
  1. 控制字符设备的控制器
  2. 控制块设备的控制器

设备控制器基本功能

  1. 接受和识别命令:在控制器中有对应的控制寄存器,用户存放接收到的命令和参数,并对所接收的命令进行译码。
  2. 数据交换:它能接受cpu传来的数据,同时还要接收设备传来的数据。所以,它必须设置对应的数据寄存器
  3. 标识和报告设备状态:它有对应的状态寄存器,用其中的每一位表示设备的某一种状态。当cpu需要知道当前设备的状态,直接从控制器就返回了
  4. 地址识别:设备控制器必须能识别每个设备的地址,还有对应寄存器中对应的唯一的地址
  5. 数据缓冲区:由于IO设备速度较低,而CPU和内存的速度很高,所以在控制器中必须设置一个缓冲区。设备到内存时,可以累积一批数据后,再将缓冲区的数据高速传递给内存;内存到设备时,先是多次将数据存入缓冲区中,再一次性送到设备。
  6. 差错控制:如果出现错误,会将错误向cpu报告,于是cpu会将本次传输的数据丢掉,再进行重新一次的传输。

设备控制器的组成

设备控制器是工作在硬件设备和cpu之间的,所以有以下三部分组成:
  1. 设备控制器和cpu的接口:用于实现设备控制器和cpu的交互。所以该接口中三类信号线:
    1. 数据线:通常和两类寄存器连接,一种是数据寄存器,这种寄存器有一个或者多个,用于存输入或者输出的数据;另一种是控制/状态寄存器,用来存放cpu发送的指令或者是设备状态;
    2. 地址线
    3. 控制线
  2. 设备控制器与设备的接口:一个设备控制器可以控制多个设备。每个接口中都有数据、控制和状态三种类型的信号。控制器中IO逻辑根据发来的地址选择一个设备口。
  3. IO逻辑:它实现对设备的控制。它是通过一组控制线与CPU交互,CPU利用该逻辑向控制器发送IO命令。每当CPU要启动一个设备时,一方面将启动命令发送给控制器,另一方面同时通过地址线把地址发送给控制器,由控制器的IO逻辑对收到的地址进行译码,再根据翻译后的命令对设备进行控制。

内存映像IO

驱动程序将抽象的IO命令转换成一些列的具体的命令、参数等数据载入设备控制器相应的寄存器中,有控制器来执行这些命令,具体实施对IO设备的控制。有一下两种方法来完成:
  1. 利用特定的IO指令: 固定的命令:如 io-store cpu-reg,dev-no,dev-reg cpu-reg :cpu某一个寄存器 dev-no: 指定的设备 dev-reg : 指定控制器里面的寄存器 这种方式的缺点:访问内存和访问设备需要两种不同的指令
  2. 内存映像IO: 这种方式在编址和前面不同,它不区分是cpu寄存器,还是存储设备或者是寄存器地址,统一使用K值。当k在0~n-1时,表示内存地址;大于等于n时,表示第0个设备控制器的第一个寄存器地址。通过确定是n的多少倍,确定是第几个设备控制器,通过余数确定是寄存器的地址。所以,在编致上面简化了很多。 例如:sore cpu-reg,n

IO通道

有了设备控制器以后,CPU已经和设备之间简化了交互,想要获取或者写入数据的时候,通过指令集就可以完成了。并且,一个设备控制器可以控制多个设备。但是,当一个机器要控制非常多的设备的时候,CPU要和这么多的设备和设备控制器交互,显得有点笨重。CPU要花很多的时间消耗在控制设备控制器的上面。 引入通道,就是为了让一些原来由CPU处理的IO任务,现在交给通过来承担。从而把CPU从繁杂的IO任务中解脱出来。在设置了通道后,CPU只需要向通道发送一个IO指令。通过接到指令后,就从内存中取出要执行的通道程序,然后执行通道程序。仅当通道完成了规定的IO任务后,才向CPU发送中断信号。 通道就是一个简单版的CPU,只是这个CPU执行的指令简单,并且通道是没有自己的内存的,它执行的通道程序还是放在内存中的。通道和CPU共享内存的。  

通道类型

因为外围的设备不同,有流设备,有块设备,他们的传输速度不一样, 所以对应的通道类型也有不同。目前三种类型的通道:
  1. 字节多路通道:一个主通道连接几个到几百个数量不等的子通道。按照字节交叉式工作的通道。多个子通道连接一个主通道,当一个子通道完成数据交换以后,换成第二个子通道和主通道连接,进行交换数据。
  2. 数组选择通道:字节多路通道不适合连接高速的设备,数据读取消耗的时候还没有切换子通道的耗时多,所以有了数组选择通道。一个通过可以连接多个高速设备,但是,这个通道在一段时间内只能执行一道通道程序,控制一台设备进行数据传送。当一个设备占用了该通道以后,它就一直占着,即使它没有数据传输也会占着,直到该设备的数据传输完毕以后才会释放该通道。所以,这种通道的利用率很低。
  3. 数组多路通道:它有字节多路通道的多路,有数组选择通道的传输速率。所以,这种方式使用率最高。

通道中的瓶颈问题

一个通多可以连接多个设备控制器,一个设备控制又能控制多个设备,但是这种都是单向一对多映射。如果要同时获取一个通道下管理的设备的时候,由于都使用了同一个通道,所以不能同时满足。就是因为设备和内存之间的通路太少了。 于是就可以通过增加通路来解决前面的问题,一个通道可以控制多个设备控制器,一个设备控制器又可以控制多个设备,那么,反过来就是一个设备可以被多个设备控制器控制,一个设备控制器可以控制被多个通道控制,这样就实现了网结构。    

标签:控制器,介绍,cpu,IO,设备,CPU,通道
From: https://www.cnblogs.com/euler-blog/p/18599396

相关文章

  • 在SAP Fiori界面上的ME53N事务
    在SAPFiori界面上的ME53N事务  在SAPFiori界面上的采购申请显示界面(事务代码ME53N),基本跟在SAPGUI上显示界面相同。 MaterialData选项卡,    Quantities/Dates选项卡,  Valuation选项卡,   SourceofSupply选项卡,    Status选项卡, ......
  • [Serverless] Azure Functions 使用介绍
    关于产品AzureServerless(无服务器)https://azure.microsoft.com/zh-cn/solutions/serverless/AzureFunctions(函数应用)https://azure.microsoft.com/zh-cn/products/functions/操作步骤 1.创建NewFunctionApp项目关于AzureFunctions托管选项https://learn.mic......
  • #渗透测试#红队攻防 kioptix level 2靶机getshell及提权
    声明!文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!目录标题一、准备阶段1.找出ip端口和服务信息扫出ip扫出端口端口对应服务信息2.目录扫描3.漏洞扫描nmap扫描漏洞searchsploit查找漏洞二、获取权限1.访......
  • Sigrity Power DC Package Multi-Resistor Compact ET Model Extraction模式提取封装
    SigrityPowerDCPackageMulti-ResistorCompactETModelExtraction模式提取封装基板电热阻模型SigrityPowerDCPackageMulti-ResistorCompactETModelExtraction模式是用于提取封装基板电热阻模型的,用于使用了这个封装基板的PCB和PKG的联合电仿真和联合热仿真,下面......
  • Introduction to the Explicit Finite Element Method for Nonlinear Transient Dynam
    第一部分基础知识20第1章引言201.1模拟时代与计算机辅助工程201.1.1模拟的世界201.1.2显式有限元方法的发展211.1.3计算机辅助工程CAE——机遇和挑战221.2预备知识231.2.1符号231.2.2弹性本构关系25第2章非线性瞬态动力学显式有限......
  • c++ 样式错误 “Unknown property transition” /“Could not parse stylesheet of o
    解决办法通过遍历所有的控件,“Unknownpropertytransition打印出所有的控件地址,将地址GPS2>&1log.log输出到log日志中“Couldnotparsestylesheetofobject0xb88164f8”关键函数QStringgetWidgetHierarchy(QObject*widget)获得所有的控件#include<QA......
  • 论文解读-Graph neural networks: A review of methods and applications
     论文介绍这篇论文是图神经网络领域的综述性质的文章,从各个论文里面凝聚和提取了很多精炼的信息和观点,值得一读。论文是2020年成稿投出去的,有点陈旧的。 GNN的介绍在introduction里面对比了GNN和CNN,表示出CNN的关键是局部连接,共享权重,和多层的使用。其中CNN操作的是常规......
  • 源码分析之Openlayers中的控件篇Control基类介绍
    概述Openlayers中内置了9类控件,这9类控件都是基于Control类,而Control类则是继承于BaseObject类,如下图所示:如上,这9类控件分别是:Attribution:属性控件FullScreen:全屏控件MousePosition:鼠标位置控件OverviewMap:鹰眼控件Rotate:旋转控件ScaleLine:比例尺控件Zoom:缩放控件,可......
  • springboot和spring对应版本的介绍
    SpringBoot、Spring、JDK版本对应关系:SpringBoot版本对应Spring版本JDK版本SpringBoot特性描述3.2.x6.1.x17,21增强的云本地支持,新的架构优化,支持Java213.1.x6.0.x17,20加入新的架构组件,性能优化增强,支持Java203.0.x6.0.x17+支持Java17,移......
  • .NET MAUI开发的安卓、iOS软件和Java开发的安卓和Swift开发的iOS的区别
    1. 开发语言和平台.NETMAUI:使用 C# 作为开发语言。通过 .NET6/7/8 平台编译并打包应用。.NETMAUI 会根据目标平台(Android或iOS)编译和运行不同的本地代码。代码是跨平台的,开发者可以使用相同的代码库为Android和iOS构建应用,只需要针对平台特定功能进行少量调......