سؤال لماذا لا نزال نستخدم وحدات المعالجة المركزية (CPUs) بدلاً من وحدات معالجة الرسومات (GPU)؟


يبدو لي أنه في هذه الأيام يتم إجراء الكثير من الحسابات على GPU. ومن الواضح أن الرسومات يتم القيام بها هناك ، ولكن باستخدام CUDA وما شابه ، AI ، خوارزميات التجزئة (أعتقد bitcoins) وغيرها يتم أيضا على GPU. لماذا لا يمكننا فقط التخلص من وحدة المعالجة المركزية واستخدام GPU بمفردها؟ ما الذي يجعل GPU أسرع بكثير من وحدة المعالجة المركزية؟


355
2017-07-10 13:31


الأصل


كيف أعرف الإجابات التي تحتوي على معلومات صحيحة؟ هل أنتظر حتى يقوم الآخرون بالتصويت؟ أعتقد أنني كنت متسرعا جدا في قبول إجابة: يا - ell
هناك بعض الإجابات الأخيرةell الآن ، والتي لا تحتوي على "معلومات خاطئة". إنهم يرتفعون تدريجياً إلى الأعلى بأعلى الأصوات بسبب آلية السوق الفعالة للتصميم الرائع StackExchange ؛-) أقترح الانتظار لفترة أطول قليلاً قبل قبول إجابة. يبدو أنك بحذر شديد تفعل ذلك بالضبط. هذا سؤال جيد ، بالمناسبة. قد يبدو واضحا ، لكنه ليس على الإطلاق. شكرا لطرحك! - Ellie Kesselman
نوع من مثل السؤال "إذا كانت بوينغ 747 أسرع وأكثر كفاءة في استهلاك الوقود ، فلماذا ما زلنا نقود السيارات"؟ - vartec
لا ، لأنه ليس RISC مقابل CISC. انها واحدة من أساسيات علوم الكمبيوتر الأخرى ، متنكرا قليلا. انها "لماذا نقوم بتفريغ العمل من المعالج المركزي على معالجات I / O؟". - JdeBP
vartec: أعتقد أن القياس الأفضل قليلاً قد يكون بين الحافلات وسيارات الأجرة. إذا كان هناك أربعون شخصًا يرغبون في الانتقال من نفس المكان إلى نفس المكان ، فستكون الحافلة أكثر كفاءة. إذا كان هناك أربعون شخصًا تشتت أصولهم ووجهاتهم المرغوبة على نطاق واسع ، فربما حتى سيارة أجرة واحدة قد تكون جيدة تمامًا مثل الحافلة ، وبالنسبة لتكلفة الحافلة ، يمكن أن يكون هناك تاكسيات متعددة. - supercat


الأجوبة:


TL ، DR الإجابة: تحتوي وحدات معالجة الرسوم (GPU) على نواتٍ معالجية أكثر بكثير من وحدات المعالجة المركزية (CPUs) ، ولكن نظرًا لأن كل وحدة معالجة أساسية تعمل بشكل أبطأ بشكل كبير من وحدة المعالجة المركزية الأساسية ولا تتوفر فيها الميزات اللازمة لأنظمة التشغيل الحديثة ، فهي غير مناسبة لأداء معظم المعالجة في الحوسبة اليومية. وهي أكثر ملاءمة لعمليات الحوسبة المكثفة مثل معالجة الفيديو ومحاكاة الفيزياء.


GPGPU لا يزال مفهومًا جديدًا نسبيًا. تم استخدام وحدات معالجة الرسومات في البداية لتقديم الرسومات فقط ؛ ومع تقدم التكنولوجيا ، تم استغلال العدد الكبير من مراكز معالجة الرسوم (GPU) بالنسبة إلى وحدات المعالجة المركزية (CPUs) من خلال تطوير القدرات الحسابية لوحدات معالجة الرسومات (GPUs) حتى يتمكنوا من معالجة العديد من تيارات البيانات المتوازية في وقت واحد ، بغض النظر عن تلك البيانات. على الرغم من أن وحدات معالجة الرسوم يمكن أن تحتوي على مئات أو حتى آلاف من معالجات البث ، إلا أن كل منها يعمل بشكل أبطأ من وحدة المعالجة المركزية الأساسية ولها ميزات أقل (حتى إذا كانت تورينج كاملة ويمكن برمجتها لتشغيل أي برنامج يمكن تشغيل وحدة المعالجة المركزية). تتضمن الميزات المفقودة من GPU المقاطعات والذاكرة الظاهرية ، والتي تكون مطلوبة لتنفيذ نظام تشغيل حديث.

بمعنى آخر ، تحتوي وحدات المعالجة المركزية ووحدات معالجة الرسومات على أبنية مختلفة بشكل كبير تجعلها أكثر ملاءمةً للمهام المختلفة. يمكن لوحدة معالجة الرسومات معالجة كميات كبيرة من البيانات في العديد من التدفقات ، وإجراء عمليات بسيطة نسبياً عليها ، ولكنها غير ملائمة للمعالجة الثقيلة أو المعقدة في تدفقات بيانات واحدة أو قليلة. وحدة المعالجة المركزية أسرع بكثير على أساس كل وحدة أساسية (من حيث التعليمات في الثانية الواحدة) ويمكنها تنفيذ عمليات معقدة على تيارات البيانات الواحدة أو القليلة بسهولة أكبر ، ولكنها لا تستطيع التعامل مع العديد من التدفقات بكفاءة في وقت واحد.

ونتيجة لذلك ، لا تكون وحدات معالجة الرسومات مناسبة للتعامل مع المهام التي لا تستفيد بشكل كبير من أو لا يمكن موازنتها ، بما في ذلك العديد من تطبيقات المستهلك الشائعة مثل معالجات النصوص. وعلاوة على ذلك ، تستخدم وحدات معالجة الرسومات بنية مختلفة اختلافًا جوهريًا ؛ يجب على المرء أن يبرمج تطبيقًا خصيصًا لوحدة معالجة الرسومات (GPU) لكي يعمل ، وهناك حاجة إلى تقنيات مختلفة بشكل كبير من أجل برمجة وحدات معالجة الرسومات (GPU). تتضمن هذه التقنيات المختلفة لغات برمجة جديدة ، وتعديلات للغات الموجودة ، ونماذج برمجة جديدة تكون أكثر ملاءمة للتعبير عن الحساب كعملية موازية يتم تنفيذها بواسطة العديد من معالجات المسار. لمزيد من المعلومات حول التقنيات اللازمة لبرمجة وحدات معالجة الرسومات ، راجع مقالات ويكيبيديا معالجة التدفق و الحوسبة المتوازية.

وحدات معالجة الرسومات الحديثة قادرة على تنفيذ عمليات المتجهات والحساب العائم ، مع أحدث البطاقات القادرة على التعامل مع أرقام الفاصلة العائمة ذات الدقة المزدوجة. وتمكّن أطر العمل مثل CUDA و OpenCL من كتابة البرامج لوحدات معالجة الرسومات (GPU) ، كما تجعل طبيعة وحدات معالجة الرسوم (GPU) أكثر ملاءمة للعمليات المتوازية للغاية ، كما هو الحال في الحوسبة العلمية ، حيث يمكن أن تكون سلسلة من بطاقات الحاسبة المتخصصة في GPU بديلاً صالحًا حساب الكتلة كما هو الحال في NVIDIA Tesla Supercomputers الشخصية. يمكن للمستهلكين مع وحدات معالجة الرسوم الحديثة الذين لديهم خبرة في Folding @ home استخدامهم للمساهمة معهم عملاء GPU، والتي يمكن أن تؤدي محاكاة البروتين للطي في سرعات عالية جدا والمساهمة في العمل أكثر للمشروع (تأكد من قراءة أسئلة وأجوبة أولا ، لا سيما تلك المتعلقة GPUs). يمكن لوحدات معالجة الرسومات (GPU) أيضًا تمكين محاكاة الفيزياء بشكل أفضل في ألعاب الفيديو باستخدام PhysX وتسريع ترميز الفيديو وفك ترميزه وتنفيذ مهام أخرى تتطلب استخدام مكثف للحوسبة. هذه الأنواع من المهام هي الأكثر ملاءمة لأداء وحدات معالجة الرسومات (GPU).

أيه إم دي الريادة في تصميم المعالج يسمى وحدة المعالجة المتسارعة (APU) الذي يجمع بين وحدات المعالجة المركزية التقليدية x86 CPU مع GPUs. يتيح هذا الأسلوب أداءً رسوميًا يتفوق بشكل كبير على حلول الرسومات المدمجة في اللوحة الأم (على الرغم من عدم وجود تطابق مع وحدات معالجة الرسومات المنفصلة الأكثر تكلفة) ، كما يتيح نظامًا مدمجًا منخفض التكلفة مع أداء جيد للوسائط المتعددة دون الحاجة إلى وحدة معالجة رسومية منفصلة. كما تقدم أحدث معالجات إنتل الرسومات المدمجة على الرقاقة ، على الرغم من أن أداء GPU التنافسي المتكامل يقتصر حالياً على الرقائق القليلة مع Intel Iris Pro Graphics. مع استمرار التقدم التكنولوجي ، سنشهد درجة متزايدة من التقارب بين هذه الأجزاء المنفصلة. تصور AMD مستقبل حيث وحدة المعالجة المركزية ووحدة معالجة الرسومات هي واحدة قادرة على العمل سويا في نفس المهمة.

ومع ذلك ، لا تزال العديد من المهام التي تقوم بها أنظمة تشغيل الكمبيوتر والتطبيقات أكثر ملاءمة لوحدات المعالجة المركزية (CPUs) ، وهناك حاجة إلى الكثير من العمل لتسريع برنامج باستخدام GPU. نظرًا لأن الكثير من البرامج الحالية تستخدم بنية x86 ، ولأن GPU تتطلب تقنيات برمجة مختلفة وتفتقد العديد من الميزات الهامة المطلوبة لأنظمة التشغيل ، فإن الانتقال العام من CPU إلى GPU للحوسبة اليومية أمر صعب للغاية.


375
2017-07-10 14:00



مثل هذه الإجابة ، أعتقد أن السبب الرئيسي هو أننا لا نملك لغات برمجة تيار جيدة للتعامل مع البنى المتوازية مثل هذا. لقد ناضلنا لعقود من الزمن للتقدم ببرمجة متعددة الخيوط ، وما زال الناس ينادون ، "الشر" المترابط. على الرغم من أن وحدات المعالجة المركزية ووحدات معالجة الرسوميات متعددة النواة هي حقيقة واقعة ، وعلينا التوصل إلى نماذج برمجة جديدة للتعامل مع هذا الأمر. - Soren
الجدير بالذكر أن شركة إنتل تعمل على ارابي العمارة (لطول فترة طويلة) والتي هي في الأساس رقاقة مع عدد هائل من النوى x86 عليه. - Chris S
إجابة رائعة لمناقشة أسباب الأجهزة ومناقشة APUs وكيفية تغييرها. ومع ذلك ،Soren يعطي نقطة جيدة للغاية على جانب البرنامج. في الواقع ، إنه مزيج من مشكلات الأجهزة ، ومشاكل البرامج ، وحقيقة أن وحدات المعالجة المركزية تعمل وعندما يكون هناك شيء معروف للعمل ، من الصعب جعل الناس يستبدلونه. - Nich Del
"ليس لدينا لغات برمجة تيار جيدة للتعامل مع البنى المتوازية مثل هذا." - Haskell ، OCaml ، مخطط ، F # ، Erlang ، وإلى حد كبير أي langauge البرمجة وظيفية أخرى مع multithreading بشكل جيد للغاية. جميع تلك التي ذكرتها هي التيار الرئيسي. - BlueRaja - Danny Pflughoeft
BlueRaja - نحن على دراية بهذه اللغات ، يجب أن يكون تعريفك للتيار الرئيسي مختلفًا عن التعريف الخاص بي :-) - Soren


ما الذي يجعل GPU أسرع بكثير من وحدة المعالجة المركزية؟

GPU هو ليس أسرع من وحدة المعالجة المركزية. تم تصميم وحدة المعالجة المركزية ووحدة معالجة الرسومات (GPU) مع هدفين مختلفين ، مع مقايضات مختلفة مختلف خصائص الأداء. تكون مهام معينة أسرع في وحدة المعالجة المركزية بينما يتم حساب المهام الأخرى بشكل أسرع في وحدة معالجة الرسومات. تتفوق وحدة المعالجة المركزية في القيام بمعالجة معقدة لمجموعة صغيرة من البيانات ، تتفوق وحدة معالجة الرسومات على القيام بمعاملات بسيطة لمجموعة كبيرة من البيانات.

وحدة معالجة الرسوميات GPU عبارة عن وحدة معالجة خاصة ذات غرض خاص ، مصممة بحيث تعمل التعليمة الواحدة عبر مجموعة كبيرة من البيانات (SIMD / Single Multiple Multiple Data) ، جميعها تطبق نفس العملية. من المؤكد أن العمل في كتل البيانات يكون أكثر كفاءة من العمل مع خلية واحدة في كل مرة لأن هناك انخفاضًا كبيرًا في فك تشفير التعليمات ، ومع ذلك فإن العمل في كتل كبيرة يعني وجود المزيد من وحدات العمل المتوازية ، لذلك يستخدم الكثير من الترانزستورات لتنفيذ تعليمات GPU واحدة (مما تسبب في تقييد الحجم المادي ، واستخدام المزيد من الطاقة ، وإنتاج مزيد من الحرارة).

تم تصميم وحدة المعالجة المركزية (CPU) لتنفيذ تعليمة واحدة على مسند واحد بأسرع وقت ممكن. نظرًا لأنها تحتاج فقط إلى العمل مع مسند واحد ، فإن عدد الترانزستورات اللازمة لتنفيذ تعليمة واحدة أقل بكثير بحيث يمكن لوحدة المعالجة المركزية أن يكون لديها مجموعة تعليمات أكبر ، و ALU أكثر تعقيدًا ، وتوقع أفضل للفروع ، وأفضل محاكاة والهندسة المعمارية ، وخطط التخزين المؤقت / خط أنابيب أكثر تطورا. دورات التعليمات الخاصة به هي أيضا أسرع.

السبب في أننا ما زلنا باستخدام وحدة المعالجة المركزية ليس لأن x86 هو ملك هندسة وحدة المعالجة المركزية و Windows مكتوب لـ x86 ، فإن السبب في أننا ما زلنا نستخدم CPU هو أن نوع المهام التي يحتاج إليها نظام التشغيل ، أي اتخاذ القرارات ، يتم تشغيلها بشكل أكثر كفاءة على بنية وحدة المعالجة المركزية. يحتاج نظام التشغيل إلى النظر في 100 نوع من أنواع البيانات المختلفة واتخاذ القرارات المختلفة التي تعتمد على بعضها البعض ؛ هذا النوع من العمل لا يتوازى بسهولة ، على الأقل ليس في بنية SIMD.

في المستقبل ، ما سنراه هو التقارب بين وحدة المعالجة المركزية ووحدة معالجة الرسومات ، حيث تستحوذ وحدة المعالجة المركزية على القدرة على العمل على مجموعات من البيانات ، على سبيل المثال ، SSE. أيضا ، مع تحسن تكنولوجيا التصنيع وتصبح الرقائق أصغر ، يمكن أن تتحمل GPU تنفيذ تعليمات أكثر تعقيدا.


246
2017-07-10 20:22



ربما هذا هو أفضل إجابة هنا. من المهم أن نفهم الاختلافات الأساسية بين النموذجين. بالنسبة لوحدات معالجة الرسومات للتغلب على وحدات المعالجة المركزية (CPUs) ، في ضوء أحمال العمل الحالية ، فإن هذا يعني بالضرورة أن وحدة معالجة الرسومات يجب أن تتحول إلى وحدة المعالجة المركزية. وبالتالي فإن السؤال هو الجواب. - surfasb
+1 لأن هذا هو أفضل إجابة. كل من هذا والإجابة المقبولة صحيحة ، لكن هذا يشرحها بوضوح أكبر.
أنا مندهش لا أحد في هذا الخيط وقد ذكر النفقات العامة لإرسال البيانات إلى GPU - عرض النطاق الترددي المحدود عبر الباصات PCI-Express يجعل بعض العمليات المتوازية على GPU أبطأ بكثير مما كانت عليه على وحدة المعالجة المركزية. يمكن ملاحظة حالة واحدة بسيطة حيث أدى اختلاف حجم FFT إلى اختلاف كبير في الأداء في وحدة معالجة الرسوميات مقابل وحدة المعالجة المركزية بسبب الحمل الزائد لإرسال البيانات ، وإعداد سياق ، وقراءة النتائج السابقة: stackoverflow.com/a/8687732/303612 يمكن إجراء عمليات أصغر في ذاكرة التخزين المؤقت على وحدات المعالجة المركزية (CPU) ، ويكون عرض النطاق الترددي للذاكرة متفوقًا بشكل كبير على بنية PCI-E الحالية - Dr. Andrew Burnett-Thompson
@ Dr.AndrewBurnett-Thompson: هذا لأن ذلك لا يهم السؤال. حاليا ، يعتبر GPU وحدة معالجة مساعدة ، وهذا هو السبب في نقل البيانات من / إلى GPU أمر ضروري ومكلف. إذا تعاملنا مع GPU كوحدة معالجة من الدرجة الأولى ، فلن تكون هناك حاجة إلى تنظيم البيانات بين الذاكرة الرئيسية وذاكرة GPU. - Lie Ryan
ليس متفائلاً ، فهو ليس صفرا في النطاق الترددي. إذا كان المعالج مع بنية GPU يدير العرض بالكامل ، فلا يوجد شيء يحتاج إلى نقله ، ذاكرة GPU هو الذاكرة الرئيسية. لا يوجد أي تحويلات عامة يمكن التحدث عنها في المقام الأول بسبب عدم وجود عمليات نقل. هذه ليست افتراضية من جانب الطريق ، تستخدم APUs أيه إم دي HSA (بنية النظام المتغايرة) مع الذاكرة الرئيسية الموحدة التي تسمح بنسخ الصفر بين وحدة المعالجة المركزية ووحدة معالجة الرسومات. - Lie Ryan


