PDA

نسخه کامل مشاهده نسخه کامل : Tlb



soleares
11-10-2006, 17:24
یک Tlb یک حافظه میانجی در سی‌پی‌یو است که قسمتهایی از جدول صفحه را که آدرس مجازی را به فیزیکی ترجمه می‌کند در خود نگهداری می‌کند. این حافظهٔ مجازی مقدار ثابتی مدخل دارد و برای بهبود سرعت ترجمه آدرس مجازی استفاده می‌شود. این حافظه مجازی نوعا یک (cam) محتواى حافظه ادرس پذير است که کلید جستجو آدرس مجازی است و نتیجه ی جستجو آدرس حقیقی و یا فیزیکی است ( که معمولا یک چیز نیستند). اگر جستجوی Cam به نتیجه منجر شد، ترجمه شناخته میشود و داده ی مطابقت شده استفاده میشود. اگر هیچ داده ای پیدا نشد ترجمه درون جدول صفحه ادامه پیدا میکند که چندین سیکل بیشتر به طول می انجامد تا کامل شود – مخصوصا اگر جداول ترجمه به حافظه ی ثانوی فرستاده شده باشند.

Tlb در جداولش به آدرس های حافظه فیزیکی اشاره می کند. Tlb ممکن است مابین Cpu و حافظه ی نهانی Cache یا بین حافظه ی نهانی و حافظه اولیه قرار بگیرد. این بستگی به این دارد که حافظه ی نهانی از آدرس دهی مجازی استفاده می کند و یا از آدرس دهی فیزیکی. یک راه حل عمومی برای بهینه‌سازی کاشه‌های فیزیکی آدرس دهی شده این است که جستجوی Tlb را با دسترسی به کاشه به طور موازی انجام دهیم. بیت های کم ارزش هر آدرس مجازی (برای مثال در یک سیستم حافظه مجازی با صفحات 4 کیلوبایتی، 12 بیت پایینی آدرس مجازی ) در تبدیل مجازی به فیزیکی تغییر نمی یابند. در هر دسترسی به کاشه دو عملیات انجام میشود : یک شاخص درون داده ی کاشه ذخیره میشود سپس یک مقایسه ی برچسب ها برای خطی از کاشه که پیدا شده است. اگر کاشه طوری ساخت یافته شده بود که می شد تنها با استفاده از بیت هایی که در ترجمه عوض نمی شوند، شاخص گذاری شود، کاشه می تواند عملیات شاخص گذاری خود را در زمانی که Tlb بیت های پرارزش آدرس را ترجمه می کند انجام دهد. سپس آدرس ترجمه شده، از Tlb به کاشه فرستاده می شود. کاشه یک مقایسه برچسب انجام می دهد تا تعیین کند این دسترسی به هدف اصابت کرده است و یا خطا رخ داده است.


Miss
وقتی یک خطای Tlb به وقوع می پیوندد، در معماری های نوین دو رویه انجام می پذیرد. با مدیریت سخت افزاری Tlb، خود Cpu در جداول صفحه جستجو می کند تا ببیند برای آدرس حافظه مجازی مشخص شده مدخلی وجود دارد یا نه. اگر مدخلی وجود داشت، مدخل به Tlb آورده می شود و دسترسی به Tlb دوباره انجام می گیرد. اگر مدخلی در جدول صفحه وجود نداشته باشد یک خطای نقص صفحه رخ می دهد و سیستم عامل می بایست داده های مورد نیاز را به حافظه بیاورد. با Tlb نرم افزاری مدیریت شده، یک خطای Tlb، یک استثنا "خطای Tlb" تولید می کند و سیستم عامل می بایست جداول صفحه را طی کند و ترجمه را نرم افزاری انجام دهد. سپس سیستم عامل، ترجمه را در Tlb بارگذاری می کند و برنامه را از دستوری که باعث خطای Tlb شده است از سر می گیرد.