{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## [X-Village] Lesson 02 - 淺談電腦基本運作\n", "by 梁祐承" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### 基本硬體組件\n", "- 主機版 Motherboard\n", "- 中央處理器 CPU\n", "- 記憶體 RAM\n", "- 儲存裝置 Storage\n", "- I/O 裝置\n", "- 圖形處理器 GPU" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### 主機版 Motherboard\n", "- 連接所有組件,提供各種界面\n", "- 須根據所搭配的晶片組使用相應的 CPU / RAM" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "![](http://www.coolaler.com.tw/adrien/news/1106/110621_gigabyte.jpg)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### 中央處理器 CPU\n", "CPU是電腦的核心,負責大部分的計算工作\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### Controller & ALU\n", "CPU具有各種不同用途的處理單元,比較重要的有以下兩項:\n", "- 控制單元 CU (Control Unit)\n", " - 負責解讀指令,並讓ALU進行運算\n", "- 算術邏輯單元 ALU (Arithmetic Logic Unit)\n", " - 進行加法/減法/AND/OR等運算" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 二進位 Binary\n", "電腦用二進位形式(0與1)理解所有數值:\n", "\n", "| |$$2^3$$|$$2^2$$|$$2^1$$|$$2^0$$|\n", "| -| -| -| -| -|\n", "| 13| 1| 1| 0| 1|\n", "| 6| 0| 1| 1| 0|\n", "\n", "CPU每次能處理的資料大小有限,所謂的32位元/64位元CPU的差異就是這個" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 二進位 Binary(續)\n", "除了最基本的無號整數(int)以外,還有很多其他的表示方法(有號數/IEEE-754浮點數)\n", "其中上頁舉例的 4bit 無號整數能表示的範圍是`0-15`, 相當於$$0~2^4-1$$\n", "\n", "$Q1:$ 一個`16bit int`最大可以表示的數是多少?`8964`這個數字該怎麼表示?" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Max of 16-bit int is: 65535\n", "Value of var in decimal is: 8964\n", "Value of var in binary is: 0b10001100000100\n" ] } ], "source": [ "var = 8964\n", "print('Max of 16-bit int is:', int(0b1111111111111111))\n", "print('Value of var in decimal is:', var)\n", "print('Value of var in binary is:', bin(var))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 邏輯閘\n", "CPU透過邏輯閘的組合進行二進位運算,邏輯閘由電晶體構成\n", "![](https://i.imgur.com/kYDp7Wd.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 影響CPU效能的因素\n", "- CPU頻率\n", " - CPU和其他組件需要時鐘訊號(clock)進行同步運作,這個訊號的頻率就稱為工作頻率,可以理解為CPU每秒進行運算的次數\n", " - 目前主流CPU的運作頻率大約在3-5GHz\n", " - 以intel i7-8086K為例:[Link](https://ark.intel.com/zh-tw/products/148263/Intel-Core-i7-8086K-Processor-12M-Cache-up-to-5_00-GHz)\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 摩爾定律:積體電路上可容納的電晶體數目,約每隔18個月增加一倍\n", "\n", "![](https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Transistor_Count_and_Moore%27s_Law_-_2011.svg/350px-Transistor_Count_and_Moore%27s_Law_-_2011.svg.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 以下為進階內容,可供參考" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 電晶體 MOSFET\n", "矽晶圓上的半導體組成電晶體,其中通道長度就是常聽到的半導體製程(14nm/7nm 等)\n", "![](https://upload.wikimedia.org/wikipedia/commons/8/8b/MOSFET-Cross.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 積體電路 IC(integrated circuit)\n", "MOSFET與電路組合形成,依照規模可以分成幾種:\n", "- 小型積體電路 SSI(Small Scale Integration)邏輯閘10個以下或 電晶體100個以下。\n", "- 中型積體電路 MSI(Medium Scale Integration)邏輯閘11~100個或 電晶體101~1k個。\n", "- 大型積體電路 LSI(Large Scale Integration)邏輯閘101~1k個或 電晶體1,001~10k個。\n", "- 超大型積體電路 VLSI(Very large scale integration)邏輯閘1,001~10k個或 電晶體10,001~100k個。\n", "- 極大型積體電路 ULSI(Ultra Large Scale Integration)邏輯閘10,001~1M個或 電晶體100,001~10M個。" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 指令集\n", "CPU看得懂的二進位指令集合稱為指令集,常見的有 x86 / x86_64(AMD64) / ARM / MIPS 等等" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Memory hierarchy\n", "- 電腦中具有各種不同容量/速度/價錢/特性的記憶體,根據需求使用\n", "![](https://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/ComputerMemoryHierarchy.svg/826px-ComputerMemoryHierarchy.svg.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "#### 記憶體 RAM (Random Access Memory)\n", "- 隨機存取:不論存取何處的資料,所需的動作相同\n", "- 程式運作中存放指令和資料的地點\n", " - 資料包含程式運作資訊/變數等等\n", "- 斷電後資料消失,為揮發性記憶體\n", "- 目前個人電腦主流約為8-16GB" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "#### 磁碟 Drive\n", "- 用於存放靜態資料,例如文件/影片/照片/程式執行檔與原始碼...\n", "- 斷電後資料保留,為非揮發性記憶體\n", "- HDD / SSD\n", " - 機械硬碟 HDD (Hard Disk Drive) 透過磁力儲存資料,讀取時碟片需要旋轉,因此無法隨機存取\n", " - 固態硬碟 SSD (Solid State Drive) 透過電位儲存資料,速度較快但單位成本高\n", " - 目前個人電腦主流容量:HDD約1-4TB, SSD約256GB-1TB" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### I/O 裝置\n", "- 電腦與外界溝通的管道,包括鍵盤/滑鼠/螢幕/各種接口等\n", "![](https://i.imgur.com/tfXqAe5.jpg)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 通訊協定 Protocal\n", "- 不同架構的電腦之間進行溝通時,需要統一的資料格式\n", " - 通過網路的HTTP/TCP/UDP協定\n", " - IC間通訊的I2C/UART協定\n", " - 連接週邊裝置的USB協定" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### 圖形處理器 GPU\n", "- 用於處理影像編碼/解碼\n", "- 單一數據計算能力不高,但可以同時做大量計算\n", "- 特別是浮點數計算\n", "- 除了影像之外,也大量用於機器學習" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 基本軟體概念\n", "- 電腦如何啟動\n", "- 作業系統\n", "- 電腦如何執行程式" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### 電腦如何啟動\n", "- Bootstrap\n", "- BIOS\n", "- Bootloader" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### Bootstrap\n", "- \"pulling yourself up by your own bootstraps\"\n", "- 一步步從小到大啟動電腦的過程" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### BIOS (Basic Input/Output System)\n", " - 提供最基本的功能,直接使用CPU/記憶體/IO裝置\n", " - 在開機過程中第一個被執行\n", "![](https://i.imgur.com/aXHpTUc.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### Bootloader\n", "- UEFI (GPT) / legacy (MBR)\n", "- BIOS → Bootloader → OS\n", "- GRUB" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### 作業系統 OS(Operating System)\n", "- 核心 Kernel\n", " - 與硬體溝通,包含各種驅動程式\n", " - 常見的有Linux核心 / Windows的NT核心\n", "- Shell\n", " - 與使用者和Kernel溝通,提供操作界面\n", " - 圖形化使用者界面 GUI(Graphics User Interface)\n", " - 文字界面 CLI(Command Line Interface)\n", "![](https://i.imgur.com/zC3ABgw.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### 電腦如何執行程式\n", "- 可執行檔 Executable file\n", "- 編譯語言/直譯語言\n", "- Runtime\n", "- VM\n", "- PATH" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 可執行檔 Executable file\n", "- 在Windows下為exe/bat檔等等,在linux下就是具有執行權限的檔案\n", "- 可以是二進位檔,也可以是被其他程式讀取用的腳本(例如Python原始碼)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### 編譯語言/直譯語言\n", "- 編譯語言須先將原始碼經由編譯器轉為其他格式才是可執行檔\n", " - 例如 C/C++/Java/...\n", "- 直譯語言的原始碼本身就可被執行\n", " - 例如 Python/Javascript/Lua/..." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### Runtime\n", "- 程式執行時期需要記憶體/CPU資源\n", "- 編譯語言的二進位檔需要載入到記憶體,直譯語言原始碼也必須被解讀\n", "- 程式語言具有基本函式庫\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### VM\n", "- 部份程式語言為了跨平台相容性,在Runtime多做了一層包裝\n", "- 例如 Java的JVM\n", "- Python也有此特性" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "###### PATH\n", "- 系統尋找執行檔的路徑\n", "- Windows有`C:/Program Files`, Linux有`/usr/bin`" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }