計算機組成原理(二)

由於博主並不是科班出生,計算機方面的只是有所欠缺,所以寫幾篇博客記錄下我所學的知識,希望能對各位像我一樣非科班的同學有所幫助.如有錯誤的地方,望指正,謝謝各位大佬了!!!

計算機總線

總線的概述

  • 總線的概述
  1. 提供對外連接接口
  2. 不同設備通過USB連接
  3. 使外圍設備接口統一

輸入輸出等設備只需要通過IO總線連接帶存儲器,運算器等設備上,無需一個一個連接.
在這裏插入圖片描述

  • 總線的分類
  1. 片內總線(CPU內部的總線,是高集成度芯片內部的信息傳輸線)
    在這裏插入圖片描述
  2. 系統總線
    連接硬盤,IO設備,USB等設備的總線.在這裏插入圖片描述
    系統總線總線可分爲三類:
  • 數據總線:一般與CPU位數相同,雙向傳輸數據信息,數據總線的位數是數據總線的總要參數.
  • 地址總線: 源數據在內存中的地址,地址總線的位數與存儲單元有關,地址總線位數=n,尋址範圍0 ~ 2^n.
  • 控制總線:是發出各種信號的傳輸線,由控制總線從一個組件發給另一個組件.可以監視各個組件的狀態.

總線的仲裁

如下圖,當硬盤和IO設備,都需要使用總線的時候,總線應該讓給硬盤還是讓給IO設備使用呢,這是後就需要總線的仲裁.總線的仲裁就是爲了解決總線使用權的衝突問題.
在這裏插入圖片描述
總線仲裁的方法:

  • 鏈式查詢
    當設備1和設備2同事需要總線的時候回發送信號給仲裁控制器,仲裁控制器回發送信號允許設備1先使用,然後才輪到設備2使用.
    在這裏插入圖片描述
    好處: 電路複雜度低,仲裁方式簡單
    壞處:優先級低的設備難以獲得使用權.對電路故障敏感.

  • 計時器定時查詢
    仲裁控制器對設備編號使用計數器累計計數,接收到信號後,往所有設備發出計數值,計數值與設備編號一致則獲得使用權.

    如下圖,若設備3請求總線使用權的時候,會發送信號給仲裁控制器,仲裁控制器會將計數器置爲3,會發送信號給所有的設備,當計數器值與設備編號一致的時候,將獲取使用權.在這裏插入圖片描述

  • 獨立請求
    獨立請求每個設備均有總線獨立的仲裁器,設備可以單獨向仲裁器發送或接受請求,當同時收到信號,仲裁器有權按優先級分配使用權.
    在這裏插入圖片描述
    優點:響應快
    缺點:線路複雜

計算機的輸入輸出設備

  • 常見的輸入輸出設備
    字符輸入設備:鍵盤,鼠標等
    圖像輸出設備:顯示器,投影儀等
  • 輸入輸出接口的通用設計
    需求: 想設備發送數據?讀取數據?設備是否啓動成功?設備有沒有被佔用.
    數據線: I/O設備與主機數據交換的線,風單向傳輸和雙向傳輸,
    狀態線: I/O設備狀態向主報告的信號線,查詢設備是否練級正常,查詢設備是否被佔用.
    命令線: CPU向設備發送命令的信號信號線,讀寫啓停信號等.
    設備選擇線: 主機選擇I/O設備進行操作,對總線上的設備進行選擇.
  • CPU與IO設備通信(CPU速度與IO設備速度是不一致的)
    1. 程序中斷
      當外圍I/O設備準備就緒的時候,向CPU發出中斷信號,CPU有專門的電路相應中斷信號.
      如下圖,cpu值執行主程序,打印機出於待機狀態的,此時CPU發送了一個信號,啓動打印機的信號,啓動之後CPU繼續執行主程序,打印機接收到啓動信號之後就會進行準備的工作,準備完成之後打印機迴向CPU發出中斷信號,其後,CPU迴響應這個中斷信號,之後CPU會進行發送數據的操作,打印機也會同時接收數據,在某一時刻,CPU發送完成,會中斷返回,回到原來的主程序中,打印機開始打印數據.
      在這裏插入圖片描述
      提供低速設備通知CPU的一種異步方式,cpu也可以高速運轉時兼顧低速設備的響應.但是,如果頻繁的打斷CPU並不是一個很好的方法,這樣會減緩CPU的工作效率,所以出現了DMA方法.
    2. DMA(直接存儲器訪問)
      DMA不需要通過CPU訪問主存,可以之間訪問主存,這樣不需要打斷CPU,提高了效率.硬盤和顯卡中都有DMA的設備.
      在這裏插入圖片描述

