第5講程序與處理器_第1頁(yè)
第5講程序與處理器_第2頁(yè)
第5講程序與處理器_第3頁(yè)
第5講程序與處理器_第4頁(yè)
第5講程序與處理器_第5頁(yè)
已閱讀5頁(yè),還剩87頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

清華大學(xué)電子工程系

電子信息科學(xué)與技術(shù)導(dǎo)引

程序與處理器馬洪兵2014年5月12日電子信息科學(xué)與技術(shù)知識(shí)體系2大綱歷史:計(jì)算與計(jì)算機(jī)1指令集體系結(jié)構(gòu)2程序和程序設(shè)計(jì)語(yǔ)言3處理器的工作原理4更快更強(qiáng)53歷史:計(jì)算與計(jì)算機(jī)以古為鏡,可以知興替——李世民你對(duì)以往知道的愈多,對(duì)未來(lái)就看得愈遠(yuǎn)——溫斯頓丘吉爾4什么是計(jì)算將3乘以8(3x8)就是一種簡(jiǎn)單的計(jì)算。數(shù)學(xué)中的計(jì)算有加,減,乘,除,乘方,開方等廣義的計(jì)算包括邏輯推理,文法的產(chǎn)生式,函數(shù),組合數(shù)學(xué)的置換,變量代換,圖形圖像的變換,數(shù)理統(tǒng)計(jì),人工智能解空間的遍歷,問(wèn)題求解,圖論的路徑問(wèn)題,網(wǎng)絡(luò)安全,代數(shù)系統(tǒng)理論等5什么是計(jì)算工程中數(shù)字系統(tǒng)設(shè)計(jì)(例如邏輯代數(shù)),軟件程序設(shè)計(jì)(文法),機(jī)器人設(shè)計(jì),建筑設(shè)計(jì)等設(shè)計(jì)問(wèn)題也可以稱為計(jì)算經(jīng)濟(jì)生活中商品價(jià)格的評(píng)估也是一種復(fù)雜的計(jì)算從投票意向評(píng)估出的選舉結(jié)果(民意調(diào)查)也包含了計(jì)算,但是提供的計(jì)算結(jié)果是“各種可能性的范圍”而不是單一的正確答案計(jì)算是一種將單一或多個(gè)輸入值轉(zhuǎn)換為單一或多個(gè)結(jié)果的一種過(guò)程6什么是計(jì)算計(jì)算可以用簡(jiǎn)單的模型來(lái)表示例如c=a+b,輸入數(shù)據(jù)是a、b,輸出數(shù)據(jù)是c,運(yùn)算器執(zhí)行加法運(yùn)算器輸入數(shù)據(jù)輸出數(shù)據(jù)7人類早期的計(jì)算工具計(jì)算程序儲(chǔ)存在人的大腦中8BlaisePascal(1623-1662)加法機(jī)(1642)由一系列齒輪組成的純機(jī)械設(shè)備。采用十進(jìn)制運(yùn)算,能完成8位十進(jìn)制數(shù)的加法和減法運(yùn)算計(jì)算程序體現(xiàn)在設(shè)備的機(jī)械結(jié)構(gòu)中意義:揭示出用機(jī)器代替人類進(jìn)行計(jì)算,完全可以做到人類早期的計(jì)算工具9進(jìn)位問(wèn)題:采用了一種小爪子式的棘輪裝置,當(dāng)個(gè)位齒輪朝9轉(zhuǎn)動(dòng)時(shí),棘爪便逐漸升高,一旦齒輪轉(zhuǎn)到0,棘爪就跌落下來(lái),推動(dòng)十位數(shù)的齒輪前進(jìn)一檔Pascal加法機(jī)的工作原理人類早期的計(jì)算工具10人類早期的計(jì)算工具Pascal加法機(jī)發(fā)明后的300年間,雖然出現(xiàn)了Leibniz計(jì)算器、Babbage分析機(jī)等重要的機(jī)械計(jì)算機(jī),但是發(fā)展速度十分緩慢11由四部分組成:存儲(chǔ)部分、計(jì)算部分、輸入部分、輸出部分存儲(chǔ)部分由1000個(gè)字組成,每個(gè)字為50位十進(jìn)制數(shù);計(jì)算部分從存儲(chǔ)部分接收操作數(shù),進(jìn)行加減乘除運(yùn)算,并將結(jié)果存回到存儲(chǔ)器;輸入部分從穿孔卡片讀取指令;輸出部分將計(jì)算結(jié)果穿孔在卡片上分析機(jī)(AnalyticalEngine)(1837)

——?dú)v史上的第一臺(tái)通用計(jì)算機(jī)分析機(jī)12分析機(jī)的設(shè)計(jì)思想與現(xiàn)代CPU的存儲(chǔ)程序原理十分相似,而且程序可以根據(jù)條件進(jìn)行跳轉(zhuǎn),能在幾秒內(nèi)做出一般的加法,幾分鐘內(nèi)做出乘、除法。

不幸的是,分析機(jī)的硬件問(wèn)題一直沒(méi)有解決,原因是19世紀(jì)的技術(shù)條件無(wú)法制造出分析機(jī)所需要的成千上萬(wàn)個(gè)高精度的齒輪CharlesBabbageBabbage的思想遠(yuǎn)遠(yuǎn)超過(guò)了他的時(shí)代分析機(jī)13作為通用計(jì)算機(jī),分析機(jī)在運(yùn)行時(shí)需要軟件,Ada成為人類歷史上的第一名程序員現(xiàn)代程序設(shè)計(jì)語(yǔ)言Ada就是為紀(jì)念她而命名的軟件AdaLovelace(1815-1852)

14ENIAC1946年,ENIAC在美國(guó)賓夕法尼亞大學(xué)研制成功,這是世界上第一臺(tái)現(xiàn)代意義的通用電子計(jì)算機(jī)15ENIAC裝有18,000個(gè)電子管,總重量達(dá)30噸,功耗140kw有20個(gè)寄存器,每個(gè)能存放10位的十進(jìn)制數(shù),運(yùn)算速度為每秒5000次加法通過(guò)設(shè)置分布在各處的6000個(gè)開關(guān)和眾多的插頭與插座來(lái)編程16ENIAC為ENIAC編寫的“程序”17電子計(jì)算機(jī)怎么計(jì)算?作為計(jì)算基礎(chǔ)的二進(jìn)制加法18更復(fù)雜的計(jì)算假如我們要計(jì)算a+b×c:ENIAC就是這么做的加法器乘法器ba+b×ccab×c19如果我們要算另外一道題?a

b-c×d我們就必須重新構(gòu)造這臺(tái)計(jì)算機(jī)……怎么辦?20大綱歷史:計(jì)算與計(jì)算機(jī)1指令集體系結(jié)構(gòu)2程序和程序設(shè)計(jì)語(yǔ)言3處理器的工作原理4更快更強(qiáng)521通用計(jì)算機(jī)模型人類天生具備大局觀,最擅長(zhǎng)從大到小,由表及里的分析問(wèn)題能夠區(qū)分各種行業(yè);深入行業(yè)后就以內(nèi)行方式看門道;最終發(fā)現(xiàn)所有的工作都是由最簡(jiǎn)單的步驟組成,所有的物品都是由最簡(jiǎn)單的部件組成計(jì)算也是如此——任何復(fù)雜的計(jì)算都是由簡(jiǎn)單的基本計(jì)算組合而成的22通用計(jì)算機(jī)模型我們換一種方法來(lái)計(jì)算a+b×c:第一步:Temp=b×c第二步:Result=a+temp于是我們就可以:當(dāng)我們需要算另外一道題時(shí),只要將這個(gè)過(guò)程進(jìn)行修改即可abc乘法器temp第一步atemp加法器result第二步23現(xiàn)代計(jì)算機(jī)組成主機(jī)系統(tǒng)CPU存儲(chǔ)器輸出

設(shè)備

輸入

設(shè)備

運(yùn)算器控制器數(shù)據(jù)通路

控制信號(hào)

24運(yùn)算器——算術(shù)邏輯單元實(shí)現(xiàn)基本計(jì)算的電路(如加法器、乘法器等)可以組合在一起,稱為算術(shù)邏輯單元ALU25存儲(chǔ)器復(fù)雜的計(jì)算需要大量的輸入數(shù)據(jù)和輸出數(shù)據(jù),因此我們需要一個(gè)存儲(chǔ)器將其存起來(lái)26控制器除了存儲(chǔ)器和運(yùn)算器,還需要一個(gè)控制器控制器控制著將存儲(chǔ)器中的數(shù)據(jù)送到運(yùn)算器(ALU)中進(jìn)行計(jì)算,然后將結(jié)果存回到存儲(chǔ)器中指示輸入數(shù)據(jù)存在何處,做什么運(yùn)算,結(jié)果存到何處的控制命令稱為指令27控制器組合邏輯電路與時(shí)序電路分步進(jìn)行的程序需要時(shí)序邏輯實(shí)現(xiàn)機(jī)制寄存器堆算術(shù)邏輯部件AB控制器程序28輸入設(shè)備&輸出設(shè)備數(shù)據(jù)要從外部輸入進(jìn)來(lái),結(jié)果也要輸出出去,因此還需要輸入設(shè)備和輸出設(shè)備29馮·諾依曼存儲(chǔ)程序原理馮·諾伊曼發(fā)現(xiàn)ENIAC存在的主要問(wèn)題:用大量的開關(guān)和插頭來(lái)編程用10個(gè)電子管表示一位十進(jìn)制數(shù)改進(jìn)措施:針對(duì)用10個(gè)電子管表示一位十進(jìn)制數(shù),提出應(yīng)該用二進(jìn)制來(lái)替代針對(duì)ENIAC用開關(guān)和插頭來(lái)編程,提出了程序可以以編碼形式和數(shù)據(jù)一起在內(nèi)存中存儲(chǔ)馮·諾伊曼的工作成為如今廣泛采用用的馮·諾伊曼體系結(jié)構(gòu)的基礎(chǔ)30馮·諾伊曼機(jī)中程序的執(zhí)行原理把程序(指令序列)存儲(chǔ)在存儲(chǔ)器內(nèi),使計(jì)算機(jī)能像快速存取數(shù)據(jù)一樣地快速存取組成程序的指令,存放位置由地址指定,地址碼也是二進(jìn)制形式控制器根據(jù)存放在存儲(chǔ)器中的程序工作,并由一個(gè)程序計(jì)數(shù)器(PC)控制指令的讀取??刂破骶哂信袛嗄芰?,能夠根據(jù)計(jì)算結(jié)果選擇不同的動(dòng)作流程給出程序中第一條指令的地址,控制器就可依據(jù)存儲(chǔ)程序中的指令順序周而復(fù)始地取指令、譯碼、執(zhí)行,直到完成全部指令操作為止

取指令,PC值加1停機(jī)?譯碼結(jié)束YN執(zhí)行31指令集就是用來(lái)控制計(jì)算機(jī)系統(tǒng)的一套命令的集合,指令集是有限集合指令集是有限集合指令集中的每條指令都可以用硬件實(shí)現(xiàn)每一種處理器在設(shè)計(jì)時(shí)就規(guī)定了一系列與硬件電路相配合的指令系統(tǒng)指令集的先進(jìn)與否,也關(guān)系到處理器的性能發(fā)揮,它也是處理器性能體現(xiàn)的一個(gè)重要標(biāo)志指令集32與其它電路系統(tǒng)不同的是,計(jì)算機(jī)本質(zhì)上是指令處理器,指令集體系結(jié)構(gòu)(ISA)是計(jì)算機(jī)的靈魂,是計(jì)算機(jī)硬件和軟件的接口指令集體系結(jié)構(gòu)33ISA(InstructionSetArchitecture)是計(jì)算機(jī)硬件與底層軟件之間的接口,它是程序員為使一個(gè)二進(jìn)制機(jī)器語(yǔ)言程序正確運(yùn)行所需要了解的屬性指令集體系結(jié)構(gòu)34我們需要哪些指令x(n)為輸入信號(hào),

