Người giải thích: Chủ đề bộ xử lý là gì?

Ban đầu, nó chỉ là một. Nhiều năm trôi qua trước khi nó trở thành hai, rồi bốn. Bây giờ bạn có thể có 8, 12, 16 hoặc nhiều hơn. PC hiện đại có CPU có thể xử lý nhiều luồng cùng lúc nhờ vào sự phát triển trong thiết kế và sản xuất chip.

Nhưng chính xác thì các luồng là gì và tại sao việc CPU có thể xử lý nhiều hơn một luồng lại quan trọng đến vậy? Trong bài viết này, chúng tôi sẽ trả lời những câu hỏi này và hơn thế nữa.

Chúng ta có thể bắt đầu đi sâu vào thế giới của các luồng bộ xử lý bằng cách nhảy thẳng vào và trả lời câu hỏi mở đầu: luồng là gì?

Nói một cách đơn giản nhất, một luồng bộ xử lý là chuỗi hướng dẫn ngắn nhất cần thiết để thực hiện một tác vụ tính toán. Nó có thể là một danh sách rất ngắn, nhưng nó cũng có thể rất dài. Điều ảnh hưởng đến điều này là quy trình, chủ đề nào là một phần của (như minh họa bên dưới)…

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Vì vậy, bây giờ chúng tôi có một câu hỏi mới để trả lời (tức là quy trình là gì?) nhưng may mắn thay, điều đó thật dễ giải quyết. Nếu bạn đang chạy Windows trên máy tính của mình, hãy nhấn phím WindowsX , rồi chọn Trình quản lý tác vụ từ danh sách xuất hiện.

Theo mặc định, nó sẽ mở trên tab Quy trình và bạn sẽ thấy một danh sách dài các quy trình hiện đang chạy trên máy của mình. Một số trong số này sẽ là các chương trình riêng lẻ, tự chạy mà không có sự tương tác từ người dùng.

Những ứng dụng khác sẽ là một ứng dụng mà bạn có thể trực tiếp kiểm soát và một số trong số đó có thể tạo ra các quy trình nền bổ sung – các tác vụ hoạt động ẩn sau hậu trường, theo yêu cầu của chương trình chính.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Nếu bạn chuyển sang tab Hiệu suất, trong Trình quản lý tác vụ, sau đó chọn phần CPU, bạn có thể xem có bao nhiêu quy trình hiện đang hoạt động, cùng với tổng số luồng đang hoạt động.

Số Handles đề cập đến số lượng File Handles bay xung quanh. Mỗi khi một quá trình muốn truy cập một tệp, có thể là trong RAM hoặc ổ lưu trữ, một trình xử lý tệp sẽ được tạo. Mỗi cái là duy nhất đối với quy trình đã tạo ra nó, vì vậy một tệp thực sự có thể có nhiều xử lý.

Quay trở lại các luồng, Trình quản lý tác vụ không cho bạn biết nhiều về chúng – ví dụ: số lượng luồng được liên kết với mỗi quy trình không được hiển thị. May mắn thay, Microsoft có một chương trình khác gọi là Process Explorer để giúp chúng tôi.

Đọc thêm:  Xem trước Intel Rocket Lake: Kiến trúc mới

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Ở đây chúng ta có thể thấy tổng quan chi tiết hơn nhiều về các quy trình khác nhau và các luồng của chúng.

Lưu ý cách một số chương trình tạo tương đối ít trình tự hướng dẫn (ví dụ: máy chủ bổ trợ Corsair iCUE chỉ có một), trong khi các chương trình khác có tới hàng trăm, chẳng hạn như quy trình Hệ thống. Còn một ít thông tin giải thích vấn đề chi tiết hơn, nhưng chúng ta sẽ quay lại xem xét vấn đề này sau.

Bây giờ, nói một cách chính xác, nó thực sự là hệ điều hành tạo ra phần lớn các luồng này – bản thân quy trình thường chỉ có một luồng, để bắt đầu tất cả. Sau đó, hệ điều hành sẽ tự thực hiện nhiệm vụ tạo và quản lý tất cả chúng. Nhưng phần mềm đó thực sự không thể tự xử lý các hướng dẫn trong luồng; phần cứng là cần thiết cho công việc đó.

Điểm đến cuối cùng, đối với bất kỳ luồng nào, là bộ xử lý trung tâm (CPU). Chà, không phải lúc nào cũng vậy, nhưng chúng ta sẽ đề cập đến điều đó sau một chút. Con chip này nhận danh sách các hướng dẫn, dịch chúng thành một “ngôn ngữ” mà nó hiểu được, sau đó thực hiện các nhiệm vụ theo quy định.

Sâu trong ruột của bộ xử lý, phần cứng chuyên dụng lưu trữ các luồng để phân tích chúng, sau đó sắp xếp danh sách lệnh của chúng theo cách sao cho phù hợp nhất với những gì bộ xử lý đang thực hiện tại thời điểm đó.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Ngay cả những thứ như Pentium gốc của Intel, như được hiển thị ở trên, các hướng dẫn luồng có thể được sắp xếp lại một chút để tối đa hóa hiệu suất. Các CPU ngày nay chứa các công cụ quản lý luồng cực kỳ phức tạp, không chỉ vì số lượng tuyệt đối mà chúng phải xử lý mà còn để tính toán tương lai.

Dự đoán nhánh đã có từ lâu và nó là một phần thiết yếu trong kho vũ khí của CPU. Nếu một luồng chứa chuỗi hướng dẫn ‘ If…then…else ‘, mạch dự đoán sẽ ước tính kết quả có khả năng xảy ra nhất.

Câu trả lời từ dự đoán này sau đó làm cho CPU lục lọi trong kho hướng dẫn của nó và sau đó thực hiện những lệnh mà quyết định logic yêu cầu.

Nếu dự đoán là chính xác, thì một lượng thời gian đáng kể sẽ được tiết kiệm khỏi việc phải đợi toàn bộ luồng được xử lý. Nếu không, thì điều đó không tốt lắm – đây là lý do tại sao các nhà thiết kế CPU làm việc chăm chỉ với các bộ dự đoán nhánh của họ!

Đọc thêm:  Có VR? Phải có trò chơi VR

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Bộ xử lý trung tâm từ những năm 1990, dù ở dạng máy tính để bàn hay máy chủ, chỉ có một lõi, do đó chỉ có thể hoạt động trên một luồng tại một thời điểm, mặc dù chúng có thể thực hiện một số lệnh đồng thời (được gọi là siêu vô hướng ).

Máy chủ và máy trạm cao cấp phải xử lý một số lượng lớn luồng và các máy thời Pentium thường có hai CPU để hỗ trợ khối lượng công việc. Tuy nhiên, ý tưởng rằng một bộ xử lý có thể xử lý nhiều luồng cùng lúc đã xuất hiện từ lâu.

Trong nhiều thập kỷ, nhiều dự án đã đến và đi, khám phá khả năng bộ xử lý hoạt động trên nhiều luồng cùng một lúc, nhưng những triển khai này vẫn chỉ thực hiện các hướng dẫn từ một luồng tại một thời điểm.

Ý tưởng về một CPU xử lý nhiều hơn một lệnh luồng trong lõi của nó, hay còn gọi là đa luồng đồng thời (SMT), sẽ phải đợi cho đến khi khả năng của phần cứng bắt kịp.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Điều này đạt được vào năm 2002, khi Intel ra mắt phiên bản mới của bộ xử lý Pentium 4. Đây là CPU máy tính để bàn đầu tiên có khả năng hoàn toàn SMT, với tính năng này có biệt danh là công nghệ Siêu phân luồng Intel.

Vậy chính xác làm thế nào để một lõi đơn trong CPU hoạt động trên hai luồng cùng một lúc?

Hãy coi CPU là một nhà máy phức tạp, với nhiều công đoạn – tìm nạp và sau đó tổ chức các nguyên liệu thô của nó (tức là dữ liệu), sau đó sắp xếp các thứ tự của nó (các luồng), bằng cách chia nhỏ chúng thành nhiều nhiệm vụ nhỏ hơn.

Giống như một dây chuyền sản xuất ô tô số lượng lớn sẽ hoạt động trên nhiều bộ phận khác nhau, một hoặc hai bộ phận cùng lúc, CPU cần thực hiện nhiều tác vụ khác nhau theo một trình tự đã định để hoàn thành một bộ hướng dẫn nhất định.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Được biết đến nhiều hơn với tên gọi đường ống , các giai đoạn khác nhau sẽ không phải lúc nào cũng bận rộn; một số phải đợi một lúc cho đến khi các bước trước đó hoàn thành.

