Chu trình cổ điển mà CPU tuân theo là:
Hướng dẫn tìm nạp -> Giải mã nó -> Thực thi nó
Lý do là hầu hết các vấn đề mà mọi người trong lịch sử muốn giải quyết với máy tính đều liên quan đến một số bước, từng bước một và theo thứ tự, trong đó kết quả của một số bước đó có thể ảnh hưởng đến các bước sau. Với những vấn đề như vậy, nhảy xung quanh và tấn công nó từ giữa bằng cách sử dụng nhiều "công nhân" không hoạt động tốt như vậy. Vì vậy, mô hình này đã phục vụ tốt các loại chương trình, mà thực sự vẫn còn rất phổ biến. (Đó là, cho đến khi kết xuất đồ họa 3D trở nên phổ biến ...)
Mô hình trên đã được tối ưu hóa và sửa đổi qua nhiều năm, tất nhiên. Và công việc đã được tiến triển trong việc đảm bảo ít CPU hơn khi không hoạt động. Ngay cả khi 68000 bạn đã có "pipelining", trong đó nhiều hướng dẫn thực sự là "trong chuyến bay" trong các phần khác nhau của CPU (và đây là lý do tại sao dự đoán nhánh được phát triển, bởi vì nếu bạn có nhiều hướng dẫn, thì phải vứt bỏ kết quả vì một chi nhánh, bạn mất hiệu suất). Hôm nay bạn có những thứ bổ sung ngăn CPU ngừng hoạt động hoặc chờ đợi một cái gì đó, như:
- bộ đệm (đôi khi ngăn CPU phải chờ bộ nhớ chậm)
- thực hiện ngoài đơn hàng (sắp xếp lại các hướng dẫn đã tìm nạp vào một đơn hàng thực thi hiệu quả hơn)
- đăng ký đổi tên (cho phép thực hiện theo thứ tự hoạt động tốt hơn, bằng cách đưa ra hướng dẫn bản sao sổ đăng ký của riêng họ trong khi các hướng dẫn khác hoàn thành công việc của họ)
Vì vậy, mỗi bộ xử lý hoặc lõi chứa một số hệ thống con hoạt động cùng nhau để diễn giải và thực hiện một luồng lệnh. Trong một nghĩa nào đó, các bộ phận của CPU hiện đại thực sự đang làm việc trên một cái gì đó và các bộ phận khác đang làm việc trên một cái gì đó khác, cùng một lúc.
Nhưng, trong khi chúng có thể được thực hiện rất hiệu quả bằng cách sử dụng các kỹ thuật trên, cuối cùng tất cả chúng đều hoạt động cùng nhau trên cùng một luồng hướng dẫn. Vì vậy, họ không thể hoàn toàn độc lập với nhau. Nếu bạn muốn thực thi hai luồng lệnh cùng một lúc, bạn cần hai CPU hoặc lõi.
Một hệ điều hành đa nhiệm hiện đại đang nảy giữa các luồng lệnh khác nhau được lưu trữ (tức là các chương trình) trong bộ nhớ. Những gì HĐH làm là cắt chương trình khi nó chiếm quá nhiều thời gian (hầu hết các CPU được thiết kế cho môi trường đa nhiệm đều có bộ đếm thời gian gây ra IRQ sau một khoảng thời gian nhất định hoặc cơ chế tương tự như vậy) hoặc chuyển sang một tác vụ khác nếu quá trình đang chờ trên một số loại I / O hoặc đầu vào. Nó không bao giờ thực hiện hai lệnh cùng một lúc trên một CPU.
Tôi nghĩ một cái gì đó giống như ý tưởng mà bạn đang nói đến đã được thử với kiến trúc Itanium và đó là kiến trúc VLIW . Đọc bài viết trên Wikipedia, nó giải thích mọi thứ tốt hơn và sâu hơn một chút so với tôi đang cố gắng ở đây.