'আই / ও সিগন্যাল' এবং 'মেমরি ম্যাপিং'-এর মতো নামগুলি সবকিছুকে যতটা জটিল করে তোলে তার চেয়ে অনেক জটিল করে দেওয়া হয়, এবং তাই ব্যক্তিকে এটির অনেক বেশি ধারণা দেয় এবং এটি একটি উন্নত বিষয়কে কভার করে। এখন প্রবণতা হ'ল লোকেরা এটিকে নতুন কিছু হিসাবে দেখে। তবে বিষয়টি মামলা থেকে অনেক দূরে। এমনকি 1830 এর দশকে ব্যাবেজ তার মুদ্রকটি চালিয়েছিল, এটির জন্য একটি আই / ও সিগন্যাল প্রয়োজন, যদিও এটি অক্ষ এবং কগওহিল দ্বারা সম্পন্ন হয়েছিল। উদাহরণস্বরূপ 2000 বছর আগে আলেকজান্দ্রিয়ার হিরোর মেশিনে বা গ্রীক সময়ের ডানদিকে ফিরে প্রেক্ষাগৃহগুলিতে তারা লাইট বা দৃশ্যাবলী নিয়ন্ত্রণের জন্য বিভিন্ন দড়ির সেট থেকে সর্বদা একটি দড়ি টানত, প্রতিটি দড়ি একটি ইনপুট এবং আউটপুট লাইনের মতো হয়, যেমন সহজ হিসাবে, ঠিকানাটি 'কোন লাইন' অর্থাৎ কোন জিনিস, মেমরি বা ডিভাইসটি আমরা বেছে নিচ্ছি,
যদিও বড় বড় মেনফ্রেম কম্পিউটারগুলি যেগুলি ক্যাবিনেটের সাহায্যে বিল্ডিংগুলিতে পূর্ণ ছিল, 40 এর দশকে ঠিক ফিরে 64৪ বিটের মতো জিনিস ব্যবহার করেছিল এবং তাই I / O ম্যাপিংয়ের সাথে ঠিক একই সময়ে ফিরে এসেছিল, e..g কনরাড জুসে এবং তার রুমের আকারের কম্পিউটারগুলি ভাসমান ব্যবহৃত হয়েছিল 1930 এর দশকে দশমিক প্রায় 20 সংখ্যক পয়েন্ট ছিল এবং তার মুদ্রক এবং তার বিভিন্ন লাইট বাল্ব সূচক এবং তার সুইচগুলির মতো জিনিসগুলি চালনা করতে হয়েছিল। তবে ক্ষুদ্র মাইক্রোপ্রসেসরের গল্পটি ভিন্ন is০ এর দশক পর্যন্ত তাদের কল্পনা করা হয়নি এবং ৮০ এর দশকে ৮ বিট যুক্তি ব্যবহার করে, এই সমস্ত কৌশলগুলি 70 এর দশকে 4 বিটগুলিতে মাইক্রোপ্রসেসরের জন্য ব্যবহৃত হয়েছিল, 60 এর দশকে 2 বিট এবং ব্যবহৃত হয়েছিল 90 'এ 16 বিট যখন সকলেই একটি কম্পিউটার পেতে শুরু করেছিল এবং সে কারণেই এখন তাদের সামনে ছিল প্রথমবারের জন্য এই আই / ও এবং মেমরি ম্যাপিংয়ের বিষয়টি নিয়ে আলোচনা শুরু হয়েছিল, এবং এটি ইন্টারনেটের আবির্ভাবের সাথে নতুন কিছু বলে উপস্থিত হয়েছিল; তারপরে আমাদের দশকের দশকে 32 বিট এবং 64 বিট কম্পিউটার ছিল, যার ফলে সেখানে ডেটা লাইনের মেমোরি নিয়ে অন্তহীন আলোচনা হয়েছিল be আপনার প্রশ্নের উত্তর দেওয়ার জন্য আমি চিপগুলি নিয়ে কথা বলব যা ইলেক্ট্রনিক্স শখবিদরা 30-40 বছর আগে কিনেছিলেন, যেমন আমি তখনকার মতো করেছি, পরবর্তীকালে, জিনিসগুলি এত উন্নত হয়েছিল যে আমি পরবর্তী চিপগুলি দিয়ে তৈরি করতে পারিনি, তবে নীতিগুলি এখন ঠিক একই, গেটগুলি কেবল বড় কালো বক্সযুক্ত চিপের ভিতরে লুকিয়ে রয়েছে যা অন্যান্য পিনগুলি অন্তর্ভুক্ত করে যা এই অপারেশনগুলিকে সমান্তরালভাবে আরও অনেক বেশি চলছে (যেমন অনেকগুলি অক্টাল ল্যাচগুলি সক্ষম করে,
ঠিক আছে, আমি সমস্ত নতুন ভাষা বা এটি এখন আধুনিক পিসিতে কেমন তা সম্পর্কে কিছুই জানি না তবে আমি আপনাকে বলতে পারি যে আমি যখন চিপস দিয়ে কম্পিউটার তৈরি করতাম তখন পুরানো সময়ে কেমন ছিল।
সমস্ত আই / ও ম্যাপিং এবং মেমরি ম্যাপিং এর অর্থ সহজ ভাষায়, যদি আপনি কিছু উদযাপনের জন্য প্রচুর পরিমাণে হালকা বাল্ব উদাহরণ স্থাপন করে থাকেন এবং প্রতিটি তারে গিয়ে বাল্বগুলিকে মেমোরি অবস্থানগুলি বলে থাকেন, (যেমন বাল্বগুলি র্যামের মধ্যে মেমরি উপস্থাপন করে, হয় চালু বা বন্ধ, এবং আপনি যদি অবস্থান 0 নির্বাচন করেন তবে আপনি তারের 0, অবস্থান 1, তারের 1, লক 2 তার 2 এবং আরও কিছু পেতে পারেন) যদি আপনি আরও কিছু তার যুক্ত করেন তবে একটি তারের একটি ঘণ্টা, সেই নির্দিষ্ট অবস্থানটি স্মৃতি নয় এটি এমন একটি ডিভাইস, যা আপনি আউটপুট করেন, আউট কমান্ডটি ব্যবহার করে এটি বেজে যায়। এটি কম্পিউটারের দৃষ্টিকোণ থেকে একটি মেমরি অবস্থান হিসাবে দেখা হয়, কারণ এটি এমপিইউতে কেবল তার মতই আসে। যদি অন্য একটি ওয়্যার যুক্ত করা হয় যা আপনি যে বহির্মুখীভাবে পরিচালনা করেছিলেন এমন একটি স্যুইচ ছিল, এটি একটি I / O ডিভাইস, এটি পিসির জন্য একটি নির্দেশনা। সুতরাং এটিকে I / O ম্যাপযুক্ত I / O বলা হয়।
এখন কম্পিউটারে, বাসে তারগুলি ঠিকানা লাইন বা ডেটা লাইন উপস্থাপন করে, তবে তারা বাইনারি হয়, অর্থাত 2 টি তারের সাথে আপনার কাছে 00 01 10 11 অর্থাত্ 4 টি সংমিশ্রণ 2 ^ 2 থাকতে পারে, সুতরাং 8 লাইন 2 ^ 8 = 256 সম্ভাবনা সহ, 30 লাইন 2 ^ 30 = 1073741824 (1 গিগ) 30 লাইন সহ সম্ভাব্যতার 20 লাইন 2 30 20 = 1048576। সুতরাং এটিকে ম্যাপপেড বলা হয়, কেবল I / O এবং মেমরির চেয়ে বলার পরিবর্তে তারা বলছে I / O ম্যাপযুক্ত, এবং মেমরি ম্যাপ করা হয়েছে, কারণ আপনি তারগুলি ম্যাপিং করছেন A COMBINATION y বাইনারি হিসাবে কোডিং করে। সুতরাং যদি বলে যে আপনার কাছে 2 টি তার, 4 টি সংমিশ্রণ রয়েছে, তবে তারা কেবল বাল্বের সাথে সংযুক্ত হতে পারে না, (এমপিইউ থেকে ক্ষুদ্র ভোল্টেজগুলি থেকে প্রয়োজনীয় বর্তমান পরিবর্ধন এবং প্রতিক্রিয়া বর্তমানের প্রতিরোধের উল্লেখ না করা), তবে দুটি তারের রয়েছে ডিকোডারের মধ্য দিয়ে যাওয়ার জন্য (আমরা 138 টি 3 লাইনকে 8 লাইনে ডিকোড করতে ব্যবহার করতাম, একটি 164 4 বাইনারি লাইনকে 16 লাইনে ডিকোড করতে। ) ডিকোডারের মাধ্যমে একবার এই 2 টি লাইন যেমন A0 এবং A1 (ঠিকানা 0 এবং ঠিকানা 1 (লাইন)), আপনি যে নির্দিষ্ট বাল্বটি চালাচ্ছেন তার জন্য 4 লাইন (চালু বা বন্ধ) হয়ে উঠুন (কম্পিউটারের ক্ষেত্রে, স্মৃতি) কিছু ক্ষেত্রে এই অবস্থান পরিবর্তে কিছু ইনপুট / আউটপুট ডিভাইস নির্বাচন করুন এবং এর পরিবর্তে 'আমাকে ব্যবহার করুন' বলুন, যেমন মেমোরির মতো একবারে অবস্থিত, তারপরে ডেটাটি কোনওভাবে বা অন্যভাবে পাস করা হয় (ভোল্টেজ কেটে যাওয়ার জন্য চালাক ত্রিদেশীয় যুক্তি ব্যবহার করে) প্রতিবার) ডেটা বাস লাইনে D0..7 বা D0..31 অথবা কম্পিউটারে যে কোনও আকারের ডেটা (আপনার কাছে একটি 2 বিট, 4 বিট, 8 বিট, 16 বিট, 32 বিট, 64 বিট, 128 বিট, 256 বিট, কম্পিউটার, যাই হোক না কেন কম্পিউটার আপনি তৈরি করছেন)। সুতরাং ডেটা মেমরি বা আই / ও ডিভাইসে ডেটা লাইনগুলি থেকে প্রাকৃতিকভাবে বা বাইরে চলে যায় (যদি এটি মেমরি ম্যাপ করা থাকে) তবে এটি আউট / আউট নির্দেশের সাথে বিবেচনা করা উচিত নয়, এই এবং আউটটির অর্থ অন্য কোনও আই / ও মেমরি ব্লক, এমপিইউর ভিতরে একটি বিশেষ I / O মেমরি ব্লক কেবলমাত্র I / O এর জন্য নির্দিষ্ট করা হয়েছে (যেমন (মেমরি ম্যাপড নয়)), এই I / O স্থানটি আপনি সর্বদা পাবেন না কিছু মাইক্রোপ্রসেসরের উপর, যেমন আমি মনে করি না যে এটি আমাদের 6502 এ ছিল, তবে আমাদের এটি একটি জেড 80 এ ছিল। আরও শৈল্পিক চিপগুলি কেবল মেমরি ম্যাপিং ব্যবহৃত হয়, যেমন গেমস কনসোল ইত্যাদিতে আরও বুদ্ধিমান কিন্তু আগ্রহী (বইটিতে থাকা) চিপগুলি I / O স্থানের জন্যও যায়। মেমরি ম্যাপ করা I / O গতি হালকা করছে কারণ এটি মেমরি অ্যাড্রেসিংকে অন্তর্ভুক্ত করে (যা র্যামের পক্ষে অত্যন্ত দ্রুত), সুতরাং গ্রাফিক্স টাইপ কম্পিউটার গতি পেতে I / O এর জন্য কেবল মেমরি ম্যাপিং ব্যবহার করে। I / O ম্যাপ করা I / O কে ধীর পোর্টগুলি যেমন rs232, বা সমান্তরাল পোর্টের জন্য বরাদ্দ করা হয়েছে এবং IN OUT কমান্ড ব্যবহার করে। ঙ। (মেমরি ম্যাপ করা হয়নি), এই আই / ও স্পেসটি আপনি সর্বদা কিছু মাইক্রোপ্রসেসরে পাবেন না, উদাহরণস্বরূপ আমি মনে করি না যে এটি আমাদের 6502 এ ছিল তবে এটি আমাদের কাছে একটি Z80 ছিল। আরও শৈল্পিক চিপগুলি কেবল মেমরি ম্যাপিং ব্যবহৃত হয়, যেমন গেমস কনসোল ইত্যাদিতে আরও বুদ্ধিমান কিন্তু আগ্রহী (বইটিতে থাকা) চিপগুলি I / O স্থানের জন্যও যায়। মেমরি ম্যাপ করা I / O গতি হালকা করছে কারণ এটি মেমরি অ্যাড্রেসিংকে অন্তর্ভুক্ত করে (যা র্যামের পক্ষে অত্যন্ত দ্রুত), সুতরাং গ্রাফিক্স টাইপ কম্পিউটার গতি পেতে I / O এর জন্য কেবল মেমরি ম্যাপিং ব্যবহার করে। I / O ম্যাপ করা I / O কে ধীর পোর্টগুলি যেমন rs232, বা সমান্তরাল পোর্টের জন্য বরাদ্দ করা হয়েছে এবং IN OUT কমান্ড ব্যবহার করে। ঙ। (মেমরি ম্যাপ করা হয়নি), এই আই / ও স্পেসটি আপনি সর্বদা কিছু মাইক্রোপ্রসেসরে পাবেন না, উদাহরণস্বরূপ আমি মনে করি না যে এটি আমাদের 6502 এ ছিল তবে এটি আমাদের কাছে একটি Z80 ছিল। আরও শৈল্পিক চিপগুলি কেবল মেমরি ম্যাপিং ব্যবহৃত হয়, যেমন গেমস কনসোল ইত্যাদিতে আরও বুদ্ধিমান কিন্তু আগ্রহী (বইটিতে থাকা) চিপগুলি I / O স্থানের জন্যও যায়। মেমরি ম্যাপ করা I / O গতি হালকা করছে কারণ এটি মেমরি অ্যাড্রেসিংকে অন্তর্ভুক্ত করে (যা র্যামের পক্ষে অত্যন্ত দ্রুত), সুতরাং গ্রাফিক্স টাইপ কম্পিউটার গতি পেতে I / O এর জন্য কেবল মেমরি ম্যাপিং ব্যবহার করে। I / O ম্যাপ করা I / O কে ধীর পোর্টগুলি যেমন rs232, বা সমান্তরাল পোর্টের জন্য বরাদ্দ করা হয়েছে এবং IN OUT কমান্ড ব্যবহার করে। আরও বুদ্ধিমান কিন্তু আগ্রহী (বইটিতে থাকা) চিপগুলি I / O স্থানের জন্যও যায়। মেমরি ম্যাপ করা I / O গতি হালকা করছে কারণ এটি মেমরি অ্যাড্রেসিংকে অন্তর্ভুক্ত করে (যা র্যামের পক্ষে অত্যন্ত দ্রুত), সুতরাং গ্রাফিক্স টাইপ কম্পিউটার গতি পেতে I / O এর জন্য কেবল মেমরি ম্যাপিং ব্যবহার করে। I / O ম্যাপ করা I / O কে ধীর পোর্টগুলি যেমন rs232, বা সমান্তরাল পোর্টের জন্য বরাদ্দ করা হয়েছে এবং IN OUT কমান্ড ব্যবহার করে। আরও বুদ্ধিমান কিন্তু আগ্রহী (বইটিতে থাকা) চিপগুলি I / O স্থানের জন্যও যায়। মেমরি ম্যাপ করা I / O গতি হালকা করছে কারণ এটি মেমরি অ্যাড্রেসিংকে অন্তর্ভুক্ত করে (যা র্যামের পক্ষে অত্যন্ত দ্রুত), সুতরাং গ্রাফিক্স টাইপ কম্পিউটার গতি পেতে I / O এর জন্য কেবল মেমরি ম্যাপিং ব্যবহার করে। I / O ম্যাপ করা I / O কে ধীর পোর্টগুলি যেমন rs232, বা সমান্তরাল পোর্টের জন্য বরাদ্দ করা হয়েছে এবং IN OUT কমান্ড ব্যবহার করে।
এখন যদি দুটি তার যুক্ত করার পরিবর্তে, আপনি যদি আসলে দুটি তারগুলি প্রতিস্থাপন করেন যা মূলত বাল্বগুলিতে গিয়েছিল এবং সেইগুলি কিছু বাল্ব নিয়েছিল এবং তাদের সাথে অন্য জিনিসগুলি প্রতিস্থাপন করেছে, যেমন একটিতে একটি ঘণ্টা এবং অন্যটিতে একটি স্যুইচ, তবে এখন সেগুলি উল্লেখ করা হয়নি (নির্বাচিত ) যথাক্রমে IN এবং OUT নির্দেশাবলীর সাথে, সেই নির্দিষ্ট মেমরির অবস্থানটি অ্যাক্সেস করে তাদের উল্লেখ করা হয় যা সেই তারগুলি নির্বাচন করে (যা মূলত বাল্ব ছিল)। সুতরাং এটি মেমরি ম্যাপ করা হয় I / O।
মেমোরি ম্যাপ করা I / O এর অর্থ হল যে আসল ঠিকানা বাসটি সাধারণত মেমোরিতে যায় (র্যাম), এটি অন্য ডিকোডার (লজিক ডিকোডার) এর সাথেও সংযুক্ত থাকে এবং যখন এটি ঠিকানা সংকেতের নির্দিষ্ট বাইনারি সংমিশ্রণটি অনুভব করে তখন এটি উচ্চ আউটপুট উত্পাদন করে , (উদাহরণস্বরূপ, যদি আপনার কাছে দরজা না থাকলে এবং নাও থাকে এবং আপনি বলেছিলেন, যদি এটি এবং যদি না থাকে এবং পিন A0..A20 ব্যবহার করে বা আপনার ঠিকানা বাসের আকারের আকার থাকে) তবে এই উচ্চ সংকেতটি একটি ল্যাচ সক্ষম করে, (কোনও নির্দিষ্ট ডিভাইসের জন্য যেমন সিরিয়াল পোর্ট, সমান্তরাল পোর্ট) এর জন্য এই ল্যাচটি আই / ও ডিভাইসের মাধ্যমে ডেটা বাসের ডেটা পাস করে। এটি I / O ডিভাইসে লেখার জন্য। পঠনটি বিপরীতভাবে কাজ করে I / O ডিভাইসটি, ডেটাটি ফেরত দেয় এবং যদি আমি সঠিকভাবে মনে করি তবে এটি ঠিক একই ঠিকানা কোড সংমিশ্রণটি ঠিকানা লাইনে প্রেরণ করে।
আমার ধারণা, এটি অবশ্যই আজকের পথে একইভাবে কাজ করবে, যদি না তারা কেবল আরও বেশি ডেটা এবং ঠিকানার লাইন হয়ে থাকে।
আপনি আক্ষরিকভাবে ঠিকানা লাইনগুলিতে I / O ছড়িয়ে দিচ্ছেন। সুতরাং I / O কার্যকরভাবে মেমরি স্পেসে ম্যাপ করা হয়, যদিও এটি মেমরি। তবে অন্য একটি ল্যাচ একই সময়ে র্যাম অ্যাক্সেস করা থেকে পিনগুলি অক্ষম করে, যাতে আপনি একই লাইনে দুটি ঠিকানা বা ডেটা উত্সের ভোল্টেজ না পান, যা চিপসের ক্ষতি করতে পারে।
IN এবং আউট নির্দেশের সাহায্যে, আমরা 40 বছর আগে z80 চিপে এটি পেয়েছিলাম। এটি এমন বিশেষ ক্ষেত্রে যেখানে চিপ আসলে I / O নিজেই অন্যরকমভাবে আচরণ করে, অর্থাত এটি মেমরিযুক্ত ম্যাপযুক্ত নয়। (যেমন মেমরি ম্যাপ করা আছে, আপনি কেবল মেমরির অবস্থানটি পড়তে বা লিখতে পারেন তবে IN এবং OUT দিয়ে আপনি ইতিমধ্যে সিপিইউকে বলছেন যে এটি একটি I / O সিগন্যাল এবং মেমরি নয়)। আইএন / আউট নির্দেশের সাহায্যে এটির নিজস্ব আই / ও ঠিকানা ঠিকানা রয়েছে (যা ম্যামের স্মৃতিশক্তি অতিরিক্ত) এই আই / ও রাম, যেমন ঠিক মনে হয় ঠিক ঠিক ঠিক তেমন একটি ঠিকানা রয়েছে, আপনি যে আই / ও ঠিকানাগুলি সংযুক্ত করে ডিকোডারের মাধ্যমে ডিভাইসটিতে সরাসরি অ্যাক্সেস করছেন এবং আপনি স্ট্যান্ডার্ড ঠিকানা পিনগুলি থেকে I / O ডিভাইসটি অ্যাক্সেস করছেন না, এটি IN / OUT নির্দেশের জন্য for
যা এই ক্ষেত্রে চিঠি এবং সংখ্যার জন্য ASCII কোডের স্ট্রিং হিসাবে সেরা পাস হয়। এই কমান্ডগুলি হুবহু হ'ল যেমন আপনি একটি লুপে IN এবং OUT নির্দেশনা ব্যবহার করেছেন যেখানে গণনাটি স্ট্রিংয়ের দৈর্ঘ্য।
আপনি যদি অ্যাক্সেস করে থাকেন যেমন পিসি স্পিকার আপনি কেবল একবারে আউট ব্যবহার করে এক টুকরো ডেটা দিয়ে যাবেন।
আপনি যদি সমান্তরাল বন্দর থেকে পড়ছিলেন, আপনি বন্দুকের আই / ও ঠিকানার জন্য কোডটি ব্যবহার করছেন। এটি লেখা, যেমন ইলেকট্রনিক সিগন্যাল দ্বারা পুরানো প্রিন্টার বা রোবোটিকগুলি চালনা করতে আপনি OUT কমান্ডটি ব্যবহার করবেন। সমান্তরাল বন্দর এবং সিরিয়াল বন্দর (পুরানো আরএস 232) ব্যবহৃত হ'ল সাধারণ পোর্ট। আরএস 232 হ'ল সিরিয়াল ডেটা, কেবলমাত্র একটি বিট ভিতরে বা বাইরে অনুমোদিত, তাই আপনি যদি কোনও আরএস 232 থেকে পড়ছিলেন তবে আপনার কাছে কেবল 1 বিট প্রাসঙ্গিক, আউটপুট আউট করার মতো with বাড রেটটি কোনও আরএসএস ২২২ এর জন্য প্রায় 17kHz সর্বোচ্চ, তবে এগুলি ইলেক্ট্রনিক্স প্রচুর পরিমাণে চালিত হত, আগের দিনগুলিতে, আমি আরএস 232 সার্কিট তৈরি করতাম, যেমন ভোল্টেজগুলি পড়তে বা পিআইসি মাইক্রো-কন্ট্রোলারগুলি চালিত করতে। প্রতিটি বন্দরের নামকরণ করা হয় যেমন COM1 COM2 COM3 COM4 এবং তাদের I / O ঠিকানা রয়েছে। আমি এখানে হাতে নিশ্চিত নই, তবে এগুলি 3F8h 378 ঘন্টা (এইচ = হেক্স ঠিকানা) এর মতো
আমি আধুনিক বন্দরগুলি সম্পর্কে নিশ্চিত নই তবে আপনি যদি ইউএসবিতে লিখতে থাকেন তবে এটি সম্ভবত আরও বেশি গতির জন্য ম / ম্যাপযুক্ত মেমরিযুক্ত হবে।
PS / 2 কীবোর্ড পোর্ট, আমি মনে করি এটি কীবোর্ড থেকে ডেটা পড়তে IN নির্দেশনাটি ব্যবহার করে। এটি পুরানো আরএস 232 কে প্রতিস্থাপন করে, তবে আমি বিশ্বাস করি এর থেকে কিছুটা আলাদা ধারণা রয়েছে।
একটি ডিস্ক ড্রাইভ সাধারণত মেমরি ম্যাপ করা হত, সম্ভবত এটি এখনও রয়েছে, অর্থাত আপনি IN / আউট নির্দেশাবলী সহ কোনও ডিস্ক ড্রাইভ ড্রাইভ করেন না, এগুলি খুব ধীর হবে। তবে পোর্টগুলি যাইহোক ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে যায়গা হয়। স্পিকার, এটির জন্য কেবলমাত্র 10 বা 20 শব্দ শব্দের ফ্রিকোয়েন্সি দরকার, বলুন 20kHz বুজারের জন্য যথেষ্ট হবে, সুতরাং এটি I / O। ধীরে ধীরে জিনিসগুলি I / O, IN / OUT নির্দেশাবলী ব্যবহার করে। সুতরাং ইউএসবি সম্ভবত মেমরি ম্যাপ করা হয়েছে, আপনি এটি পরীক্ষা করে নিতে হবে।
এটি বোঝার আরও ভাল উপায় এটি। ৮০ এর দশকে ফিরে আসা পুরানো কম্পিউটারগুলিতে আপনি কখনও কখনও তৈরি করেছিলেন এমন কোনও ডিভাইস নিয়ন্ত্রণ করতে চেয়েছিলেন এবং আউটপুট পোর্টগুলির জন্য কোনও নির্দিষ্ট ধারণা ছিল না (যেমনটি প্রস্তুতকারকরা এটিকে গোপন রেখেছিলেন যাতে নির্দিষ্ট সংস্থাগুলি যেমন জয়স্টিক এবং কার্টরিজ সংস্থাগুলি) এগিয়ে যেতে পারে কিছু ব্যবসায়িক চুক্তি দ্বারা বাজার)। আপনাকে যা করতে হবে তা হল কম্পিউটার এবং আক্ষরিক সোল্ডার তারগুলি অ্যাড্রেস বাসের কয়েকটি পয়েন্টে খোলা, যেমন আপনি একটি নিরাপদ দূরত্বে সার্কিটের কয়েকটি পয়েন্টে তিনটি তারের সোল্ডার করেছিলেন (যাতে তাপের সাথে চিপ ক্ষতিগ্রস্থ না হয়) সার্কিট বোর্ড লেআউটে ওয়্যার্ড পয়েন্টগুলি যেমন মাইক্রোপ্রসেসরে পিন A15 A7 এবং A1 করতে। এবং আপনাকে সাধারণত একটি এমআরইকিউ লাইন (একটি মেমোরি অনুরোধ লাইন এবং / অথবা আরডি / ডাব্লুআর লাইন একটি আরও কম সংকেত তৈরি করতে, এবং এটি যুক্ত করতে হবে এবং যুক্তিতে নয়, তবে আপনি যদি চালাক হন তবে আপনি কেবল ঠিকানা লাইনগুলি দিয়ে এটি করতে পারতেন) এবং তারপরে আপনি এই তিনটি তারকে সংযুক্ত করেছেন + এই অতিরিক্ত প্রস্তুত প্রকারের সংকেত (যেমন- এমআরইকিউ আরডি বা ডাব্লুআর লাইন কিছু সক্রিয় নিম্ন বা উচ্চতর দেওয়ার জন্য (যার সম্ভাব্য অতিরিক্ত অতিরিক্ত প্রয়োজন নেই) এখানে প্রবেশের জন্য) ড্যাটা এখনই লাইনে প্রস্তুত রয়েছে) 4 ইনপুট এবং গেটের মাধ্যমে, যা 200 ওএম প্রতিরোধকের মাধ্যমে একটি নেতৃত্বে একটি আউটপুট দিয়েছে, আপনার নিজের নেতৃত্বাধীন আলোতে মেমরি উচ্চ গতির ম্যাপ আছে , যা আপনি কোনও এসআর ল্যাচ বা ডি টাইপ ল্যাচ দিয়ে ল্যাচ করতে পারেন এটি কোনও সার্কিট বোর্ডে বাহ্যিকভাবে 1 বিট মেমোরিতে সংরক্ষণ করতে। এখানে 15 হ'ল 32 কে লাইন, 7 টি 64 লাইন, 1 টি 2 লাইন (বাইনারি 2 এর শক্তিতে কাজ করে, সুতরাং A1 2 ^ 1, A7 2 ^ 7, এবং A15 2 ^ 15), সুতরাং আপনি যদি ঠিকানাটি 32768 + 64 + 2 = 32834 = F041 হেক্সে এলডিএ বা এসটিএ বা এলডি ব্যবহার করে এসেম্বলারের মধ্যে পুরানো এমপিইউতে আপনি নেতৃত্বে চলে আসবেন, যদি প্রতিরোধকটি 100 ওহম সম্পর্কে বলা হয় তবে এটি উজ্জ্বল হবে। সুতরাং আপনি মেমরি ম্যাপ করা আই / ও করেছেন, এটি যত সহজ সরল, আপনি আজ নিজের এমপিউ ঠিকানা লাইনগুলিতে সোল্ডারিং করে এটি করতে পারেন। কিন্তু এখন আপনি এটি করবেন না সার্কিটগুলির স্বাদযুক্ততার কারণে। তবে আপনি ডেটা লাইন D0..7 (পুরানো দিনগুলিতে) যোগদান করতে পারেন বা একটি পুরানো 486 পিসিতে 32 বিটের জন্য এখন d0..31 বলতে পারেন। তারপরে আপনি যদি মেশিন কোডে সেই অবস্থানটি সম্বোধন করে 8 টি মান (মুভি কুড়াল, 8 আজকাল) সহ একটি লোড জমা করে বা সেই স্থাবর মানটিকে কোনও ঠিকানার স্থানে (মুভ এফ0১৪ ঘন্টা, কুড়াল সঞ্চালক) সংরক্ষণ করেন, আপনি আজকের দিকে এসে পৌঁছেছেন নোট, 8, উদাহরণস্বরূপ, ডেটা বাসের মধ্যে যা রয়েছে, এই বিশেষ ক্ষেত্রে আমরা কেবলমাত্র নির্দিষ্ট ডিভাইসটি সক্ষম করছি এমন ডেটা পাস করছি না (LED চালু রয়েছে, যদি আমরা এই ডি / ও ডিভাইসটি বেছে নিয়েছি, এখানে, কেবল একটি এলইডি), সুতরাং এই উদাহরণে আমাদের মুভি কুঠার, 8 টি নির্দেশের সাথে আমাদের সংখ্যার কী আছে তা বিবেচ্য নয়, এটি উদাহরণস্বরূপ মোভ কুঠার, 243 হতে পারে এবং আমরা তখনও F041h লাইনে LED সক্ষম করতে চাই, যখন আমরা মুভি F041h করি, যেহেতু আমরা একই ঠিকানা ব্যবহার করছি। আপনি দেখুন, ঠিকানা লাইন আছে এবং তথ্য লাইন আছে। সুতরাং আপনি যখন COM1 এ 3F8 ঠিকানা যুক্ত করেন বা ঠিকানা যাই হোক না কেন, I / O মেমরি মানচিত্রটি কেবল একটি বন্দরে যেমন একটি সিগন্যাল প্রেরণ করছে, উদাহরণস্বরূপ PS / 2, এবং একটি এবং গেটটি আপনার লাইনগুলিতে 1110000100 আছে কিনা 11 পরীক্ষা করছে কিনা 3 1000 এফ এবং 0100 8 হয়, বাইনারি থেকে হেক্স রূপান্তর দেখুন। যদি একটি বিট পজিশনে যেখানে উচ্চ ভোল্টেজগুলি উপস্থিত হয় সেখানে 1 রয়েছে, তবে পোর্ট, যেমনঃ rs232 বা পিএস / 2 সক্রিয় সেট করা আছে, অর্থাৎ এটি সক্ষম করা আছে, এটি সিই চিপ সক্ষম সিগন্যাল বা সিএস চিপ দ্বারা ল্যাচগুলি সক্ষম করে সহজ নির্বাচন করুন। 8 নির্দেশনা, এটি উদাহরণস্বরূপ মোভ কুঠার, 243 হতে পারে এবং আমরা তখনও F041h লাইনে LED সক্ষম করে থাকি যখন আমরা মুভি F041h করি, যেহেতু আমরা একই ঠিকানা ব্যবহার করছি। আপনি দেখুন, ঠিকানা লাইন আছে এবং তথ্য লাইন আছে। সুতরাং আপনি যখন COM1 এ 3F8 ঠিকানা যুক্ত করেন বা ঠিকানা যাই হোক না কেন, I / O মেমরি মানচিত্রটি কেবল একটি বন্দরে যেমন একটি সিগন্যাল প্রেরণ করছে, উদাহরণস্বরূপ PS / 2, এবং একটি এবং গেটটি আপনার লাইনগুলিতে 1110000100 আছে কিনা 11 পরীক্ষা করছে কিনা 3 1000 এফ এবং 0100 8 হয়, বাইনারি থেকে হেক্স রূপান্তর দেখুন। যদি একটি বিট পজিশনে যেখানে উচ্চ ভোল্টেজগুলি উপস্থিত হয় সেখানে 1 রয়েছে, তবে পোর্ট, যেমনঃ rs232 বা পিএস / 2 সক্রিয় সেট করা আছে, অর্থাৎ এটি সক্ষম করা আছে, এটি সিই চিপ সক্ষম সিগন্যাল বা সিএস চিপ দ্বারা ল্যাচগুলি সক্ষম করে সহজ নির্বাচন করুন। 8 নির্দেশনা, এটি উদাহরণস্বরূপ মোভ কুঠার, 243 হতে পারে এবং আমরা তখনও F041h লাইনে LED সক্ষম করে থাকি যখন আমরা মুভি F041h করি, যেহেতু আমরা একই ঠিকানা ব্যবহার করছি। আপনি দেখুন, ঠিকানা লাইন আছে এবং তথ্য লাইন আছে। সুতরাং আপনি যখন COM1 এ 3F8 ঠিকানা যুক্ত করেন বা ঠিকানা যাই হোক না কেন, I / O মেমরি মানচিত্রটি কেবল একটি বন্দরে যেমন একটি সিগন্যাল প্রেরণ করছে, উদাহরণস্বরূপ PS / 2, এবং একটি এবং গেটটি আপনার লাইনগুলিতে 1110000100 আছে কিনা 11 পরীক্ষা করছে কিনা 3 1000 এফ এবং 0100 8 হয়, বাইনারি থেকে হেক্স রূপান্তর দেখুন। যদি একটি বিট পজিশনে যেখানে উচ্চ ভোল্টেজগুলি উপস্থিত হয় সেখানে 1 রয়েছে, তবে পোর্ট, যেমনঃ rs232 বা পিএস / 2 সক্রিয় সেট করা আছে, অর্থাৎ এটি সক্ষম করা আছে, এটি সিই চিপ সক্ষম সিগন্যাল বা সিএস চিপ দ্বারা ল্যাচগুলি সক্ষম করে সহজ নির্বাচন করুন। যেহেতু আমরা একই ঠিকানা ব্যবহার করছি। আপনি দেখুন, ঠিকানা লাইন আছে এবং তথ্য লাইন আছে। সুতরাং আপনি যখন COM1 এ 3F8 ঠিকানা যুক্ত করেন বা ঠিকানা যাই হোক না কেন, I / O মেমরি মানচিত্রটি কেবল একটি বন্দরে যেমন একটি সিগন্যাল প্রেরণ করছে, উদাহরণস্বরূপ PS / 2, এবং একটি এবং গেটটি আপনার লাইনগুলিতে 1110000100 আছে কিনা 11 পরীক্ষা করছে কিনা 3 1000 এফ এবং 0100 8 হয়, বাইনারি থেকে হেক্স রূপান্তর দেখুন। যদি একটি বিট পজিশনে যেখানে উচ্চ ভোল্টেজগুলি উপস্থিত হয় সেখানে 1 রয়েছে, তবে পোর্ট, যেমনঃ rs232 বা পিএস / 2 সক্রিয় সেট করা আছে, অর্থাৎ এটি সক্ষম করা আছে, এটি সিই চিপ সক্ষম সিগন্যাল বা সিএস চিপ দ্বারা ল্যাচগুলি সক্ষম করে সহজ নির্বাচন করুন। যেহেতু আমরা একই ঠিকানা ব্যবহার করছি। আপনি দেখুন, ঠিকানা লাইন আছে এবং তথ্য লাইন আছে। সুতরাং আপনি যখন COM1 এ 3F8 ঠিকানা যুক্ত করেন বা ঠিকানা যাই হোক না কেন, I / O মেমরি মানচিত্রটি কেবল একটি বন্দরে যেমন একটি সিগন্যাল প্রেরণ করছে, উদাহরণস্বরূপ PS / 2, এবং একটি এবং গেটটি আপনার লাইনগুলিতে 1110000100 আছে কিনা 11 পরীক্ষা করছে কিনা 3 1000 এফ এবং 0100 8 হয়, বাইনারি থেকে হেক্স রূপান্তর দেখুন। যদি একটি বিট পজিশনে যেখানে উচ্চ ভোল্টেজগুলি উপস্থিত হয় সেখানে 1 রয়েছে, তবে পোর্ট, যেমনঃ rs232 বা পিএস / 2 সক্রিয় সেট করা আছে, অর্থাৎ এটি সক্ষম করা আছে, এটি সিই চিপ সক্ষম সিগন্যাল বা সিএস চিপ দ্বারা ল্যাচগুলি সক্ষম করে সহজ নির্বাচন করুন। 11 হ'ল 3 1000 এফ এবং 0100 8 হয়, বাইনারি থেকে হেক্স রূপান্তর দেখুন। যদি একটি বিট পজিশনে যেখানে উচ্চ ভোল্টেজগুলি উপস্থিত হয় সেখানে 1 রয়েছে, তবে পোর্ট, যেমনঃ rs232 বা পিএস / 2 সক্রিয় সেট করা আছে, অর্থাৎ এটি সক্ষম করা আছে, এটি সিই চিপ সক্ষম সিগন্যাল বা সিএস চিপ দ্বারা ল্যাচগুলি সক্ষম করে সহজ নির্বাচন করুন। 11 হ'ল 3 1000 এফ এবং 0100 8 হয়, বাইনারি থেকে হেক্স রূপান্তর দেখুন। যদি একটি বিট অবস্থানগুলিতে উচ্চ ভোল্টেজগুলি উপস্থিত হয় যেখানে 1 রয়েছে, তবে পোর্ট, উদাহরণস্বরূপ rs232 বা PS / 2 সক্রিয় সেট করা থাকে, অর্থাৎ এটি সক্ষম করা রয়েছে, এটি সিই চিপ সক্ষম সিগন্যাল বা সিএস চিপ দ্বারা ল্যাচগুলি সক্ষম করে সহজ নির্বাচন করুন।
একটি ল্যাচ এ এটি ই সক্ষম করুন পিন বা ওই সক্রিয় নিম্ন আউটপুট সক্ষম। উদাহরণস্বরূপ, বর্ণিত উদাহরণের সাথে আমরা ঠিকানাগুলি নির্বাচন করতে ব্যবহার করি (ডিকোডিংয়ের মাধ্যমে) আমরা যে আই / ও ডিভাইসটি ব্যবহার করতে চাই (উদাহরণস্বরূপ এলইডি আসে, যদি আমি / ও ডিভাইসটি নির্বাচিত হয়। সুতরাং এটি সক্ষম লাইনটি এরপরে, একবার I / O ডিভাইসটি নির্বাচিত হয়ে গেলে, পুরানো দিনের অষ্টাল ল্যাচগুলির মাধ্যমে, পুরানো দিনের ডাটা বাস থেকে পুরানো দিনের মধ্যে D0..7 বা উদাহরণস্বরূপ D0..63 উদাহরণস্বরূপ D0..63 উদাহরণস্বরূপ পাস করা হবে TH দিনগুলি, এটি ডি-টাইপ ফ্লিপ ফ্লপ সার্কিট যা ফ্লিপ ফ্লপের ভিতরে ডেটা সংরক্ষণ করে। একটি সক্রিয় উচ্চ ঘড়ি প্রান্তের সাথে, ডেটা দিয়ে যায় এবং সংরক্ষণ করা হয় clock এই ঘড়ির প্রান্তটি ডেটা সংকেতের 'ডেটা আরডিওয়াই' সিগন্যাল থেকে আসবে clock , এর বিভিন্ন নাম রয়েছে, আমি জানি না যে নামটি এখন কী। 64 বিটের জন্য, আমাদের কাছে আটটি আটটি ল্যাচ রয়েছে। এবং তারা উপায়ে বা ত্রি-স্থিতি নিয়ন্ত্রণ করতে দ্বি-নির্দেশমূলক ল্যাচগুলি ব্যবহার করে, যাতে যখন I / O ডিভাইসটি ব্যবহার করা হয় না তখন ডেটা লাইনগুলি উচ্চ প্রতিবন্ধী অবস্থায় থাকে। সুতরাং আপনি ঠিকানা লাইনে একটি সংমিশ্রণ সহ I / O ডিভাইসটি নির্বাচন করুন, এটি নম্বর, উদাহরণস্বরূপ 3UT8 এ OUT 3F8h, 7 এ এবং ডেটা, উদাহরণস্বরূপ 7 এখানে, ডাটা লাইনে পাস করা হয় যা OUT কমান্ডটি ডেটা ল্যাচগুলিতে OUT কেটে যায় এবং I / O ডিভাইসে চলে যায়। যদি আপনার কাছে থাকে, আপনি কমান্ডটি করতেন যেমন 3f8h, 800h, (আমি আশা করি, তবে আমি x86 এসেম্বলারের সিনট্যাক্সটি জানি না), আমি যা বলতে চাইছি তা হল, IN এর জন্য আপনি তথ্যটি ইনপুট করছেন ডেটা লাইনগুলি (ঠিকানাটি নির্বাচনের পরে, যেমন এখানে 3f7h, যা আমি / O ডিভাইস নির্বাচন করে), এই ডেটাটি আই / ও ডিভাইস থেকে আসে, ডেটা ল্যাচটিতে ডি-টাইপ ফ্লিপ ফ্লপের মাধ্যমে (ডেটা বাস লাইনের প্রতিটি বিটের জন্য একটি), এবং এমপিইউ মাইক্রো-প্রসেসিং ইউনিটে D0..7 বা (আধুনিক পিসিতে D0..63) পিনগুলিতে ইনপুট হয় )। এই উদাহরণে আমি 3f8 এইচ, 800 এএইচ রেখেছি, এটি দেখানোর জন্য যে এটি একবারে ডেটা আসে তারপরে 800h ঠিকানায় সংরক্ষণ করা হয়। X86 এর বাক্য গঠনটি আমার কাছে আলাদা বলে মনে হয়, আপনাকে সম্ভবত 3f8h, আহ বা অনুরূপ কিছু করতে হবে, অর্থাত্ প্রথমে আগত ডেটা দিয়ে একটি রেজিস্টারে, তারপরে আপনি 800 মভ, আহ, অর্থাত্ স্মৃতিতে ডেটা মুভ করতে চান র্যামের মধ্যে অবস্থান, (আপনি যদি এটি সঞ্চয় করতে চান), বা আহ ইত্যাদি দিয়ে অন্য কিছু করা আহ একটি উদাহরণ রেজিস্ট্রেশন, এটি যে কোনও, আল, বিএইচ, ব্লাড ইত্যাদি হতে পারে, তবে বাক্য গঠন পরীক্ষা করুন, প্রতিটি এসেম্বলারের সিস্টেমটি কিছুটা আলাদা, আমি x86 এর বিশেষজ্ঞ নই। আবার, আমি উদাহরণস্বরূপ আই / ও ঠিকানা হিসাবে 3f8h ব্যবহার করছি, শত শত রয়েছে,
আপনি যখন মেমোরিটি অ্যাক্সেস করেন (র্যাম, যেমন's০ এর দশকে by৪ বাইট স্ট্যাটিক র্যাম এবং গতিশীল র্যামস, ৮০ এর দশকে 8 কে এসআরএএম এবং ডিআআআআআএম, সিমসের সারিগুলি 90 এর দশকে প্রতিটি মেগাবাইটের প্রতিটি (লাইন মেমরি মডিউলটিতে একক) রয়েছে) লাইন মেমরির দ্বৈত ডিআইএমএমযুক্ত ডিডিআর মডিউলগুলির আকারে, আমি পরীক্ষা করে নিইনি তবে সর্বশেষ সম্ভবত কোনও সন্দেহ নেই যে প্রত্যেকের প্রতিটি ছোট চিপে কয়েকটি গিগা বাইট রয়েছে), যদি এটি কোনও আই / ও ঠিকানা না হয় (খুব খুব কয়েকটি ঠিকানা আই / ও ঠিকানা, আজকাল মেমরিটি আধুনিক পিসিতে আই / ও এর চেয়ে ঠিকানা স্পেসে কয়েক মিলিয়ন বার বা তার বেশি হওয়ার সম্ভাবনা রয়েছে), আপনি এখনও মেমোরিতে একই পঠন লিখনের নির্দেশাবলী ব্যবহার করেন তবে আপনি নন এমন কিছু বাহ্যিক যুক্তিযুক্ত সার্কিট ড্রাইভিং যা সেই বিটগুলি সন্ধান করে, পরিবর্তে সেই ঠিকানাগুলি এবং ডেটা পিনগুলি সরাসরি র্যাম চিপগুলিতে তারযুক্ত হয়।
মেশিন কোডে, I / O এবং মেমরি ঠিকানা ঠিক একইভাবে উপস্থিত হয়, যদিও এটি উভয়ই মেমরির প্রবেশাধিকার, তবে শারীরিকভাবে যা ঘটে তা প্রকৃত বৈদ্যুতিন সার্কিটে সম্পূর্ণ ভিন্ন।