跨出第一步後,剩下的路就會慢慢浮現(圖/出處)
首先從硬體開始,今天聊聊范紐曼架構(Von Neumann architecture)。
背景
史上第一台電腦叫做ENIAC,當初美國為了二戰為了快速計算彈道而產生,基本上看起來就是一台超級無敵大又笨重的計算機,但也畢竟算是我們現在人手一台PC的老祖宗,還是要尊敬一下。它的計算速度比當時機電機器提高了一千倍,這是一個大進展,在那之前沒有任何一台單獨的機器達到過這個速度。
但有個很麻煩的地方:當你要修改程式的時候必須要重新手動調整機器上的線路開關。
兩大原則
為了解決這個問題,范紐曼架構提出了兩個概念:
此外還有一個特點,ENIAC是用十進位制,而程式儲存型電腦是採用二進位編碼。
所以,這樣到底有什麼改變?
來看看wiki怎麼說
藉由創造一組指令集架構,並將所謂的運算轉化成一串程式指令的執行細節,讓此機器更有彈性。藉著將指令當成一種特別型態的靜態資料,一台儲存程式型電腦可輕易改變其程式,並在程式控制下改變其運算內容。
簡單來說內儲程式的設計特色之一就是把CPU跟Memory分開,如此一來,對程式改寫或重用只需要重新跟Memory拿,不影響CPU本身。你能想像在將近80年前修改程式碼是要靠上面手動配置線路的方式嗎?(以我的理解就是這台機器是一台巨大的CPU,依據不同的程式指令,你需要重新手動調配線路)
架構中涵蓋五大單元
網路上其實已經有非常多相關名詞解釋,這裡只做簡單說明,最簡單口訣就是:CPU、Memory、I/O。
控制單元 Control Unit:由計數器、解碼器與暫存器等組成,控制個單元間的運作
運算單元 ALU:算術運算(加、減、乘、除)及邏輯運算(AND、OR、NOT)
儲存單元 Memory Unit:負責儲存程式或資料
輸入設備I:負責將資料、程式及命令的輸入。ex: 鍵盤、滑鼠
輸出設備O:負責輸出電腦所執行的結果。ex: 螢幕、印表機
對應現在的電腦硬體如下圖
單元間的互動
舉例我現在輸入2+2要進行加法運算,首先我們假設已經編譯成可執行檔.exe(電腦看得懂的語言)
以上這樣一圈又稱為一個指令週期(cycle),這個週期只是針對一個指令要完成的一個流程,為CPU和Memory間的互動,並不包含I/O
下一集來聊聊CPU怎麼和memory溝通以及指令週期相關計算
QA時間
所謂「范紐曼瓶頸(von Neumann)」,是描述下列那一種情形?
(A)CPU執行速度的快慢,會影響系統的效能
(B)電腦的記憶體容量有限,會造成程式執行的瓶頸
(C)複雜指令集(Complex Instruction Set Computer, CISC)會造成程式設計者困擾
(D)程式的記憶體參考頻繁,會影響系統執行效能
答案明天揭曉
(104 年 - 國立陽明高中資訊科技概論)
小故事:電腦誕生初期的那個年代工程師竟然大多都是女生?
原來在二戰期間男人們都去打仗了,女生的工作就是計算資料,讓士兵能瞄準目標,而當時有6位女性參與ENIAC項目,且都表現相當出眾
隨著戰爭結束,男性開始回歸社會的工作岡位,女性在當時背負進入家庭就要當好媽媽的形象;此外,當電腦進入家庭時,它以玩具的身份,商業廣告以洗腦的頻率一遍又一遍將玩具打上性別烙印:電腦,男孩的玩具;娃娃,女孩的玩具。
80年代後,女程式設計師的的比例逐漸下滑。
如果對於女性工程師歷史有興趣的,相當推薦一部電影:關鍵少數。
分類會依照第一篇介紹的分類架構來進行
由於是將學習過程記錄下來,如果有任何錯誤歡迎糾正
以下參考連結在學習過程中覺得非常有幫助: