當前位置:首頁 » 操作系統 » 操作碼演算法

操作碼演算法

發布時間: 2024-09-22 01:58:12

A. 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的效率 低下,但隨著時間的推移,各種問題都將會得到妥善的解決。

B. 什麼叫機器指令機器指令怎樣表示演算法為什麼要用機器指令表示演算法

機器指令是CPU能直接識別並執行的指令,它的表現形式是二進制編碼。
機器指令通常由操作碼和操作數兩部分組成,操作碼指出該指令所要完成的操作,即指令的功能,操作數指出參與運算的對象,以及運算結果所存放的位置等。
用機器指令來表示演算法無疑比其他的指令要復雜,但是它能直接操作計算機的硬體,也就是說它寫出來的代碼能有很好的硬體響應速度。但隨著計算機性能的提升,現在用機器指令寫演算法越來越少了。

C. 計算機組成原理

計算機組成原理

三、名詞解釋
1.計算機系統:由硬體和軟體兩大部分組成,有多種層次結構。
2.主機:CPU、存儲器和輸入輸出介面合起來構成計算機的主機。
3.主存:用於存放正在訪問的信息
4.輔存:用於存放暫時不用的信息。
5.高速緩存:用於存放正在訪問信息的付本。
6.中央處理器:是計算機的核心部件,由運算器和控制器構成。
7.硬體:是指計算機實體部分,它由看得見摸得著的各種電子元器件,各類光、電、機設備的實物組成。
軟體:指看不見摸不著,由人們事先編制的具有各類特殊功能的程序組成。
8.系統軟體:又稱系統程序,主要用來管理整個計算機系統,監視服務,使系統資源得到合理調度,高效運行。
應用軟體:又稱應用程序,它是用戶根據任務需要所編制的各種程序。
9.源程序:通常由用戶用各種編程語言編寫的程序。
目的程序:由計算機將其翻譯機器能識別的機器語言程序。
10.匯流排:是連接多個部件的信息傳輸線,是各部件共享的傳輸介質。
11.系統匯流排:是指CPU、主存、I/O設備(通過I/O介面)各大部件之間的信息傳輸線。
通信匯流排:是指用於計算機系統之間或者計算機系統與其他系統(如控制儀表、移動通信)之間的通信的線路。
按傳送方式分並行和串列。串列通信是指數據在單條1位寬的傳輸線上,一位一位的按順序分時傳送。並行通信是指數據在多條並行1位寬的傳輸線上,同時由源傳送到目的地。
12.帶寬:單位時間內可以傳送的最大的信息量。
13.機器字長:是指CPU一次並行處理數據的位數,通常與CPU的寄存器位數有關。
14.主存容量:是指主存中存放二進制代碼的總位數。
15.機器數:符號位數字化,0代表正數,1代表負數。
16.定點數:小數點固定在某一位位置的數。
17.浮點數:小數點的位置可以浮動的數。
18.補碼:帶符號數據表示方法之一,正數的反碼和原碼相同,負數的反碼是將二進制按位取反後在最低位再加1.
19.溢出:在計算機中,超出機器字長,發生錯誤的結果。
20.非編碼鍵盤:採用軟體判斷鍵是否按下及設鍵、譯鍵、計算鍵值的方法的鍵盤。
21.A/D轉換器:它能將模擬量轉換成數字量,是計算機的輸入設備。
22.I/O介面:指主機與I/O設備之間設置的一個硬體電路及器相應的軟體控制。
23.埠:指介面電路中的一些寄存器,用來存放數據信息、控制信息和狀態信息。
24.中斷:計算機在執行程序的過程中,當出現異常情況或特殊請求時,計算機停止現行程序的運行轉向對這些異常情況或特殊請求處理,處理結束後再返回到現行程序的間斷處,繼續執行源程序。
25.中斷源:凡能向CPU提出中斷請求的各種因素統稱為中斷源。
26.中斷嵌套:計算機在處理中斷的過程中,有可能出現新的中斷請求,此時CPU暫停現行中斷服務程序,轉向新的中斷請求,這種現象稱為中斷嵌套。
27.優先順序:為使系統能及時響應並處理發生的所有中斷,系統根據引起中斷事件的重要性和緊迫程度,硬體將中斷源分為若干個級別。
28.DMA方式:用硬體在主存與外設之間直接進行數據傳送,不須CPU,用軟體控制。
29.指令系統:將全部機器指令的集合稱為機器的指令系統。
30.定址方式:是指確定本條指令的數據地址以及下一條將要執行的指令地址的方法,它與硬體結構緊密相關,而且直接影響指令格式和指令功能。
31.指令周期:完成一條指令的時間,由若干機器周期組成。
機器周期:完成摸個獨立操作,由若干時鍾周期組成。
時鍾周期:最基本時間單位,由主頻決定。
32.微操作:在微程序控制器中,執行部件接受微指令後所進行的最基本的操作。
33.微指令:控制器存儲的控制代碼,分為操作控制部分和順序控制部分,由微命令組成。
34.微程序:存儲在控制存儲器中的完成指令功能的程序,由微指令組成。
35.控制存儲器:CPU內用於存放實現指令系統全部指令的微程序的只讀存儲器。
二、計算
3.14. 設匯流排的時鍾頻率為8MHZ,一個匯流排周期等於一個時鍾周期。如果一個匯流排周期中並行傳送16位數據,試問匯流排的帶寬是多少?
解:由於:f=8MHz,T=1/f=1/8M秒,因為一個匯流排周期等於一個時鍾周期
所以:匯流排帶寬=16/(1/8M) = 128Mbps=16MBps
3.15. 在一個32位的匯流排系統中,匯流排的時鍾頻率為66MHZ,假設匯流排最短傳輸周期為4個時鍾周期,試計算匯流排的最大數據傳輸率。若想提高數據傳輸率,可採取什麼措施?
解:匯流排傳輸周期=4*1/66M秒
匯流排的最大數據傳輸率=32/(4/66M)=528Mbps=66MBps
若想提高數據傳輸率,可以提高匯流排時鍾頻率、增大匯流排寬度或者減少匯流排傳輸周期包含的時鍾周期個數。
3.16. 在非同步串列傳送系統中,字元格式為:1個起始位、8個數據位、1個校驗位、2個終止位。若要求每秒傳送120個字元,試求傳送的波特率和比特率。
解:一幀包含:1+8+1+2=12位
故波特率為:(1+8+1+2)*120=1440bps
比特率為:8*120=960bps
4.5. 什麼是存儲器的帶寬?若存儲器的數據匯流排寬度為32位,存取周期為200ns,則存儲器的帶寬是多少?
解:存儲器的帶寬指單位時間內從存儲器進出信息的最大數量。
存儲器帶寬 = 1/200ns ×32位 = 160M位/秒 = 20MB/秒(註:1ns=10-9s)
4.7. 一個容量為16K×32位的存儲器,其地址線和數據線的總和是多少?當選用下列不同規格的存儲晶元時,各需要多少片?
1K×4位,2K×8位,4K×4位,16K×1位,4K×8位,8K×8位
解:地址線和數據線的總和 = 14 + 32 = 46根;
選擇不同的晶元時,各需要的片數為:
1K×4:(16K×32) / (1K×4) = 16×8 = 128片
2K×8:(16K×32) / (2K×8) = 8×4 = 32片
4K×4:(16K×32) / (4K×4) = 4×8 = 32片
16K×1:(16K×32)/ (16K×1) = 1×32 = 32片
4K×8:(16K×32)/ (4K×8) = 4×4 = 16片
8K×8:(16K×32) / (8K×8) = 2×4 = 8片
6.4. 設機器數字長為8位(含1位符號位在內),寫出對應下列各真值的原碼、補碼和反碼。 -13/64,-87
解:真值與不同機器碼對應關系如下:
真值 -13/64 -87
原碼 1.001 1010 1,101 0111
補碼 1.1100110 1,0101001
反碼 1.1100101 1,0101000
6.5. 已知[x]補,求[x]原和x。
[x1]補=1.1100; [x2]補=1.1001; [x4]補=1.0000;
[x5]補=1,0101; [x6]補=1,1100; [x8]補=1,0000;
解:[x]補與[x]原、x的對應關系如下:
真值 -1/4 -7/16 -1 -11 -4 -16
[x]補 1.1100 1.1001 1.0000 1,0101 1,1100 1,0000
[x]原 1.0100 1.0111 無 1,1011 1,0100 無
x -0.0100 -0.0111 -1.0000 -1011 -0100 -10000
6.9. 當十六進制數9B和FF分別表示為原碼、補碼、反碼、移碼和無符號數時,所對應的十進制數各為多少(設機器數採用一位符號位)?
解:真值和機器數的對應關系如下:
原碼 補碼 移碼 無符號數
9BH -27 -101 +27 155
原碼 補碼 移碼 無符號數
FFH -128 -1 +128 256
6.12. 設浮點數格式為:階碼5位(含1位階符),尾數11位(含1位數符)。寫出-27/1024、-86.5所對應的機器數。要求如下:
(1)階碼和尾數均為原碼。
(2)階碼和尾數均為補碼。
(3)階碼為移碼,尾數為補碼。
解:據題意畫出該浮點數的格式:
階符1位 階碼4位 數符1位 尾數10位
將十進制數轉換為二進制: x1= -27/1024= -0.0000011011B = 2-5*(-0.11011B)
x3=-86.5=-1010110.1B=27*(-0.10101101B)
則以上各數的浮點規格化數為:
(1)[x1]原=1,0101;1.110 110 000 0
[x3]原=0,0111;1.101 011 010 0
(2)[x1]補=1,1011;1.001 010 000 0
[x3]補=0,0111;1.010 100 110 0
(3)[x1]移補=0,1011;1.001 010 000 0
[x3]移補=1,0111;1.010 100 110 0
6.19. 設機器數字長為8位(含1位符號位),用補碼運算規則計算下列各題。
(2)A=19/32,B=-17/128,求A-B。
(4)A=-87,B=53,求A-B。
解:(2)A=19/32= 0.100 1100B, B= -17/128= -0.001 0001B
[A]補=00.100 1100, [B]補=11.110 1111 , [-B]補=00.001 0001
[A-B]補=[A]補+[-B]補
=00.1001100 + 00.0010001
=00.1011101 ——無溢出
A-B= 0.101 1101B = 93/128B
(4)A= -87= -101 0111B, B=53=110 101B
[A]補=11, 010 1001, [B]補=00, 011 0101, [-B]補=11, 100 1011
[A-B]補=[A]補+[-B]補
= 11,0101001 + 11,1001011
= 10,1110100 —— 溢出
6.21. 用原碼加減交替法和補碼加減交替法計算x÷y。
(2)x=-0.10101, y=0.11011;
(4)x=13/32, y= -27/32。
(2)[x]原=1.10101 x*=0.10101 [X*]補=1.01011 XfYf=1
0.10101
+1.00101
1.11010 0
1.10100
+0.11011
0.01111 0
0.11110
+1.00101
0.00011 011
0.00110
+1.00101
1.01011 0110
0.10110
+0.11011
1.10001 01100
1.00010
+0.11011
1.11101 011000
[y]原=0.11011 y*=0.11011 [Y*]補=0.11011 [-y*]補=1.00101

[x/y]原=1.11000
(4)做法相同,打表格太累,僅給出結果。[x/y]原=1.01111
三、應用
4.14. 某8位微型機地址碼為18位,若使用4K×4位的RAM晶元組成模塊板結構的存儲器,試問:
(1)該機所允許的最大主存空間是多少?
(2)若每個模塊板為32K×8位,共需幾個模塊板?
(3)每個模塊板內共有幾片RAM晶元?
(4)共有多少片RAM?
(5)CPU如何選擇各模塊板?
解:(1)該機所允許的最大主存空間是:218 × 8位 = 256K×8位 = 256KB
(2)模塊板總數 = 256K×8 / 32K×8 = 8塊
(3)板內片數 = 32K×8位 / 4K×4位 = 8×2 = 16片
(4)總片數 = 16片×8 = 128片
(5)CPU通過最高3位地址解碼輸出選擇模板,次高3位地址解碼輸出選擇晶元。地址格式分配如下:
4.29. 假設CPU執行某段程序時共訪問Cache命中4800次,訪問主存200次,已知Cache的存取周期為30ns,主存的存取周期為150ns,求Cache的命中率以及Cache-主存系統的平均訪問時間和效率,試問該系統的性能提高了多少倍?
解:Cache被訪問命中率為:4800/(4800+200)=24/25=96%
則Cache-主存系統的平均訪問時間為:ta=0.96*30ns+(1-0.96)*150ns=34.8ns
Cache-主存系統的訪問效率為:e=tc/ta*100%=30/34.8*100%=86.2%
性能為原來的150ns/34.8ns=4.31倍,即提高了3.31倍。
例7.2設相對定址的轉移指令佔3個位元組,第一位元組為操作碼,第二,三位元組為相對位移量(補碼表示)。而且數據在存儲器中採用以低位元組地址為字地址的存放方式。每當CPU從存儲器取出一個位元組時,即自動完成(PC)+1 PC。
(1) 若PC當前值為240(十進制),要求轉移到290(十進制),則轉移指令的第二、三位元組的機器代碼是什麼?
(2) 若PC當前值為240(十進制),要求轉移到200(十進制),則轉移指令的第二、三位元組的機器代碼是什麼?
解:(1)PC當前值為240,該指令取出後PC值為243,要求轉移到290,即相對位移量為290-243=47,轉換成補碼為2FH。由於數據在存儲器中採用以低位元組地址為字地址的存放方式,故該轉移指令的第二位元組為2FH,第三位元組為00H。
(2)PC當前值為240,該指令取出後PC值為243,要求轉移到200,即相對位移量為200-243=-43,轉換成補碼為D5H。由於數據在存儲器中採用以低位元組地址為字地址的存放方式,故該轉移指令的第二位元組為D5H,第三位元組為FFH。
例7.3一條雙字長直接定址的子程序調用指令,其第一個字為操作碼喝定址特徵,第二個字為地址碼5000H。假設PC當前值為2000H,SP的內容為0100H,棧頂內容為2746H,存儲器按位元組編址,而且進棧操作時執行(SP)-△-P,後存入數據。試回答下列幾種情況下,PC、SP及棧頂內容各為多少?
(1) CALL指令被讀取前。
(2) CALL指令被執行後。
(3) 子程序返回後。
解CALL指令被讀取前,PC=2000H,SP=0100H,棧頂內容為2746H。
(1) CALL指令被執行後,猶豫存儲器按位元組編制,CALL指令供佔4個位元組,故程序斷電2004H進棧,此時SP=(SP)-2=00FEH,棧頂內容為2004H,PC被更新為子程序入口地址5000H。
(2) 子程序返回後,程序斷點出棧,PC=2004H,SP被修改為0100H,棧頂內容為2746H。
7.6某指令系統字長為16位,地址碼取4位,試提出一種方案,使該地址系統有8條三地址指令、16條二地址指令、100條一地址指令。
解:
OP A2 A1 A0 三地址指令8條
0000



