Chương 1: Các kiến trúc song song
1.1 Tổng quan về tính toán song song
1.2 Các kiến trúc song song đồng bộ
1.2.1 Máy tính một dòng lệnh, một dòng dữ liệu (SISD)
1.2.2 Máy tính một dòng lệnh, nhiều dòng dữ liệu (SIMD)
1.2.3 Máy tính vector.
1.3 Các kiến trúc song song không đồng bộ
1.3.1 Máy tính nhiều dòng lệnh, một dòng dữ liệu (MISD hay Reduction).
1.3.2 Máy tính nhiều dòng lệnh, nhiều dòng dữ liệu (MIMD)
1.4 Tổ chức các bộ vi xử lý
1.5 Các mảng bộ vi xử lý (processor arrays).
1.6 Máy tính nhiều bộ vi xử lý (multiprocessor)
1.6.1 Nhiều bộ vi xử lý truy cập bộ nhớ đồng bộ (Uniform Memory Access
Multiprocessors).
1.6.2 Nhiều bộ vi xử lý truy cập bộ nhớ không đồng bộ (Non Uniform Memory
Access)
1.7 Hệ thống nhiều máy tính (Multicomputers).
1.8 Giới thiệu về máy tính CM-200 (Connection Machine 200 by Thinking
Machine Corp).
32 trang |
Chia sẻ: candy98 | Lượt xem: 1535 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Tính toán song song - Chương 1: Các kiến trúc song song - Ngô Văn Thanh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TS. Ngô Văn Thanh,
Viện Vật lý.
Chuyên ngành : Công nghệ thông tin.
Michael J. Quinn. Parallel Computing, theory and practice, 2nd edition. Oregon
State University, USA. McGraw Hill Inc.
Dimitri P. Bertsekas and John N. Tsitsiklis. Parallel and Distributed Computation,
Numerical Methods. Massachusets Institute of Technology. Prentice Hall Press.
Enrico P. The lecture notes on Parallel Computing (CS 491). Computer Science
Dept. New Mexico State University, USA. Spring 2004.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Strein.
Introduction to Algorithms, 2nd edition. Massachusets Institute of Technology.
The MIT Press.
David A. Patterson and John L. Hennessy. Computer Organization & Design, the
hardware/software interface, 2nd edition. Stanford University & University of
California at Berkeley, 2002.
Charles Leiserson. The lecture notes on Theory of Parallel Systems.
Massachusets Institute of Technology, Open Course Ware. www.ocw.mit.edu
Michel Cosnard & Denis Trystram, Parallel Algorithms and Architectures.
International Thomson Computer Press. 1995.
@2009, Ngô Văn Thanh - Viện Vật Lý
Chương 1: Các kiến trúc song song
1.1 Tổng quan về tính toán song song
1.2 Các kiến trúc song song đồng bộ
1.2.1 Máy tính một dòng lệnh, một dòng dữ liệu (SISD)
1.2.2 Máy tính một dòng lệnh, nhiều dòng dữ liệu (SIMD)
1.2.3 Máy tính vector.
1.3 Các kiến trúc song song không đồng bộ
1.3.1 Máy tính nhiều dòng lệnh, một dòng dữ liệu (MISD hay Reduction).
1.3.2 Máy tính nhiều dòng lệnh, nhiều dòng dữ liệu (MIMD)
1.4 Tổ chức các bộ vi xử lý
1.5 Các mảng bộ vi xử lý (processor arrays).
1.6 Máy tính nhiều bộ vi xử lý (multiprocessor)
1.6.1 Nhiều bộ vi xử lý truy cập bộ nhớ đồng bộ (Uniform Memory Access
Multiprocessors).
1.6.2 Nhiều bộ vi xử lý truy cập bộ nhớ không đồng bộ (Non Uniform Memory
Access)
1.7 Hệ thống nhiều máy tính (Multicomputers).
1.8 Giới thiệu về máy tính CM-200 (Connection Machine 200 by Thinking
Machine Corp).
@2009, Ngô Văn Thanh - Viện Vật Lý
Chương 1: Các kiến trúc song song
1.1 Tổng quan về tính toán song song
Hạn chế của máy tính
Tốc độ của bộ vi xử lý của máy tính (processor).
Dung lượng của bộ nhớ RAM.
Giải quyết những bài toán lớn mất nhiều thời gian.
Tính toán song song
Phần cứng:
Siêu máy tính: SIMD, MIMD
máy tính có nhiều bộ vi xử lý (multi-processor), có nhiều lõi trong một bộ
vi xử lý (multi-core).
Cụm máy tính (cluster): kết nối các máy tính PC với nhau tạo thành cụm
máy tính, các máy tính giao tiếp với nhau thông qua mạng.
Máy tính ảo song song (PVM = parallel vitual machine): Chia một CPU
thành nhiều CPU ảo mà nó có khả năng hoạt động tương tự như các CPU
thực thụ.
@2009, Ngô Văn Thanh - Viện Vật Lý
Phần mềm lập trình (C/C++ và Fortran):
OpenMP : chỉ hoạt động trên hệ máy tính chia sẻ bộ nhớ (shared memory),
có kiến trúc kiểu SIMD.
MPI (message passing interface): thực hiện các câu lệnh song song trên các
CPU khác nhau bằng giao thức gửi và nhận các thông điệp.
High performance (HPF/HPC): tính toán song song giữa các phần tử của các
mảng dữ liệu. Hay nói cách khác, các mảng dữ liệu được phân bố trên các
CPU khác nhau (Data distribution).
MPI và HPF/HPC đều có thể sử dụng trên cả máy tính multi-processor
(SIMD /MIMD), cụm máy tính và cả trên máy tính ảo song song.
Thuật toán song song
Thuật toán song song nhân hai ma trận.
Thuật toán sắp xếp.
Thuật toán song song tìm kiếm tổ hợp.
@2009, Ngô Văn Thanh - Viện Vật Lý
1.2 Các kiến trúc song song đồng bộ
1.2.1 Máy tính một dòng lệnh, một dòng dữ liệu (SISD - Single
Instruction - Single Data)
Máy tính tuần tự (scalar computer): chỉ thực hiện một chỉ thị (một dòng lệnh)
trong mỗi chu trình.
Ví dụ về phép tính cộng hai số a và b: cần phải thực hiện 5 chu trình.
Trong thực tế thì mỗi một chu trình được kết hợp bởi nhiều chu trình con.
Máy tính loại SISD là máy tính PC thông thường, chỉ có duy nhất một bộ vi
xử lý. Không có cấu trúc song song và cũng không có dữ liệu song song.
Nhận
chỉ thị
Đọc giá
trị a
Đọc giá
trị b
Tính
a+b
Ghi kết
quả
@2009, Ngô Văn Thanh - Viện Vật Lý
Kênh tuyến (pipeline): chia các bước tính khác nhau thành các đơn vị chức
năng để đưa ra kết quả trung gian.
Bộ vi xử lý được tạo bởi nhiều kênh tuyến được gọi là máy tính siêu tuần tự
(superscalar computer)
Đọc
lệnh
Đọc
lệnh
Thời gian
Đọc giá
trị a
Đọc giá
trị b
Đọc
lệnh
Đọc
lệnh
Đọc
lệnh
Đọc giá
trị a
Đọc giá
trị b
Đọc giá
trị a
Đọc giá
trị b
Đọc giá
trị a
Tính
a+b
Ghi kết
quả
Tính
a+b
Chu trình
@2009, Ngô Văn Thanh - Viện Vật Lý
Kỹ thuật kênh tuyến:
Ví dụ về 5 phép tính cộng hai số ai và bi: cần phải thực hiện 9 chu trình.
Ưu điểm: tăng tốc độ xử lý dữ liệu
Nhược điểm:
Chỉ hoạt động tốt cho một số kiểu dữ liệu đặc thù
Cấu trúc bộ vi xử lý phức tạp
Khó điểu khiển.
CT1 CT2 CT3 CT4 CT5 CT6 CT7 CT8 CT9
Lệnh 1 Đọc
lệnh
Đọc số
a1
Đọc số
b1
Tính
a1+b1
Ghi kết
quả
Lệnh 2 Đọc
lệnh
Đọc số
a2
Đọc số
b2
Tính
a2+b2
Ghi kết
quả
Lệnh 3 Đọc
lệnh
Đọc số
a3
Đọc số
b3
Tính
a3+b3
Ghi kết
quả
Lệnh 4 Đọc
lệnh
Đọc số
a4
Đọc số
b4
Tính
a4+b4
Ghi kết
quả
Lệnh 5 Đọc
lệnh
Đọc số
a5
Đọc số
b5
Tính
a5+b5
Ghi kết
quả
@2009, Ngô Văn Thanh - Viện Vật Lý
1.2.2 Máy tính một dòng lệnh, nhiều dòng dữ liệu (SIMD - Single
Instruction - Multiple Data)
Đối với các bộ dữ liệu lớn, các tính toán số thường được thực hiện với cùng
một phép tính với các dữ liệu khác nhau.
SIMD: có thể cùng thực hiện cùng một dòng lệnh trên nhiều phần dữ liệu
khác nhau.
Các bài toán sử dụng trên hệ SIMD cần phải được vector hóa.
Máy tính vector được sử dụng hết sức rộng rãi trong các lĩnh vực tính toán
hiệu năng cao. Tuy nhiên , các máy tính vector có cấu trúc rất phức tạp và giá
thành cao.
@2009, Ngô Văn Thanh - Viện Vật Lý
SIMD – own local memory
@2009, Ngô Văn Thanh - Viện Vật Lý
Các bộ vi xử lý truyền dữ liệu cho nhau qua module nhớ
@2009, Ngô Văn Thanh - Viện Vật Lý
1.2.3 Máy tính vector
Một máy tính vector bao gồm một bộ tính toán vô hướng bình thường dùng
kỹ thuật kênh tuyến và một bộ làm tính vector .
Bộ tính toán vô hướng, giống như bộ xử lý dùng kỹ thuật ống dẫn, thực hiện
các phép tính vô hướng, còn bộ làm tính vector thực hiện các phép tính
vector.
Đa số các máy tính vector cho phép làm các phép tính trên vector số nguyên,
vector số lẻ và vector số logic (số Boolean).
Có 2 kiểu kiến trúc máy tính vector :
Kiểu vector ô nhớ - ô nhớ: các phép tính vector được thực hiện trong bộ
nhớ
Kiểu thanh ghi: máy tính có nhiều thanh ghi, mỗi thanh ghi có nhiều vector
Máy CRAY-2 (1995) có 8 thanh ghi vector, mỗi thanh ghi có thể chứa 64
vector , mỗi vector có chiều dài 64 bit.
@2009, Ngô Văn Thanh - Viện Vật Lý
1.3 Các kiến trúc song song không đồng bộ
1.3.1 Máy tính nhiều dòng lệnh, một dòng dữ liệu (MISD - Multiple
Instruction - Single Data)
Bộ vi xử lý thực hiện nhiều câu lệnh khác nhau trên cùng một dòng dữ liệu.
Loại máy tính này không phổ biến, nó chỉ được thiết kế chế tạo cho những
nhu cầu đặc biệt.
@2009, Ngô Văn Thanh - Viện Vật Lý
1.3.2 Máy tính nhiều dòng lệnh, nhiều dòng dữ liệu (MIMD - Multiple
Instruction - Multiple Data)
Các máy tính có từ 2 CPU hoặc nhiều hơn 2 lõi trên một CPU được gọi là
MIMD.
Các bộ vi xử lý thực hiện nhiều câu lệnh khác nhau trên các tập dữ liệu
khác nhau.
@2009, Ngô Văn Thanh - Viện Vật Lý
Shared memory
Message Passing
@2009, Ngô Văn Thanh - Viện Vật Lý
1.4 Tổ chức các bộ vi xử lý
Bộ xử lý được chia chủ yếu thành hai bộ phận: Phần điều khiển và phần
đường đi của dữ liệu.
Đường đi của dữ liệu
Các bộ phận:
Bộ phận làm tính và luận lý (ALU: Arithmetic and Logic Unit).
Các mạch dịch.
Các thanh ghi: thanh ghi trạng thái, thanh ghi chương trình
Các đường kết nối các bộ phận trên với nhau.
Bộ đa hợp: nối các kênh dữ liệu với CPU và bộ nhớ.
Nhiệm vụ:
Đọc các toán hạng từ các thanh ghi tổng quát
Thực hiện các phép tính trên toán hạng này trong bộ làm tính và luận lý
ALU
Lưu trữ kết quả trong các thanh ghi tổng quát.
@2009, Ngô Văn Thanh - Viện Vật Lý
Phần điều khiển:
Bộ điều khiển tạo các tín hiệu điều khiển di chuyển số liệu, điểu khiển các
tác vụ như đọc và ghi dữ liệu lên bộ nhớ.
Bộ điều khiển mạch điện tử: đơn giản và hữu hiệu khi các lệnh có chiều dài
cố định, có dạng thức đơn giản.
@2009, Ngô Văn Thanh - Viện Vật Lý
Bộ điều khiển vi chương trình: điều khiển các tác vụ của một lệnh mã máy được thực
hiện bằng một chuỗi các vi lệnh.
Mỗi một vi chương trình được xử lý bởi một vi máy tính nằm bên trong bộ điều
khiển.
Bộ xử lý này có thể xử lý các tập lệnh phức tạp mà các lệnh đó có chiều dài khác
nhau.
@2009, Ngô Văn Thanh - Viện Vật Lý
1.5 Các mảng bộ vi xử lý (processor arrays).
Thuộc kiểu kiến trúc SIMD.
Các bộ vi xử lý được phân bố dưới dạng mảng một chiều hoặc hai chiều.
Mỗi một bộ vi xử lý có truy cập với bộ nhớ nội bộ. Chỉ giao tiếp dữ liệu với các
bộ vi xử lý lân cận thông qua kết nối mạng.
Tất cả các bộ vi xử lý có thể thực hiện đồng thời một câu lệnh.
@2009, Ngô Văn Thanh - Viện Vật Lý
1.6 Máy tính nhiều bộ vi xử lý (multiprocessor).
Máy tính nhiều bộ vi xử lý có ít nhất là 2 bộ vi xử lý được kết nối với nhau để
có thể thực hiện đồng thời các công việc khác nhau.
Phân loại theo kiểu giao tiếp:
Nhiều bộ vi xử lý (2-256)
Nhiều máy tính (8-256)
Phân loại theo kiểu kết nối vật lý:
Kết nối trên Bus (2-32)
Kết nối qua mạng (8-256)
Phân loại kiểu Flynn: phân loại theo khả năng xử lý
các câu lệnh và dữ liệu
Máy tính một dòng lệnh, một dòng dữ liệu (SISD)
Máy tính một dòng lệnh, nhiều dòng dữ liệu (SIMD)
Máy tính nhiều dòng lệnh, một dòng dữ liệu (MISD)
Máy tính nhiều dòng lệnh, nhiều dòng dữ liệu (MIMD)
@2009, Ngô Văn Thanh - Viện Vật Lý
Kết nối trên một bus
@2009, Ngô Văn Thanh - Viện Vật Lý
Kết nối đầy đủ trên nhiều bus
@2009, Ngô Văn Thanh - Viện Vật Lý
Kết nối đơn trên nhiều bus
@2009, Ngô Văn Thanh - Viện Vật Lý
Kết nối từng phần trên nhiều bus
@2009, Ngô Văn Thanh - Viện Vật Lý
Kết nối phân lớp
@2009, Ngô Văn Thanh - Viện Vật Lý
1.6.1. Nhiều bộ vi xử lý truy cập bộ nhớ đồng bộ (Uniform Memory Access
Multiprocessors).
Máy tính có kiến trúc kiểu MIMD với một bộ nhớ chia sẻ (shared memory).
Bao gồm các bộ vi xử lý độc lập với nhau.
Tất cả các bộ vi xử lý đều có thể truy cập đến bộ nhớ chung, thời gian truy
cập đến bộ nhớ của các bộ vi xử lý là như nhau.
Mỗi một bộ vi xử lý có thể có các thanh ghi, bộ đệm, bộ nhớ riêng của mình.
Các bộ vi xử lý kết nối với nhau thông qua kiểu kết nối mạng (interconnection
network),
kết nối kiểu một Bus
kết nối kiểu nhiều Bus
Kết nối kiểu thanh ngang
Kết nối kiểu bộ nhớ đa cổng
Nhược điểm: gặp khó khăn trong việc nâng
cấp bộ nhớ khi giải quyết các bài toán lớn.
@2009, Ngô Văn Thanh - Viện Vật Lý
1.6.2 Nhiều bộ vi xử lý truy cập bộ nhớ không đồng bộ (Non Uniform
Memory Access Multiprocessors).
Tương tự như kiến trúc nhiều bộ vi xử lý truy cập bộ nhớ đồng bộ.
Mỗi một bộ vi xử lý được gắn với một bộ nhớ riêng.
Ưu điểm: tăng tốc độ truy cập vao bộ nhớ.
Nhược điểm: thời gian giao tiếp giữa các bộ vi xử lý phụ thuộc vào tốc độ
truyền qua mạng
@2009, Ngô Văn Thanh - Viện Vật Lý
1.7 Hệ thống nhiều máy tính (Multicomputers)
Hệ thống cluster: các máy tính độc lập được kết nối với nhau thông qua một
hệ thống kết nối tốc độ cao.
Mỗi máy tính trong hệ cluster được gọi là một node.
Các máy tính độc lập có thể là các máy PC thông thường có một hoặc nhiều
bộ vi xử lý.
Hệ thống kết nối các máy tính với nhau dạng mạng LAN bằng cáp thường
hoặc cáp quang.
Hệ thống cluster có các ưu điểm:
Tốc độ cao: Với sự hỗ trợ của các phần mềm tính toán song song, cluster
có khả năng xử lý mạnh hơn bất cứ một máy tính đơn lẻ nào.
Dễ nâng cấp: có thể nâng cấp cho từng node hoặc thêm các node.
Độ tin cậy cao: Hệ thống vẫn hoạt động ổn định khi có một nút (node)
trong hệ thống bị hư hỏng.
Giá thành thấp: vì cluster được kết nối bởi các máy tính PC thông thường.
@2009, Ngô Văn Thanh - Viện Vật Lý
1.7 Hệ thống nhiều máy tính (Multicomputers)
Hệ thống cluster: các máy tính độc lập được kết nối với nhau thông qua một
hệ thống kết nối tốc độ cao.
Mỗi máy tính trong hệ cluster được gọi là một node.
Các máy tính độc lập có thể là các máy PC thông thường có một hoặc nhiều
bộ vi xử lý.
Hệ thống kết nối các máy tính với nhau dạng mạng LAN bằng cáp thường
hoặc cáp quang.
Hệ thống cluster có các ưu điểm:
Tốc độ cao: Với sự hỗ trợ của các phần mềm tính toán song song, cluster
có khả năng xử lý mạnh hơn bất cứ một máy tính đơn lẻ nào.
Dễ nâng cấp: có thể nâng cấp cho từng node hoặc thêm các node.
Độ tin cậy cao: Hệ thống vẫn hoạt động ổn định khi có một nút (node)
trong hệ thống bị hư hỏng.
Giá thành thấp: vì cluster được kết nối bởi các máy tính PC thông thường.
@2009, Ngô Văn Thanh - Viện Vật Lý
1.8 Giới thiệu về máy tính CM-200 (Connection Machine 200
by Thinking Machine Corp).
Ra đời vào năm 1987, kết thúc
vào năm 1991.
Thuộc kiểu kiến trúc SIMD.
Số processor: 2048 65536
Tốc độ lý thuyết: 31 Gflop/s
@2009, Ngô Văn Thanh - Viện Vật Lý
@2009, Ngô Văn Thanh - Viện Vật Lý
@2009, Ngô Văn Thanh - Viện Vật Lý