【傳送門】
Part 1 - 數理基礎篇
Part 2 - 電腦基礎篇上
Part 4 - 電腦基礎篇下
Part 5 - 進階篇上
Part 6 - 進階篇中
Part 7 - 進階篇下

Meow~ 我是清大菸酒貓
我們系上電腦相關的必修課其實可以再細分為硬體類和軟體類
硬體指的就是我們可以看得到,摸得到的電腦元件
軟體則是指無形的,在這些硬體上運作的程式

一般大學的資工系其實通常只會上軟體類的課
但是因為清大資工當初是以硬體起家
所以才會在系定必修中排入了硬體類的課
而上次介紹的課程全部都是屬於硬體類
今天則會介紹一些「介於硬體與軟體」之間的課程

──────────────────────────────────────────────────────────────
二、電腦基礎課程
4. 計算機結構 Computer Architecture

俗稱「Archi」或「阿奇」

還記得我上次介紹的「數位邏輯設計」嗎?
那門課中我們學習了如何使用 Logic Gates 組合出加減乘除的「計算元件」
以及可以記憶 1 跟 0 訊號的「記憶元件」

而 Archi 這門課,教的是在有這些「計算元件」與「記憶元件」的狀況下
我們要如何製作出一個 CPU (Central Processing Unit,中央處理器)

CPU 是甚麼?
有組過電腦的人都知道
通常一台電腦中,除去顯示卡之外
最貴的電腦元件就是 CPU
(會這樣講是因為我的顯卡比 CPU 貴XD)

CPU 是一顆特殊的晶片,大小差不多手掌的一半大
它相當於電腦的大腦,負責電腦裡面大部分資料的計算工作
所有舉凡你看到電腦裡面的程式
像是 PCMan、Skype、LOL、Google Chrome... 等等
都會送到 CPU 去執行

少了 CPU,電腦就無法執行任何程式

CPU 如我一開始所說
裡面所裝的,就是大量的「計算元件」與「記憶元件」
透過特殊的組合方式,就可以讓它對多個 0 跟 1 組成的「二進位數字」做各種運算

===== 小知識:二進位 =====
因為電腦裡面的訊號只有 0 跟 1 兩種
所以我們在電腦裡面紀錄數字的時候,也就只能用 0 跟 1 表示

那如果我們要表示 2 以上的數字該怎麼辦?

此時我們就必須要使用兩位的數字來表示
而當第一位的數字超過 1 的時候,我們就要把第二位數字 +1
這就叫「二進位」

就像是我們國小時候學加法那樣,如果一位的數字超過 9
那麼就必須要把該位歸 0,然後下一位要 +1
這就叫「十進位」

而電腦正因為其特性的關係,必須要使用二進位來表示數字
因此十進位中的 2 在二進位就是 10
十進位中的 4 在二進位就是 100
===========================

通常現在的 CPU 都有能力處理 32 bits (位元) 的數字
bits 指的就是二進位數字的「位數」
換句話說,現在的 CPU 可以一次對 32 個二進位數字做運算

那 CPU 通常都做甚麼事情呢?
不外乎就是以下幾件事情:
- 將兩個 32 bits 的數字加減乘除
- 將一個 32 bits 的數字從一個地方搬動到另一個地方
- 比較兩個 32 bits 的數字誰比較大
- 對兩個 32 bits 的數字做邏輯運算 (AND, OR, XOR...)
- 把一個 32 bits 的數字裡面往右或往左移幾位

基本上,CPU 的工作就是這樣
你可能會想說:「殺虫?這樣就可以跑程式?」
沒錯!CPU 只要做這些事情
就可以讓你打 LOL、看連續劇、看 Dcard、看 >///< 片...
不過要注意的是,現在的 CPU 可以一秒鐘就做十億次上面的動作 (加減乘除)

因此只要修這門課,那就可以了解如何製作出一顆具有上述功能的 CPU 了!


Ext. 番外 - 組合語言 Assembly Language

有些學校的資工系還會開設組合語言的課程
那甚麼是組合語言呢?

基本上,我們知道 CPU 可以做很多數字的計算工作
那麼它要怎麼知道現在應該做甚麼事情呢?

