2010-02-23 69 views
5

在我的工作中,我处理不同的微控制器,微处理器和DSP处理器。它们中的许多都有24位寄存器和计数器。为什么24位寄存器?

我知道如何使用它们,这不是我的问题。

我的问题是为什么他们有24位寄存器!为什么不把它变成32位? ,据我所知,这不是一个大小问题,因为寄存器已经是32位,但最大为0xFFFFFF。

这是否提供更简单的硬件实现?更快的计算? 或者只是“嗯,让24位寄存器让程序员的工作更难”?

+0

我错过了一些东西 - 如果最大值为0xFFFFFF,你怎么能声称寄存器是“真正的32位”? – 2010-02-23 13:08:09

+0

他们这样做是出于同样的原因,天空是蓝色的。 – 2010-02-23 13:09:09

+0

FF = 16x16 = 256 = 8位存储,FFFFFF = 24位,所以它是一个大小的问题... – 2010-02-23 13:09:40

回答

7

我的猜测是,大多数DSP应用程序根本不需要32位。数字音频最多使用24位保真度。实现32位需要更多的晶体管,因此会导致更高的成本。

为什么32位程序员会更容易?

此外,你声明寄存器最大为0xFFFFFF,这使得它们的24位定义为,而不是32位,如你所建议的。

+0

我认为你可能是对的(尽管听到明确的答案会很有趣)。看看维基百科,建议根据处理速度和/或与输入信号频率的关系,24位是更自然的尺寸,这足以实现高端音频采样。 – Paolo 2010-02-23 13:18:48

+0

好点。我有点忘了它可能也很有趣为什么数字音频使用最多的24位:) – Tomas 2010-02-23 13:22:41

+0

该手册说,它是一个32位,最多8位将始终为零.. 使用32位更容易,因为通用寄存器是32位。例如,当你将24位寄存器的值读入一个变量时。在这个变量上完成的操作将在32位中发生。 这将意味着额外的代码来处理溢出。 – Yousf 2010-02-23 19:57:53

2

标记到Tomas的答案上,一些DSP有一个寄存器模式,溢出锁定值处于最高状态。如果数据是24位的并且它回滚到第25位,它应该在那里锁定,而不是在32位翻转。

4

8/16/32/64位没有特别的理由。有24位的DSP,18位的PIC,36位的PDP ......每一位都需要时间,金钱和功耗,所以有足够的位是足够好的。没有必要这样做。即使内存指针可能高达32位,只需查看具有20条地址线的原始PC即可。

+0

18位PIC(或12,14 ...)仅仅是因为内存(所有裸片上)比这个更小(寄存器大小不匹配)。PDP仅使用6(字符大小)和3(使用八进制时的数字大小)的倍数。现在8的倍数更常见,这正是24位方便的原因。 8086上的地址实际上是20位;但由于它不适用于任何寄存器,所以它们使用段寄存器 - 将它们与PIC上的页面选择寄存器进行比较。 32位处理器通常具有足够宽的寄存器,不需要这种地址空间的扩展。 – 2010-09-09 22:18:49

2

对于音频你通常需要16位输出。由于在处理过程中你失去了一些精度,他们选择了比16位稍大的合理尺寸,这恰好是24位。

不完整的32位的原因是,这将需要更多的硬件,特别是对于乘法。