除了2MB之外的Windows大页面支持?

除了2MB之外的Windows大页面支持?,windows,paging,virtual-memory,huge-pages,Windows,Paging,Virtual Memory,Huge Pages,我读到英特尔芯片支持高达1GB的虚拟内存页面大小。将VirtualAlloc与MEM_LARGE_页面一起使用可以获得2MB页面。有没有办法获得不同的页面大小?我们目前正在使用Server 2008 R2,但正计划升级到Server 2012。看起来不像,它没有提供定义大型页面大小的机制。您只需要进行分配,分配的大小(以及对齐方式,如果明确要求的话)都是相同的 我认为从理论上讲,Windows可以在内部实现多个大页面大小(API函数只告诉您最小大小),但它们不会在API级别公开它。在实践中,我希

我读到英特尔芯片支持高达1GB的虚拟内存页面大小。将VirtualAlloc与MEM_LARGE_页面一起使用可以获得2MB页面。有没有办法获得不同的页面大小?我们目前正在使用Server 2008 R2,但正计划升级到Server 2012。

看起来不像,它没有提供定义大型页面大小的机制。您只需要进行分配,分配的大小(以及对齐方式,如果明确要求的话)都是相同的


我认为从理论上讲,Windows可以在内部实现多个大页面大小(API函数只告诉您最小大小),但它们不会在API级别公开它。在实践中,我希望越来越大的页面的回报会越来越小;当您已经将TLB使用量减少了几个数量级时,TLB缓存未命中的开销就没有那么重要了。

较大的页面大小由处理器决定。在启用PAE的x86上,大页面为2MB。请参阅“英特尔系统体系结构”(第3A卷)中的表4-2。是否可以告诉windows使用特定的大小?正如我在前面的评论中所指出的:windows不控制大小。处理器控制大小。不,Windows无法实现。这件事是在CPU硬件中实现的:@Soonts:该引用清楚地表明,一些芯片支持多个页面大小,而不仅仅是一个默认值。我不是说Windows完全可以在软件中定义任意大的页面大小,我是说他们可以从硬件中选择可用的选项;如果不清楚,请道歉。请注意,桌上的大多数芯片都不运行Windows。只有x86和x86-64芯片可以。在这些芯片上,根本没有选择余地,您要么在32位模式下获得4MB页面,而不使用PAE,要么在其他模式下获得2MB页面。@Soons:long模式下的现代x86-64也支持1GB页面。不确定这会有多实际(我想不出在HPC空间之外有多少情况下1GB页面是有意义的),但它是可用的。