发新话题
打印

4GB内存平台全探秘0

4GB内存平台全探秘0

插上4GB只有3.25GB?. n7 e* b; [- M4 b

+ Y9 W# e) c* y  随着近来国际市场内存颗粒的逐渐跌价,内存条的价格也在不断降低,玩家们纷纷装备上了2GB容量的内存,而插满所有插槽达到4GB的内存容量对很多人也是一个极大的诱惑,在单条1GB内存价格300元上下的时候,4条也仅1200元,很多发烧友都能承受得起,因此时下组建4GB容量内存平台的玩家也不在少数。1 b, j1 l4 ~% x& f0 d4 {" h9 {
+ E$ @) c' r6 S( i) q% [7 s8 T" G; k

& u3 c8 V5 \! U' U2 s; |2 \5 `3 s7 j3 u8 Y: b9 o
# f, R! D; n( K1 f3 T
  然而,人们兴冲冲地买回4GB内存后,打开电脑进入系统,却发现系统显示的内存却远远不到4GB,是内存缩水了么?还是操作系统不支持4GB内存呢?无论如何,花了这么多钱却得不到应有的东西,无论是谁都很难受的。
5 h6 D; b4 O7 G- T% W' g/ a2 p: C$ O3 o. i
  那么,这些丢失的空间究竟哪里去了呢?) Y0 p5 H0 T, O' x) ^0 O
        
4 T, p+ i" ?: w5 }/ b- _0 |  ; D: W' m5 K% L" p/ w, W+ ^
  从上图可以看出,4GB的系统地址空间中,PCI内存范围占用了大量的地址范围——接近750MB,导致最后系统内存只有3.25GB的罪魁祸首就是这部分空间。0 y7 v" L" i9 \3 ?) l) f# r  q

0 n8 I; y; m, ]& ]8 ~$ L; o  这部分空间主要是什么内容呢?0 }; m8 A2 c& A3 @/ ~4 \
/ z7 P; E2 P+ A1 `% l' F. F# q

- O8 T  p/ l9 z% o6 d7 Q- p
. l8 l% a9 E: p) v( T( I# j* Y1 ?) J: V
4 {7 K  {# v# w- j9 X/ ~  ?
  上表列出了这部分黑洞空间包含的内容,我们可以看出,这些都是跟BIOS、PCI/PCIE设备等有关,系统和这些设备都是使用内存地址空间来通信的(以往也使用I/O Port来进行通信,然而其速度不够理想),我们称这部分空间为MMIO(MemoryMappedInput/Output,内存映射输入输出)空间,由于这些地址空间被设备所占用,实际上插在内存插槽上对应的空间就闲置、浪费了,因此我们花了4GB内存的钱,实际却只能得到3.25GB的可用空间!( e: o8 k. w* H) N9 K
6 C7 `7 w% S) l' N
  这部分内存能不能回收利用呢?4 N  a% g- l# d7 q" E1 C) R
符合PCI标准具有MMIO空间的系统,内存空间主要分为6大部分,如下图P965芯片组上的例子,分为一个保留地址区域、两个主内存地址区域、两个PCI内存地址区域及一个主内存回收地址区域:- g2 |, n- h7 @

; y4 A4 L* n  l/ a+ I9 U, M
6 \) d5 H5 m- i( j/ C
( q% l. X2 y* b1 c  G. Y  首先我们要清楚,在一个IA32系统上具有很多个地址的概念,在不考虑软件方面因素的时候,我们需要讨论到两个地址:物理地址和系统地址。. _1 p% N3 Y' A- A3 Z2 z, ?7 [% f
( L/ ^$ v  P1 h
  物理地址是指CPU可以寻址的地址范围,具有36bit内存总线的现代CPU可以支持对64GB的地址空间进行寻址(通过PAE技术,Physical Address Extension,物理地址扩展,从PentiumPro开始IA32CPU便开始支持这样的技术),而系统地址是指一个系统中插在内存槽上的内存的实际分配方式,也是操作系统中对应着的物理内存分配方式。
) x4 `3 c9 l) ~+ x& z5 ?
7 @5 c$ n' t; I  这样按照物理地址空间来划分,低于4GB的内存中具有的一个PCI内存区域就是我们通常说指的MMIO区域,由于对这部分地址的寻址都被内存控制器路由至相关的设备(如显卡等),因此这部分的内存就消失了,不能使用了,要想回收这部分空间,就要将对这部分地址的寻址正确地路由至内存,而不是路由至MMIO设备,这就是“回收地址空间”。
! `- X3 b( G) L  x2 w/ D由于MMIO占用的空间过于巨大——可以达到1GB以上,在一些4GB~8GB内存容量的服务器上损失就非常巨大——通常服务器需要大量的内存,这部分内存很重要——因此,芯片组厂商们——如Intel就开始考虑采用一些技术来回收利用这部分丢失的MMIO内存空间(实际上,MMIO的存在可以说是PCI标准所规定的,而PCI标准,就是Intel制定并力推的,因此解决这个问题,Intel责无旁贷)。
5 f/ J% N+ H' @& w& K! }& K
" z& ?9 b+ S! r. [, o4 @  Intel在服务器/工作站芯片组上率先布署了Memory Remapping(内存重映射)技术,用以解决这个问题。) T/ I; C* e4 V- Q$ G6 p4 K# o  p" q

/ P3 U% ]* s7 e& w# q6 t8 i; {% I/ g8 P- i6 ]. {
! s  v6 U5 D0 i% M6 S6 X
  如图所示,在CPU寻址的物理空间中,MMIO空间仍然存在,然而,在实际插入的内存中,这部分MMIO空间对应的却是一部分重映射内存空间,在CPU想使用这部分内存的时候,CPU将寻址高于4GB内存的这部分空间,内存控制器再对其进行转换,再寻址到实际的内存条。& N" I# \3 _# S
8 W5 U3 B( J- L6 ]
  由于对MMIO空间部分的地址进行了转换操作,因此这个技术就被称为Memory Remapping技术,通过这个技术,系统得以完全利用所有插上去的4GB(或者更多)的内存,而得以消除令人尴尬的3.25GB系统内存容量显示。

TOP

沙发啊

TOP

能解析的那么深```专家啊```
<strong>每天早上起床后都要看一遍《福布斯》富翁排行榜,如果上面没有我的名字,我就去上班……

TOP

发新话题