TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH
Ôn tập cuối kỳ Môn: Kiến Trúc Máy Tính - 504002
TP. HCM 11/2013
Nội dung I.
Single Single clock processor pro cessor.......................................................................................................... ..........................................................................................................33 I.1
Single Single clock processor pro cessor................................................................................................... ...................................................................................................33
I.2
Bài tập ..........................................................................................................................6
I.3
Đáp án/Gợi ý.................................................................................................................7
II. II.
Pipeline Pipeline processor.............................................................................................................9 processor.............................................................................................................9
II.1
Pipeline Pipeline processor .........................................................................................................9
II.2
Bài tập: ....................................................................................................................... 11
II.3
Đáp án/gợi án/gợi ý ............................................................................................................... 12
III. III.
Memory Memory.......................................................................................................................... 14
III.1 Memory Memory ...................................................................................................................... 14 III.2 Bài tập: ....................................................................................................................... 19 III.3 Đáp án/Gợi án/Gợi ý............................................................................................................... 20
Thực hành kiến trúc máy tính
Ôn tập ktmt CS 2013
Các yếu tố ảnh hưởng đến hiệu xuất của hệ thống. -
Độ dài của chương trình (instruction count) Số chu kỳ trên 1 lệnh (CPI) Thời gian của 1 chu kỳ (clock cycle time)
Các kiểu format của tập lệnh trong MIPS.
-
I.
Op: opcode của lệnh Rs, Rt, Rd: thanh ghi Sa: dùng trong lệnh shift Immediate: đại diện cho số Funct: 6 bit function
Single clock processor
I.1 Single clock processor - Ưa điểm: một clock một chu kỳ - Nhược điểm: một chu kỳ tốn nhiều thời gian, mỗi lệnh dù nhanh hay chậm đều thực thi -
trong một chu kỳ. Kiến trúc single cycle Thanh PC trỏ đến lệnh đang thực thi o Instruction memory: chứa code thực thi, khối này chỉ cho phép đọc o Registers file chứa 32 thanh ghi, do đó cần 5 bit để xác định thanh ghi nào o (25=32) Để xác định chi tiết thanh ghi ta tham khảo bảng thanh ghi dưới Bộ mở rộng dấu: mục đích cơ bản là mở rộng dấu từ con số 16bit 32bits o Bộ chọn (MUX): dùng để chọn ngõ vào trong trường hợp có nhiều ngõ vào và 1 o ngõ ra, hoăc chọn ngõ ra trong trường hợp có 1 ngõ vào và nhiều ngõ ra. Tín hiệu select quyết định sự lựa chọn đó ALU: thực hiện tính toán. o Data memory: là vùng nhớ để chứa dữ liệu trong phần data. Chỉ có lệnh LOAD và o STORE mới có thể truy xuất vào khối này.
3
Thực hành kiến trúc máy tính
Ôn tập ktmt CS 2013
Hình 1: Kiến trúc single cycle processor -
Bảng thanh ghi:
-
Bảng giá trị của ALUop Input output 4bit Op[6bit] funct[6bit] ALUCtrl encoding Add ADD 0000 R-type 4
Thực hành kiến trúc máy tính R-type R-type R-type R-type R-type Addi Slti Andi Ori Xori Lw Sw Beq Bne J -
Sub And Or Xor Slt X X X X X X X X X X
Ôn tập ktmt CS 2013 SUB AND OR XOR SLT ADD SLT AND OR XOR ADD ADD SUB SUB x
0010 0100 0101 0110 1010 0000 1010 0100 0101 0110 0000 0000 0010 0010 X
Ý nghĩa của các tín hiệu điều khiển. Ta mặc định hiểu tín hiệu tích cực là bằng 1, tín hiệu không tích cực là 0
Tín hiệu RegDest RegWrite ExtOp ALUSrc Memwrite MemRead MemtoReg
Beq, Bne J PCSrc ALUop
Ý nghĩa Chọn thanh ghi đích Cho phép ghi kết quả ngược vào thanh ghi Dùng cho phần mở rộng dấu của khi dùng con số Chọn kiểu thực thi dựa vào kiểu lệnh như hình xxx Cho phép ghi vào vùng data memory (dùng cho lệnh store) Cho phép đọc từ vùng data memory (dùng cho lệnh load) Dùng để chọn đường từ data memory đến thanh ghi (lệnh load)
Giá trị = 1 Rd làm thanh ghi đích Cho phép
Giá trị = 0 Rt làm thanh ghi đích Không cho phép
Mở rộng dấu Thanh ghi với số
Không quan tâm, output của khối này là zero Thanh ghi với thanh ghi
Cho phép ghi
Không cho phép ghi
Cho phép đọc
Không cho phép đọc
Chọn đường từ data Chọn đường từ kết quả của memory đến thanh ALU đến thanh ghi ghi(lệnh load) (dùng cho các lệnh tính toán xong kết quả và lưa kết quả đó vào thanh ghi) Dùng cho các lệnh nhảy có điều Nếu điều kiện nhảy thỏa Khi điều kiện không thỏa, kiện mãn, PC sẽ dời 1 đoạn khi đó PC = PC + 4 ( thực thi đến nhãn lệnh tiếp theo Dùng cho lệnh nhảy không có Nhảy đến nhãn cần PC chỉ đến lệnh tiếp theo điều kiện Chọn nguồn cho PC Khi lệnh nhảy xảy ra Khi lệnh nhảy ko xảy ra Chọn thành phần tính trong X X 5
Thực hành kiến trúc máy tính
Ôn tập ktmt CS 2013
ALU (trong ALU có nhiều bộ, bộ cộng, nhân, OR, AND …) Vì có nhiều hơn 2 bộ nên cần dùng nhiều hơn 1 bit Tham khảo bảng dưới Chú ý:
-
Mình sẽ không quan tâm đến RegDest,Memread, MemtoReg khi tín hiệu RegWrite = 0 Khi ALUSrc = 0 thì ta không quan tâm đến Extop Tham khảo thêm bộ tính hiệu của lệnh cụ thể ở slide “Main Control Signal Values” silde 45. Bảng liệt kê đường đi có độ trễ lâu nhất của các lệnh (bỏ qua độ trễ của bộ mở rộng dấu, MUX, ADDER, dây, PC)
Kiểu lệnh ALU Load Store Branch Jump
Data path Instruction Fetch Instruction Fetch Instruction Fetch Instruction Fetch Instruction Fetch
Decode Reg Read Decode Reg Read Decode Reg Read Reg Read Br Target Decode PC Write
ALU Compute Address Compute Address Compare & PC Write
Reg Write Memory Read Reg Write Memory Write
I.2 Bài tập 1) Dùng lại kiến trúc được miêu tả ở hình 1 để giải các câu sau: Cho bảng delay của các khối như sau: I-Mem Adder Mux ALU Regs D-Mem Control
200ps 100ps 30ps 180ps 150ps 200ps 100ps
a) Xác định đường đi có độ trễ lâu nhất của lệnh AND, LOAD, và tính độ trễ đó? 6
Thực hành kiến trúc máy tính
Ôn tập ktmt CS 2013
b) Xác định các tín hiệu của khối control unit (main Unit) khi thực thi lệnh BEQ $1, $2, ABC. Với $1 = 0x00FF, $2 = 0x00FE c) Thành phần phần cứng nào không sử dụng khi ta thực thi lệnh SLTI, lệnh J 2) Bỏ qua delay của các khối add, mux, control. a) Xác định data path và thời gian của các kiểu lệnh a. ALU b. LOAD c. STORE d. BRANCH e. JUMP b) Xác định thời gian, của single cycle và multi-cycle c) Giả sử có 1 chương trình gồm 40% ALU, 20% Loads, 10% stores, 20% branches, & 10% jumps a. Tính CPI trong trường hợp single cycle , multi cylce b. Tính speed up
I.3 Đáp án/Gợi ý 1a) -
lệnh ADD : I-MEM (200) REGs(150) MUX(30) ALU(180) MUX(30) REGs(150) = 740 lệnh LOAD : I-MEM (200) REGs(150) MUX(30) ALU(180) D-MEM(200) MUX(30) REGs(150) = 940
1b) -
Xét lệnh BEQ $1, $2, ABC. Với $1 = 0x00FF, $2 = 0x00FE , lệnh này có ý nghĩa là nếu thanh ghi $1 mà bằng thanh ghi $2 thì nó sẽ nhảy đến nhãn ABC Mà ta thấy nội dung thanh ghi $1 và $2 là khác nhau nên lệnh BEQ không thực hiện nhảy đến nhãn ABC từ đó ta đưa ra tín hiệu cho lệnh đó như sau: Tín hiệu RegDest RegWrite ExtOp ALUSrc Memwrite MemRead MemtoReg Beq Bne J
Giá trị X 0 X 0 0 X X 1 0 0
Giải thích Không quan tâm Không ghi kết quả vào thanh ghi Không quan tâm Thanh ghi với thanh ghi Không truy xuất vào vùng data Không quan tâm Không quan tâm Lệnh BEQ Không phải lệnh BNE Lệnh branch không phải lệnh jump 7
Thực hành kiến trúc máy tính PCSrc ALUop
0 0010
Ôn tập ktmt CS 2013 Điều kiện nhảy không xảy ra Tham khảo bảng xxx trên
1c) -
lệnh SLTI dùng để set giá trị thanh ghi đích lên 1 nếu thanh ghi đem so sánh nhỏ hơn 1 số cho trước, ngược lại nó sẽ reset giá trị thanh ghi đích xuống 0 nếu nếu thanh ghi đem so sánh lớn hơn 1 số cho trước. Ví dụ SLTI $1, $2, 100 thì thanh ghi $1 = 1 khi $2 < 100, ngược lại $1 = 0 khi $2 >= 100 từ đó ta xét đường đi của lệnh như sau: Qua I-MEM (lệnh nào cũng qua I-MEN) -> qua control unit, reg files, không dùng bộ mở rộng dấu, không dùng bộ công cho PC, dùng mux qua ALU không dùng D-MEM qua MUX , Reg files
2a) Instruction class ALU Load Store Branch Jump
Instruction memory 200 200 200 200 200
Register read 150 150 150 150 150
ALU Operation 180 180 180 180
Data Register memory Write 150 200 150 200
Total 680ps 880ps 730ps 530ps 350ps
2b) -
Tính thời gian của single cycle = max của tất cả các lệnh , cụ thể trong trường hợp mày lệnh LOAD có giá trị lớn nhất ( thời gian thực thi lâu nhất) single cycle = 880ps Tính thời gian của multi cycle = max của 5 bước(IF- INSTRUCTION MEMORY, ID – REG FILES, EXE- ALU, MEM – DATA MEMORY, WRITE BACK – REG FILES) trong 1 lệnh, cụ thể trong trường hợp này bước Instruction memory tốn nhiều thơi gian nhất multi cycle = 200ps
2c) -
-
CPI là số chu kỳ trên lệnh CPI của single cycle = 1 o CPI của multi cycle = 0.4×4 + 0.2×5 + 0.1×4+ 0.2×3 + 0.1×2 = 3.8 o Speed up = thời gian chạy của single cycle / thời gian chạy của multi cycle = (1 * 880) / ( 3.8 * 200) = 880/760 = 1.16 Thời gian chạy của 1 chương trình = CPI * thời gian của một cycle. 8
Thực hành kiến trúc máy tính
II.
Ôn tập ktmt CS 2013
Pipeline processor II.1 Pipeline processor -
-
Pipe line chia lệnh thực thi ra thành 5 bước, mỗi bước thực thi trong trong một chu kỳ IF: lấy lệnh từ I-MEM lên. o ID: giải mã lệnh đó là lệnh gì, đọc giá trị thanh ghi, biết được địa chỉ cho lệnh o nhảy, rẻ nhánh EX: thực thi lệnh hay là tính toán địa chỉ cho lệnh load/store o MEM: truy xuất data đối với lệnh load/store o WB: ghi ngược kết quả lại thanh ghi o Hiệu suất của pipe line với single cycle. Ta chia lệnh ra thành k bước Thời gian thực thi n lệnh của single cycle = n * single cycle o Thời gian thực thi n lệnh của pipe line = (k + n -1) * pipeline clock cycle o Ta giả sử single cycle = k* pipeline clock cycle Khi đó speedup = (n* k* pipeline clock cycle)/ ((k + n -1) * pipeline clock cycle ) o Khi n lớn thì speedup tiến đến k (tức là pipeline nhanh tối đa gấp k lần single cycle)
Chú ý:
Pipeline không rút ngắn thời gian thực thi của một lệnh, mà nó chỉ tăng hiệu xuất lên bằng cách tăng thông năng của máy. Khi mà các bước của một lệnh có thời gian thực thi khác nhau thì sẽ làm giảm speed up. Thời gian fill và drain cũng đồng thời làm giảm speed up Để hiện thực pipeline người ta dùng thanh ghi để lưa kết quả lại ở mỗi bước. - Tín hiệu từ khối control unit ( main control) Tất cả tín hiệu điều khiển được sinh ra ở bước ID o - Mỗi bước dùng 1 số tín hiệu điều kiển RegDst được dùng trong bước ID o ExtOp, ALUSrc, ALUCtrl ,J, Beq, Bne, zero được dùng trong bước EXE o MemRead, MemWrite, MemtoReg dùng trong bước MEM o RegWrite dùng trong bước WB o - Khi hiện thực pipe line sẽ sinh ra một số trường hợp hazard, tức là những trường hợp mà ta thực thi theo đúng nguyên tắc của pipe line thì sẽ gây ra sai chương trinh, có 3 loại hazard Structural hazards: xảy ra khi có sự tranh chấp tài nguyên phân cứng, 2 lệnh cùng o dùng chung phần cứng trong cùng chy kỳ Data hazards: xảy ra khi có sự phụ thuộc dữ liệu o Control hazards: xảy ra đối với các lệnh nhảy có điều kiện o
9
Thực hành kiến trúc máy tính
Ôn tập ktmt CS 2013
Khi hazard xảy ra mà ta không xử lý nó hoặc xử lý không được thì sẽ tạo ra delay làm giảm hiệu xuất tính toán. a) Structural hazards:
Ví dụ: Giải quyết Đưa tất cả bước WB qua chu kỳ thứ 5 của lệnh o Hoặc thêm phần cứng cho WB ( thêm 1 cổng đọc/ghi nữa cho register file) o b) Data Hazards Sự phụ thuộc giữa các lệnh: là hiện tượng xảy ra khi lệnh sau lấy kết quả của lệnh phía trước trước khi lệnh phía trước đưa ra kết quả - Read After Write – RAW Hazard I: add $s1, $s2, $s3 #thanh ghi $s1 được ghi J: sub $s4, $s1, $s3 #thanh ghi $s1 được đọc Khi đó data hazard xuất hiện khi lệnh J đọc $s1 mà lệnh I lại chưa tính xong kết quả của $1 Phương pháp giải quết data hazard Chèn stall vào để đảm bảo lệnh trước trả kết quả về mà lệnh sau có thể đọc được o kết quả đó trong chu kỳ kế tiếp( phương pháp này không tốn tài nguyên phần cứng, chỉ tạo ra delay cho chương trình giảm hiệu xuất) Dùng kỹ thuật forward (phương pháp này cần thêm tài nguyên phần cứng để hiện o thực) + chèn stall khi cần thiết. Khi xảy ra hazard đối với lệnh load cho dù ta có dùng kỹ thuật forward thì cũng phải tốn 1 stall để giải quyết chúng Để hiện thực forward người ta thêm bộ mux cho việc lựa chọn input cho ALU Các lệnh khác (khác lệnh load) thì kết quả được cho ra ở bước ALU (EXE) nên khi ta dùng kỹ thuật forward sẽ không còn stall nữa. Giả sử có sự phụ thuộc giữa các lệnh như sau
o o o
1 2 3 4 Lệnh 2 phụ thuộc 1, Lệnh 3 phụ thuộc 1, Lệnh 4 phụ thuộc 1.
Khi dùng kỹ thuật forward cho lệnh o
lệnh 2 thì tao forward từ
EXE EXE (cách nhau 1 lệnh) 10
Thực hành kiến trúc máy tính
Ôn tập ktmt CS 2013
lệnh 3 thì tao forward từ MEM EXE (cách nhau 2 lệnh) lệnh 4 thì tao forward từ WB EXE (cách nhau 3 lệnh) o - Write After Read: Name Dependence I: sub $t4, $t1, $t3 # $t1 được đọc trước J: add $t1, $t2, $t3 # $t1 được ghi sau Rõ ràng là ta thấy không có sự phụ thuộc dữ liệu ở đây, chỉ có phụ thuộc tên biến. Để loai bỏ sự phụ thuộc về tên biến thì ta đổi tên thanh ghi. I: sub $t4, $t1, $t3 J: add $t5, $t2, $t3 - Write After write: Name Dependence I: sub $t1, $t4, $t3 # $t1 được ghi J: add $t1, $t2, $t3 # $t1 được ghi lại lần nữa Rõ ràng là ta thấy không có sự phụ thuộc dữ liệu ở đây, chỉ có phụ thuộc tên biến. kết quả chỉ phụ thuộc vào lệnh J sau. Để loai bỏ sự phụ thuộc về tên biến thì ta đổi tên thanh ghi. I: sub $t1, $t4, $t3 J: add $t5, $t2, $t3 - Read After Read: không gây ra sự phụ thuộc o
II.2 Bài tập: 1) Cho sơ đồ và các thông số của bộ xử lý “single clock” như hình bên dưới.
Thời gian delay của mỗi khối cho như hình bên dưới. 11
Thực hành kiến trúc máy tính
I-Mem ALU Regs D-Mem
Ôn tập ktmt CS 2013
200ps 150ps 200ps 200ps
a) Bỏ qua độ trễ của khối ADD, MUX, Control. Tính single cycle, pipeline clock? b) Tính thời gian thực thi của chương trình gồm 150 line code đối với single cycle và pipeline. Từ đó tính speed up để so sánh single cycle và pipeline ( không có stall) c) Giả sử chương trình không có stall và thống kê được là có ALU 50% Beq 25% lw 15% sw10%. Tính speed up giữa multi cycle và pipeline
2) Cho đoạn code sau:
a) b) c) d)
ADDI $1, $zero, 100 ADDI $2, $zero, 100 ADD $3, $1, $2 LW $4, L_4 LW $5, L_5 AND $6, $4, $5 SW $6, L_KQ Xác định sự phụ thuật giữa các lệnh và thanh ghi nào gây ra sự phụ thuộc đó Chèn stall để giải quyết hazard trên, cần bao nhiêu stall? Sắp xếp lại thứ tự các lệnh sao cho khi chạy đoạn code đó thì ít stall nhất mà tính logic của chương trình vẫn không đổi Dùng kỹ thuật forward để giải quyết hazard thì khi chạy sẽ có bao nhiêu stall.
II.3 Đáp án/gợi ý 1a)
-
Single cycle = thời gian gian thực thi lệnh dài nhất (lệnh load) = I-Mem Regs ALU D-Mem Regs = 200 + 200 + 150 + 200 + 200 = 950ps Pipeline clock = max (I-Mem, Regs, ALU, D-Mem, Regs) = 200
-
Thời gian thực thi 150 của single cycle = 150 * 950 = 142500 ps Thời gian thực thi 150 của pipeline = (5 + 150 - 1)* 200 =30800 ps Speed up = 142500/30800 = 4.62
-
1b)
1c) 12
Thực hành kiến trúc máy tính -
Ôn tập ktmt CS 2013
CPI của multi cycle = (50%* 4 + 25%*3 + 15%*5 + 10%*4) = 3.9 CPI của pipeline khi không có stall là = 1 Thời gian thực thi = CPI * số lệnh * thời gian 1 chu kỳ Speed up = thời gian mutli cycle /thời gian pipeline = (3.9 * số lệnh * 200)/( 1 *số lệnh * 200)
2a)
ADDI $1, $zero, 100 ADDI $2, $zero, 100 ADD $3, $1, $2 LW $4, L_4 LW $5, L_5 AND $6, $4, $5 SW $6, L_KQ Lệnh nào mà các toán hạng được tô màu đậm thể hiện sự phụ thuộc qua thanh ghi đó. 2b) -
9 stall, lúc chèn stall vào đảm báo là những chổ cần đọc giá trị thanh ghi (ID) phải sau chu kỳ ghi kết quả của thanh ghi đó
2c) Một trong những cách sắp xếp làm giảm stall
LW $4, L_4 LW $5, L_5 ADDI $1, $zero, 100 ADDI $2, $zero, 100 AND $6, $4, $5 ADD $3, $1, $2 SW $6, L_KQ Còn lại 3 stall 2d) 1 stall. Sinh viên vẽ hình để hiểu rõ hơn Hình ảnh so sánh single cycle, multi cycle, và pipe line single cycle load 5 Multi cycle
add 5
jump 5
store 5
bran 5 13
Thực hành kiến trúc máy tính load IF ID EXE Pipe line IF ID EXE IF ID IF
III.
MEM WB MEM EXE ID IF
WB MEM EXE ID IF
add IF
ID
Ôn tập ktmt CS 2013
EXE
jump store branch WB ID IF ID IF EXE MEM ID IF ALU
WB MEM WB EXE MEM WB ID EXE MEM WB
Memory
III.1 Memory
Gồm các bus cơ bản sau -
Address:n bit dùng để xác định địa chỉ trong ram, không gian địa chỉ 2 n Data: m bits dùng để xuất/ nhập dữ liệu, độ rộng của ram là mbits OE: output enable , khi tín hiệu này tích cực tương ứng với việc đọc dữ liệu từ RAM WE: write enable , khi tín hiệu này tích cực tương ứng với việc ghi dữ liệu vào RAM
Các điểm khác nhau cơ bản giữa SRAM và DRAM SRAM
DRAM
-
Cấu tạo 6 transistor Đắt, nhanh o Tĩnh, không cần refesh giá trị
-
Đánh địa chỉ theo hàng ….
-
-
-
1 transistor + 1 tụ Rẻ, chậm hơn o Động, vì tụ điện rò rỉ điện theo thời gian nên cần phải refesh giá trị theo chu kỳ Đánh địa chỉ theo ma trận ….
14
Thực hành kiến trúc máy tính
Ôn tập ktmt CS 2013
SRAM
DRAM
-
Cache Do tốc độ phát triển của ALU quá nhanh so với Memory nên tạo ra khoảng cách khá xa giữa ALU và MEM, do đó cần có cache để làm bộ đệm giữa ALU và MEM Thường được làm bằng SRAM o Mục đích làm giảm thời gian truy xuất memory o Tốc độ và thời gian truy xuất của memory được xếp theo thứ tự sau ( chỉ mang tính chất tham khảo) 1. Registers (size < 1 KB), Access time < 0.5 ns o 2. Level 1 Cache (size 8 – 64 KB) Access time: 1 ns o 3. L2 Cache (512KB – 8MB) Access time: 3 – 10 ns o 4. Main Memory (4 – 16 GB) Access time: 50 – 100 ns o 5. Disk Storage (> 200 GB) Access time: 5 – 10 ms o Temporal Locality (thời gian) một biến, thực thể được truy xuất thì có thể nó sẽ được truy xuất lần nữa. thường xuất hiện trong những vòng lặp, hay gọi hàm/thủ tục nhiều lần o
-
-
15
Thực hành kiến trúc máy tính
-
-
-
Ôn tập ktmt CS 2013
Đối với truy xuất theo thời gian thì xu hướng là thường giữ block đó trong cache. Nhằm truy xuất lần sau Spatial Locality (không gian) lệnh/ data trong vùng nhớ khi được truy xuất thì có thể các lệnh/data gần nó sẽ được truy xuất. thường xuất hiện trong khai báo mãng, thực thi tuần tự… Đối với truy xuất theo không gian thì xu hướng là thường chuẩn bị trước block kế tiếp. Block placement ( phương pháp đặt block vào cache) Direct mapped o Mỗi block được xác định một vị trí đặt duy nhất. n là số block trong cache thì block thứ m trong bộ nhớ (RAM) sẽ được đặt vào vị trí m%n trong cache Full associative o Mỗi block được đặc vào vị trí nào mà còn trống trong cache. Set associative o Mỗi block được xác định một set duy nhất. trong set đó có k sự lựa chọn, đặt block vào 1 trong k chổ trống đó n là số set trong cache thì block thứ m trong bộ nhớ (RAM) sẽ được đặt vào vị trí m%n trong cache ví dụ:
Trong K- way Set associative thì k block sẽ gộp thành 1 set, ở ví dụ trên k = 2. - Block identification (xác định block) Để xác định địa chỉ người ta chia địa chỉ ra làm 3 phần (Tag, Index, block offset) 31 Tag Index Block offset o
0
Block offset 16
Thực hành kiến trúc máy tính
o
Ôn tập ktmt CS 2013
Xxác định thành phần nào trong block được truy xuất. để xác định bock offset có bao nhiêu bit thì ta đi xác định trong block đó có bao nhiều phần tử Xác định số phần tử bằng cách lấy (size of block)/(size of đơn vị truy xuất)
Index:
xác định số block trong cache trong trường hợp Direct mapped, Xác định số block bằng cách lấy (size of cache)/(size of block) Xác định số set trong cache trong trường hợp k-way set associative Xác định số set bằng cách xác định số block sau đó lấy số block đó chia cho k. Bằng 0 trong trường hợp full associative
o
Tag
Để xác định block nào đang nằm trong cache Tag bit = 32 – index bits – block offset bits ( trong kiến trúc 32 bits) Block replacement (thay thế block): Khi một block vào mà không còn chổ trống để đặt vào thì cần phải thay block cũ bằng block mới Trong trường hợp direct mapped, tại vì mỗi block chỉ có 1 chổ đặt nên ta không o nhắc đến ở đây FIFO ( cái nào được đặt vào trước thì sẽ được lấy ra trước) o Ramdom o LRU ( cái nào ít dùng nhất thì được thay thế trước) o Write strategy (chiến lược ghi ngược lại cache, memory) Write Back: chỉ updata cache, khi có yêu cầu hay cần thay thế thì mới update giá o trị sau cùng xuống memory Cần bit valid (để xác định block đó có valid hay không) và bit modified (để xác định block đó có update chưa) Khó hện thực Ít tốn lưa lượng băng thông của hệ thống Write Through: updata cả cache và memory o Cần bit valid (để xác định block đó có valid hay không) Đơn giản dễ hiện thực Tốn lưa lượng băng thông của hệ thống vì phải update nhiều Miss/hit Miss: cần truy xuất mà tìm không thấy trong cache. Do đó phải o Đưa block chứa cái ta muốn truy xuất vào cache sau đó truy xuất nó Hit: cần truy xuất và tìm thấy cái muốn truy xuất trong cache. o Miss penaly: số chu kỳ để xử lý cache miss Hit rate = hit/(hit + miss)
-
-
-
-
17
Thực hành kiến trúc máy tính -
-
Ôn tập ktmt CS 2013
Miss rate = miss /(hit + miss) = 1 – hit rate I-Cache Miss Rate = Miss rate trong lúc truy xuất I-MEM D-Cache Miss Rate = Miss rate trong lúc truy xuất D-MEM Ví dụ: chương trình có 1000 lệnh trong đó có 25% là load/store. Biết lúc đọc I-MEM bị miss 150, D-MEM bị miss 50. Tìm I-Cache Miss Rate, D-Cache Miss Rate I-Cache Miss Rate = số lần miss / số lần truy xuất I-MEM = 150/1000 = 15% o I-Cache Miss Rate = số lần miss / số lần truy xuất D-MEM = 50/(1000*25%) o =50/250 = 20% Khi cache miss thì sẽ gây ra stall để xác định bao nhiêu stall ta đi tìm các thông số sau Memory stall cycles = Combined Misses * Miss Penalty o Miss Penalty: clock cycles to process a cache miss Combined Misses = I-Cache Misses + D-Cache Misses I-Cache Misses = I-Count × I-Cache Miss Rate D-Cache Misses = LS-Count × D-Cache Miss Rate LS-Count (Load & Store) = I-Count × LS Frequency o Memory Stall Cycles Per Instruction = Combined Misses Per Instruction × Miss o Penalty Combined Misses Per Instruction = I-Cache Miss Rate + LS Frequency × D-Cache Miss Rate Memory Stall Cycles Per Instruction = I-Cache Miss Rate × Miss Penalty + LS Frequency × D-Cache Miss Rate × Miss Penalty Ví dụ: Instruction count (I-Count) = 106 lệnh, 30% lệnh loads/stores, D-cache miss rate là 5% và I-cache miss rate là 1%, cho Miss penalty là 100 chu kỳ, tính combined misses per instruction and memory stall cycles 1% + 30% * 5% = 0.025 combined misses mỗi lệnh tương đương 25 misses per 1000 instructions Memory stall cycles = 0.025 * 100 (miss penalty) = 2.5 stall cycles per instruction 6 Total memory stall cycles = 10 * 2.5 = 2,500,000 CPI CPIMemoryStalls = CPIPerfectCache + Mem Stalls per Instruction Ví dụ: cho CPI = 1.5 khi không có stall, Cache miss rate là 2% đối với instruction và 5% đối với data. Lệnh loads và stores chiếm 20%. Cho trước miss penalty là 100 chu kỳ đối với I-cache và D-cache. Tính CPI của hệ thống? Mem stalls cho mỗi lệnh = 0.02*100 + 20%*0.05*100 =3 CPIMemoryStalls = 1.5 + 3 = 4.5 cycles Average Memory Access Time (AMAT) thời gian truy xuất bộ nhớ trung bình AMAT = Hit time + Miss rate * Miss penalty o Do đó để giảm thời gian truy xuất thì Ta giảm Hit time: bằng cách dùng bộ nhớ cache nhỏ, đơn giản
-
-
18
Thực hành kiến trúc máy tính
Ôn tập ktmt CS 2013
Giảm Miss Rate: bằng cách dùng bộ nhớ cache lớn, block size lớn và kway set associativity với k lớn Giảm Miss Penalty bằng cách thiết kêt nhiều cache nhiều mức Ví dụ: tìm AMAT khi biết Cache access time (Hit time) of 1 cycle = 2 ns, Miss penalty = 20 clock cycles, miss rate of 0.05 per access
AMAT = 1 + 0.05 × 20 = 2 cycles = 4 ns o
Khi không có cache thì tra truy xuất trực tiếp xuống memory nên tốn 20 chu kỳ (miss penalty)
III.2 Bài tập: 1) Cho bộ nhớ cache có dung lượng 256KB, block size là 4word, mỗi lần truy xuất 1byte. Xác định số bit của các trườn tag, index, block offset trong các trường hợp a) Direct mapped b) Full associcative c) 2 way set associcative 2) Cho bộ nhớ cache có dung lượng 1MB, block size là 256B, mỗi lần truy xuất 1 word. Xác định số bit của các trườn tag, index, block offset trong các trường hợp a) Direct mapped b) Full associcative c) 4 way set associcative 3) Trong cache có 8 block, mỗi block là 4word. Xác định số lần miss/ hit khi hệ thống truy xuất vào các địa chỉ theo tứ tự sau. 0x0001002A 0x00010020 0x0002006A 0x00020066 0x00020022 0x0001002B Trong các trường hợp a) Direct mapped b) Full associcative c) 2 way set associcative 4) Các bài tập về miss rate , cpi coi ví dụ và làm bài tập trong slide
19
Thực hành kiến trúc máy tính
Ôn tập ktmt CS 2013
III.3 Đáp án/Gợi ý 1) -
Số phần tử trong 1 block = (size of block)/(size of phần tử truy xuất) = 4 word /1 byte = 4*4 bytes/ 1 byte = 16 Số khối block trong cache = size of cache / size of block = 256KB / 4 word = 28*210/4*4 = 214 blocks
1a) Direct mapped: block offset 4 bits, index = 14 bits, tag = 32 – 4 -14 = 14 bits 1b) Full associcative: block offset 4 bits, index = 0 bits, tag = 32 – 4 = 28 bits 1c) 2 Ways set associative: 2 block tạo thành 1 set mà có 2 14 block nên có 213 sets Block offset 4 bits, index = 13 bits, tag = 32 – 4 -13 = 15 bits 2) Số phần tử trong 1 block = (size of block)/(size of phần tử truy xuất) = 256B / 4 bytes = 28 bytes/ 22 byte = 26 - Số khối block trong cache = size of cache / size of block = 1MB / 256B = 210*210/28 = 212 blocks -
2a) direct mapped: block offset 6 bits, index = 12 bits, tag = 32 – 6 -12 = 14 bits 2b) full associcative: block offset 6 bits, index = 14 bits, tag = 32 – 4 = 28 bits 2c) 4 ways set associative: 4 block tạo thành 1 set mà có 2 12 block nên có 210 sets Block offset 6 bits, index = 13 bits, tag = 32 – 6 -10 = 16 bits 3) 3a) Dựa vào đề tài ta tính được có 4 bits block offset, 3 bit index. Do đó ta phân tích địa chỉ như bên dưới address Tag Index Block Miss Giải thích offset /hit 0x0001002A 0000 0000 0000 0001 0000 0000 0 010 1010 M First access 0x00010020 0000 0000 0000 0001 0000 0000 0 010 0000 H 0x0002006A 0000 0000 0000 0010 0000 0000 0 110 1010 M First access 0x00020066 0000 0000 0000 0010 0000 0000 0 110 0110 H 0x00020022 0000 0000 0000 0010 0000 0000 0 010 0010 M Khác tag 0x0001002B 0000 0000 0000 0001 0000 0000 0 010 1011 M Khác tag 3b) Full associative 20
Thực hành kiến trúc máy tính address
Ôn tập ktmt CS 2013
Tag
Block offset 1010 0000 1010 0110 0010 1011
Miss /hit M H M H M H
Giải thích
Index Block offset 10 1010 10 0000 10 1010 10 0110 10 0010 10 1011
Miss /hit M H M H M M
Giải thích
0x0001002A 0000 0000 0000 0001 0000 0000 0010 0x00010020 0000 0000 0000 0001 0000 0000 0010 0x0002006A 0000 0000 0000 0010 0000 0000 0110 0x00020066 0000 0000 0000 0010 0000 0000 0110 0x00020022 0000 0000 0000 0010 0000 0000 0010 0x0001002B 0000 0000 0000 0001 0000 0000 0010 3c) 2 ways set associative, cần 2 bit index address
Tag
0x0001002A 0x00010020 0x0002006A 0x00020066 0x00020022 0x0001002B
0000 0000 0000 0001 0000 0000 00 0000 0000 0000 0001 0000 0000 00 0000 0000 0000 0010 0000 0000 01 0000 0000 0000 0010 0000 0000 01 0000 0000 0000 0010 0000 0000 00 0000 0000 0000 0001 0000 0000 00
First access First access First access
First access First access Khác tag Khác tag
21