مفتونًا بمعايير M1 المثيرة للإعجاب ، أخرجت أحدث جهاز Mac Mini لقياس سرعة الترجمة في C / C ++.
نقوم بقياس build2 المحلي (بدون مستودع حزم) ، والذي يتضمن بشكل أساسي كود C ++ (611 وحدة ترجمة) مع بعض كتل C (29) والروابط بينها (19). لا يتطلب هذا المعيار سوى مترجم C ++ ويتم تضمينه في مجموعة اختبار Phoronix ، بحيث يمكن مقارنته بعدد كبير من المعالجات.
يستخدم معيار Phoronix حاليًا الإصدار 2 0.12.0 ، ولدينا 0.13.0 (الإصدار الحالي) ، وهنا يكون الإصدار أبطأ بنحو 10٪.
بعد إعداد نظام التشغيل Mac OS وتثبيت أدوات سطر الأوامر لـ XCode 12.2 ، لدينا كل ما نحتاجه:
$ clang++ --version Apple clang version 12.0.0 (clang-1200.0.32.27) Target: arm64-apple-darwin20.1.0
انطلاقا من ملف
_LIBCPP_VERSION
العنوان ، فإن هذا الإصدار من Apple's Clang Clang vanilla اختلف عن مكان ما في عملية التطوير 10.0.0.
__version
libc++
ربما لاحظت أيضًا أن اسم المعالج في Apple Clang الثلاثي يختلف عن الاسم القياسيaarch64
.config.guess
يظهر في الواقع ما يلي:
$ ./config.guess aarch64-apple-darwin20.1.0
لتجنب استخدام اسمين لنفس الشيء ، تم طوب build2arm64
فيaarch64
، لذلكbuildfiles
نرى دائمًا aarch64 في.
دعنا نتحقق من عدد خيوط الأجهزة في
sysctl
:
$ sysctl -n hw.ncpu 8
هناك 8 خيوط هنا ، وهي 4 نوى منتجة و 4 نوى موفرة للطاقة. في الجولة الأولى ، نستخدم جميع النوى. من الواضح أن هذا يعطي أفضل نتيجة:
$ time sh ./build2-install-0.13.0.sh --local --yes ~/install 163s
كانت مفاجأة سارة أن build2 0.13.0 يعمل بدون أي مشاكل ، على الرغم من أنه تم إصداره قبل M1. نظرًا لأن ARM لديه ترتيب ذاكرة ضعيف ، فقد كان هذا أيضًا بمثابة اختبار إضافي للتنفيذ متعدد مؤشرات الترابط للبناء 2 والاستخدام المكثف للذرات.
أولاً ، دعنا نقارن M1 بمحطة العمل الخاصة بي على معالج Intel Xeon E-2288G ثماني النوى (بشكل أساسي i9-9900K plus ECC). يستغرق البناء نفسه على Vanilla Clang 131 ثانية. على الرغم من أن هذه هي أفضل نتيجة ، إلا أن أداء M1 لا يزال مثيرًا للإعجاب. خاصة عندما تفكر في ذلك أثناء التجميع ، فإن محطة العمل تنفث حرفيًا الهواء الساخن وطنين مثل الطائرة ، وحفيف M1 بهدوء مع تيار هواء دافئ بالكاد ملحوظ.
يقوم معيار أحادي الخيط بتقييم أداء وحدة المعالجة المركزية في عمليات الإنشاء المتزايدة:
$ time sh. /build2-install-0.13.0.sh --local --yes-j 1 ~ / install 691s
يستغرق قلب E-2288G 826 ثانية. لذا فإن نواة Xeon 5 جيجاهرتز أبطأ من نواة M1 3.2 جيجاهرتز.
نتيجة أخرى مثيرة للاهتمام هي تشغيل رباعي الخيوط يستخدم فقط نوى M1 الفعالة:
$ time sh ./build2-install-0.13.0.sh --local --yes -j 4 ~/install 207s
على الرغم من أنه أبطأ إلى حد ما من اختبار ثماني النواة ، إلا أنه يستخدم ذاكرة أقل. وبالتالي ، يكون هذا الخيار منطقيًا على الأنظمة ذات ذاكرة الوصول العشوائي غير الكافية (كما هو الحال في جميع أجهزة M1 الحديثة).
فيما يلي ملخص لجميع النتائج:
CPU CORES / خيوط الوقت ------------------------- E-2288G 8/16131 ثانية M1 4 + 4 163 ثانية M1 4207s M1 1691 ثانية E-2288G 1826s
من الواضح أنه في كثير من النواحي ، هذه مقارنة بين التفاح والبرتقال (محطة العمل مقابل الجهاز المحمول ، التصميم القديم وتكنولوجيا المعالجة مقابل الأحدث ، إلخ.)
الآن دعونا نضيف بعض النتائج المثيرة للاهتمام من معيار Phoronix. على وجه الخصوص ، من المناسب أخذ مؤشرات أحدث محطات العمل والمعالجات المحمولة من Intel و AMD. إليك اختياراتي (يمكنك تحديد اختيارك ، فقط تذكر إضافة 10٪ إضافية إلى نتائج Phoronix ؛ لاحظ أيضًا أن معظم الاختبارات تستخدم GCC بدلاً من Clang):
CPU CORES / خيوط الوقت ------------------------------------------ ماكينة تقطيع AMD Threadripper 3990X 64/128 56s AMD Ryzen 5950X 16/32 71 ثانية إنتل زيون E-2288G 8/16131 ثانية أبل M1 4 + 4163 ثانية AMD Ryzen 4900HS 8/16 176s* Apple M1 4 207s AMD Ryzen 4700U 8/8 222s Intel Core 1185G 4/8 281s* Intel Core 1165G 4/8 295s * .
يرجى ملاحظة أن النتائج الخاصة بأفضل هاتف محمول Intel (1185G) و AMD (4900HS) ليست متوفرة حتى الآن ، والأرقام المذكورة مستقراء على أساس الساعات والمعايير الأخرى.
من السهل أن نرى من الجدول أعلاه أن Apple M1 معالج مثير للإعجاب ، خاصة عندما يتعلق الأمر باستهلاك الطاقة. علاوة على ذلك ، فهو أول معالج ARM من فئة سطح المكتب السائد. وبالمقارنة ، فإن نفس التصميم على Raspberry Pi 4B يستغرق 1724 ثانية ، أي أكثر من 10 مرات أبطأ! على الرغم من أننا لا نستطيع تشغيل Linux أو Windows هنا ، إلا أن هناك بعض الأدلة على أنها تعمل على أجهزة افتراضية بأداء لائق. نتيجة لذلك ، قد يصبح خط أنابيب البناء المستمر القائم على ARM قياسيًا.
بعد الاطلاع على معايير M1 ، لا يسع المرء إلا أن يتساءل كيف فعلت Apple ذلك. على الرغم من وجود الكثير من التكهنات مع بعض عناصر السحر الأسود والسحر ، إلا أن هذا المقال حول M1 على Anandtech (وآخر هناك من خلال الرابط) بدا لي مصدرًا جيدًا للمعلومات التقنية . يسلط الضوء:
TSMC 5
10 ( 11x5G, 14 E-2288G) 7 AMD/TSMC.
LPDDR4-4266 RAM
Intel AMD .
L1
M1 L1 .
L2
Intel AMD, L2 , L3, M1 L2.
يحتوي M1 على نواة عريضة بشكل غير عادي تنفذ تعليمات متعددة بالتوازي و / أو خارج الترتيب. هناك تكهنات بأنه نظرًا لضعف ترتيب ذاكرة ARM وتعليمات التعليمات ذات الحجم الثابت ، تمكنت Apple من إنشاء نواة أوسع بكثير.
سيكون من المثير للاهتمام أيضًا أن نرى كيف يمكن لشركة Apple توسيع نطاق هذا التصميم ليشمل المزيد من النوى.