我不知道我的问题是否相关。但我想知道的是,这两者如何影响cpu性能?我唯一知道具有相同架构的CPU,时钟速度越高CPU的处理能力越快,但字大小怎么样?它将如何影响CPU的速度以及哪一个真正决定CPU的速度?它是否相互矛盾?谢谢。
答案 0 :(得分:1)
理论上,更大的字大小使代码有点更慢。原因是在64位架构中,指针是64位字,因此充满指针(列表,树,散列表......)的数据结构倾向于使用比32上的等效代码更多的RAM。位结构。通用RAM很慢(它的响应速度不如CPU所希望的那么快),因此CPU嵌入了少量快速RAM,称为缓存,其中存储了最常用的数据。缓存大小有限(在英特尔的现代x86上通常为32 kB)。 64位指针使处理器难以存储尽可能多的数据元素,从而降低了性能。
<强>然而... 强>
上面有几点需要注意,特别是在x86平台上:
在许多应用程序中,大部分数据都不是指针。例如。在3D重型应用程序(游戏)中,大多数数据是图片(纹理)和对象坐标。此类数据不受平台默认字大小的影响。
64位指针允许应用程序轻松处理超过4 GB的RAM。对于具有超过4 GB RAM的机器上的RAM饥饿应用程序(例如摄影编辑),64位字允许使用更多RAM,虽然速度慢,但仍然比硬盘快得多。在相同的情况下,32位应用程序可以兼顾RAM和硬盘之间的数据块。
在x86处理器上(因此这是所有现代PC和Mac上发生的情况),由于历史原因,64位模式不仅仅带有64位寄存器;它还为应用程序提供了两倍的寄存器,这有助于提高性能。 64位模式还附带SSE2,它比以前使用的x86处理器更快地处理浮点数据。
因此,在PC或Mac上,如果可能,请选择64位操作系统和应用程序。 64位代码的更好性能不是字大小更大的结果;它是历史上在这些架构上采用64位模式的其他功能的结果。
在其他系统(例如PowerPC)上,当32位和64位模式都可用时,通常首选32位,除了需要大量内存的应用程序(想要访问超过4 GB的RAM,假设RAM大小可用),并且很少有应用程序想要对超过32位的整数执行计算(例如,这种情况会发生在一些加密算法中)。
答案 1 :(得分:0)
理论上......
当我们测量CPU内存读/写数据传输时,内存流量以每秒字节数为单位组成:
DataTransfer = WordSize * CpuClock / RW_Cycles
修改强>
我理论上讲!从理论上讲,这种方法可以100%工作,也可以用于DSP处理器或FPGL逻辑。在现代CPU下,DMA逻辑也是如此,为什么-1?
答案 2 :(得分:0)
嗯,这一切都会影响速度...你有内存总线大小,处理器总线大小,缓存行大小,寄存器大小,时钟速度(可能因CPU的不同部分而异),每个周期数不同指令,指令延迟,芯片多线程,超标量执行单元等。没有简单的公式来获取时钟速度和字大小来比较单位,看看哪个更快。显然1mhz 8位CPU比64位3.2ghz CPU慢,但确定1.8 ghz 64位CPU是否比2.4 ghz 32位机器更快是一个问题,并且可能取决于确切的工作量。分析您的工作量是唯一真正了解的方法。
答案 3 :(得分:0)
时钟速度不受字大小的影响,因为字大小由数据总线的大小决定,所以cpu只从内存读取/写入一次,无论是32位还是64位位。
答案 4 :(得分:-1)
大多数情况下,CPU会将数据从一个地方复制到另一个地方。如果它能够以64位粒度而不是8位进行,那么速度提高了8倍。
这与操作原理相同。 32位CPU上的32位加法可以比8位CPU快4倍(不计算内存访问的增益)。
EDIT(关于时钟速度):所有CPU操作(从内存加载,存储到内存,添加值......)需要执行给定数量的时钟周期,通常是RISC CPU的一个时钟周期。时钟周期的持续时间直接取决于时钟的频率。 1GHz时钟意味着每秒10亿个时钟周期,即每秒执行10亿次CPU操作。使用2GHz时钟,CPU可以在同一秒内执行两倍的操作。