計算機原理
系統軟體和應用軟體
計算機原理由馮·諾依曼(Von Neumann)與莫爾小組於1943年—1946年提出。在人類科技史上還沒有一種科學可以與計算機的發展之快相提並論。計算機原理適用於科學計算、信息管理等領域。
早期計算機
與ENIAC計算機研製的同時,馮·諾依曼(Von Neumann)與莫爾小組合作研製EDVAC計算機,採用了存儲程序方案,其後開發的計算機都採用這種方式,稱為馮·諾依曼計算機。
Von Neumann具有以下特點:
馮·諾依曼
(2)採用存儲程序的方式,程序和數據放在同一個存儲器中,指令和數據一樣可以送到運算器運算,即由指令組成的程序是可以修改的。
(3)數據以二進位代碼表示。
(4)指令由操作碼和地址碼組成。
(5)指令在存儲器中按執行順序存放,由指令計數器指明要執行的指令所在的單元地址,一般按順序遞增,但可按運算結果或外界條件而改變。
(6)機器以運算器為中心,輸入輸出設備與存儲器間的數據傳送都通過運算器。
現代計算機系統結構有了很大新發展,但原則上變化不大,習慣上仍稱之為馮·諾依曼機。
根據計算機所採用的物理器件的發展,一般把電子計算機的發展分成四個階段,習慣上稱為四代。
晶體管計算機時代(從50年代中期到60年代後期),採用的主要器件逐步由電子管改為晶體管,縮小了體積,降低了功耗,提高了速度和可靠性,降低了價格。代表機型控制數據公司(CDC)的大型計算機系統CDC6600.
集成電路計算機時代(從60年代中期到70年代前期),計算機採用集成電路作為基本器件,功耗、體積、價格進一步下降,速度和可靠性相應的提高。代表機型IBM公司的IBM360.
大規模集成電路計算機時代(從70年代初至今),70年代初,半導體存儲器問世,迅速取代了磁芯存儲器,並不斷向大容量、高速度發展。1984年內含2300個晶體管的Intel4004晶元問世,開啟了現代計算機的篇章。
計算機系統構成
現代科學技術,尤其是國防技術的發展,需要有很高運算速度、很大存儲容量的計算機,一般大型通用計算機不能滿足要求。集成電路的進展,為製造巨型機提供了條件。微處理器的發展為陣列結構的巨型機發展帶來了希望。如古德伊爾公司為美國宇航局(NASA)研製了一台處理衛星圖像的計算機系統MPP,該機由16384個微處理器組成128*128方陣。
小型機規模小、結構簡單所以設計試製周期短,便於及時採用先進工藝,生產量大,硬體成本低。小型機的出現打開了再控制領域應用計算機的局面,許多大型分析儀器、測量儀器使用小型機進行數據採集、整理、分析、計算等。
系統匯流排
這裡所說的計算機原理,主要以微型機為主,因為微型機與我們的生活關係最為密切。
1、科學計算
CPU
3、信息管理
4、計算機網路與通信
5、計算機輔助教學、設計、製造
6、儀器儀錶與家電控制
7 電子遊戲,看視頻,購物
計算機的主要應用
數據可分為數值數據和非數值數據兩大類。從計算機所處理數據的類型這個角度來看,計算機的應用原則上應該分成科學計算和非數值計算兩大類。後者包括信息處理、過程式控制制、計算機輔助設計、計算機輔助教學、人工智慧等,其應用範圍遠遠超過前者。計算機的應用已形成了一門專門的學科,它主要包括以下幾方面的內容:
I/O介面
2.過程式控制制
過程式控制制是指利用計算機對生產或其他過程中的數據及時採集,並按最佳方案實現自動化。過程式控制制可以提高自動化程度,減輕勞動強度、提高生產效率、降低生產成本,保證產品質量的穩定。
3.信息處理
鍵盤
4.計算機輔助系統
1)計算機輔助設計
計算機輔助設計簡稱為CAD(ComputerAidedDesign),它是利用計算機幫助人們進行各種工程和複雜產品的設計。CAD技術不僅提高了設計質量,而且也提高了自動化程度,大大縮短了新產品的設計與試製周期,從而成為生產現代化的重要手段。
計算機工作過程
3)計算機輔助教學
計算機輔助教學簡稱為CAI(ComputerAssistedInstruction)。它是指利用多媒體和網路技術,使得網上教學和遠程教學得以實現。利用CAI,可將課程內容編成圖文並茂的軟體,使教學過程更加形象化。對於不同程度的學生可以自主選擇不同的教學內容和教學進度,改變了教學的單一模式。
計算機系統構成
由上圖我們可以看出,計算機系統包含硬體系統和軟體系統,硬體系統是計算機的基礎,軟體系統是計算機的上層建築。一個完整的計算機系統必須包含硬體系統和軟體系統,只有硬體系統沒有軟體系統的機器叫裸機。
硬體系統一般包括:微處理器(CPU)、內存儲器、輸入/輸出介面、系統匯流排、外部設備。
其中,各部件之間的信號傳輸要通過系統匯流排來完成。系統匯流排
CPU
1、微處理器(CPU) CPU是電腦系統的心臟,電腦特別是微型電腦的快速發展過程,實質上就是CPU從低級向高級、從簡單向複雜發展的過程。
CPU(Central Processing Unit)又叫中央處理器,其主要功能是進行運算和邏輯運算,內部結構大概可以分為控制單元、算術邏輯單元和存儲單元等幾個部分。按照其處理信息的字長可以分為:八位微處理器、十六位微處理器、三十二位微處理器以及六十四位微處理器等等。
主流的CPU都是由AMD公司和Intel公司生產提供的。如AMD Athlon64 X2 5000+AM2、Intel Core 2 Duo E7200等。
2、內存儲器和輔助存儲器
內存儲器簡單的說就是我們通常說的內存。輔助存儲器簡單的說就是指硬碟和光碟機。
內存
3、輸入/輸出介面
I/O介面
IDE介面,一般用於連接硬碟和光碟機,這個介面逐漸被SATA介面所代替;SCSI介面主要是用作連接SCSI介面的硬碟;USB介面一種通用萬能插口,支持熱插拔;IEEE 1394介面比USB介面提供了更高的速率,同時也支持熱插拔。AGP介面,主要是用來連接顯卡,但是隨著技術的發展,逐漸被PCI-E介面所取代。
4、系統匯流排
匯流排一般有兩類:一類是連接計算機內部各模塊的匯流排,如連接CPU、存儲器和I/O介面的匯流排,常用的有ISA匯流排、EISA匯流排、PCI匯流排等;另一類為系統之間或系統與外部設備之間連接的匯流排,常用的有EIA-RS232C串列匯流排和IEEE-488并行匯流排等。
5、外部設備
外部設備 一般包括鍵盤、滑鼠、顯示器、印表機等。
6、運算器
運算器又稱算術邏輯單元ALU(Arithmetic Logic Unit)。運算器的主要任務是執行各種算術運算和邏輯運算。算術運算是指各種數值運算,比如:加、減、乘、除等。邏輯運算是進行邏輯判斷的非數值運算,比如:與、或、非、比較、移位等。計算機所完成的全部運算都是在運算器中進行的,根據指令規定的定址方式,運算器從存儲或寄存器中取得操作數,進行計算后,送回到指令所指定的寄存器中。運算器的核心部件是加法器和若干個寄存器,加法器用於運算,寄存器用於存儲參加運算的各種數據以及運算后的結果。
軟體系統包括:系統軟體和應用軟體
1、系統軟體
Windows 系列、 Linux系列等
系統軟體包括:操作系統、服務型程序、語言處理程序。
2、應用軟體
應用軟體包括:定製應用軟體和通用應用軟體。
可以簡單概括為輸入、處理、輸出和存儲4個過程。
1.輸入是指接受由輸入設備(如鍵盤)提供的信息;
2.處理是對信息進行加工處理的過程,並按一定方式進行轉換;
3.輸出是將處理結果在輸出設備上(如顯示器等)顯示或列印等操作;
4.存儲是將原始數據或處理結果進行保存以便再次使用。
這4個步驟組成一個循環過程。輸入、處理、輸出和存儲並不一定按照上述的順序操作。在程序的指揮下,計算機根據需要決定採取哪一個步驟。個人計算機的工作過程是通過輸入設備(鍵盤或滑鼠等)輸入用戶的操作命令或數據,計算機的處理單元(微處理器)接受到輸入命令后,進行處理並將結果在計算機的輸出設備(顯示器或印表機等)上輸出,也可以將結果保存在計算機的存儲器(硬碟或軟盤)上。因此,計算機對於某種輸入命令所要進行的對應操作,是由事先保存在計算機中的程序決定的。
計算機工作過程
PC一般由主機和輸入輸出設備組成。主機一般由CPU、主板、內存、硬碟、顯卡、光碟機、電源、機箱、散熱器等組成;輸入設備一般包括鍵盤、滑鼠等,輸出設備一般包括顯示器、印表機等。這樣由主機和輸入輸出設備組成了一台裸機,只有再安裝好操作系統和應用軟體以後,才稱得上一台真正的計算機。
首先人話版的意思,就是說人話,人人都能聽懂,但是考試得零分。
現在正式開始:
先解釋什麼是邏輯電路、邏輯門
一條線上串兩個開關,需要兩個開關都打開才能通電?這個可以理解吧。
這種電路叫做“與門”,待會我寫成“and”,可以理解吧?接通記成1,否則0。
那就是1 and 1 結果就是1,或者寫成 and(1,1)=1。顯然and(1,0)=0。
再有一個要記住,其實一個很小的電子元件就可以實現這個功能,不一定真要去搞一條線兩個開關。這個電子元件叫二極體還是八極管還是電容我們不用去關心,反正可以實現。非要了解你去查別的資料。
如果是並聯開關呢,就是一條線接個分支出去,接上開關匯成一條線。打開任何一個開關,都可以通,就是“或門”待會我寫成 or。同樣是電路實現的。
現在有一條線本來是通的,燈會亮。你在中間分一條線出來,接上一個開關製造一個短路,如果不理解短路。就想象成水龍頭,本來2樓可以用水,你把一樓的水龍頭打開二樓自然就沒水了。英文是“notrynodie”很高端。待會我寫成not, 這叫做“非門”。
講完了,以上大概就是計算機的80%原理了。自己喜歡推導就不用看下面了。
下面都是疊加,現在先把邏輯門疊加完。
先輸入兩個動作給一個and,and門裡出來的信號再輸出給not。
寫成 not (and(x,y)),x,y就是你手上的兩個開關。
這叫做叫做與非門,捋一捋就知道Not(and(1,1))=0,not(and(0,0))=1。
下面還有異或門Not(Or),就不講了。可以自己推導一下。
為什麼是2進位
基本門電路了解了。我們來看一下怎麼實現進位記數。首先我們設定一下,通電就是1,不通就是0,待會好表達。現在地上放橫放四個燈泡,剛好二進位的4位數。第一位就是一個開關,第二位做一個and(xy),有兩個信號時,輸出1個信號。這就是二進位的第二位。第三位做一個and[and(xy),and(x,y)]4個信號都是1時,才輸出1,看得懂不?裡面成and構成外面and的信號源。這不就是2進位了嗎?也就是說,這也是通過邏輯電路可以實現的。
剩下的10%是存儲技術。
就像剛才,二進位進位也需要儲存啊,把上一位輸出輸入到下一位,或者加上另一個數,需要有個地方暫時存放我們的信號呀。有一種電子元件,叫啥?電容?半導體?還是什麼東西,他有一種特性,就是你給他加電,他不傳導。他會把電子留下,如果再加電,就會被擊穿,短暫的放出電子(大概或者就是這麼個道理)。這個原理就可以作為機器里的暫存。外部存儲就是光碟,磁碟什麼的。最早會用到的打孔方法,這個最好理解。一條很長的紙帶上,有規律的打上一些孔。我們按一定的速度拖動這張紙條。因為有孔,所以有時透光,有時不透光。透光的時候對面有個感光元件收集信號。在約定個時長比如一秒采一次樣。就得到一段2進位的信息了。這個約定的採樣時長很重要。要不就亂套了,這個後面再說。
計算機怎麼控制別的設備
最好理解的是顯示屏。你可以把這些看做是一排排的燈。每個燈泡連一個開關。按規定開關燈泡,就顯示出信息。想要顯示8的樣子。按順序開關就好。這個順序是用邏輯電路去設計好的。不用我們去逐個按電燈的開關。我們控制邏輯電路就好。只按幾個開關,就能顯示出8。當然這是最笨的辦法。沒有哪台電腦會這麼去干。
下面是計算。
如果這組8的信號沒有輸給顯示器,而是輸給了存儲器1。然後我們按加號,識別為選擇存儲器2。我們輸入1。當你按等號。就會執行一個把存儲器1和存儲器2的信號同時輸出一個準備好的邏輯電路。等邏輯電路再輸出的時候,就正好變成了9的信號,再把這個數字信號,輸送給控制顯示器的邏輯電路翻譯成燈陣的開關方式。最後顯示器的燈陣就會顯示出9的樣。這就實現了加法。也實現了顯示。減法差不多,
一旦有了加法,就可以疊加其他的運算符號。比如乘法,減法。多少次方。差不多都是加法的累加。在加上之前說的邏輯運算。就發展出了更多的邏輯方式,比如“如果……就執行“這種控制方式。相當於用邏輯門設定一個執行密碼。
如果…就,就是 if,如果存儲器1裡面等於1,就執行關機的代碼。
還有for ,,就是一直執行,除非條件出現。
有了加減乘除,有了if,for。就可以把一些不是數字的轉成數字來計算。比如,屏幕如果關閉,就關機。這裡頭沒數字。但是我可以把屏幕關閉這種狀態解釋為1,我寫下邏輯,如果屏幕關閉狀態成立,X=1,如果X=1,執行關機的流程。這裡的X是我們提前準備好的一個盒子。沒有信號輸入的時候保存為0.
明白了這個道理,我們就可以編一些簡單的程序了。比如讓電腦在顯示器上顯示一個圓。寫好了、很複雜。也許累了8天。但是以後再要畫圓,就不用再寫了。因為我可以保存這段代碼。下次用的時候,只需要改變直徑參數就可以了。但是這段代碼很長,抄起來也很費時間。所以我們取個代號,比如是cor,用邏輯方法,如果我們輸如cor這個代號時候,機器輸出畫圓的代碼串。我們再加個參數,比如cor=10,這樣電腦就會畫一個直徑10的圓。你自的代碼可以簡寫成cor,別人寫的就不一定,他可能會簡寫成roc什麼的。為了讓別被人也讀懂你的代碼,最好是統一下。
有個很牛的人叫做“別死磕”,寫了很多機器代碼,有的是控制顯示器畫直線,有的控制時間,有的命令只是幫助計算。他把這些命令全部保存起來,都複製給別人用,大家都用,用的人多了,就成了一種語言,叫做”別死磕”。
我們再用”別死磕”編譯成更高級的編程語言,比如C,“別死磕”一個命令可以代表上百個機器開關,可以敲3下鍵盤就畫一個圓。C語言一個命令可以代表上百條”別死磕”命令。可以敲2下鍵盤就畫一個奧迪。在C的基礎上,我們還搞了C++。機器在翻譯的時候,會先將C++翻譯成C語言,在把C語言翻譯成機器語言。這就是編程。
什麼是帶寬
剛才說了頻率,再回顧一下。頻率就是信號的間隔。比如遠方船上的旗手,舉左手是一個意思,舉右手是一個意思,這樣我們就不用考慮頻率。但是如果對面旗手是殘疾人。我們換個說法,你舉手是1,不舉手是0,這種情況就需要考慮頻率了,要不然我怎麼知道你3分鐘不舉手代表幾個意思。如果1秒鐘採樣2次。就是2赫茲。這樣的速度對於船上殘疾旗手來說已經很快了。表達“你好”兩個字只需要半分鐘。但是計算機器還要稍快點,每秒三、五十億次。當然這個是cpu內部的頻率。內存到cpu之間、光碟到硬碟之間沒這麼快。光碟最好理解。光碟上有很多洞。有洞的地方是1,沒洞就是0,光碟轉起來,光頭在上面掃過讀信息。轉速不能再提高,但讀的效率可以再提高,就是再增加一個光頭(就這個意思)。對了,讀取信息還要用線來傳輸,比如拷貝到硬碟內存什麼的。多了個光頭,就多條線唄。一條線不行兩條。線多了不好收拾就粘成一排,7、8條線粘成一排看上去就像一條帶子有沒有。線越多帶子就越寬對不對,所以帶寬就影響到速度有沒有。所以帶寬*頻率。就是總的效率
16進位
再來,你4條線同時給我傳信息,我同時就能收到4個信號。我想只要3個信號都不行。就好比你想買1根牙籤,老闆說一盒4根不開零。或者看成對面船首站了4位殘疾人在打信號,4個信號排列起來就是4位,每個信號兩個區別,有信號跟沒,就是0和1,這4位機就是4位機。4位你自己算算有多少種變化。不就剛好16種嗎,每採樣一次,能得到16個符號,英文字母26個,還要區分大寫還有標點,16肯定是不夠的。所以我們再採樣2次。就能得到16*16,256個變化,這樣就可以表示英文的一個字母了。採樣兩次才能成字母,叫字。採樣一次只能算一個節奏,所以叫位元組。一個中文四個位元組,也叫雙字。採樣一次有16個變化。就記做F,0~9後面是abcdef,剛好,F代表15。0~F ,這就是16進位。