H.1#【计算机组成原理】—1.2 I/O端口寻址和访问控制方式

I/O端口寻址和访问控制方式

前言


目录

  • I/O端口寻址和访问控制方式
  • I/O端口和寻址
    • 统一编址
    • 独立编址
    • I/O 端口的地址分配
  • 接口访问控制

I/O端口和寻址

I/0地址的设置方式:统一编译和独立编址

统一编址

原理:把I/O控制器中的端口地址归入存储器寻址地址空间的范围,因此这种编址方式也称为存储器映像编址。
CPU 访问一个端口的操作与访问内存的操作一样,已使用访问内存的指令

独立编址

把I/O控制器和控制卡的寻址单独作为一个独立的地址空间对待,称为I/O地址空间。每个端口有一个I/O地址与之对应
使用专门的I/O指令访问端口

I/O 端口的地址分配

对于现代PC 用EISA(Extended Industry Standard Architectrue) 或 PCI等总线的结构的现代PC,有64K的I/O地址空间
Linux 系统可以通过/proc/ioports 文件得到相关控制器或设置使用的I/O地址范围:

 [root@linux]# cat /proc/ioports
  0000-0cf7 : PCI Bus 0000:00
  0000-001f : dma1
  0020-0021 : pic1
  0040-0043 : timer0
  0050-0053 : timer1
  0060-0060 : keyboard
  0064-0064 : keyboard
  0070-0071 : rtc0
  0080-008f : dma page reg
  00a0-00a1 : pic2
  00c0-00df : dma2
  00f0-00ff : fpu
  0170-0177 : 0000:00:06.0

当使用request_region(I8042_DATA_REG, 16, “i8042”) 函数申请通信端口后,某个driver就得到了这个资源。
可以通过/proc/ioports文件查看哪些端口被谁使用了。

接口访问控制

PC的 I/O接口数据传输控制方式一般采用:循环查询方式,中断方式和DMA 传输方式。

  • 循环查询方式
    CPU通过程序中的循环查询设备控制器中的状态,判断是否可以与设备进行数据交换

  • 中断处理控制
    需要有中断控制器的支持,只有当I/O设备通过中断向CPU提出处理请求时,CPU才会暂时中断执行相应的I/O中断服务程序

  • DMA
    用于I/O设备与系统内存之间进行批量数据处理,整个操作过程使用专门的DMA控制器来进行,无须CPU插手,由于传输工程中无需软件介入,因此操作效率很高。

你可能感兴趣的:(Hardware,硬件工程)