相关疑难解决方法(0)

在intel 64bit机器上启用/禁用缓存:CD位总是设置?

我正在尝试在Xen中禁用我的机器Intel(R)Xeon(R)CPU E5-1650 v2 @ 3.50GHz的所有级别的缓存.我编写了一个工具来调用以下汇编代码来禁用/启用缓存并显示CR0寄存器的值.

case XENMEM_disable_cache:
    __asm__ __volatile__(
        "pushq %%rax\n\t"
        "movq %%cr0,%%rax\n\t"
        "orq $0x40000000,%%rax\n\t"
        "movq %%rax,%%cr0\n\t"
        "movq %%cr0, %0\n\t"
        "wbinvd\n\t"
        "popq  %%rax"
        : "=r"(cr0)
        :
        :);
    // gdprintk(XENLOG_WARNING, "gdprintk:XENMEM_disable_cache disable cache!
    // TODO IMPLEMENT\n");
    printk("<1>printk: disable cache! cr0=%#018lx\n", cr0);
    rc = 0;
    break;

case XENMEM_enable_cache:
    __asm__ __volatile__(
        "pushq %%rax\n\t"
        "movq %%cr0,%%rax\n\t"
        "andq $0xffffffffbfffffff,%%rax\n\t" /*~0x4000000*/
        "movq %%rax,%%cr0\n\t"
        "movq %%cr0, %0\n\t"
        "popq  %%rax"
        : "=r"(cr0)
        :
        :);
    printk("<1>printk: enable cache; cr0=%#018lx\n", cr0);
    rc = 0;
    break;

case XENMEM_show_cache:
    __asm__ __volatile__(
        "pushq …
Run Code Online (Sandbox Code Playgroud)

c assembly kernel linux-kernel

8
推荐指数
1
解决办法
1256
查看次数

与缓存预取提示相反

我是否可以在代码中添加提示,指示应从缓存中删除一行?与预取提示相反,这表明我将很快需要一条线.在我的情况下,我知道什么时候我不需要一条线,所以我希望能够摆脱它以释放我需要的线的空间.

performance x86 assembly caching x86-64

6
推荐指数
1
解决办法
281
查看次数

x86-64:缓存加载和逐出指令

对于x86-64架构,是否有一条指令可以将给定内存地址的数据加载到缓存中?类似地,是否存在可以在给定与该高速缓存行对应的存储器地址(或类似高速缓存行标识符)的情况下逐出高速缓存行的指令?

x86 assembly x86-64

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

标签 统计

assembly ×3

x86 ×2

x86-64 ×2

c ×1

caching ×1

kernel ×1

linux-kernel ×1

performance ×1