تالار گفتمان مانشت
مدار حافظه CAM - نسخه‌ی قابل چاپ

مدار حافظه CAM - mrg_vb - 08 مرداد ۱۳۹۴ ۰۳:۱۱ ب.ظ

سلام.
تصویر زیر مدار یک سلول حافظه CAM یا تداعی گر یا Content Addressable Memory است. من توی این مدار چند تا مشکل دارم امیدوارم راهنمایی کنید.
۱- اون قسمتی که نوشته R-S چیه وکاربردش چیه؟
۲- وظیفه قسمت Match Logic یا منطق سازگار چیه؟
[attachment=19180]
با تشکر.

RE: مدار حافظه CAM - mrg_vb - 08 مرداد ۱۳۹۴ ۰۵:۵۰ ب.ظ

(۰۸ مرداد ۱۳۹۴ ۰۳:۱۱ ب.ظ)mrg_vb نوشته شده توسط:  سلام.
تصویر زیر مدار یک سلول حافظه CAM یا تداعی گر یا Content Addressable Memory است. من توی این مدار چند تا مشکل دارم امیدوارم راهنمایی کنید.
۱- اون قسمتی که نوشته R-S چیه وکاربردش چیه؟
۲- وظیفه قسمت Match Logic یا منطق سازگار چیه؟

با تشکر.

یه نکته ای رو فراموش کردم این مبحث در کتاب معماری کامپیوتر هادی یوسفی چاپ ۱۵ فصل هفتم سازمان حافظه صفحه ۲۱۱-۲۱۴ بحث شده است.

RE: مدار حافظه CAM - محمد رعیت - ۰۸ مرداد ۱۳۹۴ ۱۱:۰۶ ب.ظ

سلام
این مدار از دوقسمت تشکیل شده سمت راست مدار(رجیستر)انطباق و سمت چپ سلول حافظه
سلول حافظه رو با فلیپ فلاپ sr ساختن که ورودی رو به s دادن و نات ورودی رو به r دادن

در این صورت هر موقع خط w(نوشتن) فعال باشه (۱باشه)ورودی در حافظه قرار میگیره (مدار سمت چپ) به این صورت که

اگه ورودی یک باشه r برابر صفر میشه , s برابر یک خواهد بود که خروجی مدار یک خواهد شد(set میشه مدار)

اگه وردی صفر باشه s برابر صفر وr برابر یک خواهد شد که در نتیجه خروجی مدار reset خواهد شد که همون صفر (معادل ورودی)خواهد شد

که این در حافظه قرار میگیره

-----------
اگه خط w صفر باشه set و reset صفر میشن که در این صورت تغییری در خروجی فلاپ(حافظه) بوجود نمیاد که اگه در این حالت خط read فعال بشه میشه از حافظه خوند

RE: مدار حافظه CAM - mrg_vb - 08 مرداد ۱۳۹۴ ۱۱:۲۵ ب.ظ

(۰۸ مرداد ۱۳۹۴ ۱۱:۰۶ ب.ظ)محمد رعیت نوشته شده توسط:  سلام
این مدار از دوقسمت تشکیل شده سمت راست مدار(رجیستر)انطباق و سمت چپ سلول حافظه
سلول حافظه رو با فلیپ فلاپ sr ساختن که ورودی رو به s دادن و نات ورودی رو به r دادن

در این صورت هر موقع خط w(نوشتن) فعال باشه (۱باشه)ورودی در حافظه قرار میگیره (مدار سمت چپ) به این صورت که

اگه ورودی یک باشه r برابر صفر میشه , s برابر یک خواهد بود که خروجی مدار یک خواهد شد(set میشه مدار)

اگه وردی صفر باشه s برابر صفر وr برابر یک خواهد شد که در نتیجه خروجی مدار reset خواهد شد که همون صفر (معادل ورودی)خواهد شد

که این در حافظه قرار میگیره

-----------
اگه خط w صفر باشه set و reset صفر میشن که در این صورت تغییری در خروجی فلاپ(حافظه) بوجود نمیاد که اگه در این حالت خط read فعال بشه میشه از حافظه خوند

کار Match Logic چیه؟

RE: مدار حافظه CAM - محمد رعیت - ۰۸ مرداد ۱۳۹۴ ۱۱:۲۷ ب.ظ

اما در مورد مدار انطباق کار به این صورت هست

این مدار با محتوا کار داره نه با ادرس (content access memory) پس مداری هست که میشه در کارهایی که با محتوای حافظه سروکار داریم ازش استفاده کنیم مثل جستجو

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

خب اول باید ببینید حافظه چند بیتی هست فرض کنید هشت بیتی در این صورت شما با ۴ بیت سمت راست حافظه سروکار دارید(بهش نیاز دارید)

شما ارگومانتون رو هشت بیتی در اختیار مدار قرار میدید به این صورت ۱۰۱۰xxxx بیت سمت راست براتون مهم نیست هر مقداری میتونید بهش بدید

مدار یک رجیستر دیگه هم در اختیار شما قرار میده تا اون قسمتی رو که نیاز ندارید رو مشخص کنید همون رجیستر k و یا key register

میشه مدار جوری طراحی کرد که هر گاه رجیستر key مقدار صفر و یا یک بود (بسته به نظر طراح) یک قسمت از بیت ها فیلتر بشه و در عمل مقایسه نقشی نداشته باشه که در اینجا برای ما ۴ بیت سمت راست هست پس فرض بر این میگیریم که هر گاه رجیستر key برابر صفر بود عمل تطبیق جوابش true باشه (یعنی عملا این اتفاق میفته که ۴بیت سمت راست درمقایسه در نظر گرفته نمیشه)

پس رجیستر k رو اینجوری مقدار میدیم ۱۱۱۱۰۰۰۰

و برای مقایسه سمت چپ ارگومان با حافظه به این صورت عمل میشه که ارگومانی که مادادیم اگه صفره حافظه هم باید صفر باشه و یا اگه ارگومان ما یک هست حافظه هم یک باشه

fij مشخص کننده حافظه ما بود a هم مشخص کننده ارگومان ما . پس هر جا 'afij +a'f'ij+k

یک باشه عمل نطبیق جوابش یک خواهد بود و در غیر این صورت جواب صفر میشه(رشته در حافظه موجود نیست)

-----------

لازم به ذکره این مدار یک سلول حافظه(یک بیت) رو تطبیق میکنه و برای انطباق هشت بیت مد نظر ما باید هشت تا همچین سلولی در کنار هم قرار بگیره و اگه همه انطباق ها(۴ بیت مد نظر ما)جوابش یک بود خروجی تطبیق یک خواهد شد پس تک تک تطبقی ها هم باید درنهایت با هم andمیشند

RE: مدار حافظه CAM - mrg_vb - 08 مرداد ۱۳۹۴ ۱۱:۵۳ ب.ظ

(۰۸ مرداد ۱۳۹۴ ۱۱:۲۷ ب.ظ)محمد رعیت نوشته شده توسط:  اما در مورد مدار انطباق کار به این صورت هست

این مدار با محتوا کار داره نه با ادرس (content access memory) پس مداری هست که میشه در کارهایی که با محتوای حافظه سروکار داریم ازش استفاده کنیم مثل جستجو

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

خب اول باید ببینید حافظه چند بیتی هست فرض کنید هشت بیتی در این صورت شما با ۴ بیت سمت راست حافظه سروکار دارید(بهش نیاز دارید)

شما ارگومانتون رو هشت بیتی در اختیار مدار قرار میدید به این صورت ۱۰۱۰xxxx بیت سمت راست براتون مهم نیست هر مقداری میتونید بهش بدید

مدار یک رجیستر دیگه هم در اختیار شما قرار میده تا اون قسمتی رو که نیاز ندارید رو مشخص کنید همون رجیستر k و یا key register

میشه مدار جوری طراحی کرد که هر گاه رجیستر key مقدار صفر و یا یک بود (بسته به نظر طراح) یک قسمت از بیت ها فیلتر بشه و در عمل مقایسه نقشی نداشته باشه که در اینجا برای ما ۴ بیت سمت راست هست پس فرض بر این میگیریم که هر گاه رجیستر key برابر صفر بود عمل تطبیق جوابش true باشه (یعنی عملا این اتفاق میفته که ۴بیت سمت راست درمقایسه در نظر گرفته نمیشه)

پس رجیستر k رو اینجوری مقدار میدیم ۱۱۱۱۰۰۰۰

و برای مقایسه سمت چپ ارگومان با حافظه به این صورت عمل میشه که ارگومانی که مادادیم اگه صفره حافظه هم باید صفر باشه و یا اگه ارگومان ما یک هست حافظه هم یک باشه

fij مشخص کننده حافظه ما بود a هم مشخص کننده ارگومان ما . پس هر جا 'afij +a'f'ij+k

یک باشه عمل نطبیق جوابش یک خواهد بود و در غیر این صورت جواب صفر میشه(رشته در حافظه موجود نیست)

-----------

لازم به ذکره این مدار یک سلول حافظه(یک بیت) رو تطبیق میکنه و برای انطباق هشت بیت مد نظر ما باید هشت تا همچین سلولی در کنار هم قرار بگیره و اگه همه انطباق ها(۴ بیت مد نظر ما)جوابش یک بود خروجی تطبیق یک خواهد شد پس تک تک تطبقی ها هم باید درنهایت با هم andمیشند

جناب رعیت از پاسخ های که میدید تشکر می کنم.
شکل زیر مدار انطباق هست:

[attachment=19182]

در شکلی که در پست یک گذاشتم اگه بخوایم بجای Match Logic مداری که در همین پست پیوست کردم بزاریم باید چه خطوطی به هم متصل بشوند؟در حقیقت منظورم اینه که خطوط K1,A1,Fi1,F'i1 به چی متصل می شوند
(می می خوام شکل رو پیاده سازی کنم بخاطر همین دارم ازتون می پرسم.)

با تشکر

RE: مدار حافظه CAM - محمد رعیت - ۰۹ مرداد ۱۳۹۴ ۱۲:۰۵ ق.ظ

درشکل کاملا مشخصه خروجی حافظه fij با ai اند میشه نات خروجی حافظه (f'ij) با a'i اند میشه و حاصل این دو تا با 'k اور میشه

دقیقا معادل این عبارت k'+A'iF'ij+AiFij باید مدار طراحی بشه که خروجیش میشه یک بیت یا یک تک سلول مدار مقایسه کننده

K ,A ورودی هست که به عنوان INPUT باید در نظر بگیرید که توسط کاربر وارد میشه تا عمل تطبیق اون با حافظه انجام بشه و فلیپ فلاپ هم که ورودی خودش رو خواهد داشت

FIJ هم خروجی های فلیپ فلاپ(حافظه) هستند که هم قابل خواندن هست هم قابل نوشتن و مستقیم به مدار تطبیق وصل میشه


-----------

در ضمن پیوست اخر شما n سلول مدار رو کنار هم قرار داده که هر سلول یک بیت رو با حافظه مقایسه میکنه

RE: مدار حافظه CAM - mrg_vb - 09 مرداد ۱۳۹۴ ۱۲:۳۴ ق.ظ

(۰۹ مرداد ۱۳۹۴ ۱۲:۰۵ ق.ظ)محمد رعیت نوشته شده توسط:  درشکل کاملا مشخصه خروجی حافظه fij با ai اند میشه نات خروجی حافظه (f'ij) با a'i اند میشه و حاصل این دو تا با 'k اور میشه

دقیقا معادل این عبارت k'+A'iF'ij+AiFij باید مدار طراحی بشه که خروجیش میشه یک بیت یا یک تک سلول مدار مقایسه کننده

K ,A ورودی هست که به عنوان INPUT باید در نظر بگیرید که توسط کاربر وارد میشه تا عمل تطبیق اون با حافظه انجام بشه و فلیپ فلاپ هم که ورودی خودش رو خواهد داشت

FIJ هم خروجی های فلیپ فلاپ(حافظه) هستند که هم قابل خواندن هست هم قابل نوشتن و مستقیم به مدار تطبیق وصل میشه


-----------

در ضمن پیوست اخر شما n سلول مدار رو کنار هم قرار داده که هر سلول یک بیت رو با حافظه مقایسه میکنه

مرسی پس یعنی میشه این؟ درسته؟
(فقط برای یک سلول)
[attachment=19183]

[attachment=19184]

RE: مدار حافظه CAM - محمد رعیت - ۰۹ مرداد ۱۳۹۴ ۱۲:۴۷ ق.ظ

بله یکیش هم نات میشه(f'ij)

ورودی های کاربر هم که منظور همون بیت هایی هست که برا مقایسه داده خواهد شد(a ها) و یکی دیگه هم بیت هایی که برا فیلتر کردن قسمتی از حافظه داده خواهد شد(k ها)

RE: مدار حافظه CAM - mrg_vb - 09 مرداد ۱۳۹۴ ۱۲:۵۴ ق.ظ

(۰۹ مرداد ۱۳۹۴ ۱۲:۴۷ ق.ظ)محمد رعیت نوشته شده توسط:  بله یکیش هم نات میشه(f'ij)

ورودی های کاربر هم که منظور همون بیت هایی هست که برا مقایسه داده خواهد شد(a ها) و یکی دیگه هم بیت هایی که برا فیلتر کردن قسمتی از حافظه داده خواهد شد(k ها)

[attachment=19185]

در کل یعنی a , k ورودی هستن ما از نوع Input در نظر می گیریم(شبیه ساز)
من دکمه تشکر رو نتونستم پیدا کنم ولی در کل خیلی ممنون از اینکه من رو راهنمایی کردید موفق باشید...
با تشکر

RE: مدار حافظه CAM - محمد رعیت - ۰۹ مرداد ۱۳۹۴ ۰۱:۱۳ ق.ظ

فقط اینکه n تا فلیپ فلاپ(fij) هست نه یکی

RE: مدار حافظه CAM - mrg_vb - 09 مرداد ۱۳۹۴ ۰۲:۰۳ ق.ظ

(۰۹ مرداد ۱۳۹۴ ۰۱:۱۳ ق.ظ)محمد رعیت نوشته شده توسط:  فقط اینکه n تا فلیپ فلاپ(fij) هست نه یکی

اوکی. من فقط می خوام یه حافظه CAM تک بیتی درست کنم.

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


درسته؟؟

RE: مدار حافظه CAM - محمد رعیت - ۱۰ مرداد ۱۳۹۴ ۱۲:۴۳ ق.ظ

بله درسته

RE: مدار حافظه CAM - iCanDoIt - 13 شهریور ۱۳۹۴ ۱۰:۱۷ ب.ظ

(۱۰ مرداد ۱۳۹۴ ۱۲:۴۳ ق.ظ)محمد رعیت نوشته شده توسط:  بله درسته

مستر رعیت سلام.

جدول درستی مدار رجیستر و سلول حافظه بصورت جداگانه به چه شکل میشه؟

با تشکر

RE: مدار حافظه CAM - محمد رعیت - ۱۷ شهریور ۱۳۹۴ ۰۱:۵۶ ب.ظ

(۱۳ شهریور ۱۳۹۴ ۱۰:۱۷ ب.ظ)iCanDoIt نوشته شده توسط:  
(10 مرداد ۱۳۹۴ ۱۲:۴۳ ق.ظ)محمد رعیت نوشته شده توسط:  بله درسته

مستر رعیت سلام.

جدول درستی مدار رجیستر و سلول حافظه بصورت جداگانه به چه شکل میشه؟

با تشکر

سلام
رجیستر و حافظه مقدار ثابت داره پس جدول درستی لازم نیست

البته برای طراحی حافظه از فلیپ فلاپ sr استفاده شده که جدول درستی اون درکتاب توضیح داده شده

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

'af+a'f'+k
هر کجا که بیت های ثبات کلید(k)برابر یک بود اگر سلول حافظه (f) با ثبات جستجو(a) برابر بود نتیجه یک خواهد شد.
و هر که بیت های ثبات کلید(k)برابر صفر بود اون بیت های حافظه فیلتر خواهد شد یعنی صفر یا یک بودنش در نتیجه تاثیری نخواهد داشت و همواره براشون یک در نظر گرفته خواهد شد.
مثال : اگر arguman a=101100
۱۱۱۰۰۰ key reg و مقادیر حافظه به صورت
۱- ۱۱۰۱۱۱
۲- ۰۱۰۱۰۱
۳- ۰۱۱۱۱۱
۴- ۱۰۱۰۰۰
۵- ۱۰۱۱۱۰
باشه نتیجه مقایسه در هر سطر به ترتیب برابر خواهد بود با ۰ , ۰ , ۰ ۱ و ۱ که معناش این هست با توجه به ثبات کلید(key reg) فقط بیت هایی که این ثبات یک هستند در مقایسه تاثیر خواهند داشت (سه بیت اخر در اینجا)
و هر قسمت از حافظه که مقدار سه بیت اخر با ثبات ارگومان برابر باشه خروجی سطر مربوطه یک خواهد شد