首页
社区
课程
招聘
[讨论]关于32位系统使用 n+g内存
发表于: 2013-8-6 14:32 28086

[讨论]关于32位系统使用 n+g内存

2013-8-6 14:32
28086
收藏
免费 0
支持
分享
最新回复 (44)
雪    币: 110
活跃值: (34)
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
26
PAE能肯定的性能损失基本是为了维护64位的页表造成的内存性能损失,其它损失在哪里……
2013-10-8 00:36
0
雪    币: 110
活跃值: (34)
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
27
学好基础再去“研究”,不然就是瞎捣鼓
为什么会有人嘲笑你?无法是自大的语气和对基础知识的无知而已
2013-10-8 00:42
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
28
那我只能说M$把我们都"骗到了X64了"........
2013-10-8 01:15
0
雪    币: 110
活跃值: (34)
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
29
X64有额外的性能提升……
而且。。PAE之类的解决方案只是解决了系统如何实现管理大容量内存的管理的问题,并没有直接解除进程寻址空间的限制
2013-10-9 21:21
0
雪    币: 212
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
32位和32位PAE系统性能持平。前2者比64位系统平均性能低20%-30%。并且前2者受限于32位应用程序。
对性能要求不高,大内存实用流可以选择32位PAE系统。对性能敏感,并有64位应用软件,选择64位系统。
总结适合的才是最好的
2013-10-10 20:16
0
雪    币: 118
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
31
不知道楼上一些童鞋有没研究过cr3、pde、pte

同一个软件64bit版本自然比32bit快
1.操作内存字节数翻倍了
2.写算法什么的.寄存器不会不够用.要去借栈寻址了.

但前提是软件要是x64的.
各位自己看看电脑上的软件有几个是x64独占的?

个人表示电脑上只有photoshop和UDK有64版本的。
99%还是32bit程序.

========
一个32bit程序.
运行在x64环境下和运行在32系统下对比.
x64环境下 更慢、效率更低的是大概率事件

原因很简单.
32bit下 ring3 进到ring0 直接sysenter就msr176了
64bit下 则还要通过读fs进行转换.

至于大内存.
一个32位程序.ring3的va都只有0-7fffffff
无论在x64还是x86下
无论内存是8G还是16G..
都只有2G(开启LAA后,32bitPAE 是3G,x64是4G..但是貌似目前未见有商业软件默认开启LAA)

有童鞋要说内存操作性能.如果有大量内存处理的需求.不是还有SSE吗?

有童鞋说pae损失性能..那就是瞎说八道了..
在物理内存操作时.计算方式如下:
===========
if( IS_PAE!=0) uPdeAddr = (uAddr>>21)*8+0xC0600000;
        else uPdeAddr = (uAddr>>22)*4+0xC0300000;

if(IS_PAE!=0) uPteAddr = (uAddr>>12)*8+0xc0000000;
                else uPteAddr = (uAddr>>12)*4+0xc0000000;
==============
不论是否开启PAE,操作步数是一样的。

唯一区别仅在页表初始、增减、销毁时,64bit的结构size>32bitPAE>32bit
从频率上来说.性能损失忽略不计.

综上给出个人观点的结论:
=======
同一个软件.64bit版本理论上会比32bit性能高.
同一个32bit程序.在32bit系统上.理论上会比64bit系统性能高.

在现阶段.中国的xp用户还超过60%的现阶段.
(统计来自百度 tongji.baidu.com/data/os)
任何一家中国的软件应用公司也不敢开发x64独占的东西.
有充分的理由相信.
应付日常应用和玩游戏..32位系统要比64位系统更快.
当然..x64是未来的趋势.
2013-10-10 21:45
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
32
你说的非常有道理.
顺便说下PAE 使用的是三级标签页表机制 X64使用四级标签页表(简单说X64模式就是PAE的超级模式),但是为什么在大内存高负载计算的情况下32位PAE 表现不如X64呢?

其实非常简单.就是X64下系统可以把更多的东西交给CPU去处理(理论上64位会比32位快一倍,当然这只是理论!).所以,快的不是软件,而是系统本身!!!顺便说下我前面说的pae损失就是基于此观点的.....

IT工作者,在软件兼容的前提下,不去使用X64位,这不是怀旧,而是纯粹的迟钝!
2013-10-11 04:14
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
如果使用了large address aware,在32位系统上可用地址空间为3G,64位系统上可用地址空间为4G
2013-10-13 06:14
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
地址总线长度和寄存器大小是两个不同的概念.开启3PAE的2位处理器地址总线是52位(Vol 3A 4-12),而这52位不代表32位处理器需要两次操作才能访问一个内存地址,在CPU内部只需要一次操作.这就跟32位处理器上也能有256位大小的YMM寄存器是一个道理.
所以64位处理器和32位处理器在访问内存的时候效率是相当的

