NHẬN XÉT CỦA GIẢNG VIÊN GIẢNG DẠY . GIẢNG VIÊN GIẢNG DẠY TS Nguyễn Hồng Quang Trang 2 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ---------------------*--------------------- ĐỀTÀI TIỂU LUẬN KIẾN TRÚC MÁY TÍNH TIÊN TIẾN TÊNĐỀTÀIDesigningandEvaluatingan I/O System—TheInternetArchiveCluster Giảng viên hướng dẫn: TS Nguyễn Hồng Quang Học viên: Nguyễn Văn Tuân - SHHV : CA120633 Lớp: CNTT-HY CH2012A Hưng Yên, tháng 08 năm 2012 MỤC LỤC Mục lục .trang 3 Nội dung .trang 4 1. Cơ bản phần cứng nguyên thủy trang 4 2. Thực hiện khóa sử dụng phù hợp trang 5 3. Thử hiệu suất đồng bộ hóa . trang 6 4. Đồng bộ hóa cho các đa xử lý quy mô lớn hơn trang 7 4.1 Cài đặt phần mềm . trang 7 4.2 Phần cứng ban đầu trang 8 Kết luận . trang 9 Trang 3 NỘI DUNG Cơ chế đồng bộ hóa được xây dựng với các chương trình phần mềm dựa trên các hướng dẫn đồng bộ hóa phần cứng cung cấp. Bắt đầu bằng cách kiểm tra phần cứng cơ bản, sau đó xây dựng đồng thời một số đồng bộ hóa cơ bản hay sử dụng và sau đó chuyển sang sử dụng các vấn đề đa xử lý lớn hơn. 1. Cơ bản phần cứng nguyên thủy Là các khối xây dựng cơ bản được sử dụng để xây dựng một tập rộng của hoạt động đồng bộ hóa người dung, bao gồm tất cả các thứ như ổ khóa và các rào cản. Nhìn chung, kiến trúc sư không mong đợi người dung sử dụng phần cứng nguyên thủy cơ bản, nhưng thay vì mong đợi rằng nguyên thủy sẽ được được sử dụng bởi bộ ba hệ thống chương trình để xây dựng một thư viện đồng bộ hóa, một quá trình thường là phức tạp và khó khăn. Một điển hình hoạt động để xây dựng các hoạt động đồng bộ hóa là trao đổi nguyên tử, giao một giá trị trong một sổ đăng ký cho một giá trị trong bộ nhớ. Giả định rằng chúng tôi muốn xây dựng một khóa đơn giản, nơi giá trị 0 được sử dụng để chỉ ra rằng khóa là miễn phí và 1 được sử dụng để cho biết rằng khóa là không có. Bộ vi xử lý cố gắng để thiết lập các khóa bằng cách thực hiện một cuộc trao đổi 1, trong sổ đăng ký, với địa chỉ bộ nhớ tương ứng với giá trị khóa. Các hướng dẫn trao đổi là 1 nếu một số bộ xử lý khác đã tuyên bố chủ quyền truy cập và 0 nếu ngược lại. Trong trường hợp thứ hai, giá trị cũng được thay đổi là 1, ngăn chặn bất kỳ trao đổi cạnh tranh từ cũng lấy một 0. Một cách khác là có một cặp hướng dẫn nơi các chỉ lệnh thứ hai lại biến một giá trị mà từ đó nó có thể được suy luận liệu các cặp hướng dẫn được thực hiện như hướng dẫn nguyên tử. Các cặp hướng dẫn là có hiệu quả nguyên tử nếu nó xuất hiện như thể tất cả các hoạt động khác thực hiện bởi bộ xử lý nào xảy ra trước hoặc sau khi cặp. Vì vậy, khi một cặp giảng dạy là có hiệu quả nguyên tử, không có bộ xử lý khác có thể thay đổi giá trị giữa các cặp hướng dẫn. Các cặp hướng dẫn bao gồm một tải trọng đặc biệt gọi là một tải trọng liên kết hoặc tải bị khóa và bộ lưu trữ đặc biệt được gọi là một bộ lưu trữ có điều kiện. Những hướng dẫn này được sử dụng theo thứ tự: Nếu nội dung của vị trí bộ nhớ được chỉ định bởi tải trọng liên kết được thay đổi trước khi các bộ lưu trữ có điều kiện đến cùng một địa chỉ xảy ra, sau đó các cửa bộ lưu trữ không có điều kiện. Nếu bộ xử lý hiện một bối cảnh chuyển đổi giữa hai-structions, sau đó các bọ lưu trữ có điều kiện cũng không thành công. Các bộ lưu trữ có điều kiện được định nghĩa để trả về một Trang 4 giá trị có hay không các bộ lưu trữ đã thành công. Kể từ khi tải liên kết trả về giá trị ban đầu và các bộ lưu trữ có điều kiện trả về 1 nếu nó thành công và 0 nếu ngược lại, trình tự sau đây thực hiện một cuộc trao đổi nguyên tử vào vị trí bộ nhớ quy định các nội dung của R1: Một lợi thế của phụ tải liên kết / cơ chế cửa hàng có điều kiện là nó có thể được sử dụng để xây dựng đồng bộ hóa nguyên thủy khác. 2. Thực hiện khóa sử dụng phù hợp Một khi chúng ta có một hoạt động nguyên tử, chúng ta có thể sử dụng các cơ chế đa gắn kết để thực hiện các ổ khóa quay: ổ khóa mà một bộ xử lý liên tục cố gắng để có được, quay xung quanh một vòng lặp cho đến khi nó thành công Nếu hỗ trợ sự đa gắn kết bộ nhớ cache, có thể bộ nhớ cache ổ khóa bằng cách sử dụng cơ chế gắn kết để duy trì giá trị khóa mạch lạc. Ổ khóa bộ nhớ đệm có hai lợi thế. Đầu tiên, nó cho phép thực hiện quá trình "quay" (cố gắng để kiểm tra và có được khóa chặt trong một vòng lặp) có thể được thực hiện trên một bản sao lưu trữ địa phương hơn là đòi hỏi một bộ nhớ truy cập toàn cầu trên mỗi cố gắng để có được khóa. Ưu điểm thứ hai đến từ sự quan sát thường có địa phương truy cập khóa: đó là, bộ xử lý sử dụng các khóa cuối cùng sẽ sử dụng nó một lần nữa trong tương lai gần. Trong những trường hợp như vậy, giá trị khóa có thể cư trú trong bộ nhớ cache của bộ xử lý, giúp giảm thiểu thời gian để có được khóa. Trang 5 3. Thử hiệu suất đồng bộ hóa Hình 1.2 Thời gian để tiếp thu và phát hành một khóa duy nhất 10 bộ vi xử lý tranh cho khóa, giả sử mỗi giao dịch đường dẫn có 100 chu kỳ đồng hồ. Gây ra trọng tài Bus công bằng, bộ vi xử lý phát hành phải chờ đợi cho tất cả 9 Proces-sors cố gắng để có được các khóa vô ích!. Hình này còn cho thấy trình tự các sự kiện từ thời điểm, thời gian phát hành để phát hành kế tiếp. Tất nhiên, số lượng các bộ vi xử lý, chăm sóc con cho khóa giảm một thời gian mỗi khóa được mua lại, tái duces chi phí trung bình 1.550 chu kỳ. Vì vậy, trong 10 cặp khóa, mở khóa, nó sẽ mất hơn 15.000 chu kỳ cho các bộ vi xử lý để vượt qua thông qua các khóa. Fur-thermore, bộ xử lý trung bình sẽ dành một nửa thời gian nhàn rỗi này, chỉ cần thử để có được khóa. - Rào chắn đồng bộ: Một bổ sung hoạt động đồng bộ hóa phổ biến trong các chương trình với các vòng song song là một rào cản. Một rào cản buộc tất cả các quy trình để chờ đợi cho đến khi tất cả các quá trình đạt đến ngưỡng và sau đó phát hành tất cả các quá trình. Một thực hiện điển hình của một rào cản có thể được thực hiện với hai ổ khóa quay: một được sử dụng để bảo vệ truy cập mà trả khớp quá trình đến hàng rào và một sử dụng để giữ quá trình un-til quá trình cuối cùng đến hàng rào Trang 6 Trên đây là một thực hiện điển hình, giả định rằng khóa và mở khóa cung cấp ổ khóa quay cơ bản và tổng số là số lượng các quá trình phải đạt đến ngưỡng đó. Trong thực tế, biến chứng khác làm cho rào cản thực hiện hơi phức tạp hơn. Thường xuyên hàng rào được sử dụng trong một vòng lặp, do đó quá trình phát hành từ rào cản sẽ làm một số công việc và sau đó đạt đến ngưỡng đó một lần nữa. Giả sử rằng một trong các quá trình không bao giờ thực sự rời khỏi rào cản, mà có thể xảy ra nếu hệ điều hành lên kế hoạch một quá trình khác. - Đồng bộ hóa hiệu suất có thể là một nút cổ chai thực sự khi có tranh đáng kể trong nhiều quy trình. Khi có chút ganh đua và hoạt động đồng bộ hóa không thường xuyên, chúng tôi chủ yếu quan tâm về độ trễ của một đồng bộ hóa nguyên thủy đó là, phải mất bao lâu một quá trình cá nhân để hoàn thành một hoạt động đồng bộ hóa. Hoạt động spin-khóa cơ bản của chúng tôi có thể làm điều này trong hai chu kỳ bus: một bước đầu đọc khóa và một để viết nó. Chúng ta có thể cải thiện một chu kỳ bus duy nhất bằng một thay đôie các phương pháp. 4. Đồng bộ hóa cho các đa xử lý quy mô lớn hơn 4.1 Cài đặt phần mềm Khó khăn lớn nhất với việc thực hiện quay khóa của chúng tôi là sự chậm trễ do vỏ bảo vệ khi quá trình quay vào khóa. Một giải pháp là quá trình chậm trễ móng biệt khi họ không có được khóa. Hiệu suất tốt nhất thu được bằng cách tăng chậm trễ theo cấp số nhân bất cứ khi nào cố gắng để có được các khóa không. Việc thực hiện này vẫn cố gắng để duy trì độ trễ thấp khi tranh nhỏ bằng cách không trì hoãn các vòng lặp quay ban đầu. Cũng có thể trì hoãn quá trình đó, nhưng kết quả sẽ là ít thực hiện khi khóa là chỉ có hai quá trình sử dụng và một trong những đầu tiên đã xảy ra để tìm thấy nó đã bị khóa. Một kỹ thuật thực hiện cho các ổ khóa là sử dụng ổ khóa xếp hàng. Hàng đợi khóa làm việc bằng cách xây dựng một danh sách các bộ vi xử lý chờ đợi, bất cứ khi nào một bộ xử lý sẽ giải phóng các khóa, nó gây ra các bộ vi xử lý tiếp theo trong hàng đợi để cố gắng truy cập. Điều này giúp loại bỏ ganh đua cho một khóa khi nó được giải phóng. Cách xếp hàng vận hành khóa trong phần tiếp theo bằng cách sử dụng một phần cứng. Trang 7 4.2 Phần cứng ban đầu Trong phần này chúng ta nhìn vào hai nguyên thủy đồng bộ hóa phần cứng. Các nguyên thủy đầu tiên giao dịch với các ổ khóa, trong khi thứ hai là hữu ích cho các rào cản và một số hoạt động khác người sử dụng cấp đòi hỏi phải tính hoặc cung cấp các chỉ số khác biệt. Vấn đề chính với việc thực hiện khóa ban đầu là giới thiệu một số lượng lớn tranh không cần thiết. Ví dụ, khi khóa được phát hành tất cả các bộ xử lý tạo ra cả hai đọc và viết một lỡ, mặc dù nhiều nhất một Proces-Sor thành công có thể có được khóa ở trạng thái mở khóa. Trình tự này xảy ra trong số 20 trình tự khóa / mở khóa Có thể cải thiện tình trạng này bằng một cách trao khóa từ bộ xử lý chờ đợi tiếp theo. Thay vì chỉ đơn giản là cho phép tất cả các bộ xử lý để cạnh tranh phát hiện phần cứng thời gian khóa được phát hành, giữ một danh sách của các bộ vi xử lý chờ đợi và khóa tay một cách rõ ràng, khi lần lượt của nó đến. Sắp xếp của cơ chế này đã được gọi là một khóa xếp hàng. Làm thế nào để một khóa xếp hàng? Trên lỡ đầu tiên biến khóa, bỏ lỡ được gửi đến một bộ điều khiển đồng bộ hóa, có thể được tích hợp với bộ điều khiển bộ nhớ hoặc với bộ điều khiển thư mục. Nếu khóa miễn phí, nó chỉ đơn giản là trả lại cho bộ xử lý. Nếu khóa không có sẵn, Lớp kiểm soát tạo ra một danh sách về yêu cầu của nút (ví dụ như là một bit trong một véc tơ) và gửi các bộ vi xử lý lại một giá trị khóa cho các biến, các bộ vi xử lý sau đó quay vào. Khi khóa được giải phóng, bộ điều khiển lựa chọn một bộ xử lý đi trước từ danh sách của các bộ vi xử lý chờ đợi. Nó có thể sau đó, hoặc cập nhật các biến khóa trong bộ nhớ cache của bộ xử lý được lựa chọn hoặc vô hiệu sao chép, gây ra các bộ vi xử lý bỏ lỡ và lấy một bản sao của khóa. Khóa xếp hàng có thể được sử dụng để cải thiện hiệu suất của các rào cản. Như chúng ta đã thấy, vấn đề đồng bộ hóa có thể trở nên khá cấp ở đa xử lý quy mô lớn hơn. Khi những thách thức đặt ra bởi đồng bộ cùng với những thách thức đặt ra do độ trễ bộ nhớ lâu dài và tiềm năng trong tính toán tải cân bằng, chúng ta có thể thấy tại sao việc sử dụng hiệu quả của bộ vi xử lý có cỡ lớn là rất khó khăn. Trang 8 KẾT LUẬN Sau thời gian tìm hiểu và nghiên cứu đề tài, em đã tìm hiểu được các nội dung: Cơ chế đồng bộ hóa Hiệu suất đồng bộ hóa Tuy nhiên, trong thời gian thực hiện đềtài em vẫn không thể tránh khỏi một số sai xót và hạn chế khi tìm hiểu miền kiến thức mới. Với những thiếu xót trong lần làm tiểu luận này này, rất mong nhận được sự đóng góp ý kiến từ Thầy để em hoàn thành bài tiểu luận tốt hơn. Trang 9