• حافظه کامپیوتری انجمنی حافظه انجمنی توسعه حافظه انجمنی. اطلاعات عمومی و طبقه بندی دستگاه های حافظه

    راه های سازماندهی حافظه

    نام پارامتر معنی
    موضوع مقاله: راه های سازماندهی حافظه
    روبریک (دسته موضوعی) کامپیوترها

    از نظر عملکرد، یک حافظه از هر نوع همیشه شامل یک آرایه ذخیره‌سازی است که اطلاعات را ذخیره می‌کند، و بلوک‌های کمکی و بسیار پیچیده که برای جستجو در آرایه، نوشتن و خواندن (و در صورت لزوم، بازسازی) خدمت می‌کنند.

    آرایه ذخیره سازی (MS) از تعداد زیادی از عناصر ذخیره سازی یکسان (SE) تشکیل شده است. همه SE ها در سلول هایی سازماندهی شده اند که هر کدام برای ذخیره واحدی از اطلاعات در قالب یک کد باینری طراحی شده اند که تعداد بیت های آن با عرض نمونه تعیین می شود. نحوه سازماندهی حافظه به روشهای قرار دادن و جستجوی اطلاعات در SM بستگی دارد. بر این اساس، حافظه آدرس، انجمنی و پشته ای متمایز می شوند.

    حافظه آدرس

    در حافظه با یک سازمان آدرس، قرار دادن و جستجوی اطلاعات در SM بر اساس استفاده از آدرس ذخیره سازی واحد اطلاعات است که برای اختصار بیشتر با آن تماس خواهیم گرفت. کلمه. آدرس شماره سلول SM است که این کلمه در آن قرار دارد. هنگام نوشتن (خواندن) یک کلمه در SM، دستور شروع کننده این عملیات باید آدرس (شماره) سلولی را که با آن نوشتن (خواندن) ضروری است نشان دهد.

    روی انجیر 5.2 ساختار تعمیم یافته حافظه آدرس را نشان می دهد.

    چرخه دسترسی به حافظه توسط سیگنال "Access" که به TCU می رسد، مقداردهی اولیه می شود. بخش کلی چرخه دسترسی شامل دریافت RgA از گذرگاه آدرس (SHA) آدرس آدرس و دریافت سیگنال کنترلی "عملیات" در TCU است که نوع عملیات درخواستی (خواندن یا نوشتن) را نشان می دهد.

    خواندن. BAW آدرس را رمزگشایی می کند و سیگنالی می فرستد که سلول 3M مشخص شده توسط آدرس را برجسته می کند. در حالت کلی، BAW همچنین می تواند سیگنال هایی را به سلول حافظه اختصاص داده شده ارسال کند که سلول های GE را برای نوشتن یا خواندن تنظیم می کند. پس از آن کلمه نوشته شده در سلول توسط تقویت کننده های BUS خوانده می شود و به RGI منتقل می شود. علاوه بر این، در حافظه با خواندن مخرب، اطلاعات با نوشتن یک کلمه از RgI از طریق BUZ به همان سلول SM بازسازی می شود. عملیات خواندن با صدور یک کلمه از RGI به گذرگاه اطلاعات خروجی SHI out کامل می شود.

    رکورد.علاوه بر بخش کلی بالا از چرخه دسترسی، کلمه نوشته شده از گذرگاه ورودی SHI به RGI دریافت می شود. خود رکورد معمولاً از دو عملیات تشکیل شده است - پاک کردن سلول و خود رکورد. برای انجام این کار، BAS ابتدا سلول مشخص شده توسط آدرس در PrA را انتخاب و پاک می کند. پاک کردن سلول SM (تنظیم مجدد) می تواند به روش های مختلفی انجام شود. به طور خاص، در یک حافظه با بازخوانی مخرب، پاک کردن را می توان با یک سیگنال برای خواندن یک کلمه در یک سلول زمانی که BUS مسدود می شود انجام داد (به طوری که اطلاعات وارد RGI نمی شود). سپس یک کلمه جدید در سلول انتخاب شده نوشته می شود.

    نیاز به عملیات پاکسازی سلول قبل از نوشتن و همچنین عملیات بازسازی اطلاعات در حین خواندن، با توجه به نوع SGهای مورد استفاده، روش های کنترل و ویژگی های ساختار الکترونیکی حافظه LSI تعیین می شود؛ بنابراین، این عملیات ها انجام می شود. ممکن است در حافظه های نیمه هادی وجود نداشته باشد.

    TCU توالی های لازم از سیگنال های کنترلی را تولید می کند که عملیات گره های حافظه جداگانه را آغاز می کند. باید در نظر داشت که TCU باید یک دستگاه بسیار پیچیده باشد (نوعی کنترل کننده کنترل با حافظه کش مخصوص به خود) که به LSI حافظه به عنوان یک کل ویژگی های مصرف کننده خاص مانند چند پورت، خروجی خط لوله اطلاعات و غیره می دهد. .

    حافظه مرتبط

    در این نوع حافظه، جستجوی اطلاعات نه با آدرس، بلکه بر اساس محتوای آن صورت می گیرد. در این مورد، محتوای اطلاعات معمولاً نه به عنوان بار معنایی کلمه ذخیره شده در سلول حافظه، بلکه به عنوان محتوای GE سلول حافظه، ᴛ.ᴇ درک می شود. ترکیب بیتی کلمه باینری ضبط شده در این حالت، پرس و جوی انجمنی (ویژگی) نیز یک کد باینری با ترکیب بیت معین است. جستجو توسط یک ویژگی انجمنی به صورت موازی برای تمام سلول‌های SM انجام می‌شود و عملیاتی برای مقایسه محتوای بیت‌های ثبت ویژگی با محتوای بیت‌های مربوطه سلول‌های حافظه است. برای سازماندهی چنین جستجویی، تمام EP SM ها مجهز به پردازنده های تک بیتی هستند؛ بنابراین در برخی موارد، این نوع حافظه به عنوان یک سیستم چند پردازنده ای در نظر گرفته می شود.

    حافظه بزرگ کاملاً تداعی کننده دستگاه بسیار گرانی است، بنابراین، برای کاهش هزینه آن، تعداد پردازنده های تک بیتی به یک در هر سلول حافظه کاهش می یابد. در این مورد، مقایسه پرس و جوی ارتباطی با محتویات سلول های حافظه به صورت متوالی برای ارقام مجزا، به موازات زمان برای همه سلول های SM انجام می شود.

    با مقادیر بسیار زیاد حافظه در کلاس های خاصی از مشکلات، جستجوی انجمنی به طور قابل توجهی سرعت پردازش داده ها را افزایش می دهد و احتمال خرابی را در رایانه کاهش می دهد. در عین حال، حافظه های انجمنی با بلوک های مدارهای ترکیبی متناظر، انجام عملیات منطقی نسبتاً پیچیده را در حافظه ممکن می کند: جستجو برای حداکثر یا حداقل تعداد در یک آرایه، جستجوی کلمات محصور در مرزهای خاص، مرتب سازی یک آرایه و غیره.

    لازم به ذکر است که جستجوی انجمنی را می توان در رایانه ای با حافظه آدرس معمولی نیز اجرا کرد و کلمات نوشته شده در سلول های حافظه را به طور متوالی به پردازنده فراخوانی و آنها را با برخی از ویژگی های انجمنی (الگو) مقایسه کرد. در عین حال، با حجم زیاد حافظه، زمان زیادی برای این کار صرف خواهد شد. هنگام استفاده از حافظه انجمنی، می توان بدون خواندن کلمات از RAM به پردازنده، تعداد کلمات مربوط به یک یا آن جستجوی ارتباطی دیگر را در یک تماس تعیین کرد. این اجازه می دهد تا در پایگاه داده های بزرگ به سرعت یک پرس و جو مانند: چند نفر از ساکنان منطقه اظهارنامه درآمد ارائه نکرده اند و غیره را پیاده سازی کنند.

    در برخی از رایانه های تخصصی، OP یا بخشی از آن به گونه ای ساخته شده است که امکان پیاده سازی جستجوی اطلاعاتی انجمنی و هدفمند را فراهم می کند.

    یک بلوک دیاگرام ساده شده از یک حافظه تداعی، که در آن تمام SM های جنرال الکتریک مجهز به پردازنده های تک بیتی هستند، در شکل نشان داده شده است. 5.3.

    اجازه دهید ابتدا عملیات نامیده شده را در نظر بگیریم کنترل انجمن. این عملیات در عملیات خواندن و نوشتن مشترک است و مقدار مستقلی نیز دارد.

    یک درخواست ارتباطی n بیتی، ᴛ.ᴇ، از طریق گذرگاه اطلاعات ورودی وارد RGAP می شود. ارقام از 0 تا n-1 پر شده است. در همان زمان، کد ماسک جستجو وارد RgM می شود، در حالی که بیت n ام RgM روی 0 تنظیم شده است. جستجوی انجمنی فقط برای مجموعه بیت های RgAP انجام می شود که با 1 در RgM مطابقت دارند (بیت های RgAP بدون ماسک). توجه به این نکته ضروری است که برای کلماتی که ارقام ارقام آنها با ارقام بدون نقاب PrAP منطبق است، CS در ارقام مربوط به PrCv 1 و در ارقام باقیمانده 0 قرار می دهد.

    طرح ترکیبی برای تولید نتیجه وارونگی انجمنی FS حداقل سه سیگنال از کلمه تشکیل شده در RgSv را تشکیل می دهد:

    A 0 - عدم وجود کلماتی که ویژگی انجمنی را برآورده می کند در SM.

    الف 1 - وجود یک کلمه از این قبیل.

    الف 2 - وجود بیش از یک کلمه.

    سایر عملیات روی محتوای PgSv نیز امکان پذیر است، به عنوان مثال، شمارش تعداد واحدها، ᴛ.ᴇ. شمارش کلمات در حافظه که پرس و جوی انجمنی و غیره را برآورده می کند.

    تشکیل محتویات RgSv و 0، a 1، a 2 با توجه به محتویات RgAP، RgM، ZM معمولاً عملیات کنترل ارتباط نامیده می شود.

    خواندن.اول، ارتباط بر اساس RgAP کنترل می شود.

    A 0 = 1 - خواندن به دلیل عدم وجود اطلاعات مورد نیاز لغو می شود.

    A 1 \u003d 1 - کلمه یافت شده در RGI خوانده می شود و پس از آن به خروجی SHI صادر می شود.

    A 2 \u003d 1 - کلمه ای خوانده می شود که مثلاً دارای کمترین تعداد در بین سلول های علامت گذاری شده 1 در RgSv است و پس از آن به خروجی SHI صادر می شود.

    رکورد.ابتدا یک سلول آزاد پیدا می شود (فرض می کنیم که 0 در بیت اشغال یک سلول آزاد نوشته شده است). برای انجام این کار، کنترل ارتباط در PgAP=111...10 و PgM=000...01، ᴛ.ᴇ انجام می شود. رقم n ام RgAP روی 0 و رقم nام RgM روی 1 تنظیم می شود. در این حالت سلول آزاد با RgSv 1 مشخص می شود. برای ضبط، یک سلول آزاد انتخاب می شود، به عنوان مثال، با کوچکترین تعداد. این شامل کلمه دریافت شده از SHI در RGI است.

    لازم به ذکر است که این نمودار بلوک های BUP، BUS، BUS را که در دستگاه های واقعی هستند نشان نمی دهد. در عین حال، برای ساخت یک حافظه انجمنی، عناصر ذخیره سازی مورد نیاز است که می توان آنها را بدون تخریب خواند.

    حافظه پشته ای (فروشگاه)

    حافظه پشته، مانند حافظه انجمنی، بدون آدرس است. حافظه پشته باید هم در سخت افزار و هم بر روی یک آرایه معمولی از حافظه آدرس سازماندهی شود.

    در مورد پیاده سازی سخت افزاری، سلول های حافظه پشته یک آرایه یک بعدی را تشکیل می دهند که در آن سلول های همسایه توسط زنجیره های بیتی انتقال کلمه به یکدیگر متصل می شوند (شکل 5.4). در این صورت دو نوع دستگاه (الف، ب) امکان پذیر است که اصول عملکرد آنها متفاوت است. اجازه دهید ابتدا ساختار شکل را در نظر بگیریم. 5.4، الف.

    ورود یک کلمه جدید دریافت شده از SHI in به سلول بالایی (صفر) انجام می شود، در حالی که تمام کلمات ضبط شده قبلی (از جمله کلمه در سلول 0) به سلول های مجاور که اعداد آنها یک بزرگتر است منتقل می شوند. خواندن فقط از سلول حافظه بالایی (صفر) امکان پذیر است. حالت اصلی ϶ᴛᴏ خواندن با حذف است. در همان زمان، تمام کلمات دیگر در حافظه به سلول های مجاور با اعداد کمتر منتقل می شوند. در چنین حافظه ای، قانون زیر اجرا می شود: آخرین ورود، اولین بیرون. پشته های این نوع پشته های LIFO (Last In - First Out) نامیده می شوند.

    در برخی موارد، دستگاه‌های حافظه پشته نیز امکان خواندن ساده یک کلمه از سلول 0 بدون حذف آن و جابجایی بقیه کلمات را فراهم می‌کنند. هنگام استفاده از پشته برای ذخیره پارامترهای اولیه کنترلرهای هر دستگاه رایانه ای، معمولاً می توان محتویات هر سلول پشته را بدون حذف آن خواند، ᴛ.ᴇ. خواندن محتوا نه فقط سلول 0.

    گفته می شود اولین کلمه ای که روی پشته فشار داده می شود در واقع شده است پایین پشته. گفته می شود آخرین کلمه ای که (به موقع) به پشته ارسال می شود، in است بالای پشته. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ، سلول N-1 پایین پشته است و سلول 0 بالا است.

    به طور معمول، پشته سخت افزاری با یک شمارنده پشته، ChSt ارائه می شود که تعداد کل کلمات ذخیره شده در حافظه را نشان می دهد (CHSt = 0 - پشته خالی است). هنگامی که پشته پر است، عملیات نوشتن بیشتر را غیرفعال می کند.

    اصل پشته سازماندهی حافظه را می توان نه تنها در دستگاه هایی که مخصوص این منظور طراحی شده اند پیاده سازی کرد. سازماندهی پشته ای داده ها نیز در حافظه آدرس معمولی با دسترسی تصادفی (پشته نرم افزار) امکان پذیر است. برای سازماندهی پشته LIFO در این مورد، به یک سلول حافظه دیگر (رجیستر) نیاز است که آدرس بالای پشته همیشه در آن ذخیره می شود و معمولاً به آن می گویند. نشانگر پشته. معمولاً یکی از رجیسترهای داخلی پردازنده به عنوان نشانگر پشته استفاده می شود. علاوه بر این، نرم افزار مناسب مورد نیاز است. اصول سازماندهی پشته ای داده ها در حافظه آدرس معمولی توسط نمودار در شکل 1 نشان داده شده است. 5.5.

    برخلاف پشته سخت افزاری، داده های قرار داده شده در پشته نرم افزار هنگام نوشتن یا خواندن یک عدد جدید جابه جا نمی شوند. هر کلمه جدید به ترتیبی که آدرس آن در نشانگر پشته موجود است در محل حافظه نوشته می شود. پس از نوشتن یک کلمه جدید، نشانگر پشته یک عدد افزایش می یابد (شکل 6.5 را ببینید). ᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ، این داده ها نیستند که روی پشته نرم افزار حرکت می کنند، بلکه بالای پشته هستند. هنگامی که یک کلمه از پشته خوانده می شود، روند معکوس می شود. کلمه از محلی که آدرس آن در نشانگر پشته است خوانده می شود و پس از آن از محتویات نشانگر پشته یک عدد کاهش می یابد.

    اگر کلماتی که به تازگی بر روی پشته بارگذاری شده اند در سلول های حافظه با آدرس های متوالی افزایش یافته قرار گیرند، پشته نامیده می شود. مستقیم.اگر آدرس ها به طور متوالی کاهش می یابند، پس - وارونهدر بیشتر موارد، از یک پشته برگشتی استفاده می شود که به دلیل ویژگی های اجرای سخت افزاری شمارنده ها در داخل پردازنده است.

    این شکل از سازماندهی حافظه چقدر راحت است؟ با نگاهی به آینده، می توان به این نکته اشاره کرد که هر دستوری که در پردازنده اجرا می شود، در حالت کلی، باید حاوی یک کد عملیاتی (COP)، آدرس عملوند اول و دوم و آدرس نتیجه باشد. برای صرفه جویی در حافظه و کاهش زمان اجرای دستورالعمل ماشین توسط پردازنده، مطلوب است که طول دستورالعمل کاهش یابد. محدودیت این کاهش طول فرمان بدون آدرس، ᴛ.ᴇ است. فقط COP این دستورالعمل‌ها با سازماندهی پشته‌ای حافظه امکان‌پذیر است، زیرا با چیدمان صحیح عملوندها در پشته، کافی است آنها را به صورت متوالی استخراج کنید و عملیات مناسب را روی آنها انجام دهید.

    علاوه بر حافظه پشته ای از نوع LIFO که در بالا توضیح داده شد، رایانه ها از حافظه های پشته ای از نوع دیگری استفاده می کنند که این قانون را اجرا می کند: اولین ورودی اولین خروجی. پشته های این نوع پشته های FIFO (First In - First Out) نامیده می شوند. چنین حافظه پشته ای به طور گسترده برای سازماندهی انواع مختلف صف ها (فرمان ها، داده ها، درخواست ها و غیره) استفاده می شود. ساختار تعمیم یافته پشته سخت افزاری از نوع FIFO در شکل نشان داده شده است. 5.4b.

    مانند مورد قبلی، سلول های حافظه پشته یک آرایه یک بعدی را تشکیل می دهند که در آن سلول های مجاور توسط زنجیره های بیت انتقال کلمه به یکدیگر متصل می شوند. ورود یک کلمه جدید دریافت شده از SHI in در سلول بالایی (صفر) انجام می شود، پس از آن بلافاصله به پایین حرکت می کند و به آخرین سلول خالی نوشته می شود. اگر پشته قبل از نوشتن خالی بود، کلمه بلافاصله به سلول با عدد N-1، ᴛ.ᴇ می رود. به پایین پشته. خواندن فقط از سلول پایینی با شماره N-1 (پایین پشته) امکان پذیر است. حالت اصلی ϶ᴛᴏ خواندن با حذف است. در این حالت، تمام کلمات بعدی (ضبط شده) به سلول های مجاور منتقل می شوند که تعداد آنها یک عدد بیشتر است. هنگامی که پشته پر است، شمارنده (CHST) نوشتن بیشتر در پشته را ممنوع می کند.

    Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ، بر خلاف پشته LIFO، پشته FIFO پایین را حرکت نمی دهد، بلکه بالا را حرکت می دهد. کلمات نوشته شده در پشته FIFO به تدریج از بالا به پایین حرکت می کنند، از جایی که خوانده می شوند زیرا بسیار مهم هستند و سرعت نوشتن و خواندن توسط سیگنال های کنترل خارجی تعیین می شود و به یکدیگر مرتبط نیستند.

    پیاده سازی نرم افزار پشته FIFO در این بخش در نظر گرفته نمی شود، زیرا به ندرت در عمل استفاده می شود.

    راه های سازماندهی حافظه - مفهوم و انواع. طبقه بندی و ویژگی های دسته "روش های سازماندهی حافظه" 2017، 2018.

    دستگاه ذخیره سازی، به عنوان یک قاعده، حاوی بسیاری از عناصر ذخیره سازی یکسان است که یک آرایه ذخیره سازی (SM) را تشکیل می دهند. آرایه به سلول های جداگانه تقسیم می شود. هر یک از آنها برای ذخیره یک کد باینری طراحی شده اند، تعداد بیت هایی که در آنها با عرض نمونه حافظه تعیین می شود (به ویژه، می تواند یک، نیم یا چند کلمه ماشین باشد). نحوه سازماندهی حافظه به روش های قرار دادن و جستجوی اطلاعات در آرایه ذخیره سازی بستگی دارد. بر این اساس، حافظه آدرس، انجمنی و پشته (ذخیره) متمایز می شود.

    حافظه آدرسدر حافظه با یک سازمان آدرس، قرار دادن و جستجوی اطلاعات در SM بر اساس استفاده از آدرس ذخیره کلمه (شماره، دستور و غیره) است، آدرس، شماره سلول SM است که این کلمه در آن وجود دارد. واقع شده است.

    هنگام نوشتن (یا خواندن) یک کلمه در SM، دستور شروع کننده این عملیات باید نشانی (شماره سلول) را نشان دهد که در آن ضبط (خواندن) انجام می شود.

    ساختار حافظه آدرس معمولی نشان داده شده در شکل. 4.2 حاوی آرایه ذخیره سازی است نسلول های n-bit و قاب سخت افزاری آن، از جمله ثبت آدرس RgA، داشتن k(k> لاگ 2 ن)بیت، ثبت اطلاعات RGI،بلوک واکشی آدرس BAS،واحد تقویت کننده بازخوانی اتوبوس،بلوک تقویت کننده های بیت - سازنده سیگنال های ضبط BUZو مدیریت حافظه BUP.

    شکل 4.2. ساختار حافظه آدرس.

    با کد آدرس RgA BAVسیگنال هایی را در سلول حافظه مربوطه تولید می کند که اجازه خواندن یا نوشتن یک کلمه در سلول را می دهد.

    چرخه دسترسی به حافظه با ورود شروع می شود BUPاز بیرون سیگنال درخواست.بخش کلی چرخه گردش شامل دریافت در است RgA بااتوبوس آدرس ایالات متحده آمریکاآدرس های تجدید نظر و پذیرش در BUPو رمزگشایی سیگنال کنترل عمل،نشان دهنده نوع عملیات درخواستی (خواندن یا نوشتن).

    بعد هنگام خواندن BASآدرس را رمزگشایی می کند، سیگنال های خواندن را به سلول مشخص شده توسط آدرس ارسال می کند ZM،در این حالت، کد کلمه نوشته شده در سلول توسط تقویت کننده های بازخوانی خوانده می شود اتوبوسو به RGI.سپس در حافظه با خواندن مخرب (هنگام خواندن، تمام عناصر ذخیره سازی سلول در حالت صفر قرار می گیرند). اطلاعات در سلول با نوشتن روی آن از دوباره تولید می شود RGIکلمه را بخوانید عملیات خواندن با صدور یک کلمه از تکمیل می شود RGIبه گذرگاه اطلاعات خروجی SHIout

    هنگام نوشتن، علاوه بر انجام بخش کلی بالا از چرخه دسترسی، کلمه در حال نوشتن از گذرگاه اطلاعات ورودی دریافت می شود. SHIVx V RGI.خود رکورد شامل دو عملیات است: پاک کردن سلول (بازنشانی به 0) و خود رکورد. برای این BASابتدا سلول مشخص شده توسط آدرس در را انتخاب و پاک می کند RgA.پاکسازی توسط سیگنال‌های خواندن کلمه در سلول انجام می‌شود، اما تقویت‌کننده‌های خواندن و از اتوبوس V RGIاطلاعات دریافت نمی شود سپس به منتخب BASسلول کلمه از نوشته شده است RGI.

    بلوک کنترل BUPتوالی های لازم از سیگنال های کنترلی را تولید می کند که عملیات گره های حافظه فردی را آغاز می کند. زنجیره های انتقال سیگنال کنترل با خطوط نازک در شکل 1 نشان داده شده است. 4.2.

    حافظه انجمنیدر حافظه این نوع، جستجوی اطلاعات لازم نه با آدرس، بلکه با محتوای آن (با ویژگی انجمنی) انجام می شود. در این مورد، جستجو توسط یک ویژگی انجمنی (یا به صورت متوالی توسط ارقام مجزای این ویژگی) به طور موازی برای تمام سلول‌های آرایه ذخیره‌سازی اتفاق می‌افتد. در بسیاری از موارد، جستجوی انجمنی می تواند پردازش داده ها را به طور قابل توجهی ساده و سرعت بخشد. این به این دلیل به دست می آید که در این نوع حافظه عملیات خواندن اطلاعات با اجرای تعدادی عملیات منطقی ترکیب می شود.

    یک ساختار معمولی از حافظه انجمنی در شکل نشان داده شده است. 4.3. آرایه ذخیره سازی شامل ن + 1) سلول های بیت. بیت سرویس n ام برای نشان دادن اشغال سلول استفاده می شود (0 - سلول آزاد است، 1 - کلمه در سلول نوشته شده است).

    در گذرگاه اطلاعات ورودی SHIVxبه ثبت ویژگی انجمنی RGAPدر ارقام 0-و-1 وارد می شود پ-بیت پرس و جو انجمن، و به ثبت نام ماسک RgM - کد ماسک جستجو، با رقم n RgMروی 0 تنظیم کنید. جستجوی انجمنی فقط برای مجموعه ای از ارقام انجام می شود RGAP،که «منطبق بر 1 اینچ است RgM(ارقام بدون نقاب RgAP).برای کلماتی که ارقام موجود در ارقام با ارقام بدون نقاب مطابقت دارند RGAP،مدار ترکیبی KS 1 را به بیت های مربوطه از ثبات تطابق تنظیم می کند RgSvو 0 برای بقیه بیت ها. بنابراین ارزش j-roتخلیه در RgSvبا عبارت تعریف می شود

    RgSv(j) =

    جایی که RGAP[من]، RgM[من و ZM - مقادیر رقم i به ترتیب RGAP، RGMو سلول j ZM.

    طرح ترکیبی برای تولید نتیجه یک فراخوانی انجمنی FSاز یک کلمه تشکیل شده در RgSv،سیگنال های  0 ,  1 ,  2 مربوط به عدم وجود کلمات در ZM،ارضای ویژگی تداعی، وجود یک یا چند کلمه از این قبیل. برای این FSتوابع بولی زیر را پیاده سازی می کند:

     0 =

     1 = РгСв

     2 =  0  1

    شکل دهی محتوا RgSvو  0 ,  1 ,  2 را بر اساس محتوا سیگنال می دهد RGAP، RGMو ZMعملیات کنترل انجمن نامیده می شود. این عملیات بخشی جدایی ناپذیر از عملیات خواندن و نوشتن است، اگرچه مقدار مستقلی نیز دارد.

    هنگام خواندن، ارتباط ابتدا توسط یک ویژگی تداعی در کنترل می شود RGAP.سپس در  0 = 1 خواندن به دلیل عدم وجود اطلاعات مورد نیاز لغو می شود، زمانی که  1 = 1 خوانده می شود RGIکلمه یافت شده، با  2 = 1 in RGIکلمه از سلولی خوانده می شود که کمترین تعداد را در بین سلول هایی با علامت 1 اینچ دارد RgSt.از جانب RGIکلمه خوانده شده در تاریخ صادر می شود SHIout

    برنج. 4.3. ساختار حافظه انجمنی

    هنگام نوشتن، ابتدا یک سلول آزاد جستجو می شود. برای انجام این کار، یک عملیات کنترل انجمن انجام می شود زمانی که RgAP= 111. ..10 و RgM== 00... 01. در این حالت سلول های آزاد 1 اینچ علامت گذاری می شوند RgSt.برای ضبط، یک سلول آزاد با کمترین تعداد انتخاب می شود. حاوی کلمه دریافت شده از SHIVx V RGI.

    برنج. 4.4. پشته حافظه

    با کمک عملیات کنترل انجمن، می توان بدون خواندن کلمات از حافظه، بر اساس محتوا تعیین کرد RgSv،چند کلمه در حافظه وجود دارد که یک ویژگی انجمنی را برآورده می کند، به عنوان مثال، برای اجرای پرس و جوهایی مانند چند دانش آموز در یک گروه نمره عالی در یک رشته خاص دارند. هنگام استفاده از مدارهای ترکیبی مناسب در حافظه انجمنی، عملیات منطقی کاملاً پیچیده ای را می توان انجام داد، مانند جستجوی یک عدد بزرگتر (کوچکتر)، جستجوی کلمات محصور در محدوده های خاص، جستجوی حداکثر (حداقل) عدد و غیره.

    توجه داشته باشید که حافظه انجمنی به عناصر ذخیره سازی نیاز دارد که بدون از بین بردن اطلاعات ثبت شده در آنها قابل خواندن باشد. این به این دلیل است که در جستجوی انجمنی، خواندن در کل SM برای همه بیت‌های بدون ماسک انجام می‌شود و جایی برای ذخیره اطلاعاتی که به طور موقت با خواندن از بین می‌روند وجود ندارد.

    پشته حافظه،و همچنین انجمنی، بدون خطاب است. که در پشته حافظه(شکل 4.4) سلول ها یک آرایه یک بعدی را تشکیل می دهند که در آن سلول های همسایه توسط زنجیره های بیت انتقال کلمه به یکدیگر متصل می شوند. یک کلمه جدید در سلول بالایی (سلول 0) نوشته می شود، در حالی که تمام کلمات ضبط شده قبلی (از جمله کلمه ای که در سلول 0 بود) به سلول های مجاور با اعداد بزرگتر 1 منتقل می شوند. خواندن فقط از سلول حافظه بالایی (صفر) امکان پذیر است، در حالی که اگر خواندن با حذف انجام شود، تمام کلمات دیگر در حافظه به سلول های مجاور با اعداد بالاتر به سمت بالا منتقل می شوند. در این حافظه، ترتیب خواندن کلمات از این قانون پیروی می کند: آخرین وارد شده - ابتدا خدمت کرد.در تعدادی از دستگاه های مورد نظر، عملیات خواندن ساده یک کلمه از سلول صفر (بدون حذف آن و جابجایی کلمه در حافظه) نیز ارائه شده است. گاهی اوقات حافظه پشته با شمارنده پشته ارائه می شود سینه،نمایش تعداد کلمات حفظ شده علامت MFST = 0 مسابقات خالی، پشته، MFST = ن - 1 - پشته کامل.

    اغلب حافظه پشته ای با استفاده از حافظه آدرس سازماندهی می شود. حافظه پشته به طور گسترده ای هنگام پردازش ساختارهای داده تودرتو استفاده می شود.

    پاراگراف های بعدی این فصل انواع مختلف حافظه را با سازماندهی آدرس توضیح می دهد. حافظه انجمنی در تجهیزات برای تخصیص حافظه پویا و همچنین برای ساخت حافظه کش استفاده می شود.

    در دستگاه‌های ذخیره‌سازی انجمنی، اطلاعات توسط یک ویژگی تداعی ثبت شده در هر سلول حافظه جستجو می‌شود.

    در حافظه این نوع، جستجوی اطلاعات لازم نه با آدرس، بلکه با محتوای خود اطلاعات (یعنی با ویژگی تداعی) انجام می شود. در این مورد، جستجو بر اساس ویژگی انجمنی به طور موازی برای تمام سلول های حافظه اتفاق می افتد. جستجوی انجمنی به شما امکان می دهد پردازش داده ها را به طور قابل توجهی ساده و سرعت بخشید. این به این دلیل به دست می آید که در چنین حافظه ای عملیات خواندن اطلاعات با اجرای تعدادی عملیات منطقی ترکیب می شود. به عنوان مثال، می توانید عملیاتی مانند:

    1) حداکثر یا حداقل تعداد را در حافظه جستجو کنید.

    2) جستجو برای کلمات محصور در مرزهای خاص.

    3) نزدیک ترین کلمات به ویژگی تداعی را جستجو کنید، هم از سمت بزرگتر و هم از سمت کوچکتر و غیره.

    ساده ترین حافظه تداعی معمولاً یک عملیات واحد را برای انتخاب کلماتی انجام می دهد که ویژگی آنها با ویژگی تداعی مطابقت دارد.

    آرایه حافظه (SM) شامل N سلول است که هر سلول n+1 بیت است. برای نشان دادن به کارگیری سلول، از بیت n-ام سرویس استفاده می شود. اگر در رقم n 0 وجود داشته باشد، سلول آزاد است، اگر 1 باشد، آنگاه اشغال شده است.

    یک علامت n بیتی وارد ثبات ویژگی RGP در ورودی SD می شود و کد ماسک جستجو وارد رجیستر ماسک RGM می شود. در این مورد، بیت n رجیستر RGM روی 0 تنظیم می شود. جستجوی انجمنی فقط روی آن بیت هایی از ویژگی انجام می شود که با "1" در ثبات ماسک مطابقت دارند، یعنی روی بیت های به اصطلاح RGM بدون ماسک. . بنابراین، با تنظیم کد ماسک M، می توان به طور دلخواه آن ارقام ویژگی را که جستجو توسط آن انجام می شود انتخاب کرد.

    برای کلماتی از 3M، که در آن همه ارقام با بیت‌های RGP بدون ماسک مطابقت دارند، مدار ترکیبی KS 1 "1" را در بیت‌های مربوطه ثبت تطابق RGC تنظیم می‌کند. بنابراین، اگر رقم کلمه j با بیت های غیرقابل ماسک علامت منطبق باشد، در بیت j رجیستر RGC "1" نوشته می شود، در غیر این صورت "0". ورودی "1" در رقم j ام RGC به این معنی است که کلمه j با ویژگی مطابقت دارد. کلمه ای است که در واقع در ZM جستجو می شود.

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

    اطلاعات به طور موازی برای همه سلول ها با مقایسه پرس و جو با ویژگی انجمنی هر سلول جستجو می شود.

    نتیجه جستجو توسط یک مدار ترکیبی ویژه تولید می شود که سیگنال هایی را تولید می کند که نشان دهنده عدم وجود کلماتی است که شرایط جستجو را برآورده می کنند، وجود تنها یک کلمه، وجود چندین کلمه با چنین ویژگی ارتباطی.

    پس از تشکیل و پردازش سیگنال های هشدار، مدار کنترل اطلاعات لازم را می خواند.

    هنگام نوشتن اطلاعات، ابتدا یک سلول آزاد پیدا می شود. برای انجام این کار، یک عملیات جستجوی انجمنی روی یک ویژگی انجام می‌شود که در همه بیت‌ها "0" وجود دارد و در همه بیت‌ها "0" به جز بیت‌های n-ام کم‌اهمیت‌تر در رجیستر ماسک نوشته می‌شود.

    بنابراین، آن سلول‌های SM مشخص می‌شوند که در آن‌ها «0» در رقم n نوشته می‌شود، که به این معنی است که سلول خالی است. کلمه ثبت اطلاعات RGI به سلول آزاد با کوچکترین عدد نوشته می شود.

    هنگام استفاده از مدارهای ترکیبی اضافی در حافظه انجمنی، می توانید عملیات منطقی مختلف، تعیین حداکثر یا حداقل تعداد، تعداد کلماتی که دارای ویژگی انجمنی یکسان هستند و غیره انجام دهید. شکل 1 ساختار حافظه انجمنی را نشان می دهد. سلول های حافظه یک دستگاه ذخیره سازی انجمنی باید عناصر حافظه ایستا باشند؛ در حافظه انجمنی، همه سلول ها به طور همزمان قابل دسترسی هستند و نباید توسط چرخه های تازه سازی قطع شوند. حافظه انجمنی سریعترین، اما بسیار گران است، زیرا نیاز به معرفی یک مدار مقایسه اضافی دارد که به شما امکان می دهد هر سلول حافظه را جستجو کنید. بنابراین، چنین حافظه ای معمولاً به شکل خالص خود استفاده نمی شود و دستگاه های حافظه کش با سرعت بالا معمولاً به صورت جزئی تداعی کننده پیاده سازی می شوند.

    در ریزپردازنده ها، حافظه انجمنی (حافظه با انتخاب محتوا) به عنوان بخشی از حافظه پنهان برای ذخیره بخشی آدرس دستورالعمل ها و عملوندهای برنامه اجرایی استفاده می شود. در این حالت برای دستور بعدی یا عملوند مورد نیاز نیازی به دسترسی به RAM نیست، کافی است آدرس مورد نیاز را در رجیستر علامت انجمنی قرار داده و در صورت موجود بودن اطلاعات مورد نیاز در حافظه نهان، آن را انجام دهید. بلافاصله صادر شد. دسترسی به RAM تنها در صورتی ضروری خواهد بود که اطلاعات مورد نیاز در حافظه پنهان نباشد. با استفاده از کش در این روش، تعداد دسترسی های رم کاهش می یابد، که باعث صرفه جویی در زمان می شود، زیرا دسترسی کش حدود 10 برابر کمتر از دسترسی به رم زمان می برد.

    پشته سازماندهی حافظه

    اگر نوشتن و خواندن از طریق یک رجیستر انجام شود، چنین دستگاهی حافظه پشته نامیده می شود که بر اساس اصل "اولین ورودی - آخرین خروجی" (FILO-First Input، Last Output) کار می کند.

    حافظه پشته ای و همچنین تداعی کننده، غیر آدرس پذیر است، مجموعه ای از سلول ها است که یک آرایه یک بعدی را تشکیل می دهند که در آن سلول های همسایه توسط زنجیره های بیتی انتقال کلمه به یکدیگر متصل می شوند. کلمات همیشه در سلول صفر بالایی نوشته می شوند. در این مورد، تمام کلمات ضبط شده قبلی یک سلول به پایین منتقل می شوند. خواندن به ترتیب معکوس نوشتن انجام می شود.

    حافظه پشته ای گسترده شده است. برای پیاده سازی آن در رم، با استفاده از برنامه های سیستم عامل، بخشی از حافظه به پشته اختصاص می یابد. در عمل، حافظه پشته اغلب با استفاده از حافظه آدرس معمولی سازماندهی می شود.

    سازماندهی حافظه پشته را به عنوان حافظه ای که از سلول های حافظه به هم پیوسته تشکیل شده است در نظر بگیرید که در آن هنگام نوشتن کلمه جدید در پشته، اطلاعات به پایین منتقل می شود (شکل 2). تبادل اطلاعات فقط از طریق سلول حافظه بالایی انجام می شود. هنگام خواندن کلمات از پشته، بسته به سازماندهی پشته، ممکن است کلمه از حافظه پشته حذف شود یا در اطراف حلقه جابجا شود. حالت خواندن - آخرین ورود، اولین خروج - LIFO (آخرین در اولین خروج) نامیده می شود.


    شکل 2. سازماندهی حافظه پشته.

    پیاده سازی سخت افزاری چنین حافظه ای همیشه مناسب نیست و اغلب حافظه پشته توسط نرم افزار در حافظه اصلی رایانه سازماندهی می شود که به شما امکان می دهد بسته به نیاز اندازه پشته را تغییر دهید. هنگام سازماندهی یک پشته در حافظه اصلی، یک ثبت آدرس ویژه - "اشاره گر پشته" اختصاص داده می شود. نشانگر پشته حاوی آدرس آخرین کلمه ای است که روی پشته فشار داده شده است. هنگامی که یک کلمه در پشته نوشته می شود، آدرس بالای پشته به طور خودکار کاهش می یابد، زمانی که یک کلمه خوانده می شود، به طور خودکار افزایش می یابد. حافظه پشته معمولاً برای ذخیره وضعیت برنامه جاری هنگام پردازش یک وقفه استفاده می شود. پس از اجرای برنامه وقفه، وضعیت تمام ثبات هایی که در زمان قطع برنامه وجود داشته اند به ترتیب معکوس ضبط بازیابی می شود. همچنین می توانید داده های برنامه را در پشته ذخیره کنید، که راحت است زیرا هنگام دسترسی به پشته، نیازی به تعیین آدرس سلول حافظه در برنامه ندارید؛ استخراج اطلاعات از پشته نیز بدون تعیین آدرس انجام می شود.

    که در حافظه انجمنیعناصر نه با آدرس، بلکه بر اساس محتوا انتخاب می شوند. اجازه دهید مفهوم آخر را با جزئیات بیشتری توضیح دهیم. برای حافظه با سازماندهی آدرس، این مفهوم معرفی شد حداقل واحد آدرس پذیر(MAE) به عنوان یک قطعه داده که دارای یک آدرس فردی است. اجازه دهید یک مفهوم مشابه را برای حافظه انجمنی، و ما این حداقل واحد ذخیره سازی در آن خواهیم بود حافظه انجمنیزنگ زدن رشته حافظه انجمنی(بند). هر StrAP شامل دو فیلد است: یک فیلد برچسب و یک فیلد داده. درخواست خواندن به حافظه انجمنی را می توان با کلمات به صورت زیر بیان کرد: یک خط (خطوط) را انتخاب کنید که برچسب آن برابر با مقدار داده شده باشد.

    به طور خاص، یکی از سه نتیجه با چنین پرس و جو امکان پذیر است:

    1. دقیقاً یک خط با تگ داده شده وجود دارد.
    2. چندین خط با برچسب داده شده وجود دارد.
    3. هیچ ردیفی با تگ داده شده وجود ندارد.

    جستجوی رکورد بر اساس ویژگی فعالیتی است که برای دسترسی به پایگاه داده معمولی است و جستجو در پایگاه داده اغلب یک جستجوی انجمنی است. برای انجام چنین جستجویی، باید تمام ورودی ها را بررسی کنید و تگ داده شده را با برچسب هر ورودی مقایسه کنید. این را می توان در هنگام استفاده از حافظه آدرس پذیر معمولی برای ذخیره رکوردها نیز انجام داد (و واضح است که این کار به زمان زیادی نیاز دارد - متناسب با تعداد رکوردهای ذخیره شده!). در باره حافظه انجمنیبگویید چه زمانی واکشی ارتباطی داده ها از حافظه توسط سخت افزار پشتیبانی می شود. هنگام نوشتن در حافظه انجمنی، عنصر داده به همراه تگ ذاتی این عنصر در StrAP قرار می گیرد. برای انجام این کار، می توانید از هر STRAP رایگان استفاده کنید. انواع سازماندهی ساختاری حافظه کش یا راه هایی برای نگاشت RAM به حافظه پنهان را در نظر بگیرید.

    کش کاملاً انجمنی

    طرح یک کش کاملاً مرتبط در شکل نشان داده شده است (شکل زیر را ببینید).

    اجازه دهید الگوریتم عملکرد سیستم با حافظه کش را شرح دهیم. در ابتدای عملیات، حافظه کش خالی است. هنگامی که اولین دستور در حین واکشی اجرا می شود، کد آن و همچنین چند بایت مجاور دیگر از کد برنامه، (به آرامی) به یکی از خطوط کش و در همان زمان به قسمت بالای آدرس منتقل می شود. در تگ مربوطه نوشته می شود. به این ترتیب خط کش پر می شود.

    اگر واکشی های بعدی از این بخش امکان پذیر باشد، آنها از CASH (سریع) - "CASH hit" ساخته می شوند. اگر معلوم شد که عنصر مورد نیاز در حافظه پنهان نیست، - "CASH miss". در این حالت، RAM (به آرامی) دسترسی پیدا می کند و خط کش بعدی به طور همزمان پر می شود.

    نمودار کش کاملاً انجمنی

    دسترسی به کش به صورت زیر است. پس از تشکیل آدرس اجرا، بیت های بالای آن که تگ را تشکیل می دهند، به صورت سخت افزاری (سریع) و همزمان با تگ های تمام خطوط کش مقایسه می شوند. در این حالت، تنها دو حالت از سه حالت ذکر شده در بالا امکان پذیر است: یا همه مقایسه ها یک نتیجه منفی می دهند (نقد CASH)، یا یک نتیجه مثبت مقایسه دقیقاً برای یک ردیف ثبت می شود (Hit CASH).

    هنگام خواندن، اگر ضربه CACHE ثابت شود، بیت‌های پایین آدرس، موقعیتی را در خط کش تعیین می‌کنند که از آن بایت‌ها انتخاب می‌شود، و نوع عملیات تعداد بایت‌ها را تعیین می‌کند. بدیهی است که اگر طول یک عنصر داده از یک بایت بیشتر شود، در آن صورت شرایطی ممکن است که این عنصر (در قسمت‌هایی) در دو (یا چند) خط کش مختلف قرار گیرد، زمان واکشی چنین عنصری افزایش می‌یابد. این را می توان با تراز کردن عملوندها و دستورالعمل ها در امتداد مرزهای خط کش، که هنگام توسعه مترجم های بهینه سازی یا هنگام بهینه سازی دستی کد در نظر گرفته می شود، خنثی کرد.

    اگر یک حافظه پنهان رخ داد و هیچ خط آزاد در حافظه پنهان وجود نداشت، باید یک خط کش را با خط دیگری جایگزین کنید.

    هدف اصلی استراتژی جایگزینی این است که خطوطی را که به احتمال زیاد در آینده نزدیک به آنها دسترسی پیدا می کنند، در حافظه پنهان نگه داشته و خطوطی را جایگزین کند که در زمان های دورتر یا اصلاً به آنها دسترسی پیدا نمی شود. بدیهی است که الگوریتم بهینه الگوریتمی خواهد بود که جایگزین خطی شود که در آینده نسبت به هر خط کش دیگری به آن دسترسی پیدا خواهد کرد.

    متأسفانه، چنین پیش‌بینی عملاً غیرقابل تحقق است و باید به الگوریتم‌هایی متوسل شد که از الگوریتم بهینه پایین‌تر هستند. صرف نظر از الگوریتم جایگزینی مورد استفاده، برای دستیابی به سرعت بالا باید در سخت افزار پیاده سازی شود.

    در میان بسیاری از الگوریتم‌های جایگزینی ممکن، چهار الگوریتم رایج‌ترین هستند که به ترتیب کاهش بازده نسبی آنها در نظر گرفته می‌شوند. هر یک از اینها را می توان در یک کش کاملاً انجمنی استفاده کرد.

    کارآمدترین الگوریتم جایگزینی بر اساس قدیمی ترین استفاده است ( LRU - کمترین استفاده اخیر ) که جایگزین خط کشی می شود که برای طولانی ترین زمان به آن دسترسی نداشته است. مطالعات نشان داده اند که الگوریتم LRU که به عقب "نگاه می کند" در مقایسه با الگوریتم بهینه ای که به جلو نگاه می کند، عملکرد بسیار خوبی دارد.

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

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

    الگوریتم جایگزینی دیگر، الگوریتم اول ورود، اولین خروج است ( FIFO-First In First Out ). این جایگزین خطی می شود که طولانی ترین مدت در حافظه پنهان بوده است. این الگوریتم به راحتی با استفاده از صفی که قبلا بحث شد پیاده سازی می شود، تنها با این تفاوت که پس از دسترسی به رشته، موقعیت مرجع مربوطه در صف تغییر نمی کند.

    الگوریتم دیگر جایگزینی رشته ای است که کمتر استفاده می شود (LFU - Least Frequently Used). خطی در حافظه نهان که کمترین دسترسی را داشته است جایگزین می شود. این اصل را می توان با مرتبط کردن هر ردیف با یک شمارنده ضربه، که پس از هر ضربه به محتویات آن اضافه می شود، به کار برد. رقیب اصلی برای جایگزینی رشته ای است که شمارنده آن دارای کوچکترین عدد است.

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

    علاوه بر برچسب و بایت های داده، خط کش ممکن است حاوی فیلدهای سرویس اضافی باشد که در میان آنها، اول از همه، بیت اعتبار V (از معتبر - معتبر) و بیت اصلاح M (از تغییر - تغییر، تغییر) باید باشد. اشاره شد. هنگامی که خط کش بعدی پر شد، V به حالت "معتبر" و M به حالت "تغییر نشده" تنظیم می شود. اگر محتویات این خط در حین اجرای برنامه تغییر کرده باشد، بیت M تغییر می کند و به این معنی است که هنگام جایگزینی این خط، محتوای آن باید در RAM بازنویسی شود. اگر به دلایلی یک کپی از عنصری از این رشته که در جای دیگری (مثلاً در RAM) ذخیره شده است تغییر کند، بیت V تغییر می‌کند. هنگام دسترسی به چنین رشته‌ای، خطای حافظه پنهان ثبت می‌شود (علیرغم اینکه تگ مطابقت دارد) ، و تماس با RAM اصلی خواهد بود. علاوه بر این، قسمت سرویس ممکن است حاوی بیت هایی باشد که از الگوریتم LRU پشتیبانی می کنند.

    تخمین حجم تجهیزات

    مقدار معمول حافظه کش در یک سیستم مدرن 8 ... 1024 کیلوبایت است و طول خط کش 4 ... 32 بایت است. ارزیابی بیشتر برای اندازه کش ۲۵۶ کیلوبایتی و طول خط ۳۲ بایت انجام شده است که برای سیستم‌هایی با پردازنده‌های Pentium و PentiumPro معمول است. طول تگ 27 بیت است و تعداد خطوط در حافظه نهان 256K/32=8192 خواهد بود. برای پیاده‌سازی ساختار فوق به تعداد مقایسه‌کننده‌های دیجیتال کدهای ۲۷ بیتی نیاز است.

    یک تخمین تقریبی از هزینه تجهیزات برای ساخت یک مقایسهگر دیجیتال مقدار 10 ترانزیستور / بیت را به دست می دهد و تعداد کل ترانزیستورها در بلوک مقایسه کننده به تنهایی برابر با:

    10*27*8192 = 2 211 840,

    که تقریباً یک و نیم برابر کمتر از تعداد کل ترانزیستورهای یک تراشه پنتیوم است. بنابراین، واضح است که ساختار توصیف شده یک حافظه نهان کاملاً انجمنی () تنها با تعداد کمی از خطوط در حافظه پنهان قابل تحقق است، یعنی. با مقدار کمی کش (عملاً بیش از 32 ... 64 خط). یک کش بزرگتر بر اساس ساختار متفاوتی ساخته شده است.

    جدول صفحات چند سطحیبه چندین دسترسی به حافظه اصلی نیاز دارد، بنابراین زمان زیادی می برد. در برخی موارد، چنین تاخیری غیرقابل قبول است. مشکل شتاب جستجو در سطح معماری کامپیوتر حل شده است.

    به دلیل خاصیت محلی بودن، اکثر برنامه ها برای مدتی به تعداد کمی از صفحات دسترسی دارند، بنابراین تنها بخش کوچکی از جدول صفحه به طور فعال استفاده می شود.

    راه حل طبیعی برای مشکل شتاب، تجهیز کامپیوتر به یک دستگاه سخت افزاری برای نگاشت صفحات مجازی به صفحات فیزیکی بدون مراجعه به جدول صفحه است، یعنی داشتن یک حافظه کش کوچک و سریع که بخشی از جدول صفحه را ذخیره می کند. در حال حاضر مورد نیاز است. این دستگاه نام دارد حافظه انجمنی، گاهی اوقات از اصطلاح بافر نگاهبانی ترجمه (TLB) نیز استفاده می کنند.

    ورودی یک جدول در حافظه انجمنی(یک ورودی) حاوی اطلاعاتی در مورد یک صفحه مجازی است: ویژگی های آن و فریمی که در آن قرار دارد. این فیلدها دقیقاً با فیلدهای جدول صفحه مطابقت دارند.

    زیرا حافظه انجمنیفقط برخی از ورودی های جدول صفحه را شامل می شود، هر ورودی در TLB باید دارای یک فیلد با یک عدد باشد صفحه مجازی. حافظه را انجمنی می نامند، زیرا به طور همزمان تعداد موارد نمایش داده شده را با هم مقایسه می کند صفحه مجازیبا فیلد مربوطه در تمام ردیف های این جدول کوچک. بنابراین، این نوع حافظه بسیار گران است. در خط، میدان صفحه مجازیکه با مقدار مورد نظر منطبق بود، شماره قاب صفحه پیدا می شود. تعداد معمول ورودی ها در TLB از 8 تا 4096 است. افزایش تعداد ورودی ها در حافظه انجمنیباید عواملی مانند اندازه حافظه پنهان اصلی و تعداد دسترسی به حافظه در هر دستورالعمل را در نظر گرفت.

    عملکرد مدیر حافظه را در حضور در نظر بگیرید حافظه انجمنی.

    در ابتدای نمایش اطلاعات صفحه مجازیدر فیزیکی یافت می شود در حافظه انجمنی. اگر ورودی مورد نیاز پیدا شود، همه چیز خوب است، به جز موارد نقض امتیاز، زمانی که درخواست دسترسی به حافظه رد می شود.

    اگر ورودی مورد نظر در حافظه انجمنیوجود ندارد، نمایش از طریق جدول صفحه است. یکی از مدخل های موجود در حافظه انجمنیورودی از جدول صفحه پیدا شد. در اینجا ما با مشکل جایگزینی سنتی برای هر کش مواجه هستیم (یعنی اینکه کدام یک از ورودی های کش نیاز به تغییر دارد). طرح حافظه انجمنیباید سوابق را به گونه ای سازماندهی کند که بتوان تصمیم گرفت که با اضافه شدن رکوردهای جدید، کدام یک از رکوردهای قدیمی حذف شوند.

    تعداد جستجوهای موفق شماره صفحه در حافظه انجمنیدر رابطه با تعداد کل جستجوها، نسبت ضربه (تصادفی) (نسبت، نسبت) نامیده می شود. گاهی اوقات از عبارت cache hit درصد نیز استفاده می شود. بنابراین نسبت ضربه بخشی از پیوندها است که می توان با استفاده از آن ایجاد کرد حافظه انجمنی. مراجعه به همان صفحات باعث افزایش ضریب بازدید می شود. هر چه نسبت ضربه بیشتر باشد، میانگین زمان دسترسی به داده ها در RAM کمتر است.

    برای مثال، فرض کنید 100 ns طول می کشد تا آدرس در صورت از دست رفتن حافظه پنهان از طریق جدول صفحه، و برای تعیین آدرس در صورت برخورد حافظه پنهان در صفحه، تعیین شود. حافظه انجمنی– 20 ns. با نسبت ضربه 90 درصد، میانگین زمان وضوح آدرس 0.9x20+0.1x100 = 28ns است.

    عملکرد کاملا قابل قبول سیستم عامل های مدرن کارایی استفاده را ثابت می کند حافظه انجمنی. احتمال زیاد یافتن داده در حافظه انجمنیمرتبط با وجود ویژگی های عینی داده ها: مکان مکانی و زمانی.

    توجه به این نکته ضروری است. هنگام تغییر زمینه فرآیندها، باید اطمینان حاصل کنید که فرآیند جدید "درون" نمی شود حافظه انجمنیاطلاعات مربوط به فرآیند قبلی، مانند پاک کردن آن. بنابراین استفاده حافظه انجمنیزمان تعویض متن را افزایش می دهد.

    دو سطحی ( حافظه انجمنی+ جدول صفحه ) طرح ترجمه آدرس نمونه بارز سلسله مراتب حافظه بر اساس استفاده از اصل محلی بودن است، همانطور که در مقدمه سخنرانی قبلی مورد بحث قرار گرفت.

    جدول صفحه معکوس

    با وجود سازماندهی چند لایه، ذخیره کردن چندین جدول صفحه بزرگ هنوز یک چالش است. ارزش آن به ویژه برای معماری های 64 بیتی، که در آن تعداد صفحات مجازی بسیار زیاد است، مرتبط است. راه حل استفاده است جدول صفحه معکوس(جدول صفحه معکوس). این رویکرد در ماشین های PowerPC، برخی از ایستگاه های کاری Hewlett-Packard، IBM RT، IBM AS/400 و چندین مورد دیگر استفاده می شود.

    این جدول شامل یک ورودی برای هر فریم صفحه حافظه فیزیکی است. ضروری است که یک جدول برای همه فرآیندها کافی باشد. بنابراین، برای ذخیره تابع نگاشت، بدون توجه به بیتی بودن معماری، اندازه و تعداد فرآیندها، به بخش ثابتی از حافظه اصلی نیاز است.

    با وجود صرفه جویی در رم، استفاده از جدول وارونهیک نقطه ضعف قابل توجه دارد - ورودی های موجود در آن (مانند حافظه انجمنی) به ترتیب صعودی شماره صفحات مجازی مرتب نشده اند، که ترجمه آدرس را پیچیده می کند. یکی از راه های حل این مشکل استفاده از جدول هش است. آدرس های مجازی. در همان زمان، بخش آدرس مجازی، که شماره صفحه است، با استفاده از یک تابع هش به جدول هش نگاشت می شود. هر صفحه از حافظه فیزیکی در اینجا مربوط به یک ورودی در جدول هش و جدول صفحه معکوس. آدرس های مجازی، که دارای مقدار هش یکسانی هستند، به یکدیگر متصل می شوند. به طور معمول، طول زنجیره از دو ورودی تجاوز نمی کند.

    اندازه صفحه

    توسعه دهندگان سیستم عامل برای ماشین های موجود به ندرت توانایی تأثیرگذاری بر اندازه صفحه را دارند. با این حال، برای کامپیوترهای تازه ایجاد شده، تصمیم در مورد اندازه بهینه صفحه مرتبط است. همانطور که انتظار دارید، بهترین اندازه وجود ندارد. بلکه مجموعه ای از عوامل هستند که بر اندازه تاثیر می گذارند. به طور معمول، اندازه صفحه قدرت دو از 29 تا 214 بایت است.