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; R0R0+ 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, R2Address: 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

