组织存储器主要包括两项任务:确定存储器的组织和连接方式、分配存储空间。前者的主要目的是根据微处理器的总线参数和内存的特性来决定如何连接微处理器和主存储器以及可能存在的板上高速缓存。后者主要是将存储空间进行规划和分配。
存储器组织与连接方式主要受制于微处理器的总线参数与内存芯片的特性,其关键在于如何匹配微处理器数据总线的宽度和内存芯片数据宽度。内存的编址习惯上是按照字节编址的,存储器芯片的数据宽度一般也是一个字节的8位,而微处理器数据总线的宽度是不同的:6502、8088等为8位,8086、80286是16位,80386、80486为32位,而Pentium及其后的X86系列微处理器则是64位。这种数据宽度上的差别就要求不同的微处理器使用不同的方式来组织其存储器。
由于数据总线的宽度与存储器芯片的数据宽度一致,象6502、8088这样的8位微处理器在存储器组织和连接上就比较简单。以8088微处理器为例,只要将其1 MB的寻址空间线性排列,并将存储器芯片的数据引脚连接到微处理器的数据总线上即可,而无需考虑奇偶地址的问题。
对于像8086这样的16位微处理器,存储器的组织与连接就要复杂一些。和8088一样,8086具有20位地址线,其寻址空间为1 MB。但是这1 MB的寻址空间被分成两个512 KB的存储体,存储体的选择依赖于最低位地址线A0。两个存储体分别是偶地址存储体和奇地址存储体。在存储体内部的寻址则由剩下的19位地址线负责。(见图2-19)
基于16位宽外部总线的8086微处理器在构建微型计算机系统的时候就不可避免地遇到奇偶地址的问题。在这时,8086微处理器依靠BHE和A0两个引脚信号的组合完成对几种不同读写情况的存储体选择与驱动。存储体与总线的连接如图2-20所示。
图2-19 存储体地址空间分配
图2-20 存储体与8086微处理器外部总线的连接
在不同的读写条件下,BHE和A0取不同的组合。
●从偶地址读写一个字节(8 bits)时,=1(无效),A0=0(偶地址),这时数据通过数据线DB7~DB0传递,DB15~DB8上的数据被忽略,需要一个总线周期。
●从偶地址读写一个字(16 bits)时,=0(有效),A0=0(偶地址),这时数据使用DB15~DB0传递,需要一个总线周期。(www.xing528.com)
●从奇地址读写一个字节(8 bits)时,=0(有效),A0=1(奇地址),这时数据通过数据线DB15~DB8传递,DB7~DB0上的数据被忽略,需要一个总线周期。
●从奇地址读写一个字(16 bits)时,由于结构的限制,操作需要两个总线周期完成。第一个周期内,=0,A0=1,在DB15~DB8上传输16 bits字中的低8位;第二个周期内,BHE=1,A0=0,在DB7~DB0上传输16 bits字中的高8位。由于从奇地址读写一个字需要更长的时间,所以在编程的时候,字变量应当分配到偶地址开始的存储单元。不仅仅8086微处理器是这样,对于更加高端的32位数据总线的微处理器(如80386)及64位数据总线微处理器(如Pentium),则要求编程时尽可能做到4字节对齐或8字节对齐,各种高级语言的编译器也会尽可能地满足这种需求,以提高程序的运行速度。
16位微处理器8086通过BHE和A0两个信号的不同组合实现对16位中高低两个字节的控制。对于32位微处理器(80386、80486)和64位微处理器(Pentium等),我们可以采用类似的方式来实现微处理器与存储器的连接,只是32位微处理器需要B~B四个字节使能信号来分别控制32位中的四个字节,而64位微处理器需要~八个字节使能信号来分别控制64位中的八个字节。
规划与分配存储空间也是存储器组织的一个重要任务,而这种规划和微处理器的设计以及BIOS等软件系统之间还有着千丝万缕的联系。在基于8086/8088构建微型计算机时,根据传统的IBM PC对存储器空间的使用分配,有一些地址空间是IBM PC的专用存储区域,这些区域不能被侵占。这些特殊区域包括。
●00000~003FFH:中断向量表存储空间,用来存放256个中断服务程序的入口地址,每个中断向量占据4个字节。
●A0000~BFFFFH:128 KB保留区,用作字符/图形显示缓冲器区域。单色显示适配器只使用4 KB的显示缓存区,而彩色字符/图形显示适配器需要16 KB空间作为显示缓冲区。对于高分辨率的显示适配器而言,则需要更大容量的缓冲区。
●B0000~B0FFFH:4 KB单色显示器显示缓冲区,存放当前屏幕显示字符的ASCⅡ码。
●B8000~BFFFFH:8 KB彩色显示器显示缓冲区,存放当前屏幕像素代码。
●C0000~FFFFFH:256KB ROM区。其中的前192 KB存放系统的控制ROM,包括高分辨率显示适配器的控制ROM及硬盘驱动器的控制ROM等。若用户要安装固化在ROM中的程序,则可使用192 KB ROM区中尚未使用的区域。后64 KB存储器是基本系统ROM区。一般最后40 KB是基本ROM,其中的8 KB为基本输入/输出系统BI-OS,32 KB为ROM BASIC。其中FFFF0H为系统复位入口,RESET信号将导致系统从该地址开始运行。
从上面的描述我们可以看出,IBM PC实际上可以使用的RAM空间为1 MB-128 KB-256 KB=640 KB,即A0000H以下的地址空间。这也是在PC发展早期PC-DOS(MS-DOS)操作系统640 KB空间限制的由来。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。