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

KIẾN TRÚC MÁY TÍNH VÀ HỢP NGỮ

110 4 0

Đ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

Nội dung

KIẾN TRÚC MÁY TÍNH & HỢP NGỮ ThS Vũ Minh Trí – vmtri@fit.hcmus.edu.vn 04 – Lập trình hợp ngữ (Phần 2) CuuDuongThanCong.com https://fb.com/tailieudientucntt Giới thiệu  Nhiệm vụ CPU phải thực lệnh yêu cầu, gọi instruction  Các CPU sử dụng tập lệnh (instruction set) khác để giao tiếp với CuuDuongThanCong.com https://fb.com/tailieudientucntt Kích thước lệnh   Kích thước lệnh bị ảnh hưởng bởi:  Cấu trúc đường truyền bus  Kích thước tổ chức nhớ  Tốc độ CPU Giải pháp tối ưu lệnh:  Dùng lệnh có kích thước ngắn, lệnh nên thực thi chu kỳ CPU  Dùng nhớ cache CuuDuongThanCong.com https://fb.com/tailieudientucntt Bộ lệnh MIPS  Chúng ta làm quen với tập lệnh cho kiến trúc MIPS (PlayStation 1, 2; PSP; Windows CE, Routers…)  Được xây dựng theo kiến trúc (RISC) với nguyên tắc:  Càng đơn giản, ổn định  Càng nhỏ gọn, xử lý nhanh  Tăng tốc xử lý cho trường hợp thường xuyên xảy  Thiết kế đòi hỏi thỏa hiệp tốt CuuDuongThanCong.com https://fb.com/tailieudientucntt Cấu trúc chương trình hợp ngữ MIPS data # khai báo data label (có thể hiểu biến) # sau thị label1: label2: … text # viết lệnh sau thị globl globl main # Đây text label toàn cục bắt buộc program … main: # điểm text label bắt đầu program … CuuDuongThanCong.com https://fb.com/tailieudientucntt Hello.asm data str: # data segment asciiz “Hello asm !” text globl # text segment main main: # starting point of program addi $v0, $0, # $v0 = + =  print str syscall la $a0, str # $a0 = address(str) syscall # excute the system call CuuDuongThanCong.com https://fb.com/tailieudientucntt Bộ lệnh MIPS – Thanh ghi  Là đơn vị lưu trữ data CPU  Trong kiến trúc MIPS:   Có tổng cộng 32 ghi đánh số từ $0  $31  Càng dễ quản lý, tính tốn nhanh  Có thể truy xuất ghi qua tên (slide sau) Mỗi ghi có kích thước cố định 32 bit  Bị giới hạn khả tính tốn chip xử lý  Kích thước tốn hạng câu lệnh MIPS bị giới hạn 32 bit, nhóm 32 bit gọi từ (word) CuuDuongThanCong.com https://fb.com/tailieudientucntt Thanh ghi toán hạng  Như biết lập trình, biến (variable) khái niệm quan trọng muốn biểu diễn tốn hạng để tính tốn  Trong kiến trúc MIPS không tồn khái niệm biến, thay vào ghi tốn hạng CuuDuongThanCong.com https://fb.com/tailieudientucntt Thanh ghi tốn hạng  Ngơn ngữ cấp cao (C, Java…): toán hạng = biến (variable)    Các biến lưu nhớ Ngơn ngữ cấp thấp (Hợp ngữ): toán hạng chứa ghi  Thanh ghi khơng có kiểu liệu  Kiểu liệu ghi định thao tác ghi So sánh:  Ưu: Thanh ghi truy xuất nhanh nhiều nhớ  Khuyết: Khơng nhớ chính, ghi phần cứng có số lượng giới hạn cố định  Phải tính tốn kỹ sử dụng CuuDuongThanCong.com https://fb.com/tailieudientucntt Một số ghi toán hạng quan tâm 10  Save register:  MIPS lấy ghi ($16 - $23) dùng để thực phép tính số học, đặt tên tương ứng $s0 - $s7   Tương ứng C, để chứa giá trị biến (variable) Temporary register:  MIPS lấy ghi ($8 - $15) dùng để chứa kết trung gian, đặt tên tương ứng $t0 - $t7  Tương ứng C, để chứa giá trị biến tạm (temporary variable) CuuDuongThanCong.com https://fb.com/tailieudientucntt Vấn đề I-format 96  Trường số (immediate) có kích thước 16 bit  Nếu muốn thao tác với số 32 bit?  Tăng kích thước trường immediate thành 32 bit?  Tăng kích thước lệnh thao tác với số có cấu trúc I-format  Phá vỡ cấu trúc lệnh 32 bit MIPS CuuDuongThanCong.com https://fb.com/tailieudientucntt Vấn đề I-format (tt) 97  Giải pháp: MIPS cung cấp lệnh “lui”  lui register, immediate  Load  Đưa Upper Immediate số 16 bit vào byte cao ghi  Giá trị byte thấp ghi gán =  Lệnh có cấu trúc I-format CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ 98  Muốn cộng giá trị 32 bit 0xABABCDCD vào ghi $t0 ?  Không thể dùng: addi $t0, $t0, 0xABABCDCD  Giải pháp dùng lệnh lui: lui $at, 0xABAB ori $at, $at, 0xCDCD add $t0, $0, $at CuuDuongThanCong.com https://fb.com/tailieudientucntt Vấn đề rẽ nhánh có điều kiện I-format 99  Các lệnh rẽ nhánh có điều kiện có cấu trúc I-format bits 5 16 opcode rs rt immediate  opcode: xác định lệnh beq hay bne  rs, rt: chứa giá trị ghi cần so sánh  immediate chứa địa (nhãn) cần nhảy tới?  immediate có 16 bit  nhảy tới địa từ – 216 (65535) ?  Chương trình bị giới hạn khơng gian nhiều  Câu trả lời: immediate KHƠNG phải chứa địa cần nhảy tới CuuDuongThanCong.com https://fb.com/tailieudientucntt Vấn đề rẽ nhánh có điều kiện I-format (tt) 100  Trong MIPS, ghi PC (Program Counter) chứa địa lệnh thực  immediate: số có dấu, chứa khoảng cách so với địa lệnh thực nằm ghi PC   immediate + PC  địa cần nhảy tới Cách xác định địa gọi PC-Relative Addressing (định vị theo ghi PC)  Xem slide “Addressing Mode” (phần sau) để biết thêm Addressing mode MIPS CuuDuongThanCong.com https://fb.com/tailieudientucntt Vấn đề rẽ nhánh có điều kiện I-format (tt) 101  Mỗi lệnh MIPS có kích thước 32 bit (1 word – từ nhớ)  MIPS truy xuất nhớ theo nguyên tắc Alignment Restriction  Đơn vị immediate, khoảng cách so với PC, từ nhớ (word = byte) khơng phải byte  Các lệnh rẽ nhánh nhảy tới địa có khoảng cách ± 215 word tính từ địa lưu PC (± 217 byte) CuuDuongThanCong.com https://fb.com/tailieudientucntt Vấn đề rẽ nhánh có điều kiện I-format (tt) 102  Cách tính địa rẽ nhánh:  Nếu không rẽ nhánh: PC = PC + = địa lệnh nhớ  Nếu thực rẽ nhánh: PC = (PC + 4) + (immediate * 4)  Vì cộng immediate với (PC + 4) thay PC?  Khi rẽ nhánh bị delayed lệnh kề với lệnh rẽ nhánh  Nhận xét: immediate cho biết số lệnh cần nhảy qua để đến nhãn CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ I-format 103  Loop: beq $t1, $0, End add $t0, $t0, $t2 addi $t1, $t1, -1 j Loop End: … opcode rs rt immediate 000100 01001 00000 0000 0000 0000 0000 0011  opcode = 4: Xác định thao tác lệnh beq  rs = (toán hạng nguồn thứ $t1 ~ $9)  rt = (toán hạng nguồn thứ $0 ~ $0)  immediate = (nhảy qua lệnh kể từ lệnh rẽ nhánh có điều kiện) CuuDuongThanCong.com https://fb.com/tailieudientucntt Vấn đề I-format 104  Mỗi lệnh MIPS có kích thước 32 bit  Mong muốn: Có thể nhảy đến lệnh (MIPS hỗ trợ hàm nhảy không điều kiện j)  Nhảy khoảng 232 (4 GB) nhớ  I-format bị hạn chế giới hạn vùng nhảy  Dùng J-format  Tuy nhiên, dù format phải cần tối thiểu bit cho opcode để quán lệnh với format khác  J-format dùng 32 – = 26 bit để biểu diễn khoảng cách nhảy CuuDuongThanCong.com https://fb.com/tailieudientucntt J-format 105  bits 26 opcode target address opcode (operation code): mã thao tác, cho biết lệnh làm (tương tự opcode R-format I-format)  Để quán với cấu trúc lệnh khác (R-format Iformat)  target address: Lưu địa đích lệnh nhảy  Tương tự lệnh rẽ nhánh, địa đích lệnh nhảy tính theo đơn vị word CuuDuongThanCong.com https://fb.com/tailieudientucntt Nhận xét 106  Trong J-format, lệnh nhảy nhảy tới lệnh có địa khoảng 226  Muốn nhảy tới lệnh có địa lớn từ 227 đến 232 ?  MIPS  Tuy hỗ trợ lệnh jr (đọc phần thủ tục) nhiên nhu cầu khơng cần thiết chương trình thường khơng q lớn CuuDuongThanCong.com https://fb.com/tailieudientucntt Bảng tóm tắt Format 107 31 R 31 I 31 J op 25 rs 20 rt 15 bits bits bits Opcode Source register Source register op 25 rs 20 rt rd 10 bits Destination register 15 sh fn 5 bits bits Shift amount Opcode extension operand / offset bits bits bits 16 bits Opcode Source or base Destination or data Immediate operand or address offset op 25 jump target address 0 bits 0 0 0 0 0 26 bits 0 0 0 1 1 Opcode Memory word address (byte address divided by 4) CuuDuongThanCong.com https://fb.com/tailieudientucntt Phụ lục 4: Addressing mode 108  Là phương thức định vi trí (địa hóa) tốn hạng kiến trúc MIPS  Có phương pháp chính:  Immediate addressing (Vd: addi $t0, $t0, 5) Toán hạng = số 16 bit câu lệnh  Register addressing (Vd: add $t0, $t0, $t1) Toán hạng = nội dung ghi  Base addressing (Vd: lw $t1, 8($t0) ) Tốn hạng = nội dung nhớ (địa ô nhớ = nội dung ghi + số 16 bit câu lệnh)  PC-relative addressing (Vd: beq $t0, $t1, Label) Toán hạng = địa đích lệnh nhảy = nội dung ghi PC + số 16 bit câu lệnh  Pseudodirect addressing (Vd: j 2500) Tốn hạng = địa đích lệnh nhảy = bit cao ghi PC + số 26 bit câu lệnh CuuDuongThanCong.com https://fb.com/tailieudientucntt Addressing mode 109 CuuDuongThanCong.com https://fb.com/tailieudientucntt Homework 110  Sách Petterson & Hennessy: Đọc hết chương  Tài liệu tham khảo: Đọc “08_HP_AppA.pdf” CuuDuongThanCong.com https://fb.com/tailieudientucntt ...Giới thiệu  Nhiệm vụ CPU phải thực lệnh yêu cầu, gọi instruction  Các CPU sử dụng tập lệnh (instruction set) khác để giao tiếp với CuuDuongThanCong.com https://fb.com/tailieudientucntt... CuuDuongThanCong.com https://fb.com/tailieudientucntt Thanh ghi toán hạng  Ngơn ngữ cấp cao (C, Java…): tốn hạng = biến (variable)    Các biến lưu nhớ Ngơn ngữ cấp thấp (Hợp ngữ): tốn hạng chứa ghi  Thanh... giá trị biến (variable) Temporary register:  MIPS lấy ghi ($8 - $15) dùng để chứa kết trung gian, đặt tên tương ứng $t0 - $t7  Tương ứng C, để chứa giá trị biến tạm (temporary variable) CuuDuongThanCong.com

Ngày đăng: 12/06/2022, 20:18

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w