首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每字节计算周期

每字节计算周期
EN

Cryptography用户
提问于 2012-10-02 21:43:50
回答 2查看 1.8K关注 0票数 5

在设计和选择流密码时,每个字节的周期似乎是一个关键问题。例如,从维基百科来看,RC4在原始奔腾芯片上有7个周期/字节。

这是怎么计算出来的?它们是否只是对多兆字节的加密进行计时,然后除以CPU的时钟速度?他们是否在某个表中查看汇编代码和每条指令的查找周期、流水线计算、分支预测等?

EN

回答 2

Cryptography用户

回答已采纳

发布于 2012-10-02 22:08:41

通过查看程序集来预测速度是很困难的,特别是因为处理器做了各种有内存的技巧(例如分支预测)。所以是的,这都是关于测量的。

这是一门艺术;例如,您宁愿重复加密相同的相对较小的缓冲区(4或8 kB),以避免缓存效果。一种方法是多次重复加密,以消除外部活动引起的诸如IRQ这样的随机效应(例如,调整循环计数,使运行时间至少为5秒)。二是利用循环计数器平台进行精确测量。无论哪种方式,您都需要做一些“热身”,以确保代码都在L1缓存中,并且分支预测已经达到永久状态;这在为需要JIT编译的虚拟机(例如Java或.NET实现)对实现进行基准测试时尤为重要。

有关如何使用“重复处理”方法处理散列函数的示例,请参见斯皮利卜eBACS是一项巨大的基准测试工作,它更喜欢使用循环计数器。

票数 6
EN

Cryptography用户

发布于 2012-10-02 22:03:30

他们测量它。

很久以前,CPU非常简单,您可以通过查找手册中每条指令的时钟来计算一段代码的时间量,并将它们全部加在一起,这就是总时间。

然而,CPU制造商增加了越来越多的优化和并行性;这使得CPU运行得更快(例如,使用内存缓存、在管道中执行指令、无序执行指令),然而,对于某个人来说,查看某些代码并生成估计值变得越来越困难。

因此,与其试图处理复杂性,我们只是测量它。

票数 6
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/3943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档