Đa CPU là phiên bản đầu tiên: Bạn sẽ có một hoặc nhiều bo mạch chủ với một hoặc nhiều chip CPU trên chúng. Vấn đề chính ở đây là các CPU sẽ phải tiết lộ một số dữ liệu bên trong của chúng cho CPU khác để chúng không cản trở chúng.
Bước tiếp theo là siêu phân luồng. Một con chip trên mainboard nhưng nó có một số bộ phận nằm bên trong hai lần nên nó có thể thực hiện hai lệnh cùng một lúc.
Sự phát triển hiện tại là đa lõi. Về cơ bản, đó là ý tưởng ban đầu (một số CPU hoàn chỉnh) nhưng trong một con chip duy nhất. Ưu điểm: Các nhà thiết kế chip có thể dễ dàng đặt các dây bổ sung cho các tín hiệu đồng bộ vào chip (thay vì phải định tuyến chúng ra trên một chân, sau đó qua mainboard đông đúc và lên thành chip thứ hai).
Siêu máy tính ngày nay đa nhân, đa nhân: Chúng có rất nhiều bo mạch chủ với thường là 2-4 CPU trên đó, mỗi CPU là đa nhân và mỗi nhân đều có RAM riêng.
[EDIT] Bạn đã hiểu khá đúng. Chỉ là một số điểm nhỏ:
Siêu phân luồng theo dõi hai bối cảnh cùng một lúc trong một lõi đơn, cho thấy sự song song hơn với lõi CPU không theo thứ tự. Điều này giữ cho các đơn vị thực thi được tiếp tục hoạt động, ngay cả khi một luồng bị đình trệ do bỏ lỡ bộ nhớ cache, dự đoán sai nhánh hoặc chờ kết quả từ các hướng dẫn có độ trễ cao. Đó là một cách để có được tổng thông lượng nhiều hơn mà không cần tái tạo nhiều phần cứng, nhưng nếu có bất kỳ điều gì, nó sẽ làm chậm từng luồng riêng lẻ. Xem phần Hỏi & Đáp này để biết thêm chi tiết và giải thích về điều sai với cách diễn đạt trước đó của đoạn này.
Vấn đề chính với đa CPU là mã chạy trên chúng cuối cùng sẽ truy cập vào RAM. Có N CPU nhưng chỉ có một bus để truy cập RAM. Vì vậy, bạn phải có một số phần cứng đảm bảo rằng a) mỗi CPU nhận được một lượng truy cập RAM hợp lý, b) việc truy cập vào cùng một phần của RAM không gây ra sự cố và c) quan trọng nhất là CPU 2 sẽ được thông báo khi CPU 1 ghi vào địa chỉ bộ nhớ nào đó mà CPU 2 có trong bộ nhớ đệm bên trong của nó. Nếu điều đó không xảy ra, CPU 2 sẽ vui vẻ sử dụng giá trị được lưu trong bộ nhớ cache, không biết rằng nó đã lỗi thời
Chỉ cần tưởng tượng bạn có các nhiệm vụ trong một danh sách và bạn muốn chia chúng cho tất cả các CPU có sẵn. Vì vậy, CPU 1 sẽ lấy phần tử đầu tiên từ danh sách và cập nhật các con trỏ. CPU 2 cũng sẽ làm như vậy. Vì lý do hiệu quả, cả hai CPU sẽ không chỉ sao chép một vài byte vào bộ nhớ cache mà là toàn bộ "dòng bộ nhớ cache" (bất cứ điều gì có thể là). Giả định rằng, khi bạn đọc byte X, bạn cũng sẽ sớm đọc X + 1.
Bây giờ cả hai CPU đều có một bản sao của bộ nhớ trong bộ nhớ đệm của chúng. CPU 1 sau đó sẽ tìm nạp mục tiếp theo từ danh sách. Nếu không có đồng bộ hóa bộ nhớ cache, nó sẽ không nhận thấy rằng CPU 2 cũng đã thay đổi danh sách và nó sẽ bắt đầu hoạt động trên cùng một mục như CPU 2.
Đây là những gì hiệu quả làm cho đa CPU trở nên phức tạp. Tác dụng phụ của điều này có thể dẫn đến hiệu suất kém hơn những gì bạn nhận được nếu toàn bộ mã chỉ chạy trên một CPU duy nhất. Giải pháp là đa lõi: Bạn có thể dễ dàng thêm nhiều dây nếu bạn cần để đồng bộ hóa bộ nhớ đệm; bạn thậm chí có thể sao chép dữ liệu từ bộ đệm này sang bộ đệm khác (cập nhật các phần của dòng bộ đệm mà không cần phải xóa và tải lại), v.v. Hoặc logic bộ đệm có thể đảm bảo rằng tất cả các CPU đều nhận được cùng một dòng bộ nhớ cache khi chúng truy cập vào cùng một phần của RAM thực, chỉ cần chặn CPU 2 trong vài nano giây cho đến khi CPU 1 thực hiện các thay đổi.
[EDIT2] Lý do chính tại sao đa lõi đơn giản hơn đa CPU là trên bo mạch chủ, bạn không thể chạy tất cả các dây giữa hai chip mà bạn cần để đồng bộ hóa hiệu quả. Thêm vào đó, một tín hiệu chỉ truyền tới đỉnh 30cm / ns (tốc độ ánh sáng; trong một dây, bạn thường có ít hơn nhiều). Và đừng quên rằng, trên một mainboard nhiều lớp, các tín hiệu bắt đầu ảnh hưởng lẫn nhau (nhiễu xuyên âm). Chúng tôi thích nghĩ rằng 0 là 0V và 1 là 5V nhưng trên thực tế, "0" là một cái gì đó giữa -0,5V (tăng tốc khi giảm một dòng từ 1-> 0) và 0,5V và "1" là bất kỳ thứ gì trên 0,8V.
Nếu bạn có mọi thứ bên trong một con chip duy nhất, tín hiệu sẽ chạy nhanh hơn nhiều và bạn có thể có bao nhiêu tùy thích (tốt, gần như vậy :). Ngoài ra, tín hiệu nhiễu xuyên âm dễ kiểm soát hơn nhiều.