Đây là lúc SMT phát huy tác dụng. Phần cứng dành riêng để theo dõi trạng thái của mọi bộ phận trong đường ống được sử dụng để xác định xem một luồng khác có thể sử dụng các giai đoạn nhàn rỗi hay không mà không làm ngưng trệ luồng hiện đang hoạt động.

Đọc thêm:  Cách chuyển đổi tệp âm thanh và video bằng VLC Media Player

Thực tế là các CPU máy tính để bàn đã trở thành đa luồng từ rất lâu trước khi chúng trở thành đa lõi cho thấy SMT dễ triển khai hơn nhiều. Trong trường hợp kiến trúc Northwood của Intel, chưa đến 5% tổng số khuôn liên quan đến việc quản lý hai luồng.

Các lõi CPU có khả năng SMT được tổ chức theo cách sao cho đối với hệ điều hành, chúng xuất hiện dưới dạng các lõi logic riêng biệt. Về mặt vật lý, chúng đang chia sẻ nhiều tài nguyên giống nhau, nhưng chúng hoạt động độc lập.

CPU máy tính để bàn chỉ xử lý tối đa hai luồng trên mỗi lõi CPU, vì đường ống dẫn của chúng tương đối ngắn và đơn giản, đồng thời phân tích của các nhà thiết kế đã chỉ ra rằng hai luồng là giới hạn tối ưu.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Ngược lại, các bộ xử lý máy chủ khổng lồ, chẳng hạn như chip Xeon Phi cũ của Intel hoặc bộ xử lý POWER mới nhất của IBM xử lý lần lượt 4 và 8 luồng trên mỗi lõi. Đó là bởi vì lõi của chúng chứa rất nhiều đường ống, với các tài nguyên được chia sẻ.

Những cách tiếp cận khác nhau đối với thiết kế CPU này xuất hiện do khối lượng công việc rất khác nhau mà các con chip phải xử lý.

Bộ xử lý trung tâm không phải là con chip duy nhất trong máy tính phải xử lý nhiều luồng. Có một con chip, với vai trò rất cụ thể, xử lý hàng nghìn luồng xử lý cùng một lúc.

Khi nói đến việc tự hào về số lượng quá mức, GPU hoàn toàn bị đánh bại bởi CPU. Chúng lớn hơn về mặt vật lý, có nhiều bóng bán dẫn hơn, sử dụng nhiều năng lượng hơn và xử lý nhiều luồng hơn bất kỳ CPU máy chủ nào có thể hướng tới.

Hãy lấy card đồ họa Radeon RX 6800 của AMD, trang bị chip Navi 21 làm ví dụ. Bộ xử lý đó bao gồm 60 Đơn vị tính toán (CU), với mỗi đơn vị xử lý đồng thời 64 luồng riêng biệt cùng một lúc.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Đó là 3.840 chủ đề trên đường đi!

Vậy làm thế nào để một GPU xử lý nhiều hơn một bộ xử lý trung tâm?

Mỗi CU có hai bộ đơn vị SIMD (một lệnh, nhiều dữ liệu) và mỗi bộ trong số đó có thể hoạt động trên 32 thành phần dữ liệu riêng biệt cùng một lúc. Tất cả chúng có thể đến từ các luồng khác nhau nhưng điều thú vị là thiết bị phải thực hiện chính xác cùng một hướng dẫn trong mỗi luồng.

Đây là điểm khác biệt chính đối với CPU – trong đó lõi bộ xử lý máy tính để bàn sẽ chỉ xử lý không quá hai luồng, các hướng dẫn có thể hoàn toàn khác, từ các quy trình hoàn toàn không liên quan.

Đọc thêm:  Đánh giá bộ điều khiển Leap Motion

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

GPU được thiết kế để thực hiện lặp đi lặp lại cùng một hoạt động, thường là từ các quy trình tương tự (về mặt kỹ thuật, chúng được gọi là hạt nhân , nhưng chúng tôi sẽ bỏ điều đó sang một bên), nhưng tất cả đều diễn ra song song.

Cũng giống như IBM POWER10, CPU chỉ dành cho máy chủ doanh nghiệp, chip xử lý đồ họa được chế tạo để thực hiện một nhiệm vụ rất chuyên biệt.

Các trò chơi lớn nhất hiện nay, với hình ảnh 3D phức tạp, đòi hỏi phải xử lý một lượng toán học đáng kinh ngạc, tất cả chỉ trong vài phần nghìn giây. Và điều đó đòi hỏi chủ đề – rất nhiều chủ đề!

