鳥哥的 Linux 私房菜
<<

第零章、計算機概論

最近更新日期:2015/04/16

由過去的經驗當中,鳥哥發現到因為興趣或生活所逼而必須要接觸 Linux 的朋友,很多可能並非資訊相關科系出身, 因此對於電腦軟/硬體方面的概念不熟。然而作業系統這種咚咚跟硬體有相當程度的關連性, 所以,如果不瞭解一下計算機概論,要很快的瞭解 Linux 的概念是有點難度的。因此,鳥哥就自作聰明的新增一個小章節來談談計概囉! 因為鳥哥也不是資訊相關學門出身,所以,寫的不好的地方請大家多多指教啊!^_^

0.1 電腦:輔助人腦的好工具

現在的人們幾乎無時無刻都會碰電腦!不管是桌上型電腦(桌機)、筆記型電腦(筆電)、平板電腦、智慧型手機等等,這些東西都算是電腦。 雖然接觸的這麼多,但是,你瞭解電腦裡面的元件有什麼嗎?以桌機來說,電腦的機殼裡面含有什麼元件?不同的電腦可以應用在哪些工作? 你生活周遭有哪些電器用品內部是含有電腦相關元件的?底下我們就來談一談這些東西呢!

所謂的電腦就是一種計算機,而計算機其實是:『接受使用者輸入指令與資料,經由中央處理器的數學與邏輯單元運算處理後, 以產生或儲存成有用的資訊』。因此,只要有輸入設備 (不管是鍵盤還是觸控式螢幕) 及輸出設備 (例如電腦螢幕或直接由印表機列印出來),讓你可以輸入資料使該機器產生資訊的, 那就是一部計算機了。

Tips鳥哥的圖示 電腦可以協助人們進行大量的運算!以前如果要計算化學反應式都得要算個老半天,有了電腦模擬軟體後,就有不一樣的情況發生了! 以下圖為例,鳥哥的工作中,有一項是需要將人們排放的空氣污染物帶入電腦模式進行模擬後,計算出可能產生的空氣污染並得到空氣品質狀態,最後經過分析軟體得到各式各樣的圖表。 經過這些圖表的解析,就可以讓人們知道什麼樣的污染排放來源可能會產生什麼樣的空氣品質變化囉。
計算器的功能
圖0.1.1、計算器的功能

好了,根據這個定義你知道哪些東西是計算機了嗎?其實包括一般商店用的簡易型加減乘除計算機、打電話用的手機、開車用的衛星定位系統 (GPS)、提款用的提款機 (ATM)、你上課會使用的桌上型個人電腦、外出可能會帶的筆記型電腦 (包括 notebook 與 netbook),還有近幾年 (2015前後) 非常熱門的平板電腦與智慧型手機, 甚至是未來可能會大流行的單版電腦 (Xapple pi, banana pi, Raspberry pi, 註1) 與智慧型手錶,甚至於更多的智慧型穿戴式電腦(註2)等等,這些都是計算機喔!

那麼計算機主要的組成元件是什麼呢?底下我們以常見的個人電腦主機或伺服器工作站主機來作為說明好了。

0.1.1 電腦硬體的五大單元

關於電腦的硬體組成部分,其實你可以觀察你的桌上型電腦來分析一下,依外觀來說這傢伙主要可分為三部分,分別是:

  • 輸入單元:包括鍵盤、滑鼠、讀卡機、掃描器、手寫板、觸控螢幕等等一堆;
  • 主機部分:這個就是系統單元,被主機機殼保護住了,裡面含有一堆板子、CPU 與主記憶體等;
  • 輸出單元:例如螢幕、印表機等等

我們主要透過輸入設備如滑鼠與鍵盤來將一些資料輸入到主機裡面,然後再由主機的功能處理成為圖表或文章等資訊後, 將結果傳輸到輸出設備,如螢幕或印表機上面。那主機裡面含有什麼元件呢?如果你曾經拆開過電腦主機機殼 (包括拆開你的智慧型手機也一樣喔!), 會發現其實主機裡面最重要的就是一片主機板,上面安插了中央處理器 (CPU) 以及主記憶體、硬碟 (或記憶卡) 還有一些介面卡裝置而已。 當然大部分智慧型手機是將這些元件直接焊接在主機板上面而不是插卡啦!

整部主機的重點在於中央處理器 (Central Processing Unit, CPU),CPU 為一個具有特定功能的晶片, 裡頭含有微指令集,如果你想要讓主機進行什麼特異的功能,就得要參考這顆 CPU 是否有相關內建的微指令集才可以。 由於 CPU 的工作主要在於管理與運算,因此在 CPU 內又可分為兩個主要的單元,分別是: 算數邏輯單元與控制單元。(註3) 其中算數邏輯單元主要負責程式運算與邏輯判斷,控制單元則主要在協調各周邊元件與各單元間的工作。

既然 CPU 的重點是在進行運算與判斷,那麼要被運算與判斷的資料是從哪裡來的? CPU 讀取的資料都是從主記憶體來的! 主記憶體內的資料則是從輸入單元所傳輸進來!而 CPU 處理完畢的資料也必須要先寫回主記憶體中,最後資料才從主記憶體傳輸到輸出單元。

Tips鳥哥的圖示 為什麼我們都會說,要加快系統效能,通常將記憶體容量加大就可以獲得相當好的成效?如同下圖以及上面的說明,因為所有的資料都要經過主記憶體的傳輸, 所以記憶體的容量如果太小,資料快取就不足~影響效能相當大啊!尤其針對 Linux 作為伺服器的環境下!這點要特別記憶喔!

綜合上面所說的,我們會知道其實電腦是由幾個單元所組成的,包括輸入單元、 輸出單元、CPU 內部的控制單元、算數邏輯單元與主記憶體五大部分。 這幾個東西的相關性如下所示:

電腦的五大單元
圖0.1.2、電腦的五大單元(註4)

上面圖示中的『系統單元』其實指的就是電腦機殼內的主要元件,而重點在於 CPU 與主記憶體。 特別要看的是實線部分的傳輸方向,基本上資料都是流經過主記憶體再轉出去的! 至於資料會流進/流出記憶體則是 CPU 所發佈的控制命令!而 CPU 實際要處理的資料則完全來自於主記憶體 (不管是程式還是一般文件資料)!這是個很重要的概念喔! 這也是為什麼當你的記憶體不足時,系統的效能就很糟糕!也是為什麼現在人們買智慧型手機時,對於可用記憶體的要求都很高的原因!

而由上面的圖示我們也能知道,所有的單元都是由 CPU 內部的控制單元來負責協調的,因此 CPU 是整個電腦系統的最重要部分! 那麼目前世界上有哪些主流的 CPU 呢?是否剛剛我們談到的硬體內全部都是相同的 CPU 架構呢?底下我們就來談一談。


0.1.2 一切設計的起點: CPU 的架構

如前面說過的,CPU 其實內部已經含有一些微指令,我們所使用的軟體都要經過 CPU 內部的微指令集來達成才行。 那這些指令集的設計主要又被分為兩種設計理念,這就是目前世界上常見到的兩種主要 CPU 架構, 分別是:精簡指令集 (RISC) 與複雜指令集 (CISC) 系統。底下我們就來談談這兩種不同 CPU 架構的差異囉!

  • 精簡指令集 (Reduced Instruction Set Computer, RISC):(註5)

這種 CPU 的設計中,微指令集較為精簡,每個指令的執行時間都很短,完成的動作也很單純,指令的執行效能較佳; 但是若要做複雜的事情,就要由多個指令來完成。常見的 RISC 微指令集 CPU 主要例如甲骨文 (Oracle) 公司的 SPARC 系列、 IBM 公司的 Power Architecture (包括 PowerPC) 系列、與安謀公司 (ARM Holdings) 的 ARM CPU 系列等。

在應用方面,SPARC CPU 的電腦常用於學術領域的大型工作站中,包括銀行金融體系的主要伺服器也都有這類的電腦架構; 至於PowerPC架構的應用上,例如新力(Sony)公司出產的Play Station 3(PS3)就是使用PowerPC架構的Cell處理器; 那安謀的 ARM 呢?你常使用的各廠牌手機、PDA、導航系統、網路設備(交換器、路由器等)等,幾乎都是使用 ARM 架構的 CPU 喔! 老實說,目前世界上使用範圍最廣的 CPU 可能就是 ARM 這種架構的呢! (註6)

  • 複雜指令集(Complex Instruction Set Computer, CISC):(註7)

與RISC不同的,CISC在微指令集的每個小指令可以執行一些較低階的硬體操作,指令數目多而且複雜, 每條指令的長度並不相同。因為指令執行較為複雜所以每條指令花費的時間較長, 但每條個別指令可以處理的工作較為豐富。常見的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架構的CPU。

由於AMD、Intel、VIA所開發出來的x86架構CPU被大量使用於個人電腦(Personal computer)用途上面, 因此,個人電腦常被稱為x86架構的電腦!那為何稱為x86架構(註8)呢? 這是因為最早的那顆Intel發展出來的CPU代號稱為8086,後來依此架構又開發出80286, 80386..., 因此這種架構的CPU就被稱為x86架構了。

在2003年以前由Intel所開發的x86架構CPU由8位元升級到16、32位元,後來AMD依此架構修改新一代的CPU為64位元, 為了區別兩者的差異,因此64位元的個人電腦CPU又被統稱為x86_64的架構喔!

Tips鳥哥的圖示 所謂的位元指的是CPU一次資料讀取的最大量!64位元CPU代表CPU一次可以讀寫64bits這麼多的資料,32位元CPU則是CPU一次只能讀取32位元的意思。 因為CPU讀取資料量有限制,因此能夠從記憶體中讀寫的資料也就有所限制。所以,一般32位元的CPU所能讀寫的最大資料量,大概就是4GB左右。

那麼不同的x86架構的CPU有什麼差異呢?除了CPU的整體結構(如第二層快取、每次運作可執行的指令數等)之外, 主要是在於微指令集的不同。新的x86的CPU大多含有很先進的微指令集, 這些微指令集可以加速多媒體程式的運作,也能夠加強虛擬化的效能,而且某些微指令集更能夠增加能源效率, 讓CPU耗電量降低呢!由於電費越來越高,購買電腦時,除了整體的效能之外, 節能省電的CPU特色也可以考慮喔!

例題:
最新的Intel/AMD的x86架構中,請查詢出多媒體、虛擬化、省電功能各有哪些重要的微指令集?(僅供參考)
答:
  • 多媒體微指令集:MMX, SSE, SSE2, SSE3, SSE4, AMD-3DNow!
  • 虛擬化微指令集:Intel-VT, AMD-SVM
  • 省電功能:Intel-SpeedStep, AMD-PowerNow!
  • 64/32位元相容技術:AMD-AMD64, Intel-EM64T



0.1.3 其他單元的設備

五大單元中最重要的控制、算術邏輯被整合到 CPU 的封裝中,但系統當然不可能只有 CPU 啊!那其他三個重要電腦單元的設備還有哪些呢? 其實在主機機殼內的設備大多是透過主機板 (main board) 連接在一塊,主機板上面有個連結溝通所有設備的晶片組,這個晶片組可以將所有單元的設備連結起來, 好讓 CPU 可以對這些設備下達命令。其他單元的重要設備主要有:

  • 系統單元:如圖 0.1.2 所示,系統單元包括 CPU 與記憶體及主機板相關元件。而主機板上頭其實還有很多的連接界面與相關的介面卡,包括鳥哥近期常使用的 PCI-E 10G 網路卡、 磁碟陣列卡、還有顯示卡等等。尤其是顯示卡,這東西對於玩3D遊戲來說是非常重要的一環,他與顯示的精緻度、色彩與解析度都有關係。

  • 記憶單元:包括主記憶體 (main memory, RAM) 與輔助記憶體,其中輔助記憶體其實就是大家常聽到的『儲存裝置』囉!包括硬碟、軟碟、光碟、磁帶等等的。

  • 輸入、輸出單元:同時涵蓋輸入輸出的設備最常見的大概就是觸控式螢幕了。至於單純的輸入設備包括前面提到的鍵盤滑鼠之外,目前的體感裝置也是重要的輸入設備喔! 至於輸出設備方面,除了螢幕外,印表機、音效喇叭、HDMI電視、投影機、藍芽耳機等等,都算喔!

更詳細的各項主機與周邊裝置我們將在下個小節進行介紹!在這裡我們先來瞭解一下各元件的關係囉!那就是,電腦是如何運作的呢?



0.1.4 運作流程

如果不是很瞭解電腦的運作流程的話,鳥哥拿個簡單的想法來思考好了~假設電腦是一個人體,那麼每個元件對應到那個地方呢?可以這樣思考:

各元件運作
圖0.1.3、各元件運作
  • CPU=腦袋瓜子:每個人會作的事情都不一樣(微指令集的差異),但主要都是透過腦袋瓜子來進行判斷與控制身體各部分的活動;

  • 主記憶體=腦袋中放置正在被思考的資料的區塊:在實際活動過程中,我們的腦袋瓜子需要有外界刺激的資料 (例如光線、環境、語言等) 來分析,那這些互動資料暫時存放的地方就是主記憶體,主要是用來提供給腦袋瓜子判斷用的資訊。

  • 硬碟=腦袋中放置回憶的記憶區塊:跟剛剛的主記憶體不同,主記憶體是提供腦袋目前要思考與處理的資訊,但是有些生活瑣事或其他沒有要立刻處理的事情, 就當成回憶先放置到腦袋的記憶深處吧!那就是硬碟!主要目的是將重要的資料記錄起來,以便未來將這些重要的經驗再次的使用;

  • 主機板=神經系統:好像人類的神經一樣,將所有重要的元件連接起來,包括手腳的活動都是腦袋瓜子發佈命令後, 透過神經(主機板)傳導給手腳來進行活動啊!

  • 各項周邊設備=人體與外界溝通的手、腳、皮膚、眼睛等:就好像手腳一般,是人體與外界互動的重要關鍵!

  • 顯示卡=腦袋中的影像:將來自眼睛的刺激轉成影像後在腦袋中呈現,所以顯示卡所產生的資料來源也是CPU控制的。

  • 電源供應器 (Power)=心臟:所有的元件要能運作得要有足夠的電力供給才行!這電力供給就好像心臟一樣,如果心臟不夠力, 那麼全身也就無法動彈的!心臟不穩定呢?那你的身體當然可能斷斷續續的~不穩定!

由這樣的關係圖當中,我們知道整個活動中最重要的就是腦袋瓜子! 而腦袋瓜子當中與現在正在進行的工作有關的就是CPU與主記憶體!任何外界的接觸都必須要由腦袋瓜子中的主記憶體記錄下來, 然後給腦袋中的CPU依據這些資料進行判斷後,再發佈命令給各個周邊設備!如果需要用到過去的經驗, 就得由過去的經驗(硬碟)當中讀取囉!

也就是說,整個人體最重要的地方就是腦袋瓜子,同樣的,整部主機當中最重要的就是CPU與主記憶體, 而CPU的資料來源通通來自於主記憶體,如果要由過去的經驗來判斷事情時, 也要將經驗(硬碟)挪到目前的記憶(主記憶體)當中,再交由CPU來判斷喔!這點得要再次的強調啊! 下個章節當中,我們就對目前常見的個人電腦各個元件來進行說明囉!



0.1.5 電腦用途的分類

知道了電腦的基本組成與周邊裝置,也知道其實電腦的CPU種類非常的多,再來我們想要瞭解的是,電腦如何分類? 電腦的分類非常多種,如果以電腦的複雜度與運算能力進行分類的話,主要可以分為這幾類:

  • 超級電腦(Supercomputer)
    超級電腦是運作速度最快的電腦,但是他的維護、操作費用也最高!主要是用於需要有高速計算的計畫中。 例如:國防軍事、氣象預測、太空科技,用在模擬的領域較多。詳情也可以參考: 國家高速網路與計算中心http://www.nchc.org.tw的介紹! 至於全世界最快速的前500大超級電腦,則請參考:http://www.top500.org

  • 大型電腦(Mainframe Computer)
    大型電腦通常也具有數個高速的CPU,功能上雖不及超級電腦,但也可用來處理大量資料與複雜的運算。 例如大型企業的主機、全國性的證券交易所等每天需要處理數百萬筆資料的企業機構, 或者是大型企業的資料庫伺服器等等。

  • 迷你電腦(Minicomputer)
    迷你電腦仍保有大型電腦同時支援多使用者的特性,但是主機可以放在一般作業場所, 不必像前兩個大型電腦需要特殊的空調場所。通常用來作為科學研究、工程分析與工廠的流程管理等。

  • 工作站(Workstation)
    工作站的價格又比迷你電腦便宜許多,是針對特殊用途而設計的電腦。在個人電腦的效能還沒有提升到目前的狀況之前, 工作站電腦的性能/價格比是所有電腦當中較佳的,因此在學術研究與工程分析方面相當常見。

  • 微電腦(Microcomputer)
    個人電腦就屬於這部份的電腦分類,也是我們本章主要探討的目標!體積最小,價格最低,但功能還是五臟俱全的! 大致又可分為桌上型、筆記型等等。

若光以效能來說,目前的個人電腦效能已經夠快了,甚至已經比工作站等級以上的電腦運算速度還要快! 但是工作站電腦強調的是穩定不當機,並且運算過程要完全正確,因此工作站以上等級的電腦在設計時的考量與個人電腦並不相同啦! 這也是為啥工作站等級以上的電腦售價較貴的原因。



0.1.6 電腦上面常用的計算單位 (容量、速度等)

電腦的運算能力除了 CPU 微指令集設計的優劣之外,但主要還是由速度來決定的。至於存放在電腦儲存設備當中的資料容量也是有單位的。

  • 容量單位

電腦對資料的判斷主要依據有沒有通電來記錄資訊,所以理論上對於每一個紀錄單位而言,它只認識 0 與 1 而已。0/1 這個二進位的的單位我們稱為 bit。 但 bit 實在太小了,所以在儲存資料時每份簡單的資料都會使用到 8 個 bits 的大小來記錄,因此定義出 byte 這個單位,他們的關係為:

1 Byte = 8 bits

不過同樣的,Byte 還是太小了,在較大的容量情況下,使用 byte 相當不容易判斷資料的大小,舉例來說,1000000 bytes 這樣的顯示方式你能夠看得出有幾個零嗎?所以後來就有一些常見的簡化單位表示法,例如 K 代表 1024 byte,M 代表 1024K 等。 而這些單位在不同的進位制下有不同的數值表示,底下就列出常見的單位與進位制對應:

進位制KiloMegaGigaTeraPetaExaZetta
二進位10241024K1024M1024G1024T1024P1024E
十進位10001000K1000M1000G1000T1000P1000E

一般來說,檔案容量使用的是二進位的方式,所以 1 GBytes 的檔案大小實際上為:1024x1024x1024 Bytes 這麼大! 速度單位則常使用十進位,例如 1GHz 就是 1000x1000x1000 Hz 的意思。

Tips鳥哥的圖示 那麼什麼是『進位』呢?以人類最常用的十進位為例,每個『位置』上面最多僅能有一個數值,這個數值不可以比 9 還要大!那比 9 還大怎辦? 就用『第二個位置來裝一個新的 1 』!所以, 9 還是只有一個位置, 10 則是用了兩個位置了。好了那如果是 16 進位怎辦?由於每個位置只能出現一個數值, 但是數字僅有 0~9 而已啊!因此 16 進位中,就以 A 代表 10 的意思,以 B 代表 11 的意思,所以 16 進位就是 0~9, a, b, c, d, e, f,有沒有看到, 『每個位置最多還是只有一個數值而已』喔!好了,那回來談談二進位。因為每個位置只能有 0, 1 而已,不能出現 2 (逢 2 進一位) 啦!這樣了解乎?

  • 速度單位

CPU的運算速度常使用 MHz 或者是 GHz 之類的單位,這個 Hz 其實就是秒分之一。而在網路傳輸方面,由於網路使用的是 bit 為單位,因此網路常使用的單位為 Mbps 是 Mbits per second,亦即是每秒多少 Mbit。舉例來說,大家常聽到的 20M/5M 光世代傳輸速度,如果轉成檔案容量的 byte 時,其實理論最大傳輸值為:每秒 2.5Mbyte/ 每秒625Kbyte的下載/上傳速度喔!

例題:
假設你今天購買了500GB的硬碟一顆,但是格式化完畢後卻只剩下460GB左右的容量,這是什麼原因?
答:
因為一般硬碟製造商會使用十進位的單位,所以500GByte代表為500*1000*1000*1000Byte之意。 轉成檔案的容量單位時使用二進位(1024為底),所以就成為466GB左右的容量了。

硬碟廠商並非要騙人,只是因為硬碟的最小物理量為512Bytes,最小的組成單位為磁區(sector), 通常硬碟容量的計算採用『多少個sector』,所以才會使用十進位來處理的。相關的硬碟資訊在這一章後面會提到的!


0.2 個人電腦架構與相關設備元件

一般消費者常說的電腦通常指的就是x86的個人電腦架構,因此我們有必要來瞭解一下這個架構的各個元件。事實上,Linux最早在發展的時候,就是依據個人電腦的架構來發展的, 所以真的得要瞭解一下呢!另外,早期兩大主流x86開發商(Intel, AMD)的CPU架構與設計理念都有些許差異。不過互相學習對方長處的結果,就是兩者間的架構已經比較類似了。 由於目前市場佔有率還是以 Intel 為大宗,因此底下以目前(2015)相對較新的 Intel 主機板架構來談談:

Intel晶片架構
圖 0.2.1、Intel晶片架構

由於主機板是連結各元件的一個重要項目,因此在主機板上面溝通各部元件的晶片組設計優劣,就會影響效能不少喔!早期的晶片組通常分為兩個橋接器來控制各元件的溝通, 分別是:(1)北橋:負責連結速度較快的CPU、主記憶體與顯示卡界面等元件;(2)南橋:負責連接速度較慢的裝置介面, 包括硬碟、USB、網路卡等等。(晶片組的南北橋與三國的大小喬沒有關係 @_@)。不過由於北橋最重要的就是 CPU 與主記憶體之間的橋接,因此目前的主流架構中, 大多將北橋記憶體控制器整合到 CPU 封裝當中了。所以上圖你只會看到 CPU 而沒有看到以往的北橋晶片喔!

Tips鳥哥的圖示 早期晶片組分南北橋,北橋可以連接 CPU、主記憶體與顯示卡。只是 CPU 要讀寫到主記憶體的動作,還需要北橋的支援,也就是 CPU 與主記憶體的交流, 會瓜分掉北橋的總可用頻寬,真浪費!因此目前將記憶控制器整合到 CPU 後,CPU與主記憶體之間的溝通是直接交流,速度較快之外,也不會消耗更多的頻寬!

畢竟目前世界上x86的CPU主要供應商為Intel,所以底下鳥哥將以Intel的主機板架構說明各元件囉! 我們以華碩公司出的主機板,型號:Asus Z97-AR 作為一個說明的範例,搭配著主機板晶片組邏輯圖 0.2.1 的說明,主機板各元件如下所示:

ASUS 主機板
圖 0.2.2、ASUS 主機板 (圖片為華碩公司所有)

上述的圖片中,主機板上面設計的插槽主要有 CPU (Intel LGA 1150 Socket)、主記憶體 (DDR3 3200 support)、顯示卡界面 (PCIe3.0)、SATA 磁碟插槽 (SATA express)等等。 底下的元件在解說的時候,請參考上述兩張圖示來印證喔!

0.2.1 執行腦袋運算與判斷的 CPU

如同華碩主機板示意圖上半部的中央部分,那就是CPU插槽。 由於CPU負責大量運算,因此CPU通常是具有相當高發熱量的元件。所以如果你曾經拆開過主機板, 應該就會看到CPU上頭通常會安插一顆風扇來主動散熱的。

x86個人電腦的CPU主要供應商為Intel與AMD,目前(2015)主流的CPU都是雙核以上的架構了! 原本的單核心CPU僅有一個運算單元,所謂的多核心則是在一顆CPU封裝當中嵌入了兩個以上的運算核心, 簡單的說,就是一個實體的CPU外殼中,含有兩個以上的CPU單元就是了。

不同的CPU型號大多具有不同的腳位(CPU上面的插腳),能夠搭配的主機板晶片組也不同, 所以當你想要將你的主機升級時,不能只考慮CPU,你還得要留意你的主機板上面所支援的CPU型號喔! 不然買了最新的CPU也不能夠安插在你的舊主機板上頭的!目前主流的CPU有Intel的 i3/i5/i7 系列產品中,甚至先後期出廠的類似型號的腳位也不同, 例如 i7-2600 使用 LGA1155 腳位而 i7-4790 則使用 FCLGA1150 腳位,挑選時必須要很小心喔!

我們前面談到CPU內部含有微指令集,不同的微指令集會導致CPU工作效率的優劣。除了這點之外, CPU效能的比較還有什麼呢?那就是CPU的時脈了!什麼是時脈呢?簡單的說, 時脈就是CPU每秒鐘可以進行的工作次數。 所以時脈越高表示這顆CPU單位時間內可以作更多的事情。舉例來說,Intel的 i7-4790 CPU時脈為3.6GHz, 表示這顆CPU在一秒內可以進行3.6x109次工作,每次工作都可以進行少數的指令運作之意。

Tips鳥哥的圖示 注意,不同的CPU之間不能單純的以時脈來判斷運算效能喔!這是因為每顆CPU的微指令集不相同,架構也不見得一樣,可使用的第二層快取及其計算機制可能也不同, 加上每次時脈能夠進行的工作指令數也不同!所以,時脈目前僅能用來比較同款CPU的速度!

  • CPU的工作時脈:外頻與倍頻

早期的 CPU 架構主要透過北橋來連結系統最重要的 CPU、主記憶體與顯示卡裝置。因為所有的設備都得掉透過北橋來連結,因此每個設備的工作頻率應該要相同。 於是就有所謂的前端匯流排 (FSB) 這個東西的產生。但因為 CPU 的運算速度比其他的設備都要來的快,又為了要滿足 FSB 的頻率,因此廠商就在 CPU 內部再進行加速, 於是就有所謂的外頻與倍頻了。

總結來說,在早期的 CPU 設計中,所謂的外頻指的是CPU與外部元件進行資料傳輸時的速度,倍頻則是 CPU 內部用來加速工作效能的一個倍數, 兩者相乘才是CPU的時脈速度。例如 Intel Core 2 E8400 的內頻為 3.0GHz,而外頻是333MHz,因此倍頻就是9倍囉!(3.0G=333Mx9, 其中1G=1000M)

Tips鳥哥的圖示 很多電腦硬體玩家很喜歡玩『超頻』,所謂的超頻指的是: 將CPU的倍頻或者是外頻透過主機板的設定功能更改成較高頻率的一種方式。但因為CPU的倍頻通常在出廠時已經被鎖定而無法修改, 因此較常被超頻的為外頻。
舉例來說,像上述3.0GHz的CPU如果想要超頻, 可以將他的外頻333MHz調整成為400MHz,但如此一來整個主機板的各個元件的運作頻率可能都會被增加成原本的1.333倍(4/3), 雖然CPU可能可以到達3.6GHz,但卻因為頻率並非正常速度,故可能會造成當機等問題。

但如此一來所有的資料都被北橋卡死了,北橋又不可能比 CPU 更快,因此這傢伙常常是系統效能的瓶頸。為了解決這個問題,新的 CPU 設計中, 已經將記憶體控制器整合到 CPU 內部,而連結 CPU 與記憶體、顯示卡的控制器的設計,在Intel部份使用 QPI (Quick Path Interconnect) 與 DMI 技術,而 AMD 部份則使用 Hyper Transport 了,這些技術都可以讓 CPU 直接與主記憶體、顯示卡等設備分別進行溝通,而不需要透過外部的連結晶片了。

因為現在沒有所謂的北橋了 (整合到 CPU 內),因此,CPU 的時脈設計就無須考慮得要同步的外頻,只需要考量整體的頻率即可。 所以,如果你經常有查閱自己 CPU 時脈的習慣,當使用 cpu-z (註9) 這個軟體時,應該會很驚訝的發現到,怎麼外頻變成 100MHz 而倍頻可以到達 30 以上!相當有趣呢!

Tips鳥哥的圖示 現在 Intel 的 CPU 會主動幫妳超頻喔!例如 i7-4790 這顆 CPU 的規格 (註10) 中,基本時脈為 3.6GHz,但是最高可自動超頻到 4GHz 喔! 透過的是 Intel 的 turbo 技術。同時,如果你沒有大量的運算需求,該 CPU 時脈會降到 1.xGHz 而已,藉此達到節能省電的目的!所以,各位好朋友, 不需要自己手動超頻了!Intel 已經自動幫妳進行超頻了...所以,如果妳用 cpu-z 觀察 CPU 時脈,發現該時脈會一直自動變動,很正常!你的系統沒壞掉!

  • 32位元與64位元的CPU與匯流排『寬度』

從前面的簡易說明中,我們知道 CPU 的各項資料通通得要來自於主記憶體。因此,如果主記憶體能提供給 CPU 的資料量越大的話,當然整體系統的效能應該也會比較快! 那如何知道主記憶體能提供的資料量呢?此時還是得要藉由 CPU 內的記憶體控制晶片與主記憶體間的傳輸速度『前端匯流排速度(Front Side Bus, FSB) 來說明。

與 CPU 的時脈類似的,主記憶體也是有其工作的時脈,這個時脈限制還是來自於 CPU 內的記憶體控制器所決定的。以圖0.2.1 為例, CPU 內建的記憶體控制晶片對主記憶體的工作時脈最高可達到 1600MHz。這只是工作時脈(每秒幾次)。一般來說,每次時脈能夠傳輸的資料量,大多為 64 位元,這個 64 位元就是所謂的『寬度』了! 因此,在圖0.2.1 這個系統中,CPU可以從記憶體中取得的最快頻寬就是 1600MHz * 64bit = 1600MHz * 8 bytes = 12.8Gbyte/s。

與匯流排寬度相似的,CPU每次能夠處理的資料量稱為字組大小(word size), 字組大小依據CPU的設計而有32位元與64位元。我們現在所稱的電腦是32或64位元主要是依據這個 CPU解析的字組大小而來的!早期的32位元CPU中,因為CPU每次能夠解析的資料量有限, 因此由主記憶體傳來的資料量就有所限制了。這也導致32位元的CPU最多只能支援最大到4GBytes的記憶體。

Tips鳥哥的圖示 得利於北橋整合到 CPU 內部的設計,CPU 得以『個別』跟各個元件進行溝通!因此,每種元件與 CPU 的溝通具有很多不同的方式!例如主記憶體使用系統匯流排頻寬來與 CPU 溝通。而顯示卡則透過PCI-E的序列通道設計來與CPU溝通喔!詳細說明我們在本章稍後的主機板部份再來談談。

  • CPU等級

由於x86架構的CPU在Intel的Pentium系列(1993年)後就有不統一的腳位與設計,為了將不同種類的CPU規範等級, 所以就有i386,i586,i686等名詞出現了。基本上,在Intel Pentium MMX與AMD K6年代的CPU稱為i586等級, 而Intel Celeron與AMD Athlon(K7)年代之後的32位元CPU就稱為i686等級。 至於目前的64位元CPU則統稱為x86_64等級。

目前很多的程式都有對CPU做最佳化的設計,萬一哪天你發現一些程式是註明給x86_64的CPU使用時, 就不要將他安裝在686以下等級的電腦中,否則可是會無法執行該軟體的! 不過,在x86_64的硬體下倒是可以安裝386的軟體喔!也就是說,這些東西具有向下相容的能力啦!

  • 超執行緒 (Hyper-Threading, HT)

我們知道現在的 CPU 至少都是兩個核心以上的多核心 CPU 了,但是 Intel 還有個很怪的東西,叫做 CPU 的超執行緒 (Hyper-Threading) 功能! 那個是啥鬼東西?我們知道現在的 CPU 運算速度都太快了,因此運算核心經常處於閒置狀態下。而我們也知道現在的系統大多都是多工的系統, 同時間有很多的程序會讓 CPU 來執行。因此,若 CPU 可以假象的同時執行兩個程序,不就可以讓系統效能增加了嗎?反正 CPU 的運算能力還是沒有用完啊!

那是怎麼達成的啊這個 HT 功能?強者鳥哥的同事蔡董大大用個簡單的說明來解釋。在每一個 CPU 內部將重要的暫存器 (register) 分成兩群, 而讓程序分別使用這兩群暫存器。也就是說,可以有兩個程序『同時競爭 CPU 的運算單元』,而非透過作業系統的多工切換! 這一過程就會讓 CPU 好像『同時有兩個核心』的模樣!因此,雖然大部分 i7 等級的 CPU 其實只有四個實體核心,但透過 HT 的機制, 則作業系統可以抓到八個核心!並且讓每個核心邏輯上分離,就可以同時運作八個程序了。

雖然很多研究與測試中,大多發現 HT 雖然可以提昇效能,不過,有些情況下卻可能導致效能降低喔!因為,實際上明明就僅有一個運算單元嘛! 不過在鳥哥使用數值模式的情況下,因為鳥哥操作的數值模式主要為平行運算功能,且運算通常無法達到 100% 的 CPU 使用率,通常僅有大約60%運算量而已。 因此在鳥哥的實作過程中,這個 HT 確實提昇相當多的效能!至少應該可以節省鳥哥大約30%~50%的等待時間喔!不過網路上大家的研究中, 大多說這個是 case by case,而且使用的軟體影響很大!所以,在鳥哥的例子是啟用 HT 幫助很大!您的案例就得要自行研究囉!



0.2.2 記憶體

如同圖0.2.2、華碩主機板示意圖中的右上方部分的那四根插槽,那就是主記憶體的插槽了。 主記憶體插槽中間通常有個突起物將整個插槽稍微切分成為兩個不等長的距離, 這樣的設計可以讓使用者在安裝主記憶體時,不至於前後腳位安插錯誤,是一種防呆的設計喔。

前面提到CPU所使用的資料都是來自於主記憶體(main memory),不論是軟體程式還是資料,都必須要讀入主記憶體後CPU才能利用。 個人電腦的主記憶體主要元件為動態隨機存取記憶體(Dynamic Random Access Memory, DRAM), 隨機存取記憶體只有在通電時才能記錄與使用,斷電後資料就消失了。因此我們也稱這種RAM為揮發性記憶體。

DRAM根據技術的更新又分好幾代,而使用上較廣泛的有所謂的SDRAM與DDR SDRAM兩種。 這兩種記憶體的差別除了在於腳位與工作電壓上的不同之外,DDR是所謂的雙倍資料傳送速度(Double Data Rate), 他可以在一次工作週期中進行兩次資料的傳送,感覺上就好像是CPU的倍頻啦! 所以傳輸頻率方面比SDRAM還要好。新一代的PC大多使用DDR記憶體了。 下表列出SDRAM與DDR SDRAM的型號與頻率及頻寬之間的關係。(註11)

SDRAM/DDR型號資料寬度(bit)內部時脈(MHz) 頻率速度頻寬(頻率x寬度)
SDRAMPC10064100100800MBytes/sec
SDRAMPC133641331331064MBytes/sec
DDRDDR-266641332662.1GBytes/sec
DDRDDR-400642004003.2GBytes/sec
DDRDDR2-800642008006.4GBytes/sec
DDRDDR3-160064200160012.8GBytes/sec

DDR SDRAM又依據技術的發展,有DDR, DDR2, DDR3, DDR4等等,其中,DDR2 的頻率倍數則是 4 倍而DDR3 則是 8 倍喔! 目前鳥哥用到伺服器等級的記憶體,已經到 DDR4 了耶!超快超快!

Tips鳥哥的圖示圖 0.2.1 中,主記憶體的規格內提到 DDR3/DDR3L 同時支援,我們知道 DDR3 了,那 DDR3L 是啥鬼? 為了節省更多的電力,新的製程中降低了主記憶體的操作電壓,因此 DDR3 標準電壓為 1.5V,但 DDR3L 則僅須 1.35V 喔!通常可以用在耗電量需求更低的筆電中! 但並非所有的系統都同步支援!這就得要看主機板的支援規格囉!否則你買了 DDR3L 安插在不支援的主機板上,DDR3L 主記憶體是可能會燒毀的喔!

主記憶體除了頻率/頻寬與型號需要考慮之外,記憶體的容量也是很重要的喔! 因為所有的資料都得要載入記憶體當中才能夠被CPU判讀,如果記憶體容量不夠大的話將會導致某些大容量資料無法被完整的載入, 此時已存在記憶體當中但暫時沒有被使用到的資料必須要先被釋放,使得可用記憶體容量大於該資料,那份新資料才能夠被載入呢! 所以,通常越大的記憶體代表越快速的系統,這是因為系統不用常常釋放一些記憶體內部的資料。 以伺服器來說,主記憶體的容量有時比CPU的速度還要來的重要的

  • 多通道設計

由於所有的資料都必須要存放在主記憶體,所以主記憶體的資料寬度當然是越大越好。 但傳統的匯流排寬度一般大約僅達64位元,為了要加大這個寬度,因此晶片組廠商就將兩個主記憶體彙整在一起, 如果一支記憶體可達64位元,兩支記憶體就可以達到128位元了,這就是雙通道的設計理念。

如上所述,要啟用雙通道的功能你必須要安插兩支(或四支)主記憶體,這兩支記憶體最好連型號都一模一樣比較好, 這是因為啟動雙通道記憶體功能時,資料是同步寫入/讀出這一對主記憶體中,如此才能夠提升整體的頻寬啊! 所以當然除了容量大小要一致之外,型號也最好相同啦!

你有沒有發現圖 0.2.2、華碩主機板示意圖上那四根記憶體插槽的顏色呢?是否分為兩種顏色,且兩兩成對? 為什麼要這樣設計?答出來了嗎?是啦!這種顏色的設計就是為了雙通道來的!要啟動雙通道的功能時, 你必須要將兩根容量相同的主記憶體插在相同顏色的插槽當中喔!

Tips鳥哥的圖示 伺服器所需要的速度更快!因此,除了雙通道之外,中階伺服器也經常提供三通道,甚至四通道的記憶體環境! 例如 2014 年推出的伺服器用 E5-2650 v3 的 Intel CPU 中,它可以接受的最大通道數就是四通道且為 DDR4 喔!

  • DRAM與SRAM

除了主記憶體之外,事實上整部個人電腦當中還有許許多多的記憶體存在喔!最為我們所知的就是CPU內的第二層快取記憶體。 我們現在知道CPU的資料都是由主記憶體提供,但CPU到主記憶體之間還是得要透過記憶體控制器啊! 如果某些很常用的程式或資料可以放置到CPU內部的話,那麼CPU資料的讀取就不需要跑到主記憶體重新讀取了! 這對於效能來說不就可以大大的提升了?這就是第二層快取的設計概念。第二層快取與主記憶體及CPU的關係如下圖所示:

記憶體相關性
圖0.2.3、記憶體相關性

因為第二層快取(L2 cache)整合到CPU內部,因此這個L2記憶體的速度必須要CPU時脈相同。 使用DRAM是無法達到這個時脈速度的,此時就需要靜態隨機存取記憶體(Static Random Access Memory, SRAM)的幫忙了。 SRAM在設計上使用的電晶體數量較多,價格較高,且不易做成大容量,不過由於其速度快, 因此整合到CPU內成為快取記憶體以加快資料的存取是個不錯的方式喔!新一代的CPU都有內建容量不等的L2快取在CPU內部, 以加快CPU的運作效能。

  • 唯讀記憶體(ROM)

主機板上面的元件是非常多的,而每個元件的參數又具有可調整性。舉例來說,CPU與記憶體的時脈是可調整的; 而主機板上面如果有內建的網路卡或者是顯示卡時,該功能是否要啟動與該功能的各項參數, 是被記錄到主機板上頭的一個稱為CMOS的晶片上,這個晶片需要藉著額外的電源來發揮記錄功能, 這也是為什麼你的主機板上面會有一顆電池的緣故。

那CMOS內的資料如何讀取與更新呢?還記得你的電腦在開機的時候可以按下[Del]按鍵來進入一個名為BIOS的畫面吧? BIOS(Basic Input Output System)是一套程式,這套程式是寫死到主機板上面的一個記憶體晶片中, 這個記憶體晶片在沒有通電時也能夠將資料記錄下來,那就是唯讀記憶體(Read Only Memory, ROM)。 ROM是一種非揮發性的記憶體。另外,BIOS對於個人電腦來說是非常重要的, 因為他是系統在開機的時候首先會去讀取的一個小程式喔!

另外,韌體(firmware)(註12)很多也是使用ROM來進行軟體的寫入的。 韌體像軟體一樣也是一個被電腦所執行的程式,然而他是對於硬體內部而言更加重要的部分。例如BIOS就是一個韌體, BIOS雖然對於我們日常操作電腦系統沒有什麼太大的關係,但是他卻控制著開機時各項硬體參數的取得! 所以我們會知道很多的硬體上頭都會有ROM來寫入韌體這個軟體。

BIOS 對電腦系統來講是非常重要的,因為他掌握了系統硬體的詳細資訊與開機設備的選擇等等。但是電腦發展的速度太快了, 因此 BIOS 程式碼也可能需要作適度的修改才行,所以你才會在很多主機板官網找到 BIOS 的更新程式啊!但是 BIOS 原本使用的是無法改寫的 ROM ,因此根本無法修正 BIOS 程式碼!為此,現在的 BIOS 通常是寫入類似快閃記憶體 (flash) 或 EEPROM (註13) 中。(註14)

Tips鳥哥的圖示 很多硬體上面都會有韌體喔!例如鳥哥常用的磁碟陣列卡、 10G 的網卡、交換器設備等等!你可以簡單的這麼想!韌體就是綁在硬體上面的控制軟體!



0.2.3 顯示卡

顯示卡插槽如同圖 0.2.2、華碩主機板示意圖所示,在中左方有個 PCIe 3.0 的項目, 這張主機板中提供了兩個顯示卡插槽喔!

顯示卡又稱為VGA(Video Graphics Array),他對於圖形影像的顯示扮演相當關鍵的角色。 一般對於圖形影像的顯示重點在於解析度與色彩深度,因為每個圖像顯示的顏色會佔用掉記憶體, 因此顯示卡上面會有一個記憶體的容量,這個顯示卡記憶體容量將會影響到你的螢幕解析度與色彩深度的喔!

除了顯示卡記憶體之外,現在由於三度空間遊戲(3D game)與一些3D動畫的流行,因此顯示卡的『運算能力』越來越重要。 一些3D的運算早期是交給CPU去運作的,但是CPU並非完全針對這些3D來進行設計的,而且CPU平時已經非常忙碌了呢! 所以後來顯示卡廠商直接在顯示卡上面嵌入一個3D加速的晶片,這就是所謂的GPU稱謂的由來。

顯示卡主要也是透過CPU的控制晶片來與CPU、主記憶體等溝通。如前面提到的,對於圖形影像(尤其是3D遊戲)來說, 顯示卡也是需要高速運算的一個元件,所以資料的傳輸也是越快越好!因此顯示卡的規格由早期的PCI導向AGP, 近期AGP又被PCI-Express規格所取代了。如前面華碩主機板圖示當中看到的就是PCI-Express的插槽。 這些插槽最大的差異就是在資料傳輸的頻寬了!如下所示:

規格寬度速度頻寬
PCI32 bits33 MHz133 MBytes/s
PCI 2.264 bits66 MHz533 MBytes/s
PCI-X64 bits133 MHz1064 MBytes/s
AGP 4x32 bits66x4 MHz1066 MBytes/s
AGP 8x32 bits66x8 MHz2133 MBytes/s
PCIe 1.0 x1250 MBytes/s
PCIe 1.0 x82 GBytes/s
PCIe 1.0 x164 GBytes/s

比較特殊的是,PCIe(PCI-Express)使用的是類似管線的概念來處理,在 PCIe 第一版 (PCIe 1.0) 中,每條管線可以具有250MBytes/s的頻寬效能, 管線越多(通常設計到 x16 管線)則總頻寬越高!另外,為了提昇更多的頻寬,因此 PCIe 還有進階版本,目前主要的版本為第三版,相關的頻寬如下:(註15)

規格1x頻寬16x頻寬
PCIe 1.0250MByte/s4GByte/s
PCIe 2.0500MByte/s8GByte/s
PCIe 3.0~1GByte/s~16GByte/s
PCIe 4.0~2GByte/s~32GByte/s

若以圖0.2.2的主機板為例,它使用的是 PCIe 3.0 的 16x,因此最大頻寬就可以到達接近 32Gbytes/s 的傳輸量! 比起AGP是快很多的!好可怕的傳輸量....

如果你的主機是用來打3D遊戲的,那麼顯示卡的選購是非常重要喔!如果你的主機是用來做為網路伺服器的, 那麼簡單的入門級顯示卡對你的主機來說就非常夠用了!因為網路伺服器很少用到3D與圖形影像功能。

例題:
假設你的桌面使用1024x768解析度,且使用全彩(每個像素佔用3bytes的容量),請問你的顯示卡至少需要多少記憶體才能使用這樣的彩度?
答:
因為1024x768解析度中會有786432個像素,每個像素佔用3bytes,所以總共需要2.25MBytes以上才行! 但如果考慮螢幕的更新率(每秒鐘螢幕的更新次數),顯示卡的記憶體還是越大越好!

除了顯示卡與主機板的連接介面需要知道外,那麼顯示卡是透過什麼格式與電腦螢幕 (或電視) 連接的呢?目前主要的連接介面有:

  • D-Sub (VGA端子):為較早之前的連接介面,主要為 15 針的連接,為類比訊號的傳輸,當初設計是針對傳統映像管螢幕而來。 主要的規格有標準的 640x350px @70Hz、1280x1024px @85Hz 及 2048x1536px @85Hz 等。
  • DVI:共有四種以上的接頭,不過台灣市面上比較常見的為僅提供數位訊號的 DVI-D,以及整合數位與類比訊號的 DVI-I 兩種。DVI 常見於液晶螢幕的連結, 標準規格主要有: 1920x1200px @60Hz、 2560x1600px @60Hz 等。
  • HDMI:相對於 D-sub 與 DVI 僅能傳送影像資料,HDMI 可以同時傳送影像與聲音,因此被廣泛的使用於電視螢幕中!電腦螢幕目前也經常都有支援 HDMI 格式!
  • Display port:與 HDMI 相似的,可以同時傳輸聲音與影像。不過這種界面目前在台灣還是比較少螢幕的支援!


0.2.4 硬碟與儲存設備

電腦總是需要記錄與讀取資料的,而這些資料當然不可能每次都由使用者經過鍵盤來打字!所以就需要有儲存設備咯。 電腦系統上面的儲存設備包括有:硬碟、軟碟、MO、CD、DVD、磁帶機、隨身碟(快閃記憶體)、還有新一代的藍光光碟機等, 乃至於大型機器的區域網路儲存設備(SAN, NAS)等等,都是可以用來儲存資料的。而其中最常見的應該就是硬碟了吧!

  • 硬碟的物理組成

大家應該都看過硬碟吧!硬碟依據桌上型與筆記型電腦而有分為3.5吋及2.5吋的大小。我們以3.5吋的桌上型電腦使用硬碟來說明。 在硬碟盒裡面其實是由許許多多的圓形磁碟盤、機械手臂、 磁碟讀取頭與主軸馬達所組成的,整個內部如同下圖所示:

硬碟物理構造
圖0.2.4、硬碟物理構造(圖片取自維基百科)

實際的資料都是寫在具有磁性物質的磁碟盤上頭,而讀寫主要是透過在機械手臂上的讀取頭(head)來達成。 實際運作時, 主軸馬達讓磁碟盤轉動,然後機械手臂可伸展讓讀取頭在磁碟盤上頭進行讀寫的動作。 另外,由於單一磁碟盤的容量有限,因此有的硬碟內部會有兩個以上的磁碟盤喔!

  • 磁碟盤上的資料

既然資料都是寫入磁碟盤上頭,那麼磁碟盤上頭的資料又是如何寫入的呢?其實磁碟盤上頭的資料有點像下面的圖示所示:

磁碟盤上的資料格式
圖0.2.5、磁碟盤上的資料格式(圖片取自維基百科)

由於磁碟盤是圓的,並且透過機器手臂去讀寫資料,磁碟盤要轉動才能夠讓機器手臂讀寫。因此,通常資料寫入當然就是以圓圈轉圈的方式讀寫囉! 所以,當初設計就是在類似磁碟盤同心圓上面切出一個一個的小區塊,這些小區塊整合成一個圓形,讓機器手臂上的讀寫頭去存取。 這個小區塊就是磁碟的最小物理儲存單位,稱之為磁區 (sector),那同一個同心圓的磁區組合成的圓就是所謂的磁軌(track)。 由於磁碟裡面可能會有多個磁碟盤,因此在所有磁碟盤上面的同一個磁軌可以組合成所謂的磁柱 (cylinder)

我們知道同心圓外圈的圓比較大,佔用的面積比內圈多啊!所以,為了善用這些空間,因此外圍的圓會具有更多的磁區(註16)! 就如同圖 0.2.5 的示意一般。此外,當磁碟盤轉一圈時,外圈的磁區數量比較多,因此如果資料寫入在外圈,轉一圈能夠讀寫的資料量當然比內圈還要多! 因此通常資料的讀寫會由外圈開始往內寫的喔!這是預設值啊!

另外,原本硬碟的磁區都是設計成 512byte 的容量,但因為近期以來硬碟的容量越來越大,為了減少資料量的拆解,所以新的高容量硬碟已經有 4Kbyte 的磁區設計! 購買的時候也需要注意一下。也因為這個磁區的設計不同了,因此在磁碟的分割方面,目前有舊式的 MSDOS 相容模式,以及較新的 GPT 模式喔! 在較新的 GPT 模式下,磁碟的分割通常使用磁區號碼來設計,跟過去舊的 MSDOS 是透過磁柱號碼來分割的情況不同喔!相關的說明我們談到磁碟管理 (第七章) 再來聊!

  • 傳輸界面