عدم وجود وحدات معالجة الرسومات:

  1. ذاكرة افتراضية (!!!)
  2. وسائل معالجة الأجهزة بخلاف الذاكرة (مثل لوحات المفاتيح والطابعات والتخزين الثانوي ، إلخ)
  3. المقاطعات

تحتاج إلى هذه لتكون قادرة على تنفيذ أي شيء مثل نظام التشغيل الحديث.

كما أنها (نسبياً) بطيئة في الحساب المزدوج الدقة (عند مقارنتها بأداء حسابي دقيق واحد) * ، وهي أكبر بكثير (من حيث حجم السيليكون). لا تدعم أبنية GPU القديمة المكالمات غير المباشرة (من خلال مؤشرات الوظائف) اللازمة لمعظم البرامج العامة ، والبنيات الحديثة التي تقوم بذلك ببطء. وأخيرًا ، (كما لاحظت الإجابات الأخرى) ، بالنسبة للمهام التي لا يمكن موازنتها ، تخسر وحدات معالجة الرسوميات (GPU) بالمقارنة مع وحدات المعالجة المركزية (CPU) في ضوء نفس عبء العمل.

تصحيح: يرجى ملاحظة أن هذا الرد كتب في عام 2011 - تقنية GPU هي مجال يتغير باستمرار. يمكن أن تكون الأمور مختلفة تمامًا بناءً على الوقت الذي تقرأ فيه هذا: P

* بعض وحدات معالجة الرسومات لا تتسم بالبطء في الحساب المزدوج الدقة ، مثل خطوط Quadro أو Tesla من NVidia (جيل Fermi أو أحدث) ، أو خط FirePro الخاص بـ AMD (جيل GCN أو أحدث). لكن هذه ليست في معظم أجهزة المستهلكين.


75
2017-07-10 21:17



Cicada: هل لديك مرجع لذلك؟ على أي حال ، حتى لو كان هذا صحيحًا ، حتى الأجهزة الحديثة لن تؤدي بشكل جيد في هذه الحالة. (على سبيل المثال ، لن يكون هناك الكثير من مزايا الأداء على وحدة المعالجة المركزية (CPU) - وعيب استهلاك الطاقة) - Billy ONeal
نعم ، أجهزة Fermi كما قلت (مع CUDA 4.0 و sm_20) ، تدعم القفزات غير المباشرة (وبالتالي الطرق الافتراضية C ++ ، الميراث ، الخ). - Angry Lettuce
544 جيجافلوبس من GPU البالغ من العمر 300 سنة 2 بطيئة؟ - Ben Voigt
@ بن: أنت فقط تحصل على هذا النوع من الأداء في تطبيقات البيانات الموازية. العمليات التسلسلية العامة هي لعبة مختلفة تمامًا. (هذا فقط مع جميع النوى 1600 على تلك الشريحة تعمل بالتوازي ، تعمل أساسا نفس التعليمات مرارا وتكرارا ... وحتى هذا هو النظرية بدلا من الكمال الفعلي) - Billy ONeal
Billy: ولكن هذا البطء على فئة معينة من الخوارزميات ، وليس البطء في الحساب المزدوج الدقة (وهو ما ادعت). (وعادة لا تحقق وحدات المعالجة المركزية معدلات إنتاجية قياسية) - Ben Voigt


وحدة المعالجة المركزية تشبه العامل الذي يذهب بسرعة فائقة. وحدة معالجة الرسوم تشبه مجموعة من العمال المستجيبين الذين يسيرون بسرعة ، ولكن يتعين عليهم القيام بكل شيء بالضبط في انسجام تام (باستثناء أنه يمكن أن يكون لديك بعض الاستنساخ في وضع الخمول إذا أردت)

أيهما تفضل أن يكون لديك مطور زميل لك ، أو شخص سريع ، أو 100 نسخة سريعة لا تكون في الواقع سريعة ، ولكن يجب على الجميع القيام بنفس الإجراءات في وقت واحد؟

بالنسبة لبعض الإجراءات ، تكون النسخ المستنسخة جيدة على سبيل المثال. اكتسح الأرض - يمكن لكل منهم أن يكتسح جزءًا منه.

بالنسبة لبعض الإجراءات ، تنتفخ الحيوانات المستنسخة ، على سبيل المثال ، أكتب التقرير الأسبوعي - كل الحيوانات المستنسخة ولكن تجلس خاملة في حين أن نسخة واحدة تكتب التقرير (وإلا فإنك تحصل على 100 نسخة فقط من نفس التقرير).


37
2017-07-11 15:39



هل يمكنني حتى أن ... على حد سواء؟ - Kevin Panko
@ كيفين: نعم ، ولكنك ستحتاج إلى جهاز كمبيوتر به على حد سواء وحدة المعالجة المركزية و GPU! لو كان هناك فقط شيء من هذا القبيل! - Joachim Sauer
تشبيه كبير. سوف نتذكر هذا. - Mayo


لأن وحدات معالجة الرسومات مصممة للقيام بالكثير من الأشياء الصغيرة في وقت واحد ، وتم تصميم وحدات المعالجة المركزية (CPUs) للقيام بشيء واحد في كل مرة. إذا كان من الممكن جعل العملية الخاصة بك متوازية بشكل كبير ، مثل التجزئة ، فإن وحدة معالجة الرسوم (GPU) هي عبارة عن أوامر بمقياس سرعة أكبر ، وإلا لن تكون كذلك.

يمكن لوحدة المعالجة المركزية الخاصة بك حساب تجزئة بكثير ، أسرع بكثير من وحدة معالجة الرسومات الخاصة بك - ولكن الوقت الذي تستغرقه وحدة المعالجة المركزية الخاصة بك للقيام بذلك ، يمكن أن يكون GPU الخاص بك جزءا من خلال عدة مئات من التجزئة. تم تصميم وحدات معالجة الرسومات (GPUs) للقيام بالكثير من الأشياء في نفس الوقت ، وتم تصميم وحدات المعالجة المركزية (CPUs) للقيام بأمر واحد في كل مرة ، ولكن بسرعة كبيرة.

تكمن المشكلة في أن وحدات المعالجة المركزية ووحدات معالجة الرسومات (GPU) هي حلول مختلفة تمامًا لمشكلات مختلفة تمامًا ، لكن هناك تداخلًا صغيرًا ولكن عمومًا ما يبقى في نطاقهم في نطاقهم. لا يمكننا استبدال وحدة المعالجة المركزية بجهاز GPU نظرًا لأن وحدة المعالجة المركزية تجلس هناك تؤدي وظيفتها بشكل أفضل من وحدة معالجة الرسومات ، وذلك ببساطة لأن وحدة معالجة الرسومات غير مصممة للقيام بهذه المهمة ، ووحدة المعالجة المركزية.

ملاحظة جانبية بسيطة ، على الرغم من ذلك ، إذا كان من الممكن إلغاء وحدة المعالجة المركزية وليس لديها سوى وحدة معالجة الرسوميات ، ألا تعتقد أننا قد أعدنا تسميتها؟ :)


23
2017-07-10 17:51



أعتقد أن معظم وحدات المعالجة المركزية الحديثة مصممة للقيام 2 ، 4 ، أو 8 أشياء في وقت واحد. - danielcg
@ danielcg25: تم تصميم وحدات معالجة الرسوميات الأكثر حداثة للقيام بالأشياء 256 ، 512 ، 1024 في وقت واحد (وقد GTX 680 1536 النوى كودا). كل وحدة المعالجة المركزية الأساسية هي كيان متميز من الناحية المفاهيمية ، ولكن هذا لا ينطبق على GPU. - Phoshi
@ danielcg25: أنا على دراية ، ولكن هناك تعليق مع سوء فهم أساسي (وإن كان مقصودًا) للإجابة يمكن أن يكون ضارًا إذا كان أي شخص يقرأه بدون معرفة الموضوع بالفعل. "كونك حمارًا" بهذا المعنى لا يُقدَّر حقًا على SE نظرًا لأنه يقلل من نسبة الإشارة إلى الضوضاء. - Phoshi
كنت مجرد تقديم بعض المعلومات. معظم أجهزة الكمبيوتر في الوقت الحاضر قادرة على معالجة 2-8 أشياء في وقت واحد. يمكن لبعض المعالجات القيام بأكثر من ذلك. لا يزال لا يقترب من وحدات معالجة الرسومات (GPUs) التي تقوم بمئات الأشياء في وقت واحد. - danielcg
@ danielcg25: إنه نوع مختلف من المعالجة ، على الرغم من أن هذا هو السؤال. كل وحدة المعالجة المركزية الأساسية منفصلة بشكل فعال ، وتعمل مع قطع البيانات الخاصة بها والعمليات الخاصة بها. تقوم كل وحدة معالجة مركزية (CPU) بأداء مهمة منفصلة ومختلفة مع بعضها البعض ، وهي لا ترتفع صعودًا خطيًا - حيث أن النواة الثمانية ليست ذات فائدة مضاعفة حيث أن رباعي النواة لا يفيد ضعفي النواة المزدوجة. من ناحية أخرى ، تؤدي نوى GPU نفس المهمة عبر أجزاء مختلفة من البيانات ، وتتحرك بشكل خطي. من الواضح أن وحدات المعالجة المركزية متعددة النوى موجودة ، ولكن هذه ليست نفس الشئ. - Phoshi


هل حقا تسأل لماذا لا نستخدم GPU مثل البنى في وحدة المعالجة المركزية؟

GPU هو مجرد وحدة المعالجة المركزية المتخصصة لبطاقة الرسومات. نقرض رسوم GPU غير الرسومية لأن وحدة المعالجة المركزية ذات الأغراض العامة لا تصل إلى حدها في التنفيذ المتوازي وعائم.

نحن في الواقع نستخدم معماريات وحدة المعالجة المركزية CPU (أكثر من GPU-ish). مثلا شلالات المعالجات هي تعدد المهام تماما. سبارك T3 سيتم تشغيل 512 المواضيع المتزامنة.


14
2017-07-10 17:57



لماذا downvote؟ - jkj
أعتقد أن الخط الأخير ، لأنه ببساطة زائف. في الحقيقة ، يمكنني فقط التفكير في نظام تشغيل واحد فقط x86 فقط. وحتى هذا واحد تم نقله إلى معالجات ألفا وآر إم ، فقط غير متوفر تجارياً في الوقت الحالي. - Javier
حسنا. إزالة الجزء الأخير الذي كان رأيي حول دعم نظام التشغيل السائد الذي يعوق التغيير إلى البنى الجديدة. قد لا يكون في نطاق الإجابة. - jkj


قد أكون مخطئاً بشكل رهيب هنا ، وأنا أتحدث من سلطة ضئيلة أو معدومة حول هذا الموضوع ، ولكن هنا يذهب:

  • أعتقد أن كل وحدات تنفيذ GPU ("core") لها مساحة عنوان محدودة جدًا مقارنة بوحدة المعالجة المركزية.

  • لا يمكن لوحدات تنفيذ GPU التعامل مع التفرع بكفاءة.

  • لا تدعم وحدات تنفيذ GPU المقاطعات للأجهزة بنفس الطريقة التي تقوم بها وحدات المعالجة المركزية (CPUs).

لطالما ظننت أن طريقة تنفيذ وحدات GPU هي ما يشبه Playstation 3 "SPEs" ، فهي تريد أن تعطى كتلة من البيانات ، وتشغيل عدد من العمليات المتسلسلة عليها ، ثم تبصق كتلة أخرى من البيانات ، شطف ، كرر. ليس لديهم ذاكرة معالجة مثل "CPE" الرئيسي ولكن الفكرة هي تكريس كل "SPE" إلى مهمة محددة متسلسلة. قد يؤدي إخراج وحدة واحدة إلى تغذية إدخال وحدة أخرى.

لا تعمل وحدات التنفيذ بشكل جيد إذا كانت تحاول "تحليل" البيانات وإجراء مجموعة من القرارات استنادًا إلى تلك البيانات.

يمكن أن تكون هذه "كتل البيانات" جزءًا من مجموعة بث ، مثل قائمة الرؤوس من جدول حالة اللعبة ، وبيانات MPEG من قرص ، وما إلى ذلك.

إذا كان هناك شيء لا يتناسب مع نموذج "البث" ، فستكون لديك مهمة لا يمكن مكافأتها بكفاءة ، وليس GPU بالضرورة أفضل حل لها. مثال جيد هو معالجة الأشياء "الأحداث الخارجية" التي تعتمد على المفاتيح مثل لوحة المفاتيح أو عصا التحكم أو إدخال الشبكة. ليس هناك الكثير من الأشياء التي لا تتناسب مع هذا النموذج ، ولكن سيكون هناك دائمًا عدد قليل من الأشياء.


11
2017-07-10 15:55



نقطة جيدة حول تحسين التنبؤ بالفرع - لم أكن لأفكر في ذلك ، ولكنك على حق. - Jimmy Breck-McKye


هذا هو لا شيئ حول سرعة الساعة أو الغرض. كلاهما قادران على حد سواء على إكمال معظم ، إن لم يكن كل المهام ؛ ومع ذلك ، هناك بعضًا أكثر ملاءمةً لبعض المهام الأخرى.

كان هناك للغاية حجة قديمة حول ما إذا كان من الأفضل الحصول على الكثير من النوى الغبية أو مجموعة صغيرة من النوى الذكية جدًا. هذا يعود بسهولة في الثمانينات.

داخل وحدة المعالجة المركزية هناك العديد من الحسابات الممكنة التي يمكن القيام بها. النوى الأذكى قادرة على تنفيذ العديد من الحسابات المختلفة في نفس الوقت (نوع من مثل متعدد النواة ولكن ليس معقدًا ، انظر التوازي على مستوى التعليم). يمكن لبنية ذكية أن تقوم بالعديد من العمليات الحسابية في نفس الوقت (إضافة ، طرح ، ضرب ، تقسيم ، تشغيل ذاكرة) ولكن فقط واحدة في كل مرة. بسبب هذا ، فهي أكبر جسديا (وبالتالي أكثر تكلفة بكثير) ثم نوى غمر.

النواة البكمية أصغر بكثير وبالتالي يمكن إضافة المزيد إلى شريحة واحدة ولكنها غير قادرة على القيام بالعديد من العمليات الحسابية المتزامنة. هناك توازن دقيق بين العديد من النوى الغبية والقليل من النوى الذكية.

تعمل البنى متعددة النواة بشكل جيد مع الرسومات لأن الحسابات يمكن تقسيمها بسهولة على مئات من النوى ، ولكنها تعتمد أيضًا على جودة الشفرة وما إذا كانت التعليمات البرمجية الأخرى تعتمد على نتيجة حساب واحد.

هذا ال كثير سؤال أكثر تعقيدا مما يبدو. لمزيد من المعلومات ، اقرأ هذا المقال حول تصميم وحدة المعالجة المركزية:

المعالجات الدقيقة الحديثة - دليل 90 دقيقة

http://www.lighterra.com/papers/modernmicroprocessors/


6
2017-07-12 04:36



يرجى عذر في قواعد اللغة الفقيرة والنمط العام في الكتابة شبه المسجلة المستخدمة في ما سبق ، لم تتح لي قهوتي. مفهومًا معقدًا إلى حد ما والرابط المضمن هو المكان الذي يجب أن تذهب إليه إذا كنت تريد فهم المزيد. ليس تفسيري السيئ - Silverfire
لقد أصلحته لك ، وأضفت رابطًا أيضًا. - bwDraco


أود أن أتطرق إلى نقطة Syntactic واحدة: إن المصطلحات CPU و GPU هي أسماء وظيفية غير أسماء معمارية.

إذا كان جهاز الكمبيوتر يستخدم GPU كمعالج رئيسي ، فسيصبح حينئذٍ "وحدة معالجة مركزية" (CPU) بغض النظر عن التصميم المعماري والتصميم.


5
2017-07-15 11:44