内外存儲器: 實現記憶功能的部件⽤來存放計算程序及參與運算的各種數據
CPU運算器: 負責數據的算術運算和邏輯運算即數據的加⼯處理
CPU控制器:負責對程序規定的控制信息進⾏分析,控制并協調輸⼊,輸出操作或内存訪問
輸⼊設備: 實現計算程序和原始數據的輸⼊
輸出設備: 實現計算結果輸出1、2、2 計算機系統組成1、2、3 程序和指令
指令是對計算機進⾏程序控制的最⼩單位。
計算機系統組成
1、2、3 程序和指令
指令是對計算機進⾏程序控制的最⼩單位。
所有的指令的集合稱為計算機的指令系統。
程序是為完成⼀項特定任務⽽⽤某種語⾔編寫的⼀組指令序列。
中央處理器(CPU,central processing unit)作為計算機系統的運算和控制核⼼,是信息處理、程序運⾏的最終執⾏單元。
cpu
該圖表現了在指令執⾏周期中相互交互部件之間的關系。在從内存讀取程序指令之前,将其地址放到地址總線上。然後,内存控制器将所需代碼送到數據總線上,存⼊代碼⾼速緩存 (code cache)。指令指針的值決定下⼀條将要執⾏的指令。指令由指令譯碼器分析,并産⽣相應的數值信号送往控制單元,其協調 ALU 和浮點單元。雖然圖中沒有畫出控制總線,但是其上傳輸的信号⽤系統時鐘協調不同 CPU 部件之間的數據傳輸。
CPU主要由運算器、控制器、寄存器組和内部總線構成。
運算器:由算術邏輯單元ALU、通⽤寄存器、數據暫存器等組成。程序狀态字寄存器接受從控制器送來的命令并執⾏相應的動作,主要負責對數據的加工和處理。
控制器:由程序計數器PC、指令寄存器IR、地址寄存器AR、數據寄存器DR、指令譯碼器等。負責對程序規定的控制信息進⾏分析,控制并協調輸⼊,輸出操作或内存訪問
寄存器:寄存器的功能是存儲⼆進制代碼,它是由具有存儲功能的觸發器組合起來構成的。
總線:總線是⼀種内部結構,它是cpu、内存、輸⼊、輸出設備傳遞信息的公⽤通道,主機的各個部件通過總線相連接,外部設備通過相應的接⼝電路再與總線相連接。
CPU 本身隻負責運算,不負責儲存數據。數據⼀般都儲存在内存之中,CPU 要⽤的時候就去内存讀寫數據。但是,CPU 的運算速度遠⾼于内存的讀寫速度,為了避免被拖慢,CPU 都⾃帶⼀級緩存和⼆級緩存。基本上,CPU 緩存可以看作是讀寫速度較快的内存。但是,CPU 緩存還是不夠快,另外數據在緩存⾥⾯的地址是不固定的,CPU 每次讀寫都要尋址也會拖慢速度。因此,除了緩存之外,CPU 還⾃帶了寄存器(register),⽤來儲存最常⽤的數據。也就是說,那些最頻繁讀寫的數據(⽐如循環變量),都會放在寄存器⾥⾯,CPU 優先讀寫寄存器,再由寄存器跟内存交換數據。
寄存器名字
寄存器、緩存、内存三者關系
按與CPU遠近來分,離得最近的是寄存器,然後緩存(CPU緩存),最後内存。
CPU計算時,先預先把要⽤的數據從硬盤讀到内存,然後再把即将要⽤的數據讀到寄存器。于是
CPU〈---〉寄存器〈---〉内存,這就是它們之間的信息交換。
那為什麼有緩存呢?因為如果經常操作内存中的同⼀址地的數據,就會影響速度。于是就在寄存器與内存之間設置⼀個緩存。因為從緩存提取的速度遠⾼于内存。當然緩存的價格肯定遠遠⾼于内存,不然的話,機器⾥就沒有内存的存在。
由此可以看出,從遠近來看:CPU〈---〉寄存器〈---〉緩存 〈---〉内存。
進制也就是進位制,是⼈們規定的⼀種進位⽅法。 對于任何⼀種進制—X進制,就表示某⼀位置上的數運算時是逢X進⼀位。 ⼗進制是逢⼗進⼀,⼗六進制是逢⼗六進⼀,⼆進制就是逢⼆進⼀,以此類推,x進制就是逢x進位。
⼆進制是計算技術中⼴泛采⽤的⼀種數制。⼆進制數據是⽤0和1兩個數碼來表示的數。它的基數為2,進位規則是“逢⼆進⼀”,借位規則是“借⼀當⼆”。
當前的計算機系統使⽤的基本上是⼆進制系統,數據在計算機中主要是以補碼的形式存儲的。
⼗進制轉化⼆進制的⽅法:⽤⼗進制數除以2,分别取餘數和商數,商數為0的時候,将餘數倒着
數就是轉化後的結果。⼗進制的⼩數轉換成⼆進制:⼩數部分和2相乘,取整數,不⾜1取0,每次相乘都是⼩數部分,順序看取整後的數就是轉化後的結果。
⼋進制,Octal,縮寫OCT或O,⼀種以8為基數的計數法,采⽤0,1,2,3,4,5,6,7⼋個數字,逢⼋進1。⼀些編程語⾔中常常以數字0開始表明該數字是⼋進制。⼋進制的數和⼆進制數可以按位對應(⼋進制⼀位對應⼆進制三位),因此常應⽤在計算機語⾔中。⼗進制轉化⼋進制的⽅法:
⽤⼗進制數除以8,分别取餘數和商數,商數為0的時候,将餘數倒着數就是轉化後的結果。
⼗六進制(英⽂名稱:Hexadecimal),同我們⽇常⽣活中的表示法不⼀樣,它由0-9,A-F組成,字⺟不區分⼤⼩寫。與10進制的對應關系是:0-9對應0-9,A-F對應10-15。
⼗六進制的數和⼆進制數可以按位對(⼗六進制⼀位對應⼆進制四位),因此常應⽤在計算機語⾔中。
⼗進制轉化⼗六進制的⽅法:
⽤⼗進制數除以16,分别取餘數和商數,商數為0的時候,将餘數倒着數就是轉化後的結果。
十進制轉十六進制
func main() {
a := 10 //⼗進制
b := 010 //⼋進制
c := 0x10 //⼗六進制
//%d 占位符 表示輸出⼀個⼗進制整型數據
fmt.Printf("%d\n",a)
//%o 占位符 表示輸出⼀個⼗進制整型數
fmt.Printf("%o\n",b)
//%x %X 占位符 表示輸出⼀個⼗進制整型數據
fmt.Printf("%x\n",c)
}
⼀個數的原碼(原始的⼆進制碼)有如下特點:
原碼表示法簡單易懂,與帶符号數本身轉換⽅便,隻要符号還原即可,但當兩個正數相減或不同符号數相加時,必須⽐較兩個數哪個絕對值⼤,才能決定誰減誰,才能确定結果是正還是負,所以原碼不便于加減運算。
對于正數,反碼與原碼相同
對于負數,符号位不變,其它部分取反(1變0,0變1)
反碼運算也不⽅便,通常⽤來作為求補碼的中間過渡。
在計算機系統中,數值⼀律⽤補碼來存儲。
補碼特點:
⽤8位⼆進制數分别表示 0和-0⼗進制數
不管以原碼⽅式存儲,還是以反碼⽅式存儲,0也有兩種表示形式。為什麼同樣⼀個0有兩種不同的表示⽅法呢?
但是如果以補碼⽅式存儲,補碼統⼀了零的編碼:
計算9-6的結果
以原碼⽅式相加:
最⾼位的1溢出,剩餘8位⼆進制表示的是3,正确。
在計算機系統中,數值⼀律⽤補碼來存儲,主要原因是:
内存
内存含義:
存儲器:計算機的組成中,⽤來存儲程序和數據,輔助CPU進⾏運算處理的重要部分。
内存:内部存貯器,暫存程序/數據——掉電丢失 SRAM、DRAM、DDR、DDR2、DDR3。
外存:外部存儲器,⻓時間保存程序/數據—掉電不丢ROM、ERRROM、FLASH(NAND、
NOR)、硬盤、光盤。
内存是溝通CPU與硬盤的橋梁:暫存放CPU中的運算數據
暫存與硬盤等外部存儲器交換的數據
有關内存的兩個概念:物理存儲器和存儲地址空間。
物理存儲器:實際存在的具體存儲器芯⽚。
主闆上裝插的内存條
顯示卡上的顯示RAM芯⽚
各種适配卡上的RAM芯⽚和ROM芯⽚
存儲地址空間:對存儲器編碼的範圍。我們在軟件上常說的内存是指這⼀層含義。
編碼:對每個物理存儲單元(⼀個字節)分配⼀個号碼
尋址:可以根據分配的号碼找到相應的存儲單元,完成數據的讀寫
将内存抽象成⼀個很⼤的⼀維字符數組。
編碼就是對内存的每⼀個字節分配⼀個32位或64位的編号(與32位或者64位處理器相關)。
這個内存編号我們稱之為内存地址。
内存中的每⼀個數據都會分配相應的地址:
char:占⼀個字節分配⼀個地址
int: 占四個字節分配四個地址
flfloat、struct、函數、數組等
隻要将數據存儲在内存中都會為其分配内存地址。内存地址使⽤⼗六進數據表示。
内存為每⼀個字節分配⼀個32位或64位的編号(與32位或者64位處理器相關)。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!