Bài giảng Kiến trúc máy tính (Computer Architecture) - Chương 4: Bộ xử lý trung tâm CPU cung cấp cho học viên những kiến thức về cấu trúc cơ bản của CPU, kiến trúc tập lệnh, hoạt động của CPU, đơn vị số học và logic (ALU),... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
Trang 1Chương 4
Bộ xử lý trung tâm
CPU
Trang 2Mục tiêu
Nhận biết các thành phần cơ bản của đơn vị
xử lý trung tâm (CPU) và chức năng của
chúng.
Hiểu được vai trò mỗi thành của CPU trong
mối quan hệ với việc xử lý thông tin.
Trang 44.1 Cấu trúc cơ bản của CPU
Trang 5-1 Đơn vị số học và logic (ALU)
Chức năng: Thực hiện các phép toán số học
Trang 6Mô hình kết nối ALU
Trang 7Các khối bên trong ALU
Trang 8Bộ cộng sử dụng trong máy tính điện tử
Bộ cộng hai số nhị phân n bit:
Trang 9Bộ cộng sử dụng trong máy tính điện tử
Bộ bán tổng Bộ cộng đầy đủ 1 bit
a0
b0
S0
c1Half-Adder
Trang 102 Thanh ghi
Thanh ghi là bộ nhớ bên trong CPU
Vùng nhớ được CPU nhận biết qua tên thanh ghi
Ví dụ: Bảng mã thanh ghi của VXL 8086
Trang 112 Thanh ghi
Chức năng và đặc điểm
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ớ, có tốc
độ truy xuất cực nhanh
Trang 13Thanh ghi 8 bit song song
Trang 14Thanh ghi dịch
Trang 15Phâ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 lệnh: chứa lệnh đang được thực hiện
Thanh ghi dữ liệu: chứa tạm thời các dữ liệu
Thanh ghi trạng thái: chứa các thông tin điều
khiển của CPU và trạng thái kết quả phép toán
Thanh ghi đa năng: có thể chứa địa chỉ hoặc dữ
liệu
Trang 16Các thanh ghi điển hình trong CPU
Trang 17Các thanh ghi địa chỉ
Thanh ghi cơ sở (thanh ghi
Thanh ghi cơ sở:Thanh ghi chỉ sổ >
Lưu địa chỉ logic
MAR (Memory Address
Register): Thanh ghi đệm địa
chỉ
Trang 18Bộ đếm chương trình PC
Còn được gọi là con trỏ lệnh
IP (Instruction Pointer)
Lưu địa chỉ của lệnh tiếp
theo sẽ được nhận vào
Trang 19 Đáy ngăn xếp là một ngăn nhớ xác định
Đỉnh ngăn xếp là thông tin nằm ở vị trí
trên cùng trong ngăn xếp
Đỉnh ngăn xếp có thể bị thay đổi
Trang 20Minh họa con trỏ ngăn xếp
Đỉnh Stack
SP
Trang 21Cơ chế hoạt động của SP
SP chứa địa chỉ của ngăn nhớ đỉnh ngăn xếp
Khi cất một thông tin vào ngăn xếp:
Nội dung của SP tự động giảm
Thông tin được cất vào ngăn nhớ được trỏ bởi SP
Khi lấy một thông tin ra khỏi ngăn xếp:
Thông tin được đọc từ ngăn nhớ được trỏ bởi SP
Nội dung của SP tự động tăng
Khi ngăn xếp rỗng, SP trỏ vào đáy
Trang 22Các thanh ghi dữ liệu
Chứa các dữ liệu tạm thời hoặc các kết quả
trung gian
Cần có nhiều thanh ghi dữ liệu
Các thanh ghi số nguyên: 8, 16, 32, 64 bit
Các thanh ghi số dấu phẩy động (ví dụ theo tiêu chuẩn IEEE 754 là 32 bit, 64 bit, …)
Trang 23Thanh ghi tích lũy A
Accumulator
Cất giữ toán hạng hoặc các kết quả
phép tính của ALU
Trang 24Thanh ghi trạng thái
Còn gọi là thanh ghi cờ (Flag Register)
Chứa các thông tin trạng thái của CPU
Các cờ phép toán: báo hiệu trạng thái của kết quả phép toán
Các cờ điều khiển: biểu thị trạng thái điều khiển của CU
Trang 25 Cờ Carry (cờ nhớ): được thiết lập lên 1 nếu phép
toán có nhớ ra ngoài bit cao nhất cờ báo tràn với
số không dấu
Cờ Overflow (cờ tràn): được thiết lập lên 1 nếu
cộng hai số nguyên cùng dấu mà kết quả có dấu
ngược lại cờ báo tràn với số có dấu
Trang 26Ví dụ cờ điều khiển
Cờ Interrupt (Cờ cho phép ngắt):
Nếu IF = 1 CPU ở trạng thái cho phép ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi tới
Nếu IF = 0 CPU ở trạng thái cấm ngắt với tín hiệu yêu cầu ngắt từ bên ngoài gửi
Trang 27Bộ thanh ghi của 8086/8088 CPU
Trang 28Vị trí của thanh ghi trong
8086/8088
Trang 29Nhóm thanh ghi dữ liệu
(đa năng – general registers)
Thanh ghi dùng để lưu trữ dữ liệu tạm thời,
ghi tham số cho mã lệnh, đây cũng là nơi
lệnh trả kết quả về sau khi thực hiện
Có 4 thanh ghi 16 bit:
AX (Accumulator Register): thanh chứa
BX (Base Register): thanh ghi cơ sở
CX (Count Register): thanh ghi đếm
DX (Data Register): thanh ghi dữ liệu
Khi cần chứa các dữ liệu 8 bit thì các thanh
ghi này có thể tách thành 2 thanh ghi 8 bit
cao và 8 bit thấp làm việc độc lập
Trang 30Biểu diễn các thanh ghi dữ liệu
Trang 31Nhóm thanh ghi đoạn
(segment) khác nhau dành riêng để:
Đoạn chứa mã chương trình
Đoạn chứa dữ liệu và kết quả trung gian của chương
trình
Đoạn đặc biệt (gọi là ngăn xếp) dùng vào việc quản
lý các thông số của bộ vi xử lý khi gọi chương trình
con hoặc trở về từ chương trình con
bởi:
Địa chỉ đầu của đoạn được lưu trong thanh ghi đoạn
Địa chỉ lệch từ ngăn nhớ cần truy cập tới ngăn nhớ đầu
đoạn được lưu trong thanh ghi lệch
Trang 32Nhóm thanh ghi đoạn
Vi xử lý 8086 có 4 thanh ghi đoạn 16 bit:
CS (code segment): Thanh ghi đoạn mã
DS (data segment): Thanh ghi đoạn dữ liệu
SS (stack segment): Thanh ghi đoạn ngăn
xếp
ES (extra segment): Thanh ghi đoạn dữ liệu
Trang 33Thanh ghi đoạn mã CS (code
segment)
Là thanh ghi đoạn mã 16 bit
Thanh ghi này phối hợp với thanh ghi
con trỏ lệnh IP để ghi địa chỉ của lệnh
sắp thực hiện trong đoạn mã
Địa chỉ đầy đủ là CS:IP
Trang 34Thanh ghi đoạn dữ liệu DS (Data segment)
Là thanh ghi đoạn 16 bit cho một đoạn dữ liệu
Thanh ghi này phối hợp với hai thanh ghi chỉ
số SI và DI để đánh địa chỉ cho dữ liệu
Địa chỉ đầy đủ cho dữ liệu cần đọc là DS:SI
Trang 35Thanh ghi đoạn ngăn xếp SS
Là thanh ghi đoạn 16 bit cho một ngăn xếp
Địa chỉ đỉnh của ngăn xếp được biểu diễn cùng với con trỏ ngăn xếp SP là SS:SP
Trang 36Thanh ghi đoạn dữ liệu phụ ES
Là thanh ghi dữ liệu phụ có chiều dài 16 bit.
Thường đuợc dùng để đánh địa chỉ một chuỗi
ES:SI là địa chỉ chuỗi đọc vào (chuỗi nguồn)
ES:DI là địa chỉ chuỗi cần viết ra (chuỗi đích)
Trang 37Nhóm thanh ghi con trỏ và chỉ số
thanh ghi chỉ số 16 bit
Các thanh ghi con trỏ:
IP (instruction pointer): con trỏ lệnh
BP (base pointer): con trỏ cơ sở
SP (stack pointer): con trỏ ngăn xếp
Các thanh ghi chỉ số:
SI (source index): chỉ số nguồn
DI (destination index): chỉ số đích
lệch cho các đoạn tương ứng
Trang 38Các thanh ghi con trỏ
IP (instruction pointer)
này nằm trong bô nhớ mà địa chỉ đoạn được
ghi trong CS
IP xác định địa chỉ lệch (địa chỉ offset) của
lệnh kế tiếp trong đoạn mã lệnh sẽ được CPU
thi hành
Trang 39Các thanh ghi con trỏ (tiếp)
BP (base pointer)
Là con trỏ cơ sở trỏ về dữ liệu, BP luôn luôn
trỏ vào dữ liệu nằm trong đoạn ngăn xếp SS
Địa chỉ đầy đủ của một phần tử trong đoạn
ngăn xếp sẽ là SS:BP
SP (stack pointer)
Là con trỏ ngăn xếp luôn trỏ vào đỉnh hiện
thời của ngăn xếp nằm trong đoạn ngăn xếp
SS
Địa chỉ đầy đủ của đỉnh ngăn xếp ứng với SS:
SP
Trang 40Các thanh ghi chỉ số
SI (source index)
Là chỉ số nguồn
Chỉ vào dữ liệu trong đoạn dữ liệu DS
Địa chỉ đầy đủ của dữ liệu là DS:SI
DI (destination index)
Là chỉ số đích
Chỉ vào dữ liệu trong đoạn dữ liệu DS
Trang 41Thanh ghi cờ FR (flag register)
Là thanh ghi 16 bit khá đặc biệt trong CPU, chứa cácthông tin trạng thái hiện;
Ghi trạng thái kết quả các phép xử lý trong đơn vị số học
và logic ALU (Ví dụ: trạng thái tràn của phép toán vừa thực hiện)
Hoặc một trạng thái hoạt động của khối thực hiện lệnh
Thanh ghi cờ gồm các cờ, mỗi cờ dùng 1 bit
Trang 42Sơ đồ thanh ghi cờ của bộ
VXL 8086/8088
X: là bit không được định nghĩa
Trang 43Các cờ cụ thể
CF (carry flag) cờ nhớ, CF=1 khi có nhớ hoặc mượn
từ MSB
OF (overflow) cờ tràn, OF =1 khi kết quả vượt ra
ngoài giới hạn, xảy ra đối với phép tính có dấu
AF (auxliary carry flag) cờ nhớ phụ dùng cho các
phép tính với mã BCD AF = 1 khi có nhớ hoặc mượn
từ một số BCD thấp (4 bit thấp) sang một số BCD cao(4 bit cao)
SF (sign flag) cờ dấu, SF = 1 khi kết quả âm.
ZF (zero flag) cờ rỗng, ZF = 1 khi kết quả bằng 0.
Trang 44Các cờ cụ thể (tiếp)
PF (parity flag) cờ parity, PF phản ảnh tính chẵn
(parity) của tổng số bit 1 có trong kết quả Cở PF =1khi tổng số bit 1 trong kết quả là chẵn
TF (trap flag) cờ bẫy, TF = 1 khi vi xử lý ở trong chế
độ chạy từng lệnh (chế độ này dùng khi cần tìm lỗitrong một chương trình)
IF (interrupt enable flag) cờ cho phép ngắt, IF = 1 cho
Trang 45 Nhóm thanh ghi dữ liệu: AX, BX, CX, DX
Nhóm thanh ghi địa chỉ:
Nhóm thanh ghi đoạn (DS, CS, SS, ES): chứa địa chỉ đoạn
Nhóm thanh ghi con trỏ (IP, SP, BP) và chỉ số (SI, DI): chứa địa chỉ lệch
Tổng kết các thanh ghi của
VXL 8086/8088
Trang 46Cặp thanh ghi đoạn và thanh ghi lệch
DS: SI Địa chỉ của dữ liệu nguồn cần đọc nằm trong đoạn
dữ liệu DS DS:DI Địa chỉ của dữ liệu đích cần ghi vào nằm trong
đoạn dữ liệu DS CS:IP Địa chỉ của lệnh sẽ được nằm trong đoạn mã CS SS:SP Địa chỉ của đỉnh ngăn xếp nằm trong đoạn ngăn
xếp SS SS:BP Địa chỉ của dữ liệu nằm trong đoạn ngăn xếp SS
Trang 473 Đơn vị điều khiển
Chức năng:
Tạo tín hiệu điều khiển ra bên ngoài CPU để phục
vụ việc trao đổi dữ liệu với M và I/O
Tạo tín hiệu bên trong CPU để dịch chuyển dữ liệu giữa các thanh ghi
Điều khiển ALU thực hiện phép toán yêu cầu
Trang 48Các tín hiệu điều khiển
Trang 49Các phương pháp thiết kế đơn vị
Trang 50Điều khiển bằng kết nối cứng
Các tín hiệu điều khiển đầu ra khối CU là hàm logic của các tín hiệu vào
Ứng với mỗi tín hiệu điều khiển cần một
mạch logic
Số chức năng càng nhiều CU càng phức
tạp
Trang 51Đơn vị điều khiển bằng kết nối cứng
IR Giải mã
CU
Mạch phân chia thời gian
.
T 1 .
T n
C 0 C n-1
cờ
Trang 52Nhận xét
Điều khiển bằng kết nối cứng:
Sử dụng mạch cứng để giải mã và tạo các tín hiệu điều khiển thực hiện lệnh
Đơn vị điều khiển phức tạp
Trang 53Điều khiển bằng vi chương trình
Một số khái niệm:
Vi toán: Một chu trình lệnh bao gồm các chu
trình nhỏ hơn: nhận lệnh, thực hiện lệnh, … mỗi chu trình này bao gồm một loạt các bước nhỏ hơn luôn truy nhập vào các thanh ghi của CPU, các
bước nhỏ này được gọi là phép vi toán
Vi lệnh: Mỗi vi toán được mã hóa bằng một tập
các ký hiệu được gọi là vi lệnh
Vi chương trình: Tập hợp một dãy các vi lệnh
tạo thành một vi chương trình
Trang 54Điều khiển bằng vi chương trình
Bộ nhớ vi chương trình (ROM) lưu trữ các vi chương trình (microprogram)
Để hoàn thành một lệnh cần thực hiện một hoặc một vài vi chương trình
Với mỗi vi lênh, CU sẽ thiết lập 1 tập các tín hiệu điều khiển tương ứng gọi là từ điều
Trang 55Đơn vị điều khiển bằng vi chương
trình
Thanh ghi lệnh
Bô giải mã
Thanh ghi địa chỉ vi lệnh
Bô nhớ
vi chương trình
Thanh ghi đệm vi lệnh
Bô giải mã vi lệnh
Các tín hiệu điều khiển Các tín hiệu điều khiển
Khối logic điều khiển
Trang 56Nội dung
Cấu trúc cơ bản của CPU
Kiến trúc tập lệnh
Hoạt động của CPU
Trang 574.2 Kiến trúc tập lệnh
Giới thiệu tập lệnh
Đặc trưng của lệnh máy
Tập lệnh
Các phương pháp định địa chỉ
RISC và CISC
Trang 58Giới thiệu về tập lệnh
Mỗi lệnh là một chuỗi số nhị phân (được gọi là lệnh
máy) mà bộ vi xử lý hiểu được để thực hiện một thao tác xác định
Bộ xử lý có nhiều chức năng, mỗi chức năng ứng với một lệnh Tập các lệnh gọi là tập lệnh của bộ xử lý
Trang 59Giới thiệu về tập lệnh
Ví dụ:
Trang 621 Các đặc trưng của lệnh máy
Cấu trúc mã lệnh
Các kiểu lệnh
Số lượng địa chỉ
Kiểu dữ liệu
Trang 631 Các đặc trưng của lệnh máy (tiếp)
Cấu trúc mã lệnh:
Mã thao tác (Operation Code: Opcode): Mã chỉ ra thao
tác mà bộ vi xử lý cần phải thực hiện, phân biệt đó là lệnh
gì
Địa chỉ toán hạng (Operand Address): Chỉ ra nơi chứa
các toán hạng mà thao tác sẽ tác động
Toán hạng (operand) cho biết cái gì được xử lý (nội dung
của thanh ghi hay bộ nhớ)
Toán hạng nguồn: dữ liệu vào của thao tác
Toán hạng đích: dữ liệu ra của thao tác
Trang 641 Các đặc trưng của lệnh máy (tiếp)
Các kiểu lệnh:
Xử lý dữ liệu (Data processing): Các lệnh số
học và logic
liệu vào/ra giữa thanh ghi và bộ nhớ
lệnh vào/ra
Trang 65Ba địa chỉ toán hạng
2 toán hạng nguồn, 1 toán hạng đích
c = a + b
Từ lệnh dài vì phải mã hoá địa chỉ cho cả ba toán hạng
Trang 66Hai địa chỉ toán hạng
Một toán hạng vừa là toán hạng nguồn vừa là toán hạng đích; toán hạng còn lại là toán
hạng nguồn
a = a + b
Giá trị cũ của 1 toán hạng nguồn bị mất vì
phải chứa kết quả
Trang 67Một địa chỉ toán hạng
Một toán hạng được chỉ ra trong lệnh
Một toán hạng là ngầm định thường là
thanh ghi tích lũy A (Accumulator)
Trang 68Không địa chỉ toán hạng
Các toán hạng đều được ngầm định
Sử dụng trong điều khiển Stack
Lệnh không địa chỉ luôn ngầm định trỏ vào đỉnh của Stack
Ví dụ:
Push a
Trang 72Đánh giá về số địa chỉ toán hạng
Nhiều địa chỉ toán hạng:
Lệnh dài hơn
Cần nhiều thanh ghi
Nhận lệnh và thực hiện lệnh chậm hơn
Chương trình có ít lệnh hơn
Ít địa chỉ toán hạng:
Lệnh ngắn hơn
Trang 731 Các đặc trưng của lệnh máy (tiếp)
Dữ liệu ký tự (Characters): mã hóa theo bộ mã ký tự
Dữ liệu kiểu logic (Logical data)
Trang 76a Các lệnh chuyển dữ liệu
MOV Sao chép dữ liệu từ toán hạng nguồn đến đích
LOAD Nạp dữ liệu từ bộ nhớ đến bộ xử lý
STORE Cất dữ liệu từ bộ xử lý đến bộ nhớ
CLEAR Chuyển các bit 0 vào toán hạng đích
SET Chuyển các bit 1 vào toán hạng đích
PUSH Cất nội dung của một toán hạng nguồn vào
Trang 77b Các lệnh số học
SUBTRACT Trừ hai toán hạng
MULTIPLY Nhân hai toán hạng
DIVIDE Chia hai toán hạng
ABSOLUTE Lấy trị tuyệt đối toán hạng
NEGATE Đổi dấu toán hạng (lấy bù 2)
INCREMENT Tăng toán hạng thêm 1
DECREMENT Giảm toán hạng đi 1
COMPARE Trừ 2 toán hạng để lập cờ
Trang 78c Các lệnh logic
Shift Dịch trái (phải) toán hạng
Rotate Quay trái (phải) toán hạng
Trang 79Minh họa lệnh AND, OR và XOR
Giả sử có hai thanh ghi R1, R2 chứa dữ liệu như sau
Trang 80Các thao tác Shift và Rotate
Trang 83f Các lệnh chuyển điều khiển
(rẽ nhánh)
JUMP (BRANCH) - Lệnh nhảy không điều kiện
JUMP CONDITIONAL - Lệnh nhảy có điều kiện
Call- Lệnh gọi chương trình con
Return – Lệnh trở về từ chương trình con
Trang 84Lệnh JUMP
Chuyển tới thực hiện lệnh
ở vị trí có địa chỉ XXX:
PC XXX
Trang 85Lệnh JUMP CONDITIONAL
Trong lệnh có kèm theo điều kiện
Kiểm tra điều kiện trong lệnh:
Điều kiện được kiểm tra thông qua các cờ
Nếu điều kiện đúng chuyển tới thực hiện
lệnh ở vị trí có địa chỉ XXX
Nếu điều kiện sai chuyển sang thực hiện
lệnh kế tiếp
Ví dụ: BRP X Nhảy tới ô nhớ X nếu kết quả dương
BRN X Nhảy tới ô nhớ X nếu kết quả âm BRZ X Nhảy tới ô nhớ X nếu kết quả bằng 0
Trang 86 Nạp vào PC địa chỉ của lệnh đầu tiên
của chương trình con được gọi
Bộ xử lý được chuyển sang thực hiện
chương trình con tương ứng
Trang 87g Các lệnh điều khiển hệ thống
HALT: Dừng thực hiện chương trình
WAIT: Tạm dừng thực hiện chương trình, lặp kiểm
tra điều kiện cho đến khi thoả mãn thì tiếp tục thực
hiện
NO OPERATION: Không thực hiện gì cả
LOCK: Cấm không cho xin chuyển nhượng bus
UNLOCK: Cho phép xin chuyển nhượng bus
Trang 88Bài tập về nhà
Tìm hiểu tập lệnh của vi xử lý Intel x86
Tài liệu tham khảo:
Chapter 10, Stallings, William Computer organization and architecture: designing for performance 2010, 8th edition
Trang 903 Các phương pháp định địa chỉ
Phương pháp định địa chỉ: là cách thức
địa chỉ hóa trong trường địa chỉ của lệnh
để xác định nơi chứa toán hạng
Toán hạng của lệnh có thể nằm ở đâu?
Một giá trị cụ thể nằm ngay trong lệnh
Nội dung của thanh ghi phải cho biết tên
của thanh ghi
Trang 91Đánh địa chỉ cho bộ nhớ
Địa chỉ vật lý của ô nhớ:
được đánh địa chỉ theo thứ tự tăng
dần bắt đầu từ 0 tới 2n - 1 (địa chỉ
vật lý)
Địa chỉ logic của ô nhớ:
(Segment)
0 1 2 3 4 5 6 7 8 9
2 n - 1
Trang 92Đánh địa chỉ cho bộ nhớ (tiếp)
Ô nhớ cơ sở
Ô nhớ cần truy cập
Ô nhớ đầu tiên- địa chỉ đoạn (segment) được cất trong thanh ghi đoạn
Trang 94Bộ nhớ CPU Intel 8086
Không gian địa chỉ vật lý (A19-A0): 00000H FFFFFH (1MB)
Địa chỉ logic gồm hai thành phần:
Trang 95Bộ nhớ CPU Intel 8086 (tiếp)
Trang 97Kết quả 12A62H 12A62H
Trang 98Nhận xét
Một địa chỉ vật lý có thể được xác định thông qua nhiều địa chỉ logic khác nhau
Nhưng với mỗi địa chỉ logic duy nhất chỉ xác định được 1 địa chỉ vật lý