Mohammad Laif
Mohammad Laif

@mohammadlaif

20 تغريدة 51 قراءة Nov 22, 2019
موضوع يلقي نظرة على المشكلة التي سنواجهها قريباً في سنة ~ ٢٠٢٥ وهي توقف تسارع المعالج, وعلى الحلول لها. ومن أبرز تلك الحلول هي البرمجة المتوازية. ولماذا على المبرمج السعي في تعلمها من الآن. وبخاصة مبرمج الاندرويد.
#برمجة #جافا #اندرويد #اندرويد
قانون مور: لاحظ أن عدد الترانزستورات {منزل الـ 0 و 1} في المعالج يتضاعف كل ١٨ شهراً, مما يزيد من سرعة المعالج ويحافظ على السعر نفسه.
المشكلة: نهاية قانون مور أننا سنصل إلى أقصى عدد من {الترانزستورات} يمكن وضعه في المعالج حينها لن نستطيع تطوير سرعات المعالجات.
الـ 0 و 1: نستخدمهم لتمثيل البيانات فمثلاً حرف الـ M يكون 01001101 وهكذا. وحتى لا نتعب من كتابة هذه الأرقام الثنائية اخترعنا المترجم Compiler نكتب له بلغة مفهومة لنا كلغات البرمجة وخاصة عالية المستوى كالـ Java | Kotlin وهو يترجم الاوامر الى لغة مفهومة للمعالج أي الـ 0 و 1.
الترانزستور: كتشبيه سهل للفهم فهو يعمل كالمفتاح, فعندما يكون مطفى نعبر عنه بـ 0 وعندما نقوم بتشغيله نعبر عنه بـ 1. وبهذه الـ 0 و 1 نمثل البيانات التي نقرأها, نشاهدها, … وحالياً نستخدم عنصر {السيليكون} في صناعة هذه الترانزستورات.
السيليكون: يعتبر من {أشباه الموصلات}. هذا يعني بإجراء بعض العمليات عليه تستطيع جعله يعمل كموصل أو كعازل. وهذا قاد الى ثورة كبيرة في عالم الصناعة حتى سميت اشهر مدينة للصناعة بوادي السيليكون.
أشباه الموصلات: يطلق عليها بالانجليزية Semiconductors وهي عبارة عن مواد تعمل عمل الموصلات للتيار كالحديد وتعمل عمل العوازل كالخشب. نستطيع استخدامها كمفتاح للتيار On/Off من خلال تطويعها بعمليات تنشيط Doping و جهد كهربي بسيط Voltage.
طريقة تسريع المعالج الحالية: كلما قمنا بحشر المزيد من السيلكون سنحصل على سرعات عالية للمعالج. ولكن (قانون مور) عند حشر الكثير من السيلكون سيكون المجال ضيق جداً على انتقال التيار وعندها سيفقد السيليكون خواصه (كعمله كمفتاح لتمثيل الـ 0 و 1).
الحل البديهي: نكبر حجم المعالج!
هنا الفيزياء يحدنا الحل هذا لاينفع لان تكبير حجم المعالج يكلف الكثير من المال وكل هذا يعتبر محاولة يائسة حتى لا يفقد السيليكون خواصه (تكرار مشكلة فقدان السيلكون خواصة بالتكبير المكلف أو بالحشر الضيق).
صورة رقاقة سيليكون من داخل قلب المعالجات, كل مربع يمثل شريحة تحتوي على ترانزستورات و دوائر مجهرية صنعت من عنصر السيليكون المستخرج من الرمل. وكلما وضعنا سيليكون أكثر في مجال ضيق زادت سرعة المعالج لدينا.
للاسف كل تلك الزيادة والمضاعفات بسرعة هائلة في الترانزستورات في السنوات السابقة لأجل صناعة معالجات أكثر سرعه كانت من قبل صناع الـ Hardware. وهذا قاد أصحاب الـ Software الى صناعة لغات برمجية وبرامج بتسيب كبير في الأداء مستغلين السرعة الحديثة لتغطية تسيبهم (عدم الاستفادة الموارد).
فمثلاً برنامج تمت كتابته بلغة البايثون, بعد تحويله الى لغة السي يصبح اسرع بـ ٥٠ ضعفاً! و باستخدام بعض التقنيات التي قد يتيحها المعالج يصبح البرنامج يعمل أسرع بـ ٦٣ ألف ضعفاً! وهذا يدل على التسيب الحاصل طوال تلك السنين السابقة من قبل اصحاب الـ Software.
#برمجة
أذن وقعنا الآن في مشكلتين وهما:
- نهاية قانون مور.
- والتسيب في الأداء.
فأغلب البرامج واللغات كانت لا تستفيد من قوة المعالجات. ودليل متى صممنا مجمل التطبيقات او البرامج لإستغلال تعدد الانوية في للمعالجات.
والآن يرجع لنا اصحاب الـ Physics و الـ Hardware و الـ Software يقدمون حلول لمشكلة عدم الكفاءة الناتجة ولمشكلة قانون مور بالأساس, أبرزها في التغريدات التالية.
الحل: تقنية الـ SIMD اختصاراً لـ Single instruction multiple data
قاد إلى صناعة معالجات متخصصة في شئ واحد كما رأينا في السنوات السابقة وخاصة الآن, كمعالج كرت الشاشة الـ GPU. والان معالجات Intel Nervana لمعالجة الشبكات العصبية لتعلم الآلة.
حل آخر: الكربون (بتقنية النانو)
استخدام عنصر الكربون فهو من أشباه الموصلات ويعتبر البديل المناسب للسيليكون. فهو اصغر من السليكون ونستطيع حشر الكثير لتحقيق سرعات اعلى. حالياً تم صناعة معالج ذو ١٦ بت وتمت برمجة عليه برنامج:
Hello, World!
#برمجة
حل آخر: الكوانتوم Quantum
غني عن التعريف. الآن IMB تمتلك اقوى حاسب كمي ذو ٥٣ كيو بيت للعامة. قام في الشهر السابق بمهمة تستغرق اقوى كمبيوتر موجود حالياً ١٠٠٠٠ سنة للقيام بها بينما قام بها هو في ٢٠٠ ثانية. وبهذا حقق مقياس عالي يسمى بالـ Quantum Supremacy قد وضع مسبقاً.
ماذا كانت تلك المهمة؟
فرضاً توليد ارقام؟ هل تم توليد الأرقام بشكل صحيح؟ إذا كان توليد هذه الأرقام يستغرق سنين كثيرة بالكمبيوتر العادي فكيف نتحقق من مصداقية و اخلاص الكمبيوتر الكمي لنا؟ وربما يعتبر هذا نوع من المعالجات المتخصصة في أشياء محددة لا أكثر! بعيداً عن الضجة الإعلامية له.
حل آخر: مضاعفة عدد الانوية في المعالج.
الحل الأكثر واقعية, ولكن يحتاج الى تعلم طريقة البرمجة عليه حتى لا تضيع قدراته سدى. بشرائك المعالج متعدد الانوية وتشغيل عليه برنامج مبرمجة لا يراعي هذا الأمر سيكون خسارة للطاقة والمال والأداء. ففي المستقبل القريب سيكثر التركيز على التزامن.
لذلك لإستغلال هذا الحل (تعدد الانوية) نحتاج الى تعلم البرمجة بتقنية التزامن الـ Concurrency وهنا يأتي دور المبرمج.
بالنسبة للكوتلن: كانت هذه نظرة بسيطة على استشفاف اهمية تعلم الـ Coroutines.
بالنسبة للجافا: رابط دورة التزامن في الاندرويد على @Pro3alam:
3alam.pro
المصادر:
كتاب سرد رائع لتطور العالم الرقمي:
Turing's Cathedral: The Origins of the Digital Universe.
واحدة من عدة محاضرات لرئيس الـ chairman لشركة جوجل عن نهاية قانون مور:
DARPA ERI Summit 2018: The End of Moore’s Law & Faster General Purpose Computing, & a New Golden Age.

جاري تحميل الاقتراحات...