tft每日頭條

 > 科技

 > 計算機中存儲器的分類和特點

計算機中存儲器的分類和特點

科技 更新时间:2024-12-27 18:33:07

一:計算機層次結構

(1)早期的馮諾依曼機

馮諾依曼機特點如下

  1. 計算機硬件系統由運算器、存儲器、控制器、輸入和輸出設備5部分組成
  2. 指令和數據以同等地位存儲在存儲器,并可按地址尋訪
  3. 指令由操作碼和地址碼組成,操作碼用于表示操作的性質,地址碼用于表示操作數在存儲器的位置
  4. 指令在存儲器内按順序存放。通常指令是按照順序存放的,但是在特定條件下可以進行設定
  5. 早期的馮諾依曼機器以運算器為中心,輸入輸出設備通過運算器與存儲器傳送數據

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)1

其中,實線是數據線,虛線是控制線(雙向)。在這種層次結構下,在控制器的指揮下,輸入和輸出設備輸入一些數據給運算器進行各種運算,如果産生中間結果,就會給存儲器,計算完成結果給到輸出設備。可以發現這種層次結構容易受到輸入和輸出設備的牽制,因為他們的速度相較于運算器太慢了,也即是短闆效應

(2)現代計算機的組織結構

為了解決I/O設備的速度和CPU速度差異懸殊的問題,現如今的計算機則采用以存儲器為中心的計算機組織結構

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)2

這種結果使I/O操作盡可能繞過CPU,直接在I/O設備和存儲器之間完成,以提高系統的整體運行效率

二:計算機硬件概述

(1)存儲器

A:存儲元、存儲單元、存儲體、存儲字和存儲字長

目前我們采用半導體器件來承擔存儲任務,一個半導體觸發器由于有0和1兩個狀态,就可以記憶一個二進制代碼。比如1個數需要用16位二進制代碼表示,那麼就需要有16個觸發器來保存這些代碼,這16個觸發器就是一個存儲單元。

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)3

主存儲器由許多存儲單元組成,每個存儲單元包含多個存儲元,每個存儲元存儲1位二進制代碼0或1.故存儲單元可存儲一串二進制代碼,稱這串代碼為存儲字,這串代碼的位數稱為存儲字長,存儲字長一般是一個字節(8位)或字節的偶數倍。許多存儲單元共同構成了一個存儲體。

B:存儲器的基本結構

存儲器分為主存(内存)和輔存(外存)。CPU可以直接訪問的是内存,内存主要存放的是程序和數據,是計算機實現“存儲程序”控制的基礎;外存中信息必須加載進内存後,CPU才可以訪問

主存最基本構成如下。存儲體存放二進制信息,MAR存放訪存地址,經過地址譯碼後找到所選存儲單元;MBR用于暫時存要從存儲器中讀入或寫入的信息

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)4

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)5

【考點】

  • 數據在存儲體中是按照地址存儲的,每個地址對應一個存儲單元
  • 存儲單元數目=2MAR位數
  • ,例如如果MAR為10位,則存儲單元數目為210
  • =1024。它用于尋址,其長度和PC長度一緻
  • MDR的位數表示存儲字長,例如MDR為16,表示存儲字長為16,也表示1個字(word)=16bit
  • 注意區分字(word)和字節(Byte),1個字節等于8個bit,而1個字的大小取決于機器
  • 1B=1個字節,1b=1個bit

(2)運算器

運算器是計算機的執行部件,用于進行算數運算和邏輯運算

  • 算數運算:比如加減乘除
  • 邏輯運算:比如與、或、非、異或、比較等等

A:運算器基本結構

其中ALU是運算器造價最為高昂的部分,其實就是一堆複雜的電路

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)6

其餘三個分别是寄存器,輔助ALU完成計算功能,作用如下了解即可

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)7

B:運算器過程僞代碼描述

設M為主存中的某一個存儲單元,(M)表示取M中的數據,->表示将内容送入寄存器

加法實現:假設ACC中已經存在一個數,那麼首先取M的内容送入操作數寄存器X,即(M)->X;然後兩者相加重新送入寄存器ACC中,即(ACC) (M)->(ACC)

乘法實現:假設ACC中已經存在一個數,那麼首先取M的内容送入乘商寄存器MQ作為乘數,即(M)->MQ,再取ACC寄存器的内容放入X寄存器作為被乘數,即ACC->X,接着将ACC清零,即0->ACC,然後乘數乘以被乘數,一個送入乘積高位,一個送入乘積低位,即(X)×(MQ)->ACC//MQ

除法實現:假設ACC中已經存在一個數,首先取M的内容送入X作為除數,即(M)->X,ACC中的内容作為被除數,結果一個放入MQ作為整數部分,即(ACC)/(X)->MQ,另一個放入ACC作為餘數,即(ACC)%(X)->ACC

(3)控制器

控制器是計算機的指揮中心,由其指揮各部件自動協調地進行工作

A:指令

計算機指令就是指揮機器工作的指示和命令,程序本質就是一系列按照一定順序排列的指令

控制器靠指令指揮機器工作,人們用指令表達自己的意圖,并交給控制器執行

指令=操作碼 地址碼

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)8

操作碼就是指示計算機要幹什麼,地址碼可以理解為幹這些事情需要的原材料在哪裡,比如主存中就有可能存儲一些我們需要用到的數據,甚至可以是一些IO設備,比如鍵盤的地址

B:控制器基本結構

控制器基本結構如下

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)9

  • 控制單元(CU):分析指令、發出信号、協調操作
  • 指令寄存器(IR):存放當前要執行的指令,注意内容來源于MDR,因為指令和數據一樣也被存在存儲器
  • 程序計算器(PC):存放當前要執行的指令地址, 與MAR直接連通,并且可以自動 1

C:控制器過程僞代碼描述

完成一條指令的過程為:取指令(PC)->分析指令(IR)->執行指令(CU)

具體過程:首先取出指令,即(IR),接着獲取指令的操作碼,即OP(IR),然後獲取指令的地址碼,即AD(IR),然後将操作碼送入控制單元分析,即OP(IR)->CU,操作碼表示需要幹什麼,但是幹活需要原材料,所以再把指令的地址碼送入MAR,AD(IR)->MAR,從MAR指示的存儲體取出原材料即可。

結合前面的加法,我們可以寫出完整的加法運算的過程的: 首要取加法指令,而指令存儲在存儲體中,想要取出指令必須要知道的指令的地址,而這個地址就存放在PC中,PC又和MAR直接相連,即(PC)->MAR,于是指令此時被放入了MDR中,那麼接着将指令放入IR中,即(MDR)->IR,接着取指令的操作碼送入控制單元,即OP(IR)->CU,然後再把原材料(就是一些操作數)的地址碼送入MAR,即AD(IR)->MAR。接着就可以進行加法操作了,由于上一步已經将操作數的地址碼送入了MDR中,所以現在送入操作數寄存器,即(MDR)->X,然後(ACC) (X)->ACC,最後PC要自增,即(PC) 1->PC,表示下一條指令

精華:計算機的工作過程

學習到這裡,我們就可以從硬件到角度分析一下,看似簡單的C語言代碼,在背後計算機究竟做了多少事情

以下程序非常簡單,聲明了4個變量并賦值,然後在main函數内進行運算

int a=2,b=3,c=1,y=0; void main() { y=a*b c; }

經過編譯器編譯後,這段程序在主存中就是這樣的

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)10

  • 下半部分是定義的變量,上半部分則是對應于高級語言對應的機器指令

為了方便演示,我們将控制器、運算器和存儲體也放在旁邊

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)11

第一組

1:程序開始運行,PC的值為0,保存的是第一條指令的地址。然後将PC的内容,也就是指令的地址送入到MAR中,即(PC)->MAR,MAR=0。也就是說控制器向存儲器指明,我接下來要訪問主存0号地址處的數據,同時告訴存儲器進行讀操作

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)12

2 3:主存儲器會根據MAR記錄的地址信息,到存儲體中找出0号地址對應的二進制數據,并将其放入到MDR中,此時MDR中存放了第一條指令。即M(MAR)->MDR,此時MDR=000001 0000000101

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)13

