X86 使用输入/输出指令的内存映射i/o操作(在英特尔处理器中)…仍要缓存吗?

X86 使用输入/输出指令的内存映射i/o操作(在英特尔处理器中)…仍要缓存吗?,x86,intel,osdev,cpu-cache,X86,Intel,Osdev,Cpu Cache,如果映射i/o的地址范围被键入为写回WB,即使我使用in/out指令,intel处理器中的内存映射i/o操作仍会被缓存吗 编辑: 这个问题解决了。我发现MMIO是可缓存的,并且MMIO操作可以根据其内存类型重新排序。这就是英特尔建议将使用MTRR的MMIO设置为UC不可缓存的原因。。我在intel software developer manual v3A上找到了它,它也可能应用于amd处理器上…我不知道x86系统上的MMIO实际上可以设置为可缓存,但即使它们可以,我认为使用IO指令会绕过MMU

如果映射i/o的地址范围被键入为写回WB,即使我使用in/out指令,intel处理器中的内存映射i/o操作仍会被缓存吗

编辑:
这个问题解决了。我发现MMIO是可缓存的,并且MMIO操作可以根据其内存类型重新排序。这就是英特尔建议将使用MTRR的MMIO设置为UC不可缓存的原因。。我在intel software developer manual v3A上找到了它,它也可能应用于amd处理器上…

我不知道x86系统上的MMIO实际上可以设置为可缓存,但即使它们可以,我认为使用IO指令会绕过MMU的这一部分。CPU不会意识到您正在写入的IO地址在内部映射到设备上的同一MMIO地址。如何设置该MMIO区域的可缓存性?

我不知道x86系统上的MMIO实际上可以设置为可缓存,但即使可以,我认为使用IO指令会绕过MMU的这一部分。CPU不会意识到您正在写入的IO地址在内部映射到设备上的同一MMIO地址。如何设置MMIO区域的可缓存性?

内存映射与输入和输出指令之间的关系如何?内存映射I/O使用相同的地址总线来寻址内存和I/O设备。输入/输出指令使用与系统内存分离的地址空间。使用输入/输出不是mmio。答案是否仅基于将mmio范围设置为UC的模糊建议?这似乎无法证明CPU的行为,也许只是为了避免混淆操作系统内存映射和输入输出指令——它们之间的关系如何?内存映射I/O使用相同的地址总线来寻址内存和I/O设备。输入/输出指令使用与系统内存分离的地址空间。使用输入/输出不是mmio。答案是否仅基于将mmio范围设置为UC的模糊建议?这似乎很难证明CPU的行为,也许只是为了避免混淆操作系统?一些设备IO映射到物理内存的某个区域上,通过设置MTRR内存类型范围寄存器,您可以控制内存区域的可缓存性。很抱歉回复太晚,我很高兴您找到了答案!我猜我错了MMIO的可缓存性。。。看起来,将预取MMIO空间设置为可缓存甚至很常见!有些设备IO映射到物理内存的某个区域上,通过设置MTRR内存类型范围寄存器,您可以控制内存区域的可缓存性..很抱歉回复太晚,很高兴您找到了答案!我猜我错了MMIO的可缓存性。。。看起来,将预取MMIO空间设置为可缓存甚至很常见!