相关疑难解决方法(0)

什么是"缓存友好"代码?

" 缓存不友好代码 "和" 缓存友好 "代码之间有什么区别?

如何确保编写高效缓存代码?

c++ memory performance caching cpu-cache

703
推荐指数
7
解决办法
14万
查看次数

访问各种缓存和主内存的近似成本?

任何人都可以给我大概的时间(以纳秒为单位)来访问L1,L2和L3缓存,以及Intel i7处理器上的主内存吗?

虽然这不是一个特别的编程问题,但是对于某些低延迟编程挑战而言,了解这些速度细节是必要的.

memory latency low-latency cpu-cache

167
推荐指数
5
解决办法
8万
查看次数

每个程序员应该了解的内存?

我想知道Ulrich Drepper 从2007年开始对每个程序员应该知道的内容有多少仍然有效.另外,我找不到比1.0更新的版本或勘误表.

optimization x86 memory-management cpu-architecture micro-optimization

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

为什么这个C++ for循环的执行时间存在显着差异?

我正在经历循环,发现访问循环有显着差异.我无法理解在两种情况下造成这种差异的原因是什么?

第一个例子:

执行时间处理时间; 8秒

for (int kk = 0; kk < 1000; kk++)
{
    sum = 0;
    for (int i = 0; i < 1024; i++)
        for (int j = 0; j < 1024; j++)
        {
            sum += matrix[i][j];
        }
}
Run Code Online (Sandbox Code Playgroud)

第二个例子:

执行时间:23秒

for (int kk = 0; kk < 1000; kk++)
{
    sum = 0;
    for (int i = 0; i < 1024; i++)
        for (int j = 0; j < 1024; j++)
        {
            sum += matrix[j][i];
        }
} …
Run Code Online (Sandbox Code Playgroud)

c++ performance nested-loops

57
推荐指数
7
解决办法
7036
查看次数

为什么没有与缓存行大小一样宽的数据总线?

当发生高速缓存未命中时,CPU从主存储器中取出整个高速缓存行到高速缓存层次结构中.(通常在x86_64上为64个字节)

这是通过数据总线完成的,在现代64位系统上只有8字节宽.(因为字长是8字节)

编辑: "数据总线"表示在此上下文中CPU芯片和DRAM模块之间的总线.该数据总线宽度不一定与字大小相关.

根据策略,首先获取实际请求的地址,然后按顺序获取高速缓存行的其余部分.

如果有一个64字节宽的总线,它会更快,这将允许一次获取整个高速缓存行.(这将是字长的八倍)

也许可能有两种不同的数据总线宽度,一种用于标准高速缓存线提取,另一种用于外部硬件(DMA),仅适用于字大小存储器访问.

限制数据总线大小的限制是什么?

memory caching cpu-architecture cpu-cache micro-architecture

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