計算機基本體系結構


計算機基本體系結構

CPU(運算器、控制器、寄存器)
	運算器:進行數字運算、邏輯運算
	控制器:控制數據的存取 
	寄存器:運算過程中數據的暫存位置
	
RAM
	數據存儲單元,每8位一個存儲單元,稱為cell
	每個cell都有一個唯一的十六進制地址標識,0x00,00x01
	為了確保CPU能在內存中尋址尋找數據,中間需要一個中間件,稱為north bridge
	
	CPU采用線路復用(32位電路)的方式完成數據尋址、數據存儲等,例如00表示尋址、01表示數據讀取等
	
	
	PAE	Physical Address Extension	物理地址擴展 

		在32位電路上又加了4位電路, 使32位CPU支持能夠使用大於4G的內存 


		
	CPU緩存 
		將RAM中具有熱區的數據緩存,加快CPU讀取數據速度(20%)
	
		當緩存占滿時,會使用一定的置換策略進行數據置換(例如LRU),用於確保當后續數據需要被載入時有足夠的空間
	
		依賴於程序局部性
	
			空間局部性:緩存加載數據時,除了加載對應cell的數據外,還會加載其附近的數據
			時間局部性:一段數據被訪問一次,其可能在一段時間內會再被訪問 
		
		
		緩存類型:
			一級緩存
				一級指令緩存
				一級數據緩存 
			二級緩存 
			三級緩存 

			一級、二級緩存對於多個CPU或者多核CPU來說是獨有的
			三級緩存是所有CPU共享的
		
		
			由於RAM與緩存的空間相差太大,會導致緩存命中率低,采用了N路關聯技術(一路關聯、二路關聯、四路關聯、八路關聯) 	
	

			CPU處理寫操作時,由於CPU是直接和一級緩存打交道,也就意味着該數據的修改會通知一級緩存、二級緩存、三級緩存、內存,此技術稱為通寫write through
			
			另外一種技術稱為write back,回寫,CPU對緩存數據進行修改后,不會立即更新到RAM,只有數據要被緩存通過某種置換策略丟棄時才會被同步到RAM
	
	
	
顯卡	同樣需要北橋與CPU進行大量數據交換

I/O設備[磁盤、網卡、鍵盤、鼠標等]通過插入South Bridge,再通過North Bridge與CPU進行關聯
	高速IO	PCI-E插槽,接入North Bridge 
	低速IO	PCI[外部設備互聯]插槽,接入South Bridge

CPU架構

SMP 對稱多處理器 

NUMA  非一致性內存訪問 


	
	
	
	
	
CPU如何區分不同的I/O設備?   I/O Port 

	任何一個I/O設備為了和CPU進行數據交互,都要向CPU申請一片連續的I/O port
		

I/O設備控制器/適配器 
	將對應的I/O設備的信息轉換成總線上可以傳輸的信號、進行信號的校驗等
	
	

	
CPU如何獲知哪個外部設備來了數據?

	Poll:CPU輪詢,效率低 
	通知機制 
		為了確保I/O設備與CPU進行數據信號交互,每個I/O設備需要向CPU中斷控制器注冊信號通路
		
		CPU中斷控制器[Interrupt Controller],即CPU暫停處理當前的事務,來接收外部設備來的信號,最起碼先把信號加載到內存 
		
		CPU Context Swith: 上下文切換 ,進程在CPU上切換被CPU執行 
		
		
DMA: Director Memory Access
	CPU如果總是控制I/O設備讀取數據,效率低下;其解決方案,CPU檢測到I/O設備支持通過DMA機制,CPU將給DMA進行授權,讓DMA由DMA芯片控制I/O設備將數據讀取到內存,DMA一般是把數據讀取到內存中最容易尋址的一塊區域;內存中還有一塊底層區域用於BIOS
	
	DMA數據讀取完成后,要向CPU中斷控制器發送信號,告之CPU數據加載完成 
	
	臨界區
		指的是有可能發生總線沖突的區域 
	
	
	
		
由於各硬件設備的速度差異較大,因此CPU還要具有能夠協調各硬件協同工作的能力;通過脈沖信號(電平信號)完成

<================================================================================>

OS

Process: 進程
每個進程運行過程中要獲取硬件資源
系統資源:CPU時間、存儲空間

如何讓CPU運行多個進程?

在CPU上按時間進行切片,也就是說CPU會為每個進程指令分配一定的運行時間

由指令計數器記錄每個進程在時間片結束時,其指令運行的條目數 

進程在運行時還需要RAM進行數據保存,如何確保多個進程共同使用RAM存儲數據且不沖突?

按內存空間進行切片是不合適的
	進程結束時可能會造成內存中存在好多漏洞
	萬一事先分配的內存空間不足,可能會覆蓋其他進程所使用的內存空間 

如何解決?
	
	事先切割內存,以4K為默認單位,每個4k的存儲槽稱為頁框page frame,每個4k中存儲的數據稱為頁面page
	
	在此基礎上加一個映射機制,讓每一個進程都認為自己擁有完整的內存使用,此映射器中用於保存線性地址與物理地址的映射關系 

	每個進程認為自己擁有的內存地址空間稱為線性地址,真實的內存稱為物理地址

I/O設備

內核 --> 進程  

CPU在運行內核進程時,稱為內核模式

CPU在運行用戶空間進程時,稱為用戶模式,而用戶模式的進程是不允許直接操作硬件的

CPU在進行一些指令時是分級別的,或者稱為ring

	ring -1	硬件輔助虛擬化 
	ring 0	特權指令
	ring 1 
	ring 2 
	ring 3  用戶空間指令,完全虛擬化[純軟件模擬]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM