2010-02-23 245 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位的原因是,這將需要更多的硬件,特別是對於乘法。