嵌入式微處理器在二十一世紀(jì)出現(xiàn)重大變化.doc_第1頁
嵌入式微處理器在二十一世紀(jì)出現(xiàn)重大變化.doc_第2頁
嵌入式微處理器在二十一世紀(jì)出現(xiàn)重大變化.doc_第3頁
嵌入式微處理器在二十一世紀(jì)出現(xiàn)重大變化.doc_第4頁
嵌入式微處理器在二十一世紀(jì)出現(xiàn)重大變化.doc_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

自從8048/8051微處理器進入市場以來,已經(jīng)過去了三十年。它的出現(xiàn)改變?nèi)澜鐚η度胧轿⒖刂破鲬?yīng) 當(dāng)是什么樣的觀點。這么多年來,每種新的微控制器都采用它們的基本結(jié)構(gòu),每種新產(chǎn)品都作了一些改進,目的是滿足應(yīng)用系統(tǒng)越來越高的要求。最早的結(jié)構(gòu)仍然很 重要,而且沒有改變,現(xiàn)在是迎接新的多處理器核結(jié)構(gòu)的時候了。這是最新設(shè)計的結(jié)構(gòu),用于二十一世紀(jì)的應(yīng)用系統(tǒng)。在本文中,我們將討論在結(jié)構(gòu)設(shè)計方面的根本 變化由于需要更高的運作速度同時要省電,推動這種結(jié)構(gòu)的出現(xiàn)。 二十世紀(jì)的應(yīng)用系統(tǒng) 在二十世紀(jì),一般的應(yīng)用系統(tǒng)使用8位微控制器,它能夠讀取傳感器的信號。這類微控制器能夠進行少量的數(shù)據(jù)處理,有一些I/O,大約是并行 的,以便把字符送往顯示器,或者把一個字節(jié)數(shù)據(jù)送到磁帶或者其他的數(shù)據(jù)記錄設(shè)備上記錄下來。有一些I/O能夠?qū)唵蔚逆I盤或者一組開關(guān)進行掃瞄,全部工作 可以用芯片上的時實時時鐘信號在要求的時間內(nèi)完成。利用芯片上的時鐘提供的精確時間信號,同步地傳送數(shù)據(jù),執(zhí)行其他按時間進行的任務(wù)。 這些應(yīng)用系統(tǒng)使用的存儲器并不多,也許只是64到256字節(jié)的RAM存儲器,大多數(shù)是集成在芯片上。有一些微控制器也能夠訪問外部存儲器,最初的接口只不過是地址和數(shù)據(jù)總線,它們通過處理器讀取數(shù)據(jù),在軟件的控制下把數(shù)據(jù)送往外面的存儲器或者取出來。 所以,人們著眼于在要求的時間之內(nèi)控制I/O,處理器進行的實際數(shù)據(jù)處理工作是很少的。這是因為處理器處理數(shù)據(jù)的能力非常有限,而且時鐘的 頻率很低,只有幾兆赫茲。盡管這些芯片處理數(shù)據(jù)的能力有限,對于大量簡單的應(yīng)用,從室內(nèi)溫度控制器到簡單的家庭自動化系統(tǒng),是綽綽有余的了。事實上,我是 用最近推出的手持計算機撰寫這篇文章的。這臺計算機使用從最早的8048芯片衍生出來的微控制器專門讀取我在鍵盤上的動作。隨著時間的推移,出現(xiàn)了更小、 功能更少的處理器,它的價錢較低。同時,出現(xiàn)了比較先進的,字長為16位和32位的其他微控制器,它們包含速度快得多、復(fù)雜得多的外部存儲器接口,它們使 用DMA控制器電路。然而,基本的想法仍然沒有變。在一塊芯片上有一兩個處理器,從輸入線上讀取數(shù)據(jù),把數(shù)據(jù)送到輸出線上,按照需要改變I/O控制引腳。 這些都是使用外面的實時時鐘基準(zhǔn)信號。 消費類電子產(chǎn)品推動二十一世紀(jì)應(yīng)用系統(tǒng)的發(fā)展 但是,現(xiàn)在應(yīng)用系統(tǒng)有了很大變化。除了用傳統(tǒng)的位觸發(fā)(bit banging)方式,增加新的處理功能算法的處理。今天,大量的應(yīng)用系統(tǒng)是消費類多媒體系統(tǒng),包括小小的MP3音樂播放器到具有視像功能的移動電話。而且期待已久的高分辨率電視也開始蜂擁而來,由于高分辨率電視的出現(xiàn),突然之間,消費者們認(rèn)識到他們需要家庭網(wǎng)絡(luò),在房間之間傳送視頻節(jié)目和音樂。 多媒體的功能 所有新型消費類應(yīng)用系統(tǒng)的核心部分都有數(shù)字量數(shù)據(jù),這就是說顯示和播放這些數(shù)據(jù)的器件中需要進行大量的數(shù)字信號處理。在設(shè)計用于多媒體的各 種文件格式時,已經(jīng)考慮到使用數(shù)學(xué)算法進行數(shù)字處理快速富利葉變換(FFT),離散余弦變換(DCT)等等。在多媒體應(yīng)用系統(tǒng)中需要寬頻帶,它要求二 十一世紀(jì)的處理器有專門的電路來處理這些算法。但是仍然需要早期使用的通用I/O和實時時鐘。新的芯片兩者都需要! 面向位流 因此早期的處理器把外部存儲器看成是應(yīng)用系統(tǒng)的數(shù)據(jù)源,也是應(yīng)用系統(tǒng)中數(shù)據(jù)的去向?,F(xiàn)代處理器要能夠操作來自互聯(lián)網(wǎng)、USB和1394以及 電纜和人造衛(wèi)星電視服務(wù)系統(tǒng)傳過來的高速位流數(shù)據(jù)。消費類產(chǎn)品,例如相機、MP3播放器,甚至是移動電話,都普遍使用USB 2.0接口,要求速度達到480 Mb/s。視像應(yīng)用系統(tǒng)通常使用1394接口,速度為200/400/800 Mb/s?,F(xiàn)在千兆位的以太網(wǎng)甚至已經(jīng)開始在家庭中出現(xiàn),它的數(shù)據(jù)傳送速度還更高。今天的處理器要處理這么高的數(shù)據(jù)速度,按照二十世紀(jì)的標(biāo)準(zhǔn),速度之快不 可思議。 更嚴(yán)重的是,高分辨率音像網(wǎng)絡(luò)聯(lián)合會(HANA)用于家用網(wǎng)絡(luò)的新標(biāo)準(zhǔn)認(rèn)為FOUR 1394的位流速度會高達800 Mb/s。MP4格式的數(shù)據(jù)假定音頻和視頻有多個位流,以及供選用的其他數(shù)據(jù)流,用于傳送標(biāo)題和靜止圖像。在很多情況下,同一個處理器在對緩沖存儲器送過 來的MP4位流進行解碼時,也要處理進來的位流,所以,必須立刻同時處理四個或者五個這樣的高速度位流。 外接高速存儲器接口 由于需要把數(shù)據(jù)高速度地送往外接存儲器,處理器只需要處理幾百個字節(jié)數(shù)據(jù)的時代早已成為過去。今天,用于視頻應(yīng)用系統(tǒng)的一些專用處理器一定 要能夠?qū)?28兆字節(jié)的DDR SRAM存儲器進行存取。在一塊處理器芯片上實現(xiàn)比較大的尋址范圍是比較容易的,但是這些存儲器接口的速度現(xiàn)在極為重要。尋址空間大意味著處理器上有很多 引腳用作外接存儲器的接口。在很多這類應(yīng)用系統(tǒng)中有多個位流,這表示必須有一個簡單的方法能夠迅速地切換存儲器接口上的地址位。在大多數(shù)現(xiàn)代處理器中,這 個接口(一般有三個)使用成熟的DMA(直接存儲器尋址)控制器。有一些控制器甚至更進一步,它們可以進行變址尋址。這樣很方便。例如,當(dāng)控制器從存儲器 中取出多字節(jié)矢量時,就很方便。 低功耗 許多現(xiàn)代消費類設(shè)備是用電池供電。它的處理工作量大,加上顯示器,有時甚至還有一個磁盤驅(qū)動器,因此這些設(shè)備的電池負(fù)荷很大。所以功率是一個大問題,而處理器本身必須能夠工作在低功率狀態(tài),以便延長電池壽命。當(dāng)然,低功耗與高速處理不可兼得,所以在設(shè)計時要認(rèn)真地權(quán)衡。 二十一世紀(jì)的多核處理器結(jié)構(gòu) 應(yīng)用系統(tǒng)在本質(zhì)上的變化明確地要求對處理器芯片的結(jié)構(gòu)作出相應(yīng)的改變。例如,由于需要多媒體的功能,需要處理高速算法的專門電路。由于需要 進行高速處理,芯片設(shè)計人員把處理器核加到芯片上,這樣,需要進行實時處理的任務(wù)就可以在一個處理器芯核中運行,同時其他任務(wù)可在第二個處理器核上運行。 多處理器核 把任務(wù)分成兩組實時的任務(wù)和非實時的任務(wù)的做法失敗了,原因很簡單,在現(xiàn)代的應(yīng)用系統(tǒng)中,大多數(shù)任務(wù)都有一部分是實時進行的。簡單 地說,推動多媒體應(yīng)用系統(tǒng)發(fā)展的動力是高速計算部件,它們競相在很短的時間里,在下一批多媒體數(shù)據(jù)到來之前完成他們的算法。這個辦法沒有成功,就是說播于 音樂時會出現(xiàn)停頓,或者視像中會有尖脈沖噪音。 近來的發(fā)展趨勢是把一個甚兩個DSP核和高速乘法器/累加器電路結(jié)合起來,跟上多媒體位流的速度。但是,由于增加速度更高位流的要求看來 是無止境的,這個方法看來達到了它的極限。一個更好的方法是把幾個處理器核集成到芯片上,每一個都比復(fù)雜的DSP核簡單,但是每一個處理器核都有一個高速 乘法器/累加器。這些處理器核如果妥善設(shè)計,就可以把計算任務(wù)分配給各個處理器核共同進行,從而能夠執(zhí)行復(fù)雜的算法。當(dāng)然這需要重新寫入算法,以便把計算 任務(wù)分解,由多個處理器核分擔(dān),結(jié)果可能令人難以置信地提高了處理能力。 用這個辦法安排計算任務(wù)還有另外一個優(yōu)點。由于使用DSP核的芯片靈活性小,而用若干處理器核的芯片可以編程,可以把處理器核的數(shù)量設(shè)計 成是最優(yōu)的,來解決這個問題。需要更高的速度嗎?只要用更多的處理器核來進行處理就可以了。這個辦法利用了處理器核的強大處理能力,所以,和 DSP不一樣。DSP主要是由高速算法電路組成,處理器核增加了高速條件轉(zhuǎn)移的功能,它還有其他傳統(tǒng)計算電路部件的功能。因此,使用多處理器核的辦法十分 靈活,它解決問題的能力很強,不只是能夠完成高速算法。 多處理器核芯片的靈活性表現(xiàn)在,可以簡單地指定各個處理器核完成需要執(zhí)行的不同任務(wù),解決范圍廣泛的各種問題??梢宰屢粋€處理器核去管理外 接存儲器,讓八個處理器核負(fù)責(zé)快速富利葉變換,完成多媒體算法,再用幾個處理器核帶動應(yīng)用系統(tǒng)中的各種I/O子系統(tǒng)。這與使用單個處理器處理多任務(wù)的傳統(tǒng) 方法完全不一樣。大家知道,這個方法是讓處理器在某一段時間做一個任務(wù),然后切換到另一項任務(wù),等等,因而人們覺得它是執(zhí)行多任務(wù)的處理器。如果有一些任 務(wù)是關(guān)于I/O的,需要相當(dāng)時間等著接收數(shù)據(jù),這個感覺是沒錯的。但是,對于不需要等待數(shù)據(jù)的任務(wù),這個感覺就完全破滅了這個處理器只是由不同的任務(wù) 共用資源,它的負(fù)擔(dān)顯然是很重的。在轉(zhuǎn)換任務(wù)時,由于處理器把數(shù)據(jù)存放到寄存器和存放應(yīng)用數(shù)據(jù),需要上下文切換時間,這個問題就加重了。處理器越大、越復(fù) 雜,上下文切換時間越長,這種多任務(wù)處理器的感覺就破滅得越嚴(yán)重。在多處理器核的方法中,每一個任務(wù)是用一個或者更多處理器核來完成,情況完全變了。上下 文切換時間是零,道理很簡單,每個處理器不會改變它的任務(wù)。多處理器的想法變成了現(xiàn)實。 本地RAM/ROM存儲器 當(dāng)設(shè)計中使用了多個處理器時,存儲器存取的問題就出來了。大多數(shù)多核芯片設(shè)計把幾個處理器核和一個共用存儲器放在一起。這樣做簡化了設(shè)計, 因為每一個核只是處理器本身,問題轉(zhuǎn)到多個處理器核如何共同使用一個存儲器,以及存儲器存取的仲裁,這是一個難題。通常用到某種仲裁網(wǎng)絡(luò)或者交叉點切換開 關(guān)。在只有三個到四個處理器核時,這個方法是可行的。但是,在芯片上需要幾十個處理器核時,共用存儲器的問題變得很復(fù)雜,令人望而卻步。此外,由于越來越 多處理器核需要對存儲器進行存取,共用存儲器的效率變得越來越低,很快就成為致命的瓶頸,把多核結(jié)構(gòu)在處理方面的優(yōu)點都淹沒了。 解決這個問題的辦法是用本地存儲器取代普通的共用存儲器。本地存儲器是屬于各個處理器核的存儲器。用這個辦法,就不需要存儲器仲裁,也不需要交叉切換開關(guān),因為每個處理器核只是對自己的RMA/ROM存儲器進行存取。 用共用存儲器來存放數(shù)據(jù)有一個大優(yōu)點,這就是,只要為分配給每個處理器核它所需要的存儲容量,就可以對存儲器的大小進行優(yōu)化。在每個處理器 核都有它自己的本地存儲器時,存儲器的容量就需要權(quán)衡折衷。如果存儲器容量太小,處理器核就不能充分發(fā)揮作用,如果存儲器容量太大,又造成浪費,芯片就會 很大,代價是效率。 好在本地存儲器的大小很容易確定。只要編寫芯片必須處理的典型算法的源代碼,并且試一下,很快就知道,需要的存儲器容量有兩種,一種是 1000字節(jié)或者少一些,一種是容量很大,幾兆字節(jié),甚至幾百兆字節(jié)。當(dāng)使用很大的緩沖器來處理多媒體數(shù)據(jù)時,就會出現(xiàn)上面所說的第二種情況。但是只不過 是芯片上的幾個處理器核需要容量很大的本地存儲器。很清楚,每個處理器核增加幾兆字節(jié)的本地存儲器,既使這樣做是實際可行的,也是很浪費的。第一種存儲器 容量,也就是1000 字節(jié),用今天的主流半導(dǎo)體工藝是很實際的,作為處理器核的本地存儲器,的確是綽綽有余的。 最后一個辦法就是每一個處理器核都用小一些的本地存儲器,1000字節(jié)的數(shù)量級,用于存放程序源代碼和數(shù)據(jù),再用一個大得多的外接存儲器,作為緩沖存儲器,滿足多媒體的需要。只有少數(shù)處理器核需要用它。 處理器核之間的通訊 很清楚的一點是,多核芯片的想法并不是用一組處理器核島,每個島有一組它自己的I/O腳,這些I/O腳是相互獨立的。我們已經(jīng)講過,計算量很大的算法可以由幾個處理器核分擔(dān)進行。很明顯,各個處理器核之間需要交換數(shù)據(jù)和合作。 處理器核之間進行通訊的方式有兩種:傳送狀態(tài)信號和傳送數(shù)據(jù)塊。從概念上講,這兩者之間并無區(qū)別,然而在通訊速度方面則有很大的不同。例 如,狀態(tài)信號可以送給相鄰的核,說明數(shù)據(jù)已經(jīng)就緒,等待傳送,然后在它們之間傳送數(shù)塊。這兩種通訊方式都要求效率很高,而實現(xiàn)高效率的辦法可能完全不一 樣。我們在后面再來談這個問題。 對于存儲器共用的情形,處理器之間的通訊可以用幾個辦法進行。如果只牽涉到兩個處理器核,可以提供通訊電路,每一個處理器通過電路和其他 處理器進行通訊,這是實際可行的。但是當(dāng)處理器核的數(shù)量增加到幾十個,芯片的面積和通訊電路的復(fù)雜程度會變得令人望而生畏。實現(xiàn)處理器核之間通訊的另一個 辦法是只限于在一組很少的處理器核之間進行通訊,典型的情形是在最靠近的兩個處理器核之間進行通訊。這個方法簡單得多,而且非常實際。 實現(xiàn)處理器核之間的通訊電路是許多處理器面臨的問題。如何實現(xiàn)通訊路徑和進行處理?作為計算機的使用人員,對于我們運行的應(yīng)用程序,我們 習(xí)慣于讓計算機去作出決定。例如,隨著我們的文件增多,文字處理處理應(yīng)用軟件需要更多存儲器,我們依靠計算機找到存儲空間,指定那個存儲空間供文字處理程 序使用,一項文字處理也許需要重新指定存儲塊,并把一部分?jǐn)?shù)據(jù)移到磁盤上。這個處理過程我們是完全看不見的,是計算機按需要進行的。 在設(shè)計存儲器分配系統(tǒng)時,甚至在磁盤操作系統(tǒng)時,考慮到要以很高的效率來運行軟件,這時就是文字處理程序,這點并不是大家都清楚的。設(shè)計系統(tǒng)時,一開始就考慮到計算機自主地運作,指定存儲塊,把其他存儲塊的數(shù)據(jù)移到硬盤,而不是由使用者來做這件事。 對于多核芯片,究竟如何指定這些處理器核去執(zhí)行應(yīng)用軟件中的各個任務(wù)呢?這不是由應(yīng)用程序自己來做,甚致不是一些操作系統(tǒng)。指定處理器核完 成一項任務(wù)的過程是由設(shè)計人員/程序員來做的,設(shè)計人員和程序員把應(yīng)用軟件送到芯片上,而不由開發(fā)系統(tǒng)程序來做。把應(yīng)用軟件送到芯片的過程是設(shè)計課題中最 基本的問題。為此,設(shè)計人員一定要了解哪一項任務(wù)需要交換最多的數(shù)據(jù)。然后指定鄰定的處理器核完成這項任務(wù),將處理器核的通訊優(yōu)化。如果指定處理器核的過 程是由開發(fā)系統(tǒng)以某種方式自動進行的,那么可以設(shè)計一個在處理器核之間進行通訊的系統(tǒng),針對自動指定處理器核的過程進行優(yōu)化。但是,由于這是由設(shè)計人員做 的,最好是使用最簡單、效率最高的通訊電路,它只在這個處理器核與鄰近處理器核之間交換數(shù)據(jù)。當(dāng)然,可以讓處理器核把數(shù)據(jù)和狀態(tài)信號用接力的方法傳給較遠(yuǎn) 的處理器核,但是,規(guī)定處理器核只與最近的處理器核直接交換數(shù)據(jù),芯片設(shè)計就簡單得多,應(yīng)用軟件設(shè)計人員反正需要指定處理器核的任務(wù),對他們來講,并無任 何損失。 針對具體的應(yīng)用系統(tǒng)進行自動設(shè)計和手工設(shè)計,兩者之間往往會有沖突。既然計算機起的作用有時候是文字處理器,有時候是電影播放器,或金融 電子數(shù)據(jù)計算器,不論是哪一種功能,與嵌入式處理器起的作用是完全不同的。在嵌入式處理器芯片中,不在相機和溫度控制器這些功能之間來回切換。因此,不要 用不論什么事、不論在那捚,不論什么時候都做的結(jié)構(gòu),不要像大型交叉點開關(guān)那樣可以在芯片上任何兩個處理器核之間交換數(shù)據(jù),因而對設(shè)計進行折衷。 如果我們決定只在最靠近的相鄰處理器核之間交換數(shù)據(jù)的話,通訊電路就變得很簡單,效率也有可能很高。處理器核之間交換數(shù)據(jù)是通過共用寄存 器進行,不需要解決沖突的電路,不需要優(yōu)先權(quán)網(wǎng)絡(luò)。但是有可能把某些狀態(tài)信號和數(shù)據(jù)交換結(jié)合起來。傳統(tǒng)的做法是,兩個處理器通過一個共用寄存器傳送數(shù)據(jù), 檢測某個地方的狀態(tài)位,它決定傳送數(shù)據(jù)的狀態(tài)。處理器A把數(shù)據(jù)送往寄存器,并把狀態(tài)位設(shè)置為“高電平”,表示數(shù)據(jù)已經(jīng)到位,等待讀取。處理器B是通過軟件 檢測狀態(tài)位,看它是否變成“高電平”,狀態(tài)位為“高電平”表示新的數(shù)據(jù)已經(jīng)放在寄存器中。在讀取數(shù)據(jù)之后,處理器 B將狀態(tài)位復(fù)位,成為“低電平”,表示已經(jīng)讀取數(shù)據(jù),寄存器已經(jīng)準(zhǔn)備好等待下一次傳送數(shù)據(jù)。在這方面有很多不同的做法。不過,可惜的是,比起實際傳送數(shù)據(jù) 所用的時間,兩個處理器讀取狀態(tài)位、檢測狀態(tài)位、寫入狀態(tài)位所用的時間更長。 多核芯片提供了一個簡單得多的辦法。處理器核A的源代碼編寫成這樣:它總是認(rèn)為寄存器是空著的,在等待數(shù)據(jù)。它的循環(huán)子程序沒有檢測和寫入 狀態(tài)位的源代碼,但是它變成是執(zhí)行指令“送出數(shù)據(jù)(SendData)”“送出數(shù)據(jù)”“送出數(shù)據(jù)”,等等。同樣處理器B的源代碼認(rèn)為一直有數(shù)據(jù)在等著 它去讀出,所以它的循環(huán)子程序現(xiàn)在只不過是執(zhí)行指令“讀取數(shù)據(jù)(ReadData)”“讀取數(shù)據(jù)”“讀取數(shù)據(jù)”,等等。在實際上這是如何實現(xiàn)的呢?處 理器核A是送出數(shù)據(jù)的核,想把數(shù)據(jù)送到共用寄存器去,如果在寄存器中的數(shù)據(jù)還沒讀取,處理器核A 就停下來,一直到處理器核B讀取了寄存器中的數(shù)據(jù),在同一時刻,處理器核A回來執(zhí)行原來要執(zhí)行的哪條指令,也就“送出數(shù)據(jù)”。于是,從源代碼的角度看,處 理器核A總是認(rèn)為寄存器總是空著的,在等待數(shù)據(jù),沒有必要讀取和檢測狀態(tài)位。處理器核B做的事與之相似。處理器核B的源代碼總是認(rèn)為寄存器中一直存放著沒 有讀出的數(shù)據(jù)。當(dāng)它開始執(zhí)行指令“讀取數(shù)據(jù)”,從寄存器中取出數(shù)據(jù)時,如果寄存器中沒有需要讀取的數(shù)據(jù),它也停下來。當(dāng)新的數(shù)據(jù)在寄存器中出現(xiàn)時,處理器 核B便執(zhí)行“讀取數(shù)據(jù)”指令,這條指令把數(shù)據(jù)從寄存器中取出來。同樣,沒有必要讀取、檢測狀態(tài)位,沒有必要將狀態(tài)位置位。 大多數(shù)讀者并不熟悉這項技術(shù),對于處理器在不同芯片的系統(tǒng),不是用這個辦法。它之所以是那樣地運作,是因為,當(dāng)兩個處理器核是在同一塊芯 片上時,有一個電路是用于將可以使用的處理器啟動和讓它停下來。關(guān)鍵在于,啟動和停止的過程必須非??焓菆?zhí)行一條指令所用的時間,這樣才真正有效果。 但是,這一點做得到的話,兩個處理器核之間傳送數(shù)據(jù)的速度將大幅度地加快,提高了幾倍。事實上,有很多類型的數(shù)據(jù)交換,在處理器核之間完全不需要軟件來發(fā) 出信號。 如果處理器核是設(shè)計成使用與存儲器對應(yīng)的I/O(memory-mapped I/O),在處理器核之間會有各種更多令人感興趣的通訊方式。在這個系統(tǒng)中,把I/O寄存器當(dāng)作是存儲器地址,這就是說,讀寫存儲器的同樣指令也對I/O 進行操作。但是,對于多核芯片,這種I/O結(jié)構(gòu)有不同的選擇。處理器核不僅可以讀取和執(zhí)行本地ROM和RAM中的指令,它還能夠讀取和執(zhí)行I/O口和寄存 器送來的指令。 傳送數(shù)據(jù)的循環(huán)子程序不需要讀出、檢測和寫入狀態(tài)位,難以置信地有效。用這個辦法時,指令源源不斷地送到處理器核的I/O口,并且直接執(zhí) 行。由于處理器核共用的寄存器實質(zhì)上和I/O口是一樣的,這表示,一個處理器核可以把源代碼送到相鄰的處理器核,這個處理器核可以直接從共用寄送器取出指 令并且執(zhí)行,不必把源代碼實際地傳送給另外一個處理器的本地存儲器。源代碼可以在各個處理器核之間傳送,這些處理器核從寄存器上取出并執(zhí)行這些指令。由于 每一個處理器核實際上完全是在它自己的地址空間中進行,沒有明顯地把時間用在傳送源代碼指令上,傳送源代碼指令的速度非常快。 實時時鐘 隨著傳統(tǒng)處理器的處理速度和復(fù)雜程度的提高,它們越來越不能實時地對任務(wù)進行處理,這表示處理源代碼的時間是不確定的,每次都不一樣。這大 體上是由于使用了緩存,緩沖的容量越來越大,處理器用這些緩存來降低外接存儲器的存取時間。 所以,在源代碼的一個循環(huán)子程序中,指令是從外面取來的,但是在下一次,指令是在緩存中。同時,隨著處理器變得更加復(fù)雜,CPU寄存器的數(shù)量也增加了。相 應(yīng)地,在進行中斷處理時,把寄存器的內(nèi)容存放起來的時間增長了。由于這一切,現(xiàn)代的處理器不適合嵌入式應(yīng)用系統(tǒng),更用不著說需要大量的存儲器,芯片本身的 成本了。 對于嵌入式處理器,一向強調(diào)處理實時應(yīng)用軟件的能力,強調(diào)在一定的時隙中處理源代碼,要求在分配給它而且嚴(yán)格控制(或者說越來越短)的時 間里處理事件以及顯示。一個處理器芯片使用一個實時時鐘來設(shè)置和控制這些任務(wù),而這個時鐘是由外面提供的。在多核芯片中什么是最理想的安排呢? 我們且把應(yīng)用軟件看作是一組相互有關(guān)的任務(wù)和子任務(wù),指定處理器核去執(zhí)行各個任務(wù),這就是答案?,F(xiàn)代應(yīng)用系統(tǒng),特別是多媒體密集型應(yīng)用系 統(tǒng),它在一個時隙里要完成的不只是一兩個任務(wù)?,F(xiàn)在,如果說不是大多數(shù)任務(wù),有很多任務(wù)都有一部分是實時的。于是,一個處理器核需要使用實時時鐘信號,用 它把狀態(tài)信號以消息的方式送給其他處理器核,或者每一個處理器核都能夠直接得到基準(zhǔn)時鐘信號。在這兩種辦法,后者好得多。 如果每個處理器核都能夠得到實時時鐘信號,因而可以取消狀態(tài)信號,而且不需要使用狀態(tài)信號在處理器核之間傳送數(shù)據(jù),在處理器核之間完全取 消狀態(tài)信號這種通訊方式還有很長一段路要走。要注意的是,我們并不是建議把系統(tǒng)時鐘信號傳到所有的處理器核去,這需要按照那個時鐘信號同步地切換幾百萬個 節(jié)點。為了讓實時時鐘有效地工作,每個處理器核中只有少數(shù)節(jié)點必須切換,對功耗的影響可以忽視。為了讓每個節(jié)點能夠充分地進行實時處理,在每個節(jié)點上用一 個簡單的計數(shù)器就綽綽有余了。 在設(shè)計上實現(xiàn)低功耗 隨著越來越多嵌入式處理器芯片用在在移動應(yīng)用系統(tǒng)中,對低功耗的要求越來越重要。在傳統(tǒng)的設(shè)計中,絞盡腦汁在每一個細(xì)小問題上下功夫,細(xì)心地決定每個信號通路的速度,然后按照這個速度來選擇晶體管的大小。只有速度最高的信號通路使用大功率晶體管。 但是,多核芯片能夠按照數(shù)據(jù)是否出現(xiàn)來啟動處理器核或者讓它停下來,因此節(jié)電的辦法要簡單得多。不進行數(shù)據(jù)處理的處理器核不工作,它完全不消耗功率。處理器核只在需要時才工作,接通電源和切斷電源完全是自動進行的,不需要由程序來干預(yù)。 把處理器核的電源完全切斷,這對功耗的影響比起在信號通路上做文章大得多。事實上,這個方法還有一個優(yōu)點。因為各個處理器核之間的數(shù)據(jù)通路 是自動同步的,完全沒有必要對處理器核本身進行同步。這就是說,不需要一個中央時鐘為每個處理器核提供時鐘信號。數(shù)據(jù)的傳送總是盡量以最高速度進行外 部時鐘不起任何作用,只不過是增加了復(fù)雜程度。每個處理器核各有一個時鐘一個簡單的環(huán)形振蕩器,它的速度和硅半導(dǎo)體的速度一樣快,這些時鐘取代了中央 時鐘。沒有中央時鐘,意味著不需要龐大的時鐘樹,而時鐘樹中的幾百萬個晶體管節(jié)點隨著時鐘信號的每一次嘀嗒一聲而消耗功率。相反,每個處理器核都有小小的 時鐘振蕩器,但是只在那個處理器核工作時,它的時鐘才工作。如果一個處理器核由于在共用寄存器上沒有數(shù)據(jù)可用,或者鄰近的處理器核還沒有讀取,因而停了下 來,環(huán)形振蕩器也停止工作。只有處理器核工作時,它的時鐘才消耗功率。即使在這時,它們相互之間完全不同步,所以功耗也不是集中在某個時間。 在這樣的芯片中,有幾十個處理器核,在任何一個給定的時間,這些處理器中只有一部分在運行。其中有一些處理器核有一段相當(dāng)長的時間沒有工 作,因為芯片工作的狀況是,這些任務(wù)在運行時,這些處理器核并沒有參與。但是,即使在工作的處理器核在短時間內(nèi)也是這樣。先接通電源并且以硅半導(dǎo)體所能達 到的速度執(zhí)行程序,接著,它的數(shù)據(jù)用完了,就立即切斷電源,或者等待鄰近的處理器核讀取數(shù)據(jù)后繼續(xù)工作。在這種情況下,我們估計,在任一時刻,只有三分之 一的處理器核在工作,過幾個納秒后,另外一組處理器核接通電源,但是仍然大約只有三分之一。這樣就有效地降低了整個芯片的功耗,降低了三分之二,同時,每 個處理器核以半導(dǎo)體可能達到的最大速度運行。 指令集 指令集主要是決定于與處理器有關(guān)的那些寄存器。不過,對于多核芯片,處理器核經(jīng)過精心設(shè)計,速度很高,但尺寸很小,復(fù)雜程度最低。換句話說 就是,是RISC處理器。這種處理器用很簡單、數(shù)量減少了的指令集運行。至今,處理器結(jié)構(gòu)和處理器語言的最好搭配是,處理器執(zhí)行的是用高水平RISC語言 作為機器碼編寫的指令。這就做了兩件事:第一是把大量功能放到最短的程序中,第二是,取消高級源代碼與機器碼之間的中間轉(zhuǎn)換,從而把執(zhí)行指令的速度提到最 高。對于存儲器容量受限制的芯片,上面講的第一點極重要,在處理要求很高的多媒體應(yīng)用算法時,第二點同樣重要。 這就提出了一個問題:在這些處理器核中用什么高級語言作為機器碼指令集?關(guān)于這個問題,沒有多少可選擇的。大多數(shù)現(xiàn)代高級語言是把大量數(shù) 據(jù)傳送給一組功能和子程序。程序員大體上是看不到這個過程的,因為它是穩(wěn)藏在語言匯編器后面。但是,對于將來用于嵌入式芯片的處理器核,這個方法的效率很 低。在這種情況下,處理器可以是RISC 處理器,但是像C和C+這些語言肯定不屬于RISC之列。好在有一種語言是針對這類處理器進行了優(yōu)化的事實上它是針對設(shè)想中的多核芯片設(shè)計的。這種 語言就是 Forth。 對于小的處理器核,F(xiàn)orth是很理想的。這有幾個原因。但是首先是,它不使用大量的寄存器。實現(xiàn)Forth處理器的硬件很少。而且,因 為 在編制Forth程序時,是定義新的字,然后用這些字來定義更高級的字,確定一組很少的核心字是很容易的,其余一切都是用這些核心字,然后把這些核心字裝 在處理器的專用電路中。最后的結(jié)果是處理器核非常小,速度很高。 用核心字實現(xiàn)的指令只有32條。有可能達到像理想的RISC那樣,用數(shù)量最少的指令集直接處理大多數(shù)應(yīng)用軟件源代碼,同時又可以使用那些 包含很少用的指令的指令集這種指令集會使電路變得復(fù)雜,最終降低執(zhí)行速度。很清楚的是,只有32條指令的指令集只用5位就能實現(xiàn),有一些指令只能用于 某些場合,這樣就有可能把幾條指令都放在一個不長的指令字中,在一個18 位的指令字中最多可以放4條指令。 像這樣安排的指令可以自動地達到緩存的效果,不需要設(shè)置L1和L2緩存。每取一個指令字時,一下子就把四條指令送到處理器核中。雖然這種 內(nèi)在的緩存很小,指令本身在使用它時,非常有效。例如,循環(huán)子程序的微指令可以全部放在一個18位指令字中。這種結(jié)構(gòu)的指令字如果和自動狀態(tài)信號一起,放 到I/O寄存器中,是很理想的,因為這表示只要取一次指令字,就可以傳送大數(shù)據(jù)塊。用這種指令字時,要執(zhí)行的指令是放在與鄰近處理器核共用的I/O寄存器 中,它的功能很強,因為寄存器中的每一個指令字有四條指令,而不是一條指令。這種軟件和硬件結(jié)構(gòu),以及它們對多核芯片性能的巨大影響,用傳統(tǒng)的語言是做不 到的只能用這種指令集,才能夠把幾條指令放在一個指令字中,用這個指令字就能夠執(zhí)行整個循環(huán)子程序。 不使用中央操作系統(tǒng) 在一塊芯片上實現(xiàn)多個處理核并不是什么新點子,事實上,在市場上至少有幾十種這樣的芯片,或者即將推出這樣的芯片。但是,實際上所有這些芯 片包含兩個或者四個處理器核,這些是大而復(fù)雜的處理器,用于 Windows臺式計算機。有一個地方用了它,不是用在十分緊湊的嵌入式應(yīng)用系統(tǒng),而是用在大型服務(wù)器上。這種多核處理器都需要一個中央操作系統(tǒng)把應(yīng)用程 裝到處理器核中并指揮它們工作。 在典型的對稱式多核處理技術(shù)中,各個處理器核都是一樣的。為了能夠成功,假定要運行的軟件已經(jīng)用多線程的方式編寫。操作系統(tǒng)可能在其中的 一個處理器核中運行,它把源代碼分成塊,啟動各個線程,用這個方式把源代碼裝到其他的處理核中。在裝到處理器核時,以線程源代碼塊作為源代碼的基本單位, 讓所有的處理器核的處理工作量保持均勻。如果應(yīng)用程序已經(jīng)是用這種多線程的方式編寫的話,多核SMP的方法運作得相當(dāng)不錯。 當(dāng)然,并不是所有軟件是這樣編寫的,但是,即使不是這樣編寫的,中央操作系統(tǒng)也能夠把整個程序裝到各個處理器核中,于是,多核結(jié)構(gòu)的優(yōu)點 便顯示出來了。但是,對于嵌入式處理器,這些都不適用。由于沒有磁盤驅(qū)動器,不能在在運行過程中在中央操作系統(tǒng)的控制下把程序裝到處理器核中。簡單地講, 在嵌入式處理器中沒有中央

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論