Bài giảng Kiến trúc máy tính - Chương 4: Bộ xử lý (The processor)
CE Giới thiệu
Hiệu suất của một máy tính được xác định bởi ba yếu tố:
– Tổng số câu lệnh Được xác định bởi trình biên dịch
và kiến trúc tập lệnh
– Chu kỳ xung clock
– Số chu kỳ xung clock trên một lệnh
(Clock cycles per instruction - CPI)
Mục đích chính của chương này:
- Giải thích quy tắc hoạt động và hướng dẫn xây dựng datapath cho một bộ xử lý
chứa một số lệnh đơn giản (giống kiến trúc tập lệnh dạng MIPS), gồm hai ý
chính:
• Thiết kế datapath
• Hiện thực datapath đã thiết kế
MIPS (bắt nguồn từ chữ viết tắt của ‘Microprocessor without Interlocked Pipeline Stages’) là một
kiến trúc tập tập lệnh dạng RISC, được phát triển bởi MIPS Technologies (trước đây là MIPS
Computer Systems, Inc.)
Hiệu suất của một máy tính được xác định bởi ba yếu tố:
– Tổng số câu lệnh Được xác định bởi trình biên dịch
và kiến trúc tập lệnh
– Chu kỳ xung clock
– Số chu kỳ xung clock trên một lệnh
(Clock cycles per instruction - CPI)
Mục đích chính của chương này:
- Giải thích quy tắc hoạt động và hướng dẫn xây dựng datapath cho một bộ xử lý
chứa một số lệnh đơn giản (giống kiến trúc tập lệnh dạng MIPS), gồm hai ý
chính:
• Thiết kế datapath
• Hiện thực datapath đã thiết kế
MIPS (bắt nguồn từ chữ viết tắt của ‘Microprocessor without Interlocked Pipeline Stages’) là một
kiến trúc tập tập lệnh dạng RISC, được phát triển bởi MIPS Technologies (trước đây là MIPS
Computer Systems, Inc.)
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 4: Bộ xử lý (The processor)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_kien_truc_may_tinh_chuong_4_bo_xu_ly_the_processor.pdf
Nội dung text: Bài giảng Kiến trúc máy tính - Chương 4: Bộ xử lý (The processor)
- CE BỘ XỬ LÝ Nội dung 1. Giới thiệu 2. Nhắc lại các quy ước thiết kế logic 3. Xây dựng đường dữ liệu (datapath) đơn giản 4. Hiện thực datapath đơn chu kỳ 11
- CE Quy trình thực thi lệnh Instruction Fetch (tìm nạp lệnh): Instruction – Nạp lệnh từ bộ nhớ (memory) Fetch – Địa chỉ của lệnh lưu trong thanh ghi Program Counter (PC) Instruction Decode Instruction Decode (giải mã lệnh): – Tìm ra lệnh thực hiện Operand Fetch Operand Fetch (tìm nạp toán hạng): – Lấy các toán hạng cần thiết cho lệnh Next Instruction Next Execute Execute (thực thi): Result – Thực hiện câu lệnh Write Result Write (lưu trữ): – Lưu trữ kết quả 12
- CE Quy trình thực thi lệnh của MIPS Bảng sau mô tả ba giai đoạn thực thi lệnh trong ba nhóm lệnh cơ bản của MIPS (Giai đoạn Fetch and Decode không được hiển thị) add $3, $1, $2 lw $3, 20( $1 ) beq $1, $2, label Fetch & standard standard standard Decode o Đọc thanh ghi $1, xem o Đọc thanh ghi $1, xem o Đọc thanh ghi $1, xem như Operand như toán hạng opr1 như toán hạng opr1 toán hạng opr1 Fetch o Đọc thanh ghi $2, xem o Sử dụng 20 như toán o Đọc thanh ghi $2, xem như như toán hạng opr2 hạng opr2 toán hạng opr2 o MemAddr = opr1 + opr2 Taken = (opr1 == opr2 )? Execute Result = opr1 + opr2 o Sử dụng MemAddr để Target = PC + Label* đọc dữ liệu từ bộ nhớ Dữ liệu của từ nhớ có địa Result Result được lưu trữ vào if (Taken) chỉ MemAddr được được Write $3 PC = Target lưu trữ vào $3 opr = Operand * = simplification, not exact MemAddr = Memory Address 13
- CE Quy trình thực thi lệnh của MIPS (5 công đoạn) Thay đổi thiết kế các giai đoạn thực hiện lệnh: – Gộp giai đoạn Decode và Operand Fetch – Giai đoạn Decode của MIPS khá đơn giản – Tách giai đoạn Execute thành ALU (Calculation) và Memory Access add $3, $1, $2 lw $3, 20( $1 ) beq $1, $2, label Đọc lệnh (địa chỉ của lệnh Đọc lệnh (địa chỉ của lệnh Đọc lệnh (địa chỉ của lệnh lưu Fetch lưu trong thanh ghi PC) lưu trong thanh ghi PC) trong thanh ghi PC) o Đọc thanh ghi $1, xem o Đọc thanh ghi $1, xem o Đọc thanh ghi $1, xem như Decode & như toán hạng opr1 như toán hạng opr1 toán hạng opr1 Operand o Đọc thanh ghi $2, xem o Sử dụng 20 như toán o Đọc thanh ghi $2, xem như Fetch như toán hạng opr2 hạng opr2 toán hạng opr2 Taken = (opr1 == opr2 )? ALU Result = opr1 + opr2 MemAddr = opr1 + opr2 Target = PC + Label* Memory Sử dụng MemAddr để đọc Access dữ liệu từ bộ nhớ Dữ liệu của từ nhớ có địa Result if (Taken) Result được lưu trữ vào $3 chỉ MemAddr được được Write PC = Target lưu trữ vào $3 14
- CE Quy trình thực thi lệnh của MIPS (5 công đoạn) Fetch Instruction Fetch (Nạp lệnh) Instruction Instruction Decode & Operand Fetch Decode (Giải mã và lấy các toán hạng cần thiết, Gọi tắt là “Instruction Decode”) ALU ALU (Giai đoạn sử dụng ALU hay giai đoạn thực Memory thi) Access Memory Access (Giai đoạn truy xuất vùng nhớ) Next Instruction Next Result Result Write (Giai đoạn ghi lại kết quả/lưu trữ) Write 15
- CE Quy trình thực thi lệnh của MIPS (5 công đoạn) Fetch Instruction Fetch (Nạp lệnh) Instruction Instruction Decode & Operand Fetch Decode (Giải mã và lấy các toán hạng cần thiết, Gọi tắt là “Instruction Decode”) ALU ALU (Giai đoạn sử dụng ALU hay giai đoạn thực Memory thi) Access Memory Access (Giai đoạn truy xuất vùng nhớ) Next Instruction Next Result Result Write (Giai đoạn ghi lại kết quả/lưu trữ) Write 16
- CE Giai đoạn tìm nạp lệnh (Instruction Fetch) Giai đoạn nạp lệnh: 1. Sử dụng thanh ghi Program Counter (PC) để tìm nạp lệnh từ bộ nhớ • Thanh ghi PC là một thanh ghi đặc biệt trong bộ vi xử lý 2. Tăng giá trị trong thanh ghi PC lên 4 đơn vị để lấy địa chỉ của lệnh tiếp theo • Tại sao địa chỉ lệnh tiếp theo là PC + 4? • Chú ý, lệnh rẽ nhánh (branch) và lệnh nhảy (jump) là một trường hợp ngoại lệ Kết quả của giai đoạn này là đầu vào cho giai đoạn tiếp theo (Decode): – Lệnh sẽ được thực thi 17
- CE Giai đoạn tìm nạp lệnh (Instruction Fetch) Bộ cộng Add 4 PC Read Decode Stage address Instruction Instruction Instruction memory Thanh ghi PC Vùng nhớ lưu trữ lệnh 18
- CE Khối Instruction Memory Vùng nhớ lưu trữ lệnh Instruction Đầu vào: là địa chỉ của lệnh Address Đầu ra: là nội dung lệnh tương ứng với Instruction địa chỉ được cung cấp Instruction Memory Memory Cách sắp xếp của bộ nhớ giống như hình bên 2048 add $3, $1, $2 phải 2052 sll $4, $3, 2 2056 andi $1, $4, 0xF 19
- CE Bộ cộng Mạch logic kết hợp để cộng 2 số - bộ cộng Đầu vào: A – Hai số 32-bit A, B A+B Add Sum Đầu ra: B – A + B 20
- CE Ý niệm về việc sử dụng xung clock Dường như thanh ghi PC được đọc và cập nhật cùng lúc: – PC hoạt động chính xác như thế nào? Magic of clock: – PC được đọc trong nửa clock đầu và cập nhật thành PC+4 trong lần kích cạnh lên tiếp theo Add 4 Time PC Read In address Clk Instruction 100 104 108 112 Instruction PC memory In 104 108 112 116 21
- CE Quy trình thực thi lệnh của MIPS (5 công đoạn) Fetch Instruction Fetch (Nạp lệnh) Instruction Instruction Decode & Operand Fetch Decode (Giải mã và lấy các toán hạng cần thiết, gọi tắt là “Instruction Decode”) ALU ALU (Giai đoạn sử dụng ALU hay giai đoạn thực Memory thi) Access Memory Access (Giai đoạn truy xuất vùng nhớ) Next Instruction Next Result Result Write (Giai đoạn ghi lại kết quả/lưu trữ) Write 22
- CE Giai đoạn giải mã (Decode) Giai đoạn decode: Lấy nội dung dữ liệu trong các trường (field) của lệnh: 1. Đọc opcode để xác định kiểu lệnh và chiều dài của từng trường trong mã máy 2. Đọc dữ liệu từ các thanh ghi cần thiết • Có thể 2 (lệnh add), 1 (lệnh addi) hoặc 0 (lệnh j) Đầu vào từ giai đoạn trước (Fetch): – Lệnh cần được thưc thi Đầu ra cho giai đoạn tiếp theo (Execute): – Phép tính và các toán hạng cần thiết 23
- CE Giai đoạn giải mã (Decode) Register Number Data Read 5 Read Execute Stage Fetch Fetch Stage register 1 data 1 5 Read Inst. register 2 Register File Operands 5 Write register Read data 2 Write data Khối chứa tập hợp của các thanh ghi, gọi là Register file 24
- CE Khối Register File Một tập 32 thanh ghi: – Mỗi thanh ghi có chiều dài 32 bit và có thể được đọc hoặc ghi bằng cách chỉ ra chỉ số của thanh ghi – Với mỗi lệnh, cho phép đọc nhiều nhất từ 2 thanh ghi – Với mỗi lệnh, cho phép ghi vào nhiều nhất 1 thanh ghi RegWrite: là một tín hiệu điều khiển nhằm mục đích: – Cho phép ghi vào một thanh ghi hay không – 1(True) = Write, 0 (False) = No Write 5 Read Read register 1 data 1 Register 5 Read Number register 2 Register Data File 5 Write register Read data 2 Write Data data RegWrite 25
- CE Giải mã: lệnh R-Type add $8, $9, $10 opcode 000000 31:26 25:21 01001 rs Inst [25:21] 5 Read Read Nội dung của register 1 data 1 thanh ghi $9 20:16 01010 5 Read rt register 2 Register File 5 Write register 15:11 01000 Read Nội dung của rd data 2 Write thanh ghi $10 data shamt 00000 10:6 RegWrite Kết quả/giá trị cần 100000 funct lưu vào thanh ghi Ký hiệu: Inst[Y:X] 5:0 (sẽ được sinh ra ở = chuỗi bit từ X tới Y trong giai đoạn sau) lệnh 26
- CE Giải mã: lệnh I-Type addi $21, $22, -50 opcode 001000 31:26 25:21 10110 rs Inst [25:21] 5 Read Read Nội dung của register 1 data 1 thanh ghi $22 20:16 10101 5 Read rt register 2 Register File 5 Write register Read 1111 1111 1100 1110 1100 1111 1111 data 2 Write data Immediate 15:0 RegWrite Vấn đề: - Thanh ghi đích $21 “đặt không đúng vị trí” - Read Data 2 là một hằng số, không phải đọc từ thanh ghi 27
- Giải mã: Giải pháp cho ngõ “Write register” addi $21, $22, -50 opcode 001000 31:26 25:21 10110 rs Inst [25:21] 5 Read Read register 1 data 1 20:16 10101 5 Read rt register 2 Register File 5 Write register Read 1111 1111 1100 1110 1100 1111 1111 M data 2 U Write data Immediate Inst [15:11] X 15:0 Giải pháp (cho chỉ số thanh ghi sẽ RegDst được ghi): Sử dụng một multiplexer để lựa chọn chỉ số thanh ghi cho ngõ write RegDst: Tín hiệu điều khiển chọn register chính xác dựa Inst[20:16] hay [15:11] để đưa vào trên từng loại lệnh ngõ write register 28
- CE Multiplexer (MUX) Chức năng: – Chọn một input từ tập input đầu vào Control m Inputs: in0 – n đường vào có cùng chiều rộng . M U out . . X in Control: n-1 – Cần m bit trong đó n = 2m Control=0 select in0 Control=3 select in Output: 3 – Chọn đường input thứ i nếu giá trị tín hiệu điều khiển control = i 29
- Giải mã: giải pháp cho ngõ “Data 2” opcode 001000 31:26 addi $21, $22, -50 25:21 10110 rs Inst [25:21] 5 Read Read register 1 data 1 20:16 10101 5 Read rt register 2 Register File 5 Write register Read 1111 1111 1100 1110 1100 1111 1111 M data 2 M U Write Inst [15:11] data U Immediate X X 15:0 RegWrite ALUSrc: RegDst Tín hiệu điều khiển ALUSrc để chọn “Read data Inst [15:0] 16 Sign 32 Extend 2” hay giá trị của Inst[15:0] (đã được mở rộng có dấu) cho toán hạng thứ Giải pháp (cho đường dữ liệu data 2) hai Sử dụng một multiplexer để chọn chính xác toán hạng thứ 2. Sign extend: khối mở rộng số tức thời 16 bit thành 32 bit 30
- CE Giải mã: Lệnh Load Word Xem ví dụ sau: "lw $21, -50($22)" – Có cần phải thay đổi thành phần nào? opcode 100011 31:26 25:21 10110 rs Inst [25:21] 5 Read Read register 1 data 1 20:16 10101 5 Read rt register 2 Register File 5 Write register Read 1111 1111 1100 1110 1100 1111 1111 M data 2 M U Write Inst [15:11] data U Immediate X X 15:0 RegWrite RegDst ALUSrc Inst [15:0] 16 Sign 32 Extend 31
- CE Giải mã: Lệnh nhánh/nhảy Example: "beq $9, $0, 3" – Cần tính kết quả rẽ nhánh và đích đến cùng một lúc ! opcode 000100 – Giải quyết vấn đề này trong giai đoạn của ALU 31:26 25:21 01001 rs Inst [25:21] 5 Read Read register 1 data 1 20:16 00000 5 Read rt register 2 Register File 5 Write register Read 0000 0000 0000 0011 0000 0000 0000 M data 2 M U Write Inst [15:11] data U Immediate X X 15:0 RegWrite RegDst ALUSrc Inst [15:0] 16 Sign 32 Extend 32
- CE Giải mã: tổng kết Inst [25:21] 5 Read Read register 1 data 1 Operand 1 5 Read register 2 Registers 5 Write register Inst[31:0] M Read data 2 M U Write data Inst [15:11] X U Operand 2 X RegWrite RegDst ALUSrc Inst [15:0] 16 Sign 32 Extend 33
- CE Quy trình thực thi lệnh của MIPS (5 công đoạn) Fetch Instruction Fetch (Nạp lệnh) Instruction Instruction Decode & Operand Fetch Decode (Giải mã và lấy các toán hạng cần thiết, Gọi tắt là “Instruction Decode”) ALU ALU (Giai đoạn sử dụng ALU hay giai đoạn thực Memory thi) Access Memory Access (Giai đoạn truy xuất vùng nhớ) Next Instruction Next Result Result Write (Giai đoạn ghi lại kết quả/lưu trữ) Write 34
- CE Công đoạn ALU Công đoạn ALU: – ALU = Arithmetic-Logic Unit – Công việc thật sự của hầu hết các lệnh được hiện chủ yếu trong giai đoạn này • Số học (Arithmetic) (ví dụ: add, sub), Shifting (ví dụ: sll), Logic (ví dụ: and, or): ALU tính ra kết quả cuối cùng • Lệnh làm việc với bộ nhớ (ví dụ: lw, sw): ALU dùng tính toán địa chỉ của bộ nhớ • Lệnh nhảy/nhánh (ví dụ: bne, beq): ALU thực hiện so sánh các giá trị trên thanh ghi và tính toán địa chỉ đích sẽ nhảy tới Đầu vào từ công đoạn trước (Decode): – Các thao tác (operation) và toán hạng (operand(s)) Đầu ra cho công đoạn tiếp theo (Memory): – Tính toán kết quả 35
- CE Công đoạn ALU Memory Memory Stage Decode Decode Stage ALU result Operands ALU Khối mạch thực hiện các phép toán logic và số học 36
- Khối ALU (Arithmetic Logical Unit) ALU (Arithmetic-logical unit) 4 ALUcontrol – Sử dụng logic kết hợp để thực hiện các A toán tử số học và logic (A op B) == 0? isZero? ALU Inputs: ALU result A op B – 2 số 32-bit B Điều khiển khối ALU: ALUcontrol Function – Do ALU có thể thực hiện nhiều chức năng dùng 4-bit để quyết định chức 0000 AND năng/phép toán cụ thể nào cho ALU 0001 OR 0010 add Outputs: 0110 subtract – Kết quả của phép toán số học hoặc logic 0111 slt – Một bit tín hiệu để chỉ ra rằng kết quả có 1100 NOR bằng 0 hay không 37
- CE Công đoạn ALU: các lệnh non-branch Các lệnh không nhánh/nhảy (non-branch) kết nối ALU như hình: add $8, $9, $10 000000 opcode 31:26 01001 25:21 ALUcontrol rs Inst [25:21] 5 Read Read 4 register 1 data 1 01010 20:16 5 Read rt register 2 isZero? Register ALU 5 Write File ALU register 01000 15:11 M Read result rd data 2 Write M U data Inst [15:11] X U shamt 00000 10:6 X RegWrite RegDst ALUSrc 100000 funct Inst [15:0] 16 Sign 32 ALUcontrol: 5:0 Extend Thiết lập giá trị cho ALUcontrol cần sử dụng trường opcode và funct 38
- CE Công đoạn ALU: Các lệnh Branch Lệnh rẽ nhánh thì khó hơn vì phải tính toán hai phép toán: Ví dụ: "beq $9, $0, 3" 1. Kết quả rẽ nhánh: • Sử dụng ALU để so sánh thanh ghi • Tín hiệu 1-bit "isZero?“ để kiểm tra tính chất bằng/không bằng 2. Địa chỉ đích của nhánh: • Sử dụng một bộ cộng để tính địa chỉ • Cần nội dung của thanh ghi PC (từ Fetch Stage) • Cần Offset (từ Decode Stage) 39
- Datapath với công đoạn ALU hoàn chỉnh PCSrc: PC Add M Tín hiệu điều 4 U khiển để lựa Add X chọn giữa Left Shift (PC+4) hoặc địa 000100 opcode 2-bit 31:26 chỉ đích mà lệnh PCSrc nhánh/nhảy sẽ nhảy tới 01001 25:21 ALUcontrol rs Inst [25:21] 5 Read Read 4 register 1 data 1 00000 20:16 5 Read rt register 2 Register isZero? File ALU 5 Write ALU register result 0000 0000 0000 0011 0000 0000 0000 M Read data 2 M U Write Inst [15:11] data U Immediate X X 15:0 RegWrite RegDst ALUSrc Inst [15:0] 16 Sign 32 Extend Ví dụ: "beq $9, $0, 3" 40
- CE Quy trình thực thi lệnh của MIPS (5 công đoạn) Fetch Instruction Fetch (Nạp lệnh) Instruction Instruction Decode & Operand Fetch Decode (Giải mã và lấy các toán hạng cần thiết, Gọi tắt là “Instruction Decode”) ALU ALU (Giai đoạn sử dụng ALU hay giai đoạn thực Memory thi) Access Memory Access (Giai đoạn truy xuất vùng nhớ) Next Instruction Next Result Result Write (Giai đoạn ghi lại kết quả/lưu trữ) Write 41
- CE Giai đoạn truy xuất vùng nhớ (Memory stage) Giai đoạn truy xuất vùng nhớ: – Chỉ có lệnh Load và Store cần thực hiện các thao tác trong giai đoạn này: • Sử dụng địa chỉ vùng nhớ được tính toán ở giai đoạn ALU • Đọc dữ liệu ra hoặc ghi dữ liệu vào vùng nhớ dữ liệu – Tất cả các lệnh khác sẽ rảnh trong giai đoạn này Đầu vào từ giai đoạn trước (ALU): – Kết quả tính toán được dùng làm địa chỉ vùng nhớ (nếu có thể ứng dụng) Đầu ra cho giai đoạn tiếp theo (Result Write): – Kết quả được lưu trữ lại (nếu cần) 42
- CE Giai đoạn truy xuất vùng nhớ (Memory stage) MemWrite ResultStore Stage ALU Stage Address Read Result Data Write Data Data Memory MemRead Bộ nhớ lưu trữ dữ liệu 43
- Khối Data Memory Vùng nhớ này lưu trữ dữ liệu cần thiết của chương trình MemWrite Inputs: – Address: Địa chỉ vùng nhớ Address Read – Write Data: Dữ liệu sẽ được ghi vào vùng nhớ đối Data Write với lệnh Store Data Data Tín hiệu điều khiển: Memory – Tín hiệu đọc (MemRead ) và ghi (MemWrite); chỉ một tín hiệu được bật lên tại bất kì một thời điểm MemRead nào Output: – Dữ liệu được đọc từ vùng nhớ đối với lệnh Load 44
- CE Giai đoạn Memory: lệnh Load Chỉ những phần liên quan đến Decode & ALU Stage được trình bày lw $21, -50($22) opcode 000100 100011 31:26 ALUcontrol 01001 25:21 10110 rs Inst [25:21] 4 5 RR1 RD1 00000 10101 20:16 5 RR2 MemWrite rt Registers ALU 5 WR ALU Address 1111 1111 1100 1110 1100 1111 1111 0000 0000 0000 0011 0000 0000 0000 M result RD2 M Data U WD Inst [15:11] U Memory Immediate X X 15:0 RegWrite Read Data Write RegDst Data ALUSrc Inst [15:0] 16 Sign 32 Extend MemRead 45
- CE Giai đoạn Memory: lệnh Store Cần Read Data 2 (Decode) để đưa vào Write Data sw $21, -50($22) opcode 000100 101011 31:26 ALUcontrol 01001 25:21 10110 rs Inst [25:21] 4 5 RR1 RD1 00000 10101 20:16 5 RR2 MemWrite rt Registers ALU 5 WR ALU Address 1111 1111 1100 1110 1100 1111 1111 0000 0000 0000 0011 0000 0000 0000 M result RD2 M Data U WD Inst [15:11] U Memory Immediate X X 15:0 RegWrite Read Data Write RegDst Data Inst [15:0] 16 Sign 32 Extend MemRead 46
- Giai đoạn Memory: CE lệnh không truy xuất vùng nhớ Sử dụng thêm một multiplexer để lựa chọn kết quả lưu trữ vào thanh ghi opcode 000000 31:26 add $8, $9, $10 ALUcontrol 25:21 01001 rs Inst [25:21] 4 5 RR1 RD1 MemWrite 01010 20:16 5 RR2 rt Registers ALU 5 WR ALU 01000 15:11 Address M result rd RD2 M Data U WD X U Memory Inst [15:11] shamt 00000 10:6 X RegWrite Read Data M Write RegDst Data U 100000 funct Inst [15:0] 16 Sign 32 X 5:0 Extend MemToReg: Tín hiệu điều khiển giúp lựa MemToReg chọn giá trị lưu vào thanh ghi là từ Read Data hay từ ALU result 47
- CE Quy trình thực thi lệnh của MIPS (5 công đoạn) Fetch Instruction Fetch (Nạp lệnh) Instruction Instruction Decode & Operand Fetch Decode (Giải mã và lấy các toán hạng cần thiết, Gọi tắt là “Instruction Decode”) ALU ALU (Giai đoạn sử dụng ALU hay giai đoạn thực Memory thi) Access Memory Access (Giai đoạn truy xuất vùng nhớ) Next Instruction Next Result Result Write (Giai đoạn ghi lại kết quả/lưu trữ) Write 48
- CE Giai đoạn lưu trữ kết quả (Result Write) Công đoạn Result Write: – Những lệnh ghi kết quả của các phép toán vào thanh ghi: • Ví dụ: số học, logic, shifts, load, set-less-than • Cần chỉ số thanh ghi đích và kết quả tính toán – Những lệnh không ghi kết quả như: store, branch, jump: • Không có ghi kết quả Những lệnh này sẽ rảnh trong giai đoạn này Đầu vào từ giai đoạn trước (Memory): – Kết quả tính toán từ hoặc là từ Memory hoặc là từ ALU 49
- CE Giai đoạn lưu trữ kết quả (Result Write) Memory Memory Stage 5 Read Read register 1 data 1 5 Read register 2 5 Write Registers register Read data 2 Write Result data Công đoạn Result Write không có thêm bất kỳ thành phần nào khác: – Chỉ đơn giản đưa kết quả vào thanh ghi (ngõ Write data của khối Registers/Register file) – Chỉ số của thanh ghi được ghi vào (ngõ vào Write Register) được sinh ra trong giai đoạn Decode Stage 50
- Giai đoạn lưu trữ kết quả (Result Write) add $8, $9, $10 opcode 000000 31:26 ALUcontrol 25:21 01001 rs Inst [25:21] 4 5 RR1 RD1 MemWrite 01010 20:16 5 RR2 rt Registers ALU 5 WR ALU 01000 15:11 Address M result rd RD2 M Data U WD MemToReg X U Memory Inst [15:11] shamt 00000 10:6 X RegWrite Read Data M Write Data U 100000 funct Inst [15:0] Sign X 5:0 Extend 51
- Datapath hoàn chỉnh Instruction Memory PC Add M Instruction 4 U Add Left Shift X Address 2-bit opcode 000000 31:26 PCSrc 01001 25:21 ALUcontrol rs Inst [25:21] 4 5 RR1 RD1 01010 20:16 5 is0? RR2 MemWrite rt Registers ALU ALUSrc 5 WR ALU 01000 15:11 Address M result rd RD2 M U WD Data MemToReg U Inst [15:11] X Memory shamt 00000 10:6 X RegWrite Read Data M RegDst Write Data U 100000 funct Inst [15:0] Sign X 5:0 Extend MemRead 52
- CE BỘ XỬ LÝ Nội dung phần 1 1. Giới thiệu 2. Nhắc lại các quy ước thiết kế logic 3. Xây dựng đường dữ liệu (datapath) đơn giản 4. Hiện thực datapath đơn chu kỳ 53
- CE Hiện thực datapath 1. Inputs của khối “Registers”, “Control” và “Sign-extend” ???? Datapath với đầy đủ dữ liệu input cho từng khối 54
- CE Hiện thực datapath Trường op (hay opcode) luôn chứa bits từ 31:26. Hai thanh ghi dùng để đọc trong tất cả các lệnh luôn luôn là rs và rt, tại vị trí bits từ 25:21 và 20:26. Thanh ghi nền cho lệnh load và store luôn là rs và tại vị trí bits 25:21. 16 bits offset cho beq, lw và sw thì luôn tại vị trí 15:0. Các thanh ghi đích dùng để ghi kết quả vào ở hai vị trí: Với lw, thanh ghi đích tại vị trí bits từ 20:16 (rt), trong khi với nhóm lệnh logic và số học, thanh ghi đích ở vị trí 15:11 (rd). Vì vậy, một multiplexor cần sử dụng ở đây để lựa chọn thanh ghi nào sẽ được ghi. 55