Mở đầu Trong kiến trúc máy tính, các lệnh cơ bản như lệnh "AND" đóng vai trò quan trọng trong việc xử lý dữ liệu và thực hiện các phép toán luận lý giữa các bit.. Lệnh "AND" là một trong
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA TOÁN - TIN
BÁO CÁO HỌC PHẦN: KIẾN TRÚC MÁY TÍNH
NHÓM 10
Hoàng Tiến Đạt : 20227012 Hoàng Thế Dương : 20227100
Vũ Minh Đức : 20227097
Mã lớp học : 155351 GVHD : TS Đào Thành Chung
Hà Nội, 11/2024
Trang 2Mở đầu
Trong kiến trúc máy tính, các lệnh cơ bản như lệnh "AND" đóng vai trò quan trọng trong việc xử lý dữ liệu và thực hiện các phép toán luận lý giữa các bit Lệnh "AND" là một trong những lệnh bitwise cơ bản, thường được sử dụng trong các phép toán thao tác với bit, điều khiển luồng chương trình, và các tác vụ yêu cầu xử lý dữ liệu ở mức thấp
Lệnh "AND" thực hiện phép toán "AND" giữa hai thanh ghi nguồn (rs và rt) và lưu trữ kết quả vào thanh ghi đích (rd) Phép toán "AND" giữa hai bit chỉ trả về giá trị
1 khi cả hai bit đều là 1, ngược lại, kết quả sẽ là 0 Điều này giúp trong việc kiểm tra và thao tác với các bit của dữ liệu, như khi cần kiểm tra hoặc xóa các bit cụ thể trong một thanh ghi
Trang 3Bài tập về nhà số 1
AND instruction
Tổng quan về lệnh AND
- Mục đích: Thực hiện phép AND bit giữa nội dung của thanh ghi nguồn thứ nhất (rs) và thanh ghi nguồn thứ hai (rt), và lưu kết quả vào thanh ghi đích (rd)
- Cú pháp:
AND $destination_register, $first_source_register, $second_source_register
Câu 1: Chọn 1 lệnh tại đường dẫn bên dưới và giải thích cụ thể từ bước xảy ra
trên hình vẽ minh hoạ
a) Các thành phần
1 PC (Program Counter):
• PC (ô màu xanh lá) cung cấp địa chỉ 00000108H cho Instruction Memory
(IM)
• Đây là địa chỉ của lệnh AND trong bộ nhớ lệnh
2 Instruction Memory (IM):
• IM (ô màu tím) sẽ tải lệnh tại địa chỉ 00000108H
• Lệnh AND có định dạng R-type, gồm:
o rs: Thanh ghi nguồn 1
o rt: Thanh ghi nguồn 2
o rd: Thanh ghi đích (nơi kết quả được lưu)
o Opcode: Xác định đây là lệnh AND
• Lệnh này sẽ được gửi đến Control Unit (CU) và Register File (RF)
3 Control Unit (CU):
• CU (hình oval đỏ) giải mã opcode của lệnh AND và tạo ra các tín hiệu điều
khiển
• Tín hiệu điều khiển chính:
o RegDst = 1: Chọn thanh ghi đích rd
o ALUOp = 0000: Thực hiện phép toán AND
o RegWrite = 1: Cho phép ghi kết quả vào thanh ghi đích
Trang 44 Register File (RF):
• RF (khối tím-xanh) đọc giá trị từ hai thanh ghi nguồn:
o Read Addr 1: Địa chỉ thanh ghi rs
o Read Addr 2: Địa chỉ thanh ghi rt
• Giá trị từ rs và rt sẽ được gửi tới ALU để thực hiện phép toán
5 ALU (Arithmetic Logic Unit):
• ALU (khối màu hồng) nhận hai giá trị đầu vào từ thanh ghi rs và rt
• ALU Control sẽ chỉ thị thực hiện phép toán AND (bitwise)
o Phép toán: Result = rs AND rt
• Kết quả sẽ được lưu vào ALU Result
6 Ghi kết quả (Write Back):
• Kết quả từ ALU được gửi trở lại Register File
• Thanh ghi đích (rd) sẽ được cập nhật với kết quả của phép toán AND
7 Adder (Cộng PC + 4):
• Đồng thời với quá trình thực thi lệnh AND, Adder tính toán địa chỉ của lệnh
tiếp theo:
o PC + 4 = 00000108H + 4 = 0000010CH
• Địa chỉ mới sẽ được nạp vào PC để chuẩn bị cho chu kỳ lệnh tiếp theo
Trang 5b) Giải thích các bước chạy
Bước 1: Fetch (Lấy lệnh từ Instruction Memory)
1 PC (Program Counter):
o PC chứa địa chỉ 00000108H, đây là vị trí của lệnh AND trong bộ nhớ
lệnh
o PC gửi địa chỉ này đến Instruction Memory (IM)
2 Instruction Memory (IM):
o IM đọc lệnh từ địa chỉ 00000108H và tải lệnh:
Opcode: 000000B (R-type) rs: $7 (00111B)
rt: $4 (00100B) rd: $10 (01010B) Function: 100100B (AND)
o Đồng thời, Adder tính PC + 4 = 00000108H + 4 = 0000010CH để
chuẩn bị cập nhật PC sau này
Tóm tắt bước 1:
PC → IM nạp lệnh → Adder tính PC+4
Trang 6Bước 2: Decode (Giải mã lệnh và đọc thanh ghi)
1 Control Unit (CU):
o CU giải mã opcode 000000B, xác định đây là lệnh R-type
o CU tạo các tín hiệu điều khiển:
▪ RegDst = 1: Chọn thanh ghi đích là rd
▪ ALUOp = 10: Yêu cầu ALU thực hiện phép toán logic (AND)
▪ RegWrite = 1: Cho phép ghi kết quả vào thanh ghi đích
2 Register File (RF):
o RF đọc giá trị từ hai thanh ghi nguồn:
▪ rs = $7: Giá trị 00111B
▪ rt = $4: Giá trị 00100B
o Hai giá trị này được gửi đến ALU để chuẩn bị thực hiện phép toán
AND
Tóm tắt bước 2:
CU giải mã lệnh → Tạo tín hiệu điều khiển → RF đọc dữ liệu từ $7 và $4
Trang 7Bước 3: Execute (Thực hiện phép toán AND)
1 ALU Control:
o CU gửi tín hiệu ALUOp = 10 và kết hợp với Function Bits = 100100B
o ALU Control xác định phép toán cần thực hiện là AND
2 ALU:
o Thực hiện phép toán bitwise AND giữa hai giá trị từ thanh ghi nguồn:
bash Input 1: 00111B (giá trị từ $7) Input 2: 00100B (giá trị từ $4) Result: 00100B
o Kết quả 00100B được gửi ra từ ALU
Tóm tắt bước 3:
ALU Control xác định phép toán → ALU thực hiện phép toán AND → Kết quả là
00100B
Trang 8Bước 4: Write Back (Ghi kết quả vào thanh ghi đích)
1 Register File (RF):
o Kết quả 00100B từ ALU được ghi vào thanh ghi đích rd = $10
(01010B)
o CU kích hoạt tín hiệu RegWrite = 1 để cho phép ghi kết quả
2 PC Update:
o Adder đã tính PC + 4 = 0000010CH ở bước trước
o MUX chọn giá trị PC + 4 làm địa chỉ mới cho PC, vì đây không phải
lệnh nhảy
o PC được cập nhật thành 0000010CH, trỏ đến lệnh tiếp theo
Tóm tắt bước 4:
Kết quả 00100B được ghi vào thanh ghi đích $10 → PC được cập nhật thành
0000010CH
Trang 9Tổng kết toàn bộ quá trình lệnh AND:
1 Fetch: PC gửi địa chỉ 00000108H → IM nạp lệnh AND → Adder tính PC + 4
2 Decode: CU giải mã lệnh → RF đọc giá trị từ thanh ghi $7 và $4
3 Execute: ALU thực hiện phép toán AND giữa hai giá trị → Kết quả là 00100B
4 Write Back: Kết quả 00100B được ghi vào thanh ghi $10 → PC cập nhật
thành 0000010CH
Kết quả cuối cùng:
• Thanh ghi $10: Chứa giá trị 00100B
• PC: Được cập nhật thành 0000010CH để chuẩn bị cho lệnh tiếp theo
Trang 10Câu 2: Giải thích lệnh đã chọn ở câu (1) theo format ở trang web sau:
AND
Format:
AND rd, rs, rt [R-type] MIPS Architecture Extension: MIPS I AND $10, $7, $4
Mục đích:
Thực hiện phép toán AND logic từng bit
Mô tả:
rd <- rs AND rt
Nội dung của GPR rs được kết hợp với nội dung của GPR rt trong phép toán AND logic từng bit Kết quả được đặt vào GPR rd
Hạn chế:
Không có
Hoạt động:
GPR[rd] <- GPR[rs] và GPR[rt]
Ngoại lệ:
Không có
Trang 11Kết luận Trong kiến trúc máy tính, lệnh AND là một lệnh R-type cơ bản và quan trọng
trong bộ lệnh MIPS Thông qua quá trình thực thi lệnh, từ giai đoạn Fetch (lấy lệnh)
đến Write Back (ghi kết quả), lệnh AND đã thực hiện phép toán bitwise AND giữa
hai thanh ghi nguồn và lưu kết quả vào thanh ghi đích
Qua bài này, chúng ta có thể thấy rõ cách thức hoạt động của lệnh AND trong
kiến trúc MIPS cũng như vai trò quan trọng của các phép toán logic trong xử lý dữ
liệu ở mức thấp Việc nắm vững lệnh AND không chỉ giúp hiểu sâu hơn về các phép
toán bitwise mà còn là nền tảng quan trọng để tiếp cận các lệnh khác trong bộ lệnh
MIPS và kiến trúc máy tính nói chung