SlideShare ist ein Scribd-Unternehmen logo
1 von 127
Downloaden Sie, um offline zu lesen
Chương 2
Tổ chức hoạt động của VXL
2.1 Những đặc điểm cấu trúc của bộ VXL
2.1.1 Công suất của bộ vi xử lý
Công suất của bộ vi xử lý (VXL) là khả năng xử lý dữ liệu, bao
gồm 3 đặc điểm chính sau:
 Độ dài từ của bộ VXL (data word length), tính bằng byte
 Dung lượng nhớ vật lý có thể đánh địa chỉ (addressing capacity):
Bộ nhớ vật lý
 Tốc độ xử lý lệnh của bộ VXL (instruction execute speed).
Công suất của máy tính, hay tốc độ xử lý thông tin, khả năng lưu
trữ thông tin, khả năng kết nối nhiều loại thiết bị ngoại vi... phụ
thuộc vào công suất của bộ VXL trong CPU.
9/7/2020 1
Tổ chức hoạt động của VXL (tt)
a) Độ dài từ.
 Mỗi một bộ VXL chỉ có thể xử lý dữ liệu với độ dài từ cố
định (16-bit, 32-bit, 64-bit). Tập lệnh của bộ VXL thường có
các lệnh thực hiện theo từ và theo byte.
 Độ rộng của từ có độ dài bao nhiêu bit thì cũng có bấy nhiêu
bit đối với các thanh ghi, ALU và bus dữ liệu bên trong của
bộ VXL.
 Độ dài từ càng lớn càng tạo ra nhiều khả năng tính toán của
bộ VXL: khoảng biểu diễn số rộng hơn, tốc độ tính toán
nhanh hơn.
9/7/2020 2
Tổ chức hoạt động của VXL (tt)
b) Khả năng đánh địa chỉ.
 Các từ dữ liệu và lệnh máy được lưu trong bộ nhớ tại các ô
nhớ khác nhau. Mỗi ô nhớ phải có 1 địa chỉ riêng biệt.
 Dải đánh địa chỉ càng lớn thì dung lượng bộ nhớ càng nhiều
(ví dụ, để đánh địa chỉ đến 4GB cần phải có 32 đường dây địa
chỉ (A0 - A31).
 Để đánh địa chỉ, bộ VXL thường sử dụng thanh ghi địa chỉ
(address register).
 Khả năng đánh địa chỉ càng lớn thì càng cho phép tạo ra một
hệ thống máy tính có cấu hình mạnh với nhiều loại thiết bị
ngoại vi, bộ nhớ chính có dung lượng lớn và khả năng xử lý
nhanh.
9/7/2020 3
Tổ chức hoạt động của VXL (tt)
c) Tốc độ thực hiện lệnh.
 Tốc độ thực hiện lệnh của bộ VXL có thể đo bằng tốc độ thực hiện các
lệnh dấu phẩy động FLOPS (Floating Point Operations per Second)
hoặc tính bằng triệu lệnh/giây (MIPS - Millions of instructions per
second). Công thức tính MIPS là:
trong đó:
f - tần số làm việc của bộ VXL
N - số lượng các đơn vị xử lý số học và logic (ALU)
không phụ thuộc vào nhau bên trong bộ VXL.
9/7/2020 4
T
M
N
f
MIPS


*
Tổ chức hoạt động của VXL (tt)
c) Tốc độ thực hiện lệnh.
M -số lượng vi lệnh (microinstruction) trung bình của 1 lệnh trong
bộ VXL (thường để thực hiện 1 lệnh VXL cần từ 4-7 vi lệnh)
T - hệ số thời gian truy nhập bộ nhớ.
Theo công thức này, tốc độ thực hiện lệnh của bộ VXL có thể thay đổi
nhờ 4 yếu tố.
Để nâng cao tốc độ VXL, kiến trúc song song, đường ống, đồng xử lý,
bộ nhớ dữ trữ (cache memory) và bus rộng (wide bus) đã được áp dụng
cho các chip VXL công nghệ cao hiện nay.
9/7/2020 5
T
M
N
f
MIPS


*
Tổ chức hoạt động của VXL (tt)
2.1.2 Những đặc tính nâng cao tốc độ của bộ VXL
 Kỹ thuật đường ống (pipelining technique)
 Xử lý song song (parallel processing) và kiến trúc siêu
hướng (superscalar)
 Đồng xử lý
 Kỹ thuật nhớ dự trữ (Cache memory technique)
 Bus rộng (wider bus)
9/7/2020 6
Tổ chức hoạt động của VXL (tt)
a) Kỹ thuật đường ống (pipelining technique).
 Đây là một kỹ thuật làm cho các giai đoạn khác nhau của nhiều
lệnh được thi hành cùng một lúc.
 Theo đó, các bộ VXL hiện nay có chức năng thực hiện các lệnh
máy lên tục thành 1 dây chuyền với các công đoạn:
 nhận lệnh từ bộ nhớ,
 giải mã lệnh,
 thực hiện lệnh,
 ghi kết quả thực hiện lệnh vào bộ nhớ.
 Khi lệnh thứ nhất bước vào thực hiện ở giai đoạn thứ 2 thì mã
lệnh của lệnh tiếp theo được đọc từ bộ nhớ, quá trình tiếp tục như
vây, …
=> Minh họa với 3 lệnh Load, Add và Store ở Chương 2.
9/7/2020 7
Tổ chức hoạt động của VXL (tt)
a) Kỹ thuật đường ống (pipelining technique). (tt)
9/7/2020 8
In a typical early RISC processor (eg MIPS
R3000), there would be four pipeline
stages
IF - Instruction Fetch
Fetch the instruction from memory
DEC - Decode and Operand Fetch
Decode it and fetch operands from the
register file
EX - Execute
Execute the instruction in the ALU
WB - WriteBack
Write the result back in to a register Population of the pipeline at each
clock cycle: i1, i2, ... are successive
instructions in the instruction
stream.
Tổ chức hoạt động của VXL (tt)
a) Kỹ thuật đường ống (pipelining technique). (tt)
9/7/2020 9
Ví dụ: Giả sử, mỗi lệnh được thực hiện trong 5 giai đoạn và mỗi giai đoạn được thực
hiện trong 1 chu kỳ xung nhịp. Các giai đoạn thực hiện một lệnh là: lấy lệnh (IF:
Instruction Fetch), giải mã (ID: Instruction Decode), thi hành (EX: Execute), thâm nhập
bộ nhớ (MEM: Memory Access), lưu trữ kết quả (RS: Result Storing).
Tổ chức hoạt động của VXL (tt)
b) Xử lý song song.
 Xử lý song có nghĩa là 2 quá trình tính toán cùng xảy ra đồng thời.
Trong kiến trúc máy tính, sự kết hợp 2 bộ VXL trong khối xử lý
trung tâm (CPU) tạo ra khả năng xử lý song song cùng một thời
gian.
 Khi một nhiệm vụ được xử lý tuần tự như kiểu Von Neumann thì
bộ xử lý đó (hay máy tính) được gọi là bộ xử lý tuần tự.
 Nếu một nhiệm vụ T được chia thành n nhiệm vụ con T1, T2, ..., Tn
có kích thước xấp xỉ nhau được xử lý đồng thời (thực hiện song
song) thì tốc độ thực hiện nhiệm vụ T sẽ nhanh gấp n lần và bộ xử
lý (hay máy tính) đó gọi là bộ xử lý song song (máy tính song
song).
9/7/2020 10
Tổ chức hoạt động của VXL (tt)
b) Xử lý song song. (tt)
 Máy tính Von Neumann truyền thống có thể được xem là thuộc
loại SISD, có một chuỗi lệnh (1 chương trình) được thực hiện
bởi 1 bộ VXL và 1 bộ nhớ chứa dữ liệu.
 Có thể thực hiện xử lý song song ngay bên trong cấu trúc của bộ
VXL, bằng cách thiết kế sao cho quá trình xử lý dữ liệu bên
trong chip VXL chia thành các phiên khác nhau và thực hiện
song song nhờ sự phân chia khối logic điều khiển (CU) bên
trong thành 2 phần riêng.
9/7/2020 11
Tổ chức hoạt động của VXL (tt)
b) Xử lý song song. (tt)
 Kiến trúc của bộ VXL có các khối chức năng xử lý song song bên
trong gọi là kiến trúc siêu hướng (superscalar architechture), nghĩa
là cùng 1 lúc có nhiều hướng xử lý khác nhau bên trong VXL.
 Kiến trúc siêu hướng là sự phát triển tiếp theo của kiến trúc RISC,
nó không những nâng cao tốc độ xử lý mà còn nâng cao độ tin cậy
của CPU, bởi vì khi có sự cố ở 1 chip VXL (hay 1 đơn vị xử lý bên
trong chip) thì chip VXL còn lại (hay đơn vị xử lý còn lại bên trong
1 chip) vẫn đảm nhận chức năng được bình thường.
 Hiện nay, các máy tính sử dụng các bộ VXL kiến trúc RISC và các
máy tính sử dụng các chip Intel Pentium II, III đều có khả năng xử
lý song song bằng cấu trúc kết nối song song 2-4 chip VXL.
9/7/2020 12
Tổ chức hoạt động của VXL (tt)
c) Đồng xử lý (coprocessing).
 Tương tự như xử lý song song, bộ đồng xử lý là 1 bộ VXL riêng
biệt kết nối với bộ VXL chính thông qua bus hệ thống. Ví dụ,
trong họ VXL Intel 80X86 có bộ đồng xử lý 80387 làm việc với
80386 hay 80486.
 Bộ đồng xử lý chỉ thực hiện 1 số chức năng đặc biệt, như các
phép toán đòi hỏi sự chính xác sử dụng dấu phẩy động. Tốc độ xử
lý của bộ đồng xử lý những phép tính này sẽ nhanh hơn rất nhiều
so với bộ xử lý chính.
 Các bộ VXL công nghệ cao hiện nay đã cấy vào bên trong khối
xử lý dấu phẩy động FPU càng làm tăng tốc độ tính toán các phép
tính nhanh và chính xác hơn nhiều
9/7/2020 13
Tổ chức hoạt động của VXL (tt)
d) Bộ nhớ dự trữ (Cache memory).
 Từ công thức (1) ta thấy: tốc độ của bộ VXL sẽ tăng đáng kể nếu
tổng M+T tiến tới 1. Thời gian truy nhập bộ nhớ T có thể giảm
tối thiểu nhờ giảm tối thiểu số lượng lệnh đặt trong bộ VXL và
từng giai đoạn trong khi thực hiện lệnh và truy nhập bộ nhớ gài
chồng lên nhau về thời gian.
 Biện pháp này được áp dụng trong các bộ VXL kiến trúc RISC
(Reduced Instruction Set Computing). Bộ VXL kiến trúc RISC
chỉ làm việc với thanh ghi và chỉ có 2 lệnh truy nhập bộ nhớ là
LOAD và STORE.
9/7/2020 14
Tổ chức hoạt động của VXL (tt)
d) Bộ nhớ dự trữ (Cache memory).
 Một biện pháp giảm T nữa là áp dụng kỹ thuật bộ nhớ dự trữ (bộ
nhớ Cache), là bộ nhớ có tốc độ rất cao, nó có thể nằm ngay bên
trong bộ VXL với dung lượng hạn chế (internal cache), hoặc nằm
kề ngay bên cạnh bộ VXL và kết nối trực tiếp với chip VXL với
dung lượng đủ lớn (external cache), trong khi bộ nhớ chính kết
nối với VXL thông qua bus hệ thống.
 Sự trao đổi dữ liệu giữa bộ nhớ chính và bộ VXL bị hạn chế về
tốc độ, vì vậy để tăng tốc độ xử lý, khi thực hiện chương trình, bộ
VXL sẽ tìm kiếm lệnh ở bộ nhớ Cache trước, nếu không có thì
mới thực hiện tìm trong bộ nhớ chính.
 Vì vậy, thông thường các lệnh có tần số xuất hiện trong chương
trình cao thường được lưu trong bộ nhớ dự trữ.
9/7/2020 15
Tổ chức hoạt động của VXL (tt)
d) Bộ nhớ dự trữ (Cache memory).(tt)
9/7/2020 16
Sắp xếp bộ nhớ Cache trong hệ thống máy tính
Tổ chức hoạt động của VXL (tt)
2.1.3 Tập lệnh của bộ VXL.
 Tập lệnh là một đặc tính then chốt của kiến trúc bộ VXL. Các bộ VXL hoạt
động theo sự chỉ dẫn của tập lệnh riêng của chúng. Người lập trình hay nhà
thiết kế hệ thống dựa vào tập lệnh để soạn thảo các chương trình điều
khiển hoạt động của bộ VXL theo 1 trình tự nào đó.
 Mỗi bộ VXL có 1 tập lệnh riêng và thường có tính kế thừa. Tập lệnh
thường được chia thành nhiều nhóm và thường được biểu diễn ở dạng các
từ gợi nhớ (Hợp ngữ). Ví dụ:
+ Các lệnh chuyển dữ liệu: MOV, LOAD, STORE, IN, OUT, …
+ Các lệnh số học và logic: ADD, SUB, MUL, DIV, AND, OR, …
+ Các lệnh dịch và quay bit: SHR, SHL, …
+ Các lệnh chuyển điều khiển: JMP, CALL, RET, …
9/7/2020 17
Tổ chức hoạt động của VXL (tt)
2.1.3 Tập lệnh của bộ VXL. (tt)
 Tập lệnh máy mà ta xét ở trên thực ra chỉ là các lệnh vĩ mô.
Trong cấp máy vi chương trình, để thực hiện các lệnh này,
thường các đơn vị trong bộ xử lý phải dịch chúng ra thành các
lệnh vi mô (vi lệnh), đó là một số hạn chế các thao tác đơn giản
nhất có thể được thực hiện trực tiếp bởi phần cứng logic số.
 Cùng với các thanh ghi, đơn vị điều khiển CU là thành phần
quan trọng và phức tạp nhất trong bộ xử lý.
 Việc khảo sát quá trình thực hiện lệnh máy bên trong bộ xử lý
bởi đơn vị điều khiển, bộ nhớ và các thanh ghi được thực hiện
qua ngôn ngữ truyền thanh ghi RTL (Register Transmission
Language).
9/7/2020 18
Tổ chức hoạt động của VXL (tt)
2.1.3 Tập lệnh của bộ VXL. (tt)
 Đơn vị CU có thể được thiết kế theo 2 cách:
+ Đơn vị điều khiển được vi chương trình hóa, trong đó các
lệnh máy phức tạp được dịch thành các vi chương trình. Vi
chương trình bao gồm 1 tập hạn chế các vi lệnh là những thao tác
đơn giản nhất thực hiện được bởi mạch điện logic số. Rõ ràng quá
trình thực hiện 1 lệnh máy loại này phải mất 1 khoảng thời gian
giải mã vi lệnh.
+ Đơn vi điều khiển logic ngẫu nhiên, trong đó bộ xử lý
được thiết kế sao cho các mạch logic có thể “hiểu” và thực hiện
được ngay 1 số lệnh máy mà không qua giải mã vi lệnh.
9/7/2020 19
Tổ chức hoạt động của VXL (tt)
2.1.3 Tập lệnh của bộ VXL. (tt)
 Xuất phát từ đó cùng với các thống kê thực tiễn trên các lệnh máy trong
các chương trình đã dẫn tới 2 loại bộ xử lý:
- Loại có tập lệnh phức tạp CISC, trong đó gồm tập lệnh có cấu trúc
phức tạp và muốn thực hiện phải qua giải mã vi lệnh. Loại này rất được
thịnh hành khi tốc độ truy nhập bộ nhớ còn chậm.
- Loại có tập lệnh được rút gọn RISC, trong đó bộ xử lý được thiết kế
để có thể thực hiện được ngay 1 số lệnh có cấu trúc đơn giản hơn, hay
được dùng nhất, không phải qua giải mã vi lệnh (thường khoảng 20%).
Các VXL như 80486 hay Pentium đều sử dụng 1 cách linh hoạt cả 2
loại kiến trúc bộ xử lý này, trong đó có tăng cương các kỹ thuật tiên tiến
như kỹ thuật đường ống, siêu đường ống, tăng cường số thanh ghi và bộ
nhớ cache nội.
9/7/2020 20
Tổ chức hoạt động của VXL (tt)
2.2 Tổ chức tổng quát của bộ xử lý trung tâm CPU
 Đơn vị xử lý trung tâm CPU (Central processing Unit), gọi tắt là
bộ xử lý (processor), là bộ phận quan trọng nhất của máy tính.
Khi được thiết kế chế tạo trên 1 chip, nó được gọi là bộ vi xử lý
(microprocessor).
 Nhiệm vụ của bộ vi xử lý (VXL) là thực thi các chương trình
chứa sẵn trong bộ nhớ chính bằng cách tìm-nạp (fetch) các lệnh
của chương trình, giải mã chúng và sau đó thực hiện từng bước
các thao tác trong lệnh.
 Mô hình lập trình của bộ VXL là tổ chức các thanh ghi mà người
sử dụng có thể lập trình và truy nhập tới được bên trong bộ VXL.
9/7/2020 21
Tổ chức hoạt động của VXL (tt)
Tập các thanh ghi (Register) – R - Reg
Chức năng và đặc điểm:
 Tập hợp các thanh ghi nằm trong CPU
 Chứa các thông tin tạm thời phục vụ cho hoạt động ở thời điểm
hiện tại của CPU
 Được coi là mức đầu tiên của hệ thống nhớ (Tốc độ rất cao
(bằng tốc độ CPU)
 Tuỳ thuộc vào bộ xử lý cụ thể: số lượng, kích thước (bit).
 Số lượng thanh ghi nhiều => tăng hiệu năng của CPU
 Có hai loại thanh ghi
 Các thanh ghi lập trình được
 Các thanh ghi không lập trình được
9/7/2020 22
Tổ chức hoạt động của VXL (tt)
Tập các thanh ghi
Phân loại thanh ghi theo chức năng:
 Thanh ghi địa chỉ: quản lý địa chỉ của ngăn nhớ hay cổng
vào-ra.
 Thanh ghi dữ liệu: chứa tạm thời các dữ liệu
 Thanh ghi đa năng: có thể chứa địa chỉ hoặc dữ liệu.
 Thanh ghi điều khiển/trạng thái (thanh ghi cờ): chứa các
thông tin điều khiển và trạng thái của CPU.
 Thanh ghi lệnh (IR): chứa lệnh đang được thực hiện.
9/7/2020 23
Tổ chức hoạt động của VXL (tt)
Tập các thanh ghi
Phân loại thanh ghi theo chức năng:
 Thanh tích luỹ A (Accumulator): Thanh tích luỹ A là một
trong các thanh ghi quan trọng nhất của hầu hết các CPU:
 A được dùng để chứa toán hạng đầu vào
 A được dùng để chứa kết quả đầu ra
 Kích thước của A bằng kích thước từ xử lý của CPU: 8, 16,
32 và 64 bit.
 A cũng được sử dụng để trao đổi dữ liệu với các thiết bị vào
ra.
9/7/2020 24
Tổ chức hoạt động của VXL (tt)
Tập các thanh ghi
Phân loại thanh ghi theo chức năng:
 Bộ đếm chương trình PC: Bộ đếm chương trình PC
(Program Counter) hoặc con trỏ lệnh (IP – Instruction
Pointer) luôn chứa địa chỉ của ô nhớ chứa lệnh được thực
hiện tiếp theo;
 PC chứa địa chỉ của ô nhớ chứa lệnh đầu tiên của chương
trình khi nó được kích hoạt và được nạp vào bộ nhớ;
 Khi CPU thực hiện xong lệnh, địa chỉ của ô nhớ chứa lệnh
tiếp theo được nạp vào PC;
 Kích thước PC phụ thuộc vào thiết kế CPU. Các kích thước
thông dụng là 8, 16, 32 và 64 bit.
9/7/2020 25
Tổ chức hoạt động của VXL (tt)
Tập các thanh ghi
Phân loại thanh ghi theo chức năng:
 Thanh ghi trạng thái (SR - Status Register) hoặc thanh ghi
cờ (FR – Flag Register): mỗi bít của FR lưu trạng thái của
kết quả của phép tính ALU thực hiện;
 Hai loại bít cờ:
 Cờ trạng thái: CF, OF, AF, ZF, PF, SF
 Cờ điều khiển: IF, TF, DF
 Các bít cờ thường được sử dụng như là các điều kiện trong
các lệnh rẽ nhánh để tạo logic chương trình;
 Kích thước của thanh ghi FR phụ thuộc thiết kế CPU.
9/7/2020 26
Tổ chức hoạt động của VXL (tt)
Chế độ địa chỉ:
 Chế độ địa chỉ (Addressing modes) là phương thức CPU tổ
chức các toán hạng của lệnh, cho phép CPU kiểm tra dạng và
tìm các toán hạng của lệnh.
 Chế độ địa chỉ - Thanh ghi: Giá trị của toán hạng xác định
trong thanh ghi (xác định qua tên thanh ghi).
 Chế độ địa chỉ - Trực tiếp (trực hằng): Giá trị hằng của toán
hạng nguồn (source operand) nằm ngay sau mã lệnh (nguồn);
Toán hạng đích có thể là 1 thanh ghi hoặc 1 địa chỉ ô nhớ;
 Ví dụ:
 LOAD R1,1000 ; R1 ←1000; Nạp giá trị 1000 vào thanh ghi R1.
 LOAD B,500 ; M[B] ← 500: Nạp giá trị 500 vào ô nhớ B
9/7/2020 27
Tổ chức hoạt động của VXL (tt)
Chế độ địa chỉ:
 Địa chỉ bộ nhớ: giá trị toán hạng ở trong bộ nhớ.
 Địa chỉ bộ nhớ trực tiếp:
 Sử dụng một hằng số (hoặc tên biến) để biểu diễn địa chỉ một ô
nhớ làm một toán hạng;
 Toán hạng còn lại có thể là 1 thanh ghi hoặc 1 địa chỉ ô nhớ;
 LOAD R1,(1000); R1 ←M[1000]; Nạp nội dung ô nhớ có địa
chỉ 1000 vào thanh ghi R1.
 Địa chỉ bộ nhớ gián tiếp qua thanh ghi: Trong chế độ địa chỉ
gián tiếp, một thanh ghi được sử dụng để lưu địa chỉ ô nhớ.
 LOAD Rj,(Ri); Rj←M[Ri]; Nạp nội dung ô nhớ có địa chỉ lưu
trong thanh ghi Ri vào thanh ghi Rj.
9/7/2020 28
Tổ chức hoạt động của VXL (tt)
9/7/2020 29
Tổ chức hoạt động của VXL (tt)
Dạng địa chỉ của lệnh:
 Dạng tổng quát của lệnh gồm 2 thành phần chính:
 Mã lệnh (Opcode – operation code): mỗi lệnh có mã lệnh riêng
 Địa chỉ của các toán hạng (Addresses of Operands): mỗi lệnh có
thể gồm một hoặc nhiều toán hạng. Có thể có các dạng địa chỉ
toán hạng sau:
 3 địa chỉ
 2 địa chỉ
 1 địa chỉ
 0 địa chỉ
9/7/2020 30
Tổ chức hoạt động của VXL (tt)
Dạng địa chỉ của lệnh:
 Dạng tổng quát của lệnh gồm 2 thành phần chính:
 Toán hạng 3 địa chỉ:
 opcode addr1, addr2, addr3
 Mỗi địa chỉ addr1, addr2, addr3 tham chiếu đến một ô nhớ hoặc
một thanh ghi.
 Ví dụ:
 ADD R1, R2, R3; R1 ← R2 + R3; R2 cộng với R3, kết quả gán
vào R1. Ri là thanh ghi của CPU.
 ADD A, B, C; M[A] ← M[B] + M[C]; A, B, C là địa chỉ các ô
nhớ.
9/7/2020 31
Tổ chức hoạt động của VXL (tt)
Dạng địa chỉ của lệnh:
 Dạng tổng quát của lệnh gồm 2 thành phần chính:
 Toán hạng 2 địa chỉ:
 opcode addr1, addr2
 Mỗi địa chỉ addr1, addr2 tham chiếu đến một ô nhớ hoặc một
thanh ghi (addr2 có thể là toán hạng trực tiếp).
 Ví dụ:
 ADD R1, R2; R1 = R1 + R2; R1 cộng với R2, kết quả gán vào
R1. Ri là thanh ghi của CPU.
 ADD A, B; M[A] = M[A] + M[B]; A, B là địa chỉ các ô nhớ
9/7/2020 32
Tổ chức hoạt động của VXL (tt)
Dạng địa chỉ của lệnh:
 Dạng tổng quát của lệnh gồm 2 thành phần chính:
 Toán hạng 1 địa chỉ:
 opcode addr1
 Địa chỉ addr1 tham chiếu đến một ô nhớ hoặc một thanh ghi.
 Ở dạng 1 địa chỉ, thanh ghi Racc (Accumulator) được sử dụng
như địa chỉ addr2 trong dạng 2 địa chỉ.
 Ví dụ:
 ADD R1; Racc = Racc + R1; R1 cộng với Racc, kết quả gán
vào Racc. R1 là thanh ghi của CPU.
 ADD A; Racc ; Racc + M[A]; A là địa chỉ mộtô nhớ.
9/7/2020 33
Tổ chức hoạt động của VXL (tt)
Thực hiện lệnh máy bên trong bộ VXL
 Trong chương trước ta đã biết bộ VXL thực hiện 1 lệnh theo chuỗi
các bước sau :
(1). Lấy lệnh kế tiếp từ bộ nhớ vào thanh ghi lệnh IR.
(2). Chuyển nội dung bộ đếm chương trình (trỏ) tới địa chỉ lệnh
tiếp theo.
(3). Xác định loại lệnh vừa lấy.
(4). Nếu lệnh sử dụng dữ liệu trong bộ nhớ, xác định nơi chứa dữ
liệu
(5). Tìm-nạp dữ liệu vào các thanh ghi trong CPU (nếu có)
(6). Thực thi lệnh
(7). Lưu các kết quả vào nơi thích hợp.
(8). Trở lại bước 1 để thực thi lệnh kế tiếp.
9/7/2020 34
Bộ VXL Intel 8088/8086
9/7/2020 35
Bộ VXL 8088/8086
9/7/2020 36
Hàng đợi lệnh trước
Bộ VXL 8088/8086
Sơ đồ khối 8086 phân chia thành 2 nhóm cơ bản:
 Đơn vị thực hiện EU (EU - Execution Unit), bao gồm:
ALU, khối các thanh ghi 16-bit, thanh ghi cờ (flag) và đơn
vị điều khiển CU.
 EU duy trì trạng thái CPU, kiểm soát các thanh ghi đa năng và
toán hạng lệnh. Tất cả các thanh ghi và đường truyền dữ liệu
trong EU dài 16-bit.
 Đơn vị giao tiếp bus (BIU - Bus Interface Unit), gồm có bộ
cộng để tính địa chỉ (vật lý), 4 thanh ghi segment 16-bit (CS,
DS, SS, ES), hàng lệnh độ dài 6 bytes được làm từ 6 byte bộ
nhớ trong của bộ vi xử lý và logic điều khiển bus.
9/7/2020 37
Bộ VXL 8088/8086
 Việc chia thành 2 đơn vị làm việc đồng thời có liên hệ với nhau
qua đệm lệnh làm tăng đáng kể tốc độ xử lý của VXL. Các bus
bên trong VXL có nhiệm vụ chuyển tải các tín hiệu của các đơn
vị khác.
 Đơn vị BIU đưa ra địa chỉ, đọc mã lệnh từ bộ nhớ, đọc/ghi dữ
liệu từ/vào cổng hoặc bộ nhớ. Nói cách khác BIU chịu trách
nhiệm đưa địa chỉ ra bus và trao đổi dữ liệu với bus.
 Trong BIU còn có một bộ nhớ đệm lệnh với dung lượng 6 byte
dùng để chứa các mã lệnh đọc được nằm sẵn để chờ EU xử lý
(còn được gọi là hàng đợi lệnh trước). Đây là cấu trúc mới được
cấy vào bộ VXL 8088/8086 do việc Intel đưa cơ chế xử lý xen kẻ
liên tục dòng mã lệnh (instruction pipelining) vào ứng dụng
trong các bộ VXL thế hệ mới.
9/7/2020 38
Bộ VXL 8088/8086
 Trong EU có đơn vị điều khiển CU (Control Unit), bên
trong nó có mạch giải mã lệnh.
 Mã lệnh đọc vào từ bộ nhớ được đưa đến đầu vào của bộ
giải mã, các thông tin thu được từ đầu ra của nó sẽ được
đưa đến mạch tạo xung điều khiển, kết quả ta thu được
các dãy xung khác nhau (tuỳ theo mã lệnh) để điều khiển
hoạt động của các bộ phận bên trong và bên ngoài VXL.
 Trong EU còn có đơn vị tính toán số học và logic ALU
(Arithmetic and Logic Unit) dùng để thực hiện các thao tác
khác nhau với các toán hạng của lệnh.
9/7/2020 39
Bộ VXL 8088/8086
 Tóm lại, khi CPU hoạt động EU sẽ cung cấp thông tin về
địa chỉ cho BIU để đơn vị này đọc lệnh và dữ liệu, còn
bản thân nó thì giải mã lệnh và thực hiện lệnh.
 Như vậy một chu kỳ lệnh của CPU có thể được xem 1
cách đơn giản là bao gồm 2 thời khoảng: lấy lệnh từ bộ
nhớ và thực hiện lệnh. Việc đọc mã lệnh (opcode fetch) là
do đơn vị BIU thực hiện, việc giải mã lệnh (CU) và thực
hiện lệnh (ALU) do EU đảm nhiệm.
 Các khối chức năng này có khả năng làm việc đồng thời,
trong hầu hết trường hợp có sự trùng lặp giữa thời gian
thực hiện lệnh trước và lấy lệnh sau và các bus sẽ liên tục
được sử dụng: trong khi EU lấy mã lệnh từ bộ đệm để giải
mã hoặc thực hiện các thao tác nội bộ thì BIU vẫn có thể
đọc mã lệnh từ bộ nhớ chính rồi đặt chúng vào bộ nhớ
đệm lệnh.
9/7/2020 40
Bộ VXL 8088/8086
 Bộ đệm lệnh này làm việc theo kiểu FIFO (first in – first
out). Kết quả có thể coi thời gian lấy lệnh là bằng 0 vì EU
chỉ việc thực hiện lệnh đã được lấy sẵn bới BIU. Chế độ
hoạt động này, còn được gọi là pipe line (đường ống), cho
phép tăng tốc độ xử lý và được sử dụng rất nhiều trong tin
học. 8086 là bộ vi xử lý đầu tiên sử dụng chế độ hoạt động
này.
 Nếu có sự vào/ra liên tục của dòng mã lệnh trong bộ đệm
này thì có nghĩa là có sự phối hợp hoạt động hiệu quả giữa
2 khối EU và BIU theo cơ chế xử lý xen kẻ liên tục dòng
mã lệnh để làm tăng tốc độ xử lý tổng thể.
 Trong bộ VXL 8088/8086 còn có các thanh ghi 16 bit nằm
trong cả 2 khối EU và BIU, ngoài ra cũng có một số thanh
ghi 8 hoặc 16 bit tại EU.
9/7/2020 41
Bộ VXL 8088/8086
9/7/2020 42
32 bit:
DX:AX
CS:IP
DS:SI
DS:DI
ES:SI
ES:DI
SS:SP
SS:BP
IP=PC
Bộ VXL 8088/8086
Các thanh ghi dữ liệu
 Các thanh ghi dữ liệu AX, BX, CX và DX được dùng như các
thanh chứa và các thanh ghi toán hạng 16 bit. Mỗi một thanh ghi
này có thể được tách ra làm hai thanh ghi 8 bit. Thông thường,
mỗi thanh ghi có một chức năng đặc trưng sau :
 AX được sử dụng đối với các phép toán vào ra, nhân chia ...
 BX dùng như là thanh ghi cơ sở khi sự địa chỉ hoá gián tiếp
bởi thanh ghi cơ sở.
 CX dùng để đếm dữ liệu trong các phép toán trên những dãy
ký tự
 DX dùng với AX để nhân và chia hay thanh ghi địa chỉ gián
tiếp
9/7/2020 43
Bộ VXL 8088/8086
 Các thanh ghi đoạn
Các thanh ghi đoạn CS, DS, SS và ES là một phần của đơn vị quản lý bộ
nhớ được tích hợp trong 8086. Mỗi thanh ghi này chứa chứa địa chỉ cơ
sở vật lý của một segment (đoạn nhớ) 64Kb (216).
 Các thanh ghi con trỏ
 Các thanh ghi SP (Stack Pointer), BP, SI và DI là những thanh ghi
được sử dụng đối với các phép toán số học và logic, hai thanh ghi
đầu tiên cũng được sử dụng để chỉ ra một sự dịch chuyển trong
đoạn ngăn xếp trong khi hai thanh ghi cuối được sử dụng để định
vị trí sự dịch chuyển trong đoạn dữ liệu.
 Thanh ghi IP (Instruction Pointer) tương ứng với bộ đếm thứ tự và
chứa đựng sự dịch chuyển, bên trong đoạn chương trình được liên
quan, đối với địa chỉ tham chiếu.
9/7/2020 44
Bộ VXL 8088/8086
Thanh ghi trạng thái và điều khiển (thanh ghi cờ)
 CF (Carry flag – Cờ nhớ): CF được đặt (CF=1) sau khi thực hiện các
phép tính số học mà trong các phép tính này có hiện tượng nhớ từ bit cao
nhất của toán hạng.
 PF (Parity flag – Cờ kiểm tra chẳn lẻ): PF được đặt (PF=1) khi trong 8
bit thấp của kết quả có số bit=1 là chẵn. Trong trường hợp ngược lại,
PF=0.
 AF (Auxiliary flag – Cờ nhớ phụ) : AF được sử dụng trong các phép toán
số học với mã BCD (Binary Coded Decimal). Chẳng hạn AF=1 khi có
nhớ từ bit 3 sang bit 4.
 ZF (Zero flag – Cờ không) : ZF=1 khi kết quả của một phép tính bằng 0.
 SF (Sign flag – Cờ dấu): SF=1 khi bit cao nhất của kết quả là 1 (kết quả
âm), SF=0 trong trường hợp ngược lại (kết quả dương)
 OF (Overflow flag – Cờ tràn) : OF=1 khi mà trong các phép tính số học,
kết quả lớn hơn hoặc bé, nó không thể chứa trong toán hạng được (sai
dấu)
9/7/2020 45
Bộ VXL 8088/8086
Thanh ghi trạng thái (thanh ghi cờ): các cờ điều khiển
 IF (interrupt enable flag – Cờ cho phép ngắt): Ngắt là một chương
trình con được cài sẵn trong bộ nhớ. Các chương trình này có thể
được kích hoạt bởi CPU để phối hợp với các chương trình khác
thực hiện. Khi IF=1, cho phép ghi nhận lời gọi ngắt và IF=0,
không cho phép thực hiện lời gọi ngắt. (CLI & STI)
 DF (Direction flag – Cờ hướng): DF sẽ quyết định việc truy xuất
theo chiều tăng hay chiều giảm trong các phép truy xuất dữ liệu
từ bộ nhớ có sử dụng các thanh ghi SI và DI. Nếu DF=1 thì SI và
DI sẽ tự động giảm đi 1. Nếu DF=0, SI và DI sễ tự động tăng lên
1. (STD & CLD)
 TF (Trap flag): Cờ này dùng để đặt (TF=1) hoặc xoá (TF=0) chế
độ thực hiện chương trình từng lệnh một. Cờ này được sử dụng
trong các chương trình gở rối (debug).
9/7/2020 46
9/7/2020 47
Bộ VXL 8088/8086
Địa chỉ logic = địa chỉ luận lý
Địa chỉ logic=Segment:Offset
BIU
Địa chỉ vật lý = (Segment*10h)+Offset
Không gian bộ nhớ
logic
9/7/2020 48
Bộ VXL 8088/8086
FFFFh:10h
Phân biệt không gian địa chỉ vật lý và không gian địa chỉ logic của VXL Intel
8086/8088,
Địa chỉ logic
9/7/2020 49
Bộ VXL 8088/8086
 Thanh ghi trạng thái (flags) trong CPU gồm những bit
đặc biệt sau (được xác lập giá trị tuỳ thuộc vào kết quả
thao tác cuối cùng của ALU): SF; ZF; CF; OF.
 Giả sử ALU thao tác với từ nhớ độ lớn 8 bits và sử dụng
kiểu biểu diễn bù 2. Những bits (bit cờ) trên sẽ có giá trị
như thế nào nếu các phép toán của ALU là:
Mov AL,01
Mov BL,0FFh
ADD AL,BL
Mov AL,6
Mov BL,250
ADD AL,BL
9/7/2020 50
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
Lệnh sau sẽ được thực hiện như thế nào?
MOV [BX], AL
9/7/2020 51
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
9/7/2020 52
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
9/7/2020 53
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
9/7/2020 54
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
0788
D16
D16
9/7/2020 55
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
8807
0788
9/7/2020 56
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
9/7/2020 57
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
9/7/2020 58
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
9/7/2020 59
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
9/7/2020 60
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
9/7/2020 61
Bộ VXL 8088/8086
Minh họa quá trình thực hiện lệnh của 8086
9/7/2020 62
Bộ VXL 8088/8086
 Các chế độ địa chỉ của 8086/8088:
 (1) Chế độ địa chỉ trực tiếp: giá trị toán hạng là hằng
 (2) Chế độ địa chỉ thanh ghi: DS, ES, AX, BX, CX, DX, SI,
DI, BP. Các thanh ghi còn lại (CS, SS, IP, SP) không sử
dụng làm toán hạng đích.
 (3) Chế độ địa chỉ bộ nhớ (offset):
 (3a) chế độ địa chỉ bộ nhớ trực tiếp (địa chỉ ô nhớ là hằng số
hoặc tên biến) – dòng 3; và
 (3b) chế độ địa chỉ bộ nhớ gián tiếp qua thanh ghi: các thanh ghi
được phép sử dụng trong chế độ này? BX, SI, DI, BP (Stack)
 Cú pháp chung:
 (i) [Thanh ghi] ; [BX], [SI], [DI], [BP]
 (ii) [Thanh ghi+/-Độ dịch] ; Độ dịch là hằng số, Thanh ghi
đóng vai trò là con trỏ
 (iii) Độ_dịch[Thanh ghi] ; Độ dịch là tên biến, Thanh ghi
đóng vai trò là chỉ số (Index).
9/7/2020 63
Bộ VXL 8088/8086
9/7/2020 64
Bộ VXL 8088/8086
Câu hỏi:
 Phân biệt và lấy ví dụ minh họa (bằng lệnh Hợp ngữ)
để phân biệt 2 chế độ địa chỉ:
 chế độ địa chỉ bộ nhớ trực tiếp (địa chỉ là hằng số);
và
 chế độ địa chỉ bộ nhớ gián tiếp qua thanh ghi (cụ thể
với thanh ghi BX để đọc nội dung từ vùng nhớ bắt
đầu từ địa chỉ DS:81h (trong đó số ký tự cần đọc lưu
trong byte nhớ DS:80h) sang 1 vùng đệm cho trước).
9/7/2020 65
Bộ VXL 8088/8086
 Cấu trúc chương trình COM
00FFh
PSP
0000h-00FFh
IP
Code
Stack
Data
9/7/2020 66
Bộ VXL 8088/8086
LIFO – Last in First Out
Biến có thể được khai báo như sau:
<tên_biến> <Toán tử giả> <Giá trị khởi tạo>
hoặc
<tên_biến> <Toán tử giả> ?
Trong đó: <Toán tử giả> có thể là: db (kiểu byte), dw (kiểu
word), dd (kiểu doubleword), …
Toán tử giả DUP: <count> DUP <Giá trị khởi tạo>
Ví dụ: array_ db 20 dup (?) ;20 byte
st1 db 20,0,21 dup (?) ;23 byte
67
Bộ VXL 8088/8086
9/7/2020 68
Bộ VXL 8088/8086
 Đưa các giá trị 15, 14, 13, 12 vào Stack theo thứ tự.
Mov cx,4
Mov ax,15
Lap:
Push ax
Dec ax
Loop lap
=> In các phần tử ra màn hình (sử dụng phương pháp
truy nhập trực tiếp bộ nhớ màn hình) theo thứ tự
12,13,14,15; lưu ý là không làm thay đổi cấu trúc Stack (gợi
ý: sử dụng thanh ghi BP).
9/7/2020 69
Bộ VXL 8088/8086
9/7/2020 70
Bộ VXL 8088/8086
 Đưa các giá trị 15 vào Stack theo thứ tự.
Mov ax,15
Push ax
Pop ax
In phần tử tại đỉnh Stack ra màn hình (có 2 chữ số
thập phân), sử dụng lệnh AAM (lệnh làm việc với
số BCD).
9/7/2020 71
Bộ VXL 8088/8086
 Viết chương trình dạng COM thực hiện:
 Xóa màn hình, sử dụng hàm 0h/ngắt 10h
 Khai báo một mảng Word có số phần tử tuỳ ý (chứa các giá
trị số tuỳ ý biểu diễn ở dạng số hex) trong phần dữ liệu, có
dạng: 0161h,0262h, …
 Hoàn thiện đoạn lệnh sau và cho biết kết quả của nó:
 Mov ax,0B800h
 Mov es,ax
 Mov di,100h
 ; <số phần tử trong mảng Word ở trên> ; yêu cầu viết lệnh
 ; <địa chỉ offset của mảng Word ở trên> ; yêu cầu viết lệnh
 ;<Viết đoạn lệnh sao chép nội dung mảng Word ở trên ra bộ
nhớ bắt đầu từ địa chỉ 0B800h:100h.>
9/7/2020 72
Bộ VXL 8088/8086
9/7/2020 73
Bộ VXL 8088/8086
9/7/2020 74
Bộ VXL 8088/8086
 Khai báo mảng (data):
 mang_byte db 1,2,3,3 ;byte
 mang_word dw 1,2,3,3 ;word
 khởi tạo:
Mov cx,4 ;
Lea si,mang_byte ; si=100h Lea si,mang_word
Mov dl,0 ;
 Vòng lặp For để tính tổng mảng (cx= số lần lặp)
lap_t: ;lặp 1 lặp 2 lặp 3 ...
mov al,[si] ; al = 1 al=2 al=3
add dl,al ;dl=1 dl=3 dl=6
inc si ;si=101h si=102h si=103h
loop lap_t ;cx=3 cx=2 cx=1
9/7/2020 75
Bộ VXL 8088/8086
 Khai báo mảng (data):
 mang_byte db 1,2,3,3 ;byte
 mang_word dw 1,2,3,3 ;word

push dx ;cất giá trị Tổng (dl=9) vào Stack
mov ah,02 ;in ký tự có mã ASCII
mov dl,0ah ;trong thanh ghi DL
int 21h
mov dl,0dh
int 21h ;chuyển con trỏ về đầu dòng mới
pop dx ;lay gia tri tong tuw stack
add dl,30h ; dl=39h = ‘9’
mov ah, 02h
int 21h ;in tổng ra màn hình
9/7/2020 76
Bộ VXL 8088/8086
Tổ chức của bộ VXL 80286
 Bộ VXL 80286 là sự nâng cấp hoàn chỉnh của 8086.
 Nó là VXL kiến trúc 16-bit bên trong (các thanh ghi) và
một bus dữ liệu bên ngoài cũng 16 bit.
 Bus địa chỉ là 24 bit cho phép đánh địa chỉ (địa chỉ hoá)
tới 16MB bộ nhớ vật lý, và 1GB nhớ logic (bộ nhớ ảo).
80286 có đi kèm đồng xử lý 80287 và chúng là trung tâm
của hệ máy vi tính thế hệ IBM/AT rất thông dụng trong
những năm 1980.
9/7/2020 77
Tổ chức của bộ VXL 80286
 Cấu trúc bên trong của 80286 tương tự như 8086, nhưng
đặc biệt nó có đơn vị quản lý bộ nhớ bên trong MMU
(Memory Management Unit) để làm việc với bộ nhớ ảo với
cơ chế bảo vệ bộ nhớ và khả năng địa chỉ hóa bộ nhớ vật lý
với dung lượng đạt tới 16MB, hỗ trợ cho cơ chế đa sử dụng
và đa nhiệm.
 Các hệ điều hành đa nhiệm đã có thể cài đặt trên các máy
tính dùng 80286.
 80286 có thể hoạt động ở 2 chế độ: chế độ thực (real mode)
giống như trong 8086 và chế độ bảo vệ (protected mode).
9/7/2020 78
Tổ chức của bộ VXL 80286
 Các thanh ghi của 80286.
80286 cũng có các thanh ghi thông thường với chức năng giống
như các thanh ghi trong 8086, tuy nhiên để hoạt động trong chế độ
bảo vệ 80286 được thêm vào các thanh ghi mới có tên như sau:
 Thanh ghi nhiệm vụ TR (Task Register)
 Thanh ghi từ trạng thái máy MSW (Machine Status Word)
 Thanh ghi bảng bộ mô tả cục bộ LDT (Local Descriptor Table)
 Thanh ghi bảng bộ mô tả ngắt IDT (Interrupt Descriptor Table)
 Thanh ghi bảng bộ mô tả toàn cục GDT (Global Descriptor
Table)
9/7/2020 79
Cấu trúc chung của VXL 80386/80486/Pentium
9/7/2020 80
Đặc điểm của CPU 80386/80486/Pentium
 VXL 80386 và 80486-Pentium có nhiều điểm khá giống nhau,
ngoại trừ việc trong 80486 đã có cấy sẵn bộ xử lý dấu phẩy
động FPU hay trong Pentium có cả FPU lẫn 2 bộ IU (2 bộ
ALU cho số nguyên 64 bit).
 Về mặt lập trình có thể coi các bộ VXL 80386 và 80486,
Pentium là như nhau.
 Bộ VXL 386 ra đời nhằm khắc phục trực tiếp các nhược điểm
của 80286: phải chuyển đổi được nhanh chóng giữa chế độ
thực và chế độ bảo vệ, và phải có khả năng hoạt động với bộ
nhớ RAM tối đa 4 GB.
 Chip 386 còn có một bộ cache nội nhỏ đồng thời có thể sử
dụng thêm cache ngoài để tăng tốc độ hoạt động.
9/7/2020 81
Đặc điểm của VXL Intel 80386
 80386 là một bộ VXL mạnh và tối ưu với các hệ điều hành đa
nhiệm. So với VXL Intel 8086, nó có thêm những đặc điểm chính
như sau:
Bus dữ liệu 32 bit
Bus địa chỉ 32 bit, do vậy có thể địa chỉ hoá được 4GB nhớ vật
lý và 64Terabyte bộ nhớ ảo (=16404 Gb).
 Hơn nữa, để cải tiến hiệu quả, 386 nạp trước 16 byte lệnh trong
quá trình thực hiện.
Tốc độ thực hiện lệnh lên tới 25 triệu lệnh/giây (MIPS).
Thêm bộ quản lý trang của khối nhớ. Có chế độ quản lý và bảo
vệ bộ nhớ dùng cho các hệ điều hành đa nhiệm (chế độ thực, chế
độ bảo vệ, chế độ 8086 ảo).
9/7/2020 82
Đặc điểm của VXL Intel 80386
 Các thanh ghi của 80386:
Các thanh ghi địa chỉ và số liệu thông dụng 32 bit: EAX,
EBX, ECX, EDX, ESI, EDI, EBP, ESP.
Các thanh ghi cờ và con trỏ lệnh 32 bit: EIP, EFLAGS.
Các thanh ghi đoạn 16 bit: đoạn dữ liệu (DS, ES, FS,
GS), CS, SS.
Các thanh ghi điều khiển 32 bit: CR0, CR1, CR2, CR3: ghi
số liệu để điều khiển VXL
9/7/2020 83
Đặc điểm của VXL Intel 80386
 Các thanh ghi của 80386:
Các thanh ghi mô tả mảng: GDTR (mô tả toàn cục), LDTR (mô
tả cục bộ), TR (ghi nhiệm vụ).
Các thanh ghi gỡ rối 32 bit (DR0  DR7): ghi địa chỉ và trạng
thái của các điểm dừng chương trình để kiểm tra lỗi.
Các thanh ghi kiểm tra (thử) 32 bit: TR6 (Test Control: kiểm tra
điều khiển), TR7 (Test Status)
80386 không có FPU (đon vị dấu phẩy động) bên trong, mà
phải sử dụng bộ đồng xử lý 80387 bên ngoài để thực hiện các
phép tính dấu phẩy động.
9/7/2020 84
Đặc điểm của VXL Intel 80386
 VXL 80386 có thể làm việc ở một trong 3 chế độ:
 Chế độ địa chỉ thực
Trong chế độ địa chỉ thực, 80386 hoạt động ở chế độ
phân đoạn với khả năng phân biệt địa chỉ bộ nhớ 1MB
và với các đoạn 64KB như 8086.
Các thanh ghi đa năng có thể có kích thước 8-32 bit tùy
theo toán hạng. Ta có thể làm việc với 4 thanh ghi đoạn
dữ liệu. Thanh ghi cờ cho chế độ địa chỉ thực chỉ là 16
bit.
9/7/2020 85
Đặc điểm của VXL Intel 80386
Chế độ 8086 ảo
Một tính năng mới của 80386 là có thể mô phỏng một
hoặc nhiều bộ VXL 8086 cùng một lúc nên cho phép
chạy nhiều chương trình DOS đồng thời.
Chế độ đó được gọi là chế độ 8086 ảo, tức là cho phép
các chương trình ứng dụng của 8086 chạy được trên
80386 ở chế độ bảo vệ.
Bộ VXL 80386 chuyển đổi rất dễ dàng từ chế độ bảo vệ
sang chế độ 8086 ảo hoặc ngược lại bằng cách lập/xóa bit
VM trong thanh ghi EFLAGS.
9/7/2020 86
Đặc điểm của VXL Intel 80386
Chế độ 8086 ảo
 Trong chế độ này, VXL 80386 xem mỗi chương trình
là 1 tác vụ rồi dành cho mỗi tác vụ một không gian địa
chỉ 1MB và tính địa chỉ vật lý theo địa chỉ
segment:offset như 8086.
 Các không gian 1MB này được VXL 80386 quản lý
theo kiểu phân trang nên có thể nằm rải rác trong không
gian tổng thể 4GB mà 80386 có khả năng phân biệt
được.
 Chính vì vậy có thể dùng các bit U/S và R/W để tạo
ra cơ chế bảo vệ cho bộ nhớ trong chế độ 8086 ảo này.
9/7/2020 87
Đặc điểm của VXL Intel 80386
 Chế độ bảo vệ
 Chế độ bảo vệ cho phép ta khai thác hết sức mạnh được
thiết kế trong cho VXL 80386.
 Mạch 80386 chuyển chế độ làm việc từ chế độ địa chỉ
thực sang chế độ bảo vệ hoặc ngược lại nhờ việc lập/xóa
bit D0 của thanh ghi điều khiển CR0.
 Trong chế độ bảo vệ 80386 có thể làm việc theo phương
pháp phân đoạn hoặc phân trang (sẽ trình bày ở chương
sau). Mỗi đoạn có thể có độ dài tới 4GB, mỗi trang là
4KB và bộ nhớ ảo có thể có độ dài lớn nhất là 64TB.
9/7/2020 88
Đặc điểm của VXL Intel 80386
 Chế độ bảo vệ
 Về mô hình bộ nhớ, các chương trình không truy nhập
trực tiếp vào bộ nhớ vật lý. Thay vào đó, các chương
trình có thể sử dụng các mô hình truy nhập.
 Phân trang và bộ nhớ ảo: khi này bộ nhớ chương trình
được chia thành các trang ánh xạ vào bộ nhớ ảo. Sau đó,
bộ nhớ ảo được ánh xạ vào bộ nhớ thực. Nếu hệ điều
hành sử dụng phân trang, cơ chế ánh xạ hoàn toàn
trong suốt đối với chương trình ứng dụng.
9/7/2020 89
Đặc điểm của VXL Intel 80486
 Bộ VXL 80486 về cơ bản có quy mô như 80386,
nhưng nó được tăng cường thêm ngay ở bên trong một
bộ nhớ cache (Cache nội) với dung lượng 8KB dùng
cho lệnh và dữ liệu.
 VXL 80486 còn được cấy thêm một bộ đồng xử lý toán
học dấu phẩy động (floating point unit, FPU). Khả
năng thao tác của 80486 vì thế cao hơn, tuy khả năng
bảo vệ và quản lý bộ nhớ, khả năng phân biệt địa chỉ bộ
nhớ thì vẫn giống như 80386.
9/7/2020 90
Bộ xử lý CISC và RISC
9/7/2020 91
BUS Interface
PQ
Decoding
Unit
Microcode
Queue
Microcode
ROM
ControlUnit
ALU
Register
EU
Coprocessor
CISC Microprocessor RISC Microprocessor
BUS Interface
PQ
Control Unit
ALU
Register
EU
Coprocessor
Coprocessor: bộ đồng xử lý
Decoding Unit: Đơn vị giải mã
Microcode ROM: ROM vi mã
PQ: Hàng nhận lệnh trước
Microcode Queue: Hàng vi mã
Control Unit: Đơn vị điều khiển
Có hai kiểu kiến trúc vi xử lý: kiến trúc với tập lệnh rút gọn
(Reduced Instruction Set Computer-RISC) và kiến trúc với tập
lệnh phức tạp (Complex Instruction Set Computer-CISC).
 Vi xử lý RISC nhấn mạnh tính đơn giản và hiệu quả. Các thiết
kế RISC khởi đầu với tập lệnh thiết yếu và vừa đủ. RISC tăng tốc
độ xử lý bằng cách giảm số chu kỳ đồng hồ trên một lệnh.
 Mục đích của RISC là tăng tốc độ hiệu dụng bằng cách chuyển
việc thực hiện các thao tác không thường xuyên vào phần mềm
còn các thao tác phổ biến do phần cứng thực hiện.
 Như vậy làm tăng hiệu năng của máy tính.
cs.stanford.edu/people/eroberts/courses/soco/projects/risc/r
isccisc/
9/7/2020 92
Kiến trúc RISC và CISC
Kiến trúc RISC
 Các đặc trưng căn bản của vi xử lý kiểu RISC:
 Thiết kế vi xử lý RISC sử dụng điều khiển cứng (hardwared
control), không hoặc rất ít sử dụng vi mã. Tất cả các lệnh RISC có
định dạng cố định vì vậy việc sử dụng vi mã không cần thiết.
 Vi xử lý RISC xử lý hầu hết các lệnh trong một chu kỳ.
 Tập lệnh của vi xử lý RISC chủ yếu sử dụng các lệnh với thanh
ghi, và các lệnh nạp và lưu. Tất cả các lệnh số học và lô-gíc sử dụng
thanh ghi, còn các lệnh nạp và lưu dùng để truy nhập bộ nhớ.
 Các lệnh có một số ít định dạng cố định và ít chế độ địa chỉ.
 Vi xử lý RISC có một số thanh ghi dùng chung.
 Vi xử lý RISC có thể xử lý một vài lệnh đồng thời và thường áp
dụng kỹ thuật đường ống (pipeline).
9/7/2020 93
Kiến trúc RISC và CISC
Kiến trúc CISC
 Các đặc trưng căn bản của vi xử lý kiểu CISC:
 Khác với vi xử lý RISC, vi xử lý CISC bao gồm số lượng lớn các
lệnh và nhiều chế độ địa chỉ, trong đó lệnh và chế độ địa chỉ rất ít
được sử dụng.
 Ngược lại với RISC chỉ có các lệnh nạp và lưu thao tác với bộ
nhớ, hầu hết các lệnh của vi xử lý CISC đều có thể truy nhập bộ
nhớ.
 Do tập lệnh phức tạp, CISC cần đơn vị điều khiển phức tạp và vi
chương trình. Trong khi đó, RISC sử dụng bộ điều khiển kết nối
cứng nên nhanh hơn. Kiến trúc CISC khó triển khai kỹ thuật đường
ống.
9/7/2020 94
Kiến trúc RISC và CISC
Bộ xử lý CISC và RISC
Họ VXL của Intel thường hoạt động theo nguyên tắc
dùng VXL có tập lệnh phức hợp CISC (Complex
Instruction Set Computer).
Đặc điểm là nó có số lượng lệnh lớn (thường hơn 300
lệnh), có khả năng định địa chỉ phức tạp, các lệnh được
vi lệnh hoá có nghĩa là các CPU hoạt động bằng vi
chương trình.
9/7/2020 95
Bộ xử lý CISC và RISC
Trong đó, bộ xử lý nhận lệnh qua ghép nối bus đưa vào
hàng nhận lệnh trước PQ. Sau đó PQ sẽ phát lệnh tới bộ
giải mã.
 Bộ giải mã sẽ giải mã 1 lệnh máy thành các vi lệnh và
truyền chúng tới hàng vi mã, từ đây các vi lệnh được
truyền tới các đơn vị điều khiển và chạy lệnh sao cho
bộ ALU và các thanh ghi được điều khiển 1 cách thích
hợp.
Do vậy, trong bộ VXL kiểu CISC, thời gian thi hành 1
lệnh mã máy bao gồm thời gian giải mã và khoảng thời
gian thực hiện chương trình vi lệnh tương ứng.
9/7/2020 96
Bộ xử lý CISC và RISC
 Vi chương trình được phát triển mạnh trong những năm 70
khi mà bộ nhớ chính có tốc độ truy cập tương đối chậm.
 Lúc đó các nhà thiết kế máy tính sử dụng bộ nhớ chính tốc độ
chậm để lưu trữ các lệnh phức tạp tạo nên chương trình ở
mức máy.
 Các lệnh đó sẽ được dịch bằng vi mã trong bộ nhớ điều khiển
vi chương trình có tốc độ truy nhập nhanh hơn.
 Ngày nay, các bộ nhớ chính có thời gian truy cập ngắn hơn 80
ns làm cho các ưu điểm kể trên của vi chương trình không
những biến mất mà còn gây cản trở nữa cho hệ thống.
9/7/2020 97
Bộ xử lý CISC và RISC
 Trong nhiều thập kỷ, các nhà khoa học máy tính đã nghiên
cứu cách thức mà các máy tính hiện nay chạy chương trình.
Điều tra thống kê đã chỉ ra những kết luận sau:
 Trong nhiều chương trình điển hình được xử lý bằng bộ VXL
CISC thì đến 80% thời gian chạy chương trình được thực hiện
chỉ bởi 20% số lệnh trong tập lệnh.
 Ví dụ, tác giả Fairclough đã chia các lệnh ra thành 8 nhóm và
đã thống kê được các kết quả trung bình tần suất sử dụng (xét
về cả chương trình và kiến trúc máy tính) của chúng như sau:
9/7/2020 98
Nhóm 1 2 3 4 5 6 7 8
Tần suất % 45,28 28,73 10,75 5,92 3,91 2,93 2,05 0,44
Bộ xử lý CISC và RISC
 Trong đó:
1 là nhóm các lệnh chuyển dữ liệu
2 là nhóm các lệnh chuyển điều khiển chương trình (call,
jmp, ret...)
3 là nhóm các lệnh số học; 4 là nhóm các lệnh so sánh
5 là nhóm các lệnh logic; 6 là nhóm các lệnh dịch
7 là nhóm các lệnh xử lý bit; 8 là nhóm các lệnh vào/ra
Rõ ràng trong tổng số 8 nhóm lệnh trên thì 2 nhóm lệnh
chuyển dữ liệu và chuyển điều khiển chương trình có tần suất
sử dụng chiếm đến 74%.
+ Có những trường hợp, để đạt được cùng 1 kết quả thì việc
chạy một chuỗi lệnh đơn giản sẽ nhanh hơn là chạy một lệnh
phức tạp.
9/7/2020 99
Các đặc điểm của kiến trúc RISC
Kiến trúc RISC cần có những đặc điểm sau:
 Cần có đủ số thanh ghi (thực chất là các bộ nhớ ngay
trong chip, có thời gian truy cập nhanh hơn so với bộ nhớ
ngoài) để khắc phục được hiệu ứng nghẹt cổ chai.
 Vì các lệnh trong nhóm 2 (call, ret, …) thường xảy ra
nên một kiến trúc hiệu dụng cần tạo sự dự phòng cho
việc chuyển hiệu quả các tham số giữa các thủ tục.
9/7/2020 100
Bộ xử lý CISC và RISC
Những kết luận trên là tiền đề để một loại VXL khác ra
đời; nó hoạt động theo phương pháp sử dụng tập lệnh rút
gọn RISC (Reduced Instruction Set Computer).
Tập lệnh ở đây được hạn chế vào các lệnh chính yếu cần
thiết trong số 20% lệnh nói trên, và phần cứng được thiết
kế sao cho các phần tử RISC hiểu ngay được lệnh mã
máy do chương trình cung cấp.
Do đó, các lệnh này không cần chuyển cho bộ giải mã vi
lệnh nữa mà được thực hiện ngay.
Rõ ràng thời gian để thực hiện 1 lệnh ở đây được rút
ngắn đi nhiều so với trường hợp CISC (thực hiện 1 mã
thao tác chỉ trong 1 chu kỳ máy).
9/7/2020 101
Các đặc điểm của kiến trúc RISC
3 khía cạnh cơ bản của kiến trúc RISC:
 Dùng một số lớn các thanh ghi được chế tạo trên
chip (on-chip),
 Dùng các cửa sổ thanh ghi gối lên nhau để giảm
một cách đáng kể sự truyền tham số giữa các thủ
tục,
 Cơ chế đường ống (pipelining) trong đó cho
phép sự gối lên nhau trong việc thực hiện lệnh.
9/7/2020 102
Các đặc điểm của kiến trúc RISC
 Kiến trúc RISC và xử lý đường ống.
 Nói 1 cách đơn giản, một xử lý đường ống có thể cho
phép thực hiện lệnh thứ i trong khi lấy lệnh thứ i+1
trong cùng 1 thời gian.
 Hình sau mô tả cách mà bộ xử lý RISC thực hiện xử
lý đường ống:
9/7/2020 103
i IF OF E OS
i + 1 IF OF E OS
Các đặc điểm của kiến trúc RISC
 Kiến trúc RISC và xử lý đường ống.
 RISC gối giai đoạn lấy lệnh từ bộ nhớ ngoài với 3 giai đoạn xảy
ra bên trong chip: lấy toán hạng, thực hiện lệnh và lưu trữ toán
hạng.
 Lưu ý rằng 3 giai đoạn này chỉ chiếm mất 1 thời gian xấp xỉ như
giai đoạn lấy lệnh vì các hoạt động xảy ra ngay bên trong bộ xử lý
và các toán hạng được nhận hoặc lưu trữ vào ngay các thanh ghi
của bộ xử lý nên có tốc độ xử lý rất nhanh.
 Hơn nữa vì RISC có 1 định dạng lệnh thông thường rất đơn giản
nên giai đoạn giải mã lệnh là không cần thiết.
9/7/2020 104
i IF OF E OS
i + 1 IF OF E OS
VXL Intel 80486
80486 bao gồm các thành phần chính sau đây:
 Giao tiếp bus (bus interface), nó kết hợp với bus hệ
thống bên ngoài, cache bên trong chip và các đơn vị tiền
đọc lệnh (prefetcher units).
 Đơn vị tiền đọc lệnh (prefetcher) với hàng 32-byte cho
các lệnh và nó được nối với giao tiếp bus, cache, giải mã
lệnh và đơn vị phân đoạn (segmentation unit).
9/7/2020 105
VXL Intel 80486
80486 bao gồm các thành phần chính sau đây:
 Đơn vị cache (cache unit), gồm có 8KB cache (chứa dữ
liệu và mã lệnh) và logic quản lý cache. Nó được kết nối
với đơn vị segmentation, ALU và FPU thông qua bus 64-
bit truyền dữ liệu giữa các khối (interunit data transfer
bus). Đơn vị cache cũng kết nối trực tiếp với đơn vị định
trang (paging unit), giao tiếp bus, bộ tiền đọc lệnh.
 Đơn vị giải mã lệnh nhận 3 bytes của lệnh đọc từ hàng
lệnh và chuyển lệnh được giải mã tới đơn vị điều khiển
và kiểm tra bảo vệ CPTU (control and protection test
unit).
9/7/2020 106
VXL Intel 80486
80486 bao gồm các thành phần chính sau đây:
 CPTU tạo ra các vi lệnh và gởi chúng tới các đơn vị
khác để thực hiện kiểm tra bảo vệ.
 Một đơn vị tính toán số nguyên tốt ưu, tương thích với
386DX
 Một đơn vị tính toán số thực (FPU-Floating Processor
Unit) tương thích với coprocessor toán học 80387.
 Đơn vị phân đoạn (segmentation unit), trong đó có
logic quản lý phân đoạn, logic điểm ngắt.
 Đơn vị định trang (paging unit), trong đó có logic quản
lý định trang và bộ đệm chuyển đổi 32 điểm vào TLB.
9/7/2020 107
VXL Intel 80486
 Kiến trúc của i486 là dạng mở rộng của i386, cả i386 và
i486 đều có cache và MMU bên trong, nhưng i486 có
cache bên trong dung lượng lớn hơn.
 Kiến trúc của VXL Intel 80486 được thiết kế dựa trên
kết quả của việc tích hợp 2 loại phần tử xử lý CISC và
RISC trong cùng 1 chip.
 Trong 486, các lệnh mã máy thường xuyên được dùng
sẽ được cài đặt sẵn và có thể thực hiện ngay, trong khi
các lệnh phức tạp nhất và ít được sử dụng sẽ thông qua
bộ giải mã vi lệnh.
 Theo phương thức này, hầu như tất cả các lệnh có thể
được thực hiện gọn trong 1 chu kỳ xung nhịp đồng hồ.
9/7/2020 108
VXL Intel 80486
 Mạch cache liên hiệp 4 đường trong 486 làm việc giống
như cache ngoại nhưng đường cache ở đây là 128 bit
chứ không phải 32 bit.
 Trong 486 có đường ống lệnh 5 tầng cho phép chạy các
lệnh nhanh hơn ở 386 nhiều, cơ chế này thường dùng
trong VXL RISC cho phép 1 vài lệnh có thể “chảy”
trong đường ống cùng 1 lúc.
 486 sẽ nhận 1 vài lệnh trước và trong khi đang xử lý 1
lệnh nó sẽ giải mã và khởi phát chạy lệnh tiếp theo sớm
đến mức có thể.
9/7/2020 109
VXL Intel 80486
 Thực sự thì 486 có thể thực thi các phần của 1 vài lệnh
trong cùng 1 thời gian.
 Ví dụ giả sử 486 thực hiện 1 chuỗi lệnh có ý nghĩa như
sau:
MOV AX, <nội dung vùng nhớ>
ADD CX,BX
SHR AX,1
MOV <nội dung vùng nhớ>, CX
9/7/2020 110
VXL Intel 80486
 Một vài nhịp đồng hồ trước khi thực hiện lệnh thứ nhất, 486
đã lấy tất cả các lệnh đơn giản và khởi phát giải mã chúng.
 Khi lệnh đầu tiên được thực hiện thì việc giải mã lệnh thứ 2
đã hoàn thành.
 Vì lệnh ADD không dùng các bus hoặc số liệu đọc từ bộ
nhớ bởi lệnh MOV nên nó có thể được thực hiện trước khi
lệnh MOV hoàn thành.
 Tương tự như vậy, sự giải mã lệnh SHR sẽ được hoàn thành
trong khi lệnh ADD CX,BX đang thực hiện; và trong chu
kỳ nhịp tiếp theo lệnh SHR sẽ được thực hiện.
 Trong chu kỳ nhịp mà lệnh SHR được thực hiện, sự giải mã
lệnh cuối cùng được hoàn thành và địa chỉ của vùng nhớ sẽ
được đưa ra bus địa chỉ.
 Trong chu kỳ đồng hồ tiếp theo, từ trong thanh ghi CX sẽ
được đưa ra trên bus số liệu.
9/7/2020 111
VXL Intel 80486
 Việc tăng cường sự xen phủ như vậy cho phép 486 chạy
nhiều lệnh trong một chu kỳ đồng hồ một cách hiệu
dụng.
 Việc nhận lệnh, giải mã lệnh và thực hiện mỗi lệnh thực
tế xảy ra vài nhịp đồng hồ nhưng vì các hoạt động này
xen phủ lên nhau với các quá trình giải mã và thực hiện
lệnh nên thời gian thực cho mỗi lệnh chỉ mất có 1 nhịp
đồng hồ.
 Ví dụ, 1 hoạt động viết bộ nhớ 16 bit mất chứng 22 nhịp
đồng hồ trong VXL 8088 và 4 nhịp trong 386 thì chỉ
diễn ra 1 nhịp trong 80486.
9/7/2020 112
VXL Intel 80486
 Cơ chế bảo vệ của i386 và i486: Mỗi loại vi xử lý có
chức năng hỗ trợ cho đa xử lý và đa nhiệm có cơ chế
bảo vệ bộ nhớ khác nhau, tuy nhiên chúng có 1 số
điểm chung:
 Cơ chế bảo vệ bộ nhớ chủ định cho các hệ điều hành
đa nhiệm (multitasking OS) để cách ly và bảo vệ các
chương trình của người sử dụng và hệ điều hành khỏi
bị xâm nhập không được phép (không có thẩm
quyền).
 Cơ chế bảo vệ phân chia thành các cấp bảo vệ, thường
gọi là cấp thẩm quyền PL (privilege levels).
9/7/2020 113
VXL Intel 80486
 Cơ chế bảo vệ của i386 và i486: Có 4 cấp thẩm quyền,
theo thứ tự từ cao đến thấp:
 Cấp 0: cấp thẩm quyền cao nhất, giành cho nhân của
hệ điều hành (OS kernel)
 Cấp 1: giành cho các dịch vụ của hệ thống
 Cấp 2: giành cho các mở rộng hệ thống
 Cấp 3: cấp thẩm quyền thấp nhất, giành cho các ứng
dụng của người sử dụng.
9/7/2020 114
VXL Pentium
Năm 1993, Intel cho ra đời một bộ vi xử lý mới, không
phải mang tên i586 mà là Pentium.
 Đây là VXL CISC được tích hợp thêm một số tính chất
của VXL RISC.
 VXL Pentium không chỉ nhanh hơn 80486 mà còn có 1
số đặc điểm mới được thiết kế đặc biệt cho các ứng dụng
phục vụ file.
 Bus dữ liệu rộng 64 bit tuy vẫn chỉ có các thanh ghi 32
bit bên trong.
9/7/2020 115
VXL Pentium
 Chip có khả năng thực hiện 2 lệnh song song (nó có hai
đơn vị thực hiện độc lập 32 bit, có khả năng thực hiện
đồng thời), theo công nghệ siêu vô hướng (superscalar)
với 2 đường ống U và V. Công nghệ này có khả năng
làm việc với các cấu trúc RISC.
 Nó cũng có hai bộ nhớ cache riêng biệt 8Kb, một cho
các lệnh và một cho dữ liệu, một đơn vị tính toán số
thực tốt ưu và 2 pipeline 5 tầng.
 Nhịp đồng hồ là 60, 66 và có thể đạt đến 100MHz.
Dưới một vài điều kiện, công suất của nó có thể nhanh
gấp 4 hay 5 lần i486.
9/7/2020 116
VXL Pentium
9/7/2020 117
VXL Pentium
 Hai bộ nhớ Cache 8KB riêng biệt, một dành cho lệnh và 1
dành cho số liệu.
 Hai hàng nhận lệnh trước 32 bit và 2 bộ tính toán số học và
logic ALU được cung cấp lệnh và dữ liệu trên 2 đường ống
song song siêu vô hướng U và V cho phép thi hành 2 lệnh
máy trong 1 chu kỳ.
 Bộ xử lý vẫn làm việc với các thanh ghi 32 bit và bus địa chỉ 32
bit nhưng có thể kết nối với bus dữ liệu ngoài là 64 bit.
 Bus nội bộ là 64 bit và 128 bit, bus từ bộ nhớ cache nội nối
với các vùng đệm của các ALU rộng 256 bit cho phép tăng
tốc độ trao đổi dữ liệu trong nội bộ VXL rât cao.
 Có một vùng nhớ gọi là vùng đệm đích rẽ nhánh BTB
(Branch Target Buffer) của lệnh đối với 256 lệnh rẽ nhánh sử
dụng gần đây nhất.
9/7/2020 118
VXL Pentium
 Một vài đặc trưng khác làm cho Pentium phân biệt được với
các VXL trước là:
 Kích thước trang của bộ nhớ trong chế độ bảo vệ và ảo
không chỉ hạn chế ở 4KB mà có thể lên đến 2 MB hay 4
MB.
 Khả năng tự tìm kiếm các lỗi phức tạp và gỡ rối
(debugging) bằng các mạch phần cứng lắp thêm.
 Có thể tự đánh giá được hiệu suất thi hành chương trình.
 Nhờ việc sử dụng các cơ chế đường ống, cấu trúc
superscalar và dự đoán rẽ nhánh.
 Các lệnh chạy trong Pentium được thực hiện trên 1 cấu
trúc superscalar 2 đường ống song song U và V, các
cache nội bộ và vùng đệm đích rẽ nhánh BTB.
9/7/2020 119
VXL Pentium
 Cấu trúc superscalar với 2 đường ống song song: Việc
thi hành lệnh trong Pentium diễn ra qua 5 công đoạn:
1) Lấy lệnh trước (Prefetch): lệnh máy được lấy từ bộ
nhớ chuyển vào bộ xử lý.
2) Giải mã lệnh 1 (Decode 1): giải mã, phân tích để xác
định loại lệnh.
3) Giải mã lệnh 2 (Decode 2): xác định địa chỉ ô nhớ cần
truy nhập
4) Thực hiện lệnh (Execute).
5) Viết các kết quả dữ liệu vào các thanh ghi và bộ nhớ.
9/7/2020 120
VXL Pentium
 Cấu trúc superscalar với 2 đường ống song song:
 Các công đoạn trên cũng được Pentium thực hiện theo cơ
chế đường ống, nhờ đo với 5 lệnh sẽ cùng được xử lý đồng
thời trên 1 đường ống và có thể coi mỗi lệnh chỉ được xử
lý trong 1 chu kỳ nhịp đồng hồ.
 Hơn nữa Pentium có 2 đường ống U và V được chế tạo
hoạt động song song với nhau nên về mặt lý thuyết nó sẽ
có khả năng thi hành 1 lúc 2 lệnh.
 Tuy nhiên, trên thực tế, không phải lúc nào cũng thực hiện
được điều đó vì 2 lệnh kế tiếp nhau thường phụ thuộc vào
nhau và lúc này chỉ có thể xử lý chúng 1 cách tuần tự.
 Một mạch đặc biệt sẽ kiểm tra tính phụ thuộc dữ liệu đó
xem chúng có yêu cầu phải liên kết trong quá trình xử lý
hay không.
9/7/2020 121
VXL Pentium
 Cấu trúc superscalar với 2 đường ống song song:
 Nếu không phụ thuộc, 2 lệnh sẽ được gởi đến 2 đường
ống theo đúng thứ tự. Quá trình có thể dẫn giải như
sau:
 Trong công đoạn 1, lệnh hiện tại sẽ được đưa vào đơn vị
giải mã của đường ống U, lệnh kế tiếp vào đơn vị giải
mã của đường ống V.
 Nếu trong công đoạn 2, mạch đặc biệt nói trên xác định
có thể thực hiện đồng thời được 2 lệnh thì mỗi lệnh sẽ
trải qua các công đoạn còn lại trong mỗi đường ống của
nó, ngược lại thì lệnh trong ống U sẽ trải qua công đoạn
kế tiếp như bình thường, còn lệnh kế tiếp trong ống V sẽ
được chuyển qua thi hành trong ống U như là lệnh theo
sau lệnh hiện tại.
9/7/2020 122
VXL Pentium
 Cấu trúc superscalar với 2 đường ống song song:
9/7/2020 123
VXL Pentium
9/7/2020 124
Một số câu hỏi
1. Vi lệnh là gì?
2. Trình bày sự khác nhau cơ bản giữa
đơn vị điều khiển vi chương trình hoá
và đơn vị điều khiển logic ngẫu nhiên
3. Kiến trúc RISC có những đặc điểm gì
để phân biệt nó với kiến trúc CISC.
https://cs.stanford.edu/people/erober
ts/courses/soco/projects/risc/risccisc/
9/7/2020 125
Một số câu hỏi
4. Tại sao người ta thường nói: VXL RISC là
VXL có kiến trúc “LOAD-STORE”?
5. Kiến trúc tập lệnh của bộ xử lý RISC
(Tìm hiểu tập lệnh MIPS) 
Tham khảo
http://www.cse.hcmut.edu.vn/~sonsys/MT15KH05_L03/Bai_Giang/
Chuong02.pdf
https://sites.google.com/a/uit.edu.vn/ktmt/tap-lenh-mips-co-ban
https://sites.google.com/a/uit.edu.vn/ktmt/t
9/7/2020 126
Một số câu hỏi
Một số vấn đề của cơ chế đường ống lệnh:
- Vấn đề xung đột tài nguyên
- Vấn đề tranh chấp dữ liệu
- Vấn đề nảy sinh do các lệnh rẽ nhánh
9/7/2020 127

Weitere ähnliche Inhalte

Ähnlich wie chương 2 ktmt.pdf

BGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhBGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhCao Toa
 
Lap trinh-vdk-89 s52
Lap trinh-vdk-89 s52Lap trinh-vdk-89 s52
Lap trinh-vdk-89 s52Cu Luc
 
Chuong01
Chuong01Chuong01
Chuong01na
 
Tongquanktmt
TongquanktmtTongquanktmt
TongquanktmtTung Luu
 
4 ky thuat xu ly tt
4 ky thuat xu ly tt4 ky thuat xu ly tt
4 ky thuat xu ly ttLy hai
 
Ktvxl chuong 1 - tong quan
Ktvxl chuong 1 - tong quanKtvxl chuong 1 - tong quan
Ktvxl chuong 1 - tong quanNguynMinh294
 
Bao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dcBao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dcnamnam2005nt
 
Bài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhBài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhHa Nguyen
 
Cấu Trúc Máy Tính.pdf
Cấu Trúc Máy Tính.pdfCấu Trúc Máy Tính.pdf
Cấu Trúc Máy Tính.pdfPhamThao955982
 
Bai1laprapcaidat ttth
Bai1laprapcaidat ttthBai1laprapcaidat ttth
Bai1laprapcaidat ttthut1101833
 
chuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.pptchuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.pptSangL72
 
Tailieu.vncty.com he dieu hanh
Tailieu.vncty.com   he dieu hanhTailieu.vncty.com   he dieu hanh
Tailieu.vncty.com he dieu hanhTrần Đức Anh
 
chappter 1- Advanced Microprocessor presentation.pdf
chappter 1- Advanced Microprocessor presentation.pdfchappter 1- Advanced Microprocessor presentation.pdf
chappter 1- Advanced Microprocessor presentation.pdfngtloc2017
 
