Tóm lược
Kinh tế học. Nó rẻ hơn và dễ dàng hơn để thiết kế CPU có nhiều lõi hơn tốc độ xung nhịp cao hơn, bởi vì:
Tăng đáng kể trong việc sử dụng năng lượng. Tiêu thụ năng lượng CPU tăng nhanh khi bạn tăng tốc độ xung nhịp - bạn có thể tăng gấp đôi số lượng lõi hoạt động ở tốc độ thấp hơn trong không gian nhiệt cần thiết để tăng tốc độ xung nhịp thêm 25%. Tăng gấp bốn lần cho 50%.
Có nhiều cách khác để tăng tốc độ xử lý tuần tự và các nhà sản xuất CPU sử dụng tốt chúng.
Tôi sẽ rút ra rất nhiều câu trả lời xuất sắc cho câu hỏi này trên một trong những trang SE của chị em chúng tôi. Vì vậy, hãy upvote chúng!
Giới hạn tốc độ đồng hồ
Có một vài hạn chế vật lý đã biết đối với tốc độ đồng hồ:
Thời gian truyền
Thời gian để tín hiệu điện truyền qua mạch bị giới hạn bởi tốc độ ánh sáng. Đây là một giới hạn cứng và không có cách nào được biết xung quanh nó 1 . Tại đồng hồ gigahertz, chúng tôi đang tiến đến giới hạn này.
Tuy nhiên, chúng tôi chưa có ở đó. 1 GHz có nghĩa là một nano giây trên mỗi đồng hồ. Trong thời gian đó, ánh sáng có thể đi được 30cm. Ở tốc độ 10 GHz, ánh sáng có thể truyền đi 3cm. Một lõi CPU có chiều rộng khoảng 5 mm, vì vậy chúng ta sẽ gặp các vấn đề này ở đâu đó trên 10 GHz. 2
Chuyển đổi độ trễ
Nó không đủ để chỉ xem xét thời gian cần thiết để tín hiệu truyền từ đầu này sang đầu kia. Chúng ta cũng cần xem xét thời gian cần thiết cho một cổng logic trong CPU để chuyển từ trạng thái này sang trạng thái khác! Khi chúng ta tăng tốc độ xung nhịp, điều này có thể trở thành một vấn đề.
Thật không may, tôi không chắc chắn về các chi tiết cụ thể và không thể cung cấp bất kỳ số nào.
Rõ ràng, bơm thêm năng lượng vào nó có thể tăng tốc độ chuyển đổi, nhưng điều này dẫn đến cả vấn đề tiêu thụ năng lượng và tản nhiệt. Ngoài ra, nhiều năng lượng hơn có nghĩa là bạn cần các ống dẫn lớn hơn có khả năng xử lý nó mà không bị hư hại.
Tản nhiệt / tiêu thụ điện năng
Đây là một trong những lớn. Trích dẫn từ câu trả lời của fuzzyhair2 :
Bộ xử lý gần đây được sản xuất bằng công nghệ CMOS. Mỗi khi có một chu kỳ đồng hồ, năng lượng bị tiêu tan. Do đó, tốc độ xử lý cao hơn có nghĩa là tản nhiệt nhiều hơn.
Có một số phép đo đáng yêu tại chủ đề diễn đàn AnandTech này , và họ thậm chí đã rút ra một công thức cho mức tiêu thụ năng lượng (đi đôi với nhiệt được tạo ra):
Tín dụng cho Idontcare
Chúng ta có thể hình dung điều này trong biểu đồ sau:
Tín dụng cho Idontcare
Như bạn có thể thấy, mức tiêu thụ năng lượng (và nhiệt tạo ra) tăng rất nhanh khi tốc độ đồng hồ được tăng lên qua một điểm nhất định. Điều này làm cho nó không thực tế để tăng tốc độ xung nhịp vô hạn.
Lý do cho sự gia tăng nhanh chóng trong việc sử dụng năng lượng có lẽ liên quan đến độ trễ chuyển đổi - không đủ để chỉ tăng công suất tỷ lệ thuận với tốc độ xung nhịp; điện áp cũng phải được tăng lên để duy trì sự ổn định ở đồng hồ cao hơn. Điều này có thể không hoàn toàn chính xác; vui lòng chỉ ra các chỉnh sửa trong một nhận xét hoặc chỉnh sửa câu trả lời này.
Nhiều lõi hơn?
Vậy tại sao nhiều lõi hơn? Chà, tôi không thể trả lời dứt khoát được. Bạn phải hỏi những người ở Intel và AMD. Nhưng bạn có thể thấy ở trên, với các CPU hiện đại, đến một lúc nào đó, việc tăng tốc độ xung nhịp trở nên không thực tế.
Có, đa lõi cũng làm tăng công suất cần thiết và tản nhiệt. Nhưng nó gọn gàng tránh thời gian truyền và chuyển đổi các vấn đề chậm trễ. Và, như bạn có thể thấy từ biểu đồ, bạn có thể dễ dàng nhân đôi số lượng lõi trong một CPU hiện đại có cùng chi phí nhiệt khi tăng 25% tốc độ xung nhịp.
Một số người đã làm điều đó - kỷ lục thế giới ép xung hiện tại chỉ là 9 GHz. Nhưng đó là một thách thức kỹ thuật quan trọng để làm như vậy trong khi vẫn giữ mức tiêu thụ năng lượng trong giới hạn chấp nhận được. Các nhà thiết kế tại một số điểm đã quyết định rằng việc thêm nhiều lõi để thực hiện nhiều công việc song song sẽ mang lại hiệu quả cao hơn cho hiệu suất trong hầu hết các trường hợp.
Đó là nơi kinh tế đến - nó có thể rẻ hơn (thời gian thiết kế ít hơn, sản xuất ít phức tạp hơn) để đi theo con đường đa lõi. Và thật dễ dàng để tiếp thị - ai không thích chip octa-core hoàn toàn mới ? (Tất nhiên, chúng tôi biết rằng đa lõi khá vô dụng khi phần mềm không sử dụng nó ...)
Có là một nhược điểm để đa lõi: bạn cần không gian căng thẳng hơn để đặt lõi thêm. Tuy nhiên, kích thước quá trình CPU liên tục co lại rất nhiều, do đó, có rất nhiều không gian để đặt hai bản sao của thiết kế trước đó - sự đánh đổi thực sự là không thể tạo ra các lõi đơn lớn hơn, phức tạp hơn. Sau đó, một lần nữa, tăng độ phức tạp cốt lõi là một điều xấu từ quan điểm thiết kế - phức tạp hơn = nhiều lỗi / lỗi và lỗi sản xuất. Chúng tôi dường như đã tìm thấy một phương tiện hạnh phúc với lõi hiệu quả, đủ đơn giản để không chiếm quá nhiều không gian.
Chúng tôi đã đạt đến một giới hạn với số lượng lõi mà chúng tôi có thể phù hợp với một lần chết ở các kích thước quy trình hiện tại. Chúng ta có thể đạt đến giới hạn về việc chúng ta có thể thu nhỏ mọi thứ sớm đến mức nào. Vậy, tiếp theo là gì? Chúng ta có cần nhiều hơn không? Thật không may để trả lời, thật không may. Có ai ở đây một người thấu thị?
Những cách khác để cải thiện hiệu suất
Vì vậy, chúng ta không thể tăng tốc độ đồng hồ. Và nhiều lõi hơn có một nhược điểm bổ sung - cụ thể là, chúng chỉ giúp ích khi phần mềm chạy trên chúng có thể sử dụng chúng.
Vậy, chúng ta có thể làm gì khác? Làm thế nào các CPU hiện đại nhanh hơn nhiều so với các CPU cũ hơn ở cùng tốc độ xung nhịp?
Tốc độ xung nhịp thực sự chỉ là một xấp xỉ rất thô của hoạt động bên trong của CPU. Không phải tất cả các thành phần của CPU đều hoạt động ở tốc độ đó - một số có thể hoạt động cứ sau hai tích tắc, v.v.
Điều quan trọng hơn là số lượng hướng dẫn bạn có thể thực hiện trên mỗi đơn vị thời gian. Đây là một biện pháp tốt hơn nhiều về việc một lõi CPU có thể thực hiện được bao nhiêu. Một số hướng dẫn; một số sẽ mất một chu kỳ đồng hồ, một số sẽ mất ba. Bộ phận, ví dụ, là chậm hơn đáng kể so với bổ sung.
Vì vậy, chúng ta có thể làm cho CPU hoạt động tốt hơn bằng cách tăng số lượng lệnh mà nó có thể thực thi mỗi giây. Làm sao? Chà, bạn có thể làm cho một hướng dẫn hiệu quả hơn - có thể việc phân chia bây giờ chỉ mất hai chu kỳ. Sau đó, có hướng dẫn đường ống . Bằng cách chia từng lệnh thành nhiều giai đoạn, có thể thực hiện các lệnh "song song" - nhưng mỗi lệnh vẫn có một thứ tự được xác định rõ ràng, theo thứ tự tương ứng với các hướng dẫn trước và sau nó, vì vậy nó không yêu cầu hỗ trợ phần mềm như đa lõi làm.
Có một cách khác : hướng dẫn chuyên biệt hơn. Chúng tôi đã thấy những thứ như SSE, cung cấp hướng dẫn để xử lý một lượng lớn dữ liệu cùng một lúc. Có những bộ hướng dẫn mới liên tục được giới thiệu với các mục tiêu tương tự. Những điều này, một lần nữa, yêu cầu hỗ trợ phần mềm và tăng độ phức tạp của phần cứng, nhưng chúng cung cấp một hiệu suất tốt. Gần đây, có AES-NI, cung cấp mã hóa và giải mã AES được tăng tốc phần cứng, nhanh hơn nhiều so với một loạt các số học được thực hiện trong phần mềm.
1 Không mà không nhận được khá sâu vào vật lý lượng tử lý thuyết, dù sao.
2 Nó thực sự có thể thấp hơn, vì sự lan truyền điện trường không nhanh bằng tốc độ ánh sáng trong chân không. Ngoài ra, đó chỉ là khoảng cách đường thẳng - có khả năng có ít nhất một con đường dài hơn đáng kể so với đường thẳng.