前言
本文為本人自學(xué)《計(jì)算機(jī)組成原理》(唐朔飛編著/第2版)第一章內(nèi)容的總結(jié),全文描述約90%皆基于個(gè)人對(duì)書本內(nèi)容的理解朋截,對(duì)于大部分術(shù)語(yǔ)的概念解釋并不完全照搬書本,只為梳理自我對(duì)該專業(yè)的認(rèn)知(當(dāng)然以后或許還會(huì)優(yōu)化修改),不建議作為以考試為目的的參考資料。
計(jì)算機(jī)系統(tǒng)沥阳、軟硬件概念
計(jì)算機(jī)系統(tǒng)由硬件系統(tǒng)和軟件系統(tǒng)組成。
硬件:組成計(jì)算機(jī)系統(tǒng)的實(shí)體部分自点,例如CPU沪袭、存儲(chǔ)器、鍵盤樟氢、鼠標(biāo)冈绊、顯示器等。
軟件:存在于計(jì)算機(jī)系統(tǒng)的程序和數(shù)據(jù)埠啃,一般存放于計(jì)算機(jī)的主存和輔存中死宣。
軟件可分為系統(tǒng)軟件和應(yīng)用軟件。
系統(tǒng)軟件:用以管理計(jì)算機(jī)系統(tǒng)資源碴开,控制任務(wù)執(zhí)行毅该,監(jiān)視服務(wù),目的是讓計(jì)算機(jī)系統(tǒng)高效運(yùn)作潦牛。
應(yīng)用軟件:用戶為實(shí)現(xiàn)各種需求所編制的程序眶掌,如瀏覽器、通訊APP等巴碗。
軟件需要有硬件支撐才能運(yùn)行朴爬,而沒(méi)有軟件的硬件也相當(dāng)于一件普通固體,軟硬件之間相互依賴橡淆,具有同樣的重要性召噩。
計(jì)算機(jī)系統(tǒng)的層級(jí)
現(xiàn)代多層次結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng)的層級(jí)自頂向下普遍是:
應(yīng)用語(yǔ)言虛擬機(jī)級(jí):高級(jí)語(yǔ)言機(jī)器以上的層級(jí),該層級(jí)主要是為了滿足各種應(yīng)用軟件的設(shè)計(jì)需要逸爵,用以解釋應(yīng)用語(yǔ)言具滴。
高級(jí)語(yǔ)言虛擬機(jī)級(jí):將高級(jí)語(yǔ)言翻譯成匯編語(yǔ)言,或者直接翻譯成機(jī)器語(yǔ)言
匯編語(yǔ)言虛擬機(jī)級(jí):將匯編語(yǔ)言翻譯成機(jī)器語(yǔ)言
操作系統(tǒng)虛擬機(jī)級(jí):用以支持將高級(jí)語(yǔ)言和匯編語(yǔ)言翻譯成機(jī)器語(yǔ)言师倔,同時(shí)也管理計(jì)算機(jī)系統(tǒng)的軟硬件資源构韵,控制作業(yè)執(zhí)行,為用戶提供各種服務(wù)
傳統(tǒng)機(jī)器級(jí):微程序會(huì)將該層級(jí)中的每一條指令翻譯成一組微指令
微程序機(jī)器級(jí):由硬件執(zhí)行微指令
計(jì)算機(jī)體系結(jié)構(gòu)和計(jì)算機(jī)組成
計(jì)算機(jī)體系結(jié)構(gòu)和計(jì)算機(jī)組成是兩種不同的概念趋艘。
計(jì)算機(jī)體系結(jié)構(gòu)是構(gòu)成計(jì)算機(jī)系統(tǒng)的屬性疲恢,是概念性結(jié)構(gòu)和功能特性,能被對(duì)應(yīng)層級(jí)的程序員所見(jiàn)致稀。
計(jì)算機(jī)組成是計(jì)算機(jī)系統(tǒng)屬性的具體組成冈闭,其包含了對(duì)程序員透明的各種軟硬件細(xì)節(jié)。
例如抖单,指令集是計(jì)算機(jī)系統(tǒng)的屬性之一萎攒,屬于計(jì)算機(jī)體系結(jié)構(gòu)遇八,而組成指令集的方式如取指令、分析指令耍休、取操作數(shù)刃永、運(yùn)算、送結(jié)果等羊精,則是指令集的具體組成斯够,屬于計(jì)算機(jī)組成。
計(jì)算機(jī)硬件框圖
典型的馮·諾依曼計(jì)算機(jī)結(jié)構(gòu)硬件框圖有以下特征:
1.計(jì)算機(jī)系統(tǒng)有五大部件構(gòu)成喧锦,分別是運(yùn)算器读规、控制器、存儲(chǔ)器燃少、輸入設(shè)備束亏、輸出設(shè)備。
2.指令和數(shù)據(jù)都保存在存儲(chǔ)器中阵具,具有同等地位碍遍。
3.指令和數(shù)據(jù)都用二進(jìn)制數(shù)表示。
4.指令由操作碼和地址碼組成阳液,操作碼表示具體操作怕敬,地址碼則表示了操作對(duì)象所對(duì)應(yīng)存儲(chǔ)器中的具體位置。
5.指令按順序依次保存在存儲(chǔ)器中帘皿,通常被按順序執(zhí)行东跪,特定條件下,可根據(jù)運(yùn)算結(jié)果或設(shè)定的條件來(lái)改變執(zhí)行次序矮烹。
6.機(jī)器以運(yùn)算器為中心越庇,存儲(chǔ)器與輸入輸出設(shè)備之間的數(shù)據(jù)傳輸需要經(jīng)過(guò)運(yùn)算器。
五大部件的功能如下
運(yùn)算器:用以進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算奉狈,并將運(yùn)算結(jié)果保存在運(yùn)算器中。
控制器:用以控制涩惑、指揮程序和數(shù)據(jù)的輸入仁期、運(yùn)算和處理結(jié)果。
存儲(chǔ)器:用以存放程序和數(shù)據(jù)竭恬。
輸入設(shè)備:將用戶能識(shí)別的信息轉(zhuǎn)化成機(jī)器能識(shí)別的信息跛蛋。
輸出設(shè)備:將機(jī)器信息轉(zhuǎn)化成用戶能識(shí)別的信息并輸出。
由于輸入輸出設(shè)備和存儲(chǔ)器之間的數(shù)據(jù)傳送都需要通過(guò)運(yùn)算器來(lái)完成痊硕,每次數(shù)據(jù)經(jīng)過(guò)運(yùn)算器赊级,都使運(yùn)算器停止運(yùn)算,降低了系統(tǒng)工作效率岔绸,后來(lái)出現(xiàn)了以存儲(chǔ)器為中心的計(jì)算機(jī)結(jié)構(gòu)理逊。
而由于運(yùn)算器和控制器的電路結(jié)構(gòu)關(guān)聯(lián)緊密橡伞,人們后來(lái)將這兩個(gè)部件集成在同一芯片中,該芯片被稱作中央處理器(CPU)晋被,因此兑徘,現(xiàn)代計(jì)算機(jī)系統(tǒng)硬件結(jié)構(gòu)主要分為三大部分:CPU、主存羡洛、I/O設(shè)備(輸入輸出設(shè)備)挂脑。
其中CPU和主存合起來(lái)被稱為主機(jī)。
計(jì)算機(jī)工作步驟
計(jì)算機(jī)系統(tǒng)處理工作分為兩大步欲侮,第一步是上機(jī)前準(zhǔn)備崭闲,第二步是上機(jī)運(yùn)行。
上機(jī)前準(zhǔn)備分為建立數(shù)學(xué)模型威蕉、確定計(jì)算方法刁俭、編寫解題程序三步。
建立數(shù)學(xué)模型:將要處理的工作建立成一個(gè)可行的數(shù)學(xué)模型忘伞。
確定計(jì)算方法:將數(shù)學(xué)模型中的運(yùn)算方程簡(jiǎn)化為計(jì)算機(jī)能執(zhí)行的四則運(yùn)算(加薄翅、減、乘氓奈、除)方程翘魄。
編寫解題程序:對(duì)應(yīng)四則運(yùn)算方程來(lái)分步編寫能讓機(jī)器執(zhí)行的指令。
完成上機(jī)前的準(zhǔn)備后舀奶,就能進(jìn)行上機(jī)運(yùn)行操作暑竟。
計(jì)算機(jī)各部件概述
主存儲(chǔ)器:
主存儲(chǔ)器又稱主存,由存儲(chǔ)體育勺、各種邏輯部件和控制電路組成但荤。
存儲(chǔ)體內(nèi)有多個(gè)存儲(chǔ)單元,每個(gè)存儲(chǔ)單元由多個(gè)存儲(chǔ)基元(或稱存儲(chǔ)元件涧至、存儲(chǔ)元)組成腹躁,一個(gè)存儲(chǔ)基元可以包含一位二進(jìn)制數(shù)。
一個(gè)存儲(chǔ)單元包含一個(gè)存儲(chǔ)字南蓬,一個(gè)存儲(chǔ)字由一串二進(jìn)制代碼組成纺非,其存儲(chǔ)字長(zhǎng)就是二進(jìn)制代碼的位數(shù),通常有8位赘方、16位烧颖、32位等。
(可以這么粗略理解:1個(gè)存儲(chǔ)體 = 多個(gè)存儲(chǔ)單元窄陡;1個(gè)存儲(chǔ)單元 = 1個(gè)存儲(chǔ)字 = N個(gè)存儲(chǔ)基元?= N個(gè)二進(jìn)制代碼炕淮,其存儲(chǔ)字長(zhǎng)為N位。)
存儲(chǔ)體中的每個(gè)存儲(chǔ)單元都配有相應(yīng)的地址號(hào)跳夭,主存的工作方式是 根據(jù)這些地址號(hào)對(duì)相應(yīng)存儲(chǔ)單元的二進(jìn)制位進(jìn)行寫入或讀出涂圆,從而實(shí)現(xiàn)存取操作们镜,這種根據(jù)地址來(lái)訪問(wèn)存儲(chǔ)數(shù)據(jù)的方式稱為按地址訪問(wèn)存儲(chǔ)器,簡(jiǎn)稱為訪存乘综。
(早期計(jì)算機(jī)的機(jī)器指令字長(zhǎng)和數(shù)據(jù)字長(zhǎng)往往要與存儲(chǔ)字長(zhǎng)相等憎账,執(zhí)行一次訪存就能完成一個(gè)指令或數(shù)據(jù)的存取操作,隨著計(jì)算機(jī)的廣泛應(yīng)用以及解題精度的提高卡辰,指令字長(zhǎng)和數(shù)據(jù)字長(zhǎng)往往被要求是可變的胞皱,因而它們的字長(zhǎng)不再以存儲(chǔ)字長(zhǎng)為主,而是以字節(jié)(Byte)為單位九妈,8位稱作1字節(jié)反砌,而字長(zhǎng)必須是字節(jié)的整倍數(shù),例如可以是1字節(jié)萌朱、4字節(jié)等宴树。)
為了實(shí)現(xiàn)訪存,主存內(nèi)還配備了兩個(gè)寄存器晶疼,分別是MAR和MDR酒贬。
MAR(Memory Address Register,存儲(chǔ)地址寄存器)用以寄存將要訪問(wèn)的存儲(chǔ)單元的地址號(hào)翠霍,系統(tǒng)進(jìn)行訪存時(shí)锭吨,會(huì)根據(jù)MAR內(nèi)寄存的地址號(hào)來(lái)找到存儲(chǔ)體中對(duì)應(yīng)地址的存儲(chǔ)單元。
MAR位數(shù)是對(duì)應(yīng)存儲(chǔ)體內(nèi)的存儲(chǔ)單元個(gè)數(shù)的寒匙,它的位數(shù)必須要概括存儲(chǔ)體內(nèi)所有存儲(chǔ)單元的地址號(hào)零如,假設(shè)存儲(chǔ)體大小有1K,即擁有1024個(gè)(21?個(gè))存儲(chǔ)單元锄弱,那么對(duì)應(yīng)的MAR的位數(shù)就是10位考蕾,它概括了編號(hào)為 00 0000 0000 ~ 11 1111 1111 共計(jì)1024個(gè)地址號(hào)。
同理会宪,若知道MAR的位數(shù)肖卧,可以算出它對(duì)應(yīng)的存儲(chǔ)體的大小。
MDR(Memory Data Register掸鹅,存儲(chǔ)數(shù)據(jù)寄存器)用以取出對(duì)應(yīng)地址的存儲(chǔ)單元內(nèi)的數(shù)據(jù)喜命,或存放要保存在相應(yīng)地址的存儲(chǔ)單元內(nèi)的數(shù)據(jù)。
MDR位數(shù)是存儲(chǔ)單元的存儲(chǔ)字長(zhǎng)河劝。假設(shè)一個(gè)存儲(chǔ)體內(nèi)每個(gè)存儲(chǔ)單元的字長(zhǎng)為8位,而對(duì)應(yīng)MDR是用來(lái)寄存某個(gè)存儲(chǔ)單元的矛紫,那么MDR的位數(shù)自然也是存儲(chǔ)體內(nèi)存儲(chǔ)單元的位數(shù)赎瞎,也是8位。
(由于要完成完整的存取操作僅憑主存是不行的颊咬,還得依賴CPU务甥,而隨著超大規(guī)模集成電路的發(fā)展牡辽,現(xiàn)代計(jì)算機(jī)往往是將MAR和MDR集成到了CPU中,而非主存里敞临。)
運(yùn)算器:
上圖中的運(yùn)算器包含了3種寄存器(ACC态辛、MQ、X)和一個(gè)算術(shù)邏輯單元(ALU)挺尿。
ACC(Accumulator)為累加寄存器奏黑,用以存放被加數(shù)及和、被減數(shù)及差编矾、積高位熟史、被除數(shù)及余數(shù)。
MQ(Multiplier-Quotient Register)為乘商寄存器窄俏,用以存放乘數(shù)及積低位蹂匹、商堪侯。
X為操作數(shù)寄存器豺谈,用以存放加數(shù)茄茁、減數(shù)察净、被乘數(shù)揖曾、除數(shù)迈勋。
ALU(Arithmetic Logic Unit)為算術(shù)邏輯單元多矮,用以處理算術(shù)邏輯運(yùn)算氯析,是CPU的核心部件之一缎岗。
假設(shè)ACC中已經(jīng)留有上一次運(yùn)算的結(jié)果數(shù)據(jù)静尼,那么:
進(jìn)行加法操作的步驟為:
1.將從存儲(chǔ)體取出的數(shù)據(jù)(加數(shù))放進(jìn)X寄存器中。
2.ACC中的數(shù)據(jù)(被加數(shù)) + X寄存器中的數(shù)據(jù)(加數(shù))传泊。
3.將得出的結(jié)果(和)保存在ACC中鼠渺。
進(jìn)行減法操作的步驟為:
1.將從存儲(chǔ)體取出的數(shù)據(jù)(減數(shù))放進(jìn)X寄存器中。
2.ACC中的數(shù)據(jù)(被減數(shù)) - X寄存器中的數(shù)據(jù)(減數(shù))眷细。
3.將得出的結(jié)果(差)保存在ACC中拦盹。
進(jìn)行乘法操作的步驟為:
1.將從存儲(chǔ)體取出的數(shù)據(jù)(乘數(shù))放進(jìn)MQ寄存器中。
2.將ACC中的數(shù)據(jù)(被乘數(shù))放進(jìn)X寄存器中溪椎。
3.將ACC歸0普舆。
4.X寄存器的數(shù)據(jù)
MQ寄存器中的數(shù)據(jù)。
5.將得出的結(jié)果(乘積)的低位保留在MQ寄存器中校读,高位則保存在ACC寄存器中沼侣。
進(jìn)行除法操作的步驟為:
1.將從存儲(chǔ)體取出的數(shù)據(jù)(除數(shù))放進(jìn)X寄存器中。
2.ACC中的數(shù)據(jù)(被除數(shù))
X寄存器中的數(shù)據(jù)(減數(shù))歉秫。
3.將得出的結(jié)果(商)暫存在MQ中蛾洛,余數(shù)保存在ACC中。
4.可以將商保存在ACC中。
(不同的機(jī)器運(yùn)算器結(jié)構(gòu)并不相同轧膘,有的機(jī)器用MDR來(lái)替代X寄存器钞螟。)
控制器:
控制器相當(dāng)于計(jì)算機(jī)系統(tǒng)的神經(jīng)中樞,負(fù)責(zé)控制計(jì)算機(jī)各部件自動(dòng)谎碍、協(xié)調(diào)的運(yùn)作鳞滨。
控制器的工作方式分三步,分別是取指令蟆淀、分析指令以及執(zhí)行指令拯啦。
它由CU、PC和IR組成扳碍。
CU(Control Unit)即控制單元提岔,用以解釋指令,向各部件發(fā)送操作命令以執(zhí)行指令笋敞。
PC(Program Counter)即程序計(jì)數(shù)器碱蒙,存放將要訪問(wèn)的指令地址,與MAR有直接通道夯巷,每次指令執(zhí)行完畢后會(huì)自動(dòng)對(duì)本身所存地址值進(jìn)行+1操作赛惩,來(lái)達(dá)到依次訪問(wèn)指令地址的功能,直至機(jī)器停止作業(yè)為止趁餐。
IR(Instruction Register)即指令寄存器喷兼,用以接收MDR傳送過(guò)來(lái)的指令(取指令),也用以將指令的操作碼交由CU分析(分析指令后雷,記作OP(IR)→CU)季惯,以及將指令的地址碼交由MAR(記作Ad(IR)→MAR),來(lái)取得存儲(chǔ)體內(nèi)對(duì)應(yīng)數(shù)據(jù)臀突。
I/O:
I/O子系統(tǒng)包含各種I/O設(shè)備(Input-Ouput Equipment勉抓,輸入輸出設(shè)備)和接口,I/O設(shè)備通過(guò)接口與主機(jī)相連候学,接收主機(jī)發(fā)出的控制命令來(lái)完成相應(yīng)作業(yè)藕筋。
計(jì)算機(jī)的硬件性能指標(biāo)
計(jì)算機(jī)的硬件性能指標(biāo)主要體現(xiàn)在三個(gè)要素:機(jī)器字長(zhǎng)、存儲(chǔ)容量以及運(yùn)算速度梳码。
機(jī)器字長(zhǎng)
機(jī)器字長(zhǎng)是CPU一次操作能處理的數(shù)據(jù)的位數(shù)隐圾,通常跟CPU內(nèi)的寄存器有關(guān)。
機(jī)器字長(zhǎng)的大小掰茶,決定了CPU執(zhí)行指令的效率暇藏,假設(shè)CPU要做一次取指操作,若機(jī)器字長(zhǎng)比存儲(chǔ)單元字長(zhǎng)短濒蒋,則需要訪存兩次或以上才能完成叨咖。
存儲(chǔ)容量
存儲(chǔ)容量包括主存容量和輔存容量。
主存容量指存儲(chǔ)器內(nèi)存儲(chǔ)體所能容納的存儲(chǔ)基元的量,可由公式“存儲(chǔ)容量 = 存儲(chǔ)單元 ?存儲(chǔ)字長(zhǎng)”求得甸各。
輔存容量以字節(jié)為單位,1G = 1024 M = 1024??1024 K = 1024
?1024
?1024?Byte焰坪。
運(yùn)算速度
運(yùn)算速度的大小跟許多因素有關(guān)趣倾,諸如機(jī)器主頻、執(zhí)行的指令類型某饰、主存取指取數(shù)的速度等儒恋。
早期的運(yùn)算速度采取普通法,以機(jī)器執(zhí)行一次加法或乘法所需時(shí)間來(lái)衡量黔漂。
后來(lái)采取了吉普森(Gibson)法诫尽,綜合了每條指令所花時(shí)間及占總指令數(shù)的百分比來(lái)衡量,其公式為:
?=?
其中是運(yùn)算速度炬守,
是第i條指令所占總指令數(shù)的百分比牧嫉,
是執(zhí)行第i條指令所花時(shí)間。
如今常用來(lái)衡量運(yùn)算速度的有三種單位减途,分別是MIPS酣藻、CPI、FLOPS鳍置。
MIPS(Million Instruction Per Second)即百萬(wàn)條指令每秒辽剧,以在一秒內(nèi)執(zhí)行的指令條數(shù)來(lái)衡量。
CPI(Cycle Per Instruction)即每條指令所需時(shí)鐘周期(機(jī)器主頻的倒數(shù))數(shù)税产。
FLOPS(Floating Point Operation Per Second)即每秒內(nèi)所作的浮點(diǎn)運(yùn)算次數(shù)怕轿。
其他
指令示意圖
假設(shè)指令字長(zhǎng)為16位,其中6位為操作碼辟拷,其值為“000110”撞羽,10位為地址碼,其值為“0001100001”梧兼,其示意圖如下:
細(xì)化的計(jì)算機(jī)硬件框圖
執(zhí)行將某個(gè)數(shù)據(jù)從存儲(chǔ)體中取出來(lái)并放置ACC中的任務(wù)過(guò)程簡(jiǎn)圖
1.機(jī)器啟動(dòng)放吩,控制器將PC中的指令所在地址傳送至存儲(chǔ)器的MAR中。
2.CU命令存儲(chǔ)器執(zhí)行讀操作羽杰,通過(guò)MAR中的指令所在地址找到存儲(chǔ)體M中對(duì)應(yīng)指令渡紫。
3.存儲(chǔ)體在控制器的命令下將指令傳送至MDR中,完成讀操作考赛。
4.MDR將指令送至IR惕澎,至此完成取指令操作。
5.IR將指令中的操作碼交由CU颜骤,CU對(duì)指令的操作碼進(jìn)行分析唧喉,至此完成分析指令操作。
6.CU將IR中的指令地址碼送往MAR。
7.CU再次命令存儲(chǔ)器執(zhí)行讀操作八孝,通過(guò)MAR中的指令地址碼找到存儲(chǔ)體M中對(duì)應(yīng)數(shù)據(jù)董朝。
8.存儲(chǔ)體在控制器的命令下將數(shù)據(jù)傳送至MDR中,完成讀操作干跛。
9.CU將MDR中的數(shù)據(jù)傳送至ACC子姜,至此指令執(zhí)行完成,PC自動(dòng)將內(nèi)容中的值進(jìn)行+1操作楼入。