كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثانيهذا الموضوع هو الجزء الثاني من سلسلة كيف يعمل الحاسب لذلك يفضل مراجعة الجزء الأول قبل البدء به،كل المناهج العالمية التي تدرس بنية الحاسب و كيفية عمل المكونات تتطلب بمعرفة جيدة لمنهاج يدعى النظم المنطقية

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

 

 

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

هذه الإشارة تسمى بإشارة تشابهية مستمرة،الأن حتى نستطيع أن نعالج متغير كالحرارة بشكل رقمي يجب أن نقوم بتقطيع الإشارة أي نأخذ منها عينات بفترات زمنية متساوية فتصبح الإشارة المتقطعة بالشكل التالي:

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

هذه الإشارة تسمى بإشارة تشابهية متقطعه،هناك العديد من الشروط لتكون هذه العملية صحيحة ولكن لن نتطرق لها فهذا ليس محور حديثنا،طبعا هناك مصطلحان قد مرا و لكن لم أقم بشرحهما وهم "نعالج" و "بشكل رقمي" :

المعالجة بلغة الحاسب هي الحصول على معلومات مفيدة من بيانات محددة. كمثال درجات الحرارة خلال اليوم بحد ذاتها قد لا تكون مفيدة ولكن قد نحتاج إلى متوسط الحرارة خلال ساعات النهار أو خلال ساعات الليل. عملية الحصول على هذه القيم من درجات الحرارة تسمى "معالجة".

أما كلمة بشكل رقمي فيجب التفريق بين مصطلحي التشابهي و الرقمي. الإشارة التشابهية هي أي متحول فيزيائي موجود من حولنا "الحرارة، الرطوبة، الطول، التيار الكهربائي، السرعة ..." حيث يكون له قيمة معينة خلال لحظة زمنية معينة
الإشارة الرقمية هي تحويل لإشارة تشابهية ما بحيث يمكن إدخالها إلى معالج رقمي لتتم معالجتها بعد أن يتم تقطيعها و تحويل قيمها إلى الشكل الرقمي
مثال بسيط يوضح فكرة الإشارة الرقمية و التشابهية

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

هذا الصورة تمثل و بشكل بسيط كيفية تحويل الإشارة الرقمية المخزنة في القرص المضغوط إلى إشارة تشابهية عن طريق محول تشابهي رقمي Digital to analog converter ثم تتم تهيئة الإشارة التشابهية عن طريق مضخم Amplifier و ثم تحول إلى إشارة صوتية عن طريق المجهر Speaker.

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

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

في الحاسب الشخصي غالبا ما يمثل 1 بجهد كهربائي بين (5 و 3.3)فولت و ال0 بجهد كهربائي بين (2 و 0) فولت والمنطقة بين (3.3 و 2)فولت تعتبرمنطقة غير معرفة "لا يمكن معرفة القيمة التي سيفهمها الحاسب هل هي 1 أم 0".

نبضات الساعة Clock pluses:
في جميع الأنظمة الإلكترونية نحتاج إلى من يضبط إيقاع عملها وهذه هي مهمة الClock "هل تفكر بشيء يدعى OverClock!.

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

مهمة هذه النبضات أن تؤمّن التزامن بين أجزاء الحاسب كافة و غالبا ما يكون هناك تردد أساسي في الحاسب لنبضات الساعة و يتم الحصول على ترددات عمل أجزاء الحاسب الأخرى من خلال مضاعفته أو تجزيئه فعلى سبيل المثال الحاسب الذي أملكه فتردد مولد نبضات الساعة لدي بشكل إفتراضي هو 200Mhz
يتم الحصول على تردد المعالج منه عن طريق مضاعفته 14 مرة أي 14 * 200MHz = 2800MHz
يتم الحصول على تردد الذواكر منه عن طريق مضاعفته مرتان فقط أي 2 * 400MHz = 800MT/s
طبعا من المعروف أن تردد ذواكر ال DDR الحقيقي يكون نصف ما يذكر عليها "وهو التردد الفعلي"

جبهات نبضات الساعة :
تتألف كل نبضة ساعة من جبهتين الأولى صاعدة من 0 إلى 1 و الثانية هابطة من 1 إلى 0 أي أن كل نبضة تحوي على جبهتين.

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

في ذواكر الDDR يتم تنفيذ عملية (قراءة أو كتابة) عند كل جبهة و ليس عند النبضة مما يعطي تردد عمل فعلي لها ضعف الحقيقي.

طرق نقل القيمة الرقمية،عرفنا أن الحاسب يقيس حجم البيانات بوحدة البايت و أن كل بايت يحتوي على 8 بت، هناك طريقتين لنقل البايت الواحد من أي جزء للحاسب إلى جزء أخر

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

الأولى بشكل تسلسلي "الشكل الأول" وهو أن يتم نقل البايت الواحد على شكل قطار من النبضات (1 أو 0 حسب البايت المنقول) من طرف إلى أخر من خلال سلك نقل وحيد "على الأقل" و كمثال عليه منفذ الCOM  في الحاسب أو منفذ الUSB ، و تتميز هذه الطريقة بقلة عدد خطوط نقل الإشارة و ممانعتها الكبيرة للتشويش الخارجي لذلك تستخدم بكثرة في إتصال الحاسب مع العالم الخارجي و يعيبها أنها أبطأ من الطريقة الثانية،الثانية بشكل تفرعي حيث يتم استخدام عدد كبير من خطوط نقل البيانات و تساوي أقل عدد بتات يجب أن تنقل دفعة واحدة فمثلا 8 للبايت و 16 للكلمة الرقمية وهكذا و يتم نقل البايت "مثلا" دفعة واحدة و تتميز بسرعتها و لكنها تكون معرضة بشكل كبير للتشويش الداخلي "بين خطوط النقل بعضها ببعض" و التشويش الخارجي لذلك غالبا ما تستخدم لنقل البيانات بين أجزاء الحاسب الداخلية "بين المعالج و الذاكرة مثلا"

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

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني


التي هي A>B A


المشفر Encoder و فاك الشيفرة Decoder،مهمة المشفر و فاك السفرة بعكس بعضهما البعض "طبعا واشح من الاسم" ،مهمة المشفر هي تحويل قيمة معينة من دخله إلى قيمة ثنائية تماثل هذه القيمة.

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

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

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

توضح هذه الصورة فاك تشفير يسمى Binary to 7-Segment Decoder و مهمته تحويل رقم ثنائي بين 0 و 9 إلى صيغة معينة تسمح بإظهار الرقم على الشاشة سباعية القطع "غالبا ما نراها في لوحات المصاعد".

الناخب Multiplexer و الموزع  De-multiplexer
مهمة الناخب هي يصل أحد مداخله المتعددة إلى خرجه الوحيد اعتمادا على القيمة الموجودة على مداخل التحكم. مهمة الموزع هي مدخله الوحيد إلى أحد مخارجه المتعددة اعتمادا على القيمة الموجودة على مداخل التحكم.

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

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

العدادات Counters
تستخدم هذه الدارات لتشكيل قيم على خرجها "غالبا متتالية" مقابل كل نبضة ساعة تصلها

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

المسجلات Register
المسجلات تقسم إلى العديد من الأنواع حسب طريقة دخول البيانات إليها و خروجها و هي عبارة عن حجرات ذاكرية تحتفظ بقيمتها ما دامت مغذاه "غالبا" وهي

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

1-مسجلات تسلسلية تسلسلية مع إزاحة إلى اليمين أو اليسار
2-مسجلات تفرعية تسلسلية
3-مسجلات تسلسلية تفرعية
4-مسجلات تفرعية تفرعية
5-مسجلات الإلتفات إلى اليمين أو اليسار
حيث يعبر نوع نقل البيانات الأول على طريقة إدخال القيمة للمسجل و تعبر نوع نقل البيانات الثاني عن طريقة إخراج الملفات من المسجل،و سنتعرف على استخدامات العديد منها لاحقا يكفي أن تعرف أن مسجلات الإلتفات تفيد كثيرا في عمليات الضرب و القسمة

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

هذه الصورة تمثل مسجل من النوع التسلسلي وكيفية إدخال المعلومات فيه

نظرة أعمق إلى نظام العد الثنائي

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

سأقوم بإضافة بعض الأمثلة والمعلومات الإضافية عن النظام الثنائي

التحويل من الثنائي إلى العشري :
كما تحدثنا من قبل أن كل خانة من الأعداد الثنائية لها وزن يعبر عنه بالأساس 2 مرفوع إلى موقع الخانة،عند التحويل نقوم بضرب قيمة الخانة الثنائية (1 أو 0) بوزن الخانة كما يوضح المثال التالي:

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

نقوم بكتابة أوزان الخانات "السطر الأحمر"،نقوم بكتابة قيمة الأوزان بشكل رقم صحيح عوضا عن أس و أساس "ليست شرطا"،نتكب قيمة الخانة الثنائية حسب موقعها ثم نقوم بعملية الضرب،نجمع نواتج الضرب و نحصل بذلك على الرقم العشري المقابل للرقم الثنائي

التحويل من العشري إلى الثنائي:
هناك طريقتين واحدة طويلة و لكنها عامة "تصلح لأي نظام عد كان" و لن أشرحها هنا أما الثانية فهي البسيطة و القصيرة وهي المفضلة غالبا،تعتمد الطريقة على حفظ الأوزان الثنائية (1 2 4 8 16 32 64 128 256 512 1024 2048) حيث أن كل خانة هل ضعف سابقتها.

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

الأن لنأخذ مثلا الرقم 49:
نكتب الخانات الثنائية بحيث أن تكون أخر خانة أكبر من العدد المطلوب تحويله 1 2 4 8 16 32 64
نبحث عن أكبر خانة ثنائية بحيث تكون أصغر أو تساوي 49 فنجد أنها 32 ،نقوم بعملية الطرح 49-32 فيكون الناتج 17 نبحث عن أكبر خانة ثنائية بحيث تكون أصغر أو تساوي 17 فنجد أنها 16،نقوم بعملية الطرح 17-16 فيكون الناتج1 نبحث عن أكبر خانة ثنائية بحيث تكون أصغر أو تساوي 1 فنجد أنها 1،نقوم بعملية الطرح 1-1 فيكون الناتج 0 و عندها نتوقف،الأن نضع الرقم 1 أسفل كل خانة ثنائية تم استخدامها أي أسفل ال32 و 16 و 1 و أسفل بقية الخانات 0
1 2 4 8 16 32 64 ،1 0 0 0 1 1 0
و بهذا يكون تحويل 49 إلى ثنائي هو 110001

العمليات الحسابية على الأعداد الثنائية
الجمع
نجمع كل خانة إلى الخانة المقابلة وفق الجدول التالي

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

حيث Sum هي ناتج الجمع و Carry هي الحمل للقيمة التالية "كما يحصل في عملية الجمع العشرية عندما يكون الناتج أكبر من 9"،مثال:

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

الطرح،تتم عملية الطرح كما الجدول التالي:

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

و من الممكن أن نحتاج إلى إستعارة 10b من الخانة الأكبر كما يوضح المثال التالي:

كيف تعمل وحدة المعالجة المركزية (CPU)

الضرب،القاعدة الأساسية في الضرب هي :

كيف تعمل وحدة المعالجة المركزية (CPU)

و عند ضرب عدد من الخانات نقوم بالعملية كما لو كنا نتعامل مع أعداد عشرية،مثال:

كيف تعمل وحدة المعالجة المركزية (CPU)

