Tải bản đầy đủ (.pdf) (74 trang)

mô hình và phân tích hiệu năng của các tổ chức cache trong các kiến trúc vi xử lý đa lõi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.48 MB, 74 trang )


1

LỜ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ả




















2

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

3

2.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 F
i
(S
i
) 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
TÀI LIỆU THAM KHẢO 74

4

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

5

Hì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







6

MỞ ĐẦU
I. ĐẶT VẤN ĐỀ
Kiến trúc đa xử lý và vi xử lý đa lõi là những giải pháp công nghệ hiện đại
đang được phát triển để nâng cao hiệu suất của các hệ thống máy tính. Trong kiến
trúc đa xử lý, CPU được tạo bởi nhiều chip vi xử lý đảm bảo xử lý song song nhiều
luồng lệnh và nhiều luồng dữ liệu ở tốc độ rất cao, tạo nên những hệ thống máy tính
công suất tính toán lớn như các dòng mainframe, siêu máy tính. Kiế
n trúc đa xử lý
có 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ử

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.



7

II. 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





8

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 8/16/32-
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
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

9

(RISC). Mt trong nhng tin b quan trng ca cụng ngh vi x lý n lừi l cú
s phõn cp h thng bus do s khỏc bit v cụng ngh v tc x lý ca cỏc
thnh phn thit b trong h thng vi x lý. S phõn cp h thng bus m bo d
dng ng b cỏc giao dch truyn thụng gia cỏc thnh phn thit b, d dng nõng
cp cụng ngh thit b, d dng tiờu chu
n húa v phi ghộp cỏc thit b. Cựng vi
s phõn chia h thng bus, h thng nh ca h thng mỏy tớnh cng c phõn
chia thnh nhiu cp 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:Tc v giỏ thnh ca cỏc lp b nh

Trờn nh hỡnh kim t thỏp l cp nh L0: cỏc thanh ghi (registers) bờn trong
chip vi x lý. Chỳng cú thi gian truy nhp nhanh nht (1ns 2ns), nhng dung
lng nh nht. ỏy kim t thỏp l cỏc thit b nh trờn cỏc h a cng, a quang,
bng t, v thng nm trờn cỏc h thng mỏy tớnh lu tr c s d liu trờn mụi
trng mng LAN. Chỳng cú thi gian truy nhp chm nhng dung l
ng ln. Hệ
thống nhớ có thể phân chia thành k cấp (Lk) , theo nguyên tắc: k càng lớn cng

10

xung ỏy kim t thỏp v dung lợng càng lớn, tốc độ càng nhỏ, chi phí trên một
đơn vị bit càng thấp.
Các chơng trình quan tâm đến truy nhập dữ liệu ở mức thấp (với k nhỏ) hơn là
truy nhập đến mức k cao (hay k+1). Các quá trình thực hiện tơng tranh phải đợc
phân phối các tài nguyên chứa trong hệ thống nhớ hiệu quả nhất. Quản lý bộ nhớ và
quản lý các quá trình là những chức năng chính của hệ điều hành.
Tuy nhiờn hn ch ln nht ca cỏc chip vi x lý n lừi vn l mc x lý
song song thp, giỏ thnh cao, cng knh li tiờu th in nng ln, cụng sut ta
nhit cao nờn cn phi cú h thng lm mỏt tt.
S cn thit t
c hiu sut cao hn ó tr thnh mt mi quan tõm quan
ln vi cho nhiu t chc CNTT. Cụng ngh phỏt trin khụng ngng, cỏc b vi x
lý a lừi cựng vi nhng tin b trong b nh ó cung cp mt nn tng cõn bng
cho hiu sut v kh nng m rng cn thit cho s tng trng bn vng ca cỏc
th h mỏy tớnh trong tng lai.


1.1.2.
a x lý CMP(Chip Multi Processor)
SIMD (Single Instrucstion stream, Multiple Data stream)
Cỏc mỏy SIMD cú mt s ln cỏc b x lý ging nhau, cỏc b vi x lý ny
cựng thc hin mt lnh ging nhau x lý nhiu dũng d liu khỏc nhau. Mi b
x lý cú b nh d liu riờng, nhng ch cú chung mt b nh lnh v mt b x lý
iu khin, b nh ny c v thi hnh cỏc lnh. Tớnh song song trong cỏc mỏy
SIMD l tớnh song song ca cỏc d liu. Nú ch
cú hiu qu nu cu trỳc cỏc d liu
d dng thớch ng vi cu trỳc vt lý ca cỏc b x lý thnh viờn. Cỏc b x lý vộc-
t v mng thuc loi mỏy tớnh ny. SIMD thng c s dng gii cỏc bi
toỏn d bỏo thi tit nh tớnh nhit trung bỡnh hng ngy trong sut 24 gi ca
nhiu a im, khi ú cụng vic tớnh toỏn l nh nhau nhng tp d liu li hon
ton khỏc nhau

MIMD (Multiple Instruction Stream, Multiple Data Stream)
Mt h thng MIMD l mt h thng nhiu b x lý v nhiu b nh,
trong ú mi b x lý cú mt n v x lý riờng v thc hin chng trỡnh

11

riê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).




12

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.

13


Nhiề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
có nhiều hoạt động của các luồng khác nhau nằm trong cùng không gian địa chỉ.

14

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.


15


Hì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ụ
như phần mềm thiết kế 3 chiều, xử lý ả
nh hay video…

16

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

17


tí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


18

cập nhật bởi lõi kia, do đó phải thực hiện quá trình update bản sao này, quá trình
update phải thông qua bộ nhớ và làm bận bus hệ thống.



Hình 1.6: Vi xử lý 2 lõi và 4 lõi
Các vi xử lý đa lõi của Intel được xây dựng trên nền kiến trúc Core và Pentium
M, 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




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.


20


Hình 1.8: Database ser và Web server



• Multimedia
Multimedia là phương tiện mô phỏng và thực hiện đồng thời nhiều dạng
phương tiện chuyển hóa thông tin và các sản phẩm từ các kỹ thuật chuyển hóa
thông tin đó [6]. Có thể hiểu Multimedia là kỹ thuật tích hợp trên một nền thống
nhất các dạng dữ liệu khác nhau với sự hỗ trợ của máy tính.
Multimedia 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

21

củ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.


22


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.






Core 1
Core 1
Core 1
L1 cache
L1 cache
L1 cache
L1 cache
L1 cache
L1 cache
L3 cache
(smart cache)
L1 cache
L1 cache
L1 cache
MM
Interconnect networ
k

Memo
r
y
bus
Hình 1.11: nguyên tắc tham chiếu của các lõi CPU đến các cấp nhớ

23


Cấ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ế)



24

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à

25

hiệ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.
1.2.3. Các chính sách thay thế cache cho vi xử lý đa lõi

×