2016年11月15日 星期二

(IEH101)SEC1_嵌入式系統的基本架構(解題說明)

  1. IEH嵌入式系統的基本硬體架構技術
(1)嵌入式系統的基本架構

------------------------------------------------------------------------------------------------------
For 1-01,-------------------------------------------------------------------------------------------
費林分類法(Flynn's Taxonomy),是一種高效能計算機的分類方式。1972年費林(Michael J. Flynn)根據資訊流(information stream)可分成指令(Instruction)和資料(Data)兩種。據此又可分成四種計算機類型:


單一指令流
多指令流
單一資料流
多資料流
單指令流多數據流
(SIMD)
SISD.svg
MISD.svg
單一指令流多數據流
多指令流多數據流
SIMD.svg
MIMD.svg

SISD單指令流單數據流(single instruction, single data)」的縮寫。在SISD處理機種,每個指令部件每次僅解碼一條指令,而且在執行時僅為操作部件提供一份數據。符合馮紐曼架構
SISD是費林分類法中4種計算機處理架構類別的一種。在這個分類系統中,分類根據是指令流和資料流的數量,以此根據來劃分計算機處理架構的類別。根據米高·J·費林的觀點,當指令、資料處理流水化/管線化時,SISD也可以擁有並行計算的特點。管線化的指令讀取執行在當代的SISD處理機種上很常見。[1][2]

單指令流多資料流英語Single Instruction Multiple Data, SIMD)是一種採用一個控制器來控制多個處理器,同時對一組資料(又稱「資料向量」)中的每一個分別執行相同的操作從而實作空間上的並列性的技術。微處理器中,單指令流多資料流技術則是一個控制器控制多個平行的處理微元例如IntelMMXSSE以及AMD3D Now!技術。

多指令流多數據流(Multiple Instruction Stream Multiple Data StreamMIMD),是使用多個控制器來非同步地控制多個處理器,從而實現空間上的並行性的技術。

Xeon(讀作/'zi:on/)是英特爾公司的一款處理器,中國譯名至強,主要供伺服器及高階工作站電腦使用。它跟Pentium一樣,經過幾代處理器架構的變遷後,名字仍保留下來。舊款Xeon的名字是將Xeon放到相對的Pentium名字之後(例:Pentium II Xeon),但新款的Xeon則直接叫作Xeon。通常Xeon比相對的桌面版處理器有更多內存及支援多處理器。

SSE(Streaming SIMD Extensions)英特爾AMD3D Now!發行一年之後,在其電腦晶片Pentium III中引入的指令集,是繼MMX的擴充指令集。SSE 指令集提供了 70 條新指令。AMD後來在Athlon XP中加入了對這個新指令集的支援。

Intel Core 2







本文介紹的是「Intel® Core 2」品牌的處理器。關於Core 2微處理器的架構,詳見「Intel Core微處理器架構」。
Intel Core 2
IntelCore2DuoE6600.jpg
「Conroe」的E6600核心
生產時間
製造商
1.06 GHz 至3.33 GHz
533 MT/s 至1600 MT/s
製程
0.065µm至0.045µm
x86MMXSSESSE2
SSE3SSSE3
x86-64SSE4.1(限於45奈米製程)
Intel Core微架構
2 or 4 (2x2)
插座
核心
  • Conroe, Allendale, Merom, Merom-2M, Kentsfield, Conroe-1M, Conroe-512KB, Conroe-L, Wolfdale, Yorkfield
Core 2(中國譯為酷睿2)是英特爾推出的第8代X86架構微處理器,它採用全新的Intel Core微架構,取代由2000年起大多數英特爾處理器採用的NetBurst架構。Core 2亦同時顯示出英特爾自2003年起出現Pentium M以來,於筆記型處理器及桌上型處理器兩個品牌的重整合。
首批Core 2處理器已於2006年7月27日開始發售,與Intel Core處理器一樣,Core 2也分為Solo(單核,只限筆記型電腦)、Duo(雙核)、Quad(四核)及Extreme(極致版)型號。Core 2 Duo在中文世界暱稱為「烤土豆」,而Core 2 Quad暱稱為「烤土瓜」。首批推出的Core 2屬雙核版本,四核版本亦已有售。
與其他諸如Pentium 4Pentium D等基於NetBurst處理器不同,Core 2不會單單注重處理器時脈的提升,它同時就其他處理器的特色,例如快取記憶體效率、核心數量等作出優化。這些新處理器的功耗比以往的Pentium 4/D處理器低很多,TDP最高值為65 W。
Core 2處理器擁有現有的EM64T(Intel採用的x86-64)、虛擬化技術(Virtualization Technology)及Execute Disable位元。另外它亦擁有LaGrande TechnologySSE3、Enhanced SpeedStep技術及Active Management Technology (iAMT2)。
因為Core 2 Duo承襲Pentium III (P3)架構(實際上就是「Pentium Pro」的P6架構)的衣冢,所以既保持了高效能又兼具了低功耗。現在藉著這個成功的架構加以改造。AMD的K8架構在效能上仍暫時落後於Conroe(除用於專業立體繪圖外),其主流的Athlon 64 X2雙核心處理器在零售市場上多只能吸引不夠預算購買配備Core 2處理器電腦的使用者。這是由於Core 2處理器的主機版售價較高,導致組裝成本大幅增加所致。





------------------------------------------------------------------------------------------------------
For 1-02,-------------------------------------------------------------------------------------------
1Ghz = 1/10^9 sec

1hz => 1 sec
1khz => 1/1000 sec = 1ms
1Mhz => 1/10^6 sec = 1us
1Ghz => 1/10^9 sec = 1ns, light 3x10^8m/s * (10^-9)s=3x(10^-1)m=0.3m=30cm
1Thz => 1/10^12 sec = 1 ps

------------------------------------------------------------------------------------------------------
For 1-03,-------------------------------------------------------------------------------------------
數位信號處理器英語digital signal processor, DSP是一種專用於(通常為實時的)數位信號處理微處理器
數位信號處理器的特點
  • 分開的程式存儲器和數據存儲器(哈佛結構)。
  • 用於單指令流多數據流(SIMD)作業的特殊指令集。
  • 可進行並行處理,但不支援多任務。
  • 用於宿主環境時可作為直接記憶體存取(DMA)設備運作。
  • 從類比數位轉換器(ADC)獲得數據,最終輸出的是由數位類比轉換器(DAC)轉換為類比信號的數據。
DSP Block zh-cn.GIF
數位信號的處理
數位信號的處理可由通用微處理器完成。可能的優化為:
數據運算指令
  • 使用飽和演算法,在這種方式中,會產生溢出的運算將累積至暫存器可容納的最大(或最小)值,而不是按環繞方式(環繞方式是很多通用CPU採取的方式。在環繞方式中,暫存器的數值到達最大值後再加一則會繞回到最小值;而使用飽和演算法時則不會發生這種環繞,運算結果仍將保持為最大值)。有些情況下可使用不同的粘滯位運算模式。
  • 使用乘積累加(MAC)運算,這會提高各種矩陣運算的效率(例如卷積運算、點積運算、乃至矩陣多項式的求值運算;參看Horner scheme積和熔加運算)。由於在許多DSP中都必然地使用了單週期的MAC部件,因此也自然沿襲了下面所述的許多性質(尤其是哈佛結構指令流水線(Instruction Streamline))。
  • 在使用同餘定址方式操作循環緩衝器、以及在使用逆位序定址模式處理快速傅立葉變換交叉參照時,都可使用專門的指令實現。

圖形處理器英語Graphics Processing Unit,簡寫為GPU),是一種專門用來處理在個人電腦工作站遊戲機上那些影像運算工作的微處理器
GPU是NVIDIA公司在發行GeForce 256繪圖處理晶片時首先提出的概念在此之前,電腦中處理影像輸出的顯示晶片,通常很少被視為是一個獨立的運算單元。而對手ATI亦提出VPU(Visual Processing Unit)概念。GPU使顯示卡減少了對CPU的依賴,並分擔了部分原本是由CPU所擔當的工作,尤其是在進行3D圖形處理時,功效更加明顯。GPU所採用的核心技術有硬體座標轉換與光源、立方環境材質貼圖和頂點混合、紋理壓縮和凹凸對映貼圖、雙重紋理四像素256位渲染引擎等。
GPU可以整合在顯示卡上,或者直接整合到主機板上。現在,90%以上的新型桌上型電腦和筆記型電腦擁有整合繪圖晶片,但是在效能上往往低於那些獨立顯示卡。[1]

H.264/MPEG-4 AVC







