Đồ án: Tìm hiểu Tính toán phân tán và Lập trình ứng dụng với PVM

Đồ án toán học nghiên cứu tính toán phân tán và ứng dụng, thiết kế chi tiết, tính toán kỹ thuật theo tiêu chuẩn, đánh giá tính khả thi dự án.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp
64
2
0

Phí lưu trữ

30 Point

Tóm tắt

I. Khám phá đồ án tính toán phân tán và ứng dụng thực tiễn

Đồ án tính toán phân tán và ứng dụng nghiên cứu các mô hình, phương pháp và công nghệ nhằm giải quyết những bài toán phức tạp. Các vấn đề như xử lý ngôn ngữ tự nhiên, dự báo thời tiết đòi hỏi tốc độ xử lý cực cao và khối lượng dữ liệu khổng lồ. Máy tính tuần tự kiểu Von Neumann truyền thống không còn đáp ứng đủ yêu cầu. Dù tốc độ bộ xử lý đã tăng đáng kể, các giới hạn vật lý ngăn cản sự phát triển vô hạn. Do đó, khai thác khả năng xử lý song song và phân tán là hướng đi tất yếu. Mục tiêu chính của lập trình phân tán là tận dụng sức mạnh của các hệ đa bộ xử lý và máy tính song song để tăng tốc độ tính toán. Điều này không chỉ giúp xử lý nhanh hơn mà còn cho phép giải quyết các bài toán lớn và phức tạp hơn. Các công cụ hỗ trợ phổ biến có thể kể đến như MPI (Message Passing Interface) và PVM (Parallel Virtual Machine). Trong bối cảnh công nghệ hiện đại, các nguyên lý của điện toán phân tán (distributed computing) đã trở thành nền tảng cho nhiều công nghệ đột phá. Các hệ thống phân tán (distributed systems) là xương sống của điện toán đám mây, xử lý dữ liệu lớn (Big Data), và cả blockchain. Việc hiểu rõ cách các bộ xử lý giao tiếp, chia sẻ công việc và đồng bộ hóa là chìa khóa để xây dựng các ứng dụng có khả năng mở rộng (scalability)khả năng chịu lỗi (fault tolerance) cao. Nghiên cứu này tập trung vào PVM như một giải pháp để tạo ra một 'máy ảo song song', kết hợp nhiều máy tính riêng lẻ thành một hệ thống tính toán mạnh mẽ, mở ra tiềm năng ứng dụng rộng rãi trong khoa học và kỹ thuật.

1.1. Tổng quan về hệ thống phân tán và tính toán song song

Xử lý song song là một quá trình trong đó nhiều tiến trình được kích hoạt đồng thời để cùng giải quyết một vấn đề. Khác với tính toán tuần tự chỉ thực hiện một phép toán tại một thời điểm, tính toán song song sử dụng nhiều bộ xử lý (BXL) để thực hiện đồng thời nhiều phép toán, qua đó giảm đáng kể thời gian xử lý. Sự phát triển của các hệ thống phân tán được thúc đẩy bởi ba yếu tố chính. Thứ nhất, tốc độ của các BXL đơn lõi đã gần đạt tới giới hạn vật lý. Thứ hai, giá thành phần cứng (CPU) giảm mạnh, giúp việc xây dựng các hệ thống đa BXL trở nên khả thi. Cuối cùng, công nghệ mạch tích hợp tiên tiến cho phép tạo ra chip với hàng triệu transistor. Một hệ thống phân tán cơ bản là một tập hợp các BXL được kết nối với nhau, có khả năng hợp tác và trao đổi dữ liệu. Tuy nhiên, độ phức tạp của nó cao hơn nhiều so với hệ thống tuần tự, chủ yếu ở khía cạnh trao đổi dữ liệu và đồng bộ hóa (synchronization) giữa các tiến trình.

1.2. Phân biệt các kiến trúc máy tính song song phổ biến

Theo phân loại của Michael Flynn (1966), có bốn mô hình kiến trúc máy tính chính. Mô hình SISD (Single Instruction, Single Data) là máy tính von Neumann truyền thống với một CPU. Mô hình SIMD (Single Instruction, Multiple Data) có một đơn vị điều khiển nhiều đơn vị xử lý, thực hiện cùng một lệnh trên nhiều luồng dữ liệu khác nhau. Mô hình MISD (Multiple Instruction, Single Data) thực hiện nhiều lệnh trên cùng một luồng dữ liệu, thường thấy trong kiến trúc đường ống (pipelined). Quan trọng nhất cho điện toán phân tán là mô hình MIMD (Multiple Instruction, Multiple Data). Trong mô hình này, mỗi BXL có thể thực hiện chương trình riêng trên luồng dữ liệu riêng, mang lại khả năng song song hóa cao nhất. Đây là kiến trúc nền tảng cho hầu hết các siêu máy tính và các cụm máy tính hiện đại, tiền đề cho các hệ thống như Hadoop MapReduce hay Apache Spark sau này.

II. Thách thức cốt lõi của lập trình phân tán và hệ thống

Việc triển khai một đồ án tính toán phân tán phải đối mặt với nhiều thách thức kỹ thuật. Một trong những vấn đề lớn nhất là quản lý sự phức tạp trong giao tiếp và phối hợp giữa các tiến trình. Trong một hệ thống phân tán, các nút (máy tính) hoạt động độc lập và chỉ giao tiếp qua mạng. Điều này dẫn đến các vấn đề về độ trễ mạng, mất gói tin và sự không đồng nhất về thời gian. Việc đảm bảo dữ liệu nhất quán trên toàn hệ thống là một bài toán khó, đặc biệt khi nhiều tiến trình cùng truy cập và sửa đổi một tài nguyên chung. Các vấn đề như điều kiện tranh đua (race condition) và deadlock đòi hỏi các cơ chế đồng bộ hóa (synchronization) phức tạp. Hơn nữa, khả năng mở rộng (scalability) là một yêu cầu bắt buộc. Hệ thống phải có khả năng xử lý khối lượng công việc tăng lên bằng cách thêm nhiều tài nguyên (nút) hơn mà không làm giảm hiệu suất. Điều này đòi hỏi kiến trúc phải được thiết kế linh hoạt, ví dụ như kiến trúc microservices, nơi các dịch vụ có thể được nhân bản và triển khai độc lập. Cuối cùng, khả năng chịu lỗi (fault tolerance) là yếu tố sống còn. Một hệ thống phải tiếp tục hoạt động ổn định ngay cả khi một hoặc nhiều thành phần của nó gặp sự cố. Điều này yêu cầu các cơ chế phát hiện lỗi, chuyển đổi dự phòng (failover) và phục hồi dữ liệu, vốn là những vấn đề không hề đơn giản trong môi trường distributed systems.

2.1. Vấn đề đồng bộ hóa và truyền thông điệp giữa các tiến trình

Trong lập trình phân tán, các tiến trình không chia sẻ bộ nhớ chung. Thay vào đó, chúng trao đổi thông tin thông qua truyền thông điệp (message passing). Mô hình này tránh được các xung đột truy cập bộ nhớ trực tiếp nhưng lại tạo ra các thách thức khác. Việc đảm bảo thứ tự của các thông điệp, xử lý thông điệp bị mất hoặc đến trễ là rất quan trọng. Có hai cơ chế chính: dị bộ (asynchronous) và đồng bộ (synchronous). Gửi thông điệp dị bộ cho phép tiến trình gửi tiếp tục công việc ngay lập tức, nhưng đòi hỏi bộ đệm và cơ chế xác nhận phức tạp. Ngược lại, gửi đồng bộ buộc tiến trình gửi phải chờ cho đến khi tiến trình nhận sẵn sàng, đảm bảo sự phối hợp chặt chẽ nhưng có thể làm giảm tính đồng thời của hệ thống. Các kỹ thuật như RPC (Remote Procedure Call) và các nền tảng như Apache Kafka được phát triển để đơn giản hóa và tối ưu hóa quá trình này.

2.2. Bài toán về khả năng mở rộng và khả năng chịu lỗi hệ thống

Một hệ thống phân tán lý tưởng phải có khả năng mở rộng (scalability) tuyến tính. Tuy nhiên, việc bổ sung các nút mới có thể làm tăng chi phí giao tiếp và quản lý, dẫn đến hiệu suất không tăng như kỳ vọng. Các kiến trúc hiện đại như kiến trúc microservices giải quyết vấn đề này bằng cách chia ứng dụng thành các dịch vụ nhỏ, độc lập, dễ dàng mở rộng riêng lẻ. Về khả năng chịu lỗi (fault tolerance), hệ thống phải dự phòng cho các sự cố phần cứng, phần mềm và mạng. Các kỹ thuật phổ biến bao gồm sao chép dữ liệu (replication) trên nhiều nút, sử dụng các thuật toán đồng thuận như Paxos hoặc Raft, và triển khai các thuật toán bầu chọn leader để chọn ra một nút điều phối mới khi nút hiện tại gặp sự cố. Những cơ chế này đảm bảo rằng hệ thống vẫn hoạt động, duy trì tính toàn vẹn dữ liệu ngay cả trong điều kiện không ổn định.

III. Phương pháp xây dựng máy ảo song song PVM cho tính toán

PVM (Parallel Virtual Machine) là một bộ phần mềm cho phép một tập hợp các máy tính không đồng nhất, được kết nối qua mạng, hoạt động như một máy tính song song ảo duy nhất. Đây là một giải pháp hiệu quả cho các đồ án tính toán phân tán trong môi trường học thuật và nghiên cứu. Nguyên lý của PVM là tạo ra một lớp trừu tượng hóa trên cơ sở hạ tầng mạng vật lý. Một tiến trình thường trú (daemon) gọi là pvmd chạy trên mỗi máy tính (host) tham gia vào máy ảo. Các daemon này phối hợp với nhau để quản lý việc tạo và hủy các tác vụ (task), định tuyến thông điệp và giám sát trạng thái của hệ thống. Đơn vị tính toán cơ bản trong PVM là 'task', một đoạn mã tuần tự độc lập. Các ứng dụng PVM được cấu trúc thành nhiều task, giao tiếp với nhau qua cơ chế truyền thông điệp (message passing). PVM cung cấp một thư viện giao diện lập trình (API) phong phú cho các ngôn ngữ C, C++ và Fortran, bao gồm các hàm để sinh task (pvm_spawn), gửi (pvm_send) và nhận (pvm_recv) thông điệp, cũng như các thao tác truyền thông nhóm (broadcast, reduce). Một trong những ưu điểm lớn nhất của PVM là tính linh hoạt. Cấu hình máy ảo có thể được thay đổi động trong lúc chạy, cho phép thêm hoặc bớt các host tùy theo nhu cầu. PVM cũng hỗ trợ mạng không đồng nhất, tự động xử lý việc chuyển đổi định dạng dữ liệu giữa các máy có kiến trúc khác nhau (ví dụ: big-endian và little-endian), giúp đơn giản hóa đáng kể công việc cho lập trình viên.

3.1. Kiến trúc và cơ chế hoạt động cốt lõi của hệ thống PVM

Hệ thống PVM gồm hai phần chính: hạt nhân pvmd và thư viện giao diện. Hạt nhân pvmd là một daemon chịu trách nhiệm quản lý tất cả các task PVM trên một host cụ thể. Nó xử lý việc tạo task, đảm bảo các thông điệp được gửi đến đúng task đích, và giao tiếp với các pvmd khác trong máy ảo. Thư viện PVM cung cấp các hàm để người dùng tương tác với hệ thống, từ việc điều khiển task đến thực hiện các thao tác truyền thông phức tạp. Khi một ứng dụng PVM khởi chạy, nó thường bắt đầu với một task chủ (master). Task này sau đó sử dụng hàm pvm_spawn() để tạo ra các task tớ (slave) trên các host khác trong máy ảo. Mỗi task được gán một định danh duy nhất (Task ID) để giao tiếp. Mô hình này, được gọi là Master-Slave, là một mẫu thiết kế phổ biến trong lập trình phân tán.

3.2. Lập trình với PVM Mô hình Master Slave và truyền thông

Lập trình trên PVM chủ yếu dựa vào mô hình Master-Slave. Chương trình Master có nhiệm vụ khởi tạo các chương trình Slave trên các máy trạm, phân phát dữ liệu và công việc cho chúng, sau đó thu thập và tổng hợp kết quả. Mỗi chương trình Slave nhận dữ liệu từ Master, thực hiện các phép tính được giao, và gửi trả kết quả. Việc trao đổi dữ liệu được thực hiện qua các hàm thư viện của PVM. Một quy trình gửi thông điệp cơ bản bao gồm ba bước: khởi tạo bộ đệm gửi bằng pvm_initsend(), đóng gói dữ liệu thuộc các kiểu khác nhau (int, float, string) vào bộ đệm bằng các hàm pvm_pk*(), và cuối cùng gửi bộ đệm đến task đích bằng pvm_send(). Ở phía nhận, tiến trình sử dụng pvm_recv() để nhận thông điệp và các hàm pvm_upk*() để giải nén dữ liệu theo đúng thứ tự. Cơ chế đóng gói/giải nén này đảm bảo tính tương thích dữ liệu trên các hệ thống phân tán không đồng nhất.

IV. Hướng dẫn ứng dụng tính toán phân tán vào giải quyết bài toán

Ứng dụng các nguyên lý của tính toán phân tán vào thực tiễn đòi hỏi một quy trình bài bản, từ việc phân tích bài toán đến triển khai và đánh giá. Bước đầu tiên là song song hóa thuật toán, tức là chia bài toán lớn thành các công việc nhỏ hơn có thể thực hiện đồng thời. Tài liệu gốc đã đề cập ba chiến lược phổ biến: song song hóa kết quả, song song hóa đại diện, và song song hóa chuyên biệt. Trong thực nghiệm, một bài toán cụ thể được cài đặt và đánh giá trên một hệ thống PVM. Cấu hình hệ thống bao gồm một node Master và các node Slave được kết nối qua mạng. PVM được cài đặt trên tất cả các node, cho phép chúng hoạt động như một máy ảo song song. Chương trình được biên dịch và chạy thử nghiệm, kết quả cho thấy việc sử dụng nhiều máy tính giúp giảm đáng kể thời gian thực thi so với chạy trên một máy duy nhất. Ngày nay, các nguyên lý này được áp dụng ở quy mô lớn hơn rất nhiều. Các nền tảng xử lý dữ liệu lớn như Apache SparkHadoop MapReduce sử dụng mô hình tương tự để phân tán các tác vụ tính toán trên hàng ngàn máy chủ. Ví dụ, trong MapReduce, giai đoạn 'Map' tương đương với việc các node Slave xử lý các phần dữ liệu độc lập, và giai đoạn 'Reduce' tương đương với việc node Master tổng hợp kết quả. Tương tự, kiến trúc microservices trong phát triển phần mềm hiện đại cũng là một ứng dụng của distributed systems, nơi mỗi dịch vụ là một tiến trình độc lập, giao tiếp với nhau qua API, mang lại khả năng mở rộng (scalability) và bảo trì linh hoạt.

4.1. Cài đặt và thực nghiệm giải pháp trên cụm máy tính PVM

Quá trình thực nghiệm bắt đầu bằng việc cài đặt PVM trên một cụm máy tính. Biến môi trường PVM_ROOTPVM_ARCH cần được thiết lập để chỉ định thư mục cài đặt và kiến trúc của mỗi host. Một tệp hostfile được tạo ra để định nghĩa danh sách các máy tính sẽ tham gia vào máy ảo. Sau khi cấu hình, người dùng có thể khởi động PVM và thêm các host vào máy ảo. Bài toán thực nghiệm được lập trình bằng C/C++ và sử dụng thư viện PVM. Mã nguồn được biên dịch cho từng kiến trúc máy tính trong cụm. Chương trình Master được khởi chạy trên một node, sau đó nó sẽ spawn các tiến trình Slave trên các node còn lại. Quá trình trao đổi dữ liệu và tính toán diễn ra, và kết quả cuối cùng được thu thập và hiển thị. Việc đánh giá hiệu suất tập trung vào thời gian hoàn thành bài toán khi thay đổi số lượng node Slave, qua đó chứng minh lợi ích của lập trình phân tán.

4.2. Mở rộng ứng dụng cho xử lý dữ liệu lớn và microservices

Các khái niệm được thử nghiệm với PVM là nền tảng cho các hệ thống phức tạp hơn. Trong lĩnh vực xử lý dữ liệu lớn, các framework như Apache Spark trừu tượng hóa việc quản lý task và truyền thông điệp (message passing), cho phép các nhà khoa học dữ liệu tập trung vào logic thuật toán. Tương tự, kiến trúc microservices áp dụng nguyên tắc chia để trị: một ứng dụng lớn được chia thành các dịch vụ nhỏ, mỗi dịch vụ quản lý một phần dữ liệu và logic nghiệp vụ riêng. Các dịch vụ này giao tiếp với nhau thông qua các giao thức nhẹ như HTTP/REST hoặc các hệ thống hàng đợi thông điệp như Apache Kafka. Cách tiếp cận này giúp các đội phát triển có thể làm việc độc lập, triển khai và mở rộng từng phần của hệ thống mà không ảnh hưởng đến toàn bộ ứng dụng, cải thiện đáng kể khả năng chịu lỗi (fault tolerance) và tốc độ phát triển.

V. Kết luận và tương lai phát triển của ngành điện toán phân tán

Đồ án tính toán phân tán và ứng dụng đã nghiên cứu thành công các khái niệm cơ bản về máy tính song song và triển khai một ứng dụng thực tiễn sử dụng máy ảo song song PVM. Nghiên cứu đã chỉ ra rằng việc kết hợp nhiều máy tính thông thường thành một cụm tính toán có thể mang lại hiệu suất vượt trội, giải quyết được những bài toán đòi hỏi năng lực xử lý lớn mà một máy tính đơn lẻ không thể đáp ứng. Các kết quả thực nghiệm đã khẳng định tính khả thi và hiệu quả của mô hình lập trình phân tán dựa trên cơ chế truyền thông điệp (message passing). Tuy nhiên, đồ án cũng chỉ ra những hạn chế và thiếu sót, chẳng hạn như sự phức tạp trong việc quản lý, gỡ lỗi và tối ưu hóa hiệu suất trên một môi trường không đồng nhất. Tương lai của điện toán phân tán (distributed computing) đang phát triển mạnh mẽ và trở thành xu hướng chủ đạo. Các nguyên tắc cơ bản được khám phá trong đồ án này vẫn còn nguyên giá trị nhưng được áp dụng trên các nền tảng và kiến trúc hiện đại hơn. Sự bùng nổ của điện toán đám mây đã dân chủ hóa việc tiếp cận các tài nguyên tính toán phân tán, cho phép các tổ chức và cá nhân triển khai các ứng dụng có khả năng mở rộng (scalability) toàn cầu mà không cần đầu tư vào hạ tầng vật lý. Các công nghệ mới như blockchain cũng là một dạng hệ thống phân tán đặc biệt, nơi sự đồng thuận và tính toàn vẹn dữ liệu được đảm bảo mà không cần một cơ quan trung ương, mở ra những ứng dụng đột phá trong tài chính, chuỗi cung ứng và nhiều lĩnh vực khác.

5.1. Đánh giá kết quả nghiên cứu và những hạn chế của đồ án

Đồ án đã thành công trong việc tìm hiểu và áp dụng PVM để xây dựng một môi trường tính toán song song. Nó đã chứng minh được rằng việc phân chia bài toán và xử lý trên nhiều máy giúp tăng tốc độ đáng kể. Những vấn đề cốt lõi của distributed systems như tạo lập tiến trình, trao đổi dữ liệu và đồng bộ hóa đã được giải quyết ở mức độ cơ bản. Tuy nhiên, hạn chế của nghiên cứu nằm ở việc chỉ tập trung vào PVM, một công nghệ đã phần nào lỗi thời so với các framework hiện đại như Apache Spark hay các nền tảng điện toán đám mây. Các vấn đề nâng cao như lập lịch tác vụ động, quản lý tài nguyên tự động, và các cơ chế phức tạp về khả năng chịu lỗi (fault tolerance) chưa được khai thác sâu.

5.2. Xu hướng tương lai Điện toán đám mây và công nghệ Blockchain

Điện toán đám mây (Cloud Computing) đã đưa điện toán phân tán lên một tầm cao mới. Các nhà cung cấp như AWS, Google Cloud, và Azure cung cấp các dịch vụ trừu tượng hóa hoàn toàn cơ sở hạ tầng, cho phép các nhà phát triển xây dựng các hệ thống phân tán phức tạp một cách dễ dàng. Song song đó, công nghệ blockchain là một minh chứng cho sức mạnh của các hệ thống phân tán phi tập trung. Thay vì mô hình client-server hay master-slave truyền thống, blockchain sử dụng mạng ngang hàng (peer-to-peer) và các thuật toán đồng thuận để duy trì một sổ cái phân tán, bất biến. Tương lai của ngành này sẽ tiếp tục tập trung vào việc tự động hóa, tăng cường bảo mật và phát triển các mô hình lập trình mới để khai thác tối đa tiềm năng của hàng triệu thiết bị được kết nối trên toàn cầu.

04/10/2025
Đồ án tính toán phân tán và ứng dụng

Trích đoạn nội dung tài liệu

Chương 1: Tìm hiểu về máy tính song song. Chương 2: Tìm hiểu về máy ảo song song PVM. Chương 3: Thực nghiệm và chạy ứng dụng. Kết luận: Nêu lên những vấn đề đã nghiên cứu được và những hạn chế, thiếu sót và phương hướng phát triển trong tương lai.

8 CHƢƠNG I: MÁY TÍNH SONG SONG 1. Giới thiệu chung về tính toán song song và phân tán 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 vấn đề, nói chung là thực hiện trên những hệ thống có nhiều bộ xử lý đồng thời. Trình bày về máy tính song song 1. Kiến trúc và các loại máy tính song song a.

Tại sao phải xử lý song song Phân biệt xử lý song song với tuần tự: Trong tính toán tuần tự với một BXL thì tại mỗi thời điểm chỉ thực hiện được một phép toán. Trong tính toán song song thì nhiều BXL 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. Mục đích của xử lý song song: là thực hiện tính toán nhanh trên cơ sở sử dụng nhiều BXL đồng thời. Cùng với tốc độ xử lý nhanh hơn, 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.

Ba yếu tố chính dẫn đến việc xây dựng các hệ thống xử lý song song:  Tốc độ xử lý của các BXL theo kiểu von Neumann đã dần tiến tới giới hạn, không thể cải tiến thêm được do vậy dẫn tới đòi hỏi phải thực hiện xử lý song song.  Hiện nay giá thành của phần cứng (CPU) giảm mạnh, tạo điều kiện để xây dựng những hệ thống có nhiều BXL với giá thành hợp lý.  Sự phát triển của công nghệ mạch tích hợp cho phép tạo ra những hệ thống có hàng triệu transistor trên một chip. Vấn đề xử lý song song liên quan trực tiếp đến: kiến trúc máy tính, phần mềm hệ thống (hệ điều hành), thuật toán và ngôn ngữ lập trình, v.

Hệ thống tính song song: là một tập các BXL (thường là cùng một loại) kết nối với nhau theo một kiến trúc nào đó để có thể hợp tác với nhau trong hoạt động và trao đổi dữ liệu được với nhau. 9 Chúng ta dễ nhận thấy là độ phức tạp của xử lý song song sẽ lớn hơn xử lý tuần tự rất nhiều, và tập trung chủ yếu ở phương diện trao đổi dữ liệu và đồng bộ các tiến trình. Để cài đặt các thuật toán song song trên các máy tính song song chúng ta phải sử dụng những ngôn ngữ lập trình hỗ trợ lập trình song song như: Fortran 90, Pthread với Fortran/C++, MPI với C/C++, PVM với C/C++, OpenMP với C/C++, v. Phân loại kiến trúc máy tính Dựa vào các đặc tính về số lượng BXL, số chương trình thực hiện, cấu trúc bộ nhớ, v., Michael Flynn (1966) đã phân máy tính thành 4 loại sau: Mô hình SISD( Single Instruction Stream, Single Data Stream): Đơn luồng lệnh, đơn luồng dữ liệu.

Máy tính loại 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 (program counter) được sử dụng để nạp địa chỉ của lệnh tiếp theo và kết quả là thực hiện theo một thứ tự xác định của các câu lệnh. Mô hình SISD còn được gọi là SPSD (Simple Program Simple Data), đơn chương trình và đơn dữ liệu. Đây chính là mô hình máy tính kiểu von Neumann.

Mô hình SIMD (Simple Instruction Stream Multiple Data Stream): Đơn luồng lệnh, đa luồng dữ liệu. Máy tính loại SIMD có một đơn vị điều khiển để điều khiển nhiều đơn vị xử lý (nhiều hơn một đơn vị) thực hiện theo một luồng các câu lệnh. CU phát sinh tín hiệu điều khiển tới tất cả các phần tử xử lý, những BXL 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 BXL 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.

Đây chính là mô hình máy tính phổ biến có trên thị trường như: DAP và Connection Machine CM-2. Mô hình MISD (Multiple Instruction Simple Data): Đa chỉ lệnh, đơn dữ liệu. Máy tính loại MISD là ngược lại với SIMD. Máy tính 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, nên còn được gọi là MPSD (đa chương trình, đơn dữ liệu).

10 Kiến trúc kiểu này có thể chia thành hai nhóm:  Lớp các máy tính gồm nhiều đơn vị xử lý (PU) khác nhau có thể nhận được những chỉ lệnh khác nhau để thực hiện trên cùng một mục dữ liệu. Đây là kiến trúc khó và hiện nay chưa có loại máy tính nào được sản xuất theo loại này.  Lớp các máy tính có các luồng dữ liệu được gửi tuần tự theo dãy các CPU liên tiếp. Đây là loại kiến trúc hình ống, xem xét như sau: Nguyên lý hình ống (pipelined) dựa vào phương pháp phân đoạn hoặc chia nhỏ một tiến trình tính toán thành một số đoạn nhỏ hơn để thực hiện trong các pha liên tiếp.

Tất cả các giai đoạn của một tiến trình được thực hiện tuần tự, khi thực hiện xong thì bắt đầu thực hiện của tiến trình tiếp theo. Mỗi pha thực hiện xong sẽ gửi kết quả cho pha tiếp theo. Như vậy, trong cách thực hiện theo nguyên lý hình ống, khi một giai đoạn công việc đang thực hiện thì một giai đoạn khác có thể nạp dữ liệu vào, và dữ liệu vào của giai đoạn này có thể là kết quả của giai đoạn trước nó. Mô hình MIMD (Multiple Instruction Multiple Data): Đa luồng lệnh, đa luồng dữ liệu.

Máy tính loại MIMD còn gọi là đa BXL, trong đó mỗi BXL 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 được bộ nhớ chung (global) khi cần, do vậy giảm thiểu được thời gian trao đổi dữ liệu giữa các BXL trong hệ thống. Đây là 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 sản xuất theo kiến trúc này, ví dụ: BBN Butterfly, Alliant FX, iSPC của Intel, v. Kiến trúc máy tính song song Theo sự phân loại của Flynn thì có 2 họ kiến trúc quan trọng cho các máy tính song song đó là SIMD và MIMD.

Những kiến trúc khác có thể xếp theo 2 mẫu đó. Những kiến trúc khác nhau có thể tạo ra những khả năng khác nhau cho việc xử lý song song. Đối với những kiến trúc máy tính song song thì mục đích chính là khai thác triệt để khả năng của kiến trúc song song để xây dựng chương trình song song. Song song hóa máy tính tuần tự Các hệ thống bộ nhớ phân cấp: Tốc độ thực hiện các phép toán trong BXL nhanh hơn rất nhiều so với việc truy cập vào bộ nhớ; Tốc độ truy cập vào bộ nhớ trong (RAM) nhanh hơn rất nhiều so với việc truy cập vào bộ nhớ ngoài.

Hệ thống bộ nhớ phân cấp như thế có thể mô tả như hình 1. Hệ thống bộ nhớ phân cấp Các thanh ghi được sử dụng trực tiếp cho ALU. Bộ nhớ cache được xem như vùng đệm giữa BXL và bộ nhớ chính. Sự song song hóa trong trao đổi dữ liệu theo cấu trúc phân cấp là cách khai thác chung để cải tiến hiệu quả xử lý của hệ thống.

Ví dụ, trong khi dữ liệu được lấy từ bộ nhớ ngoài vào bộ nhớ chính thì đồng thời có thể gửi dữ liệu từ cache vào cho CPU. Đa chương trình và chia sẻ thời gian. Các hệ điều hành của máy tính đơn bộ xử lý cho phép thực hiện song songdựa vào cách tiếp cận phần mềm. Trong cùng một khoảng thời gian, có nhiều tiến trình cùng truy cập vào dữ liệu từ những thiết bị vào/ra chung (VD: Cổng giao tiếp, Đĩa cứng, CD, …).

Chúng ta biết rằng phần lớn các chương trình đều có hai phần: phần vào/ra và các thành 12 phần tính toán trong quá trình xử lý. Các hệ điều hành đa chương trình luân phiên thực hiện các chương trình khác nhau. Để thực hiện việc này HĐH sử dụng Bộ lập lịch chia sẻ thời gian làm nhiệm vụ phân chia CPU cho mỗi tiến trình một khoảng thời gian cố định theo phương pháp quay vòng tròn. Bằng cách đó, tất cả các tiến trình đều được sẵn sàng để thực hiện trên cơ sở được phép sử dụng CPU và những tài nguyên khác của hệ thống.

Do vậy, về nguyên tắc việc phát triển những chương trình song song trên máy đơn BXL thực hiện được nếu có hệ điều hành cho phép nhiều tiến trình thực hiện, nghĩa là có thể xem như là hệ thống đa bộ xử lý. Các thành phần của máy tính song song Xử lý song song là quá trình xử lý thông tin, trong đó các thao tác trên các phần tử dữ liệu thuộc một hoặc một số tiến trình được thực hiện đồng thời nhằm cùng giải quyết một bài toán. Bộ nhớ Một trong các thành phần quan trọng nhất của kiến trúc máy tính là bộ nhớ. Một số mô hình bộ nhớ của máy tính song song.

Bộ nhớ kết hợp Bộ nhớ kết hợp (AM – Associative Memory) bao gồm các ô nhớ (cell) và logic kết hợp. Mỗi ô nhớ của AM có 4 đầu vào và 2 đầu ra: Hinh 1. Mô hình bộ nhớ kết hợp Các đầu vào (input) của mỗi ô nhớ bao gồm:  Bit đối số a.  Bit đọc/ ghi R/W xác định thao tác tương ứng cần thực hiện.

 Bit lựa chọn s để xác định ô nhớ thích hợp cho việc thực hiện đọc/ghi. 13 Hai kết quả ở đầu ra (output):  Bit đối sánh m chỉ ra dữ liệu được lưu trong bộ nhớ có sánh được với bit đối số a.  Bit kết quả q. Tất cả các ô nhớ AM được tổ chức thành các từ (word) và được xây dựng thành mảng các ô giống nhau.

So sánh với bộ nhớ truy cập ngẫu nhiên RAM thì AM đắt hơn nhưng tốc độ tìm kiếm nhanh hơn. Mô hình bộ nhớ truy cập ngẫu nhiên song song Mô hình tính toán song song được biết dưới tên gọi PRAM bao gồm bộ nhớ chung RAM với m vùng bộ nhớ đủ lớn để chia sẻ cho p bộ xử lý. Bộ nhớ chung được sử dụng để lưu trữ dữ liệu và là vùng để trao đổi giữa các bộ xử lý. Nó cho phép các bộ xử lý truy cập vào bộ nhớ đồng thời.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