مشکلات فناوري چند هسته اي(1)

در سال 1975، هنگامي که بازي حذفي (Playoff) راگبي بين تيم هاي مينيسوتا وايکينگ (Minnesota) و دالاسکابوي (Dalld Cowboy) در 24 ثانيه ي پاياني تيم مينيسوتا 4 امتياز از حريف خود پيش بود، در اين هنگام فيمر راجر استاوبچ (Famer Rager Staubach) مهاجم دالاس کابوي چشمان خود را بست و با تمام نيروي خويش توپ را پرتاب کرد و با فرياد زد، درود بر مريم مقدس (Hail Mary). (براي طرفداران فوتبال اين درست شبيه به آن است که ديويد بهکام در لحظات آخر بازي که نتيجه ي بازي را در حال از دست دادن هستند، از ميانه ي زمين، شوتي روانه ي دروازه ي حريف نمايد.)
دوشنبه، 4 ارديبهشت 1391
تخمین زمان مطالعه:
موارد بیشتر برای شما
مشکلات فناوري چند هسته اي(1)

مشکلات فناوري چند هسته اي
مشکلات فناوري چند هسته اي(1)


 






 
در سال 1975، هنگامي که بازي حذفي (Playoff) راگبي بين تيم هاي مينيسوتا وايکينگ (Minnesota) و دالاسکابوي (Dalld Cowboy) در 24 ثانيه ي پاياني تيم مينيسوتا 4 امتياز از حريف خود پيش بود، در اين هنگام فيمر راجر استاوبچ (Famer Rager Staubach) مهاجم دالاس کابوي چشمان خود را بست و با تمام نيروي خويش توپ را پرتاب کرد و با فرياد زد، درود بر مريم مقدس (Hail Mary). (براي طرفداران فوتبال اين درست شبيه به آن است که ديويد بهکام در لحظات آخر بازي که نتيجه ي بازي را در حال از دست دادن هستند، از ميانه ي زمين، شوتي روانه ي دروازه ي حريف نمايد.)
دعاي او مستجاب شد. دريافت کننده ي ضربه ي استاوبچ، با مدافع وايکينگ برخورد کرد (درست هنگامي که توپ به وي رسيد)، اما با اين حال سرنوشت بازي به ساق هاي او بستگي داشت، در عين ناباروري امتياز سرنوشت ساز، با عبور توپ از خط دروازه نصيب تيم کابوي گرديد، و اين تيم، نتيجه ي بازي را در زماني که هيچکس فکرش را نمي کرد، به نفع خود تغيير داد. (تصور کنيد که ضربه ي بلند بکهام، دروازه بان را مغلوب نمايد.) پس از آن بازي، به پيروزي هايي که در عين ناباوري و نااميدي به دست مي آيند لقب Hail Mary دادند.
سي سال بعد، صنعت نيمه رساناها حرکتي مانند پرتاب Hail Mary انجام داد؛ اين حرکت هنگامي انجام گرفت که اين صنعت تصميم داشت، سرعت ريزپردازه ها را با قرار دادن بيشتر آن ها بر روي يک تراشه افزايش دهد. انجام چنين کاري بي آنکه توجهي به اين موضوع داشته باشند که اين قطعات چگونه بايد برنامه ريزي گردند! تنها اميد آنها اين بود که شايد کسي پيدا شود و اين مهم را به انجام رساند؛ اما در آن زمان، توپ هنوز در هوا بود و از دست کسي کاري ساخته نبود.
چرا بايد چنين ريسک بزرگي انجام داد؟ بطور مختصر بايد گفت، زيرا بيشتر آن ها سنت گرا نبودند.
براي دهه ها، طراحان ريز پردازنده ها تعداد ترانزيستورهاي روي تراشه ها را افزايش مي دادند تا باعث افزايش توان محاسباتي و پردازشي ريزپردازنده ها گردند. آنها براي دستيابي به اين مهم، ريرپردازنده هايي ساختند که توانايي انجام چند عمليات را بطور همزمان داشت. براي نمونه، اين ريزپردازنده ها دستور بعدي را از حافظه بالا مي آورند - هنگامي که هنوز دستور فعلي در حال اجرا بود و سازندگان تراشه ها بطور پيوسته در حال افزايش Clock Rate هستند.
اما حدود سال 2003، سازندگان تراشه ها دريافتند که ديگر مثل گذشته نمي توانند ولتاژ عامل را به سرعت کاهش دهند، همانند موقعي که ترانزيستورهاي کوچک تر و سريع تر ساخته بودند. دليل اين امر مقدار گرماي اتلافي بود که مي بايست از هر ميليمتر مربع سيليکون پراکنده مي شد. نهايتاً طراحان به آنچه که ديوار توان ناميده مي شد، برخورد کردند، حدي از توان که يک تراشه ي ريزپردازنده مي توانست پاسخگو باشد و پراکنده سازد. بعد از آن بود که لپتاپ ها فروش فوق العاده اي پيدا کردند.
اکنون طراحان و سازندگان ريزپردازنده ها به اين نتيجه رسيده اند که هنوز ميتوان تراشه هاي کوچکتري با تعداد بيشتري ترانزيستور توليد کرد ولي اين تراشه ها از تراشه هاي فعلي سريع تر نخواهند بود. (در واقع مدار بيشينه يا بعبارتي قله ي clock speeds پايينتر از آنچه در پنج سال پيش بودند، مي باشد. اگر شما تلاش کنيد همه ي اين ترانزيستورها در يک ريزپردازنده ي بسيار بزرگ يکپارچه نماييد، شما ممکن است به خوبي از انجام چنين کاري برآييد اما اين قطعه نمي تواند سريعتر از تراشه اي عمليات محاسبات و پردازش را انجام دهد که ما را به سوي ساخت هسته هاي ريزپردازنده ي چندتايي رهنمون ساخت که امروزه ما آنها را به چند هسته اي يا Multi Core مي شناسيم. اگرچه هر هسته داراي توانايي محاسباتي معمولي باشد، اما شما در اين سيستم جديد تعداد زيادي از آنها را در يک پيکربندي در اختيار داريد.
چنين تراشه هاي نوظهوري، ريزپردازنده هاي چند هسته اي ناميده مي شوند - گاهي اوقات که تعداد هسته زياد مي شود آن ها را ريزپردازنده هاي بيش هسته اي (many-core microprocessors) مي نامند - تا آنها را از ريزپردازنده هاي رايج تک هسته اي تميز دهيم. در يک نگاه، هسته ي مذکور تبديل به يک ترانزيستور جديد شده است، اين عبارتي است که کريس راون (Chris Rowen) مدير اجرايي و رئيس بخش فناوري تنسليکا در سانتاکلارا، کليف عنوان کرده است. يعني، از اينجا به بعد، طراحان تراشه ها روي اين موضوع تمرکز خواهند داشت که چگونه تعداد زيادي هسته را با يکديگر هم کاسه گردانند، درست طوري که نسل قديم مهندسين ريزپردازنده ها انديشيدند، چگونه مي توان مداربندي را بهبود بخشيد و در نتيجه ترانزيستورهاي منفرد را طراحي نمودند.
اين ترفند موجب ابداع روش هايي خواهد شد تا برنامه نويسان برنامه هاي کاربردي بنويسند که از تعداد افزايشي پردازنده هاي روي تراشه هاي بدون صرف وقت بيشتر براي توسعه ي نرم افزارها و يا پايين آمدن کيفيت آنها، بهره مند گردند. اکنون زمان آن فرا رسيده که بگوييد يا مريم مقدس، زيرا راهي بسيار دشوار در پيش رو است.
هنگامي که پاول اس. اتليني (Paul S. Otellini) مدير و يکي از اعضا هيئت رئيسه ي شرکت اينتل در سال 2004 اظهار داشت که شرکت وي همه ي محصولات آينده ي خود را در محيط هاي چند هسته اي ارائه خواهد داد، اين سوال پيش آمد چرا اتليني در مورد سيستم هاي چند هسته اي گفته است: "اين يک نقطه ي عطف کليدي در صنعت مي باشد؟"
جواب براي هر کس با شرکت هاي بي شماري که در حال حاضر به انتهاي خط رسيده اند آشنا باشند، واضح است. شرط بقاي اين شرکت ها در آينده، به انتقال خط توليد آنها از رايانه هاي تک هسته اي به سوي سيستم هايي است که با پردازنده هاي چند هسته اي بطور موازي کار مي کنند.
Thinking Machines kendall Square Research, MasPar, nCUBE, Sequent Tandem, Ardent, Convex, Encore, Floating Point Systems, Inmos نام هاي بسيار برجسته از ليست بلندي هستند که پيش از اميدواري در زمينه ي برنامه هاي موازي در عرصه ي افزايش سرعت پردازشگرها فعاليت داشتند. اتليني همچنين گفته است که عليرغم رکورد بي سابقه در اين زمينه، کاربردهاي نرم افزار در آينده سريعتر اجرا و پردازش خواهند شد فقط اگر برنامه نويسان بتوانند برنامه هاي موازي براي انواع ريزپردازنده هاي چند هسته اي بنويسند که شرکت اينتل و ديگر شرکت هاي نيمه رسانا در حال ساخت آنها هستند.
اما چرا پردازش هاي موازي چنين چالشي براي شرکت سازنده ي پردازنده هاي چند هسته اي محسوب مي شوند؟ در اينجا با يک قياس نسبي تلاش مي کنيم تا اين مسئله را براي شما روشن نماييم. برنامه نويسي نيز مانند نوشتن يک داستان خبري به طرق مختلف امکان پذير است. براي مثال 10 خبرنگار مي توانند يک داستان خبري را به بخش مساوي بين خود تقسيم نمايند، در غير اينصورت آنها نمي توانند به سرعت 10 بار سريع تر از يک خبرنگار دست يابند.
اما بايد اذعان داشت در اينجا پيچيدگي هايي نيز پديد مي آيند، اگر بخشي از داستان مورد نظر به تمام شدن بخش هاي ديگر نياز داشته باشد، در اينصورت سرعت کار، دوباره کاهش مي يابد. ضمناً هر 10 خبرنگار بايد اطمينان حاصل نمايند که هر بخش از متن، روند منطقي بخش پيش و پس از خود را دارا باشد و نيز از تکرار مکررات بپرهيزند.
همچنين آنها بايد زمانبندي مناسب داشته باشند تا تمام بخش ها بطور همزمان آماده گردد. زيرا شما نمي توانيد خبري را منتشر سازيد در حاليکه بخش مياني آن هنوز به پايان نرسيده است. اين مواردي که ذکر گرديدند - متعادل سازي اجرا، وابستگي هاي بخش هاي متوالي، و همگاه سازي - از چالش هاي برنامه نويسان برنامه هاي موازي مي باشند.
محققان از دهه ي 1960 تاکنون با اين مشکلات دست به گريبان بوده اند و تلاش داشته اند تا بر اين موانع فايق آيند. بسياري از ايده ها ارائه و آزمايش گرديدند، و بسياري از آنها شکست خوردند. ديدگاه هاي اوليه بر اين اساس بودند که مي توان با يک زبان برنامه نويسي مناسب برنامه هاي موازي مورد نظر را ايجاد کرد. اگر نگوييم هزاران، حداقل مي توان ادعا کرد صدها تلاش براي توسعه ي چنين زبان برنامه نويسي انجام گرفته است که از اين ميان مي توان به Occam, APL, Id, Linda و SISAL اشاره کرد. برخي از برنامه هاي موازي ارائه شده ي اوليه، بسيار ساده بودند، اما هيچيک از آنها مانند برنامه هاي ترتيبي رايج انعطاف پذير، سريع و کارا نبودند. آنها نه قابليت هاي برنامه هاي اوليه اي که براي برنامه نويسي ترتيبي ابداع شدند را دارا بودند و نه مي توانستند مانند اين برنامه ها مورد توجه برنامه نويسان قرار گيرند.
اميدواري ديگري نيز وجود داشت و اينکه اگر سخت افزارهاي مناسبي طراحي و ساخته شوند شايد برنامه هاي موازي ساده تري بتوان طراحي نمود. بسياري از محققين و ابداع کنندگان که بطور خصوصي بر روي اين مشکلات کار مي کردند با اين ايده گمراه گشتند. و بسياري از مردم در تلاش براي ترسيم الدرادو براي معماري کامپيوتر بودند که تاکنون هيچ موفقيتي در اين زمينه حاصل نگشته است.
ايده ي سوم، که اين ايده نيز به دهه ي 1960 برمي گردد، اين است که نرم افزاري نوشته شود تا بطور خودکار برنامه هاي ترتيبي موجود را بصورت موازي درآورد. تاريخ به ما نشان داده است که موفقيت در اين زمينه هنگامي حاصل مي گردد که تعداد هسته ها کاهش يابد، به عبارت ديگر کارآيي نرم افزارهاي مذکور نسبت عکس با تعداد هسته ها دارند. بسته به برنامه، احتمالا مزيت هايي نيز به سبب خودکار بودن عمليات موازي سازي برنامه ها وجود خواهد داشت، در واقع نرم افزار بطور خودکار براي هسته هايي دوتايي، چهارتايي و حتي هشت تايي عمليات موازي سازي را اجرا مي کند. اما بيشتر کارشناسان هنوز شک دارند که موازي سازي خودکار کدهاي ترتيبي دلخواه براي هسته هاي 32 تايي، 64 تايي، يا 128 تايي علي رغم پيشرفت هايي که اخيراً در اين زمينه انتشار يافته اند، مفيد باشند.
در مجموع، تمام ايده ها بسيار سست و بي پايه به نظر مي رسند. با اين حال در برخي مجامع پيشرفت هايي در اين زمينه صورت گرفته است. بطور کل، سيستم هاي موازي هنگامي مي توانند کارساز باشند که شما قادر باشيد مجموعه اي از برنامه نويسان از مرتبه ي Ph.D را گرد هم آوريد تا با يک مشکل روبرو شوند و آنرا مرتفع سازند، مشکلي که وظايف متعددي را شامل مي شود و هر کدام از اين وظايف وابستگي ناچيزي به ديگري دارد. براي مثال مي توان سيستم هاي پايگاه داده را مي توان نام برد که بانک ها براي مديريت معاملات ATM و خطوط هوايي براي پيگيري رزرو از آن استفاده مي کنند. مثال ديگري که مي توان عنوان کرد جستجوي اينترنت است. بايد در نظر داشت عمليات موازي سازي بر روي برنامه هايي که در ارتباط با کاربران زيادي که کارهاي مشابهي را انجام مي دهند، خيلي ساده تر از انجام اين عمليات بر روي فعاليت بسيار پيچيده اي که يک کاربر به تنهايي در حال انجام آن است، مي باشد. زيرا در حالتي که تمام کاربران کار مشابهي را انجام مي دهند شما مراحل وظايف اساسي عمليات موازي سازي را در اختيار داريد ولي در مورد دوم پيش بيني آنکه کاربر در مرحله ي بعدي چه کاري مي خواهد انجام دهد، کمي دشوار است.
کارهاي گرافيکي کامپيوتري يکي ديگر از عرصه هاي موفقيت آميز در زمينه ي موازي سازي هستند. فيلم هاي انيميشن يا ديگر فيلم ها که بوسيله ي جلوه هاي ويژه ي کامپيوتري ساخته شده اند، نشان داده اند که عمليات موازي سازي بر اساس موازي اجرا نمودن وظايف در يک صحنه ي منفرد انجام پذير است، بعبارت ديگر يک صحنه ي مجزا مي تواند بطور موازي مورد پردازش قرار گيرد. برنامه نويسان باهوش نحوه ي موازي سازي در پردازش هر تصوير را دريافته اند. در واقع واحدهاي پردازشي گرافيکي گران قيمت و با کيفيت (GPU) به منظور تسريع بازي ها بر روي يک رايانه ي شخصي، مي توانند شامل صدها پردازنده باشند، هر فرآيندي که جهت رفع موانع انجام مي گردد در واقع يک بخش کوچکي از وظيفه ي ارائه ي يک تصوير مي باشد. دانشمندان علوم کامپيوتر بخش "data-level parallelism" را به چنين کاربردهايي اعمال نموده اند. اين عمل به اندازه ي کافي براي برنامه نويسي دشوار است ولي با اين حال نسبت به کاربردهايي که چنين موازي سازي ذاتي را در بر نمي گيرند، بسيار ساده تر مي باشد.
محاسبات و پردازش هاي علمي يکي ديگر از موفقيت هاي عمليات موازي سازي مي باشند - پيش بيني وضع هوا و شبيه سازي تصادف اتومبيل دو نمونه ي شناخته شده در اين زمينه هستند - اينها برنامه هايي هستند که براي مدت درازي است مورد استفاده مي باشند همچنين اين برنامه ها شامل تعداد زيادي موازي سازي داده ها است. تيم هايي از نخبگان که اينگونه برنامه ها را طراحي مي کنند اغلب دانشمندان علوم کامپيوتر با درجه ي Ph.D و افراد ديگر از علوم مرتبط به کاربرد مورد نظر را شامل مي شوند. براي نمونه خطوط پرواز را که پيشتر از آن سخن گفتيم در نظر گيريد، براي طراحي برنامه اي براي يک سيستم يکپارچه و پايگاه داده براي اطلاعات پرواز علاوه بر متخصصان برنامه ريزي کامپيوتر شما نياز به افرادي که اطلاعات دقيق در مورد ترافيک هوايي دارند، را احساس خواهيد کرد. کاربردهاي به اصطلاح روميزي (Desktop Application) به ندرت توان پيشران منطقي را در پشت سر خود احساس مي کنند. (يادداشت مترجم: کاربردهاي روميزي به نرم افزارهاي کاربردي گفته مي شود که جهت انجام يک يا چند وظيفه ي خاص توسط کاربر طراحي شده اند براي نمونه مي توان نرم افزارهاي پردازشگر واژگان، نرم افزارهاي مديا پلير و ... را نام برد). با دورنمايي که از پردازش هاي موازي ارائه شد، ممکن است شما انتظار نداشته باشيد که فعاليت هاي اخير در اين زمينه با موفقيت هاي چشمگيري همراه باشند. اما بايد گفت اين فکر آنطور که شما مي پنداريد نيست، بلکه دلايلي وجود دارد که ما را کمي به پيشرفت در زمينه ي موازي سازي خوشبين مي کند. اولين دليل آن است که تمام صنعت کامپيوتر بر روي اين مسئله متمرکز شده و بر روي آن کار مي کند. همچنين، حرکت به سوي موازي سازي با کاربردهاي کوچک آغاز گشته و به کندي در حال رشد و توسعه است. برنامه نويسان مي توانند به جاي آنکه حرکت سريع و ناگهاني به سمت هسته هاي 128 تايي داشته باشند، بر روي پردازنده هاي دو هسته اي و چهار هسته اي تمرکز نمايند.
يکي از بزرگترين عامل ها در راستاي پيشبرد عمليات موازي سازي، ميزان انگيزش در اين زمينه مي باشد. در گذشته برنامه نويسان مي بايست منتظر باشند تا ترانزيستورهاي کوچکتر و سريعتر به بازار عرضه شوند تا قدرت پردازش و محاسبات ريزپردازنده ها افزايش يابد. بنابراين برنامه ها بدون دخالت هر گونه تلاشي در زمينه ي بهينه سازي آنها سريعتر اجرا مي گرديدند، که اين يک عامل بازدارنده ي بزرگ در راه کساني بود که قصد داشتند با نوشتن کدهاي موازي سرعت پردازش را افزايش دهند. اکنون دوران سلطه ي برنامه ها فرا رسيده است و از تسلط ريزپردازنده هاي کوچک بر دنياي کامپيوتر کاسته شده است، بنابراين برنامه نويساني که زماني بر روي پروژه ي موازي سازي فعاليت داشتند، دوباره مي توانند از حاشيه بيرون آيند و تلاش خود را از سر گيرند.
دليل بالقوه ي ديگر براي موفقيت آنست که بتوان يک همکاري وسيع بين نرم افزار و پردازش هاي بيش هسته اي (many-core computing)ايجاد نمود. جستجوي Google, Hotmail و Salesfoece نمونه هايي از آن دست خدمات مي باشند که در آنها شما نياز داريد تا جستجو و فعاليت خود را از راه دور در يک مرکز از داده ها انجام دهيد، توجه داشته باشيد که فعاليتي که شما اجرا مي نماييد بر روي کامپيوترتان اجرا نمي شود بلکه پردازش در مرکز داده ها صورت مي گيرد. اينگونه خدمات بسيار مورد توجه هستند زيرا دردسرهاي هم کاربر و هم تهيه کنندگان را کاسته است. کاربران تنها به يک مرورگر نياز دارند تا از اين خدمات بهره گيرند و ديگر نبايد نگران نصب، ارتقا و يا تعمير نرم افزار بر روي سيستم خود باشند. تهيه کنندگان نرم افزار نيز بايد همچنين خوشنود باشند زيرا تمامي عمليات مورد نظر آنها در محيط يک مرکز از داده ها اجرا مي گردند، محيطي که آنها راحت تر مي توانند آنرا کنترل نمايند. در ضمن اين امر سبب مي شود که کساني که وظيفه ي توسعه ي اينگونه خدمات و محيط ها را دارند قادر باشند خيلي سريعتر از برنامه نويساني که پکيج هاي نرم افزاري و کاربردهاي رايج را به بازار عرضه مي دارند کاربردها و نرم افزارهاي خويش را بهبود بخشند، زيرا بر خلاف دسته ي اول که کاربردها در يک مرکز داده اجرا مي گردند، دسته ي دوم نياز به سيستم هاي سخت افزاري و نصب نرم افزارها بر روي آن سيستم ها دارند.
برنامه نويسان حرفه اي مي توانند از طبيعت و سرشت موازي سازي وظايف در انبوهي از محاسبات بهره گيرند. براي ارائه ي خدمات به ميليون ها کاربر، اين برنامه نويسان کاربرد مورد نظر را بين هزاران کامپيوتر تقسيم مي کنند. زيرا در حال حاضر نرم افزارهاي آنها از تعداد زيادي پردازنده استفاده مي کنند، براي مردم بسيار ساده است تا با تکيه بر اين کاربردها به استقبال تراشه هاي چند هسته اي روند. در واقع، تهيه کنندگان اين پردازش هاي بيشمار به سيستم هاي بيش هسته اي بصورت راهي براي کاهش هزينه نگاه مي کنند نه يک فناوري مزاحم و مختل کننده. بنابراين انتظار مي رود با ارائه ي پردازنده هاي بيش هسته اي بصورت راهي براي کاهش هزينه نگاه مي کنند نه يک فناوري مزاحم و مختل کننده. بنابراين انتظار مي رود با ارائه ي پردازنده هاي بيش هسته اي بتوان پاسخگوي شمار زياد از افرادي که نياز به انجام عمليات پردازش از مرتبه ي بسيار بالا را دارند، بود.
عليرغم اين دلايل اميدوار کننده هنوز مشکلاتي بر سر راه صنعت ريزپردازنده ها قرار دارند که بايد با آنها بطور مستقيم رو در رو شد، اين مشکلات سبب شده اند که طي اين مسير خالي از ريسک نباشد و همچنان دستيابي به موفقيت در اين زمينه با تکيه بر همان گفتار پيشين يعني Hail Mary همراه شود. من و ديگر محققين در مرکز اصلي تحقيقاتي پردازش هاي موازي، شامل Georgia Tech، دانشگاه ايلينوئيز، دانشگاه رايس، دانشگاه کاليفرنيا، دانشگاه استانفورد، دانشگاه برکلي، انتظاري نداريم تا اين امر بطور قطع صورت پذيرد. بنابراين به جاي کار بر روي زبان هاي برنامه نويسي عمومي يا طراحي هاي کامپيوتر، ما در تلاش هستيم تا تعدادي کاربرد مهم ايجاد نماييم تا بتوان از مزيت هاي عمليات موازي سازي بهره گرفت. اگر چه هيچيک از اين گروه ها احتمالاً موفق به ارائه ي يک محصول نهايي و کارآمد نباشند، اما زياد مهم نيست. در عوض ما اميدواريم که نرم افزارها و سخت افزارهايي را که عرضه مي نماييم بطور مستقيم شامل برخي از نوآوري هاي اساسي مورد نياز براي برنامه نويسي موازي باشد. اگر ما در اين زمينه موفق شويم، اين امر به ما کمک خواهد کرد در مسيري مناسب قرار گيريم تا بتوانيم نهايتاً کاربردي را که ارائه ميدهيم به عنوان يک محصول جديد موانع را براي مطرح شدن در عرصه ي مذکور از ميان بردارد و يک کاربرد منحصربفرد باشد.
منبع: ماهنامه ي کامپيوتري بزرگراه رايانه، شماره ي 136.



 



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