به نام پروردگار
=======================
شرکت AMD ، تکنولوژی ایجاد و معرفی کرد، برای بهبود در عملکرد بین پردازنده و پردازنده گرافیکی ایجاد شده است، که این شرکت برای بهبود عملکرد در APU ها معرفی کرد، حال این تکنولوژی در کنسول نسل بعد شرکت SONY مورد استفاده قرار گرفته است ، کنسول Play Station 4 ،
hUMA ، مخفف : Heterogeneous Uniform Memory Access میباشد، تکنولوژی که سطح دسترسی پردازنده و پردازنده گرافیکی رو در یک زمان یا همزمان به حافظه را فراهم میکند. تکنولوژی hUMA بخشی از HSA است ، Heterogeneous System Architecture
HSA تکنولوژی است، به عنوان یک پل عمل می کند هدف این تکنولوژی، فراهم نمودن معماری سیستم مشترک و طراحی ، مدلها از زبانهای برنامه نویسی مشترک سطح بالا برای تمامی دستگاهها، محاسبات ناهمگون در حال ظهور یا پدیدار شدن هستند که نیاز به طراحی خاص و ویژگی از SOC یا سیستم روی تراشه را خواستار هستند، تراشه های جدید، محاسبات ناهمگون دیگر تکیه دارن یا اعتماد کردن بروی تک پردازنده های خاص همه منظوره ، اما در عوض یکی از مزایا ان ایجاد پردازنده های خاص برای هر Task یا وظیفه ، به طور یقین، این پردازنده های خاص متفاوت خواهدبود برنامه نوشتن برای فضاهای جداگانه از حافظه،
در تصویر بالا مشخص هست که APU همراه با hUMA و یا HSA،
شکل بالا، دیاگرام معماری Liverpool کنسول PS4 هست، نقشه بردازی از حافظه (لیورپول)
ادرس حافظه به صورت 40 بیتی میباشد که این سایز اجازه میدهد صفحات از حافظه که متصل شن به CPU و GPU در یک ادرس مجازی ، صفحات به صورت ازادانه نصب میشوند به وسیله ای نرم افزارهای کاربردی، صفحات حافظه نیازی نداره نداره متصل شوند به صورت همزمان به CPU و GPU ، اگر فقط CPU تنها استفاده شود ، که GPU تنها نیازی نخواهد داشت متصل شود، برعکس زمانی که فقط GPU تنها استفاده شود نیازه دسترسی داشته باشد به باس Garlic که سرعت 176 GB/s میباشد، اگر در یک زمانی CPU و GPU بخواهندبه صورت همزمان دسترسی داشته باشند به Pages یا صفحات در حافظه ، این نیاز به وسیله باسهای Garlic و Onion مشخص و که ایا باید GPU دسترسی داشته باشد یا خیر ، اگر GPU نیاز داشته باشد به پهنای باند بیشتر ، این Pages ها یا صفحات از طریق باسهای Garlic و Onion اختصاص داده میشود، CPU از طریق باس Onion دسترسی دارد به حافظه Unified ، اگر CPU نیاز داشته باشد به صورت مکرر به Pages ها باید متصل شود به Cache Memory خود در CPU، این GPU فقط می تواند دسترسی داشته باشد از طریق باس Onion، زمانی که GPU نیز مانند CPU درخواست مکرر داده باشید برای دسترسی به Pagesها ، ما در کنسول PS4 دارای پنچ نوع از Buffers یا بافرها هستیم این بافرهای توسط GPU علامت زده میشوند اولین بافر هست که دسترسی محدودی هم داره به CPU، دسترسی اصلی به وسیله GPU انجام میشود، Read Only یا RO ، این بافر در حافظه خوانده میشود به وسیله واحد CU اما انها هرگز نوشته نمی شوند، بافتها یا جداول راس، دسترسی داشتن حافظه های فقط خواندنی به حافظه های L1 باعث میشود ارتباط با یکدیگر انجام نشود که نوشتن عملیاتها نیز باعث مشکلاتی خواهدشد، بافر Private ، این بافر حافظه اختصاصی که خوانده و نوشته میشود گروهی از رشته ها به عنوان مثال : Scratch Buffer ، بافرهای Private دسترسی ندارند به حافظه کش سطح 1 ، به خاطر این که نوشته میشوند و به اشتراک گذاشته میشونددرجای از حافظه ، بافر GC، یا GPU Coherent ، بافریست که خوانده و نوشته میشود به وسیله CU ، که نتیجه ای ان کشیدن Dispatch ها، به عنوان مثال : خروجی از Vertex ها و Shaders که بعدا نیز خوانده میشوند به وسیله واحد Geometry Shaders ، عمق بافرهای و ارائه اهداف قرار نمیگیرن در حافظه GC، چون که انها نوشته نمیشوند به وسیله واحدهای CU، اما اختصاص داده میشوند به سخت افزارها، بافر SC یا System Coherent بافرهای هستند که نوشته و خوانده میشوند به وسیله پردازنده و پردازنده گرافیکی، به عنوان مثلا : ساختار پردازنده به گونه ایست که CPU و GPU با هم در ارتباط هستند، بافرهای SC حجم بزرگی از مسائل مربوط به ارتباط بین CPU و GPU را ارائه میکنند، حافظه کش سطح 1 و سطح 2 می توانند ارتباط خود را با حافظه اصلی، بافر UC یا Uncached ، این بافر مانند SC نیز توسط CPU و GPU نوشته و خوانده میشود، بافرهای UC در هیچ یک از حافظها کش سطح 1 و 2 مربوط به GPU نخواهندبود، بافرهای UC فقط استفاده و قابل دسترس هستند از طریق باسهای Onion که این باسها Onion محدودیت پهنای باند دارند، بافرهای UC دسترسی انها بدلیل نا کارامد بودنشان هی دوباره خوانده شوند در همان Line یا بروزرسانی میکنند این Lines ها را، بافرهای Ro و PV و GC فقط دسترسی دارند توسط CPU، به عنوان مثلا کپی کردن Texture ها در یک مکان جدید، پردازنده می تواند دادهای Texture را در جایی حافظه UnCached بنویسید، و GPU نیز در حافظه Cache خود قرار دهد،GPU نیز می تواند متعاقبا دسترسی داشته باشد به Texture ها در حافظه بافرهای RO، از طریق باس Garlic که پهنای باند بسیار زیادی را ارائه میکند 176 GB/s ، دو خطر دراینجا وجوددارد این هست که CPU دادههای Texture را در UnCached خود قرار میدهد، و انرا مینوسید، و GPU بهصورت ازادانه در حالت استفاده از باس Garlic میباشدپردازنده دادهها قبل این که GPU بنویسد، در حافظه خود قرار میدهد، در این حالت هیچ امکان ندارد دادههادرحافظه Cache سطح 1 و 2 قرار داشته باشند، پیگیری از نوع دسترسی به حافظه ها، دسترسی به حافظه ها ایجاد می شود به وسیله V# و T# به وسیله نوع خاصی از حافظه ها، بیتهای اضافی اضافه میشوند به وسیله ای برچسبهای حافظه های کش سطح 1 ، قرار است اگر مجموعه ای از Lines ها بارگذاری شوند به وسیله بافرهای GC و SC ، یک نوع جدیدی از Packet ها براساس حافظه کش سطح 1 باطل میشوند بعدا اضافه میشوند به بافرهای GC و SC Lines ، یک استراتژی ساده برای کدهای برنامه های کاربردی این است که استفاده می کند این Packet ها فاقد اعتبار قبل از هرگونه رسم شدن که نامیده میشوند Dispatchها که اینها دسترسی دارند به بافرهای GC و SC، این GPU می تواند بدست اورد Packet ها فاقد اعتبار بافر SC بوسیله کش سطح 1 و 2 ، این ادرس بافرSC هست مواجعه شود به حالت OffChip یا برود به حافظه اصلی سیستم یا کش پردازنده ، و سپس محاسبات Shader ها اغاز میشود،ازاد میشود بافر SC و بازنویسی میشود به وسیله ای حافظه کش سطح 2 ، فقط SC lines ها ، این دادههای Dirty هستند برگشت داده میشوند به حافظه اصلی سیستم که پردازنده بتواند انها را ببیند، پردازش گرافیکی تحت فشار است توسط این استراتژی در معماری Liverpool داده ها در بافر RO قرار میگیرند.
سرعت باس Onion 10 GB/s میباشد همچنین سرعت باس Garlic نیز به سرعت 176 GB/s میرسد، باس اختصاصی پردازنده نیز : 20 Gb/s میباشد
===منبع==> OverClockingHeroes