CÂU HeI VÀ BÀI TgP CHƯƠNG
7.2 .B ựi)u khi+n
GiZng như trong m)t trung ự)i thì m*i hoNt ự)ng ựư;c ựi=u khiFn bDi trung ự)i trưDng, b) ựi=u khiFn chUu trách nhi m ựi=u khiFn m*i hoNt ự)ng c"a CPU. B) ựi=u khiFn tNo các tắn hi u ựi=u khiFn di chuyFn sZ li u (tắn hi u di chuyFn sZ li u tQ các thanh ghi ự n bus hoVc tắn hi u vi t vào các thanh ghi), ựi=u khiFn các tác vg mà các b) ph'n ch8c năng ph i làm (ựi=u khiFn ALU, ựi=u khiFn ự*c và vi t vào b) nh trong...). B) ựi=u khiFn cũng tNo các tắn hi u giúp các l nh ựư;c th:c hi n m)t cách tu!n t:.
đF thi t k m)t b) ựi=u khiFn, ta có thF dùng m)t trong hai cách là dùng mNch ựi n t- hoVc dùng vi chương trình (microprogram).
Chương VII: T ch c B x lý
B ựi u khi n m ch ựi n t
Trong chương 5 chúng ta ựã h*c v= mNch tu!n t:. M)t b) ựi=u khiFn mNch ựi n t- có nguyên lý hoNt ự)ng như m)t mNch tu!n t:. T8c là sq có các trNng thái và các ựư`ng tắn hi u mà s: thay ựGi c"a các tắn hi u tNi m)t th`i ựiFm nhCt ựUnh sq làm trNng thái giH nguyên hoVc chuyFn sang m)t trNng thái m i.
đF hiFu ựư;c v'n hành c"a b) ựi=u khiFn mNch ựi n t-, chúng ta xét ự n mô t v= Automate (mNch t: ự)ng hóa) trNng thái hHu hNn như m)t mNch tu!n t: có nhi=u h thZng hay nhi=u thành ph!n mà D mri th`i ựiFm xem xét ự=u có m)t trNng thái (state). Mgc ựắch c"a trNng thái là ghi nh nhHng gì có liên quan trong quá trình hoNt ự)ng c"a h thZng. Vì chB có m)t sZ trNng thái nhCt ựUnh nên nói chung khơng thF ghi nh h t toàn b) lUch s- c"a h thZng, do v'y nó ph i ựư;c thi t k csn th'n ựF ghi nh nhHng gì quan tr*ng.
Ưu ựiFm c"a h thZng (chB có m)t sZ hHu hNn các trNng thái) ựó là có thF cài ựVt h thZng v i m)t lư;ng tài nguyên cZ ựUnh. Chung hNn, chúng ta có thF cài ựVt Automate trNng thái hHu hNn trong ph!n c8ng máy tắnh D dNng mNch ựi n hay m)t dNng chương trình ựơn gi n, trong ựó, nó có kh năng quy t ựUnh khi chB bi t m)t lư;ng gi i hNn dH li u hoVc bong cách dùng vU trắ trong ựoNn mã l nh ựF ựưa ra quy t ựUnh.
Theo tG ch8c ựi=u khiFn c8ng, lu'n lý ựi=u khiFn ựư;c cài ựVt qua các cGng , mNch l't, mNch gi i mã và các mNch sZ khác. Thu'n l;i là có thF tZi ưu ựF tNo ra ch ự) nhanh cho tác vg
Theo tG ch8c ựi=u khiFn vi trình, thơng tin ựi=u khiFn ựư;c lưu trong b) nh ựi=u khiFn, b) nh ựi=u khiFn ựư;c l'p trình ựF khDi ự)ng dãy vi tác vg theo yêu c!u. Khi thay ựGi thi t k , c!n thay ựGi cách k t nZi các thành ph!n n u tG ch8c theo kiFu ựi=u khiFn cài c8ng. N u tG ch8c theo ựi=u khiFn vi trình chB c!n c'p nh't vi trình trong b) nh ựi=u khiFn.
Chương VII: T ch c B x lý
Hình 7.3. cho ta sơ ựa khZi m)t b) ựi=u khiFn cơ b n. L nh ựư;c ự*c tQ b) nh và ựưa vào thanh ghi l nh IR. Thanh ghi l nh thì như trong chương 6 chúng ta ựã bi t, trong ựó có ph!n mã hóa vi tác vg hay opcode sq ựư;c qua m)t mNch gi i mã ựF bi t ựư;c mã tác vg ph i làm là gì. Sau khi gi i mã, các tắn hi u này ựư;c ựưa vào mNch ựi=u khiFn gam các cGng ựi=u khiFn.
đF ựi=u khiFn các hoNt ự)ng ựư;c ựang b), ta dùng m)t b) tNo các th`i hi u, mri th`i hi u 8ng v i m)t th`i ựiFm nhCt ựUnh. Các th`i hi u này cùng v i các tắn hi u tQ b) gi i mã và tQ các tắn hi u khác trong ph!n còn lNi c"a thanh ghi IR sau khi qua các cGng ựi=u khiFn sq cho ta các tắn hi u ựi=u khiFn c!n thi t. Các tắn hi u ựi=u khiFn có thF là ựưa dH li u m)t thanh ghi nào ựó lên BUS, ựưa dH li u tQ trên BUS vào thanh ghi, mD tắn hi u ghi vào m)t thanh ghi, ựưa ra tắn hi u ự*c/ghi vào b) nh chắnh, khDi ự)ng ngzt ựF truy=n dH li u ra HDD, máy in,Ầ
Mã tác v ự a ch b nh , thanh ghi,Ầ M ch gi i mã nxm Các c ng ựi u khi n Tắn hi u ựi u khi n m 1 Dm 1 Ầ 0 B t o các th i hi u D0 T Các tắn hi u khác (INR, CLR,Ầ) Clock IR
B ựi u khi n vi chương trình
Thay vì b) ựi=u khiFn c8ng dùng mNch tG h;p các cGng ựF cho ra các tắn hi u ựi=u khiFn thì ựi=u khiFn vi trình dùng m)t vi chương trình l'p s|n nom trong b) nh ựi=u khiFn ựF khDi ự)ng dãy vi tác vg theo yêu c!u.
B) ựi=u khiFn bong vi chương trình ựư;c dùng r)ng rãi trong các b) x- lý CISC. B) x- lý này có t'p l nh ph8c tNp v i các l nh có chi=u dài khác nhau và có dNng th8c ph8c tNp. Trong các b) x- lý CISC, ngư`i ta cài ựVt m)t l nh mã máy bong cách vi t m)t vi chương trình. Như v'y công vi c khá ựơn gi n và rCt hHu hi u. Các sai sót trong thi t k automat ựi=u khiFn cũng dS s-a ựGi.
7.3. B thanh ghi
Các thanh ghi là m)t loNi b) nh ựVc bi t nhanh nom bên trong CPU và ựư;c dùng ựF tNo ra và lưu trH các k t qu c"a các l nh trong CPU và các phép toán khác. Các loNi máy tắnh khác nhau có các b) thanh ghi khác nhau. Chúng khác nhau v= sZ lư;ng các thanh ghi, các loNi thanh ghi và c chi u dài c"a mri thanh ghi. Chúng cũng khác nhau trong cách dùng cho mri thanh ghi.
Thanh ghi muc ựắch chung có thF ựư;c dùng cho nhi=u mgc ựắch và ựư;c nhà l'p trình dùng ựF gán cho nhHng trNng thái khác nhau c"a các hàm, các bi n.
Thanh ghi có mgc ựắch ựVc bi t chB ựư;c dùng cho m)t sZ ch8c năng ựVc bi t. Trong m)t sZ trư`ng h;p, m)t vài thanh ghi chB ựư;c dùng ựF lưu trH dH li u và không thF dùng trong tắnh toán ựUa chB c"a các toán hNng.
Chi=u dài c"a thanh ghi ph i ự" ựF lưu trH h!u h t các loNi dH li u, ựVc bi t là thanh ghi ựUa chB ph i ự" dài ựF có thF lưu ựư;c ựUa chB l n nhCt.
SZ lư;ng thanh ghi trong m)t ki n trúc máy tắnh nh hưDng tr:c ti p ự n vi c thi t k b) l nh. N u sZ lư;ng thanh gi ắt sq d}n
ự n vi c ph i s- dgng tham chi u hay con trJ t i b) nh nhi=u hơn làm gi m ựáng kF ự n tZc ự) th:c thi c"a chương trình.
M)t dNng khác c"a các thanh ghi ựư;c dùng ựF lưu các bit trNng thái c"a b) x- lý hay là các c` trNng thái. NhHng bit này thay ựGi tùy theo k t qu th:c hi n m)t l nh nào ựó trong CPU
Thanh ghi truy c p b nh
Có hai thanh ghi ựư;c dùng ựVc bi t trong các l nh ự*c/ghi v i b) nh : thanh ghi dH li u b) nh (
) và thanh ghi ựUa chB b) nh (
). Hai thanh ghi này ựư;c CPU s- dgng ựVc bi t và các nhà l'p trình khơng thF truy c'p tr:c ti p vào chúng.
Trong th8 t: th:c hi n m)t l nh ghi vào m)t vùng nh ựVc bi t, MDR và MAR ựư;c dùng như sau:
1. M)t tQ c!n lưu vào m)t vU trắ nào ựó trong b) nh , ự!u tiên sq ựư;c CPU t i vào thanh ghi MDR
2. đUa chB c"a vùng nh ựó (vùng nh sq ghi dH li u vào) ựư;c CPU t i vào trong MAR
3. Sau cùng b) ựi=u khiFn sq phát ra tắn hi u ựi=u khiFn ỘghiỢ (write) ựF ghi dH li u nom trên MDR vào ựUa chB nom trên MAR.
Tương t: khi th:c hi n m)t l nh ự*c (read) tQ b) nh , thanh ghi MDR và MAR sq ựư;c dùng như sau:
1. đUa chB c"a tQ nh nom trong b) nh c!n ự*c ựư;c ựưa vào MAR
2. B) ựi=u khiFn sq phát ra tắn hi u ựi=u khiFn Ộự*cỢ (read) ựF ự*c dH li u nom trong b) nh .
3. DH li u nom trong b) nh có ựUa chB ch8a trong MAR sq ựư;c t i vào trong MDR
Chương VII: T ch c B x lý
Thanh ghi chuy n t$i l nh
Có hai thanh ghi rCt quan tr*ng ựư;c dùng ựF lưu các câu l nh cho vi c th:c thi c"a chương trình là: B) ự m chương trình (program counter Ờ PC) và thanh ghi l nh (instruction register Ờ
IR).
Thanh ghi dùng ựF lưu ựiN chB c"a l nh ti p theo qua ựó sq ựi=u khiFn th8 t: th:c hi n các l nh trong m)t chương trình. Các l nh th:c hi n l!n lư;t ựư;c tìm thCy và lưu vào trong thanh ghi IR. TNi mri th`i ựiFm chB có m)t l nh ựư;c lưu trong IR. Sau khi ựã tìm và ựem m)t l nh v= cho IR, thanh ghi PC sq ựư;c nNp m)t giá trU m i là ựUa chB c"a l nh ti p theo.
Thanh ghi tr ng thái
Các thanh ghi trNng thái hay là các c` trNng thái ựư;c s- dgng ựF giH các thơng tin v= trNng thái c"a q trình th:c thi l nh. M)t sZ ki n trúc máy tắnh ch8a m)t thanh ghi ựVc bi t g*i là thanh ghi tQ trNng thái c"a chương trình (program status word Ờ PSW). Trong PSW ch8a các bit trNng thái cho bi t k t qu c"a các phép tắnh sZ h*c (có bong 0 khơng?có sZ thQa khơng?...), trNng thái ngzt, thông tin b o v b) nh , tình trNng c"a b) x- lý,Ầ
Các thanh ghi h, 80x86
Trong các th h máy tắnh 32 bit c"a Intel như 386,486 và Pentium có ba nhóm thanh ghi, ựó là:
3 Thanh ghi mgc ựắch chung 3 Thanh ghi segment
3 Thanh ghi ự m chương trình PC và thanh ghi c` trNng thái
Trong hình 7.4 cho ta thCy ba nhóm này. Nhóm th8 nhCt là các thanh ghi mgc ựắch chung ựư;c ựVt tên bong các ký t: A,B,C,D,SI (source index), DI (destination index), SP (stack pointer) và BP (base pointer). Nhóm th8 hai bao gam các thanh ghi CS (code segment), SS (stack segment) và 4 thanh ghi ựoNn dH li u
Chương VII: T ch c B x lý
DS, ES, FS và GS. Nhóm thanh ghi th8 ba bao gam thanh ghi l nh IR và thanh ghi trNng thái. Trong sZ nhHng bit trNng thái, 5 bit ự!u tiên ựang nhCt v i các bit c"a b) vi x- lý 8 bit trư c ựây 8085. Các bit ti p theo 6311 giZng như ựư;c gi i thi u trong 8086. Các bit 123 14 ựư;c gi i thi u trong 80286 trong khi các bit 16317 trong 80386. Bit flag 18 trong 80486. Trong ựó cịn nhi=u bit chưa ựư;c dùng t i và ựF làm d: trH cho nhHng mgc ựắch có thF xuCt hi n sau này. Hình 7.4. Các thanh ghi h* 80x86 31 16 15 8 7 0 !" !# ! $" $# $ " # " # % % %& %& $& $&
Các thanh ghi mgc ựắch chung
15 0 CS (Code segment pointer) SS (Stack segment pointer Ờ top) DS (Data segment pointer 0) ES (Data segment pointer 1) FS (Data segment pointer 2) Các thanh ghi ựoNn
GS(Data segment pointer 3) IR
Thanh ghi l nh
E Flags Flags H Flags L Thanh ghi c`