طاقم تعليمات X86 في معالجات Intel و AMD ، يضيع الوقت والطاقة و المال !

قام أحد خبراء التطويعات البرمجية في الحاسوب بتقديم عريضة التماسية ، يطلب فيها تنظيف وتنظيم طاقم تعليمات X86 العتادي والمستخدم في معالجات Intel و AMD ، والسبب .. أنها غير كفأة ، ومزدحمة ، ومعقدة ، و بطيئة !

ارتكزت عريضة الخبير علي عدة محاور أساسية :

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

ثانيا : يدعم طاقم تعليمات X86 كل التعليمات التي صدرت من شركة Intel ، منذ أيام المعالج البدائي 8086 ، والذي صدر منذ ثلاثين عاما ! أي أن معالجاتنا حاليا ، تحتوي علي دعم عتادي لتعليمات برمجية عتيقة ، ليس لها فائدة ، مما يعود علينا بالضرر ، حيث يتطلب هذا الدعم المزيد من التعقيد في تركيب المعالجات ، الأمر الذي يزيد من مساحة وحجم المعالج ، واستهلاكه للطاقة ، والأسوأ أن كل ذلك يحدث في غير فائدة ، فحتي أنظمة التشغيل الحديثة ترفض دعم البرامج التي صدرت منذ خمسة أعوام مثلا !

ثالثا : وهذه النقطة هي نتيجة نهائية للنقطتتين السابقتين ، حيث تتأثر عملية ترجمة التعليمات Instruction Decode ، والتي ينبغي علي كل معالج القيام بها ، وتصبح عملية بطيئة ومعقدة بلا لزوم ، وذلك بسبب عدد التعليمات الكبير أولا ، وبسبب الدعم الغير مبرر للبيانات العتيقة ثانيا ، مما جعل من عملية الترجمة نقطة اختناق أساسية في أي معالج ، ويزداد حجم نقطة الاختناق كلما زاد تعقيد البيانات التي ينبغي ترجمتها .




رابعا : ابتكارات Intel تختلف عن ابتكارات AMD ، وكلا من الفريقين يحرص علي ابقاء أسرار ابتكاراته قيد الكتمان ، مما يخلق جوا من الحيرة عند كتابة البرمجيات ، حيث جيب كتابتها بشكل يراعي الاختلافات بين الفريقين .

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

سادسا : دعم تعليمات جديدة أصبحت مسألة تسويقية ، أكثر منها تقنية ، فمطوري البرامج هم آخر من يعلم عن الاصدارات الجديدة ، في حين أنه ينبغي أن يكونوا هم أول من يعلم ، وينبغي أن يتم استشارتهم في مدي صلاحية التعديلات الجديدة في توفير السهولة والبساطة في عملهم ، لكن العكس هو ما يحدث للأسف .

سابعا : دعم تعليمات جديدة دون أن يكون لها استخدام فعلي بين المطورين ، لا لسبب الا لأغراض تجارية ، مثل التفاخر بأن معالج كذا يدعم عدد كذا من التعليمات ، ويحدث ذلك دون النظر الي ما اذا كانت تلك التعليمات تضيف قيمة حقيقية أم لا .

الخلاصة :أصبح طاقم تعليمات X86 مقلبا للقمامة ، يستقبل كل ما هو قديم ومنعدم الكفاءة وغير مريح ، كما أصبح مرتعا لكل من هب ودب ليقرر مصيره ، دون النظر الي اعتبارات تقنية ، ولكن لاعتبارات تسويقية !

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

يبدو أن الأوان قد حان لاستبدال طاقم التعليمات كله ، وابتكار طاقم جديد ، يعطي أولوية مطلقة للكفاءة في التصميم ، والبساطة في معالجة التعليمات ، ولا أملك الا أن أنظر الي مثال حقيقي تتمثل فيه تلك الصفات ، وهي معالجات ARM ، والتي تستخدم طاقم التعليمات المخّفض RISC ، بعدد قليل من التعليمات ، ومع الحفاظ علي بساطة وصغر حجم التعليمات في نفس الوقت .
____________________________________
المزيد من المعلومات حول طاقم التعليمات المخفّض RISC والفروق بينه وبين X86 .