hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
      • NodeJS
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
      • Spring Boot
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Lập trình Python
    • Git và Github
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
    • Mạng và truyền thông
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Kiến trúc máy tính
Kiến trúc máy tính – Bài 2: CPU thực hiện phép tính 5 + 3 như thế nào?
Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache

Kiến trúc máy tính – Bài 2: CPU thực hiện phép tính 5 + 3 như thế nào?

  • 19-10-2026
  • Toanngo92
  • 0 Comments

Thay vì học thuộc tên thanh ghi, hãy theo dõi một phép cộng từ lúc lấy lệnh đến khi lưu kết quả. Qua ví dụ 5 + 3, bạn sẽ hiểu vai trò của ALU, thanh ghi, đơn vị điều khiển và chu kỳ lệnh.

Dành cho người mới: đọc ví dụ trước, sau đó đối chiếu với sơ đồ và thuật ngữ. Các mô hình đơn giản trong bài dùng để học nguyên lý, không mô tả đầy đủ mọi CPU hay hệ điều hành.

Trong bài này

  1. Một CPU minh họa rất nhỏ
  2. Chương trình cộng hai số
  3. Theo dõi giá trị thay đổi từng bước
  4. Chu kỳ lấy lệnh – giải mã – thực thi
  5. Toán hạng nằm ở đâu?
  6. ALU, cờ trạng thái và luồng điều khiển
  7. RISC, CISC và điều người mới cần nhớ
CPU minh họa lấy 5 và 3 từ bộ nhớ, cộng trong ACC rồi ghi kết quả 8.
Hình 2. Sơ đồ minh họa nguyên lý; không phải sơ đồ đấu nối phần cứng thực tế.

Mục lục

  • Một CPU minh họa rất nhỏ
  • Chương trình cộng hai số
  • Theo dõi giá trị thay đổi từng bước
  • Chu kỳ lấy lệnh – giải mã – thực thi
  • Toán hạng nằm ở đâu?
  • ALU, cờ trạng thái và luồng điều khiển
  • RISC, CISC và điều người mới cần nhớ
  • Những điều cần nhớ
  • Tài liệu đọc thêm

Một CPU minh họa rất nhỏ

Ta giả sử một máy học tập có thanh ghi tích lũy ACC, bộ đếm chương trình PC và thanh ghi lệnh IR. ACC giữ giá trị đang tính; PC giữ địa chỉ dùng để lấy lệnh tiếp theo trong mô hình; IR giữ lệnh vừa lấy để giải mã. ALU làm phép cộng, trừ và các phép logic. CU phát tín hiệu để các bước diễn ra theo đúng thứ tự.

ACC, LOAD, ADD và STORE dưới đây thuộc mô hình minh họa, không phải mã lệnh x86 hoặc ARM có thể chạy nguyên văn. Địa chỉ và giá trị cũng chỉ dùng cho ví dụ.

Chương trình cộng hai số

Ô dữ liệu 100 chứa 5
Ô dữ liệu 101 chứa 3
Ô dữ liệu 102 dùng lưu kết quả

Địa chỉ lệnh 0: LOAD 100
Địa chỉ lệnh 1: ADD 101
Địa chỉ lệnh 2: STORE 102
Địa chỉ lệnh 3: HALT

LOAD 100 nghĩa là đọc nội dung ô 100 vào ACC, không phải đặt số 100 vào ACC. ADD 101 cộng nội dung ô 101 với ACC. STORE 102 ghi giá trị ACC xuống ô 102. HALT kết thúc mô phỏng; trong hệ thống thật việc dừng chương trình và trạng thái CPU còn phụ thuộc hệ điều hành và tập lệnh.

Theo dõi giá trị thay đổi từng bước

BướcLệnhACC sau thực hiệnÔ 102PC sau bước
Ban đầuChưa thực hiện0Chưa dùng0
1LOAD 1005Chưa dùng1
2ADD 1018Chưa dùng2
3STORE 102883
4HALT88Dừng mô phỏng

Bảng giúp phân biệt dữ liệu đang ở thanh ghi và dữ liệu đã được ghi vào bộ nhớ. Sau ADD, ta có 8 trong ACC; đến STORE, kết quả mới được ghi vào ô 102. Đọc lại ô 100 vẫn được 5 vì chương trình chưa sửa ô đó.

Ở đây PC tăng 1 vì ta quy ước mỗi lệnh chiếm một ô lệnh. CPU thật tăng địa chỉ theo độ dài lệnh; lệnh nhảy, gọi hàm hoặc ngoại lệ có thể làm thay đổi luồng thực hiện. Không được áp dụng PC + 1 cho mọi kiến trúc.

Chu kỳ lấy lệnh – giải mã – thực thi

  • Lấy lệnh: dùng địa chỉ lệnh để đọc mã lệnh vào CPU.
  • Giải mã: nhận ra cần nạp, cộng, lưu hay thay đổi luồng chương trình.
  • Lấy toán hạng: xác định giá trị đầu vào nằm ở đâu.
  • Thực thi và ghi kết quả: thực hiện phép toán hoặc thao tác dữ liệu cần thiết.

Trong mô hình thanh ghi truyền thống, MAR giữ địa chỉ truy cập bộ nhớ; MDR, đôi khi gọi MBR, giữ dữ liệu trao đổi. Bạn có thể xem chúng là hai nhãn “đọc ở đâu?” và “đọc được gì?”. Chúng giúp mô tả nguyên lý, không có nghĩa ứng dụng thông thường được quyền đọc, ghi trực tiếp các thanh ghi nội bộ này.

Một lệnh máy có thể cần nhiều bước nhỏ. Mỗi bước không nhất thiết bằng một chu kỳ xung nhịp, và một lệnh cũng không nhất thiết hoàn thành trong một nhịp. CPU hiện đại có thể chồng lấp các giai đoạn của nhiều lệnh.

Toán hạng nằm ở đâu?

Cách minh họaÝ nghĩaGiá trị nhận được
Hằng trực tiếp: #5Dùng chính số viết trong lệnh.5
Thanh ghi: R1Dùng giá trị đang ở R1.Nếu R1 = 5 thì được 5.
Bộ nhớ: [100]Dùng nội dung ô nhớ có địa chỉ 100.Nếu ô 100 chứa 5 thì được 5.
Gián tiếp: [R1]Dùng R1 làm địa chỉ để đọc bộ nhớ.Nếu R1 = 100, đọc nội dung ô 100.

Ký hiệu trên chỉ phục vụ so sánh. Sai lầm phổ biến là nhầm địa chỉ với giá trị: một ô nhớ có địa chỉ 100 hoàn toàn có thể chứa 5, chứ không phải 100. Địa chỉ cơ sở cộng độ dời giúp truy cập các phần tử của mảng; cách mã hóa cụ thể phụ thuộc tập lệnh.

ALU, cờ trạng thái và luồng điều khiển

Ngoài cộng và trừ, ALU thường tham gia các phép AND, OR, XOR, dịch và so sánh. Kết quả có thể làm thay đổi cờ trạng thái. Ví dụ Zero cho biết kết quả bằng 0 trong mô hình đang học; cờ Carry liên quan phép toán không dấu, còn Overflow liên quan tràn số có dấu. Hai cờ này không đồng nghĩa.

Với số có dấu 8 bit, 127 + 1 vượt phạm vi −128 đến 127. Chuỗi bit kết quả trong phép cộng 8 bit là 10000000; nếu diễn giải bù 2 thì là −128. Đây là ví dụ vì sao phải quan tâm độ rộng và kiểu số, không phải phép cộng toán học 127 + 1 bằng −128.

Các lệnh nhảy có điều kiện sử dụng kết quả so sánh hoặc trạng thái để chọn nhánh. Điều kiện if và vòng lặp trong chương trình cấp cao cuối cùng cần cơ chế điều khiển luồng tương ứng, dù cách dịch cụ thể có thể khác nhau.

RISC, CISC và điều người mới cần nhớ

RISC và CISC là các hướng thiết kế tập lệnh. Không thể kết luận CPU nào nhanh hơn hoặc tiết kiệm điện hơn chỉ bằng hai nhãn này. Hiệu năng còn phụ thuộc cách triển khai, bộ nhớ, phần mềm và loại công việc.

Tự kiểm tra: nếu đổi ô 101 từ 3 thành 7, ACC sau ADD và ô 102 sau STORE sẽ bằng bao nhiêu? Nếu bỏ STORE, ô 102 có tự nhận kết quả không? Bạn chỉ cần theo bảng, không cần cài công cụ mô phỏng.

Những điều cần nhớ

  • Thanh ghi giữ dữ liệu CPU đang sử dụng trực tiếp; ALU thực hiện phép toán; CU tổ chức các bước.
  • Phải phân biệt địa chỉ và nội dung tại địa chỉ đó.
  • Chu kỳ lệnh là mô hình học nguyên lý; CPU hiện đại có cách triển khai phức tạp hơn.

Tài liệu đọc thêm

  • Intel — tài liệu kiến trúc Intel 64 và IA-32

← Bài trước · Bài tiếp theo →

Bài viết liên quan:

Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache
Kiến trúc máy tính – Bài 6: Từ kiến trúc PC đến x86-64 và ARM hiện nay
Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache
Kiến trúc máy tính – Bài 5: Thiết bị vào/ra, ngắt, DMA và RAID
Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache
Kiến trúc máy tính – Bài 4: RAM, cache và bộ nhớ ảo khác nhau thế nào?
Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache
Kiến trúc máy tính – Bài 3: CPU điều khiển và trao đổi dữ liệu qua bus thế nào?
Kiến trúc máy tính: CPU, RAM, ALU, bus và bộ nhớ cache
Kiến trúc máy tính – Bài 1: Máy tính hoạt động như thế nào?

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

CSS cơ bản – 20 bài từ HTML đến website responsive với Flexbox, Grid và mobile-first

CSS cơ bản – Bài 05: Đơn vị và kích thước: px, rem, %, min và max

CSS cơ bản – 20 bài từ HTML đến website responsive với Flexbox, Grid và mobile-first

CSS cơ bản – Bài 02: Selector và class: chọn đúng phần tử cần sửa

CSS cơ bản – 20 bài từ HTML đến website responsive với Flexbox, Grid và mobile-first

CSS cơ bản – Bài 01: Kết nối CSS với HTML và sửa quy tắc đầu tiên

CSS cơ bản – 20 bài từ HTML đến website responsive với Flexbox, Grid và mobile-first

CSS cơ bản – Bài 20: Hoàn thiện website và sửa lỗi bằng DevTools

CSS cơ bản – 20 bài từ HTML đến website responsive với Flexbox, Grid và mobile-first

CSS cơ bản – Bài 03: Vì sao CSS không có tác dụng? Cascade và specificity

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×