مقدمة:

سنعرض في هذا المقال شرحًا بسيطًا عن معمارية 64 بت المستخدمة في المعالجات وما هي فوائدها على المطورين والمستخدمين، وقبل البدء اسمحو لي بأن أقوم بتعريف عدّة مصطلحات مفيدة سنقوم بذكرها في المقال:

  • سجلات المعالج (Registers): هي قلب المعالج، عبارة عن مساحات تخزينية صغيرة مؤقتة موجودة في داخل المعالج وتتميز بسرعة عالية جداً، ومهمتها بكل بساطة هي تخزين البيانات قبل أن يقوم المعالج بمعالجتها. على سبيل المثال إذا أردنا أن نقوم بعملية ضرب بسيطة لرقمين فلنقل 2 و 3، كل رقم يجب أن يكون مخزّنًا داخل السجلات وأيضاً النتيجة 6 يجب أن تكون مخزنة داخل السجلات. لا يقتصر عمل السجلات على تخزين البيانات فقط، فقد تحتوي في كثير من الأحيان على عناوين للبيانات المخزنة في الذاكرة العشوائية. لتبسيط الأمر، فلنقل أن السجلات قد تعمل كمستودعات تحتوي على عدد من البيانات قبل نقلها أو كفهرس فيه عناوين البيانات المخزنة.
  • عنوان الذاكرة (Memory Address): عبارة عن رقم يمثل الحد الأقصى من الذواكر التي يمكن أن يقرأها المعالج، في حالة ال 32 بت يستطيع المعالج أن يستوعب ذواكر تصل إلى 4 غيغابايت.
  • الكيرنيل (Kernel): وهو برنامج يقوم بدور الوسيط بين التطبيقات والهاردوير (المعالج-الذاكرة العشوائية-الفأرة أو أي جهاز ادخال أو اخراج للبيانات).

لمحة تاريخية سريعة:

سنبدأ بسرد بسيط عن تاريخ معمارية 64 بت، وقد يبدو مفاجئاً للبعض بأن أول استخدام للمعمارية كان في منتصف سبعينيات من القرن الماضي، حيث كانت شركة Cray أول شركة تستخدم سجلات مبنية بمعمارية 64 بت، وفي التسعينيات بدأ ظهور عدد من المعالجات التي تعمل بشكل كامل بمعمارية 64 بت. أولى المعالجات كانت R4000 من شركة MIPS، ثم ظهر المعالج Alpha من شركة DEC، ولم تنتج إنتل أو شركة Sun أي معالج يعمل بمعمارية 64 بت حتى منتصف التسعينات. نقطة التحول والتي تعتبر من الأهم في عالم المعالجات هي عندما قامت شركة AMD في عام 2003 بإنتاج معالج 64 بت يتوافق مع معالجات انتل 32 بت أو كما يطلق على 32 بت أحياناً x86 (تيمناً بمعالج انتل 386 الذي يعتبر من أول المعالجات التي عملت بمعمارية 32 بت)، وهذا يعني أن بإمكان معالجات 64 بت أن تعمل في نفس بيئة معالجات 32 بت وتشغيل نفس البرامج دون الحاجة لاعادة تصميم البرامج.

1024px-AMD64_Logo.svg

لماذا نحن بحاجة 64 بت في الأجهزة المحمولة:

في يومنا الحاضر، أغلب الهواتف والحواسب اللوحية الذكية تعمل بعدّة معالجات بسرعات تتراوح وسطياً بين 1-2 غيغاهيرتز. أغلب المعالجات تعمل بمعمارية 32 بت وليس 64 بت كما في الحواسب التقليدية، ويبدو هذا الأمر مقبولاً لأن معالجات الهواتف والحواسب اللوحية لم تُصمم لتنافس المعالجات المستخدمة في الحواسب المكتبية أو المحمولة. لكن مع التقدم المستمر في التكنولوجيا وظهور برامج جديدة كبرامج التعرف على الصوت وألعاب ال 3D التي تستخدم رسوميات واقعية، ومع ظهور العديد من الهواتف التي تستخدم شاشات عالية الدقة، أصبحت المعالجات الحالية قريبة جداً من حدودها، وبات الأمر ملحاً لاستخدام معمارية 64 بت في معالجات الأجهزة المحمولة.

لذا، قامت شركة المعالجات ARM بتصميم معمارية 64 بت خاصة بمعالجات الأجهزة المحمولة و أطلقت عليها ARMv8-A. طبعاً تعلمت شركة ARM من أخطاء الشركات السابقة وقامت بتصميم المعمارية بشكل يتوافق مع معمارية 32 بت. وفي عالم الأندرويد هذا يعني إن تم تعديل الكيرنيل ليصبح يدعم معالجات 64 بت فإن نظام أندرويد بكامل ميزاته وتطبيقاته يستطيع أن يعمل بتقنية 32 أو 64 بت.

arm_64bit_phones

 

 فوائد معمارية 64 بت:

كما ذكرنا سابقاً، تعتبر سجلات المعالج (Registers) قلب المعالج وأساسه. عندما يريد المعالج أن يقوم بعملية حسابية معقدة، سيتم استخدام السجلات لعدّة مرات ولذلك لامتلائها بشكل متكرر، ولتبسيط الأمر لنفترض أن لدينا مستودع قادر على استيعاب 10 صناديق في وقت واحد وأنت لديك 20 صندوق، وفي هذه الحالة ستضطر إلى تعبئة المستودع مرتين وهذا يتطلب طاقة ووقت. هذا تماماً ما يحصل للمعالج عند قيامه بعدد كبير من الحسابات في وقت واحد أو معالجة صورة ذو دقة عالية أو حساب عدد من النقاط في خريطة داخل لعبة.

معالجات 32 بت المصممة من ARM تحتوي على 15 سجل، بحجم 32 بت لكل سجل، بينما المعالجات الجديدة 64 بت المصممة من قبل ARM تحتوي على 31 سجل، بحجم 64 بت لكل سجل. نظرياً هذا يعني أن الأداء سيكون على الأقل ضعف أداء معالجات 32 بت، على الأقل حسابياً، لكن هذا يعتمد على طريقة برمجة وتصميم التطبيق بشكل يستغل هذه السجلات بشكل كامل وهذا الأمر ليس بالأمر السهل للمطورين.

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

أمر مهم، وهو تكبير عنوان الذاكرة في المعالج ليستطيع قراءة ذواكر أكبر من 4 غيغابايت وهذا الأمر كفيل بتحسين الأداء بشكل عام.

ARMv8-AArch64-performance-vs.-AArch32-fig1

فرق الأداء بين بيئة 64 بت و32 بت

الخلاصة:

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

[Android Authority]