0.1 計算機:輔助人腦的好工具
? ? ? ? 所謂的計算機就是一種計算器,而計算器其實是:『接受用戶輸入指令與數據,經由中央處理器的數學與邏輯單元運算處理后,以產生或儲存成有用的信息』。因此,只要有輸入設備(不管是鍵盤還是觸摸屏)及輸出設備(例如計算機屏幕或直接由打印機打印出來),讓你可以輸入數據使該機器產生信息的,那就是一部計算器了。
? ? ? ? 計算機可以協助人們進行大量的運算!以前如果要計算化學反應式都得要算個老半天,有了計算機仿真軟件后,就有不一樣的情況發生了!以下圖為例,在工作中,有一項是需要將人們排放的空氣污染物帶入計算機模式進行仿真后,計算出可能產生的空氣污染并得到空氣質量狀態,最后經過分析軟件得到各式各樣的圖表。經過這些圖表的解析,就可以讓人們知道什么樣的污染排放來源可能會產生什么樣的空氣質量變化啰。
0.1.1 計算機硬件的五大單元
? ? ? ? 關于計算機的硬件組成部分,其實你可以觀察你的桌面計算機來分析一下,依外觀來說這家伙主要可分為三部分,分別是:
- 輸入單元:包括鍵盤、鼠標、卡片閱讀機、掃描儀、手寫板、觸控屏幕等等一堆;
- 主機部分:這個就是系統單元,被主機機殼保護住了,里面含有一堆板子、CPU 與主存儲器等;
- 輸出單元:例如屏幕、打印機等等
? ? ? ? 我們主要透過輸入設備如鼠標與鍵盤來將一些數據輸入到主機里面,然后再由主機的功能處理成為圖表或文章等信息后,將結果傳輸到輸出設備,如屏幕或打印機上面。那主機里面含有什么組件呢?如果你曾經拆開過計算機主機機殼(包括拆開你的智能型手機也一樣喔!),會發現其實主機里面最重要的就是一片主板,上面安插了中央處理器(CPU)以及主存儲器、硬盤(或記憶卡)還有一些適配卡裝置而已。當然大部分智能型手機是將這些組件直接焊接在主板上面而不是插卡啦!
? ? ? ? 整部主機的重點在于中央處理器(Central Processing Unit, CPU),CPU為一個具有特定功能的芯片,里頭含有微指令集,如果你想要讓主機進行什么特異的功能,就得要參考這顆CPU是否有相關內建的微指令集才可以。由于CPU 的工作主要在于管理與運算,因此在CPU內又可分為兩個主要的單元,分別是:算數邏輯單元與控制單元。(注3)其中算數邏輯單元主要負責程序運算與邏輯判斷,控制單元則主要在協調各周邊組件與各單元間的工作。
? ? ? ? 既然CPU的重點是在進行運算與判斷,那么要被運算與判斷的數據是從哪里來的?CPU 讀取的數據都是從主存儲器來的!主存儲器內的數據則是從輸入單元所傳輸進來!而CPU處理完畢的數據也必須要先寫回主存儲器中,最后數據才從主存儲器傳輸到輸出單元。
? ? ? ? 為什么我們都會說,要加快系統效能,通常將內存容量加大就可以獲得相當好的成效?如同下圖以及上面的說明,因為所有的數據都要經過主存儲器的傳輸,所以內存的容量如果太小,數據快取就不足~影響效能相當大啊!尤其針對Linux 作為服務器的環境下!這點要特別記憶喔!
? ? ? ? 綜合上面所說的,我們會知道其實計算機是由幾個單元所組成的,包括輸入單元、輸出單元、CPU內部的控制單元、算數邏輯單元與主存儲器五大部分。這幾個東西的相關性如下所示:
圖0.1.2、計算機的五大單元
? ? ? ? 上面圖標中的『系統單元』其實指的就是計算機機殼內的主要組件,而重點在于CPU 與主存儲器。特別要看的是實線部分的傳輸方向,基本上數據都是流經過主存儲器再轉出去的!至于數據會流進/流出內存則是CPU所發布的控制命令!而CPU實際要處理的資料則完全來自于主存儲器(不管是程序還是一般文件數據)!這是個很重要的概念喔!這也是為什么當你的內存不足時,系統的效能就很糟糕!也是為什么現在人們買智能型手機時,對于可用內存的要求都很高的原因!
? ? ? ? 而由上面的圖示我們也能知道,所有的單元都是由CPU內部的控制單元來負責協調的,因此CPU是整個計算機系統的最重要部分!那么目前世界上有哪些主流的CPU 呢?是否剛剛我們談到的硬件內全部都是相同的CPU 架構呢?底下我們就來談一談。
0.1.2 一切設計的起點:CPU的架構
? ? ? ? 如前面說過的,CPU其實內部已經含有一些微指令,我們所使用的軟件都要經過CPU內部的微指令集來達成才行。那這些指令集的設計主要又被分為兩種設計理念,這就是目前世界上常見到的兩種主要CPU 架構,分別是:精簡指令集(RISC)與復雜指令集(CISC)系統。底下我們就來談談這兩種不同CPU 架構的差異啰!
- 精簡指令集(Reduced Instruction Set Computer, RISC)
? ? ? ?這種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):
? ? ? ? 與RISC不同的,CISC在微指令集的每個小指令可以執行一些較低階的硬件操作,指令數目多而且復雜,每條指令的長度并不相同。因為指令執行較為復雜所以每條指令花費的時間較長,但每條個別指令可以處理的工作較為豐富。常見的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架構的CPU。
? ? ? ?由于AMD、Intel、VIA 所開發出來的x86架構CPU被大量使用于個人計算機(Personal computcr)用途上面,因此,個人計算機常被稱為x86架構的計算機!那為何稱為x86架構(注8)呢?這是因為最早的那顆Intel發展出來的CPU代號稱為8086,后來依此架構又開發出80286,80386..,因此這種架構的CPU就被稱為x86架構了。
? ? ? ?在2003年以前由Intel所開發的x86架構CPU由8位升級到16、32位,后來AMD依此架構修改新一代的CPU為64位,為了區別兩者的差異,因此64位的個人計算機CPU又被統稱為x86_64的架構喔!
? ? ? ? 所謂的位指的是CPU一次數據讀取的最大量!64位CPU代表CPU一次可以讀寫64bits這么多的數據,32位CPU則是CPU一次只能讀取32位的意思。因為CPU讀取數據量有限制,因此能夠從內存中讀寫的數據也就有所限制。所以,一般32位的CPU所能讀寫的最大數據量,大概就是4GB左右。
? ? ? ? 那么不同的x86架構的CPU有什么差異呢?除了CPU的整體結構(如第二層快取、每次運作可執行的指令數等)之外,主要是在于微指令集的不同。新的x86的CPU大多含有很先進的微指令集,這些微指令集可以加速多媒體程序的運作,也能夠加強虛擬化的效能,而且某些微指令集更能夠增加能源效率,讓CPU耗電量降低呢!由于電費越來越高,購買計算機時,除了整體的效能之外,節能省電的CPU 特色也可以考慮喔!
例題:
最新的Intel/AMD的x86架構中,請查詢出多媒體、虛擬化、省電功能各有哪些重要的微指令集?
(僅供參考)
答:
1、多媒體微指令集: MMX,SSE, SSE2,SSE3,SSE4,AMD-3DNow!
2、虛擬化微指令集: Intel-VT,AMD-SVM
3、省電功能: Intel-SpeedStep,AMD-PowerNow!
4、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:/wwwnchc.org.tw的介紹!至于全世界最快速的前500大超級計算機,則請參考:http;://www.top500.org。
- 大型計算機(Mainframe Computer):大型計算機通常也具有數個高速的CPU,功能上雖不及超級計算機,但也可用來處理大量資料與復雜的運算。例如大型企業的主機、全國性的證券交易所等每天需要處理數百萬筆數據的企業機構,或者是大型企業的數據庫服務器等等。
- 迷你計算機(Minicomputer):迷你計算機仍保有大型計算機同時支持多用戶的特性,但是主機可以放在一般作業場所,不必像前兩個大型計算機需要特殊的空調場所。通常用來作為科學研究、工程分析與工廠的流程管理等。
- 工作站(Workstation):工作站的價格又比迷你計算機便宜許多,是針對特殊用途而設計的計算機。在個人計算機的效能還沒有提升到目前的狀況之前,工作站計算機的性能/價格比是所有計算機當中較佳的,因此在學術研究與工程分析方面相當常見。
- 微電腦(Microcomputer):個人計算機就屬于這部份的計算機分類,也是我們本章主要探討的目標!體積最小,價格最低,但功能還是五臟俱全的!大致又可分為桌上型、筆記型等等。
? ? ? ? 若光以效能來說,目前的個人計算機效能已經夠快了,甚至已經比工作站等級以上的計算機指令周期還要快!但是工作站計算機強調的是穩定不當機,并且運算過程要完全正確,因此工作站以上等級的計算機在設計時的考慮與個人計算機并不相同啦!這也是為啥工作站等級以上的計算機售價較貴的原因。
0.1.6 計算機上面常用的計算單位(容量、速度等)
0.1.6.1 容量單位:
? ? ? ? 計算機對數據的判斷主要依據有沒有通電來記錄信息,所以理論上對于每一個紀錄單位而言,它只認識0與1而已。0/1這個二進制的的單位我們稱為 bit。但 bit實在太小了,所以在儲存數據時每份簡單的數據都會使用到8個bits 的大小來記錄,因此定義出 byte這個單位,他們的關系為:1 Byte= 8 bits
? ? ? ? 不過同樣的,Byte還是太小了,在較大的容量情況下,使用byte 相當不容易判斷數據的大小,舉例來說,1000000 bytes這樣的顯示方式你能夠看得出有幾個零嗎?所以后來就有一些常見的簡化單位表示法,例如K代表1024 byte,M 代表1024K 等。而這些單位在不同的進位制下有不同的數值表示,底下就列出常見的單位與進位制對應:
? ? ? ? 一般來說,文件容量使用的是二進制的方式,所以1GBytes的文件大小實際上為:1024x1024x1024Bytes這么大!速度單位則常使用十進制,例如1GHz就是1000x1000x1000 Hz的意思。
? ? ? ? 那么什么是『進位』呢?以人類最常用的十進制為例,每個『位置』上面最多僅能有一個數值,這個數值不可以比9還要大!那比9還大怎辦?就用『第二個位置來裝一個新的1』!所以,9還是只有一個位置,10則是用了兩個位置了。好了那如果是 16進位怎辦?﹖由于每個位置只能出現一個數值,但是數字僅有0~9而已啊!因此16進位中,就以A代表10的意思,以B代表11的意思,所以16進位就是0-9, a, b, c, d, e,f,有沒有看到,「每個位置最多還是只有一個數值而已』喔!好了,那回來談談二進制。
0.1.6.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],所以才會使用十進制來處理的。相關的硬盤信息在這
一章后面會提到的!