H.264/MPEG-4第10部分,或稱AVC(高階視訊編碼),是一種視訊壓縮標準。是一種被廣泛使用的高精度視訊的錄製、壓縮和發行格式。第一版標準的最終草案於2003年5月完成。
H.264/MPEG-4 AVC是一種面向塊的基於運動補償的編解碼器標準。ITU-T視訊編碼專家組ISO/IEC聯合工作群組——即動態影像專家組(MPEG)——聯合組成的聯合視訊組(JVT,Joint Video Team)開發。因ITU-T H.264標準和 ISO/IEC MPEG-4 AVC標準(正式名稱是ISO/IEC 14496-10 — MPEG-4第十部分,高階視訊編碼)有相同的技術內容,故被共同管理。
H.264因其是藍光碟片的一種編解碼標準而著名,所有藍光碟片播放器都必須能解碼H.264。它也被廣泛用於網路流資料來源如VimeoYouTube、以及iTunes Store,網路軟體如Adobe Flash PlayerMicrosoft Silverlight,以及各種HDTV陸基廣播(ATSCISDB-TDVB-TDVB-T2),線纜(DVB-C)以及衛星(DVB-SDVB-S2)。
概述
H.264/AVC項目意圖建立一種視訊標準。與舊標準相比,它能夠在更低頻寬下提供優質視訊(換言之,只有MPEG-2H.263MPEG-4第2部分的一半頻寬或更少),也不增加太多設計複雜度使得無法實作或實作成本過高。另一目的是提供足夠的靈活性以在各種應用、網路及系統中使用,包括高、低頻寬,高、低視訊解析度,廣播,DVD儲存,RTP/IP網路,以及ITU-T多媒體電話系統。
H.264標準可以被看作一個「標準家族」,成員有下面描述的各種配置(profile)。一個特定的解碼器至少支援一種,但不必支援所有的。解碼器標準描述了它可以解碼哪些配置。
對標準進一步的最新擴充功能包括:增加五個新的配置,主要用於專業應用;增加擴充功能全範圍(extended-gamut)色彩空間的支援;定義附加長寬比標識;定義「補充增強資訊」的兩個附加型別(濾波後提示和色調對映);以及廢棄一個根據產業反饋應該另行設計的早期FRExt配置。
接著加入標準的主要特性是可適應視訊編碼(Scalable Video Coding,SVC)。據H.264/AVC附件G,SVC允許碼流結構中包含遵循標準的子碼流,這種稱作「基礎層」的碼流要能夠為不支援SVC的H.264/AVC編解碼器所解碼。為達成在時間上的可適應性,在推導子碼流時,從碼流中移除了完整存取單元(complete access unit)。這種情況下,要按相應方式來構造碼流中的高層語法和影格間預測參考影格。另一方面,為達成空間和質量的可適應性(換言之,低解析度/低質量作為子碼流而不是主碼流),推導子碼流時移除了NAL(網路抽象層)。這種情況下,層間預測(暨,從低解析度/低質量訊號資料中預測高解析度/高質量訊號)常被用於提高編碼效率。可適應視訊編碼擴充功能於2007年11月完成。
下一個加入標準的主要特性是多檢視編碼(Multiview Video Coding,MVC)。據H.264/AVC附件H,MVC使得碼流結構可以表達一個視訊場景的不止一個檢視。該功能的一個重要例子是3D立體視訊編碼。MVC的工作中開發了兩個配置:多檢視高配置(Multiview High Profile)支援任意數量的檢視,立體高配置(Stereo High Profile)是為雙檢視立體視訊特別設計的。多檢視編碼擴充功能於2009年11月完成。

------------------------------------------------------------------------------------------------------
For 1-04,1-05-------------------------------------------------------------------------------------
基本常識送分題


------------------------------------------------------------------------------------------------------
For 1-06-------------------------------------------------------------------------------------
Data forwarding
Data hazards
Pipeline stalls
Dynamic execution

------------------------------------------------------------------------------------------------------
For 1-07-------------------------------------------------------------------------------------








