انتقل إلى المحتوى

معالج (حوسبة)

من ويكيبيديا، الموسوعة الحرة
دوائر المعالج الدقيق بتكبير 200 ضعف

وحدة المعالجة المركزية[1] ((بالإنجليزية: Central Processing Unit)‏، وتختصر إلى CPU)، أو المُعالج [2] (بالإنجليزية: Processor)‏، هي أحدى مكونات عتاد الحاسوب التي تقوم بتفسير التعليمات ومعالجة البيانات التي تتضمنها البرامج. يُعتبر المعالج بالإضافة إلى الذاكرة الرئيسية ووحدات الإدخال والإخراج من أهم مكونات الحواسيب الدقيقة (بالإنجليزية: Microcomputers)‏ الحديثة.[3] تُعرف المعالجات التي صنعت باستخدام الدوائر المتكاملة (بالإنجليزية: Integrated circuits)‏ بالمعالجات الدقيقة.[4][5] يمثل هذا النوع من المعالجات الغالبية العظمى من المعالجات المستخدمة اليوم. يُنظر إلى وحدة المعالجة المركزية على أنها "عقل" الحاسوب.[6]

يُستخدم مصطلح "المعالج" بشكل متكرر للإشارة إلى وحدة المعالجة المركزية، وهي المعالج الرئيسي في النظام .[7][3] ومع ذلك، يمكن أن يشير المصطلح أيضًا إلى المعالج المساعد [الإنجليزية]، مثل وحدة المعالجة الرسومية (بالإنجليزية: GPU)‏،[8] أو حتى الدوائر المنطقية المصممة لمعالجة أنواع معينة من البيانات (مثل معالجات الإشارات الرقمية).

رسم بياني يوضح تزايد عدد الترانزستورات في المعالجات الدقيقة مع مرور الوقت، مما يعكس قانون مور.[9][10]

التطور التاريخي

[عدل]
المعالج موس تكنولوجي 6502 بتصميم حزمة ثنائية خطية [الإنجليزية] حيث كان يُعد تصميمًا شائعًا للغاية في السبعينيات والثمانينيات.
المعالج إنتل 80486 بـ مصفوفة إبر شبكية.

تعود جذور المعالجات الحديثة إلى الأعمال النظرية لـجون فون نيومان في الأربعينيات، والتي هدفت إلى التغلب على صعوبات إعادة برمجة الآلات الحاسبة المبكرة مثل إنياك (بالإنجليزية: ENIAC)‏، حيث كان تغيير البرنامج يتطلب إعادة توصيل الأسلاك يدويًا.[11] وصفت المعمارية التي وصفها جون فون نيومان، والتي تضمنت وحدة تحكم تنسق عمل المعالج والذاكرة والمدخلات والمخرجات، في وثيقة بعنوان "المسودة الأولى لتقرير عن إديفاك [الإنجليزية]".[12].

قبل عصر الترانزستور، كانت المعالجات تُبنى باستخدام مكونات ضخمة مثل الصمامات المفرغة (بالإنجليزية: Vacuum Tubes)‏،[13][14][3][15] أو المرحلات (بالإنجليزية: Relays)‏، كما في حاسوب زد 3 (بالإنجليزية: Z3)‏ لـكونراد سوزه عام 1941 والذي استخدم 600 مرحل لوحدة الحساب والمنطق و 1400 مرحل للذاكرة.[16] كانت هذه الأجهزة تشغل غرفًا بأكملها، تستهلك طاقة كبيرة، وتولد حرارة هائلة، وكانت عرضة للأعطال.[3][16] كان حاسوب إنياك، الذي استخدم 18000 صمام مفرغ و 1500 مرحل، مثالًا بارزًا على هذه الحقبة.[17]

شكل اختراع الترانزستور في عام 1947 نقطة تحول،[15] حيث مهد الطريق لتصغير المكونات الإلكترونية بشكل كبير. في الخمسينيات، حلت الترانزستورات محل الصمامات المفرغة غير الموثوقة، مما قلل من استهلاك الطاقة وحجم الحواسيب. في البداية، تم بناء المعالجات من ترانزستورات فردية،[18] ولكن مع تطور تقنية الدوائر المتكاملة (بالإنجليزية: Integrated circuit)‏، تم دمج المزيد والمزيد من وظائف الترانزستور على رقائق صغيرة.

كانت المعالجات الأولى تُصمم خصيصًا لنوع معين من أجهزة الكمبيوتر، وهي عملية مكلفة. أدى السعي نحو التكلفة المنخفضة والإنتاج الضخم إلى تطوير معالجات قياسية يمكن استخدامها في تطبيقات متعددة. بدأ هذا الاتجاه في الحواسيب المركزية (بالإنجليزية: Mainframes)‏ والحواسيب الصغيرة (بالإنجليزية: Minicomputers)‏ القائمة على الترانزستورات المنفصلة، وتسارع بشكل كبير مع ظهور الدوائر المتكاملة.

شهدت أوائل السبعينيات ظهور المعالج الدقيق (بالإنجليزية: Microprocessor)‏، الذي يدمج جميع وظائف المعالج في رقاقة واحدة. كان إنتل 4004 (عام 1971) أول معالج دقيق، تلاه إنتل 8080 (عام 1974) الذي أصبح شائع الاستخدام.[19] أدى هذا الابتكار إلى استبدال شبه كامل للطرق السابقة لبناء وحدات المعالجة المركزية.[19] أدى التصغير والتوحيد القياسي إلى زيادة كبيرة في سرعات المعالجات، حيث ارتفعت ترددات التشغيل من بضعة ميجا هيرتز[مل 1] إلى عدة جيجا هرتز.[مل 2]

استمر هذا التطور بدمج مكونات إضافية داخل المعالج الرئيسي، مثل المعالج المساعد الرياضي والذي يدعي وحدة الفاصلة العائمة (بالإنجليزية: Floating Point Unit)‏ او اختصارا بـ (بالإنجليزية: FPU)‏ في أواخر الثمانينيات، أو وحدة المعالجة الرسومية (بالإنجليزية: GPU)‏ في أواخر العقد الأول من القرن الحادي والعشرين أو مثل وحدة تسريع المعالجة (بالإنجليزية: APU)‏.[20]

البنية الأساسية ووحدات التشغيل

[عدل]
رسم تخطيطي مبسط يوضح المكونات الوظيفية الأساسية للمعالج.

يتكون لب أو نوي المعالج (بالإنجليزية: Processor Core)‏ من عدة مكونات أساسية تعمل معًا لتنفيذ التعليمات، حيث يعتبر أهمها وحدة التحكم أو الموجه (بالإنجليزية: Sequencer Or Control Unit)‏، والذي يدير وينسق عمليات المعالج. يقوم أيضا بفك تشفير التعليمات الواردة من الذاكرة، وتحديد السجلات المطلوبة، وتنشيط الدوائر اللازمة لتنفيذ التعليمات.[21] غالبًا ما يحتوي أيضًا على سجل التعليمة (بالإنجليزية: Instruction Register)‏ لتخزين التعليمة الحالية، وعداد البرنامج (بالإنجليزية: Program Counter)‏ لتتبع عنوان التعليمة التالية.[21][22] كما أنه يتولى إدارة المقاطعات (بالإنجليزية: Interrupt)‏.[21]

يحتوي أيضًا لب أو نوي المعالج على وحدة الحساب والمنطق (بالإنجليزية: Arithmetic Logic Unit - ALU)‏، وهي الوحدة المسؤولة عن إجراء العمليات الحسابية، مثل الجمع والطرح والعمليات المنطقية، مثل بوابة العطف (بالإنجليزية: AND gate)‏، بوابة الفصل (بالإنجليزية: OR gate)‏، العاكس (بالإنجليزية: NOT gate)‏.[23][24]

المسجلات (بالإنجليزية: Registers)‏، وهي إحدى اهم مكونات نوي المعالج، هي وحدات ذاكرة صغيرة وعالية السرعة داخل المعالج تُستخدم لتخزين البيانات والتعليمات وعناوين الذاكرة مؤقتًا أثناء المعالجة، حيث انه يوجد مسجلات اساسية مدمجة بالنوي، مثل المراكم (بالإنجليزية: Accumulator)‏، والذي يقوم بتخزين نتائج العمليات الحسابية والمنطقية، وعداد البرنامج (بالإنجليزية: Program Counter)‏، والذي يحتوي على عنوان الذاكرة للتعليمة التالية المراد تنفيذها. وسجل التعليمة (بالإنجليزية: instruction register)‏، والذي يخزن التعليمة التي يتم تنفيذها حاليًا. ومسجل الحالة [الإنجليزية] (بالإنجليزية: Status register)‏ أو سجل الأعلام (بالإنجليزية: Flags Register)‏، والذي يحتوي على بتات أو أعلام (بالإنجليزية: flag)‏، حيث تُشير إلى حالة نتائج العمليات الأخيرة، مثل هل النتيجة صفر، سالبة، وجود حمل أو ترحيل.

    • مؤشر المكدس (Stack Pointer): يشير إلى قمة منطقة الذاكرة المسماة المكدس (Stack)، والتي تستخدم غالبًا لإدارة استدعاءات الدوال وتخزين المتغيرات المحلية [المقالة_2: 13][المقالة_3: 4.3].
    • السجلات العامة (General-Purpose Registers): تستخدم لتخزين البيانات التي سيتم استخدامها قريباً، مما يقلل الحاجة للوصول المتكرر إلى الذاكرة الرئيسية الأبطأ [المقالة_2: 13].
  • خطوط نقل البيانات (الباصات - Buses): هي مجموعة من الأسلاك أو المسارات الكهربائية التي تربط بين مكونات المعالج المختلفة ومع المكونات الخارجية مثل الذاكرة الرئيسية [المقالة_3: 4.4]:
    • ناقل البيانات (Data Bus): ينقل البيانات بين المعالج والذاكرة أو وحدات الإدخال/الإخراج [المقالة_2: buses][المقالة_3: 4.4].
    • ناقل العناوين (Address Bus): يحمل عناوين الذاكرة التي يريد المعالج الوصول إليها للقراءة أو الكتابة [المقالة_2: buses][المقالة_3: 4.4].
    • ناقل التحكم (Control Bus): يحمل إشارات التحكم التي تدير تدفق البيانات والعمليات (مثل إشارات القراءة/الكتابة، طلبات المقاطعة) [المقالة_2: buses][المقالة_3: 4.4].
  • إشارة الساعة (Clock Signal): معظم المعالجات هي دوائر منطقية تتابعية (sequential logic) وتعمل بشكل متزامن [المقالة_2: e]، أي أنها تتبع إيقاع إشارة الساعة. وهي إشارة كهربائية دورية (غالبًا موجة مربعة) تحدد وتيرة تنفيذ العمليات [المقالة_2: clock][المقالة_3: 12.2]. يجب أن تكون فترة الساعة أطول من أقصى زمن انتشار للإشارة داخل المعالج لضمان التشغيل الصحيح [المقالة_2: clock]. زيادة تردد الساعة تزيد من سرعة المعالج ولكنها تزيد أيضًا من استهلاك الطاقة وتوليد الحرارة، وتطرح تحديات في الحفاظ على تزامن الإشارة عبر الرقاقة [المقالة_2: clock].

وحدات متقدمة

[عدل]

تحتوي المعالجات الحديثة غالبًا على وحدات إضافية لتعزيز الأداء والوظائف:


آلية عمل المعالج

[عدل]

يتبع عمل المعالج دورة أساسية لتنفيذ كل تعليمة في البرنامج، تُعرف بدورة الجلب-فك التشفير-التنفيذ (Fetch-Decode-Execute Cycle)، وغالبًا ما تتضمن خطوة رابعة هي كتابة النتيجة (Writeback) [المقالة_2: operations].

  1. الجلب (Fetch): تقوم وحدة التحكم بجلب (قراءة) التعليمة التالية من الذاكرة (عادةً من الذاكرة المخبئية L1). يتم تحديد عنوان التعليمة بواسطة عداد البرنامج (PC) [المقالة_2: operations][المقالة_3: 5]. بعد جلب التعليمة، يتم عادةً زيادة قيمة عداد البرنامج ليشير إلى التعليمة التالية [المقالة_2: operations].
  1. فك التشفير (Decode): تقوم وحدة التحكم بتحليل التعليمة التي تم جلبها لتحديد العملية المطلوب تنفيذها (مثل الجمع، النقل، القفز) والمعاملات (Operands) التي ستُستخدم في العملية (قد تكون قيمًا فورية، أو عناوين سجلات، أو عناوين ذاكرة) [المقالة_2: operations][المقالة_3: 5]. يتم تحديد طريقة تفسير قيمة التعليمة بواسطة مجموعة تعليمات المعالج (ISA) [المقالة_2: c]. في بعض المعالجات، يتم استخدام برنامج صغير داخلي يسمى "الرمز الميكروي (Microcode)" لترجمة التعليمات المعقدة إلى عمليات أبسط [المقالة_2: decode].
  1. جلب المعاملات (Fetch Operands): إذا كانت التعليمة تتطلب بيانات من الذاكرة أو السجلات، يتم جلب هذه البيانات (المعاملات) في هذه المرحلة [المقالة_3: 5].
  1. التنفيذ (Execute): يتم تنفيذ العملية المحددة بواسطة التعليمة. قد يشمل ذلك إرسال المعاملات إلى وحدة الحساب والمنطق (ALU) لإجراء عملية حسابية أو منطقية، أو تغيير قيمة عداد البرنامج (في حالة تعليمات القفز أو التفرع)، أو الوصول إلى الذاكرة [المقالة_2: operations][المقالة_3: 5]. غالبًا ما يتم تحديث سجل الحالة (الأعلام) بناءً على نتيجة التنفيذ [المقالة_2: writeback][المقالة_3: 5].
  1. كتابة النتيجة (Writeback): يتم كتابة نتيجة العملية (إذا كانت هناك نتيجة) إلى سجل أو موقع في الذاكرة [المقالة_2: operations].

بعد اكتمال هذه الدورة، يتكرر العملية للتعليمة التالية التي يشير إليها عداد البرنامج [المقالة_2: writeback]. في المعالجات الحديثة، غالبًا ما تتداخل هذه المراحل باستخدام تقنية خط الأنابيب (Pipelining) وتنفيذ التعليمات خارج الترتيب (Out-of-order execution) لتحقيق أداء أعلى [المقالة_2: writeback][المقالة_3: 10].

معالجة التعليمات والمقاطعات

[عدل]
  • التعليمات (Instructions): هي الأوامر الأساسية التي يفهمها المعالج، وتكون مخزنة في الذاكرة كسلسلة من الأرقام الثنائية (لغة الآلة) [المقالة_2: operations]. لتسهيل البرمجة، تُستخدم لغة تجميع (Assembly) ذات الرموز (Mnemonics) القريبة من لغة الآلة، أو لغة برمجة عالية المستوى (مثل C++، جافا، بايثون) التي يتم ترجمتها (Compile) أو تفسيرها (Interpret) إلى لغة الآلة [المقالة_3: 9.1][المقالة_3: 9.2].
  • المقاطعات (Interrupts): هي إشارات يمكن أن ترسلها الأجهزة الخارجية (Hardware) أو البرامج (Software) لمقاطعة التنفيذ الحالي للمعالج للتعامل مع حدث عاجل (مثل وصول بيانات من الشبكة أو ضغطة مفتاح). يجب على المعالج حفظ حالته الحالية، تنفيذ روتين خدمة المقاطعة، ثم استعادة حالته ومتابعة البرنامج الأصلي [المقالة_3: 10].

تحدد أنماط العنونة كيفية تحديد المعاملات (البيانات) التي تحتاجها التعليمة [المقالة_3: 11]. تشمل الأنماط الشائعة:

  • العنونة الفورية (Immediate): المعامل هو جزء من التعليمة نفسها [المقالة_2: decode][المقالة_3: 11.2].
  • العنونة المباشرة (Direct): التعليمة تحتوي على العنوان المباشر للمعامل في الذاكرة [المقالة_3: 11.2]
  • العنونة بالسجل (Register): المعامل موجود في أحد سجلات المعالج. قد يكون السجل محددًا بشكل صريح في التعليمة أو ضمنيًا [المقالة_3: 11.1].
  • العنونة غير المباشرة بالسجل (Register Indirect): التعليمة تشير إلى سجل يحتوي على عنوان المعامل في الذاكرة [المقالة_3: 11.2].
  • العنونة المفهرسة (Indexed): يتم حساب عنوان المعامل بجمع محتوى سجل (الفهرس) مع عنوان أساسي (قد يكون في التعليمة أو سجل آخر) [المقالة_3: 11.2].
  • العنونة النسبية لعداد البرنامج (PC-Relative): يتم حساب العنوان بجمع إزاحة (Offset) موجودة في التعليمة مع القيمة الحالية لعداد البرنامج (PC). تُستخدم غالبًا في تعليمات القفز والتفرع [المقالة_3: 11.2].
  • العنونة غير المباشرة (Indirect): التعليمة تحتوي على عنوان يشير إلى موقع في الذاكرة، وهذا الموقع بدوره يحتوي على العنوان الفعلي للمعامل (تتطلب وصولًا إضافيًا للذاكرة) [المقالة_3: 11.3].

تصميم المعالج وتصنيفاته

[عدل]

المعماريات الأساسية (فون نيومان وهارفارد)

[عدل]
رسم توضيحي لبنية فون نيومان يظهر ناقلًا مشتركًا للبيانات والتعليمات.
رسم توضيحي لبنية هارفارد يظهر نواقل منفصلة للبيانات والتعليمات.
  • بنية فون نيومان (Von Neumann Architecture): تتميز بوجود مساحة ذاكرة واحدة وناقل بيانات واحد لكل من التعليمات والبيانات [المقالة_1: CPU section][المقالة_3: 6]. هذا يبسط التصميم ويسمح بمعاملة الكود كبيانات (مفيد للمترجمات والمصححات)، ولكنه يخلق "عنق زجاجة فون نيومان" لأن التعليمات والبيانات تتنافس على نفس الناقل [المقالة_3: 6].
  • بنية هارفارد (Harvard Architecture): تستخدم مساحات ذاكرة منفصلة ونواقل منفصلة للتعليمات والبيانات [المقالة_3: 6]. هذا يسمح بجلب التعليمة التالية والوصول إلى البيانات في نفس الوقت، مما يزيد من الأداء المحتمل [المقالة_3: 6]. تاريخياً، كانت مفيدة لفصل كود البرنامج (في ROM) عن البيانات (في RAM) [المقالة_3: 6].
  • المعالجات الحديثة: غالبًا ما تكون بنية هارفارد المعدلة [المقالة_3: 11]. فهي تظهر للمبرمج كمعمارية فون نيومان (مساحة عنوان موحدة)، ولكنها داخليًا تستخدم نواقل وذاكرة مخبئية منفصلة للتعليمات والبيانات (خاصة في مستوى L1) لتحقيق أداء عالٍ [المقالة_3: 6]. يتم استخدام آليات معقدة لضمان تماسك البيانات بين ذاكرات التخزين المؤقت المختلفة [المقالة_3: 4.5][المقالة_3: 11]. كما يتم استخدام تقنيات حماية الذاكرة لمنع تنفيذ البيانات (مثل NX bit) أو الكتابة فوق كود البرنامج [المقالة_3: 6].

مجموعة التعليمات (ISA - Instruction Set Architecture) هي مجموعة الأوامر التي يستطيع المعالج فهمها وتنفيذها. هناك فلسفتان رئيسيتان لتصميم مجموعات التعليمات:

  • CISC (Complex Instruction Set Computer): تتميز بمجموعة كبيرة من التعليمات، بعضها معقد جدًا ويمكن أن ينفذ عمليات متعددة الخطوات في تعليمة واحدة [المقالة_2: cisc_risc][المقالة_3: 7]. الهدف هو تقريب لغة الآلة من لغات البرمجة عالية المستوى وتقليل عدد التعليمات اللازمة لكتابة برنامج. ومع ذلك، فإن تعقيد هذه التعليمات يجعل تصميم المعالج وتنفيذ تقنيات مثل خط الأنابيب أمرًا صعبًا [المقالة_3: 7]. معمارية x86 هي المثال الأشهر.
  • RISC (Reduced Instruction Set Computer): تركز على مجموعة صغيرة ومبسطة من التعليمات، كل منها يؤدي مهمة بسيطة ويمكن تنفيذه بسرعة (غالبًا في دورة ساعة واحدة) [المقالة_2: cisc_risc][المقالة_3: 7]. هذا يبسط تصميم المعالج ويتيح تحسينات مثل خطوط الأنابيب العميقة والترددات العالية. يتطلب الأمر كتابة تعليمات أكثر لتحقيق نفس المهمة المعقدة، مما يزيد العبء على المترجم (Compiler) [المقالة_3: 7]. أمثلة تشمل ARM، MIPS، PowerPC، RISC-V.
  • VLIW (Very Long Instruction Word): تجمع عدة تعليمات بسيطة في "كلمة تعليمات" طويلة جدًا، يتم تحديدها بواسطة المترجم ليتم تنفيذها بالتوازي على وحدات وظيفية مختلفة داخل المعالج [المقالة_2: cisc_risc][المقالة_3: 7]. هذا ينقل جزءًا من تعقيد إدارة التوازي من العتاد إلى البرمجيات (المترجم) [المقالة_3: 7].

تجدر الإشارة إلى أن المعالجات الحديثة، حتى تلك التي تتبع معمارية CISC مثل x86، غالبًا ما تترجم داخليًا التعليمات المعقدة إلى سلسلة من العمليات الدقيقة (Micro-operations أو µops) الشبيهة بتعليمات RISC، والتي يتم تنفيذها بعد ذلك بواسطة نواة المعالج الشبيهة بـ RISC [المقالة_3: 7].

تمثيل الأعداد وعرض الكلمة (Number Representation & Word Width)

[عدل]
  • التمثيل: تمثل المعالجات الحديثة الأرقام باستخدام النظام الثنائي (Base 2)، حيث يتم تمثيل كل رقم (بت - bit) بحالة فيزيائية مثل جهد كهربائي مرتفع أو منخفض [المقالة_2: numbers].
  • عرض الكلمة (Word Width / Size): يشير إلى عدد البتات التي يمكن للمعالج معالجتها كوحدة واحدة في سجلاته ووحدة الحساب والمنطق الخاصة به [المقالة_2: numbers][المقالة_3: 12.1]. يؤثر عرض الكلمة على حجم الأعداد التي يمكن معالجتها مباشرة ودقة العمليات الحسابية. كما يؤثر عرض ناقل العناوين على كمية الذاكرة التي يمكن للمعالج الوصول إليها مباشرة (على سبيل المثال، معالج 32-بت) يمكنه عنونة 2^32 بايت = 4 جيجابايت من الذاكرة بشكل مباشر) [المقالة_2: numbers]. عرض ناقل البيانات يحدد كمية البيانات التي يمكن نقلها من وإلى الذاكرة في المرة الواحدة [المقالة_3: 12.1]. تتراوح عرض الكلمات الشائعة حاليًا من 8-بت في المتحكمات الدقيقة البسيطة إلى 32 بت و 64-بت في أجهزة الكمبيوتر الشخصية والخوادم، وحتى 128 بت في بعض الوحدات المتخصصة (مثل FPU أو وحدات المتجهات) [المقالة_2: numbers].

تقنيات زيادة الأداء

[عدل]

لمواجهة الطلب المتزايد على الأداء، تم تطوير العديد من التقنيات لزيادة سرعة وكفاءة المعالجات، والتي تندرج غالبًا تحت مفهوم التوازي (Parallelism).

ملف:Pipeline, 5 stages.svg
رسم تخطيطي لخط أنابيب بسيط من 5 مراحل. تسمح هذه التقنية ببدء تعليمة جديدة في كل دورة ساعة في الحالة المثالية [المقالة_2: pipeline diagram].

تهدف هذه التقنيات إلى تنفيذ أكثر من تعليمة واحدة في نفس الوقت أو زيادة معدل تنفيذ التعليمات داخل نواة معالج واحدة [المقالة_2: ilp_tlp].

  • خط الأنابيب (Pipelining): هي التقنية الأساسية لـ ILP. تقسم عملية تنفيذ التعليمة (جلب، فك تشفير، تنفيذ، كتابة) إلى مراحل منفصلة تعمل عليها أجزاء مختلفة من المعالج بشكل متزامن، مثل خط التجميع. يسمح هذا ببدء تنفيذ تعليمة جديدة في كل دورة ساعة (في الحالة المثالية)، حتى لو كانت كل تعليمة تستغرق عدة دورات لإكمالها [المقالة_2: pipeline].
  • المعمارية فائقة القياس (Superscalar Architecture): تتضمن وجود وحدات تنفيذ متعددة (مثل وحدات ALU أو FPU متعددة) داخل نواة المعالج [المقالة_2: 19]. يمكن للمعالج جلب وفك تشفير وإرسال (dispatch) تعليمات متعددة في كل دورة ساعة إلى وحدات التنفيذ هذه، بشرط عدم وجود تبعيات بينها [المقالة_2: superscalar].
  • التنفيذ خارج الترتيب (Out-of-Order Execution - OoOE): تسمح هذه التقنية للمعالج بتغيير ترتيب تنفيذ التعليمات عن الترتيب الأصلي في البرنامج. إذا كانت تعليمة ما متوقفة، يمكن للمعالج تنفيذ تعليمات لاحقة لا تعتمد عليها، ثم يعيد ترتيب النتائج لاحقًا لضمان صحة البرنامج [المقالة_3: 5][المقالة_3: 10].
  • التنفيذ التكهني (Speculative Execution): غالبًا ما تستخدم مع التنبؤ بالتفرع. يقوم المعالج بتخمين المسار الذي سيسلكه البرنامج عند تفرع شرطي ويبدأ في تنفيذ التعليمات في ذلك المسار "تكهنيًا" قبل التأكد من صحة التخمين. إذا كان التخمين صحيحًا، يتم توفير الوقت؛ وإذا كان خاطئًا، يتم التخلص من النتائج التكهنية والبدء في تنفيذ المسار الصحيح [المقالة_2: superscalar].

تهدف هذه التقنيات إلى تنفيذ خيوط معالجة (Threads) متعددة بشكل متزامن، حيث يمثل كل خيط سلسلة مستقلة من التعليمات (قد تكون جزءًا من نفس البرنامج أو برامج مختلفة) [المقالة_2: ilp_tlp].

  • خيوط المعالجة المتزامنة (Simultaneous Multithreading - SMT): تسمح لنواة معالج واحدة (بمعمارية فائقة القياس) بتنفيذ تعليمات من خيوط معالجة متعددة في نفس دورة الساعة، باستخدام وحدات التنفيذ المتاحة بشكل أكثر كفاءة [المقالة_2: tlp]. بالنسبة لنظام التشغيل، تظهر كل نواة فيزيائية تدعم SMT كأنها نواتان (أو أكثر) منطقيتان. مثال شهير هو تقنية Hyper-Threading من إنتل [المقالة_3: 4.1].
  • المعالجات متعددة النوى (Multi-core Processors): تحتوي هذه المعالجات على نواتين أو أكثر من نوى المعالجة المستقلة (كل نواة لها وحدة تحكم و ALU خاصة بها) على نفس الرقاقة [المقالة_2: multicore][المقالة_3: 4.1]. يمكن لكل نواة تنفيذ خيط معالجة مختلف بشكل مستقل وبالتوازي مع النوى الأخرى. تتشارك النوى عادةً في بعض الموارد مثل الذاكرة المخبئية من المستوى الأعلى (L3) والوصول إلى الذاكرة الرئيسية [المقالة_3: 4.5].
  • المعالجة المتعددة المتماثلة (Symmetric Multiprocessing - SMP): يشير إلى نظام كمبيوتر يحتوي على معالجين فيزيائيين أو أكثر (كل منهم قد يكون متعدد النوى)، يتشاركون جميعًا في نفس الذاكرة الرئيسية ويديرهم نسخة واحدة من نظام التشغيل [المقالة_2: tlp].
  • الوصول غير الموحد للذاكرة (Non-Uniform Memory Access - NUMA): بنية للأنظمة متعددة المعالجات حيث يكون لكل معالج (أو مجموعة معالجات) ذاكرة محلية خاصة به، بالإضافة إلى القدرة على الوصول إلى ذاكرة المعالجات الأخرى (ولكن بزمن وصول أطول). تُستخدم في الأنظمة الكبيرة جدًا لتحسين قابلية التوسع [المقالة_2: tlp].

أنواع المعالجات

[عدل]

بالإضافة إلى وحدة المعالجة المركزية (CPU) التقليدية المصممة للمهام العامة [المقالة_1: types_cpu]، توجد أنواع أخرى من المعالجات المتخصصة في مهام معينة:

قياس الأداء وقانون مور

[عدل]

قالب:المقالة الرئيسية يُعد قياس أداء المعالج أمرًا معقدًا. بينما يُستخدم تردد الساعة (Clock Speed) (يقاس بالميغاهرتز MHz أو الجيغاهرتز GHz) [المقالة_2: b][المقالة_3: 12.2] كمؤشر شائع، إلا أنه لا يعكس الصورة الكاملة، حيث تختلف كفاءة المعالجات في تنفيذ التعليمات لكل دورة ساعة (IPC) بناءً على بنيتها المعمارية. مقاييس أخرى مثل MIPS أو FLOPS (عملية فاصلة عائمة في الثانية) [المقالة_2: speed] قد تكون مفيدة، لكن برامج قياس الأداء (Benchmarks) التي تحاكي أعباء العمل الواقعية تعتبر الطريقة الأكثر موثوقية لمقارنة أداء المعالجات المختلفة [المقالة_2: speed].

لعدة عقود، كان تطور أداء المعالجات يتبع بشكل وثيق قانون مور (Moore's Law)، وهي ملاحظة أدلى بها غوردون مور في عام 1965 [المقالة_2: 7] تتوقع أن عدد الترانزستورات في الدوائر المتكاملة (وبالتالي أداء المعالجات) يتضاعف تقريبًا كل عامين [المقالة_1: 16][المقالة_1: 17][المقالة_2: 8]. وقد أدى هذا التقدم المذهل إلى زيادة هائلة في قوة الحوسبة، حيث انتقلت الحواسيب الفائقة من حاجز البيتافلوبس (petaFLOPS) (1015 عملية في الثانية) [المقالة_2: 9] (مثل IBM Roadrunner وCray Jaguar في 2008) إلى الإكسافلوبس (exaFLOPS) (1018 عملية في الثانية) (مثل Frontier في 2022) [المقالة_2: 11].

ومع ذلك، في السنوات الأخيرة، واجه قانون مور تحديات متزايدة بسبب القيود الفيزيائية لتقنية تصنيع السيليكون [المقالة_2: history]. تصبح مشاكل مثل الهجرة الكهربائية (Electromigration) وتيارات التسرب (Leakage Currents) أكثر أهمية مع استمرار تصغير الترانزستورات [المقالة_2: history]. أدى هذا إلى تباطؤ في وتيرة زيادة ترددات الساعة والتركيز بشكل أكبر على تحسينات البنية المعمارية، وزيادة عدد النوى، وتطوير مسرعات متخصصة [المقالة_2: 11].

المواد الجديدة والاتجاهات المستقبلية

[عدل]

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

  • المواد البديلة للسيليكون:
  • حوسبة كمومية: كما ذكر سابقًا، تستخدم الكيوبتات لإجراء أنواع معينة من الحسابات بشكل أسرع بكثير من الحواسيب الكلاسيكية [المقالة_1: 14][المقالة_1: 15].
  • حوسبة ضوئية: استخدام الضوء بدلاً من الإلكترونات للمعالجة والاتصال داخل الرقاقة [المقالة_1: 20][المقالة_1: 21].
  • حوسبة غير متجانسة: دمج أنواع مختلفة من النوى والمعالجات المتخصصة (CPU, GPU, NPU, DSP) على نفس الرقاقة (System-on-a-Chip - SoC) لتحسين الأداء والكفاءة لمجموعة واسعة من المهام.
  • التغليف المتقدم: تقنيات مثل تكديس الرقائق (Chip Stacking) لدمج الذاكرة والمعالجات بشكل أقرب لتحسين عرض النطاق الترددي وتقليل زمن الوصول [المقالة_2: multicore].

مجالات التطبيق

[عدل]

تُستخدم المعالجات في مجموعة واسعة جدًا من التطبيقات:

انظر أيضًا

[عدل]

المراجع

[عدل]
  1. ^ "عرض مصطلح معلوماتية | Syrian Computer Society". scs.org.sy. اطلع عليه بتاريخ 2025-03-30.
  2. ^ "ARABTERM Technical Dictionary - search". www.arabterm.org. اطلع عليه بتاريخ 2025-03-30. {{استشهاد ويب}}: no-break space character في |عنوان= في مكان 30 (مساعدة)
  3. ^ ا ب ج د (بالإنجليزية) Robert Garner et Frederick (Rick) Dill, « The Legendary IBM 1401 Data Processing System », في IEEE Solid-State Circuits Magazine, vol. 2, no 1, Winter 2010, ص.  28–39 [النص الكامل, lien DOI] 
  4. ^ "Reading: The Central Processing Unit | Introduction to Computer Applications and Concepts". courses.lumenlearning.com. مؤرشف من الأصل في 2022-04-07. اطلع عليه بتاريخ 2022-01-28.
  5. ^ "The Silicon Engine". مؤرشف من الأصل في 2025-03-05.
  6. ^ Dieter Sautter, Hans Weinerth, [[1]، صفحة. 825, في كتب جوجل Lexikon Elektronik Und Mikroelektronik] (بالألمانية), Springer, pp. 825, ISBN:978-3-642-58006-2 {{استشهاد}}: تحقق من قيمة |URL= (help)
  7. ^ "Oxford English Dictionary". Lexico. مؤرشف من الأصل في 2020-03-25. اطلع عليه بتاريخ 2020-03-25.
  8. ^ Sakdhnagool، Putt (4 سبتمبر 2018). "Comparative analysis of coprocessors". Concurrency and Computation: Practice and Experience. ج. 31 ع. 1. DOI:10.1002/cpe.4756. S2CID:54473111.
  9. ^ "Moore's law: computer science". Britannica.com (بالإنجليزية). Archived from the original on 2025-03-05. Retrieved 2022-01-28.
  10. ^ "Moore's Law". www.umsl.edu. مؤرشف من الأصل في 2025-03-09. اطلع عليه بتاريخ 2022-01-28.
  11. ^ "Le modèle d'architecture de von Neumann". interstices.info. اطلع عليه بتاريخ 2018-10-24.
  12. ^ John, Von Neuman (1945). First Draft of a Report on the EDVAC (بالإنجليزية). Moore School of Electrical Engineering University of Pennsylvania. pp. 47lire en ligne=https://www.researchgate.net/publication/312599265_Introduction_to_The_First_Draft_of_a_Report_on_the_EDVAC_Update_January_2017. بي دي إف
  13. ^ Garner، Robert؛ Dill، Frederick (Rick) (Winter 2010). "The Legendary IBM 1401 Data Processing System" (PDF). IEEE Solid-State Circuits Magazine. ج. 2 ع. 1: 28–39. DOI:10.1109/MSSC.2009.935295. S2CID:31608817. مؤرشف من الأصل (PDF) في 2025-01-22.
  14. ^ "IBM100 - The IBM 700 Series". www-03.ibm.com (بالإنجليزية الأمريكية). 7 Mar 2012. Archived from the original on 2012-04-03. Retrieved 2022-01-28.
  15. ^ ا ب "IBM100 - The IBM 700 Series". اطلع عليه بتاريخ 07 novembre 2024. {{استشهاد ويب}}: تحقق من التاريخ في: |تاريخ الوصول= (مساعدة)
  16. ^ ا ب Konrad Zuse, Der Computer – Mein Lebenswerk (بالألمانية) (5., unveränd. ed.), Berlin Heidelberg: Springer-Verlag, pp. 55, ISBN:978-3-642-12095-4
  17. ^ Wilfried de Beauclair, Rechnen mit Maschinen  : Eine Bildgeschichte der Rechentechnik (بالألمانية) (2 ed.), Berlin Heidelberg New York: Springer, pp. 111–113, ISBN:3-540-24179-5 {{استشهاد}}: line feed character في |title= في مكان 23 (help)
  18. ^ "Megaprocessor". www.megaprocessor.com. اطلع عليه بتاريخ 2022-01-28.
  19. ^ ا ب Captain Tech (2023). "L'histoire fascinante des microprocesseurs : du premier circuit intégré aux puces modernes". اطلع عليه بتاريخ novembre 2024. {{استشهاد ويب}}: تحقق من التاريخ في: |تاريخ الوصول= (مساعدة)
  20. ^ William Van Winkle (13 أغسطس 2012). "AMD Fusion: How It Started, Where It's Going, And What It Means". مؤرشف من الأصل في 2024-11-02. اطلع عليه بتاريخ 2013-12-20.
  21. ^ ا ب ج "Quels sont les composants d'un PC ?". BuildMyPc. اطلع عليه بتاريخ 2024-07-23.
  22. ^ Peter Rechenberg, Informatik-Handbuch (بالألمانية), Hanser Verlag, pp. 337, ISBN:978-3-446-40185-3
  23. ^ Dieter Sautter, Hans Weinerth, [[2]، صفحة. 825, في كتب جوجل Lexikon Elektronik Und Mikroelektronik] (بالألمانية), Springer, pp. 825, ISBN:978-3-642-58006-2 {{استشهاد}}: تحقق من قيمة |URL= (help)
  24. ^ Peter Fischer, Peter Hofer, [[3]، صفحة. 710, في كتب جوجل Lexikon Der Informatik] (بالألمانية), Springer, pp. 710, ISBN:978-3-642-15126-2 {{استشهاد}}: تحقق من قيمة |URL= (help)

ملحوظات

[عدل]
  1. ^ 2.5 ميجا هيرتز لـزلوغ زد 80 في 1976
    4.77 ميجا هيرتز للمعالج إنتل 8088 بأول جهاز كمبيوتر شخصي من إنتاج شركة IBM في عام 1981
  2. ^ 4 جيجاهرتز لمعالج إنتل كور آي 7 6700K في عام 2015