深入浅出计算机组成原理
徐文浩
bothub 创始人
70433 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
深入浅出计算机组成原理
15
15
1.0x
00:00/00:00
登录|注册

43 | 输入输出设备:我们并不是只能用灯泡显示“0”和“1”

CPU和I/O设备通信的解决方式
CPU指令和I/O设备的关系
总线的价值
内存映射IO
CPU和I/O设备的通信方式
CPU操作I/O设备的方式
寄存器的作用
分离接口和实际设备
接口的作用
接口和实际的I/O设备
计算机的交互操作
计算机的核心是做“计算”
课后思考
推荐阅读
总结延伸
信号和地址
CPU控制I/O设备
接口和设备
计算机的发展
输入输出设备

该思维导图由 AI 生成,仅供参考

我们在前面的章节搭建了最简单的电路,在这里面,计算机的输入设备就是一个一个开关,输出设备呢,是一个一个灯泡。的确,早期发展的时候,计算机的核心是做“计算”。我们从“计算机”这个名字上也能看出这一点。不管是中文名字“计算机”,还是英文名字“Computer”,核心都是在”计算“这两个字上。不过,到了今天,这些“计算”的工作,更多的是一个幕后工作。
我们无论是使用自己的 PC,还是智能手机,大部分时间都是在和计算机进行各种“交互操作”。换句话说,就是在和输入输出设备打交道。这些输入输出设备也不再是一个一个开关,或者一个一个灯泡。你在键盘上直接敲击的都是字符,而不是“0”和“1”,你在显示器上看到的,也是直接的图形或者文字的画面,而不是一个一个闪亮或者关闭的灯泡。想要了解这其中的关窍,那就请你和我一起来看一看,计算机里面的输入输出设备。

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

我们在前面讲解计算机的五大组成部分的时候,我看到这样几个留言。
一个同学问,像蓝牙、WiFi 无线网卡这样的设备也是输入输出设备吗?还有一个同学问,我们的输入输出设备的寄存器在哪里?到底是在主板上,还是在硬件设备上?
这两个问题问得很好。其实你只要理解了这两个问题,也就理解输入输出设备是怎么回事儿了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

