通用處理器(GPP)與DSP處理器的區別

首先從最明顯的差別說起:
GPP是通用的處理器,而DSP是專用處理器,專門處理高密集型重複型數據而設置的。

    (1)處理器的架構:
      傳統上,GPP採用馮.諾依曼存儲器結構,程序與數據共用一個存儲器空間,通用一組總線(一個地址總線和一個數據總線)鏈接到處理器核。雖然現在典型的高性能GPP都包含兩個片內高速緩存(一個數據,一個指令)直接連到處理器核,以加快運行時的訪問速度。(這種結構有點像哈佛結構了,但還是有很大的區別)。
而DSP採用的是改善的哈佛結構,數據存儲器跟程序存儲器是分開的(爲了能同時訪問到更多的信息,片內ROM,RAM分成若干塊),而且有多條總線鏈接到處理器核,允許同時對他們進行訪問。

    (2)硬件乘法器MAC
       通用的處理器,乘法運算是利用軟件實現的,一次乘法往往需要多個機器週期才能完成,效率較低,爲了提高DSP處理器的運算速度,主流的DSP都毫不例外的設置了硬件乘累加器(MAC)。

    (3)獨立的直接存儲器訪問DMA(direct memory access)
       信號的高速處理,必須有高速的數據訪問和傳輸與之配合,DSP處理器都爲DMA單獨設置了完全獨立的總線和控制器,進行數據傳輸的時候不影響CPU及其總線的工作,這是與通用CPU很不一樣的地方。

    (4)多個獨立的執行單元:MAC,地址發生器DAG,移位器等
       在通用CPU中,數據地址的產生跟數據的處理都是由算術邏輯單元ALU完成的。而在DSP中往往設置專門的數據地址發生器(DAG),移位器等,甚至設置多個,可以高效的實現複雜的尋址,數據處理。數據地址的產生於CPU是同時工作的,從而節省了CPU的時間,提高了信號處理的速度。

    (5)GPP 使用控制邏輯來決定哪些數據和指令字存儲在片內的高速緩存裏,其程序員並不加以指定(也可能根本不知道)。與此相反,DSP 使用多個片內存儲器和多組總線來保證每個指令週期內存儲器的多次訪問。在使用DSP 時,程序員要明確地控制哪些數據和指令要存儲在片內存儲器中。程序員在寫程序時,必須保證處理器能夠有效地使用其雙總線。
      此外,DSP 處理器幾乎都不具備數據高速緩存。這是因爲DSP 的典型數據是數據流。也就是說,DSP 處理器對每個數據樣本做計算後,就丟棄了,幾乎不再重複使用。

    (6)零開銷循環:
      DSP算法的一個共同的特點即大多數的處理時間是花在執行較小的循環上,所以大多數的DSP都有專門的硬件,用於零開銷循環。所謂零開銷循環是指處理器在執行循環時,不用花時間去檢查循環計數器的值、條件轉移到循環的頂部、將循環計數器減1。
      與此相反,GPP的循環使用軟件來實現。某些高性能的GPP使用轉移預報硬件,幾乎達到與硬件支持的零開銷循環同樣的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章