《計算機組成原理》筆記一

[toc]

綱要:

  • 計算機系統(tǒng)簡介

  • 計算機系統(tǒng)基本組成

  • 計算機硬件主要技術指標

1.1 計算機系統(tǒng)簡介

Q1:現代計算機由哪幾部分組成?(頂層抽象)

A:軟件 + 硬件上荡。本課程主要講硬件的設計邏輯虑啤。

系統(tǒng)復雜性管理方法

  • 1作媚、抽象:隱藏系統(tǒng)中不重要的細節(jié)

  • 2、層次化:劃分為多個模塊庭猩,分別對模塊設計

  • 3窟她、模塊化:有明確定義的功能與接口

  • 4、規(guī)則性(regularity):模塊更容易被重用

從程序員角度來分層:高級語言—>匯編語言—>操作系統(tǒng)—>機器語言—>微指令系統(tǒng)

1.2 計算機的基本組成

一蔼水、馮諾依曼計算機特點

  • 五大部分組成(運算器震糖、控制器、存儲器徙缴、輸入试伙、輸出) (是不是一定需要這五個部件?)

  • 指令和數據以同等地位存于存儲器于样,可按址尋訪

  • 指令和數據都是二進制表示(為什么用二進制疏叨?換成別的進制不可以嗎?)

  • 指令由操作碼與地址碼組成

  • <mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存儲程序</mark>(核心特征)

  • 以運算器為中心

image-20190618141343044.png

其結構的問題:<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">以運算器為核心</mark>穿剖,運算器成為性能的瓶頸蚤蔓;不具有層次化特征

二、計算機硬件框圖

改進:

  • <mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">以存儲器為中心</mark>的計算機硬件框圖

  • image-20190618141831974.png
  • 層次化劃分:

image-20190618142029902.png

注:主存+CPU構成主機糊余;輔存和輸入輸出設備構成I/O系統(tǒng)

將圖中每個部分進一步細化秀又,再重新組裝起來就構成了計算機組成系統(tǒng)单寂。(層次化+模塊化)

思考:真正的運算器、控制器吐辙、存儲器結構都是什么樣的宣决?(這正是本課程要學習的)

Q:一個現實中的問題,如何用計算機來解決昏苏?

Q:是不是所有的問題都可以用計算的方法來解決尊沸?(可計算性理論/算法理論)(e.g.圖靈機停機問題)

假設我們面對的是一個可計算問題,如何解決一個問題呢贤惯?

三洼专、計算機工作步驟

我們設定一個可計算的問題,來對計算機組成框圖的各個部件進行細化孵构。

1屁商、上機前的準備

  • 建立數學模型

  • 確定計算方法

  • 編制解題程序

    • 程序:運算的全部步驟

    • 指令:每一個步驟

  • 編程舉例:

    • image-20190619114800662.png
    • 可以看出上面兩種算法,前一種有一些將計算結果保存到存儲器中的步驟颈墅,后者全都在運算器中進行運算蜡镶。

    • 把上面的步驟用指令的方式表示:

image-20190619115632966.png
前8個地址保存的是指令,后5個地址保存的是數據精盅;每一條指令都由操作碼和地址碼組成帽哑;其中注意乘法部分,將乘法的結果存放到ACC中叹俏,可能存在溢出的問題,如何解決呢僻族?

指令和數據保存在存儲器中粘驰,所以存儲器是什么樣的?如何訪問呢述么?每次訪問獲得的數據的位數是多少呢蝌数?我們先從存儲器的結構來看。

2度秘、計算機的解題過程

2.1存儲器的基本組成
image-20190620164411717.png
image-20190620164438168.png

類比:

  • 存儲體 — 存儲單元 — 存儲原件(0/1)

  • 大樓 — 房間 — 床位 (有人/沒人)

重要概念:

  • <mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存儲單元</mark> :存放一串二進制代碼(可能是指令顶伞,也可能是數據)

  • <mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存儲字</mark> : 存儲單元中二進制代碼的組合

  • <mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存儲字長</mark>:存儲單元中二進制代碼的位數(32位/64位)

每個存儲單元賦予一個地址號,每個存儲單元中存放一個存儲字剑梳;存儲單元按地址尋訪

  • <mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">MAR</mark>(Memory Address Register)存儲器地址寄存器:存地址的唆貌,反映存儲單元的個數

  • <mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">MDR</mark>(Memory Data Regester)存儲器數據寄存器:存數據的,反映存儲字長

    設MAR=4位 說明存儲單元個數是2的4次方=16個(反映存儲單元的個數);

    MDR=8位垢乙,說明存儲字長8位

解釋:計算機中的主存數據寄存器(MDR)锨咙,與主存地址寄存器(MAR)幫助完成CPU和主存儲器之間的通信:

  • MAR用來保存數據被傳輸到的位置的地址或者數據來源位置的<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">地址</mark>;

  • MDR保存要被寫入地址單元或者從地址單元讀出的<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">數據</mark>追逮。

2.2 運算器的基本結構及操作過程

運算器的功能是什么酪刀,如何工作粹舵?

  • 加法運算

  • 乘法運算

  • 或與非

運算器結構:

image-20190621105615891.png
  • ALUArithmetic Logic Unit):算數邏輯單元,核心運算單元骂倘;通常是個組合電路眼滤,其特點是如果輸入撤銷,那么輸出結果也會撤銷历涝,所以如果要保存結果需要在輸入輸出端加上相應的寄存器(ACC柠偶,X);

  • ACC(Accumulator):累加器睬关;

  • X: 數據寄存器诱担;

  • MQ:乘商寄存器(在乘法過程中,產生的結果是操作數的兩倍)為了把乘法結果都保存下來电爹,需要此寄存乘法增加的部分蔫仙;

ACC MQ X
加法 被加數、和 加數
減法 被減數丐箩、差 減數
乘法 乘法結果的高位 乘數摇邦、乘法結果的低位 被乘數
除法 被除數、余數 除數

乘法:加法+移位操作 (<u style="box-sizing: border-box;">這里有點不太清楚</u>)

除法:減法+移位操作 (<u style="box-sizing: border-box;">這里有點不太清楚</u>)

<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">(回去看看《編碼》屎勘、《CSAPP》第二章理解理解施籍,再回過來看看)</mark>

2.3 控制器的基本結構

運算器中各種操作都是在控制器的控制下執(zhí)行的。那么控制器的功能是什么概漱,進而其結構應該是什么樣的呢丑慎?

功能:

  • 解釋指令

  • 保證指令按順序執(zhí)行

基本結構:

image-20190621114553414.png

完成一條指令:

  • 取指令(PC)

  • 分析指令(IR)

  • 執(zhí)行指令(CU)

結構:

  • CU:核心控制單元,執(zhí)行指令

  • PC:程序計數器瓤摧,用來存放當前要執(zhí)行<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">指令的地址</mark>竿裂,具有計數功能(PC) + 1 —> PC(不同的機型,這里不一定+1照弥,即相鄰兩個指令的物理地址不一定相鄰)

  • IR:指令寄存器腻异,存放當前欲執(zhí)行的指令

2.4 主機完成一條指令的過程(極其重要!)

這里要好好理解每一個指令步驟这揣,理解了每一個步驟就相當于理解了這一章悔常。

(1)主機完成一條取數指令的步驟

取數指令的功能:把存儲體(主存/內存)中的數存到ACC中

image-20190621120325512.png

完成一條指令的三個階段:

  1. 取指令

  2. 分析指令

  3. 執(zhí)行指令

(注:指令:操作碼+地址碼)

<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">取數操作步驟分析</mark>(如圖):

  1. 要執(zhí)行的指令的地址保存在PC中,指令保存在存儲體中给赞;第一步將PC中要執(zhí)行的指令的地址放入MAR;

  2. MAR將指令地址送給存儲體M机打;

  3. 在控制器的控制下,存儲體M將指令地址中的指令送給MDR;

  4. 在控制器的控制下塞俱,將MDR中的指令存到IR中姐帚;(到此,取指令的操作完成障涯;PC—>MAR—>M—>MDR—>IR)

  5. 分析指令:將IR中指令的操作碼部分給CU罐旗,由CU去分析控制執(zhí)行膳汪;

  6. 把IR中指令中待取的數的地址部分送到MAR;

  7. MAR將數的地址送給存儲體M九秀;

  8. 在控制器的控制下遗嗽,存儲體M將數的地址中的數送給MDR;

  9. 在控制器的控制下,MDR中的數交給ACC保存鼓蜒。

(2)主機完成一條存數操作步驟

存數指令的功能:把存放在ACC中的計算結果存到內存單元M中

image-20190621122020531.png

<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存數操作步驟分析</mark>(如圖):

  1. 要執(zhí)行的指令的地址保存在PC中痹换,指令保存在存儲體中;第一步將PC中要執(zhí)行的指令的地址放入MAR;

  2. MAR將指令地址送給存儲體M都弹;

  3. 在控制器的控制下娇豫,存儲體M將指令地址中的指令送給MDR;

  4. 在控制器的控制下,將MDR中的指令存到IR中畅厢;(到此冯痢,取指令的操作完成;PC—>MAR—>M—>MDR—>IR)

  5. 分析指令:將IR中指令的操作碼部分給CU框杜,由CU去分析控制執(zhí)行浦楣;

  6. 把IR中指令中待存的數的地址送到MAR;(從這一步開始不同)

  7. MAR將數的地址送給存儲體M咪辱,告訴存儲體要存進來一個數振劳,其地址是多少;

  8. 在控制器的控制下油狂,將ACC中要存的數交給MDR;

  9. 在控制器的控制下历恐,將MDR中的數交給存儲體。

