8-बिट प्रोसेसर 256 बाइट से अधिक रैम का समर्थन कैसे कर सकता है?


14

यदि एक 32- बिट प्रोसेसर लगभग 4 GiB RAM (यानी ) बाइट्स को संभाल सकता है , तो मेरे Arduino Mega 2560 में 8 kb का SRAM है, अगर 8- बिट होने की अनुमति देता है सिर्फ 256 बाइट्स संभालें ( )? या मैं निम्नलिखित पृष्ठ गलत पढ़ रहा हूँ?232=42949672962 828

http://www.atmel.com/devices/atmega2560.aspx?tab=parameters


5
निश्चित रूप से कोई भी ट्यूरिंग-पूर्ण मशीन पर्याप्त रूप से दिए गए राम के लगभग किसी भी आकार को संबोधित करने में सक्षम है।
जॉन यू

2
वास्तव में एक प्रोसेसर नाम में बिट्स की संख्या का उपयोग केवल आंतरिक डेटा चौड़ाई के अप-फ्रंट अनुमान के लिए किया जा सकता है। 8088 अपने 16-बिट रजिस्टरों के कारण 16-बिट प्रोसेसर है, लेकिन इसमें 8-बिट डेटा बस और 20-बिट एड्रेस बस है। 68000 एक 32-बिट प्रोसेसर है, जिसे ज्यादातर अपने 32-बिट रजिस्टरों के कारण 16/32-बिट कहा जाता है, लेकिन इसमें 16-बिट डेटा बस और 24-बिट एड्रेस बस है। छोटे एआरएम कार्यान्वयन 32-बिट प्रोसेसर (32-बिट रजिस्टर और डेटा-बस) हैं, लेकिन भले ही वे पते के लिए 32 बिट्स का उपयोग करते हैं, जो कुल 4 जीबी को संबोधित नहीं कर सकते हैं।
व्यस्त

मैंने इन इकाइयों के लिए सही SI उपसर्ग जोड़े हैं। जीबी (Gi) है और kibi (Ki) है। २ २ १०230210
इलियट एल्डरसन

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

8-बिट, 16-बिट, 32-बिट इत्यादि कुछ को कॉल करने से मार्केटिंग शब्द कहते हैं, इंजीनियर इसका उपयोग करते हैं, लेकिन यह समझते हैं कि उस प्रोसेसर में हर चीज का मतलब इतना चौड़ा नहीं है। कुछ लोग अनुदेश के आकार का उपयोग करते हैं, बहुत बार सामान्य प्रयोजन के रजिस्टरों के आकार का उपयोग किया जाता है, कभी-कभी बस। आपके पास प्रोग्राम काउंटर है जो हमेशा सुलभ या निर्देशों में प्रयोग करने योग्य नहीं है ताकि वे जितना चाहें उतना व्यापक हो सकें। तब AVR प्रकार के कई प्रोसेसर के साथ एक मल्टी रजिस्टर या पेजिंग स्कीम या डेटा लेनदेन के लिए एक व्यापक लोड / स्टोर पता प्राप्त करने के लिए दोनों होते हैं।
Old_timer

जवाबों:


19

अधिकांश 8 बिट सीपीयू में 16 बिट एड्रेस बसें होती हैं जो उन्हें 64kbytes को संबोधित करने की अनुमति देती हैं, ठीक है क्योंकि 256 बाइट्स वास्तव में बहुत ज्यादा करने के लिए पर्याप्त नहीं हैं! इसका मतलब है कि उन्हें एक के बजाय दो बाइट्स लोड करने की आवश्यकता है, हर बार उन्हें एक पते को लोड करने की आवश्यकता होती है। उनके आकार को देखते हुए थोड़ा धीमा लेकिन सहन करने योग्य।

(और हाँ कई अपवाद भी हैं, ज्यादातर तब विकसित हुए जब 64k बहुत छोटा हो गया, लेकिन हम यहां मूल विचार के बारे में बात कर रहे हैं)।


वास्तव में मैंने जो 8-बिट माइक्रोकंट्रोलर्स का सामना किया है उनमें से अधिकांश का 16-बिट पता नहीं है
phuclv

@ ब्रायन ड्रमंड अमाउंट मैं सही हूं: कंट्रोलर पहले 8 बिट्स और फिर अपर 8 बिट्स लिखेगा और फिर एड्रेस बस को लैच करेगा। यह है कि यह 16bit पता बस तक कैसे पहुंचेगा!
स्वानंद

या ऊपरी 8 बिट्स, फिर 8 बिट्स, लेकिन मूल रूप से हां, यह विचार है।
ब्रायन ड्रमंड

7

पता बस और डेटा बस अलग होती है तो वे विभिन्न आकारों हो सकता है। किसी भी विशिष्ट पते बस आकार के लिए रजिस्टर बिट चौड़ाई की तुलना में अधिक मेमोरी को संबोधित करने के लिए बहुत सारी तकनीकें हैं

  • सबसे आम तरीका किसी भी तरह से एड्रेस बस की चौड़ाई बढ़ा रहा है

    • पते के लिए कई रजिस्टरों का उपयोग करना

      • AVR में R26..R31 है, जिसे 16-बिट में जोड़ा जा सकता है X, Yऔर Zअधिकतम 64KB RAM की अनुमति देने के लिए डेटा एड्रेसिंग रजिस्टर होता है। बदले में उन के साथ जोड़ा जा सकता है RAMPX, RAMPY, RAMPZभी बड़ा संस्करणों में उच्च रैम पतों का उपयोग करने की। इसमें रैम 1 के 256 बाइट्स वाले वेरिएंट के SPHअलावा स्टैक पॉइंटर के हाई बाइट्स भी हैंSPL
      • Intel 8080 और Zilog Z80 8-बिट CPU हैं, लेकिन उनके पास रजिस्टर जोड़े हैं जैसे H& L, B& C, Dऔर Eजिसे 16-बिट एड्रेस रजिस्टर के रूप में एक साथ उपयोग किया जा सकता है
    • संबोधित करने के लिए प्राकृतिक आकार से बड़ा एक भी बड़ा विशेष रजिस्टर का उपयोग करना

      • इंटेल 8051 एक 8-बिट माइक्रोकंट्रोलर है, अर्थात इसमें 8-बिट डेटा पता है। हालाँकि, यह 16-बिट इंस्ट्रक्शन एड्रेस का उपयोग करता है और इसमें 2 16-बिट रजिस्टर होते हैं: इंस्ट्रक्शन स्पेस में एड्रेसिंग के लिए PC और DPTR।
      • AVR में 16 या 22-बिट पीसी रजिस्टर है
    • पते के उच्च भाग के लिए एक विशेष रजिस्टर का उपयोग करना । कुछ मेमोरी को संबोधित करते समय, डिफ़ॉल्ट रूप से 8 बिट बिट्स को 8-बिट तत्काल या 8-बिट रजिस्टर से 8-बिट माइक्रोकंट्रोलर पर लिया जाएगा, जबकि उच्च बिट्स को अन्य पते रजिस्टर के मूल्य से बदल दिया जाएगा।

      • इसका एक विशेष मामला खंडित मेमोरी है , जिसका उपयोग 16-बिट x86 द्वारा किया जाता है । इस तकनीक में मेमोरी को 64KB (2 16 बाइट्स) आकार के कई खंडों में विभाजित किया गया है । सामान्य पहुंच डिफ़ॉल्ट रूप से एकल खंड के अंदर होती है ताकि वे निकट डेटा के लिए 16-बिट पते का उपयोग कर सकें । डेटा जो आगे अलग हैं उन्हें विशेष रूप से खंड मूल्य द्वारा संबोधित किया जाना चाहिए, इसलिए 2 रजिस्टरों का उपयोग दूर के पते के लिए किया जाना चाहिए।
      • पीआईसी माइक्रोकंट्रोलर , जिसका आधारभूत और मध्य दूरी श्रृंखला 13 या 14-बिट पता हो सकता है, एक और उदाहरण है। उपयोग callया gotoनिर्देश करते समय, पते के 8 या 9 कम बिट्स को तत्काल द्वारा इंगित किया जाता है और शेष वर्तमान प्रोग्राम काउंटर से लिया जाता है। इसलिए वर्तमान खंड के आस-पास कुछ भी नहीं पहुंचना केवल 1 निर्देश का उपयोग करता है, जबकि आगे के पते पर 2 निर्देशों (उच्च बिट्स को सेट करने के लिए) की आवश्यकता होगी।
      • एक अन्य उदाहरण MIPS वास्तुकला है जो PCबिना शर्त कूदते हुए उच्च 6 बिट्स के साथ निचले 26-बिट तत्काल पते को जोड़ती है ।
  • इसे प्राप्त करने का दूसरा तरीका मेमोरी बैंकिंग है । यह आजकल भी कुछ आर्किटेक्चर में एक उपयोगी विधि है। इस मॉडल में, मेमोरी को कई बैंकों में विभाजित किया गया है । हर बार आप केवल एक विशिष्ट बैंक को ही संबोधित कर सकते हैं। अक्सर एक वैश्विक बैंक या पता सीमा होती है जो हमेशा किसी भी समय दिखाई देती है, लेकिन अन्य भागों के लिए आपको ज़रूरत पड़ने पर बैंक स्विच करना चाहिए।

    • इंटेल 8051 रजिस्टरों के लिए मेमोरी बैंकिंग का उपयोग करता है। इसमें 32 रजिस्टर हैं लेकिन उनमें से केवल 8 एक बार में दिखाई देते हैं।
    • x86 पीएई और एआरएम एलपीएई , बड़े भौतिक पते वाले स्थान के साथ एक छोटे आभासी पते वाले स्थान पर मैप किए गए
    • इसके लिए एक अन्य एप्लिकेशन विंडोज पर एड्रेस विंडोडिंग एक्सटेंशन्स है , जिसका उपयोग पीएई मोड में 32-बिट x86 ऐप द्वारा 2 / 3GB से अधिक मेमोरी का उपयोग करने के लिए किया जा सकता है। यह बिल्कुल माइक्रोकंट्रोलरों पर एक मेमोरी बैंक की तरह नहीं है, लेकिन इसे इस तरह से देखा जा सकता है, क्योंकि बड़ी एड्रेस रेंज को छोटी खिड़कियों / बैंकों के बारे में सोचा जा सकता है जो ऐप के एड्रेस स्पेस में फिट होने के लिए काफी छोटा है। यदि एप्लिकेशन को किसी विंडो में डेटा का उपयोग करने की आवश्यकता होती है, तो वह उस विंडो को अपने वर्तमान पता स्थान में मैप करेगा।
    • DOS में कुछ प्रकार के बैंक स्विचिंग भी होते हैं जैसे कि विस्तारित मेमोरी या सीमित मेमोरी के कारण पता योग्य मेमोरी सीमित होती है।
  • एक बहुत ही सामान्य तकनीक नहीं है, लेकिन इंटेल 8051 में पाया जा सकता है । 8-बिट डेटा पते के साथ एक माइक्रोकंट्रोलर के रूप में, इसमें अधिकतम 256 पते हो सकते हैं। आधी जगह (उच्च भाग) का उपयोग विशेष फ़ंक्शन रजिस्टर ( एसएफआर ) के लिए किया जाता है , जो वास्तविक रैम को केवल 128 बाइट्स के लिए संबोधित करता है। हालांकि आधुनिक 8051 श्रृंखला के निर्माताओं ने मेमोरी एक्सेस को अलग करके इसे दूर करने का एक चतुर तरीका पाया । प्रत्यक्ष पते अप्रत्यक्ष रूप से संबोधित करते हुए एसएफआर तक पहुंचेंगे , हालांकि रजिस्टरों में रैम के उच्च भाग तक पहुंच होगी जिसका मतलब है कि अब आपके पास 256 + 128 = 384 पता योग्य बाइट्स हैं।


1 https://en.wikipedia.org/wiki/Atmel_AVR_instruction_set#Memory_addressing_instructions

सबसे छोटे कोर में डेटा एड्रेस स्पेस के 6256 बाइट्स होते हैं (I / O पोर्ट्स और अन्य आरक्षित पते हटाए जाने के बाद रैम की tes128 बाइट्स) और प्रोग्राम रोम के 198192 बाइट्स (B किब)। इनमें केवल 8-बिट स्टैक पॉइंटर (SPL में) है, और केवल 12-बिट सापेक्ष कूद / कॉल निर्देश RJMP / RCALL का समर्थन करता है। (क्योंकि AVR प्रोग्राम काउंटर 16-बिट शब्दों को गिनता है, बाइट्स को नहीं, एक 12-बिट ऑफ़सेट ROM के 213 बाइट्स को संबोधित करने के लिए पर्याप्त है।)

उपलब्ध संसाधनों को एक्सेस करने के लिए आवश्यक अतिरिक्त मेमोरी एड्रेसिंग क्षमताएं मौजूद हैं:

  1. डेटा एड्रेस स्पेस के 256 बाइट्स (by256 बाइट्स ऑफ रैम) वाले मॉडल में 16-बिट स्टैक पॉइंटर होता है, जिसमें SPH रजिस्टर में हाई हाफ होता है।
  2. ROM के 8 KiB वाले मॉडल 2-शब्द (22-बिट) JUMP और CALL निर्देश जोड़ते हैं। (कुछ शुरुआती मॉडल को एक गलतफहमी झेलनी पड़ती है अगर एक स्किप इंस्ट्रक्शन को 2-वर्ड इंस्ट्रक्शन द्वारा फॉलो किया जाता है।)
  3. ROM के 64 KiB वाले मॉडल ELPM निर्देश और इसी RAMPZ रजिस्टर को जोड़ते हैं। एलपीएम निर्देश Z में ROM पते को शून्य-विस्तारित करता है; ELPM निर्देश उच्च बिट्स के लिए RAMPZ रजिस्टर प्रस्तुत करता है। यह सामान्य एलपीएम निर्देश के समान नहीं है; ELPM (ATmega103 और at43usb320) के केवल शून्य-ऑपरेंड रूप के साथ "क्लासिक" मॉडल मौजूद हैं। जब ऑटो-इंक्रीमेंट उपलब्ध होता है (अधिकांश मॉडल), यह RAMPZ सहित पूरे 24-बिट पते को अपडेट करता है।
  4. (दुर्लभ)> 128 केबी के रोम के मॉडल में 3-बाइट प्रोग्राम काउंटर होता है। सबरूटीन कॉल और रिटर्न स्टैक स्पेस के एक अतिरिक्त बाइट का उपयोग करते हैं, इंडिरेक्ट जंप और कॉल के लिए अतिरिक्त उच्च बिट्स प्रदान करने के लिए एक नया EIND रजिस्टर है, और नए विस्तारित निर्देश EIJMP और EICALL हैं जो EIND: Z का उपयोग गंतव्य पते के रूप में करते हैं। (पिछले IJMP और ICALL निर्देश शून्य-विस्तारित Z का उपयोग करते हैं)
  5. (दुर्लभ) RAM पता स्थान के 64 KiB मॉडल के साथ RAMPX, RAMPY, RAMPZ और RAMPD रजिस्टरों के साथ 16-बिट RAM पता सीमा का विस्तार होता है। ये मोड को संबोधित करने के लिए अतिरिक्त उच्च बिट्स प्रदान करते हैं जो क्रमशः X, Y, या Z रजिस्टर जोड़े का उपयोग करते हैं, या सीधे संबोधित करने वाले निर्देश LDS / STS। रॉम एक्सेस के विपरीत, कोई अलग "विस्तारित" निर्देश नहीं हैं; इसके बजाय RAMP रजिस्टरों का बिना शर्त उपयोग किया जाता है।

6

लगभग सभी 8-बिट प्रोसेसर में कम-ऑर्डर वाले हिस्से और उच्च-ऑर्डर वाले हिस्से से 16-बिट पते बनाने की क्षमता होती है। मूल 8080 सहित कुछ प्रोसेसर पर, एक पते के ऊपरी और निचले हिस्से को रखने के लिए समर्पित रजिस्टर हैं (हालांकि एक प्रोग्रामर के दृष्टिकोण से 8080 के स्टैक पॉइंटर जैसे कुछ रजिस्टर हो सकते हैं जो उन्हें अलग से संबोधित करने के लिए निर्देश नहीं देते हैं)। कुछ अन्य प्रोसेसर में, एक पते के ऊपरी या निचले आधे हिस्से के लिए समर्पित रजिस्टर नहीं होते हैं, लेकिन पते "मक्खी पर" इकट्ठे होते हैं। उदाहरण के लिए, 6502 पर, निर्देश "एलडीए $ 1234, एक्स" संचायक को 1234 डॉलर 8-बिट एक्स रजिस्टर में जोड़कर बनाए गए पते से लोड करता है [मान लीजिए कि इसमें $ F0 शामिल है]। उस निर्देश का निष्पादन 4 या 5 चरणों में आगे बढ़ेगा:

  1. पिछले निर्देश (यदि कोई हो) से रजिस्टर रजिस्टर समाप्त करें और ओपकोड ($ बीडी) लोड करें
  2. निर्देश को डिकोड करते समय ओपोड ($ 34) के बाद पहला ऑपरेंड बाइट प्राप्त करें
  3. एक्स-रजिस्टर में पहले से लाए गए बाइट को जोड़ते हुए दूसरा ऑपरेंड बाइट ($ 12) प्राप्त करें
  4. ALU परिणाम [यानी $ 1224] के लिए दूसरे ऑपरेंड बाइट को समेटते हुए बनाए गए पते पर मेमोरी पढ़ें। दूसरा ऑपरेंड बाइट फ़ीड ALU में शून्य या एक जोड़ने पर निर्भर करता है कि क्या पिछले ऐड ने कैरी जनरेट किया था
  5. ALU परिणाम [$ 1334] के साथ ऊपरी आधे को बदलकर बनाए गए पते पर मेमोरी पढ़ें

