1. Trang chủ
  2. » Luận Văn - Báo Cáo

Giáo trình Kiến trúc máy tính: Phần 2

81 3 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giáo Trình Kiến Trúc Máy Tính: Phần 2
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Kiến Trúc Máy Tính
Thể loại giáo trình
Định dạng
Số trang 81
Dung lượng 32,25 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong cấp máu vi chương trình, để thực hiện các lệnh nà, thưởng các cđơn vị trong bộ xử lí phải dịch chúng ra thành các lệnh vĩ mơ, đĩ là một số hạn chế các thao tác đơn gi nhất cĩ thể đ

Trang 1

Tạp lệnh máy mà hãng sẵn xuất bộ xử lí trao cho người đùng thực ra chỉ là các

lạnh mô Trong cấp máu vi chương trình, để thực hiện các lệnh nà, thưởng các

cđơn vị trong bộ xử lí phải dịch chúng ra thành các lệnh vĩ mô, đó là một số hạn

chế các thao tác đơn gi nhất có thể được thực hiện trực tiếp bởi phản cứng lóc:

“số Công tới các thanh ghi, đơn vị điều khiển CŨ là thành phần quen 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 các lệnh máy bên

trong bộ xử lí bớt đơn vị điểu khiển, bộ nhớ và các thanh ghỉ được thực hiện qua

"ngôn ngữ truyền thành ghỉ RTL, Đơn vị điều khiển CŨ cô thể được thiết ke theo

một trong bai cách

= on vị điều khiển được ví chương tình hoá, trong 46 các lạnh mấy phức tạp

.được dịch thành các í chương rnh Vì chương trình bao gồm một 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 các mạch điện löqc số

Rõ rồng quá trình thự biện một lệnh máy loại này phổi mất một khoảng thời gian

cải mã lệnh,

~ Đơn vị điều khiển löglc ngẫu nhiên, trong đó bộ xử l được thết kế sao cho các

mạch logic số có thể “hiểu và thực hiện được ngay một số nh máy không qua

~ Loại có tập lệnh được rút gọn RISC, tong đó bộ xử lí được thiết kế để có thể thực hiện được ngay một số lệnh có cấu trúc đơn giản hơn, hay được dùng nhất không qua gi mẽ vi lệnh thường cỡ 2000 lnh)

CCác tí xử í như 80486 hay Pentium déu sit dung mot céch nh hoạt cả bai loại kiến trúc bộ xử I này, trong đó có tăng cường các kĩ thuật tiên tiến như lỡ thuật đường ống, siêu đường ống, ng cường số thanh gh và bộ nhớ cache nội

8.1 THỰC HIỆN LỆNH MAY BEN TRONG BỘ XỬ LÍ

6.1.1 Các quá

thực hiện lệnh,

“Ta sẽ khảo vất chỉ tiết hơn cách thức lầm việc của các đơn vị bên trong bộ

Xử lí Nhắc lạ rằng bộ xử í thực hiện một lệnh theo chuỗi các bước như sau

mì-nạp lệnh từ bộ nhớ vào thanh ghỉ lệnh Chuyển thanh ghỉ con trỏ lệnh IP tỏ tối lệnh tếp theo

Xác định loại lệnh vừa nạp

`Nếu lệnh sử đụng đữ liệu trong bộ

‘Tim và nạp dữ iệu vào các thanh ghỉ bèn trong bộ xử í (nến có)

163

Trang 2

Trở lạ bước 1 để bắt đầu thục hiện lệnh kế tiếp

Hổ Ha

ws lee ba go sue enh le, 903 or Ean PH

C6 thé quy ước một cáchviết Cletus nn

để biểu diễn quá trình truyền đình 6.†- Các đường địa chỉ còn

thông tin đó ¡ gi là sgón ngữ *“y MP Ván ĐA

“Thí dụ : [MAR] © (PC| có nghĩa là truyền (sao chép, copy) nội dung cia

thanh ghỉ đếm chương trình vào thanh ghi địa chỉ nhớ MAR, lưu ý rằng trong

cquá trình này nội dung của thanh ghi PC không thay đổi

[PC] < [PC] + 1 cổ nghĩa là : tăng noi dung cia PC en 1

IMS(20)] «- [PC] có nghĩa là : sao chếp nội dung của PC vào vùng nhớ 20

trong bộ nhớ chính

4) Ouá trình đọc lệnh : Nội đung thanh ghỉ đếm chương trinh PC (Program

'Counler) chính là địa chỉ của lệnh kế tiếp Để chạy một lễnh, đấu tiên tội

dụng cia thank ghi này được chuyển vào thanh ghỉ địa chỉ nhớ MAR (tức là

[MAR) «—|PC|) Khi truyền xong, nội dụng của PC tự động tăng lên 1

IPC] ©— [PC] + 1) Thanh ghi địa chỉ nhớ MAR chứa địa chỉ của mot vùng

trong bộ nhớ chính MS, ở đó số liệu được đọc/tiế Tiếp đó khi thực hiện chu

trình đọc, mã lệnh cần thực hiện sẽ được đọc từ bộ nhớ và truyền tới thanh ghỉ

đệm nhớ MBR ([MBR]—-[MS[MAR])) Thanh ghỉ MBR là nơi lưu giữ tam thời

các lệnh và dữ liệu nhận được từ bộ nh trong chu kì đọc hoặc số liệu được

ruyền từ bộ xử trong chu ki viết

"rường toán hạng chứa địa chỉ của số liêu được dùng trong khi thực hiện lệnh Đôi khi trường toán hạng được bỏ đi vi khong phải tất cả các mã thao tác cẩn

dữ liệu ở một vùng nào đố trong bộ nhớ Các lệnh dang được mõ tả này thuộc lớp các lệnh một địa chỉ Nếu lệnh cân hai dữ liệu, ta có lệnh hai địa chỉ, v.v Dom vị điều khiển CŨ lấy mã thao tá từ IR cùng với một dòng các xung nhịp đồng hổ và phát ra các tín hiệu điều khiển tí cả các phần của bộ xử lí 'Đơn vị điều khiển cổ trách nhiệm chuyển các nội dung của bộ đếm chương trình vio MAR, thực hiện một chu kì đọc và chuyển các nội dung cia MBR tới,

“Chuỗi các hoạt động kể trên, trong đó lệnh kế tiếp được chuyển từ bộ nhớ: tới thanh ghỉ lệnh được gọi là giai đoạm từn-nạp lệnh (fetch phase) Trong giai

Tênh được đọc từ bộ nhớ và được giải mã bởi đơn vị điều khiển Giai đoạn tìm nạp lệnh được tiếp nối bởi giai đoạn thực thị lệnh trong đó đơn vị CCU phát ra tất củ các tín hiệu cấn thiết để thực hiện lệnh Đơn vị điều khiển CÚ là phần phức tạp nhất của bộ xử lí Dưới đây liệt kế chuối các lạnh xảy ra trong giai đoạn tìm—nạp lệnh, trong đó FETCH là nhãn nơi bắt đầu

“một chu kì tìm-nạp lệnh, IR(op-code) có nghĩa là tường mã thảo tác của

CU © [IR(op-code)) 1) Đường số liệu trong bộ xử lỉ

‘Tuy theo loại bộ xử lí mà ta cố loại lnh 1 địa chỉ lênh 2 địa chỉ lệnh 3 hoặc 4 địa chỉ Hình 6.2 à sơ đổ bộ xử lí kể trên được thêm vào các đường số

165

Trang 3

Hậu để xế Mong giai đoạn tực tỉ — [ĐỆ mm

len, Hình ày ứng xố lo lạnh dịc I

chị, Họng đổ ta thêm vào một thình hi $6 ligu DO va dom vi tinh số học = tam

I Thanh ghỉ số liêu gilt ede Ket quit mara :

trùng gian và tạm thôi rong qué tinh Cae) |

tính toán Thanh ghỉ số iệu cần thiết ren guy

trong các máy tính loại | dia chi 1 ce = T

thuậ toán (hí đụ, +, =, °,/) xảy nến — TẾ Ÿ lột toán hạng được phân biệt bối lệnh =e eae

uy một trong các loán hạng bạn đâu Thanh ghi số lệu này còn được gọi là

thank gh seh lg (accumulator

“Thí dụ nếu ta cộng các nội dụng của vùng nhớ 1234 tới thanh ghi tích lu,

xổ liệu trong thanh ghỉ sẽ được thay thể bởi các nội đung trước của nó cộng với

nổi đung của vùng 1334 được cho bổi lệnh

[ALU thye hiện tất cả các phép tính lögic và số học Các toán tử lðgic và số

học được áp lên nội dung của thanh ghi tich luÿ hoặc cia MBR Lối ra của

ALU được quay ngược lại tới các thánh ghỉ này

cho các vùng chứa các biến ưong bộ nhớ

MOY DO Q : nap thanh ght D0 nội dung của vùng nhớ Q

ADD DO R : cộng nội dung của vùng nhớ R vào thanh ghỉ D0

MOV P, DO: cit noi dung thanh ghi DO vio ving P

Cổ một chuối các hoạt động được thực hiện trong các giai doan tim-nap vi

thực hiện lệnh của lệnh ADD D0,R Các hoạt động này nổi cho ta biết những gì

đang thực xự xảy ra trong bộ xử lí, Hai thảo tác được biểu thị wong cùng |

dõng được chạy đồng thời Các thao tác Hong dạng như [PC] <-[MAR] hoặc

{DO} ©— [DI]s{MARJ thường duge gin cho ten I ec v uh (micro-instructions)

Một lệnh ở mức lợp ngữ (hí đụ, MOV, ADD đuợc thực hiện bằng một chuối

vi lệnh Nồi chung, ví lệnh và vỉ cương rình là thuộc lĩnh vực quan tâm của

“ác nhà thiết kế máy lính, chúng là những hợp phần bên trong tạo nên bộ xử lí Sau đây là hoạt động của đơn vị điều khiển nhìn heo các vi lệnh

Ferch [MAR].C FC] chuyển nội dung PC tối MAR

(PC) < [PC] +1 tang noi dung PCIe | IMBR] © [MSMARD] đọc từ bộ nhớ chính UR] © (MBR] chuyée noi dung MOR tố

CU © [IR(op-code}] chuyén op-code tc 161 CU ADD [MAR] « [IR(addres9] chuyển địa chỉ toán hạng i MAR

(MBR] <- [MS([MAR))] đọc số liệu ALU _ [MBR], ALU <- [D0] thực hiện phí

cộng (DĐ < ALU chuyển lối ra ALU tới thành ghỉ số liệu

DE có cơ chế chọn lựa hoặc lạp lại một nhôn lệnh, bộ xử lí phải có khả năng chạy chương trình cổ lệnh nhảy (rẻ - s>2 ve) Pu nhánh) tuyệt đối hoc lệnh nhảy cổ điều

Xiện Lệnh nhủy là một lệnh buộc bộ xứ

Ii chay một lệnh nằm ngoài chuổi lệnh hình thưởng, Nhảy có điểu kien cho giếp to các cấu uúc IF THEN ELSE

S%9 đồ khối ình 6 chỉ ra các đường địa chỉ và số liệu mối được thêm vào bộ xử

148 thực hiện các nh nhảy, đây có thêm 3 phần từ : mạch lật nhớ với bịt CN

fC (Gy Flip Pop) hah ging “Em THÊ

thấi BO xu PSR (processor status inh 3.cae deg hg tn wong register) và một đường nối giữa tường CPU sacked ie hc Uy địa chỉ của thánh ghỉ lệnh va bp dém Cm phe wong ‘nor in ae ts eg han gh PSR

Trang 4

MHoạt động của mạch lặt nhớ như sau + bất cứ khi nào, thí dụ phếp công

hoặc trừ được thực hiện, kết quả sẽ đi tới thanh ghỉ tích luỹ va bit nhớ (hoặc,

tượn) được lưu trữ rong, mach lat nh

“Thí dụ, cộng 00900100 + 00000001 cho tổng 00000101 và bìt nhớ C = 0

trong khi tổng 1000110 + 100001110 cho kết quả 00010100 và bịt nhớ C =

“Tương tự nếu nội dung của thanh ghỉ số liệu được dịch tri (hoặc phai) mot bit,

Địt đồ sẽ "tàn” rà ngoài và được truyền tới mạch lạt nhs Vi I do như vậy, bì

thổ có thể được coi như là một bịt mở sộng của thanh phỉ số liệu Sau khi bộ xử lí hực hiện một thuật toán lôsic và võ học, nồ cập nhật các bit của thanh ghỉ

trạng thái PSR để phản ánh bản chất của kết quả Các bi của PSR là

.C : bít nhớ, được đặt nếu nhớ được sinh ra trong phép oán cuối cùng Dĩ

nhiên bit Ceding giöng như bịt nhớ trong mạch lạt nhớ,

“2: bù sê-vô được đặt nếu phép toán cuối cùng cổ kết quả bằng 0

N ¿ bít đấu âm được đặt nếu kết quả cí

trong mã bù hai tốc là MSB = 1)

`V ¡bịt tràn được đạt nếu phép toán cuối cùng tràn sổ, Đó là khi phép toán

tiền một hoặc hư số bù bai cho kết quả ngoài đãi chơ phép,

phếp toán cuối cùng mang đầu âm

Đăng sau cho vi du vé tie dung cua phép cộng bai số tới nội dung của PSR

_ Teân hạng 1! oán hạng 2= hốt quả [Cae Bit trang thai cla nan |

PSR duce nối tới đơn vị điều khiến CÚ cho phép một số loại lệnh nhất

<dinh thảm đò thanh ghí này Thí đụ các lệnh kiểm ta liệu phép toán cuối cùng

được thực hiện bởi bọ xử lí sinh ra kết quả đương hay không hoặc có xảy rà

trần số hay bịt nhớ có được đặt hay không Ở đây cần một cơ cẩu cho phếp làm,

một việc gì đố nếu kết quả của phép thir ding (true) và làm việc khác nến

kết quá là xá (ae) Sự cái tiến cuối cùng trong bình 6.3 so với hình 6.2 là

việc thêm vào các đường giữa trường địa chỉ của thanh ghỉ lệnh và bộ đếm

chươn Điều này cho phép máy tính dấp ứng lại được với kết quả thăm)

.4) Toán hạng tức thôi Đối khí cẩn có các phép toán mà toán hàng là các giá tị xố nào đó Thí {dy lệnh cộng sổ 12h vào nội dung than:

ghi tích luỹ DO thí dụ ADD D0.I2h Lúc này toán hạng là một con số thực sự được sử dụng bot ma thao tie ADD

Hình 6.4 chi ra mot đường số liệu bổ sung (được tô đậm) giữa trường toán hạng của thành ghỉ IR và ALU đành cho mục đích này

e) Kiến trác của mặt ví xử lí

kiến trúc mấy tính đã được cải tiến bối các tiến bộ về mặt công nghệ nhiều hơn, Là về khoá học máy tinh và lập tình, Sự phát triển nhanh chồng của công, vật liệu bản dân đã tạo ra các bộ xử í có độ ròng từ dữ liệu ngày càng lớn tối 32 và 64 bút và có thêm nhiễu thanh ghi rong đó Các bộ xử lí điển bình với nhiều buy và một đây các thanh ghỉ được xuất hiện Nó cũng có các thánh phỉ điều khiển giống như bộ xứ lí giả định kể trên (PC, MAR, MDR, IR) nhưng sự thay đổi chính là sự hiện điện của nhiều thanh gỉ số iệu và thanh ghỉ địa chỉ

`Với các thanh ghỉ có độ rộng từ dữ liệu 16 bịt xẽ cho phép một định dạng lệnh khác với định dạng một địa chỉ được mô tả rước đây Để thâm nhập cúc thanh

hi niy ta edn e6 dinh dang lệnh hui địa chỉ, Do đồ một lệnh lúc này gồm có 3 trường : mã thao tác, địa chỉ toán hạng và địa chỉ thanh ghí

Thanh ghi oan hang dich | Địa chỉtoản hạng ngu

Trang 5

Lệnh MOV [1234) DX

[a thao tae | Bla caltodn hang dich | Thanh gh ton hang nguén

Thay vì chỉ có một thanh gh tích luỹ như ở bộ xử í giá định xét trên, việc

xuải hiện nhiều thanh ghi s6 iệu cho phép bộ xử lí thực tế ẽ cổ hiệu suất tính

toán manh hơn Khi có nhiều thanh ghỉ sở liệu người lập trình có th lưa trữ tổng giấ tị xố iệu thường dng wong ede than shi ny’ ten chip xi lí th sẽ

cho phép tính toán nhanh hơn so với kh lưu tữ chung trong bộ nhớ chính Thí

dụ lệnh công nội dụng 2 thanh ghỉ sẽ không cần đời hỏi một chư kì quy chiếu

bộ nhớ nào củ Lúc này chỉ cổ khó với người lập trình là phải chọn lh

nào giữ biến nào May mắn là trong hấu hết các chương trình được viết trong,

ngôn ngữ bậc cao điều này đã được các trình biên dịch sắp đật tự động cả Sự

xuất hiện thêm nhiều thanh ghỉ địa chỉ cho php lưu giữ địa chỉ của các toán

hạng được thâm nhập trong bộ nhớ Nhiều vi xử lí lưu trữ lệnh trong hơn mội từ

nhớ, mã thảo tác chia trong mot te va dja chi cia ede Loan hạng trong các tử

siu §ự sắp xếp này cho phép sử dụng bộ nhớ một ích hiệu quả nhưng

chương tình sẽ chay hơi chậm vì có nhiều hơn một từ nhớ cần được thàm nhập trong một chủ kì đọc lệnh Hoạt động này sẽ cố thể được tăng tốc bằng cách

"ru tiên nạp toán hạng (mà thực chất là các địa chỉ của đữ liệu) vào thanh phì

địt chỉ, ổi sử dung các lệnh phân biết vùng của toán hạng trong nội đụng

thanh ghi địt chỉ Một khi đã mạp địa chỉ của toán hạng vào thanh ghỉ địa chỉ

tồi thì không phải quan tâm đến nó nữa Lúc đồ có thể thảm nhập toán hạng

4qus thank ghi địa chỉ (c6 nghĩa rằng ta cổ thể đùng lệnh một từ để (hâm nhập

toán hạng như với lệnh hai tờ), Thí đụ lệnh ADD D0, [A1] có nghĩa là cộng

cội dụng vùng nhớ được chỉ bởi thanh ghỉ địa chỉ AI với nội đụng của thanh

ghi số iệu D0, Trong ngòn ngữ thanh ghi RTI, có

[Do} {D0} + [MS LA) )1 Lưu ý rằng ta viết [A1] chứ không phải là A1 để ngụ ý rằng toán hạng

không phải là nối dung của AI mã là nội đung của vùng nhớ có địa chỉ là nội

dùng của AI

Một ứng dựng khác của thanh ghi địa chỉ là trong việc tính toần đông các

địa chỉ của máy ính Vì có thể ấp một phép toán sở vào nội dung của thanh ghỉ

địa chỉ nên cổ thể ãm việc với các địa chỉ có th biến đổi Phép tính các địa chỉ

trong thời gian chạy cho phếp người lập trình có thế hoại đông trên các cầu trúc

tap nhất trong bộ xử lí Hãy ”°

Khảo ví xơ lược hoạ động gia đơn v này và cính nỗ cho phếp bộ xử lí tực hiện Ảnh hiện ti ong các thủ

hi len Hình 65 1m bin của mới bộ xử lí đơn gi được dũng để mình hoạ cho “cơ hoại động của đơn vị điện khiển CÚ Cổ hú cách tiếp căn Khác nhau để tiết kỆ tmột CŨ Cích thứ nhất nến một CŨ tự nó là một máy „6122 sec

đổi mỗi nh máy thành một de shuổi các lệnh sơ khi gọi là ví lệnh, Cách tiếp cận khúc à

lầm rà chuỗi các phếp toán "xa lögie và số học ci thi eho Habe ee ial nea ep việc thực ign mat ah i

{hE ké mach loge thich hap để thực iện ác chối này

“được gọi là các nh vŸ mở (maeto-instruction) Mỗi lệnh vĩ mô được dich boi một xố các hoạt động rất sơ đẳng (primidixe) được gọi là các lệnh ví mở bay Lent (microinstruction) Néi cach Khác có một ngôn ngữ thậm chí còn sơ đảng hơn lệnh máy Một vỉ lệnh là một sự kiện nhỏ nhất xảy ra bên tong máy tính và có thể bao gồm việc lật trạng thất một mạch lật hoặc chuyển sổ liêu từ

“một thanh ghỉ này tới thanh ghi khác, Quả trình xử í một lệnh vĩ mô bằng cách thực hiện một chuối các ỉ lệnh được god li dich leh

CCấu trúc bên trong của bộ xử lí hình 6.5 này cổ khác với các cẩu trúc trên các hình trước khi mô tá chủ tình lệnh Cán trúc lức này bao gồm một cơ chế

Trang 6

tình cho phép các loống thông in được chuyển dịch rong bộ xử lí Mỗi một

ghỉ (bộ đếm chương trình, MAR các thanh ghi số liệu v.Y ) được tạo bởi mach lật D Sau mỗi nhịp đồng hồ, số liều từ lồi vào sẽ dược chốt tới lối ra cửa

các [p-fiop này và giữ lại ở đồ đến khi xuất hiện xung nhịp sau Một bus dữ

liệu cao tốc m-bit ni các thanh ghi với nhau Giá sử ta muốn máy tính thực

hiện một chu kì lệnh với mã thao tác cộng nội đụng vùng nhớ có địa chỉ xác

định với nội dung thanh ghỉ tích luỹ D0 ồi đặt kết quả vào D0

ADD D0 địa chí»

“Ta có thể viết một chuối các hoạt động - gọi là chuối các vi lệnh ~ xây ra

tong suốt quả tình thực hiện lệnh này không chỉ theo ngôn ngữ thanh ghỉ RTL mà theo các thuật ngữ cho pháp (enable) các cửa (gatcx) và lạt các mạch lật

"Bìng 6.1 mình hoạ chuối các vi lệnh đó Cần nhấn mạnh rắn pha tìm—nạp lệnh,

(feteh) của tất cš các lệnh thi như nhau và chỉ cổ phá thực thị lệnh (execute)

biển đổi phù hp với mã thao tác được đọc trong quá trình nhận lệnh mã thôi

| Mar} « (Pe) | cho phép G1, cấp nhịp cho MAR

“Tưởng tượng ring I6i ra của đơn vị điều khiến CỤ gồm 12 tín hiệu các cửa

G ~Giạ, 2 tín hiệu điều khiển bộ nhớ chính xà 5 tín hiệu xung nhịp để kích hoạt các lối vào của các thanh ghỉ PC, MAR, MBR, IR và D0 Bảng 6.2 liệt kê

19 tín hiệu lối ra của CƯ theo một đãy các giá trị nhị phân được phát ra trong suốt quá trình nhân và chạy lệnh cong ADD Nếu cấp 19 tín hiệu trong bảng

62 tới các thành phần khác nhau củx bộ xử lí trong hình 2Ø thì một chủ rình lệnh sẽ được thực hiện Trong máy tính thực thường có từ 64 đến 200 tín hiệu điều khiển như vậy Một trong những sự khác nhau quan trọng giữa lệnh vi mô

và lệnh vĩ mô là ở chổ lệnh vi mỏ chứa nhiều trường hơn và có thể cung cấp một vài chứ không phải 1 hoặc 2 toán hạng như lệnh vĩ mỏ Tám bước trong

"bảng 6.1 là một vĩ chương trình địch một giai đoạn tìm=nạp lệnh được theo sau

‘bai mot leah cong ADD

‘Bing 62 CAC TIN HIEU DIEU KHIEN DUGC PHAT TRONG CAC PHA

NHN VA THUC HIỆN LÊNH CONG ADD

m

Trang 7

đếm ví chươnn trinh, Cấu trúc cơ bản cũa một CƯ được vi chương trình hoá chỉ

ra trên hình 6.6 Nồ có một bở đếm ví cluznng trinh, một bỏ ni ví chương tinh!

Xà (anh gi vĩ lệnh Địa chỉ vì lệnh từ bộ đếm vi chương trình được đạt tới lối

vào địa chỉ của bộ nhớ vĩ chương trình và số liệu ra của bộ nhớ được cấp tối

thanh ghỉ ví lệnh Thông tin trong thanh ghi vi lệnh được chỉa làm 4 trường,

trường địa chỉ vi lệnh kế tiếp trường điều khiển nạp bộ đếm vỉ chương trình,

trường chọn lọc điều kiện và trường điều khiến bộ xử lí Hầu hết các bít tron

thant gh vĩ lành thuộc về trường điều khiến Chúng điều khiển luỗng thông tin

hem trong bộ xử lí bằng việc mỡ các cổng 3 trang thái và cấp nhịp lặt chơ các,

thanh ghỉ như đã mô tả trên,

vi lênh kế tiếp nhau sẽ xuất hiện trong thanh ghỉ lệnh như cách dược mỏ tỉ

thông tin bên trong bộ xử lí Tuy nhiên như trong trường hợp của đơn vị điều khiển vĩ mô thường cần thay đổi chuối các vĩ lệnh dược chay Thí đụ, chúng ta

có thể muốn lấp lại một nhóm các vi lệnh n lần ; hoặc muốn nhảy từ pha tìm=nạp lệnh tới pha thực thỉ lệnh hoặc muốn gọi một chương trì

Ba tiudmg thanh ghi sẽ điểu khiển chuỗi vì lệnh cho phếp bộ dem vi chương trình thực hiện cả hoại động nhảy rẽ

tới vùng bên ưòng bộ nhớ vỉ chương trình Hoa động này là cín thiết để chạy các lệnh vĩ mô như BRA, BCC BSC, BEQ x Trong hoạt động bình thường,

bộ đếm vĩ chương ình sẽ đếm qua các lệnh một cách liên tiếp và địa ch của vỉ chương trình kế tiếp Tà địa chỉ hiện tai công với 1 Bằng việc nạp các nội dụng của trường dja chi vi lệnh kế tiếp của trường xi lệnh hiện tại vào bộ đếm vỉ chương trình, một hoại động rẽ nhánh có thể tới được một điểm bất Ki trong bo nhớ vì chương trình Nồi cách khác, mỗi vi lệnh xác định liệu vi lành kế tiếp được đưa vào trong chuỗi hoặc đưa ra tử trường địt chỉ kể tiếp của vi nh hiện tai Vậy thì cát gì ác định liệu bộ đếm vi chương trình in tục theo một chuối hoặc được nạp từ “rường địa chỉ vì lệnh kế tiếp của ví lệnh lượt tại *

Trường diều Khiển nạp bộ đếm vì chương trình (micraprogram caMtter

oa cowie fit cba than ghỉ vị lệnh báo cho bộ đếm vì chương trình hoặc 1a Liy dia chi lệnh kế iếp của nó bằng việc tang 1 rong một chuối liên tục hoe

là từ việc dnh dia chi (address mapper) hoae 1a ding dia chi rong trường địa chỉ kế iếp của thanh ghỉ vũ lệnh

Trường chow diéu kign (condition select field) cia thank ghỉ vỉ lệnh thực hiện nhãy có diều kiện ở mức lệnh vĩ mô bằng việc nhảy có điều kiện ở mie vi lenh Trong se dé hinh 6,6 mot trong bốn điều kiện cổ thể được chọn Các điều kiện này nhận dược từ ALU và thường là các bịt cỡ của hanh chỉ trạng thấi bộ

xử lÍ PSR (hay cồn gọi là thanh ghi ma điểu kiện CCR-condition code register) thi du 7, N.C, V Trường chọn điều kiên xác định những bịt cờ não, được cấp tới lối ra của bộ đổn Kẽnh chọn diều kiệu Nếu lối rà của bô đồn kênh

là irue thì một hoạt động nhảy được thực hiện tối địs chỉ được xác định bởi nội cđụng của trường địa chỉ vỉ lệnh kế tiếp, trong trường hợp ngược lại vỉ chương trình sẽ chay liên tục theo chuối bình thường Trong hình 6.6 hai trong số cấc

Trang 8

điều kiện nhận được từ CCR và 2 buôn là uc và /ale Điều kiện /als£ ngụ ý rằng “không bao giữ rẽ nhánh” và re à "Iuôn luôn rẽ nhánh” (tức là lệnh gơz)

Môi cũ nhay có diều kiện ở mức lònh vĩ mô (thí dụ BE) được dịch bởi các

¥i len theo cách sau Trường chọn diều kiện của vì lệnh chọn bù trạng thị

thích hợp của CCR để kiếm tra, thí dụ nếu lệnh vĩ mồ là BEQ thì bít Z được

chọn, Trường điểu khiến nạp bộ đếm vỉ chương trình bao gốm thao tá

“tế nhánh tối địa chỉ wong thank ghi về lệnh rong điều kiện được chọn là re"

Như vây, nếu điều kiện được chọn là zue (tức là Z = 1) một hoạt động nhảy

được thực hiện tới một điểm trong vi chương trình cho phếp mot bước nhảy

{wong ứng trong chương trình vĩ mồ Nếu điều kiện được chọn là se (tức là

Z = 0), chuối hiện tại của cúc vi lệnh bị kết thúc bằng việc khởi phát một

Phần đầu tiên của mỗi vỉ chương trình được thực hiện bối đơn vị điều khiến

phù hợp với pha tò-nạp lệnh vĩ mô và kết thúc với mã thao tác lệnh vĩ mô

được đột vào các thanh ghi lệnh Mã thao tác được nạp tới bộ ảnh xạ địa chỉ

(ađérsss mmapper) bộ này tìm một bảng chứa danh sách các địa chỉ khỏi phát

sửa vi chương tình cho mỗi mã thao tác có thể Như vậy bộ ánh xạ địa chỉ đã

địch một nhóm bit nto đồ của mã thao tác thành vũng vi chương trình tương

ứng mà vùng đố sề thực hiện mã thao tác, Sau khi vì chương Hình này được

chạy, một hoạt động nhảy khong điều kiện tới điểm khối phát của vĩ chương

trình được thực hiện nhằm dịch phá m7 nạp lệnh vĩ mô và rồi xử lí li được

tiếp tục

Dĩ nhiên vige mô tả đơn vị điều khiển dược vi chương trình kể trên là hết

sức đơn giản Trong thực tế vi chương tình thường bao gồm các phương tiệ liên

cquan đến các ngất, bộ nhớ chính và các thiết bị vàoƒzs Một trong những vu điểm

lớn của đơn vị điều khiển được vi chương trình là khả năng biến đổi nội dung,

của bộ nhớ vĩ clương trình (đi khi được gợi là bợ nh điều khiển) và do đồ

cho phép có thế thiết kế được các lệnh mức máy của riêng người sử dụng

Thực tế rất có khả năng chọn một tập các vi chương trình nhằm chạy mã

máy của một máy tính khác hoàn toàn Trong trường hợp này my tinh được

coi là mô phông máy tính khác Việc này là hữu ích nếu chúng ta cần thay đổi

máy tính cũ của mình thành máy mới mà mã máy riêng của nó không tương

thích với các chương ình cũ Việc mô phỏng ấp dung tới chương trình tồn

"Để hiểu cách thức đơn vị điều khiến xác định việc thực biện một lệnh vĩ mồi

ta hãy xết cấu trúc của một đơn vị điều khiển được vi chương trình tương tự

pon [Oe Tra

xử lí, chuối sự kiện sau sẽ xây

— Mã thạo tác được cấp tối lối vào của ROM để ara cứu địa chỉ khởi phát

“của vi lệnh có liên quan trong bảng các địa chỉ Địa chỉ thứ nhất của vĩ chương, trình được đưa vào bộ đếm ví chương trình và cũng xuất hiện ở lối ra của nó, ở

“đồ nó chọn vị lệnh thứ nhất từ bộ nhớ vì chương trình

Trang 9

= Vi leah được giữ trong một thanh ghỉ đường ống, gọi như vậy vì nó gi vì

lệnh hiện tai trong khi đơn vị điều khiển dang bận nhận vỉ lệnh kế tiếp

`Vi lệnh được đồng để điều khiển hoạt động của bộ xử lí Vi lệnh điển hình

rộng 64 đến 128 bit va được chỉa thành một số trường, Dưới đây là minh hoạ

một vì lệnh giả định

[ener

8 ch [F%°hn maou ni iu dn) J nace aja ei] wing fiend

La maah| "9h |zanven| gen ace [aut XE iếp tu [MALU uu] ava frye td hệ thống năng| hanhgh {a ugu bus

revit | abi | abi | sue [soe] soe [soe] eba [1658| «bi

Định đạng lạnh 84 bi

8) Đơn vị điều khiển logic ngdu nhign

Loại đơn vị điều khiển kể trên thực hiện việc địch một lệnh máy bằng một

Vi chương trình được lưu trữ trong bộ nhớ ROM Độ phúc tạp của đơn vị điều

khiển được vĩ chương tình không liên quan trực tiếp tới độ phúc tạp của các

lệnh máy mà nó phải dich, cũng giống như trường hợp độ phức tạp của máy

tính mức lệnh máy không liên quan gì tới độ phức tạp của các chương trình

ngôn ngữ bậc cao đang chạy trên nó Nhưng đôi khi các nhà thiết kế máy tính

Tại muốn cung cấp các lệnh mức máy gần gũi với các tiện ích phức tạp được

cho bởi các ngôn ngữ bậc cao Trong những trường hợp như vậy, phát sinh một

mối quan hệ thực sự giữa độ phúc tạp của ngôn ngữ bạc cao với độ phức tạp

của đơn vị điều khiến Như phần trên đã nổi, cách tiếp cận để xây dựng một

đơn vị điễu khiển khác là tìm ra chuối các phép toán logic va số học cắn thiết

“ho việc thực hiện một lệnh rồi thiết kế mạch lögie thích hợp để thực hiện các

chuối này Lúc đó ta có đơn vị điều khiển được xây đựng bằng các mach logic

"ngẫu nhiên hay đơn vị điếu khiển lôgfc ngấu nhiên (random logic contol uni0)

“Từ ngẫu nhiên ở đây chỉ hàm ý à "không theo một cách thiết kế nhất định nào”

{ad he),

.Đơn vị điều khiển dược vỉ chương mình có thể dễ dàng tích ứng với các

mmấy tính khác nhau chỉ với một ít sửa đổi những đơn vị điu khiển lögc ngẫu

hiên thì chỉ được đăng cha một bộ xử í nhất định và không đề sửa đổi được

Ta sẽ khảo sát một bộ xử lí đơn giản với đơn vị điều khiển lðgic ngẫu nhiên

như hình 68 Một bus đơn nối tất cả các thanh ghi eho php truyền chỉ một

Điều kiện này làm đơn giản đổi các mạch điều khiến bus Bus sé ligu 2 husing được nối tối bux hệ thông bằng các cổng Cy—|

3 trạng thấi Gus và Gusy

“Trong chu kì viết bộ nhớ (W

là re), số liệu được tuyển tây bụs hệ thống tối bộ nhớ qua cổng Gusu Trong chủ kì đọc Cụ, +) sổ liệu được truyền

hộ, tới bus hệ thống

(qua cong Gyyse- Cae than ghi MBR, thanh ghi sổ liệu, bộ Lđểm chương trình và thanh ghỉ lệnh được sấp đạt với bus nội

bộ theo cùng một cách Khi một trong những thanh ghỉ này muốn đưa số liệu lên bus, cổng 3 trạng thái của nó được mỡ Ngược lai số liệu từ bus được nạp vào một thanh ghỉ béi mot xung nhịp dưa tối thanh ghỉ Lưu ý rằng thanh ghỉ len IR được sắp đạt nhằm cho nó có thể nhận số liệu trực tiếp từ bộ nhớ chính

mà không phải qua MBIR như bộ xử lí đã giả định trước đây ALU nhận số liệu từ: 2 nguồn bus nội bọ và thanh ghỉ số liệu, rồi đưa các ín hiệu ra của nó tới bus hệ thống,

Điều này làm này sinh văn để : ALU làm sao đặt số liệu lên cùng một bus

‘wong cing một thời gian nếu nó nhận số liệu từ bus hệ thống ? Có 2 cách giải

“quyết, Cách thứ nhất là phải đặt một thanh ghỉ trong ALU để giữ số liệu vào không đối trong khi bus dược nổi tối lối ra của ALU N6i cách khác ALU

Só một thanh ghỉ MBR của riêng nó Cách thứ hai đựa vào hiệu ứng thời gian tiễ của cắc tín hiệu khi đi qua một mạng dien logic $6 liệu truyền từ lối sào

Trang 10

của ALU tới lối ra mất chừng S0ns Giả thiết rằng các nôi đưng của MBR được Bang 6.5 DICH TAP LENH G BANG 64 TRO? (GON NGURTL VA

xẽ không còn ổn định Tuy vậy tín hiệu ra không thể thay đổi ngay lập tức vì | Lệnh | Op code Các hoạt déng (RTL) “Các hoạt động điều khiển

Kết quả là nếu cổng GẠyu được | Banas ‘MA DIEU KHIEN ALU | | UR) © [MS([MAR)] Rta

nó và than ahi 6 eu dup 8p | pT | | Aucel Ese”tF Fạzt9

2 Nụ f0 VÀ F có chic tng nde 5] 5 | cima | | wsqwanpy foo |

các tín hiệu điều khiển cổng 180 3 trạng thái, kí hiệu la Ep, cắn để chạy mỗi lệnh BRA | 10 | IPCIEHRỊ et

Trang 11

Để chạy một lệnh phải thực hiện 2 iệc ¡ giải mã thao tác 3 bị thành 8 thao,

tác kế tiếp nhau và thực hiện các thao

tác đó, Hình 69 là thí đụ cẩu trúc của một bộ giải mã lành 3 thành 8 Với | 843] 82

một giá trì nhị phân 3 bít đấu vào chỉ

cổ một trong 8 đầu rà được đặt ở mức

tích cực cao, các đầu ra côn lại ở mức

thấp, Thí đụ, nếu mã tương ứng với

lệnh cộng ADD (tức là 010) được nạp

Vào thanh ghi IR trong pha nhận lệnh

thị lối ra thứ hai từ đấy cổng AND sẽ ở

mức lôgc cao, Để thực hiện chuối các

vi lệnh cần phải có nguồn tao ra các

xung kích oat (triga) các vi lệnh

Mach điện tạo rà một chuối các tín Minh 69 Bo gist naan 3 +8

hiệu kích hoại đổ gọi là bộ ao xung tuần tự (sequencer)

THình 6 10 là sơ đồ một bộ tạo xung tuần tự 8 bước Các lối ra của 3 igo J-K

được thiết kế thành một bộ đếm tiến 3 bịt và được nổi tới 8 cổng AND 3 đầu

Vào để cụng cấp các tín hiệu nhịp Tụ — T

Hình 6.11 là giản đồ thi gian của các xung điều khiển Lưu ý rằng bộ giải

mã thời gian ở đây cũng giống như bộ giải mã lệnh trên hình 6.9 Vì không phải tất cä các lệnh vĩ mô đều đồi hỏi một số vi lệnh như nhau, do vậy có thêm một lối vào Reset cho phép dat lại bộ tạo xung tuần tự trổ về trạng thái T ở bất

kì thời điểm nào Bước iếp theo là kết hợp các tín hiệu từ bộ giải mã lệnh với các ín hiệu định thồi từ bộ tạo xung tuần tự để phát ra các tín hiệu điều khiển định thời thực sự

ra của các cổng AND sẽ cho phép đơn vị điều khiển lôgie

"ngẫu nhiên hoạt động Lối ra của mỗi cổng AND, tương ứng với một vi lệnh nhất định

rErch XMOVE(@ed90s9)09 MOVE(sietee)

một cổng OR nhiều lối VÀO inh 6.12 Bon vi hi ge phe ign

183

Trang 12

Lối ra của các cổng OR my sé kích hoạt các vi lệnh tương ứng Trong hình

này các cổng AND với lối vào EXECUTE là phấn giải mã trong sơ đối

hình 69,

"Đối với một vi nh, một nhóm các tín hiệu điều khiển có thể được

hoại tại một thời gian xác định Như vậy mi tín hiệu điều khiến có thể được

kích hoạt bởi một vài lệnh vĩ mổ (có hả năng điễn ra trong các chủ kì nhịp

đồng hồ khắc nhau) và được phát bởi một máy phát vòng Đơn vị điều khiến

luôn ở một trong 2 trạng thái là pha nhận lệnh (fetch) hoặc pha thực tỉ lệnh

(execute

Hình 6.13 là một phần mở rộng sơ đổ hình I2 trong đổ có một mạch lat

'RS được dùng để chuyển giữa trang thúi này, Khí Q < 0, hoạt động hiện tạ là

pha nhận lệnh và khi Q = I là pha thực th lệnh, Ở cuối của mỗi pha nhân lệnh,

một xung Cloek từ máy phát nhịp đặt mạch lặt này lên 1 chơ phép lệnh hiện tại

được giải mã và chạy Bộ tạo xung tuần tự cũng được reset ở cuổi pha nhận ênh Cuối mỗi pha thực th lệnh, mạch lật được xoá về 0 và bộ ạo xung tuần tự

xẽ được reset, cho phép pha nhận lệnh kế tiếp được bắt đầu

ngữ : tín hiệu phụ thuộc thời gian và vi len

“Các ví lệnh cho phép mổ bộ điều khiển bus, tạo nhịp cho các thanh ghí,

‘ie bit chon chức năng của ALU các tín hiệu điều khiển đọc/xiết bộ nhớ chính

185,

Trang 13

và đặ/xoá mạch lật nhận-thực th lệnh Với mỗi vị lệnh ta có thể viết một biểu

thức Boolean theo dạng lệnh mức máy và một chuối các xung theo thời gian

“Thí dụ, xem biểu thức cho Euan, Bị, Chay,

Euugs = ADD Tị + SUBT, + INCT, + INCT + DEC T, + DECT, + DECT;

Eg = Fetch T, + BRA Ty + BEQ Tụ

Guan = Fetch Ty + Fetch T,

‘inh 6.14 Sa 48 hi của một đơi vi did Ki age ng ohien

Hình 6.14 là sơ đổ chỉ iế của một đơn vị điều khiển lôgic ngẫu nhiên So

sánh giữa 2 thiết kế đơn vị điều khiến theo kigu vi chuong tinh hos va logic

ngẫu nhiên ta th

— Đơn vị điều khiển lôgic ngấu nhiên có tốc độ hoạt động nhanh hơn vì nó

được tối ưu hoá cho một ứng dụng cụ thẻ Hơn nữa loại vi chương trình hoá thì

‘cham hơn vì nó cần phải mát thời gian đọc vi lệnh từ bộ nhớ vỉ chương trình

6.2 CÁC BỘ XỬ LÍ RISC

CCấc và xử lí hoại động theo nguyên tắc kể tên có xố lượng lệnh vĩ mỡ lớn, (thường hơn 300 lệnh), có các khả nàng định địa chỉ phúc tạp các lệnh được thực hiện bằng một chuổi vị lệnh vi chương trinh, Do vay ed

được gọi là loại có dập lệnh phức rạp CISC (Complex Instruction Se

€omputer) Vì 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,

sử đụng hộ nhớ chính tốc độ chàm để lưu trữ các lệnh phúc tạp tạo niên chương trình ở mức máy Các lệnh đó sẽ được dịch bằng vi mũ trong bố nhớ vi chương trình có tốc độ nhanh hơn Ngày nay, các bộ nhớ chính có

uy cập ngắn hơn Ä0nx làm cho cúc tu điểm kể trên của vỉ chương trình không những biến mất mà còn gây cán trở cho hệ thống

“Trong hàng 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ỉ rà những kết fuga sau

«Trong nhiều chương trình điền hình dược xử lí bằng bộ vì xử lí CISC như tối trên thì đến 80% thời gian chạy chương trình được thực hiện chỉ bói 2 vớ ệnh trong tập lệnh

“Thi du, te gi Fairclough di chia cic ệnh ra thành 8 nhóm và đã thống kẻ

“được các kết qui trừng bÌnh tấn suất sử đụng (xết vế cá chương trình và kiến túc mấy Lính của chúng như sau

Trang 14

Rõ tầng trong tổng số 8 nhóm lệnh thì 2 nhóm lệnh chuyến dữ liệu và thay

đổi chương trình cố tản suất sử đụng chiếm đến 74%,

+ Có những trường hợp để đạt được cùng một kết quả thì

chuối lệnh đơn giản sẽ nhanh hơn là chạy một lệnh phức tap iệc chạy một

Những kết luận này là tiến để để một loại vi xử lí khác ra đời : nó hoại

động theo phương pháp xử dụng tdp len rit gon RISC (Reduced Instruction

Set Cemputer) 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 này hiểu ngay được lệnh máy do chương trình cung cấp, Do đồ các lệnh

loại này không cần chuyển cho bộ giải mã vi lệnh mà có thể thực hiện được

ngay Kiểu kiến trúc vi xử lí mới có tên gọi là RISC này cho phép thực hiện

một mã thao tie chi trong mot chu kl my

6.3.1 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:

1 Căn có đủ số thanh ghí (hực chất là các bộ nhớ ngay trong chip, © thei

gian truy cập nhanh hơn so với bộ nhớ ngoài) để khác phục được hiệu ứng ngẹt cố

‘hai (bottleneck),

2 Vì các lệnh ưong nhóm 2 (call, retum ) thường xảy ra nên một kiến

trúc hiệu đụ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ủ lục

3 Các lạnh phúc tạp làm tăng thời gian thiết kế, sẵn xuất và thử nghiệm -4, Nấu một bộ xử í RISC đủ nhanh thì nó phải chạy được một lệnh trong một chu kì máy Điều này cũng có nghĩa là sự phức tạp của các lạnh phải có

ii hạn của chúng

5, Kết quả tất yếu suy ra từ điều trên là một kiến trúc có hiệu quả không nên được vĩ chương trình hoá vì nó phải địch một lênh bằng việc chạy các ví lệnh Một bộ xử lí RISC gắn với một kiến trúc vi chương trình tong đó sự phân biệt giữa chủ trình máy và chu trình vi lệnh bị biến mất

6 Bộ xử lí hiệu quả phải eó một định dạng lệnh đơn Khi đó việc giải mã lệnh có thể được thực biện bảng mot mach Logic giải mã tối thiểu

“dạng lênh 3 thanh gỉ như đưới đây Mỗi trường toán hạng cho phếp một trong

số 32 thanh ghỉ bên tong được truy cập

Decode [80 [och | Niet [whore | wn? | TRO tbk SSSR okt

xu Hãi trường SCC và IM+B zeros liên quan đến việc cập nhật thanh ghỉ mã điều kiện và toán hạng tức thời Định dạng RISC cho phép các lệnh dang ADD X.Y.Z tong đó X, Y, Z là cắc thanh ghỉ ben tong Vì rằng mỗi trường toán

‘hang đài 5 bit nén RISC cổ 2° = 32 thanh ghi ben trong Nhung trong thye RISC có đến 138 thanh ghi da nang ben trong dùng cho người sữ dụng Nguyên nhân khác nhau này là do một cơ chế gọi là cửa số, cơ chế đó cho phép người Lập tình chỉ nhìn thấy một tập nhỗ trong xố toàn bộ các thanh ghi trong một thời điểm nào đó

189

Trang 15

6.2

` Các cửa số thanh ghỉ

Một đặc điềm thiết kế quan rong trong kiến trúc RISC mà nhĩm Berkeley

nếu ra là cách thức nổ cĩ th định vi khơng gian thanh ghi tới mổi thủ tục mới

feroeedure) Mặc dù chỉ cĩ 12 hanh ghỉ được đồi hơi bồi mỗi lêi gọi thứ tực Xiệc lồng liê tiếp các thủ tục xẻ lâm tang nhanh chống xổ các thanh ghỉ trên

chịp được gần củo các th tục (ểu mỗi hủ tục đều cĩ các biến cục bộ của -g chúng) Cổ thể nghĩ rằng ý định đành một tập các thanh ghỉ cho mỗi thủ

tực mối là Khơng thục vi rằng gọi một chuối các hủ tục Ting lê nhau sẽ đội

hỏi một lượng bộ nhớ quá giới bạn May thay mặc đù về nguyên tác cc thủ

tục cĩ thế ơng lên nhau ới mức độ uỷ ý những cức cơng tình nghiên cứu đã

chỉ ra ằng hấu hết các thổ tục khơng lồng lên nhau với mức độ lớn bất kỉ Trên hình 6,15 cho thấy mối ệnh CAIL được biêu diễn bảng một đường đi xuống về

phía phải và mới lệnh RETURN due bigu dién bảng một đường đi lên về phía phải Trong hình cĩ về một cửa số cĩ độ sâu lồng ghép à Ta thấy rằng chỉ cổ

một đây lệnh CALL va RETURN cĩ độ sâu lồng ghép th tục là 6, Vậy chương

tình vẫn cĩ th iếptục được thực hiện trong của sổ đồ một giai đoạn đài, Do ‘fy iệc chọn một số hạn chế các thanh ghỉ cục bộ cho mội chuỗi cc thủ tục

lồng nhau là hồn tồn khả th Một cơ chế thực hiện khơng gian làm việc biến

ce bp cho ee thi ye được các nhà thiết kế RISC Berkelsy đưa ra là quản lí

tới 8 th tục lổng nhau bằng việc cng cấp khơng gian làm việc trên chip cho

mỗi thủ tục Nếu mức độ lồng nhau lớn hơn sẽ buộc bộ xử lí phải sử dụng

khơng gian bộ nh ngồi cho việc lưu rỡ các biến cụ bộ,

a

a

inh 6.18 Chet Vg she ren ci th

Khong gian bộ nhớ được đùng bởi các thủ tục cĩ thể được chỉs làm 4 loại

1 Khơng gian tồn cục là một vùng khơng gian địa chỉ lơgic cĩ thể được

thăm nhập bởi tất cả các thủ tục Nĩ được đùng để giữ các hằng sổ và số Liew

6.2.3 Các cửa sổ và việc truyền tham số

Mot trong những lí do làm cho tấn suất sử đụng các phép tốn chuyển số liệu trở nên lớn là việc ấn tiết phải truyền các tham số tới các hủ tụ và nhận chúng từ các thủ tục Một hệ thống giảm được việc truyền số liệu này sẽ cho phếp tíng đáng kế tốc độ chạy chương tình Kiến trúc RISC Bekeley giải

“quyết vấn để truyền tham số bằng phƯƠNg cọ pháp da cửa sổ lồng nhau Một của sổ là 0 cuứi — omyisy một lập các thanh ghi khả kiến với một

thủ tục biên ti Hình 6,l6 mình hoạ cấu trúc của các của số lồng nhan của RISC

Giả thiết rằng bộ xử íiện đang đùn tập cửa sổ th ¡ Một thanh ghỉ đặc biết gọi con trỏ cửa số WP (Winờw pointer cửa sổ được kích hoạt hiện ti

“Trong trường hợp này, WP chứa giá tị ¡

Nhu mo ti ở trên, mơi cửa sổ được chia thành 4 phần : các thanh ghỉ RO-R® là tập ếc thanh ghỉ tồn cục, các thanh ghỉ

‘hi RI6-R25 là mười thanh ghỉ khơng thé [1 _}—J one

truy cập được trực tiếp bởi bất kì thủ tục khác, các thanh ghỉ R26-R31 được ding inh 6.16 Cv ric cdc cu o6

ởi thủ tục để truyền và nhận các tham số gil mày TU)

từ con của nĩ (tức là thủ tục được gọi bởi chính nổ)

lại

Trang 16

“Tát cả các cửa sổ bao gồm 32 thanh ghi, R0R3I và mồi một trong những

thanh ghi nay được địa chỉ hoá bởi một lệnh RISC gồm S bít địa chỉ trê trường,

toán hạng Trong phần này ta sẽ sử dụng từ gợi nhớ để mô tả hoại động của

RISC Một lệnh có dạng ADD R3, R12, R25 là [R25) © [R3]3|R12], 6 đây R3

bên trong không gian địa chỉ toàn cục, R12 được nhập (hoặc xuất) từ không

gian thủ tục mẹ và R25 trong không gian địa chỉ cục bộ Lưu ý rằng các lệnh

x8 học và lôgie RISC luôn có giá trị 32 bị Bất cứ khi nào một thủ tục được gọi

bối một lệnh dạng CALLR Rd,<dia chi> ede nội đụng cña con trổ cửa sổ được

tăng lên Ì và giá tị hiện tại của bộ đếm chương trình được cất trong thanh ghỉ Rd của cửa số mới Lưu ý tắng kiến trúc RISC Berkeley khong ding ngân xếp

thông thường trong bộ nhớ chính để ct các địa chỉ trở về của chương trình con

Ki một cửa sổ mới được gọi ra (Ưong hình 6.16 là cửa sổ i), tht tục mới sẽ

nhìn một tập các thanh ghi khác Với cửa sổ trước đó Các thanh ghỉ loàn cục

R0~RR9 làMnột ngoại lệ vì chúng là chung cho mọi cửa sổ Cửa sổ R10 của thủ

te con giống với của sổ R26 của th lục gọi (tức là thủ tục mẹ)

6.2.4 Tràn cửa số

Tuy nhiên các tải nguyên của bất kì bộ xử í nào cũng đề có giới hạn hư

tưong trường hợp kiến trúc RISC của Berkeley các thanh gh được hạn chế ở 8

cửa số Nếu các hủ tục lồng lên nhau với mức độ lớn hơn hoặc bằng 8 thi sé

Xây ra việc tân cửa sổ ì răng không còn một cửa sổ mới sào cho sự gợi một

th tục tiếp theo Khi xây ra trần cứa sổ điều đuy nhấ làm được là dùng bộ

nhớ chính để lưu giữ các xố iệu win Trong thực tế thường cửa sổ già nhất

được cất thay vì của sổ mới vừa được ạo nên bởi hủ tục vữa được gợi Nếu số

thủ tục được trả về (tua) rừ đi số thù tục được gợi (cal) vượt quá § sẽ xảy ra

tràn của số

6.2.5 Kiến trúc RISC và xử í đường ống

Một lệnh máy được thực hiện qua Š giai đoạn như hình 6.17 chỉ rí

1 Nhan leah (instruction fetch) lấy lệnh từ bộ nhớ hệ thống và tăng giá

trị thanh đếểm chương tình PC tên một

3 Giải mã lệnh (instruction decode) : ii ma lệnh được đọc từ bộ nhớ

trong giai đoạn trước Bản chất của giai đoạn này rất phụ thuộc vào tính phúc

tạp của việc lặp mã lệnh Một lệnh thông thường có thể được giải mã trong một vài nanô giây trong khi một lệnh phúc tạp có thể đồi hồi phải qua một bảng tra

“cứu nạp sin trong ROM để gi

3 Nha toán hạng (operand fetch): toán hạng của lệnh được đọc từ bộ nhớ

"hệ thống hoặc từ một thanh ghỉ trên chịp rồi nạp vào bộ xử í

-1 Thực hiện lệnh (Execute) : phếp toán lệnh được thực hiện

.3- Lạt trữ toán họng (Operand store) : kết quả của giai đoạn thực hiện lệnh được viết vào toán hạng đích Đố có thể là một thanh ghỉ trên chịp hoặc một Vùng nhớ ngoài

"bộ xử lí và các toán hạng được nhận hoặc lưu trữ vào ngay các thanh ghỉ của bộ

xử lí nên có tốc độ xử í rất nhanh Hơn nữa vì RISC có một định dạng lệnh thông thường rất đơn giản nên giai đoạn giải mã nh là không cản thiết

Trang 17

“Tuy nhiên kĩ thuật đường ống gập phải một tr ng

thống phải ính đến, đó à các "bọt nước” xuất hiện trên đường ống do các lệnh rễ

nhánh sinh ra và tính phụ thuộc của các đữ liêu Một đường ổng là một cấu túc

trải tự được phát iển trên các quy tắc Ở một giai đoạn bất kì rong việc thự hiện

một chương trình, một đường ống chứa 2 hoặc nhiều hơn các lệnh với các giai

đoạn khác nhau Hãy xem hình 6.19 trong đố một chuỗi lệnh đang được thự hiện

inh 6.19 Tae dng ean ash rong đường ổng

Thi bộ xử í gập một lệnh rẽ nhs, n6 bude phi nap li noi dung be dem

‘huang trình tối một giá tị mới Điều này có nghĩ là tt cả các công việc hữu Ích đã được thực hiện ổi đường ống đến đây sẽ bị bỏ đi, vi lệnh iếp ngay sau

lệnh tế nhánh sẽ không được thự hiện Khi đữ liệu ong đường ống bị đấy ra

ngoài hoậc đường ống bị tro vào trạng thi chạy không, chúng ta nồi rằng một

bot nuốc đã xuất hiện ong đường ống và làm chậm lại qué wink xi I Di

nhiên, nếu đường Gag cing di Hì cảng có nhiều lệnh phải bị đẩy ra khỏi

6 khi xuất hiện nh rẽ nhánh Cấu trúc RISC của Bedeley khắc phục vấn

để bọt nước bùng cách không đầy ngay các lệnh sau nh rể nhánh ra ngoài dường ống,

.ADD R7, R8,RĐ _._ Không được chạyvicólãnh rẻ nhánh

Bo xử lí sẽ tính R5 = R1+R2+R4 trước khi chạy lệnh rể nhánh Đây là một cách xử lí lạ với những người lập trình ngôn ngữ máy thông thường vì thường không bao giờ một lệnh sau lệnh rẽ nhánh lại được chạy cả Cách xử lí này cũng thường không phải lúc nào cũng thực hiện được Vì khi đồ bộ biên dich phải đưa vào một lệnh chạy không (NOP) sau lệnh rẽ nhánh và chấp nhận một điều không tránh khỏi à có một bọt nước Các bộ xử í RISC nối chung coi cơ chế này như một bước nháy trể(delayed jump) hoặc gọi là Kĩ qhuật rẻ nhánh và thực hiện (branch-and~execut technique) Hình 6.20 là mình hoạ cách mà bộ

Xử í RISC thực hiện kĩ thuật nhảy trẻ Lưu ý ở đây địa chỉ đích của nhánh được tính ong giai đoạn thực hiện lệnh của chu tình máy,

Chông ta có viết

S08 Tenpt,Tenp2 [Tems] [Teme*FIE] AND Temp) Temp2.X Xe fTenptliTang2]

195,

Trang 18

Lệnh thứ i+1 tong hình 6.21 bắt đầu chạy tong thi gian xây ra giai đoạn,

nhận toán hạng của lệnh trước đó Tuy nhiên, lệnh i+l không thể chay tới giai

{oan tgp sau là pha ấy toán hạng = vì toán hạng thự sự mà nó đời hỏi chỉ được

viết vào tếp sau 2 chủ kì đồng hồ nữa Hậu quả là một bọt nước xuất hiện rong

đường ống tong lúc lệnh +1 đợi số liệu cho nó Tương tự, phép toán AND cũng

bị đưa vào một bọt nước vì nó cũng đồi hỏi kết quả của phếp toán trước đó mà

phép toán đ lại đăng còn ở trong đường ống

‘inh 6.21 A hường của sự phụ 'huộc đã liệu

Hình 6.22 mô tả một kĩ thuật gọi là ứưernal /orwarding được thiết kế để

khắc phục ảnh hưởng của tính phụ thuộc dữ liệu Thí dụ phù hợp với một đường

cống 3 công đoạn nhu trong RISC Chudi các hoạt động sau được thực hiện

+ ADDRIRZRS- |R]©[RIR.RZ]

2 ADDR4/.5/RS- (R6J©[RSRSJ

3 ADDR3/.4/R7- [R7J<(RSJR4J

4 ADDRPRRLRS (R8J©[RIRWR]

“Trong thí đụ này, lệnh 3 sử dựng toán hạng được phát ra bởi nh 1 (tức là

nội dung của thanh ghỉ R3) Tuy vậy, vì có sự xen vào lệnh 2, toán hạng đích

được phát bởi lệnh 1 có thời gian được viết vào fle thanh ghỉ trước khi nó được

đọc như là toán hạng nguồn bôi lệnh 3 Lệnh 3 phát một toán hạng đích R7,

toán hạng này được dùng như là toán hạng nguồn bởi lệnh tiếp theo Nếu bộ xử

í đọc toán hạng nguồn được yêu cầu bởi lệnh 4 từ tếp thanh gh, nổ sẽ tìm giá

trị cũ của R7 Bằng kĩ thuật này, bộ xử lí sẽ ruyễn trực tiếp R7 từ đơn vị thực

hiện lệnh 3 tới đơn vị thự hiện lệnh 4

Chip i486 cia Intel e6 mặt độ ích hợp rất cao bao gồm bên trong một vi xử

$6 32-bit đã cải tiến, một bộ đồng xử lí toán 80387, một bộ điều khiển cáche Và một bộ nhớ cache tốc độ cao cổ dung lượng 8 kbye Bus số iệu và địa chỉ ở đây đều rộng 32 bi, tốc độ truyền ải đồ liệu có thề lên ti 160 Mbytes Day à thiết kếđựa trên kết qu tủa việc ch hợp bai loại phn tử xử

Ji CISC và RISC trong cing mot chip Trong 486, cc lệnh mã máy thường Xuyên được sử dụng sẽ được vài đặt ẩn và có thể được thực hiện ngay, ong Khi các lệnh phức tạp nhất và được sử đụng sẽ thông qua bộ giải mã v lệnh

“Theo phương thức này, hấu như tất cả ác lệnh có thể được thực hiện gọn tong

‘mot chu ki xung nhịp đồng hồ

197

Trang 19

Mot trong những đặc điểm quan trọng là trong 486 được tích hợp luôn bộ

đồng xit toán Về nguyên tắc nó cũng giống như chịp 80387 cho vì xử í 386

nhưng vì được tích hợp ngay trên cùng một chịp nên cho phép chạy các lệnh

toán nhanh hơn trong một hệ gồm 386 và 387 tách rời bình thường chừng 3 lần

“Minh 631.3 đồ khối của vi xi 80486

Mach cache lign hop 4 đường trong 486 làm việc giống như cache ngoại

nhưng đường cache ở đầy là 128 bịt chứ không phải 32 bi Sơ đổ còn cho thấy

ở đây có đường ống lệnh 5 tầng cho phép chạy các lệnh nhanh hơn ở 386 nhiều

S0 đổ này thường đùng trong vì xử lí RICS cho phép một vài lệnh có thể "chảy”

trong đường ống cùng một lúc 486 sẽ nhận một vài lệnh trước và trong khi

đang xử lí một lệnh nó sẽ giải mã và khối phát chay lệnh tiếp theo sớm đến

mức có thể được Thực sự 486 có thể thực thỉ các phần của một vài lệnh trong

cùng một thời gian Thí dụ, giả thử 486 phải thực hiện chuỗi lệnh có ý nghĩa

“được đưa ra bus địa chỉ Trong chủ kì đồng hổ tiếp theo, từ trong thanh ghỉ CX 3Š được đưa a trên bus số liệu, Việc tăng cường sự xen phủ như vậy cho phép -486 chạy nhiề lệnh trong một chủ kì đồng hồ một cách hiệu đụng Việc nhận lệnh, giải mã lệnh và thự hiện nỗi ệnh thực ế xả ra vài nhịp đồng hồ nhưng các hoạt động này xen phủ lên nhau với các quá tình giải mã và thực hiện lệnh nên hời gian thự cho mỗi nh chỉ mất có một nhịp đồng hồ, Thí đụ, một hoạt động viết bộ nhớ l6 bịt mất chừng 22 nhịp đồng hồ tren vi xử í 8088 và -4 nhịp ong 386 tì chỉ điễn ra Ì nhịp trong 80486

“Các lệnh nhảy có điều kiện cũng gặp thuận lợi trong cơ chế đường ống của

486 Khi 486 gidi mã một lệnh nhảy có điều kiện nó tự động nhận một hoặc nhiều lệnh từ địa chỉ đích ngay trong trường hợp cú nhảy xây ra Nếu sự rẽ nhánh được thực hiện thì 486 không phải đợi qua một chu kì bus cho lệnh đầu, tiên ở địa chỉ rẽ nhánh Một lệnh nhảy có điều kiện cần chừng 16/4 chủ kì nhịp {8088 va 8/3 chu ki ahip & 386 thi chi mai chimg 3/4 chu ki nhịp trong 486

ấu hết những cải tiến trong 486 liên quan đến các tín hiệu và ghép nối phần cúng Hình 6.24 là các nhóm chân tín hiệu của 486 Một nhóm chân tín hiệu mới rong 486 là nhóm chấn-lê DPO đến DP3 và PCHK# Các ín hiệu này

“cho phép 486 thự hiện viếc phát và kiểm tra chẩn- lẻ cho việc đọc/xiết bộ nhớ Nhóm tín hiệu mới khác là tín hiệu sấn sàng truyền khối (burst mode) BRDY*,

và tín hiệu kết thúc khối BLASTE Các tín hiệu này được đùng để điều khiển chế độ dọc/viết một khối dữ liệu từ/đến bộ nhớ Trong chế độ bình thường, 1 chủ kì bus không có trạng thái đợi chiếm mất 2 chu ki đồng hồ giống như trong 80386 Trong chế độ bu, thi gian cẩn thiết cho việc chuyển tải đữ liệu như vậy giảm xuống còn 1 chủ kì nhịp đồng hồ Chế do burst duce bit dé bằng việc thâm nhập bình thường bộ nhớ và kế thúc trong 2 nhịp đồng hồ

“Trong chủ kì nhịp thứ hai 8486 nàng tín hiệu trong chan BLAST lén mite cao

199

Trang 20

để chỉ th rằng nó muốn chạy chế độ truyền đữ liêu kiểu bues Nếu hệ thống

được định địa chí có khả năng thực hiện một chu kì burst thi nd ha day “ÑDY xuống mức tích cục thấp

burst, 486 ha tín hiệu BEAS7 xuống mức tích cực thấp để báo rằng gi tị cối

cùng của chu tinh burst hign tai đã được truyền với tín hiệu BRDY hoặc

RDY tiếp theo Chú ý rằng các số liệu được truyền trong một chu trình burst

phải nằm trong một vùng 16 byte tức là địa chỉ của chúng phải nằm trong dãi

300 uuta0h tới xxAeosAfh Gexkxeve = 0000000h ti (fTHI), Điều này phải

hợp với một bàng cache trong bộ nhớ cache nội của vi xử lí Với vi xử lí 486

DX2 hoạe DX4, ấn sở nhịp được cấp cho bộ xử (sẽ được nhân 2 hoặc 3 bên

Điều này làm giảm nhẹ việc thiết kế chế tạo các bản mạch chính phải chay

ở tấn số cao đo đó giá thành sản phẩm cũng được giảm theo Thí dụ, vĩ xử lí

1486 DX2/50MHz chỉ cần chạy véi bin mach chinh 25MHz, DX2/66MHz hay DX4/100Mz với bản mạch chính 33MHz Theo phương án này, nhìn chung máy vi tính phải chịu thiệt về hiệu suất, vì bộ xử líiến hành xử í số iệu nhanh gấp hai hoặc ba lần so với các bộ phận trên bản mạch chính, do đó có thể phải XXen vào một vài chủ kì đợi (waitcyele) Để giải quyết vấn để này, một bộ nhớ cache ngoài đủ rộng để giữ tạm các lệnh và dữ iệu mà bộ vỉ xử í phải đợi Nếu được thiết kế hợp í hệ thống như vậy có thể đạt tối hiệu suất 80% so với các

hệ thống có tốc độ xung nhịp trên bản mạch chính bằng tốc độ xung nhịp ở trong bộ xi I

Sơ đồ khối của vi xử lí Pentium có thể được trình bày như hình 6.25 gồm, + Hai bộ nhớ cache 8 kbyteriêng biệt, một dành cho lệnh và một dành cho

+ Bộ xử í vẫn làm việc với các thanh ghi 32 bit va bus địa chỉ 32 bít nhưng,

có thể nổi với bus số liệu ngoài là 64 bi

+ Bus nội bộ là 64 bit va 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 bì! cho phép tăng tốc độ trao đối đữ liệu trong nội

bộ vi xử í lên ất cao

201

Trang 21

* Có một vũng nhớ gọi là vùng đệm đích rẽ nhánh BTB (branch target

buffr) của lênh đối với 256 lệnh rẽ nhánh mới đây nhất

* C6 một bộ đồng xử í với hiệu suất cao hơn nhiều lần các thế hệ trước nhờ

các giải thuật nhanh hơn, nhờ cách sắp xếp bổ trí lệnh cũng như có thể thực

hiện đồng thời hai lệnh,

“Hinh 635 Sữđồ khối của vị xửl( Pentom

Một vài đặc trưng khác làm cho Pentium phân biệt được với các vi xử lí

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ế ở

4kbyte mà có thể lên đến 2Mbyte hay 4Mbyte 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 thị hành chương trình Mặc dù là một vĩ xử lí được xây

dưng trên nguyên tắc xử lí CISC nhưng Pentiur đã ứng dụng nhiều công nghệ

mới giống như các loại vi xử lí RISC tốc độ cao, thí dụ như việc sử dụng các

cấu trúc đường ống, cấu trúc superscalar va dự đoán tẽ nhánh Điều này làm cho nó có hiệu suất cao như các vi xử lí RISC thực sự Các lệnh chạy trong

Pentium được thực hiện trên một cấu trúc superscalar với hai đường ống song

song U và V, các cache nội bộ và vùng đệm đích rẻ nhánh BTB Xét qua các

cấu trúc này sẽ cho phép giải thích tại sao Pentium lại có hiệu suất cao hơn so

mã lệnh 1 (Decode 1) phân ích để xác định loại lạnh

3 Giải mã lệnh 2 (Decode 2) xá định địa chỉ ð nh cần -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 vi bo nhs (Writeback)

`Nếu như mỗi công đoạn đồi hỏi tối thiểu một chu kì nhịp đồng hồ thì khi thì hành tuần tự các công đoạn này cho mỗi lệnh, thông thường phải mắt tổng công năm chu kì nhịp Nhưng với một cấu trúc đường ống có thể thực hiện đồng thời song song những công doan trén, Pentium tao ra một phương thức làm việc như sau : khi ệnh thứ (n) vừa chuyển sang công đoạn thứ hai thì một lệnh mới thứ (n+1) được đưa ngay vào công đoạn thứ nhất v.v Nhờ đó cả thấy

có 5 lệnh sẽ cùng được xử lí đồng thời trên một đường ống và có thể coi mỗi lệnh chỉ được xử lí trong một chu kì nhịp đồng hồ Hon thé na, Pentium lại có

én hai dung ống gọi tên là U và V được chế tạo hoạt động song song với thaw Về mặt lí huyết, nổ sẽ có khả năng thí hành cùng một lúc bai lệnh Tuy chiên thực tế không phải lúc nào cũng thực hiện được điều đó vì hai 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 một cách tuần tự Một mạch đặc biệt sẽ kiểm tra tinh phụ thuộc đữ 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 Nếu không phụ thuộc, hai lệnh sẽ được gi đến hai đường ống theo đúng thứ tự Quá trình có thể dẫn giải như sau : rong công đoạn một, lệnh hiện ti sẽ được đưa vào đơn

vi giải mã của đường ống U, lệnh kế tiếp = vào đơn vị giải mã của đường Nếu trong công đoạn hai, mạch đặc biệt nói trên xác định có thể thực hiện ống V đồng thời được hai lệnh thì mỗi lệnh sẽ trải qua các công đoạn còn lại tong mỗi đường ống của nó, ngược lại thì lệnh trong ống U sé tri 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 thỉ hành trong ống U hư là lệnh theo sau lạnh hiện ti

“Bộ nhớ cache nội bộ : Pentum có hai bộ nhớ cache riêng biệt, một đành cho dữ liệu và một đành cho lệnh Do có tốc độ nhanh lại được được tích hợp ngay tong chịp vi xử lí nên các lệnh và dữ liệu ở đây có thể được truy cập, rất nhanh Mỗi cache có dung lượng 8kbyte gồm hai toyến, 128 hàng cache,

y nhập

Trang 22

mỗi hàng dai 32 byte, Cả hai cache này có thể được truy xuất đồng thời từ hai

đường ống U và nhờ vào cấu trúc đạn xen gấp tấm (trang)

Pentium có thể hoạt động nhịp nhàng với các vi xử í khác trong chế độ đa

xử lí mỗi vi xử í có một cache nội riêng) nhờ được cấp một giao thức đặc biệt

gọi là MESI (Modiied, Exclusive, Shared, Invalid) Nó cho phếp hỗ trợ việc

đồng bộ hoá giữa các cache trong một hệ thống đa xử lí Giao thức có chứa thủ

tục bus snoopine cho phép một bộ xử í thăm dò và xử lí các thông tỉn được trữ

trong các bộ nhớ cache của các bộ xử lí khác trong hệ thống

Vàng đệm đích rể nhánh TB : Xét trường hợp khi bộ xử lí thực hiện một

lệnh nhảy (UMP) Lic niy, thay vi tiếp tục với lệnh kế tiếp trong bộ nhớ thì

việc thị hành chương trình lại được tiếp tục với một lệnh hoàn toàn khác tại địa

chỉ đích của lệnh nhây Điều đó dẫn ổi việc phải "tống" lệnh kế tiếp trên, vốn

đã nằm sấn trong đường ống ra ngoài, và phải nạp một lệnh mới vào đường

sống Kết quả là hiệu suất của bộ xử lí sẽ bị giảm xuống vì phải mất đi một vài

chủ kì nhịp đồng hồ cho quá ình trên Để khắc phục tình trang nay, Pentium

cố một vùng nhớ đệm gợi là vùng đệm đích rẽ nhánh BTB (nghĩa là vùng đệm

đành chơ các lệnh nhảy - IE/THEN) Nó được sử dụng trong công đoạn giải mã

lệnh 1 (Decodk 1) của tất ã các lệnh nhảy gần (NEAR JUMP) Nếu lệnh nhảy,

.được th hành, bộ xử lí sẽ cất cá địa chỉ lệnh nhảy và địa chỉ đích của lệnh vào

'ĐTB Khi thực hiện lệnh nhây, thay vì nạp lệnh kế tiếp theo sau lệnh nhảy vào

“đường ống, bộ xử lí sẽ nạp lệnh ở địa chỉ đích của lệnh nhảy Còn nếu lệnh

nhảy chưa được thỉ hành, tức là các địa chỉ lệnh nhảy và địa chỉ đích của nó

chưa được đăng kí trong BTP thì lệnh kế tiếp theo sau lệnh nhảy sẽ được nạp

ào đường ống như bình thường

Phin mềm của Pentium tương thích với những phấn mềm của 80386 và

80486 nhưng có thời gian thực hiên lệnh nhanh hơn nhiều Với khoảng 3.1

triệu transis—tor ở phiên bản đầu thế hệ 1, Pentum có thể chạy với các tần số

'60MHz và tốc độ xử lí là 1Ö0MIPS với tốc độ bus trên bản mạch chính là

66MEz Trong khi thé he Pentium đấu tiên được gọi là P5 đang dược sử dụng

thì Imel đã đưa ra thế hệ tiếp sau, Intel P6, véi ten goi IA Pentium Pro Các

Pentium thế hệ 2 có các phiên bản 75/100/120/133/150/166/200MHz Trên cơ

sở công nghệ 0/ámiero với 250MIPS, nó có thiết kế đổi mới và tốc độ xử lí

nhanh hơn nhưng lại giữ được tính tương thích hoàn toàn với tập lệnh của

386 và 486 Điều đó cho phép vẫn sử đụng được một khối lượng đổ sộ các

phấn mềm DOS và Mizosoft Windows trên thế giới Chip P6 thuộc loại superscalar va superpiptining Thay cho 5 công đoạn là công đoạn mới trong đường ống và nó có khả năng xử 3 chứ Không phải là 2 lệnh đồng thời như P5 Khác với Penum có tiết kE CISC, P6 được chế tạo theo công nghệ RISC chưng sử đụng các mạch thông địch gắn trên bản mạch chính để chuyển đổi các lệnh của 486 thành các lệnh RISC Penium Pro dùng phương pháp thực hiện theo suy đoán (spceulaive cxecution) để tối ưu hoá quá trình xử lí, đồ là phương pháp lưu trở và phân tích trên 30 lệnh trước khi chúng được thực hiện

“Các lệnh này đều được dự đoán là sắp đi qua bộ xử í nền được hướng dẫn và sắp xếp thứ tự thích hợp để tối thiểu hoá thời gian xử Đồng thời cũng nhời phương pháp suy đoán này mà P6 ít gập trường hợp phải "nhốt” lệnh trong đường ống khi có hai lệnh yêu cầu phải được hoàn thành trong cũng một lúc, hư P5 đã mấi rất nhiễu thì giờ vì nó Nhờ suy đoán P6 đã lên 100% so với P5 Bộ xử lí P6 còn có một số tính năng tiền tiến khác : đùng phương pháp đặt tên lại thanh ghi (register renaming) cho phép ting 36 lugng tanh ghi logic len nhiéw 48 trénh tring hop tanh chp thank ghi va si dung mot ghép n6i tre tgp t6e 46 cao wi cache cép hai én Khong bi chém vi bus

56 liu Kh tray ofp cache Với 5, triệu transistor, du tiên chạy với tốc độ 133MHz có phiên bản P6 đã chạy lên tới trên 200MHz Cúc chíp vỉ xử lí Pentium I! vi cong nghệ MMX (Mullimedia extensions) và bộ nhớ cache nội

Tớ tới 32Kbyte lại à một hiên bản cái ign mới Các chip nay st dung it Leah

"hơn nhiều so với một bộ xử lí chuẩn thông thường Với bộ nhớ cache nộ lớn,

16 6 thé thu biện các phép xử lí nhanh hơn Penium tương đương từ 7< 104

“Chịp có các tốc độ xung nhịp 166/200/233MHz vố tên 4,5 triệu transidor cho phép hồ trợ cho các nhủ cầu tryền thông da phương tiện với các ứng dung modem, 46 hoa, video, audio én te độ truyền dữ liệu nhanh Pentium TÍ rà đồi thắng Š năm 1997 có ác tốc độ 233/266/400MIIz với độ ích hợp tới 7.5 triệu transidor cho một khả năng xử lí mạnh hơn Do sử dụng những quy tinh sin xuất mới cho phép giảm khoảng cách giữa các transistor edu thành chịp tới 0,25 micron, có thể tăng tốc độ xung nhịp lên cao tối trên 400MHz Với bus địa chỉ rộng 36 bi, chíp có khả nang địa chỉ hoá bộ nhớ tối 64Gbyte, Chịp có bus cache tich hop cộng 64 bịt bus dữ liệu ngoài rộng 64 bit và bên trong rộng tổi 300 bit Được giới thiệu vào mùa xuân năm 1999 với tốc độ xung nhịp 300AMHz, kiến trúc của Penlem HH tương tự như Pentium ÏÍ ngoại trừ việc thêm

70 lệnh được tối vu cho truyền thông đa phương tiên Đến nay các Penlum IV cũng đã ra đời với tốc độ xung nhịp lên quá 2GHứ,

Trang 23

© CAU HOI VA BAI TAP

IR

“Giải thích ý nghĩa của chu trình tim-nap Iénh ("fetch cycle”) va mô tả hoạt động của nó theo ngôn ngữ RTL

Một vài vi xử lí có 1 hay 2 thành ghỉ tích lu, Anh (hay chị) có nghĩ rằng

cổ thể một máy tính phải xác định được số Ii tưởng các thanh ghỉ đa năng

cho nồ không 7 Tại sao ?

Ví lệnh là gì

“Trình bày sự khác nhau cơ bản giữa đơn vị điều khiển vỉ chương trình hoá và đơn vị điều khiển lðgic ngẫu nhiên

Kiến trúc RISC có những gì để phân biệt nó với kiến trúc CISC ?

Xử lí đường ống là gì khi cho phếp người thiết kế máy tính tăng tốc độ

hiệu dụng của bộ xử lí bằng cách gối chẳng các hoạt động lên nhau

"Những văn để nào nảy sinh ra khi thực hiện cơ chế này ? Nêu một vài

cách khác phục những vấn để đó

Hay tim xem những đặc điểm của kiến trúc CISC va RISC nào được thể

hhign trong 80486 và Pentium ?

xử lí quy định theo các định dạng riêng Với các xử li họ 80x86 của hãng Intel s6 sử dụng các trường mã toán, tiến tố, trường chọn chế dộ MODE tỏ trường dia chỉ Các lệnh nảy thưởng được phôn nhóm thành các nhóm lệnh di chuyển dữ Liệu, lệnh tính số học logic theo cóc phép toÉn hai ngồi oà một ngồi, nhóm các lạnh nhảy ỗ lệnh gọi thủ tục cũng như ông lợp nà nhóm các lệnh bo ra Lồng, diều khiển chương tình trong máy tính khang phải lúc nảo cũng tuổn tự Nhiều

hi nó bị chuyển hướng do các lời goi thú tye, do xy ra byw nad Vi way mot

sự chứ ý tới các th tục tà phương pháp lập trình có cấu trúc là cẩn thiết

@ CAC TU KHOA Tiếng Việt: cấp móy thông thường, thenh ghỉ đa năng, thanh chỉ con trổ chỉ số,

mã toền, tiến tố, toán hạng, toán hang nguồn, toán hang đích, địa chỉ toán hạng, chế độ đa chỉ tức thờ, chế độ đa chỉ rực tiếp, chế độ đa chỉ gián tiếp, chế độ đi chỉ giấn tiếp thanh ghi, chế độ địa chỉ cỉ số, chế độ địa chỉ ngăn xếp, thủ tụ,

"bấy, ngất

“Tiếng Anh: conventional evel, general purpose registers, index pointer register,

‘operation code - opcode, prefix, operand, source operand, destinaion operand,

207

Trang 24

operand adiwoss, immelale aldhesing, dưect addressing indirect addressing,

register indirect addressing index addressing, stack addressing, procedure, tap,

inter

“Trong cấu trúc phăn cấp của máy tính, cấp 2 là cấp lệnh máy theo cách hiểu

thơng thường của người sử dụng Nguyên do là vỉ các nhà sẵn xuất bộ xử lí trao

cho người sử dụng tập lệnh này để lập trình ngơn ngữ máu Tuy nhiên như trên đã

nĩi, thường đầy mới chỉ là các lệnh vi mơ chữ chưa phải các lệnh vi mơ mà cấp

lotc số cĩ thể hiểuŸ được Lí do thứ hai để người lặp trnh cứ nghĩ rằng cấp này là

cấp máy thực sự vì cấp thấp hơn là các vi chương tình thường được cơi đặt sẵn

trong ROM và cấu trúc cũng cĩ những đạc thủ iêng và khá phức tạp như chương

6ã nổi nên người sử dụng cĩ thể can thiệp được Vì những l do kể trên nén

cấp ð thường được gọi là cấp may quy ude (conventional machine level, CSp my

ny thuing diye Kho sit qua cdc fp Minh may

7.1 LENH MAY TRONG MAY TINH BA NANG

May tính là một hệ thống điền tử số Nhưng ta hãy xem nĩ Khác các hệ

thống điện từ xố thơng thường thể nào Tổ chức bên trong của một hệ thống

điện tử sổ được xác định bởi chuối các bao tác mà nổ thực hiện trên các số liệu

được lưu ữ trong các phấn tử lðgie của nĩ Trong một hệ thổng xố chuyên

đụng (special parpoxe digitalsysfem), chuối các thao tác này được cố định bởi

phần cứng là các mạch điện tử và hệ thống thục hiên cùng một nhiệm vụ, lặp

Thủ mãi mãi Nồi cách khác các thao tác ở đây khơng phải là một đối tượng để

biến đổi Thí dụ như trong các khối điều khiến ổ địa từ khối này điều khiển

chuyển động của đĩa và truyền các thơng tin nhị phân giữa đĩa và mơi trường,

khác Khối này khơng thể thực hiện bất kì một thao tác nào khác ngồi nhiệm,

Vụ được thiết kế như trên Trong khi đĩ máy tính số là một hệ thống số đã

nàng (general purpose digital system) Máy tính đa năng này cĩ khả năng thực

hiện các vĩ hao tác khác nhau và thêm nữa cĩ thể thực hiển một chuối thao tác

đặc biệt được chỉ thị, Người đùng bệ thống này cĩ thể điều khiến xử lí bằng một chương trình, đĩ là một tấp các lệnh chỉ ra các thao tác phép tốn các,

tốn hạng và một chuổi các xứ lí cần được thực hiện Nhiệm vụ xử lí đữ liệu cĩ

thể được biến đổi một cách đơn giản là thay bằng một chương trình mới với các

lênh khác hoặc cũng là các lệnh đĩ nhưng với các dữ iệu mới Một lạnh máy

tính được biểu điển bằng một mã nhị phân chỉ rà một chuỗi các vi thao tác cho máy tính Các mã lệnh cùng với dữ liệu được trữ trong bộ nhớ Bộ điều khiển

đọc mối lệnh này từ bộ nhớ và đặt nổ vào thanh ghỉ điều khiển Sau đĩ nĩ sẽ

.Mã lệnh (instruetioa code) là một nhĩm các bít chỉ cho máy tính thực hiện

‘mot thao tée nhất định Nĩ thường được chỉa thành một vài phần, mỗi phần cĩ

sự thể hiện đạc biệt riêng của nĩ Phần cơ bản nhất là phần mã thao tác hay mã tốn Ma thao tc (operation code, op-code) Ia mot nhém các bịt xác định các thao tác (hộc phép tốn) như cộng, trừ, nhân, phép địch phép bù, vv TAP sắc thao tác được phát biểu cho một máy tính phụ thuộc vào việc xử lí mà mấy, inh đĩ định tiến hành Tổng số các thao tác như vậy xác định tập các lệnh máy Số bịt đơi hồi cho phần mã thao tác trong mã lệnh là hồm của tổng số lệnh được sử dụng Nĩ phải gốm ít nhất» bìt cho một tập gốm 2" lệnh Thí dụ, Xxét một máy tính cĩ 32 lệnh, trong đĩ cĩ lệnh cộng ADD Ma thao tác gồm 5 bịt với số 10010 gắn cho phếp tốn cộng ADD Khi ma thao téc này được đơn

vị điều khiến nhận được, nổ sẽ phát các chức năng điều khiển đọc tốn hạng từ

bộ nhớ và cộng tốn hạng với nội dung một thanh ghỉ của bộ xử lí Tới điểm này ta bất đấu thấy mối quan hệ giữa tốn hạng và thao tác Một thao tác là

“một phần của lệnh được lưu tt trong bộ nhớ máy tính Như chương 6 trước đây đđã nĩi, đơn vị điều khiển nhận lệnh từ bộ nhớ và địch các bít mã thao tác Sau

đồ nĩ sẽ phát ra một chuỗi các chức năng điều khiển phần cứng thực hiện các

vi tao rác nhất định trong các thanh gỉ bên trong của máy tính Vì lí đo này,

"một mã thao tác cịn được gọi à thao tác vĩ mơ (maacro~operdtion) vì nĩ định rõ một tập các vì thao tác (miero-operaton)

Một thạo tác phải được thực bi tên các đỡ liệu được lưu trữ trọng bộ nhớ valde ee thính ghi của bộ xử | Do \ãy, một mã lệnh khơng những phải chỉ

1 thao td nhất định mà cồn chỉ m các thanh ghi vàhoc các tờ nhớ mà

số thể từn thấy các tốn hạng, cũng như thính hi hoậc từ nhớ mà ở đĩ sẽ ưu

ta ket quả của phép tốn (hao tác), Các từ nhớ cĩ thể được định rõ rong các mã lệnh bằng địa chỉ của chủng Nếu một mấy tính cĩ 2 thanh ghỉ, thì một thánh ghí bộ xửí cĩ thề được định rõ trong mã lệnh bằng ¿bị để cĩ th phen biệt nổ trong tổn số các thành gh Cĩ nhiều ách sắp xếp mã nhị phân cơ các lệnh và mỗi mấy tính cĩ một định đạng(forna!) mã enh dc Bet của riêng n6

“Các định đạng nh được thiết lập bởi người thiết kế mấy tính, là những người

Trang 25

“quyết định kiến trắc của máy tính đó Như vậy, mồi loi máy tính có trên thị

trường sẽ có một loại định đạng lệnh khác nhau

Ta hãy tưởng tượng một cách đơn giản nhất về tổ chúc một máy tính có

một thanh ghỉ bộ xử lí và một định đạng mã lệnh với ai trường như mô tả ở

hình 7.1 Trường thứ nhất xác định thao tác được thực hiện, gợi là mã thao tác

(hay mã toán) kí hiệu là OP và trường thứ hai được ding dé chia dia chi Dia

chí để báo cho bộ điều khiển nơi sẽ tìm thấy toan hang trong bộ nhớ Toán

"hạng nây được đọc từ bộ nhớ và được đùng như dữ liệu được thao tác với dữ

Tiên được lưu trữ trong thanh ghỉ bộ xử lí

kLTEU làm nu

“Mình 71 Mới quan bệ gia ịnh dạng nã nh, địa chỉe nhô và tình gỉ

“Các lệnh được lưu trở trong một vùng của bộ nhớ và dữ liệu được lưu trữ

vàng khác Thí đụ như trong hình, với một đơn vị nhớ có 4096 l6 bịt, chúng ta

cần 12 bịt để đánh địa chỉ vì 2Í2 = 4096, Nếu lưa trữ mỗi mã lệnh rong muột từ

nhớ 16 bịt thì phải cần 12 bị để đánh địa chỉ của một toán hạng và như vậy chỉ

cồn # bị để lập mã chổ một trong 16 lệnh Bộ điều khiển sẽ đọc lệnh 16 bit này

từ phần lưu 6ữ hương trình của bộ nhớ Nó sẽ giả: mã thao tác 4 bit để xác

định chuỗi vì thao tác cần thực hiện Trong quá trình thực thị lệnh nó ding

phần địa chỉ 12 Bí của lệnh để đọc một toán hạng từ vùng đữ liệu của bộ nhớ

Sau đố sẽ thực th lệnh bằng các vi thao tác giữa các toán hạng và thanh ghỉ bộ

xử lí Nếu một thao tác rong mã lệnh không cần toán hạng từ bộ nhớ, phần cồn

lại của các bit rong lệnh cổ thế được đũng cho mục đích khác Thí dụ, các thao

tác (phép toán) như xoá thanh ghi tích lu, lấy số bù với số là nội dung của

thanh ghỉ tích luỹ và thao tấc tăng thanh ghi tích luỹ lên 1, v; các số liêu

được lưu trữ chỉ rong thanh ghi này Chúng không cẩn toán hạng từ bộ nhớ

Gi ede thao tấ loại này, phần thứ hai của mã lệnh không cán để chỉ định địa

chỉ nhớ và có thể được sử dụng để định rõ các thao tác khác cho máy tính

Hình 7.2 là thí dụ đơn giản mình hoạ sự phân biệt cách định địa chỉ trực tiếp ề gián tiếp như sau

[LIw[ ]easmessem

inh 72 isdn a ei ev pv i tiếp

Định dang len nur inh (a) g6m 3 bit ma thao tác kí hiệu a OP (ur bit |

<n 3), 6 bit dia chi AD (Ur bit (0 cho đị chỉ tự tiếp, cho gián tiếp) Lệnh địa chỉ eye tiếp được chỉ ra tên 4 én 9) va 1 bt chi thi mode da chi gd itp hình (®) Nổ được đặt ở địa chỉ số 2 trong bộ nh Bị / bằng tức l lệnh được đơn vị điều khiển nhận biết là lệnh trực iếp Vì rằng phần đị chỉ AD là tương đương với số 9 (001001), nên đơn vị điu khin sẽ tìm toán hạng ở địa chỉ số 9

“Trong hình (e) nh ở địa chỉ số 2 có bị / bing 1 do đổ day là nh địa chỉ dn tiếp Dơnvị điều khiến sẽ thâm nhập đến địa chỉ 9 để tim da chi ei ton hạng Địa chỉ này ở rong phần địa chỉ của từ vì được kí hiệu là MỊAD) Vì MIAD) chứa số 4001 110) nên đơn vị điều khiển sẽ tìm thấy toán hạng trong

Trang 26

hộ nhớ ở địa chỉ số 14 Lệnh địa chỉ gi tiếp cần 2 quy chiếu bộ nhớ để

từn- nạp một toán hạng Quy chiếu thứ nhất để đọc địa chỉ của toán bạng và

quy chiếu thứ hai để lấy chính ton hạng

7-2 CAC BINH DANG LENH

Vi các máy tính thực tế, nhiều lệnh chứa hoặc chỉ rõ vị trí của dữ liệu

được lệnh sử dụng Thí dụ, nh so sánh 2 kí tự xem chúng có giống nhan

không cần phải xác định rõ kí tự nào được so sánh Hình 7.3 trình bày 3 định

cdạng lệnh máy tiêu biểu : lệnh không có địa chỉ, lệnh có 1 địa chỉ và lạnh cổ 2

địa chỉ Có thể tất cả các lệnh có cùng chiều đài, cũng có thể có 2 hoặc 3 chiều

cài khác nhau Các lệnh có thể có chiều đài ngắn hơn, bằng hoặc đài hơn chiều

đài của I tứ

Wisin | BadioânhgB) Mawan | Omari | Basw2

lệnh, chương tình nào có các lệnh ngắn sẽ chiếm ít không gian nhớ hơn

chương trình có các lệnh dài Thí dụ, một chương trình gồm n lệnh đài 16 bịt sẽ

chiếm một không gian nhớ chỉ bằng một nửa ø lệnh đài 32 bịt, Lí đo thứ hai là

tốc độ xữ lí của bộ xử lí cũng phụ thuộc vào độ dài các lệnh Các lệnh ngân

hơn cho phép bộ xử lí ruyền được nhiều lệnh hơn trong một đơn vị thời gian

® Cần đủ không gian trong lệnh để diễn tả tất cả các thao tác mong muốn

“Thí đụ, một bộ xử lí cần 2” thao tác thì phải có kích thước mã lệnh lớn hơn

hoặc bằng ø bi

Chiều đãi của từ lệnh máy nên à một bội số nguyên của chiếu đi kí tự Nếu

mã kí tự có É bit thì chiếu đầi từ máy phải là bội số nguyên của É, nếu không

“2 kí tự sẽ để dàng hơn chữ không như cách tổ chức thứ hai cần phải rất ra mỗi Xí tự từ các từ để so sánh Tuy nhiên với cách tổ chức thứ hai chiều đài địa chỉ chỉ cần J# bit có nghĩa là chiều dài lệnh sẽ ngắn hơn, chiếm ít không gian hơn

và thời gian tìm-nạp lệnh cũng ngắn hơn Như vậy, để bộ nhớ hoạt động tốt hơn phải trả giá bằng số bít trong trường địa chỉ đài hơn và như vậy có nghĩa là ệnh sẽ dài hơn Tại đây mối lệnh có thể có đến 6 trường, mỗi trường có thể từ đến 5 byt Lệnh ngần nhất đài / byte lệnh đài nhất đài đến 9 byte kể cả tiền

tố Trong các vi xử lí thế hệ sau như B0386 lệnh dài nhất lên tới /7 byte Các lênh này có định dạng ít theo quy luật nhất định Chỉ có điều trong các lệnh 2 toán hạng thì nếu một toán hạng đã nằm trong bộ nhớ thì toán hạng còn lại không được nằm ở bộ nhớ mà phải nằm ở thanh ghi Thí đụ chỉ tổn tại các lệnh công thánh ghỉ với bộ nhớ và bộ nhớ với hanh ghỉ chứ không có các lệnh công

từ nhớ này với từ nhớ kia

213

Trang 27

vĩ xử í 32 bịt (như ở 80386) cần thêm một byte nữa là SIB (scale, index, baxe)

biểu thị cho một số đặc ính kĩ thuật nữa

“Các bịt e và røg quy định cho các thánh ghi nu trong bảng 7.1

Bit d chỉ hướng đĩ của dữ liệu, đ = J dữ iệu đi đến thanh ghỉ cho bởi 3 bít

0 đến từ thanh ghì đó Bịt w quy định địa chỉ nhớ là từ hay byte ï

la byte Byte MODE diéu khiến các kiểu định địa chí của bộ xử lí 80x86 Một

tong các toán hạng được xác định bởi sự kết hợp của trường mod và trường,

“R/M Toán hạng kia luôn là thanh ghỉ được xác định bởi trường reg Các tổ hợp

có thể được xác định bởi trường moá 2 bít và trường R/M 3 bịt được trình bầy

trong bing 7.2

Như thấy trong bảng, có thể định địa chỉ gián tip qua thanh ghi BX, SỊ và

DI nhưng không qua các thanh ghi AX CX, DX và BP hoặc SP cho phép địa

chỉ trực tiếp nhung chỉ với tư cách loại bỏ địa chỉ giần tiếp qua BP, Có thể sứ

cdụng tổng của BX và Dĩ làm con trỏ nhưng không được dùng tổng của BX và

'CX hoặc AX và DI Không có các kiểu túc thời mặc dù có những mã toán đặc

biệt cho phép một số lệnh được phép định địa chỉ tức thời Tự động định vị chỉ

901 | (exon (BXHIDIhdep9 | [AXiDjsásp+6| ©L ox

| 916 | IBPRiSI | IEPliSlsdss3 8PhiSihdsple| ov | Ox

"nguồn và toán hạng nào là đích,

Cot mod = 11 có nghĩa là toán hạng ở rong thanh ghỉ được chỉ định, tuỳ thuộc vào toán hạng là từ (word opcrand) hay byte Tbyte operand) Ding gid ti mod này khi cả bai toán hạng đều ở trong các thanh ghi

“Từ bộ xử lí 80386 32-bit trở đi, Intel thêm vào một byte gọi là SIB theo sáu byte MODE Byte iy xác định một hệ số tỉ lệ (scale factor) va 2 thanh ghỉ Khi có mật byIe này, địa chỉ của toán hạng được tỉnh bằng cách nhân thanh ghỉ 2, 4 hoặc 8 (uỷ thuộc vào Scale) sau đổ cộng với thanh ghỉ cơ sở (base regisler] và cuối cùng có thể công thêm một độ dịch chuyển 8-bit hoặc 32-bi tuỹ thuộc vào mod, Hầu như tất cả các thanh ghi đều có thể sử đụng làm

chỉ số với

215

Trang 28

thanh ghí chỉ sổ hoặc thanh ghí cơ sở Các kiểu SIB có ích trong việc tuy xuất

các phần tử đây,

Các lệnh máy thường được cho đưới dạng các rử gợi nhớ (mnemonic) di

kèm theo mã máy Những từ này giúp cho người lập trình đễ hình dung ra nội

đang các lệnh hơn Hiện nay các chương trình sử dụng các lênh máy đều được

viết bằng các lệnh đưới đạng này

Thí dụ

lấy của lệnh nạp số 89h thanh ghí AL là

1011 0000 1000 1001; = B989 h Khi sử đụng từ gợi nhớ MOV, mã lệnh này được viết để hiểu như sau

MOV AL.49h

“Thí dụ tiếp theo,

Lệnh MOV CL.[BX] có mã là 1000 1010 0000 1111

Lệnh này thục hiện thao ti

thanh ghỉ BX vào thánh ghi CŨ,

7.3 PHAN LOAI CAC LỆNH

“Các lệnh ở cấp máy thông thường được chỉa thành các nhém như sau :

nap noi dung byte nhớ có địa chỉ là nội dụng

7.3.1 Các lệnh di chuyển đữ liệu

‘Sao chép dữ liệu từ nơi này sang nơi khác là thao tác cơ bản nhất trong tất

cả các thao tác Bằng cách này có thể tạo ra một đối tượng mối có mẫu bịt

giống hệt mẫu ban đầu Dữ liệu được cất ở nhiều nơi khác nhau tuỳ vào cách

các từ được truy xuất ; thường là ở bộ nhớ, ở thanh ghỉ hoặc ở ngân xếp C¡

lệnh di chuyển dữ iệu yêu câu cả nguồn (vị trí ban đầu) và đích của thông tin

(nơi đặt bản xao) phải được xác định một cách rõ rằng hoặc một cách ngắm

định Lênh dị chuyển phải cho biết bằng cách này hay cách khác lượng đữ liệu

cẩn di chuyển từ một bịt đến toàn bộ nh Viếc dĩ chuyển dữ liệu được thực

hiện cho tới khi có dấu biệu kết thúc vùng dữ liệu (end-of-data field mask)

được tìm thấy trong chính đữ liệu

7.3.2 Các lệnh tính hai ngôi

“Các thao tác hai ngôi là những thao tác kết hợp 2 toán hạng để sinh ra một

kết quả Hầu hết các máy đều có các lệnh thực hiện phép cộng và trừ trên các

216

số nguyên Phép nhân và chia các số nguyên cũng thường là các phép toán chuẩn trong tính số học Một nhóm các phép toán nhị nguyên khác là các lệnh

“đại số lôgie Các lệnh thông dung la AND, OR và XOER cho các kết quả là

“TRUE hoặc EALSE Ngoài ra các phép toán này cũng hay dùng cho việc xử lí các bị trong một từ qua các toán tử bifvise ¡ đồ là việc thực hiện phép toán lögic cho từng bì tương ứng của 2 từ với nhau

3 Các lệnh tính một ngôi Các thao tác một ngôi có một toán hạng và ạo ra một kết quả Do các phép, tính một ngôi cần t địa chỉ hơn các thao tác hai ngôi nên các lệnh cũng thường, ngắn hơn Cúc lệnh địch hoặc quay nội dung của một từ hoặc một byte rất có Ích và thường có nhiều biến thể khác nhau Dịch là thao tác trong đó các bịt được chuyển sang trấi hoặc phải, các bit được địch ra khỏi một đầu của từ sẽ mất Thao tác quay là thao tác địch trong đó các bí được đẩy ra khỏi đầu này nhưng xuất hệ lại ở đầu kia Cả hai thao tác dịch phải tái và quay phải /trái đều có ích Khi một từ n-bit được quay trấ k bịt sẽ cho cùng kết quả với việc cquay phải từ này (a-k bit

Các thao tác bai ngôi thường xiy ra với các toán hang đặc biệt Đôi khi cấc lênh này được thay bằng các lệnh một ngôi lại cho kết quả nhanh chóng hơn

“Thí đụ thay các phép nhân và chỉa cho các số bảng 2” bằng các phép địch trái hoặc phải đi bit thì nhanh hơn nhiều

Tà sử dụng các lệnh nhảy có điều kiện (rẽ nhánh có điều kiện) Lệnh này kiểm, tra điều kiện nào để và nhây tới một địa chỉ nhớ cụ thể nếu điều kiện được thoả

“mãn Đôi khi có thể thiết lập một bít trong lệnh là L hoặc 0 nghĩa là thự hiện

“nhảy nếu điều kiện thoả mãn hoặc không thoá mẫn

“Điều kiện kiểm tra thông thường nhất là bit cụ thể trong máy có là 0 hay không Nhiều máy tính sử dụng một sổ bịt để cho biết điều kiện cụ thể Thí dụ bịt tần (overlow) được đạt là I mỗi khi một phép toán số bọc cho một kết quả

ai Kiểm tra bịt này cho phép biết được sự tràn của phép toán số học tước Vì thể nếu xây nụ tràn, chương trình có thể nhảy tối một thường trình báo lỗi

Trang 29

“Tương tự bộ xử lí cũng cĩ 1 bit nhớ (cary b0 được đạt khi cĩ sổ nhớ xuất hiện

ở bịt tân càng bên trấ, thí đụ cộng 2 số âm Một số bộ xử lí cĩ lệnh kiểm tra

bit tan cũng bên phải để xem số đĩ là chấn hay lẽ Việc kiểm tra zero Iai quan

trọng đối với các vịng lập và cho nhiễu mục dich khác Thay vì kiểm tra tùng

bịt trong từ để biết từ đĩ cĩ bằng Ø hay khơng, bộ xử lí cũng cĩ lệnh kiểm tra

tử và nhảy nếu từ đ bằng 0

hi cần so sánh hai từ hoặc hai kí tự xem chúng cĩ bằng nhau hay khơng

sấn 3 địa chỉ Hai cho các phần tử dữ liệu và một ch địa chỉ nhảy tới nếu điều

kiện là đúng Các bộ xử lí cổ ít hơn 3 địa chỉ cho mỗi lệnh chúng thực hiện

lệnh nhảy cĩ điều kiện bằng một lệnh bỗ qua lệnh kế tiếp sau nếu điều kiện

thộ mãn Lệnh như vậy thường là một lệnh nhảy

[hay khong điều kiện là trường hợp đặc biệt của nhảy cĩ điều kiện trong

đổ điều kiện luớn được thoả mãn,

2.3.5 Các lênh gọi thủ tục

“Thủ tục là một nhốm lệnh thực hiện một cơng việc nào đĩ và cĩ thể được

oi tữ nhiều nơi rong chương ình Trong hợp ngữ thường hay dùng thu ngữ

Chuong tinh ple (subroutine) thay cho thi tye (procedure) Khi th tục hồn

tết cơng Việc, thì tục phải rổ về câu nh tiếp ngay sau lệnh gọi Do đ địa chỉ

trở về phải được truyền tới thủ tục Địa chỉ này cĩ thể được đặt ở một trong 3

ơi: bộ nhớ, thình ghi hoc ngân xếp

“Thủ tục cĩ thể gọi những thủ tục khá, bởi vì mối thả tục đều cổ Khơng

gian cho địa chỉ tở vẻ, Khả năng tủ tục gọi chính nĩ được gợi là sự đệ quy

(recursion) th tung hop et quan trọng trong lập tình Cổ nh gọi thơ tục đặt

địa chỉ ở về trong thanh ghi Nếu thủ tục 1à đệ quy th sẽ phải đạt địa chỉ ở ể vào một nơi khác mỗi lấn th tục được gi Thường các ệnh gọi thủ tục cất

địa chỉ tr về vào ngăn xếp Khi hồn, xếp và đưa địa chỉ này vào thanh hi bo đếm chương trình (hay con trồ lệnh) th tục lấy địa chỉ trở về ra khổi ngân

.3.6 Các lệnh điều khiển vịng lập

Nha cầu thực thí một nhĩm lệnh với một số lần cố định xây ra thường

xuyên nên một số mấy tính cĩ các lệnh nhảm dễ thực hiện điều này Các

phương pháp đều bao gồm một bộ đếm được tăng hoặc giảm bởi một hàng số

nào đĩ mối lần qua vịng lập Bộ đếm cũng được kiểm tra mồi lần qua vịng lập,

nếu điều kiện đúng vịng lấp được kết thúc Phương pháp này khổi động bộ đếm ở ngồi vịng lặp và sau đổ bất đầu thực hiện ngay mã vịng lặp, Lạnh cuối cùng của vịng lập sẽ cập nhật bộ đếm và nếu điều kiện kết thúc chưa thoả mãn

sẽ quay trổ lại lệnh đầu iên của vịng lập Ngược lại vịng lạp kết thúc và thực thị lệnh đầu iên ở ngồi vịng Dạng lặp vịng này đặc trưng cho loại kiểm tra ở cuối Loại này cĩ đặc tính là vịng luơn luơn được thực th tối thiểu 1 lần ngay,

cả khi sổ lập n < 0 Phương pháp khác là kiểm tra ngay từ đầu vịng lập Việc kiểm tra trong 2 tường hợp này là khác nhau và người thiết kế bắt buộc phải chọn mot trong hai phương pháp

“Tất cả vi xử í của Inel đều đùng lệnh LOOP để lặp lại một số lần cổ định Lệnh này làm giảm thanh ghi CX hoặc ECX đi 1 và nhảy tới nhăn đã cho nếu Xếi quả khác 0 Nếu kết quả khác hoặc lớn hơn 0, vịng lặp được lập lạ ; ngược Tại kết thúc vịng lập và lệnh theo sau vịng lập được thực hiện

1.3.7 Các lệnh vàora Hiện cĩ 4 phương pháp khác nhau được thực hiện vối các lệnh vào/ra

1 Vào ra theo chương trình theo cách hồi vịng,

3 Vào ra theo ngất,

3 Vào ra bằng truy cập bộ nhớ trực tiếp DMA và

4 Vào ra sử dụng các kênh dữ liệu

Ba phương pháp đầu được dùng phổ biển ong các máy vi tính như đã được trình bày trong chương trước Riêng phương phấp thứ tư được ding trong cic ray tinh 1Gn (mainframe) Tai day them các bộ xử lí vào rà đặc biệt gọi là các kênh dữ liệu (data channel) Một kênh thực sự là một máy tính chuyên dụng được cung cấp một chương trình để hoạt động và sau đồ ngừng hoặc chạy chương trình mà khơng cần sự giúp đỡ nào từ bộ xứ lí chính Chương trình của kênh cũng rất phúc tp, bao hàm cả việc chuyển nhiều khối dữ liệu và cẩn ít

“gắt hơn so với việc truyền bằng DMA đơn giản

“Các máy vi tính cĩ một lệnh vào (nhập) IN và một lệnh ra (xuất) OUT Mỗi

ắn sẽ truy cập tới một địa chỉ vào ra gọi là cổng Với cấc địu chỉ được đánh bing 2 byte (lin hon FFh) pli ding thanh ghi DX để lưu hữ địa chỉ đĩ Thí

dy, nhém lệnh xuất số 98h ra cổng 378h phải như sau

Trang 30

MOV AL, 98h

MOV DX 0378h

OUTDX, AL

7.4 CAC THANH GHI VA LENH MAY CUA VI XU Li 80x86

7.4.1 Binh dia chi

nhớ và các thanh ghỉ trong 8086

(Qué trình thực hiện các lệnh gồm các thao tác tính toán và trao đổi đữ iệu

giữa bộ nhớ và các thanh ghi Vì vậy khảo sắt cấp máy quy ước chính là khảo,

xất quá trình này Ta có thể xem xét bộ nhớ và các thanh ghi của vi xứ lí 8086

của hang Intel lam thi du Chịp 8086 có thể địa chỉ hoá được 2”” = J Mbyte

nhớ, đánh số liên ục từ 0 như hình 7.3 Các lệnh có thể được thực thí theo tùng

byte (8 bit) hose tang we (16 bit) mot

Vi cée thanh ghi cia 8086 rong 16 bit, nem néu ding | thanh ghỉ thì chỉ số

thể đánh được đến 2! = 64kbyte địa chỉ nhớ Do vậy các nhà thiết kế phải

‘ding đến 2 thanh ghỉ để đính địa chỉ cho mỗi byte nhớ tong không gian IMbyte D6 18 một tong 4 thawh gh doan (segment) để trỏ tối một đoạn nhớ

lôgic mà ö nhớ cấn truy xuất nảm trong doạn đó và một thanh ghỉ độ lệch

(6ffset) để chỉ khoảng cách từ địa chỉ thấp nhất trong đoạn tới ö nhớ đó Đoạn

nhớ lögic của 8088 là một vùng nhớ nằm trong không gian nhớ vật lí IMDyte

số độ đài cổ định 64kbyie Địa chỉ của ô nhớ thấp nhất trong đoan được gin

cho dịu chỉ don hay còn gọi là dia ch cơ sở đoạn Các đoạn nhớ nhất thiết

220

phải cách nhau 16 byte do đó các thanh gỉ đoạn tr tới các địa chỉ là bội số của 16 Các đoạn nhớ có thể kể cận nhau, tích bit nhau hoặc phủ lấp một phần Jen nhau Như vậy một ð nhớ được định địa chỉ lðgie bôi một cập thanh ghỉ 16

bi là doạ và độ léch (segment: offset) Khi tray xuất bộ nhó, đơn vị ghếp n bus ong bộ xử lí sẽ tính từ đó ra địa chỉ vặt lí thực sự của byte nhớ cẩn truy cập theo công thức

"Địa chỉ vật I'= Địa chỉ đoạn x 1 + Địa chỉ độ lệch

(segment x 16 + offset) LBộ xử lí 8086 có tất cả 14 thanh ghỉ 16 bị Mối quan hệ giữa địa chỉ vật lí

vi dia chi logic eting nhu ede thanh ghỉ được rình bầy trên hình 74

BP stese porter na gXcơEó con SI-soce ine ter hc ert

ĐI đeqsstentder(ñønhgW cose sopra tanh gan); a8 eh); Sch pte ar gh eon a 6) 08 teat na i oa 55: tack sper (han oh dba gn 46); ES- extn sega thar 9 do eh

Pit einer aon Wenn WS): Ragnan aed

Trang 31

điểm của việc sử dụng thanh ghi bên trong cho việc lưu rữ tạm thời dữ liệu là

cho phép CPU có thể truy cập dữ liệu nhanh hơn rất nhiều so với việc phải truy

cập bộ nhớ ngoài Các thanh ghỉ này được tách ra thành 2 phần : phần 8 bịt cao

gội là thanh gí AH và phần & bịt thấp gọi là thanh ghỉ AL ; BH va BL ; CH và

CL ; DH và DL Các nữa này đều có thể được địa chỉ hoá tách biệt

“Thánh ghỉ AX chủ yếu được đùng cho các phép toán số học Thí dụ, đ tính

tổng 2 số nguyên, chương trình nạp một trong hai số đồ vào AX, sau đó cộng

số thứ hai với AX và cui cùng cát nội đun của AX vào bộ nhớ, Cũng có thể

đồng các thanh ghỉ khác nhưng tốc độ sẽ chậm hơn so với vige dùng AX

‘Thanh ghi BX thường dùng để chứa coa tỏ (pointer) tỏ tới bộ nhớ

“Thanh ghỉ CN chứa số đếm trong các lệnh lập vòng Để lập một vòng lập 7

Hin, CX được nap gié ti n sau mỗi lá lạp Giá trị này được giảm đi 1 cho đến

koi CX bằng Ø thì vòng lập kết thúc

‘Thanh ghi DX là một thanh ghỉ mở rộng của AX trong các lệnh nhân và

chia Thanh ghi này chứa nữa cao của một tích 32 bịt hoặc nữa cao của số bị

chia 32 bit Trong việc thực hiện các lệnh đọc/viết các cổng vào ra, thanh ghỉ

này được ding để chữa địa chỉ của các cổng cẩn đọc viết cổ giá trị địa chỉ lớn

hơn FFh,

+ Các thank ghi dogm : C6 4 thanh ghi doan ding để lưu trữ địa chỉ 16 bít

của 4 loại đoạn nbé logic ; doan ma CS , doan dt lieu DS đoạn ngăn xếp SŠ về

đoạn phụ ES Ngăn xếp (staek) là một vùng nhớ được đặt ra ngoài để lưu trữ

địa chỉ và đữ liệu trong khi thực hiện chương trình con Khi lạm dừng chương

trình chính tại một điểm nào để để thực hiện một chương con, bộ xử lí phi lưu

trữ tất cá các thông số hiện có tại điểm đồ (thí dụ nội dung của các thanh ghỉ

liên quan) vào vòng nhớ ngăn xếp để sau khi kết thúc chương trình cen bộ xử

1í lấy lại được các nội dung này để tiếp tục thực hiện chương tình chính từ

điểm mà nó bị tam đừng Đây là loại vùng nhớ tảo sau~ ra trước LIEO (last in

~ frst out, nghĩa là các đỡ liệu được cất vào sau cùng thì sẽ được goi rà đầu

tiên Thanh ghi đoạn ngăn xếp được đùng để git 16 bịt cao của địa chỉ bắt đầu

cho đoạn ngân xếp của chương trình

+ Các thanh ghỉ SI và DĨ được đùng cho các thao tác chuối Một thao tác

chuối điển hình cần cổ địa chỉ nguồn xác định bởi thunk gửỉ chỉ số ngướn SĨ

tong đoạn dữ liệu và địa chỉ đích được xác định bởi thanh ghi chi sd dich DI

rong đoạn phụ (và cũng có thể à chính đoạn DS)

22

Thanh gỉ con trỏ cơ sở BP và con trỏ ngân xếp SP thường được ding dé địa chỉ hoá ngăn xếp BP trỏ tới đầy của khung ngân xếp hiện tại và SP tr tới định của khung ngân xếp

* Thanh ghỉ con trở lệnh ÍP : ong nhiều máy còn được gọi là bộ đếm chương trình PC (program counter) gil dia chi do Iéch (dia chi offset) 16 bit của byle lệnh tiếp theo nằm bên trong đoạn mã lệnh Như trên đã nổi, giá trị được chứa trong IP cùng với địa chỉ cơ vở trong cấc thanh ghi đoạn để tạo thành một địa chỉ vậ í ô nhớ cần truy xuất

+ Thanh ch cở P là một thanh hì đặc biệt Đó là một tập hợp các bịt có thế được dt (seQ) hay xoá (clea?) Mỗi bịt đó được lấy từ một mạch lạ để chỉ thi trạng thái sinh ra bởi quá trình thực hiệ lệnh hay điều khiển các phép toán của đơn vị th hin ln Thanh ghỉ cỡ trong 80E6 có 9 ít cỡ ích cực Ví dụ một mạch lại được gọi là cờ nâZ vẽ được đạ lên Ì nếu tổng của hai số nhị phân 16-bit e6 nhs vị tr bị cao nhất, Nế không có nh ở bịt cao nhất rong phếp công thì cờ nhớ sẽ được đạt gi trì 0, Như vậy nhờ vào cỡ, đơn vị thực thì nh ác định rất nhanh là phép toán có nhớ Thanh ghỉ cờ còn dùng để chỉ kết quả

‘cia mot thao tée v6i ngoại vĩ có tốt hay không Su cỡ tạng tái ong nhóm tày là cỡ nhớ (CE), cỡ chấn lễ (PF) cỡ nhớ plụ (AE), cở eo (ZF), cờ dấn (SF) và cờ tàn (OF) Tên của những cử nãy cũng đem lại gợi ý vế trang thi nào sẽ ảnh hưởng đến các cỡ 8086 sẽ kiểm tra những cờ này để xá định xem hai hành động lưàn phiến nào sẽ được thị hành trong quá ình thực hiện lệnh

Ba cỡ còn lại ương thanh ghỉ cỡ được sử dụng để điều khiến các phép toán khác nào đồ của bộ xử lí Ba cỡ này khác so với sấu cỡ miêu t ở rên rong cích đại hoặc đặt li giá tị của chúng Cỡ điều khiển được đặt hay xoá một

‘eich cổ chủ tâm với các lnh riêng được đặt rong chương tình của người dùng, Ba cờ điều khiến là cờ Đáy (TP), được sử dụng cho chạy tang bude chương tình : cở ngất ({P) dùng để cho phếp hay cấm các ngất của chương trình và cờ lướng (DP), đồng với các lệnh chuổ Dưới đây là vị trí của các bit

cờ trong thanh gỉ cỡ của 8086,

CTT-LIRIERTHEIETTATTET Telas 1.43 Tập lệnh máy của 8086

Tap lệnh của 8086 được liệt kẻ như bảng 7.3 dưới day Nhiều lệnh tham, chiếu I hoặc 2 toán hạng trong các thanh ghỉ hoặc trong bộ nhớ, nhưng không,

3

Trang 32

thể cả 2 toần hang trong một lệnh đều là ð nhớ Hầu hết các lệnh đễu có nhiều

‘dang ma hod khác nhau tuỳ thuộc vào bản chất của các toán hạng Thường có thể chỉs các lệnh thành nhiều nhóm Nhóm chứa các lệnh đi chuyển đữ liệu bản

trong máy di chuyển giữa các thanh ghỉ, bộ nhớ và ngăn xếp Nhồm thực hiện

“các phép tính số học : nhóm thực hiện các phép tính số BCD Nhóm thực hiện phép kiểm trà và so sánh Nhóm cất, di chuyển, so sính và quất chuối các kí tự

hoặc các từ Nhóm còn lại gốm một vải lệnh như biển đối, vàojra và đừng bộ

xử lí Các lệnh cũng có thể cố một hoặc vài tiến tổ prefix) Mỗi tiến tổ là một

byte dic bigt thường đứng trước lệnh Tiền tố làm cho lệnh theo sau nó được

lập lại Một số tiền tổ khác được ding để buộc lệnh phải tìm nạp toán hạng của

ênh từ ngân xếp hoặc từ đoạn phụ thay vì từ đoạn dữ liệu,

ine Tang toan hang gic én 1 | ‘Nha nếu bằng 0

int s —_ |LAHF Ì Nạp 8 bí thấp của cổ vào

se into " LS Í Nạp ö nhỏ từ kếp vào thành ghí đoạn đữ lêu RET 118 v8 cd nad LEA | Nap dia chi higu dung

aaa Jano “Chinh sau phép céng 268 [GMP [ So sanh toán hạng đích Geng ASCH vaose wc OZ | Ney nu Oxe0 Nhảy nếu cố cỗ nhệ LOOP | Vooa ee Nạp sâu (0)

AM sống ASGI ‘Grin sau phep nhên 2 |CMPSB | So sánh xâu (lo) Bint obi lohan, Nhây nếu lớn hơn hoặc |LOOPNZ| LạpHIMNiHôngbìngD POPE | TAN EN kg Bont

lAoc JAD [ cong 2 on hang "Cộng số sở mồ CWB | Biếnđổhanhtvkếp | DAA | Hidu cnn tap phn sau_| pháp cộng CÔ | lẽ awe | Nniy eng unin Nhây nấu nhỏ hơn hoặc [MOV | Chuyểnnguốntáidíh | bảng [WOVE | Chưến xe 2

lke — [xem co | xeemee —— |JHr | te — lạc | Thos | AC | Nhiy nfs knéng 3 ais INE@ | cou noyidy pia — hoặc bằng 4

24

Trang 33

_| hoạ bằng lopsp | Ngxetukem, SEN | Ow ty nếu tông có

INC Nhây nốu Khong nnd hon |POP [Lithann 3”) Hối phục nội dung (các L— luovso | Chuydn nau kde) [SETNS | Datbyte nu néng a chấn lễ al

fine Wy of tg ob on [PORE | Hl pye nana ee [MOVSX | Chuyén v6 Sign-exiend _[SETNZ | Datbyionéukhéng bing0

NZ | Miynmôngtgn |RSR | Quy phi qua cond hông bảng9 _ | ISETEE | Om byte néu 8 aati hase |SETE | Oat byte ndu bingo

1o Nhiy néu ed ban ÌREP | pla lân

= Nhày nếu cócð chẩn lê /REPE | L8plgiknbìng WSETC | Đmmwanfacscom [Sad | 0ghuAqutep)

TPE | nnd nu chin é ohn |REPNE | LHplawuMhngbang SEE | Bwoye nda bin 1 a rk

BPO] Nhiy ndu chin BiB |REENZ | Lapiaixh ving bingo | eens esis — See AN

RET Teas st | Dated rung eee | ee

ROL | Guay vai Sn —_| Bmzangát

ROR) Gum STOS | La radu

| ane | T1 Các chế độ định địa chỉ

SA | Die wala Pry oe nhà số học srosw | uuwøxkum) suet Peep r “Cách thúc cho biết các toán hạng trong lệnh 2 ở đâu được gọi là phương pháp

8 | mp “nh đu chỉ hay chế độ đ chỉ Cức lạnh có thể được phân loại theo số đa chỉ

sa — | Trueonwm TEST | nes (min be din sử dạng Lưu § ring tp ede than gh cia bo x được sắp xếp cũng to nên

L seas | mm san J sạ _| = số thể có 1,2 hay 3 địa chỉ một bộ nhớ tốc độ cao và cũng có một Khong gan dịa chi, Tang gust, mot Fe SeASB | uit iu (oe [CHG | rao 6 |

Trang 34

“Thí đụ các lệnh cộng có 2 địa chỉ sử đụng một là nguồn và một à đích Sa

.đồ cộng nguồn với dich va cat ket qué vio dich

Bich (destination) = Bich (destination) + Nguén (source)

‘Che Lenh e6 3 dia chi cho bigt 2 nguén va một đích Nội dung 2 nguồn được

“công với nhau và ci kết quả vào đích

"Để truy cập dữ liệu trong bộ nhớ, bộ xử lí phải tính được địa chỉ vật

20-bi từ các câu lệnh 8086 làm diều này bằng cách công giá tị địa chỉ hiểu

‘dung L6 bịt với địa chí eơ sở đoạn là số lổ ít nằm tại một trong bốn thanh ghỉ

đoạn, Địa chỉ hiệu đụng (EA : effective address) la 46 Igeh (displacement hay

offset) cia toin hang mong muốn tính từ địa chỉ co sỡ đoạn Bất cứ địa chỉ cơ

sở đoạn nào cũng ding được nhưng thông đụng nhất là đoạn dũ liệu Hình 7.7

biểu điền trường hợp mà địa chỉ hiệu dung EA được cộng vào địa chỉ cơ sở

đoạn dữ liệu để chỉ ra toán hạng tron bộ nhớ và cách mà bộ xử lí tính địa chỉ

vật lí 20 bit trong 8086, Địa chỉ vật lí bật đầu của đoạn dữ liệu trong hình là

2000 Bộ xử lí cộng thêm địa chỉ hiệu dụng 437A vào địa chỉ cơ sở đoạn dit

liệu 20000 để tạo ra địa chỉ vật í gửi tới bộ nhớ là 2437A Địa chỉ vật f hoặc

viết đưới dạng số 2437A hay dang segment base 2e! (2000 : 437A)

‘Muah 7.7 Ti a ci vit ino ung han doan va ịachỉ hiệu dụng

Don vj thị hành lệnh EU trong bộ xử í tính toán địa chỉ hiệu dụng cho toán

hạng dựa vào thong tin ghỉ rong câu lệnh Có thể chỉ cho EU sử dụng con số

trong lệnh như là địa chỉ hiệu đụng, sử dụng nội dung thanh ghỉ xác định như

địa chị hiệu dưng, hay tính toán địa chỉ biệu dụng bằng cách cộng số trong lệnh

với nội đung của một hay hai thanh gbi xác định Đó gọi à các chế độ định địa

chi, Sau day t6m tắt các chế độ định địa chỉ được dùng trong 8086,

7.8.2 Dinh dia chi te thoi (immediate addressing) : Cách đơn giản nhất

để một lệnh xác định một toán hạng là phần địa chỉ cũa lệnh chứa chính toán

28

hạng đó chứ không cần địa chỉ hoặc thông tin khác mô tả toán hạng đó ở đầu Một toán hạng như vậy gọi là toán hạng tức thời bởi vì toán hạng được tìm nạp tự động từ bộ nhớ cùng lúc với lệnh và được sử dụng ngay lập tức Định địa chỉ tức thời có ưu điểm là không cắn một truy xuất bộ nhớ nào Tuy nhiên có nhược điểm là toán hạng bị giới hạn bởi một số chỉ đặt vừa trong trường địa chỉ

“Thí dụ lệnh ; MOV CX,437Bh; nạp số 437B vào thanh ghỉ CX

Khi thực hiện, bộ sử lí sẽ đạt số 437B tức thời lên thanh ghỉ 16-bit CX

7.8.3 Dinh dia chi true tigp (direct addressing) : Phương pháp này xác định một toán hạng bằng cách cung cấp địa chỉ của ừ nhớ chứa toán hạng cho

bộ xứ

`Với chế độ định địa chỉ bộ nhớ đơn giản nhất, địa chỉ hiệu dụng chỉ là số

16 bít được viết trực tiếp trong câu lệnh,

‘Thi dy Ienh : MOV BL, (437A) : nạp nội dung 6 nhớ có độ lệch,

tính từ địa chỉ cơ sở đoạn là 437A vào thanh ghỉ BÚ

Khi được thục hiện, bộ xử lí tính toán địa chỉ ð nhớ vật lí 2

‘cong them địa chỉ hiệu dụng 437A vào địa chỉ cơ sở đoạn dữ iệu Chế độ định, địa chỉ này được gọi là trực tiếp vì độ địch chuyến của toán hạng được chỉ ra rực tiếp tong câu lệnh Độ lệch trong câu lệnh sẽ được cộng vào cơ sử đoạn dữ liệu trừ

“khi yêu cầu bộ xử Ìí cộng nổ với cơ sỡ đoạn khác

Một thí dụ khác : MOV BX, 437A) 'Khi thực hiện, lệnh này copy một từ l6-bịt từ bộ nhớ vào thanh ghi BX

"ôi vì môi địa chỉ của 8086 đại điện cho mot byte, vay từ phải lấy từ ai ở nhớ Byte tai do léch 437A so với cơ sở đoạn dữ liệu sẽ được copy vào BL, nội dung của địa chỉ cao hơn tiếp theo, độ lệch 437B, sẽ được copy vào thanh gỉ BH như thí dụ trên hình 7.7 Dựa vào mã lệnh, 8086 sẽ tự động xác định số byle mà

nổ phải truy cập trong bộ nhớ Một điểm quan trong ở đầy là 8086 luôn luôn lưu trữ byie thấp của từ trong địa chỉ thấp và byte cao iia tr trong dia chi ea Hai thí đụ trên đây chỉ ra cách mà chế độ truy cập địa chỉ rực tiếp có thể được dùng để xác định nguồn cũa tường toán hạng Truy cập địa chỉ rực tiếp cũng được ding để xác định toán hạng đích trong bộ nhớ, Ví đụ lệnh MOV

Trang 35

[H37AhJ BX sẽ copy nội dụng của thanh ghỉ BX vào ai ô nhớ trong đoạn dữ

liệu Nội dung của BL sẽ copy vào 6 nhé c6 độ lệch là 437Ah, nội dung thành,

ghĩ BH sẽ copy vào 6 nhớ có độ lệch 437B

7.5.4 Định địa chỉ thanh ghi (register addressing) = Trong chế độ nà

trường địa chỉ của lệnh chứa số của thanh ghỉ lưu giữ toán hạng (thanh ghỉ là

toán hạng nguồn của câu lệnh) Các máy tính được thiết kế chế độ địa chỉ này

Vi 2 li do: các thanh ghí có tốc độ tuy cập nhanh hơn bộ nhớ chính và do số

lượng thanh ghỉ rất íL nên chỉ cần một í bít để đánh địa chỉ chúng

Thí dụ lệnh: — MOVCX.AX; copy nội đụng thanh ghỉ AX vào

than ghi CX:

[Nh rằng vị trí đích là trước đấu phẩy trong cầu lệnh và vi trí nguồn là sau

dấu phấy Và nội dang của AX chỉ copy vào CX chứ không phải đi chuyển thực

sự Nổi cách khác, nội đung trước của thanh ghỉ CX bị viết đề lên nhưng nội

dung AX không đổi Ví dụ, CX chứa 2A84 và AX chứa 4971 sau khi lệnh

MOV CX AX thực hiện CX chứa 4791 và AX vẫn chứa 4971 Có thể copy bất

cứ nội dụng thanh ghỉ 16 bịt nào vào thanh ghỉ 16 bít khác và thanh ghỉ 8

vào thành ghỉ 8 bịt bất k Tuy nhiên không thể dùng lệnh MOV CX, AL bởi vì

đây là cổ gắng copy thanh ghỉ nguồn & bit vio thanh ghi dich 16 bit

7.8.8 Dinh địa chỉ gián tiếp (indiect addreing): tong chế độ này trường,

địa chỉ cho biết từ nhớ nào hoặc thanh ghỉ nào chứa địa chỉ của toán hang

“Trong nhóm này có các loại như sau

+ Định vị gián tiếp thank ghi (register indirect): Ide này EA nim 6 một

"vong các thanh ghi BX, BP, Sĩ hoặc DĨ

Thídulệnh: — MOVAX[SI); —— chuyển nội dung của ö nhớ trong

đoạn hiện tại có dia chi offset là nội đụng của thanh ghỉ SĨ vào AX

® Dinh vj cor sd (based addressing) + EA là tổng của độ địch chuyển và nội

‘dung cia thank ghi BX hode BP

“Thí dụ lệnh : MOV [BX] + displacement, AL : chuyển nội dụng của thanh

hi AL vao ô nhớ có địa chỉ offSeL bằng tổng cia ngi dung ĐX với độ dịch chuyển Thanh ghi doan 1a DS

7.5.6 Binh dia chi chi $6 (indexed addressing) : EA là tổng của độ địch chuyển và nội dung của thanh ghỉ ST hoặc DI

Lí do cổ chế độ này như sau Nhiều thuật toán cần thực hiễn một thao tắc nào dé trên một chuỗi cấu trúc dữ liệu lưu giữ trong những vị trí nhớ liên tiếp, Thí dụ xét một khối gồm œ từ lệnh máy chiếm các vị bí A, A+l, A+2, LA+n_1 Các từ này cắn được đi chuyển đến các xị trí B, Bè, B2 Ren=l

“Trong trường hợp này có thể thực hiện lệnh MOV A B rồi thay đổi chính lệnh

đồ thành MOV A+1, Bel va lap lại cho tới khi cả ơ từ được sao chép hết Bằng cách định địa chỉ gián tiếp có thể thực hiện được điều này Một thanh ghỉ hoặc

tử nhớ được nạp địa chỉ A, một thanh ghỉ hoặc từ nhớ khác nạp địa chỉ B Lệnh MOV đồng 2 thanh ghỉ này làm các con trổ và sau mồi lần sao chép một từ com trỏ được tăng lên I Các co trỗ à một phần của dữ iệu chứ không phải là phần ccủa chương tình và những người sử dụng không được đùng chung đóng thời Một giải pháp khác là có một số thanh ghi goi lt rhanh gi ch sể hoạt động như sau, Địa chỉ có 2 phần : số của một thanh ghi chỉ sổ và một hằng số Địs

“chỉ của toán hạng là tổng của hằng số vối nội dung của thanh ghỉ chỉ số Trong thi du này, nếu cã hai địa chỉ được định chỉ số bằng cách dùng một thanh ghỉ chỉ sỡ chứa sổ nguyên k lệnh MOV A., B sẽ chuyển nội dung vị tí nhớ A+k t 'Bek Bìng cách khởi động thanh ghỉ chỉ số à 0 và tăng nội đung thanh ghí n lên một lượng bằng kích thước của từ sau khi sao chép một từ, chỉ cắn một thanh ghi cho vòng lập sao chép Hơn nữa việc tăng thánh ghí sẽ nhanh bơn Việc tăng một vị trí nhớ

Việc đánh chỉ số được sử đụng rộng rãi để định địa chỉ môt trường tại một

“hoảng cách đã biết tính từ điểm đầu của một cấu trúc dữ liệu đã cho Các biến

“ec bộ trong một thủ tục được truy cập theo cách này

Việc tăng hoặc giảm giá trị thanh ghị chỉ số trước hoặc sau khi nó được sử dạng là việc làm thường xuyên xảy ra Vì vậy người ta thường đưa ra các lệnh định địa chỉ đạc biệt hoặc thậm chí có những thanh ghi chỉ số đặc biết mà tự chúng có thể tâng hoặc giảm giá trị, Việc sửa đổi tự động một thanh ghí chỉ số được gọi là đánh chỉ sổ tự động (autoindexing)

“Thí đụ lệnh : MOV AL, [ST] + đisplacement ; chuyén noi dung ö nhớ chi offset bing tng cia di dung SĨ với độ có địa

dich chayéa vio thanh ghi AL, MOV AH,(BX] [SI] + displacement ; chuyén noi dung cia 6 nhớ €6 dia chi offset bing tng cia do dich

chuyển với nội dụng của BX và S vào thanh, ahi AH,

Trang 36

Đây là kiểu định địa chỉ chỉ số cơ sở hố, EA là tổng của nội dung thanh

hi co sở thanh ghỉ chỉ số và độ địch chuyển

7.8.7 Dinh địa chỉ ngan xép (stack addressing) : Ngan xếp gồm các phần

tir da Tig (1, kit, bit, v.v ) duge laut theo mot tatty iên tiếp trong bộ

nhớ Phần từ đầu tiên được cất vào ngăn xếp sẽ ở đáy ngăn xếp Phần tử mới

nhất được cất vào sẽ ở đỉnh ngân xếp Kết hợp với mỗi ngăn xếp là một thanh

ghỉ hoặc từ nhớ chứa địa chỉ của đình ngăn xếp được gọi là con trở ngân xếp,

(stack poimer)

Hình 7.8 mình hoạ hoạt động ngăn xếp

“Trong hình 7.8a, đã cĩ 2 phần tử trong ngân xếp là 98 và 40 Day ngăn xếp:

ở 3j trí nhồ 1000 và định ở ví tr 1001 Con trõ ngăn xếp chứa địa chỉ đỉnh ngân,

xếp là 1001 Trong hình 7.8b, sổ 6 được cất vào ngân xếp và con trở ngăn xếp

chứa số 1002 là đỉnh mới của ngân xếp Trong hình 7.8e số 75 được cất vào

"ngàn xếp và trong hình 7.8đ số này được lấy ra khỏi ngân xếp

ngăn xếp Lệnh này phi thực hiện việc sao chép phần tử đổ và tăng con trổ

ngân xếp Ngược lại, lệnh POP lấy nội đụng đỉnh ngăn xếp đưa trở lại thanh

chi hoặc ở nhớ phải thực hiện sao chép mới vào nơi thích hợp và giảm con trỏ

ngân xếp,

Thídụlệnh: — PUSHAX; _- cất nội dung của thanh ghỉ AX vào

ngân xếp POPAX; hi phuc gid tr thành ghỉ AX tt noi

“dụng đình ngân xếp

232

Một số lệnh khơng địa chỉ cũng cĩ thể được sử dụng cùng với ngân xếp Dink dạng lênh này chỉ ra rằng 2 tốn hạng được lấy ra khỏi ngân Xếp, tốn Hạng này tiếp sau tốn hạng kỉa, phép tốn được thục hiện (thí dụ nhân hộc ND) và kết quả được cất tr lại ngân xếp

7.6 LUỒNG ĐIỀU KHIỂN

uống điều khiến cĩ liên quan đến trình tự thực thỉ các lệnh, Thường các lệnh được thực hiện lần lượt, được lấy từ các vị trí nhớ liên tiếp Các lệnh gọi thủ tục là nguyên nhân làm thay đổi luồng điều khiển vì nổ đững thủ tục đang thực hiện và nhảy vào một thủ tục khác Các bẫy và các ngất cũng lầm cho Muơng điều khiển thay đổi khi cĩ các điều kiện đạc biệt xây ra

7.6.1 Ludng điều khiển tuần tự và các lệnh nhãy

Đà số các lệnh khơng làm thay đổi luồng điều khiển Sau khi một lệnh được thực thí, nh tiếp theo trong bộ nhớ được tìm sạp và thực biện Sau mỗi một lệnh, nội dung thanh đếm chương trình được tăng lên bảng chiều đài tính

ra byle của lệnh Sự tăng này gắn như tuyến tính theo thời gian Nếu chương trình chứa các lệnh nhảy, mối liên hệ đơn giản này giữa tặt tự trong đồ các lệnh xuất hiện rong bộ nhớ và trật tư trong đĩ các lệnh được thực hiện khơng cịn đúng nữa Kết quả là người lập trình khố hình dung tiến trình theo thời gian của chuỗi thực thí lệnh từ bảng đánh sách cđa chương trình Do vậy nhiều tác giả đã khuyến cáo người p tình nền tránh dùng các câu lệnh GOTO và đã khai sinh ra cuộc cách mạng cho phương pháp lập tình cĩ cầu trúc Một trong, những nguyên lí của phương pháp này Tà thay thế phát biểu OOTO bằng những

‘dang cĩ cấu trúc hơn của luồng điều khiển như vịng lập WHILE, REPEAT UNTIL, vv

Tuy nhiên, với cách nhìn khác, phần thân của th tục cĩ thể được xem như

xác định một lệnh mới ở cấp cao bon, Từ quan điểm này, lệnh gọi th tục được Xem như một lênh duy nhất đù cho cĩ thể rất phức tạp Để hiểu phần mã chứa

2

Trang 37

lệnh gọi thủ tụe, điều quan trọng nhất cn biết là làm gi, không cần biết cách

thực hiện

Một loi thủ tục đáng quan tâm là thủ tục để quy (recursive) Đó là một thủ

tục gọi chính nó Việc nghiên cứu các thủ tục đệ quy nhằm hiểu rõ cách thực

hiện lệnh gọi thủ tuc và các biến cục bộ thực sự là gì Để gọi các thủ tạc đệ quy

cẩn một ngân xếp chứa các tham số Mỗi lần gọi một thủ tục, một khối bộ nhớ

oi là khung ngăn xếp (staek Íramc) dành chỗ trong ngăn xếp cho các tham số,

địa chỉ trở vẻ và các biến cục bộ nếu có Khung ngàn xếp được tạo ra gần nhất

]à khung ngàn xếp hiện hành Ngoài con trổ ngân xếp được đùng để trỏ tới đình,

"gân xếp (địa chỉ thấp nhất), để thuận tiện nên cổ một cơn trỏ cơ sở cục bộ [ID

(docal base poinfe) rộ tối một vị tí cố định trong khung

Một trong những đc tính quan trọng của bất kì máy tính nào là làm thế

nào máy tạo ra phần mở đầu và phần kết thúc một cách nhanh và gọn Nếu cả

hai phần này dài và chậm, việc gọi thủ tục sẽ tốn kém Những người lập trình,

muốn đạt hiệu quả cao sẽ nghiên cứu để tránh viết nhiều thủ tục ngắn thay vào,

446 họ viết những chương trình lớn, đơn điêu và không có cấu trúc Các lệnh

ENTER và LEAVE của Intel được cung cấp để thực hiện hầu hết các công việc

của phần mở đầu và kết thúc thủ tục một cách cổ hiệu quả

7.6.3 Ding thii tue

“Trong chuổi gọi các thủ tạc thòng thường có sự phân biệt giữa thủ tục gọi

và thủ tục được gọi Xét thủ tục A gi thủ tục B, nếu A gọi D nhiều lần thì B

luôn luôn bắt đầu lại ở đầu thủ tục mỗi lần được gọi, tái lại A không bao giờ

bất đầu lại từ đầu thủ tục Đó là tính không đối xứng này sinh từ thực tế Sự

"khác nhau này được phần ánh tong cách mà điều khiến được chuyển giữn A và B

Khi A goi B A dung lệnh gọi thủ tu, lệnh này đặt địa chỉ quay về (địa chỉ của

lệnh sau lệnh gọi) vào nơi nào đổ thí dụ vào đình ngăn xếp, Sau đó lệnh này dat

địa chỉ của l vào thanh đếm chương trình để hoàn tất iệc gợi Khi B trở về, B

không sử dụng lệnh gọi mà là lệnh quay vé, lệnh này đơn giản chỉ lấy địa chỉ

trở về từ ngân xếp và đặt vào thanh đếm chương trình, Đôi khi ta có 2 thi tye A và B hú tục này gọi thủ tục kia như là một thủ tục, Khi từ B trở về A, điều

khiến nhảy tới lệnh theo sau lệnh gọi B Khi À chuyển điều khiển tối B, điểu khiển không đi tới câu lệnh đầu tiên của thủ tục (từ lần đấu tiên) mà đi tới

lênh theo sau lệnh “trở vÉ" gần nhất, nghĩa là lần goi A gần đây nhất Hai thủ

tục mà trong đồ thủ tục này xem thủ tục kia như là môt thủ tục được gọi là các

ding thĩ tục hay đồng thường trình (cetoutie)

số nhiều ngân xếp bởi vì mỗi đồng thỏ tuc cũng có thể gọi các thủ tục theo cách thông thường, ngoài việc tạo ra các lời gọi đồng thủ tục

T.6.4, Bấy

tBẫy (rap) là một loi lờt gọi thủ tục tự đong được khởi động bởi một điều kiện nào đó do chương trnh tạo ra, thường là điều kiện quan trọng nhưng hiểm, xây ra Trần (overflow) là một thí dụ Trên nhiều máy tính nếu kết quả của một phép toán số học vượt quá số lớn nhất có thể biểu diễn thì một bảy xuất hiện Nghĩa là luồng điều khiển được chuyển đến một vị trí cổ định nào đồ thay vì tiếp tục trình tự ố định đó có một lệnh nhảy tới một thủ tục gọi là bọ điều khiến bẫy (trap handler), bộ này thực hiện một động tác thích hợp nào đó, như in một thông báo lỗi Nếu kết quả của phếp toán nim trong phạm vi cho phép, bấy không xuất hiện

"Điểm cơ bản của bấy là bẫy được khỏi động bởi một điều kiện ngoại lệ nào đồ gây ra bài chính chương trình và được phần cứng hoặc vi chương trình phát hiện Bây cũng được thực hiện nhờ vào việc kiểm ưa bởi trình thông dịch ở cấp

`i chương trình thực hiện việc kiểm tra thì tiết kiệm được thời gian hơn so với kiểm tra của người lập trình đồng thời cũng tiết kiệm được bộ nhớ

7.6.5 Ngất Ngất (inlenupl) là những thay đổi ong luồng điều khiển gây ra không phải do chương trình đang được thực thi mà do bởi một tác động khác thường, liên quan tối vào ra Giống như bẫy, ngất cũng làm ngừng chương trình đang được thục thì và chuyển điều khiến tới bộ điều khiển ngất để thực hiện một số động tác thích hợp Khi hoàn ti, bộ điều khiển ngất trả điều khiển cho chương, trình bị ngất Chương trình này phải khởi dộng lại quá trình bị ngất một cách chính xác ở trang thai giống như trước kh xây rà ngất nghĩa là khôi phục lại tất cả nội dung các thanh ghỉ về trạng thái tước khi xây rà ngất,

Trang 38

“Sự khác nhau cơ bản giữa bấy và ngất là các bẫy đồng bộ với chương trình

còn ngất thì không Nếu chương trình chay lại với cùng một đữ liệu vào thì bẫy

sẽ lại xấy ra ở cùng một nơi cho mỗi lấn chạy Nhưng ngất lại khác, thí dụ

tuỳ thuộc chính xác vào thời điểm mà một người nhấn phím CR trên bàn

phím Nguyên nhân đối với việc ái two lai bly va không tá tạo lại ngất là bấy

được gây ra trực tiếp bởi chương trình còn ngất được gây ra gián tiếp bởi

chương trình

“Có 3 nguền gây ngất trong máy tính

“gắt cứng (hardware imestupt) xây ma do có tín hiệu yêu cầu ngất đưa vào,

một trong các chân ngất của bộ xử lí Nếu chân đồ là NMI (non~maskable

interrup) thì đây là ngất không che được đùng trong các tường hợp báo lỗi hệ

thống nghiêm trong Néu chan dé ta INTR (interrupt request thi đây là ngất có

thể che được đo ngất này có thể bị vô hiệu hoá bằng lệnh máy xoá cờ mgat CLI

Nguồn ngắt thứ ba à đo chương tình gập ác câu lệnh gọi ngất TNT trong

cấp mấy thông thường Các ngất loại này được gọi là ngất mớm (software

interrupt

Nguồn ngất thứ ba là các lỗi phát sinh trong qué trình thực hiện cầu lệnh,

thí đụ cố tình chia một số cho 0, bộ xử lí sẽ tự động ngất chương trình đang,

chạy bằng ngất sổ 0 Các ngất xây ra ngay tong bộ xử lí loại này được gọi là

ngoại lệ (exception)

Khi một thiết bị vào/ra phát rà một yêu cầu ngất, bộ xử lí đồng vectơ ngất

để định chỉ số trong một bảng 256 điểm vào, gọi là bảng vectơ ngất, để tìm địa

chỉ của thường trình phục vụ ngất Thí dụ trên vỉ xử lí 8086 của Intel, bảng,

vvectơ ngất bắt đầu ở địa chỉ tuyệt đối 0, mỗi điểm vào có 4 byte rên các vi xử

1 80286 và 386 các vectơ ngất là các bộ mổ tổ đoạn đài § byte và có thể bắt

đầu ở một địa chỉ bất kìtrong bộ nhớ Một thanh ghỉ toàn cục cố nhiệm vụ trổ

tới điểm bắt đầu của bằng các bộ mô tả này

© CAU HOI VA BAI TAP

7.1 Tinh dia chi vat Ii từ các địa chỉ lögic sau trong máy tính đồng bộ xử

“:4 Nếu thanh ghỉ đoạn số liệu DS chứa số 4000h, thì lệnh MOV AL, [234B]

— Trở về chương trình c† xếp lên 4 từ một thủ tục gi xa Và tầng con trổ ngăn

⁄8 Viết các lệnh máy trong 8086 trên cơ sở ác từ gợi nhớ thực hiện các hoạt động sau +

~ Ccpy DI tới nhớ mà độ lệch của nổ là nội đung của thanh gỉ BX,

~ Che 4 bít thấp của thanh ghỉ BÚ,

237

Trang 39

19

— Đạt bịt nhiều ý nghĩa nhất của AX lên 1, nhưng không ảnh hưởng đến các bịt cồn lại

— Đảo 4 b thấp của B nhưng không ảnh hướng đến các bït còn lại

Viel các mã nhị phân của các lệnh B086 sau

Lộ nhớ ỏo, cóc lệnh vio a ng bit vỗ cóc iện ich cho me hing I song song,

Bộ nhớ đo là một mô hình cỏ cẩu trúc cho pháp chương trình sử dụng nhiều không gion dia chi hom so uới bộ nhớ gặt lí của mấy hoặc cung cấp một cơ chế"

‘bo uệ bộ nhớ linh động tổ tích hợp Có thể thực hiện bộ nhớ do bằng kĩ thuật chân đoọn để có các địa chỉ tuyển tính chính là đ chỉ ật lí hoặc kĩ thuật phân trang cho phép biến các địa chỉ tuyến tính đó thành các địa chỉ ột í nằm trong các trang nhớ có kích thước cổ định

"Hiện thực 60 quan trọng trong cốp móy hệ điều hành lò quá trình uào ro các tập tin, Tại đầy chúng được coi là một chuỗi cóc bản ghỉ lðgte có thể ghi đọc được

mà không edn biết đến cách mà các bộ nhớ tô thiết bị làm việc ra soo Các tập tin có thể được truy xuất tuẩn tự, ngẫu nhiên bằng số của bản ghí hoặc ngẫu nhiên bằng khoá Các thư mục có thể được dùng để nhóm các tập tin tới nhau

“Xổ lí song song được hiện diện ở cấp máy hệ điều hành bằng cách mô phống nhiều bộ xử lí áo nhờ ào iệc đùng chung 1 bộ xử lí thực Các tác động quo lạ không điều khiển được giữa các quá trình có thể dẫn đến các điều kiện tranh duc cần có các biện pháp khắc phục

'© CÁC TỪ KHOÁ

“Tiếng Việt hộ điều hành, lệnh tắm thường, lệnh OSML, bộ nhớ vật bộ nhới

ảo, vùng nhớ phủ, đơn ui quỗn Ì bộ nhố, hệ điều hành đa nhiệm, không giàn nhớ

Trang 40

toàn cúc, không gian nhớ cục bô, mức đặc quyền, đoạn nhớ, bảng các bộ mô tÄ

toàn cục GDT, bằng các bộ mô tả cục bộ LT, bảng các bộ mồ tŠ ngất IDT, bội

chọn cửa gio dich, trang nbd, thi mục trang, bằng các trang, khung trang bộ

đệm chuyển hoá rông TL, tập in tuần tự tập tin truy xuất ngẫu nhiên, đều kiện

tranh đụa

Tiếng Anh : operating system, ordinary instruction, operating system machine

Isoguage physical memory, virtual memory, overlay, memory management unit

‘multitask operating systom globle memory space local memory space, privoge

level, memory segment, globle descriptor table, local descriptor table, interrupt

descriptor table, selector, call gat, page page directory, page table, page frame

translation lookaside buffer TL, serial accessed fle, random accessed fie, race

condition,

8.1 PHAN BIET CAP MAY HE DIEU HANH

“Trong ce may tinh ding vi chương trình, một số lệnh ở cấp máy thông

thường không được thị hành một cách trực tiếp bằng phần cứng Thí dụ như các

lệnh gọi thủ tục, lệnh nhăn và lệnh lập Tại đây chúng được tìm nạp từ bộ phố,

được kiểm tra và thị hành như một đầy liên tiếp các bước nhỏ bằng vi chương,

trình Cũng nh mot tinh thong địch chạy trên cấp 1 cấp vỉ chương trình cổ

thể thông địch các chương trình viết bằng ngôn ngữ máy cấp 2, cấp máy thông,

thường, một trình thông dịch chạy trên mấy cấp 2 này cổ thể thông dịch các

chương trình viết bằng ngôn ngữ máy cấp 3 Trình thông dịch chạy trên máy

cấp 2 hỗ trợ cho mây cấp 3 này được gọi là hệ điều lonl và cấp 3 gọi là cấp

máy hệ điều hành Trong ịch sử cấp máy hệ điều hành được phát triển dần dân

tách ra khỏi cấp máy thông thường Do vậy hấu hết các lệnh của cấp này cũng

có ở cấp máy thông thường Ta sẽ gọi các lệnh này là các lệní cấp 3 “tẩm

tường” (erdinary) do bối chúng bao gồm các thao tắc bình thưởng như các

phếp toán số học, lôạïc, các phếp địch bit v.v Các lệnh còn lại là các lểmh

ngôn nạữ máy hệ diễu hank OSML (operating system machine language) do

chúng chỉ biên diên trong cấp my hè điều hành

‘Ve nguyên tác cổ thể để hệ điều hành thông dịch tất cả các lệnh của cấp 3

nhưng điều này không hiệu quá bing việc để các lệnh tấm thường được địch

trực tiếp bởi các vi chương trình Lúc này vi chương trình lấy các lệnh rực tiếp

tử chương trình người sử đụng và thực thỉ chúng Khi gặp các lệnh OSML, vi

chương trình sẽ ngững thông dich chuong trinh và bắt đầu thông dịch bằng hệ

điều hành Hệ điều hành sau đó khảo sát lệnh OSMI trong chương trình người

sử đụng và thực thị lệnh này Khi lệnh OSML được thực tị, hệ điều hình thực thỉ một lệnh nào đó làm cho vỉ chương trình tiế tục ấy và thực thị các lệnh của chương trình người sử dụng Dĩ nhiên nếu lệnh kế tiếp của chương trình người sử dụng cũng à nh OSML thì hệ điều hành sẽ được khởi động ần nữ

“Thực chất phương pháp thực thi các chương tình ở cấp máy hệ điều hành này là một phần hời gian máy tính có chức năng của một máy cấp 3 và một phấn thời gian có chức năng của mấy cấp 2 Trong lúc thì hình lệnh OSML s& c6 3 chương trình đang chạy, môi chương rình chạy rên một máy ảo vối các trạng thái riêng của chúng, kế cả bộ đếm chương trình riêng Một cách khái quất, bộ đếm chương tình của cấp 3 tr tới lệnh OSML, bộ đếm chương trình cấp 2 rô tới lệnh của hệ điều hành đang được thực th và bộ đếm chương trình cấp cho biết phẩn cứng thực sự mà vi lệnh được thực tị

Đa sổ các máy tính lớn đều có hệ điều hành là các hệ thing da lap wink (muluiprogramming system), nghia 1a thay vì chỉ hỗ rợ cho một máy áo cấp 3

hệ điều hành hỗ trợ cho vài máy ảo cấp 3 chạy song song Nếu mỗi máy ảo nối với một thiết bị đấu cuối từ xa a có một hệ thống chia xé thai gian ((ime~sbared system) Nếu không cổ các thiết bị đầu cuối từ xa, ta có một hệ thống da lập trình nhóm (batch) Với đạng hồn hợp, một số máy ảo đang được

sử dụng trực tuyến, một số máy khác thì không Phần chủ yếu của hệ điều hành liên quan đến việc quản í tất cả các máy ảo hơn là thông địch các lệnh OSML Xhảo sắt sơ bộ hệ điều hành thường liên quan đến 3 chủ để chính : Bộ nhớ ito (virtual memory) là một kĩ thuật được cung cấp bởi hệ điều hành làm cho máy có nhiều bộ nhớ hơn là máy thực sự có văn để xuâi / nhập tập tin : đây là một kĩ thuật cao hơn các lệnh vào ra và cuối cùng là vấn để xử lí song song tại cấp máy hệ điều hành,

8.2 BỘ NHỚ VẬT LÍ VÀ BỘ NHỚ ẢO

Khong gian bộ nhớ vật í phụ thuộc vào số đường đây địa chỉ của bộ xử

thí dụ với 8086 có độ rộng bus địa chỉ là 20 bịt là 2?” byte = IMbyte, với

80386 1a 2 byte = 4 Gbyte Nhưng thường dung lượng các chịp nhớ thực sự được cài đặt rong các máy ính hiện may là hạn chế và nh hơn không gian này nhiều Do đó ngay từ thời gian đầu rong lịch sử phát triển máy tính đã nay sinh vấn đế là làm sao cho các chương trình đặt vữa trong một bộ nhớ chính thực có đung lượng hạn chế Giải pháp truyền thống là đồng bộ nhớ phụ (như:

Ngày đăng: 14/10/2023, 13:49

HÌNH ẢNH LIÊN QUAN

Hình  6.4  chi  ra  mot  đường  số  liệu  bổ  sung  (được  tô  đậm)  giữa  trường  toán  hạng  của  thành  ghỉ  IR  và  ALU đành  cho  mục đích  này - Giáo trình Kiến trúc máy tính: Phần 2
nh 6.4 chi ra mot đường số liệu bổ sung (được tô đậm) giữa trường toán hạng của thành ghỉ IR và ALU đành cho mục đích này (Trang 4)
Hình  66  là  hình  6. - Giáo trình Kiến trúc máy tính: Phần 2
nh 66 là hình 6 (Trang 8)
Hình  6.11  là  giản  đồ  thi  gian  của  các  xung  điều  khiển.  Lưu  ý  rằng  bộ  giải - Giáo trình Kiến trúc máy tính: Phần 2
nh 6.11 là giản đồ thi gian của các xung điều khiển. Lưu ý rằng bộ giải (Trang 11)
Hình  6.14  là  sơ  đổ  chỉ  iế  của  một  đơn  vị  điều  khiển  lôgic  ngẫu  nhiên.  So - Giáo trình Kiến trúc máy tính: Phần 2
nh 6.14 là sơ đổ chỉ iế của một đơn vị điều khiển lôgic ngẫu nhiên. So (Trang 13)
Hình  6.22  mô  tả  một  kĩ  thuật  gọi  là  ứưernal /orwarding  được  thiết  kế  để - Giáo trình Kiến trúc máy tính: Phần 2
nh 6.22 mô tả một kĩ thuật gọi là ứưernal /orwarding được thiết kế để (Trang 18)
Hình  7.2  là  thí  dụ  đơn  giản  mình  hoạ  sự  phân  biệt  cách  định  địa  chỉ  trực  tiếp  ề  gián  tiếp  như  sau - Giáo trình Kiến trúc máy tính: Phần 2
nh 7.2 là thí dụ đơn giản mình hoạ sự phân biệt cách định địa chỉ trực tiếp ề gián tiếp như sau (Trang 25)
Hình  7.8.  mình  hoạ  hoạt  động  ngăn  xếp - Giáo trình Kiến trúc máy tính: Phần 2
nh 7.8. mình hoạ hoạt động ngăn xếp (Trang 36)
Trong  2  bảng  GDT  va  LDT.  Tức  là  cũng  có  thể  có  tới  chững  ấy  các  đoạn  nhớ - Giáo trình Kiến trúc máy tính: Phần 2
rong 2 bảng GDT va LDT. Tức là cũng có thể có tới chững ấy các đoạn nhớ (Trang 45)
Trang,  mỗi  điểm  vào  này  cho  phép  trỏ  tối  một  trong  1024  bảng  trang. - Giáo trình Kiến trúc máy tính: Phần 2
rang mỗi điểm vào này cho phép trỏ tối một trong 1024 bảng trang (Trang 48)
Bảng  các  trang  (pae  table)  cũng  có  2!” =  1024  diém  vo  32-bit.  Méi  diém - Giáo trình Kiến trúc máy tính: Phần 2
ng các trang (pae table) cũng có 2!” = 1024 diém vo 32-bit. Méi diém (Trang 48)
Hình  ` chỉ ra các mức  đặc  quyển  được tạo bởi sự  biến  đổi  các  tổ hợp  US - Giáo trình Kiến trúc máy tính: Phần 2
nh ` chỉ ra các mức đặc quyển được tạo bởi sự biến đổi các tổ hợp US (Trang 49)
Bảng  các  trang.  Bất  cứ  khi  nào  nếu  hệ  điều  hành  xoá  bịt  P  trong  điểm  vào  của - Giáo trình Kiến trúc máy tính: Phần 2
ng các trang. Bất cứ khi nào nếu hệ điều hành xoá bịt P trong điểm vào của (Trang 50)
Bảng  các  trang.  Trách  nhiệm  chính  cũa  hệ  điều  hành  là  thự  hiện  các  thuật  toán - Giáo trình Kiến trúc máy tính: Phần 2
ng các trang. Trách nhiệm chính cũa hệ điều hành là thự hiện các thuật toán (Trang 50)
Bảng  kí  hiệu  chữa  chính  kí  hiệu  đó  (heặe  một  con  trô  tủ  tối  kí  hiệu)  gồm  cả - Giáo trình Kiến trúc máy tính: Phần 2
ng kí hiệu chữa chính kí hiệu đó (heặe một con trô tủ tối kí hiệu) gồm cả (Trang 59)
Hình  sâu  mình  hoạ  mối  quan  hệ  giữa  DOS,  BIOS,  các  chương  trình  ứng  dụng  với  phân  cứng  trong  PC - Giáo trình Kiến trúc máy tính: Phần 2
nh sâu mình hoạ mối quan hệ giữa DOS, BIOS, các chương trình ứng dụng với phân cứng trong PC (Trang 76)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w