王道計(jì)算機(jī)考研 計(jì)算機(jī)組成原理

退伍考研 是因?yàn)樾闹羞€有夢(mèng)
沒有戰(zhàn)勝不了的困難 倒計(jì)時(shí)196天
計(jì)算機(jī)各硬件的工作原理

- PC程序計(jì)數(shù)器(取地址)將指令寫入地址寄存器MAR中
- 通過MAR所提供的地址,從存儲(chǔ)體中取出對(duì)應(yīng)的指令存入MDR數(shù)據(jù)寄存器中
- MDR有一條直接連通cpu的數(shù)據(jù)線,將數(shù)據(jù)發(fā)往IR指令寄存器中
- IR分析指令,將操作碼發(fā)往CU控制單元,CU控制單元得出相應(yīng)的操作
- IR將地址碼,傳到地址寄存器MAR,MAR取出地址碼對(duì)應(yīng)的數(shù)據(jù),傳入MDR中
- 由于CU發(fā)出的操作指令,將MDR中的數(shù)據(jù)傳入運(yùn)算器中的運(yùn)算單元 ACC累加單元 MQ乘商單元等
- ALU算術(shù)邏輯單元 調(diào)配運(yùn)算器中的運(yùn)算工作,X 變址寄存器用于存放零時(shí)數(shù)據(jù),例如上一次執(zhí)行得出的數(shù)據(jù),通過將上一次執(zhí)行的數(shù)據(jù)放入X中,可將X中的數(shù)據(jù)再次作為運(yùn)算的對(duì)象,實(shí)現(xiàn)多重運(yùn)算的功能。

- 主存儲(chǔ)器具有存取數(shù)據(jù)的能力,當(dāng)CU收到存數(shù)的指令后,將運(yùn)算器中的數(shù)據(jù)寫入MDR,通過IR給出的地址碼MAR讀出其中的地址,將MDR中的數(shù)據(jù)存在相應(yīng)的存儲(chǔ)單元中。

PC程序計(jì)數(shù)器在取出程序后,地址自動(dòng)加1
計(jì)算機(jī)系統(tǒng)的層次結(jié)構(gòu)

- 匯編語(yǔ)言提供一種符號(hào)化的語(yǔ)言,需要通過匯編程序(編譯器)翻譯成機(jī)器語(yǔ)言
- 高級(jí)語(yǔ)言需要通過編譯程序翻譯成匯編語(yǔ)言,在從匯編語(yǔ)言編譯成機(jī)器語(yǔ)言,但如今的一些高級(jí)語(yǔ)言,可以將高級(jí)語(yǔ)言直接編譯成機(jī)器語(yǔ)言。

- 編譯程序和解釋程序的區(qū)別在于,編譯程序是一次性將全部語(yǔ)句編譯成機(jī)器語(yǔ)言,而解釋程序是將源程序的一條語(yǔ)句進(jìn)行翻譯。 在規(guī)模足夠大的時(shí)候解釋程序來回執(zhí)行編譯,影響程序執(zhí)行的性能。
計(jì)算機(jī)性能指標(biāo)

- MAR的位數(shù)反映的存儲(chǔ)單元的個(gè)數(shù)2的n次方
- MDR的位數(shù)反映的就是每個(gè)存儲(chǔ)單元的大小
- 總?cè)萘烤褪嵌呦喑?/li>
- CPU的時(shí)鐘周期就是一個(gè)脈沖的時(shí)間
- CPU的主頻和時(shí)鐘周期
- CPI指執(zhí)行一條指令所需要的時(shí)鐘周期,執(zhí)行指令的時(shí)鐘周期受到多方面因素的干擾,故討論一條程序的耗時(shí)=CPI*CPU時(shí)鐘周期.

- 其中關(guān)于單位容易弄混的點(diǎn)
- 在存儲(chǔ)中K G T 表示的是2的十次方等等
- 在計(jì)算的性能指標(biāo)中K表示10的三次方等等

此塊內(nèi)容影響的因素比較廣泛
- 數(shù)據(jù)帶寬,類比于車道,一次性能傳輸多少的數(shù)據(jù)
- 吞吐量 指一次性能消化和產(chǎn)出多少數(shù)據(jù)
- 響應(yīng)時(shí)間 概念較為廣泛 可以理解為數(shù)據(jù)的反應(yīng)時(shí)間。
第二章 數(shù)據(jù)的表示和運(yùn)算
- 八進(jìn)制三位一組 十六進(jìn)制四位一組
- r進(jìn)制轉(zhuǎn)十進(jìn)制 各位上的權(quán)值相加
- 十進(jìn)制轉(zhuǎn)r進(jìn)制 整數(shù)部分除基取余 小數(shù)部分乘基取整



- 8421碼表示10-15要加上0110
- 2421碼從5之后首位都是1
- 余3碼在8421碼基礎(chǔ)上加0011
- 余3碼是無權(quán)碼
無符號(hào)整數(shù)運(yùn)算

無符號(hào)減法 被減數(shù)不變,減數(shù)按位取反末位加一 然后兩項(xiàng)相加
無符號(hào)整數(shù)加法直接按位相加
原碼補(bǔ)碼反碼轉(zhuǎn)換和加減法
- 原碼首字符是符號(hào)位 表示的區(qū)間范圍-2n次方-1到2n次方-1
- 正數(shù)的原碼補(bǔ)碼反碼相同
- 負(fù)數(shù)的反碼是原碼除符號(hào)位外按位取反,補(bǔ)碼是在反碼的基礎(chǔ)上1

- 帶符號(hào)整數(shù)的加減法都要先轉(zhuǎn)換成補(bǔ)碼
- 帶符號(hào)整數(shù)加法:補(bǔ)碼按位相加符號(hào)位參與計(jì)算
- 帶符號(hào)整數(shù)減法:被減數(shù)不變,減數(shù)的全部位按位取反,再加一,最后再按位相加
各種碼的基本特性總結(jié)

可以通過手算帶入十進(jìn)制判斷是否溢出


移碼是在補(bǔ)碼的基礎(chǔ)上符號(hào)位取反

定點(diǎn)小數(shù)和定點(diǎn)整數(shù)的擴(kuò)展位置不同

電路的基本原理和加法器的設(shè)計(jì)
ALU算術(shù)邏輯單元

- 與 全一為一 a*b
- 或 有一為一 a+b
- 非 取反
- 與非 有零為一 全一為零
- 或非 有一為零 全零為一
- 異或 相同為零 想異為一
- 同或 相同為一 想異為0

一位全加器

全加器設(shè)計(jì)原理
全家器有兩個(gè)輸入端 A1 B1
一個(gè)本位的和就是當(dāng)前位置的數(shù) S1
還有一個(gè)進(jìn)位就是向前一位進(jìn)的數(shù)Ci-1
不難理解本位只有奇數(shù)個(gè)1時(shí)才會(huì)為1所以通過異或?qū)⑷齻€(gè)參數(shù)連接 A1(+)B1(+)Ci-1
而進(jìn)位要為一必須11相碰 所以 AB和Ci-1 至少要兩個(gè)為1 表達(dá)式如上圖
并行加法器
n個(gè)全加器通過一個(gè)進(jìn)位器并行起來 就可以形成n個(gè)位的加法
效率取決于進(jìn)位的速度


加法器原理

- 加法器一共五個(gè)參數(shù)(被加數(shù),加數(shù),Cin低位的進(jìn)位,Cout最高位的進(jìn)位)
- 依托這五個(gè)參數(shù)設(shè)計(jì)各種加法器電路
補(bǔ)碼的加法器設(shè)計(jì)原理

- 補(bǔ)碼的加法器設(shè)計(jì)
- 添加一個(gè)多路選擇器
- 多路選擇器的0表示加法運(yùn)算,1表示減法運(yùn)算
- 多路選擇器還釋放出一個(gè)sub信號(hào),將多路選擇器當(dāng)前的信號(hào)傳遞至Cin低位的進(jìn)位
- 當(dāng)多路選擇器是信號(hào)0時(shí),則直接進(jìn)入加法器運(yùn)算,當(dāng)多路選擇器是信號(hào)1時(shí),則通過非電路按位取反后進(jìn)入加法器,并且Cin接收到sub的1信號(hào),低位進(jìn)位加1
標(biāo)志位的生成

