kiến trúc máy tính Vũ Đức Lung phần 8
lượt xem 23
download
Tham khảo tài liệu 'kiến trúc máy tính vũ đức lung phần 8', công nghệ thông tin, hệ điều hành phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: kiến trúc máy tính Vũ Đức Lung phần 8
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh Ch ñ Cách tính Ưu ñi m Khuy n ñi m Immediate Operand = A Không có tham ð l n toán chi u b nh h ng gi i h n Direct EA = A ðơn gi n không gian ñ a ch gi i h n Indirect EA = (A) không gian ñ a Tham chi u b ch l n nh ph c t p Register EA = R Không có tham không gian ñ a chi u b nh ch gi i h n Register EA = (R) không gian ñ a Tham chi u b indirect ch l n nh ph Displacement EA = A + (R) Linh ñ ng Ph c t p Stack EA= ñ u c a Không có tham ng d ng gi i ngăn x p chi u b nh hn B ng 6.3. Cách tính ñ a ch th c Trư c khi ñi vào c th t ng ch ñ l p ñ a ch có hai ñi m c n lưu ý, th nh t ñó là trên th c t t t c các ki n trúc máy tính ngày nay cung c p cho ta nhi u hơn m t trong nh ng ch ñ l p ñ a ch trên. V n ñ ñ t ra là làm th nào ñ b ñi u khi n xác ñ nh ñư c ch ñ ñ a ch nào ñư c dùng trong l nh. Có nhi u phương pháp khác nhau. Thư ng là nh ng opcode khác nhau s dùng các ch ñ ñ a ch khác nhau, cũng có th là m t trong các bit c a l nh ñư c dùng làm trư ng ch ñ , mà giá tr ch a trư ng này ch ra ch ñ ñ a ñư c dùng. ði m th hai ñây liên quan ñ n ñ a ch th c EA. Trong m t h th ng không dùng b nh o thì ñ a ch hi u d ng s ho c là m t ñ a ch c a b nh chính, ho c là m t thanh ghi. Trong m t h th ng nh o thì Hình 6.8. Các ch ñ l p ñ a ch ñ a ch hi u d ng là m t ñ a ch o ho c là m t thanh ghi. Vi c s p x p 193 194
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh th c c a ñ a ch v t lý là m t ch c năng c a cơ ch phân trang và ngư i v y ñ a ch tr c ti p có th ñư c s d ng v i các bi n toàn c c, mà l p trình không th y ñư c. ñ a ch c a nó là bi t trư c trong th i gian biên d ch. a) L p ñ a ch t c th i (Immediate Addressing) c) L p ñ a ch gián ti p (Indirect Addressing) Cách ñơn gi n nh t cho l nh qui ñ nh toán h ng là ñ ph n ñ a ðánh ñ a ch tr c ti p là cách trong ñó trư ng ñ a ch ch ra ch trong l nh ch a chính toán h ng thay vì ñ a ch ho c thông tin khác m t t nh nào hay thanh ghi nào ch a toán h ng. Tuy nhiên mô t v trí toán h ng: trong trư ng h p l p ñ a ch tr c ti p thì chi u dài c a trư ng ñ a OPERAND = A ch thư ng là ng n hơn chi u dài m t word, do ñó s ñ a ch có th Toán h ng như v y ñư c g i là toán h ng t c th i (immediate mã hóa ñư c b h n ch . Cách ñánh ñ a ch gián ti p là trư ng ñ a operand) vì t ñ ng ñư c tìm n p t b nh cùng lúc v i tìm n p b n ch ch ra t nh nào ho c thanh ghi nào ch a ñ a ch c a toán thân l nh, nh ñó kh d ng t c th i. h ng ( Xem hình 6.8): L p ñ a ch t c th i có ưu ñi m là kh i c n thêm tham chi u b EA = (A) nh b nh ñ tìm n p toán h ng. Như c ñi m là h n ch toán h ng con s v a vào trư ng ñ a ch . l nh có ñ a ch 3 bit (ví d như trư ng Nói cách khác là t nh hay thanh ghi trong trư ng ñ a ch thanh ghi), toán h ng s gi i h n 3 bit, và làm h n h p tính h u ích c a gi ng như là m t con tr (trong C++), tr t i m t toán h ng chúng. Vi c ñánh ñ a ch gián ti p c n hai l n truy c p b nh , l n Ch ñ này ñư c dùng ñ ñ nh nghĩa các h ng s ho c là kh i t o th nh t ñ l y con tr v và l n th hai ñ l y toán h ng v . m t giá tr nào ñó cho m t bi n d) L p ñ a ch thanh ghi (Register Addressing) M t ví d trong các trư ng h p l p ñ a ch t c th i là ñưa giá tr V khái ni m, l p ñ a ch thanh ghi tương t như l p ñ a ch “4” vào thanh ghi R1 như sau: tr c ti p. ði m khác bi t duy nh t ñây là thay vì trư ng ñ a ch MOV R1, #4 tr t i m t ñ a ch trong b nh thì ñây là tr t i m t thanh ghi b) L p ñ a ch tr c ti p (Direct Addressing) (thanh ghi s m y) trong ñó lưu tr toán h ng: M t phương th c ñơn gi n khác ñ qui ñ nh toán h ng là Máy v i 16 thanh ghi và b nh 65.536 t th t s s có hai cung c p ñ a ch c a t nh có ch a toán h ng và ñ t nó vào trư ng không gian ñ a ch . Ta có th xem m t ñ a ch trên máy như th là ñ a ch c a l nh. Hình th c này g i là l p ñ a ch tr c ti p (direct có hai ph n: addressing): • M t bit cho bi t là ta mu n dùng thanh ghi hay t nh EA = A • M t trư ng ñ a ch cho bi t là s c n thanh ghi hay t nh T t nhiên ph i có cách ñ máy tính bi t ñư c ñ a ch nào là nào. t c th i và ñ a ch nào là tr c ti p. Nói chung, có hai phương pháp: Vì s thanh ghi ít hơn s t nh , do ñó ngư i ta thư ng s d ng opcode khác nhau ho c s d ng m t mode ñánh ñ a ch dùng các d ng th c l nh khác nhau cho toán h ng thanh ghi và toán ñ c bi t cho m i lo i toán h ng. h ng nh . Cũng như cách l p ñ a ch t c thì, ñ a ch tr c ti p có m t Các máy ngày nay ñư c thi t k có các thanh ghi vì 2 lý do s gi i h n: L nh luôn truy c p ñ n ch m t ñ a ch ô nh . T c là chính sau: giá tr t i ñ a ch ñó có th thay ñ i nhưng ñ a ch thì không. Như – Các thanh ghi ho t ñ ng nhanh hơn b nh chính 195 196
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh Bài toán như th ñư c gi i quy t t t nh t b ng cách s d ng m t – S lư ng thanh ghi là r t ít do ñó ñ mã hóa chúng cũng ch thanh ghi g i là thanh ghi ch s (Index register ) và chúng làm vi c như c n m t s ít bit. sau: e) ð a ch gián ti p thanh ghi (Register Indirect) Trư ng ñ a ch s có hai ph n: m t con s c a thanh ghi ch s và m t h ng s . Trong ví d trên n u c hai ñ a ch ñ u ñư c ñánh ch s s ð a ch thanh ghi thì gi ng ñ a ch tr c ti p, còn ñ a ch gián d ng m t index register (IR) có ch a s nguyên k, thi l nh MOVE B,A s ti p thanh ghi thì l i gi ng v i ñ a ch gián ti p. Trong c hai chuy n n i dung c a v trí nh A+k t i B+k. B ng cách kh i t o cho IR trư ng h p s khác nhau ch là m t cách là ñ a ch b nh chính, giá tr ban ñ u 0 và tăng nó lên b ng kích thư c m t word m i khi copy còn m t cách là thanh ghi: xong m t word, thì chúng ta ch c n s d ng m t thanh ghi cho vòng l p copy. EA = (R) Vi c ñánh ñ a ch Index ñư c s d ng r ng rãi ñ ñánh ñ a ch Trư ng ñ a ch ch a s thanh ghi, mà trong thanh ghi ñó m t trư ng t i m t kho ng cách ñã bi t tính t ñi m ñ u c a c u trúc d ch a ñ a ch c a toán h ng c n thi t. li u ñã cho. f) ð a ch ð a ch d ch chuy n – Displacement g) ð a ch ngăn x p – Stack M t ch ñ ñư c t ng h p t hai ch ñ : ñ a ch tr c ti p và ñ a trên ta ñã ñưa ra các tiêu chí thi t k d ng th c l nh, mà m t ch gián ti p thanh ghi. Cách tính ñ a ch th c như sau: trong các tiêu chí là l nh càng ng n càng t t ñ ti t ki m th i gian c a EA = A + (R) CPU và ti t ki m b nh . Gi i h n cu i cùng c a vi c gi m chi u dài ñ a Ch ñ này ñòi h i trong mã l nh ph i có hai trư ng ñ a ch , m t trư ng ch là làm cho l nh không còn trư ng ñ a ch n a, ch có opcode thôi. cho ñ a ch thanh ghi (R) và m t trư ng cho ñ a ch tr c ti p b nh (A). Th t ñáng ng c nhiên là ñi u này có th th c hi n ñư c b ng cách s ð a ch th c là t ng c a ñ a ch A v i giá tr ñ a ch ch a trong thanh ghi d ng m t c u trúc d li u có tên là Stack. R. Stack ch a các ph n t d li u (words, characters,…) theo tr t t M t cách ñánh ñ a ch d ch chuy n hay dùng là d ng ñánh ñ a ch liên ti p trong b nh . Ph n t ñ u tiên ñư c ñ y lên Stack ñư c g i là “ch s ” (Indexing). Có nhi u thu t toán ñòi h i m t s thao tác trên dãy n m ñáy c a Stack, ph n t sau cùng v a m i ñ y lên Stack ñư c g i là các c u trúc d li u ñư c ch a trong các v trí nh liên ti p. Ví d chúng n m ñ nh c a Stack. D li u ñư c ñưa vào và l y ra theo phương th c ta xem m t kh i g m N t chi m các v trí nh : vào ñ u tiên thì ra sau cùng FILO (first in last out). M i Stack ñư c g n A, A+1, A+2,…, A+N-1 v i m t thanh ghi hay word b nh ch a ñ a ch ñ nh Stack và ñư c g i Gi s chúng c n ñư c chuy n t i v trí nh : là con tr Stack. B, B+1, B+2,…, B+N-1 Và gi s ta dùng l nh máy Hình 6.9 cho ta th y các ch ñ l p ñ a ch c a d li u trong MOVE B,A các máy tính m i nh t và các ví d tương ng v i nó. Trong hình ñ chuy n n i dung v trí nh A ñ n v trí nh B. Máy thi hành l nh này này và trong cu n sách này chúng ta dùng ph n m r ng c a ngôn và sau ñó s a l i thành ng l p trình C ñ bi u di n các câu l nh. ñây chúng ta dùng MOVE B+1,A+1 m ng Mem như là tên c a b nh chính và Regs ñ ch Registers. r i thi hành l nh này, r i l i s a l i, l i thi hành…. c l p ñi l p l i chu Ví d chúng ta ghi Mem[Regs[R1]] ñ ch m t ô nh có ñ a ch kỳ này cho ñ n khi t t c N word ñư c copy xong. ñư c ghi trong thanh ghi tên là R1. Trong b ng này m i ch ñ l p ñ a ch s có m t ví d minh h a ñư c ñưa ra, ñ ng th i gi i thích ý nghĩa c a nó và cho bi t nó ñư c dùng khi nào. 197 198
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh Câu l nh này cho th y ch ñ thanh ghi các toán h ng ñ u là các thanh ghi. ñây R3 và R4 là hai toán h ng c a phép toán Ch ñ Ví d Di n gi i c ng. Ý nghĩa c a câu l nh này có nghĩa là: Regs[R4] Regs[R4] + Regs[R3] T c là toán h ng th nh t n m trên thanh ghi có tên R4 và toán h ng th hai n m trên thanh ghi có tên là R3 s ñư c c ng l i và k t qu cu i cùng s lưu vào thanh ghi R4. Mũi tên ch ra k t qu s ñư c lưu vào ñâu. ð c bi t trong câu l nh v i tham chi u b nh (Memory indirect) hay trong C ta g i là v i con tr ta th y toán h ng th hai có thêm d u “@” ñ ch toán h ng ñó là m t ñ a ch và ñ a ch ñó ch a m t ñ a ch khác, mà ñ a ch cu i này m i ch a giá tr th t c a toán h ng này. Gi s trong câu l nh Add R1, @(R3) R1 ch a giá tr 5, R3 ch a giá tr 16 thì l nh này có th ñư c di n gi i rõ hơn như hình 6.9. Trong R3 ch a giá tr 16 là m t ñ a ch , mà trong ñ a ch này ch a giá tr 4 là m t ñ a ch khác, mà trong ñ a ch 4 này m i ch a giá tr th t 7 c a toán h ng th hai. Giá tr toán h ng th nh t là 5 c ng v i giá tr toán h ng th hai là 7, ñư c 12 và giá tr này l i ghi tr l i vào R1. Hình 6.9. Các ch ñ l p ñ a ch thông d ng Ví d ch ñ l p ñ a ch “thanh ghi” (Register) ñ làm phép toán c ng hai s ta dùng câu l nh: Add R4, R3. 199 200
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh R1 = 5 R3 = 16 Chương trình b ng ngôn ng c p cao 0 Trình biên d ch 4 7 ( Compiler) 8 12 Chương trình b ng h p ng 16 4 20 B d ch h p ng 5 7 (Assempler) + Chương trình b ng ngôn ng máy 12 Hình 6.10. Quá trình biên d ch ra ngôn ng máy Hình 6.9. L nh Add v i tham chi u b nh Do m i l nh trong máy tính là t h p các con s nh phân 0, 1 nên r t khó nh . ð kh c ph c ñi m y u này ngư i ta dùng h p 6.4. B l nh ng Assembly ñ mô t các mã l nh nh phân b ng các t ng n g n Trong ph n này chúng ta s xem xét các lo i l nh cơ b n mà ta g i là t g i nh mã l nh. Ngoài ra trong quá trình di n gi i c a các ki n trúc ph n m m ñư c dùng nhi u nh t, ñ cho th y các chúng ta còn dùng các khái ni m thanh ghi ñích, thanh ghi ngu n 1, k thu t m c ngôn ng máy dùng ñ thi hành các c u trúc trong thanh ghi ngu n 2. các ngôn ng c p cao. ða s ngày nay, ñ vi t các chương trình T g i nh mã l nh mô t ng n g n tác v ph i thi hành cho máy tính, ngư i ta dùng các ngôn ng c p cao d hi u va tiên trên các thanh ghi ngu n, k t qu ñư c lưu gi trong thanh ghi l i hơn như C, Pascal, C#,.. Quá trình biên d ch t m t ngôn g c p ñích. cao sang ngôn ng máy ti n hành như trong hình 6.10. M i l nh c a ngôn ng c p cao ñư c xây d ng b ng m t l nh mã máy ho c m t chu i nhi u l nh mã máy. L nh nh y (GOTO) ñư c th c hi n b ng các l nh h p ng v nh y (JUMP) ho c l nh h p ng v vòng. Chúng ta phân bi t l nh nh y làm cho b ñ m chương trình ñư c n p vào ñ a ch tuy t ñ i nơi ph i nh y ñ n (PC ← ñ a ch tuy t ñ i nơi ph i nh y t i), v i l nh vòng theo 201 202
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh ðích Ngu n Ví d Gi i thích ñó ta ch c n c ng thêm m t ñ d i vào b ñ m chương trình (PC MOVE 100H, AX ← PC + ñ d i). B nh Thanh Chuy n n i dung trong ghi AX vao v trí nh 100H Ngoài ra do m i ki u ki n trúc máy tính có cách mã hóa MOVE AX,MEM1 Chuy n n i dung trong v Thanh B nh l nh và tên các câu l nh khác nhau, do ñó trong ph n này chúng ta ghi trí nh MEM1 ch ra vào ch ñ ý ñ n ki u c u trúc RISC. thanh ghi AX MOVE AX, BX Thanh Thanh Chuy n n i dung trong 6.4.1. Nhóm l nh truy n d li u ghi ghi thanh ghi BX vào thanh ghi AX Nhóm l nh này nh m truy n d li u (a word or a block) t MOVE AX, m t ngu n có th là thanh ghi ho c b nh ñ n m t ñích. Ph n l n Thanh H ng s Chuy n giá tr h ng s 0FFFFH trong nhóm này là nh ng l nh truy n d li u gi a các thanh ghi ghi h 16: FFFF vào thanh khác nhau trong CPU. Vi c truy n d li u t m t thanh ghi ñ n ghi AX, s 0 ñ u ñ ch m t thanh ghi khác có th thông qua l nh sau: rõ FFFFH là m t giá tr h ng ch không ph i là MOVE Ri, Rj // truy n d li u t thanh ghi Rj ñ n m t nhãn thanh ghi Ri B ng 6.4. M t s ví d l nh MOVE ñây d li u t thanh ghi ngu n Rj ñư c ghi ñè lên thanh L nh truy n d li u Ý nghĩa ghi ñích Ri, còn d li u c a Rj thì không thay ñ i. MOVE Di chuy n (m t t hay m t kh i) t ñ a ch ngu n (thanh M t s ví d c a l nh MOVE như trong b ng 6.4. ghi hay b nh trong) ñ n ñ a ð n p m t giá tr t b nh vào thanh ghi ho c lưu m t giá ch ñích. tr t thanh ghi vào b nh ta dùng các l nh sau: LOAD ð c d li u t b nh vào thanh LOAD ñích, ngu n ghi ví d : LOAD Ri, M (ñ a ch ) // Ri M[ñ a ch ] STORE Lưu d li u t thanh ghi vào b STORE ñích, ngu n nh ví d : STORE M(ñ a ch ), Ri // M[ñ a ch ] ←Ri PUSH Lưu d li u th thanh ghi vào Trong b ng 6.5 cho ta th y m t s các l nh và ý nghĩa c a nó ngăn x p POP Nh n d li u t ngăn x p vào thanh ghi B ng 6.5. M t s l nh truy n d li u 203 204
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh 6.4.2. Nhóm l nh tính toán s h c: Tên l nh Ý nghĩa ADD C ng Các l nh s h c bao g m b n phép tính s h c cơ b n là ADDD C ng s có d u ch m ñ ng, chính xác kép c ng, tr , nhân, chia và ñ o d u toán h ng. SUB Tr SUBD Tr s có d u ch m ñ ng, chính xác kép ADD/SUB MUL Nhân D ng t ng quát c a các l nh c ng (add) và tr (subtract) DIV Chia như sau: INC Tăng lên 1 ADD ñích, ngu n // ñích ñích + ngu n DEC Gi m ñi 1 SUB ñích, ngu n // ñích ñích – ngu n NEG ð o d u toán h ng trong ñó các toán h ng ñích và ngu n có th tím ñư c theo B ng 6.6. Các l nh tính toán s h c cơ b n các ñ a ch khác nhau, nhưng ph i ch a d li u có cùng ñ dài và không ñư c phép ñ ng th i là hai ô nh và cũng không ñư c là 6.4.3. Nhóm l nh logic: thanh ghi ño n Tth c hi n phép tính logic NOT, AND và OR cho t ng bit Ví d 1: m t. L nh NOT ñ o t t c các bit trong toán h ng, các l nh ADD AX, BX // AX AX + BX AND/OR th c hi n các phép tính AND/OR ñ i v i m t ñôi bit ADD AL,74H // AL AL + [74H] trong toán h ng ngu n và toán h ng ñích. SUB CL, AL // CL CL – AL AND/OR SUB AX, 0405H // AX AX – 0405H D ng t ng quát c a l nh AND/OR như sau: Ví d 2: Vi t ño n chương trình b ng ngôn ng Assembly AND ñích, ngu n ñ c ng 5H v i 3H, dùng các thanh ghi AL và BL. K t qu c a OR ñích, ngu n phép c ng lưu vào b nh t i ñ a ch 100H. AND/OR th c hi n phép toán Boolean ñ i v i các toán MOV AL, 05H // AL 05H h ng ngu n và ñích. Phép AND thư ng dùng ñ che ñi ho c gi l i MOV BL, 03H // BL 03H m t vài bit nào ñó c a m t toán h ng b ng cách nhân logic toán ADD AL, BL // AL AL + BL h ng ñó v i toán h ng t c th i có các bit 0/1 t i các v trí c n che/ MOV 100H, AL // MEM[100H] AL: di gi l i tương ng. Phép OR thư ng dùng ñ l p m t vài bit nào ñó // chuy n k t qu t AL vào c a toán h ng b ng cách c ng logic toán h ng ñó v i toán h ng t c // v trí nh DS:100H th i có các bit 1 t i các v trí tương ng c n thi t l p (toán h ng t c th i trong nh ng trư ng h p này còn ñư c g i là m t n ) B ng 6.6 cho ta tóm t t các l nh tính toán s h c và ý nghĩa tương ng c a nó Ví d : AND AL, BL // N i dung thanh ghi BL ñư c giao // v i n i dung trong thanh ghi AL 205 206
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh // và k t qu ñư c lưu l i vào trong // thanh gh AL. N u con s trong // AL là 00001101B và trong BL là // 00110011B thì k t qu trong thanh // ghi AL sau phép AND là 00000001B 6.4.4 Nhóm các l nh d ch chuy n s h c ho c logic (SHIFT ), quay vòng (ROTATE) có ho c không có s gi ngã vào, sang ph i ho c sang trái. Các l nh này ñư c th c hi n trên m t thanh ghi và k t qu lưu gi trong thanh ghi khác. S l n d ch chuy n (m i l n d ch sang ph i ho c sang trái m t bit) thư ng ñư c xác ñ nh trong thanh ghi th ba. Hình 6.11 minh ho cho các l nh cơ b n nh t c a nhóm này. SRL (Shift Right Logical - d ch ph i logic): Các bit c a word ñư c d ch chuy n sang ph i, bit th p nh t (bit 0) m t ñi còn tr nh phân “0” s d ch chuy n vào bit cao nh t SLL (Shift Left Logical - d ch trái logic): Các bit c a word ñư c d ch chuy n sang trái, tr nh phân “0” s d ch chuy n vào bit th p nh t (bit 0) , còn bit cao nh t s m t ñi SRA (Shift Right Arithmetic - d ch ph i s h c): Bit cao nh t là bit d u s ñư c gi l i, các bit còn l i s d ch chuy n sang ph i còn bit th p nh t s m t ñi. SLA (Shift Left Arithmetic – d ch trái s h c): Bít cao nh t là bit d u s ñư c gi nguyên, các bit d ch sang trái, bít k bit d u m t ñi, tr nh phân “0” d ch chuy n vào bit th p nh t. Tương t cho các l nh quay vòng như trong hình 6.11. Hình 6.11. Các l nh d ch chuy n và quay vòng 207 208
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh 6.4.5. Nhóm các l nh có ñi u ki n và l nh nh y (không ñi u Toán h ng 2 Toán h ng 1 ki n) L nh có ñi u ki n có d ng : S mang vào N u thì n u không (Carry in) Bit S (IF THEN ELSE ) ALU Bit Z L nh này bu c ph i ghi nh ñi u ki n và nh y vòng n u Bit OVF ñi u ki n ñư c tho . Bit C Ghi nh ñi u ki n . B tính toán logic s h c ALU cung c p k t qu ngã ra tuỳ theo các ngã vào và phép tính c n làm. Nó cũng cho m t s K t qu thông tin khác v k t qu dư i d ng các bit tr ng thái (Hay các bit c - flag). Các bit này là nh ng ñ i lư ng logic ðÚNG ho c SAI Hình 6.12. Các bit tr ng thái mà ALU t o ra (hình 6.12). Trong các bit tr ng thái ta có: + bit d u S (Sign - ðúng n u k t qu âm), Có hai k thu t cơ b n ñ ghi nh các bit tr ng thái Cách th nh t, ghi các tr ng thái trong m t thanh ghi ña d ng. + bit tr c nghi m zero Z (Zero - ðúng n u k t qu Ví d l nh CMP Rk, Ri, Rj b ng không), + bit tràn OVF (Overflow) ðÚNG n u phép tính s L nh trên s làm phép tính tr Ri - Rj mà không ghi k t qu phép tr , mà l i ghi các bit tr ng thái vào thanh ghi Rk. Thanh ghi h c làm thanh ghi không ñ kh năng lưu tr k t này ñư c dùng cho m t l nh nh y có ñi u ki n. ði m l i c a k qu , thu t này là giúp lưu tr nhi u tr ng thái sau nhi u phép tính ñ + bit s gi C (carry) ðÚNG n u s gi ngã ra là dùng v sau. ði m b t l i là ph i dùng m t thanh ghi ña d ng ñ 1 .... ghi l i tr ng thái sau m i phép tính mà s thanh ghi này l i b gi i Các bit trên thư ng ñư c g i là bit mã ñi u ki n. h n 32 trong các b x lý hi n ñ i. Cách th hai, là ñ các bit tr ng thái vào m t thanh ghi ñ c bi t g i là thanh ghi tr ng thái. V n ñ lưu gi n i dung thanh ghi này ñư c gi i quy t b ng nhi u cách. Trong ki n trúc SPARC, ch có m t s gi i h n l nh ñư c phép thay ñ i thanh ghi tr ng thái ví d như l nh ADDCC, SUBCC (các l nh này th c hi n các phép tính c ng ADD và phép tính tr SUB và còn làm thay ñ i thanh ghi tr ng thái). Trong ki n trúc PowerPC, thanh ghi tr ng thái ñư c 209 210
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh 6.5. C u trúc l nh CISC và RISC phân thành 8 trư ng, m i trư ng 4 bit, v y là thanh ghi ñã phân thành 8 thanh ghi tr ng thái con. Trong máy tính m i th ñ u ñư c ñưa v các con s nh ð c tính chung c a các l nh này là th t th c thi chương phân “0” và “1” b i vì máy tính ch hi u các m c ñi n th tương trình thay ñ i nh tác ñ ng vào già tr lưu trong thanh ghi ñ m ng v i 0/1 trên m i transistor c th , ngư i s d ng mu n th c chương trình (Program Counter - PC). S thay ñ i trong thanh ghi hi n m t chương trình nào ñ y, ph i n p các mã l nh ch g m các PC có th là không có ñi u ki n, ví d như khi chương trình th c con s 0-1 vào b nh cho máy tính. Có 3 cách cơ b n ñ làm vi c hi n ñ n m t ch nào ñó r i c n ph i nh y ñ n m t v trí khác, khi y: ñó ta s d ng l nh nh y (Jump instruction). Trư ng h p này trong • Vi t ngay d ng mã máy v i các con s 0, 1 và n p vào b nh . ngôn ng c p cao ta hay g p ñó là l nh GOTO, khi ñó giá tr ñư c Cách này r t khó th c thi b i vì th nh t r t d b nh m l n gi a n p vào trư c trong thanh ghi PC s b xóa ñi và m t l nh m i các con s 0 và 1; th hai r t khó nh các l nh ñư c mã hóa như trong b nh s ñư c n p vào. th nào và th ba là r t m t th i gian ñ làm vi c ñó. Thanh ghi PC có th thay ñ i có ñi u ki n, mà nh ng ñi u • Vi t d ng tên g i nh b ng h p ng (Assembler), sau ñó biên ki n này ch y u d a vào các c như bít d u (S), bit Zero (Z), d ch ra mã máy, c p này cũng r t g n v i ngôn ng máy và cũng Overflow (O) và bit Carry (C). Nh ng bit c này ñư c lưu tr trên khó th c hi n v i các chương trình ph c t p. Tuy nhiên, c u trúc m t thanh ghi ñ c bi t g i là thanh ghi mã ñi u ki n (Condition g n nh , các l nh có tên tương ng d nh . Code register - CC). Giá tr c a các bit c này thay ñ i d a vào k t • Vi t b ng m t ngôn ng c p cao như C++, Pascal, Java,…, sau qu th c thi c a các l nh khác nhau. ñó dùng m t trình biên d ch (compiler) ñ d ch ra mã máy. Cách Chúng ta xem m t ví d c th sau: này tuy d v i ngư i vi t chương trình nhưng cũng s làm chương trình có dung lư ng l n hơn n u vi t b ng ASM. Và LOAD R1, #100 thách th c là làm sao các nhà s n xu t ph n m m, ph n c ng b t Loop: ADD R0, (R2)+ tay nhau ñ chương trình biên d ch này th t chu n t c, nh g n, không t o nhi u code trung gian. DECREMENT R1 Trong su t th p niên 1980, các nhà thi t k c g ng thu h p BEQZ R1, Loop kho ng cách gi a ngôn ng c p cao c a con ngư i và ngôn ng Câu l nh th 4 là m t l nh có ñi u ki n. Khi k t qu tăng máy, h ñã ñưa ra c u trúc v i các ch l nh ph c t p g i là CISC giá tr trong thanh ghi R1 là b ng 0, thì flag Z s chuy n thành 1 và (Complex Instruction Set Computer), có các ch ñ ñ nh ñ a ch l nh ti p theo ñư c th c thi s là l nh v trí nhãn Loop. khác nhau, m i l nh th c thi c n nhi u l n ñ nh ñ a ch ñ l y d li u, và do ñó, t n nhi u chu kì xung nh p cho m i ch l nh. N u vi c gi m thi u ranh gi i gi a t p l nh c a vi ñi u khi n và ngôn ng c p cao không ph i là m t cách hay ñ máy tính ho t ñ ng hi u qu , các nhà thi t k ph i làm sao ñ t i ưu t c ñ x lý? 211 212
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh N u mu n bi t cách làm ñ vi x lý ho t ñ ng nhanh hơn, – Th i gian phát tri n m t s n ph m ng n hơn do kĩ thu t ñơn ta ph i bi t vi x lý dùng h u h t th i gian c a chúng vào vi c gì? gi n hơn Chúng ta d nghĩ r ng: Vi x lý t t nhiên dùng h u h t th i gian – T c ñ x lý tăng lên ñáng k . Khi ta ñ t ra các ch l nh c a nó ñ tính toán; nghĩa là th i gian h u h t b ALU. Th t ra, ph c t p, tuy nó g n gũi v i ngôn ng c p cao, nhưng như theo th ng kê (xem b ng 6.7) thì suy ñoán này hoàn toàn sai l m: th , vô tình cũng làm các ch l nh khác ph c t p lên, và ñ th c thi m t ch l nh như v y c n t n nhi u chu kì xung Lo i l nh % s d ng th i gian nh p. Trong khi ñó, n u dùng RISC ch m t m t chu kì xung Chuy n d li u 43% nh p cho m i l nh, khi ta phân nh v n ñ ph c t p thành ði u khi n dòng ch y 23% các v n ñ ñơn gi n thì cách gi i quy t s t t hơn. Tính toán s h c 15% Các ñi m b t l i c a RISC: So sánh 13% Phép toán Logic 5% Không ph i RISC ch có ñi u thu n l i, nó cũng có m t vài Các l nh khác 1% b t c p, mà c th là: B ng 6.7. Th ng kê th i gian th c hi n các lo i l nh – T p l nh c a RISC không phong phú b ng CISC, như v y So sánh CISC và RISC khi c n thi t k m t chương trình nào ñó mà không có l nh c n thi t thì ph i thông qua m t lo t các l nh khác làm tăng S khác bi t cơ b n gi a các chip dòng máy tính v i t p lên s chu kỳ xung nh p c n thi t, t c là ñã làm ch m h l nh rút g n RISC (reduced instruction set computer) và máy tính th ng ñi. v i t p l nh ph c t p CISC (complex instruction set computer, ch ng h n như dòng chip x86 c a Intel) có th ñư c xem như cu c – C m thâm nh p b nh ñ i v i t t c các l nh ngo i tr các ganh ñua gi a nhà l p trình và nhà thi t k chip. Chip CISC ñư c l nh ñ c và ghi vào b nh . Do ñó ta bu c ph i dùng nhi u thi t k nh m t o thu n l i cho các nhà l p trình ng d ng b ng l nh ñ làm m t công vi c nh t ñ nh. cách rút g n nhi u câu l nh ñơn gi n, thông d ng thành m t câu – C n thi t ph i tính các ñ a ch hi u d ng vì không có nhi u l nh th c thi dài. ði u này làm cho CISC x lý ch m hơn nhưng l i cách ñ nh v . ñ t y u t thân thi n. m t khác, RISC nhanh nhưng kém thân – Không th th c thi các mã l nh c a x86, m t ki u ki n trúc thi n hơn, m i câu l nh ñơn gi n trong RISC ph c v cho m t m c máy tính ñã quá thông d ng và quen thu c v i m i ngư i. ñích h p r t c th , th c hi n r t nhanh và các l nh này ñư c ti n Như v y ñ tích h p ñư c ph i dùng các ph n m m h tr hành song song. RISC ñòi h i nhà l p trình ph i kiên nh n, gi i và n n cơ s cho RISC, tuy nhiên, v i máy tính c a IBM, có m t trình biên d ch ñư c t i ưu k lư ng. th b t ch i. ði m m nh c a b x lý dùng t p l nh RISC: Tóm l i các ñi m khác bi t cơ b n gi a hai ki u ki n trúc – Kích thư c mi ng bán d n nh hơn: b x lý ñơn gi n ñòi RISC và CISC có th li t kê như trong b ng 6.8. h i ít transistor hơn, do ñó, kích thư c c n dùng nh l i, dành vùng di n tích tr ng ñ tăng các ch c năng như b nh cache, ch c năng qu n lý b nh , ..vv… 213 214
- Chương VI: Ki n trúc b l nh Chương VI: Ki n trúc b l nh RISC CISC CÂU H I VÀ BÀI T P CHƯƠNG VI – Kích thư c các l nh (ñ dài – Kích thư c t p l nh thay ñ i l nh) là c ñ nh ( 32 bit) v i ch v i r t nhi u ñ nh d ng khác m t vài ñ nh d ng. nhau 1. Có m y lo i ki n trúc b l nh cơ b n? Nêu các ưu và như c – S d ng ki n trúc load-store – Cho phép giá tr trong b nh ñi m c a t ng lo i các l nh x lý d li u ho t ñ ng ñư c dùng như như toán h ng 2. Cho bi t các ñ c tính cơ b n c a ki u ki n trúc thanh ghi ña ch trong thanh ghi và cách ly trong các ch l nh x lý d li u d ng. v i các l nh truy c p b nh 3. ð a ch b nh ñư c s p x p như th nào? Gi a cách c a – M t s l n các thanh ghi ña – Có r t nhi u thanh ghi, nhưng Intel và Motorola khác bi t nhau gì? Vư ng m c gì có th d ng 32 bit, cho phép c u trúc h u h t ch ñ s d ng cho m t x y ra khi máy tính c a hai hãng này k t n i v i nhau và load-store ho t ñ ng hi u qu . m c ñích riêng bi t nào ñ y ñưa ra ví d cho s r c r i này? – Có m t s ít l nh (thư ng – Có r t nhi u l nh (kho ng 500) dư i 100 l nh) 4. Cho bi t cách mã hóa t p l nh và ñưa ra m t vài d ng mã – Có m t s ít các ki u ñ nh v ( – Có nhi u ki u ñ nh v (xem hóa l nh cơ b n. thư ng là ñ nh v t c thì và ñ nh ph n 6.3.4) 5. Hãy cho bi t và gi i thích các tiêu chu n thi t k d ng th c v gián ti p qua m t thanh ghi). l nh. – Có m t s ít d ng l nh (m t – Có nhi u d ng l nh 6. Gi s c n thi t k máy v i ký t 8 bit và b nh chính ho c hai) ch a 224 ký t . Hãy cho bi t trư ng ñ a ch c n bao nhiêu – Ch có các l nh ghi ho c ñ c ô – Có nhi u l nh khác cũng thâm bit trong trư ng h p: nh m i thâm nh p vào b nh . nh p vào b nh ñư c a) Ô nh kích thư c 8 bit – Gi i mã các l nh logic b ng – S d ng r t nhi u code trong b) Ô nh kích thư c 16 bit k t n i ph n c ng ROM gi i mã các ch l nh c) Ô nh kích thư c 32 bit – Các máy cũ ít khi cho phép các 7. Thi t k opcode m r ng nh m cho phép mã hóa n i dung – Th c thi ch l nh theo c u trúc dòng l nh th c thi ki u này, sau trong l nh 36 bit dòng ch y (xem hình 7.9 trong chúng ph i tu n t h t dòng l nh a) 7 l nh có hai ñ a ch 15 bit và m t s hi u thanh ghi chương sau) này m i ñ n dòng l nh khác 3 bit – C n nhi u chu kì xung nh p ñ b) 500 l nh có m t ñ a ch 15 bit và m t s hi u thanh hoàn thành m t l nh ghi 3 bit – M t l nh th c thi trong 1 chu c) 50 l nh không có ñ a ch ho c thanh ghi kì xung nh p B ng 6.8. Các ñi m khác nhau cơ b n gi a RISC và CISC 8. Có th thi t k opcode m r ng ñ cho phép mã hóa n i dung sau trong l nh 12 bit ñư c không? Trư ng thanh ghi r ng 3 bit. 215 216
- Chương VI: Ki n trúc b l nh a) 4 l nh có ba thanh ghi b) 255 l nh có hai thanh ghi c) 2048 l nh không có thanh ghi 9. Cho bi t các ch ñ l p ñ a ch và các ưu, như c ñi m c a t ng lo i. Mô t b ng hình các cách l p ñ a ch ñó. 10. Mô t các ki u thi hành l nh c a m t máy tính. T i sao ki u thi hành l nh thanh ghi – thanh ghi ñư c dùng nhi u hi n t i? 11. Hãy di n gi i quá trình biên d ch ra ngôn ng máy t các ngôn ng c p cao 12. Các l nh máy tính ñư c phân ra nh ng nhóm l nh nào? ñưa ra m t ví d cho t ng nhóm l nh. 13. Mô t b ng hình v các l nh d ch chuy n và quay vòng và gi i thích tác d ng c a các l nh. 14. Hãy cho bi t m t s bit tr ng thái mà ALU t o ra và cách dùng các bit này trong các l nh nh y 15. Hãy phân bi t s khác nhau gi a hai ki u ki n trúc máy tính RISC và CISC. 217
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình Kiến trúc máy tính - TS. Vũ Đức Lung
143 p | 1770 | 575
-
Giáo trình: Kiến trúc máy tính - Vũ Đức Lung
191 p | 305 | 81
-
Bài giảng Kiến trúc máy tính: Chương 2 - TS. Vũ Đức Lương
25 p | 265 | 37
-
kiến trúc máy tính Vũ Đức Lung phần 2
13 p | 94 | 23
-
kiến trúc máy tính Vũ Đức Lung phần 5
13 p | 104 | 23
-
kiến trúc máy tính Vũ Đức Lung phần 3
16 p | 114 | 22
-
kiến trúc máy tính Vũ Đức Lung phần 7
13 p | 93 | 22
-
kiến trúc máy tính Vũ Đức Lung phần 9
12 p | 100 | 22
-
kiến trúc máy tính Vũ Đức Lung phần 10
20 p | 104 | 22
-
Bài giảng Kiến trúc máy tính: Chương 2 - TS. Vũ Đức Lung
50 p | 267 | 21
-
kiến trúc máy tính Vũ Đức Lung phần 6
12 p | 95 | 21
-
kiến trúc máy tính Vũ Đức Lung phần 4
16 p | 87 | 21
-
Bài giảng Kiến trúc máy tính: Chương 1 - TS. Vũ Đức Lung
48 p | 89 | 7
-
Bài giảng Kiến trúc máy tính: Chương 4 - TS. Vũ Đức Lung
36 p | 73 | 6
-
Bài giảng Kiến trúc máy tính: Chương 6 - TS. Vũ Đức Lung
34 p | 79 | 5
-
Bài giảng Kiến trúc máy tính: Chương 6 - Vũ Đức Lung
31 p | 43 | 5
-
Bài giảng Kiến trúc máy tính: Chương 1 - Vũ Đức Lung
40 p | 52 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn