كيف يعمل المعالج
حتى يؤدي المعالج وظيفته لابد من أن :
يقرأ التعليمات من الذاكرة العشوائية
يقرر ما هي البيانات اللازمة لتنفيذ التعليمات
يجلب البيانات اللازمة لتنفيذ تلك التعليمات
ينفذ التعليمات
يكتب النتيجة في الذاكرة العشوائية : طبعاً الذاكرة العشوائية بطيئة لذا تستعمل " ذاكرة الكتابة المخبئية " لحفظ البيانات لحين تمكن الذاكرة العشوائية من قراءتها .
التعليمات ومعالجات RISC و CISC
يقوم المعالج باستقبال البيانات ( الصور أو الرسوم أو..... إلخ) والتعليمات * ( التي كتبها المبرمج ) ويقوم بمعالجة البيانات تبعاً لما تمليه عليه التعليمات ، أي أنه مثل الجندي الذي ينفذ الأوامر الصادرة له من القيادة ( البرنامج ) ، فمهمة المعالج أن ينفذ مجموعة التعليمات التي تصدر من البرنامج حتى يؤدي الحاسب العمل المراد منه ، والتعليمات ( جمع تعليمة ) يمكن أن تكون بسيطة ( مثلاً القيام بعملية جمع ) أو معقدة ( كالقيام بسلسلة من العمليات المترابطة ) . فالبرنامج هو عبارة عن مجموعة كبيرة من التعليمات المترابطة التي تؤدي في مجملها عمل مفيد وهو القائد والمحرك للمعالج .
دعني أقرب الأمر أكثر لك : إذا أردت جمع الأعداد 8 + 9 + 3 فإن البرنامج يصدر الأوامر التالية للمعالج
اجمع : 8 + 9
اجمع : المجموع السابق + 3
هذا مثال عن أمرين ( تعليمتين ) بسيطتين ، هناك أوامر ( تعليمات ) أعقد بكثير للقيام بعمليات أكثر تعقيداً ، ولكل معالج من المعالجات مجموعة من التعليمات التي يستطيع فهمها ، فمثلاً قد يستطيع معالج ما فهم تعليمة معينة بينما معالج آخر لا يفهمها ، وهذا هو السر في اختلاف أنظمة الحاسب عن بعضها .
ويخرج المعالج من المصنع " متعلماً " هذه التعليمات أي أنه يستطيع تنفيذها ، ويستطيع تنفيذ أي برنامج يحوي أي تركيب من هذه التعليمات مهما كان معقداً ومهما كانت الوظيفة التي يقوم بها وهذا هو السبب في أن الحاسب يستطيع القيام بأي عمل مادمت قد ركبت له برنامج لأداء ذلك العمل . وقد انقسم مصنعو المعالجات في فلسفة بناء المعالج إلى فريقين :
الفريق الأول زودوا معالجاتهم بالكثير من التعليمات المعقدة وتسمى هذه المعالجات معالجات CISC .
زود معالجاته بعدد قليل من التعليمات البسيطة وتسمى هذه المعالجات معالجات RISC .
RISC
CISC
أنظمتها
حاسبات ماكنتوش
حاسبات IBM
عدد التعليمات التي يدعمها المعالج
أقل
أكثر
عدد التعليمات اللازمة لتنفيذ برنامج ما
أكثر
أقل
الزمن اللازم لتنفيذ تعليمة
أقل
أكثر
إن الحكم على من منهما أسرع ليس شيئاً سهلاً وإن ذلك يعتمد على تصميم المعالج نفسه ككل وعلى برامج التجميع المستخدمة في إنتاج البرامج وعلى عوامل أخرى ، واليوم أصبح مصنعي المعالجات يتجهون إلى استعمال كلا الفلسفتين معاً وأصبح الفارق بينهما يندثر شيئاً فشيئاً .
ما زالت المعالجات الحديثة تفهم نفس التعليمات التي تفهمها المعالجات القديمة فهي لا تستبدل ولكن المعالجات الحديثة قد زادت عليها العديد من التعليمات . ففي كل مرة ينتج المصنعون ( مثل شركة إنتل ) جيلاً جديداً من المعالجات يتم إضافة كمية من التعليمات لتحسين الأداء ، أي أن أحدث معالج من إنتل يستطيع فهم نفس التعليمات التي كان أقدم معالج من إنتل يفهمها ، ويرمز للتعليمات التي تدعمها المعالجات المتوافقة مع IBM باسم "x86" وبذلك تسمى معالجات IBM باسم "عائلة x86" وتشمل كل المعالجات التي تعمل على نظام IBM حتى من غير شركة إنتل .
جاء معالج 386 بـ 26 تعليمة جديدة ، وجاء 486 بـ 6 تعليمات جديدة ، وبنتيوم بـ 8 تعليمات جديدة وأضاف MMX أيضاً 57 تعليمة جديدة .وأخرجت شركة AMD تعليمات لتسريع حسابات الفاصلة العائمة سميت 3D-NOW تشبه MMX ولكنها خاصة بأرقام الفاصلة العائمة .
وفي عام 1999 قدمت إنتل تعليمات MMX 2 وهي عبارة عن 70 تعليمة جديدة خاصة بعمليات الفاصلة العائمة وسميت KNI أو SSE و زود بها المعالج بنتيوم الثالث 500 ميجاهيرتز .
يمكن لمصنعي المعالجات أن يجعلوا معالجاتهم تعمل كمعالجات CISC ظاهرياً بينما تعمل في الحقيقة كمعالجات RISC ، و يتم عمل ذلك بإضافة وحدة خاصة في المعالج تقوم بتحويل تعليمات CISC إلى RISC ومن ثم يقوم المعالج بتنفيذها ، لذا فالمعالج الذي يعمل بهذه الطريقة هو في الحقيقة معالج RISC لا أنه يعمل في الظاهر وكأنه معالج CISC . ولكن هذه الطريقة تجعل تركيبة المعالج معقدة .
---------------------------------------
تبادل البيانات مع أجزاء الحاسب الأخرى
إذا طلبت منك أن تجمع 5 + 6 فستقول أنها 11 فوراً أما إذا قلت لك ما هو مجموع 2252 + 684321321 فستأخذ وقتاً أطول في حسابها ، أي الحالة الثانية أصعب في الحساب ، إذاً فأصعب جزء بالنسبة لك هو جمع الأرقام ولكن بالنسبة للحاسب الأمر يختلف فحجم الأرقام لا يعني له شيئاً فالحاسب يستطيع جمع أي رقمين في لمح البصر ولكن الأهم والأصعب هو إيجاد الأرقام المراد جمعهما وإحضارهما من الذاكرة العشوائية بأسرع وقت ممكن (أي عملية جلب البيانات والتعليمات ) وهنا نصل لبداية هذا الموضوع .
الميجاهيرتز هو وصف لعدد نبضات الكهرباء التي تسري في سلك معين في الثانية الواحدة ، فإذا كان تردد ناقل معين 100 ميجاهيرتز فهذا معناه أنه يرسل 100 مليون نبضة كهربائية في الثانية الواحدة مما يمكنه من إرسال معلومات أكثر من ناقل آخر يعمل بتردد 66 ميجاهيرتز مثلاً (إذا افترضنا أن عرض الناقل متساوي في الحالتين ) .
إن المعالج يقوم بتبادل البيانات مع الأجزاء الأخرى عبر الناقل وفيما يعمل المعالج بسرعة قد تصل إلى 700 ميجاهيرتز أو أكثر لا تعمل باقي أجزاء الحاسب بهذه السرعة الكبيرة لأن ذلك من شأنه أن يجعل الحاسب ككل غالي الثمن .
وحتى يتم تبادل البيانات بين المعالج وناقل النظام الأقل سرعة بدون أي أخطاء لابد من التنسيق بينهما - لأن ناقل النظام يعمل في أغلب الأحيان بسرعة 66 أو 100 ميجاهيرتز فيما تبلغ سرعة المعالجات عدة أضعاف ذلك ( مثلاً 500 ميجاهيرتز ) - من خلال تعيين نسبة لعدد دورات ساعة(تردد) المعالج إلى عدد دورات ساعة (تردد) الناقل وهو ما يسمى بعامل المضاعفة * وهو النسبة بين تردد المعالج وتردد ناقل النظام ويكون عادة عدد صحيح أو عدد يقبل القسمة على 0.5 ومن الأمثلة على معامل المضاعفة : 2 - 2.5 - 3 - 3.5 - 4 - 4.5 - 5 - 5.5 ولا يكون مثلاً 2.3 .
فمثلاً في حالة المعالج بتردد 500 ميجاهيرتز فإن تردد الناقل هو 100 ميجاهيرتز ومعامل المضاعفة في هذه الحالة هو 5 ( 100 × 5 = 500 ) وهكذا.
وفي عالم الحاسب تكون سرعة تبادل المعلومات عبر هذا الناقل مهمة جداً لأن الناقل يعتبر بطيئاً بالنسبة للمعالج ، ففيما يبلغ تردد الناقل 100 ميجاهيرتز مثلاً نجد معالجات بتردد 550 ميجاهيرتز ، فإذا لم يستطع الناقل توصيل البيانات بسرعة كافية فإن ذلك يعني عدم الاستفادة بصورة تامة من قدرات المعالج حيث أن المعالج يكون أسرع من الناقل في تلقي البيانات ويكون المعالج في أحيان كثيرة واقفاً دون حراك ( أي أنه ينتظر من الناقل البيانات وتسمى هذه الحالة بحالة الانتظار * ) وكلما كانت حالة الانتظار أقل في المعالج كلما أمكن استغلال قدرات المعالج بصورة أفضل ، ولكن تذكر أن الذاكرة المخبئية تمنع حدوث حالة الانتظار إلى حد كبير .
------------------------------------------
تعدد المعالجات
يمكن لأكثر من معالج واحد العمل على نفس الحاسب ، ولكن ليس كل المعالجات تستطيع ذلك ، كما إن الزيادة في الأداء لا تكون الضعف دائماً ، إن سرعة حاسب ذو معالجين يعتمد على عدة عوامل :
يجب أن توفر اللوحة الأم هذه الإمكانية : يجب أن يكون فيها فتحتين أو أكثر للمعالج ، إن الأغلبية القصوى من اللوحات الأم لا تدعم هذه الميزة ، ولن تحصل عليها إلا إذا سألت عنها .
يجب أن يدعم المعالج هذه الميزة - كما قلت .
يجب أن يدعم نظام التشغيل والبرنامج هذه الميزة
إذا شغلت نظام ثنائي المعالجات على نظام تشغيل لا يدعم تعدد المعالجات فإنه سيعمل ولكن الأداء سيكون ضعيفاً في هذه الحالة (ربما يماثل الحاسب بمعالج واحد ) ، ومن أشهر أنظمة التشغيل التي تدعم تعدد المعالجات هو وندوز NT وكذلك وندوز 2000 . إن نظام مثل وندوز 98 لا يدعم تعدد المعالجات ولكن لا تقلق فلو شغلت أكثر من برنامج في نفس الوقت فإن النظام سيستفيد بالتأكيد من تعدد المعالجات في هذه الحالة .
وحتى يستطيع المعالجين ( أو المعالجات في حالة وجود أكثر من معالجين ) التفاهم والتنسيق فيما بينهم فإنه لابد من استخدام بروتوكول موحد ، وتستخدم معالجات شركة إنتل بروتوكول يسمى APIC فيما صمم شركتي سايركس و AMD بروتوكول OpenPIC ولكنه لم يستعمل في لوحة أم واحدة حتى الآن !!!!! لذا فإذا أردت تركيب حاسب متعدد المعالجات فإن معالجات إنتل هي الحل الوحيد حتى الآن .
إن معالجات الجيل السادس من إنتل لهي أفضل الحلول لتعدد المعالجات ، هذا لأن كل معالج منهم يحتضن ذاكرته المخبئية داخله مما يمنع تزاحم المعالجات على الذاكرة المخبئية في مثلما يحدث في حالة معالجات الجيل الخامس .
----------------------------------
أخطاء المعالجات
تقوم المعالجات بدور "الدماغ" للحاسب فتقوم بالعمليات الحسابية له ، والمعالج مع أنه آله إلا أن بعض الأخطاء يمكن أن تحدث أثناء أداء عمله ، تظهر في أغلب الأحيان أخطاء بسيطة في تصميم المعالجات ويتم تصحيحها ، هذه الأخطاء تكون نادرة الحدوث ومع ذلك تصحح هذه الأخطاء وهذا هو السبب في وجود عدة إصدارات من نفس المعالج ، فمثلاً المعالج بنتيوم 200 MMX قد يوجد منه عدة إصدارات وكل إصدارة تعالج بعض الأخطاء التي ظهرت للمهندسين بعد إصدار الإصدارة الأولي ولهذا يوجد ما يسمى رقم الخطوة (*) في أي معالج ، وكلما كان رقم الخطوة أعلى كلما كان أفضل من ناحية احتواؤه على أخطاء أقل .
أما خطأ المعالج بنتيوم الشهير فقد كان له شأن آخر ، كان مقدراً أن هذا الخطأ يحدث حوالي كل 24 ساعة مرة ويحصل في حسابات الفاصلة العائمة الضرورية في الحسابات الهندسية ، فقد اضطرت شركة إنتل لاستبدال كافة المعالجات التي تحوي الخطأ وهذا يعد خسارة كبيرة لإنتل ولكنها استفادت من هذا الأمر أيضاً كدعاية لشركتها .
-----------------------------------------
معالجة الأبعاد الثلاثية
تتمثل معالجة الأبعاد الثلاثية في الألعاب الحديثة مثل دووم وأمثالها ، ولابد - إذا أردت أن تستمتع باللعب كما يجب - أن تكون سرعة المعالج قادرة على القيام بجميع العمليات التي تتطلبها هذه اللعبة أثناء تشغيلها فوراً بدون تأخير وإلا ضاعت متعة اللعب ، ويتساوى في هذا أيضاً برامج الرسم الهندسي التي تكون بطيئة جداً ومملة في حال كان المعالج بطيئاً .
تحتاج معالجة الرسومات الثلاثية الأبعاد لسرعة كبيرة من المعالج كي تكون سرعة المعالجة مرضية وذلك لأن كل جسم من الأجسام التي تريد إظهارها على الشاشة تتكون من آلاف المثلثات الصغيرة جداً والتي تطلب إعادة حساب موقع كل مثلث من هذه المثلثات في كل مرة تريد تحريك هذا الجسم فيها .
وبما أن عدد هذه المثلثات كبير فيلزم عدد كبير من العمليات الحسابية ، وبما أن حجمها صغير فتتطلب القيام بعمليات حسابية دقيقة ( أي حسابات أرقام الفاصلة العائمة ) مما يجعل أهمية وحدة الفاصلة العائمة كبيرة في هذا المجال . وكلما كان المعالج أسرع كلما كانت الرسوم الثلاثية الأبعاد أسرع .
في أيامنا هذه زاد الاحتياج لقوة المعالجة الثلاثية الأبعاد بكثرة الألعاب الثلاثية الأبعاد ، ولم تعد قوة المعالجة لأي من المعالجات تكفي لهذه الألعاب ، لذا فوجود المسرعات الثلاثية الأبعاد على بطاقات الفيديو قد خفف العبء عن وحدة المعالجة المركزية كثيراً ويمكنك الرجوع لقسم بطاقة الفيديو لمزيد من المعلومات عن هذا المجال .