计算机组织与结构:LEC09_高速缓存.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Athlon64存储层次 L1 Dcache:64KB,2路,3拍延迟 Icache:64KB,2路,3拍延迟 L2 片上256KB/512KB/1MB,16路 2个load/store部件 特色:HT接口,片上DDR内存控制器 * 作 业 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 数组合并 通过数组合并降低数组val和key的冲突,增加空间局部性 /* Before: 2 sequential arrays */ int val[SIZE]; int key[SIZE]; /* After: 1 array of stuctures */ struct merge { int val; int key; }; struct merge merged_array[SIZE]; * 循环交换 通过循环交换提高空间局部性,把非连续访问变换成连续访问 /* Before */ for (k = 0; k 100; k = k+1) for (j = 0; j 100; j = j+1) for (i = 0; i 5000; i = i+1) x[i][j] = 2 * x[i][j]; /* After */ for (k = 0; k 100; k = k+1) for (i = 0; i 5000; i = i+1) for (j = 0; j 100; j = j+1) x[i][j] = 2 * x[i][j]; * 循环合并 通过循环合并提高空间局部性,数组a c的失效次数从2次降低到1次 /* Before */ for (i = 0; i N; i = i+1) for (j = 0; j N; j = j+1) a[i][j] = 1/b[i][j] * c[i][j]; for (i = 0; i N; i = i+1) for (j = 0; j N; j = j+1) d[i][j] = a[i][j] + c[i][j]; /* After */ for (i = 0; i N; i = i+1) for (j = 0; j N; j = j+1) { a[i][j] = 1/b[i][j] * c[i][j]; d[i][j] = a[i][j] + c[i][j];} * 数组分块 分块前,y和z失效N3次,x失效N2次,总失效次数从2N3 + N2 分块后,由于可以在cache中放下BxB的小矩阵,y和z失效1次,可以用B次,因此失效次数从2N3 + N2 降为 2N3/B +N2 /* Before */ for (i = 0; i N; i = i+1) for (j = 0; j N; j = j+1) {r = 0; for (k = 0; k N; k = k+1){ r = r + y[i][k]*z[k][j];}; x[i][j] = r; }; /* After */ for (jj = 0; jj N; jj = jj+B) for (kk = 0; kk N; kk = kk+B) for (i = 0; i N; i = i+1) for (j = jj; j min(jj+B-1,N); j = j+1) {r = 0; for (k = kk; k min(kk+B-1,N); k = k+1) { r = r + y[i][k]*z[k][j];}; x[i][j] = x[i][j] + r; }; * 软件优化的效果 * 降低MissPenalty 关键字优先 读失效优先 Victim Cache 写合并 多级Cache * 通过关键字优先降低失效延迟 在Cache访问失效时,优先访问读访问需要的字 例如,Cache块大小为64字节,分为8个8字节的双字,如果取数指令访问其中的第6个双字引起Cache失效,就按6、7、0、1、2、3、4、5的次序,而不是按0、1、2、3、4、5、6、7的次序访问内存 关键字优先的实现只需要对访问地址进行简单变换。 在失效的数据从内存取回之后,往Cache送的同时直接送回到寄存器也可以降低失效延迟。 block * 通过读优先降低失效延迟 读Cache失效对指令流水线效率的影响比写失效大 在处理器中一般都有写缓存(Write Buffer),写指令只要把

文档评论(0)

学习让人进步 + 关注
实名认证
文档贡献者

活到老,学到老!知识无价!

1亿VIP精品文档

相关文档