假设一台计算机有 64k 的 L1 缓存和 512k 的 L2 缓存。
程序员已经在主内存中创建/填充了一个 10mb 的数据数组(例如 3d 模型的顶点/索引数据)。
该数组可能包含一系列结构,例如:
struct x
{
vec3 pos;
vec3 normal;
vec2 texcoord;
};
接下来,程序员必须对所有这些数据执行一些操作,例如,在将数据传递给 GPU 之前进行一次正常计算。
CPU 如何决定数据如何加载到 L2 缓存中?
程序员如何检查任何给定架构的高速缓存行的大小?
程序员如何确保组织数据以使其适合高速缓存行?
数据对齐到字节边界是唯一可以帮助这个过程的事情吗?
程序员可以做些什么来最大程度地减少缓存未命中?
有哪些分析工具可以帮助可视化 windows 和 linux 平台的优化过程?