通过编译内核,32位的ubuntu8.04 desktop版已可以支持到64G内存,解决了系统默认小于4G的问题。
不过这样做是否有什么负面影响(对硬件、对系统运行速度)?否则官方内核为什么不直接默认支持64G内存?
不得其解,请高手指教!
[问题]编译32位内核支持大内存的问题
-
- 帖子: 8
- 注册时间: 2008-05-03 13:57
-
- 帖子: 8
- 注册时间: 2008-05-03 13:57
- HuntXu
- 帖子: 5776
- 注册时间: 2007-09-29 3:09
-
- 帖子: 2841
- 注册时间: 2006-09-11 22:47
Re: [问题]编译32位内核支持大内存的问题
这种方式是用映射来实现大于4G的访问。对运行速度有一定影响。——但是其实只要你的CPU够强,这个影响应该是几乎可以忽略的。xingzhi 写了:通过编译内核,32位的ubuntu8.04 desktop版已可以支持到64G内存,解决了系统默认小于4G的问题。
不过这样做是否有什么负面影响(对硬件、对系统运行速度)?否则官方内核为什么不直接默认支持64G内存?
不得其解,请高手指教!
注: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 次。
-
- 帖子: 8
- 注册时间: 2008-05-03 13:57
-
- 帖子: 8
- 注册时间: 2008-05-03 13:57
Re: [问题]编译32位内核支持大内存的问题
嗯,明白了。poet 写了:这种方式是用映射来实现大于4G的访问。对运行速度有一定影响。——但是其实只要你的CPU够强,这个影响应该是几乎可以忽略的。xingzhi 写了:通过编译内核,32位的ubuntu8.04 desktop版已可以支持到64G内存,解决了系统默认小于4G的问题。
不过这样做是否有什么负面影响(对硬件、对系统运行速度)?否则官方内核为什么不直接默认支持64G内存?
不得其解,请高手指教!
注: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位恐怕没有什么区别,仅仅只是内存访问空间不同而已。
非常感谢!