1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Học phần kiến trúc máy tính báo cáo bài tập về nhà số 1 Đề tài beq instruction

11 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề BEQ Instruction
Tác giả Vũ Đức Hoan, Phạm Tuấn Anh, Nguyễn Văn Đại
Người hướng dẫn Thầy Đào Thành Trung
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Khoa Toán - Tin
Thể loại Báo Cáo Bài Tập Về Nhà
Định dạng
Số trang 11
Dung lượng 533,96 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi điều kiện "bằng nhau" được thỏa mãn nghĩa là giá trị trong thanh ghi hoặc giữa các thanh ghi là giống nhau, BEQ sẽ khiến chương trình chuyển đến một địa chỉ chỉ định mà không thực hi

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

KHOA TOÁN - TIN -🙠🕮🙠 -

HỌC PHẦN: KIẾN TRÚC MÁY TÍNH BÁO CÁO BÀI TẬP VỀ NHÀ SỐ 1

ĐỀ TÀI: BEQ INSTRUCTION

Giảng viên hướng dẫn: Thầy Đào Thành Trung

Sinh viên thực hiện: VŨ ĐỨC HOAN – 20227018

PHẠM TUẤN ANH – 20227082 NGUYỄN VĂN ĐẠI - 20227091

Nhóm: 21

Trang 2

I, Giới thiệu

Trong lập trình assembly và các ngôn ngữ lập trình cấp thấp, BEQ (Branch

if Equal) là một chỉ thị điều khiển nhánh (branch instruction) rất quan trọng BEQ được sử dụng trong các bộ vi xử lý (CPU) để thực hiện nhánh (jump) trong chương trình khi hai giá trị được so sánh là bằng nhau Cụ thể, BEQ thường được dùng sau một phép so sánh, nơi nếu hai giá trị được so sánh là bằng nhau, chương trình sẽ nhảy đến một vị trí khác trong mã lệnh

BEQ hoạt động dựa trên kết quả của một phép so sánh trước đó, thường là các phép so sánh giữa hai thanh ghi hoặc giữa một thanh ghi và một hằng

số Khi điều kiện "bằng nhau" được thỏa mãn (nghĩa là giá trị trong thanh ghi hoặc giữa các thanh ghi là giống nhau), BEQ sẽ khiến chương trình chuyển đến một địa chỉ chỉ định mà không thực hiện các lệnh kế tiếp

II, Giải thích các bước

a, Các thành phần

1 PC (Program Counter):

PC (ô màu xanh lá) lưu địa chỉ của lệnh hiện tại cần thực thi Trong

hình, giá trị của PC là 00000114H (dạng thập lục phân), đây là địa chỉ của lệnh BEQ

PC cung cấp địa chỉ này cho Instruction Memory để tải lệnh cần thực

hiện

2 Instruction Memory (IM):

Instruction Memory (IM) (ô màu tím) dùng để tải lệnh được lưu trữ

tại địa chỉ được cung cấp bởi PC

• Trong trường hợp này, lệnh BEQ được tải về và chứa:

o Hai thanh ghi nguồn (rs và rt) dùng để so sánh

o Một giá trị immediate (giá trị hằng) dùng để tính địa chỉ đích

nếu nhảy

Lệnh này được gửi tới Control Unit (CU) và Register File (RF) để

giải mã và xử lý

3 Control Unit (CU):

Trang 3

Control Unit (CU) (hình oval đỏ) chịu trách nhiệm giải mã lệnh từ

Instruction Memory Nó nhận diện opcode của lệnh BEQ và tạo ra các tín hiệu điều khiển cho các thành phần khác

• Đối với BEQ:

o CU điều khiển ALU thực hiện phép trừ (rs - rt) để so sánh

o Kích hoạt tín hiệu kiểm tra Zero Flag từ kết quả của ALU

o Nếu điều kiện nhánh đúng (Zero = 1), tín hiệu nhảy được kích hoạt

4 Register File (RF):

Register File (RF) (khối màu tím-xanh) dùng để đọc giá trị của các

thanh ghi nguồn (rs và rt) được chỉ định trong lệnh BEQ

• Đối với BEQ:

o Read Address 1 và Read Address 2 chỉ định địa chỉ của hai

thanh ghi cần so sánh

o Giá trị đọc từ hai thanh ghi này được gửi tới ALU để thực hiện

phép so sánh

5 ALU (Arithmetic Logic Unit):

ALU (khối màu hồng và tím) thực hiện phép trừ giữa hai giá trị từ các

thanh ghi (rs - rt)

Nếu kết quả là 0 (hai thanh ghi bằng nhau), Zero Flag được đặt thành

1

Zero Flag quyết định xem nhánh (branch) có được thực hiện hay

không

6 Adder (Tính địa chỉ lệnh kế tiếp):

Song song với quá trình so sánh thanh ghi, Adder tính toán địa chỉ của

lệnh kế tiếp là PC + 4

• Đối với BEQ, nếu điều kiện nhánh đúng (Zero = 1), địa chỉ này sẽ được thay thế bằng địa chỉ nhảy đích

7 Shift Left 2 (Tính địa chỉ nhảy đích):

• Shift Left 2 dịch trái giá trị immediate trong lệnh BEQ lên 2 bit để đảm bảo địa chỉ căn chỉnh theo từ (word-aligned)

Trang 4

• Giá trị này sau đó được cộng với PC + 4 để tính địa chỉ nhảy đích

b, Giải thích các bước chạy

Bước 1:

Mục tiêu của bước này là tải lệnh BEQ từ bộ nhớ chỉ dẫn (Instruction

Memory) dựa trên giá trị của Program Counter (PC) Quá trình diễn ra như

sau:

Cách Hình Tròn Di Chuyển trong Bước Thứ Nhất (Fetch):

Trong lệnh BEQ, khi dữ liệu hoặc tín hiệu đi qua các khối, hình tròn sẽ di chuyển theo luồng dữ liệu tương ứng:

Bắt đầu từ PC (Program Counter):

o Hình tròn xuất phát từ khối PC, biểu thị địa chỉ hiện tại (PC) của lệnh

BEQ

o Địa chỉ này được truyền qua đường dẫn dữ liệu (data bus) tới

Instruction Memory (IM)

Tới Instruction Memory (IM):

o Hình tròn di chuyển đến IM để biểu thị rằng lệnh tại địa chỉ PC đã

được truy cập và nạp vào

o Lệnh BEQ được giải mã tại Control Unit (CU)

Trang 5

Đi tới Adder (Tính PC+4):

o Đồng thời, giá trị của PC được gửi tới Adder để tính toán địa chỉ của

lệnh kế tiếp (PC + 4)

o Hình tròn thể hiện rằng địa chỉ kế tiếp đã được tính toán xong và sẵn sàng sử dụng cho bước tiếp theo

Bước 2: Bước này nhằm giải mã lệnh BEQ và chuẩn bị dữ liệu cần thiết cho bước xử lý tiếp theo

1 Từ Instruction Memory đến Control Unit (CU):

o Sau khi lệnh BEQ được tải từ Instruction Memory (IM) ở bước trước, nó được gửi đến Control Unit (CU)

o Hình tròn di chuyển qua đường nối để biểu thị việc lệnh BEQ được giải mã trong CU

2 Giải mã lệnh trong CU:

o CU phân tích opcode của lệnh BEQ để xác định đây là lệnh rẽ

nhánh (Branch if Equal)

o Dựa trên opcode, CU tạo ra các tín hiệu điều khiển cho các thành phần khác:

▪ Điều khiển ALU thực hiện phép so sánh (rs - rt)

Trang 6

Tín hiệu kích hoạt Sign Extender để xử lý giá trị Immediate từ

lệnh

3 Tới Register File (RF):

o RF được kích hoạt bởi các tín hiệu từ CU

o Hình tròn di chuyển đến RF qua hai đường nối, biểu thị rằng hai địa chỉ thanh ghi nguồn (Read Addr 1 và Read Addr 2) được trích xuất

từ lệnh BEQ để đọc dữ liệu thanh ghi

o Giá trị hai thanh ghi (rs và rt) được truyền đến ALU để chuẩn bị so

sánh

4 Tới Sign Extender:

o Giá trị Immediate trong lệnh BEQ được gửi đến Sign Extender, nơi

nó được mở rộng dấu để tạo ra giá trị bù 2 (sign-extended value)

o Hình tròn minh họa dòng dữ liệu từ Sign Extender tới Shift Left 2 ở

bước tiếp theo

Bước 3:

1 Từ Register File (RF) Đến ALU:

o Hình tròn đầu tiên di chuyển từ Register File (RF) đến ALU, biểu

thị rằng:

▪ Hai giá trị đọc từ rs và rt (Read Data 1 và Read Data 2) đã được gửi đến ALU để chuẩn bị thực hiện phép toán so sánh

Trang 7

2 Từ Sign Extender đến Shift Left 2:

o Một luồng dữ liệu khác được biểu diễn bởi hình tròn di chuyển từ

Sign Extender đến Shift Left 2

o Tại đây, giá trị Immediate đã được mở rộng dấu (sign-extended) được dịch trái 2 bit để chuẩn bị cho bước tính toán địa chỉ nhánh trong bước sau

3 Từ CU Sang ALU CTRL:

o Hình tròn di chuyển từ Control Unit (CU) đến ALU Control (ALU CTRL):

CU giải mã lệnh và xác định loại phép toán mà ALU phải thực

hiện Trong trường hợp này, CU phát tín hiệu để chỉ đạo ALU thực hiện phép trừ (ALU Operation = Subtraction)

▪ Tín hiệu từ CU đến ALU CTRL giúp thiết lập chế độ hoạt động của ALU, bảo đảm ALU so sánh đúng hai giá trị từ RF

4 Trong ALU:

o Hình tròn tiếp tục biểu diễn dữ liệu đang được xử lý trong ALU Tại đây, ALU thực hiện phép toán so sánh rs - rt

o Kết quả của phép toán được sử dụng để thiết lập tín hiệu Zero Flag:

Zero Flag = 1 nếu hai giá trị bằng nhau (rs == rt)

Zero Flag = 0 nếu hai giá trị khác nhau

5 Từ CU sang ALU CTRL:

Giải mã trong CU:

o CU phân tích lệnh BEQ và nhận diện rằng đây là lệnh nhánh dựa vào opcode

o Dựa trên loại lệnh, CU phát ra tín hiệu điều khiển đến ALU Control

Di chuyển tín hiệu:

o Tín hiệu từ CU đi qua đường dẫn điều khiển (control path) đến

ALU CTRL

Trang 8

o Tại ALU CTRL, tín hiệu được dịch để định nghĩa phép toán cụ

thể mà ALU phải thực hiện (trong trường hợp này là phép trừ)

Tác động đến ALU:

o Sau khi nhận tín hiệu từ ALU CTRL, ALU thực hiện phép toán tương ứng Trong lệnh BEQ, phép toán là so sánh rs và rt bằng phép trừ để kiểm tra giá trị bằng nhau

Bước 4:Kiểm Tra Điều Kiện Nhảy Tại AND Gate

Zero Flag từ ALU:

o Hình tròn sẽ di chuyển từ ALU (sau khi phép so sánh rs - rt hoàn tất) đến AND Gate, mang theo Zero Flag (tín hiệu kiểm tra nếu

Zero = 1)

o Zero Flag là kết quả của phép so sánh: 1 nếu rs == rt, 0 nếu khác nhau

Branch Signal từ Control Unit (CU):

o Một hình tròn khác di chuyển từ CU đến AND Gate, mang theo tín hiệu nhánh (Branch Signal), cho biết đây là lệnh nhánh

(BEQ)

o AND Gate chỉ cho phép tín hiệu nhảy được kích hoạt nếu

Branch Signal = 1 (xác định lệnh là BEQ) và Zero Flag = 1

(hai giá trị thanh ghi bằng nhau)

Kết quả tại AND Gate:

o Nếu cả hai tín hiệu (Zero Flag và Branch Signal) đều là 1, đầu

ra của AND Gate sẽ là 1, kích hoạt việc cập nhật PC với địa chỉ đích của nhánh

Bước 5: Xác định xem chương trình sẽ nhảy đến địa chỉ đích (branch target) hay tiếp tục thực thi lệnh tiếp theo

Trang 9

1 Từ Adder (PC + 4) Đến MUX:

o Hình tròn đầu tiên di chuyển từ Adder (đã tính PC + 4) đến MUX

o Giá trị này là địa chỉ của lệnh tiếp theo trong chương trình (nếu không xảy ra nhánh) và được truyền tới MUX như một trong hai đầu vào

2 Từ Shift Left 2 và Adder Đến MUX:

o Một luồng dữ liệu khác, biểu thị bởi hình tròn, di chuyển từ Shift Left 2 (đã xử lý Immediate bằng cách dịch trái 2 bit) đến Adder

thứ hai

o Adder thứ hai tính toán địa chỉ đích nhảy (branch target address)

bằng cách cộng giá trị dịch trái (Immediate << 2) với PC + 4

o Giá trị địa chỉ đích nhảy này cũng được truyền tới MUX như

đầu vào thứ hai

3 Từ ALU Đến AND Gate:

o Hình tròn từ ALU di chuyển đến AND Gate, mang theo tín hiệu Zero Flag

o Zero Flag = 1 nếu rs == rt, cho biết điều kiện nhảy được thỏa

mãn

4 Từ CU Đến AND Gate:

Trang 10

o Một hình tròn khác di chuyển từ Control Unit (CU) đến AND Gate, mang theo tín hiệu nhánh (Branch Signal)

o Branch Signal = 1 nếu lệnh hiện tại là BEQ, xác định đây là

lệnh rẽ nhánh

5 Trong AND Gate:

o AND Gate nhận cả Zero Flag và Branch Signal:

▪ Nếu cả hai tín hiệu đều là 1, AND Gate đầu ra 1, kích hoạt MUX chọn địa chỉ đích nhảy

▪ Nếu bất kỳ tín hiệu nào là 0, AND Gate đầu ra 0, MUX sẽ chọn

PC + 4 làm giá trị cập nhật cho PC

Bước 6:

Từ MUX Đến PC:

o Hình tròn cuối cùng di chuyển từ MUX đến PC:

▪ Nếu nhánh xảy ra (AND Gate = 1), giá trị địa chỉ đích nhảy (branch

target address) được ghi vào PC

▪ Nếu không nhảy (AND Gate = 0), giá trị PC + 4 được ghi vào PC

III, Ý nghĩa lệnh BEQ theo trong kiến trúc MIPS

Định dạng: BEQ rs, rt, offset [I-type]

Trang 11

Mục đích: Để so sánh GPR sau đó thực hiện một nhánh có điều kiện tương

đối PC

Mô tả: nếu (rs = rt) thì nhánh độ lệch có dấu 18 bit (trường bù 16 bit dịch

chuyển sang trái 2 bit) được thêm vào địa chỉ của lệnh theo sau nhánh (không phải chính nhánh), trong khe trễ nhánh, để tạo thành địa chỉ mục tiêu hiệu quả tương đối PC

Nếu nội dung của GPR rs và GPR rt bằng nhau, hãy phân nhánh đến địa chỉ mục tiêu hiệu quả sau khi lệnh trong khe trễ được thực thi

Hạn chế: Không có

Hoạt động:

I:

tgt_offset <- sign_extend(offset || 02)

condition <- (GPR[rs] = GPR[rt])

I+1:

if condition then

PC <- PC + tgt_offset

endif

Ngoại lệ: Không có

Ghi chú lập trình: Với độ lệch lệnh có dấu 18 bit, phạm vi nhánh có điều

kiện là ± 128 KBytes Sử dụng hướng dẫn nhảy (J) hoặc thanh ghi nhảy (JR)

để phân nhánh đến các địa chỉ xa hơn

IV, Kết luận

Lệnh BEQ (Branch if Equal) trong MIPS là một lệnh quan trọng thuộc loại I-type, được thiết kế để thực hiện việc kiểm tra tính bằng nhau giữa hai thanh ghi nguồn và nhảy đến một địa chỉ khác trong chương trình nếu điều kiện này được thỏa mãn BEQ góp phần tối ưu hóa quá trình điều khiển luồng chương trình, cho phép thực thi các cấu trúc điều kiện và vòng lặp một cách hiệu quả

Ngày đăng: 10/01/2025, 15:23

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w