計算機中最主要的兩個組成部分是:CPU和內存
其他都是一些外接設備,而這些設備之間依靠總線進行連接
總線
總線一共分為三類(當然還有一些鏈接外設的擴展總線,這些不需要了解太多):數據總線(傳遞數據)、控制總線(傳遞控制信號)、地址總線(傳遞命令地址)
CPU組成
ALU(Arithmetic & Logic Unit計算單元)
Register(寄存器,用來存儲CPU從內存中拿到的數據)
PC(program countor 程序計數器,存儲當前指令的地址)
相信學習java編程的小夥伴都知道,如果是多線程的程序,多個線程之間會搶時間片,其實時間片的概念就是PC中的地址不斷切換的過程,線程切換時會把當前線程放到緩存中,切換到新的線程執行。
CU(Control Unit 控制單元)
MMU(Memory Management Unit 內存管理單元)
MMU的主要功能是內存映射,我們都知道現在我們的程序訪問的內存都是虛擬內存(在下文中有講到),虛擬內存中按照數據類型進行分段,數據在虛擬空間的地址(線性地址)=偏移量(數據存放在段中的地址)+段的基地址(分配在哪個段上),MMU+OS(操作系統)將線性地址映射到物理地址。
緩存(Cache)
緩存一共分為三級,其中一級和二級緩存是CPU獨有的,一個CPU一個緩存,三級緩存是多個CPU共享的,數據的抓取過程大致是:先從一級緩存中取數據,如果一級緩存中沒有,再到二級緩存中取數據,還沒有再到三級緩存中取數據,如果三級緩存中再沒有,最後才從內存(內存中沒有從硬盤中取)中拿數據並把數據放到緩存中,緩存在讀取數據的時候是按塊(緩存行,Intel CPU緩存行大小是64字節)讀取的,不是一個字節一個字節的讀取(IO操作太浪費時間)。
核的概念