計算機系統知識
關(guān)鍵詞:計算機的組成、基本工作原理、體系結構、存儲系統、計算機安全、可靠性與系統性能評測。
重點(diǎn):
(1)計算機的組成:計算機的發(fā)展以及硬件、軟件組成。
(2)計算機基本工作原理:數制,漢字編碼和CPU結構工作流程
(3)計算機體系結構:體系結構的發(fā)展和分類(lèi)、存儲系統、指令系統、輸入輸出技術(shù)、流水線(xiàn)、總線(xiàn)、并行處理。
(4)計算機系統的可靠性、性能評估
1計算機系統組成與基本工作原理
1.1 計算機系統組成
計算機系統分為硬件和軟件系統。計算機硬件是計算機系統中的物質(zhì)基礎,是摸得見(jiàn)看得著(zhù)的。計算機軟件是程序、數據、相關(guān)文檔的集合,包括系統軟件和應用軟件。計算機系統的組成如下:
1.2計算機硬件系統
計算機硬件5大組成部分:運算器、控制器、存儲器、輸入設備和輸出設備。
計算機硬件的電線(xiàn)結構包括:?jiǎn)慰偩€(xiàn)結構、雙總線(xiàn)結構和采用通道的大型系統結構。
單總線(xiàn)結構:使用一組系統總線(xiàn)將計算機的各個(gè)部件連接起來(lái),各部件通過(guò)總線(xiàn)交換信息。
一般用在小型或者微型計算機。
優(yōu)點(diǎn):易于擴充新I/O設備,I/O設備的寄存器和主存儲器可以統一編址使CPU訪(fǎng)問(wèn)I/O更 加靈活。
缺點(diǎn):限制了信息傳送的吞吐率。
雙總線(xiàn)結構:常見(jiàn)的就是在內存和CPU之間設置一組專(zhuān)有的高速存儲總線(xiàn)。分為以CPU為中心的雙總線(xiàn)和以存儲器為中心的雙總線(xiàn)。
以存儲器為中心的雙總線(xiàn)結構:
主存儲器通過(guò)存儲總線(xiàn)和CPU交換信息,同時(shí)可以通過(guò)系統總線(xiàn)與I/O設備交換信息。
優(yōu)點(diǎn):信息傳輸效率高。
缺點(diǎn):增加硬件成本。
以cpu為中心的雙總線(xiàn)結構:
優(yōu)點(diǎn):控制線(xiàn)路簡(jiǎn)單,對I/O的總線(xiàn)的要求低。
缺點(diǎn):CPU效率低。
采用通道的大型系統結構:一臺主機可以連接多個(gè)通道,一個(gè)通道可以連接一臺或多臺I/O設備,具有較大的擴展性。由通道控制I/O設備,減少了CPU的壓力,提高了系統效率。
1.3 基本工作原理
(1)數制轉換
10進(jìn)制轉換成其他的都是除以要轉換成的那個(gè)數,也就是說(shuō)轉換成二進(jìn)制的就除以2,轉換成八進(jìn)制的就除以8,轉換成十六進(jìn)制的就除以16,然后倒取余數。
不同的進(jìn)位制數轉化為十進(jìn)制數:按權展開(kāi)相加
十進(jìn)制是權是10;二進(jìn)制是權是2;十六進(jìn)制是權是16;八進(jìn)制是權是8;
例:110011(二進(jìn)制數)=1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+1*2^0=32+16+2+1=51
1507(八進(jìn)制數)=1*8^3 + 5*8^2 + 0*8^1 + 7*8^0 = 839
2AF5(十六進(jìn)制數)=2*16^3 + A*16^2+ F*16^1 + 5*16^0 = 10997
二進(jìn)制換算八進(jìn)制
將二進(jìn)制數從右到左,三位一組,不夠補0
例:二進(jìn)制數10110111011換八進(jìn)制數:
010 110 111 011
結果為:2673
二進(jìn)制轉換十六進(jìn)制
二進(jìn)制數轉換為十六進(jìn)制數的方法也類(lèi)似,從右到左,四位一組,不夠補0
如上題:
0101 1011 1011
結果為:5BB
(2)機器數與碼制
各種數據在計算機中表示的形式稱(chēng)為機器數,其特點(diǎn)是采用二進(jìn)制計數制,數的符號用0、1表示,小數點(diǎn)則隱含表示而不占位置。機器數對應的實(shí)際數值稱(chēng)為真值。
機器數有無(wú)符號數和帶符號數之分。無(wú)符號數表示正數,在機器數中沒(méi)有符號位。對于無(wú)符號數,若約定小數點(diǎn)的位置在機器數的最低位之后,則是純整數;若約定小數點(diǎn)的位置在機器數的最高位之前,則是純小數。對于帶符號數,機器數的最高位一晴地正負的符號位,其余位則表示數值。若約定小數點(diǎn)的位置在機器數的最低數值位之后,則是純整數;若約定小數點(diǎn)的位置 在機器數的最高數值位之前,則是純小數位。
為了便于運算,帶符號的機器右數可采用原碼,反碼和補碼等不同的編碼方法,機器數的這些編碼方法稱(chēng)為碼制。
1. 原碼表示法
數值X的原碼記為[X]原,最高位是符號位,0表示正號,1表示負號,其余位表示數值的絕對值。
2.反碼表示法
數值X的原碼記為[X]反,最高位是符號位,0表示正號,1表示負號,正數的反碼和原碼相同,負數的反碼則是其絕對值按位求反。
3.補碼表示法
數值X的原碼記為[X]補,最高位是符號位,0表示正號,1表示負號,正數的補碼與其原碼和反碼相同,負數的補碼則等于其反碼的末尾加1。
4.移碼表示法
.移碼表示法是在數X上增加一個(gè)偏移量來(lái)定義的,常用于表示浮點(diǎn)數中的階碼。如果機器字長(cháng)為n,在偏移2的(n-1)次方的情況下,只要將將碼的符號位取反便可獲得相應的移碼表示。
(3)漢字編碼
區位碼
為了使每一個(gè)漢字有一個(gè)全國統一的代碼,1980年,我國頒布了第一個(gè)漢字編碼的國家準: GB2312-80《信息交換用漢字編碼字符集》基本集,這個(gè)字符集是我國中文信息處理技術(shù)的發(fā)展基礎,也是目前國內所有漢字系統的統一標準。
所有的國標漢字與符號組成一個(gè)94×94的矩陣。在此方陣中,每一行稱(chēng)為一個(gè)"區",每一列稱(chēng)為一個(gè)"位",因此,這個(gè)方陣實(shí)際上組成了一個(gè)有94個(gè)區(區號分別為0 1到94)、每個(gè)區內有94個(gè)位(位號分別為01到94)的漢字字符集。一個(gè)漢字所在的區號和位號簡(jiǎn)單地組合在一起就構成了該漢字的"區位碼"。在漢字的區位碼中,高兩位為區號,低兩位為位號。
在區位碼中,01-09區為682個(gè)特殊字符,16~87區為漢字區,包含6763個(gè)漢字 。其中16-55區為一級漢字(3755個(gè)最常用的漢字,按拼音字母的次序排列),56-87區為二級漢字(3008個(gè)漢字,按部首次序排列)。
· 需要注意的是:區位碼通常都是用十進(jìn)制表示的,例如“誠”字的區位碼為1947,也就說(shuō)它位于19區第47個(gè)字符。
國標碼
國家標準代碼,簡(jiǎn)稱(chēng)國標碼,是中華人民共和國的中文常用漢字編碼集。國家標準強制標準冠以“GB”?,F時(shí)中華人民共和國官方強制使用GB 18030標準,但較舊的計算機仍然使用GB 2312。國標碼 =區位碼(16進(jìn)制化--區碼和位碼分別進(jìn)行16進(jìn)制轉化)+2020H。
機內碼
計算機只識別由0、1組成的代碼,ASCII碼是英文信息處理的標準編碼,漢字信息處理也必須有一個(gè)統一的標準編碼。 漢字交換碼(國標碼)主要用于漢字信息交換,我國國家標準局于1981年5月頒布了《信息交換用漢字編碼字符集——基本集》,代號為GB2312-80,共對6763個(gè)漢字和682個(gè)圖形字符進(jìn)行了編碼。
其編碼原則為:漢字用兩個(gè)字節表示,原則上,兩個(gè)字節可以表示 256×256=65536種不同的符號,作為漢字編碼表示的基礎是可行的。但考慮到漢字編碼與其它國際通用編碼,如ASCII西文字符編碼的關(guān)系,我國國家標準局采用了加以修正的兩字節漢字編碼方案,只用了兩個(gè)字節的低7位。這個(gè)方案可以容納128×128=16384種不同的漢字,但為了與標準ASCII碼兼容,每個(gè)字節中都不能再用32個(gè)控制功能碼和碼值為32的空格以及127的操作碼。所以每個(gè)字節只能有94個(gè)編碼。這樣,雙七位實(shí)際能夠表示的字數是:94×94=8836個(gè)。
機內碼 = 國標碼 + 8080H
機內碼 = 區位碼(16進(jìn)制化--區碼和位碼分別進(jìn)行16進(jìn)制轉化) + a0a0H
相互轉換
內碼轉換為區位碼
區位碼: 區碼=內碼高字節-0xa0
位碼=內碼低字節-0xa0
例如:“國”內碼為:0xb9,0xfa
16進(jìn)制表示的區位碼:0x19,0x5a
其區位碼(默認為10進(jìn)制):2590
區位碼轉換為內碼
內碼: 內碼高字節=區碼+0xa0
內碼低字節=位碼+0xa0
例如:“海”區位碼為:2603
16進(jìn)制表示的區位碼:0x1a,0x03
其內碼(默認為16進(jìn)制):0xba,0xa3
字模
漢字在顯示的時(shí)候,是以點(diǎn)陣的形式顯示出來(lái)的,常見(jiàn)到的有16*16點(diǎn)陣、24*24點(diǎn)陣、32*32點(diǎn)陣。比如說(shuō)“啊”的16*16點(diǎn)陣字模如下,共256Bits,占用32 Bytes:
0x00,0x00,0xf7,0x7e,0x95,0x04,0x95,0x04,0x96,0x74,0x96,0x54,0x95,0x54,0x95,0x54,0x95,0x54,0xf5,0x54,0x97,0x74,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x14,0x04,0x08
字模顯示的時(shí)候,以?xún)蓚€(gè)字節表示一行像素點(diǎn),16行就構成了一個(gè)完整的字模。屏幕在顯示的時(shí)候,1顯示為亮色,0顯示為背景色,這樣就能把字體顯示出來(lái)。
字庫
字庫,就是所有漢字字模的集合。顯然,在編排這些字模的時(shí)候需要一定的順序(規則),而這個(gè)規則就是“機內碼”。根據機內碼的漢字布局,將對應的漢字字模進(jìn)行整合,形成字庫文件。在使用的時(shí)候,應用程序根據漢字的機內碼,從字庫中找到對應的存儲位置,取出字模,進(jìn)行顯示。機內碼就是漢字在字庫中的索引。
在區位碼中,01-09區為682個(gè)特殊字符,16~87區為漢字區,有效漢字6768個(gè)。在制作字庫的時(shí)候把特殊字符刪除,只使用有效漢字區。也就是說(shuō)我們從第16區的第1位開(kāi)始進(jìn)行字模收集,當第16區收集結束,緊接著(zhù)收集第17區,直到第87區編排結束??偣彩占?/span>6768個(gè)漢字,占用空間216576 Bytes。
(4)CPU
CPU從邏輯上可以劃分成3個(gè)模塊,分別是控制器、運算器和內部寄存器,這三部分由CPU內部總線(xiàn)連接起來(lái)。如下所示:
控制器:控制單元是整個(gè)CPU的指揮控制中心,由指令寄存器IR(Instruction Register)、指令譯碼器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等,對協(xié)調整個(gè)電腦有序工作極為重要。它根據用戶(hù)預先編好的程序,依次從存儲器中取出各條指令,放在指令寄存器IR中,通過(guò)指令譯碼(分析)確定應該進(jìn)行什么操作,然后通過(guò)操作控制器OC,按確定的時(shí)序,向相應的部件發(fā)出微操作控制信號。操作控制器OC中主要包括節拍脈沖發(fā)生器、控制矩陣、時(shí)鐘脈沖發(fā)生器、復位電路和啟停電路等控制邏輯。
運算器:是運算器的核心??梢詧绦兴阈g(shù)運算(包括加減乘數等基本運算及其附加運算)和邏輯運算(包括移位、邏輯測試或兩個(gè)值比較)。相對控制單元而言,運算器接受控制單元的命令而進(jìn)行動(dòng)作,即運算單元所進(jìn)行的全部操作都是由控制單元發(fā)出的控制信號來(lái)指揮的,所以它是執行部件。
內部寄存器:包括CPU片內緩存和寄存器組,是CPU中暫時(shí)存放數據的地方,里面保存著(zhù)那些等待處理的數據,或已經(jīng)處理過(guò)的數據,CPU訪(fǎng)問(wèn)寄存器所用的時(shí)間要比訪(fǎng)問(wèn)內存的時(shí)間短。采用寄存器,可以減少CPU訪(fǎng)問(wèn)內存的次數,從而提高了CPU的工作速度。但因為受到芯片面積和集成度所限,寄存器組的容量不可能很大。寄存器組可分為專(zhuān)用寄存器和通用寄存器。專(zhuān)用寄存器的作用是固定的,分別寄存相應的數據。而通用寄存器用途廣泛并可由程序員規定其用途,通用寄存器的數目因微處理器而異。這個(gè)是我們以后要介紹這個(gè)重點(diǎn),這里先提一下。
我們將上圖細化一下,可以得出CPU的工作原理概括如下:

總的來(lái)說(shuō),CPU從內存中一條一條地取出指令和相應的數據,按指令操作碼的規定,對數據進(jìn)行運算處理,直到程序執行完畢為止。
上圖中我沒(méi)有畫(huà)總線(xiàn),只是用邏輯方式對其進(jìn)行呈現。原因早期Intel的微處理器,諸如8085,8086/8088CPU,普遍采用了地址總線(xiàn)和數據總線(xiàn)復用技術(shù),即將部分(或全部)地址總線(xiàn)與數據總線(xiàn)共用CPU的一些引腳。例如8086外部地址總線(xiàn)有20根,數據總線(xiàn)復用了地址總線(xiàn)的前16根引腳。復用的數據總線(xiàn)和地址總線(xiàn)雖然可以少CPU的引腳數,但卻引入了控制邏輯及操作序列上的復雜性。所以,自80286開(kāi)始,Intel的CPU才采用分開(kāi)的地址總線(xiàn)和數據總線(xiàn)。
不管是復用還是分開(kāi),對我們理解CPU的運行原理沒(méi)啥影響,上圖沒(méi)畫(huà)總線(xiàn)的目的就是怕有些人太過(guò)于追求細節,一頭扎下去,浮不起來(lái),不能從宏觀(guān)上藐視敵人。
OK,總結一下,CPU的運行原理就是:控制單元在時(shí)序脈沖的作用下,將指令計數器里所指向的指令地址(這個(gè)地址是在內存里的)送到地址總線(xiàn)上去,然后CPU將這個(gè)地址里的指令讀到指令寄存器進(jìn)行譯碼。對于執行指令過(guò)程中所需要用到的數據,會(huì )將數據地址也送到地址總線(xiàn),然后CPU把數據讀到CPU的內部存儲單元(就是內部寄存器)暫存起來(lái),最后命令運算單元對數據進(jìn)行處理加工。周而復始,一直這樣執行下去,天荒地老,??葜€,直到停電。
如果你對這段話(huà)還是覺(jué)得比較暈乎,那么就看我們老師是怎么講的:
1、取指令:CPU的控制器從內存讀取一條指令并放入指令寄存器。指令的格式一般是這個(gè)樣子滴:

操作碼就是匯編語(yǔ)言里的mov,add,jmp等符號碼;操作數地址說(shuō)明該指令需要的操作數所在的地方,是在內存里還是在CPU的內部寄存器里。
2、指令譯碼:指令寄存器中的指令經(jīng)過(guò)譯碼,決定該指令應進(jìn)行何種操作(就是指令里的操作碼)、操作數在哪里(操作數的地址)。
3、 執行指令,分兩個(gè)階段“取操作數”和“進(jìn)行運算”。
4、 修改指令計數器,決定下一條指令的地址。


聯(lián)系客服