حافظه تداعی‌گر
حافظه آدرس پذیر محتوا ( CAM ) نوع خاصی از حافظه رایانه است که در برخی از برنامه های جستجو با سرعت بسیار بالا استفاده می شود. همچنین به عنوان حافظه انجمنی یا ذخیره انجمنی شناخته می شود و داده های جستجوی ورودی را با جدول داده ها مقایسه می کند و آدرس داده های مطابقت را میدهد.
واحد تشخیص کلمات داده توسط دادلی آلن باک در سال 1955 پیشنهاد داده شد.
CAM غالباً در دستگاههای شبکه مورد استفاده قرار می گیرد که سرعت انتقال اطلاعات و جدول جدول مسیریابی را بهبود می بخشد. از این نوع حافظه انجمنی در حافظه نهان نیز استفاده می شود. در حافظه پنهان انجمنی ، آدرس و محتوا هر دو در کنار هم ذخیره می شوند. وقتی آدرس مطابقت دارد ، محتوای مربوطه از حافظه نهان واکشی می شود.
برخلاف حافظه رایانه استاندارد ، حافظه دسترسی تصادفی (RAM) ، که در آن کاربر آدرس حافظه را تأمین می کند و رام کلمه داده ذخیره شده در آن آدرس را برمی گرداند ، یک CAM به شیوه ای طراحی شده است که کاربر یک کلمه داده را تهیه می کند و CAM کل آن را جستجو می کند حافظه برای دیدن اینکه آیا آن کلمه داده در هر نقطه از آن ذخیره شده است یا نه. اگر کلمه داده شده پیدا شود ، CAM لیستی از یک یا چند آدرس ذخیره سازی را که کلمه در آن پیدا شده است میدهد. بنابراین CAM تجسم سخت افزاری آن چیزی است که از نظر نرم افزاری آرایه انجمنی نامگذاری شده است .
تعریف اصلی رابط کاربری برای CAM ها و سایر موتورهای جستجوی شبکه در توافق نامه همکاری با نام Look-Aside Interface (LA-1 و LA-1B) که توسط انجمن پردازش شبکه ایجاد شده است ، مشخص شده است. دستگاه های زیادی مطابق با توافق نامه همکاری با شرکت Integrated Device Technology ، Cypress Semiconductor ، IBM ، Broadcom و دیگران تولید شده اند. در 11 دسامبر 2007 ، OIF توافق نامه رابط سریال (SLA) را منتشر کرد.
CAM در برنامه های جستجوی داده بسیار سریعتر از RAM است. اما CAM معایب هزینه ای بیشتری دارد. برخلاف تراشه RAM ، که دارای سلولهای ذخیره سازی ساده است ، هر بیت حافظه جداگانه در یک CAM کاملاً موازی باید مدار مقایسه مربوط به خود را داشته باشد تا تطابق بین بیت ذخیره شده و بیت ورودی را تشخیص دهد. علاوه بر این ، خروجی های مطابقت از هر سلول در کلمه داده باید ترکیب شوند تا سیگنال مطابقت کلمه داده کامل ارائه شود. مدارهای اضافی اندازه فیزیکی و هزینه ساخت تراشه CAM را افزایش می دهد. مدارهای اضافی همچنین اتلاف توان را افزایش می دهد ، زیرا هر مدار مقایسه در هر چرخه ساعت است. در نتیجه ، CAM فقط در برنامه های تخصصی مورد استفاده قرار می گیرد که سرعت جستجو را نمی توان با استفاده از یک روش کم هزینه انجام داد. يكي از پياده سازي هاي موفق موفق ، IC و سيستم پردازشگر هدفي عمومي بود.
برای دستیابی به تعادل متفاوت بین سرعت ، اندازه حافظه و هزینه ، برخی از پیاده سازی ها از عملکرد CAM با استفاده از جستجوی استاندارد درخت یا طرح های هش در سخت افزار ، با استفاده از ترفندهای سخت افزاری مانند تکثیر یا خط لوله برای سرعت بخشیدن به عملکرد موثر ، عملکرد CAM را تقلید می کنند. این طرح ها اغلب در روترها استفاده می شوند.
Binary CAM ساده ترین نوع CAM است و از کلمات جستجوی داده که به طور کامل از 1 و 0 تشکیل شده است استفاده می کند . Ternary CAM ( TCAM ) حالت سوم مطابق "X" "را فراهم می کند" یا به یک یا چند بیت در کلمه ذخیره شده اهمیت نمی دهد ، بنابراین انعطاف پذیری را به جستجو اضافه می کند. به عنوان مثال ، یک کلمه ذخیره شده از "10XX0" در یک CAM سه گانه با هر یک از چهار کلمه جستجو "10000" ، "10010" ، "10100" یا "10110" مطابقت دارد. انعطاف پذیری جستجوگر اضافی نسبت به CAM باینری هزینه بیشتری دارد زیرا سلول حافظه داخلی باید به جای دو حالت CAM باینری ، سه حالت را رمزگذاری کند. این حالت اضافی معمولاً با افزودن بیت ماسک به هر سلول حافظه اجرا می شود.
حافظه با آدرس محتوا اغلب در دستگاه های شبکه رایانه ای استفاده می شود. مثال ، هنگامی که یک سوئیچ شبکه یک فریم داده را از یکی از پورت های خود دریافت می کند ، یک جدول داخلی را با آدرس MAC مبداء و درگاهی که از آن دریافت شده است ، به روزرسانی می کند. سپس آدرس MAC مقصد را در جدول جستجو می کند تا مشخص کند قاب باید به کدام پورت ارسال شود و آن را به آن ارسال می شود. جدول آدرس MAC معمولاً با CAM دودویی پیاده سازی می شود ، بنابراین پورت مقصد را می توان خیلی سریع پیدا کرد ، تاخیر سوئیچ را کاهش می دهد.
CAM های سه تایی اغلب در روترهای شبکه استفاده می شوند ، جایی که هر آدرس دارای دو قسمت است: پیشوند شبکه که بسته به پیکربندی زیر شبکه می تواند اندازه آن متفاوت باشد و آدرس میزبان که بیت های باقیمانده را اشغال می کند. هر زیر شبکه دارای یک ماسک شبکه است که مشخص می کند کدام بیت های آدرس پیشوند شبکه و کدام بیت ها آدرس میزبان هستند. مسیریابی با مشاوره با یک جدول مسیریابی که توسط روتر انجام می شود و شامل هر پیشوند شبکه شناخته شده مقصد ، ماسک شبکه مرتبط و اطلاعات مورد نیاز برای هدایت بسته ها به آن مقصد است ، انجام می شود. بدون CAM ، روتر آدرس مقصد بسته را با هر ورودی در جدول مسیریابی مقایسه می کند ، بیتی و با ماسک شبکه انجام می دهد و آن را با پیشوند شبکه مقایسه می کند. اگر برابر باشند ، از اطلاعات مسیریابی مربوطه برای ارسال بسته استفاده می شود. استفاده از CAM سه گانه برای جدول مسیریابی روند جستجو را بسیار کارآمد می کند. آدرس ها با استفاده از "مهم نیست" برای قسمت میزبان آدرس ذخیره می شوند ، بنابراین جستجوی آدرس مقصد در CAM بلافاصله ورودی مسیریابی صحیح را بازیابی می کند. پوشاندن و مقایسه آن توسط سخت افزار CAM انجام می شود. این در صورتی کار می کند که (الف) ورودی ها به ترتیب کاهش طول ماسک شبکه ذخیره شوند و (ب) سخت افزار فقط اولین ورودی منطبق را بازگرداند. بنابراین ، مطابقت با طولانی ترین ماسک شبکه ( طولانی ترین مطابقت پیشوند ) استفاده می شود.
سایر برنامه های CAM عبارتند از: