ميزات وحدة المعالجة المركزية (CPU)

هناك عدة طرق للتحقق من ميزات وحدة المعالجة المركزية (CPU) في الرمز الخاص بك، ولكل منها مجموعة من المفاضلات.

واجهة التطبيق الثنائية (ABI): استخدام وحدات الماكرو المحدّدة مسبقًا للمعالج

وعادةً ما يكون من الأسهل تحديد واجهة التطبيق الثنائية (ABI) في وقت الإنشاء باستخدام #ifdef إلى جانب ما يلي:

  • __arm__ لذراع 32 بت
  • __aarch64__ لذراع 64 بت
  • __i386__ للإصدار X86 بت
  • __x86_64__ لجهاز X86 بت

يُرجى العلم أنّ الإصدار X86 من بت 32 بت هو __i386__، وليس __x86__ وفقًا لما تتوقّعه.

وحدة المعالجة المركزية (CPU) الأساسية: استخدام sysconf (3) من libc

يتيح لك sysconf(3) إجراء طلبات بحث عن كل من _SC_NPROCESSORS_CONF (عدد النوى لوحدة المعالجة المركزية (CPU) في النظام) و_SC_NPROCESSORS_ONLN (عدد النوى لوحدة المعالجة المركزية (CPU) على الإنترنت حاليًا).

الميزات: استخدام Libc geteauval(3)

في المستوى 18 من واجهة برمجة التطبيقات والمستويات الأحدث، يتوفّر getauxval(3) في مكتبة C في Android. تعرض الوسيطتان AT_HWCAP وAT_HWCAP2 أسمئتَين تسردان الميزات الخاصة بوحدة المعالجة المركزية (CPU). يمكنك الاطّلاع على عناوين hwcap.h المختلفة في NDK للثوابت التي يجب مقارنتها، مثل HWCAP_SHA512 تعليمات SHA512 الخاصة بـ Arm64 أو HWCAP_IDIVT لتعليمات القسم الصحيح حول الإبهام للذراع.

مكتبة cpu_features من Google

هناك مشكلة واحدة في AT_HWCAP وهي خطأ في بعض الأحيان على الأجهزة. بعض الأجهزة القديمة، على سبيل المثال، تدّعي أنّها تتضمّن تعليمات حول تقسيمها إلى عدد صحيح ولكنها لا تطلب ذلك،

يمكنك الاستفادة من مكتبة cpu_features من Google لمعالجة هذه المشاكل من خلال استخدام المعرفة الخاصة بالمنظومة على الرقاقة (SoC) المحدّدة (عن طريق تحليل /proc/cpuinfo العمل على المنظومة على الرقاقة (SoC) المحدَّدة.

يتم الاحتفاظ بهذه المكتبة ليتم استخدامها من قِبل فِرق تطبيقات الطرف الأول من Google، وتتوفر لها حلول بديلة لكل جهاز يواجه مشاكل في البرية.

مكتبة NDK cpufeatures (متوقّفة نهائيًا)

بالإضافة إلى ذلك، توفّر منصّة NDK مكتبة موقوفة تُسمى cpufeatures لتوافق المصدر مع التطبيقات التي تستخدمها حاليًا. وعلى عكس مكتبة cpu_features الجديدة والأكثر اكتمالاً، لا تحتوي هذه المكتبة السابقة على حلول بديلة للعديد من المنظومة على الرقاقة (SoC) المحدّدة.