A. 單片機科技論文
單片機是經歷長期開發與應用的嵌入式系統電子設備,與計算機相比,它具有許多顯著的特點。這是我為大家整理的單片機科技論文,僅供參考!
單片機在現代科技中的應用與前景
[摘 要]單片機是經歷長期開發與應用的嵌入式系統電子設備,與計算機相比,它具有許多顯著的特點。當前,單片機在現代科技應用的領域越來越廣泛,並在家用電器、工業控制領域、醫療器械、儀器儀表等方面取得了良好的應用效果。在未來,單片機的更新換代仍然不會停止,它會向更加智能化,自動化,抗干擾能力強,集成度高,實用性好等方面的發展。
[關鍵詞]單片機;現代科技;應用與前景
中圖分類號:TP368.12 文獻標識碼:A 文章編號:1009-914X(2014)20-0054-02
隨著現代科技的不斷發展,嵌入式技術的開發及其應用在現代科技中的應用顯得越來越重要。在嵌入式技術發展的趨勢下,單片微型計算機(簡稱“單片機”)應運而生,並隨著時代要求的發展不斷地更新換代。到20世紀70年代前半期,單片機己經發展為嵌入式系統最為突出的典型代表之一,英特爾公司更將其命名為“嵌入式微控制器”。 單片機的產生極大程度上推動著整個現代科技應用及其功能的發展,並在許多實際應用領域都取得了顯著的成效,受到社會各界的關廣泛關注,其應用技術發展的越來越成熟,具體實踐應用到各個領域,開發技術也越來越智能化。本文以單片機的發展及其特點為邏輯起點,對單片機的應用性及其前景進行說明與分析。
一、單片機的發展及其特點
單片機又稱“單片微型計算機”,是典型的嵌入式微控制器(Microcontroller Unit),“它並不是落實某一個具體的邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上,其功能類似於一台最小系統的微型的計算機。具體來說,單片機由運算器、控制器、存儲器、輸入輸出設備構成”[1]。
單片機產生於20世紀70年代,經歷了三個發展階段(SCM、MCU、SOC)。初期的SCM單片機基本上都是4、8位的。其中,INTEL的8051是初期單片機最具典型意義的。此後在INTEL 8051的基礎上開發並應用了MCS51系列MCU系統。 由於MCS51系列MCU系統的單片機系統直到現在還在廣泛使用,單片機伴隨這科學技術的發展逐步開發出16位系統。但由於16位單片機的性價比不夠理想,因此並未得到很廣泛的應用。90年代後,隨著電子產品市場的進一步繁榮發展,單片機的開發與應用得到了顯著的提升。特別是INTEL i960系列與ARM系列在社會上的實踐應用,32位單片機逐步地取代16位單片機的在嵌入式技術中的領先地位,並且在市場上取得了兩好的效益。
與計算機相比,單片機的特點主要表現在如下幾個方面:首先,單片機使用簡單便捷,可實現體系布局的模塊化;其次,單片機耐用時間長,有較高的耐用性;再次,單片機的處理能力強,運行速度較快;此外,單片機還具備低電壓、低功耗、控制功能與環境適應能力強的特點;最後,單片機體系完備,集成了計數器、串列口、並行口、CPU、RAM與ROM等應用組件。
二、單片機在現代科技中的應用
單片機具備許多優良的特點,廣泛的應在諸多領域,例如家用電器、工業控制領域、醫療器械、儀器儀表等方面,當前單片機己經得到廣泛的使用,並產生了良好的應用效果。具體來說,單片機在現代科技中的應用主要體現在以下幾個方面:
(一)在家用電器領域中的應用?
隨著時代的發展,追求更高、更好的生活品質,對家用電器的功能需求也逐年提高,這就迫使家用電器的不斷升級與改造。單片機可以滿足這種需求,通過安裝單片機,實現整個家用電器的智能化控制,識別相關的信息,選擇合適的用戶滿意信息,使得家用電器在引入單片機後很好的提高了性能,更新換代的速度也得到了提升,提高了企業的競爭力,單片機應用的前景越來越廣泛。例如在電視機上採用單片機技術可以使得足不出戶的進行大型智能游戲的控制,選擇頻道方式更加便捷;微波爐可以實現食物的自動選擇加熱時間以及溫度;洗衣機自動根據衣服材質、贓物程度,自動選擇洗滌劑的用量、強度、時間等。
(二)在工業控制領域的應用
在工業領域,隨著自動化的發展,尤其是在特殊環境下的,例如核工業、粉塵工業、電力高壓行業等方面,對人的危害性比較大,危險性高的行業,大部分採用的是自動化操作。在此領域,單片機從此興起,並隨著應用的更加廣泛在工業化控制管理,通過單片機的數據採集與過程式控制制手段,實現了工業化有效的智能控制管理工作,例如報警系統、流水線作業系統、自動噴漆系統等,都得到了很好的應用,隨著時代的發展,其應用領域會更加廣泛。
(三)在醫療器械領域的應用
現代社會,醫療條件與技術不斷提升,自身的身體健康越來越受到關注然而在現有的條件下,消毒條件、住院條件,檢測手段、醫療手段等都存在著諸多問題,直接影響著看病的好壞,影響著每個人的身體健康。隨之而來的是現在單片機的應用在醫療器械領域,由於自身的特點與有時,可以進行多種疾病的分析,提高設備檢測的准確性與可靠性,提高了診斷下葯的准確性,保證了身體健康,醫療設備結構更加合理化、智能化、自動化,例如在超聲波檢測、呼吸系統、分析儀器等。
(四)在儀器儀表領域的應用
現在儀器儀表的生產的好壞,直接代表著一個國家的製造水平。在儀器儀表領域不斷的向著智能化方向發展,單片機的作用在此領域尤其體現到其優點,具有重要的意義單片機集成度高,可靠性高、小巧,應用在儀器儀表上使得整個行業得到了很大的改變,隨著單片機的集成到儀器儀表中,使得自身的設備向著數字化,智能化發展,其各方麵包括處理功能測試功能,控制功能等都得到了很大的提升。例如在航空的儀器儀表中採用單片機技術,保證了儀器的可靠性、准確性,集成性高,事故率降低,提升了航天航空電子系統的智能化與自動化樹皮,信息傳遞有效的進行。
三、單片機在現代科技中的發展前景
隨著科學技術的日新月異,單片機推陳出新的速度也愈來愈快。伴隨著新的CPU的加入,多位的單片機共同開發與發展是整個發展的方向。很長一段時間,單片集成電路技術在8位機發展的主要方向,隨著網路通信技術的發展,16位機、32位機、64位機成為未來的發展方向。單片機的運行也會愈來愈快,防磨損能力也隨之提升,具有很好的低雜訊、可靠性高的優點。現在單片機為了提高抗干擾性採用EFT技術,使得單片機受外界的干擾性小,系統的時鍾信號得到了很好的保證,可靠性得到了提高;布線及其驅動技術應用在單片機上降低了雜訊,不至於對單片機內部的電路信號進行干擾。單片機還應用OPT技能,較之掩膜技術有著生產周期短,風險小特點,採用裸片技術或者貼面技術,實現了OPT晶元的接觸不良的問題,使得得到了廣泛的應用。
隨著電子信息技術的發展與應用領域的逐步廣泛,單片機向更加智能化,自動化,抗干擾能力強,集成度高,實用性好等方面的發展。同時,晶元的設計也愈發復雜,單片機的功能更加齊全,保有良好的耐用性、可延伸性,單片機的設計與開發、應用的前景十分廣泛,領域更加寬廣,智能化程度更高。
單片機在目前的發展形勢下,還表現出以下趨勢:首先,可靠性及應用越來越水平高和互聯網連接已是一種明顯的走向。 其次,所集成的部件越來越多。最後,功耗越來越低和模擬電路結合越來越多。
結語
總之,在第二十一世紀,計算機技術、智能電子技術的發展,在現代社會中發揮著舉足輕重的作用,嵌入式系統是電子技術的重要組成部分,其中單片機又是嵌入式系統最具典型的代表,具有強大的發展潛力。單片機技術提高了控制領域的效率以及可靠性,實現了工業的自動化,智能化,未來的工業化發展中將隨著科技的不斷進步而發展。
[1] 李璞,郭敏. 單片機的應用與發展[J]. 中國校外教育 2010年S1期
單片機應用技術探究
摘要:近幾年單片機得到了飛速的發展,單片機最明顯的優勢就是可以嵌入到各種儀器、設備中。目前大量的嵌入式系統均採用單片機,本文分析了單片機的形成及發展過程以及當前的技術進展,同時分析了影響單片機系統可靠性的原因,並論述提高單片機可靠性的措施。
關鍵詞:單片機;可靠性技術;發展趨勢
中圖分類號: C35 文獻標識碼: A
引言
單片機,亦稱單片微電腦或單片微型計算機。它是把中央處理器(CPU)、隨機存取存儲器(RAM)、只讀存儲器(ROM)、輸入/輸出埠(I/0)等主要計算機功能部件都集成在一塊集成電路晶元上的微型計算機。現在可以說單片機是百花齊放的時期,世界上各大晶元製造公司都推出了自己的單片機,從8位、16位到32位,數不勝數,應有盡有,它們各具特色,互成互補,為單片機的應用提供廣闊的天地。縱觀單片機的發展過程,可以預示單片機的發展趨勢 。
一 、單片機的應用場合
1.1智能儀器儀表。單片機用於各種儀器儀表,一方面提高了儀器儀表的使用功能和精度,使儀器儀表智能化,同時還簡化了儀器儀表的硬體結構,從而可以方便地完成儀器儀表產品的升級換代。如各種智能電氣測量儀表、智能感測器等。
1.2機電一體化產品。機電一體化產品是集機械技術、微電子技術、自動化技術和計算機技術於一體,具有智能化特徵的各種機電產品。單片機在機電一體化產品的開發中可以發揮巨大的作用。典型產品如機器人、數控機床、自動包裝機、點鈔機、醫療設備、列印機、傳真機、復印機等。
1.3實時工業控制。單片機還可以用於各種物理量的採集與控制。電流、電壓、溫度、液位、流量等物理參數的採集和控制均可以利用單片機方便地實現。在這類系統中,利用單片機作為系統控制器,可以根據被控對象的不同特徵採用不同的智能演算法,實現期望的控制指標,從而提高生產效率和產品質量。典型應用如電機轉速控制、溫度控制、自動生產線等。
1.4家用電器。家用電器是單片機的又一重要應用領域,前景十分廣闊。如空調器、電冰箱、洗衣機、電飯煲、高檔洗浴設備、高檔玩具等。另外,在交通領域中,汽車、火車、飛機、航天器等均有單片機的廣泛應用。如汽車自動駕駛系統、航天測控系統、黑匣子還有分布式系統的前端模塊等等。
二、分析單片機可靠性限制原因及應對措施
目前,大量的嵌入式系統均採用了單片機,並且這樣的應用正在更進一步擴展;但是多年以來人們一直為單片機系統的可靠性問題所困惑。在一些要求高可靠性的控制系統中,這往往成為限制其應用的主要原因。
1.單片機系統的失效分析
一個單片機系統的可靠性是其自身軟硬體與其所處工作環境綜合作用的結果,因此系統的可靠性也應從這兩個方面去分析與設計。對於系統自身而言,能不能在保證系統各項功能實現的同時,對系統自身運行過程中出現的各種干擾信號及直接來自於系統外部的干擾信號進行有效的抑制,是決定系統可靠性的關鍵。有缺陷的系統往往只從邏輯上去保證系統功能的實現,而對於系統運行過程中可能出現的潛在的問題考慮欠缺,採取的措施不足,在干擾信號真正襲來的時候,系統就可能會陷入困境。
2. 提高可靠性的措施
2.1減少引起系統不可靠或影響系統可靠的外界因素:
1) EFT (Electrical Fast Transient)技術。EFT技術是一種抗干擾技術,它是指在振盪電路的正弦信號受到外界干擾時,其波形上會迭加各種毛刺信號,如果使用施密特電路對其整形,則毛刺會成為觸發信號干擾正常的時鍾,在交替使用施密特電路和RC濾波電路時, 就可以消除這些毛否則令其作用失效,從而保證系統的時鍾信號正常工作。
2) 低雜訊布線技術及驅動技術。在傳統的單片機中,電源及地線是在集成電路外殼的對稱引腳上,一般是在左上、右下或右上、左下的兩對對稱點上。這樣,就使電源雜訊穿過整塊晶元,對單片機的內部電路造成干擾。現在,很多單片機都把地和電源引腳安排在兩條相鄰的引腳上。這樣,不僅降低了穿過整個晶元的電流,而且在印製電路板上容易布置去耦電容,從而降低系統的雜訊。現在為了適應各種應用的需要,很多單片機採用"跳變沿軟化技術",從而消除大電流瞬變時產生的雜訊。
3) 採用低頻時鍾。高頻外時鍾是雜訊源之一,不僅能對單片機應用系統產生干擾,而且還會對外界電路產生干擾,令電磁兼容性不能滿足要求。對於要求可靠性較高的系統,低頻外時鍾有利於降低系統的雜訊。在一些單片機中採用內部鎖相環技術,則在外部時鍾較低時,也能產生較高的內部匯流排速度,從而保證了速度又降低了雜訊。
三、單片機的發展趨勢
1單片機技術的發展前景及趨勢
由於通用型IC的仿冒現象比較嚴重,因此定製化IC將是未來單片機發展的主要方向。此外,盡管16位、32位單片機市場有所增加,但8位在未來三五年內仍將佔主流,只是成長幅度會趨緩。從應用角度講,盛揚看好消費類電子和家電產品,尤其是中小型家電產品,它屬於比較成熟的單片機應用領域;其次是高端領域的車用產品。目前,盛揚已針對汽車周邊領域推出系列產品,主要用於汽車防盜、車載電子、信息娛樂、胎壓監測、里程錶的面板等。
單片機擁有良好的應用前景,但廠商之間的競爭愈演愈烈。因此,對本土企業而言,要想脫穎而出,質量一定要好,同時還要注重產品的環保和可靠性,因為家電和汽車等產品對安全性的要求越來越高;其次,充分發揮本土廠商在特定應用領域的性價比優勢。不過,這種性價比必須建立在性能過關、可靠度過關的基礎上。
製作工藝CMO化。更小的光刻工藝提高了集成度,從而使晶元更小、成本更低、工作電壓更低、功耗更低。CPU的改進。同時,採用雙CPU結構,增加數據匯流排的寬度,提高數據處理的速度和能力;採用流水線結構,提高處理和運算速度,以適應實時控制和處理的需要。增大存儲容量,片內EPROM的E2PROM化,程序的保密化,提高並行口驅動能力,以減少外圍驅動晶元,增加外圍?I/O?口的邏輯功能和控制的靈活性。最後,以串列方式為主的外圍擴展;外圍電路的內裝化;和互聯網連接已是一種明顯的走向,可靠性及應用水平越來越高。
2微型單片化
現在常規的單片機普遍都是將中央處理器(CPU)、隨機存取數據存儲(RAM)、只讀程序存儲器(ROM)、並行和串列通信介面,中斷系統、定時電路、時鍾電路集成在一塊單一的晶元上,增強型的單片機集成了如A/D轉換器、PMW(脈寬調制電路)、WDT(看門狗)、有些單片機將LCD(液晶)驅動電路都集成在單一的晶元上,這樣單片機包含的單元電路就更多,功能就越強大。甚至單片機廠商還可以根據用戶的要求量身定做,製造出具有自己特色的單片機晶元。 此外,現在的產品普遍要求體積小、重量輕,這就要求單片機除了功能強和功耗低外,還要求其體積要小。現在的許多單片機都具有多種封裝形式,其中SMD(表面封裝)越來越受歡迎,使得由單片機構成的系統正朝微型化方向發展。
3串列擴展技術
在很長一段時間里,通用型單片機通過三匯流排結構擴展外圍器件成為單片機應用的主流結構。隨著低價位OTP(One-Time Password)及各種特殊類型片內程序存儲器的發展,加之處圍介面不斷進入片內,推動了單片機“單片”應用結構的發展。特別是I2C、SPI 等串列匯流排的引入,可以使單片機的引腳設計得更少,單片機系統結構更加簡化及規范化。
4、結語
單片機改變了我們生活,縱觀我們現在生活的各個領域,從導彈的導航裝置,到飛機上各種儀表的控制,從計算機的網路通訊與數據傳輸,到工業自動化過程的實時控制和數據處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開單片機, 單片機有著廣闊的應用前景。
參考文獻
[1] 張志良; 單片機原理與控制技術; 北京,機械工業出版社,2008
[2] 李廣第,朱月秀,王秀山.單片機基礎.北京:北京航空航天大學出版社,2002.
[3] 胡漢才.單片機原理及系統設計.北京:清華大學出版社,2002.
B. CPU的緩存有什麼用為什麼緩存大的運算速度快
緩存是CPU的一部分,它存在於CPU中 CPU存取數據的速度非常的快,一秒鍾能夠存取、處理十億條指令和數據(術語:CPU主頻1G),而內存就慢很多,快的內存能夠達到幾十兆就不錯了,可見兩者的速度差異是多麼的大。 存是為了解決CPU速度和內存速度的速度差異問題 內存中被CPU訪問最頻繁的數據和指令被復制入CPU中的緩存,這樣CPU就可以不經常到象「蝸牛」一樣慢的內存中去取數據了,CPU只要到緩存中去取就行了,而緩存的速度要比內存快很多。 緩存大小也是CPU的重要指標之一,而且緩存的結構和大小對CPU速度的影響非常大,CPU內緩存的運行頻率極高,一般是和處理器同頻運作,工作效率遠遠大於系統內存和硬碟。實際工作時,CPU往往需要重復讀取同樣的數據塊,而緩存容量的增大,可以大幅度提升CPU內部讀取數據的命中率,而不用再到內存或者硬碟上尋找,以此提高系統性能。但是由於CPU晶元面積和成本的因素來考慮,緩存都很小。 L1 Cache(一級緩存)是CPU第一層高速緩存,分為數據緩存和指令緩存。內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。一般伺服器CPU的L1緩存的容量通常在32—256KB。Pc235.com L2 Cache(二級緩存)是CPU的第二層高速緩存,分內部和外部兩種晶元。內部的晶元二級緩存運行速度與主頻相同,而外部的二級緩存則只有主頻的一半。L2高速緩存容量也會影響CPU的性能,原則是越大越好,現在家庭用CPU容量最大的是512KB,而伺服器和工作站上用CPU的L2高速緩存更高達256-1MB,有的高達2MB或者3MB。 L3 Cache(三級緩存),分為兩種,早期的是外置,現在的都是內置的。而它的實際作用即是,L3緩存的應用可以進一步降低內存延遲,同時提升大數據量計算時處理器的性能。降低內存延遲和提升大數據量計算能力對游戲都很有幫助。而在伺服器領域增加L3緩存在性能方面仍然有顯著的提升。比方具有較大L3緩存的配置利用物理內存會更有效,故它比較慢的磁碟I/O子系統可以處理更多的數據請求。具有較大L3緩存的處理器提供更有效的文件系統緩存行為及較短消息和處理器隊列長度。 其實最早的L3緩存被應用在AMD發布的K6-III處理器上,當時的L3緩存受限於製造工藝,並沒有被集成進晶元內部,而是集成在主板上。在只能夠和系統匯流排頻率同步的L3緩存同主內存其實差不了多少。後來使用L3緩存的是英特爾為伺服器市場所推出的Itanium處理器。接著就是P4EE和至強MP。Intel還打算推出一款9MB L3緩存的Itanium2處理器,和以後24MB L3緩存的雙核心Itanium2處理器。 但基本上L3緩存對處理器的性能提高顯得不是很重要,比方配備1MB L3緩存的Xeon MP處理器卻仍然不是Opteron的對手,由此可見前端匯流排的增加,要比緩存增加帶來更有效的性能提升。
C. 並行處理的並行演算法的基本策略
在並行處理技術中所使用的演算法主要遵循三種策略:
1.分而治之法:也就是把多個任務分解到多個處理器或多個計算機中,然後再按照一定的拓撲結構來進行求解。
2.重新排序法:分別採用靜態或動態的指令詞度方式。
3.顯式/隱式並行性結合:顯式指的是並行語言通過編譯形成並行程序,隱式指的是串列語言通過編譯形成並行程序,顯式/隱式並行性結合的關鍵就在於並行編譯,而並行編譯涉及到語句、程序段、進程以及各級程序的並行性。
二、並行性描述定義
利用計算機語言進行並行性描述的時候主要有三種方案:
1.語言擴展方案:也就是利用各種語言的庫函數來進行並行性功能的擴展。
2.編譯制導法:也稱為智能編譯,它是隱式並行策略的體現,主要是由並行編譯系統進行程序表示、控制流的分析、相關分析、優化分析和並行化劃分,由相關分析得到方法庫管理方案,由優化分析得到知識庫管理方案,由並行化劃分得到程序重構,從而形成並行程序。
3.新的語言結構法:這是顯式並行策略的體現。也就是建立一種全新的並行語言的體系,而這種並行語言通過編譯就能直接形成並行程序。
三、並行軟體
並行軟體可分成並行系統軟體和並行應用軟體兩大類,並行系統軟體主要指並行編譯系統和並行操作系統,並行應用軟體主要指各種軟體工具和應用軟體包。在軟體中所牽涉到的程序的並行性主要是指程序的相關性和網路互連兩方面。
1.程序的相關性:程序的相關性主要分為數據相關、控制相關和資源相關三類。
數據相關說明的是語句之間的有序關系,主要有流相關、反相關、輸出相關、I/O相關和求知相關等,這種關系在程序運行前就可以通過分析程序確定下來。數據相關是一種偏序關系,程序中並不是每一對語句的成員都是相關聯的。可以通過分析程序的數據相關,把程序中一些不存在相關性的指令並行地執行,以提高程序運行的速度。
控制相關指的是語句執行次序在運行前不能確定的情況。它一般是由轉移指令引起的,只有在程序執行到一定的語句時才能判斷出語句的相關性。控制相關常使正在開發的並行性中止,為了開發更多的並行性,必須用編譯技術克服控制相關。
而資源相關則與系統進行的工作無關,而與並行事件利用整數部件、浮點部件、寄存器和存儲區等共享資源時發生的沖突有關。軟體的並行性主要是由程序的控制相關和數據相關性決定的。在並行性開發時往往把程序劃分成許多的程序段——顆粒。顆粒的規模也稱為粒度,它是衡量軟體進程所含計算量的尺度,一般用細、中、粗來描述。劃分的粒度越細,各子系統間的通信時延也越低,並行性就越高,但系統開銷也越大。因此,我們在進行程序組合優化的時候應該選擇適當的粒度,並且把通訊時延盡可能放在程序段中進行,還可以通過軟硬體適配和編譯優化的手段來提高程序的並行度。
2.網路互連:將計算機子系統互連在一起或構造多處理機或多計算機時可使用靜態或動態拓撲結構的網路。靜態網路由點一點直接相連而成,這種連接方式在程序執行過程中不會改變,常用來實現集中式系統的子系統之間或分布式系統的多個計算結點之間的固定連接。動態網路是用開關通道實現的,它可動態地改變結構,使之與用戶程序中的通信要求匹配。動態網路包括匯流排、交叉開關和多級網路,常用於共享存儲型多處理機中。在網路上的消息傳遞主要通過尋徑來實現。常見的尋徑方式有存儲轉發尋徑和蟲蝕尋徑等。在存儲轉發網路中以長度固定的包作為信息流的基本單位,每個結點有一個包緩沖區,包從源結點經過一系列中間結點到達目的結點。存儲轉發網路的時延與源和目的之間的距離(段數)成正比。而在新型的計算機系統中採用蟲蝕尋徑,把包進一步分成一些固定長度的片,與結點相連的硬體尋徑器中有片緩沖區。消息從源傳送到目的結點要經過一系列尋徑器。同一個包中所有的片以流水方式順序傳送,不同的包可交替地傳送,但不同包的片不能交叉,以免被送到錯誤的目的地。蟲蝕尋徑的時延幾乎與源和目的之間的距離無關。在尋徑中產生的死鎖問題可以由虛擬通道來解決。虛擬通道是兩個結點間的邏輯鏈,它由源結點的片緩沖區、結點間的物理通道以及接收結點的片緩沖區組成。物理通道由所有的虛擬通道分時地共享。虛擬通道雖然可以避免死鎖,但可能會使每個請求可用的有效通道頻寬降低。因此,在確定虛擬通道數目時,需要對網路吞吐量和通信時延折衷考慮。
四、硬體技術在硬體技術方面主要從處理機、存儲器和流水線三個方面來實現並行。
1.處理機:主要的處理機系列包括CISC、RISC、超標量、VL1W、超流水線、向量以及符號處理機。
傳統的處理機屬於復雜指令系統計算(CISC)結構。指令系統大,指令格式可變,通用寄存器個數較少,基本上使用合一的指令與數據高速緩存,時鍾頻率較低,CPI較高,大多數利用ROM 實現微碼控制CPU,而當今的精簡指令系統計算(RISC)處理機指令格式簡單規范,面向寄存器堆,採用重疊寄存器窗口技術,具有多級Cache,多種流水線結構,強調編譯優化技術,時鍾頻率快,CPI低,大多數用硬連線控制CPU。
CISC或RISC標量處理機都可以採用超標量或向量結構來改善性能。標量處理機在每個周期內只發射一條指令並要求周期只完成從流水線來的一條指令。而在超標量處理機中,使用了多指令流水線,每個周期要發射多條指令並產生多個結果。由於希望程序中有許多的指令級並行性,因此超標量處理機更要依靠優化編譯器去開發並行性。
VL1W 結構是將水平微碼和超標量處理這兩種普遍採用的概念結合起來產生的。典型的超長指令字VL1W 機器指令字長度有數百位。在VLlW 處理機中,多個功能部件是並發工作的,所有的功能部件共享使用公用大型寄存器堆,由功能部件同時執行的各種操作是用VL1W 指令來同步的,每條指令可指定多個操作。VL1W 指令解碼比超標量指令容易,但在開發不同數量的並行性時總是需要不同的指令系統。VL1W 主要是開發標量操作之間的並行性,它的成功與否很大程度取決於代碼壓縮的效率,其結構和任何傳統的通用處理機完全不兼容。即使同一結構的不同實現也不大可能做到彼此二進制兼容。VL1W 的主要優點在於它的硬體結構和指令系統簡單,在科學應用領域可以發揮良好作用,但在一般應用場合可能並不很好用。
向量處理機對數組執行向量指令,每條指令都包含一串重復的操作。它是專門設計用來完成向量運算的協處理機,通常用於多流水線超級計算機中。向量處理機可以利用循環級展開所得的並行性,它可以附屬於任何標量處理機。專用的向量流水線可以在循環控制中消除某些軟體開銷,它的效果與優化編譯器將順序代碼向量化的性能很有關系。從理論上說,向量機可以具有和超標量處理機同樣的性能,因此可以說向量機的並行性與超標量機相同。
符號處理機是為AI應用而研製的,已用於定理證明、模式識別、專家系統、知識工程、文本檢索、科學以及機器智能等許多應用領域。在這些應用中,數據和知識表達式、原語操作、演算法特性、存儲器、I/0和通信以及專用的結構特性與數值計算是不一樣的,符號處理機也稱為邏輯程序設計語言處理機、表處理語言處理機或符號變換器。符號處理並不和數值數據打交道,它處理的是邏輯程序、符號表、對象、劇本、黑板、產生式系統、語義網路、框架以及人工神經網路等問題。這些操作需要專門的指令系統,通常不使用浮點操作。
2.存儲器:存儲設備按容量和存取時間從低到高可分為寄存器、高速緩存、主存儲器、磁碟設備和磁帶機五個層次。較低層存儲設備與較高層的相比,存取速度較快、容量較小,每位元組成本較高、帶寬較寬、傳輸單位較小。
存放在存儲器層次結構中的信息滿足三個重要特性:包含性、一致性和局部性。所謂包含性,指的是一個信息字的復製品可以在比它高的所有層中找到,而如果在高層中丟失了一個信息,則在比它低的所有層中此信息也將丟失。CPU 和高速緩存之間的信息傳送是按字進行的,高速緩存和主存儲器間用塊作為數據傳送的基本單位,主存和磁碟之間又是以頁面為基本單位來傳送信息的,而在磁碟和磁帶機之間的數據傳送則是按文件級處理的。所謂一致性要求的是同一個信息項與後繼存儲器層次上的副本是一致的。也就是說,如果在高速緩存中的一個字被修改過,那麼在所有更高層上該字的副本也必須立即或最後加以修改。為了盡量減少存儲器層次結構的有效存取時間,通常把頻繁使用的信息放在較低層次。維護存儲器層次結構一致性一般有兩種策略,一種是寫直達策略,也就是如果,則立即在所有高層存儲器中進行同樣的修改;另一種是寫回策略,也就是在較低層中對信息進行修改後並不立即在高層存儲器中進行相應的修改,而是等到該信息將被替換或將從低層中消失時才在所有高層存儲器中進行同樣的修改。甚至可以將寫直達和寫回策略的優點結合起來,形成寫一次協議來維護存儲器的一致性。
存儲器的層次結構是在一種程序行為——訪問的局部性基礎上開發出來的。主要有時間局部性、空間局部性和順序局部性。時間局部性指的是最近的訪問項很可能在不久的將來再次被訪問。它往往會引起對最近使用區域的集中訪問。空間局部性表示一種趨勢,指的是一個進程訪問的各項其地址彼此很近。順序局部性指的是在典型程序中,除非是轉移指令,一般指令都是順序執行的。
在多處理機系統中一般使用共享存儲器。對共享存儲器的組織一般採用低位交叉、高位交叉、高低位交叉三種方法。低位交叉又稱並發存取,它是把相鄰的地址放在相鄰的存儲器模塊中,在訪問時不容易產生沖突,並行性較好,但可靠性容錯能力和擴展性均較差。高位交叉又稱允許同時存取,它是把相鄰地址分配到同一個存儲器模塊中,可靠性、容錯能力和擴展性均較強,但訪問時易產生沖突,帶寬較窄,並行性較差。高低位交叉存取又稱C—s存取,它是結合了高位交叉和低位交叉兩種方法的優點,既解決了沖突問題,又能有效地提高容錯能力和並行性,最適合於向量處理機結構。
3.流水線:流水線技術主要有指令流水線技術和運算流水線技術兩種。
指令流水線技術主要目的是要提高計算機的運行效率和吞吐率。它主要通過設置預取指令緩沖區、設置多功能部件、進行內部數據定向、採取適當的指令調度策略來實現。指令調度的策略主要有靜態和動態兩種,靜態詞度是基於軟體的,主要由編譯器完成,動態詞度是基於硬體的,主要是通過硬體技術進行。
運算流水線主要有單功能流水線和多功能流水線兩種。其中多功能流水線又可分為靜態流水線和動態流水線。靜態流水線技術只用來實現確定的功能,而動態流水線可以在不同時間重新組合,實現不同的功能,它除流線連接外,還允許前饋和反饋連接,因此也稱為非線性流水線。這些前饋和反饋連接使得進入流水線的相繼事件的詞度變得很不簡單。由於這些連接,流水線不一定從最後一段輸出。根據不同的數據流動模式,人們可以用同一條流水線求得不同功能的值。
並行計算機發展簡述
40 年代開始的現代計算機發展歷程可以分為兩個明顯的發展時代:串列計算時代、並行計算時代。每一個計算時代都從體系結構發展開始,接著是系統軟體(特別是編譯器與操作系統)、應用軟體,最後隨著問題求解環境的發展而達到頂峰。創建和使用並行計算機的主要原因是因為並行計算機是解決單處理器速度瓶頸的最好方法之一。
並行計算機是由一組處理單元組成的,這組處理單元通過相互之間的通信與協作,以更快的速度共同完成一項大規模的計算任務。因此,並行計算機的兩個最主要的組成部分是計算節點和節點間的通信與協作機制。並行計算機體系結構的發展也主要體現在計算節點性能的提高以及節點間通信技術的改進兩方面。
60 年代初期,由於晶體管以及磁芯存儲器的出現,處理單元變得越來越小,存儲器也更加小巧和廉價。這些技術發展的結果導致了並行計算機的出現,這一時期的並行計算機多是規模不大的共享存儲多處理器系統,即所謂大型主機(Mainframe)。IBM360 是這一時期的典型代表。
到了60 年代末期,同一個處理器開始設置多個功能相同的功能單元,流水線技術也出現了。與單純提高時鍾頻率相比,這些並行特性在處理器內部的應用大大提高了並行計算機系統的性能。伊利諾依大學和Burroughs 公司此時開始實施IlliacIV 計劃,研製一台64 個CPU 的SIMD 主機系統,它涉及到硬體技術、體系結構、I/O 設備、操作系統、程序設計語言直至應用程序在內的眾多研究課題。不過,當一台規模大大縮小了的16CPU 系統終於在1975 年面世時,整個計算機界已經發生了巨大變化。
首先是存儲系統概念的革新,提出虛擬存儲和緩存的思想。IBM360/85 系統與360/91是屬於同一系列的兩個機型,360/91 的主頻高於360/85,所選用的內存速度也較快,並且採用了動態調度的指令流水線;但是,360/85 的整體性能卻高於360/91,唯一的原因就是前者採用了緩存技術,而後者則沒有。
其次是半導體存儲器開始代替磁芯存儲器。最初,半導體存儲器只是在某些機器被用作緩存,而CDC7600 則率先全面採用這種體積更小、速度更快、可以直接定址的半導體存儲器,磁芯存儲器從此退出了歷史舞台。與此同時,集成電路也出現了,並迅速應用到了計算機中。元器件技術的這兩大革命性突破,使得IlliacIV 的設計者們在底層硬體以及並行體系結構方面提出的種種改進都大為遜色。
1976 年CRAY-1 問世以後,向量計算機從此牢牢地控制著整個高性能計算機市場15 年。CRAY-1 對所使用的邏輯電路進行了精心的設計,採用了我們如今稱為RISC 的精簡指令集,還引入了向量寄存器,以完成向量運算。這一系列全新技術手段的使用,使CRAY-1 的主頻達到了80MHz。
微處理器隨著機器的字長從4 位、8 位、16 位一直增加到32 位,其性能也隨之顯著提高。正是因為看到了微處理器的這種潛力,卡內基- 梅隆大學開始在當時流行的DECPDP11 小型計算機的基礎上研製成功一台由16 個PDP11/40 處理機通過交叉開關與16 個共享存儲器模塊相連接而成的共享存儲多處理器系統C.mmp。
從80 年代開始,微處理器技術一直在高速前進。稍後又出現了非常適合於SMP 方式的匯流排協議,而伯克利加州大學則對匯流排協議進行了擴展,提出了Cache 一致性問題的處理方案。從此,C.mmp 開創出的共享存儲多處理器之路越走越寬;現在,這種體系結構已經基本上統治了伺服器和桌面工作站市場。
同一時期,基於消息傳遞機制的並行計算機也開始不斷涌現。80 年代中期,加州理工成功地將64 個i8086/i8087 處理器通過超立方體互連結構連結起來。此後,便先後出現了Intel iPSC 系列、INMOS Transputer 系列,Intel Paragon 以及IBM SP 的前身Vulcan 等基於消息傳遞機制的並行計算機。
80 年代末到90 年代初,共享存儲器方式的大規模並行計算機又獲得了新的發展。IBM將大量早期RISC 微處理器通過蝶形互連網路連結起來。人們開始考慮如何才能在實現共享存儲器緩存一致的同時,使系統具有一定的可擴展性(Scalability)。90 年代初期,斯坦福大學提出了DASH 計劃,它通過維護一個保存有每一緩存塊位置信息的目錄結構來實現分布式共享存儲器的緩存一致性。後來,IEEE 在此基礎上提出了緩存一致性協議的標准。
90 年代以來,主要的幾種體系結構開始走向融合。屬於數據並行類型的CM-5 除大量採用商品化的微處理器以外,也允許用戶層的程序傳遞一些簡單的消息;CRAY T3D是一台NUMA 結構的共享存儲型並行計算機,但是它也提供了全局同步機制、消息隊列機制,並採取了一些減少消息傳遞延遲的技術。
隨著商品化微處理器、網路設備的發展,以及MPI/PVM 等並行編程標準的發布,機群架構的並行計算機出現。IBM SP2 系列機群系統就是其中的典型代表。在這些系統中,各個節點採用的都是標準的商品化計算機,它們之間通過高速網路連接起來。
今天,越來越多的並行計算機系統採用商品化的微處理器加上商品化的互連網路構造,這種分布存儲的並行計算機系統稱為機群。國內幾乎所有的高性能計算機廠商都生產這種具有極高性能價格比的高性能計算機,並行計算機就進入了一個新的時代,並行計算的應用達到了前所未有的廣度和深度。
並行計算機隨著微處理晶元的發展,已經進入了一個新時代。目前並行計算機的性能已經突破20PFLOPS,正在向百億億次發展。我國並行計算機的研製已經走在世界前列。2003年由聯想公司生產的深騰6800 在2003 年11 月世界TOP500 排名中位列第14 名,2004 年曙光公司生產的曙光4000A 在2004 年6 月的世界TOP500 排名中位列第10 名,這是我國公開發布的高性能計算機在世界TOP500 中首次進入前十名,這標志著我國在並行計算機系統的研製和生產中已經趕上了國際先進水平,為提高我國的科學研究水平奠定了物質基礎。2013年國際超級計算機大會最新發布的世界超級計算機500強排名中,國防科技大學研製的天河二號超級計算機系統,以峰值計算速度每秒5.49億億次、持續計算速度每秒3.39億億次雙精度浮點運算的優異性能位居榜首。
從TOP500 的前10 名來看,美國仍然是超級計算機的最大擁有者。按照世界TOP500 的統計數據來分析,美國在計算能力上佔有近全世界的一半,在TOP500 中的所有計算機中擁有的數量超過50%。
D. 關於GPU的問題!
目錄:
第一章:第二代及以後的GPU工作流程簡介
第二章:DirectX8和DirectX9 GPU的傳統流水線
第三章:頂點和像素操作指令
第四章:傳統GPU指令的執行
第五章:統一渲染架構
第六章:G80和R600的統一渲染架構實現
第七章:G80與R600效能對比
第八章:尷尬的中端--Geforce8600簡析
前面4章 我將先簡要介紹下DirectX8/9顯卡的核心----圖形處理單元GPU的工作流程和指令處理情況
從第5章開始討論統一渲染架構、新一代DirectX10 GPU的特性,G80/Geforce8800與R600/RadeonHD2900XT的架構具體實現及其區別。最後將會對中端最受關注的Geforce8600進行相應的簡單分析。
第一章:第二代及以後的GPU工作流程簡介
簡單(而不一定絕對科學)的說:GPU主要完成對3D圖形的處理--圖形的生成渲染。
GPU的圖形(處理)流水線完成如下的工作:(並不一定是按照如下順序)
頂點處理:這階段GPU讀取描述3D圖形外觀的頂點數據並根據頂點數據確定3D圖形的形狀及位置關系,建立起3D圖形的骨架。在支持DX8和DX9規格的GPU中,這些工作由硬體實現的Vertex Shader(定點著色器)完成。
光柵化計算:顯示器實際顯示的圖像是由像素組成的,我們需要將上面生成的圖形上的點和線通過一定的演算法轉換到相應的像素點。把一個矢量圖形轉換為一系列像素點的過程就稱為光柵化。例如,一條數學表示的斜線段,最終被轉化成階梯狀的連續像素點。
紋理帖圖:頂點單元生成的多邊形只構成了3D物體的輪廓,而紋理映射(texture mapping)工作完成對多變形表面的帖圖,通俗的說,就是將多邊形的表面貼上相應的圖片,從而生成「真實」的圖形。TMU(Texture mapping unit)即是用來完成此項工作。
像素處理:這階段(在對每個像素進行光柵化處理期間)GPU完成對像素的計算和處理,從而確定每個像素的最終屬性。在支持DX8和DX9規格的GPU中,這些工作由硬體實現的Pixel Shader(像素著色器)完成。
最終輸出:由ROP(光柵化引擎)最終完成像素的輸出,1幀渲染完畢後,被送到顯存幀緩沖區。
總結:GPU的工作通俗的來說就是完成3D圖形的生成,將圖形映射到相應的像素點上,對每個像素進行計算確定最終顏色並完成輸出。
第二章:DirectX8和DirectX9 GPU的傳統流水線
前面的工作流程其實已經說明了問題。本章來總結一下,承前啟後。
傳統的GPU功能部件我們不妨將其分為頂點單元和像素流水線兩部分。
頂點單元由數個硬體實現的Vertex Shader組成。
傳統的像素流水線由幾組PSU(Pixel Shader Unit)+TMU+ROP組成。
於是,傳統的GPU由頂點單元生成多邊形,並由像素流水線負責像素渲染和輸出。
對於像素流水線需要做的說明是:雖然傳統的流水線被認為=1PSU+1TMU+1ROP,但這個比例不是恆定的,例如在RadeonX1000(不包括X1800)系列中被廣為稱道的3:1黃金架構,PSU:TMU:ROP的數量為3:1:1。一塊典型的X1900顯卡具有48個PSU,16個TMU和16個ROP。之所以採用這種設計方法,主要考慮到在當今的游戲中,像素指令數要遠遠大於紋理指令的數量。ATI憑借這個優秀的架構,成功擊敗了Geforce7,在DX9後期取得了3D效能上的領先。
總結:傳統的GPU由頂點單元生成多邊形,像素流水線渲染像素並輸出,一條像素流水線包含PSU,TMU,和ROP(有的資料中不包含ROP),比例通常為1:1:1,但不固定。
第三章:頂點和像素操作指令
GPU通過執行相應的指令來完成對頂點和像素的操作。
熟悉OpenGL或Direct3D編程的人應該知道,像素通常使用RGB三原色和alpha值共4個通道(屬性)來描述。而對於頂點,也通常使用XYZ和W 4個通道(屬性)來描述。因而,通常執行一條頂點和像素指令需要完成4次計算,我們這里成這種指令為4D矢量指令(4維)。當然,並不是所有的指令都是4D指令,在實際處理中,還會出現大量的1D標量指令以及2D,3D指令。
總結:由於定點和像素通常用4元組表示屬性,因而頂點和像素操作通常是4D矢量操作,但也存在標量操作。
第四章:傳統GPU指令的執行
傳統的GPU基於SIMD的架構。SIMD即Single Instruction Multiple Data,單指令多數據。
其實這很好理解,傳統的VS和PS中的ALU(算術邏輯單元,通常每個VS或PS中都會有一個ALU,但這不是一定的,例如G70和R5XX有兩個)都能夠在一個周期內(即同時)完成對矢量4個通道的運算。比如執行一條4D指令,PS或VS中的ALU對指令對應定點和像素的4個屬性數據都進行了相應的計算。這便是SIMD的由來。這種ALU我們暫且稱它為4D ALU。
需要注意的是,4D SIMD架構雖然很適合處理4D指令,但遇到1D指令的時候效率便會降為原來的1/4。此時ALU 3/4的資源都被閑置。為了提高PS VS執行1D 2D 3D指令時的資源利用率,DirectX9時代的GPU通常採用1D+3D或2D+2D ALU。這便是Co-issue技術。這種ALU對4D指令的計算時仍然效能與傳統的ALU相同,但當遇到1D 2D 3D指令時效率則會高不少,例如如下指令:
ADD R0.xyz , R0,R1 //此指令是將R0,R1矢量的x,y,z值相加 結果賦值給R0
ADD R3.x , R2,R3 //此指令是將R2 R3矢量的w值相加 結果賦值給R3
對於傳統的4D ALU,顯然需要兩個周期才能完成,第一個周期ALU利用率75% ,第二個周期利用率25%。而對於1D+3D的ALU,這兩條指令可以融合為一條4D指令,因而只需要一個周期便可以完成,ALU利用率100%。
但當然,即使採用co-issue,ALU利用率也不可能總達到100%,這涉及到指令並行的相關性等問題,而且,更直觀的,上述兩條指令顯然不能被2D+2D ALU一周期完成,而且同樣,兩條2D指令也不能被1D+3D ALU一周期完成。傳統GPU在對非4D指令的處理顯然不是很靈活。
總結:傳統的GPU中定點和像素處理分別由VS和PS來完成,每個VS PS單元中通常有一個4D ALU,可以在一個周期完成4D矢量操作,但這種ALU對1D 2D 3D操作效率低下,為了彌補,DX9顯卡中ALU常被設置為1D+3D 2D+2D等形式。
第五章:統一渲染架構
相對於DirectX 9來說,最新的DirectX 10最大的改進在於提出了統一渲染架構,即Unified Shader。
傳統的顯卡GPU一直採用分離式架構,頂點處理和像素處理分別由Vertex Shader和Pixel Shader來完成,於是,當GPU核心設計完成時,PS和VS的數量便確定下來了。但是不同的游戲對於兩者處理量需求是不同的,這種固定比例的PS VS設計顯然不夠靈活,為了解決這個問題,DirectX10規范中提出了了統一渲染架構。
不論是頂點數據還是像素數據,他們在計算上都有很多共同點,例如通常情況下,他們都是4D矢量,而且在ALU中的計算都是沒有分別的浮點運算。這些為統一渲染的實現提供了可能。
在統一渲染架構中,PS單元和VS單元都被通用的US單元所取代,nVidia的實現中稱其為streaming processer,即流處理器,這種US單元既可以處理頂點數據,又可以處理像素數據,因而GPU可以根據實際處理需求進行靈活的分配,這樣便有效避免了傳統分離式架構中VS和PS工作量不均的情況。
總結:統一渲染架構使用US(通常為SP)單元取代了傳統的固定數目的VS和PS單元,US既可以完成頂點操作,又可以完成像素操作,因而可以根據游戲需要靈活分配,從而提高了資源利用率。
第六章:G80和R600的統一渲染架構實現
以下我們著重討論G80和R600的統一著色單元而不考慮紋理單元,ROP等因素。
G80 GPU中安排了16組共128個統一標量著色器,被叫做stream processors,後面我們將其簡稱為SP。每個SP都包含有一個全功能的1D ALU。該ALU可以在一周期內完成乘加操作(MADD)。
也許有人已經注意到了,在前面傳統GPU中VS和PS的ALU都是4D的,但在這里,每個SP中的ALU都是1D標量ALU。沒錯,這就是很多資料中提及的MIMD(多指令多數據)架構,G80走的是徹底的標量化路線,將ALU拆分為了最基本的1D 標量ALU,並實現了128個1D標量SP,於是,傳統GPU中一個周期完成的4D矢量操作,在這種標量SP中需4個周期才能完成,或者說,1個4D操作需要4個SP並行處理完成。
這種實現的最大好處是靈活,不論是1D,2D,3D,4D指令,G80得便宜其全部將其拆成1D指令來處理。指令其實與矢量運算拆分一樣。
例如一個4D矢量指令 ADD R0.xyzw , R0,R1 R0與R1矢量相加,結果賦R0
G80的編譯器會將其拆分為4個1D標量運算指令並將其分派給4個SP:
ADD R0.x , R0,R1
ADD R0.y , R0,R1
ADD R0.z , R0,R1
ADD R0.w, R0,R1
綜上:G80的架構可以用128X1D來描述。
R600的實現方式則與G80有很大的不同,它仍然採用SIMD架構。
在R600的核心裡,共設計了4組共64個流處理器,但每個處理器中擁有1個5D ALU,其實更加准確地說,應該是5個1D ALU。因為每個流處理器中的ALU可以任意以1+1+1+1+1或1+4或2+3等方式搭配(以往的GPU往往只能是1D+3D或2D+2D)。ATI將這些ALU稱作streaming processing unit,因而,ATI宣稱R600擁有320個SPU。
我們考慮R600的每個流處理器,它每個周期只能執行一條指令,但是流處理器中卻擁有5個1D ALU。ATI為了提高ALU利用率,採用了VLIW體系(Very Large Instruction Word)設計。將多個短指令合並成為一組長的指令交給流處理器去執行。例如,R600可以5條1D指令合並為一組5DVLIW指令。
對於下述指令:
ADD R0.xyz , R0,R1 //3D
ADD R4.x , R4,R5 //1D
ADD R2.x , R2,R3 //1D
R600也可以將其集成為一條VLIW指令在一個周期完成。
綜上:R600的架構可以用64X5D的方式來描述。
總結:G80將操作徹底標量化,內置128個1D標量SP,每個SP中有一個1D ALU,每周期處理一個1D操作,對於4D矢量操作,則將其拆分為4個1D標量操作。
R600仍採用SIMD架構,擁有64個SP,每個SP中有5個1D ALU,因而通常聲稱R600有320個PSU,
每個SP只能處理一條指令,ATI採用VLIW體系將短指令集成為長的VLIW指令來提高資源利用率,例如5條1D標量指令可以被集成為一條VLIW指令送入SP中在一個周期完成。
第七章:G80與R600效能對比
從前一章的討論可以看出,R600的ALU規模64X5D=320明顯比G80的128X1D=128要大,但是為何在實際的測試中,基於R600的RadeonHD2900XT並沒有取得對G80/Geforce8800GTX的性能優勢?本章將試圖從兩者流處理器設計差別上來尋找答案,對於紋理單元,ROP,顯存帶寬則不做重點討論。事實上,R600的顯存帶寬也要大於G80。
我們將從頻率和執行效能兩個方面來說明問題:
1、頻率:G80隻擁有128個1D流處理器,在規模上處於絕對劣勢,於是nVidia採用了shader頻率與核心頻率非同步的方式來提高性能。Geforce8800GTX雖然核心頻率只有575MHZ,但shader頻率卻高達1375MHZ,即SP工作頻率為核心頻率的兩倍以上,而R600則相對保守地採用了shader和核心同步的方式,在RadeonHD2900XT中,兩者均為740MHZ。這樣一來,G80的shader頻率幾乎是R600的兩倍,於是就相當於同頻率下G80的SP數加倍達到256個,與R600的320個接近了很多。在處理乘加(MADD)指令的時候,740MHZ的R600的理論峰值浮點運算速度為:740MHZ*64*5*2=473.6GFLOPS 而shader頻率為1350MHZ的G80的浮點運算速度為:1350MHZ*128*1*2=345.6GFLOPS,兩者的差距並不像SP規模差距那麼大。
2、執行效能:G80雖說shader頻率很高,但由於數量差距懸殊,即使非同步也無法補回理論運算速率的差距。於是,要尋找答案,還要從兩者流處理器的具體設計著手。
在G80中,每個矢量操作都會被拆分為1D標量操作來分配給不同的SP來處理,如果不考慮指令並行性等問題,G80在任何時刻,所有SP都是充分利用的。而R600則沒這么幸運,因為每個流處理器只能同時處理一條指令,因而R600要將短指令合並為能充分利用SP內5DALU運算資源的VLIW指令,但是這種合並並不是總能成功。目前沒有資料表明R600可以將指令拆開重組,也就是說,R600不能每時每刻都找到合適的指令拼接為5D指令來滿載他的5D SP,這樣的話我們假設處理純4D指令的情況,不能拆分重組的話,R600每個SP只能處理一條4D指令,利用率80%,而對於G80,將指令拆開成1D操作,無論何時都能100%利用。而且,R600的結構對編譯器的要求很高,編譯器必須盡可能尋找Shader指令中的並行性,並將其拼接為合適的長指令,而G80則只需簡單拆分即可。
另外還需要說明的一點是,R600中每個SP的5個1D ALU並不是全功能的,據相關資料,每組5個ALU中,只有一個能執行函數運算,浮點運算和Multipy運算,但不能進行ADD運算,其餘的4各職能執行MADD運算。而G80的每個1D ALU是全功能的,這一點也在一定程度上影響了R600的效能。
總結:雖然R600的ALU規模遠大於G80,但G80的SP運行頻率幾乎是R600的兩倍,而且G80的體系架構採用完全標量化的計算,資源利用率更高,執行效能也更高,因而總體性能不落後於R600。
第八章:尷尬的中端--Geforce8600簡析
在新一代中端顯卡中,最早發布也是最受關注的莫過於nVidia的G84---Geforce8600系列。
但是相比其高高在上的價格,它的性能表現實在不盡如人意,很多測試中均落後於價格低於它的老一代高端顯卡Geforce7900GS。本章將利用前面討論的結論對G84核心的SP處理能力作簡要地分析。
G84是G80核心的高度精簡版本,SP數量從G80的128個銳減為32個,顯存位寬也降為1/3--128bit。
拋開顯存位寬和TMU ROP,我們著重看SP,G84的SP頻率與核心頻率也不相同,例如8600GT,核心頻率只有540MHZ,shader頻率卻高達1242MHZ,即核心頻率的兩倍多,我們粗略按兩倍記,則G84核心相當於核心shader同步的64(個1D標量) SP,而傳統的VS和PS中ALU是4D的,於是可以說G84的計算能力相當於傳統VS和PS總數為64/4=16的顯卡,粗略比較,它與Geforce7600(PS+VS=17)的計算能力相近。但當然,事實這樣比較是有問題的,因為在G7X中,每個PS中有兩個4D ALU,因而7600的運算能力高於傳統PS+VS=17的顯卡。下面的計算就說明了問題:(MADD操作)
對於7600GT ,VS為4D+1D PS為4D+4D 核心頻率560MHZ 理論峰值浮點運算速度:
560MHZ*(12*(4+4)+5*(1+4))*2=135.52GFLOPS
而對於8600GT:1242MHZ*32*1*2=79.4GFLOPS
由此可見,8600GT的峰值運算速度甚至遠低於上代的7600GT,更不用跟7900GS相比了。但是,實際情況下,迫於傳統架構所限,G7X滿載的情況基本不可能出現,G7X的實際運算速率要遠低於理論值,而對於G8X架構,執行效率則高很多,實際運算速率會更加接近理論極限。而且支持SM4.0的G8X寄存器數目也要遠多於G7X,眾多效率優勢,使得Geforce8600GT僅憑借少量的SP就足以擊敗上代中端7600GT。
但是作為DX10顯卡,僅僅擊敗7600GT顯然不是最終目標,僅32SP的它在計算量要求空前之高的DX10游戲中表現極差,根本不能滿足玩家要求。
總結:8600GT性能上取代7600GT的目標憑借著高效的統一渲染架構總算勉強完成,但過少的SP數量使得其顯然難以擊敗上代高端,更不用說流暢運行DX10游戲了,而高高在上的價位更使其處境不利,歸根到底,nVidia對G84 SP數量的吝嗇以及過高的價格定位造就了Geforce8600的尷尬,因此,就目前的情況來看,選用8600系列顯然不如Geforce7900和RadeonX1950GT來的劃算。
E. 加拿大pc演算法教程
1.三級流水線:其實對於PC = PC +8這個問題很簡單,這兩個PC其實代表著不同的意義,第一個PC是對於CPU而言,而第二個PC而言是我們通過編譯器看到的PC(PC指向程序正在運行的那一條指令),但是對於CPU的PC是永遠指向取指那個步,故PC = PC +8。
2.五級流水線; ARM9流水線包括取指(fetch)、解碼(decode)、執行(excute)、緩沖/數據(buffer/data)、回寫(write-back)寄存器堆。ARM9流水線在解碼階段已經開始讀取操作數寄存器,因此解碼階段的PC值和取指階段的PC值關系為:PC(decode)=PC(fetch)+4。因此執行階段的PC值和解碼階段的PC值關系為:PC(excute)=PC(decode)+4。
3.對於軟中斷函數的返回時的PC:如下
ARM Thumb
SWI PC-8 PC-4
xxx 》 PC -4 PC-2 (異常返回將執行這條指令)
yyy PC PC
因此返回指令為: MOV PC , LR
原因:異常是由指令本身引起的,因此內核在計算LR時的PC值並沒有被更新。對於ARM狀態,因為SWI指令表示將跳到異常處理函數,此時SWI這條指令的PC = PC -8,當進入異常處理函數之前,硬體會自動把PC-4保存到LR寄存器中,所以異常處理函數結束後直接MOV PC, LR就行,就會跳到xxx這一條指令去執行。對於Thumb狀態同理。
4.對於IRQ和FIQ中斷函數返回時的PC:
ARM Thumb
xxx PC-12 PC-6 (程序在運行這條代碼時就產生了中斷信號)
yyy 》 PC-8 PC-4 (異常返回將執行這條指令)
zzz PC-4 PC-2
www PC PC
返回指令為: SUBS PC, LR, #4
原因:異常在當前指令執行完成後才會被響應,因此內核在計算LR時的PC值已被更新。對於ARM狀態,程序在執行xxx這條指令時,中斷信號產生,但是由於中斷必須在這一條指令執行完之後才會被響應,執行完後,則此時對於CPU的PC已經指向了www這條指令的取指,在中斷函數函數時應該執行yyy這條指令,雖然硬體會把PC-4的值賦值給LR寄存器,但是這是指向zzz這條指令的,所以返回時應該SUBS PC, LR, #4。對於Thumb狀態同理。
F. GPU和CPU之間是如何協調數據處理的
因為設計的目標不同,當今的CPU和GPU功能上有本質的不同。作為通用處理器的CPU,顧名思義,它是設計用來處理通用任務的處理、加工、運算以及系統核心控制等等的。CPU中包含的最基本部件有算術邏輯單元和控制單元,CPU的微架構是為高效率處理數據相關性不大的計算類、復雜繁瑣的非計算類的等等百花八門的工作而優化的,在處理日常繁復的任務中應付自如。
計算機的「靈魂」——操作系統,以及幾乎100%的系統軟體都主要仰仗CPU來順利運行。CPU面對的算術、邏輯運算以及控制處理是非常繁瑣和復雜的,面對處理的數據和信息量不僅數量多而是種類多。CPU運算和控制多面手的這種設計,讓它在計算機中得心應手,位置不可動搖。
GPU設計的宗旨是實現圖形加速,現在最主要的是實現3D 圖形加速,因此它的設計基本上是為3D圖形加速的相關運算來優化的,如z-buffering 消隱,紋理映射(texture mapping),圖形的坐標位置變換與光照計算(transforming & lighting)等等。這類計算的對象都是針對大量平行數據的,運算的數據量大,但是運算的類型卻並不復雜,大多類似和雷同,計算性強但是邏輯性不強,如矩陣運算就是圖形運算的典型特性。
如今的游戲,單單從圖象的生成來說大概需要下面四個步驟:
1、Homogeneous coordinates(齊次坐標)
2、Shading models(陰影建模)
3、Z-Buffering(Z-緩沖)
4、Texture-Mapping(材質貼圖)
在這些步驟中,顯示部分(GPU)只負責完成第三、四步,而前兩個步驟主要是依靠 CPU 來完成。而且,這還僅僅只是3D圖象的生成,還沒有包括游戲中復雜的AI運算。場景切換運算等等……無疑,這些元素還需要CPU去完成,這就是為什麼在運行《魔獸世界》的時候,當場景切換時再強勁的顯卡都會出現停頓的現象。
對於需要CPU進行大量AI運算的游戲來說,在固定的顯示解析度下,CPU的架構越強、主頻越高的確有一定的優勢。著名的FPS第一人稱設計游戲——CSS,就是一個很好的例子。當你開啟了30個左右的機器人,在大混戰的時候就很容易體現出高端CPU與入門級CPU之間的區別了。
打造一套完整的游戲 PC 系統,CPU和顯卡的搭配應該相得益彰,高成低就或低成高就都是不平衡的組合方式。
第一代 GPU 首先,CPU將數據傳遞給GPU進行處理,數據先進入T&L單元中的Transform Engine,在這里,數據將以頂 點的形式接受視野范圍的判斷,當處理單元判斷某部分頂點處於觀察者的視線范圍以外時,Transform Engine將把這部分頂點「剪除」以使其不會 干擾後續的流水線操作, 具個簡單的例子:當你在某FPS游戲中突然打開狙擊槍的狙擊鏡,視野變成了一個圓形的空洞,而其他部分則為黑色,這時 Transform Engine將去除這個圓形視野范圍以外的所有頂點,不過,這里進行的只是視野范圍的判斷,Transform Engine去除在 你的視線范圍內但是被其它東西擋住了的物體,另外,每一個三角形可能被旋轉,放大/縮小,上升,下降,左偏,右移等。 這就是多邊形轉換轉換。 Transform Engine根據你的視角,改變了由程序提供的組成3D物體的頂點的坐標。經過Lighting Engine處理後的圖象經過判斷 處理後的數據將流入T&L單元中的Lighting Engine,根據光源的類型,距離,角度,數目,應用方式等不同參數,每一個多邊形都會有 不同的光影表現和光影關系,因而需要不同的光線函數予以表徵,在Lighting Engine中,處理單元將根據軟體提出的光源分布情況為每個頂點計算 出它所具有的光線矢量,以便後續進行的光線紋理貼圖,著色等操作
經過Lighting Engine處理的畫面
其實,經由T&L單元處理過的數據還只是抽象的數據,並不是具體的圖形,上面兩副圖僅僅是方便讀者進行想像的示意圖。
接下來數據將流入Setup Engine,在這里,運算單元將進行三角形的設置工作,這是整個繪圖過程中最重要的一個步驟,Setup Engine甚 至直接影響著一塊GPU的執行效能。三角形的設置過程是由一個一個的多邊形組成的,或者是用更好的三角形代替原來的三角形。在三維圖像中可能會有些三角形 被它前面的三角形擋住,但是在這個階段3D晶元還不知道哪些三角形會被擋住。所以三角形建立單元接收到的是一個個由三個頂點組成的完整三角形。三角形的每 個角(或頂點)都有對應的X軸、Y軸和Z軸坐標值,這些坐標值確定了它們在3D景物中的位置。同時,三角形的設置也確定了像素填充的范圍
經過Setup Engine處理的畫面
最終著色完畢的畫面
在三角形設置完畢後,T&L單元的全部運算就完成了。接下來數據將進入NV15獨有的NSR像素處理單元進行一定的像素處理,接著流入像素流水線 進行後續的紋理像素填充等操作,這部分操作在DriectX7.0中的變化並不明顯,基本的渲染填充過程與過去的顯卡幾無二異
T&L雖然再一定程度上緩解了CPU運算能力的不濟所帶來的瓶頸,使得系統在圖形方面的資源得到了再分配和增強,但同時,T&L也將新的矛盾轉到了GPU上
T&L是一組相對固定的簡單的圖形函數,所實現的特效受到了函數本身語句的限制,雖然這種固定的指令集設計可以帶來比較高的執行效率,但這種設置 使得DX7下所能實現的特效受到了指令集的約束,許多逼真的特效無法實現,程序員的思想也被限定在一個相對狹窄的范圍內。
2、我要看到你飄逸的秀發和迷人的微笑—可編程Shader以及第二代GPU
DriectX8.0在傳統T&L的基礎上加入了兩個新的概念—可編程的Vertex Shader和Piexl Shader,同樣的,第二代 GPU的標志就是硬體級別的可編程Shader運算,代表產品為NV2X(Geforce3/4Ti),R2XX(Radeon8500)等
可編程Shader的復雜程度遠非T&L可比,為了方便大家理解第二代GPU的特點,我們先來認識一下什麼是可編程Shader,以及可編程Shader運算單元
可編程Vertex Shader及頂點處理器:
可編程Vertex Shader讓程序員能夠對特定物體,甚至整個畫面的每一個頂點,指定特別的運算程序,卻不需要CPU介入。每一個頂點都攜帶相當多 的信息,比如坐標,重量,法線,顏色,紋理坐標,霧和點大小數據。頂點處理器能夠以簡短的程序來改變上述這些信息。 這些小程序直接由頂點著色引擎本身執 行,不必勞駕CPU。 典型的T&L引擎將程序員限制在3D運算的光影轉換之前, 在有了頂點處理器的支持之後,游戲設計師對游戲場景里的3D物 體能夠為所欲為的操縱變化,而且不需要用到中央處理器。
這導致了一場革新,程序可以改變頂點的坐標,這樣基本上改變物體的形狀,以達到更接近真實的移動、移動殘影、混色、內插(在兩種外型間轉換),以及變形, 比如改變角色臉部的骨骼和皮膚一個產生一個適時的微笑。也可改變頂點上的顏色數據和紋理坐標,物體表面的顏色達到設計師所想要的色彩效果、投影、凹凸貼圖 設置(如Blinn Bump mapping)或者其它投射的紋理。光源也可以為程序員隨心所欲的調整,不再像過去那樣需要對光源的效果進行笨拙的光線 紋理貼圖,而這些在以前是不可想像的。這一切都歸功於可編程Vertex Shader和頂點處理器的出現
Blinn Bump mapping
可編程Piexl Shader以及像素處理器
在NV15中,nVidia曾經嘗試加入一個叫NSR的像素處理單元,它可以在數據進入像素流水線之前對每個像素進行一系列運算操作,雖然同為每像素操 作,但NSR與Piexl Shader可不能同日而語, NSR對於像素的運算只有7種,同T&L一樣,它依然是固定模式的,程序員依然要依照 規定好的條條框框寫出程序,而Piexl Shader則不同,我們可以用許多不同方式去編程,以實現不同的特效,下面就是一般的像素處理器所具備的特 性:
· 陰影貼圖
· 快速紋理載入
· 影像乘法,對稱核心
· 支持4096x4096或512x512x512 紋理
· 立方體貼圖每邊可4096x4096x32-位
· 支持YUYV的紋理(自動轉換成RGB三原色)
· 支持全景貼圖
可以指向任何一個圖像,如背景緩沖區(back buffer),而可直接當作紋理使用
· 邊緣色彩及邊緣紋理
· 硬體同步化讀/寫
對同一張紋理的讀及寫允許全流水線操作。
可以對背景緩沖區著色,然後馬上能當作紋理使用
· Pass through colors
· 支持DX6規格的環境凹凸/亮度貼圖(就是環境凹凸貼圖)
· 簡單的紋理,S,T 在alpha/紅(AB)及藍/綠 (BG)
· 等向的雙方向性反射分布功能光源
· 內積產生色彩貼圖或Z坐標
· 真實反射凹凸貼圖
這看起來似乎有點抽象,簡單的說,可編程Piexl Shader實現了一個非常重要的特效—真實的毛發
古老街道上昏暗燈光中的狼人
在3D渲染中,渲染真實的毛發一直是一件非常困難的事情,大量的多邊形給多邊形生成帶來了嚴峻的考驗,而每一根毛發之間復雜多變的即時光影關系更不是幾個簡單固定的指令所能實現的。Piexl Shader的可編程性和運算能力很好的解決了這個問題
好啦,現在讓我們來看看第二代GPU是如何完整處理一個畫面的吧
首先,來自CPU的各種物理參數進入GPU,Vertex Shader將對頂點數據進行基本的判斷,如果沒有需要處理的Vertex效果,則頂點數據直 接進入Transform&Lighting Unit進行傳統的T&L操作以節約時間提高效率,如果需要處理各種Vertex效果,則 Vertex Shader將先對各種Vertex Programs的指令進行運算,一般的Vertex Programs中往往包含了過去轉換,剪 切,光照運算等所需要實現的效果,故經由Vertex Shader處理的效果一般不需要再進行Transform&Lighting操作;另 外,當遇到涉及到曲面鑲嵌(把曲面,比如弓形轉換成為多邊形或者三角形)的場合時,CPU可以直接將數據交給Vertex Shader進行處理
另外,在DX8.0的Transform過程中,Vertex Shader可以完成Z值的剔除,也就是Back Face Culling—陰面隱去,這就意味著除了視野以外的頂點外,視野內被前面頂點遮住的頂點也會被一並剪除,這大大減輕了需要進行操作的頂點數目
接下來,經由Vertex Shader處理完成的各種數據將流入Setup Engine,在這里一如既往的進行三角形的設置工作,到這里為止,Vertex Shader的工作就完成了
過去,設置好的三角形本來應該帶著各自所有的參數進入像素流水線內進行紋理填充和渲染,但現在則不同,在填充之前我們還需要進行Piexl Shader的操作
其實Piexl Shader並非獨立存在的,它位於紋理填充單元之後,數據流入像素流水線後先進入紋理填充單元進行紋理填充,然後便是 Piexl Shader單元,經由Piexl Shader單元進行各種處理運算之後再進入像素填充單元進行具體的著色,再經由霧化等操作後,一個完整 的畫面就算完成了
值得注意的是,第二代GPU中普遍引入了獨立的顯示數據管理機制,他們位於Vertex Shader,Setup Engine以及像素流水線之間,負 責數據的更有效率的傳輸、組合,各種無效值的剔除,數據的壓縮以及寄存器的管理等工作,這個單元的出現對整個GPU的工作效率的保證其到了至管重要的作 用。
HyperZ系列:HyperZ技術本身就是一種類似nVIDIA的「Z-封閉甄別」的技術,但是比nVIDIA還更進一步。它的主要功能簡單說來就是分 析在Z軸上的場景,被遮擋的就會被忽略掉,只渲染我們能看到的部分場景;然後對渲染過的Z軸場景進行壓縮處理,數據的壓縮可減少他所佔用的空間,從而在存 取Z-Buffer數據的時候可以保留更多的顯存帶寬。而且這是一種畫面質量沒有損害的壓縮演算法,並不影響畫面質量。最後一步就是把經過渲染的場景中的Z -Buffer信息立刻清除掉,這樣就更加大了顯存帶寬的利用率。
LMA(光速顯存架構)系列:光速顯存架構採用的第一個技術是「顯存交錯控制」技術, LMA中的顯存控制器劃分成了4個獨立的顯存控制單元,每個單元最 大可以進行32bit圖形相關數據的存取工作,並且這4個單元之間以及它們和圖形處理單元之間都保持密切的通訊聯系,並隨時協調平衡各個子單元之間的數據 流量,因此整體來看LMA的顯存控制單元還是可以進行128bit數據的存儲,但是保證了顯存帶寬的充分利用。光速顯存架構採用的第二個技術是「無損Z壓 縮演算法」。傳統的圖形晶元對於每個待渲染的圖形象素都要進行Z軸數據的讀寫工作,因此存儲這些數據的Z緩存一向是消耗顯存帶寬的大戶。LMA中集成了硬體 「無損Z壓縮」單元,採用「無損Z壓縮演算法」對Z-緩存數據進行4:1的完全無損壓縮。 光速顯存架構採用的第三個技術是「Z-封閉甄別」。排除了圖象中 被遮蓋住而不可見的部分,這樣GPU就不做隱面模型構建(節省處理器的多邊形運算資源),並且渲染管線也不對隱面進行渲染(無需從幀緩存中讀寫隱面資料數 據,節省渲染管線的象素和紋理生成資源並完全消滅了隱面資料對顯存帶寬的佔用)。最後,LMA還包括了4組高速Cache,對數據傳輸進行緩沖。
3、夢中的鏡花水月—可編程Shader2.0以及第三代GPU
當你第一次看到3Dmark03中的MotherNature時,你有沒有感覺到震撼?
更加寬泛的色彩范圍能夠使得圖形的逼真度上升,這就是Shader2.0的由來,Shader2.0的核心實際上就是以擴大指令數目以及FLOAT數據形 式的應用來提高色彩表達的精確度,而第三代GPU的Shader單元也由此而具備了高精度FLOAT色彩數據的運算能力。從一般角度來講,第三代GPU同 第二代GPU相比在基本的操作控制形式等方面並沒有本質的區別,但是由於Shader2.0更大的指令長度和指令個數,以及通用程序+子程序調用的程序形 式等使得第三代GPU在處理高精度的龐大指令時效率上有了明顯的提升,同時也使得第三代GPU的可編程性躍上了一個新的台階
讓我們來看看第三代GPU到底有哪些改進吧
Vexter Shader部分
第三代GPU的頂點處理器部分除了一般的操作功能外還具備流程式控制制能力,包括循環,跳躍以及子程序調用等,這些控制指令以及更多向量(或標量)寄存器的應 用使得頂點處理器能夠以更高的效率執行Vertex Programs,提高了Vertex的處理速度。同時,加大的指令長度和指令數量使得頂點處理器的 功能得到了進一步的強化。另外,在第三代GPU中,傳統的T&L數據將完全交由頂點處理器來執行,Transform& Lighting Unit將徹底被頂點處理器「吞並」,這也是第三代GPU的一個重要特點
Piexl Shader部分
第二代GPU的Piexl Shader只能實現INT數據的運算,這勢必會帶來最終運算結果的不精確,而數據的不精確導致了顏色表現的不準確,干擾了最 終畫面的質量以及效果的表現,第三代GPU的重點改進就是運算單元和寄存器所支持的運算格式,現在Piexl Shader可以進行更高精度的FLOAT 運算和輸出,從而使得圖形的色彩顯示更加精確
暴光正確的圖象
數據精度不當而無法實現的特種暴光
另外,第三代GPU的像素處理器每周期所能處理的材質以及指令也分別增加了數倍,這些新特性使得第三代GPU可以處理各種復雜程度的效果,營造一個更為真實的3D畫面,比如更加真實的水面效果
INT Piexl Shader所表現的水面效果
FLOAT Piexl Shader所表現的水面效果
傳統的INT無法表現寬泛的波浪效果,程序員害怕數據精度范圍狹窄引起的上溢或者下溢的發生而不得不在一個很小的物理參數范圍內控制漣漪水面所需的波長、 波浪的大小、移動速度以及反射和折射效果等,現在,由於數據精度的提升,像素處理器完全可以處理一個非常寬泛的數據精度范圍,避免數據的溢出,這就使得更 加真實的水面效果得以被表現。第三代GPU的代表是NV3X系列,R3XX系列等,其中R3XX系列的基本處理方式和順序與第二代GPU在本質上基本相 同,僅僅是Vertex Shader和Piexl Shader的具體操作細節和運算精度上有些許不同,而NV3X雖然在基本原理上也與之大略相同,但 從流水線的角度來看則與完全不同,應該算是個「異類」。產生過程,只分析一下NV3X
以NV35為例:
首先,他具有8個紋理帖圖單元,但8個紋理貼圖單元並不在固定分布於每一條Piexl流水線,而是集簇在一起,根據情況來搭配,可以是4*2、8*1。
其次,他具有12條Shader流水線,但沒有全盤採用浮點渲染流水線,而只是把12條Shader流水線中的8條做成具備浮點處理能力;不過全部12條Shader流水線都具備Fixed-Point Shader的執行能力。
另外,NV3X將流水線後部的各種渲染單元,如霧化,Alpha混合等大幅削減,使得流水線在一定程度上公用這些單元
NV30的構架組成形式基本上與之相當,只是數目上略有不同
由於這個構架並不是傳統意義上的4*2或者8*1的固定構架,我們不能象過去那樣說NV35「每個流水線具有2個紋理帖圖單元」或者「每條管線具有3個Shader流水線」……我們只能說「NV35單位周期可以完成8次左右的紋理貼圖或者12次Shader操作」
另外,由於NV3X對於Fixed-Point Shader的支持精度是FP16和FP32,同時NV3X的Shader流水線的單位Fixed- Point Shader處理精度是16位,所以當遇到32位Fixed-Point Shader數據時,能進行Fixed-Point Shader 數據處理的8條Shader流水線也會根據情況進行搭配來運算32位的Fixed-Point Shader數據
Pixel Programs往往是由多條指令構成的,不同的指令需要不同的執行時間來完成,每個像素必須在應用在它「身上」的Pixel Shader 操作完成後才能由像素流水線寫入到幀緩存里。故此,對於應用了Piexl Shader的像素實際上是需要多個以上的周期才能寫入到幀緩存里,如果採用8 條完整的渲染流水線的話, 流水線後面的霧化、色彩混合等單元很多時候都會處在等待階段,這部分單元需要佔用的晶體管數量不在少數,如果這樣浪費就怪可惜 的,砍掉後其中的霧化等單元後,對整體的性能雖然有一些影響,但是卻可以把節省下來的晶體管用於加強Pixel Shader的功能和性能上來,同時可以 保證比較高的多重紋理效率,利大於弊。
簡單的,這個有點詭異的體系節省晶體管的同時能確保相對較好的Pixel Shader效能,同時還有極高的多重貼圖效能
nVidia本指望4條Pixel管線+ 12條Shader流水線的設計能夠在現在以及未來較長的一段時間的游戲里提供超過4條甚至8條 Pixel Pipeline顯卡的效能。不過,實際情況卻與nVidia的初衷有些背道而馳,Shader的完美應用帶來的一個結果就是越來越好的非多 紋理光效果,傳統的多紋理貼圖才能表現的很好的光效果現在只需要進行一次貼圖或者直接使用Shader就可以達到,這使得NV3X的設計成為了空架子,實 用意義大大降低,而在單紋理處理過程中由於NV3X的後續效果單元被削減,它的渲染效能註定沒有傳統的完整流水線高,另外,由於DX9中的最終FP精度被 定義為FP24,這導致了NV3X的相對低下的FP效能。最終,本來「先進」的NV3X構架落的個整體效能低下的下場
從本質上來講,圖形數據在NV3X中的實際處理過程依然是沿著頂點處理器—Setup Engine—像素流水線的順序進行的,這與R3XX以及所有的第二代GPU是相同的
天堂的入口—可編程Shader3.0,DriectX Next以及未來的GPU
在微軟剛剛公布的Driect9.0C中,Vertex Shader和Piexl Shader已經具有了幾乎相同的能力,而在nVidia新發布的第 四代GPU—NV40中,我們發現Vertex Shader包含了4個紋理取樣器,可以使用texld指令進行查表操作, NV40可以在一個 shader pass里完成4個紋理的讀取,這個對於通用替換貼圖而言相當的重要,有了vertex texturing功能後, vertex shader就能讀取紋理信息直接映射到頂點上,以實現displacement mapping(位移映射)等等效果,用不同的紋理和較 少的頂點傳輸時間就能實現外形復雜、平滑的模型,這表明GPU中Vertex Shader的功能正在逐漸接近Piexl Shader。隨著GPU的發 展,未來GPU中的Vertex Shader和Piexl Shader最終將被合並成一個統一的處理單元—Intergrated Shader,兩 種處理單元將使用完全相同的語法以及指令集,Shader的統一將帶來完全不同與現在的數據執行處理方式,GPU的內部結構將發生本質的變化, Intergrated Shader帶來了更低晶體管數目的解決方案,以更少的晶體管數目來完成現在需要數億晶體管才能完成的功能,同時統一 Shader將引出類似全通用I/O介面的設計以利資源的更合理的傳輸和分配,同時,為了解決越來越龐大的數據量,虛擬顯存、無限資源訪問以及幀緩沖操作 等技術的引入也勢在必行。另外,我們在DirectX Next中還發現了整數指令集,處理器等特殊的定義,這些新穎的設計為我們勾勒出了未來GPU的輪 廓
整數指令集
在編程中不必在擔心指令限制是一個很大的進步,不過想使得GPU更為通用還需要更多的工作。一個需要提高的主要區域就是整數處理能力。目前基於在著色器中 處理的所有數據都是浮點,這對於大多數顯卡操作而言是沒有問題的,不過不適合動態分支預測、非內插式顯存搜索(如頂點緩沖的索引)等操作。在目前的GPU 中,唯一的內存定址就是紋理查找,使用的也是浮點值。這樣的情況對於紋理定位而言沒有什麼問題,不過對於通用內存定址而言就不合適了,這里的連續內存塊可 以完全彼此沒有關聯,採用內插式查找沒有任何意義。微軟對於這樣的情況,在4.0版的Shader模型中引入了全新的、完整的整數指令集。拓撲處理器實際 上,目前的顯卡可以在某些情況下新生成三角形,比如在用到直線以及點的時候。大多數的娛樂級顯卡只具備對三角形進行光柵化處理的能力,這也就意味著所有的 點、線就必須轉化為三角形。點和線在最後都將以2個三角形結束,這樣就需要用到2-6個頂點(根據索引方式的不同而變化)。從本質上來說,這樣的做法是有 益處的,通過可編程的管線,顯示先前應該遮蔽的場景也就無需通過CPU,而可以通過微軟的「拓撲處理器」直接完成。從邏輯上來說,這個拓撲處理器和鑲嵌單 元是相互獨立的,這個處理器在兩種操作集中均可以使用。由目前的趨勢來看,未來的GPU將向著高運算能力,高精度,高通用性的方向發展,GPU在工作方式 上將越來越接近CPU,由於高通用性等CPU特性的引入,GPU可能在一定程度上替代一部分CPU在非繪圖領域的工作,也許在未來我們會看到由全GPU組 成的圖形工作站。盡管未來GPU需要面對由於這些改進而帶來得的諸多問題,尤其是通用性導致的效率低下,比如Intergrated Shader的效率 低下,但隨著時間的推移,各種問題都將會得到妥善的解決。