المتمم الأحادي و المتمم الثنائي،فكرة المتمم موجودة في جميع نظم العد وهي المتمم التي إذا جمعناها مع عدد الذي تم حسابه منه تعطنا قيمة معينة و هي إما عدد مؤلف من أخر رمز في نظام العد "المتمم الأحادي" أو المتمم الأحادي +1 و هو ما يسمى المتمم الثنائي.
ففي الأعداد العشرية يعطى المتمم الأحادي للعد 596 بالشكل التالي: 999-596=403 أما المتمم الثنائي يكون 404
أما في الأعداد الثنائية فالعملية أسهل "رغم أنها تتبع إلى نفس القاعدة" ،فالعدد 1101010 متممه الأحادي هو 0010101 و متممه الثنائي هو 0010110
إذ أننا نبدل كل 1 ب 0 و كل 0 ب 1 و ذلك للحصول هعلى المتمم الأحادي و عند جمع الرقم 1 نحصل على المتمم الثنائي من المتمم الأحادي،فائدة المتتمات تظهر عند عملية الطرح ففي الحاسب يتم التعامل مع جميع الأرقام على أنها متممات ثنائية.
على فرض أن لدينا بايت . سيستطيع هذا البايت أن يتسع الأرقام من 00000000 حتى 11111111 و قد تم الإتفاق على أن جميع الأعداد من من 00000000 إلى 01111111 هي أعداد موجبة و أن جميع الأعداد من 10000000 إلى 11111111 على أنها أعداد سالبة هذا يجعل البايت الواحد يتسع إلى أعداد من -128 إلى 127 ،و سبب ذلك أنه تم الإتفاق على جعل أخر بت في كل بايت يحتوي على قيمة سالبة "وهو خانة 128"وهذا المثال يوضح كيفية تحويل من متمم ثنائي إلى عدد عشري مؤشر

كيف تعمل وحدة المعالجة المركزية (CPU) – الجزء الثاني

العمليات على المتمم الثنائي "ما يحدث فعلا داخل المعالج"،على إعتبار أن كل ما يتعرف عليه الحاسب من أرقام تتم الحسابات عليها على أنها متمم ثنائي فيجب أن نعرف أنه يتعامل مع الجمع و الطرح على أنهما عملية واحدة و الأمثلة التالية توضح ذلك

كيف تعمل وحدة المعالجة المركزية (CPU)

(الحالة 1) نلاحظ في حالة جمع عددين موجبين لا يوجد أي مشكلة "جمع تقليدي"
(الحالة 2) نلاحظ في الحالة الثانية حولت عملية الطرح إلى جمع بعد أن تمت كتابة الرقمين على أنهما متمم ثنائي و كان الناتج أيضا متمم ثنائي
(الحالة 3) نلاحظ في الحالة الثالثة كيف أصبحت عملية الجمع بين عددين سالبين عملية جمع تقليدية و كان الناتج بشكل متمم ثنائي و لكن هنا يجدر ذكر أنه في حال كان هناك طفحان يتم إهماله و الطفحان هو تخطي الناتج عدد الخانات المخصصة للعملية،في بعض الأحيان ممكن أن يحصل ما يسمى بتغير خانة الإشارة وهذا يحدث عندما نجمع عددين موجبين و يكون الناتج سالب أو جمع عديين سالبين و يكون الناتج موجب كما في الصورة

كيف تعمل وحدة المعالجة المركزية (CPU)

أمثلة إضافية توضح كيف تحول عملية الجمع و الطرح إلى جمع فقط عند التعامل مع المتمم الثنائي

كيف تعمل وحدة المعالجة المركزية (CPU)

الأن أي شخص درس أي لغة برمجة سيعترض و بقوة و سيقول لي "متحولات الInteger و التي تحوي على قيم صحيحة بطول 1Byte يمكن أن تتسع إلى أرقام من 0إلى 255 و على حسب ما ذكرت سأحتاج إلى 2Byte كي يتسع إلى 255" و سيكون الجواب هنا يأتي دور لغة البرمجة إذ أن المعالج بالنسبة له كل ما يدور حوله يعتبر أرقام فقط و لن يفرق بين عدد موجب أو عدد سالب و لكنه زود ببعض الادوات التي تساعده على التعامل مع أي شيء فالمعالج يحتوي على ما يسمى مسجل الحالة إذ أن هذا المسجل يحتوي يعلم البرنامج المنفذ عن حدوث حالة معينة في المعالج قد حدثت حتى يستطيع البرنامج فهم سبب الجواب الغريب و يخرجه للمستخدم بشكل صحيح ،عادة ما يكون طول هذا المسجل بايت و لكنه الأن ليس حديثنا ما يهمنا أن نعرفه أنه يحوي على ما يسمى Negative flag و Overflow Flag و الكل بت من هذا المسجل يسمى Flag
سأخذ الأن كما يسمى سيناريو و اسقطه على المعالج و نرى كيف يقوم البرنامج بفهم ما يحدث من خلال مسجل الحالة،لنفترض أني قمت بالعملية التالية01000000 (64+)،+ 01000001 (65+)
-------------
10000001 (-127)

الأن ما سيحدث هو في حال كان المتحول أثناء كتابة البرنامج معرف على أنه Integer فلن ينظر إلى الNegative flag و الذي يحدد إن كان الناتج سالب "تصبح قيمته 1 عندما يكون ناتج العملية سالب" و يتم التعامل مع الناتج على أنه عدد ثنائي عادي و ليس متمم ثنائي وهذه العمليات هي من إختصاص لغة البرمجة

نظام العد الست عشري ،هذا النظام يتكون من 16 عشر رمز "من 0 إلى F" و تتوزع وفق الجدول التالي

كيف تعمل وحدة المعالجة المركزية (CPU)

و هو مهم جدا عند التعامل مع الذاكرة و ذلك لأنه يستطيع وصف عدد كبير من خلال رموز قليلة فمثلا،العدد FFFF يمثل في الأعداد العشرية 65535 وفي الأعداد الثنائية 1111111111111111 و يتميز هذا النظام أن أساسه يقبل القسمة على اساس النظام الثنائي لذلك يمكن أن توصف كل خانة من نظام العد الست عشري ب بأربع خانات من الأعداد الثنائية لأن 2 مرفوعة للأساس 4 تعطي الرقم 16

نظام العد الثماني،و يتكون من ثمانية رموز "0 إلى 7"

كيف تعمل وحدة المعالجة المركزية (CPU)

وهذا النظام يملك نفس ميزة النظام الست عشري و لكن هنا كل 3 خانات ثنائية تمثل خانة ثمانية

البوابات المنطقية الأساسية،البوابات المنطقية هي عبارة عن دارات إلكترونية تعد حجر الاساس لأي نظام الكتروني كان فالدارات الرقمية السابقة ماهي إلا مجموعة من البوابات متصلة مع بعضها البعض،قد سميت بوابات لأنها تتحكم بمرور التيار الكهربائي فحسب دخلها تعطي قيمة للخرج و هي

كيف تعمل وحدة المعالجة المركزية (CPU)

AND
OR
NOT
و تتميز كل بوابة بما يسمى جدول حقيقة وهو جدول يوضح جميع القيم الممكنة للدخل و ما يقابلها في الخرج

كيف تعمل وحدة المعالجة المركزية (CPU)

بوابة OR |،وهي بوابة تعطي على خرجها 1 عندما تكون إحدى أو جميع مداخلها 1 وهذا جدول الحقيقة لبوابة OR بمدخلين

كيف تعمل وحدة المعالجة المركزية (CPU)

بوابة NOT ~و تسمى العاكس أيضا و تعطي قيمة معاكسة للقيمة الداخلة إليها

كيف تعمل وحدة المعالجة المركزية (CPU)

من خلال هذه البوابات الأساسية نستطيع الحصول على بعض البوابات المساعدة الأخرى و هي

NAND ،هذه البوابة عبارة عن بوابة AND يوجد على خرجها بوابة NOT

كيف تعمل وحدة المعالجة المركزية (CPU)

ويعطى جدول الحقيقة الخاص بها بالشكل

كيف تعمل وحدة المعالجة المركزية (CPU)

NOR،هذه البوابة عبارة عن بوابة OR يوجد على خرجها بوابة NOT

كيف تعمل وحدة المعالجة المركزية (CPU)

ويعطى جدول الحقيقة الخاص بها بالشكل

كيف تعمل وحدة المعالجة المركزية (CPU)

XOR

كيف تعمل وحدة المعالجة المركزية (CPU)

وهي بوابة تسمى ببوابة عدم التماثل و تعطي 1 على خرحها عندما تحتلف مداخلها كما في الجدول

كيف تعمل وحدة المعالجة المركزية (CPU)

سأكتفي بهذا القدر حاليا،الموضوع التالي سأشرح كيفه كيفية عمل الترانزستور و كيفية تشكيل البوابات الرئيسية من الترانستورات و شرح لبعض الأفكار الرئيسية في تقنيات تصنيع المعالج وبعض العلاقات الرياضية الجميلة

 

بقلم: خير الدين كجان