الأخبار

يوجد داخل Apple M1 وحدة معالجة رسومات ملتوية بشكل لا يصدق

تحافظ Apple على سرية الأعمال الداخلية لعائلة M1 من المعالجات عن الجمهور، لكن المطورين المجتهدين قاموا بهندسة عكسية reverse-engineering لإنشاء برامج تشغيل مفتوحة المصدر open source drivers  وLinux distro, Asahi Linux، لأجهزة M1 Macs. في هذه العملية، اكتشفوا بعض الميزات الرائعة.

في إطار جهودها لتطوير برنامج تشغيل رسومات مفتوح المصدر لـ M1، مؤخرًا Alyssa Rosenzweig وجدت ميزة غريبة في خط أنابيب التقديم render pipeline لوحدة معالجة الرسومات GPU الخاصة بـ M1. كانت تقدم أشكالًا هندسية ثلاثية الأبعاد معقدة بشكل متزايد، ووصلت في النهاية إلى أرنب bunny تسبب في خلل في وحدة معالجة الرسومات.

في الأساس- ويرجى ملاحظة أن هذا وكل شيء آخر سأقوله هو تبسيط مفرط- تبدأ المشكلة مع ضعف وصول وحدة معالجة الرسومات إلى الذاكرة. إنها وحدة معالجة رسومات قوية، ولكن مثل A-series iPhone SoC التي تشترك مع سابقتها، فهي تتطلب اختصارات للحفاظ على الكفاءة.

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

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

في أحد عروض Apple التقديمية، أوضح أنه عندما يكون المخزن المؤقت ممتلئًا، فإن وحدة معالجة الرسومات تُخرج عرضًا جزئيًا- أي نصف الأرنب. في برنامج Apple، يُطلق على المخزن المؤقت المعني اسم المخزن المؤقت للمعامل، وهو اسم يبدو أنه مأخوذ من وثائق PowerVR الخاصة بشركة Imagination.

Imagination هي شركة مقرها المملكة المتحدة، مثل Arm، تصمم معالجات ترخصها لشركات أخرى. وقعت Apple صفقة مع الشركة في بداية عام 2020 تسمح لشركة Apple بترخيص مجموعة واسعة من IP الخاص بها. من الواضح أن M1، الذي تم طرحه في السوق في نهاية عام 2020، يستخدم بنية PowerVR GPU الخاصة بهم كنوع من الأساس لوحدة معالجة الرسومات الخاصة به.

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

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

يعمل التكوين العكسي من برنامج تشغيل Apple على إصلاح المشكلة، وبعد ذلك يمكنك أخيرًا تقديم الأرنب (أدناه).

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

للحصول على شرح أكثر تعمقًا (ودقة تقنيًا) لتصيير الأرنب، وللاكتشافات الأخرى في M1، تأكد من مراجعة مدونة Rosenzweig وموقع Asahi Linux.