490 likes | 993 Views
سازمان و طراحي کامپيوتر پايه. سازمان و طراحي کامپيوتر پايه. • کدهاي دستورالعمل • ثباتهاي کامپيوتر • دستورات کامپيوتر • زمانبندي و کنترل • چرخه دستورالعمل • دستورات مراجعه به حافظه. مقدمه.
E N D
سازمان و طراحي کامپيوتر پايه
سازمان و طراحي کامپيوتر پايه • کدهاي دستورالعمل • ثباتهاي کامپيوتر • دستورات کامپيوتر • زمانبندي و کنترل • چرخه دستورالعمل • دستورات مراجعه به حافظه
مقدمه • هر پردازنده طراحي خاص خود(ثباتها، گذرگاهها، ريزعملها، دستورالعملهاي ماشين و ... ) را دارد. • کامپيوترهاي مدرن ساختار پيچيدهاي دارند. • آنها شامل موارد زير هستند: • ثباتهاي فراوان • چندين واحدهاي محاسباتي هم براي اعداد صحيح هم براي اعداد مميزدار • استفاده از چندين واحد خط لوله تا به اين ترتيب سرعت اجرا افزايش يابد. • و موارد ديگر • در ادامه براي فهم اينکه کامپيوتر چگونه کار ميکند از يک مدل ساده شده استفاده شده است. • اين مدل را آقاي مانو معرفي کرده و نام آنرا کامپيوتر پايه گذاشته است.
کامپيوتر پايه • کامپيوتر پايه دو جز (component) اصلي دارد، پردازنده و حافظه. • حافظه 4096 کلمه دارد. • 4096 = 212يعني به 12 خط آدرس نياز داريم. • هر کلمه 16 بيت طول دارد. RAM CPU 0 15 0 4095
دستورالعملها • برنامه • يک دنباله از دستورالعملها • دستورالعمل (ماشین) • يک گروه از بيتها که به کامپيوتر اعلام ميکنند که يک عمل خاص را انجام دهند. (يک دنباله از ريزعملها) • دستورالعملهاي يک کامپيوتر به همراه همه دادههاي لازم در حافظه ذخيره شدهاند. • CPU دستور بعدي را از حافظه ميخواند. • اين دستور در يک ثبات به نام IR ذخيره میشود. • دستورالعمل به دنبالهاي از ريزعملها تبديل ميشود تا با انجام ريزعملها دستورالعمل مورد نظر اجرا شود.
Instruction Format 15 14 12 11 0 Opcode Address I Addressing mode قالب دستورالعملها • يک دستورالعمل اغلب از دو بخش تشکيل شده است. • کد عمليات (opcode): عملي را که دستورالعمل بايد انجام دهد مشخص ميکند. • آدرس (address): ثبات يا جايي از حافظه را که دستورالعمل بايد عمل کند مشخص ميکند. • همانطور که گفته شد در کامپيوتر پايه 12 بيت براي آدرسدهي حافظه داريم. • در کامپيوتر پايه بيت 15 دستورالعمل روش آدرسدهي(addressing mode) را مشخص ميکند. • صفر: آدرس دهي مستقيم (direct addressing) • يک: آدرس دهي غير مستقيم (indirect addressing). • چون کلمههاي حافظه و بنابراين دستورالعملها 16 بيتي هستند، 3 بيت باقيمانده براي کد دستورالعمل مورد استفاده قرار ميگيرد.
آدرس دهي غير مستقيم آدرس دهي مستقيم 0 ADD 1 ADD 457 35 300 22 1350 300 Operand 457 1350 Operand + + AC AC شيوه آدرسدهي Addressing Mode)) • ناحيه آدرس يک دستورالعمل ميتواند به يکي از دو شکل زير تفسير شود: • آدرسدهي مستقيم: آدرس داده مورد نظر در حافظه (عملوند) • آدرسدهي غير مستقيم: آدرس آدرس داده مورد نظر در حافظه (عملوند) • آدرسدهي موثر Effective Address(EA) • آدرس عملوند، مثلا در شکل بالا سمت راست آدرس موثر 1350و در شکل بالا سمت چپ آدرس موثر 457 است.
ثباتهاي پردازنده • يک پردازنده تعداد زيادي ثبات براي نگهداري دستورالعملها، آدرسها و دادهها و ... دارد. • پردازنده يک ثبات به نام شمارنده برنامه Program Counter(PC) دارد که آدرس دستوري را که بايد اجرا شود، نگه ميدارد. • چون حافظه در کامپيوتر پايه 4096 کلمه دارد پس PC 12 بيتي است. • در آدرسدهي مستقيم يا غير مستقيم پردازنده براي آنکه آدرس عملوند را نگه دارد از يک ثبات به نام ثبات آدرس Address register (AR)استفاده ميکند. • چون حافظه در کامپيوتر پايه 4096 کلمه دارد پس AR 12 بيتي است. • پس آنکه عملوند در حافظه پيدا شد، در آدرسدهي مستقيم يا غير مستقيم، عملوند به يک ثبات به نام ثبات داده Data Register (DR) منتقل ميشود. • کامپيوتر پايه يک ثبات همه منظوره به نام انباره Accumulator (AC) نيز دارد.
ثباتهاي پردازنده (ادامه) • اهميت ثبات همه منظوره آن است که ميتوان در دستورات به آن ارجاع داد. • مثلا ميتوان AC را به يک مکان خاص از حافظه منتقل کرد يا مکان خاص از حافظه را به AC منتقل کرد. • در کامپيوتر پايه از يک ثبات براي نگهداري داده هاي مياني يا موقتي استفاده شده است به اين ثبات، ثبات موقتي Temporary Register (TR)ميگويند. • کامپيوتر پايه يک مدل بسيار ساده ورودي/خروجي دارد. • دستگاههاي ورودي کاراکترهاي 8 بيتي را به پردازنده میفرستند. • پردازنده کاراکترهاي 8 بيتي را به دستگاه هاي خروجي ميفرستد. • ثبات ورودي Input Register (INPR) داده8 بيتي را که از دستگاه ورودي رسيده است نگه ميدارد. • ثبات خروجيOutput Register (OUTR) داده 8 بيتي را که به دستگاه خروجي فرستاده ميشود نگه ميدارد.
ثباتهاي کامپيوتر پايه ثباتها در کامپيوتر پايه 11 0 PC Memory 11 0 4096 x 16 AR 15 0 IR CPU 15 0 15 0 TR DR 7 0 7 0 15 0 OUTR INPR AC List of BC Registers • DR 16 Data Register مقدار عملوند را نگه مي دارد • AR 12 Address Register آدرس عملوند را نگه مي دارد • AC 16 Accumulator ثبات همه منظوره • IR 16 Instruction Register را نگه مي دارد کد عمليات • PC 12 Program Counter را آدرس دستورالعمل • TR 16 Temporary Register داده هاي موقتي را نگه ميدارد • INPR 8 Input Register کاراکتر ورودي را نگه ميدارد • OUTR 8 Output Register کاراکتر خروجي را نگه ميدارد
سيستم گذرگاه عمومي • ثباتها در کامپيوتر پايه با استفاده از گذرگاه به هم متصل شدهاند • استفاده از گذرگاه نسبت به اتصال مستقيم ثباتها به هم در سيمبندي صرفه جويي ميکند.
S1 Bus S0 Memory unit 7 4096 x 16 Address Write Read AR 1 LD INR CLR PC 2 LD INR CLR DR 3 LD INR CLR E AC 4 ALU LD INR CLR INPR IR 5 LD TR 6 LD INR CLR OUTR Clock LD 16-bit common bus سيستم گذرگاه عمومي S2
Read INPR Write Memory 4096 x 16 ALU E Address AC L I C L I C L DR IR L I C L I C TR PC OUTR LD AR L I C 7 1 2 3 4 5 6 گذرگاه عمومي 16 بيتي سيستم گذرگاه عمومي S0 S1 S2
سيستم گذرگاه عمومي • سه خط کنترل s0، s1 و s2 کنترل ميکنند که کدام ثبات به عنوان ثبات ورودي انتخاب شود. • هر ثبات که load آن فعال باشد، داده را با پالس بعدی از گذرگاه دریافت میکند • حافظه به هنگام فعال شدن نوشتن محتوای گذرگاه را دریافت میکند • به هنگام فعال شدن ورودی خواندن حافظه، خروجی آن روی گذرگاه قرار میگیرد • وقتي ثباتهاي 12 بيتي (AR و PC) روي گذرگاه اطلاعات قرار ميدهند، 4 بيت با ارزشتر گذرگاه مقدار صفر ميگيرد. • وقتی ثبات 8 بيتی OUTR از گذرگاه داده دریافت میکند، 8 بیت کم ارزشتر گذرگاه در آن قرار میگیرند S2 S1 S0 Register 0 0 0 x 0 0 1 AR 0 1 0 PC 0 1 1 DR 1 0 0 AC 1 0 1 IR 1 1 0 TR 1 1 1 Memory
15 12 11 0 Register operation 0 1 1 1 15 12 11 0 I/O operation 1 1 1 1 دستوالعملهاي کامپيوتر پايه • قالب دستوالعمل هاي کامپيوتر پايه دستورالعملهاي مراجعه به حافظه (OP-code = 000 ~ 110) 15 14 12 11 0 Opcode Address I دستورالعملهاي مراجعه به ثبات (OP-code = 111, I = 0) دستورالعملهاي ورودي خروجي (OP-code =111, I = 1)
دستوالعملهاي کامپيوتر پايه Hex Code سمبل I = 0 I = 1 توضيح • AND 0xxx 8xxx AND memory word to AC • ADD 1xxx 9xxx Add memory word to AC • LDA 2xxx Axxx Load AC from memory • STA 3xxx Bxxx Store content of AC into memory • BUN 4xxx Cxxx Branch unconditionally • BSA 5xxx Dxxx Branch and save return address • ISZ 6xxx Exxx Increment and skip if zero • CLA 7800 Clear AC • CLE 7400 Clear E • CMA 7200 Complement AC • CME 7100 Complement E • CIR 7080 Circulate right AC and E • CIL 7040 Circulate left AC and E • INC 7020 Increment AC • SPA 7010 Skip next instr. if AC is positive • SNA 7008 Skip next instr. if AC is negative • SZA 7004 Skip next instr. if AC is zero • SZE 7002 Skip next instr. if E is zero • HLT 7001 Halt computer • INP F800 Input character to AC • OUT F400 Output character from AC • SKI F200 Skip on input flag • SKO F100 Skip on output flag • ION F080 Interrupt on • IOF F040 Interrupt off
كامل بودن مجموعه دستورالعملها • هر كامپيوتر بايد مجموعهاي از دستورالعملها را داشته باشد كه كاربر بتواند براي محاسبه هر تابعي كه محاسبه پذير بودن آن محرز است، برنامهاي به زبان ماشين بنويسد. • نوع دستورالعملها • دستورالعملهاي عملياتي • -حسابي، منطقي و جابجايي • -ADD, CMA, INC, CIR, CIL, AND, CLA • تبادل اطلاعات • -تبادل اطلاعات بين حافظه وثباتهاي كامپيوتر • -LDA, STA • دستورالعملهاي كنترلي • - دستورالعملهاي كنترل برنامه و وارسي شرايط • -BUN, BSA, ISZ • دستورالعملهاي ورودي خروجي • -ورودي خروجي • - INP, OUT
واحد كنترل • واحد كنترل همهی پروسسورها دستورالعملهاي ماشين را به سيگنالهاي كنترلي تبديل ميكند. اين سيگنالهاي كنترلي براي كنترل ريزعملها به كار ميروند. • واحد كنترل به دو طريق قابل ساخت ميباشد: • كنترل سختافزاري • واحد كنترل از مدارهاي تركيبي و ترتيبي ساخته شده است كه كار آنها توليد سيگنالهاي كنترلي است. • كنترل ريزبرنامهنويسي شده • يك حافظهی كنترلي درپروسسور وجود دارد كه شامل ريزعملهايي است كه سيگنالهاي كنترلي لازم را توليد ميكند. • در این فصل براي كامپيوتر پايه واحد کنترل سختافزاری استفاده میشود.
زمانبندي و كنترل واحد كنترل در كامپيوتر پايه Instruction register (IR) 14 13 12 15 11 - 0 وروديهاي ديگر 3 x 8 ديكدر 7 6 5 4 3 2 1 0 D 0 گيتهاي مدار كنترل I D خروجيهاي كنترل 7 T 15 T 0 15 14 . . . . 2 1 0 4 x 16 ديكدر Increment (INR) 4-bit sequence Clear (CLR) counter Clock (SC)
سيگنالهاي زمانبندي -به وسيلهی دنباله شمار 4 بيتي و ديكدر 16*4 توليد ميشود. -SC ميتواند افزايش يافته يا پاك شود. به عنوان مثال: T0, T1, T2, T3, T4, T0, T1, . . . -فرض: در زمان T4 ، SC پاك ميشود اگر خروجي ديكدر D3فعال باشد. D3T4: SC 0
چرخه دستورالعمل • در یک کامپیوترپایه، یک دستورالعمل ماشین در چرخههای زیر اجرا میشود: • 1- یک دستورالعمل را از حافظه واکشی کن • 2- دستورالعمل را کدگشایی کن • اگر آدرسدهی غیر مستقیم است آدرس موثر را از حافظه بخوان -3- دستورالعمل را اجرا کن • پس از این که دستورالعمل اجرا شد، چرخه برای دستورالعمل بعدی دوباره از 1 شروع میشود
واكشي وكدگشايي • Fetch and Decode T0: AR PC (S0S1S2=010, T0=1) T1: IR M [AR], PC PC + 1 (S0S1S2=111, T1=1) T2: D0, . . . , D7 Decode IR(12-14), AR IR(0-11), I IR(15) T1 S2 Bus T0 S1 S0 Memory 7 unit Address Read AR 1 LD PC 2 INR IR 5 LD Clock Common bus
تعيين نوع دستورالعمل Start SC 0 T0 AR PC T1 IR M[AR], PC PC + 1 T2 Decode Opcode in IR(12-14), AR IR(0-11), I IR(15) (Register or I/O) = 1 = 0 (Memory-reference) D7 = 0 (direct) (I/O) = 1 = 0 (register) (indirect) = 1 I I T3 T3 T3 T3 Nothing Execute Execute AR M[AR] input-output register-reference instruction instruction SC 0 SC 0 Execute T4 memory-reference instruction SC 0 D'7IT3: AR M[AR] D'7I'T3: Nothing D7I'T3: Execute a register-reference instr. D7IT3: Execute an input-output instr.
دستورالعملهای ثباتی • دستورالعملهای ثباتی با • D7 = 1, I = 0 • is specified in b0 ~ b11 of IR • Execution starts with timing signal T3 مشخصمیشوند • r = D7 IT3 => Register Reference Instruction • Bi = IR(i) , i=0,1,2,...,11
چرخه دستورالعمل- دستورالعملهای ارجاع ثبات r: SC 0 CLA rB11: AC 0 CLE rB10: E 0 CMA rB9: AC AC’ CME rB8: E E’ CIR rB7: AC shr AC, AC(15) E, E AC(0) CIL rB6: AC shl AC, AC(0) E, E AC(15) INC rB5: AC AC + 1 SPA rB4: if (AC(15) = 0) then (PC PC+1) SNA rB3: if (AC(15) = 1) then (PC PC+1) SZA rB2: if (AC = 0) then (PC PC+1) SZE rB1: if (E = 0) then (PC PC+1) HLT rB0: S 0 (S is a start-stop flip-flop) r = D7 IT3 => Register Reference Instruction Bi = IR(i) , i=0,1,2,...,11
چرخه دستورالعمل- دستورالعملهای ارجاع حافظه Operation Decoder Symbol Symbolic Description • اگر I=0، آدرس موثر دستورالعمل در AR در سیگنال زمانی T2 قرار میگیرد و اگر I=1در سیگنال زمانی T3 قرار میگیرد • اجرای دستورالعملهای ارجاع حافظه از زمان T4شروع میشود AND D0 AC AC M[AR] ADD D1 AC AC + M[AR], E Cout LDA D2 AC M[AR] STA D3 M[AR] AC BUN D4 PC AR BSA D5 M[AR] PC, PC AR + 1 ISZ D6 M[AR] M[AR] + 1, if M[AR] + 1 = 0 then PC PC+1
چرخه دستورالعمل- دستورالعملهای ارجاع حافظه AND: AND to AC D0T4: DR M[AR] D0T5: AC AC DR, SC 0 ADD: ADD to AC D1T4: DR M[AR] D1T5: AC AC + DR, E Cout, SC 0 LDA: Load to AC D2T4: DR M[AR] D2T5: AC DR, SC 0 STA: Store AC D3T4: M[AR] AC, SC 0 BUN: Branch Unconditionally D4T4: PC AR, SC 0 ISZ: Increment and Skip-if-Zero D6T4: DR M[AR] D6T5: DR DR + 1 D6T4: M[AR] DR, if (DR = 0) then (PC PC + 1), SC 0
چرخه دستورالعمل- دستورالعملهای ارجاع حافظه (ادامه) • BSA: Branch and Save Return Address D5T4: M[AR] PC, AR AR + 1 D5T5: PC AR, SC 0 Memory, PC, AR at time T4 Memory, PC after execution 20 0 BSA 135 20 0 BSA 135 PC = 21 Next instruction 21 Next instruction AR = 135 135 21 136 Subroutine Subroutine PC = 136 1 BUN 135 1 BUN 135 Memory Memory
دستورالعملهای ارجاع حافظه AND ADD LDA STA D T D T D T D T 4 1 4 2 4 3 4 0 M[AR] AC DR M[AR] DR M[AR] DR M[AR] SC 0 D T D T D T 0 5 1 5 2 5 AC AC DR AC DR AC AC + DR SC 0 SC 0 E Cout SC 0 BUN BSA ISZ D T D T D T 4 4 5 4 6 4 PC AR M[AR] PC DR M[AR] SC 0 AR AR + 1 D T D T 5 5 6 5 DR DR + 1 PC AR SC 0 D T 6 6 M[AR] DR If (DR = 0) then (PC PC + 1) SC 0