Bài giảng Kiến trúc máy tính (ĐH Bách khoa Hà Nội) Chương 2

25 13 0
Bài giảng Kiến trúc máy tính (ĐH Bách khoa Hà Nội) Chương 2

Đ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

Kiến trúc tập lệnh Nội dung  Biên dịch mã máy – Các định dạng lệnh – Các số lớn  Các thủ tục gọi – Tập ghi – Bộ nhớ ngăn xếp  Các ISA khác Biên dịch thành mã máy Mã hóa định dạng Định dạng lệnh (mã máy) Ngôn ngữ máy – Máy tính khơng hiểu chuỗi ký tự sau “add R8, R17, R18” – Các lệnh phải chuyển đổi thành ngơn ngữ máy(1s and 0s) Ví dụ: add R8, R17, R18 → 000000 10001 10010 01000 00000 100000 Các trường lệnh MIPS • opcode mã lệnh xác định phép tốn (e.g., “add” “lw”) • rs số ghi chứa toán hạng nguồn tệp ghi • rt số ghi chưa toán hạng nguồn tệp ghi • rd số ghi lưu kết • shamt Số lượng dịch(cho thị dịch) • funct mã chức thêm cho phần mã lệnh (add = 32, sub =34) Định dạng lệnh MIPS Câu hỏi: Lệnh cộng tức thời (addi) cần bit? Trả lời: I-format: 5+5+6 bits = 16 bits Giá trị nằm khoảng Từ -32,768 đến +32767 • MIPS có dạng thị : – R: operation – I: operation – J: jump registers registers registers no immediate short immediate long immediate Hằng số (tức thì) Cần bit sử dụng ghi để lưu giá trị, số lượng than ghi hữu hạn? Lưu trữ liệu số thị, không sử dụng tệp ghi Các số nhỏ (tức thì) sử dụng hầu hết đoạn mã (~50%) If (a==b) c=1; else c=2; • Làm để thực thi xử lý ? – Đưa số vào nhớ tải chúng (chậm) – Gán cứng giá trị than ghi(giống R0) (Bao nhiêu?) • MIPS thực thi nào: – Các thị chứa số bên – Bộ điều khiển gửi giá trị số đến ALU – addi R29, R30, ← giá trị nằm câu lệnh • Nhưng xảy vấn đề – Số bit mã hóa trường lệnh 32 bits Cần dùng cho trường mã lệnh ghi Làm cách để cân đối không gian cho số thi lệnh? Tải giá trị tức (hằng số) Bộ điều khiển (Control) báo cho ALU nhận toán hạng từ tệp ghi từ thị lệnh Các số lớn lệnh rẽ nhánh Tải giá trị lớn • Trường lệnh trực tiếp giới hạn 16 bits (-32,768 to Question: ori có sử +32,767) dụng cho số có – Làm để tải giá trị lớn? dấu? • Sử dụng lệnh để tải Answer: No – Load Upper Immediate (lui): Loads upper 16 bits If it was we would end – Or Immediate (ori): Loads lower 16bits up with all 1s in the • Ví dụ: 10101010 10101010 11110000 11110000 top bits (See the MIPS reference data in the book.) Địa lệnh rẽ nhánh lệnh nhảy Question: Sử dụng lệnh nhảy bne/beq với khoảng cách bao nhiêu? Answer: Từ -32,767 đến +32,768 lệnh từ thị lệnh Các lệnh rẽ nhánh – bne/beq I-format –j J-format 16 bit immediate 26 bit immediate Địa 32 bits! Điều khiển cách nào? – Xem xét bne/beq độ lệch tương đối (relative offsets) (add to current PC) – Xem xét j giá trị tuyệt đối (absolute value) (thay 26 bits PC) Ví dụ nhảy địa chỉ: loops Thủ tục gọi hàm  Lời gọi thủ tục khai báo thủ tục chuyển thành lệnh máy nào?  Đối số truyền vào thủ tục nào?  Kết trả thủ tục truyền nào?  Thủ tục gọi: Callee  Thủ tục gọi: Caller Các thủ tục gọi hàm Các thủ tục (hàm/chương trình con) sử dụng cho chương trình có cấu trúc main( ) { for ( j=0; j

Ngày đăng: 29/10/2021, 16:19

Mục lục

  • Kiến trúc tập lệnh 2

  • Nội dung

  • Biên dịch thành mã máy Mã hóa và các định dạng

  • Định dạng lệnh (mã máy)

  • Định dạng lệnh MIPS

  • Hằng số (tức thì)

  • Tải các giá trị tức thì (hằng số)

  • Các hằng số lớn và lệnh rẽ nhánh

  • Tải các giá trị lớn

  • Địa chỉ trong lệnh rẽ nhánh và lệnh nhảy

  • Ví dụ nhảy địa chỉ: loops

  • Thủ tục gọi hàm

  • Các thủ tục gọi hàm

  • Các thủ tục gọi hàm

  • Nguyên tắc sử dụng thủ tục

  • Các thanh ghi lưu trữ: Quy ước trong MIPS

  • Tên các thanh ghi MIPS và các quy ước

  • Làm thế nào để thực thi một thủ tục gọi

  • Ví dụ

  • Các ví dụ về thủ tục gọi hàm và ngăn xếp

Tài liệu cùng người dùng

Tài liệu liên quan