為了要提昇磁碟的傳輸速度,磁碟與主機板的連接界面也經過多次的改版,因此有許多不同的界面喔!傳統磁碟界面包括有 SATA, SAS, IDE 與 SCSI 等等。 若考慮外接式磁碟,那就還包括了 USB, eSATA 等等界面喔!不過目前 IDE 已經被 SATA 取代,而 SCSI 則被 SAS 取代,因此我們底下將僅介紹 SATA, USB 與 SAS 界面而已。

  • SATA介面

如同華碩主機板圖示右下方所示為SATA硬碟的連接介面插槽。這種插槽所使用的排線比較窄小, 而且每個裝置需要使用掉一條SATA線。因為SATA線比較窄小之故,所以對於安裝與機殼內的通風都比較好!因此原本的IDE粗排線界面就被SATA取代了! SATA的插槽示意圖如下所示:

SATA 介面的排線 (圖示取自 Seagate 網站)
圖0.2.6、SATA 介面的排線 (圖示取自 Seagate 網站)

由於SATA一條排線僅接一顆硬碟,所以妳不需要調整跳針。不過一張主機板上面SATA插槽的數量並不是固定的, 且每個插槽都有編號,在連接SATA硬碟與主機板的時候,還是需要留意一下。此外,目前的 SATA 版本已經到了第三代 (註17), 每一代之間的傳輸速度如下所示,而且重點是,每一代都可以向下相容喔!只是速度上會差很多就是了。目前主流都是使用 SATA3 這個界面速度可達 600Mbyte/s 的界面!

版本頻寬 (Gbit/s)速度 (Mbyte/s)
SATA 1.01.5150
SATA 2.03300
SATA 3.06600

因為 SATA 傳輸界面傳輸時,透過的資料演算法的關係,當傳輸 10 位元編碼時,僅有 8 位元為資料,其餘 2 位元為檢驗之用。因此頻寬的計算上面, 使用的換算 (bit 轉 byte) 為 1:10 而不是 1byte=8bits 喔!上表的對應要稍微注意一下。另外,雖然這個 SATA3 界面理論上可達 600Mbytes/s 的傳輸速度, 不過目前傳統的硬碟由於其物理組成的限制,一般極限速度大約在 150~200Mbyte/s 而已啦!所以廠商們才要發展固態硬碟啊! ^_^

  • SAS介面

早期工作站或大型大腦上面,為了讀寫速度與穩定度,因此在這樣的機器上面,大多使用的是 SCSI 這種高階的連接介面。 不過這種介面的速度後來被 SATA 打敗了!但是 SCSI 有其值得開發的功能,因此後來就有串列式 SCSI (Serial Attached SCSI, SAS) 的發展。這種介面的速度比 SATA 來的快,而且連接的 SAS 硬碟的磁碟盤轉速與傳輸的速度也都比 SATA 硬碟好! 只是...好貴喔!而且一般個人電腦的主機板上面通常沒有內建 SAS 連接介面,得要透過外接卡才能夠支援。因此一般個人電腦主機還是以 SATA 介面為主要的磁碟連接介面囉。

版本頻寬 (Gbit/s)速度 (Mbyte/s)
SAS 13300
SAS 26600
SAS 3121200

因為這種介面的速度確實比較快喔!而且還支援例如熱拔插等功能,因此,許多的裝置連接會以這種介面來連結! 例如我們經常會聽到的磁碟陣列卡的連接插槽,就是利用這種 SAS 介面開發出來的支援的 SFF-8087 裝置等等的 (註18)。

  • USB介面

如果你的磁碟是外接式的界面,那麼很可能跟主機板連結的就是 USB 這種界面了!這也是目前 (2015) 最常見到的外接式磁碟界面了。 不過傳統的 USB 速度挺慢的,即使是比較慢的傳統硬碟,其傳輸率大概兜還有 80~120Mbytes/s ,但傳統的 USB 2.0 僅有大約 60Mbytes/s 的理論傳輸率, 通常實做在主機板上面的連接口,竟然都僅有 30~40 Mbyte/s 而已呢!實在發揮不出磁碟的性能啊!

為了改善 USB 的傳輸率,因此新一代的 USB 3.0 速度就快很多了!據說還有更新的 USB 3.1 正在發展中!這幾代版本的頻寬與速度製表如下 (註19):

版本頻寬 (Mbit/s)速度 (Mbyte/s)
USB 1.0121.5
USB 2.048060
USB 3.05G500
USB 3.110G1000

跟 SATA 界面一樣,不是理論速度到達該數值,實際上就可以跑到這麼高!USB 3.0 雖然速度很快,但如果妳去市面上面買 USB 的傳統磁碟或快閃碟, 其實他的讀寫速度還是差不多在 100Mbytes/s 而已啦!不過這樣就超級快了!因為一般 USB2.0 的快閃碟讀寫速度大約是 40Mbytes/10Mbytes 左右而已說。 在購買這方面的外接式磁碟時,要特別考量喔!

  • 固態硬碟 (Solid State Disk, SSD)

傳統硬碟有個很致命的問題,就是需要驅動馬達去轉動磁碟盤~這會造成很嚴重的磁碟讀取延遲!想想看,你得要知道資料在哪個磁區上面,然後再命令馬達開始轉, 之後再讓讀取頭去讀取正確的資料。另外,如果資料放置的比較離散(磁區分佈比較廣又不連續),那麼讀寫的速度就會延遲更明顯!速度快不起來。因此, 後來就有廠商拿快閃記憶體去製作成高容量的設備,這些設備的連接界面也是透過 SATA 或 SAS,而且外型還做的跟傳統磁碟一樣!所以, 雖然這類的設備已經不能稱為是磁碟 (因為沒有讀寫頭與磁碟盤啊!都是記憶體!)。但是為了方便大家稱呼,所以還是稱為磁碟!只是跟傳統磁碟 (Hard Disk Drive, HDD) 不同, 就稱為固態硬碟 (Solid State Disk 或 Solid State Driver, SSD)。

固態硬碟最大的好處是,它沒有馬達不需要轉動,而是透過記憶體直接讀寫的特性,因此除了沒資料延遲且快速之外,還很省電! 不過早期的 SSD 有個很重要的致命傷,就是這些快閃記憶體有『寫入次數的限制』在,因此通常 SSD 的壽命大概兩年就頂天了!所以資料存放時, 需要考慮到備份或者是可能要使用 RAID 的機制來防止 SSD 的損毀(註20)!

Tips鳥哥的圖示 SSD 真的好快!鳥哥曾經買過 Intel 較頂級的 SSD 來做過伺服器的讀取系統碟,然後使用類似 dd 的指令去看看讀寫的速度,竟然真的如同 intel 自己官網說的, 極速可以到達 500Mbytes/s 哩!幾乎就是 SATA3.0 的理論極限速度了!所以,近來在需要大量讀取的環境中,鳥哥都是使用 SSD 陣列來處理!

其實我們在讀寫磁碟時,通常沒有連續讀寫,大部分的情況下都是讀寫一大堆小檔案,因此,你不要妄想傳統磁碟一直轉少少圈就可以讀到所有的資料! 通常很多小檔案的讀寫,會很操硬碟,因為磁碟盤要轉好多圈!這也很花人類的時間啊!SSD 就沒有這個問題!也因為如此,近年來在測試磁碟的效能時, 有個很特殊的單位,稱為每秒讀寫操作次數 (Input/Output Operations Per Second, IOPS)!這個數值越大,代表可操作次數較高,當然效能好的很!

  • 選購與運轉須知

如果你想要增加一顆硬碟在你的主機裡頭時,除了需要考慮你的主機板可接受的插槽介面(SATA/SAS)之外,還有什麼要注意的呢?

  • HDD 或 SSD
    畢竟 HDD 與 SSD 的價格與容量真的差很多!不過,速度也差很多就是了!因此,目前大家的使用方式大多是這樣的,使用 SSD 作為系統碟, 然後資料儲存大多放置在 HDD 上面!這樣系統運作快速 (SSD),而資料儲存量也大 (HDD)。

  • 容量
    畢竟目前資料量越來越大,所以購買磁碟通常首先要考量的就是容量的問題!目前(2015)主流市場HDD容量已經到達 2TB以上, 甚至有的廠商已經生產高達 8TB 的產品呢!硬碟可能可以算是一種消耗品,要注意重要資料還是得常常備份出來喔! 至於 SSD 方面,目前的容量大概還是在 128~256GB 之間吧!

  • 緩衝記憶體
    硬碟上頭含有一個緩衝記憶體,這個記憶體主要可以將硬碟內常使用的資料快取起來,以加速系統的讀取效能。 通常這個緩衝記憶體越大越好,因為緩衝記憶體的速度要比資料從硬碟盤中被找出來要快的多了! 目前主流的產品可達64MB左右的記憶體大小喔。

  • 轉速
    因為硬碟主要是利用主軸馬達轉動磁碟盤來存取,因此轉速的快慢會影響到效能。 主流的桌上型電腦硬碟為每分鐘7200轉,筆記型電腦則是5400轉。有的廠商也有推出高達10000轉的硬碟, 若有高效能的資料存取需求,可以考慮購買高轉速硬碟。

  • 運轉須知
    由於硬碟內部機械手臂上的磁頭與硬碟盤的接觸是很細微的空間, 如果有抖動或者是髒污在磁頭與硬碟盤之間就會造成資料的損毀或者是實體硬碟整個損毀~ 因此,正確的使用電腦的方式,應該是在電腦通電之後,就絕對不要移動主機,並免抖動到硬碟, 而導致整個硬碟資料發生問題啊!另外,也不要隨便將插頭拔掉就以為是順利關機!因為機械手臂必須要歸回原位, 所以使用作業系統的正常關機方式,才能夠有比較好的硬碟保養啊!因為他會讓硬碟的機械手臂歸回原位啊!
Tips鳥哥的圖示 可能因為環境的關係,電腦內部的風扇常常會卡灰塵而造成一些聲響。很多朋友只要聽到這種聲響都是二話不說的 『用力拍幾下機殼』就沒有聲音了~現在你知道了,這麼做的後果常常就是你的硬碟容易壞掉! 下次千萬不要再這樣做囉!


0.2.5 擴充卡與界面

你的伺服器可能因為某些特殊的需求,因此需要使用主機板之外的其他介面卡。所以主機板上面通常會預留多個擴充界面的插槽, 這些插槽依據歷史沿革,包括 PCI/AGP/PCI-X/PCIe 等等,但是由於 PCIe 速度快到太好用了,因此幾乎所有的卡都以 PCIe 來設計了! 但是有些比較老舊的卡可能還需要使用啊,因此一般主機板大多還是會保留一兩個 PCI 插槽,其他的則是以 PCIe 來設計。

由於各元件的價格直直落,現在主機板上面通常已經整合了相當多的設備元件了! 常見整合到主機板的元件包括音效卡、網路卡、USB控制卡、顯示卡、磁碟陣列卡等等。 你可以在主機板上面發現很多方形的晶片,那通常是一些個別的設備晶片喔。

不過,因為某些特殊的需求,有時你可能還是需要增加額外的擴充卡的。舉例來說,我們如果需要一部個人電腦連接多個網域時(Linux 伺服器用途), 恐怕就得要有多個網路卡。當你想要買網路卡時,大賣場上面有好多耶!而且速度一樣都是 giga 網卡 (Gbit/s),但價格差很多耶! 觀察規格,主要有 PCIe x1 以及 PCI 界面的!你要買哪種界面呢?

觀察一下 0.2.3 顯示卡的章節內,你會發現到 PCI 界面的理論傳輸率最高指到 133Mbytes/s 而已,而 PCIe 2.0 x1 就高達 500Mbytes/s 的速度! 鳥哥實測的結果也發現,PCI 界面的 giga 網卡極限速度大約只到 60Mbytes/s 而已,而 PCIe 2.0 x1 的 giga 網卡確實可以到達大約 110Mbytes/s 的速度! 所以,購買設備時,還是要查清楚連接界面才行啦!

在 0.2.3 節也談到 PCIe 有不同的通道數,基本上常見的就是 x1, x4, x8, x16 等,個人電腦主機板常見是 x16 的,一般中階伺服器則大多有多個 x8 的界面, x16 反而比較少見。這些界面在主機板上面的設計,主要是以插槽的長度來看的,例如華碩主機板示意圖中,左側有 2 個 PCI 界面, 其他的則是 3 個 x16 的插槽,以及 2 個 x1 的插槽,看長度就知道了。

  • 多通道卡 (例如 x8 的卡) 安裝在少通道插槽 (例如 x4 的插槽) 的可用性

再回頭看看圖 0.2.1 的示意圖,你可以發現 CPU 最多最多僅能支援 16 個 PCIe 3.0 的通道數,因此在圖示當中就明白的告訴你, 你可以設計(1)一個 x16 (2)或者是兩個 x8 ,(3)或者是兩個 x4 加上一個 x8 的方式來增加擴充卡!這是可以直接連結到 CPU 的通道!咦! 那為何圖 0.2.2 可以有 3 個 x16 的插槽呢?原因是前兩個屬於 CPU 支援的,後面兩個可能就是南橋提供的 PCIe 2.0 的界面了! 那明明最多僅能支援一個 x16 的界面,怎麼可能設計 3 個 x16 呢?

因為要讓所有的擴充卡都可以安插在主機板上面,所以在比較中高階的主機板上面,他們都會做出 x16 的插槽,但是該插槽內其實只有 x8 或 x4 的通道有用! 其他的都是空的沒有金手指 (電路的意思)~咦!那如果我的 x16 的卡安裝在 x16 的插槽,但是這個插槽僅有 x4 的電路設計,那我這張卡可以運作嗎? 當然可以!這就是 PCIe 的好處了!它可以讓你這張卡僅使用 x4 的電路來傳送資料,而不會無法使用!只是...你的這張卡的極限效能,就會只剩下 4/16 = 1/4 囉!

因為一般伺服器慣用的擴充卡,大多數都使用 PCIe x8 的界面 (因為也沒有什麼裝置可以將 PCIe 3.0 的 x8 速度用完啊!), 為了增加擴充卡的數量,因此伺服器級的主機板才會大多使用到 x8 的插槽說!反正,要發揮擴充卡的能力,就得要搭配相對應的插槽才行啦!

Tips鳥哥的圖示 鳥哥近年來在搞小型雲教室,為了加速需要有 10G 的網卡,這些網卡標準的界面為 PCIe 2.0 x8 的界面。有部主機上面需要安插這樣的卡三張才行, 結果該主機上面僅有一個 x16,一個 x8 以及一個 x4 的 PCIe 界面,其中 x4 的那個界面使用的是 x8 的插槽,所以好佳在三張卡都可以安裝在主機板上面,且都可以運作! 只是在極速運作時,實測的效能結果發現,那個安插在 x4 界面的網卡效能降很多!所以才會發現這些問題!提供給大家參考參考!


0.2.6 主機板

這個小節我們特別再將主機板拿出來說明一下,特別要講的就是晶片組與擴充卡之間的關係了!

  • 發揮擴充卡效能須考慮的插槽位置

如同圖 0.2.1 所示,其實系統上面可能會有多個 x8 的插槽,那麼到底你的卡插在哪個插槽上面效能最好? 我們以該圖來說,如果你是安插在左上方跟 CPU 直接連線的那幾個插槽,那效能最佳!如果你是安插在左側由上往下數的第五個 PCIe 2.0 x8 的插槽呢? 那個插槽是與南橋連接,所以你的擴充卡資料需要先進入南橋跟大家搶頻寬,之後要傳向 CPU 時,還得要透過 CPU 與南橋的溝通管道, 那條管道稱為 DMI 2.0。

根據 Intel 方面的資料來看,DMI 2.0 的傳輸率是 4GT/s,換算成檔案傳輸量時,大約僅有 2GByte/s 的速度, 要知道,PCIe 2.0 x8 的理論速度已經達到 4GByte/s 了,但是與 CPU 的通道竟然僅有 2GB,效能的瓶頸就這樣發生在 CPU 與南橋的溝通上面! 因此,卡安裝在哪個插槽上面,對效能而言也是影響很大的!所以插卡時,請詳細閱讀您主機板上面的邏輯圖示啊 (類似本章的 Intel 晶片示意圖)! 尤其 CPU 與南橋溝通的頻寬方面,特別重要喔!

Tips鳥哥的圖示 因為鳥哥的 Linux 伺服器,目前很多都需要執行一些虛擬化技術等會大量讀寫資料的服務,所以需要額外的磁碟陣列卡來提供資料的存放! 同時得要提供 10G 網路讓內部的多部伺服器互相透過網路連結。過去沒有這方面的經驗時,擴充卡都隨意亂插,反正能動就好!但實際分析過效能之後, 哇!現在都不敢隨便亂插了!效能差太多!每次在選購新的系統時,也都會優先去查看晶片邏輯圖~確認效能瓶頸不會卡住在主機板上,這才下手去購買! 慘痛的經驗產生慘痛的 $$ 飛走事件,所以,這裡特別提出來跟大家分享的啦!

  • 設備I/O位址與IRQ中斷通道

主機板是負責各個電腦元件之間的溝通,但是電腦元件實在太多了,有輸出/輸入/不同的儲存裝置等等, 主機板晶片組怎麼知道如何負責溝通吶?這個時候就需要用到所謂的I/O位址與IRQ囉!

I/O位址有點類似每個裝置的門牌號碼,每個裝置都有他自己的位址,一般來說,不能有兩個裝置使用同一個I/O位址, 否則系統就會不曉得該如何運作這兩個裝置了。而除了I/O位址之外,還有個IRQ中斷(Interrupt)這個咚咚。

如果I/O位址想成是各裝置的門牌號碼的話,那麼IRQ就可以想成是各個門牌連接到郵件中心(CPU)的專門路徑囉! 各裝置可以透過IRQ中斷通道來告知CPU該裝置的工作情況,以方便CPU進行工作分配的任務。 老式的主機板晶片組IRQ只有15個,如果你的周邊介面太多時可能就會不夠用, 這個時候你可以選擇將一些沒有用到的周邊介面關掉,以空出一些IRQ來給真正需要使用的介面喔! 當然,也有所謂的sharing IRQ的技術就是了!

  • CMOS與BIOS

前面記憶體的地方我們有提過CMOS與BIOS的功能,在這裡我們再來強調一下: CMOS主要的功能為記錄主機板上面的重要參數, 包括系統時間、CPU電壓與頻率、各項設備的I/O位址與IRQ等,由於這些資料的記錄要花費電力,因此主機板上面才有電池。 BIOS為寫入到主機板上某一塊 flash 或 EEPROM 的程式,他可以在開機的時候執行,以載入CMOS當中的參數, 並嘗試呼叫儲存裝置中的開機程式,進一步進入作業系統當中。BIOS程式也可以修改CMOS中的資料, 每種主機板呼叫BIOS設定程式的按鍵都不同,一般桌上型電腦常見的是使用[del]按鍵進入BIOS設定畫面。

  • 連接周邊設備的介面

主機板與各項輸出/輸入設備的連結主要都是在主機機殼的後方,主要有:

  • PS/2介面:這原本是常見的鍵盤與滑鼠的介面,不過目前漸漸被USB介面取代,甚至較新的主機板可能就不再提供 PS/2 界面了;
  • USB介面:通常只剩下 USB 2.0 與 USB 3.0,為了方便區分,USB 3.0 為藍色的插槽顏色喔!
  • 聲音輸出、輸入與麥克風:這個是一些圓形的插孔,而必須你的主機板上面有內建音效晶片時,才會有這三個東西;
  • RJ-45網路頭:如果有內建網路晶片的話,那麼就會有這種接頭出現。 這種接頭有點類似電話接頭,不過內部有八蕊線喔!接上網路線後在這個接頭上會有燈號亮起才對!
  • HDMI:如果有內建顯示晶片的話,可能就會提供這個與螢幕連接的界面了!這種介面可以同時傳輸聲音與影像, 目前也是電視機螢幕的主流連接介面喔!

我們以華碩主機板的連結介面來看的話,主要有這些:

連接周邊介面
圖0.2.7、連接周邊介面

0.2.7 電源供應器

除了上面這些元件之外,其實還有一個很重要的元件也要來談一談,那就是電源供應器(Power)。 在你的機殼內,有個大大的鐵盒子,上頭有很多電源線會跑出來,那就是電源供應器了。 我們的CPU/RAM/主機板/硬碟等等都需要用電,而近來的電腦元件耗電量越來越高,以前很古早的230W電源已經不夠用了, 有的系統甚至得要有500W以上的電源才能夠運作~真可怕~

電源供應器的價差非常大!貴一點的300W可以到4000 NT,便宜一點的300W只要500 NT不到! 怎麼差這麼多?沒錯~因為Power的用料不同,電源供應的穩定度也會差很多。如前所述,電源供應器相當於你的心臟, 心臟差的話,活動力就會不足了!所以, 穩定度差的電源供應器甚至是造成電腦不穩定的元兇呢!所以,盡量不要使用太差的電源供應器喔!

  • 能源轉換率

電源供應器本身也會吃掉一部份的電力的!如果你的主機系統需要 300W 的電力時,因為電源供應器本身也會消耗掉一部份的電力, 因此你最好要挑選400W以上的電源供應器。電源供應器出廠前會有一些測試數據,最好挑選高轉換率的電源供應器。 所謂的高轉換率指的是『輸出的功率/輸入的功率』。意思是說,假如你的主機板用電量為250W, 但是電源供應器其實已經使用掉320W的電力,則轉換率為:250/320=0.78的意思。 這個數值越高表示被電源供應器『玩掉』的電力越少,那就符合能源效益了!^_^



0.2.8 選購須知

在購買主機時應該需要進行整體的考量,很難依照某一項標準來選購的。 老實說,如果你的公司需要一部伺服器的話,建議不要自行組裝,買品牌電腦的伺服器比較好! 這是因為自行組裝的電腦雖然比較便宜,但是每項設備之間的適合性是否完美則有待自行檢測。

另外,在效能方面並非僅考量CPU的能力而已,速度的快慢與『整體系統的最慢的那個設備有關!』,如果你是使用最快速的Intel i7 系列產品,使用最快的 DDR3-1600 記憶體, 但是配上一個慢慢的過時顯示卡,那麼整體的3D速度效能將會卡在那個顯示卡上面喔!所以,在購買整套系統時, 請特別留意需要全部的介面都考慮進去喔!尤其是當您想要升級時,要特別注意這個問題, 並非所有的舊的設備都適合繼續使用的。

例題:
你的系統使用 i7 的 4790 CPU,使用了 DDR3-1600 記憶體,使用了 PCIe 2.0 x8 的磁碟陣列卡,這張卡上面安裝了 8 顆 3TB 的理論速度可達 200Mbyte/s 的硬碟 (假設為可加總速度的 RAID0 配置), 是安插在 CPU 控制晶片相連的插槽中。網路使用 giga 網卡,安插在 PCIe 2.0 x1 的介面上。在這樣的設備中,上述的哪個環節速度可能是你的瓶頸?
答:
  • DDR3-1600 的頻寬可達:12.8GBytes/s
  • 磁碟陣列卡理論傳輸率: PCIe 2.0 x8 為 4GBytes/s
  • 磁碟每顆 200MBytes/s,共八顆,總效率為: 200MBytes*8 ~ 1.6GBytes/s
  • 網路介面使用 PCIe 2.0 1x 所以介面速度可達 500MBytes/s,但是 Giga 網路最高為 125MBytes/s
透過上述分析,我們知道,速度最慢的為網路的 125MBytes/s !所以,如果想要讓整體效能提昇,網路恐怕就是需要克服的一環!
  • 系統不穩定的可能原因

除此之外,到底那個元件特別容易造成系統的不穩定呢?有幾個常見的系統不穩定的狀態是:

  • 系統超頻:這個行為很不好!不要這麼做!

  • 電源供應器不穩: 這也是個很嚴重的問題,當您測試完所有的元件都沒有啥大問題時,記得測試一下電源供應器的穩定度!

  • 記憶體無法負荷:現在的記憶體品質差很多,差一點的記憶體,可能會造成您的主機在忙碌的工作時, 產生不穩定或當機的現象喔!

  • 系統過熱:『熱』是造成電子零件運作不良的主因之一,如果您的主機在夏天容易當機, 冬天卻還好,那麼考慮一下加幾個風扇吧!有助於機殼內的散熱,系統會比較穩定喔! 『 這個問題也是很常見的系統當機的元凶!』(PS1:鳥哥之前的一台伺服器老是容易當機, 後來拆開機殼研究後才發現原來是北橋上面的小風扇壞掉了,導致北橋溫度太高。後來換掉風扇就穩定多了。 PS2:還有一次整個實驗室的網路都停了!檢查了好久,才發現原來是網路交換器 switch 在夏天熱到當機!後來只好用小電風扇一直吹他...)
