اگر امروز از سیستمهایی استفاده میکنید که در پردازش مدلهای هوش مصنوعی دچار تأخیر میشوند، احتمالاً مشکل از سرعت پردازنده نیست، بلکه گلوگاه در مسیر انتقال داده است. سامسونگ با معرفی یک معماری جدید، محاسبات را به جای پردازنده، مستقیماً به درون حافظه منتقل کرده است تا این بنبست را بشکند.
یک تراشه LPDDR5X-PIM سامسونگ اکنون میتواند دادهها را با سرعت ۶۱۴ گیگابایت بر ثانیه در لایههای داخلی خود جابهجا کند؛ عددی که تقریباً ۸ برابر بیشتر از دسترسیهای استاندارد DRAM است. این تغییر به معنای پایان «دیوار حافظه» است؛ همان مانعی که باعث میشود مدلهای استنتاج (Inference) — مثل لحظهای که یک آشپز با مواد آماده، غذای نهایی را میپزد — در سیستمهای مدرن کند شوند.
سالهاست که صنعت سختافزار با تأخیر مسیر بین DRAM و هستههای پردازشی دستوپنجه نرم میکند. طبق گزارشهای فنی، بیشتر حجم کاری هوش مصنوعی صرف جابهجایی دادهها میشود، نه پردازش آنها. سامسونگ در کنفرانس Hot Chips ۲۰۲۶ در ۲۹ اوت ۲۰۲۶، راهکار خود را معرفی کرد: قرار دادن بلوکهای پردازش در حافظه (PIM) مستقیماً در هر بانک حافظه.
تصور کنید در یک انبار بزرگ، به جای اینکه تمام جعبهها را برای شمارش به یک میز مرکزی ببرید، در هر راهرو یک کارمند مستقر باشد. کارمندان همانجا که جعبهها هستند آنها را میشمارند و فقط عدد نهایی را برای مدیر میفرستند. این دقیقاً همان روش کار PIM در مقایسه با رایانشهای متمرکز بر CPU است. همانطور که در تحلیلهای پیشین ما درباره بهینهسازی سختافزارهای لبه اشاره کردیم، کاهش جابهجایی دادهها کلید اصلی افزایش کارایی است.
معماری سختافزاری
تراشه LPDDR5X-PIM بر پایه یک چیپ استاندارد LPDDR5X-9600 با ۱۶ بانک طراحی شده است. نوآوری اصلی، افزودن یک بلوک PIM به هر بانک است. این بلوکها بدون محدودیت توسط گذرگاه (Bus) خارجی تراشه، به DRAM متصل به خود دسترسی دارند.

در دسترسیهای معمولی DRAM، کنترلکننده حافظه یک بانک را انتخاب و یک ردیف را فعال میکند. دادهها سپس از طریق دستورات CAS (Column Access Strobe) فراخوانی میشوند. در این حالت، پهنایباند بهطور سختگیرانهای توسط رابط خارجی DRAM تراشه محدود میشود. حتی اگر یک کنترلکننده بتواند تمام بانکها را بهطور همزمان فعال کند، باز هم نمیتواند تمام پهنایباند داخلی موجود در آن بانکها را استخراج و جذب کند.
در حالی که دسترسیهای معمولی DRAM با فعال کردن دو بانک موازی به حداکثر ۷۶.۸ گیگابایت بر ثانیه میرسند، بلوکهای PIM از تمام پهنایباند داخلی ۱۶ بانک استفاده میکنند. به نقل از وبسایت chipsandcheese.com، همین موضوع منجر به رسیدن به عدد ۶۱۴ گیگابایت بر ثانیه شده است.
هر بلوک PIM شامل یک درخت MAC (ضرب و جمع)، فایلهای ثباتی و منطق کنترلی است. مشخصات فنی دقیق عبارتند از:
- ثبات دستورالعمل (Instruction Register): یک فایل ۱۰۲۴ بیتی که تا ۶۴ دستور ۱۶ بیتی را نگه میدارد.
- ثبات منبع (Source Register): یک فایل ۴ کیلوبیتی برای بردارهای فعالساز که یک عملوند منبع را برای آرایه MAC تأمین میکند.
- ثبات مقیاس (Scale Register): یک فایل ۲ کیلوبیتی برای مقیاسبندی وزنهای مدل پیش از انجام محاسبات.

توان عملیاتی و دقت محاسبات
آرایه MAC از فرمتهای با دقت پایین پشتیبانی میکند که برای هوش مصنوعی حیاتی هستند. هر بلوک PIM میتواند در هر کلاک داده، چهار عملیات MAC در قالب INT8 یا FP8 انجام دهد. اگر نرخ داده دوبرابر (Double Data Rate) را در نظر نگیریم، این عدد به ۸ عملیات در هر چرخه میرسد.
برای وزنهای ورودی ۴ بیتی، توان عملیاتی دوباره دو برابر میشود. این موضوع مجموع توان پردازشی کل بسته را به ۲.۴ TOPS در هر تراشه میرساند.

اگرچه ۲.۴ TOPS کم به نظر میرسد، اما با افزایش تعداد تراشهها، قدرت کلی بالا میرود. هشت تراشه LPDDR5X-PIM توان ۹.۶ INT8 TOPS را فراهم میکنند. این مقدار تقریباً با NPU موجود در Meteor Lake اینتل برابری میکند؛ هرچند برای دستیابی به این قدرت، سیستم به ۱۲۸ گیگابایت حافظه (هشت تراشه ۱۶ گیگابایتی) نیاز دارد.
راهکار پروتکل ارتباطی
سامسونگ این تراشه را بهگونهای طراحی کرده که با کنترلکنندههای حافظه استاندارد کار کند. آنها این کار را با تغییر کاربری برخی آدرسهای ردیف خاص به آدرسهای MMIO (ورودی/خروجی نگاشتشده در حافظه) انجام دادند.

دو ردیف پیشفرض در هر کانال، حالت عملیاتی را کنترل میکنند:
۱. حالت تکبانک (Single-bank mode): تراشه مانند یک DRAM معمولی رفتار میکند. این حالت پیشفرض برای عملیاتهای استاندارد است.
۲. حالت چندبانک (Multi-bank mode): دستورات به تمام ۱۶ بانک ارسال (Broadcast) میشوند تا از پهنایباند داخلی استفاده شود.
ردیفهای خاص هر بانک، رفتار دستورات خواندن و نوشتن را بیشتر تغییر میدهند. وقتی این ردیفها فعال شوند، تراشه وارد وضعیت «فعالسازی ثباتهای PIM» میشود. در این حالت، عملیاتهای خواندن و نوشتن به جای محتوای DRAM، ثباتهای PIM را هدف قرار میدهند.

جریان اجرا
نرمافزار ابتدا وزنهای مدل را در حالت تکبانک وارد DRAM میکند. بلوک DRAM متصل، دومین عملوند آرایه MAC را تأمین میکند. سپس سیستم به حالت چندبانک تغییر وضعیت داده و ثباتهای PIM را برای نوشتن مقادیر فعالساز و فاکتورهای مقیاس فعال میکند.
به دلیل حالت چندبانک، این نوشتهها به تمام بانکها ارسال میشوند. این یعنی بلوک PIM مانند یک پردازنده SIMD (یک دستور، دادههای متعدد) محدود عمل میکند؛ به این معنا که نوع عملیات، فاکتور مقیاس و یک عملوند منبع در تمام بانکها یکسان است.

سامسونگ اجازه میدهد ثباتهای PIM در حالت تکبانک هم نوشته شوند، اما این قابلیت فقط برای عیبیابی (Debugging) در نظر گرفته شده است. هر بسته DRAM شامل ۲۵۶ بیت (BL=16) است. پر کردن یک ثبات منبع به ۱۶ دستور نوشتن نیاز دارد. اگر این کار برای هر بانک بهطور جداگانه در ۱۶ بانک انجام شود، به ۲۵۶ دستور نوشتن نیاز است که در این صورت، پهنایباند نوشتن میزبان-به-PIM به عامل محدودکننده تبدیل میشود.
پس از آمادهسازی، نرمافزار دستورات خواندن را صادر میکند. در اینجا، دستورات به جای بازیابی داده، محاسبات را تحریک میکنند. نتایج در فایلهای ثباتی برداری (VRF) جمع میشوند و در نهایت با دستور نوشتن، محتویات VRF به بانکهای DRAM باز میگردند.
برای جلوگیری از بههمریختگی توالی دستورات توسط کنترلکننده حافظه (Reordering)، سامسونگ حالت AAM (تراز آدرس) را پیاده کرد. در حالت عادی، PIM ثباتهای دستورالعمل را طوری تنظیم میکند که به عناصر ثبات منبع بهصورت متوالی دسترسی یابد. اگر کنترلکننده ترتیب اینها را تغییر دهد، منطق محاسباتی شکست میخورد. AAM اجازه میدهد هر دستور، شاخص ثبات منبع خود را مستقیماً از آدرس ستونی که در حال دسترسی است، استخراج کند.

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

سامسونگ پیشنهاد میکند یک ناحیه ایزوله برای PIM در حافظه تعریف شود. اما این کار مستلزم غیرفعال کردن Interleaving (درهمتنیدگی آدرسها) در کانالها است. سختافزار بهطور معمول آدرسها را درهمتنیده میکند تا از پهنایباند تمام کانالها استفاده کند. حذف این قابلیت برای اختصاص کانالها به PIM به این معناست که:
- برنامههای غیر PIM پهنایباند کانالهای رزرو شده را از دست میدهند.
- کدهای PIM قدرت محاسباتی کانالهای غیر PIM را ندارند.
حتی با ایزولاسیون، مشکل چندوظیفگی باقی است. برنامههای چندرشتهای باید دسترسی به ناحیه PIM را با قفل (Lock) محافظت کنند. در یک سیستمعامل مدرن، چندین فرآیند ممکن است بدون اطلاع از یکدیگر سعی کنند از PIM استفاده کنند. تنها راه امن این است که OS کد PIM را در حالی اجرا کند که تمام رشتههای دیگر مسدود و وقفهها غیرفعال باشند.
مدیریت وقفهها یا تعویض زمینه (Context Switch) یک کابوس است. برای متوقف کردن یک رشته PIM، باید کانال از حالت PIM خارج شده و تمام وضعیت ثباتهای دستورالعمل، منبع، مقیاس و فایلهای ثباتی برداری در هر بانک ذخیره شود. مسدود کردن تعویض وظایف، عملکرد چندرشتهای را از بین برده و پاسخدهی سیستم را مختل میکند.
تضاد با حافظه پنهان و گمانهزنی
محاسبات PIM انتظارات زیرسیستم حافظه را به هم میزند. DRAM میتواند مقادیری تولید کند که سلسلهمراتب حافظه پنهان (Cache) هرگز آنها را نمیبیند. از سوی دیگر، کشها ممکن است دسترسیهایی را که قرار بود محاسبات PIM را تحریک کنند، جذب کنند و مانع رسیدن آنها به حافظه شوند.
سامسونگ توصیه میکند حافظه PIM به صورت Uncacheable (غیرقابل ذخیره در کش) تعریف شود. این یک مشکل بزرگ است چون CPUها و GPUها برای کاهش تأخیر DRAM به شدت به کش وابسته هستند. دسترسی به حافظه غیرقابل کش بسیار کند است زیرا هستهها زمان بیشتری را در حالت توقف (Stall) میگذرانند.
علاوه بر این، خواندنهای PIM مانند دسترسیهای MMIO عمل میکنند و مقادیر VRF را تغییر میدهند. این موضوع با بهینهسازیهای CPU تضاد دارد:
- پیشبینی شاخه (Branch Prediction): CPUها دستورات را پیش از اطمینان از اجرا، صادر میکنند.
- پیشخوان (Prefetchers): CPUها دادهها را بر اساس الگوهای مشاهده شده، پیش از درخواست رسمی، در کش بارگذاری میکنند.
در حالت عادی، یک لود غیرضروری بیضرر است. اما در PIM، یک خواندن گمانهزنانه (Speculative Read) باعث اجرای یک محاسبه میشود که VRF را تغییر میدهد و منجر به رفتار نادرست برنامه میگردد. برای کار با PIM، باید تمام دسترسیها علاوه بر غیرقابل کش بودن، غیرگمانهزنانه نیز باشند که این کار با حذف اجرای خارج از ترتیب (Out-of-order execution)، عملکرد را فلج میکند.
تحلیل تحریریه
سامسونگ قطعه سختافزاری درخشانی ساخته است که در یک سیستمعامل چندوظیفگی مدرن تقریباً غیرقابل استفاده است. آنها با تلاش برای سازگاری با کنترلکنندههای حافظه استاندارد، پیچیدگی را به لایه نرمافزاری منتقل کردهاند، جایی که این پیچیدگی به یک نقطه ضعف تبدیل شده است.
هر بلوک PIM فقط به بانک DRAM محلی خود دسترسی سریع دارد. تمام دادههای دیگر باید از طریق رابط خارجی محدود عبور کنند. بلوکهای PIM نمیتوانند مستقیماً با هم تبادل داده کنند؛ اگر یک بلوک به نتایج بلوک دیگر نیاز داشته باشد، میزبان باید دادهها را با خواندن و نوشتن معمولی جابهجا کند.
برای یک مدیر کسبوکار، این بدان معناست که PIM یک ارتقای ساده و «آماده نصب» برای PCهای هوش مصنوعی نیست. این فناوری نیازمند بازنگری بنیادین در نحوه مدیریت حافظه و همگامسازی رشتهها توسط سیستمعامل است. توازن بین پهنایباند داخلی و پاسخدهی سیستم در حال حاضر برای رایانشهای عمومی بیش از حد دشوار است.
برای عملیاتی شدن این فناوری، صنعت به مجموعه جدیدی از دستورات CPU و یک کنترلکننده حافظه نیاز دارد که مانند یک هسته CPU همرتبه با قابلیت انسجام کش (Cache Coherency) عمل کند. بهطور مشخص:
- رابط گسترشیافته: افزودن دستورات محاسباتی اختصاصی برای حذف پیچیدگیهای تغییر حالت (Mode Switch).
- انسجام کش: کنترلکننده باید درخواستهای RFO (Read-for-Ownership) برای خطوط کش مربوطه صادر کند تا اطمینان یابد آخرین نوشتههای CPU در DRAM هستند و مالکیت را تا پایان عملیات حفظ کند.
- دستورات جدید: افزودن دستوراتی مانند “rep macb” برای عملیات ضرب و جمع. در این صورت CPU میتواند بر اساس اینکه داده در کش هست یا خیر، تصمیم بگیرد از محاسبات درون-حافظه استفاده کند یا عملیات داخلی.
با این تغییرات، نرمافزار میتواند بدون رزرو حافظه یا از دست دادن موازیسازی در اثر قفلها، از PIM در یک OS چندوظیفگی استفاده کند. یک دستور CPU شفاف، نیاز به باینریهای سختافزار-محور را از بین میبرد و کد را با نسخههای آینده سازگار میکند. من جایگزین نرمافزاری (رزرو حافظه و مسدود کردن رشتهها) را نمیپسندم؛ زیرا تضادهای زیادی در زمینه عملکرد و ظرفیت ایجاد میکند.
گام بعدی شما
- اگر توسعهدهنده سختافزار هستید، معماری PIM را به عنوان جایگزینی برای NPUهای متمرکز در مدلهای لبه بررسی کنید.
- منتظر استانداردهای جدید کنترلکنندههای حافظه باشید که بتوانند دستورات محاسباتی را بدون تغییر حالت (Mode Switch) مدیریت کنند.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما درباره تراشههای Blackwell مراجعه کنید.




گفتگو