【系統分析師之路】第十二章 計算機組成與體系結構(視頻筆記)
編碼及浮點數運算(★★)
Flynn分類法(★★)
CISC和RISC(★★)
存儲系統(★★★★)
嵌入式系統(★★★)
系統可靠性計算(★★)
- 編碼及浮點數運算(★★)
浮點數就是數學中的科學計數法。以下兩個浮點數都是需要標準化的
36.25*10的負一次方
0.3625*10的平方
浮點數特點:
1.尾數一般用補碼,階碼一般用移碼
2.階碼的位數決定數的表示範圍,位數越多範圍越大。
3.尾數的位數決定數的有效精度,位數越多精度越高。
4.對階時,小數向大數看齊
5.對階是通過較小數的尾數右移實現的。
浮點數運算過程:對階->尾數計算->結果格式化
- CISC和RISC(★★)
可變長編碼:有些編碼有5個2進制位,有些7個二進制位,用在CISC中。使用頻率接近的指令如果用變長的話反而效率會低。
精簡指令集:只保留數量很少的常用的指令。使用了寄存器,尋址方式變少了。它適合高級語言和流水線。
關於複雜指令集計算機弊端的敘述有:指令集過分龐雜,每條複雜指令需要佔用過多的CPU週期,強調數據控制,導致設計複雜,研製週期長。
指令系統類型 | 指令特點 | 尋址方式 | 實現方式 | 對編譯系統要求 | 其他 |
CISC(複雜) | 數量多,使用頻率差別大,可變長格式 | 支持多種 | 微程序控制技術 | 低 | 研製週期長 |
RISC(精簡) | 數量少,使用頻率接近,定長格式,大部分爲單週期指令,操作寄存器,只有Load/Store操作內存 | 支持方式少 | 增加了通用寄存器,硬件電路,適合採用流水線 | 高 | 優化編譯,有效支持高級語言 |
- Flynn分類法(★★)
Flynn分類法根據計算機在執行程序的過程中(指令流和數據流)的不同組合,將計算機分爲4類,當前主流的多核計算機屬於(MIMD)計算機。
體系結構類型 | 英文 | 處理器 | 主存模塊 | 控制部分 | 關鍵特徵 | 代表 |
單指令流單數據流 | SISD | 1個 | 1個 | 1個 | 適用於單片機 | 單處理器系統 |
單指令流多數據流 | SIMD | 多個 | 多個 | 1個 | 各處理器以異步的方式執行同一條指令 | 並行處理器,陣列處理器,超級向量處理器 |
多指令流單數據流 | MISD | 1個 | 多個 | 多個 | 被證明是不可能,至少不實際 | 目前沒有,文獻中說流水線計算機爲此類 |
多指令流多數據流 | MIMD | 多個 | 多個 | 多個 | 能夠實現作業,任務,指令等各級全面並行 | 多處理器系統,多計算機 |
- 流水線技術
在流水線上工作是很苦逼的工作,尤其是針對製造密集型企業。因爲流水線節奏快而且充分利用了時間片。
相關參數計算:流水線執行時間計算,流水線吞吐率,流水線加速比,流水線效率。
流水線是指在程序執行時多條指令重疊進行操作的一種並行處理實現技術。各種部件同時處理是針對不同指令而言的,它們可同時爲多條指令的不同部分進行工作,以提高各部件的利用率和指令的平均執行速度。
取指,分析,執行各1ms執行三條指令。
取指 | 1 | 2 | 3 | ||||||
分析 | 1 | 2 | 3 | ||||||
執行 | 1 | 2 | 3 |
將空餘的時間片利用起來,使用流水線執行指令情況:
取指 | 1 | 2 | 3 | ||
分析 | 1 | 2 | 3 | ||
執行 | 1 | 2 | 3 |
流水線週期爲執行時間最長的一段。每個流水線週期完成一條指令。流水線計算公式爲:
流水線計算公式 | 1條指令執行時間+(指令條數-1)*流水線週期 |
理論公式 | (t1+t2+...tk) + (n-1)*t |
實踐公式 | k*t + (n-1)*t |
流水線週期:一條指令的開始到下一條指令的最晚開始時間。
一條指令的執行過程可以分解爲取指,分析和執行三部,在取指時間t取指=3t,分析時間t分析=2t,執行時間t執行=4t的情況下,若按照串行方式執行,則10條指令全部執行完需要(90)t;若按流水線方式執行,流水線週期爲(4)t,則10條指令全部執行完需要(17)t。
實踐公式:取址,分析,執行歸類爲同一週期,因爲需要涉及對齊的情況。k*t + (n-1)*t | ||||||||||||||||||||
取指 | 1 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | |||||||||||
分析 | 1 | 1 | 2 | 2 | 3 | 3 | ||||||||||||||
執行 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 |
實踐情況下:1條指令執行時間爲12+(指令條數3條-1)*流水線週期4 = 20 t。
理論公式:(t1+t2+...tk) + (n-1)*t | |||||||||||||||||
取指 | 1 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | ||||||||
分析 | 1 | 1 | 2 | 2 | 3 | 3 | |||||||||||
執行 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 |
理論情況下:1條指令執行時間爲9+(指令條數3條-1)*流水線週期4 = 17 t。
超標量流水線:多條流水線並行執行。比如就有度爲2的超標量流水線。超標量流水線其實就是多線程執行流水線。
取指 | 1 | 3 | 5 | ... | n-1 | ||||
取指 | 2 | 4 | 6 | ... | n | ||||
分析 | 1 | 3 | 5 | ... | n-1 | ||||
分析 | 2 | 4 | 6 | ... | n | ||||
執行 | 1 | 3 | 5 | ... | n-1 | ||||
執行 | 2 | 4 | 6 | ... | n |
設每條指令由取指,分析,執行3個子部件完成,並且每個子部件的執行時間均爲 t,若採用常規標量單流水線處理機(即該處理機的度爲1),連續執行16條指令,則共耗時(18)t,若採用度爲4的超標量流水線處理機,連續執行上述16條指令,則共耗時(6)t。
解答:3個子部件-》1條指令執行完了時間爲3。指令條數16條,指令週期爲1,那麼 3+ (16-1)*1 = 18。
如果使用超標量計算機,相當於並行執行了,因爲度爲4,所以可以理解成4個進程並行,16條指令可以4條4條操作了,那麼3 +(16/4 - 1)* 1 = 6。
流水線加速比計算:
完成同樣一批任務,不使用流水線所用的時間於使用流水線所用的時間之比稱爲流水線的加速比。計算流水線加速比的基本公式:S = 不使用流水線 / 使用流水線。
流水線吞吐率(Though Put rate,TP):是指在單位時間內流水線所完成的任務數量或輸出的結果數量。計算流水線吞吐率的最基本的公式如下:TP=指令條數 / 流水線執行時間。
流水線最大吞吐率 TPMax = 1 / t。
- 系統可靠性計算(★★)
平均無故障時間MTTF | Mean Time To Failure | 定義爲從t=0時到故障發生時系統的持續運行時間的期望值。 |
平均故障修復時間MTTR | Mean Time to Repair | 修復率是指單位時間內可修復系統的平均次數。MTTR=1/修復率 |
平均故障間隔時間MTBF | Mean Time Between Failure | MTBF = MTTR+MTTF。 |
系統可用性 | - | MTTF /(MTTF+MTTR)。在某個時間點上程序能夠按照需求執行的概率。 |
平均無故障:在整個生命週期中能夠正常工作的時間的長度。買來的燈泡使用了1000小時才壞,那麼MTTF就是1000小時。
平均故障間隔時間:燈泡壞了以後花一個小時進行了修理,那麼MTBF就是1001小時。
系統可用性:1000/1001來得到,也就是平均無故障時間除以平均故障間隔時間。
在整個生命週期中運行了10,000個小時出現故障,修復以後機器又運行了5000個小時;這樣子,平均無故障時間就是7500個小時。
系統可靠性的簡單度量時平均故障間隔時間(MTBF),其計算公式是(MTTR+MTTF);軟件可用性是指在某個給定時間片上程序能夠按照需求執行的概率,其定義爲(可用性=MTTF/(MTTF+MTTR)*100%)
- 總線
一條總線同一時刻盡允許一個設備發送,但允許多個設備接收。總線的分類如下:
數據總線 | Data Bus | 在CPU與RAM之間來回傳送需要處理或者是需要存儲的數據。 |
地址總線 | Address Bus | 用來指定在RAM(Random Access Memory)之中儲存的數據的地址。 |
控制總線 | Control Bus | 將微處理器控制單元(Control Unit)的信號,傳送到周邊設備,一般常見的有USBBus和1394Bus。 |
- 存儲系統概念(★★★★)
計算機的存儲系統採用分級存儲體系的依據是程序訪問的侷限性,目前計算機系統中常用的三級存儲體系是Cache,主存和輔存。
在Cache與主存層次結構中,主存單元到Cache單元的地址轉換由硬件來完成。
按照Cache地址映像的衝突概率,從高到低排列的是(直接映像,組相聯映像,全相聯映像) 。
時間局部性 | 指程序中的某條指令一旦執行,不久以後該指令可能再次執行,典型原因是由於程序中存在着大量的循環操作。 |
空間局部性 | 指一旦程序訪問了某個存儲單元,不久以後其附近的存儲單元也將被訪問 |
即程序在一段時間內所訪問的地址可能集中在一定的範圍內,其典型情況是程序順序執行。 | |
工作集理論 | 工作集是進程運行時被頻繁訪問的頁面集合。 |
Cache的功能提高CPU數據輸入輸出的速率,突破馮諾依曼瓶頸,即CPU與存儲系統之間數據傳輸帶寬的限制。
使用Cache改善系統性能的依據是程序的局部性原理。
如果以h代表Cache的訪問命中率,t1表示Cache的週期時間,t2表示主存儲器週期時間,以讀操作爲例,使用Cache+主存儲器的系統的平均週期爲t3,則:t3=h*t1+(1-h)t2。其中(1-h)也叫做失效率也就是未命中率。
Cache的讀寫過程:
寫直達 | 同時寫Cache和內存 |
寫回 | 只寫Cache,淘汰頁面時寫回內存 |
標記法 | 只寫入內存,並將標誌位清0,若用到此數據,需要再次調取。 |
Cache多少頁面淘汰算法:
1.先進先出算法FIFO
2.近期最少使用算法(最近最少使用利用了局部性原理)
3.LFU:根據統計學數字來淘汰
映像方式:直接相聯必須是0對0,1對1,所以它的衝突率肯定是高的。
直接相聯映像 | 硬件電路較爲簡單,但是衝突率高。 |
組相聯映像 | 直接相聯和全相聯的折中 |
全相聯映像 | 電路難於設計和實現,只適用於小容量的Cache,衝突效率低 |
- 存儲系統計算(★★★★)
內存中的存取我們稱之爲隨機存取。而磁盤外存存取時還要涉及到磁頭的移動。
尋道時間 | 磁盤是圓形的,比方說磁頭從最外層每移動一個磁道都需要一定的時間。 |
等待時間 | 也叫旋轉延遲時間。在某一磁道上定位到某一點需要旋轉磁盤,這個時間就是等待時間。 |
最差的情況可能需要轉一圈纔有可能找到。 |
主存是由若干芯片拼湊而成的。比如16G的主存可能由8片2G的內存所組成。 8*4位存儲器:4位是指每一空間容量有多大。8是地址空間的數量。
內存按字節編址,利用8k*4bit的存儲器芯片構成84000H到8FFFFH的內存,共需(12)片
解答:首先8FFFFH加1等於90000H,減去84000H之後爲C0000H。C0000H再轉爲2進制,表示爲2的15次方+2的14次方。也就是16K+32K等於48K。又因爲題目上說內存是按字節編址的,也就是48K*8bit/8K*4bit=12片內存。其中2的10次方是1K,2的20次方是1M,2的30次方是1G。2的五次方是32。
按字節編址也就是說一個字節有8位,所以每一個地址空間對應8個bit位。
好比我的辦公區域總共有100間房子,每間房子12平米,那麼總共區域有多大呢?就是100*12。
- 存儲系統計算--磁盤結構與參數
存取時間= 尋道時間 + 等待時間(平均定位時間+轉動延遲)
注意:尋道時間是指磁頭移動到磁道所需的時間,等待時間是指爲等待讀寫的扇區轉到磁頭下面所用的時間。
某磁盤磁頭從一個磁道移至另一個磁道需要10ms,文件在磁盤上非連續存儲,邏輯上相鄰數據塊的平均移動距離爲10個磁道,每塊的旋轉延遲時間及傳輸時間分別爲100ms和2ms,則讀取一個100塊的文件需要(20200)ms的時間。
解答:讀取1塊文件需要時間=尋道時間+等待時間=10ms*10個磁道+(旋轉延遲時間100ms+傳輸時間2ms)=202ms
假設某磁盤的每個磁道劃分成11個物理塊,每塊存放一個邏輯記錄,邏輯記錄R0,R1,R9,R10存放在統一磁道上,記錄的存放順序如下圖所示。
物理塊 1 2 3 4 5 6 7 8 9 10 11 邏輯記錄 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 如果磁盤的旋轉週期爲33ms,磁頭當前處在R0的開始處,若系統使用單緩衝區順序處理這些記錄,每個記錄處理時間爲3ms,則處理11個記錄的最長時間爲(366ms)。若對存儲進行優化分佈後,處理11個記錄的最少時間爲(66ms)。
解答:旋轉週期是33ms,一共11個物理塊,旋轉一個元素就是3ms和記錄處理時間是一樣的。最優情況下是讀完R0用了3ms以後,過了3ms磁道馬上就可以讀到R1,讀完R1用了3ms後再用3ms旋轉後,馬上又可以讀到R2,那麼最優情況下,11*(3+3)。
而在上面的情況下,在讀完R0以後,旋轉33ms找到R1,然後再花3ms去讀R1之後,在旋轉33ms找到R2.以此類推。
- 校驗碼
校驗碼的基本思想:在校驗後就是冗餘信息和基本信息是不一樣的。插入冗餘越多,能夠糾錯能力就越強,甚至可以糾錯。
111代表A,000代表B,如果收到101的話,就可以糾正爲111,也就是A也是最簡單的糾錯。
奇偶校驗中的奇校驗:編碼中有奇數個1。原始碼:1101;編碼以後是:11010;有出錯時:01010;因爲有偶數個1了,所以此時被判定位出錯。
CRC循環校驗碼:使用模2除法,校驗碼使整個數可以整除。而且一般校驗碼放在最後面。
海明碼就是利用了多種奇偶校驗嵌套在一起進行的校驗。它把校驗碼拆分到各個位中。並規定2的N次方都是放的是校驗位。那麼五個信息位的場合需要四個校驗位。
利用海明碼(HammingCode)糾正單位錯,如果有6位信息位,則需要加入(4)位冗餘位。
10 9 8 7 6 5 4 3 2 1 位數 i6 i5 i4 i3 i2 i1 信息位 r3 r2 r1 r0 校驗位
什麼是碼距?
一個編碼系統的碼距是整個編碼系統中任意(所有)兩個碼字的最小距離。
例:
若用1位長度的二進制編碼,若A=1,B=0,這樣A與B之間的最小碼距爲1。
若用2位長度的二進制編碼,若A=11,B=00,這樣A與B之間的最小碼距爲2。
若用3位長度的二進制編碼,若A=111,B=000,這樣A與B之間的最小碼距爲3。
模2除法:從字面上可理解爲二進制下的除法。在循環冗餘校驗碼(CRC)的計算中有應用到模2除法。
模2除法與算術除法類似,但每一位除的結果不影響其它位,即不向上一位借位,所以實際上就是異或。
- 可靠性分析中的串聯繫統和並聯系統
串聯繫統必須所有部件都正常運行纔可以,串聯繫統的可靠度就是R1*R2*R3,計算失效率的公式就是R1+R2+R3,但這算的是近似率。並聯系統的失效率是當且僅當所有部件都失效的時候,纔會失效。1減去可靠度再乘以並聯的數目,最後再用1去減掉他的值,得到最後的可靠值。
失效率一般不建議使用。只當可靠度特別高的前提下拿出來使用。
1臺服務器,3臺客戶機,2臺打印機構成了一個局域網。在該系統中,服務器根據某臺客戶機的請求,數據在一臺打印機上輸出。設服務器,各客戶機及各打印機的可用性分別爲a,b,c,則該系統的可用性爲(a(1-(1-b)三次方)(1-(1-c)二次方))。
解答:3臺客戶機,2臺打印機都是並聯系統,因爲客戶機和打印機是隨機並聯的。