Bài giảng Kiến trúc Máy tính và hệ điều hành - Chương 2: Nội dung chính - Nguyễn Thị Ngọc Vinh
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc Máy tính và hệ điều hành - Chương 2: Nội dung chính - Nguyễn Thị Ngọc Vinh", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_kien_truc_may_tinh_va_he_dieu_hanh_chuong_2_noi_du.pdf
Nội dung text: Bài giảng Kiến trúc Máy tính và hệ điều hành - Chương 2: Nội dung chính - Nguyễn Thị Ngọc Vinh
- 6/25/2014 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG BÀI GIẢNG MÔN 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 IR Y MAR: (Memory Address Register) BusInternal Thanh ghi địa chỉ bộ nhớ MBR: (Memory Buffer Register) Thanh PC ghi nhớ đệm ALU A: (Accumulator Register) Thanh ghi A tích lũy Bus MAR Y, Z: (Temporary Register) Thanh ghi Z tạm thời D FR: (Flag Register) Thanh ghi cờ Bus MBR 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 3. Địa chỉ của ô nhớ chứa lệnh được chuyển tới bus A qua thanh ghi MAR 4. Tiếp theo, bus A truyền địa chỉ tới khối quản lý bộ nhớ MMU (Memory Management Unit) 5. MMU chọn ô nhớ và sinh ra tín hiệu READ GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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, 64, 128 và 256 bit . 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 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 Cũng được sử dụng để trao đổi dữ liệu với các thiết bị vào ra GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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ớ Sau khi CPU chạy xong 1 lệnh, địa chỉ ô nhớ chứa lệnh tiếp theo được tải vào PC Kích thước của PC phụ thuộc vào thiết kế CPU: 8, 16, 32, 64 bit GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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ó 2 kiểu cờ: . Cờ trạng thái: CF, OF, AF, ZF, PF, SF . Cờ điều khiển: IF, TF, DF 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 Kích thước FR phụ thuộc thiết kế CPU GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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) 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: . Push: đẩy dữ liệu vào ngăn xếp SP SP + 1 SP {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 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 Có thể sử dụng cho nhiều mục đích: . Lưu các toán hạng đầu vào . Lưu các kết quả đầu ra Ví dụ: CPU 8086 có 4 thanh ghi đa năng . AX: Accumulator Register . BX: Base Register . CX: Counter Register . DX: Data Register GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 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 MBR IR CU GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH www.ptit.edu.vn Trang 17 BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1 THANH GHI MBR VÀ MAR MAR: thanh ghi địa chỉ bộ nhớ . 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 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 CPU thường sử dụng một số 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 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 External control control signal signal Control Unit ALU CLK CU 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ồ Nhận 3 tín hiệu đầu vào: . Lệnh từ IR . Giá trị các cờ trạng thái . Xung đồng hồ CU sinh 2 nhóm tín hiệu đầu ra: . 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 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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 SUB NEG SHL MUL DIV SHR ROL NOT OR AND ROR 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 toán số học và logic: . Bộ cộng (ADD), bộ trừ (SUB), bộ nhân (MUL), bộ chia (DIV), . 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) ALU có: . 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 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) Bus trong luôn có băng thông lớn và tốc độ nhanh hơn so với bus ngoài GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 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 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 www.ptit.edu.vn Trang 27 BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1 KHUÔN DẠNG LỆNH 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 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 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Ỉ Khuôn dạng: . opcode addr1, addr2, addr3 . Mỗi địa chỉ addr1, addr2, addr3: tham chiếu tới một ô nhớ hoặc 1 thanh ghi Ví dụ 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 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Ỉ Khuôn dạng: . 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 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Ỉ 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 địa chỉ thứ 2 Ví dụ 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 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Ỉ Khuôn dạng: . 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ớ Ví dụ 1. ADD R1, B; M[B] + R1 R1 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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ỉ là cách thức CPU tổ chức các toán hạng . 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 Một số chế độ địa chỉ tiêu biểu: . 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 www.ptit.edu.vn Trang 33 BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1 CHẾ ĐỘ ĐỊA CHỈ TỨC THÌ 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ụ: 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 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 Toán hạng kia là thanh ghi hoặc 1 địa chỉ ô nhớ Ví dụ: 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 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 để lưu địa chỉ của toán hạng . Gián tiếp thanh ghi: 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 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ụ LOAD Ri, X(Rind); M[X+Rind] Ri GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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ụ LOAD Ri, X(PC); M[X+PC] Ri GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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Ỉ Chế độ địa Ý nghĩa Ví dụ Thực hiện chỉ Tức thì Giá trị của toán hạng được chứa trong LOAD Ri, #1000 Ri 1000 lệnh Trực tiếp Địa chỉ của toán hạng được chứa trong LOAD Ri, 1000 Ri M[1000] lệnh Gián tiếp Giá trị của thanh ghi trong lệnh là địa LOAD Ri, (Rj) Ri M[Rj] thanh ghi chỉ bô nhớ chứa toán hạng Gián tiếp bộ Địa chỉ bộ nhớ trong lệnh chứa địa chỉ LOAD Ri, (1000) Ri M[M[1000]] nhớ bộ nhớ của toán hạng Chỉ số Địa chỉ của toán hạng là tổng của hằng LOAD Ri, X(Rind) Ri M[X+ Rind] số (trong lệnh) và giá trị của một thanh ghi chỉ số Tương đối Địa chỉ của toán hạng là tổng của hằng LOAD Ri, X(PC) Ri M[ X+ PC] 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 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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 Chuyển dữ liệu giữa các phần của máy tính . 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 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ớ 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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 44 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ớ Ví dụ: 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 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 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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 46 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 NOT: phủ định AND: và OR: hoặc XOR: hoặc loại trừ COMPARE: so sánh SHIFT: dịch ROTATE: quay GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 47 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 dùng để thay đổi trình tự các lệnh được thực hiện: . 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 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 Sử dụng các cờ ALU để xác định các điều kiện GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 49 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 Hai lệnh I/O cơ bản được sử dụng là các lệnh INPUT và 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 www.ptit.edu.vn Trang 51 BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1 CÁC VÍ DỤ CLEAR R0; R0 0 MOVE R1, #100; R1 100 CLEAR R2; R2 0 LAP: ADD R0, 1000(R2); R0R0+ M[R2+1000] INCREMENT R2; R2 R2+1 DECREMENT R1; R1 R1-1 BRANCH_IF>0 LAP; go to LAP if R1>0 STORE 2000, R0; M[2000] R0 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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; 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. GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH www.ptit.edu.vn Trang 53 BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1 BÀI TẬP 2. Cho đoạn lệnh sau: MOVE R0, #100; a. Hãy giải thích ý nghĩa của CLEAR R1; từng lệnh CLEAR R2; b. Chỉ ra chế độ địa chỉ của LAP: từng lệnh (đối với các lệnh có 2 toán hạng) ADD R1, 2000(R2); c. Đoạn lệnh trên thực hiện ADD R2, #2; công việc gì? DECREMENT R0; BRANCH_IF>0 LAP; STORE 3000, R1; GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 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. GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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ớ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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH www.ptit.edu.vn Trang 57 BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1 PIPELINE – VÍ DỤ THỰC 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 Giặt tốn 30 phút Sấy khô: 40 phút Gấp: 20 phút GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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Ý 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: . 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ý GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 61 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ồ Một pipeline là không đầy đủ nếu có nhiều giai đoạn trễ trong quá trình xử lý Số lượng giai đoạn của pipeline phụ thuộc vào thiết kế CPU: . 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 www.ptit.edu.vn Trang 63 BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1 SỐ LƯỢNG GIAI ĐOẠN Thời gian thực hiện của các 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 Lựa chọn số lượng 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 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 Vấn đề xung đột tài nguyên (resource conflict) . Xung đột truy cập bộ nhớ . Xung đột truy cập thanh ghi Xung đột/ tranh chấp dữ liệu (data hazard) . Hầu hết là RAW hay Read After Write Hazard Các lệnh rẽ nhánh (Branch Instruction) . 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 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 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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 Giải pháp: . 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 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 quả tại giai đoạn 5 (WB) . SUB đọc giá trị cũ của R1 trước khi ADD lưu trữ giá trị mới vào R1 Dữ liệu chưa sẵn sàng cho các lệnh phụ thuộc tiếp theo GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 ADD R1, R1, R3; R1 R1 + R3 SUB R4, R1, R2; R4 R1 + R2 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 Sử dụng complier để nhận biết RAW và: . 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 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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 Làm trễ quá trình thực hiện lệnh SUB bằng cách chèn 3 NO- OP GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 Chèn 3 lệnh độc lập dữ liệu vào giữa ADD và SUB GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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ẽ 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 . Làm cho Pipeline rỗng nếu không có biện pháp ngăn chặn hiệu quả 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ì: . 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 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 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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 Đí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) GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH www.ptit.edu.vn Trang 75 BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1 ĐÍCH RẼ NHÁNH 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 JUMP ADD R1, R2 Address: SUB R3, R4 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 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ớ Đ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 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 Khó quản lý các lệnh rẽ nhánh ko có điều kiện hơn vì: . 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 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 Làm chậm rẽ nhánh Dự đoán rẽ nhánh GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 Dựa trên ý tưởng: . 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 Các đăc điểm của làm chậm rẽ nhánh: . 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 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 Cài đặt: . 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 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 Xét các lệnh: ADD R2, R3, R4 CMP R1,0 JNE somewhere Chèn NO-OP vào vị trí ngay sau lệnh rẽ nhánh ADD R2, R3, R4 CMP R1,0 JNE somewhere NO-OP Chuyển một lệnh độc lập từ trước tới 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 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 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% GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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ả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 GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 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 Có thể dự đoán lệnh đích của lệnh 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 www.ptit.edu.vn Trang 87 BỘ MÔN: KHOA HỌC MÁY TÍNH – KHOA CNTT1 DỰ ĐOÁN RẼ NHÁNH Các cơ sở để dự đoán: . Đố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 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) Siêu pipeline là kỹ thuật cho phép: . 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 thành một số giai đoạn nhỏ -> giảm thời gian chờ cho các giai đoạn ngắn Pentium 4 siêu ống với 20 giai đoạn GIẢNG VIÊN: THS NGUYỄN THỊ NGỌC VINH 95 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