Chương 1. Tổng quan về tính toán song song và GPU 1.1 Tổng quan về tính toán song song 1.1 Tổng quan về tính toán song song 1.1 Lịch sử ra đời tính toán song song Trong những thập niên 60, nền tảng để thiết kế máy tính đều dựa trên mô hình của John Von Neumann , với một đơn vị xử lý được nối với một vùng lưu trữ làm bộ nhớ vàtại một thời điểm chỉ có một lệnh được thựcthi.1 Mô tả kiến trúc Von Neumann Với những bài toán yêu cầu về khả năng tính toán và lưu trữ lớn thì mô hình kiến trúc này còn hạn chế. Để tăng cường sức mạnh tính toán giải quyết các bài toán lớn có độ tính toán cao, người ta đưa ra kiến trúc mới, với ý tưởng kết hợp nhiều bộ xử lý vào trong một máy tính, mà hay gọi là xử lý song song (Multiprocessor) hoặc kết hợp sức mạnh tính toán của nhiều máy tính dựa trên kết nối mạng (máy tính song song- multicomputer). Kể từ lúc này, để khai thác được sức mạnh tiềm tàng trong mô hình máy tính nhiều bộ xử lý song song, cũng như trong mô hình mạng máy tính xử lý song song thì các giải thuật tuần tự không còn phù hợp nữa cho nên việc xây dựng thiết kế giải thuật song song là điều quan trọng.
Giải thuật song song có thể phân rã công việc trên các phần tử xử lý khác nhau. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.2 Tại sao phải tính toán song song Theo xu hướng phát triển của công nghệ thông tin, các bộ xử lý đa nhân, đa lõi (multiple processor) đang dần dần thay thế các bộ xử lý đơn lõi (single processor) tuy nhiên với lối lập trình truyền thống (lập trình tuần tự), các câu lệnh, các quá trình xử lý được thực hịên một cách lần lượt, tuần tự như vậy sẽ không phát huy hết công năng, hiệu năng của bộ vi xử lý đa nhân, đa lõi (multiple processor). Lập trình, tính toán song song ra đời như một lời giải cho yêu cầu, thách thức đặt ra là làm thế nào để phát huy công năng, hiệu năng của bộ đa xử lý (multiple processor). Trên thực tế, có rất nhiều bài toán với dữ liệu lớn, độ phức tạp tính toán cao mà đòi hỏi thời gian xử lý ngắn độ chính xác cao.
Ví dụ như các bài toán liên quan tới xử lý ảnh, xử lý tín hiệu, dự báo thời tiết, mô phỏng giao thông, mô phỏng sự chuyển động của các phân tử, nguyên tử, mô phỏng bản đồ gen, các bài toán liên quan đến cơ sở dữ liệu và khai thác cơ sở dữ liệu,… với bộ xử lý đơn lõi thì khó có thể thực hiện và cho kết quả như mong muốn được. Lập trình, tính toán song song là lời giải đáp cho bài toán tăng hiệu năng xử lý đồng thời rút ngắn thời gian xử lý tính toán của người dùng.3 Một số khái niệm xử lý song song Định nghĩa xử lý song song Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồng thời và cùng tham gia giải quyết một bài toán. Nói chung, xử lý song song được thực hiện trên những hệ thống đa bộ xử lý. Phân biệt xử lý song song và xử lý tuần tự Trong tính toán tuần tự với một bộ xử lý thì tại mỗi thời điểm chỉ được thực hiện một phép toán.
Trong tính toán song song thì nhiều bộ xử lý cùng kết hợp với nhau để giải quyết cùng một bài toán cho nên giảm được thời gian xử lý vì mỗi thời điểm có thể thực hiện đồng thời nhiều phép toán. Dưới đây là bảng so sánh sự khác nhau giữa lập trình tuần tự và lập trình song song. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.1: So sánh sự khác nhau giữa lập trình tuần tự và song song Lập trình tính toán tuần tự Lập trình tính toán song song - Chương trình ứng dụng chạy trên bộ xử lý đơn - Chương trình ứng dụng chạy trên hai hoặc (single processor). nhiều bộ xử lý.
- Các chỉ thị lệnh được bộ xử lý (CPU) thực hiện - Các chỉ thị lệnh được các bộ vi xử lý thực một cách lần lượt, tuần tự. hiện một cách song song, đồng thời. - Mỗi chỉ thị lệnh có thể thao tác trên hai hoặc - Mỗi chỉ thị lệnh chỉ thực thiện trên duy nhất một nhiều thành phần dữ liệu khác nhau. thành phần dữ liệu.
- Ngoài việc đảm bảo viết đúng mã lệnh theo - Lập trình viên chỉ cần đảm bảo viết đúng mã lệnh giải thuật, lập trình viên còn phải chỉ ra trong theo giải thuật chương trình là chương trình có thể chương trình đoạn mã nào được thực hiện dịch, chạy và cho ra kết quả. song song, đồng thời. - Thường được áp dụng đối với các bài toán có dữ - Thường được áp dụng đối với các bài toán liệu nhỏ, độ phức tạp bình thường và thời gian cho có dữ liệu lớn, độ phức tạp cao và thời gian phép. Mục đích của xử lý song song Thực hiện tính toán nhanh trên cơ sở sử dụng nhiều bộ xử lý đồng thời.
Cùng với tốc độ xử lý nhanh, việc xử lý song song cũng sẽ giải được những bài toán phức tạp yêu cầu khối lượng tính toán lớn.2 Mô hình máy tính song song Một hệ thống máy tính song song là một máy tính với nhiều hơn một bộ xử lý cho phép xử lý song song. Định nghĩa này có thể bao quát được tất cả các siêu máy tính với hàng trăm bộ xử lý, các mạng máy tính trạm,… Thậm chí trong mấy năm gần đây các máy tính có vi xử lý áp dụng công nghệ mới multicore cho phép nhiều nhân trong một bộ xứ lý cũng được xem là hệ thống máy tính song song. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 8 Một trong những phân loại kiến trúc máy tính song song được biết đến nhiều nhất là phân loại của Flynn, được sử dụng từ năm 1966. Michael Flynn dựa vào đặc tính về số lượng bộ xử lý, số chương trình thực hiện, cấu trúc bộ nhớ,… để phân máy tính thành bốn loại dựa trên sự biểu hiện của cặp khái niệm: Dòng lệnh (instruction stream) và dòng dữ liệu (data stream), mỗi loại nằm trong một trong hai trạng thái đơn (single) hoặc đa (multiple).
Một dòng dữ liệu là một dãy các dữ liệu được sử sụng để điều khiển các dòng lệnh và dữ liệu có thể được phân ra làm 4 loại như sau : Bảng 1.2: Mô tả phân loại kiến trúc của Flynn Dòng lệnh (instruction Dòng dữ liệu (data Loại kiến trúc stream) stream) Trạng thái đơn (single) Trạng thái đơn SISD (single) Single Instruction Single Data Trạng thái đơn (single) Trạng thái đa SIMD (multiple) Single Instruction Multiple Trạng thái đa (multiple) Trạng thái đơn Data MISD (single) Multiple Instruction Single Trạng thái đa (multiple) Trạng thái đa Data MIMD (multiple) Multiple Instruction Multiple Data Sự phân chia này được dựa trên kiến trúc bộ nhớ của các máy tính song song. Các máy tính song song có bộ nhớ chia sẻ (shared memory) có nhiều bộ xử lý cùng được truy nhập đến một vùng nhớ tổng thể dùng chung. Tất cả các sự thay đổi nội dung bộ nhớ do một bộ xử lý tạo ra sẽ được nhận biết bởi các bộ xử lý khác. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.2 Máy tính song song có bộ nhớ chia sẻ Trong lớp máy tính này có thể phân chia làm 2 lớp nhỏ hơn: Lớp UMA (Uniform Memory Access – Truy cập bộ nhớ đồng nhất) cho phép thời gian truy cập bộ nhớ đối với mỗi bộ xử lý là như nhau.
Còn lại, các máy tính song song có bộ nhớ phân tán cũng có nhiều bộ xử lý nhưng với mỗi bộ xử lý chỉ có thể truy cập đến bộ nhớ cục bộ của nó, không có một vùng nhớ dùng chung nào cho tất cả các bộ xử lý. Các bộ xử lý hoạt động độc lập với nhau và sự thay đổi trong vùng nhớ cục bộ không làm ảnh hưởng đến vùng nhớ của các bộ xử lý khác.3 Máy tính song song có bộ nhớ phân tán 1.1 Kiến trúc đơn dòng lệnh đơn luồng dữ liệu (SISD) Máy tính SISD chỉ có một CPU, ở mỗi thời điểm thực hiện một chỉ lệnh và chỉ đọc, ghi một mục dữ liệu. Tất cả các máy tính SISD chỉ có một thanh ghi (register) được gọi là bộ đệm chương trình, được sử dụng để nạp địa chỉ của lệnh tiếp theo và kết quả là LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 10 thực hiện theo một thứ tự xác định của các câu lệnh.4 Mô hình kiến trúc máy SISD 1.2 Kiến trúc đơn dòng lệnh đa luồng dữ liệu (SIMD) Máy tính SIMD có một đơn vị điều khiển để điều khiển nhiều đơn vị xử lý thực hiện theo một luồng các câu lệnh. CPU phát sinh tín hiệu điều khiển tới tất cả các phần xử lý, những bộ xử lý này cùng thực hiện một phép toán trên các mục dữ liệu khác nhau, nghĩa là mỗi bộ xử lý có luồng dữ liệu riêng.
Mô hình SIMD còn được gọi là SPMD, đơn chương trình và đa dữ liệu.5 Mô hình kiến trúc máy SIMD 1.3 Kiến trúc đa dòng lệnh đơn luồng dữ liệu (MISD) Máy tính loại MISD có thể thực hiện nhiều chương trình (nhiều lệnh) trên cùng một mục dữ liệu (ngược với máy tính loại SIMD). LUAN VAN CHAT LUONG download : add luanvanchat@agmail.6 Mô hình kiến trúc máy MISD 1.4 Kiến trúc đa dòng lệnh đa luồng dữ liệu (MIMD) Máy tính loại MIMD gọi là đa bộ xử lý, trong đó mỗi bộ xử lý có thể thực hiện những luồng lệnh (chương trình) khác nhau trên các luồng dữ liệu riêng. Hầu hết các hệ thống MIMD đều có bộ nhớ riêng và cũng có thể truy cập vào bộ nhớ chung khi cần, do vậy giảm thiểu được thời gian trao đổi dữ liệu giữa các bộ xử lý trong hệ thống. Đây làloại kiến trúc phức tạp nhất, nhưng nó là mô hình hỗ trợ xử lý song song cao nhất và đã có nhiều máy tính được thiết kế theo kiến trúc này, ví dụ: BBN Butterfly, Alliant FX, iSPC của Intel,.
Kiến trúc máy MIMD có mô hình hoạt động theo Hình 1.7 Mô hình kiến trúc máy MIMD 1.3 Mô hình lập trình song song Công việc lập trình song song bao gồm việc thiết kế, lập trình các chương trình máy tính song song sao cho chạy được trên các hệ thống máy tính song song. Hay có nghĩa là song song hoá các chương trình tuần tự nhằm giải quyết một vấn đề lớn hoặc LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12 làm giảm thời gian thực thi hoặc cả hai.