2

这是我对所发生事情的心理印象,我希望得到一些更正、澄清甚至更多细节。

基本上,当计算机开机时,BIOS 会加载 PCI 总线上的所有设备,并使它们在某个预定地址可用。PCI-express 总线也是如此。

所以每个设备都可以接收命令,因为驱动程序知道在总线地址上哪里可以找到它们?

假设如果您想向声卡发送指令,驱动程序告诉 CPU 在适当的总线上广播指令,并且指定地址的正确设备将接收指令并执行它,我是否进一步正确事物?

这种可视化是否正确?由于涉及的数据量,视频的处理方式是否有所不同?

4

3 回答 3

2

大多数新的总线系统都有一个探测机制,系统可以要求所有设备识别自己和它们在总线上的位置,然后操作系统可以将这些识别映射到设备驱动程序,然后设备驱动程序可以指定它们需要的其他资源。USB、PCI、PCI-Express、AGP、Firewire、SATA、Infiniband 和 Lightport 都可以做到这一点。但是,它不一定通过“地址”精确地工作,它可以通过不同的总线控制器模式,甚至通过完全独立的总线。例如,RAM 芯片有一个 SPI 接口来配置它们,而实际数据在其他一些互连上移动。我有一个嵌入式系统在工作,它使用 SPI 配置对保存操作系统的闪存盘的总线访问……这是一个非常烦人的启动设备。

虽然 PC 中的 BIOS 确实设置了所有 PCI 设备,但大多数较新的操作系统会立即从头开始重做该过程。因此,基于 Intel 的 Mac(和许多服务器)中的 EFI 固件只设置了加载操作系统内核实际需要的内容,其余部分留给操作系统。这就是 Windows 需要 BootCamp 或 HAL 磁盘才能在 Mac 或高端服务器上实际启动的原因。Windows 在普通 PC 上进行 PCI 探测很晚,并且确实需要一段时间的 BIOS 设置,但在 Mac 和某些服务器系统上,它需要加载不同的 HAL 才能立即进行硬件扫描。

如果你想真正理解这些东西,阅读 Linux 内核是非常有启发性的,尤其是关于 PC 和其他系统的区别。

于 2010-01-22T08:49:34.800 回答
1

显卡连接到由北桥处理的AGP总线,PCI设备以及ATA设备连接到南桥。一个不错的介绍在这里

于 2010-01-22T07:53:24.983 回答
0

是的,您可以使用这种简化来粗略地想象它是如何工作的。它也适用于视频。

当然,如果你深入了解细节,你会发现它有点复杂,因为涉及到多种技术,理论上每种设备的工作方式都会有所不同。准备好面对 IRQ、DMA、不同的内存映射等……

于 2010-01-22T07:45:16.593 回答