যদি কোনও 32- বিট প্রসেসর প্রায় 4 GiB র্যাম (যেমন ) বাইটগুলি পরিচালনা করতে পারে তবে আমার আরডুইনো মেগা 2560 এ 8 কিবি এসআরএম কেন থাকবে, যদি 8- বিট প্রসেসর হওয়ার কারণে এটি কেবল 256 হ্যান্ডেল করতে দেয়? বাইটস ( )? নাকি আমি নীচের পৃষ্ঠাটি ভুল পড়ছি?
যদি কোনও 32- বিট প্রসেসর প্রায় 4 GiB র্যাম (যেমন ) বাইটগুলি পরিচালনা করতে পারে তবে আমার আরডুইনো মেগা 2560 এ 8 কিবি এসআরএম কেন থাকবে, যদি 8- বিট প্রসেসর হওয়ার কারণে এটি কেবল 256 হ্যান্ডেল করতে দেয়? বাইটস ( )? নাকি আমি নীচের পৃষ্ঠাটি ভুল পড়ছি?
উত্তর:
বেশিরভাগ 8 বিট সিপিইউতে 16 বিট অ্যাড্রেস বাস রয়েছে যা তাদের 64kbytes ঠিকানার অনুমতি দেয়, অবশ্যই কারণ 256 বাইট সত্যিই খুব বেশি করার পক্ষে যথেষ্ট নয়! এর অর্থ হ'ল প্রতিবার ঠিকানা লোড করার জন্য তাদের একটির পরিবর্তে দুটি বাইট লোড করা দরকার। তাদের আকার বিবেচনা করে কিছুটা ধীরে ধীরে তবে সহনীয়।
(এবং হ্যাঁ অনেকগুলি ব্যতিক্রম রয়েছে, বেশিরভাগ ক্ষেত্রে developed৪ কে খুব ছোট হয়ে ওঠার পরে বিকশিত হয়, তবে আমরা এখানে মূল ধারণা সম্পর্কে কথা বলছি)।
ঠিকানা বাস এবং তথ্য বাস পৃথক করা হয় যাতে তারা বিভিন্ন আকারের হতে পারে। যে কোনও নির্দিষ্ট ঠিকানা বাসের আকারের জন্য নিবন্ধের বিট প্রস্থের চেয়ে বেশি মেমরির সম্বোধন করার জন্য অনেক কৌশল রয়েছে
সর্বাধিক সাধারণ উপায় হ'ল ঠিকানা বাসের প্রস্থকে কোনওভাবে বাড়ানো
ঠিকানার জন্য একাধিক নিবন্ধ ব্যবহার করে
X
, Y
এবং Z
রেজিস্টার অ্যাড্রেসিং RAM এর সর্বোচ্চ 64KB করার অনুমতি ডেটা। পালাক্রমে সেই সঙ্গে জোটবদ্ধ হতে পারে RAMPX
, RAMPY
, RAMPZ
বড় সংস্করণ উচ্চতর র্যাম ঠিকানাগুলি অ্যাক্সেস করতে। এছাড়া রয়েছে SPH
ছাড়াও স্ট্যাক পয়েন্টার উচ্চ বাইট জন্য SPL
র্যাম বেশি 256 বাইট সঙ্গে রূপগুলো মধ্যে 1H
& L
, B
& C
, D
& E
একটি 16 বিট ঠিকানা রেজিস্টার হিসেবে একসঙ্গে ব্যবহার করা যেতে পারেসম্বোধনের জন্য প্রাকৃতিক আকারের চেয়ে বড় একক বিশেষ রেজিস্টার ব্যবহার করে
ঠিকানার উচ্চ অংশের জন্য একটি বিশেষ রেজিস্টার ব্যবহার করে । কিছু স্মৃতি সম্বোধনের সময়, ডিফল্টরূপে ঠিকানার 8 কম বিটগুলি 8-বিট তাত্ক্ষণিক বা 8-বিট মাইক্রোকন্ট্রোলারে 8 বিট নিবন্ধক থেকে নেওয়া হবে, যেখানে উচ্চ বিটগুলি অন্য ঠিকানা নিবন্ধকের মান দ্বারা প্রতিস্থাপন করা হবে।
call
বা goto
নির্দেশ দেওয়ার সময়, ঠিকানার 8 বা 9 কম বিটগুলি তাত্ক্ষণিকভাবে নির্দেশিত হয় এবং বাকিগুলি বর্তমান প্রোগ্রামের কাউন্টার থেকে নেওয়া হয়। সুতরাং বর্তমান বিভাগের কাছাকাছি না এমন কিছু অ্যাক্সেস করতে কেবলমাত্র 1 টি নির্দেশনা ব্যবহার করা হয়েছে, অন্য ঠিকানাগুলিতে 2 টি নির্দেশাবলীর প্রয়োজন হবে (উচ্চ বিট সেট করতে)।PC
নিঃশর্তভাবে জাম্প করার সময় থেকে উচ্চ 6 বিটের সাথে সংযুক্ত করে ।এটি অর্জনের আরেকটি উপায় হ'ল মেমোরি ব্যাংকিং । এটি একটি দরকারী পদ্ধতি যা আজকাল কিছু আর্কিটেকচারে ব্যবহৃত হচ্ছে। এই মডেলটিতে, স্মৃতি একাধিক ব্যাঙ্কে বিভক্ত । প্রতিবার আপনি কেবল একটি নির্দিষ্ট ব্যাঙ্ককে সম্বোধন করতে পারেন। প্রায়শই কোনও গ্লোবাল ব্যাংক বা ঠিকানা ব্যাপ্তি থাকে যা যে কোনও সময় সর্বদা দৃশ্যমান হয়, তবে অন্যান্য অংশগুলির জন্য আপনাকে যখন প্রয়োজন হয় তখন আপনাকে অবশ্যই ব্যাংকটি পরিবর্তন করতে হবে।
একটি খুব সাধারণ কৌশল নেই তবে এটি ইন্টেল 8051 এ পাওয়া যাবে । 8-বিট ডেটা ঠিকানা সহ একটি মাইক্রোকন্ট্রোলার হিসাবে এটির সর্বাধিক 256 ঠিকানা থাকতে পারে। আসল র্যামের ঠিকানা কেবল 128 বাইটের মধ্যে সীমাবদ্ধ করে স্পেশাল ফাংশন রেজিস্টার ( এসএফআর ) এর অর্ধেক স্থান (উচ্চ অংশ) ব্যবহৃত হয় । তবে আধুনিক ৮০৫১ সিরিজের 'নির্মাতারা মেমরি অ্যাক্সেসকে আলাদা করে এটিকে কাটিয়ে উঠার জন্য একটি চতুর উপায় খুঁজে পেয়েছেন । ডাইরেক্ট অ্যাড্রেসিং এসএফআর অ্যাক্সেস করার সময় অপ্রত্যক্ষভাবে সম্বোধন করলেও রেজিস্টাররা র্যামের উচ্চ অংশ অ্যাক্সেস করতে পারবেন যার অর্থ এখন আপনার কাছে 256 + 128 = 384 অ্যাড্রেসযোগ্য বাইট রয়েছে।
1 https://en.wikedia.org/wiki/Atmel_AVR_in تعمیر_set# মেমরি_ড্রেসিং_ইনস্ট্রাকশনস
ক্ষুদ্রতম কোরগুলিতে ডেটা অ্যাড্রেস স্পেসের 256। বাইট থাকে (মানে I / O পোর্টগুলি এবং অন্যান্য সংরক্ষিত ঠিকানাগুলি সরিয়ে দেওয়ার পরে র্যামের 128 বাইট) এবং প্রোগ্রাম রমের ≤8192 বাইট (8 কিবি)। এগুলিতে কেবল একটি 8-বিট স্ট্যাক পয়েন্টার রয়েছে (এসপিএলে), এবং কেবল 12-বিট আপেক্ষিক জাম্প / কল নির্দেশাবলী আরজেএমপি / আরসিএলএল সমর্থন করে। (কারণ এভিআর প্রোগ্রামের কাউন্টারটি বাইট নয়, 16-বিট শব্দ গণনা করে, 12-বিট অফসেটটি রমের 213 বাইট সম্বোধন করার জন্য যথেষ্ট))
উপলভ্য সংস্থানগুলিতে অ্যাক্সেস করার জন্য অতিরিক্ত মেমরি সম্বোধনের ক্ষমতা উপস্থিত রয়েছে:
- > 256 বাইটের ডেটা অ্যাড্রেস স্পেসের (256 বাইট র্যামের) সাথে মডেলগুলির 16-বিট স্ট্যাক পয়েন্টার রয়েছে, এসপিএইচ রেজিস্টারে উচ্চ অর্ধেক থাকে।
- > 8 কিবি অফ রমযুক্ত মডেলগুলি 2-শব্দ (22-বিট) JUMP এবং কল নির্দেশাবলী যুক্ত করে। (কিছু শুরুর মডেল যদি কোনও 2-শব্দের নির্দেশিকা অনুসরণ না করে তবে এড়িয়ে চলুন an
- > ROM এর 64৪ কিবিযুক্ত মডেলগুলি ELPM নির্দেশনা এবং সংশ্লিষ্ট RAMPZ নিবন্ধক যুক্ত করে। এলপিমের নির্দেশাবলী জেড-এ রমের ঠিকানা শূন্য-প্রসারিত করুন; ELPM নির্দেশাবলী উচ্চ বিট জন্য RAMPZ রেজিস্ট্রার preend। এটি আরও সাধারণ এলপিএম নির্দেশের মতো নয়; ELPM (এটিমেগা 103 এবং at43usb320) এর শূন্য অপারেন্ড ফর্ম সহ "ক্লাসিক" মডেল রয়েছে। যখন অটো-ইনক্রিমেন্ট পাওয়া যায় (বেশিরভাগ মডেল), এটি র্যামপিজেড সহ পুরো 24-বিট ঠিকানা আপডেট করে।
- (বিরল) রমগুলির 128 কিবি সহ মডেলগুলির একটি 3 বাইট প্রোগ্রামের কাউন্টার রয়েছে। সুব্রুটাইন কল এবং রিটার্নগুলি স্ট্যাক স্পেসের অতিরিক্ত বাইট ব্যবহার করে, ইন্ডিয়ারেক্ট জাম্প এবং কলগুলির জন্য অতিরিক্ত উচ্চ বিট সরবরাহ করার জন্য একটি নতুন EIND রেজিস্টার রয়েছে এবং সেখানে নতুন বর্ধিত নির্দেশাবলী রয়েছে EIJMP এবং EICALL যা EIND: Z ব্যবহার করে গন্তব্য ঠিকানা হিসাবে। (পূর্ববর্তী আইজেএমপি এবং আইসিএএলএল নির্দেশাবলী শূন্য-বর্ধিত জেড ব্যবহার করে)
- (বিরল) মডেলগুলি> 64 কিবি র্যামের ঠিকানা স্পেসটি 16-বিট র্যামের ঠিকানা সীমাটি র্যামপএক্স, র্যামপিওয়াই, র্যামপিজেড এবং র্যামপিডি রেজিস্টারের সাথে প্রসারিত করে। এগুলি যথাক্রমে এক্স, ওয়াই, বা জেড রেজিস্টার জুড়ি ব্যবহার করে এমন মোডে অ্যাড্রেস করার জন্য অতিরিক্ত উচ্চ বিট সরবরাহ করে বা সরাসরি ঠিকানা নির্দেশনা এলডিএস / এসটিএস দেয়। রম অ্যাক্সেসের বিপরীতে, কোনও স্বতন্ত্র "বর্ধিত" নির্দেশাবলী নেই; পরিবর্তে র্যামপ নিবন্ধগুলি নিঃশর্ত ব্যবহৃত হয়।
প্রায় 8-বিট প্রসেসরের লো-অর্ডার অংশ এবং একটি উচ্চ-অর্ডার অংশ থেকে 16-বিট ঠিকানা তৈরি করার কিছু ক্ষমতা রয়েছে। আসল ৮০৮০ সহ কিছু প্রসেসরের উপর, কোনও ঠিকানার উপরের এবং নীচের অংশটি ধরে রাখার জন্য নিবেদিত নিবন্ধগুলি রয়েছে (যদিও প্রোগ্রামারের দিক থেকে 8080 এর স্ট্যাক পয়েন্টারের মতো কিছু রেজিস্টার থাকতে পারে যা তাদের আলাদাভাবে সম্বোধনের নির্দেশনা দেয় না)। অন্য কয়েকটি প্রসেসরে, কোনও ঠিকানার উপরের বা নীচের অর্ধেকের জন্য নিবন্ধীকৃত নিবন্ধগুলি নেই, তবে ঠিকানাগুলি "উড়ানের দিকে" একত্র করা হয়। উদাহরণস্বরূপ, 6502-তে, "এলডিএ $ 1234, এক্স" নির্দেশিকা 8 বিট এক্স রেজিস্টারে 1234 ডলার যোগ করে গঠিত ঠিকানাটি দিয়ে সংযোজককে লোড করে [মনে করুন এটিতে $ F0 রয়েছে]। এই নির্দেশের প্রয়োগ 4 বা 5 পদক্ষেপে এগিয়ে যেতে পারে:
রিড বাইটটি সংগ্রহকারীতে স্থানান্তর করা পরবর্তী নির্দেশাবলী আনতে ওভারল্যাপ করবে। অধিকন্তু, অনেকগুলি ক্রিয়াকলাপের জন্য, যদি পদক্ষেপ 3 কোনও বহন উত্পন্ন না করে, তবে চতুর্থ ধাপটি সঠিক ঠিকানাটি পড়তে পারত এবং কার্যকরভাবে পদক্ষেপ 5 ধাপে পাশের পদক্ষেপ 4 থেকে পরবর্তী নির্দেশে সরাসরি চলে যেতে পারে।
যদি কেউ ক্রিয়াকলাপগুলির ক্রম পরীক্ষা করে দেখেন তবে কেউ লক্ষ্য করবেন যে বেশিরভাগ ক্ষেত্রে (যেমন দেখানো হয়েছে তা নয়) যদিও সামান্য এন্ডিয়ান আর্কিটেকচারের একটি বড়-এন্ডিয়ান স্থাপত্যের একটি নির্দিষ্ট সুবিধা রয়েছে, যদিও ALU সঞ্চালনের জন্য একটি চক্র নেয় অতিরিক্ত হিসাবে, ALU ফলাফলের জন্য অপেক্ষা না করে গণিত ঠিকানা থেকে একটি বাইট পড়া সম্ভব, যেহেতু সাধারণত যে উচ্চ বাইটটি আনা হয়েছিল তা লক্ষ্য অপারেন্ডের উচ্চ বাইট হবে। একটি 8-বিট ALU সহ একটি বড়-এন্ডিয়ান মেশিনে, একটি ইনডেক্সযুক্ত লোড কমপক্ষে 5 টি চক্র গ্রহণ করতে পারে (যেহেতু ঠিকানার নীচের অর্ধেকটি পদক্ষেপ 3 না হওয়া পর্যন্ত পড়া হবে না, এবং এইভাবে 4 ধাপে গণনা করা হবে)।
ডেটাবাস লাইন (পিন) এবং ঠিকানা লাইন (পিন) সম্পূর্ণ পৃথক। সোজা কথায়, ডেটাবাস লাইনগুলি একসাথে একবারে স্থানান্তরিত হতে পারে এমন বিটগুলির সর্বাধিক সংখ্যা নির্ধারণ করে (এবং মেমরিতে সঞ্চিত) যেখানে ঠিকানা লাইনগুলি নির্বাচিত হতে পারে এমন সর্বাধিক সংখ্যক মেমরি "কোষ" নির্ধারণ করে।
এটি বেশিরভাগ ক্ষেত্রে একটি বিপণনের জিনিস ছিল যে 32-বিট x86 সিপিইউ 4 গিগাবাইটের বেশি র্যামকে সম্বোধন করতে পারে না। আমার কোথাও মনে আছে যে পেন্টিয়াম 4 সিপিইউতে A33-34 পিন ছিল।
এটি প্রায়শই সত্য যে ঠিকানাযোগ্য মেমরির আকার এবং অভ্যন্তরীণ নিবন্ধের আকারের মধ্যে কিছু সম্পর্ক রয়েছে যদিও বিভিন্ন কারণে সম্পর্কের ক্ষেত্রে ভিন্নতা রয়েছে। 256 বাইট অ্যাড্রেস স্পেসটি মাইক্রোপ্রসেসরের খুব প্রথম দিনগুলিতে খুব ছোট হিসাবে বিবেচিত হত, সুতরাং বেশিরভাগ আট বিট প্রসেসর 16 বিট (দুই বাইট) ঠিকানা তৈরি করেছিলেন, যা 64 কিলোবাইট সম্বোধন করেছিল। ব্যাংক স্যুইচিংয়ের সাথে, যদিও (আরও বেশি ঠিকানা লাইন তৈরি করতে প্রয়োজনীয়ভাবে নির্দিষ্ট I / O লাইন ব্যবহার করা হচ্ছে), আরও অনেক কিছু পাওয়া সম্ভব ছিল।
প্রথম 16 এবং 32 বিট প্রসেসরগুলিতে, অভ্যন্তরীণ ঠিকানা নিবন্ধগুলি যে ঠিকানাটি সম্বোধন করতে পারে তার সমস্ত জায়গায় পৌঁছানোর জন্য ডিভাইসে সবসময় পর্যাপ্ত পিন থাকে না। উদাহরণস্বরূপ, মোটোরোলা 68000 এ, 16 মেগাবাইট র্যামের ঠিকানা দেওয়ার জন্য কেবল পর্যাপ্ত ঠিকানা পিনগুলি (24) ছিল, যদিও অভ্যন্তরীণ ঠিকানা নিবন্ধগুলি 32 বিট প্রশস্ত ছিল wide
আপনি উল্লিখিত AVR নিয়ন্ত্রকদের জন্য আমি এই প্রশ্নের উত্তর দেব specifically অন্যান্য 8-বিট আর্কিটেকচারের জন্যও মূল নীতিটি সত্য।
এভিআরগুলি 8-বিট কোর হয় c এর অর্থ তাদের 8-বিট রেজিস্টার রয়েছে। যাইহোক, 8 বিট ব্যবহারযোগ্য পরিমাণ মেমরির অ্যাক্সেসের জন্য পর্যাপ্ত নয়। অতএব, এভিআর কোর 16 বিট পয়েন্টার রেজিস্টার হিসাবে মিলিত একটি নির্দিষ্ট সেট রেজিস্টার ব্যবহার করতে সক্ষম। R30 এবং r31 (এছাড়াও জেডএল এবং জেডএইচ হিসাবে এলিয়াস্ত) নিবন্ধগুলি এর জন্য উদাহরণ। তারা একসাথে জেড পয়েন্টার গঠন করে।
সমাবেশে 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
এভিআর পরিবারে 3 টি নিবন্ধভুক্ত জুটি রয়েছে যা এর জন্য ব্যবহার করা যেতে পারে। এগুলিকে বিশেষভাবে এ জাতীয় ক্রিয়াকলাপের অনুমতি দেওয়ার জন্য হার্ডওয়্যারে নকশা করা হয়েছে।
সি এর মতো উচ্চ স্তরের ভাষায় প্রোগ্রাম করার সময়, সংকলক এই স্টাফটি পরিচালনা করে।
দ্রষ্টব্য: কিছু এভিআর এমনকি 64 কের চেয়ে বড় মেমরির আকারকে সমর্থন করে। এই নিয়ন্ত্রণকারীদের একটি বিশেষ ফাংশন রেজিস্টার রয়েছে যাতে অ্যাক্সেসের আগে ঠিকানার অতিরিক্ত বিট লেখা হয়। সুতরাং ঠিকানাটিতে নিম্নলিখিত বিটগুলি রয়েছে (এমএসবি থেকে এলএসবি):
বিশেষ ফাংশন রেজিস্টার (সাধারণত 1 বাইট), জেডএইচ (8 বিট), জেডএল (8 বিট)।
আতেলের 8 বিট এভিআর আসলে একটি 16 বিটের ডেটা ঠিকানা ব্যবহার করে। অন্যান্য অসংখ্য 16 বিট রেজিস্টার এবং এমনকি কিছু 16 বিট টাইমার রয়েছে। যেহেতু এটি শুধুমাত্র একটি 8 বিট প্রসেসর, এটি 16 বিট রেজিস্টার লোড করতে সাধারণত দুটি ঘড়িচক্র ব্যবহার করে।
উইকিপিডিয়া এটি বেশ ভাল ব্যাখ্যা করেছে:
আট-বিট সিপিইউ একটি 8-বিট ডেটা বাস ব্যবহার করে এবং তাই একক মেশিনের নির্দেশে 8 বিট ডেটা অ্যাক্সেস করতে পারে। ব্যবহারিক এবং অর্থনৈতিক বিবেচনার কারণে ঠিকানা বাসটি সাধারণত একটি ডাবল অক্টেট প্রশস্ত (অর্থাত্ 16 বিট) হয়। এটি বেশিরভাগ 8-বিট প্রসেসরের কেবলমাত্র 64 কেবি এর সরাসরি ঠিকানার স্পেস বোঝায়।
প্রসেসরের "বিট প্রস্থ" প্রসেসরটি সর্বোচ্চ পরিমাণে র্যামের পরিচয় দিতে পারে এই ধারণাটি কম্পিউটিংয়ের অন্যতম সার্থক কাহিনী। প্রকৃতপক্ষে শিল্পের ইতিহাসটি কেবলমাত্র সিপিইউতে আবদ্ধ, যার জন্য এই সম্পর্কটি ধরে রাখেনি।
এইচপি 21 এমএক্স, এইচপি 1000: 16-বিট সিপিইউ, 16 এমবি থেকে মেমরি
PDP-11: 16-বিট সিপিইউ, 4 এমবি থেকে মেমরি
ভ্যাক্স -11 / 780: 32-বিট সিপিইউ, মেমরি 512 এমবি
ইত্যাদি।