输入输出设备

news/2024/11/20 9:18:29/

文章目录

    • 接口和设备:经典的适配器模式
    • CPU是如何控制IO设备的
    • 信号和地址:发挥总线的价值
        • 内存映射IO(MMIO)
        • 端口映射IO(Port-Mapped IO)
        • Command模式
    • 总结

接口和设备:经典的适配器模式

大部分的输入和输出设备都有两个组成部分:第一个是接口,第二个是实际的IO设备。

我们的硬件设备并不是直接接入到总线上和CPU通信的,而是通过接口,用接口连接到总线上,再通过总线和CPU通信。

CPU是如何控制IO设备的

在这里插入图片描述
以打印机为例,分析CPU如何控制IO设备

  • 数据寄存器(Data Register):CPU向IO设备写入需要传输的数据,比如要打印”wangkai“,我们先要发送一个”w“给到对应的IO设备
  • 命令寄存器(Command Register ): CPU发送一个命令,告诉打印机,要进行打印工作,打印机里的控制电路会做两件事情
    • 设置我们状态寄存器里的状态,设置为not-ready。
    • 实际操作打印机进行打印。
  • 状态寄存器(Status Register):not-ready告诉CPU,设备已经在工作了,CPU再发送命令来是没有用的。ready状态告诉CPU可以发送下一个字符和命令

实际情况下,打印机里还有数据缓冲区,CPU也不是一个字符一个字符交给打印机去打印的,而是一次性将文档传输到打印机的内存或者数据缓冲区里一起打印。

信号和地址:发挥总线的价值

CPU和IO设备的通信,一样是通过CPU支持的机器指令来执行的。

内存映射IO(MMIO)

为了能让CPU尽可能的简单,计算机把IO设备的各个寄存器、以及IO设备内部的内存地址,都映射到主内存地址空间来。

主内存的地址空间,会给不同的IO设备预留一段一段的内存地址。

CPU要和这些IO设备进行通信的时候,就往这些地址发送数据。

IO设备会监控地址线,在CPU往自己地址发送数据的时候,把对应的数据先里面传输过来的数据,接入到对应的设备里面的寄存器和内存里面来。

CPU无论是向IO设备发送命令、查询状态、传输数据都是以这样的方式,这种方式叫做内存映射IO(Memory-Mapped I/O,简称 MMIO)
在这里插入图片描述

端口映射IO(Port-Mapped IO)

Intel x86架构的计算机可以设计专门和IO设备通信的指令,in和out指令

Intel 的CPU虽然支持MMIO,它还可以通过特定的指令来支持端口映射IO(Port-Mapped I/O,简称 PMIO)或者也可以叫独立输入输出(Isolated I/O)

PMIO访问的设备地址是一个专门的端口,并不是在内存地址空间里的,这个端口并不是一个硬件上的插口,而是和CPU通信的一个抽象概念。

Command模式

  • 无论是PMIO还是MMIO,CPU都会传送一条二进制的数据,给到IO设备对应的地址。
  • 设备自己本身的接口电路,再去解码这数据。
  • 解码之后的数据,会变成设备支持的一条指令,再去通过控制电路去操作实际的硬件设备。
  • 对于CPU来说,他不需要关心设备本身能支持哪些操作,只是在总线上传输一条条数据就好了。

在总线上传输的是一个个数据对象,接收这些对应的设备,根据具体的对象内存,进行实际的解码和命令执行。

总结

CPU并不是发送一个特定的操作指令来操作不同的IO设备。解决CPU和IO设备之间的通信方式如下:

IO设备方向

  • IO设备被拆分为能和CPU通信的接口电路、实际的IO设备本身。
  • 接口电路里有状态寄存器、命令寄存器、数据寄存器、数据缓冲区、设备内存等。
  • 接口电路通过总线和CPU通信,接收来自CPU的指令和数据。
  • 接口电路中的控制电路,再解码收到的指令,实际去操作对应的硬件设备。

CPU方向

  • 对于CPU来说,看到的不是特定的设备,而是一个个内存地址或者端口地址。
  • CPU只是向这些地址传输数据或者读取数据
  • 需要的指令和操作内存地址的指令本质上没有什么差别。
  • 通过软件层面对于传输的命令数据的定义,而不是提供特殊的新的指令,来实际操作对应的IO硬件。

http://www.ppmy.cn/news/473153.html

相关文章

输入/输出(全称:Input Output)

IO(输入/输出)是比较抽象的,看不到明显的运行效果,但输入和输出是所有程序都必需的部分。 使用输入机制,允许程序读取外部数据(包括来自磁盘、光盘等存储设备的数据、来自网络的数据)、 用户输入…

音|视频输入、解码、输出的流程

音频输入、解码、输出的流程 Audio AD Receiver接收来自外部AD的串行数据,根据配置信息,把串行数据转换为并行数据,存放在我们应用创建的FIFO中(ADC FIFO) 或者把从Audio Play过来的数据存到ADC FIFO中。 数据的来源也…

基于avd7181c解决视频输入效果差的问题三---CVBS无色彩疑难调试手记

基于avd7181c解决视频输入效果差的问题<三>---CVBS无色彩疑难调试手记 笔者在前两篇文章中讲述了基于AVD7181C来解决平台视频输入效果差的问题大概解决方案以及遇到的IIC兼容性问题的解决方法&#xff0c;在本文中将继续解释笔者在调试AVD7181C CVBS输入信号的情况下遇到…

播放视频无声音,视频编码来解决

艾瑞巴蒂大家好&#xff0c;我二狗子又来啦&#xff01;这段时间关于疫情的好消息不断&#xff0c;各个地区的疫情都得到了有效的控制&#xff0c;做到了新增病例个位数增长甚至连续多天零增长&#xff01;这不&#xff0c;二狗子也终于可以出村回到大城市上班啦&#xff01;由…

基于HDMI的视频流输入输出实验

本实验基于ECE-CV K7-75T FPGA开发板实现。 软件使用Vivado 2018.1。 欢迎添加QQ:2639406604一起交流 原文链接: 基于HDMI的视频流输入输出实验 基于HDMI的视频流输入输出实验 1 HDMI概述 HDMI高清多媒体界面(英语:High Definition Multimedia Interface)是一种全数字…

MP4视频播放问题(有声音无图像)分析与解决——FFmpeg视频处理教程

项目开发中&#xff0c;测试人员反应存在部分视频无法正常播放&#xff0c;赶紧去查看什么原因&#xff1a;发现有些视频只有声音没有影像&#xff0c;但是这些视频下载到本地是可以正常播放的&#xff0c;此时脑海中就大概知道了什么问题&#xff1a;应该是视频本身编码的问题…

输入 输出(一)

目录 前言 一、输入 输出 二、依据 1.格式声明 2.基本的格式字符 3.附加的格式说明符 ①输出的附加格式说明符 ②输入的附加格式说明 三、printf输出语句 ①“格式控制”是用双引号括起来的一个字符串&#xff0c;称为格式控制字符串&#xff0c;简称格式字符串。包括…

输入输出.

什么是输入输出 计算机归根结底是为人类服务的&#xff0c;这就要求计算机必须提供某种机制使得人可以向计算机发出命令或操纵计算机。也就说计算机与人之间必须存在某种沟通的机制。 这种沟通的机制就是计算机的输入输出机制。 输入提供的是一个“人→计算机”的通道。即人或…