Tips鳥哥的圖示 事實上,要瞭解每個硬體的詳細架構與構造是很難的!這裡鳥哥僅是列出一些比較基本的概念而已。 另外,要知道某個硬體的製造商是哪間公司時,可以看該硬體上面的資訊。 舉例來說,主機板上面都會列出這個主機板的開發商與主機板的型號,知道這兩個資訊就可以找到驅動程式了。 另外,顯示卡上面有個小小的晶片,上面也會列出顯示卡廠商與晶片資訊喔。

0.3 資料表示方式

事實上我們的電腦只認識0與1,記錄的資料也是只能記錄0與1而已,所以電腦常用的資料是二進位的。 但是我們人類常用的數值運算是十進位,文字方面則有非常多的語言,台灣常用的語言就有英文、中文(又分正體與簡體中文)、日文等。 那麼電腦如何記錄與顯示這些數值/文字呢?就得要透過一系列的轉換才可以啦!底下我們就來談談數值與文字的編碼系統囉!

0.3.1 數字系統

早期的電腦使用的是利用通電與否的特性的真空管,如果通電就是1,沒有通電就是0, 後來沿用至今,我們稱這種只有0/1的環境為二進位制,英文稱為binary的哩。所謂的十進位指的是逢十進一位, 因此在個位數歸為零而十位數寫成1。所以所謂的二進位,就是逢二就前進一位的意思。

那二進位怎麼用呢?我們先以十進位來解釋好了。如果以十進位來說,3456的意義為:

3456 = 3x103 + 4x102 + 5x101 + 6x100

特別注意:『任何數值的零次方為1』所以100的結果就是1囉。 同樣的,將這個原理帶入二進位的環境中,我們來解釋一下1101010的數值轉為十進位的話,結果如下:

1101010=1x26 + 1x25 + 0x24 + 1x23 + 0x22 + 1x21 + 0x20
= 64 + 32 + 0x16 + 8 + 0x4 + 2 + 0x1 = 106

這樣你瞭解二進位的意義了嗎?二進位是電腦基礎中的基礎喔!瞭解了二進位後,八進位、十六進位就依此類推啦! 那麼知道二進位轉成十進位後,那如果有十進位數值轉為二進位的環境時,該如何計算? 剛剛是乘法,現在則是除法就對了!我們同樣的使用十進位的106轉成二進位來測試一下好了:

二進位轉十進位
圖0.3.1、十進位轉二進位的方法

最後的寫法就如同上面的紅色箭頭,由最後的數字向上寫,因此可得到1101010的數字囉! 這些數字的轉換系統是非常重要的,因為電腦的加減乘除都是使用這些機制來處理的! 有興趣的朋友可以再參考一下其他計算計概論的書籍中,關於1的補數/2的補數等運算方式喔!



0.3.2 文字編碼系統

既然電腦都只有記錄0/1而已,甚至記錄的資料都是使用byte/bit等單位來記錄的,那麼文字該如何記錄啊? 事實上文字檔案也是被記錄為0與1而已,而這個檔案的內容要被取出來查閱時,必須要經過一個編碼系統的處理才行。 所謂的『編碼系統』可以想成是一個『字碼對照表』,他的概念有點像底下的圖示:

編碼表
圖0.3.2、資料參考編碼表的示意圖

當我們要寫入檔案的文字資料時,該文字資料會由編碼對照表將該文字轉成數字後,再存入檔案當中。 同樣的,當我們要將檔案內容的資料讀出時,也會經過編碼對照表將該數字轉成對應的文字後,再顯示到螢幕上。 現在你知道為何瀏覽器上面如果編碼寫錯時,會出現亂碼了嗎?這是因為編碼對照表寫錯, 導致對照的文字產生誤差之故啦!

常用的英文編碼表為ASCII系統,這個編碼系統中, 每個符號(英文、數字或符號等)都會佔用1bytes的記錄, 因此總共會有28=256種變化。至於中文字當中的編碼系統早期最常用的就是big5這個編碼表了。 每個中文字會佔用2bytes,理論上最多可以有216=65536,亦即最多可達6萬多個中文字。 但是因為big5編碼系統並非將所有的位元都拿來運用成為對照,所以並非可達這麼多的中文字碼的。 目前big5僅定義了一萬三千多個中文字,很多中文利用big5是無法成功顯示的~所以才會有造字程式說。

big5碼的中文字編碼對於某些資料庫系統來說是很有問題的,某些字碼例如『許、蓋、功』等字, 由於這幾個字的內部編碼會被誤判為單/雙引號,在寫入還不成問題,在讀出資料的對照表時, 常常就會變成亂碼。不只中文字,其他非英語系國家也常常會有這樣的問題出現啊!

為了解決這個問題,由國際組織ISO/IEC跳出來制訂了所謂的Unicode編碼系統, 我們常常稱呼的UTF8或萬國碼的編碼就是這個咚咚。因為這個編碼系統打破了所有國家的不同編碼, 因此目前網際網路社會大多朝向這個編碼系統在走,所以各位親愛的朋友啊,記得將你的編碼系統修訂一下喔!


0.4 軟體程式運作

鳥哥在上課時常常會開玩笑的問:『我們知道沒有插電的電腦是一堆廢鐵,那麼插了電的電腦是什麼?』 答案是:『一堆會電人的廢鐵』!這是因為沒有軟體的運作,電腦的功能就無從發揮之故。 就好像沒有了靈魂的軀體也不過就是行屍走肉,重點在於軟體/靈魂囉!所以底下咱們就得要瞭解一下『軟體』是什麼。

一般來說,目前的電腦系統將軟體分為兩大類,一個是系統軟體,一個是應用程式。但鳥哥認為我們還是得要瞭解一下什麼是程式, 尤其是機器程式,瞭解了之後再來探討一下為什麼現今的電腦系統需要『作業系統』這玩意兒呢!

0.4.1 機器程式與編譯程式

我們前面談到電腦只認識0與1而已,而且電腦最重要的運算與邏輯判斷是在CPU內部, 而CPU其實是具有微指令集的。因此,我們需要CPU幫忙工作時,就得要參考微指令集的內容, 然後撰寫讓CPU讀的懂的指令碼給CPU執行,這樣就能夠讓CPU運作了。

不過這樣的流程有幾個很麻煩的地方,包括:

  • 需要瞭解機器語言:機器只認識0與1,因此你必須要學習直接寫給機器看的語言! 這個地方相當的難呢!

  • 需要瞭解所有硬體的相關功能函數:因為你的程式必須要寫給機器看, 當然你就得要參考機器本身的功能,然後針對該功能去撰寫程式碼。例如,你要讓DVD影片能夠放映, 那就得要參考DVD光碟機的硬體資訊才行。萬一你的系統有比較冷門的硬體,光是參考技術手冊可能會昏倒~

  • 程式不具有可攜性:每個CPU都有獨特的微指令集,同樣的,每個硬體都有其功能函數。 因此,你為A電腦寫的程式,理論上是沒有辦法在B電腦上面運作的!而且程式碼的修改非常困難! 因為是機器碼,並不是人類看的懂得程式語言啊!

  • 程式具有專一性:因為這樣的程式必須要針對硬體功能函數來撰寫, 如果已經開發了一支瀏覽器程式,想要再開發檔案管理程式時,還是得從頭再參考硬體的功能函數來繼續撰寫, 每天都在和『硬體』挑戰!可能需要天天喝蠻牛了!@_@

那怎麼解決啊?為了解決這個問題,電腦科學家設計出一種讓人類看的懂得程式語言, 然後創造一種『編譯器』來將這些人類能夠寫的程式語言轉譯成為機器能看懂得機器碼, 如此一來我們修改與撰寫程式就變的容易多了!目前常見的編譯器有C, C++, Java, Fortran等等。 機器語言與高階程式語言的差別如下所示:

編譯器的角色
圖0.4.1、編譯器的角色

從上面的圖示我們可以看到高階程式語言的程式碼是很容易察看的!鳥哥已經將程式碼(英文)寫成中文說~ 這樣比較好理解啦!所以這樣已經將程式的修改問題處理完畢了。 問題是,在這樣的環境底下我們還是得要考量整體的硬體系統來設計程式喔!

舉例來說,當你需要將運作的資料寫入記憶體中,你就得要自行分配一個記憶體區塊出來讓自己的資料能夠填上去, 所以你還得要瞭解到記憶體的位址是如何定位的,啊!眼淚還是不知不覺的流了下來... 怎麼寫程式這麼麻煩啊!

為了要克服硬體方面老是需要重複撰寫控制碼的問題,所以就有作業系統(Operating System, OS)的出現了! 什麼是作業系統呢?底下就來談一談先!



0.4.2 作業系統

如同前面提到的,在早期想要讓電腦執行程式就得要參考一堆硬體功能函數,並且學習機器語言才能夠撰寫程式。 同時每次寫程式時都必須要重新改寫,因為硬體與軟體功能不見得都一致之故。那如果我能夠將所有的硬體都驅動, 並且提供一個發展軟體的參考介面來給工程師開發軟體的話,那發展軟體不就變的非常的簡單了?那就是作業系統啦!

  • 作業系統核心(Kernel)

作業系統(Operating System, OS)其實也是一組程式, 這組程式的重點在於管理電腦的所有活動以及驅動系統中的所有硬體。 我們剛剛談到電腦沒有軟體只是一堆廢鐵,那麼作業系統的功能就是讓CPU可以開始判斷邏輯與運算數值、 讓主記憶體可以開始載入/讀出資料與程式碼、讓硬碟可以開始被存取、讓網路卡可以開始傳輸資料、 讓所有周邊可以開始運轉等等。總之,硬體的所有動作都必須要透過這個作業系統來達成就是了。

上述的功能就是作業系統的核心(Kernel)了!你的電腦能不能做到某些事情,都與核心有關! 只有核心有提供的功能,你的電腦系統才能幫你完成!舉例來說,你的核心並不支援TCP/IP的網路協定, 那麼無論你購買了什麼樣的網卡,這個核心都無法提供網路能力的!

但是單有核心我們使用者也不知道能作啥事的~因為核心主要在管控硬體與提供相關的能力(例如存取硬碟、網路功能、CPU資源取得等), 這些管理的動作是非常的重要的,如果使用者能夠直接使用到核心的話,萬一使用者不小心將核心程式停止或破壞, 將會導致整個系統的崩潰!因此核心程式所放置到記憶體當中的區塊是受保護的! 並且開機後就一直常駐在記憶體當中。

Tips鳥哥的圖示 所以整部系統只有核心的話,我們就只能看著已經準備好運作(Ready)的電腦系統,但無法操作他! 好像有點望梅止渴的那種感覺啦!這個時候就需要軟體的幫忙了!

  • 系統呼叫(System Call)

既然我的硬體都是由核心管理,那麼如果我想要開發軟體的話,自然就得要去參考這個核心的相關功能! 唔!如此一來不是從原本的參考硬體函數變成參考核心功能,還是很麻煩啊!有沒有更簡單的方法啊!

為了解決這個問題,作業系統通常會提供一整組的開發介面給工程師來開發軟體! 工程師只要遵守該開發介面那就很容易開發軟體了!舉例來說,我們學習C程式語言只要參考C程式語言的函式即可, 不需要再去考量其他核心的相關功能,因為核心的系統呼叫介面會主動的將C程式語言的相關語法轉成核心可以瞭解的任務函數, 那核心自然就能夠順利運作該程式了!

如果我們將整個電腦系統的相關軟/硬體繪製成圖的話,他的關係有點像這樣:

作業系統的角色
圖0.4.2、作業系統的角色

電腦系統主要由硬體構成,然後核心程式主要在管理硬體,提供合理的電腦系統資源分配(包括CPU資源、記憶體使用資源等等), 因此只要硬體不同(如x86架構與RISC架構的CPU),核心就得要進行修改才行。 而由於核心只會進行電腦系統的資源分配,所以在上頭還需要有應用程式的提供,使用者才能夠操作系統的。

為了保護核心,並且讓程式設計師比較容易開發軟體,因此作業系統除了核心程式之外,通常還會提供一整組開發介面, 那就是系統呼叫層。軟體開發工程師只要遵循公認的系統呼叫參數來開發軟體,該軟體就能夠在該核心上頭運作。 所以你可以發現,軟體與核心有比較大的關係,與硬體關係則不大!硬體也與核心有比較大的關係! 至於與使用者有關的,那就是應用程式啦!

Tips鳥哥的圖示 在定義上,只要能夠讓電腦硬體正確無誤的運作,那就算是作業系統了。所以說, 作業系統其實就是核心與其提供的介面工具,不過就如同上面講的,因為最陽春的核心缺乏了與使用者溝通的親和介面, 所以在目前,一般我們提到的『作業系統』都會包含核心與相關的使用者應用軟體呢!

