Transcript Document

‫جزوه‬
‫درسی‬
‫معماری کامپیوتر‬
‫• گرد آورنده‪:‬‬
‫• دکتر‬
‫صابری مقدم‬
‫معماری کامپیوتر‬
‫‪(1‬معماری مجموعه دستورات)‪(ISA‬‬
‫• مجموعه دستورات‬
‫• مجموعه ثبات ها‬
‫• فرمت دستورات‬
‫‪(2‬معماری سخت افزار)‪(HSA‬‬
‫• اجزاء سخت افزاری‬
‫• حافظه نهان‬
‫• چگونگی اجرای دستورات‬
‫ساختار اساسی کامپیوتر‪:‬‬
‫ماشین های فن نیومن ‪:‬‬
‫ماشین های فن نیومن همان کامپیوتر هایی هستند که که ما با آنها آشنا هستیم این ماشین ها دارای‬
‫‪ 3‬زیر سیستم است‬
‫‪ .1‬یک ‪CPU‬‬
‫‪ .2‬سیستم حافظه اصلی‬
‫‪ .3‬سیستم‪I/O‬‬
‫شکل‪ ، 1 - 1‬اجزای اصلی یک کامپیوتر را نشان می دهد ‪.‬‬
‫حافظه اصلی‬
‫‪c‬‬
‫‪c‬‬
‫ثبات ها‬
‫‪AlU‬‬
‫واحد کنترل‬
‫‪c‬‬
‫‪I/O‬‬
‫‪CPU‬‬
‫اجزای اصلی ‪CPU‬‬
‫‪ .1‬واحد کنترل )‪ (CU‬که عملیات کامپیوتر را کنترل می کند ‪.‬‬
‫‪ .2‬واحد محاسبه و منطق )‪ (ALU‬که عملیات حسابی ‪ ،‬منطقی ‪ ،‬شیفت و ‪ ...‬را انجام می دهد‬
‫‪ .3‬یک مجموعه ثبات ها که مقادیر مختلفی را در حین عملیات کامپیوتر ذخیره میکند‪.‬‬
‫ در این درس فرض بر این است که دانشجو در مورد مطالب زیر آشنایی پیدا کرده است ‪:‬‬‫• دیکدر ها‬
‫• مالتی پلکسر ها‬
‫• ثبات ها‬
‫• شیفت رجیستر ها‬
‫انتقال ثبات ها و ریز عملیات ‪:‬‬
‫مقدمه ‪:‬‬
‫زبان انتقال ثبات ‪ : RTL‬یک سیستم دیجیتالی مجموعه ای از ماژول های )‪(Module‬‬
‫سخت افزاری متصل به هم می باشند که در زمینه پردازش داده ها کار خاصی را انجام می‬
‫دهند ‪ .‬ماژول ها از اجزایی چون رجیسترها (ثبات ها) ‪ ،‬دیکدر ها(رمز گشا ) ‪ ،‬عناصر‬
‫حسابی و کنترل منطقی ساخته می شوند ‪.‬‬
‫ریز عملیات ‪operation‬‬
‫‪: micro‬‬
‫عملیاتی که روی داده ها ذخیره شده و در ثبات ها صورت می گیرند را ریز عملیات می نامند ‪.‬‬
‫مثال هایی از ریز عملیات ها عبارتند از ‪:‬‬
‫شیفت)‪، (Shift‬شمارش )‪، (count‬پاک کردن )‪ ،(clear‬بار کردن )‪(Load‬‬
‫سازمان داخلی یک کامپیوتر دیجیتال به بهترین نحو توسط موارد زیر مشخص می‬
‫شود ‪:‬‬
‫‪ .1‬مجموعه ثبات های آن و وظایف آن ‪.‬‬
‫‪ .2‬رشته ریز عملیات انجام شده روی اطالعات باینری ذخیره شده در ثبات ها ‪.‬‬
‫‪ .3‬واحد کنترلی که موجب آغاز رشته ریز عملیات می شود ‪.‬‬
‫*‬
‫نحوه بیان نمادین مورد استفاده برای بیان انتقال های ریز عملیات در بین رجیسترها زبان انتقال‬
‫رجیستر)‪ (RTL‬نامیده می شود ‪.‬‬
‫)‪RTL(Register Transfer Language‬‬
‫سیستمی است برای بیان رشته ریز عملیات بین ثبات های یک ماژول به صورت نمادین ‪RTL.‬‬
‫از این زبان برای تسهیل روند طراحی سیستم های دیجیتالی استفاده می شود ‪.‬‬
‫انتقال داده ها از یک رجیستر به رجیستر دیگر را انتقال رجیستر می نامند ‪ .‬ثبات های کامپیوتربا‬
‫حروف بزرگ انگلیسی ( گاهی عددهایی به دنبال آنها ) برای نشان دادن کار ثبات‬
‫مشخص می شوند ‪.‬‬
‫برای مثال ‪:‬‬
‫• ثبات آدرس حافظه )‪(MAR=Memory Address Register‬‬
‫• برای ثبات شمارنده برنامه از )‪ (PC=Program Counter‬استفاده می شود ‪.‬‬
‫• برای ثبات دستور العمل)‪ (IR=Instruction Register‬استفاده می شود ‪.‬‬
‫•‬
‫برای ثبات پردازنده 𝑛𝑅استفاده می شود ‪.‬‬
‫•‬
‫‪ R2‬استفاده می شود ‪ ( .‬در این عبارت‬
‫برای انتقال داده از یک ثبات به ثبات دیگر از ‪R1‬‬
‫محتوای ثبات ‪ R1‬در ثبات ‪ R2‬قرار می گیرد و پس از انتقال محتوای ‪ R1‬تغییر نمی کند ‪).‬‬
‫اگر بخواهیم انتقال تحت شرایط کنترلی از پیش تعیین شده انجام شود به صورت زیر عمل‬
‫می شود ‪:‬‬
‫) ‪R1‬‬
‫که در آن ‪ P‬یک سیگنال کنترلی است‪.‬‬
‫تابع کنترلی یک متغییر بولی است برای مثال ‪:‬‬
‫‪If ( p = 1 ) then ( R2‬‬
‫‪P:R2‬‬
‫‪R1‬‬
‫‪P=y x+x‬‬
‫*‬
‫هریک از عبارات نوشته شده به زبان انتقال ثبات ها داللت بر وجود یک ساختار سخت افزاری‬
‫برای پیاده سازی انتقال دارد‪.‬‬
‫شکل ‪ 1‬انتقال از ثبات ‪R2 R1‬را وقتی ‪ P=1‬را نشان میدهد‪.‬‬
‫‪CLK‬‬
‫‪𝑅1‬‬
‫مدار کنترلی‬
‫‪ n‬تعداد بیت‬
‫شکل ‪1-2‬‬
‫‪𝑅2‬‬
‫از کاما(‪ )،‬برای جدا کردن ‪ 2‬یا چند عمل که همزمان انجام می شوند استفاده می شود مانند‪:‬‬
‫‪T:R2 R1 , R1 R2‬‬
‫عبارت باال نشان دهنده عملی است که محتوای دو ثبات در طول یک پالس ساعت مشترک با‬
‫یکدیگر تعویض می شوند مشروط بر اینکه ‪ T=1‬باشد‪.‬‬
‫مثال ‪ :‬عبارت شرطی زیر را در نظر بگیرید ‪:‬‬
‫)‪if (T1 =1 ) then (R0 R1) else if (T2 =1 ) then (R0 R2‬‬
‫‪(a‬عبارت زبان انتقال رجیستر )‪ (RTL‬این عیارت شرطی را بدست آورید ‪.‬‬
‫‪(b‬بلوک سخت افزاری آنرا رسم کنید ‪.‬‬
‫حل ‪:‬‬
‫‪(a‬در عبارت شرطی فوق دو عمل انتقال داریم که این دو عمل با دو عبارت )‪ (RTL‬زیر بیان‬
‫می شود ‪:‬‬
‫‪T1 : R0‬‬
‫‪R1‬‬
‫‪T1 T2 :R0‬‬
‫‪R2‬‬
‫‪(b‬‬
‫به کمک مالتی پلکسر ‪2‬به ‪ 1‬و گیت های مناسب به صورت زیر رسم میشود‪(RTL).‬بلوک دیاگرام‬
‫شکل _‪3‬‬
‫مالتی پلکسر از ‪and‬و ‪ OR‬تشکیل شده است و در اینجا چون ‪ 2 to 1‬است یک خط ادرس دارد‪.‬‬
‫شکل ‪4‬‬
‫زبان)‪ (RTL‬زیر داده شده است بلوک دیاگرام این عبارت ‪ RTL‬را رسم کنید و شرح دهید‪.‬‬
‫‪R1‬‬
‫‪R1 + R1,, R2‬‬
‫‪P+q : R1‬‬
‫انتقال های حافظه ای ‪:‬‬
‫انتقال داده از رجیستر به حافظه یا حافظه به رجیستر را انتقال حافظه می نامند ‪.‬‬
‫انتقال داده از یک کلمه حافظه به محیط خارج را ” می ‪ ”READ‬و انتقال داده جدیدی را که در حافظه‬
‫ذخیره می شود را ”‪“write‬نامند‪.‬‬
‫اگر حافظه کامپیوتر با رجیستر )‪(AR = Address Register‬آدرس دهی و داده های حافظه به‬
‫رجیستر )‪(DR = Data Register‬منتقل گردد عملیات ‪ Write‬و ‪ Read‬به صورت روابط زیر‬
‫مشخص می شود ‪.‬‬
‫‪Read : DR‬‬
‫]‪M[AR‬‬
‫این عبارت موجب انتقال داده از کلمه حافظه ‪ M‬که توسط آدرس موجود در ‪ AR‬انتخاب شده به‬
‫‪ DR‬میگردد‪.‬‬
‫]‪Write : M[AR‬‬
‫‪R1‬‬
‫عبارت فوق موجب انتقال داده از ‪ R1‬به کلمه حافظه ‪ , M‬انتخاب شده توسط آدرس موجود در ‪AR‬‬
‫میگردد‪.‬‬
‫باس در انتقال داده ‪:‬‬
‫مسیر مشترکی که برای انتقال داده ها بین رجیستر ها و حافظه مورد نیاز است‬
‫را باس ( گذرگاه )‬
‫می نامند ‪.‬‬
‫*‬
‫یک راه ساخت یک سیستم گذرگاه مشترک با استفاده از مالتی پلکسر یا‬
‫بافرهای سه حالته می باشد ‪.‬‬
‫پیاده سازی باس با مالتی پلکسر و بافر سه حالته ‪:‬‬
‫به طور کلی یک سیستم گذرگاه ‪K‬ثابت ‪ n‬بیتی برای تشکیل یک گذر گاه ‪ n‬خطی‬
‫راه دهی میکند‪.‬‬
‫تعداد مالتی پلکسرهای مورد نیاز برای ساخت گذرگاه برابر ‪ n‬است‪ .‬که همان تعداد بیت ها‬
‫تدر هر ثبات است ‪ .‬اندازه هر مالتی پلکسر باید ‪ K*1‬باشد‪.‬زیرا ‪K‬خط داده را رهدهی میکند‪.‬‬
‫مثال ‪ :‬یک گذرگاه به طول ‪ 4‬بیت و ‪ 4‬رجیستر پیاده سازی کنید ‪.‬‬
‫تکلیف ‪: 2‬‬
‫شکل ‪ 4-3‬صفحه ‪ 99‬کتاب مانو شکل را رسم کرده و توضیح دهید ‪.‬‬
‫شکل _‪6‬‬
‫بیت های هم ارزش در هر ثبات به ورودی های یک مولتی پلکسر متصل‬
‫می شوند تا یک خط گذرگاه را تشکیل دهند مولتی پلکسر ‪ 0‬چهار بیت ‪0‬‬
‫ثبات ها را راهدهی می کند ‪ ،‬مولتی پلکسر‪ 1‬چهار بیت ‪ 1‬ثبات ها را‬
‫راهدهی می کند‪ .‬مولتی پلکسر‪ 2‬چهار بیت ‪ 2‬ثبات ها را راهدهی می کند‬
‫‪ ،‬مولتی پلکسر ‪ 3‬چهار بیت ‪ 3‬ثبات ها را راهدهی می کند‪.‬‬
‫دو خط انتخاب به انتخاب هر ‪ 4‬مولتی پلکسر متصل اند ‪.‬‬
‫خطوط انتخاب چهار بیت یک ثبات را انتخاب کرده و آنها را به گذرگاه‬
‫مشترک منتقل می نمایند‪. .‬‬
‫شکل _‪6‬‬
‫• ثبات ‪ A‬به شرطی انتخاب می شود که خط انتخاب صفر و یک برابر صفر‬
‫باشد‪.‬زیرا خروجی این ثبات به ورودی داده ی مولتی پلکسر متصل شده‬
‫است ‪.‬‬
‫• ثبات ‪ B‬به شرطی انتخاب می شود که ‪ S0 S1 =01‬باشد ‪.‬‬
‫• ثبات ‪ C‬به شرطی انتخاب می شود که ‪ S0 S1 =10‬باشد‪.‬‬
‫• ثبات ‪ D‬به شرطی انتخاب می شود که ‪ S0 S1 =11‬باشد ‪.‬‬
‫گیت سه حالته ‪:‬‬
‫جدول درستی ‪:‬‬
‫خروجی‪y‬‬
‫ورودی‪x‬‬
‫کنترل‪s‬‬
‫‪HIGH-Z‬‬
‫‪x‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫باس با استفاده از مالتی پلکسر سه حالته ‪:‬‬
‫شکل _‪8‬‬
‫خروجی دیکدر‬
‫‪S0‬‬
‫‪S1‬‬
‫‪A‬‬
‫‪0‬‬
‫‪0‬‬
‫‪B‬‬
‫‪1‬‬
‫‪0‬‬
‫‪C‬‬
‫‪0‬‬
‫‪1‬‬
‫‪D‬‬
‫‪1‬‬
‫‪1‬‬
‫ریز عملیات ‪:‬‬
‫‪ (1‬ریز عملیات انتقال ثبات ‪ :‬این نوع ریز عملیات محتوای اطالعات را به‬
‫هنگام انتقال از ثبات های مبدا به ثبات های مقصد تغییر نمی دهد ‪.‬‬
‫‪ (2‬ریز عملیات حسابی ‪ :‬در این نوع ریز عملیات در ثبات ها عملیات پایه‬
‫جمع و تفریق ‪ ،‬افزایش ‪ ،‬کاهش و شیفت انجام می شود‪ .‬مانند ‪:‬‬
‫ریز عمل جمع ‪:‬‬
‫‪R1 + R2‬‬
‫‪R3‬‬
‫ریز عمل تفریق ‪:‬‬
‫‪R1 - R2‬‬
‫‪R3‬‬
‫‪ R1‬بعالوه مکمل‪ 2‬از ‪ R2‬تفریق ‪:‬‬
‫‪R1 + R2‬‬
‫‪R3‬‬
‫‪+1‬‬
‫‪ )3‬ریز عملیات منطقی ‪:‬‬
‫عملیات منطقی که روی داده های رجیستر در یک پالس ساعت انجام می شود را ریز عملیات‬
‫منطقی می نامند ‪ .‬در ریز عملیات منطقی از ‪V‬برای ‪OR‬و از ^ برای ‪AND‬استفاده میشود‪.‬‬
‫مثال ‪:‬‬
‫‪R5 V R6‬‬
‫‪R2 + R3 , R4‬‬
‫‪P+q :R1‬‬
‫توجه ‪ :‬عالمت ‪ +‬بین دو متغیر کنترلی ‪ q‬و ‪P‬یعنی ‪OR‬و عالمت جمع بین ‪ R3‬و ‪ R2‬به معنی‬
‫جمع است‪,‬عالمت ‪ V‬بین ‪ R5‬و ‪ R6‬همان ‪ OR‬است‪.‬‬
‫مدار شکل زیر چهار عمل اصلی را اجرا می کند ‪.‬‬
‫شکل _‪9‬‬
‫خروجی‬
‫عمل‬
‫‪S0‬‬
‫‪S1‬‬
‫‪AND‬‬
‫‪E=A∧B‬‬
‫‪0‬‬
‫‪0‬‬
‫‪OR‬‬
‫‪E=A∨B‬‬
‫‪1‬‬
‫‪0‬‬
‫‪XOR‬‬
‫‪E=A⨁B‬‬
‫‪0‬‬
‫‪1‬‬
‫‪E=A‬‬
‫‪1‬‬
‫‪1‬‬
‫مکمل‬
‫‪ )4‬ریز عملیات شیفت ‪:‬‬
‫ریز عملیات شیفت برای انتقال یا جابجایی داده ها بکار می روند ‪.‬‬
‫سه نوع ریز عمل شیفت وجود دارد ‪:‬‬
‫‪ (a‬عملیات شیفت منطقی ‪:‬‬
‫به دو صورت شیفت به راست)‪(shr‬و شیفت به چپ )‪ (shL‬انجام میشود‪.‬‬
‫‪SHR R1‬‬
‫‪R1‬‬
‫‪SHL R2‬‬
‫‪R2‬‬
‫این دو نوع ریز عمل هستند که محتوای ثبات ‪ R1‬را یک بیت به راست و محتوای ثبات ‪R2‬‬
‫را یک بیت به چپ شیفت می دهد ‪.‬‬
‫‪ (b‬عملیات شیفت چرخشی ‪:‬‬
‫بیت های ثبات را از طریق دو انتها بدون از دست دادن هرگونه اطالعات می چرخاند ‪ .‬این عمل با‬
‫اتصال خروجی سری به ورودی سری ثبات تحقق می یابد ‪.‬‬
‫از نماد های ‪CIL‬و ‪ CIR‬برای شیفت چرخشی به چپ و شیفت چرخشی به راست استفاده‬
‫می کنند‪.‬‬
‫‪ (C‬شیفت حسابی ‪:‬‬
‫ریز عملی است که یک عدد دودویی عالمتدار را به چپ یا راست شیفت می دهد بدون اینکه‬
‫به‬
‫عالمت را تغییر دهد ‪ .‬از دو نماد ‪ ASHL‬و ‪ ASHR‬ترتیب برای شیفت حسابی به چپ و شیفت‬
‫حسابی به راست استفاده می کنند ‪ .‬شیفت حسابی به چپ یک عدد باینری عالمت دار را در‬
‫‪ 2‬ضرب می کند و یک شیفت حسابی به راست یک عدد باینری را به ‪ 2‬تقسیم می کند ‪.‬‬
‫شکل زیر یک نمونه از ثبات ‪ n‬بیتی را نشان میدهد‪.‬‬
‫بیت ‪Rn-1‬در سمت چپ ترین مکان بیت عالمت را نگه می دارد ‪.‬‬
‫بیت ‪Rn-2‬با ارزشترین بیت و ‪ R0‬کم ارزشترین بیت است‪.‬‬
‫‪ ASHR‬بیت عالمت را عوض نمی کند و همه بیت هارا ( از جمله بیت عالمت ) را به سمت راست‬
‫شیفت می دهد ‪.‬‬
‫تکلیف ‪:‬‬
‫عدد ‪ ACH‬رایک بیت به راست شیفت حسابی دهید و حاصل را به صورت هگز بنویسید‪.‬‬
‫در ‪ ASHL‬بیت عالمت باید حفظ شود و بیت قبل از بیت عالمت از بین می رود ‪.‬‬
‫اگر بیت عالمت ‪Rn-1‬پس از شیفت عوض شود عالمت معکوس می شود و این وقتی رخ می دهد‬
‫که ضرب در ‪ 2‬سبب سرریز شود ‪ .‬سرریز در شیفت به چپ وقتی رخ می دهد که قبل از شیفت‬
‫‪ Rn-1‬و ‪ Rn-2‬مساوی نباشند‪.‬‬
‫یک فیلیپ فالپ سرریز برای کشف سرریز حاصل از شیفت حسابی به چپ مورد استفاده قرار‬
‫می گیرد ‪.‬‬
‫‪Vs = Rn-1‬‬
‫‪Rn-2‬‬
‫‪F‬‬
‫‪Y‬‬
‫‪X‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫اگر ‪ V=0‬باشد یعنی سرریز وجود ندارد و اگر ‪ V=1‬باشد سر ریز وجود‬
‫دارد و پس از شیفت عالمت عوض می شود ‪.‬‬
‫واحد حساب و منطق ‪: ALU‬‬
‫در کامپیوترها به جای اینکه ثبات های مختلف ‪ ،‬ریز عملیات را مستقیما انجام دهند از تعدادی‬
‫ثبات ذخیره ساز استفاده می شود که به واحدی به نام واحد حساب و منطق (واحد ‪)ALU‬‬
‫متصل است‪.‬این واحد یک مدار ترکیبی است که مجموعه ریز عملیات های حسابی و منطقی‬
‫را‬
‫انجام می دهد ‪ .‬ریز عمل شیفت اغلب در یک واحد جدا انجام می شود ‪.‬‬
‫گاهی واحد شیفت جزیی از واحد ‪ ALU‬است‪ .‬طراحی واحد ‪ ALU‬در سه مرحله انجام میشود‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫مرحله اول ‪ :‬طراحی قسمت حسابی‬
‫مرحله دوم ‪ :‬طراحی قسمت منطقی‬
‫مرحله سوم ‪ :‬ترکیب قسمت های حسابی و منطقی‬
‫طراحی مدار حسابی ‪:‬‬
‫شکل روبه رو یک مدار حسابی را نشان می دهد‪.‬‬
‫شکل ‪ : 1‬یک مدار حسابی‬
‫مدار گسترده شکل باال در کتاب مانو شکل ‪4_9‬‬
‫نشان داده شده است‪.‬‬
‫جدول ‪1‬‬
‫ریز عمل‬
‫خروجی‬
‫ورودی‬
‫انتخاب‬
‫‪F=A+Y+Cin‬‬
‫‪Y‬‬
‫‪cin‬‬
‫‪S0‬‬
‫‪S1‬‬
‫دهدهی‬
‫جمع‬
‫‪F=A+B‬‬
‫‪B‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫جمع با نقلی‬
‫‪F=A+B+1‬‬
‫‪B‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫تفریق با قرض‬
‫‪F=A+B‬‬
‫‪B‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪2‬‬
‫تفریق‬
‫‪F=A+B+1‬‬
‫‪B‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪3‬‬
‫انتقال‬
‫‪F=A‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪4‬‬
‫افزایش ‪A‬‬
‫‪F=A+1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪5‬‬
‫کاهش‬
‫‪F=A-1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪6‬‬
‫انتقال‬
‫‪F=A‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪7‬‬
‫شرح ‪:‬‬
‫اگر ‪ S0 S1 = 01‬باشد‪،‬مکمل ‪ B‬به ورودی های ‪ Y‬جمع کننده اعمال می شود‪.‬‬
‫حال اگر ‪ Cin = 1‬باشد‪ F =A+B+1،‬خواهد بود‪.‬این عمل تفریق ‪ A-B‬را تولید می کند‪.‬‬
‫اگر ‪ Cin = 1‬باشد‪ F =A+B،‬خواهد شد‪.‬این عمل معادل تفریق بدون قرض کردن‬
‫یعنی ‪ A-B-1‬می باشد‪.‬‬
‫تکلیف ‪:‬‬
‫در سطر متناظر با عدد دهدهی ‪ 6‬در جدول باال چرا ‪ F = A – 1‬؟‬
‫حل ‪ :‬اگر ‪ S0 S1 =11‬باشد به داخل ورودی های ‪Y‬جمع کننده تمامآ ‪ 1‬وارد می شود‬
‫تا عمل کاهش یک واحد وقتیکه ‪ CIN=0‬است یعنی ‪ F=A-1‬صورت گیرد‬
‫دلیل این مطلب این است که عددی که تمامآ ‪ 1‬است باید متمم ‪ 2‬عدد را بدست آورد ( متمم ‪2‬‬
‫عدد ‪ ،0001‬عدد‪ 1111‬می شود ) ‪ .‬جمع عدد ‪ A‬با متمم ‪ 2‬عدد ‪ 1‬برابر است با ‪.A-1‬‬
‫طراحی مدار منطقی ‪:‬‬
‫شکل_‪2‬‬
‫عملیات‬
‫‪S0‬‬
‫خروجی‬
‫‪S1‬‬
‫‪AND‬‬
‫‪E= A ^ B‬‬
‫‪0‬‬
‫‪0‬‬
‫‪OR‬‬
‫‪E= A v B‬‬
‫‪1‬‬
‫‪0‬‬
‫‪E= A‬‬
‫‪0‬‬
‫‪1‬‬
‫‪E= A‬‬
‫‪1‬‬
‫‪1‬‬
‫‪XOR‬‬
‫مکمل‬
‫‪B‬‬
‫طراحی مدار منطقی واحد منطقی‪:‬‬
‫ریز عملیات منطقی عملیاتی هستند که روی تک تک بیت های ‪ Reg‬انجام می گیرد و نتیجه هر‬
‫بیت وابسته به بیت های قبل و بعد آن نیست ‪ .‬شکل – ‪ 2‬یک طبقه از واحد منطقی را نشان می‬
‫دهد که ‪ 4‬ریز عمل اصلی منطقی را اجرا می کند ‪ .‬این مدار شامل ‪ 4‬گیت و یک ‪mux‬‬
‫می باشد برای طراحی مدار ‪ n‬بیتی‪ ,‬دیاگرام شکل _‪ 2‬باید ‪ n‬بار تکرار گردد و در کنار‬
‫منطقی‬
‫یکدیگر رسم شود‪.‬‬
‫ترکیب مدار حسابی و مدار منطقی ‪:‬‬
‫شکل _‪3‬‬
‫جدول – ‪2‬‬
‫انتخاب عمل کننده‬
‫تابع‬
‫خروجی‬
‫‪cin‬‬
‫‪S0‬‬
‫‪S1‬‬
‫‪S2‬‬
‫‪S3‬‬
‫انتقال‬
‫‪F=A‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫افزایش‬
‫‪F=A+1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫جمع‬
‫‪F=A+B‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫جمع با رقم نقلی‬
‫‪F=A+B+1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫تفریق با قرض‬
‫‪F= A+B‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪F= A+B+1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫کاهش ‪A‬‬
‫‪F= A - 1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫انتقال ‪A‬‬
‫‪F=A‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪AND‬‬
‫‪E= A ^ B‬‬
‫‪X‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪OR‬‬
‫‪E= A v B‬‬
‫‪X‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪E= A‬‬
‫‪X‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪E= A‬‬
‫‪X‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪F= shr A‬‬
‫‪X‬‬
‫‪X‬‬
‫‪X‬‬
‫‪0‬‬
‫‪1‬‬
‫‪F= shl A‬‬
‫‪X‬‬
‫‪X‬‬
‫‪X‬‬
‫‪1‬‬
‫‪1‬‬
‫تفریق‬
‫‪XOR‬‬
‫مکمل‬
‫شیفت ‪ A‬به راست و به داخل ‪F‬‬
‫شیفت ‪ A‬به چپ و به داخل ‪F‬‬
‫‪B‬‬
‫ترکیب مدار منطقی و ریاضی ‪:‬‬
‫با ترکیب مدارهای ریاضی و منطقی طراحی شده در شکل های ‪ 1‬و ‪ 2‬در باال می توان یک واحد‬
‫‪ ALU‬را طراحی کرد‪.‬ورودی های ‪ Ai‬و ‪ Bi‬به هردو مدار حسابی و منطقی اعمال شوند ‪.‬‬
‫متغییر های انتخاب ‪ S1‬و ‪ S0‬نیز به طور مشترک برای هر دو مدار است و با آنها یک زیر عمل خاص‬
‫انتخاب خاص انتخاب می شود ‪.‬‬
‫یک مالتی پلکسر ‪ 1←4‬خروجی مدار حسابی یا مدار منطقی را بر می شگیرن ‪.‬‬
‫خطوط انتخاب در این ‪ S3,Mux‬و ‪ S2‬هستند‪ .‬جدول – ‪ ، 2‬جدول درستی مدار شکل – ‪ 3‬است ‪.‬‬
‫این جدول ‪ 14‬عمل ‪ ALU‬را لیست نموده است ‪ 8 .‬تای اول اعمال حسابی هستند (جدول ‪ 1-‬را‬
‫ببینید) و توسط ‪ S3 S2 = 00‬انتخاب می شوند‪.‬‬
‫‪4‬عمل بعدی منطقی هستند و توسط ‪ S3 S2 = 01‬انتخاب می شوند‪ .‬ورودی نقلی در اعمال منطقی‬
‫هیچ اثری ندارد و با ‪( X‬حالت بی اهمیت ) مشخص شده است و ‪ 2‬عمل آخر عمل شیفت‬
‫عالمت‬
‫هستند که با ‪ S3 S2 =10,11‬انتخاب می شوند ‪ .‬در این حالت ورودی های دیگر تاثیری بر شیفت‬
‫ندارد‪.‬‬
‫طراحی یک کامپیوتر پایه ‪:‬‬
‫در این قسمت می خواهیم اجزا یک کامپیوتر پایه و ساده را بررسی کنیم ‪ .‬هر کامپیوتر دارای یک‬
‫حافظه اصلی و یک پردازنده مرکزی و ‪ I/O‬می باشد که ‪ CPU‬خود شامل تعدادی ثبات ‪ALU ،‬‬
‫و واحد کنترل است ‪ .‬کامپیوتر پایه فرضی ما دارای یک حافظه ‪ 4096×16‬است یعنی ‪ 4096‬کلمه‬
‫‪ 16‬بیتی دارد ‪.‬‬
‫‪4096*16‬‬
‫‪0‬‬
‫‪1‬‬
‫‪16b data‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫‪.‬‬
‫‪4096‬‬
‫‪12 bit‬‬
‫آدرس‬
‫تعاریف ‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫دستورالعمل کامپیوتر یک مجموعه کد های باینری است که رشته ای از ریز عملیات را برای‬
‫کامپیوتر مشخص می کند ‪.‬‬
‫کد دستورالعمل به همراه داده در حافظه ذخیره می شود ‪ .‬کد دستورالعمل معموال به چند‬
‫فیلد تقسیم می شود مهم ترین فیلدهای فرمت دستورالعمل به شرح زیر است ‪.‬‬
‫کد عملوند – ‪ : OPCode‬نوع عملیاتی که توسط دستورالعمل ها انجام می گیرد را مشخص‬
‫می کنیم ‪ .‬این فیلد یک مجموعه بیت اسکی که عملیات مختلف پردازنده مانند جمع ‪ ،‬تفریق‬
‫‪ ،‬مکمل ‪ ،‬شیفت و ‪ ...‬را تعریف می کند ‪ .‬تعداد بیت های ‪ OPCode‬به تعداد کل دستورات‬
‫ماشین بستگی دارد ‪ .‬اگر ماشین دارای‪2n‬یا کمتر دستور باشد کد عملیاتی باید ‪ n‬بیتی‬
‫باشد ‪.‬‬
‫فیلد آدرس ‪ :‬این فیلد آدرس حافظه با کد برای انتخاب یک ‪ REG‬پردازنده است ‪.‬‬
‫فیلد ‪ : MODE‬این فیلد روشهای آدرس دهی ‪ OPERAND‬دستورالعمل را مشخص می کند ‪.‬‬
‫آدرس دهی غیر مستقیم ‪ :‬شکل – ‪ 2‬فرمت فریم دستورالعمل را نشان می دهد ‪.‬‬
‫شکل _‪2‬‬
‫شکل _‪3‬‬
‫آدرس دهی مستقیم‬
‫آدرس دهی غیر مستقیم‬
‫در سه شکل باال دستور ‪ ،‬سه بیت کد‬
‫عملیات ‪ 12 ،‬بیت آدرس و یک بیت مربوط‬
‫به روش آدرس دهی مستقیم است یا‬
‫غیر مستقیم است کد‬
‫( ‪ ) INDIRECT‬برای آدرس دهی‬
‫با‬
‫مستقیم ‪ I=0‬است ‪ .‬این عملوند در آدرس ‪ 30‬از حافظه قرار دارد ‪ I=0‬است‪.‬‬
‫پس دستور از نوع آدرس دهی مستقیم است ‪ .‬کد عمل دستور ‪ ADD‬رامشخص می‬
‫کند و بخش آدرس یک عدد باینری با ‪ 300‬می باشد ‪ .‬واحد کنترل عملوند را در آدرس‬
‫‪ 300‬پیدا می کند و آن را با محتویات ‪ AC‬جمع می کند عملوند ‪ AC← AC +‬در شکل‬
‫سوم ‪ I=1 ،‬است پس آدرس دهی غیر مستقیم است ‪ .‬کنترل به آدرس ‪ 300‬مراجعه‬
‫میکند تا آدرس عملوند را بیابد که در این جا آدرس عملوند ‪ 400‬است ‪ .‬در آدرس دهی‬
‫مستقیم فیلد آدرس را آدرس موثر می نامند ‪ .‬در حالت غیر مستقیم فیلد آدرس‬
‫‪ ،‬فیلد آدرس آدرس عملوند است ‪ .‬در این حالت آدرس موثر ‪ 400‬است ‪.‬‬
‫ثبات های کامپیوتر پایه ‪:‬‬
‫* ثبات ‪( Pc‬شمارنده برنامه) ) ‪:( Program Counter‬‬
‫آدرس دستوراتی که باید اجرا شوند در این ثبات ذخیره شده اند پس این ثبات ‪ 12‬بیتی است ‪.‬‬
‫* ‪ DR‬یا ‪:(Memory Data Register) MDR‬ثبات داده است و عملوندی که از حافظه خوانده‬
‫میشوند را در خود نگه میدارد این ثبات ‪ 16‬بیتی است ‪.‬‬
‫* ‪(IR‬ثبات دستور العمل )‪ : :‬دستورات در داخل حافظه قرار دارند و برای اینکه اجرا شوند باید از‬
‫حافظه خوانده شوند و در ثبات دستورالعمل ‪ IR‬قرار گیرند ‪ .‬این ثبات ‪ 16‬بیتی است ‪.‬‬
‫* ثبات ‪ :(Accumulator) AC‬ثبات همه منظوره است ‪ .‬بعضی از دستورات مانند جمع ‪ ،‬همیشه‬
‫یکی از عملوند هایشان در ‪ AC‬است و حاصل نیز در ‪ AC‬قرار می گیرند مثال در این ماشین‬
‫دستور جمع به صورت ‪ADD X‬نوشته می شود ‪ .‬این دستور ‪AC‬را با محتویات خانه ای از حافظه‬
‫که آدرس اش ‪ X‬است جمع می کند و حاصل را در ‪AC‬قرار میدهد‪.‬‬
‫]‪: AC←AC+M[x‬این ثبات‬
‫* ‪ :(ADDRESS REG) AR‬آدرس عملوند را نشان می دهد مثال در دستور ]‪ X,ADD[X‬که آدرس‬
‫عملوند است در ‪ AR‬قرار می گیرد و سپس ] ‪M[X‬در ‪ DR‬قرار میگیرد و سپس ‪AC‬با ‪ DR‬جمع‬
‫میشود و حاصل به ‪ AC‬منتقل میگردد‪.‬این ثبات ‪ 16‬بیتی است‪.‬‬
‫* ‪ :(Temporary REG) TR‬برای ذخیره داده های موقت بکار می رود ‪ .‬این ثبات ‪ 16‬بیتی است ‪.‬‬
‫* ‪(INPR‬ثبات ورودی)‪ :‬کاراکتر ورودی را نگه می دارد ‪ .‬این ثبات ‪ 8‬بیتی است ‪.‬‬
‫* ‪(OUTR‬ثبات خروجی)‪:‬کاراکتر را نگه میدارد‪ 8.‬بیتی است‪.‬‬
‫این کامپیوتر دارای ‪ 8‬ثبات ‪ 1 ،‬حافظه و واحد کنترل است ‪ .‬ثبات ها و حافظه از طریق ‪ 1‬گذرگاه مشترک‬
‫بهم متصل اند ‪.‬‬
‫در شکل – ‪ 1‬اتصاالت ثبات ها و حافظه های کامپیوتر مورد نظر به باس نشان داده شده است مقادیر دهدهی‬
‫که در امتداد هر خروجی نوشته شده است معادل عدد دودویی الزم را برای‬
‫انتخاب نشان می دهد‪ .‬برای مثال در کنار خروجی ‪ DR‬عدد ‪ 3‬نوشته شده است ‪.‬‬
‫لذا ‪ 16‬بیت خروجی ‪ DR‬هنگامی روی گذرگاه قرار می گیرد که ‪ S2 S1S0 = 011‬باشد ‪ .‬برای اینکه‬
‫یک ثبات محتویات خود را روی باس قرار دهد باید انتخاب شود و برای اینکه محتویات باس به یک‬
‫ثبات وارد شود ‪(LD‬بارکردن ) آن ثبات باید فعال گردد‪ .‬برای اینکه حافظه روی باس قرار دهد‬
‫باید انتخاب شود ‪ S2 S1S0 = 111‬فرمان ‪ Read‬داده شده و آدرس توسط ‪ AR‬مشخص شود ‪.‬‬
‫برای اینکه محتویات‪ BUS‬به حافظه منتقل شود باید ‪ Write‬فعال شده تا آدرس توسط ‪ AR‬مشخص‬
‫شود ‪ .‬با توجه به شکل ‪ 1-‬عمل ]‪ AC←M[AR‬در یک کالک انجام نمی شود یعنی یک ریز عمل‬
‫نیست بلکه ابتدا باید یک ریز عمل ]‪ DR←M[AR‬انجام شود و سپس ریز عمل ‪AC←DR‬از طریق‬
‫‪ ALU‬انجام می شود‪.‬‬
‫سیکل دستورالعمل ‪:‬‬
‫برنامه ای که در واحد حافظه ذخیره شده است از دنباله ای از دستورالعمل ها تشکیل شده است که این برنامه‬
‫طی سیکل های اجرایی دستورالعمل اجرا می گردد ‪.‬‬
‫مراحل اجرای دستور را سیکل دستور می نامند ‪ .‬در این ماشین سیکل دستور شامل مراحل زیر است‪:‬‬
‫‪ _1‬واکشی )‪ (FETCH‬فراخوانی دستور از حافظه‬
‫‪ _ 2‬ترجمه)‪ (DECODE‬دستور(رمزگشائی دستور)‬
‫‪ _3‬پیدا کردن آدرس موثر برای دستورات غیر مستقیم‬
‫‪ _4‬اجرای دستور‬
‫این سیکل ‪ ،‬ترتیبی است و نیاز به زمان بندی دارد برای زمان بندی می توان از یک شمارنده ‪4‬‬
‫بیتی و ‪ 1‬دیکدر ‪ 4→16‬استفاده کرد و ‪ 16‬سیگنال زمانی ‪ T0‬تا ‪ T15‬تولید کرد توجه کنید که‬
‫سیکل دستور نوشته شده شامل ‪ 4‬مرحله کلی است وهرمرحله خود ممکن است به چند کالک‬
‫نیاز داشته باشد ‪ .‬برای ترجمه دستورات نیز می توان از یک دیکدر ‪ 3→8‬استفاده کرد و‬
‫‪ OPCode‬را ‪ DECODE‬کرد ‪ .‬شکل – ‪ 3‬سخت افزار مربوط به زمان بندی را نشان می دهد‪.‬‬
‫ثبات دستورالعمل‬
‫شکل _‪2‬‬
‫انواع دستورات ‪:‬‬
‫در شکل های زیر دستورات مختلف ماشین دیده می شود این دستورات ‪ 3‬نوع اند ‪:‬‬
‫‪ .1‬دستورات حافظه ای‬
‫‪ .2‬دستورات ثباتی‬
‫‪ .3‬دستورات ‪I/O‬‬
‫توصیف‬
‫‪ AND‬کلمه حافظه با ‪AC‬‬
‫دستورات حافظه ای‬
‫]‪AC←AC^M[address‬‬
‫‪ ADD‬کلمه با ‪AC‬‬
‫نام دستور‬
‫‪AND‬‬
‫‪ADD‬‬
‫بار کردن کلمه حافظه با ‪AC‬‬
‫]‪AC←M[address‬‬
‫ذخیره ‪ A‬به حافظه‬
‫‪STORE AC‬‬
‫پرش بدون شرط‬
‫‪M[address]←AC‬‬
‫‪STA‬‬
‫‪PC←address‬‬
‫‪BUN‬‬
‫‪M[address]←PC‬‬
‫‪PC←PC+1‬‬
‫‪BSA‬‬
‫]‪M[address‬‬
‫‪←M[address]+1‬‬
‫‪IF M[address]=0 THEN‬‬
‫‪PC←PC+1‬‬
‫‪ISZ‬‬
‫پرش با دخیره ادرس بازگشت‬
‫افزایش یک واحد کلمه حافظه و‬
‫پرش از دستور بعدی اگر نتیجه‬
‫صفر بود‬
‫‪LDA‬‬
‫دستورات ثباتی ‪:‬‬
‫دستورات ‪:I/O‬‬
‫توصیف‬
‫دستورات ثباتی‬
‫نام دستور‬
‫دریافت کاراکتر و انتقال آن به‬
‫‪AC‬‬
‫‪Input character‬‬
‫‪INP‬‬
‫برداشتن کاراکتر از‪ AC‬و انتقال‬
‫آن به خروجی‬
‫‪Output character‬‬
‫‪OUT‬‬
‫پرش به ورودی‬
‫‪Skip on Input flag‬‬
‫‪SKI‬‬
‫پرش به خروجی‬
‫‪Skip on Output flag‬‬
‫‪SKO‬‬
‫فعال کردن وقفه‬
‫‪Interrupt Enable on‬‬
‫‪ION‬‬
‫غیر فعال کردن وقفه‬
‫‪Interrupt Enable off‬‬
‫‪IOF‬‬
‫تکلیف ‪:‬‬
‫فلوچارت شکل ‪ 5-15‬را بطور کامل شرح دهید ‪ .‬صفحه ‪158‬‬
‫واحد پردازش مرکزی ‪:(CENTRAL PROCESSING UNIT) CPU‬‬
‫‪ CPU‬بخشی از کامپیوتر است که وظیفه پردازش داده ها به عهده آن است ‪.‬‬
‫اجزا اصلی ‪:CPU‬‬
‫•‬
‫واحدکنترل‬
‫ثبات ها •‬
‫‪ALU‬واحد •‬
‫‪Register‬‬
‫‪Control unit‬‬
‫‪CPU‬شکل _ ‪ 1‬اجزای اصلی‬
‫‪ALU‬‬
‫‪3‬‬
‫‪3‬‬
‫‪OPR‬‬
‫شکل _ ‪3‬‬
‫‪SEL D‬‬
‫‪3‬‬
‫‪SEL B‬‬
‫‪3‬‬
‫‪SEL A‬‬
‫کلمه کنترلی را مشخص میکند‬
‫‪OPR‬‬
‫‪00101‬‬
‫‪SEL D‬‬
‫‪001‬‬
‫‪SEL B‬‬
‫‪011‬‬
‫‪SEL A‬‬
‫‪010‬‬
‫شکل_‪ 4‬عمل تفریق را مشخص میکند‬
‫واحد کنترلی‬
‫سازمان های ثبات های عمومی ‪:‬‬
‫‪ CPU‬برای انجام اعمال خود نیاز به ذخیره اطالعات و بازیابی به موقع آنها را دارد‪ .‬به‬
‫همین دلیل در داخل ‪ CPU‬یک یا چند ثبات به عنوان حافظه مورد نیاز استفاده‬
‫می شود ‪ .‬این ثبات ها باید با هم ارتباط داشته باشند‪.‬‬
‫شکل – ‪ : 2‬ساختار این ارتباط در این شکل مشخص است ‪ .‬خروجی ثبات ها از طریق‬
‫‪MUX 2‬به ‪ ALU‬وارد می شود و ‪ALU‬عملیات خود را روی ‪ 2‬ثبات ورودی انجام‬
‫انجام می دهد و خروجی ‪ ALU‬نیز به ورودی ثبات ها متصل است که از طریق یک‬
‫دیکدر‪ 3×8‬یکی از ثبات ها بار می شود ‪ .‬کلمه کنترلی که در شکل دیده می شود‪.‬‬
‫تمام ثبات ها و عملیات داخل ‪ ALU‬را کنترل می کند برای مثال ‪ ،‬برای انجام ریز‬
‫عمل ‪ R1 R2 + R3‬در شکل_‪ 2‬ابتدا ‪ SEL A‬محتویات ‪ R2‬و ‪ SEL B‬محتویات ‪ R3‬را به‬
‫خروجی ‪ MUX‬ها می برد‪ OPR .‬نیز عمل جمع را برای ‪ ALU‬مشخص میکند و ‪SEL D‬‬
‫ورودی بار شدن ثبات ‪ R1‬را فعال میکند تا خروجی ‪ ALU‬به ‪ R1‬منتقل شود‪ OPR.‬دارای‬
‫‪ 5‬بیت است(شکل_‪ )4‬و می توان ‪ 32‬ریز عمل را برای ‪ALU‬مشخص کند‪ SEL A .‬و‬
‫‪ SEL B‬میتواند ورودی هشتمی را نیز انتخاب کنند‪.‬این ورودی ورودی حافضه است‪.‬‬
‫برای مثال برای انجام ریز عمل ‪ R1 R2 + R3‬کلمه کنترلی شکل ‪ 4‬مورد نیاز است‪.‬‬
‫سازمان پشته ‪:‬‬
‫پشته حافظه ای است که اطالعات را به نحوی ذخیره می کند که دارای ساختار‬
‫‪ (LAST IN FIRST OUT) LIFO‬آخرین ورودی ذخیره شده ‪ ،‬اولین خروجی قابل برداشت )‬
‫می باشد‪ .‬پشته می تواند خود حافظه جداگانه ای باشد یا بخشی از حافظه اصلی یک‬
‫کامپیوتر را می توان به عنوان پشته تعریف کرد ‪ 2 .‬عمل روی پشته تعریف می شود ‪.‬‬
‫‪ _1‬عمل ‪:PUSH‬که موجب درج یک عنصر در باالی پشته میشود‪.‬‬
‫‪ _2‬عمل ‪ :POP‬که موجب حذف عنصر از باالی پشته میشود‪.‬‬
‫ثباتی که آدرس پشته را در خود ذخیره می کند ثبات پشته نام دارد ‪.‬‬
‫شکل – ‪ 5‬ساختار یک پشته ‪ 64‬کلمه ای را نشان می دهد که به صورت حافظه ای مجزا‬
‫طراحی شده است ‪.‬‬
‫شکل_‪5‬‬
‫‪ (STACK POINTER) SP‬همواره آدرس کلمه باالی پشته را در خود دارد پس طبق شکل – ‪5‬‬
‫‪C,‬روی پشته قرار دارد و پس ‪ SP=3‬است‪ .‬برای ‪ POP‬کردن ‪ ،‬کلمه ای که در آدرس ‪ 3‬قرار‬
‫دارد را باید برداشت و ‪ SP‬را یک عدد کم کرد‪ .‬برای ‪ PUSH‬کردن ‪ ,‬ابتدا باید‪ SP‬را با یک جمع‬
‫کرد و سپس کلمه را داخل پشته وارد کرد‪.‬‬
‫برای چک پر و خالی بودن پشته دو پرچم استفاده میشود ‪FULL‬و‪ EMPTY‬اگر پشته خالی‬
‫شود ‪ EMPTY 1‬و اگر پشته پر شود ‪ .FULL 1‬عملیات ‪POP‬و‪ PUSH‬به صورت زیر است‪.‬‬
‫‪PUSH‬‬
‫‪if (FULL = 0) thenv‬‬
‫{‬
‫‪Sp sp+1‬‬
‫)افزایش ‪(sp‬‬
‫‪M[sp] DR‬‬
‫)نوشتن کلمه در باالی پشته(‬
‫)‪If (sp = 0) then (FULL 1‬‬
‫)چک پر بودن پشته)‬
‫‪EMPTY‬‬
‫‪0‬‬
‫(مشخص کردن خالی نبودن پشته)‬
‫}‬
‫‪POP‬‬
‫‪if (EPMPTY = 0) then‬‬
‫{‬
‫]‪DR M[sp‬‬
‫)خواندن کلمه از باالی پشه(‬
‫‪Sp sp -1‬‬
‫)کاهش ‪(sp‬‬
‫(چک خالی بودن شرط) ‪If (sp = 0), then EMPTY 1‬‬
‫‪FULL 1‬‬
‫(مشخص کردن اینکه پشته پر نیست)‬
‫}‬
‫توجه ‪ sp :‬در هر دو حالت پر یا خالی بودن پشته به خانه صفر پشته اشاره میکند‪ ,‬ولی‬
‫بیت های ‪FULL‬و‪ EMPTY‬تمایز بین این دو حالت را نشان میدهند‪.‬‬
‫نکته ‪ :‬برای ‪ Push‬میتوان ابتدا دیتا را در پشته قرار داد و سپس ‪ Sp‬را افزایش دهیم و‬
‫برای ‪ pop‬ابتدا ‪ sp‬را کاهش داده و سپس بخوانیم‪.‬‬
‫پشته حافظه ای‬
‫پشته در داخل حافظه اصلی نیز در نظر گرفت‪.‬کافی است قسمتی از حافظه اصلی را‬
‫برای عملیات پشته در نظر بگیریم‪.‬شکل_‪ 6‬قسمتی از حافظه اصلی کامپیوتر را‬
‫نشان میدهد که به سه بخش تقسیم شده است‪,‬برنامه‪,‬داده و پشته‪.‬‬
‫‪ sp‬به کلمه باالی پشته اشاره میکند‪.‬‬
‫همانطور که میدانیم ثبات ‪AR‬و‪ PC‬نیز آدرس حافظه را در اختیار میگزارد‪PC.‬در هنگام‬
‫های‬
‫عملیات واکشی استفاده میشود و به قسمت دستورات اشاره میکند‪ AR.‬در فاز اجرا‬
‫برای خواندن عملوند مورد نیاز است‪,‬و ‪ SP‬به منظور ‪ push‬یا ‪ pop‬کردن کلمات استفاده‬
‫برنامه‬
‫میشود‪.‬‬
‫‪pc‬‬
‫(دستورات)‬
‫داده‬
‫‪Push‬‬
‫‪AR‬‬
‫‪Sp‬‬
‫‪sp – 1‬‬
‫‪M[sp] DR‬‬
‫…………………………‬
‫‪sp‬‬
‫‪Pop‬‬
‫‪3000‬‬
‫پشته‬
‫‪3998‬‬
‫شکل_‪6‬‬
‫‪4001‬‬
‫]‪M[sp‬‬
‫‪sp + 1‬‬
‫‪DR‬‬
‫‪Sp‬‬
‫طبق شکل_‪ 6‬اولین کلمه پشته دارای آدرس ‪ 4001‬می باشد‬
‫و پشته با کاهش آدرس رشد می کند‪.‬بنا بر این اولین کلمه‬
‫در آدرس ‪ 4000‬ذخیره شده و آخرین کلمه در آدرس ‪3000‬‬
‫ذخیره شده‪.‬می توان برای چک پر یا خالی بودن پشته از دو‬
‫ثبات استفاده کرد که یکی آدرس پایین پشته و دیگری آدرس‬
‫باالی پشته را در خود دارد‪.‬بعد از هر ‪ SP,PUSH‬با ثبات باالی‬
‫پشته مقایسه می شود و سپس از ‪ POP‬با ثبات پایین پشته‪.‬‬
‫در شکل_‪ 6‬عملیات ‪PUSH‬و‪ POP‬مالحظه می شود‪.‬‬
‫برنامه‬
‫(دستورات)‬
‫داده‬
‫‪3000‬‬
‫‪3998‬‬
‫‪4001‬‬
‫‪pc‬‬
‫‪AR‬‬
‫پشته‬
‫‪sp‬‬
‫عملیات پشته ‪:‬‬
‫برای استفاده از پشته برای محاسبه عملیات ریاضی ‪ ،‬باید عبارات را به فرم پسوندی‬
‫یا فرم معکوس لهستانی)‪ (RPN‬نوشت‪ .‬ما غالبآ با فرم میانوندی کار داریم‪.‬‬
‫برای مثال عبارت ‪ A*B-C*D‬یک فرم میانوندی است یا برای مثال عبارت ‪ A+B‬یک فرم‬
‫میانوندی است که فرم ‪ RPN‬آن به صورت ‪AB+‬نوشته می شود‪.‬‬
‫مثال ‪ :‬عبارت‪4*5 – 3*4‬را محاسبه کنید ‪.‬‬
‫*‪45*34‬‬‫حل ‪ :‬ابتدا آن را به فرم‪ RPN‬می نویسیم ‪:‬‬
‫سپس از ست چپ با رسیدن به هر عملوند آنرا به پشته ‪ PUSH‬می کنیم و با رسیدن به‬
‫هر عملگر دو عملوند باالی پشته را برداشته و با هم عمل می کنیم و حاصل را به پشته‬
‫بر میگردانیم‪.‬‬
‫‪4‬‬
‫شکل _‪7‬‬
‫‪12‬‬
‫‪3‬‬
‫‪3‬‬
‫‪5‬‬
‫‪8‬‬
‫‪20‬‬
‫‪20‬‬
‫‪20‬‬
‫‪20‬‬
‫‪-‬‬
‫*‬
‫‪4‬‬
‫‪PUSH‬‬
‫‪3‬‬
‫‪PUSH‬‬
‫*‬
‫‪4‬‬
‫‪5‬‬
‫‪PUSH‬‬
‫‪4‬‬
‫‪4‬‬
‫‪PUSH‬‬
‫تمرین ‪:‬‬
‫بافرض داشتن ماشین پشته ای مشخص کنید دستورات زیر چه عبارتی را اجرا می کند ؟‬
‫( سراسری ‪X )86‬را باید به دست آوریم که به صورت یک عبارت میاوندی می شود ‪.‬‬
‫‪PUSH A‬‬
‫‪PUSH B‬‬
‫‪MUL‬‬
‫‪PUSH C‬‬
‫‪SUB‬‬
‫‪PUSH D‬‬
‫‪DIV‬‬
‫‪PUSH C‬‬
‫‪PUSH E‬‬
‫‪DIV‬‬
‫‪PUSH A‬‬
‫‪ADD‬‬
‫‪PUSH B‬‬
‫‪PUSH F‬‬
‫‪MUL‬‬
‫‪SUB‬‬
‫‪ADD‬‬
‫‪POP X‬‬
‫فرمت های دستورالعمل ‪:‬‬
‫مهمترین فیلد های فرمت دستورالعمل عبارتند از ‪:‬‬
‫* کد عملوند ( کد عملیاتی ))‪ : (OP Code‬که نوع عملیاتی کد توسط دستورالعمل انجام‬
‫می گیرد را مشخص می کند ‪.‬‬
‫* فیلد آدرس ‪ :‬که یک آدرس حافظه یا ثبات را مشخص می کند ‪.‬‬
‫* فیلد ‪ mode‬آدرس دهی ‪ :‬این فیلد روش های آدرس دهی ‪ Operand‬دستور العمل را‬
‫مشخص می کند ‪.‬‬
‫اغلب کامپیوترها دارای سه نوع ساختار کلی ‪ CPU‬هستند ‪.‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫سازمان مبتنی بر یک آکوموالتور‬
‫سازمان چند ثباتی‬
‫سازمان پشته ای‬
‫)‪(Single accumulator org‬‬
‫)‪(Multiple register org‬‬
‫)‪(Stack org‬‬
‫توضیح ‪ : 1‬فرمت دستور در کامپیوتر با سازمان یک اکوموالتور )‪(AC‬دارای یک فیلد آدرس است ‪.‬‬
‫‪AC‬‬
‫مانند دستور ‪ ADDX‬که یعنی محتویات خانه ‪x‬را با ‪ Ac‬جمع کن‪AC + M[x] .‬‬
‫توضیح ‪ : 2‬در کامپیوتر با چند ثبات ( شکل ‪ 2‬در همین فصل ) کامپیوتر به ‪ 3‬فیلد آدرس نیاز دارد‬
‫مانند دستور ‪ ADD R1,R2,R3‬که به معنی ‪R2 + R3‬‬
‫دو تا باشد مانند ‪ ADD R1,R2‬که به معنی ‪R1 + R2‬‬
‫معنی ]‪ R1 R1 + M[x‬است‪.‬‬
‫‪.R1‬در این نوع تعداد فیلد آدرس می تواند‬
‫‪ R1‬است یا دستور ‪ ADD R1,x‬که به‬
‫توضیح ‪ : 3‬در کامپیوتر با سازمان پشته ای از دستورات ‪ Push‬و ‪pop‬استفاده می شود که یک فیلد‬
‫آدرس نیاز دارد‪.‬مثال ‪,Push X‬کلمه ای که در آدرس ‪ x‬قرار دارد را به باالی پشته منتقل می کند‬
‫دستور‬
‫در این نوع ( فرمت ) ‪ ،‬ماشین دو عملوند باالی پشته را برداشته و جمع کرده و حاصل را به پشته بر‬
‫می گرداند ‪.‬‬
‫بیشتر کامپیوتر ها مشخصات هر سه نوع کامپیوتر مذکور را دارند ‪.‬‬
‫مثال ‪:‬‬
‫فرض می خواهیم عبارت )]‪ M[x]=(M[A]+M[B])*(M[C]+M[D‬را با دستورات ‪ ،‬صفر ‪،‬‬
‫یک ‪ ،‬دو و سه آدرس محاسبه می کنیم؟‬
‫حل‪:‬‬
‫‪ – 1‬دستورات سه آدرسه ‪:‬‬
‫‪ADD R1,A,B‬‬
‫;‬
‫‪R1‬‬
‫]‪M[A]+M[B‬‬
‫‪ADD R2,C,D‬‬
‫;‬
‫‪R2‬‬
‫]‪M[C]+M[D‬‬
‫‪MULL X,R1,R2‬‬
‫;‬
‫]‪M[X‬‬
‫‪R1 * R2‬‬
‫مزیت ‪ :‬کوتاهی برنامه‬
‫عیب ‪ :‬طوالنی بودن دستور‬
‫‪ – 2‬دستورات دو آدرسه ‪:‬‬
‫]‪M[A‬‬
‫]‪R1 + M[B‬‬
‫]‪M[C‬‬
‫]‪R2 + M[D‬‬
‫‪R1 * R2‬‬
‫‪R1‬‬
‫‪R1‬‬
‫‪R1‬‬
‫‪R2‬‬
‫‪R2‬‬
‫‪R1‬‬
‫]‪M[X‬‬
‫;‬
‫;‬
‫;‬
‫;‬
‫;‬
‫;‬
‫‪MOV R1,A‬‬
‫‪ADD R1,B‬‬
‫‪MOV R2,C‬‬
‫‪ADD R2,D‬‬
‫‪MUL R1,R2‬‬
‫‪MOV X,R1‬‬
. ‫استفاده می کنند‬AC ‫ این نوع دستورات از ثبات‬: ‫دستورات تک آدرسه‬
Load A
;
AC M[A]
ADD B
;
AC AC+M[B]
Store T
;
M[T]
AC
Load C
;
AC
M[C]
ADD D
;
AC
AC+M[D]
MULL T
;
AC
AC*M[T]
Store X
;
M[X]
AC
: ‫دستورات بدون فیلد آدرس‬
‫دارای یک فیلد آدرس هستند و سایر دستورات‬Push, POP ‫ فقط‬، ‫در ماشین های پشته ای‬
. ‫فیلد آدرسی ندارند‬
Push A
Push B
ADD
Push C
Push D
ADD
Mul
POP X
;
;
;
;
;
;
;
;
TOS ← A
TOS ← B
TOS ← A+B
TOS ← c
TOS ← D
TOS ←C+D
TOS (C+D)*(A+B)
M[X] ←TOS
‫دستورات‪Reduced Instruction Set Computer = RISC‬‬
‫کامپیوتر ها با مجموعه دستورات کاهش یافته‬
‫دستورات‪ : RISC‬دستوراتی که در این نوع ماشین بکار میروند و با حافظه کار دارند محدود به‬
‫‪ Load , Store‬هستند یعنی این دو دستور می توانند ارتباط بین ثبات های ‪ CPU‬و حافظه را فراهم‬
‫کنند و سایر ثبات ها فقط روی ثبات ها عمل می کنند و هیچ مراجعه ای به حافظه ندارند ‪.‬‬
‫]‪R1 M[A‬‬
‫]‪R2 M[B‬‬
‫]‪R3 M[C‬‬
‫]‪R4 M[D‬‬
‫‪R1 R1 + R2‬‬
‫‪R3‬‬
‫‪R3 + R4‬‬
‫‪R1 R1 *R3‬‬
‫‪M[X] R1‬‬
‫;‬
‫;‬
‫;‬
‫;‬
‫;‬
‫;‬
‫;‬
‫;‬
‫‪Load R1,A‬‬
‫‪Load R2,B‬‬
‫‪Load R3,C‬‬
‫‪Load R4,D‬‬
‫‪ADD R1,R2‬‬
‫‪ADD R3,R4‬‬
‫‪MUL R1 ,R3‬‬
‫‪Store X,R1‬‬
‫دستورات کامپیوتر ‪:‬‬
‫دستورات اغلب به صورت های زیر دسته بندی می شوند ‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫دستورات انتقال داده‬
‫دستورات دستکاری داده‬
‫دستورات کنترل برنامه‬
‫دستورات خاص‬
‫دستورات انتقال داده ‪:‬‬
‫شرح‬
‫اختصار‬
‫نام دستور‬
‫برای بار گذاری داده به‪ /‬حافظه‪ /‬ثبات‬
‫ها‬
‫‪LD‬‬
‫‪Load‬‬
‫برای ذخیره داده به‪ /‬حافظه‪/‬ثبات ها‬
‫‪ST‬‬
‫‪Store‬‬
‫برای انتقال داده به‪ /‬حافظه‪ /‬ثبات ها‬
‫‪MOV‬‬
‫‪Move‬‬
‫انتقال داده از ورودی به ثبات ها‬
‫‪IN‬‬
‫‪Input‬‬
‫انتقال داده از ثبات به خروجی‬
‫‪OUT‬‬
‫‪Output‬‬
‫برای انتقال داده ها از ثبات به حافظه‬
‫‪PUSH‬‬
‫‪Push‬‬
‫برای انتقال داده ها از حافظه به ثبات‬
‫ها‬
‫‪POP‬‬
‫‪Pop‬‬
‫محتویات دو ثبات را عوض می کند‬
‫‪XCH‬‬
‫‪EXCHANGE‬‬
‫دستورات کنترل برنامه ‪:‬‬
‫اختصار‬
‫دستور‬
‫انشعاب‬
‫‪BR‬‬
‫‪Branch‬‬
‫پرش‬
‫‪JMP‬‬
‫‪Jump‬‬
‫عبور‬
‫‪SKP‬‬
‫‪Skip‬‬
‫فراخوانی‬
‫‪CALL‬‬
‫‪Call‬‬
‫بازگشت‬
‫‪RET‬‬
‫‪Return‬‬
‫تحقیق و مقایسه‬
‫‪COMP‬‬
‫)‪Compare (By Subtraction‬‬
‫‪ And‬را انجام بده و سپس تست‬
‫کن‬
‫‪TST‬‬
‫)‪Test (By Anding‬‬
‫دستورات دستکاری داده ها ‪:‬‬
‫این دستورات به سه قسمت تقسیم می شوند ‪:‬‬
‫‪ .1‬دستورات حسابی‬
‫‪ .2‬دستورات منطقی‬
‫‪ .3‬دستورات شیفت‬
: ‫دستورات حسابی‬
‫دستور‬
‫اختصار‬
INCREMENT
INC
DECREMENT
DEC
ADD
ADD
SUBTRACT
SUB
MULTIPLY
MUL
DIVIDE
DIV
ADD WITH CARRY
ADDC
SUBTRACT WITH BORROW
SUBB
NEGATE
NEG
: ‫دستورات منطقی‬
‫دستور‬
‫اختصار‬
Clear
CLR
Complement
COM
And
AND
OR
OR
Exclusive OR
XOR
Clear Carry
CLRC
Set Carry
SETC
Complement Carry
COMC
Enable Interrupt
EI
Disable Interrupt
DI
: ‫دستورات شیفت‬
‫دستور‬
‫اختصار‬
Logical Shift Right
SHR
Logical Shift Left
SHL
Arithmetic Shift Left
SHLA
Arithmetic Shift Right
SHRA
Rotate right
ROR
Rotate Left
ROL
Rotate Right Through Carry
RORC
Rotate Left Through Carry
ROLC
‫مدهای آدرس دهی ‪:‬‬
‫‪(Operand‬اپرند) عملوند ‪ ،‬اطالعاتی است که دستور بر روی آنها عملیات انجام می دهند ‪.‬‬
‫مد آدرس مشخص می کند که عملوند چگونه انتخاب شود ‪ .‬روش های مختلفی که پردازنده می‬
‫تواند به اطالعات یا اپرند دسترسی داشته باشد را روش ها یا مد ( حالت ) های آدرس‬
‫دهی‬
‫می نامند ‪ .‬این مدها عبارتند از ‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫‪.7‬‬
‫مد آدرس‬
‫مد آدرس‬
‫مد آدرس‬
‫مد آدرس‬
‫مد آدرس‬
‫مد آدرس‬
‫مد آدرس‬
‫دهی‬
‫دهی‬
‫دهی‬
‫دهی‬
‫دهی‬
‫دهی‬
‫دهی‬
‫بالفصل ) ‪(Immediate Operand‬‬
‫ثبات )‪(Register mode‬‬
‫مستقیم ( ‪) Direct mode‬‬
‫غیر مستقیم‬
‫غیر مستقیم ثباتی‬
‫نسبی با ثبات پایه‬
‫نسبی با ثبات ‪Index‬‬
‫مد آدرس دهی بالفصل ‪:‬‬
‫در این روش عملوند در خود دستور نهفته است بنابراین ‪ ،‬این مد دارای فیلد عملوند است نه فیلد‬
‫آدرس‪.‬‬
‫مثال ‪:‬‬
‫‪Mov AX, 1235, AX←1235‬‬
‫‪ADD BL, 35H, BL←BL+35H‬‬
‫مد آدرس دهی مستقیم ‪ :‬در این نوع اپراند در حافظه موجود است و اپراند در دستور قرار دارد‬
‫‪.‬‬
‫حافظه‬
‫‪.‬‬
‫مثال ‪:‬‬
‫‪.‬‬
‫]‪Mov AL, [4000‬‬
‫‪12‬‬
‫‪AL‬‬
‫‪4000‬‬
‫‪.‬‬
‫‪.‬‬
‫حافظه‬
‫اطالعات در خانه حافظه با آفست آدرس ‪ 4000‬قرار دارد که با این دستور محتوای خانه حافظه مذکور وارد‬
‫ثبات ‪ AL‬میشود‪.‬اگر کرو شه ]‪ [4000‬قرار داده نشود در این صورت عدد ‪ 4000‬وارد ثبات ‪AL‬میشود‪.‬‬
‫مد آدرس دهی غیر مستقیم ‪ :‬در این نوع آدرس دهی آدرس اطالعات در متن دستور نیست‬
‫بلکه در یکی از ثبات های ‪BP,BX,SI,DI‬وجود دارد‬
‫مانند ‪:‬‬
‫]‪Mov DL,[BX‬‬
‫شرح مثال ‪:‬‬
‫اطالعاتی که آدرس آن)در ‪ Segment‬داده( در ثبات ‪ BX‬است به ثبات ‪ DL‬منتقل می شود‪.‬‬
‫مد آدرس دهی غیر مستقیم نسبی با ثبات پایه ‪:‬‬
‫در این روش ‪ Offset‬آدرس موثر )‪ (EA‬اطالعات در حافظه برابر محتوای یکی از ثبات های ‪ BX‬یا ‪BP‬‬
‫‪EA=BX+disp‬‬
‫به عالوه یک مقدار جابه جایی که همان ‪ Offset‬است یعنی‬
‫]‪mov CL,[BX+10H‬‬
‫محتوای خانه حافظه به آ فست آدرس ‪ BX+10‬به ثبات‪CL‬منتقل می شود‬
‫]‪mov AX,[BX+2‬‬
‫‪AL‬‬
‫‪AH‬‬
‫‪12‬‬
‫‪11‬‬
‫‪mov AX‬‬
‫‪12‬‬
‫‪11‬‬
‫‪+2‬‬
‫‪0005‬‬
‫‪0006‬‬
‫‪0007‬‬
‫‪0005‬‬
‫‪0003‬‬
‫‪BX‬‬
‫شرایط بیت های وضعیت ‪:‬‬
‫در کامپیوتر ها ‪ ،‬ثباتی مانند‪ ALU‬در نظر گرفته می شود که بیت های وضعیت )‪ (Status Bit‬در آن‬
‫ذخیره می گردد ‪ .‬بیت های وضعیت را بیت های شرط یا بیت های پرچم نیز می نامند ‪.‬‬
‫در شکل ‪ ، 1‬بلوک دیاگرام یک ‪ , ALU‬هشت بیتی را همراه ثبات وضعیت را نشان می دهد‪.‬‬
‫بیت های وضعیت را با ‪ C,S,Z,V‬نشان میدهند‪.‬‬
‫* بیت ‪( C‬رقم نقلی) ‪ :‬یک می شود اگر ‪ C8‬یک شود در غیر اینصورت صفر است‪.‬‬
‫* بیت ‪(S‬عالمت) ‪ :‬زمانی یک می شود که در بیت عالمت ( با ارزش ترین بیت ‪ )MSB‬یعنی ‪F7‬‬
‫برابر یک باشد‪.‬‬
‫* بیت ‪( Z‬بیت صفر)‪( :‬صفر بودن نتیجه) یک می شود اگر خروجی برابر صفر شود‪.‬‬
‫* بیت ‪:(Overflow)V‬یک میشود اگر )‪ (XNOR‬دو رقم نقلی آخر برابر یک شود‪.‬بیت ‪ V‬سرریز عملیات‬
‫منطقی ‪ ALU‬و در حقیقت خطا دار بودن حاصل را نشان می دهد‪.‬‬
‫‪C7‬‬
‫‪V=C8‬‬
‫تکلیف ‪: 1‬‬
‫نشان دهید چرا اگزنور دو رقم نقلی آخر برابر یک شود بیت ‪ V‬یک میشود؟‬
‫صدا کردن و بازگشت از زیر روال‪:‬‬
‫یک زیر روال یک رشته دستورات است که عملی را انجام می دهد‪.‬هر زمان که زیر روال‬
‫فراخوانی‬
‫می شود‪,‬یک پرش به ابتدای زیر روال انجام میگیرد و پس از اتمام اجرای زیر روال یک پرش به‬
‫برنامه اصلی صورت میگیرد‪.‬دستوری که کنترل را در برنامه به یک زیر روال می برد‪،‬دارای‬
‫اسامی متفاوتی است‪.‬معمول ترین این نام ها عبارتند از‪« :‬صدا کردن زیر روال» ‪« ،‬پرش‬
‫به زیر روال»‬
‫پرش به زیر روال دو عمل انجام میدهد‪:‬‬
‫‪ _1‬آدرس دستور بعدی)محتویات ‪ (PC‬در مکانی ذخیره میشود‪.‬‬
‫‪ _2‬کنترل به ابتدای زیر روال منتقل میشود‪.‬آخرین دستور هر زیر روال که معموأل بازگشت از‬
‫زیر روال‬
‫)‪ (Return‬نامیده می شود آدرس بازگشت را که ذخیره شده بود به ‪ PC‬منتقل میکند‪.‬‬
‫کامپیوتر ها برای ذخیره آدرس بازگشت می تواند از بخشی از حافظه یا از پشته یا از یک ثبات‬
‫استفاده کنند‪.‬‬
‫یا می توانند در آدرس بازگشت را ابتدای زیر روال ذخیره کنند‪.‬اگر زیر روال دیگری توسط زیر‬
‫خواهد شد ‪،‬فراخوانی ‪push‬روال فعلی صدا زده شود‪،‬آدرس بازگشت جدید در پشته‬
‫زیر روال را می توان با ریز عملیات زیر انجام داد‪.‬‬
‫دستورات ‪CALL‬‬
‫(کاهش اشاره کر پشته)‬
‫‪SP SP-1‬‬
‫)ذخیره ‪ PC‬در پشته(‬
‫]‪M[SP‬‬
‫‪SP‬‬
‫(انتقال کنترل به زیر روال)‬
‫‪PC‬‬
‫آدرس مؤثر‬
‫دستوری که از زیر روال باز میگردد توسط ریز عملیات زیر پیاده سازی می شود‬
‫)پشته را ‪ POP‬کرده و محتویات به ‪ PC‬منتقل می شود(‬
‫(به اشاره گر پشته یک واحد اضافه می کند)‬
‫]‪M[sp‬‬
‫‪SP + 1‬‬
‫‪PC‬‬
‫‪SP‬‬
‫وقفه‪:‬‬
‫وقفه فرآیندی است که به انتقال‪ ,‬کنترل برنامه‪,‬از برنامه در حال اجرا به یک برنامه دیگر گفته می شود‪.‬‬
‫پس از اجرای برنامه سرویس وقفه‪ ،‬کنترل به برنامه عادی باز می گردد‪.‬‬
‫روال کار وقفه مانند صدا زدن زیر برنامه است ولی با سه تفاوت زیر‪:‬‬
‫‪ _1‬یک وقفه با یک سیگنال داخلی یا خارجی رخ می دهد نه با اجرای یک دستور(به جز وقفه های نرم افزاری)‬
‫‪_2‬آدرس برنامه سرویس دهی به وقفه‪,‬سخت افزاری مشخص می شود نه از روی فیلد آدرس دستور‬
‫‪ _3‬یک پروسه وقفه معموآل تمام اطالعات الزم برای تعین حالت ‪(CPU‬مثل بیت های وضعیت)‬
‫را ذخیره می کند ولی فرا خوانی زیر روال فقط ‪ PC‬را ذخیره می کند‪.‬‬
‫اگر وقفه در حین اجرای دستور رخ دهد‪,‬اجرای دستور خاتمه می یابد و پس از اجرا‪,‬پردازنده چک می کند‬
‫آیا وقفه رخ داده است یا خیر که در صورت وقوع وقفه‪,‬روتین پاسخ دهی به وقفه اجرا می شود‪.‬‬
‫انواع وقفه‪:‬‬
‫‪ _1‬وقفه های خارجی‬
‫‪ _2‬وقفه های داخلی ‪ _3‬وقفه های نرم افزاری‬
‫‪_1‬وقفه های خارجی‪:‬‬
‫این نوع وقفه از وسایل ‪,I/O‬از یک وسیله زمان سنجی یا از هر منبع خارجی دیگری می آید‪.‬‬
‫مثال هایی از این نوع وقفه عبارتند از ‪:‬وسیله ‪ I/O‬درخواست انتقال داده کند‪,‬وسیله ‪ I/O‬انتقال‬
‫داده را خاتمه داده باشد‪ .‬یا مانند اشکال در سیستم برق‪.‬‬
‫‪_2‬وقفه های داخلی‪:‬‬
‫این نوع وقفه به علت استفاده نادرست از دستورات یا داده ها رخ می دهد‪.‬به این نوع وقفه ‪Trap‬‬
‫نیز می گویند‪.‬‬
‫مثال‪ :‬تقسیم بر صفر‪,‬یک کد عملیاتی نامعتبر‪,‬سر ریز پشته‪...,‬‬
‫تفاوت وقفه داخلی با خارجی‪:‬‬
‫یکی منبع بروز آنها است و دیگری اینکه وقفه های داخلی با برنامه سنکرون هستند یعنی هر بار‬
‫برنامه اجرا شود در یک مکان و زمان ثابت رخ می دهد ولی وقفه های خارجی آسنکرون‬
‫هستند یعنی در اجراهای متفاوت برنامه ممکن است در مکان های مختلف رخ دهند یا اصآل‬
‫رخ ندهند‪ .‬این وقفه ها توسط سیگنال هایی که در ‪CPU‬رخ می دهد راه اندازی می شود‪.‬‬
‫‪ _3‬وقفه نرم افزاری‪:‬‬
‫توسط اجرای یک دستور رخ می دهد‪.‬یک وقفه نرم افزاری در واقع یک دستورالعمل ‪ call‬ویژه است‬
‫که شبیه وقفه عمل میکند‪.‬‬
‫کامپیوتر ‪CISC‬‬
‫کامپیوتر ‪ (Complex Instruction Set Computer) CISC‬کامپیوترهایی با تعداد دستورات زیاد‬
‫می باشد‪ .‬مشخصات اصلی این کامپیوترها عبارتند از ‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫دستورات زیاد‪( .‬حدود ‪ 100‬تا ‪ 250‬دستور)‬
‫دارای بعضی دستورات خاص هستند که به ندرت استفاده می شود‪.‬‬
‫مدهای آدرس دهی زیادی دارند‪(.‬بین ‪ 5‬تا ‪ 20‬مختلف است)‬
‫طول دستورات متفاوت است‪.‬‬
‫دارای دستوراتی هستند که می توانند با عملوندهای حافظه ای سروکار داشته باشند‪.‬‬
‫کامپیوتر ‪(Reduse Instruction Set Computer) RISC‬‬
‫ایده معماری ‪ RISC‬تالشی برای کاهش زمان اجرای دستورات با ساده سازی مجموعه دستورات بود‪.‬‬
‫مشخصات اصلی کامپیوترهای ‪ RISC‬عبارتند از ‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫‪.7‬‬
‫‪.8‬‬
‫دستورات نسبتاً کم‬
‫مدهای آدرس دهی نسبتاً کم‬
‫طول دستورات غالباً ثابت است و به راحتی کامپایل می شوند‪.‬‬
‫اجرای دستورات معموال ً در یک سیکل انجام می شود‪.‬‬
‫دسترسی به حافظه فقط منحصر به دستورات ‪ LOAD‬و ‪ STORE‬است‪.‬‬
‫تمام عملیات داخل ثبات های ‪ CPU‬انجام می شوند‪.‬‬
‫استفاده موثر از پایپالین دستورالعمل‪.‬‬
‫تعداد ثبات زیاد پردازنده‪.‬‬
‫پردازش موازی‬
‫به معنی به کارگیری تکنیک های متنوع در پردازش همزمان داده هاست که به‬
‫منظور افزایش سرعت محاسبات سیستم های کامپیوتری مورد استفاده قرار می‬
‫گیرند‪.‬مثال ً وجود پردازنده در یک سیستم یا وجود چندین واحد اجرایی یا وجود‬
‫چندین ‪ALU‬نمونه هایی از پردازش موازی هستند‪.‬‬
‫روش های مختلفی برای طبقه بندی پردازش موازی وجود دارد‪،‬یکی از دسته‬
‫بندی ها توسط ‪M . Y . Flynn‬پیشنهاد گردید که کامپیوتر ها را از نظر تعداد‬
‫پردازنده ها ‪ ،‬تعداد داده ها‪،‬تعداد دستورات و حافظه به ‪ 4‬گروه تقسیم می کند‪:‬‬
‫‪SISD (Single Instruction Stream Single Data Stream))1‬‬
‫دارای یک ‪CPU‬هستند که یک دستور روی یک داده می توانند اجرا کنند‪.‬یعنی‬
‫یک واحد کنترل و یک واحد کنترل و یک ‪ALU‬دارند‪.‬بعضی منابع ‪،‬این نوع معماری‬
‫فن نیومن نیز می گویند‪.‬‬
‫البته به طور داخلی می توتنند با کمک پایپالین از پردازش موازی بهره ببرند‪(.‬در‬
‫برخی منابع گفته شده است که پایپالین ‪MSID‬است)(حتی بعضی منابع گفته‬
‫اند پایپالین ‪MIMD‬است)‬
‫‪SIMD (Single Instruction Stream Multiple Data Stream))2‬‬
‫یک واحد کنترل و چندین واحد پردازشگر )‪)PE:Processing Element‬دارند‪.‬واحد‬
‫کنترل برای همه ‪PE‬ها یک دستور را صادر می کنند و ‪PE‬ها دستور را روی داده‬
‫های مختلف انجام می دهند‪.‬‬
‫آرایه های پردازنده )‪ )Array Processor‬در این دسته هستند‪.‬‬
‫شکل(‪ )1‬مثالی از یک ماشین ‪SIMD‬را نشان می دهد که به آن ماشین برداری‬
‫)‪ )Vector Machine‬گویند‪.‬این ماشین دارای ‪n‬واحد محاسباتی )‪ )ALU‬است که‬
‫ورودی ها به صورت بردارهای ‪N‬تایی وارد می شوند و هر ‪ALU‬روی یک مؤلفه از‬
‫این بردار عملی مثل جمع را انجام می دهد‪.‬‬
‫شکل‪ 2‬کامپیوتر ‪ILLIAC IV‬را نشان می دهد که یک ‪array processor‬است و‬
‫یک نوع ‪SIMD‬است‪ .‬یک واحد کنترل دارد که دستورات را به پردازنده ها اعمال‬
‫می کند و هر پردازنده ‪،‬دستور را روی داده های حافظه خود اجرا می کند‪.‬پردازنده‬
‫آرایه ای‪،‬مخصوصاً برای محاسبات ماتریس مناسب است‪.‬‬
‫‪MISD )3‬‬
‫فقط از نظر تئوری حائز اهمیت است چون عمال ً هیچ سیستمی با چنین‬
‫سازمانی ساخته نشده است‪.‬در برخی منابع گفته شده که سیستم های تحمل‬
‫پذیر خطا ( )‪Fault tolerant‬در این دسته هستند‪.‬همچنین پایپالین نیز در برخی‬
‫منابع نوعی ‪MISD‬معرفی شده است‪.‬‬
‫‪MIMD)4‬‬
‫می توانند چندین برنامه را در یک زمان روی داده های متفاوت اجرا کنند‪.‬سیستم‬
‫های چند پردازنده ای و چند کامپیوتری در این دسته هستند‪.‬‬
‫شکل‪a 3‬یک چند پردازنده ای را نشان میدهد که از یک حافظه اشتراکی‬
‫استفاده می کند‪.‬به منظور کاهش تداخل دسترسی ها ‪،‬هر پردازنده می تواند‬
‫حافظه محلی نیز داشته باشد که در شکل ‪b 3‬نمایش داده شده است‪.‬‬
‫توجه‪:‬طبقه بندی ‪ Flynn‬همه معماریها را پوشش نمی دهد‪.‬‬
‫مسئله‪:‬فرض کنید برنامه ای روی یک پردازنده‪،‬زمان اجرای ‪ t‬دارد ‪.‬حال همین‬
‫برنامه را روی ‪ p‬پردازنده مشابه تقسیم کرده ایم‪.‬در حالت ایده آل انتظار‬
‫داریم زمان اجرا شود ولی در واقعیت چنین نیست‪.‬چون میزان مبادله‬
‫اطالعات بین ‪ p‬پردازنده‪ ،‬زمان اجرا را افزایش می دهد‪.‬عالوه بر این ممکن‬
‫است دستوراتی وجود داشته باشند که قابل موازی شدن ‪،‬نباشد‪.‬فرض‬
‫) قابل موازی شدن نیستند‪،‬یعنی‬
‫کنید ‪ f‬درصد از دستورات برنامه (‬
‫به هم وابستگی دارند و باید توسط یک پردازنده اجرا شوند که به آن مؤلفه‬
‫ترتیبی برنامه گویند‪.‬اگر از زمان مبادله اطالعات صرف نظر کنیم ‪،‬زمان‬
‫‪(f +‬است‪.‬بنابراین تسریع ‪ p‬پردازنده نسبت‬
‫اجرای ‪ p‬پردازنده برابر ‪(t‬‬
‫به یک پردازنده برابر است با‪:‬‬
‫حال اگر تعداد پردازنده ها را به سمت بی نهایت میل دهیم ‪،‬حداکثر تسریع‬
‫حاصل می شود‪:‬‬
‫یعنی اگر در برنامه ای ‪ 20‬درصد دستورات موازی نشوند آنگاه تسریع از یعنی‬
‫‪ 5‬کمتر است‪.‬این برنامه برای چند پردازنده ها یک عامل محدود کننده‬
‫است‪.‬یعنی ما باید به دنبال روشی باشیم که بتوان عملیات ترتیبی را‬
‫تسریع کند که برای این منظور می توان از پایپالن بهره جست‪.‬‬
‫‪ E‬است‪ .‬مثال اگر در برنامه ای روی‬
‫نکته‪:‬بازدهی یا کارایی ‪ p‬پردازنده برابر‬
‫یک پردازنده در ‪10‬ثانیه و روی ‪ 5‬پردازنده در ‪ 2/5‬ثانیه اجرا شود آنگاه‬
‫‪ E‬بازدهی می باشد‪.‬‬
‫‪S‬و‬
‫تسریع‬
‫پایپالین(خط لوله)‬
‫پایپالین تکنیکی است که یک عمل سری را به عملیات جزئی تفکیک می کند و‬
‫هر عمل جزئی همزمان با سایر عملیات جزئی قابل انجام است‪.‬‬
‫در واقع پایپالین از تعدادی بند( ‪)stage ،state‬تشکیل شده است که هر بند‬
‫وظیفه خاصی به عهده دارد و بند ها می توانند همزمان عملیات خاص خود را‬
‫انجام دهند ‪.‬مثال فرض کنید یک خط لوله شامل ‪ 4‬بند است و (کارها)‪ task‬ها به‬
‫ترتیب وارد این بندها می شوند‪.‬فرض کنید هر بند یک کالک به طول می انجامد‬
‫‪.‬بنابراین در کالک ‪،1‬کار ‪ 1‬وارد بند ‪ 1‬می شود و در کالک ‪ 2‬کار ‪ 1‬وارد بند ‪ 2‬و کار‬
‫‪ 2‬وارد بند ‪ 1‬می شود و در کالک ‪ 3‬کار ‪ 1‬وارد بند ‪ 3‬و کار ‪ 2‬وارد بند ‪ 2‬و کار ‪ 3‬وارد‬
‫بند ‪ 1‬م شود‪:‬‬
‫همانطور که در شکل ‪ 4‬دیده می شود از کالک ‪ 4‬به بعد با هر کالک یک کار از‬
‫پایپ خارج می شود‪.‬حال می خواهیم یک خط لوله با بند ‪ k‬بند را بررسی‬
‫کنیم‪.‬به ازای هر بند یک ثبات (لچ) الزم است و به ثبات ها کالک زده می‬
‫شود تا بندها با هم سنکرون شوند‪.‬پریود کالک باید طوری تنظیم شود که‬
‫بندها فرصت کنند عملیات خود را کامل کنند ‪.‬اگر تآخیر بند ‪ i‬برابر( ‪)i‬‬
‫و تآخیر ثبات برابر ‪ tL‬باشد آنگاه پریود کالک حداقل باید ‪ max(ti)+tL‬باشد‬
‫شکل ‪ 5‬پایپ ‪ k‬بندی را نشان می دهد که بندها با ‪ Si‬و لچ ها با ‪Li‬نشان داده‬
‫شده اند ‪.‬اگر پریود کالک‪ T‬فرض شود و ‪ n‬تا کار وارد این پایپ شوند آنگاه‬
‫اولین کار نیاز به ‪ k‬کالک دارد که از پایپ خارج شود ولی سایر کارها هر یک‬
‫با یک کالک از پایپ خارج می شوند پس زمان اجرا برابر ‪KT + (n-1) T‬‬
‫است‪.‬‬
‫حال اگر بخواهیم این ‪ n‬کار را بدون پایپ اجرا کنیم آنگاه زمان اجرا برابر‬
‫)‪ n×(t1+t2+…+tk‬می باشد‪(.‬دقت کنید بدون پایپ ؛ لچ ها نیاز نیستند‪ ).‬اگر تآخیر‬
‫بندها یکسان باشد و تآخیر لچ ناچیز فرض شود آنگاه زمان اجرای بدون پایپ برابر‬
‫‪ nKT‬می باشد‪.‬بنابراین تسریع پایپ نسبت به بدون پایپ برابر است با‪:‬‬
‫زمان بدون پایپ‬
‫𝑇𝐾𝑛‬
‫𝐾𝑛‬
‫=‪S‬‬
‫=‬
‫=‬
‫𝑇 ‪𝐾𝑇+ 𝑛−1‬‬
‫)‪𝐾+(𝑛−1‬‬
‫زمان پایپ‬
‫حداکثر تسریع وقتی حاصل می شود که تعداد کارها )‪ (n‬افزایش یابد پس‪:‬‬
‫=‪Smax‬‬
‫𝑆‬
‫𝐾‬
‫=‬
‫‪lim‬‬
‫𝑎 𝑛‬
‫→‬
‫بنابراین خط لوله ای که ‪ k‬بند دارد می تواند حداکثر ‪ ،‬سرعت را با ‪ k‬برابر‬
‫کند‪.‬دقت کنید این نتیجه با این فرض که تآخیر بندها یکسان است و تآخیر لچ‬
‫ناچیز بدست آمده است‪.‬‬
‫مثال‪:‬فرض کنید یک خط لوله ‪ 4‬بند دارد که تآخیر بندها ‪60‬و‪50‬و‪90‬و‪ 80‬نانوثانیه‬
‫است و تآخیر ثبات ‪10‬نانوثانیه می باشد‪.‬حداکثر تسریع این خط لوله‬
‫نسبت به اجرای غیر خط لوله ای را محاسبه کنید‪.‬‬
‫پاسخ‪:‬تعداد کارها را ‪ n‬فرض می کنیم ‪.‬‬
‫‪ 90+10 100ns T MAX (ti)+tL‬پریود کالک‬
‫‪ t14100+(n-1)100100n+300‬زمان پایپ‬
‫‪ t2 n(60+50+90+80)280n‬زمان بدون پایپ‬
‫‪S‬تسریع‬
‫همانطور که دیدیم تسریع حداکثر ‪،‬برابر ‪ 4‬نشد‪.‬بنابراین خط لوله وقتی خوب‬
‫است که تآخیر بندهای آن یکسان باشد‪.‬‬
‫توجه‪:‬می توان بازدهی یا کارایی خط لوله را برابر ‪ E‬یعنی حاصل تقسیم‬
‫تسریع به تعداد بندها تعریف کرد‪.‬در مثال قبل اگر ‪ n10‬آنگاه ‪. E 54‬‬
‫مثال‪:‬اجرای ‪ 100‬کار روی یک خط لوله ‪ 8‬بندی چند کالک طول می کشد اگر‬
‫الف)کارها به صورت عادی وارد خط لوله شوند‪.‬‬
‫ب)کارها به صورت دسته های مجزای ‪ 20‬تایی وارد شوند‪.‬‬
‫ج)کارها به صورت دسته های ‪40‬و‪20‬و‪20‬و‪10‬و‪ 10‬دستوری وارد شوند‪.‬‬
‫د)کارها به صورت دسته های ‪40‬و‪20‬و‪10‬و‪10‬و‪10‬و‪ 10‬دستوری وارد شوند‪.‬‬
‫پاسخ‪:‬‬
‫جواب ‪ 8T+99T=107T‬است‪.‬‬
‫الف)طبق فرمول‪KT+(n-1)T‬‬
‫ب)منظور این است که ‪ 20‬دستور اول پشت سر هم وارد خط لوله می شوند و‬
‫دستور ‪21‬وقتی وارد خط لوله می شود که دستور ‪ 20‬از خط لوله خارج‬
‫شود‪.‬کافیست زمان اجرای ‪20‬دستور را محاسبه کنیم و در ‪5‬ضرب می کنیم‪:‬‬
‫‪5×(8T+19T)=135T‬‬
‫‪ =(8T+39T)+(8T+19T)+(8T+19T)+(8T+9T)+(8T+9T)=135T‬زمان‬
‫‪=(8t+39T)+(8T+19T)+(8T+9T)×4=142T‬زمان‬
‫نکته‪:‬اگر ‪ n‬دستور به صورت ‪ m‬دسته مجزا وارد خط لوله ‪ k‬بندی شوند‪،‬زمان اجرا‬
‫برابر ‪ mKT+(n-m)T‬است (اثبات کنید)‪ .‬دقت کنید مهم نیست هر دسته شامل‬
‫چند دستور است‪.‬‬
‫مثال‪:‬فرض کنید می خواهیم عمل ترکیبی ‪ i=1,2,…,7 ,Ai*Bi+Ci‬را انجام می دهیم‪.‬‬
‫همانطور که در جدول دیدیم با ‪ 9‬کالک عملیات کامل می شود)‪(3T+6T=9T‬‬
‫پایپالن محاسباتی‬
‫این نوع برای پیاده سازی عملیات ممیز شناور ‪،‬ضرب اعداد ممیز ثابت‪.‬وسایر اعمال‬
‫محاسباتی استفاده می شود‪.‬‬
‫فرض کنید بخواهیم دو عدد نرمال شده ممیز شناور ‪X A 2a‬و ‪ Y B 2b‬را با هم‬
‫جمع و تفریق کنیم‪A.‬و‪ B‬مانتیس و ‪ b‬و ‪ a‬نما هستند‪.‬می توان جمع و تفریق را‬
‫در ‪ 4‬بند مطابق شکل(‪ )6‬انجام داد‪.‬‬
‫ثبات هایی که با ‪ R‬مشخص شده اند بین طبقات به منظور ذخیره نتایج میانی‬
‫استفاده می شوند‪.‬عملیاتی که در این ‪ 4‬بند انجام می شود عبارت است از‪:‬‬
‫‪_1‬مقایسه نماها ‪_2‬تنظیم مانتیس ‪_3‬جمع و تفریق مانتیس ها ‪_4‬نرمال کردن‬
‫نتیجه‪.‬‬
‫نماها با کم شدن از یکدیگر مقایسه می شوند‪.‬تفاضل نماها نشان می دهد که‬
‫مانتیس مربوط به نمای کوچکتر‪،‬چند واحد به سمت راست باید شیفت‬
‫یابد‪.‬این عمل موجب مساوی شدن نماها و تنظیم مانتیس می شود‪.‬در بند ‪2‬‬
‫مانتیس ها جمع یا تفریق می شوند و در بند ‪ 4‬نتیجه نرمال می شود‪.‬اگر‬
‫سرریز در مانتیس رخ دهد‪.‬مانتیس نتیجه‪،‬به راست شیفت می یابد و نمای آن‬
‫یک واحد افزوده می شود و اگر زیرریز در مانتیس رخ دهد‪،‬تعداد صفرهای‬
‫سمت چپ مانتیس نشان می دهد که نتیجه چند واحد به چپ باید شیفت‬
‫یابد‪.‬‬
‫تمام بند های مذکور در شکل(‪)6‬را می توان با مدار ترکیبی طراحی نمود‪.‬‬
‫فرض کنید تآخیر هر بند به ترتیب برابر است با ‪ t1=60ns‬و ‪ t2=70ns‬و‪ t3=100ns‬و‬
‫‪ t4=80ns‬و تآخیر ثبات های میانی برابر است با ‪ t3=10ns‬پریود کالک باید برابر‬
‫‪ tp=t3+t2+100+10=110ns‬باشد‪.‬یک جمع کننده‪/‬تفریق کننده بدون پایپالین دارای‬
‫تآخیری برابر ‪ tn=t1+t2+t3+t4+tr=320ns‬می باشد‪(.‬دقت کنید در این محاسبه یک‬
‫ثبات برای نگهداری نتیجه نهایی برای غیر پایپ در نظر گرفته شده است)که‬
‫‪320‬‬
‫‪ = 2/9‬در واقع تسریع عبارت است از ‪:‬‬
‫حداکثر تسریع برابر است با‬
‫‪110‬‬
‫‪⟹Smax=320‬‬
‫‪110‬‬
‫𝑛‪320‬‬
‫‪4+(𝑛−1)110‬‬
‫=‪S‬‬
‫پایپالن دستور‬
‫سیکل دستور یک سیکل ترتیبی است که با کمک پایپالن می توان مراحل را روی هم انداخت ‪.‬مثال‬
‫فرض کنید در یک ماشین مراحل اجرای دستور عبارتند از‪:‬‬
‫‪ -1‬واکشی دستور)‪(FI‬‬
‫‪-2‬ترجمه دستور و محاسبه آدرس مؤثر )‪(DA‬‬
‫‪-3‬واکشی عملوند)‪(FO‬‬
‫‪ -4‬اجرا و ذخیره حاصل در یک مکان مناسب‬
‫فرض کنید حافظه دستور و داده مجزا هستند‪ ،‬اگر دستورات هیچ وابستگی به‬
‫هم نداشته باشند و دستورات انشعاب نیز در برنامه وجود نداشته باشند آنگاه‬
‫دستورات بطور عادی وارد خط لوله می شوند‪.‬پس زمان اجرای ‪ n‬دستور برابر‬
‫‪4T+(n-1)T‬خواهد بود‪.‬‬
‫مثالزمان اجرای ‪100‬دستور برابر ‪ 4T+99T=103T‬می باشد‪.‬ولی در خط لوله‬
‫دستورالعمل‪،‬نوع مشکل یا مخاطره وجود دارد که باعث می شود خط لوله دچار‬
‫تآخیر شود‪.‬این مشکالت عبارتند از‪:‬‬
‫‪ _1‬مخاطره ساختاری‪STRUCTURAL HAZARD‬‬
‫‪ _2‬مخاطره داده ای‬
‫‪ _3‬مخاطره کنترلی‬
‫‪ _1‬مخاطره ساختاری یعنی کمبود منابع مثل حافظه‪.‬مثال فرض کنید حافظه‬
‫دستور و داده یکسان هستند آنگاه بندهای ‪ FI‬و ‪ FO‬با هم نمی توانند انجام‬
‫شوند و اگر هیچ وابستگی بین دستورات نباشد‪،‬نحوه اجرای دستورات به شکل‬
‫زیر است‪:‬‬
‫همانطور که مالحظه می شود‪،‬دو دستور اول ‪5‬کالک و بعد از آن هر‪ 2‬دستور ‪4‬‬
‫کالک کامل می شوند یعنی ‪ 100‬دستور نیاز به ‪ 5+49×4=201‬کالک دارد ‪.‬در‬
‫شکل فوق فرض کرده ایم که ‪ EX‬نتیجه را در یک ثبات قرار می دهد‪.‬‬
‫البته اگر فرض کنیم ‪ EX‬نیز نتیجه را در حافظه می نویسد‪،‬آنگاه ‪ FO‬با ‪ EX‬نیز‬
‫همزمان قابل انجام نبود و تآخیر بیشتر می شود‪.‬‬
‫‪ _2‬مخاطره داده ای یعنی وابستگی بین دستورات ‪.‬مثال یک دستور در مرحله ‪FO‬‬
‫ممکن است نیاز به واکشی عملوندی دارد که در همان لحظه توسط دستور قبلی‬
‫در مرحله ‪ EX‬در حال تولد است‪.‬در این صورت دستور دوم باید صبر کند‪.‬‬
‫البته این نوع مخاطره ممکن است به علت وابستگی آدرس نیز پیش آید‪.‬‬
‫برای رفع مخاطره داده ای روشهایی پیشنهاد شده است‪.‬یکی از این روشها‬
‫‪operand‬‬
‫یا‬
‫ارسال عملوند (‪ bypassing‬یا‪internal forwarding‬‬
‫‪ )forwarding‬نام دارد که مسیرهایی به سخت افزار اضافه می کند که نتیجه‬
‫یک دستور را بتوان به دستور بعدی فرستاد‪.‬مثال نتیجه حاصل از ‪ ALU‬بتواند‬
‫مستقیما به ورودی ‪ ALU‬برای استفاده دستور بعدی وارد شود‪.‬این روش به یک‬
‫سخت افزار برای شناسایی وضعیت و مالتی پلکسر نیاز دارد‪.‬‬
‫روش دیگر بارکردن با تآخیر )‪ (delayed load‬نام دارد‪.‬کامپایلر در برخی ماشین‬
‫ها چنان طراحی شده است که با جابجایی دستورات و در صورت لزوم استفاده‬
‫ازدستورات ‪.NO_OP‬این مخاطره را برطرف می کند‪.‬در واقع دستوراتی که به هم‬
‫وابسته هستند باید از هم دور شوند و بین آنها دستورات دیگری قرار داده شود‪.‬‬
‫روش دیگری موسوم به ‪ hardvare interlock‬در برخی منابع برای رفع مشکل‬
‫داده ای ارائه شده است‪.‬‬
‫‪ _3‬مخاطره کنترلی یعنی وجود دستورات انشعاب بخصوص انشعاب‬
‫شرطی‪.‬دستورات انشعاب شرطی ممکن است ترتیب اجرای دستورات انشعاب‬
‫را به هم بزنند و تا دستور اجرا نشود مشخص نیست دستور بعدی کدام است‬
‫‪.‬دستور انشعاب غیرشرطی نیز همواره ترتیب اجرا را به هم می زند‪.‬شکل زیر‬
‫اجرای تعدادی دستور را نشان می دهد که دستور سوم آن انشعاب است‪.‬و‬
‫فرض شده که به محض تشخیص این دستور از ورود دستور بعدی جلوگیری می‬
‫شود تا نتیجه مشخص شود‪.‬‬
‫روش های رفع مخاطره کنترلی عبارتند از‪( :‬برخی از این روش ها تا حدودی تآخیر را‬
‫کاهش می دهند‪).‬‬
‫‪ _1‬واکشی دستور بعد از پرش و دستور مقصد پرش تا مشخص شود که آیا انشعاب‬
‫انجام می شود(‪ )taken‬و یا خیر (‪.)not taken‬‬
‫‪ _2‬استفاده از بافر مقصد پرش(‪ BTB.)BTB.Branch Target Buffer‬یک حافظهء‬
‫انجمنی (در فصل حافظه ها معرفی شده است)است که در مرحله واکشی پایپالین‬
‫کار گذاشته می شود‪.‬خانه های ‪ BTB‬شامل آدرس دستورات پرش به همراه آدرس‬
‫مقصد آنهاست‪.‬وقتی یک دستور انشعاب ترجمه می شود‪ BTB،‬جستجو می شود‬
‫‪،‬اگر آدرس این پرش در ‪ BTB‬باشد‪،‬دستور مقصد مستقیما در ‪ BTB‬هست و نیاز به‬
‫واکشی ندارد‪.‬مزیت ‪ BTB‬این است که دستورات پرشی که قبال اتفاق افتاده اند بدون‬
‫توقف در پایپالین موجودند‪.‬‬
‫‪ _3‬استفاده از بافر حلقه (‪. )Loop buffer‬این بافر یک بانک ثبات است که تحت‬
‫نظر بند واکشی قرار دارد‪.‬وقتی یک حلقه در برنامه شناسایی می شود‪،‬در یک‬
‫بافر حلقه ‪ ،‬دستورات این حلقه ذخیره می شوند و بدون نیاز به دسترسی به‬
‫حافظه‪،‬حلقه اجرا می شود‪.‬‬
‫‪ _4‬پیش بینی انشعاب(‪ )branch prediction‬واحد سخت افزاری وجود دارد که‬
‫بر اساس دستورات پرش‪،‬نتیجه پرش را پیش بینی می کند ‪.‬‬
‫‪ _5‬انشعاب یا تآخیر (‪ )Delayed Branch‬که در اکثر پردازنده های ‪ RISC‬استفاده‬
‫می شود‪.‬کامپایلر با جابجایی دستورات سعی می کند دستورات مفیدی که حتما‬
‫باید اجرا شوندو ربطی به نتیجه انشعاب ندارند‪،‬بعد از انشعاب وارد خط لوله کند تا‬
‫خط لوله همیشه مشغول باشد‪.‬البته ممکن است کامپایلر دستورات ‪NO_OP‬‬
‫بعد از انشعاب وارد خط لوله کند‪.‬‬
‫مثال‪(:‬مخاطره داده ای )فرض کنید خط لوله یک پردازنده ‪ RISC‬شامل ‪ 3‬مرحله‬
‫است‪:‬‬
‫‪E‬‬
‫‪A‬‬
‫‪I‬‬
‫بند ‪ I‬واکشی دستور است‪.‬در بند ‪ A‬دستور ترجمه شده و ثباتهای الزم انتخاب‬
‫می شوند و آدرس مؤثر برای دستورات‬
‫‪ Load & Store‬محاسبه می شود و آدرس ‪،‬مقصد انشعاب محاسبه‬
‫می شود‪.‬در واقع در این بند ‪ E‬عمل‪ ALU‬انجام می شود ‪.‬بند ‪ E‬خروجی ‪ ALU‬را‬
‫بسته به نوع دستور (ثباتی‪،‬پرش‪،‬ذخیره یا بارگذاری حافظه) به مقصد درست‬
‫ارسال می کند‪ .‬نحوه اجرای دستورات زیر در این خط لوله را نشان می دهیم‪:‬‬
‫]‪1:R1← M [address1‬‬
‫]‪2:R2 ←M [adrees2‬‬
‫‪3:R3←R1+R2‬‬
‫‪4:M[adrees3] ←R3‬‬
‫دقت کنید دستور ‪ 3‬در زمان ‪ 4‬نمی تواند عمل ‪ A‬را انجام دهد زیرا نیاز به ‪R2‬‬
‫دارد که توسط دستور ‪ 2‬هنوز آماده نیست پس از روش ‪Deleyed Load‬‬
‫استفاده کرده ایم و ‪ NOP‬بعد از دستور ‪ 2‬وارد خط لوله شده است البته‬
‫اگر دستوری در برنامه وجود می داشت که کامپلیر می توانست بعد از‬
‫دستور ‪ 2‬وارد خط لوله کند‪،‬بجای‪ NOP‬آن دستور وارد می شود‪.‬مثال فرض‬
‫کنید دستور ‪ 5‬در برنامه ‪R4←R4+R5‬باشد می توان این دستور را بعد از‬
‫دستور ‪ 2‬وارد خط لوله کرد‪.‬‬
‫مثال‪(:‬مخاطره کنترلی) پایپ مثال قبل را در نظر بگیرید و اجرای دستورات زیر‬
‫را نشان دهید‪.‬‬
‫]‪1:R1←M [address‬‬
‫‪2:R2← R2 + 1‬‬
‫‪3:R3← R3 - R4‬‬
‫‪4:R5← R5 ─ R6‬‬
‫‪5: Branch x‬‬
‫‪.‬‬
‫‪.‬‬
‫‪X: R7←R7 – 1‬‬
‫پاسخ‪:‬کامپایلر می تواند از روش ‪ deleyed branch‬استفاده کند و بعد از‬
‫انشعاب ‪ NOP‬وارد کند تا زمانیکه دستور انشعاب اجرا شود و آدرس مقصد‬
‫مشخص شود‪.‬بنابراین نیاز به دو دستور ‪ NOP‬هست‪:‬‬
‫یعنی اجرا ‪ 10‬کالک طول می کشد‪.‬ولی کامپلیر می تواند بهتر عمل کند و‬
‫دستورات ‪ 3‬و ‪ 4‬را بعد از دستور انشعاب وارد خط لوله کند‪:‬‬
‫که اجرا در ‪ 8‬کالک کامل می شود‪.‬‬
‫مثال‪(:‬عملیات برداری) فرض کنید می خواهیم حاصل ‪ C=A1B1+…+…A16B16‬را با‬
‫پایپالین زیر محاسبه کنیم‪.‬این خط لوله دارای دو بخش ضرب کننده و جمع کننده است‬
‫که هر کدام ‪ 4‬بند دارند‪.‬‬
‫در اولین کالک ‪ A1B1‬و ‪ A5B5‬در بند اول جمع کننده با هم جمع می شوند‪.‬سیکل‬
‫دهم‪ A2B2+A6B6‬را آغاز می کند و عمل به همین ترتیب ادامه دارد‪.‬با این الگو جمع به‬
‫‪ 4‬بخش زیر تقسیم می شود‪.‬‬
‫‪C=A1B2+A5B5+A9B9+A13B13‬‬
‫‪+A2B2+A+B6+A10B10+A14B14‬‬
‫‪+A3B3+A7B7+A11B11+A15B15‬‬
‫‪+A4B4+A8B8+A12B12+A16B16‬‬
‫وقتی که دیگر جمله ضربی برای جمع شدن وجود نداشته باشد‪،‬سیستم ‪ 4‬صفر به‬
‫داخل خط لوله ضرب ارسال می کند‪.‬سپس در هر یک از ‪ 4‬بند ‪ ،‬تنها یک ضرب جزئی‬
‫وجود خواهد داشت که مربوط به ‪ 4‬جمع در سطر معادله فوق است‪4.‬جمع جزئی در‬
‫نهایت با هم جمع می شوند تا حاصل جمع نهایی حاصل گردد‪.‬‬
‫نکته‪:‬خط لوله می تواند سنکرون نباشد در این صورت بین هر دو بند سیگنال‬
‫های ‪ ready‬و‪( ACK‬تایید) وجود دارد‪.‬‬
‫نکته‪:‬خط لوله می تواند غیر خطی باشد به این معنی که یک بند بتواند نتیجه‬
‫اش را به چند بند ارسال کند‪.‬‬
‫نکته‪:‬اگر پریود کالک ‪ T‬و فرکانس کالک‪ F‬باشد آنگاه ‪( through put‬توان‬
‫عملیاتی) برابر ‪ f‬است‪.‬اگر خط لوله بدون مشکل پر شود یعنی در هر‬
‫کالک یک کار از خط لوله خارج شود‪(.‬توان عملیاتی تعداد کارهای انجام‬
‫شده در واحد زمان است‪).‬‬
‫نکته‪:‬فرض کنید ‪ t‬زمان اجرای یک کار بدون خط لوله باشد ‪.‬حال همین برنامه‬
‫را تبدیل به خط لوله ‪ k‬بندی کنیم آنگاه پریود کالک ‪ +d‬است که تآخیر لچ‬
‫=‪ f‬می باشد‪.‬هزینه کل پایپ‬
‫است‪.‬بنابراین حداکثر توان عملیاتی‬
‫مراحل پایپ و ‪ h‬هزینه هر لچ‬
‫‪ c+kh‬می باشدکه ‪ c‬هزینه کل‬
‫می باشد‪.‬نسبت کارایی به هزینه برابر است با‪:‬‬
‫‪PCR‬‬
‫با توجه به این رابطه بهترین مقدار ‪ k‬برابر است با‬
‫مشتق بگیرید و برابر صفر قرار هید‪.‬‬
‫(از ‪PCR‬بر حسب ‪K‬‬
‫‪ _7‬یک واحد محاسباتی با ساختار خط لوله ای دارای ‪ K‬مرحله (‪ )stage‬با زمان‬
‫اجرای ‪ t1‬است‪.‬میزان تسریع این واحد محاسباتی نسبت به حالت غیر لوله ای‬
‫برای انجام ‪ n‬محاسبه چقدر است؟‬
‫‪K)1‬‬
‫‪nK)2‬‬
‫‪)3‬‬
‫𝑘𝑛‬
‫‪k+n‬‬
‫𝑘𝑛‬
‫‪)4‬‬
‫‪k+n−1‬‬
‫‪ _8‬اگر ‪ K‬تعداد مراحل یک سیستم خط لوله ای باشد‪.‬آنگاه این سیستم خط لوله‬
‫ای نسبت به یک سیستم بدون خط لوله حداکثر چند برابر سریعتر می باشد؟‬
‫‪2K-1)4‬‬
‫‪2K)3‬‬
‫‪K)2‬‬
‫‪2K+1)1‬‬
‫‪ _9‬در رابطه با ‪ pipeline‬کدام عبارت صحیح است؟‬
‫‪)1‬پیاده سازی ‪ pipeline‬برای ‪ CPU‬هایی با طول دستورالعمل ثابت نسبت به ‪CPU‬‬
‫هایی با طول دستورالعمل متغیر سخت تر است چون تعداد خطوط الزم برای واکشی‬
‫دستورالعمل از قبل باید ثابت باشد‪.‬‬
‫‪)2‬پیاده سازی ‪ pipeline‬برای ‪ CPU‬هایی با طول دستورالعمل ثابت نسبت به ‪CPU‬‬
‫هایی با طول دستورالعمل متغیر آسان تر است چون احتیاجی به ‪ decode‬ندارد‪.‬‬
‫‪)3‬پیاده سازی ‪pipeline‬برای ‪ CPU‬هایی با طول دستورالعمل ثابت نسبت به‪CPU‬‬
‫هایی با طول دستورالعمل متغیر آسان تر است چون احتیاجی به تشخیص طول‬
‫دستورالعمل وجود ندارد‪.‬‬
‫‪)4‬پیاده سازی ‪ pipeline‬برای ‪ CPU‬هایی با طول دستورالعمل ثابت نسبت به ‪CPU‬‬
‫هایی با طول دستورالعمل متغیر سخت تر است چون ‪ DECORDE‬آنها پیچیده تر‬
‫است‪.‬‬
‫واسط ورودی‪-‬خروجی ‪:‬‬
‫واسط ورودی‪-‬خروجی واحدی سخت افزاری است که روشی را برای انتقال داده ها بین حافظه‬
‫داخلی سیستم و دستگاه های ‪I/O‬در اختیار می گیرد‪.‬‬
‫منظور از قرار دادن واسط ‪ ،‬حل مشکالت موجود به دلیل تفاوتهای اساسی بین دستگاههای‬
‫‪ I/O‬و خود کامپیوتر است‪.‬‬
‫عمده تفاوتها عبارتند از ‪:‬‬
‫‪_1‬دستگاه های ‪) I/O‬دستگاههای جانبی ‪ (Peripheral Devices‬عموماً الکترومکانیکی یا‬
‫الکترونیکی هستند‪ .‬پس تبدیالت اطالعات امری ضروری است‪.‬‬
‫الکترو مغناطیسی هستند در حالیکه حافظه و ‪ CPU‬الکترونیکی هستند‪.‬‬
‫پس تبدیالت اطالعات امری ضروری است‪.‬‬
‫‪_2‬نرخ انتقال داده در دستگاههای جانبی کندتر از ‪ CPU‬و حافظه است پس باید مکانیزمی برای‬
‫سنکرون کردن آنها وجود داشته باشد‪.‬‬
‫کدها و فرمت های داده ها در دستگاههای جانبی با فرمت کلمات در ‪ CPU‬و حافظه متفاوت است‬
‫‪_3‬‬
‫‪_4‬مد های عملیاتی دستگاه های مختلف جانبی با یکدیگر متفاوت اند و باید هر کدام توسط کنترل‬
‫کننده خاص خود هدایت شود‪.‬‬
‫به مدار سخت افزاری بین ‪ CPU‬و جانبی ها را مدار واسط)‪ (Interface‬می نامند‪.‬‬
‫شکل ‪ 1‬واسط های سخت افزاری بین ‪ CPU‬و چند دستگاه جانبی را نشان می دهد‪.‬‬
‫گذرگاه ‪:I/O‬‬
‫پردازنده برای برقراری ارتباط با جانبی ها نیاز به باس ‪ I/O‬دارد (باس داده ‪ +‬باس آدرس ‪ +‬باس‬
‫کنترل)‪ .‬گذرگاه‪ CPU,I/O‬را به همه واسط ها متصل می کند‪.‬‬
‫‪ CPU‬برای ایجاد ارتباط با یک دستگاه جانبی ‪ ،‬ابتدا آدرس خاص آن را برای گذرگاه ‪ I/O‬می فرستد‪.‬‬
‫هر کدام از مدارهای واسط یک دیکدر آدرس دارد که تشخیص می دهد آیا آدرس موجود روی خطوط‬
‫آدرس مربوط به دستگاه خودش است یا خیر‪ .‬چنانچه این آدرس را از خود دانست مسیر بین‪CPU‬‬
‫و دستگاههای مربوط به خود را فعال می کند و بقیه واسط ها غیرفعال می شوند‪.‬‬
‫فرمان‪:I/O‬‬
‫در طول مدتی که آدرس خاص روی خطوط آدرس فعال است ‪ CPU‬می تواند بر روی خطوط کنترلی‬
‫کدهایی را ارسال کند که واسط‪ ،‬این کدها را دریافت کرده و مسئول پاسخ دادن به آنهاست‪ .‬این‬
‫کدها که باید توسط واسط اجرا شود را فرمان ‪I/O‬می نامند‪.‬‬
‫چهار نوع فرمان ‪ I/O‬وجود دارد‪:‬‬
‫‪.I‬‬
‫‪.II‬‬
‫‪.III‬‬
‫‪.IV‬‬
‫فرمان کنترلی ‪ :‬این فرمان یک دستگاه جانبی را فعال می کند‪.‬‬
‫فرمان وضعیت ‪ :‬این فرمان برای بررسی حالتهای مختلف جانبی یا واسط به کار‬
‫می رود‪.‬‬
‫فرمان خروجی داده ‪ :‬باعث می شود تا واسط آنچه بر روی خطوط داده در‬
‫گذرگاه ‪ I/O‬قرار دارد را به ثبات خود منتقل کند‪.‬‬
‫فرمان ورود داده ‪ :‬باعث می شود تا واسط داده ای را که از دستگاه جانبی دریافت‬
‫نموده و در ثبات آن موجود است بر روی خطوط داده از گذرگاه ‪ I/O‬قرار دهد ‪.‬‬
‫گذرگاه‪ I/O‬و گذرگاه حافظه ‪:‬‬
‫پردازنده عالوه بر ارتباط با ‪ I/O‬نیاز به ارتباط با حافظه دارد ‪.‬گذرگاه ‪ I/O‬و گذرگاه حافظه به ‪ 3‬روش‬
‫می توانند در کنار یکدیگر قرار بگیرند ‪:‬‬
‫‪ _1‬استفاده از دو باس مجزا‬
‫‪ _2‬یک گذرگاه نیمه مشترک با خطوط کنترلی مجزا برای گذرگاه ‪ I/O‬و گذرگاه حافظه‬
‫‪ _3‬یک گذرگاه مشترک برای گذرگاه ‪ I/O‬و گذرگاه حافظه‬
‫‪_1‬گذرگاه مجزا ‪:‬‬
‫در این روش کامپیوتر دارای یک مجموعه مجزا ‪ BUS‬های داده ‪ ،‬آدرس و کنترل است و هر کدام برای‬
‫دسترسی به حافظه و ‪ I/O‬استفاده می شود ‪.‬‬
‫در این حالت برای کار با ‪,I/O‬پردازنده جداگانه ای )‪ (IOP‬تعبیه می شود‪.‬این پردازنده با ‪ I/O‬و حافظه‬
‫ارتباط دارد‪.‬‬
‫‪_2‬گذرگاه نیمه مشترک (روش ‪ I/O‬ایزوله‬
‫شده(مجزا شده)‬
‫‪:(Isolated‬‬
‫هنگامی که ‪ CPU‬آدرس روی گذرگاه مشترک قرار می دهد با فعال نمودن ‪ I/O Read‬یا ‪I/O Write‬‬
‫اعالم می نماید که آدرس مربوط به واسط های ‪ I/O‬می باشد و یا با فعال نمودن ‪Memory Read‬‬
‫و یا ‪ Memory Write‬مشخص می نماید که آدرس مربوط به مکانی از حافظه است ‪.‬‬
‫‪_3‬گذرگاه مشترک)روش ‪:(Memory-Mapped‬‬
‫در این روش بخشی از کل فضای آدرس به حافظه و بخش دیگر به ثبات های واسط ‪ I/O‬اختصاص‬
‫دارد ‪ .‬در این روش دستورات جداگانه ای برای ‪ I/O‬و حافظه وجود ندارد ‪ .‬و فقط آدرس مشخص می‬
‫کند که هدف برقراری ارتباط با واسط است یا حافظه‪.‬‬
‫انتقال داده ‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫آسنکرون ( غیر همزمان )‬
‫سنکرون ( همزمان )‬
‫انتقال داده سنکرون‪:‬‬
‫عملیات داخلی یک سیستم دیجیتالی به صورت سنکرون انجام می شود بدین معنی که دارای یک‬
‫پالس ساعت مشترک هستند که تمام عملیات را به طور همزمان انجام می دهند ‪.‬‬
‫انتقال داده آسنکرون‪:‬‬
‫اما بیشتر واحد های ‪ I/O‬و ‪ CPU‬مستقل از هم عمل می کند و لذا پالس ساعت مخصوص به خود‬
‫دارند ‪ .‬بنابراین انتقال داده بین این دو واحد نا همزمان خواهد بود‪ .‬برای انتقال داده به طور آسنکرون‬
‫بین دو دستگاه مستقل ‪ ،‬باید بین آنها سیگنال های کنترلی تبادل شود تا انتقال داده و آماده‬
‫بودن داده را اعمال نمایند ‪ .‬مبادله این سیگنال ها به دو روش‪Strobe‬و ‪Hand shaking‬‬
‫قابل انجام است‪.‬‬
‫کنترل ‪ : Strobe‬در این روش تنها یک سیگنال کنترلی به نام ‪ Strobe‬برای هر انتقال الزم‬
‫است‪.‬این می تواند «فعال شونده توسط مبداء» یا «فعال شونده توسط مقصد » باشد‪.‬‬
‫‪ .a‬فعال شونده توسط مبدا‬
‫همانطور که در شکل یک دیده می شود مبدا ابتدا داده را روی گذرگاه داده قرار می دهد‬
‫و بعد از مدت اندکی که از پایداری داده اطمینان حاصل شد ‪ ،‬سیگنال ‪ Strobe‬را فعال‬
‫می کند‪ .‬این سیگنال به همراه داده مدتی فعال می ماند تا مقصد فرصت کافی برای غیرفعال‬
‫نموده و بعد از مدتی داده را ‪Strobe‬انتقال داده داشته باشد‪ .‬مبدا سیگنال‬
‫نیز از روی گذرگاه داده بر می دارد‪.‬‬
‫‪.b‬فعال شونده توسط مقصد ‪:‬‬
‫در شکل ‪ 2‬مشاهده می شود که مقصد توسط ‪ Strobe‬از مبدا درخواست داده می کند‪.‬‬
‫مبدا نیز در پاسخ داده را روی گذرگاه قرار می دهد‪ .‬بعد از مدتی مقصد ‪ Strobe‬را غیرفعال می کند‬
‫و در همان زمان می تواند داده را نیز به ثبات های داخلی خود منتقل کند و سپس به دنبال آن مبدا‬
‫نیز داده را از روی گذرگاه بر می دارد‪.‬‬
‫مثال‪:‬‬
‫عملیات خواندن و نوشتن بین ‪ CPU‬و حافظه مثال هایی از دو حالت باال هستند‪.‬‬
‫در حالت اول ‪ CPU :‬مبدا و حافظه مقصد است و سیگنال ‪ Strobe‬سیگنال ‪ write‬می باشد‪.‬‬
‫در حالت دوم ‪ CPU :‬مقصد و حافظه مبدا و سیگنال ‪ Strobe‬سیگنال ‪ Read‬می باشد‪.‬‬
‫‪: Hand Shaking‬‬
‫از معایب روش ‪ Strobe‬این است که در حالتی که واحد مبدا انتقال را شروع می کند روشی وجود‬
‫ندارد تا مشخص کند که آیا مقصد داده های روی باس‪ ،‬داده را دریافت نموده یا خیر؟‬
‫به طور مشابه اگر مقصد انتقال را شروع کند روشی وجود ندارد که مشخص کند که آیا مبدا داده‬
‫ای را روی باس داده قرار داده است یا خیر؟‬
‫روش ‪ Hand Shaking‬این عیب را مرتفع می سازد‪ .‬در این روش ‪ 2‬سیگنال کنترل خواهیم‬
‫داشت ‪:‬‬
‫یک سیگنال کنترلی به همراه داده از مبدا به مقصد ارسال می شود تا اعتبار داده اعالم نماید و‬
‫سیگنال دیگر در جهت معکوس از سوی مقصد به مبدا اعالم می نماید که داده دریافت شده‬
‫است‪( .‬شکل_ ‪ )3‬روش انتقال داده ها را موقع شروع کننده انتقال‪ ،‬واحدها باشد را نشان می‬
‫دهد‪ .‬در صورتیکه شروع کننده انتقال‪،‬واحد مقصد باشد‪ ،‬خطوط ‪Hand Shaking‬به صورت‬
‫شکل _‪ 4‬می باشد‪.‬‬
)1(
)3(
)2(
)4(
‫مبدا‬
‫مقصد‬
‫انتقال داده باس و فعال‬
‫نمودن داده‬
‫معتبر‬
‫دریافت داده از باس و فعال‬
‫نمودن دریافت داده‬
‫غیرفعال نمودن داده معتبر و‬
‫غیر فعال نمودن گذرگاه داده‬
‫غیر فعال نمودن دریافت داده‬
‫و آماده سازی برای دریافت‬
‫داده بعدی‬
‫واحد مبداء‬
‫واحد مقصد‬
‫قرار دادن داده روی باس‬
‫فعال کردن خط داده معتبر‬
‫آماده دریافت داده‬
‫فعال نمودن خط آماده‬
‫برای دریافت داده‬
‫غیر فعال کردن خط داده معتبر‬
‫غیرفعال کردن خط داده معتبر‬
‫دریافت داده از گذرگاه غیر فعال‬
‫کردن خط آماده برای داده‬
‫شکل_ ‪4‬‬
‫حالت های انتقال داده ها ‪(mode of data transfering) :‬‬
‫‪ 3‬روش انتقال اطالعات وجود دارد که در زیر آنها را بررسی می کنیم ‪:‬‬
‫‪ _1‬ورودی – خروجی تحت کنترل برنامه )‪:(Programmed I/O‬‬
‫در این حالت دستگاه ‪ I/O‬ارتباط مستقیم با حافظه ندارد و هرگونه انتقال داده از ‪ I/O‬به حافظه به‬
‫اجرای چند دستور توسط ‪ CPU‬نیاز دارد‪ .‬در این روش ‪ CPU‬داده ها را از واسط می خواند و به واسط‬
‫می نویسد و واسط خود با ایجاد ارتباط با دستگاه ‪I/O‬داده را گرفته یا آن را می فرستد‪.‬‬
‫در این روش ‪ CPU‬در یک حلقه برنامه قرار می گیرد تا واحد ‪ I/O‬مشخص کند که آماده انتقال داده‬
‫است و در این زمان ‪ CPU‬بیکار است و این یکی از معایب این روش است‪.‬‬
‫واسط‬
‫گذرگاه ‪I/O‬‬
‫دستگاه‬
‫‪I/O‬‬
‫شکل _‪7‬‬
‫ثبات داده‬
‫اعتبار داده‬
‫گذرگاه داده‬
‫گذرگاه آدرس‬
‫خواندن‬
‫دریافت داده‬
‫‪F‬‬
‫ثبات وضعیت‬
‫بیت پرچم‬
‫نوشتن‬
‫‪CPU‬‬
‫‪ _2‬ورودی – خروجی وقفه دهنده )‪:(Interrupt Initiated I/O‬‬
‫همانطورکه در روش ورودی خروجی تحت کنترل برنامه ‪ CPU‬دائمآ درحال بررسی بیت پرچم‬
‫می باشد تا حضور داده اعالم شود و این سبب هدر رفتن وقت ‪CPU‬گفتیم می شود‪.‬‬
‫اما در این روش (ورودی – خروجی وقفه دهنده) را الزامآ تحت نظر ندارد و به انجام کار‬
‫عادی خود یا اجرای برنامه دیگر مشغول است و واسط وقفه ای را جهت دریافت یا ارسال داده به ‪CPU‬‬
‫ارسال می کند‪.‬‬
‫‪ CPU‬بعد از اجرای دستورالعمل جاری خود به وقفه پاسخ می دهد و با ذخیره سازی آدرس برگشت در‬
‫پشته به سرویس روتین وقفه مربوط به انتقال ‪ I/O‬می رود‬
‫بعد از اتمام عملیات دریافت داده ‪/‬اجرای عادی برنامه قبلی را ازآدرس که هنگام دریافت وقفه ذخیره‬
‫نموده بود ادامه میدهد‪.‬به دست آوردن آدرسبرنامه سرویس ‪ I/O‬به دو صورت امکان دارد ‪ :a‬وقفه‬
‫برداری)‪ )vectored int.‬و ‪(:b‬وقفه غیر برداری(‪)nonvectored int.‬‬
‫‪:B‬وقفه غیربرداری‪:‬در این حالت آدرس پرش هنگام وقوع وقفه مکان ثابتی در حافظه است و همه وقفه‬
‫ها یک روتین وقفه مشترک دارند‪.‬‬
‫‪:A‬وقفه برداری‪:‬منبع وقفه دهنده خود اطالعات مربوط به پرش را معین می نماید که این اطالعات بردار‬
‫وقفه را تشکیل میدهد‪.‬‬
‫‪ _3‬دسترسی مستقیم به حافظه ‪: (Direct Memory Access) DMA‬‬
‫انتقال داده بین یک دستگاه ‪ I/O‬و حافظه توسط ‪ CPU‬محدود می شود‪.‬حذف ‪ CPU‬از مسیر و ایجاد‬
‫امکان کنترل سیستم گذرگاه حافظه توسط دستگاه جانبی‪,‬سرعت انتقال را بهبود می بخشد‪.‬‬
‫این روش انتقال دستیابی مستقیم به حافظه )‪ (DMA‬نام دارد‪ .‬از روش ‪ DMA‬در مواقعی که بخواهیم‬
‫حجم زیادی از اطالعات را بین حافظه و واحدهای جانبی رد و بدل کنیم استفاده می شود‪.‬‬
‫در طول ‪ DMA‬واحد ‪ CPU‬از باس های حافظه آدرس و کنترل استفاده نمی کند و آنها را در‬
‫اختیار کنترلی ‪DMA‬انتقال قرار می دهد‪.‬‬
‫‪ DMA‬آدرسی دارد که خطوط ‪ DS‬و ‪ RS‬آن را فعال می کند‪ CPU .‬از طریق گذر گاه داده مقادیر‬
‫اولیه ثبات های ‪ DMA‬را معین می کند و سپس با یک دستور کنترلی شروع عمل انتقال را از‬
‫‪ DMA‬درخواست می نماید‪.‬این دستور کنترلی وارد ثبات کنترل ‪ DMA‬میگردد‪.‬‬
‫شکل_‪ 1‬جایگاه ‪ DMA‬را در سیستم کامپیوتر نشان می دهد‪:‬‬
‫وقتی دستگاه های جانبی تقاضایی به ی‪ DMA‬می فرستد ( در خواست ‪DMA,)DMA‬با فعال‬
‫از ‪ CPU‬در خواست گذرگاه می کند‪ CPU .‬پاسخ خود را توسط خط ‪ BG‬اعالم می نماید‪.‬‬
‫نمودن ‪BR‬‬
‫با این پاسخ ‪ DMA‬میفهمد که گذرگاه آزاد است و مقدار کنونی ثبات آدرس خود را بر روی گذرگاه‬
‫آدرس قرار می دهد‪.‬‬
‫)خط موافقت ‪ ( DMA‬وقتی دستگاه جانبی تایید در خواست خود را دریافت کرد کلمه ای را روی‬
‫گذرگاه داده قرار می دهد و یا از گذرگاه دریافت می کند و داده مستقیما ولی تحت کنترل ‪DMA‬‬
‫بین دستگاه جانبی و حافظه جا به جا می شود و ‪ DRAM‬آدرس حافظه و حالت خطوط ‪WR‬و‬
‫‪ RD‬را تحت کنترل خود قرار می دهد‪.‬‬
‫‪BR:BUS Request‬‬
‫‪BC:BUS Grandted‬‬
‫تکلیف ‪:‬‬
‫انتقال داده با روش ‪ DMA‬را کامال شرح دهید ‪.‬‬
‫جواب ‪:‬‬
‫طبق شکل صفحه قبل ‪:‬‬
‫وقتی که وسیله جانبی درخواست ‪ DMA‬را ارسال می کند کنترل کننده ‪ DMA‬خط ‪ BR‬را فعال‬
‫می نماید‪,‬و به این طریق به ‪ CPU‬اطالع می دهد که گذرگاه ها را رها کند‪.‬‬
‫‪CPU‬با فعال کردن خط ‪ BG‬به ‪ DMA‬اطالع می دهد که گذرگاههای آن غیر فعالند پس ‪DMA‬‬
‫مقدار فعلی ثبات آدرس خود را روی گذرگاه آدرس قرار داده ‪ ،‬سیگنال ‪ RD‬یا ‪ WR‬در کنترل کننده‬
‫‪ DMA‬دو جهته است جهت انتقال بستگی به وضعیت خط ‪ BG‬دارد‪ .‬وقتی که ‪ BG=0‬باشد‬
‫خطوط ‪ RD‬و ‪ WR‬برای ‪ DMA‬ورودی بوده و این امکان را برای ‪ CPU‬فراهم می کند که با ثباتهای‬
‫‪ DMA‬ارتباط برقرار کند‪ .‬وقتی که ‪ BG=1‬باشد ‪ RD‬و ‪ WR‬خطوط خروجی از کنترل کننده ‪DMA‬‬
‫به ‪ RAM‬بوده و عمل خواندن و نوشتن را مشخص می کنند‪.‬‬
‫وقتی که وسیله جانبی یک سیگنال موافقت را از ‪ DMA‬دریافت می کند کلمه ای را در گذرگاه‬
‫داده قرار می دهد (برای نوشتن) یا کلمه ای را از گذرگاه داده دریافت می کند (برای خواندن)‬
‫پس ‪ DMA‬عمل خواندن و نوشتن را کنترل می کند و آدرس حافظه را فراهم می کند‪.‬‬
‫واحد جانبی سپس با حافظه از طریق گذرگاه داده برای انتقال مستقیم بین دو واحد ارتباط برقرار‬
‫می کند و این مدت ‪CPU‬موقتاً غیرفعال است‪ .‬برای هر کلمه ای که انتقال یابد ‪DMA‬ثبات آدرس‬
‫را افزایش داده و ثبات شمارش کلمه را کاهش می دهد‪ .‬اگر شمارش کلمه به صفر نرسد ‪DMA‬‬
‫خط درخواست واسطه از وسیله جانبی را چک می کند برای یک وسیله سریع ‪ ،‬خط به محض خاتمه‬
‫انتقال قبلی فعال خواهد شد سپس دومین انتقال آغاز می شود و روند تا انتقال کامل بالک ممکن‬
‫ادامه می یابد اگر سرعت وسیله جانبی کندتر باشد خط درخواست ‪DMA‬است قدری‬
‫دیرتر برسد‪.‬‬
‫در اینصورت ‪ DMA‬خط درخواست گذرگاه را فعال می کند تا ‪ CPU‬بتواند به اجرای برنامه خود ادامه‬
‫دهد‪.‬‬
‫وقتی که دستگاه جانبی درخواست انتقال کرد ‪DMA‬مجدداً گذرگاه ها را درخواست می کند‪ ,‬اگر ثبات‬
‫شمارش به صفر برسد ‪ DMA‬از ارسال بیشتر انتقال خودداری می کند و درخواست گذرگاه خود را‬
‫حذف می نماید و ‪ CPU‬را از اتمام کار بوسیله وقفه مطلع می سازد وقتی که ‪ CPU‬به وقفه پاسخ‬
‫دهد ‪ ،‬محتوای ثبات شمارش کلمه را می خواند مقدار صفر در این ثبات به معنی انتقال موفقیت آمیز‬
‫کلیه کلمات است‪.‬‬
‫‪ CPU‬در هر لحظه قادر به خواندن این ثبات می باشد و کلماتی را که قبال ً منتقل منتقل شده اند‬
‫وارسی میکند‪.‬‬
‫کنترل ریز برنامه ریزی شده )‪:(MICRO – PROGRAMMED CONTROL‬‬
‫وظیفه واحد کنترل در یک کامپیوتر تولید ریز عملیات است و این امر عمدتا به ‪ 2‬روش انجام می‬
‫شود ‪.‬‬
‫‪ _1‬کنترل سیم بندی شده )‪(HARD WIRRED CONTROL‬‬
‫‪ _2‬کنترل ریز برنامه ریزی شده (‪(MICRO – PROGRAMMED CONTROL‬‬
‫حال در زیر روش کنترل ریز برنامه ریزی شده مورد بررسی قرار می گیرد‪.‬‬
‫* کلمه کنترلی ‪ :‬متغیرهای کنترلی که توسط واحد کنترل تولید می شود ‪ ،‬دنباله ای از صفر و یک‬
‫ها هستند که به آنها کلمه کنترلی می گویند ‪.‬‬
‫* ریز دستور ‪ :‬هر کلمه در یک حافظه کنترلی شامل یک ریز دستور است ‪.‬‬
‫* ریز عمل ‪ :‬هر ریز دستور یک یا چند ریز عمل را برای سیستم مشخص می کند ‪.‬‬
‫* ریز برنامه ‪ :‬دنباله ای از دستورات ریز برنامه را تشکیل می دهد‪.‬‬
‫* یک ریز برنامه از یک حافظه جانبی به یک حافظه کنترلی بار می شود این حافظه کنترلی قابل‬
‫نوشتن است ‪.‬‬
‫* حافظه کنترلی با حافظه اصلی سیستم متفاوت است هر دستور در حافظه اصلی موجب‬
‫اجرای رشته ای از ریز دستورات دز حافظه کنترلی می گردد‪ ،‬ریز عملیات مربوط به واکشی‬
‫و ترجمه و اجرای دستورات را تولید می کند ‪.‬‬
‫شکل – ‪ 1‬ساختار کلی یک واحد کنترل ریز برنامه ریزی شده را نشان داده است‬
‫ثبات آدرس کنترل‪ :(CAR=CONTROL ADDRESS REGIDTER):‬آدرس ریز دستور را مشخص می کند ‪.‬‬
‫ثبات )‪ :(CDR=CONTROL DATA REGISTER‬ریز دستوری که از حافظه کنترل خوانده می شود را‬
‫داده کنترل‪:‬‬
‫در خود ذخیره می کند ‪.‬‬
‫‪ CDR‬ریز دستور فعلی را در خود ذخیره می کند در حالیکه همزمان ‪ ،‬آدرس بعدی ریز‬
‫دستور محاسبه می شود ‪.‬‬
‫مولد آدرس بعدی ‪ : SEQUENCER‬آدرس ریز دستور بعدی در حافظه کنترلی را تولید می کند‪.‬‬
‫شکل – ‪ 2‬واحد کنترل ‪ MICRO PROGRAMMED‬یک کامپیوتر را نشان می دهد ‪.‬‬
‫حافظه کنترلی ‪ ROM‬به صورت ‪ 64‬کلمه ‪6‬بیتی است ‪.‬رجیستر ‪ CAR‬با دو ‪MUX‬کنترل می شود‪.‬‬
‫برای هر آدرس دهی حافظه کنترلی ‪ 64‬کلمه ای نیاز به ‪ 6‬بیت آدرس ‪ ،‬برای انتخاب ‪ 8‬ورودی‬
‫)‪ MUX(2‬نیاز به ‪ 3‬بیت ‪ ،‬برای انتخاب آدرس ‪ CAR‬توسط )‪ MUX(1‬نیاز به ‪ 1‬بیت و با داشتن یک‬
‫کلمه کنترلی ‪ 16‬بیتی جمعا ریز دستور واحد ریز برنامه ریزی شده ‪ 26‬عدد خواهد شد ‪.‬‬
‫بیت های وضعیت از واحد پردازش به ورودی های )‪ MUX(2‬اعمال می شوند‪ .‬اگر ورودی های‬
‫انتخاب شده ‪ 1‬باشد در آن صورت خط ‪ LOAD‬فعال و آدرس ‪ 6‬بیتی از خروجی )‪ MUX(1‬به ‪CAR‬‬
‫بار می شود ‪ .‬اگر خط انتخاب ورودی "‪ "0‬باشد ورودی ‪ INCREMENT‬و رجیستر‪ CAR‬فعال و به‬
‫آن ‪ 1‬واحد اضافه می شود پس وقتی خطوط انتخاب )‪ MUX(2‬معادل ‪ 000‬به ‪ CAR‬یک واحد‬
‫اضافه می شود وقت یکه خطوط انتخاب )‪ MUX(2‬معادل ‪ 001‬شود خط ‪ LOAD‬ثبات ‪CAR‬‬
‫فعال و آدرس جدید در آن بار می شود که این حالت را پرش شرطی می نامند ‪.‬‬
‫ورودی ‪CAR‬با بیت ‪ 17‬ریز دستورالعمل انتخاب می گردد‪.‬اگر بیت ‪17‬برابر "‪ "0‬باشد فعال می باشد‬
‫آدرس خروجی در ‪ CAR‬بار می شود ‪.‬‬
‫بخشی از واحد‪8‬مثال ‪:‬در شکل‬
‫کنترل ریز برنامه پذیر می باشد‬
‫مشخص کنید‪.‬‬
‫** شکل ‪ A‬در اسالید ‪** 111‬‬
‫شکل _‪2‬‬
‫اگر ‪ A=36,SELECT=(011),CAR=20‬و پردازنده دستور ‪ R1- R2‬را اجرا کرده باشد ‪R1- R2‬‬
‫( بدون عالمت فرض می شوند) و تفریق به روش مکمل ‪ 2‬انجام می شود‪.‬مشخص کنید کدام‬
‫گزاره صحیح است‪.‬‬
‫‪21‬‬
‫‪36 else CAR‬‬
‫‪1. IF (R1≥ R2 ) then CAR‬‬
‫‪36‬‬
‫‪21 else CAR‬‬
‫‪2. IF (R1≤ R2 ) then CAR‬‬
‫شکل _‪2‬‬
‫‪21‬‬
‫‪36 else CAR‬‬
‫‪1. IF (R1≥ R2 ) then CAR‬‬
‫حل ‪ :‬گزینه ‪ 1‬درست است ‪.‬‬
‫در تفریق با روش مکمل ‪ ، 2‬اگر ‪ R1 ≥ R2‬باشد رقم نقلی ‪ C=1‬است و اگر ‪ R1 < R2‬باشد رقم‬
‫نقلی ‪ C=0‬است‪ .‬در مورد فوق خط ‪ SELECT=011‬است و خروجی ‪ ,Mux‬به صورت‪C‬رقم نقلی‬
‫زیر می باشد‪.‬‬
‫طبق مدار فوق اگر ‪ C=1‬باشد یا به عبارتی اگر ‪ R1≥ R2‬باشد خط ‪ Load‬فعال و ‪CAR=36‬‬
‫می شود ‪ .‬اگر ‪ C=0‬شود یا به عبارتی ‪ R1 < R2‬گردد خط ‪INC‬فعال شده و به ثبات ‪CAR‬‬
‫یک واحد به آن اضافه شده یا‪ CAR=21‬می شود ‪ .‬یا به عبارتی ‪:‬‬
‫‪If (C=1) then CAR = 36 else CAR = 21‬‬
‫شکل _‪A‬‬
‫مسئله ‪ :‬سیگنال زمان بندی ارتباط بین کامپیوتر و چاپگر را رسم کنید و شرح دهید ‪.‬‬
‫‪DAV= DATA AVNILABLE‬‬
‫‪RDY = DATA READY‬‬
‫حل ‪ :‬شکل را حل کرده ولی شرح را خودمان باید بنویسیم ‪:‬‬
‫‪RDY‬‬
‫‪DATA‬‬
‫‪DAV‬‬
‫فصل هفتم‪ :‬سازمان حافظه‬
‫سلسله مراتب حافظه‬
‫در یک کامپیوتر انواع مختلف حافظه وجود دارد که از لحاظ سرعت‪،‬ظرفیت و هزینه‬
‫تولید با یکدیگر متفاوتند ‪.‬این حافظه ها به صورت سلسله مراتبی هستند‪.‬هر چه‬
‫حافظه به ‪ Cpu‬نزدیکتر باشد (‪ )high level‬سرعت و هزینه تولید آن بیشتر است و‬
‫ظرفیت کمتر ‪.‬نزدیکترین حافظه به پردازنده حافظه نهان (‪ )cach‬است که زمان‬
‫دسترسی آن تقریبا با زمان پریود کالک پردازنده (‪ )click cycle time‬یکسان است‪.‬‬
‫در کش اطالعاتی که بیشتر مورد استفاده پردازنده هستند ذخیره می شود‪ .‬هر بیت‬
‫کش در یک فلیپ ذخیره می شود‪.‬سطح بعدی حافظه ‪ ،‬حافظه اصلی است‪.‬وقتی‬
‫برنامه ای قرار است اجرا شود از حافظه جانبی به حافظه اصلی منتقل می‬
‫شود‪.‬حافظه جانبی شامل همه اطالعاتی است که در یک سیستم ذخیره شده‬
‫است‪.‬شکل ‪ 1‬سلسله مراتب حافظه را نشان می دهد‪.‬‬
‫درواقع اصل محلی بودن مراجعات (‪ )Locality of references‬است که وجود‬
‫سلسله مراتب حافظه را توجیه می کند‪.‬به این معنی که برنامه ها تمایل دارند در‬
‫هر زمان فقط به قسمت کوچکی از فضای آدرسشان دسترسی یابند‪.‬دو نوع‬
‫لوکالیتی وجود دارد‪:‬‬
‫_زمانی (‪ : )temporal‬یعنی اگر به یک آیتم رجوع شد؛احتماال مجددآ به آن رجوع‬
‫خواهد شد(مثل حلقه ها)‬
‫_مکانی(‪ : )spatial‬اگر به یک آیتم رجوع شد‪،‬به آیتم های مجاورش نیز رجوع‬
‫خواهد شد(مثل آرایه ها یا دستورات پشت سر هم برنامه)‬
‫حافظه اصلی‬
‫معموآل حافظه اصلی ‪ RAM‬است ولی می تواند شامل ‪ ROM‬نیز باشد‪.‬‬
‫‪ RAM‬حافظه ای است با دستیابی تصادفی یعنی دسترسی به همه مکان های‬
‫آن با یک زمان ثابت انجام می شود ‪.‬این حافظه خواندنی نوشتنی است(‪)RWM‬‬
‫و فرار است یعنی اطالعات را تا زمانی حفظ می کند که توان الکتریکی به آن‬
‫اعمال می شود‪ RAM.‬را با دو شیوه می توان ساخت‪:‬استاتیک و دینامیک‪.‬در‬
‫‪ RAM‬استاتیک (‪ )SRAM‬بیت ها در فلیپ فالپ ها ذخیره می شوند و سرعت و‬
‫هزینه شان از ‪ RAM‬دینامیک(‪)DRAM‬بیشتر است‪.‬در ‪ DRAM‬بیت ها در خازن ها‬
‫شارژ می شوند و ازآنجایی که خازن به مرور زمان دشارژ می شود این حافظه‬
‫متناوبآ باید تازه نویسی(‪ )refresh‬شود‪.‬‬
‫‪ DRAM‬دارای توان مصرفی کمتری است و ظرفیت آن از‪ SRAM‬بیشتر است‪.‬‬
‫‪ ROM‬حافظه ای است فقط با قابلیت خواندن و اطالعات آن دائمی‬
‫هستند‪.‬دستیابی به این حافظه نیز همانند ‪ RAM‬تصادفی است‪.‬‬
‫تراشه های ‪RAM‬و ‪ROM‬‬
‫یک تراشه ‪ RAM‬باید دارای خطوط دو طرفه دیتا و یک طرفه آدرس و همچنین‬
‫خطوط کنترلی باشد‪.‬‬
‫شکل ‪ 2‬یک تراشه ‪ RAM 128˟8‬را نشان میدهد‪:‬‬
‫برای آنکه بتوان از این تراشه خواند یا نوشت باید ‪ )chip select( CS=1‬باشد‪.‬‬
‫در این صورت اگر ‪ RD=1‬یعنی خواندن و اگر ‪ WR=1‬یعنی نوشتن ‪ .‬اگر‬
‫‪ RD=WR=0‬یا اگر ‪ CS=0‬آنگاه خطوط دیتا همگی در حالت باز( ‪high‬‬
‫‪ )impedance‬خواهند بود و هیچ سیگنالی را عبور نمی دهند‪.‬البته خطوط ‪ RD‬و‬
‫‪ WR‬می توانند فقط یک خط باشند (‪ )RD/𝑊R‬اگر این خط یک بود یعنی خواندن و‬
‫اگر صفر بود یعنی نوشتن‪.‬‬
‫حال فرض کنید می خواهیم با کمک تراشه شکل ‪2‬یک حافظه به اندازه ‪512˟8‬‬
‫بسازیم‪.‬برای این منظور به ‪ 4‬تراشه نیازمندیم و کل خطوط آدرس پردازنده باید‬
‫حداقل ‪ 9‬خط (‪ )A8…A1A0‬باد‪.‬به تراشه ‪ 7‬خط کم ارزش آدرس متصل می کنیم‬
‫(‪ )A6…A0‬و از ‪ A8A7‬برای انتخاب تراشه ها استفاده می کنیم‪.‬شکل ‪ 3‬نحوه‬
‫ساخت حافظه ‪ 512˟8‬با حافظه های ‪ 128˟8‬را نشان می دهد‪:‬‬
‫با توجه به شکل ‪ RAM1 ، 3‬وقتی فعال می شود که‪ ، A8A7=0 0‬پس آدرس های‬
‫‪ 0‬تا ‪ 127‬به ترتیب در ‪ RAM1‬هستند به همین ترتیب‪:‬‬
‫م قادی ر ده ده ي أدرس ه ا‬
‫‪A0‬‬
‫‪A1‬‬
‫‪A2‬‬
‫‪A3‬‬
‫‪A4‬‬
‫‪0 -1 2 7‬‬
‫‪‬‬
‫*‬
‫*‬
‫*‬
‫*‬
‫*‬
‫‪1 2 8 -2 5 5‬‬
‫‪‬‬
‫*‬
‫*‬
‫*‬
‫*‬
‫*‬
‫*‬
‫‪2 5 6 -3 8 2‬‬
‫‪‬‬
‫*‬
‫*‬
‫*‬
‫*‬
‫*‬
‫*‬
‫‪0‬‬
‫‪3 8 4 -5 1 1‬‬
‫‪‬‬
‫*‬
‫*‬
‫*‬
‫*‬
‫*‬
‫*‬
‫‪1‬‬
‫تراش ه‬
‫‪A5‬‬
‫‪A6‬‬
‫‪A7‬‬
‫‪A8‬‬
‫*‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪RAM 2‬‬
‫‪1‬‬
‫‪RAM 3‬‬
‫‪1‬‬
‫‪RAM 4‬‬
‫به ساخت حافظه بزرگ با تراشه های کوچک‬
‫اصطالحا برگ برگ سازی (‪ )interleaving‬گویند;‬
‫و اگر از بیت های با ارزش آدرس برای انتخاب‬
‫تراشه ها استفاده شود (شکل‪ )3‬به آن‬
‫‪ high order interleaving‬گویند‪.‬می توان‬
‫برا انتخاب تراشه ها از سایر خطوط آدرس‬
‫نیز استفاده کرد مثال می توان از ‪ A1A0‬برای‬
‫این منظور استفاده کرد که به آن‬
‫‪ Liw order interleaving‬گویند‪.‬‬
‫‪RAM 1‬‬
‫با توجه به شکل ‪RAM ،4‬وقتی فعال است که ‪A1A0=0 0‬یعنی همه آدرس های‬
‫مضرب ‪ 3‬در این تراشه هستند و به ترتیب‪:‬‬
‫با توجه به اینکه پردازنده معموآل آدرس های متوالی را مورد دسترسی قرار می‬
‫دهد‪،‬در روش ‪ Low order‬می توان هزمان به چندین آدرس دسترسی پیدا‬
‫کرد‪.‬مثآل در شکل ‪ 5‬اگر پردازنده آدرس صفر را تولید کند همه تراشه ها همزمان‬
‫خانه صفرشان مورد دسترسی قرار می گیرد و می توان با وجود شرایطی کلمات‬
‫موجود در آدرس های ‪ 0‬و ‪ 1‬و ‪ 2‬و ‪ 3‬را که پردازنده می خواهد به طور موازی‬
‫خواند‪.‬ولی در روش ‪ high order‬این امکان وجود ندارد زیرا آدرس های متوالی‬
‫همگی در یک تراشه هستند‪.‬البته گفته می شود تحمل پذیری روش ‪high‬‬
‫‪ order‬در مقابل خرابی بیشتر است زیرا اگر یکی از تراشه ها آسیب‬
‫ببیند‪.‬تعدادی برنامه (و نه همه برنامه ها) از بین می روند‪.‬‬
‫به طور کلی اینکه براساس کدام خطوط آدرس برگ برگ سازی صورت‬
‫گیرد‪.‬بستگی دارد به آدرس هایی که پردازنده متوالیآ تولیدمی کند‪.‬‬
‫مثال‪ :‬می خواهیم یک ماتریس ‪ 8˟8‬را بصورت سطری در حافظه ذخیره کنیم ‪.‬اگر‬
‫حافظه شامل ‪ 8‬تا تراشه ‪ 8k‬بایتی باشد‪،‬براساس کدام خطوط آدرس برگ برگ‬
‫سازی کنیم تا سرعت دسترسی به عناصر ستون دوم افزایش یابد‪.‬‬
‫پاسخ‪:‬کل فضای آدرس دهی ‪ 8˟8k=64k‬بایت است‪،‬پس نیاز به ‪ 16‬خط آدرس‬
‫(‪ )A15…A0‬می باشد باید کاری کنیم که عناصر ستون دوم در تراشه های مختلف‬
‫و در یک مکان از این تراشه ها توزیع شود‪.‬اگر عنصر اول در آدرس صفر ذخیره‬
‫شود ‪ ،‬آدرس عناصر ستون دوم عبارت است از‪ 1:‬و ‪ 9‬و ‪ 17‬و ‪ 25‬و‪ ....‬واضح است‬
‫که در این آدرس ها بیت های ‪ A5A4A3‬متغیر است و باید بر اساس این بیت ها‬
‫برگ برگ سازی کنیم تا در این صورت این آدرس ها همگی در آدرس یک (دومین‬
‫خانه) از ‪ 8‬تراشه مختلف توزیع شوند‪:‬‬
‫الزم به ذکر است که در این مثال با توجه به برگ برگ سازی انجام شده‬
‫دسترسی به عناصر هر ستونی با سرعت زیاد صورت می گیرد‪.‬‬
‫توجه‪:‬معموآل برای آنکه سخت افزار کاهش یابد‪،‬تراشه ها دارای دو خط ‪CS‬‬
‫هستند‪.‬‬
‫مثال‪:‬با توجه به تراشه های ‪ RAM 128˟8‬و ‪ ROM 512˟8‬در شکل ‪( 6‬الزم به ذکر‬
‫است که سلول های ‪ ROM‬از ‪ RAM‬فضای کمتری اشغال می کنند) یک‬
‫سیستم حافظه به روش ‪high order‬بسازید که شامل ‪ RAM 512˟8‬و ‪ROM‬‬
‫‪ 512˟8‬باشد‪:‬‬
‫پاسخ‪:‬خطوط آدرس ‪ A9…A0‬می باشند(‪ 10‬خط ادرس نیاز است چون ‪ 1024‬مکان‬
‫باید آدرس داده شود)می خواهیم آدرس ‪ 0‬تا ‪ 511‬برای ‪ RAM‬و ‪ 512‬تا ‪ 1023‬برای‬
‫‪ ROM‬باشد پس اگر ‪ A9=0‬یعنی ‪ RAM‬باید فعال شود و اگر ‪ A9=1‬باید ‪ROM‬‬
‫فعال شود‪.‬همچنین ‪ A8A7‬مشخص می کند کدام یک ازتراشه های ‪ RAM‬باید‬
‫فعال شوند‪.‬شکل ‪ 7‬پیکربندی را نشان می دهد‪.‬‬
‫با توجه به شكل‪ 7‬هرگاه ‪ 𝐴9 = 0‬یكي از ‪RAM‬ها فعال است واگر‪ 𝐴9 = 1‬به شرطي كه پردازنده درخواست‬
‫خواندن (‪ )RD=1‬داده باشد ‪ RAM‬فعال است‪.‬‬
‫‪ 4K‬بسازيم ‪.‬تعداد تراشه هاي‬
‫مثال‪ :‬باتراشه هاي ‪ RAM1K‬میخواهیم حافظه‬
‫مورد نیاز و اندازه ديكدر را مشخص كنید‪.‬‬
‫پس ‪ dec2×4‬نیاز است ولي تعداد تراشه هاي الزم ‪ 4×2=8‬است‬
‫پاسخ‪:‬‬
‫چون ديتاي تراشه ها ‪ 4‬بیتي است ولي نیاز به ديتا ‪8‬بیتي داريم‪:‬‬
‫نكته‪ :‬براي برگ برگسازي مي توان از مالتي پلكسر نیز استفاده كرد به اين صورت‬
‫كه ديتاي تراشه ها را از طريق مالتي پلكسر انتخاب كنیم (به تست ‪11‬‬
‫مراجعه كنید)‪.‬‬
‫حافظه كش‬
‫حافظه اي است نسبتاً سريع و كوچك بین حافظه اصلي و پردازنده‪ .‬سرعت اين‬
‫حافظه ‪5‬تا ‪ 10‬برابر حافظه اصلي است و اطالعاتي كه به آنها مراجعه زياد است‬
‫در اين حافظه نگهداري مي شوند‪ .‬در واقع پردازنده هر درخواستي كه مي دهد‬
‫براي حافظه اصلي است ولي اين درخواست ها به كش نیز اعمال مي شود و اگر‬
‫ديتاي مورد نظردر كش باشد(‪ )hit‬با سرعت زياد خوانده يا نوشته میشود‪.‬ولي اگر‬
‫در كش نباشد(‪ ، )miss‬اين ديتا و احتماال ً اطرافش به كش منتقل مي شوند و‬
‫سپس ‪ CPU‬اين ديتا را مي خواند يا مي نويسد ‪.‬البته ‪ CPU‬ممكن است منتظر‬
‫نوشته شدن ديتا واطراف آن به كش نباشد و مستقیم ديتا را از حافظه اصلي‬
‫دريافت كند‪.‬‬
‫در شكل ‪ 9‬اگر پردازنده آدرس ‪ A‬يا ‪ D‬را تولید‪ ،‬برخورد (‪ )hit‬رخ دهد ولي اگر آدرس‬
‫كار كند نقصان (‪ )miss‬است‪.‬‬
‫تعداد𝑡𝑖‪ℎ‬‬
‫=‪ℎ‬‬
‫تعداد كل مراجعات‬
‫اگر ‪miss‬اتفاق بیافتد ‪ ،‬بالك مورد نظر بايد از حافظه اصلي به كش منتقل شودو‬
‫ديتاي مورد نظر به ‪ CPU‬داده شود كه زمان اين عملیات را ‪ miss penalty‬گويند‪.‬‬
‫اگرفرض كنیم زمان دسترسي به حافظه اصلي 𝑚𝑡 وزمان دسترسي 𝑐𝑡 و نرخ‬
‫برخورد ‪ h‬است آنگاه زمان متوسط دسترسي ) 𝑒𝑣𝑎𝑡( برابر است با‬
‫‪𝑡ave = ht c + (1 − h)t m‬‬
‫با اين فرض كه حافظه اصلي مستقیماً مي تواند به ‪ CPU‬ديتا بدهد‪.‬ولي اگر‬
‫حافظه اصلي مستقیم به ‪ CPU‬ديتا ندهد يعني‬
‫آنگاه زمان متوسط دسترسي برابر است با ‪:‬‬
‫‪tave=htc+(1-h)(tm+tc)=tc+(1-h)tm‬‬
‫درواقع اگرداده داخل كش باشد (‪ )h‬زمان 𝑐𝑡 را تحمل مي كنیم ولي اگرداده‬
‫داخل كش نباشد (‪ )1-h‬هم 𝑚𝑡 وهم 𝑐𝑡 را تحمل مي كنیم‪.‬‬
‫فرمول فوق را مي توان براي چندين ‪Level‬حافظه گسترش داد‪:‬‬
‫‪tave=t1+(1-h)t2+(1-h1)(1-h2)t3‬‬
‫اگرفرض كنیم ‪ Mem1‬كش سطح ‪1‬و ‪Mem2‬و‪ Mem3‬حافظه اصلي است‪ ،‬مي‬
‫توان فرمول ‪ 3‬را به شكل زير نوشت‪:‬‬
‫فرمول ‪:4‬‬
‫‪tave=L1 hit time + L1 miss rate ×L2 hit time + L2 miss rate × L2 miss penalty‬‬
‫اگر ‪CPU‬مستقیماً به حافظه ها نیز متصل باشد مي توان فرمول ‪ 3‬را به شكل زير‬
‫نوشت‪:‬‬
‫فرمول ‪:5‬‬
‫‪tave=h1t1+(1-h)h2t2+(1-h1)(1-h2)t3‬‬
‫نگاشت(‪)Mapping‬‬
‫هنگام بروز ‪ miss‬بالك مورد نظر از حافظه اصلي به كش منتقل مي شود بهه ايهن‬
‫عمل نگاشت گويند‪ .‬منظور از بالك تعدادي كلمهه مجهاور در حافظهه اصهلي اسهت‪.‬‬
‫نحوه انتقال بالك از حافظه اصلي به كش‪ 3‬روش عمده دارد‪:‬‬
‫‪-1‬نگاشت مستقیم ‪direct‬‬
‫‪-2‬نگاشت انجمني‪(Fully)associative‬‬
‫‪ -3‬نگاشت شركت پذير مجموعه اي ‪Set associatintive‬‬
‫‪-1‬نگاشت مستقيم‬
‫در اين روش هر بالك از حافظه اصلي به يك مكان مشخص از كش منتقل مي‬
‫شود‪ .‬در واقع اين روش از فرمول زير براي يافتن آدرس بالك دركش استفاده مي‬
‫كند‪:‬‬
‫(تعداد بالك هاي كش) ‪( mod‬آدرس بالك حافظه اصلي)= آدرس بالك كش‬
‫مثال‪ :‬فرض كنید حافظه اصلي داراي ‪64‬كلمه يك بايتي است و حافظه كش‬
‫داراي ‪ 16‬كلمه است‪ .‬هر بالك را يك كلمه فرض مي كنیم ‪.‬به اين ترتیب حافظه‬
‫اصلي داراي ‪64‬بالك و كش شامل‪ 16‬بالك است وبالك با آدرس از حافظه اصلي‬
‫به بالك (‪ )imod16‬از كش منتقل میشود‪:‬‬
‫در اين مثال آدرسي كه پردازنده تولید مي كند ‪ 6‬بیتي است كه ‪4‬بیت سمت‬
‫راست آن (‪ )index‬آدرس كش را مشخص مي كند(مد ‪16‬مي شود ‪4‬بیت سمت‬
‫راست)‪.‬‬
‫و ‪2‬بیت سمت چپ آدرس (‪ )tag‬مشخص میكند آيا ديتاي مورد نظردركش هست‬
‫يا خیر‪.‬در واقع به ازاي هر پالك در كش ‪ tag‬نیز ذخیره مي شود و هر آدرسي كه‬
‫پردازنده مي دهد‪tag ،‬اين ادرس با ‪ tag‬بالكي كه در كش توسط فیلد‬
‫‪index‬مشخص شده‪ ،‬مقايسه مي شود ‪.‬اگر مساوي بود يعني ‪Hit‬و در غیر اين‬
‫صورت يعني ‪miss.‬‬
‫البته هر بالك كش نیاز به يك بیت ‪ Valid‬نیز دارد كه مشخص مي كند ديتاي آن‬
‫بالك معتبر است يا خیر چون ممكن است هیچ ديتايي از حافظه اصلي به آن بالك‬
‫منتقل نشده باشد به شكل زير توجه كنید‪.‬‬
‫با توجه به شكل فوق ‪ ،‬آدرسي كه پردازنده تولید كرده ‪17‬است وچون‬
‫‪ 17mod16=1‬پس بايد در آدرس يك از كش بررسي كنیم كه ‪hit‬يا ‪miss‬وچون در‬
‫آدرس يك ‪tag=01,V=1 ،‬پس يعني ‪. hit‬‬
‫اگر به ازاي يك بالك از كش‪ V=0‬يعني آن بالك معتبر نیست‪.‬‬
‫در اين مثال كل بیت هاي موجود دركش‪ 16×8bit‬ديتا بعالوه ‪tag16×2bit‬بعالوه‬
‫‪ 16×1bit‬بیت ‪ valid‬يعني جمعاً ‪ 16×8+16×2+16×1=176bit‬است‪.‬‬
‫مثال‪ :‬حافظه اصلي و كش را مشابه مثال قبل در نظر بگیريد و اين بار هر بالك را‬
‫شامل ‪4‬كلمه از حافظه اصلي فرض كنید‪.‬پس حافظه داراي ‪ 16‬بالك و كش شامل‬
‫‪ 4‬بالك خواهد بودو بالك از حافظه اصلي به بالك (‪ )i mod4‬از كش منتقل مي‬
‫شود‪.‬‬
‫در شكل فوق فرض كنید‪ ،‬پردازنده آدرس ‪ 17‬را تولید كند(‪ )010001‬دو بیت وسط‬
‫اينادرس مشخص كننده بالك كش(‪ )b0‬است ودو بیت سمت راست مشخص‬
‫كننده كلمه در بالك است ‪ .‬حال اگر‪ V‬در بالك برابر يك باشد و‪ tag‬آن با ‪tag‬‬
‫آدرس تولید شده برابر باشد يعني ‪ hit‬كه در شكل فوق ‪ hit‬رخ داده است و كلمه‬
‫با آدرس ‪ 1‬ازكش كلمه مورد نظر است‪ .‬تعداد كل بیت هاي كش در شكل فوق‬
‫برابر است با‪:‬‬
‫‪140bit =32× 8bit +4× 2bit+4× 1bit‬‬
‫پس هرچه اندازه بالك بزرگتر باشد‪ ،‬تعداد بیت هاي كش كاهش مي يابد‪.‬‬
‫توجه‪ :‬در برخي منابع مثل موريس مانو‪ ،‬به ازاي هر كلمه كش بیت ‪tag ,V,‬‬
‫در‬
‫كه‬
‫است‬
‫شده‬
‫ذخیره‬
‫تست ها چنین نبوده است‪ .‬ما به ازاي هربالك‪ ،‬بیت ‪ tag ,V,‬در نظر مي‬
‫گیريم‪.‬‬
‫نتیجه‪ :‬اگرحافظه اصلي شامل ‪ 2 m‬كلمه ‪ d‬بیتي باشد و حافظه شامل ‪2 c‬‬
‫كلمه و اندازه هر بالك ‪2 W‬كلمه باشد آنگاه فرمت آدرس در نكاشت‬
‫مستقیم عبارت است از‪:‬‬
‫تعداد بالكهاي موجود در كش است پس فیلد ‪block‬برابر بیت است وچون‬
‫تعداد كلمات در هر بالك است اندازه فیلد ‪word‬برابر ‪ w‬بیت است‪.‬در‬
‫برخي سیستم ها فیلد چهارمي به نام ‪ byte offset‬سمت راست فرمت‬
‫آدرس وجود دارد كه مشخص كننده بايد در ‪word‬است‪ .‬مثال ً اگر هر كلمه‬
‫شامل ‪4‬بايت باشد و سیستم بتواند به بايد آدرس دهد‪ 2 ،‬بیت براي‬
‫‪ byteoffset‬بايد در نظر گرفت با توجه به مشخصات گفته شده تعداد كل‬
‫بیت هاي موجود در كش عبارت است از ‪:‬‬
‫مثال‪ :‬يك كش با نگاشت مستقیم با ‪ 64‬كیلو بايت ديتا‪ ،‬با اين فرض كه هر بالك‬
‫يك كلمه و هر كلمه ‪ 4‬بايت باشد كال ً چند بیت است؟ فرض كنید آدرس‬
‫پردازنده ‪32‬بیتي است‪.‬‬
‫است و فیلد ‪ tag‬برابر‬
‫پاسخ‪ :‬تعداد كلمات كش (تعداد بالك كش) برابر‬
‫‪ 32-(14+2)=16‬بیت است پس تعداد كل بیت هاي كش‪:‬‬
‫‪64kByte+16k×16bit+16K×1bit=784bit‬‬
‫مثال‪ :‬يك كش مستقیم داراي ‪ 64‬بالك ‪16‬بايتي است آدرس بايت ‪1200‬به‬
‫كدام بالك از كش نگاشته مي شود؟‬
‫از حافظه اصلي است كه به بالك‬
‫پاسخ‪ :‬آدرس ‪ 1200‬در بالك شماره‬
‫شماره ‪ 75mod64=11‬از كش نگاشته مي شود‪.‬‬
‫مثال‪ :‬یک کش مستقیم شامل ‪ 8‬پالک ‪ 4‬کلمه ای است و پردازنده ازآدرس ‪0‬‬
‫تا ‪ 63‬را ‪ 10‬بار تولید کرده است‪ .‬کش درابتدا خالی است نرخ برخورد‬
‫رامحاسبه کنید‪.‬‬
‫پاسخ‪ :‬ازآدرس ‪ 0‬تا ‪ 31‬کش را پر می کند وازآدرس ‪ 32‬تا ‪ 63‬موجب خروج‬
‫دیتاهای ‪ 0‬تا ‪ 21‬از کش می شوند‪ .‬به ازای هر‪ 4‬آدرس اولی‪ miss‬و ‪ 3‬تای‬
‫بعدی ‪ hit‬است‪ .‬مثال اولین آدرس یعنی صفر ‪ miss‬است ولی ‪1‬و‪2‬و‪him 3‬‬
‫هستند چون هنگام ‪ miss‬مالک شامل کلمات ‪0‬و‪1‬و‪2‬و‪ 3‬سه کش منتقل‬
‫می شود‪ .‬پس ‪h= =%75‬‬
‫مثال‪ :‬درمثال قبل کش شامل ‪ 4‬پالک ‪ 8‬کلمه ای است نرخ برخورد؟‬
‫‪7‬‬
‫‪8‬‬
‫پاسخ‪ :‬ازهر ‪ 8‬آدرس اولی ‪miss‬و‪ 7‬تای بعدی ‪ hit‬است ‪h= = 87/5%‬‬
‫مثال‪ :‬درمقابل قبل کش شامل ‪ 8‬پالک کلمه ای است ‪.‬نرخ برخورد؟‬
‫پاسخ‪ :‬بار اول ‪ 8‬تا ‪ miss‬وجود دارد ولی بار دوم تا دهم‪ miss‬نداریم پس‪:‬‬
‫‪10×64−8‬‬
‫‪=79/80‬‬
‫‪10×64‬‬
‫=‪h‬‬
‫نکته‪ :‬هر چه اندازه بزرگتر باشد(تا یک حدی)‪ .‬از لوکالیتی مکانی بهتر بهره می‬
‫برد ونرخ برخورد افزایش می یابد ولی اگر بالک خیلی بزرگ شودآنگاه تعداد بالک‬
‫های کش کاهش می یابد وممکن است کلمات یک بالک همگی استفاده نشوند‬
‫وبالک ازکش توسط بالک دیگری خارج شود یعنی نرخ برخورد کاهش یابد‪ .‬عیب‬
‫دیگر بالک های بزرگ افزایش هزینه زمانی ‪ miss‬است چون هنگام ‪ miss‬باید یک‬
‫بالک از حافظه به کش منتقل شود که‪ miss penaltv‬افزایش می یابد‪.‬‬
‫‪ -2‬نگاشت ‪( Fully associative‬انجمنی)‬
‫هنگام‪ ،miss‬بالک ازحافظه اصلی به کش منتقل می شود ودرهر بالک ازکش‬
‫ممکن است نگاشته شود یعنی جای مشخصی برای بالک وجود ندارد در واقع‬
‫هرآدرسی که پردازنده تولید می کند‪ ،‬به طور موازی‪ tag‬این آدرس با ‪ tag‬همه‬
‫بالک های کش مقایسه می شود ومشخص می شود ‪ hit‬یا ‪ miss‬در صورت بروز‬
‫‪ .miss‬بالک از حافظه به کش منتقل میشود ودر اولین بالک خالی کش (بالکی‬
‫که ‪ )v=0‬نگاشته می شود‪ .‬اگر بالک خالی درکش وجود نداشت طبق الگوریتم‬
‫های جابجایی مثل ‪ )least recently used( lru‬یک مکان برای بالک مشخص‬
‫می شود‪.‬‬
‫مثال‪ :‬حافظه اصلی ‪ 64×8‬وهر بالک یک بایت وکش شامل ‪ 16‬بالک رافرض کنید‪.‬‬
‫هرآدرسی که پردازنده تولید می کند‪ 6 ،‬بیتی است که درصورت بروز ‪ ،miss‬بالک‬
‫مورد نظر حافظه به کش منتقل می شود ودریک بالک کش به همراه ‪ tag‬که در‬
‫این مثال ‪ 6‬بیتی است ذخیره می شود ‪ .‬در شکل فوق سه آدرس ‪ 20‬و‪10‬و‪9‬‬
‫نشان داده شده است که درکش ذخیره شده اند‪ .‬درواقع تعداد بیت های کل‬
‫کش برابر (‪ 16× )8+6+1‬است‪.‬‬
‫مثال‪ :‬حافظه اصلی ‪ 64×8‬وهر بالک ‪ 4‬بایت وکش شامل ‪ 4‬بالک رافرض کنید‪.‬‬
‫هر آدرس که پردازنده می دهد ‪ 6‬بیتی است که فرمت آن‬
‫‪tag word‬‬
‫است‬
‫فیلد ‪ tag‬که ‪ 2‬بیتی است همزمان با ‪ 4‬تا ‪ tag‬موجود درکش مقایسه می شود‬
‫وباهرکدام مساوی بود یعنی ‪ hit‬فرض کنید پردازنده آدرس ‪ 5‬را تولید می کند‬
‫وکش خالی باشد دراین صورت بالک شامل این آدرس به اولین بالک کش نگاشته‬
‫می شود یعنی کلمات با آدرس ‪4‬و‪5‬و‪6‬و‪ 7‬به کش منتقل می شوند و ‪ tag‬آنها که‬
‫‪ )0001( 2‬است نیز ذخیره می شود( درشکل نشان داده شده است)‬
‫بنابراین دراین روش نگاشت به ازای هربالک کش یک مقایسه کننده الزم است‬
‫که بتوان مقایسه را موازی انجام داد درواقع حافظه این روش بسیار گران است‬
‫وفقط برای کش کوچک مناسب است‪.‬‬
‫‪ -3‬نگاشت ‪ ( Set-Associative‬انجمن مجموعه ای)‬
‫این روش درواقع یک روش میانی دو روش قبلی است ‪ .‬کش به تعدادی ‪ set‬تقسیم می شود وهر ‪set‬‬
‫شامل تعدادی بالک از حافظه اصلی است درنگاشت مستقیم دیدیم که دو بالک با ایندکس مساوی باهم‬
‫درکش حضور نداشتند‪ .‬مثال کشی که ‪ 4‬بالک دارد‪ ،‬بالک های صفر وچهار باهم نمی توانند درکش‬
‫حضور داشته باشند‪ ،‬نگاشت انجمنی مجموعه ای این مشکل را تاحدی برطرف می کند‪ .‬دو روش ‪k-‬‬
‫‪ . way set associative‬هر‪ set‬کش می تواند شامل ‪ k‬بالک از حافظه اصلی باشد‪ .‬این ‪ k‬بالک‬
‫همگی ایندکس یکسان دارند‪.‬‬
‫مثال‪ :‬حافظه اصلی ‪ 64×8‬وکش شامل ‪ 4‬مجموعه (‪ )set‬ونگاشت ‪ 2-way‬وهر بالک حافظه اصلی‬
‫شامل ‪ 4‬کلمه (بایت) رافرض کنید‪:‬‬
‫هر بالک حافظه اصلی شامل ‪ 4‬کلمه (بایت) رافرض کنید‪:‬‬
‫هربالک کش یک فیلد ‪ tag‬وفیلد ‪( v‬در شکل نشان داده نشده) دارد یعنی هر ‪2 set‬‬
‫تا‪ tag‬و‪ 2‬تا ‪v‬است‪ .‬هرآدرسی که پردازنده می دهد ‪ 6‬بیتی است که فرمت آن به‬
‫صورت زیر است‪.‬‬
‫فیلد ‪ set‬مشخص کننده مجموعه درکش است وفیلد ‪ tag‬به طورهمزمان باهر دو‪tag‬‬
‫موجود درآن مجموعه مقایسه می شود وباهرکدام که مساوی بود‪ ،‬بالک داخل‬
‫مجموعه مشخص می شود که باتوجه به فیلد ‪ word‬مشخص می شود کدام‬
‫کلمه در آن بالک‪ ،‬مثال اگر آدرس تولیدی پردازنده ‪ 6=000110‬باشد‪ ،‬باید در ‪set1‬‬
‫جستجو کرد و‪ tag=00‬با هر دو ‪ tag‬مقایسه می شود ودرصورت ‪ ،hit‬فیلد ‪word‬‬
‫که ‪ 10‬است مشخص کننده کلمه مورد نظر در بالک است‪.‬‬
‫نتیجه‪ :‬تعداد کلمات حافظه اصلی ‪ ، 2m‬تعداد کلمات هر بالک ‪ ،2w‬کش درمجموع می‬
‫تواند ‪ 2c‬کلمه از حافظه اصلی رادرخود جای دهد ونگاشت ‪ k-way‬بافرض‪k=2t‬‬
‫رادرنظر بگیرید آنگاه‪:‬‬
‫‪ = =2c-w‬تعداد الکی که درکش جا می شود‬
‫‪ = =2c-w-t‬تعداد ‪ set‬موجود درکش‬
‫فرمت آدرس‪:‬‬
‫توجه‪ :‬ممکن است فیلد ‪byte offset‬نیز سمت راست فرمت آدرس وجود داشته‬
‫باشد‪.‬‬
‫سیاست های نوشتن‬
‫فرض کنید پردازنده درخواست ‪ write‬داده است‪ .‬اگر نوشتن فقط در کش صورت گیرد و حافظه اصلی‬
‫تغییر نکند آن گاه نسخه ای که در حافظه اصلی است با نسخه کش همسان (‪ )consistent‬نیست‪.‬‬
‫یک راه ساده برای همسان کردن حافظه اصلی و کش این است که با هر عمل ‪ write‬دیتا هم به کش و‬
‫هم به حافظه اصلی نوشته شود‪.‬‬
‫این روش را‪ ( write through‬کامل نویسی) می نامیم‪.‬‬
‫فرض کنید پردازنده درخواست ‪ write‬داده است و ‪ miss‬اتفاق افتاده ‪ ،‬اگر هر بالک فقط یک کلمه‬
‫باشد ‪ ،‬الزم نیست بالک از حافظه اصلی به کش منتقل شود و سپس پردازنده در کش بنویسد بلکه‬
‫پردازنده می تواند بالک را از حافظه اصلی به کش منتقل نکند بلکه در مکانی از کش که ‪index‬‬
‫مشخص می کند هم دیتا و هم ‪ tag‬را بنویسد و هم چنین با توجه به آدرس تولید شده ‪ ،‬دیتا را در‬
‫حافظه اصلی نیز بنویسد‪ .‬ولی اگر بالک بیش از یک کلمه باشد حتما موقع ‪ ، miss‬بالک باید از‬
‫حافظه اصلی به کش منتقل شود‪.‬‬
‫به هر حال روش کامل نویسی ‪ ،‬دارای سرعت کمی است و ترافیک باس آن زیاد است‪.‬‬
‫مثال‪:‬‬
‫فرض کنید ‪ %13‬دستورات یک برنامه ‪ store‬هستند‪ .‬اگر ‪ CPI‬بدون ‪ miss‬برابر ‪2/1‬‬
‫باشد و هر ‪ 10 ، write‬سیکل طول بکشد آن گاه ‪ CPI‬نهایی‬
‫‪ 2/1 +10× 13% =5/2‬می شود یعنی کارایی را بیش از ‪ 2‬برابر کاهش می دهد‪.‬‬
‫یک راه حل مشکل کامل نویسی در واقع کاهش زمان توقف ‪ CPU‬به خاطر‬
‫(‪ ، ) write stall‬استفاده از بافر نوشتن ( ‪write‬‬
‫نوشتن در حافظه اصلی‬
‫‪ ) buffer‬است‪.‬‬
‫پس از آن که دیتا در کش نوشته شد در بافر نوشتن ‪ ،‬نوشته می شود و منتظر‬
‫می ماند تا به حافظه اصلی نوشته شود و در این مدت انتظار پردازنده می تواند‬
‫به اجرای دستورات عادی خود ادامه دهد‪.‬‬
‫روش دیگر نوشتن ‪ ( write back‬پس نویسی ) است‪ .‬در این سیاست فقط دیتا‬
‫در کش نوشته می شود و فقط زمانی به حافظه اصلی نیز منتقل می شود که‬
‫بخواهیم بالک مربوطه را از کش خارج کنیم‪ .‬پس در این سیاست هر بالک کش‬
‫نیاز به یک بیت به نام ‪ modify‬یا ‪ dirty‬دارد که مشخص می کند ‪ ،‬آیا بالکی که‬
‫می خواهیم از کش خارج کنیم ‪ ،‬از زمان حضورش در کش تغییر یافته یا خیر‪ .‬پیاده‬
‫سازی پس نویسی از کامل نویسی دشوارتر است چون باید مراقب درخواست‬
‫های ‪ DMA‬نیز باشد زیرا ‪ DMA‬بدون توجه به کش ‪ ،‬حافظه اصلی و ‪ I/O‬را به‬
‫هم ارتباط می دهد در صورتی که حافظه اصلی دارای اطالعاتی قدیمی و به‬
‫صورت روز نشده است‪.‬‬
‫نکته ‪ :‬پس نویسی از کاملنویسی توان کمتری مصرف می کند و پهنای باند کمتری مصرف‬
‫می کند‪.‬‬
‫نکته ‪ :‬ازآن جایی که هنگام نوشتن الزم نیست دیتا در کش باشد دو گزینه هنگام ‪write‬‬
‫‪miss‬وجود دارد‪:‬‬
‫‪: write allocate )1‬یعنی اگردرخواست‪ write‬موجب‪ miss‬شود ‪،‬بالگ به کش منتقل‬
‫می شود‪.‬‬
‫‪ : no write allocate)2‬یعنی اگردرخواست ‪ write‬موجب ‪ miss‬شود ‪ ،‬بالگ از حافظه به‬
‫کش منتقل نمی شود و فقط در حافظه اصلی ‪ ،‬نوشتن انجام می شود‪ .‬این روش در‬
‫سیاست کامل نویسی مناسب است‪.‬‬
‫مثال‪:‬‬
‫فرض کنید کش خالی ‪ Fully associative‬با توجه به ‪ 5‬آدرس داده شده به جدول زیر دقت‬
‫کنید‪.‬‬
‫‪no write allocate‬‬
‫‪write allocate‬‬
‫درخواست‬
‫‪Miss‬‬
‫‪Miss‬‬
‫]‪Write m[100‬‬
‫‪Miss‬‬
‫‪hit‬‬
‫]‪Write m[100‬‬
‫‪Miss‬‬
‫‪Miss‬‬
‫]‪read m[200‬‬
‫‪hit‬‬
‫‪hit‬‬
‫]‪Write m[200‬‬
‫‪Miss‬‬
‫‪hit‬‬
‫]‪Write m[100‬‬
:‫نکاتی از کارایی‬
‫ صرف اجرای‬CPU ‫ کالک سایکلهایی که‬:‫به دو بخش تقسیم می شود‬CPU ‫زمان‬
.‫ برای سیستم حافظه منتظر است‬CPU ‫برنامه می کند و کالک سایکلهایی که‬
‫ هستند بخشی از زمان اجرای‬hit ‫فرض می کنیم هزینه دسترسی به کش که‬
:‫ است‬CPU ‫عادی‬
CPU time=(CPU execution clock cycles + memory stall clock
cycles)×clock cycle time
:‫و داریم‬
memory stall clock cycles = read stall cycles + write stall cycles
‫و‬
read stall cycles = reads/program * read miss rate * read miss
penalty
‫ دو منبع برای‬، ‫ باشد‬write through ‫ اگر سیاست‬، write stall ‫برای محاسبه‬
‫ که وقتی‬buffer write ‫ و دیگری توقف های‬write miss ‫ یکی‬: ‫ وجود دارد‬stall
:‫ پر باشد‬buffer write ، ‫پیش می آید که وقتی درخواست نوشتن باشد‬
write stall cycles =( writes/program*write miss rate*wraite miss
penalty)+write buffer stall
‫اگر ‪ buffer write‬به اندازه کافی بزرگ باشد می توان از‪write buffer stall‬‬
‫صرف نظر کرد که در این صورت جریمه ‪ miss‬برای خواندن و نوشتن یکسان می‬
‫شود که همان زمان واکشی بالک از حافظه است و بنابراین فرمول عبارت است‬
‫از ‪:‬‬
‫‪memory stall clock cycles = memory accesses/program*miss‬‬
‫‪rate*miss penalty‬‬
‫که می توان این فرمول را به شکل مقابل نوشت‪:‬‬
‫‪memory stall clock cycles = instructions*misses/program *miss penalty‬‬
‫‪instructions‬‬
‫مثال‪:‬‬
‫فرض کنید نرخ نقصان دستورات ‪ 2‬درصد ‪ ،‬نرخ نقصان دیتا درصد و ‪ CPI‬بدون‪ miss‬برابر ‪ 2‬و‬
‫جریمه ‪ miss‬برابر ‪ 40‬سیکل باششد ‪ ،‬اگر ‪ 36‬درصد کل دستورات ‪ load‬و ‪ store‬باشد ‪،‬‬
‫سرعت ماشین چند برابر می شود اگر اصال ‪ miss‬وجود نداشته باشد؟‬
‫پاسخ‪:‬‬
‫اگر تعداد دستورات ‪ I‬فرض شود ‪:‬‬
‫‪Instructions miss cycles = I*0.02 * 40 = 0.8 I‬‬
‫‪Data miss cycles = I*0.36* 0.04 * 40 = 0.56 I‬‬
‫دقت کنید که فقط ‪ 36‬درصد دستورات سراغ حافظه دیتا می روند ‪ .‬در نتیجه‪:‬‬
‫‪Total number of memory stall cycles= 0.8 I+0.56 I=1/36I‬‬
‫بنا براین ‪ CPI‬با توجه به ‪ stall‬ها برابر ‪ 2+36/1=36/3‬است پس ‪:‬‬
‫𝑬𝑳𝑪𝒀𝑪 𝑲𝑪𝑶𝑳𝑪 𝑳𝑳𝑨𝑻𝑺𝑰𝑷𝑪 ∗𝒊‬
‫𝑬𝑳𝑪𝒀𝑪 𝑲𝑪𝑶𝑳𝑪∗ 𝑻𝑪𝑬𝑭𝑹𝑬𝑷𝑰𝑷𝑪 ∗𝑰‬
‫=‬
‫𝐥𝐥𝐚𝐭𝐬 𝐡𝐭𝐢𝐰 𝐞𝐦𝐢𝐭 𝐔𝐏𝐂‬
‫𝐞𝐡𝐜𝐚𝐜 𝐭𝐜𝐞𝐟𝐫𝐞𝐩 𝐡𝐭𝐢𝐰 𝐞𝐦𝐢𝐭 𝐔𝐏𝐂‬
‫‪=1/68‬‬
‫=‪Seed up‬‬
‫𝟔𝟑‪𝟑/‬‬
‫𝟐‬
‫𝑳𝑳𝑨𝑻𝑺𝑰𝑷𝑪‬
‫𝑻𝑪𝑬𝑭𝑹𝑬𝑷𝑰𝑷𝑪‬
‫مثال‪:‬‬
‫فرض کنید ‪ ( CPI bass =1‬اگر همه درخواست ها به کش ‪ hit ، l1‬باشد )‪ .‬نرخ‬
‫کالک ‪ .500 MH z‬زمان دسترسی حافظه اصلی ‪ .200ns‬نرخ نقصان دستورات در‬
‫کش ‪ l1‬برابر ‪ . %5‬ماشین چند برابر سریع می شود اگر از یک کش ‪ l2‬که زمان‬
‫دسترسی ‪ 20ns‬دارد استفاده کنیم ‪ .‬در ضمن در این صورت نرخ نقصان به حافظه‬
‫اصلی به ‪ %2‬کاهش می یابد‪.‬‬
‫پاسخ‪:‬‬
‫‪Clock rate = 500MH z‬‬
‫‪= 100clock cycles‬‬
‫‪clock cycle time = 2 ns‬‬
‫𝑠𝑛‪200‬‬
‫𝑠𝑛‬
‫𝑠𝑛‬
‫𝑠𝑒𝑙𝑐𝑦𝑐 𝑘𝑐𝑜𝑙𝑐‪2‬‬
‫= ‪miss penalty‬‬
‫‪clock cycles‬‬
‫‪ CPI = CPIbass + Mem stall cycles per instruction‬بدون کش ‪l2‬‬
‫‪= 1+ 0.05 *100 = 6‬‬
‫با وجود کش ‪ ، l2‬عدم برخورد کش ‪ l1‬ممکن است در ‪ l2‬یا حافظه اصلی موفق‬
‫‪20‬‬
‫باشد ‪ .‬جریمه ‪ miss‬کش ‪ l2‬برابر‪ =10‬کالک سایکل است‪:‬‬
‫‪2‬‬
‫‪2‬‬
‫‪ CPI = stall per instruction 1+l2+Mem stall per instruction‬با کش ‪l2‬‬
‫‪= 1 + 0.05* 10 + 0.02* 100 = 5/3‬‬
‫بنابراین سرعت ‪=7/1‬‬
‫‪6‬‬
‫‪3/5‬‬
‫برابر می شود‪.‬‬
‫پهنای باند حافظه‬
‫برابر است با تعداد کلمه ای که می توان در ثانیه( از ‪ /‬به حافظه) منتقل کرد‪ .‬مثال َ‬
‫اگر کالک باس ‪ 500MHz‬باشد و عرض باس ‪32 bit‬و در هر کالک یک دسترسی‬
‫به حافظه داشته باشیم و در هر دسترسی بتوانیم ‪ 4‬بایت از حافظه بخوانیم یا‬
‫بنویسیم در این صورت پهنای باند(‪ )BW‬برابر است با‪:‬‬
‫(توجه کنید ‪ 500MHz‬معادل 𝑠𝑛‪ 2‬است‪).‬‬
‫‪2GByte‬‬
‫‪s‬‬
‫=‬
‫𝑒𝑡𝑦𝑏‪4‬‬
‫‪2ns‬‬
‫×‪BW=1‬‬
‫حافظه انجمنی (‪)Associative Memory‬‬
‫این حافظه ساختاری دارد که برای ذخیره جداولی که در آینده عناصر آن ها قابل‬
‫جستجو می باشند به کار می رود‪ .‬در این نوع حافظه به جای آدرس ورودی برای‬
‫دسترسی به عناصر حافظه‪ ،‬خود محتوی مکان حافظه برای دسترسی استفاده می‬
‫گردد‪ .‬این نوع حافظه عالوه بر حافظه انجمنی‪« ،‬حافظه قابل دسترسی توسط‬
‫محتوی» ( ‪ )Content Access Memory-CAM‬نیز نامیده می شود‪ .‬نوشتن در این‬
‫حافظه نیاز به آدرس ندارد و خود حافظه ساختاری دارد که داده ورودی را در اولین‬
‫مکان خالی حافظه وارد می نماید و خواندن از این حافظه نیز با تصدیق یک کلمه‬
‫ورودی (یا بخشی از آن) با کلیه کلمات مکان های حافظه (یا بخشی از آنها) صورت‬
‫می پذیرد و مکان هایی از حافظه که مطابق کلمه ورودی باشد برای خواندن مشخص‬
‫می شوند‪ .‬یک حافظه ‪ CAM‬عالوه بر داشتن سلول های ذخیره بیت‪ ،‬مانند حافظه‬
‫های ‪ RAM‬دارای مدارات منطقی تطبیق نیز می باشد‪ .‬شمای کلی یک حافظه‬
‫‪ CAM‬در شکل(‪ )10‬آمده است‪ .‬در این حافظه ‪ m‬کلمه ‪ n‬بیتی وجود دارد‪ ،‬در این‬
‫حافظه عالوه بر خطوط کنترلی خواندن و نوشتن و خطوط داده ورودی و خروجی‪،‬‬
‫ورودی دیگر نیز وجود دارد‪ .‬این ورودی کلمه ای است که می باید با تک تک کلمات‬
‫حافظه مقایسه شود‪ .‬این کلمه در ثباتی با نام «ثبات آرگومان» قرار داد‪ .‬ثبات دیگری‬
‫نیز وجود دارد که عمل ماسک نمودن مقایسه بعضی بیت ها را انجام می دهد که به‬
‫«ثبات کلید» معروف است‪ .‬بدین معنی که مقایسه تنها در مورد بیت هایی صورت می‬
‫پذیرد که متناظر با آنها در ثبات کلید‪ ،‬بیت یک وجود داشته باشد‪ .‬بعد از مقایسه‪ ،‬در‬
‫ثبات سازگاری ‪ ،M‬بیت متناظر هر کلمه یا ردیف که با کلمه ورودی مطابق باشد یکی‬
‫شود و در صورت عدم تطابق کامل‪ ،‬بیت مربوطه صفر می گردد‪.‬‬
‫به طور کلی امکانات یک حافظه شرکت پذیری را می توان به صورت زیر خالصه‬
‫کرد‪.‬‬
‫‪-1‬خواندن کلمه ای از حافظه‬
‫‪-2‬نوشتن در کلمه ای از حافظه‬
‫‪-3‬یافتن کلمه یا کلماتی که حاوی داده بخصوصی هستند‪.‬‬
‫‪ -4‬نوشتن همزمان در کلمه یا کلماتی که حاوی داده بخصوصی هستند‪.‬‬
‫(‪ : Argument register )A‬ثبات آرگومان مورد جستجو‬
‫(‪ : Key register )K‬ثبات کلید که نشان دهنده بیتهایی از ثبات آرگومان است که‬
‫باید به عنوان کلید جستجو مورد استفاده قرار گیرد‪.‬‬
‫‪ : Match register‬پس از عمل جستجو و مقایسه همزمان محتویات ثبات‬
‫آرگومان با تمامی کلمات حافظه در صورتی که در مورد هر کدام از کلماتی‬
‫تطبیقی صورت گرفت بیت متناظر آن در این ثبات یک می شود‪.‬‬
‫مثال زیر چگونگی یک جستجو را در این نوع حافظه نشان می دهد‪.‬‬
‫شکل(‪ )11‬نیز سخت افزار مربوط به یک سلول ‪ CAM‬را نشان می دهد این تک‬
‫سلول دارای مدار منطقی برای تطابق بیت ها می باشد که سه ورودی ‪ K ، A‬و ‪F‬‬
‫دارد‪ F .‬بیت ذخیره شده (از یک کلمه حافظه)‪ A ،‬یک بیت از کلمه ورودی و ‪ K‬نیز‬
‫بیت مربوط به عمل ماسک می باشد‪ .‬این بیت در صورت صفر بودن‪ ،‬عمل‬
‫مقایسه را غیرفعال می کند به صورتی که مقایسه بیت های متناظر از کلمه‬
‫ورودی و کلمه موجود در حافظه در نتیجه مقایسه اثری ندارد و در صورت یک بودن‬
‫بیت یاد شده عمل مقایسه ‪ F‬و ‪ A‬انجام می گیرد و اگر یکسان باشند خروجی‬
‫مدار(‪ )M‬یک خواهد بود‪.‬‬
‫برای کلمه حافظه در ‪ ،CAM‬خروجی ‪ M‬از هر سلول تشکیل دهنده کلمه حافظه‬
‫با یکدیگر ‪ AND‬می شوند تا خروجی نهایی حاصل از تطبیق یک ردیف را تولید‬
‫نمایند‪.‬‬
‫به ازای‪ .j=2،1،...،n‬دو بیت در‬
‫کلمه ‪ i‬با آرگومان ‪ A‬مساوی است اگر‬
‫صورتی مساوی هستند که یا هر دو صفر یا یک باشند‪ ،‬پس تساوی دو‬
‫نشان داد‪ ،‬که می باشد فقط‬
‫بیت را می توان با تابع منطقی‬
‫در صورتی که جفت بیت موقعیت ‪ j‬مساوی باشند‪ .‬ولی همانطور که گفته‬
‫شد‪ .‬دو بیت و فقط در صورتی مقایسه می شوند که بیت متناظر در‬
‫مقایسه انجام نمی شود از‬
‫ثبات کلید یعنی برابر ‪ 1‬باشد و اگر‬
‫طرفی برای آنکه کلمه ‪i‬ام با آرگومان ‪ A‬مساوی باشد باید بیت هایی که‬
‫متناظرشان در ثبات کلید ‪ K‬یک است‪ ،‬مساوی باشد‪ ،‬پس می توان‬
‫نوشت‪:‬‬
‫یعنی می توان نوشت‪:‬‬
‫یعنی بیت ‪ i‬هم ثبات ‪ M‬فقط در صورتی یک می شود که با ازای هر بیت یا‬
‫باشد و یا در غیر این صورت‬
‫مدار برای انطباق یک کلمه در شکل(‪ )12‬نشان داده شده است‪.‬‬
‫با توجه به شکل مشخص است که اگر بیت های ثبات ‪ k‬تماما صفر باشند در این صورت خروجی 𝑖𝑀‬
‫بدون توجه به ‪ A‬یک می شود‪.‬‬
‫عمل خواندن‬
‫با اعمال کلمه مورد جستجو به حافظه‪ ،‬خروجی مربوط به مکانی از حافظه که با کلمه ورودی یا‬
‫بخشی از آن یکسان است یک می گردد و البته اگر چند مکان حافظه این خاصیت را داشته باشند‪،‬‬
‫چندین خروجی ممکن است یک شوند و کلماتی که خروجی تطابق آنها یک باشد‪ ،‬خوانده می شوند‪،‬‬
‫البته در صورتی که خروجی ‪ M‬به ورودی کنترلی خواندن حافظه وصل شود‪ ،‬با پیدا کردن عنصری‬
‫خاص همزمان خواندن آن نیز انجام می گیرد با شرط اینکه این تطابق تنها در مورد یک ردیف یا کلمه‬
‫حافظه وجود داشته باشد‪.‬‬
‫سازمان حافظه ‪:‬‬
‫واحد حافظه هر کامپیوتر دیجیتالی یکی از بخش های اصلی این واحد است زیرا‬
‫برای ذخیره برنامه ها و داده ها مورد استفاده قرار می گیرد ‪ .‬ظرفیت کل هر‬
‫کامپیوتر را می توان به صورت یک سیستم سلسله مراتبی از اجزا تصور کرد که‬
‫شامل چند سطح حافظه با سرعت و اندازه متفاوت است ‪.‬هرچه حافظه به‬
‫‪ cpu‬نزدیکتر باشد‪،‬سرعت و هزینه تولید آن بیشتر است و ظرفیت آن کمتر‬
‫‪.‬نزدیکترین حافظه به ‪، cpu‬حافظه نهان است که زمان دسترسی به آن با‬
‫پریود کالک پردازنده برابر است‪.‬سطح بعدی حافظه ‪،‬حافظه اصلی است‪.‬وقتی‬
‫برنامه ای قرار است اجرا شود از حافظه جانبی به حافظه اصلی منتقل میشود‬
‫‪.‬حافظه جانبی شامل همه اطالعاتی است که در یک سیستم ذخیره شده است‬
‫شکل ‪ 2‬بلوک دیاگرام سلسله مراتب حافظه نشان میدهد‪.‬در واقع اصل محلی‬
‫بودن مراجعات(‪ )locality of refe rences‬است‪.‬که وجود سلسله مراتب‬
‫حافظه را توجیه میکند به این معنی که برنامه ها تمایل دارند در هر زمان فقط‬
‫به قسمت کوچکی از فضای آدرسشان دسترسی یابند‪.‬دو نوع لوکالیتی وجود‬
‫دارد ‪.1‬زمانی(‪:)temporal‬یعنی اگر به یک آیتم رجوع شد احتماال مجددا به آن‬
‫رجوع خواهد شد(مثل حلقه ها) ‪.2‬مکانی(‪:)spatial‬اگر به یک آیتم رجوع شود‬
‫به آیتم های مجاورش نیز رجوع خواهد شد‪(.‬مثل آرایه ها یا دستورات پشت سر‬
‫هم)‪.‬‬
‫حافظه کمکی‬
‫نوار مغناطیسی‬
‫پردازنده ‪I/O‬‬
‫حافظه اصلی‬
‫دیسک مغناطیسی‬
‫‪CACHE‬‬
‫حافظه نهان‬
‫‪CPU‬‬
‫*‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫در طراحی واحد حافظه ‪ 3‬پرسش مطرح است ‪:‬‬
‫*‬
‫ظرفیت چقدر است ؟‬
‫سرعت چقدر است ؟‬
‫هزینه چقدر است ؟‬
‫حافظه های سریع دارای قیمت بیشتر و اندازه کوچکتر هستند و حافظه های کند‬
‫تر دارای حجم بیشتر و ارزان تر می باشند ‪.‬‬
‫حافظه اصلی‪:‬‬
‫معموال حافظه اصلی ‪ RAM،‬است ولی می تواند شامل ‪ ROM‬نیز باشند ‪.‬‬
‫‪ RAM‬حافظه ای است با دستیابی تصادفی یعنی دسترسی به همه مکانهای آن‬
‫با یک زمان ثابت انجام می شود ‪ .‬این حافظه خواندنی – نوشتنی است ‪ RAM‬فرار‬
‫است ‪.‬یعنی اطالعات را تا مدت زمانی که توان الکتریکی به آن اعمال شود حفظ‬
‫می کند ‪.‬‬
‫‪RAM‬را به دو صورت می توان ساخت ‪:‬‬
‫‪SRAM = Static RAM‬‬
‫‪DRAM = Dynamic RAM‬‬
‫در ساخت ‪ SRAM‬بیت ها در فیلیپ فالپ ذخیره می شوند و سرعت و هزینه شان از‬
‫‪DRAM‬بیشتر است‪.‬‬
‫در ‪ DRAM‬بیت ها در خازن ها شارژ می شوند و هر سلول حافظه یک خازن است و‬
‫چون خازن به مرور زمان دشارژ می شود لذا باید ریفرش )‪ (Refresh‬گردد ‪.‬‬
‫توان مصرفی در ‪ DRAM‬کمتر است و ظرفیت آن از ‪ SRAM‬بیشتر است ‪.‬‬
‫حافظه ‪ Rom‬حافظه ای است فقط با قابلیت خواندن و اطالعات آن دائمی‬
‫هستند‪.‬دست یابی به این حافظه مانند ‪ Ram‬تصادفی است‪.‬‬
‫‪1.‬‬
‫‪2.‬‬
‫تراشه های ‪ ROM‬و ‪: RAM‬‬
‫‪ .‬شکل ‪ 3-‬یک ‪RAM ،128*8‬را نشان می دهد‪.‬یک تراشه ‪ RAM‬باید دارای خطوط داده‬
‫‪2‬طرفه و آدرس یک طرفه و همچنین خطوط کنترلی باشد‪.‬‬
‫برای اینکه عمل خواندن یا نوشتن باید‪CS =1‬ب شود در اینصورت ‪ RD=1‬یعنی خواندن‬
‫انجام شود‬
‫و ‪ WR=1‬یعنی نوشتن ‪.‬‬
‫اگر ‪ WR=RD=0‬یا اگر ‪ CS=0‬باشد آنگاه خطوط داده همگی در حالت ‪ Hi-Z‬هستند و‬
‫هیچ سیگنالی از تراشه عبور نمی کند‪.‬‬
‫خطوط ‪ Write‬و ‪ Read‬می تواند یک خط باشند در اینصورت فرمان آن به اینصورت‬
‫نوشته می شود ‪.)RD/WR(.‬اگر این یک بود یعنی خواندن و اگر صفر بود یعنی نوشتن‬
‫‪CS‬‬
‫‪8 bit‬‬
‫‪RD‬‬
‫‪128 * 8‬‬
‫‪WR‬‬
‫داده‬
‫شکل _‪3‬‬
‫‪ADD‬‬
‫‪7bit‬‬
‫حال فرض کنید می خواهیم با کمک تراشه شکل ‪ 4‬یک حافظه به اندازه ‪ 512*8‬بسازیم‪.‬برای این منظور به ‪4‬‬
‫) باشد‪.‬به هر تراشه ‪7‬خط کم‬
‫تراشه نیاز داریم و کل خطوط آدرس پردازنده باید حداقل ‪ 9‬خط (‬
‫برای انتخاب تراشه ها استفاده میکنیم‪.‬شکل‬
‫) و از‬
‫ارزش آدرس را متصل میکنیم( ‪A6‬‬
‫‪ 4‬نحوه ساخت حافظه ‪ 512*8‬با حافظه های ‪ 128*8‬را نشان میدهد‪.‬‬
‫‪D7-D°‬‬
‫‪RAMI‬‬
‫‪CS‬‬
‫‪RD‬‬
‫‪WR‬‬
‫‪ADD‬‬
‫‪WR‬‬
‫‪Cpu‬‬
‫‪A8 A7 A6……………….Ao RD‬‬
‫در‬
‫باشد‪.‬پس آدرس های‬
‫با توجه به شکل ‪ RAM 1،4‬وقتی فعال میشود که‬
‫باشد‪.‬پس‬
‫‪ RAM1‬هستند‪.‬به همین ترتیب ‪ RAM2‬وقتی فعال می شود که‬
‫آدرس های‪ 128-255‬در ‪ RAM2‬قرار دارند‪.‬به ساخت حافظه بزرگ با تراشه کوچک را‬
‫اصطالحا برگ برگ سازی (‪ )INTERLEAVING‬می نامند‪.‬اگر برای انتخاب تراشه ها از‬
‫بیت های با ارزش آدرس استفاده شود(شکل‪)4‬به آن برگ برگ سازی با مرتبه باال می‬
‫نامند‪.‬‬
‫پردازنده‬
‫شکل _‪2‬‬
‫حافظه نهان باال ترین سطح حافظه سلسله مراتبی است ‪ .‬در شکل – ‪ 1‬ارتباط بین‬
‫حافظه نهان و حافظه اصلی و ‪ CPU‬نشان داده شده است می دانیم ‪ Cache‬شامل‬
‫یک کپی از بخش هایی از حافظه اصلی است ‪ .‬هنگامیکه ‪CPU‬برای خواندن کلمه ای‬
‫از حافظه ‪ ،‬پوشش می کند ‪.‬‬
‫ابتدا وضعیت را بررسی می کند تا ببیند این کلمه در ‪ Cache‬قرار دارد یا خیر ‪.‬‬
‫اگر چنین باشد کلمه به ‪ CPU‬تحویل داده می شود در غیر اینصورت بلوکی از حافظه‬
‫آورده می شود و آنگاه کلمه مورد ‪Cache‬شامل تعداد ثتی کلمه خوانده شده و به‬
‫نیاز به ‪ CPU‬تحویل می شود ‪.‬‬
‫زمان دستیابی ‪ :‬زمان متوسط الزم برای رسیدن به یک مکان ذخیره سازی در حافظه و دریافت محتوای‬
‫آن ‪.‬‬
‫حافظه نهان ‪(Cache):‬‬
‫‪CPU‬‬
‫‪CACHE‬‬
‫شکل ‪1 -‬‬
‫حافظه اصلی‬
‫واحد انتقال‪:‬کلمه‬
‫واحد انتقال‪:‬بلوک‬
‫دسترسی به سطوح مختلف حافظه ‪:‬‬
‫در سیستم های حافظه سلسه مراتبی تمامی داده های ذخیره شده در حافظه های‬
‫سطوح باالتر در حافظه های سطح پایین ذخیره شدند ‪.‬‬
‫هرچه حافظه از ‪ CPU‬دورتر باشد سطح آن پایین تر و زمان دسترسی به آن طوالنی تر‬
‫خواهد بود ‪ .‬در یک حافظه سلسه مراتبی که شامل چند سطح است در یک زمان داده‬
‫ها بین دو سطح مجاور کپی گردند ‪.‬‬
‫مینیمم واحد اطالعات که می تواند در دو سطح مجاور حضور داشته باشد را بالک می‬
‫نامند ‪.‬‬
‫شکل – ‪ 5‬بالک های اطالعاتی ذخیره شده در دو سطح مجاور حافظه را نشان می‬
‫دهد ‪.‬‬
‫اگر ‪ CPU‬داده ای را در خواست کند و این داده در بلوکی از حافظه سطح باال )‪(Cache‬‬
‫باشد آنرا ‪Hit‬می نامند ‪.‬‬
‫اگر داده ی در خواستی در حافظه سطح باال وجود نداشته باشد مسلما در‬
‫حافظه‬
‫اصلی که در آن صورت آنرا ‪ Miss‬می نامند ‪.‬‬
‫نسبت تعداد ‪ Hit‬ها تقسیم بر تعداد کل ارجاعات ‪ Cpu‬به حافظه )‪ (Hit + Miss‬را‬
‫نسبت ‪ Hit‬می نامند ‪.‬‬
‫در صد دسترسی نا موفق به حافظه سطح باال را نسبت ‪ Miss‬می نامند ‪.‬‬
‫اگر فرض کنیم زمان دسترسی به حافطه اصلی‪Tm‬‬
‫و زمان دسترسی به ‪ cache‬برابر ‪tc‬و نرخ برخورد ‪ h‬باشد و زمان دسترسی‬
‫متوسط ‪ tave‬باشد‪tave ،‬برابر است با ‪tave=htc+c1(1-h)Tm‬‬
‫با این فرض که‬
‫حافظه می تواند مستقیما به ‪ cpu‬داده بدهد‪.‬اما اگر حافظه اصلی مستقیما به‬
‫‪ cpu‬داده ندهد آنگاه زمان متوسط دسترسی برابر است با‪:‬‬
‫شکل ‪5‬‬
‫حافظه‬
‫اصلی‬
‫‪tave=tc+c1(1-h)Tm‬‬
‫‪cache‬‬
‫‪cpu‬‬
‫مشخصه اصلی حافظه ‪ Cache‬زمان دستیابی سریع آن است ‪ .‬انتقال داده از حافظه‬
‫اصلی به حافظه ‪ Cache‬را بر آیند نگاشت به هنگام بررسی سازمان حافظه ‪Cache‬‬
‫مورد توجه قرار می گیرد ‪.‬‬
‫‪ .1‬نگاشت انجمنی‬
‫‪ .2‬نگاشت مستقیم‬
‫‪ .3‬نگاشت انجمن – مجموعه ای‬
‫برای درک بهتر این روشها از مثال خاصی برای سازمان حافظه از شکل – ‪ 6‬استفاده می کنیم ‪.‬‬
‫حافظه اصلی می تواند ‪ 32K‬کلمه ‪ 12‬بیتی را ذخیره کند ‪ .‬برای هر کلمه که در ‪ Cache‬ذخیره‬
‫شود یک نسخه کپی در حافظه اصلی وجود دارد‪.‬‬
‫‪ CPU‬با هر دو حافظه ارتباط دارد ابتدا آدرس ‪ 15‬بیتی را به حافظه ‪ Cache‬ارسال می کنیم‬
‫* اگر ‪ HIT‬صورت گیرد ‪ CPU‬داده ‪ 12‬بیتی را از ‪ Cache‬می پذیرد‪.‬‬
‫* اگر ‪ MISS‬صورت گیرد ‪ CPU‬کلمه را از حافظه اصلی می خواند و سپس آن کلمه را به حافظه‬
‫‪ CACHE‬منتقل می کند‪.‬‬
‫حافظه اصلی‬
‫‪CPU‬‬
‫‪CACHE‬‬
‫‪512*12‬‬
‫‪32K*12‬‬
‫نگاشت مستقیم‪:‬در این روش هر بلوک از حافظه اصلی به یک مکان مشخص از‬
‫‪ cache‬منتقل می شود‪..‬‬
‫این روش از فرمول زیر برای یافتن آدرس بلوک در کش استفاده می کند‪.‬‬
‫(تعداد بلوک های ‪(mod) Cache‬آدرس بلوک حافظه اصلی)=آدرس بلوک‬
‫‪cache‬‬
‫نگاشت انجمنی‪:‬هنگام ‪ miss‬بلوک از حافظه اصلی به ‪ cache‬منتقل می شود و‬
‫در هر بلوک از کش ممکن است نگاشته شود‪،‬یعنی جای مشخص برای بلوک‬
‫وجود ندارد‪.‬در واقع هر آدرسی که پردازنده تولید می کند به طور موازی ‪tag‬‬
‫این آدرس با ‪ tag‬همه بلوک های ‪ cache‬مقایسه می شود و ‪miss‬یا‪hit‬‬
‫مشخص می شود‪.‬در صورت بروز ‪ miss‬بلوک ازحافظه به کش منتقل می شود‬
‫و در اولین بلوک خالی کش(بلوکی که ‪ v=0‬است) نگاشته می شود‪.‬اگر بلوک‬
‫خالی در کش وجود نداشته باشد طبق الگوریتم جا بجایی ‪ LRN‬یک مکان‬
‫برای بلوک مشخص می شود‪.‬‬
‫نگاشت انجمنی مجموعه‪:‬این روش یک روش میانی دو روش قبلی است‪.‬کش به‬
‫تعدادی ‪ set‬تقسیم می شود و هر ‪ set‬شامل تعدادی بلوک از حافظه اصلی‬
‫است‪.‬در این روش هر ‪ set‬کش میتواند شامل‪ k‬بلوک از حافظه اصلی باشد‬
‫این ‪k‬بلوک همگی ایندکس یکسان دارند‪.‬‬
‫علم و علم اندوزی در آئینه قرآن‪:‬‬
‫در قرآن کریم شواهد و نمونه های زیادی دا ّل بر فضیلت علم و علم آموزی وجود‬
‫دارد از آن جمله‪ :‬یرْ ف ِع هللاُ الَّ ِذیْن آم ُنوا ِم ْنکُ ْم و الَّ ِذیْن أُو ُتوا ال ِع ْلم درجات‪ .‬یعنی‬
‫خداوند کسانی از شما را که ایمان آورده اند باال میبرد و بر کسانیکه بهره ای از‬
‫علم دارند درجات بزرگی میبخشد‪ .‬سوره مجادله آیه ی ‪.11‬ابن عباس در تفسیر‬
‫این آیه فرموده است‪ :‬علمای عاملین نسبت به سایر مؤمنان عامی هفتصد درجه‬
‫برتری دارند‪ ،‬که فاصله هر درجه نسبت به درجه دیگر‪ ،‬پانصد قدم راه است‪ .‬و‬
‫باز خداوند متعال در سوره زمر آیه ‪ 9‬میفرماید‪ :‬قُ ْل ه ْل یسْ ت ِوی الَّ ِذیْن یعْ لم ُْون و‬
‫الَّ ِذین الیعْ لم ُْون یعنی بگو آیا کسانیکه میدانند و کسانیکه نمیدانند مساوی هستند؟‬
‫هرگز‪ .‬باز میفرماید‪ِ :‬ا َّنما ی ْخشی هللا ِمنْ ِعبا ِد ِه العُلما ُء‪ .‬یعنی و تنها بندگان دانا و‬
‫دانشمند از خدا‪ ،‬ترس آمیخته با تعظیم دارند‪ .‬سوره فاطر آیه ‪ .28‬باز میفرماید‪ :‬و‬
‫اس و ما یعْ قِلُها ِاال العالِم ُْون‪ .‬یعنی اینها مثالهایی هستند که‬
‫ِت ْلک األ ْمثا ُل نضْ ِربُها لِل َّن ِ‬
‫ما برای مردم میزنیم و جز فرزانگان‪ ،‬آنها را فهم نمیکنند و ِسوای خردمندان از‬
‫آنها عبرت نمیگیرند و درس زندگی نمیآموزند‪ .‬سوره عنکبوت آیه ‪.43‬‬