bài 3

13
Bài thí nghim Kiến trúc máy tính 3 2010 Khoa Điện t- Vin thông Page 1 Bài 3. Hoạt động ca bđệm, tối ưu hóa bộ đệm (Bài thí nghiệm này được biên son da trên bài thí nghim môn hc Kthut máy tính ca F. Lundevall, Khoa công nghthông tin và truyn thông, Hc vin công nghHoàng gia, Thụy Điển [1]) 1 Mục đích Trong bài thí nghim này sinh viên stìm hiu bđệm trong bxlý MIPS và hc cách tối ưu hóa các tham sbđệm, hoặc cách thay đổi cấu trúc chương trình để có được hiu sut tính toán cao hơn. 2 Công cBài thí nghim sdng bphn mm MIPSIT [1] để mô phng hoạt động ca mt hthng máy tính da trên bxlý MIPSIT. 3 Lý thuyết Sinh viên cn nm rõ vbđệm; các tham sca bđệm mà có ảnh hưởng đến hiu sut tính toán ca bxlý. Ngoài ra sinh viên cn có kiến thc vcách sp xếp các lnh máy và các biến trong bnh(eng. memory mapping). (bài ging chương 2, chương 3). Sách tham kho [3]. Sinh viên cn hiu các khái nim trong bđệm như: tltrúng (eng. hit rate), tổn hao trượt (eng. miss penalties), thi gian truy cp (eng. access time), bđệm ánh xtrc tiếp (eng. direct mapped cache), bđệm kết hp toàn phn (eng. fully associative cache), bđệm kết hợp k đường (eng. k- way associative cache). 4 Thc hin 4.1 Cài đặt và làm quen vi phn mm 4.1.1 Cài đặt Ti bcông cMIPSIT tđịa ch: https://sites.google.com/site/fethutca/my-forms/MipsICT.zip?attredirects=0&d=1 . Gii nén tệp “MipsICT.zip” và chy tp nhận được MipsICT.exeđể phm mm tgii nén vào thmc: C:\MipsIT. Trong bphn mm MIPSIT, ta ssdng 2 phn mm MIPSITStudio (xem bài thí nghim s2) và Mips Simulator. 4.1.2 Gii thiu MIPSITStudio Mipsitstudio là phn mm mô phng hoạt động ca hthng máy tính da trên bxlý MIPS. Gi chương trình bằng cách chy tệp “C:\MipsIT\bin\Mips.exe(Hình 1). Phm mm mô phng vic thc hin một chương trình (được biên dch bng MIPSITStudio) trên mt hthng máy tính gm: 1. Bxlý MIPS (CPU) 2. Bđệm lnh (I-Cache) 3. Bđệm dliu (D-Cache) 4. Bnhchính (RAM) 5. Ca sconsole (Console)

Upload: nvdangdt1k52bk03

Post on 04-Jul-2015

223 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 1

Bài 3. Hoạt động của bộ đệm, tối ưu hóa bộ đệm (Bài thí nghiệm này được biên soạn dựa trên bài thí nghiệm môn học Kỹ thuật máy tính của F.

Lundevall, Khoa công nghệ thông tin và truyền thông, Học viện công nghệ Hoàng gia, Thụy Điển [1])

1 Mục đích

Trong bài thí nghiệm này sinh viên sẽ tìm hiểu bộ đệm trong bộ xử lý MIPS và học cách tối ưu hóa

các tham số bộ đệm, hoặc cách thay đổi cấu trúc chương trình để có được hiệu suất tính toán cao

hơn.

2 Công cụ

Bài thí nghiệm sử dụng bộ phần mềm MIPSIT [1] để mô phỏng hoạt động của một hệ thống máy tính

dựa trên bộ xử lý MIPSIT.

3 Lý thuyết

Sinh viên cần nắm rõ về bộ đệm; các tham số của bộ đệm mà có ảnh hưởng đến hiệu suất tính toán

của bộ xử lý. Ngoài ra sinh viên cần có kiến thức về cách sắp xếp các lệnh máy và các biến trong bộ

nhớ (eng. memory mapping). (bài giảng chương 2, chương 3). Sách tham khảo [3].

Sinh viên cần hiểu các khái niệm trong bộ đệm như: tỉ lệ trúng (eng. hit rate), tổn hao trượt (eng.

miss penalties), thời gian truy cập (eng. access time), bộ đệm ánh xạ trực tiếp (eng. direct mapped

cache), bộ đệm kết hợp toàn phần (eng. fully associative cache), bộ đệm kết hợp k đường (eng. k-

way associative cache).

4 Thực hiện

4.1 Cài đặt và làm quen với phần mềm

4.1.1 Cài đặt

Tải bộ công cụ MIPSIT từ địa chỉ:

https://sites.google.com/site/fethutca/my-forms/MipsICT.zip?attredirects=0&d=1.

Giải nén tệp “MipsICT.zip” và chạy tệp nhận được “MipsICT.exe” để phầm mềm tự giải nén vào thứ

mục: “C:\MipsIT”.

Trong bộ phần mềm MIPSIT, ta sẽ sử dụng 2 phần mềm MIPSITStudio (xem bài thí nghiệm số 2) và

Mips Simulator.

4.1.2 Giới thiệu MIPSITStudio

Mipsitstudio là phần mềm mô phỏng hoạt động của hệ thống máy tính dựa trên bộ xử lý MIPS. Gọi

chương trình bằng cách chạy tệp “C:\MipsIT\bin\Mips.exe” (Hình 1).

Phầm mềm mô phỏng việc thực hiện một chương trình (được biên dịch bằng MIPSITStudio) trên một

hệ thống máy tính gồm:

1. Bộ xử lý MIPS (CPU)

2. Bộ đệm lệnh (I-Cache)

3. Bộ đệm dữ liệu (D-Cache)

4. Bộ nhớ chính (RAM)

5. Cửa sổ console (Console)

Page 2: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 2

6. Thiết bị ngoại vi (I/O)

Cửa sổ hiển thị trạng thái của các khối trong hệ thống nói trên được mở bằng cách bấm vào các khối

tương ứng trên sơ đồ khối ở Hình 1.

Hình 1. Chương trình mô phỏng hệ thống máy tính dùng CPU MIPS.

Hình 2. Cửa sổ hiển thị trạng thái của bộ xử lý (Register), bộ nhớ chính (Memory), vào ra (Input&Output), và cửa sổ Console.

Page 3: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 3

Trạng thái của CPU là giá trị của các thanh ghi hiển thị trong cửa sổ thanh ghi (Hình 2). Trạng thái của

RAM là nội dung các ô nhớ (Hình 2). Trạng thái của Console là cửa sổ hiển thị nội dung được chương

trình ghi ra bằng câu lệnh in ra màn hình ví dụ như “printf” (Hình 2). Trạng thái của I/O là cửa sổ hiển

thị nội dung các cổng điều khiển đèn LED ra và các công tắc vào (Hình 2). Cửa sổ D-Cache và I-Cache

hiển thị cấu trúc bộ đệm (ánh xạ trực tiếp, kết hợp toàn phần, hay kết hợp k đường) và nội dung lưu

trong bộ đệm (Hình 3).

Hình 3. Cửa sổ hiển thị trạng thái bộ đệm lệnh (I-Cache) và bộ đệm dữ liệu (D-Cache).

4.1.3 Thiết lập tham số bộ đệm

Trước khi thực hiện mô phỏng, các tham số của bộ đệm cần được thiết lập bằng cách lựa chọn menu

“Edit->Cache/Mem Config”.

Trong các tab “Inst. Cache” và “Data Cache” của cửa sổ thiết lập (Hình 4), các tham số cấu trúc của

bộ đệm lệnh và bộ đệm dữ liệu như kích thước bộ đệm (eng. size), kích thước đường/khối (eng.

block size), số lượng đường/khối trong tập (eng. blocks in sets). (Cần chú ý số lượng đường sẽ xác

định loại bộ đệm: ánh xạ trực tiếp, kết hợp toàn phần hoặc kết hợp k đường).

Ngoài ra, với bộ đệm dữ liệu, ta có thể thiết lập chính sách thay thế (eng. Replacement policy), và

chính sách ghi (eng. Write policy).

Ta có thể vô hiệu hóa (loại bỏ) bộ đệm khỏi hệ thống bằng cách chọn “Disable”. Tổn hao trượt bộ

đệm (thời gian truy cập bộ nhớ chính) sẽ không được tính đến khi mô phỏng nếu chọn “Disable

penalty”.

Hình 4. Cửa sổ thiết lập các tham số cấu trúc bộ đệm I-Cache, D-Cache.

Page 4: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 4

Tổn hao trượt phụ thuộc vào thời gian truy cập bộ nhớ chính. Các tham số này được thiết lập bằng

tab “Memory” (Hình 5). Thời gian đọc và ghi bộ nhớ chính được xác định bằng số chu kz xung nhịp

của CPU. Ở đây có giá trị mặc định là 50 chu kz. Các tham số này phụ thuộc vào công nghệ chế tạo

bộ nhớ chính, được xác định dựa trên các tham số thời gian của RAM (Tham khảo [4]).

Hình 5. Thiết lập thời gian truy cập bộ nhớ chính.

4.1.4 Thực hiện mô phỏng

Chương trình sau khi được biên dịch thành tệp thực thi sẽ được nạp vào bộ nhớ hệ thống mô phỏng

từ phần mềm MIPSITStudio bằng cách lựa chọn menu “Build->Upload->To Simulator” hoặc bằng

phím tắt F5.

Phần mềm mô phỏng sẽ thực hiện chương trình đã đươc nạp bằng cách bấm nút trên thanh

công cụ.

Các kết quả mô phỏng như số lần trúng, trượt bộ đệm, tỉ lệ trúng, số chu kz thực hiện chương trình

được hiện ở phần “Cache Statistics” bên dưới phải của cửa sổ “I-Cache”, “D-Cache”.

Để thực hiện một lần mô phỏng mới, hệ thống cần được khởi tạo lại (eng. reset) bằng menu “CPU-

>Reset”. Sau khi khởi tạo lại, vì bộ đệm và bộ nhớ sẽ trở về trạng thái mặc định, các tham số bộ đệm,

bộ nhớ phải được thiết lập lại. Thêm vào đó, chương trình đã được biên dịch cần được nạp lại từ

MIPSITStudio.

4.2 Tối ưu bộ đệm lệnh cho chương trình copy chuỗi

4.2.1 Bước 1: Chuẩn bị chương trình C.

Tạo một đề án C(minimal)/Assembler trong môi trường MIPSITStudio. Đặt tên đề án này là Bai3-1.

Chọn thư mục để lưu là “C:\MipsIt\Projects\Bai3-1”. Tạo một tệp chương trình C với tên “bai3-1.c”.

Soạn thảo đoạn mã C vào tệp chương trình như Hình 6.

Biên dịch đề án bằng cách lựa chọn menu “Build -> Build Bai3-1” hoặc phím F7.

Page 5: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 5

Hình 6. Chương trình bai3-1.c

4.2.2 Bước 2: Mô phỏng.

Chạy phần mềm mô phỏng “C:\MipsIT\bin\Mips.exe”. Quay về phần mềm MIPSITStudio, nạp chương

trình đã biên dịch vào phần mềm mô phỏng (phím tắt F5). Chương trình có câu lệnh in ra thời gian

thực hiện hàm str_cpy tính bằng số chu kz đồng hồ. Trả lời các câu hỏi:

Câu 1. Thực hiện mô phỏng xác định các kết quả: số lần trúng, số lần trượt bộ đệm, tỉ lệ trúng, số

chu kz thực hiện chương trình thống kê bởi phần mềm mô phỏng (eng. Cycle count) và số chu kz tính

bởi chương trình (eng. Time to copy).

Hit count = ………………………………………………………………………………………………………………………………………….

Miss count = ……………………………………………………………………………………………………………………………………….

Hit rate = …….………………………………………………………………………………………………………………………………………

Cycle count=………………………………………………………………………………………………………………………………………..

Time to copy=………………………………………………………………………………………………………………………………………

Tính toán chỉ số CPI khi hệ thộng thực hiện hàm str_cpy (chú ý thời gian thực tế thực hiện hàm copy

khác thời gian thống kê bởi phần mềm mô phỏng, ở đây ta dùng thời gian thống kê bởi phần mềm

mô phỏng)

CPI=……………………………………………………………………………………………………………………………………………………..

1. /* strcpy.c */ 2. #include <stdio.h> 3. #include <idt_entrypt.h> 4. /* C stringcopy */ 5. static void str_cpy( char *to, const char *from) 6. { 7. while( *from) 8. { 9. *to++ = *from++; 10. } 11. *to = '\0'; 12. } 13. int main() 14. { 15. static char* hello = "Hello"; 16. static char to[4711] = "Function str_cpy"; 17. int Time; 18. printf("String before copy: %s\n", hello); 19. flush_cache(); /* khởi tạo lại các bộ đo bộ đệm */ 20. timer_start(); /* bắt đầu tính thời gian thực hiện hàm str_cpy*/ 21. str_cpy( to, hello); 22. Time = timer_stop(); /* kết thúc tính thời gian thực hiện hàm str_cpy*/ 23. printf("Time to copy: %d\n",Time); /* In ra tổng thời gian copy */ 24. printf("String after copy: %s\n", to); 25. }

Page 6: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 6

Câu 2. Thay đổi chuỗi hello trong chương trình bằng các giá trị “Hello!”, “Hello!!”, “Hello!!!”,

“Hello!!!!” trong đó độ dài của chuỗi tăng lần lượt thêm 1 ký tự. Biên dịch lại chương trình bằng

MIPSITStudio, nạp lại vào phần mềm mô phỏng và mô phỏng lại. Xác định các kết quả cho mỗi lần

mô phỏng và điền vào bảng dưới đây. (Số lệnh là tổng của số lần trúng và số lần trượt của bộ đệm

lệnh).

TT Chuỗi Hit count

Miss count

Number of instructions

Hit rate Cycle count Time to copy

CPI

1 Hello

2 Hello!

3 Hello!!

4 Hello!!!

5 Hello!!!!

Bảng 1. Kết quả mô phỏng chương trình copy các chuỗi có độ dài khác nhau.

Câu 3. Khi ta thêm 1 ký tự vào chuỗi cần copy như trong thí nghiệm ở Câu 2, số lượng lệnh được

thực hiện tăng tương ứng với số lệnh trong vòng lặp từ dòng 7 đến dòng 10 ở Hình 6. Từ Bảng 1 hãy

xác định số lệnh trong vòng lặp của hàm copy chuỗi str_cpy.

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

Câu 4. So sánh kích thước bộ đệm lệnh và số lệnh trong vòng lặp xác định ở Câu 3 và giải thích tại

sao tỉ lệ trúng của bộ đệm lệnh trong Bảng 1 lại thấp.

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

4.2.3 Bước 3: Tối ưu hóa bộ đệm lệnh

Trong phần này, ta thực hiện mô phỏng với các tham số bộ đệm lệnh khác nhau để tìm ra tham số

bộ đệm lệnh tối ưu khi thực hiện chương trình str_cpy.

Câu 5. Thực hiện bài mô phỏng một cách có hệ thống: thay đổi tham số kích thước, kích thước khối,

độ kết hợp của bộ đệm lệnh và tiến hành mô phỏng lại và xác định các kết quả mô phỏng để điền

vào bảng dưới đây. (Tham số về thời gian truy cập bộ nhớ chính được cho trước). Chú ý trước khi

thực hiện lần mô phỏng mới, cần khởi tạo lại CPU, thiết lập các tham số bộ đệm và nạp chương trình

từ MIPSITStudio vào hệ thống.

Page 7: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 7

Kích thước

Kích thước khối

Độ kết hợp

Thời gian truy cập

Cycle count

CPI I-Cache hit rate

I-Cache miss

count

D-cache

hit rate

D-cache miss

count

16 2 1 50

16 4 1 35

16 2 2 50

32 2 1 50

64 2 1 50

Bảng 2. Kết quả mô phỏng thực hiện chương trình copy chuỗi khi thay đổi cấu trúc bộ đệm lệnh.

Câu 6. Giải thích ý nghĩa kết quả mô phỏng trong Bảng 2. Từ đó rút ra tham số bộ đệm tối ưu cho

việc thực thi chương trình str_cpy.

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

4.3 Tối ưu cho chương trình cộng ma trận

4.3.1 Bước 1: Chuẩn bị chương trình C.

Tạo một đề án C(minimal)/Assembler trong môi trường MIPSITStudio. Đặt tên đề án này là Bai3-2.

Chọn thư mục để lưu là “C:\MipsIt\Projects\Bai3-2”. Tạo một tệp chương trình C với tên “bai3-2.c”.

Soạn thảo đoạn mã C vào tệp chương trình như Hình 7. Chương trình bai3-2.c.

Biên dịch đề án bằng cách lựa chọn menu “Build -> Build Bai3-2” hoặc phím F7. Trước khi biên dịch,

thiết lập mức tối ưu biên dịch (eng. Optimization level) là High như Hình 8 bằng cách chọn menu

“Project->Settings…”.

Page 8: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 8

Hình 7. Chương trình bai3-2.c

1. /* matris.c */ 2. #include <stdio.h> 3. #include <idt_entrypt.h> 4. #define MATRIXSIZE 16 5. #define MATRIXSIZE_ROWS 16 6. #define MATRIXSIZE_COLS 16 7. /* Cộng 2 ma trận */ 8. void matrisadd( int res[MATRIXSIZE_ROWS][MATRIXSIZE_COLS], 9. int a[MATRIXSIZE_ROWS][MATRIXSIZE_COLS], 10. int b[MATRIXSIZE_ROWS][MATRIXSIZE_COLS] ) 11. { 12. int i,j; 13. for(j=0; j < MATRIXSIZE; ++j) /* xét từng cột */ 14. for(i=0; i < MATRIXSIZE; ++i) /* xét từng hàng */ 15. res[i][j] = a[i][j] + b[i][j]; 16. } 17. int main() 18. { 19. static int a[MATRIXSIZE_ROWS][MATRIXSIZE_COLS]; 20. static int b[MATRIXSIZE_ROWS][MATRIXSIZE_COLS]; 21. static int res[MATRIXSIZE_ROWS][MATRIXSIZE_COLS]; 22. int i,j, Time; 23. /* khởi tạo 2 ma trận */ 24. for( i=0; i<MATRIXSIZE; ++i) 25. for( j=0; j<MATRIXSIZE; ++j) 26. { 27. a[i][j] = i+j; 28. b[i][j] = i-j; 29. } 30. flush_cache(); /* khởi tạo lại bộ đếm cahce */ 31. timer_start(); /* bắt đầu tính thời gian */ 32. matrisadd( res, a, b); 33. Time = timer_stop(); /* kết thúc tính thời gian */ 34. printf("Time: %d\n",Time); 35. }

Page 9: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 9

Hình 8. Thiết lập mức tối ưu biên dịch High.

4.3.2 Bước 2: Mô phỏng.

Chạy phần mềm mô phỏng “C:\MipsIT\bin\Mips.exe”. Thiết lập các tham số bộ đệm như sau:

Bộ đệm lệnh Bộ đệm dữ liệu

Size = 32 words

Block size = 2 words

Blocks in sets: 1

Size = 16 words

Block size = 2 words

Blocks into sets = 1

Write policy = write-back

Quay về phần mềm MIPSITStudio, nạp chương trình đã biên dịch vào phần mềm mô phỏng (phím tắt

F5).

Khi thực hiện mô phỏng, cần chú ý số chu kz thực hiện chương trình hiển thị cùng cửa sổ I-Cache, D-

Cache bị giới hạn bởi 5 chữ số, do đó kết quả hiển thị ở đây không chính xác nếu số chu kz lớn hơn

99999. Để có được kết quả đúng cho số chu kz, sử dụng số ở cửa sổ thống kê bộ đệm (hiển thị bằng

cách chọn menu “View->I-Cache Stats” và menu “View->D-Cache Stats” (Hình 9).

Hình 9. Cửa sổ thống kê bộ đệm.

Trả lời các câu hỏi:

Câu 7. Thực hiện mô phỏng xác định các kết quả: số lần trúng, số lần trượt bộ đệm, tỉ lệ trúng, số

chu kz thực hiện chương trình thống kê bởi phần mềm mô phỏng (eng. Cycle count). Điền vào bảng

dưới đây.

Page 10: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 10

TT Cycle count Hit count

1 Number of instructions

2 I-Cache hit rate

3 I-Cache miss count

4 D-Cache hit rate

5 D-Cache miss count

Bảng 3. Kết quả mô phỏng chương trình cộng 2 ma trận.

Câu 8. Tại sao trong Bảng 3 ta thu được tỉ lệ trúng bộ đệm lệnh cao? Tại sao tỉ lệ trúng bộ đệm dữ

liệu lại thấp?.

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

4.3.3 Bước 3: Tối ưu hóa bộ đệm dữ liệu

Trong phần này, ta thực hiện mô phỏng với các tham số bộ đệm dữ liệu khác nhau để tìm ra tham số

bộ đệm lệnh tối ưu khi thực hiện chương trình cộng ma trận. Trong phần này hãy thiết lập tham số

cho bộ đệm lệnh ánh xạ trực tiếp như sau: Size = 32 words; Block size = 2 words, Blocks in Sets = 1.

Với bộ đệm dữ liệu đặt giá trị chính sách ghi: Write Policy = Write back.

Câu 9. Thay đổi các giá trị kích thước bộ đệm dữ liệu với các giá trị 16, 32, 64, 128, 256, 512, 1024.

Đặt giá trị tham số Block size = 2 words; Blocks into sets = 1. Thực hiện mô phỏng và điền kết quả

vào bảng dưới đây.

Cache Size 16 32 64 128 256 512 1024

D-Cache Hit rate

Cycle count

Bảng 4. Kết quả mô phỏng chương trình matrisadd khi thay đổi kích thước bộ đệm dữ liệu

Câu 10. Tại sao tỉ lệ trúng của bộ đệm dữ liệu lại thấp? Bắt đầu từ kích thước nào của bộ đệm dữ liệu

thì tỉ lệ trúng bắt đầu tăng? Tại sao?

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

Page 11: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 11

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

Câu 12. Thay đổi giá trị độ kết hợp (eng. associativity) của bộ đệm dữ liệu (tham số blocks in sets)

với các giá trị 1, 2, 4. Đặt kích thước bộ đệm dữ liệu Size = 128 words; Block size = 4 words. Tham số

chính sách thay thế là LRU. Thực hiện mô phỏng và điền vào bảng dưới đây.

Associativity 1 2 4

D-Cache Hit rate

Cycle count

Bảng 5. Kết quả mô phỏng thực hiện chương trình matrisadd khi thay đổi độ kết hợp bộ đệm dữ liệu.

Câu 13. Thay đổi giá trị kích thước khối của bộ đệm dữ liệu (tham số block size) với các giá trị 1, 2, 4.

Đặt kích thước bộ đệm dữ liệu Size = 128 words; Blocks in sets = 1 words. Thực hiện mô phỏng và

điền vào bảng dưới đây.

Block size 1 2 4

D-Cache Hit rate

Cycle count

Bảng 6. Kết quả mô phỏng thực hiện chương trình matrisadd khi thay đổi độ kích thước khối bộ đệm dữ liệu.

Câu 14. Từ kết quả trong Bảng 4, Bảng 5 và Error! Reference source not found. hãy xác định tham số

tối ưu cho bộ đệm dữ liệu.

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

4.3.4 Bước 4: Tối ưu hóa chương trình.

Trong phần này, ta thực hiện thay đổi chương trình nhằm tìm hiểu cấu trúc chương trình tối ưu.

Thay đổi vòng lặp ở dòng 13-15 của chương trình ở Hình 7 để việc cộng được thực hiện cho từng

hàng trước như sau:

13. for(i=0; i < MATRIXSIZE; ++i) /* xét từng hàng */ 14. for(j=0; j < MATRIXSIZE; ++j) /* xét từng cột */ 15. res[i][j] = a[i][j] + b[i][j];

Mô phỏng với các tham số bộ đệm dữ liệu khác nhau để tìm ra tham số bộ đệm lệnh tối ưu khi thực

hiện chương trình cộng ma trận. Trong phần này hãy thiết lập tham số cho bộ đệm lệnh ánh xạ trực

tiếp như sau: Size = 32 words; Block size = 2 words, Blocks in Sets = 1.

Với bộ đệm dữ liệu đặt giá trị chính sách ghi: Write Policy = Write back.

Page 12: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 12

Câu 15. Thay đổi các giá trị kích thước bộ đệm dữ liệu với các giá trị 16, 32, 64, 128, 256, 512, 1024.

Đặt giá trị tham số Block size = 2 words; Blocks into sets = 1. Thực hiện mô phỏng và điền kết quả

vào bảng dưới đây.

Cache Size 16 32 64 128 256 512 1024

D-Cache Hit rate

Cycle count

Bảng 7. Kết quả mô phỏng chương trình matrisadd v.2 khi thay đổi kích thước bộ đệm dữ liệu

Câu 16. Bắt đầu từ kích thước nào của bộ đệm dữ liệu thì tỉ lệ trúng bắt đầu tăng? Tại sao? So sánh

với kết quả ở Câu 10.

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

Câu 17. Thay đổi giá trị độ kết hợp (eng. associativity) của bộ đệm dữ liệu (tham số blocks in sets)

với các giá trị 1, 2, 4. Đặt kích thước bộ đệm dữ liệu Size = 128 words; Block size = 4 words. Tham số

chính sách thay thế là LRU. Thực hiện mô phỏng và điền vào bảng dưới đây.

Associativity 1 2 4

D-Cache Hit rate

Cycle count

Bảng 8. Kết quả mô phỏng thực hiện chương trình matrisadd v.2 khi thay đổi độ kết hợp bộ đệm dữ liệu.

Câu 18. Thay đổi giá trị kích thước khối của bộ đệm dữ liệu (tham số block size) với các giá trị 1, 2, 4.

Đặt kích thước bộ đệm dữ liệu Size = 128 words; Blocks in sets = 1 words. Thực hiện mô phỏng và

điền vào bảng dưới đây.

Block size 1 2 4

D-Cache Hit rate

Cycle count

Page 13: Bài 3

Bài thí nghiệm Kiến trúc máy tính 3 2010

Khoa Điện tử- Viễn thông

Page 13

Bảng 9. Kết quả mô phỏng thực hiện chương trình matrisadd v.2 khi thay đổi độ kích thước khối bộ đệm dữ liệu.

Câu 19. Từ kết quả trong Bảng 7, Bảng 8 và Bảng 9 hãy xác định tham số tối ưu cho bộ đệm dữ liệu.

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

…………………………………………………………………………………………………………………………………………………………….

5 Tài liệu tham khảo

[1] Ola Bergqvist and Georg Fischer. A Simulation and Development Environment Using Animation for Computer Architecture Education. Version 1.3.0, 1999. http://www.imit.kth.se/courses/IS1200/2008-2009/labcache/manual.html http://www.bostream.nu/mats.brorsson/mipsit/

[2] Mats Brorsson. MipsIt - A Simulation and Development Environment Using Animation for

Computer Architecture Education. Proceedings of The workshop on Computer architecture

education. 2002. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.6.7683.

[3] David A. Patterson and John L. Hennessy. Computer Organization and Design, Fourth Edition: The

Hardware/Software Interface. In The Morgan Kaufmann Series in Computer Architecture and Design.

Nov 10, 2008.

[4] Kris Boughton and Rajinder Gill. Everything You Always Wanted to Know About SDRAM

(Memory): But Were Afraid to Ask. Aug. 2010. http://www.anandtech.com/show/3851/everything-

you-always-wanted-to-know-about-sdram-memory-but-were-afraid-to-ask.