加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

如何选择并实现高性能纠删码编码引擎(下)

发布时间:2021-01-16 05:55:16 所属栏目:电商 来源:网络整理
导读:《如何选择并实现高性能纠删码编码引擎(下)》要点: 本文介绍了如何选择并实现高性能纠删码编码引擎(下),希望对您有用。如果有疑问,可以联系我们。 作者介绍: 徐祥曦,七牛云工程师,独立开发了多套高性能纠删码/再生码编码引擎.柳青,华中科技大学博士,研

向前跳转经常用在检查函数参数的代码块中,如果我们避免了传入长度为0的数据切片,这样可以在汇编中去掉相关的分支判断.在我的代码中仅有一条向后条件跳转指令,用在循环代码块的底部.需要注意的是,以上2、3点中的优化方法是为了符合静态分支预测算法的要求,然而在市场上基于硬件动态预测方法等处理器占主导地位,因此这两点优化可能并不会起到提高分支预测准确度的作用,更多的是良好的编程习惯的问题.

对于CPU的执行引擎来说,其往往包含多个执行单元实例,这是执行引擎并发执行多个微操做的基本原理.另外CPU内核的调度器下会挂有多个端口,这意味着每个周期调度器可以给执行引擎分发多个微操作.因此我们可以利用循环展开来提高指令级并行的可能性.

循环展开就是将循环体复制多次,同时调整循环的终止代码.由于它减少了分支判断的次数,因此可以将来自不同迭代的指令放在一起调度.

当然,如果循环展开知识简单地进行指令复制,最后使用的都是同一组寄存器,可能会妨碍对循环的有效调度.因此我们应当合理分配寄存器的使用.另外,如果循环规模较大,会导致指令缓存的缺失率上升.Intel的优化手册中指出,循环体不应当超过500条指令.[4]

四小结

以上内容较为完整的还原了纠删码引擎的实现过程,涉及到了较多的数学和硬件层面的知识,对于大部分工程师来说可能相对陌生,我们希望通过本系列文章的介绍能够为大家的工程实践提供些许帮助.但受限于篇幅,很多内容无法全面展开.比如,部分数学工具的理论与证明并没有得到详细的解释,还需要读者通过其他专业资料的来进行更深入的学习.

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读