《軟體設計師》 計算機組成原理與體系結構

2021-09-08 19:33:40 字數 4731 閱讀 2806

任何進製轉成十進位制,使用按權展開法,注意小數點。

十進位制轉成任意進製,使用短除法。

1個位元組有8個位,每位分別用二進位制的0和1來表示。分為無符號數和有符號數,下面以有符號數來說明,有符號數最高位是符號號,0表示正,1表示負。

原碼:1 表示 0000 0001     -1表示 1000 0001  相加得  1000 0010 ,相當於-2,所以原碼不直接用作計算。

反碼:如果是正數,則與原碼相同;如果是負數,除符號位之外,所有位在原碼基礎上反轉, 如 1表示 0000 0001 , -1表示 1111 1110, 相加得 1111 1111,該值為負數,取其原碼,則是 1000 0000,得出 -0,結果正確,但仍然有點古怪。

補碼:如果是正數,則與原碼、反碼相同,如果是負數,則在反碼基礎上+1,比如 1表示為 0000 0001, -1 表示 1111 1111,相加得 1 0000 0000 ,即是 0,這個看上去最符合我們想要的結果。

移碼:一般用於浮點運算中的接碼,不管是正數還是負數,移碼都是在補碼基礎上將首位取反。比如1表示為 1000 0001, -1表示 0111 1111,相加得 1000 0000,即 -0。

表示範圍:

原碼和反碼的範圍相同,補碼比原碼和反碼的取值範圍大1,這是因為補碼的0只有0000 0000 這一種形式,而原碼和反碼的0有  0000 0000 和 1000 0000 兩種形式。

原碼和反碼:  -(2^(n-1) - 1) ~ 2^(n-1) -1

補碼: -2^(n-1) ~ 2^(n-1) -1

其中 n 表示位數,比如8位,原碼和反碼的範圍是 -127~127,補碼範圍是 -128~127

浮點數:

浮點數表示 n = m * r^e

其中,m稱是尾數,e 是指數, r是基數。尾數使用一位非0數表示。

浮點數運算時,有三個步驟:對階、尾數計算、結果格式化。

比如  0.123 * 10^2  + 0.1 * 10^3 會先轉成  0.0123 * 10^3 + 0.1 * 10^3 轉成 (0.0123+0.1) * 10^3 = 0.1123 * 10^3 = 1.123 * 10^2

主機:這裡的主機實際只包含cpu和記憶體

cpu包括運算器和控制器

其中運算器包括4個部分:

1、算術邏輯單元alu

2、累加暫存器ac

3、資料緩衝暫存器dr

4、狀態條件暫存器 psw

控制器包括4個部分:

1、程式計數器 pc

2、指令暫存器ir

3、指令解碼器

4、時序部件

flynn分類法——計算機體系結構分類

1、單指令單資料流 sisd

控制部分只有1個,處理器只有1個,主存模組只有1個,代表是單處理器系統、微控制器。

2、單指令多資料流 simd

控制部分只有1個,處理器有多個,主存模組有多個,各處理器以非同步的形式執行同一條指令,代表是並行處理機,陣列處理機。

3、多指令單資料流 misd

理論模型,實際不存在。控制部分多個,處理器1個,主存模組多個。

4、多指令多資料流 mimd

控制部分、處理器、主存模組都有多個,能夠實現作業、任務、指令 等全面並行,代表是多處理機系統、多計算機,我們使用的計算機應該都屬於此類吧。

兩種指令系統:cisc 和 risc

cisc:複雜指令系統

指令數量多,使用頻率差別大,可變長格式,支援多種定址方式,使用微程式控制技術實現,研製周期長。超級計算機就屬於此類。

risc:精簡指令系統

指令數量少,使用頻率接近,定長格式,大部分為單週期指令,操作暫存器,只有 load/store操作記憶體,支援較少的定址方式,增加 了通用暫存器,硬佈線邏輯控制為主,適合採用流水線,優化編譯,有效支援高階語言。我們使用的計算機就屬於此類。

流水線:多條指令併發執行的一種實現技術。

對於一條指令的執行,分為三個步驟,分別是:取指、分析和執行。其中最耗時的乙個步驟時長,稱為流水線的週期。

流水線的總時長計算分為兩種,流水線分為流水線建立階段和流水線運轉階段,建立階段需要耗費一條指令的時長:

1、理**式

(1條指令的所有步驟總時長) + (指令條數-1)*流水線週期

2、實踐公式

如果一條指令中每個步驟耗時不同,則會產生時間片不工整,需要等待,所以可以讓每乙個步驟耗時都設定成流水線週期。這樣的話,公式就是:(1條指令的步驟數*流水線週期) + (指令條數-1)*流水線週期

考試中的選擇題優先使用理**式,如果理**式沒有結果,則使用實踐公式。

流水線吞吐率:單位時間內流水線所完成的任務數量。

tp = 指令條數/流水線執行時間

一條流水線的極限吞吐率是: tp = 1/流水線週期

所以如果要提公升流水線吞吐率,就要想辦法降低流水線週期。

流水線的加速比:完成同一批任務,不使用流水線耗時/使用流水線耗時,所以流水線加速比是越大越好。

流水線的效率:批流水線的裝置利用率,在時空圖上,定義為 n 個任務占用的時間區與  k 個流水段總的時空區之比。可見如果一條指令的每個步驟耗時越接近,則流水線的效率越高。

儲存結構:cpu暫存器、cache(按內容訪問 )、記憶體(主存)、外存(輔存),依次速度遞減,容量遞增。

使用 "cache+主儲存器" 方案的系統平均週期 t = 命中率 * cache週期時間 + (1-命中率)*主儲存器週期時間

原理就是,當取資料時,先去cache中找,如果找到則為命中,如果找不到,則去主儲存器中找。上述公式也是依據這個原理而來。所以提高命中率,則可充分發揮cache的作用。

cache區域性性原理:

1、時間區域性性:

比如迴圈執行的部分

2、空間區域性性:

比如陣列初始化賦值

3、工作集理論:

是程序執行 被頻繁訪問的頁面集合

主存分類

1、隨機訪問儲存器:ram

掉電之後資料會丟失,如記憶體。分為 dram\sram

2、唯讀儲存器:rom

掉電之後,資料不會丟失,如bios rom。分為 mrom/prom/eprom/閃速儲存器

主存編址:

將記憶體晶元組合成儲存器 ,稱之為編址。

記憶體晶元一般用 n*m位儲存器表示,表示擁有n個位址的m位儲存器。

例題:記憶體位址從 ac000h 到 c7fffh,共有多少k個位址單元?如果該記憶體位址按字(16bit)編址,由28片儲存器晶元構成。 已知構成此記憶體的晶元每片有16k個儲存單元,則該晶元每個儲存單元儲存多少位?

答案:112   4

解:1、 c7fffh - ac000h + 1/1024 = 112

2、112k * 16bit = 28 * 16k * x;  解出 x  = 4

磁碟:訪問時間 = 尋道時間 + 等待時間(平均定位時間 + 轉動延遲)

例題:

答案:366ms     66ms

匯流排:根據匯流排所處的位置不同,分為三類:

1、內部匯流排

3、外部匯流排

系統可靠性分析——串聯系統與併聯系統

串聯系統的可靠性 = 各個子節點的可靠率相乘

併聯系統的可靠性 = 1 - 併聯分支的不可靠性相乘 (併聯系統只有當併聯分支全部故障才會故障)

差錯控制:crc 和 海明校驗碼

任何編碼都由一組碼字(code word)組成,兩個碼字間變化的二進位制位數稱為碼距(code distance)。而在一種編碼中任意兩個碼字之間最少變化的二進位制位數稱為該資料編碼的最小碼距(minimum code distance)。

比如傳輸a和b,用1表示a,用0表示b,則碼距是1,此時無法檢錯,因為1和0都是合法的; 如果用 11表示a,用00表示b,則碼距是2,此時可以檢錯,比如 10 和 01就是錯的,但無法糾錯;如果用111表示a,用000表示b,則不僅能檢錯,還能糾錯,如110就是錯的,應該糾正為111(預設按出錯概率小的方向糾錯)

檢錯、糾錯和最小碼距的關係:(了解即可)

1、在乙個碼組內為了檢測 e 個誤碼,要求最小碼距d 應該滿足 d >= e+1

2、在乙個碼組內為了糾正 t 個誤碼,要求最小碼距應該滿足 d > 2t+1

迴圈校驗碼crc

模2除法與算術除法類似,但每一位除的結果不影響其它位,即不向上一位借位,所以實際上就是異或。在迴圈冗餘校驗碼(crc)的計算中有應用到模2除法。

多位模2除法採用模2減法,不帶借位的二進位制減法,因此考慮餘數夠減除數與否是沒有意義 的。實際上,在crc運算中,總能保證除數的首位為1,則模2除法運算的商是由餘數首位與除數首位的模2除法運算結果確定。因為除數首位總是1,按照模2 除法運算法則,那麼餘數首位是1就商1,是0就商0。

g(x)=x^3+x+1對應的二進位制數為1011,且g(x)中含3個項式,生成多項式為4位二進位制,由crc規則應該取(4-1)=3位(校驗和),所以可以預加上3位得到1000b*2^3=1000 000b;

1000 000b(被除數)對1011(除數)做模2除法,得到的餘數便是101b(即crc校驗和),所以該資料的迴圈冗餘校驗後的資料應為1000 000b+101b=1000101b。

多項式和二進位制數有直接對應關係:x的最高冪次對應二進位制數的最高位,以下各位對應多項式的各冪次,有此冪次項對應1,無此冪次項對應0。可以看出:x的最高冪次為r,轉換成對應的二進位制數有r+1位。

crc校驗碼位數 = 生成多項式位數 - 1

海明校驗碼

計算機組成原理cu 計算機組成原理 計算機概論

現代計算機樣式千奇百怪,常見的有我們的筆記本,台式電腦,也有各種伺服器 手機 攝像頭等都屬於計算機範疇。計算機包含我們看得見摸得著的計算機實體,稱為計算機硬體,如cpu 記憶體 各種掛接裝置等 還有我們看不見摸不著的軟體,它支援著硬體按照我們的預想在操作,包括系統軟體和應用軟體 計算機硬體樣式千奇百...

計算機組成原理

1計算機系統概論 1.1 計算機簡介 計算機由 硬體 和 軟體 組成。硬體 是看得見摸得著的各種電子元器件,各類光,電,機裝置的實物組成,如主機,外設等等。軟體 是看不見摸不著,由人們事先編製成具有各類特殊功能的資訊組成。計算機的三層結構 高階語言 組合語言 機器語言 微指令系統。計算機組成與計算機...

計算機組成原理

1.加法器是如何計算不同型別變數的加法的 分析 加法器的功能就是計算而已,其有兩個輸入端,當兩個輸入端都有資料時,其就進行計算並將結果輸出。輸入到加法器的兩端的資料格式是統一的 可能都是有符號的補碼形式 這就是說,各種型別的變數相加,這些變數在進入加法器輸入端之前,程式都會根據其型別將其轉換為輸入端...