关于系统位数和地址总线位数以及int和指针大小的疑问

问题描述

关于系统位数和地址总线位数以及int和指针大小的疑问

问题1:32位,64位系统。地址总线各为多少?
问题2:指针的大小是等于机器字长还是等于地址总线的位数?
问题3:为什么linux上64位系统的getconf WORD_BIT值为32位?是表示机器字长是32位吗?还是说他的值就是int值的大小而不具有别的意义?如果是表示机器字长是32位的话,那么为什么指针的大小是8字节?

解决方案

问题1:32位,64位系统。地址总线各为多少?
地址总线属于硬件,具体来说和CPU有关,和操作系统无关。x64 CPU的地址总线理论上是64位的,但是因为实际上现在的计算机还用不到那么多的内存,为了硬件设计的方便,实际上是54位或者56位的(Intel AMD略有不同)。x64处理器运行32bit操作系统或者在64bit系统上运行32bit程序,使用32bit寻址。
问题2:指针的大小是等于机器字长还是等于地址总线的位数?
指针的大小是编译器决定的,如果你在windows xp下用turbo c写程序,指针还是16bit的。
问题3:为什么linux上64位系统的getconf WORD_BIT值为32位?是表示机器字长是32位吗?还是说他的值就是int值的大小而不具有别的意义?如果是表示机器字长是32位的话,那么为什么指针的大小是8字节?
和操作系统相关。

解决方案二:

32位和64位从软件到硬件全部都有涉及,并且衡量的标准也比较模糊,在这里从软件到硬件归纳分析一下
一:32位和64位的区别:
1、32位和64位一般是指CPU的通用寄存器位宽,所以64位的CPU位宽增加一倍
2、可寻址范围大大扩展,32位系统支持最大内存位4G,64位系统理论支持最大内存2^64=18446,744,073,709,551,616,约1600万TB,相当于16EB。(实际还受制于操作系统和主板约束),实际的CPU尤其是这两年的CPU都是采取兼容设计的,内部总线不到64位,后期的CPU逐渐都会采用标准的64位。
3、32位系统和64位系统需要安装支持相应系统模式下的操作系统和驱动软件,也就是32位只能安装32位,64位安装64位的但可兼容32位运算。
4、目前约定俗成的x86就是代表32位操作系统,x64代表64位操作系统。

64位系统的理论优点:
1、64位系统理论支持安装最大16EB的内存,具体跟CPU的地址总线宽度有关,地址总线宽度及支持内存大小见下面的表格
2、所有64位寄存器仍然使用相同的划分方案,仍支持执行8位运算
3、RIP(新的64位指令指针)替代32位的EIP指针(再早期的IP指针为16位),并向下兼容。
4、SIMD指令使用新的寄存器,CPU在64位模式下有16、64位MMX寄存器
5、XMM寄存器为16位,用来做SSE浮点运算指针
6、只有FPU寄存器是80位宽度,其它剩余的寄存器和指令都是64位宽度

64位CPU的实用优点:
64位的系统在视频编辑、文件搜索、科学计算、人工智能、平面设计、视频处理、3D动画和游戏、数据库以及各种网络服务器等方面具备更强大的优势,尤其是在工程制图、3D、音视频制作等领域的具有极佳的应用效果。64位系统效能发挥需要三大模块支撑:硬件、操作系统、上层软件。普通的32位软件是无法在64位操作系统上体现出性能差别的。

二、如何判断您的计算机是否支持64位操作系统
硬件上的区分:
1、CPU: AMD在2003年春季发布第一款针对服务器的x86架构64位服务器处理器皓龙,秋天发布了同样架构的速龙64系列处理器,揭开了64位运算新篇章(当然这是指桌面处理器,专业的64位甚至更高位的处理器早就有了,比如SUN公司的UltraSparc Ⅲ、IBM公司的POWER5、HP公司的Alpha等)。2005年4月26日,微软正式发布了64位操作系统Windows Server 2003 x64 Edition和Windows XP Professional x64 Edition,距离第一片64位x86处理器上市有两年多时间。
也就是说目前发布的通用处理器,包括INTEL、AMD几乎都是64位的,天缘认为只要主板不是“偷工减料”的采用兼容性设计,都是可以支持64位操作系统安装,当然实际支持内存的大小还决定CPU的地址总线宽度和您的主板情况。实际运行还跟前端总线有关,比如早期的FSB和Core i5、Core i7使用的QPI(对抗AMD的HT总线)。
2、主板:目前市面的主流主板都是支持64位CPU的。
3、内存:基本无限制,当然为了搭配新最新的CPU和主板,速度上最好不要拖后腿就可以了。

软件上区分:
1、操作系统:目前Windows的大部分系列都有对应的64位版本发布。比如Windows 7除了家庭版初级班没有64位,其它都有,windows Server 2008R2只发布64位版本。
2、驱动程序和软件:这一点最为头疼,从目前来看,驱动程序除了部分老设备(比如打印机、扫描仪较老可能会没有64位驱动),新的设备都会发布64位驱动程序,但是64位的软件就非常缺乏,而且很多企业由于应用市场关系,目前64位应用还没到非用不可的地步,所以很多企业都还未开发64位版本软件,即使开发出来,售价也相当高。这种现状可能会持续稍后的3-5年不会一下改观。

三:在硬件相同的情况下(且硬件支持64位、内存2GB),32bit的OS用32bit的3DSMAX渲染速度 和 64bit的OS用64bit的3DSMAX渲染速度,哪个快?”及“游戏的载入速度呢?例如《鬼泣4》,例如《金刚狼》,例如《巫师》...”,这个问题 应该是很多网友都会遇到的。

测试条件就是硬件条件相同且都支持64位和内存足够,这是目前主流硬件的基本配置了。问题中的渲染一词在同等条件下仍然是程序运行速度的问题(需要排除依赖显卡的独立部分,因为在Windows 7上很多渲染工作已转交给GPU来完成),下面的回答也必须要以这个为节点或条件。问题2的游戏载入速度同问题1中的渲染,还有个比较特殊的地方,就是还跟DIRECTX版本和驱动等相关,所以也必须规定软件条件必须相同,只有位上差异,故仍是哪个更快的问题。

1、计算机操作系统和软件角度
首先看操作系统和上层软件,无论64位系统还是64位软件都是必须按照64位格式进行编译,也就是默认的字长64位,运行 时,除了一些特殊的独立计算,比如位运算,其它非标准字长变量运行时都是需要进行转换的。32位也是一样,这一点还看不出来哪个优劣(只指速度),即使硬件条件相同,实际上还是有速度上的差异,那就看谁的格式转换最少,这就决定于应用程序的类型和设计方法了。
操作系统也是软件,可以看一下 Windows 7 64位版安装文件大小就知道了,肯定要比32位要大,这里问题就来了,同样一个文件(打个比方),32位可能是1M,而64位的可能就是2M,那么从硬盘上读取就存在时间差异。所以文件大是个劣势。
这里就可以看出不同版本系统或软件实际运行效率几乎相当

2、计算机硬件角度
1、物理硬盘的运行时间,64位系统肯定会让物理硬盘花费更多的时间,如果是固态硬盘则可以解决这个问题,物理硬盘的设计理念决定谁也改变不了这个结果,多读数据就是要花费更多时间,而固态硬盘可以完全按照64位来设计存储位宽,寻址时间几乎不受影响。
2、 再看CPU,现在的CPU都是按照标准64位总线宽度设计的。内 部各种运算机制都是对64位有利的,也就是说单从CPU角度考虑(不计可能集成的前 端总线影响),64位速度会略胜32位。
3、内存方面,内存颗粒芯片大都是按照8位设计BANK重组,当然现在也有16、32位宽,今后肯定也会出现64位宽内存芯片。目前来讲对32位、64位影响都很小。
4、 再来看看CPU的前端总线,早期的并行总线无论对32位和64位影响都很小,因为是信号都是大家一起走(手拉手一起过桥),今后的CPU到北桥之间(注: 现在有INTEL CPU集成了北桥,只不过把串行总线拿到内部而已)几乎都将采用串行技术,同等速率下(假设内存无影响下),肯定是32位数据传送更快,排队过桥肯定人少 的更快过去。
5、除此之外,实际上除了北桥和CPU和内存,主板上就没什么东西了,主体PCI总线几乎都是并行的,显卡模块也是独立出的,影响很小。

四:总结
1、纵观上述分析,所以在相同的硬件环境下,这个环境必须要包含到硬盘或CPU的串行总线(原因是这两者影响最大,原因下面分析),64位的肯定没有32位快。(固态硬盘除外)
2、有意的人为设计出使用固态硬盘和全并行环境,那么两者理论速度相当,目前业界还没到这个水平和需求的时候。反之,也可以有意的人为设计出让32位运行慢,而64位运行快的系统。
3、64位系统和软件的重要优点不能不提,那就是更加精确、精细。jexleven的问题也出来结果了,那就是玩3D游戏,64位界面绝对要比32位界面更加漂亮,音质更好,还有一堆“更大"(内存更大、硬盘更大,理论上并行的东西支持也更多),试试便知。
4、以后如果使用固态硬盘或把普通硬盘的瓶颈问题解决,并且前端总线速度跟上去,那么64位系统运行速度将会有较大提升,与32位系统速度差距也会越来越小,当然了,使用专业的测试软件仍然是可以测试出差距的(架构可能调整,结果暂时也无法确定)。

以上来自网络收集 以下为个人见解

五:关于32位和64位系统的其它问题综合

1、装32位操作系统运行快,还是64位操作系统运行快?
从总体运行效率看,肯定是32位系统快,对于系统硬件配置不是太高端的用户,推荐安装32位操作系统。

2、我是否有必要安装64位操作系统?
对于做科学运算、工程制图、3D制作、音频视频编辑的用户,推荐尝试安装64位操作系统,那样更能彰显64位的优势,前提是软件是64位的。
(或许只有固态硬盘才能体现出这些优势。如果是普通机械硬盘,或许还没32系统运行感觉好。)

3、买电脑时商家总是推荐支持64位是怎么回事?
不要相信商家所谓的64位支持,纯粹是寻找卖点而已。

对于普通常用软件来说。就算是固态硬盘,64位也是不如32位的。要想在64位体现优势,高性能硬盘和64位软件缺一不可。

原文地址:http://user.qzone.qq.com/754631993/blog/1330926360

时间: 2024-08-29 02:58:54

关于系统位数和地址总线位数以及int和指针大小的疑问的相关文章

为什么cpu的地址总线位数与主存成2的n次方关系?

问题描述 为什么cpu的地址总线位数与主存成2的n次方关系? 一根地址线,代表一个bit位,n位宽度的地址总线可寻址范围是2的n次方个地址. 比如:若只有一根地址总线,那么可以索引地址0.地址1的两个内存地址. 若有两根地址总线,那么可以索引2^2=4个内存地址:00.01.10.11 以此类推,32位地址总线,能够索引2的32次方个地址,即4G内存地址空间. 为什么是这样? 解决方案 因为是电路的关系.比如单片机8位.的8个io口,每个io口有低电平0 高电平1.2种状态.于是.8个线总共可以

CPU位数、操作系统位数和编译器位数关系

编译器是将一种语言翻译为另一种语言的计算机程序.编译器将源程序(source language) 编写的程序作为输入,而产生用目标语言(target language )编写的等价程序.通常地,源程序为高级语言(high-level language ),如C或C + + ,而目标语言则是目标机器的目标代码 (object code,有时也称作机器代码(machine code )),也就是写在计算机机器指令中的用于运行的代码.这一过程可以表示为: 源程序→编译器 →目标程序.   我想来谈谈C

