• 深入浅出计算机组成原理学习笔记:第四十三讲


    我们在前面的章节搭建了最简单的电路,在这里面,计算机的输入设备就是一个一个开关,输出设备呢,是一个一个灯泡。的确,早期发展的时候,计算机的核心是做“计算”。
    我们从“计算机”这个名字上也能看出这艺点。不管是中文名字“计算机”,还是英文名字“Computer”,核⼼都是在”计算“这两个字上。不过,到了今天,这些“计算”的贡作,更多的是艺个幕后工作。

    我们讨论是使用自己的PC,还是智能手机,这部分时间都是在和计算机进行各种“交互操作”。换句话说,就是在和输入输出设备打交道。这些输入输出设备也不再是个一个开关,
    或者一个一个灯泡。你在键盘上直接敲击的都是字符,而不是“0”和“1”,你在显示意器上看到的,也是直接的图形或者文字的画面,而不是一个一个闪亮或者关闭的灯泡。
    想要了解这其中的关窍,那就请你和我一起来看一看,计算机里面的输入输出设备。

    一、经典的适配器模式

    1、硬件设备并不是直接和CPU直接通信的

    2、内置在主板上的接口

    3、CPU的三级缓存

    二、经典的适配模式

    1、把接口和实际设备分离

    2、软件的设计模式口

    3、Windows操作系统

    三、CPU是如何控制I/O设备的?

    首先是数据寄存器

    然后是命令寄存器

    而状态寄存器

    四、发挥总线的价值

    1、MIPS的CPU到底是如何通信

    2、IntelX86

    这个,其实也有点像我们在设计模式⾥⾯的Command模式。我们在总线上传输的,是一个个数据对象,然后各个接受这些对象的设备,再去根据对象内容,进行实际的解码和命令执行。

    这是一张我自己的显卡,在设备管理器里面的资源(Resource)信息。你可以看到,里面既有MemoryRange,这个就是设备对应映射到的内存地址,也就是我们上⾯所说的MMIO的访问方式
    。同样的,里面还有I/O?Range,这个就是我们上⾯所说的PMIO,也就是通过端⼝来访问I/O设备的地址。最后,里面还有一个IRQ,也就是会来⾃于这个设备的中断信号了。

    五、总结与延伸

    好了,讲到这里,不知道,现在你是不是可以把CPU的指令、总线和I/O设备之间的关系彻底串联起来了呢?我来带你回顾一下。

    CPU并不是发送一个特定的操作指令来操作不同的I/O设备。因为如果是那样的话,随着新的I/O设备的发明,我们就要去扩展CPU的指令集了。

    在计算机系统里面,CPU和I/O设备之间的通信,是这么来解决的。


    首先,在I/O设备这⼀侧,我们把I/O设备拆分成,能和CPU通信的接⼝电路,以及实际的I/O设备本身。接⼝电路里面有对应的状态寄存器、命令寄存器、数据寄存器、数据缓冲区和设备内存等等
    。接⼝电路通过总线和CPU通信,接收来⾃CPU的指令和数据。⽽接⼝电路中的控制电路,再解码接收到的指令,实际去操作对应的硬件设备。

    而在CPU这⼀侧,对CPU来说,它看到的并不是已个个特定的设备,而是已个个内存地址或者端⼝地址。CPU只是向这些地址传输数据或者读取数据。所需要的指令和操作内存地址的指令其实没有什么本质差别。
    通过软件层面对于传输的命令数据的定义,而不是提供特殊的新的指令,来实际操作对应的I/O硬件。

  • 相关阅读:
    计算机网络面试小知识总结(转载)
    williamisnotme@gmail.com
    jdk1,8 HashMap
    Mybatis 为什么不要用二级缓存
    CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
    一级缓存,二级缓存
    mock单测
    java8函数式编程(转载)
    volatile解析
    JVM 技术分享(初级)
  • 原文地址:https://www.cnblogs.com/luoahong/p/11360788.html
Copyright © 2020-2023  润新知