400 likes | 996 Views
微處理機系統 (Microprocessor System). 第一章 ARM 微處理器基礎. Ping-Liang Lai ( 賴秉樑 ). 章節大綱. 1.1 處理器設計基礎 1.1.1 處理器體系結構和組織 1.1.2 硬體設計的抽像 1.1.3 MU0: 一個簡單的處理器 1.1.4 指令集的設計 1.1.5 管線 1.2 ARM 微處理器簡介 1.3 ARM 微處理器的特點. 1.1.1 處理器體系結構和組織 (1/2). 計算機體系結構 (Computer architecture)
E N D
微處理機系統(Microprocessor System) 第一章ARM微處理器基礎 Ping-Liang Lai (賴秉樑)
章節大綱 • 1.1 處理器設計基礎 • 1.1.1 處理器體系結構和組織 • 1.1.2 硬體設計的抽像 • 1.1.3 MU0: 一個簡單的處理器 • 1.1.4 指令集的設計 • 1.1.5 管線 • 1.2 ARM微處理器簡介 • 1.3 ARM微處理器的特點
1.1.1處理器體系結構和組織 (1/2) • 計算機體系結構 (Computer architecture) • 描述用戶角度看到的計算機。指令集、可見暫存器 (register)、記憶體管理表的結構和異常處理模式都是體系結構的一部分。 • 計算機組織 (Computer organization) • 描述用戶不能看到的體系結構實現的方式。管線結構、透明的快取記憶體 (Cache) 、步行表 (table-working)硬體以及轉換對照緩衝 (Translation Look-aside Buffer, TLB)。 • 什麼是處理器? • 通用處理器是一個執行記憶體中指令的有限狀態機 (finite-state automaton)。 • 儲存程式計算機 (stored-program computer) • 儲存程式數位計算機把指令和資料存放同一個記憶體系統中,必要時可以將指令做為資料處理。 • 計算機應用 • 嵌入式 (embedded)產品,如行動電話、汽車發動機管理系統等。
程式執行的例子 • Command • 1: Load AC from Memory • 2: Store AC to memory • 5: Add to AC from memory • Add the contents of memory 940 to the content of memory 941 and stores the result at 941 Fetch Execution
1.1.2 硬體設計的抽象 (abstraction) • 由下而上的抽像化 • 電晶體 (Transistors) • 邏輯閘 (Logic gates) • 邏輯符號 • 真值表 (Truth table)
抽像的等級 (Levels of abstraction) • 電晶體; • 邏輯閘、記憶體單元和專用電路; • 單位加法器 (single-bit adders) 、多工器 (multiplexers) 、解碼器 (decoder)和正反器 (flip-flops); • 單字元寬加法器 (word-wide adders) 、多工器、解碼器、暫存器和匯流排 (buses); • ALU (算數邏輯單元) 、桶式移位器 (barrel shifter) 、暫存器庫 (register banks)和記憶體組 (memory blocks); • 處理器、Cache和儲存器管理組織; • 處理器、周邊單元、Cache記憶體和記憶體管理單元; • 積體系統晶片; • 印刷電路板 (PCB); • 行動電話、PC和發動機控制器。
閘級設計 (Gate-level design) • 布林代數和符號; • 二進制數; • 二進制加法; • 多工器; • 時脈 (clocks); • 循序電路 (sequential circuits); • 栓鎖器 (latches)和正反器 (flip-flops); • 暫存器。
1.1.3 MU0:一個簡單的處理器 • 一個簡單的處理器由一些基本的元件構成 • 程式計數器 (program counter, PC): 用來保存當前指令的位址。 • 累加器 (accumulator, ACC) 暫存器: 用來保存正在處理的資料。 • 算術邏輯單元 (arithmetic-logic unit, ALU): 可以對二進制運算元 (operands) 進行若干操作,如加、減、增值等。 • 指令暫存器 (instruction register, IR): 保存當前的指令。 • 指令解碼器和控制邏輯: 它根據指令控制上述元件產生需的結果 。 • MUn, 其中1≦n ≦6,為曼徹斯特大學設計機器經常的使用名稱。 • 最簡單的機器被稱為MU0,為曼徹斯特用以說明處理器設計的原理。 • MU0是為了教學而開發的,並不是作為研究項目而製作的大規模機器。
MU0指令集 (1/2) • MU0: 12位元位址空間的16位元機 • 4096個可分別定址的; • 16位元的儲存區; • 記憶體定址範圍8KB。 • MU0的指令長度為16位元 • 4位元為操作碼 (opcode),即最多可有16道指令; • 12位元為位欄位 (S)。
MU0指令集 (2/2) • 最簡單的指令集只使用了16種可用操作碼中的8種
MU0邏輯設計 • 邏輯級 (logical order)的設計方式 • 資料通路 (The datapath): 所有並行地傳送的儲存或處理多位二進制數的元件都屬於資料通路,包括累加器、程式計數器、 ALU和指令暫存器。採用基於暫存器與多工器等元件的暫存器傳輸級 (Register Transfer Level, RTL)設計方式。 • 控制邏輯 (The control logic): 所有不屬於資料通路的元件都屬於控制邏輯,採用有限狀態機 (Finite State Machine, FSM)的方式進行設計。
資料通路設計 (1/2) • 限制的因素: 記憶體的讀/寫 (R/W)週期 (假設讀/寫總是佔用一個時脈週期 (clock cycle) • 每條指令佔用的時脈週期數嚴格地由它必須存取記憶體的次數決定; • LDA 、 STO 、 ADD 、 SUB要兩次記憶體存取; • JMP 、 JGE 、 JNE僅需一次。
資料通路操作 • 每一條指令都是從它到達指令暫存器 (IR) 開始,分為兩步執行 • 存取記憶體中的運算元並執行所需的操作 • 送出指令暫存器中的位址,然後,從記憶體讀出一個運算元,與ALU中累加器完成相應操作後,將結果寫回累加器; • 或者把累加器的資料輸出保存到記憶體中。 • 讀取下一步要執行的指令 • 送出PC或者指令暫存器中的位址,讀取下一道指令; • 無論是哪種情形,這個位址都會在ALU中加1,並將增值存入PC。
控制邏輯 (1/2) • 控制邏輯對當前的指令進行解碼,並產生資料通路的控制訊號,必要時會使用來自資料通路的控制輸入。 • 控制邏輯是一個有限狀態機 (FSM); • MU0的控制邏輯非常簡單,只需要兩個狀態: 『取指令』 和『執行』,因此用1位元足以描述這兩個狀態 (Ex/ft);
ALU 設計 (1/2) • 基本ALU功能: (A+B、A-B、B、B+1和0) • 最後一項只在重置訊號有效時產生,因而可用重置訊號直接控制。 • ALU的輸入是運算元A和B,則只需一個二進制加法器即可 • A+B是加法器標準的輸出 (假設進位輸入是0); • A-B可以用A+B’+1來實作。這需要把輸入B反相,並將進位輸入強制為1; • B可以藉由強制輸入A和進位輸入都為0來實作; • B+1可以藉由強制A為0,並將進位輸入強制為1來實作。
1.1.4 指令集的設計 • 指令集 (instruction set): 為軟體與硬體的使用者介面 (user interface) • 程式設計者 (programmer) 可看到的指令集合; • 計算機最重要的設計之一。 軟體 (software) 指令集 (instruction set) 硬體 (hardware)
4位址 (4-address) 指令 • 4位址指令: 每條指令需要 4n+f 位元 • 組合語言格式 ADD d, s1, s2, next_i ; d := s1+s2
3位址 (3-address) 指令 • 3位址指令: 把下一條指令的位址變為隱含的,使用PC來達成 • 除非是分岐指令,其作用就是明確地修改指令的順序。 • 組合語言格式 ADD d, s1, s2; d := s1+s2
2位址 (2-address) 指令 • 2位址指令: 目的與來源運算元共用一個暫存器 • 組合語言格式 ADD d, s1 ; d := d+s1
1位址 (1-address) 指令 • 1位址指令: 目的暫存器是隱含的,則通常稱之為累加器 (MU0即是),指令只需要指定一個運算元 • 組合語言格式 ADD s1 ; accumulator := accumulator+s1
0位址 (0-address) 指令 • 0位址指令: 採用評估堆疊式 (evaluation stack) 的結構,使全部的運算元變為隱含的 • 組合語言格式 ADD; top_of_stack := top_of_stack +next_on_stack
n位址 (n-address) 應用範例 • 除了4位址外,其他形式都已經在處理器的指令集設計中使用過 • Inmos Trasputer 處理器使用0位址的評估堆疊式結構; • MUO 是一種簡單的1位址結構的例子; • 一些 ARM 處理器為提高代碼密度而採用的 Thumb 指令集使用了以2位址形式為主的結構; • 標準的 ARM 指令集使用了3位址結構。
指令類型 • 一個通用的指令集應包括以下幾類指令 • 資料處理指令: 例如加、減和乘; • 資料傳送指令: 把資料從記憶體中的一個地方複製到另一個地方,或者從記憶體複製到處理器的暫存器等等; • 流程控制指令: 這類指令把程式的執行從一部分切換到另一部分,切換有可能取決於資料的值; • 控制處理器執行狀態的特殊指令: 例如,切換到特權模式以執行作業系統功能。
1.1.5 管線 (1/2) • 處理器按照一系列步驟來執行每一條指令。典型的步驟如下: • 指令讀取週期 (Instruction Fetch, IF): 從記憶體讀取指令 (fetch); • 指令解碼/暫存器讀取週期 (Instruction Decoder, ID): 解碼以鑑別它是那一類指令/從暫存器組 (庫) 取得所需的運算元(dec/ reg); • 執行/有效位址週期 (Execution, EX): 將運算元進行組合以得到結果或記憶體位址 (ALU); • 記憶體存取 (Memory, MEM): 如果需要,則存取記憶體以存取資料 (mem); • 寫回週期 (Write Back, WB): 將結果回寫到暫存器組 (庫)(res)。 • 指令解碼/暫存器讀取週期通常合而為一,所以IF、ID、EX、MEM與WB稱之為5-管線式的結構。
A B C D 什麼是管線? (1/3) • 洗衣店的例子 • Ann(A), Betty(B), Cathy(C), Dave (D)四人各有一包衣物,分別在洗衣店裡頭想要做洗衣、烘衣與摺疊三件工作。 • 洗衣機需花費30分鐘; • 烘衣機需花費40分鐘; • “摺疊”需花費20分鐘。
A B C D 什麼是管線? (2/3) 循序漸進的洗衣方式,4包衣物將花費6個小時 6 PM Midnight 7 8 9 11 10 Time 30 40 20 30 40 20 30 40 20 30 40 20 如果他們學會管線化,那將花費多久的時間? 工 作 順 序 如何減少花費時間?- 管線化 (Pipelining)!!!
40 40 40 A B C D 什麼是管線? (3/3) • 經過管線的方法,4包衣物花費3.5個小時。 • 盡最大可能 (As Soon As Possible, ASAP) 的應用。 6 PM 7 8 9 Time 30 40 20 工 作 順 序
1.2 ARM微處理器簡介 • ARM(Advanced RISC Machines) • ARM公司只發展ARM技術矽智財 (IP),採用其ARMIP為核心的,稱之為ARM微處理器; • 遍及工業控制、消費類電子產品、通信系統、網路系統,與無線系統等各類產品; • 佔據了32位元RISC(Reduced Instruction Set Computer)處理器75%以上的市場; • 非CPU的類型之一; • 經由IP (ARM微處理器核蕊,又稱之為內核)轉讓設計的版權許可,並經由合作公司來生產各具特色的晶片; • 各個使用ARM 技術的廠商,其發展諸多工具、製造、軟體的支援,能帶來降低系統成本,更使其具有競爭力的好處; • 系統單晶片 (System-on-Chip, SOC)大都以ARM為核心的設計,因此,學習ARM微處理器是必須的。
1.3 ARM微處理器的特點 • 這種採用RISC架構的ARM微處理器一般都具有如下的特點 • 體積小、低消耗功率、低成本與高性能; • 支援Thumb (16位元)/ ARM(32位元) 雙指令集 (Instruction set),也能相容8位元/ 16位元的元件;