1. Trang chủ
  2. » Giáo án - Bài giảng

kiến trúc máy tính trương văn cường lecture 04 chương ter 02 language of the computer 03 sinhvienzone com

36 53 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

Định dạng
Số trang 36
Dung lượng 1,22 MB

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

Nội dung

MIPS Memory Access Instructions• MIPS có hai lệnh di chuyển dữ liệu cơ bản để truy xuất bộ nhớ • Dữ liệu được nạp từ bộ nhớ vào một thanh ghi lw hoặc lưu từ thanh ghi vào bộ nhớ sw trong

Trang 1

COMPUTER ARCHITECTURE

Lecture 3

Instruction: Language of the Computer

Chapter 2

Trang 2

• Bốn nguyên tắc thiết kế cơ bản

• Ba toán hạng trong máy tính

• Biểu diễn lệnh trong máy tính

• Phân loại được lệnh theo 3 định dạng:

R-type, I-Type, J-Type

• Phân loại được lệnh theo chức năng

• Chuyển đổi lệnh giữa các ngôn ngữ: cấp cao, hợp ngữ, và ngôn ngữ máy.

Sep-16

The goals

2

Trang 5

1 MIPS Memory Access Instructions

Trang 6

1 MIPS Memory Access Instructions

• MIPS có hai lệnh di chuyển dữ

liệu cơ bản để truy xuất bộ nhớ

• Dữ liệu được nạp từ bộ nhớ vào

một thanh ghi (lw) hoặc lưu từ

thanh ghi vào bộ nhớ (sw) trong

tập thanh ghi (register file)

MIPS Memory Access Instructions

Register File

src1 addr src2 addr dst addr write data

32 bits

src1 data

src2 data

32 locations

32 5

32

5 5 32

Trang 7

1 MIPS Memory Access Instructions

Trang 8

1 MIPS Memory Access Instructions

 Địa chỉ 32bit của bộ nhớ được xác định bằng cáchcộng vào địa chỉ nền một giá trị offset

 The memory address – a 32 bit address – is formed

by adding the contents of the base address register

to the offset value

16 bit giá trị offset giới hạn các vị trí bộ nhớ nằm

trong khoảng 213 or 8,192 words (215 or 32,768 bytes) của địa chỉ nền

Giá trị offset có thể là âm hoặc dương

How to determine memory address

Trang 9

1 MIPS Memory Access Instructions

Trang 10

1 MIPS Memory Access Instructions

Trang 11

1 MIPS Memory Access Instructions

• Hầu hết các kiến trúc đều đánh địa chỉ từng byte trong bộ nhớ

• Địa chỉ của 1 word trong bộ nhớ phải chia hết cho 4

• Big Endian: địa chỉ của word là MSB

IBM 360/370, Motorola 68k, MIPS , Sparc, HP PA

• Little Endian: địa chỉ của word là LSB

Intel 80x86, DEC Vax, DEC Alpha (Windows NT)

Trang 12

1 MIPS Memory Access Instructions

• Ex: 0000 0001 0010 0011 0100 0101 0110 0111

Byte Addresses

00000001 00100011 01000101 01100111

01100111 01000101 00100011 00000001

x x1101 x x1100 x x0111 x x0110 x x0101 x x0100 x x0011 x x0010

Trang 13

1 MIPS Memory Access Instructions

• MIPS cung cấp các lệnh để di chuyển các byte

Loading and Storing Bytes

 Byte nào được nạp và lưu?

 load byte đặt byte từ bộ nhớ vào byte đầu tiên bên phải của thanh ghi đích

- Chuyển gì xảy ra với các bit còn lại trong thanh ghi?

 store byte lấy 1 byte từ thanh ghi và ghi vào bộ nhớ

 Chuyển gì xảy ra với các bit còn lại trong bộ nhớ

Trang 14

1 MIPS Memory Access Instructions

• Lw: Nạp một word từ một vị trí trong bộ nhớ vào thanh

ghi Địa chỉ bộ nhớ là địa chi byte

• Lb: Nạp một byte từ một vị trí trong bộ nhớ vào thanh

ghi Giá trị nạp được mở rộng dấu trước khi nạp vào

thanh ghi

• lbu Nạp một byte từ một vị trí trong bộ nhớ vào thanh

ghi Giá trị nạp được mở rộng bit zero trước khi nạp vàothanh ghi

• Sw: Lưu một giá trị từ thanh ghi vào một vị trí trong bộ

nhớ Địa chỉ bộ nhớ là địa chi byte

• Sb: Lưu giá trị 8 bit thấp của thanh ghi vào một vị trí

trong bộ nhớ

Summary

Trang 15

2 Conditional branch

• Rẽ nhánh tới một nhãn lệnh nếu điều kiện là đúng

• Ngược lại, tiếp tục thực hiện lệnh kế tiếp.

Trang 17

2 Conditional branch

• Sử dụng một thanh ghi để cộng thêm 16bit

offset-• Thanh ghi nào? Instruction Address Register (the PC)

• PC được tự động cập nhật (PC+4) trong chu

kỳ nạp lệnh vì vậy nó giữ địa chỉ của lệnh tiếptheo

• Giới hạn khoảng rẽ nhánh là -215 to +215-1

Specifying Branch Destinations

Trang 18

Tại sao lại ghép

2 bit?

Trang 19

2 Conditional branch

• Chúng ta có beq, bne, vậy các loại rẽ nhánh khác thì sao?

• Chúng ta cần thêm một lệnh nữa: stl (set on less than)

• Lệnh Set on less than:

Trang 20

2 Conditional branch

• Có thể dung slt, beq, bnevà thanh ghi $zero

để tạo ra các điều kiện khác

• less than blt $s1, $s2, Label

• less than or equal to ble $s1, $s2, Label

• greater than bgt $s1, $s2, Label

• great than or equal to bge $s1, $s2, Label

Aside: More Branch Instructions

slt $at, $s1, $s2 #$at set to 1 if

bne $at, $zero, Label #$s1 < $s2

 Các lệnh rẽ nhánh này có được trong tập lệnh được xem là các lệnh giả (pseudo instructions), được công nhận (mở rộng) bởi trình thông dịch (assembler)

 Đây chính là lý do tại sao trình thông dịch cần thanh ghi

$at

Trang 22

3 Unonditional branch

• MIPS có một lệnh rẽ nhánh không điều kiện Jump

Unconditional branch instruction

 Instruction Format (J Format):

Trang 23

3 Unonditional branch

• Làm thể nào khi địa chỉ rẽ nhánh nằm ngoài tầmoffset 16 bit

Branching Far Away

 Chèn lệnh jump để có thể “nhảy” xa hơn

beq $s0, $s1, L1

Thành:

bne $s0, $s1, L2

j L1 L2:

Trang 24

li $rs, small

li $rs, big

la $rs, big

lw $rt, big($rs)

Trang 26

2 Conditional branch

• C code:

while (save[i] == k) i += 1;

• i in $s3, k in $s5, address of save in $s6

• Compiled MIPS code:

Compiling Loop Statements

Trang 28

2 Conditional branch

Compiling switch Statement

Trang 29

3 Procedures

• Hàm giúp lập trình viên phân chia chương trìnhthành các khối chức năng để:

Dễ dàng cho việc viết và sửa lỗi

Cho phép dùng lại code

• Hàm giúp lập trình viên tập trung hiện thực mộtkhối chức năng đơn giản tại một thời điểm

Các tham số là giao diện giữa hàm và phần còn lại của chương trình, các tham số gồm có đối số

truyền cho hàm (arguments) và giá trị trả về

(results)

Procedures

Trang 31

3 Procedures

1 Caller đặt các tham số vào nơi mà thủ tục (callee)

có thể truy xuất chúng

• $a0 - $a3: 4 thanh ghi đối số ngõ vào

2 Caller di chuyển sự điều khiển đến callee

3 Callee thu thập các tài nguyên lưu trữ cho thủ tục

4 Callee thực hiện các nhiệm vụ

5 Callee đặt các kết quả vào nơi mà chương trình

có thể truy xuất nó

• $v0 - $v1: hai thanh ghi chứa giá trị trả về

6 Callee trả quyền điều khiển về cho Caller

• $ra: thanh ghi chứa địa chỉ trở về return address

Six Steps in Execution of a Procedure

Trang 32

3 Procedures

• C code (hàm không gọi các hàm khác):

int leaf_example (int g, h, i, j){ int f;

Trang 33

3 Procedures

• MIPS code:

leaf_example:

add $t0, $a0, $a1

add $t1, $a2, $a3

sub $v0, $t0, $t1

Leaf Procedure Example

Procedure body Result

Return

Trang 34

 Thanh ghi $sp (29) được sử dụng

để giữ địa chỉ của stack (stack

“lớn” theo chiều đi xuống)

Trang 35

• Các đối số g, …, j in $a0, …, $a3

• f in $s0 (vì vậy,cần bảo toàn giá trị $s0 trong stack)

• Kết quả trong $v0

Leaf Procedure Example

Trang 36

add $t0, $a0, $a1

add $t1, $a2, $a3

Restore $s0 Result

Return

Ngày đăng: 28/01/2020, 23:15

TỪ KHÓA LIÊN QUAN

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