جمعه 29 تیر 1397 | Friday 20 th of July 2018 صفحه اصلی گروه الکترونیکی کامپیوتر
3-3- حافظه های GPU

در یک GPUما می توانیم دو نوع حافظه مجزا را محلی کنیم: حافظه دستگاه و  روی تراشه ای.

حافظه های روی تراشه ای بصورت زیر هستند:

-یکسری رجیسترهای 32 بیتی در هر پردازنده اسکالر

- یک حافظه چک نویس موازی(حافظه اشتراکی) در هر چند پردازنده جریانی. زمان دسترسی به حافظه اشتراکی با کش L1روی CPUقابل مقایسه است.

- یک کش فقط خواندنی دائمی که توسط همه پردازندههای اسکالر به اشتراک گذاشته شده است تا خواندن از ناحیه دائمی در حافظه دستگاه را سرعت بخشد.

- یک کش بافت فقط خواندنی که توسط همه پردازندههای اسکالر به اشتراک گذاشته شده است تا خواندن از ناحیه بافت در حافظه دستگاه افزایش یابد.

- حافظه دستگاه یک حافظه DRAMبا سرعت و تاخیر زیاد است و ابعاد ان از حافظه روی تراشه بیشتر است(بطور مثال صدها برابر کندتر و میلیون ها بار بزرگتر هستند).

 حافظه دستگاه به چهار بخش تقسیم شده است:

1- ناحیه غیر کش سراسری قابل خواندن و نوشتن

2- ناحیه غیر کش محلی قابل خواندن و نوشتن

3- ناحیه کش ثابت فقط خواندنی

4- ناحیه کش بافت فقط خواندنی

در اینجا در مورد یکسری اصطلاحات حافظه صحبت می کنیم. حافظه سراسری و دستگاه اشکارا هم معنی نیستند. سراسری به الگوی دسترسی دلالت دارد که فضای خاصی است و قسمتی از  حافظه دستگاه GPUاست. بطور مشابه حافظه محلی و اشتراکی مفهوم های یکسانی نیستند. حافظه محلی قسمتی از حافظه دستگاه است که کند است در حالی که حافظه اشتراکی روی تراشه است و سریع است. حافظه محلی بوسیله کامپایلر استفاده می شود تا هر چیزی را که توسعه دهنده ان را برای یک نخ محلی در نظر می گیرد اما به بعضی دلایل در رجیستر پردازنده اسکالر؛ جایی که نخ اجرا می شود جا نمی شود را حفظ کند(برای مثال، ساختارهای بزرگ که رجیستر زیادی را مصرف می کنند).

برخلاف مدل حافظه بیشتر CPUها، هیچ مکانیزمی برای خودکار کردن کش بین RAMGPUو کش اشتراکی وجود ندارد.  GPUها در طول اجرا نمی توانند مستقیما به حافظه میزبان دسترسی پیدا کنند. در عوض، داده بطور واضح از قبل بین حافظه دستگاه وحافظه میزبان انتقال می یابد و اجرا GPUادامه می یابد. از انجایی که مدیریت دستی حافظه برای اجرا لازم است( مکانیزم صفحه بندی وجود ندارد) و به این علت که در زمان اجرا GPUها نمی توانند داده را بین GPUها و CPUها انتقال دهند برنامه نویسان نیاز دارند که برنامه های کاربردی خود را تغییر دهند بطوری که همه داده های مربوط در زمان نیاز درون GPUقرار گرفته باشند. مجموعه دادههایی که خیلی بزرگ هستند و در یک GPUجا نمی شوند به چندین انتقال بین GPUو CPUنیاز دارند و باعث بوجود امدن حباب در زمان اجرا می شوند. با محاسبات موازی سنتی، استفاده از multi-GPUها منابع اضافی را فراهم کرد که بطور بالقوه به فراخوانی GPUکمتری نیاز است و اجازه می دهد که الگوریتم ها ساده تر شوند.

Compatability by:
آخرین به روز رسانی سایت: سه شنبه, 22 اسفند 1391 - 00:26