動手學計算機類-快學計算機組成原理


主要是介紹計算機的基礎知識,這是第一部分–計算機組成原理

計算機組成原理

計算機歷史

重要的計算機器的歷史人物和發明;

電子計算機

概念:繼電器—類比成水龍頭
繼電器—>熱電子管–>三級真空管
熱電子真空管:熱電級發射—一極加熱發射電子,另一個電極吸引電子,形成電流; 單向流動的稱爲二極管;之後另一個發明家在這兩個電極之間,加入第三個電極:控制電極;
三極真空管:向控制電極施加正電荷,允許電流流動;施加負電荷。阻止電子流動;這樣就可以代替繼電器,稱爲起到開關的作用,相比較來說不會產生磨損;但會燒壞;

晶體管發明

代替真空管控制開關的作用,一個全新的計算機時代誕生了;即半導體技術—通過控制門電極來達到控制導電或不導電;
現在一個晶體管達到小於50nm;並且不僅小,而且切換快;切換上百萬次每秒;

晶體管和半導體的概念:

半導體制成晶體管,晶體管集成芯片
三極管的使用特性

布爾邏輯和邏輯門

兩種值:true false ; 三種基本操作:not and 和or; 恰好用晶體管可以輕易實現上述邏輯;
晶體管之前只是用電來控制開關的方式; 三根線:兩個電極和一個控制;就像水龍頭;
使用晶體管來實現:門電路 分清誰是輸入和輸出
NOR門:
AND邏輯門:兩個晶體管,串聯在一起
NOR邏輯門:兩個晶體管,並聯在一起;
符號表示:三種門,是其他所有操作的基礎
其他常見操作:XOR:用上面三種門來構造異或門,非常有用,雖然連接構造較複雜,但是我們可以把它放進工具箱裏面了;向上抽象:不關心底層原理怎麼實現的,只關注它的功能和使用方法;

二進制

電腦如何存儲和表示數字;二進制,八進制,十六進制,是最常見的;
1字節=8位;
32位/64位計算機:意思是:每處理一塊數據,每塊是32位或者是64位,一塊能表示最大的數;
正負數表示:第一位表示符號位;
Address:計算機給內存中的每一個位置,做一個“標記”;目的:是爲了方便存取數據,現在內存增長到GB/TB,也要求着尋址數據大小,64位代表着尋址能力更大,同時一次讀取更多的數據;
浮點數(好幾種方法): IEEE 754標準 ;
文字表示:給字母編號,還是間接利用數字來表示;ASCII標準;–只用來表示英語母語國家;拓展到別的國家–UTF-8;
就像ASCII-標準用來表示文字的編碼方式一樣,MP3和GIF 用二進制編碼 聲音/顏色,表示照片,電影和音樂;
歸根到底,就是一連長串位
二進制解決了計算機存儲和表示數字的問題;

ALU-算術邏輯單元

歷史最著名的ALU器件–Intel 74181
ALU有兩個單元-1個計算單元和一個邏輯單元;使用到 AND OR NOT XOR邏輯門
一層層的向上抽象:當理解並承認基本原理知識後,就不再關心具體怎麼運行的,想成一個工廠/盒子,關注輸入和輸出;
XOR+AND—>半加器+半加器+OR---->全加器-獨立組件
爲了使運算更快,不需要等待前一位運算結果,發明–超前進位加法器;
實時性要求不高的機器(恆溫器等):把乘法換算成 加法,多執行幾次;沒有專門的乘法運算單元;
乘法單元:比加法單元只是稍微複雜一點,需要用到更多的邏輯門資源而已;
向上抽象:ALU被表示成一個大寫的V字:代表着兩個輸入數,並操作代碼告訴ALU執行什麼操作。(1000=add,1100=減法),ALU還會引出很多標誌:最基礎的:溢出標誌,0標誌,負數標誌;

寄存器和內存

內存:RAM,ROM
外存 :硬盤
之前的電路都是單向流,現在增加了迴向:把輸出再連回輸入;
爲什麼增加回向流:有記憶功能了,保持邏輯有記憶性;Eg:AND門:永遠保持0;OR門:永遠保持1;—但這是永久的;
AND-OR鎖存器:有設置位和復位 這兩個輸入:可以控制輸出是0還是1;實現了鎖存的效果,這就是 memory(存儲)
邏輯門連線圖

**我們不想不用關心單獨的邏輯門,即向上一層抽象,把門鎖放進一個“box(盒子)”即抽象成一個可以存取1個bit的盒子;盒子的功能就是–門鎖–:可以存取1個bit,保持不變;
抽象成 "盒子-門鎖"圖

有:輸入線、允許讀/寫線 、輸出線
什麼是寄存器?Register
一組鎖存器叫寄存器,多少個鎖存器就叫多少位寄存器。發展有8位寄存器,16位寄存器和32位寄存器,現在基本都是64位寄存器。
64位寄存器:需要64根數據線(輸入線),64根輸出線,1條線控制讀/寫線,總共129線
但是如果要存256位就要高達513線,所以通過使用矩陣。16X16個鎖存器按矩陣放置。
行陣排列法:用一根“允許寫入線/允許讀取線”連所有鎖存器。共只要35條線:1根數據線,1條允許寫入線,1條允許讀取線,還有16行和16列的線用於選擇鎖存器。

多路複用器:Multiplexer;向上抽象就是一個256位的內存;擴大存儲規模,就是並排列在一起。向上抽象就是一大塊整體連續的可尋址內存。地址不需要自己操心,操作系統自動給分配好。
內存地址:8位代表256個內存地址,也即256個字節。一個地址等於8位一個字節。
所以要想需要更大的內存位置就要需要更多的內存地址
內存的一個重要特性:可以隨時訪問任何位置。
RAM分類:SRAM DRAM Flash memory NVRAM.功能都是與SRAM相似的,區別只是使用不同的電路存儲 “位”。例如,使用邏輯門 電容器,電荷捕獲 或 憶阻器。但是所有的都是矩陣層層嵌套,來存儲大量信息。

小結概念

AND-OR鎖存器 盒子 寄存器 RAM(隨機讀寫存儲器)

中央處理器 CPU

重點:1、組裝CPU 2、CPU怎麼執行命令
計算邏輯單元ALU:輸入二進制,會執行計算;
兩種內存:register寄存器,每次只能存一個值。
RAM是利用矩陣擴大的內存,能在不同地址存儲大量數字。

CPU運行

第一個階段:取指令階段 : fetch
第二個階段:譯碼階段 :deode
第三個階段:執行階段:execute

CPU包含: 控制單元 + ALU計算邏輯單元+ 若干寄存器 +時鐘(時鐘頻率)
RAM:是在CPU外面的獨立組件,CPU和RAM 之間用“地址線”+“數據線”+“允許讀/寫線”進行通信。

指令和程序

重點:1、給CPU指令,一步步帶你運行一遍程序
CPU之所以強大是因爲他是可編程的,寫入不同指令,就會執行不同任務。即是一塊硬件,很容易被硬件控制。

兩位數相加例子

四個指令下的兩個數相加:load_A load_B STORE_A ADD
馮諾依曼體系下的計算機結構:程序和數據都存儲在同一個內存裏面的,本質上沒有區別,都是二進制數。

指令

這裏指令是8位:前4位是操作碼—>指令(最多16條),後四位是地址------>數據值(最多十六個值)
解決方法:
1、更多位來代表更多指令:32位或64位,這個叫指令長度。
2、可變指令長度:
指令集越來越多,是因爲給CPU設計了越來越多的功能。

高級CPU設計

如何快速傳遞數據給CPU?

超高的時鐘速率帶來一個問題:如何快速傳遞數據給CPU,即CPU和外部RAM之間的通信速度匹配問題? 類似空有強大的蒸汽機,卻無法快速加煤?

法一:添加cache

給CPU裏面加一點RAM–called cache。和外部RAM硬件上沒有什麼不同但是因爲更靠近CPU,所有傳輸速度更快。因爲cache集成在CPU中,內存很小:但是卻可以CPU從RAM拿數據時,RAM不用傳一個,而是可以傳一批。但是數據可以先存在cache裏,CPU不用空等。可能數顯問題: cache hit /cache miss

法二:PiPline—流水線技術

fetch–decode–execute: 不同任務重疊進行,這樣會用上CPU裏面的所有部分,流水線技術,每個時鐘週期執行一個指令,但是吞吐量X3。
可能出現的問題:
問題一:指令之間的依賴關係。解決方法1:亂序執行
問題二:條件跳轉問題,解決方法1:空等,等到條件確定值下來。解法2:推測執行接下來的執行指令。這些方法本質都是提高吞吐量。

解法三:多核處理器(雙核或四核處理器)

意思是一個CPU芯片裏面有多個獨立處理單元,運行時像是由多個獨立的CPU,但是共享一些資源:cache,可以多核之間合作運算。多個CPU使用,一般這個是用在服務器上面搭載運行,或者是更強大的計算速度。
我們的任務就是充分利用好現在已有的運算處理能力,去做cool and useful 事情,即重心在編程上
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章