VirtualMem01.png
虛擬記憶體是電腦系統內部記憶體管理的一種技術。它使得應用程式認為它擁有連續的可用的內部記憶體(一個連續完整的位址空間),而實際上,它通常是被分隔成多個實體記憶體碎片,還有部分暫時儲存在外部磁碟記憶體上,在需要時進行資料交換。與沒有使用虛擬記憶體技術的系統相比,使用這種技術的系統使得大型程式的編寫變得更容易,對真正的實體記憶體(例如RAM)的使用也更有效率。
注意:虛擬記憶體不只是「用磁碟空間來擴充功能實體記憶體」的意思——這只是擴充內部記憶體級別以使其包含硬碟機而已。把內部記憶體擴充功能到磁碟只是使用虛擬記憶體技術的一個結果,它的作用也可以透過覆蓋或者把處於不活動狀態的程式以及它們的資料全部交換到磁碟上等方式來實作。虛擬記憶體的定義是基於對位址空間的重定義的,即把位址空間定義為「連續的虛擬記憶體位址」,以藉此「欺騙」程式,使它們以為自己正在使用一大塊的「連續」位址。
現代所有用於一般應用的作業系統都對普通的應用程式使用虛擬記憶體技術,例如字處理軟體,電子製表軟體,多媒體播放器等等。老一些的作業系統,如DOS和1980年代的Windows,或者那些1960年代的大型電腦,一般都沒有虛擬記憶體的功能——但是AtlasB5000蘋果公司Lisa都是很值得注意的例外。[1]
那些需要快速存取或者反應時間非常一致的嵌入式系統,和其他的特殊應用的電腦系統,可能會為了避免讓運算結果的可預測性降低,而選擇不使用虛擬記憶體。
直接記憶體存取Direct Memory Access,DMA電腦科學中的一種內部記憶體存取技術。它允許某些電腦內部的硬體子系統(電腦外設),可以獨立地直接讀寫系統記憶體,而不需繞道中央處理器(CPU)。在同等程度的處理器負擔下,DMA是一種快速的資料傳送方式。很多硬體的系統會使用DMA,包含硬碟控制器、繪圖顯示卡網路卡音效卡

直接記憶體存取
DMA 是所有現代電腦的重要特色,他允許不同速度的硬體裝置來溝通,而不需要依於中央處理器的大量 中斷 負載。否則,中央處理器 需要從 來源 把每一片段的資料複製到 暫存器,然後把他們再次寫回到新的地方。在這個時間中,中央處理器 對於其他的工作來說就無法使用。
DMA 傳輸重要地將一個記憶體區從一個裝置複製到另外一個。當中央處理器初始化這個傳輸動作,傳輸動作本身是由 DMA 控制器 來實行和完成。典型的例子就是移動一個外部記憶體的區塊到晶片內部更快的記憶體去。像是這樣的操作並沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對於高效能 嵌入式系統 演算法和網路是很重要的。
舉個例子,個人電腦ISA DMA 控制器擁有 8 個 DMA 通道,其中的 7 個通道是可以讓計算機的中央處理器所利用。每一個 DMA 通道有一個 16位元 位址暫存器和一個 16 位元 計數暫存器。要初始化資料傳輸時,裝置驅動程式一起設定 DMA 通道的位址和計數暫存器,以及資料傳輸的方向,讀取或寫入。然後指示 DMA 硬體開始這個傳輸動作。當傳輸結束的時候,裝置就會以中斷的方式通知中央處理器。
"分散-收集"(Scatter-gather)DMA 允許在一次單一的 DMA 處理中傳輸資料到多個記憶體區域。相當於把多個簡單的 DMA 要求串在一起。再一次,這個動機是要減輕中央處理器的多次輸出輸入中斷和資料複製任務。
DRQ 意為 DMA 要求;DACK 意為 DMA 確認。這些符號一般在有 DMA 功能的電腦系統硬體概要上可以看到。他們表示了介於 中央處理器 和 DMA 控制器之間的電子訊號傳輸線路。

Dynamic Execution
First used in the P6 or sixth-generation processors, dynamic execution is an innovative combination of three processing techniques designed to help the processor manipulate data more efficiently. Those techniques are multiple branch prediction, data flow analysis, and speculative execution. Dynamic execution enables the processor to be more efficient by manipulating data in a more logically ordered fashion rather than simply processing a list of instructions, and it is one of the hallmarks of all sixth-generation processors.
The way software is written can dramatically influence a processor's performance. For example, performance will be adversely affected if the processor is frequently required to stop what it is doing and jump or branch to a point elsewhere in the program. Delays also occur when the processor cannot process a new instruction until the current instruction is completed. Dynamic execution allows the processor to not only dynamically predict the order of instructions, but execute them out of order internally, if necessary, for an improvement in speed.
Multiple Branch Prediction
Multiple branch prediction predicts the flow of the program through several branches. Using a special algorithm, the processor can anticipate jumps or branches in the instruction flow. It uses this to predict where the next instructions can be found in memory with an accuracy of 90 percent or greater. This is possible because while the processor is fetching instructions, it is also looking at instructions further ahead in the program.
Data Flow Analysis
Data flow analysis analyzes and schedules instructions to be executed in an optimal sequence, independent of the original program order. The processor looks at decoded software instructions and determines whether they are available for processing or are instead dependent on other instructions to be executed first. The processor then determines the optimal sequence for processing and executes the instructions in the most efficient manner.
Speculative Execution
Speculative execution increases performance by looking ahead of the program counter and executing instructions that are likely to be needed later. Because the software instructions being processed are based on predicted branches, the results are stored in a pool for later referral. If they are to be executed by the resultant program flow, the already completed instructions are retired and the results are committed to the processor's main registers in the original program execution order. This technique essentially allows the processor to complete instructions in advance and then grab the already completed results when necessary.

