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

واحد تشخیص کلمات داده توسط دادلی آلن باک در سال ۱۹۵۵ پیشنهاد داده شد.

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

آرایه انجمنی سخت‌افزار
----------------------

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

استانداردها
-----------

تعریف اصلی رابط کاربری برای CAMها و سایر موتورهای جستجوی شبکه در توافق‌نامه همکاری با نام Look-Aside Interface (LA-1 و LA-1B) که توسط انجمن پردازش شبکه ایجاد شده‌است، مشخص شده‌است. دستگاه‌های زیادی مطابق با توافق‌نامه همکاری با شرکت Integrated Device Technology , Cypress Semiconductor، IBM، Broadcom و دیگران تولید شده‌اند. در ۱۱ دسامبر ۲۰۰۷، OIF توافق‌نامه رابط سریال (SLA) را منتشر کرد.[]

پیاده‌سازی‌های نیمه هادی
------------------------

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

پیاده‌سازی‌های جایگزین
----------------------

برای دستیابی به تعادل متفاوت بین سرعت، اندازه حافظه و هزینه، برخی از پیاده‌سازی‌ها از عملکرد CAM با استفاده از جستجوی استاندارد درخت یا طرح‌های هش در سخت‌افزار، با استفاده از ترفندهای سخت‌افزاری مانند تکثیر یا خط لوله برای سرعت بخشیدن به عملکرد مؤثر، عملکرد CAM را تقلید می‌کنند. این طرح‌ها اغلب در روترها استفاده می‌شوند.[]

دوربین‌های سه‌گانه
------------------

**Binary CAM** ساده‌ترین نوع CAM است و از کلمات جستجوی داده که به‌طور کامل از ۱ و ۰ تشکیل شده‌است استفاده می‌کند. **Ternary CAM** (**TCAM**) حالت سوم مطابق *X* *را فراهم می‌کند* یا به یک یا چند بیت در کلمه ذخیره شده اهمیت نمی‌دهد، بنابراین انعطاف‌پذیری را به جستجو اضافه می‌کند. به عنوان مثال، یک کلمه ذخیره شده از "10XX0" در یک CAM سه‌گانه با هر یک از چهار کلمه جستجو "۱۰۰۰۰"، "۱۰۰۱۰"، "۱۰۱۰۰" یا "۱۰۱۱۰" مطابقت دارد. انعطاف‌پذیری جستجوگر اضافی نسبت به CAM باینری هزینه بیشتری دارد زیرا سلول حافظه داخلی باید به جای دو حالت CAM باینری، سه حالت را رمزگذاری کند. این حالت اضافی معمولاً با افزودن بیت ماسک به هر سلول حافظه اجرا می‌شود.

برنامه‌های کاربردی
------------------

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

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

سایر برنامه‌های CAM عبارتند از:

* CPU کنترل‌کننده‌های حافظه پنهان کاملاً انجمنی و بافرهای ترجمه (TLB)
* موتورهای پایگاه داده
* سخت‌افزار فشرده سازی داده‌ها
* شبکه‌های عصبی مصنوعی
* سیستم پیشگیری از نفوذ
* چندین کامپیوتر سفارشی مانند Goodyear STARAN برای اجرای CAM ساخته شده‌است.

جستارهای وابسته
---------------

* شبکه آدرس پذیر محتوا
* محتوای قابل پردازش موازی
* فضای ذخیره‌سازی آدرس پذیر محتوا یا سیستم فایل
* حافظه پراکنده را توزیع می‌کند
* فضای دوتایی

منابع
-----

کتابشناسی - فهرست کتب
---------------------

* Anargyros Krikelis , Charles C. Weems (ویراستاران) (۱۹۹۷). *پردازش انجمنی و پردازنده‌ها*، مطبوعات علوم کامپیوتر IEEE.شابک ‎۰−۸۱۸۶−۷۶۶۱−۲شابک 0-8186-7661-2
* هانوم و همکاران .. (۲۰۰۴). *سیستم و روش برای تنظیم مجدد و مقداردهی اولیه یک آرایه کاملاً انجمنی به یک حالت شناخته شده در حالت روشن یا از طریق حالت خاص ماشین*. حق ثبت اختراع ایالات متحده ۶٬۸۲۳٬۴۳۴. با جستجو در http://patft.uspto.gov/netahtml/PTO/search-bool.html در دسترس است
* Pagiamtis, K.; Sheikholeslami, A. (2006). "Content-Addressable Memory (CAM) Circuits and Architectures: A Tutorial and Survey" (PDF). *IEEE Journal of Solid-State Circuits*. **41** (3): 712–727. Bibcode:2006IJSSC..41..712P. doi:10.1109/JSSC.2005.864128.
* Stormon , CD Troullinos , NB؛ صالح، EM; Chavan, AV; Brule , MR ; Oldfield, JV; IC و سیستم مشترک پردازنده CMOS , Coherent Research Inc. , East Syracuse , NY , USA , IEEE Micro، دسامبر ۱۹۹۲، دوره: ۱۲ شماره: ۶.
* بخش کامپیوتر TRW. (1963) *اولین گزارش موقت در مورد استفاده بهینه از رایانه‌ها و تکنیک‌های محاسبات در سیستم‌های کنترل سلاح کشتی*. (BuWeps-Project RM1004 M88-3U1). اسکندریه، ویرجینیا: مرکز اسناد دفاعی برای اطلاعات علمی و فنی.


1. ↑  Pagiamtzis and Sheikholeslami (2006), pp. 712–713
2. ↑  TRW Computer Division بایگانی‌شده در اوت ۵, ۲۰۱۱ توسط Wayback Machine, 1963, p.  17.
3. ↑  Hannum et al. (2004)
4. ↑  Storman et al. (1992)
5. ↑  Varghese, George, *Network Algorithmics: An Interdisciplinary Approach to Designing Fast Networked Devices*, Morgan Kaufmann, 2005
6. ↑  Hinton, Geoffrey E. (1984). "Distributed representations". Archived from the original on 2 May 2016. Retrieved 12 April 2021.