眾所周知粒督,計算機硬件主要由CPU(運算器和控制器)、存儲器(內(nèi)存和外存)牙丽、外部設(shè)備(輸入/輸出設(shè)備)等構(gòu)成简卧。那這幾個部件之間是如何協(xié)同工作的?下面逐一介紹這幾部件烤芦,以及這幾個部件之間協(xié)同工作方式举娩。
一、CPU:Central Processing Unit
中央處理器构罗,俗稱“計算機的大腦”铜涉。
1.1 CPU的組成
傳統(tǒng)上,CPU由控制器和運算器這兩個主要部件組成遂唧。
隨著集成電路技術(shù)的不斷發(fā)展和進(jìn)步芙代,新型CPU紛紛集成了一些原先置于CPU之外的分立功能部件,如浮點處理器盖彭、高速緩存(Cache)等纹烹,在大大提高CPU性能指標(biāo)的同時,也使得CPU的內(nèi)部組成日益復(fù)雜化召边。
1.1.1控制器
控制器是整個計算機系統(tǒng)的指揮中心铺呵。在控制器的指揮控制下,運算器隧熙、存儲器和輸入/輸出設(shè)備等部件協(xié)同工作片挂,構(gòu)成了一臺完整的通用計算機。
控制器根據(jù)程序預(yù)定的指令執(zhí)行順序贱鼻,從主存取出一條指令宴卖,按該指令的功能,用硬件產(chǎn)生所需的帶有時序標(biāo)志的一系列微操作控制信號邻悬,控制計算機內(nèi)各功能部件的操作症昏,協(xié)調(diào)和指揮整個計算機完成指令的功能。
控制器通常由程序計數(shù)器(PC)父丰、指令寄存器(IR)肝谭、指令譯碼器(ID)掘宪、時序發(fā)生器和操作控制器組成。其主要功能包括:
- 從主存中取出一條指令攘烛,并指出下一條指令在主存中的位置魏滚;
- 對指令進(jìn)行譯碼,并產(chǎn)生相應(yīng)的操作控制信號坟漱,以便啟動規(guī)定的動作泛释;
- 指揮并控制CPU阵面、主存和輸入/輸出設(shè)備之間數(shù)據(jù)流動的方向掂咒。
1.1.2運算器
運算器是計算機中用于實現(xiàn)數(shù)據(jù)加工處理等功能的部件侍匙,它接受控制器的命令,負(fù)責(zé)完成對操作數(shù)據(jù)的加工處理任務(wù)觅捆,其核心部件是算術(shù)邏輯單元(Arithmetic Logic Unit赦役,ALU)。
相對控制器而言栅炒,運算器接受控制器的命令而進(jìn)行動作掂摔,即運算器所進(jìn)行的全部操作都是由控制器發(fā)出的控制信號來指揮的,所以它是執(zhí)行部件赢赊。
運算器由算術(shù)邏輯單元(ALU)乙漓、累加寄存器(AC)、數(shù)據(jù)寄存器(DR)和程序狀態(tài)字寄存器(PSW)組成释移。它有兩個主要功能:
- 執(zhí)行所有的算術(shù)運算簇秒;
- 執(zhí)行所有的邏輯運算,并進(jìn)行邏輯測試秀鞭。
1.2 CPU中的主要寄存器
在CPU中至少要有六類寄存器:指令寄存器(IR)、程序計數(shù)器(PC)扛禽、地址寄存器(AR)锋边、數(shù)據(jù)寄存器(DR)、累加寄存器(AC)编曼、程序狀態(tài)字寄存器(PSW)豆巨。
這些寄存器用來暫存一個計算機字,其數(shù)目可以根據(jù)需要進(jìn)行擴充掐场。
下面詳細(xì)介紹這些寄存器的功能與結(jié)構(gòu)往扔。
1.2.1 數(shù)據(jù)寄存器(DR)
數(shù)據(jù)寄存器(Data Register,DR)主要作為CPU和主存熊户、外設(shè)之間信息傳輸?shù)闹修D(zhuǎn)站萍膛,用以彌補CPU和主存、外設(shè)之間操作速度上的差異嚷堡。
數(shù)據(jù)寄存器用來暫時存放由主存儲器讀出的一條指令或一個數(shù)據(jù)字蝗罗;反之,當(dāng)向主存存入一個數(shù)據(jù)字時,也暫時將它們存放在數(shù)據(jù)寄存器中串塑。
數(shù)據(jù)寄存器的作用是 :
- 作為CPU和主存沼琉、外圍設(shè)備之間信息傳送的中轉(zhuǎn)站;
- 彌補CPU和主存桩匪、外圍設(shè)備之間在操作速度上的差別打瘪;
- 在單累加器結(jié)構(gòu)的運算器中,數(shù)據(jù)寄存器還可兼作操作數(shù)寄存器傻昙。
1.2.2 指令寄存器
指令寄存器(Instruction Register闺骚,IR)用來保存當(dāng)前正在執(zhí)行的一條指令。
當(dāng)執(zhí)行一條指令時屋匕,先把該指令從主存讀取到數(shù)據(jù)寄存器中葛碧,然后再傳送至指令寄存器。
一條指令被劃分為操作碼和地址碼2個字段过吻。為了執(zhí)行任何給定的指令进泼,必須對操作碼進(jìn)行測試,以便識別所要求的操作纤虽。指令譯碼器(Instruction Decoder乳绕,ID)就是完成這項工作的。
指令譯碼器對來自指令寄存器的操作碼部分進(jìn)行譯碼逼纸,以產(chǎn)生操作性質(zhì)的控制電位洋措,并將其送到微操作控制線路上,在時序部件定時信號作用下杰刽,產(chǎn)生具體的操作控制信號菠发。
指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。操作碼一經(jīng)譯碼后贺嫂,即可向操作控制器發(fā)出具體操作的特定信號滓鸠。
1.2.3 程序計數(shù)器
程序計數(shù)器(Program Counter,PC)用來指出下一條指令在主存儲器中的單元地址第喳。
在程序執(zhí)行之前糜俗,首先必須將程序的首地址,即程序的第一條指令所在的主存單元地址送入PC曲饱。因此PC的內(nèi)容即是從主存提取的第一條指令的地址悠抹。
當(dāng)執(zhí)行指令時,CPU能自動遞增PC的內(nèi)容扩淀,使其始終保持將要執(zhí)行的下一條指令的主存地址楔敌,為取下一條指令做好準(zhǔn)備。若為單字長指令引矩,則(PC)+1?PC梁丘,若為雙字長指令侵浸,則(PC)+2?PC,以此類推氛谜。
但是掏觉,當(dāng)遇到轉(zhuǎn)移指令時,下一條指令的地址將由轉(zhuǎn)移指令的地址碼字段指定值漫,而不是像通常那樣通過順序遞增PC的內(nèi)容來取得澳腹。
因此,程序計數(shù)器的結(jié)構(gòu)應(yīng)當(dāng)是具有寄存信息和計數(shù)兩種功能的結(jié)構(gòu)杨何。
1.2.4 地址寄存器
地址寄存器(Address Register酱塔,AR)用來保存CPU當(dāng)前所訪問的主存單元的地址。
由于在主存和CPU之間存在操作速度上的差異危虱,所以必須使用地址寄存器來暫時保存主存的地址信息羊娃,直到主存的存取操作完成為止。
當(dāng)CPU和主存進(jìn)行信息交換埃跷,即CPU向主存存入/取出數(shù)據(jù)時蕊玷,或者CPU從主存中讀出指令時,都要使用地址寄存器和數(shù)據(jù)寄存器弥雹。
同樣垃帅,如果我們把外圍設(shè)備的設(shè)備地址作為像主存的地址單元那樣來看待,那么剪勿,當(dāng)CPU和外圍設(shè)備交換信息時贸诚,我們同樣要使用地址寄存器和數(shù)據(jù)寄存器。
1.2.5 累加寄存器
累加寄存器通常簡稱累加器(Accumulator厕吉,AC)酱固,是一個通用寄存器。
累加器的功能是:當(dāng)運算器的算術(shù)邏輯單元(ALU)執(zhí)行算術(shù)或邏輯運算時头朱,為ALU提供一個工作區(qū)媒怯,可以為ALU暫時保存一個操作數(shù)或運算結(jié)果。
顯然髓窜,運算器中至少要有一個累加寄存器。
1.2.6 程序狀態(tài)字寄存器
程序狀態(tài)字(Program Status Word欺殿,PSW)用來表征當(dāng)前運算的狀態(tài)及程序的工作方式寄纵。
程序狀態(tài)字寄存器保存由算術(shù)指令和邏輯指令運行或測試的結(jié)果所建立起來的各種條件碼內(nèi)容,如運算結(jié)果進(jìn)/借位標(biāo)志(C)脖苏、運算結(jié)果溢出標(biāo)志(O)程拭、運算結(jié)果為零標(biāo)志(Z)、運算結(jié)果為負(fù)標(biāo)志(N)棍潘、運算結(jié)果符號標(biāo)志(S)等恃鞋,這些標(biāo)志位通常分別用1位觸發(fā)器來保存崖媚。
除此之外,程序狀態(tài)字寄存器還保存中斷和系統(tǒng)工作狀態(tài)等信息恤浪,以便CPU和系統(tǒng)及時了解機器運行狀態(tài)和程序運行狀態(tài)畅哑。
因此,程序狀態(tài)字寄存器是一個保存各種狀態(tài)條件標(biāo)志的寄存器水由。
二荠呐、存儲器
存儲器由內(nèi)存儲器和外存儲器構(gòu)成,內(nèi)存儲器通常指的是內(nèi)存砂客,外存儲器通常指的是硬盤等泥张。
2.1 內(nèi)存
內(nèi)存是計算機中重要的部件之一,它是與CPU進(jìn)行溝通的橋梁鞠值。計算機中所有程序的運行都是在內(nèi)存中進(jìn)行的媚创,因此內(nèi)存的性能對計算機的影響非常大。內(nèi)存也被稱為內(nèi)存儲器彤恶,其作用是用于暫時存放CPU中的運算數(shù)據(jù)钞钙,以及與硬盤等外部存儲器交換的數(shù)據(jù)。只要計算機在運行中粤剧,CPU就會把需要運算的數(shù)據(jù)調(diào)到內(nèi)存中進(jìn)行運算歇竟,當(dāng)運算完成后CPU再將結(jié)果傳送出來,內(nèi)存的運行也決定了計算機的穩(wěn)定運行抵恋。
2.2 硬盤
硬盤(英語:Hard Disk Drive焕议,簡稱HDD)是電腦上使用堅硬的旋轉(zhuǎn)盤片為基礎(chǔ)的非揮發(fā)性存儲設(shè)備,它在平整的磁性表面存儲和檢索數(shù)字?jǐn)?shù)據(jù)弧关,信息通過離磁性表面很近的磁頭盅安,由電磁流來改變極性方式被電磁流寫到磁盤上,信息可以通過相反的方式讀取世囊,例如讀頭經(jīng)過紀(jì)錄數(shù)據(jù)的上方時磁場導(dǎo)致線圈中電氣信號的改變别瞭。硬盤的讀寫是采用隨機存取的方式,因此可以以任意順序讀取硬盤中的數(shù)據(jù)株憾。硬盤包括一至數(shù)片高速轉(zhuǎn)動的磁盤以及放在執(zhí)行器懸臂上的磁頭蝙寨。
三、指令
指令是計算機硬件能夠識別并直接執(zhí)行操作的命令嗤瞎,一臺計算機中所有指令的集合構(gòu)成了該計算機的指令系統(tǒng)墙歪。指令系統(tǒng)是表征一臺計算機性能的重要因素,其格式與功能不僅直接影響到機器的硬件結(jié)構(gòu)贝奇,也直接影響到系統(tǒng)軟件虹菲,影響到機器的適用范圍。因此掉瞳,設(shè)計一個合理有效毕源、功能齊全浪漠、通用性強并且豐富的指令系統(tǒng)是至關(guān)重要的。
從計算機組成的層次結(jié)構(gòu)來說霎褐,計算機的指令分為微指令址愿、機器指令和宏指令三類。微指令是微程序級的命令瘩欺,屬于硬件必盖;宏指令是由若干條機器指令組成的軟件指令,屬于軟件俱饿;機器指令歌粥,也就是我們通常所說的指令,介于微指令與宏指令之間拍埠,每條指令可完成一個獨立的算術(shù)運算或邏輯運算失驶。
3.1 指令系統(tǒng)的發(fā)展
回顧計算機的發(fā)展歷史,指令系統(tǒng)的發(fā)展經(jīng)歷了從簡單到復(fù)雜的演變過程枣购。早在1950-1960年代嬉探,計算機大多數(shù)采用分立元件的晶體管或電子管組成,其體積龐大棉圈,價格也很昂貴涩堤,因此計算機的硬件結(jié)構(gòu)比較簡單,所支持的指令系統(tǒng)也只有十幾至幾十條最基本的指令分瘾,而且尋址方式簡單胎围。到1960年代中期,隨著集成電路的出現(xiàn)德召,計算機的功耗白魂、體積、價格等不斷下降上岗,硬件功能不斷增強福荸,指令系統(tǒng)也越來越豐富。1960年代后期肴掷,開始出現(xiàn)系列計算機敬锐,即基本指令系統(tǒng)相同、基本體系結(jié)構(gòu)相同的一系列計算機呆瞻。
在1970年代滞造,高級語言已成為大、中栋烤、小型機的主要程序設(shè)計語言,計算機應(yīng)用日益普及挺狰。計算機設(shè)計者們利用當(dāng)時已經(jīng)成熟的微程序技術(shù)和飛速發(fā)展的VLSI技術(shù)明郭,增設(shè)各種各樣復(fù)雜的买窟、面向高級語言的指令,使指令系統(tǒng)越來越龐大薯定,按這種方法設(shè)計的計算機系統(tǒng)稱為復(fù)雜指令系統(tǒng)計算機(Complex Instruction Set Computer)始绍,簡稱CISC。如此龐大的指令系統(tǒng)不僅使計算機的研制周期變長话侄,難以保證正確性亏推,不易調(diào)試維護,而且采用了大量使用頻率很低的復(fù)雜指令而造成硬件資源的浪費年堆。為此吞杭,人們又提出了便于VLSI技術(shù)實現(xiàn)的精簡指令系統(tǒng)計算機(Reduced Instruction Set Computer),簡稱RISC变丧,它是一種計算機體系結(jié)構(gòu)的設(shè)計思想芽狗,是近代計算機體系結(jié)構(gòu)發(fā)展史中的一個里程碑。1990年代初痒蓬,IEEE的Michael Slater對于RISC的定義做了如下描述: RISC處理器所設(shè)計的指令系統(tǒng)應(yīng)使流水線處理能高效率執(zhí)行童擎,并使優(yōu)化編譯器能生成優(yōu)化代碼。
3.2 指令系統(tǒng)的性能要求
指令系統(tǒng)的性能決定了計算機的基本功能攻晒,其設(shè)計是計算機系統(tǒng)設(shè)計的一個核心問題顾复,不僅關(guān)系到計算機的硬件結(jié)構(gòu),同時關(guān)系到用戶的使用需要鲁捏。一個完善的指令系統(tǒng)應(yīng)滿足以下四個方面的要求:
1. 完備性
指令系統(tǒng)的完備性是指用匯編語言編寫各種程序時芯砸,指令系統(tǒng)直接提供的指令足夠使用,而不必用軟件來實現(xiàn)碴萧。一臺計算機中最基本和必不可少的指令構(gòu)成了指令系統(tǒng)的完備性乙嘀。而其他一些指令可以通過基本的指令來實現(xiàn),或者直接通過硬件來實現(xiàn)破喻,兩者只是在執(zhí)行時間和編寫程序的難易程度上有差別虎谢。在指令系統(tǒng)中采用硬件指令,是為了提高程序執(zhí)行的速度以及便于用戶編寫程序曹质。
2. 有效性
有效性是指利用該指令系統(tǒng)所提供的指令編寫的程序能夠高效率的運行婴噩。高效率主要表現(xiàn)在程序占據(jù)存儲空間小、執(zhí)行速度快羽德。通常几莽,一個功能完善的指令系統(tǒng)必定有很好的有效性。
3. 規(guī)整性
規(guī)整性是指指令系統(tǒng)的對稱性宅静、勻齊性章蚣、指令格式和數(shù)據(jù)格式的一致性。
指令的對稱性是指在指令系統(tǒng)中所有的寄存器和存儲器單元都可同等對待姨夹,所有的指令都可使用各種尋址方式纤垂,這對提高程序的可讀性和簡化程序設(shè)計帶來了便利之處矾策。
指令的勻齊性是指一種操作性質(zhì)的指令可以支持各種數(shù)據(jù)類型,例如算術(shù)運算指令可支持字節(jié)峭沦、字和雙字整數(shù)運算贾虽、十進(jìn)制數(shù)運算和單、雙精度浮點運算等吼鱼。因此程序設(shè)計者無須考慮數(shù)據(jù)類型而選用指令蓬豁,提高了編程效率。
指令的格式和數(shù)據(jù)格式的一致性是指指令長度和數(shù)據(jù)長度有一定的關(guān)系菇肃,以方便處理和存取地粪。
4. 兼容性
兼容性是指計算機的體系結(jié)構(gòu)設(shè)計基本相同,計算機之間具有相同的基本結(jié)構(gòu)巷送、數(shù)據(jù)表示和共同的基本指令集合驶忌,因此指令系統(tǒng)是兼容的,即同一個軟件可以不加修改就在其他系統(tǒng)結(jié)構(gòu)相同的機器上使用笑跛。目前付魔,除了系列計算機的指令系統(tǒng)兼容之外,新推出機種的指令系統(tǒng)包含所有舊機種的全部指令飞蹂,實現(xiàn)了 “向上兼容”几苍,即低檔機上運行的軟件不需任何修改便可在高檔機上運行。
四陈哑、相互之間的關(guān)系
可以用一幅圖來概括他們之間是如何協(xié)作使得計算機能夠正常工作妻坝,如圖所示: