پیش‌نویس:بافر ترجمه آدرس

"این مقاله در حال ترجمه از ویکی انگلیسی است

لطفا حذف نشود."

بافر ترجمه آدرس (Translation lookaside buffer) یا به اختصار TLB ، یک حافظه پنهان (Cache) در پردازنده است که ترجمه های اخیر آدرس های مجازی به حافظه فیزیکی را در خود ذخیره می کند. از این بافر برای کاهش چشمگیر زمان دسترسی به مکان های حافظه استفاده می شود و می توان آن را نوعی "حافظه پنهان ترجمه آدرس" دانست. این قطعه سخت افزاری یکی از اجزای کلیدی در واحد مدیریت حافظه (MMU) در معماری کامپیوتر بشمار می رود. بافر ترجمه آدرس ، گاهی به صورت حافظه آدرس پذیر محتوا (CAM) پیاده سازی می شود. در این ساختار، کلید جستجو همان آدرس مجازی است و نتیجه جستجو، آدرس فیزیکی متناظر با آن خواهد بود. اگر آدرس درخواستی در TLB موجود باشد ، جستجوی CAM به سرعت یک تطابق (Match) را پیدا کرده و آدرس فیزیکی بازیابی شده بلافاصله برای دسترسی به حافظه استفاده می شود. به این حالت موفقیت آمیز اصطلاحا "برخورد" (TLB hit) می گویند.در صورتی که آدرس درخواستی در TLB پیدا نشود، اصطلاحاً یک «نقصان» (TLB miss) رخ می‌دهد. در این حالت، پردازنده باید فرایند ترجمه آدرس را با جستجو در جدول صفحه‌ها (Page table) طی عملیاتی به نام «پیمایش صفحه» (Page walk) انجام دهد. فرایند پیمایش صفحه در مقایسه با سرعت پردازنده بسیار زمان‌بر است، زیرا نیازمند خواندن محتوای چندین مکان از حافظه اصلی و انجام محاسبات برای یافتن آدرس فیزیکی است. پس از یافتن آدرس فیزیکی از طریق پیمایش، نگاشت جدید در TLB ذخیره می‌شود تا در مراجعات بعدی با سرعت بیشتری در دسترس باشد. معماری و عملکرد (Architecture and performance) : بافر ترجمه آدرس (TLB) دارای ظرفیت ثابت و محدودی است (معمولاً بین ۱۲ تا ۴۰۹۶ ورودی) و برای دستیابی به حداکثر سرعت طراحی می‌شود. زمان پاسخ‌گویی این بافر بسیار کوتاه و معمولاً بین ۰٫۵ تا ۱ چرخه ساعت (Clock cycle) پردازنده است. از آنجا که این قطعه باید بسیار سریع عمل کند، پیاده‌سازی سخت‌افزاری آن معمولاً به صورت تمام‌انجمنی (Fully Associative) یا انجمنیِ مجموعه‌ای (Set Associative) انجام می‌شود.پردازنده‌های مدرن غالباً دارای چندین سطح از بافر ترجمه آدرس هستند، که ساختار آن‌ها بی‌شباهت به سلسله‌مراتب حافظه پنهان (مثل کش L1 و L2) نیست. برای نمونه، یک پردازنده ممکن است دارای یک TLB سطح یک (L1) اختصاصی برای دستورالعمل‌ها (ITLB) و یکی برای داده‌ها (DTLB) باشد، و در لایه بعدی از یک TLB سطح دو (L2) بزرگ‌تر و یکپارچه استفاده کند. در صورت بروز نقصان (Miss) در سطح اول، پردازنده سطح دوم را بررسی می‌کند و تنها در صورت نقصان در تمامی سطوح، عملیات زمان‌برِ پیمایش جدول صفحه‌ها آغاز می‌شود. تعویض زمینه (Context switch) : هنگام وقوع تعویض زمینه (Context Switch) بین پردازه‌ها (Process) در سیستم‌عامل، فضای آدرس مجازی تغییر می‌کند. در معماری‌های ساده‌تر، این امر نیازمند پاکسازی کامل (Flush) محتوای TLB است تا پردازه جدید به اشتباه از نگاشت‌های آدرسِ مربوط به پردازه قبلی استفاده نکند. این پاکسازی باعث می‌شود پردازه جدید در ابتدای اجرای خود با تعداد زیادی «نقصان TLB» مواجه شود که افت عملکرد را به همراه دارد.برای رفع این مشکل، معماری‌های پیشرفته‌تر به هر ورودی در TLB یک «شناسه فضای آدرس» (به انگلیسی: Address Space Identifier) یا اختصاراً ASID اختصاص می‌دهند. با استفاده از شناسه ASID، سیستم‌عامل می‌تواند مشخص کند که هر ترجمه آدرس متعلق به کدام پردازه است. این قابلیت اجازه می‌دهد تا نگاشت‌های مربوط به چندین پردازه مختلف به‌طور همزمان در بافر ترجمه آدرس باقی بمانند و نیازی به پاکسازی مداوم حافظه در هر تعویض زمینه نباشد؛ فرایندی که کارایی کلی سیستم را به میزان قابل‌توجهی افزایش می‌دهد.