假设一台计算机有64k的L1缓存和512k的L2缓存.
程序员已经在主存储器中创建/填充了10mb数据的数组(例如,3d模型的顶点/索引数据).
该数组可能包含一系列结构,如:
struct x
{
vec3 pos;
vec3 normal;
vec2 texcoord;
};
Run Code Online (Sandbox Code Playgroud)
接下来,程序员必须在将数据传递到GPU之前对所有这些数据执行一些操作,例如一次正常计算.
CPU如何决定如何将数据加载到L2缓存中?
程序员如何检查任何给定体系结构的缓存行的大小?
程序员如何确保数据的组织以适应缓存行?
数据对齐字节边界是否可以完成以帮助此过程?
程序员可以做些什么来最小化缓存未命中?
哪些分析工具可以帮助可视化Windows和Linux平台的优化过程?