Lý do chính tại sao bộ xử lý lõi tứ 3GHz 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ị 'a'
vì mỗi bản sao sẽ nhận được giá trị 'a'
tại các thời điểm khác nhau và viết lại theo cách khác. Điều này hạn chế tác vụ trong 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ì xảy ra lỗi đồng bộ hóa. Điều này giới hạn ở mức 1/2 công suất 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ì hầu hết 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 ướt át . Trên một 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 "6 nhân x 0,2GHz = 1,2Ghz" là rác rưởi 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.
- 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 + ...) / 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.