计算机的输入输出设备已经不再是简单的开关和灯泡,而是包含接口和实际I/O设备两部分。接口是连接硬件设备和CPU的关键,它们内置在主板上或集成在设备上。通过接口,CPU能够控制实际的硬件设备,包括数据传输、发送命令和监控设备状态。这种分离的设计使得硬件设备可以独立升级,同时也促进了PC时代的繁荣。在软件设计模式中,面向接口编程和适配器设计模式也体现了类似的思路。总的来说,计算机的软件和硬件在逻辑抽象上是相通的。通过了解CPU如何控制I/O设备,读者可以更好地理解计算机的输入输出设备。 在CPU和I/O设备的通信中,采用了内存映射IO(MMIO)和端口映射I/O(PMIO)两种方式。MMIO通过内存地址空间来访问设备,而PMIO则通过专门的端口进行通信。无论采用哪种方式,CPU都会传送二进制数据给I/O设备的对应地址,而设备的接口电路则负责解码数据并执行相应操作。这种通信方式类似于设计模式中的Command模式,通过传输数据对象来实现命令执行。 总的来说,CPU并不是发送特定的操作指令来操作不同的I/O设备,而是通过内存地址或端口地址来传输数据或读取数据。这种设计使得CPU不需要扩展指令集,而是通过软件层面对传输的命令数据进行定义,从而实现对I/O硬件的操作。 想要深入了解CPU和I/O设备交互的技术细节,可以观看北京大学在Coursera上的视频课程《计算机组成》。这个课程中文免费观看,对于深入理解输入输出设备会很有帮助。 通过本文的内容,读者可以更好地理解CPU和I/O设备之间的通信方式,以及了解计算机输入输出设备的工作原理。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出计算机组成原理》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(18)

  • 最新
  • 精选
  • 程序员花卷
    CPU只认插在电脑USB接口上的蓝牙接收器,而蓝牙接收器的和蓝牙鼠标之间是如何传输信息的,这我觉得又是另一个层面的知识!,但是对于我们的CPU来说,当蓝牙接收器接收到鼠标的命令的时候,将这个命令通过I/O接口和总线发送给CPU,CPU最后做出相应的回应,来控制对应的I/O设备,这里涉及到I/O接口的一个功能,那就是数据的转换!这也就是为什么很多不同的设别的发出的指令CPU都能够处理的原因!

    作者回复: 👍

    2019-12-25
    18
  • 焰火
    上一讲的北桥IO芯片就是用来MMIO的,和ARM架构下的存储空间地址很类似。

    作者回复: 👍

    2019-09-23
    15
  • rookiegan
    以蓝牙鼠标接收器是USB接口为例。 对于CPU来说,这只是总线上的一个普通的USB设备,与其他的U盘、USB网卡之类的USB接口设备没什么区别,这些设备只是通过USB协议讲自己的数据发送给操作系统,对于这些数据是什么,USB是不管的,USB蓝牙鼠标接收器和普通USB的鼠标在这一层的数据是一样的。 对于操作系统来说,要使这些USB设备工作,就需要对发来的数据进行处理,处理数据的就是驱动程序,所以不同种类的USB设备需要不同的驱动程序。 回过头来再看USB蓝牙鼠标接收器,鼠标产生的事件通过 蓝牙发送->蓝牙接受-> USB发送-> USB接受->驱动程序 这样的路径最终到达操作系统,这里面的蓝牙和USB仅仅只是传输数据的方式而已,换为其他的什么TCP/ IP传输也是一样的,其本质是将特定的数据传输给操作系统处理。
    2019-08-05
    5
    75
  • 有米
    看了这一讲终于明白网络传输文件为什么要拷贝四次了!也明白零拷贝的原理了哈哈哈😄
    2020-03-13
    11
    14
  • CPU 并不是发送一个特定的操作指令来操作不同的 I/O 设备。因为如果是那样的话,随着新的 I/O 设备的发明,我们就要去扩展 CPU 的指令集了。 在计算机系统里面,CPU 和 I/O 设备之间的通信,是这么来解决的。 首先,在 I/O 设备这一侧,我们把 I/O 设备拆分成,能和 CPU 通信的接口电路,以及实际的 I/O 设备本身。接口电路里面有对应的状态寄存器、命令寄存器、数据寄存器、数据缓冲区和设备内存等等。接口电路通过总线和 CPU 通信,接收来自 CPU 的指令和数据。而接口电路中的控制电路,再解码接收到的指令,实际去操作对应的硬件设备。 而在 CPU 这一侧,对 CPU 来说,它看到的并不是一个个特定的设备,而是一个个内存地址或者端口地址。CPU 只是向这些地址传输数据或者读取数据。所需要的指令和操作内存地址的指令其实没有什么本质差别。通过软件层面对于传输的命令数据的定义,而不是提供特殊的新的指令,来实际操作对应的 I/O 硬件。
    2020-10-25
    4
  • 活的潇洒
    深挖计算机四大原理《深入浅出计算机组成原理》践行中 day43 笔记:https://www.cnblogs.com/luoahong/p/11360788.html
    2019-08-21
    2
    3
  • 靠人品去赢
    老师用的1070.莫非平常也玩3A大作什么的。
    2019-08-07
    2
    3
  • 微秒
    老师,I/O内存映射,是指把设备的地址映射到主内存地址空间,这里的主内存地址空间是指虚拟内存吧??
    2020-04-09
    2
  • -W.LI-
    蓝牙鼠标接收器,就做了适配的功能吧。相当于接口和控制模块。把CPU发过来的数据指令转换成鼠标能接受的,然后发送给鼠标。
    2019-08-05
    2
  • 许童童
    CPU 和 蓝牙鼠标不直接通信,而是通过蓝牙接收器这个USB设备,USB相当于接口,去控制鼠标这个实际设备,而CPU和USB设备之间的通信,就是老师文章上面讲的。
    2019-08-05
    1
收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部