1
Khoa KTMT Vũ Đức Lung 1
KIẾN TRÚC MÁY TÍNH NÂNG CAO
Thi gian:
– Lý Thuyt: 30 tit (2TC)
– Thc hành: 30 tit (1TC)
im s:
– im thi bài thu hoch + báo cáo: 50%
– im thi cui kỳ: 50%
Khoa Kỹ thuật máy tính
GV: TS. Vũ Đức Lung
Email:
Khoa KTMT Vũ Đức Lung 2
Mục
Mục
đ
đ
ích
ích
&
&
nội
nội
dung
dung
môn
môn
học
học
Nhằm trang bị cho sinh viên các kiến thức chuyên sâu về
kiến trúc máy tính.
Kin trúc vi lnh và t chc máy tính
Thit k và t chc b nh
K thut ng dn
Máy tính song song, Máy tính SIMD, Máy tính MIMD
Kin trúc h thng b nh chia s
Kin trúc h thng truyn thông ip
Mô hình tru tưng
Lp trình song song trong máy o song song
Khoa KTMT Vũ Đức Lung 3
Tài
Tài
liệu
liệu
học
học
tập
tập
&
&
tham
tham
khảo
khảo
1.
Vũ Đức Lung. Giáo trình kiến trúc máy tính. Trường ĐH Công nghệ thông
tin, ĐHQG TP.HCM, 2009.
.
2. H. El-Rewini. Advanced Computer Architecture and Parallel Processing,
Wiley, 2005
3. Andrew S. Tanenbaum. Structured Computer Organization, 5-th edition,
Prentice Hall, 2005
4. Patterson, D. A., and J. L. Hennessy.
Computer Organization and Design:
The Hardware/Software Interface, 3rd ed. San Mateo, CA: Morgan Kaufman,
2004
5. Kai Hwang, Advanced Computer Architecture : Parallelism, Scalability,
Programmability, McGraw-Hill, 1993.
Tài liệu:
/>Khoa KTMT Vũ Đức Lung 4
Chương 1 : Vi tác vụ và tổ chức máy tính
Chương 2 : Hệ thống máy tính đơn giản trên NIOS II
Chương 3 : Hệ Thống bộ nhớ
Chương 4 : Kỹ thuật ống dẫn
Chương 5 : Máy tính song song
Chương 6 : Kiến trúc hệ thống bộ nhớ chia sẻ
Chương 7: Kiến trúc hệ thống truyền thông điệp
Chương 8: Mô hình trừu tượng
Chương 9: Lập trình song song trong máy ảo song song
Nội dung môn học
1
UIT KTMT 1
Chương 1
Vi tác vụ và tổ chức máy tính
UIT KTMT 2
Mục tiêu
• Hiểu ý nghĩa của “ngôn ngữ” vi tác vụ
• Hiểu cấu trúc của ALU (mạch số học +
mạch luận lý + mạch dịch tổ hợp)
• Hiểu cấu tạo và cách thức hoạt động (ở
mức vi trình) của một máy tính cơ bản
• Hiểu cách thức máy tính cơ bản thi hành
chu kỳ máy (ở mức vi trình)
UIT KTMT 3
Vi tác vụ là các tác vụ hay công việc xử lý dữ
liệu thực hiện trên các thanh ghi
Có 4 loại vi tác vụ chính:
1. Vi tác vụ ghi chuyển thông tin nhị phân
2. Vi tác vụ số học
3. Vi tác vụ luận lý
4. Vi tác vụ dịch
1.1 Vi tác vụ thanh ghi
UIT KTMT 4
Vi tác vụ thanh ghi
• Tên thanh ghi: chữ hoa (có thể có kèm số)
PC, MAR, R1, R2,
• Chuyển nội dung thanh ghi R1 sang thanh ghi
R2 (R1 không đổi):
R2 ← R1
• Chuyển nội dung thanh ghi R1 sang thanh ghi
R2 (R1 không đổi) dùng hàm điều khiển (khi
hàm có giá trị 1):
P: R2 ← R1 hoặc If (P=1) then (R2 ← R1)
S
0
S
1
: R2 ← R1
UIT KTMT 5
Vi tác vụ thanh ghi
R2
R1
P
Load
Clock
Mạch
điều
khiển
n
R2
R1
S
0
Load
Clock
Mạch
điều
khiển
n
S
1
UIT KTMT 6
Vi tác vụ thanh ghi
R2(0-7): (bit từ 0 đến 7
của thanh ghi R2)
R2(L): các bit thấp của
thanh ghi R2
Một phần thanh ghiDấu ngoặc sau tên thanh
ghi
R2← R1, R1← R2
Tác vụ xảy ra đồng thời
(trong cùng một chuyển
tiếp đồng hồ)
Dấu phẩy
R2← R1
Truyền dữ liệuMũi tên
PC,MAR,R1,Tên thanh ghiChữ hoa (hoặc số theo
sau)
Ví dụDiễn giảiKý hiệu
2
UIT KTMT 7
1.2. Truyền dữ liệu qua bus
3 2 1 0
4x1
MUX
3 2 1 0
4x1
MUX
3 2 1 0
4x1
MUX
3 2 1 0
4x1
MUX
S
0
S
1
3 2 1 0 3 2 1 0 3 2 1 0 3 2 1 0
A
B
D
C
UIT KTMT 8
Truyền dữ liệu qua bus 3 trạng thái
3 2 1 0
2x4
Decoder
3 2 1 0
3 2 1 0
3 2 1 0
3 2 1 0
S
0
S
1
E
UIT KTMT 9
Truyền qua bộ nhớ
• DR ← M[AR]
• M[AR] ← DR
• M[AR] : ô nhớ có địa chỉ được lưu trong
thanh ghi AR.
UIT KTMT 10
1.3. Vi tác vụ số học
R3 ← R1 + R2
R3 ← R1 – R2
R2 ← R2
R2 ← R2 + 1
R3 ← R1 + R2 + 1
R1 ← R1 +1
R1 ← R1 -1
Ý nghĩaKý hiệu
UIT KTMT 11
Mạch số học
Chuyển AD = A1111
Giảm AD = A – 11011
Tăng AD = A + 10101
Chuyển AD = A0001
B’
B’
B
B
Y
1
0
1
0
C
in
1
1
0
0
S
0
0
0
0
0
S
1
Cộng với nhớD = A + B + 1
TrừD = A + B + 1
Trừ có mượnD = A + B
CộngD = A + B
Diễn giảiD=A+Y+C
in
UIT KTMT 12
Mạch số học
Y
3
X
3
FA
C
4
C
3
Y
2
X
2
FA
C
3
C
2
Y
1
X
1
FA
C
2
C
1
Y
0
X
0
FA
C
1
C
0
D
0
D
1
D
2
D
3
C
out
3 2 1 0
4x1
MUX
S
0
S
1
3 2 1 0
4x1
MUX
S
0
S
1
3 2 1 0
4x1
MUX
S
0
S
1
3 2 1 0
4x1
MUX
S
0
S
1
A
3
A
2
A
1
A
0
B
0
B
1
B
2
B
3
01
01
01
01
C
in
S
0
S
1
3
UIT KTMT 13
1.4. Vi tác vụ luận lý
Gán 1
F ← 1…1
F15 = 1
NAND
F ← A ∧ B
F14 = xy
F ← A ∨ B
F13 = x + y
F ← A
F12 = x
F ← A ∨ B
F11 = x + y
F ← B
F10 = y
NXOR
F ← A ⊕ BF9 = x ⊕ y
NOR
F ← A ∨ B
F8 = (x + y)
OR
F ← A ∨ B
F7 = x + y
F ← A ⊕ BF6 = x ⊕ y
F ← B
F5 = y
F ← A ∧ B
F4 = x.y
truyền A
F ← A
F3 = x
F ← A ∧ B
F2 = x.y
AND
F ← A ∧ B
F1 = xy
xóa 0
F ← 0
F0 = 0
Vi tác vụKý hiệuHàm
UIT KTMT 14
Mạch luận lý
0
1
2
A
i
B
i
3
E
i
S
0
S
1
InverterE = A11
0
1
0
S0
XOR
E = A ⊕ B
1
OR
E = A ∨ B
0
AND
E = A ∧ B
0
phép tínhĐầu raS1
S
0
S
1
MUX
4x1
UIT KTMT 15
1.5. Vi tác vụ dịch
Dịch phải số học R
R ← ashr R
Dịch trái số học R
R ← ashl R
Dịch vòng phải R
R ← cir R
Dịch vòng trái R
R ← cil R
Dịch phải R
R ← shr R
Dịch trái R
R ← shl R
Ý nghĩaKý hiệu
UIT KTMT 16
Mạch dịch tổ hợp 4 bit
I
R
A
0
A
1
A
2
A
3
1 0
2x1
MUX
S
1 0
2x1
MUX
S
1 0
2x1
MUX
S
1 0
2x1
MUX
S
H
0
I
L
H
1
H
2
H
3
S
I
L
A3A2A11
A2A1A0I
R
0
H3H2H1H0S
UIT KTMT 17
1.6. ALU
(Arithmetic and Logic Unit)
3 2 1 0
4x1
MUX
S
0
S
1
Một tầng mạch
số học
Một tầng mạch
luận lý
S
3
S
2
S
1
S
0
B
i
A
i
A
i-1
A
i+1
C
i+1
C
i
D
i
E
i
shr
shl
UIT KTMT 18
Các tác vụ của ALU
Dịch trái AF = shl Axxx11
Dịch phải AF = shr Axxx01
InverterF = Ax1110
XOR
F = A ⊕ B
x0110
OR
F = A ∨ B
x1010
AND
F = A ∧ B
x0010
Chuyển AF = A11100
GiảmF = A – 101100
Phép trừF = A + B + 110100
Trừ có mượnF = A + B00100
Cộng với nhớF = A + B + 111000
Phép cộngF = A + B01000
Tăng AF = A + 110000
Chuyển AF = A00000
C
in
S
0
S
1
S
2
S
3
Chức năngTác vụChọn tác vụ
4
UIT KTMT 19
2. Tổ chức máy tính
UIT KTMT 20
Mã Lệnh
• Mã lệnh là nhóm bit ra lệnh cho máy tính
thực hiện một tác vụ nào đó
• Mã lệnh gồm nhiều phần: Mã tác vụ, địa
chỉ bộ nhớ, các bit chỉ thị khác
UIT KTMT 21
Tổ chức chương trình
15 12 11
0
Mã tác vụ Địa chỉ tác tố
Chương trình
(mã lệnh)
Dữ liệu
16 bit
4096 từ
AC (accumulator)
UIT KTMT 22
Địa chỉ gián tiếp
14 12 11
0
Mã tác vụ Địa chỉ tác tố
15
I
22
457
0 ADD 457
AC
+
22
457
1 ADD 457
AC
+
1350
1350
UIT KTMT 23
Tập thanh ghi
Lưu ký tự xuấtTh.ghi xuất8OUTR
Lưu ký tự nhậpTh.ghi nhập8INPR
Lưu dữ liệu tạmTh.ghi tạm16TR
Lưu địa chỉ lệnh kếTh.ghi đếm chương trình12PC
Lưu mã lệnh kế tiếp
Th.ghi xử lý
Lưu địa chỉ bộ nhớ
Lưu tác tố
Chức năng
Th.ghi địa chỉ12AR
Th.ghi lệnh16IR
Th.ghi tích lũy16AC
Th.ghi dữ liệu16DR
TênBitKý
hiệu
UIT KTMT 24
Thanh
ghi và
bus
5
UIT KTMT 25
thanh ghi có
các ngõ nhập
LD, INR và
CLR tương
đương mạch
đếm nạp song
song, xóa
đồng bộ
UIT KTMT 26
thanh ghi chỉ
có ngõ nhập
LD (IR và
OUTR) tương
đương thanh
ghi nạp song
song
UIT KTMT 27
Tập lệnh
14 12 11
Mã tác vụ Địa chỉ tác tố
15
I
12 11
Tác vụ thanh ghi
15
0 1 1 1
12 11
Tác vụ nhập/xuất
15
1 1 1 1
Mã tác vụ
000 – 110
Mã tác vụ
111, I = 0
Mã tác vụ
111, I = 1
0
0
0
UIT KTMT 28
Định thời và điều khiển
14 13 12
11 – 0
15
Mạch giải mã
3x8
Các cổng
điều khiển
Tín hiệu điều
khiển
7
D
7
0
Mạch giải mã
4x16
15
0
D
0
T
15
T
0
Mạch đếm
tuần tự 4 bit
INR (increment)
CLR (clear)
Clock
UIT KTMT 29
Mối quan hệ
thời gian giữa
các thời hiệu
UIT KTMT 30
3. Quy trình thực hiện lệnh
6
UIT KTMT 31
Chu kỳ lệnh
1.Tìm lệnh
2.Giải mã lệnh
3.Đọc địa chỉ hiệu dụng từ bộ nhớ nếu lệnh có
địa chỉ gián tiếp
4.Thực hiện lệnh
UIT KTMT 32
Tìm và giải
mã lệnh
T
0
: AR PC
T
1
:IR M[AR]
,PC PC+1
T
2
:
UIT KTMT 33
Chu kỳ lệnh tổng quát
Start
SC ← 0
AR ← PC
IR ← M[AR], PC
←
PC + 1
Giải mã tác vụ trong IR(12-14)
AR ← IR(0-11), I ← IR(15)
D
7
I
I
Thi hành tác vụ
nhập/xuất
SC ← 0
Thi hành tác vụ tham
chiếu thanh ghi
SC ← 0
AR ← M[AR]
Thi hành tác vụ tham chiếu bộ nhớ
SC ← 0
T
0
T
1
T
2
T
3
T
3
T
4
T
3
=1 (thanh ghi hoặc nhập/xuất)
=0 (tham chiếu bộ nhớ)
=1 (nhập xuất)
=0 (thanh ghi)
=1 (gián tiếp)
=0 (trực tiếp)
UIT KTMT 34
Lệnh thanh ghi
Xóa SC
SC ← 0
r
Dừng
S ← 0
rB
0
HLT
Nhảy nếu E=0
if E=0 then PC ← PC + 1
rB
1
SZE
Nhảy nếu AC=0
if AC=0 then PC ← PC + 1
rB
2
SZA
Nhảy nếu âm
if AC(15)=1 then PC ← PC + 1
rB
3
SNA
Nhảy nếu dương
if AC(15)=0 then PC ← PC + 1
rB
4
SPA
Tăng AC
AC ← AC + 1
rB
5
INC
Vòng trái
AC ← shl AC, AC(0) ← E, E ← AC(15)
rB
6
CIL
Vòng phải
AC ← shr AC, AC(15) ← E, E ← AC(0)
rB
7
CIR
Bù E
Bù AC
Xóa E
Xóa AC
Diễn giải
E ← 0
rB
10
CLE
E ← E
rB
8
CME
AC ← AC
rB
9
CMA
AC ← 0
rB
11
CLA
Vi tác vụMã
lệnh
)(,
37
iIRBTIDr
i
==
UIT KTMT 35
Lệnh bộ nhớ
If M[AR] + 1 = 0 then PC ← PC + 1
D
6
ISZ
M[AR] ← PC, PC ← AR + 1
D
5
BSA
PC ← AR
D
4
BUN
AC ← AC + M[AR], E ← C
out
D
1
ADD
M[AR] ← AC
D
3
STA
AC ← M[AR]
D
2
LDA
AC ← AC ^ M[AR]
D
0
AND
Vi tác vụMã lệnh
UIT KTMT 36
Lệnh nhập xuất
Xóa SC, p=D
7
I T
3
SC ← 0
P
Cấm ngắt
IEN ← 0
pB
6
IOF
Cho phép ngắt
IEN ← 1
pB
7
ION
Nhảy theo cờ xuất
Nhảy theo cờ nhập
Xuất ký tự
Nhập ký tự
Diễn giải
OUTR ← AC(0-7), FGO ← 0
pB
10
OUT
If (FGI=0) then PC ← PC + 1
pB
8
SKO
If (FGI=1) then PC ← PC + 1
pB
9
SKI
AC(0-7) ← INPR, FGI ← 0
pB
11
INP
Vi tác vụMã
lệnh
7
UIT KTMT 37
Cấu hình nhập xuất
Máy in
Bàn phím
Giao tiếp
thiết bị xuất
Giao tiếp
thiết bị nhập
OUTR
AC
INPR
FGI
FGO
UIT KTMT 38
Câu hỏi và bài tập
1
Khoa KTMT Vũ Đức Lung 1
Chương 02
HỆ THỐNG MÁY TÍNH ĐƠN GIẢN
TRÊN NIOS II
Khoa KTMT Vũ Đức Lung 2
MỤC ĐÍCH
Giới thiệu
Kiến trúc bộ xử lý
Mô hình lập trình
Tạo và sử dụng một hệ thống máy tính đơn giản được xây
dựng trên nền bộ xử lý Nios II của hãng Altera.
Ứng dụng hệ thống tạo ra viết chương trình với lập trình
assembly cho Nios II.
Sử dụng Quartus II và phần mềm SOPC Builder được tích hợp
bên trong Quartus II.
Biên dịch chương trình, nạp và chạy trên kit DE2 thông qua
software Altera Debug Client.
Khoa KTMT Vũ Đức Lung 3
NIOS II System
Là một users system được thiết kế trên Cyclone II FPGA bằng một công cụ
trên Quartus II, đó là SOPC Builder. Tất nhiên về mặt lí thuyết thì users có thể
tự tạo một system trên FPGA nhưng điều đó sẽ tốn thời gian và công sức.
– FPGA “Field programmable Gate Array” thuộc họ PLD (Programmable Logic
Device) hay ASIC lập trình được. Quy trình sản xuất Chip ASIC bằng cách này
gọi là fabless rất phổ biến hiện nay trên thế giới.
– ASIC (application-specific integrated circuit)
vi mạch tích hợp chuyên dụng ,
là một vi mạch
IC được thiết kế dành cho một ứng dụng cụ thể.
ASIC: Thiết kế ứng dụng -> Thiết kế mạch logic -> Mô phỏng -> Kiểm tra
chức năng codes -> Place & Route -> Làm wafer (silicon) -> Test prototype
(nếu lỗi quay lại sửa bản thiết kế logic) -> Sản xuất hàng loạt (dạng chip) ->
Triển khai ứng dụng trên board.
FPGA:
• Nhà sản xuất: Thiết kế platform của FPGA -> Mô phỏng + Kiểm tra chức
năng của platform -> Place & Route -> Làm wafer -> Sản xuất chíp FPGA
hàng loạt + Tool hỗ trợ
• Người sử dụng: Thiết kế ứng dụng -> Thiết kế mạch logic -> Mô phỏng ->
Kiểm tra chức năng code -> Place & Route (theo quy định của platform) ->
Đổ codes lên platform FPGA -> triển khai ứng dụng trên board
Khoa KTMT Vũ Đức Lung 4
Nios II Processor System Basics
NIOS II processsor là 1 lõi xử lý mục đích chung RISC cung
cấp:
– Tập lệnh 32 bit, đường dẫn dữ liệu, không gian địa chỉ.
– 32 thanh ghi mục đích chung.
– 32 nguồn ngắt ngoài.
– Tập lệnh đơn 32x32, nhân và chia kết quả 32bit.
– Tập lệnh dành cho tính toán 64bit và 128bit kết quả của phép nhân.
– Tập lệnh dấu chấm động dành cho những thao tác dấu chấm động
chính xác đơn.
– Bộ dịch chuyển lệnh đơn.
– Truy cập vào một loạt các thiết bị ngoại vi on-chip, và giao diện với bộ
nhớ và thiết bị ngoại vi off-chip.
– Module phần cứng hỗ trợ gỡ lỗi cho phép xử lý start, stop, step và truy
dấu dưới sự kiểm soát của môi trường phát triển tích hợp (IDE).
Khoa KTMT Vũ Đức Lung 5
Nios II Processor System Basics
– Đơn vị quản lý bộ nhớ tùy chọn (MMU) để hỗ trợ hệ điều hành mà yêu cầu
MMUs.
– Đơn vị bảo vệ bộ nhớ tùy chọn (MPU).
– Phần mềm phát triển môi trường dựa trên công cụ GNU C/C++ và Eclipse IDE.
– Tích hợp với Altera's SignalTap® II Embedded Logic Analyzer tạo điều kiện
cho việc phân tích các tập lệnh và dữ liệu thời gian thực cùng với các tín hiệu
trong thiết kế FPGA.
– Hướng dẫn thiết lập kiến trúc (ISA) tương thích trên tất cả các hệ thống xử lý
Nios II.
– Hiệu suất tối đa là 250 DMIPS, hệ thống xử lý Nios II tương đương với một vi
điều khiển hay "máy tính trên một chip" bao gồm một bộ xử lý và một sự kết
hợp của các thiết bị ngoại vi và bộ nhớ trên một chip. Hệ thống xử lý Nios II
bao gồm một bộ xử lý lõi Nios II, một thiết bị ngoại vi on-chip, bộ nhớ on-
chip, và giao diện bộ nhớ off-chip, tất cả được thực thi trên một thiết bị đơn
Altera. Giống như một gia đình vi điều khiển, tất cả các hệ thống xử lý Nios II
sử dụng bao gồm tập lệnh cài đặt và lập trình mô hình
Khoa KTMT Vũ Đức Lung 6
Nios II Processor System Basics
2
Khoa KTMT Vũ Đức Lung 7
Cấu trúc câu lệnh trong Nios II
Lệnh trong Nios II đều dài 32 bít.
Gồm các lệnh ảo được sử dụng trong chương trình ngôn ngữ
Assembler, Assembler thay thế mỗi lệnh ảo bằng một hay
nhiều mã máy.
Có 3 kiểu format lệnh: I-type, R-type and J-type.
Khoa KTMT Vũ Đức Lung 8
Cấu trúc câu lệnh trong Nios II
Trong tất cả các trường hợp 6bit b[5:0] biểu thị cho OP code các bít còn lại để
chỉ ra những thanh ghi,toán hạng trực tiếp,hoặc OP code mở rộng.
Khoa KTMT Vũ Đức Lung 9
Cấu trúc thanh ghi
Nios II processor có
32 thanh ghi chức
năng cơ bản.Một số
những thanh ghi này
được dùng cho chức
năng đặc biệt và có
tên riêng biệt được
nhận ra bởi Asembler
Khoa KTMT Vũ Đức Lung 10
Cấu trúc thanh ghi
Thanh ghi R0 được xem như thanh ghi zero.Nó chứa hằng số
0.Vì vậy việc đọc thanh ghi sẽ trả về giá trị 0 trong khi viết lên
nó thì không có kết quả.
Thanh ghi R1 được sử dụng bởi Assembler như một thanh ghi
tạm thời,không nên tham chiếu trong chương trình người
dùng.
Thanh ghi R24 và R29 được dùng cho ngoại lệ của tiến trình,
chúng không có giá trị trong mode người dùng.
Thanh ghi R25 và R30 được sử dụng dành riêng cho JTAG
Debug mode.
Thanh ghi R27 và R28 được sử dụng để điều khiển stack.
Thanh ghi R31 được sử dụng để giữ địa chỉ trả về khi mà một
subrountine được gọi
Khoa KTMT Vũ Đức Lung 11
Cấu trúc thanh ghi
Có 6 thanh ghi điều khiển 32 bit. Tên của chúng được nhận ra bởi
Assembler. Những thanh ghi này được sử dụng tự động cho mục đích
điều khiển.Chúng có thể được đọc và ghi bởi các câu lệnh đặc biệt rdctl
và wrctl, chỉ được kích hoạt bởi mode giám sát.Thanh ghi được sử dụng
như sau:
– Thanh ghi ctl0 phản xạ lại trạng thái hoạt động của processor.
• U là bít mode User/Supervisor. U=1: User mode, U=0: Supervisor mode.
• PIE là bít cho phép ngắt processor.Khi PIE=1 processor chấp nhận ngắt
ngoài, PIE=0 processor lờ đi ngắt ngoài.
Khoa KTMT Vũ Đức Lung 12
Cấu trúc thanh ghi
Thanh ghi ctl1 giữ bản sao của thanh ghi trạng thai strong suốt tiến trình ngoại lệ.
Thanh ghi ctl2 giữ bản sao của thanh ghi trạng thái trong suốt tiến trình debug break.
Thanh ghi ctl3 được dùng để enable riêng lẻ những ngắt ngoài. Mỗi bít tương đương
một trong những ngắt irq0 đến irq31.Giá trị 1 có nghĩa là ngắt đươc enable và 0 là
disable.
Thanh ghi ctl4 cho biết ngắt nào đang pending. Giá trị của bít ctl4không được set
lên 1 nếu ngắt irqk được active và enable.
Thanh ghi ctl5 giữ giá trị nhận dạng duy nhất processor trong hệ thống đa processor.
3
Khoa KTMT Vũ Đức Lung 13
Xây dựng Nios System(mẫu) dùng SOPC builder
trên Quantus II
Khoa KTMT Vũ Đức Lung 14
DEMO
Thiết kế một hệ thống đơn giản
Khoa KTMT Vũ Đức Lung 15
Đọc Thêm
Kiến trúc bộ xử lý chương II “nios II Processor Reference
Handbook”
Mô hình lập trình chương III
Ứng dụng hệ thống tạo ra viết chương trình với lập trình
assembly cho Nios II.
Sử dụng Quartus II và phần mềm SOPC Builder được tích hợp
bên trong Quartus II.
Biên dịch chương trình, nạp và chạy trên kit DE2 thông qua
software Altera Debug Client
1
Khoa KTMT Vũ Đức Lung 1
CHƯƠNG 3: THIẾT KẾ BỘ NHỚ
Khái niệm cơ bản
Bộ nhớ Cache
Bộ nhớ trong
Bộ nhớ ảo
Khoa KTMT Vũ Đức Lung 2
Khái niệm cơ bản
Các cấp bộ nhớ cơ bản:
– Thanh ghi
– Cache
– Bộ nhớ chính
– Bộ nhớ thứ cấp
Khoa KTMT Vũ Đức Lung 3
Khái niệm cơ bản
Thứ tự thực hiện tìm một item trong bộ nhớ:
– Tìm Item trong bộ nhớ mức cao nhất của các cấp bộ nhớ (xác suất tìm
thấy item trong đó gọi là hit ratio
h1, không tìm thấy là miss ratio (1-
h1)
)
– Khi không tìm thấy thì tìm ở cấp thấp hơn (
h2, (1-h2))
– Quá trình tiếp diễn cho đến khi tìm thấy hoặc hết cấp bộ nhớ
– Khi tìm thấy Item sẽ được chuyển cho Bộ xử lý
Giả sử Các cấp bộ nhớ có 3 cấp. Thời gian truy cập bộ nhớ
trung bình được tính:
t
av
= h
1
*t
1
+ (1-h
1
)*[t
1
+h
2
*t
2
+(1-h
2
)*(t
2
+t3)]
= t
1
+ (1-h
1
)*[t
2
+ (1-h
2
)*t
3
]
Khoa KTMT Vũ Đức Lung 4
Nguyên tắc tổ chức bộ nhớ
Thống kê: 90% thời gian thi hành 10% số lệnh của chương
trình
Nguyên tắc không gian:
– Khi bộ xử lý thâm nhập vào ô nhớ nào đó => nhiều khả năng sẽ thâm
nhập vào những ô nhớ có địa chỉ kế tiếp trong thời gian sau đó
Nguyên tắc về thời gian:
– Các ô nhớ được hệ thống xử lý thâm nhập có khả năng sẽ được thâm
nhập lại trong tương lai gần. Thông thường chỉ có một số lệnh và một
phần số liệu được thâm nhập nhiều nhất mà thôi. Ví dụ như một lệnh
trong một vòng lặp của chương trình
Khoa KTMT Vũ Đức Lung 5
Cache Memory
a small high-speed memory that is near the CPU
Thành công cache (cache hit)
Thất bại cache (cache miss)
Tỷ số thành công cache h
c
(cache hit ratio)
Tỷ số thất bại cache (1-h
c
) (cache miss ratio)
Khoa KTMT Vũ Đức Lung 6
Cache Memory (2)
Ảnh hưởng của nguyên lý lân cận thời gian
Ảnh hưởng của nguyên lý lân cận không gian
Ảnh hưởng tổ hợp của hai nguyên lý
c m m
av c
nt t t
t t
n n
+
= = +
c m m
av c
mt t t
t t
m m
+
= = +
( ) ( 1) ( 1)
c m m
c c c
m
av c
mt t t
n t t n t
t
m m
t t
n n nm
+
+ − + + −
= = = +
2
Khoa KTMT Vũ Đức Lung 7
Tổ chức bộ nhớ cache (0)
Khoa KTMT Vũ Đức Lung 8
Tổ chức bộ nhớ cache (1)
Phải để một khối bộ nhớ vào chỗ nào của cache (sắp xếp khối)?
Có 3 kỹ thuật tổ chức :
– Kiểu tương ứng trực tiếp (Direct Mapping)
– Kiểu hoàn toàn phối hợp (Fully Associative Mapping)
– Kiểu phối hợp theo tập hợp (Set – Associative Mapping)
Dựa trên hai khía cạnh:
– Cách đặt vào cache một khối nhớ từ bộ nhớ trong
– Cách thay thế một khối cache (khi cache đầy)
Khoa KTMT Vũ Đức Lung 9
Tổ chức bộ nhớ cache (2)
Kiểu tương ứng trực tiếp
– Nếu mỗi khối bộ nhớ chỉ có một vị trí đặt khối duy nhất trong cache
được xác định theo công thức:
K= i mod n
Trong đó: K: vị trí khối đặt trong cache
i: số thứ tự của khối trong bộ nhớ trong
n: số khối của cache
Kiểu hoàn toàn phối hợp:
Một khối trong bộ nhớ trong có thể được
đặt vào vị trí bất kỳ trong cache
.
Khoa KTMT Vũ Đức Lung 10
Tổ chức bộ nhớ cache (3)
Kiểu phối hợp theo tập hợp:
cache bao gồm các tập hợp của các khối
cache. Mỗi tập hợp của các khối cache chứa số khối như nhau. Một khối
của bộ nhớ trong có thể được đặt vào một số vị trí khối giới hạn trong tập
hợp được xác định bởi công thức: K= i mod s
Trong đó: K: vị trí khối đặt trong cache
i: số thứ tự của khối trong bộ nhớ trong
s: số lượng tập hợp trong cache.
Khoa KTMT Vũ Đức Lung 11
Tổ chức bộ nhớ cache (4)
Ví dụ 1:
Bộ nhớ trong có
32 khối, cache
có 8 khối, mỗi
khối gồm 32
byte, khối thứ
12 của bộ nhớ
trong được đưa
vào cache
Khoa KTMT Vũ Đức Lung 12
Tổ chức bộ nhớ cache (5)
Kiểu tương ứng trực tiếp:
Ví dụ 2: Main memory: 4K blocks
Cache : 128 blocks
Block size: 16 words
Ánh xạ khối bộ nhớ trong vào khối cache
3
Khoa KTMT Vũ Đức Lung 13
Tổ chức bộ nhớ cache (6)
Địa chỉ mà bộ xử lý đưa ra có thể phân tích thành hai thành
phần: phần nhận dạng số thứ tự khối và phần xác định vị trí từ
cần đọc trong khối.
Căn cứ vào số từ trong một khối bộ nhớ mà số bit trong trường
địa chỉ sẽ xác định vị trí từ cần đọc trong khối.
Phần nhận dạng số thứ tự khối sẽ khác nhau tuỳ thuộc vào
cách xếp đặt khối, trường chỉ số khối được so sánh với nhãn
của cache để xác định khối trong cache.
Khoa KTMT Vũ Đức Lung 14
Tổ chức bộ nhớ cache (7)
Kiểu tương ứng trực tiếp:
– Ưu điểm: đơn giản
– Nhược điểm: không hiệu quả sử dụng cache
MMU diễn giải địa chỉ phát ra từ CPU:
– Địa chỉ từ cần đọc trong khối (Word field) = log
2
B, B – kích thước khối
theo từ
– Chỉ số khối cache ( Block field) =
log
2
N, N-kích thước cache theo block
– Nhãn (Tag field) =
log
2
(M/N), M-kích thước bộ nhớ trong theo khối
– Số bit trong trường địa chỉ bộ nhớ trong =
log
2
(B.M)
Khoa KTMT Vũ Đức Lung 15
Tổ chức bộ nhớ cache (8)
VD:
Xét trường hợp bộ nhớ trong chứa 4K khối, bộ nhớ cache chứa 128 khối và mối
khối có kích thước 16 từ nhớ.
Khoa KTMT Vũ Đức Lung 16
Tổ chức bộ nhớ cache (9)
Quá trình phân tích địa chỉ và trả lời yêu cầu từ CPU
1
2
3
4
Khoa KTMT Vũ Đức Lung 17
Tổ chức bộ nhớ cache (10)
Kiểu hoàn toàn phối hợp
– Địa chỉ từ cần đọc trong khối (Word field) = log2B, B – kích
thước khối theo từ
– Chỉ số khối (hay nhãn - Tag field) = log2M, M- kích thước
bộ nhớ trong theo khối
– Số bit trong trường địa chỉ bộ nhớ trong = log2(B.M)
Ví dụ tìm số bit cho các trường ở VD1 & 2
Khoa KTMT Vũ Đức Lung 18
Tổ chức bộ nhớ cache (11)
Kiểu hoàn toàn phối hợp
4
Khoa KTMT Vũ Đức Lung 19
Tổ chức bộ nhớ cache (12)
Kiểu phối hợp theo tập hợp
– Word field = log
2
B
– Set field = log
2
S, S – số tập hợp trong cache
– Tag field =
log
2
(M/S), S = N/Bs, Bs số khối trong một tập hợp
– Số bit trong trường địa chỉ bộ nhớ trong =
log
2
(B.M)
Ví dụ tìm số bit cho các trường ở VD1 & 2 giả sử số khối
trong một tập tương ứng là 2 và 4
Khoa KTMT Vũ Đức Lung 20
Tổ chức bộ nhớ cache (13)
Kiểu phối hợp theo tập hợp
Khoa KTMT Vũ Đức Lung 21
Kỹ thuật thay thế khối
Thay thế ngẫu nhiên: để phân bố đồng đều việc thay thế, các
khối cần thay thế trong cache được chọn ngẫu nhiên.
Khối xưa nhất (LRU: Least Recently Used): các khối đã được
thâm nhập sẽ được đánh dấu và khối bị thay thế là khối không
được dùng từ lâu nhất.
Vào trước ra trước (FIFO: First In First Out): Khối được đưa
vào cache đầu tiên, nếu bị thay thế, khối đó sẽ được thay thế
trước nhất.
Tần số sử dụng ít nhất (LFU: Least Frequently Used): Khối
trong cache được tham chiếu ít nhất
Khoa KTMT Vũ Đức Lung 22
Kỹ thuật thay thế khối
Ví dụ:
Ma trận số 4x8. Giả sử mỗi số lưu
trong một từ và các phần tử ma trận
lưu theo thứ tự từ địa chỉ 1000 đến
1031. Cache chứa 8 khối, mỗi khối 2
từ. Áp dụng kỹ thuật LRU. Thứ tự yêu
cầu từ CPU:
Khoa KTMT Vũ Đức Lung 23
Kỹ thuật thay
thế khối –
Direct
mapping
Khoa KTMT Vũ Đức Lung 24
Kỹ thuật thay
thế khối –
Fully
associative
mapping
5
Khoa KTMT Vũ Đức Lung 25
Kỹ thuật thay
thế khối – Set
Associative
mapping
Khoa KTMT Vũ Đức Lung 26
Chiến thuật ghi cache
Chiến lược với cache hit:
– Ghi đồng thời (write-through):
Thông tin được ghi đồng thời vào khối của
cache và khối của bộ nhớ trong
.
– Ghi lại (write-back): T
hông tin cần ghi chỉ được ghi vào khối trong cache.
• Sử dụng bit trạng thái (Dirty bit hay Update bit).
• Khi một khối bị thay thế, khối này sẽ được ghi lại vào bộ nhớ trong chỉ khi
bit trạng thái đã được thiết lập
.
Chiến lược với cache miss
- Ghi có nạp (write-allocate): khối cần ghi từ bộ nhớ trong được nạp vào
trong cache như mô tả ở trên. Cách này thường được dùng trong cách
ghi lại.
- Ghi không nạp (write-no-allocate): khối được thay đổi ở bộ nhớ trong
không được đưa vào cache. Cách này được dùng trong cách ghi đồng
thời
Khoa KTMT Vũ Đức Lung 27
CÁC LOẠI CACHE
Cache duy nhất để chứa đồng thời cả lệnh và dữ liệu
Cache riêng lẻ bằng cách sử dụng một cache lệnh riêng và một cache dữ
liệu riêng (ví dụ Pentium, Pentium 4, Itanium, PowerPC 620, IBM SP,…)
Cache mức một (L1 cache): thường là cache trong (on-chip cache; nằm bên
trong CPU). Cache này có kích thước nhỏ nhất và vì nằm gần CPU nhất
nên dữ liệu nằm trên nó sẽ được xử lý nhanh nhất.
• Cache mức hai (L2 cache) thường là cache ngoài (off-chip cache; cache
này nằm bên ngoài CPU). Như vậy nếu các CPU được thiết kế trên cùng
một lõi có thể được cài đặt cache L2 có kích thước khác nhau.
• Ngoài ra, trong một số hệ thống (PowerPC G4, IBM S/390 G4, Itanium
của Intel) còn có tổ chức cache mức ba (L3 cache), đây là mức cache trung
gian giữa cache L2 và một thẻ bộ nhớ.
Khoa KTMT Vũ Đức Lung 28
VD: Intel Pentium 4 CPU Cache
Main Memory size 16 MB, CPU addressing Byte addressable
Sử dụng 2 Level cache:
L2:
Cache organization Set-
associative
Cache L1 size 256 KB
Number of blocks per set - 8
block size = 128 byte
L1:
Cache organization Set-
associative
Cache L1 size 8 KB
Number of blocks per set - 4
block size = 64 byte
Khoa KTMT Vũ Đức Lung 29
Main Memory
Khoa KTMT Vũ Đức Lung 30
TỔ chức bộ nhớ trong
6
Khoa KTMT Vũ Đức Lung 31
SRAM - DRAM
Khoa KTMT Vũ Đức Lung 32
Virtual Memory
Giải quyết vấn đề về kích thước bộ nhớ vật lý không đủ chứa
cả hệ điều hành cùng với các chương trình của người sử dụng
Vấn đề các vùng nhớ phải được bảo vệ một cách chắc chắn để
khỏi bị chương trình của người sử dụng làm hỏng.
Bộ nhớ ảo dựa trên sự kết hợp các bộ nhớ với tốc độ rất cao
như bộ nhớ trong (RAM) và bộ nhớ có tốc độ chậm như bộ
nhớ phụ
Dưới quan điểm của người lập trình và đối với người sử dụng
thì tập hợp các bộ nhớ trên được quan niệm là một bộ nhớ
thuần nhất với dung lượng lớn (gần hoặc bằng dung lượng ổ
đĩa cứng) nhưng lại làm việc ở tốc độ cao (gần bằng tốc độ bộ
nhớ trong).
Khoa KTMT Vũ Đức Lung 33
Virtual Memory
Bộ nhớ ảo có thể được quản lý bằng cách chia bộ nhớ thành
các mảng nhỏ có độ lớn tính theo đoạn, cơ chế này gọi là phân
đoạn (đối với họ Intel có từ các bộ VXL 80286 trở đi) hoặc
trang, cơ chế này gọi là phân trang ( đối với họ Intel có từ các
bộ VXL 80386) trở đi
Trong các máy tính hiện đại 1 đoạn có thể có độ lớn từ 1 byte
đến 4GB còn 1 trang thông thường có độ lớn từ 2KB đến 16 K
bytes.
Khoa KTMT Vũ Đức Lung 34
Virtual Memory
Tổ chức bộ nhớ ảo:
– Một khối bộ nhớ
ngoài sẽ được đặt
tại đâu trong bộ nhớ
trong?
– Làm thế nào để tìm
một khối khi nó
đang nằm trong bộ
nhớ trong?
– Khối nào phải được
thay thế khi có thất
bại trang?
– Việc gì xảy ra khi
cần ghi số liệu?
Khoa KTMT Vũ Đức Lung 35
Virtual Memory
Khoa KTMT Vũ Đức Lung 36
Ví dụ tổng quát
Cho một bộ nhớ cache tương ứng trực tiếp có 8 khối, mỗi khối có
16 byte (word). Bộ nhớ trong có 64 khối. Giả sử lúc khởi động
máy, 8 khối đầu tiên của bộ nhớ trong được đưa lên cache.
a. Viết bảng nhãn của các khối hiện đang nằm trong cache
b. CPU lần lượt đưa các địa chỉ sau đây để đọc số liệu: O4AH,
3F5H, 27CH. Nếu thất bại thì cập nhật bãng nhãn.
c. CPU dùng cách ghi lại. Khi thất bại cache, CPU dùng cách ghi
có nạp. Mô tả công việc của bộ quản lý cache khi CPU đưa ra
các từ sau đây để ghi vào bộ nhớ trong: 0C3H, 05AH, 1C5H.