在此之前先来了解一些计算机存储单位之间的关系以及计算机系统结构和PC硬件方面的一些知识。

一、计算机存储单位之间的关系

位 bit (Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。

字节 byte:8个二进制位为一个字节(B),即1B = 8bit,最常用的单位。

计算机存储单位一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB来表示,它们之间的关系是:

1KB (Kilobyte )      =2^10B    =1024B

1MB (Megabyte )  =2^10KB  =1024KB

1GB (Gigabyte )    =2^10MB =1024MB

1TB (Trillionbyte)   =2^10GB =1024GB

1PB(Petabyte )   =2^10TB  =1024TB

1EB(Exabyte )    =2^10PB  =1024PB

1ZB (Zettabyte )    =2^10EB  = 1024 EB

1YB (Yottabyte )    = 2^10ZB =1024 ZB

1BB (Brontobyte ) = 2^10YB =1024 YB

  

二、计算机系统总线结构和主板的构成

  说起总线大家肯定不陌生,而且大家平时肯定跟它打过交道,我们在用U盘拷贝数据的时候先要把U盘通过USB接口与电脑相连才能拷贝。USB接口实际上就是一种总线,一般称这种总线为USB总线(也叫做通用串行总线)。在很久之前是没有USB总线的,那个时候每个外设各自采用自己的接口标准,举个最简单的例子:鼠标生产厂商采用鼠标特有的接口,键盘生产厂商用键盘特有的接口,这样一来的话,PC机上就必须提供很多接口,这样一来增加了硬件设计难度和成本,直到后来USB接口的出现,它统一了很多外设接口的标准,不仅使得用户可以很方便地连接一些外设,更增强了PC的可扩展性。所以现在大家看到的鼠标、键盘、U盘、打印机等等这些外设都可以直接通过USB接口直接插到电脑上的。

  在计算机系统中总线是非常重要的一个概念,正是因为有了总线,所有的组成部件才能一起正常协同分工合作。在很久以前的PC机中,采用的是三总线结构,即:数据总线、地址总线、控制总线。它们分别用来传输不同类型的数据,数据总线用来传输数据,地址总线用来传输地址,控制总线用来传输一些控制信号。下面这幅图很清楚地展示了三总线结构:

  

  随着时代的发展,这种简单的总线结构逐渐被淘汰。下面这幅图是现代计算采用的结构:

  

  事实上这也是现代主板所采用的结构,当然可能部分地方有略微不同(大体结构是差不多的),仔细观察过主板构成的朋友可能对上面一幅图很熟悉。在主板上主要有两大主要部分:北桥(North Bridge也称Host Bridge)和南桥(South Bridge)。北桥主要负责CPU和内存、显卡这些部件的数据传送,而南桥主要负责I/O设备、外部存储设备以及BIOS之间的通信。现在有些主板已经没有北桥了,因为芯片厂商已经把北桥所负责的功能直接集成到CPU中了(不过暂且我们以上副图的模型来讨论)。

  在上副图中,我没有画出 数据总线和地址总线等,因为在某些总线标准中它们被集成到一起了,比如在PCI总线中,地址总线和数据总线总是分时复用的(也就是说假如PCI总线有32位数据总线,这32位总线在某个时刻可以充当数据总线的作用,在下一时刻可以充当地址总线的作用)。有的总线同时提供了数据总线和地址总线。

  下面来说一下几个主要总线和南北桥的作用:

  FSB总线:即前端总线(Front Side Bus),CPU和北桥之间的桥梁,CPU和北桥传递的所有数据必须经过FSB总线,可以这么说FSB总线的频率直接影响到CPU访问内存的速度。

  北桥:北桥是CPU和内存、显卡等部件进行数据交换的唯一桥梁,也就是说CPU想和其他任何部分通信必须经过北桥。北桥芯片中通常集成的还有内存控制器等,用来控制与内存的通信。现在的主板上已经看不到北桥了,它的功能已经被集成到CPU当中了。

  PCI总线:PCI总线是一种高性能局部总线,其不受CPU限制,构成了CPU和外设之间的高速通道。比如现在的显卡一般都是用的PCI插槽,PCI总线传输速度快,能够很好地让显卡和CPU进行数据交换。

  南桥:主要负责I/O设备之间的通信,CPU要想访问外设必须经过南桥芯片。

  在了解了这些基础东西之后,下面来讲解一下为何32位系统最大只支持4GB内存。

三、来由

  在使用计算机时,其最大支持的内存是由  操作系统 和 硬件 两方面决定的。

  先说一下硬件方面的因素,在上面已经提到了地址总线,在计算机中 CPU的地址总线数目 决定了CPU 的 寻址 范围,这种由地址总线对应的地址称作为物理地址。假如CPU有32根地址总线(一般情况下32位的CPU的地址总线是32位,也有部分32位的CPU地址总线是36位的,比如用做服务器的CPU),那么提供的可寻址物理地址范围 为 232=4GB(在这里要注意一点,我们平常所说的32位CPU和64位CPU指的是CPU一次能够处理的数据宽度,即位宽,不是地址总线的数目)。自从64位CPU出现之后,一次便能够处理64位的数据了,其地址总线一般采用的是36位或者40位(即CPU能够寻址的物理地址空间为64GB或者1T)。在CPU访问其它任何部件的时候,都需要一个地址,就像一个快递员送快递,没有地址他是不知道往哪里送达的,举个例子,CPU想从显存单元读取数据,必须知道要读取的显存单元的实际物理地址才能实现读取操作,同样地,从内存条上的内存单元读取数据也需要知道内存单元的物理地址。换句话说,CPU访问任何存储单元必须知道其物理地址。

  用户在使用计算机时能够访问的最大内存不单是由CPU地址总线的位数决定的,还需要考虑操作系统的实现。实际上用户在使用计算机时,进程所访问到的地址是逻辑地址,并不是真实的物理地址,这个逻辑地址是操作系统提供的,CPU在执行指令时需要先将指令的逻辑地址变换为物理地址才能对相应的存储单元进行数据的读取或者写入(注意逻辑地址和物理地址是一一对应的)。

  对于32位的windows操作系统,其逻辑地址编码采用的地址位数是32位的,那么操作系统所提供的逻辑地址寻址范围是4GB,而在intel x86架构下,采用的是内存映射技术(Memory-Mapped I/O, MMIO),也就说将4GB逻辑地址中一部分要划分出来与BIOS ROM、CPU寄存器、I/O设备这些部件的物理地址进行映射,那么逻辑地址中能够与内存条的物理地址进行映射的空间肯定没有4GB了,看下面这幅图就明白了:

  

  基于以上的理论可以知道32位的系统,其最多只能管理的运存只有:

                                                 2^32B=2^(2+10+10+10)B=2^2*(2^10*2^10*2^10)B=4GB。

所以当我们装了32位的windows操作系统,即使我们买了4GB的内存条,实际上能被操作系统访问到的肯定小于4GB,一般情况是3.2GB左右。假如说地址总线位数没有32位,比如说是20位,那么CPU能够寻址到1MB的物理地址空间,此时操作系统即使能支持4GB的逻辑地址空间并且假设内存条是4GB的,能够被用户访问到的空间不会大于1MB(当然此处不考虑虚拟内存技术),所以用户能够访问到的最大内存空间是由硬件和操作系统两者共同决定的,两者都有制约关系。

  对于64位的操作系统,其逻辑地址编码采用的地址位数是40位,能够最大支持1T的逻辑地址空间。考虑一种情况,假如CPU是64位的,地址总线位数是40位,操作系统也是64位的,逻辑地址编码采用的地址位数也是40位,内存条大小是64GB,那么是不是内存条的64GB全部都能被利用了呢?答案是不一定,因为这里面还要考虑一个因素就是内存控制器,内存控制器位于北桥之内(现在基本都是放在CPU里面了),内存控制器的实际连接内存的地址线决定了可以支持的内存容量,也就是说内存控制器与内存槽实际连接的地址线如果没有40位的话,是无法完全利用64GB的内存条的存储空间的。当然对于内存控制器这个问题几乎可以不用考虑,因为现在大多数的内存控制器至少都采用的是40位地址总线。

大部分摘自:http://www.cnblogs.com/dolphin0520/archive/2013/05/31/3110555.html

原文出处:

作者:海子  

出处:http://www.cnblogs.com/dolphin0520/  

本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则       保留追究法律责任的权利。

新增自己的理解如下:

2的32次方如下:


4,294,967,296‬代表的是32位计算机(32根地址总线)的寻址能力,即32位计算机可以找到多少个内存单元,一个内存单元可以存储一个字节,即32位计算机可以找到4,294,967,296‬个字节的地址
4,294,967,296‬/1024=4,194,304‬KB
4,194,304‬/1024=4,194,304‬MB
4,194,304‬/1024=4GB
结论:32位计算机最大可以使用4G内存

为什么32位计算机只能够使用4G内存相关推荐

  1. 32位java 最大内存_【答疑系列】为什么32位系统只支持最大4G内存?

    这个问题一直都有同学问到,算是提问次数最多的问题之一了. 32位是什么 现在主流的操作系统都是64位的,早期存在32位操作系统,相信大家也都有所听闻,其实,在更早之前,还有16位.8位的,这里就不展开 ...

  2. [硬件]为什么32位的操作系统最大支持4G内存

    之前一直知道32位的系统最大支持4G内存,但没有深究其原因,正好最近考试需要这个知识点,在这里总结一下加深一下印象. 1.硬件原因 X86架构CPU分为32位与64位,这里所说的32位与64位指的是C ...

  3. 32位XP开启直接支持4g内存

    32位XP开启直接支持4g内存 1. 首先还是必须确认CPU和主板支持PAE和memory remap/hole. 2. 到SYSTEM32下,复制 ntkrnlpa.exe 为 ntkrnl4g.e ...

  4. 32位win系统,突破4G内存限制方法

    我本本是32位win7系统,最大支持内存才3个多G,为了不浪费(或者说想让本本运行更顺畅),实施了如下变相突破4G内存限制的方法(记下,备忘): 1.把多余内存转换成虚拟硬盘. 2.设置虚拟内存为&q ...

  5. 32位Windows 7中使用4G内存的实践经验

    1.启用PAE(Physical Address Extension,物理地址扩展) 可以用everest来查看操作系统和处理器是否都支持PAE,如果都支持,但PAE未启动,则可以在命令行下输入下面命 ...

  6. 32位计算机直接访问的内存,32位64位-32位计算机可以访问多少内存?

    32位64位-32位计算机可以访问多少内存? 32位或64位计算机是什么意思? 这是处理器架构-一台32位计算机可以与64位计算机同时读写32位数据-. 32位计算机可以访问的最大内存是多少? 它是2 ...

  7. 64位计算机最大寻址,为什么说32位操作系统的寻址空间是4G

    1. 什么是寻址空间 寻址空间一般指的是CPU对于内存寻址的能力.通俗地说,就是能最多用到多少内存的一个问题 2. 我们经常听说32位操作系统最多能用4G内存.大部分情况下,这个上限都达不到.例如我的 ...

  8. Tails 3.0 正式发布,不再支持 32 位计算机

    基于 Debian 9 (Stretch) 的匿名发行版 Tails 已正式释出 3.0 版. Tails 3.0 不再支持 32 位计算机,只支持 64 位计算机.官方表示这是一个艰难的决定,但只支 ...

  9. 32位计算机处理64位数据,win764位和32位区别

    众所周知,Windows 7有32位系统和64位系统,但是针对win764位与32位区别之间的差别相信很多用户都感到困惑,最近就有用户问小编关于win764位和32位区别,那win764位和32位区别 ...

最新文章

  1. 推荐44个最具潜力的顶极深度学习开源框架和平台!!!
  2. 关于.NET编译的目标平台(AnyCPU,x86,x64) (转)
  3. MATLAB数字信号处理函数
  4. java 日历选择天_Java程序使用Java日历将天添加到当前日期
  5. mysql升级后乱码_Mysql转换或者升级以后出现乱码情况的说明
  6. 2021高校毕业生薪酬Top100出炉!
  7. python内核死亡的原因_Kernel Panic常见原因以及解决方法
  8. UltraEdit 所有快捷键 说明
  9. 微型计算机原理及应用论文,微机原理及应用结业论文
  10. 【Elementory OS 6】安装 tweak
  11. 关于openlaeyrs获取谷歌卫星地图的无偏瓦片
  12. 关于系统监控的想法和实施(一):数据监控
  13. cube配置定时器ETR2模式测频实验
  14. Golang环境变量设置(二)--GOMODULEGOPROXY
  15. word07去掉回车符
  16. python怎么输出百分数_Python 如何输出百分比
  17. Android文字广告(Textview上下滚动),使用TextSwitcher控件的完整实现
  18. 定义一个int型变量
  19. 一.PHP基础知识相关面试题
  20. 深层循环神经网络(DRNN)

热门文章

  1. Replay:The 2019 ICPC Asia-East Continent Final Contest (Training)
  2. MySQL 8.0.23上遇到一个FIND_IN_SET的BUG
  3. upupw mysql数据库路径_Nginx版UPUPW控制面板详细介绍
  4. Citavi及DBServer安装使用
  5. 图片加载lazyload灰色背景
  6. 计算机图形学作业( 七):利用 OpenGL 绘制 Bezier 贝塞尔曲线
  7. Druid连接池源代码分析之二-获取连接
  8. Android 数据库和存储文件(第十五 十六 十七节课)
  9. 怎么使用迅捷PDF转换器转换视频?
  10. 重庆邮电大学计算机考研复试,重庆邮电大学计算机考研复试备考经验及经过