IO端口(io port),计算机术语,是指每个连接到
I/O总线上的设备都有自己的
I/O地址集。
在
IBM PC体系结构中,I/O地址空间一共提供了65,536个8位的
I/O端口。可以把两个连续的8位端口看成一个16位端口,但是这必须是从偶数地址开始。同理,也可以把两个连续的16位端口看成一个32位端口,但是这必须是从4的整数倍地址开始。有四条专用的
汇编语言指令可以允许
CPU对I/O端口进行读写:它们分别是in、ins、out和outs。在执行其中的一条指令时,CPU使用
地址总线选择所请求的I/O端口,使用
数据总线在CPU
寄存器和端口之间传送数据。
I/O端口还可以被映射到
物理地址空间:因此,处理器和
I/O设备之间的通信就可以直接使用对内存进行操作的汇编语言指令(例如,mov、and、or等等)。现代的硬件设备更倾向于映射I/O,因为这样处理的速度较快,并可以和
DMA结合起来使用。也就解释了为什么32位系统名义上支持4G内存,实际上你装上4G
内存条在机器上是不行了。因为访问不到4G,还需要为显卡,声卡等设备提供物理地址的映射。
系统设计者的主要目的是提供对I/O编程的统一方法,但又不牺牲性能。为了达到这个目的,每个设备的I/O 端口都被组织成一组专用
寄存器。CPU把要发给设备的命令写入
控制寄存器(control register),并从
状态寄存器(status register)中读出表示设备内部状态的值。CPU还可以通过读取输入寄存器(
input register)的内容
从设备取得数据,也可以通过向输出寄存器(output register)中写入字节而把
数据输出到设备。