4:接着将MDR中的指令放入IR中,于是控制器就存放了當前要執行的指令。即(MDR)->IR,(IR)=000001 0000000101

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)14

5:這條指令的前6個比特位是地址碼,會被送入到控制單元CU中,CU分析後,得知這是一條取數命令。即OP(IR)->CU

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)15

6:取數指令會将變量a的内容放入寄存器ACC中。但是現在變量a不知道在哪裡,所以現在會把指令的地址碼送到MAR當中,即(MAR)=5

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)16

7 8:接着主存儲器根據MAR指明的地址,也就是a的地址(5),去存儲體中找出5号地址的數據,并将其放入MDR當中。即M(MAR)->MDR,(MDR)=0000000000000010,也即(MDR)=2

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)17

9:接着在控制單元的指揮下,MDR中的數據就被放入到了ACC中。至此第一條指令完成

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)18

10:最後PC自增1,進行下一條指令,即(PC)=1

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)19

接下來進行下一組操作

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)20

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)21

1:程序接着運行,PC的值為1,保存的是第二條指令的地址。然後将PC的内容,也就是指令的地址送入到MAR中,即(PC)->MAR,MAR=1。也就是說控制器向存儲器指明,我接下來要訪問主存1号地址處的數據,同時告訴存儲器進行讀操作

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)22

2 3:主存儲器會根據MAR記錄的地址信息,到存儲體中找出1号地址對應的二進制數據,并将其放入到MDR中,此時MDR中存放了第二條指令。即M(MAR)->MDR,此時MDR=000100 0000000110

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)23

4:接着将MDR中的指令放入IR中,于是控制器就存放了當前要執行的指令。即(MDR)->IR,(IR)=000100 0000000110

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)24

5:這條指令的前6個比特位是地址碼,會被送入到控制單元CU中,CU分析後,得知這是一條乘法命令。即OP(IR)->CU

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)25

6:接着把指令的地址碼送到MAR當中,即(MAR)=6

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)26

7 8:接着主存儲器根據MAR指明的地址,也就是b的地址(6),去存儲體中找出6号地址的數據,并将其放入MDR當中。即M(MAR)->MDR,(MDR)=0000000000000011,也即(MDR)=3

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)27

9:由于是乘法,所以控制單元将MDR中的内容送入到乘商寄存器MQ中,即(MDR)->MQ,此時(MQ)=0000000000000011=3

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)28

10:先把a的值放入通用寄存器X中,即(ACC)->X,(X)=2

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)29

11:CU告訴ALU,讓其進行乘法運算。即(MQ)×(X)->ACC,(ACC)=6。注意如果乘積過大,需要MQ輔助存儲,也就是最上面講到過的(X)×(MQ)->ACC//MQ

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)30

接着進行下一組操作,具體過程就不詳細演示了,步驟如下

  • 1:PC存儲2号指令的地址,(PC)->MAR,(MAR)=2
  • 2 3:M(MAR)->MDR,(MDR)=000011 0000000111
  • 4:(MDR)->IR,(IR)=000011 0000000111
  • 5:OP(IR)->CU,CU分析操作碼,得知這是加法執行
  • 6:Ad(IR)->MAR,将指令的地址碼送入MAR,(MAR)=7
  • 7 8:M(MAR)->MDR,(MDR)=00000000 00000001=1
  • 9:(MDR)->x,(X)= 00000000 00000001=1
  • 10:(ACC) (X)->ACC,(ACC)->7,由ALU實現加法運算

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)31

接着進行下一組操作

  • 1:(PC)->MAR,(MAR)=3
  • 2 3:M(MAR)->MDR,MDR=000010 0000001000
  • 4:(MDR)->IR,(IR)000010 0000001000
  • 5:OP(IR)->CU,CU分析得知,這是存數指令
  • 6:AD(IR)->MAR,(MAR)=8
  • 7 8:(ACC)->MDR,MDR=7
  • 9:(MDR)->地址為8的存儲單元,導緻y=7

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)32

最後再讀取到停機指令時,計算機通過中斷機制就結束了程序的運行

計算機中存儲器的分類和特點(第一章計算機系統概述-第二節)33

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved