CPU,BIOS或OS是否进行IO端口地址分配?

时间:2014-04-12 23:52:39

标签: io operating-system cpu-registers bios

我理解CPU通过IO端口地址(通常是16位)与IO设备通信,但我想知道IO端口地址分配是谁? BIOS?中央处理器? OS?这些地址是预设还是动态?

2 个答案:

答案 0 :(得分:1)

通常,可寻址I / O的地址由硬件分配。

字面上,逻辑电路(处理器内部或外部)监视总线以获取特定地址,并使外围功能寄存器锁存正在从总线写入的数据,或驱动数据读到它。

有时,特定外设的地址是基地址和内部地址的总和,其中基地址可以由DIP开关或跳线确定,或者甚至(在某些历史情况下,但不在IBM PC中)插槽中插入了扩展卡。

在更复杂的接口(如PCI)中,I / O基地址可能(?)在发现后由软件分配。虽然传统的本地总线接口可以只是几个逻辑门,但PCI接口非常复杂,具有很多配置功能。<​​/ p>

答案 1 :(得分:1)

这取决于您所谈论的设备类型:

  • 如果是PCI或PCI Express设备,则设置基本I / O地址 在启动时由BIOS。它们可能会被运营重新映射 系统(如果需要)(考虑热插拔设备的情况)。

  • 如果是传统的ISA插槽设备(非PnP),则基地址为 通常由电路板上的跳线或DIP开关设置。在这种情况下, 基地址不能动态更改。

  • 一些ISA板支持ISA PnP,这允许他们的基础 在启动时由BIOS或OS设置的地址。

  • 在PC中,还有几个内置的“ISA”设备 主板/芯片组居住在固定的I / O地址(例如PS / 2 键盘控制器)。有硬编码,不要改变。

  • 一些主板外设,如串口和并口 在BIOS设置中配置其基址。在这种情况下, BIOS设置的行为类似于跳线或DIP开关。