43 | 输入输出设备:我们并不是只能用灯泡显示“0”和“1”
徐文浩
该思维导图由 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
《深入浅出计算机组成原理》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(18)
- 最新
- 精选
- 程序员花卷CPU只认插在电脑USB接口上的蓝牙接收器,而蓝牙接收器的和蓝牙鼠标之间是如何传输信息的,这我觉得又是另一个层面的知识!,但是对于我们的CPU来说,当蓝牙接收器接收到鼠标的命令的时候,将这个命令通过I/O接口和总线发送给CPU,CPU最后做出相应的回应,来控制对应的I/O设备,这里涉及到I/O接口的一个功能,那就是数据的转换!这也就是为什么很多不同的设别的发出的指令CPU都能够处理的原因!
作者回复: 👍
2019-12-2518 - 焰火上一讲的北桥IO芯片就是用来MMIO的,和ARM架构下的存储空间地址很类似。
作者回复: 👍
2019-09-2315 - rookiegan以蓝牙鼠标接收器是USB接口为例。 对于CPU来说,这只是总线上的一个普通的USB设备,与其他的U盘、USB网卡之类的USB接口设备没什么区别,这些设备只是通过USB协议讲自己的数据发送给操作系统,对于这些数据是什么,USB是不管的,USB蓝牙鼠标接收器和普通USB的鼠标在这一层的数据是一样的。 对于操作系统来说,要使这些USB设备工作,就需要对发来的数据进行处理,处理数据的就是驱动程序,所以不同种类的USB设备需要不同的驱动程序。 回过头来再看USB蓝牙鼠标接收器,鼠标产生的事件通过 蓝牙发送->蓝牙接受-> USB发送-> USB接受->驱动程序 这样的路径最终到达操作系统,这里面的蓝牙和USB仅仅只是传输数据的方式而已,换为其他的什么TCP/ IP传输也是一样的,其本质是将特定的数据传输给操作系统处理。2019-08-05575
- 有米看了这一讲终于明白网络传输文件为什么要拷贝四次了!也明白零拷贝的原理了哈哈哈😄2020-03-131114
- 风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-254
- 活的潇洒深挖计算机四大原理《深入浅出计算机组成原理》践行中 day43 笔记:https://www.cnblogs.com/luoahong/p/11360788.html2019-08-2123
- 靠人品去赢老师用的1070.莫非平常也玩3A大作什么的。2019-08-0723
- 微秒老师,I/O内存映射,是指把设备的地址映射到主内存地址空间,这里的主内存地址空间是指虚拟内存吧??2020-04-092
- -W.LI-蓝牙鼠标接收器,就做了适配的功能吧。相当于接口和控制模块。把CPU发过来的数据指令转换成鼠标能接受的,然后发送给鼠标。2019-08-052
- 许童童CPU 和 蓝牙鼠标不直接通信,而是通过蓝牙接收器这个USB设备,USB相当于接口,去控制鼠标这个实际设备,而CPU和USB设备之间的通信,就是老师文章上面讲的。2019-08-051
收起评论