Bài giảng Cấu trúc máy tính - Chương 3: Bộ xử lí trung tâm (CPU)
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cấu trúc máy tính - Chương 3: Bộ xử lí trung tâm (CPU)", để 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_cau_truc_may_tinh_chuong_3_bo_xu_li_trung_tam_cpu.ppt
Nội dung text: Bài giảng Cấu trúc máy tính - Chương 3: Bộ xử lí trung tâm (CPU)
- Cấu trúc máy tính Chương 3 BỘ XỬ LÝ TRUNG TÂM (CPU) 6/12/2021 Chương 3: Bộ xử lý trung tâm 1
- Nội dung 3.1. Cấu trúc cơ bản của CPU 3.2. Tập lệnh 3.3. Hoạt động của CPU 3.4. Các kỹ thuật tiên tiến của bộ xử lý 3.5. Kiến trúc Intel 6/12/2021 Chương 3: Bộ xử lý trung tâm 2
- 3.1 Cấu trúc cơ bản của CPU Chức năng : thực hiện chương trình lưu trong bộ nhớ chính bằng cách lấy lệnh ra - khảo sát - thực hiện lần lượt các lệnh. CPU gồm 1 số bộ phận tách biệt : Đơn vị Bộ điều khiển (Control Unit) Tập các Đơn vị số học và lấy lệnh ra từ bộ nhớ và xác Thanh ghi điều khiển logic định kiểu lệnh. (RF) (CU) (ALU) Bộ luận lý và số học (ALU) thực hiện phép toán số học và logic Các thanh ghi (Registers) : Bus bên trong lưu kết quả tạm thời và các thông tin điều khiển. CPU giao Đơn vị nối ghép bus (BIU) tiếp với các bộ phận khác trong máy tính thông qua các tuyến gọi là Bus Bus bên ngoài 6/12/2021 Chương 3: Bộ xử lý trung tâm 3
- Đơn vị điều khiển (CU) ◼ Chức năng ◼ Điều khiển nhận lệnh từ bộ nhớ đưa Thanh ghi lệnh vào thanh ghi lệnh ◼ Tăng nội dung của PC để trỏ sang Các cờ Các tín hiệu lệnh kế tiếp điều khiển bên trong CPU ◼ Giải mã lệnh đã được nhận để xác Đơn vị định thao tác mà lệnh yêu cầu Clock điều khiển ◼ Phát ra các tín hiệu điều khiển thực hiện lệnh Các tín hiệu Các tín hiệu yêu cầu từ bus điều khiển đến ◼ Nhận các tín hiệu yêu cầu từ bus hệ hệ thống bus hệ thống thống và đáp ứng với các yêu cầu Bus điều khiển đó. 6/12/2021 Chương 3: Bộ xử lý trung tâm 4
- Đơn vị điều khiển (CU) ◼ Clock: tín hiệu nhịp từ mạch tạo dao động bên ngoài. Thanh ghi lệnh ◼ Mã lệnh từ thanh ghi lệnh đưa đến để giải mã. ◼ Các cờ từ thanh ghi cờ cho biết trạng Các cờ Các tín hiệu thái của CPU. điều khiển bên trong CPU ◼ Các tín hiệu yêu cầu từ bus điều khiển Đơn vị ◼ Các tín hiệu điều khiển bên trong CPU: Clock điều khiển ◼ Điều khiển các thanh ghi ◼ Điều khiển ALU Các tín hiệu Các tín hiệu ◼ Các tín hiệu điều khiển bên ngoài CPU: yêu cầu từ bus điều khiển đến bus hệ thống hệ thống ◼ Điều khiển bộ nhớ Bus điều khiển ◼ Điều khiển các mô-đun vào-ra 6/12/2021 Chương 3: Bộ xử lý trung tâm 5
- Đơn vị số học và logic ◼ Chức năng: Thực hiện các phép toán số học và phép Dữ liệu vào từ các thanh ghi toán logic. Dữ liệu ra từ Đơn vị các thanh ghi ◼ Số học: cộng, trừ, nhân, chia, số học và logic (ALU) tăng, giảm, đảo dấu. Các tín hiệu ◼ Logic: AND, OR, XOR, NOT, từ đơn vị điều khiển phép dịch bit. Thanh ghi cờ 6/12/2021 Chương 3: Bộ xử lý trung tâm 6
- Cổng logic căn bản 1. Cổng NOT ▪ Còn gọi là cổng đảo (Inverter), dùng để thực hiện hàm đảo Y= A ▪ Ký hiệu mũi tên chỉ chiều di chuyển của tín hiệu và vòng tròn là ký hiệu đảo. A Y A Y 0 1 1 0 6/12/2021 Chương 3: Bộ xử lý trung tâm 7
- Cổng AND ◼ Dùng thực hiện hàm AND 2 hay nhiều biến. ◼ Cổng AND có số ngã vào tùy thuộc số biến và một ngã ra. Ngã ra của cổng là hàm AND của các biến ngã vào. ◼ Nhận xét: Ngã ra cổng AND chỉ ở mức cao khi tất cả ngã vào lên cao. ◼ Khi có một ngã vào = 0, ngã ra = 0 bất chấp các ngã vào còn lại. ◼ Khi có một ngã vào =1, ngã ra = AND của các ngã vào còn lại. A B Y A 0 0 0 Y=A.B 0 1 0 B 1 0 0 1 1 1 6/12/2021 Chương 3: Bộ xử lý trung tâm 8
- Cổng OR ◼ Dùng để thực hiện hàm OR 2 hay nhiều biến. ◼ Cổng OR có số ngã vào tùy thuộc số biến và một ngã ra. ◼ Nhận xét: Ngã ra cổng OR chỉ ở mức thấp khi cả 2 ngã vào xuống thấp. ◼ Khi có một ngã vào =1, ngã ra = 1 bất chấp ngã vào còn lại. ◼ Khi có một ngã vào =0, ngã ra = OR các ngã vào còn lại. A B Y A 0 0 0 Y=A+B 0 1 1 B 1 0 1 1 1 1 6/12/2021 Chương 3: Bộ xử lý trung tâm 9
- Cổng NAND ◼ Là kết hợp của cổng AND và cổng NOT, thực hiện hàm Y = A.B ◼ Ký hiệu của cổng NAND (Gồm AND và NOT, cổng NOT thu gọn lại một vòng tròn) ◼ Tương tự như cổng AND, ở cổng NAND ta có thể dùng 1 ngã vào làm ngã kiểm soát. Khi ngã kiểm soát = 1, cổng mở cho phép tín hiệu logic ở ngã vào còn lại qua cổng và bị đảo, khi ngã kiểm soát = 0, cổng đóng, ngã ra luôn bằng 1. ◼ Khi nối tất cả ngã vào của cổng NAND lại với nhau, nó hoạt động như một cổng đảo A B Y A 0 0 1 Y=A.B 0 1 1 1 0 1 B 1 1 0 6/12/2021 Chương 3: Bộ xử lý trung tâm 10
- Cổng NOR ◼ Là kết hợp của cổng OR và cổng NOT ◼ Ký hiệu của cổng NOR (Gồm cổng OR và NOT, nhưng cổng NOT thu gọn lại một vòng tròn) A B Y A 0 0 1 Y=A+B 0 1 0 B 1 0 0 1 1 0 6/12/2021 Chương 3: Bộ xử lý trung tâm 11
- Ví dụ A B X C D A B C D X 0 0 0 1 0 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 6/12/2021 Chương 3: Bộ xử lý trung tâm 12
- Tập thanh ghi ◼ Chức năng và đặc điểm: ◼ Chứa các thông tin tạm thời phục vụ cho hoạt động ở thời điểm hiện tại của CPU ◼ Được coi là mức đầu tiên của hệ thống nhớ ◼ Số lượng thanh ghi nhiều → tăng hiệu năng của CPU ◼ Có hai loại thanh ghi: ◼ Các thanh ghi lập trình được ◼ Các thanh ghi không lập trình được 6/12/2021 Chương 3: Bộ xử lý trung tâm 13
- Phân loại thanh ghi Thanh ghi tổng quát : chủ yếu dùng để lưu trữ dữ liệu trong quá trình thực thi CT, nhưng mỗi thanh ghi còn có 1 số chức năng riêng (AX, BX, CX, DX) Thanh ghi điều khiển : các bit của nó qui định tác vụ của các đơn vị chức năng của MT. Thanh ghi trạng thái : lưu trữ thông tin mô tả trạng thái. 6/12/2021 Chương 3: Bộ xử lý trung tâm 14
- Một số thanh ghi điển hình ◼ Các thanh ghi địa chỉ ◼ 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 6/12/2021 Chương 3: Bộ xử lý trung tâm 15
- Bộ đếm chương trình PC ◼ Còn được gọi là con trỏ lệnh CPU IP (Instruction Pointer) Lệnh ◼ Giữ địa chỉ của lệnh tiếp PC Lệnh theo sẽ được nhận vào. 202 Lệnh i ◼ Sau khi một lệnh được nhận IR Lệnh i+1 vào, nội dung PC tự động Lệnh tăng để trỏ sang lệnh kế tiếp. 6/12/2021 Chương 3: Bộ xử lý trung tâm 16
- Thanh ghi con trỏ dữ liệu ◼ Chứa địa chỉ của ngăn nhớ dữ liệu mà CPU muốn truy nhập Dữ liệu ◼ Thường có một số thanh ghi con Dữ liệu trỏ dữ liệu Dữ liệu DP cần đọc/ghi Dữ liệu Dữ liệu 6/12/2021 Chương 3: Bộ xử lý trung tâm 17
- Ngăn xếp (Stack) ◼ Ngăn xếp là vùng nhớ có cấu trúc LIFO (Last In - First Out) ◼ Đỉnh ngăn xếp Ngăn xếp thường dùng để phục vụ cho chương trình con ◼ Đáy ngăn xếp là một ngăn nhớ xác định ◼ Đỉnh ngăn xếp là thông tin nằm ở vị trí Đáy Ngăn xếp trên cùng trong ngăn xếp ◼ Đỉnh ngăn xếp có thể bị thay đổi 6/12/2021 Chương 3: Bộ xử lý trung tâm 18
- 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: SP Đỉnh 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: Đáy 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 6/12/2021 Chương 3: Bộ xử lý trung tâm 19
- Thanh ghi cơ sở và thanh ghi chỉ số ◼ Thanh ghi cơ sở: chứa địa chỉ của ngăn nhớ cơ sở (địa chỉ cơ sở) ◼ Thanh ghi cơ sở Ngăn nhớ cơ sở Thanh ghi chỉ số: chứa độ lệch địa chỉ giữa ngăn nhớ mà CPU cần Thanh ghi chỉ số truy nhập so với ngăn nhớ cơ sở Ngăn nhớ cần (chỉ số) truy cập ◼ Địa chỉ của ngăn nhớ cần truy nhập = địa chỉ cơ sở + chỉ số 6/12/2021 Chương 3: Bộ xử lý trung tâm 20
- Các thanh ghi dữ liệu 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 AH AL ◼ 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 ◼ Thanh ghi AX (Accumulator register) : thanh ghi tích luỹ, dài 16 bit nhưng nó cũng có thể chia làm 2 thanh ghi 8 bit AH và AL. AX ngoài chức năng lưu trữ dữ liệu, nó còn được CPU dùng trong phép toán số học như nhân, chia. Thanh ghi AH là nửa cao của thanh ghi AX Thanh ghi AL là nửa thấp của thanh ghi AX ◼ Thí dụ nếu AX=1234h thì AH=12h AL=34h 6/12/2021 Chương 3: Bộ xử lý trung tâm 21
- Các thanh ghi dữ liệu ◼ Thanh ghi BX (Base register) : dài 16 bit nhưng nó cũng có thể chia làm 2 thanh ghi 8 bit BH và BL. BX lưu giữ địa chỉ của 1 thủ tục hay biến, nó cũng được dùng thực hiện các phép dời chuyển số học và dữ liệu. ◼ Thanh ghi DX (Data register) : dài 16 bit nhưng nó cũng có thể chia làm 2 thanh ghi 8 bit DH và DL. Thanh ghi DX : có vai trò đặc biệt trong phép nhân và phép chia ngoài chức năng lưu trữ dữ liệu. ◼ CX (Counter register) : thanh ghi này dùng làm bộ đếm trong các vòng lặp. Các lệnh tự động lặp lại và sau mỗi lần lặp giá trị của CX tự động giảm đi 1. CL thường chứa số lần dịch, quay trong các lệnh dịch, quay thanh ghi. CX dài 16 bit, nó cũng có thể chia làm 2 thanh ghi 8 bit là CH và CL 6/12/2021 Chương 3: Bộ xử lý trung tâm 22
- Thanh ghi trạng thái(thanh ghi cờ) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 O D I T S Z A P C O: OverFlow flag D : Direction flag I : Interrupt flag T : Trap flag S : Sign flag Z : Zero flag A : Auxiliary flag P : Parity flag C : Carry flag ◼ Thanh ghi cờ là thanh ghi 16 bit nằm trong EU (Excution Unit). Tuy nhiên chỉ có 9 trong 16 bit được dùng còn lại 7 bit không dùng ◼ 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 6/12/2021 Chương 3: Bộ xử lý trung tâm 23
- Thanh ghi trạng thái(thanh ghi cờ) ◼ Cờ ZF: được thiết lập lên 1 khi kết quả của phép toán bằng 0. ◼ Cờ SF (cờ dấu): được thiết lập lên 1 khi kết quả phép toán nhỏ hơn 0 ◼ Cờ CF (cờ nhớ): được thiết lập lên 1 nếu phép toán có nhớ ra ngoài bit cao nhất → cờ báo tràn với số không dấu. ◼ Cờ IF (Cờ cho phép ngắt): ◼ Nếu IF = 1 → CPU ở trạng thái cho phép ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới ◼ Nếu IF = 0 → CPU ở trạng thái cấm ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới 6/12/2021 Chương 3: Bộ xử lý trung tâm 24
- Thanh ghi trạng thái(thanh ghi cờ) ◼ Cờ OF (cờ tràn): OF=1 khi kết quả bị tràn số (vượt qua khả năng lưu trữ), OF=0 kết quả không bị tràn ◼ Cờ DF: xác định hướng theo chiều tăng/ giảm trong xử lý chuổi ◼ Cờ PF: PF=1 khi kết quả có số bit 1 là chẳn và ngược lại ◼ Cờ AF: Có nhớ trong phép cộng và có mượn trong phép trừ với 4 bit thấp sang 4 bit cao ◼ Cờ TF: báo cho CPU thi hành từng bước, cung cấp công cụ debug chương trình 6/12/2021 Chương 3: Bộ xử lý trung tâm 25
- Các thanh ghi Segment ◼ CPU có 4 thanh ghi segment dài 16 bit, các thanh ghi này không thể chia làm 2 thanh ghi 8 bit như 4 thanh ghi AX,BX,CX và DX. ◼ Các thanh ghi đoạn được sử dụng như là địa chỉ cơ sở của các lệnh trong chương trình, stack và dữ liệu. ◼ 4 thanh ghi đoạn : CS (Code Segment), DS (Data Segment), SS (Stack Segment) và ES (Extra Segment). ◼ CS : chứa địa chỉ bắt đầu của code trong chương trình ◼ DS : chứa địa chỉ của các biến khai báo trong chương trình ◼ SS : chứa địa chỉ của bộ nhớ Stack dùng trong chương trình ◼ ES : chứa địa chỉ cơ sở bổ sung cho các biến bộ nhớ 6/12/2021 Chương 3: Bộ xử lý trung tâm 26
- Thanh ghi 32 bit ▪ Đối với một số CPU đời mới, có các thanh ghi dài 32, 64 bit. Ta ghi thêm E đứng trước tên các thanh ghi 16 bit EAX, EBX, ECX, EDX 6/12/2021 Chương 3: Bộ xử lý trung tâm 27
- Thanh ghi đoạn và sự hình thành địa chỉ 8086 sử dụng 20 bit để đánh địa chỉ bộ nhớ ➔ quản lý trên 1MB bộ nhớ. Nhưng 8086 lại không có thanh ghi nào 20 bit, tất cả là 16 bit do đó 1 thanh ghi chỉ có thể đánh địa chỉ tối đa là 64 KB bộ nhớ. Như vậy phải kết hợp 2 thanh ghi mới địa chỉ hoá toàn bộ bộ nhớ. 8086 sử 1 trong các thanh ghi dùng chung và 1 trong các thanh ghi đoạn (CS,DS,SS,ES) để tạo thành 1 địa chỉ 20 bit. Địa chỉ 20 bit của bộ nhớ 1MB không thể chứa đủ trong các thanh ghi 16 bit của CPU 8086 ➔ bộ nhớ 1MB được chia ra thành các đoạn (segment) 64KB. Địa chỉ trong các đọan 64KB chỉ có 16 bit nên CPU 8086 dễ dàng xử lý bằng các thanh ghi của nó. ➔ PHÂN ĐOẠN BỘ NHỚ : là cách dùng các thanh ghi 16 bit để biểu diễn cho địa chỉ 20 bit. 6/12/2021 Chương 3: Bộ xử lý trung tâm 28
- Địa chỉ vật lý & địa chỉ luận lý ◼ Địa chỉ 20 bits được gọi là địa chỉ vật lý. ◼ Địa chỉ vật lý dùng trong thiết kế các mạch giải mã địa chỉ cho bộ nhớ và xuất nhập. ◼ Còn trong lập trình , địa chỉ vật lý không thể dùng được mà nó được thay thế bằng địa chỉ luận lý (logic). 6/12/2021 Chương 3: Bộ xử lý trung tâm 29
- Địa chỉ luận lý ◼ Địa chỉ của 1 ô nhớ được xác định bởi 2 phần: Segment : offset ◼ Segment: địa chỉ đoạn ◼ Offset: địa chỉ trong đoạn (độ dời) ◼ Mỗi địa chỉ thành phần là 1 số 16 bit và được viết theo cách sau : Segment : offset ◼ VD : B001:1235 6/12/2021 Chương 3: Bộ xử lý trung tâm 30
- Sự hình thành địa chỉ ◼ Hãng Intel đề xuất 1 phương pháp để hình thành địa chỉ ◼ Mỗi địa chỉ ô nhớ được hình thành từ 1 phép tính tổng 1 địa chỉ cơ sở và 1 địa chỉ offset ◼ Địa chỉ cơ sở lưu trong 1 thanh ghi segment, còn địa chỉ offset nằm trong 1 thanh ghi chỉ số hay thanh ghi con trỏ ◼ Phép cộng này sẽ tạo 1 địa chỉ 20 bit gọi là địa chỉ vật lý 6/12/2021 Chương 3: Bộ xử lý trung tâm 31
- Cách tính địa chỉ vật lý từ địa chỉ luận lý ◼ Địa chỉ vật lý = (segment*10h) + offset ◼ VD : tính địa chỉ vật lý tương ứng địa chỉ luận lý B001:1235 ◼ Địa chỉ vật lý = B0010h + 1235h = B1245h 6/12/2021 Chương 3: Bộ xử lý trung tâm 32
- Sự chồng chất các đoạn ◼ Địa chỉ segment hay còn gọi là địa chỉ nền của đoạn. Nó cho biết điểm bắt đầu của đoạn trong bộ nhớ. ◼ Địa chỉ offset thể hiện khoảng cách kể từ đầu đọan của ô nhớ cần tham khảo. ◼ Do offset dài 16 bit nên chiều dài tối đa của mỗi đọan là 64K. ◼ Mỗi ô nhớ chỉ có địa chỉ vật lý nhưng có thể có nhiều địa chỉ luận lý. ◼ VD : 1234:1234 1334:0234 1304:0534 Đều có chung địa chỉ vật lý 13574 ?? 6/12/2021 Chương 3: Bộ xử lý trung tâm 33
- Sự chồng chất các đoạn Bộ nhớ segment 0000 offset Ô nhớ có 64KB địa chỉ segment: offset FFFF 6/12/2021 Chương 3: Bộ xử lý trung tâm 34
- Sự chồng chất các đoạn ◼ Khi offset tăng 1 đơn vị thì địa chỉ vật lý tăng 1 địa chỉ hoặc là tăng 1 byte. Như vậy có thể xem đơn vị của offset là byte ◼ Khi giữ nguyên phần offset chỉ tăng phần segment. Khi segment tăng 1 đơn vị thì địa chỉ vật lý tăng 10h địa chỉ hoặc là tăng 16 bytes ◼ VD : ô nhớ có địa chỉ 0002Ah sẽ có địa chỉ logic trong segment 0000 là 0000:002A ◼ Trong segment 0001 là 0001:001A ◼ Trong segment 0002 là 0002:000A 6/12/2021 Chương 3: Bộ xử lý trung tâm 35
- Sự chồng chất các đoạn ◼ Nếu vùng bộ nhớ nào càng có nhiều segment chồng chập lên nhau thì các ô nhớ trong đó càng có nhiều địa chỉ luận lý. ◼ Một ô nhớ có ít nhất 1 địa chỉ luận lý và nhiều nhất là 65536/16 = 4096 địa chỉ luận lý 6/12/2021 Chương 3: Bộ xử lý trung tâm 36
- 3.2. 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ữ 6/12/2021 Chương 3: Bộ xử lý trung tâm 37
- 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 6/12/2021 Chương 3: Bộ xử lý trung tâm 38
- Số lượng địa chỉ toán hạng trong lệnh ◼ Ba địa chỉ toán hạng: ◼ 2 toán hạng nguồn, 1 toán hạng đích ◼ c = a + b ◼ Từ lệnh dài vì phải mã hoá địa chỉ cho cả ba toán hạng ◼ Được sử dụng trên các bộ xử lý tiên tiến ◼ Hai địa chỉ toán hạng: ◼ Một toán hạng vừa là toán hạng nguồn vừa là toán hạng đích; toán hạng còn lại là toán hạng nguồn ◼ a = a + b ◼ Giá trị cũ của 1 toán hạng nguồn bị mất vì phải chứa kết quả ◼ Rút gọn độ dài từ lệnh ◼ Phổ biến 6/12/2021 Chương 3: Bộ xử lý trung tâm 39
- Số lượng địa chỉ toán hạng trong lệnh ◼ Một địa chỉ toán hạng: ◼ Một toán hạng được chỉ ra trong lệnh ◼ Một toán hạng là ngầm định → thường là thanh ghi (thanh chứa –accumulator) ◼ Được sử dụng trên các máy ở các thế hệ trước ◼ 0 địa chỉ toán hạng: ◼ Các toán hạng đều được ngầm định. Sử dụng Stack. Ví dụ ◼ push a ◼ push b ◼ add ◼ pop c ◼ có nghĩa là : c = a+b. không thông dụng 6/12/2021 Chương 3: Bộ xử lý trung tâm 40
- Đánh giá về số địa chỉ toán hạng ◼ Nhiều địa chỉ toán hạng ◼ Các lệnh phức tạp hơn ◼ Cần nhiều thanh ghi ◼ Chương trình có ít lệnh hơn ◼ Nhận lệnh và thực hiện lệnh chậm hơn ◼ Ít địa chỉ toán hạng ◼ Các lệnh đơn giản hơn ◼ Cần ít thanh ghi ◼ Chương trình có nhiều lệnh hơn ◼ Nhận lệnh và thực hiện lệnh nhanh hơn 6/12/2021 Chương 3: Bộ xử lý trung tâm 41
- Các lệnh chuyển dữ liệu ◼ MOVE Copy dữ liệu từ nguồn đến đích ◼ LOAD Nạp dữ liệu từ bộ nhớ đến bộ xử lý ◼ STORE Cất dữ liệu từ bộ xử lý đến bộ nhớ ◼ EXCHANGE Trao đổi nội dung của nguồn và đích ◼ CLEAR Chuyển các bit 0 vào toán hạng đích ◼ SET Chuyển các bit 1 vào toán hạng đích ◼ PUSH Cất nội dung toán hạng nguồn vào ngăn xếp ◼ POP Lấy nội dung đỉnh ngăn xếp đưa đến toán hạng đích 6/12/2021 Chương 3: Bộ xử lý trung tâm 42
- Các lệnh số học ◼ ADD Cộng hai toán hạng ◼ SUBTRACT Trừ hai toán hạng ◼ MULTIPLY Nhân hai toán hạng ◼ DIVIDE Chia hai toán hạng ◼ ABSOLUTE Lấy trị tuyệt đối toán hạng ◼ NEGATE Đổi dấu toán hạng (lấy bù 2) ◼ INCREMENT Tăng toán hạng thêm 1 ◼ DECREMENT Giảm toán hạng đi 1 ◼ COMPARE Trừ hai toán hạng để lập cờ 6/12/2021 Chương 3: Bộ xử lý trung tâm 43
- Các lệnh logic ◼ AND Thực hiện phép AND hai toán hạng ◼ OR Thực hiện phép OR hai toán hạng ◼ XOR Thực hiện phép XOR hai toán hạng ◼ NOT Đảo bit của toán hạng (lấy bù 1) ◼ TEST Thực hiện phép AND hai toán hạng để lập cờ ◼ SHIFT Dịch trái (phải) toán hạng ◼ ROTATE Quay trái (phải) toán hạng 6/12/2021 Chương 3: Bộ xử lý trung tâm 44
- Các lệnh vào ra chuyên dụng ◼ INPUT Copy dữ liệu từ một cổng xác định đưa đến đích ◼ OUTPUT Copy dữ liệu từ nguồn đến một cổng xác định 6/12/2021 Chương 3: Bộ xử lý trung tâm 45
- Các lệnh chuyển điều khiển ◼ JUMP (BRANCH) Lệnh nhảy không điều kiện: ◼ nạp vào PC một địa chỉ xác định ◼ JUMP CONDITIONAL Lệnh nhảy có điều kiện: ◼ điều kiện đúng → nạp vào PC một địa chỉ xác định ◼ điều kiện sai → không làm gì cả ◼ CALL Lệnh gọi chương trình con: ◼ Cất nội dung của PC (địa chỉ trở về) ra một vị trí xác định (thường ở Stack) ◼ Nạp vào PC địa chỉ của lệnh đầu tiên của chương trình con ◼ RETURN Lệnh trở về từ chương trình con: ◼ Khôi phục địa chỉ trở về trả lại cho PC để trở về chương trình chính 6/12/2021 Chương 3: Bộ xử lý trung tâm 46
- Các lệnh điều khiển hệ thống ◼ HALT Dừng thực hiện chương trình ◼ WAIT Tạm dừng thực hiện chương trình, lặp kiểm tra điều kiện cho đến khi thoả mãn thì tiếp tục thực hiện ◼ NO OPERATION Không thực hiện gì cả ◼ LOCK Cấm không cho xin chuyển nhượng bus ◼ UNLOCK Cho phép xin chuyển nhượng bus 6/12/2021 Chương 3: Bộ xử lý trung tâm 47
- 3.3. Hoạt động của CPU ◼ 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 6/12/2021 Chương 3: Bộ xử lý trung tâm 48
- Nhận lệnh ◼ CPU đưa địa chỉ của lệnh cần CPU nhận từ bộ đếm chương trình PC PC ra bus địa chỉ ◼ CPU phát tín hiệu điều khiển Bộ nhớ Đơn vị đọc bộ nhớ điều khiển ◼ Lệnh từ bộ nhớ được đặt lên bus dữ liệu và được CPU copy vào thanh ghi lệnh IR IR ◼ CPU tăng nội dung PC để trỏ sang lệnh kế tiếp Bus Bus Bus Địa Dữ Điểu chỉ liệu khiển 6/12/2021 Chương 3: Bộ xử lý trung tâm 49
- Giải mã lệnh ◼ Lệnh từ thanh ghi lệnh IR được đưa đến đơn vị điều khiển ◼ Đơn vị điều khiển tiến hành giải mã lệnh để xác định thao tác phải thực hiện ◼ Giải mã lệnh xảy ra bên trong CPU 6/12/2021 Chương 3: Bộ xử lý trung tâm 50
- Nhận dữ liệu ◼ CPU đưa địa chỉ của toán hạng ra bus địa chỉ ◼ CPU phát tín hiệu điều khiển đọc ◼ Toán hạng được đọc vào CPU ◼ Tương tự như nhận lệnh 6/12/2021 Chương 3: Bộ xử lý trung tâm 51
- Nhận dữ liệu gián tiếp ◼ CPU đưa địa chỉ ra bus địa chỉ ◼ CPU phát tín hiệu điều khiển đọc ◼ Nội dung ngăn nhớ được đọc vào CPU, đó chính là địa chỉ của toán hạng ◼ Địa chỉ này được CPU phát ra bus địa chỉ để tìm ra toán hạng ◼ CPU phát tín hiệu điều khiển đọc ◼ Toán hạng được đọc vào CPU 6/12/2021 Chương 3: Bộ xử lý trung tâm 52
- Thực hiện lệnh ◼ Có nhiều dạng tuỳ thuộc vào lệnh ◼ Có thể là: ◼ Đọc/Ghi bộ nhớ ◼ Vào/Ra ◼ Chuyển giữa các thanh ghi ◼ Thao tác số học/logic ◼ Chuyển điều khiển (rẽ nhánh) 6/12/2021 Chương 3: Bộ xử lý trung tâm 53
- Ghi toán hạng ◼ CPU đưa địa chỉ ra bus CPU địa chỉ MAR ◼ CPU đưa dữ liệu cần ghi ra bus dữ liệu Bộ nhớ Đơn vị ◼ điều CPU phát tín hiệu điều khiển khiển ghi ◼ Dữ liệu trên bus dữ liệu được copy đến vị trí xác MBR định Bus Bus Bus MAR: Thanh ghi địa chỉ bộ nhớ Địa Dữ Điểu MBR: Thanh ghi đệm bộ nhớ chỉ liệu khiển 6/12/2021 Chương 3: Bộ xử lý trung tâm 54
- Ngắt ◼ Nội dung của bộ đếm chương trình PC (địa chỉ trở về sau khi ngắt) được đưa ra bus dữ liệu ◼ CPU đưa địa chỉ (thường được lấy từ con trỏ ngăn xếp SP) ra bus địa chỉ ◼ CPU phát tín hiệu điều khiển ghi bộ nhớ ◼ Địa chỉ trở về trên bus dữ liệu được ghi ra vị trí xác định (ở ngăn xếp) ◼ Địa chỉ lệnh đầu tiên của chương trình con điều khiển ngắt được nạp vào PC 6/12/2021 Chương 3: Bộ xử lý trung tâm 55
- Đường ống lệnh (Instruction Pipelining) ◼ Chia chu trình lệnh thành các công đoạn và cho phép thực hiện gối lên nhau (như dây chuyền lắp ráp) ◼ Chẳng hạn có 6 công đoạn: ◼ Nhận lệnh (Fetch Instruction - FI) ◼ Giải mã lệnh (Decode Instruction - DI) ◼ Tính địa chỉ toán hạng (Calculate Operand Address - CO) ◼ Nhận toán hạng (Fetch Operands - FO) ◼ Thực hiện lệnh (Execute Instruction - EI) ◼ Ghi toán hạng (Write Operands - WO) 6/12/2021 Chương 3: Bộ xử lý trung tâm 56
- Biểu đồ thời gian của đường ống lệnh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Lệnh 1 FI DI CO FO EI WO FI DI CO FO EI WO Lệnh 2 FI DI CO FO EI WO Lệnh 3 FI DI CO FO EI WO Lệnh 4 FI DI CO FO EI WO Lệnh 5 FI DI CO FO EI WO Lệnh 6 FI DI CO FO EI WO Lệnh 7 FI DI CO FO EI WO Lệnh 8 6/12/2021 Chương 3: Bộ xử lý trung tâm 57
- Các vấn đề của đường ống lệnh ◼ Vấn đề cấu trúc: do nhiều công đoạn dùng chung một tài nguyên ◼ Vấn đề dữ liệu: lệnh sau sử dụng dữ liệu kết quả của lệnh trước ◼ Vấn đề điều khiển: do rẽ nhánh gây ra 6/12/2021 Chương 3: Bộ xử lý trung tâm 58
- Các kiến trúc song song mức lệnh ◼ Siêu đường ống (Superpipeline & Hyperpipeline) ◼ Siêu vô hướng (Superscalar) ◼ VLIW (Very Long Instruction Word) 6/12/2021 Chương 3: Bộ xử lý trung tâm 59
- Superpipeline IF: Instruction Fetch, first falf IS: Instruction Fetch, second half RF: register fetch EX: Execution DF: Data fetch, first half DS: data fetch, second half TC: Tag check WB: write back 6/12/2021 Chương 3: Bộ xử lý trung tâm 60
- Superscalar Lệnh 1 FI DI CO FO EI WO Lệnh 2 FI DI CO FO EI WO Lệnh 3 FI DI CO FO EI WO Lệnh 4 FI DI CO FO EI WO Lệnh 5 FI DI CO FO EI WO Lệnh 6 FI DI CO FO EI WO - Thực hiện nhiều lệnh trong cùng 1 chu kỳ clock 6/12/2021 Chương 3: Bộ xử lý trung tâm 61
- CISC và RISC CISC → Complex Instruction Set Computer: ▪ Máy tính với tập lệnh phức tạp ▪ Các bộ xử lý truyền thống: x86, 680x0 RISC → Reduced Instruction Set Computer: ▪ Máy tính với tập lệnh thu gọn ▪ SunSPARC, Power PC, ▪ RISC đối nghịch với CISC 6/12/2021 Chương 3: Bộ xử lý trung tâm 62
- Các đặc trưng của RISC ◼ Số lượng lệnh ít ◼ Hầu hết các lệnh truy nhập toán hạng ở các thanh ghi ◼ Truy nhập bộ nhớ bằng các lệnh LOAD/STORE ◼ Thời gian thực hiện lệnh là một chu kỳ máy ◼ Các lệnh có độ dài cố định (32 bit) ◼ Số lượng khuôn dạng lệnh là ít (<=4) ◼ CPU có tập thanh ghi lớn ◼ Có ít mode địa chỉ (<=4) ◼ Hỗ trợ các thao tác của ngôn ngữ bậc cao ◼ Đều được thiết kế kiểu pipeline lệnh 6/12/2021 Chương 3: Bộ xử lý trung tâm 63
- 3.5. Kiến trúc Intel ◼ Kiến trúc 4-bit: 4004 ◼ Kiến trúc 8-bit: 8008,8080,8085 ◼ Kiến trúc 16-bit: 8086/8088,80186,80286 ◼ Kiến trúc 32-bit: 80386, 80486, Pentium,Pentium II, Celeron, Pentium III, Pentium 4 ◼ Kiến trúc 64-bit: Itanium 6/12/2021 Chương 3: Bộ xử lý trung tâm 64
- Kiến trúc 16-bit (IA-16) ◼ Các thanh ghi bên trong: 16-bit ◼ Xử lý các phép toán số nguyên với 16-bit ◼ Quản lý bộ nhớ theo đoạn 64KBytes ◼ Mở đầu cho dòng máy tính IBM-PC 6/12/2021 Chương 3: Bộ xử lý trung tâm 65
- Kiến trúc 32-bit (IA-32) ◼ Các thanh ghi bên trong: 32-bit ◼ Xử lý các phép toán số nguyên với 32-bit ◼ Có ba chế độ làm việc: ◼ Chế độ 8086 thực (Real 8086 mode): làm việc như một bộ xử lý 8086 ◼ Chế độ 8086 ảo (Virtual 8086 mode): làm việc như nhiều bộ xử lý 8086 (đa nhiệm 16-bit) ◼ Chế độ bảo vệ (Protected mode) ◼ đa nhiệm 32-bit ◼ quản lý bộ nhớ ảo ◼ Xử lý các phép toán số dấu phẩy động (từ 80486) 6/12/2021 Chương 3: Bộ xử lý trung tâm 66
- Kiến trúc 64-bit (IA-64) ◼ Các thanh ghi bên trong: 64-bit ◼ Xử lý các phép toán số nguyên với 64-bit ◼ Xử lý các phép toán số dấu phẩy động ◼ Không tương thích phần cứng với các bộ xử lý trước đó ◼ Tương thích phần mềm bằng cách giả lập môi trường 6/12/2021 Chương 3: Bộ xử lý trung tâm 67
- Hết chương 3 6/12/2021 Chương 3: Bộ xử lý trung tâm 68