Tin học lớp mầm: CPU là gì, CPU hoạt động ra sao

Duy Luân
29/5/2020 12:24Phản hồi: 128
Tin học lớp mầm: CPU là gì, CPU hoạt động ra sao


Về cơ bản thì “máy tính" nào cũng cần có một bộ xử lý trung tâm (Central Processing Unit - CPU). Máy tính ở đây có thể là cái laptop, cái desktop bạn đang xài, có thể là cái điện thoại, tablet, TV, hay thậm chí tới cái router mạng nhà bạn xài giờ cũng có “máy tính” trong đó rồi. Nguyên lý hoạt động của chúng đều giống nhau hết.

CPU hoạt động ra sao.jpg

Trước hết thì đây là sơ đồ cơ bản nhất của 1 cái máy tính, tùy theo các nhà sản xuất, các loại kiến trúc khác nhau thì sẽ có thêm nhiều thứ trung gian. Nhưng về cơ bản thì CPU, RAM, các loại ổ lưu trữ và các giao thức của tụi nó với nhau thì không đổi.

Trong bài này, chúng ta sẽ tập trung chủ yếu vào CPU, cách nó xử lý dữ liệu và trao đổi dữ liệu với các loại bộ nhớ khác trong máy tính. Trước khi đi sâu vào CPU, bạn cần biết rằng trong máy tính người ta có 2 loại bộ nhớ:

  • Primary Storage, tạm gọi là bộ nhớ chính: nó cần chứa dữ liệu tạm thời để máy tính chạy và thực thi các chương trình, đây chính là RAM đấy, hoặc các loại cache (L1, L2, L3…)
  • Secondary Storage, tạm gọi là bộ nhớ thứ cấp, để lưu trữ dữ liệu dài hạn. Nó có thể là HDD, SSD của chúng ta, ngày xưa thì có ổ đĩa quang CD / DVD, đĩa mềm…

Quay trở lại với CPU và các thành phần chính của nó



Control Unit



Control Unit của CPU chứa các mạch điện, nó dùng tín hiệu điện để thực thi các lệnh mà CPU được giao cho làm. Có thể xem Control Unit như một ông đội trưởng, bản thân nó không đi làm việc mà nó sẽ điều khiện việc tới đúng chỗ (là các thành phần khác trong CPU). Control Unit sẽ nói chuyện với các bộ phận tính toán khác và cả bộ nhớ nữa.

Trong một thiết kế CPU, Control Unit có thể được tách ra thành nhiều linh kiện nhỏ hơn, bao gồm đơn vị thực thi, đơn vị dự đoán cấu trúc if…then…else (branch predictor). Branch predictor cố gắng đoán xem điều kiện nào sẽ được đáp ứng để lấy tiếp dữ liệu cho các phép tính sau đó. Nếu nó đoán đúng, dữ liệu được đưa vào đúng và CPU có thể thực thi tiếp. Nếu nó đoán sai, CPU sẽ phải đi lấy dữ liệu từ các bộ nhớ khác, tạo ra một khoảng thời chờ, tức là việc tính toán bị chậm đi.


Arithmetic/Logic Unit (ALU)



Bộ phận này chứa các mạch dùng để thực thi các phép tính về logic và số học. Cục ALU này có thể làm 4 phép tính cơ bản là: phép cộng, trừ, nhân và chia. Còn các phép logic thì chủ yếu là dạng so sánh, ví dụ như so sánh lớn, bé, bằng, lớn hơn hoặc bằng, so sánh ký tự… Nếu bạn nghĩ lại thì đây cũng chính là những phép toán cơ bản nhất mà bạn được học hồi tiểu học. Sau này, dù là bạn tính toán đa thức, tính toán ma trận, vector gì đấy thì cũng quy về 4 phép tính cơ bản và các phép so sánh logic mà thôi.

Khi ALU tính toán ra kết quả, máy tính sẽ dùng kết quả đó để làm tiếp chuyện của nó. Từ việc tính toán xem 1+1 bằng mấy, cho đến việc thuật toán quyết định xem có nên hiển thị nút Lưu trong các trình biên tập văn bản hay không, hay bạn có đang tiêu tiền quá số dư trong thẻ hay không. Tất cả đều nhờ ALU.
die-alu-block-diagram.png

Quảng cáo


Cấu tạo của một con chip Intel 8008 ngày xưa, khi mà chúng ta còn có thể quan sát được các bộ phận riêng lẻ của 1 nhân. Ngày nay các thành phần này đã được thu nhỏ, cực kì nhỏ rồi. Trong sơ đồ này, Instruction Decode chính là Control Unit.


Floating Point Unit (FPU)



FPU có thể bao gồm nhiều ALU trong đó, để tăng tốc độ tính toán. FPU chủ yếu thực hiện các phép tính với số thập phân. FPU bắt đầu xuất hiện trong các CPU Intel và Motorola vào thập niên 1990.

Lại một lần nữa, các phép tính số thập phân phức tạp thực ra cũng được cấu thành từ một chuỗi các phép tính đơn giản cộng trừ nhân chia đúng không nào?


Register


Quảng cáo


Đây là một bộ phận rất thú vị của CPU, mà nhiều bạn chưa biết. Register thực chất là một loại bộ nhớ, nó là loại bộ nhớ nhanh nhất trong máy tính vì nó được sinh ra trên cùng 1 đế bán dẫn với CPU. Người ta không xem register là một loại bộ nhớ chính vì nó thuộc về CPU nhiều hơn. Bạn có thể xem register như là tờ giấy, mỗi khi bạn tính toán gì thì bạn sẽ “đọc đề bài” từ từ giấy này, và bạn làm nháp, bạn ghi kết quả cũng vào tờ giấy đó.

Máy tính thường sẽ có nhiều register, ví dụ như:
  • Accumulator: thu thập kết quả của các phép tính
  • Address register: theo dõi các ô địa chỉ trên RAM để CPU biết mà truy cập. Trên RAM mỗi ô nhớ đều có một địa chỉ để chứa một số dữ liệu, phải vậy thì CPU mới biết cái gì nằm ở đâu, giống như bạn đi tìm đường dựa vào địa chỉ vậy đó
  • Storage register: lưu trữ dữ liệu tạm
  • General-purpose register: dùng cho nhiều mục đích khác nhau

Lưu ý: những thành phần chính nói trên là những thứ nằm trong 1 nhân CPU. Ngày nay chúng ta có một “CPU” với nhiều nhân bên trong, rồi con “CPU” còn có thêm cả chip đồ họa tích hợp, các loại bộ nhớ cache và nhiều linh kiện khác nữa. Nhưng về cơ bản thì cách hoạt động của nhân CPU là không thay đổi từ xưa giờ. Như hình bên dưới là sơ đồ của một CPU Intel, nó có 4 nhân, có GPU tích hợp, và có bộ nhớ cache L3 chia sẻ giữa các nhân, và các controller để điều khiển bộ nhớ, màn hình này kia.
Ivy-Bridge-Die-Chart-Core-i7-3770K-1024x426.jpg

CPU thực thi các lệnh như thế nào?


Đa số máy tính hiện nay chỉ có thể tính 1 phép tính một lúc, có điều nó làm điều đó cực nhanh. Giống như khi bạn đang tính 1+1 thì bạn không có đủ năng lực để nghĩ xem 4 x 4 bằng bao nhiêu, bạn phải làm xong phép tính đầu tiên đã rồi mới làm tiếp. Máy tính làm giống vậy nhưng hơn bạn tỉ lần 😁

Mỗi một lệnh được đưa vào CPU thì được gọi là 1 instruction. Bạn click chuột vào icon trên màn hình thì thực chất rất nhiều instruction được dịch ra và chuyển xuống cho CPU xử lý, sau đó máy tính mới biết để mà chạy phần mềm tương ứng lên cho bạn xài. Phép cộng là 1 instruction, phép trừ cũng là 1 instruction, lấy dữ liệu từ ô địa chỉ X trong RAM cũng là 1 instruction.

Một bộ các instruction mà CPU hỗ trợ (có thể hiểu được) thì gọi là Instruction Set, và CPU máy tính của chúng ta dùng Instruction Set x86, còn CPU trên điện thoại thì có bộ lệnh riêng của ARM. Ngày xưa khi Apple dùng CPU riêng của họ (PowerPC) thì nó cũng có bộ lệnh riêng, không tương thích với x86 nên ngày xưa Windows không chạy được trên các máy Mac PowerPC là thế. Sau này khi Apple chuyển sang dùng chip Intel hỗ trợ x86 thì mới có vụ chạy được Windows.

Trước khi 1 instruction được thực thi, dữ liệu để thực hiện và cách thực hiện sẽ phải được đưa vào bộ nhớ. Dữ liệu này có thể được lấy từ register, nếu register không có thì phải lấy từ cache của CPU, mà cache không có nữa thì phải vô RAM lấy. RAM không có nữa thì phải đi xuống SSD hay HDD lấy. Cứ qua 1 bước như vậy thì tốc độ lại chậm đi vì phải mất thời gian đi tìm, chưa kể tốc độ truy xuất của loại bộ nhớ cũng giảm dần theo từng bước.

Quy trình thực thi sẽ như thế này:

instruction_cycle.jpg

Trong đó bước Execute và Store thì thường được xếp chung vào bước thực thi, và thời gian thực thi này gọi là Execution Time (E-Time).

Mỗi con CPU có một bộ tạo dao động, nó sẽ tạo ra các xung nhịp với tốc độ cố định để đồng bộ tất cả các thành phần của CPU khi chúng thực thi các instruction. Mỗi lần thực thi sẽ đi qua ít nhất 1 quy trình như trên, gọi là 1 cycle. Cycle là đơn vị nhỏ nhất cho việc tính toán của CPU.

Theo như thông tin trên thì 1 cycle chỉ tính toán được 1 instruction (scalar), nhưng các vi xử lý ngày nay có thể tính toán được nhiều instruction trong một cycle nhờ việc ứng dụng cách thức song song trong mỗi nhân CPU (cách thức này gọi là superscalar). Con chip x86 đầu tiên thuộc dạng superscalar là Pentium P5, theo Wikipedia. Ngày nay các CPU Core i của Intel, Ryzen của AMD và đa số mọi CPU dùng cho thiết bị tiêu dùng đều là superscalar. Chỉ những CPU cực kì tiết kiệm điện, CPU trong các thiết bị nhúng… mới còn dùng dạng scalar.

Để biết CPU có mạnh hay không, người ta thường so sánh số instruction có thể được thực thi. Đơn vị này gọi là Instruction-Per-Cycle (IPC). Với cùng xung nhịp, một con CPU thực thi được 8 IPC thì yếu hơn so với con CPU khác chạy được 8,5 IPC. IPC cũng là cái mà AMD đang tích cực cải thiện cho kiến trúc Zen của mình (dùng trong các chip Ryzen, anh em xem thêm trong bài Giải thích vì sao AMD dạo này hot thế).

Bất kì thứ gì bạn làm trên máy tính đều được chuyển thành các instructions, và bạn sẽ không bao giờ có thể thấy được quy trình như trên vì CPU làm chuyện đó rất rất nhanh. Chưa kể hiện nay các CPU còn có nhiều nhân, nhiều luồng nên tụi nó có thể làm chuyện này nhanh hơn nữa.

Xong, tới đây bạn hiểu được cơ bản về cách CPU chạy và tính toán rồi nhé, chúc anh em vui.
128 bình luận
Chia sẻ

Xu hướng

Phu Alia
ĐẠI BÀNG
4 năm
Nghe rất đơn giản nhưng sinh viên trong trường đại học trầy da tróc vãy với môn tinh học này
@nhqdat đấy do công việc bạn ko dùng tới, chứ người nào càng làm cao càng thấy những thứ căn bản là quan trọng như nào
Những thứ căn bản là thứ ko làm ra tiền nhưng không phải là ko quan trọng, nó là nền cho những thứ quan trọng ra tiền phát triển lên
@pro744 Móc lốp ăn tiềng thôi thím ơi !
Ý thím là xe từ Đức, Anh, Mỹ, Nhật, Hàn về nước ta, chúng ta phải xúm vào kiểm định, để xem nó có phù hợp với đường ổ gà nhấp nhô bền vững của nước ta không, nó có hòa nhập được với sự ô nhiễm môi trường của thủ đô nước ta không đó hả ?
@Johnny Đạt Phú bạn có chắc xe nhập khẩu từ Merc, BMW họ sản xuất ko có lỗi ko. Nếu ko có lỗi chắc ng ta đã ko bao giờ phải thu hồi xe nhỉ.
Thôi đừng cãi chầy cối nữa, bt ko sao, tới lúc tai nạn lại đổ lỗi tại sao cho phép xe lỗi lưu thông đâm chết người? Tai nạn đâu chỉ ảnh hưởng tới người khác, nó ảnh hưởng đến cả bản luôn. Đừng bảo bỏ tiền tỷ mua xe mà tiếc vài triệu đăng kiểm?
@pro744 Bản chất là bỏ vài triệu đăng kiểm để an toàn cho bản thân, hay là để cúng tiềng cho cán bộ cho con đi du học Mỹ ???
VIP năm nay bao tuổi mà hồn nhiêng yêu đời vại ^_^
Video lên sau nha anh em, nay chủ nhật hơi lười 😆
dpcngt
TÍCH CỰC
4 năm
@Duy Luân Lớp mầm này đọc hơi khoai 😂
nnquangit
TÍCH CỰC
4 năm
@Duy Luân Lần sau làm thêm bài chế tạo CPU như thế nào để anh em còn biết đường làm 😃
Thanhzo
TÍCH CỰC
4 năm
@Duy Luân Với những bài viết như này, mình càng thấy yêu mod duy luân. Hehe.
@nnquangit Có nè 😁 tech hơi cũ nhưng về cơ bản quy trình là giống nhau
min2244
ĐẠI BÀNG
4 năm
Duy Luân viết được như vầy thì thi môn kiến trúc máy tính chắc được trên 10đ nhỉ
Làm gì có con CPU nào chạy hơn 1 instruction mỗi clock đâu bạn ơi, mình nhắc bên bài AMD dạo này hot rồi đó.
min2244
ĐẠI BÀNG
4 năm
@bluesilhouettes Có 3 levels của concurrency & parallelism. Thread-level concurrency, instruction-level parallelism, single-instruction multiple-data (SIMD) parallelism.
1 clock cycle xử lý nhiều instructions thuộc nhóm instruction-level parallelism. Tầm năm 1978 chip của intel đã xử lý được 2-4 instructions/clock cycle (gọi chung là superscalar chip).
Tham khảo: Bryant & O'Hallaron (2016). Computer Systems: A Programmer's Perspective. Pearson.
min2244
ĐẠI BÀNG
4 năm
@香茅烤肉 Mình nhớ ALU làm được phép tính trừ 2 số hệ nhị phân (2's complements representation) bằng cách cộng với một số âm (binary bắt đầu bằng số 1 hoặc ký tự hexadecimal 'F'). Theo mình, tính cộng và trừ đều cùng 1 lệnh mà ra chứ không thể nói nó không biết trừ.
Tính nhân, chia thì hình như dùng vòng lặp (loop) trên chip ALU. Không rõ có chip nào thiết kế riêng dùng cho nhân chia không.

https://en.wikipedia.org/wiki/Arithmetic_logic_unit#Arithmetic_operations
香茅烤肉
ĐẠI BÀNG
4 năm
@min2244 Chính xác, phép trừ chính là phép cộng với 1 số bù 2 nên mình vẫn coi là chỉ đang thực hiện phép cộng. Ví dụ như 10 trừ 5, thực chất là việc 10 cộng với -5, mà -5 lại là số bù 2 của số 5. Số bù 2 chính là 2's complements bạn nói ở trên đó.
@min2244 ALU support nhiều operation khác nhau chứ không chỉ +/-. Trên ALU có cái Opcode (Operation code) để chọn phép tính ( cộng trừ nhân chia ...).
Những core xử lý nhỏ như ARM Cortex-M, MSP320, đều có mạch nhân, mạch chia, x86/64 thì khỏi nói, chắc chắn có.
Phép nhân tùy thuộc vào kiểu của toán hạng có thể kéo dài vài clock cylce (do đòi hỏi vòng lập)
Phép cộng/trừ số nguyên native thì thông thường chỉ 1 clock thôi.
khó quá. thôi chỉ cách tải RAM đi mod ơi, máy đang thiếu. 😅
@caffeinezzZ Lên Google gõ tải thêm ram cho máy tính nhé, xong tải về cài đặt vô, khởi động lại máy là được thôi =))
Nhớ năm xưa môn này cải lộn với cô giáo ... cô tưởng mình bở ... ô chú làm bên it chỉ mình cũng rành rồi ... vô đốp cháp với bà cô ... Sui là khi đi bảo vệ luận văn lại gặp bà nội đó ... 8đ về chỗ
zuzutpk
ĐẠI BÀNG
4 năm
@Bão Sài Gòn Cũng may bà cô này cho 8đ, gặp bà cô khác không có tâm là cho 4đ cái tội giỏi hơn cô ! ai đời giỏi thì giỏi mà dám chơi tay đôi với cô ! sao không giữ thể diện cho cô chứ hả? mai mốt làm gì thì làm cũng chừa đường lùi đi nhé ! biết đâu mai mốt ra đường gặp bà nào chơi tay đôi không nhường nhịn về sau mới biết là má vợ tương lai lúc đó bả thu hồi con gái trả về nơi sản xuất là toi nhé !!!! ( à mà bác có gia đình chưa nhể ?) vui tí nhé , bác thông cảm !!!
@zuzutpk Ha ha 😆😆😆
@Bão Sài Gòn Cái này là vạ miệng đến tức thì😁 vẫn may vì còn được điểm 8
Máy công ty của con vợ mình không hiểu sếp bị ngu hay gì mà lắp cái máy Core i5 mà có 4gb Ram. Làm cứ mỗi lần mở cái gì là nó lag vkl 😔
@palmtj27 Cho tự bỏ tiền nâng cấp thì câu chuyện đã khác 😔
@palmtj27 Ram 2g chạy ầm ầm nè
@palmtj27 Hồi trước máy tính tui 2 GB ram nhưng vẫn cài và dùng autocab, 3dsmax, photoshop... đủ kiểu, vấn đề duy nhất là máy tính kêu như máy cày vậy.
@Wolfrain Cty bác i5 là còn ngon hơn khối ae đấy 😆
có người nói AMD thiếu công nghệ 😁 đặc biệt là bạn minhthu... gì gì đó kêu AMD cùi hơn intel tỷ lần cơ, nhìn đống instructions thấy hoa mắt r
Untitled.png
ngonlua1990
ĐẠI BÀNG
4 năm
@zozolozozove Cha đẻ Linux chuyển từ Intel sang AMD thì ko phải cùi rồi
axyzoptions
ĐẠI BÀNG
4 năm
@zozolozozove Ơ sao con R5 1500x của mình cũng có nhiêu instruction thế nhỉ? Loại workstation mình nghĩ phải nhiều lệnh hơn chút chứ.
Capture.PNG
@axyzoptions nhiều intructions hơn con intel i9 10th là được r bác 😃
Untitled.png
Bài viết hay quá...bây giờ mình đã biết cách CPU hoạt động rồi, chừng nào có bài hướng dẫn sản xuất CPU dậy mod 😃
@ngườidavàng Chờ mai qua gọi điện hỏi TSMC là biết liền à.
Trời ơi lớp mầm 🙃🙃🙃
@P.W Lớp mầm nhưng tui vẫn chưa hiểu nè
@P.W Cái này vở lòng chứ gì nữa bác. Học computer architecture sẽ tìm hiểu về NAND, AND, OR, NOT gate rồi Boolean algebra, discrete structure, machine language... Lúc đó tha hồ ngồi khóc. Nhớ lúc học cái này ông thầy ổng dùng thời gian ngồi khóc trong restroom để đo độ khó của project 😃
@P.W Đoạn nào khó quá bỏ qua 😁
Bài viết hay quá. Lớp mầm đến lớp lá chắc có công thức tính toán peformance cpu để lựa chọn cpu phù hợp ứng dụng
Lớp mầm này đc đấy mod, hồi trc cũng có học, mà chỉ là lớp cơm nát thôi 😁
được dịp lớp mầm bác phổ biến kiến thức về CpU AMD cho em mở mang với . trước giờ chỉ biết intel và cũng ko biêts lắp CPU AMD thì có phải mua board riêng biệt ko ? và i3-5-7 thì tương đương với AMD nào
@palmtj27 Cũng hóng chờ các cao nhân. Hình như AMD rẻ hơn khi giống Intel
cabk
TÍCH CỰC
4 năm
@palmtj27 kiến trúc chip intel x64 (amd64) của AMD mà.
BenGlo
CAO CẤP
4 năm
@cabk Nhưng gốc thì vẫn là x86 mà
liukang03
ĐẠI BÀNG
4 năm
hay nha bac
Say what???
ĐẠI BÀNG
4 năm
Làm 1 bài về cách hoạt động của các transitors đi mod Luân. Để dân tình hiểu hơn các transitors tính toán như nào 😗😗
TRK
TÍCH CỰC
4 năm
Đọc xong như chưa đọc!
@TRK Tui cũng vậy. Chỉ biết cpu giống sếp thôi.
đọc song vẫn chưa hiểu cpu có thể chuyển ra mã code 00111000 như nào 😁
BenGlo
CAO CẤP
4 năm
@vanlinh2905 Cái khó hiểu là nó dịch ra kiểu gì?
min2244
ĐẠI BÀNG
4 năm
@soncon_cuchuoi9x Mình cũng từng thắc mắc như bạn. Thật ra nó đâu có chuyển. Nó luôn ở định dạng binary. Còn chữ viết hay con số mình nhìn thấy trên màn hình chẳng qua là nó render binary ra thành hình ảnh cho mình nhìn thôi.
min2244
ĐẠI BÀNG
4 năm
@BenGlo Có một ông kỹ sư thiết kế ra chip sau đó ngồi viết tay ra câu lệnh 010101... để tạo ra 1 chương trình đơn giản như cộng trừ nhân chia (embedded programming). Sau đó 1 ông kỹ sư khác dựa trên chương trình đơn giản đó để lập trình ra chương trình hữu ích hơn như cộng (nối) hai chữ lại với nhau hoặc làm ra hệ điều hành (system programming). Xong 1 ông khác lại dựa trên các chương trình trước để lập trình tiếp....cho đến lúc một ông kỹ sư không cần quan tâm 0101 là gì nữa nhưng vẫn lập trình được web tinhte cho anh em xem (application programming). đây là phương pháp dùng abstraction barrier.
Còn làm sao hardware cộng được 2 số nhị phân thì phải hiểu vật lý điện tử. Ngắt đóng mạch gì đó mình cũng ko rành.
Giải thích cho dễ hiểu vậy thôi chứ thực tế hơi khác 1 chút.
@min2244 bytecode<-hợp ngữ<-C<-C++<-Java,C#....
Đọc xong chả hiểu gì
secretboy
ĐẠI BÀNG
4 năm
Đọc bài này mới biết đc loài người thông minh tới mức nào
@secretboy Loài động vật thượng hạ đẳng nhất =))))

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019