HW3_CA.pdf

‫‪9313/2/91‬‬
‫تمرین حافظه نهان‪ :‬درس معماری کامپیوتر ‪ -‬دکتر سربازی‬
‫تمرین درس معماری کامپیوتر‬
‫مهلت تحویل‪ 91 :‬اردیبهشت‬
‫هدف تمرین ‪ :‬حافظهی نهان‬
‫نحوهی تحویل‪ :‬پاسخ های خود را به صورت تایپ شده در قالب فایل ‪ .pdf‬در مهلت معین به ایمیل درس ارسال‬
‫نمایید‪.‬‬
‫سواالت خود را در پیاتزا مطرح نمائید‪.‬‬
‫‪1‬‬
‫‪ - 32404‬دانشکده مهندسی کامپیوتر ‪ -‬دانشگاه صنعتی شریف‬
‫‪9313/2/91‬‬
‫تمرین حافظه نهان‪ :‬درس معماری کامپیوتر ‪ -‬دکتر سربازی‬
‫سوال ‪9‬‬
‫فرض کنید حافظهی نهان داده (‪ )data cache‬به صورت ‪ Direct Map‬و هر بالک آن ‪ 32‬بایت است‪ .‬همچنین‬
‫فرض کنید سیاست ‪ write‬در آن به صورت ‪ write-back‬و ‪( write-allocate‬در هنگام ‪ write miss‬بالک مورد‬
‫نظر به داخل حافظه نهان آورده میشود) است‪ .‬شمای کلی سختافزاری آن به صورت زیر است‪:‬‬
‫الف) در صورتی که فضای آدرس فیزیکی ‪ 4GB‬باشد‪ ،‬مشخص کنید هر کدام از ‪ K3 ،K2 ،K1‬و ‪K4‬‬
‫مشخص شده در شکل‪ ،‬کدام بخش از آدرس فیزیکی را شامل شده و هر کدام چند بیت است‪.‬‬
‫ب) اندازه ‪ tag array‬را محاسبه کنید‪.‬‬
‫ج) اگر فرض شود که حافظهی نهان در ابتدا خالی بوده است‪ ،‬به ازای هر یک از آدرسهای زیر مشخص‬
‫کنید‪ ،‬کدام یک ‪ hit‬و کدام یک ‪ miss‬میشوند‪.‬‬
‫‪2‬‬
‫‪ - 32404‬دانشکده مهندسی کامپیوتر ‪ -‬دانشگاه صنعتی شریف‬
‫‪9313/2/91‬‬
‫تمرین حافظه نهان‪ :‬درس معماری کامپیوتر ‪ -‬دکتر سربازی‬
‫‪Address‬‬
‫‪0x24325‬‬
‫‪0x439af‬‬
‫‪0x34328‬‬
‫‪0x24330‬‬
‫‪0x439bf‬‬
‫‪0x24327‬‬
‫‪0x34330‬‬
‫‪0x24330‬‬
‫‪0x439bf‬‬
‫‪0x34328‬‬
‫‪0x24325‬‬
‫‪0x439af‬‬
‫‪0x24327‬‬
‫‪0x34330‬‬
‫‪Instruction‬‬
‫‪Store‬‬
‫‪Load‬‬
‫‪Store‬‬
‫‪Load‬‬
‫‪Store‬‬
‫‪Store‬‬
‫‪Load‬‬
‫‪Store‬‬
‫‪Load‬‬
‫‪Store‬‬
‫‪Load‬‬
‫‪Store‬‬
‫‪Store‬‬
‫‪Load‬‬
‫سوال ‪2‬‬
‫یک حافظهی نهان با مشخصات زیر در نظر بگیرید‪:‬‬
‫‬‫‬‫ سیاست جایگزینی ‪LRU‬‬‫‪2-way set associative‬‬
‫‪Write-back‬‬
‫ بالک سایز برابر ‪ 91‬بایت‬‫این حافظهی نهان نیازمند ‪ 92121‬بیت برای پیادهسازی ‪ tag array‬است‪ .‬همانطور که میدانید ‪tag array‬‬
‫عالوه بر ذخیرهی ‪ ،tag‬شامل بیتهای الزم برای سیاست ‪ ،LRU‬تشخیص ‪ valid‬بودن و ‪ dirty bit‬در صورت‬
‫لزوم است‪ .‬اندازه ‪ data array‬را بدست آورید‪.‬‬
‫سوال ‪3‬‬
‫‪3‬‬
‫‪ - 32404‬دانشکده مهندسی کامپیوتر ‪ -‬دانشگاه صنعتی شریف‬
‫‪9313/2/91‬‬
‫تمرین حافظه نهان‪ :‬درس معماری کامپیوتر ‪ -‬دکتر سربازی‬
‫قطعه کد زیر را در نظر بگیرید‪ .‬فرض کنید آرایهی ‪ X‬و ‪ Y‬هرکدام دارای اندازهی ‪ 1MB‬هستند و پشت سر‬
‫یکدیگر در حافظه قرار گرفتهاند‪ .‬آرایهی ‪ X‬و ‪ Y‬هر دو از نوع ‪ int‬هستند و هر ‪ 4 ،int‬بایت به خود اختصاص‬
‫میدهد‪.‬‬
‫)‪for (int i=0; i< 1024; i++‬‬
‫)‪for(int j=0; j<1024; j++‬‬
‫;]‪Y[j*1024 + i] = X [i*1024 + j‬‬
‫الف) فرض کنید که قطعه کد را بر روی یک حافظهی نهان با اندازهی ‪ ،2-way set associative ،4KB‬اندازهی‬
‫بالک ‪ 32‬بایتی و سیاست جایگزینی ‪ LRU‬اجرا میکنیم‪ Miss rate .‬مربوط به دستورات ‪ load‬چقدر خواهد‬
‫بود؟ ‪ miss rate‬مربوط به دستورات ‪ store‬چطور؟‬
‫ب) حافظهی نهان را مشابه قسمت الف در نظر بگیرید‪ ،‬با این تفاوت که سیاست جایگزینی این بار ‪ FIFO‬باشد‪.‬‬
‫در این صورت‪ miss rate ،‬مربوط به دستورات ‪ load‬و ‪ store‬چه تغییری خواهد کرد؟‬
‫ج) فرض کنید همان پیکربندی قسمت الف را برای حافظهی نهان در نظر میگیریم‪ write-through .‬یا ‪write-‬‬
‫‪ back‬بودن حافظهی نهان‪ ،‬و همچنین ‪ write-allocate‬بودن یا ‪ write-no-allocate‬بودن را با توجه به کارایی‬
‫بهتر‪ ،‬مشخص کنید‪ .‬یعنی با توجه به قطعه کد فوق ‪ ،‬بهترین سیاست مربوط به ‪ write‬به منظور کارایی بهتر‪،‬‬
‫کدام است؟‬
‫د) فرض کنید که قطعه کد را بر روی یک حافظهی نهان با اندازهی ‪ ،fully associative ،4KB‬اندازهی بالک ‪32‬‬
‫بایتی و سیاست جایگزینی ‪ LRU‬اجرا میکنیم‪ .‬آیا امکان دارد که به گونهای کد را تغییر دهید (بدون اینکه‬
‫منطق کد تغییر کند) که همهی ‪miss‬ها به جز ‪ Compulsory miss‬از بین برود؟ توضیح دهید‪.‬‬
‫سوال ‪4‬‬
‫‪4‬‬
‫‪ - 32404‬دانشکده مهندسی کامپیوتر ‪ -‬دانشگاه صنعتی شریف‬
‫‪9313/2/91‬‬
‫تمرین حافظه نهان‪ :‬درس معماری کامپیوتر ‪ -‬دکتر سربازی‬
‫دو کد زیر را در نظر بگیرید‪ .‬در این سوال تنها آرایهی ‪ X‬باعث دسترسی به حافظهی نهان داده (‪)data cache‬‬
‫میشود و دستورات در حافظهی نهان دستورات (‪ )instruction cache‬قرار میگیرد‪ .‬فرض کنید که حافظهی‬
‫نهان داده در ابتدا خالی و هر ‪ 4 int‬بایت است‪ .‬همچنین فرض کنید آرایهی ‪ X‬به صورت ‪ Row order‬در‬
‫حافظه قرار گرفته است‪.‬‬
‫کد ‪:9‬‬
‫کد ‪:2‬‬
‫‪#define N1 64‬‬
‫‪#define N1 64‬‬
‫‪#define N2 128‬‬
‫‪#define N2 128‬‬
‫;]‪int X[N2][N1‬‬
‫;]‪int X[N2][N1‬‬
‫;‪int ans=0‬‬
‫;‪int ans=0‬‬
‫)(‪int main‬‬
‫)(‪int main‬‬
‫{‬
‫{‬
‫)‪for(int i=0; i<N2; i++‬‬
‫)‪for(int j=0; j<N1; j++‬‬
‫)‪for(int j=0; j<N1; j++‬‬
‫)‪for(int i=0; i<N2; i++‬‬
‫;]‪ans+=X[i][j‬‬
‫;]‪ans+=X[i][j‬‬
‫}‬
‫الف) فرض کنید این قطعه کد بر روی یک حافظهی نهان داده با اندازهی ‪ Direct map ،4KB‬و اندازه بالک ‪32‬‬
‫بایتی اجرا میشود‪ .‬در این صورت محاسبه کنید که به ازای اجرای هرکدام از این دو قطعه کد‪ ،‬چند ‪ miss‬رخ‬
‫میدهد‪.‬‬
‫ب) فرض کنید این قطعه کد بر روی یک حافظهی نهان داده به صورت ‪ Direct map‬و اندازه بالک ‪ 32‬بایتی‬
‫اجرا میشود‪ .‬در این صورت محاسبه کنید که در صورت اجرای کد ‪ 9‬کمترین تعداد ‪set‬های حافظهی نهان‬
‫چقدر باشد تا به جز ‪ ،compulsory miss‬هیچ ‪ miss‬دیگری رخ ندهد؟ برای کد ‪ 2‬نیز محاسبه کنید‪.‬‬
‫‪5‬‬
‫‪ - 32404‬دانشکده مهندسی کامپیوتر ‪ -‬دانشگاه صنعتی شریف‬
‫}‬
‫‪9313/2/91‬‬
‫تمرین حافظه نهان‪ :‬درس معماری کامپیوتر ‪ -‬دکتر سربازی‬
‫ج) فرض کنید این قطعه کد بر روی یک حافظهی نهان داده با اندازهی ‪ Fully associative ،4KB‬و اندازه بالک‬
‫‪ 32‬بایتی اجرا میشود‪ .‬سیاست جایگزینی آن ‪ FIFO‬است‪ .‬در این صورت محاسبه کنید که به ازای اجرای‬
‫هرکدام از این دو قطعه کد‪ ،‬چند ‪ miss‬رخ میدهد‪.‬‬
‫سوال ‪5‬‬
‫همانطور که میدانید‪ ،‬در سیستمهای ‪ ،high performance‬حافظهی نهان سطح اول‪ ،‬به دلیل قرار گرفتن در‬
‫مسیر بحرانی پردازنده‪ ،‬باید سریع باشد‪ .‬به همین منظور در بیشتر معماریها‪ ،‬در سطح اول‪ ،‬از حافظهی نهان به‬
‫صورت ‪ direct map‬استفاده میکنند‪ .‬بزگترین مزیت ‪ hit time ،direct map‬سریع آن است‪ .‬در مقابل‪ ،‬مشکل‬
‫بزرگ ‪ direct map‬تعداد زیاد ‪ conflict miss‬است‪ .‬در صورتی که به جای ‪ ،direct map‬از ‪set associative‬‬
‫استفاده کنیم‪conflict miss ،‬ها تا حد زیادی کاهش مییابد ولی به دلیل اینکه ‪ ،tag check‬در مسیر بحرانی‬
‫قرار دارد‪ hit time ،‬افزایش مییابد‪.‬‬
‫برای اینکه از مزیت این دو پیکربندی ( ‪ hit time‬سریع مربوط به ‪ miss rate ،Direct Map‬پایین مربوط به ‪Set‬‬
‫‪ ) associative‬به صورت همزمان استفاده کنیم‪ ،‬یک معماری جدید برای حافظهی نهان ارایه کردیم‪ .‬این‬
‫معماری به صورت ‪ 2way set associative‬است ولی همواره داده از ‪ way0‬خوانده میشود‪.‬‬
‫فرض کنید پردازنده درخواست خواندن یک داده را به حافظهی نهان میدهد‪ .‬نحوهی کار به این صورت است‪:‬‬
‫‪-‬‬
‫اگر دادهی مورد نظر در ‪ way0‬بود‪ ،‬داده سریعا برای پردازنده فرستاده میشود‪ .‬به این حالت ‪perfect‬‬
‫‪ hit‬میگوییم‪.‬‬
‫ در صورتی که داده در ‪ way0‬نبود‪ way1 ،‬بررسی میشود‪ .‬اگر داده در ‪ way1‬بود‪ ،‬داده برای پردازنده‬‫فرستاده میشود‪ ،‬و دادهی موجود در ‪ way1‬با دادهی موجود در ‪ way0‬جابهجا (‪ )swap‬میشود‪ .‬به این‬
‫حالت ‪ slow hit‬میگوییم‪.‬‬
‫‪-‬‬
‫اگر داده در هیچ یک از دو ‪ way‬نبود‪ miss ،‬رخ میدهد‪ .‬داده از سطوح پایینتر آورده شده و برای‬
‫پردازنده فرستاده میشود‪ .‬همچنین دادهی موجود در ‪ way0‬در داخل ‪ way1‬قرار گرفته و دادهای که از‬
‫سطوح پایینتر آورده شده‪ ،‬در ‪ way0‬قرار میگیرد‪.‬‬
‫‪6‬‬
‫‪ - 32404‬دانشکده مهندسی کامپیوتر ‪ -‬دانشگاه صنعتی شریف‬
‫‪9313/2/91‬‬
‫تمرین حافظه نهان‪ :‬درس معماری کامپیوتر ‪ -‬دکتر سربازی‬
‫در صورتی که ‪ perfect hit‬رخ دهد‪ ،‬تنها یک ‪ cycle‬زمان میبرد تا داده برای پردازنده فرستاده شود‪ .‬در‬
‫هنگامی که ‪ slow hit‬رخ میدهد‪ ،‬چهار ‪ cycle‬به طول میکشد تا داده برای پردازنده فرستاده شود‪ .‬این‬
‫چهار ‪ cycle‬شامل‪:‬‬
‫‪ )9‬بررسی ‪ way0‬و رخ دادن ‪ miss‬در آن‬
‫‪ )2‬بررسی ‪ ،way1‬نوشتن دادههای ‪ way0‬و ‪ way1‬در دو ثبات برای ‪ swap‬کردن‬
‫‪Swap )3‬کردن ‪way‬ها در صورت رخ دادن ‪hit‬‬
‫‪ )4‬خواندن داده از ‪ way0‬و فرستادن آن به پردازنده‬
‫با توجه به توضیحات باال به سواالت زیر پاسخ دهید‪:‬‬
‫الف) سخت افزار مورد نیاز برای پیاده کردن این معماری برای عملیات خواندن را رسم کنید‪ .‬برای کشیدن‬
‫سخت افزار‪ ،‬مشابه آنچه در کالس حل تمرین آموختید‪ ،‬عمل کنید‪.‬‬
‫ب) توضیح دهید که چرا ‪ hit time‬مربوط به این معماری از ‪ 2way set associative‬بهتر است‪ .‬برای تحلیل‬
‫این موضوع باید از مقایسهی مسیر بحرانی کمک بگیرید‪.‬‬
‫فرض کنید میخواهیم قطعه کد زیر را بر روی این معماری جدید و یک حافظهی نهان ‪2way set associative‬‬
‫اجرا کنیم‪ .‬هر دو حافظهی نهان دارای ‪ 256 set‬و بالک با اندازهی ‪ 91‬بایت و سیاست ‪ replacement‬آن‪LRU ،‬‬
‫است‪ .‬فضای آدرسدهی فیزیکی نیز برابر ‪ 4MB‬است‪.‬‬
‫در قطعه کد زیر‪ ،‬آرایهی ‪ X‬و ‪ Y‬از نوع ‪ int‬و اندازهی آنها برابر ‪ 4MB‬است‪ .‬این دو به صورت پشت سرهم در‬
‫حافظه قرار گرفتهاند‪ .‬نوع دادهی ‪ 4 ،int‬بایت در نظر گرفته میشود‪.‬‬
‫)‪for(int i=0; i<4096; i++‬‬
‫;]‪X[i] = 2*Y[i] – 13*X[i‬‬
‫با توجه به قطعه کد و توضیحات باال به سواالت زیر پاسخ دهید‪:‬‬
‫ج) در صورت اجرای قطعه کد باال بر روی حافظهی نهان با معماری جدید و ‪miss ،2way set associative‬‬
‫‪ rate‬را برای هر کدام محاسبه کنید‪.‬‬
‫‪7‬‬
‫‪ - 32404‬دانشکده مهندسی کامپیوتر ‪ -‬دانشگاه صنعتی شریف‬
‫‪9313/2/91‬‬
‫تمرین حافظه نهان‪ :‬درس معماری کامپیوتر ‪ -‬دکتر سربازی‬
‫د) در صورت اجرای قطعه کد باال بر روی حافظهی نهان با معماری جدید ‪ perfect hit rate‬و ‪slow hit rate‬‬
‫را محاسبه کنید‪.‬‬
‫ط) اگر فرض کنیم ‪ miss penalty‬برابر ‪ ،100 ns‬زمان دسترسی به حافظهی نهان (در هنگام ‪ hit‬شدن) در‬
‫این معماری جدید برابر ‪ 1110 ps‬و زمان دسترسی به ‪ 2way set associative‬برابر ‪ 1540 ps‬است‪ ،‬و ‪cycle‬‬
‫پردازنده با زمان دسترسی به حافظهی نهان برابر است‪ Average Memory Access Time ،‬را پس از اجرای‬
‫قطعه کد باال بدست آورید‪.‬‬
‫ح) کارایی این معماری جدید کامال به ‪ perfect hit rate‬بستگی دارد‪ ،‬در صورتی که بخواهیم ‪Average‬‬
‫‪ Memory Access Time‬برای این معماری و ‪ 2way set associative‬یکسان باشد‪ ،‬نسبت ‪perfect hit‬‬
‫‪ rate‬به ‪ slow hit rate‬چقدر باید باشد (با توجه به قطعه کد باال) ؟‬
‫موفق باشید‬
‫برومند‬
‫‪8‬‬
‫‪ - 32404‬دانشکده مهندسی کامپیوتر ‪ -‬دانشگاه صنعتی شریف‬