当前位置:首页 » 服务存储 » 为什么要对存储器分段
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

为什么要对存储器分段

发布时间: 2022-09-05 04:58:36

‘壹’ 80486系统中,存储器为什么要分段分段的原则是什么

80386和80486cpu的地址线和数据线各为32,也就是说在实模式下该cpu访问的最大存储地址空间为2^32=4GB。那么如果我要访问的地址的空间起始地址超过了4GB呢?那怎么办,是不是就没办法了呢?
为解决这一问题,在这里提到的就是保护模式,保护模式下程序员可以获得更大的存储地址空间(即虚拟地址)。这样,对于80286来说,偏移量为16位,每个段最大为64KB,可提供的虚拟存储空间为1GB(2^30个字节)。对于386和486CPU来说,偏移量为32位,每个段最大为4GB,可提供的虚拟存储空间为2^46=64TB。保护模式下对存储器分段也就是这个原理,这也是为了方便管理存储器而采用的更有效的方法。后面也有比分段管理更高级的分页管理机制。当然,这是后话了。(这个和寄存器间接寻址类似却略有不同)。
没看懂的话建议您去看一些比较基础的书籍,原理性的东西。这本《微机原理》貌似就不错,呵呵。希望对你有所帮助。

‘贰’ 8086cpu储存器为什么采用分段

8086/8088系统中,存储器分段的主要目的是便于存储器的管理,使得可以用16位寄存器来寻址20位的内存空间。一个段最大为64KB,最小为16B。

存储器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。

由于存储器的个数和容量都有限,不可能把所有中间结果都存储在存储器中,所以,要对存储器进行适当的调度。根据指令的要求,管理安排适当的寄存器,避免操作数过多的传送操作。

8086/8088CPU可直接寻址1MB的存储器空间,直接寻址需要20位地址码,而所有内部寄存器都是16位的,只能直接寻址6KB,因此采用分段技术来解决。将1MB的存储空间分成若干逻辑段,每段最长64KB,最短16B。这些逻辑段在整个存储空间中可浮动。

‘叁’ 为什么8086对存储器要采用分段管理

8086是一个16位的结构,采用分段管理办法可形成超过16位的存储器物理地址,扩大对存储器的寻址范围(1MB,20位地址)。

这两个地址都是16位的,将这两个地址采用相加的方式组成20位地址去访问存储器。在8086系统的地址形成中,当段地址确定后,该段的寻址范围就已经确定,其容量不大于64KB。同时,通过修改段寄存器内容,可达到逻辑段在整个1MB存储空间中浮动。

(3)为什么要对存储器分段扩展阅读:

8086处理器的时钟频率介于4.77MHz(在原先的IBM PC频率)和10 MHz之间。8086 没有包含浮点指令部分(FPU),但是可以通过外接数学辅助处理器来增强浮点计算能力。Intel 8087 是标准版本。

分段管理是管理若干分段组成的作业,且按分段来进行存储分配。实现分段管理的关键在于,如何保证分段(二维)地址空间中的一个作业在线性(一维)的存储空间中正确运行。也就是说,如何把分段地址结构变换成线性的地址结构。

‘肆’ 8086系统中的存储器为什么要采用分段结构有什么好处

8086CPU中的寄存器都是16位的,16位的地址只能访问64KB的内存。086系统中的物理地址是由20根地址总线形成的,要做到对20位地址空间进行访问,就需要两部分地址,在8086系统中,就是由段基址和偏移地址两部分构成。

这两个地址都是16位的,将这两个地址采用相加的方式组成20位地址去访问存储器。在8086系统的地址形成中,当段地址确定后,该段的寻址范围就已经确定,其容量不大于64KB。同时,通过修改段寄存器内容,可达到逻辑段在整个1MB存储空间中浮动。

各个逻辑段之间可以紧密相连,可以中间有间隔,也可以相互重叠(部分重叠,甚至完全重叠)。采用段基址和偏移地址方式组成物理地址的优点是:满足对8086系统的1MB存储空间的访问,同时在大部分指令中只要提供16位的偏移地址即可。

(4)为什么要对存储器分段扩展阅读

把段的起始单元的物理地址除以16的结果称为段地址,它为16位,写成十六进制是4位:XXXXH。显然,段地址决定了段在lMB空间中的位置。段内各存储单元相对段的起始单元都有一个距离,称为段内偏移量。

在对内存进行操作时,段地址先确定下来,然后给出不同的段内偏移量,就可以实现段内的寻址。段地址也是可以改变的,即段在1MB空间中的位置是可变的,因而可实现1MB的全范围寻址。

由于采用了分段结构,因此可以把每一个存储单元看成是具有两种类型的地址:物理地址和逻辑地址。物理地址就是实际地址,它具有20位的地址值,它惟一地标识1MB存储空间的某一存储单元。CPU与存储器之间的信息交换都是使用这个物理地址。

逻辑地址是编程时所使用的地址,它由段地址和段内偏移量组成。逻辑地址和物理地址的关系为:物理地址=段地址16+段内偏移量。由逻辑地址形成物理地址是由总线接口部件中的电路实现的。

‘伍’ 为什么要对寄存器进行分段管理,分段管理的原则是什么

应该是对存储器分段管理吧。
因为在8086系统中,寄存器是16位的,而8086却有20根地址线,8086的寻址是通过段地址与偏移地址合成的,这样的话,如果用cs来指明段地址,用IP指出偏移地址,由于IP是16位的,它能表示的偏移地址只有0000H--FFFFH,也就是共64K,而8086地址线有20根,也就是可以寻址空间为1M,这样就需要通过分段管理,每段最多为64K,最小为16个字节,并且每段必须以16的倍数开始,也就是说每段的最后一位必须为0,如00000H,10000H,00010H,等。
并且段与段之间可以重叠。

‘陆’ 8086/8088CPU使用的存储器为什么要分段

8086/8088系统中,存储器为什么要分段?一个段最大为多少字节?最小为多少字节? 解:分段的主要目的是便于存储器的管理,使得可以用16位寄存器来寻址20位的内存空间。一个段最大为64KB,最小为16B。

‘柒’ 怎样理解存储器地址的分段,老是不理解为啥要分段啊

8086CPU的数据线是16位的(16位机),所以,CPU内部的寄存器包括地址寄存器都是16位的,因而对地址的操作也只能是16位,也就是说,对于8086,操作数的寻找限制在64 K范围内。但8086有20条地址线,它的直接寻址能力为1M字节。这样就产生了一个矛盾,即16位地址寄存器如何去寻址20位的存储器的物理地址。解决这个问题的办法就是8086对存储器进行分段管理,将1 M字节的内存储器,分为若干个存储区域,每个区域称为一个段,每一段都在一个连续的区域内,容量最大为64 K字节。
合成物理地址时,将段地址左移4位(扩展成20位),再加上16位偏移量。段地址是由8086中的段寄存器提供的。物理地址形成公式为:物理地址=(段寄存器)×16+16位偏移量。

‘捌’ 8086cpu为什么要对存储器采用分段管理一个逻辑段最多包含多少个存储单元

只要学过汇编的人都知道8086处理器对存储器采用分段管理机制,为什么要这么设计呢?采用线性地址直接访问存储器该多好,直接明了。

其实Intel的工程师绝对不会那么傻,当然是有他的道理:

首先,地址总线有20根,可寻址1M的地址空间,而寄存器是16位,仅能寻址64K,总不能白白浪费多出来的空间。要知道在8086的那个年代,内存是非常昂贵的。

所以Intel的工程师想出了分段管理的方法:段地址x4+偏移地址。

另外,分段管理还有利于代码的组织,对内存实现有效的管理。例如,将代码段、数据段隔离等。

学习过程中,如果按照书中所描述,照搬的学习,既不方便记忆,也不能将知识融会贯通。

‘玖’ 内存为什么要分段 分成多少种段 段与段寄存器的区别

8086CPU有20根地址线,最大可寻址内存空间为1MB。而8086的寄存器只有16位,指令指针(IP)和变址寄存器(SI、DI)也是16位的。用16位的地址寻址1MB空间是不可能的。所以就要把内存分段,也就是把1MB空间分为若干个段,每段不超过64KB,在8086中设置4个16位的段寄存器,用于管理4种段:CS是代码段,DS是数据段,SS是堆栈段,ES是附加段。
把内存分段后,每一个段就有一个段基址,段寄存器保存的就是这个段基址的高16位,这个16位的地址左移四位(后面加上4个0)就可构成20位的段基址。

‘拾’ 8086/8088CPU使用的存储器为什么要分段怎么分段

8086/8088系统中,存储器为什么要分段。

一个段最大为多少字节。

最小为多少字节。

解:分段的主要目的是便于存储器的管理,使得可以用16位寄存器来寻址20位的内存空间。

一个段最大为64KB,最小为16B。

(10)为什么要对存储器分段扩展阅读:

段的开始地址总是是16的倍数。即:若一个段的起始地址为0000h,那么另一个段(重叠第一个段)的起始地址将为:0010h(即16),下一个段的起始地址将为0020h(32)。

一个段的段号由其物理地址的前4个16进制数组成。(如:FFFF)

通常,程序只写出偏移量(从段的第一个字节到要定位地址的距离),段号可以通过上下文判断。偏移量大小从0000到FFFF。