0111

OP A1 A0 二地址指令16條
10000000



10001111

OP A0 一地址指令100條
110000000000
110001100011
7.7設指令字長為16位,採用擴展操作碼技術,每個操作碼的地址為6位。如果定義了13條二地址指令,試問還可安排多少條一地址指令。
解:(24-3)*26=3*64=192條
7.8某機指令字長16位,每個操作數的地址碼為6位,設操作碼長度固定,指令分為零地址,一地址和二地址三種格式,若零地址指令有M種,以抵制指令有N種,則二地址指令最多有幾種?若操作碼位數可變,則二地址指令最多允許有幾種?
解:1)若採用定長操作碼時,二地址指令格式如下:
OP(4位) A1(6位) A2(6位)
設二地址指令有K種,則:K=24-M-N
當M=1(最小值),N=1(最小值)時,二地址指令最多有:Kmax=16-1-1=14種
2)若採用變長操作碼時,二地址指令格式仍如1)所示,但操作碼長度可隨地址碼的個數而變。此時,K= 24 -(N/26 + M/212 );
當(N/26 + M/212 )1時(N/26 + M/212 向上取整),K最大,則二地址指令最多有:
Kmax=16-1=15種(只留一種編碼作擴展標志用。)
9.5設機器A的CPU主頻為8MHz,機器周期為4個時鍾周期,且該機的平均指令執行速度是0.4MIPS,試求該機的平均指令周期和機器周期,每個指令周期中含幾個機器周期?如果機器B的CPU主頻為12MHz,且機器周期也含有4個時鍾周期,試問B機的平均指令執行速度為多少MIPS?
A.CLK=8MHz T=1/8MHz=0.125us
機器周期=4*T=0.5us
因為執行速度為0.4MIPS 所以平均指令周期=1/0.4MIPS=2.5us
2.5us/0.5us=5個 所以每個指令含有5條機器指令
B.T=1/f=1/12MHz=1/12us 機器指令=4*T=1/3us 指令周期=5*1/3=5/3us
平均指令執行速度 1/(5/3)=0.6MIPS
9.6設某計算機的CPU主頻為8MHz,每個機器周期平均含2個時鍾周期,每條指令平均有4個機器周期,試問該計算機的平均指令執行速度為多少MIPS?若CPU主頻不變,但每個機器周期平均含4個時鍾周期,每條指令平均有4個機器周期,試問B機的平均指令執行速度為多少MIPS?
1.CLK=8MHz 平均指令執行速度1/(1/8M*2*4)=1MIPS
2.指令周期=4*4*1/8=2us 執行速度=1/(1/8M*4*4)=0.5MIPS
9.7某CPU的主頻為10MHz,若已知每個機器周期平均含有4個時鍾周期,該機的平均指令執行速度為1MIPS,試求該機的平均指令執行速度為多少MIPS?若CUP主頻不變,但每個機器周期平均含有4個時鍾周期,每條指令平均有4個機器周期,則該機的平均指令執行速度又是多少MIPS?由此可得出什麼結論
1.平均指令周期=1/1MIPS=1us T=1/f=0.1us T機=4*T=0.4us
因為1us/0.4us=2.5 所以每個指令包含2.5個機器周期
2.T=0.4us 速度=1/(0.4*2.5*4)=0.25MIPS
3.因為速度=0.8MIPS 所以T指=1/0.8us
因為T指=4*2.5*T 所以T=1/8us 所以 f=1/T=8MHz
四、簡答
1.馮諾依曼機主機主要特點。
○1計算機由運算器、存儲器、控制器、輸入設備和輸出設備五大部件組成。
○2.指令和數據一同等地位存放於存儲器內,並可按地址尋訪。
○3.指令和數據均用二進製表示。
○4.指令由操作嗎和地址碼組成,操作碼用來表示操作的性質,地址碼用來表示操作數在存儲器中的位置。
○5.採用存儲控制原理,指令在存儲器內按順序存放。通常指令是順序執行的,在特定條件下,可根據運算結果或根據設定的條件改變執行順序。
○6.機器以運算器為中心,輸入輸出設備與存儲器間的數據傳說通過運算器完成。
2.計算機硬體主要技術指標,軟體定義與分類。
計算機硬體主要技術指標:機器字長、存儲容量、運算速度、主頻等。
軟體定義:看不見摸不著,由人們事先編制的具有各類特殊功能的程序組成。
分類:系統軟體和應用軟體。
3.計算機組成部分與個部分作用。
運算器:用來完成算術運算和邏輯運算,並將運算的中間結果暫存在運算器內。
存儲器:用來存放數據和程序。
控制器:用來控制、指揮程序和數據的輸入、運行以及處理器運算結果。
輸入設備:用來將人們熟悉的信息形式轉換為機器能識別的信息形式,常見的有鍵盤、滑鼠等。
輸出設備:可將機器運算結果轉換為人們熟悉的信息形式,如列印機輸出,顯示器輸出等。
4.匯流排定義與分類方法,系統匯流排定義與分類方法。
匯流排
定義:匯流排是連接多個部件的信息傳輸線,是各部件共享的傳輸介質。
分類:片內匯流排 系統匯流排 通信匯流排
系統匯流排
定義:系統匯流排是指CPU、主存、I/O設備(通過I/O介面)各大部件之間的信息傳輸線。
分類: 數據匯流排 地址匯流排 控制匯流排
5.什麼是匯流排標准,目前流行的匯流排標准有哪些。
所謂匯流排標准可視為系統與各模塊,模塊與模塊之間的一個互連的標准界面。
ISA匯流排、EISA匯流排、PCI匯流排、RS—232C匯流排、IEEE-488(並行通信匯流排又稱GP-IP匯流排)USB匯流排。
6.三級存儲器系統中各級存儲器特點與用途,分哪兩個層次。
○1主存 特點:隨機訪問、速度快。容量大。用途:存放CPU使用的程序和數據。
輔存 特點:容量大、速度慢、價格低、可離線保存信息。用途:存放大量後備數據
緩存 特點:速度快、容量小、價格高 用途:用於主存與輔存之間作為緩沖,正在使用的程序和數據的付本。
○2緩存-----主存層次和主存---輔村層次。
7.半導體存儲器RAM與ROM特點與用途。
RAM特點:可讀可寫掉電後信息丟失,存臨時信息。用途:主要做內存
ROM特點:只讀不寫掉電後信息不丟失,存長期信息。用途:主要做控制存儲器
8.動態RAM與靜態RAM特點與用途,DRAM刷新方式與主要優點。
靜態RAM特點:信息讀出後,仍保持其原有狀態,不需要再生。用途:用於Cache
動態RAM特點:靠電容存儲電荷的原理來寄存信息。用途:組成內存/主存。
DRAM刷新方式
集中刷新:集中刷新是在規定的一個刷新周期內對全部存儲單元集中一段時間逐行進行刷新,此刻必須停止讀寫操作。
分散刷新:分散刷新是指對每行存儲單元的刷新分散到每個存儲周期內完成。
非同步刷新:非同步刷新是前兩種方式的結合,它即可縮短「死時間」,又充分利用最大刷新間隔2ms的特點。
優點:單個MOS管組成,集成度高,速度較SRAM慢,價格低,
9.Cache工作原理特點,地址映射方式與替換演算法。
原理:利用程序訪問的局部性,近期用到信息存於cache。
地址映射方式:直接映射、全相聯映射、組相聯映射、
替換演算法:先進先出演算法(FIFO)、近期最少使用演算法(LRU)、隨機法。
10.主機與外設交換信息採用中斷與DMA方式特點與應用場合。
中斷方式:
特點:CPU與外設並行工作,效率高
應用場合:管理多種外設並行工作、進行實時處理、進行故障自動處理
DMA方式:
特點:
○1從數據傳送看,程序中斷方式靠程序傳送,DMA方式靠硬體傳送。
○2從CPU響應時間看,程序中斷方式是在一條指令執行結束時響應,而DMA方式可在指令周期內的任一存取周期結束時響應。
○3程序中斷方式有處理異常事件能力,DMA方式沒有這種能力,主要用於大批數據的傳送,如硬碟存取、圖像處理、高速數據採集系統等,可提高數據吞吐量。
○4程序中斷方式需要中斷現行程序,故需保護現場;DMA方式不中斷現行程序,無須保護現場。
○5DMA的優先順序比程序中斷的優先順序高。
應用場合:高速設備 如硬碟
11.I/O埠與介面的區別,I/O介面分類方法。
埠:介面內部寄存器有I/O地址號。一般分為數據口、命令口和狀態口。
介面:若干埠加上相應的控制電路組成。
介面分類:按數據傳送方式分串列介面和並行介面
按功能選擇的靈活性分為可編程介面和不可編程介面
按通用性分為通用介面和專用介面
按數據傳送的控制方式分為程序型介面和DMA介面。
12.中斷處理過程分成哪兩個階段各完成哪些任務
響應階段:關中斷、保護斷點地址、轉入中斷服務入口地址
處理階段:保護現場、執行用戶編寫的中斷服務程序、恢復現場。
13.與中斷方式比較MDA方式主要特點是什麼。
○1從數據傳送看,程序中斷方式靠程序傳送,DMA方式靠硬體傳送。
○2從CPU響應時間看,程序中斷方式是在一條指令執行結束時響應,而DMA方式可在指令周期內的任一存取周期結束時響應。
○3程序中斷方式有處理異常事件能力,DMA方式沒有這種能力,主要用於大批數據的傳送,如硬碟存取、圖像處理、高速數據採集系統等,可提高數據吞吐量。
○4程序中斷方式需要中斷現行程序,故需保護現場;DMA方式不中斷現行程序,無須保護現場。
○5DMA的優先順序比程序中斷的優先順序高。
14.什麼是定址方式,數據定址方式有哪幾種。
定址方式:是指確定本條指令的數據地址以及下一條將要執行的指令地址的方法,它與硬體結構緊密相關,而且直接影響指令格式和指令功能。
數據定址方式:立即定址、直接定址、隱含定址、間接定址、寄存器定址、寄存器間接定址、基址定址、變址定址、相對定址、堆棧定址。
15.RISC主要特點與CISC相比較RISC主要優點。
特點:
選用使用頻率較高的一些簡單指令以及一些很有用但又不復雜的指令,讓復雜指令的功能由頻度高的簡單指令的組合來實現;
指令長度固定指令格式種類少,定址方式種類少;
只有取數/存數指令訪問存儲器,其餘指令的操作都在寄存器內完成;
採用流水線技術,大部分指令在一個時鍾周期內完成;
控制器採用組合邏輯控制,不用微程序控制;
採用優化的編譯程序。
○1充分利用VLSI晶元的面積。
○2提高計算機運算速度。
○3便於設計可降低成本提高可靠性。
○4有效支持高級語言程序。
16.組合邏輯與微程序設計主要特點與應用。
組合邏輯:特點:速度快、復雜不靈活。應用:適用於RISC機。
微程序:特點:引入程序設計與存儲邏輯技術,硬體軟化,把一條機器指令用一段微程序來實現,存放控制存儲器CM中。應用:系列機。
17.什麼是指令周期、機器周期、時鍾周期 三者的關系如何。
指令周期:完成一條指令的時間,由若干機器周期組成。
機器周期:完成摸個獨立操作,由若干時鍾周期組成。
時鍾周期:最基本時間單位,由主頻決定。
關系:時鍾周期是最基本時間單位,由若干時鍾周期組成機器周期,由若干機器周期組成指令周期。

D. 電路板上的Tⅴ一cⅴBS代表什麼



1. 計算機組成原理概論

計算機:數字電子計算機

組成:計算機硬體系統的邏輯實現

原理:不以具體機型為依託的,基本實現原理。

計算機組成原理:掌握如何實現的具體細節。

1.1 計算機系統簡介

計算機系統由兩大部分組成:硬體和軟體。軟體又包括系統軟體和應用軟體。

系統軟體可以管理整個計算機系統:

  • 語言處理程序(將高級語言轉換為機器可以懂得指令)
  • 操作系統
  • 服務性程序(比如數學庫、MPI服務程序進行並行之間的通信)
  • 資料庫管理系統
  • 網路軟體

應用軟體是按照任務需要編製成的程序。

可以簡單將軟體看作一個層次結構,硬體為軟體提供介面,系統軟體又為應用軟體形成介面,來完成不同的程序。

對於計算機的物理結構層次,我們這門課主要研究邏輯層和微電路層的具體實現方式。

計算機系統的指令層次如下圖所示

操作系統可以管理軟硬體的資源。

計算機系統結構定義了系統軟硬體的交界面,定義了哪些功能由軟體實現,哪些功能由硬體實現,定義為==程序員所見到的計算機系統的屬性概念性的結構與功能特性==。(指令系統,數據類型,定址技術,I/O機理),即程序員需要理解的東西。

計算機組成:實現計算機體系結構所體現的屬性,即具體指令的實現。

1.2 計算機的基本組成 1.2.1 馮諾依曼結構

上圖實線表示數據流動,虛線表示控制反饋。

  • 計算機結構由五大部件組成:存儲器、運算器、控制器、輸入設備、輸出設備
  • 以運算器為中心==程序存儲在存儲器中==
  • 指令和數據以同等地位保存在存儲器中,可以按照地址尋找。
  • 指令和數據由二進製表示,指令由操作碼和地址碼組成,操作碼指明指令要干什麼,地址碼指明操作數晌運的地址。

馮諾依曼結構以運算器為中心,容易形成瓶頸。我們可以使用存儲器作為中心來進行優化,但是還不夠。

1.2.2 現代計算機硬體框圖

指令和數據都是保存在存儲器中的。

1.2.3 存儲器的基本組成

MAR是存儲器地址寄存器,保存了存儲單元的地址和編號,長度猛清反映存儲單元的個數。

MDR是存儲器數據寄存器,保存了要存入存儲體的數據或剛從存儲體拿出來的數據,長度反映存儲字長。

利用MAR和MDR來將數據放入存儲器。

1.2.4 運算器的結構

ALU(算術邏輯單元),通常是一個組合電路,輸入撤銷,輸出也撤銷,因此需要加上寄存器保存參與運算的計算

數據寄存器X保存輸入參數,ACC為累加寄存器,保存結果,乘法可能使得數據位數保存不下,使用MQ寄存器保存低位。

上表中存放了不同運算中,運算器的工作過程,以乘法為例,操作過程如下:

  • 首先將被乘數取出來放到ACC中
  • 從指令中的乘數地址M中取出乘數,送入MQ中
  • 將被乘數送到X中
  • 將ACC清零
  • 完成乘法操作,結果由ACC和MQ保存

這些操作的過程順序是由控制器來控制完成的。

1.2.5 控制器的基本結構

控制器的功能是解釋指令(完成指令)、保證指令的按序執行

  • PC(程序計數器)寄存器保存了當前指令的地址,進行取指令,PC有計數功能。
  • IR(指令寄存器)存放當前要執行的指令,將操作碼送入CU進行分析。
  • CU(控制單元)發出控制信號,控制相對應的部件來執行指令。

下面以取數指令為例分析指令執行過程(取數送到ACC中)

  1. PC保存指令的地址,送到MAR進行定址
  2. MAR根據地址到存儲體中找到保存的指令
  3. MDR從存儲體中取出指令
  4. 送到IR中,IR存放要執行的指令
  5. IR將操作碼送入CU中進行分析
  6. 同時將地址碼送到MAR中找這個數的數據
  7. MAR根據地址到存儲體中找到要取的數
  8. MDR保存從存儲體中取出的數
  9. CU控制下,將宴知梁要取的數送到ACC中。

CU分析控制這些步驟的過程。

1.3 計算機硬體的主要技術指標

  • 機器字長:CPU一次能處理數據的位數,與CPU中寄存器位數有關。
  • 運算速度:主頻、核數以及每個核支持的線程數、CPI(執行一條指令所需的時鍾周期數)、MIPS(每秒執行百萬條指令)、FLOPS(每秒浮點運算次數)。
  • 存儲容量:主存容量(可使用存儲單元個數×存儲字長來表示存儲體容量,MAR * MDR)(也可使用位元組數來表示)、輔存容量(位元組數表示)。
2. 計算機的發展以及應用 2.1 計算機的發展史

第一台計算機,1946年ENIAC,十進制運算。

電子技術的發展與計算機體系結構技術的發展對計算機的發展產生了決定性作用。

根據硬體技術來對計算機進行劃分代碼

電子管→晶體管→大規模集成電路→大規模集成電路→超大規模集成電路

軟體技術的發展:機器語言(面向機器)、匯編語言(面向機器)、高級語言(面向問題)。

2.2 計算機的應用

  • 科學計算和數據處理
  • 工業控制和實時控制
  • 網路技術
  • 虛擬現實
  • 辦公自動化和管理信息系統
  • CAD/CAM/CIMS
  • 多媒體技術
  • 人工智慧
3. 系統匯流排 3.1 匯流排(bus)的基本概念

匯流排是連接各個部件的信息傳輸線,是各個部件共享的傳輸介質,是信號的公共傳輸線。

如果使用單匯流排結構(系統匯流排),那麼同時只能有一對部件進行信號傳輸,效率較低,使用雙匯流排結構效率會更高。

上面的結構,無法在I/O和主存之間進行直接的信息傳輸,必須要通過CPU。

3.2 匯流排的分類

  • 片內匯流排:晶元內部的匯流排。
  • 系統匯流排:計算機各部件之間的信息傳輸線。可分為:
    • 數據匯流排,雙向的,一般小於等於機器字長和存儲字長。
    • 地址匯流排,單向的,與存儲地址、I/O地址有關。
    • 控制匯流排,雙向(CPU發出存儲器讀寫指令,匯流排允許,中斷確認等;CPU接收中斷請求、匯流排請求)

  • 通信匯流排:計算機之間或計算機和其它設備之間的通信,並行通信匯流排和串列通信匯流排。
3.3 匯流排的特性和性能指標

匯流排印刷到電路板上(主板),其他設備插板插到電路板上。

匯流排的性能指標:

  • 匯流排寬度:數據線根數,同時可以傳輸多少位。
  • 標准傳輸率:每秒傳輸的最大位元組數MBps
  • 時鍾同步/不同步
  • 匯流排復用:地址線與數據線是否可以復用
  • 信號線數:地址線、數據線和控制線的總和
  • 匯流排控制方式
  • 其他指標:負載能力等

3.4 匯流排結構

增加了DMA(直接存儲器訪問)匯流排,外部設備直接訪問存儲器內存。高速設備直接通過DMA訪問主存。

CPU與cache通過局部匯流排進行相連,擴展匯流排將外部設備連接。

高速設備和低速設備分離,分別連接到高速匯流排和擴展匯流排上。

PCI高速匯流排來連接高速設備,PCI匯流排可以通過橋來進行擴展。

3.5 匯流排控制 3.5.1 匯流排判優控制

通過是否能對匯流排發出佔用請求,我們將設備分為主設備(主模塊)和從設備(從模塊)。主設備可以對匯流排有控制權,從設備響應從主設備發來的匯流排命令。

匯流排判優控制可以分為兩種:集中式和分布式。下面介紹幾種集中式的匯流排判優控制結構。

主設備通過BR申請匯流排的控制權,有設備在使用匯流排,則設置BS。匯流排控制部件通過BG來鏈式查詢這些介面是否提出了BR,遇到了BR則交出控制權。

因此,優先順序則為BG的查詢順序。這種結構對電路故障特別敏感,尤其是BG,如果BG後面出了問題,會導致後面的設備一直不會響應。

數據線用於數據的傳輸,地址線用於從設備的查找。通過設備地址線來查找某個設備是否發出匯流排請求。計數器的值通過設備地址線進行傳輸,來查找某個設備是否發出請求。可以自定義計數器的計數方式,來改變從哪個設備先查詢等。

為每個I/O介面增加了BR和BG,通過排隊器來進行優先順序排隊。這種方式使用的線數較多。

3.5.2 匯流排通信控制

為了解決通信雙方(主從設備)協調配合的問題。

匯流排的傳輸周期(完成一次主從設備完整可靠的傳輸所需要的時間):

  • 申請分配階段:主設備申請,匯流排決定
  • 定址階段:主設備向向從設備給出地址和命令
  • 傳數階段:主設備和從設備進行交換數據
  • 結束階段:主從設備撤銷有關信息
  • T1,主設備給出地址信號
  • T2,給出從設備的讀命令信號
  • T3,從設備給出數據,輸出到匯流排,完成數據交換
  • T4,撤銷地址信號,結束周期

強制同步,如果設備之間速度不同,快的設備需要等慢的設備。

不互鎖:不管從設備是否接收到請求信號,過段時間主設備都會撤銷請求。不管主設備是否接收到應答信號,從設備多段時間都會撤銷應答。

半互鎖和全互鎖針對上面進行改進。

增加等待響應信號,當wait為低電平,則等待一個T。

使用分離式通信來將匯流排空閑的時間也充分利用起來。

4. 存儲器 4.1 概述

按照存取方式對存儲器進行分類:

  • 存取時間與物理地址無關(隨機訪問):隨機存儲器、只讀存儲器。
  • 存取時間與物理地址有關(串列訪問):順序存取存儲器(磁帶)、直接存取存儲器(磁碟)。

按照在計算機中的作用分類:

存儲器的層次結構:

  • 寄存器包括體系結構寄存器和非體系結構寄存器。
  • 一部分緩存放在了CPU之中。
  • 緩存——主存層次,使用硬體方法連接到一個整體(對程序員透明,即不需要了解),速度較快,解決CPU和主存之間速度差距較大的問題,緩存即為cache,CPU可以直接從緩存調用數據,cache和主存也進行數據交換。使用主存儲器的實地址和物理地址。
  • 主存——輔存層次,使用軟硬體結合方式連接,容量較大,解決容量不足問題。這個層次稱為虛擬存儲器,使用虛地址和邏輯地址。
4.2 主存儲器 4.2.1 概述

主存的基本組成:

主存與CPU之間的聯系:

主存中存儲單元地址的分配:

  • 每個位元組(8位)一個地址,如果一個存儲單元存儲32位,即四個位元組為一個字,可以將高位位元組/低位位元組,放在小的地址作為字地址。

主存的技術指標:

4.2.2 主存儲器半導體晶元簡介

基本結構:

  • 地址線(單向)給出地址,經過解碼驅動電路來選擇指定的存儲單元,完成數據的讀寫操作(數據線雙向)。
  • 片選線是晶元選擇信號,給出這次選擇的地址是不是這個晶元的地址。
  • 讀寫控制線,控制操作允許讀還是寫。
  • 根據地址線和數據線條數,可以計算出晶元容量。如果地址線10條,數據線4條,那麼晶元容量則為1K×4位。即1K個地址,每個地址數據4位。

解碼驅動方式:

第一種方法是線選法

  • 使用地址解碼器,給定輸入,輸出只有一根線(字線)是有效的,圖中一根線中是8個晶元組合成一個字,那麼只有一根線的這一組晶元有效。
  • 這種方法,每個字的存儲單元都需要一根線,當容量較大的時候,很麻煩。

第二種方法是重合法

  • 將所有存儲單元布置成二維的陣列,使用兩個地址解碼器XY,一組(X,Y)對應一個存儲單元。
  • 這樣會大大降低所需要的線數量。
4.2.3 隨機存取存儲器(RAM) 4.2.3.1 靜態RAM(SRAM)

SRAM的基本電路:

  • 使用觸發器T1-T4來存儲0/1,T5、T6控制存儲單元讀寫,實際中會有許多虛線框進行堆疊,T7、T8列開關,一列共用。同樣,可以橫向進行堆疊,那麼行地址選擇的這一行,所有存儲單元的T5和T6都會導通,但是只有對應列也有效的那個存儲單元才進行讀寫。
  • 通過行選和列選,選中進行讀寫操作的存儲單元。

SRAM晶元舉例(Intel 2114):

  • WE讀寫控制信號,CS片選信號,A0-A9為地址線,4個I/O數據線。
  • 10根地址線,使用重合法,6線為行地址,4線為列地址,每個列信號控制四列,這樣一次就可以選擇4位,將這4位看做是一個存儲單元。就完成了1K×4位的選擇。
4.2.3.2 動態RAM(DRAM)

DRAM的基本電路:

  • 利用電容,如果電容保存了電荷,則認為保存是1,沒有電,則認為是0。
  • 保存在Cg上,T1、T2、T3是控制管。
  • 讀出信息與原信息相反,需要加非門。
  • 寫入信息與輸入信息相同。

還有一種結構是單管動態RAM:

  • 讀出數據時,數據線有電,則為1。
  • 寫入時,Cs充電為1,放電為0。

三管DRAM晶元舉例(Intel 1103):

  • 因為電容會漏電,刷新放大器會定時對存儲的信息進行刷新。

單管DRAM晶元舉例(Intel 4116 16k×1位):

  • 只有7根地址線,通過兩次,來接受行地址和列地址,存放到對應的緩存器中。
  • 通過行時鍾、列時鍾、寫時鍾來控制讀寫。

動態RAM的刷新:

  • 每一次刷新只與行地址有關,與列地址沒有關系,每次刷新一行。
  • 集中刷新(在某段時間集中刷新所有的電容),這段時間DRAM是不可用的,稱為死區。
  • 分散刷新(每次讀寫操作之後,將某一行刷新),相當於將原來的讀寫操作的時間變長,把刷新操作放在讀寫操作中,這樣就不存在死區。分散刷新比較頻繁,有點過度刷新了。
  • 非同步刷新(將上面兩種結合),則每隔一段時間對某一行進行刷新,即多個讀寫操作加一個刷新操作。
4.2.3.3 兩種RAM的比較
  • DRAM的集成度較高,每個存儲單元復雜度較低。
  • SRAM的速度較快,一般用作緩存。
4.2.4 只讀存儲器(ROM)

ROM中一般保存系統信息或系統程序。早期是只讀的,不可以寫,經過多年的發展和改進,現在的ROM可以自己多次讀寫。

  • 掩模ROM(MROM):只讀,不能修改。行列選擇線交叉處有MOS管則為1,沒有則為0。
  • PROM(一次性編程):熔絲斷了,則為0,否則為1。可以一次性的破壞性編程。
  • EPROM(可以多次編程):N型溝道浮動柵MOS電路。S與D導通為1,不導通為0。
  • EEPROM(多次性編程):電可擦寫、局部擦寫、全部擦寫。
  • Flash Memory(快閃記憶體型存儲器):比EEPROM快,具有RAM的一些功能。
4.2.5 CPU與存儲器的連接

存儲器容量擴展可以通過位擴展(增加存儲字長)、字擴展(增加存儲字的數量)、同時擴展。

CPU與存儲器的連接:

  • 地址線的連接:低位作為地址,高位作為片選信號
  • 數據線的連接
  • 讀寫命令控制線的連接
  • 片選線的連接:MREQ信號(表示該信號是連接存儲器還是I/O介面)一定要連接到片選信號中,使得只有這個信號有效,才是CPU和內存連接工作。
  • 合理選擇存儲晶元(ROM/RAM,晶元的性能參數)
  • 其他:時序、負載
4.2.6 存儲器的校驗

校驗,檢測合法代碼,對非法代碼進行糾錯。

編碼的糾錯、檢錯能力與編碼的最小距離有關。最小距離為任意兩組合法代碼之間二進制位數的最小差異。$$ L-1 = D + C (D≥C) $$L為最小距離,D為檢測錯誤的位數,C為糾正錯誤的位數。

漢明碼是具有一位糾錯能力的編碼,漢明碼都採用了奇偶校驗和分組校驗(分組的奇偶校驗,分組之間是有重疊的,校驗位放在2 ^ k處,k=0,1,2,3...)。

漢明碼的分組,將代碼中每一位進行分組(1,2,3,4,5,6,7序號),將每一位的序號進行分組,序號的二進制最右邊一位為1的,第一組,右邊第二位為1的,第二組......

==最後的校驗結果,哪一位是1,那麼這位對應的那組中的那個序號的代碼位出錯。如果出現了多個1,那麼就是這幾個組中公共的那位出錯了。==

4.2.7 提高主存的訪問以及存儲速度

CPU速度提升很快,但是存儲器的速度提升較慢。

我們可以採用高速器件,採用層次結構(Cache-主存),==調整主存結構。==

  • 單體多字系統:使得存儲器的存儲字長大於CPU的字長(比如是CPU字長的4倍),這樣一次讀取就可以讀取多個指令。但是這樣會導致存儲器結構復雜, 而且,如果需要執行的指令不是連續存放的,會更麻煩。
  • 多體並行方式:
  • 高位交叉:對各個存儲體進行編號,存儲體內部自行編號,每個存儲體獨立,有自己的控制編號。這樣CPU給出的地址是體號+體內地址,各個存儲體可以並行處理。(類似存儲器容量的擴展)如果程序指令存方式順序的,實際上還是在一個存儲體中,並無法提升存儲體速度。
  • 低位交叉:體內地址+體號,使用橫向的編碼,比如存儲體為M0-M3,那麼第一個地址為M0的第一個位置,第二個地址為M1的第一個位置......這樣M0中所有地址後兩位都為00,M1都為01,M2都為10,M3都為11。後兩位給出了存儲體的選擇地址。這樣如果程序指令順序存放的地址,實際上是不同存儲體並行處理,這樣就提升了效率,流水操作。
4.3 高速緩沖存儲器(Cache) 4.3.1 概述

CPU與主存(DRAM)之間存在速度差異,為了避免CPU「空等」的現象,使用cache。

程序訪問的局部性原理

  • 時間的局部性:當前正在使用的指令或數據,會在不久的將來還會使用到,那麼應該把這種數據或指令放在緩存中。
  • 空間的局部性:當前正在使用的指令或數據,不久的將來,相鄰的指令或數據會使用到,那麼應該把當前和相鄰的指令和數據放到緩存中。

cache的工作原理:

把主存和cache分成大小相等的塊,每個塊大小相等,主存的塊數量遠遠大於cache的塊數量。==主存與cache之間的信息傳送是按塊傳送,塊內地址不變,cache的每個塊的標記,標記了這個塊是主存的哪個塊。==

主存塊調入了緩存(即cache標記了),稱為命中,CPU可直接在緩存中取得數據;如果沒有調入,稱為未命中。

我們希望,每次執行程序,都盡可能的在cache中提取數據,這樣速度會很快。CPU欲訪問的信息在Cache中的比率稱為命中率,命中率與Cache的容量和塊長有關。一般每塊取4-8個字,一般為一個存取周期內從主存調出的信息長度。

cache與主存的訪問效率:

這裡面平均訪問時間為每次訪問的平均時間(可能從cache,可能從主存)。

4.3.2 cache的基本結構與讀寫操作

cache的基本結構:

讀寫操作:

  • 前者時刻保持了cache和主存的一致,後者只寫cache中,當cache中退出時才寫回主存。

cache的改進:

  • 增加cache的級數:片內cache,片外cache。
  • 分立緩存:指令cache,數據cache。
4.3.3 cache-主存的地址映射

即主存的任意一塊載入到cache中的哪塊。

直接映射:

即主存中任意一個塊,只能映射到指定的一個cache塊中,cache塊可以是一對多的。相當於將主存分區,每個區內的這些塊,對應於cache的所有塊;這樣在cache的標記中,有t位的標記,表示當前該cache塊存放的是主存哪個區的對應位置信息。

這種方法cache塊的利用率比較低,且可能會沖突。

全相聯映射:

主存中任意一個塊,可以被放入cache中的任意一個塊中。

這樣的話,雖然塊的利用率高了,但是因為塊可以映射到任意一個位置,如果查詢某個主存塊是否已經放入cache,需要比較所有的cache標記,速度較慢。

==組相聯映射==

與直接映射相似,==將cache分組,每個組可以有多個塊;將主存分區,每個區的大小為cache的組數==。這樣每個區的第0塊,可以放入cache第0組的任何一個位置,因為每個組有多個塊,解決了直接映射的沖突問題;想查詢某個主存的塊是否放入了cache,只需要在對應的組進行查詢即可,解決了全相聯映射的問題。

4.3.4 替換演算法

如果內存塊滿了,如何替換,將誰彈出。

先進先出(FIFO)演算法

近期最少使用(LRU)演算法

4.4 輔助存儲器

輔助存儲器的主要作用是保存程序、文檔和影音資料,不能直接與CPU交換信息,需要調入主存才能進行讀寫。

包括磁碟存儲器和光碟存儲器等。

熱點內容
c預編譯日期 發布:2024-09-22 04:21:26 瀏覽:675
webservicepython 發布:2024-09-22 04:12:00 瀏覽:405
動捕伺服器電腦 發布:2024-09-22 04:04:45 瀏覽:118
c語言運行時間 發布:2024-09-22 04:03:50 瀏覽:321
phpxss攻擊 發布:2024-09-22 03:46:17 瀏覽:734
電腦怎麼通過網線訪問伺服器網線 發布:2024-09-22 03:45:35 瀏覽:746
如何查已有網路的密碼 發布:2024-09-22 03:31:30 瀏覽:893
驅動forlinux 發布:2024-09-22 03:15:50 瀏覽:789
凌派車有哪些配置 發布:2024-09-22 03:15:00 瀏覽:749
壓縮文件為什麼打不開 發布:2024-09-22 03:09:13 瀏覽:646