Tổng kết về kiến trúc tập lệnh Ưu điểm của kiến trúc Load/Store: Truy cập thanh ghi nhanh hơn so với truy cập bộ nhớ Số bit dùng để đặt tên cho thanh ghi ít hơn so với số bit để đ
Trang 2Lưu ý của tác giả
Không được tự ý sao chép hay quảng bá bài giảng này khi chưa được sự đồng ý của các tác giả.
Địa chỉ liên hệ của các tác giả:
Nguyễn Phú Bình
Email: ngphubinh@yahoo.com Mobile: 0983533925
Website: http://phubinh.vicosoft.com/ktmt
Trần Trung Kiên
Email: trankien_bk@yahoo.com Mobile: 0914919392
Bộ môn Kỹ thuật Máy tính
Khoa Công nghệ Thông tin Trường Đại học Bách Khoa Hà Nội C1- P322, Tel: 8696125
Website: http://ktmt.shorturl.com
Trang 3Nguyễn Phú Bình – Trần Trung Kiên
Bộ môn Kỹ thuật Máy tính, Khoa Công nghệ Thông tin
Trường Đại học Bách Khoa Hà Nội
Trang 4Chương 2
I Kỹ thuật pipelining đối với Scalar
Processor (bộ xử lý vô hướng) ®
II Kỹ thuật pipelining đối với Vector Processor (bộ xử lý kiểu vector)
Trang 5I.Pipelining đối với Scalar Processor
0 Một số kiến thức cơ bản
1 Pipelining trong kiến trúc DLX
2 Vấn đề về hiệu năng đối với
pipelining
3 Các "xung đột" trong kỹ thuật
pipelining
Trang 8Kiến trúc tập lệnh, tập lệnh, lệnh
Khuôn dạng của một lệnh máy:
Mỗi lệnh là một chuỗi số nhị phân mà bộ xử lý hiểu
được để thực hiện một thao tác xác định
Mã thao tác: (Operation Code) mã hóa cho thao tác mà CPU phải thực hiện vd:ADD, MULT,
Tham chiếu toán hạng: mã hóa cho toán hạng hoặc nơi chưa toán hạng mà thao tác sẽ tác động.
Mã thao tác Tham chiếu toán hạng
Trang 9Phân loại kiến trúc tập lệnh
Phân loại theo các cách lưu trữ toán hạng:
Kiến trúc Stack: Toán hạng được lưu trữ tại đỉnh của Stack
Kiến trúc Accumulator: Toán hạng là các thanh chứa
Kiến trúc general-purpose register (GPR): Các toán hạng là các thanh ghi hoặc ô nhớ (Còn gọi tắt làkiến trúc Register):
Trang 10Phân loại kiến trúc tập lệnh
C = A + B
Load A ADD B Store C
Trang 11Kiến trúc Stack
Trang 12Kiến trúc Stack
Trang 13Kiến trúc Stack
Trang 14Kiến trúc Stack
Trang 15Kiến trúc Stack
Trang 16Kiến trúc Accumulator
Trang 17Kiến trúc Accumulator
Trang 18Kiến trúc Accumulator
Trang 19Kiến trúc Accumulator
Trang 21Kiến trúc Register-Memmory
Trang 22Kiến trúc Register-Memmory
Trang 23Kiến trúc Register-Memmory
Trang 24Kiến trúc Register-Memmory
Trang 25Kiến trúc Memory-Memory
Trang 26Kiến trúc Register-Register(Load/Store)
Trang 27Kiến trúc Register-Register(Load/Store)
Trang 28Kiến trúc Register-Register(Load/Store)
Trang 29Kiến trúc Register-Register(Load/Store)
Trang 30Kiến trúc Register-Register(Load/Store)
Trang 32Tổng kết về kiến trúc tập lệnh
Kiến trúc nào là tốt nhất???
Trang 33thường dùng trong các máy tính thời ký đầu
Tất cả các máy tính trong khoảng 10 năm trở lại
đây đều chế tạo theo kiến trúc GPR Và các máy tình hiện nay theo kiểu Register-Register
(Load/Store)
Trang 34Tổng kết về kiến trúc tập lệnh
Ưu điểm của kiến trúc Load/Store:
Truy cập thanh ghi nhanh hơn so với truy cập bộ nhớ
Số bit dùng để đặt tên cho thanh ghi ít hơn so với số bit
để đặt tên cho ô nhớ
Viêc sử dụng thanh ghi cho phép trình biên dịch
(compiler) tối ưu hóa việc thực hiện lệnh (do có thể
không cần thực hiện theo trình tự các lệnh)
Các thanh ghi có thể lưư được tất cả các biến của đoạn code các thao tác nhanh hơn.
Trang 36I.Pipelining đối với Scalar Processor
0 Một số kiến thức cơ bản
1 Pipelining trong kiến trúc DLX
2 Vấn đề về hiệu năng đối với
pipelining
3 Các "xung đột" trong kỹ thuật
pipelining
Trang 38Pipelining là gi?
Pipelinning : Chia chu trình lệnh thành các công
đoạn và cho phép thực hiện gối lên nhau theo kiểu dây chuyền
Các đoạn đó được gọi là pipe stage hay pipe
segment
Pipe Instruction
Stage n
… Stage2
Stage1
Trang 39Pipelining là gi?
Trong pipelining,Throughput là khái niệm để chỉ số
pipeline lệnh được hệ thống thực hiện trong một
đơn vị thời gian
Pipelining không làm rút ngắn được thời gian để
thực hiện một lệnh nhưng nó làm tăng throughputcủa hệ thống
Giả sử 1 lệnh được chia làm 4 phần như sau:
Nhận lệnh (Fetch), Giải mã lệnh(Decode), Thực
hiện (Execute), ghi kết quả (Writing results)
Trang 40Pipelining là gi?
Trang 41Pipelining là gi?
Thời gian để hoàn thành một pipe stage của một lệnh được gọi là 1 chu kỳ máy ( a machine cycle)
Thời gian của một chu kỳ máy bằng với thời gian
thực hiện 1 pipe stage dài nhất
Trang 42Pipelining là gi?
Một trong những nhiệm vụ khi thiết kế các hệ thống dùng kỹ thuật pipelining là phải cần bằng độ dài
giữa các pipe stage
Lý tưởng nhất, thời gian trung bình để thực hiện
các lệnh trong hệ thống sử dụng pipelie là:
Thời gian thực hiện lệnh đó trên máy ko sử dụng pipeline
Số pipe stage
Trang 44Kiến trúc DLX
DLX (Deluxe) là kiến trúc tập lệnh do
Hennessy và Patterson gi ới thiệu ®
Dùng kiến trúc lệnh kiểu Load/Store
Được thiết kế phù hợp để sử dụng
pipelining
RISC Oriented ( Hướng RISC-Reduced
instruction set computer)
Trang 45Kiến trúc DLX
Tập các thanh ghi:
32 thanh ghi thông dụng (general-purpose register,GPR)
32 bit được đặt tên từ R0 đến R31
32 thanh ghi dấu chấm động (Floating Point Register
FPR), F0…F30.
Ngoài ra còn một số thanh ghi đặc biệt có thể dùng như các thanh ghi số nguyên
Các kiểu dữ liệu :
Số nguyên: 8bit, 16 bit, 32 bit
Số dấu chấm động: 32 bit, 64 bit
Hoạt động theo chế độ 32 bit®
Trang 46Kiến trúc DLX
Bộ nhớ:
Định địa chỉ theo byte nhớ
Lưu trữ theo kiểu đầu to (Big Endian mode)
Định địa chỉ toán hạng theo hai chế độ:
-Immediate (toán hạng nguồn là hằng số:Add
Trang 48Kiến trúc DLX
Ví dụ về các thao tác Load/Store:
Regs[F0] <-32 Mem [50+Regs[R3]]
Load float
LF F0,50(R3)
Regs[R1] <-32 Mem [40+Regs[R3]])
Load Byte
LB R1,40(R3)
[30+ Regs [R2 ]]
Load word
LW R1,30(R2)
Trang 49Kiến trúc DLX
Ví dụ về các thao tác của ALU:
if (Regs[R2]<Regs[R3]) Regs[R1] <- 1
else Regs[R1] <- 0
Set less than SLT R1, R2, R3
Regs[R1] <- Regs[R2] + 3 Add
immediateADDI R1, R2, #3
Regs[R1] <- Regs[R2] + Regs[R3]
Add ADD R1, R2, R3
Trang 52Kiến trúc DLX
Ví dụ về lệnh I-type:
Rd = MEM[Rs1 + extend(immediate)]
0x23 load woRd
LW
Rd = Rs1 &
immediate
0x0c and immediate
ANDI
Rd = Rs1 + extend(immediate)
0x08 add immediate
ADDI
Thao tác thực hiện
Mã thao tác
Mô tả câu lệnh Câu lệnh
Trang 53Kiến trúc DLX
Đối với các lệnh I-type rẽ nhánh: Chỉ sử dụng Rs1
và Imm, Rd không cần quan tâm tới Rd:
Rs1: dùng để kiểm tra điều kiện
PC<-PC + Imm
PC += (Rs1 != 0 ? extend(immediate) : 0)
0x05
branch if not equal
to zero BNEZ
PC+=(Rs1==0?
extend (immediate): 0)
0x04
branch if equal to zero
BEQZ
Thao tác thực hiện
Mã thao tác
Mô tả câu lệnh Câu lệnh
Trang 55Kiến trúc DLX
Khuôn dạng lệnh R-type:
Opcode: mã thao tác
Rs1, Rs2: là 2 thanh ghi toán hạng nguồn
Rd: thanh ghi toán hạng đích
Rd <- Rs1 op Rs2
Trang 56Rd = (Rs1 == Rs2 ?
1 : 0)
0x28 set if equal
SEQ
Rd = Rs1 + Rs2 0x20
add ADD
Thao tác thực hiện
Mã thao tác
Mô tả câu lệnh Câu lệnh
Trang 57Thao tác thực hiện
Mã thao tác
Mô tả câu lệnh Câu lệnh
Trang 58Kiến trúc DLX
Thực thi lệnh trong kiến trúc DLX:
Lấy lệnh (Instruction fetch,IF)
Giải mã lệnh (Instruction decode, ID)
Thực hiện lệnh (Execution, EX)
Truy cập bộ nhớ (Memory, MEM)
Ghi kết quả ( Write-back, WB)
Trang 59Kiến trúc DLX
Trang 61Pipelining trong kiến trúc DLX
Mỗi một chu kỳ đồng hồ, bắt đầu thực hiện một
lệnh mới ®
Trang 62Pipelining trong kiến trúc DLX
IM: Instr
Mem DM: Data
Mem CC: Cycle
Clock
Trang 63Pipelining trong kiến trúc DLX
Sau mỗi chu kỳ đồng hồ, các đơn vị chức năng của CPU thực hiện một phần lệnh của các lệnh khác
nhau
Dữ liệu phải được chuyển từ pipe stage này sang piepe stage tiếp theo
Cần có các thanh ghi lưu giá trị của các biến gọi
là pipe register / pipe latchs
Trang 64Pipelining trong kiến trúc DLX
Trang 65I.Pipelining đối với Scalar Processor
0 Một số kiến thức cơ bản
1 Pipelining trong kiến trúc DLX
2 Vấn đề về hiệu năng đối với
pipelining
3 Các "xung đột" trong kỹ thuật
pipelining
Trang 662 Vấn đề về hiệu năng đối với pipelining
Kỹ thuật pipelining làm tăng throughput của hệ thống (tăng thời gian trung bình để thực hiện 1 lệnh bằng cách thực
hiện các lệnh gối lên nhau chứ không làm tăng thời gian
thực hiện từng lệnh riêng biệt)
Các yếu tố ảnh hưởng tới hiệu năng khi sử dụng
pipeline:
Thời gian cho mỗi pipe stage là bằng nhau và bằng thời gian của pipe stage dài nhất
Thời gian quá độ (pipe overhead) xảy ra khi tín hiệu
clock được gửi tới đồng thời nhiều thành phần của hệ
thống (clock skew)
Thời gian thực hiện 1 lệnh pipe line= pipe stage dài
nhất*số pipeline stage + pipe overhead.
Trang 672 Vấn đề về hiệu năng đối với pipelining
Bài tập:
Một máy tính không dùng pipelining: Mỗi lệnh
gồm 6 đoạn, thời gian thực hiện mỗi đoạn lần
lượt là 50ns, 50ns, 60ns, 60ns, 50ns, 50ns
Thực hiện kỹ thuật pipelining trên máy tính đó,
giả sử pipe overload là 5ns
Hỏi: Tốc độ tăng lên bao nhiêu khi thực hiện 10 lệnh, 100 lệnh, 10.000 lệnh?
Trang 68I.Pipelining đối với Scalar Processor
0 Một số kiến thức cơ bản
1 Pipelining trong kiến trúc DLX
2 Vấn đề về hiệu năng đối với
pipelining
3 Các xung đột trong kỹ thuật
pipelining
Trang 69Các xung đột trong kỹ thuật pipelining
Các xung đột (hazard) trong khi thực hiện
pipelining là hiện tượng hệ thống có các lỗi xảy ra
và làm cho pipe stage (1 phần của lệnh kiểu
pipeline) tiếp theo không được thực hiện trong chu
kỳ đồng hồ kế tiếp
Có 3 loại xung đột:
xung đột cấu trúc (Structural hazard)
xung đột dữ liệu (Data hazard)
xung đột điều khiển (Control hazard)
Trang 70Xung đột cấu trúc
Là hiện tượng tranh chấp tài nguyên giữa các đơn
vị /khối chức năng (functional units)
Nguyên nhân:
Các đơn vị chức năng không được tổ chức để hỗ trợ
pipeline một cách đầy đủ Vì vậy chuỗi các thành phần của các lệnh không thể được thực hiện trong cùng một chu kỳ đồng hồ.
Không có đủ các tài nguyên
Trang 71xung đột cấu trúc (…)
VD: Khi thực hiện pipelining trên một máy đơn bộ nhớ sẽ
có thể dẫn tới hiện tượng tranh chấp bộ nhớ giữa MEM
stage của lệnh này với IF stage của lệnh sau đó
WB
7 6
5 4
3 2
1
WB
MEM
EX ID
IF
Load
MEM EX
ID
IF Instr3
WB MEM
EX ID
IF
Instr2
WB MEM
EX ID
IF
Instr1
CLOCK
Trang 72Xung đột cấu trúc (…)
Trang 74Instr3
Buble
Buble Buble
Buble Buble
Stall
7 6
5 4
3 2
1
WB
MEM
EX ID
Trang 75Stall Instr3
7 6
5 4
3 2
1
WB
MEM
EX ID
IF
Instr1
CLOCK
Trang 76Xung đột dữ liệu
Xung đột dữ liệu xảy ra khi: các lệnh sau sử dụng
kết quả của lệnh được thực hiện trước đó
Vd: trong khi đó giai đoạn WB (ghi kết quả trở lại thanh ghi) của lệnh trước chưa kết thúc thì giai
đoạn ID (gồm có đọc dữ liệu từ thanh ghi) của lệnh sau đã bắt đầu
VD:
Trang 77Xung đột dữ liệu (…)
VD ®
Trang 78 All the instructions after the ADD use the result of the ADD instruction (in R1) The ADD instruction writes the value of R1 in the WB stage (shown black), and the SUB instruction reads the value during ID stage (IDsub) This problem is
called a data hazard Unless precautions are taken to prevent it, the SUB
instruction will read the wrong value and try to use it
The AND instruction is also affected by this data hazard The write of R1 does not complete until the end of cycle 5 (shown black) Thus, the AND instruction that reads the registers during cycle 4 (IDand) will receive the wrong result
The OR instruction can be made to operate without incurring a hazard by a
simple implementation technique The technique is to perform register file reads
in the second half of the cycle, and writes in the first half Because both WB for ADD and IDor for OR are performed in one cycle 5, the write to register file by ADD will perform in the first half of the cycle, and the read of registers by OR will perform in the second half of the cycle
The XOR instruction operates properly, because its register read occur in cycle
6 after the register write by ADD.
Trang 79Xung đột dữ liệu (…)
Trang 80Xung đột dữ liệu (…)
Cách khắc phục:
Cách 1: Chèn thêm một thành phần trễ vào pipeline, gọi
là “pipeline interlock”, đây là một thành phần mở rộng
của phần cứng Nó làm nhiệm vụ phát hiện sự phụ thuộc
dữ liệu giữa các câu lệnh và làm trễ những câu lệnh phụ thuộc đó, cho đến khi giải quyết được xung đột
Trang 82Xung đột dữ liệu (…)
VD: Xử lý xung đột dùng interclock:
Xung đột dữ liệu:
Trang 83Xung đột dữ liệu (…)
•The LW instruction does not have the data until the end of clock cycle 4 (MEM) , while the SUB instruction needs to have the data by the begining of that clock cycle (EXsub)
•For AND instruction we can forward the result immediately to the ALU (EXand) from the MEM/WB register(MEM)
•OR instruction has no problem, since it receives the value through the register file (ID) In clock cycle no 5, the WB of the LW instruction occurs "early" in first half of the cycle and the register read of the OR instruction occurs "late" in the second half
of the cycle
•For SUB instruction, the forwarded result would arrive too late - at the end of a
clock cycle, when needed at the begining.
Trang 84Khắc phục xung đột dùng interclock
Trang 85Khắc phục xung đột dùng interclock
Trang 86phát hiện sự phụ thuộc giữa dữ liệu với các câu
lệnh, và sắp xếp lại các câu lệnh đó sao cho hết
xung đột Nếu không sắp xếp được, thì nó sẽ chèn thêm các lệnh NOP (no operation) vào chương
trình để làm trễ
Trang 87EX ID
IF I4
WB MEM
EX WB
WB I3
WB MEM
EX
ID
IF I2
WB
MEM EX
ID IF
I1
8 7
6 5
4 3
2 1
Trang 88EX ID
IF I2
WB MEM
EX WB
WB I4
WB MEM
EX ID
IF I3
WB MEM
EX ID
IF I1
8 7
6 5
4 3
2 1
Trang 89Khắc phục xung đột dữ liệu
Trong những kiến trúc như ngày nay:
Các lệnh phụ thuộc được kiểm tra bởi phần mềm lúc biên dịch (kiểm tra tĩnh - static)
Hoặc:
Được kiểm tra bởi phần cứng khi lệnh được thực thi (kiểm tra động - dynamic)
Trang 90Khắc phục xung đột dữ liệu
Có những phụ thuộc không thể xác định được
trong lúc biên dịch, chỉ đến khi chạy chương trình thì mới phát hiện được Cần kỹ thuật sử dụng
phần cứng
Ví dụ:
Khi thực hiện chương trình thì các câu lệnh mới
được nạp vào bộ nhớ, khi đó mới biết được địa chỉcủa chúng trong bộ nhớ, và khi đó mới có thể giải quyết được vấn đề bằng kỹ thuật kiểm tra động
Trang 91Khắc phục xung đột dữ liệu
Kỹ thuật kiểm tra động sẽ bổ sung cho những
trường hợp mà kỹ thuật kiểm tra tĩnh không giải
Trang 92Khắc phục xung đột dữ liệu
Hai phương pháp kiểm tra động thông dụng:
Phương pháp của Tomasulo
Phương pháp bảng ghi điểm (Scoreboard)
Trang 93Khắc phục xung đột dữ liệu:Tomasulo
Phương pháp của Tomasulo:
Mỗi thanh ghi có 1 bit cờ “busy” và 1 thẻ (tag)
Busy: =1 khi thanh ghi đang được sử dụng
=0 khi thanh ghi nhàn rỗi
Tag: nhận biết đơn vị tính toán nào sẽ ghi kết quả vào thanh ghi đó (Thời gian để ghi vào tag là rất ngắn, coi như bằng 0)
Trang 95Khắc phục xung đột dữ liệu:Tomasulo
CDB (Common Data Bus):
Kết nối tất cả đầu vào, đầu ra của các đơn vị tính toán và các thanh ghi với nhau
Tạo ra khả năng các đơn vị tính toán có thể
nhận trực tiếp kết quả từ một thao tác nào đó màkhông cần phải thông qua thanh ghi
Nói tóm lại, kỹ thuật này cho phép lệnh hiện thời
có thể nhận trực tiếp kết quả của lệnh trước,
trước khi kết quả của lệnh trước được ghi ra
thanh ghi đầu ra
Trang 96Khắc phục xung đột dữ liệu:Tomasulo
VD: Xung đột dữ liệu
Trang 97Khắc phục xung đột dữ liệu:Tomasulo
Trang 99Khắc phục xung đột dữ liệu:Tomasulo
Trang 100Khắc phục xung đột dữ liệu:Scoredboard
Phương pháp Scoreboard (bảng ghi điểm):
“Scoreboard” là một cơ chế phần cứng dùng để quản lý thông tin trạng thái của các câu lệnh, thanh ghi, và đơn vị
functional unit status,
destination register status.
Trang 101Khắc phục xung đột dữ liệu:Scoredboard
Bảng instruction status:
Lưu trữ trạng thái các câu lệnh,
Nó cho biết một lệnh nào đó đã được bắt đầu thực hiện hay chưa (issued)
Nếu trạng thái 1 lệnh là đang được thực hiện thì bảng
này sẽ cho biết lệnh đó đang ở giai đoạn nào
Một lệnh sẽ được issued nếu như đơn vị xử lý còn rỗi và thanh ghi đầu ra chưa bị sử dụng.