1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng Kiến trúc máy tính - Chương 4: Giới thiệu chung - Nguyễn Kim Khánh

136 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

Nội dung

NKK-HUT Kiến trúc máy tính Chương KIẾN TRÚC TẬP LỆNH (Instruction Set Architecture) Nguyễn Kim Khánh Trường Đại học Bách khoa Hà Nội IT3030 NKK-HUT Nội dung học phần          26 May 2012  Chương Giới thiệu chung Chương Cơ logic số Chương Hệ thống máy tính Chương Kiến trúc tập lệnh Chương Số học máy tính Chương Bộ xử lý Chương Bộ nhớ Chương Vào-ra Chương Kiến trúc máy tính tiên tiến IT3030 NKK-HUT Nội dung chương 4.1 Giới thiệu chung kiến trúc tập lệnh 4.2 Các kiểu thao tác 4.3 Các phương pháp định địa 4.4 Kiến trúc tập lệnh MIPS 4.5 Kiến trúc tập lệnh Intel x86 IT3030 NKK-HUT 4.1 Giới thiệu chung kiến trúc tập lệnh Mơ hình lập trình máy tính IT3030 NKK-HUT Tập ghi  Chức đặc điểm:     Chứa thông tin tạm thời phục vụ cho hoạt động thời điểm CPU Được coi mức hệ thống nhớ Số lượng ghi nhiều  tăng hiệu CPU Có hai loại ghi:   Các ghi lập trình Các ghi khơng lập trình IT3030 NKK-HUT Phân loại ghi theo chức      Thanh ghi địa chỉ: quản lý địa ngăn nhớ hay cổng vào-ra Thanh ghi liệu: chứa tạm thời liệu Thanh ghi đa năng: chứa địa liệu Thanh ghi điều khiển/trạng thái: chứa thông tin điều khiển trạng thái CPU Thanh ghi lệnh: chứa lệnh thực IT3030 NKK-HUT Một số ghi điển hình  Các ghi địa       Bộ đếm chương trình PC (Program Counter) Con trỏ liệu DP (Data Pointer) Con trỏ ngăn xếp SP (Stack Pointer) Thanh ghi sở Thanh ghi số (Base Register & Index Register) Các ghi liệu Thanh ghi trạng thái IT3030 NKK-HUT Bộ đếm chương trình PC    Còn gọi trỏ lệnh IP (Instruction Pointer) Giữ địa lệnh nhận vào Sau lệnh nhận vào, nội dung PC tự động tăng để trỏ sang lệnh kế tip IT3030 Lệnh Lệnh Lệnh PC Lệnh đ-ợc nhận vµo LƯnh kÕ tiÕp LƯnh LƯnh NKK-HUT Thanh ghi trỏ liệu   Chứa địa ngăn nhớ liệu mà CPU muốn truy nhập Thường có số ghi trỏ liệu D÷ liệu Dữ liệu Dữ liệu DP Dữ liệu cần đọc/ghi D÷ liƯu D÷ liƯu D÷ liƯu D÷ liƯu IT3030 NKK-HUT Ngăn xếp (Stack)      Ngăn xếp vùng nhớ có cấu trúc LIFO (Last In - First Out) Ngăn xếp thường dùng để phục vụ cho chương trình Đáy ngăn xếp ngăn nhớ xác định Đỉnh ngăn xếp thông tin nằm vị trí ngăn xếp Đỉnh ngăn xếp bị thay đổi IT3030 10 NKK-HUT Additional Instructions MiniMIPS instructions for multiplication and division: mult $s0, $s1 # set Hi,Lo to ($s0)($s1) div $s0, $s1 # set Hi to ($s0)mod($s1) # and Lo to ($s0)/($s1) mfhi $t0 # set $t0 to (Hi) mflo $t0 # set $t0 to (Lo) op rs 31 R rt 25 0 0 rd 20 0 0 sh 15 0 A LU S o u rc e S o u rc e in s t ru c t io n re g is t e r re g is t e r 0 0 Unus e d 0 Mul/Div unit Hi Lo fn 10 Reg file 0 Unus e d 1 x m u lt = div = 26 The multiply (mult) and divide (div) instructions of MIPS op rs 31 R rt 25 0 0 A LU in s t ru c t io n 0 rd 20 0 Unus e d 0 sh 15 0 Unus e d 0 fn 10 0 D e s t in a t io n re g is t e r 0 Unus e d 0 0 x m fhi = 16 m flo = MIPS instructions for copying the contents of Hi and Lo registers into general registers IT3030 122 NKK-HUT Unsigned Arithmetic Instructions addu subu multu divu $t0,$s0,$s1 $t0,$s0,$s1 $s0,$s1 $s0,$s1 addiu $t0,$s0,61 # # # # # # # # set $t0 to ($s0)+($s1) set $t0 to ($s0)–($s1) set Hi,Lo to ($s0)($s1) set Hi to ($s0)mod($s1) and Lo to ($s0)/($s1) set $t0 to ($s0)+61; the immediate operand is sign extended IT3030 Slide 123 NKK-HUT Arrays vs Pointers  Array indexing involves    Multiplying index by element size Adding to array base address Pointers correspond directly to memory addresses  Can avoid indexing complexity IT3030 124 NKK-HUT Example: Clearing and Array clear1(int array[], int size) { int i; for (i = 0; i < size; i += 1) array[i] = 0; } clear2(int *array, int size) { int *p; for (p = &array[0]; p < &array[size]; p = p + 1) *p = 0; } move $t0,$zero loop1: sll $t1,$t0,2 add $t2,$a0,$t1 move $t0,$a0 # p = & array[0] sll $t1,$a1,2 # $t1 = size * add $t2,$a0,$t1 # $t2 = # &array[size] loop2: sw $zero,0($t0) # Memory[p] = addi $t0,$t0,4 # p = p + slt $t3,$t0,$t2 # $t3 = #(p

Ngày đăng: 14/10/2023, 13:58