標(biāo)志位主要是記住標(biāo)志位的硬件計(jì)算方法即可
定點(diǎn)數(shù)的移位運(yùn)算

- 原碼整數(shù)的算術(shù)移位操作
- 左移,后面補(bǔ)0前面溢出的舍去
- 右移,前面補(bǔ)0后面溢出的舍去

- 小數(shù)的計(jì)算也是同理,按照每一位的權(quán)值相加即可

- 反碼的算術(shù)移位 正數(shù)和原碼相同 負(fù)數(shù)左移低位補(bǔ)1 右移高位補(bǔ)1

- 算術(shù)補(bǔ)碼的位移操作 正數(shù)不變 負(fù)數(shù)的左移補(bǔ)0 右移補(bǔ)1

- 移位的操作可以運(yùn)用在計(jì)算機(jī)的乘法中

原碼的乘法運(yùn)算在機(jī)器中的實(shí)現(xiàn)

- 構(gòu)想一個(gè)運(yùn)算器的結(jié)構(gòu)
- X存儲(chǔ)被乘數(shù) ACC存儲(chǔ)乘積的高位 MQ存儲(chǔ)乘積的低位 和乘數(shù)
- 第一步符號(hào)位單獨(dú)處理 兩個(gè)乘數(shù)之間的符號(hào)位用異或運(yùn)算
- 初始化將ACC中的數(shù)據(jù)置0
- MQ中的最低位若為1 則 X 和 ACC 進(jìn)行加法 若MQ中的最低位為0 則 ACC+0
- 當(dāng)進(jìn)行一次乘法操作后 在下一次乘法的開始時(shí) 將ACC右移一位 ACC的最低位 變成MQ的最高位
- 重復(fù)N次
補(bǔ)碼的乘法實(shí)現(xiàn)的過程


補(bǔ)碼的乘法運(yùn)算結(jié)構(gòu)包括
- 在MQ中引入了一個(gè)輔助位(初始值為0)因此MQ的長(zhǎng)度為n+2
- 由于MQ中引入了一個(gè)輔助位,因?yàn)闉榱吮3旨拇嫫鞯囊恢? ACC和X中也引入輔助位 采取雙符號(hào)表示因此長(zhǎng)度也為N+2
- 補(bǔ)碼的乘法運(yùn)算是帶符號(hào)運(yùn)算
- 判定ACC加什么 :
- 如果輔助位-MQ最低位為1 ACC+X補(bǔ)
- 輔助位-MQ最低位為-1 ACC+[-X]補(bǔ)
- 輔助位-MQ最低位為0 ACC+0
5.加完一次之后算術(shù)右移 正數(shù)補(bǔ)0 負(fù)數(shù)補(bǔ)1
6.最后再來一次加法 但不右移
原碼的除法
恢復(fù)余數(shù)法

- 首先出發(fā)的核心思想就是先進(jìn)行一次減法 然后邏輯左移后面補(bǔ)零
- 恢復(fù)余數(shù)法 默認(rèn)先商1(+【-y】) 發(fā)現(xiàn)ACC的值小于零 就+y恢復(fù)成原式即可

3.符號(hào)位的選取 x異或y的符號(hào)位
- 注意小數(shù)點(diǎn)的隱含位置
- 余數(shù)=得到的余數(shù)再*2 -n次方
4.左移的次數(shù)比商的次數(shù)少一次左移n次 商n+1次

1.加減交替法就是當(dāng)商1 余數(shù)出現(xiàn)負(fù)時(shí) 直接左移一位 + 除數(shù) 得到下一輪的余數(shù)。
補(bǔ)碼的除法運(yùn)算

- 原碼的符號(hào)位不參與運(yùn)算,但補(bǔ)碼的符號(hào)位參與運(yùn)算
- 采用雙符號(hào)位的形式
- 初始的被除數(shù)與除數(shù)的符號(hào)為異的則加上除數(shù),同的則減去除數(shù)
- 余數(shù)和除數(shù)為同號(hào)則 左移 后減除數(shù) 異好則左移 后 加上除數(shù)
- 最后一位的商直接就變成1 誤差不超過 2-n次方
- 最后的余數(shù)同樣*2-n次方