HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

BÀI GIẢNG MÔN

6/25/2014

KIẾN TRÚC MÁY TÍNH

VÀ HỆ ĐIỀU HÀNH

Giảng viên:

ThS. Nguyễn Thị Ngọc Vinh

Bộ môn:

Khoa học máy tính- Khoa CNTT1

Email:

ntngocvinh@yahoo.com

CHƯƠNG 2: KHỐI XỬ LÝ TRUNG TÂM

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 2

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 1

6/25/2014

CHƯƠNG 2: NỘI DUNG CHÍNH

1. Khối xử lý trung tâm  Sơ đồ khối tổng quát  Chu kỳ xử lý lệnh  Thanh ghi  Khối điều khiển (CU)  Khối số học và logic (ALU)  Bus trong CPU

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 3

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

CHƯƠNG 2: NỘI DUNG CHÍNH

2. Tập lệnh máy tính

 Khái niệm lệnh, tập lệnh  Chu kỳ và các pha thực hiện lệnh  Các dạng toán hạng  Các chế độ địa chỉ  Một số dạng lệnh thông dụng

3. Giới thiệu cơ chế ống lệnh

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 4

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 2

6/25/2014

2.1 KHỐI XỬ LÝ TRUNG TÂM

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 5

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

CPU – SƠ ĐỒ KHỐI TỔNG QUÁT

CU: (Control Unit) Khối điều khiển

IR: (Instruction Register) Thanh ghi lệnh

CU

A

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

Y

IR

MAR: (Memory Address Register) Thanh ghi địa chỉ bộ nhớ

PC

MBR: (Memory Buffer Register) Thanh ghi nhớ đệm

ALU

A: (Accumulator Register) Thanh ghi tích lũy

MAR

I n t e r n a l B u s

A Bus

Z

Y, Z: (Temporary Register) Thanh ghi tạm thời

MBR

FR: (Flag Register) Thanh ghi cờ

D Bus

FR

ALU: (Arithmetic and Logic Unit) Khối tính toán số học -logic

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 6

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 3

6/25/2014

CHU KỲ XỬ LÝ LỆNH

1. Khi một chương trình được chạy, hệ điều hành tải mã chương trình vào bộ nhớ trong

2. Địa chỉ lệnh đầu tiên của chương trình được đưa vào thanh ghi PC

ghi MAR

3. Địa chỉ của ô nhớ chứa lệnh được chuyển tới bus A qua thanh

4. Tiếp theo, bus A truyền địa chỉ tới khối quản lý bộ nhớ MMU (Memory Management Unit)

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

5. MMU chọn ô nhớ và sinh ra tín hiệu READ

www.ptit.edu.vn

Trang 7

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

CHU KỲ XỬ LÝ LỆNH

6. Lệnh chứa trong ô nhớ được chuyển tới thanh ghi MBR qua bus D

7. MBR chuyển lệnh tới thanh ghi IR. Sau đó IR lại chuyển lệnh tới CU

8. CU giải mã lệnh và sinh ra các tín hiệu xử lý cho các đơn vị khác, ví dụ như ALU để thực hiện lệnh

9. Địa chỉ trong PC được tăng lên để trỏ tới lệnh tiếp theo của chương trình sẽ được thực hiện

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

10. Thực hiện lại các bước 3->9 để chạy hết các lệnh của chương trình

www.ptit.edu.vn

Trang 8

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 4

6/25/2014

THANH GHI

 Thanh ghi là thành phần nhớ ở bên trong CPU:  Lưu trữ tạm thời lệnh và dữ liệu cho CPU xử lý  Dung lượng nhỏ, số lượng ít  Tốc độ rất cao (bằng tốc độ CPU)

 Các CPU thế hệ cũ (80x86) có 16 – 32 thanh ghi. CPU thế hệ mới (Intel Pentium 4, Core 2 Duo) có hàng trăm thanh ghi  Kích thước thanh ghi phụ thuộc vào thiết kế CPU: 8, 16, 32,

8086 và 80286: 8 và 16 bit 80386, Pentium II: 16 – 32 bit Pentium IV, Core Duo: 32, 64 và 128 bit

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

64, 128 và 256 bit   

www.ptit.edu.vn

Trang 9

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

THANH GHI TÍCH LŨY A (Accumulator)

 Thanh ghi tích lũy hay thanh ghi A là một trong những thanh

ghi quan trọng nhất của CPU  Lưu trữ các toán hạng đầu vào  Lưu kết quả đầu ra

 Kích thước của thanh ghi A tương ứng với độ dài từ xử lý của CPU: 8, 16, 32, 64 bit

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Cũng được sử dụng để trao đổi dữ liệu với các thiết bị vào ra

www.ptit.edu.vn

Trang 10

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 5

6/25/2014

BỘ ĐẾM CHƯƠNG TRÌNH PC

 Program Counter hay Instruction Pointer lưu địa chỉ bộ nhớ của lệnh tiếp theo

 PC chứa địa chỉ ô nhớ chứa lệnh đầu tiên của chương trình khi nó được kích hoạt và được tải vào bộ nhớ

theo được tải vào PC

 Sau khi CPU chạy xong 1 lệnh, địa chỉ ô nhớ chứa lệnh tiếp

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Kích thước của PC phụ thuộc vào thiết kế CPU: 8, 16, 32, 64 bit

www.ptit.edu.vn

Trang 11

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

THANH GHI TRẠNG THÁI FR

 Mỗi bit của thanh ghi cờ lưu trữ trạng thái kết quả phép tính được ALU thực hiện

 Cờ trạng thái: CF, OF, AF, ZF, PF, SF  Cờ điều khiển: IF, TF, DF

 Có 2 kiểu cờ:

 Các bit cờ thường được dùng là các điều kiện rẽ nhánh lệnh tạo logic chương trình

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Kích thước FR phụ thuộc thiết kế CPU

www.ptit.edu.vn

Trang 12

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 6

6/25/2014

THANH GHI TRẠNG THÁI FR

 ZF: Zero Flag, ZF=1 nếu kết quả =0 và ZF=0 nếu kết quả <>0.  SF: Sign Flag, SF=1 nếu kết quả âm và SF=0 nếu kết quả dương  CF: Carry Flag, CF=1 nếu có nhớ/mượn ở bit trái nhất  AF: Auxiliary Flag, AF=1 nếu có nhớ ở bit trái nhất của nibble  OF: Overflow Flag, OF=1 nếu có tràn, OF=0 ngược lại  PF: Parity Flag, PF=1 nếu tổng số bit 1 trong kết quả là số lẻ, PF=0 ngược lại  IF: Interrupt Flag, IF=1: ngắt được phép, IF=0: cấm ngắt

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 13

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

THANH GHI TRẠNG THÁI CỦA 8086

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 14

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 7

6/25/2014

CON TRỎ NGĂN XẾP (SP: Stack Pointer)

 Ngăn xếp là 1 đoạn bộ nhớ đặc biệt hoạt động theo nguyên tắc vào sau ra trước (LIFO)

SP

Push: đẩy dữ liệu vào ngăn xếp SP  SP + 1 {SP}  Data Pop: lấy dữ liệu ra khỏi ngăn xếp Register  {SP} SP  SP - 1

Stack

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Con trỏ ngăn xếp là thanh ghi luôn trỏ tới đỉnh của ngăn xếp  2 thao tác với ngăn xếp:

www.ptit.edu.vn

Trang 15

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

CÁC THANH GHI ĐA NĂNG

 Lưu các toán hạng đầu vào  Lưu các kết quả đầu ra

 Có thể sử dụng cho nhiều mục đích:

 AX: Accumulator Register  BX: Base Register  CX: Counter Register  DX: Data Register

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Ví dụ: CPU 8086 có 4 thanh ghi đa năng

www.ptit.edu.vn

Trang 16

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 8

6/25/2014

THANH GHI LỆNH IR

MBR

IR

CU

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Lưu trữ lệnh đang được xử lý  IR lấy lệnh từ MBR và chuyển nó tới CU để giải mã lệnh

www.ptit.edu.vn

Trang 17

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

THANH GHI MBR VÀ MAR

 Giao diện giữa CPU và bus địa chỉ  Nhận địa chỉ bộ nhớ của lệnh tiếp theo từ PC và chuyển nó tới

bus địa chỉ

 MBR: thanh ghi đệm bộ nhớ

 Giao diện giữa CPU và bus dữ liệu  Nhận lệnh từ bus dữ liệu và chuyển nó tới IR

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 MAR: thanh ghi địa chỉ bộ nhớ

www.ptit.edu.vn

Trang 18

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 9

6/25/2014

CÁC THANH GHI TẠM THỜI

 Lưu trữ các toán hạng đầu vào  Lưu các kết quả đầu ra  Hỗ trợ xử lý song song (tại một thời điểm chạy nhiều hơn 1

lệnh)

 Hỗ trợ thực hiện lệnh theo cơ chế thực hiện tiên tiến kiểu không

trật tự (OOO – Out Of Order execution)

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 CPU thường sử dụng một số thanh ghi tạm thời để:

www.ptit.edu.vn

Trang 19

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

KHỐI ĐIỀU KHIỂN CU

Internal control signal

External control signal

CLK

Control Unit CU

ALU Flags

IR

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 20

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 10

6/25/2014

KHỐI ĐIỀU KHIỂN CU

 Điều khiển tất cả các hoạt động của CPU theo xung nhịp đồng hồ

 Lệnh từ IR  Giá trị các cờ trạng thái  Xung đồng hồ

 Nhận 3 tín hiệu đầu vào:

 Nhóm tín hiệu điều khiển các bộ phận bên trong CPU  Nhóm tín hiệu điều khiển các bộ phận bên ngoài CPU

 CU sinh 2 nhóm tín hiệu đầu ra:

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Sử dụng nhịp đồng hồ để đồng bộ hóa các đơn vị bên trong CPU và giữa CPU với các thành phần bên ngoài

www.ptit.edu.vn

Trang 21

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

KHỐI SỐ HỌC VÀ LOGIC ALU

IN

IN

ADD

SHL

SUB

NEG

MUL

DIV

SHR

ROL

NOT

OR

ROR

AND

XOR

OUT

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 22

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 11

6/25/2014

KHỐI SỐ HỌC VÀ LOGIC ALU

 Bao gồm các đơn vị chức năng con để thực hiện các phép

 Các bộ dịch (SHIFT) và quay (ROTATE)  Bộ phủ định (NOT), bộ và (AND), bộ hoặc (OR), và bộ hoặc

loại trừ (XOR)

toán số học và logic:  Bộ cộng (ADD), bộ trừ (SUB), bộ nhân (MUL), bộ chia (DIV),

 

2 cổng IN để nhận đầu vào từ các thanh ghi 1 cổng OUT được nối với bus trong để gửi kết quả tới các thanh ghi

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 ALU có:

www.ptit.edu.vn

Trang 23

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

BUS TRONG

 Bus trong là kênh liên lạc của tất cả các thành phần trong CPU

 Hỗ trợ liên lạc 2 chiều  Bus trong có giao diện để trao đổi thông tin với bus ngoài (bus hệ thống)

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Bus trong luôn có băng thông lớn và tốc độ nhanh hơn so với bus ngoài

www.ptit.edu.vn

Trang 24

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 12

6/25/2014

2.2 TẬP LỆNH MÁY TÍNH

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 25

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

GIỚI THIỆU CHUNG

 Lệnh máy tính là một từ nhị phân (binary word) mà thực hiện

một nhiệm vụ cụ thể:  Lệnh được lưu trong bộ nhớ  Lệnh được đọc từ bộ nhớ vào CPU để giải mã và thực hiện  Mỗi lệnh có chức năng riêng của nó

 Tập lệnh gồm nhiều lệnh, có thể được chia thành các nhóm

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

theo chức năng:  Chuyển dữ liệu (data movement)  Tính toán (computational)  Điều kiện và rẽ nhánh (conditioning & branching)  Các lệnh khác …

www.ptit.edu.vn

Trang 26

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 13

6/25/2014

GIỚI THIỆU CHUNG

CPU

 Giải mã lệnh ID(Instruction Decode): CPU giải mã lệnh  Chay lệnh IE(Instruction Execution): CPU thực hiện lệnh  Ghi WB(Write Back): kết quả lệnh (nếu có) được ghi vào thanh

ghi hoặc bộ nhớ

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Quá trình thực hiện/ chạy lệnh được chia thành các pha hay giai đoạn (stage). Mỗi lệnh có thể được thực hiện theo 4 giai đoạn:  Đọc lệnh IF(Instruction Fetch): lệnh được đọc từ bộ nhớ vào

www.ptit.edu.vn

Trang 27

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

KHUÔN DẠNG LỆNH

hạng phụ thuộc vào lệnh. Có thể có các dạng địa chỉ toán hạng sau: • 3 địa chỉ • 2 địa chỉ • 1 địa chỉ • 1.5 địa chỉ • 0 địa chỉ

Opcode

Addresses of Operands

Opcode

Destination addr.

Source addr.

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Khuôn dạng lệnh thông thường bao gồm 2 phần:  Mã lệnh (opcode): mỗi lệnh đều có riêng một mã  Địa chỉ các toán hạng (addresses of operands): số lượng toán

www.ptit.edu.vn

Trang 28

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 14

6/25/2014

TOÁN HẠNG 3 ĐỊA CHỈ

opcode addr1, addr2, addr3

  Mỗi địa chỉ addr1, addr2, addr3: tham chiếu tới một ô nhớ hoặc

1 thanh ghi

 Khuôn dạng:

1. ADD R1, R2, R3; R2 + R3  R1

R2 cộng R3 sau đó kết quả đưa vào R1 Ri là các thanh ghi CPU

2. ADD A, B, C; M[B]+M[C]  M[A]

A, B, C là các vị trí trong bộ nhớ

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Ví dụ

www.ptit.edu.vn

Trang 29

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

TOÁN HẠNG 2 ĐỊA CHỈ

opcode addr1, addr2

  Mỗi địa chỉ addr1, addr2: tham chiếu tới 1 thanh ghi hoặc 1 vị

trí trong bộ nhớ

 Ví dụ

1. ADD R1, R2; R1 + R2  R1

R1 cộng R2 sau đó kết quả đưa vào R1 Ri là các thanh ghi CPU

2. ADD A, B; M[A]+M[B]  M[A]

A, B là các vị trí trong bộ nhớ

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Khuôn dạng:

www.ptit.edu.vn

Trang 30

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 15

6/25/2014

TOÁN HẠNG 1 ĐỊA CHỈ

địa chỉ thứ 2

 Khuôn dạng:  opcode addr  addr: tham chiếu tới 1 thanh ghi hoặc 1 vị trí trong bộ nhớ  Khuôn dạng này sử dụng Racc (thanh ghi tích lũy) mặc định cho

1. ADD R1; R1 + Racc  Racc

R1 cộng Racc sau đó kết quả đưa vào Racc Ri là các thanh ghi CPU

2. ADD A; M[A]+Racc  Racc

A là vị trí trong bộ nhớ

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Ví dụ

www.ptit.edu.vn

Trang 31

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

TOÁN HẠNG 1.5 ĐỊA CHỈ

opcode addr1, addr2

  Một địa chỉ tham chiếu tới 1 ô nhớ và địa chỉ còn lại tham chiếu

tới 1 thanh ghi

 Là dạng hỗn hợp giữa các toán hạng thanh ghi và vị trí bộ nhớ

 Khuôn dạng:

1. ADD R1, B; M[B] + R1  R1

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Ví dụ

www.ptit.edu.vn

Trang 32

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 16

6/25/2014

CÁC CHẾ ĐỘ ĐỊA CHỈ

 Chế độ địa chỉ cho phép CPU kiểm tra dạng và tìm các toán

