680 likes | 925 Views
Department of Computer and IT Engineering University of Kurdistan Computer Architecture Designing a Basic Computer By: Dr. Alireza Abdollahpouri. معماري SPC : Stored program control.
E N D
Department of Computer and IT Engineering University of Kurdistan Computer Architecture Designing a Basic Computer By: Dr. AlirezaAbdollahpouri
معماري SPC : Stored program control • در اين نوع ساختار که اغلب کامپيوتر ها از آن پيروي ميکنند عمليات يک کامپيوتر توسط برنامه اي که توسط برنامه نويس نوشته شده و در حافظه RAM قرار داده ميشود کنترل ميگردد . • اين برنامه مجموعه اي از دستورالعمل هاست که نوع عمليات، عملوندهاي مربوطه و توالي اجراي عمليات را مشخص مي کند . • يک دستورالعمل يک کد باينري است که توالي انجام ميکرواپريشن ها را مشخص مي نمايد . کامپيوتر يک دستورالعمل را از حافظه خوانده و در داخل يک رجيستر قرار مي دهد. واحد کنترل کد باينري دستورالعمل را Decode کرده و دنباله اي از ميکرواپريشن هاي لازم براي اجراي آن دستورالعمل را بوجود مي آورد . کد يک دستورالعمل گروهي از بيت هاست که به کامپيوتر دستور مي دهد تا عمل خاصي را انجام دهد . اين کد معمولا به بخشهايي تقسيم مي شود که هر کدام وظيفه خاص خودشان را دارند . RAM Control Regs واحد کنترل Regs ALU
اصلي ترين قسمت يک کد دستورالعمل بخش Operation code يا Op-code است . Op-code نوع دستورالعمل نظير ADD ، SUB و غيره را مشخص ميکند تعداد بيتهاي Op-code به تعداد کل دستورالعملهاي موجود در cpu بستگي دارد . دستورالعمل نه تنها بايد نوع عمل (opcode) بلكه بايد محلي كه آن عمل روي آن انجام ميگردد (حافظه يا رجيستر) را مشخص كند. لذا در کد دستورالعمل يک محل حافظه با آدرس آن مشخص مي شود که اين آدرس جزئي از کد دستورالعمل را تشکيل مي دهد . براي مشخص کردن رجيسترهاي CPU نيز از يک کد باينري استفاده مي شود اگر CPU تعداد رجيستر داشته باشد از يک کد Kبيتي براي آنها استفاده مي شود . • مهمترين كار در معماري يك كامپيوتر تعيين نوع دستورالعملها و نوع و تعداد رجيسترهاست.
کامپیوتر پایه مانو • واحد حافظه با 4096 کلمه 16 بیتی • رجيسترهای AR, PC, DR, AC, IR, TR, OUTR, INPR, SC • فلیپ فلاپ های I, S, E, R, IEN, FGI, FGO • رمزگشای 3 به 8 اعمال و 4 به 16 زمانبندی • گذرگاه مشترک 16 بیتی • دروازه های منطقی کنترلی • جمع کننده و مدارهای منطقی که به ورودی AC وصل شده اند.
کد دستورها • دستورهای کامپیوتر بصورت یک کد دودوئی هستند که ترتیب خاصی از ریز عمل ها را مشخص می کنند. • کد دستور + آدرس • اگر تعداد دستورات 2n باشد، کد دستور باید n بیتی باشد. • کد دستور گاهی درشت عمل (Macro Operation)نامیده می شود. • آدرس یک رجيسترو یا مکانی از حافظه را مشخص می کند. • مکان حافظه آدرس عملوند می باشد. • دستورها و داده ها در حافظه قرار دارند.
تشکیلات یک برنامه ذخیره شده • یک رجيسترپردازنده • AC – accumulator • شکل دستور • کد دستور 4 بیتی می باشد. • 12 بیت مربوط به آدرس می باشد (4096=212) • چرخه اجرای دستور • خواندن یک دستور 16 بیتی از حافظه • استفاده از12 بیت آدرس جهت واکشی عملوند از حافظه • اجرای کد دستور 4 بیتی
سازمان یک برنامه ذخیره شده 4096X16حافظه 15 12 11 0 دستورات برنامه عملوند ها (داده) کد آدرس قالب دستور 15 0 عملوند دودوئی ممكن است بعضي از دستورالعملها به عملوند (operand) احتياج نداشته باشند. مانند Clear AC. كه در اين حالت قسمت آدرس ميتواند براي مقاصد ديگري استفاده شود. AC - رجيسترپردازنده
انواع آدرس • آدرس 12 بیتی قرار گرفته دستور • بلافصل (immediate) • مقدار واقعی داده • مستقیم (direct) • آدرس مکانی از حافظه که داده در آنجا قرار گرفته است. • غیر مستقیم (indirect) • آدرس مکانی از حافظه که ، در آنجا آدرس داده مورد نظر (عملوند) قرار گرفته است. • به آدرس مکان عملوند آدرس موثر (EA) گفته می شود. • یکی از بیت های دستور به عنوان بیت غیرمستقیم در نظر گرفته شده است.
آدرس دهی مستقیم و غیر مستقیم آدرس دهی مستقیم آدرس دهی غیر مستقیم آدرس موثر آدرس موثر
رجيستر ها و حافظه کامپیوتر مبنا Memory 4096 X 16 11 0 11 0 PC AR 15 0 15 0 DR IR 15 0 15 0 AC TR 7 0 7 0 OUTR INPR
II 0 PC 12 CLK LD INR CLR شمارنده برنامه • آدرس مکانی از حافظه که دستور بعدی در آن قرار گرفته است را نگه می دارد. • در زمانی که چرخه اجرای دستور فعلی کامل شد، دستور بعدی واکشی (fetch) می شود. • دقیقا پس از واکشی دستور، PC افزایش می یابد. • در زمان اجرای دستور انشعاب (branch) ، PC مقدار جدیدی می گیرد.
ورودی های کنترلی رجيسترها • LD (load) – بار کردن • INR (increment) – افزایش يك واحدي • CLR (clear) – پاک کردن
گذرگاه مشترک (bus) • رجيسترها را به یکدیگر و به حافظه وصل می کند. • با توجه به S2 S1 S0مشخص می شود که خروجی کدام بخش باید روی گذرگاه قرار گیرد. • زمانی که رجيسترکمتر از 16 بیت داده دارد ، به بیت های با ارزش گذرگاه مقدار صفر داده می شود. • رجيستري که پایه LD آن یک باشد، داده ها را از گذرگاه می خواند. • در زمانی که پایه Write حافظه فعال باشد، داده ها در حافظه نوشته می شود. • در زمانی که پایه Read حافظه فعال باشد، داده های حافظه روی گذرگاه قرار می گیرد • مشروط به اینکه S2 S1 S0=111باشد.
گذرگاه مشترک ALU
II 0 AR 12 CLK LD INR CLR رجيسترآدرس - AR • همیشه برای مشخص کردن آدرسی از حافظه بکار می رود. • این رجيستراختصاصی ، نیاز به وجود گذرگاه جداگانه ای برای گذرگاه آدرس را از بین برده است. • محتوای هر یک از رجيسترهایی که خروجی آنها به گذرگاه متصل است را می توان در حافظه نوشت. • هر یک از رجيسترهایی که ورودی آن به گذرگاه متصل است، می تواند به عنوان مقصد دستور Read از حافظه باشد. • در صورتی که خط LD آن فعال باشد.
رجيسترانباره يا اكومولاتور - AC • ورودی این رجيستر، خروجی مدار جمع کننده و منطقی می باشد. • مدار جمع کننده و منطقی • ورودی • خروجی 16 بیتی انباره(AC) • خروجی 16 بیتی رجيسترداده(DR) • خروجی 8 بیتی رجيسترورودی(INPR) • خروجی • ورودی 16 بیتی انباره(AC) • فلیپ فلاپ E (سرریز یا همان بیت توسعه انباره) • رجيسترهای داده و انباره برای انجام اعمال منطقی و محاسباتی بکار می روند.
زمانبدی • محتویات هر رجيستري که خروجی آن به گذرگاه متصل است، می تواند روی گذرگاه گذاشته شود و هر رجيستري که ورودی های آن به گذرگاه متصل است (همه غير از AC)نیز می تواند در همان چرخه ساعت (clock cycle) از گذرگاه بار شود. • عمليات در Adder Logic و انتقال به باس ميتواند همزمان صورت گيرد. مثلا دو ریز عمل زیر می توانند در یک زمان اجرا شوند: • DRAC and AC DR
ساختار کلی دستورات پایه • دستورات مراجعه به حافظه )کد عمل از 000 تا 110) • دستورات مراجعه به رجيسترها (کد عمل 111 و I=0) • دستورات ورودی خروجی (کد عمل 111 و I=1)
فرمت دستورات • فقط 3 بیت برای کد دستور بکار می رود. • بنا به فرض فوق، بنظر می رسد که فقط 8 کد دستور مختلف می توانیم داشته باشیم. • اما این غلط است... • زمانی که کد عمل 111 است يعني در دستورات مراجعه به رجيستر و دستورات ورودي/خروجي كه احتياج به آدرس ندارند، 12 بیت باقيمانده جهت توسعه فضای تعریف کد دستورالعمل ها بکار می رود. • در عمل تعداد 25 دستورالعمل براي كامپيوتر پايه تعريف شده است.
دستورات کامپیوتر پایه دستورات مراجعه به حافظه دستورات مراجعه به رجيستر دستورات ورودي/خروجي
دستورات کامپیوتر پایه • تفريق را ميتوان با ADD و Complement پياده سازي نمود. • ضرب و تقسيم را ميتوان با جمع و تفريق و شيفت پياده سازي كرد. • با AND و Complement ميتوانيم NAND بسازيم و با NAND هم ميتوان تمام توابع منطقي را پياده سازي كنيم.
کامل بودن مجموعه دستورات اگر يك كامپيوتر در هركدام از گروههاي زير تعدادي دستورالعمل داشته باشد ميگوييم مجموعه دستورالعملهاي آن كامل است: • محاسباتی، منطقی، و شیفت • انتقال داده به/از رجيسترها و حافظه • کنترل جريان برنامه و بررسی وضعیت • ورودی و خروجی (I/O) مي توان مجموعه دستورالعملها را پيچيده تر هم كرد ولي طراحي مشكلتر خواهد شد.
واحد کنترل Hard wired دو ساختار كلي براي طراحي واحد كنترل: Micro Program • واحد كنترل Hardwired با عناصر منطقي مانند گيتها، فليپ فلاپها، ديكودر و ... به صورت سخت افزاري پياده سازي ميشود. • در كنترل به صورت Micro program اطلاعات كنترلي در حافظه اي موسوم به حافظه كنترلي ذخيره ميگردد. • با تغيير طراحي، در روش كنترل hardwired بايد تغييراتي در مدار كنترلي اعمال كنيم اما در روش MP بايد برنامه داخل حافظه كنترلي را تغيير داد.
واحد کنترل • خواندن دستور از حافظه و انتقال آن به IR • قرار دادن سمت چپ ترین بیت در فلیپ فلاپ I • رمزگشایی کد 3 بیتی دستورالعمل با استفاده از یک رمزگشای 3 به 8 در خطوط D0تا D7 • رمزگشایی کد 4 بیتی شمارنده ترتیبی با استفاده از یک رمزگشای 4 به 16 در خطوط T0 تا T15(سیگنالهای زمانی) • مقادیر I، D0 تا D7 و T0 تا T15و 12 بیت سمت راستی IR و سایر ورودی ها به دروازه های کنترلی و منطقی ارسال میگردند.
ترتیب شمار (SC) • دارای ورودی های افزایش (INR) و پاک کردن (CLR) می باشد. • مثال • SC بصورت افزایشی شمارش می کند تا T0، T1، . . . و T4را تولید نماید. • در زمان T4 ، اگر D3فعال باشد ، ترتیب شماره پاک شده و مقدار صفر می گیرد. • بصورت زیر نوشته می شود : • D3T4 : SC0
چرخه دستورالعمل • هر دستورالعمل بايد از يك چرخه براي اجرا عبور كند. هر سيكل از تعدادي فاز تشكيل شده است. 1- واکشی دستور از حافظه 2- رمزگشایی دستور 3- خواندن آدرس موثر از حافظه • در صورتی که از شیوه آدرس دهی غیر مستقیم استفاده شده باشد 4- اجرای دستورالعمل • بعد از اجراي مرحله 4 دوباره به مرحله 1 باز ميگرديم تا دستورالعمل بعدي را واكشي نماييم. اين كار تا دستور HALT ادامه مي يابد.
واکشی و رمزگشایی • مقداردهی شدن SC به صفر، سیگنال زمانی T0را تولید می کند. • پس از هر ضربان زمانی، SC افزایش می یابد. • ریز عمل های واکشی و رمزگشایی • T0 : ARPC • T1 : IR M[AR] , PC PC+1 • T2 :D0,…,D7 Decode IR(12-14), AR IR(0-11) ,I IR(15) Fetch Decode
دستورات مراجعه به حافظه D0 T4 : DR M[ AR ] D0 T5 : AC AC DR , SC 0 D1 T4 : DR M[ AR ] D1 T5 : AC AC+ DR , E Cout , SC 0 اجرای دستور AND to AC با توجه به opcode این دستور (000) بیت D0 برای شناسایی آن بکار خواهد رفت . در زمان T4 اپراند از حافظه به داخل DR خوانده میشود و در T5 عمل مورد نظر بر روی محتوی DR و AC انجام شده و نتیجه به AC منتقل میگردد. در زمان T5 اجرای دستور تمام شده است لذا SC صفر میشود تا مراحل اجرای دستور بعدی آغاز گردد(فاز T0). اجرای دستور ADD To AC با توجه به Opcode این دستور (001) بیت D1 برای شناسایی آن بکار میرود .
D2 T4 : DR M[ AR ] D2 T5 : AC DR , SC 0 D3 T4 : M [AR] Ac , SC 0 دستورات مراجعه به حافظه اجرای دستور (Load To AC) LDA چون هیچ مسیر مستقیمی بین Bus و AC وجود ندارد لذا می بایست برای خواندن داده ای از حافظه و انتقال آن به AC ابتدا آن را به DR منتقل و سپس از مسیر موجود بین DR و AC به AC منتقل نمود علت وصل نکردن AC به BUS به این خاطر بوده که در اینصورت بعلت تاخیری که بر اثر وجود جمع کننده در سر راه این انتقال بوجود می آمد زمان اجرای این دستور از یک کلاک بیشتر میشود ولی با حذف این مسیر تمامی دستورات را میتوان در یک کلاک انجام داد . اجرای دستور (Store To AC) STA این دستور را میتوان با یک میکرواپریشن انجام داد زیرا خروجی AC به BUS متصل است و آدرس اپراند هم در AR موجود می باشد
دستورات مراجعه به حافظه اجرای دستور (Branch And Save Return Address) BSA از این دستور برای پیاده سازی Subroutine یا صدا زدن تابع استفاده می شود. هنگام صدا زدن یک تابع باید آدرس موجود در PC که آدرس دستور بعدی در روال عادی اجرای برنامه را مشخص میکند در محلی ذخیره گردد تا پس از خاتمه تابع بتواند دوباره به همان محل رجوع کند . برای پیاده سازی اینکار مقدار PC در آدرسی که توسط BSA مشخص شده ( ودر AR موجود است ) ذخیره گردیده و سپس مقدار PC با AR+1 پر میشود . AR+1 محلی است که اجرای تابع از آن شروع خواهد شد . 20 0 BSA 135 20 0 BSA 135 D5 T4 : M[AR] PC , AR AR+1 PC=21 دستور بعدی 21 دستور بعدی D5 T5 : PC AR, SC 0 21 135 21 PC=136 زيربرنامه در کامپیوترهای واقعی آدرس برگشت در یکی از رجیسترهای CPU و یا Stack ذخیره میشود . 1 BUN 135 1 BUN 135 ِمقادیر حافظه و PC و AR در زمان T4 حافظه و PC بعد از اجرای BSA
D6 T4 : DR M[ AR ] D6 T5 : DR DR+1 D4 T4 : PC AR , SC 0 دستورات مراجعه به حافظه اجرای دستور BUN پرش غیر شرطی این دستور برای انجام یک پرش غیر شرطی به محلی از حافظه که آدرس آن در دستور ذکر شدهبکار میرود میدانیم که PC همواره آدرس دستور بعدی را مشخص میکند از اینرو با تغییر مقدار PC به آدرس محل مورد نظر میتوان روند طبیعی اجرای دستور را قطع و کامپیوتر را وادار به اجرای دستور از محل دیگری را نمود اجرای دستور (Increment & Skip if Zero) ISZ معمولا از این دستور هنگام پیاده سازی یک حلقه تکرار شونده استفاده میشود. تعداد شمارش یا دفعات تکرار حلقه بصورت یک عدد منفی در حافظه قرار داده شده و به ازاي هر با تکرار حلقه یکبار افزایش می یابد تا به صفر رسیده و خاتمه شمارش و یا عمل تکراری را مشخص مینماید . وقتی که شمارنده صفر میشود مقدار PC یک واحد افزایش داده میشود تا از اجرای دستور بعدی صرفنظر گردد . D6 T6 : M[AR] DR , if( DR=0) then (PC PC+1 ) , SC 0 برای افزایش مقدار شمارنده محتوی محلی از حافظه که بعنوان شمارنده بکار میرود به DR منتقل و پس از افزایش مجددا به حافظه برگردانده میشود . توجه شود که اجرای طولانی ترین دستور 7پالس ساعت نیاز دارد لذا SC را میشود با یک شمارنده 3بیتی نیز ساخت. استفاده از شمارنده های 4 بیتی برای اجرای تمرینات کتاب است .
ورودي – خروجي • اگر كامپيوتري نتواند با دنياي خارج ارتباط برقرار كند، تقريبا هيچ كار مفيدي نميتواند انجام دهد. • براي ورودي و خروجي کامپيوتر بايد از يک ترمينال استفاده ميشود که قسمت ورودي به کامپيوتر يک صفحه کليدو بخش خروجي يک پرينتر خواهد بود . • هر دو قسمت ورودي و خروجي بصورت سريال با کامپيوتر در تماسند .
FGI INPR صفحه کليد AC پرينتر OUTR FGO سازمان ورودی خروجی serial Parallel serial رجيسترها و فليپ فلاپهاي داخل پردازنده
FGI INPR صفحه کليد AC ايجاد همزماني ( سنکرون کردن) بين ورودي و کامپيوتر براي ايجاد همزماني بين ورودي و کامپيوتر از فليپ فلاپ FGI استفاده ميشود. • وقتي که کامپيوتر شروع به کار ميکند فليپ فلاپ FGI=0 است . • هنگامي که کليدي در صفحه کليد فشار داده ميشود يک کد هشت بيتي براي آن توليد و بصورت سريال به رجيستر INPR فرستاده ميشود . اينکار FGI را يک ميکند تا هم مانع ارسال داده جديد شود و هم کامپيوتر را از وجود يک داده جديد در INPR مطلع سازد. • کامپيوتر با چک کردن FGI از وجود کليد آگاه ميشود و با انتقال آن به AC اين فلگ را صفر ميکند . • با صفر شدن اين فلگ داده جديد اجازه ورود به INPR را پيدا ميکند . INPR : FGI=0خالياست INPR : FGI=1پراست
AC پرينتر OUTR FGO ايجاد همزماني بين خروجي و کامپيوتر • کامپيوتر قبل از ارسال داده به خروجي FGO را چک ميکند • اگر FGO=1باشد اطلاعات AC به OUTR فرستاده شده و FGO صفر ميشود . • دستگاه خروجي داده را از OUTR دريافت کرده و پس از چاپ داده FGO مساوي يک قرار داده ميشود. • کامپيوتر تا يک شدن FGO داده جديدي را به خروجي نخواهد فرستاد. براي ايجاد همزماني ( سنکرون کردن) بين ورودي و کامپيوتر از فليپ فلاپ FGO استفاده ميشود. OUTR : FGO=1خالياست OUTR : FGO=0پراست
شرط کنترل PB 11 : PB 10 : PB 9 : PB 8 : PB 7 : PB 6 : دستور INP OUT SKI SKO ION IOF ميکرو اپريشن AC ( 0-7) INPR , FGI 0 OUT A(0-7) , FGO 0 If (FGI=1) Then (PC PC+1) If (FGO=1) Then (PC PC+1) IEN 1 IEN 0 اجراي دستورات I/O • دستورات I/O در T3 اجرا ميشوند . • مقدار Op-code براي اين دستورات (111) و بيت I=1 است . لذا شرط کنترلي بصورت PBI=D7IT3BI مشخص ميگردد . اجراي دستورات در کلاک T3 تمام شده و مقدار SC صفر ميشود تا دستور بعدي اجرا گردد.
وقفه Interrupt دو راه براي اطلاع از ورودي و خروجي : 1- Polling يا سرکشي : • کامپيوتر بطور متناوب وضعيت ورودي و خروجي را چک ميکند تا از آماده بودن خروجي يا ورودي براي انتقال اطلاعات آگاه شود . • اين روش ساده است ولي بعلت متفاوت بودن نرخ آماده شدن اطلاعات در I/O و سرعت پردازش کامپيوتر باعث اتلاف وقت خواهد شد . 2- Interrupt Driven I/O : • در اين روش وسيله ورودي و خروجي با ارسال يک سيگنال وقفه کامپيوتررا از آماده بودن I/O برا انتقال اطلاعات مطلع ميسازد . • در اين روش ديگر نيازي به چک کردن متناوب I/O نبوده و کامپيوتر در فاصله بين آماده شدن I/O ميتواند به اجراي برنامه ديگري بپردازد .
وقفهدرکامپيوترپايه IEN FF- فليپ فلاپ Interrupt Enable : در کامپيوتر پايه يک FF به امر وقفه اختصاص داده شده است . • اگر کامپيوتر بخواهد به دستگاه I/Oاجازه ارسال وقفه را بدهد اين FF را Set ميکند اما با صفر کردن اين FF ميتوان جلو ارسال وقفه را سد کرد . • براي تغيير وضعيت اين FF از دستورات ION و IOF استفاده ميشود . • FF ديگري به نام Rوقوع وقفه را مشخص مينمايد.
فعال سازی وقفه • کنترل مداوم FGI و FGO توسط کامپیوتر زمان را تلف می کند. • با استفاده از IEN هر زمان که نیازی به کنترل ورودی و خروجی باشد، به وی اطلاع داده می شود. • در خلال اجرای دستور، در صورتی که FGI یا FGO يك باشد، مقدار R یک می شود. • وقفه در زمانی رخ می دهد که کامپیوتر خواسته باشد دستور بعدی را واکشی نماید. • اگر R=0 باشد، اجرای دستور انجام می گیرد. • اگر R=1 باشد، اجرای وقفه انجام می گیرد.
نمودار گردشی وقفه وقفه ديگري قبول نميشود آدرس برگشت در خانه شماره صفر ذخيره ميشود. كه ميتوان از يك رجيستر و يا Stack براي اين كار استفاده نمود.
T0 : AR PC T1 : IR M[AR] , PC PC+1 T2 : D7…D0 Decode IR(12-14) , AR IR(0-11) سيکل وقفه : • با توجه به شكل مذكور شرط مقدار دهی R به یک: • ميکرو اپريشن سيکل وقفه اضافه کردن فليپ فلاپ R باعث ميشود تا ميکرو اپريشن سيکل واکشي و ديکود بصورت زير تصحيح گردد: