在我的工作中,我处理不同的微控制器、微处理器和 DSP 处理器。其中许多具有 24 位寄存器和计数器。
我知道如何使用它们,这不是我的问题。
我的问题是为什么他们有 24 位寄存器!为什么不让它成为 32 位?据我所知,这不是大小问题,因为寄存器已经是 32 位,但最大为 0xFFFFFF。
这是否提供了更容易的硬件实施?更快的计算?还是只是“嗯,让我们放置 24 位寄存器以使程序员的工作更加困难”?
在我的工作中,我处理不同的微控制器、微处理器和 DSP 处理器。其中许多具有 24 位寄存器和计数器。
我知道如何使用它们,这不是我的问题。
我的问题是为什么他们有 24 位寄存器!为什么不让它成为 32 位?据我所知,这不是大小问题,因为寄存器已经是 32 位,但最大为 0xFFFFFF。
这是否提供了更容易的硬件实施?更快的计算?还是只是“嗯,让我们放置 24 位寄存器以使程序员的工作更加困难”?
我的猜测是大多数 DSP 应用程序根本不需要 32 位。数字音频最常使用 24 位保真度。实现 32 位将需要更多的晶体管,因此会导致更高的成本。
为什么 32 位对程序员来说更容易?
此外,您声明寄存器的最大值为 0xFFFFFF,这使得它们根据定义为 24 位,而不是您建议的 32 位。
8/16/32/64 位没有特别的原因。有 24 位 DSP、18 位 PIC、36 位 PDP……每个位都需要时间、金钱和功率,因此拥有足够的位就足够了。没必要做太多。看看原来有 20 条地址线的 PC,尽管内存指针可能高达 32 位。
根据 Tomas 的回答,一些 DSP 具有寄存器模式,其中溢出将值锁定在最高状态。如果数据是 24 位并且它翻转到第 25 位,它应该锁定在那里,而不是在 32 位翻转。
对于音频,您通常需要 16 位输出。由于您在处理过程中失去了一些精度,因此他们选择了一个比 16 位大一些的合理尺寸,而 16 位恰好是 24 位。
不使用完整的 32 位的原因是这将需要更多的硬件,尤其是对于乘法。