Chương trình song song là gì?
Có nhiều cách đặt các máy song song để tăng nhanh việc thực hiện một chương trình. Hiện nay nhiều máy tính chứa nhiều bộ xử lý: từ các trạm làm việc đơn lẻ Unix đến các máy tính đồ sộ song song hàng loạt. Những máy lớn nhất chứa hàng nghìn bộ xử lý. Người ta cũng có thể nối các máy tính với nhau để phân phối các phép tính. Cái khó là phải biết máy nào làm gì. Thường đối với những công việc thông dụng thì máy tính tự phân bổ công việc mà người sử dụng không thấy.
Nhưng phân phối cùng một chương trình trên nhiều máy tính lại là một chuyện khác. Đặc biệt là phải biết chương trình con nào tiếp cận với các dữ liệu, liệu nó có thể thay đổi các dữ liệu này mà không ảnh hưởng đến chương trình bên cạnh không, bằng cách nào và khi nào các bộ phận liên lạc với nhau, v.v... Một số ngôn ngữ để người lập trình tự giao việc trong khi soạn chương trình. Khi ấy là thêm một chữ đặc biệt vào cú pháp, nghĩa là hai dãy chỉ dẫn là độc lập và có thể thực hiện riêng rẽ. Đương nhiên người ta nghĩ rằng máy tính tự tạo ra sự song hành, nhưng một tham vọng như vậy vẫn nằm trong lĩnh vực nghiên cứu. Có hai loại cấu tạo chính cho những máy song song hàng loạt. Phương án thứ nhất là xử lý tất cả các bộ xử lý theo cùng một cách. Khi ấy một đơn vị trung tâm duy nhất truyền các chỉ dẫn giống nhau cho các bộ xử lý để chúng làm việc một cách đồng bộ với bộ nhớ riêng của chúng (cấu tạo SIMD: Single Instruction, Multiple Data - một chỉ dẫn, nhiều dữ liệu).
Các siêu máy tính khác, như các máy IBM, không phân phối chỉ dẫn. Mỗi bộ xử lý nhận lệnh từ một đơn vị trung tâm khác nhau và toàn bộ liên lạc với nhau qua một mạng kết nối (MIMD: Multiple Instructions, Multiple Data - nhiều chỉ dẫn, nhiều dữ liệu). Như vậy các bộ xử lý là không đồng bộ.