计算机组成原理--5.输入/输出(I/O)系统

这一章的核心在于解决高速的CPU/内存与低速的外部设备之间如何进行高效、协调的数据交换。

理论知识

为了帮你更好地掌握这一章,我为你整理了以下核心知识体系:

1. I/O系统的组成与基本概念

I/O系统由硬件软件两部分组成。

  • 硬件:包括I/O设备(键盘、磁盘等)、I/O接口(连接主机与外设的电路)、总线等。
  • 软件:包括I/O指令、驱动程序、中断处理程序等。

核心矛盾:主机(CPU+内存)工作速度快,外设工作速度慢,且外设种类繁多、格式各异。I/O系统的任务就是解决这些差异,实现协调工作。

2. I/O设备与主机的联系方式

这是理解I/O的基础,主要涉及编址、传送和联络方式。

I/O编址方式

CPU如何访问I/O设备中的寄存器(端口)?主要有两种方式:

编址方式 描述 优点 缺点
统一编址 (存储器映射I/O) 将I/O端口看作内存地址的一部分,使用访存指令(如LOAD/STORE)访问。 指令集简单,无需专用I/O指令,编程灵活。 占用内存地址空间,I/O操作速度可能受限。
不统一编址 (独立编址) I/O端口地址与内存地址独立,需使用专用I/O指令(如IN/OUT)。 不占用内存空间,I/O操作清晰。 需要专用指令,编程稍繁琐。
联络方式 (定时方式)

解决速度不匹配的问题:

  1. 立即响应:适用于极简单的设备(如开关),CPU发出指令外设立即执行。
  2. 同步传送:CPU与外设共用时钟,速度匹配。
  3. 异步传送(应答式):最常用。采用"请求-应答"握手信号(如READY/BUSY),允许外设按自己的速度工作。

3. I/O数据传送的控制方式 (核心考点)

这是本章的重中之重,描述了CPU如何控制数据传输,经历了从低效到高效的四个发展阶段:

(1) 程序查询方式 (Polling)
  • 原理:CPU不断轮询外设状态("你准备好了吗?"),直到外设就绪才传送数据。
  • 特点串行工作。CPU在查询和等待期间无法做其他事,效率极低("踏步等待")。
(2) 程序中断方式 (Interrupt)
  • 原理 :CPU启动外设后继续执行原程序。当外设准备好后,主动向CPU发送中断请求。CPU暂停当前程序,保存现场,转去执行中断服务程序处理数据,处理完后返回。
  • 特点并行工作(CPU与外设)。消除了"踏步等待",提高了CPU利用率。但每次传输数据(通常是一个字)都需要中断,频繁的中断处理(保存/恢复现场)会消耗CPU时间,适合少量数据传输。
(3) 直接存储器访问方式 (DMA)
  • 原理 :引入DMA控制器 。数据传输时,DMA向CPU申请总线控制权(周期挪用),接管总线,直接在内存和外设之间搬运数据块。仅在传输开始和结束时通过中断通知CPU。
  • 特点块传输。CPU仅在开始和结束时参与,中间数据搬运完全由DMA独立完成。适合高速、大批量数据传输(如磁盘读写)。
(4) 通道方式 (Channel)
  • 原理:通道是一个专门负责I/O的处理器(有自己的指令集)。CPU只需发出一条I/O指令启动通道,通道即可独立执行通道程序,管理多个设备与内存的数据交换。
  • 特点高度并行。实现了CPU、通道、外设三者的并行工作,进一步减轻了CPU负担,适用于大型机。

4. I/O接口

接口是主机和外设之间的"翻译官"和"缓冲器"。

  • 主要功能
    1. 数据缓冲:解决速度差异(设置数据缓冲寄存器)。
    2. 格式变换:如串行/并行转换。
    3. 电平转换:匹配TTL电平与外设电平。
    4. 状态反馈:提供"忙"、"就绪"等状态信息。
    5. 设备选择:通过译码电路选中特定设备。

5. 总结与对比

控制方式 CPU干预程度 数据传送单位 适用场景
程序查询 全程干预,串行 字/字节 简单、低速设备
中断驱动 传输过程干预 (每次) 字/字节 随机、少量数据
DMA 仅开始/结束干预 数据块 高速、大数据量 (磁盘)
通道 极少干预 (指令级) 成组数据 大型系统、多设备并发

希望这份汇总与习题能帮你理清的输入/输出(I/O)系统脉络!如果有关于具体协议或计算(如波特率)的问题,欢迎继续提问。

相关推荐
liuyao_xianhui1 小时前
Linux开发工具结尾 _make
linux·运维·服务器·数据结构·哈希算法·宽度优先·1024程序员节
tq10861 小时前
自觉决断与习得考古:自我意识觉醒的三阶模型
笔记
buhuizhiyuci1 小时前
熟练使用Linux编译工具(gcc, g++, make, makefile)
linux·运维·服务器
健康平安的活着1 小时前
使用tsf分析服务器的内存使用情况【经典版】
运维·服务器
YYYing.1 小时前
【C++项目之高并发内存池 (二)】整体框架设计与ThreadCache的初步实现
笔记·高并发·线程池·c/c++
愚昧之山绝望之谷开悟之坡1 小时前
hermes里面的skill和mcp大白话介绍
笔记
Flittly1 小时前
【SpringSecurity新手村系列】(5)RBAC角色权限与账户状态校验
java·spring boot·笔记·安全·spring·ai
草莓熊Lotso2 小时前
从 LLM 底层原理到 LangChain 全链路打通:大模型应用开发新征程
linux·运维·服务器·人工智能·langchain
zs宝来了2 小时前
网络篇11-本机网络IO工作原理
服务器·网络·tcp/ip