存储器系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

3.1存储器概述3.1.1存储器的分类1.按存储介质分类(1)半导体存储器(2)磁表面存储器(3)光存储器2.按存取方式分类(1)随机存取存储器RAM(RandomAccessMemory)①静态随机存取存储器SRAM②动态随机存取存储器DRAM(2)只读存储器ROM(ReadOnlyMemory)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.28086存储器结构3.2.1存储器的组织8086/8088系统的存储器空间以字节为单位储存信息。每个存储单元地址由20位二进制数组成,地址从0开始编号,依次增1,为了书写方便,用5位十六进制数表示,其物理地址范围是00000H~FFFFFH,且地址码为无符号数。存储器的容量是指存储器所具有的字节数,通常以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逻辑地址与物理地址逻辑地址:段地址:偏移地址如:DS:DAT1返回本章首页计算机中信息的单位二进制位Bit:存储一位二进制数:0或1字节Byte:8个二进制位,D7~D0字Word:16位,2个字节,D15~D0双字DWord:32位,4个字节,D31~D0最低有效位LSB:数据的最低位,D0位最高有效位MSB:数据的最高位,对应字节、字、双字分别指D7、D15、D31位数据的存储格式D7D000000H78H00001H56H00002H12H00003H34H00004H00005H00006H低地址D7D0字节D15D0字D31D0双字每个存储单元都有一个编号;被称为存储器地址每个存储单元存放一个字节的内容0002H单元存放有一个数据34H表达为[0002H]=34H多字节数据存放方式多字节数据在存储器中占连续的多个存储单元:存放时,低字节存入低地址,高字节存入高地址;表达时,用它的低地址表示多字节数据占据的地址空间。图2.3中2号“字”单元的内容为:[0002H]=1234H2号“双字”单元的内容为:[0002H]=78561234H80x86处理器采用“低对低、高对高”的存储形式,被称为“小端方式LittleEndian”。相对应还存在“大端方式BigEndian”。3.28086存储器结构计算机通过存储单元的地址来访问其内容的。8086/8088CPU是16位的微处理器,访问时既可以按字节来操作,也可以按字来处理。一个字(即16位)占据连续的两个存储单元。若将一个字存入存储器,需要遵循“小端方式”的规则,即:①一个字占据两个相邻的存储单元。②低位字节存入低地址,高位字节存入高地址。③字的地址由低字节地址来表示,如字3456H的地址号为20000H。同样,将一个双字存入存储器时,也需要遵循“小端方式”的规则3.28086存储器结构3.2.2存储器分段和物理地址的形成1.分段方法存储器是计算机的重要组成部分,当要访问某个存储单元时,首先必须获得该单元的物理地址。于8086地址总线为20条,可寻址的最大内存空间为220(1M)字节,其物理地址范围是00000H~FFFFFH。在8086中,CPU内部寄存器都是16位,直接寻址能力为216(64KB),地址范围是0000H~FFFFH。8086/8088又把1MB的存储空间划分成若干个逻辑段,逻辑地址由段基址和偏移地址两部分组成。段的起始单元地址叫做段基地址(简称段基址),它为16的整数倍。段基址存放于段寄存器CS,DS,SS,ES中。每个逻辑段有相应的逻辑地址LA(LogicalAddress),表示为:逻辑地址(LA)=段地址:偏移地址(EA)。存储器的分段管理8086CPU有20条地址线最大可寻址空间为220=1MB物理地址范围从00000H~FFFFFH8086CPU将1MB空间分成许多逻辑段(Segment)每个段最大限制为64KB段地址的低4位为0000B这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址物理地址和逻辑地址对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000H~FFFFFH。分段后在用户编程时,采用逻辑地址,形式为段基地址:段内偏移地址逻辑地址段地址说明逻辑段在主存中的起始位置8086规定段地址必须是模16地址:xxxx0H省略低4位0000B,段地址就可以用16位数据表示,就能用16位段寄存器表达段地址偏移地址说明主存单元距离段起始位置的偏移量每段不超过64KB,偏移地址也可用16位数据表示物理地址和逻辑地址的转换将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址一个物理地址可以有多个逻辑地址逻辑地址1460:100、1380:F00物理地址14700H14700H14600H+100H14700H13800H+F00H14700H段地址左移4位加上偏移地址得到物理地址段寄存器和逻辑段8086有4个16位段寄存器CS(代码段)指明代码段的起始地址SS(堆栈段)指明堆栈段的起始地址DS(数据段)指明数据段的起始地址ES(附加段)指明附加段的起始地址每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途3.28086存储器结构2.物理地址的计算8086/8088CPU中有一个地址加法器,它将段寄存器提供的段地址自动乘以10H(即左移4位),然后与16位的偏移地址相加,并锁存在物理地址锁存器中,如图3.3所示。如逻辑地址0001H:0010H生成物理地址时,将段地址0001H左移4位为00010H,再与偏移地址0010H相加即可得到物理地址00020H。20位的物理地址由16位段地址和16位偏移地址合成。3.28086存储器结构物理地址的计算方法如下:物理地址(PA)=段地址×10H+偏移地址(EA)也就是说,将段地址左移4位再加上偏移地址就形成物理地址。说明:图3.3①存储器中的存储单元地址可以使用20位的物理地址表示,也可以使用逻辑地址表示,即使用“段地址:偏移地址”的方式表示。逻辑地址是在程序中使用的,物理地址是由系统转换自动生成的。②每个内存单元具有惟一的物理地址,但可以使用不同的逻辑地址来描述,例如0001H:0010H对应唯一的物理地址00020H,但该物理地址又可以由逻辑地址0002:0000H,等来描述。③除非专门指定,一般情况下,各段在存储器中的分配由操作系统负责。④段的大小由程序决定,因为使用16位偏移地址,所以每个段不能超过64KB,当然也不一定必须等于64KB。16位段地址存放在某个段寄存器中。3.28086存储器结构[例3.2.3]:计算下列逻辑地址对应的物理地址。①2017:000AH②2010:007AH③2410:0031H分析:逻辑地址是以“段地址:偏移地址”的形式表达存储器地址的,而物理地址由如下公式计算得出:物理地址(PA)=段地址×16+偏移地址(EA)解:①物理地址(PA)=2017H×10H+000AH=2017AH②物理地址(PA)=2010H×10H+007AH=2017AH③物理地址(PA)=2410H×10H+0021H=24121H.3.28086存储器结构3.段的种类8086/088采用分段内存管理机制,允许程序员将程序划分为相对独立的多个段,这些段各有各的用途。8086/8088主要包括下列4种类型的段:①代码段用来存放正在运行的程序的指令序列。②数据段用来存放当前运行程序所用到的数据。③堆栈段定义作为堆栈使用的内存区域。堆栈是一种数据结构,它开辟了一个以‘后进先出’方式访问的存储区。④附加段是附加的数据段,它是一个辅助的数据区。例如:取指令时(CS)=2000H,(IP)=3500H,则被取指令的物理地址=(CS)×10H+(IP)=20000H+3500H=23500H。又如:取数时(DS)=1000H,段内偏移地址=1000H,则被取数据的物理地址=(DS)×10H+1000H=10000H+1000H=11000H。3.28086存储器结构3.2.3堆栈和堆栈操作1.堆栈的概念堆栈是在存储器中开辟的一个特殊的存储区域,该区域的一端固定(称为固定端),另一端活动(称为活动端),且只允许数据从活动端进出。堆栈中数据的存取也遵循“先进后出”的原则。我们把堆栈的活动端称为栈顶,固定端称为栈底。堆栈是按‘先进后出’的原则在内存中组织的。8086/8088的堆栈的伸展方向是从高地址向低地址。8086/8088的堆栈操作都是字操作。将一个数据压入堆栈称为进栈,进栈时SP自动减2,进栈的字就存放在新增加的两个单元内。把一个数从栈顶弹出称为出栈,出栈时SP自动加2,弹出的字是SP让出的两个单元的内容.3.28086存储器结构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.28086存储器结构(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.28086存储器结构3.2.4特殊的内存区域8088/8086系统中,有些内存区域的作用是固定的,用户不能随便使用,如:中断矢量区:0

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功