{
"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
}