淺談x86、DSP和SPARC的區別

 

       目前我所接觸到的處理器主要有三種,通用微處理器(MPU)、數字信號處理器(DSP)和SPARC平臺(來自Scalable Processor Architecture的縮寫)。此外還有單片機類的處理器(分爲三個階段,SCM、MCU和SoC),不過本專業並不是搞嵌入式的,所以對這個東西瞭解的不多。先對前三個處理器類型做一下簡介吧。

       通用微處理器的代表就是大家所熟知的X86平臺了(下面我就用X86來代稱通用微處理器),從8086到i386、從奔騰系列再到現在的i5,無一不遵循X86體系。出於軟件兼容性的考慮和歷史侷限性,搞得該體系結構無比的複雜。雖然它並不是最合理的體系結構,但是Wintel聯盟又促成了X86成爲了PC時代的實際標準,所以我們這幫“挨踢”人士還不得不學它!研究DSP後再學X86就感覺它真他**的麻煩(以下省略73個字兒)!

       數字信號處理器就是平常所說的DSP,這東西就是爲數學運算而生的,其強大的數字處理能力讓X86同學慚愧不已,速度上的差距就像萊布尼茨同學都做完一道微分方程了,我還沒讀完題呢…… =_=# DSP的代表生產廠商就是大名鼎鼎的德州儀器(TI)了。

 
       SPARC平臺是首個可擴展處理器架構,它可以算上一種微處理器,但是由於其寄存器窗口和採用精簡指令集的特點又使它區別於通用微處理器,所以我不知道怎麼去定義它(最火大的是我查了那麼多資料都沒找到SPARC的類別定義)。
簡介說完了,就開始說說這三者的區別吧。
 
 
適用領域
 
        X86面向的是通用程序設計,所以要考慮到大多數應用領域,這就要求其在邏輯處理方面要比較強,如IF-ELSE分支語句的處理。
 
       DSP面向的是數學運算且實時性較強,所以在嵌入式領域得到了廣泛的應用。DSP一般都擁有一個指令週期能夠完成一個乘法運算的能力,X86同學請坐下,別激動,我知道你想說你倆不是一個類型的。
 
       SPARC也是強調運算速度,適用領域非常廣,即可以用於PC也可以用於嵌入式,但是我覺得它對過程調用上的優化是SPARC最大的特點。
 
 
體系結構
 
       X86採用的是馮·諾依曼體系,大家一定比較熟悉就不浪費口水了。
DSP和SPARC採用的是哈佛結構,該結構的主要特徵是代碼總線和數據總線分開,有些SPARC平臺還會有DMA總線,也就是多出了兩套總線。這種設計的好處就是指令和數據可以在同一個時鐘週期內同時讀取,所以速度上唰唰的!
 
        SPARC的獨特之處還有寄存器窗口的設計,一般的SPARC平臺有160個通用寄存器(注意:並不是所有的寄存器),每個寄存器窗口獨享24個寄存器,還有8個全局寄存器。所以單從成本上來說,不是所有應用領域都用得起的!
 
 
指令集
 
        X86採用的是複雜指令集,所以譯碼方式上除了硬譯碼之外還需要軟譯碼,所在一個指令往往需要幾個時鐘週期來完成。
 
        DSP和SPARC都是精簡指令集的Fans,基本上所有的譯碼都可以通過硬譯碼來完成,再加上超標量和超流水技術使得這兩種處理器在速度上遠遠的甩開了X86。X86同學別站到桌子上,我知道你也會超標量和超流水,但是你的軟譯碼是你的硬傷,複雜指令集的CPU傷不起啊……
 
 
速度上的差距成因
 
        DSP的超快速度主要還是因爲它的乘法器,該乘法器通過硬件來運算乘法,所以X86需要幾十條時鐘週期來運算的一個乘法,DSP只需要一個指令一個時鐘週期就可以完成。再加上超標量技術,一個時鐘週期可以並行N個指令,這樣就能一個時鐘週期內完成N*N矩陣與N維向量乘法,幾十倍於X86,怎麼能不快!
 
        X86同學又站起來了……我還沒說完呢,雖然DSP在數學運算指令並行處理上優勢很明顯,但是需要程序指令之間沒有依賴性,如N*N矩陣與N維向量的乘法,這種運算對矩陣和微量來說每一行每一列的運算是沒有依賴的,這種情況下才能充分發揮DSP指令並行處理的優勢。如果程序指令之間有邏輯上的依賴性,那麼X86就有明顯的優勢了,如IF-ELSE分支語句,對於現在的X86超標量技術來說,同一個時鐘週期內可以取N個分支的指令並行執行,再根據判斷條件來選擇執行結果,這時DSP就跑不過X86了。X86同學就不要跳舞了,MJ活過來會被雷到的。
 
        不過現在很多X86平臺都配備了一些協處理器來加快運算,也就是說當遇到數學運算的時候將控制權交給協處理器,運算結束之後CPU直接讀取結果。就像CPU和GPU(也就是通常我們所說的顯卡)的關係,當遇到複雜的數學運算的時候CPU就會讓GPU去處理,所以顯卡對遊戲纔會如此的重要!
 
        好了,差不多就說到這兒,小弟我知道的也就這麼多,坐等高人指點糾正,真誠的希望能與嵌入式方面的愛好者多多交流!X86同學,你看人家DSP和SPARC都走了,你還沒反應過來已經結束了嗎?

 

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