কন্ট্রোলার কীভাবে জানতে পারে কখন আইএসআরে ঝাঁপিয়ে পড়তে হয়?


12

আমি কোর স্তরের জিনিস সম্পর্কে কথা বলছি।

আমি যতদূর বুঝতে পেরেছি, কন্ট্রোলার কোর কেবল নির্দেশাবলী কার্যকর করে যা মেমরি থেকে প্রাপ্ত হয় (আনুন - ডিকোড - কার্যকর করুন)। যখন কোনও বাধা আসে, কোর / এএলইউ কীভাবে আইএসআর-এ যাওয়ার সিদ্ধান্ত নেয়?

যেহেতু আমরা বা সংকলক, বাধা স্থিতিটি পোল করার জন্য কোনও নির্দেশনা যুক্ত করি না - তবে কীভাবে এটি জানতে পারে যে একটি বাধা দেওয়া দরকার?

উত্তর:


13

আপনি যা অনুপস্থিত তা হ'ল মূলটি মেমরি থেকে প্রাপ্ত ওপকডগুলি চালিত করার চেয়ে আরও বেশি কিছু করে । বাধা প্রয়োগের জন্য এটিতে নির্দিষ্ট যুক্তি রয়েছে।

বাধা সনাক্তকরণের হার্ডওয়্যার যখন সিগন্যালটিকে দৃ .়ভাবে জানায় যে এটি একটি বাধা নেওয়ার সময় হয়েছে তখন সাধারণত একটি বিশেষ নির্দেশটি কোরটিতে জ্যাম হয়ে থাকে যা মেমরি থেকে কখনই আনা হয়নি। বেশিরভাগ ক্ষেত্রে এটি বিঘ্নিত ভেক্টর ঠিকানার একটি কল নির্দেশ ruction এটি বর্তমান পিসিকে কল স্ট্যাকটিতে সংরক্ষণ করতে এবং এটিকে বাধা ভেক্টরের ঠিকানায় পরিবর্তন করার জন্য বিদ্যমান নির্দেশনা কার্যকরকরণ ব্যবস্থাকে ব্যবহার করে। এটি প্রাক-আনীত নির্দেশাবলী এবং এই জাতীয় জিনিসগুলি বাতিল করার সাথেও কাজ করে।

বিশেষ বিঘ্নিত-গ্রহণকারী যুক্তিকেও এমনভাবে বাধা নিষ্ক্রিয় করতে হবে যাতে একই বিঘ্নিত পরিস্থিতি পরবর্তী চক্রকে বাধা ভেক্টরের ঠিকানায় অন্য কল না দেয়। বিভিন্ন হ্যান্ডেল করার বিভিন্ন পদ্ধতি রয়েছে different সবচেয়ে সহজ হ'ল কেবলমাত্র বিশ্বব্যাপী বিঘ্নিত বাধা নিষ্ক্রিয় করা, যাতে সফ্টওয়্যারটি বিঘ্নিত পরিষেবার রুটিন শেষে পুনরায় সক্ষম করে। অন্যান্য প্রসেসরের একটি বাধা অগ্রাধিকার স্তর রয়েছে। এই স্তরটি এমনভাবে আবদ্ধ হয়েছে যাতে কেবলমাত্র উচ্চতর অগ্রাধিকারের বাধা শর্তগুলি একটি নতুন বাধা সৃষ্টি করতে পারে। বাধা অগ্রাধিকার হ'ল এমন কিছু যা CALL রিটার্ন ঠিকানার সাথে স্বয়ংক্রিয়ভাবে সংরক্ষণ করা হয় এবং কোড যখন বাধা থেকে ফিরে আসে তখন পুনরুদ্ধার করা হয়।


1
প্রায়শই, এটি কোনও সাধারণ CALLনির্দেশ নয়, কারণ বাধা বিভিন্ন উপায়ে শেষ করা হয় (সিএফ। RETবনাম RETI)।
glglgl

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

3

সাধারণত আধুনিক মাইক্রোকন্ট্রোলারগুলিতে একটি ডেডিকেটেড ইন্টারপট কন্ট্রোলার (আইসি) ইউনিট থাকে যারা বাধা ব্যবস্থাপনার দায়িত্বে থাকে। উপরন্তু প্রতিটি পেরিফেরাল কম্পোনেন্ট একটি ইন্টারাপ্ট আউটপুট (গুলি) যা থেকে যাচ্ছে হয়েছে 0থেকে 1(অথবা বিপরীতভাবে ভাইস) যদি কিছু শর্ত (যেমন এই পেরিফেরাল কিছু কাজ সম্পন্ন করার জন্য) প্রযোজ্য। এই আউটপুটটি বিঘ্নিত নিয়ামকের সাথে সংযুক্ত। CoreCPU- র আইসি বলতে পারেন হয় আপনি এই নির্দিষ্ট বিঘ্ন উপেক্ষা করার (এটা মাস্ক) বা MCU অবহিত করার যখনই নির্দিষ্ট সংকেত triggering দ্বারা ঘটে, এবং তারপর MCU কি এটা দিয়ে কি করার সিদ্ধান্ত নেয়। সাধারণ উপায়টি হ'ল এমসিইউকে আইসিকে জানানোর জন্য আইসি রয়েছে যা বাধাগ্রস্ত হয়েছিল এবং সংশ্লিষ্ট হ্যান্ডলিং কোডটিতে ঝাঁপিয়ে পড়ে।


2

কম্পিউটার কোরটিতে এমন একটি হার্ডওয়্যার রয়েছে যা প্রোগ্রামের কাউন্টারে একটি নতুন মান জ্যাম করে যা ট্রিগারযুক্ত বিশেষ বাধাদানের সাথে সম্পর্কিত to বাধা রুটিন শেষ হওয়ার পরে কোথায় ফিরে আসবেন তা মনে রাখার জন্য প্রোগ্রামের কাউন্টারে হার্ডওয়ারটি বাধাপূর্ণ ঠিকানার আগে প্রোগ্রামের কাউন্টারে বর্তমান মানটিকে স্ট্যাকের মধ্যে ঠেলে দেওয়া হয়। যখন বাধা রুটিন সম্পন্ন হয় তখন প্রোগ্রামের কাউন্টারটির মূল মানটি স্ট্যাকের বাইরে ফিরে আসে।

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


2

কন্ট্রোলারের প্রোগ্রামের কাউন্টারের জন্য একটি নিবন্ধ রয়েছে যা পরবর্তী নির্দেশিত কার্য সম্পাদনের নির্দেশ সংরক্ষণ করা হয় সেই ঠিকানার উপর নজর রাখে। (একটি লাফ কার্যকর করা হলে এই রেজিস্টারটিও লেখা হয়))

কন্ট্রোলারের একটি বাধা ভেক্টর থাকে (বা কখনও কখনও একের অধিক, বাধাগুলির ধরণের উপর নির্ভরশীল) থাকে, যা ঠিকানা যেখানে আইএসআর সঞ্চিত থাকে। এই ঠিকানাটি সর্বদা একরকম - এটি রিসেট ভেক্টরের মতো, যেখানে প্রোগ্রাম শুরু হয়।

(প্রায়শই, এই ভেক্টরে একটি জাম্পের নির্দেশ সঞ্চিত থাকে যা কার্যকর করার জন্য প্রকৃত কোডে ঝাঁপ দেয়, যেহেতু ভেক্টরের স্পেস পুরো প্রক্রিয়াটি সংরক্ষণ করার জন্য যথেষ্ট নয় However তবে, গুরুত্বপূর্ণ বিষয়টি হ'ল আইএসআর সর্বদা একই স্থানে থাকে অবস্থান।)

যখন কোনও বাধা ঘটে তখন নিয়ামকটিতে কিছু উত্সর্গীকৃত হার্ডওয়্যার থাকে যা বাধা ভেক্টরের সাথে প্রোগ্রামের কাউন্টারটি লেখে। তারপরে, যখন নিয়ন্ত্রকটি পরবর্তী নির্দেশ চক্রটিতে পৌঁছায়, তখন প্রোগ্রামের কাউন্টারটির দ্বারা নির্দেশিত ঠিকানা থেকে নির্দেশটি এনেছে (সুতরাং, বাধা ভেক্টর)।

(কন্ট্রোলারের একটি নির্দেশ চক্রে এটি সম্পাদন করা বিভিন্ন কাজ রয়েছে: এটি প্রোগ্রামের কাউন্টার দ্বারা নির্দেশিত ঠিকানা থেকে পরবর্তী নির্দেশিকাটি গ্রহণ করে; এটি প্রোগ্রামের কাউন্টারকে বাড়িয়ে তোলে; নির্দেশটি ডিকোড করে এবং কার্যকর করে।)

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