linux - 端口映射 I/O 地址空间的位置

标签 linux assembly io x86 hardware

我知道访问 I/O 地址空间中的端口需要特定的 IN/OUT 指令,它们不是物理内存 (RAM) 的一部分,但我不明白 I/O 地址空间实际位于何处(物理上)? (某种 RAM 中)I/O Controller ?物理内存的保留端?

最佳答案

在早期的 X86 处理器(以及 8080、Z80 等)上,I/O 地址空间与内存位于相同的数据和地址总线上,但可以通过激活 CPU 上的专用 IO 请求引脚来访问

所以电气 I/O 与 RAM 并行

现在 CPU 直接使用 HDMI 和 PCIe,所以大部分 I/O 空间要么在 CPU 内部(例如:VGA I/O 接口(interface)),要么通过 PCIe 串行总线访问 PCIe 也用于内存映射 I/O,因此在这方面 IO 仍然通过与内存映射 IO 大部分相同的电气接口(interface)进行访问。但不再使用用于 RAM 的相同 IO 引脚,

关于linux - 端口映射 I/O 地址空间的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27785821/

相关文章:

linux - 无法弄清楚这个段错误

c - 有 ASM 到 C 的转换器吗?

rust - 使用 std::fs::write 将 Vec<String> 写入文件

c - 添加 request_mem_region 后,我的驱动程序每次第一次访问都会失败,并显示 "busy"消息

c - assembly 十六进制转储

c# - 异步读取/写入同一流?

java - 解析/保存/缓存多个文件时减少 Java 内存使用

linux - Linux内核中virt_to_phys和CPU的MMU是什么关系?

mysql - 如何在linux中找出当前使用的MySQL配置文件的位置

linux - 让 meteor 0.9.2 构建工作 OSX -> Linux