hạng của lệnh

 Chế độ địa chỉ là cách thức CPU tổ chức các toán hạng

 Chế độ địa chỉ tức thì (Immediate)  Chế độ địa chỉ trực tiếp (Direct)  Chế độ địa chỉ gián tiếp qua thanh ghi (Register Indirect)  Chế độ địa chỉ gián tiếp qua bộ nhớ (Memory Indirect)  Chế độ địa chỉ chỉ số (Indexed)  Chế độ địa chỉ tương đối (Relative)

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Một số chế độ địa chỉ tiêu biểu:

www.ptit.edu.vn

Trang 33

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

CHẾ ĐỘ ĐỊA CHỈ TỨC THÌ

LOAD R1, #1000; 1000  R1 giá trị 1000 được tải vào thanh ghi R1

LOAD B, #500; 500  M[B] Giá trị 500 được tải vào vị trí B trong bộ nhớ

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Giá trị của toán hạng nguồn có sẵn trong lệnh (hằng số)  Toán hạng đích có thể là thanh ghi hoặc một vị trí bộ nhớ  Ví dụ:

www.ptit.edu.vn

Trang 34

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 17

6/25/2014

CHẾ ĐỘ ĐỊA CHỈ TRỰC TIẾP/ TUYỆT ĐỐI

 Một toán hạng là địa chỉ của một vị trí trong bộ nhớ chứa dữ liệu

LOAD R1, 1000; M[1000]  R1 giá trị lưu trong vị trí 1000 ở bộ nhớ được tải vào thanh ghiR1

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Toán hạng kia là thanh ghi hoặc 1 địa chỉ ô nhớ  Ví dụ:

www.ptit.edu.vn

Trang 35

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

CHẾ ĐỘ ĐỊA CHỈ TRỰC TIẾP/ TUYỆT ĐỐI

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 36

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 18

6/25/2014

CHẾ ĐỘ ĐỊA CHỈ GIÁN TIẾP

 Một thanh ghi hoặc một vị trí trong bộ nhớ được sử dụng để

LOAD Rj ,(Ri); M[Ri]  Rj

Tải giá trị tại vị trí bộ nhớ có địa chỉ được lưu trong Ri vào thanh ghi Rj

 Gián tiếp bộ nhớ:

LOAD Ri , (1000); M[M[1000]]  Ri Giá trị của vị trí bộ nhớ có địa chỉ được lưu tại vị trí 1000 vào Ri

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

lưu địa chỉ của toán hạng  Gián tiếp thanh ghi:

www.ptit.edu.vn

Trang 37

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

CHẾ ĐỘ ĐỊA CHỈ GIÁN TIẾP

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 38

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 19

6/25/2014

CHẾ ĐỘ ĐỊA CHỈ CHỈ SỐ

 Địa chỉ của toán hạng có được bằng cách cộng thêm hằng số vào nội dung của một thanh ghi, là thanh ghi chỉ số

 Ví dụ

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

LOAD Ri, X(Rind); M[X+Rind]  Ri

www.ptit.edu.vn

Trang 39

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

CHẾ ĐỘ ĐỊA CHỈ TƯƠNG ĐỐI

 Địa chỉ của toán hạng có được bằng cách cộng thêm hằng số

vào nội dung của một thanh ghi, là thanh ghi con đếm chương trình PC

 Ví dụ

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

LOAD Ri, X(PC); M[X+PC]  Ri

www.ptit.edu.vn

Trang 40

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 20

6/25/2014

TỔNG KẾT CÁC CHẾ ĐỘ ĐỊA CHỈ

Ý nghĩa

Ví dụ

Thực hiện

Chế độ địa chỉ

Tức thì

LOAD Ri, #1000

Ri  1000

Giá trị của toán hạng được chứa trong lệnh

Trực tiếp

LOAD Ri, 1000

Ri  M[1000]

Địa chỉ của toán hạng được chứa trong lệnh

LOAD Ri, (Rj)

Ri  M[Rj]

Gián tiếp thanh ghi

Giá trị của thanh ghi trong lệnh là địa chỉ bô nhớ chứa toán hạng

LOAD Ri, (1000)

Ri  M[M[1000]]

Gián tiếp bộ nhớ

Địa chỉ bộ nhớ trong lệnh chứa địa chỉ bộ nhớ của toán hạng

Chỉ số

LOAD Ri, X(Rind) Ri  M[X+ Rind]

Địa chỉ của toán hạng là tổng của hằng số (trong lệnh) và giá trị của một thanh ghi chỉ số

Tương đối

LOAD Ri, X(PC)

Ri  M[ X+ PC]

Địa chỉ của toán hạng là tổng của hằng số và giá trị của thanh ghi con đếm chương trình

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 41

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

MỘT SỐ DẠNG LỆNH THÔNG DỤNG

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Các lệnh vận chuyển dữ liệu  Các lệnh số học và logic  Các lệnh điều khiển chương trình  Các lệnh vào/ ra

www.ptit.edu.vn

Trang 42

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 21

6/25/2014

LỆNH VẬN CHUYỂN DỮ LIỆU

 Giữa các thanh ghi trong CPU MOVE Ri, Rj ; Rj -> Ri

 Giữa thanh ghi CPU và một vị trí trong bộ nhớ

MOVE Rj,1000; M[1000] -> Rj

 Giữa các vị trí trong bộ nhớ

MOVE 1000, (Rj) ; M[Rj] -> M[1000]

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Chuyển dữ liệu giữa các phần của máy tính

www.ptit.edu.vn

Trang 43

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

MỘT SỐ LỆNH VẬN CHUYỂN DỮ LIỆU THÔNG DỤNG

 MOVE: chuyển dữ liệu giữa thanh ghi – thanh ghi, ô nhớ - thanh ghi, ô nhớ - ô nhớ

44

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 LOAD: nạp nội dung 1 ô nhớ vào 1 thanh ghi  STORE: lưu nội dung 1 thanh ghi ra 1 ô nhớ  PUSH: đẩy dữ liệu vào ngăn xếp  POP: lấy dữ liệu ra khỏi ngăn xếp

www.ptit.edu.vn

Trang 44

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 22

6/25/2014

LỆNH SỐ HỌC VÀ LOGIC

 Thực hiện các thao tác số học và logic giữa các thanh ghi và nội dung ô nhớ

ADD R1, R2, R3; R2 + R3 -> R1

SUBSTRACT R1, R2, R3; R2 – R3 -> R1

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Ví dụ:

www.ptit.edu.vn

Trang 45

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

CÁC LỆNH TÍNH TOÁN SỐ HỌC THÔNG DỤNG

46

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 ADD: cộng 2 toán hạng  SUBSTRACT: trừ 2 toán hạng  MULTIPLY: nhân 2 toán hạng  DIVIDE: chia số học  INCREMENT: tăng 1  DECREMENT: giảm 1

www.ptit.edu.vn

Trang 46

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 23

6/25/2014

CÁC LỆNH LOGIC THÔNG DỤNG

47

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 NOT: phủ định  AND: và  OR: hoặc  XOR: hoặc loại trừ  COMPARE: so sánh  SHIFT: dịch  ROTATE: quay

www.ptit.edu.vn

Trang 47

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

LỆNH ĐIỀU KHIỂN/ TUẦN TỰ

 Các lệnh rẽ nhánh (nhẩy) có điều kiện (conditional branching/

jump)

 Các lệnh rẽ nhánh (nhẩy) không điều kiện (unconditional

branching/ jump)

 CALL và RETURN: lệnh gọi thực hiện và trở về từ chương

trình con

 Được dùng để thay đổi trình tự các lệnh được thực hiện:

 Đặc tính chung của các lệnh này là quá trình thực hiện lệnh của chúng làm thay đổi giá trị PC

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Sử dụng các cờ ALU để xác định các điều kiện

www.ptit.edu.vn

Trang 48

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 24

6/25/2014

MỘT SỐ LỆNH ĐIỀU KHIỂN THÔNG DỤNG

 BRANCH – IF – CONDITION: chuyển đến thực hiện lệnh ở địa chỉ mới nếu điều kiện là đúng

49

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 JUMP: chuyển đến thực hiện lệnh ở địa chỉ mới  CALL: chuyển đến thực hiện chương trình con  RETURN: trở về (từ chương trình con) thực hiện tiếp chương trình gọi

www.ptit.edu.vn

Trang 49

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

MỘT SỐ LỆNH ĐIỀU KHIỂN THÔNG DỤNG

LOAD R1, #100

LAP:

ADD R0, (R2) DECREMENT R1 BRANCH_IF >0 LAP

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 50

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 25

6/25/2014

CÁC LỆNH VÀO/ RA

 Được dùng để truyền dữ liệu giữa máy tính và các thiết bị ngoại vi

 Các thiết bị ngoại vi giao tiếp với máy tính thông qua các cổng. Mỗi cổng có một địa chỉ dành riêng

OUTPUT  Lệnh INPUT được dùng để chuyển dữ liệu từ thiết bị ngoại vi

vào tới bộ vi xử lý

 Lệnh OUTPUT dùng để chuyển dữ liệu từ VXL ra thiết bị đầu

ra

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Hai lệnh I/O cơ bản được sử dụng là các lệnh INPUT và

www.ptit.edu.vn

Trang 51

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

CÁC VÍ DỤ

R0 0

R1 100

CLEAR R0; MOVE R1, #100; CLEAR R2; R2 0

LAP:

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

ADD R0, 1000(R2); INCREMENT R2; DECREMENT R1; BRANCH_IF>0 LAP; STORE 2000, R0; R0R0+ M[R2+1000] R2 R2+1 R1 R1-1 go to LAP if R1>0 M[2000] R0

www.ptit.edu.vn

Trang 52

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 26

6/25/2014

BÀI TẬP

1. Cho đoạn lệnh sau: ADD R2, (R0); SUBSTRACT R2, (R1); MOVE 500(R0), R2; LOAD R2, #5000; STORE 100(R2), R0;

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

Biết R0=1500, R1=4500, R2=1000, M[1500]=3000, M[4500]=500 Hãy chỉ ra giá trị của thanh ghi và tại vị trí trong bộ nhớ qua mỗi lệnh thực hiện.

www.ptit.edu.vn

Trang 53

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

BÀI TẬP

a. Hãy giải thích ý nghĩa của

2. Cho đoạn lệnh sau:

b. Chỉ ra chế độ địa chỉ của

từng lệnh

MOVE R0, #100; CLEAR R1; CLEAR R2;

c. Đoạn lệnh trên thực hiện

LAP: từng lệnh (đối với các lệnh có 2 toán hạng)

công việc gì?

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

ADD R1, 2000(R2); ADD R2, #2; DECREMENT R0; BRANCH_IF>0 LAP; STORE 3000, R1;

www.ptit.edu.vn

Trang 54

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 27

6/25/2014

BÀI TẬP

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Cho một mảng gồm 10 số, được lưu trữ liên tiếp nhau trong bộ nhớ, bắt đầu từ vị trí ô nhớ 1000. Viết đoạn chương trình tính tổng các số dương trong mảng đó và lưu kết quả vào ô nhớ 2000.

www.ptit.edu.vn

Trang 55

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

2.3 GIỚI THIỆU CƠ CHẾ ỐNG LỆNH PIPELINE

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 56

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 28

6/25/2014

NỘI DUNG CHÍNH

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Giới thiệu về CPU pipeline  Các vấn đề của pipeline  Xử lý xung đột dữ liệu và tài nguyên  Xử lý rẽ nhánh (branch)  Super pipeline

www.ptit.edu.vn

Trang 57

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

PIPELINE – VÍ DỤ THỰC TẾ

 Giặt tốn 30 phút

 Bài toán giặt: A. B, C, D có 4 túi quần áo cần giặt, làm khô, gấp

 Sấy khô: 40 phút

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Gấp: 20 phút

www.ptit.edu.vn

Trang 58

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 29

6/25/2014

PIPELINE – VÍ DỤ THỰC TẾ

Thực hiện tuần tự

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 59

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

PIPELINE – VÍ DỤ THỰC TẾ

Áp dụng pipeline

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 60

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 30

6/25/2014

GIỚI THIỆU VỀ CPU PIPELINE – NGUYÊN LÝ

  

Instruction fetch (IF): lấy lệnh từ bộ nhớ (hoặc cache) Instruction Decode (ID): giải mã lệnh và lấy các toán hạng Execute (EX): thực hiện lệnh: nếu là lệnh truy cập bộ nhớ thì tính toán địa chỉ bộ nhớ

 Memory access (MEM): đọc/ ghi bộ nhớ ; nếu không truy cập bộ nhớ thì

không có

 Write back (WB): lưu kết quả vào thanh ghi

 Cải thiện hiệu năng bằng cách tăng số lượng lệnh vào xử lý

61

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Quá trình thực hiện lệnh được chia thành các giai đoạn  5 giai đoạn của hệ thống load – store:

www.ptit.edu.vn

Trang 61

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

GIỚI THIỆU VỀ CPU PIPELINE – NGUYÊN LÝ

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 62

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 31

6/25/2014

GIỚI THIỆU VỀ CPU PIPELINE – ĐẶC ĐIỂM

 Pipeline là kỹ thuật song song ở mức lệnh (ILP: Instruction Level Parallelism)

 Một pipeline là đầy đủ nếu nó luôn nhận một lệnh mới tại mỗi chu kỳ đồng hồ

quá trình xử lý

 Một pipeline là không đầy đủ nếu có nhiều giai đoạn trễ trong

   

2, 3, 5 giai đoạn: pipeline đơn giản 14 giai đoạn: Pen II, Pen III 20 – 31 giai đoạn: Pen IV 12 -15 giai đoạn: Core

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Số lượng giai đoạn của pipeline phụ thuộc vào thiết kế CPU:

www.ptit.edu.vn

Trang 63

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

SỐ LƯỢNG GIAI ĐOẠN

 Mọi giai đoạn nên có thời gian thực hiện bằng nhau  Các giai đoạn chậm nên chia ra

 Thời gian thực hiện của các giai đoạn:

 Theo lý thuyết, số lượng giai đoạn càng nhiều thì hiệu năng

càng cao

 Nếu pipeline dài mà rỗng vì một số lý do, sẽ mất nhiều thời

gian để làm đầy pipeline

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Lựa chọn số lượng giai đoạn:

www.ptit.edu.vn

Trang 64

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 32

6/25/2014

CÁC VẤN ĐỀ CỦA PIPELINE

 Xung đột truy cập bộ nhớ  Xung đột truy cập thanh ghi

 Vấn đề xung đột tài nguyên (resource conflict)

 Hầu hết là RAW hay Read After Write Hazard

 Xung đột/ tranh chấp dữ liệu (data hazard)

 Không điều kiện  Có điều kiện  Gọi thực hiện và trở về từ chương trình con

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Các lệnh rẽ nhánh (Branch Instruction)

www.ptit.edu.vn

Trang 65

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

XUNG ĐỘT TÀI NGUYÊN

 Tài nguyên không đủ  Ví dụ: nếu bộ nhớ chỉ hỗ trợ một thao tác đọc/ ghi tại một

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

thời điểm, pipeline yêu cầu 2 truy cập bộ nhớ 1 lúc (đọc lệnh tại giai đoạn IF và đọc dữ liệu tại ID) -> nảy sinh xung đột

www.ptit.edu.vn

Trang 66

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 33

6/25/2014

XUNG ĐỘT TÀI NGUYÊN

 Nâng cao khả năng tài nguyên  Memory/ cache: hỗ trợ nhiều thao tác đọc/ ghi cùng lúc  Chia cache thành cache lệnh và cache dữ liệu để cải thiện

truy nhập

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Giải pháp:

www.ptit.edu.vn

Trang 67

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

XUNG ĐỘT DỮ LIỆU

 Xét 2 lệnh sau:

ADD R1, R1, R3; R1  R1 + R3 SUB R4, R1, R2; R4  R1 -R2

 SUB sử dụng kết quả lệnh ADD: có phụ thuộc dữ liệu giữa 2 lệnh này

 SUB đọc R1 tại giai đoạn 2 (ID); trong khi đó ADD lưu kết

SUB đọc giá trị cũ của R1 trước khi ADD lưu trữ giá trị mới vào R1

quả tại giai đoạn 5 (WB) 

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Dữ liệu chưa sẵn sàng cho các lệnh phụ thuộc tiếp theo

www.ptit.edu.vn

Trang 68

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 34

6/25/2014

XUNG ĐỘT DỮ LIỆU

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

ADD R1, R1, R3; R1  R1 + R3 SUB R4, R1, R2; R4  R1 + R2

www.ptit.edu.vn

Trang 69

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

HƯỚNG KHẮC PHỤC XUNG ĐỘT DỮ LIỆU

 Nhận biết nó xảy ra  Ngưng pipeline (stall): phải làm trễ hoặc ngưng pipeline bằng cách sử dụng một vài phương pháp tới khi có dữ liệu chính xác

 Chèn các lệnh NO-OP vào giữa các lệnh có RAW  Thay đổi trình tự các lệnh trong chương trình và chèn các lệnh

độc lập dữ liệu vào vị trí giữa 2 lệnh có RAW

 Sử dụng complier để nhận biết RAW và:

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Sử dụng phần cứng để xác định RAW (có trong các CPUs hiện đại) và dự đoán trước giá trị dữ liệu phụ thuộc

www.ptit.edu.vn

Trang 70

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 35

6/25/2014

HƯỚNG KHẮC PHỤC XUNG ĐỘT DỮ LIỆU

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Làm trễ quá trình thực hiện lệnh SUB bằng cách chèn 3 NO- OP

www.ptit.edu.vn

Trang 71

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

HƯỚNG KHẮC PHỤC XUNG ĐỘT DỮ LIỆU

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Chèn 3 lệnh độc lập dữ liệu vào giữa ADD và SUB

www.ptit.edu.vn

Trang 72

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 36

6/25/2014

QUẢN LÝ CÁC LỆNH RẼ NHÁNH TRONG PIPELINE

 Tỷ lệ các lệnh rẽ nhánh chiếm khoảng 10 - 30%. Các lệnh rẽ

Làm cho Pipeline rỗng nếu không có biện pháp ngăn chặn hiệu quả

nhánh có thể gây ra:  Gián đoạn trong quá trình chạy bình thường của chương trình 

Phải đẩy mọi lệnh đang thực hiện ra ngoài pipeline khi gặp lệnh rẽ nhánh Tải mới các lệnh từ địa chỉ rẽ nhánh vào pipeline. Tiêu tốn nhiều thời gian để điền đầy pipeline

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Với các CPU mà pipeline dài (P4 với 31 giai đoạn) và nhiều pipeline chạy song song, vấn đề rẽ nhánh càng trở nên phức tạp hơn vì: 

www.ptit.edu.vn

Trang 73

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

QUẢN LÝ CÁC LỆNH RẼ NHÁNH

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Khi 1 lệnh rẽ nhánh được thực hiện, các lệnh tiếp theo bị đẩy ra khỏi pipeline và các lệnh mới được tải

www.ptit.edu.vn

Trang 74

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 37

6/25/2014

GIẢI PHÁP QUẢN LÝ CÁC LỆNH RẼ NHÁNH

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Đích rẽ nhánh (branch target)  Rẽ nhánh có điều kiện (conditional branches)  Làm chậm rẽ nhánh (delayed branching)  Dự báo rẽ nhánh (branch prediction)

www.ptit.edu.vn

Trang 75

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

ĐÍCH RẼ NHÁNH

JUMP

ADD R1, R2

Address: SUB R3, R4

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Khi một lệnh rẽ nhánh được thực hiện, lệnh tiếp theo được lấy là lệnh ở địa chỉ đích rẽ nhánh (target) chứ không phải lệnh tại vị trí tiếp theo lệnh nhảy

www.ptit.edu.vn

Trang 76

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 38

6/25/2014

ĐÍCH RẼ NHÁNH

 Các lênh rẽ nhánh được xác định tại giai đoạn ID, vậy có thể biết trước chúng bằng cách giải mã trước

 Sử dụng đệm đích rẽ nhánh (BTB: branch target buffer) để

lưu vết của các lệnh rẽ nhánh đã được thực thi:  Địa chỉ đích của các lệnh rẽ nhánh được thực hiện  Lệnh đích của các lệnh rẽ nhánh được thực hiện

  Điều này có thể vì địa chỉ và lệnh đích thường không thay đổi

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Nếu các lệnh rẽ nhánh được sử dụng lại (trong vòng lặp): Các địa chỉ đích của chúng lưu trong BTB có thể được dùng mà không cần tính lại Các lệnh đích có thể dùng trực tiếp không cần load lại từ bộ nhớ

www.ptit.edu.vn

Trang 77

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

ĐÍCH RẼ NHÁNH CỦA PIII

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 78

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 39

6/25/2014

LỆNH RẼ NHÁNH CÓ ĐIỀU KIỆN

 Có 2 lệnh đích để lựa chọn  Không thể xác định được lệnh đích tới khi lệnh rẽ nhánh được

thực hiện xong Sử dụng BTB không hiệu quả vì phải đợi tới khi có thể xác định được lệnh đích

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Khó quản lý các lệnh rẽ nhánh ko có điều kiện hơn vì:

www.ptit.edu.vn

Trang 79

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

LỆNH RẼ NHÁNH CÓ ĐIỀU KIỆN – CÁC CHIẾN LƯỢC

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Làm chậm rẽ nhánh  Dự đoán rẽ nhánh

www.ptit.edu.vn

Trang 80

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 40

6/25/2014

LÀM CHẬM RẼ NHÁNH

 Lệnh rẽ nhánh không làm rẽ nhánh ngay lập tức  Mà nó sẽ bị làm chậm một vài chu kỳ đồng hồ phụ thuộc vào

độ dài của pipeline

 Dựa trên ý tưởng:

 Hoạt động tốt trên các vi xử lý RISC trong đó các lệnh có thời

gian xử lý bằng nhau Pipeline ngắn (thông thường là 2 giai đoạn)

  Lệnh sau lệnh nhảy luôn được thực hiện, không phụ thuộc vào

kết quả lệnh rẽ nhánh

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Các đăc điểm của làm chậm rẽ nhánh:

www.ptit.edu.vn

Trang 81

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

LÀM CHẬM RẼ NHÁNH

Sử dụng complier để chèn NO-OP vào vị trí ngay sau lệnh rẽ nhánh, hoặc

 Chuyển một lệnh độc lập từ trước tới ngay sau lệnh rẽ nhánh

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Cài đặt:

www.ptit.edu.vn

Trang 82

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 41

6/25/2014

LÀM CHẬM RẼ NHÁNH

ADD R2, R3, R4 CMP R1,0 JNE somewhere

 Xét các lệnh:

ADD R2, R3, R4 CMP R1,0 JNE somewhere NO-OP

 Chèn NO-OP vào vị trí ngay sau lệnh rẽ nhánh

CMP R1,0 JNE somewhere ADD R2, R3, R4

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Chuyển một lệnh độc lập từ trước tới ngay sau lệnh rẽ nhánh

www.ptit.edu.vn

Trang 83

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

LÀM CHẬM RẼ NHÁNH

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 84

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 42

6/25/2014

LÀM CHẬM RẼ NHÁNH – CÁC NHẬN XÉT

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Dễ cài đặt nhờ tối ưu trình biên dịch (complier)  Không cần phần cứng đặc biệt  Nếu chỉ chèn NO-OP làm giảm hiệu năng khi pipeline dài  Thay các lệnh NO-OP bằng các lệnh độc lập có thể làm giảm số lượng NO-OP cần thiết tới 70%

www.ptit.edu.vn

Trang 85

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

LÀM CHẬM RẼ NHÁNH – CÁC NHẬN XÉT

 Làm tăng độ phức tạp mã chương trình (code)  Cần lập trình viên và người xây dựng trình biên dịch có mức độ hiểu biết sâu về pipeline vi xử lý => hạn chế lớn

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Giảm tính khả chuyển (portable) của mã chương trình vì các chương trình phải được viết hoặc biên dịch lại trên các nền VXL mới

www.ptit.edu.vn

Trang 86

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 43

6/25/2014

DỰ ĐOÁN RẼ NHÁNH

 Dự đoán đúng: nâng cao hiệu năng  Dự đoán sai: đẩy các lệnh tiếp theo đã load và phải load lại các

lệnh tại đích rẽ nhánh

 Trường hợp xấu của dự đoán là 50% đúng và 50% sai

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Có thể dự đoán lệnh đích của lệnh rẽ nhánh:

www.ptit.edu.vn

Trang 87

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

DỰ ĐOÁN RẼ NHÁNH

 Đối với các lệnh nhảy ngược (backward):

Thường là một phần của vòng lặp Các vòng lặp thường được thực hiện nhiều lần

• •

 Đối với các lệnh nhảy xuôi (forward), khó dự đoán hơn:

Có thể là kết thúc lệnh loop Có thể là nhảy có điều kiện

• •

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Các cơ sở để dự đoán:

www.ptit.edu.vn

Trang 88

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 44

6/25/2014

AMD K6-2 pipeline

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 89

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Branch Prediction – Intel PIII

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 90

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 45

6/25/2014

Pipeline –Pen III, M

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 91

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Intel Pen 4 Pipeline

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 92

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 46

6/25/2014

Intel Core 2 Duo pipeline

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 93

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Intel Atom 16-stage pipeline

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 94

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 47

6/25/2014

SIÊU PIPELINE (superpipelining)

 Tăng độ sâu ống lệnh  Tăng tốc độ đồng hồ  Giảm thời gian trễ cho từng giai đoạn thực hiện lệnh

 Ví dụ: nếu giai đoạn thực hiện lệnh bởi ALU kéo dài -> chia

 Siêu pipeline là kỹ thuật cho phép:

thành một số giai đoạn nhỏ -> giảm thời gian chờ cho các giai đoạn ngắn

95

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

 Pentium 4 siêu ống với 20 giai đoạn

www.ptit.edu.vn

Trang 95

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

PENTIUM 4 SIÊU ỐNG VỚI 20 GIAI ĐOẠN

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 96

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 48

6/25/2014

Branch Prediction – Intel P4

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 97

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Intel Core 2 Duo – Super Pipeline

GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH

www.ptit.edu.vn

Trang 98

BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1

Gfdsfd 49