【发布时间】:2012-12-22 20:09:06
【问题描述】:
为了简化讨论,我假设只有一个执行线程。以下只是我的猜测:
1、如果CPU从内存地址读取一个字节,那么它可以从同一个地址重复读取同一个值。
2、如果CPU从一个端口重复读取一个字节,那么每次读取的值可能不同。
我认为这两种方式的区别在于端口控制器可以在每次读取操作后自动更新端口上的值。
但是,我找不到任何明确支持我的陈述的教科书。
我说的对吗?
【问题讨论】:
-
CPU 也可以从内存地址读取不同的值,因为某些内存地址可以映射到 RAM 以外的其他东西,这取决于硬件的设计方式(就像 I/O 线一样,几乎可以映射到任何东西)。
-
谢谢你,泰格鲁。您提到的案例已被排除在此讨论中。
-
另外:在硬件层面,端口和内存在概念上没有区别:两者都是通过地址和控制总线发送电信号来访问的。当您使用 IN/OUT 指令读取或写入端口时,不同之处在于 CPU 将引脚设置为高电平(或逻辑状态“1”),这意味着“嘿,RAM 这不是给你的,而是给 I/O 设备的”。回答您的问题:1)对此无法保证,具体取决于硬件的设计方式。如果地址映射到 RAM:是(幸运的是),否则取决于。 2) 是的。
-
非常感谢您,泰格鲁。你的解释很有帮助。
标签: io cpu-architecture dma instruction-set machine-instruction