IOthinking

本文分享了作者对I/O的一些深入理解,探讨了从IO系统、接口到DMA和通道技术的发展,强调了减少对CPU性能损耗的重要性。通过DMA的直接内存访问和预处理、后处理的概念,以及通道如何作为独立部件执行有限的IO指令,提高系统并行能力。文章还比较了DMA和中断方式,并讨论了不同类型的DMA控制器和接口连接方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I/O 的一些心得

为什么说是心得呢?因为一点点说是不可能说的,我也不是来copy做教学的,所以只能面向有基础的人咯

这些心得可能包含的主题:

首先,为什么人要研究IO的原因是,IO的性能逐渐开始成为计算机效率的瓶颈.

IO系统

系统是由软件和硬件组成的

这里要注意:

软件的主要任务不仅起到信息的交流还需要做好输入输出系统与主机工作的协调,做“”是关键.此外IO指令和通道指令之间似乎还有一层关系在于:存在通道的IO系统会将接收的IO指令转换成通道指令(可能更加复杂同时具有更多的位数,更大的信息量)

硬件的主要任务则是完成数据、控制信号的传送,和相应逻辑的实现.一定程度来说,硬件显然限制了系统整体的上限.

整体的IO的发展

大致的目标就是减少对CPU性能的损耗直至互不影响.在这一基础上从早期的串行工作到后来的DMA(Direct Memory Access),最后采用从属于CPU的特殊处理器通道来统一多个设备接口对总线的请求.最后甚至直接用IO处理机进行IO的管理与控制,其与CPU的并行性更高,这里是不涉及的.

IO接口

接口的定义是有趣的

两个系统或者两个部件之间的交接部分,即既可以是两种硬设备之间的连接电路,也可以是两个软件之间的共同逻辑边界.因此,核心在于像消防栓的水管一样咬在一起.

出于IO设备与CPU之间的物理以及软件指令上的巨大差异,需要一个逻辑简单且强大的接口.它能统一多个设备进行设备的选择(选择电路),转换控制命令(),更能对多种设备进行不同的物理信息的转换,缓冲CPU和IO设备之间数据处理的巨大速度差,以及监视设备的工作状态.因此接口是一个大的整体.

而类似的端口只是接口上的寄存器的统称而已,CPU对接口的信息读写很显然只能对这些寄存器端口进行操作.

因此,CPU和接口之间的信号通路和接口的寄存器以及电路功能对应起来就是:

CPU:

数据缓冲寄存器(data buffer register) --> 数据线

设备状态标记/寄存器 --> 状态线

命令寄存器和命令译码器 --> 命令线

设备选择电路 --> 地址线;

其中数据线,状态线,命令线都与地址线决定的设备相连

接口类型(分类依据)

​ 数据传送方式:串行接口,并行接口

​ 功能选择的灵活性:可编程接口,不可编程接口(高下立判吧)

​ 通用性:通用和专用(能够使用的IO设备种类不同)

​ 数据传送的控制方式:程序型(中断)和DMA(高速IO)

IO信息交换方式

跳过查询和中断

DMA(direct memory access):

目的:高速交换批量数据

首先很显然,根据它的名字就可以猜测:主存储器与IO设备直接进行数据交换,别碍着CPU的事.需要部分连续地址主存作为专用的缓冲器.但在其进行数据的传输前需要CPU对缓冲器和DMA控制器进行预处理和后处理.通过地址和数据量计数保证数据传送的完整性或者是这个过程的结束.

过程大概:外设发出DMA请求->CPU响应请求,DMA接管总线控制->DMA对内存寻址,计数传输数据 ->向CPU报告DMA操作结束

此过程中并未提及上文的预处理和后处理,由CPU上的管理程序负责,DMA只负责找到内存单元并正确写入.

DMA与主存交换方式
  1. 在DMA控制使用主存的时候使CPU不执行或者保持状态 : 浪费但控制简单
  2. 周期挪用:当DMA需要控制总线时占用一个或者多个CPU的周期,即让CPU暂停访存一个周期,然后继续执行程序:IO读写大于主存周期,即不存在连续占用的情况(DMA请求时,除了CPU正在使用主存以外,DMA的优先级高于CPU)
  3. DMA和CPU约定交替访存:不需要申请和归还使用权,控制权的转移速度快,DMA效率高,控制复杂
DMA方式

控制器基本组成:

  • AR(address register):计算字存储地址,自动加一
  • WC(word counter):记录长度
  • BR(buffer register):用于暂存每次传送的数据
  • DAR(device address register):害,没什么好说的吧
  • DMA控制状态逻辑(FSM?):管理DMA传送过程,修改相关信息和状态
  • 中断机构:字计数器溢出时触发中断
预处理和后处理

预处理:CPU通过IO指令给DMA控制器预置初值,取状态以及设置参数(与DMA控制状态联系):传送方向,设备地址与主存地址,字计数器.

后处理:校验送入主存的数据是否正确,是否继续使用DMA.

DMA接口与系统的连接方式

公用和独立:区别公用的请求汇聚成一条线,响应时依次查询,损失时间;独立的请求与响应都是一对一的关系,但是对CPU的占用更多,更复杂

DMA控制器的类型

选择型和多路型:一个是逻辑上只允许一个设备连接工作,一个是逻辑上可以多个设备同时工作.也即是由于

注意!!:上面两者一个是系统与接口的关系,一个是接口与设备的关系,都存在是否有“小总线”的两种方式,但是两组的“小总线”都是请求并,响应串的形式

DMA方式与中断方式的比较
中断方式DMA方式
数据传送程序硬件
响应时间指令执行结束存取周期结束
处理异常情况不能
中断请求用途传送数据溢出、后处理
优先级

之所以存在两者如此大的区别,本质上是其数据传输软件与硬件的区别.

通道

代替CPU管理控制外设的独立部件,能执行有限IO指令集合——通道命令的IO处理部件

一个主机可以连接多个通道,每个通道可以连接多台设备(不限速度,种类):提高了主机与通道操作的并行能力以及同层级之间的并行操作能力;同时提供了增减外围设备的灵活性;

采用通道方式组织输入输出的系统,通常是主机->通道->设备管理器->IO设备:CPU启动通道后,通道自动去内存取出通道指令并执行,知道结束后发出中断请求,进行通道结束处理工作

具体任务:

  1. 接受CPU的IO指令
  2. 从内存中选取属于该通道程序的通道指令,译码后向设备控制器和设备发送各种命令
  3. 组织数据传送,根据需要提供缓存,提供数据存入内存的地址和数据量
  4. 从外围设备得到设备的状态信息,并以此形成自身的状态信息(集合),根据要求将状态送至指定的内存单元供CPU使用
  5. 将外围设备的中断请求和通道本身的中断请求,按次序及时报告CPU

通道的发展:

IOP(processor):

​ 不是一台独立的计算机而是一个部件:和CPU并行工作,提供高速的DMA处理能力,实现数据的高速传送;

​ 有些IOP提供数据的变换、搜索、字装配分拆能力.

感想

我再看看,很复杂,我觉得还有一些各种IO之间的区别还有待好好斟酌一下

在机器人操作系统(ROS)中,机器视觉是机器人感知和理解周围环境的关键技术。robot_vision功能包专注于这一领域,集成了多种视觉处理技术,包括摄像头标定、OpenCV库应用、人脸识别、物体跟踪、二维码识别和物体识别,极大地拓展了ROS在视觉应用方面的能力。 摄像头标定:作为机器视觉的基础,摄像头标定用于消除镜头畸变并获取相机的内参和外参。在ROS中,camera_calibration包提供了友好的用户界面和算法,帮助计算相机参数矩阵,为后续的图像校正和三维重建提供支持。 OpenCV:OpenCV是一个广泛使用的开源计算机视觉库,在ROS中扮演着重要角色。robot_vision功能包可能包含OpenCV的示例代码和节点,涵盖图像处理、特征检测、模板匹配和图像分割等功能,这些功能对机器人视觉系统至关重要。 人脸识别:ROS中的人脸识别结合了图像处理和机器学习技术。robot_vision可能集成了基于OpenCV的人脸检测算法,如Haar级联分类器或Adaboost方法,甚至可能包含深度学习模型(如FaceNet或SSD),帮助机器人实现人脸的识别和跟踪,提升人机交互能力。 物体跟踪:物体跟踪使机器人能够持续关注并追踪特定目标。在ROS中,通常通过卡尔曼滤波器、粒子滤波器或光流法实现。robot_vision功能包可能包含这些算法的实现,助力机器人完成动态目标跟踪任务。 二维码识别:二维码是一种高效的信息编码方式,常用于机器人定位和导航。ROS中的二维码包可用于读取和解析二维码,而robot_vision可能进一步封装了这一功能,使其更易于集成到机器人系统中。 物体识别:作为机器视觉的高级应用,物体识别通常涉及深度学习模型,如YOLO、SSD或Faster R-CNN。robot_vision功能包可能包含预训练的模型和对应的ROS节点,使机器人能够识别环境中的特
内容概要:文章探讨了人们对人工智能(AI)的恐惧根源,指出尽管科技大佬们不断强调AI的好处,但大众仍对其存在广泛担忧。主要恐惧集中在AI可能引发的大规模失业、超越人类控制、以及对人类尊严和幸福感的剥夺等方面。文章还提到AI发展速度快于人类学习进步速度,可能导致部分工作岗位消失且不再创造大量低技术性岗位。此外,AI的自我学习与进化能力、数据隐私问题、权力集中趋势以及缺乏人类价值观和道德标准也加剧了人们的不安。最后,文章呼吁个人应正视这一趋势并学会利用AI技术,同时在宏观层面上加强AI的安全管控和伦理设计,以减少潜在风险。 适合人群:对人工智能发展及其社会影响感兴趣的读者,包括科技爱好者、政策制定者、企业管理者及普通民众。 使用场景及目标:①帮助读者理解当前社会对AI的普遍担忧及其背后原因;②为相关领域的从业者提供思考方向,如如何应对AI带来的职业挑战;③为政策制定者提供参考,以便更好地规划AI治理框架。 阅读建议:本文深入剖析了AI带来的多方面影响,建议读者结合自身背景和行业特点进行思考,尤其是关注AI对未来就业市场和社会结构的潜在改变。同时,考虑到文章涉及较多技术和社会学概念,建议读者在阅读过程中查阅相关资料,以便更全面地理解文中观点。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值