Computer >> Hướng Dẫn Máy Tính >  >> Phần Cứng >> CPU

Hiểu Về Cách CPU Hoạt Động: Trái Tim Của Máy Tính

CPU (microprocessor) là trái tim và/hoặc não bộ của máy tính. Sâu vào lõi máy tính để giúp viết chương trình hiệu quả.

"Công cụ thường đơn giản hơn máy móc; thường dùng tay, máy móc thường dùng lực vật/lửa."

– Charles Babbage

Một máy tính là máy móc chủ yếu chạy bằng điện nhưng sự linh hoạt và khả năng lập trình mang lại sự đơn giản của công cụ.

CPU là trái tim và/hoặc não bộ. Thực thi lệnh được cung cấp. Nhiệm vụ chính: thực hiện phép toán số học, logic và điều phối các lệnh. Trước khi đi sâu, xem thành phần chính CPU và vai trò:

Hai Thành Phần Chính Của Processor

  • Control Unit — CU (Đơn vị điều khiển)
  • Arithmetic and Logical Unit — ALU (Đơn vị số học và logic)

Control Unit — CU

CU là phần CPU điều phối thực thi lệnh. Nó ra lệnh làm gì. Theo lệnh, kích hoạt đường dây nối CPU đến các phần khác bao gồm ALU. CU là thành phần đầu tiên nhận lệnh để xử lý.

Hai loại CU:

  • Hardwired control units (đường dây cứng).
  • Microprogrammable (microprogrammed) control units (có thể vi lập trình).

Hardwired CU là phần cứng, thay đổi hành vi phải đổi hardware. Microprogrammable CU có thể lập trình thay đổi hành vi. Hardwired CU xử lý lệnh nhanh hơn, microprogrammable linh hoạt hơn.

Arithmetic and Logical Unit — ALU

ALU như tên: làm mọi phép tính số học và logic. Phép cộng, trừ. ALU gồm mạch logic (logic gates) thực hiện phép toán.

Hầu hết logic gate nhận 2 input, cho 1 output.

Ví dụ mạch half adder (bán bộ cộng) nhận 2 input, xuất kết quả. A, B = input, S = output, C = carry (nhớ).

Hiểu Về Cách CPU Hoạt Động: Trái Tim Của Máy Tính
Nguồn: https://en.wikipedia.org/wiki/Adder_(electronics)#/media/File:Half_Adder.svg

Lưu Trữ — Registers Và Memory

Nhiệm vụ chính CPU: thực thi lệnh. Xử lý lệnh thường cần dữ liệu. Dữ liệu trung gian, input, output. Dữ liệu và lệnh lưu ở:

Registers (Thanh Ghi)

Register = tập nhỏ nơi lưu dữ liệu. Register = tổ hợp latches. Latches (cũng gọi flip-flops) = tổ hợp logic gates lưu 1 bit thông tin.

Latch có 2 dây input: write và data input, 1 dây output. Bật write wire → thay đổi dữ liệu lưu. Tắt write wire → output giữ nguyên.

Hiểu Về Cách CPU Hoạt Động: Trái Tim Của Máy Tính
SR latch từ cặp NOR gates chéo

CPU có register lưu output. Gửi lên RAM (main memory) chậm vì dữ liệu trung gian. Dữ liệu gửi sang register khác nối bằng BUS. Register lưu lệnh, output data, địa chỉ lưu trữ, bất kỳ dữ liệu nào.

Memory (RAM)

RAM = tập hợp register sắp xếp tối ưu để lưu nhiều dữ liệu hơn. RAM (Random Access Memory) = volatile (bay hơi) – mất dữ liệu khi tắt nguồn. Vì RAM là tập hợp register, đọc/ghi dữ liệu cần: input địa chỉ 8-bit, data input, read/write enable (hoạt động như latch).

Instruction (Lệnh) Là Gì?

Instruction = đơn vị tính toán hạt nhân nhất máy tính có thể làm. Nhiều loại instruction CPU xử lý.

Bao gồm:

  • Số học: add, subtract
  • Logic: and, or, not
  • Dữ liệu: move, input, output, load, store
  • Điều khiển luồng: goto, if … goto, call, return
  • Báo hiệu kết thúc chương trình: Halt

Lệnh cung cấp cho máy tính qua assembly language, hoặc sinh bởi compiler, hoặc interpret trong high-level language.

Lệnh được hardwired (cứng) bên trong CPU. ALU chứa số học/logic, CU quản lý điều khiển luồng.

1 clock cycle (chu kỳ clock) máy tính thực hiện 1 lệnh. Máy hiện đại có thể làm >1 lệnh/chu kỳ.

Tập lệnh máy tính có thể thực hiện = instruction set.

CPU Clock (Clock CPU)

Clock cycle