Nếu bạn xem bất kỳ bài đánh giá CPU nào của chúng tôi, bạn sẽ gần như luôn thấy hai kết quả từ Cinebench, một điểm chuẩn thực hiện tác vụ kết xuất dựa trên CPU đầy thách thức.

Một kết quả dành cho thử nghiệm chỉ sử dụng một luồng, trong khi kết quả kia sẽ sử dụng tổng số luồng mà CPU có thể xử lý. Kết quả từ cái sau luôn nhanh hơn nhiều so với thử nghiệm đơn luồng. Tại sao điều này là trường hợp?

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Cinebench đang hiển thị đồ họa 3D, giống như trong trò chơi, mặc dù chỉ là một khung hình có độ chi tiết cao. Và nếu bạn nhớ cách GPU thực hiện nhiều luồng song song để tạo đồ họa 3D, thì rõ ràng tại sao CPU có nhiều lõi, đặc biệt là với SMT, lại thực hiện khối lượng công việc nhanh như vậy.

Thật không may, việc thêm nhiều lõi hơn chỉ làm cho bộ xử lý lớn hơn và do đó đắt hơn, vì vậy có vẻ như SMT sẽ luôn là một thứ tốt để có. Tuy nhiên, nó phụ thuộc rất nhiều vào tình hình.

Ví dụ: khi chúng tôi thử nghiệm Ryzen 9 3950X của AMD (CPU 12 nhân, 24 luồng) trên 36 trò chơi khác nhau, có và không bật SMT, kết quả rất rộng. Một số tựa game đạt hiệu suất cao hơn tới 16% khi bật SMT, trong khi những tựa game khác giảm tới 12%.

Tuy nhiên, sự khác biệt trung bình chỉ là 1% nên chắc chắn không phải lúc nào SMT cũng bị tắt khi chơi game, nhưng nó đặt ra một số câu hỏi nữa.

Đầu tiên là, tại sao trò chơi lại chạy chậm hơn 12% khi các lõi CPU đang xử lý đồng thời hai luồng? Cụm từ chính ở đây là ” tranh chấp tài nguyên “.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Nếu một chương trình đang yêu cầu nhiều đối với hệ thống bộ nhớ của CPU (bộ đệm, băng thông và RAM), thì việc có hai luồng trên một lõi yêu cầu quyền truy cập vào bộ nhớ có thể khiến một luồng bị đình trệ trong khi nó phải chờ.

Đọc thêm:  Cập nhật giá và tính khả dụng của CPU và GPU: Tháng 4 năm 2021

CPU có thể xử lý càng nhiều luồng thì hệ thống bộ đệm trong bộ xử lý càng trở nên quan trọng. Điều này trở nên rõ ràng khi kiểm tra các CPU có kích thước bộ đệm L3 cố định, bất kể có bao nhiêu lõi được kích hoạt.

Chip càng có nhiều lõi và luồng thì số lượng yêu cầu bộ đệm mà hệ thống sẽ phải xử lý càng lớn. Và điều này đưa chúng ta đến câu hỏi tiếp theo: đây có phải là lý do tại sao các trò chơi không sử dụng nhiều luồng không?

Hãy quay lại Process Explorer và xem một vài tựa game, cụ thể là Cyberpunk 2077, Spider-Man Remastered và Shadow of the Tomb Raider. Cả ba đều được phát triển cho PC và bảng điều khiển, vì vậy bạn có thể mong đợi chúng sẽ sử dụng ở đâu đó trong khoảng từ 4 đến 8 luồng.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Thoạt nhìn, trò chơi chắc chắn sử dụng rất nhiều luồng!

Có vẻ như điều này không thể đúng, vì CPU được sử dụng trong máy tính chạy trò chơi chỉ hỗ trợ tối đa 8 luồng.

Nhưng nếu chúng ta tìm hiểu sâu hơn về các luồng quy trình, chúng ta sẽ có một bức tranh rõ ràng hơn nhiều. Hãy xem Shadow of the Tomb Raider.

