【发布时间】:2013-12-29 09:47:46
【问题描述】:
为了被 cpu 执行,必须将程序加载到 RAM 中。程序只是处理器可以理解的一系列机器指令(如 x86 指令集)(因为它通过逻辑门物理实现了它们的语义)。
我可以或多或少地理解本地指令(在 cpu 芯片组内执行的指令)如“ADD R1、R2、R3”的工作原理。甚至 cpu 如何使用数据总线和地址总线通过北桥芯片组与 ram 接口对我来说已经足够清楚了。
我正在努力解决的是大局。
例如,如何将文件保存到硬盘中? 假设主板使用 SATA 接口与 HDD 通信。 这是否意味着这个SATA接口有一个指令集,可以通过编写正确格式的SATA指令供cpu使用?
PCI接口、AGP接口等也一样吗?
所有硬件通信基本上是通过为某些任务确定标准接口并使用任何其他硬件组件都可以查询的指令集(由制造硬件芯片组的公司)实现它来完成的吗?
我对硬件和软件交互的高级理解是否正确?
【问题讨论】:
-
我认为您的理解通常是正确的,但我认为它并不总是像处理器直接与每个设备通信那样简单。例如,处理器可以与 UART 设备或其他一些设备进行通信,这些设备又与内存或网络或监视器等进行通信。例如,请参阅en.wikipedia.org/wiki/16550_UART。更一般地说,现代计算硬件设置也涉及 DMA:en.wikipedia.org/wiki/Direct_memory_access。