当前位置: 首页 > news >正文

计算机组成原理知识点汇总(四)输入输出系统

一、概述

发展分为四个阶段:

  • 早期阶段:CPU与外设分散连接,每一个外部设备都直接与CPU进行连接,没有统一的标准接口。
  • 接口与DMA阶段:系统采用总线结构,将CPU、内存和各种外设连接在一起。
  • 通道阶段:通道具有自己的指令系统和程序,可以根据CPU的要求,独立地执行输入输出操作。
  • 处围处理机阶段:外围处理机具有自己的内存、指令系统和操作系统,可以独立地完成输入输出设备的控制、数据处理和通信等任务。

题外话:什么是DMA?

想象你开了一家小超市,你既是老板,又是收银员,还是搬运工。有顾客来买东西付款,你得停下手里搬货的活,去收银台给顾客结账(处理数据),结完账又接着去搬货。CPU就像你这个“身兼数职”的老板,当外部设备(比如键盘、鼠标、硬盘等)要和内存交换数据时,CPU就得停下正在进行的计算任务,亲自来处理数据传输的事。这不仅让CPU忙得不可开交,还会导致计算任务的处理速度变慢。

后来,你觉得这样太累了,于是雇了一个专门的收银员。当有顾客来结账时,这个收银员就负责收钱找零,你就可以继续安心搬货。在计算机里,DMA就相当于这个专门的“收银员”。它是一种硬件机制,有自己独立的控制电路。当外部设备需要和内存交换数据时,DMA控制器会接管数据传输的工作,不需要CPU一直盯着。

二、I/O设备与主机联系方式

(1)编址方式

统一编址:

统一编址也称为存储器映射方式,它是将I/O端口和主存单元统一编址,即把I/O端口当作主存单元对待,从整个地址空间中划出一部分地址给I/O端口,对I/O端口的访问就如同对主存单元的访问一样。

  • 优点
    • 由于对I/O端口的访问和对主存单元的访问使用相同的指令,因此可以使用所有的内存访问指令来操作I/O端口,这使得对I/O设备的操作更加灵活和方便。例如,在进行数据传输时,可以直接使用MOV指令将数据从I/O端口传输到寄存器或主存中,也可以将数据从主存或寄存器传输到I/O端口。
    • 程序员无需专门的I/O指令,减少了对指令系统的依赖,降低了编程的难度。同时,也便于对I/O设备进行管理和控制。
  • 缺点
    • I/O端口占用了一部分主存地址空间,这会减少主存的可用地址范围,限制了主存的容量扩展。
    • 因为访问I/O端口和访问主存使用相同的指令,而主存的访问通常需要经过地址译码、数据读写等多个步骤,所以对I/O端口的访问速度可能会受到影响。

独立编址:

独立编址也称为I/O映射方式,它是将I/O端口和主存单元分开编址,即I/O端口有自己独立的地址空间,主存也有自己独立的地址空间。对I/O端口的访问需要使用专门的I/O指令。

  • 优点
    • I/O端口有独立的地址空间,不会影响主存的地址范围和容量扩展,主存可以使用全部的地址空间。
    • 专门的I/O指令通常比访问主存的指令执行速度快,因为I/O指令的操作对象是I/O端口,不需要进行复杂的主存地址译码等操作。
  • 缺点
    • I/O指令的种类相对较少,功能不如内存访问指令丰富,这在一定程度上限制了对I/O设备的操作灵活性。
    • 程序员需要专门学习和使用I/O指令,增加了编程的难度和复杂性。

(2)传送方式

并行和串行

(3)联络方式

异步和同步

(4)连接式

辐射式和总线式

三、I/O设备与主机信息传送控制方式

(1)程序查询方式

CPU不断地查询外部设备的状态,只有当外部设备准备好进行数据传输时,CPU才会进行数据的读写操作。

效率低。因为CPU需要不断地查询设备状态,在设备未准备好的时间里,CPU处于等待状态,不能进行其他有效的工作。而且,每次数据传输都需要CPU的干预,对于大量数据的传输,CPU的负担会很重,导致系统的整体效率低下。

(2)程序中断方式

外部设备在准备好进行数据传输时,会向CPU发出中断请求信号。CPU在接收到中断请求后,会暂停当前的程序,转去执行中断服务程序,完成数据的传输。

与程序查询方式相比,程序中断方式提高了CPU的利用率。因为CPU不需要不断地查询设备状态,在设备准备数据的过程中,CPU可以继续执行其他程序,只有在设备准备好时才会响应中断进行数据传输。但是,每次中断处理都需要进行现场保护和恢复等操作,会消耗一定的CPU时间,对于频繁的小数据量传输比较合适,对于大量数据的连续传输,效率仍然不够高。

(3)DMA方式

DMA方式是一种在外部设备和内存之间直接进行数据传输的方式,不需要CPU的干预。DMA控制器负责控制数据的传输,在数据传输过程中,CPU可以继续执行其他程序。

效率最高。它可以实现高速的数据传输,尤其是对于大量数据的传输,如硬盘和内存之间的数据交换。因为DMA控制器可以直接控制数据在内存和外部设备之间的传输,减少了CPU的干预,大大提高了数据传输的速度和系统的整体效率。

四、I/O接口

(1)采用原因

1. 数据缓冲功能

外部设备的数据传输速度和计算机主机的速度往往存在很大差异。例如,硬盘的读写速度相对CPU的处理速度要慢很多。I/O接口可以提供数据缓冲区,暂存数据。当主机要向外部设备输出数据时,先将数据送到接口的缓冲区,然后由外部设备慢慢读取;当外部设备向主机输入数据时,先将数据存入缓冲区,主机再根据需要从缓冲区读取,这样可以解决速度不匹配的问题,提高系统的效率。

2. 设备选择功能

在计算机系统中,通常会连接多个外部设备。I/O接口可以通过地址译码等方式,根据主机发出的设备地址信号,选择与之对应的外部设备进行数据传输,使得主机能够准确地与指定的外部设备进行通信。

3. 数据格式转换功能

不同的外部设备可能采用不同的数据格式。例如,有些设备采用串行数据传输方式,而计算机主机内部通常采用并行数据传输方式。I/O接口可以进行数据格式的转换,将串行数据转换为并行数据,或者将并行数据转换为串行数据,以实现主机和外部设备之间的数据传输。

4. 中断管理功能

在某些情况下,外部设备需要及时向主机报告一些事件,如设备完成数据传输、设备出现故障等。I/O接口可以产生中断请求信号,通知主机进行相应的处理。主机在接收到中断请求后,会暂停当前的工作,转去处理外部设备的请求,处理完成后再返回原来的工作继续执行。

五、DMA

(1)DMA与主存交换数据的方式

停止CPU访问主存

解释

在这种方式下,当DMA控制器访问主存时,CPU会被暂停,它不会再直接访问主存。DMA控制器在此期间负责完成数据的传输,直到它完成任务后,CPU再恢复对主存的访问。

类比

可以把它比作一个办公室中的电话会议。假设CPU就像是一个老板,它正在忙着处理一些事务,而DMA控制器就像秘书,它暂时接管了数据传输任务,直到它完成,CPU才会恢复继续工作。

周期挪用

解释

周期挪用是指DMA控制器在CPU的一些空闲周期中插入数据传输操作。也就是说,CPU仍然可以访问主存,但在它空闲时,DMA控制器会“偷走”一个或多个周期来完成数据传输。

类比

可以把它比作是一个忙碌的办公室员工(CPU),在等待回电的时候,临时把自己的桌面上的一部分工作交给另一个同事(DMA),但工作是间歇进行的。

DMA与CPU交替访问

解释

在这种方式下,DMA和CPU交替访问主存。两者轮流操作主存,DMA控制器在一段时间内负责数据传输,然后CPU获得访问权,继续执行其任务。这种方式允许DMA和CPU同时进行任务,虽然它们共享资源,但通过适当的调度避免冲突。

类比

可以把它比作两个司机轮流开车,每个人都按照轮班制度进行工作,确保车子一直在运行,但不会发生冲突。

(2)DMA接口的功能与工作流程

(1)功能

  • 数据传输:DMA控制器可以在主存和外部设备之间直接传输数据,减少了CPU的负担。它可以把数据从一个设备或存储区域直接传输到另一个,而不需要经过CPU的处理。
  • CPU负担减轻:DMA使得CPU可以在数据传输的过程中做其他计算任务,从而提高了系统的整体效率。DMA完成数据传输后,CPU只需处理少量的控制信息。
  • 支持多种传输模式
  • 中断控制:DMA传输完成后,会生成一个中断信号,通知CPU数据传输已完成,CPU可以接着处理后续任务。
  • 传输优先级:如果有多个DMA请求,DMA控制器可能会通过优先级控制来决定哪个设备先进行数据传输。

(2)工作流程

  1. 外设请求DMA传输:当外设需要传输数据时,它通过请求线向DMA控制器发出请求。
  2. DMA控制器分配资源:DMA控制器根据请求选择合适的源和目标地址,设置传输模式,并确保数据传输时不会发生冲突。
  3. 数据传输:DMA控制器将数据从外设读取并写入主存,或从主存写入外设。
  4. 中断通知:数据传输完成后,DMA控制器向CPU发送中断信号,告知数据已经成功传输。

(3)DMA传送过程

预处理:

CPU负责向DMA控制器发送传输命令,告知其需要进行的数据传输操作

数据传送:

当外设准备好数据传输时,它向DMA控制器发出传输请求。一旦DMA控制器收到请求,它将占用总线(主存和外设之间的通信通道),从而绕过CPU,直接将数据从外设读取到内存,或将数据从内存写入外设。

后处理:
传输完成后,DMA控制器通知CPU,通过中断信号告知数据传输已经结束,释放资源

(4)DMA与中断方式比较

相关文章:

  • 计算机是如何看待数据的?
  • 【C++详解】C++入门(一)命名空间、缺省参数、函数重载
  • dubbo SPI插件扩展点使用
  • Python变量全解析:从基础到高级的命名规则与数据类型指南
  • 一招破敌,掌控 React 渲染术:createRoot 与 root.render
  • 信创时代编程开发语言选择指南:国产替代背景下的技术路径与实践建议
  • Java学习手册:Filter 和 Listener
  • SSM--AOP 日志
  • 2025/4/20 实验作业 linux系统权限相关实验
  • 股票分析技术指标【MACD】
  • 集合框架(重点)
  • ThreadLocal - 原理与应用场景详解
  • 解决IDEA创建SpringBoot项目没有Java版本8
  • 冠珠瓷砖X2025佛山潭洲陶瓷展主题论坛·AI+未来专场精彩回顾
  • javase 学习
  • Linux驱动开发--异步通知与异步I/O
  • Linux——SSH
  • Transformer系列(二):自注意力机制框架
  • 算法篇之单调栈
  • 如何一键批量删除多个 Word 文档中的页眉和页脚
  • 石中英已任新成立的清华大学教育学院院长
  • 民生访谈|“AI推广是把学生教聪明还是教笨了?这个问题必须回答好”
  • 扫描类软件成泄密“推手”,网盘账号密码遭暴力破解
  • “科技+萌点”机器人马拉松刷屏!宇树回应“半马摔倒”
  • 一镇一链、一园一策,上海闵行发布重点产业区镇协同产业地图
  • 北京将严查大数据杀熟和强制搭售等五种网络销售违法行为