首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

I/O端口编址方式:统一编址和独立编址

I/O端口编址方式:统一编址和独立编址

编址方法

8086CPU和外部设备之间是通过I/O接口进行联系的,从而达到相互间传输信息的目的。每个I/O芯片上都有一个端口或几个端口,一个端口往往对应于芯片上的一个寄存器或一组寄存器。微机系统要为每个端口分配一个地址,这个地址成为端口号。各个端口号和存储器单元地址一样,具有唯一性。外设都是通过读写设备上的寄存器来进行的,外设寄存器也称为“I/O端口”,而I/O端口有两种编址方式:独立编址和统一编址。
(1)统一编址

基本概念:

外设结构中的I/O寄存器(即I/O端口)与主存单元一样看待,每个端口占用一个存储单元的地址,将主存的一部分划出来用作I/O地址空间,如,在PDP-11中,把最高的4K主存作为I/O设备寄存器地址。端口占用了存储器的地址空间,使存储容量减小。

此统一编址也称为“I/O内存”方式,外设寄存器位于“内存空间”(很多外设有自己的内存、缓冲区、外设的寄存器和内存统称“I/O空间”)。

优点:

可以利用存储器的寻址方式来寻址I/O端口。

缺点:

I/O端口占用了存储空间,而且进行I/O操作时,因地址编码较长,将导致速度较慢。

举例:

Samsung的S3C2440,是32位ARM处理器,它的4GB地址空间被外设、RAM等瓜分:

     
          0x8000 1000 LED 8*8点阵的地址
        0x4800 0000 ~ 0x6000 0000 SFR(特殊暂存器)地址空间
        0x3800 1002 键盘地址
        0x3000 0000 ~ 0x3400 0000 SDRAM空间
        0x2000 0020 ~ 0x2000 002e IDE
        0x1900 0300 CS8900

(2)独立编址

基本概念:

独立编址又称为单独编址,I/O地址与存储地址分开独立编址,I/O端口地址不占用存储空间的地址范文,这样,在系统中就存在了另一种与存储地址无关的I/O地址,CPU也必须具有专用于输入输出操作的指令(IN、OUT等)和控制逻辑。独立编址下,地址总线上过来一个地址,设备不知道是给I/O端口的、还是给寄存器的,于是处理器通过MEMR/MEMW和IOR/IOW两组控制信号来实现对I/O端口和存储器的不同寻址。如,intel 80x86就采用单独变回,CPU内存和I/O是一起编址的,就是说内存一部分的地址和I/O地址是重叠。

独立编址也称为“I/O端口”方式,外设寄存器位于“I/O(地址)空间”。

对于x86架构来说,通过IN/OUT指令。PC架构一共有65536个8bit的I/O端口,组成64K个I/O端口,编号从0~0xFFF,有16位,80x86用低16位地址线A0~A15来寻址。连续两个8bit的端口可以组成一个16bit的端口,连续4个组成一个32bit的端口。I/O地址空间和CPU的物理地址空间是两个不同的概念,例如I/O地址空间为64K,一个32bit的CPU物理地址空间是4G。

优点:

不占用内存空间;使用I/O指令,程序清晰,很容易看出是I/O操作还是存储器操作;译码电路比较简单(因为I/O端口的地址空间一般比较小,所用地址线也比较少)。

缺点:

只能用专门的I/O指令,访问端口的方法不如访问存储器的方法多。

举例:

在Intel 8086+Redhat9.0下用“more /proc/ioports”可以看到:

            0000-001f : dma1
         0020-003f : pic1
         0040-005f : timer
         0060-006f : keyboard
         0070-007f : rtc
         0080-008f : dma page reg
         00a0-00bf : pic2
         00c0-00df : dma2
         00f0-00ff : fpu
         0170-0177 : ide1
         ……

不过Intel x86平台普通使用了名为内存映射(MMIO)的技术,该技术是PCI规范的一部分,IO设备端口被映射到内存空间,映射后,CPU访问I/O端口就如同访问内存一样。看Intel TA 719文档给出的x86/x64系统典型内存地址分配表:

系统资源 占用

---------------------------------------------------------------------------------------------------------------------

           BIOS 1M
        本地APIC 4K
        芯片组保留 2M
        IO APIC 4K
        PCI设备 256M
        PCI Express设备 256M
        PCI设备(可选) 256M
        显示帧缓存 16M
        TSEG 1M

对于某一既定的系统,它要么是独立编址、要么是统一编址,具体采用哪一种则取决于CPU的体系结构。
返回列表