Tính toán song song

Bối cảnh

Theo truyền thống, phần mềm máy tính được viết cho tính toán tuần tự. Để giải quyết một vấn đề, một thuật toán được xây dựng và thực thi tuần tự theo các dòng lệnh. Những câu lệnh này lại được chạy trên một đơn vị xử lý trung tâm (CPU) của chiếc máy tính. Chỉ có một câu lệnh được chạy trong một khoảng thời gian. Sau khi câu lệnh đó kết thúc, câu tiếp theo mới được thực hiện.
Tính toán song song, mặt khác, lại sử dụng đồng thời các bộ đa xử lý để giải quyết một vấn đề. Việc này được hoàn thành bằng cách tách vấn đề thành nhiều phần độc lập sau đó mỗi bộ xử lý có thể chạy thuật toán của nó đồng thời với những cái khác. Các bộ phận xử lý có thể khác nhau và bao gồm các dạng tài nguyên như: một máy tính đơn gồm nhiều bộ đa xử lý, nhiều máy tính được kết nối mạng, phần cứng chuyên biệt, hoặc có thể là sự kết hợp của những dạng trên.
Tăng tần số là cách chủ đạo để cải thiện khả năng xử lý của máy tính từ giữa những năm 1980 cho đến năm 2004. Thời gian chạy của một chương trình được tính bằng số câu lệnh nhân với thời gian trung bình của một câu lệnh. Như vậy nếu duy trì tất cả những thứ khác ổn định, gia tăng tần số xung nhịp sẽ làm giảm thời gian trung bình để thực thi một câu lệnh. Như vậy tần số tăng sẽ giảm đi thời gian chạy của những chương trình chạy trong CPU.
Tuy nhiên, mức tiêu hao năng lượng của một con chip được tính bởi công thức P = C × V² × F, trong đó P là công suất tiêu thụ, C là điện dung được chuyển trong mỗi chu kỳ xung nhịp (tỷ lệ thuận với số lượng transistor có đầu vào thay đổi), V là điện áp, và F là tần số của bộ xử lý (số chu kỳ mỗi giây). Như vậy tăng tần số cũng làm năng lượng sử dụng của bộ xử lý tăng theo. Việc tăng tiêu hao năng lượng này đã dẫn đến quyết định ngừng phát triển bộ xử lý Tejas và Jayhawk của Intel tháng 5 năm 2004, được cho là sự chấm dứt của việc sử dụng tăng tần số như một kiến trúc máy tính chủ đạo.
Định luật Moore là một quan sát thực tế cho thấy mật độ transistor trong bộ vi xử lý tăng gấp hai lần sau mỗi 18 đến 24 tháng. Bất chấp nhược điểm về tiêu hao năng lượng, và những dự đoán về sự chấm dứt của nó, định luật Moore vẫn khá thông dụng. Với sự kết thúc của phương pháp tăng tần số, các transistor bổ sung này (không còn được sử dụng cho việc tăng tần số) có thể được sử dụng để tạo ra phần cứng bổ sung cho tính toán song song.

Fine-grained, coarse-grained, và embarrassing parallelism

Các ứng dụng thường được phân loại theo mức độ thường xuyên của các công việc phụ của họ cần phải đồng bộ hóa hoặc giao tiếp với nhau. Một ứng dụng được cho là song song hạt mịn nếu các công việc phụ của nó giao tiếp nhiều lần mỗi giây; gọi là song song hạt thô nếu chúng kết nối nhiều lần mỗi giây, và là embarrassingly parallel nếu rất ít hoặc không bao giờ kết nối. Các ứng dụng embarrassingly parallel được xem là dễ song song nhất.

Phân loại Flynn

Michael J. Flynn đã tạo ra một trong những hệ thống phân loại sớm nhất cho các máy tính và chương trình song song (và tuần tự), bây giờ được gọi là Phép phân loại của Flynn. Flynn phân loại chương trình và máy tính bằng cách chúng có thể đã được điều hành bằng cách sử dụng một hay nhiều bộ chỉ lệnh, những chỉ lệnh đó có thể có hoặc không sử dụng một hay nhiều bộ dữ liệu.
Kiểu phân loại single-instruction-single-data (SISD) tương đương với một chương trình hoàn toàn tuần tự. Kiểu phân loại single-instruction-multiple-data (SIMD) tương tự như thực hiện các hoạt động liên tục trên cùng một tập dữ liệu lớn. Kiểu này thường được dùng trong các ứng dụng xử lý tín hiệu. Multiple-instruction-single-data (MISD) là một kiểu phân loại hiếm khi được sử dụng. Trong khi các kiến trúc máy tính để xử lý vấn đề này được nghĩ ra (ví dụ như mảng tâm thu), vài ứng dụng phù hợp được hiện thực hóa. Các chương trình multiple-instruction-multiple-data (MIMD) đang là dạng phổ biến nhất trong các chương trình song song.
Theo David A. Patterson và John L. Hennessy, "Một số cỗ máy là sự kết hợp của những loại này, nhưng mô hình cổ điển này đã tồn tại bởi tính đơn giản, dễ hiểu, và đưa ra được xấp xỉ đầu tiên với kết quả tốt. Nó cũng là chương trình được sử dụng rộng rãi nhất-có lẽ vì tính dễ hiểu của mình."

Bộ nhớ và sự kết nối

Bộ nhớ chính trong một máy tính song song có thể là bộ nhớ chia sẻ (chia sẻ giữa tất cả các yếu tố xử lý trong một vùng địa chỉ đơn lẻ), hoặc bộ nhở phân tán (trong đó mỗi yếu tố xử lý có vòng địa chỉ cục bộ riêng). Bộ nhớ phân tán đề cập đến việc bộ nhớ được phân phối một cách hợp lý, nhưng cũng bao hàm đến việc nó bị phân tán vật lý. Bộ nhớ chia sẻ phân tán và ảo hóa bộ nhớ kết hợp hai phương pháp tiếp cận, nơi mà các phần tử xử lý có bộ nhớ cục bộ riêng và truy cập vào bộ nhớ trên bộ xử lý không cục bộ. Truy cập vào bộ nhớ cục bộ thường nhanh hơn là truy cập vào bộ nhớ không cục bộ.
Kiến trúc máy tính trong đó mỗi phần tử của bộ nhớ chính có thể được truy cập với độ trễ và băng thông bằng nhau được gọi là hệ thống Truy cập bộ nhớ đồng bộ (UMA). Thông thường, việc đó chỉ có thể được thực hiện bởi một hệ thống bộ nhớ chia sẻ, trong đó bộ nhớ không bị phân tán vật lý. Một hệ thống không có thuộc tính này được gọi là kiến trúc truy cập bộ nhớ không đồng bộ (NUMA). Hệ thống bộ nhớ phân tán có NUMA.
Hệ thống máy tính sử dụng các vùng nhớ đệm—các bộ nhớ nhỏ, nhanh đặt gần bộ xử lý mà lưu trữ các bản sao tạm thời của các giá trị bộ nhớ (gần trong cả ý nghĩa về vật lý và logic). Hệ thống máy tính song song gặp khó khăn với vùng nhớ đệm có thể lưu trữ cùng một giá trị ở nhiều vị trí, với khả năng thực thi chương trình không chính xác. Những máy tính này yêu cầu một hệ thống đồng bộ vùng nhớ đệm, trong đó theo dõi các giá trị lưu trữ và dọn dẹp chúng theo trình tự, do đó đảm bảo chương trình được thực hiện đúng. Bus snooping là một trong những phương pháp phổ biến nhất cho việc theo dõi những giá trị nào đang được truy cập (và nên được thanh lọc). Thiết kế hệ thống đồng bộ vùng nhớ đệm lớn, hiệu suất cao là một vấn đề rất khó trong kiến trúc máy tính. Kết quả là, kiến trúc máy tính chia sẻ bộ nhớ không được coi trọng như hệ thống bộ nhớ phân tán.
Kiểu kết nối bộ xử lý-bộ xử lý và bộ xử lý-bộ nhớ có thể được thực hiện trong phần cứng theo nhiều cách, bao gồm thông qua chia sẻ (bộ nhớ đa cổng hoặc đa hợp), một bộ chuyển mạch thanh ngang, một dòng chia sẻ hay một mạng liên kết của vô số các cấu trúc liên kết bao gồm star, ring, tree, hypercube, fat hypercube (một hypercube với nhiều hơn một bộ xử lý tại nút a), hoặc mạng n chiều.
Máy tính song song dựa trên kết nối mạng cần phải có một số loại định tuyến để cho phép việc truyền thông điệp giữa các nút không được kết nối trực tiếp. Phương pháp được sử dụng cho kết nối giữa các bộ xử lý có thể được phân cấp trong các máy vi xử lý lớn.

Các dạng máy tính song song

Máy tính song song có thể được tạm phân loại theo mức độ các phần cứng hỗ trợ song song. Kiểu phân loại này nói chung tương tự như khoảng cách giữa các nút tính toán cơ bản. Đây không phải là loại trừ lẫn nhau; ví dụ, các cụm đa xử lý đối xứng là tương đối phổ biến.

Máy tính song song chuyên ngành

Trong tính toán song song, có những thiết bị song song chuyên ngành vẫn còn những khu vực quan tâm thích hợp. Khi không có miền riêng, chúng có xu hướng áp dụng đối với chỉ một vài phần của vấn đề song song.

Reconfigurable computing with field-programmable gate arrays

Reconfigurable computing is the use of a field-programmable gate array (FPGA) as a co-processor to a general-purpose computer. An FPGA is, in essence, a computer chip that can rewire itself for a given task.
FPGAs can be programmed with hardware description languages such as VHDL or Verilog. However, programming in these languages can be tedious. Several vendors have created C to HDL languages that attempt to emulate the syntax and/or semantics of the C programming language, with which most programmers are familiar. The best known C to HDL languages are Mitrion-C, Impulse C, DIME-C, and Handel-C. Specific subsets of SystemC based on C++ can also be used for this purpose.
AMD's decision to open its HyperTransport technology to third-party vendors has become the enabling technology for high-performance reconfigurable computing. According to Michael R. D'Amour, Chief Operating Officer of DRC Computer Corporation, "when we first walked into AMD, they called us 'the socket stealers.' Now they call us their partners."