win7系统自带的画图工具怎么调节画布大小?

  win7系统自带的画图工具怎么调节画布大小?           1.如图,打开win7系统画图软件后,感觉画布较小. 2.如果想快速更改画布大小,可以将鼠标指针指向画布边角或底部.侧面处的小正方形处. 3.指向画布边角处的小正方形处后,鼠标指针会改变形状.如图:指向边角处变成图中所示形状. 4.指向底部变成图中所示形状. 5.指向侧面变成图中所示形状. 6.鼠标指针改变形状后,按住鼠标左键不放同时拖动鼠标,即可更改画布大小.

Win7系统下使用QQ远程桌面时鼠标指针出现偏移的解决措施

  由于办公或者学习需要,很多人需要将桌面共享,然后远程协助他人解决一些问题等,而腾讯QQ中就有一项方便用户进行远程桌面的功能,即QQ远程桌面协助功能,但是有不少用户在win7系统下使用qq远程控制朋友的电脑时,发现鼠标指针出现偏移,也就是在桌面随便一处右击后在其右下方却弹出菜单,但键盘可以正常使用,遇到这样的问题要怎么解决呢,关于这个问题下面小编为大家整理了一些解决步骤如下. 推荐: 1.首先在win7系统中的桌面空白处鼠标右击选择"屏幕分辨率"选项; 2.在桌面上右键"屏

关于时间转换为int,比较大小如何解决?在线等

问题描述 关于时间转换为int,比较大小如何解决?在线等 如图 这是我的两个变量,timeElem和Elem都是String类型的,我要如何转成int,需要比较大小 解决方案 最简单的 小时x60+分钟. 解决方案二: 时间的转换和比较大小 解决方案三: 直接用>,<,=比较就行吧

c语言-int型指针转成short型指针 然后自加一 地址移动四位?

问题描述 int型指针转成short型指针 然后自加一 地址移动四位? 一个int型指针强制转换成short型 然后自加一 为什么地址还是移动四个字节 而不是两个字节? 想不明白 解决方案 不同的编译器不同.一些编译器,为了优化处理器对内存的访问,所有的变量按照4字节对齐. 我这里是2http://codepad.org/lNNoQMVC #include <stdio.h> int main() { int * ptr = 0; short * sptr = ((short *)ptr +

Win7系统如何修改任务栏预览窗口的大小?

  Win7怎么修改预览窗口的大小呢?我们一起来看看. Win7系统任务栏预览窗口大小设置方法 1.按WIN+R组合键,打开运行对话框,然后输入"regedit"并且回车; 2.进入注册表编辑器中,打开注册表编辑器后打开"HKEY_CURRENT_USER"文件夹,接着依次打开"Software-Microsoft-Windows-CurrentVersion-Explorer--Taskband"文件夹,如下图所示: 3.然后选中"T

使用Windows7系统自带磁盘管理工具调整硬盘分区大小

Windows 7操作系统本身就自带了很多系统管理配置工具,例如对硬盘分区进行调整的磁盘管理器.在Windows XP时候我们需要使用一些第三方软件来对硬盘分区进行管理,如新建分区.格式化.调整分区大小.合并分区等多种操作.所以现在购买了一台新电脑,在安装 Windows 7系统时我们不必在意如何分区,分区的硬盘大小调整操作都可以放到系统安装完成后进行.本例中我们看一下如何在已安装Windows 7的电脑上调整硬盘分区大小的. 首先运行磁盘管理 工具:点击左下角的微软图标,在搜索框中输入disk

Windows 8.1系统下如何查看当前显卡的显存大小

  操作步骤: 在Windows 8系统下可通过windows体验指数查看显存大小,Windows 8.1下没有找到windows体验指数,可通过以下方式查看: 集成显卡(集成显卡的显存尽量看总可用图形内存,如下所示也都是共享内存后的总大小): 1. 按WIN+X组合键打开控制面板,在大图标的查看方式下找到管理工具; 在管理工具内找到系统信息; 系统信息左侧点开组件---显示,可查询到相关显存数据; 2. 按WIN+R组合键 运行dxdiag; 在"显示"的选项卡下面可找到相应的显存大