簡單的說,上面的圖示可以帶給我們底下的概念:

  • 作業系統的核心層直接參考硬體規格寫成, 所以同一個作業系統程式不能夠在不一樣的硬體架構下運作。舉例來說,個人電腦版的Windows 8.1 不能直接在 ARM 架構 (手機與平板硬體) 的電腦下運作。

  • 作業系統只是在管理整個硬體資源,包括CPU、記憶體、輸入輸出裝置及檔案系統檔。 如果沒有其他的應用程式輔助,作業系統只能讓電腦主機準備妥當(Ready)而已!並無法運作其他功能。 所以你現在知道為何Windows上面要達成網頁影像的運作還需要類似PhotoImpact或Photoshop之類的軟體安裝了吧?

  • 應用程式的開發都是參考作業系統提供的開發介面, 所以該應用程式只能在該作業系統上面運作而已,不可以在其他作業系統上面運作的。 現在您知道為何去購買線上遊戲的光碟時,光碟上面會明明白白的寫著該軟體適合用於哪一種作業系統上了吧? 也該知道某些遊戲為何不能夠在Linux上面安裝了吧?
  • 核心功能

既然核心主要是在負責整個電腦系統相關的資源分配與管理,那我們知道其實整部電腦系統最重要的就是CPU與主記憶體, 因此,核心至少也要有這些功能的:

  • 系統呼叫介面(System call interface)
    剛剛談過了,這是為了方便程式開發者可以輕易的透過與核心的溝通,將硬體的資源進一步的利用, 於是需要有這個簡易的介面來方便程式開發者。

  • 程序管理(Process control)
    總有聽過所謂的『多工環境』吧?一部電腦可能同時間有很多的工作跑到CPU等待運算處理, 核心這個時候必須要能夠控制這些工作,讓CPU的資源作有效的分配才行!另外, 良好的CPU排程機制(就是CPU先運作那個工作的排列順序)將會有效的加快整體系統效能呢!

  • 記憶體管理(Memory management)
    控制整個系統的記憶體管理,這個記憶體控制是非常重要的,因為系統所有的程式碼與資料都必須要先存放在記憶體當中。 通常核心會提供虛擬記憶體的功能,當記憶體不足時可以提供記憶體置換(swap)的功能哩。

  • 檔案系統管理(Filesystem management)
    檔案系統的管理,例如資料的輸入輸出(I/O)等等的工作啦!還有不同檔案格式的支援啦等等, 如果你的核心不認識某個檔案系統,那麼您將無法使用該檔案格式的檔案囉!例如:Windows 98就不認識NTFS檔案格式的硬碟;

  • 裝置的驅動(Device drivers)
    就如同上面提到的,硬體的管理是核心的主要工作之一,當然囉,裝置的驅動程式就是核心需要做的事情啦! 好在目前都有所謂的『可載入模組』功能,可以將驅動程式編輯成模組,就不需要重新的編譯核心啦! 這個也會在後續的第十九章當中提到的!
Tips鳥哥的圖示 事實上,驅動程式的提供應該是硬體廠商的事情!硬體廠商要推出硬體時,應該要自行參考作業系統的驅動程式開發介面, 開發完畢後將該驅動程式連同硬體一同販賣給使用者才對!舉例來說,當你購買顯示卡時, 顯示卡包裝盒都會附上一片光碟,讓你可以在進入Windows之後進行驅動程式的安裝啊!

  • 作業系統與驅動程式

老實說,驅動程式可以說是作業系統裡面相當重要的一環了!不過,硬體可是持續在進步當中的! 包括主機板、顯示卡、硬碟等等。那麼比較晚推出的較新的硬體,例如顯示卡,我們的作業系統當然就不認識囉! 那作業系統該如何驅動這塊新的顯示卡?為了克服這個問題,作業系統通常會提供一個開發介面給硬體開發商, 讓他們可以根據這個介面設計可以驅動他們硬體的『驅動程式』,如此一來,只要使用者安裝驅動程式後, 自然就可以在他們的作業系統上面驅動這塊顯示卡了。

驅動程式與作業系統的關係
圖0.4.3、驅動程式與作業系統的關係

由上圖我們可以得到幾個小重點:

  • 作業系統必須要能夠驅動硬體,如此應用程式才能夠使用該硬體功能;
  • 一般來說,作業系統會提供開發介面,讓開發商製作他們的驅動程式;
  • 要使用新硬體功能,必須要安裝廠商提供的驅動程式才行;
  • 驅動程式是由廠商提供的,與作業系統開發者無關。

所以,如果妳想要在某個作業系統上面安裝一張新的顯示卡,那麼請要求該硬體廠商提供適當的驅動程式吧! ^_^! 為什麼要強調『適當的驅動程式』呢? 因為驅動程式仍然是依據作業系統而開發的, 所以,給Windows用的驅動程式當然不能使用於Linux的環境下了。



0.4.3 應用程式

應用程式是參考作業系統提供的開發介面所開發出來軟體,這些軟體可以讓使用者操作,以達到某些電腦的功能利用。 舉例來說,辦公室軟體(Office)主要是用來讓使用者辦公用的;影像處理軟體主要是讓使用者用來處理影音資料的; 瀏覽器軟體主要是讓使用者用來上網瀏覽用的等等。

需要注意的是,應用程式是與作業系統有關係的,如同上面的圖示當中的說明喔。因此,如果你想要購買新軟體, 請務必參考軟體上面的說明,看看該軟體是否能夠支援你的作業系統啊!舉例來說,如果你想要購買線上遊戲光碟, 務必參考一下該光碟是否支援你的作業系統,例如是否支援Windows XP/Windows Vista/MAC/Linux等等。 不要購買了才發現該軟體無法安裝在你的作業系統上喔!

我們拿常見的微軟公司的產品來說明。妳知道Windows 8.1, Office 2013之間的關係了嗎?

  • Windows 8.1 是一套作業系統,他必須先安裝到個人電腦上面,否則電腦無法開機運作;
  • Windows 7 與Windows 8.1 是兩套不同的作業系統,所以能在Win 7上安裝的軟體不見得可在Win 8.1上安裝;
  • Windows 8.1安裝好後,就只能擁有很少的功能,並沒有辦公室軟體;
  • Office 2013是一套應用程式,要安裝前必須要瞭解他能在哪些作業系統上面運作。

0.5 重點回顧

  • 計算機的定義為:『接受使用者輸入指令與資料,經由中央處理器的數學與邏輯單元運算處理後,以產生或儲存成有用的資訊』;
  • 電腦的五大單元包括:輸入單元、輸出單元、控制單元、算數邏輯單元、記憶單元五大部分。其中CPU佔有控制、算術邏輯單元,記憶單元又包含主記憶體與輔助記憶體;
  • 資料會流進/流出記憶體是CPU所發佈的控制命令,而CPU實際要處理的資料則完全來自於主記憶體;
  • CPU依設計理念主要分為:精簡指令集(RISC)與複雜指令集(CISC)系統;
  • 關於CPU的時脈部分:外頻指的是CPU與外部元件進行資料傳輸時的速度,倍頻則是CPU內部用來加速工作效能的一個倍數, 兩者相乘才是CPU的時脈速度;
  • 新的 CPU 設計中,已經將北橋的記憶體控制晶片整合到 CPU 內,而 CPU 與主記憶體、顯示卡溝通的匯流排通常稱為系統匯流排。 南橋就是所謂的輸入輸出(I/O)匯流排,主要在聯繫硬碟、USB、網路卡等周邊設備;
  • CPU每次能夠處理的資料量稱為字組大小(word size),字組大小依據CPU的設計而有32位元與64位元。 我們現在所稱的電腦是32或64位元主要是依據這個 CPU解析的字組大小而來的!
  • 個人電腦的主記憶體主要元件為動態隨機存取記憶體(Dynamic Random Access Memory, DRAM), 至於CPU內部的第二層快取則使用靜態隨機存取記憶體(Static Random Access Memory, SRAM);
  • BIOS(Basic Input Output System)是一套程式,這套程式是寫死到主機板上面的一個記憶體晶片中, 這個記憶體晶片在沒有通電時也能夠將資料記錄下來,那就是唯讀記憶體(Read Only Memory, ROM);
  • 目前主流的外接卡界面大多為 PCIe 界面,且最新為 PCIe 3.0,單通道速度高達 1GBytes/s
  • 常見的顯示卡連接到螢幕的界面有 HDMI/DVI/D-Sub/Display port 等等。HDMI 可同時傳送影像與聲音。
  • 傳統硬碟的組成為:圓形磁碟盤、機械手臂、 磁碟讀取頭與主軸馬達所組成的,其中磁碟盤的組成為磁區、磁軌與磁柱;
  • 磁碟連接到主機板的界面大多為 SATA 或 SAS,目前桌機主流為 SATA 3.0,理論極速可達 600Mbytes/s。
  • 常見的文字編碼為 ASCII,繁體中文編碼主要有 Big5 及 UTF8 兩種,目前主流為 UTF8
  • 作業系統(Operating System, OS)其實也是一組程式, 這組程式的重點在於管理電腦的所有活動以及驅動系統中的所有硬體。
  • 電腦主要以二進位作為單位,常用的磁碟容量單位為bytes,其單位換算為1 Byte = 8bits。
  • 最陽春的作業系統僅在驅動與管理硬體,而要使用硬體時,就得需要透過應用軟體或者是殼程式(shell)的功能, 來呼叫作業系統操縱硬體工作。目前稱為作業系統的,除了上述功能外,通常已經包含了日常工作所需要的應用軟體在內了。

0.6 本章習題

  • 根據本章內文的說明,請找出目前全世界跑的最快的超級電腦的:(1)系統名稱 (2)所在位置 (3)使用的 CPU 型號與規格 (4)總共使用的 CPU 數量 (5)全功率操作 1 天時,可能耗用的電費 (請上台電網站查詢相關電價來計算)。

  • 動動手實作題:假設你不知道你的主機內部的各項元件資料,請拆開你的主機機殼,並將內部所有的元件拆開,並且依序列出:
    • CPU的廠牌、型號、最高時脈;
    • 主記憶體的容量、介面 (DDR/DDR2/DDR3 等);
    • 顯示卡的介面 (AGP/PCIe/內建) 與容量
    • 主機板的廠牌、南北橋的晶片型號、BIOS的廠牌、有無內建的網卡或音效卡等
    • 硬碟的連接介面 (SATA/SAS等)、硬碟容量、轉速、緩衝記憶體容量等。
    然後再將他組裝回去。注意,拆裝前務必先取得你主機板的說明書,因此你可能必須要上網查詢上述的各項資料。

  • 利用軟體:假設你不想要拆開主機機殼,但想瞭解你的主機內部各元件的資訊時,該如何是好? 如果使用的是Windows作業系統,可使用CPU-Z(http://www.cpuid.com/cpuz.php)這套軟體,如果是Linux環境下,可以使用『cat /proc/cpuinfo』 及使用『lspci』來查閱各項元件的型號;

  • 如本章圖0.2.1所示,找出第四代 Intel i7 4790 CPU 的: (1)與南橋溝通的 DMI 頻寬有多大? (2)第二層快取的容量多大? (3)最大 PCIe 通道數量有多少?並據以說明主機板上面 PCIe 插槽的數量限制。(請 google 此 CPU 相關資料即可發現)

  • 由 google 查詢 Intel SSD 520 固態硬碟相關的功能表,了解 (1)連接界面、(2)最大讀寫速度及 (3)最大隨機讀寫資料 (IOPS) 的數據。

0.7 參考資料與延伸閱讀

2008/07/22:利用暑假期間足足寫了快要兩個星期這篇才寫完!好多圖示都不知道如何呈現比較漂亮~@_@
2008/07/29:又加入了SATA/IDE的連線排線,還有一些額外的圖示。
2009/08/03:加入電源供應器是心臟一詞的說明
2009/08/03:更正原本 BIOS 只放於 ROM 的資料,新的 BIOS 通常放於 EEPROM 或 Flash 記憶體中。
2010/10/19:感謝討論區網友 186003415a 兄的回報,發現 DDR II 的外頻寫錯了!是 200MHz 才對喔!
2015/04/16:舊版針對 CentOS5 時所作的舊版文章:舊的計概內容
2015/04/16:刪除了一些較舊的資料,如 IDE,增加了不少新的東西!並感謝討論區 littlebat 兄的意見,修改了不少的磁碟資料
2008/07/22以來統計人數
計數器
>>
HOME
PrePage
NextPage
   http://linux.vbird.org is designed by VBird during 2001-2015.