Hướng dẫn  Thế nào là CPU

Bim Sponges
Chào các bạn, có vẻ mình hay viết về các khái niệm, một phần để mình tự ôn lại - tự học hỏi thêm và chia sẻ tới các bạn đã biết lẫn chưa biết để cùng nhau củng cố vốn kiến thức, một phần mình muốn diễn đàn chúng ta phát triển hơn nữa và hướng tới tất cả mọi người. Hôm nay mình xin phép dùng vốn kiến thức ít ỏi lẫn sự to lớn của google để viết về khái niệm CPU.
Mình mong nếu bài viết lần này có thiếu sót hoặc sai, các bạn có kiến thức tốt hơn sẽ đóng góp ý kiến nhé.

Lưu ý: đây chỉ là những gì cơ bản nhất về CPU mà mình đã phải viết - tổng hợp - nghiên cứu từ 12 giờ đêm tới gần sáng, còn những cái nâng cao nếu nghiên cứu viết ra chắc tới vài ngày nên mình xin hơi lười hoặc sẽ viết trong một lúc nào đó mình siêu rãnh .. hihi


------------------------------------------------------
CPU (Central Processing Unit - bộ xử lý, bộ xử lý trung tâm, bộ vi xử lý)



Mang chức năng xử lý các lệnh nhận được từ phần cứng lẫn phần mềm chạy trong và ngoài máy tính (có kết nối với máy tính) bằng cách thực hiện các phép tính về số học, logic, so sánh và các hoạt động nhập/xuất dữ liệu (Input/Output) cơ bản. Về cơ bản, khi nói về CPU là nói về một bộ phận xử lý và điều khiển trung tâm khác với các thành phần bên ngoài như bộ nhớ, mạch điều khiển.
Bạn nghĩ CPU hiện tại có khác với CPU trong quá khứ không ? Xin thưa là có và không. Có là nói về hình thức bề ngoài, cách thiết kế và cách hoạt động. Không là nói về các hoạt động cơ bản đã định nghĩa lên tên nó. Thành phần chủ yếu gồm các ALU (Arithmetic Logic Unit - thành phần số học) để thực hiện các phép tính về số học và logic, các thanh lưu các tham số giúp ALU tính toán - lưu trữ các kết quả trả về, bộ phận kiểm soát giúp nạp lệnh từ bộ nhớ để xử lý các hoạt động phối hợp giữa các thành phần trong CPU. Thực ra chúng ta có thể hiểu được cách hoạt động của CPU qua 3 bước:
- Tìm nạp: khi CPU nhận được một lệnh, lệnh được biểu diễn dưới dạng một chuỗi các số và được chuyển tới CPU từ RAM nhưng nó chỉ là một phần nhỏ của bất kỳ thao tác nào nên CPU phải biết được lệnh nào sẽ là lệnh tiếp theo. Địa chỉ các lệnh được lưu giữ bởi các PC (Program Counter - bộ đếm chương trình). Sau đó được đặt và lưu trữ vào IR (Instruction Register - thanh ghi lệnh). Dựa theo số lệnh mà độ dài của PC sẽ tăng lên.
- Giải mã: dĩ nhiên là nó sẽ không thể nạp mãi được, giống như bạn đâu thể ăn liên tục mà không tiêu hóa, các lệnh đã được đặt và lưu trữ vào IR ở bước tìm nạp sẽ được CPU cho thông qua bộ phận giải mã lệnh từ đó lệnh đã nạp sẽ chuyển thành tín hiệu để luân chuyển qua các thành phần khác trong CPU nhằm thực hiện hành động mà lệnh muốn.
- Thực thi: các lệnh được giải mã, gửi đến các bộ phận liên quan của CPU để được thực hiện. Các kết quả thường được ghi vào một Register (thanh nhớ/thanh ghi trong CPU chứ không phải RAM nha), nơi chúng có thể được tham chiếu bằng các lệnh sau đó.
Đa phần các CPU hiện nay đều là các vi xử lý chứa trên IC (Integrated Circuit - vi mạch). Một IC có chứa một CPU và cũng có thể chứa bộ nhớ, giao diện cho các thiết bị ngoại vi, các thành phần khác của một máy tính cho nên được gọi theo nhiều cách, nhiều nhất là: MCU (Microcontroller, Microcontroller Unit - vi điều khiển) hoặc SoC (System on a Chip - hệ thống trên một vi mạch).
Khi CPU vừa ra đời, nó chỉ có một lõi đơn nên tốc độ tính toán thường chậm và tốn thời gian. Sau khi CPU một lõi đã đạt tới giới hạn tính toán, các nhà sản xuất bắt đầu nghiên cứu các cách thức mới nhằm cải thiện hiệu suất từ đó CPU đa lõi ra đời. Các khái niệm bạn hay nghe hiện tại có thể kể đến như: CPU lõi kép, CPU 4 lõi, CPU đa lõi, ..

1589571657251-jpeg.13042

(Intel 4004 - CPU đầu tiên, gần 50 năm tuổi)

(Intel Core i9-9900KS - CPU Intel mới nhất)

(AMD Ryzen 9 3900X - CPU AMD mới nhất)

Dĩ nhiên chúng ta nói về CPU thì phải nói về tốc độ đúng không .. có thể nói tốc độ của một máy tính ngoài các thành phần khác (RAM, GPU, SSD - HDD, ..) ra còn chủ yếu dựa vào CPU, người ta thường nói về tốc độ của máy tính thông qua CPU mà nó đang sử dụng (đang dính chặt vào nhau :v). Nhưng tốc độ của chính mỗi loại CPU tính ra còn chưa đủ cho nhiều nhu cầu khác nhau nên đã có nhiều loại công nghệ ra đời để hỗ trợ thêm cho tốc độ của CPU như:
- Pipeline - kỹ thuật ống dẫn/kỹ thuật luân phiên: đây là một kỹ thuật làm cho các giai đoạn khác nhau của nhiều lệnh được thi hành cùng một lúc.
- Turbo Boost - tăng áp: tự động điều chỉnh xung nhịp từng nhân độc lập cho phù hợp với nhu cầu xử lý, nâng cao hiệu suất cho bộ xử lý, tăng thêm 20% hiệu suất và chỉ tăng hiệu suất sử dụng khi cần giúp cho các thiết bị như laptop ít tốn pin hơn và hầu như nó chỉ có trên laptop là chính.
- Hyper-Threading - siêu phân luồng: cho phép một CPU vật lý hoạt động như là hai CPU, giúp CPU có khả năng xử lý nhiều tác vụ ở cùng một thời điểm bằng cách chia thành các luồng xử lý khác nhau.
...

(Pipeline - cái này coi cho biết thôi chứ tui không giải thích đâu nha huhu)

(Turbo Boost)

(Hyper-Threading)

Mình nghĩ chắc các bạn đã từng có các câu hỏi trong đầu như: CPU có quan trọng không, GPU có thể thay thế được CPU hay không, CPU nào cũng giống CPU nào, ..
Thì câu trả lời đây:
- Quả thật CPU có quan trọng đấy, ý là quan trọng trong vấn đề hiệu năng đấy nhưng cũng là không mặc dù nó vẫn đóng vai trò chính trong việc giúp thiết bị đang sử dụng nó đạt được tốc độ tối đa mà nó có thể hỗ trợ. Nhưng nó không thể thay thế được các thành phần khác trong một máy tính như xử lý 3D, lưu trữ thông tin này nọ, .. mấy cái đó thuộc thành phần khác rồi. Chứ nếu CPU mà làm được hết thì .. hehe, mà biết đâu được, công nghệ ngày càng phát triển mà.
- Về vấn đề GPU có thể thay thế được CPU hay không thì mặc dù GPU có thể xử lý dữ liệu và thực hiện nhiều thao tác giống như CPU, nhưng nó thiếu khả năng thực hiện nhiều chức năng theo yêu cầu của các hệ điều hành và phần mềm thông thường.
- Còn vụ CPU nào cũng giống CPU nào thì dễ hiểu nhất là tờ 200 ngàn có giống tờ 500 ngàn hay không ? dù nó cùng là tiền nhưng về hình thức bề ngoài, kích thước và cách sử dụng đâu thể giống nhau được. CPU thường có thể giống nhau về số nhân, tốc độ xung nhịp nhưng nó còn dựa vào nơi nó được sản xuất ra nữa, sẽ khác nhau về cách thiết kế do công nghệ và kỹ thuật thiết kế ra nó.
...

Fun Fact:
Các bạn có biết về định luật Moore không ?

(Gordon E. Moore)

Nếu biết rồi thì bỏ qua, còn nếu chưa biết thì hãy đọc định luật như sau:
"The number of transistors in a dense integrated circuit (IC) doubles about every two years"
Tạm dịch: "Số lượng bóng bán dẫn trong một vi mạch tích hợp cứ mỗi hai năm sẽ tăng gấp đôi" ..
Vâng, nó sẽ tăng trong phạm vi inch vuông (1 inch vuông xấp xỉ 6,45 cm² ), có nghĩa là số lượng bóng bán dẫn trong mỗi inch vuông cứ mỗi năm sẽ tăng gấp đôi.
Rồi để ổng ở đây đi.

Bây giờ chúng ta sẽ nói về 32 bit và 64 bit nhé (xin phép bỏ qua 16 bit, 8 bit).
CPU có kiến trúc 32 bit (x86) và 64 bit (x64) là các thuật ngữ để nói về độ rộng của Register trong CPU. Lưu ý nó khác hoàn toàn với OS (Operating System - hệ điều hành) 32 bit, 64 bit.
CPU 32 bit chỉ có thể sử dụng tối đa 4 GB (Gigabyte) tương đương 4.294.697.296 Bytes bộ nhớ RAM.
CPU 64 bit chỉ có thể sử dụng tối đa 16 EB (Exabyte) tương đương 18,446,744,073,709,551,616 Bytes bộ nhớ RAM.
Nhìn vào sự khác nhau trên, chúng ta có thể thấy rõ độ nhanh và sự tốt hơn của CPU 64 bit rồi đấy.
Cho bạn nào chưa biết 1 EB bằng 17179869184 GB

Nhờ vào định luật Moore chúng ta mới có thể có các CPU 64 bit hiện tại, hỗ trợ bao nhiêu đó RAM. Biết đâu trong tương lai chúng ta sẽ còn có một CPU lớn hơn như CPU 128 bit chẳng hạn, thực ra là nó đã được đề xuất nghiên cứu vào năm 1976 và trên reddit cũng có một đoạn tranh luận về CPU 128 bit, các bạn có thể tham khảo trong link: https://tinyurl.com/whynotCPU128


------------------------------------------------------
Kết

Chân thành cám ơn các nơi đã giúp mình tham khảo củng cố bài viết:
https://en.wikipedia.org/wiki/Central_processing_unit
https://en.wikipedia.org/wiki/Arithmetic_logic_unit
https://en.wikipedia.org/wiki/Moore's_law
https://en.wikipedia.org/wiki/Processor_register
https://www.convertunits.com/from/exabyte/to/byte
https://en.wikipedia.org/wiki/128-bit_computing

Đặc biệt xin cảm ơn:
https://www.google.com

P/s: thật ra mình tính viết về CPU và GPU cùng một lúc nhưng riêng CPU đã dài như vầy rồi, GPU sẽ còn dài hơn CPU nên mình xin phép bài này chỉ ghi về CPU cơ bản thôi.
 
Sửa lần cuối:
Trả lời

VanHieu94

Búa Gỗ
mình đang dùng Ryzen 5 2600, trước đấy thì sử dụng qua 1 PC 2008 rất lâu rồi, và 1 laptop 2013, đúng là CPU càng sau này càng mạnh và xử lý đa luồng rất hiệu quả, ít tốn điện và rất mượt, không như những đời trước mình dùng cà giựt cà giựt, nói chung cái gì nó cũng có thời gian của nó, biết đâu mấy năm nữa cái dàn của mình nó cũng cổ lổ sỉ, lúc đó phần mềm các thứ nó lại phình to ra nên năng lực xử lý của CPu bây giờ không hết được, tràn bờ đê