Cách xử lý song song hoạt động

Apr 28 2008
Mọi người đang chuyển sang xử lý song song để chia sẻ các công việc tính toán lớn giữa một số chip nhỏ hơn, rẻ hơn. Nhưng làm thế nào để mỗi bộ xử lý biết hoạt động của nó?
Tất cả sức mạnh tính toán đều phụ thuộc vào bộ xử lý.

Nếu một máy tính là con người, thì bộ xử lý trung tâm ( CPU ) sẽ là bộ não của nó. CPU là một bộ vi xử lý - một công cụ tính toán trên một con chip. Mặc dù các bộ vi xử lý hiện đại có kích thước nhỏ nhưng chúng cũng thực sự mạnh mẽ. Họ có thể giải thích hàng triệu hướng dẫn mỗi giây. Mặc dù vậy, có một số vấn đề tính toán phức tạp đến mức một bộ vi xử lý mạnh sẽ cần nhiều năm để giải quyết chúng.

Các nhà khoa học máy tính sử dụng các cách tiếp cận khác nhau để giải quyết vấn đề này. Một cách tiếp cận tiềm năng là thúc đẩy các bộ vi xử lý mạnh hơn. Thông thường, điều này có nghĩa là phải tìm cách lắp nhiều bóng bán dẫn hơn trên chip vi xử lý. Các kỹ sư máy tính đang chế tạo bộ vi xử lý với các bóng bán dẫn chỉ rộng vài chục nanomet . Một nanomet nhỏ như thế nào? Nó là một phần tỷ mét. Một tế bào hồng cầu có đường kính 2.500 nanomet - chiều rộng của các bóng bán dẫn hiện đại chỉ bằng một phần nhỏ so với kích thước đó.

Việc xây dựng các bộ vi xử lý mạnh hơn đòi hỏi một quá trình sản xuất cường độ cao và tốn kém. Một số vấn đề tính toán mất nhiều năm để giải quyết ngay cả với lợi ích của bộ vi xử lý mạnh hơn. Một phần vì những yếu tố này, các nhà khoa học máy tính đôi khi sử dụng một cách tiếp cận khác: xử lý song song .

Nói chung, xử lý song song có nghĩa là ít nhất hai bộ vi xử lý xử lý các phần của một tác vụ tổng thể. Khái niệm này khá đơn giản: Một nhà khoa học máy tính chia một vấn đề phức tạp thành các phần thành phần bằng cách sử dụng phần mềm đặc biệt được thiết kế riêng cho nhiệm vụ. Sau đó, người đó gán từng bộ phận thành phần cho một bộ xử lý chuyên dụng. Mỗi bộ xử lý giải quyết một phần của vấn đề tính toán tổng thể. Phần mềm sẽ tập hợp lại dữ liệu để đi đến kết luận cuối cùng của vấn đề phức tạp ban đầu.

Đó là một cách nói công nghệ cao rằng sẽ dễ dàng hoàn thành công việc hơn nếu bạn có thể chia sẻ tải. Bạn có thể chia tải giữa các bộ xử lý khác nhau được đặt trong cùng một máy tính hoặc bạn có thể nối mạng nhiều máy tính với nhau và chia tải cho tất cả chúng. Có một số cách để đạt được cùng một mục tiêu.

Các cách tiếp cận khác nhau để xử lý song song là gì? Tìm hiểu trong phần tiếp theo.

Các phương pháp tiếp cận xử lý song song

Để hiểu xử lý song song, chúng ta cần xem xét bốn mô hình lập trình cơ bản. Các nhà khoa học máy tính xác định các mô hình này dựa trên hai yếu tố: số lượng dòng lệnh và số lượng dòng dữ liệu mà máy tính xử lý. Các luồng lệnh là các thuật toán . Thuật toán chỉ là một chuỗi các bước được thiết kế để giải quyết một vấn đề cụ thể. Luồng dữ liệu là thông tin được lấy từ bộ nhớ máy tính được sử dụng làm giá trị đầu vào cho các thuật toán. Bộ xử lý cắm các giá trị từ luồng dữ liệu vào các thuật toán từ luồng lệnh. Sau đó, nó bắt đầu hoạt động để thu được một kết quả.

Máy tính Chỉ dẫn Đơn, Dữ liệu Đơn ( SISD ) có một bộ xử lý xử lý một thuật toán sử dụng một nguồn dữ liệu tại một thời điểm. Máy tính xử lý và xử lý từng tác vụ theo thứ tự, và vì vậy, đôi khi người ta sử dụng từ " tuần tự " để mô tả máy tính SISD. Chúng không có khả năng tự thực hiện xử lý song song.

Máy tính Nhiều Lệnh, Dữ liệu Đơn ( MISD ) có nhiều bộ xử lý. Mỗi bộ xử lý sử dụng một thuật toán khác nhau nhưng sử dụng cùng một dữ liệu đầu vào được chia sẻ. Máy tính MISD có thể phân tích cùng một tập hợp dữ liệu bằng cách sử dụng một số hoạt động khác nhau cùng một lúc. Số lượng hoạt động phụ thuộc vào số lượng bộ xử lý. Không có nhiều ví dụ thực tế về máy tính MISD, một phần vì các vấn đề mà máy tính MISD có thể tính toán là không phổ biến và chuyên biệt.

Máy tính một lệnh, nhiều dữ liệu ( SIMD ) có một số bộ xử lý tuân theo cùng một bộ lệnh, nhưng mỗi bộ xử lý nhập dữ liệu khác nhau vào các lệnh đó. Máy tính SIMD chạy các dữ liệu khác nhau thông qua cùng một thuật toán. Điều này có thể hữu ích để phân tích khối lượng lớn dữ liệu dựa trên cùng một tiêu chí. Nhiều bài toán tính toán phức tạp không phù hợp với mô hình này.

Máy tính Nhiều Lệnh, Nhiều Dữ liệu ( MIMD ) có nhiều bộ xử lý, mỗi bộ có khả năng chấp nhận luồng lệnh riêng của nó độc lập với các bộ khác. Mỗi bộ xử lý cũng kéo dữ liệu từ một luồng dữ liệu riêng biệt. Một máy tính MIMD có thể thực hiện nhiều quy trình khác nhau cùng một lúc. Máy tính MIMD linh hoạt hơn máy tính SIMD hoặc MISD, nhưng việc tạo ra các thuật toán phức tạp giúp các máy tính này hoạt động trở nên khó khăn hơn. Hệ thống Chương trình Đơn, Nhiều Dữ liệu ( SPMD ) là một tập hợp con của MIMD. Máy tính SPMD có cấu trúc giống như MIMD, nhưng nó chạy cùng một bộ hướng dẫn trên tất cả các bộ xử lý.

Trong số bốn máy tính này, máy tính SIMD và MIMD là kiểu máy phổ biến nhất trong các hệ thống xử lý song song. Mặc dù các máy tính SISD không thể tự thực hiện xử lý song song, nhưng có thể nối mạng một số chúng lại với nhau thành một cụm . CPU của mỗi máy tính có thể hoạt động như một bộ xử lý trong một hệ thống song song lớn hơn. Cùng với nhau, các máy tính hoạt động giống như một siêu máy tính duy nhất. Kỹ thuật này có tên riêng: điện toán lưới . Giống như máy tính MIMD, hệ thống điện toán lưới có thể rất linh hoạt với phần mềm phù hợp.

Làm thế nào để một hệ thống xử lý song song giải quyết các vấn đề tính toán? Tìm hiểu trong phần tiếp theo.

Sự khác biệt của ý kiến

Một số người nói rằng điện toán lưới và xử lý song song là hai lĩnh vực khác nhau. Những người khác nhóm cả hai lại với nhau dưới sự bảo trợ của máy tính hiệu suất cao . Một số ít đồng ý rằng xử lý song song và tính toán lưới là tương tự nhau và hướng tới sự hội tụ , nhưng hiện tại vẫn là các kỹ thuật khác biệt.

Tính toán xử lý song song

Riêng mỗi bộ vi xử lý hoạt động giống như bất kỳ bộ vi xử lý nào khác . Các bộ xử lý hoạt động dựa trên các lệnh được viết bằng hợp ngữ . Dựa trên các hướng dẫn này, bộ xử lý thực hiện các phép toán trên dữ liệu được lấy từ bộ nhớ máy tính . Bộ xử lý cũng có thể di chuyển dữ liệu đến một vị trí bộ nhớ khác.

Trong hệ thống tuần tự, không thành vấn đề nếu các giá trị dữ liệu thay đổi do hoạt động của bộ xử lý. Bộ xử lý có thể kết hợp giá trị mới vào các quy trình trong tương lai và tiếp tục. Trong một hệ thống song song, những thay đổi trong giá trị có thể là vấn đề. Nếu nhiều bộ xử lý đang làm việc từ cùng một dữ liệu nhưng các giá trị của dữ liệu thay đổi theo thời gian, các giá trị xung đột có thể khiến hệ thống hoạt động chậm hoặc gặp sự cố. Để ngăn chặn điều này, nhiều hệ thống xử lý song song sử dụng một số hình thức nhắn tin giữa các bộ xử lý.

Bộ xử lý dựa vào phần mềm để gửi và nhận tin nhắn. Phần mềm cho phép một bộ xử lý giao tiếp thông tin với các bộ xử lý khác. Bằng cách trao đổi tin nhắn, bộ xử lý có thể điều chỉnh các giá trị dữ liệu và luôn đồng bộ với nhau. Điều này rất quan trọng vì một khi tất cả các bộ xử lý hoàn thành nhiệm vụ của mình, CPU phải tập hợp lại tất cả các giải pháp riêng lẻ thành một giải pháp tổng thể cho vấn đề tính toán ban đầu. Hãy coi nó giống như một trò chơi xếp hình - nếu tất cả các bộ xử lý vẫn đồng bộ, các mảnh ghép sẽ khớp với nhau một cách liền mạch. Nếu các bộ xử lý không đồng bộ, các mảnh ghép có thể không khớp với nhau.

Có hai yếu tố chính có thể ảnh hưởng đến hiệu suất hệ thống: độ trễbăng thông . Độ trễ đề cập đến khoảng thời gian cần thiết để bộ xử lý truyền kết quả trở lại hệ thống. Sẽ không tốt nếu bộ xử lý mất ít thời gian hơn để chạy một thuật toán so với việc truyền thông tin kết quả trở lại hệ thống tổng thể. Trong những trường hợp như vậy, một hệ thống máy tính tuần tự sẽ thích hợp hơn. Băng thông đề cập đến lượng dữ liệu mà bộ xử lý có thể truyền trong một khoảng thời gian cụ thể. Một hệ thống xử lý song song tốt sẽ có cả độ trễ thấp và băng thông cao.

Đôi khi, xử lý song song không nhanh hơn tính toán tuần tự. Nếu mất quá nhiều thời gian để CPU của máy tính lắp ráp lại tất cả các giải pháp bộ xử lý song song riêng lẻ, thì một máy tính tuần tự có thể là lựa chọn tốt hơn. Khi các nhà khoa học máy tính cải tiến các kỹ thuật xử lý song song và các lập trình viên viết phần mềm hiệu quả, điều này có thể trở nên ít vấn đề hơn.

Để tìm hiểu thêm về xử lý song song, hãy làm theo các liên kết trên trang tiếp theo.

Bạn đang nhận tôi?

Một hệ thống trao đổi tin nhắn đôi khi được gọi là giao diện truyền thông điệp ( MPI ). Một MPI tốt chỉ gửi thông báo đến các bộ xử lý cần biết giá trị của dữ liệu được chia sẻ. Giải pháp thay thế là gửi thông báo đến mọi bộ xử lý trong hệ thống, điều này có thể làm chậm hiệu suất hệ thống.

Nhiều thông tin hơn

Những bài viết liên quan

  • Cách hoạt động của bit và byte
  • Cách Boolean Logic hoạt động
  • Cách hoạt động của bộ nhớ máy tính
  • Cách hoạt động của thương mại điện tử
  • Cách thức hoạt động của cổng điện tử
  • Cách hoạt động của mã hóa
  • Cách thức hoạt động của tin tặc
  • Cách hoạt động của mạng gia đình
  • Cách hoạt động của bộ vi xử lý
  • Hệ điều hành hoạt động như thế nào
  • Cách PC hoạt động
  • Máy tính lượng tử sẽ hoạt động như thế nào
  • Cách hoạt động của chất bán dẫn
  • Cách máy chủ web hoạt động

Các liên kết tuyệt vời hơn

  • Xử lý song song Linux HOWTO
  • Tommesani

Nguồn

  • Brown, Martin. "So sánh lưới truyền thống với tính toán hiệu suất cao." IBM. Ngày 13 tháng 6 năm 2006. http://mcslp.com/gridpdfs/gr-tradhp.pdf
  • Dietz, Hank. "Xử lý song song Linux HOWTO." Aggregate.org. Ngày 5 tháng 1 năm 1998. Truy cập ngày 29 tháng 3 năm 2008. http://aggregate.org/LDP/19980105/pphowto.html
  • "Tiến trình song song." SearchDataCenter. Ngày 27 tháng 3 năm 2007. Truy cập ngày 29 tháng 3 năm 2008. http://searchdatacenter.techtarget.com/sDefinition/0,,sid80_gci212747,00.html
  • "Mô hình lập trình." Tommesani. Truy cập ngày 29 tháng 3 năm 2008. http://www.tommesani.com/ProgrammingModels.html.