Tải bản đầy đủ (.doc) (111 trang)

Giáo trình Xử lý song song và phân tán

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (625.88 KB, 111 trang )

Chương I
Kiến trúc và các loại máy tính song song
1.1 Giới thiệu chung
Nhiều lĩnh vực mới như đồ họa máy tính, trí tuệ nhận tạo, phân
tích số, v.v. đòi hỏi phải xử lý một khối lượng dữ liệu rất lớn do đó cần
phải có những hệ thống máy tính thật mạnh mới thực hiện được những
yêu cầu của thực tế. Những vấn đề về xử lý ngôn ngữ tự nhiên, nhận
dạng, xử lý ảnh ba chiều (3-D), dự báo thời tiết, mô hình và mô phỏng
những hệ thống lớn, v.v. đều đòi hỏi phải xử lý dữ liệu với tốc độc rất
cao, với khối lượng dữ liệu rất lớn. Hầu hết những bài toán này, những
máy tính xử lý tuần tự kiểu von Neumann là không đáp ứng yêu cầu.
Mặc dù tốc độ xử lý của các BXL tăng nhiều trong những năm qua,
nhưng do giới hạn về vật lý nên khả năng tính toán của chúng không
thể tăng mãi được. Điều này dẫn tới là muốn tăng được khả năng tính
toán của các hệ thống máy tính thì đích cuối cùng là phải khai thác được
khả năng xử lý song song của chúng.
Định nghĩa: 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 đa bộ xử lý [6].
Sự khác nhau giữa song song với tuần tự:
 Trong tính toán tuần tự với một BXL thì 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ì một số BXL cùng kết hợp với nhau
để giải quyết cùng một vấn đề cho nên giảm được thời gian xử lý
vì mỗi thời điểm có thể có nhiều phép toán được thực hiện đồng
thời.
Câu hỏi đặt ra là vấn đề xử lý song song hiện nay có hiện thực hay
không? Câu trả lời là khẳng định. Ba yếu tố chính dẫn đến việc xử lý
song song:
1. 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ý.
- 1 -
2. Sự phát triển của công nghệ mạch tích hợp VLSI cho phép tạo
ra những hệ phức hợp có hàng triệu transistor trên một chip.
3. 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 .
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.v.
Định nghĩa: Một máy tính song song là tuyển tập các BXL, thường
là cùng một loại, kết nối với nhau theo một cách 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 [4].
Các máy tính song song có thể phân thành nhiều loại dựa vào các
đặc trưng của các kiến trúc và thể thực thao tác khác nhau. Cụ thể là có
thể dựa vào các chỉ tiêu về kiểu và số lượng các BXL, sự kết nối giữa
chúng, dựa vào sơ đồ truyền thông và các thao tác vào/ra, v.v.
Phần lớn các hệ điều hành ngày nay đều đã hỗ trợ đa xử lý / đa
nhiệm và cho phép nghiên cứu, khai thác các phương pháp lập trình
song song. Vấn đề là chúng ta phải có nhiều BXL (các đơn vị tính toán
độc lập) cùng hoạt động. Nhưng điều quan trọng là chúng phải tham gia
"cùng giải một bài toán". Nói cách khác, những tiến trình thực hiện trên
mỗi BXL phải kết hợp, trao đổi với nhau để giải quyết một bài toán cho
trước.
Trường hợp ngược lại không phải là xử lý song song. Ví dụ, nếu
một đơn vị dịch chương trình File1.c và một đơn vị khác dịch chương
trình File2.c thì không được xem là xử lý song song vì hai công việc đó
hoàn toàn độc lập với nhau. Nhưng nếu một đơn vị đang dịch một phần
của chương trình File.c và một đơn vị khác lại dịch một phần khác của
cùng chương trình thì đó là sự xử lý song song. 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,
tập trung chủ yếu ở phương diện truyền thông và sự đồng bộ các tiến
trình.
Một trong các mục đích chính của xử lý song song là nghiên cứu và
xây dựng những thuật toán thích hợp để cài đặt trên các máy tính song
song, nghĩa là phát triển các thuật toán song song. Câu hỏi tự nhiên là
đánh giá một thuật toán song song như thế nào được gọi là thích hợp
cho xử lý song song? Đối với thuật toán tuần tự thì chúng ta có thể
thống nhất cách đánh giá dựa vào thời gian thực hiện thuật toán, không
- 2 -
gian bộ nhớ và khả năng lập trình, v.v. Đánh giá thuật toán song song
thì phức tạp hơn nhiều, ngoài những tiêu chuẩn trên còn phải bổ sung
thêm những tham số về số BXL, khả năng của các bộ nhớ cục bộ, sơ đồ
truyền thông, và các giao thức đồng bộ hoá, v.v.
Để 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 song song. Nhiều ngôn
ngữ lập trình song song đang được sử dụng như: Fortran 90, nCUBE C,
Occam, C-Linda, PVM với C/C++, CDC 6600, v.v.
1.2 Kiến trúc của máy tính
Kiến trúc máy tính (KTMT) nghiên cứu cách tổ chức để liên kết
các thành phần của các hệ thống máy tính.
Máy tính được xây dựng từ các khối cơ sở:
 Bộ nhớ: để lưu trữ dữ liệu
 Các đơn vị logic và số học: thực hiện các phép toán được ký
hiệu là ALU
 Các phần tử xử lý: điều khiển CU và truyền dữ liệu vào/ra
 Đường truyền dữ liệu.
Sự khác nhau chính của các máy tính là ở sự liên kết giữa các khối
đó với nhau. Trong các hệ thống máy tính truyền thống có hai khối
quan trọng nhất là bộ nhớ và BXL. BXL thao tác trên các dữ liệu được

lưu trữ trong bộ nhớ thông qua các chỉ thị (câu lệnh). Các câu lệnh cũng
được lưu trong bộ nhớ và luôn luôn là dòng được chuyển từ bộ nhớ tới
BXL để thực hiện. Dữ liệu di chuyển trong hệ thống theo cả hai chiều,
đọc và ghi vào bộ nhớ. Hình 1-1 mô tả hoạt động của mô hình máy tính
kiểu von Neumann.
Hình 1-1 Sự liên kết giữa bộ nhớ và bộ xử lý
Tuy nhiên để thực hiện được việc xử lý song song thực sự thì phải xây dựng
được những mô hình tính toán mới phù hợp với những nguyên lý song song.
- 3 -
Bộ nhớ
Bộ xử lý
Ghi dữ liệu
Đọc dữ liệu
Câu lệnh
Đó là các mô hình: các bộ xử lý tâm thu, mô hình luồng dữ liệu, mạng nơ-ron,
v.v.
1.3 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.v., Michael Flynn (1966) [7] đã đưa ra cách phân loại nổi tiếng được
nhiều người chấp nhận.
1. Mô hình SISD: Đơ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 khi xử lý tuần tự 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. Hình 1-2 mô tả hoạt
động của máy tính theo mô hình SISD.
Hình 1-2 Mô hình của kiến trúc SISD
Mô hình SISD còn được gọi là SPSD, đơn chương trình và đơn luồng dữ liệu.
Đây chính là mô hình máy tính truyền thống kiểu von Neumann.

