Bài giảng Kiến trúc máy tính - Chương 3: Bộ xử lý trung tâm - Phạm Hoàng Sơn
I. MÔ TẢ
II. DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY
III. NGẮT QUÃNG (INTERRUPT)
IV. | CÁC KIẾN TRÚC XỬ LÍ TỐC ĐỘ CỦA BỘ VI XỬ LÍ |
V. CÁC KIỂU THI HÀNH MỘT LỆNH | |
VI. VII. |
TẬP LỆNH KIỂU ĐỊNH VỊ |
VIII. NGÔN NGỮ CẤP CAO VÀ NGÔN NGỮ MÁY
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 - Chương 3: Bộ xử lý trung tâm - Phạm Hoàng Sơn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_kien_truc_may_tinh_chuong_3_bo_xu_ly_trung_tam_pha.pdf
Nội dung text: Bài giảng Kiến trúc máy tính - Chương 3: Bộ xử lý trung tâm - Phạm Hoàng Sơn
- Các thanh ghi (Registers) • Thanh ghi là phần tử nhớ nhanh tạm thời các dữ liệu và địa chỉ phục vụ cho hoạt động ở thời điểm hiện tại của bộ vi xử lí. • Số lƣợng các thanh ghi quyết định đến hiệu năng xử lí của bộ vi xử lí. Phạm Hoàng Sơn 11
- Các thanh ghi (Registers) • Phân loại – Thanh ghi địa chỉ: quản lý địa chỉ của ngăn nhớ hay cổng vào-ra. – Thanh ghi dữ liệu: chứa tạm thời các dữ liệu. – Thanh ghi đa năng: có thể chứa địa chỉ hoặc dữ liệu. – Thanh ghi điều khiển/trạng thái: chứa các thông tin điều khiển và trạng thái của CPU. – Thanh ghi lệnh: chứa lệnh đang đƣợc thực hiện. Phạm Hoàng Sơn 12
- Các thanh ghi (Registers) • Một số thanh ghi điển hình: – Bộ đếm chƣơng trình PC (Program Counter) – Con trỏ dữ liệu DP (Data Pointer) – Con trỏ ngăn xếp SP (Stack Pointer) – Thanh ghi cơ sở và thanh ghi chỉ số (Base Register & Index Register) – Các thanh ghi dữ liệu – Thanh ghi trạng thái Phạm Hoàng Sơn 13
- Các thanh ghi (Registers) • Bộ đếm chƣơng trình PC (Program Counter) – Còn đƣợc gọi là con trỏ lệnh IP (Instruction Pointer) – Giữ địa chỉ của lệnh tiếp theo sẽ đƣợc nhận vào. – Sau khi một lệnh đƣợc nhận vào, nội dung PC tự động tăng để trỏ sang lệnh kế tiếp. Phạm Hoàng Sơn 14
- Phạm Hoàng Sơn 15
- Các thanh ghi (Registers) • Con trỏ dữ liệu DP (Data Pointer) – Chứa địa chỉ của ngăn nhớ dữ liệu mà CPU muốn truy nhập – Thƣờng có một số thanh ghi con trỏ dữ liệu Phạm Hoàng Sơn 16
- Phạm Hoàng Sơn 17
- Các thanh ghi (Registers) • Con trỏ ngăn xếp SP (Stack Pointer) – Chứa địa chỉ của ngăn nhớ đỉnh ngăn xếp – Khi cất một thông tin vào ngăn xếp: • Nội dung của SP tự động giảm • Thông tin đƣợc cất vào ngăn nhớ đƣợc trỏ bởi SP – Khi lấy một thông tin ra khỏi ngăn xếp: • Thông tin đƣợc đọc từ ngăn nhớ đƣợc trỏ bởi SP • N ội dung của SP tự động tăng • Khi ngăn xếp rỗng, SP trỏ vào đáy Phạm Hoàng Sơn 18
- Phạm Hoàng Sơn 19
- Các thanh ghi (Registers) • Thanh ghi cơ sở và thanh ghi chỉ số (Base Register & Index Register) – Thanh ghi cơ sở : chứa địa chỉ của ngăn nhớ cơ sở (địa chỉ cơ sở) – Thanh ghi chỉ số: chứa độ lệch địa chỉ giữa ngăn nhớ mà CPU cần truy nhập so với ngăn nhớ cơ sở (chỉ số) – Địa chỉ của ngăn nhớ cần truy nhập= địa chỉ cơ sở + chỉ số Phạm Hoàng Sơn 20
- Phạm Hoàng Sơn 21
- Các thanh ghi (Registers) • Thanh ghi dữ liệu – Chứa các dữ liệu tạm thời hoặc các kết quả trung gian – Cần có nhiều thanh ghi dữ liệu – Các thanh ghi số nguyên: 8, 16, 32, 64 bit – Các thanh ghi số dấu phẩy động Phạm Hoàng Sơn 22
- Các thanh ghi (Registers) • Thanh ghi trạng thái – Còn gọi là thanh ghi cờ (Flag Register) – Chứa các thông tin trạng thái của CPU • Các cờ phép toán: báo hiệu trạng thái của kết quả phép toán • Các cờ điều khiển: biểu thị trạng thái điều khiển của CPU Phạm Hoàng Sơn 23
- DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY • Chu trình lệnh – Nhận lệnh Giải mã lệnh Nhận toán hạng Thực hiện lệnh Cất toán hạng Ngắt Phạm Hoàng Sơn 24
- DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY • Nhận lệnh Phạm Hoàng Sơn 25
- DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY • Sơ đồ mô tả quá trình nhận lệnh MAR ← PC IR ← M[MAR] Phạm Hoàng Sơn 26
- DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY • Giải mã lệnh Phạm Hoàng Sơn 27
- DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY • Nhận toán hạng Phạm Hoàng Sơn 28
- DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY • Thực hiện lệnh Phạm Hoàng Sơn 29
- DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY Một số dạng lệnh: • Liên hệ tới bộ nhớ – MAR ← Địa chỉ do ALU tính tuỳ theo kiểu định vị (Rs2). – MBR ← Rs1 – Địa chỉ hiệu dụng do ALU tính đƣợc đƣa vào MAR và thanh ghi nguồn Rs1 đƣợc đƣa vào MBR (Memory Buffer Register) để đƣợc lƣu vào bộ nhớ trong. • Một lệnh của ALU – Ngã ra ALU ← Kết quả của phép tính – ALU thực hiện phép tính xác định trong mã lệnh, đƣa kết quả ra ngã ra. • Một phép nhảy (thay đổi thứ tự thực thi của dãy lệnh) – Ngã ra ALU ← Địa chỉ lệnh tiếp theo do ALU tính. – ALU cộng địa chỉ của PC với độ dời để làm thành địa chỉ đích và đƣa địa chỉ này ra ngã ra. Nếu là một phép nhảy có điều kiện thì thanh ghi trạng thái đƣợc đọc quyết định có cộng độ dời vào PC hay không. Phạm Hoàng Sơn 30
- DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY • Cất (ghi) toán hạng Phạm Hoàng Sơn 31
- DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY Sơ đồ Phạmcất Hoàngtoán Sơn hạng 32
- DIỄN TIẾN THI HÀNH LỆNH MÃ MÁY PC: thanh g Phạm Hoàng Sơn 33
- • Ví dụ: • Một máy tính giả thiết có các đặc trƣng sau: • Dạng lệnh 16 bit gồm 24=16 mã thao tác và 212= 4096(4KB) word nhớ định vị địa chỉ trực tiếp • Dạng dữ liệu: 16 bit gồm 1 bit dấu và 15 bits dữ liệu. • Các thanh ghi của CPU gồm: PC ( Program Counter) 12 bits, IR (Intruction Register) 16 bits và AC (Accumalator) 16 bits. Phạm Hoàng Sơn 34
- • Mã lệnh đƣợc cho nhƣ sau: – 0010: Load AC from memory – 0101: Store AC to memory – 0011: Sub to AC from memory Phạm Hoàng Sơn 35
- Memory CPU Memory CPU 300 2 4 2 0 3 0 0 PC 300 2 4 2 0 3 0 0 PC 301 3 4 2 1 AC 301 3 4 2 1 0 B F 8 AC 302 5 4 2 2 2 4 2 0 IR 302 5 4 2 2 2 4 2 0 IR : : 420 0 B F 8 420 0 B F 8 421 0 4 C E Bước 2 421 0 4 C E Bước 1 422 422 Bộ đếm chƣơng trình (PC) chứa 300 là địa chỉ của lệnh đầu tiên. Địa chỉ này đƣợc tải vào thanh ghi lệnh, (IR). Chú ý rằng quá trình này sẽ bao gồm luôn việc dùng thanh ghi địa chỉ bộ nhớ và thanh ghi vùng nhớ đệm bộ nhớ (MBR), để đơn giản các thanh ghi trung gian này đƣợc bỏ qua. 4 bit đầu tiên trong IR chỉ ra rằng bộ tích lũy (AC) tải vào, 12 bit còn lại đặc tả địa chỉ, ở đây là 420HPhạm. Hoàng Sơn 36
- Memory CPU Memory CPU 300 2 4 2 0 3 0 1 PC 300 2 4 2 0 3 0 1 PC 301 3 4 2 1 0 7 2 A AC 301 3 4 2 1 0 B F 8 AC 302 5 4 2 2 3 4 2 1 IR 302 5 4 2 2 3 4 2 1 IR : : 420 0 B F 8 0BF8-04CE 420 0 B F 8 421 0 4 C E Bước 4 421 0 4 C E Bước 3 422 422 PC đƣợc tăng lên một đơn vị và lệnh kế tiếp đƣợc lấy ra Nội dung trƣớc đó của AC đƣợc trừ cho nội dung tại vị trí 421H, kết quả đƣợc lƣu trong AC. Phạm Hoàng Sơn 37
- Memory CPU Memory CPU 300 2 4 2 0 3 0 2 PC 300 2 4 2 0 3 0 2 PC 301 3 4 2 1 0 7 2 A AC 301 3 4 2 1 0 7 2 A AC 302 5 4 2 2 5 4 2 2 IR 302 5 4 2 2 5 4 2 2 IR : : 420 0 B F 8 420 0 B F 8 421 0 4 C E Bước 6 421 0 4 C E Bước 5 422 0 7 2 A 422 PC đƣợc tăng lên một đơn vị và lệnh kế tiếp đƣợc lấy ra. Nội dung AC đƣợc lƣu ở vị trí 422H. Phạm Hoàng Sơn 38
- NGẮT QUÃNG (INTERRUPT) • Khái niệm chung về ngắt: – Ngắt là cơ chế cho phép CPU tạm dừng chƣơng trình đang thực hiện để chuyển sang thực hiện một chƣơng trình khác, gọi là chƣơng trình con phục vụ ngắt • Các loại ngắt: – Ngắt do lỗi khi thực hiện chƣơng trình, ví dụ: tràn số, chia cho 0. – Ngắt do lỗi phần cứng, ví dụ lỗi bộ nhớ RAM. – Ngắt do mô- đun vào-ra phát tín hiệu ngắt đến CPU yêu cầu trao đổi dữ liệu. Phạm Hoàng Sơn 39
- NGẮT QUÃNG (INTERRUPT) • Ứng dụng của ngắt quãng: – Ngoại vi đòi hỏi nhập hoặc xuất số liệu. – Ngƣời lập trình muốn dùng dịch vụ của hệ điều hành. – Cho một chƣơng trình chạy từng lệnh. – Làm điểm dừng của một chƣơng trình. – Báo tràn số liệu trong tính toán số học. – Trang bộ nhớ thực sự không có trong bộ nhớ. – Báo dùng một lệnh không có trong tập lệnh. – Báo phần cứng máy tính bị hƣ. – Báo điện bị cắt. Phạm Hoàng Sơn 40
- NGẮT QUÃNG (INTERRUPT) • Sau khi hoàn thành mỗi một lệnh, bộ xử lý kiểm tra tín hiệu ngắt • Nếu không có ngắt bộ xử lý nhận lệnh tiếp theo của chƣơng trình hiện tại • Nếu có tín hiệu ngắt: – Tạm dừng chƣơng trình đang thực hiện – Cất ngữ cảnh (các thông tin liên quan đến chƣơng trình bị ngắt) – Thiết lập PC trỏ đến chƣơng trình con phục vụ ngắt – Chuyển sang thực hiện chƣơng trình con phục vụ ngắt – Cuối chƣơng trình con phục vụ ngắt, khôi phục ngữ cảnh và tiếp tục chƣơng trình đang bị tạm dừng. Phạm Hoàng Sơn 41
- NGẮT QUÃNG (INTERRUPT) ChuPhạm trình Hoàng lệnh Sơn với ngắt 42
- CÁC KIẾN TRÚC XỬ LÍ TỐC ĐỘ CỦA BỘ VI XỬ LÍ • Kiến trúc tuần tự (Xử lí dạng đường ống) • Kiến trúc kiểu tuần tự: Đó là quá trình đọc, giải mã và thực hiện lệnh đƣợc thực hiện tuần tự, tức là lệnh này kết thúc thì mới đến lệnh khác đƣợc truyền vào bộ xử lí. Phạm Hoàng Sơn 43
- CÁC KIẾN TRÚC XỬ LÍ TỐC ĐỘ CỦA BỘ VI XỬ LÍ • Kiến trúc song song • Các lệnh có thể thực hiện song song với nhau dựa trên bộ xử lý song song. • Có thể chia máy tính song song thành ba loại dựa vào số lƣợng lệnh và dòng dữ liệu. – SISD (Single Instruction Single Data): đơn dòng lệnh đơn dòng dữ liệu. – SIMD (Single Instruction Multiple Data): đơn dòng lệnh đa dòng dữ liệu. – MIMD (Complex Instruction Set Computer): Máy tính nhiều dòng lệnh, nhiều dòng số liệu Phạm Hoàng Sơn 44
- CÁC KIẾN TRÚC XỬ LÍ TỐC ĐỘ CỦA BỘ VI XỬ LÍ • Kiến trúc CISC và RISC – CISC (Complex Intruction set computer): • Là một máy tính đƣợc thiết kế với một tập lệnh đầy đủ. • Tập lệnh phức tạp, dạng lệnh có chiều dài khác nhau và dạng thức phức tạp. • Các BXL của Intel từ 8088 đến 80486 đều dựa trên thiết kế này. – RISC (reduced Intruction Set Computer): • Là một máy tính đƣợc thiết kế với một tập lệnh rút gọn và thời gian thực hiện cố định • Kiến trúc RISC có thể thấy trong các bộ xử lý mới nhƣ IBM và Intel Pentium.Phạm Hoàng Sơn 45
- CÁC KIỂU THI HÀNH MỘT LỆNH • Một lệnh mã máy bao gồm một mã tác vụ và các toán hạng • Tuỳ theo tần số sử dụng các phép mà các nhà thiết kế máy tính quyết định số lƣợng các mạch chức năng cần thiết cho việc tính toán • Ví dụ: lệnh Y := A + B + C + D – Thực hiện 1 lệnh mã máy nếu có 3 mạch cộng – Thực hiện 3 lệnh mã máy nếu có 1 mạch cộng Phạm Hoàng Sơn 46
- CÁC KIỂU THI HÀNH MỘT LỆNH Chuỗi lệnh dùng thực hiện phép tính C := A + B Kiến trúc ngăn xếp Kiến trúc thanh Kiến trúc thanh ghi tích luỹ ghi đa dụng Push A Load A Load R1, A Push B ADD B ADD B,R1 ADD Store C Store R1,C Pop C Phạm Hoàng Sơn 47
- TẬP LỆNH • Giới thiệu chung về tập lệnh – Mỗi bộ xử lý có một tập lệnh xác định – Tập lệnh thƣờng có hàng chục đến hàng trăm lệnh – Mỗi lệnh là một chuỗi số nhị phân mà bộ xử lý hiểu đƣợc để thực hiện một thao tác xác định. – Các lệnh đƣợc mô tả bằng các ký hiệu gợi nhớ chính là các lệnh của hợp ngữ Phạm Hoàng Sơn 48
- TẬP LỆNH • Các thành phần của lệnh máy Mã thao tác Địa chỉ của các toán hạng – Mã thao tác (operation code opcode): mã hóa cho thao tác mà bộ xử lý phải thực hiện – Địa chỉ toán hạng: chỉ ra nơi chứa các toán hạng mà thao tác sẽ tác động – Toán hạng nguồn: dữ liệu vào của thao tác – Toán hạng đích: dữ liệu ra của thao tác Phạm Hoàng Sơn 49
- TẬP LỆNH • Mô tả lệnh – Lệnh máy là mã nhị phân – Để dễ hiểu và dễ nhớ đối với con ngƣời, ngƣời ta mô tả lệnh bằng các ký hiệu gợi nhớ • Ví d ụ: ADD, SUB, LOAD – Toán hạng có thể đƣợc mô tả nhƣ sau: • ADD A,B Phạm Hoàng Sơn 50
- TẬP LỆNH BXL 8086 CÁC LỆNH CHUYỂN DỮ LiỆU • MOV: Chuyển nội dung từ nguồn đến đích. • LOAD: Chuyển nội dung từ bộ nhớ đến bộ xử lí. • STORE: Chuyển dữ liệu từ bộ xử lí đến bộ nhớ. • PUSH: đƣa số liệu vào ngăn xếp (làm giảm con trỏ ngăn xếp xuống 2 đơn vị) • POP: lấy số liệu ra từ ngăn xếp (làm tăng con trỏ ngăn xếp lên 2 đơn vị) Phạm Hoàng Sơn 51
- TẬP LỆNH BXL 8086 CÁC LỆNH SỐ HỌC • ADD: cộng hai toán hạng, • SUB: trừ hai toán hạng • MUL: nhân hai toán hạng • DIV: chia hai toán hạng • INC: tăng nội dung lên 1 đơn vị • DEC: giảm nội dung xuống 1 đơn vị Phạm Hoàng Sơn 52
- TẬP LỆNH BXL 8086 CÁC LỆNH LOGIC • AND: thực hiện phép toán logic ‘và’. • OR: thực hiện phép toán logic ‘hoặc’ • XOR: hoặc LOẠI • NOT: đảo ngƣợc Phạm Hoàng Sơn 53
- TẬP LỆNH BXL 8086 CÁC LỆNH ĐIỀU KHIỂN CHƢƠNG TRÌNH • JMP: lệnh nhảy sẽ điều khiển bộ xử lý lấy lệnh ở chỗ khác chứ không ở vị trí theo đúng trình tự. • IN: chuyển dữ liệu từ một cổng xác định đến đích. • OUT: chuyển dữ liệu từ nguồn đến một cổng xác định. Phạm Hoàng Sơn 54
- TẬP LỆNH BXL 8086 • Ví dụ: A=5, B=6 MOV AX,A ; đƣa A vào AX MOV B,AX ; đƣa AX vào B • Kết quả A=???, B=??? Phạm Hoàng Sơn 55
- • Ví dụ: A=5 • MOV AX,5 • SUB AX,A • MOV A,AX • Kết quả A=??? Phạm Hoàng Sơn 56
- • Ví dụ: A=5, B=6 • MOV AX,B • SUB AX,A • SUB AX,A • MOV A,AX • Kết quả??? A=???, B=??? Phạm Hoàng Sơn 57
- CÁC KIỂU ĐỊNH VỊ • Kiểu định vị định nghĩa cách thức thâm nhập các toán hạng. • Khái niệm về định địa chỉ (addressing) – Toán hạng của lệnh có thể là: • Một giá trị cụ thể nằm ngay trong lệnh • Nội dung của thanh ghi • Nội dung của ngăn nhớ hoặc cổng vào-ra – Phƣơng pháp định địa chỉ (addressing modes) là cách thức địa chỉ hóa trong trƣờng địa chỉ của lệnh để xác định nơi chứa toán hạng Phạm Hoàng Sơn 58
- CÁC KIỂU ĐỊNH VỊ • Định vị tức thì – Toán hạng nằm ngay trong trƣờng địa chỉ của lệnh – Chí có thể là toán hạng nguồn – Ví dụ: ADD R1, 5 ; R1 R1 + 5 – Không tham chiếu bộ nhớ – Truy nhập toán hạng rất nhanh – Dải giá trị của toán hạng bị hạn chế Phạm Hoàng Sơn 59
- CÁC KIỂU ĐỊNH VỊ • Định vị trực tiếp • Toán hạng là ngăn nhớ chứa địa chỉ đƣợc chỉ ra trực tiếp trong Trƣờng địa chỉ của lệnh • Ví dụ ADD R1,A ;R1 R1+(A) – Cộng nội dung thanh ghi R1 với nội dung của ngăn nhớ có địa chỉ là A – Tìm toán hạng trong bộ nhơ ở địa chỉ A • CPU tham chiếu bộ nhớ một lần để truy nhập dữ liệu Phạm Hoàng Sơn 60
- CÁC KIỂU ĐỊNH VỊ • Sơ đồ định vị trực tiếp Phạm Hoàng Sơn 61
- CÁC KIỂU ĐỊNH VỊ • Định vị gián tiếp Phạm Hoàng Sơn 62
- CÁC KIỂU ĐỊNH VỊ Phạm Hoàng Sơn 63
- CÁC KIỂU ĐỊNH VỊ Phạm Hoàng Sơn 64
- Phạm Hoàng Sơn 65
- Phạm Hoàng Sơn 66
- Phạm Hoàng Sơn 67
- Phạm Hoàng Sơn 68
- Phạm Hoàng Sơn 69
- Phạm Hoàng Sơn 70
- Kiểu định vị Ví dụ về lệnh Giải thích Tức thì Add R4, #3 ;Move R1,#5 R4 ← R4 + 3 ; R1←5 Trực tiếp(thanh ghi) Add R3, R4 ; Move R1,R2 R3 ← R3 + R4 ; R1 ← R2 Trực tiếp (bộ nhớ) Add R1, (1001) R1 ← R1 + M [1001] Gián tiếp (thanh ghi) ADD R4, (R1) R4 ← R4 + M [R1] Gián tiếp (bộ nhớ) Add R1, @ (R3) R1 ← R1 + M[ M [R3]] Gián tiếp (thanh ghi + Độ Add R4, 100(R1) R4 ← R4 + M[R1 + 100] dời) Gián tiếp (thanh ghi + Add R3, (R1 + R2) R3 ← R3 + M[R1 + R2] thanh ghi) Gián tiếp ( t/g nền + t/g chỉ Add R1, 100(R2)[R3] R1R1+M[100+R2+ d * số + độ dời ) R3] Ngăn xếp Add R1Phạm, (SP) Hoàng Sơn R1 ← R1+ M (SP) 71