1. Trang chủ
  2. » Thể loại khác

Chuong 3 KIEN TRUC TAP LENH

24 206 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Chuong 3 KIEN TRUC TAP LENH tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩnh vực...

10/01/2017 Chương Kiến trúc tập lệnh (Instruction Set Architecture) Nội dung • • • • • • Mơ hình lập trình máy tính Các đặc trưng lệnh máy Các kiểu thao tác lệnh Các phương pháp định địa Phân loại tập lệnh Kiến trúc tập lệnh Intel x86 Mơ hình lập trình máy tính • Vị trí kiến trúc tập lệnh ISA máy tính – Nằm phần cứng NNLT cấp cao HLL – Giúp phần mềm tương thích kiến trúc phần cứng thay đổi 10/01/2017 Mơ hình lập trình máy tính • Máy tính theo quan điểm lập trình Mơ hình lập trình máy tính • Ví dụ thi hành chương trình Mơ hình lập trình máy tính • Tập ghi (Registers) – Chứa thông tin tạm thời phục vụ cho hoạt động thời điểm CPU – Được coi mức hệ thống nhớ – Số lượng ghi nhiều  tăng hiệu CPU – Có hai loại ghi: • Các ghi lập trình • Các ghi khơng lập trình 10/01/2017 Mơ hình lập trình máy tính • Phân loại ghi theo chức – Thanh ghi địa chỉ: quản lý địa nhớ hay cổng IO – Thanh ghi liệu: chứa tạm thời liệu – Thanh ghi đa năng: chứa địa liệu – Thanh ghi điều khiển/trạng thái: chứa thông tin điều khiển trạng thái CPU – Thanh ghi lệnh: chứa lệnh thực Mơ hình lập trình máy tính • Một số ghi điển hình – Các ghi địa (Address Register) • • • • Bộ đếm chương trình PC (Program Counter) Con trỏ liệu DP (Data Pointer) Con trỏ ngăn xếp SP (Stack Pointer) Thanh ghi sở ghi số (Base Register & Index Register) – Các ghi liệu (Data Register) – Thanh ghi trạng thái (Status Register) Mơ hình lập trình máy tính • Bộ đếm chương trình PC – Cịn gọi trỏ lệnh IP (Instruction Pointer) – Giữ địa lệnh thi hành – Sau lệnh nhận vào CPU, nội dung PC tự động tăng để trỏ sang lệnh • Thanh ghi trỏ liệu DP – Chứa địa ô nhớ liệu mà CPU muốn truy cập – Thường có nhiều ghi trỏ liệu cho phép chương trình truy cập nhiều vùng nhớ đồng thời 10/01/2017 Mơ hình lập trình máy tính • Ngăn xếp (Stack) – Ngăn xếp vùng nhớ có cấu trúc LIFO (Last In First Out) FILO (First In - Last Out) – Ngăn xếp thường dùng để phục vụ cho chương trình – Đáy ngăn xếp ô nhớ xác định – Đỉnh ngăn xếp thông tin nằm vị trí ngăn xếp – Đỉnh ngăn xếp bị thay đổi Mơ hình lập trình máy tính • Con trỏ ngăn xếp SP (Stack Pointer) – Chứa địa ô nhớ đỉnh ngăn xếp – Khi cất thơng tin vào ngăn xếp: • Thao tác PUSH • Nội dung SP tự động tăng • Thơng tin cất vào nhớ trỏ SP – Khi lấy thông tin khỏi ngăn xếp: • Thao tác POP • Thơng tin đọc từ nhớ trỏ SP • Nội dung SP tự động giảm – Khi ngăn xếp rỗng, SP trỏ vào đáy Mơ hình lập trình máy tính • Thanh ghi sở ghi số – Thanh ghi sở: chứa địa ngăn nhớ sở (địa sở) – Thanh ghi số: chứa độ lệch địa ngăn nhớ mà CPU cần truy cập so với ngăn nhớ sở (chỉ số) – Địa ngăn nhớ cần truy cập = địa sở + số 10/01/2017 Mơ hình lập trình máy tính • Thanh ghi liệu (Data Register) – – – – Chứa liệu tạm thời kết trung gian Cần có nhiều ghi liệu Các ghi số nguyên: 8, 16, 32, 64 bit Các ghi số dấu chấm động: 32, 64, 80 bit • Thanh ghi trạng thái (Status Register) – Còn gọi ghi cờ (Flags Register) từ trạng thái chương trình PSW (Program Status Word) – Chứa thơng tin trạng thái CPU • Các cờ phép toán: báo hiệu trạng thái kết phép tốn • Các cờ điều khiển: biểu thị trạng thái điều khiển CPU Mơ hình lập trình máy tính • Ví dụ cờ phép tốn – Zero Flag (cờ rỗng): thiết lập lên kết phép toán – Sign Flag (cờ dấu): thiết lập lên kết phép toán nhỏ (kết qủa âm) – Carry Flag (cờ nhớ): thiết lập lên phép toán có nhớ ngồi bit cao  cờ báo tràn với số không dấu – Overflow Flag (cờ tràn): thiết lập lên cộng hai số nguyên dấu mà kết có dấu ngược lại  cờ báo tràn với số có dấu Mơ hình lập trình máy tính • Ví dụ cờ điều khiển – Interrupt Flag (Cờ cho phép ngắt): • Nếu IF =  CPU trạng thái cho phép ngắt với tín hiệu u cầu ngắt từ bên ngồi gửi tới • Nếu IF =  CPU trạng thái cấm ngắt với tín hiệu yêu cầu ngắt từ bên gửi tới – Direction Flag (Cờ hướng): • Nếu DF=0  Truy cập nhớ theo hướng tăng địa nhớ • Nếu DF=1  Truy cập nhớ theo hướng giảm địa ô nhớ 10/01/2017 Mô hình lập trình máy tính • Ví dụ: Tập ghi số xử lý Các đặc trưng lệnh máy • Giới thiệu chung tập lệnh – Mỗi xử lý có tập lệnh xác định – Tập lệnh thường có hàng chục đến hàng trăm lệnh – Mỗi lệnh chuỗi số nhị phân mà xử lý hiểu để thực thao tác xác định – Các lệnh mô tả ký hiệu gợi nhớ  lệnh hợp ngữ (assembly), ví dụ: ADD, SUB, LOAD, STORE,… Các đặc trưng lệnh máy • Các thành phần lệnh máy Opcode Operand address – Mã thao tác (operation code): mã hóa cho thao tác mà xử lý phải thực số nhị phân (làm gì?) – Địa toán hạng (operand address): nơi chứa toán hạng mà thao tác tác động (làm đâu?) • • • • Tốn hạng nguồn: liệu vào thao tác Tốn hạng đích: liệu thao tác Toán hạng: Thanh ghi, nhớ, thiết bị ngoại vi,… Ví dụ: lệnh 16 bit có toán hạng 10/01/2017 Các đặc trưng lệnh máy • Số lượng địa tốn hạng lệnh – Ba địa tốn hạng: • tốn hạng nguồn, tốn hạng đích • Ví dụ : a = b + c  ADD A, B, C • Lệnh dài phải mã hố địa cho ba tốn hạng – Hai địa tốn hạng: • Một toán hạng vừa toán hạng nguồn vừa tốn hạng đích; tốn hạng cịn lại tốn hạng nguồn • Ví dụ : a = a + b  ADD A, B • Giá trị cũ tốn hạng nguồn bị phải chứa kết • Rút gọn độ dài từ lệnh, sử dụng phổ biến Các đặc trưng lệnh máy • Số lượng địa toán hạng lệnh (tiếp) – Một địa tốn hạng: • Một tốn hạng lệnh • Một tốn hạng ngầm định, thường ghi tích lũy (accumulator) • Ví dụ : a = b + c LOAD B ADD C STORE A – Khơng địa tốn hạng: • Các tốn hạng ngầm định: Sử dụng Stack • Ví dụ: a = b + c PUSH B PUSH C ADD POP A Các đặc trưng lệnh máy • Đánh giá số lượng địa toán hạng – Nhiều địa tốn hạng • • • • Các lệnh phức tạp Cần nhiều ghi Chương trình có lệnh Nhận lệnh thực lệnh chậm – Ít địa tốn hạng • • • • Các lệnh đơn giản Cần ghi Chương trình có nhiều lệnh Nhận lệnh thực lệnh nhanh 10/01/2017 Các đặc trưng lệnh máy • Các kiểu tốn hạng – Địa – Số • Số nguyên • Số dấu chấm động • Mã BCD – Ký tự • Mã ASCII – Dữ liệu logic • Các bit cờ Câu hỏi: Khi đọc ô nhớ nhận gía trị nhị phân 65, biết gì? • Số ngun 65 • Ký tự ‘A’ • Lệnh CT 65 • Địa 65 Các kiểu thao tác lệnh • Phân loại lệnh: – Di chuyển liệu – Xử lý số học với số nguyên – Xử lý logic – Điều khiển nhập xuất (IO) – Chuyển điều khiển (rẽ nhánh) – Điều khiển hệ thống Các kiểu thao tác lệnh • Các lệnh di chuyển liệu – – – – – – – MOVE LOAD STORE EXCHANGE CLEAR SET PUSH – POP Copy liệu từ nguồn đến đích Nạp liệu từ nhớ đến xử lý Cất liệu từ xử lý đến nhớ Hoán đổi nội dung nguồn đích Gán bit vào tốn hạng đích Gán bit vào tốn hạng đích Cất nội dung tốn hạng nguồn vào ngăn xếp Lấy nội dung đỉnh ngăn xếp đưa đến tốn hạng đích 10/01/2017 Các kiểu thao tác lệnh • Các lệnh số học – – – – – – – – – ADD SUBTRACT MULTIPLY DIVIDE ABSOLUTE NEGATE INCREMENT DECREMENT COMPARE Cộng hai toán hạng Trừ hai toán hạng Nhân hai toán hạng Chia hai toán hạng Lấy trị tuyệt đối toán hạng Đổi dấu toán hạng (lấy trừ toán hạng) Tăng toán hạng thêm Giảm toán hạng Trừ hai toán hạng để lập cờ Các kiểu thao tác lệnh • Các lệnh logic – AND – OR – XOR – NOT – TEST Thực phép AND hai toán hạng Thực phép OR hai toán hạng Thực phép XOR hai toán hạng Đảo bit toán hạng (lấy bù 1) Thực phép AND hai toán hạng để lập cờ Các kiểu thao tác lệnh • Ví dụ lệnh logic – Giả sử có hai ghi chứa liệu sau: (R1) = 1010 1010 (R2) = 0000 1111 – R1  (R1) AND (R2) = 0000 1010 Phép toán AND dùng để xoá (Clear) số bit giữ nguyên số bit lại toán hạng – R1  (R1) OR (R2) = 1010 1111 Phép toán OR dùng để thiết lập (Set) số bit giữ nguyên số bit lại toán hạng – R1  (R1) XOR (R2) = 1010 0101 Phép toán XOR dùng để đảo số bit giữ nguyên số bit lại toán hạng 10/01/2017 Các kiểu thao tác lệnh • Các lệnh logic (tiếp) – SHIFT Dịch trái (phải) toán hạng – ROTATE Quay trái (phải) toán hạng Các kiểu thao tác lệnh • Các lệnh nhập xuất chuyên dụng – INPUT : Copy liệu từ cổng xác định đưa đến đích (thiết bị  nhớ) – OUTPUT: Copy liệu từ nguồn đến cổng xác định (bộ nhớ  thiết bị) • Các lệnh chuyển điều khiển – – – – JUMP (BRANCH): Lệnh rẽ nhánh không điều kiện CONDITIONAL JUMP : Lệnh rẽ nhánh có điều kiện CALL : Lệnh gọi chương trình RETURN : Lệnh trở từ chương trình Các kiểu thao tác lệnh • Lệnh rẽ nhánh có điều kiện – Trong lệnh có kèm theo điều kiện – Kiểm tra điều kiện lệnh: • Nếu điều kiện  chuyển tới thực lệnh vị trí có địa XXX PC  XXX • Nếu điều kiện sai  chuyển sang thực lệnh_kế_tiếp – Điều kiện thường kiểm tra thông qua cờ – Có nhiều lệnh rẽ nhánh theo điều kiện khác 10 10/01/2017 Các kiểu thao tác lệnh • Minh hoạ lệnh rẽ nhánh khơng có điều kiện Các kiểu thao tác lệnh • Minh hoạ lệnh rẽ nhánh khơng có điều kiện (tiếp) Các kiểu thao tác lệnh • Lệnh CALL RETURN – CALL: Gọi chương trình • Cất nội dung PC (chứa địa lệnh_kế_tiếp) Stack • Nạp vào PC địa lệnh chương trình gọi • Bộ xử lý chuyển sang thực chương trình tương ứng – RETURN: Trở từ chương trình • Lấy địa lệnh_kế_tiếp cất Stack nạp trả lại cho PC • Bộ xử lý điều khiển quay trở thực tiếp lệnh nằm sau lệnh CALL 11 10/01/2017 Các kiểu thao tác lệnh • Gọi chương trình lồng Các kiểu thao tác lệnh • Truyền tham số chương trình – Truyền qua Stack – Ví dụ: P gọi Q(y1,y2) có tham số Các kiểu thao tác lệnh • Các lệnh điều khiển hệ thống – HALT : Dừng thực chương trình – WAIT : Tạm dừng thực chương trình, lặp kiểm tra điều kiện thoả mãn tiếp tục thực – NO OPERATION : Khơng thực – LOCK : Cấm không cho xin chuyển nhượng bus – UNLOCK : Cho phép xin chuyển nhượng bus 12 10/01/2017 Các phương pháp định địa • Khái niệm định địa (addressing) – Toán hạng lệnh là: • Một giá trị cụ thể nằm lệnh • Nội dung ghi • Nội dung ngăn nhớ cổng IO – Phương pháp định địa (addressing modes) cách thức địa hóa vùng địa lệnh để xác định nơi chứa tốn hạng • • • • • • Định địa tức Định địa ghi Định địa trực tiếp Định địa gián tiếp qua ghi Định địa gián tiếp Định địa dịch chuyển Các phương pháp định địa • Định địa tức (Immediate Addressing) – Tốn hạng nằm vùng địa lệnh – Chỉ tốn hạng nguồn – Ví dụ: ADD R1, ; R1 R1+5 – Không tham chiếu nhớ – Truy cập toán hạng nhanh – Dải giá trị toán hạng bị hạn chế Các phương pháp định địa • Định địa ghi (Register Addressing) – Toán hạng chứa ghi có tên vùng địa – Ví dụ: ADD R1, R2 ; R1 R1+R2 – Số lượng ghi  vùng địa cần bit – Khơng tham chiếu nhớ – Truy cập tốn hạng nhanh – Tăng số lượng ghi  hiệu 13 10/01/2017 Các phương pháp định địa • Định địa trực tiếp (Direct Addressing) – Toán hạng ngăn nhớ có địa trực tiếp vùng địa lệnh – Ví dụ: • ADD R1, A ;R1  R1 + (A) • Cộng nội dung ghi R1 với nội dung nhớ có địa A • Tìm toán hạng nhớ địa A – CPU tham chiếu nhớ lần để truy nhập liệu Các phương pháp định địa • Định địa gián tiếp qua ghi (Register Indirect Addressing) – Tốn hạng nhớ có địa nằm ghi – Vùng địa cho biết tên ghi Thanh ghi ngầm định – Thanh ghi gọi trỏ (pointer) – Vùng nhớ tham chiếu lớn (2n, với n độ dài ghi) Các phương pháp định địa • Định địa gián tiếp qua nhớ (Indirect Memory Addressing) – Bộ nhớ trỏ vùng địa lệnh chứa địa tốn hạng – Có thể gián tiếp nhiều lần – Giống khái niệm biến trỏ biến động lập trình – CPU phải thực tham chiếu nhớ nhiều lần để tìm tốn hạng  chậm – Vùng nhớ tham chiếu lớn 14 10/01/2017 Các phương pháp định địa • Định địa dịch chuyển (Displacement Addressing) – Để xác định toán hạng, vùng địa chứa hai thành phần: • Tên ghi • Hằng số – Địa toán hạng = nội dung ghi + số – Thanh ghi ngầm định Các phương pháp định địa • Định địa dịch chuyển (tiếp) – Các dạng địa dịch chuyển • Địa hoá tương PC – Thanh ghi Bộ đếm chương trình PC – Tốn hạng có địa cách nhớ trỏ PC độ lệch xác định • Định địa sở (base) – Thanh ghi chứa địa sở – Hằng số số • Định địa chỉ số (index) – Hằng số địa sở – Thanh ghi chứa số Phân loại tập lệnh • CISC RISC – CISC:Complex Instruction Set Computer: • Máy tính với tập lệnh đầy đủ • Phát triển từ máy tính • Ví dụ: Intel x86, Motorola 680x0 – RISC:Reduced Instruction Set Computer: • Máy tính với tập lệnh thu gọn • Do John Hennessy David Patterson đề xuất từ 1984 • Ví dụ: SunSPARC, Power PC, MIPS, ARM – RISC đối nghịch với CISC 15 10/01/2017 Phân loại tập lệnh • Các đặc trưng CISC – Số lượng lệnh nhiều (vài trăm lệnh)  Dễ lập trình, chương trình ngắn (chiếm nhớ) – Truy cập tốn hạng ghi lẫn nhớ – Cấu trúc CPU phức tạp – Thời gian thực lệnh cần nhiều chu kỳ máy – Số lượng khuôn dạng lệnh lớn – CPU có tập ghi nhỏ – Có nhiều mode địa – Một số lệnh khơng có mạch phần cứng riêng (cần có vi chương trình để thực hiện) Phân loại tập lệnh • Các đặc trưng RISC – Số lượng lệnh (vài chục lệnh)  Khó lập trình, chương trình dài – Hầu hết lệnh truy cập toán hạng ghi – Cấu trúc CPU đơn giản – Thời gian thực lệnh chu kỳ máy – Số lượng khn dạng lệnh (

Ngày đăng: 11/12/2017, 18:39

TỪ KHÓA LIÊN QUAN

w