2. Mô hình SIMD: Đơ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. CPU 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. Đây là kiểu tính toán
lặp lại các đơn vị số học trong CPU, cho phép những đơn vị khác nhau thực hiện
trên những toán hạng khác nhau, nhưng thực hiện cùng một lệnh. Máy tính SIMD
có thể hỗ trợ xử lý kiểu vector, trong đó có thể gán các phần tử của vector cho các
phần tử xử lý để tính toán đồng thời. Máy tính vector và các BXL mảng là mô hình
chủ yếu thuộc loại này. Hình 1-3 mô tả hoạt động của máy tính theo mô hình
SIMD, còn được gọi là SPMD.
- 4 -
Đơn vị
điều khiển
Bộ nhớ
BXL số học
Luồng lệnh
Luồng
dữ liệu
Luồng
kết quả
Tín hiệu
điều khiển
Đơn vị điều khiển (CU)
Phần tử
xử lý 1
Tín hiệu
điều khiển
Phần tử

xử lý n
Phần tử
xử lý 2
. . .
Tín hiệu
điều khiển
Hình 1-3 Mô hình của kiến trúc SIMD
Mô hình SIMD còn được gọi là SPMD, đơn chương trình và đa luồng dữ liệu.
Đây chính là mô hình máy tính phổ biến có trên thị trường như: ILLIAC IV, DAP
và Connection Machine CM-2.
3. Mô hình MISD: Đa luồng lệnh, đơn luồng 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 luồng dữ liệu). Kiến trúc kiểu này có thể chia
thành hai nhóm:
 Lớp các máy tính yêu cầu những đơ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 chuyển tuần tự theo dãy
các CPU liên tiếp. Đây là loại kiến trúc hình ống thực hiện xử lý theo
vector thông qua một dãy các bước, trong đó mỗi bước thực hiện một chức
năng và sau đó chuyển kết quả cho PU thực hiện bước tiếp theo. Hoạt
động của máy tính theo kiến trúc loại này giống như hệ tuần hoàn nên còn
được gọi là hệ tâm thu.
Mô hình của kiến trúc MISD được mô tả như hình 1-4.
Hình 1-4 Mô hình của kiến trúc MISD
- 5 -
CU 1
Phần tử

xử lý 2
Luồng lệnh 1
Phần tử
xử lý n
Phần tử xử
lý 1
.
.
.
CU 2
CU n
.
.
.
Luồng lệnh 2
Luồng lệnh n
Luồng
dữ liệu
4. Mô hình MIMD: Đ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 sự trao đổi
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.v.
Mô hình của kiến trúc MIMD được mô tả như hình 1-5.
Hình 1-5 Mô hình của kiến trúc MIMD
1.4 Kiến trúc máy tính song song

Theo sự phân loại của Flynn thì có hai 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 hai
mẫu đó. Mẫu hình các kiến trúc xử lý song song có thể phân chia như hình 1-6.
- 6 -
CU 1
Phần tử
xử lý 2
Luồng lệnh 1
Phần tử
xử lý n
Phần tử
xử lý 1
.
.
.
CU 2
CU n
.
.
.
Luồng lệnh 2
Luồng lệnh n
Luồng dữ
liệu 1
Luồng dữ
liệu 2
Luồng dữ
liệu n
MIMD
SIMD

Hybrid
MISD
Multiprocessor
Multicomputer
Data Flow Machine
Array Processor
Pipelined Vector Processor
Pipelined Vector Processor
Systolic Array
SIMD-MIMD
MIMD-SIMD
Hình 1-5 Các mẫu hình kiến trúc xử lý song song
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. Ngay trong kiến trúc tuần tự chúng ta cũng có thể tận dụng đốc độ
cực nhanh của các BXL để thực hiện xử lý song song theo nguyên lý chia sẻ thời
gian và chia sẻ tài nguyên. Tất nhiên đố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 để viết
các chương trình song song.
1.4.1 Song song hóa trong máy tính tuần tự
Mục tiêu của xử lý song song là khai thác đến mức tối đa các khả năng sử
dụng của các thiết bị phần cứng nhằm giải quyết nhanh những bài toán đặt ra
trong thực tế. Nhưng cấu trúc phần cứng thường là trong suốt đối với những
người lập trình. Sau đây chúng ta tìm hiểu về kỹ thuật song song áp dụng trong
các máy tính có một BXL.
Đa đơn vị chức năng
Hầu hết các máy tính truyền thống chỉ có một đơn vị số học và logic (ALU)
trong BXL. Ở mỗi thời điểm nó chỉ có thể thực hiện một chức năng.
Nhiều máy tính thực tế hiện nay có thể có nhiều đơn vị chức năng (nhất là
những chức năng chuyên biệt) và những đơn vị này có thể thực hiện song song
được. Ví dụ máy CDC 6600 (thiết kế năm 1964) có 10 đơn vị chức năng được tổ

chức trong một BXL. Những đơn vị chức năng này độc lập với nhau và do vậy có
thể thực hiện đồng thời. Thường đó là các đơn vị thực hiện các phép toán rất cơ
bản như: phép cộng, nhân, chia, tăng giảm, các phép logic và các phép dịch
chuyển (shift). Với 10 đơn vị chức năng và 24 thanh ghi (register), máy tính
CDC 6600 có thể thực hiện tính toán với tốc độ tăng lên đáng kể, đáp ứng
được nhiều bài toán xử lý song song.
Vấn đề chính đối với những máy tính loại này là cần phải xây dựng bộ lập
lịch tối ưu để phân chia các câu lệnh thực hiện sao cho tận dụng được tối đa các
đơn vị chức năng cũng như các tài nguyên mà máy tính cung cấp.
Xử lý theo nguyên lý hình ống trong CPU
- 7 -
Nhiều pha thực hiện khác nhau của các câu lệnh có thể thực hiện theo
nguyên lý hình ống, ví dụ nạp cậu lệnh về từ bộ nhớ, giải mã (decode), xác định
các toán hạng, thực hiện các phép số học/logic và lưu trữ kết quả, v.v. Những câu
lệnh trong chương trình có thể thực hiện gối đầu nhau theo nguyên lý hình ống và
nó sẽ hiệu quả hơn khi dựa vào kỹ thuật tạo ra vùng đệm dữ liệu.
Bằng cách thực hiện như trên thì trong quá trình thực hiện của BXL có thể
thực hiện được nhiều câu lệnh gối đầu nhau trong cùng một thời gian. Trước khi
một câu lệnh kết thúc thực hiện thì câu lệnh tiếp theo đã có thể thực hiện pha giải
mã, câu lệnh khác lại có thể được nạp về, v.v.
Sự gối đầu CPU và các thao tác vào/ra (I/O)
Nhiều phép vào/ra có thể thực hiện đồng thời đối với nhiều nhiệm vụ tính
toán khác nhau bằng cách sử dụng những bộ điều khiển vào/ra, các kênh hay
những BXL vào/ra khác nhau.
Nhiều máy tính hiện nay có nhiều bộ điều khiển thiết bị vào/ra, cho phép
đa xử lý vào/ra do vậy tăng được tốc độ trao đổi dữ liệu giữa các thiết bị ngoài
với CPU.
Các hệ thống bộ nhớ phân cấp
Tốc độ các phép toán thực hiện trong BXL nhanh hơn rất nhiều việc truy cập
vào bộ nhớ và tốc độ truy cập vào bộ nhớ nguyên thủy (bộ nhớ trong) nhanh hơn

đối với bộ nhớ phụ (bộ nhớ ngoài). Hệ thống bộ nhớ phân cấp như thế có thể mô
tả như hình 1-6.
Hình 1-6 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 sự 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ệ
- 8 -
CPU (Registers)
Cache
Main Memory
Fixed Disks,
Drum
Magnetic Tapes
Tăng khả
năng lưu trữ
Tăng về tốc
độ truy cập
thống. Ví dụ, trong khi dữ liệu được chuyển từ bộ nhớ phụ vào bộ nhớ chính thì
đồng thời có thể chuyển 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
song dự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. 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 phần tính toán trong quá trình xử
lý. Các hệ điều hành đa chương trình xáo trộn sự thực hiện của nhiều chương trình
các loại khác nhau nhằm cân bằng giải băng thông thực hiện của các đơn vị chức
năng.
Trong một hệ đa chương trình, một tiến trình tính toán với cường độ cao
có thể cắt ngang để tạm thời chiếm dụng CPU trong khi một tiến trình trước đó

không đòi hỏi phải kết thúc công việc. Để tránh việc bị chặn lại (blocking) của các
thiết bị thì khái niệm chia sẻ thời gian (Time-sharing) được sử dụng. Bộ lập lịch
chia sẻ thời gian làm nhiệm vụ phân chia (gán) 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 một cách có cạnh tranh.
Vấn đề chia sẻ thời gian cho nhiều tiến trình làm nảy sinh khái niệm các BXL
ảo. Nghĩa là, mỗi tiến trình được cung cấp một môi trường được xem như một
BXL ảo để thực hiện riêng cho tiến trình đó.
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 hệ thống như là đa bộ xử lý.
1.4.2 Mô hình trừu tượng của máy tính song song
Trước khi xem xét những kiến trúc máy tính song song cụ thể, chúng ta hãy
nghiên cứu một mô hình trừu tượng của máy song song [6]. Mục đích chính là
muốn thể hiện được những khả năng tính toán của máy song song mà không quan
tâm đến những ràng buộc cụ thể của những máy tính có trong thực tế.
Thông thường khi xây dựng các thuật toán song song, chúng ta qui ước là
phát triển thuật toán cho mô hình trừu tượng này, sau đó ánh xạ sang những máy
tính cụ thể với một số các ràng buộc nào đó.
Máy tính truy cập ngẫu nhiên song song P-RAM chứa một đơn vị điều
khiển, bộ nhớ chung và một tập không giới hạn các BXL, mỗi BXL lại có bộ
nhớ riêng (xem hình 1-7). Mỗi BXL có một chỉ số duy nhất được sử dụng để xác
định địa chỉ trong quá trình trao đổi các tín hiệu và quản lý các ngắt. Tất cả các
BXL đều chia sẻ bộ nhớ chung với yêu cầu không bị giới hạn. Các câu lệnh có thể
bắt đầu thực hiện ở bất kỳ thời điểm nào, ở bất kỳ vị trí nào của bộ nhớ (riêng hoặc
chung).
- 9 -
CU
BXL 1

Mạng kết nối
Bộ nhớ chung chia sẻ
hoặc kênh truyền thông
BXL 2
BXL n
. . .

Hình 1-7 Máy tính P-RAM
Đây là mô hình tổng quát cho máy tính song song kiểu MIMD. Về nguyên
tắc, mô hình này cho phép thực hiện nhiều luồng lệnh đồng thời trên nhiều BXL
khác nhau.
Sau đây là một số điểm cần lưu ý khi phát triển những thuật toán cho các máy
tính song song tổng quát.
 Không bị giới hạn về số lượng BXL
 Mọi vị trí của bộ nhớ đều truy cập được bởi bất kỳ BXL nào
 Không giới hạn về dung lượng bộ nhớ chia sẻ trong hệ thống
 Các BXL có thể đọc bất kỳ một vị trí nào của bộ nhớ, nghĩa là không cần
phải chờ để những BXL khác kết thúc công việc truy cập vào bộ nhớ.
Khi chuyển những thuật toán được xây dựng cho máy tính song song tổng
quát sang máy tính cụ thể (lập trình song song) thì phải áp dụng một số các ràng
buộc để đảm bảo chương trình thực hiện được trên những máy tính đó. Về hình
thức, chúng ta thực hiện một trong những điều kiện sau:
 EREW: loại trừ vấn đề xung đột đọc / ghi
 CREW: cho phép đọc đồng thời, nhưng không cho phép xung đột khi ghi
 CRCW: Cho phép đọc, ghi đồng thời. Tất nhiên mô hình cho loại này ít
có giá trị thực tiễn.
Tiếp theo, chúng ta nghiên cứu một số kiến trúc máy tính song song đã có
trên thị trường làm cơ sở để thực hiện lập trình sau này.
1.4.3 Kiến trúc SIMD
Trong máy tính SIMD, tất cả các phần tử xử lý đều được điều hành bởi một

đơn vị điều khiển (CU). Tất cả các đơn vị xử lý nhận được cùng một lệnh từ CU
nhưng hoạt động trên những tập dữ liệu khác nhau. Mô hình máy tính SIMD được
chỉ ra như hình 1-8 có những đặc tính sau:
 Phân tán việc xử lý trên nhiều phần cứng
- 10 -
 Thao tác đồng thời trên nhiều phần tử dữ liệu
 Thực hiện cùng một tính toán trên tất cả các phần tử dữ liệu.


Hình 1-8 Mô hình kiến trúc SIMD
Ví dụ, xét đoạn chương trình được mô tả như sau:
(a)
(b)
Hình 1-9: (a) thực hiện theo SISID, (b) thực hiện theo SIMD
Trong đó, X
1
, X
2
, X
3
, và X
4
là các khối các câu lệnh.
Trong hệ thống SISD, việc thực hiện là tuần tự, sau khi thực hiện xong X
1
, việc thực hiện
X
2
hoặc X
3

là tùy thuộc vào giá trị của X có bằng ∝ hay không và cuối cùng thực hiện X
4
.
- 11 -
Đơn vị
điều khiển
Phần tử
xử lý 2
Tín hiệu
điều khiển
Phần tử
xử lý n
Phần tử
xử lý 1
.
.
.
Bộ nhớ
Kết quả
Luồng lệnh
Luồng
dữ liệu n
Luồng
dữ liệu 2
Luồng
dữ liệu 1
X
1
X
2

X
4
X
3
X= ∝
No
Yes
X
1
X
3
X
4
X
2
Một số PE kiểm tra X= ∝,
một số khác rỗi
Một số PE kiểm tra X≠ ∝,
một số khác rỗi
Tất cả PE
Trong hệ SIMD, có thể một số luồng dữ liệu thỏa mãn X =

, trong khi một
số khác lại thỏa X



. Điều này chỉ ra rằng một số phần tử xử lý (PE) thực hiện
X
2

và một số khác thực hiện X
3
, sau đó tất cả thực hiện X
4
. Lưu ý là không phải tất
cả các PE hoạt động khi hệ thống thực hiện các khối X
2
và X
3
.
Xử lý theo mảng là dạng xử lý song song đầu tiên được nghiên cứu và cài đặt
ứng dụng. Có hai loại máy tính xử lý theo mảng [7]:
 Những máy tính thực hiện các phép toán trên các bit, ví dụ MPP
(Massively Parallel Processor), CM-1, CM-2, v.v.
 Những máy tính thực hiện các phép toán trên các từ (word), ví dụ ILLIAC IV, DAP, v.v.
1.4.4 Kiến trúc MISD
BXL hình ống chính là BXL kiểu MISD làm việc theo nguyên lý hình ống.
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ẽ truyền 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ó.
Ví dụ, hình 1-10 mô tả một tiến trình được phân thành 4 giai đoạn thực hiện
tuần tự, nhưng có thể thực hiện song song theo nguyên lý hình ống để tăng tốc độ
tính toán khi phải thực hiện nhiều tiến trình như thế.
Một tiến trình được chia thành 4 giai đoạn:
Thực hiện tuần tự hai tiến trình phải qua 8 giai đoạn:

Thực hiện theo hình ống hai tiến trình trên chỉ cần trải qua 5 giai đoạn:
Hình 1-10 Thực hiện tuần tự và hình ống của hai tiến trình gồm 4 giai đoạn
Nếu ký hiệu S
i
là thời gian cần thiết để thực hiện giai đoạn thứ i thì:
Tổng thời gian tính toán tuần tự là: 2 * (S
1
+ S
2
+ S
3
+ S
4
)
Tổng thời gian tính toán hình ống là: S
1
+ S
2
+ S
3
+ S
4
+ S
4
Nguyên lý hình ống có thể áp dụng theo hai mức:
- 12 -
Pha 1
Pha 2
Pha 3
Pha 4

Pha 1
Pha 2
Pha 3
Pha 4
Pha 1
Pha 2
Pha 3 Pha 4
Pha 1
Pha 2
Pha 3 Pha 4
Pha 1
Pha 2
Pha 3
Pha 4
 Hình ống theo đơn vị số học: Các đơn vị số học và logic ALU được tổ
chức thành mảng, các phép toán bên trong được thực hiện theo nguyên lý
hình ống (hình 1-11 (a)).
 Hình ống theo đơn vị câu lệnh: Các đơn vị điều khiển CU được phân
đoạn và tổ chức theo hình ống (hình 1-11 (b)).
Hình 1-11 (a) Xử lý hình ống theo ALU, (b) Xử lý hình ống theo CU
Như chúng ta đã biết, việc xử lý theo hình ống được sử dụng để thực hiện gối đầu
nhiều pha thực hiện các câu lệnh liên tiếp và sự truyền thông dữ liệu. Do vậy có thể xây
dựng hình ống vòng tròn giữa các BXL, bộ nhớ và mạng liên kết như sau:
Hình 1-12 Ví dụ về một hình ống vòng tròn
Các phép toán thực hiện bởi CU theo kiến trúc này có thể chia thành 5 giai đoạn:
Giai đoạn 1. Đọc dữ liệu: đọc dữ liệu từ bộ nhớ chia sẻ.
Giai đoạn 2. Chuyển tải dữ liệu: chuyển dữ liệu từ bộ nhớ tới các phần tử xử
lý PE thông qua mạng đọc (Read Network).
Giai đoạn 3. Thực hiện câu lệnh: sử dụng PE để thực hiện các câu lệnh.
Giai đoạn 4. Chuyển tải dữ liệu: chuyển các kết quả từ các PE tới bộ nhớ

thông qua mạng ghi (Write Network).
Giai đoạn 5. Lưu trữ dữ liệu : ghi lại các kết quả vào bộ nhớ chia sẻ.
Nói chung, nguyên lý hình ống cho phép nhiều thao tác gối đầu nhau thực
hiện đồng thời và hỗ trợ để khai thác được khả năng của kiến trúc song song theo
các mức khác nhau.
 Mức câu lệnh. Từng câu lệnh chuyển vào cho một đoạn trong chu trình
thực hiện sao cho sau khi đưa các lệnh vào hình ống thì chúng sẽ thực
hiện lặp lại theo từng chu kỳ.
- 13 -
CU
ALU
ALU
. . .
ALU
Bộ nhớ
CU
. . .
CU
CU
ALU
Bộ nhớ
Shared Memory
Bộ nhớ chia sẻ
Shared Memory
Bộ nhớ chia sẻ
Write Network
Mạng ghi
Read Network
Mạng đọc
 Mức hệ thống con. Nhiều phép toán có thể thực hiện theo hình ống như

ADD, MUL, DIV, và SORT thường có trong nhiều kiến trúc của máy
tính. Những phép toán này được sử dụng theo hình ống rất thường xuyên.
 Mức hệ thống. Nhiều đoạn trong hình ống không cần phải thực hiện ở
mức phần cứng mà có thể ở mức phần mềm.
Kết quả nguyên lý hình ống đã được ứng dụng để thiết kế nhiều hệ máy tính
như: CDC STAR 100, Texas Instruments ASC, Cray 1, v.v.
1.4.5 Các bộ xử lý mảng tâm thu SAP
Năm 1978 Kung và Leiserson đề xuất một loại kiến trúc được gọi là mảng
tâm thu (Systolic Array) cho những tính toán đặc biệt. Đây là kết quả của dự án
thực hiện ở Carnegie-Mellon University và nó được ứng dụng nhiều trong thiết kế
các mạch tích hợp VLSI phục vụ chủ yếu cho việc xử lý tín hiệu và xử lý ảnh.
Mảng tâm thu viết tắt là SA, là một mảng các đơn vị xử lý được kết nối cục bộ
với nhau.
Trong mảng tâm thu SA, mỗi PE được xem như một tế bào, một ô trong
mảng, bao gồm:
 Một số thanh ghi (register)
 Một bộ cộng (adder)
 Các mạch điều khiển
 Đơn vị logic-số học ALU.