------------------------------------------------------------------------------------------------------
For 1-08-------------------------------------------------------------------------------------
SPECmark
Benchmarks

Standard Performance Evaluation Corporation
Standard Performance Evaluation Corporation
Formation
1988
Type
Not-for-profit
Headquarters
Gainesville, Virginia
Membership
Hardware & Software Vendors, Universities, Research Centers
Staff
4
Website



The Standard Performance Evaluation Corporation (SPEC) is a non-profit organization that aims to "produce, establish, maintain and endorse a standardized set" of performance benchmarks for computers.[1]
SPEC was founded in 1988.[2][3] SPEC benchmarks are widely used to evaluate the performance of computer systems; the test results are published on the SPEC website. Results are sometimes informally referred to as "SPECmarks" or just "SPEC".
SPEC evolved into an umbrella organization encompassing four diverse groups; Graphics and Workstation Performance Group (GWPG), the High Performance Group (HPG), the Open Systems Group (OSG) and the newest, the Research Group (RG). More details are on their
算術平均數是表徵數據集中趨勢的一個統計指標。它是一組數據之和除以這組數據之個/項數。
算術平均數在統計學上的優點就是它較中位數眾數更少受到隨機因素影響,缺點是它更容易受到極端數影響。
計算公式為:
\bar{x} = \frac{\sum_{i=1}^n x_i}{n} = \frac{x_1 + x_2 + \cdots + x_n}{n}
在統計學中,對樣本的平均值用 \bar{x}表示,對全體數據的平均值用 \mu表示。
幾何平均數,是求一組數值的平均數的方法中的一種。適用於對比率數據的平均,並主要用於計算數據平均增長(變化)率。
其計算公式為:
G = \sqrt[n]{\prod_{i=1}^n x_i} = \sqrt[n]{x_1 \cdot x_2 \cdots x_n}

調和平均數(Harmonic Mean)是求一組數值的平均數的方法中的一種,一般是在計算平均速率時使用。
調和平均數是將數值個數除以數值倒數的總和,一組正數x1, x2 ... xn的調和平均數H其計算公式為:
H = \frac{n}{\frac{1}{x_1} + \frac{1}{x_2} + ... + \frac{1}{x_n}}.
或者
H = \frac{n}{\sum_{i=1}^n \frac{1}{x_i}}

------------------------------------------------------------------------------------------------------
For 1-09-------------------------------------------------------------------------------------
Moore’s Law
CUDA
GPU
GPGPU
摩爾定律是由英特爾(Intel)創始人之一戈登·摩爾(Gordon Moore)提出來的。其內容為:當價格不變時,積體電路(IC)上可容納的電晶體數目,約每隔24個月(1975年摩爾將24個月更改為18個月)便會增加一倍,效能也將提升一倍;或者說,每一美元所能買到的電腦效能,將每隔18個月翻兩倍以上。[1]這一定律揭示了資訊科技進步的速度。
1965年4月19日,《電子學》雜誌(Electronics Magazine)第114頁發表了摩爾(時任仙童半導體公司工程師)撰寫的文章〈讓積體電路填滿更多的元件〉,文中預言半導體晶片上整合的電晶體和電阻數量將每年增加一倍。
1975年,摩爾在IEEE的一次學術年會上送出了一篇論文,根據當時的實際情況對摩爾定律進行了修正,把「每年增加一倍」改為「每兩年增加一倍」,而現在普遍流行的說法是「每18個月增加一倍」。但1997年9月,摩爾在接受一次採訪時宣告,他從來沒有說過「每18個月增加一倍」,而且SEMATECH路線圖跟隨24個月的週期。
大抵而言,若在相同面積的晶圓下生產同樣規格的IC,隨著製程技術的進步,每隔一年半,IC產出量就可增加一倍,換算為成本,即每隔一年半成本可降低五成,平均每年成本可降低三成多。就摩爾定律延伸,IC技術每隔一年半推進一個世代。
摩爾定律是簡單評估半導體技術進展的經驗法則,其重要的意義在於長期而言,IC製程技術是以一直線的方式向前推展,使得IC產品能持續降低成本,提升效能,增加功能。
另一種說法
摩爾定律雖然以戈登·摩爾(Gordon Moore)的名字命名,但最早提出摩爾定律相關內容的並非摩爾,而是加州理工學院的卡沃·米德(Carver Mead)教授。米德是最早關注到摩爾定律所提出的電晶體之類的產量增加,就會引起其價格下降現象的。米德指出,如果給定價格的電腦處理能力每兩年提高一倍,那麼這一價位的電腦處理裝置同期就會降價一半。[2]
CUDACompute Unified Device Architecture,統一計算架構[1]是由NVIDIA所推出的一種整合技術,是該公司對於GPGPU的正式名稱。透過這個技術,使用者可利用NVIDIA的GeForce 8以後的GPU和較新的Quadro GPU進行計算。亦是首次可以利用GPU作為C-編譯器的開發環境。NVIDIA行銷的時候[2],往往將編譯器與架構混合推廣,造成混亂。實際上,CUDA架構可以相容OpenCL或者自家的C-編譯器。無論是CUDA C-語言或是OpenCL,指令最終都會被驅動程式轉換成PTX代碼,交由顯示核心計算。[3]

概要
Example of CUDA processing flow
1. 複製記憶體至 GPU
2. CPU 指令驅動 GPU
3. GPU 平行處理每一核心
4. GPU 將結果傳回主記憶體
GeForce 8800 GTX為例,其核心擁有128個內處理器。利用CUDA技術,就可以將那些內處理器串通起來,成為緒程處理器去解決資料密集的計算。而各個內處理器能夠交換、同步和共享資料。利用NVIDIA的C-編譯器,通過驅動程式,就能利用這些功能。亦能成為流處理器,讓應用程式利用進行運算。
GeForce 8800 GTX顯示卡的運算能力可達到520GFlops,如果建設SLI系統,就可以達到1TFlops。[來源請求]
但程式設計師在利用CUDA技術時,須分開三種不同的記憶體,要面對繁複的緒程層次,編譯器亦無法自動完成多數任務,以上問題就提高了開發難度。而將來的G100會採用第二代的CUDA技術,提高效率,降低開發難度。
目前,已有軟體廠商利用CUDA技術,研發了一個Adobe Premiere Pro的外掛程式。通過外掛程式,使用者就可以利用顯示核心去加速H.264/MPEG-4 AVC的編碼速度。速度是單純利用CPU作軟體加速的7倍左右。
在NVIDIA收購AGEIA後,NVIDIA取得相關的物理加速技術,即是PhysX物理引擎。配合CUDA技術,顯示卡可以類比成一顆PhysX物理加速晶片[4]。目前,全系列的GeForce 8顯示核心都支援CUDA。而NVIDIA亦不會再推出任何的物理加速卡,顯示卡將會取代相關產品。
為了將CUDA推向民用,NVIDIA會舉行一系列的編程比賽,要求參賽者開發程式,充分利用CUDA的計算潛能。但是,要將GPGPU普及化,還要看微軟能否在Windows作業系統中,提供相關的編程介面。[5]
通用圖形處理器英語:General-purpose computing on graphics processing units,簡稱GPGPU或GP²U),是一種利用處理圖形任務的圖形處理器來計算原本由中央處理器處理的通用計算任務。這些通用計算常常與圖形處理沒有任何關係。由於現代圖形處理器強大的並行處理能力和可程式流水線,令流處理器可以處理非圖形數據。特別在面對單指令流多數據流(SIMD),且數據處理的運算量遠大於數據調度和傳輸的需要時,通用圖形處理器在性能上大大超越了傳統的中央處理器應用程序。
------------------------------------------------------------------------------------------------------
For 1-10-------------------------------------------------------------------------------------
ARM
thumb
ARM架構,過去稱作進階精簡指令集機器(Advanced RISC Machine,更早稱作:Acorn RISC Machine),是一個32位元精簡指令集(RISC)處理器架構,其廣泛地使用在許多嵌入式系統設計。由於節能的特點,ARM處理器非常適用於行動通訊領域,符合其主要設計目標為低成本、高效能、低耗電的特性。
至2009年為止,ARM架構處理器佔了市面上所有32位元嵌入式RISC處理器90%的比例[1],使它成為佔全世界最多數的32位元架構之一。ARM處理器可以在很多消費性電子產品上看到,從可攜式裝置(PDA行動電話、多媒體播放器、掌上型電玩,和計算機)到電腦週邊設備(硬碟、桌上型路由器)甚至在飛彈的彈載電腦等軍用設施中都有他的存在。在此還有一些基於ARM設計的衍伸產品,重要產品還包括MarvellXScale架構和德州儀器OMAP系列。
Thumb
較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式執行指令均耗用4位元的情形有關。在Thumb模式下,較小的opcode有更少的功能性。例如,只有分支可以是條件式的,且許多opcode無法存取所有CPU的暫存器。然而,較短的opcode提供整體更佳的編碼密度(註:意指程式碼在記憶體中佔的空間),即使有些運算需要更多的指令。特別在記憶體埠或匯流排寬度限制在32 以下的情形時,更短的Thumb opcode能更有效地使用有限的記憶體頻寬,因而提供比32位元程式碼更佳的效能。典型的嵌入式硬體僅具有較小的32-bit datapath定址範圍以及其他更窄的16 bits定址(例如Game Boy Advance)。在這種情形下,通常可行的方案是編譯成 Thumb 程式碼,並自行最佳化一些使用(非Thumb)32位元指令集的CPU相關程式區,因而能將它們置入受限的32-bit匯流排寬度的記憶體中。
首顆具備Thumb技術的處理器是ARM7TDMI。所有ARM9和後來的家族,包括XScale,都納入了 Thumb 技術。
Thumb Execution Environment (ThumbEE)
ThumbEE,也就是所謂的Thumb-2EE,業界稱為Jazelle RCT技術,於2005年發表,首見於 「Cortex-A8」處理器。ThumbEE 提供從 Thumb-2 而來的一些擴充性,在所處的執行環境下,使得指令集能特別適用於執行階段的編碼產生(例如即時編譯)。Thumb-2EE是專為一些語言如LimboJavaC#PerlPython,並能讓即時編譯器能夠輸出更小的編譯碼卻不會影響到效能。
ThumbEE所提供的新功能,包括在每次存取指令時自動檢查是否有無效指標,以及一種可以執行陣列範圍檢查的指令,並能夠分支到分類器,其包含一小部份經常呼叫的編碼,通常用於高階語言功能的實作,例如對一個新物件做記憶體配置。
進階 SIMD (NEON)
進階SIMD延伸集,業界稱為「NEON」技術,它是一個結合64位元和128位元的單指令多重數指令集(SIMD),其針對多媒體和訊號處理程式具備標準化加速的能力。NEON 可以在10 MHz的處理器上執行MP3音效解碼,且可以執行13 MHz以下的自適應多速率音訊壓縮編碼。NEON具有一組廣泛的指令集、各自的暫存器檔案,以及獨立執行的硬體。NEON 支援8、16、32和64位元的整數及單精度浮點數據,並以單指令多重數的方式運算,執行圖形和遊戲處理中關於語音及視訊的部分。單指令多重指令集在向量超級處理機中是個決定性的要素,它具備同時多項處理功能。在NEON技術中,SIMD最高可同時做16個運算。

------------------------------------------------------------------------------------------------------
For 1-11-------------------------------------------------------------------------------------
觀念題
------------------------------------------------------------------------------------------------------
For 1-12-------------------------------------------------------------------------------------
CISC
RISC
複雜指令集CISC,Complex Instruction Set Computer)是一種微處理器指令集架構(ISA),每個指令可執行若干低階操作,諸如從記憶體讀取、儲存、和計算操作,全部集於單一指令之中。與之相對的是精簡指令集RISC,Reduced Instruction Set Computer)。
CISC的特點是指令數目多而複雜,每條指令字長並不相等。
RISC處理器發跡以前,許多電腦架構嚐試跨越「語義鴻溝」──設計出藉由提供「高階」指令支援高階程式語言的指令集,諸如程序調用和返回,迴圈指令諸如「若非零則減量和分支」和複雜尋址模式以允許資料結構和陣列存取以結合至單一指令。
屬於CISC的處理器有CDC 6600System/360VAXPDP-11Motorola 68000家族、x86等。
精簡指令集,是電腦中央處理器的一種設計模式,也被稱為RISC(Reduced Instruction Set Computing 的縮寫)這種設計思路對指令數目和定址方式都做了精簡,使其實作更容易,指令並列執行程度更好,編譯器的效率更高。目前常見的精簡指令集微處理器包括DEC AlphaARCARMAVRMIPSPA-RISCPower Architecture(包括PowerPCPowerXCell)和SPARC等。
這種設計思路最早的產生緣自於有人發現,儘管傳統處理器設計了許多特性讓代碼編寫更加便捷,但這些複雜特性需要幾個指令周期才能實作,並且常常不被執行程式所採用。此外,處理器和主內部記憶體之間執行速度的差別也變得越來越大。在這些因素促使下,出現了一系列新技術,使處理器的指令得以流水執行,同時降低處理器存取內部記憶體的次數。
早期,這種指令集的特點是指令數目少,每條指令都採用標準字長、執行時間短、中央處理器的實作細節對於機器級程式是可見的等等。
實際上在後來的發展中,RISC與CISC在競爭的過程中相互學習,現在的RISC指令集也達到數百條,執行周期也不再固定。雖然如此,RISC設計的根本原則——針對流水線化的處理器最佳化——沒有改變,而且還在遵循這種原則的基礎上發展出RISC的一個並行化變種VLIW(包括Intel EPIC),就是將簡短而長度統一的精簡指令組合出超長指令,每次執行一條超長指令,等於並行執行多條短指令。
另一方面,目前最常見的複雜指令集x86 CPU,雖然指令集是CISC的,但因對常用的簡單指令會以硬體線路控制盡全力加速,不常用的複雜指令則交由微碼循序器「慢慢解碼、慢慢跑」,因而有「RISCy x86」之稱。

------------------------------------------------------------------------------------------------------
For 1-13-------------------------------------------------------------------------------------
嵌入式作業系統嵌入式系統作業系統。它們通常被設計非常緊湊有效,拋棄了運行在它們之上的特定的應用程序所不需要的各種功能。嵌入式作業系統多數也是實時作業系統
嵌入式作業系統包括:
還有訂製版的NetBSDFreeDOS等。

------------------------------------------------------------------------------------------------------
For 1-14,~ 1-20 -----------------------------------------------------------------------------

DSP
送分基本題


-------------------------------------------------------------------------------------
複雜指令集CISC,Complex Instruction Set Computer)
在早期的電腦業界,編譯器技術並不發達,程式多半以機器語言組譯語言完成的。為了便於編寫程式,電腦架構師設計出越來越複雜的指令,可以直接對應高階程式語言的高階功能。當時的看法是硬體比編譯器更容易設計,所以結構的複雜性在硬體這端。
加速這種複雜化的另一因素是缺乏大容量的內部記憶體。在內部記憶體容量受限的應用中,具有極高訊息密度的程式更加實用。當時內部記憶體中的每一位元組都很寶貴,例如只有幾千個位元組來儲存某個完整系統。它使產業界傾向於高度編碼的指令、長度不等的指令、多運算元的指令,以及把資料的搬移與計算合併在一起的指令。在當時看來,相對於使指令更容易解碼,指令的編碼打包問題由為重要。
還有一個因素是當時的內部記憶體不僅容量少,而且速度很慢,使用的都是磁性技術。憑藉高密度打包的指令,存取慢速資源的頻率可以降低。
微處理器只有少量暫存器的兩個原因是:
  • 暫存器每一個位元位都比外部內部記憶體貴。以當時的積體電路技術水準,大量暫存器對晶片或電路板而言是難以承受的。
  • 一旦具有大數量的暫存器,相關的指令字(opcode)將會需要更多的位元位(使用寶貴的RAM)來定位暫存器。
基於上述原因,微處理器設計師儘可能使指令做更多的工作。這導致單個指令做全部的工作: 讀入兩個加數,相加,並將計算結果直接寫入內部記憶體;另一個例子是從內部記憶體讀取兩個數據,但計算結果儲存在暫存器內;第三個例子是將從內部記憶體和暫存器各讀取一個數據,其結果再次寫入內部記憶體;以此類推。這種微處理器設計原理,在精簡指令集(RISC)的思路出現後,最終被人稱為複雜指令集(CISC)。

精簡指令集RISC (Reduced Instruction Set Computing)

RISC設計中常見的特徵:
  • 統一指令編碼(例如,所有指令中的op-code永遠位於同樣的位元位置、等長指令),可快速解譯;
  • 泛用的暫存器,所有暫存器可用於所有內容,以及編譯器設計的單純化(不過暫存器中區分了整數浮點數);
  • 單純的尋址模式(複雜尋址模式以簡單計算指令序列取代);
  • 硬體中支援少數資料型別(例如,一些CISC電腦中存有處理位元組字串的指令。這在RISC電腦中不太可能出現)。

不過RISC也有它的缺點。當需要一系列指令用來完成非常簡單的程式時,從記憶體讀入的指令總數會變多,因此也需要更多時間。
提升中央處理器性能的方法
  • 增加暫存器的大小
  • 增進內部的平行性
  • 增加快取大小
  • 加入其它功能,如I/O和計時器
  • 加入向量處理器(SIMD),如VISAltiVecSSE(Streaming SIMD Extensions)
  • 避免附加。使朝向省電化(battery-constrained)或小型化的應用
  • 整合多個核心
  • 硬體多執行緒技術


沒有留言:

張貼留言