संचायक के लिए रीड बाइट का स्थानांतरण अगले अनुदेश के लाने को ओवरलैप करेगा। इसके अतिरिक्त, कई परिचालनों के लिए, यदि चरण 3 में कोई वहन नहीं होता है, तो चरण 4 में सही पता पढ़ा होगा और निष्पादन चरण 4 से सीधे अगले चरण पर जा सकता है, चरण 5 को दरकिनार कर सकता है।

यदि कोई संचालन के अनुक्रम की जांच करता है, तो एक नोटिस करेगा कि एक छोटे-एंडियन आर्किटेक्चर का एक बड़े-एंडियन पर एक निश्चित लाभ है, जिसमें ज्यादातर मामलों में (यद्यपि दिखाया गया एक नहीं है), भले ही एएलयू प्रदर्शन करने के लिए एक चक्र लेता है। इसके अलावा, ALU परिणाम की प्रतीक्षा किए बिना, गणना किए गए पते से एक बाइट को पढ़ना संभव है, क्योंकि आमतौर पर जो उच्च बाइट प्राप्त किया गया था, वह लक्ष्य ऑपरेंड का उच्च बाइट होगा। 8-बिट ALU के साथ एक बड़े-एंडियन मशीन पर, एक अनुक्रमित लोड कम से कम 5 चक्र लेगा (क्योंकि पते के निचले आधे हिस्से को चरण 3 तक नहीं पढ़ा जाएगा, और इस प्रकार चरण 4 में गणना की जाएगी)।


मुझे याद है कि 8-बिट प्रोसेसर और 1 मेगाबाइट मेमोरी वाले कंप्यूटर के लिए कुछ विज्ञापन देखना। यह सीपीयू पर दो 8-बिट रजिस्टर का उपयोग करके किया गया था और एक 8-बिट रजिस्टर पूरे पते के लिए सीपीयू पर नहीं।
user6030

@ user6030: इस तरह की चीजों को पूरा करने के कई तरीके हैं। आमतौर पर पता स्थान के कुछ हिस्सों को "निश्चित" किया जाएगा और अन्य बैंक-चयन योग्य होंगे। कुछ डिवाइस प्रोग्रामर के लिए अच्छी तरह से काम करते हैं; कई अन्य, इतना नहीं।
सुपरकैट

6

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

यह ज्यादातर एक विपणन बात थी कि 32-बिट x 86 सीपीयू 4 जीबी से अधिक रैम को संबोधित नहीं कर सकता था। मुझे याद है कि पेंटियम 4 सीपीयू पर A33-34 पिन थे।


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

264

x86 CPU ऑपरेटिंग सिस्टम में महत्वपूर्ण जटिलताओं के बिना 4GB से अधिक को संबोधित नहीं कर सकता है जो अन्य आर्किटेक्चर के लिए पोर्ट नहीं करता है।
कज़

1
@ काज एआरएम 32-बिट में एलपीएई नामक एक समान विशेषता है, जो ऑपरेटिंग सिस्टम को 32 बिट्स से अधिक पते को संबोधित करने की अनुमति देता है
phuclv

3

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

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


2

मैं इस प्रश्न का उत्तर विशेष रूप से आपके द्वारा उल्लिखित AVR नियंत्रकों के लिए दूंगा। मूल सिद्धांत कई अन्य 8-बिट आर्किटेक्चर के लिए भी सही है।

एवीआर 8-बिट कोर हैं। इसका मतलब है कि उनके पास 8-बिट रजिस्टर हैं। हालाँकि, स्मृति की उपयोग करने योग्य राशि तक पहुँचने के लिए 8 बिट पर्याप्त नहीं हैं। इसलिए, AVR कोर 16 बिट पॉइंटर रजिस्टरों के रूप में संयुक्त रजिस्टरों के एक विशिष्ट सेट का उपयोग करने में सक्षम है। रजिस्टर r30 और r31 (ZL और ZH के रूप में भी अलियास किए गए) इसके लिए एक उदाहरण हैं। साथ में वे Z पॉइंटर बनाते हैं।

असेंबली में 0x1234 पते पर एक बाइट पढ़ने पर ऐसा लगेगा:

ldi ZL, 0x34 ; Load r30 (ZL) with low byte of address
ldi ZH, 0x12 ; Load r31 (ZH) with high byte of address
ld r16, Z    ; Load byte to r16

AVR परिवार के पास 3 रजिस्टर जोड़े हैं जिनका उपयोग इसके लिए किया जा सकता है। वे विशेष रूप से इस तरह के संचालन की अनुमति देने के लिए हार्डवेयर में डिज़ाइन किए गए हैं।

C जैसी उच्च स्तरीय भाषा में प्रोग्रामिंग करते समय कंपाइलर इस सामान को संभालता है।


नोट: कुछ AVRs 64k से बड़े मेमोरी साइज़ को भी सपोर्ट करते हैं। इन नियंत्रकों में एक विशेष फ़ंक्शन रजिस्टर होता है जिसमें अभिगमन के पहले अतिरिक्त पते लिखे जाते हैं। इस पते में निम्न बिट्स (MSB से LSB) होते हैं:

विशेष समारोह रजिस्टर (आमतौर पर 1 बाइट), ZH (8bit), ZL (8bit)।


1

Atmel के 8 बिट AVR वास्तव में एक 16 बिट डेटा पते का उपयोग करते हैं। कई अन्य 16 बिट रजिस्टर और यहां तक ​​कि कुछ 16 बिट टाइमर हैं। चूंकि यह केवल 8 बिट प्रोसेसर है, यह आमतौर पर 16 बिट रजिस्टर को लोड करने के लिए दो घड़ी चक्र का उपयोग करता है।


1

विकिपीडिया इसे बहुत अच्छी तरह से समझाता है:

आठ-बिट CPUs 8-बिट डेटा बस का उपयोग करते हैं और इसलिए एकल मशीन निर्देश में 8 बिट डेटा तक पहुंच सकते हैं। व्यावहारिक और किफायती विचारों के कारण पता बस आम तौर पर एक डबल ओकटेट चौड़ा (यानी 16-बिट) है। इसका मतलब है कि ज्यादातर 8-बिट प्रोसेसर पर केवल 64 KB का प्रत्यक्ष पता स्थान है।


1

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

एचपी 21 एमएक्स, एचपी 1000: 16-बिट सीपीयू, मेमोरी 16 एमबी

पीडीपी -11: 16-बिट सीपीयू, 4 एमबी तक मेमोरी

VAX-11/780: 32-बिट सीपीयू, मेमोरी 512 एमबी

आदि आदि।

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