Tại sao nhiều bóng bán dẫn = sức mạnh xử lý nhiều hơn?


43

Theo Wikipedia, sức mạnh xử lý được liên kết chặt chẽ với luật của Moore:

http://en.wikipedia.org/wiki/Moore's_law

Số lượng bóng bán dẫn có thể được đặt rẻ trên một mạch tích hợp đã tăng gấp đôi khoảng hai năm một lần. Xu hướng đã tiếp tục trong hơn nửa thế kỷ và dự kiến ​​sẽ không dừng lại cho đến năm 2015 hoặc muộn hơn. Khả năng của nhiều thiết bị điện tử kỹ thuật số được liên kết chặt chẽ với định luật Moore: tốc độ xử lý, dung lượng bộ nhớ, cảm biến và thậm chí số lượng và kích thước pixel trong máy ảnh kỹ thuật số. Tất cả những điều này đang được cải thiện ở mức (khoảng) theo cấp số nhân.

Là một người có kiến ​​thức nền tảng về kiến ​​trúc máy tính, tôi không hiểu tại sao việc ném thêm bóng bán dẫn vào CPU sẽ tăng sức mạnh của nó vì cuối cùng, các hướng dẫn được đọc / thực hiện tuần tự. Bất cứ ai có thể giải thích phần tôi đang thiếu?


10
Nhiều bóng bán dẫn hơn = song song hơn
Toby Jaffey

2
Đó là sự thật cho dù bộ xử lý có bao nhiêu lõi.
Thomas O

1
Đúng. Nhiều bóng bán dẫn hơn có nghĩa là bạn có thể đặt các đơn vị thực hiện song song hơn. Bộ nhớ cache lớn hơn. Đường ống sâu hơn.
Kaz

1
Cache là một trong những lớn. Tôi nghĩ rằng tỷ lệ của bất động sản silicon dành riêng cho bộ đệm đã tăng lên. Hầu hết hiệu năng của các bộ xử lý hiện đại là do bộ nhớ đệm và bộ đệm chỉ hoạt động khi có cục bộ, nhưng bộ nhớ cache càng lớn thì càng cần thiết cho địa phương (các ứng dụng lớn hơn với các mẫu truy cập bộ nhớ lập dị hơn vẫn được tăng tốc).
Kaz

2
Hãy nghĩ về chỉ là một số nhân. Với đủ bóng bán dẫn, bạn có thể sử dụng bảng tra cứu đầy đủ và thực hiện toàn bộ phép nhân trong một bước. Với ít bóng bán dẫn hơn, bạn phải làm những việc như bổ sung lặp đi lặp lại.
David Schwartz

Câu trả lời:


29

Rất nhiều thứ cung cấp cho bạn nhiều năng lượng hơn chỉ cần nhiều bóng bán dẫn hơn để chế tạo chúng. Xe buýt rộng hơn quy mô các bóng bán dẫn đếm lên trong hầu hết các thành phần bộ xử lý. Bộ nhớ cache tốc độ cao thêm bóng bán dẫn theo kích thước bộ đệm. Nếu bạn kéo dài một đường ống, bạn cần thêm các giai đoạn và các đơn vị điều khiển phức tạp hơn. Nếu bạn thêm các đơn vị thực thi để giúp giảm thiểu tắc nghẽn trong đường ống, thì mỗi đơn vị yêu cầu nhiều bóng bán dẫn hơn, và sau đó các điều khiển để giữ cho các đơn vị thực hiện được phân bổ vẫn thêm nhiều bóng bán dẫn.

Vấn đề là, trong một mạch điện tử, mọi thứ xảy ra song song. Trong thế giới phần mềm, mặc định là để mọi thứ phải tuần tự và các nhà thiết kế phần mềm rất nỗ lực để có được sự song song được tích hợp trong phần mềm để có thể tận dụng tính chất song song của phần cứng. Song song chỉ có nghĩa là nhiều thứ xảy ra cùng một lúc, vì vậy gần tương đương với tốc độ; càng nhiều thứ có thể được thực hiện song song, bạn càng có thể hoàn thành công việc nhanh hơn. Sự song song thực sự duy nhất là những gì bạn nhận được khi bạn có nhiều bóng bán dẫn hơn trong công việc.


19

Các hướng dẫn đầu tiên không nhất thiết phải được "thực hiện tuần tự" ngay cả trên một ISA không phải là VLIW, việc thực thi chỉ cần xuất hiện tuần tự. Việc thực hiện siêu khối theo thứ tự có thể thực thi nhiều lệnh song song với lệnh khác. Để thực hiện điều này một cách hiệu quả, phần cứng cho các hướng dẫn giải mã phải được tăng (mở rộng), phần cứng phải được thêm vào để đảm bảo tính độc lập dữ liệu của các lệnh được thực thi song song, phải tăng tài nguyên thực thi và số lượng cổng tệp đăng ký thường tăng lên. Tất cả những điều này thêm bóng bán dẫn.

Việc triển khai không theo thứ tự, cho phép thực hiện các lệnh sau này trước các lệnh trước đó miễn là không có phụ thuộc dữ liệu, sử dụng phần cứng bổ sung để xử lý lập lịch hướng dẫn ngay khi dữ liệu có sẵn và thêm đổi tên thanh ghi và phần cứng để ánh xạ, phân bổ và giải phóng chúng (nhiều bóng bán dẫn hơn) để tránh các nguy cơ viết sau khi đọc và viết sau khi viết. Thực hiện không theo thứ tự cho phép bộ xử lý tránh bị đình trệ.

Việc sắp xếp lại các tải và lưu trữ trong bộ xử lý không theo thứ tự yêu cầu đảm bảo rằng các cửa hàng sớm hơn theo thứ tự chương trình sẽ chuyển tiếp kết quả đến các lần tải sau của cùng một địa chỉ. Điều này ngụ ý logic so sánh địa chỉ cũng như lưu trữ cho các địa chỉ (và kích thước) của các cửa hàng (và lưu trữ cho dữ liệu) cho đến khi cửa hàng được cam kết với bộ nhớ (bộ đệm). (Đối với một ISA có mô hình nhất quán bộ nhớ yếu hơn, cũng cần kiểm tra xem các tải có được sắp xếp đúng cách đối với các cửa hàng từ các bộ xử lý khác - nhiều bóng bán dẫn hơn không.)

Pipelining thêm một số điều khiển bổ sung và bộ đệm trên đầu và ngăn việc tái sử dụng logic cho các phần khác nhau của xử lý lệnh, nhưng cho phép các phần khác nhau của việc xử lý một lệnh trùng lặp kịp thời cho các hướng dẫn khác nhau.

Thực hiện đường ống và siêu lớp làm tăng tác động của các mối nguy kiểm soát (ví dụ, các nhánh có điều kiện và nhảy). Đường ống (và cũng là thực hiện không theo thứ tự) có thể trì hoãn tính khả dụng của mục tiêu của các bước nhảy vô điều kiện, do đó, thêm phần cứng để dự đoán mục tiêu (và hướng cho các nhánh có điều kiện) cho phép tiếp tục tìm nạp các hướng dẫn mà không cần chờ phần thực thi của bộ xử lý để làm cho dữ liệu cần thiết có sẵn. Dự đoán chính xác hơn có xu hướng yêu cầu nhiều bóng bán dẫn hơn.

Đối với bộ xử lý không theo thứ tự, có thể mong muốn cho phép tải từ bộ nhớ thực thi trước khi địa chỉ của tất cả các cửa hàng trước đó được tính toán, do đó, một số phần cứng để xử lý đầu cơ như vậy là bắt buộc, có thể bao gồm cả bộ dự đoán.

Bộ nhớ cache có thể giảm độ trễ và tăng băng thông truy cập bộ nhớ, nhưng thêm bóng bán dẫn để lưu trữ dữ liệu và lưu trữ thẻ (và so sánh thẻ với địa chỉ được yêu cầu). Phần cứng bổ sung cũng là cần thiết để thực hiện chính sách thay thế. Tìm nạp trước phần cứng sẽ thêm nhiều bóng bán dẫn.

Việc thực hiện chức năng trong phần cứng thay vì phần mềm có thể tăng hiệu suất (trong khi yêu cầu nhiều bóng bán dẫn hơn). Ví dụ, quản lý TLB, các hoạt động phức tạp như phép nhân hoặc phép toán dấu phẩy động, các phép toán chuyên biệt như số 0 đứng đầu. (Thêm hướng dẫn cũng làm tăng độ phức tạp của giải mã lệnh và điển hình là độ phức tạp của thực thi - ví dụ: để kiểm soát phần nào của phần cứng thực thi sẽ được sử dụng.)

Các hoạt động SIMD / vector tăng số lượng công việc được thực hiện trên mỗi lệnh nhưng yêu cầu lưu trữ dữ liệu nhiều hơn (các thanh ghi rộng hơn) và thường sử dụng nhiều tài nguyên thực thi hơn.

(Đa luồng đầu cơ cũng có thể cho phép nhiều bộ xử lý thực hiện một chương trình luồng đơn nhanh hơn. Rõ ràng việc thêm bộ xử lý vào chip sẽ làm tăng số lượng bóng bán dẫn.)

Có sẵn nhiều bóng bán dẫn hơn cũng có thể cho phép các kiến ​​trúc sư máy tính cung cấp cho ISA nhiều thanh ghi hơn hiển thị cho phần mềm, có khả năng làm giảm tần suất truy cập bộ nhớ có xu hướng chậm hơn so với truy cập đăng ký và liên quan đến một mức độ nào đó (ví dụ: thêm phần bù vào ngăn xếp con trỏ) làm tăng độ trễ.

Tích hợp - làm tăng số lượng bóng bán dẫn trên chip nhưng không có trong hệ thống - làm giảm độ trễ truyền thông và tăng băng thông, rõ ràng cho phép tăng hiệu suất. (Ngoài ra còn có sự giảm tiêu thụ năng lượng có thể được chuyển thành hiệu suất tăng.)

Ngay cả ở mức độ thực hiện lệnh, thêm bóng bán dẫn có thể tăng hiệu suất. Ví dụ, một bộ cộng mang chọn thêm các bit trên hai lần song song với các giả định khác nhau của phần mang từ các bit thấp hơn, chọn tổng số bit trên chính xác khi thực hiện từ các bit thấp hơn, rõ ràng cần nhiều bóng bán dẫn hơn đơn giản Ripple mang adder nhưng giảm độ trễ trong việc tạo ra tổng số đầy đủ. Tương tự một hệ số nhân với một hàng bộ cộng lưu mang theo sử dụng ít bóng bán dẫn (nhưng chậm hơn) so với hệ số nhân cây Dadda (hoặc Wallace) và không thể được nhân rộng (do đó sẽ phải được sao chép để cho phép nhân khác bắt đầu thực hiện trong khi trước đó nhân lên trong tiến trình).

Ở trên có thể là mệt mỏi nhưng không đầy đủ!


2
Câu trả lời tuyệt vời từ một chàng trai mới!
Sói Connor

12

Số lượng bóng bán dẫn không nhất thiết tương quan với công suất xử lý nhiều hơn, tuy nhiên, với nhiều bóng bán dẫn hơn, bộ xử lý có thể thực hiện các lệnh ngày càng phức tạp hơn trước. Ví dụ, bộ xử lý có SSE sẽ sử dụng các bóng bán dẫn bổ sung để thực hiện các hướng dẫn phức tạp này (ví dụ: thêm nhiều số trong một chu kỳ.)


2
Alan Kay tính toán rằng vì anh ta đang làm việc trên Smalltalk trong Xerox PARC, chúng tôi đã mất 18 năm nhân đôi bóng bán dẫn vì kiến ​​trúc sai và phần mềm không hiệu quả vì máy tính chắc chắn không nhanh như nhân đôi bóng bán dẫn.
jpc

5

Một yếu tố khác: khi bạn nhồi nhét nhiều bóng bán dẫn vào một khu vực nhất định, chúng sẽ nhỏ hơn, làm cho chúng nhanh hơn.


Khi các bóng bán dẫn ngày càng gần nhau hơn, bạn sẽ nhận được các hiệu ứng không mong muốn khác, chẳng hạn như dòng rò tăng lên, do đó, đó là sự đánh đổi giữa hiệu suất và công suất thấp - hầu hết các nhà sản xuất dường như đã đạt được hiệu suất.
Thomas O

4

Bộ vi xử lý đã tiến bộ đáng kể trong những năm gần đây, những thứ như đường ống dài hơn, phân nhánh dự đoán và trên bộ đệm chip đã thêm vào sự phức tạp liên quan đến bộ xử lý.

Chắc chắn những điều cơ bản về xử lý CPU, tìm nạp, giải mã, ALU, ghi vẫn giống nhau, nhưng để tăng tốc mọi thứ, các đường ống dài hơn được sử dụng. Các đường ống dài hơn làm tăng hiệu suất cho việc thực thi mã liên tục, nhưng cũng phải chịu số lần truy cập lớn hơn khi các nhánh mã làm hỏng hiệu suất. Biện pháp khắc phục, phân nhánh dự đoán. Phân nhánh dự đoán là một bí mật thương mại, mà intel thường không tiết lộ toàn bộ hoạt động của nó, chỉ đơn giản là sử dụng nó để giữ hiệu suất cao nhất có thể trên CPU của họ.

Bộ nhớ cache nhanh hơn nhiều so với RAM, nhưng làm gì để chuyển từ RAM sang cache và từ cache trở lại RAM ??? Đó là một lần nữa, công cụ độc quyền, nhưng một lần nữa cần các bóng bán dẫn để thực hiện.

Vì vậy, các bóng bán dẫn bổ sung đi vào những thứ như đường ống dài hơn, thuật toán nhánh dự đoán, bộ nhớ đệm và thuật toán bộ nhớ.

Điều này không đề cập đến bộ xử lý đa lõi và bộ điều khiển truy cập tài nguyên / bộ nhớ dùng chung.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.