Algorithm 现代处理器如何执行整数算术运算?

Algorithm 现代处理器如何执行整数算术运算?,algorithm,architecture,cpu-architecture,integer-arithmetic,Algorithm,Architecture,Cpu Architecture,Integer Arithmetic,维基百科页面提到了不同数学运算的计算复杂性,包括加法、减法、乘法和除法。我想把重点放在这四个方面 首先,上面提到的每一个操作都有其复杂性,它是数字数量的函数。这是否意味着在真正的硬件上添加任意两个int64\ts将花费相同的时间 这是一个重要方面,因为它允许攻击者从加密/解密方获取一些信息,例如加密密钥 添加两个int32\ts会比添加两个int64\ts短两倍吗 此外,还为乘法和除法运算指定了多种算法。以下哪一项用于现实生活中的处理器?我们知道渐近复杂性,但也有常数,这非常重要 《英特尔软件开

维基百科页面提到了不同数学运算的计算复杂性,包括加法、减法、乘法和除法。我想把重点放在这四个方面

首先,上面提到的每一个操作都有其复杂性,它是数字数量的函数。这是否意味着在真正的硬件上添加任意两个
int64\t
s将花费相同的时间

这是一个重要方面,因为它允许攻击者从加密/解密方获取一些信息,例如加密密钥

添加两个
int32\t
s会比添加两个
int64\t
s短两倍吗

此外,还为乘法和除法运算指定了多种算法。以下哪一项用于现实生活中的处理器?我们知道渐近复杂性,但也有常数,这非常重要

《英特尔软件开发人员手册》
IMUL
指令没有提及实际使用的算法,只是说明:

TMP_XP ← DEST ∗ SRC
整个问题一开始都与x86_64体系结构有关,但如果其他体系结构(ARM、Aarch64、POWER)使用与x86不同的技术,我会很感兴趣

这是否意味着在真正的硬件上添加任意两个
int64\t
s将花费相同的时间

如果CPU的宽度为64位,则为“是”

我这样评价它,是因为目前仍在设计带有32位或更小ALU的“现代”处理器,主要是为嵌入式市场设计的

这将允许攻击者从加密/解密方获取一些有关加密密钥的信息

我不确定基于时间的侧通道攻击是否像您的问题前提中那样有效。如果与该处理器的真正64位版本相比,给定处理器上的64位数学需要多个操作,则整个算法中的所有整数数学运算速度都会减慢,因此攻击者将了解到的只是他们在能力较低的处理器上运行它

由于指令执行率而导致的侧通道泄漏是指存在if/else分支,并且一个分支比另一个分支花费的时间更长,因此从统计上来说,攻击者可以探测哪些输入导致执行的
if
子句多于
else
子句,从而收集一些关于钥匙的信息

添加两个
int32\t
s会比添加两个
int64\t
s短两倍吗

不一定。64位处理器可能同时运行这两个加法器

如果你想问这是否会发生在32位处理器上,那么答案是“可能是”,但实际上,这是你需要在处理器数据手册中查找的内容。这将为您提供每个指令的计时信息

您的问题指定了四种不同的体系结构,您至少缺少一种关键架构(32位x86,仍然存在),并且缺少其他几种可能的架构。(例如…)我不准备阅读所有可能的处理器手册并为您查找

《英特尔软件开发人员手册》中的
IMUL
指令没有提到实际使用的算法

不,但它应该以时钟周期数给出定时信息

可能不会简单地说,因为,这样也会影响到这一点

如果其他架构(ARM、AARC64、POWER)使用与x86不同的技术,我会很感兴趣

当然。这方面没有硬性规定

例如,像ARM这样的RISC处理器往往需要至少4条指令来执行乘法之类的操作,因为它们需要一个读取-计算-存储周期,因为所有的数学运算都必须在处理器的寄存器中进行。(读取操作数1,读取操作数2,相乘,存储乘积。)

与通常具有内存寻址模式的CISC处理器相比,乘法指令可能被编码为“将内存位置a与内存位置B相乘并存储在内存位置C”。操作数仍然必须加载到CPU并相乘,结果仍然必须存储,但它看起来像一条指令

CISC模型还掩盖了DRAM读取延迟、缓存定时问题等问题,RISC模型使之更加明确

曾几何时,处理器非常简单,你可以很容易地回答这样一个问题,但我们已经超过这一点几十年了

这是否意味着在真正的硬件上添加任意两个
int64\t
s将花费相同的时间

如果CPU的宽度为64位,则为“是”

我这样评价它,是因为目前仍在设计带有32位或更小ALU的“现代”处理器,主要是为嵌入式市场设计的

这将允许攻击者从加密/解密方获取一些有关加密密钥的信息

我不确定基于时间的侧通道攻击是否像您的问题前提中那样有效。如果与该处理器的真正64位版本相比,给定处理器上的64位数学需要多个操作,则整个算法中的所有整数数学运算速度都会减慢,因此攻击者将了解到的只是他们在能力较低的处理器上运行它

由于指令执行率而导致的侧通道泄漏是指存在if/else分支,并且一个分支比另一个分支花费的时间更长,因此从统计上来说,攻击者可以探测哪些输入导致执行的
if
子句多于
else
子句,从而收集一些关于钥匙的信息

添加两个
int32\t
s会比添加两个
int64\t
s短两倍吗

不一定。64位处理器可能运行bo