這就要透過「組合語言」來辦到啦!

組合語言其實就是一堆指令
人類透過把這些指令送給 CPU
讓 CPU 知道現在該做甚麼事情

例如,下面是一條 x86 組合語言的指令
「ADD EAX, imm32」
意思是「把 EAX(一個存數字的地方) 中的數字拿出來,加上 32 之後再存回去」
CPU 看到後就會依照指令的意義執行

而組合語言就是在學習如何使用這些指令

因為我們學校會在計算機結構中順便教組合語言
所以就沒有特別獨立開一門課


5. 作業系統 Operating System

計算機結構中,我們了解了 CPU 運作的原理
以及如何用 CPU 來做數字的計算
那接下來電腦就可以運作了嗎?

不不不~ 沒這麼容易

CPU 雖然強大,但是終究是一個只會加減乘除跟搬東西的元件
如果我們想要在它上面執行程式
那我們還有很多問題要處理

有甚麼問題?舉個例子來說
如果我們現在有兩個程式 A, B 要執行
要如何決定誰先執行呢?
你可以先讓 A 執行,再讓 B 跑
也可以先讓 B 執行,再讓 A 跑
也或許可以先讓 A 跑一下,再讓 B 跑一下,再給 A 跑一下... (Round-Robin)

但是無論要如何執行,總要有人管理這一切吧?

此時,作業系統 (以下簡稱 OS) 就登場了!

OS 是一種特殊的軟體程式
它的工作之一就是幫你管理程式的執行順序
除此之外,它還會幫你管理:
- 每個程式可以使用你多少的記憶體
- 管理電腦裡面的檔案
- 鍵盤、滑鼠輸入的訊號要傳給誰處理
- 聲音、影像訊號要送到哪裡去
....

基本上,一堆你不希望看見的事情
OS 都會幫你處理
你可以把它想成是電腦元件的管理員
也可以說它是電腦程式與硬體的協調者

你們現在常看到的 Windows 就是一種 OS
另外還有 Linux、iOS、Android... 等等
這些 OS 都有一個共通點
就是你如果你的電腦沒有灌這些東西的話,那你就只能盯著黑色的畫面乾瞪眼
因為根本沒有 OS 幫你協調程式與硬體的運作

而作業系統這門課,就是在學習 OS 的運作原理
以及它會用甚麼方式幫你管理電腦
──────────────────────────────────────────────────────────────

這些課程就是在介紹「軟體與硬體之間的過渡帶」
也是資工系中很重要的基礎必修課程
下次開始就會介紹程式設計囉!

如果有問題也歡迎提問~

清大菸酒貓

共 13 則回應

2
請問資工和資管所學的差在哪?
1
資工寫程式
資管偏應用一些套裝軟體去完成其他事情
應該吧
1
推同系菸酒貓
這系列內容真的很仔細

(也像重新再次上過這些課的第一堂課XDDDD
1
資工就是學習跟電腦有關的知識
資管則比較偏管理,因此他們會額外修經濟學、管理學...等課
但是也是會學程式設計,只是不會像資工學那麼深

差... 不多吧

感謝同系同學支持XD

清大菸酒貓
0
大推~
從此對電腦…不…是對資工肅然起敬!

-語璇
1
資管也是寫程式 但只接觸高階語言
不會接觸到硬體
0
硬體方面比較偏電機領域

-W.H.H
0
compiler 在哪??

- - 帥版蝦 - -
1
想到一個地方
現在新的電腦沒有灌OS還是有畫面阿XDD
圖形化的BIOS介面或是圖形化的UEFI 都有漂亮的畫面阿 :))
0
每個系都有其專業的地方吧~
資工系就是電腦這樣
國文系也有令我們感到厲害之處

恩恩~ 其實會接觸硬體的資工系真的不常見

確實

其實是有開啦~ 但是不是必修
所以應該不會講

哈哈~ 確實現在的 BIOS 比較先進一點
而且不用灌 OS 也能進 BIOS
這確實是我描述的不太好XD
0
怎麼覺得每一篇都很像計概XD
0
B5 資管QQ
0
學組語學的超級頭痛
而且學校又放在早八...QQ
馬上回應搶第 14 樓...
回應...