小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

馮諾依曼、哈佛、RISC、CISC

 guitarhua 2014-09-13

幾個(gè)基礎(chǔ)材料

(源:http://jwc./zq/signal/new/importent/zhang5_6/feng.htm

http://jwc./zq/signal/new/importent/zhang5_6/harvard.htm

http:///dingjun/html/14/84FB43402106C575.html

 

馮.諾曼結(jié)構(gòu)

 

1945年,馮.諾曼首先提出了“存儲(chǔ)程序”的概念和二進(jìn)制原理,后來(lái),人們把利用這種概念和原理設(shè)計(jì)的電子計(jì)算機(jī)系統(tǒng)統(tǒng)稱為“馮.諾曼型結(jié)構(gòu)”計(jì)算機(jī)。.諾曼結(jié)構(gòu)的處理器使用同一個(gè)存儲(chǔ)器,經(jīng)由同一個(gè)總線傳輸,如下圖所示:

圖  馮.諾曼結(jié)構(gòu)

    .諾曼結(jié)構(gòu)處理器具有以下幾個(gè)特點(diǎn):

  • 必須有一個(gè)存儲(chǔ)器;

  • 必須有一個(gè)控制器;

  • 必須有一個(gè)運(yùn)算器,用于完成算術(shù)運(yùn)算和邏輯運(yùn)算;

  • 必須有輸入和輸出設(shè)備,用于進(jìn)行人機(jī)通信。

    馮.諾曼的主要貢獻(xiàn)就是提出并實(shí)現(xiàn)了“存儲(chǔ)程序”的概念。由于指令和數(shù)據(jù)都是二進(jìn)制碼,指令和操作數(shù)的地址又密切相關(guān),因此,當(dāng)初選擇這種結(jié)構(gòu)是自然的。但是,這種指令和數(shù)據(jù)共享同一總線的結(jié)構(gòu),使得信息流的傳輸成為限制計(jì)算機(jī)性能的瓶頸,影響了數(shù)據(jù)處理速度的提高  

    在典型情況下,完成一條指令需要3個(gè)步驟,即:取指令、指令譯碼和執(zhí)行指令。從指令流的定時(shí)關(guān)系也可看出馮.諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)處理方式的差別。舉一個(gè)最簡(jiǎn)單的對(duì)存儲(chǔ)器進(jìn)行讀寫操作的指令,如下圖所示,指令1至指令3均為存、取數(shù)指令,對(duì)馮.諾曼結(jié)構(gòu)處理器,由于取指令和存取數(shù)據(jù)要從同一個(gè)存儲(chǔ)空間存取,經(jīng)由同一總線傳輸,因而它們無(wú)法重疊執(zhí)行,只有一個(gè)完成后再進(jìn)行下一個(gè)。

  .諾曼結(jié)構(gòu)處理器指令流的定時(shí)關(guān)系示意圖

 

 

 

 

 

哈佛結(jié)構(gòu)

    數(shù)字信號(hào)處理一般需要較大的運(yùn)算量和較高的運(yùn)算速度,為了提高數(shù)據(jù)吞吐量,在數(shù)字信號(hào)處理器中大多采用哈佛結(jié)構(gòu),如下圖所示

圖  哈佛結(jié)構(gòu)

與馮.諾曼結(jié)構(gòu)處理器比較,哈佛結(jié)構(gòu)處理器有兩個(gè)明顯的特點(diǎn):

  • 使用兩個(gè)獨(dú)立的存儲(chǔ)器模塊,分別存儲(chǔ)指令和數(shù)據(jù),每個(gè)存儲(chǔ)模塊都不允許指令和數(shù)據(jù)并存;

  • 使用獨(dú)立的兩條總線,分別作為CPU與每個(gè)存儲(chǔ)器之間的專用通信路徑,而這兩條總線之間毫無(wú)關(guān)聯(lián)。

    后來(lái),又提出了改進(jìn)的哈佛結(jié)構(gòu),如下圖所示

圖   改進(jìn)型哈佛結(jié)構(gòu)

其結(jié)構(gòu)特點(diǎn)為:

  • 使用兩個(gè)獨(dú)立的存儲(chǔ)器模塊,分別存儲(chǔ)指令和數(shù)據(jù),每個(gè)存儲(chǔ)模塊都不允許指令和數(shù)據(jù)并存,以便實(shí)現(xiàn)并行處理;

  • 具有一條獨(dú)立的地址總線和一條獨(dú)立的數(shù)據(jù)總線,利用公用地址總線訪問(wèn)兩個(gè)存儲(chǔ)模塊(程序存儲(chǔ)模塊和數(shù)據(jù)存儲(chǔ)模塊),公用數(shù)據(jù)總線則被用來(lái)完成程序存儲(chǔ)模塊或數(shù)據(jù)存儲(chǔ)模塊與CPU之間的數(shù)據(jù)傳輸;

  • 兩條總線由程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分時(shí)共用。

    在典型情況下,完成一條指令需要3個(gè)步驟,即:取指令、指令譯碼和執(zhí)行指令。從指令流的定時(shí)關(guān)系也可看出馮.諾曼結(jié)構(gòu)與哈佛結(jié)構(gòu)處理方式的差別。舉一個(gè)最簡(jiǎn)單的對(duì)存儲(chǔ)器進(jìn)行讀寫操作的指令,如下圖所示,指令1至指令3均為存、取數(shù)指令,對(duì)馮.諾曼結(jié)構(gòu)處理器,由于取指令和存取數(shù)據(jù)要從同一個(gè)存儲(chǔ)空間存取,經(jīng)由同一總線傳輸,因而它們無(wú)法重疊執(zhí)行,只有一個(gè)完成后再進(jìn)行下一個(gè)。

  .諾曼結(jié)構(gòu)處理器指令流的定時(shí)關(guān)系示意圖

    如果采用哈佛結(jié)構(gòu)處理以上同樣的3條存取數(shù)指令,如下圖所示,由于取指令和存取數(shù)據(jù)分別經(jīng)由不同的存儲(chǔ)空間和不同的總線,使得各條指令可以重疊執(zhí)行,這樣,也就克服了數(shù)據(jù)流傳輸?shù)钠款i,提高了運(yùn)算速度。

    哈佛結(jié)構(gòu)強(qiáng)調(diào)了總的系統(tǒng)速度以及通訊和處理器配置方面的靈活性。

圖  哈佛結(jié)構(gòu)處理器指令流的定時(shí)關(guān)系示意圖

 

 

-------------------------------------------------------

arm7系列的CPU有很多款,其中部分CPU沒(méi)有內(nèi)部cache的,比如arm7TDMI,就是純粹的馮·諾依曼結(jié)構(gòu),其他有內(nèi)部cache、且數(shù)據(jù)和指令的cache分離的cpu則使用了哈弗結(jié)構(gòu)。

 

哈佛結(jié)構(gòu)是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)的存儲(chǔ)器結(jié)構(gòu)。中央處理器首先到程序指令存儲(chǔ)器中讀取程序指令內(nèi)容,解碼后得到數(shù)據(jù)地址,再到相應(yīng)的數(shù)據(jù)存儲(chǔ)器中讀取數(shù)據(jù),并進(jìn)行下一步的操作(通常是執(zhí)行)程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi),可以使指令和數(shù)據(jù)有不同的數(shù)據(jù)寬度”,如Microchip公司的PIC16芯片的程序指令是14位寬度,而數(shù)據(jù)是8位寬度。 
  哈佛結(jié)構(gòu)的微處理器通常具有較高的執(zhí)行效率。其程序指令和數(shù)據(jù)指令分開(kāi)組織和存儲(chǔ)的,執(zhí)行時(shí)可以預(yù)先讀取下一條指令。 
  目前使用哈佛結(jié)構(gòu)的中央處理器和微控制器有很多,除了Microchip公司的PIC系列芯片,還有摩托羅拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。 
  哈佛結(jié)構(gòu)是指程序和數(shù)據(jù)空間獨(dú)立的體系結(jié)構(gòu)”, 目的是為了減輕程序運(yùn)行時(shí)的訪存瓶頸。
  例如最常見(jiàn)的卷積運(yùn)算中, 一條指令同時(shí)取兩個(gè)操作數(shù), 在流水線處理時(shí), 同時(shí)還有一個(gè)取指操作, 如果程序和數(shù)據(jù)通過(guò)一條總線訪問(wèn), 取指和取數(shù)必會(huì)產(chǎn)生沖突, 而這對(duì)大運(yùn)算量的循環(huán)的執(zhí)行效率是很不利的。
  哈佛結(jié)構(gòu)能基本上解決取指和取數(shù)的沖突問(wèn)題。
  而對(duì)另一個(gè)操作數(shù)的訪問(wèn), 就只能采用Enhanced哈佛結(jié)構(gòu)了, 例如像TI那樣,數(shù)據(jù)區(qū)再split, 并多一組總線。 或向AD那樣,采用指令cache, 指令區(qū)可存放一部分?jǐn)?shù)據(jù)。

 

馮·諾依曼體系和哈佛總線體系的區(qū)別 
  二者的區(qū)別就是程序空間和數(shù)據(jù)空間是否是一體”的。馮·諾依曼結(jié)構(gòu)數(shù)據(jù)空間和地址空間不分開(kāi),哈佛結(jié)構(gòu)數(shù)據(jù)空間和地址空間是分開(kāi)的
  早期的微處理器大多采用馮·諾依曼結(jié)構(gòu),典型代表是Intel公司的X86微處理器。取指和取操作數(shù)都在同一總線上,通過(guò)分時(shí)服用的方式進(jìn)行的。缺點(diǎn)是在高速運(yùn)行時(shí),不能達(dá)到同時(shí)取指令和取操作數(shù),從而形成了傳輸過(guò)程的瓶頸。
  哈佛總線技術(shù)應(yīng)用是以DSP和ARM為代表的。采用哈佛總線體系結(jié)構(gòu)的芯片內(nèi)部程序空間和數(shù)據(jù)空間是分開(kāi)的,這就允許同時(shí)取指和取操作數(shù),從而大大提高了運(yùn)算能力。
  DSP芯片硬件結(jié)構(gòu)有馮·諾依曼結(jié)構(gòu)和哈佛結(jié)構(gòu),兩者區(qū)別是地址空間和數(shù)據(jù)空間分開(kāi)與否。一般DSP都是采用改進(jìn)型哈佛結(jié)構(gòu),就是分開(kāi)的數(shù)據(jù)空間和地址空間都不只是一條,而是有多條,這根據(jù)不同的生產(chǎn)廠商的DSP芯片有所不同。在對(duì)外尋址方面從邏輯上來(lái)說(shuō)也是一樣,因?yàn)橥獠恳_的原因,一般來(lái)說(shuō)都是通過(guò)相應(yīng)的空間選取來(lái)實(shí)現(xiàn)的。本質(zhì)上是同樣的道理。

 

 

--------------------------------------------------------

http://blog.sina.com.cn/s/blog_4c60c6360100f9bs.html

是什么結(jié)構(gòu)要看總線結(jié)構(gòu)的。51單片機(jī)雖然數(shù)據(jù)指令存儲(chǔ)區(qū)是分開(kāi)的,但總線是分時(shí)復(fù)用得,所以頂多算改進(jìn)型的哈佛結(jié)構(gòu)。ARM9雖然是哈佛結(jié)構(gòu),但是之前的版本也還是馮·諾依曼結(jié)構(gòu)。早期的X86能迅速占有市場(chǎng),一條很重要的原因,正是靠了馮·諾依曼這種實(shí)現(xiàn)簡(jiǎn)單,成本低的總線結(jié)構(gòu)。現(xiàn)在的處理器雖然外部總線上看是諾依曼結(jié)構(gòu)的,但是由于內(nèi)部CACHE的存在,因此實(shí)際上內(nèi)部來(lái)看已經(jīng)算是改進(jìn)型哈佛結(jié)構(gòu)的了。至于優(yōu)缺點(diǎn),哈佛結(jié)構(gòu)就是復(fù)雜,對(duì)外圍設(shè)備的連接與處理要求高,十分不適合外圍存儲(chǔ)器的擴(kuò)展。所以早期通用CPU難以采用這種結(jié)構(gòu)。而單片機(jī),由于內(nèi)部集成了所需的存儲(chǔ)器,所以采用哈佛結(jié)構(gòu)也未嘗不可。現(xiàn)在的處理器,依托CACHE的存在,已經(jīng)很好的將二者統(tǒng)一起來(lái)了。

 

馮諾依曼結(jié)構(gòu)中執(zhí)行取指令后在執(zhí)行譯碼時(shí),還可以再取啊,就像流水線,沒(méi)必要等一條完了再去取指令啊。只不過(guò)哈佛能同時(shí)取數(shù)據(jù)和指令罷了。

 

--------------------------------------------------------

http://bbs./bbsdetail-271991-18.html

PIC系列單片機(jī)與MCS-51系列單片機(jī)的區(qū)別

MCS-51單片機(jī)有著嵌入式處理器經(jīng)典的體系結(jié)構(gòu),這種體系結(jié)構(gòu)在當(dāng)前嵌入式處理器的高端ARM系列上仍然在延續(xù),這就是哈佛結(jié)構(gòu)。相對(duì)于大名鼎鼎的馮·諾依曼結(jié)構(gòu),哈佛結(jié)構(gòu)的知名度顯然遜色許多,但在嵌入式應(yīng)用領(lǐng)域,哈佛結(jié)構(gòu)卻擁有著絕對(duì)的優(yōu)勢(shì)。哈佛結(jié)構(gòu)與馮·諾依曼結(jié)構(gòu)的最大區(qū)別在于馮·諾依曼結(jié)構(gòu)的計(jì)算機(jī)采用代碼與數(shù)據(jù)的統(tǒng)一編址,而哈佛結(jié)構(gòu)是獨(dú)立編址的,代碼空間與數(shù)據(jù)空間完全分開(kāi)


