天天看點

計算機系統-0 Hello world的一生和CPU架構

作者:兩塊肥肉2022

CPU總體架構

總線按照用途分為系統總線、存儲器總線、IO總線。

計算機系統-0 Hello world的一生和CPU架構

也可以這樣分類看:

計算機系統-0 Hello world的一生和CPU架構

ITCM對于單核使用,類似CPU Cache,可以提醒性能。

Hello world的一生

1:輸入源碼

計算機系統-0 Hello world的一生和CPU架構

2: 儲存到磁盤的hello.c

磁盤都是按照位元組存儲的,不同上下文中,可以按照不同含義解析。

文本檔案每個位元組按照ascii碼,同時包含\n\t<space>等(10進制)

計算機系統-0 Hello world的一生和CPU架構

Linux使用指令:

#十進制列印

od -Ax -tcu1 helloworld.c

計算機系統-0 Hello world的一生和CPU架構

#如果采用16進制,逐個位元組列印ASCII字元

od -Ax -tcx1 helloworld.c

3:編譯

計算機系統-0 Hello world的一生和CPU架構

gcc -o helloworld helloworld.c

後面再補充細節,這裡重點說明CPU架構

4:運作

計算機系統-0 Hello world的一生和CPU架構

結合CPU架構圖,執行如下:

1:shell是外殼程式,當鍵盤輸入helloworld,通過USB接口通過IO總線和系統總線,讀入到CPU的寄存器;CPU通過系統總線和存儲器總線寫入到主存。

計算機系統-0 Hello world的一生和CPU架構

2:當鍵盤輸入回車時,外殼程式直到輸入結束,通過一系列指令加載helloworld檔案,把目标檔案代碼和資料從磁盤複制到主存。

計算機系統-0 Hello world的一生和CPU架構

3:處理器執行代碼指令,把主存的Hello world加載到寄存器,再複制到顯示裝置,顯示再螢幕上。

計算機系統-0 Hello world的一生和CPU架構

緩存

從helloworld運作看,CPU執行很快,但是IO裝置和記憶體速度很慢,需要緩存。

計算機系統-0 Hello world的一生和CPU架構

執行時間如下:

1cycle=0.3納秒

L1 Data cache=1納秒

L2 Data cache=4納秒

RAM= 80+納秒

讀寫硬碟15+毫秒

網際網路通路 80毫秒

抽象

helloworld程式沒有直接通路鍵盤、寄存器、磁盤和主存,依靠是作業系統提供的服務。

計算機系統-0 Hello world的一生和CPU架構

作業系統可以看成應用軟體和硬體之間的一層軟體,屏蔽處理器、主存、IO裝置差異。

作業系統提供程序、虛拟記憶體VM和檔案,對應如下功能。

計算機系統-0 Hello world的一生和CPU架構

程序

程序是作業系統對正在運作程式的一種抽象。一個系統可以運作多個程序,好像可以獨立使用硬體(實質并發,即交錯執行)。多個程序是切換,上下文(寄存器、PC指針、緩存)切換。

計算機系統-0 Hello world的一生和CPU架構

Shell殼到helloworld程式切換,執行完後切回shell,采用上述流程。

虛拟記憶體

作業系統對于每個程序提供一個抽象,獨占使用記憶體,包含代碼段、資料段、共享庫、堆、棧、核心态等

計算機系統-0 Hello world的一生和CPU架構

檔案

檔案是對于I/O裝置的抽象,是一個位元組序列。

跨系統的網絡通訊

計算機系統-0 Hello world的一生和CPU架構

并發和并行

單處理器下多線程并發

超線程下不依賴資料的并行(PC和寄存器有多份,但是ALU隻有1份)

多處理器下多線程的并行(每個處理器獨立PC、寄存器和ALU)

流水線保證指令級并行

單指令多資料并行SIMD

繼續閱讀