كيف يعمل الحاسوب
From Alrebat
مكونات الحاسب الأساسية :
- المعالجات الدقيقة.
- الفروع : مثبتة على البطاقة الأم سواء مباشرة أو عبر بطاقات الامتداد.
- اللوحة الأم.
يتحكم المعالج في جميع العمليات الأساسية للجهاز بإرسال/استقبال
- إشارات التحكم.
- عناوين الذاكرة.
- بيانات.
هذه الإشارات تمر عبر شبكة إلكترونية مطبوعة على البطاقة الأم. تعرف هذه الشبكة ب الناقلات. هدف هذه الأخيرة هو توصيل مختلف الرقاقات المثبتة على البطاقة الأم ببعضها البعض. وهي متصلة أيضا بالناقلات الأخرى مثل PCI و ISA. على امتداد الناقلة، توجد البوابات الفرعية: هذه الأخيرة عبارة عن معابر تربط مختلف الذاكرات مع الفروع دائما عن طريق الناقلة.
كل فرع مثبت يمتلك رقاقة خاصة تسمى رقاقة التحكم، تكو ن هي الوسيط بين المعالج و الهاردوير.
مثال: عندما تقوم بالضغط على زر في لوحة المفاتيح، يقوم عتاد لوحة المفاتيح بإرسال إشارات كهربائية، تقوم رقاقة التحكم الخاصة بلوحة المفاتيح بتحويل الإشارة إلى رمز من 8 بيت يمثل الزر المضغوط.
تقسم خطوط الناقلة حسب وظائفها إلى أربعة أنواع:
- خطوط لتوصيل الطاقة.
- خطوط لتوصيل إشارات التحكم: إشارات الانقطاع – إشارات المنبه.
- خطوط لتوصيل العناوين: عناوين الذاكرة أو البوابات الفرعية.
- خطوط لتوصيل البيانات.
ما يهمنا هنا هي الخطوط 3 و 4.
عندما يريد المعالج كتابة بيانات في موقع ما من الذاكرة، يقوم بإرسال عنوان الموقع على ناقل العناوين ( أي الخطوط المخصصة لنقل العناوين ) بعدها مباشرة يرسل البيانات على ناقل البيانات.
يحدد عدد الخطوط المخصصة لنقل العناوين مدى العناوين التي يمكن أن يلج إليها المعالج، هذا المدى هو ما يعرف بفضاء العنونة.
مهم جدا: فضاء العنونة ليس هو حجم الذاكرة الموجودة فعليا على الجهاز، بل هو يشكل المجال الذي يشمل كل العناوين الممكن إرسالها على ناقلة العناوين.
فمثلا، إذا تم رصد 32 خطا لنقل العناوين، و مع العلم أن كل خط يحتمل إما 1 أو 0، باستعمال الترميز الثنائي يمكننا كتابة 232 عنوانا مختلفا = 4294967296 بايت (كل موقع في الذاكرة يمثل بايتا واحدا) أي يمكن للمعالج عنونة 4 جيغابايت.
من جهة أخرى، يحدد عدد الخطوط المخصصة لنقل البيانات حجم البيانات التي يمكن للمعالج إرسالها أو استرجاعها في نفس الآن (أي بدون إعادة إرسال إشارة أخرى على ناقلة العناوين).
- 8 خطوط: بايت واحد.
- 16 خطا: 2 بايتات أو كلمة فردية Word.
- 32 خطا: كلمة مزدوجة (Double word or dword).
الذاكرة: عنصر سلبي في الحاسب لا يتدخل و لا يغير مسار الإشارات بل يكتفي يتخزينها و إرجاعها عند الطلب. من وجهة نظر الهاردوير، الذاكرة مجرد رقاقات مثبتة على البطاقة الأم وتستعمل تقنيات مختلفة للتخزين، في الحاسبات الشخصية نجد عادة:
- ذاكرة حية تتميز بقدرتها على تخزين كميات كبيرة من البيانات وسرعتها الكبيرة في الولوج إلى هذه الأخيرة، لكن البيانات تنمحي حال انقطاع التوصيل الكهربائي عن الذاكرة.
- ذاكرة ميتة: لها سعة بيانات و سرعة ولوج أقل لكنها تحتفظ بالبيانات حتى في حال وقف إمدادها بالطاقة. في الحاسبات الحديثة غالبا ما تستعمل ذاكرات من نوع فلاش للذاكرة الميتة.
من وجهة نظر المبرمج، الذاكرة هي مجموعة من الخانات المتتابعة، كل خانة بسعة بايت واحد، و تحدد بعنوان وحيد، الخانة رقم 0 تلها الخانة رقم 1 وهكذا...
في الحاسبات الشخصية عادة توضع الذاكرة الميتة في أعلى أول ميغابايت، مما يجعلها تحجب مواقع الذاكرة الحية في هذا المجال. سبب ذلك أن المعالج معد عند الانطلاق لتنفيذ التعليمة الموجودة على الموقع 0xFFF0.
كيف يتواصل :x86
هناك ثلاث سبل يتواصل بها الx86 مع باقي مكونات الحاسب
- عبر الذاكرة: بغرض قراءة/كتابة البيانات، يتم الولوج إلى الذاكرة إما عن طريق مسجلات المعالج أو عبر استعمال الولوج المباشر للذاكرة Direct Memory Access (DMA). يمكن أيضا استعمال مواقع الذاكرة للتواصل مع الفروع وذلك عن طريق التحويل المباشر لما يكتب على هذه المواقع إلى تلك الفروع، تعرف هذه التقنية ب Memory mapped I/O.
- عبر البوابات الفرعية: هذه هي الطريقة الأصلية المتبعة في الحاسبات الأصلية و تستعمل للتواصل مع رقاقات التحكم(تذكر، تلك المكونات التي تقوم بدور المترجم بين المعالج و الهاردوير). كل بوابة فرعية محددة بعدد من حرفين أو 16بيتس 16bits، مما يعني مجالا من 0 إلى 65535. كما أن كل رقاقة يمكنها استعمال أكثر من بوابة فرعية. تعرف هذه التقنية ب Port mapped I/O.
ملحوظة مهمة: عناوين البوابات الفرعية لا علاقة لها ب بعناوين الذاكرة. البوابة رقم 0x3D0 لا تعني بأية حال العنوان 0x3D0 في الذاكرة.
- عبر الانقطاعات: تستعمل لتبليغ الحاسب بوقوع حدث ما مثل ضغطة زر – تكة المنبه...
يمكن أن تأتي من عدة مصادر: الفروع، عبر تعليمة خاصة int، أو يمكن أن تنتج عن خطأ رصده المعالج أثناء القيام بعملية داخلية فيعلن ما يسمى استثناء.
كيف يخزن x86 البيانات :
عندما يطلب من المعالج تخزين كلمة(مثلا 1234) على الذاكرة فإنه يقوم بإرسال البايت الأيمن- أو البايت الأضعف- (34) متبوعا البايت الأيسر -أو البايت الأقوى-(12). ينتج عن هذا أن الكلمة المخزنة ككل في موقع ما تكون في الواقع مقلوبة، كما لو نظر إليها عبر مرآة
| المحتوى --> | ... | ... | ... | ... | 12 | 34 | ... | ... | ... | ... |
| العناوين --> | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
عكسيا، عندما يطلب من المعالج تحميلها إلى المسجل ax مثلا فإنه يسترجع 34 أولا ويضعها في أقصى اليمين متبوعة ب 12 لتوضع في أقصى اليسار لتشكل في النهاية الكلمة الأصلية 1234.
بالنسبة للمزدوجات (Double words) نفس الشيء، مثلا المزدوجة 12345678 تكون في الذاكرة على شكل 78-56-34-12
بالنسبة لك كمبرمج لا تأثير لهذه الطريقة على شفرتك ما دمت تقرأ البيانات كما كتبتها على الذاكرة. لكن في حالة ما خزنت بيانات على شكل كلمة مثلا و أردت استرجاعها بايتا ببايت عليك أن تقوم بإعادة ترتيب الحرفين في الوضع الصحيح بنفسك.
ملحوظة: التخزين المرآوي يخص البيانات التي في الذاكرة فقط وليس تلك التي في المسجلات.