而进行线性地址到物理地址的转换时,32位PAE虽然要处理大于32位的PDPTE,但是整体结构相对简单;64位虽然可以直接处理数据,但是多一级结构.
所以在地址转换上效率也应该是相当的

而你访问内存也就是这两步,所以PAE不应该影响性能

另外
IT工作者,在软件兼容的前提下,不去使用X64位,这不是怀旧,而是纯粹的迟钝!

中国人,在都是孩子的前提下,不去养别人家的孩子,这不是怀旧,而是纯粹的迟钝!
别人家的孩子比我好,你倒是去养啊!
这不是怀旧迟钝啥的问题,而是单纯的没逻辑
2013-10-13 06:49
0
雪    币: 118
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
35
啊哈.学习了.
有些有内存溢出又还挺好玩的垃圾游戏.
看来可以推迟重开的时间了~~哈

弱弱追问一句.
如果不patch PE,
CreateProcess那不能实现  "让没带这个标志的exe开启LAA"?
2013-10-13 09:04
0
雪    币: 222
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
1.楼主文盲,还停留在dos时代直接寻址,寻址能力是硬件决定的,32位cpu的地址线不止32根,64位cpu的地址线也不是64根,操作系统只是提供一个接口操作内存。
2.楼主没信仰,只是为了蹭饭
3.楼主语文不及格,自己半桶水还说别人看不懂

总结就是15楼说的:楼主无论是语文还是技术还是人品都不及格
2013-10-13 11:58
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
37
如果硬要说的话.32位在浮点运算的时候使用的是80bit  实际使用使用64bit 跟64位是一样的,速度没差别.

"X86-64新增的几组CPU寄存器将提供更快的执行效率。寄存器是CPU内部用来创建和储存CPU运算结果和其它运算结果的地方。标准的32-bit x86架构包括8个通用寄存器(GPR),AMD在X86-64中又增加了8组(R8-R15),将寄存器的数目提高到了16组。X86-64寄存器默认位64-bit。还增加了8组128-bit XMM寄存器(也叫SSE寄存器,XMM8-XMM15),将能给单指令多数据流技术(SIMD)运算提供更多的空间,这些128位的寄存器将提供在矢量和标量计算模式下进行128位双精度处理,为3D建模、矢量分析和虚拟现实的实现提供了硬件基础。通过提供了更多的寄存器,按照X86-64标准生产的CPU可以更有效的处理数据,可以在一个时钟周期中传输更多的信息。","大部分 64 位处理器架构可本地执行 32 位版本架构的代码,而无任何效能损失。这种支持通常称为双架构支持或更普遍的多架构支持。"来自维基百科

在同32位应用下.还是那句话,快的不是软件,是系统.....

还有啊,现在家用系统大部分都是MS的.哪个都不是我们中国这个家的,所以养哪个都一样,只是哪个适合养哪个....
所以还是那句话,IT工作前沿,只要自己所需要的软件可以迁移,就应该迁移到X64下.纯粹习惯或者怀念而浪费硬件性能不是一个IT工作者应该做的...
2013-10-13 18:19
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
唉,就您这半桶子水就别上来***眼了
xp不支持大内存的原因是因为微软的销售策略
pae是cpu特性与系统无关,大家的修改,就是让系统使用这个特性而已
2013-10-13 18:50
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
呵呵
同样的配置
您说是win8 64块 还是xp32块(打过补丁的)
2013-10-13 18:52
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
40
裸系统,WIN8 X64会更快.同32位软件 基本差不多 甚至XP更快.

如果同软件比如 winrar跟winrarx64  在对应平台 64会更快...
2013-10-13 19:02
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
不行,因为LAA的重点是最后一个aware,程序必须明确意识到指针可以大于7FFFFFFF
因为有的程序在判断指针有效性的时候可能是将其当作有符号数和0做大于比较,那么这就会导致一个合法的地址被误判.而除非你使用Virtual*系的函数,分配到的内存地址都是系统随机指定的.那么一个2G地址空间下能正常运行的程序很有可能在它第一个内存分配的时候因为误判地址非法而退出.而就算它具有完善的设计可以在内存分配"失败"的情况下继续运行,这一块内存也因为被判断为非法而没有释放,也就产生了内存泄漏
另外溢出和内存泄漏是两个不同的概念,而且我好像没见过内存溢出这个说法
2013-10-15 00:28
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
如果硬要说的话.32位在浮点运算的时候使用的是80bit 实际使用使用64bit 跟64位是一样的,速度没差别.

这句话我怎么就读不懂了.寄存器本身就是80位的,你要是在内部使用64位精度那么丢失了信息之后你还怎么拓展到80位?你不给我一个出处我可是不会相信的

你wikipedia引用是想作为什么的证明?请你明确的说出来

在同32位应用下.还是那句话,快的不是软件,是系统.....

由于寄存器更多,64位系统可能在编译优化上占更多便宜.但是我们之前讨论的只是内存管理.你不能说因为64位整体优化更好就代表内存管理的优化也好.我前面已经论证过32位PAE和64位在大内存管理下应该是只有微乎其微的差距的.如果你不同意,请就内存管理这一部分来说

所以还是那句话,IT工作前沿,只要自己所需要的软件可以迁移,就应该迁移到X64下.纯粹习惯或者怀念而浪费硬件性能不是一个IT工作者应该做的...

所以还是那句话,国防领域,只要自己所需要的武器可以迁移,就应该迁移到核武器.纯粹习惯或者怀念而浪费武器性能不是一个国防工作者应该做的...
你还没搞懂你逻辑上的问题么?x86-64比x86好只是迁移系统的一个充分但不必要条件.x86-64能干x86不能干的事情才是迁移系统的必要条件.而且具体决定是否迁移系统也不仅仅只有x64这一个因素.
理论界都说RISC比CISC好,你怎么不用你的手机办公?那可是纯粹的RISC机器啊
2013-10-15 00:38
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
43
其实你可以看下百度百科.里面就有写了.
http://baike.baidu.com/view/125381.htm这是地址

里面也阐明了对于X64为什么能提高速度的几个关键,整数运算能力的提高,增强多媒体性能诸如此类.当然在X64位下运行32位的程序是得不到性能提升的!所以,快的不是应用软件,而是系统

然后我们前面讨论的是内存 跟系统的选择.楼主选择X64.因为他原生支持大内存,而我表示64位还能得到额外的性能提升..我的出发点也是如此.当然,如果你说X64的慢于32位.那我就无话可说了.
2013-10-15 09:04
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
其实你可以看下百度百科.里面就有写了.
http://baike.baidu.com/view/125381.htm这是地址

首先当我说出处的时候,我其实指的是Intel® 64 and IA-32 Architectures Software Developer’s Manual,而不是百度百科
而就算是百度百科,它说的也是:
例如,x86 架构包含了 x87 浮点数指令,并使用 8 个 80 位寄存器构成堆栈结构。后来的 x86 修改版和 x86-64 架构,又加入 SSE 指令,它使用 8 个 128 位宽的寄存器(在 x86-64 中有 16 个寄存器)。

有说处理器只使用64bits么?
x86原生支持拓展精度浮点数(80bits),而对于双精度浮点数(64bits)和处理器的关系就是eax与ax的关系.ax是16位的,所以虽然eax是32位但处理器实际上只使用16位?你开玩笑呢

里面也阐明了对于X64为什么能提高速度的几个关键,整数运算能力的提高,增强多媒体性能诸如此类.当然在X64位下运行32位的程序是得不到性能提升的!所以,快的不是应用软件,而是系统

我一直都在说系统中内存管理这一块的对比(难道应用程序也能自发进行线性地址到物理地址的转换?),所以我不清楚你在这里说这个是想干什么

然后我们前面讨论的是内存 跟系统的选择.楼主选择X64.因为他原生支持大内存,而我表示64位还能得到额外的性能提升..我的出发点也是如此.当然,如果你说X64的慢于32位.那我就无话可说了.

首先,我哪句话说64位会比32位慢了的?我一直在说内存分页机制和地址转换,而我的结论则是PAE和64位在x86这个实现上对于内存地址转换的性能是相当的
但是为什么在大内存高负载计算的情况下32位PAE 表现不如X64呢

你不觉得你这句话多了个大内存PAE么?
如果你说的是"在高负载计算的情况下32位表现不如64位",这句话没错.但你把大内存管理也放了进来,而"在大内存的情况下32位表现不如64位"是错的.你不能用一个正确的结论捆绑一个错误的结论来证明你错误的结论是对的
还是举个例子证明你的逻辑错误:在无氧重体力劳动情况下女性不如男性->在无氧情况下女性不如男性
2013-10-20 04:24
0
雪    币: 113
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
你应该用32位2K3来对比
32位XP支持4G+有困难,完全是微软联合驱动制造者下的陷阱,无视规范占用3.25G+地址,恶意不兼容

一般应用中,内存比硬盘快几十倍就够了,至于是快40倍还是60倍,没有意义
2013-10-21 04:15
0
游客
登录 | 注册 方可回帖
返回
//