CÂ\ H]I VÀ BÀI T_P CHƯƠNG
8.1. CÁC CP B NH (Memory Hierarchy)
Ngư<i ta chia b! nh thành các c*p d>a vào các ự?c tắnh như lư/ng thông tin lưu trA, th<i gian thâm nh3p b! nh , chu kỳ b! nh , giá ti n mDi bit nh . Các c*p b! nh b8t ựFu tG b! nh nhanh v i dung lư/ng ắt ự6n các b! nh ch3m v i dung lư/ng l n hơn nhi u.
Các c*p b! nh giúp cho ngư<i l3p trình có ựư/c m!t b! nh th3t nhanh v i chi phắ ựFu tư th*p hơn nhi u. Vì các b! nh nhanh, có dung lư/ng ắt thì ự8t ti n hơn các b! nh có dung lư/ng cao hơn, nhưng ch3m hơn. Do ựó mLc tiêu c"a vi c thi6t l3p các c*p b! nh là ngư<i dùng có ựư/c m!t h th$ng b! nh r4 ti n như c*p b! nh th*p nh*t và gFn nhanh như c*p b! nh cao nh*t. Các c*p b! nh thư<ng ựư/c lMng vào nhau. M1i dA li u trong m!t c*p thì ựư/c g?p l i trong c*p th*p hơn và có th9 ti6p tLc g?p l i trong c*p th*p nh*t.
Chúng ta có nh3n xét rQng, mDi c*p b! nh có dung lư/ng l n hơn c*p trên mình, ánh x m!t phFn ựRa chS các ô nh c"a mình vào ựRa chS ô nh c"a c*p trên tr>c ti6p có t$c ự! nhanh hơn, và các c*p b! nh ph,i có cơ ch6 qu,n lý và ki9m tra các ựRa chS ánh x .
Các c*p b! nh ựư/c phân lo i như trên hình 8.1 b8t ựFu v i b! nh nh7, ự8t ti n và nhanh g1i là cache. Ti6p sau ựó là b! nh l n hơn, r4 hơn và ch3m hơn g1i là b! nh chắnh hay b! nh
Chương VIII: H th ng b nh
trong (main memory). B! nh cache và b! nh chắnh ựư/c ch6 t o sZ dLng ch*t bán d[n r8n ( ựi9n hình là CMOS transistors). Ti6p theo sau ựó là các b! nh có dung lư/ng l n hơn, ch3m hơn và r4 ti n hơn mà tiêu bi9u là ựĩa c ng, ựĩa m m, các lo i CD, DVD, băng tG,Ầ
Hi u qu, c"a vi c phân thành các c*p b! nh phL thu!c vào nguyên lý chuy9n ự0i thông tin trong các b! nh nhanh. Hi u qu, càng cao khi thông tin trong ựó càng ắt khi bR thay ự0i và vi c truy c3p vào thông tin trong ựó càng nhi u lFn càng t$t trư c khi nó bR thay th6 bai thông tin m i. đ9 ựánh giá hi u qu, c"a h th$ng các c*p b! nh , chúng ta s xem xét trư<ng h/p dư i ựây.
Khi b! vi xZ lý (VXL) gZi m!t yêu cFu truy c3p ự6n m!t tG nh hay m!t câu l nh, máy tắnh s th>c thi tìm ki6m tG nh theo m!t th t> như sau:
Ờ Tìm tG nh trong b! nh m c cao nh*t (thông thư<ng g1i là cache) c"a các c*p b! nh . Xác su*t tìm th*y tG nh trong ựó g1i là th s$ thành công (hit ratio) h1, không tìm th*y là th s$ th*t b i (miss ratio) (1 h1);
Ờ Khi không tìm th*y tG nh trong bư c m!t thì tìm a c*p b! nh th*p hơn th*p hơn (như cache L2, main memory). Tương t> như trên ta s có các th s$ h2 và (1 h2);
Các thanh ghi B! nh Cache B! nh chắnh (Main memory) B! nh th c*p Ờ đĩa Secondary Storage (Disk)
B! nh c*p ba j Băng tG Tertiary Storage (Tape)
N h an h hơ n đ 8t h ơ n D u n g lư / n g b ! n h n h 7 h ơ n M c cao M c th*p Hình 8.1. Các c*p b! nh cơ b,n
Ờ Quá trình này s ti6p dimn cho ự6n khi tìm th*y tG nh cFn thi6t ho?c h6t c*p b! nh .
Ờ Khi tìm th*y tG nh s ựư/c chuy9n cho B! xZ lý và c3p nh3t l i dA li u trong các c*p b! nh n6u cFn thi6t.
Gi, sZ các c*p b! nh có 3 c*p. Th<i gian truy c3p vào các c*p b! nh trung bình, hay th<i gian trung bình ự9 tìm th*y m!t tG nh ựư/c tắnh thao công th c sau:
tav = h1*t1 + (1 h1)*[t1+h2*t2+(1 h2)*(t2+t3)] = t1 + (1 h1)*[t2 + (1 h2)*t3]
Trong ựó:
j hi là th s$ thành công khi tìm th*y tG nh cFn thi6t trong m c b! nh c*p i.
j ti là th<i gian truy c3p cFn thi6t vào b! nh c*p i.
Theo [6] thì m!t chương trình tiêu t$n 90% th<i gian thi hành c"a nó chS ự9 th>c hi n 10% s$ l nh c"a chương trình (thư<ng là nhAng l nh nQm trong các vòng l?p, ựư/c th>c thi nhi u lFn). Như v3y 90% s$ l nh còn l i chS tiêu t$n 10% th<i gian th>c thi hay nói cách khác chúng ho?c là không ựư/c th>c thi (Vắ dL các l nh xZ lý lDi chS ựư/c th>c thi khi phát sinh lDi) ho?c là chS ựư/c th>c thi m!t s$ ắt lFn.
Nguyên t8c trên cũng ựư/c áp dLng cho vi c thâm nh3p dA li u, nhưng ắt hi u nghi m hơn vi c thâm nh3p l nh. Như v3y có hai nguyên t8c: nguyên t8c v không gian và nguyên t8c v th<i gian
Ớ Nguyên t c v không gian: Khi b! xZ lý thâm nh3p vào ô nh
nào ựó thì có nhi u kh, năng s thâm nh3p vào nhAng ô nh có ựRa chS k6 ti6p trong th<i gian sau ựó do các l nh ựư/c s8p x6p thành chuDi có th t>. Vắ dL danh sách các l nh nQm liên ti6p nhau trong m!t chương trình.
Ớ Nguyên t c v th i gian: Các ô nh ựư/c h th$ng xZ lý thâm
nh3p có kh, năng s ựư/c thâm nh3p l i trong tương lai gFn. Th3t v3y, các chương trình ựư/c c*u t o v i phFn chắnh là phFn ựư/c thi hành nhi u nh*t và các phFn phL dùng ự9 xZ lý các trư<ng h/p ngo i l . Còn s$ li u luôn có c*u trúc và thông thư<ng chS có m!t phFn s$ li u ựư/c thâm nh3p nhi u nh*t mà thôi. Vắ dL như m!t l nh trong m!t vòng l?p c"a chương trình.
Như v3y, chúng ta cFn t0 ch c các c*p b! nh sao cho các l nh và dA li u thư<ng dùng ựư/c nQm trong b! nh cache và vi c 0 ch c như v3y s làm tăng hi u qu, cũng như t$c ự! chung c"a máy tắnh lên m!t cách ựáng k9.