• 为什么在保护模式下IA-32处理器最高可访问4GB的内存


    在保护模式下,IA-32处理器可访问最高达4GB的内存,这是32位无符号二进制整数地址能够寻址的上限。
     今天看汇编的时候发现书里带过一句,不太明白为什么内存上限是4GB,就搜了一下,总结了一下答案。
     
    1. 对计算机来说一个存储单元大小是8 bits (1字节);
     
    2. 每一个存储单元都要对应一个地址,地址不管里面的内容是什么,如一个int类型是16 bits,占用2个存储单元,第一个存储单元的地址假设为 FFFFFFF1 (32bits),则第二个存储单元的地址就为FFFFFFF2。而字符串或者数组的话占用连续的内存空间;
     
    3. CPU里有很多寄存器,有储存指令的指令寄存器,有储存数据的数据寄存器,有储存地址的地址寄存器,还有既可以储存数据又可以储存地址的通用寄存器等等。寄存器的作用是储存CPU的运算器所需要的或生成的数据的。
     
    4. IA-32(Intel Architecture,英特尔体系架构),属于X86体系结构的32位版本,即具有32位内存地址和32位数据操作数的处理器体系结构,从1985年面世的80386直到Pentium 4,都是使用IA-32体系结构的处理器。
     
    5. 系统的32位就是指寄存器的大小,IA-32对应32bits的地址寄存器,即一共有2^32个地址,每个地址对应一个8 bits的存储单元
     
    6. 32bits * 8bits = 4GB内存大小(2^2*2^10*2^10*2^10*1B)
     
    7. 但其实这个问题是错的,32位CPU是可以访问4GB以上内存的,通过一种叫做PAE(物理地址扩展,Physical Address Extension)的技术。Windows之所以不能支持是因为微软的市场策略问题(服务器版的就支持PAE)。
     
    8. 可是,地址不光是给内存用的,但计算机的其他部件也需要地址,所以虽然能编址4GB的空间,但实际用到内存上的只有3.2GB,这也就是为什么4GB内存在Windows上只能使用3.2GB的原因了。
     
    9. 相比之下64位的CPU虽然比32位看起来相差不多,但是内存却可以达到16TB!!不过也并不是这个数字越大越好,单纯内存的提高并不能提高性能,就现在而言性能上可能还是32位CPU更好一些。
  • 相关阅读:
    jQuery attr 与 prop 区别最简单分析
    Js事件处理模型/周期
    canvas实现点击带水纹的按钮
    js作用域问题
    js 函数里的 this
    css3: scrollLeft,scrollWidth,clientWidth,offsetWidth 的区别
    C# 中的Async 和 Await 的用法详解
    1、Task的优势
    探秘C#中的yield关键字
    详解C#中 Thread,Task,Async/Await,IAsyncResult的那些事儿
  • 原文地址:https://www.cnblogs.com/sparkmorry/p/3426941.html
Copyright © 2020-2023  润新知