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

下載本文檔

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

文檔簡介

1、清華大學(xué)清華大學(xué)電子工程系電子工程系電子信息科學(xué)與技術(shù)導(dǎo)引電子信息科學(xué)與技術(shù)導(dǎo)引程序程序與處理器與處理器電子信息科學(xué)與技術(shù)知識體系電子信息科學(xué)與技術(shù)知識體系2大綱大綱歷史:計算與計算機(jī)歷史:計算與計算機(jī)1指令集體系結(jié)構(gòu)指令集體系結(jié)構(gòu)2程序和程序設(shè)計語言程序和程序設(shè)計語言3處理器的工作原理處理器的工作原理4更快更強(qiáng)更快更強(qiáng)53歷史:計算與歷史:計算與計算機(jī)計算機(jī) 以古為鏡,可以知興以古為鏡,可以知興替替李世民李世民 你對以往知道的愈多,對未來就看得愈遠(yuǎn)你對以往知道的愈多,對未來就看得愈遠(yuǎn)溫斯頓溫斯頓 丘吉爾丘吉爾4什么是計算什么是計算 將將3乘以乘以8(3x8)就是一種簡單的計算。數(shù)學(xué)中)就是一

2、種簡單的計算。數(shù)學(xué)中的計算有加,減,乘,除,乘方,開方等的計算有加,減,乘,除,乘方,開方等 廣義的計算包括邏輯推理,文法的產(chǎn)生式,函數(shù),廣義的計算包括邏輯推理,文法的產(chǎn)生式,函數(shù),組合數(shù)學(xué)的置換,變量代換,圖形圖像的變換,組合數(shù)學(xué)的置換,變量代換,圖形圖像的變換,數(shù)理統(tǒng)計,人工智能解空間的遍歷,問題求解,數(shù)理統(tǒng)計,人工智能解空間的遍歷,問題求解,圖論的路徑問題,網(wǎng)絡(luò)安全,代數(shù)系統(tǒng)理論等圖論的路徑問題,網(wǎng)絡(luò)安全,代數(shù)系統(tǒng)理論等5什么是計算什么是計算 工程中數(shù)字系統(tǒng)設(shè)計(例如邏輯代數(shù)),軟件程工程中數(shù)字系統(tǒng)設(shè)計(例如邏輯代數(shù)),軟件程序設(shè)計(文法),機(jī)器人設(shè)計,建筑設(shè)計等設(shè)計序設(shè)計(文法),機(jī)器

3、人設(shè)計,建筑設(shè)計等設(shè)計問題也可以稱為計算問題也可以稱為計算 經(jīng)濟(jì)生活中商品價格的評估也是一種復(fù)雜的計算經(jīng)濟(jì)生活中商品價格的評估也是一種復(fù)雜的計算 從投票意向評估出的選舉結(jié)果(民意調(diào)查)也包從投票意向評估出的選舉結(jié)果(民意調(diào)查)也包含了計算,但是提供含了計算,但是提供的計算結(jié)果的計算結(jié)果是是“各種可能性各種可能性的范圍的范圍”而不是單一的正確答案而不是單一的正確答案 計算是一種將單一或多個輸入值轉(zhuǎn)換為單一或多計算是一種將單一或多個輸入值轉(zhuǎn)換為單一或多個結(jié)果的一種過程個結(jié)果的一種過程6什么是計算什么是計算 計算可以用簡單的模型來表示計算可以用簡單的模型來表示 例如例如c=a+b,輸入數(shù)據(jù)是,輸入數(shù)

4、據(jù)是a、b,輸出數(shù)據(jù),輸出數(shù)據(jù)是是c,運(yùn)算器執(zhí)行加法,運(yùn)算器執(zhí)行加法運(yùn)算器運(yùn)算器輸入數(shù)輸入數(shù)據(jù)據(jù)輸出數(shù)輸出數(shù)據(jù)據(jù)7人類早期的計算工具人類早期的計算工具 計算程序儲存在人的大腦中計算程序儲存在人的大腦中8Blaise Pascal(1623-1662) 加法機(jī)加法機(jī) (1642) 由一系列齒輪組成的純機(jī)械設(shè)備。采用十進(jìn)制運(yùn)算,能完由一系列齒輪組成的純機(jī)械設(shè)備。采用十進(jìn)制運(yùn)算,能完成成8位十進(jìn)制數(shù)的加法和減法運(yùn)算位十進(jìn)制數(shù)的加法和減法運(yùn)算 計算程序體現(xiàn)在設(shè)備的機(jī)械結(jié)構(gòu)中計算程序體現(xiàn)在設(shè)備的機(jī)械結(jié)構(gòu)中 意義:揭示出用機(jī)器代替人類進(jìn)行計算意義:揭示出用機(jī)器代替人類進(jìn)行計算,完全,完全可以可以做到做到人

5、類早期的計算工具人類早期的計算工具9進(jìn)位問題:進(jìn)位問題:采用了一種采用了一種小爪子式的棘輪裝置,小爪子式的棘輪裝置,當(dāng)個位齒輪朝當(dāng)個位齒輪朝9 9轉(zhuǎn)動時,轉(zhuǎn)動時,棘爪便逐漸升高,一旦棘爪便逐漸升高,一旦齒輪轉(zhuǎn)到齒輪轉(zhuǎn)到0 0,棘爪就跌落,棘爪就跌落下來,推動十位數(shù)的齒下來,推動十位數(shù)的齒輪前進(jìn)一檔輪前進(jìn)一檔PascalPascal加法機(jī)的工作原理加法機(jī)的工作原理人類早期的計算工具人類早期的計算工具10人類早期的計算工具人類早期的計算工具 Pascal加法機(jī)發(fā)明后的加法機(jī)發(fā)明后的300年間,雖然出現(xiàn)年間,雖然出現(xiàn)了了Leibniz計算器、計算器、 Babbage分析機(jī)等重分析機(jī)等重要的機(jī)械計算機(jī)

6、,但是發(fā)展速度十分緩慢要的機(jī)械計算機(jī),但是發(fā)展速度十分緩慢11由四部分組成:存儲部分、計算部分、輸入部由四部分組成:存儲部分、計算部分、輸入部分、輸出部分分、輸出部分存儲部分由存儲部分由10001000個字組成,每個字為個字組成,每個字為5050位十進(jìn)位十進(jìn)制數(shù);計算部分從存儲部分接收操作數(shù),進(jìn)行制數(shù);計算部分從存儲部分接收操作數(shù),進(jìn)行加減乘除運(yùn)算,并將結(jié)果存回到存儲器;輸入加減乘除運(yùn)算,并將結(jié)果存回到存儲器;輸入部分從穿孔卡片讀取指令;輸出部分將計算結(jié)部分從穿孔卡片讀取指令;輸出部分將計算結(jié)果穿孔在卡片上果穿孔在卡片上分析機(jī)分析機(jī)(Analytical Engine) (1837)(Anal

7、ytical Engine) (1837)歷史上的第一臺通用計算機(jī)歷史上的第一臺通用計算機(jī)分析機(jī)分析機(jī)12分析機(jī)的設(shè)計思想與現(xiàn)代分析機(jī)的設(shè)計思想與現(xiàn)代CPUCPU的的存儲程序原理十分相似,而且程存儲程序原理十分相似,而且程序可以根據(jù)條件進(jìn)行跳轉(zhuǎn),能在序可以根據(jù)條件進(jìn)行跳轉(zhuǎn),能在幾秒內(nèi)做出一般的加法,幾分鐘幾秒內(nèi)做出一般的加法,幾分鐘內(nèi)做出乘、除法。內(nèi)做出乘、除法。不幸的是,分析機(jī)的硬件問題一不幸的是,分析機(jī)的硬件問題一直沒有解決,原因是直沒有解決,原因是1919世紀(jì)的世紀(jì)的技術(shù)條件無法制造出分析機(jī)所需技術(shù)條件無法制造出分析機(jī)所需要的成千上萬個高精度的齒輪要的成千上萬個高精度的齒輪Charles

8、 BabbageBabbage的思想遠(yuǎn)遠(yuǎn)超過了他的時代分析機(jī)分析機(jī)13作為通用計算機(jī),分析機(jī)在運(yùn)行時需要軟件,作為通用計算機(jī),分析機(jī)在運(yùn)行時需要軟件, AdaAda成為人類歷史上的第一名程序員成為人類歷史上的第一名程序員現(xiàn)代程序設(shè)計語言現(xiàn)代程序設(shè)計語言AdaAda就是為紀(jì)念她而命名的就是為紀(jì)念她而命名的軟件軟件Ada Lovelace(1815-1852)14ENIAC 1946年年, ENIAC在美在美國賓夕法尼亞大學(xué)國賓夕法尼亞大學(xué)研制成功,這是世研制成功,這是世界上第一臺現(xiàn)代意界上第一臺現(xiàn)代意義的通用電子計算義的通用電子計算機(jī)機(jī)15ENIAC 裝有裝有18,000個電子管,個電子管,總重

9、量達(dá)總重量達(dá)30噸,功耗噸,功耗140kw 有有20個寄存器,每個能個寄存器,每個能存放存放10位的十進(jìn)制數(shù),位的十進(jìn)制數(shù),運(yùn)算速度為每秒運(yùn)算速度為每秒5000次次加法加法 通過設(shè)置分布在各處的通過設(shè)置分布在各處的6000個開關(guān)和眾多的插個開關(guān)和眾多的插頭與插座來編程頭與插座來編程16ENIAC 為為ENIAC編寫的編寫的“程序程序”17電子計算機(jī)怎么計算?電子計算機(jī)怎么計算? 作為計算基礎(chǔ)的二進(jìn)制加法18更復(fù)雜的計算更復(fù)雜的計算 假如我們要計算a+bc: ENIAC就是這么做的加法器乘法器ba+bccabc19如果我們要算另外一道題?如果我們要算另外一道題?vab-cdv我們就必須重新構(gòu)造這

10、臺計算機(jī)v怎么辦?20大綱大綱歷史:計算與計算機(jī)歷史:計算與計算機(jī)1指令集體系結(jié)構(gòu)指令集體系結(jié)構(gòu)2程序和程序設(shè)計語言程序和程序設(shè)計語言3處理器的工作原理處理器的工作原理4更快更強(qiáng)更快更強(qiáng)521通用計算機(jī)模型通用計算機(jī)模型 人類天生具備大局觀,最擅長從大到小,人類天生具備大局觀,最擅長從大到小,由表及里的分析問題由表及里的分析問題 能夠區(qū)分各種行業(yè);深入行業(yè)后就以內(nèi)行方式能夠區(qū)分各種行業(yè);深入行業(yè)后就以內(nèi)行方式看門道;最終發(fā)現(xiàn)所有的工作都是由最簡單看門道;最終發(fā)現(xiàn)所有的工作都是由最簡單的的步驟組成,所有步驟組成,所有的物品都是的物品都是由最簡單由最簡單的部件組的部件組成成 計算也是如此計算也是如

11、此任何復(fù)雜的計算都是由任何復(fù)雜的計算都是由簡單的基本計算組合而成的簡單的基本計算組合而成的22通用計算機(jī)模型通用計算機(jī)模型 我們換一種方法來計算我們換一種方法來計算a+bc: 第一步:第一步:Temp = bc 第二步:第二步:Result=a+temp 于是我們就可以:于是我們就可以: 當(dāng)我們需要算另外一道題時,只要將這個過程進(jìn)當(dāng)我們需要算另外一道題時,只要將這個過程進(jìn)行修改即可行修改即可abc乘法器temp第一步atemp加法器result第二步23現(xiàn)代計算機(jī)組成現(xiàn)代計算機(jī)組成主機(jī)系統(tǒng)主機(jī)系統(tǒng)CPU存儲器存儲器輸出輸出 設(shè)備設(shè)備 輸入輸入 設(shè)備設(shè)備 運(yùn)算器運(yùn)算器控制器控制器數(shù)據(jù)數(shù)據(jù)通通路路

12、 控制信號控制信號 24運(yùn)算器運(yùn)算器算術(shù)邏輯單元算術(shù)邏輯單元 實現(xiàn)基本計算的電路(如加法器、乘法器實現(xiàn)基本計算的電路(如加法器、乘法器等)可以組合在一起,稱為算術(shù)邏輯單元等)可以組合在一起,稱為算術(shù)邏輯單元ALU25存儲器存儲器 復(fù)雜的計算需要大量的輸入數(shù)據(jù)和輸出數(shù)復(fù)雜的計算需要大量的輸入數(shù)據(jù)和輸出數(shù)據(jù),因此我們需要一個存儲器將其存起來據(jù),因此我們需要一個存儲器將其存起來26控制器控制器 除了存儲器和運(yùn)算器,還需要一個控制器除了存儲器和運(yùn)算器,還需要一個控制器 控制器控制著將存儲器中的數(shù)據(jù)送到運(yùn)算控制器控制著將存儲器中的數(shù)據(jù)送到運(yùn)算器器(ALU)中進(jìn)行計算,然后將結(jié)果存回到存中進(jìn)行計算,然后將

13、結(jié)果存回到存儲器中儲器中 指示輸入數(shù)據(jù)存在何處,做什么運(yùn)算,結(jié)指示輸入數(shù)據(jù)存在何處,做什么運(yùn)算,結(jié)果存到何處的控制命令稱為果存到何處的控制命令稱為指令指令27控制器控制器 組合邏輯電路與時序電路組合邏輯電路與時序電路分步進(jìn)行的程序需要時序邏輯分步進(jìn)行的程序需要時序邏輯 實現(xiàn)機(jī)制實現(xiàn)機(jī)制寄存器堆算術(shù)邏輯部件AB控制器程序28輸入設(shè)備輸入設(shè)備&輸出設(shè)備輸出設(shè)備 數(shù)據(jù)要從外部輸入進(jìn)來,結(jié)果也要輸出出數(shù)據(jù)要從外部輸入進(jìn)來,結(jié)果也要輸出出去,因此還需要輸入設(shè)備和輸出設(shè)備去,因此還需要輸入設(shè)備和輸出設(shè)備29馮馮諾依曼存儲程序原理諾依曼存儲程序原理 馮馮諾伊曼發(fā)現(xiàn)諾伊曼發(fā)現(xiàn)ENIAC存在的主要問題:

14、存在的主要問題: 用大量的開關(guān)和插頭來編程用大量的開關(guān)和插頭來編程 用用10個電子管表示一位十進(jìn)制數(shù)個電子管表示一位十進(jìn)制數(shù) 改進(jìn)措施:改進(jìn)措施: 針對用針對用1010個電子管表示一位十進(jìn)制數(shù),個電子管表示一位十進(jìn)制數(shù),提出應(yīng)該用二進(jìn)制來替代提出應(yīng)該用二進(jìn)制來替代 針對針對ENIACENIAC用開關(guān)和插頭來編程,用開關(guān)和插頭來編程, 提出了提出了程序可以以編碼形式和數(shù)據(jù)一起在內(nèi)存中程序可以以編碼形式和數(shù)據(jù)一起在內(nèi)存中存儲存儲 馮馮諾伊曼諾伊曼的工作成為如今廣泛采用用的工作成為如今廣泛采用用的的馮馮諾伊曼體系結(jié)構(gòu)諾伊曼體系結(jié)構(gòu)的基礎(chǔ)的基礎(chǔ)30馮馮諾伊曼機(jī)中程序的執(zhí)行原理諾伊曼機(jī)中程序的執(zhí)行原理把

15、程序把程序(指令序列指令序列)存儲在存儲器內(nèi),存儲在存儲器內(nèi),使計算機(jī)能像快速存取數(shù)據(jù)一樣使計算機(jī)能像快速存取數(shù)據(jù)一樣地快速存取組成程序的指令,存地快速存取組成程序的指令,存放位置由地址指定,地址碼也是放位置由地址指定,地址碼也是二進(jìn)制形式二進(jìn)制形式控制器根據(jù)存放在存儲器中的程控制器根據(jù)存放在存儲器中的程序工作,并由一個程序計數(shù)器序工作,并由一個程序計數(shù)器(PC)控制指令的讀取。控制器具有判控制指令的讀取。控制器具有判斷能力,能夠根據(jù)計算結(jié)果選擇斷能力,能夠根據(jù)計算結(jié)果選擇不同的動作流程不同的動作流程給出程序中第一條指令的地址,給出程序中第一條指令的地址,控制器就可依據(jù)存儲程序中的指控制器就可

16、依據(jù)存儲程序中的指令順序周而復(fù)始地取指令、譯碼、令順序周而復(fù)始地取指令、譯碼、執(zhí)行,直到完成全部指令操作為執(zhí)行,直到完成全部指令操作為止止取指令,PC 值加 1停機(jī) ?譯碼結(jié)束YN執(zhí)行31 指令集指令集就是用來控制就是用來控制計算機(jī)系統(tǒng)的一套命計算機(jī)系統(tǒng)的一套命令的集合令的集合,指令集是有限集合,指令集是有限集合 指令集是有限集合指令集是有限集合 指令集中的每條指令都可以用硬件實現(xiàn)指令集中的每條指令都可以用硬件實現(xiàn) 每每一一種處理器種處理器在設(shè)計時就規(guī)定了一系列與在設(shè)計時就規(guī)定了一系列與硬件電路相配合的硬件電路相配合的指令系統(tǒng)指令系統(tǒng) 指令集的先進(jìn)與否,也關(guān)系到處理器的性指令集的先進(jìn)與否,也關(guān)

