لماذا معالجات 64 بت أسرع من 32 بت ؟ [ شرح تقني من داخل البروسيسور ]




السؤال الذي طرحته في العنوان جاء على شكل رسالة تعريفية أن معالجات 64 بت أسرع من 32 بت وفي نفس الوقت حين البحث عن السبب باللغة العربية ستجد شروحات سطحية جدا والتي لا تجعلك تفهم بالضبط لماذا هي أسرع.

أولا حين النظر إلى الرقم 64 بت ستجد أنه ضعف 32 بت ولكن من أي ناحية؟ وسأجيبك من ناحية عدد البيتات التي تعالج في اللحظة وهذا هو الضبط السبب ولكن يجب أن أشرح أكثر. 

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

مثال من ميكروبروسيسور قديم اسمه 8085 من انتل حيث يظهر بالضبط العناصر الداخلية وكيف ترتبط او كيف تتحرك البيانات فيها.


سأقوم الآن بشرح كود بلغة أسومبلي بسيطة جدا لكي تفهم كيف يعمل البروسيسور من الداخل. أولا علينا تخيل وجود 3 رجيسترات: R1,R2,R3 ولدينا وحدة المعالجة العملياتية والمنطقية. نحن نريد جمع العديدين 15 و 12 نقوم بالتالي: 
نضع العدد 15 في R1
ونضع العدد 12 في  R2
ثم نقوم بجمع العددين في وحدة المعالجة المنطقية والعملياتية ونضح النتيجة في R3

ويمكننا أن نكتب السكريبت التالي:
Mov R1,15 //add 15 in R1
Mov R2,12 //add 12 in R2
Add R1,R2,R3 //R1+R2 and add the result in R3

حيث السطر الأول نحن نقول للعدد 15 أن يوضع في الريجيستر  1 والسطر الثاني نحن نقول للعدد 12 أن يوضع في الريجيستر الثالث والسطر الثالث نحن نقول لوحدة المعالجة المنطقية والعملياتية قومي بجمع محتوى الرجيستر 1 والرجيستر 2 وضعي النتيجة في الرجيستر3. وأذكر أن عملية الجمع تتم في وحدة المعالجة المنطقية والعملياتية. 

الآن حينما فهمت كيف تتم عملية الجمع كمثال، يمكننا توضيح أين بالضبط يوجد الفرق بين 64 بت و 32 بت، حيث أن طول الريجيستري في البروسيسور 32 بت هو  32 بت وفي 64 بت هو 64 بت، أي أن طول الرجيستري في بروسيسور 64 بت هو أكبر بضعف الرجيستري في 32 بت. ففي حالة لدينا بروسيسور 32 بت فالريجيسترات تستحمل أعداد من: 2,147,483,648 - إلى
 2,147,483,647 ولكن في حالة لدينا بروسيسور 64 بت فالريجيسترات تستحمل أعداد من:
-9,223,372,036,854,775,808- إلى
9,223,372,036,854,775,807 بالطبع هذه أعداد كبيرة جدا ولكنها مهمة في الوقت الحاضر فكمية المعلومات زادت فلعبة جديدة تحتوي على معالجات كثيرة وهي مجرد أرقام فقط في أصلها. وهنا أيضا يحدث فرق فلكي نقوم بجمع أعداد كبيرة جدا في بروسيسور 32 بت نحن سنقوم بوقت أكثر من معالجة نفس الأعداد في بروسيسور 64 بت وذلك كما سبق ووضحت بسبب طول الرجيستري.


والآن قد تكون فهمت بالضبط أين الفرق فالأعداد التي يتم معالجتها في اللحظة الواحدة في 64 بت هي أكبر كثير من 32 بت. ولكن لدينا سؤال ملح وهو ماذا لو كانت الأعداد التي لدينا أكبر من طاقة إستحمال 32 بت؟ هنا يتم إستخدام تركيب ريجيسترين من نوع 32 بت ويصبحان ريجيستري واحد من 64 بت وهذا سؤال وجواب للثقافة فقط. 

أي أسئلة أطرحها في تعليق.
   

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel