Skip to content

Nguyên Lý Tổ Chức Máy Tính

Lời Nói Đầu

Sau khi từ transistor đến CPU, máy tính hình thành hệ thống hoàn chỉnh như thế nào? Chương trước chúng ta bắt đầu từ transistor, xây dựng bộ cộng, thanh ghi, đơn vị tính toán và cuối cùng lắp ráp thành lõi CPU. Nhưng chỉ có CPU là chưa đủ — nó cần phối hợp với bộ nhớ, thiết bị I/O, cần bus để kết nối các thành phần, cần hệ thống lệnh để vận hành. Chương này chúng ta sẽ chuyển từ góc nhìn bên trong CPU sang góc nhìn toàn bộ hệ thống máy tính, hiểu sâu về kiến trúc Von Neumann, hệ thống lệnh, phân cấp lưu trữ, bus và I/O.

Bài viết này sẽ dạy bạn điều gì?

Sau khi học xong chương này, bạn sẽ có được:

  • Góc nhìn hệ thống: Hiểu cách CPU, bộ nhớ, I/O phối hợp với nhau, không còn là người yêu thích phần cứng đơn lẻ
  • Thuật ngữ phần cứng chuyên nghiệp: Nắm vững các khái niệm cốt lõi như chu kỳ lệnh, pipeline, CPI, tỉ lệ cache hit
  • Tư duy hiệu năng: Hiểu các nút thắt cổ chai và biện pháp tối ưu trong tổ chức máy tính
  • Nền tảng cho học tập tiếp theo: Xây dựng nền tảng vững chắc cho hệ điều hành, kiến trúc máy tính, phát triển nhúng
ChươngNội DungKhái Niệm Cốt Lõi
Chương 1Kiến trúc Von NeumannLưu trữ chương trình, năm thành phần, đường dữ liệu
Chương 2Hệ thống lệnhĐịnh dạng lệnh, chế độ địa chỉ, CISC vs RISC
Chương 3Bộ điều khiển CPUĐơn vị điều khiển, vi thao tác, chu kỳ lệnh
Chương 4Hệ thống lưu trữCache, bộ nhớ chính, bộ nhớ ảo, cơ chế phân trang
Chương 5Bus và I/OPhân xử bus, DMA, cơ chế ngắt

0. Toàn Cảnh: Hệ Thống Phần Cứng Máy Tính

Trong chương trước "Từ Transistor đến CPU", chúng ta đã hiểu cách CPU hoạt động bên trong — từ fetch, decode, execute đến write back. Nhưng CPU chỉ là một đơn vị thực thi, để máy tính thực sự "có thể sử dụng", cần có sự phối hợp của một loạt các thành phần ngoại vi.

Detailed CPU Instruction Cycle Demo
CPU
Control Unit CU
PC256Program Counter
IRInstruction Register
MARMemory Address Register
MDRMemory Data Register
Arithmetic Logic Unit ALU
ACC0Accumulator
General Register File
R00
R10
R20
R30
Address Bus
Data Bus
Control Bus
Main Memory
0x100LOAD R0, [0x200]
 0x101LOAD R1, #7
 0x102ADD R0, R1
 0x103STORE [0x201], R0
Data Area
 0x51242
 0x5130
FetchFetch
DecodeDecode
ExecuteExecute
Write BackWrite Back
Step 0 / 32
Click "Clock Pulse" to step through execution, or "Auto Run" to play continuously.

Giải Cấu Theo Tầng: Hệ Thống Phần Cứng Máy Tính

  • Tầng thứ nhất: Lõi CPU Chịu trách nhiệm thực thi lệnh, bao gồm đơn vị điều khiển (phát tín hiệu điều khiển) và đơn vị tính toán (thực hiện phép toán số học và logic)

  • Tầng thứ hai: Tập thanh ghi Đơn vị lưu trữ tốc độ cao bên trong CPU, bao gồm thanh ghi đa năng và thanh ghi chuyên dụng (PC, IR, MAR, MDR, v.v.)

  • Tầng thứ ba: Bộ nhớ chính Bộ nhớ dùng để lưu trữ chương trình và dữ liệu, CPU truy cập qua bus địa chỉ và bus dữ liệu

  • Tầng thứ tư: Thiết bị I/O Thiết bị nhập xuất kết nối với bus hệ thống qua bộ điều khiển I/O

  • Tầng thứ năm: Bus hệ thống Kênh dữ liệu kết nối CPU, bộ nhớ, I/O, bao gồm bus địa chỉ, bus dữ liệu, bus điều khiển


1. Kiến Trúc Von Neumann: "Hiến Pháp" Của Máy Tính Hiện Đại

1.1 Nguyên Lý Lưu Trữ Chương Trình

Năm 1945, nhà toán học John von Neumann đã đề xuất ý tưởng mang tính cách mạng về kiến trúc lưu trữ chương trình (Stored-program). Ý tưởng này đã đặt nền móng cho máy tính hiện đại.

Khái Niệm Cốt Lõi

Lưu trữ chương trình: Chương trình là một loại dữ liệu đặc biệt, được lưu trữ trong bộ nhớ giống như dữ liệu thông thường. CPU có thể đọc và thực thi các lệnh chương trình được lưu trong bộ nhớ giống như đọc ghi dữ liệu.

