dụng cho cùng 1 lệnh, một số tài nguyên phải nhân đôi VD., bộnhớ lệnh và dữ liệu riêng biệt, một vài bộ cộng bộ ghép được dùng ở đầu vào của các tài nguyên dùng chung vàđược điều khiển
Trang 2Sách Computer Org and Design, 3rd Ed., Patterson &Hennessy, ©2007
Digital Design and Computer Architecture, David Money Harris
Thí nghiệm 3 bài
Bài tập Theo chương, đề bài xem trên trang web
Trang 3Điểm số
Tối đa: 100 điểm, Bắt đầu: 50 điểm Tích lũy, trừ qua trả lời câu hỏi trên lớp và đóng góp tổ chức lớp
Trang 4Lịch học
Thời gian:
trước 2 ngày
Trang 5Kết luận chương 2
Dữ liệu và chỉ thị cho máy tính được biểu diễn bằng các chuỗi bit
phương pháp mã hóa
Thiết kế kiến trúc tập lệnh:
Định dạng và mã hóa chỉ thị: Chỉ thị được giải mã thế nào?
Vị trí toán hạng và kết quả
Số lượng toán hạng?
Giá trị toán hạng được lưu ở đâu?
Kết quả được lưu ở vị trí nào?
Các toán hạng bộ nhớ được định vị thế nào?
Kiến trúc tập lệnh MIPS(RISC) được thiết kế dựa trên 4 nguyên
tắc cơ bản
Bộ cộng trừ nhân chia được triển khai bằng các phần tử logic hay
bằng thuật toán
Trang 6Nguyên tắc thiết kế MIPS (RISC)
Tính đơn giản quan trọng hơn tính quy tắc(Simplicity favors regularity)
Tăng tốc các trường hợp thông dụng
Các toán hạng số học lấy từ thanh ghi (máy tính dựa trên cơ chế store)
load- Các chỉ thị có thể chứa toán hạng trực tiếp
Thiết kế tốt đòi hỏi sự thỏa hiệp
3 loại định dạng chỉ thị
Trang 8Bộ xử lý: Đường dữ liệu và điều khiển
Triển khai các lệnh
Triển khai các pha hoạt động
Instruction Decode
Operand Fetch Execute
Result Store
Next Instruction
Fetch
PC = PC+4
Decode Exec,
Store
Trang 9Thiết kế đồng bộ theo đồng hồ
phần tử trạng thái là hợp lệ và ổn định được quy định bởi xung đồng hồ
Hoạt động thông thường:
State element 1
State element 2
Combinational logic
clock
one clock cycle
Các phần tử trạng thái được ghi ở tất cả các chu kỳ
đồng hồ Nếu không: cần tín hiệu điều khiển việc ghi
Trang 10Instruction Memory Add
Store
Trang 11File
Read Data 1
Read Data 2
Control Unit
Đọc 2 giá trị toán hạng nguồn từ tệp thanh ghi
Fetch
PC = PC+4
Decode Exec,
Store
Trang 12Thực hiện lệnh loại R
Lệnh định dạng R ( add, sub, slt, and, or )
Register
File
Read Data 1
Read Data 2
ALU
overflow zero
ALU control RegWrite
Trang 13Thực hiện lệnh đọc ghi bộ nhớ
ghi (sw) giá trị (được đọc từ tệp thanh ghi khi giải mã lệnh) vào bộ
Register
File
Read Data 1
Read Data 2
ALU
overflow zero
ALU control RegWrite
Data Memory
Address
Write Data
Read Data
Sign Extend
MemWrite
MemRead
Trang 14Thực hiện lệnh rẽ nhánh có điều kiện
trường offset 16 bit đã được mở rộng dấu
Instruction
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
ALU
zero ALU control
Sign Extend
Shift left 2
Add
PC
Branch target address
(to branch control logic)
Trang 15Thực hiện lệnh nhảy không điều kiện
Read Address Instruction
Instruction Memory Add
PC
4
Shift left 2
Jump address
26
4
28
Trang 16dụng cho cùng 1 lệnh, một số tài nguyên phải nhân đôi (VD., bộnhớ lệnh và dữ liệu riêng biệt, một vài bộ cộng)
bộ ghép được dùng ở đầu vào của các tài nguyên dùng chung vàđược điều khiển bằng tín hiệu điều khiển
Chu kỳ đồng hồ: xác định bằng độ dài đường dữ liệu dài nhất
Trang 17Đường dữ liệu: Phần nạp, thực hiện lệnh R, lw,sw
Các tín hiệu điều khiển bộ ghép: lựa chọn đầu vào cho các khối chức năng được tính bằng khối điều khiển từ
trường mã lệnh (opcode) và trường chức năng lệnh (funct)
MemtoReg
Read
Address Instruction
Instruction Memory Add
PC
4
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
ALU
ovf zero
ALU control RegWrite
Data Memory
ALUSrc
Trang 184
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
MemtoReg ALUSrc
Shift left 2
Add
PCSrc
RegDst
ALU control
1
1 1
Control Unit
Instr[31-26]
Branch
Trang 194
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
MemtoReg ALUSrc
Shift left 2
Add
PCSrc
RegDst
ALU control
1
1 1
Control Unit
Instr[31-26]
Branch
Trang 204
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
MemtoReg ALUSrc
Shift left 2
Add
PCSrc
RegDst
ALU control
1
1 1
Control Unit
Instr[31-26]
Branch
Trang 21BXL đơn xung nhịp – Thêm lệnh nhảy
Read
Address Instr[31-0]
Instruction Memory Add
PC
4
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
MemtoReg ALUSrc
Shift left 2
Add
PCSrc
RegDst
ALU control
1
1 1
Control Unit
Instr[31-26]
Branch
Shift left 2
0 1
Trang 22Tính chu ky đồng hồ Tc – Đường dài nhất
Instr I Mem Reg Rd ALU Op D Mem Reg Wr Total R-
Trang 23Ví dụ 3.1 – Hiệu năng thiết kế đơn xung nhịp
Not used
Not used
Not used
Not used
Not used
Not used
Not used
Not used
Trang 24Thiết kế đơn xung nhịp – Ưu nhược điểm
Sử dụng chu kỳ đồng hồ không hiệu quả – chu kỳ đồng hồ được đặt theo lệnh chậm nhất
động
Tốn diện tích thiết kế vì cần nhân đôi một số khối chức
năng (VD bộ cộng) vì chúng không thể được chia sẻ trong cùng 1 chu kỳ đồng hồ
Trang 25So sánh đánh giá thiết kế đơn xung nhịp
So sánh với các bộ xử lý trên thị trường:
Một bộ xử lý 2.5 GHz với 20 giai đoạn pipeline có độ trễ khoảng:
Lưu lượng của bộ xử lý có pipeline tốt hơn rất nhiều:
Tốt hơn tới 20 lần với các bộ xử lý phát hành đơn lệnh
Tốt hơn tới 100 lần với các bộ xử lý phát hành đa lệnh
Trang 26Thiết kế đa xung nhịp
thực hiện trong 1 chu kỳ xung nhịp
o Thời gian thực hiện (= số pha) của mỗi lệnh được điều chỉnh tùy thuộc
độ phức tạp của lệnh
một khối chức năng cụ thể không cần trong toàn bộ các pha thực hiện của lệnh
Clock
Clock
3 cycles 5 cycles 3 cycles 4 cycles
Time saved
Trang 27Ví dụ 3.2 – Hiệu năng thiết kế đa xung nhịp
Not used
Not used
Not used
Not used
Not used
Not used
Not used
Not used
Trang 28So sánh đánh giá thiết kế đa xung nhịp
So sánh với các bộ xử lý trên thị trường:
Không tồi nếu so sánh độ trễ thực hiện 1 lệnh
Một bộ xử lý 2.5 GHz với 20 giai đoạn pipeline
Lưu lượng của bộ xử lý có pipeline
tốt hơn rất nhiều:
Tốt hơn tới 20 lần với các bộ xử lý
phát hành đơn lệnhTốt hơn tới 100 lần với các bộ xử lý
phát hành đa lệnh
Trang 29Thiết kế đơn xung nhịp
/
cache
Instr cache
Next addr
Reg file
16
Register input
Data out Func
Trang 30Thiết kế đa xung nhịp
2
Trang 31Đường ống (Eng pipeline): Kết hợp ưu điểm
Trang 32Dây chuyền sản xuất trong nhà máy
Trang 33Tăng hiệu năng (tốc độ) bằng cách nào?
Bắt đầu nạp và thực hiện lệnh tiếp theo trước khi lệnh hiện tại kết thúc:
hiện đại
tăng tốc độ bằng số giai đoạn đường ống Đường ống 5 giai đoạn
Trang 345 giai đoạn đường ống của lệnh lw
IFetch: Nạp lệnh và cập nhập giá trị PC
IDec: Đọc thanh ghi và giải mã lệnh
EXec: Thực hiện lệnh R; tính địa chỉ bộ nhớ
MEM: Đọc/ghi bộ nhớ dữ liệu
WB: Ghi kết quả vào tệp thanh ghi
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
lw
Trang 35Đường ống trong MIPS
Bắt đầu lệnh tiếp theo trước khi lệnh hiện tại kết thúc
khoảng thời gian
độ trễ lệnh (thời gian thực hiện, thời gian đáp ứng – thời gian từ
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
lw
Cycle 7 Cycle 6 Cycle 8
chu kỳ đồng hồ (thời gian 1 giai đoạn đường ống) quyết định bởi giai đoạn chậm nhất
một số giai đoạn không dùng toàn bộ chu kỳ đồng hồ (VD., WB)
một số lệnh, có các giai đoạn là chu kỳ lãng phí (nghĩa là, không thực hiện gì trong chu kỳ đó với lệnh đó)
Trang 36Ví dụ 3.3 – Pipeline vs Đơn xung nhịp
lw IFetch Dec Exec Mem W B
Triển khai pipeline (Tc = 200 ps):
IFetch Dec Exec Mem WB sw
IFetch Dec Exec Mem W B
Để hoàn thành 1 lệnh trong trường hợp pipeline cần 1000
ps (So với 800 ps trong trường hợp đơn xung nhịp) Tại sao?
Để thực hiên 1.000.000 lệnh “adds” cần thời gian bao lâu?
400 ps
Trang 37Kỹ thuật đường ống cho MIPS(RISC) ISA
- Có thể tính địa chỉ bộ nhớ ở giai đoạn EX ( thực hiện lệnh )
máy) ở 2 giai đoạn cuối (MEM or WB)
chuyển dữ liệu chỉ cần 1 lần truy cập bộ nhớ
Trang 38Đường dữ liệu MIPS pipeline
Thanh ghi trạng thái giữa các giai đoạn thực hiện lệnh để phân cách
MemAccess
WB: WriteBack
Register
File
Read Data 1
Read Data 2
ALU
Shift left 2
Add
Data Memory
Address Write Data
Read Data
IF/ID
Sign Extend
ID/EX EX/MEM
MEM/WB
Trang 39Điều khiển MIPS pipeline
Các tín hiệu điều khiển được xác định trong giai đoạn giải mã và được lưu
trong các thanh ghi trạng thái giữa các giai đoạn pipeline
Read
Address
Instruction Memory
Register
File
Read Data 1
Read Data 2
ALU
Shift left 2
Add
Data Memory
Address Write Data
Read Data
IF/ID
Sign Extend
ID/EX
EX/MEM
MEM/WB Control
ALU cntrl
Trang 40Mô tả hoạt động pipeline
Đo hiệu năng: Cần bao nhiêu chu kỳ đề thực hiện đoạn mã?
Phân tích hoạt động: ALU làm gì ở chu kỳ 4?
Cải tiến: Có xảy ra hazard không? Tại sao? Dùng cách nào đểkhắc phục?
Trang 41Hiệu năng pipeline
1 chu kỳ
CPI = 1
Thời gian điền đầy pipeline
Trang 42 Các lệnh rẽ nhánh, nhảy và ngắt
Khối điều khiển pipeline cần phát hiện xung đột
Trang 43Bộ nhớ đơn: Xung đột cấu trúc
Đọc lệnh từ bộ nhớ
Sửa: Bộ nhớ dữ liệu và lệnh riêng rẽ(I$ and D$)
Trang 44Xung đột cấu trúc khi truy cập tệp thanh ghi
kỳ và ghi trong nửa
Trang 45Sử dụng thanh ghi: Xung đột dữ liệu
Phụ thuộc dữ liệu ngược theo thời gian gây ra xung đột
Trang 46Sử dụng thanh ghi: Xung đột dữ liệu
Phụ thuộc dữ liệu ngược theo thời gian gây ra xung đột
Trang 47Đọc từ bộ nhớ: Gây xung đột dữ liệu
Dependencies backward in time cause hazards
Trang 48Xung đột điều khiển
Trang 50Tóm tắt 1
Các bộ xử lý hiện đại đều dùng kỹ thuật pipeline
Pipelining không làm giảm độ trễ của 1 nhiệm vụ đơn lẻ, nó giúp tăng thông lượng của toàn bộ
Tăng tốc tiềm năng: CPI = 1 và đồng hồ nhanh, Tc nhỏ
Tốc độ đồng hồ bị hạn chế bởi giai đoạn pipeline chậm
nhất
Cần phát hiện và giải quyết xung đột
Trang 52Giải quyết xung đột: Tạm dừng
Trang 53Giải quyết xung đột: Chuyển tiếp dữ liệu
Trang 54Chuyển tiếp dữ liệu
Lấy kết quả ở thời điểm nó xuất hiện sớm nhất trong bất
kỳ thanh ghi pipeline nào, và chuyển tiếp nó đến khối chức năng (VD ALU) mà cần kết quả tại chu kỳ đồng hồ đó
Với khối chức năng ALU: đầu vào có thể từ bất kỳ thanh
ghi pipeline nào chứ không cần từ ID/EX bằng cách
cả 2 thanh ghi pipeline Rs và Rt thuộc giai đoạn EX
Các khối chức năng khác cũng cần được thêm tương tự
(VD DM)
Với chuyển tiếp có thể đạt được CPI = 1 ngay khi có sự
phụ thuộc dữ liệu
Trang 55Minh họa triển khai chuyển tiếp
Trang 56Xung đột dữ liệu khi chuyển tiếp
Trang 57Xung đột dữ liệu khi có lệnh lw
Trang 58Xung đột điều khiển
Khi địa chỉ các lệnh không tuần tự (i.e., PC = PC + 4); xuất hiện khi có các lệnh thay đổi dòng chương trình
Giải pháp
pipeline giảm số chu kỳ phải dừng
Xung đột điều khiển ít xảy ra, nhưng không có giải pháp giải quyết hiệu quả như chuyển tiếp đối với xung đột dữ liệu
Trang 60Xung đột điều khiển lệnh rẽ nhánh
Trang 61Giải quyết xung đột điều khiển lệnh rẽ nhánh
flush –
nhưng ảnh hưởng CPI
Trang 62Giải quyết xung đột điều khiển lệnh rẽ nhánh
flush
Tính toán điều kiện rẽ nhánh càng sớm càng tốt, tức
là trong giai đoạn giải mã chỉ cần 1 chu kỳ chờ
Trang 63hưởng bởi lệnh rẽ nhánh) tới sau lệnh rẽ nhánh (vào khe trễ) Vì
Với pipeline sâu (nhiều giai đoạn), trễ rẽ nhánh tăng cần nhiều lệnh được chèn vào sau lệnh rẽ nhánh
tốn kém hơn nhưng mềm dẻo (động) hơn như dự đoán rẽ nhánh
hơn
Trang 64Sắp xếp lệnh trong rẽ nhánh chậm
add $1,$2,$3
if $1=0 then sub $4,$5,$6
Trang 65Dự đoán rẽ nhánh tĩnh
Giải quyết xung đột rẽ nhánh bằng cách giả sử 1 hướng rẽ
nhánh và tiếp tục không cần chờ tính toán kết quả rẽ
nhánh thực sự.
1. Đoán không rẽ nhánh – luôn giả sử lệnh không rẽ nhánh,
tiếp tục nạp các lệnh kế tiếp, chỉ khi có rẽ nhánh thì cần
dừng pipeline
- trong giai đoạn IF, ID, và EX nếu bộ tính rẽ nhánh ở MEM – ba dừng
- trong giai đoạn IF và ID nếu bộ tính rẽ nhánh ở EX – hai dừng
- trong giai đoạn IF nếu bộ tính rẽ nhánh ở ID – môt dừng
máy
Trang 66Xóa khi dự đoán sai
Trang 67Xóa khi dự đoán sai (Đoán không rẽ nhánh)
Trang 68Dự đoán rẽ nhánh
Giải quyết xung đột bằng cách giả thiết kết quả rẽ
nhánh và tiếp tục
rẽ nhánh ở giai đoạn ID)
đích??
Vì thiệt hại do rẽ nhánh đang tăng lên (với các pipeline
sâu), mô hình dự đoán rẽ nhánh tĩnh sẽ ảnh hưởng tới hiệu năng Với nhiều phần cứng hơn, có thể thử dự
đoán hoạt động rẽ nhánh động lúc chương trình được thực hiện
trên các thông tin chạy (run-time information)
Trang 69Dự đoán rẽ nhánh động bằng 1 bit
Bô dự đoán 1 bít sẽ sai 2 lần nếu đoán không rẽ nhánh:
Nếu lặp 10 lần ta sẽ có tỉ lệ rẽ nhánh đúng là 80% Nếu
dùng lệnh rẽ nhánh beq thì đúng 90%
ở cuối vòng lặp
đoán đúng
1 lần nữa vì lần này sẽ không rẽ nhánh
Loop: 1 st loop instr
2 nd loop instr
.
last loop instr bne $1,$2,Loop fall out instr
Trang 70Dự đoán rẽ nhánh động bằng 2 bit
Cơ chế dùng 2 bit cho độ chính xác 90% vì chỉ khi dự
đoán sai 2 lần thì bit dự đoán mới thay đổi
Predict Taken
Predict Not Taken
Predict Taken
Predict Not Taken
last loop instr bne $1,$2,Loop fall out instr
Trang 71 Exceptions (ngắt - interrupts) có thể coi là 1 dạng xung đột dữ liệu Exception xuất hiện từ:
Phần mềm (OS) sẽ xử lý tiếp exception
Trang 72Hai loại exceptions
Ngắt – không đồng bộ với sự thực hiện chương trình
Bẫy (Exception) – đồng bộ với sự thực hiện chương trình
khiển cho hàm xử lý bẫy của OS
được tiếp tục
Trang 73Exception có thể xuất hiện ở đâu trong pipeline
Tràn số học
Lệnh không định nghĩa
Lỗi TLB hoặc trang
Yêu cầu dịch vụ I/O
Trang 74Exception có thể xuất hiện ở đâu trong pipeline
một chu kỳ đồng hồ
ID
IF, MEM any
any
Tràn số học
Lệnh không định nghĩa
Lỗi TLB hoặc trang
Yêu cầu dịch vụ I/O
Lỗi phần cứng
Trang 75Nhiều exception đồng thời
Trang 76Nhiều exception đồng thời
I$ page fault
Lệnh sớm nhất sẽ bị ngắt đầu tiên
Trang 77Tổng kết
Tất cả các bộ xử lý hiện đại đều dùng pipeline để tăng
hiệu suất (CPI=1 và đồng hồ nhanh - fc lớn)
Tốc độ đồng hồ pipeline bị giới hạn bởi giai đoạn pipeline
chậm nhất – thiết kế pipeline cân bằng là rất quan trọng
Cần phát hiện và giải quyết xung đột trong pipeline
- Chuyển tiếp (cần phần cứng hỗ trợ)
trạng thái đầu trong pipeline
- Rẽ nhánh chậm (cần hỗ trợ của trình dịch)
- Dự đoán rẽ nhánh tĩnh và động (cần phần cứng hỗ trợ)
Xử lý ngắt trong pipeline phức tạp