17、系到處理器的性能發(fā)揮,它也是處理器性能體現(xiàn)的一個重能發(fā)揮,它也是處理器性能體現(xiàn)的一個重要標(biāo)志要標(biāo)志指令集指令集32 與其它電路系統(tǒng)不同的是,計算機(jī)本質(zhì)上是與其它電路系統(tǒng)不同的是,計算機(jī)本質(zhì)上是指令指令處理器,處理器,指令集體系結(jié)構(gòu)指令集體系結(jié)構(gòu)(ISA)是計算機(jī)的靈魂,是計算機(jī)的靈魂,是計算機(jī)硬件和軟件是計算機(jī)硬件和軟件的接口的接口指令集體系結(jié)構(gòu)指令集體系結(jié)構(gòu)33 ISA(Instruction Set Architecture)是計算是計算機(jī)硬件與底層軟件之間的接口,它是程序機(jī)硬件與底層軟件之間的接口,它是程序員為使一個二進(jìn)制機(jī)器語言程序正確運(yùn)行員為使一個二進(jìn)制機(jī)器語言程序正確運(yùn)行所需要了解

18、的屬性所需要了解的屬性指令集體系結(jié)構(gòu)指令集體系結(jié)構(gòu)34我們需要哪些指令我們需要哪些指令 x(n)為輸入信號,為輸入信號, y(n)為為輸入信號輸入信號,coefi為濾波器系數(shù)為濾波器系數(shù) 處理器需要有加法、乘法指令處理器需要有加法、乘法指令算術(shù)邏算術(shù)邏輯運(yùn)算指令輯運(yùn)算指令 算術(shù)邏輯運(yùn)算指令算術(shù)邏輯運(yùn)算指令還包括邏輯運(yùn)算、移位還包括邏輯運(yùn)算、移位運(yùn)算等運(yùn)算等)()(10inxcoefnynii35我們需要哪些指令我們需要哪些指令 除了進(jìn)行計算,處理器還要能實現(xiàn)除了進(jìn)行計算,處理器還要能實現(xiàn)循環(huán),如上述計算循環(huán)了循環(huán),如上述計算循環(huán)了n次次 跳轉(zhuǎn)指令可以實現(xiàn)循環(huán)跳轉(zhuǎn)指令可以實現(xiàn)循環(huán) 循環(huán)需要在一定

19、的條件跳出,否則循環(huán)需要在一定的條件跳出,否則就成了死循環(huán),條件分支指令可以就成了死循環(huán),條件分支指令可以實現(xiàn)該功能實現(xiàn)該功能 跳跳轉(zhuǎn)、分支以及子程序調(diào)用與返回轉(zhuǎn)、分支以及子程序調(diào)用與返回等指令統(tǒng)稱等指令統(tǒng)稱流程控制指令流程控制指令起起點點終終點點跳跳轉(zhuǎn)轉(zhuǎn)回回去去順順序序執(zhí)執(zhí)行行36)()(10inxcoefnynii我們需要哪些指令我們需要哪些指令 現(xiàn)代現(xiàn)代RISC處理器要求算術(shù)邏輯運(yùn)算的操作處理器要求算術(shù)邏輯運(yùn)算的操作數(shù)只能在寄存器中,因此運(yùn)算前數(shù)據(jù)要由數(shù)只能在寄存器中,因此運(yùn)算前數(shù)據(jù)要由存儲器裝入存儲器裝入(load)寄存器中,運(yùn)算完成后,寄存器中,運(yùn)算完成后,再由寄存器存儲再由寄存器存

20、儲(store)到存儲器中到存儲器中 實現(xiàn)存儲器和寄存器間數(shù)據(jù)交換的指令稱實現(xiàn)存儲器和寄存器間數(shù)據(jù)交換的指令稱為為數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令37)()(10inxcoefnynii我們需要哪些指令我們需要哪些指令 有了有了算術(shù)邏輯運(yùn)算指令算術(shù)邏輯運(yùn)算指令、數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令、流程控制指令這流程控制指令這3類指令類指令,處理器就能夠完處理器就能夠完成各種復(fù)雜的計算成各種復(fù)雜的計算38指令格式指令格式 指令以編碼的形式如同數(shù)據(jù)一樣存放在存指令以編碼的形式如同數(shù)據(jù)一樣存放在存儲器中。一條指令一般由操作碼和操作數(shù)儲器中。一條指令一般由操作碼和操作數(shù)地址碼兩部分組成地址碼兩部分組成 這些操作碼和地址

21、碼被控制器譯碼,形成這些操作碼和地址碼被控制器譯碼,形成控制系統(tǒng)各部分的控制信號控制系統(tǒng)各部分的控制信號39指令集的例子指令集的例子 MIPS指令集(三種指令)指令集(三種指令) 例子例子 addi $s1, $s0, 1 sw $s1, 8000($s0)40指令集體系結(jié)構(gòu)的市場劃分指令集體系結(jié)構(gòu)的市場劃分 雖然生產(chǎn)處理器的廠家很多,但世上卻只雖然生產(chǎn)處理器的廠家很多,但世上卻只有為數(shù)不多的指令集體系結(jié)構(gòu)有為數(shù)不多的指令集體系結(jié)構(gòu) ARM X86 PowerPC MIPS41ISA的地位的地位 ISA背后是一個背后是一個生態(tài)鏈,而不是生態(tài)鏈,而不是一兩家公司一兩家公司 發(fā)明一套新的發(fā)明一套新

22、的ISA并不難,難并不難,難的是你要讓別人的是你要讓別人接受你發(fā)明的接受你發(fā)明的ISA此路是我此路是我開,此樹開,此樹是我栽,是我栽,要想打此要想打此過,留下過,留下買路財買路財處理器處理器程序程序ISA42大綱大綱歷史:計算與計算機(jī)歷史:計算與計算機(jī)1指令集體系結(jié)構(gòu)指令集體系結(jié)構(gòu)2程序和程序設(shè)計語言程序和程序設(shè)計語言3處理器的工作原理處理器的工作原理4更快更強(qiáng)更快更強(qiáng)543什么是程序?什么是程序? 按時間先后或依次安排的工作步驟。如工作程序;按時間先后或依次安排的工作步驟。如工作程序;醫(yī)療程序。醫(yī)療程序。辭海辭海 事情進(jìn)行的先后次序。如會議程序;工作程序。事情進(jìn)行的先后次序。如會議程序;工作

23、程序?,F(xiàn)代漢語詞典現(xiàn)代漢語詞典 計算機(jī)程序或者軟件程序(通常簡稱程序)是指計算機(jī)程序或者軟件程序(通常簡稱程序)是指一組指示計算機(jī)或其他具有信息處理能力裝置每一組指示計算機(jī)或其他具有信息處理能力裝置每一步動作的指令,通常用某種程序設(shè)計語言編寫,一步動作的指令,通常用某種程序設(shè)計語言編寫,運(yùn)行于某種目標(biāo)體系結(jié)構(gòu)上。運(yùn)行于某種目標(biāo)體系結(jié)構(gòu)上。 維基百科維基百科44程序的重要性程序的重要性 做任何事情,首先強(qiáng)調(diào)的就是程序做任何事情,首先強(qiáng)調(diào)的就是程序 從管理的角度,程序是能夠發(fā)揮出協(xié)調(diào)高從管理的角度,程序是能夠發(fā)揮出協(xié)調(diào)高效作用的工具。應(yīng)該充分重視程序的作用,效作用的工具。應(yīng)該充分重視程序的作用,不

24、斷地將我們的工作從無序整改到有序不斷地將我們的工作從無序整改到有序 45什么是計算機(jī)程序?什么是計算機(jī)程序? 計算機(jī)程序就是為實現(xiàn)特定目標(biāo)或解決特計算機(jī)程序就是為實現(xiàn)特定目標(biāo)或解決特定問題而用計算機(jī)程序設(shè)計語言編寫的命定問題而用計算機(jī)程序設(shè)計語言編寫的命令序列的集合令序列的集合 程序是由命令序列組成的,它告訴計算機(jī)如何程序是由命令序列組成的,它告訴計算機(jī)如何完成一個具體的任務(wù)完成一個具體的任務(wù) 由于現(xiàn)在的計算機(jī)還不能理解人類的自然語言,由于現(xiàn)在的計算機(jī)還不能理解人類的自然語言,所以還不能用自然語言編寫計算機(jī)程序所以還不能用自然語言編寫計算機(jī)程序46程序設(shè)計語言程序設(shè)計語言 程序設(shè)計語言,就是一

25、組用來定義計算機(jī)程序設(shè)計語言,就是一組用來定義計算機(jī)程序的語法規(guī)則程序的語法規(guī)則 程序設(shè)計語言能夠讓程序員準(zhǔn)確地定義計程序設(shè)計語言能夠讓程序員準(zhǔn)確地定義計算機(jī)所需要使用的數(shù)據(jù),并精確地定義在算機(jī)所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動不同情況下所應(yīng)當(dāng)采取的行動 在過去的幾十年間,發(fā)明了大量的程序設(shè)在過去的幾十年間,發(fā)明了大量的程序設(shè)計語言:計語言:C、C+、BASIC、FORTRAN、COBAL、Matlab、47程序設(shè)計語言程序設(shè)計語言為 了 解 決 機(jī)為 了 解 決 機(jī)器 語 言 編 寫器 語 言 編 寫程 序 的 困程 序 的 困難 , 用 助 記難 , 用 助 記符

26、來 表 示 指符 來 表 示 指令令計 算 機(jī) 的 全計 算 機(jī) 的 全部 二 進(jìn) 制 指部 二 進(jìn) 制 指令 組 成 控 制令 組 成 控 制計 算 機(jī) 運(yùn) 行計 算 機(jī) 運(yùn) 行的語言的語言更進(jìn)一步符更進(jìn)一步符合人的思維合人的思維方式和表達(dá)方式和表達(dá)方式的編程方式的編程語言語言機(jī)器語言機(jī)器語言匯編語言匯編語言高級語言高級語言48機(jī)器語言機(jī)器語言 MIPS機(jī)器語言編寫的機(jī)器語言編寫的Hello, World. 天啊,要這么編程序天啊,要這么編程序001111000000000100010000000000010011010000100100000000000000000000100100000

27、00010000000000000010000000000000000000000000000001100001001000000001000000000000010100000000000000000000000000000110049匯編語言匯編語言 用有意義的助記符代替難以理解和記憶的用有意義的助記符代替難以理解和記憶的指令字指令字.textmain:la$a0, strli $v0, 4syscall# print stringli$v0, 10syscall# exit.data.align 2str: .asciiz Hello world.50匯編語言匯編語言 匯編語言的助匯編語

28、言的助記符形式的指記符形式的指令必須翻譯成令必須翻譯成機(jī)器語言二進(jìn)機(jī)器語言二進(jìn)制指令才能在制指令才能在計算機(jī)上執(zhí)行,計算機(jī)上執(zhí)行,實現(xiàn)這種翻譯實現(xiàn)這種翻譯的程序稱為的程序稱為匯匯編器編器(assembler)匯編語言源程序匯編語言源程序機(jī)器語言程序機(jī)器語言程序匯編器匯編器00100000000010000000000000000001001000000000100000000000000000010010000100001000000000000000001000100001000010000000000000000010101011000000100000011111010000001010

29、1100000010000001111101000000addi $s1, $0, 1addi $s1, $s1, 2sw $s1, 8000($0) 51匯編語言匯編語言 匯編語言與機(jī)器語言是一一對應(yīng)的,所以匯編語言與機(jī)器語言是一一對應(yīng)的,所以匯編語言仍然太匯編語言仍然太繁瑣,繁瑣,開發(fā)效率仍然十分開發(fā)效率仍然十分低下,低下,程序的編寫太困難,所以程序的編寫太困難,所以52高級語言高級語言 更加符合人的習(xí)慣,與機(jī)器結(jié)構(gòu)無關(guān)更加符合人的習(xí)慣,與機(jī)器結(jié)構(gòu)無關(guān)#include int main(int argc, char *argv) printf(“Hello, world!n”); retu

30、rn 0;package test.hello;class Hello public static void main(String args) System.out.println(“Hello, world!”); using namespace std;int main() cout Hello, world! endl; return 0;print Hello, world!53高級語言高級語言 不同的高級語言具有不同的語法和風(fēng)格,不同的高級語言具有不同的語法和風(fēng)格,適合于不同的應(yīng)用領(lǐng)域適合于不同的應(yīng)用領(lǐng)域 高級語言同樣不能被計算機(jī)所直接執(zhí)行,高級語言同樣不能被計算機(jī)所直接執(zhí)行,必須

31、通過一個中間過程,可行的中間過程必須通過一個中間過程,可行的中間過程有編譯和解釋兩種有編譯和解釋兩種 編譯(編譯(Compile):一次翻譯,重復(fù)運(yùn)行,效):一次翻譯,重復(fù)運(yùn)行,效率更高率更高 解釋(解釋(Interpret):隨執(zhí)行隨翻譯,更靈活):隨執(zhí)行隨翻譯,更靈活54大綱大綱歷史:計算與計算機(jī)歷史:計算與計算機(jī)1指令集體系結(jié)構(gòu)指令集體系結(jié)構(gòu)2程序和程序設(shè)計語言程序和程序設(shè)計語言3處理器的工作原理處理器的工作原理4更快更強(qiáng)更快更強(qiáng)555處理器處理器 處理器處理器是計算機(jī)的核心,它執(zhí)行算術(shù)運(yùn)算、是計算機(jī)的核心,它執(zhí)行算術(shù)運(yùn)算、邏輯判斷、控制存儲器訪問、以及激活邏輯判斷、控制存儲器訪問、以及

32、激活I(lǐng)/O設(shè)備等操作設(shè)備等操作 處理器包含兩個主要的組成部分:處理器包含兩個主要的組成部分: 數(shù)據(jù)通路數(shù)據(jù)通路 控制器控制器56數(shù)據(jù)通路數(shù)據(jù)通路 數(shù)據(jù)通路有兩種設(shè)計方法:專用通路、總數(shù)據(jù)通路有兩種設(shè)計方法:專用通路、總線線 專用通路是源部件和目標(biāo)部件之間傳送數(shù)專用通路是源部件和目標(biāo)部件之間傳送數(shù)據(jù)的一組專用信號線據(jù)的一組專用信號線 總線總線(bus)是多個源部件和多個目標(biāo)部件之是多個源部件和多個目標(biāo)部件之間按間按分時分時復(fù)用的方式傳送數(shù)據(jù)的復(fù)用的方式傳送數(shù)據(jù)的一組一組公用公用信號線信號線57控制器控制器 提供控制信號,指揮和控制計算機(jī)所有部提供控制信號,指揮和控制計算機(jī)所有部件協(xié)調(diào)工作,從而使

33、計算機(jī)能夠按照程序件協(xié)調(diào)工作,從而使計算機(jī)能夠按照程序規(guī)定的指令執(zhí)行次序,自動地連續(xù)執(zhí)行指規(guī)定的指令執(zhí)行次序,自動地連續(xù)執(zhí)行指令令58處理器處理器32位位通用通用寄存器寄存器R0R31PCACIRMARMDRABCALU數(shù)據(jù)通路數(shù)據(jù)通路內(nèi)存內(nèi)存控制器控制器控制信號控制信號控制單元輸入控制單元輸入控制器與數(shù)據(jù)通路的關(guān)系控制器與數(shù)據(jù)通路的關(guān)系59計算機(jī)怎樣執(zhí)行程序計算機(jī)怎樣執(zhí)行程序問題:計算問題:計算1+2=?C程序程序60單總線單總線MIPS計算機(jī)計算機(jī)61計算機(jī)怎樣執(zhí)行程序計算機(jī)怎樣執(zhí)行程序addi $1, $0, 1取取指:指: T0 CPU內(nèi)部總線內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器內(nèi)存數(shù)據(jù)寄存器(MD

34、R)內(nèi)存地址寄存器內(nèi)存地址寄存器(MAR)程序計數(shù)器程序計數(shù)器(PC)32位位通用通用寄存器寄存器R0R31ALUAC指令寄存器指令寄存器(IR)指令譯碼器指令譯碼器(ID)控制信號發(fā)生器控制信號發(fā)生器控制信號控制信號地地址址譯譯碼碼器器內(nèi)存內(nèi)存000000040008.讀控制讀控制寫控制寫控制0 x200100010 x202100020 xac011f40CPU+400000000控控制制器器62計算機(jī)怎樣執(zhí)行程序計算機(jī)怎樣執(zhí)行程序addi $1, $0, 1取指:取指: T1CPU內(nèi)部總線內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器內(nèi)存地址寄存器(MAR)程序計數(shù)器程序計

35、數(shù)器(PC)32位位通用通用寄存器寄存器R0R31ALUAC地地址址譯譯碼碼器器內(nèi)存內(nèi)存000000040008.讀控制讀控制寫控制寫控制CPU+4000400000 x200100010 x202100020 xac011f400 x20010001指令寄存器指令寄存器(IR)指令譯碼器指令譯碼器(ID)控制信號發(fā)生器控制信號發(fā)生器控制信號控制信號控控制制器器63計算機(jī)怎樣執(zhí)行程序計算機(jī)怎樣執(zhí)行程序addi $1, $0, 1取指:取指: T2CPU內(nèi)部總線內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器內(nèi)存地址寄存器(MAR)程序計數(shù)器程序計數(shù)器(PC)32位位通用通用寄存器寄

36、存器R0R31ALUAC地地址址譯譯碼碼器器內(nèi)存內(nèi)存000000040008.讀控制讀控制寫控制寫控制CPU+4000400000 x200100010 x202100020 xac011f400 x20010001指令寄存器指令寄存器(IR)指令譯碼器指令譯碼器(ID)控制信號發(fā)生器控制信號發(fā)生器控制信號控制信號控控制制器器0 x2001000164計算機(jī)怎樣執(zhí)行程序計算機(jī)怎樣執(zhí)行程序addi $1, $0, 1譯碼:譯碼: T3CPU內(nèi)部總線內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器內(nèi)存地址寄存器(MAR)程序計數(shù)器程序計數(shù)器(PC)32位位通用通用寄存器寄存器R0R31

37、ALUAC地地址址譯譯碼碼器器內(nèi)存內(nèi)存000000040008.讀控制讀控制寫控制寫控制CPU+4000400000 x200100010 x202100020 xac011f400 x20010001指令寄存器指令寄存器(IR)指令譯碼器指令譯碼器(ID)控制信號發(fā)生器控制信號發(fā)生器控制信號控制信號控控制制器器0 x2001000165計算機(jī)怎樣執(zhí)行程序計算機(jī)怎樣執(zhí)行程序addi $1, $0, 1執(zhí)行:執(zhí)行: T4CPU內(nèi)部總線內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器內(nèi)存地址寄存器(MAR)程序計數(shù)器程序計數(shù)器(PC)32位位通用通用寄存器寄存器R0R31ALUAC地地

38、址址譯譯碼碼器器內(nèi)存內(nèi)存000000040008.讀控制讀控制寫控制寫控制CPU+4000400000 x200100010 x202100020 xac011f400 x2001000100指令寄存器指令寄存器(IR)指令譯碼器指令譯碼器(ID)控制信號發(fā)生器控制信號發(fā)生器控制信號控制信號控控制制器器0 x2001000166計算機(jī)怎樣執(zhí)行程序計算機(jī)怎樣執(zhí)行程序addi $1, $0, 1執(zhí)行:執(zhí)行: T5CPU內(nèi)部總線內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器內(nèi)存地址寄存器(MAR)程序計數(shù)器程序計數(shù)器(PC)32位位通用通用寄存器寄存器R0R31ALUAC地地址址譯譯碼

39、碼器器內(nèi)存內(nèi)存000000040008.讀控制讀控制寫控制寫控制CPU+4000400000 x200100010 x202100020 xac011f400 x20010001011指令寄存器指令寄存器(IR)指令譯碼器指令譯碼器(ID)控制信號發(fā)生器控制信號發(fā)生器控制信號控制信號控控制制器器0 x2001000167計算機(jī)怎樣執(zhí)行程序計算機(jī)怎樣執(zhí)行程序addi $1, $0, 1執(zhí)行:執(zhí)行: T6CPU內(nèi)部總線內(nèi)部總線內(nèi)存數(shù)據(jù)寄存器內(nèi)存數(shù)據(jù)寄存器(MDR)內(nèi)存地址寄存器內(nèi)存地址寄存器(MAR)程序計數(shù)器程序計數(shù)器(PC)32位位通用通用寄存器寄存器R0R31ALUAC地地址址譯譯碼碼器器內(nèi)

40、存內(nèi)存000000040008.讀控制讀控制寫控制寫控制CPU+4000400000 x200100010 x202100020 xac011f400 x20010001011指令寄存器指令寄存器(IR)指令譯碼器指令譯碼器(ID)控制信號發(fā)生器控制信號發(fā)生器控制信號控制信號控控制制器器0 x2001000168處理器處理器 處理器是一個復(fù)雜的數(shù)字系統(tǒng):處理器是一個復(fù)雜的數(shù)字系統(tǒng): ALU實現(xiàn)算術(shù)和實現(xiàn)算術(shù)和邏輯運(yùn)算邏輯運(yùn)算 數(shù)據(jù)通路數(shù)據(jù)通路由處理器內(nèi)部的各種連線和各種由處理器內(nèi)部的各種連線和各種輔助性質(zhì)的寄存器組成輔助性質(zhì)的寄存器組成 控制器控制器提供控制信號,指揮和控制計算機(jī)提供控制信號,

41、指揮和控制計算機(jī)所有部件協(xié)調(diào)工作所有部件協(xié)調(diào)工作 ALU一般由組合邏輯電路實現(xiàn)、數(shù)據(jù)通路一般由組合邏輯電路實現(xiàn)、數(shù)據(jù)通路和控制器既包含組合邏輯電路,也包含時和控制器既包含組合邏輯電路,也包含時序邏輯電路序邏輯電路69大綱大綱歷史:計算與計算機(jī)歷史:計算與計算機(jī)1指令集體系結(jié)構(gòu)指令集體系結(jié)構(gòu)2程序和程序設(shè)計語言程序和程序設(shè)計語言3處理器的工作原理處理器的工作原理4更快更強(qiáng)更快更強(qiáng)570更快更強(qiáng)更快更強(qiáng) 處理器(處理器(CPU)的性能對于計算機(jī)來講至)的性能對于計算機(jī)來講至關(guān)重要關(guān)重要 讓讓CPU變得更快更強(qiáng)大成為貫穿計算機(jī)發(fā)變得更快更強(qiáng)大成為貫穿計算機(jī)發(fā)展史的重要目標(biāo)展史的重要目標(biāo) ENIAC

42、: 5000次加法次加法/秒秒 中國國防科技大學(xué)的中國國防科技大學(xué)的“天河二號天河二號”超級計算機(jī)超級計算機(jī)(Top 1,2012) :33.86PFlop/s 不到不到70年間,年間,6萬萬7千億倍的計算速度差距,千億倍的計算速度差距,CPU的發(fā)展功不可沒的發(fā)展功不可沒 怎樣提高怎樣提高CPU的性能呢?的性能呢?71三總線結(jié)構(gòu)三總線結(jié)構(gòu) 一個簡單的例子一個簡單的例子 從我們前面的示例從我們前面的示例處理器開始,通過處理器開始,通過增加數(shù)據(jù)通路的方增加數(shù)據(jù)通路的方式來提高處理器的式來提高處理器的性能性能72處理器性能公式處理器性能公式PICPIT執(zhí)行一個執(zhí)行一個程序所花程序所花費(fèi)的時間費(fèi)的時間

43、這個程序這個程序所需執(zhí)行所需執(zhí)行的總指令的總指令數(shù)數(shù)每條指令每條指令執(zhí)行的平執(zhí)行的平均周期數(shù)均周期數(shù)以毫秒或以毫秒或毫微秒計毫微秒計的時鐘周的時鐘周期期73提高性能的常見手段提高性能的常見手段減小減小T值值減小減小CPI值值減小減小I值值增強(qiáng)指令集增強(qiáng)指令集中指令的能中指令的能力,減小一力,減小一個程序需要個程序需要執(zhí)行的指令執(zhí)行的指令數(shù)目數(shù)目采用各種技采用各種技術(shù)手段術(shù)手段提高提高處理器的處理器的主主頻,減小一頻,減小一個時鐘周期個時鐘周期的時間的時間增加指令執(zhí)增加指令執(zhí)行的并行程行的并行程度,減小度,減小CPI74RISC vs CISCCISCRISC vs CISCRISC增強(qiáng)指令功能

44、增強(qiáng)指令功能填補(bǔ)高級語言和機(jī)器指令填補(bǔ)高級語言和機(jī)器指令之間的間隙之間的間隙減少需要的指令數(shù)目減少需要的指令數(shù)目可變長指令以提高存儲器可變長指令以提高存儲器利用率利用率面向存儲器的指令面向存儲器的指令不利于不利于CPU的設(shè)計的設(shè)計硬邏輯實現(xiàn)困難,多使用硬邏輯實現(xiàn)困難,多使用微程序?qū)崿F(xiàn)微程序?qū)崿F(xiàn)80-20原則原則精簡指令集,提高指令集精簡指令集,提高指令集的執(zhí)行效率的執(zhí)行效率定長指令以方便優(yōu)化定長指令以方便優(yōu)化Load/Store結(jié)構(gòu)以方便結(jié)構(gòu)以方便指令調(diào)度和提高效率指令調(diào)度和提高效率有利于有利于CPU的設(shè)計的設(shè)計硬連邏輯實現(xiàn),效率高硬連邏輯實現(xiàn),效率高I的少量增加帶來的少量增加帶來C和和T的的

45、減小減小目前目前的處理器基本上的處理器基本上都采用都采用RISC核心,而部分核心,而部分CISC技技術(shù)也被融合進(jìn)來,形成所謂后術(shù)也被融合進(jìn)來,形成所謂后RISC體系體系75流水線流水線 流水線:提高處理器性能的基本途徑流水線:提高處理器性能的基本途徑76流水線帶來的性能改進(jìn)流水線帶來的性能改進(jìn) N級流水線級流水線 性能分析:性能分析: 每個周期做每個周期做1/N的工作,時間也是整個指令的的工作,時間也是整個指令的1/N 每個周期有一條指令完成執(zhí)行每個周期有一條指令完成執(zhí)行 性能提高性能提高N倍倍1 2 3N1 2 3N1 2 3N1 2 3N77超流水線超流水線 流水線越長,流水線中的流水線越

46、長,流水線中的“氣泡氣泡”越多,越多,結(jié)果是性能的嚴(yán)重下降結(jié)果是性能的嚴(yán)重下降2級流水級流水取指取指-執(zhí)行執(zhí)行5級流水級流水取指取指-譯碼譯碼1/2-執(zhí)行執(zhí)行-寫回寫回10級流水級流水2031級級808680486Pentium IIIPentium 478超標(biāo)量與流水線超標(biāo)量與流水線 一條流水線不夠用,那就多條吧一條流水線不夠用,那就多條吧 超標(biāo)量流水線結(jié)構(gòu)超標(biāo)量流水線結(jié)構(gòu) 可是,問題在于可是,問題在于1 2 3N1 2 3N1 2 3N1 2 3N1 2 3N1 2 3N1 2 3N1 2 3N79指令的相關(guān)性指令的相關(guān)性 指令之間的相關(guān)性造成流水線中的競爭現(xiàn)指令之間的相關(guān)性造成流水線中的競爭現(xiàn)象象80當(dāng)流水線當(dāng)流水線“流流”不起來不

溫馨提示

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

最新文檔

評論

0/150

提交評論