2009年6月8日 星期一

OS心得系列 CPU & Kernel--PART 1

自從開始修習OS的課程之後,"kernel"這個關鍵字就不斷地出現,起初一直無法理解這名詞的真正涵義為 何,不過在慢慢接觸後才稍微知道其大概意義,為何要突然談到"kernal"這重要的名詞 呢?其實是因為當初剛學 時,常把" CPU "與" KERNEL "誤解,認為兩者皆是電腦的核心,在廣義上來講兩者皆是核心沒錯,但其意義差之 千里,大概區分一下,一是電腦硬體內部的核心 ,全名為" Central Processing Unit "謂之中央處理器,可 以說是整部電腦的中樞,絕大部分的的task或中斷處理甚至event都需透過它作運算或處理,才能正確傳送資料 或訊號;而 kernel 則是作業系統裡重要的中樞,大部分的中斷或是event也都需透過system call傳達至 kernal才能運作,回到原先今天著重的主題CPU,在未上過OS課之前,CPU一直是我認為在電腦終極具地位的硬 體,電腦中主要的運算都與之相關,尤其是電腦執行速度更甚,雖然說還有其他因素可能會影響,如相容性、記 憶體等,不過還是以CPU為主要影響力,而追求高執行速率也是我的興趣所在。

直到雙核心的出現,甚至三核心、四核心陸續推出後,處理效率又邁向新的里程碑,不過令我百思不解的是, 為何單核心的時脈較高,而雙核的時脈較低,其處理速度卻比較快?例如一顆時脈是3.0G的單核心,而時脈是 1.5或是小於1.5的雙核心處理速度並不等於其單核心甚至更快速,一開始我是認為就像多人分工一樣,越多處 理者效率越高,好比一個人能在一小時內處理四件事情與二個人同時處理二件事是類似的,當然後者效率較高, 不過在閱讀某篇文章後才更了解深入道理。

CPU新舊核心在設計上有顯著的差別,雖然就單核心的時脈較高,但基於設計上的關係,必須通過許多不必要 的流程,簡單說就是繞遠路做了一堆不必要的事而讓自已顯得很快處理一堆事情的樣子,從技術觀點來講,也就 是pipeline制度不佳,然後卻有可以改善這個問題的方法,選擇一個較少阻礙路徑以減少延遲也就是減少 CPI,用同樣的工作效率卻能更早達到目的,而新雙核心的概念也較符合後項敘述,舉個例,一台A車時速可達 300 hr/km ,B車則是150 hr/km,二人從台北出發目的是高雄,A車選擇城鄉道路,除了容易塞車還要停紅綠 燈,而B車選擇高速公路,一路上非常順暢,最後B車先達目的,當然CPU架構可不僅僅只有這些東西的差異,實 際上牽扯的因素可能更多更複雜,我的知識也有限還未及其標準,所以也只能大概探討到這,不過至少對於其差 異有了更近一步解答,至於kernel 部分等到下一次再來好好研究之。

沒有留言:

張貼留言