Tìm hiểu về công nghệ multicore và các phương pháp cải thiện hiệu năng của máy tính

20 1.1K 3
Tìm hiểu về công nghệ multicore và các phương pháp cải thiện hiệu năng của máy tính

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tìm hiểu về công nghệ multicore và các phương pháp cải thiện hiệu năng của máy tính

Mục lục DANH MỤC HÌNH VẼ .2 LỜI NÓI ĐẦU .3 Multicore gì? Tại cần Multicore? 2.1 Phương pháp tăng tốc độ đồng hồ 2.2 Đường ống hóa vi xử lý .7 2.3 Phương pháp siêu phân luồng Các kỹ thuật Multicore 10 3.1 Multicore kết hợp với Hyper Threading 10 3.2 Các vấn đề kết hợp Multicore với nhớ Cache 12 Hệ điều hành chương trình Multicore 17 Kết Luận 20 DANH MỤC HÌNH VẼ Hình Sơ đồ khối máy tính .4 Hình Cấu tạo Core Hình Sơ đồ khối hệ thống Multicore Hình Biều đồ thời gian kích thước Transistor từ 2000-2020 Hình Tỷ lệ hiệu so với tốc độ đồng hồ vi xử lý hãng Intel Hình Minh họa trình thực Pipeline Hình Sự lãng phí ALU Hình Minh họa siêu phân luồng Hình Tranh chấp hai luồng STT 10 Hình 10 Multicore kết hợp với Hyper Threading 11 Hình 11 Chip i5-4200U nhân, luồng 11 Hình 12 So sánh tốc độ giá loại nhớ 12 Hình 13 Các kiểu kết hợp nhớ Multicore 13 Hình 14 Xung đột liệu Multicore 13 Hình 15 Xung đột liệu Multicore 14 Hình 16 Xung đột liệu Multicore 14 Hình 17 Xung đột liệu Multicore 15 Hình 18 Phương pháp vô hiêu hóa liệu 15 Hình 19 Phương pháp vô hiêu hóa liệu 16 Hình 20 Phương pháp vô hiêu hóa liệu 16 Hình 21 Phương pháp cập nhật liệu 17 Hình 22 Ví dụ Affinity masks Hyper Threading 18 Hình 23 Ví dụ Affinity masks có Hyper Threading 18 Hình 24 Set affinity Window 19 LỜI NÓI ĐẦU Ngày này, với tốc độ phát triển nhanh chóng xã hội, nhu cầu xử lý thông tin người dùng ngày tăng, đòi hỏi máy tính phải trang bị cho xử lý mạnh mẽ đồng thời phải có giá thành hợp lý Chính vậy, ngày có nhiều giải pháp nâng cao hiệu máy tính đưa Một phương pháp áp dụng vào thực tế thành công phương pháp nâng cao hiệu máy tính theo công nghệ Multicore Đây công nghệ thú vị Vì vậy, nhóm chúng em định chọn đề tài “Tìm hiểu công nghệ Multicore phương pháp cải thiện hiệu máy tính” để cập nhật thêm kiến thức cho thân Trong tập lớn này, nhóm chúng em tìm hiểu xoay quay vấn đề như: công nghệ Multicore gì, ưu nhược điểm công nghệ Multicore, so sánh công nghệ Multicore với công nghệ cải thiện hiệu khác Trong viết, nhóm chúng em xin trình bày ngắn gọn, tập trung vào ý vấn đề Do thơi gian tìm hiểu hiểu hạn chế nên viết không tránh khỏi thiếu sót Vì vậy, chúng em mong nhận ý kiến góp ý từ cô để hoàn thiện kiến thức vấn đề Cuối cùng, nhóm chúng em xin chân thành cảm ơn cô giáo Ths Tạ Kim Huệ cho chúng em đề tài thú vị Nhóm sinh viên S-BkFet Multicore gì? Như biết, máy tính đơn giản hệ thống bao gồm thành phần: đơn vị xử lý trung tâm (CPU), nhớ, thành phần giao tiếp với thiết bị ngoại vị hệ thống bus Trong đó, CPU thành phần quan trọng máy tính Cấu tạo CPU bao gồm thành phần:  ALU: đơn vị tính toán số học logic  Register file: tệp ghi  Bus Interface: đơn vị điều khiển hệ thống bus Hình Sơ đồ khối máy tính Hình thể sơ đồ khối máy tính Trên đó, phần ô vuông màu đỏ thành phần CPU đơn giản, CPU có core Vậy Core gì? Hình 2, giải thích khái niệm core CPU Core hiểu lõi với hai thành phần ALU tệp ghi kết nối với Một điều lưu ý, core không coi CPU đầy đủ, thành phần CPU Từ đây, ta hiểu công nghệ Multicore công nghệ thay sử dụng core cho CPU, ta tích hợp nhiều core lên Hình Cấu tạo Core khuân CPU core sử dụng chung thành phần máy tính Để hiểu rõ ta theo dõi Hình 3, hình vẽ minh họa sơ đồ khối CPU sử dụng theo công nghệ Multrcore Hình Sơ đồ khối hệ thống Multicore Đến đây, ta hình dung cách nâng cao hiệu máy tính sử dụng công nghệ Trong công nghệ này, người ta tăng số lượng đơn vị tính toán CPU Có nghĩa thay thời điểm thực tác vụ, ta có thực tối đa N tác vụ đồng thời, với N số core CPU Tuy nhiên, phương pháp có ưu nhược điểm Nhưng trước hết, ta tìm hiểu người ta lại sử dụng công nghệ Multicore cách phân tích mặt hạn chế giới hạn công nghệ áp dụng trước như: tăng tốc độ đồng hồ, đường ống hóa vi xử lý (Pipeline), công nghệ siêu phân luồng (Hyper Threading hay Simultaneous multithreading) Tại cần Multicore? 2.1 Phương pháp tăng tốc độ đồng hồ Như biệt, tốc độ đồng hồ nguyên nhân định đến hiệu suất máy tính Cùng máy tính, mà tốc độ đồng hồ tăng thời gian thực lệnh giảm xuống, nghĩa khoảng thời gian ta thực nhiều lệnh hay hiêu máy tính tăng lên Tuy nhiên tốc độ đồng hồ phụ thuộc vào kích thước transistor, để tăng tốc độ đồng hồ đỏi hỏi kích thước transistor phải ngày nhỏ Đồng nghĩa với việc chế tạo CPU hiệu cao ngày khó mà công nghệ chế tạo Transistor dừng lại công nghệ 22nm khó khăn để chế tạo Transistor nhỏ Hình Biều đồ thời gian kích thước Transistor từ 2000-2020 Hình Tỷ lệ hiệu so với tốc độ đồng hồ vi xử lý hãng Intel Một nguyên nhân khác khiến việc tăng tốc độ đồng hồ nhanh đạt đến giới hạn ta tăng tốc độ đồng hồ, điện tiêu thụ CPU tăng lên cách nhanh chóng theo hàm bình phương tốc độ đồng hồ Điều này, khiến máy tính trở nên nóng cần phải có hệ thống tản nhiệt đắt tiền Qua thực tế, người ta nhận thấy tỉ lệ hiệu so với giá thành sản phẩm theo cách tăng xung nhịp nhanh đạt đến ngưỡng tới hạn Vì lý trên, cần phải có phương pháp khác tốt để giải tăng hiệu máy tính 2.2 Đường ống hóa vi xử lý Một phương pháp hay sử dụng CPU ngày phương pháp đường ống hóa vi xử lý (Pipeline) Cơ chế ngắn gọn pháp pháp chia trình thực lệnh thành giai đoạn nhỏ giai đoạn có đơn vị thực riêng Điều có nghĩa ta thực đồng thời giai đoạn khác lệnh khác thời điểm Điều này, cho phép ta tận dùng tài nguyên sẵn có vi xử lý giúp tăng tốc độ đồng hồ mà không cần phải giảm kích thước Transistor Tuy nhiên, phương pháp có mặt hạn chế Đó để khai thác hết lưc tài nguyên ta cần phải chia trình thực lệnh thành nhiều giai đoạn tốt Nhưng chia trình thực lệnh thành nhiều giai đoạn, xung đột trình bắt đầu xuất số lượng xung đột tăng theo số giai đoạn Việc đòi hỏi phải có phương pháp giải khó để giải vấn đề số giai đoạn tăng cao Hình Minh họa trình thực Pipeline Nhìn chung, phương pháp tốt để giải toán khai thác hiệu tài nguyên sẵn có Nhưng xét kỹ hơn, ta thấy phương pháp chưa khai thác hết tài nguyên ALU Lấy ví dụ, ALU có hai đơn vị tính toán riêng biệt cho số phức số thực dấu phẩy động hình Dù cho sử dụng phương pháp Pipeline thời điểm ta sử dụng hai đơn vị này, nghĩa đơn vị lại không sử dụng Điều dẫn tới đời phương pháp mới, phương pháp siêu phân luồng Hình Sự lãng phí ALU 2.3 Phương pháp siêu phân luồng Siêu phân luồng hay đa luồng chạy đồng thời tên để phương pháp, viết sử dụng cách gọi thứ Nói cách đơn giản để hiểu siêu phân luồng máy tính có CPU hệ điều hành phần mềm tưởng tượng sở hữu hai CPU ảo chúng tạo hai luồng khác để chạy đồng thời hai CPU ảo với yêu cầu thời điểm hai luồng sử dụng hai đơn vị khác CPU vật lý Để hiểu rõ phương pháp theo dõi hình 8 Hình Minh họa siêu phân luồng Trên hình 8, ta thấy có hai luồng luồng chạy song song với chúng sử dụng hai đơn vị tài nguyên khác ALU Trong luồng sử dụng đơn vị tính toán cho số nguyên luồng sử dụng đơn vị tính toán số thực dấu phảy động Rõ ràng, nhìn vào ta thấy phương pháp cho phép khai thác tốt tài nguyên ALU Tuy nhiên, nhược điểm phương pháp có tranh chấp sử dụng tài nguyên hai luồng cần phải giải Điều không giải dẫn tới hậu nghiêm trọng giải Phương pháp này, có mặt hạn chế lớn Nhưng tốt cho phần mềm hệ điều hành hỗ trợ siêu phân luồng, hệ thống máy chủ Ngày này, hầu hết hệ điều hành phổ biến Window, MacOS, Linux,… hỗ trợ siêu phân luồng Nhưng điều khiến phương pháp chưa thật hấp dẫn việc viết chương trình hỗ trợ siêu phân luồng thường khó cho lập trình viên Một phương pháp gần giống hiệu hơn, phương pháp Multicore Phương pháp Multicore việc giải vấn đề tranh chấp tốt giải pháp tốt để giải toán đa nhiệm Tức là, với Multicore thực nhiều tác vụ đồng thời, lấy ví dụ đơn giản bạn sử dụng trình duyệt web để đọc báo, bạn bật window player để nghe nhạc, bật từ điển để tìm nghĩa từ mới,… Nói tóm lại, với Multicore ta thoải mái sử dụng nhiều ứng dụng lúc Hình Tranh chấp hai luồng STT Trong phần sau, xem xét cách kết hợp Multicore với siêu phân luồng, so sánh hai công nghệ với nhau, phân tích giải vấn đề đồng liệu Các kỹ thuật Multicore 3.1 Multicore kết hợp với Hyper Threading Ngày nay, người ta thường kết hợp nhiều phương pháp với để khai thác tối đa hiệu máy tính Trong có kết hợp Multicore Hyper Threading Các chip vi xử lý Intel thị trường cung cấp cho người dùng tùy chọn sau:     Single-core, non-SMT Single-core, with SMT Multi-core, non-SMT Multi-core, with SMT 10 Với CPU hai core sử dụng Hyper Threading máy tính có tối đa luồng chạy đồng thời Trên hệ điều hành window để thấy điều ta vào Task Manager để kiểm tra Hình 10 Multicore kết hợp với Hyper Threading Hình 11 CPU i5-4200U nhân, luồng 11 Cách kết hợp cho phép CPU chạy với tốc độ đồng hồ thấp đạt hiệu cao giúp giảm điện tiêu thụ máy tính So sánh Multicore Hyper Threading: Multicore Hyper Threading  Có nhiều lõi lõi thường nhỏ  Có thể sử dụng với lõi có kích thước chậm hơn, bù lại việc thiết kế sản lớn nhanh xuất đơn giản  Hiệu tốt với luồng đơn  Điều thích hợp với sử lý song  Hầu hết áp dụng song song song mức luồng mức lệnh 3.2 Các vấn đề kết hợp Multicore với nhớ Cache Trong kiến trúc máy tính, thành phần có tốc độ chậm nhớ, thường nguyên nhân làm hiệu máy tính giảm Thực ra, tốc độ nhớ SRAM chậm nhiên giá thành để sản xuất nhớ nhanh tốn người ta sử dụng phương pháp phân cấp nhớ để giải phần vấn đề Hình 12 So sánh tốc độ giá loại nhớ Cơ sở phương pháp nhớ gần máy tính có tốc cao dung lượng nhỏ, nhớ xa có tốc độ chậm dung lượng lớn Trong Cache thành phần gần với CPU thường nằm CPU Các liệu tải vào cache trước đưa vào CPU để tính toán 12 Hình 13 Các kiểu kết hợp nhớ Multicore Trong Multicore, core có nhớ Cache riêng hay chia sẻ nhớ Cache với Hình 13, minh họa cách kết hợp nhớ Cache Multicore Khi kết hợp với nhớ cache, hệ thống nảy sinh vấn đề cần phải đồng liệu có nhiều luồng tác động đến biến Để hiểu rõ vấn đề theo dõi ví dụ Ta có máy tính core sử dụng kiến trúc phân cấp nhớ, nhớ lưu biến x = 15213 Hình 14 Xung đột liệu Multicore 13 Core Core sử dụng x chúng đọc x vào nhớ cache riêng chúng Hình 15 Xung đột liệu Multicore Core đọc x từ Cache tính toán, lưu tra lại kết x = 21660 vào nhớ Cache nhớ Hình 16 Xung đột liệu Multicore Một lúc sau, Core muốn sử dụng đến x, đọc x từ Cache đọc kết cũ x = 15213 Đến đây, rõ ràng cần phải có giải pháp để đồng hóa liệu 14 Hình 17 Xung đột liệu Multicore Có hai phương pháp đơn giản để giải vấn đề phương pháp vô hiêu hiệu hóa phướng pháp cập nhật Chúng ta tìm hiểu hai phương pháp Phương pháp vô hiệu hóa: Cách xử lý phương pháp mô tả sau Sau core thực tính toán biến lưu trả lại kết vào nhớ cache nhớ đồng thời gửi thông báo đến cache core khác thông báo liệu cập nhật Dữ liệu cũ cache xóa cập nhật lại Hình 18 Phương pháp vô hiêu hóa liệu 15 Hình 19 Phương pháp vô hiêu hóa liệu Hình 20 Phương pháp vô hiêu hóa liệu Phương pháp cập nhật: Cách xử lý phương pháp mô tả sau Sau core thực tính toán biến lưu trả lại kết vào nhớ cache nhớ đồng thời gửi liệu đến cache core khác chúng cập nhật giá trị 16 Hình 21 Phương pháp cập nhật liệu So sánh phương pháp vô hiệu hóa phương pháp cập nhật  Phương pháp cập nhật sử dụng nhiều đường bus liệu, lần cập nhật đưa liệu đến tất core, dễ gây tắc nghẽn bus  Phương pháp vô hiệu hóa nói chung tốt phương pháp cập nhật, gửi thông báo vô hiệu hóa liệu core cần sử dụng đến liệu tự truy cập lại nhớ để đọc liệu cache Ngoài phương pháp có phương pháp khác như: MSI, MESI (Modified, Exclusive, Shared, Invalid) Hệ điều hành chương trình Multicore Các chương trình muốn khai thác tốt kiến trúc Multicore phải chia thành nhiều luồng phải hệ điều hành hỗ trợ Ngày nay, hầu hết hệ điều hành phổ biến hỗ trợ Multicore Trong hệ điều hành, chương trình hệ điều hành cấp phép để sử dụng core Các hệ điều hành dùng khái niệm gọi “Affinity masks” để thực viêc cấp phép cho chương trình Mỗi chương trình có chuỗi bit “Affinity masks” tương ứng với số core CPU Nếu bit “Affinity masks” core có nghĩa chương trình phép sử dụng core đó, ngược lại không cấp phép Ví dụ: máy tính có core Hyper Threading Hệ điều hành sử dụng chuỗi bit để cấp phép cho ứng dụng Trong ví dụ hình 17 22, ứng dụng cấp phép sử dụng core 0, core 2, core 3, core không sử dụng Hình 22 Ví dụ Affinity masks Hyper Threading Nếu máy tính có Hyper Threading hệ điều hành có bit “Affinity masks” để cấp phép sử dụng cho core ảo Trong ví dụ hình 23, ứng dụng cấp phép sử dụng hai core ảo thuộc core 0, core sử dụng core ảo thứ core Hình 23 Ví dụ Affinity masks có Hyper Threading Trên hệ điều hành window, ứng dụng mặc định hệ điều hành cấp phép sử dụng tất core Để thay đổi điều này, ta vào Task Manager, chọn Process set Affinity cho process 18 Hình 24 Set affinity Window Hình 24, minh họa cách set affinity Window Nhưng không nên thay đổi thiết lập hệ điều hành lý cụ thể Trong máy tính sử dụng công nghệ Multicore hệ điều hành đóng vài trò quan trọng, giống người quạn trị hệ thống lên lịch sử dụng nguồn tài nguyên cho nhân viên chương trình ứng dụng Nói tóm lại, để khai thác hết hiệu Multicore ta cần phải có hệ điều hành hỗ trợ tốt công nghệ chương trình viết riêng 19 Kết Luận Qua trính tìm hiểu Multicore, giải pháp tốt để giải toán đa nhiệm Khi mà nhu cầu thực tác vụ song song người dùng ngày tăng nhanh hiệu công nghệ đem lại khẳng định Cho dù chương trình ứng dụng hỗ trợ tốt cho Multicore khó viết so với thông thường Nhưng với ưu điểm vượt trội kể Multicore hứa hẹn xu hướng cộng nghệ phát triển mạnh mẽ tương lai 20 [...]... trong Multicore Có hai phương pháp đơn giản để giải quyết vấn đề này là phương pháp vô hiêu hiệu hóa và phướng pháp cập nhật Chúng ta sẽ lần lượt tìm hiểu hai phương pháp này Phương pháp vô hiệu hóa: Cách xử lý của phương pháp này có thể mô tả như sau Sau khi một core thực hiện tính toán một biến nào đó nó sẽ lưu trả lại kết quả vào bộ nhớ cache của nó và bộ nhớ chính đồng thời gửi thông báo đến cache của. .. của nó và bộ nhớ chính đồng thời gửi dữ liệu đó đến cache của các core khác và chúng sẽ cập nhật giá trị mới này 16 Hình 21 Phương pháp cập nhật dữ liệu So sánh phương pháp vô hiệu hóa và phương pháp cập nhật  Phương pháp cập nhật sử dụng nhiều đường bus dữ liệu, mỗi lần cập nhật nó sẽ đưa dữ liệu đến tất cả các core, như vậy sẽ dễ gây tắc nghẽn bus  Phương pháp vô hiệu hóa nói chung sẽ tốt hơn phương. .. cache của các core khác thông báo dữ liệu đã được cập nhật Dữ liệu cũ trong các cache được xóa đi và sẽ được cập nhật lại Hình 18 Phương pháp vô hiêu hóa dữ liệu 15 Hình 19 Phương pháp vô hiêu hóa dữ liệu Hình 20 Phương pháp vô hiêu hóa dữ liệu Phương pháp cập nhật: Cách xử lý của phương pháp này có thể mô tả như sau Sau khi một core thực hiện tính toán một biến nào đó nó sẽ lưu trả lại kết quả vào bộ... máy tính, thành phần có tốc độ chậm nhất chính là bộ nhớ, đây thường là nguyên nhân chính làm hiệu năng của máy tính giảm Thực ra, tốc độ của bộ nhớ SRAM không phải là quá chậm tuy nhiên giá thành để sản xuất các bộ nhớ nhanh là rất tốn kém vì thế người ta sử dụng phương pháp phân cấp bộ nhớ để giải quyết một phần vấn đề Hình 12 So sánh tốc độ và giá cả các loại bộ nhớ Cơ sở của phương pháp này là các. .. phương pháp cập nhật, nó chỉ gửi thông báo vô hiệu hóa dữ liệu và core nào cần sử dụng đến dữ liệu sẽ tự truy cập lại bộ nhớ để đọc dữ liệu mới về cache của nó Ngoài các phương pháp trên còn có các phương pháp khác như: MSI, MESI (Modified, Exclusive, Shared, Invalid) 4 Hệ điều hành và chương trình trong Multicore Các chương trình muốn khai thác tốt kiến trúc Multicore phải được chia thành nhiều luồng và. .. đổi các thiết lập của hệ điều hành nếu không có một lý do cụ thể Trong các chiếc máy tính sử dụng công nghệ Multicore thì hệ điều hành đóng một vài trò rất quan trọng, nó giống như một người quạn trị hệ thống lên lịch sử dụng các nguồn tài nguyên cho các nhân viên của mình là các chương trình ứng dụng Nói tóm lại, để khai thác được hết hiệu quả Multicore ta cần phải có một hệ điều hành hỗ trợ tốt công. .. hành hỗ trợ tốt công nghệ này và các chương trình được viết riêng 19 5 Kết Luận Qua quá trính tìm hiểu về Multicore, có thể nó rằng đây là một giải pháp tốt để giải quyết bài toán đa nhiệm Khi mà nhu cầu thực hiện các tác vụ song song của người dùng ngày càng tăng nhanh thì hiệu quả của công nghệ này đem lại càng được khẳng định Cho dù các chương trình ứng dụng hỗ trợ tốt cho Multicore là khó viết... phương pháp này là các bộ nhớ gần máy tính có tốc cao và dung lượng nhỏ, các bộ nhớ ở xa hơn có tốc độ chậm hơn và dung lượng lớn hơn Trong đó Cache là thành phần gần với CPU nhất và thường nằm trong CPU Các dữ liệu sẽ được tải vào trong cache trước khi được đưa vào CPU để tính toán 12 Hình 13 Các kiểu kết hợp bộ nhớ trong Multicore Trong Multicore, các core có thể có các bộ nhớ Cache riêng hay chia... và sử dụng Hyper Threading thì máy tính có thể có tối đa 4 luồng chạy đồng thời Trên hệ điều hành window để thấy điều này ta có thể vào Task Manager để kiểm tra Hình 10 Multicore kết hợp với Hyper Threading Hình 11 CPU i5-4200U 2 nhân, 4 luồng 11 Cách kết hợp này cho phép các chiếc CPU có thể chạy với tốc độ đồng hồ thấp hơn nhưng vẫn đạt được hiệu năng cao và giúp giảm điện năng tiêu thụ của máy tính. .. và Core 2 cùng sử dụng x và chúng đọc x vào bộ nhớ cache riêng của chúng Hình 15 Xung đột dữ liệu trong Multicore Core 1 đọc x từ Cache và tính toán, lưu tra lại kết quả x = 21660 vào bộ nhớ Cache của nó và bộ nhớ chính Hình 16 Xung đột dữ liệu trong Multicore Một lúc sau, Core 2 muốn sử dụng đến x, nó đọc x từ Cache của nó nhưng chỉ đọc được kết quả cũ x = 15213 Đến đây, rõ ràng cần phải có giải pháp

Ngày đăng: 07/05/2016, 22:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan