موقف من الحياة اليومية#

فتحت الآلة الحاسبة على الموبايل، وكتبت 5 + 3، وضغطت على علامة يساوي. الرقم 8 ظهر قبل ما صباعك يبعد عن الشاشة.

اللحظة دي شكلها بسيط جدًا، لكن جوه الجهاز حصلت فيها حاجات كتير: البرنامج اتقسم لخطوات صغيرة جدًا اسمها تعليمات، وفيه قطعة واحدة جوه الجهاز نفذتهم واحدة ورا التانية بسرعة رهيبة.

القطعة دي اسمها المعالج. في المقال ده هتعرف إيه هو، وجواه إيه، وإزاي بيشتغل.

خلاصة سريعة#

  • المعالج (CPU (Central Processing Unit) · المعالج (وحدة المعالجة المركزية)الجزء الذي ينفّذ تعليمات البرامج في الحاسوب، تعليمةً بعد تعليمة. ويتكون أساسًا من وحدة الحساب والمنطق والمسجّلات ووحدة التحكم.عرض في القاموس) هو الجزء اللي بينفّذ تعليمات البرامج، تعليمة ورا تعليمة.
  • جواه 3 أجزاء رئيسية: وحدة بتحسب (ALU (Arithmetic Logic Unit) · وحدة الحساب والمنطقجزء داخل المعالج ينفّذ العمليات الحسابية والمنطقية الأساسية، مثل جمع رقمين أو المقارنة بينهما.عرض في القاموس)، ومخازن صغيرة سريعة (Register · المسجّلمخزن صغير جدًا وسريع جدًا داخل المعالج، يحتفظ بقيمة واحدة مؤقتًا، مثل نتيجة عملية حسابية، حتى لا يحتاج المعالج إلى الذاكرة الرئيسية في كل خطوة.عرض في القاموس)، ووحدة بتنظّم الشغل (Control Unit · وحدة التحكمجزء داخل المعالج يفك شفرة كل تعليمة، ويرسل الإشارات التي تخبر بقية الأجزاء بما تفعله، ويحدد التعليمة التالية التي ستُنفَّذ.عرض في القاموس).
  • بيشتغل بحلقة ثابتة بتتكرر من غير ما توقف: يجيب التعليمة، يفكها، ينفذها، وبعدين اللي بعدها. والحلقة دي بتتكرر مليارات المرات في الثانية.

ببساطة#

تخيّل طباخ في مطبخ، وقدامه كتاب وصفات:

  • كتاب الوصفات هو الذاكرة، وفيه الخطوات مكتوبة بالترتيب.
  • الطباخ بيقرا خطوة، ويفهم المطلوب منها، وينفذها، وبعدين يقرا اللي بعدها.
  • صباعه على السطر اللي واقف عنده علشان ما يتوهش، وده زي عدّاد البرنامج.
  • الطبق الصغير اللي جنبه بيحط فيه المكونات اللي شغال عليها دلوقتي بدل ما يروح التلاجة كل شوية، وده زي المسجّلات.

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

برنامج صغير من 3 تعليمات: المعالج بيجيب كل تعليمة ويفكها وينفذها، وسهم عدّاد البرنامج (PC) بينزل للتعليمة اللي بعدها.

بالتفصيل#

المعالج بيعمل إيه بالظبط؟#

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

وزي ما عرفنا في مقال النظام الثنائي، كل حاجة في الكمبيوتر مكتوبة بـ 0 و1، والتعليمات كمان. وحسب كتاب «The Elements of Computing Systems» (من مقرر Nand2Tetris)، التعليمة غالبًا طولها 16 أو 32 أو 64 بت.

شغلانة المعالج: يقرا التعليمات دي واحدة واحدة، وينفذها.

الأجزاء التلاتة جوه المعالج#

حسب نفس الكتاب، المعالج بيعتمد على 3 أجزاء رئيسية:

1. وحدة الحساب والمنطق (ALU (Arithmetic Logic Unit) · وحدة الحساب والمنطقجزء داخل المعالج ينفّذ العمليات الحسابية والمنطقية الأساسية، مثل جمع رقمين أو المقارنة بينهما.عرض في القاموس)

دي «الآلة الحاسبة» جوه المعالج. بتعمل العمليات الحسابية والمنطقية البسيطة، زي إنها تجمع رقمين، أو تقارن رقمين وتعرف مين أكبر. وأي عملية أعقد، زي حساب الجذر التربيعي، بتتقسم لخطوات كتير من العمليات البسيطة دي.

2. المسجّلات (Register · المسجّلمخزن صغير جدًا وسريع جدًا داخل المعالج، يحتفظ بقيمة واحدة مؤقتًا، مثل نتيجة عملية حسابية، حتى لا يحتاج المعالج إلى الذاكرة الرئيسية في كل خطوة.عرض في القاموس)

مخازن صغيرة جدًا وسريعة جدًا جوه المعالج نفسه، قريبة من الـ ALU. كل مسجّل بيشيل قيمة واحدة بس، زي نتيجة عملية لسه خلصانة.

ليه محتاجينها؟ علشان المعالج ما يضيعش وقت كل شوية في إنه يروح للرامات (الذاكرة الرئيسية) ويرجع. وحسب الكتاب، عدد المسجّلات صغير، وغالبًا من 2 لحد 32 مسجّل.

3. وحدة التحكم (Control Unit · وحدة التحكمجزء داخل المعالج يفك شفرة كل تعليمة، ويرسل الإشارات التي تخبر بقية الأجزاء بما تفعله، ويحدد التعليمة التالية التي ستُنفَّذ.عرض في القاموس)

دي «المدير». بتاخد التعليمة المكتوبة بالثنائي وتفكّها علشان تعرف المطلوب، وبعدين تبعت إشارات لباقي الأجزاء: يا ALU اجمعي، ويا مسجّل احفظ الناتج. وكمان هي اللي بتحدد التعليمة الجاية.

عدّاد البرنامج: صباع الطباخ#

علشان المعالج يعرف هو واقف فين في البرنامج، فيه مسجّل خاص اسمه عدّاد البرنامج (Program Counter (PC) · عدّاد البرنامجمسجّل خاص داخل المعالج يحتفظ بعنوان التعليمة التالية التي سيجلبها المعالج من الذاكرة.عرض في القاموس)، واختصاره PC.

حسب كتاب Nand2Tetris، عدّاد البرنامج بيحتفظ بعنوان التعليمة الجاية في الذاكرة. يعني بعد ما المعالج يخلّص تعليمة، بيبص على العدّاد علشان يعرف يجيب أنهي تعليمة بعدها.

الحلقة اللي ما بتوقفش: جلب ← فك ← تنفيذ#

حسب كتاب OSTEP (كتاب جامعي مشهور في أنظمة التشغيل)، البرنامج وهو شغال بيعمل حاجة واحدة بسيطة جدًا: المعالج بيجيب تعليمة من الذاكرة، ويفكها، وينفذها، وبعدين يروح للتعليمة اللي بعدها، وهكذا لحد ما البرنامج يخلص.

الحلقة دي اسمها دورة الجلب والفك والتنفيذ (Fetch-Decode-Execute Cycle · دورة الجلب والفك والتنفيذالحلقة التي يكررها المعالج باستمرار، فهو يجلب التعليمة من الذاكرة، ثم يفك شفرتها ليعرف المطلوب، ثم ينفذها، ثم ينتقل إلى التعليمة التالية.عرض في القاموس):

  1. جلب (Fetch): المعالج بيبص على عدّاد البرنامج، ويجيب التعليمة اللي في العنوان ده من الذاكرة.
  2. فك (Decode): وحدة التحكم بتفك التعليمة علشان تعرف هي بتطلب إيه بالظبط.
  3. تنفيذ (Execute): الأجزاء المطلوبة بتشتغل. مثلًا الـ ALU تجمع، أو المسجّل يحفظ قيمة.

وبعدها عدّاد البرنامج بيشاور على التعليمة الجاية، والحلقة تبدأ من الأول.

تعالى نمشي مع الرسم اللي فوق خطوة بخطوة:

التعليمةاللي بيحصلقيمة المسجّل بعدها
حمّل 5المعالج بيحط الرقم 5 في المسجّل5
اجمع 3الـ ALU بتجمع اللي في المسجّل مع 38
خزّن الناتجالمعالج بينقل اللي في المسجّل للذاكرة8

الحلقة دي بتتكرر كام مرة؟#

كتير جدًا. حسب OSTEP، المعالج بيعمل الحلقة دي ملايين، والنهارده مليارات المرات في الثانية.

وده بيرجعنا لمقال وحدات قياس البيانات والسرعة: المعالج جواه «ساعة» بتدق بانتظام، وسرعتها بتتقاس بالجيجاهرتز. وحسب Intel، المعالج اللي سرعته 3.2 GHz بيعمل 3.2 مليار دورة في الثانية.

البرنامج نفسه متخزن في الذاكرة#

ممكن تسأل: التعليمات دي جاية منين أصلًا؟

الإجابة: من الذاكرة، زيها زي البيانات بالظبط. ولما بتفتح برنامج، تعليماته بتتنقل للذاكرة، والمعالج بيبدأ يجيبها وينفذها.

الفكرة دي اسمها «البرنامج المخزّن»، وهي أساس معمارية فون نيومان (Von Neumann Architecture · معمارية فون نيومانتصميم للحاسوب يقوم على فكرة البرنامج المخزّن، أي أن تعليمات البرنامج تُخزَّن في الذاكرة مثل البيانات، ويجلبها المعالج منها وينفذها.عرض في القاموس). وحسب كتاب Nand2Tetris، آلة فون نيومان ترجع لسنة 1945، والفكرة دي لسه أساس الكمبيوترات لحد النهارده.

وده اللي بيخلّي الكمبيوتر جهاز «لكل حاجة»: نفس المعالج يقدر يشغّل آلة حاسبة دلوقتي، ولعبة بعد دقيقة، ومتصفح بعدها. الفرق بس في التعليمات اللي متخزنة في الذاكرة.

للمتعمقين

فكرة البرنامج المخزّن بالتفصيل

حسب كتاب Nand2Tetris، فكرة «البرنامج المخزّن» اتوصل لها أكتر من عالم ومهندس بشكل مستقل في الثلاثينات، وبتعتبر من أعمق الأفكار في علوم الكمبيوتر. وبيشرح الكتاب إن في الآلات الحاسبة الميكانيكية اللي سبقت سنة 1930، منطق البرنامج كان مبني جوه الآلة نفسها. لكن مع البرنامج المخزّن، كود البرنامج بيتخزن في الذاكرة زي البيانات، فنفس الآلة تتصرف بشكل مختلف تمامًا مع كل برنامج جديد.

والكتاب بيذكر إن الفكرة دي عنصر أساسي في نموذجين مشهورين: آلة تورنج العامة (1936)، وآلة فون نيومان (1945). آلة تورنج نموذج نظري لتحليل المسائل، أما آلة فون نيومان فمعمارية عملية اتبنت عليها الأجهزة الحقيقية.

ذاكرة واحدة ولا اتنين؟

حسب نفس الكتاب، في بعض صور معمارية فون نيومان، ذاكرة البيانات وذاكرة التعليمات بيبقوا في نفس المكان. وفي صور تانية بيبقوا منفصلين في وحدتين، والطريقة دي اسمها أحيانًا «معمارية هارفارد» (Harvard architecture)، ودي الطريقة اللي الكمبيوتر التعليمي في الكتاب نفسه (اسمه Hack) معمول بيها.

القفز: إزاي البرنامج يكرر أو يختار؟

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

حسب كتاب Nand2Tetris، في الكمبيوتر التعليمي Hack، عدّاد البرنامج بيزيد واحد بعد كل تعليمة، فيشاور على اللي بعدها. لكن تعليمة القفز بتحط في العدّاد عنوان تاني، فالمعالج يروح يكمّل من هناك. وبالطريقة دي البرنامج يقدر يرجع لورا ويكرر خطوات، أو يقفز لجزء معيّن لو شرط معيّن اتحقق.

أخطاء شائعة#

  • «المعالج بيفهم البرامج زي ما إحنا بنفهمها»: غلط. المعالج بينفذ تعليمات صغيرة جدًا، واحدة ورا التانية، ومش بيفهم الصورة الكبيرة.
  • «المسجّلات هي الرامات»: غلط. المسجّلات مخازن قليلة جدًا جوه المعالج نفسه وأسرع بكتير، والرامات ذاكرة أكبر بكتير برا المعالج.
  • «المعالج هو الكيس كله»: غلط. الكيس (Case) هو الصندوق اللي فيه كل القطع، والمعالج شريحة صغيرة جوه الكيس، متركّبة على اللوحة الأم.

المصطلحات#

  • المعالج (CPU (Central Processing Unit) · المعالج (وحدة المعالجة المركزية)الجزء الذي ينفّذ تعليمات البرامج في الحاسوب، تعليمةً بعد تعليمة. ويتكون أساسًا من وحدة الحساب والمنطق والمسجّلات ووحدة التحكم.عرض في القاموس): الجزء الذي ينفّذ تعليمات البرامج في الحاسوب، تعليمةً بعد تعليمة.
  • وحدة الحساب والمنطق (ALU (Arithmetic Logic Unit) · وحدة الحساب والمنطقجزء داخل المعالج ينفّذ العمليات الحسابية والمنطقية الأساسية، مثل جمع رقمين أو المقارنة بينهما.عرض في القاموس): جزء داخل المعالج ينفّذ العمليات الحسابية والمنطقية الأساسية.
  • المسجّل (Register · المسجّلمخزن صغير جدًا وسريع جدًا داخل المعالج، يحتفظ بقيمة واحدة مؤقتًا، مثل نتيجة عملية حسابية، حتى لا يحتاج المعالج إلى الذاكرة الرئيسية في كل خطوة.عرض في القاموس): مخزن صغير جدًا وسريع جدًا داخل المعالج يحتفظ بقيمة واحدة مؤقتًا.
  • وحدة التحكم (Control Unit · وحدة التحكمجزء داخل المعالج يفك شفرة كل تعليمة، ويرسل الإشارات التي تخبر بقية الأجزاء بما تفعله، ويحدد التعليمة التالية التي ستُنفَّذ.عرض في القاموس): جزء داخل المعالج يفك شفرة التعليمات ويوجّه بقية الأجزاء ويحدد التعليمة التالية.
  • عدّاد البرنامج (Program Counter (PC) · عدّاد البرنامجمسجّل خاص داخل المعالج يحتفظ بعنوان التعليمة التالية التي سيجلبها المعالج من الذاكرة.عرض في القاموس): مسجّل يحتفظ بعنوان التعليمة التالية.
  • دورة الجلب والفك والتنفيذ (Fetch-Decode-Execute Cycle · دورة الجلب والفك والتنفيذالحلقة التي يكررها المعالج باستمرار، فهو يجلب التعليمة من الذاكرة، ثم يفك شفرتها ليعرف المطلوب، ثم ينفذها، ثم ينتقل إلى التعليمة التالية.عرض في القاموس): الحلقة التي يكررها المعالج: جلب التعليمة ثم فكها ثم تنفيذها.
  • معمارية فون نيومان (Von Neumann Architecture · معمارية فون نيومانتصميم للحاسوب يقوم على فكرة البرنامج المخزّن، أي أن تعليمات البرنامج تُخزَّن في الذاكرة مثل البيانات، ويجلبها المعالج منها وينفذها.عرض في القاموس): تصميم للحاسوب تُخزَّن فيه تعليمات البرنامج في الذاكرة مثل البيانات.
  • النظام الثنائي (Binary (Base-2) · النظام الثنائينظام عدّ يستخدم رقمين فقط هما 0 و1، وكل خانة فيه تساوي ضعف الخانة التي على يمينها. وهو النظام الذي يخزّن به الحاسوب البيانات.عرض في القاموس): نظام العد الذي تُكتب به التعليمات والبيانات داخل الحاسوب.

اختبر نفسك#

إيه الخطوات التلاتة اللي المعالج بيكررها مع كل تعليمة، وبالترتيب؟

إظهار الإجابة

جلب، ثم فك، ثم تنفيذ. المعالج بيجيب التعليمة من الذاكرة، ووحدة التحكم بتفكها علشان تعرف المطلوب، وبعدين الأجزاء المطلوبة بتنفذها.

لو المعالج محتاج يجمع رقمين، أنهي جزء جواه هو اللي بيعمل الجمع؟

إظهار الإجابة

وحدة الحساب والمنطق (ALU). دي المسؤولة عن العمليات الحسابية والمنطقية، زي الجمع والمقارنة.

المعالج بيعرف إزاي هو المفروض ينفذ أنهي تعليمة بعد اللي خلّصها؟

إظهار الإجابة

من عدّاد البرنامج (Program Counter). ده مسجّل خاص بيحتفظ بعنوان التعليمة الجاية في الذاكرة.