- 1、本文档共74页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
P1原则的运用 本章反复应用P1原则来消除明显的浪费: 不必要的读和写消耗了内存和总线带宽 。 运用这个原则的困难在于,如果不把视野尽可能放宽到整个系统,浪费并不是显而易见的。 运用P1原则要求对整个系统有一个概要的了解,使用简单的模型(硬件、体系结构、操作系统、协议)就可以做到这一点。 系统技术的复杂性并不在于深度,而在于广度。 I/O Splicing 5.7 扩展到拷贝之外 利用load和store之间的空周期做累加计算,不需额外开销,拷贝循环可以扩展到包括检查和计算。 Integrated Layer Processing(ILP) 整合层次处理(ILP)的主要思想: 对同一个数据包进行多种数据操作时,将这些操作整合在一个循环中,避免对包中的数据进行多次的读和写(P1)。 ILP面临的问题 问题一: 不同操作需要的信息一般来自不同的层次,将不同层次的代码整合在一起而不牺牲模块化特性是极其困难的。 问题二: 不同操作可能需要在不同长度的数据块上以及数据包的不同部位进行。 ILP面临的问题(续) 问题三: 有些操作可能是相互依赖的。比如,如果数据包的TCP检查和验证失败,就不应当对包进行解密操作。 问题四: 过分提高整合度可能降低代码的局部性,增大cache miss率,反而产生不良的后果。 ILP的前景 ILP很难实现,且超过一定数量的操作整合在一起可能会降低性能。 特别是,如果包数据被使用几次,它可能驻留在d-cache中,使得整合操作完全没有必要。 因此,除了整合拷贝-检查和计算之外,在整合其它操作方面,学术界和工业界一直没有跟进。 5.8 扩展到数据操作之外 消除数据拷贝和整合数据操作,其技术共同点都是避免冗余的读/写操作,以减少对内存总线(以及I/O总线)的压力。 还有哪些因素会影响存储带宽的使用? Cache的使用效率 DMA或PIO的选择 5.8.1 有效使用 I-cache 处理器有一个或多个数据cache,以及一个或多个指令cache。 包数据几乎不能从 d-cache 获得好处。 处理数据包的程序代码可以从 I-cache 获益。 处理数据包需要的状态可以从d-cache 获益。 代码和状态都可能竞争内存带宽,其中代码对内存带宽的竞争更严重: 处理一个包需要的状态一般较小 协议栈处理的代码大得多 (1)代码布局 代码在内存中的布局是一个可以利用的自由度(P13)。 代码布局的主要思想: 通过安排代码在内存中的位置来优化常见情形(P11),使得最常使用的代码驻留在 I-cache中。 I-Cache的实现特点(1) 大多数处理器使用直接映射的I-cache: 内存地址的低位比特用来检索I-cache条目; 如果高位比特匹配,直接从I-cache返回内容; 若不匹配,进行一个主存访问,用新的数据替换原来的条目。 问题: 被映射到I-cache同一位置的代码会被轮流替换出去,即使它们都是经常使用的代码。 I-Cache的实现特点(2) 每个块包含多条指令: 许多I-cache可以看成是一个代码块的数组,每个代码块包含多条指令。 当取一条指令时,同一个代码块中的全部指令都会被读入。(基于空间局部性假设而优化) 问题: 不常用的代码会被读入I-cache,如果它与常用代码在一个块中。 举例 许多网络代码包含错误检查,比如: if error E do X, else do Z 虽然 Z 几乎从不被执行,但是编译器通常会将 Z 的代码紧跟在 X 的后面。 如果 X 和 Z 位于同一个指令块中,取经常使用的代码 X,会把不经常使用的代码 Z 也取进来,浪费了内存带宽和cache空间。 重新组织代码 解决方案: 重新组织代码,将经常使用的代码连续放置。 比如,将Z的代码放置到远离X的地方。 这里运用了两条原则: 代码在内存中的位置是一个可以利用的自由度(P13) 优化常见情形(P11) (2)局部性驱动的协议层处理 基本思想: 每个协议层一次处理多个包,分摊装载 I-cache的开销。 每一批处理的包数量越多,I-cache的使用越高效。 具体实现时,应能动态调整批处理的大小。 (3)软件工程方面的考虑 代码重新组织可以让编译器来做: 程序员对不常使用的代码分支进行标注,由编译器为I-cache重新组织代码。 局部性驱动的协议层处理需修改层间通信方法: 如果协议代码使用一个过程调用将数据包传递给上(下)一层,则代码修改为将数据包加入上(下)一层的一个包队列中。 当一个协议层被调用时,从自己的读队列中取数据包,直至队列取空。 5.8.2 DMA还是PIO PIO需要CPU参与,但易于整合其它功能。 DMA不需要CPU参与,但也不易于整合其它功能。 PIO 和 DMA 都存
您可能关注的文档
最近下载
- 公路桥涵施工技术规范(JTJ041-2000).doc VIP
- 西威变频器快速调试手册(电梯维修资料).pdf VIP
- 《国际汉语教师证书》考试汉办真题20170423 .pdf VIP
- 2025年高考语文课内文言文知识梳理(统编版)专题10《谏逐客书》(原卷版).docx VIP
- 07J905-1 防火建筑构造(一).pdf
- 2025年衢州常山县统计局公开招聘编外统计员13人笔试备考试题含答案详解(能力提升).docx
- 2025年贵州省中考数学真题试卷及答案.docx VIP
- 中国红磷阻燃剂项目商业计划书.docx
- gc65-全球小四频封装gsm gprs模块尺寸仅为opencpu规格说明书.pdf VIP
- 2025年中国车辆照明及电气信号设备制造项目投资计划书.docx
文档评论(0)