ĐỒ ÁN VI XỬ LÝ VÀ MÁY TÍNH
lượt xem 29
download
Thiết kế một chip MIPS single-cycle đơn giản để thực thi các lệnh LW, SW, J , JR, BNE, XORI, SLT, ADD, SUB trong một chu kỳ lệnh.Dùng bộ đếm chương trình PC lấy địa chỉ lệnh trong bộ nhớ lệnh ( Instruction Memory), và cập nhật PC đến giá trị tiếp theo. Giải mã lệnh bằng cách gửi cái OPCODE vào khối CONTROL.(Đọc giá trị các thanh ghi từ REGISTER FILE). Thực thi lệnh
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: ĐỒ ÁN VI XỬ LÝ VÀ MÁY TÍNH
- ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN TỬ-VIỄN THÔNG ĐỒ ÁN VI XỬ LÝ VÀ MÁY TÍNH LAB 3 : MIPS Single-cycle CPU SINH VIÊN THỰC HIỆN: PHAN QUỐC THẮNG 08DT3 HOÀNG THANH TÚ 08DT3 NGUYỄN THỊ TÙNG 08DT4 1. MỤC ĐÍCH: Thiết kế một chip MIPS single-cycle đơn giản để thực thi các lệnh LW, SW, J , JR, BNE, XORI, SLT, ADD, SUB trong một chu kỳ lệnh. 2. TỐNG QUAN: 2.1. Các bước thực thi lệnh: Gồm có 3 bước chính - Dùng bộ đếm chương trình PC lấy địa chỉ lệnh trong bộ nhớ lệnh ( Instruction Memory), và cập nhật PC đến giá trị tiếp theo. - Giải mã lệnh bằng cách gửi cái OPCODE vào khối CONTROL.(Đọc giá trị các thanh ghi từ REGISTER FILE) - Thực thi lệnh. 2.2. Giới thiệu các lệnh: Page 1
- Trong MIPS có 3 khuôn dạng lệnh R-Format, I-Format và J-Format •R-Format: op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits •I-Format: op rs rt immediate 6 bits 5 bits 5 bits 16 bits •J-Format: op immediate 6 bits 26 bits Với op : 6 bits OPCODE rs : 5 bits chứa mã địa chỉ của thanh ghi nguồn rt : 5 bits chứa mã địa chỉ của thanh ghi nguồn rd : 5 bits chứa mã địa chỉ của thanh ghi đích shamt : 5 bits dùng trong các lệnh dịch funct: 6 bits dùng để phân loại trong các lệnh R-Format immediate : 16 bits chứa toán hạng và địa chỉ ofset immediate : 26 bits chứa địa chỉ đích trong lệnh JUMP -Khuôn dạng cụ thể của mỗi lệnh: Instruction Meaning Format add rd, Cộng 0 rs rt rd 0x20 rs, rt sub rd, Trừ 0 rs rt rd 0x22 rs, rt slt rd, So sánh 0 rs rt rd 0x2a rs, rt jr rs Nhảy đến 0 rs rt 0 0x08 [rs] xori rt, Xor 0x0e rs rt im im immediate lw rt, Load word 0x23 rs rt im im sw rt, Store word 0x2b rs rt im im bne rs, Nhảy nếu 0x05 rs rt im rt, im không Page 2
- bằng j im Jump 0x02 im 2.3. Phân tích lệnh: - Đối với các lênh xử lý dữ liệu khuôn dạng R-Format – ADD, SUB, SLT : Fetch instruction: Instruction ← MEM[PC] Fetch operands: data1 ← Reg(Rs), data2 ← Reg(Rt) Execute operation: ALU_result ← funct(data1, data2) Write ALU result: Reg(Rd) ← ALU_result Next PC address: PC ← PC + 4 - Đối với các lênh xử lý dữ liệu (I_FORMAT – XORI) : Fetch instruction: Instruction ← MEM[PC] Fetch operands: data1 ← Reg(Rs), data2 ← extend-sign (imm16) Execute operation: ALU_result ← XOR(data1, data2) Write ALU result: Reg(Rt) ← ALU_result Next PC address: PC ← PC + 4 - Đối với lênh load dữ liệu (I_FORMAT – LW) : Fetch instruction: Instruction ← MEM[PC] Fetch base register: base ← Reg(Rs) Calculate address: address ← base + extend-sign (imm16) Read memory: data ← MEM[address] Write register Rt:Reg(Rt) ← data Next PC address: PC ← PC + 4 - Đối với lênh lưu dữ liệu (I_FORMAT – SW) : Fetch instruction: Instruction ← MEM[PC] Fetch registers: base ← Reg(Rs), data ← Reg(Rt) Calculate address: address ← base + extend-sign (imm16) Write memory: MEM[address] ← data Next PC address: PC ← PC + 4 - Đối với lênh rẻ nhánh (I_FORMAT – BNE) : Fetch instruction: Instruction ← MEM[PC] Fetch operands: data1 ← Reg(Rs), data2 ← Reg(Rt) Execute operation: ALU_result ← SUB (data1, data2) Branch: if (zero!=0) PC ← (PC + 4) + 4×extend-sign(imm16) else PC ← PC + 4 Page 3
- - Đối với lênh nhảy (J_FORMAT – JUMP) : Fetch instruction: Instruction ← MEM[PC] Target PC address: target ← PC[31:28] , Imm26 , ‘00’ Jump: PC ← target - Đối với lênh nhảy (R_FORMAT –JR) : Fetch instruction: Instruction ← MEM[PC] Fetch operands: address ← Reg(Rs) Jump: PC ← address 3. CÁC KHỐI CƠ SỞ CẦN THIẾT: - Sau khi phân tích cách hoạt động mỗi lệnh, ta sẽ xây dựng các khối cơ bản để thực thi các lệnh đó 3.1 Khối PC: - Khối bộ đếm chương trình, có tác dụng như một bộ đệm để chỉ đến địa chỉ của câu lệnh tiếp theo. - Giá trị đầu vào được xác định tùy theo câu lệnh mới được thực hiện. 3.2 Khối Instruction Memory: - Là khối lưu các lệnh cần thực thi, gồm 1 đầu vào 32 bits address và đầu ra là 32 bits instruction - Địa chỉ đầu vào được lấy từ PC và sẽ tham chiếu đến file lưu lệnh dưới tên instr.dat ( ở đây Instruction Memory được đánh địa chỉ theo word nên ta phải lấy địa chỉ trong PC / 4 và làm tròn.) - File instr.dat là file chứa mã máy của các câu lệnh cần thực hiện. Đầu ra sẽ là mã máy ứng với địa chỉ của instruction memory được tham chiếu tới. Page 4
- instrmem 0 WE buf[31..0] 32' h00000000 -- DATAIN[31..0] DATAOUT[31..0] instruction[31..0] 10' h000 -- WADDR[9..0] BUF (SOFT) address[31..0] RADDR[9..0] SYNC_RAM 3.3 Khối ADD: Cộng 2 tín hiệu vào 32bit, khối này được xây dựng từ 32 khối add_bit đã được làm rõ trong bài 2. 3 khối dùng để Store/Fetch Instruction, và tăng thanh ghi PC lên.Từ 3 khối trên ta xây dựng được datapath như sau: 3.4 Khối register file: Page 5
- - Như đã làm ở lab1, khối này bao gồm 32 thanh ghi 32bits được xây dựng từ các D_FF. - Có hai đầu vào 5 bits để chọn đọc 2 thanh ghi cùng 1 lúc. Dữ liệu ra là giá trị chứa trong 2 thanh ghi 32bits. Ngoài ra có thể viết dữ liệu vào thanh ghi bằng đ ường Write Data 32bits. - Bên cạnh đó còn có tín hiệu điều khiển Regwrite để cho phép ghi dữ liệu. 3.5 Khối ALU: - Như đã làm ở lab2, phục vụ cho quá trình tính toán các phép tính số học ADD, SUB, XOR 32bits để thực thi các lệnh ADD, SUB, XOR, SLT, BNE. - Ngoài ra còn có các cờ báo hiệu như overflow, Zero, … Page 6
- Ta sử dụng 2 khối Register file và ALU để thực hiện các lệnh dạng R-Format.Ta xây dựng được datapath như sau: 3.6 Khối Data Memory: - Khối này có chức năng đọc dữ liệu từ bộ nhớ hay ghi dữ liệu vào bộ nhớ tùy theo tín hiệu điều khiển. - Cũng giống như trên khối Data Memory này tham chiếu tới file data.dat lưu các giá trị dữ liệu tương ứng. - Bộ nhớ dữ liệu có 128 thanh ghi 8bit, do đó khi ghi dữ liệu ghi lần lượt từng 8bit, như vậy sau 4 lần sẽ được dữ liệu hoàn thiện 32bit. 3.7 Khối Sign Extend: Khối này chuyển từ 16bits sang 32bits + Mở rộng zero: thêm 16 số 0 vào trước nó. + Mở rộng dấu : - Đối với MSB của 16 bit là “0” thì ta thêm 16 số “0” trước nó. - Đối với MSB của 16 bit là “1” thì ta thêm 16 số “1” trước nó. + Với tín hiệu điều khiển (ex_control = 0) là mở rộng zero và (ex_control = 1) là mở rộng dấu. Page 7
- Từ datapath của R-Format ta thêm vào đó 2 bộ DATA MEMORY và SIGN EXTEND để thực hiên các lệnh STORE/LOAD 3.8 Khối Shift_Left 2: dịch 32 bits sang trái 2 bits Ta chỉ lấy 30 phần tử đầu tiên sau đó thêm 2 số 0 ở cuối cùng Đối với Branch Instruction: Page 8
- 3.9 Khối mux2x5to5: - Đối với lệnh R, thanh ghi ghi dữ liệu là rd còn đối với nhóm lệnh I là rt nên cần sử dụng một bộ mux2x5to5 lựa chọn tín hiệu vào với tín hiệu điều khiển là RegDst (Sel). 3.10 Khối mux2x32to32: lựa chọn 1 trong 2 đầu vào 32 bit - Đối với nhóm lệnh R tín hiệu thứ 2 vào ALU là Read data 2 còn đối với lệnh I là instruction[15-0] đã mở rộng dấu, do đó cần 1 bộ mux2x32to32 để lựa chọn tín hiệu đầu vào thứ 2 cho ALU. - Dùng khi cập nhật giá trị cho PC. - Dùng khi chọn data để đưa về ghi vào thanh ghi trong khối regfile. - Khối này được xây dựng từ 32 khối mux2to1 4. XÂY DỰNG KHỐI CONTROL: - Từ 6bits đầu tiên của mã lệnh, ta sẽ tạo ra các bit tính hiệu đơn để điều khiển các quá trình hoạt động của các khối cơ sở như cho phép đọc dữ liệu, cho phép ghi, rẽ nhánh, nhảy đến một nhãn Page 9
- - Riêng đối với khối ALU muốn thực hiện các phép toán đúng, ta còn phải kết hợp với 6bits cuối cùng của mã lệnh để điều khiển các phép toán trong ALU opcode 00000 00010 00001 00000 100011 00000 00000 101011 001110 0 1 0 0 0 0 add bne j Jr Lw slt sub sw Xori RegDst 1 X X 1 0 1 1 0 0 ALUSrc 0 0 X X 1 0 0 1 1 Memtore 0 X X X 1 0 0 X 0 g RegWrite 1 0 0 1 1 1 1 0 1 MemRea X X X X 1 X X X X d MemWrit 0 0 0 0 0 0 0 1 0 e Branch 0 1 X 0 0 0 0 0 0 ALUop1 1 0 X 1 0 1 1 0 1 ALUop0 0 1 X 0 0 0 0 0 1 Jump 0 0 1 X 0 0 0 0 0 extend X 1 X X 1 X X 1 0 Ta tiếp tục tạo khối ALU_Control để điều khiển hoạt động ở bộ ALU và tín hiệu nhảy cho lệnh JR. Các tín hiệu ra sẽ căn cứ vào 2 bits ALUOp ở khối CONTROL và 6bits cuối cùng ở mã lệnh. opcode 10 01 10 00 00 10 10 11 Functio 100000 001000 101010 100010 n add bne jr lw sw slt sub xori Op0 0 0 0 0 0 1 0 1 Op1 0 1 0 0 0 1 1 0 Op2 0 1 0 0 0 1 1 0 Op3 0 0 1 0 0 0 0 0 Op0=A(CE) +AB 0p1=B + A(CE) + A(E) Op2==OP1 OP3= A(CE) 5. XÂY DỰNG DATAPATH: Page 10
- - Từ việc phân tích lệnh và xây dựng các khối cơ sở ở trên, ta hình thành nên datapath đối với mỗi lệnh như sau. Page 11
- 6. XÁC ĐỊNH XUNG CLOCK: Như ta đã biết thì bộ MIPS single cycle có nghĩa là trong 1 chu kỳ xung, MIPS sẽ thực hiện 1 một lệnh. Nhưng ở đây các lệnh có thời gian thực hiện không giống nhau do việc truy cập vào các khối cơ sở ở mỗi lệnh là khác nhau đồng thời thời gian để truy cập mỗi khối cũng không giống. Dựa vào bảng sau để chọn clock cycle: 7. Mô phỏng trên ModelSim Page 12
- Đoạn lệnh được sử dụng trong mô phỏng: ##code kiem tra khoi vi xu MIPs 32bits ## thuc hien kiem tra cac lenh LW,SW,ADD,J,BNE,SlT,JR,XORI ##student: Phan Quoc Thang 08dt3 ## Hoang Thanh Tu 08dt3 ## Nguyen Thi Tung 08dt4 ##=========================================================== .text main: lw $1, 0($2) #0x8c410000 lw $2, 4($3) #0x8c620004 add $4,$2,$1 # 0x00412020 sw $4,20($0) # 0xac040014 xori $3,$1,10 #0x3823000a j T1 #0x08100011 add $6,$2,$3 #0x00433020 sw $6,10($0) # 0xac06000a T1: lw $6,12($7) #0x8ce6000c add $3,$2,$3 # 0x00431820 T2: slt $4,$2,$1 # 0x0041202a sub $2,$2,$2 # 0x00421022 bne $2,$1,T2 # 0x1441fffd jr $6 # 0x00c00008 sub $2,$3,$4 # 0x00641022 #end Dạng sóng : Page 13
- Page 14
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Đồ án "Quản lý bộ nhớ trong Linux"
0 p | 1055 | 273
-
Luận văn : Giao tiếp máy tính với KIT vi xử lý
118 p | 450 | 260
-
Đồ án : Chính sách bảo mật trên windows server 2003
57 p | 742 | 202
-
Đồ án: Thiết kế nhà máy sản xuất phân vi sinh từ rác thải sinh hoạt năng suất 5 tấn/giờ
61 p | 654 | 112
-
Đồ án tốt nghiệp Hệ thống Quản lý đào tạo, sát hạch và cấp giấy phép lái xe
78 p | 553 | 103
-
Đồ án tốt nghiệp: Nghiên cứu và port hệ điều hành thời gian
63 p | 356 | 84
-
Đồ án môn học: Giao tiếp máy tính với vi điều khiển bằng công nghệ USB điều khiển led ma trận
40 p | 257 | 55
-
LUẬN VĂN: ĐIỀU KHIỂN MÁY TÍNH BẰNG CÔNG NGHỆ XỬ LÝ ẢNH TỪ WEBCAM
22 p | 185 | 45
-
Đồ án công nghệ 2: Thiết kế nhà máy sản xuất phân vi sinh từ rác thải sinh hoạt, năng suất 10 tấn rác/giờ
47 p | 175 | 43
-
Đồ án tốt nghiệp Kỹ thuật điện tử truyền thông: Thiết kế và thi công hệ thống phân loại sản phẩm bút chì theo màu sắc
93 p | 113 | 31
-
Đồ án tốt nghiệp ngành Kỹ thuật môi trường: Thiết kế hệ thống xử lý nước thải nhà máy sữa công suất 400m3 /ngày đêm
103 p | 84 | 21
-
Đồ án tốt nghiệp: Thiết kế và thi công bộ thí nghiệm vi xử lý giao tiếp KIT INTEL GALILEO
82 p | 77 | 19
-
Báo cáo nghiên cứu khoa học: " ỨNG DỤNG XỬ LÝ TÍN HIỆU SỐ (DSP) ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ ĐIỆN MỘT CHIỀU"
6 p | 162 | 16
-
Đồ án tốt nghiệp: Thiết kế và thi công khung ảnh điện tử
89 p | 95 | 13
-
Báo cáo đồ án 2: Thiết kế mạch đọc thẻ RFID và giao tiếp với máy tính qua cổng UART
51 p | 39 | 12
-
Luận án Tiến sĩ Kỹ thuật máy tính: Nghiên cứu kỹ thuật xử lý ảnh dựa vào công nghệ vi mạch quang tử tích hợp
114 p | 12 | 7
-
Luận án tiến sĩ Kỹ thuật: Nghiên cứu ảnh hưởng của thông số công nghệ gia công cơ nhiệt đến tổ chức và cơ tính của thép song pha được luyện từ sắt xốp
154 p | 42 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn