96
Chương 4
BỘ XỬ L TRUNG TÂM CPU
Cu trúc, chức năng của b x trung tâm CPU. Giúp sinh viên nm vng kiến
thc v các thanh ghi, đơn vị s hc và logic, đơn vị điều khin nm bên trong b x lý.
B điều khin to ra s vn chuyn tín hiu bên trong b xnhm thc hin tp
lệnh tương ng vi kiến trúc phn mềm đã đề ra. Mô t din tiến thi hành mt lnh mã
máy, đây là cơ s để hiểu được các hot đng x lý lnh trong máy tính.
Cu trúc ca b xtrung tâm din tiến thi hành mt lệnh máy, đây là
sở để hiểu được các hoạt động x lnh trong các k thut x thông tin trong
máy tính.
Ngôn ng lp trình Assebly bng phn mm Emu8086
4.1. BỘ XỬ L TRUNG TÂM
Trang b cho sinh viên kiến thc v cu trúc, chức năng của b x trung tâm
CPU. Giúp sinh viên nm vng kiến thc v cc thanh ghi, đơn v s học v logic, đơn
v điều khin nm bên trong b x lý.
4.1.1. Cu trúc, chức năng của bộ xử lý
4.1.1.1. Chức năng của bộ xử lý
B x trung m CPU ct lõi ca mt máy vi nh. CPU thc hin mi tính
toán x ca h thng (ngoi tr x tăng cường tnh ton đặc bit trong nhng
h thng có một chip đơn vị đồng x ton, m chip ny cũng đã đưc tích hp ngay
trong các CPU hin nay).
Mt trong nhng b x điển hình thuc h 80x86 ca Intel b x 8088.
Đây l bộ x kh đơn giản. vy vic tìm hiểu l ơng đối d đối vi nhng
người bắt đầu thâm nhập vo lĩnh vc vi x lý, mt khác vic nm vng các vn đề k
thut ca b vi x 8088 s l sở để nm bắt được các k thut ca các b x
khác trong h 80x86 ca Intel, ca các h khác và ca các b x lý hin đại ngày nay.
4.1.1.2. Cấu trúc của bộ vi xử lý
CPU có 3 b phn chính:
- Khối điều khin (CU): Nhn lnh của chương trình từ b nh trong đưa vo CPU.
nhim v gii các lnh, to ra các tín hiu điu khin ng vic ca các b
phn khác ca máy tính theo yêu cầu ngưi s dng.
- Khi tính toán s hc logic (ALU): Bao gm các thiết b thc hin các phép
toán s hc, phép tính logic và các tính quan h. Độ dài ca các toán hạng được đưa vo
tính toán trc tiếp khi ALU. Đ dài ph biến vi các máy tính hin nay là 32 hay 64
bit. - Tp các thanh ghi: Các thanh ghi mang chức năng chuyên dụng tăng tốc độ trao
đổi thông tin trong máy tính.
4.1.2. Các thanh ghi
4.1.2.1. Các thanh ghi đa năng (general registers)
Có nhim v ghi tham s cho mã lnh, đây cũng l nơi lnh tr kết qu v sau khi
được thc hin. Những thanh ghi đa năng ca vi x lý 16 bit là [6,7]:
- AX (accumulator) rộng 16 bit, đưc chia làm hai phn: 1 byte cao AH và 1 byte
thp AL. Đây l thanh ghi quan trọng nht v chuyên được dùng để cha kết qu các
thao tác lnh. C ba cách viết AX, AH, AL đều có th s dụng như nững thanh ghi riêng
bit.
97
- BX (base) thanh ghi cơ s, rộng 16 bit, cũng đưc chia ra lm BH v BL. Đây l
thanh ghi thưng dùng chứa địa ch sở ca mt bng dùng trong lnh XLAT. C ba
cách viết BX, BH, BL đều có th s dụng như những thanh ghi riêng bit.
- CX (count) b đếm, rộng 16 bit. Được chia ra lm CH v CL. Thanh ghi CX đưc
dùng để ch s ln lặp trong trường hp các lnh LOOP. Thanh ghi thp CL được dùng
để cha (nh) s ln quay hoc dch ca các lnh quay (rotate) và dch (shift).
- DX (data) thanh ghi d liu, rng 16 bit. Thanh ghi này cùng thanh ghi AX tham
gia vào các thao tác ca phép nhân hoc chia các s 16 bit. DX còn dùng đ chứa địa
ch 16 bit ca các cng cng (di hơn 8 bit) trong cc lnh truy nhp các cng ngoi vi
(I/O port).
4.1.2.2. Các thanh ghi đoạn (segment registers)
Cc thanh ghi đoạn dùng để ghi đa ch một đoạn b nh. Vi mch 8088/8086
20 đường dây trên bus địa ch. Do các thanh ghi con tr, thanh ghi ch s ch rng 16 bit
nên không th định địa ch cho toàn b nh vt ca y tính (220 = 1.048.576 =
1Mbyte). vy trong chế độ thc (real mode) b nh được chia m nhiu đoạn để mt
thanh ghi con tr 16 bit có th quản lý được. Cc thanh ghi đoạn 16 bit s ch ra đa ch
đầu của 4 đoạn trong b nhớ, dung lượng ln nht ca mỗi đoạn nh s dài 216 = 64
Kbyte ti mt thời điểm nht định b vi x ch làm vic đưc với 4 đoạn nh
64Kbyte này. Vic thay đổi giá tr ca cc thanh ghi đoạn lm cho cc đoạn có th dch
chuyn linh hot trong không gian 1 Mbyte, vy cc đoạn th nm cách nhau khi
thông tin cần lưu trong chng đòi hỏi dung lượng đủ 64 Kbyte hoặc cũng thể nm
trùm nhau do những đoạn không dùng hết độ dài 64 Kbyte thế cc đoạn khác
th bắt đầu ni tiếp ngay sau đó. Đa ch ca ô nh nm đầu đoạn được ghi trong
một thanh ghi đoạn 16 bit, đa chy giđịa ch cơ sở. Mười su bit ny tương ng
với cc đường dây địa ch t A4 đến A20. Như vậy giá tr vt lý của địa ch đoạn là giá
tr trong thanh ghi đoạn dch sang trái 4 v trí. Điều ny tương đương với phép nhân vi
24 = 16. Địa ch ca các ô nh khác nằm trong đoạn tnh được bng ch cng thêm vào
địa ch sở mt giá tr gọi l đa ch lch hay độ lch (offset), gọi như thế ng
vi khong lch ca to độ mt ô nh c th no đó so với ô đầu đoạn. Độ lch ny đưc
xc định bởi cc thanh ghi 16 bit khc đóng vai trò thanh ghi lch (offset register).
Nguyên tc này dẫn đến công thức tnh đa ch vt lý (physical address) t địa ch đoạn
(segment) trong thanh ghi đoạn v địa ch lch (offset) trong thanh ghi con tr như sau:
Vic dùng hai thanh ghi để nh thông tin v địa ch thc cht to ra mt loại địa
ch gi l đa ch logic v được ký hiu như sau:
Thanh ghi đon: Thanh ghi lch hay segment:offset.
Địa ch kiu segment: offset logic tn tại i dng giá tr ca các thanh
ghi c th bên trong CPU và khi cn thiết truy nhp ô nh no đó thì nó phải đổi ra địa
ch vật đ rồi đưa lên bus đa ch. Vic chuyển đi y do mt b tạo địa ch thc
hin. Vi x lý 16 bit có 4 thanh ghi đoạn như sau:
- CS (code segment) l thanh ghi đoạn mã 16 bit. Thanh ghi này phi hp vi con
tr lnh IP để ghi đa ch mã lnh trong b nhớ. Địa ch đầy đủ là CS:IP.
- DS (data segment) l thanh ghi đon 16 bit cho mt đon d liu. Thanh ghi này
phi hp vi hai thanh ghi ch s SI v DI để đnh đa ch cho d liu. Địa ch đầy đủ
cho d liu cần đọc vào là DS:SI, cho d liu cn ghi ra là DS:DI.
Địa ch vật lý = Thanh ghi đoạn x 16 + Thanh ghi lch
98
- SS (stack segment) l thanh ghi đoạn 16 bit cho một ngăn xếp. Địa ch đỉnh ca
ngăn xếp được biu din cùng vi con tr ngăn xếp SP là SS:SP.
- ES (extra segment) thanh ghi d liu ph chiều di 16 bit. Thường đưc
dùng để đnh địa ch mt chuỗi. ES:DI l địa ch chui cn viết đến (chuỗi đch) v
DS:SI l đa ch chuỗi đọc vào (chui ngun).
4.1.2.3. Các thanh ghi con trỏ và chỉ số
Các thanh ghi con tr ch s th được dùng như một thanh ghi đa năng 16
bit. Vi mch 8088tt c ba thanh ghi con tr là (IP, BP, SP) và hai thanh ghi ch s
(SI, DI). Nhim v ca từng thanh ghi như sau:
- IP (instruction pointer) là con tr ch ti lnh máy tiếp theo. Lnh này nm trong
nh mđịa ch đoạn được ghi trong CS. Như vậy địa ch ca k=lnh này CS:IP.
- BP (base pointer) là con tr cơ sở tr v d liu b nh m địa ch đoạn được ghi
trong SS. Đa ch đầy đủ s là SS:BP.
- SP (stack pointer) con tr ngăn xếp luôn tr vo đỉnh ngăn xếp m địa ch đoạn
được ghi trong SS. Đa ch đầy đủ ca d liu là DS:SP.
- SI (source index)ch s ngun, tr vào d liu m địa ch đoạn được ghi trong
DS. Địa ch đầy đủ ca d liu là DS:SI.
- DI (destination index) ch s đch, cũng trỏ vo đoạn d liu m địa ch đoạn
ghi trong DS. Địa ch đầy đủ của đoạn d liu là DS:SI.
4.1.2.4. Thanh ghi cờ FR (flag register)
Đây l thanh ghi kh đc bit trong CPU, dùng đ ghi trng thái kết qu các phép
x trong đơn vị s hc và logic ALU hoc mt trng thái hoạt động ca EU. Da vào
các c ny người lp trình th c lnh thích hp tiếp theo cho b vi x (các
lnh nhảy có điều kin). Thanh ghi này là một thanh ghi 16 bit trong 8088/8086. Nhưng
ch có 9 bit trong thanh ghi đưc định nghĩa v s dng [2], đó l:
x
x
x
x
O
D
I
T
S
Z
x
A
x
P
x
C
x: bit không được định nghĩa.
Hình 4-1. Sơ đồ thanh ghi c ca b vi x lý 8086/8088
- Bit 0: CF (carry flag) c nh, CF=1 khi có nh hoặc mượn t MSB.
- Bit 2: PF (parity flag) c parity, PF phn nh tính chn (parity) ca tng s bit 1
trong kết qu. C PF =1 khi tng s bit 1 trong kết qu chn (even parity, parity
chn).
- Bit 4: AF (auxliary carry flag) c nh phng cho các phép tính vi mã BCD.
AF = 1 khi có nh hoặc mượn t mt s BCD thp (4 bit thp) sang mt s BCD cao (4
bit cao).
- Bit 6: ZF (zero flag) c rng, ZF = 1 khi kết qu bng 0.
- Bit 7: SF (sing flag) c du, SF = 1 khi kết qu âm.
- Bit 8: TF (trap flag) c by, TF = 1 khi vi x trong chế độ chy tng lnh
(chế độ này dùng khi cn tìm li trong một chương trình).
- Bit 9: IF (interrupt enable flag) c cho phép ngt, IF = 1 cho phép các yêu cu
ngt che được (maskable interrupt) được tc đng.
- Bit A: DF (direction flag) c ng. DF = 1 khi CPU làm vic vi chui t
theo th t t phi sang trái (lùi).
- Bit B: OF (overflow) c tràn, OF =1 khi kết qu t ra ngoài gii hn, xy ra
đối vi phép tính có du.
99
4.1.3. Đơn vị số học v Logic
Đơn vị s hc và logic (Arithmetic and Logic Unit - ALU) thc hin các phép toán
s hc logic trên c d liu c th. ALU bao gm các thiết b thc hin các phép
tính s hc các phép tính logic. Thông thường cc phép tnh bản được thc hin
đây như: cộng, tr (các s nh phân) hai toán hng; các phép ton logic như AND, OR,
NOR, NOT hai toán hạng; cc phép ton đo, quay, dch các bít ... Mt khác chc năng
ca ALU còn bao gm c vic quyết định các trình t thao tc đối vi h thng, nó hình
thành qun toàn b các tín hiu điều khiển để xp xếp hp lý các phép toán
dòng d liu bên trong cũng như bên ngoi ALU, nó điu khin dòng d liu ca BUS
địa ch, BUS d liu, qun biên dch các tín hiu điều khiển trên BUS điu khin
ca h thng.
4.1.4. Đơn vị điều khiển
Chc năng:
- Điu khin nhn lnh t b nh đưa vo thanh ghi lnh.
- Tăng ni dung ca PC để tr sang lnh kế tiếp.
- Gii mã lnh đã nhận được và thao tác vi lnh yêu cu.
- Phát ra các tín hiu điều khin thc hin lnh.
- Nhn các tín hiu t BUS h thống v đp ứng các yêu cầu đó.
- Đơn vị điu khin to ra các thao tác xy ra trong CPU.
Đơn vị điều khin thc hin hai thao tác chính sau:
S sp xếp chuỗi (Sequencing): Đơn vị điu khin CPU sp xếp chui vi thao tác
vào mt chui liên tc thích hp, da trên chương trình đang được thc hin.
S thi hnh (Execution): Đơn v điều khin mỗi vi thao tc đưc thc hin. Đơn vị
điều khin thao tác da vào vic s dng các tín hiu điều khin.
4.1.4.1. Tín hiệu điều khiển
Đối với đơn vị điều khiển để thc hin được chc năng ca nó, nó phi có d liu
v cho phép xc định trng thái ca h thng mục ra cho phép điu khin c
động ca h thng. Ni tại, đơn vị điều khin phi có logic yêu cu thc hin chui vi
thao tác và thi hành các chc năng.
100
Hình 4-2. Mô hình kết nối đơn vị điu khin
Tín hiu điều khiển được th hin trong hình trên bao gm tín hiu vào và tín hiu
ra. a) Các tín hiu vào
- Clock: Đây l cch đơn vị điều khin gi thời gian. Đơn vị điều khin to ra mt
vi thao tác (hoc mt tập cc thao tc đồng thi) đưc thc hin vi mi xung đng h.
- Thanh ghi ch lnh: Đưc dùng đ xc định vi thao tc no đưc thc hin trong
chu k thi hành.
- C: Xc đnh trng thái ca CPU và kết qu ca thao tác ALU.
- Các tín hiu điều khin t BUS điu khin: BUS điu khin ca BUS h thng
cung cp tín hiu cho đơn vị điều khiển, như l tn hiu ngt và sng nhn.
b) Các tín hiu ra
- Tín hiệu điều khiển trong CPU: Khiến dữ liu di chuyển từ một thanh ghi tới cc
thanh ghi khc v lm hoạt động cc chức năng ALU cụ thể.
- Cc tn hiu điều khiển BUS: Có tn hiu điều khiển bộ nhớ v tn hiu điều khiển
module vào ra.
4.1.4.2. Đơn vị điều khiển vi chương trình
Để thực hin một lnh, đơn vlogic tuần tự đưa ra một lnh đọc tới bộ nhớ điều
khiển.
- Từ địa chỉ được xc định trong thanh ghi địa chỉ điều khiển được đọc vo
thanh ghi bộ đm điều khiển.
- Nội dung của thanh ghi bộ đm điều khiển pht ra tn hiu điều khiển v thông
tin địa chỉ tiếp theo cho đơn vị logic tuần tự.
- Đơn vlogic tuần tự tải địa chỉ mới vo trong thanh ghi địa chỉ điều khiển dựa
vo thông tin địa chỉ tiếp theo từ thanh ghi bộ đm điều khiển v cc cờ ALU.
Tt cả xảy ra trong một xung đồng hồ.