Dựa vào SA người ta xây dựng kiến trúc SAP

Hình 1-13 Kiến trúc bộ xử lý mảng tâm thu
Dữ liệu được xử lý trong mỗi ô và được truyền sang cho ô các lân cận.
Trong kiến trúc SAP nêu trên, bộ điều khiển (Controller) làm nhiệm vụ giao
diện cho BXL chính (Host Processor) và gửi các tín hiệu điều khiển quá trình
vào/ra dữ liệu cho SA. Hoạt động của hệ thống theo từng nhịp và lặp lại một cách
đều đặn để tận dụng được khả năng song song của tất cả các phần tử xử lý.
SA có thể tổ chức theo nhiều cấu hình tôpô khác nhau. Hình 1-14 mô tả một
số cấu hình phổ biến của SA.
(a)

- 14 -
Systolic
Array
Mảng tâm thu
Controller
Bộ điều khiển
Host Processor
Bộ Xử lý chính
Tín hiệu
Dữ liệu vào
Kết quả
(c)
(b)
Hình 1-14 Một số cấu hình phổ biến của mảng tâm thu:
(a) mảng tuyến tính, (b) mảng hình tam giác, (c) mảng hai chiều hình vuông
Hiệu quả của SA phụ thuộc rất nhiều vào các đặc tính vào/ra của dữ liệu. Nó
sẽ rất hiệu quả đối với những bài toán mà số liệu đọc/ghi thực hiện với nhịp độ cao,
đều đều và liên tục như các bài toán xử lý ảnh, qui hoạch tuyến tính, v.v.
Ví dụ, xét bài toán nhân hai ma trận cỡ 2
×
2: A * B = C.
a
11
a
12
b
11
b
12
c

11
c
12
a
21
a
22
b
21
b
22
c
21
c
22
Hiển nhiên C

= ∑a
ik
*b
kj
Chúng ta có thể thiết kế SA có 9 PE để thực hiện nhân hai ma trận trên như sau:
Nhập theo hàng
Nhập theo cột
Hình 1-15 Kiến trúc SA để thực hiện nhân hai ma trận
Hệ thống SAP thực hiện như sau:
Nhịp 1. Nhập b
11
, a
11

vào ô số 1 và tính b
11
* a
11
Nhập b
21
vào ô số 4 và a
12
vào ô số 2
Nhịp 2. Truyền b
11
từ ô 1 sang ô 2
Truyền a
11
từ ô 1 sang ô 4 và tính a
11
* b
21
Truyền b
11
từ ô 1 sang ô 2 và tính a
12
* b
11
Truyền b
12
từ ô 4 sang ô 5 và a
12
từ ô 2 sang ô 5 và
tính a

12
* b
21
, đồng thời ở ô số 5 tính c
11
= a
12
* b
11


+ a
12
* b
21
Nhập tiếp b
12
vào ô số 4 và a
21
vào ô số 2
Nhịp 3. Truyền c
11
từ ô 5 sang ô 9
- 15 -
*
=
1
2
4
5

3
9
6
7
8
a
11
a
21
a
12
a
22
b
22
b
12
b
21
b
11
c
11
c
12
c
21
c
22
Truyền a

21
*b
11
từ ô 2 sang ô 6
Truyền b
12
từ ô 5 sang ô 6
Nhập a
22
vào ô 3, và nhập b
22
vào ô 7
Nhịp 4: Truyền a
22
từ ô 3 sang ô 6 và tính a
22
* b
21
cộng dồn với kết quả được chuyển từ ố số 2 sẽ cho
c
21
= a
21
* b
11
+ a
22
* b
21
Chuyển c

11 từ
ô 9 ra và gán cho c
11
Tương tự đối với các trường hợp còn lại.
Năm 1986 Intel kết hợp với Kung đã xây dựng một hệ máy tính kiểu SAP đặt
tên là iWrap System, version sau được cải tiến vào năm 1990. Trong những năm
1990 còn có seri máy tính loại mini-super của Convex Computer Corporation được
xây dựng từ những bộ CPU 64 bit được gắn với bộ nhớ chung.
1.4.6 Kiến trúc máy tính kiểu MIMD
Máy tính kiểu MIMD là loại đa BXL hoặc còn gọi là hệ thống đa máy tính,
trong đó mỗi BXL có đơn vị điều khiển (CU) riêng và thực hiện chương trình riêng
của mình. MIMD có những đặc trưng sau:
 Xử lý phân tán trên một số BXL độc lập
 Chia sẻ với nhau một số tài nguyên, trong đó có hệ thống bộ nhớ
 Mỗi BXL thao tác độc lập và có thể thực hiện đồng thời với nhau
 Mỗi BXL chạy một chương trình riêng.
Đã có những máy tính kiểu MIMD được sản xuất như:
(i) Intel iPSC Machine. Đây là những máy tính song song đầu tiên được
tung ra thị trường từ 1985 với ver. 1.0, ver. 2.0 (1987), sau đó là iPSC/860 (năm
1990). Hệ thống có khoảng 64 nút và mỗi nút có các BXL 80386 /80387 với bộ
nhớ từ 4 MB đến 16 MB.
(ii) Carnegie-Mellon Multi-Mini Processor. Hệ C.mmp được xây dựng từ
1971 ở đại học Carnegie-Mellon gồm: 16 minicomputer được kết nối với 16 bộ
nhớ thông qua bộ nhớ liên kết chéo nhiều giai đoạn để tạo ra hệ MIMD chia sẻ bộ
nhớ. Thế hệ tiếp theo là Cm*.
1.5 Kết luận
Sự phát triển của công nghệ phần cứng dẫn tới xu thế xử lý song song để đáp
ứng các yêu cầu tính toán của nhiều bài toán trong thực tế.
Nhiều máy tính có kiến trúc song song ra đời như các loại máy tính kiểu
SIMD, MISD, MIMD ra đời tạo điều kiện cho công nghệ xử lý song song phát

triển cả về mặt công nghệ lẫn triển khai ứng dụng.
- 16 -
Vấn đề xử lý song song cũng có thể thực hiện được trên các máy tuần tự kiểu von
Neumann bằng cách sử dụng nguyên lý xử lý hình ống hay chia sẻ thời gian, v.v.
Bài tập
1.1 Nêu đặc trưng cơ bản của kiến trúc máy tính tuần tự của von Neumann
1.2 Các kiến trúc máy tính có thể được phân loại như thế nào? dựa vào những yếu
tố nào để phân loại?
1.3 Một hệ thống như thế nào được gọi là máy tính song song?
1.4 Máy tính kiểu MIMD khác với mạng các máy tính như thế nào?
1.5 Nêu nguyên lý xử lý theo hình ống. Những bài toán có những tính chất gì thì
thích hợp với kiến trúc xử lý hình ống?
1.6 Cần bao nhiêu nhịp để thực hiện nhân hai ma trận 100 × 100 trên SAP có
100×100 phần tử xử lý? Nếu sử dụng hệ 1000×1000 PE thì hệ nào tốt hơn
(nhanh hơn)?
1.7 Một công việc được chia thành m công việc con,mỗi công việc con đòi hỏi một
đơn vị thời gian để thưc hiện. Hỏi cần bao nhiêu đơn vị thời gian để hệ hình ống
gồm m-bộ xử lý tuyến tính (gồm m-pha thực hiện) thực hiện được nhiệm vụ cho
trước?

Chương II
Các thành phần của máy tính song song
Chương II đề cập đến:
 Tổ chức bộ nhớ của máy tính song song
 Các mạng liên kết
 Chương trình dịch và hệ điều
 Những ràng buộc dữ liệu vào/ra.
- 17 -
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 [6].
Trong những năm vừa qua, cùng với sự tăng trưởng nhanh chóng của phần
cứng, nhiều máy tính hỗ trợ xử lý song song, số lượng máy tính song song cũng
tăng nhanh cùng với nhiều phương pháp, ngôn ngữ lập trình song song ra đời.
Những công nghệ mới này ngày một hoàn thiện và đóng vai trò quan trọng trong
công nghệ thông tin, đáp ứng yêu cầu của nhiều lĩnh vực khoa học, công nghệ và
nhiều lĩnh vực ứng dụng khác.
Như trên đã phân tích, những kiến trúc kiểu SIMD, MIMD là những máy tính
đa BXL. Đặc tính quan trọng của máy tính kiểu SIMD là các BXL số học được
đồng bộ ở mức lệnh, do vậy mức độ hiệu quả của chúng phụ thuộc vào cấu trúc dữ
liệu và cách tổ chức bộ nhớ. Sau đây là một số vấn đề cần quan tâm khi thiết kế
kiến trúc máy tính song song.
 Sử dụng tập nhiều thanh ghi: sẽ làm giảm hiệu ứng phụ của các thanh
ngắt
 Sử dụng không gian nhớ lớn: làm giảm hiệu ứng phụ của sự đổi chỗ, làm
tăng hiệu quả trao đổi dữ liệu của hệ thống.
 Lập lịch cho BXL: vấn đề là xây dựng bộ lịch cấp phát hữu hiệu các BXL
cho từng nhiệm vụ đơn lẻ một cách động như các chương trình ứng dụng
yêu cầu.
 Đồng bộ các BXL: điều khiển nhiều tiến trình hoạt động đồng thời, cùng
truy cập đến một số hữu hạn các tài nguyên chung, ví dụ như bộ nhớ, đảm
bảo tránh được sự tắc nghẽn (deadlock)
 Thiết kế cấu hình mạng liên kết: tập trung vào việc kết nối BXL với BXL,
BXL với bộ nhớ trong hệ thống. Cấu hình tôpô của mạng kết nối là vấn
đề rất quan trọng trong thiết kế hệ thống song song.
 Phân đoạn: xác định mức độ song song trong các thuật toán để xác định
được các luồng xử lý đồng thời. Sự phân đoạn có thể thực hiện ở nhiều
mức khác nhau: mức lệnh, mức thủ tục, hoặc mức chương trình, v.v.
 Đảm bảo tin cậy: vấn đề dung thứ lỗi (Fault Tolerance) đảm bảo nếu có
một BXL nào đó không thực hiện được thì công việc mà nó phải đảm

nhiệm sẽ được giao cho BXL khác thực hiện để đảm bảo trong mọi tình
huống để công việc chung vẫn được hoàn thành.
2.1 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ớ.
Bộ nhớ thường được chia thành n mức như hình 2-1.
- 18 -
BXL
Bộ nhớ mức 1
Bộ nhớ mức n
Bộ nhớ mức 2
Mức thấp nhất
Mức cao nhất
Nhỏ, nhanh và đắt
Lớn, chậm và rẻ

Hình 2-1 Phân cấp hệ thống bộ nhớ
Bộ nhớ mức 1 là mức bộ nhớ cao nhất có dung lượng nhỏ nhất, nhanh và đắt
nhất, thường gắn chặt với mỗi BXL thành bộ nhớ cục bộ. Bộ nhớ mức 2 thường
nhỏ hơn, chậm hơn và rẻ hơn mức 1, v.v.
Về nguyên tắc, dữ liệu được chuyển đổi giữa các mức lân cận của các bộ nhớ
và hoàn toàn được điều khiển bởi bộ nhớ mức 1. Về lý thuyết, trong cấu trúc phân
cấp bộ nhớ, tốc độ truy cập bộ nhớ trung bình gần bằng tốc độ truy cập ở mức cao
(mức 1), nhưng chi phí của các đơn vị nhớ trung bình lại gần với giá của bộ nhớ ở
mức thấp nhất (mức n).
Sau đây chúng ta xét một số mô hình bộ nhớ của các máy tính song song.
2.1.1 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à hai đầu ra như hình 2-2.
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 khoá k
 Bit lựa chọn s để xác định ô nhớ thích hợp cho việc thực hiện
đọc/ghi.
Hai kết quả ở đầu ra:
 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ả ra q.
- 19 -
s
k q
a
R/W m
Chọn
Khoá
Đối số
Đọc/ghi
Kết quả
Đối sánh
Hình 2-2 Cấu trúc của ô nhớ AM
Tất cả các bộ 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. Hình 2-3 mô tả một khối bộ nhớ AM có n
từ và mỗi từ có m bit. Mỗi ô trong số m * n ô nhớ và nó có một mạch vòng để so
sánh đối số với giá trị được lưu trữ trong các ô nhớ, đồng thời chỉ ra kết quả khi đối
sánh thành công. Hệ thống có thanh ghi lưu trữ đối số, một thanh ghi đánh dấu
những trường của mỗi từ mà bộ nhớ cần so sánh và thanh ghi đối sánh (các
bít đối sánh) chỉ ra những từ tìm thấy.
0 1 n-1
.
.

Hình 2-3 Cấu trúc của bộ nhớ kết hợp
Ví dụ, tìm trong AM tất cả các từ có 8 bit cao nhất chứa giá trị (1101 1100)
2
và trả lại từ đầu tiên được tìm thấy.
Giá trị (1101 1100)
2
là đối số để tìm, thanh ghi đánh giấu (mặt nạ - mask
register) là 8 bit cao nhất. Quá trình tìm kiếm thực hiện như sau:
1. Từ cần tìm (1101 1100)
2
được nạp vào thanh ghi đối số.
2. Đoạn mà chúng ta quan tâm là 8 bit cao nhất, vậy những bit này được đưa
vào thanh ghi mặt nạ để đánh giấu.
3. Tất cả các từ trong bộ nhớ được so sánh song song với thanh ghi đối số.
+ Nếu từ đó đối sánh được với đối số thì thanh ghi đối sánh nhận giá trị 1.
+ Nếu nhiều hơn một bit nhận giá trị 1, mạch vòng sẽ xác định các từ tương
ứng được đọc hay được ghi.
- 20 -
0
1

.
.
m-1
Argument Register
Mask Register Mặt nạ
Buffer Register
Tags
Match Register
Input

Input
Output
So sánh với bộ nhớ truy cập ngẫu nhiên RAM thì AM đắt hơn, nhưng bù lại
tốc độ tìm kiếm lại nhanh hơn.
2.1.2 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 BXL. Nó cho phép các BXL truy cập vào bộ nhớ đồng thời và có thể
hoạt động một cách dị bộ. Ví dụ, bộ xử lý P
i
ghi dữ liệu vào một vùng nhớ và dữ
liệu này có thể được P
j
truy cập, nghĩa là P
i
và P
j
có thể dùng bộ nhớ chia sẻ để
trao đổi với nhau.
Mô hình loại này có các dạng sau:
1. Các phương thức truy cập bộ nhớ (Access Memory Primitives)
Có một số cách khác nhau để các BXL có thể đọc / ghi một số dữ liệu gối đầu
nhau. Đó là:
 Concurrent Read (CR): nhiều BXL có thể đọc đồng thời cùng một ô nhớ.
 Exlusive Read (ER): p BXL đọc được p vùng nhớ khác nhau. Mỗi BXL
đọc được chính xác một vùng nhớ và mỗi vùng nhớ được đọc bởi một
BXL.
 Concurrent Write (CW): cùng một thời điểm cho phép nhiều BXL ghi vào
cùng một vùng nhớ.

 Exlusive Write (EW): p BXL ghi được vào p vùng nhớ khác nhau. Mỗi
BXL ghi được vào chính xác một vùng nhớ và mỗi vùng nhớ được ghi
bới một BXL.
Dễ nhận thấy rằng: ER, EW là trường hợp đăc biệt của CR và CW. Trong đó,
CW là cần phải chú ý nhất và người ta phân nó thành các loại như sau:
 Ghi đồng thời có ưu tiên (Priority CW): các BXL được gắn mức ưu tiên
và khi có nhiều BXL muốn ghi dữ liệu vào một vùng nhớ thì ưu tiên cho
BXL có mức ưu tiên cao nhất. Các mức ưu tiên có thể gắn tĩnh hoặc động
theo những qui tắc được xác định khi thực hiện.
 Ghi chung đồng thời (Common CW): tất cả các BXL được phép ghi vào
cùng một vùng nhớ chỉ khi chúng ghi cùng một giá trị. Trong trường hợp
này, một BXL được chọn để ghi dữ liệu đó.
 Ghi tự do đồng thời (Arbitrary CW): một số BXL muốn ghi dữ liệu đồng
thời vào một vùng nhớ, nhưng chỉ một BXL được phép thay đổi giá trị
của vùng nhớ đó. Trong trường hợp này, chúng ta phải chỉ ra cách để lựa
chọn BXL thực hiện.
 Ghi ngẫu nhiên đồng thời (Random CW): BXL được lựa chọn để ghi dữ
liệu là ngẫu nhiên.
- 21 -
 Ghi tổ hợp đồng thời (Combining CW): tất cả các dữ liệu mà các BXL
định ghi đồng thời vào bộ nhớ được tổ hợp lại thành một giá trị. Giá trị
này sẽ được ghi vào bộ nhớ đó.
2. Mô hình UMA của bộ nhớ chia sẻ
Trong mô hình này, tất cả các BXL làm việc nhờ cơ chế chuyển mạch tập
trung (Central switching) để điều khiển việc truy cập tới bộ nhớ chia sẻ. Thời
gian truy cập vào bộ nhớ là như nhau đối với mọi BXL, nghĩa là bộ nhớ là đồng
nhất.
Có một số cách cài đặt cơ chế chuyển mạch như sau:
 Sử dụng đường dẫn chung (Common Bus)
 Lựa chọn chuyển mạch chéo (Crossbar Switch)

 Mạng nhiều giai đoạn (Multistage Network)
3. Mô hình NUMA của bộ nhớ chia sẻ
Ngược lại với cách tổ chức trên, ở đây bộ nhớ phân tán và được chia thành
các đơn thể độc lập. Bộ nhớ chia sẻ được phân tán cho tất cả các BXL thành bộ
nhớ cục bộ (local) và tuyển tập tất cả các đơn thể bộ nhớ tạo ra bộ nhớ chung
cho các BXL. Các BXL được phép truy cập đồng thời tới một hay nhiều đơn thể
bộ nhớ và có thể hoạt động ít nhiều độc lập với nhau.
Máy tính TC 2000 của BBN System và Technologies of Cambrige,
Massachusett, và máy tính Cedar System của đại học Illinois được xây dựng theo
cấu trúc bộ nhớ NUMA. TC 2000 có 128 BXL, mỗi BXL có 19 MB bộ nhớ
nguyên thuỷ.
4. Kiến trúc bộ nhớ Cache-Only (COMA)
Bộ nhớ chính được phân tán và được chuyển thành bộ nhớ cache (cất
giữ), tất cả các bộ nhớ cache tạo ra không gian địa chỉ tổng thể.
Có một số máy tính đã được xây dựng theo kiến trúc này:
+ Data Diffusion Machine (DDM) của Swedish Institute of Computer
Science (1990).
+ KSR-1 Machine của Kendall Square Research (1992).
5. Bộ nhớ đa máy tính
Mỗi nút trong hệ thống đa máy tính cũng chính là một máy tính có bộ nhớ
riêng không chia sẻ với những BXL khác. Các BXL trao đổi với nhau thông qua
việc gửi và nhận các thông điệp (message).
Việc trao đổi dữ liệu trong mạng là điểm - tới điểm (point – to – point) thông
qua sự liên kết tĩng giữa các BXL.
- 22 -
2.2 Mạng kết nối các thành phần của máy tính song song
Trong hầu hết các kiến trúc song song như: những hệ đa bộ xử lý chia sẻ bộ
nhớ, đa bộ xử lý đa bộ nhớ , v.v. thì vấn đề quan trọng nhất trong thiết kế là xác
định sự liên kết giữa các BXL và bộ nhớ với nhau.
Một kiến trúc lý tưởng là kiến trúc trong đó, mỗi BXL đều kết nối được với

các BXL còn lại. Khi đó nó tạo ra một đồ thị đầy đủ. Ví dụ, nếu hệ có p BXL thì sẽ
có p * (p – 1) đường liên kết. Dễ nhận thấy kiến trúc loại này sẽ rất phức tạp, nhất
là khi p đủ lớn.
Nói chung có hai loại cấu hình tôpô cho mạng liên kết: liên kết tĩnh và liên
kết động.
 Mạng liên kết tĩnh là mạng các thành phần của hệ thống máy tính, trong
đó các BXL, bộ nhớ được liên kết với nhau một cách cố định, không thay
đổi được.
 Mạng liên kết động là mạng các thành phần của hệ thống máy tính, trong
đó sự liên kết giữa các BXL, bộ nhớ là có thể thay đổi được cấu hình.
Lĩnh vực liên kết động được rất nhiều người tập trung nghiên cứu và đã có
nhiều công trình lý thuyết được công bố. Sau đây chúng ta tìm hiểu một số loại cấu
hình tôpô của mạng liên kết giữa các BXL của các máy tính song song.
2.2.1 Liên kết tuyến tính và vòng xuyến
Trong mạng liên kết tuyến tính các BXL được tổ chức liên kết với nhau
theo dãy và được đánh số theo thứ tự tăng dần như hình 2-4.
Hình 2-4 Mạng liên kết n bộ xử lý
Trong mạng lên kết tuyến tính, trừ hai phần tử đầu và cuối, tất cả các BXL
bên trong đều có hai láng giềng là BXL trước và sau nó.
Mặc dù đây là dạng liên kết đơn giản, nhưng dữ liệu cũng cần phải chuyển
qua nhiều BXL, kết quả là sự truyền thông dữ liệu giữa các BXL, đặc biệt là giữa
BXL đầu và cuối sẽ bị chậm lại khi số BXL khá lớn.
Mạng liên kết vòng được tổ chức tương tự như liên kết tuyến tính nhưng
BXL đầu và cuối được nối vòng với nhau như hình 2-5.
- 23 -
P
0
P
1
P

n-1
. . .
P
2
P
6
P
5
P
3
P
4
P
0
Hình 2-5 Mạng liên kết vòng của 6 BXL
Trong mạng liên kết vòng, sự trao đổi giữa các BXL có thể thực hiện theo
một chiều, gọi màng mạng đơn, hoặc theo cả hai chiều được gọi là mạng kép. Tất
nhiên sự truyền thông trong mạng liên kết vòng, nhất là giữa những BXL ở xa nhau
thì cũng vẫn bị trễ.
2.2.2 Liên kết xáo trộn
Giả sử có N BXL: P
0
, P
1
, …, P
N
, với N là lũy thừa của 2. Trong mạng liên
kết xáo trộn hoàn hảo, đường liên kết một chiều từ P
i
tới P

j
được xác định như
sau:
2i với 0 ≤ i ≤ N/2 - 1
2i+1-N với N/2 ≤ i ≤ N - 1
Hình 2-6 chỉ ra một mạng liên kết xáo trộn hoàn hảo với N = 8, trong đó sự liên
kết xáo trộn được ký hiệu bằng mũi tên còn sự liên kết thay đổi ký hiệu bằng đoạn
thẳng. Chúng ta dễ nhận thấy, BXL i được liên kết với các BXL {2i Mod(N-1)} và P
0
,
P
N-1
tự liên kết với chính nó.
Hình 2-6 Mạng liên kết xáo trộn hoàn hảo có 8 bộ xử lý
Hình 2-6 mô tả mạng xáo trộn một chiều. Tương tự như thế, người ta có thể
thực hiện liên kết hai chiều bằng cách thay các đường mũi tên một chiều bằng mũi
tên hai chiều.
2.2.3 Mạng liên kết lưới hai chiều
Mạng liên kết mắt lưới hai chiều được sử dụng để thiết kế các máy tính
ILLIAC IV, MPP (Massively Parallel Processor), DAP (ICL Distributed Array
Processor), v.v. Trong mạng liên kết loại này, mỗi BXL được liên kết với bốn láng
giềng: trên, dưới, bên trái và bên phải.
Có hai dạng liên kết lưới như hình 2-7.
(a) Lưới không quay vòng (b) Lưới quay vòng tròn
- 24 -
j =
P
0
P
1

P
2
P
3
P
4
P
5
P
6
P
7
Hình 2-7 Mạng liên kết mắt lưới hai chiều
2.2.4 Mạng liên kết siêu khối hoặc hình khối n-chiều
Giả sử có n bộ xử lý: P
0
, P
1
, …, P
n
, với n = 2
q
, q ≥ 0. Nếu mỗi BXL cần liên
kết với đúng q bộ xử lý lân cận thì có thể dùng mạng liên kết theo hình siêu khối n
chiều.
Trong mạng liên kết hình khối, các chỉ số của các BXL được chuyển
thành nhị phân và hai BXL được gọi là láng giềng với nhau nếu nhãn chỉ
số của chúng sai khác nhau đúng một bit. Ví dụ với n = 8 chúng ta có mạng
liên kết hình khối như hình 2-8.
Hình 2-8 Mạng liên kết hình khối

2.2.5 Mạng liên kết hình sao
Trong mạng liên kết hình sao với n là số nguyên, bộ xử lý sẽ tương ứng với
một hoán vị của n ký hiệu. Mạng hình sao ký hiệu là S
n
sẽ có n! = 1*2*…*n bộ
xử lý, trong đó nhãn chỉ số của mỗi BXL là một hoán vị của n ký hiệu.
P
i
được liên kết với P
j
⇔ j nhận được từ i bằng cách thay ký hiệu thứ k, với
2≤k≤n.
Ví dụ, n = 4, ta nhận thấy P
2134
và P
3124
là có liên kết với nhau trong S
4
vì 3124
nhận được từ 2134 bằng cách đổi chỗ vị trí đầu (số 2) với vị trí thứ ba (số 3).
Tương tự suy ra P
2134
và P
4132
là có liên kết với nhau. Vậy S
4
có 4! = 24 bộ xử lý
được mô tả như hình 2-9.
- 25 -
2

P
000
0
5
1
4
7
6
3
P
001
P
100
P
101
P
111
P
110
P
010
P
011
P
3412
P
4312
P
1432
P

1342
P
4132
P
3142
P
4231
P
3241
P
2431
P
2341
P
3421
P
4321
P
1234
P
3214
P
2134
P
2314
P
3124
P
1324
P

2413
P
4213
P
1423
P
1243
P
4123
P
2143

×