前記 對(duì)于半道入行編程的程序員,大部分對(duì)計(jì)算機(jī)的工作原理的了解都是有限的,,這些了解大部分都是在日常工作中去了解的,,其實(shí)對(duì)應(yīng)程序員來說不用深入了解理解計(jì)算機(jī)基本原理就足以應(yīng)付當(dāng)前的工作需要。然而多了解總比不了解要強(qiáng),,這也是筆者要整理此片文章的由衷,。 計(jì)算機(jī)系統(tǒng)概述1.計(jì)算機(jī)的分類 步入21世紀(jì)的你,如果還不知道“計(jì)算機(jī)”,,那你真的是OUT了,。計(jì)算機(jī)是20世紀(jì)人類最偉大的可選成就之一,話說計(jì)算機(jī)從總體上來說可分為電子模擬計(jì)算機(jī)和電子數(shù)字計(jì)算機(jī)兩大類,。電子模擬計(jì)算機(jī)主要是通過電壓電流模擬實(shí)現(xiàn)連續(xù)的數(shù)值運(yùn)算,,常被一些實(shí)驗(yàn)室的科研人員所熟知;而被大眾所熟知的則是電子數(shù)字計(jì)算機(jī),,也就是我們稱之為的“電腦”,,其主要是通過模擬數(shù)字實(shí)現(xiàn)非聯(lián)系的位運(yùn)算。 數(shù)字計(jì)算機(jī)根據(jù)計(jì)算機(jī)效率,、速度,、適用性等特點(diǎn),通常又分為專用計(jì)算機(jī)和通用計(jì)算機(jī)兩類,。專用計(jì)算機(jī),,顧名思義,其是專門為完成某一類工作而設(shè)計(jì)的,,所以其完成這項(xiàng)工作的效率極高,,但是其適用性就大打折扣了。通用計(jì)算機(jī)并非是為完成莫一項(xiàng)任務(wù)而設(shè)計(jì),,能夠兼容性完成多項(xiàng)任務(wù),,按照簡易程度、性能等特點(diǎn)又可以分為巨型機(jī),、大型機(jī)、中型機(jī),、微型機(jī)和單片機(jī)六類,,其體積,、功能、數(shù)據(jù)存儲(chǔ)量,、指令系統(tǒng)等從前到后依次高升,,但是其簡易性則依次降低。巨型機(jī)通常也成為“超級(jí)計(jì)算機(jī)”,,其結(jié)構(gòu)復(fù)雜,,運(yùn)算速度極快,數(shù)據(jù)存儲(chǔ)量大,,但是足夠龐大,;大中小型計(jì)算機(jī)主要是根據(jù)其體積來衡量劃定的;微型機(jī)簡稱為“微機(jī)”,,就是常見的個(gè)人計(jì)算機(jī)(PC),,其是由大規(guī)模的集成電路組成的體積較小的計(jì)算機(jī);單片機(jī)則是最為簡單的計(jì)算機(jī),,其主要是集成電路組成,,以至于其體積小,結(jié)構(gòu)簡單,。這些劃分只是根據(jù)其特點(diǎn)來區(qū)分的,,隨著大規(guī)模集成電路的迅速發(fā)展,今天的小型機(jī)可能是明天的微型機(jī),而今天的微型機(jī)可能是明天的單片機(jī),。 2.計(jì)算機(jī)的組成 計(jì)算機(jī)主要由硬件系統(tǒng)和軟件系統(tǒng)兩部分組成(相信是人都應(yīng)該看的到,,硬件是有型的實(shí)體,而軟件則是有型的虛構(gòu)體),,其中硬件構(gòu)成了計(jì)算機(jī)的物質(zhì)基礎(chǔ),,軟件則是計(jì)算機(jī)系統(tǒng)的應(yīng)用基礎(chǔ)。通俗的說,,軟件就是計(jì)算機(jī)上能看得到(當(dāng)然也有看不到的)但是摸不到的能夠協(xié)助完成工作的應(yīng)用程序,,例如Windows系統(tǒng)、硬件驅(qū)動(dòng)程序等其他應(yīng)用程序,;而硬件則是計(jì)算機(jī)的基本組件,,是看得到摸得到的物體,例如主板,、CPU等,。 2.1.硬件系統(tǒng)組成從理論上講,計(jì)算機(jī)的硬件系統(tǒng)主要由運(yùn)算器,、存儲(chǔ)器,、控制器、輸入設(shè)備和輸出設(shè)備五大部分組成(從名字上即可看出各個(gè)部件的作用),這種劃分方式稱為“馮諾依曼體系結(jié)構(gòu)”,。
運(yùn)算器(Datapath),,顧名思義就是進(jìn)行運(yùn)算的執(zhí)行部件。其主要功能是對(duì)數(shù)據(jù)進(jìn)行運(yùn)算的加工處理操作,,包括加,、減、乘,、除等數(shù)學(xué)算術(shù)運(yùn)算和與,、或、非等邏輯運(yùn)算,。運(yùn)算器主要由運(yùn)算邏輯單元(ALU)和寄存器兩部分元件組成,,其中寄存器用于提供參與運(yùn)算的數(shù)據(jù)或臨時(shí)保存運(yùn)算結(jié)果。通常情況下運(yùn)算器集成于CPU中央處理器中,。 實(shí)質(zhì)上運(yùn)算器采用的二進(jìn)制數(shù)制系統(tǒng),,其參與運(yùn)算的數(shù)是有二進(jìn)制表示(因?yàn)槎M(jìn)制數(shù)的運(yùn)算規(guī)律非常簡單,在電子線路中可以靈活的表示電子元件的狀態(tài),,其比較容易實(shí)現(xiàn)而且設(shè)備最?。T谶\(yùn)算過程中,,位數(shù)越多則運(yùn)算精度越高,,則其所需的電子元件就越多,現(xiàn)在常見的計(jì)算機(jī)運(yùn)算器支持的位數(shù)有8位,、16位,、32位或64位。
存儲(chǔ)器(Memory),,顧名思義就是用于存儲(chǔ)數(shù)據(jù)的部件,。其主要功能用于存放程序與數(shù)據(jù)(程序是計(jì)算機(jī)操作的依據(jù),數(shù)據(jù)是計(jì)算機(jī)操作的對(duì)象),,程序和數(shù)據(jù)在存儲(chǔ)器中以二進(jìn)制的方式表示,,每8位二進(jìn)制數(shù)碼劃分為一個(gè)存儲(chǔ)單元,必須通過地址來訪問該單元,,地址其實(shí)就是這個(gè)存儲(chǔ)單元的編號(hào),。 存儲(chǔ)器主要由存儲(chǔ)體、地址寄存器與譯碼線路,、讀寫電路與數(shù)據(jù)寄存器,、控制線路等元件構(gòu)成;通常情況下存儲(chǔ)器可分為內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器兩大類,,內(nèi)部存儲(chǔ)器就是我們常說的內(nèi)存(也稱為主存),,外部存儲(chǔ)器也就是常說的硬盤,、U盤等,也成為外存或輔存,,一般情況下外部存儲(chǔ)器也作為輸入/輸出設(shè)備,。
控制器(Control),是整個(gè)計(jì)算機(jī)的控制中心,,主要用來協(xié)調(diào)計(jì)算機(jī)各個(gè)組件的工作,完成程序信息的處理和數(shù)據(jù)的輸入/輸出,。它一般由指令寄存器,、狀態(tài)寄存器、指令編碼器,、時(shí)序電路和控制電路組成,。簡而言之,控制器就是協(xié)調(diào)指揮計(jì)算機(jī)各個(gè)部件工作的組件,。通常情況下控制器集成于CPU中央處理器中,。 程序是由指令序列組成的,其實(shí)執(zhí)行程序就是逐條執(zhí)行指令的過程,,實(shí)質(zhì)運(yùn)算器所完成的每一步運(yùn)算操作就是一條指令,。指令是由操作碼和地址碼組成,其實(shí)都是二進(jìn)制數(shù)碼,,其中操作碼即表示指令所要進(jìn)行的操作,,例如加、減,、存,、取等操作,地址碼表示參與運(yùn)算的數(shù)據(jù)的地址,,即在存儲(chǔ)單元中的位置,。控制器就是解析這條指令,,然后從存儲(chǔ)單元中取出數(shù)據(jù),,并進(jìn)行相應(yīng)的操作運(yùn)算。 計(jì)算機(jī)在進(jìn)行計(jì)算機(jī)時(shí),,指令必須按順序一條一條的執(zhí)行,。控制器的基本任務(wù)就是按照指令序列的順序,,先從存儲(chǔ)器取出一條指令放到控制器中,,并對(duì)該指令的操作碼由譯碼器進(jìn)行解析,然后根據(jù)譯碼對(duì)應(yīng)的操作進(jìn)行相應(yīng)的動(dòng)作行為,,這就是執(zhí)行指令的過程,;接著取出第二條指令,按照上述順序進(jìn)行執(zhí)行。過程中控制器會(huì)通過指令計(jì)數(shù)器來控制取指令的當(dāng)前位置,,每取出一條指令其計(jì)算器就會(huì)加1,,為取下一條指令做好準(zhǔn)備。
輸入設(shè)備(Input System),,輸入設(shè)備是計(jì)算機(jī)的重要外部設(shè)備,,其主要作用是將程序、原始數(shù)據(jù),、文字,、字符、控制命令或現(xiàn)場采集的數(shù)據(jù)等信息輸入到計(jì)算機(jī),,并轉(zhuǎn)換為二進(jìn)制格式保存在內(nèi)存中,。常見的輸入設(shè)備有鍵盤、鼠標(biāo)器,、光電輸入機(jī),、磁帶機(jī)、磁盤機(jī),、光盤機(jī)等,。 輸出設(shè)備(Output System),輸出設(shè)備是計(jì)算機(jī)的重要外部設(shè)備,,其主要作用是將計(jì)算機(jī)的運(yùn)算中間結(jié)果或最終結(jié)果,、機(jī)內(nèi)的各種數(shù)據(jù)符號(hào)及文字或各種控制信號(hào)等信息展示給用戶。常見的輸出設(shè)備有顯示器,、打印機(jī),、繪圖儀、音箱,、投影儀等,。
除過上面介紹的五部分外,計(jì)算機(jī)系統(tǒng)中還必須包括另一個(gè)部件——總線,??偩€是一組為系統(tǒng)部件之間數(shù)據(jù)傳送的公用信號(hào)線。具有匯集與分配數(shù)據(jù)信號(hào),、選擇發(fā)送信號(hào)的部件與接收信號(hào)的部件,、總線控制權(quán)的建立與轉(zhuǎn)移等功能。典型的微機(jī)計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)通常多采用單總線結(jié)構(gòu),,一般按信號(hào)類型將總線分為三組,,其中AB(Address Bus)為地址總線;DB(Data Bus)為數(shù)據(jù)總線,;CB(Control Bus)控制總線,。計(jì)算機(jī)通過總線將五大部件連接起來,,總線是它們相互通信的公共通路,主要任務(wù)是在各部件之間傳送地址信息,、數(shù)據(jù)信息和控制信息,。 2.1.硬件實(shí)物組成從實(shí)物上看,一般PC包括鍵盤,、鼠標(biāo),、顯示器、主機(jī)等大型部件組成,,而主機(jī)則是計(jì)算機(jī)的主體部分,,包括CPU、主板,、內(nèi)存條、顯卡,、聲卡,、網(wǎng)卡、硬盤以及其他媒體驅(qū)動(dòng)器組成(這些都是通常聽到的可見的實(shí)體物件),。
主板,,又稱主機(jī)板(Main Board)、系統(tǒng)板(System Board)或母板(Mother Board),,是計(jì)算機(jī)最重要的部件之一,。主板上包含了計(jì)算機(jī)的主要電路系統(tǒng),所有的計(jì)算機(jī)其他組件必須直接或間接依賴主板,,計(jì)算機(jī)的性能主要取決與主板,。主板其實(shí)可以看作一個(gè)設(shè)有多個(gè)接口的電路板,其中主要包括芯片,、插槽,、外設(shè)接口三大類組件。 芯片類主要有BIOS(Basic Input/Output System)芯片,,南北橋芯片和RAID控制芯片等,。BIOS芯片,即基本輸入/輸出系統(tǒng)芯片,,它是一個(gè)存儲(chǔ)器,,內(nèi)部保存著與主板搭配的基本輸入輸出系統(tǒng)程序,這個(gè)程序由芯片制造商制作并固化在芯片上的,;也可以說BIOS其實(shí)是一個(gè)底層軟件,,用于控制計(jì)算機(jī)的底層的輸入輸出操作,這個(gè)軟件可以識(shí)別各種硬件,,還可以設(shè)置引導(dǎo)系統(tǒng)的設(shè)備,,系統(tǒng)時(shí)間以及調(diào)整CPU外頻等,。因?yàn)锽IOS是存儲(chǔ)在BIOS芯片中的,而不是類似其他的外部存儲(chǔ)器中,,所以通常稱為“固件(Firmware)”,。隨之技術(shù)的不斷發(fā)展,現(xiàn)在的BIOS也支持重新寫入,,可以使計(jì)算機(jī)獲得更好的性能和支持,。 南/北橋芯片是兩個(gè)通信橋梁的兩個(gè)芯片,合成芯片組,。南橋芯片主要負(fù)責(zé)硬盤等存儲(chǔ)設(shè)備和PCI之間的數(shù)據(jù)流通,;北橋芯片主要負(fù)責(zé)處理CPU、內(nèi)存和顯卡三者間的數(shù)據(jù)流通,,一般發(fā)熱量較大,,位于散熱裝置附近。RAID控制芯片,,主要用于支撐硬盤,。 插槽類主要有CPU插槽、內(nèi)存插槽,、PCI插槽,、PCI Express插槽等。CPU插槽用于安裝CPU部件,,CPU部件必須與主板相互兼容才可以安裝,。內(nèi)存插槽主要用于安裝內(nèi)存條的卡槽,內(nèi)存種類,、數(shù)量和容量都有內(nèi)存插槽決定,。PCI插槽主要用于安裝調(diào)制解調(diào)器、聲卡,、網(wǎng)卡等設(shè)備,。PCI Express插槽主要用于安裝顯卡部件。 外設(shè)接口類主要有硬盤接口,、COM接口(串口),、PS/2接口、USB接口,、LPT接口(并口),、MIDI接口等。硬盤接口可分為IDE接口和SATA接口,,現(xiàn)在大多都是SATA硬件驅(qū)動(dòng)器接口,,這個(gè)接口的傳輸數(shù)據(jù)效率更高。COM接口用于連接串行鼠標(biāo)和外置調(diào)制解調(diào)器(Modem)等設(shè)備,,基本被淘汰,。PS/2接口用于連接鍵盤或鼠標(biāo),,臺(tái)式機(jī)存在。USB接口使用較為廣泛,,大多數(shù)外置設(shè)備都支持這個(gè)接口,,該接口支持即插即用,。LPT接口用于連接打印機(jī)或掃描儀等,。MIDI接口主要用于MIDI設(shè)備,用于與其它控制設(shè)備相互通信,。 綜上所述,,主板在計(jì)算機(jī)中起到了舉足輕重的作用,通過各種控制信號(hào)來管理各種電子容器,,從而達(dá)到不同的效果,,幾乎所有的外設(shè)接口都直接或間接的與主板相關(guān)聯(lián),大部分的硬件設(shè)備必須與主板相兼容才能正常運(yùn)行,,也可以說主板可以決定其它的部件,。主板可以看著各個(gè)部件協(xié)調(diào)工作的場所,提供各個(gè)不僅相互協(xié)調(diào)工作的數(shù)據(jù)流通,,主板內(nèi)部自身供電裝置維護(hù)其內(nèi)部BIOS的運(yùn)行。
CPU(Central Processing Unit),,一個(gè)耳熟能詳?shù)慕M件,,被親切的稱之為“中央處理器”,它是整個(gè)計(jì)算機(jī)的運(yùn)算核心和控制核心,。其主要功能是解釋計(jì)算機(jī)指令以及處理程序中的數(shù)據(jù),。CPU由運(yùn)算器(包含寄存器)和控制以及總線組成,CPU的工作過程分為提?。‵etch),、解碼(Decode)、執(zhí)行(Execute)和寫回(Writeback)四個(gè)步驟,。 程序是有指令(指令就是二進(jìn)制數(shù)碼組合)構(gòu)成的序列,,執(zhí)行程序就是按指令序列逐條執(zhí)行指令。當(dāng)打開某個(gè)程序時(shí),,會(huì)由運(yùn)行平臺(tái)將該程序解析為指令序列并保存在存儲(chǔ)器中,,然后CPU取出指令序列逐條執(zhí)行。CPU首先從存儲(chǔ)器或高速緩沖存儲(chǔ)器中檢索指令,;然后根據(jù)CPU固有的指令集架構(gòu)(ISA)的定義將提取的指令數(shù)值解釋為CPU能夠識(shí)別的指令碼(運(yùn)算碼和運(yùn)算目標(biāo)等),;緊接著執(zhí)行CPU指令碼,根據(jù)指令碼對(duì)應(yīng)的控制信號(hào)連接到各種能夠進(jìn)行所需運(yùn)算的其它部件并控制其作出相應(yīng)動(dòng)作,,從而達(dá)到運(yùn)算效果,;最終將運(yùn)算結(jié)果寫回到CPU內(nèi)部的寄存器(暫存器),,CPU運(yùn)算大致就是這個(gè)過程。 CPU是計(jì)算機(jī)最重要的組件之一,,提供指令控制,、操作控制、時(shí)間控制,、數(shù)據(jù)加工等功能,,其中指令控制主要是指控制指令執(zhí)行的順序;操作控制主要是指根據(jù)對(duì)應(yīng)的指令產(chǎn)生相應(yīng)的操作控制信號(hào)發(fā)送給相應(yīng)的部件并控制這些部件按指令的要求進(jìn)行動(dòng)作,;時(shí)間控制主要是指對(duì)各種操作定制時(shí)間的的設(shè)定,;數(shù)據(jù)加工是最重要的功能,主要是進(jìn)行數(shù)據(jù)的運(yùn)算處理,。 CPU的性能決定了計(jì)算機(jī)的性能,,然而外部又受主板的牽制。CPU的字長,、工作頻率,、Cache容量、指令系統(tǒng)和邏輯結(jié)構(gòu)決定了一個(gè)CPU的性能,,其中字長表示CPU一次最多可同時(shí)傳送和處理的二進(jìn)制數(shù)碼位數(shù),,現(xiàn)在常見的有32位和64位;工作頻率(也稱主頻)就是CPU的處理數(shù)據(jù)的速度,,單位為兆赫茲(MHz)或千兆赫茲(GHz),,通常情況下頻率越高運(yùn)算數(shù)據(jù)的速度越快,當(dāng)然這只是一個(gè)大致概念,,通常情況下CPU的實(shí)際運(yùn)算速率還受CPU的流水線,、總線等各方面性能的影響;緩存(Cache)容量也是CPU處理數(shù)據(jù)速率的重要指標(biāo),,緩存主要用于臨時(shí)存儲(chǔ)指令或參與CPU運(yùn)算的數(shù)據(jù),,減少數(shù)據(jù)傳輸?shù)臅r(shí)間,現(xiàn)在的CPU大多設(shè)有2級(jí)緩存,;CPU指令系統(tǒng)是CPU內(nèi)部基礎(chǔ)的與硬件電路相配合的指令系統(tǒng),,也成為指令集,是CPU處理數(shù)據(jù)效率的重要衡量標(biāo)準(zhǔn),,指令集用于控制各個(gè)部件的協(xié)調(diào)工作,。 綜上所述,CPU是計(jì)算機(jī)的“大腦”,,是控制其它組件協(xié)調(diào)工作的的部件,,是計(jì)算機(jī)數(shù)據(jù)運(yùn)算的場所。CPU內(nèi)部包含了其獨(dú)立的指令集,,所有的程序都將被解析為該CPU對(duì)應(yīng)的指令序列才能正常執(zhí)行,,CPU必須具備數(shù)據(jù)通信,,資源共享,分布式處理和提供系統(tǒng)可靠性等特點(diǎn),。理論上將CPU頻率越高,、指令系統(tǒng)越高級(jí)、緩存越大,,其處理數(shù)據(jù)的數(shù)度就越快,,然而其必須要與對(duì)應(yīng)的主板相兼容才可體系性能,否則將無法運(yùn)行,,即時(shí)可以運(yùn)行則也是大材小用,。
內(nèi)存條也是計(jì)算機(jī)的重要組件之一,是計(jì)算機(jī)中最為主要的寄存器,。內(nèi)存條在計(jì)算機(jī)中主要作用是緩沖數(shù)據(jù)和數(shù)據(jù)交換,,主要負(fù)責(zé)硬盤等存儲(chǔ)器與CPU通信的臨時(shí)數(shù)據(jù)的傳輸或存儲(chǔ)。程序在運(yùn)行時(shí)會(huì)將與程序相關(guān)的指令信息加載到內(nèi)存中,,CPU直接與內(nèi)存進(jìn)行通信,,來提取指令信息并執(zhí)行,CPU在內(nèi)存中通過直接尋址的方式進(jìn)行提取指令信息,。舉個(gè)最簡單的例子就是我們寫入一個(gè)記事本文件時(shí),,如果沒有保存則其記事本中的字符信息都保存在內(nèi)存中,當(dāng)保存后才會(huì)寫到硬盤上,。 常說的內(nèi)存大多數(shù)指的就是內(nèi)存條,,但也不完全是。內(nèi)存是一種存儲(chǔ)單元,,包括隨機(jī)存儲(chǔ)器(RAM),、只讀存儲(chǔ)器(ROM)和高速緩存(Cache)三部分,。ROM(Read> 隨著科技的發(fā)展,,現(xiàn)在的內(nèi)存條的存儲(chǔ)空間也越來越大,臨時(shí)存儲(chǔ)的數(shù)據(jù)也越來越多,,所以擁有大內(nèi)存的計(jì)算機(jī)遠(yuǎn)比小內(nèi)存的計(jì)算機(jī)運(yùn)行要流暢,,然而并不是越大的內(nèi)存空間就越好,其首先收到主板的牽制,,其次還收到CPU總線的限制,,如果CPU總線不及則又是大材小用,如果內(nèi)存空間不足則CPU無法最高效運(yùn)作,。 綜上所述,,內(nèi)存條也是計(jì)算機(jī)的必要組件之一,大內(nèi)存的內(nèi)存條往往會(huì)是計(jì)算機(jī)的程序運(yùn)行更流暢,,但是前提是必須與主板接口相兼容,。
顯卡全稱顯示接口卡,,也稱顯示適配器、顯示器配置卡,,是PC中一個(gè)重要的組件,,主要用于將計(jì)算機(jī)系統(tǒng)輸出的信息進(jìn)行轉(zhuǎn)換并向顯示器提供掃描信號(hào)。顯卡基本上包括GPU(Graphic Processing Unit,,圖形處理器),、顯存兩個(gè)重要部件。 GPU,,即圖形處理器,,相對(duì)應(yīng)CPU的一個(gè)概念,在早期圖形處理部分主要由CPU來完成,,而現(xiàn)在圖形處理變得越來越重要,,所以必須一個(gè)核心的圖形處理器來完成這個(gè)工作,從而減少對(duì)CPU的依賴,,所以就出現(xiàn)了GPU,,主要用于將輸出信號(hào)進(jìn)行幾何轉(zhuǎn)換和光照處理以及像素和色彩渲染等處理。顯存是顯示內(nèi)存的簡稱,,其和內(nèi)存的作用基本一致,,其主要用于暫時(shí)存儲(chǔ)顯示芯片要處理的數(shù)據(jù)和處理完畢的數(shù)據(jù),通常情況下顯存越大其圖形顯示的性能就越強(qiáng),。 現(xiàn)在的顯卡基本分為獨(dú)立顯卡,、集成顯卡兩大類,其中集顯就是將顯示芯片,、顯存等集成在主板上,;獨(dú)顯則是將顯示芯片、顯存等坐在一個(gè)插卡上,,通過主板接口插槽插入運(yùn)行,,當(dāng)然現(xiàn)在也有雙顯卡兼容工作的模式。需要注意的是顯卡也受主板的約束,。
聲卡,,亦稱為音頻卡,是多媒體技術(shù)中的基本組成部分,,實(shí)現(xiàn)聲波/數(shù)組信號(hào)相互轉(zhuǎn)換的一種組件,。聲卡主要用于將原始聲音數(shù)據(jù)轉(zhuǎn)換為聲音信號(hào)并輸出到不同的聲響設(shè)備。聲卡主要包括聲音控制芯片,、數(shù)字信號(hào)處理器等部件組成,。 聲音控制芯片主要將從輸入設(shè)備中獲取的聲音模擬信號(hào)通過模數(shù)轉(zhuǎn)換器,將聲波信號(hào)轉(zhuǎn)換為一串?dāng)?shù)字信號(hào)并存儲(chǔ)在儲(chǔ)存器中;數(shù)字信號(hào)處理器是一種聲音數(shù)字處理器,,將信號(hào)交由該處理器處理減輕了CPU的工作負(fù)擔(dān),。 現(xiàn)在聲卡基本分為板卡式、集成式和外置式三種接口類型,。
網(wǎng)卡,,全稱網(wǎng)絡(luò)接口板,又稱通信適配器或完了接口卡(NIC,,Network Interface Card),。網(wǎng)卡是計(jì)算機(jī)進(jìn)行網(wǎng)絡(luò)通信必備的硬件設(shè)備,它屬于網(wǎng)絡(luò)協(xié)議(OSI模型)中的鏈路層組件,,主要用于網(wǎng)絡(luò)中電信號(hào)的匹配,、傳輸、編碼和解碼等工作,。 網(wǎng)卡主要有處理器和存儲(chǔ)器兩大部件組成,,其中存儲(chǔ)器,也就是網(wǎng)卡的ROM中保存這該網(wǎng)卡的基本信息,,其中有標(biāo)識(shí)該網(wǎng)卡唯一的MAC地址,,是一個(gè)獨(dú)一無二的48位串行號(hào)(任何兩塊網(wǎng)卡的MAC地址都不會(huì)重復(fù));處理器則用于對(duì)電信號(hào)進(jìn)行傳輸,、解碼以及編碼工作(在網(wǎng)絡(luò)通信中實(shí)際傳輸?shù)氖请娦盘?hào),,由網(wǎng)卡負(fù)責(zé)將電信號(hào)進(jìn)行編碼和解碼)。 網(wǎng)卡在局域網(wǎng)之間的通信是通過電纜或雙絞線以串行傳輸方式進(jìn)行的,,而在計(jì)算機(jī)之間的通信則是通過計(jì)算機(jī)主板上的I/O總線以窗口并行傳輸方式進(jìn)行的,。所以網(wǎng)卡的一個(gè)重要功能就是進(jìn)行串行/并行轉(zhuǎn)換。網(wǎng)卡一般具備數(shù)據(jù)的封裝和解封,、鏈路管理以及編碼(曼徹斯特編碼)和移碼三大功能,。 現(xiàn)在的網(wǎng)卡基本分為有線網(wǎng)卡和無線網(wǎng)卡兩種,其中有線網(wǎng)卡則為標(biāo)準(zhǔn)通用化網(wǎng)卡設(shè)備,,無線網(wǎng)卡主要是一個(gè)電信號(hào)接受和發(fā)送的設(shè)備,,其標(biāo)準(zhǔn)主要使用數(shù)據(jù)傳輸速率來衡量。 當(dāng)然還有其他的設(shè)備,,這里就不一一介紹了,。 說點(diǎn)題外話,,個(gè)人認(rèn)為計(jì)算機(jī)的主板,、CPU和內(nèi)存比較重要,畢竟內(nèi)存和CPU寄存于主板之上,,盲目的追求高內(nèi)存和CPU并不一定能夠使其發(fā)揮到更好的工作效果,,但也不排除高內(nèi)存和CPU的確能夠是計(jì)算機(jī)高效工作。追求高配是現(xiàn)在的潮流,追求之前一定得讓主板所能承受才可,。 2.3.軟件系統(tǒng)組成 對(duì)于計(jì)算機(jī)的軟件系統(tǒng),,這里不想多說,做IT的你不知道軟件,,那也甭做了,,還是回家種地吧。話說計(jì)算機(jī)的軟件系統(tǒng)可以分為系統(tǒng)程序和應(yīng)用程序兩大類,。 系統(tǒng)程序是為了簡化程序設(shè)計(jì)和使用方法而出現(xiàn)的一類高效的軟件程序,,包括服務(wù)性程序、語言處理程序,、操作系統(tǒng),、數(shù)據(jù)庫管理系統(tǒng)。應(yīng)用程序是用戶利用計(jì)算機(jī)來解決問題而編制的程序,。 軟件(Software)是計(jì)算機(jī)系統(tǒng)中使用的各種程序,,而軟件系統(tǒng)是指揮整個(gè)計(jì)算機(jī)硬件系統(tǒng)工作的程序集合。在計(jì)算機(jī)中的程序劃分為微程序設(shè)計(jì)級(jí),、機(jī)器語言級(jí),、操作系統(tǒng)級(jí)、匯編語言級(jí)和高級(jí)語言級(jí)五大級(jí)別,。微程序設(shè)計(jì)級(jí)別是一種純硬件級(jí)別的程序設(shè)計(jì),,一般就是定義其硬件的指令系統(tǒng),由機(jī)器硬件直接執(zhí)行,。機(jī)器語言級(jí)別也是硬件級(jí)別的程序設(shè)計(jì),,一般是借用微程序的指令系統(tǒng)實(shí)現(xiàn)程序設(shè)計(jì),由微程序去執(zhí)行的,。操作系統(tǒng)級(jí)別屬于一種軟硬件混合級(jí)別的程序設(shè)計(jì),,一般涉及軟硬件指令的引用,主要在操作系統(tǒng)的控制下去調(diào)用軟硬件資源協(xié)調(diào)工作,,實(shí)際底層是一般機(jī)器去執(zhí)行的,。匯編語言級(jí)別的程序一般使用匯編語言編寫,由匯編程序的支持和執(zhí)行,。高級(jí)語言級(jí)別的程序采用的是高級(jí)程序設(shè)計(jì)語言編寫,,一般為一種純粹的軟件程序,由對(duì)應(yīng)程序設(shè)計(jì)語言的編譯和執(zhí)行程序支持和執(zhí)行,,這一級(jí)別的程序也稱為用戶程序?,F(xiàn)在我們所做的程序大多都是建立在操作系統(tǒng)級(jí)別之上的匯編語言程序和高級(jí)語言程序。 然而隨之技術(shù)的發(fā)展,,現(xiàn)在的軟硬件的界限也模糊不清了,,隨之只讀存儲(chǔ)器的出現(xiàn),,現(xiàn)下大多數(shù)的硬件設(shè)備都是集成式(也稱嵌入式)的,其內(nèi)部都包含一個(gè)只讀存儲(chǔ)區(qū),,存儲(chǔ)著其對(duì)應(yīng)的固有的軟件程序,,這樣的部件我也稱之為固件。 談到軟件,,就不得不說程序設(shè)計(jì)語言,,何為程序設(shè)計(jì)語言?程序設(shè)計(jì)語言就是使用約定的符號(hào)編寫計(jì)算機(jī)程序的語言,,簡單的說是用來制作計(jì)算機(jī)軟件程序的語言,,例如匯編、C,、Java,、PHP等等都是程序設(shè)計(jì)語言。現(xiàn)下的程序設(shè)計(jì)語言可分為機(jī)器語言,、匯編語言和高級(jí)語言三大類,。機(jī)器語言是一種用二進(jìn)制形式表示并且能夠直接被計(jì)算機(jī)硬件識(shí)別和執(zhí)行的語言,機(jī)器語言也機(jī)器本身結(jié)構(gòu)有關(guān),,不同的機(jī)器其機(jī)器語言也不同,,使用機(jī)器語言編寫的程序成為i額機(jī)器語言程序。匯編語言是一種將機(jī)器語言符號(hào)化的語言,,它使用字母,、符號(hào)和數(shù)字來代替數(shù)字編碼的機(jī)器指令,匯編語言的語句與機(jī)器指令一一對(duì)應(yīng),,所以不同的機(jī)器也具有不同的匯編語言,,用匯編語言編寫的程序稱為匯編語言程序;例如Nasm,、Masm,、Tasm等都屬于匯編語言程序。高級(jí)語言是一種與計(jì)算機(jī)結(jié)構(gòu)不相關(guān)的,,表達(dá)方式接近于被描述問題的程序設(shè)計(jì)語言,,高級(jí)語言程序在計(jì)算機(jī)中需要利用其對(duì)應(yīng)的編譯程序或解釋執(zhí)行程序?qū)⑵浞g為對(duì)應(yīng)的機(jī)器語言程序才可以執(zhí)行;例如Basic,、Fortran,、Pascal、C語言,、Delphi,、C++、 Java等都屬于高級(jí)語言程序,。然而高級(jí)語言又可以劃分為面向過程式語言,、面向?qū)ο笫秸Z言等。 計(jì)算機(jī)存儲(chǔ)系統(tǒng)1.存儲(chǔ)器的分類 存儲(chǔ)器是計(jì)算機(jī)的基本部件之一,,其按照不同的衡量標(biāo)準(zhǔn)可以劃分為不同的類別,。最常見就是根據(jù)其本質(zhì)讀寫能力劃分為只讀存儲(chǔ)器(ROM,Read-Only Memory)和隨機(jī)讀寫存儲(chǔ)器(RAM,,Random Access Memory),。只讀存儲(chǔ)器中存儲(chǔ)的內(nèi)容是不可變的,只能讀取數(shù)據(jù)而不能寫入數(shù)據(jù),,所以常用于保存一些硬件設(shè)備的基本信息,,其存儲(chǔ)的數(shù)據(jù)是永久的,斷電后可以保留,;隨機(jī)讀寫存儲(chǔ)器中存儲(chǔ)的內(nèi)容是可變的,,既可以寫入數(shù)據(jù)也可以讀取數(shù)據(jù),其存儲(chǔ)的數(shù)據(jù)并不是永久的,,斷電后則就會(huì)丟失,。隨之ROM的發(fā)展可分為掩模式ROM(不可修改)、可編程ROM(PROM),、可擦除PROM(EPROM),、電可擦除PROM(EEPROM)和閃存(Flash Memory),現(xiàn)在所用ROM存儲(chǔ)器基本上都支持重新寫入,。RAM可以非為SRAM(靜態(tài)RAM)和DRAM(動(dòng)態(tài)RAM)兩種類型,。 存儲(chǔ)器根據(jù)在計(jì)算機(jī)系統(tǒng)中的作用和角色則分為寄存器(控制存儲(chǔ)器)、高速緩沖存儲(chǔ)器,、內(nèi)存(主存儲(chǔ)器),、磁盤存儲(chǔ)器(輔助存儲(chǔ)器)等。現(xiàn)今的通用計(jì)算機(jī)都具備寄存器,、緩沖存儲(chǔ)器,、內(nèi)存和磁盤這四個(gè)存儲(chǔ)器設(shè)備,而且其訪問速度依次遞減,,但是存儲(chǔ)容量則依次遞增,。下面逐一介紹。
寄存器,,也稱為控制存儲(chǔ)器,,用于臨時(shí)存儲(chǔ)參與運(yùn)算數(shù)據(jù),常集成于CPU(中央處理器)中,,所以其存取數(shù)據(jù)速度快,,其速度是所有存儲(chǔ)器中速度最快的。為什么要集成與CPU中,?因?yàn)镃PU包含運(yùn)算器和控制器,,其是處理數(shù)據(jù)的中心,,如果有一個(gè)在讀取數(shù)據(jù)是從其他管理的元件中傳入,必定存在傳輸延遲問題,,同時(shí)還增加了對(duì)其他元件的依賴程度和負(fù)載能力,,所以將其寄存于CPU中作為臨時(shí)數(shù)據(jù)的存取空間。
高速緩沖存儲(chǔ)器,,從名字上可以得知其主要是起到緩沖數(shù)據(jù)的作用,。由于寄存器容量有限,一個(gè)CPU運(yùn)算的周期可能需要從較大的內(nèi)存存儲(chǔ)器中獲取更多的數(shù)據(jù)信息,,增大了數(shù)據(jù)傳輸?shù)臅r(shí)間,,這便限制了高速計(jì)算,為了解決這個(gè)問題,,所以使用一個(gè)高速緩沖存儲(chǔ)器來加速CPU和內(nèi)存之間的數(shù)據(jù)傳輸,。高速緩存存儲(chǔ)器通常也集成于CPU中,用于臨時(shí)存儲(chǔ)即將參與運(yùn)算的數(shù)據(jù),,其容量較小但是存取數(shù)據(jù)速度也很快,。
內(nèi)存,也稱為主存儲(chǔ)器,,用于存儲(chǔ)運(yùn)行的程序和數(shù)據(jù),,其存取數(shù)據(jù)的速度較快,存儲(chǔ)數(shù)據(jù)的容量較大,。內(nèi)存是運(yùn)行程序和資源數(shù)據(jù)與CPU進(jìn)行交互的主要中間介質(zhì),,也就是說程序啟動(dòng)時(shí)先將程序數(shù)據(jù)送往內(nèi)存中,然后由CPU去一條一條數(shù)據(jù)的執(zhí)行,。由于寄存器和高速緩沖存儲(chǔ)器都集成于CPU中,,而內(nèi)存是獨(dú)立于CPU的,所以內(nèi)存的性能會(huì)直接影響計(jì)算機(jī)的性能,。這也是大家都最求高內(nèi)存的原因,。 內(nèi)存的衡量標(biāo)準(zhǔn)主要有存儲(chǔ)容量、存取時(shí)間,、存儲(chǔ)周期和存儲(chǔ)器帶寬四個(gè)指標(biāo),。其中存儲(chǔ)容量是一個(gè)存儲(chǔ)器中可以容納的存儲(chǔ)單元總數(shù),通常以字?jǐn)?shù)或字節(jié)數(shù)作為單位,;存取時(shí)間則是啟動(dòng)到完成一次存儲(chǔ)器操作所經(jīng)歷的時(shí)間,,通常以納秒(ns)為單位;存儲(chǔ)周期則是連續(xù)啟動(dòng)連詞操作所需間隔的最小時(shí)間,,通常以納秒(ns)為單位,;存儲(chǔ)器帶寬表示單位時(shí)間內(nèi)存儲(chǔ)器所存儲(chǔ)的信息量大小,通常以位/秒或字節(jié)/秒為單位,。后三者是其存取速度的主要衡量標(biāo)準(zhǔn),。
磁盤存儲(chǔ)器,,屬于輔助存儲(chǔ)器,簡稱輔存,,輔存包括磁盤,、U盤、光盤等外部存儲(chǔ)器,,而磁盤存儲(chǔ)器是最為常見的輔存設(shè)備,。輔存的最大特點(diǎn)是存儲(chǔ)容量大,。 隨著科技的發(fā)展,,現(xiàn)在還存在另一種存儲(chǔ)器——虛擬存儲(chǔ)器。虛擬存儲(chǔ)器并發(fā)實(shí)際存在的物理存儲(chǔ)器,,而是一種容量足夠大的邏輯模型,,指借助磁盤等輔助存儲(chǔ)器來擴(kuò)大主存容量的一種方式。其實(shí)可以將其理解為一種主存到外存層次上的緩沖存儲(chǔ)器,。 2.存儲(chǔ)器的衡量單位2.1.數(shù)據(jù)存儲(chǔ)單位 眾所周知,,計(jì)算機(jī)使用的是二進(jìn)制數(shù)制系統(tǒng)。存儲(chǔ)元是計(jì)算機(jī)中最小存儲(chǔ)數(shù)據(jù)的介質(zhì),,一個(gè)存儲(chǔ)元存儲(chǔ)一個(gè)二進(jìn)制數(shù)碼(0或1),;多個(gè)存儲(chǔ)單元組成一個(gè)存儲(chǔ)單元;多個(gè)存儲(chǔ)單元組成一個(gè)存儲(chǔ)器,。 說到存儲(chǔ)器,,不得不說的是存儲(chǔ)器容量的問題。常見的“KB”或“K”,、“MB”或“M”,、“GB”或“G”、“TB”或“T”,,這些都是存儲(chǔ)器容量的衡量單位,。存儲(chǔ)器的容量其實(shí)是指存儲(chǔ)器所有存儲(chǔ)單元的總數(shù),規(guī)定8位(8個(gè)二進(jìn)制碼)為1字節(jié),,即8bit=1byte=1B(至于為什么這樣規(guī)定,?筆者也沒搞清楚)。 到底什么是位,?位(bit)是計(jì)算機(jī)中最小的數(shù)據(jù)傳輸單位,,其實(shí)就是一個(gè)二進(jìn)制數(shù)碼(0或1),一個(gè)二進(jìn)制序列中的每一個(gè)0或1都成為一個(gè)位,,按照習(xí)慣,,通常稱右邊為低位,左邊為高位,。 那什么又是字節(jié),?字節(jié)(byte)是計(jì)算機(jī)中最小的數(shù)據(jù)存儲(chǔ)單位,,規(guī)定一個(gè)字節(jié)由8位組成,即一個(gè)字節(jié)就是8個(gè)0或1組成的二進(jìn)制序列,。隨著計(jì)算機(jī)的發(fā)展,,其存儲(chǔ)容量越來越大,使用字節(jié)進(jìn)行衡量就不太合理了,。所以出現(xiàn)了千字節(jié)(KB),、兆字節(jié)(MB)、吉字節(jié)(GB),、太字節(jié)(TB)等等更大了衡量單位,。 從十進(jìn)制的角度去考慮,上述的單位都相差千倍,,在二進(jìn)制中千倍可以使用210(1024)表示(因?yàn)槠渥罱咏?000),。所以標(biāo)準(zhǔn)情況下其計(jì)算機(jī)存儲(chǔ)單位換算過程如下: 1B=1byte=8bit=8b 1KB=1024B=1024byte 1MB=1024KB 1GB=1024MB 1TB=1024GB …… 上述只是標(biāo)準(zhǔn)情況下的換算方式,而在現(xiàn)實(shí)中,,大多數(shù)硬盤中還是使用10的3次方即1000作為轉(zhuǎn)換標(biāo)準(zhǔn)進(jìn)行硬盤設(shè)計(jì)制造,。 2.2.數(shù)據(jù)傳輸單位 上面也提到,“位”是計(jì)算機(jī)中數(shù)據(jù)傳輸?shù)淖钚挝?。然而?jì)算機(jī)在實(shí)際工作中,,如果使用位進(jìn)行數(shù)據(jù)傳輸則效率極其低,所以實(shí)際中CPU向存儲(chǔ)器送入或從存儲(chǔ)器取出信息時(shí),,通常使用用“字節(jié)”或“字”等較大的信息單元來工作,。 字節(jié)(byte或B)也就是上面講到的,一般由8位二進(jìn)制數(shù)碼組成,,也就是說使用字節(jié)進(jìn)行傳輸數(shù)據(jù)則一次可以傳輸8位信息,,然而這樣還是不能滿足當(dāng)前的運(yùn)算要求,因此就出現(xiàn)了字,。 字(word或W)是計(jì)算機(jī)中最常用的數(shù)據(jù)傳輸單位,,字由若干個(gè)字節(jié)組成,是計(jì)算機(jī)一次處理或運(yùn)算的一串二進(jìn)制數(shù)碼,,相同的字在不同的位置其含義也不同,,例如送外控制器的字是指令,而送往運(yùn)算器的字則是運(yùn)算數(shù),。字的長度用位數(shù)來表示,,通常把組成一個(gè)字的二進(jìn)制位數(shù)叫做字長,我們常說的8位,、16位,、32位和64位CPU則就是指的CPU字長,也就是CPU一次能夠處理(傳輸)的二進(jìn)制數(shù)碼位數(shù)。字長可以用于衡量一個(gè)CPU的能力,,字長越大其性能則越高,,字長可分為固定和可變兩種類型。常說的32位,、64位操作系統(tǒng)則是對(duì)應(yīng)于計(jì)算機(jī)處理器而言的,,它們都是低向兼容,但是如果不匹配則其運(yùn)行性能會(huì)大打折扣,,比如說64位的CPU可以兼容32位的系統(tǒng),,但是其效果不能達(dá)到最佳,而32位則不能兼容64位的系統(tǒng),。 中央處理器和指令系統(tǒng)1.指令系統(tǒng) 上面一再提到指令,,到底何為指令?指令就是一種指揮相應(yīng)動(dòng)作的命令,,在計(jì)算機(jī)中指令是一種控制信號(hào),,用來控制計(jì)算機(jī)各個(gè)元件的相應(yīng)操作,。計(jì)算機(jī)的電子元件的工作都受到指令的支配,。其是計(jì)算機(jī)中最小的執(zhí)行單元,所有的程序都是由一系列相應(yīng)的指令組成的,,計(jì)算機(jī)的指令可劃分為微指令,、機(jī)器指令和宏指令三類,微指令是微程序的命令,,屬于硬件級(jí)別,;宏指令則是有若干條機(jī)器指令組成的軟件指令,屬于軟件級(jí)別,;機(jī)器指令其介于微指令和宏指令之間,,每一條指令可以完成一個(gè)獨(dú)立的算術(shù)運(yùn)算或邏輯運(yùn)算,我們常說的指令就是指機(jī)器指令,。 計(jì)算機(jī)中所有機(jī)器指令的集合組成一個(gè)指令系統(tǒng),,其是計(jì)算機(jī)性能的重要衡量標(biāo)準(zhǔn),不僅直接影響機(jī)器的硬件結(jié)構(gòu),,也直接影響到其軟件系統(tǒng),,影響其機(jī)器本身的適用范圍。計(jì)算機(jī)的指令系統(tǒng)一般包括數(shù)據(jù)傳送指令,、算術(shù)運(yùn)算指令,、邏輯運(yùn)算指令、程序控制指令,、輸入輸出指令,、字符串處理指令、特權(quán)指令以及狀態(tài)寄存器置位,、復(fù)位指令,、測試指令,、暫停指令,空操作指令等其他指令,。從指令系統(tǒng)來講可以將計(jì)算機(jī)非為復(fù)雜指令系統(tǒng)計(jì)算機(jī)(CISC)和精簡指令系統(tǒng)計(jì)算機(jī)(RISC)兩種,,復(fù)雜指令系統(tǒng)的指令多達(dá)幾百條,,大多數(shù)情況下只有20%的指令會(huì)經(jīng)常使用,而精簡指令系統(tǒng)就是這20%的指令組成的,。 1.1.指令和尋址 指令,,也稱機(jī)器指令或指令字,是計(jì)算機(jī)中一種控制元件執(zhí)行動(dòng)作的命令,,其實(shí)質(zhì)是一種二進(jìn)制序列代碼,由操作碼字段和地址碼字段組成,。其中操作碼字段表示指令的操作特性和功能,,地址碼字段指定參與操作的操作數(shù)據(jù)的地址。 指令系統(tǒng)中的每一條指令都有一個(gè)操作碼,,表示該指令應(yīng)該進(jìn)行什么性質(zhì)的操作,,也就是說每一種指令對(duì)應(yīng)一種固定編碼的操作碼。操作碼的字段位數(shù)一般受到計(jì)算機(jī)指令系統(tǒng)的約束,,一般8條指令的指令系統(tǒng),3位操作碼則足夠,;32條指令的指令系統(tǒng),則需要5位操作碼,。 每一條指令不僅包括操作碼,而且還操作地址碼,,地址碼用于指定操作數(shù)的存儲(chǔ)位置。根據(jù)操作數(shù)的個(gè)數(shù)可以將指令分為若干個(gè)操作數(shù)指令或若干個(gè)地址指令,;一般的指令都存儲(chǔ)被操作數(shù),、操作數(shù)和操作結(jié)果三種數(shù)據(jù),所以稱為三地址指令,,當(dāng)然也存在二地址指令,、一地址指令和零地址指令。 在計(jì)算機(jī)的指令系統(tǒng)中,,一般指令的操作碼字段和地址碼字段的位數(shù)(長度)是固定的,,而指令的位數(shù)(指令字長度)則分為固定和可變兩種,。固定字長指令系統(tǒng)中,,各種指令字長度都是相等的;可變字長指令系統(tǒng)中,,各種指令字長度隨指功能而異,。指令字長和機(jī)器字長大多會(huì)混為一談,指令字長度表示一條指令中所包含的二進(jìn)制數(shù)碼位數(shù),;機(jī)器字長表示計(jì)算機(jī)一次直接處理二進(jìn)制數(shù)碼的位數(shù),,其決定了計(jì)算機(jī)的運(yùn)算精度,。 上面提到操作數(shù)地址,,那么何為地址?來看下面的介紹,。 操作數(shù)地址是指操作數(shù)存儲(chǔ)在存儲(chǔ)器存儲(chǔ)單元時(shí)存儲(chǔ)單元的編號(hào)(編碼,,一種二進(jìn)制數(shù)碼);指令在存儲(chǔ)器中的地址則指指令存儲(chǔ)在存儲(chǔ)單元是該存儲(chǔ)單元的編號(hào),。在存儲(chǔ)器中,,操作數(shù)或指令字寫入或讀取的方式有地址指定方式,、相聯(lián)存儲(chǔ)方式和堆棧存儲(chǔ)方式三種形式,。大多數(shù)的機(jī)器采用地址指定方式來表述操作數(shù)或指令的地址,,這種方式稱為“尋址方式”,常說的尋址是指在內(nèi)存中進(jìn)行尋址,。尋找方式分為指令尋址方式和數(shù)據(jù)尋址方式兩種。 指令尋址方式包括順序?qū)ぶ泛吞S尋址兩種形式,,順序?qū)ぶ肪褪前闯绦蛑噶铐樞蛞粭l一條指令的執(zhí)行,,首先執(zhí)行第一條,,然后第二條,,接著第三條……,通常情況下處理器中存儲(chǔ)一個(gè)程序技計(jì)數(shù)器(指令指針寄存器),,用來標(biāo)識(shí)下一條指令的序號(hào)(模擬序號(hào)),,根據(jù)這個(gè)序號(hào)可以指定執(zhí)行下一條指令的位置,;當(dāng)程序指令轉(zhuǎn)移執(zhí)行時(shí)則需要使用跳躍尋址方式,,此時(shí)當(dāng)前指令會(huì)給出下一條指令的序號(hào)(并不是由程序計(jì)算器給出,,但是其指會(huì)改變),,程序跳躍后,,然后在按新的指令地址順序執(zhí)行,。 指令中操作數(shù)的地址碼一般有形式地址和尋址方式特制位組合形成,也就是說,,指令中的地址碼并不是操作數(shù)的真實(shí)有效地址,,因此,,操作數(shù)的尋址過程就是將操作數(shù)的形式地址轉(zhuǎn)換為操作數(shù)的有效地址的過程。操作數(shù)的有效地址是將操作數(shù)的形式地址使用指定的尋址方式進(jìn)行轉(zhuǎn)換得來的,,其中操作數(shù)的形式地址是一種二進(jìn)制數(shù)碼,,尋址方式包括隱含尋址,、立即尋址,、直接尋址,、間接尋址,、寄存器尋址、相對(duì)尋址,、基址尋址,、變址尋址,、塊尋址和段尋址等多種方式,。隱含尋址就是指令中不明顯的給出而是隱含這操作數(shù)的地址,;立即尋址表示指令中的地址字段指定的是操作數(shù)本身,,而不是其地址,;直接尋址就是在指令的地址字段中直接之處操作數(shù)在內(nèi)存中的地址,;間接尋址就是指令中的地址字段給出的是形式地址,,而是操作數(shù)地址的指示器,,然后由指示器指定其真是地址,;寄存器尋找是指操作數(shù)存儲(chǔ)在CPU寄存器中,,指令給出的是數(shù)據(jù)存儲(chǔ)的寄存器編號(hào),,還衍生有寄存器間接尋址方式,,其指令給出的是輸出存儲(chǔ)在內(nèi)存中的地址,;相對(duì)尋址是相對(duì)當(dāng)前指令地址而言的,,通過偏移量來尋找操作數(shù)地址;基址尋址是將CPU中基址寄存器的內(nèi)容加上指令格式中的形式地址而形成的操作數(shù)的有效地址的方式,;變址尋找是把CPU中某個(gè)變址寄存器的內(nèi)容與偏移量相加來形成操作數(shù)有效地址的方式,;塊尋址通常指定數(shù)據(jù)庫的起始地址和數(shù)據(jù)庫的長度,,然后尋找一個(gè)整體,,常用于輸入輸出指令中,;段尋址是將存儲(chǔ)器按指定大小劃分為多個(gè)段,,然后采用基址尋址方式進(jìn)行尋址,常用在微型機(jī)中,。(這里只是簡單介紹一下,,具體的過于復(fù)雜,,所以不具體說明,,可以自行查找資料理解) 通常CPU中還存在一種能夠存儲(chǔ)和讀取數(shù)據(jù)的暫時(shí)存儲(chǔ)單元——堆棧(或許你看到它并不陌生,,是兩種數(shù)據(jù)結(jié)構(gòu)),。堆棧是一種能存儲(chǔ)和取出數(shù)據(jù)的暫時(shí)存儲(chǔ)單元,,分為串聯(lián)堆棧和存儲(chǔ)器堆棧兩種形式。很多計(jì)算機(jī)把存儲(chǔ)器的一部分用作堆棧,,堆棧與其他形式存儲(chǔ)器的差別在于其對(duì)數(shù)據(jù)的存取方法和尋址方法,,其堆棧的主要存儲(chǔ)特點(diǎn)是數(shù)據(jù)先進(jìn)后出,。 1.2.指令與編程語言的關(guān)系 從宏觀角度來將可以將當(dāng)下的程序設(shè)計(jì)語言劃分為低級(jí)語言和高級(jí)語言兩種,,低級(jí)語言大多直接與硬件指令打交道,,而高級(jí)語言則與硬件本身關(guān)聯(lián)并不緊密,。 低級(jí)語言可分為機(jī)器語言(二進(jìn)制語言)和匯編語言(符號(hào)語言),這兩種語言是面向機(jī)器的語言,,和具體機(jī)器的指令系統(tǒng)密切相關(guān),,機(jī)器語言使用指令代碼編寫程序,,而匯編語言使用指令助記符號(hào)來編寫程序,。由于低級(jí)語言效率地下,,而且多被機(jī)器限定,,所以就誕生了高級(jí)語言,。 相對(duì)低級(jí)語言而言,高級(jí)程序設(shè)計(jì)語言擺脫了對(duì)硬件設(shè)備機(jī)器指令的束縛,,其自成體系,,常見的有C,、C++,、Java等,。但是由于計(jì)算機(jī)只能識(shí)別并執(zhí)行二進(jìn)制的機(jī)器指令,,所以高級(jí)語言編寫的程序大多需要借助匯編程序或?qū)?yīng)的編譯程序?qū)⑵浔旧矸g成二進(jìn)制的機(jī)器指令,。所以高級(jí)語言入門快、適用度高,,但是其效率相對(duì)而低。 2.中央處理器——CPU2.1.CPU的構(gòu)成介紹 程序是一個(gè)指令序列,,這個(gè)序列明確告訴計(jì)算機(jī)應(yīng)該執(zhí)行什么操作,、應(yīng)該在什么地方找到用來操作的數(shù)據(jù),,一旦把程序裝載入內(nèi)存中,,就可以有計(jì)算機(jī)自動(dòng)完成取出指令和執(zhí)行指令的任務(wù),而用來完成這項(xiàng)工作的計(jì)算機(jī)部件稱為中央處理器,,簡稱為CPU,。 CPU是計(jì)算機(jī)中最重要的部件之一,,其必須有指令控制,、操作控制,、時(shí)間控制和數(shù)據(jù)加工處理四個(gè)級(jí)別功能,。指令控制就是程序的順序控制,;操作控制就是指一條指令的功能往往是由若干個(gè)操作信號(hào)組合來實(shí)現(xiàn)的,;時(shí)間控制是對(duì)各種操作實(shí)施時(shí)間上的定時(shí),;數(shù)據(jù)加工就是對(duì)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算或邏輯運(yùn)算,。 CPU主要有運(yùn)算器,、cache區(qū)和控制器三大部分組成。其中控制器由程序計(jì)數(shù)器,、指令寄存器,、指令譯碼器,、時(shí)序產(chǎn)生器和操作控制器組成,;是計(jì)算機(jī)的命令指揮中心,,可以從內(nèi)存中取出一條指令并指出下一條指令的內(nèi)存地址,,可以對(duì)指令進(jìn)行譯碼和測試并產(chǎn)生相應(yīng)的操作控制信號(hào)支配元件完成動(dòng)作,,同時(shí)指揮和控制CPU,、內(nèi)存和輸入/輸出設(shè)備之間數(shù)據(jù)流向。運(yùn)算器由算術(shù)邏輯單元(ALU),、累加寄存器、數(shù)據(jù)緩沖寄存器和狀態(tài)條件寄存器組成,;是計(jì)算機(jī)正真執(zhí)行數(shù)據(jù)加工處理的部件,,受控制器支配,,可以執(zhí)行所有的算術(shù)運(yùn)算和邏輯運(yùn)算,,并進(jìn)行邏輯測試等,。下面是CPU結(jié)構(gòu)模擬圖: 從圖上可以看出CPU中有數(shù)據(jù)緩沖寄存器(DR)、指令寄存器(IR),、程序計(jì)數(shù)器(PC),、地址寄存器(AR),、累加寄存器(AC)和狀態(tài)條件寄存器(PSW)六類主要寄存器(寄存器就是臨時(shí)存取器,,是一種臨時(shí)存儲(chǔ)數(shù)據(jù)的空間),。
數(shù)據(jù)緩沖寄存器用來暫時(shí)存放從內(nèi)存儲(chǔ)器讀取的一條指令或一個(gè)數(shù)據(jù)字或向內(nèi)存存入一條指令或一個(gè)數(shù)據(jù)字。其作為CPU和內(nèi)存,、外部設(shè)備之間信息傳送的中轉(zhuǎn)站,,可以補(bǔ)償CPU和內(nèi)存,、外圍設(shè)備之間在操作數(shù)度上的差別,。有時(shí)也作為操作數(shù)寄存器使用,。
指令寄存器用于保存當(dāng)前正在執(zhí)行的一條指令數(shù)據(jù),。當(dāng)執(zhí)行一條指令時(shí),,首先把其從內(nèi)存讀取到緩沖寄存器中,,然后在送往指令寄存器,,由指令譯碼器對(duì)指令的操作碼字段進(jìn)行譯碼和測試后,,向操作控制器發(fā)出具體操作的特定信號(hào),。
程序計(jì)算器也稱為指令計(jì)算器,,其主要用于記錄下一條指令的內(nèi)存地址,。在程序開始執(zhí)行前,,必須將它的起始地址即第一條指令所在的內(nèi)存單元地址送人程序計(jì)數(shù)器,,當(dāng)執(zhí)行這條指令時(shí),,CPU會(huì)自動(dòng)修改程序計(jì)數(shù)器的內(nèi)容為下一條指令的地址。由于大多數(shù)指令都是順序執(zhí)行的,,所以修改過程通常只是簡單的加1,。
地址寄存器用來保存當(dāng)前CPU所訪問的內(nèi)存單元的地址,。由于內(nèi)存和CPU之間存儲(chǔ)操作數(shù)度上的差別,所以必須使用地址寄存器來暫時(shí)保存地址信息,,直到內(nèi)存的讀/寫操作完成為止,。當(dāng)CPU和內(nèi)存進(jìn)行信息交換,,即CPU向內(nèi)存存/取數(shù)據(jù)或CPU從內(nèi)存中讀取指令時(shí),都要使用到地址寄存器和數(shù)據(jù)緩沖寄存器,。
累加寄存器簡稱累加器,,其是一個(gè)通用的寄存器。主要用于當(dāng)運(yùn)算器的算術(shù)邏輯單元執(zhí)行算術(shù)或邏輯運(yùn)算時(shí),,為算術(shù)邏輯單元提供一個(gè)工作區(qū),;其可以暫時(shí)存放算術(shù)邏輯單元的運(yùn)算結(jié)構(gòu)信息。
狀態(tài)條件寄存器用于保存由算術(shù)指令和邏輯指令運(yùn)行或測試的結(jié)果對(duì)應(yīng)的各種條件碼內(nèi)容,,例如運(yùn)算結(jié)果進(jìn)位標(biāo)志(C)、運(yùn)算結(jié)果溢出標(biāo)志(V),、運(yùn)算結(jié)果為零標(biāo)志(Z),、運(yùn)算結(jié)果為負(fù)標(biāo)志(N)等等,。通常這些標(biāo)志分別由移位觸發(fā)器保存。同時(shí)狀態(tài)條件寄存器還保存中斷和系統(tǒng)工作狀態(tài)等信息,,以便使CPU和系統(tǒng)能及時(shí)了解機(jī)器運(yùn)行狀態(tài)和程序運(yùn)行狀態(tài)。狀態(tài)條件寄存器是一個(gè)由各種狀態(tài)條件標(biāo)志拼湊而成的寄存器,。 信息從什么地方開始,,中間經(jīng)過哪個(gè)寄存器或多路開關(guān),最后傳送到哪個(gè)寄存器,,都要加以控制。在各寄存器之間建立數(shù)據(jù)通路的任務(wù),,是由稱為操作控制器的部件來完成的,。操作控制器的功能,就是根據(jù)指令操作碼和時(shí)序信號(hào),,產(chǎn)生各種操作控制信號(hào),以便正確地建立數(shù)據(jù)通路,,從而完成取指令和執(zhí)行指令的控制,。 2.2.CPU的工作過程 計(jì)算機(jī)所以能夠自動(dòng)工作,是因?yàn)镃PU能從存放程序的內(nèi)存中取出一條指令并執(zhí)行這條指令,;緊接著又是取指令,執(zhí)行指令……如此構(gòu)成一個(gè)封閉的循環(huán),當(dāng)遇到“停止”指令時(shí)停止工作并退出。 CPU的工作過程其實(shí)是程序的執(zhí)行過程,,如今的計(jì)算機(jī)都是基于“程序存儲(chǔ)”的概念設(shè)計(jì)制造的,程序存儲(chǔ)就是將程序通過輸入設(shè)備傳送到存儲(chǔ)器保存起來的過程,。而計(jì)算機(jī)只能識(shí)別二進(jìn)制數(shù)碼,CPU只能識(shí)別機(jī)器指令,,所以我們通常編寫的程序或安裝的其他程序都是在特定環(huán)境或系統(tǒng)下編譯之后的程序,,然而只有在其特定的執(zhí)行環(huán)境下才能被解析為指令加載到內(nèi)存中,所以說程序就是一個(gè)指令序列,。 當(dāng)啟動(dòng)一個(gè)程序的時(shí)候,會(huì)將這個(gè)程序?qū)?yīng)的資源和本身指令序列輸入到內(nèi)存中,,然后CPU從中檢索出入口指令,,并有CPU解碼為指定的CPU控制信號(hào)并支配其他硬件設(shè)備完成,,執(zhí)行過程也就是數(shù)據(jù)運(yùn)算的過程,,邏輯運(yùn)算控制其執(zhí)行其他指令的順序,,算術(shù)運(yùn)算計(jì)算執(zhí)行指令的結(jié)果,然后將運(yùn)算的結(jié)果寫回到內(nèi)存中以備繼續(xù)使用,,依次循序工作,,直到所有指令執(zhí)行完畢,。上面的過程可以使用以下示意圖來表示: 上面的示意圖,用于描述計(jì)算機(jī)CPU執(zhí)行程序指令的基本過程,。 計(jì)算機(jī)執(zhí)行程序的指令(指令由操作碼和地址碼組成,操作碼表示運(yùn)算性質(zhì),,地址碼表示操作數(shù)在存儲(chǔ)器中的位置)序列是逐條執(zhí)行的,,每執(zhí)行一條指令基本上可分為四個(gè)步驟:一,、取出指令,,從存儲(chǔ)器(主要指內(nèi)存)某個(gè)地址中取出要執(zhí)行的的指令送到CPU內(nèi)部的指令寄存器暫存;二,、分析指令,,把保存在指令寄存器中的指令送到指令譯碼器,譯出該指令對(duì)應(yīng)的微操作,;三,、執(zhí)行指令,根據(jù)指令譯碼,,向各個(gè)部件發(fā)送相應(yīng)的控制信號(hào),完成指令規(guī)定的各種操作,;四,、為執(zhí)行系一條指令做好準(zhǔn)備,取出下一條指令地址循環(huán)上面步驟,。 2.3.CPU字長與操作系統(tǒng) CPU字長是衡量CPU性能的一個(gè)重要標(biāo)準(zhǔn),CPU字長表示CPU一次能夠傳輸?shù)亩M(jìn)制數(shù)碼位數(shù),,現(xiàn)今出現(xiàn)最多的有8位,、16位、32位和64位的CPU,,其位數(shù)越高則其運(yùn)算精度越高,、運(yùn)算速度越快。8位CPU和16位CPU常用于微處理設(shè)備,,例如手持設(shè)備等,;32位和64位CPU常用于PC等。 或許會(huì)發(fā)現(xiàn)一個(gè)規(guī)律,,CPU的字長都是8的倍數(shù),,可以用2的N次方表示,為什么,?我們知道計(jì)算機(jī)中規(guī)定8位為一字節(jié),,由于CPU出現(xiàn)了寄存器和緩沖區(qū),,所以通常情況下以字節(jié)或更大的字作為信息處理的單位進(jìn)行傳輸。而一個(gè)字由多個(gè)字節(jié)組成,,所以CPU的字長通常為8的倍數(shù),。 數(shù)據(jù)或指令在內(nèi)存中通常使用內(nèi)存地址來描述,地址就是一種編號(hào),,即其是有0和1兩位數(shù)碼組合而成的編號(hào),。對(duì)于一個(gè)N位的CPU來講,其每一條指令可以包含N位二進(jìn)制數(shù)碼,,即N個(gè)0和1進(jìn)行組合而成的數(shù)碼,,那么從排列組合的方式上看,其最多可以有2N個(gè)組合結(jié)果,,也即是說一個(gè)n位的cpu最多可以在內(nèi)存中讀取2n個(gè)內(nèi)存地址,。這種cpu對(duì)內(nèi)存尋址的能力稱為尋址空間,即對(duì)應(yīng)cpu來講內(nèi)存的實(shí)際使用問題,。 對(duì)于一個(gè)32位的CPU來講,,其最大的內(nèi)存尋址空間為232=4294967296個(gè),為了更準(zhǔn)確的描述其空間大小,,使用byte(字節(jié))來表示其存儲(chǔ)空間大小,。也就是說32位CPU的尋址空間為4294967296byte=4G,64位的CPU尋址空間可高達(dá)17TB,,這個(gè)內(nèi)存空間稱為物理內(nèi)存,,然后對(duì)實(shí)質(zhì)的操作系統(tǒng)而言,比如Windows XP系統(tǒng)支持的實(shí)際尋址空間為2.5G~3.5G之間,。 上面也提到了操作系統(tǒng),,或許你也會(huì)發(fā)現(xiàn),Windows Vista之后發(fā)布的操作系統(tǒng)都提供了32位和64位兩個(gè)版本,,其主要是針對(duì)32位和64位CPU而定制的,。32位的CPU一次能夠提取4個(gè)字節(jié)的數(shù)據(jù),64位的CPU一次能夠提取8個(gè)字節(jié)的數(shù)據(jù),。32位的操作系統(tǒng)或程序可以在32位的CPU中運(yùn)行,也可以在64位的CPU中運(yùn)行,,但是效率不能達(dá)到最高,;而64位的操作系統(tǒng)或程序只能在64位的CPU中運(yùn)行,其設(shè)計(jì)可以向下兼容,。 計(jì)算機(jī)工作原理1.用計(jì)算機(jī)的工作過程 通過上面的介紹,,對(duì)計(jì)算機(jī)的基本工作原理應(yīng)該有一定的印象。計(jì)算機(jī)主要包括運(yùn)算器(CPU),、存儲(chǔ)器(內(nèi)存),、控制器(CPU),、輸入設(shè)備、輸出設(shè)備五個(gè)部分,,因此計(jì)算機(jī)的工作離不開主板,、CPU、內(nèi)存三個(gè)硬件環(huán)境,,同時(shí)為了能夠見證計(jì)算機(jī)的工作效果也必須存在輸入/輸入設(shè)備,。下面就這五個(gè)基本部分來看一下計(jì)算機(jī)的基本工作原理,如圖: 圖中“紅線”表示數(shù)據(jù)流向,,“黑線”表示控制流向,。CPU控制器控制輸入設(shè)備、輸出設(shè)備以及內(nèi)存使用,,程序被輸入設(shè)備以指令序列的方式輸入到內(nèi)存中,,CPU控制器從內(nèi)存中讀取一條條指令,并根據(jù)指令的譯碼發(fā)出一條條控制信號(hào)給運(yùn)算器和存儲(chǔ)器來完成規(guī)定的操作功能,,然后CPU控制器控制其以適當(dāng)?shù)姆绞酵ㄟ^輸出設(shè)備輸出最終操作結(jié)果,。我們可以通過下面一個(gè)模擬圖更清楚的理解這個(gè)過程,如圖: 至于CPU內(nèi)部的工作過程可以參考《2.2 CPU的工作過程》,。 提示一個(gè)小常識(shí):計(jì)算機(jī)的主板上存在一個(gè)微弱電源維持BIOS芯片內(nèi)BIOS系統(tǒng)(包括系統(tǒng)時(shí)間,、引導(dǎo)系統(tǒng)、內(nèi)存數(shù)據(jù)等)的正常運(yùn)作,。當(dāng)主板接通外部電源的時(shí)候,,BIOS系統(tǒng)會(huì)檢查所有硬件環(huán)境是否存在或正確安裝,如果通過則正常啟動(dòng)引導(dǎo)系統(tǒng),,否則會(huì)作出相應(yīng)的警告提示,。只有所有的硬件設(shè)備完善才能是計(jì)算機(jī)正常工作。 2.通用計(jì)算機(jī)中存儲(chǔ)器工作過程 現(xiàn)下的計(jì)算機(jī)存儲(chǔ)系統(tǒng)包括磁盤,、內(nèi)存,、緩存區(qū)和寄存器等四大類型,當(dāng)然其緩存又可分為多個(gè)級(jí)別,,例如一級(jí)緩存,、二級(jí)緩存等。下面來看一下其如何協(xié)調(diào)工作的,。 程序存儲(chǔ)在磁盤中,,當(dāng)打開程序化,有操作系統(tǒng)平臺(tái)或?qū)?yīng)的執(zhí)行平臺(tái)將程序指令化,,轉(zhuǎn)換為一系列指令序列并送往內(nèi)存中,,如果程序過大則會(huì)借助虛擬內(nèi)存(虛擬存儲(chǔ)器)來暫時(shí)寄存部分指令,內(nèi)存加載部分指令;然后將入口指令送往CPU的寄存器,,由CPU運(yùn)算器和控制器執(zhí)行指令,,如果需要讀取數(shù)據(jù),則從內(nèi)存或緩存中取出數(shù)據(jù),,如果需要一條指令,,則從內(nèi)存或緩存總?cè)〕鲋噶睿谒屯鵆PU進(jìn)行運(yùn)算或執(zhí)行,;一條指令執(zhí)行完成后將結(jié)果暫時(shí)寫入到寄存器或CPU緩存或內(nèi)存中,,接著執(zhí)行程序的下一條指令,從內(nèi)存或緩存中讀取下一條指令送往CPU中進(jìn)行指令,,依次循環(huán),,即可完成一個(gè)程序的執(zhí)行,當(dāng)遇到停止指令是則停止執(zhí)行并退出程序,。 總結(jié) 這篇文章或許講的比較亂,,甚至有些東西我自己都還沒有搞清楚,一些名詞都是自己理解并給出釋義,,或許并沒有給出明確的解釋,,希望讀者見諒,本文大部分內(nèi)容來自互聯(lián)網(wǎng)資料的整理,。雖然我們搞軟件的并不一定需要深入研究這些東西,,但是了解一下總是有益無害,而且這些都是基礎(chǔ)理論知識(shí),,對(duì)軟件的學(xué)習(xí)多多少少都有一定的幫助,。 如果需要了解的更深入,則可以自行查閱資料,,并整理分享給大家,。 |
|