計算機存儲器的概述

  • 存儲器的分類
    按存儲介質分類,分爲:
    半導體存儲器: 內存,U盤,固態硬盤等
    磁存儲器: 磁帶,磁盤等
    按存儲方式分類,分爲:
    隨機存儲器:隨機讀取,與位置無關.
    串行存儲器:與位置無關,按順序查找.
    只讀存儲器(ROM):只讀不寫

  • 存儲器的層次結構
    按讀寫速度,存儲容量,價格等分不同的存儲器.
    結構圖(存儲器的層次結構):
    分緩存,主存,輔存.
    在這裏插入圖片描述
    CPU,高速緩存,主存三者之間都是可以相互通信,爲緩存-主存層次,主存與輔存之間是可以通信的,稱爲主存-輔存層次.
    在這裏插入圖片描述
    緩存-主存層次:
    原理:局部性原理.
    實現:在CPU與主存之間添加一層速度快的Cache.
    目的:解決主存速度不足問題.
    注:關於局部性原理,是指CPU訪問存儲器時,無論是存取還是讀取,所訪問的存儲單元都聚集在一個較小的區域中.
    如圖所示,當程序經常訪問某片內存時,把這段內存置換到緩存.
    在這裏插入圖片描述

主存-輔存層次
原理:局部性原理.
實現:主存之外增加輔助存儲器.
目的:解決主存容量不足問題.

計算機主存儲器與輔助存儲器

爲什麼計算機斷電,內存中的內容會丟失,磁盤中的內容不會丟失?
主存儲器-內存

  • 隨機存儲器(RAM).
  • RAM通過電容存儲數據,必須隔一段時間刷新一次.
  • 如果掉電,那麼一段時間之後將丟失所有數據.

cpu通過數據總線讀寫數據,通過地址總線獲取數據地址.
在這裏插入圖片描述
32位系統: 最多隻支持4GB內存
因爲232 = 4 * 230 = 4G.
64位系統:可支持334 GB的內存
因爲264 = 234 * 230 = 234.
注: 230 = 1GB.

輔助存儲器-磁盤
在這裏插入圖片描述

  1. 表面是可磁化的硬磁特性材料.
  2. 移動刺頭徑向運動讀取信息.

磁盤所運用的算法:

  • 先來先服務算法
  • 最短詢道時間優先算法
  • 掃描算法(電梯算法)
  • 循環掃描算法

下面舉一個栗子解釋下各個算法怎麼讀取磁道的.
在這裏插入圖片描述
先來先服務算法: 按順序訪問進程的磁道讀寫需求.讀取的順序爲: 1 > 4 > 2 > 3 > 1 > 5;
最短詢道時間優先算法:與磁頭當前位置有關,優先訪問離磁頭最近的磁道.讀取順序爲:4 > 5 > 3 > 2 > 1 > 1
掃描算法(電梯算法):每次只往一個方向移動,到達一個方向需要服務的盡頭在反方向移動,是雙向的. 順序爲 4 > 3 > 2 > 1 > 1 > 5.但是存在這樣的問題:當磁頭剛從裏向外移動而超越了某一磁道時,恰好又有一進程請求訪問此磁道,這時該進程必須等待。將磁頭繼續從裏向外,然後再從外向裏掃描完處於外面的所有要訪問的磁道後,才處理該進程的請求,致使該請求的請求被大大的推遲。
循環掃描算法: 只往一個方向讀取, 現假設由內往外讀取,是單向移動, 順序爲4 > 5 > 1 > 1 > 2 > 3.

計算機存儲器的高速緩存

  • 高速緩存的工作原理
    字: 存放在一個存儲單元中二進制代碼組合.
    字塊: 存儲在連續存儲單元中被看作一個單元的字組.包含多個字.
    注:一個字有32位,一個字塊有B個字,主存共有M個字塊.主內存總字數=B * M;主內存總容量 = 32 * B * M;
    字的地址包含兩個部分,前m位指定字塊的地址,後b位指定在字塊中的地址2m = M,2b = B,如下圖:
    在這裏插入圖片描述
    下面舉一個題目來算下m和b:
    在這裏插入圖片描述

  • 計算機的高速緩存
    緩存和主存邏輯結構類似,緩存容量小,速度更快,緩存也有字和字塊的概念,一個字有32位,一個字塊有B個字,緩存共有C個字塊,字的地址包含兩個部分,前c位指定字塊的地址,後b位指定在字塊中的地址2c = C,2b = B;
    在這裏插入圖片描述
    高速緩存的工作原理:爲了讓CPU儘量從緩存中拿數據,這裏就不得不提一下命中率,命中率是衡量緩存的重要指標,理論上CPU每次都能從高速緩存中取數據的時候,命中率爲1;但實際上不可能每次都能訪問到緩存,所以不可能爲1.假設訪問主存次數Nm,訪問緩存次數Nc,那麼命中率爲h = Nc / (Nm + Nc);
    訪問效率的計算方式:
    在這裏插入圖片描述
    下面做一個練習題計算命中率和訪問效率,平均訪問時間:
    在這裏插入圖片描述
    命中率: 在這裏插入圖片描述
    訪問效率:在這裏插入圖片描述
    平均訪問時間:
    在這裏插入圖片描述

  • 高速緩存的替換策略

  1. 隨機算法

  2. 先進先出算法(FIFO)
    把高速緩存看做一個先進先出的隊列,優先替換最先進入隊列的字塊.如圖:
    現在如果一個編號爲9的字塊要進來,那麼就會淘汰掉編號爲1的字塊,讓編號的爲9的字塊進來.
    在這裏插入圖片描述

  3. 最不經常使用算法(LFU)
    此方式是優先淘汰最不;經常使用的字塊,但是需要額外的空間記錄自舉哀的使用頻率.如圖:
    每次使用相對字塊的時候,相對應的評率就會加1,一旦有新的字塊要進來的時候,變會把使用評率最低的字塊淘汰掉.
    在這裏插入圖片描述在這裏插入圖片描述

  4. 最近最少使用算法(LRU)
    優先淘汰一段時間內沒有使用的字塊,有多種實現方法,一般使用雙向鏈表.把當前訪問的節點置於鏈表前面,保證;鏈表頭部是最近使用的.淘汰的時候淘汰鏈表的尾部就可以了.如圖:
    每次要添加新的字塊的時候,新的字塊將會添加到字塊的頭部,尾部多餘的字塊將會被淘汰.
    在這裏插入圖片描述

計算機的指令系統

  • 機器指令的形式
    主要有:操作碼和地址碼.
    操作碼:明確指令要完成的操作,反應機器操作的種類.比如操作碼有8位,那它就有28=256種操作.

    地址碼:給出的是操作數的地址,分三地址指令/二地址指令/一地址指令.
    三地址指令:(c奧做1地址和2地址放到3地址中)
    在這裏插入圖片描述
    二地址指令:(操作1地址和2地址放到1地址或者2地址中)
    在這裏插入圖片描述
    一地址指令:可以是自己對自己的操作,也可以ACC(自增)
    在這裏插入圖片描述
    零地址指令:
    在機器指令中無地址碼,一般是執行空操作,停機操作,中斷返回操作.
    在這裏插入圖片描述

  • 機器指令的操作類型
    機器指令的操作類型有操作數之間的加減乘除運算,操作數之間的非等邏輯位運算,移位操作,以及控制指令,包括等待指令/停機指令,空操作指令,中斷指令等.

  • 機器指令的尋址方式

  1. 指令尋址
    順序尋址是從101 => 102 => 103 => 104 => 105,然後105執行JMP 102指令,又調到102,此爲跳躍尋址.
    在這裏插入圖片描述
  2. 數據尋址
    在這裏插入圖片描述
    立即尋址:
    在這裏插入圖片描述
    直接尋址:
    在這裏插入圖片描述
    間接尋址:
    在這裏插入圖片描述
    三種尋址方式優缺點:
    在這裏插入圖片描述

計算機的控制器(x協調控制計算機運行的)

控制器的組成:
在這裏插入圖片描述

  • 程序控制器
    用來存儲下一條指令地址,循環從程序計數器中拿出指令,當指令被拿出,指向下一條指令.
  • 時序發生器
    電氣工程領域的,用於發送時序脈衝,cpu依據不同的時序脈衝由節奏的進行工作.
  • 指令譯碼器
    由操作碼和地址碼組成.用於翻譯操作碼對應的操作以及控制傳輸地址碼對應的數據.
  • 指令寄存器
    從主存或高速緩存存取計算機指令.
  • 主存地址寄存器
    保存當前CPU要訪問的內存單元的地址.
  • 主存數據寄存器
    保存當前CPU正要讀寫的主存數據
  • 通用寄存器
    用於暫時存放或傳送數據或指令,保存ALU的運算中間結果.容量比一般寄存器大.

計算機的運算器

  • 數據緩衝器
    分爲輸入緩衝和輸出緩衝,輸入緩衝暫時存放外設送來的數據,輸出緩衝暫時存放送往外設的數據.
  • ALU
    是算術邏輯單元,主要完成常見的位運算,以及算術運算.
    如下圖即ALU的圖解,A和B爲輸入,F爲輸出,K爲各種運算線路.在這裏插入圖片描述
  • 狀態寄存器
    可以存放運算狀態(溢出,結果正負等),存放運算控制信息(調試跟蹤標記位,允許中斷等).
  • 通用寄存器
    用於暫時存放或傳送數據或指令,保存ALU的中間結果,容量比一般寄存器大.

計算機指令的執行過程

  • 指令的執行過程
    在這裏插入圖片描述
    執行時序圖:
    在這裏插入圖片描述
    在這裏插入圖片描述

  • 指令執行的問題
    運算器和控制器不能同時工作.(CPU的綜合利用率不高).
    CPU的流水線設計:
    在這裏插入圖片描述
    CPU流水線設計是串行執行效率的3倍,公式如下:
    在這裏插入圖片描述

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