Là mục đích duy nhất của bóng bán dẫn trong CPU để hoạt động như các công tắc xác định tập lệnh của nó? Và nếu vậy thì tại sao việc tăng số lượng bóng bán dẫn lại tăng tốc độ của nó?
Là mục đích duy nhất của bóng bán dẫn trong CPU để hoạt động như các công tắc xác định tập lệnh của nó? Và nếu vậy thì tại sao việc tăng số lượng bóng bán dẫn lại tăng tốc độ của nó?
Câu trả lời:
Off đỉnh đầu của tôi:
Bộ nhớ cache nhiều hơn , nhanh hơn RAM
Nhiều hướng dẫn SIMD , xử lý nhanh hơn hướng dẫn dữ liệu đơn
Nhiều lõi hơn , vì vậy bạn có thể làm hai hoặc nhiều việc cùng một lúc
Đường ống , vì vậy mỗi lõi có thể làm nhiều việc cùng một lúc
Logic xử lý tốt hơn, như logic dự đoán nhánh phức tạp hơn
Nếu bạn tò mò về loại điều này, tôi đánh giá cao cuốn sách Các yếu tố tính toán của Noam Nisan và Shimon Schocken (ít nhất là nửa đầu). Sau khi trải qua nó, bạn có thể trả lời câu hỏi của riêng bạn rất chi tiết với sự đánh giá đầy đủ về các phần liên quan.
Các trang web bạn đồng hành thực sự có một số chương mẫu và ghi chú. Đó là một cuốn sách rất dễ tiếp cận. Tôi đã tự mình trải qua nó mà không gặp vấn đề gì và sau đó học một lớp hoàn toàn mới tại trường đại học của tôi, sử dụng nó làm văn bản chính.
Câu trả lời đơn giản là nhiều bóng bán dẫn hơn không làm cho phần còn lại của chúng đi nhanh hơn , nhưng thay vì làm một việc trong một khoảng thời gian, giờ đây chúng ta có thể thực hiện hai (với một số hạn chế).
Ken đã tóm tắt một số lý do trong câu trả lời của mình . Để mở rộng hơn nữa
- Bộ nhớ cache nhiều hơn , nhanh hơn RAM
Rõ ràng bộ nhớ cache lớn hơn cần nhiều bóng bán dẫn hơn. Nhưng với nhiều bóng bán dẫn hơn, chúng tôi cũng có lựa chọn sử dụng bộ nhớ cache nhanh hơn . Bộ nhớ CPU chỉ là SRAM thường được tạo từ 6 bóng bán dẫn (AKA 6T SRAM). Tuy nhiên, khi có đủ các bóng bán dẫn, có thể đáng để sử dụng các tế bào SRAM nhanh hơn nhưng lớn hơn được tạo ra từ hơn 6 bóng bán dẫn (như SRAM 8T, 10T)
- Nhiều hướng dẫn SIMD , xử lý nhanh hơn hướng dẫn dữ liệu đơn
Không chỉ SIMD mà bất kỳ loại hướng dẫn tăng tốc. Ví dụ, các kiến trúc hiện đại thường có một đơn vị AES để mã hóa / giải mã nhanh hơn, FMA để tính toán toán học tốt hơn (đặc biệt là xử lý tín hiệu số) hoặc ảo hóa cho các máy ảo nhanh hơn. Hỗ trợ nhiều hướng dẫn hơn có nghĩa là cần nhiều tài nguyên hơn để giải mã và thực thi chúng
Những điều này khá rõ ràng
Trước đây không có đủ diện tích chết cho FPU nên mọi người phải mua riêng nếu họ có yêu cầu cao về số học dấu phẩy động. Với nhiều bóng bán dẫn hơn đáng kể, có thể tích hợp sẵn FPU, tăng tốc toán học dấu phẩy động rất nhiều
Bên cạnh đó, CPU hiện đại là siêu khối và sẽ cố gắng thực hiện nhiều việc cùng một lúc bằng cách tìm các phần dữ liệu độc lập và tính toán chúng sớm hơn, mặc dù luồng lệnh là tuyến tính và nối tiếp. Càng nhiều thứ họ có thể làm song song thì họ sẽ càng nhanh. Để làm điều đó, CPU có thể có nhiều ALU và ALU có thể có nhiều đơn vị thực thi. Ví dụ, nếu CPU có 5 bộ bổ sung so với 4 ở thế hệ trước thì nó đã chạy nhanh hơn 25% trong tình huống lạc quan nhất mà không có bất kỳ thay đổi đồng hồ nào. Các CPU tinh vi hơn thậm chí sử dụng thực thi không theo thứ tự (đó là trường hợp của hầu hết các CPU hiệu suất cao hiện đại)
- Logic xử lý tốt hơn, như logic dự đoán nhánh phức tạp hơn
Hoạt động thường có thể được thực hiện theo nhiều cách khác nhau. Nếu bạn có nhiều bóng bán dẫn hơn, bạn sẽ có nhiều tài nguyên hơn để sử dụng một kỹ thuật nhanh hơn. Một số ví dụ đơn giản:
Dịch chuyển bit:
Một shifter đơn giản được thực hiện bằng cách kết nối các flip-flop với nhau.
Điều đó chỉ cần một lần lật trên mỗi bit, do đó cực kỳ nhỏ gọn. Nhưng nó cần một đồng hồ để dịch chuyển sang trái hoặc phải một chút. Đó là lý do tại sao vi điều khiển và CPU nhúng nhỏ chỉ có hướng dẫn để thay đổi một. Xem
Khi bạn có nhiều bóng bán dẫn để chi tiêu, bạn có thể đổi sang một shifter thùng . Giờ đây, CPU có thể dịch chuyển bit trong một xung nhịp duy nhất với chi phí hàng trăm hoặc hàng nghìn bóng bán dẫn
Thêm vào:
Điều tương tự cũng áp dụng cho các đơn vị khác như số nhân, bộ chia, bộ lập lịch ... Ví dụ: chúng ta có thể thực hiện phép nhân cực nhanh trong một đồng hồ bằng cách sử dụng logic tổ hợp . Bạn có thể thấy một số ví dụ đơn giản trong câu hỏi bội số 3 bit - chúng hoạt động như thế nào? . Nhưng các bóng bán dẫn cần thiết sẽ phát triển theo bình phương chiều rộng đầu vào, do đó, các CPU nhỏ có số nhân sử dụng logic tuần tự thay vào đó để tiết kiệm nhiều không gian cho hệ số nhân:
Các kiến trúc số nhân cũ hơn đã sử dụng bộ dịch và bộ tích lũy để tổng hợp từng sản phẩm một phần, thường là một sản phẩm một phần trên mỗi chu kỳ, giao dịch giảm tốc độ cho khu vực chết. Các kiến trúc số nhân hiện đại sử dụng thuật toán BaughTHER Wooley, cây Wallace hoặc số nhân Dadda để thêm các sản phẩm một phần lại với nhau trong một chu kỳ. Hiệu suất của việc triển khai cây Wallace đôi khi được cải thiện bằng cách mã hóa Gian hàng được sửa đổi một trong hai bội số, giúp giảm số lượng sản phẩm một phần phải được tóm tắt
https://en.wikipedia.org/wiki/Binary_multiplier#Imcellenceations
Khi bạn có một kho bóng bán dẫn khổng lồ, bạn thậm chí có thể sử dụng logic tổ hợp để thực hiện một FMA tốn nhiều tài nguyên hơn nhiều so với số nhân
Các máy tính hiện đại có thể chứa MAC chuyên dụng, bao gồm một số nhân được triển khai theo logic tổ hợp, theo sau là một bộ cộng và một thanh ghi tích lũy lưu trữ kết quả. Đầu ra của thanh ghi được đưa trở lại một đầu vào của bộ cộng, sao cho trên mỗi chu kỳ xung nhịp, đầu ra của hệ số nhân được thêm vào thanh ghi. Hệ số nhân kết hợp yêu cầu số lượng logic lớn, nhưng có thể tính toán sản phẩm nhanh hơn nhiều so với phương pháp dịch chuyển và thêm điển hình của các máy tính trước đó.