接口(interface)和端口(port) JSTC 。端口=接口寄存器 (数据、控制、状态.…) ·接口=模块=N个端口+控制逻辑 数据线 数据缓冲 设备选择 1数据线 寄存器DBR 电路 地址线 1命令 外部 CPU 命令线 设 控制逻辑电路 状态线 设备状态 命令寄存器 状态 备 标记 和命令译码器 11
11 接口(interface)和端口(port) • 端口=接口寄存器(数据、控制、状态…) • 接口=模块 = N个端口+控制逻辑
/O端口编址方式 存储器映射MMIO:统一编址 一在主存储器的地址空间中划出某一区域专门作为外设地址区使用 - 使用通用的MOV或访存指令也可以访问/O接口 -Intel MCS-51、MIPS、ARM、RV等采用 端口映射PMIO:独立编址 - /O端口和存储器独立编址 ISA分别设立访存指令和IVO指令 (in/out) 由"选择”指示地址类型:MIO 0 0 80x86采用 IO 存储器 YYYYH 0 I/O 地址 地址 内存 XXXXH 整个地址空间 CPU 地址 选择 0XXX班 译码器 地址 地址内存 存储器 选择 外设 地址 CPU 选择 FFFFH 地址外设 选择
12 I/O端口编址方式 • 存储器映射MMIO:统一编址 – 在主存储器的地址空间中划出某一区域专门作为外设地址区使用 – 使用通用的MOV或访存指令也可以访问I/O接口 – Intel MCS-51、MIPS、ARM、RV等采用 • 端口映射PMIO:独立编址 – I/O端口和存储器独立编址 – ISA分别设立访存指令和I/O指令(in/out) – 由“选择”指示地址类型:M/IO – 80x86采用
MMlO例:Keyboard example 》 Oxffffffff 1/0 Ox7fffffff processor Stack Keyboard Dynamic data a888634444 Data register 0xf0000000 Static data Control register R 0f0000004 0x10000000 Text/Program 0x400000 os getchar()月 reads an ASCII byte from keyboard and deposits it in$v0.$s0←0f0000000
MMIO例:Keyboard example