Kiến Trúc Luân Phiên
Kiến Trúc Luân PhiênKiến Trúc Luân Phiên
Kiến Trúc Luân PhiênThieu Mao
 
Bộ điều khiển lập trình PLC - Điện tử đo lường
Bộ điều khiển lập trình PLC - Điện tử đo lườngBộ điều khiển lập trình PLC - Điện tử đo lường
Bộ điều khiển lập trình PLC - Điện tử đo lườngChia sẻ tài liệu học tập
 

Ähnlich wie chương 2 ktmt.pdf (20)

BGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhBGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tính
 
Lap trinh-vdk-89 s52
Lap trinh-vdk-89 s52Lap trinh-vdk-89 s52
Lap trinh-vdk-89 s52
 
Risc
RiscRisc
Risc
 
Chuong1 tổng quan 8051
Chuong1 tổng quan 8051Chuong1 tổng quan 8051
Chuong1 tổng quan 8051
 
Chuong01
Chuong01Chuong01
Chuong01
 
Bao cao vdk_va_pic
Bao cao vdk_va_picBao cao vdk_va_pic
Bao cao vdk_va_pic
 
Cau truc may tinh
Cau truc may tinhCau truc may tinh
Cau truc may tinh
 
Tongquanktmt
TongquanktmtTongquanktmt
Tongquanktmt
 
4 ky thuat xu ly tt
4 ky thuat xu ly tt4 ky thuat xu ly tt
4 ky thuat xu ly tt
 
Ktvxl chuong 1 - tong quan
Ktvxl chuong 1 - tong quanKtvxl chuong 1 - tong quan
Ktvxl chuong 1 - tong quan
 
Vi dieu khien_pic
Vi dieu khien_picVi dieu khien_pic
Vi dieu khien_pic
 
Bao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dcBao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dc
 
Bài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhBài tập kiến trúc máy tính
Bài tập kiến trúc máy tính
 
Cấu Trúc Máy Tính.pdf
Cấu Trúc Máy Tính.pdfCấu Trúc Máy Tính.pdf
Cấu Trúc Máy Tính.pdf
 
Bai1laprapcaidat ttth
Bai1laprapcaidat ttthBai1laprapcaidat ttth
Bai1laprapcaidat ttth
 
chuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.pptchuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.ppt
 
Tailieu.vncty.com he dieu hanh
Tailieu.vncty.com   he dieu hanhTailieu.vncty.com   he dieu hanh
Tailieu.vncty.com he dieu hanh
 
chappter 1- Advanced Microprocessor presentation.pdf
chappter 1- Advanced Microprocessor presentation.pdfchappter 1- Advanced Microprocessor presentation.pdf
chappter 1- Advanced Microprocessor presentation.pdf
 
Kiến Trúc Luân Phiên
Kiến Trúc Luân PhiênKiến Trúc Luân Phiên
Kiến Trúc Luân Phiên
 
Bộ điều khiển lập trình PLC - Điện tử đo lường
Bộ điều khiển lập trình PLC - Điện tử đo lườngBộ điều khiển lập trình PLC - Điện tử đo lường
Bộ điều khiển lập trình PLC - Điện tử đo lường
 

chương 2 ktmt.pdf

  • 1. Chương 2 Tổ chức hoạt động của VXL 2.1 Những đặc điểm cấu trúc của bộ VXL 2.1.1 Công suất của bộ vi xử lý Công suất của bộ vi xử lý (VXL) là khả năng xử lý dữ liệu, bao gồm 3 đặc điểm chính sau:  Độ dài từ của bộ VXL (data word length), tính bằng byte  Dung lượng nhớ vật lý có thể đánh địa chỉ (addressing capacity): Bộ nhớ vật lý  Tốc độ xử lý lệnh của bộ VXL (instruction execute speed). Công suất của máy tính, hay tốc độ xử lý thông tin, khả năng lưu trữ thông tin, khả năng kết nối nhiều loại thiết bị ngoại vi... phụ thuộc vào công suất của bộ VXL trong CPU. 9/7/2020 1
  • 2. Tổ chức hoạt động của VXL (tt) a) Độ dài từ.  Mỗi một bộ VXL chỉ có thể xử lý dữ liệu với độ dài từ cố định (16-bit, 32-bit, 64-bit). Tập lệnh của bộ VXL thường có các lệnh thực hiện theo từ và theo byte.  Độ rộng của từ có độ dài bao nhiêu bit thì cũng có bấy nhiêu bit đối với các thanh ghi, ALU và bus dữ liệu bên trong của bộ VXL.  Độ dài từ càng lớn càng tạo ra nhiều khả năng tính toán của bộ VXL: khoảng biểu diễn số rộng hơn, tốc độ tính toán nhanh hơn. 9/7/2020 2
  • 3. Tổ chức hoạt động của VXL (tt) b) Khả năng đánh địa chỉ.  Các từ dữ liệu và lệnh máy được lưu trong bộ nhớ tại các ô nhớ khác nhau. Mỗi ô nhớ phải có 1 địa chỉ riêng biệt.  Dải đánh địa chỉ càng lớn thì dung lượng bộ nhớ càng nhiều (ví dụ, để đánh địa chỉ đến 4GB cần phải có 32 đường dây địa chỉ (A0 - A31).  Để đánh địa chỉ, bộ VXL thường sử dụng thanh ghi địa chỉ (address register).  Khả năng đánh địa chỉ càng lớn thì càng cho phép tạo ra một hệ thống máy tính có cấu hình mạnh với nhiều loại thiết bị ngoại vi, bộ nhớ chính có dung lượng lớn và khả năng xử lý nhanh. 9/7/2020 3
  • 4. Tổ chức hoạt động của VXL (tt) c) Tốc độ thực hiện lệnh.  Tốc độ thực hiện lệnh của bộ VXL có thể đo bằng tốc độ thực hiện các lệnh dấu phẩy động FLOPS (Floating Point Operations per Second) hoặc tính bằng triệu lệnh/giây (MIPS - Millions of instructions per second). Công thức tính MIPS là: trong đó: f - tần số làm việc của bộ VXL N - số lượng các đơn vị xử lý số học và logic (ALU) không phụ thuộc vào nhau bên trong bộ VXL. 9/7/2020 4 T M N f MIPS   *
  • 5. Tổ chức hoạt động của VXL (tt) c) Tốc độ thực hiện lệnh. M -số lượng vi lệnh (microinstruction) trung bình của 1 lệnh trong bộ VXL (thường để thực hiện 1 lệnh VXL cần từ 4-7 vi lệnh) T - hệ số thời gian truy nhập bộ nhớ. Theo công thức này, tốc độ thực hiện lệnh của bộ VXL có thể thay đổi nhờ 4 yếu tố. Để nâng cao tốc độ VXL, kiến trúc song song, đường ống, đồng xử lý, bộ nhớ dữ trữ (cache memory) và bus rộng (wide bus) đã được áp dụng cho các chip VXL công nghệ cao hiện nay. 9/7/2020 5 T M N f MIPS   *
  • 6. Tổ chức hoạt động của VXL (tt) 2.1.2 Những đặc tính nâng cao tốc độ của bộ VXL  Kỹ thuật đường ống (pipelining technique)  Xử lý song song (parallel processing) và kiến trúc siêu hướng (superscalar)  Đồng xử lý  Kỹ thuật nhớ dự trữ (Cache memory technique)  Bus rộng (wider bus) 9/7/2020 6
  • 7. Tổ chức hoạt động của VXL (tt) a) Kỹ thuật đường ống (pipelining technique).  Đây là một kỹ thuật làm cho các giai đoạn khác nhau của nhiều lệnh được thi hành cùng một lúc.  Theo đó, các bộ VXL hiện nay có chức năng thực hiện các lệnh máy lên tục thành 1 dây chuyền với các công đoạn:  nhận lệnh từ bộ nhớ,  giải mã lệnh,  thực hiện lệnh,  ghi kết quả thực hiện lệnh vào bộ nhớ.  Khi lệnh thứ nhất bước vào thực hiện ở giai đoạn thứ 2 thì mã lệnh của lệnh tiếp theo được đọc từ bộ nhớ, quá trình tiếp tục như vây, … => Minh họa với 3 lệnh Load, Add và Store ở Chương 2. 9/7/2020 7
  • 8. Tổ chức hoạt động của VXL (tt) a) Kỹ thuật đường ống (pipelining technique). (tt) 9/7/2020 8 In a typical early RISC processor (eg MIPS R3000), there would be four pipeline stages IF - Instruction Fetch Fetch the instruction from memory DEC - Decode and Operand Fetch Decode it and fetch operands from the register file EX - Execute Execute the instruction in the ALU WB - WriteBack Write the result back in to a register Population of the pipeline at each clock cycle: i1, i2, ... are successive instructions in the instruction stream.
  • 9. Tổ chức hoạt động của VXL (tt) a) Kỹ thuật đường ống (pipelining technique). (tt) 9/7/2020 9 Ví dụ: Giả sử, mỗi lệnh được thực hiện trong 5 giai đoạn và mỗi giai đoạn được thực hiện trong 1 chu kỳ xung nhịp. Các giai đoạn thực hiện một lệnh là: lấy lệnh (IF: Instruction Fetch), giải mã (ID: Instruction Decode), thi hành (EX: Execute), thâm nhập bộ nhớ (MEM: Memory Access), lưu trữ kết quả (RS: Result Storing).
  • 10. Tổ chức hoạt động của VXL (tt) b) Xử lý song song.  Xử lý song có nghĩa là 2 quá trình tính toán cùng xảy ra đồng thời. Trong kiến trúc máy tính, sự kết hợp 2 bộ VXL trong khối xử lý trung tâm (CPU) tạo ra khả năng xử lý song song cùng một thời gian.  Khi một nhiệm vụ được xử lý tuần tự như kiểu Von Neumann thì bộ xử lý đó (hay máy tính) được gọi là bộ xử lý tuần tự.  Nếu một nhiệm vụ T được chia thành n nhiệm vụ con T1, T2, ..., Tn có kích thước xấp xỉ nhau được xử lý đồng thời (thực hiện song song) thì tốc độ thực hiện nhiệm vụ T sẽ nhanh gấp n lần và bộ xử lý (hay máy tính) đó gọi là bộ xử lý song song (máy tính song song). 9/7/2020 10
  • 11. Tổ chức hoạt động của VXL (tt) b) Xử lý song song. (tt)  Máy tính Von Neumann truyền thống có thể được xem là thuộc loại SISD, có một chuỗi lệnh (1 chương trình) được thực hiện bởi 1 bộ VXL và 1 bộ nhớ chứa dữ liệu.  Có thể thực hiện xử lý song song ngay bên trong cấu trúc của bộ VXL, bằng cách thiết kế sao cho quá trình xử lý dữ liệu bên trong chip VXL chia thành các phiên khác nhau và thực hiện song song nhờ sự phân chia khối logic điều khiển (CU) bên trong thành 2 phần riêng. 9/7/2020 11
  • 12. Tổ chức hoạt động của VXL (tt) b) Xử lý song song. (tt)  Kiến trúc của bộ VXL có các khối chức năng xử lý song song bên trong gọi là kiến trúc siêu hướng (superscalar architechture), nghĩa là cùng 1 lúc có nhiều hướng xử lý khác nhau bên trong VXL.  Kiến trúc siêu hướng là sự phát triển tiếp theo của kiến trúc RISC, nó không những nâng cao tốc độ xử lý mà còn nâng cao độ tin cậy của CPU, bởi vì khi có sự cố ở 1 chip VXL (hay 1 đơn vị xử lý bên trong chip) thì chip VXL còn lại (hay đơn vị xử lý còn lại bên trong 1 chip) vẫn đảm nhận chức năng được bình thường.  Hiện nay, các máy tính sử dụng các bộ VXL kiến trúc RISC và các máy tính sử dụng các chip Intel Pentium II, III đều có khả năng xử lý song song bằng cấu trúc kết nối song song 2-4 chip VXL. 9/7/2020 12
  • 13. Tổ chức hoạt động của VXL (tt) c) Đồng xử lý (coprocessing).  Tương tự như xử lý song song, bộ đồng xử lý là 1 bộ VXL riêng biệt kết nối với bộ VXL chính thông qua bus hệ thống. Ví dụ, trong họ VXL Intel 80X86 có bộ đồng xử lý 80387 làm việc với 80386 hay 80486.  Bộ đồng xử lý chỉ thực hiện 1 số chức năng đặc biệt, như các phép toán đòi hỏi sự chính xác sử dụng dấu phẩy động. Tốc độ xử lý của bộ đồng xử lý những phép tính này sẽ nhanh hơn rất nhiều so với bộ xử lý chính.  Các bộ VXL công nghệ cao hiện nay đã cấy vào bên trong khối xử lý dấu phẩy động FPU càng làm tăng tốc độ tính toán các phép tính nhanh và chính xác hơn nhiều 9/7/2020 13
  • 14. Tổ chức hoạt động của VXL (tt) d) Bộ nhớ dự trữ (Cache memory).  Từ công thức (1) ta thấy: tốc độ của bộ VXL sẽ tăng đáng kể nếu tổng M+T tiến tới 1. Thời gian truy nhập bộ nhớ T có thể giảm tối thiểu nhờ giảm tối thiểu số lượng lệnh đặt trong bộ VXL và từng giai đoạn trong khi thực hiện lệnh và truy nhập bộ nhớ gài chồng lên nhau về thời gian.  Biện pháp này được áp dụng trong các bộ VXL kiến trúc RISC (Reduced Instruction Set Computing). Bộ VXL kiến trúc RISC chỉ làm việc với thanh ghi và chỉ có 2 lệnh truy nhập bộ nhớ là LOAD và STORE. 9/7/2020 14
  • 15. Tổ chức hoạt động của VXL (tt) d) Bộ nhớ dự trữ (Cache memory).  Một biện pháp giảm T nữa là áp dụng kỹ thuật bộ nhớ dự trữ (bộ nhớ Cache), là bộ nhớ có tốc độ rất cao, nó có thể nằm ngay bên trong bộ VXL với dung lượng hạn chế (internal cache), hoặc nằm kề ngay bên cạnh bộ VXL và kết nối trực tiếp với chip VXL với dung lượng đủ lớn (external cache), trong khi bộ nhớ chính kết nối với VXL thông qua bus hệ thống.  Sự trao đổi dữ liệu giữa bộ nhớ chính và bộ VXL bị hạn chế về tốc độ, vì vậy để tăng tốc độ xử lý, khi thực hiện chương trình, bộ VXL sẽ tìm kiếm lệnh ở bộ nhớ Cache trước, nếu không có thì mới thực hiện tìm trong bộ nhớ chính.  Vì vậy, thông thường các lệnh có tần số xuất hiện trong chương trình cao thường được lưu trong bộ nhớ dự trữ. 9/7/2020 15
  • 16. Tổ chức hoạt động của VXL (tt) d) Bộ nhớ dự trữ (Cache memory).(tt) 9/7/2020 16 Sắp xếp bộ nhớ Cache trong hệ thống máy tính
  • 17. Tổ chức hoạt động của VXL (tt) 2.1.3 Tập lệnh của bộ VXL.  Tập lệnh là một đặc tính then chốt của kiến trúc bộ VXL. Các bộ VXL hoạt động theo sự chỉ dẫn của tập lệnh riêng của chúng. Người lập trình hay nhà thiết kế hệ thống dựa vào tập lệnh để soạn thảo các chương trình điều khiển hoạt động của bộ VXL theo 1 trình tự nào đó.  Mỗi bộ VXL có 1 tập lệnh riêng và thường có tính kế thừa. Tập lệnh thường được chia thành nhiều nhóm và thường được biểu diễn ở dạng các từ gợi nhớ (Hợp ngữ). Ví dụ: + Các lệnh chuyển dữ liệu: MOV, LOAD, STORE, IN, OUT, … + Các lệnh số học và logic: ADD, SUB, MUL, DIV, AND, OR, … + Các lệnh dịch và quay bit: SHR, SHL, … + Các lệnh chuyển điều khiển: JMP, CALL, RET, … 9/7/2020 17
  • 18. Tổ chức hoạt động của VXL (tt) 2.1.3 Tập lệnh của bộ VXL. (tt)  Tập lệnh máy mà ta xét ở trên thực ra chỉ là các lệnh vĩ mô. Trong cấp máy vi chương trình, để thực hiện các lệnh này, thường các đơn vị trong bộ xử lý phải dịch chúng ra thành các lệnh vi mô (vi lệnh), đó là một số hạn chế các thao tác đơn giản nhất có thể được thực hiện trực tiếp bởi phần cứng logic số.  Cùng với các thanh ghi, đơn vị điều khiển CU là thành phần quan trọng và phức tạp nhất trong bộ xử lý.  Việc khảo sát quá trình thực hiện lệnh máy bên trong bộ xử lý bởi đơn vị điều khiển, bộ nhớ và các thanh ghi được thực hiện qua ngôn ngữ truyền thanh ghi RTL (Register Transmission Language). 9/7/2020 18
  • 19. Tổ chức hoạt động của VXL (tt) 2.1.3 Tập lệnh của bộ VXL. (tt)  Đơn vị CU có thể được thiết kế theo 2 cách: + Đơn vị điều khiển được vi chương trình hóa, trong đó các lệnh máy phức tạp được dịch thành các vi chương trình. Vi chương trình bao gồm 1 tập hạn chế các vi lệnh là những thao tác đơn giản nhất thực hiện được bởi mạch điện logic số. Rõ ràng quá trình thực hiện 1 lệnh máy loại này phải mất 1 khoảng thời gian giải mã vi lệnh. + Đơn vi điều khiển logic ngẫu nhiên, trong đó bộ xử lý được thiết kế sao cho các mạch logic có thể “hiểu” và thực hiện được ngay 1 số lệnh máy mà không qua giải mã vi lệnh. 9/7/2020 19
  • 20. Tổ chức hoạt động của VXL (tt) 2.1.3 Tập lệnh của bộ VXL. (tt)  Xuất phát từ đó cùng với các thống kê thực tiễn trên các lệnh máy trong các chương trình đã dẫn tới 2 loại bộ xử lý: - Loại có tập lệnh phức tạp CISC, trong đó gồm tập lệnh có cấu trúc phức tạp và muốn thực hiện phải qua giải mã vi lệnh. Loại này rất được thịnh hành khi tốc độ truy nhập bộ nhớ còn chậm. - Loại có tập lệnh được rút gọn RISC, trong đó bộ xử lý được thiết kế để có thể thực hiện được ngay 1 số lệnh có cấu trúc đơn giản hơn, hay được dùng nhất, không phải qua giải mã vi lệnh (thường khoảng 20%). Các VXL như 80486 hay Pentium đều sử dụng 1 cách linh hoạt cả 2 loại kiến trúc bộ xử lý này, trong đó có tăng cương các kỹ thuật tiên tiến như kỹ thuật đường ống, siêu đường ống, tăng cường số thanh ghi và bộ nhớ cache nội. 9/7/2020 20
  • 21. Tổ chức hoạt động của VXL (tt) 2.2 Tổ chức tổng quát của bộ xử lý trung tâm CPU  Đơn vị xử lý trung tâm CPU (Central processing Unit), gọi tắt là bộ xử lý (processor), là bộ phận quan trọng nhất của máy tính. Khi được thiết kế chế tạo trên 1 chip, nó được gọi là bộ vi xử lý (microprocessor).  Nhiệm vụ của bộ vi xử lý (VXL) là thực thi các chương trình chứa sẵn trong bộ nhớ chính bằng cách tìm-nạp (fetch) các lệnh của chương trình, giải mã chúng và sau đó thực hiện từng bước các thao tác trong lệnh.  Mô hình lập trình của bộ VXL là tổ chức các thanh ghi mà người sử dụng có thể lập trình và truy nhập tới được bên trong bộ VXL. 9/7/2020 21
  • 22. Tổ chức hoạt động của VXL (tt) Tập các thanh ghi (Register) – R - Reg Chức năng và đặc điểm:  Tập hợp các thanh ghi nằm trong CPU  Chứa các thông tin tạm thời phục vụ cho hoạt động ở thời điểm hiện tại của CPU  Được coi là mức đầu tiên của hệ thống nhớ (Tốc độ rất cao (bằng tốc độ CPU)  Tuỳ thuộc vào bộ xử lý cụ thể: số lượng, kích thước (bit).  Số lượng thanh ghi nhiều => tăng hiệu năng của CPU  Có hai loại thanh ghi  Các thanh ghi lập trình được  Các thanh ghi không lập trình được 9/7/2020 22
  • 23. Tổ chức hoạt động của VXL (tt) Tập các thanh ghi Phân loại thanh ghi theo chức năng:  Thanh ghi địa chỉ: quản lý địa chỉ của ngăn nhớ hay cổng vào-ra.  Thanh ghi dữ liệu: chứa tạm thời các dữ liệu  Thanh ghi đa năng: có thể chứa địa chỉ hoặc dữ liệu.  Thanh ghi điều khiển/trạng thái (thanh ghi cờ): chứa các thông tin điều khiển và trạng thái của CPU.  Thanh ghi lệnh (IR): chứa lệnh đang được thực hiện. 9/7/2020 23
  • 24. Tổ chức hoạt động của VXL (tt) Tập các thanh ghi Phân loại thanh ghi theo chức năng:  Thanh tích luỹ A (Accumulator): Thanh tích luỹ A là một trong các thanh ghi quan trọng nhất của hầu hết các CPU:  A được dùng để chứa toán hạng đầu vào  A được dùng để chứa kết quả đầu ra  Kích thước của A bằng kích thước từ xử lý của CPU: 8, 16, 32 và 64 bit.  A cũng được sử dụng để trao đổi dữ liệu với các thiết bị vào ra. 9/7/2020 24
  • 25. Tổ chức hoạt động của VXL (tt) Tập các thanh ghi Phân loại thanh ghi theo chức năng:  Bộ đếm chương trình PC: Bộ đếm chương trình PC (Program Counter) hoặc con trỏ lệnh (IP – Instruction Pointer) luôn chứa địa chỉ của ô nhớ chứa lệnh được thực hiện tiếp theo;  PC chứa địa chỉ của ô nhớ chứa lệnh đầu tiên của chương trình khi nó được kích hoạt và được nạp vào bộ nhớ;  Khi CPU thực hiện xong lệnh, địa chỉ của ô nhớ chứa lệnh tiếp theo được nạp vào PC;  Kích thước PC phụ thuộc vào thiết kế CPU. Các kích thước thông dụng là 8, 16, 32 và 64 bit. 9/7/2020 25
  • 26. Tổ chức hoạt động của VXL (tt) Tập các thanh ghi Phân loại thanh ghi theo chức năng:  Thanh ghi trạng thái (SR - Status Register) hoặc thanh ghi cờ (FR – Flag Register): mỗi bít của FR lưu trạng thái của kết quả của phép tính ALU thực hiện;  Hai loại bít cờ:  Cờ trạng thái: CF, OF, AF, ZF, PF, SF  Cờ điều khiển: IF, TF, DF  Các bít cờ thường được sử dụng như là các điều kiện trong các lệnh rẽ nhánh để tạo logic chương trình;  Kích thước của thanh ghi FR phụ thuộc thiết kế CPU. 9/7/2020 26
  • 27. Tổ chức hoạt động của VXL (tt) Chế độ địa chỉ:  Chế độ địa chỉ (Addressing modes) là phương thức CPU tổ chức các toán hạng của lệnh, cho phép CPU kiểm tra dạng và tìm các toán hạng của lệnh.  Chế độ địa chỉ - Thanh ghi: Giá trị của toán hạng xác định trong thanh ghi (xác định qua tên thanh ghi).  Chế độ địa chỉ - Trực tiếp (trực hằng): Giá trị hằng của toán hạng nguồn (source operand) nằm ngay sau mã lệnh (nguồn); Toán hạng đích có thể là 1 thanh ghi hoặc 1 địa chỉ ô nhớ;  Ví dụ:  LOAD R1,1000 ; R1 ←1000; Nạp giá trị 1000 vào thanh ghi R1.  LOAD B,500 ; M[B] ← 500: Nạp giá trị 500 vào ô nhớ B 9/7/2020 27
  • 28. Tổ chức hoạt động của VXL (tt) Chế độ địa chỉ:  Địa chỉ bộ nhớ: giá trị toán hạng ở trong bộ nhớ.  Địa chỉ bộ nhớ trực tiếp:  Sử dụng một hằng số (hoặc tên biến) để biểu diễn địa chỉ một ô nhớ làm một toán hạng;  Toán hạng còn lại có thể là 1 thanh ghi hoặc 1 địa chỉ ô nhớ;  LOAD R1,(1000); R1 ←M[1000]; Nạp nội dung ô nhớ có địa chỉ 1000 vào thanh ghi R1.  Địa chỉ bộ nhớ gián tiếp qua thanh ghi: Trong chế độ địa chỉ gián tiếp, một thanh ghi được sử dụng để lưu địa chỉ ô nhớ.  LOAD Rj,(Ri); Rj←M[Ri]; Nạp nội dung ô nhớ có địa chỉ lưu trong thanh ghi Ri vào thanh ghi Rj. 9/7/2020 28
  • 29. Tổ chức hoạt động của VXL (tt) 9/7/2020 29
  • 30. Tổ chức hoạt động của VXL (tt) Dạng địa chỉ của lệnh:  Dạng tổng quát của lệnh gồm 2 thành phần chính:  Mã lệnh (Opcode – operation code): mỗi lệnh có mã lệnh riêng  Địa chỉ của các toán hạng (Addresses of Operands): mỗi lệnh có thể gồm một hoặc nhiều toán hạng. Có thể có các dạng địa chỉ toán hạng sau:  3 địa chỉ  2 địa chỉ  1 địa chỉ  0 địa chỉ 9/7/2020 30
  • 31. Tổ chức hoạt động của VXL (tt) Dạng địa chỉ của lệnh:  Dạng tổng quát của lệnh gồm 2 thành phần chính:  Toán hạng 3 địa chỉ:  opcode addr1, addr2, addr3  Mỗi địa chỉ addr1, addr2, addr3 tham chiếu đến một ô nhớ hoặc một thanh ghi.  Ví dụ:  ADD R1, R2, R3; R1 ← R2 + R3; R2 cộng với R3, kết quả gán vào R1. Ri là thanh ghi của CPU.  ADD A, B, C; M[A] ← M[B] + M[C]; A, B, C là địa chỉ các ô nhớ. 9/7/2020 31
  • 32. Tổ chức hoạt động của VXL (tt) Dạng địa chỉ của lệnh:  Dạng tổng quát của lệnh gồm 2 thành phần chính:  Toán hạng 2 địa chỉ:  opcode addr1, addr2  Mỗi địa chỉ addr1, addr2 tham chiếu đến một ô nhớ hoặc một thanh ghi (addr2 có thể là toán hạng trực tiếp).  Ví dụ:  ADD R1, R2; R1 = R1 + R2; R1 cộng với R2, kết quả gán vào R1. Ri là thanh ghi của CPU.  ADD A, B; M[A] = M[A] + M[B]; A, B là địa chỉ các ô nhớ 9/7/2020 32
  • 33. Tổ chức hoạt động của VXL (tt) Dạng địa chỉ của lệnh:  Dạng tổng quát của lệnh gồm 2 thành phần chính:  Toán hạng 1 địa chỉ:  opcode addr1  Địa chỉ addr1 tham chiếu đến một ô nhớ hoặc một thanh ghi.  Ở dạng 1 địa chỉ, thanh ghi Racc (Accumulator) được sử dụng như địa chỉ addr2 trong dạng 2 địa chỉ.  Ví dụ:  ADD R1; Racc = Racc + R1; R1 cộng với Racc, kết quả gán vào Racc. R1 là thanh ghi của CPU.  ADD A; Racc ; Racc + M[A]; A là địa chỉ mộtô nhớ. 9/7/2020 33
  • 34. Tổ chức hoạt động của VXL (tt) Thực hiện lệnh máy bên trong bộ VXL  Trong chương trước ta đã biết bộ VXL thực hiện 1 lệnh theo chuỗi các bước sau : (1). Lấy lệnh kế tiếp từ bộ nhớ vào thanh ghi lệnh IR. (2). Chuyển nội dung bộ đếm chương trình (trỏ) tới địa chỉ lệnh tiếp theo. (3). Xác định loại lệnh vừa lấy. (4). Nếu lệnh sử dụng dữ liệu trong bộ nhớ, xác định nơi chứa dữ liệu (5). Tìm-nạp dữ liệu vào các thanh ghi trong CPU (nếu có) (6). Thực thi lệnh (7). Lưu các kết quả vào nơi thích hợp. (8). Trở lại bước 1 để thực thi lệnh kế tiếp. 9/7/2020 34
  • 35. Bộ VXL Intel 8088/8086 9/7/2020 35
  • 36. Bộ VXL 8088/8086 9/7/2020 36 Hàng đợi lệnh trước
  • 37. Bộ VXL 8088/8086 Sơ đồ khối 8086 phân chia thành 2 nhóm cơ bản:  Đơn vị thực hiện EU (EU - Execution Unit), bao gồm: ALU, khối các thanh ghi 16-bit, thanh ghi cờ (flag) và đơn vị điều khiển CU.  EU duy trì trạng thái CPU, kiểm soát các thanh ghi đa năng và toán hạng lệnh. Tất cả các thanh ghi và đường truyền dữ liệu trong EU dài 16-bit.  Đơn vị giao tiếp bus (BIU - Bus Interface Unit), gồm có bộ cộng để tính địa chỉ (vật lý), 4 thanh ghi segment 16-bit (CS, DS, SS, ES), hàng lệnh độ dài 6 bytes được làm từ 6 byte bộ nhớ trong của bộ vi xử lý và logic điều khiển bus. 9/7/2020 37
  • 38. Bộ VXL 8088/8086  Việc chia thành 2 đơn vị làm việc đồng thời có liên hệ với nhau qua đệm lệnh làm tăng đáng kể tốc độ xử lý của VXL. Các bus bên trong VXL có nhiệm vụ chuyển tải các tín hiệu của các đơn vị khác.  Đơn vị BIU đưa ra địa chỉ, đọc mã lệnh từ bộ nhớ, đọc/ghi dữ liệu từ/vào cổng hoặc bộ nhớ. Nói cách khác BIU chịu trách nhiệm đưa địa chỉ ra bus và trao đổi dữ liệu với bus.  Trong BIU còn có một bộ nhớ đệm lệnh với dung lượng 6 byte dùng để chứa các mã lệnh đọc được nằm sẵn để chờ EU xử lý (còn được gọi là hàng đợi lệnh trước). Đây là cấu trúc mới được cấy vào bộ VXL 8088/8086 do việc Intel đưa cơ chế xử lý xen kẻ liên tục dòng mã lệnh (instruction pipelining) vào ứng dụng trong các bộ VXL thế hệ mới. 9/7/2020 38
  • 39. Bộ VXL 8088/8086  Trong EU có đơn vị điều khiển CU (Control Unit), bên trong nó có mạch giải mã lệnh.  Mã lệnh đọc vào từ bộ nhớ được đưa đến đầu vào của bộ giải mã, các thông tin thu được từ đầu ra của nó sẽ được đưa đến mạch tạo xung điều khiển, kết quả ta thu được các dãy xung khác nhau (tuỳ theo mã lệnh) để điều khiển hoạt động của các bộ phận bên trong và bên ngoài VXL.  Trong EU còn có đơn vị tính toán số học và logic ALU (Arithmetic and Logic Unit) dùng để thực hiện các thao tác khác nhau với các toán hạng của lệnh. 9/7/2020 39
  • 40. Bộ VXL 8088/8086  Tóm lại, khi CPU hoạt động EU sẽ cung cấp thông tin về địa chỉ cho BIU để đơn vị này đọc lệnh và dữ liệu, còn bản thân nó thì giải mã lệnh và thực hiện lệnh.  Như vậy một chu kỳ lệnh của CPU có thể được xem 1 cách đơn giản là bao gồm 2 thời khoảng: lấy lệnh từ bộ nhớ và thực hiện lệnh. Việc đọc mã lệnh (opcode fetch) là do đơn vị BIU thực hiện, việc giải mã lệnh (CU) và thực hiện lệnh (ALU) do EU đảm nhiệm.  Các khối chức năng này có khả năng làm việc đồng thời, trong hầu hết trường hợp có sự trùng lặp giữa thời gian thực hiện lệnh trước và lấy lệnh sau và các bus sẽ liên tục được sử dụng: trong khi EU lấy mã lệnh từ bộ đệm để giải mã hoặc thực hiện các thao tác nội bộ thì BIU vẫn có thể đọc mã lệnh từ bộ nhớ chính rồi đặt chúng vào bộ nhớ đệm lệnh. 9/7/2020 40
  • 41. Bộ VXL 8088/8086  Bộ đệm lệnh này làm việc theo kiểu FIFO (first in – first out). Kết quả có thể coi thời gian lấy lệnh là bằng 0 vì EU chỉ việc thực hiện lệnh đã được lấy sẵn bới BIU. Chế độ hoạt động này, còn được gọi là pipe line (đường ống), cho phép tăng tốc độ xử lý và được sử dụng rất nhiều trong tin học. 8086 là bộ vi xử lý đầu tiên sử dụng chế độ hoạt động này.  Nếu có sự vào/ra liên tục của dòng mã lệnh trong bộ đệm này thì có nghĩa là có sự phối hợp hoạt động hiệu quả giữa 2 khối EU và BIU theo cơ chế xử lý xen kẻ liên tục dòng mã lệnh để làm tăng tốc độ xử lý tổng thể.  Trong bộ VXL 8088/8086 còn có các thanh ghi 16 bit nằm trong cả 2 khối EU và BIU, ngoài ra cũng có một số thanh ghi 8 hoặc 16 bit tại EU. 9/7/2020 41
  • 42. Bộ VXL 8088/8086 9/7/2020 42 32 bit: DX:AX CS:IP DS:SI DS:DI ES:SI ES:DI SS:SP SS:BP IP=PC
  • 43. Bộ VXL 8088/8086 Các thanh ghi dữ liệu  Các thanh ghi dữ liệu AX, BX, CX và DX được dùng như các thanh chứa và các thanh ghi toán hạng 16 bit. Mỗi một thanh ghi này có thể được tách ra làm hai thanh ghi 8 bit. Thông thường, mỗi thanh ghi có một chức năng đặc trưng sau :  AX được sử dụng đối với các phép toán vào ra, nhân chia ...  BX dùng như là thanh ghi cơ sở khi sự địa chỉ hoá gián tiếp bởi thanh ghi cơ sở.  CX dùng để đếm dữ liệu trong các phép toán trên những dãy ký tự  DX dùng với AX để nhân và chia hay thanh ghi địa chỉ gián tiếp 9/7/2020 43
  • 44. Bộ VXL 8088/8086  Các thanh ghi đoạn Các thanh ghi đoạn CS, DS, SS và ES là một phần của đơn vị quản lý bộ nhớ được tích hợp trong 8086. Mỗi thanh ghi này chứa chứa địa chỉ cơ sở vật lý của một segment (đoạn nhớ) 64Kb (216).  Các thanh ghi con trỏ  Các thanh ghi SP (Stack Pointer), BP, SI và DI là những thanh ghi được sử dụng đối với các phép toán số học và logic, hai thanh ghi đầu tiên cũng được sử dụng để chỉ ra một sự dịch chuyển trong đoạn ngăn xếp trong khi hai thanh ghi cuối được sử dụng để định vị trí sự dịch chuyển trong đoạn dữ liệu.  Thanh ghi IP (Instruction Pointer) tương ứng với bộ đếm thứ tự và chứa đựng sự dịch chuyển, bên trong đoạn chương trình được liên quan, đối với địa chỉ tham chiếu. 9/7/2020 44
  • 45. Bộ VXL 8088/8086 Thanh ghi trạng thái và điều khiển (thanh ghi cờ)  CF (Carry flag – Cờ nhớ): CF được đặt (CF=1) sau khi thực hiện các phép tính số học mà trong các phép tính này có hiện tượng nhớ từ bit cao nhất của toán hạng.  PF (Parity flag – Cờ kiểm tra chẳn lẻ): PF được đặt (PF=1) khi trong 8 bit thấp của kết quả có số bit=1 là chẵn. Trong trường hợp ngược lại, PF=0.  AF (Auxiliary flag – Cờ nhớ phụ) : AF được sử dụng trong các phép toán số học với mã BCD (Binary Coded Decimal). Chẳng hạn AF=1 khi có nhớ từ bit 3 sang bit 4.  ZF (Zero flag – Cờ không) : ZF=1 khi kết quả của một phép tính bằng 0.  SF (Sign flag – Cờ dấu): SF=1 khi bit cao nhất của kết quả là 1 (kết quả âm), SF=0 trong trường hợp ngược lại (kết quả dương)  OF (Overflow flag – Cờ tràn) : OF=1 khi mà trong các phép tính số học, kết quả lớn hơn hoặc bé, nó không thể chứa trong toán hạng được (sai dấu) 9/7/2020 45
  • 46. Bộ VXL 8088/8086 Thanh ghi trạng thái (thanh ghi cờ): các cờ điều khiển  IF (interrupt enable flag – Cờ cho phép ngắt): Ngắt là một chương trình con được cài sẵn trong bộ nhớ. Các chương trình này có thể được kích hoạt bởi CPU để phối hợp với các chương trình khác thực hiện. Khi IF=1, cho phép ghi nhận lời gọi ngắt và IF=0, không cho phép thực hiện lời gọi ngắt. (CLI & STI)  DF (Direction flag – Cờ hướng): DF sẽ quyết định việc truy xuất theo chiều tăng hay chiều giảm trong các phép truy xuất dữ liệu từ bộ nhớ có sử dụng các thanh ghi SI và DI. Nếu DF=1 thì SI và DI sẽ tự động giảm đi 1. Nếu DF=0, SI và DI sễ tự động tăng lên 1. (STD & CLD)  TF (Trap flag): Cờ này dùng để đặt (TF=1) hoặc xoá (TF=0) chế độ thực hiện chương trình từng lệnh một. Cờ này được sử dụng trong các chương trình gở rối (debug). 9/7/2020 46
  • 47. 9/7/2020 47 Bộ VXL 8088/8086 Địa chỉ logic = địa chỉ luận lý Địa chỉ logic=Segment:Offset BIU Địa chỉ vật lý = (Segment*10h)+Offset Không gian bộ nhớ logic
  • 48. 9/7/2020 48 Bộ VXL 8088/8086 FFFFh:10h Phân biệt không gian địa chỉ vật lý và không gian địa chỉ logic của VXL Intel 8086/8088, Địa chỉ logic
  • 49. 9/7/2020 49 Bộ VXL 8088/8086  Thanh ghi trạng thái (flags) trong CPU gồm những bit đặc biệt sau (được xác lập giá trị tuỳ thuộc vào kết quả thao tác cuối cùng của ALU): SF; ZF; CF; OF.  Giả sử ALU thao tác với từ nhớ độ lớn 8 bits và sử dụng kiểu biểu diễn bù 2. Những bits (bit cờ) trên sẽ có giá trị như thế nào nếu các phép toán của ALU là: Mov AL,01 Mov BL,0FFh ADD AL,BL Mov AL,6 Mov BL,250 ADD AL,BL
  • 50. 9/7/2020 50 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086 Lệnh sau sẽ được thực hiện như thế nào? MOV [BX], AL
  • 51. 9/7/2020 51 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086
  • 52. 9/7/2020 52 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086
  • 53. 9/7/2020 53 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086
  • 54. 9/7/2020 54 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086 0788 D16 D16
  • 55. 9/7/2020 55 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086 8807 0788
  • 56. 9/7/2020 56 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086
  • 57. 9/7/2020 57 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086
  • 58. 9/7/2020 58 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086
  • 59. 9/7/2020 59 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086
  • 60. 9/7/2020 60 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086
  • 61. 9/7/2020 61 Bộ VXL 8088/8086 Minh họa quá trình thực hiện lệnh của 8086
  • 62. 9/7/2020 62 Bộ VXL 8088/8086  Các chế độ địa chỉ của 8086/8088:  (1) Chế độ địa chỉ trực tiếp: giá trị toán hạng là hằng  (2) Chế độ địa chỉ thanh ghi: DS, ES, AX, BX, CX, DX, SI, DI, BP. Các thanh ghi còn lại (CS, SS, IP, SP) không sử dụng làm toán hạng đích.  (3) Chế độ địa chỉ bộ nhớ (offset):  (3a) chế độ địa chỉ bộ nhớ trực tiếp (địa chỉ ô nhớ là hằng số hoặc tên biến) – dòng 3; và  (3b) chế độ địa chỉ bộ nhớ gián tiếp qua thanh ghi: các thanh ghi được phép sử dụng trong chế độ này? BX, SI, DI, BP (Stack)  Cú pháp chung:  (i) [Thanh ghi] ; [BX], [SI], [DI], [BP]  (ii) [Thanh ghi+/-Độ dịch] ; Độ dịch là hằng số, Thanh ghi đóng vai trò là con trỏ  (iii) Độ_dịch[Thanh ghi] ; Độ dịch là tên biến, Thanh ghi đóng vai trò là chỉ số (Index).
  • 63. 9/7/2020 63 Bộ VXL 8088/8086
  • 64. 9/7/2020 64 Bộ VXL 8088/8086 Câu hỏi:  Phân biệt và lấy ví dụ minh họa (bằng lệnh Hợp ngữ) để phân biệt 2 chế độ địa chỉ:  chế độ địa chỉ bộ nhớ trực tiếp (địa chỉ là hằng số); và  chế độ địa chỉ bộ nhớ gián tiếp qua thanh ghi (cụ thể với thanh ghi BX để đọc nội dung từ vùng nhớ bắt đầu từ địa chỉ DS:81h (trong đó số ký tự cần đọc lưu trong byte nhớ DS:80h) sang 1 vùng đệm cho trước).
  • 65. 9/7/2020 65 Bộ VXL 8088/8086  Cấu trúc chương trình COM 00FFh PSP 0000h-00FFh IP Code Stack Data
  • 66. 9/7/2020 66 Bộ VXL 8088/8086 LIFO – Last in First Out
  • 67. Biến có thể được khai báo như sau: <tên_biến> <Toán tử giả> <Giá trị khởi tạo> hoặc <tên_biến> <Toán tử giả> ? Trong đó: <Toán tử giả> có thể là: db (kiểu byte), dw (kiểu word), dd (kiểu doubleword), … Toán tử giả DUP: <count> DUP <Giá trị khởi tạo> Ví dụ: array_ db 20 dup (?) ;20 byte st1 db 20,0,21 dup (?) ;23 byte 67 Bộ VXL 8088/8086
  • 68. 9/7/2020 68 Bộ VXL 8088/8086  Đưa các giá trị 15, 14, 13, 12 vào Stack theo thứ tự. Mov cx,4 Mov ax,15 Lap: Push ax Dec ax Loop lap => In các phần tử ra màn hình (sử dụng phương pháp truy nhập trực tiếp bộ nhớ màn hình) theo thứ tự 12,13,14,15; lưu ý là không làm thay đổi cấu trúc Stack (gợi ý: sử dụng thanh ghi BP).
  • 69. 9/7/2020 69 Bộ VXL 8088/8086
  • 70. 9/7/2020 70 Bộ VXL 8088/8086  Đưa các giá trị 15 vào Stack theo thứ tự. Mov ax,15 Push ax Pop ax In phần tử tại đỉnh Stack ra màn hình (có 2 chữ số thập phân), sử dụng lệnh AAM (lệnh làm việc với số BCD).
  • 71. 9/7/2020 71 Bộ VXL 8088/8086  Viết chương trình dạng COM thực hiện:  Xóa màn hình, sử dụng hàm 0h/ngắt 10h  Khai báo một mảng Word có số phần tử tuỳ ý (chứa các giá trị số tuỳ ý biểu diễn ở dạng số hex) trong phần dữ liệu, có dạng: 0161h,0262h, …  Hoàn thiện đoạn lệnh sau và cho biết kết quả của nó:  Mov ax,0B800h  Mov es,ax  Mov di,100h  ; <số phần tử trong mảng Word ở trên> ; yêu cầu viết lệnh  ; <địa chỉ offset của mảng Word ở trên> ; yêu cầu viết lệnh  ;<Viết đoạn lệnh sao chép nội dung mảng Word ở trên ra bộ nhớ bắt đầu từ địa chỉ 0B800h:100h.>
  • 72. 9/7/2020 72 Bộ VXL 8088/8086
  • 73. 9/7/2020 73 Bộ VXL 8088/8086
  • 74. 9/7/2020 74 Bộ VXL 8088/8086  Khai báo mảng (data):  mang_byte db 1,2,3,3 ;byte  mang_word dw 1,2,3,3 ;word  khởi tạo: Mov cx,4 ; Lea si,mang_byte ; si=100h Lea si,mang_word Mov dl,0 ;  Vòng lặp For để tính tổng mảng (cx= số lần lặp) lap_t: ;lặp 1 lặp 2 lặp 3 ... mov al,[si] ; al = 1 al=2 al=3 add dl,al ;dl=1 dl=3 dl=6 inc si ;si=101h si=102h si=103h loop lap_t ;cx=3 cx=2 cx=1
  • 75. 9/7/2020 75 Bộ VXL 8088/8086  Khai báo mảng (data):  mang_byte db 1,2,3,3 ;byte  mang_word dw 1,2,3,3 ;word  push dx ;cất giá trị Tổng (dl=9) vào Stack mov ah,02 ;in ký tự có mã ASCII mov dl,0ah ;trong thanh ghi DL int 21h mov dl,0dh int 21h ;chuyển con trỏ về đầu dòng mới pop dx ;lay gia tri tong tuw stack add dl,30h ; dl=39h = ‘9’ mov ah, 02h int 21h ;in tổng ra màn hình
  • 76. 9/7/2020 76 Bộ VXL 8088/8086
  • 77. Tổ chức của bộ VXL 80286  Bộ VXL 80286 là sự nâng cấp hoàn chỉnh của 8086.  Nó là VXL kiến trúc 16-bit bên trong (các thanh ghi) và một bus dữ liệu bên ngoài cũng 16 bit.  Bus địa chỉ là 24 bit cho phép đánh địa chỉ (địa chỉ hoá) tới 16MB bộ nhớ vật lý, và 1GB nhớ logic (bộ nhớ ảo). 80286 có đi kèm đồng xử lý 80287 và chúng là trung tâm của hệ máy vi tính thế hệ IBM/AT rất thông dụng trong những năm 1980. 9/7/2020 77
  • 78. Tổ chức của bộ VXL 80286  Cấu trúc bên trong của 80286 tương tự như 8086, nhưng đặc biệt nó có đơn vị quản lý bộ nhớ bên trong MMU (Memory Management Unit) để làm việc với bộ nhớ ảo với cơ chế bảo vệ bộ nhớ và khả năng địa chỉ hóa bộ nhớ vật lý với dung lượng đạt tới 16MB, hỗ trợ cho cơ chế đa sử dụng và đa nhiệm.  Các hệ điều hành đa nhiệm đã có thể cài đặt trên các máy tính dùng 80286.  80286 có thể hoạt động ở 2 chế độ: chế độ thực (real mode) giống như trong 8086 và chế độ bảo vệ (protected mode). 9/7/2020 78
  • 79. Tổ chức của bộ VXL 80286  Các thanh ghi của 80286. 80286 cũng có các thanh ghi thông thường với chức năng giống như các thanh ghi trong 8086, tuy nhiên để hoạt động trong chế độ bảo vệ 80286 được thêm vào các thanh ghi mới có tên như sau:  Thanh ghi nhiệm vụ TR (Task Register)  Thanh ghi từ trạng thái máy MSW (Machine Status Word)  Thanh ghi bảng bộ mô tả cục bộ LDT (Local Descriptor Table)  Thanh ghi bảng bộ mô tả ngắt IDT (Interrupt Descriptor Table)  Thanh ghi bảng bộ mô tả toàn cục GDT (Global Descriptor Table) 9/7/2020 79
  • 80. Cấu trúc chung của VXL 80386/80486/Pentium 9/7/2020 80
  • 81. Đặc điểm của CPU 80386/80486/Pentium  VXL 80386 và 80486-Pentium có nhiều điểm khá giống nhau, ngoại trừ việc trong 80486 đã có cấy sẵn bộ xử lý dấu phẩy động FPU hay trong Pentium có cả FPU lẫn 2 bộ IU (2 bộ ALU cho số nguyên 64 bit).  Về mặt lập trình có thể coi các bộ VXL 80386 và 80486, Pentium là như nhau.  Bộ VXL 386 ra đời nhằm khắc phục trực tiếp các nhược điểm của 80286: phải chuyển đổi được nhanh chóng giữa chế độ thực và chế độ bảo vệ, và phải có khả năng hoạt động với bộ nhớ RAM tối đa 4 GB.  Chip 386 còn có một bộ cache nội nhỏ đồng thời có thể sử dụng thêm cache ngoài để tăng tốc độ hoạt động. 9/7/2020 81
  • 82. Đặc điểm của VXL Intel 80386  80386 là một bộ VXL mạnh và tối ưu với các hệ điều hành đa nhiệm. So với VXL Intel 8086, nó có thêm những đặc điểm chính như sau: Bus dữ liệu 32 bit Bus địa chỉ 32 bit, do vậy có thể địa chỉ hoá được 4GB nhớ vật lý và 64Terabyte bộ nhớ ảo (=16404 Gb).  Hơn nữa, để cải tiến hiệu quả, 386 nạp trước 16 byte lệnh trong quá trình thực hiện. Tốc độ thực hiện lệnh lên tới 25 triệu lệnh/giây (MIPS). Thêm bộ quản lý trang của khối nhớ. Có chế độ quản lý và bảo vệ bộ nhớ dùng cho các hệ điều hành đa nhiệm (chế độ thực, chế độ bảo vệ, chế độ 8086 ảo). 9/7/2020 82
  • 83. Đặc điểm của VXL Intel 80386  Các thanh ghi của 80386: Các thanh ghi địa chỉ và số liệu thông dụng 32 bit: EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Các thanh ghi cờ và con trỏ lệnh 32 bit: EIP, EFLAGS. Các thanh ghi đoạn 16 bit: đoạn dữ liệu (DS, ES, FS, GS), CS, SS. Các thanh ghi điều khiển 32 bit: CR0, CR1, CR2, CR3: ghi số liệu để điều khiển VXL 9/7/2020 83
  • 84. Đặc điểm của VXL Intel 80386  Các thanh ghi của 80386: Các thanh ghi mô tả mảng: GDTR (mô tả toàn cục), LDTR (mô tả cục bộ), TR (ghi nhiệm vụ). Các thanh ghi gỡ rối 32 bit (DR0  DR7): ghi địa chỉ và trạng thái của các điểm dừng chương trình để kiểm tra lỗi. Các thanh ghi kiểm tra (thử) 32 bit: TR6 (Test Control: kiểm tra điều khiển), TR7 (Test Status) 80386 không có FPU (đon vị dấu phẩy động) bên trong, mà phải sử dụng bộ đồng xử lý 80387 bên ngoài để thực hiện các phép tính dấu phẩy động. 9/7/2020 84
  • 85. Đặc điểm của VXL Intel 80386  VXL 80386 có thể làm việc ở một trong 3 chế độ:  Chế độ địa chỉ thực Trong chế độ địa chỉ thực, 80386 hoạt động ở chế độ phân đoạn với khả năng phân biệt địa chỉ bộ nhớ 1MB và với các đoạn 64KB như 8086. Các thanh ghi đa năng có thể có kích thước 8-32 bit tùy theo toán hạng. Ta có thể làm việc với 4 thanh ghi đoạn dữ liệu. Thanh ghi cờ cho chế độ địa chỉ thực chỉ là 16 bit. 9/7/2020 85
  • 86. Đặc điểm của VXL Intel 80386 Chế độ 8086 ảo Một tính năng mới của 80386 là có thể mô phỏng một hoặc nhiều bộ VXL 8086 cùng một lúc nên cho phép chạy nhiều chương trình DOS đồng thời. Chế độ đó được gọi là chế độ 8086 ảo, tức là cho phép các chương trình ứng dụng của 8086 chạy được trên 80386 ở chế độ bảo vệ. Bộ VXL 80386 chuyển đổi rất dễ dàng từ chế độ bảo vệ sang chế độ 8086 ảo hoặc ngược lại bằng cách lập/xóa bit VM trong thanh ghi EFLAGS. 9/7/2020 86
  • 87. Đặc điểm của VXL Intel 80386 Chế độ 8086 ảo  Trong chế độ này, VXL 80386 xem mỗi chương trình là 1 tác vụ rồi dành cho mỗi tác vụ một không gian địa chỉ 1MB và tính địa chỉ vật lý theo địa chỉ segment:offset như 8086.  Các không gian 1MB này được VXL 80386 quản lý theo kiểu phân trang nên có thể nằm rải rác trong không gian tổng thể 4GB mà 80386 có khả năng phân biệt được.  Chính vì vậy có thể dùng các bit U/S và R/W để tạo ra cơ chế bảo vệ cho bộ nhớ trong chế độ 8086 ảo này. 9/7/2020 87
  • 88. Đặc điểm của VXL Intel 80386  Chế độ bảo vệ  Chế độ bảo vệ cho phép ta khai thác hết sức mạnh được thiết kế trong cho VXL 80386.  Mạch 80386 chuyển chế độ làm việc từ chế độ địa chỉ thực sang chế độ bảo vệ hoặc ngược lại nhờ việc lập/xóa bit D0 của thanh ghi điều khiển CR0.  Trong chế độ bảo vệ 80386 có thể làm việc theo phương pháp phân đoạn hoặc phân trang (sẽ trình bày ở chương sau). Mỗi đoạn có thể có độ dài tới 4GB, mỗi trang là 4KB và bộ nhớ ảo có thể có độ dài lớn nhất là 64TB. 9/7/2020 88
  • 89. Đặc điểm của VXL Intel 80386  Chế độ bảo vệ  Về mô hình bộ nhớ, các chương trình không truy nhập trực tiếp vào bộ nhớ vật lý. Thay vào đó, các chương trình có thể sử dụng các mô hình truy nhập.  Phân trang và bộ nhớ ảo: khi này bộ nhớ chương trình được chia thành các trang ánh xạ vào bộ nhớ ảo. Sau đó, bộ nhớ ảo được ánh xạ vào bộ nhớ thực. Nếu hệ điều hành sử dụng phân trang, cơ chế ánh xạ hoàn toàn trong suốt đối với chương trình ứng dụng. 9/7/2020 89
  • 90. Đặc điểm của VXL Intel 80486  Bộ VXL 80486 về cơ bản có quy mô như 80386, nhưng nó được tăng cường thêm ngay ở bên trong một bộ nhớ cache (Cache nội) với dung lượng 8KB dùng cho lệnh và dữ liệu.  VXL 80486 còn được cấy thêm một bộ đồng xử lý toán học dấu phẩy động (floating point unit, FPU). Khả năng thao tác của 80486 vì thế cao hơn, tuy khả năng bảo vệ và quản lý bộ nhớ, khả năng phân biệt địa chỉ bộ nhớ thì vẫn giống như 80386. 9/7/2020 90
  • 91. Bộ xử lý CISC và RISC 9/7/2020 91 BUS Interface PQ Decoding Unit Microcode Queue Microcode ROM ControlUnit ALU Register EU Coprocessor CISC Microprocessor RISC Microprocessor BUS Interface PQ Control Unit ALU Register EU Coprocessor Coprocessor: bộ đồng xử lý Decoding Unit: Đơn vị giải mã Microcode ROM: ROM vi mã PQ: Hàng nhận lệnh trước Microcode Queue: Hàng vi mã Control Unit: Đơn vị điều khiển
  • 92. Có hai kiểu kiến trúc vi xử lý: kiến trúc với tập lệnh rút gọn (Reduced Instruction Set Computer-RISC) và kiến trúc với tập lệnh phức tạp (Complex Instruction Set Computer-CISC).  Vi xử lý RISC nhấn mạnh tính đơn giản và hiệu quả. Các thiết kế RISC khởi đầu với tập lệnh thiết yếu và vừa đủ. RISC tăng tốc độ xử lý bằng cách giảm số chu kỳ đồng hồ trên một lệnh.  Mục đích của RISC là tăng tốc độ hiệu dụng bằng cách chuyển việc thực hiện các thao tác không thường xuyên vào phần mềm còn các thao tác phổ biến do phần cứng thực hiện.  Như vậy làm tăng hiệu năng của máy tính. cs.stanford.edu/people/eroberts/courses/soco/projects/risc/r isccisc/ 9/7/2020 92 Kiến trúc RISC và CISC
  • 93. Kiến trúc RISC  Các đặc trưng căn bản của vi xử lý kiểu RISC:  Thiết kế vi xử lý RISC sử dụng điều khiển cứng (hardwared control), không hoặc rất ít sử dụng vi mã. Tất cả các lệnh RISC có định dạng cố định vì vậy việc sử dụng vi mã không cần thiết.  Vi xử lý RISC xử lý hầu hết các lệnh trong một chu kỳ.  Tập lệnh của vi xử lý RISC chủ yếu sử dụng các lệnh với thanh ghi, và các lệnh nạp và lưu. Tất cả các lệnh số học và lô-gíc sử dụng thanh ghi, còn các lệnh nạp và lưu dùng để truy nhập bộ nhớ.  Các lệnh có một số ít định dạng cố định và ít chế độ địa chỉ.  Vi xử lý RISC có một số thanh ghi dùng chung.  Vi xử lý RISC có thể xử lý một vài lệnh đồng thời và thường áp dụng kỹ thuật đường ống (pipeline). 9/7/2020 93 Kiến trúc RISC và CISC
  • 94. Kiến trúc CISC  Các đặc trưng căn bản của vi xử lý kiểu CISC:  Khác với vi xử lý RISC, vi xử lý CISC bao gồm số lượng lớn các lệnh và nhiều chế độ địa chỉ, trong đó lệnh và chế độ địa chỉ rất ít được sử dụng.  Ngược lại với RISC chỉ có các lệnh nạp và lưu thao tác với bộ nhớ, hầu hết các lệnh của vi xử lý CISC đều có thể truy nhập bộ nhớ.  Do tập lệnh phức tạp, CISC cần đơn vị điều khiển phức tạp và vi chương trình. Trong khi đó, RISC sử dụng bộ điều khiển kết nối cứng nên nhanh hơn. Kiến trúc CISC khó triển khai kỹ thuật đường ống. 9/7/2020 94 Kiến trúc RISC và CISC
  • 95. Bộ xử lý CISC và RISC Họ VXL của Intel thường hoạt động theo nguyên tắc dùng VXL có tập lệnh phức hợp CISC (Complex Instruction Set Computer). Đặc điểm là nó có số lượng lệnh lớn (thường hơn 300 lệnh), có khả năng định địa chỉ phức tạp, các lệnh được vi lệnh hoá có nghĩa là các CPU hoạt động bằng vi chương trình. 9/7/2020 95
  • 96. Bộ xử lý CISC và RISC Trong đó, bộ xử lý nhận lệnh qua ghép nối bus đưa vào hàng nhận lệnh trước PQ. Sau đó PQ sẽ phát lệnh tới bộ giải mã.  Bộ giải mã sẽ giải mã 1 lệnh máy thành các vi lệnh và truyền chúng tới hàng vi mã, từ đây các vi lệnh được truyền tới các đơn vị điều khiển và chạy lệnh sao cho bộ ALU và các thanh ghi được điều khiển 1 cách thích hợp. Do vậy, trong bộ VXL kiểu CISC, thời gian thi hành 1 lệnh mã máy bao gồm thời gian giải mã và khoảng thời gian thực hiện chương trình vi lệnh tương ứng. 9/7/2020 96
  • 97. Bộ xử lý CISC và RISC  Vi chương trình được phát triển mạnh trong những năm 70 khi mà bộ nhớ chính có tốc độ truy cập tương đối chậm.  Lúc đó các nhà thiết kế máy tính sử dụng bộ nhớ chính tốc độ chậm để lưu trữ các lệnh phức tạp tạo nên chương trình ở mức máy.  Các lệnh đó sẽ được dịch bằng vi mã trong bộ nhớ điều khiển vi chương trình có tốc độ truy nhập nhanh hơn.  Ngày nay, các bộ nhớ chính có thời gian truy cập ngắn hơn 80 ns làm cho các ưu điểm kể trên của vi chương trình không những biến mất mà còn gây cản trở nữa cho hệ thống. 9/7/2020 97
  • 98. Bộ xử lý CISC và RISC  Trong nhiều thập kỷ, các nhà khoa học máy tính đã nghiên cứu cách thức mà các máy tính hiện nay chạy chương trình. Điều tra thống kê đã chỉ ra những kết luận sau:  Trong nhiều chương trình điển hình được xử lý bằng bộ VXL CISC thì đến 80% thời gian chạy chương trình được thực hiện chỉ bởi 20% số lệnh trong tập lệnh.  Ví dụ, tác giả Fairclough đã chia các lệnh ra thành 8 nhóm và đã thống kê được các kết quả trung bình tần suất sử dụng (xét về cả chương trình và kiến trúc máy tính) của chúng như sau: 9/7/2020 98 Nhóm 1 2 3 4 5 6 7 8 Tần suất % 45,28 28,73 10,75 5,92 3,91 2,93 2,05 0,44
  • 99. Bộ xử lý CISC và RISC  Trong đó: 1 là nhóm các lệnh chuyển dữ liệu 2 là nhóm các lệnh chuyển điều khiển chương trình (call, jmp, ret...) 3 là nhóm các lệnh số học; 4 là nhóm các lệnh so sánh 5 là nhóm các lệnh logic; 6 là nhóm các lệnh dịch 7 là nhóm các lệnh xử lý bit; 8 là nhóm các lệnh vào/ra Rõ ràng trong tổng số 8 nhóm lệnh trên thì 2 nhóm lệnh chuyển dữ liệu và chuyển điều khiển chương trình có tần suất sử dụng chiếm đến 74%. + Có những trường hợp, để đạt được cùng 1 kết quả thì việc chạy một chuỗi lệnh đơn giản sẽ nhanh hơn là chạy một lệnh phức tạp. 9/7/2020 99
  • 100. Các đặc điểm của kiến trúc RISC Kiến trúc RISC cần có những đặc điểm sau:  Cần có đủ số thanh ghi (thực chất là các bộ nhớ ngay trong chip, có thời gian truy cập nhanh hơn so với bộ nhớ ngoài) để khắc phục được hiệu ứng nghẹt cổ chai.  Vì các lệnh trong nhóm 2 (call, ret, …) thường xảy ra nên một kiến trúc hiệu dụng cần tạo sự dự phòng cho việc chuyển hiệu quả các tham số giữa các thủ tục. 9/7/2020 100
  • 101. Bộ xử lý CISC và RISC Những kết luận trên là tiền đề để một loại VXL khác ra đời; nó hoạt động theo phương pháp sử dụng tập lệnh rút gọn RISC (Reduced Instruction Set Computer). Tập lệnh ở đây được hạn chế vào các lệnh chính yếu cần thiết trong số 20% lệnh nói trên, và phần cứng được thiết kế sao cho các phần tử RISC hiểu ngay được lệnh mã máy do chương trình cung cấp. Do đó, các lệnh này không cần chuyển cho bộ giải mã vi lệnh nữa mà được thực hiện ngay. Rõ ràng thời gian để thực hiện 1 lệnh ở đây được rút ngắn đi nhiều so với trường hợp CISC (thực hiện 1 mã thao tác chỉ trong 1 chu kỳ máy). 9/7/2020 101
  • 102. Các đặc điểm của kiến trúc RISC 3 khía cạnh cơ bản của kiến trúc RISC:  Dùng một số lớn các thanh ghi được chế tạo trên chip (on-chip),  Dùng các cửa sổ thanh ghi gối lên nhau để giảm một cách đáng kể sự truyền tham số giữa các thủ tục,  Cơ chế đường ống (pipelining) trong đó cho phép sự gối lên nhau trong việc thực hiện lệnh. 9/7/2020 102
  • 103. Các đặc điểm của kiến trúc RISC  Kiến trúc RISC và xử lý đường ống.  Nói 1 cách đơn giản, một xử lý đường ống có thể cho phép thực hiện lệnh thứ i trong khi lấy lệnh thứ i+1 trong cùng 1 thời gian.  Hình sau mô tả cách mà bộ xử lý RISC thực hiện xử lý đường ống: 9/7/2020 103 i IF OF E OS i + 1 IF OF E OS
  • 104. Các đặc điểm của kiến trúc RISC  Kiến trúc RISC và xử lý đường ống.  RISC gối giai đoạn lấy lệnh từ bộ nhớ ngoài với 3 giai đoạn xảy ra bên trong chip: lấy toán hạng, thực hiện lệnh và lưu trữ toán hạng.  Lưu ý rằng 3 giai đoạn này chỉ chiếm mất 1 thời gian xấp xỉ như giai đoạn lấy lệnh vì các hoạt động xảy ra ngay bên trong bộ xử lý và các toán hạng được nhận hoặc lưu trữ vào ngay các thanh ghi của bộ xử lý nên có tốc độ xử lý rất nhanh.  Hơn nữa vì RISC có 1 định dạng lệnh thông thường rất đơn giản nên giai đoạn giải mã lệnh là không cần thiết. 9/7/2020 104 i IF OF E OS i + 1 IF OF E OS
  • 105. VXL Intel 80486 80486 bao gồm các thành phần chính sau đây:  Giao tiếp bus (bus interface), nó kết hợp với bus hệ thống bên ngoài, cache bên trong chip và các đơn vị tiền đọc lệnh (prefetcher units).  Đơn vị tiền đọc lệnh (prefetcher) với hàng 32-byte cho các lệnh và nó được nối với giao tiếp bus, cache, giải mã lệnh và đơn vị phân đoạn (segmentation unit). 9/7/2020 105
  • 106. VXL Intel 80486 80486 bao gồm các thành phần chính sau đây:  Đơn vị cache (cache unit), gồm có 8KB cache (chứa dữ liệu và mã lệnh) và logic quản lý cache. Nó được kết nối với đơn vị segmentation, ALU và FPU thông qua bus 64- bit truyền dữ liệu giữa các khối (interunit data transfer bus). Đơn vị cache cũng kết nối trực tiếp với đơn vị định trang (paging unit), giao tiếp bus, bộ tiền đọc lệnh.  Đơn vị giải mã lệnh nhận 3 bytes của lệnh đọc từ hàng lệnh và chuyển lệnh được giải mã tới đơn vị điều khiển và kiểm tra bảo vệ CPTU (control and protection test unit). 9/7/2020 106
  • 107. VXL Intel 80486 80486 bao gồm các thành phần chính sau đây:  CPTU tạo ra các vi lệnh và gởi chúng tới các đơn vị khác để thực hiện kiểm tra bảo vệ.  Một đơn vị tính toán số nguyên tốt ưu, tương thích với 386DX  Một đơn vị tính toán số thực (FPU-Floating Processor Unit) tương thích với coprocessor toán học 80387.  Đơn vị phân đoạn (segmentation unit), trong đó có logic quản lý phân đoạn, logic điểm ngắt.  Đơn vị định trang (paging unit), trong đó có logic quản lý định trang và bộ đệm chuyển đổi 32 điểm vào TLB. 9/7/2020 107
  • 108. VXL Intel 80486  Kiến trúc của i486 là dạng mở rộng của i386, cả i386 và i486 đều có cache và MMU bên trong, nhưng i486 có cache bên trong dung lượng lớn hơn.  Kiến trúc của VXL Intel 80486 được thiết kế dựa trên kết quả của việc tích hợp 2 loại phần tử xử lý CISC và RISC trong cùng 1 chip.  Trong 486, các lệnh mã máy thường xuyên được dùng sẽ được cài đặt sẵn và có thể thực hiện ngay, trong khi các lệnh phức tạp nhất và ít được sử dụng sẽ thông qua bộ giải mã vi lệnh.  Theo phương thức này, hầu như tất cả các lệnh có thể được thực hiện gọn trong 1 chu kỳ xung nhịp đồng hồ. 9/7/2020 108
  • 109. VXL Intel 80486  Mạch cache liên hiệp 4 đường trong 486 làm việc giống như cache ngoại nhưng đường cache ở đây là 128 bit chứ không phải 32 bit.  Trong 486 có đường ống lệnh 5 tầng cho phép chạy các lệnh nhanh hơn ở 386 nhiều, cơ chế này thường dùng trong VXL RISC cho phép 1 vài lệnh có thể “chảy” trong đường ống cùng 1 lúc.  486 sẽ nhận 1 vài lệnh trước và trong khi đang xử lý 1 lệnh nó sẽ giải mã và khởi phát chạy lệnh tiếp theo sớm đến mức có thể. 9/7/2020 109
  • 110. VXL Intel 80486  Thực sự thì 486 có thể thực thi các phần của 1 vài lệnh trong cùng 1 thời gian.  Ví dụ giả sử 486 thực hiện 1 chuỗi lệnh có ý nghĩa như sau: MOV AX, <nội dung vùng nhớ> ADD CX,BX SHR AX,1 MOV <nội dung vùng nhớ>, CX 9/7/2020 110
  • 111. VXL Intel 80486  Một vài nhịp đồng hồ trước khi thực hiện lệnh thứ nhất, 486 đã lấy tất cả các lệnh đơn giản và khởi phát giải mã chúng.  Khi lệnh đầu tiên được thực hiện thì việc giải mã lệnh thứ 2 đã hoàn thành.  Vì lệnh ADD không dùng các bus hoặc số liệu đọc từ bộ nhớ bởi lệnh MOV nên nó có thể được thực hiện trước khi lệnh MOV hoàn thành.  Tương tự như vậy, sự giải mã lệnh SHR sẽ được hoàn thành trong khi lệnh ADD CX,BX đang thực hiện; và trong chu kỳ nhịp tiếp theo lệnh SHR sẽ được thực hiện.  Trong chu kỳ nhịp mà lệnh SHR được thực hiện, sự giải mã lệnh cuối cùng được hoàn thành và địa chỉ của vùng nhớ sẽ được đưa ra bus địa chỉ.  Trong chu kỳ đồng hồ tiếp theo, từ trong thanh ghi CX sẽ được đưa ra trên bus số liệu. 9/7/2020 111
  • 112. VXL Intel 80486  Việc tăng cường sự xen phủ như vậy cho phép 486 chạy nhiều lệnh trong một chu kỳ đồng hồ một cách hiệu dụng.  Việc nhận lệnh, giải mã lệnh và thực hiện mỗi lệnh thực tế xảy ra vài nhịp đồng hồ nhưng vì các hoạt động này xen phủ lên nhau với các quá trình giải mã và thực hiện lệnh nên thời gian thực cho mỗi lệnh chỉ mất có 1 nhịp đồng hồ.  Ví dụ, 1 hoạt động viết bộ nhớ 16 bit mất chứng 22 nhịp đồng hồ trong VXL 8088 và 4 nhịp trong 386 thì chỉ diễn ra 1 nhịp trong 80486. 9/7/2020 112
  • 113. VXL Intel 80486  Cơ chế bảo vệ của i386 và i486: Mỗi loại vi xử lý có chức năng hỗ trợ cho đa xử lý và đa nhiệm có cơ chế bảo vệ bộ nhớ khác nhau, tuy nhiên chúng có 1 số điểm chung:  Cơ chế bảo vệ bộ nhớ chủ định cho các hệ điều hành đa nhiệm (multitasking OS) để cách ly và bảo vệ các chương trình của người sử dụng và hệ điều hành khỏi bị xâm nhập không được phép (không có thẩm quyền).  Cơ chế bảo vệ phân chia thành các cấp bảo vệ, thường gọi là cấp thẩm quyền PL (privilege levels). 9/7/2020 113
  • 114. VXL Intel 80486  Cơ chế bảo vệ của i386 và i486: Có 4 cấp thẩm quyền, theo thứ tự từ cao đến thấp:  Cấp 0: cấp thẩm quyền cao nhất, giành cho nhân của hệ điều hành (OS kernel)  Cấp 1: giành cho các dịch vụ của hệ thống  Cấp 2: giành cho các mở rộng hệ thống  Cấp 3: cấp thẩm quyền thấp nhất, giành cho các ứng dụng của người sử dụng. 9/7/2020 114
  • 115. VXL Pentium Năm 1993, Intel cho ra đời một bộ vi xử lý mới, không phải mang tên i586 mà là Pentium.  Đây là VXL CISC được tích hợp thêm một số tính chất của VXL RISC.  VXL Pentium không chỉ nhanh hơn 80486 mà còn có 1 số đặc điểm mới được thiết kế đặc biệt cho các ứng dụng phục vụ file.  Bus dữ liệu rộng 64 bit tuy vẫn chỉ có các thanh ghi 32 bit bên trong. 9/7/2020 115
  • 116. VXL Pentium  Chip có khả năng thực hiện 2 lệnh song song (nó có hai đơn vị thực hiện độc lập 32 bit, có khả năng thực hiện đồng thời), theo công nghệ siêu vô hướng (superscalar) với 2 đường ống U và V. Công nghệ này có khả năng làm việc với các cấu trúc RISC.  Nó cũng có hai bộ nhớ cache riêng biệt 8Kb, một cho các lệnh và một cho dữ liệu, một đơn vị tính toán số thực tốt ưu và 2 pipeline 5 tầng.  Nhịp đồng hồ là 60, 66 và có thể đạt đến 100MHz. Dưới một vài điều kiện, công suất của nó có thể nhanh gấp 4 hay 5 lần i486. 9/7/2020 116
  • 118. VXL Pentium  Hai bộ nhớ Cache 8KB riêng biệt, một dành cho lệnh và 1 dành cho số liệu.  Hai hàng nhận lệnh trước 32 bit và 2 bộ tính toán số học và logic ALU được cung cấp lệnh và dữ liệu trên 2 đường ống song song siêu vô hướng U và V cho phép thi hành 2 lệnh máy trong 1 chu kỳ.  Bộ xử lý vẫn làm việc với các thanh ghi 32 bit và bus địa chỉ 32 bit nhưng có thể kết nối với bus dữ liệu ngoài là 64 bit.  Bus nội bộ là 64 bit và 128 bit, bus từ bộ nhớ cache nội nối với các vùng đệm của các ALU rộng 256 bit cho phép tăng tốc độ trao đổi dữ liệu trong nội bộ VXL rât cao.  Có một vùng nhớ gọi là vùng đệm đích rẽ nhánh BTB (Branch Target Buffer) của lệnh đối với 256 lệnh rẽ nhánh sử dụng gần đây nhất. 9/7/2020 118
  • 119. VXL Pentium  Một vài đặc trưng khác làm cho Pentium phân biệt được với các VXL trước là:  Kích thước trang của bộ nhớ trong chế độ bảo vệ và ảo không chỉ hạn chế ở 4KB mà có thể lên đến 2 MB hay 4 MB.  Khả năng tự tìm kiếm các lỗi phức tạp và gỡ rối (debugging) bằng các mạch phần cứng lắp thêm.  Có thể tự đánh giá được hiệu suất thi hành chương trình.  Nhờ việc sử dụng các cơ chế đường ống, cấu trúc superscalar và dự đoán rẽ nhánh.  Các lệnh chạy trong Pentium được thực hiện trên 1 cấu trúc superscalar 2 đường ống song song U và V, các cache nội bộ và vùng đệm đích rẽ nhánh BTB. 9/7/2020 119
  • 120. VXL Pentium  Cấu trúc superscalar với 2 đường ống song song: Việc thi hành lệnh trong Pentium diễn ra qua 5 công đoạn: 1) Lấy lệnh trước (Prefetch): lệnh máy được lấy từ bộ nhớ chuyển vào bộ xử lý. 2) Giải mã lệnh 1 (Decode 1): giải mã, phân tích để xác định loại lệnh. 3) Giải mã lệnh 2 (Decode 2): xác định địa chỉ ô nhớ cần truy nhập 4) Thực hiện lệnh (Execute). 5) Viết các kết quả dữ liệu vào các thanh ghi và bộ nhớ. 9/7/2020 120
  • 121. VXL Pentium  Cấu trúc superscalar với 2 đường ống song song:  Các công đoạn trên cũng được Pentium thực hiện theo cơ chế đường ống, nhờ đo với 5 lệnh sẽ cùng được xử lý đồng thời trên 1 đường ống và có thể coi mỗi lệnh chỉ được xử lý trong 1 chu kỳ nhịp đồng hồ.  Hơn nữa Pentium có 2 đường ống U và V được chế tạo hoạt động song song với nhau nên về mặt lý thuyết nó sẽ có khả năng thi hành 1 lúc 2 lệnh.  Tuy nhiên, trên thực tế, không phải lúc nào cũng thực hiện được điều đó vì 2 lệnh kế tiếp nhau thường phụ thuộc vào nhau và lúc này chỉ có thể xử lý chúng 1 cách tuần tự.  Một mạch đặc biệt sẽ kiểm tra tính phụ thuộc dữ liệu đó xem chúng có yêu cầu phải liên kết trong quá trình xử lý hay không. 9/7/2020 121
  • 122. VXL Pentium  Cấu trúc superscalar với 2 đường ống song song:  Nếu không phụ thuộc, 2 lệnh sẽ được gởi đến 2 đường ống theo đúng thứ tự. Quá trình có thể dẫn giải như sau:  Trong công đoạn 1, lệnh hiện tại sẽ được đưa vào đơn vị giải mã của đường ống U, lệnh kế tiếp vào đơn vị giải mã của đường ống V.  Nếu trong công đoạn 2, mạch đặc biệt nói trên xác định có thể thực hiện đồng thời được 2 lệnh thì mỗi lệnh sẽ trải qua các công đoạn còn lại trong mỗi đường ống của nó, ngược lại thì lệnh trong ống U sẽ trải qua công đoạn kế tiếp như bình thường, còn lệnh kế tiếp trong ống V sẽ được chuyển qua thi hành trong ống U như là lệnh theo sau lệnh hiện tại. 9/7/2020 122
  • 123. VXL Pentium  Cấu trúc superscalar với 2 đường ống song song: 9/7/2020 123
  • 125. Một số câu hỏi 1. Vi lệnh là gì? 2. Trình bày sự khác nhau cơ bản giữa đơn vị điều khiển vi chương trình hoá và đơn vị điều khiển logic ngẫu nhiên 3. Kiến trúc RISC có những đặc điểm gì để phân biệt nó với kiến trúc CISC. https://cs.stanford.edu/people/erober ts/courses/soco/projects/risc/risccisc/ 9/7/2020 125
  • 126. Một số câu hỏi 4. Tại sao người ta thường nói: VXL RISC là VXL có kiến trúc “LOAD-STORE”? 5. Kiến trúc tập lệnh của bộ xử lý RISC (Tìm hiểu tập lệnh MIPS)  Tham khảo http://www.cse.hcmut.edu.vn/~sonsys/MT15KH05_L03/Bai_Giang/ Chuong02.pdf https://sites.google.com/a/uit.edu.vn/ktmt/tap-lenh-mips-co-ban https://sites.google.com/a/uit.edu.vn/ktmt/t 9/7/2020 126
  • 127. Một số câu hỏi Một số vấn đề của cơ chế đường ống lệnh: - Vấn đề xung đột tài nguyên - Vấn đề tranh chấp dữ liệu - Vấn đề nảy sinh do các lệnh rẽ nhánh 9/7/2020 127