1 / 23

建構 Beta 電腦

建構 Beta 電腦. 中央處理單元的設計取捨. 最大效能 : 以每秒可執行的指令數來衡量. 最小成本 : 以電路的大小來衡量. 最佳效能 / 價錢 : 以 MIPS( 每秒百萬指令 ) 與大小的來比例來衡量 . 在重視能量消耗的應用中 , MIPS/ 瓦特也很重要. 效能之量測. 每秒百萬指令. 時脈頻率 ( 百萬赫 ). 每指令所需時脈數. 推進效能 ... 今天 : 1 時脈 / 指令 . 下次 : 以管路技術來達成更多百萬赫 下下次 : 修正不同的管路技術問題. Beta 指令集.

Download Presentation

建構 Beta 電腦

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 建構 Beta電腦 10/29/0

  2. 中央處理單元的設計取捨 最大效能: 以每秒可執行的指令數來衡量 最小成本: 以電路的大小來衡量 最佳效能/價錢: 以MIPS(每秒百萬指令)與大小的來比例來衡量. 在重視能量消耗的應用中, MIPS/瓦特也很重要. 10/29/0

  3. 效能之量測 每秒百萬指令 時脈頻率(百萬赫) 每指令所需時脈數 推進效能 ... 今天: 1 時脈/指令. 下次: 以管路技術來達成更多百萬赫 下下次: 修正不同的管路技術問題 10/29/0

  4. Beta指令集 操作類別: Reg[Rc] ← Reg[Ra] op Reg[Rb] 以操作碼區分的指令類別: OP OPC MEM Transfer of Control 操作類別: Reg[Rc] ← Reg[Ra] op SXT(C) 兩種格式共用的操作碼(OPCODE): ADD SUB MUL* DIV* *optional CMPEQ CMPLE CMPLT AND OR XOR SHL SHR SRA 10/29/0

  5. 達成方法: 累進功能法 每個指令是由一個簡單的功能組件成來達成的. 我們將試著實現各個指令類別的資料路徑, 然後再將它們合併(使用解多工器等). 我們的組件百寶袋: 步驟: 1. 操作類指令 2. 存取類指令 3. 跳躍與分流類指令 4. 例外 5. 合併資料路徑 暫存器 解多工器 “黑盒子” 運算邏輯單元 記憶體 10/29/0

  6. 多埠暫存器檔案 (獨立讀取位址) 2 combinational READ ports*, 1 clocked WRITE port *internal logic ensures Reg[31] reads as 0 10/29/0

  7. 暫存器檔案之時序 兩組組合邏輯式讀取埠, 一組時脈控制式寫入埠 如果 (舉例來說) WA=RA1, 將會如何??? RD1 會讀取 “舊的” Reg[RA1] 之值, 一直到下一個時脈邊緣為止! 10/29/0

  8. 起始點: ALU 操作 32-位元 (4-位元組) ADD 指令: 對BETA而言, 表示Reg[R4] ← Reg[R2] + Reg[R3] 首先, 硬體必需能夠: • 讀取下一個 32-位元 指令 • 指令解碼(DECODE): ADD, SUB, XOR, 等等 • 從暫存器檔案進行讀取 (READ) (Ra, Rb) 之操作; • 執行(PERFORM)指定的操作; • 將結果寫回(WRITE)暫存器檔案(Rc). 10/29/0

  9. 指令取得/解碼 • 使用計數器來取得(FETCH)下一個指令: 程式計數器 (PC) • 使用PC 來當作記憶體位址 • 加4到PC, 然後在時脈結束時載入新的值 • 從記憶體取得指令 o直接使用某些指令欄位 (暫存器編號, 16-位元之常數) o使用 <31:26>位元來產生控制訊號 INSTRUCTION WORD FIELDS CONTROL SIGNALS 10/29/0

  10. ALU 操作之資料路徑 OP: Reg[Rc] ← Reg[Ra] op Reg[Rb] 10/29/0

  11. ALU 操作 (常數存在時) OPC: Reg[Rc] ← Reg[Ra] op SXT(C) 10/29/0

  12. “載入”指令 LD: Reg[Rc] ← Mem[Reg[Ra]+SXT(C)] 10/29/0

  13. “儲存”指令 ST: Mem[Reg[Ra]+SXT(C)] ← Reg[Rc] 10/29/0

  14. ”跳躍”(JMP)指令 JMP: Reg[Rc] ← PC+4; PC ← Reg[Ra] 10/29/0

  15. BEQ/BNE(當相等/不等時, 則跳躍) 指令 BEQ: Reg[Rc] ← PC+4; if Reg[Ra]=0 then PC ← PC+4+4*SXT(C) BNE: Reg[Rc] ← PC+4; if Reg[Ra]≠0 then PC ← PC+4+4*SXT(C) 10/29/0

  16. “載入相對位址”指令 LDR: Reg[Rc] ← Mem[PC + 4+ 4*SXT(C)] 等等, “載入相對位址”指令有什麼好處呢??? 我認為 • 程式碼是單純的, 舉例來說, 它們是唯讀的, 並且存在一個”程式”記憶體區; • 但資料是可讀/寫的, 而使用以下方法之一來儲存 • 存在堆疊(STACK)中 (內部); 或 • 在某些外部變數中; 或 • 存在一個外部的儲存堆疊(HEAP). 所以, 為什麼一個指令要設計成可以載入”靠近”這個指令的資料呢???當資料是 ”位址”及”其他較大的常數”時 10/29/0

  17. “載入相對位址”(LDR)指令 LDR: Reg[Rc] ← Mem[PC + 4 + 4*SXT(C)] 10/29/0

  18. 例外處理 計劃:: • 中斷正在執行的程式 • 呼叫例外處理(像是一個程序呼叫) • 返回並繼續執行. 我們希望有 可修復的中斷 以達成 • 由中央處理器(CPU)或系統產生的同步化事件 錯誤 (例如, 不合法的指令, 除數為0, 不合法的記憶體位址) 捕捉 及 系統呼叫 (例如, 從週邊讀取一個字元) • 由I/O所產生的非同步化事件 (例如, 鍵盤鍵入, 收到封包, 磁碟傳輸完成) 關鍵: 對於被中斷程式的透明度. • 這對非同步化中斷是最難的 10/29/0

  19. 實施方法… 例外如何運作: • 不要執行現在的指令 • 取而代之的, 假裝有一個”強制”的程序呼叫 • 儲存現在的程式計數(PC) (事實上是現在的 PC + 4) • 用例外向量載入PC • 同步化例外是0x4, 非同步化例外是0x8 問題: 要把現在的PC + 4存到哪呢? • 我們的方法: 保留一個暫存器 (R30, 也稱 XP) • 禁止使用者程式使用XP. 為什麼? 不合法的操作: PUSH(XP) 取得指令於 Mem[Reg[XP]–4] 檢查 DIV 操作碼, 找到暫存器號碼 用軟體來執行這個操作, 填入結果暫存器 POP(XP) JMP(XP) 例子: DIV指令並未實施 LD(R31,A,R0) LD(R31,B,R1) DIV(R0,R1,R2) ST(R2,C,R31) 以硬體強制執行 10/29/0

  20. 例外 Bad Opcode: Reg[XP] ← PC+4; PC ← “IllOp” Other: Reg[XP] ← PC+4; PC ←“Xadr” 10/29/0

  21. 控制邏輯 實施方法的選擇: • 以操作碼(opcode), 外部跳躍, 以及捕捉邏輯索引的唯讀記憶體(ROM) • 可程式化邏輯陣列(PLA) • “隨機”邏輯 (例如: 標準元件邏輯閘) 10/29/0

  22. Beta: 我們的”最終答案” 10/29/0

  23. 下回: 管路化的Beta電腦 那麼, 我們到 6.004的實驗室去, 把Intel的生意搶走吧! 嗯, 建構一台電腦並不是那麼難嘛 10/29/0

More Related