[问题]编译32位内核支持大内存的问题

编译打包和其他
回复
xingzhi
帖子: 8
注册时间: 2008-05-03 13:57

[问题]编译32位内核支持大内存的问题

#1

帖子 xingzhi » 2008-07-04 19:41

通过编译内核,32位的ubuntu8.04 desktop版已可以支持到64G内存,解决了系统默认小于4G的问题。
不过这样做是否有什么负面影响(对硬件、对系统运行速度)?否则官方内核为什么不直接默认支持64G内存?
不得其解,请高手指教!
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

#2

帖子 HuntXu » 2008-07-04 19:45

32位怎么支持的超过4G内存哦? :lol:
HUNT Unfortunately No Talent...
头像
sfbi
帖子: 796
注册时间: 2007-09-06 11:41
来自: Bergen

#3

帖子 sfbi » 2008-07-04 19:49

打开pae寻址,变成36位?感觉不如直接用64位来得又好又简单。
xingzhi
帖子: 8
注册时间: 2008-05-03 13:57

#4

帖子 xingzhi » 2008-07-04 19:56

HuntXu 写了:32位怎么支持的超过4G内存哦? :lol:
这个是可以的,重新编译内核,打开PAE就是了。
xingzhi
帖子: 8
注册时间: 2008-05-03 13:57

#5

帖子 xingzhi » 2008-07-04 19:57

sfbi 写了:打开pae寻址,变成36位?感觉不如直接用64位来得又好又简单。
64位的系统默认支持大内存,但我要用的软件在64位系统里无法安装,所以只能出此下策了。
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

#6

帖子 HuntXu » 2008-07-04 19:58

xingzhi 写了:
HuntXu 写了:32位怎么支持的超过4G内存哦? :lol:
这个是可以的,重新编译内核,打开PAE就是了。
那确实不如直接来64位的... :lol:

不会有影响的~而且实际效果提高应该不会很大,不过是内核支持多了而已...但是软件方面的呢?
HUNT Unfortunately No Talent...
poet
帖子: 2841
注册时间: 2006-09-11 22:47

Re: [问题]编译32位内核支持大内存的问题

#7

帖子 poet » 2008-07-04 20:03

xingzhi 写了:通过编译内核,32位的ubuntu8.04 desktop版已可以支持到64G内存,解决了系统默认小于4G的问题。
不过这样做是否有什么负面影响(对硬件、对系统运行速度)?否则官方内核为什么不直接默认支持64G内存?
不得其解,请高手指教!
这种方式是用映射来实现大于4G的访问。对运行速度有一定影响。——但是其实只要你的CPU够强,这个影响应该是几乎可以忽略的。

注:32位x86和64位x86的最主要区别,其实不在于内存,而在于寄存器:

32位x86指令有8个32位通用寄存器,8个SSE寄存器
64位x86指令有16个64位通用寄存器,16个SSE寄存器。

可以看到,64位x86指令可以使用的通用寄存器存储量为128字节,32位x86指令可以使用的通用寄存器容量只有32字节。寄存器容量方面的巨大差异决定了64位x86指令能够编译出更加有效率的代码。——这是CPU架构决定的,其实与他们究竟64还是32位无关。

所以,如果在64位x86 CPU上使用32位x86代码,就意味着你的CPU通用寄存器容量只有四分之一在起作用。SSE寄存器只有一半在起作用。

当然,这种差异只在x86体系中存在,其他体系的CPU,64位跟32位恐怕没有什么区别,仅仅只是内存访问空间不同而已。
上次由 poet 在 2008-07-04 20:04,总共编辑 1 次。
xingzhi
帖子: 8
注册时间: 2008-05-03 13:57

#8

帖子 xingzhi » 2008-07-04 20:03

HuntXu 写了: 那确实不如直接来64位的... :lol:

不会有影响的~而且实际效果提高应该不会很大,不过是内核支持多了而已...但是软件方面的呢?
没有仔细体验比较过,所以很想知道。 :)
xingzhi
帖子: 8
注册时间: 2008-05-03 13:57

Re: [问题]编译32位内核支持大内存的问题

#9

帖子 xingzhi » 2008-07-04 20:06

poet 写了:
xingzhi 写了:通过编译内核,32位的ubuntu8.04 desktop版已可以支持到64G内存,解决了系统默认小于4G的问题。
不过这样做是否有什么负面影响(对硬件、对系统运行速度)?否则官方内核为什么不直接默认支持64G内存?
不得其解,请高手指教!
这种方式是用映射来实现大于4G的访问。对运行速度有一定影响。——但是其实只要你的CPU够强,这个影响应该是几乎可以忽略的。

注:32位x86和64位x86的最主要区别,其实不在于内存,而在于寄存器:

32位x86指令有8个32位通用寄存器,8个SSE寄存器
64位x86指令有16个64位通用寄存器,16个SSE寄存器。

可以看到,64位x86指令可以使用的通用寄存器存储量为128字节,32位x86指令可以使用的通用寄存器容量只有32字节。寄存器容量方面的巨大差异决定了64位x86指令能够编译出更加有效率的代码。——这是CPU架构决定的,其实与他们究竟64还是32位无关。

所以,如果在64位x86 CPU上使用32位x86代码,就意味着你的CPU通用寄存器容量只有四分之一在起作用。SSE寄存器只有一半在起作用。

当然,这种差异只在x86体系中存在,其他体系的CPU,64位跟32位恐怕没有什么区别,仅仅只是内存访问空间不同而已。
嗯,明白了。
非常感谢!
回复