मैं सबसे निचले स्तर से शुरू करूँगा जो प्रासंगिक हो सकता है (मैं और भी निचले स्तर से शुरू कर सकता हूं, लेकिन वे शायद बहुत ही अप्रासंगिक हैं), एटम से शुरू होकर, बिजली तक, ट्रांजिस्टर से, लॉजिक गेट्स से, एकीकृत सर्किट (चिप / सीपीयू) तक ), और विधानसभा में खत्म (मुझे लगता है कि आप उच्च स्तर से परिचित हैं)।
शुरुआत में
परमाणु
परमाणु एक संरचना है जो इलेक्ट्रॉनों, प्रोटॉन और न्यूट्रॉन (जो स्वयं प्राथमिक कणों से बने होते हैं ) से बना होता है । कंप्यूटर और इलेक्ट्रॉनिक्स के लिए परमाणु के सबसे दिलचस्प हिस्सा हैं इलेक्ट्रॉनों क्योंकि इलेक्ट्रॉन मोबाइल हैं (यानी यह अपेक्षाकृत आसानी से घूम सकते, प्रोटॉन और न्यूट्रॉन जो अधिक स्थानांतरित करने के लिए मुश्किल हो जाता है के विपरीत) के अंदर आयोजित किया जा रहा बिना अपने आप में नाव को मुक्त रूप से और वे कर सकते हैं एक परमाणु।
आमतौर पर, प्रत्येक परमाणु में प्रोटॉन और इलेक्ट्रॉनों की समान संख्या होती है, हम इसे "तटस्थ" अवस्था कहते हैं। जैसा कि होता है, एक परमाणु के लिए अतिरिक्त इलेक्ट्रॉनों को खोना या प्राप्त करना संभव है। इस असंतुलित स्थिति में परमाणुओं को "सकारात्मक रूप से चार्ज किया गया" परमाणु (इलेक्ट्रॉनों से अधिक प्रोटॉन) और "नकारात्मक चार्ज" परमाणु (प्रोटॉन की तुलना में अधिक इलेक्ट्रॉन) कहा जाता है।
इलेक्ट्रॉन असंरचित और अविनाशी हैं (क्वांटम यांत्रिकी में ऐसा नहीं है, लेकिन यह हमारे उद्देश्य के लिए अप्रासंगिक है); इसलिए यदि एक परमाणु एक इलेक्ट्रॉन खो देता है, तो पास के कुछ अन्य परमाणु को अतिरिक्त इलेक्ट्रॉनों को प्राप्त करना पड़ता है या इलेक्ट्रॉन को एक मुक्त फ्लोटिंग इलेक्ट्रॉन में जारी करना पड़ता है, इसके अलावा, चूंकि इलेक्ट्रॉन अप्रतिरोध्य है, अतिरिक्त इलेक्ट्रॉन प्राप्त करने के लिए, एक परमाणु को पास के परमाणुओं को बंद करना होगा। या एक मुक्त फ्लोटिंग इलेक्ट्रॉन से। इलेक्ट्रॉनों का यांत्रिकी ऐसा है कि यदि एक सकारात्मक चार्ज परमाणु के पास एक नकारात्मक चार्ज परमाणु है, तो कुछ इलेक्ट्रॉन तब तक माइग्रेट करेंगे जब तक दोनों परमाणुओं का एक ही चार्ज नहीं होगा।
बिजली
बिजली एक क्षेत्र से केवल इलेक्ट्रॉनों का प्रवाह है जिसमें बहुत अधिक संख्या में नकारात्मक चार्ज वाले परमाणु होते हैं और बहुत अधिक संख्या में सकारात्मक चार्ज वाले परमाणु होते हैं। कुछ रासायनिक प्रतिक्रियाएं ऐसी स्थिति पैदा कर सकती हैं, जहां हमारे पास नकारात्मक चार्ज किए गए परमाणुओं (जिसे "एनोड" कहा जाता है) के साथ एक नोड है, और सकारात्मक चार्ज किए गए परमाणुओं के साथ एक और नोड ("कैथोड" कहा जाता है)। यदि हम दो विपरीत चार्ज किए गए नोड्स को एक तार से जोड़ते हैं, तो इलेक्ट्रॉनों का द्रव्यमान एनोड से कैथोड तक प्रवाहित होगा, और यह प्रवाह जिसे हम "विद्युत प्रवाह" कहते हैं।
सभी तार इलेक्ट्रॉनों को समान रूप से आसानी से संचारित नहीं कर सकते हैं, इलेक्ट्रॉन "प्रतिरोधी" सामग्रियों की तुलना में "आचरण" में बहुत आसानी से प्रवाह करते हैं। एक "संवाहक" सामग्री में कम विद्युत प्रतिरोध (जैसे केबलों में तांबे के तार) और एक "प्रतिरोधी" सामग्री में उच्च विद्युत प्रतिरोध (जैसे रबर इन्सुलेशन) होता है। कुछ दिलचस्प सामग्रियों को अर्ध-चालक (जैसे सिलिकोन) कहा जाता है, क्योंकि वे अपने प्रतिरोध को आसानी से बदल सकते हैं, कुछ शर्तों के तहत एक अर्धचालक एक कंडक्टर के रूप में कार्य कर सकता है और अन्य स्थितियों में यह एक अवरोधक में बदल सकता है।
बिजली हमेशा कम से कम प्रतिरोध के साथ सामग्री के माध्यम से प्रवाह करना पसंद करती है, इसलिए यदि एक कैथोड और एनोड दो तारों से जुड़ा होता है, एक में बहुत अधिक प्रतिरोध होता है और दूसरा बहुत कम प्रतिरोध के साथ, कम प्रतिरोध केबल के माध्यम से अधिकांश इलेक्ट्रॉनों का प्रवाह होगा और लगभग उच्च प्रतिरोध सामग्री के माध्यम से कोई भी प्रवाह नहीं करता है।
मध्य युग
स्विच और ट्रांजिस्टर
स्विच / फ्लिप-फ्लॉप आपके नियमित प्रकाश स्विच की तरह होते हैं, एक स्विच को बिजली के प्रवाह को काटने और / या बिजली के प्रवाह को काटने के लिए दो टुकड़ों के बीच रखा जा सकता है। ट्रांजिस्टर वास्तव में प्रकाश स्विच के समान काम करता है, सिवाय इसके कि भौतिक रूप से जुड़ने और डिस्कनेक्ट करने के तारों के बजाय, एक ट्रांजिस्टर बिजली के प्रवाह को जोड़ता है / इसके प्रवाह को बदलकर विद्युत प्रवाह को काटता है, यह निर्भर करता है कि क्या बेस नोड में बिजली है, और, जैसा कि आप पहले ही अनुमान लगा चुके हैं। / पता है, ट्रांजिस्टर सेमीकंडक्टर्स से बने होते हैं क्योंकि हम इलेक्ट्रिक धाराओं को जोड़ने या डिस्कनेक्ट करने के लिए सेमीकंडक्टर को एक प्रतिरोधक या कंडक्टर बनने के लिए बदल सकते हैं।
एक सामान्य प्रकार का ट्रांजिस्टर, एनपीएन बाइपोलर जंक्शन ट्रांजिस्टर (BJT), तीन नोड्स हैं: "बेस", "कलेक्टर", और "एमिटर"। एनपीएन बीजेटी में, "एमिटर" नोड से "कलेक्टर" नोड तक बिजली तभी प्रवाहित हो सकती है जब "बेस" नोड चार्ज हो। जब बेस नोड चार्ज नहीं किया जाता है, तो व्यावहारिक रूप से कोई इलेक्ट्रॉन प्रवाह नहीं कर सकता है और जब बेस नोड चार्ज किया जाता है, तो इलेक्ट्रॉनों उत्सर्जक और कलेक्टर के बीच प्रवाह कर सकते हैं।
एक ट्रांजिस्टर का व्यवहार
(मैं अत्यधिक सुझाव है कि आप के माध्यम से पढ़ने के लिए इस जारी रखने से पहले, के रूप में यह इंटरैक्टिव ग्राफिक्स के साथ मुझे की तुलना में बेहतर व्याख्या कर सकते हैं)
मान लें कि हमारे पास अपने बेस और कलेक्टर में एक इलेक्ट्रिक स्रोत से जुड़ा एक ट्रांजिस्टर है, और फिर हम इसके कलेक्टर के पास एक आउटपुट केबल को वायर करते हैं (चित्र 3 को http://www.spsu.edu/cs/facademy/bbrown/web_lectures में देखें) / ट्रांजिस्टर / )।
जब हम बिजली को न तो आधार और न ही कलेक्टर के लिए लागू करते हैं, तो कोई भी बिजली प्रवाहित नहीं हो सकती है क्योंकि कोई बिजली बात करने के लिए नहीं है:
B C | E O
0 0 | 0 0
जब हम कलेक्टर को बिजली लागू करते हैं लेकिन आधार नहीं, तो बिजली उत्सर्जक में नहीं जा सकती क्योंकि आधार एक उच्च प्रतिरोध सामग्री बन जाता है, इसलिए बिजली आउटपुट तार से बच जाती है:
B C | E O
0 1 | 0 1
जब हम बिजली को आधार पर लागू करते हैं, लेकिन कलेक्टर को नहीं, तो कोई भी बिजली प्रवाहित नहीं हो सकती है क्योंकि कलेक्टर और एमिटर के बीच कोई चार्ज अंतर नहीं है:
B C | E O
1 0 | 0 0
जब हम बेस और कलेक्टर दोनों के लिए बिजली लागू करते हैं, तो हम ट्रांजिस्टर के माध्यम से बिजली प्रवाहित करते हैं, लेकिन चूंकि अब ट्रांजिस्टर में आउटपुट वायर की तुलना में कम प्रतिरोध होता है, लगभग कोई बिजली आउटपुट तार से नहीं बहती है:
B C | E O
1 1 | 1 O
तर्क द्वार
जब हम एक ट्रांजिस्टर (E1) के एमिटर को दूसरे ट्रांजिस्टर (C2) के कलेक्टर से कनेक्ट करते हैं और फिर हम पहले ट्रांजिस्टर (O) के बेस के पास एक आउटपुट कनेक्ट करते हैं ( http://www.spsu.edu में चित्र 4 देखें) / cs / संकाय / bbrown / web_lectures / ट्रांजिस्टर / ), तो कुछ दिलचस्प होता है। मान लें कि हम हमेशा पहले ट्रांजिस्टर (C1) के कलेक्टर को बिजली लागू करते हैं और इसलिए हम केवल ट्रांजिस्टर के बेस नोड्स (B1, B2) के साथ खेलते हैं:
B1 B2 C1 E1/C2 | E2 O
----------------------+----------
0 0 1 0 | 0 1
0 1 1 0 | 0 1
1 0 1 0 | 0 1
1 1 1 1 | 1 0
आइए तालिका को संक्षेप में प्रस्तुत करें ताकि हम केवल बी 1, बी 2 और ओ देखें:
B1 B2 | O
---------+-----
0 0 | 1
0 1 | 1
1 0 | 1
1 1 | 0
लो और निहारना , यदि आप बूलियन लॉजिक और / या लॉजिक गेट्स से परिचित हैं, तो आपको ध्यान देना चाहिए कि यह ठीक नंद द्वार है। और यदि आप बूलियन लॉजिक और / या लॉजिक गेट्स से परिचित हैं, तो आप यह भी जान सकते हैं कि एक नंद (साथ ही NOR) कार्यात्मक रूप से पूर्ण है , अर्थात केवल नंद का उपयोग करके, आप अन्य सभी लॉजिक गेट और बाकी सत्य का निर्माण कर सकते हैं टेबल। दूसरे शब्दों में, आप अकेले NAND गेट्स का उपयोग करके एक संपूर्ण कंप्यूटर चिप डिज़ाइन कर सकते हैं।
वास्तव में, अधिकांश CPU हैं (या इसका उपयोग किया जाता है?) NAND का उपयोग करके ही बनाया गया है क्योंकि यह NAND, NOR, AND, OR, आदि के संयोजन का उपयोग करके निर्माण करने के लिए सस्ता है।
नंद से अन्य बूलियन ऑपरेटरों को वितरित करना
मैं यह वर्णन नहीं करूंगा कि सभी बूलियन ऑपरेटरों को कैसे बनाया जाए, केवल NOT और AND गेट, आप बाकी को कहीं और पा सकते हैं।
एक नंद ऑपरेटर को देखते हुए, हम एक गेट का निर्माण नहीं कर सकते हैं:
Given one input B
O = NAND(B, B)
Output O
एक नंद और नहीं ऑपरेटर को देखते हुए, हम एक और गेट का निर्माण कर सकते हैं:
Given two inputs B1, B2
C = NAND(B1, B2)
O = NOT(C) // or NAND(C,C)
Output O
हम इसी तरह से अन्य लॉजिक गेट का निर्माण कर सकते हैं। चूंकि NAND गेट कार्यात्मक रूप से पूर्ण है , इसलिए 2 से अधिक इनपुट और 1 से अधिक आउटपुट के साथ लॉजिक गेट का निर्माण भी संभव है, मैं इस तरह के लॉजिक गेट के निर्माण के बारे में चर्चा नहीं करने जा रहा हूं।
आत्मज्ञान आयु
बुलियन गेट्स से ट्यूरिंग मशीन का निर्माण
एक सीपीयू ट्यूरिंग मशीन का एक अधिक जटिल संस्करण है। सीपीयू रजिस्टर ट्यूरिंग मशीन की आंतरिक स्थिति है, और रैम एक ट्यूरिंग मशीन का टेप है।
ट्यूरिंग मशीन (सीपीयू) तीन काम कर सकती है:
- टेप से 0 या 1 पढ़ें (रैम से मेमोरी की एक सेल पढ़ें)
- इसकी आंतरिक स्थिति बदलें (इसके रजिस्टर बदलें)
- बाएं या दाएं जाएं (RAM से कई स्थिति पढ़ें)
- टेप को 0 या 1 लिखें (रैम को मेमोरी के सेल पर लिखें)
हमारे उद्देश्य के लिए, हम वुल्फराम के 2-स्टेट 3-प्रतीक ट्यूरिंग मशीन का निर्माण कर रहे हैं, जिसमें कॉम्बिनेटरियल लॉजिक (आधुनिक सीपीयू माइक्रोकोड का उपयोग करेंगे, लेकिन वे हमारे उद्देश्य के लिए आवश्यक से अधिक जटिल हैं)।
वुल्फ्राम की राज्य तालिका (2,3) ट्यूरिंग मशीन इस प्रकार है:
A B
0 P1,R,B P2,L,A
1 P2,L,A P2,R,B
2 P1,L,A P0,R,A
हम एक सत्य तालिका के रूप में ऊपर दी गई राज्य तालिका को पुनः लोड करना चाहते हैं:
Let I1,I2 be the input from the tape reader (0 = (0,0), 1 = (0,1), 2 = (1,0))
Let O1,O2 be the tape writer (symbol encoding same as I1,I2)
Let M be connected to the machine's motor (0 = move left, 1 = move right)
Let R be the machine's internal state (A = 0, B = 1)
(R(t) is the machine's internal state at timestep t, R(t+1) at timestep t+1)
(Note that we used two input and two outputs since this is a 3-symbol Turing machine.)
R 0 1
I1,I2
(0,0) (0,1),1,1 (1,0),0,0
(0,1) (1,0),0,0 (1,0),1,1
(1,0) (0,1),0,0 (0,0),1,0
The truth table for the state table above:
I1 I2 R(t) | O1 O2 M R(t+1)
-------------+--------------------
0 0 0 | 0 1 1 1
0 0 1 | 1 0 0 0
0 1 0 | 1 0 0 0
0 1 1 | 1 0 1 1
1 0 0 | 0 1 0 0
1 0 1 | 0 0 1 0
मैं वास्तव में इस तरह के एक लॉजिक गेट का निर्माण नहीं कर रहा हूं (मुझे यकीन नहीं है कि इसे एसई में कैसे आकर्षित किया जाए और यह शायद काफी विशाल होने वाला है), लेकिन जब से हम जानते हैं कि नंद गेट कार्यात्मक रूप से पूरा हो गया है , तो हमारे पास एक रास्ता है नंद द्वार की एक श्रृंखला को खोजने के लिए जो इस सत्य तालिका को लागू करेगा।
ट्यूरिंग मशीन की एक महत्वपूर्ण संपत्ति यह है कि ट्यूरिंग मशीन का उपयोग करके एक संग्रहीत प्रोग्राम कंप्यूटर का अनुकरण करना संभव है जिसमें केवल एक निश्चित राज्य तालिका है। इसलिए, कोई भी यूनिवर्सल ट्यूरिंग मशीन अपने निर्देश को आंतरिक स्थिति तालिका में हार्डककोड होने के बजाय टेप (RAM) से पढ़ सकती है। दूसरे शब्दों में, हमारी (2,3) ट्यूरिंग मशीन तर्क गेट कार्यान्वयन (हार्डवेयर के रूप में) में हार्डकोड किए जाने के बजाय I1, I2 पिन (सॉफ़्टवेयर के रूप में) से अपने निर्देशों को पढ़ सकती है।
Microcodes
आधुनिक सीपीयू की बढ़ती जटिलता के कारण, पूरे सीपीयू को डिजाइन करने के लिए अकेले कॉम्बिनेटरियल लॉजिक का उपयोग करना कठिन हो जाता है। आधुनिक सीपीयू को आमतौर पर माइक्रोकोड निर्देश के दुभाषिया के रूप में डिजाइन किया जाता है; एक माइक्रोकोड सीपीयू में एम्बेडेड एक छोटा प्रोग्राम है जिसका उपयोग वास्तविक मशीन कोड की व्याख्या करने के लिए सीपीयू द्वारा किया जाता है। यह माइक्रोकोड दुभाषिया खुद आमतौर पर कॉम्बिनेटरियल लॉजिक का उपयोग करके बनाया गया है।
रजिस्टर, कैश और रैम
हम ऊपर कुछ भूल गए हैं। हम कुछ कैसे याद करते हैं? हम टेप और रैम को कैसे लागू करते हैं? इसका उत्तर एक इलेक्ट्रॉनिक घटक में है जिसे कैपेसिटर कहा जाता है। एक संधारित्र एक रिचार्जेबल बैटरी की तरह होता है, यदि संधारित्र को चार्ज किया जाता है तो यह अतिरिक्त इलेक्ट्रॉनों को बनाए रखेगा और यह इलेक्ट्रॉनों को सर्किट्री में भी लौटा सकता है।
एक संधारित्र को लिखने के लिए, हम संधारित्र को इलेक्ट्रॉन से भरते हैं (1 लिखें) या संधारित्र में सभी इलेक्ट्रॉनों को खाली करें जब तक कि यह खाली न हो (लेखन 0)। संधारित्र के मूल्य को पढ़ने के लिए, हम इसे निर्वहन करने का प्रयास करते हैं। यदि, जब हम डिस्चार्ज करने की कोशिश करते हैं, तो कोई विद्युत प्रवाह नहीं होता है, तो संधारित्र खाली है (पढ़ें 0), लेकिन अगर हम बिजली का पता लगाते हैं, तो संधारित्र को चार्ज किया जाना चाहिए (1 पढ़ें)। आप देख सकते हैं कि एक संधारित्र को पढ़ने से इसके इलेक्ट्रॉन स्टोर में पानी भर जाता है, आधुनिक रैम में समय-समय पर संधारित्र को रिचार्ज करने के लिए सर्किट्री होती है ताकि वे अपनी मेमोरी को तब तक बनाए रख सकें जब तक बिजली है।
एक सीपीयू में कई प्रकार के कैपेसिटर का उपयोग किया जाता है, सीपीयू रजिस्टर और उच्च स्तर के सीपीयू कैश को बहुत उच्च गति वाले "कैपेसिटर" का उपयोग करके बनाया जाता है जो वास्तव में ट्रांजिस्टर से बनाया गया है (इसलिए पढ़ने / लिखने के लिए लगभग कोई "अंतराल" नहीं है) उन्हें), इन्हें स्टैटिक रैम (SRAM) कहा जाता है; जबकि मुख्य मेमोरी रैम को कम बिजली, लेकिन धीमी और बहुत सस्ती कैपेसिटर का उपयोग करके बनाया जाता है, इन्हें डायनेमिक रैम (DRAM) कहा जाता है।
घड़ी
सीपीयू का एक बहुत महत्वपूर्ण घटक घड़ी है। एक घड़ी एक घटक है जो प्रसंस्करण को सिंक्रनाइज़ करने के लिए नियमित रूप से "टिक" करता है। एक घड़ी में आमतौर पर अच्छी तरह से ज्ञात और अपेक्षाकृत निरंतर दोलन अवधि के साथ एक क्वार्ट्ज या अन्य सामग्री होती है, और घड़ी सर्किटरी समय की अपनी भावना को बनाए रखने के लिए इस दोलन को बनाए रखती है और मापती है।
सीपीयू संचालन घड़ी की टिक के बीच किया जाता है और यह सुनिश्चित करने के लिए पढ़ा जाता है कि सभी घटक समकालिक रूप से चलते हैं और मध्यवर्ती अवस्था में रहते हुए एक दूसरे को रौंदते नहीं हैं। हमारे (2,3) ट्यूरिंग मशीन में, क्लॉक टिक्स के बीच इनपुट (I1, I2, R (t)) से आउटपुट की गणना करने के लिए लॉजिक गेट्स से बिजली गुजरती है; और में घड़ी टिक्स, टेप लेखक टेप को O1, O2 लिखेंगे, मोटर एम के मूल्य के आधार पर आ जाएगा, और आंतरिक रजिस्टर आर के मूल्य से लिखा है (टी + 1), तो टेप पाठक वर्तमान टेप को पढ़ेंगे और I1, I2 में चार्ज लगाएंगे और आंतरिक रजिस्टर R (t) पर वापस भेज दिया जाएगा।
पेरिफेरल्स के साथ बात हो रही है
ध्यान दें कि कैसे (2,3) ट्यूरिंग मशीन अपने मोटर के साथ इंटरफेस करती है। यह एक बहुत ही सरल दृष्टिकोण है कि एक सीपीयू एक मनमाने हार्डवेयर के साथ कैसे इंटरफेस कर सकता है। मनमाना हार्डवेयर इनपुट / आउटपुट के लिए एक विशिष्ट तार को सुन या लिख सकता है। (2,3) ट्यूरिंग मशीन के मामले में, मोटर के साथ इसका इंटरफ़ेस सिर्फ एक तार है जो मोटर को घड़ी की दिशा में या वामावर्त चालू करने का निर्देश देता है।
इस मशीन में जो कुछ भी नहीं छोड़ा गया है वह यह है कि मोटर के पास एक और "क्लॉक" होनी चाहिए जो मशीन के आंतरिक "क्लॉक" के साथ समकालिकता में चलती है ताकि यह पता चल सके कि कब चालू करना और चलाना बंद करना है, इसलिए यह एक सिंक्रोनस डेटा ट्रांसमिशन का एक उदाहरण है । अन्य आमतौर पर इस्तेमाल किया जाने वाला विकल्प, अतुल्यकालिक ट्रांसमिशन सीपीयू और एसिंक्रोनस डिवाइस के बीच सिंक्रोनाइज़ेशन पॉइंट्स को संप्रेषित करने के लिए एक और तार का उपयोग करता है, जिसे इंटरप्ट लाइन कहा जाता है।
डिजिटल युग
मशीन कोड और विधानसभा
असेंबली भाषा मशीन कोड के लिए एक मानव पठनीय महामारी है। सरलतम मामले में, विधानसभा से मशीन कोड के बीच एक-से-एक मैपिंग है; हालांकि आधुनिक विधानसभा भाषाओं में कुछ निर्देश कई ऑपकोड में मैप कर सकते हैं।
प्रोग्रामिंग भाषा
हम सभी इससे परिचित हैं क्या हम नहीं हैं?
पाब्लो, आखिरकार, मैंने यह सब केवल 4 घंटों में टाइप किया, इसलिए मुझे यकीन है कि कहीं न कहीं एक गलती है (मैं प्राथमिक रूप से एक प्रोग्रामर हूं, न कि इलेक्ट्रिक इंजीनियर और न ही भौतिक विज्ञानी, इसलिए ऐसी कई चीजें हो सकती हैं जो कि गलत तरीके से गलत हैं)। कृपया अगर आपको कोई गलती मिली, तो एक @yell देने में संकोच न करें या यदि आपके पास प्रतिनिधि है या पूरक उत्तर दें तो इसे स्वयं ठीक करें।