為了解在計(jì)算機(jī)系統(tǒng)中,程序是如何運(yùn)行的,首先需要了解計(jì)算機(jī)系統(tǒng)的硬件組織。
1、總線
總線是貫穿整個(gè)系統(tǒng)一組電子管道,它攜帶信息字節(jié)并負(fù)責(zé)在各個(gè)部件間傳遞。通??偩€被設(shè)計(jì)成傳送特定長(zhǎng)的字節(jié)塊,也就是字(word)。字中的字節(jié)數(shù)是一個(gè)基本的系統(tǒng)參數(shù),各個(gè)系統(tǒng)中都不盡相同。如32位操作系統(tǒng)一個(gè)字長(zhǎng)是4個(gè)字節(jié),64位操作系統(tǒng)一個(gè)字長(zhǎng)是8個(gè)字節(jié)。
位(bit),音譯為“比特”,表示二進(jìn)制位。位是計(jì)算機(jī)內(nèi)部數(shù)據(jù)儲(chǔ)存的最小單位。
字節(jié)(byte) ,計(jì)算機(jī)中數(shù)據(jù)處理的基本單位,通常情況下一字節(jié)等于8位。
字 (word),計(jì)算機(jī)進(jìn)行數(shù)據(jù)處理時(shí),一次存取、加工和傳送的數(shù)據(jù)長(zhǎng)度稱為字。一個(gè)字通常由一個(gè)或多個(gè)(一般是字節(jié)的整數(shù)位)字節(jié)構(gòu)成。
2、I/O設(shè)備
I/O(輸入/輸出)設(shè)備是系統(tǒng)與外部世界的聯(lián)系通道,通常包括:
用戶輸入的鍵盤和鼠標(biāo);
用戶輸出的顯示器;
長(zhǎng)期存儲(chǔ)數(shù)據(jù)和程序的磁盤驅(qū)動(dòng)器(磁盤);
網(wǎng)絡(luò)設(shè)備等。
每個(gè)I/O設(shè)備都通過(guò)一個(gè)控制器或適配器與I/O總線相連。控制器和適配器的區(qū)別主要在于它們的封裝方式??刂破魇荌/O設(shè)備本身或者主板上的芯片組;適配器則是一塊插在主板槽上的卡。它們的功能都是在I/O總線和I/O設(shè)備之間傳遞信息。
3、主存
主存是一個(gè)臨時(shí)存儲(chǔ)設(shè)備,在處理器執(zhí)行程序時(shí),用來(lái)存放程序和程序處理的數(shù)據(jù)。從物理上來(lái)說(shuō),主存是由一組動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)芯片組成;從邏輯上來(lái)說(shuō),存儲(chǔ)器是一個(gè)線性的字節(jié)數(shù)組,每個(gè)字節(jié)都有其唯一的地址(數(shù)組索引),這些地址是從零開(kāi)始的。
一般來(lái)說(shuō),組成程序的每條機(jī)器指令都由不同數(shù)量的字節(jié)構(gòu)成。與C程序變量相對(duì)應(yīng)的數(shù)據(jù)項(xiàng)的大小是根據(jù)類型變化的,比如在x86-64機(jī)器上 ,short類型的數(shù)據(jù)需要2個(gè)字節(jié),int和float類型需要4個(gè)字節(jié),而long和double類型需要8個(gè)字節(jié)。
4、處理器
處理器CPU是解釋或執(zhí)行存儲(chǔ)在主存中指令的引擎。處理器的核心是一個(gè)大小為一個(gè)字的存儲(chǔ)設(shè)備(或寄存器),成為程序計(jì)數(shù)器(PC)。在任何時(shí)刻,PC都指向主存中的某條機(jī)器語(yǔ)言指令(即含有該條指令的地址)。
從系統(tǒng)通電開(kāi)始,直到系統(tǒng)斷電,處理器一直在不斷地執(zhí)行程序計(jì)數(shù)器指向的指令,再更新程序計(jì)數(shù)器,使其指向下一條指令。處理器看上去是按照一個(gè)非常簡(jiǎn)單的指令執(zhí)行模型來(lái)操作的,這個(gè)模型是由指令集架構(gòu)決定的。在這個(gè)模型中,指令按照嚴(yán)格的順序執(zhí)行,而執(zhí)行一條指令包含執(zhí)行一系列的步驟。處理器從程序計(jì)數(shù)器指向的內(nèi)存處讀取指令,解釋指令中的位,執(zhí)行該指令指示的簡(jiǎn)單操作,然后更新PC,使其指向下一條指令,而這條指令并不一定和內(nèi)存中剛剛執(zhí)行的指令相鄰。
這樣的簡(jiǎn)單操作并不多,它們圍繞著主存、寄存器文件和算數(shù)/邏輯單元進(jìn)行。寄存器文件是一個(gè)小的存儲(chǔ)設(shè)備,由一些單個(gè)字長(zhǎng)的寄存器組成,每個(gè)寄存器都有唯一的名字。算數(shù)/邏輯單元計(jì)算新的數(shù)據(jù)和地址值。CPU在指令的要求下可能會(huì)執(zhí)行下面這些操作。
加載:從主存復(fù)制一個(gè)字節(jié)或一個(gè)字到寄存器,以覆蓋寄存器原來(lái)的內(nèi)容。
存儲(chǔ):從寄存器復(fù)制一個(gè)字節(jié)或一個(gè)字到到主存的某個(gè)位置,以覆蓋這個(gè)位置上原來(lái)的內(nèi)容。
操作:把兩個(gè)寄存器的內(nèi)容復(fù)制到ALU,ALU對(duì)這兩個(gè)字做算術(shù)運(yùn)算,并將結(jié)果存放到一個(gè)寄存器中,以覆蓋該寄存器原來(lái)的內(nèi)容。
跳轉(zhuǎn):從指令本身中抽取一個(gè)字,并將這個(gè)字復(fù)制到程序計(jì)數(shù)器中,以覆蓋PC中原來(lái)的值。
處理器看上去是它的指令集架構(gòu)的簡(jiǎn)單實(shí)現(xiàn),但實(shí)際上現(xiàn)代處理器使用了非常復(fù)雜的機(jī)制來(lái)加速程序的執(zhí)行。
-
控制器
+關(guān)注
關(guān)注
112文章
16332瀏覽量
177808 -
cpu
+關(guān)注
關(guān)注
68文章
10854瀏覽量
211583 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7488瀏覽量
87849
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論