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

Thông tin cơ bản

Tiêu đề Kiến Trúc Máy Tính & Hợp Ngữ
Tác giả ThS. Vũ Minh Trí
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Công Nghệ Thông Tin
Thể loại bài giảng
Định dạng
Số trang 110
Dung lượng 1,29 MB

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