存取數指令已經分析完了选调,那么加法夹供、乘法、停機仁堪、打印等指令在這個模型下怎么執(zhí)行?(自行思考)

2.5 程序在計算機上如何執(zhí)行

一條指令的執(zhí)行步驟我們已經知道了填渠,那么一條程序(多條指令的指令集)的執(zhí)行步驟就是把一條條指令按順序執(zhí)行弦聂;

image-20190621122657223.png

這里同樣只是分析了取指令的步驟,任何一條指令都可以分為三步執(zhí)行:取指令—>分析指令—>執(zhí)行指令氛什。注意PC執(zhí)行完一條指令之后莺葫,就可以+1了,指向下一條指令的地址枪眉。

1.3 計算機硬件指標

一.機器字長

CPU一次能處理數據的位數(如可以對兩個8位二進制數進行加法捺檬,就是8位),與CPU中的寄存器(ACC,X,MQ)的位數有關贸铜。

一般來說堡纬,機器字長越長性能越好聂受。

二.運算速度

image-20190621123658308.png

前兩個是硬件指標;后四個是從指令執(zhí)行的角度來衡量的烤镐。

三.存儲容量

存放二進制信息的總位數

image-20190621124417775.png

1.4 總結

  • 首先蛋济,本課程介紹的是硬件的組成邏輯。介紹了4中復雜系統(tǒng)的管理方法:抽象炮叶、層次化碗旅、模塊化、規(guī)則化等镜悉。

  • 然后祟辟,本章介紹了一條程序的指令(分為操作碼和地址碼)到底是在主機中怎樣執(zhí)行的,我覺得這部分對我來說很重要侣肄,我大概了解了計算機關于程序或指令執(zhí)行的重要結構:運算器旧困、存儲器、控制器茫孔,并且了解他們如何工作的叮喳。

  • 最后,介紹了計算機的硬件指標缰贝,其實也就是分別對應于CPU結構和存儲器結構馍悟,簡單了解一下。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末剩晴,一起剝皮案震驚了整個濱河市锣咒,隨后出現的幾起案子,更是在濱河造成了極大的恐慌赞弥,老刑警劉巖毅整,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異绽左,居然都是意外死亡悼嫉,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門拼窥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來戏蔑,“玉大人,你說我怎么就攤上這事鲁纠∽芸茫” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵改含,是天一觀的道長情龄。 經常有香客問我,道長,這世上最難降的妖魔是什么骤视? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任鞍爱,我火速辦了婚禮,結果婚禮上尚胞,老公的妹妹穿的比我還像新娘硬霍。我一直安慰自己,他們只是感情好笼裳,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布唯卖。 她就那樣靜靜地躺著,像睡著了一般躬柬。 火紅的嫁衣襯著肌膚如雪拜轨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天允青,我揣著相機與錄音橄碾,去河邊找鬼。 笑死颠锉,一個胖子當著我的面吹牛法牲,可吹牛的內容都是我干的。 我是一名探鬼主播琼掠,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拒垃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瓷蛙?” 一聲冷哼從身側響起悼瓮,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎艰猬,沒想到半個月后横堡,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡冠桃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年命贴,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片食听。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡套么,死狀恐怖,靈堂內的尸體忽然破棺而出碳蛋,到底是詐尸還是另有隱情,我是刑警寧澤省咨,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布肃弟,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏笤受。R本人自食惡果不足惜穷缤,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望箩兽。 院中可真熱鬧津肛,春花似錦、人聲如沸汗贫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽落包。三九已至部蛇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咐蝇,已是汗流浹背涯鲁。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留有序,地道東北人抹腿。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像旭寿,于是被迫代替她去往敵國和親警绩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容

  • 前言 本文為本人自學《計算機組成原理》(唐朔飛編著/第2版)第一章內容的總結许师,全文描述約90%皆基于個人對書本內容...
    JObjectLeo閱讀 4,406評論 0 11
  • 存儲程序:必須將事先編好的程序和原始數據送入主存后才能執(zhí)行程序房蝉,一旦程序被啟動執(zhí)行,計算機能在不需操作人員干預下自...
    LVVLY閱讀 2,097評論 0 0
  • 計算機系統(tǒng)由“硬件”和“軟件”兩大部分組成 計算機系統(tǒng)的層次結構 計算機組成傳統(tǒng)機器的屬性:指令集微渠、數據類型搭幻、存儲...
    蘊重Liu閱讀 1,127評論 0 0
  • 數據結構與算法 1.算法的有窮性是指( )檀蹋。答案:A A)算法程序的運行時間是有限的 B)算法程序所處理的數據量是...
    織夢學生閱讀 3,384評論 1 15
  • 序 大四即將畢業(yè)的一個清晨,無意中刷微信公眾號偶得一個關于計算機組成原理質量很高的文章云芦,細細讀罷俯逾,感覺這些知識都是...
    fanyank閱讀 2,569評論 0 2