资源描述
第3章 存储器系统,本章重点: 理解存储器的分类 存储器的层次结构:cache、内存、外存。掌握8086存储器的结构:存储器的物理地址,逻辑段概念,物理地址的计算。 掌握堆栈与堆栈操作。了解存储器与CPU的连接及存储芯片的扩展。,3.1 存储器概述,3.1.1 存储器的分类 1按存储介质分类 (1)半导体存储器 (2)磁表面存储器 (3)光存储器 2按存取方式分类 (1)随机存取存储器RAM(Random Access Memory) 静态随机存取存储器SRAM 动态随机存取存储器DRAM (2)只读存储器ROM(Read Only Memory),3.1 存储器概述,3按存储器在计算机系统中的作用分类 (1)主存储器 (2)外存储器 (3)高速缓冲存储器 (4)CMOS存储器 4内存条(DRAM) (1)内存条的分类 SIMM(单列直插内存模块):分30线和72线两种。 DIMM(双列直插内存模块):分72线和168线。 RIMM(高速率直插内存模块):采用184线结构。,3.1 存储器概述,(2)主流内存条的类型 SDRAM内存条 DDRSDRAM内存条 RDRAM内存条 3.1.2 存储器的主要性能指标 存储器的主要性能指标包括:存储容量、存取速度、可靠性及性能价格比。,3.1 存储器概述,3.1.3 存储系统的层次结构 为了解决存储容量、存取速度和价格之间的矛盾,通常把各种不同存储容量、不同存取速度的存储器,按一定的体系结构组织起来,形成一个统一整体的存储系统。 由高速缓冲存储器、内存储器、外存储器构成的三级存储系统可以分为两个层次,其中高速缓冲存储器和内存间称为Cache-内存层次,内存和外存间称为内存-外存层次。 三级存储系统总的效果是:存取速度接近于Cache水平,存储容量非常之大,整个价格也比较合理。其中快存主要为获取速度,使存取速度能和中央处理器的速度相匹配;辅存追求大容量,以满足对计算机的容量要求;内存则介于两者之间,要求其具有适当的容量,能容纳较多的核心软件和用户程序,还要满足系统对速度的要求。,3.2 8086存储器结构,3.2.1 存储器的组织 8086/8088系统的存储器空间以字节为单位储存信息。 每个存储单元地址由20位二进制数组成,地址从0开始编号,依次增1,为了书写方便,用5位十六进制数表示,其物理地址范围是00000HFFFFFH,且地址码为无符号数。 存储器的容量是指存储器所具有的字节数,通常以210=1024B为基本单位,称为1KB。为了表示更大的容量,也使用MB(兆字节),GB(吉字节)等为单位,其中: 1KB =210B=1024B 1MB=220B=1024KB 1GB=230B=1024MB,存储器的内容,存储器的地址,物理地址的形成: 取指令:物理地址=CS*24 + IP 取OP数:物理地址=DS(ES)*24 + 偏移量 堆栈OP:物理地址=SS*24 + SP,2. 逻辑地址与物理地址,逻辑地址:段地址:偏移地址,如:DS:DAT1,返回本章首页,计算机中信息的单位 二进制位Bit:存储一位二进制数:0或1 字节Byte:8个二进制位,D7D0 字Word:16位,2个字节,D15D0 双字DWord:32位,4个字节,D31D0 最低有效位LSB:数据的最低位,D0位 最高有效位MSB:数据的最高位,对应字节、字、双字分别指D7、D15、D31位,数据的存储格式,低地址,每个存储单元都有一个编号;被称为存储器地址 每个存储单元存放一个字节的内容,0002H单元存放有一个数据34H 表达为0002H34H,多字节数据存放方式,多字节数据在存储器中占连续的多个存储单元: 存放时,低字节存入低地址,高字节存入高地址; 表达时,用它的低地址表示多字节数据占据的地址空间。,图2.3中2号“字”单元的内容为: 0002H = 1234H 2号“双字”单元的内容为: 0002H = 78561234H,80 x86处理器采用“低对低、高对高”的存储形式,被称为“小端方式Little Endian”。 相对应还存在“大端方式Big Endian”。,3.2 8086存储器结构,计算机通过存储单元的地址来访问其内容的。80868088CPU是16位的微处理器,访问时既可以按字节来操作,也可以按字来处理。一个字(即16位)占据连续的两个存储单元。 若将一个字存入存储器,需要遵循“小端方式”的规则,即: 一个字占据两个相邻的存储单元。 低位字节存入低地址,高位字节存入高地址。 字的地址由低字节地址来表示,如字3456H的地址号为20000H。 同样,将一个双字存入存储器时,也需要遵循“小端方式”的规则,3.2 8086存储器结构,3.2.2 存储器分段和物理地址的形成 1分段方法 存储器是计算机的重要组成部分,当要访问某个存储单元时,首先必须获得该单元的物理地址。 于8086地址总线为20条,可寻址的最大内存空间为220(1M)字节,其物理地址范围是00000HFFFFFH。在8086中,CPU内部寄存器都是16位,直接寻址能力为216(64KB),地址范围是0000HFFFFH。 80868088又把1MB的存储空间划分成若干个逻辑段,逻辑地址由段基址和偏移地址两部分组成。段的起始单元地址叫做段基地址(简称段基址),它为16的整数倍。段基址存放于段寄存器CS,DS,SS,ES中。 每个逻辑段有相应的逻辑地址LA(Logical Address),表示为:逻辑地址(LA)=段地址:偏移地址(EA)。,存储器的分段管理,8086CPU有20条地址线 最大可寻址空间为2201MB 物理地址范围从00000HFFFFFH 8086CPU将1MB空间分成许多逻辑段(Segment) 每个段最大限制为64KB 段地址的低4位为0000B 这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址,物理地址和逻辑地址,对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000HFFFFFH。 分段后在用户编程时,采用逻辑地址,形式为 段基地址 : 段内偏移地址,分隔符,逻辑地址,段地址说明逻辑段在主存中的起始位置 8086规定段地址必须是模16地址:xxxx0H 省略低4位0000B,段地址就可以用16位数据表示,就能用16位段寄存器表达段地址 偏移地址说明主存单元距离段起始位置的偏移量 每段不超过64KB,偏移地址也可用16位数据表示,物理地址和逻辑地址的转换,将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址 一个物理地址可以有多个逻辑地址,逻辑地址1460:100、1380:F00 物理地址14700H 14700H,段寄存器和逻辑段,8086有4个16位段寄存器 CS(代码段)指明代码段的起始地址 SS(堆栈段)指明堆栈段的起始地址 DS(数据段)指明数据段的起始地址 ES(附加段)指明附加段的起始地址 每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途,各个逻辑段独立,各个逻辑段重叠,1MB空间的分段,1MB空间最多能分成多少个段? 每隔16个存储单元就可以开始一个段, 所以1MB最多可以有: 2201621664K 个段 1MB空间最少能分成多少个段? 每隔64K个存储单元开始一个段, 所以1MB最少可以有: 22021616 个段,3.2 8086存储器结构,2物理地址的计算 80868088CPU中有一个地址加法器,它将段寄存器提供的段地址自动乘以10H(即左移4位),然后与16位的偏移地址相加,并锁存在物理地址锁存器中,如图3.3所示。如逻辑地址0001H:0010H生成物理地址时,将段地址0001H左移4位为00010H,再与偏移地址0010H相加即可得到物理地址00020H。 20位的物理地址由16位段地址和16位偏移地址合成。,3.2 8086存储器结构,物理地址的计算方法如下: 物理地址(PA)=段地址10H偏移地址(EA) 也就是说,将段地址左移4位再加上偏移地址就形成物理地址。 说明: 图3.3 存储器中的存储单元地址可以使用20位的物理地址表示,也可以使用逻辑地址表示,即使用“段地址:偏移地址”的方式表示。逻辑地址是在程序中使用的,物理地址是由系统转换自动生成的。 每个内存单元具有惟一的物理地址,但可以使用不同的逻辑地址来描述,例如0001H:0010H对应唯一的物理地址00020H,但该物理地址又可以由逻辑地址0002:0000H,等来描述。 除非专门指定,一般情况下,各段在存储器中的分配由操作系统负责。 段的大小由程序决定,因为使用16位偏移地址,所以每个段不能超过64KB,当然也不一定必须等于64KB。16位段地址存放在某个段寄存器中。,3.2 8086存储器结构,例3.2.3:计算下列逻辑地址对应的物理地址。 2017:000AH 2010:007AH 2410:0031H 分析:逻辑地址是以“段地址:偏移地址”的形式表达存储器地址的,而物理地址由如下公式计算得出:物理地址(PA)=段地址16偏移地址(EA) 解: 物理地址(PA)=2017H10H+000AH=2017AH 物理地址(PA)=2010H10H+007AH=2017AH 物理地址(PA)=2410H10H+0021H=24121H,3.2 8086存储器结构,3段的种类 8086/088采用分段内存管理机制,允许程序员将程序划分为相对独立的多个段,这些段各有各的用途。80868088主要包括下列4种类型的段: 代码段用来存放正在运行的程序的指令序列。 数据段用来存放当前运行程序所用到的数据。 堆栈段定义作为堆栈使用的内存区域。堆栈是一种数据结构,它开辟了一个以后进先出方式访问的存储区。 附加段是附加的数据段,它是一个辅助的数据区。 例如:取指令时(CS)=2000H,(IP)=3500H,则被取指令的物理地址=(CS)10H+(IP)=20000H+3500H=23500H。 又如:取数时(DS)=1000H,段内偏移地址=1000H,则被取数据的物理地址=(DS)10H+1000H=10000H+1000H=11000H。,3.2 8086存储器结构,3.2.3 堆栈和堆栈操作 1堆栈的概念 堆栈是在存储器中开辟的一个特殊的存储区域,该区域的一端固定(称为固定端),另一端活动(称为活动端),且只允许数据从活动端进出。 堆栈中数据的存取也遵循“先进后出”的原则。我们把堆栈的活动端称为栈顶,固定端称为栈底。堆栈是按先进后出的原则在内存中组织的。 80868088的堆栈的伸展方向是从高地址向低地址。80868088的堆栈操作都是字操作。将一个数据压入堆栈称为进栈,进栈时SP自动减2,进栈的字就存放在新增加的两个单元内。把一个数从栈顶弹出称为出栈,出栈时SP自动加2,弹出的字是SP让出的两个单元的内容 .,3.2 8086存储器结构,2堆栈操作 它可分为两类操作,分别为进栈和出栈。进栈时是从高地址到低地址,出栈时是从低地址到高地址。进栈操作指令为PUSH,出栈操作为POP,后面章节会详细介绍。 (1)进栈 把一个数据压入堆栈,称为进栈。将一个数据压入堆栈的过程是:SP先自动减2,指出新的栈顶,然后再将数据入栈。 例3.2.5:设AX=1234H,SS=1000H,SP=0040H,将寄存器AX的内容压入堆栈。 首先SP-1,将高字节数据12H压入1000FH单元,然后SP再减1,将低字节数据34H压入1000EH单元,操作后SP=100EH。,3.2 8086存储器结构,(2)出栈 将一个数据从栈中弹出,称为出栈。弹出的过程是:将数据从栈顶弹出送相应的寄存器单元,再将SP加2,指示新的栈顶。 例3.2.6:将堆栈中字单元数据从堆栈中弹出送寄存器AX中。 首先从1000EH单元弹出低字节数据34H到AL,把SP加1指向当前栈顶;然后从1000FH单元弹出高字节数据12H到AH中,再把SP加1指向新的栈顶,操作后SP=10040H。 栈的位置由堆栈段寄存器SS和堆栈指示器SP规定。SS负责给出当前堆栈段的基址,SP指示当前堆栈段的栈顶的偏移地址。注意这里的基址,是指SS的内容,而非堆栈的栈底。8086规定:堆栈的操作数字长是16位.,3.2 8086存储器结构,3.2.4 特殊的内存区域 8088/8086系统中,有些内存区域的作用是固定的,用户不能随便使用,如: 中断矢量区:00000H003FFH共1K字节,用以存放256种中断类型的中断矢量,每个中断矢量占用4个字节,共2564=1024=1K 显示缓冲区:B0000HB0F9FH约4000(25802)字节,是单色显示器的显示缓冲区,存放文本方式下,所显示字符的ASC码及属性码;B8000HBBF3FH约16K字节,是彩色显示器的显示缓冲区,存放图形方式下,屏幕显示象素的代码。 启动区:FFFF0HFFFFFH共16个单元,用以存放一条无条件转移指令的代码,转移到系统的初始化部分。,3.3 存储器与CPU的接口,3.3.1 存储器芯片的连接与扩展 1. 存储器芯片与CPU的连接 (1) 地址线的连接 一般将CPU地址线的低位地址与存储器芯片对应的低位地址相连接。CPU的高位地址线用作存储器芯片扩展,或者其他用途。 (2) 数据线的连接 (3) 读/写命令线的连接 一般情况下,存储器的读/写命令线可以直接连接到CPU的读/写控制端,通常高电平为读,低电平为写。 注意: 当CPU和存储器的读、写控制端是分开的,需要单独连接; 当CPU和存储器的读、写控制端有一个是分开的,另一个是复用的,则需要设计相应的逻辑电路来连接。 (4) 片选信号线的连接,3.3 存储器与CPU的接口,2. 存储器芯片的扩展 存储器芯片扩展的方法有以下两种: (1)存储器芯片的位扩充 适用场合:存储器芯片的容量满足存储器系统的要求,但其字长小于存储器系统的要求。例3.3.1:用1K4的2114芯片构成lK8的存储器系统。 分析:由于每个芯片的容量为1K,故满足存储器系统的容量要求。但由于每个芯片只能提供4位数据,故需用2片这样的芯片,它们分别提供4位数据至系统的数据总线,以满足存储器系统的字长要求。 设计要点: 将每个芯片的10位地址线按引脚名称一一并联,按次序逐根接至系统地址总线的低10位。 数据线则按芯片编号连接,1号芯片的4位数据线依次接至系统数据总线的D0-D3,2号芯片的4位数据线依次接至系统数据总线的D4-D7。 两个芯片的端并在一起后接至系统控制总线的存储器写信号(如CPU为8086/8088,也可由和M或IO/的组合来承担)。 引脚也分别并联后接至地址译码器的输出,而地址译码器的输入则由系统地址总线的高位来承担。,3.3 存储器与CPU的接口,(2)存储器芯片的字扩充 适用场合:存储器芯片的字长符合存储器系统的要求,但其容量太小。 例3.3.2:用2K8的2716存储器芯片组成8K8的存储器系统。 分析:由于每个芯片的字长为8位,故满足存储器系统的字长要求。但由于每个芯片只能提供2K个存储单元,故需用4片这样的芯片,以满足存储器系统的容量要求。 设计要点:同位扩充方式相似。 先将每个芯片的11位地址线按引脚名称一一并联,然后按次序逐根接至系统地址总线的低11位。 将每个芯片的8位数据线依次接至系统数据总线的D0-D7。 两个芯片的端并在一起后接至系统控制总线的存储器读信号(这样连接的原因同位扩充方式), 它们的引脚分别接至地址译码器的不同输出,地址译码器的输入则由系统地址总线的高位来承担。,3.3 存储器与CPU的接口,3.3.2 存储器与CPU的连接 1. 8086CPU的最小模式与静态RAM的连接 存储器芯片选用静态RAM6116,这是一个2K8位的存储器芯片。在最小方式连接下,用两片6116构成了2KB的16位数据存储器,8086可以通过软件读取字节、字和双字数据。 2、ROM与8086CPU的连接 只读存储器与8086系统总线连接,可以实现程序存储器。,3.3 存储器与CPU的接口,3、在连接中需要注意的问题 (1)CPU总线的负载能力 在设计CPU芯片时,一般考虑其输出线的直流负载能力,为带一个TTL负载。现在的存储器一般都为MOS电路,直流负载很小. (2)CPU的时序和存储器的存取速度之间的配合问题 CPU在取指和存储器读或写操作时,是有固定时序的,用户要根据这些来确定对存储器存取速度的要求,或在存储器已经确定的情况下,考虑是否需要Tw周期,以及如何实现。 (3)存储器的地址分配和片选问题 内存通常分为RAM和ROM两大部分,而RAM又分为系统区(即机器的监控程序或操作系统占用的区域)和用户区,用户区又分成数据区和程序区,ROM的分配也类似,所以内存的地址分配是一个重要的问题。 (4)控制信号的连接 CPU在与存储器交换信息时,通常有以下几个控制信号(对8086来说):/M(IO/),,以及WAIT信号。这些信号如何与存储器要求的控制信号相连,以实现所需的控制功能。,习题,一、选择题 1主存和外存相比,其特点是( )。 A容量大、速度快、成本低 B容量大、速度慢、成本高 C容量小、速度快、成本低 D容量大、速度慢、成本低 2存储器的字长是指( )。 A存放在一个存储单元中的二进制代码组合 B存储单元的个数 C存放在一个存储单元中的二进制代码个数 D寄存器的位数 3微型计算机配置高速缓冲存储器是为了解决( )。 A主机与外设间速度不匹配问题 BCPU与辅助存储器间速度不匹配问题 C内存储器与辅助存储器间速度不匹配问题 DCPU与内存储器间速度不匹配问题 4CPU能直接访问的存储器是( )。 A内存储器 B软磁盘存储器 C硬磁盘存储器 D光盘存储器 5下列存储器中,断电后信息不会丢失的是( )。 ADRAM BSRAM CCache DROM 6SRAM是( )。 A静态随机存储器 B静态只读存储器 C动态随机存储器 D只读存储器 7EPROM是指( )。 A只读存储器 B可编程的只读存储器 C可擦除可编程的只读存储器 D可电擦除的只读存储器,习题,8在Pentium主板上,Cache存储器的作用是( )。 A提高硬盘与主存之间的传输速度 B提高软盘与主存之间的传输速度 C提高CPU与主存之间的传输速度 D提高Cache存储器与主存间的传输速度 9动态存储器芯片的工作频率按从高到低排列的顺序是( )。 ASDRAM、DDR SDRAM、RDRAM BRDRAM、DDRSDRAM、SDRAM CDDR SDRAM、SDRAM、RDRAM DRDRAM、SDRAM、DDR SDRAM 10.SDRAM内存条的结构是( )。 ARIMM结构184线,中央有一个缺口 BDIMM结构168线,边角有SPD芯片 CRIMM结构184线,中央有两个缺口 DDIMM结构184线,边缘有一个缺口 11.以下对存储器的描述中,错误的为( )。 AFlash Memory和EEPROM一样是非易失性的存储器 B构成存储器子系统时,SRAM比DRAM需要更多的辅助器件 CSRAM和DRAM断电后信息都会丢失 D. 通常SRAM的读/写速度比DRAM高,习题,12.在机器内部操作中,CPU与存储器之间的任何信息交换使用的都是( )。 A. 逻辑地址 B. 物理地址 C. 有效地址 D. 相对地址 13.下列叙述中有错误的一条是( )。 A16根地址线的寻址空间可达1MB B内存储器的存储单元是按字节编址的 CCPU中用于存放地址的寄存器称为地址寄存器 D地址总线上传送的只能是地址信息 14.20根地址线的寻址范围可达( )。 A512KB B1024KB C640KB D4096KB 15.微型计算机中常用的英文词bit的中文意思是( )。 A计算机字 B字节 C二进制位 D字长 16.下列描述中,正确的是( )。 A1MB=1000B B1MB=1000KB C1MB=1024B D1MB=1024KB 17.采用虚拟存储器的目的是( )。 A提高主存的速度 B扩大外存的容量 C扩大内存的寻址空间 D提高外存的速度,习题,二、填空题 1一般微型计算机存储器系统主要由_、高速缓冲存储器、辅助存储器以及管理这些存储器的硬件和软件组成 2微型计算机主存储器由半导体存储器_组成。 3按功能的不同,内存储器分为_,_,_和_。 4高速缓冲存储器是介于_和主存储器之间的一个容量小、但速度接近于_的存储器,一般装在CPU内部。 5RAM是一种既能写入又能读出的存储器。RAM只能在电源电压正常时工作,一旦断电则_。 6RAM的基本存储单元是双稳态触发器,每一个单元存放一位_信息,所存信息不需进行刷新。 7ROM是一种_的存储器,通常用来存放那些固定不变且不需要修改的程序。 8EEPROM的外形和管脚分布与EPROM极为相似,它不仅提供了全片擦除功能,还可以以_为单位进行擦除和改写,并且擦、写都在原系统中进行。,习题,9某计算机的主存为3KB,则内存地址寄存器需位就足够了。 10.设256KB的SRAM具有8条数据线,则它具有_条地址线。 11.虚拟存储器具有辅存的容量,而又具有接近_的存取速度。 12.8086 CPU可寻址的存储器空间范围是_。 13.如果一个堆栈区是从地址1250:0100开始的,(SP)=0052H,试写出相应的地址。 SS段的段地址为_; 栈顶的逻辑地址为_; 栈底的物理地址为_ 存入字数据后(SP)内容是_。,习题,14.已知当前数据段位于储存器的A1000H到B0FFFH范围内,问DS=_。 15.存储器的层次结构为_,_和_。 16.存储器的主要性能指标包括_,_,_及性能价格比。 17.8086地址总线为20条,可寻址的最大内存空间为_字节,其物理地址范围是_H。通常根据程序设计的需要将其划分为_、_、_和附加段ES等逻辑段。 18.堆栈中数据的存取也遵循“_”的原则。 19.堆栈操作分别为_和_操作。,习题,三、判断题 (1).通常主存、辅存都能够长期保存程序和数据。( ) (2).Intel80868088微型计算机中也配有高速缓存cache。( ) (3).通常存储器的容量是由数据总线位数决定。( ) (4).SRAM读出和写入操作后其内容不变。( ) (5).SRAM和DRAM存储器都需要对电容充电刷新。( ) (6).EPROM虽然是只读存储器,但在编程时可向内部写入数据。( ) (7).位扩展时,地址线并联,数据线也要并联。( ) (8).字扩展时,地址线、数据线并联,片选信号并联。( ) (9).若干SRAM存储芯片与8086CPU连接时,通常被分为奇和偶存储区。( ) (10).用2K4位芯片构成16KB ROM需要芯片共8片。( ),习题,四、简答题 1微型计算机中常用的存储器有哪些类型?它们各有何特点? 2试说明存储器系统的主要性能指标。 3什么是虚拟存储系统?什么是虚存容量和实存容量? 4什么是物理地址?什么是逻辑地址?如何计算物理地址? 5设一个由20个字组成的存储区,段起始地址为4701H,偏移地址EA为2012H。分别计算该存储区的首单元的物理地址及末单元的物理地址是多少? 6堆栈的意义为何?简述堆栈的基本操作?,习题,7某程序数据段中存有两个数据字1234H和5A6BH,若已知DS=5AA0H,它们的偏移地址分别为245AH和3245H,试画出它们在储存器中的存放情况 8一个存储器系统包括2K RAM和8K ROM,分别用1K4的2114芯片和2K8的2716芯片组成。要求ROM的地址从1000H开始,RAM的地址从3000H开始。完成硬件连线及相应的地址分配表。 9设有一个14位地址和8位字长的存储器,问: 存储器能存储多少信息? 如果存储器由位芯片组成,需要多少片? 需用哪几位高位地址来做片选译码产生芯片选择信号?,逻辑段分配,
展开阅读全文