Memory PCI条内存地址

Memory PCI条内存地址,memory,computer-architecture,bios,pci,Memory,Computer Architecture,Bios,Pci,快速提问,我正在阅读关于PCI的OSDev Wiki页面,上面说- 基址寄存器(或条)可用于保存设备使用的内存地址,或端口地址的偏移量。通常,内存地址条需要位于物理ram中,而I/O空格条可以位于任何内存地址(甚至超出物理内存) 我不明白它说的内存地址条需要位于物理ram中的什么地方?MMIO的全部意义在于,当它被分配一个内存地址时,它将被路由到设备,而不是物理RAM。它需要位于物理RAM中是什么意思 不管安装了多少物理RAM,它不只是3GB-4GB地址空间之间的一个地址吗 这是OSDev站点上

快速提问,我正在阅读关于PCI的OSDev Wiki页面,上面说-

基址寄存器(或条)可用于保存设备使用的内存地址,或端口地址的偏移量。通常,内存地址条需要位于物理ram中,而I/O空格条可以位于任何内存地址(甚至超出物理内存)

我不明白它说的内存地址条需要位于物理ram中的什么地方?MMIO的全部意义在于,当它被分配一个内存地址时,它将被路由到设备,而不是物理RAM。它需要位于物理RAM中是什么意思

不管安装了多少物理RAM,它不只是3GB-4GB地址空间之间的一个地址吗

这是OSDev站点上的错误还是我误解了

链接-


谢谢。

OSDev站点还可以。它们从PCI设备的角度描述内存/IO条,而不是从主机的角度。所以OSDev的意思是,内存条可以(但不一定)映射到PCI设备上的物理RAM。而IO条通常是其他东西(寄存器、FIFO等)


还请注意,不鼓励使用IO条。最好只使用记忆条。通常,您会有一个小的内存条,将所有寄存器分组。其他条会暴露PCI设备的RAM块。

OSDev站点正常。它们从PCI设备的角度描述内存/IO条,而不是从主机的角度。所以OSDev的意思是,内存条可以(但不一定)映射到PCI设备上的物理RAM。而IO条通常是其他东西(寄存器、FIFO等)


还请注意,不鼓励使用IO条。最好只使用记忆条。通常,您会有一个小的内存条,将所有寄存器分组。其他条形图将显示PCI设备的RAM块。

谢谢您的回答。知道它是从PCI设备的角度来看的,这让它更清晰了一点,我仍然有点困惑。内存条不是总是映射到设备上的物理RAM吗?因此,如果我的设备映射了0xE0000000-0xEFFFFFF,内存条将包含此地址范围?否,内存条可以映射到寄存器。例如,您可以查看PC上的任何网卡。它们通常只有一个小条(通常为256字节),其中只有一部分是寄存器,其余部分未使用。另一个例子是显示适配器,它通常有一个用于寄存器的小内存条和一个映射到视频帧缓冲区的大内存条,视频帧缓冲区是PCI设备上的一块RAM。此外,当主机枚举所有PCI设备时,您在条中看到的值(例如0xE0000000)由主机设置。此值对主机有意义,对设备无意义。谢谢您的回答。知道它是从PCI设备的角度来看的,这让它更清晰了一点,我仍然有点困惑。内存条不是总是映射到设备上的物理RAM吗?因此,如果我的设备映射了0xE0000000-0xEFFFFFF,内存条将包含此地址范围?否,内存条可以映射到寄存器。例如,您可以查看PC上的任何网卡。它们通常只有一个小条(通常为256字节),其中只有一部分是寄存器,其余部分未使用。另一个例子是显示适配器,它通常有一个用于寄存器的小内存条和一个映射到视频帧缓冲区的大内存条,视频帧缓冲区是PCI设备上的一块RAM。此外,当主机枚举所有PCI设备时,您在条中看到的值(例如0xE0000000)由主机设置。此值对主机有意义,对设备无意义。