حول تشغيل جهاز كمبيوتر باستخدام مثال Windows 10 ولوحة المفاتيح للجزء 2

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


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

تحت حركة القطط.

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


إن "أدمغة" لوحة المفاتيح التي يمكنها تحديد ضغط المفاتيح هي متحكم دقيق ، وهو في الأساس كمبيوتر صغير به برنامج يقوم بفحص كل مفتاح عن طريق تطبيق الجهد عليه وإذا تم تمريره ، يتم الضغط على المفتاح. تحتوي أرجل وحدة التحكم الدقيقة على أسماء خاصة بها ويمكن الوصول إليها في التعليمات البرمجية ، ويتم استخدامها للتواصل مع العالم الخارجي. يمكن للأرجل التحكم في تشغيل وحدة التحكم الدقيقة ، أو الإبلاغ عن حالة الشريحة أو تقديمها لقراءة / نقل البيانات.
يمكن كتابة البرنامج (البرنامج الثابت ) في C أو المجمع ، ويتم تحميله إلى وحدة التحكم الدقيقة من خلال المبرمج . إنه جهاز مزود بموصل لتثبيت متحكم ويمكن توصيله بجهاز كمبيوتر عبر USB ، حيث يتم تشغيل برنامج خاص. إليك ما يبدو عليه المبرمج في الحياة الواقعية:
من خلال البرنامج ، يمكن ضبط كل ساق أو قياس الجهد. الخوارزمية للعثور على المفتاح المضغوط هي تطبيق الجهد على إحدى الساقين وقياسه على الأخرى ، وإذا تم الضغط على المفتاح ، فستكون المحطة الثانية بنفس فولت المدخلات. لذلك في حلقة لا نهائية يتم فحص جميع المفاتيح. كقاعدة عامة ، تحتوي لوحة المفاتيح على 80-110 أزرارًا ، وتكون وحدة تحكم الاتصال (الدبابيس) أصغر كثيرًا. لذلك ، يستخدمون نهجًا مثل "مصفوفة لوحة المفاتيح" - يتم توزيع جميع المفاتيح في أعمدة وصفوف ، ويتم تقليل الخوارزمية للعثور على عمود يتقاطع مع الصف الذي يطبق عليه البرنامج الجهد. يتم تمييز مراسلات العمود / الصف مع جهات الاتصال هنا.


في الواقع ، قد تبدو المصفوفة هكذا. على اليسار صناعي وعلى اليمين مصنوع بالمنزل.


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

for (int i = 0; i < COLSC; i++) {
 	SetPower(columns[i], 3.0 f);
  	for (int j = 0; j < ROWSC; j++) {
    		float power = GetPower(rows[j]);
    		if (power >= 3.0f - THRESHOLD) {
      			BYTE key = keys[i, j];
      			SendKey(key);
    		}
  	}
}

يتوافق كل مفتاح مع رمز المسح الضوئي ، ويتم توحيده وهو عبارة عن رقم من 8 بت ، أي بايت واحد. لذلك ، عند الضغط على المفتاح Y ، سيتعين على وحدة تحكم لوحة المفاتيح إرسال الرقم 21 (0x15) ، وعند تحريره - 149 (0x95). كيف تتم الشحنة؟ من المؤكد أنك عملت مع JSON أو خدمات الويب أو أرسلت البيانات بين العمليات وتعلم أنه لإرسال البيانات تحتاج إلى إجراء تسلسل ، أي تتحول إلى صفيف من البايت أو النص المنسق الذي يمكن للمستلم إلغاء تسلسله ، أي إعادة إنشاء كائن في مساحة العنوان الخاصة به. وماذا يمكن إجراء تسلسل للبيانات على هذا المستوى المنخفض؟ نحتاج إلى نقل بايت واحد فقط (8 بت). في المستقبل ، سأقول أننا سننقل البيانات شيئًا فشيئًا.

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

يشبه رمز المسح لمفتاح Y المضغوط في النظام الثنائي 0001 0101. سننقلها على طول ساق وحدة التحكم الدقيقة المسؤولة عن البيانات ( DATA ). الوحدة المنطقية هي 3.3V أو أعلى ، صفر منطقي- الجهد حوالي 0V. ها هو المصيد - كيف يمكنني تمرير ثلاثة أصفار متتالية؟ للقيام بذلك ، نحتاج إلى المحطة الثانية التي نسميها CLOCK ، عندما يعني ذلك أن جلسة الإرسال بتة واحدة قد بدأت ، وانتهى الصفر. سيحدث هذا التغيير في القيم (الفولتية) بفاصل زمني معين ، على سبيل المثال 50 نانو ثانية ، لأنه في الطرف الآخر هناك متحكم ثانٍ يعمل بسرعته الخاصة ويستمع إلى الأرجل التي ترتبط بها CLOCK و DATA في حلقة لا نهاية لها. في هذا المثال ، سأفترض أن لوحة المفاتيح متصلة عبر موصل PS2 ، الموضح أدناه. من خلال منفذ USB ، ستكون خوارزمية النقل مختلفة. كما ترى ، يحتوي منفذ PS2 على دبابيس تسمى Data ، Clock.بالإضافة إلى ذلك ، هناك أيضًا جهة اتصال تقوم من خلالها وحدة تحكم منفذ PS2 بتوزيع الجهد 5 فولت اللازم للتشغيل على لوحة المفاتيح والاتصال الأرضي ، والذي يتم عرضه ببساطة على جسم لوحة المفاتيح. لا يتم استخدام جهات الاتصال الأخرى.
يسمى منفذ PS / 2 ناقل تسلسلي ، لأنه ينقل البتات واحدة تلو الأخرى (سلسلة من البتات). ينقل المنفذ المتوازي البيانات مرة واحدة إلى عدة جهات اتصال ويمكن أن ينقل على سبيل المثال بايت واحد (8 بت) دفعة واحدة لجلسة نقل بيانات واحدة.

ما الفرق بين منفذ وحافلة وبروتوكول؟ الناقل ، مثل المنفذ ، عبارة عن مجموعة من جهات الاتصال (الأسلاك) واتفاقية حول كيفية استخدامها ، فقط المنفذ لديه اتصال لتوصيل الأجهزة الخارجية ، ويتم استخدام الناقل لتوصيل المكونات على اللوحة الأم. المنفذ هو في الأساس حافلة ذات موصل في المنتصف. البروتوكول هو تفاعل من خلال جهات الاتصال. في المثال مع PS / 2 ، كان هذا هو ترتيب نقل البيانات من خلال جهات اتصال الساعة والبيانات.

في السابق ، كان متحكم Intel 8042 شائعًا جدًا وكان يستخدم في كل من لوحة المفاتيح وكجهاز تحكم منفذ PS2 ، أي تبادل شريحتين متطابقتين البيانات. يسمى برنامج تشغيل منفذ PS2 في Windows 8042prt.sys.

في الواقع ، نحن لا نرسل 8 بتات ، ولكن 11 ، لأن البيانات يتم إرسالها كحزمة بيانات أو رسالة . تشير 3 بتات إضافية إلى بداية البيانات ونهايتها - صفر واحد في البداية و 0 1 في النهاية ، مثل هذا البروتوكول لنقل البيانات من الجهاز إلى المضيف في PS2. قد يبدو هذا مثل وظيفة SendKey في الرمز الزائف ، إذا كنت تفضل فهم الرمز. يرسل بيانات حول المفتاح المضغوط عبر ناقل PS2.


void SendBit(BYTE bit) {
	float power = (bit != 0) ? 3.3f : 0.0f;
	SetPower(DATA, power);
	SetPower(CLOCK, 3.3f);
	Sleep(50);
	SetPower(CLOCK, 0.0f);
	Sleep(50);
}

void SendData(BYTE data) {
	SendBit(0);
	
	for (BYTE i = 0; i < sizeof(BYTE); i++) {
		BYTE bit = (data >> i) & 1;
		SendBit(bit);
	}

	SendBit(0);
	SendBit(1);
}

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

على الرسم البياني ، سيتم تصور نقل البيانات على النحو التالي. الوقت على طول المحور س ، والجهد على طول المحور ص.


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


قبل أن نلقي نظرة فاحصة على كيفية البيانات من لوحة المفاتيح يحصل على وحدة المعالجة المركزية، دعونا نتحدث عن الرقائق ، الحافلات، و اللوحات الأم .

المتحكمات الدقيقة والدوائر الدقيقة


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



كيف يتم تمثيل البيانات والأوامر في الرقائق الدقيقة والمتحكم الدقيق؟ أساس تكنولوجيا الكمبيوتر هو الترانزستور ، الذي تعلم البشر صنعه بأبعاد مجهرية. الترانزستور هو عنصر راديوي له ثلاثة أرجل: مدخل ، خرج ، وبينهم عنصر تحكم يفتح أو يغلق تيارًا بين ساقين. يوضح الشكل أدناه تشغيل الترانزستور ، ويوضح الماء التيار.


يتم تطبيق الجهد على ساق الإدخال ، إذا كان التحكم به جهد ، فعندئذ يمر التيار إلى الإخراج ، وإلا سيكون هناك 0V. بوجود 8 ترانزستورات ، لكل منها LED متصل بساق الإخراج التي تضيء أم لا ، يمكننا أن نتخيل 256 مجموعة فريدة (2 إلى قوة 8). يتم تفسير Lapochki من اليمين إلى اليسار ، بالإضافة إلى الأرقام العشرية. الأرقام السفلية على اليمين.
أولئك. تمثل لمبة واحدة بتًا واحدًا من المعلومات (0 أو 1) ، وتتوافق ثمانية من هذه المصابيح مع بايت واحد. من الممكن بناء عوامل تشغيل منطقية و OR أو NOT و XOR على الترانزستورات.


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


ترانزستورات النانو مجهرية ويمكن وضعها على السبورة بالملايين. يظهر معالج Intel أدناه وكيف قد يبدو أحد نوىه تقريبًا. الصورة توضيحية.


قد تحتوي الدوائر الدقيقة على متحكم دقيق على نفس اللوحة وفي نفس الحالة.

الإطارات


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



هناك الأنواع التالية من الإطارات:
  • البيانات - يتم تفسير البتات الموجودة على جهات الاتصال هذه على أنها بيانات: رقم أو رمز أو جزء من صورة أو بيانات ثنائية أخرى. يؤثر عرض الناقل على معدل النقل وعدد البتات المرسلة في الثانية
  • العناوين - يتم تفسير البتات على هذه الدبابيس كعنوان فعلي في الذاكرة. يحدد عرض هذا الناقل الحد الأقصى لسعة ذاكرة الوصول العشوائي المدعومة.
  • — . CPU RAM I/O.
  • . , . ATX 24 Pin 12V PSU Connector, .


قد يتكون الإطار من ركائز ، أي يتم استخدام بعض جهات الاتصال للبيانات ، والبعض الآخر للعناوين ، والبعض الآخر للتحكم وجهات الاتصال التي يتم نقل الطاقة إليها. يسمى الأسلوب الذي يتم فيه استخدام نفس جهات الاتصال بالتناوب لنقل كل من البيانات والعناوين تعدد الإرسال . على سبيل المثال ، يحتوي معالج Intel 8086 على ناقل بيانات وعناوين من 20 بت ، على مخطط الدبوس يشار إلى جهات الاتصال الخاصة به بواسطة AD0-AD19 (الأرجل 16-2 و 39-35).


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


يمكن اعتبار وحدة التحكم في الحافلة مكونًا لا يتجزأ ، لأن الاتصال بالعالم الخارجي سوف يمر بها ، كما أن عدد الرقائق أو الأجهزة الخارجية الحقيقية الموجودة بالفعل في الحافلة ليست مهمة. لنقل البيانات ، تحتوي اللوحة الأم على شبكة حافلات واسعة النطاق. على الرغم من وجود عدد كبير جدًا من مجموعات الشرائح ، إلا أنها تتبع في الغالب تخطيطًا نموذجيًا ، لأن جميع الأجهزة المتصلة باللوحة الأم مقسمة إلى:
  • بطيء - لوحة المفاتيح ، القرص الصلب ، بطاقة الشبكة ، الصوت ، إلخ.
  • سريع - CPU ، RAM ، GPU.
بناءً على هذا التقسيم ، تحتوي اللوحة الأم على شريحتين رئيسيتين - الجسر الجنوبي ، الذي ينسق عمل جميع الأجهزة البطيئة ، والجسر الشمالي ، لتنسيق الأجهزة السريعة. في أجهزة الكمبيوتر الحديثة ، يقع Northbridge في وحدة المعالجة المركزية نفسها ، وقد يطلق على Southbridge اسم Platform Controller Hub ، ولكن هذا لا يغير الجوهر. كلا الجسرين مترابطان بواسطة حافلة يطلعان من خلالها بعضهما البعض على الأحداث الهامة. من المثير للاهتمام بشكل خاص مولد الساعة الذي من خلاله يقوم المعالج وذاكرة الوصول العشوائي وبطاقة الرسومات بمزامنة عملهم ، نفس السلك الأزرق. رفع تردد التشغيلهذا يغير بشكل أساسي إعدادات BIOS بحيث تحدث المزامنة في كثير من الأحيان ، في حين أن الأجهزة ، في المقام الأول وحدة المعالجة المركزية ، ستسخن بشكل أقوى ، وتستهلك المزيد من الطاقة وتطور مواردها بسرعة أكبر. والعكس هو رفع تردد التشغيل ، عندما تنخفض السرعة لتوفير طاقة البطارية أو تقليل الضوضاء.

مجموعة الشرائح عبارة عن مجموعة من الشرائح تم تصميمها للعمل مع بعضها البعض. توفر التواصل بين المكونات على اللوحة الأم وتوفر وظائف مثل المؤقتات. تعمل مجموعة الشرائح مع علامة تجارية واحدة فقط للمعالج ، ولا يمكن إدراج AMD في اللوحة الأم باستخدام مجموعة شرائح Intel ، بل ولديها جهات اتصال مختلفة. يتم عرض مخطط اللوحة الأم أدناه:
هل تريد مثال على تغليف الأجهزة؟ تحتوي شرائح Intel على شريحة تسمى Super IO ، وتظهر في الصورة أدناه وهي متصلة بالجسر الجنوبي عبر ناقل LPC. LPC هو الاسم الذكي لسلك CLOCK و DATA و VCC (POWER). تحتوي هذه الشريحة على مضاهاة جميع الرقائق القديمة التي تم استخدامها للأجهزة الطرفية ، بما في ذلك شريحة 8042 التي تم استخدامها لمنفذ PS2. هناك أيضًا محاكي وحدة تحكم منفذ لـ Floppy والآثار الأخرى التي تتداخل مع التقدم. في الرسم التخطيطي العام للوحة الأم ، يشار إلى كل من Super IO وناقل LPC أعلاه .


يتصل منفذ PS2 الحديث مباشرة بشريحة Super I / O. الأخضر هو لوحة المفاتيح والأرجواني هو الماوس. سابقًا ، كان متصلاً بوحدة التحكم الدقيقة Intel 8042.


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

الطريق من PS2 إلى المعالج


عادة ، تعتبر بنية الكمبيوتر على المعالج 8086. من ناحية ، هذا صحيح ، لأنه بسيط للغاية مقارنة بوحدات المعالجة المركزية الحديثة ، ومن ناحية أخرى ، فهو خاطئ ، لأنه قديم ولا يعكس بنية الجهاز الحديث. لم يكن Intel 8086 بحاجة إلى أي جسور ، لأنه كان بطيئًا جدًا لدرجة أنه كان بإمكانه العمل مع الأجهزة الطرفية في ناقل واحد ، أي على تردد واحد. لا أعرف مجموعات وحدة المعالجة المركزية والرقائق الحديثة ، لذلك سأشرحها على تلك الوهمية التي تشبه تلك الحقيقية. في المثال الخاص بي ، سيكون هناك وحدة معالجة مركزية خيالية تشبه إلى حد كبير Intel 8086. تحتوي شريحة Super IO على أكثر من مئة جهة اتصال وهناك وثائق على الإنترنت ، لكنني لا أرى نقطة في الفرز لتحديد دبابيس لوحة المفاتيح وحافلة LPC التي تستخدم في الواقع للتواصل مع الجسر الجنوبي. الشيء الرئيسي هو المبدأ ، الذي يمكن تنفيذه بطرق مختلفة.

دعونا نلقي نظرة سريعة على الصورة لتذكر أننا قد مررنا بالفعل. تشير الأسهم الخضراء إلى المسار الذي سنتخذه.


لذا ، فإن البيانات من لوحة المفاتيح قد وصلت بالفعل إلى وحدة تحكم منفذ PS2 ، والتي كانت في السابق شريحة Intel 8042 ، وتمت محاكاتها الآن بواسطة شريحة Super IO. والآن دعونا نحلل المسار الإضافي للإجراءات على اللوحة الأم الخيالية باستخدام وحدة المعالجة المركزية الخيالية. تلقت وحدة تحكم PS2 رمز مسح للمفتاح Y المضغوط وتمد الجهد الآن إلى إشارة الاتصال (الخط الأرجواني ، انظر الصورة أدناه) التي يجب على وحدة تحكم المقاطعة القابلة للبرمجة أن تخطر بها البيانات من لوحة المفاتيح. تنتقل هذه الإشارة من شريحة إلى أخرى حتى يمررها الجسر الشمالي إلى مدير المقاطعة.


وحدة تحكم المقاطعة القابلة للبرمجة هي شريحة Intel 8259 حيث يتم حجز 8 أرجل (أسمائها IRQ0-IRQ7) لتلقي الإخطارات من منافذ معينة ( أقوم بتفكيك R e Q uest). ترتبط لوحة المفاتيح بدبوس IRQ1 و IRQ7 بالطابعة وقرص مرن لبعض الدبوس وبطاقة الصوت والمنافذ المتوازية وغيرها . بالطبع ، يمكن أن يكون هناك أكثر من ثمانية أجهزة ، لذلك تم استخدام تقنية مثل المتتالية عندما تم توصيل PIC مشابه آخر بساق باسم IRQ2 ، حيث لم يبدأ العد من 0 ، ولكن 7. يرتبط الماوس بـ IRQ12 ، أي. قدم IRQ5 على الموافقة المسبقة عن علم الثانية.

يجب على وحدة تحكم المقاطعة إعلام وحدة المعالجة المركزية بالحدث على لوحة المفاتيح. يحدث هذا على النحو التالي:
  1. INT (Interrupt) , INTR (Interrupt Request) . CPU , , .. . , . exception .
  2. INTR, .
  3. ( D0-D7) , . PIC ( IRQ).

    , ? . . — (x, y, z, w). .
  4. CPU AD0-AD7 , . IDT (Interrupt Descriptior Table) , , . CPU .

    . . , IDT C# .

    struct IDT_entry{
    	unsigned short int offset_lowerbits;
    	unsigned short int selector;
    	unsigned char zero;
    	unsigned char type_attr;
    	unsigned short int offset_higherbits;
    };
     
    struct IDT_entry IDT[256];
    
  5. , INTA (Interrupt Acknowledged).

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

void irq1_handler(void) {
	  outb(0x20, 0x20); //EOI
}

يمكنك معرفة المزيد حول كيفية تكوين جدول متجه المقاطعة على osdev .

نعرف الآن كيف حدثت المقاطعة ، لكننا لا نعرف كيف يقرأ معالج المقاطعة معلومات حول المفتاح المضغوط. من وجهة نظر البرامج ، فإن منفذ PS2 عبارة عن سجلين ، فقط لا يمكن الوصول إليهما عن طريق الأسماء أو العناوين في الذاكرة عن طريق رقم منفذ الإدخال / الإخراج . يتم تعيين هذين التسجيلين أحادي البايت للمنافذ 0x60 و 0x64 ، وسيحتوي الأول (0x60) على رمز المسح للمفتاح. يتم استخدام المنفذ الثاني لنقل الحالة والأوامر إلى منفذ PS2 (وليس لوحة المفاتيح!). تحتوي مجموعة تعليمات هندسة x86 على الأمر IN storeTo ، fromPortNumالذي يقرأ القيمة من منفذ الإدخال / الإخراج المحدد في السجل المحدد. على سبيل المثال IN AL ، سيحفظ 0x60 البيانات من لوحة المفاتيح إلى تسجيل AL. قد يعمل شيء مثل هذا:

  1. في المعالج الذي نفكر فيه أن هناك أرجل AD0-AD20 ، يمكن استخدامها للإشارة إلى العنوان والبيانات. هذا عبارة عن ناقل بيانات وناقل عنوان. بالإضافة إلى ذلك ، هناك عدد من أرجل التحكم ، على سبيل المثال ، الدبوس رقم 28 (S2) ، والذي ستشير قيمته إلى الجسر الشمالي حيث ستتم القراءة - من الذاكرة أو جهاز الإدخال / الإخراج. يقوم الأمر IN بتعيين القيمة هنا نتحدث عن جهاز الإدخال / الإخراج.
  2. CPU (- AD0-AD20) 0110 0000, 0x60. CPU , . , - , - . 0x60 SuperIO , - .
  3. Super IO . 0x60 PS2, .
  4. . Intel 8042, SuperIO, LPC , . .. , .
  5. CPU (- 8 AD0-AD20).
  6. CPU AL. .

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

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

يتم توصيل ذاكرة الوصول العشوائي إلى وحدة المعالجة المركزية عن طريق الحافلة والقراءة منها تستغرق بعض الوقت. لتسريع وحدة المعالجة المركزية ، تحتوي على ذاكرة تخزين مؤقت ، أي المنطقة التي توجد فيها الترانزستورات تمثل البيانات التي ستكون مطلوبة قريبًا أو غالبًا ما تستخدم ، تكون قراءتها أسرع بكثير من لوحة ذاكرة الوصول العشوائي ، التي تتواصل مع وحدة المعالجة المركزية عبر الجسر الشمالي. تسمى ذاكرة الوصول العشوائي ذاكرة الوصول العشوائي الديناميكي ، لأن المكثفات تستخدم لتمثيل البيانات فيها. المكثف هو عنصر راديو ، مثل البطارية ، يحمل شحنة لفترة من الوقت حتى يتم تفريغها بالكامل. هنا فقط يحدث التفريغ بسرعة كبيرة. لذلك ، يجب إعادة شحن المكثفات ، وهذا يحدث على الفور ، ويكفي لتطبيق الجهد. مكثف مشحون - منطقي 1 ، وإلا 0. يتم استخدام ذاكرة التخزين المؤقتذاكرة الوصول العشوائي الثابتة ، أي لا تحتاج إلى إعادة الشحن وبالتالي فهي تعمل بشكل أسرع ، ولكنها تكلف أكثر. يتم تقسيم ذاكرة التخزين المؤقت إلى 3 مستويات ، والتي يتم فحصها بالتسلسل أثناء البحث عن البيانات المطلوبة قبل أن يصل المعالج إلى ذاكرة الوصول العشوائي. على المعالجات القديمة ، كانت ذاكرة التخزين المؤقت ذات المستوى الأول (L1) جزءًا من وحدة المعالجة المركزية وعملت معها بنفس التردد ، عندما كان كل من ذاكرة التخزين المؤقت L2 و L3 رقائق خارجية. الآن كلهم ​​على نفس الشريحة مع المعالج. ذاكرة التخزين المؤقت L1 هي الأسرع والأصغر في حجم الذاكرة ، L2 لديها ذاكرة أكبر ولكنها أبطأ. L3 هو أكبر ذاكرة تخزين مؤقت وأبطأ ، ويسمى غالبًا ذاكرة التخزين المؤقت المشتركة ، لأنه يخزن البيانات لجميع نوى وحدة المعالجة المركزية ، في حين يتم إنشاء L1 و L2 لكل نواة فردية.

في الجزء التالي ، سنتحدث عن كيفية استقبال Windows للبيانات المستلمة ومعالجتها.

All Articles