कंप्यूटर कैसे काम करते हैं? [बन्द है]


59

यह लगभग शर्मनाक पूछ रहा है ... मेरे पास कंप्यूटर विज्ञान में एक डिग्री है (और प्रगति में एक दूसरा)। मैंने लगभग पाँच वर्षों तक पूर्णकालिक डेवलपर के रूप में काम किया है। मैं आम तौर पर मैं क्या करता हूँ पर सक्षम लगता है।

लेकिन मुझे नहीं पता कि कंप्यूटर कैसे काम करते हैं!

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

मुझे पता है कि घटक हैं .... बिजली की आपूर्ति, मदरबोर्ड, रैम, सीपीयू, आदि ... और मुझे लगता है कि वे क्या करते हैं का सामान्य विचार है। लेकिन मैं वास्तव में समझ में नहीं आता कि कैसे आप की तरह कोड की एक पंक्ति से जाना Console.Readline()नेट (या जावा या सी ++) और यह वास्तव में है क्या कर सामान।

निश्चित रूप से, मैं MSIL (.NET के मामले में) के बारे में पूरी तरह से वाकिफ हूं, और जेआईटी कंपाइलर के साथ कुछ जादू होता है और यह देशी कोड (मुझे लगता है) में बदल जाता है। मुझे बताया गया है कि जावा समान है, और C ++ मध्य चरण को काट देता है।

मैंने कुछ मेनफ्रेम असेंबली की है, यह कुछ साल पहले था। मुझे याद है कि कुछ निर्देश और कुछ सीपीयू रजिस्टर थे, और मैंने कोड लिखा था .... और फिर कुछ जादू हुआ .... और मेरा कार्यक्रम काम करेगा (या दुर्घटना)। मैं जो समझता हूं, एक 'एमुलेटर' वह होगा जो किसी निर्देश को कॉल करने पर होता है और सीपीयू रजिस्टर को अपडेट करेगा; लेकिन उन निर्देशों से क्या काम बनता है?

क्या यह एक इलेक्ट्रॉनिक्स प्रश्न में बदल जाता है और 'कंप्यूटर' प्रश्न नहीं है? मैं अनुमान लगा रहा हूं कि मुझे इसे समझने का कोई व्यावहारिक कारण नहीं है, लेकिन मुझे लगता है कि मुझे सक्षम होना चाहिए।

(हां, यह तब होता है जब आप एक छोटे बच्चे के साथ एक दिन बिताते हैं। उन्हें आपके बारे में 10 मिनट और पांच पुनरावृत्तियों में पूछने के लिए 'क्यों?' का एहसास होता है।



20
मैं चार्ल्स पेट्ज़ोल्ड द्वारा कोड

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

1
मुझे लगता है कि शीर्षक को अधिक विशिष्ट / सूचनात्मक होना चाहिए। यह वास्तव में एक बहुत उपयोगी सवाल है, लेकिन पहली नज़र में यह पूरी तरह से हास्यास्पद लगता है, जैसे कि छोटे बच्चे ने मूल रूप से क्या पूछा था। इसे कुछ इस तरह बदलें "उच्च-स्तरीय सॉफ़्टवेयर कमांड निम्न-स्तरीय हार्डवेयर प्रतिक्रियाओं से कैसे जुड़ते हैं?"
झॉकिंग

2
हाय रोब, जैसा कि अभी कहा गया है, यह पूरी तरह से व्यापक है और जल्दी से एक पुस्तक सिफारिश प्रश्न और विस्तारित चर्चा में बदल गया है: दोनों जो हम यहां नहीं चाहते हैं। यदि आप अपना ध्यान केंद्रित कर सकते हैं और किसी समस्या के बारे में कुछ विशिष्ट पूछ सकते हैं जो आप वर्तमान में सामना कर रहे हैं, तो उस बारे में पूछने के लिए स्वतंत्र महसूस करें।

जवाबों:


139

मैं सबसे निचले स्तर से शुरू करूँगा जो प्रासंगिक हो सकता है (मैं और भी निचले स्तर से शुरू कर सकता हूं, लेकिन वे शायद बहुत ही अप्रासंगिक हैं), एटम से शुरू होकर, बिजली तक, ट्रांजिस्टर से, लॉजिक गेट्स से, एकीकृत सर्किट (चिप / सीपीयू) तक ), और विधानसभा में खत्म (मुझे लगता है कि आप उच्च स्तर से परिचित हैं)।

शुरुआत में

परमाणु

परमाणु एक संरचना है जो इलेक्ट्रॉनों, प्रोटॉन और न्यूट्रॉन (जो स्वयं प्राथमिक कणों से बने होते हैं ) से बना होता है । कंप्यूटर और इलेक्ट्रॉनिक्स के लिए परमाणु के सबसे दिलचस्प हिस्सा हैं इलेक्ट्रॉनों क्योंकि इलेक्ट्रॉन मोबाइल हैं (यानी यह अपेक्षाकृत आसानी से घूम सकते, प्रोटॉन और न्यूट्रॉन जो अधिक स्थानांतरित करने के लिए मुश्किल हो जाता है के विपरीत) के अंदर आयोजित किया जा रहा बिना अपने आप में नाव को मुक्त रूप से और वे कर सकते हैं एक परमाणु।

आमतौर पर, प्रत्येक परमाणु में प्रोटॉन और इलेक्ट्रॉनों की समान संख्या होती है, हम इसे "तटस्थ" अवस्था कहते हैं। जैसा कि होता है, एक परमाणु के लिए अतिरिक्त इलेक्ट्रॉनों को खोना या प्राप्त करना संभव है। इस असंतुलित स्थिति में परमाणुओं को "सकारात्मक रूप से चार्ज किया गया" परमाणु (इलेक्ट्रॉनों से अधिक प्रोटॉन) और "नकारात्मक चार्ज" परमाणु (प्रोटॉन की तुलना में अधिक इलेक्ट्रॉन) कहा जाता है।

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

बिजली

बिजली एक क्षेत्र से केवल इलेक्ट्रॉनों का प्रवाह है जिसमें बहुत अधिक संख्या में नकारात्मक चार्ज वाले परमाणु होते हैं और बहुत अधिक संख्या में सकारात्मक चार्ज वाले परमाणु होते हैं। कुछ रासायनिक प्रतिक्रियाएं ऐसी स्थिति पैदा कर सकती हैं, जहां हमारे पास नकारात्मक चार्ज किए गए परमाणुओं (जिसे "एनोड" कहा जाता है) के साथ एक नोड है, और सकारात्मक चार्ज किए गए परमाणुओं के साथ एक और नोड ("कैथोड" कहा जाता है)। यदि हम दो विपरीत चार्ज किए गए नोड्स को एक तार से जोड़ते हैं, तो इलेक्ट्रॉनों का द्रव्यमान एनोड से कैथोड तक प्रवाहित होगा, और यह प्रवाह जिसे हम "विद्युत प्रवाह" कहते हैं।

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

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

मध्य युग

स्विच और ट्रांजिस्टर

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

एक सामान्य प्रकार का ट्रांजिस्टर, एनपीएन बाइपोलर जंक्शन ट्रांजिस्टर (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 देने में संकोच न करें या यदि आपके पास प्रतिनिधि है या पूरक उत्तर दें तो इसे स्वयं ठीक करें।


37
" भयानक " यह न्याय नहीं करता है। यह उत्तर सकारात्मक रूप से वीर है
njd

1
क्या परमाणु गलत नहीं है? आम तौर पर वे पूर्ण बाहरी उपधारा होने के लिए तटस्थ रहने के बजाय आवेशित परमाणुओं का निर्माण करेंगे
वैकल्पिक

3
अगर मैं कर सकता था तो +1, +1000। क्या वास्तव में मेरे लिए आश्चर्यजनक है, और मैं इस क्षेत्र से प्यार क्यों करता हूं , यह है कि इस जवाब में जानकारी की बड़ी चौड़ाई भी मुश्किल से तकनीक की अद्भुत गहराई की सतह को खरोंचना शुरू नहीं करती है जो एक आधुनिक पीसी काम करती है।
क्वेंटिन-स्टारिन

बकवास। वह तो कमाल है। काश मैं एक बार से अधिक उत्थान कर पाता।
रोब पी।

3
+1 हालांकि मुझे लगता है कि मुझे ध्यान देना चाहिए कि आधुनिक हार्डवेयर नंद द्वार के माध्यम से बिल्कुल नहीं किया गया है। द्वार हैं, हां, लेकिन वे वास्तव में काफी जटिल हैं और केवल (आमतौर पर) अनुमानित नंद तर्क हैं; बाधाओं बहुत अधिक शारीरिक हैं। भौतिक फाटकों को पहले तर्क मॉड्यूल में इकट्ठा किया जाता है, जो एक क्लासिक नंद हो सकता है लेकिन आमतौर पर अधिक होता है (जैसे, फ्लिप-फ्लॉप या आधा-योजक)। अनुमति दी गई फाटकों का सटीक सेट तर्क शैली का उपयोग करने और निर्माण संयंत्र की बाधाओं पर निर्भर करता है; हर फैब सब कुछ नहीं बना सकता है। (अरघ! मैं विवरण याद रखना शुरू कर रहा हूं! मदद!)
डोनल फेलो

12

नंद से लेकर टेट्रिस तक 12 चरणों में

मुझे लगता है कि यह आपके लिए एकदम सही होगा:

नंद से लेकर टेट्रिस तक 12 चरणों में


लिंक के लिए धन्यवाद, अब इसे देख रहा हूं। क्या इन वार्ताओं का एक केंद्रीय सूचकांक है, या क्या आपने इसे कहीं एक ब्लॉग पर देखने के लिए किया है?
झॉकिंग

मुझे यकीन नहीं है, यह विशेष रूप से तब सामने आया जब मैं एक दिन सर्फिंग कर रहा था
14-21

वह एक 13 वें चरण से चूक गए - सिलिकॉन वेफर्स।
जॉब

इसे पोस्ट करने के लिए धन्यवाद! यह मूल रूप से पाठ्यक्रम के सार का सारांश है कि इज़राइल में आईडीसी में वीडियो व्याख्यान में वार्ता के लेखक, और उनकी पुस्तक पर आधारित है - मैंने अपने उत्तर में पुस्तक का लिंक पोस्ट किया।
littleadv

क्या यह साइट समान सामग्री है? क्योंकि ऐसा लगता है कि यह सिर्फ एक बड़े वीडियो nand2tetris.org की
झॉकिंग

10

यदि आपने असेंबली की है, तो समझने के लिए केवल दो या तीन परतें बची हैं:

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

पिछले एक (माइक्रोकोड) ने इसे मेरे लिए "क्लिक" बना दिया है, क्योंकि इसने इलेक्ट्रॉनिक्स और कोड के बीच की खाई को भर दिया है।


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

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

7

एक सीएस स्नातक पाठ्यक्रम पाठ्यक्रम के लिए उदाहरण जो बताता है कि आपने जो पूछा है वह यहां पाया जा सकता है (IDC.AC.IL पाठ्यक्रम) १०११) । यह इस एमआईटी प्रेस की किताब पर आधारित है: " द एलिमेंट्स ऑफ कंप्यूटिंग सिस्टम: बिल्डिंग ए मॉडर्न कम्प्यूटर फ्रॉम फर्स्ट प्रिन्सिपल्स "।


1
"कम्प्यूटिंग सिस्टम के तत्वों" का उल्लेख करने के लिए +1। यह एक महान पुस्तक है, और "कंप्यूटर कैसे काम करते हैं?" के सवाल का सटीक उत्तर देना चाहिए।
सेड्रिक

क्या आप इन संसाधनों पर क्या करते हैं और इस सवाल का जवाब देने के लिए आपको क्या सलाह देते हैं? स्टैक एक्सचेंज में "लिंक-ओनली आंसर" का बहुत स्वागत नहीं है
'22

7

इस सवाल का पूरी तरह से जवाब देने के लिए एक पूरी किताब होगी। सौभाग्य से किसी ने पहले ही उस पुस्तक को लिखा है। इसे चार्ल्स पेट्ज़ोल्ड द्वारा कोड: द हिडन लैंग्वेज ऑफ कंप्यूटर हार्डवेयर एंड सॉफ्टवेयर कहा जाता है। यह एक अत्यंत ज्ञानवर्धक और बहुत ही मनोरंजक पठन है।


1
+1, "पेट्ज़ोल्ड" के लिए सिर्फ Ctrl-F जवाब लाता है कि मुझे पूरा यकीन था;)
mlvljr

4

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


3

यह सब कुछ सूचीबद्ध करने के लिए बहुत मुश्किल (और लंबा!) होने जा रहा है जिसे आपको जानने के लिए पर्याप्त जानकारी प्राप्त करने की आवश्यकता हो सकती है। एक प्रसिद्ध पुस्तक जो वास्तव में इन सभी सवालों का जवाब देती है, एंड्रयू टेनबाम: स्ट्रक्चर्ड कंप्यूटर ऑर्गनाइजेशन

यह पुस्तक वास्तव में आपको अपनी मेज पर भौतिक कंप्यूटर से तर्क गेट्स और बूलियन बीजगणित तक ले जाती है, फिर आपको एक उदाहरण वास्तुकला दिखाती है कि कैसे इस तरह की प्रणाली में वास्तव में सब कुछ होता है।

(एक नोट: यह ~ 800 पृष्ठों के बाद से बहुत महंगा है। यह सिर्फ एक सेकंड हैंड वर्जन या एक पुराने संस्करण को प्राप्त करने के लिए शायद अच्छा है। अवधारणाएं बदल गई हैं।)


2

वैसे यह कहने और पूछने के लिए मुझे बहुत सी गेंद लगती है।

बहुत अधिक कोड आगे कम हो गया है और नीचे और अधिक जटिल निचले स्तर के कोड के लिए। नीचे विधानसभा स्तर कोड के साथ धक्का और रजिस्टर रजिस्टर .. आदि ...

तब हार्डवेयर इस कोड को लेता है, और इस पर कार्य करता है। ज्यादातर बार हार्डवेयर वास्तव में अपने स्वयं के निर्देश होंगे कि चीजों को कैसे करना है। तो एक सरल निर्देश हो सकता है जैसे PUSH जहाँ एक रजिस्टर (मेमोरी लोकेशन) को 1 या 2 या जो कुछ भी जैसे मान मिलता है ..

यह निश्चित रूप से एक कंप्यूटर सवाल है। और एक प्रोग्रामिंग भी। कुछ प्रोग्रामर हार्डवेयर को प्रोग्राम करते हैं जो आपके कोड को ले जाएगा और इसे कुछ निम्न स्तर पर बना देगा। यह एक इलेक्ट्रॉनिक्स प्रश्न भी है।


1

उपकरण हैं।

फिर डिवाइस ड्राइवर हैं जो इन उपकरणों के साथ बातचीत करते हैं। सी में लिखा हिस्सा, विधानसभा में आमतौर पर हिस्सा।

ओएस एक छोर पर एप्लिकेशन सॉफ़्टवेयर के साथ इंटरैक्ट करता है और वास्तविक हार्डवेयर के साथ संचार करने के लिए दूसरे पर डिवाइस ड्राइवर।

यदि आप वास्तव में रुचि रखते हैं तो अधिक जानने के लिए लिनक्स कर्नेल हैकिंग क्यों नहीं करते हैं?


आपके उत्तर और सुझाव के लिए धन्यवाद। यह एक बढ़िया विचार की तरह लगता है!
रोब पी।

1

चीजों के मूल में यह एक इलेक्ट्रॉनिक्स प्रश्न है, हालांकि इस की मूल बातें किसी भी सीएस डिग्री के लिए सर्वेक्षण पाठ्यक्रम में कवर की जानी चाहिए थीं। घटक स्तर पर क्रमादेशित सभी फाटकों पर आधारित सभी हार्डवेयर कार्य करता है। ये तार्किक संचालन के सबसे मूल हैं: NOT, AND, OR, XOR, NAND, NOR। प्रत्येक गेट का एक विशिष्ट कार्य होता है:

नहीं फाटक एक इनपुट मूल्य लेता है और एक उत्पादन मूल्य पैदा करता है, यह एक 0 या 1 हो जाता है और विपरीत आउटपुट।

और फाटक दो इनपुट मानों का उपयोग करके एक उत्पादन मूल्य पैदा करता है, यह दो लोगों को, जिसके लिए यह आउटपुट एक 1 को छोड़कर किसी भी संयोजन के लिए 0 और 1 और आउटपुट 0 के किसी भी संयोजन हो जाता है।

या गेट ज्यादा और गेट की तरह काम करता है, लेकिन दो शून्य, जिसके लिए वह एक 0 आउटपुट को छोड़कर 0 और 1 यह हो जाता है के प्रत्येक संयोजन के लिए एक 1 का उत्पादन करेगा।

XOR फाटक फिर दोनों AND और OR फाटक के समान है, लेकिन जब दोनों आदानों ही कर रहे हैं, और एक 1 जब दोनों आदानों अलग हैं यह एक 0 का उत्पादन करेगा।

नन्द फाटक और गेट के तार्किक विपरीत है और न ही गेट या गेट के तार्किक विपरीत है।

दूसरे शब्दों में, हार्डवेयर स्तर पर, यह सभी द्विआधारी तार्किक अभिव्यक्तियों के सबसे मूल में आता है। बाकी सब कुछ प्रोग्रामिंग के उच्च स्तर से निचले स्तर तक एक संक्रमण है जब तक कि यह अंतिम परत तक नहीं पहुंचता।


+1 अगला स्तर है कि इन लॉजिक गेट्स के साथ क्रमबद्ध व्यवहार कैसे किया जाए। प्रमुख घटक फ्लिप-फ्लॉप है । तर्क गेट्स को एक ALU बनाने के लिए इकट्ठा करें, रजिस्टरों के लिए कुछ फ्लिप-फ्लॉप, एक घड़ी, और आपको एक सीपीयू मिलता है।
मौविसील

@mouviciel आप मल्टीप्लेक्सर्स को भूल गए।
Starblue

1

मशीन निर्देशों में एक उच्च स्तरीय भाषा में एक कार्यक्रम को परिवर्तित करने के लिए भाग के लिए, किसी भी संकलक को बिल भरना चाहिए। उदाहरण के लिए ड्रैगन बुक

"निर्देश कैसे निष्पादित किए जाते हैं?" कंप्यूटर संगठन और डिजाइन: हार्डवेयर / सॉफ्टवेयर इंटरफ़ेस बिल भरना चाहिए।


1

हालांकि मुझे यह डगमगाता है कि कोई व्यक्ति हार्डवेयर को समझे बिना सीएस में एक कोर्स पूरा कर सकता है, मुझे लगता है कि यह पूरी तरह से संभव है कि एक कोर्स केवल इंजीनियरिंग और कार्यान्वयन विवरण के बजाय गणित की एक शाखा के रूप में सिद्धांत पर ध्यान केंद्रित कर सकता है। आदरणीय एसआईसीपी व्याख्यान (जैसा कि 1980 के दशक में दिया गया था) ऐसा प्रतीत होता है।

मेरे सीएस कोर्स पर, दो दशक पहले, कंप्यूटर का एक पुराना संस्करण : पहले वर्ष में लॉजिक से आर्किटेक्चर तक पढ़ना आवश्यक था।
कुछ इस तरह अंतराल में भरना चाहिए।

वैकल्पिक रूप से, एमआईटी के ओपन कोर्टवेयर में कुछ ऐसा होना चाहिए जो मदद करेगा।

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