在通用計(jì)算機(jī)系統(tǒng)中,應(yīng)用軟件的多樣性使得計(jì)算機(jī)要不斷地變化所執(zhí)行的代碼的內(nèi)容,并且頻繁地對(duì)數(shù)據(jù)與代碼占有的存儲(chǔ)器進(jìn)行重新分配,這種情況下,馮·諾依曼結(jié)構(gòu)占有絕對(duì)優(yōu)勢(shì),因?yàn)榻y(tǒng)一編址可以最大限度地利用資源,而哈佛結(jié)構(gòu)的計(jì)算機(jī)若應(yīng)用于這種情形下則會(huì)對(duì)存儲(chǔ)器資源產(chǎn)生理論上最大可達(dá)50%的浪費(fèi),這顯然是不合理的。


但是在嵌入式應(yīng)用中,系統(tǒng)要執(zhí)行的任務(wù)相對(duì)單一,程序一般是固化在硬件里。當(dāng)然這時(shí)使用馮·諾依曼結(jié)構(gòu)也完全可以,代碼區(qū)和數(shù)據(jù)區(qū)在編譯時(shí)一次性分配好了而已,但是其靈活性得不到體現(xiàn),所以現(xiàn)在大量的單片機(jī)也還在沿用馮·諾依曼結(jié)構(gòu),如TIMSP430系列、FreescaleHCS08系列等。


那是為什么說(shuō)哈佛結(jié)構(gòu)有優(yōu)勢(shì)呢?嵌入式計(jì)算機(jī)在工作時(shí)與通用計(jì)算機(jī)有著一些區(qū)別:嵌入式計(jì)算機(jī)在工作期間的絕大部分時(shí)間是無(wú)人值守的,而通用計(jì)算機(jī)工作期間一般是有人操作的;嵌入式計(jì)算機(jī)的故障可能會(huì)導(dǎo)致災(zāi)難性的后果,而通用計(jì)算機(jī)一般就是死死機(jī),重新啟動(dòng)即可。這兩點(diǎn)決定了對(duì)嵌入式計(jì)算機(jī)的一個(gè)基本要求:可靠性。


使用馮·諾依曼結(jié)構(gòu)的計(jì)算機(jī),程序空間不封閉,其程序空間的數(shù)據(jù)在運(yùn)行期理論上可以被修改,此外程序一旦跑飛也有可能運(yùn)行到數(shù)據(jù)區(qū)。雖然都是一些不常見(jiàn)的特殊情況下,但是看看哈佛結(jié)構(gòu)的計(jì)算機(jī)在這些情況下是怎樣的:基于哈佛結(jié)構(gòu)的處理器如MCS-51,不需要可以對(duì)代碼段進(jìn)行寫操作的指令,所以不會(huì)有代碼區(qū)被改寫的問(wèn)題;程序只能在封閉的代碼區(qū)中運(yùn)行,不可能跑到數(shù)據(jù)區(qū),這也是跑飛的幾率減少并且跑飛后的行為有規(guī)律(數(shù)據(jù)區(qū)的數(shù)據(jù)是不斷變化的而代碼區(qū)是不變的)。

所以,相對(duì)于馮·諾依曼結(jié)構(gòu),哈佛結(jié)構(gòu)更加適合于那些程序固化、任務(wù)相對(duì)簡(jiǎn)單的控制系統(tǒng)。

 

說(shuō)MCS-51是馮-諾依曼型是不正確的,絕大多數(shù)51單片機(jī)都是哈佛結(jié)構(gòu),PIC從12-33都是哈佛結(jié)構(gòu)。

 

補(bǔ)充一下:【哈佛結(jié)構(gòu)】是不允許同時(shí)訪問(wèn)RAM和FLASH/ROM的。只有【改進(jìn)的哈佛結(jié)構(gòu)】才可以同時(shí)訪問(wèn)RAM和FLASH/ROM。51系列部分單片機(jī)已經(jīng)在低端產(chǎn)品上使用了流水線技術(shù)(但沒(méi)有鎖相環(huán)),而PIC 16位機(jī)都沒(méi)有流水線(有鎖相環(huán))。  在執(zhí)行速度上算是平分秋色吧。

 

 

--------------------------------------------------------

哈佛結(jié)構(gòu)馮諾依曼結(jié)構(gòu)與地址是否復(fù)用沒(méi)有關(guān)系

(源:http://modayu838.blog.163.com/blog/static/6443111920096631450970/

關(guān)于這個(gè)問(wèn)題,有人說(shuō)51地址線復(fù)用,就是馮諾依曼結(jié)構(gòu)。

很多入門的書上基本上都說(shuō):由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備組成的系統(tǒng)都叫馮氏結(jié)構(gòu)。也有的說(shuō):“程序存儲(chǔ)器的數(shù)據(jù)線地址線”與“數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)線地址線”共用的話,就是馮氏結(jié)構(gòu),所以51是該結(jié)構(gòu)。(我認(rèn)為說(shuō)得太絕對(duì)了)
我認(rèn)為馮氏結(jié)構(gòu)與哈佛結(jié)構(gòu)的區(qū)別應(yīng)該在存儲(chǔ)器的空間分別上,哈佛結(jié)構(gòu)的數(shù)據(jù)區(qū)和代碼區(qū)是分開(kāi)的,它們即使地址相同,但空間也是不同的,主要表現(xiàn)在數(shù)據(jù)不能夠當(dāng)作代碼來(lái)運(yùn)行。

口線復(fù)用,就將它認(rèn)為成馮氏結(jié)構(gòu),我認(rèn)為這樣不足取,應(yīng)該是按照空間是否完全重合來(lái)辨別。比如PC機(jī)的代碼空間和數(shù)據(jù)空間是同一空間,所以是馮氏結(jié)構(gòu);51由于IO口不夠,但代碼空間和數(shù)據(jù)空間是分開(kāi)的,所以還是哈佛結(jié)構(gòu)。

另外,CISC/RISC 、地址是否復(fù)用、是哪種結(jié)構(gòu)這三者都沒(méi)有必然的關(guān)系。只不過(guò) RISC因?yàn)榫?jiǎn)了指令集,沒(méi)有了執(zhí)行復(fù)雜功能的指令,為了提高性能,常采用哈佛結(jié)構(gòu),并且不復(fù)用地址線。
補(bǔ)充:有本書:嵌入式微處理器系統(tǒng)設(shè)計(jì)實(shí)例,英文版 embedded microprocessor systems:real world design third edition 上有這樣一個(gè)提法 :  大多數(shù)采用哈佛結(jié)構(gòu)的微處理器實(shí)際上使用的是一種經(jīng)過(guò)改進(jìn)的哈佛結(jié)構(gòu)體系,在改進(jìn)結(jié)構(gòu)下,雖然代碼和數(shù)據(jù)還是分開(kāi)的,但該體系支持從代碼區(qū)載入有限的數(shù)據(jù),這但允許數(shù)據(jù)表和其他信和與代碼一起被編譯,并可在運(yùn)行時(shí)使用這些數(shù)據(jù)。



摘抄一段:
哈佛結(jié)構(gòu)是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)的存儲(chǔ)器結(jié)構(gòu)。中央處理器首先到程序指令存儲(chǔ)器中讀取程序指令內(nèi)容,解碼后得到數(shù)據(jù)地址,再到相應(yīng)的數(shù)據(jù)存儲(chǔ)器中讀取數(shù)據(jù),并進(jìn)行下一步的操作(通常是執(zhí)行)。程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi),可以使指令和數(shù)據(jù)有不同的數(shù)據(jù)寬度,如Microchip公司的PIC16芯片的程序指令是14位寬度,而數(shù)據(jù)是8位寬度。

哈佛結(jié)構(gòu)的微處理器通常具有較高的執(zhí)行效率。其程序指令和數(shù)據(jù)指令分開(kāi)組織和存儲(chǔ)的,執(zhí)行時(shí)可以預(yù)先讀取下一條指令。目前使用哈佛結(jié)構(gòu)的中央處理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,還有摩托羅拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11,51單片機(jī)也屬于哈佛結(jié)構(gòu) 

      馮·諾伊曼結(jié)構(gòu)也稱普林斯頓結(jié)構(gòu),是一種將程序指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合并在一起的存儲(chǔ)器結(jié)構(gòu)。程序指令存儲(chǔ)地址和數(shù)據(jù)存儲(chǔ)地址指向同一個(gè)存儲(chǔ)器的不同物理位置,因此程序指令和數(shù)據(jù)的寬度相同,如英特爾公司的8086中央處理器的程序指令和數(shù)據(jù)都是16位寬。
      目前使用馮·諾伊曼結(jié)構(gòu)的中央處理器和微控制器有很多。除了上面提到的英特爾公司的8086,英特爾公司的其他中央處理器、ARM公司的ARM7、MIPS公司的MIPS處理器也采用了馮·諾伊曼結(jié)構(gòu)。


在DSP算法中,最大量的工作之一是與存儲(chǔ)器交換信息,這其中包括作為輸入信號(hào)的采樣數(shù)據(jù)、濾波器系數(shù)和程序指令。馮.諾依曼結(jié)構(gòu)中,只有一個(gè)存儲(chǔ)器,通過(guò)一條總線來(lái)傳送數(shù)據(jù)。乘兩個(gè)數(shù)至少需要3個(gè)指令周期,即通過(guò)總線將這3個(gè)數(shù)從存儲(chǔ)器中送到CPU。所以這種結(jié)構(gòu)在面對(duì)高速、實(shí)時(shí)處理時(shí),不可避免地造成總線擁擠。為此,哈佛大學(xué)提出了與馮.諾依曼結(jié)構(gòu)完全不同的另一種計(jì)算機(jī)結(jié)構(gòu),人們習(xí)慣稱之為哈佛結(jié)構(gòu)。它根據(jù)數(shù)據(jù)和數(shù)據(jù)指令將存儲(chǔ)器和總線分開(kāi)。因此,總線操作是獨(dú)立的,能同時(shí)取指令和數(shù)據(jù),提高了速度。目前DSP內(nèi)部一般采用的是哈佛結(jié)構(gòu),它在片內(nèi)至少有4套總線:程序的數(shù)據(jù)總線,程序的地址總線,數(shù)據(jù)的數(shù)據(jù)總線和數(shù)據(jù)的地址總線。這種分離的程序總線和數(shù)據(jù)總線,可允許同時(shí)獲取指令字(來(lái)自程序存儲(chǔ)器)和操作數(shù)(來(lái)自數(shù)據(jù)存儲(chǔ)器),而互不干擾。這意味著在一個(gè)機(jī)器周期內(nèi)可以同時(shí)準(zhǔn)備好指令和操作數(shù)。超級(jí)哈佛結(jié)構(gòu)(super Harvard architecture,縮寫為SHARC)如圖(c)所示,它在哈佛結(jié)構(gòu)上增加了指令cache(緩存)和專用的I/O控制器。

評(píng)論:哈佛結(jié)構(gòu)和馮.諾依曼結(jié)構(gòu)都是一種存儲(chǔ)器結(jié)構(gòu)。哈佛結(jié)構(gòu)是將指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi)的一種存儲(chǔ)器結(jié)構(gòu);而馮.諾依曼結(jié)構(gòu)將指令存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器合在一起的存儲(chǔ)器結(jié)構(gòu)

 馮諾依曼和哈佛結(jié)構(gòu) - modayu838 - modayu838的博客[/img]

                   圖2 Harvard architecture

       哈佛結(jié)構(gòu)采用數(shù)據(jù)存儲(chǔ)器與程序代碼存儲(chǔ)器分開(kāi),各自有自己的數(shù)據(jù)總線與地址總線。但這是需要CPU提供大量的數(shù)據(jù)線,因而很少使用哈佛結(jié)構(gòu)作為CPU外部構(gòu)架來(lái)使用。但是對(duì)于 CPU內(nèi)部,通過(guò)使用不同的數(shù)據(jù)和指令cache,可以有效的提高指令執(zhí)行的效率,因而目前大部分計(jì)算機(jī)體系都是CPU內(nèi)部的哈弗結(jié)構(gòu)+CPU外部的馮·諾伊曼的結(jié)構(gòu)。

 

 

----------------------------------------------------------

http://www./blog/Archive_Thread.asp?SID=18056

 

RISC vs CISC vs ARM【經(jīng)典】

    這里介紹兩種主流的計(jì)算機(jī)體系結(jié)構(gòu):
    RISC(Riduced Instruction Set Computer)精簡(jiǎn)指令集計(jì)算機(jī)
    CISC(Complex Instruction Set Computer)復(fù)雜指令集計(jì)算機(jī)

            所謂"體系結(jié)構(gòu)",是指程序員在某CPU上進(jìn)行程序設(shè)計(jì)時(shí)能夠使用的“處理器資源”,其中最重要的是處理器所提供的指令系統(tǒng)和寄存器組。注意體系結(jié)構(gòu) (architecture)和組成(structure)的區(qū)別:前者是處理器的邏輯抽象,是程序員關(guān)注的部分。后者是具體實(shí)現(xiàn),一般為計(jì)算機(jī)系統(tǒng)設(shè)計(jì)人員關(guān)注。一般來(lái)說(shuō),arachitecture,structure是不同層次的概念,但兩者也有一定的聯(lián)系。

            以指令系統(tǒng)的設(shè)計(jì)為例:相同的指令系統(tǒng)可以通過(guò)“硬連接”或“微程序”的方法來(lái)實(shí)現(xiàn)。前者通過(guò)CPU的硬件電路來(lái)實(shí)現(xiàn),后者通過(guò)"微程序"來(lái)實(shí)現(xiàn)。如果指令集以硬連接實(shí)現(xiàn),那么對(duì)于復(fù)雜指令來(lái)說(shuō),電路設(shè)計(jì)就非常困難;反之,若用微程序來(lái)實(shí)現(xiàn)指令集,可以實(shí)現(xiàn)復(fù)雜指令。現(xiàn)代CISC處理器一般都使用微碼來(lái)實(shí)現(xiàn)。

            在使用微碼技術(shù)的處理器中,實(shí)際存在著兩套不同層次的指令:一套是面向程序員的,高層的指令;一套是面向硬件實(shí)現(xiàn)的,底層的微碼。在指令與微碼之間存在著一個(gè)“解釋器”,它將指令翻譯成對(duì)應(yīng)的微碼序列。由此可以想象,指令與微碼之間的關(guān)系實(shí)際上時(shí)“子程序調(diào)用”思想的推廣

    對(duì)于CISC和RISC的實(shí)現(xiàn)而言, 它們所側(cè)重的復(fù)雜性不同: CISC處理器的實(shí)現(xiàn)復(fù)雜性更高, 而RISC編譯器的復(fù)雜性更高.

    微碼相對(duì)于指令的特點(diǎn):

            1,微碼代表的都是非常簡(jiǎn)單的基本操作,而指令可能非常復(fù)雜。
            2,微碼的取指操作很快:所有的微碼都位于ROM中,而指令位于內(nèi)存中”。[
    note_1]
            3,微碼的格式很規(guī)則,簡(jiǎn)單。因此易于譯碼。
            4,微碼的執(zhí)行速度很快,而指令相對(duì)較慢。

            從處理器架構(gòu)來(lái)看,可以將使用微碼技術(shù)的現(xiàn)代CISC的基本單元視為一個(gè)快速的RISC內(nèi)核。這樣問(wèn)題就出來(lái)了:如果不引入“解釋器”,而直接使用 RISC微碼作為指令,那會(huì)怎樣呢?——這正是RISC的思想。

            下面我們來(lái)看看使用微碼實(shí)現(xiàn)的CISC指令集的優(yōu)缺點(diǎn):
            CISC指令集又復(fù)雜化的傾向,即向高級(jí)語(yǔ)言看齊,處理器廠商紛紛提供一些功能強(qiáng)大的復(fù)雜指令,例如:Intel針對(duì)X86處理器在MOVE基礎(chǔ)上提供了 “成串”MOVE指令,可以將內(nèi)存中數(shù)據(jù)按字節(jié)成塊復(fù)制,相當(dāng)于:

    while (n--) *dest++ = *src++;

            這方便于復(fù)制數(shù)據(jù)結(jié)構(gòu)。對(duì)于其他的復(fù)雜操作,也可以通過(guò)一條指令就實(shí)現(xiàn)。CISC復(fù)雜指令的尋址方式也種類繁多,操作數(shù)可以直接來(lái)自內(nèi)存。但復(fù)雜指令為現(xiàn)代處理器技術(shù)中廣泛使用的流水線技術(shù)引入了問(wèn)題:在微處理器中指令的執(zhí)行一般分為“預(yù)指”,“取操作數(shù)”,“運(yùn)算”,“存放”等操作。對(duì)于CISC 復(fù)雜指令,他們的執(zhí)行時(shí)間各不相同[note_2](有的可在4,5個(gè)時(shí)鐘周期內(nèi)完成,有的卻需要幾十個(gè),即便對(duì)于簡(jiǎn)單指令,也會(huì)由于尋址方式的不同造成不同的執(zhí)行時(shí)間)。更糟糕的是,指令長(zhǎng)度也不一致,同一指令的長(zhǎng)度也會(huì)因不同的尋址方式而變化。針對(duì)這些指令,如何設(shè)計(jì)流水線長(zhǎng)度呢?若按最短指令設(shè)計(jì)流水線,當(dāng)碰到復(fù)雜指令時(shí)流水線就會(huì)發(fā)生中斷;若按最長(zhǎng)指令設(shè)計(jì)流水線,執(zhí)行較短指令時(shí)就會(huì)跳過(guò)某些工位,使流水線不能完全充滿。

            針對(duì)上述情況,以及20-80定律(80%的情況下執(zhí)行的是占指令集20%的常用指令)。多數(shù)復(fù)雜指令很少用到。當(dāng)使用高級(jí)語(yǔ)言進(jìn)行程序設(shè)計(jì)時(shí),編譯器為了兼容早期的CPU,一般不會(huì)生成特殊的復(fù)雜指令。如果舍棄這些不常用的復(fù)雜指令,就能簡(jiǎn)化CPU的設(shè)計(jì)。這正是RISC的出發(fā)點(diǎn)。

    RISC的特點(diǎn)
     1,RISC指令系統(tǒng)較小:種類的數(shù)量較少,只提供簡(jiǎn)單指令。這些指令大多都能在4,5個(gè)時(shí)鐘周期內(nèi)完成。

     2,指令的操作數(shù)必須預(yù)存于寄存器中,這樣取指操作的時(shí)間也統(tǒng)一了

     3,指令長(zhǎng)度,尋址方式,格式都整齊劃一:這樣可以充分利用流水線,基本上可實(shí)現(xiàn)一個(gè)時(shí)鐘脈沖執(zhí)行一條指令的目標(biāo)。

     4,RISC的子程序調(diào)用與CISC的不同在CISC中,程序調(diào)用、返回時(shí)需將上下文保存在堆棧中,需要內(nèi)存操作。而RISC將它們存放在寄存器中,而且參數(shù)也使用寄存器傳遞。(若存在嵌套的子程序調(diào)用,中間調(diào)用過(guò)程中的上下文還是要從寄存器"濺出"(spill)到堆棧中,而"葉"子程序不需要。)

     5,RISC中斷可視為特殊的子程序鏈接CISC中發(fā)生中斷時(shí),所有的寄存器內(nèi)容都被壓入堆棧,而RISC對(duì)中斷進(jìn)行區(qū)分對(duì)待,分為輕量級(jí)和重量級(jí)。對(duì)輕量級(jí)中斷只保存需要保存的寄存器內(nèi)容;對(duì)重量級(jí)中斷的處理如同常規(guī)中斷

     6,RISC都采用流水線、高速緩存、不使用微碼。

            當(dāng)然,RISC也有它的缺點(diǎn):代碼密度不高,可執(zhí)行文件體積較大,匯編代碼可讀性較差。代碼密度不高是個(gè)值得關(guān)注的問(wèn)題:若不使用cache,會(huì)需要更大的指令存儲(chǔ)空間,取指時(shí)也占用更大的存儲(chǔ)器帶寬。若采用cache,又會(huì)降低cache的命中率。

    RISC vs ARM
            作為RISC的新秀,ARM有它自己的特點(diǎn)。下文介紹ARM與RISC的比較,并歸納一下人們對(duì)RISC概念理解的誤區(qū):

    ARM的獨(dú)特

    1,ARM可提供壓縮形式的指令集:Thumb,它將ARM指令集的一個(gè)子集編碼為16位指令。處理器在執(zhí)行時(shí)可以切換到執(zhí)行Thumb指令模式。
    2,在算術(shù)指令中,可以將第二操作數(shù)在運(yùn)算之前移位(如:LDREQ R0,[R1,R2,LSR #16]!)。注意:移位通過(guò)組合電路完成,而不需時(shí)鐘脈沖的作用,所以不影響指令執(zhí)行時(shí)間。
    3,ARM支持指令的條件執(zhí)行。一般處理器都只支持指令的條件轉(zhuǎn)移。條件轉(zhuǎn)移會(huì)使已在流水線中的后續(xù)指令作廢,使流水線"斷流",而條件執(zhí)行避免了此情況。(當(dāng)一個(gè)條件執(zhí)行部分的大小超過(guò)3條指令時(shí),還是使用條件轉(zhuǎn)移指令為好)。
    4,指令的執(zhí)行結(jié)果是否影響程序狀態(tài)寄存器中的標(biāo)志位由程序員決定:在操作碼后加上s(如:add - adds)就可以使運(yùn)算結(jié)果改變標(biāo)志位。

    對(duì)RISC,CISC看法的誤區(qū)“

    1,RISC指令都是簡(jiǎn)單指令。
            看看前面的LDREQ R0,[R1,R2,LSR #16]!指令,它的強(qiáng)大使一般的CISC處理器也望塵莫及。RISC的"簡(jiǎn)單"之處,在于指令集的執(zhí)行時(shí)間、指令長(zhǎng)度、指令格式整齊劃一”

    2,CISC的復(fù)雜指令速度慢、執(zhí)行效率很低。
            現(xiàn)代的CISC處理器具有非常長(zhǎng)的流水線(PIII采用了25級(jí)的流水線),對(duì)指令的執(zhí)行作了充分的優(yōu)化。但RISC的優(yōu)勢(shì)在于:不管是老的CPU,還是新的CPU,指令執(zhí)行時(shí)間都是相同的,不需要在對(duì)指令執(zhí)行作出優(yōu)化。而同樣的復(fù)雜指令,在CPU時(shí)鐘頻率相同的情況下,在PIII上的執(zhí)行周期可能比在 386上的執(zhí)行周期短很多。即CISC處理器通過(guò)對(duì)處理器的不斷優(yōu)化來(lái)提升指令提升速率,同樣的指令,關(guān)注其執(zhí)行速度時(shí),就要考慮到采用何種CPU,而 RISC則不然

    3,RISC處理器比CISC處理器需要更多的寄存器.
            這不是一個(gè)需求問(wèn)題,而是一個(gè)實(shí)現(xiàn)問(wèn)題:RISC處理器設(shè)計(jì)比CISC簡(jiǎn)單,處理器占用較少的空間,從而騰出了空間來(lái)放置寄存器。CISC也可以由很多寄存器(68000擁有和ARM同樣多的寄存器)。當(dāng)然,這個(gè)觀念也不完全錯(cuò)誤,就RISC的程序設(shè)計(jì)來(lái)說(shuō),它需要比較多的寄存器。

    4,RISC都有流水線。
            ARM2就沒(méi)有采用流水線。

            總之,RISC處理器設(shè)計(jì)的簡(jiǎn)單性使得RISC處理器在體積、功耗、散熱、造價(jià)上都有優(yōu)勢(shì)。

    [note_1] 哈佛結(jié)構(gòu),馮.諾依曼結(jié)構(gòu)介紹:
            馮.諾依曼(Von Neumann)指出:程序只是一種(特殊)的數(shù)據(jù),它可以像數(shù)據(jù)一樣被處理,因此可以和數(shù)據(jù)一起被存儲(chǔ)在同一個(gè)存儲(chǔ)器中——這就是著名的馮.諾依曼原理。
            現(xiàn)代的通過(guò)計(jì)算機(jī)都是基于馮.諾依曼結(jié)構(gòu):可執(zhí)行程序映象位于磁盤中,運(yùn)行時(shí),OS將它加載到內(nèi)存中。
            但在用于I/O比較頻繁,I/O數(shù)據(jù)量大的情況下(比如網(wǎng)絡(luò)處理器),馮.諾依曼結(jié)構(gòu)就引入了瓶頸:設(shè)想一下,當(dāng)外設(shè)發(fā)起一個(gè)DMA請(qǐng)求并得到CPU的許可時(shí),總線被外設(shè)所占用,CPU暫時(shí)放棄了對(duì)總線的控制,它無(wú)法訪問(wèn)內(nèi)存來(lái)取指。早期未實(shí)現(xiàn)流水線的CPU采用"周期挪用"技術(shù),利用CPU訪問(wèn)內(nèi)存的空閑時(shí)鐘周期進(jìn)行DMA,解決了CPU與DMA在總線上相互排斥的問(wèn)題。但隨著流水線的采用,特別時(shí)在RISC處理器中,CPU在取指的同時(shí)也執(zhí)行指令,內(nèi)存訪問(wèn)已經(jīng)沒(méi)有空閑的時(shí)鐘周期了。對(duì)于擁有較多寄存器的RISC處理器來(lái)說(shuō),數(shù)據(jù)往往就位于寄存器中,在進(jìn)行DMA的時(shí)候,CPU可以執(zhí)行指令。但當(dāng) CPU從內(nèi)存中取指時(shí),由于總線被外設(shè)占用,流水線被破壞。

            針對(duì)上述問(wèn)題,哈佛結(jié)構(gòu)也許是個(gè)解決辦法:在嵌入式系統(tǒng)中,傾向于采用分別使用程序和數(shù)據(jù)兩個(gè)存儲(chǔ)器、兩條總線的"哈佛結(jié)構(gòu)"。在哈佛結(jié)構(gòu)下,即使數(shù)據(jù)總線被占用,CPU也能進(jìn)行取指(當(dāng)CPU需要訪問(wèn)數(shù)據(jù)內(nèi)存時(shí),它不得不停下來(lái))。        
            實(shí)際上,現(xiàn)代處理器都廣泛采用了緩存技術(shù),取指、取數(shù)據(jù)都通過(guò)cache來(lái)進(jìn)行。對(duì)cache,也可分為哈佛結(jié)構(gòu)和馮.諾依曼結(jié)構(gòu):是采用一個(gè)統(tǒng)一的 cache,還是分成數(shù)據(jù)和程序兩個(gè)cache(這種情況被稱為改進(jìn)的哈佛結(jié)構(gòu))?在采用了流水線的CPU中,理想情況下CPU在每個(gè)時(shí)鐘周期都需要取指,如果同時(shí)流水線中執(zhí)行的指令需要訪問(wèn)內(nèi)存,那兩者就相互沖突了。要么讓流水線暫停一拍,不取指;要么采用哈佛結(jié)構(gòu)的cache,取指和訪內(nèi)井水不犯河水。

    [note_2] 關(guān)于周期的概念:
            執(zhí)行一條指令所需要的時(shí)間稱為指令周期,指令周期常常用若干個(gè)時(shí)鐘周期來(lái)表示。

            時(shí)鐘脈沖的重復(fù)周期稱為時(shí)鐘周期,時(shí)鐘周期是CPU的基本時(shí)間計(jì)量單位,它由計(jì)算機(jī)主頻決定。

            一個(gè)CPU同外部設(shè)備和內(nèi)存儲(chǔ)器之間進(jìn)行信息交換過(guò)程所需要的時(shí)間稱為總線周期。

     關(guān)于RISC,CISC,這里!

 

-----------------------------------------------------------------

http://blog./jerryer/12929/message.aspx

 

RISC與CISC

 

RISC CPU的設(shè)計(jì),才發(fā)現(xiàn)自己本科真的什么也沒(méi)有學(xué)過(guò),呵呵,感謝King,正是由于跟她針?shù)h相對(duì)的討論,自己才會(huì)不斷查找資料下去,自己也才總算有了一點(diǎn)點(diǎn)概念,現(xiàn)整理一下。

  傳統(tǒng)意義上的精簡(jiǎn)指令集計(jì)算機(jī)(RISC)和復(fù)雜指令集計(jì)算機(jī)(CISC)在基本原理上就存在著差異。但是,現(xiàn)代的微控制器技術(shù)正在不斷縮小著RISC架構(gòu)和CISC架構(gòu)之間的差異。

  差異由來(lái)已久

RISC機(jī)型擁有一個(gè)有限的指令集合,并且能夠極快地執(zhí)行每一條指令。但是由于缺乏復(fù)雜指令,因此需要在軟件方面進(jìn)行大量的工作。RISC方案的另一個(gè)優(yōu)勢(shì)在于有限的指令數(shù)量能夠產(chǎn)生一個(gè)很小的核心。但由于使用精簡(jiǎn)指令所編寫出來(lái)的代碼會(huì)更長(zhǎng),所以執(zhí)行任務(wù)所需的內(nèi)存也就更大。因此,對(duì)于復(fù)雜的程序來(lái)說(shuō),由于要考慮到各種可能的情況,最終的程序代碼可能非常大。

RISC指令集有許多特征,其中最重要的有:

指令種類少,指令格式規(guī)范:RISC指令集通常只使用一種或少數(shù)幾種格式。指令長(zhǎng)度單一(一般4個(gè)字節(jié)),并且在字邊界上對(duì)齊,字段位置、特別是操作碼的位置是固定的。

尋址方式簡(jiǎn)化:幾乎所有指令都使用寄存器尋址方式,尋址方式總數(shù)一般不超過(guò)5個(gè)。其他更為復(fù)雜的尋址方式,如間接尋址等則由軟件利用簡(jiǎn)單的尋址方式來(lái)合成。

大量利用寄存器間操作:RISC指令集中大多數(shù)操作都是寄存器到寄存器操作,只以簡(jiǎn)單的LoadStore操作訪問(wèn)內(nèi)存。因此,每條指令中訪問(wèn)的內(nèi)存地址不會(huì)超過(guò)1個(gè),訪問(wèn)內(nèi)存的操作不會(huì)與算術(shù)操作混在一起。

簡(jiǎn)化處理器結(jié)構(gòu):使用RISC指令集,可以大大簡(jiǎn)化處理器的控制器和其他功能單元的設(shè)計(jì),不必使用大量專用寄存器,特別是允許以硬件線路來(lái)實(shí)現(xiàn)指令操作,而不必像CISC處理器那樣使用微程序來(lái)實(shí)現(xiàn)指令操作。因此RISC處理器不必像CISC處理器那樣設(shè)置微程序控制存儲(chǔ)器,就能夠快速地直接執(zhí)行指令。

  另一方面,CISC機(jī)型有著豐富的指令集合,使計(jì)算機(jī)能夠利用一兩條指令就能執(zhí)行非常復(fù)雜的操作,原因在于它通過(guò)運(yùn)行一條內(nèi)部微代碼而把匯編指令分解成若干條內(nèi)部微代碼指令。這樣做,設(shè)備的負(fù)擔(dān)就不是很高,而且代碼的分布密度也恰到好處。雖然CISC機(jī)型下的內(nèi)核代碼要比相應(yīng)的RISC機(jī)型大許多,但由于代碼密度分布合理,而且考慮到內(nèi)存的因素,最終所產(chǎn)生的代碼長(zhǎng)度就沒(méi)有RISC產(chǎn)生的那么大。

  體系結(jié)構(gòu)的差異更重要

  微控制器之間的各種差異要比RISCCISC種類上的差異重要得多。馮.諾依曼體系結(jié)構(gòu)(Von Neuman)與哈佛體系結(jié)構(gòu)(Harvard)之爭(zhēng)就是此類差異之一。另外一種就是基于寄存器體系結(jié)構(gòu)和基于累加器體系結(jié)構(gòu)的差異。在馮.諾依曼體系結(jié)構(gòu)中,數(shù)據(jù)和程序存儲(chǔ)器是共享數(shù)據(jù)總線的。數(shù)據(jù)總線共享有很多優(yōu)點(diǎn),比如減小總線的開(kāi)銷。另外一個(gè)優(yōu)點(diǎn)在于能夠把RAM映射到程序空間,這樣設(shè)備也能訪問(wèn)EEPROM中的內(nèi)存。

  而對(duì)于哈佛體系結(jié)構(gòu)的計(jì)算機(jī),程序和數(shù)據(jù)總線是分開(kāi)的。這種方式的優(yōu)勢(shì)在于能夠在一個(gè)時(shí)鐘周期內(nèi)同時(shí)讀取程序和數(shù)據(jù),這樣就相應(yīng)地減少了執(zhí)行每一條指令所需的時(shí)鐘周期。早期的哈佛架構(gòu)的計(jì)算機(jī)是不能把查找表儲(chǔ)存在程序存儲(chǔ)器中的,而這個(gè)問(wèn)題在現(xiàn)在的大多數(shù)設(shè)備中已經(jīng)解決了。

  哈佛體系結(jié)構(gòu)計(jì)算機(jī)中存在的另外一個(gè)問(wèn)題就是,如果要和外部的程序和數(shù)據(jù)存儲(chǔ)器進(jìn)行交互,對(duì)于兩部分存儲(chǔ)器來(lái)說(shuō),由于地址總線和數(shù)據(jù)總線的相互獨(dú)立性,就需要額外增加大量的芯片管腳。因此,只有當(dāng)至少有一種存儲(chǔ)器的類型是內(nèi)部的情況下,微處理器才會(huì)采用哈佛體系結(jié)構(gòu)。

  在基于累加器體系結(jié)構(gòu)中,累加器既是數(shù)學(xué)運(yùn)算單元(ALU)的數(shù)據(jù)源之一,又是ALU存放操作結(jié)果的地方。通?;诶奂悠黧w系結(jié)構(gòu)的微處理器,能夠在累加器與程序存儲(chǔ)器中任何位置的存儲(chǔ)單元或是RAM之間進(jìn)行各種數(shù)學(xué)或邏輯操作。這種架構(gòu)的優(yōu)勢(shì)就在于對(duì)于內(nèi)存地址的訪問(wèn)更為方便快捷。

  基于寄存器體系結(jié)構(gòu)的微處理器中,會(huì)有一系列的寄存器直接與ALU相連。這種情況的好處在于不需要把所有的數(shù)據(jù)都?jí)哼M(jìn)一個(gè)累加器中,從而減少了許多在累加器架構(gòu)中存在的“move”指令。因此,與把所有數(shù)據(jù)都要推進(jìn)累加器中的情況相比,基于寄存器架構(gòu)的微處理器大大提高了ALU的吞吐能力。

  陳舊的體系差異明顯

  對(duì)于8位微處理器來(lái)說(shuō),能夠很容易地區(qū)分RISCCISC之間的不同。最主要的原因就是這些體系結(jié)構(gòu),除了少數(shù)例外,要比相應(yīng)的32位微處理器陳舊得多。CISC體系結(jié)構(gòu)的一個(gè)經(jīng)典例子就是摩托羅拉開(kāi)發(fā)的HC11系列。HC11核心處理器誕生于1984年。這種系列的微處理器擁有300多條指令,代碼密度分布非常合理。HC11使用的是帶有兩個(gè)累加器的馮?諾依曼體系結(jié)構(gòu)。由于所有的復(fù)雜指令都是在核心中完成的,所以執(zhí)行每條指令的時(shí)間就很長(zhǎng)。指令周期從8個(gè)時(shí)鐘周期到164個(gè)時(shí)鐘周期。核心過(guò)大導(dǎo)致處理器的最高主頻不超過(guò)12MHz,這樣的性能要遠(yuǎn)遠(yuǎn)低于某些RISC機(jī)型。

  傳統(tǒng)的8RISC微處理器的一個(gè)例子就是由Microchip開(kāi)發(fā)的PIC16C54。Microchip1990年的時(shí)候把它推向市場(chǎng)。它采用的是一個(gè)基于單累加器的哈佛體系結(jié)構(gòu)設(shè)備,使用有限指令集合。這樣微處理器在執(zhí)行每一條單個(gè)指令所需時(shí)間就很小。但是33條指令加上一頁(yè)內(nèi)存,生成的代碼長(zhǎng)度幾乎是同種情況下HC11所得代碼的兩倍多。

  新技術(shù)使得差異在減小  

  CISC控制器在實(shí)現(xiàn)了管道技術(shù)之后,使得一條指令基本上在一個(gè)時(shí)鐘周期之內(nèi)就能夠執(zhí)行完,很大地改善了機(jī)器性能。但是,這種流水線操作有個(gè)很大的弊病在于每次的跳轉(zhuǎn)或者執(zhí)行分支指令,又或者是中斷發(fā)生,都有可能導(dǎo)致管道內(nèi)數(shù)據(jù)泛濫,反而導(dǎo)致更長(zhǎng)的指令周期。雖然有一些方法能夠降低這種不良效果,但是基本上都需要在軟件中進(jìn)行大量處理而最終會(huì)降低許多應(yīng)用程序代碼效率。

隨著技術(shù)的進(jìn)步,RISCCISC機(jī)型之間的鴻溝已經(jīng)越來(lái)越小,特別是對(duì)于市場(chǎng)的高端用戶來(lái)說(shuō),這種差異已經(jīng)逐漸變得難以區(qū)分了。

RISC是精簡(jiǎn)指令集計(jì)算機(jī),現(xiàn)在很多嵌入式微處理器都是RISC,例如常用的ARM,MIPS, POWERPC等。它有一個(gè)特征就是指令是等長(zhǎng)的。這就為提高執(zhí)行指令的效率提供了方便,大部分處理器可以做到平均一個(gè)時(shí)種處理一條指令。CISC是復(fù)雜指令集計(jì)算機(jī)。如X86系列,TIDSP系列,指令是不等長(zhǎng)的。但是一條指令可以完成RISC的好幾條指令能完成的任務(wù)。這兩種處理器各有所唱,都在發(fā)展當(dāng)中。

哈佛結(jié)構(gòu)和馮.諾依曼結(jié)構(gòu)主要是指存儲(chǔ)器結(jié)構(gòu),而非指令系統(tǒng)結(jié)構(gòu),與指令系統(tǒng)沒(méi)有嚴(yán)格的對(duì)應(yīng)關(guān)系。
MCS-51
是哈佛結(jié)構(gòu),指令系統(tǒng)是CISC指令。
PIC
單片機(jī)是哈佛結(jié)構(gòu),指令系統(tǒng)是RISC指令。
    
.諾曼結(jié)構(gòu)

.諾曼的主要貢獻(xiàn)就是提出并實(shí)現(xiàn)了“存儲(chǔ)程序”的概念。由于指令和數(shù)據(jù)都是二進(jìn)制碼,指令和操作數(shù)的地址又密切相關(guān),因此,當(dāng)初選擇這種結(jié)構(gòu)是自然的。但是,這種指令和數(shù)據(jù)共享同一總線的結(jié)構(gòu),使得信息流的傳輸成為限制計(jì)算機(jī)性能的瓶頸,影響了數(shù)據(jù)處理速度的提高。  

哈佛結(jié)構(gòu)

與馮.諾曼結(jié)構(gòu)處理器比較,哈佛結(jié)構(gòu)處理器有兩個(gè)明顯的特點(diǎn):

使用兩個(gè)獨(dú)立的存儲(chǔ)器模塊,分別存儲(chǔ)指令和數(shù)據(jù),每個(gè)存儲(chǔ)模塊都不允許指令和數(shù)據(jù)并存;

使用獨(dú)立的兩條總線,分別作為CPU與每個(gè)存儲(chǔ)器之間的專用通信路徑,而這兩條總線之間毫無(wú)關(guān)聯(lián)

 

 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多