1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Ôn tập cuối kỳ môn kiến trúc máy tính

21 255 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ôn tập cuối kỳ Môn: Kiến Trúc Máy Tính
Trường học Trường Đại học Bách Khoa
Chuyên ngành Kiến Trúc Máy Tính
Thể loại Ôn tập
Năm xuất bản 2013
Thành phố TP. HCM
Định dạng
Số trang 21
Dung lượng 595,26 KB

Nội dung

- Kiến trúc single cycle o 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 để

Trang 1

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

Trang 2

Nội dung

I Single clock processor 3

I.1 Single clock processor 3

I.2 Bài tập 6

I.3 Đáp án/Gợi ý 7

II Pipeline processor 9

II.1 Pipeline processor 9

II.2 Bài tập 11

II.3 Đáp án/gợi ý 12

III Memory 14

III.1 Memory 14

III.2 Bài tập: 19

III.3 Đáp án/Gợi ý 20

Trang 3

Thực hành kiến trúc máy tính Ôn tập ktmt CS 2013

3

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

- 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

I 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

o 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

(25=32)

 Để xác định chi tiết thanh ghi ta tham khảo bảng thanh ghi dưới

o 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à 1ngõ 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ệuselect quyết định sự lựa chọn đó

o 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àSTORE mới có thể truy xuất vào khối này

Trang 4

Hình 1: Kiến trúc single cycle processor

- Bảng thanh ghi:

- Bảng giá trị của ALUop

encoding

Trang 5

R-type Sub SUB 0010

- Ý 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 Ý nghĩa Giá trị = 1 Giá trị = 0

RegDest Chọn thanh ghi đích Rd làm thanh ghi đích Rt làm thanh ghi đích

RegWrite Cho phép ghi kết quả ngược Cho phép Không cho phép

vào thanh ghi

ExtOp Dùng cho phần mở rộng dấu Mở rộng dấu Không quan tâm, output của

của khi dùng con số khối này là zero

ALUSrc Chọn kiểu thực thi dựa vào kiểu Thanh ghi với số Thanh ghi với thanh ghi

lệnh như hình xxx

Memwrite Cho phép ghi vào vùng data Cho phép ghi Không cho phép ghi

memory(dùng cho lệnh store)

MemRead Cho phép đọc từ vùng data

memory Cho phép đọc Không cho phép đọc(dùng cho lệnh load)

MemtoReg Dùng để chọn đường từ data Chọn đường từ data Chọn đường từ kết quả của

memory đến thanh ghi memory đến thanh ALU đến thanh ghi(lệnh load) 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)

Beq, Bne Dùng cho các lệnh nhảy có điều

kiện Nếu điều kiện nhảy thỏamãn, PC sẽ dời 1 đoạn Khi điều kiện không thỏa,khi đó PC = PC + 4 ( thực thi

Trang 6

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 Data path

Fetch DecodePC 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:

a) Xác định đường đi có độ trễ lâu nhất của lệnh AND, LOAD, và tính độ trễ đó?

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 bitTham khảo bảng dưới

Trang 7

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

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

Bne 0 Không phải lệnh BNE

J 0 Lệnh branch không phải lệnh jump

Trang 8

PCSrc 0 Điều kiện nhảy không xảy ra

1c)

2a)

2b)

2c)

- 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

Instruction

class

Instruction memory

Register

Data memory

- CPI là số chu kỳ trên lệnh

o 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

- 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

Trang 9

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

o 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 nhảy, rẻ nhánh

o 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

- Hiệu suất của pipe line với single cycle

Ta chia lệnh ra thành k bước

o 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

Ta giả sử single cycle = k* pipeline clock cycle

o Khi đó speedup = (n* k* pipeline clock cycle)/ ((k + n -1) * pipeline clock cycle) 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ênbằ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 thikhá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)

o Tất cả tín hiệu điều khiển được sinh ra ở bước ID

- Mỗi bước dùng 1 số tín hiệu điều kiển

o 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

- 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ạihazard

o Structural hazards: xảy ra khi có sự tranh chấp tài nguyên phân cứng, 2 lệnh cùng dùng chung phần cứng trong cùng chy kỳ

o 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

Trang 10

I: add $s1, $s2, $s3 #thanh ghi $s1 được ghi

J: sub $s4, $s1, $s3 #thanh ghi $s1 được đọc

o Đư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)

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

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

o Chèn stall vào để đảm bảo lệnh trước trả kết quả về mà lệnh sau có thể đọc đượckết quả đó trong chu kỳ kế tiếp( phương pháp này không tốn tài nguyên phầncứng, chỉ tạo ra delay cho chương trình  giảm hiệu xuất)

o 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ệnthự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 Lệnh 2 phụ thuộc 1,

o Lệnh 3 phụ thuộc 1,

o 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)

Trang 11

I: sub $t4, $t1, $t3 # $t1 được đọc trướcJ: add $t1, $t2, $t3 # $t1 được ghi sau

I: sub $t4, $t1, $t3 J: add $t5, $t2, $t3

I: sub $t1, $t4, $t3 J: add $t5, $t2, $t3

o lệnh 3 thì tao forward từ MEM  EXE (cách nhau 2 lệnh)

o lệnh 4 thì tao forward từ WB EXE (cách nhau 3 lệnh)

- Write After Read: Name Dependence

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

- Write After write: Name Dependence

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

- Read After Read: không gây ra sự phụ thuộc

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.

I: sub $t1, $t4, $t3 # $t1 được ghi

J: add $t1, $t2, $t3 # $t1 được ghi lại lần nữa

Trang 12

2) Cho đoạn code sau:

a) 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 đó

b) Chèn stall để giải quyết hazard trên, cần bao nhiêu stall?

c) 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) Dùng kỹ thuật forward để giải quyết hazard thì khi chạy sẽ có bao nhiêu stall.

- 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

Trang 13

- 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)

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 đó

Trang 14

load add jump store branch

Pipe line

III 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ỉ 2n

- 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 RAMCác điểm khác nhau cơ bản giữa SRAM và DRAM

Trang 15

o Thường được làm bằng SRAM

o Mục đích làm giảm thời gian truy xuất memory

- 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)

Trang 16

Đối với truy xuất theo thời gian thì xu hướng là thường giữ block đó trong cache Nhằmtruy 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áclệ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ầntự…

Đố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)

o Direct mapped

 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 đặtvào vị trí m%n trong cache

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)

o Block offset

Trang 17

 Xxác định thành phần nào trong block được truy xuất để xác định bockoffset có bao nhiêu bit thì ta đi xác định trong block đó có bao nhiều phầntử

 Xác định số phần tử bằng cách lấy (size of block)/(size of đơn vị truyxuất)

o 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

o Trong trường hợp direct mapped, tại vì mỗi block chỉ có 1 chổ đặt nên ta không nhắc đến ở đây

o 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)

- Write strategy (chiến lược ghi ngược lại cache, memory)

o Write Back: chỉ updata cache, khi có yêu cầu hay cần thay thế thì mới update giá 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

o Write Through: updata cả cache và memory

 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

o Miss: cần truy xuất mà tìm không thấy trong cache Do đó phải

 Đưa block chứa cái ta muốn truy xuất vào cache sau đó truy xuất nó

o Hit: cần truy xuất và tìm thấy cái muốn truy xuất trong cache

- Miss penaly: số chu kỳ để xử lý cache miss

- Hit rate = hit/(hit + miss)

Trang 18

- 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

o 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%)

=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

o Memory stall cycles = Combined Misses * Miss Penalty

 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

o LS-Count (Load & Store) = I-Count × LS Frequency

o Memory Stall Cycles Per Instruction = Combined Misses Per Instruction × Miss 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 + LSFrequency × D-Cache Miss Rate × Miss Penalty

Ví dụ: Instruction count (I-Count) = 106 lệnh, 30% lệnh loads/stores, D-cachemiss rate là 5% và I-cache miss rate là 1%, cho Miss penalty là 100 chu kỳ, tínhcombined 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

 Total memory stall cycles = 106 * 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ỳ đốivớ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

o AMAT = Hit time + Miss rate * Miss penalty

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

Ngày đăng: 07/08/2021, 07:23

HÌNH ẢNH LIÊN QUAN

Hình 1: Kiến trúc single cycle processor - Ôn tập cuối kỳ môn kiến trúc máy tính
Hình 1 Kiến trúc single cycle processor (Trang 4)

TỪ KHÓA LIÊN QUAN

w