Tốc độ máy tính xác định bởi chu kỳ clock. Số clock periods (chu kỳ clock) mỗi giây máy tính làm việc. 1 chu kỳ clock rất nhỏ ~250 * 10⁻¹² giây. Clock cao hơn → processor nhanh hơn.

CPU clock đo bằng gHz (Gigahertz). 1 gHz = 10⁹ Hz. 1 hertz = 1 giây. 1 Gigahertz = 10⁹ chu kỳ/giây.

Clock nhanh hơn → CPU thực thi nhiều lệnh hơn. Clock cycle = 1/clock rate. CPU Time = số clock cycle / clock rate.

Cải thiện CPU time: tăng clock rate HOẶC giảm số clock cycle bằng cách tối ưu lệnh cung cấp CPU. Một số processor cho tăng clock nhưng thay đổi vật lý → quá nhiệt, khói/lửa.

Lệnh Được Thực Thi Như Thế Nào

Lệnh lưu trên RAM theo thứ tự tuần tự. Giả sử CPU giả định: Instruction gồm OP code (mã phép toán) và địa chỉ memory hoặc register.

Trong CU có 2 register: Instruction Register (IR) nạp OP code, Instruction Address Register nạp địa chỉ lệnh đang thực thi. Các register khác lưu giá trị tại địa chỉ 4 bit cuối của lệnh.

Ví dụ tập lệnh cộng 2 số:

BƯỚC 1 — LOAD_A 8:

Lệnh lưu RAM ban đầu: <1100 1000>. 4 bit đầu = op code. Xác định lệnh. Lệnh fetch (nạp) vào IR của CU. Decode (giải mã) = LOAD_A → nạp dữ liệu tại địa chỉ 1000 (4 bit cuối) vào register A.

BƯỚC 2 — LOAD_B 2

Tương tự: nạp dữ liệu địa chỉ 2 (0010) vào register B.

BƯỚC 3 — ADD B A

Lệnh tiếp: cộng 2 số. CU bảo ALU thực hiện cộng, lưu kết quả vào register A.

BƯỚC 4 — STORE_A 23

Tập lệnh đơn giản cộng 2 số.

Đã cộng thành công 2 số!

BUS

Mọi dữ liệu giữa CPU, register, memory, thiết bị I/O truyền qua bus. Để nạp dữ liệu vào memory vừa cộng, CPU đặt địa chỉ memory lên address bus, kết quả cộng lên data bus, bật đúng signal trên control bus. Dữ liệu nạp vào memory nhờ bus.

Hiểu Về Cách CPU Hoạt Động: Trái Tim Của Máy Tính
Nguồn: https://en.wikipedia.org/wiki/Bus_(computing)#/media/File:Computer_system_bus.svg

Cache

CPU có cơ chế prefetch lệnh vào cache. Với hàng triệu lệnh/giây, thời gian fetch từ RAM nhiều hơn execute. Cache CPU prefetch lệnh và data để thực thi nhanh hơn.

Nếu data cache khác memory hoạt động → đánh dấu dirty bit.

Instruction Pipelining (Đường Ống Lệnh)

CPU hiện đại dùng Instruction pipelining để song hành thực thi lệnh. Fetch, Decode, Execute. Khi 1 lệnh ở decode, CPU có thể fetch lệnh khác.

Hiểu Về Cách CPU Hoạt Động: Trái Tim Của Máy Tính
Nguồn: https://en.wikipedia.org/wiki/Instruction_pipelining#/media/File:Pipeline,_4_stage.svg

Vấn đề: 1 lệnh phụ thuộc lệnh khác. Processor thực thi lệnh không phụ thuộc theo thứ tự khác (out-of-order execution).

Multi-core Computer (Đa Nhân)

Về cơ bản là các CPU khác nhau nhưng chia sẻ tài nguyên như cache.

Performance (Hiệu Năng)

Hiệu năng CPU = 1 / execution time (thời gian thực thi).

Ví dụ: chương trình chạy 20ms → performance = 1/20 = 0.05 ms. Relative performance = execution time 1 / execution time 2.

Yếu tố ảnh hưởng: instruction execution time và CPU clock speed. Tăng hiệu năng chương trình: tăng clock speed HOẶC giảm số lệnh chương trình. Tốc độ processor có giới hạn, máy hiện đại multi-core hỗ trợ triệu lệnh/giây. Nhưng chương trình nhiều lệnh → giảm hiệu năng tổng thể.

Big O notation xác định với input cho trước, hiệu năng ảnh hưởng như thế nào.

Nhiều tối ưu hóa trong CPU để nhanh hơn, xử lý nhiều hơn. Viết chương trình cần cân nhắc: giảm số lệnh cung cấp CPU → tăng hiệu năng chương trình.

Đăng cả trên Milap Neupane Blog: How Does a CPU work