y(n)為輸入信號(hào),coefi為濾波器系數(shù)處理器需要有加法、乘法指令——算術(shù)邏輯運(yùn)算指令算術(shù)邏輯運(yùn)算指令還包括邏輯運(yùn)算、移位運(yùn)算等35我們需要哪些指令除了進(jìn)行計(jì)算,處理器還要能實(shí)現(xiàn)循環(huán),如上述計(jì)算循環(huán)了n次跳轉(zhuǎn)指令可以實(shí)現(xiàn)循環(huán)循環(huán)需要在一定的條件跳出,否則就成了死循環(huán),條件分支指令可以實(shí)現(xiàn)該功能跳轉(zhuǎn)、分支以及子程序調(diào)用與返回等指令統(tǒng)稱流程控制指令起點(diǎn)終點(diǎn)跳轉(zhuǎn)回去順序執(zhí)行36我們需要哪些指令現(xiàn)代RISC處理器要求算術(shù)邏輯運(yùn)算的操作數(shù)只能在寄存器中,因此運(yùn)算前數(shù)據(jù)要由存儲(chǔ)器裝入(load)寄存器中,運(yùn)算完成后,再由寄存器存儲(chǔ)(store)到存儲(chǔ)器中實(shí)現(xiàn)存儲(chǔ)器和寄存器間數(shù)據(jù)交換的指令稱為數(shù)據(jù)傳送指令37我們需要哪些指令有了算術(shù)邏輯運(yùn)算指令、數(shù)據(jù)傳送指令、流程控制指令這3類指令,處理器就能夠完成各種復(fù)雜的計(jì)算38指令格式指令以編碼的形式如同數(shù)據(jù)一樣存放在存儲(chǔ)器中。一條指令一般由操作碼和操作數(shù)地址碼兩部分組成這些操作碼和地址碼被控制器譯碼,形成控制系統(tǒng)各部分的控制信號(hào)操作碼操作數(shù)地址碼39指令集的例子MIPS指令集(三種指令)例子addi $s1,$s0,1sw $s1,8000($s0)40指令集體系結(jié)構(gòu)的市場(chǎng)劃分雖然生產(chǎn)處理器的廠家很多,但世上卻只有為數(shù)不多的指令集體系結(jié)構(gòu)ARMX86PowerPCMIPS41ISA的地位ISA背后是一個(gè)生態(tài)鏈,而不是一兩家公司發(fā)明一套新的ISA并不難,難的是你要讓別人接受你發(fā)明的ISA此路是我開,此樹是我栽,要想打此過(guò),留下買路財(cái)處理器程序ISA42大綱歷史:計(jì)算與計(jì)算機(jī)1指令集體系結(jié)構(gòu)2程序和程序設(shè)計(jì)語(yǔ)言3處理器的工作原理4更快更強(qiáng)543什么是程序?按時(shí)間先后或依次安排的工作步驟。如工作程序;醫(yī)療程序。

——《辭?!肥虑檫M(jìn)行的先后次序。如會(huì)議程序;工作程序。

——《現(xiàn)代漢語(yǔ)詞典》計(jì)算機(jī)程序或者軟件程序(通常簡(jiǎn)稱程序)是指一組指示計(jì)算機(jī)或其他具有信息處理能力裝置每一步動(dòng)作的指令,通常用某種程序設(shè)計(jì)語(yǔ)言編寫,運(yùn)行于某種目標(biāo)體系結(jié)構(gòu)上。

