1
3
第一“每个CPU指令可以处理32位数据”是一个(技术上不正确的)概括。例如(32位80x86),有一些指令(例如。
用于性能;最好将其视为“可以在固定时间内完成的工作量”或“完成固定工作量的时间”。这可以分为两个值-需要执行多少指令才能完成一定量的工作,以及在固定时间内可以执行多少指令(每秒指令数)。 现在考虑添加一对128位整数。对于32位CPU,必须将其分解为四个32位加法,可能如下所示:
在本例中,“需要多少指令才能完成一定量的工作”是8个指令。 使用16位CPU,您需要更多指令。例如,它可能更像这样:
在本例中,“需要多少指令才能完成一定量的工作”是16条指令。对于这项工作,使用相同的“每秒指令数”,16位CPU的速度将是32位CPU的一半。 使用64位CPU,这项工作只需要4条指令,可能如下所示:
在这种情况下,使用相同的“每秒指令数”,64位CPU的速度将是32位CPU的两倍(和16位CPU的4倍)。 当然,高级源代码在所有情况下都是相同的——不同之处在于编译器生成的内容。
请注意,我在这里展示的(128位整数加法)是一个“好例子”-我之所以选择这一点,是因为很容易显示较大的寄存器可以减少/改进“需要执行大量工作的指令数”,从而提高性能(在相同的“每秒指令数”下)。对于不同的工作,你可能不会得到相同的改进。例如,对于使用8位整数的函数(例如。
|
2
1
一次能传输32位数据的计算机、操作系统或软件程序。对于计算机处理器(例如80386、80486和奔腾),它们是32位处理器,这意味着处理器能够处理32位二进制数(十进制数高达4294967295)。任何较大的数据,计算机都需要将数字分解为较小的部分 |
3
0
“单词”是变化的基本单位的大小。 这个CPU除了是一个32位CPU外,还有一个32位大小的字。如果它正在更改项目,除非使用额外的CPU周期,否则它可以更改的最大“单个”项目是一个32位值。 这并不意味着任何32位都可以用一条指令更改。但是,如果32位都是同一个字的一部分,则可以在一条指令中更改它们。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |