Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 49 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
49
Dung lượng
5,66 MB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THƠNG *** TÀI LIỆU HƯỚNG DẪN THÍ NGHIỆM MƠN KIẾN TRÚC MÁY TÍNH Nhóm biên soạn: Phịng thí nghiệm: C9 306 Họ tên sinh viên: Phùng Huy Hoàng Mã lớp: TN 706615 Mã số SV: 20172578 Lớp: ĐTVT06 – K62 Email: hoang.ph172578@sis.hust.edu.vn Hà Nội 2021 Bài thí nghiệm Kiến trúc máy tnh 2021 Module 1: Tiếp cận phần mềm biên dịch MARS 4.0 1.1 Cơ sở lý thuyết 1.1.1 Kiến trúc máy tính Kiến trúc máy tính khái niệm rộng bao gồm: thiết kế CPU, hoạt động thành phần máy tính cpu lệnh thực nào, đọc ghi liệu với nhớ Kiến trúc máy tính gồm nội dung chính: Kiến trúc tập lệnh: tập lệnh, cách đánh địa nhớ, ghi, định dạng địa liệu Vi kiến trúc: mô tả mức vật lý, trình bày thành phần cpu hoạt động tương tác với để thực lệnh kiến trúc tập lệnh Thiết kế hệt thống: bao gồm vác thành phần khác hệ thống tính tốn đường kết nối hệ thống bus, điều khiển nhớ, truy cập nhớ trực tiếp Các kiến trúc phổ biến cpu gồm: Intel x86: cpu dựa x86 sử dụng kiến trúc tập lệnh CISC phổ biến rộng rãi máy tính PC cho hiệu cao bù lại tiêu tốn nhiều lượng nhà sản xuất phép chế tạo cpu x86 gồm: Intel Arm: tạo công ty ARM kiến trúc sử dụng tập lệnh RISC với ưu điểm tiêu tốn lượng, dùng nhiều thiết bị di động hệ thống nhúng Khác với Intel, Arm không trực tiếp sản xuất cpu mà cấp quyền cho nhà sản xuất khác như: ST, Samsung, Qualcomm, Nvidia… MIPS: tạo MIPS Technologies sử dụng kiến trúc tập lệnh RISC, kiến trúc sử dụng nhiều Vi xử lý quen thuộc với sinh viên PIC, AVR… Bộ mơn kiến trúc máy tính giới thiệu kiến trúc MIPS kiến trúc đơn giản tạo tiền đề để nghiên cứu kiến trúc phức tạo Arm, x86 1.1.2 Kiến trúc MIPS hợp ngữ MIPS 1.1.2.1 Kiến trúc MIPS MIPS hình thành sở RISC Thiết kế MIPS có đặc điểm câu lệnh hồn thành chu kì máy MIPS kiến trúc 32 bit mở rộng lên 64 bit 32 bit hay 64 bit đồng nghĩa với việc có độ rộng đường địa độ dài ghi cpu tương ứng 32 bit hay 64 bit Trong khn khổ mơn kiến trúc máy tính, ta tìm hiểu 32 bit MIPS: 32 bit địa chỉ, đánh địa theo Byte từ 0x00000000 đến 0xFFFFFFFF Các ghi MIPS: Tên Số Ý nghĩa Tên Số Ý nghĩa $zero $0 Hằng số $t8 - $t9 $24 Thanh ghi tạm $at $1 Assembler Temporary $k0 $26 Dự trữ cho nhân $v0 - $v1 $2 - $3 Giá trị trả lại hàm biểu thức $gp $28 Con trỏ toàn cục Page Bài thí nghiệm Kiến trúc máy tnh $a0 $t0 - $t7 $s0 - $s7 $4 - $7 $8 $15 $16 $23 Các tham số hàm Thanh ghi tạm (không giữ giá trị trình gọi làm) Thanh ghi lưu trữ (giữ giá trị suốt trình gọi hàm) 2021 $sp $fp $29 Con trỏ stack $30 Con trỏ flame $ra $31 Địa trỏ Thanh ghi HI & LO: Thao tác nhân MIPS có kết chứa ghi HI & LO Đây ghi đa Bit 32 đến 63 thuộc HI đến 31 thuộc LO Tương tự với phép chia Thanh ghi dấu phẩy động: MIPS sử dụng 32 ghi dấu phẩy động để biểu diễn độ xác đơn số thực Các ghi có tên $f0 - $f31 Để biểu diễn độ xác kép (double precision) MIPS sử dụng ghi có độ xác đơn 1.1.2.2 Hợp ngữ MIPS a Hợp ngữ Hợp ngữ (Assembly) ngơn ngữ lập trình bậc thấp, gồm tập từ khóa từ gợi nhớ gần với ngôn ngữ máy (machine code) Mỗi kiến trúc vi xử lý có tập lệnh (instruction set) riêng, có hợp ngữ riêng dành cho kiến trúc Ở đây, ta tập trung nghiên cứu hợp ngữ dành cho kiến trúc MIPS Mơi trường lập trình sử dụng chương trình MARS MARS mơi trường lập trình giả lập giúp ta viết, biên dịch chạy hợp ngữ MIPS máy x86 Page Bài thí nghiệm Kiến trúc máy tnh 2021 b Cấu trúc của chương trình hợp ngữ MIPS: data #khai báo biến sau thị … text #viết lệnh sau thị Main: #điểm bắt đầu chương trình … c Cách khao báo biến: tên_biến: kiểu_lưu_trữ giá_trị Các kiểu lưu trữ hỗ trợ: word, byte, ascii, asciiz, sapce Lưu ý: tên_biến (nhãn) phải theo sau dấu hai chấm (:) Ví dụ: var1: word #số nguyên 4-byte có giá trị khởi tạo var2: byte ‘a’,’b’ #mảng phần tử, khởi tạo a b int_array: word 0:30 #mảng 30 số nguyên khởi tạo d Cú pháp tổng quát lệnh MIPS ,, - r1: ghi chứa kết - r2: ghi - r3: ghi số e Một số lệnh MIPS Kiến trúc tập lệnh loại lệnh: - I-Type (Immediate) - J-Type (Jump and branch) - R-Type (Register) Lệnh loại R Op rs rt rd sh Fn bits bits bits bits bits bits Mã máy Thanh ghi nguồn Thanh ghi nguồn Thanh ghi đích Khoảng dịch Mã máy mở rộng Op rs rt Toán tử/Offset bits bits bits 16 bits Mã máy Thanh ghi nguồn Thanh ghi nguồn Toán tử trực tiếp (toán tử hẳng số) địa offset Lệnh loại I Lệnh loại J Op Địa đích Page Bài thí nghiệm Kiến trúc máy tnh bits 2021 26 bits Mã máy Địa từ nhớ (địa byte chia cho 4) Ghi chú: Rd: ghi đích Rs, Rt: ghi nguồn Các lệnh in nghiêng lệnh giả (pseudo instructions) Lệnh Load/Store Đây lệnh phép truy xuất nhớ RAM tập lệnh MIPS Cú pháp Ý nghĩa Iw Rd, RAM_src Chép word (4 byte) vị trí nhớ RAM vào Ib Rd, RAM_src Chép byte vị trí nhớ RAM vào byte thấp ghi sw Rs, RAM_dest Lưu word ghi vào vị trí nhớ RAM sb Rs, RAM_dest Lưu byte thấp ghi vào vị trí nhớ RAM li Rd, value Khởi tạo ghi với giá trị la Rd, label Khởi tạo ghi với địa nhãn Nhóm lệnh số học Cú pháp Ý nghĩa add Rd, Rs, Rt Rd = Rs + Rt (kết có dấu) addi Rd, Rs imm Rd = Rs + imm addu Rd, Rs, Rt Rd = Rs + Rt (kết không dấu) sub Rd, Rs, Rt Rd = Rs - Rt subu Rd, Rs, Rt Rd = Rs – Rt (kết không dấu) Mult Rs, Rt (Hi,Lo) = Rs * Rt Div Rs, Rt Lo = Rs / Rt (thương), Hi = Rs % Rt (số dư) mfhi Rd Rd = Hi mfho Rd Rd = Lo move Rd, Rs Rd = Rs Nhóm lệnh nhảy Cú pháp Ý nghĩa j label Nhảy không điều kiện đến nhãn “label” jal label Lưu địa trở vào $ra nhảy đến nhãn ‘label’ (dùng gọi) jr Rs Nhảy đến địa ghi Rs (dùng để trở từ lời gọi) bgez Rs, label Nhảy đến nhãn ‘label’ Rs >=0 bgtz Rs, label Nhảy đến nhãn ‘label’ Rs >0 blez Rs, label Nhảy đến nhãn ‘label’ Rs Open để mở file asm có Bây chỉnh sửa mã nguồn vùng soạn thảo (Hình 1) Nhập mã chương trình Hello-World vào vùng soạn thảo đoạn chương trình bên dưới: Page Bài thí nghiệm Kiến trúc máy tnh 2021 # text assembler directive text # Declare main as a global function globl main # The label 'main' represents the starting point main: # Run the print_string syscall which has code li $v0 , # Code for syscall: print_string la $a0, msg # Pointer to string (load the address of msg) syscall li $v0,10 # Code for syscall: exit syscall # All memory structures are placed after the # data assembler directive data # The asciiz assembler directive creates # an ASCII string in memory terminated by # the null character Note that strings are # surrounded by double-quotes smsg: asciiz "Hello World!\n" Lưu lại với tên Hello-world.asm Biên dịch chương trình cách bấm vào biểu tượng bấm F3 vào menu Run -> Assemble Sau biên dịch thành cơng, chương trình xuất thông báo “Assemble: operation completed successfully” vùng hiển thị thơng báo, đồng thời chương trình tự động chuyển sang giao diện thực thi hình Page Bài thí nghiệm Kiến trúc máy tnh 2021 Thực thi chương trình cách bấm vào biểu tượng bấm F5 Sau thành cơng chương trình xuất thơng báo: “Hello, World” vùng thông báo Yêu cầu: sinh viên thực chạy lại bước (step by step) chương trình Hello-World, quan sát thay đổi ghi Chuyển hiển dạng hiển từ số hex sang số thập phân ngược lại 1.2.3 Chương trình kiểm tra lệnh MIPS Sinh viên tự viết chương trình dùng cách để kiểm tra lệnh sau: add, sub, addu, subu, sll, srl,… Chạy bước (step by step) chương trình quan sát thay đổi giá trị ghi vùng hiển thị giá trị ghi Tham khảo đoạn chương trình: data #data declaration section; specifies values to be stored #in memory and labels whereby the values are accessed text #start of code section main: # Execution begins at lable "main" addi $t0, $0, 100 #$t0 = 100 addi $t1, $0, -4 #$t1 = -4 add $a0, $t1, $t0 #$a0 = $t1 + $t0 li $v0, # system call code for print an integer at $a0 = syscall # call oprating system to perform operation; 1.3 Yêu cầu: A u cầu phịng thí nghiệm Program 1: Hãy viết chương trình MIPS thực hiện: Nhập chữ số từ bàn phím Tính tổng số vừa nhập hiển thị hình Program 2: Hãy viết chương trình MIPS thực hiện: Nhập số N từ bàn phím Tính tổng số N sử dụng vòng lặp while () Page 2020 Bài thí nghiệm Ki n trúc máy Module Hoạt động đệm, tối ưu hóa đệm (Bài thí nghiệm biên soạn dựa thí nghiệm mơn học Kỹ thuật máy tính F Lundevall, Khoa công nghệ thông tin truyền thông, Học viện cơng nghệ Hồng gia, Thụy Điển [1]) Mục đích Trong thí nghiệm sinh viên tìm hiểu đệm xử lý MIPS học cách tối ưu hóa tham số đệm, cách thay đổi cấu trúc chương trình để có hiệu suất tính tốn cao Cơng cụ Bài thí nghiệm sử dụng phần mềm MIPSIT *1+ để mô hoạt động hệ thống máy tính dựa xử lý MIPSIT Lý thuyết Sinh viên cần nắm rõ đệm; tham số đệm mà có ảnh hưởng đến hiệu suất tính tốn xử lý Ngồi sinh viên cần có kiến thức cách xếp lệnh máy biến 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 khái niệm đệ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), đệm ánh xạ trực tiếp (eng direct mapped cache), đệm kết hợp toàn phần (eng fully associative cache), đệm kết hợp k đường (eng kway associative cache) Thực 4.1 Cài đặt làm quen với phần mềm 4.1.1 Cài đặt Tải 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” chạy tệp nhận “ MipsICT.exe” để phầm mềm tự giải nén vào thứ mục: “C:\MipsIT ” Trong phần mềm MIPSIT, ta sử dụng phần mềm MIPSITStudio (xem thí nghiệm số 2) Mips Simulator 4.1.2 Giới thiệu MIPSITStudio Mipsitstudio phần mềm mô hoạt động hệ thống máy tính dựa xử lý MIPS Gọi chương trình cách chạy tệp “C:\MipsIT\bin\Mips.exe” (Hình 1) Phầm mềm mơ việc thực chương trình (được biên dịch MIPSITStudio) hệ thống máy tính gồm: 10 Bộ xử lý MIPS (CPU) Bộ đệm lệnh (I-Cache) Bộ đệm liệu (D-Cache) Bộ nhớ (RAM) Cửa sổ console (Console) Page 23 2020 Bài thí nghiệm Ki n trúc máy Thiết bị ngoại vi (I/O) Cửa sổ hiển thị trạng thái khối hệ thống nói mở cách bấm vào khối tương ứng sơ đồ khối Hình Hình Chương trình mơ hệ thống máy tính dùng CPU MIPS Hình Cửa sổ hiển thị trạng thái xử lý (Register), nhớ (Memory), vào (Input&Output), cửa sổ Console Page 24 2020 Bài thí nghiệm Ki n trúc máy Trạng thái CPU giá trị ghi hiển thị cửa sổ ghi (Hình 2) Trạng thái RAM nội dung nhớ (Hình 2) Trạng thái Console cửa sổ hiển thị nội dung chương trình ghi câu lệnh in hình ví dụ “ printf” (Hình 2) Trạng thái I/O cửa sổ hiển thị nội dung cổng điều khiển đèn LED cơng tắc vào (Hình 2) Cửa sổ D-Cache ICache hiển thị cấu trúc đệm (ánh xạ trực tiếp, kết hợp toàn phần, hay kết hợp k đường) nội dung lưu đệm (Hình 3) Hình Cửa sổ hiển thị trạng thái đệm lệnh (I-Cache) đệm liệu (D-Cache) 4.1.3 Thiết lập tham số đệm Trước thực mô phỏng, tham số đệm cần thiết lập cách lựa chọn menu “ Edit>Cache/Mem Config ” Trong tab “ Inst Cache” “ Data Cache” cửa sổ thiết lập (Hình 4), tham số cấu trúc bộ đệm lệnh đệm liệu kích thước đệm (eng size), kích thước đường/khối (eng block size), số lượng đường/khối tập (eng blocks in sets) (Cần ý số lượng đường xác định loại bộ đệm: ánh xạ trực tiếp, kết hợp toàn phần kết hợp k đường) Ngoài ra, với đệm liệu, ta thiết lập sách thay (eng Replacement policy), sách ghi (eng Write policy) Ta vơ hiệu hóa (loại bỏ) đệm khỏi hệ thống cách chọn “ Disable” Tổn hao trượt đệm (thời gian truy cập nhớ chính) khơng tính đến mơ chọn “ Disable penalty” Hình Cửa sổ thiết lập tham số cấu trúc đệm I-Cache, D-Cache Page 25 2020 Bài thí nghiệm Ki n trúc máy Tổn hao trượt phụ thuộc vào thời gian truy cập nhớ Các tham số thiết lập tab “Memory” (Hình 5) Thời gian đọc ghi nhớ xác định số chu kỳ xung nhịp CPU Ở có giá trị mặc định 50 chu kỳ Các tham số phụ thuộc vào cơng nghệ chế tạo nhớ chính, xác định dựa tham số thời gian RAM (Tham khảo *4+) Hình Thiết lập thời gian truy cập nhớ 4.1.4 Thực mơ Chương trình sau biên dịch thành tệp thực thi nạp vào nhớ hệ thống mô từ phần mềm MIPSITStudio cách lựa chọn menu “ Build->Upload->To Simulator ” phím tắt F5 Phần mềm mơ thực chương trình đươc nạp cách bấm nút cụ công Các kết mô số lần trúng, trượt đệm, tỉ lệ trúng, số chu chương trình phần “Cache Statistics” bên phải cửa sổ “ I-Cache”, “ D-Cache” Để thực lần mô mới, hệ thống cần khởi tạo lại (eng reset ) menu “CPU>Reset ” Sau khởi tạo lại, đệm nhớ trở trạng thái mặc định, tham số đệm, bộ nhớ phải thiết lập lại Thêm vào đó, chương trình biên dịch cần nạp lại từ MIPSITStudio 4.2 Tối ưu đệm lệnh cho chương trình 4.2.1 copy chuỗi Bước 1: Chuẩn bị chương trình C Tạo đề án C(minimal)/Assembler môi trường MIPSITStudio Đặt tên đề án Bai3-1 Chọn thư mục để lưu “C:\MipsIt\Projects\Bai3-1” Tạo 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 Hình Biên dịch đề án cách lựa chọn menu “ Build -> Build Bai3-1” phím F7 Page 26 2020 Bài thí nghiệm Ki n trúc máy /* srcpy.c */ #include #include /* C sringcopy */ /* srcpy.c */ #include #include /* C sringcopy */ sac void sr_cpy( char *o, cons char *from) 10.{ 11.while( *from) 12.{ 13.*o++ = *from++; 14.} 15.*o = '\0'; 16.} 17.in main() 18.{ sac char* hello = "Hello"; sac char o[4711] = "Funcon sr_cpy"; in Time; 22 23 24 25 26 27 28 29 4.2.2 } prin("Sring before copy: %s\n", hello); ush_cache(); /* khởi ạo lại đo đệm */ mer_sar(); /* bắ đầu tnh hời gian hực hàm sr_cpy*/ sr_cpy( o, hello); Time = mer_sop(); /* kế húc tnh hời gian hực hàm sr_cpy*/ prin("Time o copy: %d\n",Time); /* In ổng hời gian copy */ prin("Sring aer copy: %s\n", o); Hình Chương trình bai3-1.c Bước 2: Mơ Chạy phần mềm mơ “C:\MipsIT\bin\Mips.exe” Quay phần mềm MIPSITStudio, nạp chương trình biên dịch vào phần mềm mơ (phím tắt F5) Chương trình có câu lệnh in thời gian thực hàm str_cpy tính số chu kỳ đồng hồ Trả lời câu hỏi: Câu Thực mô xác định kết quả: số lần trúng, số lần trượt đệm, tỉ lệ trúng, số chu chương trình thống kê phần mềm mơ (eng Cycle count ) số chu kỳ tính chương trình (eng Time to copy) Hit count = ……………………1093…………………………………………………………………………………………………………………… Miss count = ……………………693………………………………………………………………………………………………………………… Hit rate = …….……………………0.61………………………………………………………………………………………………………………… Cycle count=…………………10034…………………………………………………………………………………………………………………… Time to copy=……………………8772………………………………………………………………………………………………………………… Tính tốn số CPI hệ thộng thực hàm str_cpy (chú ý thời gian thực tế thực hàm copy khác thời gian thống kê phần mềm mô phỏng, ta dùng thời gian thống kê phần mềm mô phỏng) CPI=………………1.444…………………………………………………………………………………………………………………………………… Page 27 2020 Bài thí nghiệm Ki n trúc máy Câu Thay đổi chuỗi hello chương trình giá trị “Hello!”, “Hello!!”, “Hello!!!”, “Hello!!!!” độ dài chuỗi tăng thêm ký tự Biên dịch lại chương trình MIPSITStudio, nạp lại vào phần mềm mô mô lại Xác định kết cho lần mô điền vào bảng (Số lệnh tổng số lần trúng số lần trượt đệm lệnh) TT Chuỗi Hello Miss Number of Hit rate Cycle count Time to count instructions copy 693 1786 0.61 10034 8772 CP I 1.444 Hello! 1127 Hello!! 1188 715 1842 0.61 10375 9940 1.044 753 1941 0.61 10925 11108 0.983 Hello!!! 1222 Hello!!!! 1256 775 1997 0.61 11245 12276 0.916 797 2053 0.61 11526 13044 0.884 Hit count 1093 Bảng Kết mô chương trình copy chuỗi có độ dài khác Câu Khi ta thêm ký tự vào chuỗi cần copy thí nghiệm Câu 2, số lượng lệnh thực tăng tương ứng với số lệnh vòng lặp từ dòng đến dòng 10 Hình Từ Bảng xác định số lệnh vòng lặp hàm copy chuỗi str_cpy …………………………………………………………………………………………………………………………………………………………… …Số lệnh vòng lặp hàm str_cpy 56 ………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… Câu So sánh kích thước đệm lệnh số lệnh vòng lặp xác định Câu giải thích tỉ lệ trúng đệm lệnh Bảng lại thấp …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… ……Kích thước đệm lệnh lớn số lệnh vòng lặp Tỉ lệ trùng thấp đệm chưa tối ưu ……………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… 4.2.3 Bước 3: Tối ưu hóa đệm lệnh Trong phần này, ta thực mô với tham số đệm lệnh khác để tìm tham số đệm lệnh tối ưu thực chương trình str_cpy Câu Thực mơ cách có hệ thống: thay đổi tham số kích thước, kích thước khối, độ kết hợp đệm lệnh tiến hành mô lại xác định kết mô để điền vào bảng (Tham số thời gian truy cập nhớ cho trước) Chú ý trước thực lần mô mới, cần khởi tạo lại CPU, thiết lập tham số đệm nạp chương trình từ MIPSITStudio vào hệ thống Page 28 2020 Bài thí nghiệm Ki n trúc máy Thời gian Cycle truy cập count CPI Kích thước Kích thước khối Độ kết hợp 16 50 10034 1.44 16 35 16 2 32 64 I-Cache hit rate I-Cache miss count 693 DD-cache cache miss hit rate count 0.70 1.82 12964 1.313 0.72 492 0.69 1.84 50 99347 11.456 0.62 883 0.70 1.82 50 85547 14.324 0.69 545 0.70 1.82 50 77947 13.274 0.74 576 0.70 1.82 0.61 Bảng Kết mô thực chương trình copy chuỗi thay đổi cấu trúc đệm lệnh Câu Giải thích ý nghĩa kết mơ Bảng Từ rút tham số đệm tối ưu cho việc thực thi chương trình str_cpy …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… ………… Khi tăng kích thước đệm số chu giảm đồng thời làm tăng tỉ lệ trúng đệm, CPI tăng ………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… 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 đề án C(minimal)/Assembler môi trường MIPSITStudio Đặt tên đề án là Bai3-2 Chọn thư mục để lưu “C:\MipsIt\Projects\Bai3-2” Tạo 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 Hình Chương trình bai3-2.c Biên dịch đề án cách lựa chọn menu “ Build -> Build Bai3-2” phím F7 Trước biên dịch, thiết lập mức tối ưu biên dịch (eng Optimization level ) High Hình cách chọn menu “ Project->Settings…” Page 29 2020 Bài thí nghiệm Ki n trúc máy /* maris.c */ #include #include #dene MATRIXSIZE 16 #dene MATRIXSIZE_ROWS 16 #dene MATRIXSIZE_COLS 16 /* Cộng ma rận */ void marisadd( in res[MATRIXSIZE_ROWS][MATRIXSIZE_COLS], in a[MATRIXSIZE_ROWS][MATRIXSIZE_COLS], in b[MATRIXSIZE_ROWS][MATRIXSIZE_COLS] ) 12.{ 13.in i,j; for(j=0; j < MATRIXSIZE; ++j) for(i=0; i < MATRIXSIZE; ++i) 13 14 [2] [3] /* xét cột */ /* xét hàng */ res[i][j] = a[i][j] + b[i][j]; } [4]in main() [5]{ sac in a[MATRIXSIZE_ROWS][MATRIXSIZE_COLS]; sac in b[MATRIXSIZE_ROWS][MATRIXSIZE_COLS]; sac in res[MATRIXSIZE_ROWS][MATRIXSIZE_COLS]; in i,j, Time; [10] [11] [12] [13] [14] [15] [16] /* khởi tạo ma trận */ for( i=0; iD-Cache Stats” (Hình 9) Hình Cửa sổ thống kê đệm Trả lời câu hỏi: Câu Thực mô xác định kết quả: số lần trúng, số lần trượt đệm, tỉ lệ trúng, số chu chương trình thống kê phần mềm mơ (eng Cycle count ) Điền vào bảng Page 31 2020 Bài thí nghiệm Ki n trúc máy TT Cycle count Hit count 152278 Number of instructions I-Cache hit rate 0.91 I-Cache miss count 297 D-Cache hit rate 0.13 D-Cache miss count 880 Bảng Kết mơ chương trình cộng ma trận Câu Tại Bảng ta thu tỉ lệ trúng đệm lệnh cao? Tại tỉ lệ trúng đệm liệu lại thấp? …………………………………………………………………………………………………………………………………………………………… Tỉ lệ trùng đệm cao kích thước đệm phù hợp với số lệnh vòng lặp Tỉ lệ trúng đệm liệu thấp kích thước đệm chưa tối ưu …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… 4.3.3 Bước 3: Tối ưu hóa đệm liệu Trong phần này, ta thực mô với tham số đệm liệu khác để tìm tham số đệm lệnh tối ưu thực chương trình cộng ma trận Trong phần thiết lập tham số cho đệm lệnh ánh xạ trực tiếp sau: Size = 32 words; Block size = words, Blocks in Sets = 1.Với đệm liệu đặt giá trị sách ghi: Write Policy = Write back Câu Thay đổi giá trị kích thước đệm liệu với giá trị 16, 32, 64, 128, 256, 512, 1024 Đặt giá trị tham số Block size = words; Blocks into sets = Thực mô điền kết vào bảng Cache Size 16 0.16 DCache Hit rate Cycle 150715 count 0.19 32 0.21 64 0.21 128 0.21 256 0.33 512 1024 0.59 147615 145815 145815 145815 130922 105022 Bảng Kết mô chương trình matrisadd thay đổi kích thước đệm liệu Câu 10 Tại tỉ lệ trúng đệm liệu lại thấp? Bắt đầu từ kích thước đệm liệu tỉ lệ trúng bắt đầu tăng? Tại sao? …………………………………………………………………………………………………………………………………………………………… …Tỉ lệ trúng đệm liệu thấp kich thước đệm liệu chưa tối ưu, lượng liệu ma trận lơn nên kich thước 512 words tỉ lệ trùng bắt đầu tăng đáp ứng lượng liệu ma trận… ……………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… Page 32 2020 Bài thí nghiệm Ki n trúc máy …………………………………………………………………………………………………………………………………………………………… Page 33 2020 Bài thí nghiệm Ki n trúc máy …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… Câu 12 Thay đổi giá trị độ kết hợp (eng associativity) đệm liệu (tham số blocks in sets) với giá trị 1, 2, Đặt kích thước đệm liệu Size = 128 words; Block size = words Tham số sách thay LRU Thực mơ điền vào bảng Associativity D-Cache Hit rate 0.22 Cycle count 224315 0.22 0.22 223315 223115 Bảng Kết mô thực chương trình matrisadd thay đổi độ kết hợp đệm liệu Câu 13 Thay đổi giá trị kích thước khối đệm liệu (tham số block size) với giá trị 1, 2, Đặt kích thước đệm liệu Size = 128 words; Blocks in sets = words Thực mô điền vào bảng Block size D-Cache Hit rate 0.18 Cycle count 100022 0.21 0.22 141265 219865 Bảng Kết mơ thực chương trình matrisadd thay đổi độ kích thước khối đệm liệu Câu 14 Từ kết Bảng 4, Bảng Error! Reference source not found xác định tham số tối ưu cho đệm liệu …………………………………………………………………………………………………………………………………………………………… …Tham số tối ưu cho đệm liệu bổi size: 128 words Block size = words Block insets = words ………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… 4.3.4 Bước 4: Tối ưu hóa chương trình Trong phần này, ta thực 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 chương trình Hình để việc cộng thực cho hàng trước sau: /* xét for(i=0; i < MATRIXSIZE; 13 hàng */ ++i) /* xét cột for(j=0; j < MATRIXSIZE; 14 */ ++j) Page 34 2020 Bài thí nghiệm Ki n trúc máy 15 res[i][j] = a[i][j] + b[i][j]; Mô với tham số đệm liệu khác để tìm tham số đệm lệnh tối ưu thực chương trình cộng ma trận Trong phần thiết lập tham số cho đệm lệnh ánh xạ trực tiếp sau: Size = 32 words; Block size = words, Blocks in Sets = Với đệm liệu đặt giá trị sách ghi: Write Policy = Write back Câu 15 Thay đổi giá trị kích thước đệm liệu với giá trị 16, 32, 64, 128, 256, 512, 1024 Đặt giá trị tham số Block size = words; Blocks into sets = Thực mô phỏng điền kết vào bảng Cache Size D-Cache Hit rate Cycle count 16 32 64 128 256 512 0.16 0.19 0.21 0.21 0.20 0.33 1024 0.59 149415 144015 139715 136515 129272 115573 74672 Bảng Kết mô chương trình matrisadd v.2 thay đổi kích thước đệm liệu Câu 16 Bắt đầu từ kích thước đệm liệu tỉ lệ trúng bắt đầu tăng? Tại sao? So sánh với kết Câu 10 …………………………………………………………………………………………………………………………………………………………… …………Bắt đầu từ kích thước 512 words tie lệ trùng bắt đầu tăng phù hợp với lượng liệu ma trận Kết giống câu 10 ………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… Câu 17 Thay đổi giá trị độ kết hợp (eng associativity) đệm liệu (tham số blocks in sets) với giá trị 1, 2, Đặt kích thước đệm liệu Size = 128 words; Block size = words Tham số sách thay LRU Thực mô điền vào bảng Associativity D-Cache Hit rate 0.22 Cycle count 224315 0.22 0.22 223315 223115 Bảng Kết mô thực chương trình matrisadd v.2 thay đổi độ kết hợp đệm liệu Câu 18 Thay đổi giá trị kích thước khối đệm liệu (tham số block size) với giá trị 1, 2, Đặt kích thước đệm liệu Size = 128 words; Blocks in sets = words Thực Page 35 2020 Bài thí nghiệm Ki n trúc máy mô điền vào bảng Block size 0.18 D-Cache Hit rate Cycle count 82572 Page 36 0.21 0.22 136515 241715 2020 Bài thí nghiệm Ki n trúc máy Bảng Kết mơ thực chương trình matrisadd v.2 thay đổi độ kích thước khối đệm liệu Câu 19 Từ kết Bảng 7, Bảng Bảng xác định tham số tối ưu cho đệm liệu …………………………………………………………………………………………………………………………………………………………… …………………Tham số tối ưu đệm liệu size = 128 words Block size = words Block sets = words………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… 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 2019. http://www.anandtech.com/show/3851/everything- you-always-wanted-to-know-aboutsdram-memory-but-were-afraid-to-ask Page 37 ... MemWrite 10 000 01 0 01 00 000 00 00 000 0 00 00 000 0 10 0 01 1 10 000 01 0 01 01 0 01 22 40 20 40 01 0 40 40 22 10 0 01 1 1 1 Bảng Tín hiệu cho lệnh lw Phần nâng cao – Tùy chọn 5 .1 Cấu trúc xử lý đầy đủ Câu 11 . Nạp... 2 70 20 11 0 2 50 000 0 00 00 000 0 00 00 000 0 00 00 00 01 00 00 000 0 00 00 000 0 00 00 000 0 00 00 00 01 01 0 0 000 0 00 00 000 0 00 00 000 0 00 00 00 01 00 00 00 0 10 0 0 Bảng Tín hiệu cho lệnh rẽ nhánh Câu 8. Kiểm tra kết... ReadData1 ReadData2 ALUInp1 ALUInp2 ALUOp Result Address WriteData opcode RegWrite ALUSrc MemRead MemWrite 10 01 1 00 000 00 00 000 0 00 00 000 0 10 1 01 1 10 000 10 01 1 10 01 1 4 2 70 01 0 4 2 70 10 1 01 1 1 Bảng