——維基百科44程序的重要性做任何事情,首先強(qiáng)調(diào)的就是程序從管理的角度,程序是能夠發(fā)揮出協(xié)調(diào)高效作用的工具。應(yīng)該充分重視程序的作用,不斷地將我們的工作從無(wú)序整改到有序45什么是計(jì)算機(jī)程序?計(jì)算機(jī)程序就是為實(shí)現(xiàn)特定目標(biāo)或解決特定問(wèn)題而用計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言編寫的命令序列的集合程序是由命令序列組成的,它告訴計(jì)算機(jī)如何完成一個(gè)具體的任務(wù)由于現(xiàn)在的計(jì)算機(jī)還不能理解人類的自然語(yǔ)言,所以還不能用自然語(yǔ)言編寫計(jì)算機(jī)程序46程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言,就是一組用來(lái)定義計(jì)算機(jī)程序的語(yǔ)法規(guī)則程序設(shè)計(jì)語(yǔ)言能夠讓程序員準(zhǔn)確地定義計(jì)算機(jī)所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動(dòng)在過(guò)去的幾十年間,發(fā)明了大量的程序設(shè)計(jì)語(yǔ)言:C、C++、BASIC、FORTRAN、COBAL、Matlab、……47程序設(shè)計(jì)語(yǔ)言為了解決機(jī)器語(yǔ)言編寫程序的困難,用助記符來(lái)表示指令計(jì)算機(jī)的全部二進(jìn)制指令組成控制計(jì)算機(jī)運(yùn)行的語(yǔ)言更進(jìn)一步符合人的思維方式和表達(dá)方式的編程語(yǔ)言機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言48機(jī)器語(yǔ)言MIPS機(jī)器語(yǔ)言編寫的Hello,World.天啊,要這么編程序……00111100000000010001000000000001001101000010010000000000000000000010010000000010000000000000010000000000000000000000000000001100001001000000001000000000000010100000000000000000000000000000110049匯編語(yǔ)言用有意義的助記符代替難以理解和記憶的指令字 .textmain: la $a0,str li $v0,4 syscall #printstring li $v0,10 syscall #exit .data .align2str: .asciiz"Helloworld."50匯編語(yǔ)言匯編語(yǔ)言的助記符形式的指令必須翻譯成機(jī)器語(yǔ)言二進(jìn)制指令才能在計(jì)算機(jī)上執(zhí)行,實(shí)現(xiàn)這種翻譯的程序稱為匯編器(assembler)匯編語(yǔ)言源程序機(jī)器語(yǔ)言程序匯編器001000000000100000000000000000010010000100001000000000000000001010101100000010000001111101000000addi$s1,$0,1addi$s1,$s1,2sw$s1,8000($0)51匯編語(yǔ)言匯編語(yǔ)言與機(jī)器語(yǔ)言是一一對(duì)應(yīng)的,所以匯編語(yǔ)言仍然太繁瑣,開發(fā)效率仍然十分低下,程序的編寫太困難,所以……52高級(jí)語(yǔ)言更加符合人的習(xí)慣,與機(jī)器結(jié)構(gòu)無(wú)關(guān)#include<stdio.h>intmain(intargc,char*argv[]){printf(“Hello,world!\n”);return0;}packagetest.hello;classHello{publicstaticvoidmain(String[]args){System.out.println(“Hello,world!”);}}usingnamespacestd;intmain(){cout<<"Hello,world!"<<endl;return0;}print"Hello,world!"53高級(jí)語(yǔ)言不同的高級(jí)語(yǔ)言具有不同的語(yǔ)法和風(fēng)格,適合于不同的應(yīng)用領(lǐng)域高級(jí)語(yǔ)言同樣不能被計(jì)算機(jī)所直接執(zhí)行,必須通過(guò)一個(gè)中間過(guò)程,可行的中間過(guò)程有編譯和解釋兩種編譯(Compile):一次翻譯,重復(fù)運(yùn)行,效率更高解釋(Interpret):隨執(zhí)行隨翻譯,更靈活54大綱歷史:計(jì)算與計(jì)算機(jī)1指令集體系結(jié)構(gòu)2程序和程序設(shè)計(jì)語(yǔ)言3處理器的工作原理4更快更強(qiáng)555處理器處理器是計(jì)算機(jī)的核心,它執(zhí)行算術(shù)運(yùn)算、邏輯判斷、控制存儲(chǔ)器訪問(wèn)、以及激活I(lǐng)/O設(shè)備等操作處理器包含兩個(gè)主要的組成部分:數(shù)據(jù)通路控制器56數(shù)據(jù)通路數(shù)據(jù)通路有兩種設(shè)計(jì)方法:專用通路、總線專用通路是源部件和目標(biāo)部件之間傳送數(shù)據(jù)的一組專用信號(hào)線總線(bus)是多個(gè)源部件和多個(gè)目標(biāo)部件之間按分時(shí)復(fù)用的方式傳送數(shù)據(jù)的一組公用信號(hào)線57控制器提供控制信號(hào),指揮和控制計(jì)算機(jī)所有部件協(xié)調(diào)工作,從而使計(jì)算機(jī)能夠按照程序規(guī)定的指令執(zhí)行次序,自動(dòng)地連續(xù)執(zhí)行指令58處理器32位通用寄存器R0R31PCACIRMARMDRABCALU數(shù)據(jù)通路內(nèi)存控制器控制信號(hào)控制單元輸入控制器與數(shù)據(jù)通路的關(guān)系59計(jì)算機(jī)怎樣執(zhí)行程序問(wèn)題:計(jì)算1+2=?C程序60單總線MIPS計(jì)算機(jī)61計(jì)算機(jī)怎樣執(zhí)行程序addi$1,$0,1取指:T0

CPU內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器(MAR)程序計(jì)數(shù)器(PC)32位通用寄存器R0R31ALUAC指令寄存器(IR)指令譯碼器(ID)控制信號(hào)發(fā)生器控制信號(hào)……地址譯碼器內(nèi)存000000040008...讀控制寫控制0x200100010x202100020xac011f40CPU+400000000控制器62計(jì)算機(jī)怎樣執(zhí)行程序addi$1,$0,1取指:T1CPU內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器(MAR)程序計(jì)數(shù)器(PC)32位通用寄存器R0R31ALUAC地址譯碼器內(nèi)存000000040008...讀控制寫控制CPU+4000400000x200100010x202100020xac011f400x20010001指令寄存器(IR)指令譯碼器(ID)控制信號(hào)發(fā)生器控制信號(hào)……控制器63計(jì)算機(jī)怎樣執(zhí)行程序addi$1,$0,1取指:T2CPU內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器(MAR)程序計(jì)數(shù)器(PC)32位通用寄存器R0R31ALUAC地址譯碼器內(nèi)存000000040008...讀控制寫控制CPU+4000400000x200100010x202100020xac011f400x20010001指令寄存器(IR)指令譯碼器(ID)控制信號(hào)發(fā)生器控制信號(hào)……控制器0x2001000164計(jì)算機(jī)怎樣執(zhí)行程序addi$1,$0,1譯碼:T3CPU內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器(MAR)程序計(jì)數(shù)器(PC)32位通用寄存器R0R31ALUAC地址譯碼器內(nèi)存000000040008...讀控制寫控制CPU+4000400000x200100010x202100020xac011f400x20010001指令寄存器(IR)指令譯碼器(ID)控制信號(hào)發(fā)生器控制信號(hào)……控制器0x2001000165計(jì)算機(jī)怎樣執(zhí)行程序addi$1,$0,1執(zhí)行:T4CPU內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器(MAR)程序計(jì)數(shù)器(PC)32位通用寄存器R0R31ALUAC地址譯碼器內(nèi)存000000040008...讀控制寫控制CPU+4000400000x200100010x202100020xac011f400x2001000100指令寄存器(IR)指令譯碼器(ID)控制信號(hào)發(fā)生器控制信號(hào)……控制器0x2001000166計(jì)算機(jī)怎樣執(zhí)行程序addi$1,$0,1執(zhí)行:T5CPU內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器(MAR)程序計(jì)數(shù)器(PC)32位通用寄存器R0R31ALUAC地址譯碼器內(nèi)存000000040008...讀控制寫控制CPU+4000400000x200100010x202100020xac011f400x20010001011指令寄存器(IR)指令譯碼器(ID)控制信號(hào)發(fā)生器控制信號(hào)……控制器0x2001000167計(jì)算機(jī)怎樣執(zhí)行程序addi$1,$0,1執(zhí)行:T6CPU內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器(MAR)程序計(jì)數(shù)器(PC)32位通用寄存器R0R31ALUAC地址譯碼器內(nèi)存000000040008...讀控制寫控制CPU+4000400000x200100010x202100020xac011f400x20010001011指令寄存器(IR)指令譯碼器(ID)控制信號(hào)發(fā)生器控制信號(hào)……控制器0x2001000168處理器處理器是一個(gè)復(fù)雜的數(shù)字系統(tǒng):ALU——實(shí)現(xiàn)算術(shù)和邏輯運(yùn)算數(shù)據(jù)通路——由處理器內(nèi)部的各種連線和各種輔助性質(zhì)的寄存器組成控制器——提供控制信號(hào),指揮和控制計(jì)算機(jī)所有部件協(xié)調(diào)工作ALU一般由組合邏輯電路實(shí)現(xiàn)、數(shù)據(jù)通路和控制器既包含組合邏輯電路,也包含時(shí)序邏輯電路69大綱歷史:計(jì)算與計(jì)算機(jī)1指令集體系結(jié)構(gòu)2程序和程序設(shè)計(jì)語(yǔ)言3處理器的工作原理4更快更強(qiáng)570更快更強(qiáng)處理器(CPU)的性能對(duì)于計(jì)算機(jī)來(lái)講至關(guān)重要讓CPU變得更快更強(qiáng)大成為貫穿計(jì)算機(jī)發(fā)展史的重要目標(biāo)ENIAC:5000次加法/秒中國(guó)國(guó)防科技大學(xué)的“天河二號(hào)”超級(jí)計(jì)算機(jī)(Top1,2012):33.86PFlop/s不到70年間,6萬(wàn)7千億倍的計(jì)算速度差距,CPU的發(fā)展功不可沒(méi)怎樣提高CPU的性能呢?71三總線結(jié)構(gòu)一個(gè)簡(jiǎn)單的例子從我們前面的示例

