S SmartDocs

硬體與嵌入式系統

Arduino、RISC-V、MSP430、PLC、Linux 驅動程式與嵌入式系統工程。

RISC V Hardware 更新於 2026-07-04

記憶體系統概觀

設計上存在三難:容量大、速度快、成本低無法同時滿足。存在以下權衡:存取時間愈快,每位元成本愈高;容量愈大,每位元成本愈低、但存取愈慢。出路是不依賴單一記憶體技術,而是建構階層

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

半導體主記憶體

半導體記憶體的基本單位是記憶體單元(memory cell),共同性質:(1) 呈現兩種穩定狀態,表示 0 與 1;(2) 可被寫入以設定狀態;(3) 可被讀取以感測狀態。單元有三個功能端子:選擇(select)、控制(讀/寫)、資料/感測。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

磁碟

1988 年 Berkeley 提出 RAID(Redundant Array of Independent Disks):以多顆磁碟組成邏輯上單一的大磁碟,藉條帶化(striping)提升平行度、藉冗餘容忍磁碟失效。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

外部裝置與 I/O 模組

處理器發出 I/O 命令後繼續執行其他工作;裝置就緒時發出中斷請求,處理器在指令邊界回應:保存脈絡 跳到中斷服務常式(ISR) 傳輸一筆資料 恢復脈絡。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

作業系統概觀

早期一次一個作業(serial processing)浪費昂貴的機器時間;批次系統以監督程式(monitor)自動接續作業,但 I/O 等待仍使處理器閒置。多道程式設計(multiprogramming):記憶體中同時保有多個作業,一個作業等待 I/O 時切換到另一個,大幅提高使用率。分時(time sharing)把同一思想用於互動使用者:計時器中斷驅動時間片輪轉。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

ALU 概觀

ALU 是實際執行算術與邏輯運算的部件;其他部件(控制單元、暫存器、記憶體、I/O)主要是為它「備料」與「收貨」。ALU 接收暫存器提供的運算元,把結果存回暫存器,並在旗標(flags)中回報狀態(溢位、零、負、進位)。注意:RISC-V 刻意不設旗標暫存器,比較與分支合一(beq、blt 直接比較兩暫存器),避免旗標成為管線的隱性相依——這是新舊 ISA 設計哲學的有趣對照。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

機器指令特性

指令以位元組合表示(RV32I:固定 32 位元,欄位劃分見第 18 章)。人類使用助憶碼(mnemonic):ADD、LW、BEQ……;運算元亦以符號表示。組合語言到機器碼的翻譯由組譯器完成(第 19 章實際操作)。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

定址模式

opcode 位元數 vs. 位址位元數的拉鋸。技巧包括:擴展 opcode(部分編碼點展開為更長的 opcode)、依指令類型使用不同欄位佈局。原則:愈常用的資訊,位置愈固定——解碼器可以並行地「猜」。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

處理器組織

處理器必須:提取指令、解譯指令、提取資料、處理資料、寫回資料。為此需要:ALU、控制單元、暫存器,以及內部匯流排把它們連起來。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

起點:程式到底在做什麼

1970–80 年代,語意鴻溝(高階語言與機器語言的落差)推動 CISC:更豐富的指令、更複雜的定址,希望「一條指令做一件高階的事」。但對真實程式的動態量測顯示

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

超純量 vs. 超管線

兩者可疊加。超純量的效益上限由程式本身的 ILP 決定:量測顯示一般整數程式相鄰指令間的可平行度平均僅 2–3,必須靠大視窗與投機執行去更遠處找平行。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

微操作

指令週期(提取、間接、執行、中斷)可分解為一系列微操作:暫存器間的一次傳輸、一次 ALU 運算、一次記憶體讀寫。每個微操作在一個時脈週期(或子週期)內完成。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

Flynn 分類法

SMP:多個能力相同的處理器,共享同一主記憶體與 I/O,由單一作業系統統一管理,任何處理器都能執行任何工作(對稱)。優點:效能(工作可真平行)、可用性(單一處理器失效不停機)、漸進擴充。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

RISC-V 的緣起與治理

RV32I 小到什麼程度?40 條指令、六種格式、無旗標、無條件碼——一名學生可以在一學期內以 Verilog 完整實作(第三部將證明這一點),卻足以支撐完整的編譯器目標與作業系統。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

總覽

注意兩件事:(1) funct7 的 bit 30 是 add/sub 與 srl/sra 的唯一區分——解碼器只需看這一位;(2) 移位量取 rs2 的低 5 位(0–31)。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

工具鏈與組譯流程

沒有安裝工具鏈也可以使用線上模擬器(如 RARS、Venus)練習;第 26 章我們則以「手工組譯+readmemh」的方式餵程式給自製 CPU。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

M 擴展:乘法與除法

RISC-V 不因除零觸發例外——語言運行期(如 C 的 UB、Java 的 ArithmeticException)自行檢查。硬體簡單、語意可移植。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

特權模式

CSR(Control and Status Register)有獨立的 12 位元位址空間(至多 4096 個)。六條指令(I 型,opcode=SYSTEM)

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

硬體思維:與軟體語言的根本差異

模組是硬體的基本封裝單位;實例化一次就是放一份實體電路。第 23 章的 CPU 頂層就是把 ALU、暫存器檔、控制器等模組「接線」起來。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

設計規劃

要點:(1) signed() 讓 < 與 >>> 依二補數語意工作(第 9 章);(2) 移位量取 b[4:0]——正是規格「取 rs2 低 5 位」的直接翻譯;(3) 加法與減法會由合成器共享同一個加法器(B 取反 + 進位,圖見第 9 章)。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

頂層介面與資料路徑

CPU 核心只暴露兩組記憶體埠——把記憶體放在核外(top 模組接線),日後換成快取或匯流排介面(第 3、4 章)都不必改核心。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

管線切割:四組暫存器

兩個細節:(1) rd != 0——x0 永遠不構成相依;(2) exmem_fwd_data 不能直接用 alu_y:若 EX/MEM 那條是 jal,要前遞的是 pc+4;是 lui,要前遞的是 imm。因此前遞值本身也要過一個小多工器。

閱讀文章 →
RISC V Hardware 更新於 2026-07-04

驗證策略總覽

同一份測試程式在單週期與管線兩個實作上執行——兩者 ISA 相同、微架構不同,結果必須完全一致。這正是第 1 章「架構 vs. 組織」的實證:架構是合約,組織是實作。

閱讀文章 →
traffic light 更新於 2026-05-17

交通號誌控制系統設計 — PLC + Modbus + SCADA

方案 A(傳統工業自動化方案) > 適用情境:十字路口、產業道路、廠區出入口、隧道號誌等需要高可靠度(MTBF)與符合工業規範(IEC 61131-3、IEC 61508 SIL2)的場域。

閱讀文章 →