Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 1
8 September 2009 1
NKK-HUT
Hệ thống máy tính
Chương 4
KIẾN TRÚC BỘ XỬ LÝ
Nguyễn Kim Khánh
Trường ĐạihọcBáchkhoaHàNội
8 September 2009 2
NKK-HUT
Nội dung học phần
Chương 1. Giới thiệu chung
Chương 2. Kiến trúc bộ nhớ
Chương 3. Kiến trúc vào-ra
Chương 4. Kiến trúc bộ xử lý
Chương 5. Kiến trúc máy tính tiên tiến
8 September 2009 3
NKK-HUT
4.1. Cấutrúccơ bảncủa CPU
4.2. Tậplệnh
4.3. Hoạt động củaCPU
4.4. Kỹ thuật đường ống lệnh
4.5. Các kiến trúc song song mức lệnh
4.6. Một số kiến trúc thông dụng
Nộidung
8 September 2009 4
NKK-HUT
4.1. Cấutrúccơ bảncủaCPU
Nhiệmvụ củaCPU:
Nhậnlệnh (Fetch Instruction): CPU đọclệnh từ bộ
nhớ.
Giảimãlệnh (Decode Instruction): xác định thao tác
mà lệnh yêu cầu.
Nhậndữ liệu (Fetch Data): nhậndữ liệutừ bộ nhớ
hoặccáccổng vào-ra.
Xử lý dữ liệu (Process Data): thựchiện phép toán số
học hay phép toán logic vớicácdữ liệu.
Ghi dữ liệu (Write Data): ghi dữ liệurabộ nhớ hay
cổng vào-ra
1. Nhiệmvụ và cấutrúccủaCPU
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 2
8 September 2009 5
NKK-HUT
Sơđồcấutrúccơ bảncủaCPU
8 September 2009 6
NKK-HUT
Đơnvịđiềukhiển (Control Unit - CU)
Đơnvị số học và logic (Arithmetic and
Logic Unit - ALU)
Tập thanh ghi (Register File - RF)
Đơnvị nối ghép bus (Bus Interface Unit -
BIU)
Bus bên trong (Internal Bus)
Các thành phầncơ bảncủaCPU
8 September 2009 7
NKK-HUT
2. Đơnvị số học và logic
Chứcnăng: Thựchiệncácphéptoán
số học và phép toán logic:
Số học: cộng, trừ, nhân, chia, tăng, giảm,
đảodấu
Logic: AND, OR, XOR, NOT, phép dịch bit.
8 September 2009 8
NKK-HUT
Mô hình kếtnốiALU
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 3
8 September 2009 9
NKK-HUT
3. Đơnvịđiềukhiển
Chứcnăng
Điềukhiểnnhậnlệnh từ bộ nhớđưavào
thanh ghi lệnh
Tăng nội dung củaPC để trỏ sang lệnh kế
tiếp
Giảimãlệnh đã đượcnhận để xác định thao
tác mà lệnh yêu cầu
Phát ra các tín hiệu điềukhiểnthựchiệnlệnh
Nhậncáctínhiệuyêucầutừ bus hệ thống và
đáp ứng vớicácyêucầu đó.
8 September 2009 10
NKK-HUT
Mô hình kếtnối đơnvịđiềukhiển
8 September 2009 11
NKK-HUT
Các tín hiệu đưa đến đơnvịđiềukhiển
Clock: tín hiệunhịptừ mạch tạodao
động bên ngoài.
Mã lệnh từ thanh ghi lệnh đưa đến để
giảimã.
Các cờ từ thanh ghi cờ cho biếttrạng
thái củaCPU.
Các tín hiệuyêucầutừ bus điềukhiển
8 September 2009 12
NKK-HUT
Các tín hiệu phát ra từđơnvịđiềukhiển
Các tín hiệu điềukhiển bên trong CPU:
Điềukhiển các thanh ghi
ĐiềukhiểnALU
Các tín hiệu điềukhiển bên ngoài CPU:
Điềukhiểnbộ nhớ
Điềukhiểncácmô-đun vào-ra
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 4
8 September 2009 13
NKK-HUT
Các phương pháp thiếtkếđơnvịđiềukhiển
Đơnvịđiềukhiểnvi chương trình
(Microprogrammed Control Unit)
Đơnvịđiềukhiểnnốikếtcứng
(Hardwired Control Unit)
8 September 2009 14
NKK-HUT
Đơnvịđiềukhiểnvi chương trình
8 September 2009 15
NKK-HUT
Đơnvịđiềukhiểnvi chương trình (tiếp)
Bộ nhớ vi chương trình (ROM) lưutrữ
các vi chương trình (microprogram)
Mộtvi chương trình bao gồmcácvi
lệnh (microinstruction)
Mỗivi lệnh mã hoá cho một vi thao tác
(microoperation)
Để hoàn thành mộtlệnh cầnthựchiện
mộthoặcmột vài vi chương trình
Tốc độ chậm
8 September 2009 16
NKK-HUT
Đơnvịđiềukhiểnnốikếtcứng
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 5
8 September 2009 17
NKK-HUT
Đơnvịđiềukhiểnnốikếtcứng (tiếp)
Sử dụng mạch cứng để giảimãvàtạo
các tín hiệu điềukhiểnthựchiệnlệnh
Tốc độ nhanh
Đơnvịđiềukhiểnphứctạp
8 September 2009 18
NKK-HUT
4.Tập thanh ghi
Chứcnăng và đặc điểm:
Chứacácthôngtin tạmthờiphụcvụ cho
hoạt động ở thời điểmhiệntạicủaCPU
Đượccoilàmức đầutiêncủahệ thống nhớ
Số lượng thanh ghi nhiều Æ tăng hiệunăng
củaCPU
Có hai loại thanh ghi:
Các thanh ghi lậptrìnhđược
Các thanh ghi không lậptrìnhđược
8 September 2009 19
NKK-HUT
Phân loại thanh ghi theo chứcnăng
Thanh ghi địachỉ: quảnlýđịachỉ củangăn
nhớ hay cổng vào-ra.
Thanh ghi dữ liệu: chứatạmthờicácdữ
liệu.
Thanh ghi đanăng: có thể chứa địachỉ
hoặcdữ liệu.
Thanh ghi điềukhiển/trạng thái: chứacác
thông tin điềukhiểnvàtrạng thái củaCPU.
Thanh ghi lệnh: chứalệnh đang đượcthực
hiện.
8 September 2009 20
NKK-HUT
Mộtsố thanh ghi điểnhình
Các thanh ghi địachỉ
Bộđếmchương trình PC (Program Counter)
Con trỏ dữ liệu DP (Data Pointer)
Con trỏ ngănxếp SP (Stack Pointer)
Thanh ghi cơ sở và thanh ghi chỉ số
(Base Register & Index Register)
Các thanh ghi dữ liệu
Thanh ghi trạng thái
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 6
8 September 2009 21
NKK-HUT
Bộđếmchương trình PC
Còn đượcgọi là con trỏ lệnh IP
(Instruction Pointer)
Giữđịachỉ củalệnh tiếp theo sẽđược
nhận vào.
Sau khi mộtlệnh đượcnhận vào, nội
dung PC tựđộng tăng để trỏ sang lệnh
kế tiếp.
8 September 2009 22
NKK-HUT
Minh họabộđếmchương trình
8 September 2009 23
NKK-HUT
Thanh ghi con trỏ dữ liệu
Chứa địachỉ củangănnhớ dữ liệumà
CPU muốntruynhập
Thường có mộtsố thanh ghi con trỏ dữ
liệu
8 September 2009 24
NKK-HUT
Minh hoạ thanh ghi con trỏ dữ liệu
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 7
8 September 2009 25
NKK-HUT
Ngănxếp (Stack)
Ngănxếplàvùngnhớ có cấutrúcLIFO
(Last In - First Out)
Ngănxếpthường dùng để phụcvụ cho
chương trình con
Đáy ngănxếplàmộtngănnhớ xác định
Đỉnh ngănxếplàthôngtin nằm ở vị trí
trên cùng trong ngănxếp
Đỉnh ngănxếpcóthể bị thay đổi
8 September 2009 26
NKK-HUT
Con trỏ ngănxếp SP (Stack Pointer)
Chứa địachỉ củangănnhớđỉnh ngănxếp
Khi cấtmộtthôngtin vàongănxếp:
Nội dung của SP tựđộng giảm
Thông tin đượccất vào ngănnhớđượctrỏ
bởiSP
Khi lấymột thông tin ra khỏingănxếp:
Thông tin được đọctừ ngănnhớđượctrỏ bởi
SP
Nội dung của SP tựđộng tăng
Khi ngănxếprỗng, SP trỏ vào đáy
8 September 2009 27
NKK-HUT
Minh họa con trỏ ngănxếpSP
8 September 2009 28
NKK-HUT
Thanh ghi cơ sở và thanh ghi chỉ số
Thanh ghi cơ sở: chứa địachỉ củangăn
nhớ cơ sở (địachỉ cơ sở)
Thanh ghi chỉ số: chứa độ lệch địachỉ
giữangănnhớ mà CPU cầntruynhập
so vớingănnhớ cơ sở (chỉ số)
Địachỉ củangănnhớ cầntruynhập=
địachỉ cơ sở + chỉ số
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 8
8 September 2009 29
NKK-HUT
Minh họa thanh ghi cơ sở và thanh ghi chỉ số
8 September 2009 30
NKK-HUT
Các thanh ghi dữ liệu
Chứacácdữ liệutạmthờihoặccáckết
quả trung gian
Cần có nhiều thanh ghi dữ liệu
Các thanh ghi số nguyên: 8, 16, 32, 64
bit
Các thanh ghi số dấuphẩy động
8 September 2009 31
NKK-HUT
Thanh ghi trạng thái (Status Register)
Còn gọi là thanh ghi cờ (Flag Register)
Chứa các thông tin trạng thái củaCPU
Các cờ phép toán: báo hiệutrạng thái của
kếtquả phép toán
Các cờđiềukhiển: biểuthị trạng thái điều
khiểncủaCPU
8 September 2009 32
NKK-HUT
Ví dụ cờ phép toán
Cờ Zero (cờ rỗng): đượcthiếtlậplên1 khi
kếtquả của phép toán bằng 0.
Cờ Sign (cờ dấu): đượcthiếtlậplên1 khikết
quả phép toán nhỏ hơn0
Cờ Carry (cờ nhớ): đượcthiếtlậplên1 nếu
phép toán có nhớ ra ngoài bit cao nhất Æ cờ
báo tràn vớisố không dấu.
Cờ Overflow (cờ tràn): đượcthiếtlậplên1
nếucộng hai số nguyên cùng dấumàkếtquả
có dấungượclại Æ cờ báo tràn vớisố có
dấu.
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 9
8 September 2009 33
NKK-HUT
Ví dụ cờđiềukhiển
Cờ Interrupt (Cờ chophépngắt):
NếuIF = 1 Æ CPU ở trạng thái cho phép
ngắtvới tín hiệuyêucầungắttừ bên ngoài
gửitới
NếuIF = 0 Æ CPU ở trạng thái cấmngắt
với tín hiệuyêucầungắttừ bên ngoài gửi
tới
8 September 2009 34
NKK-HUT
4.2. Tậplệnh
Mỗibộ xử lý có mộttậplệnh xác định
Tậplệnh thường có hàng chục đến hàng
trămlệnh
Mỗilệnh là mộtchuỗisố nhị phân mà bộ xử
lý hiểu được để thựchiệnmộtthaotácxác
định.
Các lệnh đượcmôtả bằngcáckýhiệugợi
nhớ Æ chínhlàcáclệnh củahợpngữ
1. Giớithiệu chung về tậplệnh
8 September 2009 35
NKK-HUT
Các thành phầncủalệnh máy
Mã thao tác (operation code Æ opcode):
mã hóa cho thao tác mà bộ xử lý phảithực
hiện
Địachỉ toán hạng: chỉ ra nơichứacáctoán
hạng mà thao tác sẽ tác động
Toán hạng nguồn: dữ liệuvàocủa thao tác
Toán hạng đích: dữ liệuracủa thao tác
8 September 2009 36
NKK-HUT
Số lượng địachỉ toán hạng trong lệnh (1)
Ba địachỉ toán hạng:
2 toán hạng nguồn, 1 toán hạng đích
c = a + b
Từ lệnh dài vì phải mã hoá địachỉ cho cả
ba toán hạng
Đượcsử dụng trên các bộ xử lý tiên tiến
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 10
8 September 2009 37
NKK-HUT
Số lượng địachỉ toán hạng trong lệnh (2)
Hai địachỉ toán hạng:
Mộttoánhạng vừalàtoánhạng nguồn
vừalàtoánhạng đích; toán hạng còn lạilà
toán hạng nguồn
a = a + b
Giá trị cũ của 1 toán hạng nguồnbị mấtvì
phảichứakếtquả
Rút gọn độ dài từ lệnh
Phổ biến
8 September 2009 38
NKK-HUT
Số lượng địachỉ toán hạng trong lệnh (3)
Một địachỉ toán hạng:
Mộttoánhạng đượcchỉ ra trong lệnh
Mộttoánhạng là ngầm định Æ thường là
thanh ghi (thanh chứa –accumulator)
Đượcsử dụng trên các máy ở các thế hệ
trước
8 September 2009 39
NKK-HUT
Số lượng địachỉ toán hạng trong lệnh (4)
0 địachỉ toán hạng:
Các toán hạng đều đượcngầm định
Sử dụng Stack
Ví dụ:
push a
push b
add
pop c
có nghĩalà: c = a+b
không thông dụng
8 September 2009 40
NKK-HUT
Đánh giá về sốđịachỉ toán hạng
Nhiều địachỉ toán hạng
Các lệnh phứctạphơn
Cầnnhiều thanh ghi
Chương trình có ít lệnh hơn
Nhậnlệnh và thựchiệnlệnh chậmhơn
Ít địachỉ toán hạng
Các lệnh đơngiảnhơn
Cần ít thanh ghi
Chương trình có nhiềulệnh hơn
Nhậnlệnh và thựchiệnlệnh nhanh hơn
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 11
8 September 2009 41
NKK-HUT
Các vấn đề củathiếtkế tậplệnh (1)
Về thao tác
Bao nhiêu thao tác ?
Các thao tác nào ?
Mức độ phứctạpcủa các thao tác ?
Các kiểudữ liệu
Các khuôn dạng lệnh
Độ dài củatrường mã thao tác
Số lượng địachỉ toán hạng
8 September 2009 42
NKK-HUT
Các vấn đề củathiếtkế tậplệnh (2)
Các thanh ghi
Số thanh ghi củaCPU đượcsử dụng
Các thao tác nào đượcthựchiệntrêncác
thanh ghi ?
Các phương pháp định địachỉ (xét sau)
(addressing modes)
8 September 2009 43
NKK-HUT
RISC
CISC và RISC
CISCÆComplex Instruction Set Computer:
Máy tính vớitậplệnh phứctạp
Các bộ xử lý truyềnthống: x86, 680x0
RISCÆReduced Instruction Set Computer:
Máy tính vớitậplệnh thu gọn
SunSPARC, Power PC, MIPS, ARM, …
RISC đối nghịch vớiCISC
8 September 2009 44
NKK-HUT
Các đặctrưng của RISC
Số lượng lệnh ít
Hầuhếtcáclệnh truy nhập toán hạng ở
các thanh ghi
Truy nhậpbộ nhớ bằng các lệnh
LOAD/STORE
Thờigianthựchiệnlệnh là mộtchukỳ
máy
Các lệnh có độ dài cốđịnh (32 bit)
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 12
8 September 2009 45
NKK-HUT
Các đặctrưng của RISC (tiếp)
Số lượng khuôn dạng lệnh là ít (<=4)
CPU có tập thanh ghi lớn
Có ít mode địachỉ (<=4)
Hỗ trợ các thao tác củangônngữ bậc
cao
Đều đượcthiếtkế kiểu pipeline lệnh
8 September 2009 46
NKK-HUT
2. Các kiểu thao tác cơ bản
Chuyểndữ liệu
Xử lý số họcvớisố nguyên
Xử lý logic
Điềukhiển vào-ra
Chuyển điềukhiển(rẽ nhánh)
Điềukhiểnhệ thống
8 September 2009 47
NKK-HUT
Các lệnh chuyểndữ liệu
MOVE Copy dữ liệutừ nguồn đến đích
LOAD Nạpdữ liệutừ bộ nhớđếnbộ xử lý
STORE Cấtdữ liệutừ bộ xử lý đếnbộ nhớ
EXCHANGE Trao đổinội dung củanguồnvàđích
CLEAR Chuyển các bit 0 vào toán hạng đích
SET Chuyển các bit 1 vào toán hạng đích
PUSH Cấtnội dung toán hạng nguồn vào ngănxếp
POP Lấynội dung đỉnh ngănxếp đưa đến
toán hạng đích
8 September 2009 48
NKK-HUT
Các lệnh số học
ADD Cộng hai toán hạng
SUBTRACT Trừ hai toán hạng
MULTIPLY Nhân hai toán hạng
DIVIDE Chia hai toán hạng
ABSOLUTE Lấytrị tuyệt đốitoánhạng
NEGATE Đổidấutoánhạng (lấybù2)
INCREMENT Tăng toán hạng thêm 1
DECREMENT Giảmtoánhạng đi1
COMPARE Trừ hai toán hạng để lậpcờ
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 13
8 September 2009 49
NKK-HUT
Các lệnh logic
AND Thựchiện phép AND hai toán hạng
OR Thựchiện phép OR hai toán hạng
XOR Thựchiện phép XOR hai toán hạng
NOT Đảobit củatoánhạng (lấybù1)
TEST Thựchiện phép AND hai toán hạng
để lậpcờ
8 September 2009 50
NKK-HUT
Minh hoạ các lệnh AND, OR, XOR
Giả sử có hai thanh ghi chứadữ liệunhư sau:
(R1) = 1010 1010
(R2) = 0000 1111
R1 Å (R1) AND (R2) = 0000 1010
Phép toán AND dùng để xoá mộtsố bit và giữ
nguyên mộtsố bit còn lạicủatoánhạng.
R1 Å (R1) OR (R2) = 1010 1111
Phép toán OR dùng để thiếtlậpmộtsố bit và giữ
nguyên mộtsố bit còn lạicủatoánhạng.
R1 Å (R1) XOR (R2) = 1010 0101
Phép toán XOR dùng để đảomộtsố bit và giữ
nguyên mộtsố bit còn lạicủatoánhạng.
8 September 2009 51
NKK-HUT
Các lệnh logic (tiếp)
SHIFT Dịch trái (phải) toán hạng
ROTATE Quay trái (phải) toán hạng
8 September 2009 52
NKK-HUT
Các thao tác SHIFT và ROTATE
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 14
8 September 2009 53
NKK-HUT
Các lệnhvàorachuyêndụng
INPUT Copy dữ liệutừ mộtcổng xác
định đưa đến đích
OUTPUT Copy dữ liệutừ nguồn đến
mộtcổng xác định
8 September 2009 54
NKK-HUT
Các lệnh chuyển điềukhiển
JUMP (BRANCH) Lệnh nhảy không điềukiện:
nạpvàoPC một địachỉ xác định
JUMP CONDITIONAL Lệnh nhảycóđiềukiện:
điềukiện đúng Æ nạpvàoPC một địachỉ xác định
điềukiệnsaiÆ không làm gì cả
CALL Lệnh gọichương trình con:
Cấtnội dung củaPC (địachỉ trở về) ra mộtvị trí xác
định (thường ở Stack)
NạpvàoPC địachỉ củalệnh đầutiêncủachương trình
con
RETURN Lệnh trở về từ chương trình con:
Khôi phục địachỉ trở về trả lạichoPC để trở về
chương trình chính
8 September 2009 55
NKK-HUT
Lệnh rẽ nhánh không điềukiện
Chuyểntớithựchiệnlệnh
ở vị trí có địachỉ XXX:
PC Å XXX
8 September 2009 56
NKK-HUT
Lệnh rẽ nhánh có điềukiện
Trong lệnh có kèm theo điềukiện
Kiểmtrađiềukiện trong lệnh:
Nếu điềukiện đúng Æ chuyểntớithựchiện
lệnh ở vị trí có địachỉ XXX
PC Å XXX
Nếu điềukiệnsaiÆ chuyển sang thựchiện
lệnh_kế_tiếp
Điềukiệnthường đượckiểmtrathông
qua các cờ
Có nhiềulệnh rẽ nhánh có điềukiện
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 15
8 September 2009 57
NKK-HUT
Minh hoạ lệnh rẽ nhánh có điềukiện
8 September 2009 58
NKK-HUT
Lệnh CALL và RETURN
Lệnh gọichương trình con: lệnh CALL
Cấtnội dung PC (chứa địachỉ củalệnh_kế_tiếp) ra
Stack
NạpvàoPC địachỉ củalệnh đầutiêncủachương
trình con đượcgọi
Æ Bộ xử lý được chuyển sang thựchiệnchương trình
con tương ứng
Lệnh trở về từ chương trình con: lệnh RETURN
Lấy địachỉ củalệnh_kế_tiếp đượccất ở Stack nạp
trả lạichoPC Æ Bộ xử lý được điềukhiển quay trở
về thựchiệntiếplệnh nằmsaulệnh CALL
8 September 2009 59
NKK-HUT
Minh hoạ lệnh CALL và RETURN
8 September 2009 60
NKK-HUT
Gọicácthủ tụclồng nhau
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 16
8 September 2009 61
NKK-HUT
Sử dụng Stack
8 September 2009 62
NKK-HUT
Các lệnh điềukhiểnhệ thống
HALT Dừng thựchiệnchương trình
WAIT Tạmdừng thựchiệnchương trình,
lặpkiểmtrađiềukiệnchođếnkhi
thoả mãn thì tiếptụcthựchiện
NO OPERATION Không thựchiệngìcả
LOCK Cấm không cho xin chuyểnnhượng
bus
UNLOCK Cho phép xin chuyểnnhượng bus
8 September 2009 63
NKK-HUT
3. Các phương pháp định địachỉ (addressing modes)
Khái niệmvềđịnh địachỉ (addressing)
Toán hạng củalệnh có thể là:
Mộtgiátrị cụ thể nằm ngay trong lệnh
Nội dung của thanh ghi
Nội dung củangănnhớ hoặccổng vào-ra
Phương pháp định địachỉ là cách thức
địachỉ hóa trong trường địachỉ củalệnh
để xác định nơichứa toán hạng
8 September 2009 64
NKK-HUT
Các phương pháp định địachỉ thông dụng
Định địachỉ tứcthì
Định địachỉ thanh ghi
Định địachỉ trựctiếp
Định địachỉ gián tiếp qua thanh ghi
Định địachỉ gián tiếp
Định địachỉ dịch chuyển
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 17
8 September 2009 65
NKK-HUT
Định địachỉ tứcthì
Toán hạng nằm ngay trong Trường địa
chỉ củalệnh
Chỉ có thể là toán hạng nguồn
Ví dụ:
ADD R1, 5 ; R1Å R1+5
Không tham chiếubộ nhớ
Truy nhập toán hạng rất nhanh
Dảigiátrị của toán hạng bị hạnchế
8 September 2009 66
NKK-HUT
Sơđồđịnh địachỉ tứcthì
8 September 2009 67
NKK-HUT
Định địachỉ thanh ghi
Toán hạng đượcchứa trong thanh ghi có
tên trong Trường địachỉ
Ví dụ:
ADD R1, R2 ; R1Å R1+R2
Số lượng thanh ghi ít Æ Trường địachỉ
chỉ cầnítbit
Không tham chiếubộ nhớ
Truy nhập toán hạng nhanh
Tăng số lượng thanh ghi Æ hiệuquả hơn
8 September 2009 68
NKK-HUT
Sơđồđịnh địachỉ thanh ghi
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 18
8 September 2009 69
NKK-HUT
Định địachỉ trựctiếp
Toán hạng là ngănnhớ có địachỉđược
chỉ ra trựctiếptrongTrường địachỉ của
lệnh
Ví dụ: ADD R1, A ;R1 Å R1 + (A)
Cộng nội dung thanh ghi R1 vớinội dung
củangănnhớ có địachỉ là A
Tìm toán hạng trong bộ nhớởđịachỉ A
CPU tham chiếubộ nhớ mộtlần để truy
nhậpdữ liệu
8 September 2009 70
NKK-HUT
Sơđồđịnh địachỉ trựctiếp
8 September 2009 71
NKK-HUT
Định địachỉ gián tiếp qua thanh ghi
Toán hạng là ngănnhớ có địachỉ nằm
trong thanh ghi
Trường địachỉ cho biết tên thanh ghi đó
Thanh ghi có thể là ngầm định
Thanh ghi này đượcgọi là thanh ghi
con trỏ
Vùng nhớ có thểđược tham chiếulà
lớn(2
n
), (vớin làđộ dài của thanh ghi)
8 September 2009 72
NKK-HUT
Sơđồđịnh địachỉ gián tiếp qua thanh ghi
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 19
8 September 2009 73
NKK-HUT
Định địachỉ gián tiếpqua ngănnhớ
Ngănnhớđượctrỏ bởiTrường địachỉ
củalệnh chứa địachỉ củatoánhạng
Có thể gián tiếp nhiềulần
Giống như khái niệmbiến con trỏ và
biến động trong lậptrình
CPU phảithựchiện tham chiếubộ nhớ
nhiềulần để tìm toán hạng Æ chậm
Vùng nhớ có thểđược tham chiếulà
lớn
8 September 2009 74
NKK-HUT
Sơđồđịnh địachỉ gián tiếp qua ngănnhớ
8 September 2009 75
NKK-HUT
Định địachỉ dịch chuyển
Để xác định toán hạng, Trường địachỉ
chứa hai thành phần:
Tên thanh ghi
Hằng số
Địachỉ của toán hạng = nội dung thanh
ghi + hằng số
Thanh ghi có thểđượcngầm định
8 September 2009 76
NKK-HUT
Sơđồđịnh địachỉ dịch chuyển
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 20
8 September 2009 77
NKK-HUT
Các dạng của định địachỉ dịch chuyển
Địachỉ hoá tương đốivớiPC
Thanh ghi là Bộđếmchương trình PC
Toán hạng có địachỉ cách ngănnhớđược
trỏ bởiPC một độ lệch xác định
Định địachỉ cơ sở
Thanh ghi chứa địachỉ cơ sở
Hằng số là chỉ số
Định địachỉ chỉ số
Hằng số là địachỉ cơ sở
Thanh ghi chứachỉ số
8 September 2009 78
NKK-HUT
4.3. Hoạt động củaCPU
Chu trình lệnh
Nhậnlệnh
Giảimãlệnh
Nhậntoánhạng
Thựchiệnlệnh
Cất toán hạng
Ngắt
8 September 2009 79
NKK-HUT
Giản đồ trạng thái chu trình lệnh
8 September 2009 80
NKK-HUT
Nhậnlệnh
CPU đưa địachỉ củalệnh cầnnhậntừ bộ
đếmchương trình PC ra bus địachỉ
CPU phát tín hiệu điềukhiển đọcbộ nhớ
Lệnh từ bộ nhớđược đặt lên bus dữ liệu
và được CPU copy vào thanh ghi lệnh IR
CPU tăng nội dung PC để trỏ sang lệnh
kế tiếp
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 21
8 September 2009 81
NKK-HUT
Sơđồmô tả quá trình nhậnlệnh
8 September 2009 82
NKK-HUT
Giảimãlệnh
Lệnh từ thanh ghi lệnh IR được đưa
đến đơnvịđiềukhiển
Đơnvịđiềukhiểntiếnhànhgiảimãlệnh
để xác định thao tác phảithựchiện
Giảimãlệnh xảy ra bên trong CPU
8 September 2009 83
NKK-HUT
Nhậndữ liệu
CPU đưa địachỉ của toán hạng ra bus
địachỉ
CPU phát tín hiệu điềukhiển đọc
Toán hạng được đọc vào CPU
Tương tự như nhậnlệnh
8 September 2009 84
NKK-HUT
Nhậndữ liệugiántiếp
CPU đưa địachỉ ra bus địachỉ
CPU phát tín hiệu điềukhiển đọc
Nội dung ngănnhớđược đọc vào CPU,
đó chính là địachỉ củatoánhạng
Địachỉ này được CPU phát ra bus địa
chỉđểtìm ra toán hạng
CPU phát tín hiệu điềukhiển đọc
Toán hạng được đọc vào CPU
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 22
8 September 2009 85
NKK-HUT
Sơđồtả nhậntoánhạng gián tiếp
8 September 2009 86
NKK-HUT
Thựchiệnlệnh
Có nhiềudạng tuỳ thuộcvàolệnh
Có thể là:
Đọc/Ghi bộ nhớ
Vào/Ra
Chuyểngiữa các thanh ghi
Thao tác số học/logic
Chuyển điềukhiển(rẽ nhánh)
8 September 2009 87
NKK-HUT
Ghi toán hạng
CPU đưa địachỉ ra bus địachỉ
CPU đưadữ liệucần ghi ra bus dữ liệu
CPU phát tín hiệu điềukhiểnghi
Dữ liệutrênbus dữ liệu đượccopy đến
vị trí xác định
8 September 2009 88
NKK-HUT
Sơđồmô tả quá trình ghi toán hạng
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 23
8 September 2009 89
NKK-HUT
Ngắt
Nội dung củabộđếmchương trình PC (địa
chỉ trở về sau khi ngắt) được đưarabus dữ
liệu
CPU đưa địachỉ (thường đượclấytừ con trỏ
ngănxếp SP) ra bus địachỉ
CPU phát tín hiệu điềukhiểnghibộ nhớ
Địachỉ trở về trên bus dữ liệu được ghi ra vị
trí xác định (ở ngănxếp)
Địachỉ lệnh đầutiêncủachương trình con
điềukhiểnngắt đượcnạpvàoPC
8 September 2009 90
NKK-HUT
Sơđồmô tả chu trình ngắt
8 September 2009 91
NKK-HUT
4.4. Kỹ thuật đường ống lệnh
Khái niệm: Đường ống lệnh (Instruction Pipelining)
là kỹ thuật chia chu trình lệnh thành các công đoạn
và cho phép thựchiệngối lên nhau (như dây
chuyềnlắpráp)
Chẳng hạn có 6 công đoạn:
Nhậnlệnh (Fetch Instruction - FI)
Giảimãlệnh (Decode Instruction - DI)
Tính địachỉ toán hạng (Calculate Operand Address-CO)
Nhận toán hạng (Fetch Operands - FO)
Thựchiệnlệnh (Execute Instruction - EI)
Ghi toán hạng (Write Operands - WO)
8 September 2009 92
NKK-HUT
Giản đồ thời gian cho đường ống lệnh
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 24
8 September 2009 93
NKK-HUT
Các Hazard của đường ống lệnh
Hazard cấu trúc
Hazard dữ liệu
Hazard điềukhiển
8 September 2009 94
NKK-HUT
Hazard về cấu trúc
Nguyên nhân: Dùng chung tài nguyên
Khắc phục:
nhân tài nguyên để tránh xung đột
Làm trễ
Ví dụ:
Bus dữ liệu: truyền lệnh và dữ liệu
Æ Bus lệnh riêng, bus dữ liệu riêng (cache
lệnh và cache dữ liệu)
8 September 2009 95
NKK-HUT
Ví dụ Hazard về cấu trúc
conflict on arithmetic unit
cache miss
TLB miss
MULT A,B,C
MULT D,E,F
I D F E E E W
I D F F F E E E W
3 clocks necessary for multiplication
stall
8 September 2009 96
NKK-HUT
Hazard về dữ liệu
Nguyên nhân: lệnh sau sử dụng dữ liệu
kết quả của lệnh trước
Các dạng:
RAW (Read After Write)
WAR (Write After Read)
WAW (Write After Write)
Bài giảng Hệ thống máy tính
Nguyễn Kim Khánh - ĐHBKHN 25
8 September 2009 97
NKK-HUT
Sự phụ thuộc về dữ liệu
RAW
WAR
WAW
ADD A,B,C
ADD E,A,D
ADD A,B,C
ADD B,D,E
ADD A,B,C
ADD A,D,E
Write-A must be earlier than
Read-A
Read-B must be earlier than
Write-B
First Write-A must be earlier
Than second Write-A
8 September 2009 98
NKK-HUT
WAR and WAW
WAR
WAW
ADD A,B,C
ADD B,D,E
ADD A,B,C
ADD A,D,E
Read-B is earlier than Write-B
first Write-A is earlier than second Write-A
I D F E W
I D F E W
Write B
Read B
I D F E W
I D F E W
Write A
Write A
no conflict at in-order pipeline
conflict at out-of-order pipeline
8 September 2009 99
NKK-HUT
RAW
ADD A,B,C
ADD E,A,D
I D F E W
I D F E C
I D F E W
I D D D F E W
Read A
Write A
stall
Write-A must be earlier
Than Read-A
Write A
Read A
8 September 2009 100
NKK-HUT
Hazard điều khiển
BEQ A, B, Label
LOAD C, X
・・・・
Label: LOAD C, Y
I D F E C
I D F E C
set PC
stall
Wait for branch
address
calculation
next instruction to a branch instruction cannot be fetched until branch condition
defined and PC updated