mathematician
10-07-2005, 03:31 PM
نتابع في هذه الجولة تشريح عمل المعالجات، عن طريق شرح طواقم التعليمات، ودورها في عمل المعالج.
تعرّفنا في الجزء الأول من المقالة على مكونات المعالج (راجع العدد السابق من المجلة)، وحان الوقت لنخوض في تعقيدات آلية عمله. وسنبدأ بشرح الدور المهم، الذي يلعبه طاقم التعليمات (instruction set)، ثم ننتقل إلى إلقاء نظرة فاحصة على تطور عائلة معالجات إنتل. ونشرح أيضاً، بعض المصطلحات الأخرى، التي قد تجد الإلمام بها مفيداً.
التعليمات
تعمل الكمبيوترات بناءً على أوامر متدنية المستوى (low-level commands)، تُدعى التعليمات (instructions). ونقصد بعبارة "متدنية المستوى"، أن هذه الأوامر تعمل بشكل مباشر مع المعالج، وتتصل مع أجزائه الأساسية. ويحتوي كل نوع من أنواع المعالجات، على مجموعة محددة من هذه التعليمات، التي يعمل بموجبها. وتسمّى هذه المجموعة طاقم التعليمات (instruction set).
يمكن للمبرمجين الوصول إلى تعليمات المعالج من خلال لغات البرمجة المختلفة. وتكتب زمرة التعليمات بلغة الآلة (machine language)، التي تحتل أدنى مستوى من بين جميع اللغات، وتتألف من أرقام فقط (الصفر والواحد)، ولذلك يندر استخدامها من قبل المبرمجين. وللتغلب على هذه المشكلة، يلجأ المبرمجون عادة، إما إلى اللغة التجميعية (assembly language)، التي تستخدم التعليمات ذاتها، لكنها تعطي تسميات محددة لتسهيل التعامل معها (مثل add و inc)، وإما إلى لغة عالية المستوى (high-level language, HLL)، تندرج فيها تعليمات الآلة ضمن أوامر على نطاق أوسع. ويبيّن الشكل المستويات المختلفة للغات البرمجة.
لا تستغني اللغات عالية المستوى (HLL) عن تعليمات الآلة بأي شكل، لكنها تجعل التعامل معها أسهل، نسبياً. يجب تحويل البرنامج المكتوب بلغة عالية المستوى، إلى لغة الآلة، ويتم ذلك عن طريق البرنامج المترجم (compiler) الخاص بهذه اللغة، ويقوم برنامج المترجم عادة بتحويل تعليمات البرنامج إلى لغة داخلية وسيطة أولاً، ثم إلى لغة الآلة. وتسمّى هاتان المرحلتان: الواجهة الأمامية (front end)، والواجهة الخلفية (backend) للمترجم. ويمكن لمصممي البرنامج المترجم (compiler) أن يفصلوا الأجزاء التي لا تتعلق بمعمارية منصة العمل، عن الأجزاء المتعلقة بها. ويجب في نهاية المطاف، أن تصل التعليمات إلى المعالج على هيئة أرقام، لكي يتمكّن من القيام بعمله.
تتضمن التعليمات النموذجية في طاقم تعليمات x86، التي شكّلت حجر الأساس لبيئة الكمبيوترات الشخصية لسنين طويلة، أوامر لفعاليات مختلفة، مثل التوابع الحسابية، ونقل البيانات، والتعليمات المنطقية، وتعليمات الدخل والخرج. وتتضمن التعليمات الحسابية أمر add، الذي يضيف محتويات المسجّلات (registers) المختلفة إلى بعضها البعض، وأمر inc (increment) الذي يضيف واحداً إلى القيمة الموجودة في المسجّل. وتتضمّن تعليمات نقل البيانات أمر mov الذي ينقل البيانات من مسجّل إلى مسجّل آخر، أو إلى عنوان ذاكرة، وأمر xchng (exchange) الذي يقوم بتبديل محتويات مسجّلين مختلفين بين بعضهما البعض، أو محتويات عنواني ذاكرة. وتتألف كافة البرامج من مزيج متنوع من هذه التعليمات التي "يفهمها" المعالج وينفذها.
http://www.angelfire.com/ms/shayeb/learncpu.html
تعرّفنا في الجزء الأول من المقالة على مكونات المعالج (راجع العدد السابق من المجلة)، وحان الوقت لنخوض في تعقيدات آلية عمله. وسنبدأ بشرح الدور المهم، الذي يلعبه طاقم التعليمات (instruction set)، ثم ننتقل إلى إلقاء نظرة فاحصة على تطور عائلة معالجات إنتل. ونشرح أيضاً، بعض المصطلحات الأخرى، التي قد تجد الإلمام بها مفيداً.
التعليمات
تعمل الكمبيوترات بناءً على أوامر متدنية المستوى (low-level commands)، تُدعى التعليمات (instructions). ونقصد بعبارة "متدنية المستوى"، أن هذه الأوامر تعمل بشكل مباشر مع المعالج، وتتصل مع أجزائه الأساسية. ويحتوي كل نوع من أنواع المعالجات، على مجموعة محددة من هذه التعليمات، التي يعمل بموجبها. وتسمّى هذه المجموعة طاقم التعليمات (instruction set).
يمكن للمبرمجين الوصول إلى تعليمات المعالج من خلال لغات البرمجة المختلفة. وتكتب زمرة التعليمات بلغة الآلة (machine language)، التي تحتل أدنى مستوى من بين جميع اللغات، وتتألف من أرقام فقط (الصفر والواحد)، ولذلك يندر استخدامها من قبل المبرمجين. وللتغلب على هذه المشكلة، يلجأ المبرمجون عادة، إما إلى اللغة التجميعية (assembly language)، التي تستخدم التعليمات ذاتها، لكنها تعطي تسميات محددة لتسهيل التعامل معها (مثل add و inc)، وإما إلى لغة عالية المستوى (high-level language, HLL)، تندرج فيها تعليمات الآلة ضمن أوامر على نطاق أوسع. ويبيّن الشكل المستويات المختلفة للغات البرمجة.
لا تستغني اللغات عالية المستوى (HLL) عن تعليمات الآلة بأي شكل، لكنها تجعل التعامل معها أسهل، نسبياً. يجب تحويل البرنامج المكتوب بلغة عالية المستوى، إلى لغة الآلة، ويتم ذلك عن طريق البرنامج المترجم (compiler) الخاص بهذه اللغة، ويقوم برنامج المترجم عادة بتحويل تعليمات البرنامج إلى لغة داخلية وسيطة أولاً، ثم إلى لغة الآلة. وتسمّى هاتان المرحلتان: الواجهة الأمامية (front end)، والواجهة الخلفية (backend) للمترجم. ويمكن لمصممي البرنامج المترجم (compiler) أن يفصلوا الأجزاء التي لا تتعلق بمعمارية منصة العمل، عن الأجزاء المتعلقة بها. ويجب في نهاية المطاف، أن تصل التعليمات إلى المعالج على هيئة أرقام، لكي يتمكّن من القيام بعمله.
تتضمن التعليمات النموذجية في طاقم تعليمات x86، التي شكّلت حجر الأساس لبيئة الكمبيوترات الشخصية لسنين طويلة، أوامر لفعاليات مختلفة، مثل التوابع الحسابية، ونقل البيانات، والتعليمات المنطقية، وتعليمات الدخل والخرج. وتتضمن التعليمات الحسابية أمر add، الذي يضيف محتويات المسجّلات (registers) المختلفة إلى بعضها البعض، وأمر inc (increment) الذي يضيف واحداً إلى القيمة الموجودة في المسجّل. وتتضمّن تعليمات نقل البيانات أمر mov الذي ينقل البيانات من مسجّل إلى مسجّل آخر، أو إلى عنوان ذاكرة، وأمر xchng (exchange) الذي يقوم بتبديل محتويات مسجّلين مختلفين بين بعضهما البعض، أو محتويات عنواني ذاكرة. وتتألف كافة البرامج من مزيج متنوع من هذه التعليمات التي "يفهمها" المعالج وينفذها.
http://www.angelfire.com/ms/shayeb/learncpu.html