計算機基礎 硬體重要知識小結

2022-03-21 18:56:59 字數 3747 閱讀 5700

mar: memory address register,儲存將要被訪問資料在記憶體中哪個位址處,儲存的是位址值

mdr: memory data register,儲存從記憶體讀取進來的資料或將要寫入記憶體的資料,儲存的是資料值

ac: accumulator,儲存算術運算和邏輯運算的中間結果,儲存的是資料值

cir: current instruction register,儲存當前正在執行的指令

運算器+控制器=cpu**處理器,其工作週期為 取指-解碼-執行(n+1,n+2,...流水線),內部結構大致如下:

cpu+i/o+主儲存器+外部儲存,之間的聯絡特性如下:

2.1.1  cpu指令集分類

所有軟體都要經過cpu內部的微指令集處理來完成,根據設計指令集的不同,分為以下2類:

精簡指令集類cpu:arm架構cpu,sun公司生產的sparc架構cpu

複雜指令集類cpu:amd,intel 生產的cpu

windows下檢視intel指令集:使用cpu-z軟體

2.1.2  核心態和使用者態

除了嵌入式系統,多數cpu都有兩種工作模式:核心態和使用者態。這兩種工作模式是由psw暫存器(程式狀態暫存器)上的乙個二進位制位來控制的。

核心態的cpu,可以執行指令集中的所有指令,並使用硬體的所有功能。

使用者態的cpu,只允許執行指令集中的部分指令。一般而言,io相關和把記憶體保護相關的所有執行在使用者態下都是被禁止的,此外其它一些特權指令也是被禁止的,比如使用者態下不能將psw的模式設定控制位設定成核心態。

使用者態cpu想要執行特權操作,需要發起系統呼叫來請求核心幫忙完成對應的操作。其實是在發起系統呼叫後,cpu會執行trap指令陷入(trap)到核心。當特權操作完成後,需要執行乙個指令讓cpu返回到使用者態。

除了系統呼叫會陷入核心,更多的是硬體會引起trap行為陷入核心,使得cpu控制權可以回到作業系統,以便作業系統去決定如何處理硬體異常。

2.1.3  cpu的多核和多執行緒

cpu的物理個數由主機板上的插槽數量決定,每個cpu可以有多核心,每核心可能會有多執行緒。

多核cpu的每核(每核都是乙個小晶元),在os看來都是乙個獨立的cpu。

對於超執行緒cpu來說,每核cpu可以有多個執行緒(數量是兩個,比如1核雙線程,2核4執行緒,4核8執行緒),每個執行緒都是乙個虛擬的邏輯cpu(比如windows下是以邏輯處理器的名稱稱呼的),而每個執行緒在os看來也是獨立的cpu。

要發揮超執行緒優勢,需要作業系統對超執行緒有專門的優化。

多執行緒的cpu在能力上,比非多執行緒的cpu核心要更強,但每個執行緒不足以與獨立的cpu核心能力相比較。

每核上的多執行緒cpu都共享該核的cpu資源

多執行緒意味著每核可以有多個執行緒的狀態。比如某核的執行緒1空閒,執行緒2執行。

多執行緒沒有提供真正意義上的並行處理,每核cpu在某一時刻仍然只能執行乙個程序,因為執行緒1和執行緒2是共享某核cpu資源的。可以簡單的認為每核cpu在獨立執行程序的能力上,有乙個資源是唯一的,執行緒1獲取了該資源,執行緒2就沒法獲取。(但是,執行緒1和執行緒2在很多方面上是可以並行執行的。比如可以並行取指、並行解碼、並行執行指令等。所以雖然單核在同一時間只能執行乙個程序,但執行緒1和執行緒2可以互相幫助,加速程序的執行。

並且,如果執行緒1在某一時刻獲取了該核執行程序的能力,假設此刻該程序發出了io請求,於是執行緒1掌握的執行程序的能力,就可以被執行緒2獲取,即切換到執行緒2。這是在執行執行緒間的切換,是非常輕量級的)

多執行緒可能會出現一種現象:假如2核4執行緒cpu,有兩個程序要被排程,那麼只有兩個執行緒會處於執行狀態,如果這兩個執行緒是在同一核上,則另一核完全空轉,處於浪費狀態。更期望的結果是每核上都有乙個cpu分別排程這兩個程序。

2.1.4  cpu上的快取記憶體

1.用與cpu相同材質製造,與cpu一樣快,因而cpu訪問它無時延,容量小,造價高,通常小於1kb

32bit:32*32位元=128位元組

64bit:64*64位元=512位元組

2.暫存器之下,是cpu的快取記憶體。分為l1快取、l2快取、l3快取,每層速度按數量級遞減、容量也越來越大。

3.每核心都有乙個自己的l1快取。l1快取分兩種:l1指令快取(l1-icache)和l1資料快取(l1-dcache)。l1指令快取用來存放已解碼指令,l1資料快取用來放訪問非常頻繁的資料。

4.l2快取用來存放近期使用過的記憶體資料。更嚴格地說,存放的是很可能將來會被cpu使用的資料。

5.多數多核cpu的各核都各自擁有乙個l2快取,但也有多核共享l2快取的設計。無論如何,l1是各核私有的(但對某核內的多執行緒是共享的)。

記憶體又叫主存,即ram易失性儲存,斷電後資料全部消失

計算機儲存單位換算:位元組(1位元組=8個位元位二進位制,即1bytes=8bit)

8bit=1bytes

1024bit=1kb

1024bytes=1kb

1024kb=1mb

1024kb=1mb

1mb=8mb

1mb=0.125mb

1024mb=1gb

1024gb=1tb

1024tb=1pb

1024pb=1eb

1gb=1000*1000*1000*8bit    #<===大約

磁碟的內部結構:

磁碟heads

磁頭。linux系統中檢視到的heads一般包括很多虛擬磁頭,實際的物理磁碟的一塊碟片上下兩面一面一磁頭,即2個磁頭。

sectors

扇區。一磁軌上劃分多個扇形區域,一般預設一扇區512位元組。

track

磁軌。碟片上一圈算一磁軌。

cylinders

柱面。所有碟片的同一半徑的磁軌組成一柱面。柱面數=碟片數*碟片上的磁軌數。

units

單元塊。大小等於乙個柱面大小。

磁碟或分割槽大小計算方法:

磁碟大小=units×柱面數(cylinders)

磁碟大小=磁頭數(heads)×每磁軌上的扇區數(sectors)×512×柱面數(cylinders)

更多知識,檢視好友部落格 

計算機基礎 硬體

程式設計師程式設計的本質就是讓計算機去工作,而程式語言就是程式設計師與計算機溝通的介質。程式猿用程式語言寫程式,最終開發出的就是乙個軟體。軟體必須執行在作業系統之上,而作業系統是執行於硬體之上,來控制硬體的,我們開發時,需要呼叫作業系統為我們提供控制硬體的介面。應用程式的功能執行需要通過操作硬體之間...

計算機硬體基礎知識

一 程式設計 1 什麼是程式設計?為何要程式設計?程式設計就是程式設計師用計算機所能理解的表達方式 即程式語言 來將自己的思維邏輯寫下來,程式設計的結果就是一堆檔案,這些檔案稱之為軟體或程式。2 什麼是程式語言?語言就是乙個事物與另外乙個事物之間溝通的介質。程式語言即程式設計師與計算機之間的溝通介質...

計算機硬體知識

程式語言的作用是為了與計算機進行溝通。作業系統和硬體的關係,作業系統是硬體系統的首次擴充,可以控制和管理計算機硬體和軟體資源,合理對各類作業進行排程,以及方便使用者使用的一組程式的集合。應用程式是由程式語言有邏輯得組成,軟體必須執行在作業系統上方可使用。作業系統的作用是為了高效得應用計算機硬體而誕生...