Làm thế nào để bạn tính toán tốc độ bộ xử lý trên bộ xử lý đa lõi?
Sự ra đời của bộ xử lý đa lõi tiêu dùng cấp kinh tế đặt ra câu hỏi cho nhiều người dùng: làm thế nào để bạn tính toán hiệu quả tốc độ thực của hệ thống đa lõi? Hệ thống 3Ghz 4 lõi có thực sự là 12Ghz không? Đọc tiếp khi chúng tôi điều tra.
Phiên hỏi và trả lời hôm nay đến với chúng tôi nhờ SuperUser - một phân ngành của Stack Exchange, một nhóm các trang web hỏi đáp trong cộng đồng.
Câu hỏi
Trình đọc SuperUser NRzingh đã tò mò về cách tính tốc độ bộ xử lý cho một hệ thống đa lõi thực sự được tính toán:
Chẳng hạn, có đúng không khi nói rằng bộ xử lý có bốn lõi mỗi lõi chạy ở tần số 3GHz thực tế là bộ xử lý chạy ở tốc độ 12GHz?
Tôi đã từng tham gia vào một cuộc tranh luận giữa Mac và PC PC (mà nhân tiện KHÔNG phải là trọng tâm của chủ đề này, hồi đó ở trường cấp hai) với một người quen đã khăng khăng rằng máy Mac chỉ được quảng cáo là máy 1Ghz vì chúng là kép Mỗi bộ xử lý G4 chạy ở tốc độ 500 MHz.
Vào thời điểm đó, tôi biết điều này là hogwash vì những lý do mà tôi nghĩ là rõ ràng với hầu hết mọi người, nhưng tôi chỉ thấy một nhận xét trên trang web này về hiệu ứng của lõi 6 lõi x 0,2GHz = 1,2Ghz và điều đó khiến tôi suy nghĩ lại về việc liệu có một câu trả lời thực sự cho điều này.
Vì vậy, đây là một câu hỏi ít nhiều về triết học / kỹ thuật sâu sắc về ngữ nghĩa của tính toán tốc độ đồng hồ. Tôi thấy hai khả năng:
- Trên thực tế, mỗi lõi thực hiện x tính toán mỗi giây, do đó tổng số phép tính là x (lõi).
- Tốc độ đồng hồ thay vì đếm số chu kỳ mà bộ xử lý trải qua trong không gian của một giây, miễn là tất cả các lõi đều chạy ở cùng một tốc độ, tốc độ của mỗi chu kỳ đồng hồ vẫn như nhau cho dù có bao nhiêu lõi tồn tại . Nói cách khác, Hz = (core1Hz + core2Hz + Giảm) / lõi.
Vậy đâu là cách thích hợp để biểu thị tổng tốc độ xung nhịp và quan trọng hơn là thậm chí có thể sử dụng danh pháp tốc độ lõi đơn trên hệ thống đa lõi?
Câu trả lời
Những người đóng góp cho SuperUser, Mokubai giúp làm sáng tỏ mọi thứ. Anh ấy viết:
Lý do chính tại sao bộ xử lý 3GHz lõi tứ không bao giờ nhanh như lõi đơn 12 GHz là do cách thức hoạt động của bộ xử lý đó hoạt động, tức là đơn luồng hoặc đa luồng. Luật của Amdahl rất quan trọng khi xem xét các loại nhiệm vụ bạn đang chạy.
Nếu bạn có một nhiệm vụ vốn là tuyến tính và phải được thực hiện chính xác từng bước như (một chương trình đơn giản)
10: a = a + 1
20: goto 10
Sau đó, tác vụ phụ thuộc nhiều vào kết quả của lần vượt qua trước đó và không thể chạy nhiều bản sao của chính nó mà không làm hỏng giá trị của
'một'
vì mỗi bản sao sẽ nhận được giá trị của'một'
tại các thời điểm khác nhau và viết lại khác nhau. Điều này hạn chế tác vụ đối với một luồng duy nhất và do đó, tác vụ chỉ có thể chạy trên một lõi đơn tại bất kỳ thời điểm nào, nếu nó chạy trên nhiều lõi thì tham nhũng đồng bộ hóa sẽ xảy ra. Điều này giới hạn ở mức 1/2 năng lượng cpu của hệ thống lõi kép, hoặc 1/4 trong hệ thống lõi tứ.Bây giờ nhận một nhiệm vụ như:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10
Tất cả các dòng này là độc lập và có thể được chia thành 4 chương trình riêng biệt như chương trình đầu tiên và chạy cùng một lúc, mỗi dòng có thể sử dụng hiệu quả toàn bộ sức mạnh của một trong các lõi mà không gặp sự cố đồng bộ hóa nào, đây là luật của Amdahl đi vào nó.
Vì vậy, nếu bạn có một ứng dụng đơn luồng thực hiện tính toán vũ lực, bộ xử lý 12GHz đơn lẻ sẽ chiến thắng, nếu bạn bằng cách nào đó có thể phân chia nhiệm vụ thành các phần riêng biệt và đa luồng thì 4 lõi có thể tiến gần đến, nhưng không hoàn toàn đạt được, hiệu suất tương tự, theo Luật của Amdahl.
Điều chính mà một hệ thống nhiều CPU mang lại cho bạn là khả năng đáp ứng. Trên một máy lõi đơn đang làm việc chăm chỉ, hệ thống có thể chậm chạp vì phần lớn thời gian có thể được sử dụng bởi một tác vụ và các tác vụ khác chỉ chạy trong các đợt ngắn giữa các tác vụ lớn hơn, dẫn đến một hệ thống có vẻ chậm chạp hoặc lầy lội . Trên hệ thống đa lõi, tác vụ nặng có một lõi và tất cả các tác vụ khác chơi trên các lõi khác, thực hiện công việc của chúng một cách nhanh chóng và hiệu quả.
Đối số của lõi 6 lõi x 0,2 GHz = 1,2Ghz là rác trong mọi tình huống ngoại trừ khi các tác vụ hoàn toàn song song và độc lập. Có một số lượng tốt các nhiệm vụ rất song song, nhưng chúng vẫn đòi hỏi một số hình thức đồng bộ hóa. Handbrake là một trancoder video rất tốt trong việc sử dụng tất cả các CPU có sẵn nhưng nó đòi hỏi một quy trình cốt lõi để giữ cho các luồng khác chứa đầy dữ liệu và thu thập dữ liệu mà chúng được thực hiện với.
- Trên thực tế, mỗi lõi thực hiện x tính toán mỗi giây, do đó tổng số phép tính là x (lõi).
Mỗi lõi có khả năng thực hiện x tính toán mỗi giây, giả sử khối lượng công việc là song song, trên một chương trình tuyến tính, tất cả những gì bạn có là 1 lõi.
- Tốc độ đồng hồ thay vì đếm số chu kỳ mà bộ xử lý trải qua trong không gian của một giây, miễn là tất cả các lõi đều chạy ở cùng một tốc độ, tốc độ của mỗi chu kỳ đồng hồ vẫn như nhau cho dù có bao nhiêu lõi tồn tại . Nói cách khác, Hz = (core1Hz + core2Hz + Giảm) / lõi.
Tôi nghĩ thật sai lầm khi nghĩ rằng 4 x 3GHz = 12GHz, đã cho phép toán học hoạt động, nhưng bạn đang so sánh táo với cam và các khoản tiền không đúng, chỉ đơn giản là không thể thêm vào nhau cho mọi tình huống. Tôi sẽ thay đổi nó thành 4 x 3GHz = 4 x 3GHz.
Có một cái gì đó để thêm vào lời giải thích? Tắt âm thanh trong các ý kiến. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange am hiểu công nghệ khác? Kiểm tra chủ đề thảo luận đầy đủ ở đây.