पहले माइक्रोप्रोसेसरों को कैसे प्रोग्राम किया गया था?


44

इसने मुझ पर यह आरोप लगाया है कि यदि आप एक ऑपरेटिंग सिस्टम लिख रहे हैं तो आप इसे क्या लिख ​​रहे हैं? मैं यह पूछता हूं क्योंकि मैं 1980 से एक माइक्रोप्रोसेसर फंडामेंटल बुक पढ़ रहा हूं और यह सवाल मेरे दिमाग में आया:

पहला माइक्रोप्रोसेसर चिप कैसे प्रोग्राम किया गया था?

उत्तर स्पष्ट हो सकता है, लेकिन इसके लिए मुझे परेशान करना।


6
अगर मुझे अपने काम को प्लग करने की अनुमति दी जा सकती है, तो मेरा जवाब देखें "लिनक्स कर्नेल खुद को कैसे संकलित कर सकता है?" स्टैक ओवरफ्लो पर । उत्तर स्पष्ट नहीं है जब तक आप सामान्य सिद्धांत को नहीं समझते हैं, जिस बिंदु पर आप कहेंगे "ठीक है, बिल्कुल ..."
dmckee

@dmckee लेकिन यह अभी भी इस सवाल का जवाब नहीं देता है कि यह कैसे पता था कि क्या करना है :) कंप्यूटर को स्विच के साथ क्या करना है? मैं थोड़ा और विस्तार चाहता हूं।
डीन

4
तो सवाल पहली चिप के बूट अनुक्रम को डिजाइन करने के बारे में है ? खैर, यह निश्चित रूप से एक सवाल है जो इस साइट पर है, लेकिन यह घटकों से निर्मित एक डिजिटल तर्क को डिजाइन करने की तरह आगे बढ़ता है .... इसे एक ज्ञात स्थिति में शुरू करने के लिए प्राप्त करें, फिर इसे इनपुट करें जो उपयोगी चीजें करेगा। मैं इसका विस्तृत उत्तर देने के लिए इसे दूसरे पर छोड़ दूंगा, क्योंकि मैं उस पर संकोची हूं, लेकिन क्या आप जानते हैं कि पहले कंप्यूटर वैक्यूम ट्यूब में लागू होते थे, है ना? तब व्यक्तिगत ट्रांजिस्टर में एक पीढ़ी थी, सभी पहले माइक्रो चिप से पहले। इंजीनियरों को पहले से ही पता था कि वे क्या कर रहे थे।
dmckee

1
गैर-माइक्रो प्रोसेसर पर, निश्चित रूप से।
user253751

जवाबों:


56

मैं आपके प्रश्न का शाब्दिक रूप से अध्ययन करूंगा और अधिकांश माइक्रोप्रोसेसरों पर चर्चा करूंगा, सामान्य तौर पर कंप्यूटर नहीं।

सभी कंप्यूटरों में किसी न किसी प्रकार का मशीन कोड होता है। एक निर्देश में एक ओपकोड और एक या अधिक ऑपरेंड होते हैं। उदाहरण के लिए, इंटेल 4004 (बहुत पहले माइक्रोप्रोसेसर) के लिए ADD निर्देश को 1000RRRR के रूप में एन्कोड किया गया था जहाँ 1000 ADD और RRRR के लिए एक कोड संख्या का प्रतिनिधित्व करता है।

बहुत पहले कंप्यूटर प्रोग्राम हाथ से लिखे गए थे, मशीन की भाषा में प्रोग्राम बनाने के लिए 1 और 0 के हैंड-एन्कोडिंग थे। इसके बाद चिप में प्रोग्राम किया जाता है। पहले माइक्रोप्रोसेसरों ने ROM (रीड-ओनली मेमोरी) का उपयोग किया था; इसे बाद में EPROM (Erasable Programmable ROM, जिसे UV लाइट से मिटा दिया गया था) द्वारा बदल दिया गया ; अब प्रोग्राम आमतौर पर EEPROM ( "विद्युत ... - EPROM" में प्रोग्राम किए जाते हैं , जिन्हें चिप पर मिटाया जा सकता है), या विशेष रूप से फ्लैश मेमोरी।

अधिकांश माइक्रोप्रोसेसर अब रैम से बाहर प्रोग्राम चला सकते हैं (यह सब कुछ लेकिन माइक्रोकंट्रोलर के लिए बहुत मानक है), लेकिन पहले स्थान पर प्रोग्राम को रैम में लोड करने का एक तरीका होना चाहिए। जैसा कि जॉबी टाफ़ी ने अपने जवाब में बताया, यह अल्टेयर 8080 के लिए टॉगल स्विच के साथ किया गया था, जो एक इंटेल 8080 (जो 4004 और 8008 के बाद) द्वारा संचालित था। आपके पीसी में, BIOS का एक बिट कहा जाता है, जिसका उपयोग कंप्यूटर को शुरू करने के लिए किया जाता है, और ओएस को रैम में लोड किया जाता है।

मशीनी भाषा में थकाऊ असली तेज़ होता है, इसलिए असेंबलर प्रोग्राम विकसित किए गए थे जो एक एमनेमिक असेंबलर भाषा लेते हैं और इसका अनुवाद करते हैं, आमतौर पर प्रति निर्देश विधानसभा कोड की एक पंक्ति, मशीन कोड में। इसलिए 10000001 के बजाय, कोई भी ADD R1 लिखेगा।

लेकिन पहले कोडांतरक को मशीन कोड में लिखा जाना था। तब इसे अपने कोडांतरक कोड में फिर से लिखा जा सकता था, और मशीन-भाषा संस्करण इसे पहली बार इकट्ठा करने के लिए उपयोग किया गया था। उसके बाद, कार्यक्रम खुद को इकट्ठा कर सकता था। इसे बूटस्ट्रैपिंग कहा जाता है और संकलक के साथ भी किया जाता है - वे आम तौर पर पहले कोडांतरक (या अन्य उच्च-स्तरीय भाषा) में लिखे जाते हैं, और फिर अपनी भाषा में फिर से लिखे जाते हैं और मूल संकलक के साथ संकलित किया जाता है जब तक कि कंपाइलर खुद को संकलित नहीं कर सकता।

चूंकि पहले माइक्रोप्रोसेसर का विकास मेनफ्रेम और मिनिकॉमपॉइंट्स के आसपास लंबे समय के बाद हुआ था, और 4004 वास्तव में वैसे भी असेंबलर चलाने के लिए अनुकूल नहीं थे, इंटेल ने शायद एक क्रॉस-एसेम्बलर लिखा था जो अपने बड़े कंप्यूटरों में से एक पर चला, और असेंबली कोड का अनुवाद किया। 4004 एक बाइनरी इमेज में जिसे ROM में प्रोग्राम किया जा सकता है। एक बार फिर, यह एक आम तकनीक है जिसका उपयोग कंपाइलरों को एक नए प्लेटफॉर्म (जिसे क्रॉस-संकलन कहा जाता है ) में पोर्ट करने के लिए किया जाता है ।



1
और अगर आप वास्तव में एक अन्य कंप्यूटर के बिना एक माइक्रोकंट्रोलर प्रोग्राम करना चाहते थे (आपके मस्तिष्क के अलावा) तो आप सर्किटरी का निर्माण करके ऐसा कर सकते हैं जिसने प्रोग्राम को सीधे इसमें खिलाया। यदि jtag पर प्रोग्राम किया गया था, तो आप डिवाइस को प्रोग्राम करने के लिए आवश्यक jtag कमांड की नकल करने के लिए स्विच को फ्लिप कर सकते हैं। यदि यह बाहरी रैम का उपयोग करता है, तो आप निर्देशों के बिट्स का प्रतिनिधित्व करने के लिए उच्च या निम्न बंधे हुए डेमल्टिप्लेक्सर्स और प्रतिरोधों के विशाल सरणियों का उपयोग कर सकते हैं (और शायद कम गति का उपयोग करें क्योंकि आपका हार्डवेयर धीमा होगा)।
nategoose

3
@tyblu: मैं बहुत कुछ फ्यूज- PROMs EPROM से पहले का हूं। ROM का सबसे सरल रूप अनिवार्य रूप से एक चयनात्मक रूप से आबादी वाला डायोड सरणी है (शुरुआती दिनों में, डायोड का शाब्दिक रूप से बिट के एक ध्रुवता का प्रतिनिधित्व करने के लिए ग्रिड पर टांका लगाया जाएगा; एक लापता डायोड अन्य ध्रुवीयता का प्रतिनिधित्व करता है)। फ़्यूज़-प्रोम एक चिप पर डायोड सरणी डालता है, लेकिन इसमें पंक्ति ट्रांजिस्टर होते हैं जो चौराहों पर डायोड की तुलना में बहुत अधिक होते हैं। पता तारों को सेट करके डायोड को चुनिंदा तरीके से हटाया जा सकता है और फिर डायोड से जुड़े डेटा तारों को वास्तव में कड़ी मेहनत से हटाना चाहिए।
सुपरकैट

@tyblu: ध्यान दें कि फ्यूज-प्रोम, विद्युत रूप से आधुनिक OTPROMs की तरह कुछ भी नहीं हैं, जो नॉन-विंडो पैकेज में केवल EPROM चिप्स हैं। EPROM / OTP उपकरणों को कुछ ट्रांजिस्टर के गेटों को चार्ज करने के लिए क्रमादेशित किया जाता है (जिसमें पर्याप्त कैपेसिटेंस, और थोड़ा पर्याप्त रिसाव होता है, अनिवार्य रूप से अनिश्चित काल तक चार्ज रखने के लिए)। इसके विपरीत, फ्यूज-प्रोम चिप्स को अवांछित डायोड के कनेक्शन को शारीरिक रूप से नष्ट करके प्रोग्राम किया जाता है।
सुपरकैट

1
असतत ट्रांजिस्टर के दिनों से इस 'ROM' को देखें: en.wikipedia.org/wiki/Core_rope_memory
JustJeff

23

मूल रूप से, प्रोग्राम कागज पर लिखे गए थे, और फिर कंप्यूटर ने जो भी इनपुट विधि उपलब्ध कराई थी, उसे ट्रांसपोज़ किया। यह पहले कंप्यूटर पर नॉब्स, स्विच, और जम्पर तारों से लेकर कीपैड्स / बोर्ड तक पंच कार्ड में चला गया।

नीचे दिए गए चित्रण से पता चलता है कि वर्तमान में वास्तविक प्रोग्रामर क्या उपयोग करते हैं:



6
मैं प्रोग्रामर प्रोग्राम करता हूं। (और उन प्रोग्रामर मैं इस कार्यक्रम प्रोग्रामर जो कार्यक्रम प्रोग्रामर कार्यक्रम।)
मतीन Ulhaq

4
मैं अपने खुद के प्रोग्रामर बनाता हूं।
W5VO

16

अच्छी तरह से मैं आसपास था जब माइक्रो पहली बार बाहर आया, हमने मुख्य असेंबली और मिनी पर क्रॉस असेंबलर्स और कंपाइलर्स लिखे, फिर हमने उन्हें 8-बिट हार्डवेयर पर बूटस्ट्रैप किया, लोगों ने वास्तव में माइक पर कंपाइलर्स / असेंबलरों को बनाने तक को परेशान नहीं किया जब तक कि उनके पास पर्याप्त स्टोरेज नहीं था। इसे उपयोगी बनाएं


14

रीड-ओनली मेमोरी का एक प्रारंभिक रूप एक ग्रिड था जहां पता एक पंक्ति (इसे कम खींचते हुए), और कॉलम डेटा का प्रतिनिधित्व करता था। प्रत्येक स्तंभ में एक पुल-अप होगा, और प्रत्येक चौराहे में एक "शून्य" का प्रतिनिधित्व करने के लिए एक डायोड होगा, या एक "एक" [बिट स्तर का प्रतिनिधित्व करने के लिए कोई डायोड नहीं होगा यदि वांछित हो, तो उन मामलों में जहां इसे कम किया जाएगा। आवश्यक डायोड की संख्या]। बिट के किसी भी वांछित पैटर्न को उचित डायोड में टांका लगाकर "प्रोग्राम किया जा सकता है"।

इस डिज़ाइन को फ्यूज-प्रोएम के रूप में एकीकृत-सर्किट की दुनिया में लाया गया था। अनिवार्य रूप से एक फ्यूज PROM ऊपर की तरह एक सर्किट था, एक चिप पर बनाया गया था, सिवाय इसके कि सभी डायोड आबाद थे, और हर डायोड में इसके साथ श्रृंखला में एक कमजोर फ्यूज था। जैसा कि भेज दिया गया है, एक PROM सभी स्थानों पर "0" पढ़ेगा। एक, हालांकि, उपयुक्त पते का चयन करके डायोड को हटा सकता है और उचित डेटा लाइनों को "हार्ड" उच्च [नोट] चला सकता है: मुझे लगता है कि डायोड के बजाय प्रत्येक बिट का अपना ट्रांजिस्टर हो सकता है, लेकिन सिद्धांत समान है]।

फ्यूज-प्रोग्राम्ड PROMs को सेमीकंडक्टर यादों द्वारा सफल किया गया, जो आंतरिक कैपेसिटर पर आरोप प्रत्यारोपित करके बिट्स को स्टोर करते हैं। न केवल ऐसी यादें फ्यूज-प्रोएम की तुलना में अधिक कॉम्पैक्ट हैं, लेकिन अगर उन्हें यूवी-पारदर्शी पैकेज में रखा जाता है तो उन्हें मिटाया और पुन: उपयोग किया जा सकता है। ध्यान दें कि यहां तक ​​कि तथाकथित "वन-टाइम प्रोग्रामेबल" यादें लगभग हमेशा इसी डिजाइन का उपयोग करती हैं, लेकिन बस यूवी-अपारदर्शी पैकेज में रखे जाते हैं।

दो लोग एक बड़े डायोड मैट्रिक्स पर इशारा करते हैं 1950 एमआईटी बवंडर कंप्यूटर का डायोड-मैट्रिक्स कंट्रोल स्टोर

छोटे एसएमडी ट्रांजिस्टर के साथ ट्रांजिस्टर-मैट्रिक्स ट्रांजिस्टर-मैट्रिक्स 2005 एमटी 15 सीपीयू का कंट्रोल स्टोर


आशा है कि आप अपने पोस्ट के लिए किए गए छोटे ट्वीक को बुरा नहीं मानेंगे।
दाविदिक

7

मुझे यकीन नहीं है कि किसी ने ओपी के असली सवाल को संबोधित किया है, जो लगता है कि "कंप्यूटर को कैसे पता है कि कैसे शुरू किया जाए?" , तो मैं इस पर एक दरार ले जाऊँगा।

एक सादृश्य के साथ शुरू करो। "एक ट्रांजिस्टर कैसे जानता है कि कैसे शुरू किया जाए?" बेशक, यह नहीं है, यह सिर्फ भौतिकी के अनुसार काम करता है, और इंजीनियर सर्किट बनाता है ताकि यह एक ज्ञात स्थिति में शुरू हो।

कंप्यूटर जानते हैं कि कैसे शुरू किया जाए क्योंकि वे सर्किट हैं (बहुत जटिल, निश्चित रूप से) और वे एक विशेष राज्य में शुरू करने के लिए बनाए गए हैं। एक आधुनिक मशीन में वह अवस्था हो सकती है जिसमें मुख्य बस मदरबोर्ड पर एक ROM को कम मेमोरी (ROM के साथ जलाए जाने वाले ROM) के रूप में उपयोगकर्ता के लिए एड्रेस स्पेस के हिस्से को हटाती है। पहली पीढ़ी की मशीन में प्रारंभिक अवस्था में सीपीयू रुका हुआ हो सकता है, शून्य पर प्रोग्राम काउंटर और उप-सिस्टम को सक्रिय करने के लिए मेमोरी।


6

एक ऑपरेटिंग सिस्टम एक कंप्यूटर प्रोग्राम है जो सीधे प्रोसेसर पर चलता है। यह किसी भी भाषा में लिखा जा सकता है जिसे मशीन निर्देशों के अनुसार संकलित या इकट्ठा किया जा सकता है। असेंबली और सी आम विकल्प हैं।

एक प्रोसेसर से एक बार में एक ही निर्देश में कोड को लोड किया जाता है - एक रोम या रैम।

जेड 3 , पहला प्रोग्राम प्रोसेसर विद्युत रिले से बाहर बनाया गया है और छिद्रित फिल्म से निर्देश पढ़ें था।

पहला पर्सनल कंप्यूटर, Altair 8800, टॉगल स्विच द्वारा क्रमादेशित किया गया था।

डिजिटल लॉजिक से एक प्रोसेसर का निर्माण कैसे किया जाता है, यह जानने के लिए, https://electronics.stackexchange.com/questions/5516/a-fun-book-to-learn-computer-altecture-for-not-exactly-beginners देखें

इतिहास के लिए, http://en.wikipedia.org/wiki/History_of_computing_hardware देखें


5

यहाँ वास्तव में पुराने कंप्यूटरों के बारे में एक सा है:

जहाँ तक मुझे पता है, पिछले दिनों में, आपके पास एक बड़ा कंप्यूटर फ्रंट पैनल था, जिसका उपयोग उन्हें प्रोग्राम करने के लिए किया गया था। मूल रूप से, उन कंप्यूटरों में प्रत्येक मेमोरी सेल स्विच से जुड़ा था। आप मेमोरी को पावर देंगे और फिर प्रत्येक सेल में डेटा सेट करने के लिए स्विच का उपयोग करेंगे। इस तरह, आप कंप्यूटर की मेमोरी में प्रोग्राम को थोड़ा-थोड़ा करके इनपुट करेंगे। फिर आप कार्यक्रम के शुरुआती बिंदु और निष्पादन शुरू कर देंगे।

जैसे-जैसे तकनीक आगे बढ़ी, तथाकथित बूटलोडर कार्यक्रम विकसित किए गए। वे छोटे कार्यक्रम हैं जिनका पूरा बिंदु कंप्यूटर की मेमोरी से एक और कार्यक्रम शुरू करना है। बिट द्वारा कार्यक्रमों में प्रवेश करने में समस्या (और बाद में ओकटाल और बाद में हेक्साडेसिमल संख्याओं का उपयोग करके एक से अधिक बिट) यह था कि यह बहुत धीमा था और बड़ा मौका था कि ऑपरेटर कार्यक्रम को लोड करते समय एक गलती करेगा। इसलिए कंप्यूटर की मेमोरी में संग्रहीत बड़े कार्यक्रमों को लोड करने के लिए छोटे कार्यक्रमों का उपयोग किया जाएगा। जैसे-जैसे समय आगे बढ़ता गया, कोड के कुछ हिस्से को हाथ से प्रवेश करना पड़ा और आधुनिक कंप्यूटरों में हमारे पास अक्सर बूटलोडर होते हैं जो किसी न किसी प्रकार की ROM या फ्लैश मेमोरी में लिखे होते हैं।


4
'फ्रंट पैनल' मशीनों में, पहले S-100 सिस्टम की तरह, स्विच आपको सिस्टम बस का नियंत्रण लेने देता है। एक स्विच आपको प्रोसेसर को निलंबित कर देगा। जब प्रोसेसर को निलंबित कर दिया गया था, तब आप मैन्युअल रूप से पता बस (स्विच के माध्यम से) पर एक पता डाल सकते थे, डेटा बस (अधिक स्विच) पर डेटा डाल सकते थे, और फिर मैन्युअल रूप से बस (एक और स्विच) पर एक लिखने-चक्र का कारण बन सकते हैं, या 8 व्यक्तिगत एल ई डी पर डेटा वापस खींचने और बाइनरी को पढ़ने के लिए एक रीड-साइकल, आदि ऐसा करने से, आप रैम में पर्याप्त मशीन कोड स्टोर कर सकते हैं, प्रोसेसर को अन-सस्पेंड कर सकते हैं, और वहां से जा सकते हैं।
जस्टजेफ

4

मैं कुछ साल पहले एक माइक्रोकंट्रोलर प्रोग्रामर में आया था जिसमें 4 अंकों का सात सेगमेंट डिस्प्ले और एक हेक्स कीपैड था। मुझे यकीन है कि यह बोर्ड पर एक माइक्रोकंट्रोलर नहीं था और आपको मशीन कोड को एक बार में सीधे बाइट दर्ज करने की अनुमति देता था।

तो यह आपको (पीड़ादायक) मैन्युअल रूप से एक-एक करके ओप कोड की सूची संकलित करने और उन्हें चिप में दर्ज करने की अनुमति देगा।

मुझे पता नहीं है कि क्या आप अभी भी उन्हें प्राप्त कर सकते हैं, लेकिन मैं अनुमान लगा रहा हूं कि जब माइक्रोकंट्रोलर अपेक्षाकृत नए थे तो कुछ इसी तरह का उपयोग किया गया था।


1
संभवतः KIM-1 या Cosmac ELF जैसी आवाज़ें, दोनों में एक माइक्रोप्रोसेसर (MOS 6502 और RCA [CD] 1802) शामिल हैं। KIM: oldcomputers.net/kim1.html ELF: cosmacelf.com
mctylr

यह संभवत: कुछ ऐसा था जैसे mctylr ने कहा था। इस प्रकार की मशीनों में, आमतौर पर ROM में एक छोटा 'मॉनिटर' प्रोग्राम होता था। जब आप कीपैड के साथ बाइट्स में प्रवेश करते हैं, तो यह वास्तव में 6502 (या 8085 या जो भी) चाबियाँ पढ़ने, मेमोरी को संशोधित करने, एलईड को अपडेट करने, आदि के लिए होता था
जस्टजेफ

1

पहले माइक्रोप्रोसेसरों को मौजूदा कंप्यूटरों की मदद से प्रोग्राम किया गया होगा जो माइक्रोप्रोसेसरों पर आधारित नहीं थे। पहले सीपीयू को एक चिप पर उत्पादित करने से पहले, पहले से ही उन्नत कंप्यूटर आर्किटेक्चर मौजूद थे जो माइक्रोप्रोसेसर के बजाय असतत घटकों से निर्मित थे। एक नज़र, ओह, कहते हैं, आईबीएम 360।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.