معماری AMD GCN

«در بخش اول بررسی تخصصی معماری GCN» با تاریخچه معماری VLIW آشنا شدیم و فهمیدیم که چرا AMD در نسول گذشته در مقابل معماری هایی همچون کپلر، فرمی و ماکسول حرفی زیادی برای گرفتن نداشت. حتی با بررسی و آنالیز معماری VLIW دیدم که این معماری از مشکل هدر رفت عملکرد پردازشی رنج میبرد که نهایتا منجر به طراحی معماری GCN شد. در دومین بررسی قصد داریم معماری GCN را تشریح کنیم. با ما همراه باشید.

بزرگترین مانع AMD بر سر راه ادامه و گسترش نسل های جدیدتر معماری VLIW این بود که در زمینه محاسبات (Compute)، که هدف AMD برای نقشه راه پردازنده های APU محسوب میشد، حرفی برای گفتن نداشت. معماری VLIW برای انجام پردازش های گرافیکی سنگین بی نظیر بود که البته همین امر نیز به عنوان پاشنه آشیل این معماری محسوب میشود.

هدف اصلی AMD از ساخت و طراحی GCN این بود که بتواند پردازنده و تراشه گرافیکی را در یک هسته واحد و در کنار هم قرار دهد که البته به این هدف هم رسیده است. دلیل این ترکیب این بود که سرعت پردازش اطلاعات را درمواردی که پردازنده  (CPU) قادر به اجرای آنها نیست یا در آنها ضعیف است را افزایش دهد. اینطور بگوییم که نقش پردازنده مرکزی در معماری AMD برای APU های آینده این شرکت چیزی همانند Giaga Thread Eengine های برای هسته های کودا (CUDA) انویدیا، اما با مقیاسی بزرگتر و پیچیده تر است.

اینطور بگوییم که معماری پردازنده های بولدوزر در واقع در نیمه راه معماری های AMD و در بخش CPU بوده و نیمه بعدی را GCN در بخش GPU انجام میدهد تا AMD ضربه شست اصلی خودش و آنچه که از آن به عنوان APU نام برده را به رقبایش نشان دهد.

تشریح SIMD در معماری GCN

در واقع در معماری GCN از معماری صرف یا خالص VLIW دور میشویم و به چیزی به نام معماری Non-Vliw SIMD نزدیک میشویم. در اصل هردو به هم شبیه هستند و تعداد زیادی از دستورات را به صورت موازی اجرا میکنند. اما تفاوت اصلی در یک مطلب مهم هست و آنهم «Execution» یا اجرای دستورات است.

تمام تمرکز معماری VLIW در مورد استخراج دستورالعمل ها و اجرای آنها بر روی مقادیر است که این مِتُد یا روش را ILP یا Instruction Level Parallelism میگویند که از قدیم یمی از بهترین ها و محبوب ترین های AMD محسوب میشد. اما Non-Vliw SIMD در اصل در باره متد TLP یا Thread Level Parallelism است که اتفاقا این متد محبوب برند رقیب یعنی Nvidia است.(انویدیا بر اساس رشته ها (Thread)، واحد های ارسال را برای اجرا به هسته ها برنامه ریزی کرده بود و هر رشته متشکل اشامل دستورالعمل میشد.

قبل از اینکه به طور عمیق وارد تفاوت های Vliw و Non-Vliw SIMD بشویم، میتوانیم بگوییم که Vliw در زمینه محاسبات (Compute) بسیار ضعیف است. (چیزی که در بخش اول توضیح دادیم و گفتیم به همین دلیل در مقابل معماری های انویدیا همیشه عقب است). اما Non-Vliw SIMD معماری جایگزینی است که عرضه شده تا مشکل فوق را حل کند. چیزی که با توجه به معماری های جدید و کارت هایی همچون Fury X تقریبا به واقعیت نزدیک شده و از این نقطه نظر یک پیروزی برای AMD است.

Wavefront Execution Example: SIMD vs. VLIW

Non-Vliw SIMD چه طور این مشکل را حل میکند؟!

در مطالب قبلی عرض کردیم که معماری VLIW توانایی لازم برای انجام پردازش های مربوط به GPGPU را ندارد. اما سوال اصلی این است که مشکل از طراحی بد معماری Vliw است یا از جای دیگه!؟

جواب این است که معماری Vliw مشکلی ندارد، چون به راحتی از طریق یک کامپایلر مناسب میتوان مشکل را برطرف کرد. همان کاری که انویدیا در آن مهارت عجیبی دارد و همیشه نرم فزارهایی منتشر میکند که تا قطره آخر خون موجود در رگ های کارت هایش را بیرون میکشد! چیزی که AMD در آن مهارتی ندارد و این از نظر بازیبازان یک ضعف محسوب میشود!

بهتر است اینطور بگوییم که معماری Vliw داده های مختلف را بهتر اجرا میکند. این معماری میتواند داده هایی از نوع هم نوع ۳۲ یا ۶۴ بیتی از جنس نقاط شناور و یا ۲۴ بیتی عدد صحیح را پردازش کند و در ثانی این داده ها میتواند غیر وابسته باشند تا SIMD یا همان SPU های موجود در هر هسته بتوانند از تمامی توانایی موجود در هسته پردازنده استفاده کنند.

اگر کامپایلر بتواند داده های فوق را جدا کند و به ترتیب برای پردازش به SIMD ها بفرستد،  قدرت معماری VLIW به حدی میشود که به طور مثال یک کارت HD ۵۹۷۰ با قدرت محاسباتی بیش از ۵ ترافلاپس میتواند همچون یک ابر کامپیوتر تمام عیار به پردازش اطلاعات بپردازد.

SIMD-ENGINE

جالب است بدانید ابر کامپیوتر T مستقر در کشور ژاپن قدرتی معادل  ۸.۱۲۶ پتافلاپس دارد و البته این امر را مدیون ۷۰.۰۰۰ پردازنده ۸ هسته ای فوجیتسو SPARC64 VIIIfx است که هر کدامشان قدرت خام محاسباتی معادل ۱۲۸ گیگافلاپس دارند!  بنابراین اگر امکان استفده از تمام قدرت خام محاسباتی کارت HD ۵۹۷۰ استفاده کنند، میشد با ۱۶۲۵ عدد تراشه HD ۵۹۷۰ توان خام محاسباتی بسیار بالایی رسید که بسیار فراتر از یک ابر کامپیوتر مدل T است.

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

بهتر است توضیحات و پیچیدگی های این بخش از معماری VLIW را در همین جا تمام کنیم تا موجبات سردرد بیشتر خوانده را فراهم نکنیم! هر چند میدانیم تا همین جا هم معدود افرادی موفق به خواندن و درک این مطالب شدند.

جایگزینی Non-Vliw SIMD به جای Vliw

سوال این است که AMD چه چیزی را با VLIW جایگزین میکند؟! میشود اینطور گفت که AMD پردازنده های برداری معمولی SIMD Vector Processor رو جایگزین Vliw SIMD کرده است. عناصر کایمن (Cayman) به طور مستقیم و با تغییر در GCN منتقل نمیشوند. در واقع این پردازنده های سایه زن (Shader Processors) در Cayman به وطور کامل با SIMD های GCN تعویض شده است.

دقت گنید اشتباه نشود، SIMD موجود در Cayman خود متشکل از چند پردازنده سایه زن (Shader Processors) بودند، اما SIMD موجود در GCN یک ۱۶ واحد Wide Vector SIMD محسوب میشوند. که در دیاگرام زیر میتوانید ALU ها یا واحد های منطقی را در کنار ۱۶ واحد Wide Vector SIMD مشاهده کنید.

SIMD

نحوه عملکرد آن هم به این صورت است که ۱ دستور العمل همراه با ۱۶ عنصر داده (Data Elemnts) یک Vector SIMD رو در GCN تغذیه میکنند و در یک سیکل ساعت پردازش میشوند. مثلا مطابق با Wavefront که متشکل از ۶۴ واحد دستورالعمل (instructions) است، باید ۴ سیکل پردازشی را بگیرد تا یک دستور العمل را در کل Wavefront اجرا کند. این واحد برداری (Vector) با یک ثبات ۶۴ کیلیوبیتی ترکیب شده اند و روی هم تشکیل یک SIMD را در GCN داده اند.

گفته شده برخلاف SPs های Cayman در SIMD های جدید این امکان فراهم شده که تعداد مختلف دو داده نا همجنس نقطه شناور (Floating Point) و عدد صحیح (Integer) قابل اجرا (execute) شوند. این موارد نشان میدهد مقدار Compute های موجود در معماری GCN شامل GCN 1.1 و GCN 1.2 بسیار بسیار قدرتمند است و از توان خام محساباتی بسیار وحشتناکی برخوردار است.

نکته بعدی این است که معماری GCN به نسبت معماری VLIW از توان خام پردازشی بسیار بالایی در داده های ۶۴ بیتی با دقت مضاعف (Double pricision) برخوردار است و همین مورد میتواند آینده درخشانی برای AMD رقم بزند. میتوان اینطور گفت که AMD یک بیس یا پایه کاری مشترک، اما قابل انعطاف برای محصولات آینده اش تولید کرده و در آینده نیز تمامی طراحی های تراشه های خودش را بر روی یک پایه واحد اجرا میکند. این یعنی مزان کمتر، سرعت بیشتر، دقت و در نهایت توان خام محساباتی فراتر از روی کاغذ.

واحدهای محاسبه «Compute Unit»

Many SIMDs Make One Compute Unit – همانطور که در تصویر زیر میبینید، از کنار هم قرار گرفتن تعداد زیادی Vector SIMD یکواحدهای پردازشی (Compute unit) تشکیل میشود.

GCN-CUTH

هر CU متشکل از ۴ Vecor SIMD است. به این معنا که همچون Cayman SIMD موجود در هر CU، معماری GCN هم میتواند ۴ دستور العمل را در ۱ بار انجام دهد. در واقع میشود هر SIMD Core موجود در Cayman SIMD را معادل یک CU موجود در GCN در نظر گرفت. در Cayman هر هسته SIMD شامل ۱۶ واحد پردازنده جریانی (Stream processing) یا SIMD است. مثلا در Caymen به مقدار ۳۸۴ عدد پردازنده جریانی یا هسته SIMD وجود دارد که در واقع این ۳۸۴ پردازنده سایه زن در  ۲۴ هسته SIMD جداگانه قرار گرفتند.

هر CU برای تکمیل ۴ ثبات یا ریجسترهای (Register 64kb) خودش که با SIMD جفت شده، یک ثبات ۱۶ کیلوبایتی با کش سطح اول (۱۶KB L1) و دو ثبات فقط خواندنی سطح اول دیگر ۱۶ کیلوبایتی (۱۶KB) و ۳۲ کیلوبایتی (۳۲KB) برای خواندن دستورالعمل ها است. درواقع در GCN ثبات سطح ۱ به صورت واحد در می آید و از این نظر میشود گفت ثبات دیگری برای تکسچرها وجود ندارد.

واحد Ftech و Decod هم برای کار در کنار هر هسته SIMD به منظور جذب و دیکدینگ دستورات قرار گرفته است. همچنین واحد دیگری به نام  ALU Scaler هم دیده میشودکه بعدا دربار آن توضیح میدهیم. همانطور که گفتیم هر CU در واقع مشابه یک SIMD core است که در نسل گذشته در دیاگرام معماری های مختلف مشاهده میشد. دقیقا شبیه چیزی که در شکل زیر میبینید:

SIMDCore

در کایمن (Cayman) هر یک از SP ها یا واحد پردازنده جریانی (Stream processing) به شکل زیر است:

VILW4

هر Wavefront در AMD شامل ۶۴ دستورالعمل هست که در Rack های ۱۶ تایی Wavefront قرار دارد (۴ عدد). حال بیایم ببنیم در CU هسته های GCN و هسته های SIMD مربوط به کایمن (Cayman) چه طور محاسبه میشوند و چه تفاوت هایی باهم دارند. ابتدا به شکل زیر دقت کنید:

GCN-Final

در سمت چپ شکل شما یک SIMD core مربوط به Cayman رو میبینید و در سمت راست ۴ مربع رو میبینید که مجموعا یک CU یا واحد های محاسبه (Compute unit) رو تشکیل میدهند. در بالا سمت راست شما یک Wavefront رو میبینید که شامل ۴ عدد Wavefront هست که دارای شرایط روبه رو میباشد: VLIW Ideal Scenario: All Non-Dependent Wavefronts.

یعنی Wavefront ها کاملا به صورت بدون وابستگی (Non depend) در کنار هم قرا گرفتند و غیر وابسته هستند. حال نحوه پردازش در دو معماری به صورت زیر هست:

برای کایمن (Cayman): همانطور که در شکل میبینید؛ Wavefronts A.B.C.D هر کدام شامل یک دستورالعمل در یک سیکل است که توسط هسته های SIMD پردازش میشوند.

برای CU: برای واحدهای CU هم هر یک از SIMD ها یک Wavefronts را تشکیل میدهند که همگی آنها با یک دستورالعمل اجرا میشوند. این در بهترین حالت ایده ال برای VLIW بود. اما حالا بیاید ببنیم اگر دستورالعملی به بعدی بستگی داشت چه اتفاقی می افتاد؟! پس به دقت تصویر زیر و ببینید:

GCN-Final_1

در اینجا ما یک دستورالعمل Wavefront D داریم که برای اجرای اون نیازمند انجام شدن دستورالعمل Wavefront C هست. بنابراین، در هسته های مبتنی بر Cayman SIMD یکی از واحدهای هسته های پردازنده جریانی (SP) از کار می افتد و بیکار میشود. اما برای CU این طور نیست و زمانبندی دینامیک (Dynamin schaduler) و کامپایلر میتواند این دستورالعمل را شناسایی کند و چون دستور بعدی نیازی به نتیجه D ندارد، دستور D را داخل یکی از SIMD های CU میگذارد تا در مرحله بعد D که بستگی به C دارد انجام شود.

امیدواریم فهم و درک مطلب تا الان سخت نبوده باشد! فقط سه بخش مانده که آنهم به Scalar ALU و GCN GPU و Asynchronous Compute Engines (موتور محاسبه ناهمگون یا ناهمزمان) مربوط است که در ادامه به بررسری هر دو مورد میپردازیم.

بررسی Scalar ALU در معماری GCN

Scalar ALU واحد جدیدی است که در GCN به منظور کمک کردن در عملیات هایی که SIMD ها در آنها ناکارامد عمل میکنند طراحی و پیاده سازی شده است. درواقع مهم ترین کار Scaler ALU این است که داده و عملیات های مستقل (independent) را که ممکن است وقت ارزشمند Vector SIMD را هدر دهند در خودش اجرا میکند. مثل عملیات های ساده اعداد صحیح (Integer) یا کنترل جریان و … . لازم به ذکر است هر واحد scaler در هر سیکل ساعت میتواند۱ دستورالعمل را انجام دهد.

یعنی اگر یک Wavefronts که شامل ۶۴ دستور العمل هست و باید در ۴ سیکل ساعت در یک SIMD انجام شود، در این ۴ سیکل ساعت یک واحد scaler میتواند ۴ دستورالعمل را انجام دهد. به طور کلی واحد scaler برای انجام عملیات های غیر برداری (Non-Vectorized) بسیار مناسب است.

واحد پردازش گرافیک «GCN» 

GCN مخفف عبارت «Graphic processing unit» به معنای واحد پردازش گرافیک است و شامل تعداد زیادی  CU یا همان واحدهای پردازشی است که خود تراشه گرافیکی (GPU) را تشکیل میدهند.

AMD-GCN_2

هر GPU در معماری GCN از تعداد زیادی CU ساخته شده است. برای مقایسه عرض کردم که هر Cayman از ۲۴ عدد هسته SIMD ساخته شده که هریک از آنها شامل ۱۶ واحد SP هستند و هر SP یا همان واحد پردازنده جریانی هم از ۵ عدد ALU یا همان واحدهای محاسبات منطقی تشکیل شده است. بنابر این به طور مثال اگر Tahiti XT از ۵۰ عدد CU ساخته شده باشد، به لحاظ تئوری باید خیلی بیش از چند برابر Cayman توان محاسباتی واقعی داشته باشد .(حتی با تعداد برابر و تکنولوژی ۴۰nm هم میتواند بسیار برتر باشد).

در سطح بالا ما کش های سطح L2 را می بینیم که میتوانند به دو حالت ۶۴ کیلوبایتی یا ۱۲۸ کیلوبایتی به ازای هر مموری کنترلر داشته باشند. یعنی به طور مثال برای Cayman به ازای هر مموری کنترلر ۶۴ کیلوبایت کش سطح دوم درنظر گرفته شده بود که در مجموع تعداد هسته هایش ۵۱۲ کیلوبایت کش سطح دوم (L2 Cach) را شامل میشد. اما موتور جدیدی به این معماری اضافه شده که Asynchronous Compute Engines نام دارد. این موتور جدید از اولین نسل GCN تا GCN 1.2 موجود است.

موتور محسابه ناهمگون یا Asynchronous Compute Engines

این واحد ها به این منظور به خدمت گرفته شدند که به دستورات پردازنده (Command processor) برای عملیات های مربوط به محاسبات (compute) کمک کنند. هدف اصلی ACEs ها قبول کارها برای ارسال به CU برای پردازش است. (نقشی شبیه GTE یا Giga Thread Engine های انویدیا که شاید عملکرد صحیح و برنامه ریزی صحیح این واحد، میتوانست کارایی نهایی و قدرت فرمی را در محاسبات GPGPU افزایش میداد که اینگونه نشد).

از آنجایی که هدف اصلی GCN همان محاسبات (compute) است، ACEs ها باید بتوانند با وظایف مختلف به خوبی کار کنند. اطلاعات زیادی از اینکه AMD چه طور بی واسطه از قابلیت های ACEs و تعداد وظیفه های مختلف به طورهمزمان استفاده میکند در دست نیست. اما چیزی که مشخص است، این است که وظایف (Tasks) موازی متعدد نیاز مند ACE های متعدد هم میباشد.

GCN-CU

موتور محسابه ناهمگون یا Asynchronous Compute Engines موضوع بسیار مهمی است که طی چند وقت اخیر محل بحث و جدل انویدیا و AMD بر سر پشتیبانی این ویژگی مهم در کارت های نسل جدید بوده است. موتور محاسباتی غیرهمگام یا «Asynchronous Compute Engines» در پردازنده های گرافیکی مبتنی بر میکرو معماری GCN برای افزایش توانایی قابلیت سایه زنی غیر همزمان برو روی DX12 به کار میرود.

این واحد ها به این منظور به خدمت گرفته شدند که به دستورات پردازنده (Command Processor) برای عملیات های مربوط به محاسبات (Compute) کمک کنند. هدف اصلی ACEs ها قبول کارها برای ارسال به CU برای پردازش است. (نقشی شبیه GTE یا Giga Thread Engine های انویدیا که شاید عملکرد صحیح و برنامه ریزی صحیح این واحد، میتوانست کارایی نهایی و قدرت فرمی را در محاسبات GPGPU افزایش میداد که اینگونه نشد).

از آنجایی که هدف اصلی میکرو معماری GCN همان محاسبات (compute) است، ACEs ها باید بتوانند با وظایف مختلف به خوبی کار کنند. اطلاعات زیادی از اینکه AMD چه طور بی واسطه از قابلیت های ACEs و تعداد وظیفه های مختلف به طورهمزمان استفاده میکند در دست نیست. اما چیزی که مشخص است، این است که وظایف (Tasks) موازی متعدد، نیاز مند ACE های متعددی هم میباشند.

بازی Ashes of the Singularity

نسل دوم معماری ماکسول پردازش های ناهمگام (Asynchronous Compute) را به صورت شبیه سازی و به واسطه نرم افزار اجرا میکند. یعنی همان مورد و تغییر رویه ای که انویدیا از نسل کپلر به نسل ماکسول در کارت هایش ایجاد کرده بود، حالا بر عکسش توسط AMD در حال انجام است! Asynchronous Compute Engine اصولا برای کاربردهای Computing استفاده میشود. هدف اصلی موتورهای ACE پذیرفتن کارها و انتقال آنها به واحدهای CU است.

اما یک نکته مهم وجود دارد و آن هم این است که معماری GCN اصولا توانایی محدودی در اجرای دستورات نامنظم دارد و یک معماری منظم محسوب میشود. سوال این است که پس چه گونه از Asynchronous Compute Engine پشتیبانی میکند؟! چیزی که جلب توجه میکند استفاده از فیچر لول های DX12.1 ای همچون  VXGI موجود در عنوان انحصاری Quantum Break کنسول Xbox One است.

ازی بزرگی که همین چند روز قبل یک تریلر فنی در مورد روش های رندرینگ و نورپردازی این بازی در همایش Siggraph 2015 منتشر شد و ما نیز آن را در بررسی ویژه ای به نام «بررسی سیستم نور پردازی پیشرفته Quantum Break» منتشر کردیم که میتوانید با کلیک روی لینک فوق مقاله را مشاهده کنید. بنا به گفته استدیو Oxide عملکرد میکرو معماری GCN شرکت AMD در پردازش های موازی به مراتب بهتر از عملکرد نسل دوم معماری ماکسول (Maxwell) در DX12 است.

بازی Ashes of the Singularity

بدین معنا که معماری ماکسول (Maxwell) شرکت انویدیا در پردازش های موازی و غیر همزمان قادر است ۳۱ کار/دستور العمل پردازشی را انجام دهد، در حالی که GCN AMD میتواند ۶۴ تا کار/دستور العمل پردازشی را انجام دهد. این یعنی اینکه  معماری AMD GCN در DX12 از عملکرد به مراتب بهتری برخوردار است و این مورد دقیقاً همان چیزی است که در Asynchronous Compute Engine دیده میشود و ما هم آن طی دو مقاله مفصل «بررسی Ashes of the Singularity و ماجرای DX12» و «دعوای انویدیا و AMD در Ashes of the Singularity با DX12» توضیح دادیم.

در نهایت هم بگوییم که یکی دیگر از موارد بسیار مهمی دیگری که درمورد ACE ها باید مشخص شود این است:

One effect of having the ACEs is that GCN has a limited ability to execute tasks out of order. As we mentioned previously GCN is an in-order architecture, and the instruction stream on a wavefront cannot be reodered. However the ACEs can prioritize and reprioritize tasks, allowing tasks to be completed in a different order than they’re received. This allows GCN to free up the resources those tasks were using as early as possible rather than having the task consuming resources for an extended period of time in a nearly-finished state. This is not significantly different from how modern in-order CPUs (Atom, ARM A8, etc) handle multi-tasking.
منبع anandtech
راي شما
1 Star2 Stars3 Stars4 Stars5 Stars6 Stars7 Stars8 Stars9 Stars10 Stars
Loading...

نوشته شده در AMD/ATI,بررسی سخت افزار,کارت گرافیک

آخرین نقد و بررسی ها
بررسی مانیتور Samsung CFG70 27-Inch gaming

بررسی مانیتور Samsung CFG70 27-Inch gaming

تاريخ بررسي: ۲۶ آبان, ۹۶
بررسی کارت گرافیک ASUS ROG STRIX GTX 1060 OC 6GB

بررسی کارت گرافیک ASUS ROG STRIX GTX 1060 OC 6GB

۱۹ مرداد, ۹۶

9.0

بررسی کارت گرافیک Zotac GeForce GTX 1080 Ti AMP! Extreme

بررسی کارت گرافیک Zotac GeForce GTX 1080 Ti AMP! Extreme

۶ مرداد, ۹۶

9.6

بررسی کارت گرافیک Palit GTX 1080 GameRock Premium

بررسی کارت گرافیک Palit GTX 1080 GameRock Premium

۲۶ تیر, ۹۶

9.8

بررسی کارت گرافیک Sapphire Radeon RX 580 Nitro

بررسی کارت گرافیک Sapphire Radeon RX 580 Nitro

۲۳ اردیبهشت, ۹۶

9.2

روزی سگی، شیری را گفت: با من ستیز کن؛ شیر سر باز زد؛ سگ گفت: نزد تمام سگان خواهم گفت شیر از مقابله با من می هراسد. شیر گفت: سرزنش سگان را خوشتر دارم تا شماتت شیران، که گویند چون شیری باشد که با سگی پنجه در پنجه شده

×
AMD

تــیم گارد3دی

تیم گــارد3دی (Guard3d.com) سعی بر ارائه مطالب متفاوت در زمینه سخت افزار و بازی دارد و امیدوار است در این زمینه بهترین عملکرد را داشته باشد . تیم گـــارد فعالیت خود را به صورت رسمی از تاریخ 2013-10-14 برابر با 1392-07-22 آغاز کرده و تمامی مطالب تولید شده توسط این سایت برای صاحبین آن محفوظ میباشد. کپی مطالب تنها با ذکر نام (Guard3d.com) مجاز است و ما از کپی مطالب بدون ذکر دقیق لینک منبع به صفحه مطلب راضی نیستیم. امیدواریم رضایت شما را جلب کنیم .

شبکه های اجتماعی

کپی رایت 2013 © تمامی حقوق نزد Guard3d محفوظ است | طراحی و کدنویسی توسط hosseincode

error: نمیتوانید کپی کنید!!! فقط لینک صفحه برای آدرس دهی به این مطلب قابل کپی است