您的位置:首页 > 理论基础

1.微型计算机技术之IO地址空间、内存地址空间

2016-05-12 23:00 232 查看
对于主板上CPU,其管理(读、写)的资源包括(不是主要包括):

1)内部寄存器;

2)存储器(RAM、ROM);

3)IO设备;

主板上CPU可以理解为功能强大的单片机,对内部寄存器管理(读、写)很容易理解;CPU通过地址线、数据线、控制线连接RAM(内存),通过发送特定地址可以实现直接对内存的读写操作,那CPU可以对多少个存储单元进行操作呢?地址线从全0到全1,就是CPU可以操作的存储单元的个数,该片地址区域即称作内存地址空间,如IntelCPU地址线有32条,则最大可寻址内存地址空间为0~0xFFFFFFFF,包含2的32次方个存储单元,即4GB(存储单元以字节为单位);CPU怎么对IO设备如键盘、鼠标、串口进行访问呢?由于IO设备并没有直接连接到CPU(就是个功能强大的单片机)的引脚上,所以不能直接对IO设备进行操作,那CPU怎么对他们进行操作能,这就出现了IO端口的概念:

IO端口是CPU与IO设备间交互数据的接口(只是一个称呼,没有实体),一个IO设备可能有一个或多个端口(EC芯片具有60/64、62/66 4个端口),一个端口与IO设备中的一个或两个寄存器相对应(如EC的状态、控制寄存器就对应端口64),CPU为每个端口分配一个地址,称作该端口的端口号,所有的端口号的集合称作IO地址空间,IO地址空间也就对应了所有的IO设备。

IO端口的两种访问方式:

统一编址:外设接口中的IO寄存器(即IO端口)与主存单元一样看待,每个端口占用一个存储单元的地址,将主存的一部分划出来用作IO地址空间,如,在 PDP-11中,把最高的4K主存作为IO设备寄存器地址。端口占用了存储器的地址空间,使存储量容量减小。 外设寄存器位于“内存空间”(很多外设有自己的内存、缓冲区,外设的寄存器和内存统称“I/O空间”)。(如M68K,Power
PC,ARM,Unicore等采用统一编址)

独立编址(单独编址):IO地址与存储地址分开独立编址(I/O地址统一形成I/O地址空间),I/0端口地址不占用内存地址空间的地址范围,这样,在系统中就存在了另一种与存储地址无关的IO地址,CPU也必须具有专用与输入输出操作的IO指令(IN、OUT等)和控制逻辑。独立编址下,地址总线上过来一个地址,设备不知道是给IO端口的、还是给存储器的,于是处理器通过MEMR/MEMW和IOR/IOW两组控制信号来实现对I/O端口和存储器的不同寻址。如,intel
80x86就采用单独编址,CPU内存和I/O是一起编址的,就是说内存一部分的地址和I/O地址是重叠的。外设寄存器位于“I/O(地址)空间”。 对于x86架构来说,通过IN/OUT指令访问。PC架构一共有65536个8bit的I/O端口,组成64K个I/O地址空间,编号从 0~0xFFFF,有16位,80x86用低16位地址线A0-A15来寻址。连续两个8bit的端口可以组成一个16bit的端口,连续4个组成一个32bit的端口。I/O地址空间和CPU的物理地址空间是两个不同的概念,例如I/O地址空间为64K,一个32bit的CPU物理地址空间是4G。(X86
CPU采用独立编址)

IO内存(IO设备中特定RAM区域)的访问方式:

一般IO设备上会专门划出一片RAM区域与CPU进行数据交互,此部分存储域访问方式为:

统一编址下:对于统一编址,IO地址空间是物理主存的一部分,对于编程而言,我们只能操作虚拟内存,所以,访问的第一步就是要把设备所处的物理地址映射到虚拟地址,Linux2.6下用ioremap(): void *ioremap(unsigned long offset, unsigned long size); ioremap()用来将IO资源的物理地址(IO的RAM)映射到内核虚地址空间(3GB
- 4GB)中,参数addr是指向内核虚地址的指针。然后,我们可以直接通过指针来访问这些地址,但是也可以用Linux内核的一组函数来读写: ioread8(), iowrite16(), ioread8_rep(), iowrite8_rep()......

独立编制下:IO设备上RAM编址从0x00开始(也可以理解为偏移0),下一个存储单元地址加1(也可以理解为偏移1),直到最大地址,如EC中0x00~0xFF地址作为与CPU交互数据的RAM区域,SuperIO w83627中配置寄存器CR07寄存器地址即是0x07,从0开始偏移了7个存储单元。可以理解为此片RAM区域也在独立编址,具体例子稍后补充。

注:http://www.cnblogs.com/hydah/archive/2012/04/10/2232117.html 此链接下的文件对此介绍的同样较好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: