# رم محاسباتی

**رم محاسباتی** یا **سی-رم** (به انگلیسی: C-RAM) یک حافظه با دسترسی تصادفی با اعضای پردازشی تعبیه شده بر روی یک تراشه است. این باعث می‌شود که بتوان از سی-رم به عنوان یک کامپیوتر اس‌آی‌ام‌دی استفاده کرد. همچنین می‌توان از آن برای استفاده بهینه تر از پهنای باند حافظه (Memory Bandwidth) در تراشه‌های رم استفاده کرد.

## کلیات

تاثیرگذارترین پیاده‌سازی‌های رم محاسباتی از پروژه Berkeley IRAM به دست آمد. همچنین (Vector IRAM (V-IRAM، رم دینامیک DRAM را با یک پردازنده برداری روی یک تراشه به‌طور یکپارچه ترکیب می‌کند.

معماری قابل تنظیم مجدد حافظه با دسترسی تصادفی پویا (RADram) یک DRAM با عناصر منطقی محاسباتی FPGA قابل تنظیم مجدد است که روی یک تراشه تعبیه شده‌است. شبیه‌سازی‌های SimpleScalar نشان می‌دهند که RADram (در سیستمی با یک پردازنده معمولی) می‌تواند در برخی از محاسبات عملکرد به مراتب بهتری نسبت به DRAM در سیستمی با همان پردازنده ارائه دهد.

برخی از مسائل محاسبات موازی شرم آور *(به انگلیسی: embarrassingly parallel computational problems)* در حال حاضر توسط تنگنای وان نومان بین CPU و DRAM محدود شده‌است. برخی از پژوهشگران پیش‌بینی می‌کنند که با هزینه کل برابر، ماشینی که در آن از رم محاسباتی استفاده شده‌است، در این نوع مسائل به‌طور قابل توجهی سریعتر از کامپیوترهای معمولی با کاربری عمومی عمل می کند.

از سال ۲۰۱۱، «پردازش DRAM» (تعدادی لایه؛ بهینه‌سازی شده برای ظرفیت بالا) و «پردازش CPU» (بهینه‌سازی شده برای فرکانس بالا. معمولاً دارای دو برابر لایه‌های BEOL نسبت به DRAM. به دلیل اینکه هر لایه اضافی بازده را کاهش می‌دهد و هزینه ساخت را افزایش می‌دهد. چنین تراشه‌هایی در مقایسه با DRAM در هر میلی‌متر مربع نسبتاً گران هستند) به اندازه کافی متمایز شده‌اند که سه رویکرد متفاوت برای رم محاسباتی به وجود آمده:

* با استفاده از یک فرایند بهینه‌سازی شده برای CPU و دستگاهی که از SRAM تعبیه شده زیادی استفاده می‌کند، یک مرحله فرایند اضافی اضافه کنید (که هزینه نسبت به هر میلی‌متر مربع آن را گران‌تر می‌کند) تا امکان جایگزینی «SRAM تعبیه شده» با «DRAM تعبیه شده» (eDRAM) فراهم شود و حدود ۳ برابر مساحت نسبت به حالت SRAM صرفه جویی شده و بنابراین هزینه خالص هر تراشه کاهش یابد.
* در شروع با یک سیستم که دارای یک تراشه CPU و تراشه DRAM جداگانه است، مقادیر کمی از توانایی محاسباتی «هم‌پردازنده» را به DRAM اضافه کنید، در محدوده توانایی «پردازش DRAM» کار کنید و فقط مقدار کمی از مساحت را به DRAM اضافه کنید در غیر این صورت عملیات ها توسط تنگنای باریک بین CPU و DRAM کند می‌شوند: مناطق انتخاب شده از حافظه را پر نکنید، بلوک‌های بزرگی از داده‌ها را از یک مکان به مکان دیگر کپی کنید، پیدا کنید که در آن (در صورت وجود) یک بایت معین در برخی از بلوک‌های داده وجود دارد و... سیستم به دست آمده - تراشه CPU بدون تغییر و تراشه (های) «DRAM هوشمند» - حداقل به اندازه سرعت سیستم اصلی است و به‌طور بالقوه از نظر هزینه کمی کمتر است. انتظار می‌رود هزینه مقدار کمی از مساحت اضافی بیش از صرفه‌جویی در زمان تست گران باشد، زیرا اکنون قابلیت محاسباتی کافی در یک «DRAM هوشمند» برای ویفر پر از DRAM وجود دارد که بتواند اکثر آزمایش‌های داخلی را به صورت موازی انجام دهد. به جای روش سنتی آزمایش کامل یک تراشه DRAM در یک زمان با تجهیزات تست اتوماتیک خارجی گران‌قیمت.
* با شروع یک پردازش بهینه‌سازی شده برای DRAM، فرایند را تغییر دهید تا کمی بیشتر شبیه به «پردازش CPU» شود و یک CPU (با فرکانس نسبتاً کم، اما کم مصرف و پهنای باند بسیار بالا) چند منظوره در محدوده توانایی آن بسازید.

برخی از CPUهایی که برای تعبیه بر روی یک فناوری پردازش DRAM طراحی شده‌اند (به جای فناوری «پردازش CPU» یا «پردازش منطقی» که به‌طور خاص برای CPUها بهینه شده‌است) شامل پروژه Berkeley IRAM، فناوری TOMI و AT&T DSP1 است.

از آنجایی که ظرفیت گذرگاه حافظه خارج از تراشه چندین برابر ظرفیت گذرگاه حافظه روی تراشه است، یک سیستم با تراشه‌های DRAM و CPU جداگانه می‌تواند نسبت به یک سیستم IRAM با عملکرد یکسان جندین برابر مصرف انرژی داشته باشد.

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

## پردازندهٔ در (نزدیک) حافظه

**پردازندهٔ در (نزدیک به) حافظه (PINM)(به انگلیسی: processor-in-/near-memory)* یک پردازنده کامپیوتری (CPU) است که به‌طور تنگاتنگی به حافظه متصل است و معمولاً به همراه واحد حافظه روی یک تراشه سیلیکونی یکسان قرار دارند.

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

## مثال

در دهه ۸۰ میلادی، یک CPU کوچک که FORTH را اجرا می‌کرد در یک تراشه DRAM تعبیه شد. این کار به منظور بهبود PUSH و POP انجام گرفت. FORTH یک زبان برنامه‌نویسی پشته-گرا است و این باعث بهبود کارایی آن شد.

با توجه به این که این ریز پردازنده در اوایل ۱۹۸۰ ساخته شده بود، اندازه بزرگی داشت که عملاً آن را به یک پردازشگر در مموری (Processor-in-memory) تبدیل می‌کرد.

پروژه‌های PIM قابل بیان شامل Berkeley IRAM Project در پروژه دانشگاه کالیفرنیا، برکلی و تلاش PIM دانشگاه نوتردام است.

## طبقه‌بندی PIM مبتنی بر DRAM

طراحی‌های «نزدیک حافظه» و «درون حافظه» مبتنی بر DRAM را می‌توان به چهار گروه اصلی طبقه‌بندی کرد:

* در رویکردهای سطح DIMM، واحدهای پردازشی را در نزدیکی تراشه‌های حافظه قرار می‌دهند. این رویکردها به حداقل تغییر در چیدمان داده نیاز دارند (به عنوان مثال، Chameleon و RecNMP).
* در رویکردهای سطح لایه منطقی (Logic-Layer-Level)، واحدهای پردازش در لایه منطقی حافظه‌های «پشته سه بعدی» (3D Stack) انجام می‌شود و می‌توان از پهنای باند بالای حافظه‌های پشته سه بعدی بهره برد (به عنوان مثال، TOP\_PIM).
* در رویکردهای سطح بانک (Bank-level)، واحدهای پردازش در داخل لایه‌های حافظه و در نزدیکی هر بانک قرار می‌گیرد. UPMEM و PIM سامسونگ نمونه‌هایی از این رویکردها هستند.
* در رویکردهای سطح زیرآرایه (Subarray-level)، داده‌ها در داخل هر زیرآرایه پردازش می‌شود. رویکردهای سطح Subarray بالاترین توازی دسترسی را ارائه می‌کنند، اما اغلب فقط عملیات‌های ساده انجام می‌دهند، مانند عملیات بیتی روی یک ردیف حافظه (مثلاً DRISA) یا پردازش ترتیبی ردیف حافظه با استفاده از یک Single-world ALU (مثلاً Fulcrum)

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

* محاسبات با حافظه
* SyNAPSE نیز پردازش و حافظه را در یک تراشه ترکیب می‌کند.

## منابع

## فهرست کتب

* دانکن الیوت، مایکل استام، دبلیو. مارتین اسنلگرو، کریستین کوجوکارو، رابرت مک‌کنزی، " رم محاسباتی: پیاده‌سازی پردازنده‌ها در حافظه "، *طراحی IEEE و تست کامپیوترها*، جلد. ۱۶، شماره ۱، صص ۳۲–۴۱، ژانویه–مارس 1999. doi:۱۰٫۱۱۰۹/۵۴٫۷۴۸۸۰۳.