chương 1, nhiệm vụ chủ yếu của CPU là đọc lệnh từ bộ nhớ, giải mã và thực hiện lệnh của chương trình. Khoảng thời gian để CPU thực hiện xong một lệnh kể từ khi CPU cấp phát tín hiệu địa chỉ ô nhớ chứa lệnh đến khi nó hoàn tất việc thực hiện lệnh được gọi là chu kỳ lệnh (Insruction Cycle). Mỗi chu kỳ lệnh của CPU được mô tả theo các bước sau: 1. Khi một chương trình được kích hoạt, hệ điều hành (OS - Operating System) nạp mã chương trình vào bộ nhớ trong; 2.
Địa chỉ của ô nhớ chứa lệnh đầu tiên của chương trình được nạp vào bộ đếm chương trình PC; 3. Địa chỉ ô nhớ chứa lệnh từ PC được chuyển đến bus địa chỉ thông qua thanh ghi MAR; 4. Bus địa chỉ chuyển địa chỉ ô nhớ đến đơn vị quản lý bộ nhớ (MMU - Memory Management Unit); 5. MMU chọn ra ô nhớ và thực hiện lệnh đọc nội dung ô nhớ; 6.
Lệnh (chứa trong ô nhớ) được chuyển ra bus dữ liệu và tiếp theo được chuyển tiếp đến thanh ghi MBR; 7. MBR chuyển lệnh đến thanh ghi lệnh IR; IR chuyển lệnh vào bộ điều khiển CU; 8. CU giải mã lệnh và sinh các tín hiệu điều khiển cần thiết, yêu cầu các bộ phận chức năng của CPU, như ALU thực hiện lệnh; 9. Giá trị địa chỉ trong bộ đếm PC được tăng lên 1 đơn vị lệnh và nó trỏ đến địa chỉ của ô nhớ chứa lệnh tiếp theo; 10.
Các bước từ 3-9 được lặp lại với tất cả các lệnh của chương trình.3 Các thanh ghi Thanh ghi (registers) là các ô nhớ bên trong CPU, có nhiệm vụ lưu trữ tạm thời lệnh và dữ liệu cho CPU xử lý. Thanh ghi thường có kích thước nhỏ, nhưng tốc độ làm việc rất cao - bằng tốc độ CPU. Các CPU cũ (80x86) có khoảng 16-32 thanh ghi. Các CPU hiện đại (như Pentium 4 và Core Duo) có thể có đến hàng trăm thanh ghi.
Kích thước thanh ghi phụ thuộc vào thiết kế CPU. Các kích thước thông dụng của thanh ghi là 8, 16, 32, 64, 128 và 256 bit. CPU Intel 8086 và 80286 có các thanh ghi 8 bit và 16 bit. CPU Intel 80386 và Pentium II có các thanh ghi 16 bit và 32 bit.
Các CPU Pentium 4 và Core Duo có các thanh ghi 32 bit, 64 bit và 128 bit.1 Thanh tích luỹ A Thanh tích luỹ A (Accummulator) là một trong các thanh ghi quan trọng nhất của CPU. Thanh ghi A không những được sử dụng để lưu toán hạng vào mà còn dùng để chứa kết quả ra. Ngoài ra, thanh ghi A còn thường được dùng trong các lệnh trao đổi dữ liệu với các thiết bị 19 Downloaded by Tr?n Kieu Anh (trankieuanh345@gmail.com) lOMoARcPSD|19197609 Chương 2- Khối xử lý trung tâm vào ra. Kích thước của thanh ghi A bằng kích thước từ xử lý của CPU: 8 bit, 16 bit, 32 bit hoặc 64 bit.2 Bộ đếm chương trình PC Bộ đếm chương trình PC (Program Counter) hoặc con trỏ lệnh (IP – Instruction pointer) luôn chứa địa chỉ của ô nhớ chứa lệnh kế tiếp được thực hiện.
Đặc biệt, PC chứa địa chỉ của ô nhớ chứa lệnh đầu tiên của chương trình khi chương trình được kích hoạt và được hệ điều hành nạp vào bộ nhớ. Khi CPU thực hiện xong một lệnh, địa chỉ của ô nhớ chứa lệnh tiếp theo được nạp vào PC. Kích thước của PC phụ thuộc vào thiết kế CPU. Các kích thước thông dụng của PC là 8 bit, 16 bit, 32 bit và 64 bit.3 Thanh ghi lệnh IR Thanh ghi lệnh IR (Instruction register) lưu lệnh đang thực hiện.
IR nhận lệnh từ MBR và chuyển tiếp lệnh đến CU giải mã và thực hiện.4 Các thanh ghi MAR và MBR MAR là thanh ghi địa chỉ bộ nhớ (Memory address register) - giao diện giữa CPU và bus địa chỉ. MAR nhận địa chỉ ô nhớ chứa lệnh tiếp theo từ PC và chuyển tiếp ra bus địa chỉ. MBR là thanh ghi đệm dữ liệu (Memory buffer register) - giao diện giữa CPU và bus địa chỉ. MBR nhận lệnh từ bus địa chỉ và chuyển tiếp lệnh đến IR thông qua bus trong CPU.5 Các thanh ghi tạm thời CPU thường sử dụng một số thanh ghi tạm thời để chứa toán hạng đầu vào và kết quả đầu ra, như các thanh ghi tạm thời X, Y và Z.
Ngoài ra, các thanh ghi tạm thời còn tham gia trong việc hỗ trợ xử lý song song (thực hiện nhiều lệnh cùng một thời điểm) và hỗ trợ thực hiện lệnh theo cơ chế thực hiện tiên tiến kiểu không theo trật tự (OOO – Out Of Order execution).6 Con trỏ ngăn xếp SP SP Stack Hình 15 Con trỏ ngăn xếp SP Ngăn xếp (Stack) là bộ nhớ đặc biệt hoạt động theo nguyên lý vào sau ra trước (LIFO). Con trỏ ngăn xếp SP (Stack Pointer) là một thanh ghi luôn chứa địa chỉ đỉnh ngăn xếp. Có hai thao tác chính với ngăn xếp: Push - đẩy dữ liệu vào ngăn xếp: 20 Downloaded by Tr?n Kieu Anh (trankieuanh345@gmail.com) lOMoARcPSD|19197609 Chương 2- Khối xử lý trung tâm SP SP + 1 ; tăng địa chỉ đỉnh ngăn xếp {SP} Dữ liệu ; nạp dữ liệu vào ngăn xếp Pop - lấy dữ liệu ra khỏi ngăn xếp Thanh ghi {SP} ; chuyển dữ liệu từ đỉnh ngăn xếp vào thanh ghi SP SP – 1 ; giảm địa chỉ đỉnh ngăn xếp 2.7 Các thanh ghi tổng quát Các thanh ghi tổng quát (General Purpose Registers) là các thanh ghi đa năng, có thể được sử dụng cho nhiều mục đích: để chứa toán hạng đầu vào hoặc chứa kết quả đầu ra. Chẳng hạn, CPU Intel 8086 có 4 thanh ghi tổng quát: AX - Thanh tích luỹ, BX - thanh ghi cơ sở, CX - thanh đếm và DX - thanh ghi dữ liệu.8 Thanh ghi trạng thái FR Thanh ghi trạng thái (SR - Status Register) hoặc thanh ghi cờ (FR – Flag Register) là một thanh ghi đặc biệt của CPU: mỗi bít của thanh ghi cờ lưu trạng thái của kết quả của phép tính ALU thực hiện.
Có hai loại bít cờ: cờ trạng thái (CF, OF, AF, ZF, PF, SF) và cờ điều khiển (IF, TF, DF). Các bít cờ thường được sử dụng như là các điều kiện trong các lệnh rẽ nhánh để tạo logic chương trình. Kích thước của thanh ghi FR phụ thuộc thiết kế CPU. Hình 16 Các bit của thanh ghi cờ FR 8 bit Hình 16 biểu diễn các bit của thanh ghi cờ FR.
Ý nghĩa cụ thể của các bit như sau: ZF: Cờ Zero, ZF=1 nếu kết quả=0 và ZF=0 nếu kết quả<>0. SF: Cờ dấu, SF=1 nếu kết quả âm và SF=0 nếu kết quả dương. CF: Cờ nhớ, CF=1 nếu có nhớ/mượn, CF=0 trong trường hợp khác. AF: Cờ nhớ phụ, AF=1 nếu có nhớ/mượn ở nửa thấp của toán hạng.
OF: Cờ tràn, OF=1 nếu xảy ra tràn, OF=0 trong trường hợp khác. PF: Cờ chẵn lẻ, PF=1 nếu tổng số bit 1 trong kết quả là lẻ và PF=0 nếu tổng số bit 1 trong kết quả là chẵn. IF: Cờ ngắt, IF=1: cho phép ngắt, IF=0: cấm ngắt.4 Khối điều khiển Khối điều khiển (Control Unit – CU) là một trong các khối quan trọng nhất của CPU. CU đảm nhiệm việc điều khiển toàn bộ các hoạt động của CPU theo xung nhịp đồng hồ.
CU sử dụng nhịp đồng hồ để đồng bộ các đơn vị chức năng trong CPU và giữa CPU với các bộ phận bên ngoài. Hình 17 minh hoạ phương thức làm việc của khối điều khiển CU. Khối điều khiển CU nhận ba tín hiệu đầu vào: (1) Lệnh từ thanh ghi lệnh IR, (2) Giá trị các cờ trạng thái của 21 Downloaded by Tr?n Kieu Anh (trankieuanh345@gmail.com) lOMoARcPSD|19197609 Chương 2- Khối xử lý trung tâm ALU và (3) Xung nhịp đồng hồ CLK và CU sản sinh hai nhóm tín hiệu đầu ra: (1) Nhóm tín hiệu điều khiển các bộ phận bên trong CPU (Internal control signal) và (2) Nhóm tín hiệu điều khiển các bộ phận bên ngoài CPU (External control signal). Internal External control control signal signal Control Unit ALU CLK Flags CU IR Hình 17 Khối điều khiển CU và các tín hiệu 2.5 Khối số học và logic Khối số học và logic (Arithmetic and Logic Unit – ALU) đảm nhiệm chức năng tính toán trong CPU.
ALU bao gồm một loạt các đơn vị chức năng con để thực hiện các phép toán số học trên số nguyên 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) Hình 18 minh hoạ các khối con của ALU cũng như các cổng vào và cổng ra của ALU. Hai cổng vào IN nhận các toán hạng đầu vào từ các thanh ghi và một cổng OUT kết nối với bus trong để chuyển kết quả tính toán đến thanh ghi. IN IN ADD SUB NEG SHL MUL DIV SHR ROL NOT OR AND ROR XOR OUT Hình 18 Bộ tính toán ALU 22 Downloaded by Tr?n Kieu Anh (trankieuanh345@gmail.com) lOMoARcPSD|19197609 Chương 2- Khối xử lý trung tâm 2.6 Bus trong CPU Bus trong CPU (Internal bus) là kênh giao tiếp giữa các bộ phận bên trong CPU, cụ thể giữa bộ điều khiển CU với các thanh ghi và bộ tính toán ALU.
Bus trong hỗ trợ kênh giao tiếp song công (full duplex) và cung cấp giao diện để kết nối với bus ngoài (bus hệ thống). So với bus ngoài, bus trong thường có băng thông lớn hơn và có tốc độ nhanh hơn.2 TẬP LỆNH MÁY TÍNH 2.1 Khái niệm lệnh, tập lệnh và các thành phần của lệnh Có thể nói, nếu coi phần mạch điện tử của CPU là “phần xác” thì tập lệnh (Instruction Set) chính là “phần hồn” của bộ não máy tính. Nhờ có tập lệnh, CPU có khả năng lập trình được để thực hiện các công việc hữu ích cho người dùng. Vậy lệnh máy tính là gì? Có thể định nghĩa lệnh máy tính một cách đơn giản: Lệnh máy tính (Computer Instruction) là một từ nhị phân (binary word) được gán một nhiệm vụ cụ thể.
Các lệnh của chương trình được lưu trong bộ nhớ và chúng lần lượt được CPU đọc, giải mã và thực hiện. Tập lệnh máy tính thường gồm nhiều lệnh có thể được chia thành một số nhóm theo chức năng: nhóm các lệnh vận chuyển dữ liệu (data movement), nhóm các lệnh tính toán (computational), nhóm các lệnh điều kiện và rẽ nhánh conditonal and branching) và một số lệnh khác. Việc thực hiện lệnh có thể được chia thành các pha (phase) hay giai đoạn (stage).