Nhiều giải pháp công nghệ đã được đưa ra như tăng số lệnh đồng thời trong siêu ống lệnh, tăng số luồng thực hiện trên từng lõi, quản lý điện năng thông minh, truy nhập bộ nhớ thông minh,
Trang 1LỜI CẢM ƠN
Trước tiên tôi xin chân thành cám ơn TS Hồ Khánh Lâm, đã luôn tạo điều kiện,
hỗ trợ, hướng dẫn và tận tình chỉ bảo, góp ý và động viên tôi trong suốt thời gian làm luận văn tốt nghiệp này
Đặc biệt tôi xin gửi lời cám ơn sâu sắc tới các thầy giáo, cô giáo đã tham gia giảng dạy lớp Cao Học Điện Tử - Thông tin khóa 2, viện Đại học Mở Hà Nội, những người đã tận tình hướng dẫn truyền đạt kiến thức là nền tảng cho tôi hoàn thành luận văn này
Sau cùng tôi xin dành lời cám ơn cho bạn bè tôi, nhưng người đã quan tâm, hỗ trợ và tạo điều kiện giúp đỡ tôi trong thời gian làm luận văn tốt nghiệp này
Hà Nội, tháng 10 năm 2011
Tác giả
Trang 22
MỤC LỤC
LỜI CẢM ƠN 1
MỞ ĐẦU 6
CHƯƠNG I 8
TỔNG QUAN VỀ VI XỬ LÝ ĐA LÕI VÀ TỔ CHỨC CACHE 8
1.1.Khái niệm về vi xử lý đa lõi 8
1.1.1.Chip vi xử lý đơn lõi truyền thống 8
1.1.2.Đa xử lý CMP(Chip Multi Processor) 10
1.1.3.Tính toán song song HMT 12
1.1.4.Vi xử lý đa lõi (Multicore) 16
1.1.5.Các ứng dụng của Multicore 19
1.2 Bộ nhớ trong vi xử lý đa lõi 21
1.2.1.Tổ chức bộ nhớ của vi xử lý đa lõi 21
1.2.2 Nguyên tắc và cách tổ chức Cache trong vi xử lý 23
1.2.3.Đảm bảo sự thống nhất nội dung của cache (cache coherence) 25
1.3 Một số kiến trúc vi xử lý đa lõi 29
1.3.1.Vi xử lý Dual core của AMD 29
1.3.2 UltraSPARC T1 30
1.3.3.UltraSPARC T2 31
1.3.4.Intel core 2 i7 (Nehalem) 31
CHƯƠNG II 33
MÔ HÌNH HÓA VI XỬ LÝ ĐA LÕI 33
2.1.Mạng xếp hàng đóng nhiều lớp công việc 33
2.1.1 Mô hình xếp hàng 33
2.1.3.Vi xử lý và công việc trong hệ thống 37
2.2.Mạng có nghiệm dạng tích xác suất (PFQN) 38
2.2.1.Mạng PFQN Jackson 39
Trang 32.2.2.Mạng PFQN Gordon Newell 39
2.2.3.Mạng PFQN BCMP 40
2.2.4.Vi xử lý là mạng xếp hàng đóng nhiều lớp công việc có nghiệm tích xác suất (MCPFQN) 41
CHƯƠNG III 43
THUẬT TOÁN TÍNH HIỆU NĂNG CỦA VI XỬ LÝ ĐA LÕI 43
3.1.Thuật toán phân tích giá trị trung bình 43
3.2.Thuật toán cuộn 49
CHƯƠNG IV 53
ĐỀ XUẤT GIẢI PHÁP MÔ HÌNH HÓA VÀ PHÂN TÍCH HIỆU NĂNG CỦA VI XỬ LÝ ĐA LÕI 53
4.1.Các mô hình đề xuất 53
4.2 Sử dụng thuật toán Cuộn để tính toán hiệu năng cho vi xử lý đa lõi 55
4.2.1.Các thông số cho mô hình 57
4.2.2.Tình hàm Fi(Si) 57
4.2.3.Tính hằng số bình thường hóa 59
4.2.4.Tính các xác suất biên 60
4.2.5 Số lượng trung bình lệnh, luồng lệnh tại các nút 61
4.2.6.Tính tốc độ các lệnh rời khỏi từng nút 62
4.2.7.Tính mức độ sử dụng của các nút 62
4.3 Thuật toán MVA và công cụ WinPepsy đánh giá hiệu năng vi xử lý đa lõi với các tổ chức cache 63
4.3.1.Mô hình vi xử lý hai lõi có cache L2 độc lập 63
4.3.2 Mô hình vi xử lý hai lõi sử dụng cache L2 chia sẻ 67
4.3.3 Đánh giá, so sánh hai bộ vi xử lý 70
KẾT LUẬN 72
Trang 44
DANH MỤC HÌNH VẼ
Hình 1.1:Sơ đồ tổng quát của vi xử lý đơn lõi cổ điển 8
Hình 1.2:Tốc độ và giá thành của các lớp bộ nhớ 9
Hình 1.3: Đa xử lý MIMD UMA và MIMD NUMA 11
Hình 1.4: Các mô hình đa luồng 15
Hình 1.5: Đa lõi là kết hợp đa xử lý và tính toán song song 17
Hình 1.6: Vi xử lý 2 lõi và 4 lõi 18
Hình 1.7: Vi xử lý Nehalem 8 core của Intel 18
Hình 1.8: Database ser và Web server 20
Hình 1.9: Chip đa lõi có L2 chia sẻ và không chia sẻ 22
Hình 1.10: Chip Intel core i7 cache L2, L3 chia sẻ 22
Hình 1.11: Biểu diễn thuật toán FIFO với cache 4 dòng (10 lần thay thế) 23
Hình 1.12: Biểu diễn thuật toán OPT với cache 4 dòng (6 lần thay thế) 24
Hình 1.13: Biểu diễn thuật toán LRU với cache 4 dòng (8 lần thay thế) 25
Hình 1.14: Biểu diễn thuật toán LFU với cache 4 dòng (8 lần thay thế) 25
Hình 1.15 : Sự không nhất (a), thống nhất bằng MESI (b) và MOESI (c) 28
Hình 1.16: Kiến trúc vi xử lý 2 lõi của AMD 29
Hình 1.17: UltraSPARC T1 30
Hình 1.18: Sun T5120 Eight Cores x Eight Threads 31
Hình 1.19: Kiến trúc Nehalem 8 lõi với cache L1, L2, L3 của Intel 32
Hình 2.1: Hàng chờ M/M/1 34
Hình 2.2: Hàng chờ M/M/1/K 34
Hình 2.3: Hàng chờ M/M/m 35
Hình 2.4: Mạng xếp hàng mở 36
Trang 5Hình 2.5: Mạng xếp hàng đóng 36
Hình 4.1: Vi xử lý 2 lõi với cache L2 chia sẻ 53
Hình 4.2: Mô hình vi xử lý 2 lõi cache L2 độc lập 54
Hình 4.3: Mô hình vi xử lý đa lõi dùng chung cache L2 54
Hình 4.4: Mô hình vi xử lý đa lõi với cache L2 độc lập nhưng chia sẻ L3 54
Hình 4.5: Mô hình bộ vi xử lý lõi kép có L2 độc lập 55
Hình 4.6: Mô hình tính toán 56
Hình 4.7: WinPepsy mô phỏng mức độ sử dụng của các nút 64
Hình 4.8: Kết quả tính toán mức độ sử dụng của các nút 64
Hình 4.9: WinPepsy mô phỏng thông lượng của các nút 65
Hình 4.10: Kết quả tính toán thông lượng của các nút 65
Hình 4.11: WinPepsy mô phỏng thời gian đáp ứng của các nút 66
Hình 4.12: Kết quả tính toán thời gian đáp ứng của các nút 66
Hình 4.13: Mô hình bộ vi xử lý lõi kép có cache L2 chia sẻ 67
Hình 4.14: WinPepsy mô phỏng mức độ sử dụng của các nút 68
Hình 4.15: Kết quả tính toán mức độ sử dụng của các nút 68
Hình 4.16: WinPepsy mô phỏng thông lượng của các nút 69
Hình 4.17: Kết quả tính toán thông lượng của các nút 69
Hình 4.18: WinPepsy mô phỏng thời gian đáp ứng của các nút 70
Hình 4.19: Kết quả tính toán thời gian đáp ứng của các nút 70
Trang 6có thể cho phép kết nối đến hàng trăm nghìn chip vi xử lý, nhưng lại tiêu tốn nhiều điện năng và công suất tỏa nhiệt rất lớn Trong khi đó, nhu cầu dân dụng đòi hỏi tiêu thụ điện năng thấp, hiệu năng xử lý của hệ thống máy tính phải cao, nhưng giá phải rẻ Kiến trúc vi xử lý đa lõi đáp ứng được nhu cầu này Từ các chip vi xử lý Pentium D của Intel với hai lõi trên CPU đóng vỏ trong một chip, các nhà chế tạo như Intel, Sun, Hp, AMD đã có những phát triển nhanh chóng về công nghệ của kiến trúc vi xử lý đa lõi Nhiều giải pháp công nghệ đã được đưa ra như tăng số lệnh đồng thời trong siêu ống lệnh, tăng số luồng thực hiện trên từng lõi, quản lý điện năng thông minh, truy nhập bộ nhớ thông minh, bổ xung các tập lệnh đa phương tiên (MMX, SSE2, SSE3, SSSE3, SSE4), hỗ trợ tập lệnh 64-bit, thay thể bus FSB bằng QPI (QuickPath Interconnect) tốc độ đạt đến 12,8GB/s (kiến trúc Nehalem – core i), cho phép năng cao tốc độ xử lý của CPU lên nhiều lần, đồng thời giảm đáng
kể điện năng tiêu thụ (10W ở các chip core 2 Duo) và công suất tỏa nhiệt (TDP) chỉ 17W Hiệu năng của vi xử lý đa lõi lại phụ thuộc rất nhiều vào công nghệ bộ nhớ cache, tổ chức cache, dung lượng của cache và của từng dòng cache (khối chứa dữ liệu), số cấp cache (L1, L2, hay L3), nguyên tắc thay thế cache, và cấu trúc mạng kết nối bên trong giữa các cấp cache Xu thế phát triển của công nghệ vi xử lý đa lõi
là tiếp tục tăng số lượng lõi CPU trên một chip, nhưng cũng gia tăng tính phức tạp của tổ chức cache, số cấp cache, cấu trúc mạng kết nối các cache Do đó, nghiên cứu các kiến trúc tối ưu của các vi xử lý đa lõi là vấn đề được nhiều nghiên cứu hiện nay trên thế giới tiến hành Phân tích đánh gía hiệu năng của các kiến trúc vi xử lý
đa lõi cũng là một vấn đề cần thiết
Trang 7II MỤC TIÊU NGHIÊN CỨU CỦA LUẬN VĂN:
Mục tiêu chính của luận văn là tìm hiểu, nghiên cứu về công nghệ vi xử lý
đa lõi cùng với các tổ chức cache khác nhau, tìm hiểu một số công cụ mô phỏng và đánh giá hiệu năng hiện nay có thể áp dụng cho các kiến trúc vi xử lý đa lõi
III NHIỆM VỤ CỦA LUẬN VĂN
Trình bày các kiến trúc phổ biến của vi xử lý đa lõi hiện nay, hệ thống nhớ với các tổ chức cache của vi xử lý đa lõi, các nguyên tắc thay thế dòng cache, vấn đề đảm bảo tính đồng nhất nội dung trong cache, mạng xếp hàng và ứng dụng cho mô hình hóa và phân tích hiệu năng của các hệ thống, đề xuất các mô hình của hệ thống
vi xử lý đa lõi với các tổ chức cache, ứng dụng các thuật toán cuộn (convolution algorithm) và giá trị trung bình MVA của lý thuyết mạng xếp hàng và công cụ phần mềm mô phỏng để tính toán hiệu năng cho các mô hình kiến trúc vi xử lý đa lõi được đề xuất Đánh giá kết luận và đề xuất hướng nghiên cứu
IV BỐ CỤC CỦA LUẬN VĂN
Luận văn gồm bốn chương như sau:
Chương 1: Tổng quan về vi xử lý và các tổ chức cache
Chương 2: Mô hình hóa vi xử lý đa lõi
Chương 3: Thuật toán tính toán hiệu năng của vi xử lý đa lõi
Chương 4: Đề suất mô hình hóa và phân tích hiệu năng của vi xử lý đa lõi
Trang 88
CHƯƠNG I TỔNG QUAN VỀ VI XỬ LÝ ĐA LÕI VÀ TỔ CHỨC CACHE
1.1.Khái niệm về vi xử lý đa lõi
1.1.1.Chip vi xử lý đơn lõi truyền thống
Kỹ thuật vi xử lý gắn liền với sự phát triển của công nghệ máy tính CPU của một hệ thống máy tính hiện nay có thể gồm nhiều chip vi xử lý (hệ thống đa xử lý)
và chỉ gồm một chip vi xử lý đơn lõi hay đa lõi
Cấu trúc của một vi xử lý đơn lõi cổ điển gồm có các thanh ghi, ALU, CU, bus
dữ liệu bên trong, giao tiếp với bus bên ngoài… (hình 1.1)
Hình 1.1:Sơ đồ tổng quát của vi xử lý đơn lõi cổ điển
Cùng với sự phát triển của công nghệ mạch tích hợp, các chip vi xử lý đơn lõi đã
có những bước tiến dài trong công nghệ chế tạo, từ kiến trúc tập lệnh x86 bit đến X86 64-bit, từ đơn luồng đến đa luồng, từ đường ống lệnh đơn giản với siêu đường ống, từ không có cache bên trong chip đến có hệ thống nhớ phân cấp với hai
8/16/32-ba cấp cache (L1, L2 và L3), từ không có đến có điều khiển nguồn để tiết kiệm điện năng, từ không có khả năng đến có khả năng kết nối nhiều chip vi xử lý với nhau để tạo ra CPU đa xử lý, từ tập lệnh phức tạp (CISC) đến có các tập lệnh giảm thiểu
Trang 9(RISC) Một trong những tiến bộ quan trọng của cụng nghệ vi xử lý đơn lừi là cú
sự phõn cấp hệ thống bus do sự khỏc biệt về cụng nghệ và tốc độ xử lý của cỏc thành phần thiết bị trong hệ thống vi xử lý Sự phõn cấp hệ thống bus đảm bảo dễ dàng đồng bộ cỏc giao dịch truyền thụng giữa cỏc thành phần thiết bị, dễ dàng nõng cấp cụng nghệ thiết bị, dễ dàng tiờu chuẩn húa và phối ghộp cỏc thiết bị Cựng với
sự phõn chia hệ thống bus, hệ thống nhớ của hệ thống mỏy tớnh cũng được phõn chia thành nhiều cấp như cho ở hỡnh 1.2 Phân cấp hệ thống nhớ là nhóm các thiết
bị nhớ thành từng cấp theo tốc độ, dung lượng, và kiểu kết nối sao cho chúng đảm bảo sự truy nhập của chương trình đến các khoản (lệnh, dữ liệu) được thực hiện nhanh nhất
Hỡnh 1.2:Tốc độ và giỏ thành của cỏc lớp bộ nhớ
Trờn đỉnh hỡnh kim tự thỏp là cấp nhớ L0: cỏc thanh ghi (registers) bờn trong chip vi xử lý Chỳng cú thời gian truy nhập nhanh nhất (1ns – 2ns), nhưng dung lượng nhỏ nhất Đỏy kim tự thỏp là cỏc thiết bị nhớ trờn cỏc hệ đĩa cứng, đĩa quang, băng từ, và thường nằm trờn cỏc hệ thống mỏy tớnh lưu trữ cơ sở dữ liệu trờn mụi trường mạng LAN Chỳng cú thời gian truy nhập chậm nhưng dung lượng lớn Hệ
Trang 10Tuy nhiên hạn chế lớn nhất của các chip vi xử lý đơn lõi vẫn là mức độ xử lý song song thấp, giá thành cao, cồng kềnh lại tiêu thụ điện năng lớn, công suất tỏa nhiệt cao nên cần phải có hệ thống làm mát tốt
Sự cần thiết để đạt được hiệu suất cao hơn đã trở thành một mối quan tâm quan lớn với cho nhiều tổ chức CNTT Công nghệ phát triển không ngừng, các bộ vi xử
lý đa lõi cùng với những tiến bộ trong bộ nhớ đã cung cấp một nền tảng cân bằng cho hiệu suất và khả năng mở rộng cần thiết cho sự tăng trưởng bền vững của các thế hệ máy tính trong tương lai
1.1.2.Đa xử lý CMP(Chip Multi Processor)
• SIMD (Single Instrucstion stream, Multiple Data stream)
Các máy SIMD có một số lớn các bộ xử lý giống nhau, các bộ vi xử lý này cùng thực hiện một lệnh giống nhau để xử lý nhiều dòng dữ liệu khác nhau Mỗi bộ
xử lý có bộ nhớ dữ liệu riêng, nhưng chỉ có chung một bộ nhớ lệnh và một bộ xử lý điều khiển, bộ nhớ này đọc và thi hành các lệnh Tính song song trong các máy SIMD là tính song song của các dữ liệu Nó chỉ có hiệu quả nếu cấu trúc các dữ liệu
dễ dàng thích ứng với cấu trúc vật lý của các bộ xử lý thành viên Các bộ xử lý
véc-tơ và mảng thuộc loại máy tính này SIMD thường được sử dụng để giải các bài toán dự báo thời tiết như tính nhiệt độ trung bình hàng ngày trong suốt 24 giờ của nhiều địa điểm, khi đó công việc tính toán là như nhau nhưng tập dữ liệu lại hoàn toàn khác nhau…
• MIMD (Multiple Instruction Stream, Multiple Data Stream)
Một hệ thống MIMD là một hệ thống nhiều bộ xử lý và nhiều bộ nhớ, trong đó mỗi bộ xử lý có một đơn vị xử lý riêng và thực hiện chương trình
Trang 11riêng Các máy MIMD xử lý phân tán thông qua một số các bộ xử lý độc lập, chia sẻ tài nguyên chứa trong hệ thống bộ nhớ chính, mỗi bộ xử lý thực hiện độc lập, đồng thời và thực hiện các chương trình riêng Các hệ thống MIMD thực hiện các phép toán theo dạng song song không đồng bộ, các nút hoạt động hợp tác chặt chẽ nhưng thực hiện độc lập Ví dụ trong hệ thống phục vụ đặt chỗ máy bay, việc đặt chỗ xảy ra thường xuyên, liên tục và đồng thời, mỗi cuộc đặt chỗ cần một chương trình để thực hiện, các chương trình này không bắt đầu song song từng lệnh một, do đó chúng ta có nhiều dòng chảy lệnh và nhiều dòng chảy dữ liệu
Hình 1.3: Đa xử lý MIMD UMA và MIMD NUMA Những máy tính MIMD gồm các bộ kết nối chặt và các bộ kết nối rời tùy thuộc vào cách thức mà các bộ xử lí truy cập vào bộ nhớ của các bộ xử lý khác Những bộ xử lý kết nối chặt được chia sẻ từ một hệ thống bộ nhớ chung được hiểu
là hệ thống bộ nhớ chia sẻ (shared memory) Hình 1.3 chỉ ra cấu trúc của một hệ thống chia xẻ bộ nhớ MIMD trong đó bất kỳ bộ xử lý N nào cũng có thể truy cập đến bộ nhớ M nào thông qua mạng kết nối Một hệ thống MIMD chia xẻ bộ nhớ còn được gọi là một hệ thống truy cập bộ nhớ đều (UMA)
Đối với hệ thống MIMD kết nối rời mỗi bộ xử lý có một bộ nhớ riêng được hiểu như hệ thống truyền thông điệp Những máy tính truyền thông điệp gởi đến nhiều máy tính trong đó mỗi bộ xử lý có bộ nhớ riêng của nó và chỉ truy cập đến bộ
xử lý đó Kiến trúc truyền thông điệp MIMD được hiểu như bộ nhớ phân tán (NUMA)
Trang 1212
1.1.3.Tính toán song song HMT
Tính toán song song (There are many threads per core) là một dạng tính toán trong đó có nhiều lệnh được thực hiện đồng thời Tính toán song song được vận hành trên nguyên tắc chia bài toán lớn thành các phần nhỏ sao cho những phần nhỏ này có thể thực hiện song song Tính toán song song dùng cho tính toán hiệu năng cao và là đặc điểm quan trọng trong máy tính, đặc biệt là các máy tính đa lõi
Có nhiều dạng tính toán song song như song song dữ liệu, song song mức lệnh, song song nhiệm vụ,…
• Song song mức lệnh Instruction Levsl Parallism (ILP)
ILP được xác định như là một kỹ thuật đồng thời gọi ra và xử lý nhiều lệnh bên trong một chip vi xử lý Trong hệ thống đồng thời có n lệnh được gọi ra trong một chu kỳ của CPU và cũng nhận được n kết quả trong một chu kỳ Kỹ thuật này làm tăng tốc độ của hệ thống nhờ thực hiện tính toán song song các số nguyên và số dấu phẩy động
Trong các máy tính sử dụng kiến trúc đường ống, siêu vô hướng, máy tính vectơ, máy tính VLIW, người ta đã dùng tính thực hiện song song các lệnh ở các mức độ khác nhau để làm tăng hiệu quả của chúng Giới hạn về khả năng tính toán của loại các loại máy trên cùng với sự phát triển của công nghệ máy tính khiến người ta nghĩ tới giải pháp song song theo đó người ta tăng cường hiệu quả của máy tính bằng cách tăng số lượng bộ xử lý
• Song song mức luồng Task Level Parallism (TLP)
Một luồng thường được gọi là một đơn vị cơ bản của việc sử dụng CPU, một luồng được hình thành bởi một định danh (thread ID), một bộ đếm chương trình, tập thanh ghi và ngăn xếp Một luồng chia sẻ với các luồng khác thuộc cùng một quá trình hành động (code), phần dữ liệu, và tài nguyên hệ điều hành như các tập tin đang mở Một quá trình truyền thống chỉ có một luồng điều khiển đơn Nếu quá trình có nhiều luồng điều khiển, nó có thể thực hiện nhiều hơn một nhiệm vụ tại một thời điểm
Trang 13Nhiều gói phần mềm chạy trên các máy để bàn là đa luồng Ví dụ một trình duyệt Web có thể có một luồng hiển thị hình ảnh và văn bản trong khi một luồng khác lấy dữ liệu từ mạng Hay một trình soạn thảo văn bản có thể có một luồng hiển thị đồ họa, luồng thứ hai đọc sự ấn phím trên bàn phím, một luồng thứ ba thực hiện việc kiểm tra chính tả và từ vựng…Trong những trường hợp cụ thể một ứng dụng đơn có thể được yêu cầu thực hiện nhiều nhiệm vụ đơn (task) Ví dụ, một trình phục
vụ web chấp nhận các yêu cầu khách hàng như trang web, hình ảnh, âm thanh, Một trình phục vụ web có thể có hàng trăm khách hàng truy xuất đồng thời tới nó Nếu trình phục vụ web chạy như một quá trình đơn luồng truyền thống thì nó chỉ có thể chỉ phục vụ một khách hàng tại cùng thời điểm mà thôi Lượng thời gian mà khách hàng phải chờ được phục vụ là rất lớn
Giải pháp là sử dụng một trình phục vụ chạy như một quá trình đơn chấp nhận tất cả các yêu cầu, nó sẽ tạo một quá trình riêng để phục vụ yêu cầu đó Việc tạo ra quá trình này là cách sử dụng thông thường khi luồng chưa phổ biến Hơn nữa tạo
ra quá trình có ảnh hưởng rất lớn đến hệ thống và nếu quá trình mới thực hiện cùng task như quá trình đã có thì nó vẫn phải gánh chịu tất cả chi phí trước đó!!! Sẽ hiệu quả hơn cho một quá trình chứa nhiều luồng phục vụ cùng một mục đích Tiếp cận này sẽ đa luồng quá trình trình phục vụ web Trình phục vụ sẽ tạo một luồng riêng
để lắng nghe các yêu cầu người dùng và khi yêu cầu được thực hiện nó không tạo ra quá trình mới mà sẽ tạo một luồng khác để phục vụ yêu cầu Điều này cho phép phục vụ nhiều yêu cầu đồng hành
• Đặc điểm của tính toán song song mức luồng
Sự đáp ứng: Song song mức luồng cho phép một chương trình tiếp tục chạy
thậm chí nếu một phần của nó bị khóa hay đang thực hiện một thao tác dài, do đó gia tăng sự đáp ứng đối với người dùng Thí dụ, một trình duyệt web vẫn có thể đáp ứng người dùng bằng một luồng trong khi một ảnh đang được nạp bằng một luồng khác
Sự chia sẻ tài nguyên: Mặc định, các luồng chia sẻ bộ nhớ và các tài nguyên của
các quá trình thuộc về chúng Thuận lợi của việc chia sẻ là cho phép một ứng dụng
Trang 1414
Về Kinh tế: Cấp phát bộ nhớ và các tài nguyên cho việc tạo các quá trình là rất
đắt Vì các luồng chia sẻ tài nguyên của quá trình thuộc về chúng nên nó kinh tế hơn để tạo và chuyển ngữ cảnh giữa các luồng
Sử dụng kiến trúc đa xử lý: Các lợi điểm của đa luồng có thể phát huy trong kiến
trúc đa xử lý, ở đó mỗi luồng thực thi song song trên một bộ xử lý khác nhau Một quá trình đơn luồng chỉ có thể chạy trên một CPU Đa luồng trên một máy nhiều CPU gia tăng tính đồng hành Trong kiến trúc đơn xử lý, CPU thường chuyển đổi qua lại giữa mỗi luồng thật nhanh để tạo ra hình ảnh của sự song song nhưng trong thực tế chỉ một luồng đang chạy tại một thời điểm
• Một số mô hình đa luồng (hình 1.4)
Mô hình nhiều-một: Ánh xạ nhiều luồng cấp người dùng tới một luồng cấp nhân Vì chỉ một luồng có thể truy xuất nhân tại một thời điểm nên nhiều luồng không thể chạy song song trên nhiều bộ xử lý
Mô hình một-một: Mô hình một-một ánh xạ mỗi luồng người dùng tới một luồng nhân Nó cung cấp khả năng đồng hành tốt hơn mô hình nhiều-một bằng cách cho một luồng khác chạy khi một luồng thực hiện lời gọi hệ thống bị nghẽn, nó cũng cho phép nhiều luồng chạy song song trên các bộ xử lý khác nhau Chỉ có một trở ngại trong mô hình này là tạo luồng người dùng yêu cầu tạo một luồng nhân tương ứng
Mô hình nhiều-nhiều: là mô hình đa hợp nhiều luồng cấp người dùng tới số lượng nhỏ hơn hay bằng các luồng nhân Số lượng các luồng nhân có thể được xác định bởi một ứng dụng cụ thể hay một máy cụ thể (một ứng dụng có thể được cấp nhiều luồng nhân trên một bộ đa xử lý hơn là trên một bộ đơn xử lý) Khi người dùng phát triển tạo nhiều luồng người dùng như họ muốn, thì đồng hành thật sự là không đạt được vì nhân có thể lập thời biểu chỉ một luồng tại một thời điểm
Trang 15Hình 1.4: Các mô hình đa luồng
• Kỹ thuật đa luồng đồng thời (SMT)
Kỹ thuật SMT (Simultaneous Multi-Threading) là tên của Intel đặt cho công nghệ Hyper Threading Kỹ thuật này cho phép một vi xử lý có thể thực sự xử lý song song các thread do các ứng dụng (phần mềm) tạo ra, bằng cách trang bị thêm một số thành phần của vi xử lý, khiến hệ điều hành nghĩ rằng nó đang làm việc với nhiều vi xử lý Hệ điều hành sẽ sắp xếp để nhiều thread được gửi đến các bộ xử lý
“ảo” đó
Về mặt lý thuyết, một vi xử lý khi xử lý song song được bao nhiêu thread cũng không thể tăng tốc độ xử lý chúng lên được (do tính tuần tự) Nhưng trong thực tế, không phải bất kỳ lúc nào mọi thành phần của vi xử lý cũng được sử dụng đến, những thành phần không được sử dụng này có thể dùng để xử lý thread thứ hai, thứ
ba hoặc thứ tư Trong kỹ thuật SMT, mỗi CPU logic sở hữu một tập các thanh ghi riêng kể cả thanh ghi bộ đếm chương trình PC CPU vật lý sẽ luân phiên các giai đoạn tìm/giải mã giữa hai CPU logic và cố gắng thực thi những thao tác từ hai chuỗi lệnh đồng thời theo cách hướng tới những đơn vị thực thi ít được sử dụng
Kỹ thuật SMT cho phép các phần mềm ứng dụng được viết cho những máy chủ
đa luồng có thể thực hiện các chỉ thị song song đồng thời trên mỗi bộ xử lý riêng, bằng cách này sẽ cải thiện tức thì tốc độ giao dịch cũng như thời gian đáp ứng và các yêu cầu đặc thù khác của phần mềm nghiệp vụ và thương mại điện tử Công nghệ này tương thích với các phần mềm ứng dụng và hệ điều hành sẵn có trên các máy chủ, nó cho phép hỗ trợ nhiều người dùng và tăng khối lượng công việc được
xử lý trên một máy chủ Với các máy trạm cao cấp, công nghệ siêu phân luồng cũng
sẽ tăng đáng kể tốc độ các phần mềm ứng dụng đòi hỏi năng lực tính toán cao, ví dụ
Trang 1616
1.1.4.Vi xử lý đa lõi (Multicore)
Tốc độ xử lý là vấn đề đầu tiên các nhà khoa học luôn trăn trở Họ luôn muốn cải tiến tốc độ cho hệ thống Trải qua rất nhiều thế hệ tốc độ đã tăng một cách chóng mặt, từ 4.77MHz của vi xử lý i8086, rồi đến 100MHz của vi xử lý i80486, tiếp theo là 1.7MHz của vi xử lý Pentium IV,…Song song với nâng cao tốc độ là sự tăng dần khả năng xử lý dữ lý dữ liệu của vi xử lý (thông lượng) Khả năng xử lý dữ liệu đã tăng từ 4 bit ban đầu cho đến hiện nay là 32bit, 64bit,…Cùng với việc nâng cao tốc độ và tăng thông lượng thì giải pháp hỗ trợ đa xử lý cũng được đưa vào (tích hợp đồng xử lý toán vào cùng chip với CPU) Cho đến những năm cuối thế kỷ 20 các bộ vi xử lý đã đạt được thành quả thật đáng ghi nhận đó là sự lần lượt đưa thêm vào CPU một số đơn vị có chức năng điều khiển và quản lý như: đơn vị giao tiếp bus (BIU), khối tiền đọc lệnh (PUIQ), đơn vị đơn vị dấu phẩy động (FPU), đơn vị quản lý bộ nhớ (MMU), bộ nhớ tra cứu nhanh (TLB),…
Đồng hành và đáp ứng cùng với các phương pháp cải tiến hiệu năng, không thể không nhắc đến vấn đề cốt lõi đó là việc thay đổi kiến trúc Các kiến trúc mới lần lượt được đưa ra nhằm hoàn thiện một hệ thống máy tính công nghệ cao Kiến trúc CISC là nền tảng cho mọi thế hệ vi xử lý, tiếp theo là kiến trúc RISC dành cho các tập lệnh đơn giản, kiến trúc đường ống (Pipeline), sau nữa là kiến trúc siêu vô hướng, kiến trúc đa luồng (Hyper Threading)…
Mục tiêu của ngành Công nghệ thông tin là tạo ra các thế hệ máy mới ưu việt và cạnh tranh Hướng phát triển của mỗi nhà sản xuất khác nhau nhưng đều nhằm tới cái đích sau cùng là: Chất lượng cao, giá thành hạ Từ hàng loạt các phương pháp đưa ra ở trên, vấn đề chất lượng có vẻ như đã đạt được thành tựu đáng kể, nhưng giá thành thì gần như là không vì với một bộ vi xử lý tốc độ từ 2GHz trở lên với do mật độ transitor lớn việc sản xuất là rất phức tạp Mặt khác là hệ thống này khi hoạt động tiêu thụ điện năng lớn, tiếng ồn cao Một vấn đề nữa cũng không nhỏ đó là tại thời điểm này sự bùng nổ của các sản phầm mềm được lập trình song song, điều tất nhiên hệ thống này sẽ đáp ứng thật khó khăn
Để giải quyết vấn đề này phương pháp mới được đưa ra là thiết kế các bộ vi xử
lý đa lõi, còn được hiểu là tích hợp hai hay nhiều CPU trong một chip Chip vi xử lý
đa lõi thật sự là bước đột phá của ngành công nghệ thông tin đầu thế kỷ 21 Máy
Trang 17tính đa lõi khắc phục được nhược điểm của các bộ vi xử lý đơn lõi trước đó vì việc thiết kê các chip đơn với tốc độ khoảng trên dưới 2GHz tương đối đơn giản và không đòi hỏi sự đầu tư về công nghệ mới Các máy tính đa lõi tiêu thụ điện năng thấp hơn, tiếng ồn cũng giảm Điều quan trọng nhất là vi xử lý đa lõi đáp ứng kịp thời đòi hỏi của các phần mềm tính toán song song như các chương trình chơi Game, hoặc các dịch vụ Multimedia…Máy tính đa lõi là công nghệ kết hợp giữa đa
xử lý và kỹ thuật tính toán song song (hình 1.5)
Hình 1.5: Đa lõi là kết hợp đa xử lý và tính toán song song
• Một số mô hình Multicore
Trong các bộ vi xử lý đa lõi, cấu trúc bên trong tương đối giống nhau Sự khác biệt là ở số lượng lõi và đặc biệt là các cấu trúc cache có thay đổi khá nhiều nhất là Cache L2 Với các vi xử lý lõi kép được xây dựng trên nền kiến trúc của Pentium D
và AMD thì mỗi lõi đều có Cache L2 riêng (hình 1.6) Chính vì vậy mỗi lõi sẽ làm việc như nó đang làm việc cho một CPU độc lập Với Cache riêng thì tại một thời điểm nào đó một lõi có thể phải chạy quá tải trong khi đó lõi kia lại không được sử dụng hoặc sử dụng không hết hiệu suất Khi đó lõi chạy quá tải sẽ phải lấy dữ liệu
từ bộ nhớ chính trong khi không gian trên Cache L2 kia hoàn toàn trống mà lẽ ra được sử dụng để lưu dữ liệu, điều này làm giảm hiệu suất của toàn hệ thống Trước khi mỗi lõi truy xuất bản sao của dữ liệu trên Cache L2 của mình, để đảm bảo đó là bản sao mới nhất của dữ liệu Điều này tương đối phức tạp vì dữ liệu có thể đã được
Trang 18M, Cache L2 được hai lõi dùng chung (hình 1.6) Kiến trúc chia sẻ Cache L2 cho hiệu suất thực thi tốt hơn Cache L2 chia sẻ cho phép tự động điều chỉnh dung lượng Cache L2 cho từng lõi tùy vào tần suất truy xuất Cache L2 của từng lõi Với phương pháp mới này, bộ vi xử lý Core 2 Duo với Cache nhớ L2 4MB, thì một lõi
có thể sử dụng đến 3,5MB trong khi đó lõi còn lại sử dụng 0,5MB, hoàn toàn tương phản với các CPU đa nhân sử dụng cache L2 riêng Một điểm mạnh khác khi chia
sẻ bộ nhớ Cache L2 là giảm tải cho bộ nhớ và bus hệ thống vì không phải update lại
dữ liệu cho mỗi lần truy nhập
Vi xử lý 4 lõi của Intel như Core 2 Extreme QX và Core 2 Quad sử dụng 2 chíp
2 lõi, việc chia sẻ chỉ xuất hiện giữa các lõi 1 và 2, 3 và 4 (hình 1.6) Hiện nay, Intel
đã cho ra đời các CPU quad-core sử dụng một chíp đơn (một chip có 4 core dùng chung cache L2) Với phương pháp này, Cache L2 sẽ được chia sẻ giữa bốn lõi Hiện nay các bộ vi xử lý 2 lõi, 4 lõi, 8 lõi sử dụng cache L3 chia sẻ không còn
là mới mẻ ví dụ như vi xử lý AMD xây dựng trên kiến trúc K10, đặc biệt là vi xử lý Intel kiến trúc, Nehalem (hình 1.7) Kích thước của Cache L3 này sẽ phụ thuộc vào
mô hình của từng CPU cụ thể
Hình 1.7: Vi xử lý Nehalem 8 core của Intel
Trang 19• Multicore và SMT
Theo sự phát triển, các phần mềm ứng dụng viết cho những máy chủ đa luồng hay các hệ điều hành mới yêu cầu tốc độ mà mỗi vi xử lý thực hiện các lệnh ngày càng cao, tăng tốc độ xung nhịp với các CPU là phương pháp chủ yếu người ta đưa ngày càng nhiều mạch bán dẫn vào một bộ chip, điều này sẽ khiến cho CPU phát sinh nhiều nhiệt và một số thí nghiệm đã cho thấy CPU sẽ không còn hoạt động hiệu quả nữa
Công nghệ đa lõi sẽ giải quyết vấn đề trên, nó cho phép một bộ xử lý có thể chứa 2 lõi hoặc nhiều hơn Các lõi này sẽ hoạt động song song với nhau, chia sẻ công việc tính toán xử lý mà bộ xử lý phải đảm nhận, nó có thể thực hiện 4 luồng, thậm chí 8 luồng song song Việc có hai lõi hoặc nhiều hơn giúp bộ xử lý hoạt động hiệu quả và có công suất cao hơn mà không cần phải tăng xung nhịp, vì mỗi lõi sẽ
xử lý ít ứng dụng hơn, giảm hiện tượng bộ xử lý phải cùng một lúc gánh vác công việc của nhiều ứng dụng
1.1.5.Các ứng dụng của Multicore
• Database server
Database server (hình 1.8) là dịch vụ kết nối trực tiếp đến máy chủ chứa cơ
sở dữ liệu Server là một máy chủ mà trên đó có cài đặt phần mềm Hệ quản trị Cơ
sở dữ liệu (HQTCSDL) Chúng ta có một số HQTCSDL chẳng hạn như: SQL Server, MySQL, Oracle… dịch vụ Database server hoàn toàn đạt hiệu quả nếu hệ thống được thiết kê có bộ nhớ được chia sẻ kiểu kiến trúc MIMD UMA
• Web server
Web server (hình 1.8) là dịch vụ mà một máy tính (máy chủ) trên đó cài đặt phần mềm phục vụ Web, đôi khi người ta cũng gọi chính phần mềm đó là Web Server Tất cả các Web Server đều hiểu và chạy được các file *.htm và *.html, Dịch vụ Web Server sử dụng hệ thống bộ nhớ không chia sẻ MIMD NUMA
Trang 20Multimedia có nhiều loại như: radio, vô tuyến, quảng cáo, phim ảnh, trò chơi điện tử, thương mại điện tử… Multimedia là sự kết hợp của các kỹ thuật xử lý
âm thanh, hình ảnh…[7] Máy tính là một trong số các thiết bị hỗ trợ đắc lực cho Multimedia đặc biệt là máy tính đa lõi bởi khả năng xử lý song song của nó đối với các phần mềm Multimedia được lập trình song song
• CAD/CAM
CAD là Các phần mềm thiết kế và các phần mềm vẽ có sự trợ giúp của máy tính Các phần mềm CAD là các dụng cụ tin học đặc thù của máy tính đa xử lý cho việc nghiên cứu và được chia thành hai loại: Phần mềm thiết kế và các phần mềm
vẽ AutoCAD là phần mềm thuộc dạng này có mặt rất sớm và do đó rất phổ biến ở Việt Nam Kết quả của CAD là một bản vẽ xác định, một sự biểu diễn nhiều hình chiếu khác nhau của một chi tiết cơ khí với các đặc trưng hình học và chức năng
CAM là một hoạt động cụ thể trong công nghệ chế tạo cơ khí Kết quả của CAM là cụ thể, đó là chi tiết cơ khí Trong CAM không truyền đạt một sự biểu diễn
Trang 21của thực thể mà thực hiện một cách cụ thể công việc Việc chế tạo bao gồm các vấn
đề liên quan đến vật thể, cắt gọt vật liệu, công suất của trang thiết bị, các điều kiện
sản xuất khác nhau có giá thành nhỏ nhất
CAD/CAM tương ứng với các hoạt động của hai quá trình hỗ trợ cho phép biến một ý tưởng trừu tượng thành một vật thể thật Hai quá trình này thể hiện rõ trong công việc nghiên cứu và triển khai chế tạo Xuất phát từ nhu cầu cho trước, việc nghiên cứu đảm nhận thiết kế một mô hình mẫu cho đến khi thể hiện trên bản
vẽ biễu diễn chi tiết Từ bản vẽ chi tiết, việc triển khai chế tạo đảm nhận lập ra quá trình chế tạo các chi tiết cùng các vấn đề liên quan đến dụng cụ và phương pháp thực hiện Hai lĩnh vực hoạt động lớn này trong ngành chế tạo máy được thực hiện liên tiếp nhau và được phân biệt bởi kết quả của nó
1.2 Bộ nhớ trong vi xử lý đa lõi
1.2.1.Tổ chức bộ nhớ của vi xử lý đa lõi
Cũng như vi xử lý đơn lõi, tổ chức bộ nhớ của vi xử lý đa lõi được phân ra một
số cấp nhớ Trong đó, các cấp cache thường sử dụng tổ chức liên kết tập hợp n-dòng (n-way set association), với số dòng n = 2,4,8 Nhiều vi xử lý đa lõi sử dụng hai cấp cache: L1 Cache và L2 Cache L1 cache (L1Icache và L1Dcache) riêng cho từng lõi CPU nằm trên die (mảnh silicon chứa các lõi) trong đóng vỏ chip L2 Cache có thể chia sẻ chung cho các lõi, hoặc riêng cho từng lõi (hình 1.9), và chúng có thể nằm trên die hoặc ngoài die Để nâng cao hiệu suất sử dụng L2 Cache dùng chung, một
số chip vi xử lý đưa vào công nghệ cache thông minh (smart cache): khi phần không gian nhớ của L2 cache chia sẻ cho một lõi CPU nào đó đang rỗi (idle) thì phần không gian chia sẻ này được giành thêm cho lõi CPU đang tích cực và có nhu cầu
sử dụng
Trang 2222
Hình 1.9: Chip đa lõi có L2 chia sẻ và không chia sẻ
Hầu hết các vi xử lý đa lõi hiện nay đều sử dụng ba cấp cache L3 Cache được chia sẻ dung chung cho các lõi, và có thể nằm trên die hoặc ngoài die (hình 1.10)
Kỹ thuật cache thông minh cũng được đưa vào cho L3 cache chia sẻ
Hình 1.10: Chip Intel core i7 cache L2, L3 chia sẻ
Nguyên tắc tham chiếu của các lõi CPU đến bộ nhớ được bắt đầu với L1 Cache, nếu trượt L1 Cache, thì tham chiếu đến L2 Cache, nếu trượt L2 Cache thì tham chiếu đến L3 Cache, nếu trượt L3 cache thì tham chiếu đến bộ nhớ chính (MM) Vì vậy việc chọn tổ chức cache có tốc độ chọn (truy nhập) nhanh và tỷ số trúng cache cao cho vi xử lý đa lõi là yếu tố quan trọng ảnh hưởng lớn đến hiệu năng của vi xử
lý (hình 1.11) Tỷ số trúng cache ở các cấp gần các lõi CPU hơn thì thời gian truy nhập bộ nhớ sẽ ít hơn, thỏa mãn: L1 cache Hit > L2 Cache Hit > L3 Cache Hit
Trang 23Cấu trúc và điều khiển của mạng kết nối giữa các lõi CPU (interconnect network) là một vấn đề quan trọng phải giải quyết để đảm bảo băng thông cao cho truyền thông dữ liệu giữa các lõi CPU qua các cache Đây là vấn đề còn để mở
1.2.2 Các chính sách thay thế Cache trong vi xử lý đơn lõi
Các chính sách thay thế dòng cache khi có trượt cache trong các hệ thống vi xử
lý đơn lõi đã từ lâu được nghiên cứu phát triển như : vào trước ra trước (FIFO) tối
ưu (OPT), được sử dụng ít nhất gần đây (LRU), tần xuất sử dụng ít nhất (LFU), ngẫu nhiên (Random), và ưu tiên (PR) Ta xét một số đặc điểm của các chính sách thay thế cho vi xử lý đơn lõi
• Chính sách FIFO (First In First Out)
Chính sách thay thế FIFO gắn với mỗi thời gian khi thông tin được đưa vào cache Khi cần chọn một khối của dòng cache để thay thế nội dung, thì khối nào được vào cache trước tiên (dữ liệu đã cũ lâu) sẽ được chọn để thay thế Chúng ta có thể tạo một hàng đợi FIFO để quản lý tất cả khối trong cache Khối dữ liệu nào được đưa vào cache sớm nhất (cũ nhất) sẽ ở đầu hàng đợi Khối dữ liệu nào mới được đưa vào cache sẽ được để ở cuối hàng đợi (vào sau cùng) Khối dữ liệu bị thay thế là khối nằm ở đầu của hàng đợi
Ví dụ: Giả sử có 4 dòng cache (ban đầu coi như cache đầy), chương trình gồm các khối có địa chỉ cần truy nhập theo thứ tự là: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 Giải thuật FIFO thay thế các thông tin được biểu diễn như hình 1.12 (mỗi cột coi là 1 cache, mỗi hàng coi là 1dòng cache)
Hình 1.12: Biểu diễn chính sách FIFO với cache 4 dòng (10 lần thay thế)
Trang 2424
Chính sách thay thế FIFO mặc dù dễ hiểu và dễ lập trình Nhưng hiệu năng của
nó không cao Các khối dữ liệu được nạp vào cache sớm thường là quan trọng, chứa nhiều dữ liệu cần thiết thậm chí là các lệnh bắt đầu của một chương trình, thế nhưng nó lại bị đẩy ra đầu tiên Chúng ta hãy hình dung chương trình sẽ luôn phải bắt đầu và không bao giờ kết thúc
• Chính sách tối ưu OPT
Trong chính sách OPT (optimal) dòng cache “nạn nhân” là dòng chứa nội dung
dữ liệu chưa được dùng trong một khoảng thời gian lâu nhất (đã chờ lâu nhất mà chưa được sử dụng đến) Với ví dụ ở hình 1.12 ta sử dụng chính sách OPT thì chỉ phải thay thế 6 lần cho cache 4 dòng và 7 lần cho với cache 3 dòng (hình 1.13)
Hình 1.13: Biểu diễn thuật toán OPT với cache 4 dòng (6 lần thay thế)
Chính sách OPT có tỉ lệ thay thế thấp nhất trong tất cả các chính sách, và nó không khả thi vì các thao tác tiếp theo phụ thuộc vào các yêu cầu truy nhập mà CPU sau một quá trình xử lý đưa ra, nếu để CPU phải quan tâm trước đến tương lai thì xem ra không khả thi vì con người chúng ta còn khó biết trước tương lai của chính mình
• Chính sách LRU (Least Recently Used)
Chính sách thay thế LRU gắn mỗi khối với thời gian sử dụng cuối cùng của khối
đó Khi thay thế, khối “nạn nhân” là khối dữ liệu gần đây ít được sử dụng nhất LRU là chính sách thay thế dòng cache tối ưu Nó thực hiện tìm kiếm lùi về quá khứ (ngược lại với OPT là hướng tới tương lai) Nhưng vì không xét tới tương lai nên trong nhiều trường hợp khối “nạn nhân” vừa bị đẩy ra đã phải đưa vào ngay sau
đó (vì không biết đến tương lai), điều này ảnh hưởng không nhỏ đến hiệu suất của cache Nhưng LRU vẫn tốt hơn thuật toán FIFO vì số lần thay thế đã ít hơn, tức là
Trang 25hiện tượng “cache miss” đã giảm LRU được hầu hết các hệ thống vi xử lý đơn lõi
sử dụng Kết quả cho ví dụ trên với LRU được biểu diễn ở hình 1.14
Hình 1.14: Biểu diễn thuật toán LRU với cache 4 dòng (8 lần thay thế)
• Chính sách LFU (Least Frequently Used)
Chính sách thay thế LFU thực hiện thay thế dòng cache chứa khối dữ liệu có tần xuất sử dụng ít nhất Để xác định tần xuất sử dụng của khối dữ liệu trong dòng cache, cần phải có bộ đếm truy nhập cho từng khối của dòng cache Mỗi lần CPU tham chiếu đến khối dữ liệu của dòng cache thì bộ đệm tương ứng sẽ được tự động tăng lên 1 Như vậy, khối dữ liệu có bộ đếm giá trị nhỏ nhất sẽ được chọn để thay thế Nhưng hiệu năng của cache bị giảm với những trường hợp khối dữ liệu được dùng nhiều trong quá trình khởi tạo nhưng sau đó không dùng đến nữa mà vẫn ung dung nằm trong cache vì số đếm của nó lớn Ngược lại, một khối của dòng mới vừa được đưa từ bộ nhớ chính vào cache sẽ là “nạn nhân” của LFU vì nó có số đếm nhỏ nhất Kết quả cho ví dụ trên với LFU được biểu diễn ở hình 1.15
Hình 1.15: Biểu diễn thuật toán LFU với cache 4 dòng (8 lần thay thế)
• Chính sách ngẫu nhiên (Random)
Chính sách thay thế dòng cache ngẫu nhiên phân bố đồng đều khả năng bị thay thế, các khối cần thay thế trong cache sẽ được chọn ngẫu nhiên Cache ánh xạ trực tiếp không có sự chọn lựa thay thế, vì mỗi khối chỉ được sắp xếp vào một dòng tương ứng
Trang 2626
Chính sách thay thế LRU được sử dụng có hiệu quả trong các hệ thống vi xử lý đơn lõi, và nó cũng được sử dụng cho các vi xử lý đa lõi lại không đạt được hiệu suất cao Cho đến bây giờ, vấn đề sử dụng chính sách thay thế cache nào từ các chính sách thay thế cache của vi xử lý đơn lõi hay một chính sách thay thế mới khác
để đạt hiệu năng cao vẫn còn là vấn đề nghiên cứu còn mở
Có một số chính sách thay thế cache cho vi xử lý đa lõi được đề xuất gần đây:
• Không sử dụng gần đây NRU (Not Recently Used):
NRU là một chính sách thay thế cache gần với LRU NRU sử dụng một bit cho một khối dữ liệu của một dòng cache, được gọi là nru-bit Với bit này NRU cho phép dự đoán hai tham chiếu lại khối dữ liệu Khi nru-bit = 0 thì có nghĩa rằng khối
dữ liệu của dòng cache đã vừa được sử dụng và khối này được dự đoán là sẽ được tham chiếu lại trong một tương lại gần ngay lập tức (near-immediate future) Khi nru-bit = 1 thì có nghĩa là khối dữ liệu của dòng cache đã không được sử dụng gần đây và khối này được dự đoán sẽ được tham chiếu lại trong một tương lai xa (distant future) Khi cache đã đầy, NRU luôn dự đoán rằng khối bị bỏ qua sẽ được tham chiếu trong một tương lai gần ngay lập tức Khi khối được tham chiếu lại, NRU lại một lần nữa đoán trước rằng khối này sẽ được tham chiếu trong một tương lai gần ngay lập tức Khi có trượt cache, NRU chọn khối dữ liệu của dòng cache làm nạn nhân cho thay thế là khối đã được dự đoán sẽ được tham chiếu lần nữa trong một tương lai xa Nghĩa là khối có nru-bit tương ứng = 1
• Chính sách thay thế cache tĩnh SRRIP
SRRIP (Static RRIP) dựa trên dự đoán khoảng cách tham chiếu lại RRIP reference interval prediction) sử dụng M-bits cho từng khối dữ liệu của dòng cache
(Re-để lưu 2M khả năng các giá trị dự đoán tham chiếu lại RRPV (Re-reference Prediction Values) SRRIP linh hoạt biết được thông tin tham chiếu lại đối từng khối dữ liệu trong mẫu truy nhập cache Tương tự như NRU, một giá trị RRPV = 0 xác định rằng khối dữ liệu của dòng cache được dự đoán sẽ được tham chiếu lại trong một tương lai gần ngay lập tức, trong khi 2M-1 giá trị RRPV còn lại xác định rằng khối dữ liệu của dòng cache được dự đoán sẽ được tham chiếu lại trong một
Trang 27tương lai xa Về số lượng, RRIP dự đoán các khối có các giá trị RRPV nhỏ sẽ được tham chiếu lại trong một tương lai gần hơn só với các khối có các giá trị RRPV lớn hơn Khi M=1, SRRIP tương tự như NRU Khi M>1, SRRIP cho phép nhiều khoảng cách tham chiếu lại ngay lập tức hơn một khoảng cách tham chiếu lại gần ngay lập tức, nhưng nhỏ hơn khoảng cách tham chiếu lại khoảng cách xa
• Chính sách thay thế cache BRRIP
SRRIP không hiệu quả sử dụng cache khi khoảng cách tham chiếu lại các khối
dữ liệu là lớn hơn dung lượng cache tồn tại Như vậy SRRIP gây ra hiện tượng tan
vỡ cache (cache thrashing) và kết quả là không trúng cache Để trách hiện tượng này, chính sách thay thế hai phương thức BRRIP (Bimodal RRIP) được đề xuất BRRIP đưa vào phần lớn các khối với dự đoán khoảng cách xa tham chiếu lại (nghĩa là giá trị RRPV=2M-1) và với xác suất nhỏ (tần suất thấp) đưa vào các khối với dự đoán khoảng cách dài tham chiếu lại (nghĩa là giá trị RRPV = 2M-2)
• Chính sách thay thế động DRRIP
DRRIP (Dynamic RRIP) sử dụng sự ghép đôi tập hợp (Set Dueling) [4] để xác định chính sách thay thế nào là phù hợp nhất cho một ứng dụng DRRIP một cách linh hoạt lựa chọn giữa SRRIP và BRRIP nhờ sử dụng các SDMs (Set Dueling monitors) [5] SDM hạn chế trượt cache đối với bất kỳ chính sách nào với một số ít các tập hợp của cache Set Dueling sử dụng sự lựa chọn bộ đếm chính sách (PSEL counter) để xác định chính sách được chọn DRRIP sử dụng chính sách được chọn của hai SDM cho các tập hợp còn lại của cache
Ngoài chính sách LRU truyền thống được sử dụng, trên đây là các chính sách thay thế cache được đề xuất cho các chip vi xử lý đa lõi, tuy nhiên sự kiểm nghiệm thực tế chưa có nhiều tài liệu chỉ rõ
1.2.4 Đảm bảo sự thống nhất nội dung của cache (cache coherence)
Cache là bộ nhớ SRAM có tốc độ truy nhập nhanh Nếu tổ chức cache hiệu quả thì khi chạy một chương trình các chỉ thị và dữ liệu hay dùng hoặc vừa được tính
Trang 2828
dung lượng Cache thì toàn bộ chương trình sẽ nằm gọn trong Cache (là điều mơ ước) Nhưng trong thực tế các chương trình thường có dung lượng lớn và Cache thì không thể chứa hết chương trình Để tiếp tục chạy chương trình hiển nhiên là một
số khối nào đó sẽ bị đẩy ra để lấy chỗ cho khối mới
(a) (b)
(c)
Hình 1.16 : Sự không nhất (a), thống nhất bằng MESI (b) và MOESI (c)
Truy nhập cache không chỉ để đọc mà còn phải thực hiện các tao tác ghi Với chính sách ghi đồng thời nếu chỉ với một lõi, tuy tốc độ chậm nhưng tính thống nhất của hệ thống sẽ không có gì phải bàn Nhưng với các bộ vi xử lý đa lõi ghi đồng thời (Write Through) gần như không đạt hiệu quả do kiến trúc phức tạp Do đó ghi lại (Write Back) là phương pháp được sử phổ biến trong các vi xử lý đa lõi Quá trình ghi lại của một CPU đa lõi có thể dẫn đến có lớn hơn 2 nội dung khác nhau của cùng một khối bộ nhớ trong cache và khối của bộ nhớ chính Trong các hệ thống có nhiều hơn một bộ xử lý, mỗi hệ thống với cách tổ chức cache và tổ chức của bộ nhớ chia sẻ thì các vấn đề liên quan đến tính đồng nhất của dữ liệu càng cần phải được đảm bảo Sự thay đổi dữ liệu trên một cache riêng lẻ sẽ làm cho dữ liệu trên các hệ thống cache và bộ nhớ liên quan không được đồng nhất (hình 1.16a)
Hai giao thức MESI và MOSI (hình 1.16 b,c) với các thông tin trạng thái của hãng Intel và AMD được đưa ra để đảm bảo tính thống nhất dữ liệu trong các
Trang 29bộ vi xử lý đa lõi Sự phối hợp của những bit đánh dấu và MESI giúp giảm bớt tần suất truy nhập cache của các lõi nên sẽ giải phóng băng thông cho những dữ liệu thật sự cần thiết trong các cache:
(M): modified (thay đổi), cho biết nội dung khối cache này khác với nội dung khối bộ nhớ chính
(E): exclusive (không chấp nhận), nội dung khối cache ko bị thay đổi và giống với khối bộ nhớ
(S): shared (chia sẻ), có thể chia sẻ nội dung với các cache khác
(I): invalid (không hợp lệ), khối bộ nhớ không có trong cache
(O): cho biết dữ liệu trong cache là bản sao dữ liệu mới nhất tại thời điểm hiện tại
1.3 Một số kiến trúc vi xử lý đa lõi
1.3.1.Vi xử lý Dual core của AMD
Trên chip này hai lõi AMD64 có thể chạy 32 bit và 64bit đồng thời Thường
sử dụng cho các loại máy tính để bàn (hình 1.17)
Hình 1.17: Kiến trúc vi xử lý 2 lõi của AMD
Trang 30 Integrated DDR Controller Điều khiển độ trễ khi truy cập vào bộ nhớ so với việc sử dụng FSB truy cập cho bộ nhớ Mỗi lõi có điều khiển bộ nhớ riêng của mình
System Request Queue: Hệ thống hàng đợi yêu cầu, quản lý sự truy nhập của mỗi lõi trên Crossbar
Link 1/2/3 đây là 3 kết nối giữa các khu vực I/O và khu vực bộ vi xử lý sử dụng
Bus 72 bit DDR400 cho phép cung cấp dữ liệu thông lượng lên đến 6.4GBps đến bộ nhớ
Trang 31Hệ thống đạt hiệu quả cao do khả năng xử lý được từng lớp luồng TLP (lớp công việc) Nhưng do làm việc trong các vùng hẹp của L2 chia sẻ nên hiện tượng Cache Miss cao do đó hiệu suất giảm Việc thực hiện song song các lệnh là rất chậm làm tăng cache “miss” và làm tăng khả năng khó dự đoán dẫn đến thiếu chính xác Hệ thống này hiệu quả phụ thuộc vào tốc độ truy nhập của bộ nhớ
1.3.3.UltraSPARC T2
UltraSPARC T2 còn gọi là Niagara II (hình 1.18) UltraSPARC là một chip đơn
8 lõi, tất cả các lõi đều sử dụng chung cache L2 chia sẻ, mỗi lõi có thể xử lý 8 luồng song song UltraSPARC có thể quản lý được xấp xỉ 20000 trạng thái nên nó là một loại máy tính được sử dụng trong y tế để hỗ trợ các ca phẫu thuật Ngoài ra UltraSPARC T2 còn được dùng trong các trường hợp đòi hỏi tốc độ cao như các trò chơi điện tử trực tuyến hoặc các dich vụ Multimedia…
Hình 1.18: Sun T5120 Eight Cores x Eight Threads
1.3.4.Intel core 2 i7 (Nehalem)
Bộ nhớ đệm L3 trong các BXL Nehalem (hình 1.19) hoạt động với tần số độc lập và có hệ thống cấp nguồn riêng biệt với các nhân để đảm bảo độ ổn định và giảm xác suất lỗi Ưu điểm của thiết kế cache L3 này là giúp việc trao đổi dữ liệu giữa các nhân hiệu quả hơn mà không cần thông qua các cache bên trong của mỗi nhân trong vi kiến trúc Nehalem tích hợp trong BXL một chip điều khiển năng lượng PCU (Power Control Unit) để hiện thực công nghệ mới Turbo Boost Chip PCU này sẽ dựa trên các cảm ứng được thiết lập tại các nhân xử lý để thực hiện
Trang 3232
giám sát về nhiệt độ, điện áp trên nhân Nehalem được dùng trong các hệ thống có diện tích nhỏ laptop…
Hình 1.19: Kiến trúc Nehalem 8 lõi với cache L1, L2, L3 của Intel
Dưới đây là bảng so sánh giữa các bộ vi xử lý được đưa ra ở trên
Bộ xử lý Số lõi Số luồng L1, L2, L3 Chia sẻ AMD’s Dual core 2 x 2 = 4 4 x 2 = 8 L1,L2 Không UltraSPARC T1 1 x 8 = 8 8 x 4 = 32 L1, L2 Chia sẻ L2 UltraSPARC T2 1 x 8 = 8 8 x 8 = 64 L1, L2 Chia sẻ L2 Intel core 2 i7 2 x 4 = 8 8 x 2 = 16 L1, L2, L3 Chia sẻ l3
Bảng 1.1: So sánh số lõi, số luồng, và tổ chức cache
Trang 33CHƯƠNG II
MÔ HÌNH HÓA VI XỬ LÝ ĐA LÕI
Đặc trưng cơ bản của mạng viễn thông là lưu lượng, dung lượng và chất lượng Lưu lượng phát sinh trên mạng là một đại lượng ngẫu nhiên trong khi dung lượng là một đại lượng hữu hạn còn chất lượng mạng thì phụ thuộc vào lưu lượng, dung lượng và các quá trình điều khiển kết nối trên mạng Với mạng đa dịch vụ cung cấp nhiều loại hình công việc với các yêu cầu khác nhau về chất lượng, tốc độ và mức
độ ưu tiên thì phương pháp mô hình hóa phân tích một hệ thống mạng theo lý thuyết hàng chờ là phương pháp tổng quát nhất được sử dụng để xử lý lưu lượng và quản lý tài nguyên
Trong nhiều hoạt động sản xuất kinh doanh cũng như trong đời sống chúng ta áp dụng các hệ dịch vụ đám đông hay hệ phục vụ công cộng, chúng
có tên gọi chung là hệ thống hàng chờ Các xí nghiệp sửa chữa máy móc, các cửa hàng, các bến xe, bến cảng, trạm tổng đài, các hệ thống điện tử viễn thông, Internet, là các ví dụ về hệ thống hàng chờ Trong một mạng máy tính các công việc được chuyển từ nguồn tới đích và đi qua một số lượng các nút trung gian Tại các nút này, hàng chờ xuất hiện để phục vụ quá trình lưu tạm thông tin của hệ thống
2.1.Mạng xếp hàng đóng nhiều lớp công việc
2.1.1 Mô hình xếp hàng
Lý thuyết hàng chờ là một công cụ toán học mạnh dùng để phân tích, ước lượng trong các hệ thống viễn thông và các mạng máy tính Trong các hệ thống hàng chờ thường xuyên diễn ra hai quá trình: quá trình nảy sinh các yêu cầu và quá trình phục vụ các yêu cầu (một yêu cầu được coi là một tín hiệu cần được phục vụ hay là một công việc) Nhưng nhiều khi trong quá trình phục vụ của các
hệ thống, do nhiều nguyên nhân khác nhau, thường xảy ra các tình trạng như quá trình phục vụ không đáp ứng các yêu cầu, do đó dẫn đến kết quả là nhiều yêu cầu phải chờ để được phục vụ, hoặc ngược lại trong một số tình huống, khả
Trang 3434
hệ thống không sử dụng hết phương tiện phục vụ Nhiều bài toán thực tế trong các lĩnh vực hệ thống dịch vụ, kỹ thuật, viễn thông … đã được giải quyết thành công nhờ áp dụng phương pháp mô phỏng mô hình hàng chờ
• Mô hình hàng chờ M/M/1
Hàng đợi M/M/1 có nhãn λ tương ứng với tốc độ đến của các khách hàng còn nhãn μ tương ứng với tốc độ đi khỏi của khách hàng sau khi được phục vụ xong (trừ trạng thái 0), tín hiệu đến và đi theo phân phối hàm mũ (chuỗi Markov) Hệ thống này chỉ có một server và hàng đợi có kích thước vô hạn (hình 2.1) Các trạng thái được biểu diễn bằng các vòng tròn, số hiệu trong vòng tròn là toàn bộ số khách hàng trong mạng bao gồm cả khách hàng đang chờ trong hàng đợi và khách hàng đang được phục vụ
Trang 35• Mô hình hàng chờ M/M/m
Hàng chờ M/M/m có thời gian giữa các lần đến λ và thời gian phục vụ của tín hiệu μ là phân phối hàm mũ (chuỗi Markov) Hàng chờ M/M/m có m server giống nhau và song song Hình (2.3)
Hình 2.3: Hàng chờ M/M/m
• Mô hình hàng chờ M/G/1
M: quá trình đến là quá trình Poisson tốc độ λ
G: là phân bố xác suất chung của biến xtùy tiện – là thời gian phục vụ khác hàng G(x) =P[service_time≤x] Phân bố chung có thể là rời rạc hay liên tục 1: là chỉ có một server nguyên tác phục vụ là FIFS
Số lượng khách hàng N (t) trong hệ thống không phải là quá trình Markov Như vậy, hệ thống M/G/1 có phân bố chung của thời gian phục vụ tùy tiện
mà trong đó ít nhất giá trị trung bình của tốc độ phục vụ μ và giá trị chênh lệch sẽ được tính theo các moment và các chênh lệch Nhưng để cho đơn giản ta sẽ chỉ khảo sát hệ thống với phân bố chung rời rạc
2.1.2 Mạng xếp hàng
Mạng xếp hàng là một mô hình quan trọng và là một phương pháp cụ thể được
sử dụng để đánh giá phân tích mô hình một hệ thống máy tính đa lõi Một bộ vi xử
lý đa lõi cùng với các tổ chức cache được coi như là một mô hình mạng gồm có các nút là CPU, L1, L2, L3, memory… cùng với các hàng chờ tại mỗi nút
Trang 3636
sau khi được phục vụ xong có thể ra khỏi hệ thống bằng một hoặc nhiều lối ra (hình 2.4) Các công cụ thực hiện việc điều khiển mạng xếp hàng mở bao gồm việc quyết định khi nào nên chấp nhận luồng công việc mới, khi nào thì bỏ qua các công việc
và bỏ qua công việc nào Tất cả các công cụ trên đều có đặc điểm chung là chúng đưa ra các quyết định mà không quan tâm đến trạng thái hiện hành của mạng
Do nhu cầu xử cần xử lý xuất phát từ con người luôn thay đổi nên bộ vi xử lý về bản chất là một mạng xếp hàng mở, số lượng công việc là rất lớn và vượt qua khả năng của máy tính, nhưng nếu mô hình vi xử lý đa lõi là mạng loại này thì việc tính toán rất phức tạp, có nghĩa là chúng ta rất khó kiểm soát được hoạt động của hệ thống vi xử lý
Hình 2.4: Mạng xếp hàng mở
• Vi xử lý và mạng xếp hàng đóng
Mạng được gọi là xếp hàng đóng nếu không có khách hàng nào từ bên ngoài
đi vào mạng hoặc từ trong mạng đi ra ngoài Do bị hạn chế bởi tập lệnh và dung lượng nên một bộ vi xử lý chỉ xử lý được một số lệnh hoặc một số luồng nhất định,
vì vậy bộ vi xử lý được mô hình hóa thành một mạng xếp hàng đóng
Hình 2.5: Mạng xếp hàng đóng Với mạng xếp hàng đóng, các lệnh hay luồng lệnh sau khi được tìm kiếm và
xử lý chỉ có thể truyền giữa các nút trong hệ thống Các xử lý là liên tiếp giữa một
số cặp nút bất kỳ như giữa CPU và L1, giữa cache L1 và L2 cache hoặc giữa L2 và
bộ nhớ Vì là mạng đóng nên các lệnh không thể ra khỏi vi xử lý và cũng không có
Trang 37thêm bất cứ một xử lý nào lớn hơn tổng số lệnh tham gia thêm vào hệ thống (hình 2.5)
• Mạng xếp hàng kết hợp
Hệ thống kết hợp là hệ thống đóng đối với một số khách hàng nhưng lại mở với một số khách hàng khác Hệ thống này trên lý thuyết có vẻ gần gũi với thực tế, nhưng trong một bộ vi xử lý để đánh giá hiệu năng chúng ta cần phải chọn một mô hình mang tính tổng quát và thuận lợi trong quá trình đánh giá hệ thống
2.1.3.Vi xử lý và công việc trong hệ thống
• Vi xử lý đơn lõi với một lớp công việc duy nhất
Một hệ thống mạng chỉ xử lý được các công việc với điều kiện duy nhất được gọi là mạng đơn lớp Cũng như vậy, một bộ vi xử lý đơn lõi chỉ xử lý được các lệnh hay luồng lệnh…với điều kiện là tất cả các lệnh hoặc luồng lệnh bằng nhau về thời gian xử lý, bằng nhau về độ dài lệnh, giống nhau về tính chất và giống nhau về nội dung công việc… Do đó vi xử lý đơn lõi được coi là mạng một lớp công việc Bộ vi
xử lý đơn lõi thực hiện mỗi giai đoạn của lệnh trong một khoảng thời gian bằng nhau Một hệ thống vi xử lý đơn lõi được mô hình như một mạng xếp hàng đóng hoặc mở với các hàng đợi gồm duy nhất một CPU, L1, L2, memory bus, RAM và các hàng đợi tương ứng Mạng xếp hàng đơn lớp chỉ xử lý các công việc một cách tuần tự với các khoảng thời gian cho mỗi công việc là như nhau, đây là hạn chế của mạng cũng như là hạn chế của các vi xử lý đơn lõi có tốc độ thấp và không có khả năng xử lý song song do không tận tận dụng được thời gian rỗi của CPU, đặc biệt đối với các phần mềm được xây dựng bằng kiến trúc đa luồng thì vi xử lý đơn lõi gần như không thể đáp ứng được
• Vi xử lý đa lõi và các lớp công việc
Mạng xếp hàng cũng tìm thấy ứng dụng trong mô hình phân tích của các hệ thống máy tính xử lý song song Hiện tượng bùng nổ không gian trạng thái trong hệ thống này được giới hạn do sử dụng phương pháp phân tích hiệu quả chuỗi Markov