|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、I/O端口
V: m1 X, c: \( M$ }3 K* e8 s w. a# t8 i/ @& @/ E- K8 `1 U
端口(port)是接口电路中能被CPU直接访问的寄存器的地址。几乎每一种外设都是通过读写设备上的寄存器来进行的。CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态和传送数据。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。
7 P1 g2 X( h( Q3 S7 p7 V, b6 f! K+ x, V/ I, p" K" _% l
二、IO内存9 |" e% f/ ^9 t
" W7 n) H S- N1 l! `+ c5 |
例如,在PC上可以插上一块图形卡,有2MB的存储空间,甚至可能还带有ROM,其中装有可执行代码。
: q0 l, d( G% b+ @: u* Q1 Z& a" v, \4 A( J* L- y3 s
三、IO端口和IO内存的区分及联系0 t4 \5 ~) o* H: K; r
_0 Q7 }; u2 ^7 E v% B 这两者如何区分就涉及到硬件知识,X86体系中,具有两个地址空间:IO空间和内存空间,而RISC指令系统的CPU(如ARM、PowerPC等)通常只实现一个物理地址空间,即内存空间。% H+ i9 W) R W5 b
内存空间:内存地址寻址范围,32位操作系统内存空间为2的32次幂,即4G。2 k8 H7 h- J0 I O( z- f8 s
IO空间:X86特有的一个空间,与内存空间彼此独立的地址空间,32位X86有64K的IO空间。
9 [( O- |, w- e( w8 y
: B, v. G8 c0 @+ N& @& |8 YIO端口:当寄存器或内存位于IO空间时,称为IO端口。一般寄存器也俗称I/O端口,或者说I/O ports,这个I/O端口可以被映射在Memory Space,也可以被映射在I/O Space。
7 t s% X6 T& G
1 f0 X, Z8 m' G2 u/ MIO内存:当寄存器或内存位于内存空间时,称为IO内存。
: U0 G) x5 O. j$ J+ j
8 T! A e, B+ b4 m3 v; u四、外设IO端口物理地址的编址方式
- L; c: g# u# H- ~& z$ }' @2 y( V7 ~" T8 R8 L! G& B% R
CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。而具体采用哪一种则取决于CPU的体系结构。
5 W) E8 h& b) Q& w& c! }$ E$ x& E; F) P5 P7 P2 V& v4 R; @
1、统一编址
( W4 s3 U" _% l! z9 n7 a5 B7 z& K ?/ s' l. X, h
2 I. V( T" _- r4 f
9 x. \, q% i) \6 h
6 s4 J+ m" K4 \/ q$ _/ }+ V1 ^$ R
7 S6 {- a5 S, L' `6 x* F0 Y
, D1 x: y* I: N4 u6 E6 O |
|