Dưới đây, chúng ta có thể thấy rằng phần lớn các luồng này hầu như không chiếm thời gian chạy của CPU (cột thứ hai, được hiển thị bằng giây). Mặc dù quy trình và hệ điều hành đã tạo ra hơn một trăm luồng, nhưng hầu hết đều chạy quá ngắn để có thể đăng ký.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Số lượng Chu kỳ Delta là tổng số chu kỳ CPU được tích lũy bởi luồng trong quy trình và trong trường hợp của trò chơi này, nó chỉ bị chi phối bởi hai luồng. Điều đó nói rằng, những người khác vẫn đang sử dụng tất cả các lõi CPU có sẵn.

Có vẻ như số chu kỳ là một con số lố bịch, nhưng nếu bộ xử lý có tốc độ xung nhịp, chẳng hạn như 4,5 GHz, thì một chu kỳ chỉ mất 0,22 nano giây. Vì vậy, 1,3 tỷ chu kỳ chỉ tương đương với dưới 300 mili giây một chút.

Tất nhiên, không phải tất cả các trò chơi đều làm như vậy và tựa game càng cũ thì số lượng luồng càng ít. Nếu chúng ta nhìn vào Call of Duty ban đầu, từ năm 2003, chúng ta sẽ thấy một bức tranh rất khác.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Tất cả các trò chơi từ thời đại này đều như thế này – chỉ là một chủ đề chính cho mọi thứ. Điều này là do các CPU hồi đó chỉ có một lõi và tương đối ít trong số chúng hỗ trợ SMT.

Đọc thêm:  13 năm Assassin's Creed

Khi quy trình và hoạt động của Call of Duty tạo ra một luồng để thực hiện hầu hết mọi thứ, Shadow of the Tomb Raider thực sự là đa luồng đồng thời (nhiều như CPU hỗ trợ).

Ban đầu, phần cứng vượt trội hơn phần mềm khi sử dụng đầy đủ tất cả các lõi (có hoặc không có SMT) được cung cấp và chúng tôi đã phải đợi khá nhiều năm trước khi các trò chơi đa luồng hoàn toàn.

Giờ đây, các bảng điều khiển mới nhất có CPU 8 nhân có khả năng SMT 2 chiều, các tựa game trong tương lai chắc chắn sẽ bận rộn hơn với các luồng.

Ngay bây giờ, ngoài tiền và tính khả dụng, bạn có thể có một máy tính để bàn có CPU có khả năng xử lý 32 luồng (Ryzen 9 7950X của AMD) và GPU có thể xử lý 4.096 luồng (GeForce RTX 4090 của Nvidia).

Tất nhiên, phần cứng này ở ngay trên đỉnh cao của công nghệ, chi phí và sức mạnh và chắc chắn không phải là đại diện cho những gì mà hầu hết các máy tính phải cung cấp. Nhưng khoảng 10 năm trước, đó là một bức tranh rất khác.

Các CPU tốt nhất hỗ trợ 8 luồng thông qua SMT nhưng PC trung bình thường phải có khoảng 4 luồng. Giờ đây, bạn có thể mua những CPU giá dưới 100 đô la có khả năng xử lý giống như những con chip tốt nhất từ một thập kỷ trước.

svg+xml,%3Csvg%20xmlns= Người giải thích: Chủ đề bộ xử lý là gì?

Chúng ta có thể cảm ơn AMD vì điều này, vì họ là những người đầu tiên cung cấp nhiều lõi/luồng với giá cả phải chăng và ngày nay, cả hai nhà cung cấp CPU thường tranh nhau xem ai có thể cung cấp nhiều lõi/luồng nhất trên mỗi đô la.

Và cuối cùng thì chúng ta cũng đang ở giai đoạn mà các trò chơi mới và gần đây đang tận dụng tối đa tất cả sức mạnh xử lý luồng có sẵn cho chúng, khi chúng không bị giới hạn bởi GPU.

Vì vậy, những gì tiếp theo? Nếu chúng ta có thể tua nhanh một thập kỷ tới trong tương lai, liệu chúng ta có thấy một game thủ PC bình thường sử dụng CPU 128 luồng không? Có thể, nhưng không chắc, đơn giản là vì lợi nhuận giảm dần khi số lượng lõi tăng lên. Tuy nhiên, những người tạo nội dung chuyên nghiệp đã sử dụng những bộ xử lý như vậy (ví dụ: Threadripper Pro 5995WX), vì vậy mọi người có thể đoán xem họ sẽ sử dụng những gì vào khoảng năm 2032.

Nhưng dù tương lai có ra sao, thì một điều vẫn đúng: chủ đề là những điều nhỏ bé tuyệt vời!

Tín dụng tiêu đề: Ryan