أين وكيف يلتقي البرنامج مع الأجهزة؟[مغلق]

StackOverflow https://stackoverflow.com/questions/696378

  •  22-08-2019
  •  | 
  •  

سؤال

حيث في الكمبيوتر يلتقي المجرد (الحروف التي تظهر على الشاشة) مع الحقيقي (التيار الكهربائي الذي يمر عبر دوائر في الذاكرة والمعالجات).كيف حدث ذلك التطور؟

أنا أتحدث بشكل أعمق من المجمّع هنا، على ما أعتقد.ربما مستوى أعمق من تعليمات المعالج؟في مرحلة ما، يتم تفسير الأوامر فعليًا بواسطة الأجهزة، لكنني لا أفهم أين/كيف يحدث ذلك.

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

هل كانت مفيدة؟

المحلول

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

  • قم بتحميل مؤشر إلى عنوان المعامل 1 في السجل 1
  • قم بتحميل القيمة المخزنة على العنوان المخزن في السجل 1 في السجل 2
  • قم بتحميل مؤشر إلى عنوان المعامل 2 في السجل 1
  • قم بتحميل القيمة المخزنة على العنوان في السجل 1 في السجل 3
  • أضف محتويات السجل 2 والسجل 3 وقم بتخزينها في السجل 4
  • قم بتحميل مؤشر إلى الوجهة في السجل 1
  • قم بتخزين محتويات السجل 4 في العنوان المحدد في السجل 1

يوجد داخل المعالج مجموعة خاصة من الذاكرة السريعة تُعرف باسم "ملف التسجيل"، والتي تحتوي على الذاكرة التي يستخدمها المعالج لتخزين البيانات التي يعمل عليها في ذلك الوقت.يحتوي ملف السجل على عدة سجلات يتم تعريفها بشكل فريد.تعمل التعليمات عادة على السجلات، وخاصة على بنيات RISC؛وفي حين أن هذا ليس هو الحال دائمًا، إلا أنه يعد تجريدًا جيدًا بما يكفي في الوقت الحالي.

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

يحتوي المعالج على سجل خاص يسمى "عداد البرامج" الذي يخزن عنوان العملية التالية المراد تنفيذها.وبالتالي، فإن تسلسل تنفيذ التعليمات يكون تقريبًا كما يلي:

  • قم بإحضار التعليمات المخزنة على العنوان الحالي في عداد البرنامج.
  • قم بفك تشفير التعليمات، وفصل العملية الفعلية، والسجلات التي تستخدمها، و"وضع العنونة" (كيف يتم تحديد مكان الحصول على البيانات أو تخزينها) وبعض البتات والأجزاء الأخرى.
  • نفذ التعليمات.

سيؤدي تنفيذ التعليمات إلى تغيير القيم في السجلات المختلفة.على سبيل المثال، ستقوم تعليمات "تحميل" بنسخ قيمة إلى السجل.الحسابية أو المنطقية (و، أو، Xor) سوف تأخذ قيمتين وتحسب الثالثة.ستؤدي تعليمات الانتقال أو التفرع إلى تغيير العنوان الموجود على عداد البرنامج بحيث يبدأ المعالج في جلب التعليمات من موقع مختلف.

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

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

بعض الأمثلة على تعليمات المعالج النموذجية هي:

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

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

أفضل طريقة لتعلم ذلك هي الحصول على مُجمِّع وتجربته.كان هذا أسهل بكثير على أجهزة الكمبيوتر الأقدم والأبسط مثل أجهزة الكمبيوتر الصغيرة ذات 8 بت في الثمانينات.أقرب شيء إلى هذا النوع من الهندسة المعمارية المتاحة هذه الأيام هو الأنظمة المدمجة.يمكنك الحصول على لوحة تطوير لمعالج مضمن مثل Microchip PIC بسعر رخيص إلى حد ما.نظرًا لأن هذا النوع من الهندسة المعمارية يحتوي على أمتعة أقل من نظام التشغيل الحديث، فهناك عدد أقل من نقاط i-dotting وt-crossing لاستخدام مكالمات النظام.وهذا سيجعل من السهل تمهيد برنامج لغة التجميع على هذا النوع من الهندسة المعمارية؛من السهل أيضًا فهم البنية الأبسط.

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

نصائح أخرى

ويهمني كثيرا أن أقترح عليك أن تقرأ الكتاب <وأ href = "http://www.amazon.co.uk/Code-Language-DV-Undefined-Charles-Petzold/dp/0735611319/ref=sr_1_1 ؟ أي = UTF8 & ق = الكتب والبطاقة الشخصية = 1238404030 & ريال = 8-1 "يختلط =" noreferrer "> كود ، وأنه يعطي تاريخا مفصلا لكيفية الكمبيوتر تطورت من أنظمة مختلفة.

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

هناك في الواقع طبقة أخرى أسفل لغة الآلة اكتشفتها مؤخرًا من أحد الأصدقاء.تسمى Microcode.

راجع مقالة ويكيبيديا هذه للحصول على التفاصيل: http://en.wikipedia.org/wiki/Microcode

لنفترض أن معظم الحقيقي هو التيار والجهد (اذا ذهبت أعمق، قد تجد أنه حتى الإلكترون هو فكرة مجردة). الخطوة الأولى من التجريد هو النظر إلى أن + 5V الجهد يمثل تعيين قليلا إلى '1' ويمثل الجهد 0V قليلا لمجموعة '0'. مع التبديل، يمكنك أن تقرر قيمة الأسلاك الخاصة بك.

ومع سلك الثاني والتبديل الثاني، وتحصل على قيمتين الثنائية. الأكثر إثارة للاهتمام أن تفعل معهم هو الجمع بين قيمهم الثنائية مع عمليات من هذا القبيل AND، OR و NOT. وتشارك مفهومين هنا: الترانزستور عن حقيقية و<لأ href = "HTTP: // en.wikipedia.org/wiki/Logic "يختلط =" نوفولو noreferrer "> المنطق عن التجريد. مع ذلك، يمكنك تنفيذ بالإضافة إلى ذلك، الطرح والعديد من العمليات الأخرى الخاصة بك على اثنين من المدخلات الثنائية. يمكنك إضافة المزيد من الأسلاك لتمثيل قيم أخرى غير '0' و '1'. الذهاب بهذه الطريقة، يمكنك الحصول على ALU .

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

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

فرضية سؤالك غير صحيحة.ليس هناك انقسام.يتم إدخال البرنامج وحفظه إلكترونيا.يتم عرض البرنامج لك بلغة تشبه اللغة الإنجليزية حتى يتمكن البشر من متابعته بسهولة.

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

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

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

آمل أن يكون هذا الأمر يبدو معقولا تماما.

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

من الملخص إلى الأجهزة:

  • يقوم المستخدم بكتابة الحروف في معالج النصوص الخاص به (wp)
  • يقوم برنامج wp أولاً بتخزين الحروف في الذاكرة كجزء من المستند الذي يتم تحريره
  • يقوم برنامج wp بعد ذلك بإخبار مكتبة واجهة المستخدم التي يستخدمها بأنه يريد عرض النص الذي يتم تحريره في نافذة (يحدث هذا باستمرار بالطبع).ستكون مكتبة واجهة المستخدم معتمدة على النظام (Windows API على MS Windows أو X Windows أو QT وما إلى ذلك.على Linux، AWT/Swing على Java وما إلى ذلك.)
  • ستقوم مكتبة واجهة المستخدم بتمرير البيانات عبر بضع طبقات تجريدية أخرى.على وجه الخصوص، سيتم إجراء عملية التنقيط (تحويل المعلومات "إظهار A" إلى شبكة البكسل التي تمثل A)
  • وفي النهاية، سيتم تمرير المعلومات إلى برنامج تشغيل الجهاز الخاص ببطاقة الرسومات.هذا هو المكان الذي نلتقي فيه بالأجهزة "الحقيقية" :-).عادةً ما تعرض بطاقة الرسوميات "ذاكرة الفيديو"، أي.الذاكرة الموجودة على البطاقة والتي يمكن لوحدة المعالجة المركزية الكتابة عليها.سيقوم برنامج تشغيل بطاقة الرسومات (الذي يعمل على وحدة المعالجة المركزية) بكتابة وحدات البكسل الخاصة بذاكرة الفيديو من A.
  • ستقوم دوائر بطاقة الرسوميات بقراءة ذاكرة الفيديو وتحويل البيانات الموجودة هناك إلى إشارة فيديو تخرج من موصل الفيديو الموجود على البطاقة وإلى الشاشة.
  • ستعرض الشاشة ما يبدو وكأنه حرف A :-)

قد لا يكون هذا التفسير أكاديميًا للغاية ولكن هذه هي الطريقة التي أفهمها بها (لم أذهب إلى الجامعة أيضًا).

الخطوة الأولى تنطوي على بولجبر 's الذي أثبت في القرن التاسع عشر أنه يمكن التعبير عن أي عملية رياضية باستخدام سلسلة من الرموز وبعض العوامل المرتبطة بها.وبالتالي يمكن التعبير عن الحساب العشري الأساسي مع عوامل التشغيل +، -، *، / المشتركة باستخدام رمزين فقط (0، 1/ صحيح، خطأ) والعوامل المنطقية (AND، OR إلخ) مما يؤدي إلى المنطق المنطقي الذي هو الأساس الرياضي للحوسبة الرقمية.

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

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

وبالتالي فإن كل برنامج مكتوب بأي لغة كمبيوتر تتم ترجمته في النهاية بواسطة المترجم أو وقت التشغيل إلى سلسلة من العمليات المنطقية ليقوم المعالج بتنفيذها

وآلة بصمات الأصابع، على ما أعتقد، كما على مستوى منخفض كما يمكن للمرء أن يذهب. ومن المعلوم مباشرة من قبل المعالج وتنفيذه دون مترجم. هو مبني على المعالج مع مجموعة معينة من التعليمات التي تحدد رمز الجهاز لبنية معينة (x86 و PPC، ARM، الخ.).

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

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

من ناحية أخرى، إذا كان لديك أي فكرة عن كيفية يصل المعالج والذاكرة، ويجب أن ننظر حتى ما هي "حافلة عنوان" و "ناقل البيانات" هو الحصول على انك بدأته.

أنت الحصول على أنه من الخطأ.

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

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

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

وهذا ليس من السهل الإجابة في جملة واحدة. قراءة كتاب عن هندسة الكمبيوتر، وتعلم بعض التجمع وأنا متأكد من أنك سوف نفهم كيف يحدث هذا.

وعندما ندخل أي مفتاح أو إعطاء أي أمر ثم أصبحت موجات كهربائية صغيرة بسبب بالضغط على مفتاح هو في الواقع نكمل الدائرة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top