32位cpu的32位系统寻址空间范围是2^32

我有几个计算机硬件方面的问题。1、如何计算cpu直接寻址空间.2、如果已知cpu为32位机,如何判断数据线。_百度知道
我有几个计算机硬件方面的问题。1、如何计算cpu直接寻址空间.2、如果已知cpu为32位机,如何判断数据线。
提问者采纳
你32位机器,不是内存上的物理地址首先如楼上。。还有楼上说的也不一定对,然后cpu进行取数据什么的。。,寻址空间是2^32(2的32次方)为4*1024即4G的寻址空间,这个要看芯片手册了,32位机器也并不一定有32位数据线,虚拟地址经过mmu(内存管理模块)的转化成为内存上的物理地址,这个是虚拟地址(因为cpu寻址都是虚拟地址)
您好,我是初学者有很多问题还不明白。请问上面写的4*1024是什么意思?数据线的根数与什么有关?
不好意思说错了刚才2^10=1024,应该是1G=1024M
1M=1024KB 1KB=1024B
所以应该为4*24即4GB(也就是2^32),数据线的根数要查你的cpu数据手册才知道有多少条
提问者评价
其他类似问题
为您推荐:
其他1条回答
2的n次方,n是地址数据线根数。2^32=4G32位 就表示有32根数据线
直接寻址的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁采用32位cpu的系统,如果内存采用字编址方式能否支持更大的内存了?
32位 字节编址 2^32=4GB32位 1字=4字节32位 字编址 2^32x4=16GBcpu依然可以寻址2^32个内存单元,只是每个单元的容量变大了,这样做有意义吗?
按投票排序
对于x86平台来说,最重要的两个特性:1. 兼容性是天;2. 指令不对齐;在x86平台,指令不兼容的东西都是邪教,采用4字节编址会造成大量指令不兼容,是邪教,会被Intel绑在火刑柱上烧死。另外,因为取指的时候必须对齐,所以如果采用4字节编址,所有无法对齐到4字节的指令都会被强制对齐到4字节,Intel指令集里有大量的单字节、双字节、三字节的指令,这些指令都会被强制对齐到4字节,造成大量的空间浪费。以引导扇区为例,引导扇区能做到以300多字节扫描分区表、FAT表并加载文件,靠的就是紧凑指令,如果按4字节编址,引导扇区就没办法做的这么小了。4字节编址是邪教。--------------------PPC/ARM/MIPS是可以这么做的。--------------------看来有人是没明白不对齐的空间浪费问题,假设有如下代码:
0103 BE00B8
如果要跳转到0102的话,在4字节对齐的环境里,这种操作无法实现,因为0102无法被正确编址。
即便不考虑兼容性的问题,这个方法续的命也太短了,仅仅从4G续了四倍出来。实际上,现在新配的偏向性能的台式机,16G已经是挺通常的配置。而2U的小服务器,早在2010年那会就已经32G了。
不过是把死刑延迟了几年,然后大家受更大的苦,类似的桥段二次元挺常见的,然则intel干过一件事,强行用32位cpu替换16位cpu的供货,以前念书的时候老师说的,现在我也不知道是不是心灵鸡汤,总之当年这种事是发生过一次,不过那年头it行业还没这么复杂,急刹车转弯就过去了
抛去兼容性问题不看,即使变成了4字节编址也不能把64位到来的时间大幅度推后啊。服务器端早超过16G了,家用电脑也有很多人装了16G。对应到4G的时间大概也就是十年吧。为了这么短一点时间对底层进行改动并不值得吧?
的确可以这样做。如果不考虑路径依赖以及直接的制造成本、性能问题等方面的话,真的是条条大路通罗马。
可以,但是意义并不大。某些嵌入式8位和16位处理器,为了支持更大内存空间确实是这么干的。这么干的缺点也显而易见,最小存储单元变大了,空间有浪费。而且这么干的一般是因为地址总线位数不够,没办法。同学你一定没有好好学习计算机组成原理并了解现代科技就开始瞎想。你好好看看计算机组成原理里面的片选部分。实际上,在32位计算机时代,我们就引入了更多的地址总线以寻求更多的寻址空间,早在64位处理器出现以前,32位处理器就拥有了64位地址总线。另外PIDE硬盘的48位地址也是个典型的例子。
我也想知道,难道仅仅就是为了向下兼容么??如果按字节寻址的话,很多内存地址都会被浪费掉啊!假设地址线有32根,当然CPU字长也是32位的,显然一次可以从内存中读取4个字节,假设内存地址按字节编址,即一个地址对应一字节,那么,从CPU从地址0开始读取的话,地址1、地址2、地址3根本就没办法用到啊!
因为CPU一次读取就从地址0开始读取了4个字节,下一次就从地址4开始读取了,再下一次又从地址8开始了。不仅仅是地址1、地址2、地址3,接下来的地址5、地址6、地址7等也同样没有用到的机会啊?PS:为了简化问题,这里暂且不讨论机器可以从奇地址开始读效率较低的问题。
我就想知道,这样浪费了很多地址编号啊!为什么这样设计呢?难道仅仅是因为历史包袱——向下兼容?
谢谢各位大神了!
首先寻址范围和cpu的位宽没有必然联系,与具体的cpu设计有关.按字节编址时内存的最小寻址单位为1个字节, 如果按字编址最小的寻址单位就是4字节(32位系统),个人认为会造成内存空间的浪费
1.出于存储效率的考虑,32位机上基本都是4字节内存对齐,因此,就算改成字寻址,也浪费不了多少内存。2.在x86中,就算访问一字节,回传的数据也有四字节(用于更新高速缓存),因此按字节访问和按字访问的速度是一样的。这和三级缓存的工作原理有关。3.多数情况下4字节对齐的体系中默认指针的最后两位是0,例如ARM,因此可以把指针右移两位,用最高两位表示新的扇区,这就做到了16G的寻址,对操作系统内核进行一些更改就能做到,就是你所说的按字寻址。4.综上所述,x86操纵内存的最小尺寸是4字节,小于四字节的内存操纵都是模拟出来的。5.你可以强制x86工作在16G寻址模式下,我记得ARM可以做到类似的事情,我记不清了。
内存编址方式的定义数据总线宽度,决定了通过单次读或写操作,可访问的内存单元的粒度,比如说 8bit 数据总线宽度对应一个字节地址总线宽度,决定了最大可访问的内存单元的个数,比如 32bit 地址总线宽度,对应 4G(注意不是 4GB)个内存单元编址空间,由以上两者共同决定的可访问内存的空间范围,比如 8bit 数据宽度 + 32bit 地址宽度,决定 4GB 编址空间。编址方式,决定了内存单元与内存控制器之间通过怎样的总线相连,以及内存控制器如何访问内存,举例说明:金士顿 2GB 内存条,数据总线宽度 32bit,地址总线宽度 29bit在内存条插到主板上并工作后,实际上内存编址方式为:数据总线宽度 32bit,地址总线宽度 29bit,内存条通过 32bit 的数据总线 + 29bit 的地址总线与 CPU 内部或主板上的内存控制器相连。内存控制器访问内存时,需要送出 32bit 的数据总线信号和 29bit 的地址总线信号。处理器寻址的定义数据寻址粒度,指通过内存访问指令单次读或写可访问的内存单元的大小,比如 x86 上为一个字节程序寻址粒度,由指令的长度决定,比如 x86 上为一个字节数据寻址空间,由数据寻址粒度和指针寄存器宽度共同决定,比如 x86 上为 4GB程序寻址空间,由程序寻址粒度和程序计数器宽度共同决定,比如 x86 上为 4GB处理器寻址,包含两个方面,一个是数据寻址,另一个是程序寻址。数据寻址是指执行内存访问指令时的寻址过程程序寻址是指处理器内部在取指令和执行指令过程中的寻址我们常说的寻址能力,一般指仅通过处理器本身的指令就可访问的内存空间。编址与寻址的区别内存控制器往下,是编址的概念,往上是寻址的概念,不可混淆。在汇编语言里,我们通常都说是寻址,而不是编址。现在的主流计算机系统里,编址方式基本上都是采用 32bit 编址,而寻址都是按字节寻址。如果大家同意以上的定义,那么我们会发现问题本身就不合理,需修改。接下来回答下问题如果内存控制器的数据总线 32bit + 地址总线 32bit,那么编址空间为 16GB。处理器能否寻址这 16GB 空间呢?就要看是否有对应的指令接口,或者 I/O 接口。众所周知的是 32bit 处理器有 4GB 的访问限制,但是并不是说不能突破这个限制,曾经的实模式 DOS 还有 64KB 限制和 1MB 限制,但实模式 DOS 下仍然可以突破限制访问 4GB。怎么突破限制,一是看内存控制器是否支持 4GB 以上的编址空间和处理器是否提供了特殊的内存访问指令,二是看是否可以通过 I/O 方式来突破。不过就算能突破限制,也存在诸多不便,比如读写性能受限,在 c 语言里没法方便的使用指针来访问内存,无法在这样的内存里面放入程序代码并执行等等。如果玩过实模式 DOS 下的 EMS、XMS 就深有体会了。所以既然有了彻彻底底的 64bit 处理器和操作系统,又何必去受这个苦呢。有答主认为采用 32bit 编址没法避免内存浪费,他理解的编址应该是我这里说的寻址。如果程序和数据都是以 32bit 的粒度寻址,那么的确可能导致浪费,因为这会导致指令的长度变为四字节对齐。但事情也不是绝对的,假定我们只能以 32bit 来进行程序寻址,那么意味着我们的跳转指令的地址(以字节为单位)的低两位就是 00,就是说跳转地址需要四字节对齐。而顺序执行的程序块里,可以保证里面的指令长度为最小的一个字节,处理器取指令的时候可以分离出正确指令的。就是说在不存在跳转指令的程序块里是完全可以避免浪费的,这样浪费只存在于程序块与程序块之间。事实上是当今的编译器,在编译 C 代码时,都会保证函数入口地址四字节对齐,甚至出于优化目的插入 nop 来保证指令对齐。另一方面,现在的大内存条件下,native 代码本身占用的内存空间已经很小,就算是存在空间浪费也不是主要矛盾。至于说兼容性也不是问题,既然 x64 可以兼容实模式、保护模式、64 位模式,再加一个模式并定义一个规范标准,技术上本来是可以行的,只是这样做的意义真的不大。(技术问题都是可以讨论的,可有些人真是说不得,惹急了就删回复,汗!)
已有帐号?
无法登录?
社交帐号登录Intel 32位CPU_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
Intel 32位CPU
上传于||暂无简介
大小:928.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢32位和64位系统有什么区别_百度知道
32位和64位系统有什么区别
我有更好的答案
32位和64位的区别:
从硬件看:
1、目前32位和64位是指CPU的通用寄存器位宽(数据总线的位宽),所以64位的CPU数据处理位宽是32位CPU的2倍;
2、可寻址范围扩展,32位系统支持最大内存位4G(地址总线位宽已经是32位),64位系统理论(地址总线位宽达到64位时)支持最大内存为:2^64=3,709,551,616,约1600万TB,相当于16EB。(目前受制于操作系统和主板设计复杂度约束,实际的CPU采取兼容设计,内部地址总线仅使用36~38位(远未不到64位),支持64~256G的内存,以后CPU地址总线逐渐会扩展到用完64位的宽度。
从软件看:
1、32位系统和64位系统需要安装支持相应系统模式下的操作系统和驱动软件,也就是32位的硬件环境只能安装32位系统和软件,64位环境不但能安装64位系统和软件,还可兼容32位的...
其他类似问题
为您推荐:
64位系统的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁一台电脑 操作系统按32位寻址 ,硬盘大小 20G ,内存128m,虚拟存储空间有__M_百度知道
一台电脑 操作系统按32位寻址 ,硬盘大小 20G ,内存128m,虚拟存储空间有__M
请给出计算过程,求解答,操作系统题目RT,谢谢
提问者采纳
能将内存中暂时不用的页(或段)调至盘上。因为有页(或段)的置换功能。实际大小就是内存+外存对换区了,即可寻址范围:2^32 = 2^10 * 2^10 * 2^10 * 2^2 = k * k * k * 4 = M * k * 4 = 4096M虚空间逻辑大小的话这么算
提问者评价
其他类似问题
为您推荐:
您可能关注的推广
位寻址的相关知识
其他4条回答
1、应用中的概念。
物理内存,在应用中,自然是顾名思义,物理上,真实的插在板子上的内存是多大就是多大了。看机器配置的时候,看的就是这个物理内存。
虚拟内存,这个概念就要稍微了解一下CPU了,^_^,只是稍微,毕竟我们现在谈的是应用中的概念。我们应该知道,对于一般的32位CPU,有32根地址线,那么它的寻址空间就是4GB。也就是说,如果没有其他的限制,我们的主板上最大可以安装4GB的物理内存。哈哈,一般的机器是不会装那么多物理内存的,大把的银子啊,性价比可合不上。程序员可不管这个,我们对CPU编程,不能一台机器根据你物理内存的大小我编一个程序吧?那也太原始社会了吧。所以程序员都是直接使用的4GB的奢侈的进程空间(或许,不应该用奢侈这么短视的词。曾几何时,128M的物理内存也是我...
你有看清我问的是什么吗?不知道就别瞎回答。。。
还真不会算……
是这样子的,我们知道虚存地址映射到实际的地址要通过:段选择子:段内偏移,根据段选择字查看描述符表,得到相应的基地址,然后基地址+段内偏移得到实际地址(phy add),这样的话32位总线,段内偏移为2^32,也就是说每一个段是这么大,那么有多少个段呢,我们知道段选择子有16位,其中有两位0-1位是表示的特权级,那么一共有2^14个段,乘起来64TB!!
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 32位的寻址空间 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信