處理器開始,通過(guò)

增加數(shù)據(jù)通路的方

式來(lái)提高處理器的

性能72處理器性能公式P=I×CPI×T執(zhí)行一個(gè)程序所花費(fèi)的時(shí)間這個(gè)程序所需執(zhí)行的總指令數(shù)每條指令執(zhí)行的平均周期數(shù)以毫秒或毫微秒計(jì)的時(shí)鐘周期73提高性能的常見手段減小T值減小CPI值減小I值增強(qiáng)指令集中指令的能力,減小一個(gè)程序需要執(zhí)行的指令數(shù)目采用各種技術(shù)手段提高處理器的主頻,減小一個(gè)時(shí)鐘周期的時(shí)間增加指令執(zhí)行的并行程度,減小CPI74RISCvsCISCCISCRISCvsCISCRISC增強(qiáng)指令功能填補(bǔ)高級(jí)語(yǔ)言和機(jī)器指令之間的間隙減少需要的指令數(shù)目可變長(zhǎng)指令以提高存儲(chǔ)器利用率面向存儲(chǔ)器的指令不利于CPU的設(shè)計(jì)硬邏輯實(shí)現(xiàn)困難,多使用微程序?qū)崿F(xiàn)80-20原則精簡(jiǎn)指令集,提高指令集的執(zhí)行效率定長(zhǎng)指令以方便優(yōu)化Load/Store結(jié)構(gòu)以方便指令調(diào)度和提高效率有利于CPU的設(shè)計(jì)硬連邏輯實(shí)現(xiàn),效率高I的少量增加帶來(lái)C和T的減小目前的處理器基本上都采用RISC核心,而部分CISC技術(shù)也被融合進(jìn)來(lái),形成所謂后RISC體系75流水線流水線:提高處理器性能的基本途徑76流水線帶來(lái)的性能改進(jìn)N級(jí)流水線性能分析:每個(gè)周期做1/N的工作,時(shí)間也是整個(gè)指令的1/N每個(gè)周期有一條指令完成執(zhí)行性能提高N倍……123N……123N……123N……123N…………77超流水線流水線越長(zhǎng),流水線中的“氣泡”越多,結(jié)果是性能的嚴(yán)重下降……2級(jí)流水取指-執(zhí)行5級(jí)流水取指-譯碼1/2

-執(zhí)行-寫回10級(jí)流水20~31級(jí)808680486PentiumIIIPentium478超標(biāo)量與流水線一條流水線不夠用,那就多條吧超標(biāo)量流水線結(jié)構(gòu)可是,問(wèn)題在于……123N……123N……123N……123N…………123N……123N……123N……123N……79指令的相關(guān)性指令之間的相關(guān)性造成流水線中的競(jìng)爭(zhēng)現(xiàn)象80當(dāng)流水線“流”不起來(lái)原因條件轉(zhuǎn)移指令之間的依賴性指令/數(shù)據(jù)無(wú)法供應(yīng)對(duì)策轉(zhuǎn)移預(yù)測(cè)亂序執(zhí)行Cache81轉(zhuǎn)移預(yù)測(cè)轉(zhuǎn)移預(yù)測(cè)和猜測(cè)執(zhí)行靜態(tài)預(yù)測(cè)動(dòng)態(tài)預(yù)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論