Điều này có nghĩa là:

  • Máy tính thời kỳ đầu: Chương trình được thực hiện bằng cách nối dây cố định, thay đổi chương trình cần hàn lại mạch
  • Kiến trúc Von Neumann: Chương trình được lưu trong bộ nhớ, thay đổi chương trình chỉ cần sửa đổi nội dung bộ nhớ

1.2 Năm Thành Phần Chính

Kiến trúc Von Neumann chia máy tính thành năm thành phần cốt lõi:

CPU Register FileHigh-speed storage inside the CPU
Special Registers
PC
0x00401000
Program counter
IR
0x8B450008
Instruction register
MAR
0x00401000
Memory address register
MDR
0x00000000
Memory data register
ACC
0x0000001A
Accumulator
General Purpose Registers
RAX
0x00000000
Return value
RBX
0x00000000
Base register
RCX
0x00000000
Counter register
RDX
0x00000000
Data register
RSI
0x00000000
Source index
RDI
0x00000000
Destination index
RBP
0x00000000
Base pointer
RSP
0x7FFDE000
Stack pointer
Program Status Word (PSW / FLAGS)
CF0Carry flag
PF0Parity flag
AF0Auxiliary carry
ZF0Zero flag
SF0Sign flag
OF0Overflow flag
Registers vs Memory
FeatureRegisterMemory (RAM)
LocationInside the CPUOutside the CPU
Access speedFastest (< 1ns)Slower (50-100ns)
CapacityTiny (bytes)Large (GB)
RoleHold instructions, operands, and resultsStore programs and data
Thành PhầnTiếng AnhChức NăngThành Phần Chính
Bộ Tính ToánALU (Arithmetic Logic Unit)Thực hiện phép toán số học và logicBộ cộng, bộ dịch, bộ so sánh
Bộ Điều KhiểnCU (Control Unit)Điều phối công việc của các thành phầnThanh ghi lệnh, bộ giải mã, bộ tạo xung
Bộ NhớMemoryLưu trữ chương trình và dữ liệuMAR (Memory Address Register), MDR (Memory Data Register)
Thiết Bị NhậpInputNhập thông tinBàn phím, chuột, máy quét
Thiết Bị XuấtOutputXuất thông tinMàn hình, máy in

1.3 Đường Dữ Liệu

Đường dữ liệu (Data Path) là đường đi của dữ liệu giữa các thành phần chức năng. Bên trong CPU, đường dữ liệu kết nối:

  • Tập thanh ghi
  • Đơn vị số học và logic (ALU)
  • Thanh ghi dữ liệu bộ nhớ (MDR)

Độ rộng của đường dữ liệu (số bit có thể truyền một lần) ảnh hưởng trực tiếp đến hiệu năng máy tính.

1.4 Nút Thắt Cổ Chai Von Neumann

Kiến trúc Von Neumann có một nút thắt cổ chai hiệu năng nổi tiếng:

Tốc độ truyền dữ liệu giữa CPU và bộ nhớ thấp hơn nhiều so với tốc độ xử lý của CPU.

Điều này khiến CPU thường ở trạng thái "chờ dữ liệu". Nhiều kỹ thuật tối ưu của máy tính hiện đại được phát triển xoay quanh vấn đề này:

Kỹ Thuật Tối ƯuNguyên Lý
CacheĐặt bộ nhớ tốc độ cao dung lượng nhỏ gần CPU
Pipeline LệnhCho nhiều lệnh cùng ở các giai đoạn khác nhau
Siêu Vô HướngPhát nhiều lệnh trong cùng một chu kỳ đồng hồ
Đa Nhân Song SongNhiều lõi CPU chia sẻ tác vụ tính toán

2. Hệ Thống Lệnh: Giao Diện Giữa CPU và Phần Mềm

Phần trước chúng ta đã biết ý tưởng cốt lõi của kiến trúc Von Neumann: chương trình được lưu trong bộ nhớ giống như dữ liệu. Nhưng điều này đặt ra một câu hỏi quan trọng — "chương trình" trong bộ nhớ trông như thế nào? CPU làm sao đọc hiểu nó?

Câu trả lời chính là hệ thống lệnh (Instruction Set Architecture, ISA). Nếu ví CPU như một dịch vụ, thì hệ thống lệnh chính là tài liệu API của nó — nó định nghĩa tất cả các lệnh CPU có thể hiểu, định dạng của mỗi lệnh, và phạm vi dữ liệu mà lệnh có thể thao tác. Mỗi dòng code bạn viết, cuối cùng đều được trình biên dịch dịch thành chuỗi lời gọi "API" này.

2.1 Từ Code Đến Lệnh: Hành Trình Dịch Của Một Dòng Code

Trước tiên hãy xây dựng nhận thức toàn cục: code bạn viết trong editor và thứ CPU thực sự thực thi cách nhau mấy tầng dịch.

🔗 From Code to Instructions: One Line Through the Translation Pipeline

Click each stage to see how source code becomes CPU-executable instructions

1Source code
int a = 10 + 5;
This is high-level code written in an editor. It is easy for humans to read, but the CPU does not understand int or the + operator directly.
2Compiler emits assembly
MOV  R1, #10    ; put 10 into register R1
MOV  R2, #5     ; put 5 into register R2
ADD  R3, R1, R2 ; R3 = R1 + R2
STORE R3, [a]   ; store the result at variable a
3Assembler emits machine code
0001 0001 0000 1010  → MOV R1, #10
0001 0010 0000 0101  → MOV R2, #5
0010 0011 0001 0010  → ADD R3, R1, R2
0100 0011 1000 0000  → STORE R3, [a]
4CPU executes instructions
Clock 1: fetch → decode → execute MOV R1, #10
Clock 2: fetch → decode → execute MOV R2, #5
Clock 3: fetch → decode → execute ADD R3, R1, R2
Clock 4: fetch → decode → execute STORE R3, [a]
💡 Key idea
An instruction set is the CPU API: it defines every command the CPU understands. A compiler translates your high-level language into calls to that API. Different CPUs, such as x86 and ARM, have different instruction sets, just as different services expose different APIs.

Chuỗi dịch này là chìa khóa để hiểu hệ thống lệnh:

TầngNội DungAi Có Thể Hiểu
Ngôn ngữ bậc caoint a = 10 + 5;Con người
Hợp ngữMOV R1, #10 / ADD R3, R1, R2Con người (cần đào tạo)
Mã máy0001 0001 0000 1010CPU

Tại sao cần hiểu chuỗi này?

  • Khi thấy lỗi biên dịch, bạn biết lỗi xảy ra ở bước "ngôn ngữ bậc cao → hợp ngữ"
  • Khi thấy crash runtime, bạn biết vấn đề ở giai đoạn CPU thực thi lệnh
  • Khi hiểu tối ưu hiệu năng, bạn biết trình biên dịch đã làm những tối ưu gì trong quá trình "dịch"
  • Khi chọn kiến trúc CPU (x86 vs ARM), bạn biết sự khác biệt nằm ở "API tập lệnh" khác nhau

2.2 Một Lệnh Trông Như Thế Nào?

Biết code được dịch thành lệnh, câu hỏi tiếp theo là: cấu trúc bên trong của một lệnh là gì?

Mỗi lệnh máy thực chất là một chuỗi số nhị phân, nhưng nó có định dạng nội bộ nghiêm ngặt. Hai phần cốt lõi nhất:

  • Mã thao tác (Opcode): Nói cho CPU biết "làm gì" — là phép cộng? nhảy? hay đọc bộ nhớ?
  • Toán hạng (Operand): Nói cho CPU biết "với ai" — thanh ghi nào? địa chỉ bộ nhớ nào? hằng số nào?

Giống như một câu có cấu trúc "động từ + tân ngữ", lệnh cũng có cấu trúc "thao tác + đối tượng":

Lệnh:  ADD  R3, R1, R2
       ───  ──────────
       Mã thao tác  Toán hạng
       (làm phép cộng) (R3 = R1 + R2)

Dựa trên số lượng toán hạng, định dạng lệnh được chia thành bốn loại từ đơn giản đến phức tạp:

Machine Instruction FormatOpcode + operands = machine instruction
Opcode8 bits
Destination8 bits
Source 18 bits
Source 28 bits
Example instruction
01101100 00000001 00000010 00000011
Result goes to a new destination without changing sources
Three-address format
Three addresses identify the destination and two source operands separately. The result goes into the destination without modifying the sources.
Common examples
ADD R1, R2, R3R1 = R2 + R3
SUB R1, R2, R3R1 = R2 - R3
MUL R1, R2, R3R1 = R2 × R3
Common opcodes
00000000NOPNo operation
00000001MOVMove data
00000010ADDAddition
00000011SUBSubtraction
00000100MULMultiplication
00000101DIVDivision
00000110ANDLogical AND
00000111ORLogical OR
00001000NOTLogical NOT
00001001XORExclusive OR
00001010SHLShift left
00001011SHRShift right
00001100JMPUnconditional jump
00001101JEJump if equal
00001110JNEJump if not equal
00001111CALLCall subroutine
00010000RETReturn
00010001PUSHPush stack
00010010POPPop stack
00010011LOADLoad from memory
00010100STOREStore to memory
Định DạngCấu TrúcVí DụTình Huống Sử Dụng
Không địa chỉChỉ có mã thao tácRET (trở về)Máy tính ngăn xếp, toán hạng ngầm ở đỉnh stack
Một địa chỉMã thao tác + 1 địa chỉINC R1 (R1 tăng 1)Phép toán đơn toán hạng
Hai địa chỉMã thao tác + 2 địa chỉMOV R1, R2Phổ biến nhất, truyền dữ liệu và tính toán
Ba địa chỉMã thao tác + 3 địa chỉADD R3, R1, R2Không phá hủy toán hạng nguồn

Tại sao có nhiều định dạng như vậy?

Đây là sự đánh đổi giữa không gian và tính linh hoạt. Lệnh không địa chỉ ngắn nhất (tiết kiệm bộ nhớ), nhưng cần thêm thao tác ngăn xếp; lệnh ba địa chỉ linh hoạt nhất (không phá hủy dữ liệu nguồn), nhưng chiếm nhiều bit hơn. Các kiến trúc CPU khác nhau sẽ chọn tổ hợp định dạng lệnh khác nhau.

2.3 CPU Tìm Dữ Liệu Như Thế Nào? — Chế Độ Địa Chỉ

Lệnh bảo CPU "làm phép cộng", nhưng hai số để cộng ở đâu? Có thể được viết trực tiếp trong lệnh, có thể trong thanh ghi, cũng có thể ở một địa chỉ bộ nhớ nào đó. Chế độ địa chỉ là quy tắc nói cho CPU biết "đi đâu tìm toán hạng".

Dùng phép so sánh "tìm người" trong cuộc sống:

Chế Độ Địa ChỉPhép So SánhVí Dụ LệnhMô Tả
Địa chỉ tức thờiNgười đó đứng ngay trước mặt bạnMOV R1, #100Dữ liệu được viết trực tiếp trong lệnh, nhanh nhất
Địa chỉ thanh ghiGọi điện thoại nội bộ tìm đồng nghiệpMOV R1, R2Dữ liệu trong thanh ghi CPU, rất nhanh
Địa chỉ trực tiếpBiết số nhà, đến thẳngMOV R1, [0x1000]Địa chỉ bộ nhớ được viết trong lệnh
Địa chỉ gián tiếpHỏi lễ tân "Trương Tam ở phòng nào"MOV R1, [R2]Thanh ghi chứa địa chỉ, cần tra thêm một lần
Địa chỉ chỉ mục"Tòa 3 + tầng 5" để tính ra phòngMOV R1, [R2+10]Địa chỉ cơ sở + độ lệch, dùng cho truy cập mảng
Addressing ModesHow an instruction finds operand locations
Immediate addressingImmediate Addressing
Definition
The operand is embedded directly in the instruction and is immediately available.
Instruction format
MOV R1, #100
Example
MOV R1, #100 ; R1 = 100
Immediate value 100 is stored directly in the instruction, so no register or memory lookup is needed.
Execution process
1CPU reads immediate value 100 directly from the instruction
2Write the immediate value into target register R1
3Execution completes without extra memory access
Characteristics
SpeedFast
FlexibilityLow
Addressing mode comparison
Addressing modeFormatSpeedUse case
Immediate addressingMOV R1, #100FastestConstant assignment and initialization
Register addressingMOV R1, R2FastestRegister-to-register data transfer
Direct addressingMOV R1, [100]Relatively fastAccessing global variables
Indirect addressingMOV R1, [R2]Relatively fastPointers and array traversal
Indexed addressingMOV R1, [R2 + R3]Relatively fastArray access and loops
Based addressingMOV R1, [R2 + 100]Relatively fastStruct fields and function parameters
Relative addressingJMP LABELFastestLoops and conditional branches

Tại sao cần nhiều chế độ địa chỉ như vậy?

Các tình huống khác nhau cần chiến lược "tìm dữ liệu" khác nhau:

  • Gán hằng số (x = 100) → Địa chỉ tức thời, dữ liệu nằm ngay trong lệnh
  • Phép toán biến (a + b) → Địa chỉ thanh ghi, dữ liệu đã được nạp vào thanh ghi
  • Truy cập mảng (arr[i]) → Địa chỉ chỉ mục, địa chỉ cơ sở + độ lệch chỉ số
  • Thao tác con trỏ (*ptr) → Địa chỉ gián tiếp, thanh ghi chứa địa chỉ

Khi viết arr[i], bạn không nghĩ đến chế độ địa chỉ, nhưng trình biên dịch sẽ tự động chọn cách phù hợp nhất.

2.4 Danh Sách Năng Lực Của CPU — Phân Loại Lệnh

Bây giờ chúng ta đã biết định dạng lệnh và chế độ địa chỉ, câu hỏi cuối cùng: CPU thực sự có thể làm những việc gì?

Tất cả các lệnh có thể được phân thành sáu loại lớn, chúng bao phủ mọi thao tác máy tính có thể thực hiện:

LoạiLàm GìLệnh Đại DiệnCode Bạn Viết Tương Ứng
Truyền dữ liệuVận chuyển dữ liệuMOV, LOAD, STORElet x = y, truyền tham số hàm
Phép toán số họcCộng trừ nhân chiaADD, SUB, MUL, DIVa + b, count++
Phép toán logicThao tác bitAND, OR, NOT, XORflags & 0xFF, kiểm tra quyền
Phép dịchDịch trái dịch phảiSHL, SHRx << 2 (tương đương nhân 4)
Chuyển điều khiểnNhảy và gọiJMP, CALL, RETif, for, gọi hàm
Nhập xuấtGiao tiếp với thiết bị ngoại viIN, OUTĐọc bàn phím, ghi màn hình

Một Hiểu Biết Quan Trọng

Tất cả code bạn viết — dù logic nghiệp vụ phức tạp đến đâu, UI animation đẹp mắt thế nào — cuối cùng đều được phân rã thành tổ hợp của sáu loại thao tác cơ bản này. "Trí thông minh" của CPU không nằm ở việc nó có thể làm những việc phức tạp, mà ở việc nó có thể thực hiện những thao tác đơn giản này với tốc độ hàng tỉ lần mỗi giây.

2.5 Hai Triết Lý Thiết Kế: CISC vs RISC

Thiết kế hệ thống lệnh có một sự phân kỳ cơ bản: nên làm cho mỗi lệnh mạnh mẽ nhất có thể, hay làm cho mỗi lệnh đơn giản nhất có thể?

Sự phân kỳ này tạo ra hai trường phái, ảnh hưởng trực tiếp đến mọi thiết bị bạn dùng ngày nay:

⚔️ Two Design Philosophies: CISC vs RISC

Click a comparison dimension to see the core differences between instruction set styles

Thousands of complex instructions
Instruction count
Tens to hundreds of streamlined instructions
One instruction can do many things
Single instruction
One instruction does one thing
Variable length (1-15 bytes)
Instruction length
Fixed length, often 4 bytes
Complex instructions take multiple cycles
Execution speed
Most instructions complete in one cycle
Higher
Power use
Lower
Harder to optimize because lengths vary
Pipeline
Easier to optimize because instructions are regular
Lighter because hardware does more
Compiler burden
Heavier because software optimizes more
🌍 Real-world choices
💻 Your computerx86 (CISC)Compatible with decades of software
📱 Your phoneARM (RISC)Low power consumption and longer battery life
🍎 Apple SiliconARM (RISC)High performance per watt reshaped laptops
🔬 RISC-V boardRISC-V (RISC)Open and royalty-free for IoT and education

Dùng một phép so sánh để hiểu:

  • CISC giống dao đa năng Thụy Sĩ: Một con dao tích hợp kéo, mở nắp chai, tua vít... nhiều chức năng nhưng mỗi cái không hẳn là tốt nhất
  • RISC giống bộ công cụ chuyên nghiệp: Mỗi công cụ chỉ làm một việc, nhưng làm nhanh và tốt

Tại sao điện thoại của bạn dùng ARM, máy tính dùng x86?

  • x86 (CISC) thống trị thị trường PC và máy chủ suốt 40 năm, tích lũy hệ sinh thái phần mềm khổng lồ. Đổi kiến trúc đồng nghĩa với việc tất cả phần mềm phải biên dịch lại
  • ARM (RISC) nhờ ưu thế tiêu thụ điện năng thấp đã thống trị thiết bị di động. Pin điện thoại nhỏ, mỗi milliwatt đều quý giá
  • Apple Silicon đã chứng minh RISC cũng có thể đạt hiệu năng cao — chip dòng M vượt qua đối thủ x86 cả về hiệu năng lẫn tiêu thụ điện
  • RISC-V là kiến trúc RISC mã nguồn mở, đang nổi lên nhanh chóng trong lĩnh vực IoT, giáo dục, chip AI

Tóm tắt: Hệ thống lệnh là cầu nối giữa phần mềm và phần cứng. Code bạn viết được trình biên dịch dịch thành lệnh, lệnh thông qua mã thao tác và toán hạng nói cho CPU biết làm gì, với ai, chế độ địa chỉ quyết định dữ liệu đến từ đâu. Các thiết kế tập lệnh khác nhau (CISC/RISC) quyết định đặc tính hiệu năng và tình huống áp dụng của CPU.

Bây giờ chúng ta đã biết "cấu trúc tĩnh" của lệnh — nó trông như thế nào, có những loại nào. Câu hỏi tiếp theo là: CPU thực thi từng lệnh này từng bước như thế nào bên trong? Đây chính là công việc của bộ điều khiển.


3. Bộ Điều Khiển: "Trung Tâm Chỉ Huy" Của CPU

3.1 Thành Phần Của Bộ Điều Khiển

Bộ điều khiển là "bộ não" của CPU, chịu trách nhiệm điều phối các thành phần làm việc theo yêu cầu của lệnh:

How the Controller WorksHow control signals coordinate CPU components
Control Unit CU
Instruction Register IR
Instruction Decoder
Timing Generator
Output control signals:
PC→MAR
MEM→MDR
MDR→IR
IR→ID
ALU→ACC
ACC→MDR
PC
Program Counter
MAR
Address Register
Memory
Main Memory
MDR
Data Register
IR
Instruction Register
ID
Decoder
ALU
Arithmetic Logic Unit
ACC
Accumulator
Current microinstruction
Core controller concepts
Control signals:Electrical signals emitted by the controller to control each component on the data path.
Timing:CPU operations advance by clock ticks; each tick performs specific micro-operations.
Hardwired vs microprogrammed:Hardwired controllers are fast but complex; microprogrammed controllers are flexible but slightly slower.
Thành PhầnChức Năng
Bộ đếm chương trình (PC)Lưu địa chỉ lệnh tiếp theo
Thanh ghi lệnh (IR)Lưu lệnh đang được thực thi
Bộ giải mã lệnhPhân tích mã thao tác và toán hạng của lệnh
Bộ tạo xungTạo tín hiệu nhịp, điều khiển thời gian các thành phần
Bộ tạo chuỗi vi thao tácTạo chuỗi tín hiệu điều khiển cần thiết để thực thi lệnh
Program Status Word (PSW)The CPU status indicators
CF
0
Carry flag
PF
0
Parity flag
AF
0
Auxiliary carry
ZF
0
Zero flag
SF
0
Sign flag
TF
0
Trap flag
IF
1
Interrupt flag
DF
0
Direction flag
OF
0
Overflow flag
How operation results affect flags
Result:
0
CF:0PF:0AF:0ZF:0SF:0TF:0IF:1DF:0OF:0
Typical flag uses
🔀
Conditional jumps
JE, JNE, JG, JL and similar instructions decide jumps based on ZF, SF, and OF.
Arithmetic
Multi-word arithmetic uses CF for carry and OF for signed overflow.
🔄
Loop control
Loop instructions often use ZF to detect the loop ending condition.

3.2 Chu Kỳ Lệnh

CPU thực thi một lệnh cần trải qua một chu kỳ lệnh hoàn chỉnh, thường bao gồm:

  1. Chu kỳ lấy lệnh (Fetch): Đọc lệnh từ bộ nhớ vào IR
  2. Chu kỳ giải mã (Decode): Phân tích ý nghĩa lệnh
  3. Chu kỳ thực thi (Execute): Thực hiện thao tác
  4. Chu kỳ truy cập bộ nhớ (Memory Access): Nếu cần, truy cập bộ nhớ
  5. Chu kỳ ghi lại (Write Back): Ghi kết quả trở lại thanh ghi hoặc bộ nhớ

3.3 Vi Thao Tác

Vi thao tác là thao tác cơ bản nhất được điều khiển bởi tín hiệu điều khiển. Ví dụ, giai đoạn "lấy lệnh" có thể được phân rã thành các vi thao tác sau:

NhịpVi Thao TácTín Hiệu Điều Khiển
T1PC → MARPCout, MARin
T2MEM → MDRMEMout, MDRin
T3MDR → IRMDRout, IRin
T4PC + 1 → PCPC+1, PCin

3.4 Bộ Điều Khiển Nối Cứng vs Vi Chương Trình

Đặc TínhBộ Điều Khiển Nối CứngBộ Điều Khiển Vi Chương Trình
Cách thực hiệnMạch logic tổ hợpChuỗi vi lệnh (firmware)
Tốc độNhanhHơi chậm
Độ khó thiết kếPhức tạpĐơn giản hơn
Tính linh hoạtKém (thay đổi cần thiết kế lại mạch)Tốt (chỉ cần sửa vi chương trình)
Ứng dụng điển hìnhBộ xử lý RISCBộ xử lý CISC thời kỳ đầu

4. Hệ Thống Lưu Trữ: Tại Sao Cần Cache?

4.1 Cấu Trúc Phân Cấp Lưu Trữ

Thiết bị lưu trữ của máy tính tạo thành một cấu trúc kim tự tháp:

Storage HierarchyFrom fastest to slowest, smallest to largest
Registers
Fastest
Smallest (KB)
Cache
Very fast
Small (MB)
Memory
Fast
Medium (GB)
Disk
Slow
Large (TB)
Network/Cloud
Slowest
Unlimited
Detailed comparison
Storage levelAccess timeTypical capacityCost
Registers< 1 nsA few KBHighest
L1 cache~1 ns64 KBVery high
L2 cache~3 ns256 KBHigh
L3 cache~10 ns8 MBMedium
Memory~100 ns8-32 GBMedium-low
SSD~100 μs256 GB-2 TBLow
HDD~10 ms1-10 TBLowest
Locality principle
Programs tend to access recently accessed locations (temporal locality) and nearby locations (spatial locality)
By exploiting locality, caches can significantly improve performance.
TầngLoại Lưu TrữThời Gian Truy CậpDung Lượng Điển HìnhVị Trí
Thanh ghiSRAM<1nsVài KBTrong CPU
Cache L1SRAM~1ns32-64KBGần lõi CPU
Cache L2SRAM~3-10ns256KB-1MBTrong chip CPU
Cache L3SRAM~10-20ns2-16MBTrong chip CPU / chia sẻ
Bộ nhớ chính (RAM)DRAM~50-100ns8-64GBTrên bo mạch chủ
SSDFlash~10-100μs256GB-2TBTrên bo mạch chủ
HDDĐĩa từ~5-10ms1-10TBTrong thùng máy

Phép So Sánh Về Chênh Lệch Tốc Độ

Nếu ví CPU truy cập cache L1 như lấy một tờ giấy từ trên bàn:

  • Truy cập RAM → đi thang máy xuống cửa hàng tiện lợi dưới lầu mua giấy
  • Truy cập SSD → lái xe đến thành phố khác mua giấy
  • Truy cập HDD → đi máy bay đến quốc gia khác mua giấy

Chênh lệch tốc độ có thể lên đến hàng triệu lần!

4.2 Nguyên Lý Cache

Cache là bộ nhớ nhanh nằm giữa CPU và bộ nhớ chính, ý tưởng cốt lõi dựa trên hai nguyên lý cục bộ:

Nguyên Lý Cục Bộ

  • Cục bộ thời gian: Nếu một dữ liệu vừa được truy cập, rất có thể nó sẽ sớm được truy cập lại
  • Cục bộ không gian: Nếu một dữ liệu được truy cập, dữ liệu gần nó rất có thể cũng được truy cập

Cách Cache Hoạt Động

  1. Hit (Trúng): Dữ liệu CPU cần có trong cache, đọc trực tiếp
  2. Miss (Trượt): Dữ liệu không có trong cache, cần nạp từ bộ nhớ
Tỉ lệ hit = Số lần hit / Tổng số lần truy cập
Thời gian truy cập trung bình = Tỉ lệ hit × Thời gian cache + (1-Tỉ lệ hit) × Thời gian bộ nhớ
Cache PrinciplesThe bridge between CPU and memory
CPU core
L1 cache
64 KB~1ns
L2 cache
256 KB~5ns
L3 cache
8 MB~15ns
Main memory
16 GB~100ns
Cache operation demo
Operation log
Why does cache work? Locality principle
⏱️
Temporal locality
Recently accessed data is likely to be accessed again.
Variables inside loops
📦
Spatial locality
After one item is accessed, nearby data is likely to be accessed.
Array traversal and sequential execution
Cache mapping methods
Each memory block maps to exactly one cache line.
SpeedFastest
Hit rateLower
Implementation complexityLowest
Hit-rate calculation
Average access time = H × Tc + (1-H) × Tm
2 ns
100 ns
90%
Average access time = 12 ns

4.3 Cách Ánh Xạ Cache

CáchNguyên LýƯu ĐiểmNhược Điểm
Ánh xạ trực tiếpMỗi khối bộ nhớ chỉ được đặt vào một vị trí cố địnhĐơn giản nhanhTỉ lệ xung đột cao
Tập kết hợpMỗi khối bộ nhớ có thể đặt vào N vị trí (N-way)Cân bằng tốc độ và tỉ lệ hitTriển khai phức tạp
Kết hợp toàn phầnVị trí bất kỳTỉ lệ xung đột thấp nhấtTriển khai khó (cần so sánh tất cả tag)

4.4 Bộ Nhớ Ảo

Bộ nhớ ảo là trừu tượng quan trọng do hệ điều hành cung cấp:

  • Mỗi tiến trình đều nghĩ mình sở hữu không gian địa chỉ ảo hoàn chỉnh
  • Hệ điều hành chịu trách nhiệm dịch địa chỉ ảo thành địa chỉ vật lý
  • Các trang ít dùng có thể được đẩy ra đĩa (không gian hoán đổi)

Phép So Sánh Về Bộ Nhớ Ảo

Hãy tưởng tượng bộ nhớ ảo như quản lý phòng khách sạn:

  • Bạn (tiến trình) nghĩ cả tòa nhà là của bạn
  • Thực tế khách sạn (OS) chỉ phân cho bạn những phòng hiện tại cần
  • Phòng không ở sẽ được "đẩy ra" kho (đĩa)
  • Phòng cần có thể "đẩy vào" bất cứ lúc nào

5. Bus và I/O: "Mạch Máu" Của Máy Tính

5.1 Bus Hệ Thống

Bus là kênh dữ liệu kết nối các thành phần của máy tính:

Computer Bus SystemAddress bus, data bus, and control bus
CPU
Control unit
ALU
Address bus32 bits
Data bus64 bits
Control busControl signal
Main memory
0x0
0x1
0x2
0x3
0x4
0x5
0x6
0x7
Operation flow
Bus concepts
Address bus
CPU sends memory addresses over a one-way path.
Data bus
Transfers actual data in both directions.
Control bus
Transfers read/write and other control signals.
Loại BusChức NăngHướngĐộ Rộng Điển Hình
Bus địa chỉTruyền địa chỉ bộ nhớMột chiều (CPU→Bộ nhớ)32-bit/64-bit
Bus dữ liệuTruyền dữ liệuHai chiều32-bit/64-bit
Bus điều khiểnTruyền tín hiệu điều khiểnHai chiềuNhiều đường tín hiệu

5.2 Phân Xử Bus

Khi nhiều thiết bị đồng thời yêu cầu sử dụng bus, cần cơ chế phân xử để quyết định ai được dùng trước:

Cách Phân XửMô Tả
Phân xử tập trungBộ phân xử trung tâm quyết định thống nhất
Phân xử phân tánCác thiết bị tự thương lượng

5.3 Cách Truy Cập Thiết Bị I/O

CáchNguyên LýƯu ĐiểmNhược Điểm
Truy vấn chương trìnhCPU luân phiên kiểm tra trạng thái I/OĐơn giảnHiệu suất CPU thấp
NgắtI/O chủ động thông báo CPU sau khi hoàn thànhCPU có thể làm việc song songXử lý ngắt có chi phí
DMAThiết bị I/O truy cập trực tiếp bộ nhớCPU hoàn toàn không tham giaCần bộ điều khiển DMA
I/O Method ComparisonProgrammed I/O · Interrupt-driven I/O · DMA
Programmed I/OProgrammed I/O
Workflow
1CPU polls the I/O device status
2Device busy? Keep waiting
3Device ready, send read/write command
4CPU reads or writes data byte by byte
5Check whether transfer is complete
6If incomplete, keep polling
CPU involvementHigh
SpeedSlow
ComplexityLow
Three I/O methods compared
FeatureProgrammed I/OInterrupt-driven I/ODMA
CPU involvementInvolved throughoutOnly handles interruptsAlmost uninvolved
Data transferCPU moves each byteCPU moves each wordDevice transfers directly to memory
ProsSimple and flexible controlHigh CPU efficiencyCPU is fully freed
ConsLow CPU utilizationInterrupt overheadComplex hardware
Best forSimple or low-speed devicesLow/medium-speed devicesHigh-speed bulk transfer

5.4 Nguyên Lý DMA

DMA (Direct Memory Access) cho phép thiết bị I/O trao đổi dữ liệu trực tiếp với bộ nhớ:

How Networks ConnectThe complete path from sending to receiving
💻
Sender
192.168.1.100
📧
Mail app
📧
Application layer
Mail software creates the message content
🔐
Transport layer
TCP adds port numbers and sequence numbers
🌐
Network layer
IP adds source and destination addresses
🔌
Data link layer
Ethernet adds MAC addresses
Physical layer
Convert to electrical signals and send
🖥️
Receiver
192.168.1.200
📧
Mail app
Data encapsulation process
7Application layer
Message content: "Hello!"
6Presentation layer
Encoding: UTF-8
5Session layer
Session ID: sess_123
4Transport layer
TCP header: port 25
3Network layer
IP header: 192.168.1.100 → 192.168.1.200
2Data link layer
Ethernet frame: MAC address
1Physical layer
Bitstream: 01010101...
Network protocol stack (OSI model)
Sender
Application layer (HTTP, SMTP)
Transport layer (TCP, UDP)
Network layer (IP)
Data link layer (Ethernet)
Physical layer (electrical signals)
Receiver
Application layer (HTTP, SMTP)
Transport layer (TCP, UDP)
Network layer (IP)
Data link layer (Ethernet)
Physical layer (electrical signals)
  • Không có DMA: CPU tham gia toàn bộ quá trình truyền dữ liệu, CPU không thể làm việc khác
  • Có DMA: CPU nói với bộ điều khiển DMA "truyền từ đâu đến đâu, bao nhiêu", sau đó đi thực hiện tác vụ khác, DMA hoàn thành sẽ thông báo CPU

