2

我不知道我的问题是否相关。但我想知道的是,这两者如何影响 cpu 性能?我唯一知道的对于具有相同架构的 CPU,时钟速度越高越快CPU的处理能力,但是字长呢??它会如何影响CPU的速度,哪一个真正决定了CPU的速度??是否相互矛盾??谢谢。

4

5 回答 5

1

理论上,较大的字长会使代码变慢一些。原因是在 64 位架构中,指针是 64 位字,因此充满指针的数据结构(列表、树、哈希表......)往往比等效代码在 32位架构。普通 RAM 很慢(它不会像 CPU 想要的那样快速响应),因此 CPU 嵌入了少量快速 RAM,称为缓存,其中存储了最常用的数据。缓存大小是有限的(在 Intel 的现代 x86 上通常为 32 kB)。64 位指针使处理器更难存储尽可能多的数据元素,从而降低了性能。

然而...

上面有几个警告,尤其是在 x86 平台上:

  1. 在许多应用程序中,大部分数据不是指针。例如,在一个 3D-heavy 应用程序(游戏)中,大多数数据是图片(纹理)和对象坐标。此类数据不受平台默认字长的影响。

  2. 64 位指针允许应用程序轻松寻址超过 4 GB 的 RAM。对于 RAM 超过 4 GB 的机器上需要大量 RAM 的应用程序(例如摄影编辑),64 位字允许使用更多 RAM,虽然速度很慢,但仍然比硬盘快得多。在同样的情况下,32 位应用程序需要处理 RAM 和硬盘之间的数据块。

  3. 在 x86 处理器上(所有现代 PC 和 Mac 都会发生这种情况),由于历史原因,64 位模式不仅仅带有 64 位寄存器;它还为应用程序提供了两倍的寄存器,这有助于提高性能。64 位模式还带有 SSE2,它比以前使用的 x86 处理器处理浮点数据的速度更快。

因此,如果可能,在 PC 或 Mac 上,首选 64 位操作系统和应用程序。64 位代码的更好性能不是更大字长的结果。这是其他特性的结果,这些特性在历史上是随着这些架构的 64 位模式出现的。

在其他系统(例如 PowerPC)上,当 32 位和 64 位模式都可用时,通常首选 32 位,除了需要大量内存的应用程序(假设 RAM 大小希望访问超过 4 GB 的 RAM)是可用的),并且对于希望对超过 32 位整数执行计算的极少数应用程序(例如,这发生在某些加密算法中)。

于 2011-02-24T15:09:45.420 回答
0

理论上...

当我们测量 CPU 内存读/写数据传输时,以每秒字节数为单位的内存流量由以下组成:

  1. 内存字大小(宽度),以字节为单位
  2. CPU时钟速度
  3. 每次读/写的 CPU 周期

DataTransfer = WordSize * CpuClock / RW_Cycles

编辑:

理论上我是sed!理论上,这个等式 100% 有效,也适用于 DSP 处理器或 FPGL 逻辑。在现代 CPU 中,这对于 DMA 逻辑是正确的,那么为什么是 -1?

于 2011-02-23T09:22:35.567 回答
0

嗯,这一切都会影响速度……你有内存总线大小、处理器总线大小、缓存线大小、寄存器大小、时钟速度(可能因 CPU 的不同部分而异)、每条指令的不同周期数、指令延迟、芯片多线程、超标量执行单元等。没有简单的公式可以用时钟速度和字长来比较单元并查看哪个更快。显然 1mhz 8 位 CPU 会比 64 位 3.2ghz CPU 慢,但确定 1.8 ghz 64 位 CPU 是否比 2.4 ghz 32 位机器更快是一个问题,并且可能取决于在确切的工作量上。分析您的工作量是唯一真正了解的方法。

于 2011-02-23T15:52:32.247 回答
0

时钟速度不受字长的影响,因为字长由数据总线的大小决定,所以无论是 32 位还是 64 位,cpu 只从内存读取/写入一次。

于 2011-02-23T21:47:19.007 回答
-1

大多数时候,CPU 将数据从一个地方复制到另一个地方。如果它可以在 64 位而不是 8 位的粒度上做到这一点,它会快 8 倍。

这与操作的原理相同。在 32 位 CPU 上执行 32 位加法的速度比在 8 位 CPU 上快 4 倍(不计算内存访问的增益)。

编辑(关于时钟速度):所有 CPU 操作(从内存加载、存储到内存、添加值......)都需要执行给定数量的时钟滴答,通常是 RISC CPU 的一个时钟滴答。时钟滴答的持续时间直接取决于时钟的频率。1GHz 时钟意味着每秒 10 亿个时钟滴答,即每秒执行 10 亿个 CPU 操作。使用 2GHz 时钟,CPU 可以在同一秒内执行两倍的操作。

于 2011-02-23T06:41:13.210 回答