Do vậy, trong luận văn của mình, tôi đã tiến hành công trình nghiên cứu về máy tính song song và mạng kết nối trong các máy tính song song, đồng thời đi sâu vào nghiên cứu một giải pháp
Lịch sử phát triển và sự ra đời của máy tính đa xử lý
Lịch sử phát triển của máy tính
Trong khi lịch sử phát triển của máy tính có thể được tính từ thời kỳ của những bàn tính cổ của Trung Quốc và chiếc máy tính có khả năng lập trình đầu tiên ra đã đời từ năm 1823 (máy vi phân của Charles Babbage) thì phải đến cuối những năm 1960, chiếc máy thuộc thế hệ dầu tiên của máy tính song song mới ra đời Đó là chiếc máy tính SOLOMON được thiết kế và phát triển bởi Westinghouse Corporation và ILLIAC IV cùng với sự tham gia của Bộ Quốc Phòng và Đại học Illinois, Hoa Kỳ
Thời kỳ từ năm 1972-1984, công nghệ tích hợp phát triển đạt mức 1000 phần tử/chip (LSI) và 100.000 phần tử/chip (VLSI) Với mức độ tích hợp như vậy nhiều bộ xử lý hoàn toàn có thể nằm trên cùng 1chip Do đó ở thời kỳ này, một loạt máy tính có kiến trúc song song bắt đầu xuất hiện Tuy nhiên những nỗ lực này mới chỉ dừng lại ở mức độ thử nghiệm Phần lớn việc tính toán và xử lý tính sử dụng các bộ xử lý vector ( là các bộ xử lý có nhiều bộ ALU trong kiến trúc, do đó có thể thực hiện đồng thời nhiều phép tính số học) Tuy nhiên, trước năm
1985 đã có hai chiếc máy tính hoạt động dựa trên nguyên lý xử lý song song được tung ra bán trên thị trường Chiếc máy tính thứ nhất là Sequent Balance
8000 đã kết hợp được 20 vi xử lý có một bộ nhớ chung (shared memory) (trong đó mỗi vi xử lý có một bộ nhớ đệm riêng) Sequent cung cấp một thư viện giải thuật cho phép các lập trình viên có thể sử dụng nhiều hơn một vi xử lý cho phần mềm của mình Chiếc máy này chủ yếu được sử dụng để khám phá khả năng xử lý song song và kỹ thuật lập trình Loại máy tính thứ hai là Intel iPSC, biệt danh là "Hình khối", được thiết kế tương đối khác so với Sequent Thay vì sử dụng một module nhớ, Intel đã kết nối mỗi bộ xử lý với bộ nhớ riêng của nó và sử dụng một giao diện mạng để kết nối các bộ xử lý lại với nhau Với kiến trúc bộ nhớ phân tán (distributed memory) như vậy bộ nhớ không còn tình trạng quá tải (overload) khi yêu cầu truy nhập lớn và mở ra khả năng phát triển các hệ thống mạng máy tính khổng lồ Chiếc máy tính thuộc họ iPSC lớn nhất đã có tới 128 bộ xử lý
Trong giai đoạn hai năm (1989-1990) loại máy tính song song thứ 3 được giới thiệu ra thị trường Loại máy này được biết đến với tên gọi là Data-parallel hay SIMD (single instruction multiple data) Loại máy này, kiến trúc vẫn còn rất đơn giản Tất cả các bộ xử lý sẽ hoạt động dưới sự điều khiển của một bộ điều khiển
CU (control unit) Những chiếc máy đầu tiên thuộc loại này có thể kể đến như: Connection Machine của Thinking Machine, Inc và MP-1 của MasPar, Inc
Kể từ năm 1990 cho đến nay, kỹ thuật xử lý song song đã đạt được nhiều thành tựu Người ta áp dụng việc xử lý song song trong cả phần cứng và phần mềm để tận dụng hết khả năng của những chiếc máy tính cỡ lớn Các hệ máy tính song song đến thời điểm này đã hoàn toàn có khả năng cạnh tranh với các bộ xử lý vector trong tính toán và xử lý Ngày nay, một xu hướng mới đang được mở ra, đó là sự kết hợp của kiến trúc song song với các bộ xử lý vector để cho ra đời các máy tính siêu mạnh Tập đoàn Fujitsu đã tuyên bố sẽ cho ra đời một hệ thống với trên 200 bộ xử lý vector Các nhà sản xuất đã đạt tốc độ teraflops
(1012 phép tính toán học trong 1 giây) vào giữa thập kỷ 90 của thế kỷ trước Rõ ràng là những hệ thống được tốc độ như vậy hoặc cao hơn nữa chỉ có thể đạt được bằng kiến trúc song song với hàng nghìn bộ xử lý hoặc nhiều hơn nữa Hiện tại, với máy tính song song, con người đã có thể thực hiện hàng tỷ phép tính trong 1 giây (Gflops)
Với sự phát triển như vậy, trong tương lai, các hệ máy tính song song sẽ ngày càng được sử dụng trong các tính toán khoa học và nghiên cứu.
Sự ra đời của máy tính đa xử lý
Việc tính toán các bài toán kích thước lớn hoặc phức tạp rất khó thực hiện bằng phương pháp tính bằng tay và thường mất rất nhiều thời gian Từ đó, người ta đã tìm ra một phương pháp nào đó mà có thể thực hiện các công việc trên một cách tự động, chính xác và nhanh chóng Do đó, máy tính điện tử thế hệ đầu tiên đã ra đời
Máy tính đóng vai trò vô cùng quan trọng trong các ngành khoa học và công nghệ nói chung và ngành điện tử - viễn thông của chúng ta nói riêng trong việc nghiên cứu, đo đạc, xử lý tính toán,…
Những vấn đề tính toán phức tạp trong những ngành khoa học kỹ thuật ngày nay chẳng hạn như thiên văn, y học, địa lý, và công trình kỹ thuật đòi hỏi dung lượng của bộ nhớ tới hàng tỷ bytes (gigabytes) và tốc độ xử lý lên đến hàng tỷ số thập phân trong mỗi giây (GFlops) Do đó, các máy tính đơn không thể thực hiện được các bài toán rất phức tạp, yêu cầu dung lượng của bộ nhớ lớn, đòi hỏi thời gian tính toán lớn và yêu cầu về độ tin cậy và độ chính xác cao Từ đó kiến trúc về máy tính đa xử lý hoặc máy tính xử lý song song đã ra đời
Ngày nay do sự phát triển mạnh mẽ của công nghệ vi mạch tích hợp số và công nghệ phần mềm người ta có thể chế tạo được các thế hệ máy tính đa xử lý có dung lượng bộ nhớ khác nhau để làm sao có thể đáp ứng được các nhu cầu về tốc độ xử lý tính toán và giảm thiểu thời gian thực hiện tính toán và một số thông số kỹ thuật khác
Tuy nhiên hiện nay có nhiều khuynh hướng chế tạo những hệ thống vi tính song song khổng lồ chẳng hạn như những máy vi tính được thiết kế đặt biệt chỉ dành cho những công trình đòi hỏi sự tính toán nhanh và độ chính xác và tin cậy cao, nhưng điểm yếu của những máy vi tính đặc biệt này là giá thành xây dựng quá đắt và không thể nối rộng để gia tăng tốc độ và bộ nhớ (scalability)
Hiện nay có rất nhiều người hiểu khái niệm “máy tính đa xử lý hoặc máy tính xử lý song song” theo một khía cạnh khác nhau cho nên sau đây em xin nêu lên một vài nét và khái niệm đặc thù của máy tính đa xử lý
Máy tính đa xử lý hay còn được gọi là máy tính xử lý song song là:
Máy tính có khả năng thực hiện nhiều hơn một phép tính số học hoặc logic tại cùng một thời điểm
Máy tính có thể thực hiện đồng thời nhiều lệnh nhờ hệ đa xử lý, do đó đạt được kết quả nhanh và chính xác hơn
Kiến trúc của hệ thống máy tính đa xử lý này được xây dựng lên dựa trên cở sở khoa học thực tế Bởi vì như chúng ta đã biết trên thực tế để giả quyết một bài có kích thước lớn và phức tạp thì trước tiên ta phải chia bài toán đó thành nhiều bước nhỏ và đơn giản hơn, sau đó thực hiện các bước nhỏ đó đồng thời Bằng cách đó thì hiệu quả sẽ cao hơn và nhanh hơn Cùng với ý tưởng này mà người ta đã sản xuất ra hàng loạt các thế hệ máy tính xử lý song song Và hiệu suất giải quyết các bài toán phức tạp có thể được tăng lên ít hay nhiều tùy thuộc vào số bộ vi xử lý được dùng trong máy tính xử lý song song đó.
Cấu trúc và Phân loại máy tính xử lý song song
Phân loại theo Flynn
Cách phân loại theo Flynn rất phổ biến hiện nay Phương pháp này được xây dựng dựa trên dòng dữ liệu và dòng lệnh (data và instruction) Như chúng ta đã biết máy tính làm việc bằng cách thực hiện các lệnh dựa trên các dữ liệu đưa vào Dòng dữ liệu đưa vào máy tính (các dòng lệnh đầu vào) sẽ biến đổi sau khi các dòng lệnh được đưa vào và cuối cùng cho ra kết quả như mong muốn Flynn đã dựa trên một cách phân nhóm là số dòng lệnh được thực hiện và số dữ liệu được xử lý đồng thời bởi bộ xử lý trong quá trình chạy một chương trình Flynn đã đưa ra 4 loại máy tính song song khác nhau Những mô hình này được mô tả như sau:
1.2.1.1 Đơn dòng lệnh, Đơn dòng dữ liệu: SISD – Single Instruction, Single Data
Trong cấu trúc theo phân loại SISD thì máy tính gồm một bộ nhớ (MM), một phần tử xử lý (PU) và một phần tử điều khiển (CU) Tại mỗi thời điểm, chỉ có duy nhất một dòng dữ liệu được xử lý trên bộ xử lý thông qua lệnh điều khiển nhận được từ phần tử điều khiển (CU) Cách tính toán của SISD có thể mô tả như làm kiểu thủ công Một người chỉ biết làm đúng một món hàng và làm từ A đến Z
Máy vi tính tính toán dùng một lệnh để tính toán một thông tin đưa vào còn được gọi Single-Instruction stream, Single-Data stream Loại vi tính này là những vi tính thông thường có một trung tâm quản lý (single CPU) như mô tả trong (Hình 1.2.1)
1.2.1.2 Đơn dòng lệnh, Đa dòng dữ liệu: SIMD – Single Instruction, Multiple Data
Máy tính có cấu trúc SIMD gồm N bộ xử lý với N>1, mỗi bộ xử lý có bộ nhớ cục bộ riêng của để lưu trữ data Tất cả các bộ xử lý này xử lý N chuỗi dữ liệu khác nhau (mỗi bộ xử lý tác động lên một chuỗi dữ liệu DS: Data Sequence) dưới sự điều khiển của một dòng lệnh duy nhất từ phần tử điều khiển trung tâm Các bộ xử lý hoạt động một cách đồng bộ, tại mỗi quá trình xử lý thì tất cả các bộ xử lý thực hiện cùng một lệnh đối với các phần tử data khác nhau Đây là một
Phần tử điều khiển (CU) Bộ nhớ (MM)
Bộ xử lý (PU) data Instruction cấu trúc được sử dụng phổ biến vì cấu trúc này dễ xây dựng, phân tích và thực hiện thuật toán Tuy nhiên, như ta đã biết cấu trúc theo kiểu SIMD là thực hiện bài toán cùng một lúc nhờ một lệnh điều khiển từ bộ phận điều khiển trung tâm
CU, cho nên đối với các bài toán mà không thể chia nhỏ thành các bài toán thành phần giống nhau thì cấu trúc trên không thể thực hiện được
Máy vi tính có trúc theo kiểu này tính toán dùng một lệnh để tính nhiều tin tức đưa vào còn được gọi Single-Instruction stream, Multiple-Data streams như mô tả trong (Hình 1.2.2) Thường thì loại này là những vi tính có một chuỗi trung tâm quản lý (array processors) Cách tính toán của SIMD có thể mô tả như làm kiểu dây chuyền Một người làm một chức năng trong dây chuyền sản xuất
1.2.1.3 Đa dòng lệnh, Đơn dòng dữ liệu: MISD – Multiple Instruction, Single Data
MISD (đa dòng lệnh, đơn dữ liệu) là một kiến trúc kiểu sự tính toán song song mà nhiều phần tử chức năng thực hiện những toán tử khác nhau đối với cùng một dữ liệu Những kiến trúc hàng đợi (pipeline) là một kiến trúc thuộc loại kiến trúc
DS: Data Sequence IS: Instruction sequence CU: Control Unit PU: Processing Unit MM: Memory Modules
MISD, tuy nhiên một người theo chủ nghĩa thuần túy có thể nói rằng dữ liệu (thì) có thể thay đổi sau khi bị xử lý tại mỗi giai đoạn trong hàng đợi Những máy tính chống lỗi thực hiện cùng các dòng lệnh một cách không cần thiết nhằm để phát hiện và đeo mặt nạ các lỗi, có thể xem xét là thuộc về kiểu cấu trúc này Tuy nhiên kiến trúc kiểu này không được phổ biến như kiểu kiến trúc MIMD và SIMD
Máy vi tính tính toán theo kiến trúc MISD dùng nhiều lệnh để tính một dữ liệu đưa vào còn được gọi Multiple-Instruction streams, Single-Data stream như mô tả trong (Hình 1.2.3) Trong thực tế loại này không được đưa vào sử dụng
1.2.1.4 Đa dòng lệnh, Đa dòng dữ liệu: MIMD – Multiple Instruction, Multiple Data
Trong kỹ thuật máy tính, người ta thực hiện mô hình theo kiến trúc MIMD để thiết lập cơ chế xử lý song song Các máy tính có kiến trúc MIMD có nhiều bộ vi xử lý hoạt động một cách không đồng bộ và độc lập với nhau Tại mỗi thời điểm,
DS: Data Sequence IS: Instruction sequence CU: Control Unit PU: Processing Unit MM: Memory Modules
IS1 IS2 ISn các bộ vi xử lý khác nhau có thể thực hiện các câu lệnh điều khiển khác nhau trên các phần dữ liệu khác nhau Kiến trúc MIMD có thể được sử dụng trong các lĩnh vực ứng dụng như mô phỏng, tạo mẫu, trợ giúp trong quá trình thiết kế và sản xuất máy tính và cũng như các bộ chuyển mạch truyền thông Các máy tính sử dụng kiến trúc MIMD có thể thuộc loại máy tính có bộ nhớ chia sẻ (bộ nhớ chung: Shared Memory ) hoặc có bộ nhớ phân tán (bộ nhớ riêng ảo: Distributed Memory) Cách phân loại như vậy tùy thuộc vào cơ chế mà các bộ vi xử lý truy cập bộ nhớ
Máy vi tính tính toán dùng nhiều lệnh để tính nhiều dữ liệu đưa vào còn gọi Multiple-Instruction streams, Multiple-Data streams như mô tả trong (Hình 1.2.4) Loại vi tính này thường là tập hợp những vi tính thông thường kết hợp lại với nhau Hệ thống MIMD có thể ví dụ như là một máy sản xuất với nhiều dây chuyền và mỗi dây chuyền hoạt động độc lập và không phụ thuộc vào những dây chuyền khác
MIMD được sử dụng để xây dựng các hệ thống máy tính lớn để phục các nhu cầu giải quyết các bài toán có kích thước lớn và phức tạp Đây là kiến trúc đặc trưng nhất cho các hệ thống máy tính xử lý song song Một vài máy tính điển hình của kiến trúc MIMD là: IBM SPX, VPP5000, Intel Paragon, Sun Sparc,…
Do kiến thức và thời gian có hạn nên trong đề tài của em chỉ tập trung nghiên cứu kiến trúc MIMD mà thôi
Phân loại máy tính song song dựa trên kiến trúc MIMD
Như chúng ta biết phần lớn các máy tính song song hiện nay đều có kiến trúc dựa trên kiến trúc MIMD
Trong kỹ thuật máy tính, người ta thực hiện mô hình theo kiến trúc MIMD để thiết lập cơ chế xử lý song song Các máy tính có kiến trúc MIMD có nhiều bộ vi xử lý hoạt động một cách dị đồng bộ và độc lập với nhau Tại mỗi thời điểm, các bộ vi xử lý khác nhau có thể thực hiện các câu lệnh điều khiển khác nhau trên các phần dữ liệu khác nhau Kiến trúc MIMD có thể được sử dụng trong các lĩnh vực ứng dụng như mô phỏng, tạo mẫu, trợ giúp trong quá trình thiết kế và sản xuất máy tính và cũng như các bộ chuyển mạch truyền thông
Kiến trúc MIMD có thể được chia thành hai loại kiến trúc cơ bản:
Máy tính có bộ nhớ phân tán – Distributed Memory
DS: Data Sequence IS: Instruction sequence CU: Control Unit PU: Processing Unit MM: Memory Modules
Máy tính có bộ nhớ chung – Shared Memory.
Phân loại máy tính có kiến trúc MIMD
Máy tính có bộ nhớ phân tán – Distributed Memory System
Đối với máy tính có kiến trúc MIMD, mỗi bộ vi xử lý đều có một vùng nhớ riêng biệt (Hình 1.3.1) Khi cần trao đổi thông tin giữa các bộ vi xử lý với nhau, các bộ vi xử lý sẽ thông tin với nhau dưới dạng tin nhắn (message) Do không sử dụng cơ chế chia sẻ bộ nhớ nên tình trạng tắc ngẽn không phải là một vấn đề lớn trong các máy tính có kiến trúc MIMD sử dụng bộ nhớ phân tán Do đó, kiến trúc này còn được gọi là kiến trúc “message-passing” Việc thiết kế theo kiểu này có thể không hiệu quả lắm vì ta cần thêm một lượng thời gian nữa cho việc truyền tin nhắn trên đường truyền từ một bộ vi xử lý này tới một bộ vi xử lý khác Ngoài ra, còn một lượng thời gian nữa có thể rất cần thiết trong việc thực hiện một quá trình định tuyến đơn giản cho các gói tin nhắn này Nhằm giảm suy hao về thời gian, người ta thiết kế mạng kết nối theo mô hình mạng Mesh hoặc Hypercube Thông thường các kiến trúc bộ nhớ phân tán thường được gọi là “hệ thống đa máy tính – Multicomputers”
1.3.1.1 Ưu điểm của kiến trúc MIMD bộ nhớ phân tán
Do có bộ nhớ riêng cho từng bộ xử lý nên tình trạng tắc nghẽn trong mạng không nghiêm trọng như trong kiến trúc bộ nhớ chung Do đó, kiến trúc đa máy tính (bộ nhớ phân tán) thường được sử dụng để xây dựng các máy tính song song có quy mô và mức độ phân cấp lớn
Kiến trúc này không cần kỹ thuật đồng bộ phức tạp do các bộ xử lý không có môi trường dữ liệu chung, các bộ vi xử lý hoạt động một cách dị bộ và độc lập với nhau
Hình 1.3.1 Sơ đồ khối kiến trúc MIMD bộ nhớ phân tán
1.3.1.2 Nhược điểm của kiến trúc MIMD bộ nhớ phân tán
Phần lớn những vấn đề của hệ thống bộ nhớ phân tán bắt nguồn từ việc lập trình, các vấn đề đó là:
Khó khăn trong việc cân bằng tải Mặc dù gần đây các nhà khoa học đã cố gắng xây dựng các hệ thống tự động phân phối và chia tải nhưng trong rất nhiều hệ thống, người sử dụng vẫn phải chịu trách nhiệm phân khu mã và dữ liệu cho các phần tử xử lý (Processing Elements:PEs)
Việc đồng bộ và trao đổi thông tin dựa trên phương thức message-passing có thể dẫn đến tình trạng tắc nghẽn khi mà các bản tin trao đổi tăng lên Trên phương diện phần cứng, người thiết kế giao thức trao đổi thông tin sẽ làm nhiệm vụ giảm tắc nghẽn do định tuyến sai Tuy nhiên, người sử dụng vẫn phải có phương án tránh tắc nghẽn trên phương diện phần mềm
Việc sử dụng phương thức message-passing có thể làm giảm hiệu quả của hệ thống Việc phải sao chép các dữ liệu sau đó phải truyền đi vừa làm tốn không gian bộ nhớ vừa làm tốn thời gian xử lý của các bộ xử lý Ngoài ra còn phải cần đến thời gian trong việc định tuyến các gói tin nhắn.
Máy tính có bộ nhớ chung – Shared Memory
Trong kiến trúc này các bộ xử lý có thể truy nhập trực tiếp vào bất cứ không gian nhớ nào thông qua mạng kết nối (Hình.1.3.2) Tập hợp các không gian nhớ làm nên một không gian địa chỉ toàn cục (global address space) được dùng chung bởi tất cả các vi xử lý Cách sắp xếp các bộ xử lý và bộ nhớ như vậy được gọi là hệ thống bộ nhớ chung dance-hall Kiến trúc bộ nhớ chung thường được dùng để xây dựng các hệ thống máy tính cỡ vừa và nhỏ (từ vài chục tới vài trăm bộ vi xử lý) Thông thường các kiến trúc bộ nhớ chung thường được gọi là “ hệ thống đa xử lý – Multiprocessors ”
1.3.2.1 Ưu điểm của kiến trúc MIMD bộ nhớ chung Ưu điểm của kiến trúc này so với kiến trúc bộ nhớ phân tán chủ yếu là trên phương diện kỹ thuật lập trình:
Trong kiến trúc này, người sử dụng không phải phân khu mã và dữ liệu cho các PEs Do đó, các kỹ thuật lập trình trong hệ thống đơn xử lý hoàn toàn có thể áp dụng cho các hệ thống có kiến trúc này mà không đòi hỏi thêm các ngôn ngữ lập trình và các trình dịch phức tạp
Tốc độ truy nhập bộ nhớ nhanh do các bộ nhớ có không gian địa chỉ chung và không cần đến sự trao đổi dữ liệu bằng các bản tin
Hình 1.3.2 Kiến trúc MIMD bộ nhớ chung
1.3.2.2 Nhược điểm của kiến trúc MIMD bộ nhớ chung
Nhược điểm lớn nhất của kiến trúc này là chỉ không được sử dụng để xây dựng các hệ thống có quy mô lớn (hay nói cách khác là mức độ phân cấp thấp) Nguyên nhân chủ yếu là do vấn đề xung đột Khi một vài vi xử lý cùng có nhu cầu truy nhập vào một module nhớ, chúng phải tranh chấp quyền truy nhập và có thể dẫn đến sự xung đột Khi số vi xử lý càng lớn, khả năng gây xung đột càng cao Do đó, số vi xử lý chỉ được phép tăng trong một giới hạn nhất định để đảm bảo tính hiệu quả cho hệ thống
Tuy nhiên các nhà khoa học đã đưa ra một vài giải pháp để khắc phục nhược điểm trên của kiến trúc MIMD bộ nhớ chung
Thiết kế các mạng kết nối trong kiến trúc bộ nhớ chung có băng thông rộng và đảm bảo độ trễ nhỏ
Sử dụng các bộ nhớ đệm (cache memory), khi bộ xử lý yêu cầu dữ liệu từ bộ nhớ, các bộ nhớ đệm gắn liền với bộ xử lý đó sẽ được kiểm tra đầu tiên Nếu dữ liệu cần tìm đã có trong bộ nhớ cache thì bộ xử lý không cần trao đổi thông tin qua mạng kết nối Trong môt số trường hợp, các bộ xử
… lý chỉ cần truy cập vào bộ nhớ đệm là lấy đủ dữ liệu mà mình cần (mặc dù các trường hợp như vậy rất ít) Một vấn đề của cách giải quyết này là sự thống nhất dữ liệu giữa các bộ nhớ đệm khi các bộ xử lý thay đổi hoặc ghi dữ liệu vào bộ nhớ đệm của mình
Sử dụng kiến trúc bộ nhớ chung phân bố DSM: bộ nhớ chung được chia thành các bộ nhớ cục bộ của các bộ xử lý nhưng vẫn mang địa chỉ của không gian địa chỉ chung
Với các ưu và nhược điểm như trên, kiến trúc bộ nhớ chung chỉ được sử dụng để xây dựng các hệ thống đa xử lý trung bình và nhỏ trong khi kiến trúc bộ nhớ phân tán có thể được sử dụng để xây dựng các hệ đa xử lý có kích cỡ lớn
Phần lớn các máy chủ server trên thế giới hiện nay là hệ thống đa xử lý bộ nhớ chung phân bố Vậy trong luận văn này tôi chỉ tập trung nghiên cứu hệ thống đa xử lý bộ nhớ chung phân bố.
Kiến trúc MIMD bộ nhớ chung - Shared memory MIMD
Phân loại kiến trúc MIMD bộ nhớ chung
Đặc điểm nổi bật của hệ thống có bộ nhớ chung là dù trong hệ thống có bao nhiêu khối bộ nhớ và các khối này được nối với bộ xử lý như thế nào thì không gian địa chỉ của các bộ nhớ này đều nằm trong một không gian địa chỉ toàn cục và các bộ xử lý nào của hệ thống cũng có thể truy nhập vào bất cứ địa chỉ nhớ nào.Tuy nhiên, người ta có thể chia kiến trúc bộ nhớ này thành hai loại, dựa trên tổ chức vật lý của bộ nhớ logic chung
Kiến trúc bộ nhớ chung vật lý (physically shared memory systems)
Kiến trúc bộ nhớ chung phân bố (distributed shared memory systems)
Kiến trúc bộ nhớ chung vật lý
Kiến trúc bộ nhớ chung vật lý là kiến trúc trong đó tất cả các bộ xử lý đều có quyền truy nhập như nhau vào các khối bộ nhớ chung (Hình 1.4.1)
Hình 1.4.1 Sơ đồ khối kiến trúc bộ nhớ chung vật lý
Các máy tính có kiến trúc bộ nhớ chung vật lý còn được gọi là UMA (uniform memory access), có nghĩa là truy nhập đồng nhất vào bộ nhớ Có tên gọi như vậy vì các máy này cho phép các bộ xử lý truy nhập hoàn toàn giống nhau vào các thành phần bộ nhớ UMA được xem là thuộc thế hệ phát triển thứ nhất của các hệ thống có kiến trúc bộ nhớ chung
Các máy tính UMA hiện nay hầu hết đều là các máy đa xử lý đơn bus loại nhỏ Các máy tính UMA loại lớn với hàng trăm bộ xử lý và mạng chuyển mạch đã không còn được sử dụng nữa, mặc dù trước đây kiến trúc này rất phổ biến để xây dựng các các hệ thống bộ nhớ chung cỡ lớn Các hệ thống cỡ lớn này không có các bộ nhớ đệm cũng như các bộ nhớ cục bộ, các đặc điểm rất cần thiết để xây dựng các hệ thống máy tính song song lớn có hiệu quả cao
Tuy nhiên, kiến trúc UMA rất thích hợp để xây dựng các hệ thống đa xử lý đơn bus có kích thước nhỏ Hai loại máy tính được coi là điển hình cho hệ thống này bao gồm Encore Mutimax của tập đoàn máy tính Encore và Power Challenge của Silicon Graphics Computing System.
Kiến trúc bộ nhớ chung phân bố - Distributed-shared memory
Kiến trúc bộ nhớ chung phân bố là kiến trúc bộ nhớ chung trong đó bộ nhớ được phân thành các bộ nhớ cục bộ cho từng bộ xử lý
Về khía cạnh kiến trúc vật lý, hệ thống có bộ nhớ phân tán và hệ thống có bộ nhớ chung phân bố rất giống nhau Điểm khác biệt cơ bản giữa hai kiến trúc này nằm ở cách tổ chức không gian địa chỉ nhớ
Trong hệ thống bộ nhớ chung phân bố : các bộ nhớ cục bộ có địa chỉ nằm trong không gian địa chỉ toàn cục và bất cứ bộ xử lý nào cũng có thể truy nhập vào bộ nhớ cục bộ của các bộ xử lý khác
Trong hệ thống bộ nhớ phân tán : các bộ nhớ cục bộ có không gian địa chỉ tách biệt và việc truy nhập trực tiếp vào bộ nhớ cục bộ của một bộ xử lý khác là hoàn toàn không thể được
Dựa vào cách truy nhập vào các bộ nhớ cục bộ của các xử lý, người ta chia kiến trúc bộ nhớ chung phân bố thành ba loại
Truy nhập bộ nhớ không đồng nhất NUMA (Non-uniform memory access machines).
Kiến trúc truy nhập bộ nhớ không đồng nhất - NUMA
coherent non-uniform memory access machines)
Truy nhập bộ nhớ chỉ sử dụng bộ nhớ đệm COMA (Cache-only memory access machines)
1.4.4 Kiến trúc truy nhập bộ nhớ không đồng nhất - NUMA
1.4.4.1 Cấu tạo của của máy tính kiến trúc NUMA
Trong các máy tính NUMA, bộ nhớ chung được chia thành các khối nhớ vì trong hệ thống có rất nhiều bộ xử lý, mỗi khối bộ nhớ sẽ trở thành bộ nhớ cục bộ cho một bộ xử lý và được nối trực tiếp vào các bộ xử lý bằng các bus (Hình 1.4.2)
Hình 1.4.2 Sơ đồ khối của kiến trúc máy tính NUMA
1.4.4.2 Ưu điểm của máy tính kiến trúc NUMA
Với kiến trúc như vậy, khi một bộ xử lý muốn truy nhập vào một địa chỉ của bộ nhớ chung nhưng lại nằm trong bộ nhớ cục bộ của bộ xử lý đó, kết quả là quá
M1 P1 PE1 trình truy nhập sẽ nhanh hơn rất nhiều so với khi phải truy nhập vào vùng nhớ của một bộ xử lý khác
1.4.4.3 Nhược điểm của máy tính kiến trúc NUMA
Kiến trúc NUMA đòi hỏi việc phân bố chương trình và dữ liệu giữa các bộ xử lý phải thật tốt để khai thác hết khả năng của kiến trúc này Do đó, kiến trúc NUMA chứa hầu hết các nhược điểm của kiến trúc bộ nhớ riêng Điểm khác biệt cơ bản giữa hai kiến trúc này là trong cách lập trình: các hệ thống bộ nhớ riêng được lập trình theo kiểu message-pasing trong khi lập trình cho các máy tính NUMA vẫn dựa trên cách thức của các bộ nhớ chung khác
Một vài loại máy tính NUMA có thể kể đến ở đây như: Cray T3D và Hector, trong đó Cray T3D là loại máy tính rất được sử dụng phổ biến Cray T3D là chiếc máy tính theo kiểu NUMA được sản xuất gần đây nhất có kiến trúc là một siêu máy tính có quy mô lớn, kết hợp cả kiến trúc bộ nhớ chung và được lập trình để truyền thông tin theo kiểu message-passing.
MẠNG KẾT NỐI TRONG MÁY TÍNH ĐA XỬ LÝ 2.1 Phân loại mạng kết nối trong máy tính đa xử lý
Mạng kết nối tĩnh – Static Topologies
Mạng kết nối tĩnh là mạng có các kết nối cố định và thường là kết nối từ điểm- đến-điểm (từ bộ xử lý tới bộ nhớ, từ bộ nhớ tới bộ nhớ ) Các mạng này còn được gọi là các mạng kết nối trực tiếp (direct network) hoặc mạng kết nối cố định
Các mạng kết nối trực tiếp thường được sử dụng trong các hệ thống mà việc trao đổi thông tin có thể được định tuyến trước một cách hiệu quả như trong Intel Paragon, J-Machine
2.1.1.1 Miêu tả mạng kêt nối tĩnh – Descriptions
Khi sử dụng mạng kết nối tĩnh người ta luôn phải tìm cách dung hòa 2 yêu cầu: một là, hệ thống với nhiều bộ xử lý nhưng được kết nối bằng ít đường link nhất (mà vẫn đảm bảo yêu cầu trao đổi thông tin) để giảm giá thành của mạng; hai là, mạng phải có trễ nhỏ và băng thông lớn, do đó số đường link càng nhiều càng tốt Để thỏa mãn được cả 2 yêu cầu trên người ta đưa ra các kiến trúc (topologies) tối ưu của mạng tĩnh như được thể hiện dưới đây a Mạng Mesh và Ring Để kết nối giữa các nút của một máy tính xử lý song song một cách đơn giản nhất và rẻ nhất người ta sử dụng mạng Mesh một chiều – one dimensional mesh (Hình 2.1.1a) Mỗi nút có hai kết nối, nút ranh giới chỉ có duy nhất một kết nối Nếu các nút ranh giới được nối với nhau thì ta có một mạng Ring (Hình 2.1.1c), do đó tất cả các nút đều có hai kết nối Một mạng kết nối Mesh đơn có thể tạo thành mạng Mesh k chiều (k-dimensional Mesh), trong đó ngoài các nút ranh giới, mỗi nút đều có 2k kết nối (Hình 2.1.1b) Một lần nữa, các nút ranh giới có thể được kết nối, tuy nhiên chưa có một thống nhất chung nào về vấn đề liệu ta sẽ làm gì trên các nút ranh giới
Hình 2.1.1 Các mô hình mạng Mesh và Ring n-D
Topology của mạng kết nối trực tiếp
3 chiều (3-dimensional) linear array ring star tree 2-D mesh completely connected
Tuy nhiên mô hình này không phù hợp cho việc chế tạo các máy tính kích cỡ lớn do gây trễ chuyển tin nhắn lớn nhất (maximum message latency), do đó trễ lớn nhất của một gói tin nhắn từ một trong N bộ vi xử lý tới một bộ vi xử lý khác sẽ là N Đây là một nhược điểm của mô hình này do hai nguyên nhân: Nguyên thứ nhất là có một dải latency rộng (latency giữa các bộ vi xử lý lân cận nhỏ hơn rất nhiều latency giữa các bộ vi xử lý không phải là nút lân cận) Nguyên nhân thứ hai là latency cực đại sẽ tăng theo số lượng bộ vi xử lý b Mạng Star
Trong mô hình mạng Star, tất cả các nút sẽ kết nối trực tiếp tới một nút mạng trung tâm và mỗi nút chỉ có duy nhất một kết nối, ngoại trừ nút trung tâm Nút trung tâm có tới N-1 kết nối (Hình 2.1.2)
Hình 2.1.2 Mô hình mạng Star
Nhược điểm của mạng mô hình Star là: không phù hợp đối với các hệ thống máy tính có kích cỡ lớn, bởi vì khi mà số lượng bộ vi xử lý tăng lên sẽ tạo nên một hiện tượng nút cổ chai (bottleneck) tại nút trung tâm c Mô hình Hypercube
Mô hình Hypercube là một trong những mô hình mạng phổ biến nhất và được sử dụng trong các hệ thống có kích cỡ lớn Một mạng Hypercube k chiều sẽ có 2 K nút và mỗi nút sẽ có tới k kết nối Hình 2.1.3 là một thí dụ điển hình của mạng Hypercube 4 chiều (k=4)
Hình 2.1.3 Một thí dụ về mạng Hypercube 4 chiều
Mạng Hypercube có khả năng mở rộng tốt, latency cực đại của một mạng Hypercube k chiều (k-ary) là log 2 N , (N=2 k ) Một đặc điểm quan trọng của mô hình mạng Hypercube là mối quan hệ giữa số thứ tự nút và nút nào sẽ kết nối với nhau Các nút được kết nối với nhau theo một quy luật sau: mỗi cặp nút trong mạng Hypercube sẽ được kết nối với nhau nếu sự biểu diễn dưới dạng nhị phân của chúng chỉ khác nhau duy nhất một bít Ví dụ, trong mạng Hypercube 4 chiều, nút 0 (0000) sẽ kết nối tới nút 1 (0001), nút 2 (0010), nút 4 (0100) và nút
8 (1000) Mô hình đánh số như thế này được gọi là mô hình mã Gray
2.1.1.2 Phương thức định tuyến trong mạng kết nối tĩnh - Routings a Mạng Mesh và Ring
Phương thức định tuyến điển hình được sử dụng trong các mạng Mesh là Kỹ thuật định tuyến theo chiều hướng (dimension-order routing) Trong kỹ thuật định tuyến theo phương pháp này quá trình định tuyến được thực hiện theo một chiều tại một thời điểm Ví dụ, trong một mạng mesh ba chiều, một đường đi của gói tin từ nút (a,b,c) tới nút (x,y,z) sẽ phải đi dọc theo hướng (chiều) thứ nhất tới nút (x,b,c), sau đó đi theo hướng thứ hai để đến nút (x,y,c) và cuối cùng phải đi theo hướng thứ ba để đến nút đích (x,y,z) b Mạng Star
Quá trình định tuyến trong mạng Star rất đơn giản Nếu như một trong nhưng nút cần kết nối là nút trung tâm thì tuyến kết nối sẽ chỉ là đường nối mép của chúng Ngược lại, nếu nút truyền thông mà không phải là nút trung tâm, các gói tin sẽ được định tuyến từ nút nguồn đến nút trung tâm và sau đó mới truyền tới nút đích c Mạng Hypercubes
Một mạng Hypercube k chiều chẳng khác gì mạng Mesh k chiều ngoài mỗi chiều có hai nút, do đó thuật toán định tuyến cũng giống như Mesh k chiều Chỉ có một sự khác biệt duy nhất là: đường đi từ nút A tới nút B được tính chỉ đơn thuần là tính X A B dưới dạng nhị phân của nút A và nút B Nếu như bít thứ i th của X là nhị phân “1” thì gói tin sẽ được truyền tới nút lân cận theo hướng thứ i th Ngược lại, nếu bít thứ i th của X là nhị phân “0” thì gói tin sẽ không được truyền đi đâu cả Điều này đồng nghĩa với ta cần tới đa log N 2 bước để truyền một gói tin từ nút nguồn tới đích (N: là số nút trong mạng Hypercube).
Mạng kết nối động – Dynamic Topologies
Mạng kết nối động là mạng cho phép tạo kết nối tạm thời giữa hai phần tử bất kỳ nào của hệ thống máy tính đa xử lý bằng cách thiết lập chế độ cho các phần tử điều khiển chuyển mạch của hệ thống
Tương tự như đa máy tính, chất lượng của mạng kết nối tác động trực tiếp đến chất lượng, tốc độ xử lý, kích cỡ và giá thành của toàn máy Do trong các hệ thống máy tính xử lý song song cần phải đảm bảo một yêu cầu đặt ra là các bộ xử lý có thể truy nhập vào bất cứ vùng bộ nhớ nào, bất kể vùng nhớ đó thuộc sự quản lý của một bộ xử lý khác, người ta thường sử dụng cấu trúc mạng kết nối động
Dựa trên chế độ hoạt động, chúng ta có hai loại mạng kết nối động
Mạng dùng đường kết nối chung – Shared Path Networks
Mạng chuyển mạch – Switching Networks
Hình 2.1.4 dưới đây miêu tả chi tiêt hơn mạng kết nối động
Hình 2.1.4 Sơ đồ phân loại chi tiết mạng kết nối động
Shared Path Networks Switching Networks
Single Buses Multiple Buses Crossbars Multistages Networks
Mạng kết nối động chung đường – Shared Path Networks
Mạng kết nối chung đường là mạng cho phép các bộ vi xử lý và các khối nhớ liên tục kết nối Trong mạng kết nối chung đường, các bộ vi xử lý sẽ chia sẻ kết nối liên tục này nhằm để hoàn thành các công việc của riêng mình Trong các máy tính xử lý song song thế hệ đầu, mạng đơn bus chính là mạng tiêu biểu cho mạng chia sẻ đường Trong các máy tính thế hệ 3 mới đây thường sử dụng cấu trúc hệ thống bus phân cấp – hierarchical bus systems
2.1.3.1 Mạng kết nối động đơn bus dùng chung – Single Shared Bus Network
Mạng đơn bus dùng chung là một trong những mạng kết nối động được sử dụng phổ biến nhất trong máy tính đa xử lý do một vài ưu điểm của chúng Đặc điểm thứ nhất là: Cách tổ chức và các thành phần của loại mạng này hầu như chỉ là sự nâng cấp và mở rộng của các mạng đơn xử lý Chúng cũng bao gồm các loại bus như: bus địa chỉ, bus dữ liệu, bus điều khiển, bus ngắt giống mạng đơn xử lý, ngoài ra chúng có một vài bus để giải quyết vấn đề tắc nghẽn trên các bus này trong trường hợp có một vài bộ vi xử lý cần sử dụng đồng bus chia sẻ này Các bus này được gọi là đường bus phân phối và chúng đóng vai trò vô cùng quan trọng trong quá trình thực hiện việc chia sẻ các bus Ưu điểm thứ hai là: Các mạng đơn bus dùng chung có giá thành thấp Khi ta tăng số lượng bộ vi xử lý thì giá thành của bus chia sẻ không thay đổi
Dưới đây là sơ đồ khối mô tả cấu trúc của một hệ đa xử lý đơn bus không có bộ đệm (Hình 2.1.5)
Hình 2.1.5 Cấu trúc của hệ thống đa xử lý đơn bus chung không có bộ đệm
Ngoài các phần tử giống với hệ đơn xử lý, hệ đa xử lý đơn bus còn thêm một số phần tử mới nữa
Phần tử logic phân phối bus (bus arbiter logic): đây là phần tử làm nhiệm vụ tránh xung đột khi trong hệ thống có nhiều yêu cầu truy nhập bộ vi xử lý-bộ nhớ muốn sử dụng cùng 1 bus Phần tử này sẽ quyết định yêu cầu nào được cấp phát bus dựa trên các chính sách ưu tiên (như ưu tiên cao nhất được lần lượt luân phiên, yêu cầu nào đến trước được ưu tiên trước )
Bus master: mỗi bộ xử lý có một bus master giúp bộ xử lý gửi yêu cầu cấp phát bus
Các đường dây làm nhiệm vụ trao đổi bus (bus exchange lines): có nhiệm vụ hỗ trợ hoạt động của các bus arbiter, được dùng để gửi yêu cầu cấp bus của các bộ xử lý tới bus arbiter và gửi quyền được sử dụng/không được sử dụng bus từ bus arbiter tới các bộ xử lý Các đường này bao gồm: đường
Bus arbiter and control logic
I/O m truyền gửi yêu cầu (request lines), đường truyền phân quyền (grant lines), đường báo bận (bus busy) Tùy thuộc vào trạng thái của các đường bus request và chế độ ưu tiên khi cấp bus, các bus arbiter sẽ cấp quyền được sử dụng bus cho một trong các yêu cầu bằng các grant lines
Các chế độ hoạt động của các bus trong mạng đơn bus dùng chung:
Mặc dù về cơ bản, hệ đơn xử lý và hệ đa xử lý đơn bus có rất nhiều điểm tương đồng nhưng vẫn có một sự khác nhau về chế độ hoạt động của các bus trong hai hệ thống này Hệ đơn xử lý và các máy tính đa xử lý thế hệ thứ nhất sử dụng các bus ở chế độ “ khóa” (locked bus) (ví dụ, MultiBus, VMEBus,…) Các máy đa xử lý thế hệ thứ hai sử dụng các bus ở chế độ “ tạm hoãn” (pended bus) Sự khác nhau của hai loại này là ở phương thức truy nhập bộ nhớ được thực hiện như thế nào trên bus Ta sẽ xét sự khác nhau này ở hai quá trình: ghi và đọc bộ nhớ a Quá trình ghi vào bộ nhớ
Quá trình ghi lên bộ nhớ sẽ gồm hai pha như sau:
Pha 1: Địa chỉ và dữ liệu được truyền qua bus tới bộ điều khiển bộ nhớ
Pha 2: Quá trình ghi lên bộ nhớ (bao gồm các quá trình nhỏ: kiểm tra tính chẵn lẻ, sửa lỗi, v.v.) được thực hiện bởi điều khiển bộ nhớ
Trên thực tế, pha 1 thường được thực hiện nhanh hơn pha 2 khoảng 3 đến 4 lần.Trong các hệ thống đơn xử lý, hai pha trên được thực hiện tuần tự và các bus sẽ bị khóa cho đến khi hoàn thành pha 2 Tuy nhiên, trong các hệ thống đa xử lý, để tận dụng tối đa các bus nhanh, người ta không thực hiện việc khóa bus Nếu như một vài bộ vi xử lý và các phần tử nhớ được kết nối bằng các bus này (đây là trường hợp chia sẻ đơn bus) thì các hoạt động của bộ điều khiển bộ nhớ và bus trung truyền có thể được thực hiện chồng lẫn nhau Sau khi việc truyền dữ liệu trên bus của một bộ xử lý đã được hoàn tất, một bộ xử lý khác có thể bắt đầu một quá trình ghi lên bộ nhớ mới cho một phần tử nhớ khác (Hình 2.1.6)
Hình 2.1.6 So sánh các chế độ hoạt động của bus trong quá trình ghi bộ nhớ
(a) Quá trình ghi vào bộ nhớ sử dụng locked bus
(b) Quá trình ghi vào bộ nhớ sử dụng pended bus
Từ hình.2.1.6 trên ta có thể thấy rằng quá trình ghi lên bộ nhớ sử dụng các pended bus có thể làm giảm thời gian đi rất nhiều lần (do thời gian ghi bộ nhớ gấp 3 lần thời gian truyền dữ liệu đến bộ nhớ để ghi) b Quá trình đọc bộ nhớ
Quá trình đọc bộ nhớ gồm ba pha như sau:
Pha 1: Địa chỉ của ô nhớ được truyền qua bus tới bộ điều khiển bộ nhớ
Pha 2: Quá trình đọc bộ nhớ được thực hiện bởi bộ điều khiển bộ nhớ
Pha 3: Dữ liệu được truyền trên bus tới bộ xử lý có yêu cầu dữ liệu
Các pha trên phải được thực hiện một cách tuần tự Người ta nhận thấy rằng, ở pha 1 chỉ sử dụng bus địa chỉ mà không dùng bus dữ liệu, ở pha ba lại chỉ dùng bus dữ liệu mà không dùng đến bus địa chỉ Do đó, người ta có thể thực hiện đồng thời pha 1 và pha 3 của hai quá trình đọc bộ nhớ để giảm thời gian thực hiện (trong trường hợp này, bus dữ liệu và bus địa chỉ phải hoàn toàn riêng biệt) Các bus ở chế độ khóa và chế độ tạm hoãn được cho trên (hình 2.1.7) dưới đây
Bên cạnh hai loại bus trên đây, người ta còn sử dụng bus ở chế độ thứ 3, cho phép một bộ xử lý yêu cầu một quá trình đọc bộ nhớ mới trước khi quá trình đọc bộ nhớ cũ được hoàn thành Các bus có khả năng hoạt động như vậy gọi là các bus làm việc ở chế độ “ tách phiên ” (split-transaction bus)
Hình 2.1.7 So sánh các chế độ hoạt động của bus trong quá trình đọc bộ nhớ
(a) Quá trình đọc bộ nhớ sử dụng locked bus
(b) Quá trình đọc bộ nhớ sử dụng pended bus
(c) Quá trình đọc bộ nhớ sử dụng split- transaction bus
Pha 1: bus địa chỉ Pha 2: bus rỗi Pha 3: bus dữ liệu c Hoạt động của bus arbiter
Các phần tử logic phân phối đóng vai trò vô cùng quan trọng trong việc thực hiện cơ chế bus tạm hoãn “pended buses” hoặc bus tách phiên “split-transaction buses”
Sau đây là một ví dụ minh họa cho hoạt động của các phần tử trong mạng đơn bus (Hình 2.1.8):
Hình 2.1.8 Hệ thống có phần tử phân phối bus trung tâm và các đường yêu cầu/cấp bus riêng
Quy trình yêu cầu cấp phát bus được thực hiện như sau:
b1: Master yêu cầu được cấp phát bus bằng cách kích hoạt đường request của riêng nó
b2: Nếu đường bus busy đang ở mức tích cực âm, có nghĩa là không có master nào đang sử dụng bus, phần tử phân phối bus sẽ ngay lập tức cấp phát bus cho master yêu cầu và kích hoạt đường grant line Master yêu cầu
Phần tử phân phối bus trung tâm
R: Request G: Grant không kích hoạt đường request line của nó nữa và kích hoạt đường busy line, ngăn chặn việc cấp phát bus cho các yêu cầu khác Sau khi kết thúc việc sử dụng bus, master sẽ thay đổi mức tích cực của busy line để các master khác có thể yêu cầu
b3: Khi đường busy line đang bị kích hoạt, phần tử phân phối bus không nhận bất cứ một yêu cầu nào khác
b4: Khi có nhiều yêu cầu đồng thời đến một lúc trong khi đương busy line không tích cực, phần tử phân phối bus sẽ sử dụng các chính sách ưu tiên để quyết định phần tử được sử dụng bus
Nhược điểm: Do phải chia sẻ một bus nên không thể nào tránh khỏi tình trạng tắc nghẽn Điều này hạn chế lớn nhất về số lượng bộ vi xử lý được sử dụng Dĩ nhiên là khi số lượng bộ vi xử lý tăng lên thì xác suất tắc nghẽn cũng tăng theo đến một mức nào đó khi toàn bộ băng thông của bus bị cạn kiệt do các bộ vi xử lý này Do đó, việc thêm bộ vi xử lý mới cũng sẽ không cải thiện thêm về tốc độ xử lý trong máy tính đa xử lý
2.1.3.2 Mạng kết nối động đa bus dùng chung – Multiple Shared Bus Network
Mạng chuyển mạch – Switching Networks
Crossbar là loại mạng kết nối động mạnh nhất vì nó cho phép việc truy nhập qua lại đồng thời giữa các tất cả phần tử đầu vào và đầu ra của mạng cho dù các đầu ra yêu cầu có thể khác nhau Do đó hệ thống này rất linh hoạt và cho phép khả năng hoạt động đồng thời của nhiều phần tử Ưu điểm này có được là nhờ mạng này được cấu tạo từ rất nhiều các chuyển mạch được gắn cho hai cặp bất kỳ đầu vào và đầu ra (bộ nhớ và bộ xử lý) nào của hệ thống
Nhược điểm của loại mạng này là: mỗi phần tử chuyển mạch phải có một phần tử phân phối bus (arbiter logic) để quyết định cấp phát bus cho truy cập bộ nhớ
Do đó, chi phí xây dựng các bộ chuyển mạch tốc đọ cao, phần cứng phức tạp nên không áp dụng được cho các hệ thống đa xử lý quy mô lớn
Mạng Crossbar có độ phức tạp hơn nhiều so với mạng Bus Ví dụ, đối với một mạng Crossbar kết nối đầy đủ, tất cả các bộ vi xử lý có thể đồng thời thông tin với nhau mà không làm suy giảm băng thông (Hình 2.1.11) Hình 2.1.11 biểu diễn kết nối giữa n bộ vi xử lý và m modun nhớ (giống như hệ thống bộ nhớ chia sẻ) Một mạng crossbar điển hình cũng có thể được sử dụng để kết nối các bộ vi xử lý với nhau Trong trường hợp như vậy, các mô đun nhớ sẽ được kết nối trực tiếp tới các bộ vi xử lý (dùng trong các hệ thống bộ nhớ phân tán), và các đường mà kết nối tới các mô đun nhớ Mi giờ đây sẽ kết nối tới các bộ vi xử lý Pi
Hình 2.1.11 Mạng Crossbar Để kết nối n bộ vi xử lý với n mô đun nhớ thì ta cần sử dụng tới n 2 bộ chuyển mạch
2.1.4.2 Mạng nhiều tầng – Multistage Networks
Nếu chúng ta xét về mặt độ phức tạp, giá thành, kết nối và băng thông thì mạng nhiều tầng được xem là sự dung hòa của mạng kết nối đơn bus và mạng chuyển mạch crossbar Mạng nhiều tầng gồm các tầng kết nối và chuyển mạch liên tiếp nhau Hiện nay có rất nhiều loại mạng nhiều tầng và được phân chia tùy thuộc vào tiêu chí phân loại (Hình 2.1.12 ) như: số tầng, số bộ chuyển mạch mỗi tầng,…
Hình 2.1.12 Tiêu chí thiết kế đối với mạng nhiều tầng
Một số loại mạng nhiều tầng phổ biến như: Omega, butterfly, blocking, generalized-cube
Sau đây em xin chỉ trình bày mạng nhiều tầng Omega và mạng Blocking a Mạng Omega: là mạng có tất cả các tầng đều giống nhau, có thể sử dụng như mạng tuần hoàn khép kín (Hình 2.1.13) Kết nối giữa nguồn và đích được tạo bởi một kết nối đơn Ở mạng Omega này ta có thể bổ xung thêm các tầng hoặc các đường dẫn để giảm thiểu xung đột và tăng khả năng chống lỗi Trong mạng
Number of switch at a stages
Topology of link among stages
Number of input and output links
Operation mode Blocking Non-blocking
Omega có Log2N tầng và mỗi tầng có N/2 bộ chuyển mạch, do đó sẽ có Log2N * N/2 bộ chuyển mạch, nhỏ hơn nhiều so với mạng ma trận
Hình 2.1.13 Cấu trúc mạng chuyển mạch Omega b Mạng chuyển mạch Blocking
Mạng chuyển mạch nhiều tầng là mạng thuộc loại “mạng khoá”, Blocking network, điều này đối lập với mạng chuyển mạch ma trận là mạng không khoá
(Non-blocking network) Mặc dù bất cứ đầu ra nào cũng có thể được truy cập từ bất cứ đầu vào khác nhau nào thông qua việc thiết lập bộ chuyển mạch, nhưng việc truy cập đồng thời tới tất cả các đầu ra từ những đầu vào khác nhau không phải lúc nào cũng thực hiện được
Hình 2.1.14 là một thí dụ điển hình của mạng Blocking Kết nối từ (010 - 111) hoặc từ (110 – 100) sẽ phải đợi một thời gian cho tới khi AB thực hiện xong một kết nối
Hình 2.1.14 Một thí dụ về mạng Blocking Điểm khác nhau cơ bản của mạng nhiều tầng và mạng crossbar là:
Mạng nhiều tầng (Blocking networks): thuộc loại mạng blocking network, nghĩa là tại một thời điểm, một bộ nhớ không thể được truy nhập bởi nhiều bộ xử lý (sẽ dẫn đến sự xung đột trong mạng)
Crossbar ( non-blocking networks): tại một thời điểm, kết nối giữa bất kỳ hai cặp đầu ra/ đầu vào nào cũng có thể thực hiện được.
Đánh giá chung về mạng kết nối trong hệ đa xử lý
Hiện nay có hai xu hướng trong sự phát triển mạng kết nối:
Các hệ đa xử lý thuộc thế hệ thứ nhất và thứ hai (cỡ nhỏ và trung bình) thường sử dụng ba loại mạng thuộc mạng kết nối động, đó là: buses, crossbar và mạng đa tầng Các mạng bus thường được sử dụng trong các hệ thống nhỏ, không đòi hỏi giá thành cao như Sequent Balance, Sequent
Symmetry và Encore Multimax Crossbar cũng thường được sử dụng trong các hệ thống nhỏ, trong đó tiêu chí và hiệu quả tính toán được đặt lên hàng đầu như C.MMP và Alliant FX/8 Tuy nhiên, mạng được sử dụng nhiều nhất trong hai thế hệ đa xử lý này là mạng đa tầng Mạng đa tầng thường được sử dụng để xây dựng các hệ thống với hàng trăm bộ xử lý vì mạng này đáp ứng được cả 2 yêu cầu về giá thành và băng thông (khắc phục nhược điểm của cả crossbar và mạng bus) Một số hệ đa xử lý gần đây sử dụng kiến trúc mạng đa tầng là :NYU Unltracomputer, Cedar, IBM RP3 và BBN TC-2000
Các hệ đa xử lý cỡ lớn thuộc thế hệ thứ 3 thường sử dụng các mạng kết nối tĩnh và phương pháp trao đổi thông tin message passing như mesh, ring thay cho mạng đa tầng Các hệ thống như Cray T3D, Standford DASH và Standford FLASH sử dụng các mạng Mesh 2 hoặc 3 chiều, trong khi các máy tính như Convex Examplar, Hector và KSR1 sử dụng mạng ring để kết nối các node trong hệ đa xử lý
Ngày nay, trong khi mạng nhiều tầng gần như không còn được sử dụng nữa thì mạng bus và crossbar vẫn được sử dụng để thực hiện các kết nối giữa các bộ xử lý bên trong các cluster của các hệ thống đa xử lý cỡ lớn trong khi mạng kết nối tĩnh là mạng giữ vai trò kết nối các cluster này
Việc kết hợp cả mạng tĩnh và mạng động trong một hệ thống đa xử lý là một giải pháp hợp lý để kết hợp được ưu điểm của cả hai loại mạng (đó là tính linh hoạt của mạng động và khả năng phân cấp cao của mạng tĩnh) và hạn chế được những nhược điểm của chúng (như độ phức tạp, độ trễ cao, giá thành )
Vấn đề đặt ra là: phải xây dựng một mạng kết nối được kết hợp từ mạng động và mạng tĩnh như thế nào để đạt được cả hai tiêu chí mà ta đã nói từ đầu là: băng thông lớn nhưng lại ít đường kết nối nhất
Trong phạm vi luận văn này, em xin phân tích một giải pháp cho mạng kết nối của hệ thống đa xử lý có bộ nhớ chung phân bố, đó là “mạng tái cấu hình được” (reconfigurable network).
Mạng tái cấu hình được – Reconfigurable network
Một mạng kết nối được gọi là tái cấu hình được nếu kiến trúc mạng của mạng có thể thay đổi trong quá trình thực hiện chương trình, nhằm mục đích thỏa mãn các yêu cầu về trao đổi thông tin của một ứng dụng nào đó
Trước đây, khi nghiên cứu về mạng tái cấu hình được, một giải pháp được đưa ra là nâng cấp các mạng cố định (thường là mạng Mesh và mạng hình Khối) để mạng này có thể hoán đổi các cặp node nhằm đạt đến trạng thái là các bộ xử lý thường xuyên trao đổi với nhau sẽ nằm kề nhau trong mạng Tuy nhiên, thuật toán để thực hiện các chuyển đổi trên rất khó, thời gian để ổn định mạng chậm trong khi các thông số của lưu lượng mạng luôn luôn biến đổi Cũng có một vài nghiên cứu đã đưa ra mô hình của các mạng tái cấu hình như vậy nhưng hầu như chưa mô hình nào được xây dựng thực tế và thực sự đạt hiệu quả đáng kể Do đó, luân văn này chỉ đề cập tới một khái niệm mạng tái cấu hình mới, hoàn toàn khác so với các mạng tái cấu hình trước đây
2.3.1 Khái niệm của mạng tái cấu hình
Mạng tái cấu hình được nghiên cứu trong luận văn là một mạng kết nối có nền tảng là một mạng cố định Ngoài ra, mạng cố định này sẽ được hỗ trợ bằng một mạng động thứ hai gồm một số giới hạn các kết nối giữa các node, có thể được cấu hình và thay đổi điểm đặt tùy theo yêu cầu của mạng Các kết nối của mạng thứ hai này được gọi là các kết nối thêm (thường được gọi theo tên tiếng Anh là extra links hay elinks) Sơ đồ của mạng tái kết nối điển hình được cho trên hình 2.3.1
Hình 2.3.1 Kiến trúc của một mạng tái cấu hình điển hình
2.3.2 Hoạt động của mạng tái cấu hình được
Trong mạng tái cấu hình kiểu này, các extra link được sử dụng cho các yêu cầu truyền thông tin trực tiếp giữa 2 node (1 chặng hay single hop) còn mạng cơ sở (cố định) sẽ đảm nhiệm các yêu cầu truyền thông tin qua nhiều node (nhiều chặng hay multihop) Ưu điểm của kiến trúc mạng này so với các kiến trúc mạng khác là cho phép thay đổi kết nối toàn mạng còn mạng kết nối cố định luôn luôn cùng tồn tại Nhờ đó, khi mạng tái cấu hình đang thực hiện cấu hình lại thì các yêu cầu trao đổi thông tin vẫn được thực hiện bình thường bởi mạng cố định này Một ưu điểm khác là việc định tuyến và giải thuật cấu hình lại cho mạng đơn
Mạng cố định ( ) Các extra link ( ) giản hơn ( vì số extra link giới hạn, các extra link chỉ cho truyền lưu lượng qua 2 node )
Trong trường hợp lý tưởng, các extra link cần phải được đặt vào tất cả các điểm có khả năng tắc nghẽn và ở xa nhau nhất đối với từng ứng dụng Điều này thực sự là rất khó nếu như không muốn nói là không thể vì mỗi ứng dụng có đặc điểm lưu lượng riêng và lưu lượng này luôn luôn biến đổi theo thời gian Do đó, trong mạng tái cấu hình được đề cập ở đây, tiêu chí để 1 cặp node được đặt extra link đó là lưu lượng giữa hai node này là một trong số những cặp có lưu lượng bận nhất trong toàn mạng Giả sử trong mạng có tới n node, tương đương n*(n-1)/2 cặp node, nhưng chỉ có 16 extra link thì chỉ có 16 cặp có lưu lượng bận nhất trong mạng được đặt extra link mà thôi Nguyên nhân của việc đặt extra link như vậy là do các cặp node có lưu lượng đi qua lớn nhất là các cặp có khả năng gây tắc nghẽn cao nhất và gây trễ đường truyền lớn nhất Hơn nữa, các nhà nghiên cứu hi vọng, với cách đặt extra links này, một tỷ lệ lớn lưu lượng, bao gồm cả các yêu cầu truy nhập bộ nhớ quan trọng sẽ được cấp các đường truyền 1 chặng, giảm tối thiểu trễ do định tuyến và phân nhánh, kết quả là làm giảm trễ của yêu các yêu cầu truy nhập bộ nhớ nói chung
Do lưu lượng giữa các node trên mạng thường xuyên thay đổi, các extra links này sẽ được cấu hình lại sau những khoảng thời gian cố định phụ thuộc vào các thông số lưu lượng phân tích được ở trên mạng
Khoảng thời gian cố định cấu hình lại các extra link là tham số cố định đối với từng mạng (khoảng thời gian này được gọi là khoảng thời gian cấu hình lại hay interval, kí hiệu là Δt ) Trong tất cả các Δt, lưu lượng trên mạng được quan sát và phân tích bởi một phần tử phân tích lưu lượng mạng, phần tử này sẽ thực hiện việc tính tổng lưu lượng đi qua mỗi cặp node của mạng trong cả khoảng Δt và tìm ra các cặp có lưu lượng lớn nhất và ở xa nhau nhất trong Δt đó Cuối mỗi interval, vị trí mới của các extra links được quyết định và cấu hình mới của mạng được thực hiện), được thể hiện trên Hình.2.3.2 Việc tính toán cấu hình mới của mạng sẽ cần khoảng thời gian tse, gọi là thời gian lựa chọn (selection time)
Hình 2.3.2 Quá trình đặt thêm các extra links trên mạng kết nối
Tuy nhiên, các extra link không thể thay đổi vị trí ngay được mà cần một khoảng thời gian là tsw, gọi là thời gian chuyển mạch Thời gian lựa chọn phụ thuộc vào thuật toán và phương pháp thực hiện việc tính toán còn thời gian chuyển mạch phụ thuộc vào công nghệ chuyển mạch của mạng
Có hai yêu cầu đặt ra đối với Δt là: Δt phải đủ lớn để phần tử phân tích hoàn thành các công việc của mình, tuy nhiên thời gian này lại không được quá lâu do các thông số trong mạng thay đổi liên tục Vậy Δt nên chọn giá trị nào? Để giải đáp cho câu hỏi trên, trong luận văn này tôi đã thực hiện mô phỏng một hệ thống đa xử lý sử dụng với mạng kết nối cố định Torus 4 x 4 đồng thời phân
Extra links live t se t sw
Time tích thời gian trễ mạng và tỷ lệ tắc nghẽn mạng với các khoảng thời gian khác nhau Việc mô phỏng và kết quả của luận văn sẽ được trình bày chi tiết hơn ở các chương sau.