Phép So Sánh Về DMA

Điều này giống như đặt đồ ăn:

  • Không có DMA: Bạn tự đi siêu thị mua nguyên liệu, về nhà, rửa, nấu (tham gia toàn bộ quá trình)
  • Có DMA: Bạn gọi điện đặt hàng, người giao hàng mang thẳng đến bếp (người khác giúp bạn, bạn chỉ cần "nhận hàng" cuối cùng)

5.5 Cơ Chế Ngắt

Ngắt là cơ chế rất quan trọng trong hệ thống máy tính:

  1. Thiết bị I/O sau khi hoàn thành thao tác, gửi yêu cầu ngắt đến CPU
  2. CPU đang thực thi lệnh, sau khi hoàn thành lệnh hiện tại sẽ đáp ứng ngắt
  3. CPU lưu trạng thái hiện tại, nhảy đến chương trình xử lý ngắt
  4. Sau khi xử lý xong, khôi phục trạng thái và tiếp tục thực thi

6. Tối Ưu Hiệu Năng CPU: Kỹ Thuật Pipeline

6.1 Pipeline Lệnh

Pipeline lệnh là kỹ thuật song song giúp tối đa hóa hiệu suất CPU:

CPU Instruction PipelineFive stages: Fetch → Decode → Execute → Memory → Write Back
Fetch(IF)
Decode(ID)
Execute(EX)
Memory(MEM)
Write Back(WB)
ADD R1,R2,R3
SUB R4,R1,R5
LOAD R6,[R4]
STORE R6,[R7]
AND R8,R1,R6
Total cycles0
Completed instructions0
CPI0
Pipeline principle

Sequential execution: each instruction finishes before the next starts, so N instructions require N × 5 cycles.

Pipeline execution: multiple instructions occupy different stages at once; ideally CPI ≈ 1.

Nguyên Lý Hoạt Động Của Pipeline

Thực thi tuần tự (5 lệnh, 15 chu kỳ):
Lệnh 1: IF→ID→EX→MEM→WB
Lệnh 2:            IF→ID→EX→MEM→WB
Lệnh 3:                         IF→ID→EX→MEM→WB
...

Thực thi pipeline (5 lệnh, 9 chu kỳ):
Lệnh 1: IF→ID→EX→MEM→WB
Lệnh 2:    IF→ID→EX→MEM→WB
Lệnh 3:       IF→ID→EX→MEM→WB
...

Trong điều kiện lý tưởng, CPI (chu kỳ trên mỗi lệnh) của N lệnh ≈ 1

6.2 Hazard Trong Pipeline

Pipeline tuy nâng cao hiệu năng, nhưng cũng mang đến vấn đề Hazard (mạo hiểm):

LoạiNguyên NhânGiải Pháp
Hazard cấu trúcXung đột tài nguyên phần cứngThêm phần cứng/xen kẽ thực thi
Hazard dữ liệuLệnh sau cần kết quả của lệnh trướcChuyển tiếp dữ liệu/bong bóng/điều phối
Hazard điều khiểnLệnh nhảy thay đổi luồng thực thiKhe trễ/dự đoán rẽ nhánh

7. Tổng Kết: Máy Tính "Chạy" Như Thế Nào?

Hãy dùng thuật ngữ chuyên nghiệp để xâu chuỗi toàn bộ quy trình:

Chương trình khởi động, hệ điều hành nạp tệp thực thi từ đĩa vào bộ nhớ. Đơn vị fetch (IF) của CPU đọc lệnh từ bộ nhớ qua bus địa chỉ vào thanh ghi lệnh (IR). Bộ điều khiển giải mã lệnh (ID), nhận diện loại thao tác và tạo tín hiệu điều khiển tương ứng. Đơn vị tính toán (EX) thực hiện phép toán số học logic, nếu cần truy cập bộ nhớ thì qua bus dữ liệu truy cập bộ nhớ (MEM), cuối cùng kết quả được ghi lại (WB) vào thanh ghi hoặc bộ nhớ. Toàn bộ quá trình được điều khiển bởi đồng hồ, chuỗi vi thao tác do bộ điều khiển phát ra điều phối các thành phần làm việc có trật tự.


Đọc Thêm

Chủ ĐềNội Dung Khuyến Nghị Học Sâu
Kiến trúc máy tính《Computer Organization and Design: The Hardware/Software Interface》- Patterson & Hennessy
Vi kiến trúc CPU《Computer Systems: A Programmer's Perspective》- Bryant & O'Hallaron
Kiến trúc tập lệnhSổ tay kiến trúc ARMv8, Sổ tay Intel x64
Nguyên lý cacheGiao thức nhất quán cache (MESI), chiến lược ghi cache
Hệ điều hànhChương tiếp theo 《Hệ Điều Hành》

Bước Tiếp Theo

Bây giờ bạn đã nắm vững kiến thức chuyên nghiệp về nguyên lý tổ chức máy tính. Tiếp theo có thể học: