ट्यूरिंग पूर्ण प्रोसेसर बनाने के लिए आवश्यक निर्देशों का पूर्ण न्यूनतम सेट क्या है


19

मुझे इस बात का सामान्य अंदाजा है कि प्रोसेसर निर्देश को कैसे संभालता है लेकिन अपना समय ज्यादातर उच्च स्तरीय भाषाओं में काम करने में व्यतीत करता है। हो सकता है कि कोई व्यक्ति जो लोहे के करीब काम करता है, कुछ मूल्यवान जानकारी प्रदान कर सकता है।

यह मानते हुए कि प्रोग्रामिंग भाषाएं मूल रूप से प्रोसेसर के इंस्ट्रक्शन सेट के बहुत उच्च स्तर के सार हैं, ट्यूरिंग मशीन बनाने के लिए आवश्यक निर्देशों का सबसे बुनियादी सेट क्या है?

नोट: मुझे हार्डवेयर आर्किटेक्चर की विविधता के बारे में कुछ भी पता नहीं है लेकिन - सादगी के लिए - यह मानती है कि यह ALU (यदि आवश्यक हो) और निर्देश स्टैक के साथ एक विशिष्ट प्रोसेसर है। *


इसी तरह के प्रश्न पूछने के लिए कंप्यूटर साइंस एसई एक बेहतर स्थान हो सकता है। (इस समय आपको वहाँ निर्देशित करने का कोई मतलब नहीं है।) दिलचस्प सवाल है।
Oskar Skog

चूंकि ISA के निर्देशों की संख्या कम हो गई है, इसलिए निर्देशों की संख्या का अर्थ स्पष्टता है। जब वे "इष्टतम" RISC की तुलना में कम निर्देश रखते हैं, तो ISAs को अजीब लगता है। केवल एक निर्देश के साथ आईएसए अजीब होने जा रहा है। // संख्या बढ़ने के साथ उन्हें भी मिलाया जाता है और ISA एक CISC बन जाता है। // "अजीब" कम या ज्यादा व्यक्तिपरक है।
Oskar Skog

जवाबों:


35

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


4
+1 सबसे अच्छा संभव उत्तर देने के लिए, जब तक कि एक शून्य निर्देश समाधान नहीं मिलता है (वास्तव में, एक अनुदेश कंप्यूटर को कभी-कभी शून्य निर्देश कंप्यूटर कहा जाता है, क्योंकि निर्देश में कोई जानकारी नहीं मिली है)
Cort Ammon - Re Monate Monica

4
हां, लेकिन यह एक निर्देश नहीं है जो मशीन को पूर्ण बनाता है: जादू सभी विशिष्ट विशिष्ट रजिस्टरों में से एक है जो निर्देश को संबोधित कर सकता है। मुझे लगता है कि आपका उत्तर बताता है कि ओपी "वॉन न्यूमैन आर्किटेक्चर" के साथ "कंप्यूटर" की बराबरी करता है, जब वास्तव में, "कंप्यूटर" श्रेणी उससे कहीं अधिक व्यापक होती है।
सोलोमन स्लो

2
@jameslarge विशेष रजिस्टरों में जादू जरूरी नहीं है। BitBitJump, SBNZ, SUBLEQ और SUBNEG को रजिस्टर की जरूरत नहीं है, बस एक ही निर्देश है, और गूंगा स्मृति।
8bittree

2
@ 8 बिट्टी, हँह! मुझे लगता है कि मैं भूल गया कि अजीब-लेकिन-ट्यूरिंग-पूर्ण आर्किटेक्चर को डिजाइन करना एक प्रतिस्पर्धी खेल है। जब मैंने जार्ग के उत्तर को पढ़ा, तो मैंने अपने अंडरग्राउंड दिनों (लगभग 1980-कुछ) में एक दोस्त को वापस बुलाया, जिसने 74LS श्रृंखला के चिप्स से एक "एक निर्देश कंप्यूटर" बनाने की योजना बनाई, और फिर इसे एक DecSystem 10. का अनुकरण करने के लिए प्रोग्राम किया। बस देखा गया विकिपीडिया पृष्ठ पर, और मुझे अब पता चला है कि उनके डिजाइन को आज "ट्रांसपोर्ट ट्रिगर्ड आर्किटेक्चर" कहा जाएगा। मुझे नहीं पता कि क्या उसने कभी इसका अनुसरण किया है।
सोलोमन स्लो

2
@jameslarge: Intel MMU ट्यूरिंग-पूर्ण (विशेष रूप से, ट्रैप तंत्र) है। यह वास्तव में बहुत अजीब है, हालांकि, यह डिजाइन किए जाने के विपरीत है, यह एक शुद्ध दुर्घटना है।
जोर्ग डब्ल्यू मित्तग

15

कुछ को लागू करने के कई तरीके हैं जो एक ट्यूरिंग मशीन को लागू कर सकता है।

जैसा कि आप प्रोसेसर को देख रहे हैं, जो सबसे अधिक लागू होता है वह शायद रजिस्टर मशीन मॉडल है । इनमें से सबसे सरल (प्रतीकों के संदर्भ में) मुलिट-टेप टू सिंबल ( markऔर blank) है। यदि आप कुछ के लिए जाना जाता है जैसे कि गूढ़ नहीं है inc(r), dec(r)और , jz(r,z)( और यदि कूद रजिस्टर rशून्य है तो अनुदेश z) या clr(r)(स्पष्ट r) inc, je(i,j,z)(कूदो अगर रजिस्टर i और j निर्देश z के बराबर हैं)।

मैंने एक रजिस्टर मशीन का उल्लेख देखा है जो है:

  • inc (i, m) - वेतन वृद्धि i और लाइन m पर जाएं
  • jzdec (i, m1, m2) - यदि रजिस्टर i है, तो लाइन m पर जाना है, अन्यथा डिक्रिप्शन i, और लाइन m2 में जाना है

जो पूरी तरह से ट्यूरिंग कर रहा है - इसकी एक मिन्स्की रजिस्टर मशीन, हालांकि इसमें टेप में डेटा पर अन्य अड़चनें हैं (इसे व्यक्तिगत रजिस्टरों के बजाय राज्य को संग्रहीत करने वाला गोडेल नंबर होना चाहिए)

बस। और कुछ नहीं।


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

  • > डेटा पॉइंटर को बढ़ाएँ
  • < डेटा पॉइंटर को कम करना
  • + डेटा पॉइंटर पर डेटा बढ़ाएँ
  • - डेटा पॉइंटर पर डेटा को घटाता है
  • . डेटा पॉइंटर पर डेटा आउटपुट करता है
  • , डेटा सूचक पर डेटा संग्रहीत करते हुए इनपुट पढ़ें
  • [यदि पॉइंटर पर डेटा शून्य है, तो इंस्ट्रक्टर पॉइंटर को एक के आगे ले जाने के बजाय, मिलान ]कमांड के बाद इसे कमांड पर जंप करें।
  • ]अगर सूचक पर डेटा अशून्य है, बजाय अनुदेश सूचक आगे बढ़ने की, इसे वापस आदेश के मिलान के बाद कूद ]आदेश

एक को ब्रेनफक के लिए कंपाइलर मिल सकते हैं , हालांकि वास्तव में इसमें साधारण चीजें करने में भी मजा नहीं आता है। जब तक आप हताशा का आनंद नहीं लेते हैं, जो भाषा का उद्देश्य है।

संबंधित पढ़ना:


5

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

  • वर्तमान स्थान पर बिट सेट करें;
  • वर्तमान स्थान पर बिट रीसेट करें;
  • अगले पते पर जाएं (वेतन वृद्धि का पता रजिस्टर);
  • पिछले पते पर जाएं (वेतन वृद्धि का पता रजिस्टर);
  • वर्तमान डेटा स्थान पर बिट की जाँच करें।

मुझे नहीं लगता कि कुछ सरल हार्डवेयर-वार का आविष्कार करना आसान है, हालांकि कुछ और भी कम शायद मौजूद है।


5

क्रियान्वयन

यह उत्तर एकल निर्देश सेट सीपीयू, संकलक और कोडांतरक के दिलचस्प कार्यान्वयन पर केंद्रित होगा।

movfuscator

https://github.com/xoreaxeaxeax/movfuscator

केवल movx86 निर्देशों का उपयोग करके सी कोड संकलित करता है , यह एक बहुत ही ठोस तरीके से दिखाता है कि एक एकल निर्देश पर्याप्त है।

ट्यूरिंग पूर्णता एक कागज में साबित हुई है: https://www.cl.cam.ac.uk/~sd601/papers/mov.pdf

subleq

https://esolangs.org/wiki/Subleq :

यह सभी देखें

/programming/3711443/minimal-instruction-set-to-solve-any-problem-with-a-computer-program/38523869#38523869


3

ट्यूरिंग पूर्ण प्रोसेसर बनाने के लिए आवश्यक निर्देशों का पूर्ण न्यूनतम सेट क्या है?

जोर्ग डब्ल्यू मित्तग ने कहा, "एक," लेकिन शून्य के बारे में कैसे?

आप यह क्यों मानते हैं कि "प्रोसेसर" के पास "निर्देश" हैं?

ट्यूरिंग मशीन एक ट्यूरिंग-पूर्ण प्रोसेसर है, और यह इस तरह "निर्देश" पर काम नहीं करता है। इसमें नियम हैं , लेकिन नियम निर्देश नहीं हैं जो एक यादृच्छिक-एक्सेस मेमोरी से प्राप्त होते हैं।

जब एलन ट्यूरिंग ने अपनी एपिनेम मशीन के बारे में सोचा, तो वह "गणना" के सबसे सरल संभव मॉडल की खोज कर रहे थे, ताकि वह इस सवाल का जवाब देने के लिए गणितीय तकनीकों का उपयोग कर सकें, "क्या कम्प्यूटेबल है?"

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

FWIW, जिस प्रकार का प्रोसेसर आप सोच रहे हैं --- एक जो मेमोरी से निर्देश प्राप्त करता है, उन्हें डिकोड करता है, और उन्हें निष्पादित करता है, और जो एक ही मेमोरी सिस्टम में संग्रहीत डेटा पर संचालित होता है --- एक वॉन न्यूमैन आर्किटेक्चर के रूप में जाना जाता है

https://en.wikipedia.org/wiki/Von_Neumann_architecture

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