cpu-cache

    12热度

    3回答

    CUDA 2.0设备上是否有任何方法来禁用L1缓存仅适用于一个特定变量? 我知道在编译时可以禁用L1高速缓存,为所有内存操作添加标记-Xptxas -dlcm=cg至nvcc。 但是,我想只在特定全局变量的内存读取时禁用高速缓存,以便所有剩余的内存读取通过L1高速缓存。 基于我在网上完成的搜索,可能的解决方案是通过PTX汇编代码。

    10热度

    1回答

    编辑:ST不允许为新手发布两个以上的链接。抱歉缺少参考。 我试图减少C应用程序检测全局状态变化的性能相关的锁定开销。尽管最近我在这个主题上阅读了很多内容(例如H. Sutter等等),但我对自己的实施没有信心。我想使用CAS类似的操作和DCL的组合来检查全局变量,从而避免虚假共享,以便从多个线程之间共享的数据更新线程本地数据时检查全局变量的高速缓存行对齐。我的信心不足的主要原因是 我无法解释在Ty

    3热度

    1回答

    我试图根据的/ proc/cpuinfo中决定处理器关联性规则为我的申请,我的RedHat Linux上showes processor : 0 to 47 , means server has 48 processor unit physical id : 0 to 3 , means server has 4 cpu sockets cpu cores : 6 , means each

    1热度

    1回答

    有没有什么方法可以保证你只访问映射到n路组关联缓存中同一组的块,如果你不知道关联性还是缓存本身的大小?我知道,无论是关联程度还是缓存大小,都可以做到这一点,但在这种特殊情况下,我所得到的只是缓存大小的低估值。我想了一会儿,我开始相信这是不可能的,但我并不确定。 为了这个问题,请假设无法通过任何方式获得关联性级别或缓存大小。 原因是我试图定量确定关联的级别,但是我用来定量确定缓存大小的算法只给出了两

    1热度

    1回答

    我想弄清楚如何计算数组缺失率。我有答案,但我不明白答案是如何得出的。 我有以下代码: int C[N1][N2]; int A[N1][N3]; int B[N3][N2]; initialize_arrays(A, B, C, N1, N2, N3); for(i=0; i<N1; ++i) for(j=0; j<N2; ++j) for(k=0; k<N3,

    3热度

    2回答

    一些体系结构有一个“预取写入”指令,用于向CPU表明在实际执行操作之前将要写入内存位置。我明白,在多核机器上,核心可以使用它作为暗示,它应该尝试现在获得给定高速缓存行的所有权,以便稍后可以更快地写入该位置。但是,AFAICT应该只在两个核心有可能竞争缓存线的情况下才起作用。对于仅由单个内核读取和写入的高速缓存行,预取写入是否有用?

    1热度

    2回答

    在Java中,所有线程都使用相同的堆。如果一个线程正在将操作缓存到堆中,何时它会冲刷堆? 我读过这么多的帖子,但无法找到答案。 谢谢。

    2热度

    2回答

    我在我的PC上使用Ubuntu 12.04和Intel i5 450。 我使用了两种方法来获得1级指令缓存的缓存行大小。 但结果不同。 [email protected]:~/ws$ getconf LEVEL1_ICACHE_LINESIZE 32 [email protected]:~/ws$ cat /sys/devices/system/cpu/cpu0/cache/index1

    5热度

    1回答

    我对使用ARM cortex A8中的PLD指令有一些疑问。由于我在循环内部使用指令,因此存在访存限制内存的可能性。我的疑问是,这是否会导致分段错误。我在ARM manual which states that 读取由于PLD指令被缓存的所有水平的任何其它负载指令处理中,PLD指令遵循标准的数据依赖关系的规则和程序的驱逐。在PLD执行的任何阶段,PLD指令在地址转换错误,缓存命中或中止时被忽略。

    2热度

    2回答

    你能帮我找出是否需要更长的时间才能完成缓存写入,当有更多的内核/缓存持有该行的副本时。 我也想测量/量化它实际需要多长时间。 我找不到对谷歌有用的东西,我有麻烦了测量它自己加解释什么,我衡量的,因为很多事情可以在一个现代的处理器发生。 (重新排序,预取缓冲和上帝知道什么) 详情: 我测量它的基本流程大致如下: write soemthing to the cacheline on processo