একটি আধুনিক কম্পিউটারের জন্য তাত্ত্বিক ন্যূনতম সংখ্যা নিবন্ধ?


10

আমি আমার স্নাতক স্নাতক অধ্যয়নের সংকলকগুলির উপর একটি কোর্স নিয়েছিলাম যাতে আমরা একটি সংকলক লিখেছিলাম যে একটি খেলনা জাভা-জাতীয় ভাষায় উত্স প্রোগ্রামগুলি একটি খেলনা সমাবেশের ভাষাতে সংকলন করে (যার জন্য আমাদের একজন দোভাষী ছিল)। প্রকল্পে আমরা টার্গেট মেশিনটি "রিয়েল" নেটিভ এক্সিকিউটেবলের সাথে নিবিড়ভাবে সম্পর্কিত সম্পর্কিত কিছু অনুমান করেছি, যার মধ্যে রয়েছে:

  • একটি রান-টাইম স্ট্যাক, ডেডিকেটেড স্ট্যাক পয়েন্টার ("এসপি") রেজিস্টার দ্বারা ট্র্যাক করা
  • গতিশীল অবজেক্ট বরাদ্দকরণের জন্য একটি গাদা, ডেডিকেটেড হিপ পয়েন্টার ("এইচপি") রেজিস্টার দ্বারা ট্র্যাক করা
  • একটি ডেডিকেটেড প্রোগ্রাম কাউন্টার রেজিস্টার ("পিসি")
  • লক্ষ্য মেশিনে 16 টি নিবন্ধ রয়েছে
  • ডেটাতে অপারেশনগুলি (যেমন, যেমন লাফের বিপরীতে) নিবন্ধভুক্ত-থেকে-নিবন্ধকরণ অপারেশন

যখন আমরা একক হিসাবে নিবন্ধকরণ বরাদ্দ ব্যবহার করে ইউনিটটিতে পৌঁছেছিলাম, তখন তা আমাকে অবাক করে তুলেছিল: এই জাতীয় মেশিনের জন্য তাত্ত্বিক ন্যূনতম সংখ্যা কত? আপনি আমাদের অনুমান দ্বারা দেখতে পাচ্ছেন যে আমরা আমাদের সংকলকটিতে পাঁচটি রেজিস্টার (এসপি, এইচপি, পিসি, এবং দুটি বাইনারি অপারেশনগুলির জন্য সঞ্চয় হিসাবে ব্যবহারের জন্য) ব্যবহার করেছি। রেজিস্টার বরাদ্দ মত অপ্টিমাইজেশন অবশ্যই ব্যবহার করতে পারেন যদিও আরও রেজিস্টার, একটি উপায় আছে তার চেয়ে কম স্ট্যাকের এবং গাদা মত থাকতেই ধারনকারী কাঠামোর সঙ্গে দ্বারা পেতে হয়? আমি মনে করি রেজিস্টার ঠিকানা (রেজিস্ট্রার টু-রেজিস্ট্রার অপারেশন) দিয়ে আমাদের কমপক্ষে দু'জন রেজিস্টার প্রয়োজন, তবে আমাদের কি আরও দু'জনের বেশি দরকার?


একটি "হিপ পয়েন্টার" মনে হচ্ছে একটি অদ্ভুত ধারণা। স্ট্যাকের বিপরীতে, গাদাটি লিফো নয় এবং শব্দার্থক শব্দগুলি বা ধাক্কা দিতে কমায় না। আপনার পরিবর্তে মলোক / ফ্রি রুটিনগুলিতে কল হিসাবে গতিশীল মেমরির বরাদ্দ দেখতে পাওয়া উচিত।
ইয়ভেস দাউস্ট

উত্তর:


14

যদি আপনি মেমোরি ঠিকানার মাধ্যমে সরাসরি মেমরির অ্যাক্সেসের অনুমতি দেন তবে আপনার কোনও "নিবন্ধক" দরকার নেই কারণ আপনি পরিবর্তে মেমরি অবস্থান ব্যবহার করতে পারেন। উদাহরণস্বরূপ, অবস্থান 0 এ মেমরি প্রোগ্রামের কাউন্টার হতে পারে, অবস্থান 1 এ আমাদের স্ট্যাক পয়েন্টার ইত্যাদি রয়েছে তবে এটি প্রতারণা করছে।

সুতরাং নিজেকে প্রতারণার হাত থেকে বাঁচানোর জন্য, ধরে নেওয়া যাক সরাসরি মেমরির অ্যাক্সেস নেই, কারণ আমরা রেজিস্টার হিসাবে স্থির মেমরির অবস্থানগুলি ব্যবহার করতে পারি। তারপরে আমরা দুটি রেজিস্টার, একটি প্রোগ্রাম কাউন্টার এবং স্ট্যাক পয়েন্টার সহ সরে যেতে পারি, স্ট্যাক মেশিনে উইকিপিডিয়া নিবন্ধে বর্ণিত হিসাবে । স্ট্যাকটি কেবল স্ট্যাক পয়েন্টারের মাধ্যমে অ্যাক্সেসযোগ্য এবং প্রোগ্রামটি কাউন্টারের মাধ্যমে প্রোগ্রামটি কেবল অ্যাক্সেসযোগ্য।

আরেকটি সম্ভাবনা হ'ল কাউন্টার মেশিন ব্যবহার করা। একটি দ্বি-কাউন্টার মেশিনটি ট্যুরিং সম্পূর্ণ, অর্থাত্, এটি ট্যুরিং মেশিন যা পারে তা গণনা করতে পারে। কাউন্টার মেশিনগুলির উইকিপিডিয়া নিবন্ধে এটি আবার সুন্দরভাবে ব্যাখ্যা করা হয়েছে ।


উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ! স্ট্যাক মেশিনগুলির নিবন্ধটিতে উল্লেখ করা হয়েছে, যদিও, মেশিনটি সরাসরি মেমরি অ্যাক্সেস করতে সক্ষম (শীর্ষস্থানীয় স্ট্যাক উপাদানগুলির উপর ক্রিয়াকলাপ সম্পাদন করতে এবং ফলাফলটিকে আবার পিছনে ঠেলে দিতে), তাই এখনও প্রতারণা করছে, তাই না? কাউন্টার মেশিন হিসাবে, আমি নিবন্ধটি পড়েছি। আমি 2-সিএম এর টিসির অনুরূপ প্রমাণও পড়েছি, তবে উভয়ই কার্যকরভাবে দুটি রেজিস্টারে সমস্ত র‌্যাম সংরক্ষণ করে জড়িত, যা আমার কাছে প্রতারণার মতো আরও বেশি মনে হয়।
ব্লুবম্বার

ঠিক আছে, এক পর্যায়ে এটি আর প্রতারণা করছে না। স্ট্যাক ক্রিয়াকলাপগুলি প্রতারণা করছে না, যতক্ষণ না তারা মেমরিতে স্থির কোনও স্থানে সরাসরি অ্যাক্সেসের অনুমতি দেয়। এটি স্ট্যাকের শীর্ষস্থানীয় তিনটি উপাদানকে ঘোরানো, বলতে সক্ষম হওয়া ঠিক আছে। আপনার প্রশ্নটি কিছুটা অদ্ভুত, যাইহোক, তাই কী তা প্রতারণা করে না এবং প্রতারণা করে না।
আন্দ্রেজ বাউয়ার 21

উত্তরের জন্য আবার ধন্যবাদ। যে কোনও সময় বিষয়টি তাত্ত্বিক সীমাগুলির সাথে সম্পর্কিত, প্রতারণা আরও কম গ্রহণযোগ্য! এর অর্থ এই নয় যে এটি শিক্ষামূলক নয়, যদিও। এটি যখন প্রতারণা করছে না সে বিষয়টিটি হ'ল কখন, ঠিক কোনও প্রতারণা নেই I আমি আপনার প্রাথমিক উত্তরটি তথ্যপূর্ণ পেয়েছি তবে সমস্যাটি হ'ল আমাদের মডেল সমস্ত টিউরিং মেশিন, কাউন্টার মেশিন এবং স্ট্যাক মেশিনের সমস্ত মডেলগুলিকে ওভারল্যাপ করে এবং আমাদের অনুমানগুলি দেয় (চূড়ান্তভাবে অনেক সুনির্দিষ্ট রেজিস্ট্রার এবং কোনও সরাসরি মেমরি অ্যাক্সেস সহ) আমরা পেতে পারি মাত্র দুটি রেজিস্টার দিয়ে?
ব্লুবম্বার

1
আমি প্রশ্নটি অদ্ভুত বলে মনে করি কারণ প্রসেসর, নিবন্ধকরণ, মেমরির অ্যাক্সেস ইত্যাদির মতো বাস্তব-বিশ্ব ধারণাটি পিন করা শক্ত তবে কোনও কিছু প্রমাণ করতে সক্ষম হওয়ার জন্য আপনার এগুলি পিন করা দরকার। সুতরাং শেষ ফলাফলটি হ'ল আপনি যা যা প্রমাণ করেন তা প্রমাণ করা সহজ, তবে আপনি কীভাবে প্রশ্নটি আনুষ্ঠানিক করবেন ("প্রসেসর", "নিবন্ধক", "মেমরি" ইত্যাদি আপনার তাত্ত্বিক ধারণাটি কী) এর উপর এটি অনেকটাই নির্ভর করে।
আন্দ্রেজ বাউয়ার

1
একটি সংকলক পাঠ্যপুস্তক আমাদের "প্রমাণ" শব্দের গাণিতিক অর্থে কমপক্ষে প্রমাণ করতে দেয় না। এমন কোনও কিছু পৌঁছানোর জন্য আপনাকে হার্ডওয়্যারকে আনুষ্ঠানিককরণে আরও এক ধাপ এগিয়ে যেতে হবে যা প্রমাণ দেয় । যাইহোক, আমরা চুল বিভাজন করছি, এবং আমি ইতিমধ্যে আপনাকে আমার সেরা উত্তর দিয়েছি।
আন্দ্রেজ বাউর

1

পিকের আর্কিটেকচার যা ১৯ Inst০ এর দশকে জেনারেল ইনস্ট্রুমেন্টস দ্বারা প্রবর্তিত হয়েছিল এবং আজও এটি ব্যবহারে রয়েছে নিম্নলিখিত নিবন্ধগুলি রয়েছে:

W register (not addressible)
01    Timer/Counter
02    Program Counter
03    Status
04    File-Select Register
05-07 One register for each I/O port
08-1F General-purpose registers/"memory"

একটি সাধারণ নির্দেশিকা একটি নিবন্ধক পড়বে, মান পঠিত এবং ডাব্লু ব্যবহার করে একটি গণনা সম্পাদন করবে এবং তারপরে গণনার ফলাফলটি ডাব্লুতে বা যে রেজিস্টারটি পড়েছিল তা সংরক্ষণ করবে। উপলব্ধ গণনাগুলির মধ্যে একটি "ডাব্লু উপেক্ষা করে মান পড়ছে"; অন্যটি হ'ল "পঠিত মানটি উপেক্ষা করে ডাব্লু নিন"। বিট প্যাটার্নগুলি যা "এক্সএক্স পড়ুন, তারপরে ডাব্লু নেবেন, মূল্য পড়ার মূল্য উপেক্ষা করুন এবং ফল ডাব্লুতে সংরক্ষণ করুন" NOP এর পাশাপাশি বিভিন্ন বিশেষ নির্দেশাবলীর জন্য ব্যবহৃত হবে।

ঠিকানা গণনা অনুমোদন করতে, প্রসেসরের এক্সিকিউশন ইউনিট নির্দেশিকার জন্য নজর রাখবে যা 00 এর ঠিকানা এনকোড করে, এবং ঠিকানার জন্য ফাইল নির্বাচন রেজিস্টারের বিষয়বস্তুগুলিকে প্রতিস্থাপন করে।

যদিও ডাব্লু রেজিস্ট্রারের মাধ্যমে সমস্ত মান খাওয়ানো একটি বাধা হতে পারে তবে একই দৈর্ঘ্যের নির্দেশের শব্দটি ব্যবহার করে অন্যান্য আর্কিটেকচারের তুলনায় পিআইসি আর্কিটেকচারটি একটি বৃহত কার্যকারী সেট হিসাবে রয়েছে। PIC16C54- তে (এখনও আজও তৈরি, এবং 1970 এর পিআইসির সাথে খুব মিল) নির্দেশাবলী 12 বিট দীর্ঘ। অন্য অনেক 16Cxx বা 16 এফএক্সএক্সএক্স অংশগুলিতে, নির্দেশাবলী 14 বিট লম্বা হয় এবং 128-বাইট অ্যাড্রেস স্পেসে সরাসরি প্রবেশ করতে পারে। যদি কোনও প্রোগ্রামের কার্যনির্বাহী নির্দেশের কার্যক্রমের সেটটি ভালভাবে ফিট করে তবে "মোট + = মান" এর মতো একটি বিবৃতি, যেখানে "মোট" এবং "মান" টাইপ করা unsigned charহয়:

movf  value,w
addwf total,f

এআরএম এর মতো কোনও কিছুর উপর, কারও কারও ভেরিয়েবলের বেস ঠিকানা সহ একটি রেজিস্টার প্রি-লোড থাকা সত্ত্বেও কোডটি আরও পছন্দ হবে:

ldr    r0,[r7+value]
ldr    r1,[r7+total]
add    r1,r1,r0
str    r1,[r7+total]

অনেক ক্ষেত্রে, একটি সংকলক প্রতিটি ক্রিয়াকলাপের সাথে বোঝা এবং সঞ্চয়গুলি এড়াতে সক্ষম হতে পারে তবে পিআইসির মতো কিছু ক্ষেত্রে, বৃহত্তর কার্যনির্বাহী সেটটির সুবিধাগুলি মাঝে মাঝে ডাব্লুয়ের মধ্য দিয়ে যাওয়ার সীমাবদ্ধতা ছাড়িয়ে যেতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.