موضوع مقاله: مخاطره (معماری رایانه) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # مخاطره (معماری رایانه) | مقدمه: مخاطره داده مخاطره ساختاری مخاطره کنترل چندین روش برای مقابله با مخاطره که شامل تأخیر در خط لوله، جلو فرستادن ثبات و در شرایط اجرای خارج از نوبت روش‌های اسکور بردینگ و الگوریتم توماسولو می‌باشد، موجود است. | ## بخش 1: مخاطره (معماری رایانه) | پیش‌زمینه دستورالعمل‌ها در یک پردازنده با خط لوله در چند مرحله اجرا می‌شوند، بنابراین در هر زمانی چندین دستورالعمل در حال پردازش شدن در مراحل مختلف خط لوله می‌باشند، مانند واکشی و اجرا. چندین میکرو معماری خط لولهٔ دستورالعمل وجود دارد و ممکن است دستوالعمل‌ها خارج از نوبت اجرا شوند. مخاطره زمانی رخ می‌دهد که دو یا تعداد بیشتری از این برخوردهای دستورالعمل‌ها به‌طور هم‌زمان رخ دهد. انواع هزارد داده هزارد داده زمانی رخ می‌دهد که دستورالعمل‌هایی که وابسته به داده‌ها هستند در مراحل مختلف خط لوله دست به ویرایش داده‌ها بزنند. شرایط زیر شرایط احتمالی رخ دادن مخاطره داده‌است: خواندن بعد از نوشتن، وابستگی واقعی نوشتن بعد از خواندن، ضد وابستگی نوشتن بعد از نوشتن، وابستگی خروجی خواندن بعد از نوشتن R after w مخاطره خواندن بعد از نوشتن اشاره به موقعیتی می‌کند که یک دستورالعمل به نتیجه‌ای اشاره دارد که یا هنوز محاسبه نشده یا هنوز دریافت نشده. این مشکل رخ می‌دهد چون یک دستورالعمل اجرا شده بعد از دستورالعمل قبلی در حالی که دستورالعمل قبلی به‌طور کامل از طریق خط لوله پردازش نشده. R4 <- R2 + R3 دستورالعمل اول مقداری را محاسبه می‌کند که قرار است در ثبات ۲ ذخیره شود، و دومی قرار است این مقدار را برای محاسبه نتیجه‌ای که برای ذخیره در ثبات ۴ است استفاده کند. اگرچه، در یک خط لوله وقتی ما عملوندها را برای دومین عملیات فچ می‌کنیم نتایج از اولی هنوز ذخیره نشده‌اند به همین دلیل وابستگی داده‌ای داریم. در اینصورت می‌گوییم وابستگی داده‌ای بین دستورالعمل ۲ موجود است به این خاطر که به تکمیل شدن دستورالعمل ۱ وابسته است. نوشتن بعد از خواندن مخاطره نوشتن بعد از خواندن مشکلی است که به خاطر اجرای هم‌زمان رخ می‌دهد. | ## بخش 2: مخاطره (معماری رایانه) | R5 <- R1 + R2 اگر ما در شرایطی قرار داریم که ممکن است که دستورالعمل ۲ قبل از دستورالعمل ۱ کامل شود باید مطمئن شویم که نتیجهٔ ثبات ۵ را ذخیره نکنیم قبل از آنکه دستورالعمل ۱ شانسی برای فچ کردن عملوندها داشته باشد. نوشتن بعد از نوشتن مخاطره نوشتن بعد از نوشتن ممکن است در محیطی رخ دهد که شرایط اجرای هم‌زمان را دارد. R2 <- R1 + R3 باید رایت بک دستورالعمل ۲ را تا زمان اجرای دستورالعمل ۱ به تأخیر بیندازیم. ویرایش شده توسط A.A مخاطره‌های ساختاری مخاطره ساختاری زمانی رخ می‌دهد که قسمتی از سخت‌افزار پردازنده مورد نیاز دو یا بیشتر از دستورالعمل‌ها در یک زمان باشد. یک مثال استاندارد یک واحد تک حافظه است زمانی که مورد دسترسی هم‌زمان هم در مرحلهٔ فچ کردن جایی که یک دستورالعمل بازیابی می‌شود از حافظه و مرحلهٔ حافظه جایی که داده نوشته شده ویا خوانده شده از حافظه است.Patterson & Hennessy 2009, p. اغلب این مشکلات توسط جدا کردن مؤلفه به واحدهای متعامد (اورتوگنال) یا تأخیر در خط لوله حل می‌شوند. روی بسیاری میکرو معماری دستورالعمل خط لوله، پردازنده خروجی برنچ را نمی‌داند زمانی که نیاز به وارد کردن دستورالعمل جدید به خط لوله دارد. حذف مخاطره عمومی تأخیر خط لوله تأخیر خط لوله یا وقفهٔ خط لوله روشی برای جلوگیری از انواع مختلف مخاطره می‌باشد. پی‌ها را وارد خط لوله می‌کند؛ بنابراین دستورالعمل بعدی (که باعث مخاطره می‌شود) اجرا شده و قبلی زمان کافی برای تکمیل خود و جلوگیری از مخاطره را دارد. پی‌ها برابر تعداد مراحل خط لوله باشند، پردازنده تمام دستورالعمل‌ها را پاک‌سازی کرده و می‌تواند بدون وجود مخاطره پیشروی کند. | ## بخش 3: مخاطره (معماری رایانه) | مخاطره داده چندین روش و الگوریتم اصلی برای حل مخاطره داده وجود دارد: وارد کردن تأخیر خط لوله هرگاه وابستگی خواندن بعد از نوشتن رخ می‌دهد، مطئنا تأخیر را زیاد می‌کند، یا استفاده کردن از اجرای بدون نوبت برای پیشگیری نیاز تأخیر خط لوله پیشروی ثبات برای استفاده از داده‌هایی که در مراحل بعدی خط لوله هستند. در مورد اجرای خارج از نوبت الگوریتم مورد استفاده دو الگوریتم زیر است: اسکوربردینگ، که در آن تأخیر خط لوله تنها زمانی مورد نیاز خواهد بود که هیچ واحد در حال کاری موجود نباشد الگوریتم توماسولو که از نامگذاری دوبارهٔ ثبات استفاده می‌کند که اجازه به خروج مداوم دستورالعمل‌ها می‌دهد می‌توان وظیفهٔ حذف وابستگی‌های داده‌ای را به کامپایلر سپرد، که می‌تواند تعداد مناسبی از دستورالعمل‌های ان.او. پی را پر کند بین دستورالعمل‌های وابسته تا اطمینان حاصل کند از عملیات صحیح، یا جایی که ممکن است دستورالعمل‌ها را دوباره مرتب کند. اگرچه، اگر دستورالعمل ۱ کاملاً قبل از اجرای دستورالعمل ۲ از خط لوله خارج نشود بدین معنیست که ثبات ۱ مقدار ۳ را ندارد زمانی که دستورالعمل ۲ اضافه کردن خود را انجام می‌دهد. پس زمانی که دستورالعمل ۲ در حال خواندن محتویات ثبات ۱ است، ثبات ۱ هنوز ۶ را در خود دارد به جای ۳. پیشروی کمک به صحیح کردن چنین خطاهای می‌کند توسط وابستگی به این دلیل که خروجی دستورالعمل ۱ می‌تواند به عنوان دستورالعمل‌های بعدی استفاده شود قبل ازینکه مقدار ۳ در ثبات ۱ ذخیره شود. این به این معنیست که ما منتظر ذخیرهٔ خروجی دستورالعمل ۱ در ثبات ۱ نمی‌شویم، قبل از آنکه آن خروجی را قابل دستیابی دستورالعمل‌های بعدی کنیم. (ذخیره به صورت بلادرنگ انجام گرفت و نه به صورت خط لوله‌ای) هنگام استفاده از پیشروی مرحلهٔ دیکد و اجرای خط لوله دو ورودی دارد:۱-مقدار خوانده شده از ثبات ۱ و مقدار جدید ثبات ۱ که از مرحلهٔ بعد فرستاده شده‌است یا از اجرای دستورالعمل /دسترسی به حافظه فرستاده شده. مخاطره کنترلی برای جلوگیری از میکرو معماری مخاطره کنترل می‌توان: وارد کردن یک تأخیر خط لوله، که مطمئناً تأخیر را زیاد می‌کند، یا از پیش‌بینی برنچ استفاده کرد و از حدس‌های حساب شده‌استفاده کرد که کدام دستورالعمل‌ها باید وارد شوند، که در این صورت تأخیر فقط برای پیش‌بینی نادرست بکار می‌رود. | ## جمع‌بندی | در حالتی که یک برنچ باعث تأخیر خط لوله شود بعد از آنکه دستورالعمل‌های نا صحیح وارد خط لوله شدند، باید مراقب بود که جلوگیری شود از هر دستورالعمل بارگذاری شدهٔ اشتباه که هر گونه تأثیری بر حالت پردازنده که مانع هدر روی انرژی که برای پردازش آن‌ها قبل از اینکه کشف شود که اشتباه بارگذاری شده‌اند.