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

Thông tin cơ bản

Tiêu đề Giới thiệu chung
Tác giả Nguyễn Kim Khánh
Trường học Trường Đại học Bách khoa Hà Nội
Chuyên ngành Kiến trúc máy tính
Thể loại Bài giảng
Năm xuất bản 2012
Thành phố Hà Nội
Định dạng
Số trang 136
Dung lượng 1,89 MB

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

Nội dung

Một số thanh ghi điển hình  Các thanh ghi địa chỉ  Bộ đếm chương trình PC Program Counter  Con trỏ dữ liệu DP Data Pointer  Con trỏ ngăn xếp SP Stack Pointer  Thanh ghi cơ sở và Th

Trang 2

Nội dung học phần

Trang 3

4.1 Giới thiệu chung kiến trúc tập lệnh

Trang 4

4.1 Giới thiệu chung về kiến trúc tập lệnh

Mô hình lập

trình của máy

tính

Trang 5

Tập thanh ghi

 Chức năng và đặc điểm:

 Chứa các thông tin tạm thời phục vụ cho hoạt động ở thời điểm hiện tại của CPU

 Được coi là mức đầu tiên của hệ thống nhớ

 Số lượng thanh ghi nhiều  tăng hiệu năng của CPU

 Có hai loại thanh ghi:

 Các thanh ghi lập trình được

 Các thanh ghi không lập trình được

Trang 6

Phân loại thanh ghi theo chức năng

 Thanh ghi địa chỉ: quản lý địa chỉ của ngăn nhớ hay cổng vào-ra

 Thanh ghi dữ liệu: chứa tạm thời các dữ

Trang 7

Một số thanh ghi điển hình

 Các thanh ghi địa chỉ

 Bộ đếm chương trình PC (Program Counter)

 Con trỏ dữ liệu DP (Data Pointer)

 Con trỏ ngăn xếp SP (Stack Pointer)

 Thanh ghi cơ sở và Thanh ghi chỉ số (Base Register & Index Register)

 Các thanh ghi dữ liệu

 Thanh ghi trạng thái

Trang 8

Bộ đếm chương trình PC

 Còn được gọi là con trỏ

lệnh IP (Instruction

Pointer)

 Giữ địa chỉ của lệnh

tiếp theo sẽ được nhận

vào

 Sau khi một lệnh được

nhận vào, nội dung PC

tự động tăng để trỏ

sang lệnh kế tiếp

LÖnh LÖnh LÖnh kÕ tiÕp LÖnh sÏ ®-îc nhËn vµo

LÖnh LÖnh LÖnh

PC

Trang 9

Thanh ghi con trỏ dữ liệu

 Chứa địa chỉ của

D÷ liÖu D÷ liÖu D÷ liÖu

DP

Trang 10

Ngăn xếp (Stack)

 Ngăn xếp là 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 con

 Đáy ngăn xếp là một ngăn nhớ xác định

 Đỉnh ngăn xếp là thông tin nằm ở vị trí

trên cùng trong ngăn xếp

 Đỉnh ngăn xếp có thể bị thay đổi

Trang 11

Con trỏ ngăn xếp SP (Stack Pointer)

 Chứa địa chỉ của ngăn nhớ đỉnh

ngăn xếp

 Khi cất một thông tin vào ngăn

xếp:

 Nội dung của SP giảm

 Thông tin được cất vào ngăn nhớ

 Nội dung của SP tăng

 Khi ngăn xếp rỗng, SP trỏ vào đáy

§¸y Stack

§Ønh Stack SP

Trang 12

Thanh ghi cơ sở và thanh ghi chỉ số

 Thanh ghi cơ sở: chứa địa

chỉ của ngăn nhớ cơ sở

(địa chỉ cơ sở)

 Thanh ghi chỉ số: chứa độ

lệch địa chỉ giữa ngăn

nhớ mà CPU cần truy

nhập so với ngăn nhớ cơ

sở (chỉ số)

 Địa chỉ của ngăn nhớ cần

truy nhập = địa chỉ cơ sở

+ chỉ số

Ng¨n nhí cÇn truy nhËp

Ng¨n nhí c¬ së Thanh ghi c¬ së

Thanh ghi chØ sè

Trang 13

Các thanh ghi dữ liệu

 Chứa các dữ liệu tạm thời hoặc các kết

quả trung gian

 Cần có nhiều thanh ghi dữ liệu

 Các thanh ghi số nguyên: 8, 16, 32, 64

bit

 Các thanh ghi số dấu phẩy động

Trang 14

Thanh ghi trạng thái (Status Register)

 Còn gọi là thanh ghi cờ (Flag Register)

 Chứa các thông tin trạng thái của CPU

 Các cờ phép toán: báo hiệu trạng thái của kết quả phép toán

 Các cờ điều khiển: biểu thị trạng thái điều khiển của CPU

Trang 15

Ví dụ cờ phép toán

 Cờ Zero (cờ rỗng): được thiết lập lên 1 khi

kết quả của phép toán bằng 0

Cờ Sign (cờ dấu): được thiết lập lên 1 khi kết

quả phép toán nhỏ hơn 0

Cờ Carry (cờ nhớ): được thiết lập lên 1 nếu

phép toán có nhớ ra ngoài bit cao nhất  cờ báo tràn với số không dấu

 Cờ Overflow (cờ tràn): được thiết lập lên 1

nếu cộng hai số nguyên cùng dấu mà kết quả

có dấu ngược lại  cờ báo tràn với số có

dấu

Trang 16

Ví dụ cờ điều khiển

 Cờ Interrupt (Cờ cho phép ngắt):

 Nếu IF = 1  CPU ở trạng thái cho phép ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới

 Nếu IF = 0  CPU ở trạng thái cấm ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới

Trang 17

Thứ tự lưu trữ các byte trong bộ nhớ chính

 Bộ nhớ chính thường đánh địa chỉ theo

byte

 Hai cách lưu trữ thông tin nhiều byte:

thấp được lưu trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa cao được lưu trữ ở ngăn nhớ có địa chỉ lớn

được lưu trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa thấp được lưu trữ ở ngăn nhớ có địa chỉ lớn

Trang 18

Ví dụ lưu trữ dữ liệu 32-bit

4D

1A 2B 3C

little-endian

300

303 302 301

1A

4D 3C 2B

big-endian

300

304 302 301

0001 1010 0010 1011 0011 1100 0100 1101

Trang 19

Lưu trữ của các bộ xử lý điển hình

 Intel 80x86 và các Pentium: little-endian

 Motorola 680x0, MIPS, SunSPARC: big-endian

 Power PC, Itanium: bi-endian

Trang 20

Giới thiệu chung về tập lệnh

 Mỗi bộ xử lý có một tập lệnh xác định

 Tập lệnh thường có hàng chục đến hàng

trăm lệnh

 Mỗi lệnh là một chuỗi số nhị phân mà bộ xử

lý hiểu được để thực hiện một thao tác xác định

 Các lệnh được mô tả bằng các ký hiệu gợi

nhớ dạng text  chính là các lệnh của hợp ngữ

Trang 21

Các thành phần của lệnh máy

 Mã thao tác (operation code  opcode):

mã hóa cho thao tác mà bộ xử lý phải thực hiện

 Địa chỉ toán hạng: chỉ ra nơi chứa các toán hạng mà thao tác sẽ tác động

 Toán hạng nguồn: dữ liệu vào của thao tác

 Toán hạng đích: dữ liệu ra của thao tác

M· thao t¸c §Þa chØ cña c¸c to¸n h¹ng

Trang 22

Số lượng địa chỉ toán hạng trong lệnh (1)

Trang 23

Số lượng địa chỉ toán hạng trong lệnh (2)

 Hai địa chỉ toán hạng:

 Một toán hạng vừa là toán hạng nguồn vừa là toán hạng đích; toán hạng còn lại là toán hạng nguồn

Trang 24

Số lượng địa chỉ toán hạng trong lệnh (3)

 Một địa chỉ toán hạng:

 Một toán hạng được chỉ ra trong lệnh

 Một toán hạng là ngầm định  thường là thanh ghi (thanh chứa –accumulator)

 Được sử dụng trên các máy ở các thế hệ trước

Trang 25

Số lượng địa chỉ toán hạng trong lệnh (4)

có nghĩa là : c = a+b

 không thông dụng

Trang 26

Máy tính với tập lệnh thu gọn: RISC

 CISCComplex Instruction Set Computer:

 Máy tính với tập lệnh phức tạp

 Các bộ xử lý truyền thống: Intel x86, Motorola 680x0

 RISCReduced Instruction Set Computer:

 Máy tính với tập lệnh thu gọn

 SunSPARC, Power PC, MIPS, ARM

 RISC đối nghịch với CISC

Trang 27

Các đặc trưng của RISC

 CPU có tập thanh ghi lớn

 Có ít phương pháp định địa chỉ toán hạng(<=4)

 Hỗ trợ các thao tác của ngôn ngữ bậc cao

Trang 28

4.2 Các kiểu thao tác của lệnh

 Chuyển dữ liệu

 Xử lý số học

 Xử lý logic

 Điều khiển vào-ra

 Chuyển điều khiển (rẽ nhánh)

 Điều khiển hệ thống

Trang 29

Các lệnh chuyển dữ liệu

 MOVE Copy dữ liệu từ nguồn đến đích

 LOAD Nạp dữ liệu từ bộ nhớ đến bộ xử lý

 STORE Cất dữ liệu từ bộ xử lý đến bộ nhớ

 SET Chuyển các bit 1 vào toán hạng đích

 PUSH Cất nội dung toán hạng nguồn vào ngăn xếp

 POP Lấy nội dung đỉnh ngăn xếp đưa đến

toán hạng đích

Trang 30

Các lệnh số học

 ADD Cộng hai toán hạng

Trang 31

Các lệnh logic

 AND Thực hiện phép AND hai toán hạng

 OR Thực hiện phép OR hai toán hạng

 XOR Thực hiện phép XOR hai toán hạng

 NOT Đảo bit của toán hạng (lấy bù 1)

 TEST Thực hiện phép AND hai toán hạng

để lập cờ

Trang 32

Minh hoạ các lệnh AND, OR, XOR

 Giả sử có hai thanh ghi chứa dữ liệu như sau:

(R1) = 1010 1010

(R2) = 0000 1111

 R1  (R1) AND (R2) = 0000 1010

Phép toán AND dùng để xoá một số bit và giữ

nguyên một số bit còn lại của toán hạng

Trang 33

Quay tr¸i logic

Quay ph¶i logic

Trang 35

Các lệnh chuyển điều khiển

 CALL Lệnh gọi chương trình con

Trang 36

Lệnh rẽ nhánh không điều kiện

 Chuyển tới thực hiện lệnh

ở vị trí có địa chỉ XXX:

PC  XXX

lÖnh lÖnh

lÖnh lÖnh

lÖnh

lÖnh_kÕ_tiÕp lÖnh_rÏ_nh¸nh XXX

lÖnh lÖnh

XXX

Trang 37

PC  XXX

 Nếu điều kiện sai  chuyển

sang thực hiện lệnh_kế_tiếp

 Điều kiện thường được kiểm

tra thông qua các cờ

 Có nhiều lệnh rẽ nhánh có

điều kiện

lÖnh lÖnh

lÖnh lÖnh

lÖnh

lÖnh_kÕ_tiÕp lÖnh_rÏ_nh¸nh_®k XXX

lÖnh lÖnh

XXX

Trang 38

 Nạp vào PC địa chỉ của lệnh đầu

tiên của chương trình con được gọi

 Bộ xử lý được chuyển sang thực

hiện chương trình con tương ứng

 Lệnh trở về từ chương trình

con: lệnh RETURN

 Lấy địa chỉ của lệnh_kế_tiếp được

cất ở Stack nạp trả lại cho PC 

Bộ xử lý được điều khiển quay trở

về thực hiện tiếp lệnh nằm sau lệnh

lÖnh lÖnh

lÖnh lÖnh lÖnh ®Çu tiªn cña CTCon

lÖnh_kÕ_tiÕp

CALL CTCon

lÖnh lÖnh

CTCon

RETURN

Trang 39

Gọi các thủ tục lồng nhau

Trang 40

Các lệnh điều khiển hệ thống

 HALT Dừng thực hiện chương trình

 WAIT Tạm dừng thực hiện chương trình,

lặp kiểm tra điều kiện cho đến khi thoả mãn thì tiếp tục thực hiện

 NO OPERATION Không thực hiện gì cả

 LOCK Cấm không cho xin chuyển nhượng

bus

 UNLOCK Cho phép xin chuyển nhượng bus

Trang 41

4.3 Các phương pháp định địa chỉ toán hạng

 Toán hạng của lệnh có thể là:

 Một giá trị cụ thể nằm ngay trong lệnh

 Nội dung của thanh ghi

 Nội dung của ngăn nhớ hoặc cổng vào-ra

 Phương pháp định địa chỉ (addressing

modes) là cách thức địa chỉ hóa trong trường địa chỉ của lệnh để xác định nơi chứa toán hạng

Trang 42

Các phương pháp định địa chỉ thông dụng

 Định địa chỉ tức thì

 Định địa chỉ thanh ghi

 Định địa chỉ trực tiếp

 Định địa chỉ gián tiếp qua thanh ghi

 Định địa chỉ gián tiếp qua ngăn nhớ

 Định địa chỉ dịch chuyển

Trang 43

 Không tham chiếu bộ nhớ

 Truy nhập toán hạng rất nhanh

 Dải giá trị của toán hạng bị hạn chế

Trang 44

Định địa chỉ thanh ghi

 Toán hạng được chứa trong

thanh ghi có tên trong Trường

địa chỉ

 Ví dụ:

ADD R1, R2 ; R1 R1+R2

 Số lượng thanh ghi ít 

Trường địa chỉ chỉ cần ít bit

 Không tham chiếu bộ nhớ

 Truy nhập toán hạng nhanh

 Tăng số lượng thanh ghi 

hiệu quả hơn

M· thao t¸c Tªn thanh ghi

TËp thanh ghi

To¸n h¹ng

Trang 45

Định địa chỉ trực tiếp

 Toán hạng là ngăn nhớ có địa

chỉ được chỉ ra trực tiếp trong

Trường địa chỉ của lệnh

 Ví dụ:

ADD R1, A ;R1  R1 + (A)

 Cộng nội dung thanh ghi R1 với

nội dung của ngăn nhớ có địa chỉ

Trang 46

Định địa chỉ gián tiếp qua thanh ghi

 Toán hạng là ngăn nhớ

có địa chỉ nằm trong

thanh ghi

 Trường địa chỉ cho biết

tên thanh ghi đó

 Thanh ghi có thể là

ngầm định

 Thanh ghi này được gọi

là thanh ghi con trỏ

 Vùng nhớ có thể được

tham chiếu là lớn (2 n ),

(với n là độ dài của

M· thao t¸c Tªn thanh ghi

TËp thanh ghi

Bé nhí

§Þa chØ

To¸n h¹ng

Trang 47

Định địa chỉ gián tiếp qua ngăn nhớ

 Ngăn nhớ được trỏ bởi

Trường địa chỉ của lệnh

chứa địa chỉ của toán

hạng

 Có thể gián tiếp nhiều lần

 Giống như khái niệm biến

con trỏ và biến động trong

Trang 48

+

Trang 49

Các dạng của định địa chỉ dịch chuyển

 Địa chỉ hoá tương đối với PC

 Thanh ghi là Bộ đếm chương trình PC

 Toán hạng có địa chỉ cách ngăn nhớ được trỏ bởi PC một độ lệch xác định

Trang 50

4.4 Kiến trúc tập lệnh MIPS

Trang 51

 Large share of embedded core market

 Applications in consumer electronics, network/storage equipment, cameras, printers, …

 Typical of many modern ISAs

Trang 52

Arithmetic Operations

 Add and subtract, three operands

 Two sources and one destination

add a, b, c # a gets b + c

 All arithmetic operations have this form

Trang 53

Register Operands

 Arithmetic instructions use register

operands

 MIPS has a 32 × 32-bit register file

 Use for frequently accessed data

 Numbered 0 to 31

 32-bit data called a “word”

 Assembler names

 $t0, $t1, …, $t9 for temporary values

 $s0, $s1, …, $s7 for saved variables

Trang 54

MIPS Register File

b yte h a s th e

l o w e s t a d d re s s )

Trang 55

A typical instruction for MIPS and steps in its execution

In s t ru c t io n

c a c h e

D a t a c a c h e (n o t u s e d )

R e g is t e r file

Trang 56

Register Operand Example

Trang 57

Memory Operands

 Main memory used for composite data

 Arrays, structures, dynamic data

 To apply arithmetic operations

 Load values from memory into registers

 Store result from register to memory

 Memory is byte addressed

 Each address identifies an 8-bit byte

 Words are aligned in memory

 Address must be a multiple of 4

 MIPS is Big Endian

 Most-significant byte at least address of a word

 ( Little Endian: least-significant byte at least address)

Trang 58

Memory Operand Example 1

 C code:

