بازیابی حافظه با کمک سخت افزار

**این مفاله در حال ترجمه است،لطفا پاک نشود**

= **<big>بازیابی حافظه با کمک سخت افزار</big>** =
«جمع‌آوری زباله با کمک سخت‌افزار» به استفاده از سازوکارهای تخصصی سخت‌افزاری برای بهبود کارایی و عملکرد فرایند جمع‌آوری زباله در سیستم‌های کامپیوتری گفته می‌شود. در این رویکرد، پشتیبانی سخت‌افزاری مستقیماً در پردازنده یا سیستم حافظه ادغام می‌شود تا وظایفی را که به‌طور سنتی توسط نرم‌افزار انجام می‌شد—مانند تخصیص شیء، شمارش ارجاع‌ها، یا عملیات نشانه‌گذاری و جاروب (mark-and-sweep)—مدیریت کند. این روش به‌ویژه در سیستم‌های بلادرنگ، سیستم‌های نهفته، و محیط‌های پردازش با کارایی بالا اهمیت دارد؛ جایی که جمع‌آوری زباله صرفاً نرم‌افزاری ممکن است مکث‌ها یا سربارهای غیرقابل‌قبول ایجاد کند.»

## تاریخچه
پژوهش‌ها دربارهٔ «جمع‌آوری زباله با کمک سخت‌افزار» به دههٔ ۱۹۹۰ بازمی‌گردد. کارهای اولیه بر مطالعات شبیه‌سازی متمرکز بودند تا رفتار چنین سیستم‌هایی تحلیل شود.[1] در اوایل دههٔ ۲۰۰۰، پیشنهادهایی برای ادغام جمع‌آوری زباله در سخت‌افزار برای سیستم‌های نهفتهٔ بلادرنگ ارائه شد.[2] توسعه‌های مدرن شامل شتاب‌دهنده‌هایی برای جمع‌آوری زبالهٔ ردیابی‌شونده (tracing GC) و جمع‌کننده‌های هم‌زمان برای زبان‌های تابعی است.[3]

مفهوم «جمع‌آوری زباله با کمک سخت‌افزار» چندین دهه قدمت دارد و پیاده‌سازی‌های اولیهٔ آن در ماشین‌های اختصاصی Lisp و نمونه‌های پژوهشی دیده می‌شود. از سیستم‌های تاریخی قابل توجه می‌توان به ماژول حافظهٔ جمع‌آوری‌زباله (The Garbage Collected Memory Module)، که یک طراحی هم‌پردازندهٔ نزدیک‌به‌حافظه بود[4]، یا پردازنده‌های Vega شرکت Azul Systems اشاره کرد که شامل پشتیبانی سخت‌افزاری برای *read barrier* بودند تا جمع‌آوری زبالهٔ بدون مکث را ممکن کنند.[5]

با اینکه بسیاری از طرح‌های اولیه به پذیرش گسترده نرسیدند، علاقهٔ دوباره‌ای به این حوزه شکل گرفته است؛ به‌ویژه به دلیل کند شدن قانون مور، فراگیر شدن زبان‌های دارای GC، و رشد رایانش ابری و شتاب‌دهنده‌های سخت‌افزاری.

## سازوکار ها
پشتیبانی سخت‌افزاری می‌تواند شامل دستورالعمل‌های اختصاصی برای **تخصیص حافظه، ردیابی ارجاع‌ها، یا مراحل مختلف جمع‌آوری زباله** باشد. برای مثال، برخی معماری‌ها از **علامت‌گذاری با بیت‌مپ (bitmap-marking)** یا **علامت‌گذاری هم‌زمان (concurrent marking)** پشتیبانی می‌کنند تا وقفه‌ها را کاهش دهند.[6] در محیط‌های ابری، دستورالعمل‌های سخت‌افزاری می‌توانند نقاط پرترافیک (hotspots) مربوط به جمع‌آوری زباله را شتاب دهند و عملکرد را تا یک مرتبهٔ بزرگی بهبود دهند.[7][8]

طرح‌های نسل‌محور (Generational schemes)، همان‌طور که در ادبیات عمومی GC نیز مطرح شده، می‌توانند با پشتیبانی سخت‌افزار برای عملیات بلادرنگ تقویت شوند. پیشنهادهایی وجود دارد که **جمع‌کننده‌های سخت‌افزاری یکپارچه** را معرفی می‌کنند که به‌طور مداوم در پس‌زمینه و برای سیستم‌های نهفته اجرا می‌شوند.[9]

## کاربرد ها
**پیاده سازی هایی که در عمل استفاده شده اند:**

**عملکرد:**

در بنچمارک‌های کنترل‌شده، واگذاری فاز علامت‌گذاری به یک شتاب‌دهندهٔ سخت‌افزاری، زمان جمع‌آوری زباله (GC) را ۶۵–۸۰٪ کاهش داده و زمان کل اجرای برنامه را تا ۲۵٪ بهبود بخشید.[12] مطالعات JVM در مراکز داده نشان دادند که با استفاده از C4 آکواز روی سخت‌افزار Vega، تأخیر در بالاترین 0.001٪ (tail-latency) برای هِپ‌های ۲۵۶ گیگابایتی همواره کمتر از ۱ میلی‌ثانیه بوده است.[13]

## مزایا و چالش ها
استفاده از شتاب‌دهندهٔ سخت‌افزاری، عملکرد قابل اعتماد، سرعت بالاتر و وقفه‌های حداقلی ارائه می‌دهد و آن را برای سیستم‌های بلادرنگ مناسب می‌سازد.[14] با این حال، ممکن است به سخت‌افزار سفارشی نیاز داشته باشد که باعث محدود شدن استفاده در پردازنده‌های عمومی می‌شود.[15]

## منابع