小编Car*_*los的帖子

如何以编程方式禁用硬件预取?

我想以编程方式禁用硬件预取.

使用硬件实现的预取程序优化英特尔®酷睿™微体系结构上的应用程序性能以及 如何在32位英特尔®架构上选择硬件和软件预取,我需要更新MSR以禁用硬件预取.

这是一个相关的片段:

"DPL预取和L2流预取设置也可以通过编写设备驱动程序实用程序来更改IA32_MISC_ENABLE 寄存器中的位来以编程方式进行更改MSR 0x1A0.这样的实用程序可以启用或禁用预取机制,而无需任何服务器停机.

下表显示了IA32_MISC_ENABLE MSR为了控制DPL和L2流预取而必须更改的位:

Prefetcher Type MSR (0x1A0) Bit Value 
DPL (Hardware Prefetch) Bit 9 0 = Enable 1 = Disable 
L2 Streamer (Adjacent Cache Line Prefetch) Bit 19 0 = Enable 1 = Disable"
Run Code Online (Sandbox Code Playgroud)

我尝试使用http://etallen.com/msr.html,但这不起作用.我使用也试图wrmsrasm/msr.h直接但段错误.我尝试在内核模块中执行此操作...并杀死了计算机.

顺便说一句 - 我使用的是内核2.6.18-92.el5并且它已MSR在内核中链接:

$ grep -i msr /boot/config-$(uname -r)
CONFIG_X86_MSR=y
...
Run Code Online (Sandbox Code Playgroud)

linux kernel prefetch

45
推荐指数
2
解决办法
1万
查看次数

-fno-strict-aliasing的性能影响

是否有任何研究或一组基准测试显示由于在GCC中指定-fno-strict-aliasing(或其他编译器中的等效项)而导致的性能下降?

c c++ compiler-construction performance

22
推荐指数
3
解决办法
2万
查看次数

什么时候编译器可以静态绑定对虚函数的调用?

我期望编译器能够静态解析对函数的函数调用,如果类的类型在编译时是已知的(例如,如果没有通过引用或指针使用类实例,如案例1中所示)下面).

但是,我观察到Visual Studio 2010的C++编译器有一种奇怪的行为,我想知道当虚拟类的实例时,编译器是否有任何理由不静态绑定对"正确"虚函数的调用函数是通过引用访问的结构中的成员.

我是否希望编译器在下面的案例2中静态绑定对f()的调用?cr的"参考"是否会以某种方式传播到cr.a,即使它a是一个A而不是一个A&

struct A
{
    virtual void f() ;
    virtual ~A() ;
};

struct B : A
{
    virtual void f() ;
    virtual ~B() ;
};

struct C {
    A a ;
    B b ;
};

C & GetACRef() ;

void test()
{
    // Case 1) The following calls to f() are statically bound i.e.
    // f() is called without looking up the virtual function ptr.
    C c ;  
    c.a.f() ; …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction polymorphism performance visual-studio-2010

13
推荐指数
1
解决办法
719
查看次数