---
# System prepended metadata

title: 電腦
tags: [Technology]

---

# 電腦
###### tags: `Technology`

|Name |Description|
|-----|--------|
|CPU  |主要由**運算器**、**控制器**、**寄存器**(register)三部分组成，目前有許多架構，像是x86、ARM還有較少人用的MIPS、IA64|
|RISC | **Reduced Instruction Set Computer**,精簡指令集,指令集較為精簡，每個指令的執行時間都很短，指令的執行效能較佳；但是若要做複雜的事情，就要由多個指令來完成。甲骨文 (Oracle) 公司的 SPARC 系列、 IBM 公司的 Power Architecture (包括 PowerPC) 系列、與安謀公司 (ARM Holdings) 的 ARM CPU 系列|
|x86  |一個「指令集架構」家族的總稱，x86是複雜指令集(Complex Instruction Set Computer,CISC)，最早的那顆Intel發展出來的CPU代號稱為**8086**|
|TDP  | **Thermal Design Power**，TDP是指讓CPU全速運作時，必須散掉的熱(單位是W)，CPU才不會過熱當機，而這些熱可藉由風扇、熱導管、水冷等各種散熱方式來消除。TDP數值愈低愈好。|
|外頻  |**Bus speed**，CPU「對外」的時脈 |
|FSB  |**Front Side Bus**，中央處理器和北橋晶片間的資料傳遞。現在的x86處理器內建了**記憶體控制器**，FSB已被Intel QPI和AMD HyperTransport取代。|
|Stepping | CPU版本 |
|DDR SDRAM | Double Data Rate Synchronous Dynamic Random Access Memory |
|GT/s| Giga Transmission per second |

## 簡單的比喻
![](https://i.imgur.com/xle9RpO.png)

## 傳統晶片架構
![](https://i.imgur.com/JKMNm8j.png)

## Intel晶片架構
![](https://i.imgur.com/jshbg7M.png)

## CPU
* **FLOPS（floating-point operations per second）**: 估計CPU運算速度的量詞，每秒執行幾次浮點數運算。FLOPS = CPU插槽數 x 每個CPU有幾個核心 x 運行的時脈 x 每個週期做幾次運算
* 歷史
https://www.techapple.com/archives/5232
* Intel
* AMD


### 北橋、南橋
**早期**的晶片組通常分為兩個橋接器來控制各元件的溝通，分別是：
1. **北橋(North Bridge)**
    * 負責連結速度較快的CPU、主記憶體與顯示卡界面等元件
    * 主要包含記憶體控制器(IMU,Integrated Memory Controller)、部分PCIe
    * 架構為: CPU<== 前端匯流排(Front Side Bus,FSB) \==> 北橋 <== 記憶體匯流排(Memory Bus) ==> 記憶體
2. **南橋(South Bridge)**
    * 負責連接速度較慢的裝置介面，包括硬碟、USB、網路卡等等。
    * 又被稱為ICH(I/O Controller Hub)
    * 負責連接各種I/O，其實就是一些頻寬需求沒這麼大的
3. **晶片組(Chipset)**
    * 晶片組是主機板上最大的晶片，傳統上就是北橋晶片+南橋晶片
    * 後來北橋被整合進CPU，晶片組只剩下南橋，Intel也將南橋從ICH改名為**Platform Controller Hub (PCH)**。
    * 目前電腦主機板的主要架構：
CPU <=== 直接通道 ===> 記憶體與顯示卡
↑
**DMI ( DIRECT MEDIA INTERFACE，DMI 匯流排)**
↓
PCH

* 因為所有的設備都得**透過北橋**來連結，因此每個設備的工作頻率應該要相同，於是就有所謂的**外頻**與**倍頻**了。
    * **外頻**指的是CPU與外部元件進行資料傳輸時的速度
    * **倍頻**則是 CPU 內部用來加速工作效能的一個倍數
    * 兩者相乘才是CPU的時脈速度。

- 但如此一來所有的資料都被北橋卡死了，北橋又不可能比 CPU 更快，因此這傢伙常常是系統效能的瓶頸。
- 為了解決這個問題，新的 CPU 設計中， 已經**將北橋記憶體控制器整合到 CPU 內部**
- 而連結CPU與記憶體、顯示卡的控制器的設計，在Intel部份使用**QPI (Quick Path Interconnect)** 與 **DMI** 技術，而AMD部份則使用 **Hyper Transport**了。
目前的主流架構中， 大多**將北橋記憶體控制器整合到CPU封裝當中**了。目前個人電腦的主機板，多為兩顆晶片的設計居多，基本上就能解決大部分事情了。

### 32位元與64位元
* CPU 的各項資料通通得要來自於主記憶體。因此，如果主記憶體能提供給 CPU 的資料量越大的話，當然整體系統的效能應該也會比較快！
* CPU每次能夠處理的資料量稱為字組大小(word size)， 字組大小依據CPU的設計而有**32位元**與**64位元**
* 若為**64位元**且CPU內建的記憶體控制晶片對主記憶體的工作時脈最高可達到**1600MHz**，CPU可以從記憶體中取得的最快頻寬就是 1600MHz * 64bit = 1600MHz * 8 bytes = 12.8Gbyte/s。
* CPU還得另外負責**記憶體定址**，也就是記錄某個資料是放在記憶體哪邊。早期的**32位元**CPU中，CPU所能**看到**的記憶體容量只有$2^{32}=4GB。這也導致32位元的CPU最多只能支援最大到**4GBytes**的記憶體。

### CPU cache
* CPU需要記憶體做資料暫存，但CPU實在太快了，在記憶體裡運算資料還是嫌太慢了，所以現在**CPU都直接在晶片裡內裝記憶體**，也就是**快取**。
* 由於快取記憶體根本就在CPU裡面，時脈和CPU一致，速度飛快。
* 會分成好幾層，L1、L2(第一、第二層快取)等等。L1就是暫存最近執行的資料，這種超高速的快取製作困難，成本極高，量不能太大，通常只有64KB或128KB。而第二層的L2就比較大，放一些較久之前執行的資料，以此類推至記憶體、硬碟。
* 以Intel Core i7-4712MQ這顆CPU為例，有4個core(四核心)，每個core各一個32KB的**L1D Cache (L1資料快取)** 和32KB的**L1I Cache(L1指令快取)** 和256KB的**L2 Cache**，以及總共一個的6MB共享**L3 Cache**。

### Hyper Threading (超執行緒)
* Intel的技術，**Intel® 超執行緒技術(Intel® HT Technology)**，能夠在每個實體核心上提供兩個執行緒，有點像虛擬的雙核心。
* 以Intel Core i7-4712MQ為例，就有四核心，然後每個核心又有2個執行緒，就很像有8個核心

## 主記憶體(main memory)
* 個人電腦的主記憶體主要元件為**動態隨機存取記憶體(Dynamic Random Access Memory, DRAM)**，隨機存取記憶體只有在通電時才能記錄與使用，斷電後資料就消失了。
* DRAM根據技術的更新又分好幾代，而使用上較廣泛的有所謂的**SDRAM**與**DDR SDRAM**兩種
* DDR是所謂的雙倍資料傳送速度 **(Double Data Rate)**，新一代的PC大多使用DDR記憶體了。
* 這是我們平常在電腦中使用的記憶體，更精確的說法應該叫 **「記憶體模組」（Memory Module）**。一個記憶體模組實際上就是由一塊小電路板、再加上幾塊的 DRAM 晶片構成。
![](https://i.imgur.com/uOJsPXf.png)


### 多通道設計
* 為了要加大記憶體的頻寬，晶片組廠商就將兩個主記憶體彙整在一起
* 如果一支記憶體可達64位元，兩支記憶體就可以達到128位元了，這就是雙通道的設計理念。

### DRAM vs. SRAM
* DRAM(Dynamic RAM): 利用**電容**來儲存資料的，也就是藉由判斷電容內的電量多寡來區別0和1，不過在現實中往往會發生**漏電**的現象，一旦時間久了，資料就有可能會消失，因此需要週期性的充電。
* SRAM(Static RAM，靜態隨機存取記憶體): 使用 **flip-flop** 來儲存資料，只要保持通電，裡面儲存的資料就可以恆常保持，然而，當電力供應停止時，SRAM儲存的數據還是會消失（volatile memory）。
* **Main Memory用DRAM**，**Cache用SRAM**，因為SRAM價格較高，不易做成大容量，但他的速度較快， 因此整合到CPU內成為快取記憶體以加快資料的存取。


### 唯讀記憶體 ROM (Read Only Memory)
* 非揮發性記憶體，在沒有通電時也能夠將資料記錄下來
* **CMOS晶片**
    * 用於記錄主機板上面的重要參數的一塊可讀寫的**RAM晶片**
    * 電腦主板一般專門配有CMOS**電池**為其供電。
    * 主要包括系統時間、CPU電壓與頻率、各項設備的I/O位址與IRQ等
* **BIOS(Basic Input Output System)** 
    * 一套**程式**，這套程式是**寫死到主機板上面的一個記憶體晶片**中，這個記憶體通常是ROM或Flash。
    * 能讓系統中所有零件的硬體軟體互相聯繫，是溝通的橋樑
    * 他在**開機**的時候執行，以**載入CMOS當中的參數**，並嘗試呼叫儲存裝置中的開機程式，進一步進入作業系統當中。也可以修改CMOS中的資料。
    * 這裡可以設定許多零件的參數，其中包含超頻跟重灌

## 顯示卡
* 對於圖形影像的顯示扮演相當關鍵的角色
* 顯示卡上面會有一個**記憶體**，因為每個圖像顯示的顏色會佔用掉記憶體
    * 假設你的桌面使用1024x768解析度，且使用全彩(每個像素佔用3bytes的容量)，這個顯示卡至少需要1024x768x3/1024/1024=**2.25Mbytes**的記憶體才能使用這樣的彩度，但如果考慮螢幕的更新率(每秒鐘螢幕的更新次數)，顯示卡的記憶體還是越大越好！
* 顯示卡的『**運算能力**』 :因為遊戲畫面越來越精緻還有3D畫面的需求，顯示卡的運算能力越來越重要，這就是**GPU**。
* 顯示卡的**資料傳輸**:顯示卡主要也是透過CPU的控制晶片來與CPU、主記憶體等溝通，所以資料的傳輸也是越快越好，已由過去的PCI、AGP演進到現在的**PCIe(PCI-Express)**。
    * PCIe是基於現有的PCI系統，只需修改實體層而無須修改軟體就可將現有PCI系統轉換為PCIe。
    * PCIe擁有更快的速率，以取代幾乎全部現有的內部匯流排。
    * PCIe的連接是建立在一個單向的序列的（1-bit）對等連接基礎之上，這稱之為**通道（lane）**，可以有1，2，4，8，16個通道的連結。
    * 用 Serial 的方式傳輸資料
    * 在PCIe 1.0中，為了要將資料編碼，以至於原本8-bit的資料要編碼成10-bit來傳輸(8b/10b)。
    * 預計2021會發展到PCIe 6.0版。

|Version| 時間 | Line編碼 | 原始傳輸率 | 頻寬(x1) | 頻寬(x2)|頻寬(x16)|
|-------|---------|---------|---------|---------|---------|---------|
|1.0 |	2003 | 8b/10b | **2.5 GT/s** | **250 MB/s** | 0.5 GB/s|4 GB/s|
|2.0 |	2007 | 8b/10b | 5 GT/s | 500 MB/s | 1 GB/s|8 GB/s|
|3.0 |	2010 | 128b/130b | 8 GT/s | 984.6 MB/s | 1.97 GB/s|15.8 GB/s|
|4.0 |	2017 | 128b/130b | 16 GT/s | 1969 MB/s | 3.94 GB/s|31.5 GB/s|
|5.0 |	2019 | NRZ 128b/130b | 32 GT/s | 3938 MB/s | 7.88 GB/s|63 GB/s|
|6.0 |	2021 | PAM4&FFC 128b/130b | 64 GT/s | 7877 MB/s | 15.75 GB/s|126.03 GB/s|

> $2500GT/s\times\frac{8}{10}=2Gb/s=250\times8 Mb/s=250 MB/s$

## 硬碟 (Hard Disk Drive,HDD)
![](https://i.imgur.com/aNfRFGE.png)
### 傳輸介面
現在主要分成兩種
* **SATA**（Serial Advanced Technology Attachment）:一般個人電腦 (L型)
![](https://i.imgur.com/3sQxcVB.jpg)

|Version |頻寬 (Gbit/s)|速度 (Mbyte/s)|
|-----|--------|---------|
|SATA 1.0 |	1.5 | 150 |
|SATA 2.0 |	3 | 300 |
|SATA 3.0 |	6 | 700 |

> * 目前市面上多為SATA2和SATA3接口，兩種接口形狀是一樣的，SATA3向下兼容SATA2
> * 以上數值為理論值，實際傳輸速率可能要再打個8折
* **SAS**(Serial Attached SCSI):企業端大型電腦或工作站
    * 傳輸較快，穩定性較高，但比較貴

|Version |頻寬 (Gbit/s)|速度 (Mbyte/s)|
|-----|--------|---------|
|SAS 1 | 3 | 300 |
|SAS 2 | 6 | 600 |
|SAS 3 | 12 | 1200 |

### 磁碟分割表格
* 全新硬碟在裝系統之前，必須對硬碟的分割方式進行選擇，Windows系統使用的磁碟分割表格分為MBR和GPT兩種。
    * **MBR** (Master Boot Record)
        * 只適用於最大容量為2.1TB的硬碟，如果是更大容量的硬碟使用MBR，那麼多出來的部分將無法被識別
        * 只支援最大4個主分割區
        * 舊的BIOS主機板必須搭配採用MBR分割區的硬碟使用，才能安裝並開啟Windows系統。
    * **GPT** (GUID Partition Table)
        * GPT支援硬碟的容量18EB（1EB=1024TB=1048576GB）
        * 最大支援128個分區
        * 使用GPT分割表的硬碟一定要搭配新的UEFI主機板
* EFI系統磁碟分割區 (EFI System Partition, ESP)
    * 在電腦GPT磁碟上成功安裝Windows作業系統時，這時EFI系統分割區（簡稱ESP，EFI System Partition）也會被建立。它需要大約100M或200MB左右
    * ESP主要有啟動程式、裝置驅動程式等等，類似於電腦啟動Windows的接口
* 測試硬碟效能: CrystalDiskMark


## 固態硬碟 (Solid-state disk, SSD)
### 特點
* 傳輸速度快
* 壽命較短
### 傳輸介面
* SATA
* PCIE
![](https://i.imgur.com/5OGPVxO.png)
    * PCIE跟PCI插槽是不一樣的，別搞混了
    * PCIE有四種常見的規格，分別是x1, x2, x4, x16，x16最常拿來插顯卡，而x16向下兼容x8, x4, x1，以此類推
    * 目前市面上常見的是PCIE2.0、PCIE3.0，速度比SATA快很多 (可參考上方的表格)
    * 但目前較少人使用PCIE當作SSD插槽，因為此種SSD雖然速度快但是比較貴
    
* M.2插槽
    * 前身為NGFF(Next Generation Form Factor)，2013才重新命名為M.2
    * 可以透過主機板上的主控晶片，來決定要走PCIE, SATA還是USB通道，自由度較高，但他採用哪一種通道要看主機板的規格
    * 插槽形式有很多種，給SSD使用的主要有B key、M key (判斷方式為防呆孔不一樣)
    ![](https://i.imgur.com/Nkgf2HQ.png)
    * 因此SSD也有B key、M key還有B&M key，B&M Key就是兩個防呆孔都挖掉可以插在B Key和M key的M.2插槽
    ![](https://i.imgur.com/7j3LqYQ.png)
    * 市面上的SSD通常是B&M key採用SATA、M key採用PCIE，單獨B key的SSD幾乎沒有
* 加裝SSD
    *     

### 儲存晶片
* 分為SLC、MLC、TLC、QLC，可以簡單理解成S(單層)、M(雙層)、T(三層)，Q(多層)，以耐用性來說SLC>MLC>TLC>QLC
* 目前市面上大部份的SSD是TLC或QLC顆粒


## 主機板 Mother Board
負責各個電腦元件之間的溝通

### BIOS (Basic Input/Output System)
* 開機程序
![](https://i.imgur.com/OyHpXf4.png)
    * 電源啟動自我檢測POST(Power-On Self Test)
        * 檢查電腦的硬體是否有異常，包括記憶體、CPU、硬碟等等，若有異常會自動中斷開機程序
        * 像是記憶體沒插好，開機時會透過蜂鳴器逼逼叫
    * BOOT order: 決定用哪一顆硬碟來開機
    ![](https://i.imgur.com/fqTNzD8.png)
    * Bootloader: Bootloader（引導）程式及配置文件存於ESP中，其中Win10自帶的Bootloader為**Windows Boot Manager**，ubuntu16.04自帶的Bootloader為**GRUB2**。
* 分類
    * 傳統BIOS
    ![](https://i.imgur.com/vynRfi9.png)
        * 舊型電腦的BIOS
        * 只能用鍵盤操控
        * 只支援純文字介面
        * 只支援MBR開機模式
        
    * UEFI BIOS (Unified Extensible Firmware Interface
    ![](https://i.imgur.com/nVlEugB.png)
        * UEFI就是改良版的BIOS
        * 目前主流電腦都是使用此BIOS
        * 支援滑鼠和鍵盤操控
        * 支援圖形化介面
        * 支援Legacy的CSM(Compatibility Support Module)
            * 主機板改進到UEFI之後，較舊的顯示卡，硬碟等等硬體沒有支援UEFI，就可以使用CSM
            * 在UEFI架構下，透過CSM可以模擬BIOS來相容只支援BIOS開機的裝置，也稱為Legacy模式、LegacyMode、Legacy BIOS。
* 顯卡要可以支援**GOP**才能顯示UEFI的圖形化介面
    * **GOP**: UEFI介面
    * **VBIOS**: 傳統BIOS介面
* Secure boot
    * 最初作用便是防止惡意軟體侵入，改變了開機的檔案
    * 後來Microsoft公司宣布Windows 8作業系統的廠商（OEM廠商）都必須要要開啟「Secure Boot」，並且在主板當中設置win 8或者win 10的公鑰。其目的為為了防止安裝windows作業系統的電腦重裝為其他作業系統（例如linux系統）
    * 微軟當初設計Secure Boot的原本用意可能是出於保證系統安全，但結果似乎成了pc廠商保護市場壟斷、阻礙競爭的一種手段。
    * https://www.openfoundry.org/tw/foss-forum/8937-linus-torvalds-linux-secure-boot-


## 鍵盤
* Reference: https://www.ptt.cc/bbs/Gossiping/M.1545900669.A.8FC.html
* **薄膜式鍵盤**
    * 普通鍵盤
* **機械式鍵盤**
    * 軸
        * 「青軸」（Blue switch）：非常大聲，你會很明確地感受到自己按下去每一個按鍵的次數。
        * 「茶軸」（Brown switch）：段落感次之的，它的聲音適中，算是可接受的範圍。又俗稱萬精油，有一點段落感，同時也不會太吵，算是非常折衷的選擇，推薦新手第一次選擇機械鍵盤使用。
        * 「紅軸」（Red switch）：無段落感，也就是所謂的「直上直下」，聲音比青軸及茶軸都小聲。打起來通常會比茶軸還要輕鬆一些。不過因為段落感較不明顯，有些人會覺得這個「很不機械」。
        * 「黑軸」（Black switch）：無段落感，直上直下，可以說是很重的紅軸，打字打久容易費力，適合指力大的朋友使用，聲音小。
        * 在軸方面，現在最有名的廠商是德國大廠**Cherry**。除了Cherry以外，大部分的軸廠都在中國：凱華、佳達隆、高特…… 由於Cherry軸結構專利已經到期，因此這些軸廠基本上就製造「仿Cherry軸」。 這些仿Cherry軸大部分比較便宜，但時常故障率比較高，所以市面上大部分有口碑的機械 式鍵盤都會主打自己使用Cherry軸。
    * 鍵盤大小
        * 100%: 普通鍵盤
        * 80%: 去掉右方數字鍵
    * 鍵帽材質
        * ABS
            * 常見的塑膠材質
            * 優點: 發色亮麗良好，可以做成透明的，這也是大 部分鍵盤會使用的鍵帽材質（尤其是薄膜鍵盤）
            * 缺點: 是ABS是相對而言較「軟」的材質，經過長時間使用後，手指常接觸的地方會有一種 光滑的感受，好像「油油」的。 這種現象被玩家稱為「打油」，看起來好像是鍵帽上覆蓋了一層油，但實際上是鍵帽表面 粗糙的地方被磨平了。
        * PBT
            * 無法做成透明，堅硬、不易打油，當今機械鍵盤大廠主打




## 作業系統
* **作業系統核心(Kernel)**
    * 一組程式， 這組程式的重點在於管理電腦的所有活動以及驅動系統中的所有硬體。
* **系統呼叫(System Call)**
    * 作業系統通常會提供一整組的**開發介面**給工程師來開發軟體，工程師只要遵守該開發介面那就很容易開發軟體了，這一整組開發介面就是系統呼叫層。
* 電腦系統的軟硬體關係圖
![](https://i.imgur.com/0DFHho4.png)
* 作業系統的**核心層直接參考硬體規格寫成**，所以同一個作業系統程式不能夠在不一樣的硬體架構下運作。例如:Win10不能直接在ARM架構 (手機與平板硬體) 的電腦下運作。
* **應用程式**的開發都是**參考作業系統提供的開發介面**， 所以該應用程式只能在該作業系統上面運作而已，不可以在其他作業系統上面運作的。
* 核心功能
    * 系統呼叫介面(System call interface)
    * 程序管理(Process control)
        * 良好的CPU排程機制
    * 記憶體管理(Memory management)
    * 檔案系統管理(Filesystem management)
    * **裝置的驅動(Device drivers)**
        * **硬體**也是持續在進步當中的，新的硬體出來作業系統就不認識了
        * 作業系統通常會**提供一個開發介面給硬體開發商**，讓他們可以根據這個介面設計可以驅動他們硬體的『驅動程式』
        * 只要使用者安裝驅動程式後，就可以在他們的作業系統上面驅動新硬體。(驅動程式是由廠商提供的，與作業系統開發者無關)
        ![](https://i.imgur.com/lwoPRg1.png)



## 滑鼠
|        |無線滑鼠        |藍芽滑鼠| 
|--------|--------------| ----- |
|USB接收器| 有            | 無(省去USB接口的佔用) |
|兼容性   | 需要特定的接收器 | 只要符合藍芽標準，可隨意配對 |
|功耗     | 較不耗電        | 較耗電  |
|反應速度 | 占用頻寬更大，較佳| 差一點 |
|價格    | 較低            | 普遍較高，且選擇較少 |

* 皆使用2.4GHz頻段，此被稱為ISM頻段(Industrial Scientific Medical Band)，2400MHz~2484.5 MHz，由美國聯邦通訊委員會（Federal Communications Committee）所定義，顧名思義就是指預留給工業、科學及醫療使用的免費頻率，沒有任何使用上的限制！
* 利用展頻（Spread Spectrum）技術，讓滑鼠不會被其他裝置干擾
* **DPI** (Dots per inch): 每英寸的像素
    * 如果DPI=400，代表向右移動一英寸會發出400次向右信號
    * 在解析度為800*600的螢幕之下
        * 若滑鼠DPI:800，則須移動一英吋(2.54cm)即可將滑鼠從螢幕的最左邊移動到最右邊>
        * 若滑鼠DPI:400，則須移動5.08cm
        * 若滑鼠DPI:1600，則須移動1.27cm
* Reference: http://lms.tzuchi.com.tw/epaper/artical/index.php?id=file/23/digiinfo_3

### Reference
1. https://blog.xuite.net/locktas/twblog/190770777-%E9%9B%BB%E8%85%A6%E5%B0%8F%E5%B8%B8%E8%AD%98-%E7%9C%8B%E6%87%82CPU%E8%A6%8F%E6%A0%BC%EF%BC%8C%E5%A4%96%E9%A0%BB%E3%80%81%E5%80%8D%E9%A0%BB%E3%80%81%E5%BF%AB%E5%8F%96