g = h + A[8];

 g in $s1, h in $s2, base address of A in $s3

 Compiled MIPS code:

 Index 8 requires offset of 32 (index from 0)

 4 bytes per word

lw $t0, 32($s3) # load word

add $s1, $s2, $t0

offset base register

Trang 59

Memory Operand Example 2

 C code:

A[12] = h + A[8];

 h in $s2, base address of A in $s3

 Compiled MIPS code:

 Index 8 requires offset of 32

lw $t0, 32($s3) # load word

add $t0, $s2, $t0

sw $t0, 48($s3) # store word

Trang 60

Registers vs Memory

 Registers are faster to access than

memory

 Operating on memory data requires

loads and stores

 More instructions to be executed

 Compiler must use registers for

variables as much as possible

 Only spill to memory for less frequently used variables

 Register optimization is important!

Trang 61

Immediate Operands

 Constant data specified in an instruction

addi $s3, $s3, 4 # $s3  $s3+4

 No subtract immediate instruction

 Just use a negative constant

addi $s2, $s1, -1

Trang 62

The Constant Zero

 MIPS register 0 ($zero) is the constant 0

 Cannot be overwritten

 Useful for common operations

 E.g., move between registers add $t2, $s1, $zero

Trang 63

Representing Instructions

 Instructions are encoded in binary

 Called machine code

 MIPS instructions

 Encoded as 32-bit instruction words

 Small number of formats encoding operation code (opcode), register numbers, …

 Register numbers

 $t0 – $t7 are reg’s 8 – 15

 $t8 – $t9 are reg’s 24 – 25

 $s0 – $s7 are reg’s 16 – 23

Trang 64

MIPS Instruction Formats

Trang 65

MIPS R-format Instructions

 Instruction fields

 op: operation code (opcode)

 rs: first source register number

 rt: second source register number

 rd: destination register number

 shamt: shift amount (00000 for now)

 funct: function code (extends opcode)

op rs rt rd shamt funct

Trang 67

MIPS I-format Instructions

 Immediate arithmetic and load/store

Trang 68

MIPS lw and sw instructions and their memory addressing convention that allows for simple access to array elements via a base address and

Trang 69

lui $s0, 61 # The immediate value 61 is

# loaded in upper half of $s0

# with lower 16b set to 0s

Trang 70

Stored Program Computers

 Instructions represented in binary, just like data

 Instructions and data stored

in memory

 Programs can operate on programs

 e.g., compilers, linkers, …

 Binary compatibility allows compiled programs to work

on different computers

 Standardized ISAs

Trang 71

Logical Operations

 Instructions for bitwise manipulation

Operation C Java MIPS Shift left << << sll Shift right >> >>> srl Bitwise AND & & and, andi Bitwise OR | | or, ori Bitwise NOT ~ ~ nor

 Useful for extracting and inserting

groups of bits in a word

Trang 72

Shift Operations

 shamt: how many positions to shift

 Shift left logical

 Shift left and fill with 0 bits

sll by i bits multiplies by 2 i

 Shift right logical

 Shift right and fill with 0 bits

srl by i bits divides by 2 i (unsigned only)

op rs rt rd shamt funct

Trang 73

AND Operations

 Useful to mask bits in a word

 Select some bits, clear others to 0 and $t0, $t1, $t2

Trang 74

OR Operations

 Useful to include bits in a word

 Set some bits to 1, leave others unchanged

Trang 77

Conditional branches use PC-relative addressing

Trang 79

Compiling Loop Statements

j Loop Exit: …

Trang 80

Basic Blocks

 A basic block is a sequence of instructions with

 No embedded branches (except at end)

 No branch targets (except at beginning)

 A compiler identifies basic blocks for optimization

 An advanced processor can accelerate execution

of basic blocks

Trang 81

More Conditional Operations

 Set result to 1 if a condition is true

Trang 82

slt $s1,$s2,$s3 # if ($s2)<($s3), set $s1 to 1 # else set $s1 to 0;

# often followed by beq/bne slti $s1,$s2,61 # if ($s2)<61, set $s1 to 1 # else set $s1 to 0

Trang 83

Branch Instruction Design

 Why not blt, bge, etc?

 Hardware for <, ≥, … slower than =, ≠

 Combining with branch involves more work per instruction, requiring a slower clock

 All instructions penalized!

 beq and bne are the common case

 This is a good design compromise

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

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