当前位置:首页 > 内存 > 正文

内存按字节编址

  • 内存
  • 2024-06-09 01:45:12
  • 9274

一、8086系统中存储器按字节编址首先,这个地址不是物理地址而是线性地址。8086线性地址计算就是上面的答案。
寻址空间由处理器的地址线数量决定,因为8086只有20条地址线,所以它的寻址容量只有2^20字节=1MB。i386结构的处理器都可以以字节为单位进行寻址每个内存单元的地址不称为物理地址而是通过CPU内存管理单元(MMU)改变的线性地址,因为在8086上只有一个Segment管理机制,所以线性地址就相当于此时的物理地址。
直到32处理器,CPU地址线有32条,寻址能力达到4GB,而P4处理器有35条地址线,可以寻址更大的空间。但实际内存无法达到CPU寻址空间的大小。目前,CPU的MMU需要将线性地址转换为物理地址。目前,线性地址与物理地址是不同的。
在确定内存单元的物理地址时,应该根据当前的内存管理方式来计算,首先根据虚拟地址计算线性地址,然后根据是否开启分页机制如果不使用分页机制,线性地址就是物理地址。如果开启分页机制,则根据页目录和页表项计算物理地址。
根据x8632位处理器,虚拟地址是程序中使用的逻辑地址。虚拟地址计算如下:
首先检查段选择子寄存器(变成。16位模式下段的基地址寄存器,如读取数据,则使用DS寄存器中选择器的第二位),0来自全局描述符表(GDT,GlobalDescriptorTable),1来自局部描述符表(LDTLocalDescriptorTable)。全局描述符从GDTR寄存器中找到描述符表的物理基地址(以下简称GDTBA,GDTBaseAddress),然后GDTBA+DS&0xFFF8得到的地址就是选择器指向的描述符,然后根据基地址描述符中记录的段+Offset(可以是命令中的地址码,也可以是sidi中的值),就得到了一个线性地址(LinearAddress),但是本地的有点不一样,因为里面放的是什么LDTR不是局部描述符表的物理基地址,而是全局描述符表中的描述符选择器。首先计算LDT物理基地址,使用与上面相同的方法,然后计算描述符地址,最后计算为LinearAddress,如果没有打开分页,这可以是物理地址。如果开启分页机制,则必须进行LinearAddress到物理地址(PhysicalAddress)的转换。
一个线性地址是32位,前十位是页目录项索引,中间十位是页表项索引,最后12位是页偏移量,当然这是4KB的时候选择小页,使用大页如果是4MB,则最后22位都是页中的偏移量。CR3中存放的是页目录的物理基地址,共有1024个表项,因此以线性地址的高10位为索引来查找对应的页目录项。在小页模式下,此项存储页表的高20位地址,因为页表只有4KB,所以不需要低12位。页表项是用线性地址的中间十位作为页表项的索引和页表基地址计算得出的,页表项中存储的物理页的基地址与基地址相加,线性地址的页内偏移量的低12位,就得到了物理地址。在大页模式下,省略页表查找步骤。
二、微机内存按什么编址

微型计算机存储器由字节地址指定。


扩展您的知识:

在微型计算机中,存储器是用于存储程序和数据的重要组件。它是一个巨大的存储设备,可以容纳大量的数据和信息。微型计算机存储器通常以字节为单位寻址。这意味着每个内存位置或内存地址都被分配了特定的字节大小。


微型计算机的内存地址空间由一系列连续的内存地址组成,这些地址允许访问和操作内存中存储的数据。每个地址对应一个特定的字节,因此通过指定内存地址,就可以访问该地址对应的字节。


微型计算机中的内存寻址系统通常使用二进制数字系统。这意味着内存地址由一系列二进制数组成。这些数字通常以十六进制或二进制格式显示,以便更容易理解和操作。微型计算机中的内存地址通常用十六制表示,因为这样更容易理解和记忆。


在微型计算机中,内存的寻址方式对于程序执行和数据访问非常重要。访问正确的内存地址,程序就可以读写数据,实现其功能。因此,微机的内存寻址系统对于程序的正常运行非常重要。