تالار گفتمان مانشت
اموزش معماری توسط اعضا مانشت - نسخه‌ی قابل چاپ

صفحه‌ها: ۱ ۲ ۳ ۴
کلاس اموزش معماری توسط خودم - csharpisatechnology - 19 آذر ۱۳۹۱ ۰۳:۱۱ ب.ظ

نکات ایجاد گذرگاه با استفاده از بافرهای سه حالته(ص ۱۰۲ مانو):
برای ایجاد bus مشترک(نه اختصاصی)، برای چهار ثبات n بیتی ، با استفاده از بافرهای سه حالته نیاز به n مدار داریم که هر کدام ۴ بافر سه حالته دارند. برای انتخاب بین ۴ ثبات هم فقط یک دیکودر(رمزگشای) ۲ به ۴ نیاز است که هر خروجی دیکودر را به enable بافرهایی وصل می کنیم که بیت های هر ثبات را از خود عبور می دهند.

اینم مثالی از ساخت باس مشترک با استفاده از بافر سه حالته :
[تصویر:  147967_1_1379087281.gif]
===
نکته ای از ساخت باس مشترک با استفاده از مالتی پلکسر:
برای ساخت یک سیستم گذرگاه مشترک که دارای ۱۶ ثبات ۳۲ بیتی است به چند mux نیاز است ؟
حل : ۳۲ ماکس ۱۶ در ۱ ،(نکته : ماکس شماره ی صفر ، بیت های صفر همه ی ثبات ها و ماکس شماره ی ۳۱ بیت های شماره ی ۳۱ همه ی ثبات ها را از ورودی می گیرد)
==
فعلا درس رو ادامه نمیدم تا ببینم تشویق ها زیاد میشن یا نه.
اگه استقبال کنید ادامه خواهم داد و نکات مهم دیگه ای رو که تو دفترم نوشتم سعی میکنم در صورت امکان اینجا بذارم.

نکته ای از سر ریز در شیفت ریاضی - csharpisatechnology - 19 آذر ۱۳۹۱ ۰۴:۴۶ ب.ظ

نکته : اگر در شیفت ریاضی(همون حسابی یا محاسباتی)،به چپ یا راست،بیت علامت تغییر کنه سرریز داریم(V=1)
برای تشخیص سرریز هم کافیه دو بیت سمت چپ رو xor کنیم و بریزیم توی V .
اگر v=1 شد سرریز رخ داده و باید بیت علامت(سمت چپ ترین بیت رو به حالت اولیه برگردونیم):
مثال :
[تصویر:  147989_1_1379087281.jpg]

متاسفانه دوستان زیاد استقبال نمی کنن و سپاس رو نمی زنن. فعلا cancel می کنم و تا ساعات آینده بحث رو ادامه می دم تا تشکرها زیاد بشه.

RE: کلاس اموزش معماری توسط خودم - csharpisatechnology - 20 آذر ۱۳۹۱ ۰۴:۲۲ ب.ظ

نکته ای از CDR مربوط به فصل ۸ کنترل ریزبرنامه نویسی شده:
فایل CDR.z رو از پیوست دانلود کنیدشامل توضیحاتی هست که جمع آوری کردم.
اگه هم لینک خراب بود از اینجا بگیرید:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

===

دوستانی که سپاس رو می زنن در صورت بروز رسانی این بخش بهشون از طریق پی ام اطلاع رسانی خواهد شد.

کلاس اموزش معماری توسط خودم - csharpisatechnology - 20 آذر ۱۳۹۱ ۰۶:۵۵ ب.ظ

نکته : هر تابع با n ورودی و m خروجی را می توان با یک کدگشا (decoder)ی ۱ به (۲ به توان n) و m عدد گیت or ساخت.
یعنی به تعداد خروجی های تابع، OR خواهیم داشت.
مثال:
[تصویر:  148220_1_1379087221.gif]
منبع :جزوه دانشگاه شاهرود_ص ۱۲
==
مثالی از کاربرد کدگذار (encoder) :
یافتن آدرس وقفه های مختلفی که به پردازنده ای فرستاده می شود.
[تصویر:  148220_2_1379087221.gif]
دیگر نیاز نیست برای هر وسیله که وقفه نیاز دارد خطوط جداگانه برای آدرس ایجاد کنیم.
مشکل ۱ : اگر همزمان دو ورودی ۱ باشد کدخروجی نامشخص داریم که این عیب کدگذار است.
مشکل۲: (ورودی های اصلی ۰۰۰۱ و ۰۰۱۰ و ۰۱۰۰ و ۱۰۰۰ هستند )،اگر ورودی ۰۰۰۰ یا ۰۰۰۱ باشد خروجی ۰۰ است است بنابراین باید خطی به encoder اضافه شود که به آن input active گویند و اگر هر ورودی فعال باشد این خط فعال میشود و گرنه فعال نیست پس مشکل حل میشود.

در ضرب booth(بوث)، برای ضرب n*n بیت داریم :
تعداد جمع :
[tex]\left \lfloor \frac{n}{2}\right \rfloor[/tex]
تعداد تفریق :
[tex]\left \lceil \frac{n}{2} \right \rceil[/tex]

منبع: ص ۴۱ پوران
=
مثالی نکته دار از ضرب به روش booth :
تستی از کتاب پوران ص ۴۰ - می خواهیم ۱۱۰۰۱۱ را در ۱۰۱۱۱۰ به روش booth یا بوث صرب نماییم.چند Shift و چند ADD/Sub خواهیم داشت ؟
حل :
به طور کلی در روش بوث،
تعداد shift ها برابر تعداد بیت های ضرب کننده(مضروب فیه در اینجا ۱۱۰۰۱۱ ) است.
تعداد Add/Sub برابر تعداد بیت هایی است که تغییر می کنند.
پس ۶ تا Shiftو ۳ تا Add/Sub داریم.
(منبع : ص ۵۷ پوران فصل اول:محاسبات حل تست ۲۶)
==
(فکر کنم بعد از ضرب حاصل ۱۰۰۱۰۰۱۰۱۰۱۰ میشه که به تعداد بیت های ضرب کننده یعنی ۶ بیت از راست جدا می کنیم میشه ۱۰۱۰۱۰ که بیت های شماره ی ۰ و ۳ و ۴ فکر کنم تغییر کرد یعنی سه بیت)[اگه اشتباه می کنم سریعا توی پیام خصوصی تذکر بدید]
======

ضرب ترکیبی :
برای ضرب مضروب فیه m بیتی در مضروب n بیتی داریم :
m*n تا and داریم
{min{m,n عدد نیم جمع کننده(H.A)
(mn-(m+n عدد تمام جمع کننده(F.A)
پس برای ضرب n*n نیاز به( n به توان ۲ ) گیت and و n عدد نیم جمع کننده و { (n به توان ۲) منهای ۲n } عدد تمام جمع کننده داریم.
البته در بعضی کتب به جای HA از FA استفاده می شود که در اینصورت برای ضرب n*n به ( n به توان ۲ ) گیت and و{ (n به توان ۲) منهای n } جمع کننده ی یک بیتی(FA) نیاز است. (منبع : پوران ص ۶ _بخش محاسبات)
===
============
ضرب ترتیبی(همان روش ADD و Shift است)(ص ۷ پوران)
در ضرب ترتیبی به یک شمارنده نیاز می باشد.
برای ضرب n*n به روش ترتیبی فقط به یک جمع کننده ی n بیتی نیاز خواهیم داشت.
[تصویر:  148220_3_1379087221.gif]
============
===
در ضرب آرایه ای داریم:
برای ضرب مضروب فیه j بیتی در مضروب k بیتی، به j*k عدد گیت and و j-1 عدد جمع کننده ی k بیتی نیاز است و حاصل j+k بیت خواهد بود.
مثال :
b3b2b1b0
a2a1a0
_________
دو عدد adder چهار بیتی و ۱۲ گیت and نیاز داریم.
و حاصل حداکثر ۷ بیت خواهد شد.
منبع : ص ۳۴۵ و ۳۴۶ موریس مانو و ص ۷ پوران مطالعه شود)
===
تاخیر در ضرب کننده ی آرایه ای n*n بیت:
[tex]T_{And} nT_{sum} (n-2)T_{carry}[/tex]
برای حفظ فرمول فوق می گیم : در جمع کننده ی آرایه ای یک تاخیر and و به تعداد بیت ها یعنی n تاخیر sum و n-2 تاخیر برای رقم نقلی داریم. (که هر یک را در Time مربوطه ضرب می کنیم و همه را جمع می بندیم)(منبع: پوران پژوهش ص ۵۷)
==
عیب ضرب آرایه ای : سخت افزار زیاد می خواهد و از لحاظ اقتصادی به صرفه نیست(مزیت : سرعت بالا)
=
دوستان هرجا احساس مشکل کردن یا شک داشتن،بلافاصله بهم پیام خصوصی بفرستن بگن اصلاح کنم.
===
تا چند لحظه دیگه ،جزوه ی معماری کامپیوتر دانشگاه شاهرود رو لینک می کنم برای استفاده مطالعه مباحث درسی(مدیر هم اگه تشخیص داد مناسب هست یه نسخه بذاره توی منابع)

کلاس اموزش معماری توسط خودم - موج ارامش - ۲۰ آذر ۱۳۹۱ ۰۷:۲۸ ب.ظ

سلام منم میخوام شرکت کنم .

کلاس اموزش معماری توسط خودم - csharpisatechnology - 20 آذر ۱۳۹۱ ۰۷:۴۹ ب.ظ

جزوه ی معماری کامپیوتر دکتر حسن پور از دانشگاه شاهرود یک جزوه ی کاربردی هستش
گذاشتمش توی بخش منابع

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

==
اگه حال ندارید اینم لینک مستقیم:

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

==
به هر حال بگیرید و سریع تمومش کنید.
==
در مبحث بعدی سعی می کنم چند سوال مفید حل شده از خط لوله یا همون pipeLine و محاسبه ی تاخیر توی پایپ لاین براتون بیارم.
==
تشکر شما باعث تقویت روحیه ما و سرعت بخشیدن در پست های بعدی هستش. میدونید که کمتر از یک ماه دیگه امتحان ارشد هست. پس سعی کنید شما هم توی این بخش کمک کنید چون من جونم در میاد تا مطالب خلاصه و نکات رو بیارم اینجا. اما اگه همه با هم مطلب بذارید و خلاصه مباحث مفید رو بیارید یه تاپیک میشه پر از نکته و مثال حل شده.

دوستان قبل از آوردن مطلب سعی کنید مطالب رو توی word اگه می تونید بذارید. اگه سخته تایپ کنید بذارید همینجا.
فقط سعی کنید نکات درسی مهم و مربوط به کنکور معماری کامپیوتر رو بذارید اینجا.
یادتون نره از کلی گویی بیش از حد بپرهیزید.
سعی کنید مطالب خلاصه و کامل باشه.
منبع مثل PDF یا جزوه یا کتاب مذکور با ذکر مولف و ص و فصل و عنوان فصل مربوط در صورت لزوم آورده بشه.
بیشتر سعی کنید از RTL و تاخیر و واحد کنترل ریزبرنامه نویسی+ مدیریت حافظه و خظ لوله و فصول آخر و فصل کارایی و ارزیابی CPU پترسون و مانو و پوران مطالب رو جمع آوری کنید.
فصل محاسبات زیاد گیر سه پیچ ندید.

همه کمک کنن تا امشب حداقل ۲۰ تا نکته و مطلب مفید باید به این تاپیک اضافه بشه.

مثال هایی از مسائل خط لوله یا pipeLine :
مسئله ی ۱ از فصل ۹موریس مانو :حاصل
[tex](A_{i} B_{i})(C_{i} D_{i})[/tex]
رو با استفاده از خط لوله به ازای i ، از ۱ تا ۶ تعیین کنبد.
حل :

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

اگه لینک عکس خراب بود گزارش بدین.
==

RE: اموزش معماری جلسه دوم - teacherpc - 20 آذر ۱۳۹۱ ۰۸:۵۳ ب.ظ

به نام خدای مهربان
[تصویر:  148235_1_1379087221.jpg]
[تصویر:  148235_2_1379087221.jpg]




مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
[حجم: کمتر از یک و سه دهم مگابایت]
منبع : مانو -جزوه امیر کبیر

کلاس اموزش معماری توسط خودم - csharpisatechnology - 20 آذر ۱۳۹۱ ۰۹:۱۸ ب.ظ

دو راه برای تشخیص سرریز :
۱-جمع دو عدد مثبت حاصل منفی بدهد یا جمع دو عدد منفی حاصل مثبت بدهد.
۲-رقم نقلی اضافه شونده به MSB(با ارزشترین بیت) با رقم نقلی خروجی یکسان باشد یعنی XOR آن دو ۱ شود V=1 خواشد شد که نشان دهنده ی oVerflow است.

کلاس اموزش معماری توسط خودم - teacherpc - 20 آذر ۱۳۹۱ ۱۰:۳۲ ب.ظ

تو این اکثرن مطالب از مانو بود اسلاید اخرش امیرکبیر
هرجایی چیزی ذکر بشه که لزوم ذکر منبع ببینم ذکر میکنم نمیخام از موسسه یا کس خاصی تبلیغ بشه
مطالب واضحه و بدیهی
همه دوستان این منابع رو از بخش لینک منابع بگیرید

کلاس اموزش معماری توسط خودم - csharpisatechnology - 20 آذر ۱۳۹۱ ۱۱:۴۶ ب.ظ

خوب،توی درس دوم دوست خوبم teacherpc چند تا نکته یاد گرفتیم که خلاصه می کنم اینجا :
اسم دیگه ی حافظه انجمنی یا تداعیگر ، CAM هست یعنی Content Addressable Memory (حافظه های قابل درس دهی با محتوا)
هر کلمه از CAM با محتویان ثبات آرگومان(Argument Reg) مقایسه میشه.اگه کلمه ی i ام در CAM با A برابر بود مقدار M[i]=1 علامتگذاری میشه .
کلماتی که M[i]=1 بود به طور ترتیبی در هنگام لازم از CAM خونده میشن.

کلاس اموزش معماری توسط خودم - csharpisatechnology - 21 آذر ۱۳۹۱ ۰۱:۲۱ ق.ظ

البته یه سری فرمول هم بود ولی باید اثبات کاملشون رو بیاریم تا بهتر درک بشه.فعلا که خسته شدیم.
مرسی از دوستایی که با تشویقای خودشون به ما روحیه دادن.مطالب سطحشون خیلی پایین بود و نرسیدیم.عفو بفرمایید تا ببینیم تا آخر شب می تونیم چیزی پیدا کنیم یا نه.اگه نرسیدیم تا فردا انشاءا... ادامه خواهیم داد.کسی هم نبود کمک کنه.حیف...Blush
بازم دم آقا مدیر گرم که تا اینجا مارو تحمل کرده. دو ماه دیگه تحمل کن آق مدیر. بعدش فروما رو هرطور خواستی جابجا کن.خیلی میخوایمتBig Grin

کلاس اموزش معماری توسط خودم - csharpisatechnology - 21 آذر ۱۳۹۱ ۰۲:۱۰ ب.ظ

با وجود استقبال کم دوستان ولی باز ادامه خواهیم داد:
==
برای محاسبه ی زمان اجرای n وظیفه در پایپ یا لوله با k طبقه(بند یا قسمت هم می گن) ،اگه n دستور داشته باشیم برای اجرای کامل دستور اول و خروج از خط لوله k سیکل نیازه و برای هر کدام از بقیه ی دستورات باقیمانده توی لوله (n-1 دستور بعدی) فقط ۱ سیکل نیازه:
پس از فرمول زیر پیروی می کنیم :
[tex]1*k (n-1)*1=k n-1[/tex]
و نهایتا عدد بدست اومده رو در زمان سیکل ساعت یا Tp(متوسط زمان اجرای یک دستور در پایپ) ضرب می کنیم.
مثالی برای تفهیم و درک مطلب فوق (تمرین دوم فصل ۹ موریس مانو):
دیاگرام زمانی یک خط لوله ۶ قسمتی را رسم کنید و زمان لازم برای اجرای ۸ وظیفه را دست آورید.
حل :
k=6
n=8
فرض Tp برابر ۱ نانو ثانیه است.
==
۱*(۶+۸-۱) =
۱۳
==
مثال بعدی رو از خود کتاب مانو میارم :
مثلا توی یه خط لوله ی ۶ قسمتی اگه بخوایم ۸ تا دستور رو اجرا کنیم برای اجرای کامل دستور اول (T1) تعداد ۶ سیکل طول میکشه تا از بالای لوله که وارد شده بود بیاد توی قسمت آخر لوله برای خروج، و برای n-1 یا ۷ دستور بعدی فقط یک سیکل برای خروج نیازه.


دوستان هر مبحثی رو متوجه نشدید برام پیام خصوصی بذارید.

کلاس اموزش معماری توسط خودم - csharpisatechnology - 21 آذر ۱۳۹۱ ۰۳:۴۵ ب.ظ

Ideaتوی این درس می خوایم ،فرمول speedUP یک pipe نسبت به noPipe رو درک کنیم.
زمان اجرای n وظیفه در سیستم غیر لوله ای :
به عبارت دیگه میخوام فرمول سرعت اجرای دستورات در سیستم لوله ای نسبت به سیستم غیر لوله ای رو یاد بگیریم.
در یه سیستم غیر لوله ای فرض کنید n کار(task) داریم و متوسط زمان اجرای هر task برابر T_n نانو ثانیه هست.
پس کلا n*T_n نانو ثانیه زمان برای اجرای کل اونا لازمه.
==
زمان اجرای n وظیفه در سیستم لوله ای:
حالا اگه همین n تا Task رو بخوایم توسط سیستم خط لوله ای که k طبقه داره اجرا کنیم داریم :
ابتدا n سیکل طول میکشه تا آخرین کار وارد خط لوله بشه(البته از اون طرف هم ممکنه بعضی از task های قبل اجراشون تمام شده باشه و از لوله خارج شده باشن)
سپس k-1 سیکل طول می کشه تا آخرین task کارش به اتمام برسه.
یعنی کلا n+k-1 سیکل و هر سیکل به اندازه T_pipe نانو ثانیه زمان برای اجرا مصرف می کنه.
پس کلا (T_pipe * (n+k-1نانوثانیه طول میکشه تا n کار توی سیستم لوله ای k قسمتی اجرا بشه.
یعنی به طور کلی فرمول زیر بدست میاد :
[tex]speedup=\frac{nT_{Run}}{(n k-1)T_{pipe}}[/tex]
==

مثال(مسئله ی ۴ فصل ۹ خط لوله و پردازش موازی_موریس مانو_کتاب جلد سبز):
یک سیستم غیرلوله ای برای اجرای کاری ۵۰ نانوثانیه زمان لازم دارد.همین کار را می توان با یک خط لوله ی ۶ قسمتی با پالس ساعت ۱۰ نانوثانیه ای اجرا نمون.میزان افزایش سرعت خط لوله را برای ۱۰۰ کار تعیین نمایید.

حل :
تعداد هر کار یا n هست : ۱۰۰
زمان اجرای هر کار یا T_n هست : ۵۰ نانوثانیه
تعداد طبقه/قسمت یا k هست : ۶
پالس ساعت یا T_pipe یا حالا T_pulse هست : ۱۰ نانوثانیه
پس داریم :
[tex]speedup=\frac{100*50}{(100 6-1)*10}=4.76[/tex]

می تونید به حل مسائل معماری کامپیوتر مانو ناقوس(فصل ۹)(تالیف سید رضی) مراجعه کنید.

===
نکته : اگر به سوال فوق اضافه کنیم که حداکثر افزایش سرعتی را که می توان به آن رسید محاسبه نمایید، داریم:
باید برای محاسبه ی حداکثر افزایش سرعت ، T_n رو به T_p تقسیم کنیم یعنی:
[tex]s_{max}=\frac{T_{n}}{T_{p}}=\frac{50}{10}=5[/tex]

===========
توی این درس میخوایم کمی روی مبحث cache مانور بدیم :
ابتدا چند سوال آسون از حافظه ی نهان :
Cache 2way یعنی چه ؟
کش ۲way یعنی یه حافظه ی نهان ،که اگه اونو به صورت یک جدول فرض کنیم،توی هر set یا دسته یا سطرش ۲ تا بلاک جا می گیره.
==
تعداد بلاک های Cache رو چطوری باید محاسبه کرد ؟
کافیه اندازه ی کش رو بدونیم ، اندازه ی بلاک هم بدونیم. سپس اندازه ی کش رو به اندازه ی بلاک تقسیم می کنیم و تعداد بلاک های کش بدست میاد
==
در یک کش n_way تعداد set ها رو چطوری محاسبه کنیم؟
همونطور که از اسم set می فهمیم یعنی دسته
یعنی تعداد دسته هایی که n بلوک رو توی اونا جا می زنیم.
پس باید تعداد کل بلوک یا همون بلاک ها رو داشته باشیم و به n تقسیم کنیم.
==
مثال :در یک کش ۲Way ،به اندازه ی ۲۵۶ بایت،تعدا set ها را محاسبه کنید اگر اندازه ی هر بلوک ۱۶ باید باشد؟
حل:
ابتدا باید تعداد بلوک ها رو حساب کنیم پس ۲۵۶/۱۶=۱۶ بلوک
حالا تعداد بلوک ها رو به n یا همون ۲ تقسیم می کنیم(چون کش ما ۲way بود n=2 هست) : ۱۶/۲ = ۸ دسته یا set.
===
از مبحث فوق برای بخش miss-rate یا محاسبه ی نرخ زمان هدر رفته برای آوردن یک داده از حافظه به cache استفاده میشه(بهش miss penalty هم می گن)
می تونید به یه مثال مهم در این لینک مراجعه کنید :

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.

===
یه مثال دیگه مربوط به حافظه های تداعیگر میارم:
این مثال رو می تونید توی کتاب معماری کامپیوتر پوران پژوهش هادی یوسفی فصل ۷ سازمان حافظه پیدا کنید:
مثال)یک کامپیوتر با مشخصات زیر داریم:
-یک پردازنده
-۳۲ بیت virtual address
-(۲ به توان ۳۲)بایت حافظه ی اصلی
-سایز page برابر (۲ به توان ۱۴)
-یک کش(cache) با (۲ به توان ۱۰) عدد set(سطر/دسته) و ساختار ۴way set associative و سایز(اندازه) بلاک های آن ۸ بایت
چقدر داده می تواند در کش ذخیره شودمنظورش اینه که ظرفیت کش رو بدست بیاریم)؟
=
حل :
اول سه تا شکل رو می کشیم که یادمون نره:
آدرس مجازی شامل سه بخش هست: tag+index+word
آدرس تولیدی پردازنده شامل دو بخش هست : tag+index
خود index شامل دو بخش هست : index=block+word
سه مطلب فوق رو بعدا توضیح خواهیم داد(در بخش های جلوتر)
توجه کنید که توی سوالات کنکور ممکنه یه سری چیزهای اضافه بدن که بیشتر برای گیج کردن هست و تو حل سوال بکار نمیان.فقط کافیه درک کنید سوال چ میخواد و چیا رو داریم چیارو باید بدست بیاریم.بریم سر اصل مطلب:
ظرفیت کش=اندازه ی جدول کش=تعداد سطرهای کش*اندازه ی هر سطر
سطر همون set هست که توی سوال گفته (۲ به توان ۱۰ )تا سطر داریم.
چون ۴way هست یعنی توی هر سطر ۴ بلوک جا می گیره
و چون ظرفیت هر بلوک هم ۸ بایت هست پس ظرفیت یا اندازه ی هر سطر میشه ۴*۸=۳۲ بایت
پس ظرفیت کش میشه : (۲ به توان ۱۰) ضربدر (۳۲) بایت = ۳۲*۱۰۲۴ بایت = ۳۲ کیلوبایت
==

دوستان لطفا فقط بازدید نکنید . با فشردن دکمه ی سپاس از مطالب استقبال کنید تا در صورت برزو رسانی مطالب از طریق پیام به شما خبر بدیم.

کلاس اموزش معماری توسط خودم - teacherpc - 21 آذر ۱۳۹۱ ۰۵:۴۵ ب.ظ

مرسی
دوستان سوالات رو فقط در بخش درخواست اعضا مطرح کنید تا بقیه دوستان هم بتونن تو بحث شرکت کنند چون قرار ما با دوستان این بود که سوال و جواب فقط اونجا باشه اینجوری مرور سوالات هم راحت تر میشه تو هر درخواست هم فقط یک سوال مطرح میشه با اجازتون سوال منتقل میشه به بخش درخواست اعضا و اونجا روش بحث خواهد شد!

کلاس اموزش معماری توسط خودم - csharpisatechnology - 21 آذر ۱۳۹۱ ۰۸:۴۷ ب.ظ

در این درس می خوام مثالی از یک سیستم بزنیم که پردازنده ی این سیستم از کش نگاشت مستقیم یا direct mapped استفاده می کنه و این کش دارای ۸ بلوک ۴ کلمه ای هست.اگه cpu آدرسهای ۰ تا ۲۵۵ رو مکررا تولید کنه یعنی۰ تا ۲۵۵ رو تولید کنه،دوباره ۰ تا ۲۵۵ رو تولید کنه و به همین منوال کارشو ادامه بده، نرخ برخورد رو از روش زیر محاسبه می کنیم :
حل :
نمونه ی این مسئله توی کنکور ارشد سراسری ۷۸ سوال اومده.
(برای یادگیری و درک این مبحث قسمت نگاشت مستقیم یا direct mapped cache از فصل ۹ سازمان حافظه پوران پژوهش نوشته ی هادی یوسفی رو مطالعه کنید )
من هم توی مدرسان شریف نگاه کردم هم توی پوران پژوهش تا چند لحظه ی دیگه جواب هر دو رو میارم.
از طرفی هم اثبات کاملشو به زبونی دیگه براتون خواهم آورد تا کامل درک کنید و لذت ببرید و یادتون میدم با این سوال چطوری کشتی بگیرید .
حل :
گفتیم هر بلوک شامل ۴ کلمه هست.پس یعنی به ازای هر miss یک بلوک یا ۴ کلمه باید از حافظه آورده بشه توی cache.
cpu آدرس های ۰ تا ۲۵۵ رو قراره تولید کنه.
اول می بینیم ظرفیت کش چقدر هست و آیا همه ی این آدرس ها توی کش جا میشه یا نه ؟
گفتیم cahce این مثال ۸ بلوک ۴ کلمه ای داره یعنی ظرفیت کش ۸*۴=۳۲ کلمه هست.
یعنی هربار باید یه دسته ی ۳۲ کلمه ای بیاریم توی کش.
cpu گفتیم ۲۵۶ کلمه یا آدرس رو تولید کرده پس کلا ۲۵۶/۳۲ یا ۸ دسته ی ۳۲ تایی داریم که باید جدا جدا به ترتیب وارد کش کنیم.
هردسته شامل ۸ بلوک میشه که به ازای هر بلوک باید یک miss داشته باشیم( چون هر بلوک شامل ۴ کلمه هست و گفته شد به ازای هر ۴ کلمه یک میس داریم . دلیلش هم اینه که مثلا اگه آدرس های آدرس ۰ اول درخواست میشه اما ۰و۱و۲و۳ رو با م میاریم توی کش ،پس اینجا یه میس داریم و بعدش ۲و۳و۴ که درخواست میشن توی کش هستند و میس نداریم)
چون ۸ دسته داریم و تو هر دسته ۸ میس داریم به ازای آوردن این ۸ دسته(یعنی تولید ۲۵۶ آدرس از ۰ تا ۲۵۵) باید ۸*۸=۶۴ میس کلا داشته باشیم.
پس بقیه میشه hit یعنی ۲۵۶-۶۴ = ۱۹۲ تا از این ۲۵۶ تا آدرس hit میشه.
اگه بخوایم درصد نرخ برخورد رو بیان کنیم می گیم :
[tex]hitRatio=\frac{192}{256}=\frac{x}{100}\Rightarrow x=\frac{192*100}{256}=75[/tex]
اگه شکل دسته های ۳۲ تایی ای که وارد کش می کنیم رو هم بخوان می تونید اینو ببینید :
[تصویر:  148390_1_1379087221.gif]
===
هادی یوسفی هم کار رو خلاصه می کنه میگه چون با هر miss یک بلوک ۴ کلمه ای رو از حافظه ی اصلی میاریم توی cache ،چون دسترسی ها متوالی هستش پس ۱/۴ میس و ۳/۴ هیت داریم که اگه بخوایم به درصد hit رو بیان کنیم میشه ۳/۴ ضربدر ۱۰۰ و جواب همون ۷۵ درصد میشه. که توضیحات بیشتر رو بالا آوردم
==
مدرسان میگه آدرس های ۰ تا ۲۵۵ بلوک های ۰ تا ۶۴ رو تولید می کنه پس مراجعات بلوک ها به صورت زیر هست:
۰و۰و۰و۰
۱و۱و۱و۱
.
.
.
۶۳و۶۳و۶۳و۶۳
که به ازای هر ۴ مراجعه یک miss داریم پس کل درصد نرخ hit میشه ۷۵ درصد.
==
دوستان کتاب رو مطالعه کنید و هر سوالی از معماری داشتید برام پیام خصوصی بذارید و اینجا مطرح نکنید.اگه بلد بودم سعی می کنم با توضیح کامل در اینجا بیارم.
اگه نکته ای هم خواستید توی این فروم بیاریم پیام خصوصی کنید بعد از ویرایش و تکمیل توی این بخش آورده میشه.
(ضمنا اونایی که سپاس رو می زنن از طریق پی ام باخبر خواهند شد)(سعی کنید آیدی منو هم اد کنید تا وقتم برای اد کردن دوستان گرفته نشه و سریع تر بهشون پیام بدم)...