【问题标题】:How does memory mapped I/O differentiate between Memory and I/O Transfer?内存映射 I/O 如何区分内存和 I/O 传输?
【发布时间】:2017-06-08 20:38:58
【问题描述】:

好的,我知道如何通过 I/O 和内存传输的不同控制线来区分“隔离 I/O”中的传输。但是我们如何区分内存映射 I/O 中的传输它们共享相同的控制线。并告诉现代系统使用哪种类型的总线架构(比如今天的核心 i3 或类似的处理器)???

谢谢

【问题讨论】:

    标签: cpu-architecture bus


    【解决方案1】:

    您可以在固定电话上拨打不同的号码,但每个号码的“控制线”都是相同的。

    您可以通过网卡将数据包发送到不同的计算机,但每个数据包的“控制线”都是相同的。

    您可以从家里开车到不同的目的地,但每个目的地的“控制线”都是相同的。

    一句话:路由

    对于 MMIO 来说也是一样的,地址决定了写入的路径。
    我列出了现代 x86 CPU in this other answer of mine 使用的典型连接。

    【讨论】:

    • 好的,在 8086 微处理器中是否会发生这种情况:如果 16 位指令(位于地址总线中)的最左边 4 位等于二进制序列“1 1 1 1”,那么它是I/O 指令(表示数据总线中的数据用于 I/O),如果它等于二进制序列 0 1 0 1(1 或 0 且任何 3 位小于 1 1 1),则它是一条内存指令(其中表示数据总线中的数据用于内存)???
    • @Ahti MMIO 和隔离 IO 是不同的东西。除此之外,我无法真正理解您的后续问题。如果您在 Google 上搜索“Intel Manual 2”,您会找到所有说明的参考,包括机器代码。我懒得去看看原来的 8086 指令是否有一些简单的 IO/mem 指令解码方案。操作码空间在八进制中是有意义的,您可以尝试这种方法。
    猜你喜欢
    • 2016-05-27
    • 2017-05-17
    • 2011-01-19
    • 1970-01-01
    • 2011-12-15
    • 2016-11-16
    • 2012-03-25
    • 2011-10-11
    • 2015-09-11
    相关资源
    最近更新 更多