Advanced Programmable Interrupt Controller
কম্পিউটিংয়ে, ইন্টেলের অ্যাডভান্সড প্রোগ্রামেবল ইন্টারাপ্ট কন্ট্রোলার (এপিআইসি) হল ইন্টারাপ্ট কন্ট্রোলারদের একটি পরিবার। এর নাম থেকে বোঝা যায়, এপিআইসি ইন্টেলের 8259 প্রোগ্রামেবল ইন্টারাপ্ট কন্ট্রোলার (পিআইসি)-এর চেয়ে আরও উন্নত, বিশেষ করে মাল্টিপ্রোসেসর সিস্টেম নির্মাণের জন্য। এটি মাল্টিপ্রোসেসর কম্পিউটার সিস্টেমে ইন্টারাপ্ট রাউটিং দক্ষতার সমস্যা সমাধানের উদ্দেশ্যে তৈরি বেশ কয়েকটি স্থাপত্য নকশার মধ্যে একটি। এপিআইসি একটি বিভক্ত স্থাপত্য নকশা, যার একটি স্থানীয় উপাদান (এলএপিআইসি) সাধারণত প্রসেসরের সাথে একীভূত হয় এবং একটি সিস্টেম বাসে একটি ঐচ্ছিক আই/ও এপিআইসি থাকে। প্রথম এপিআইসি ছিল 82489ডিএক্স এটি একটি বিচ্ছিন্ন চিপ যা স্থানীয় এবং আই/ও এপিআইসি উভয় হিসাবে কাজ করত। 82489ডিএক্স ইন্টেল 486 এবং প্রাথমিক পেন্টিয়াম প্রসেসরের সাথে প্রতিসম মাল্টিপ্রোসেসর (এসএমপি) সিস্টেম নির্মাণ করতে সক্ষম করে; উদাহরণস্বরূপ, রেফারেন্স দ্বি-মুখী 486 এসএমপি সিস্টেমে তিনটি 82489ডিএক্স চিপ ব্যবহার করা হয়, দুটি স্থানীয় এপিআইসি এবং একটি আই/ও এপিআইসি হিসাবে। পি54সি প্রসেসর থেকে শুরু করে, স্থানীয় এপিআইসি কার্যকারিতা ইন্টেল প্রসেসরের সিলিকোনে সংহত করা হয়েছিল। প্রথম ডেডিকেটেড আই/ও এপিআইসি ছিল ইন্টেল 82093এএ, যা পিআইআইএক্স3-ভিত্তিক সিস্টেমের জন্য তৈরি করা হয়েছিল। সংক্ষিপ্ত বিবরণ ইন্টেল এপিআইসি সিস্টেমে দুটি উপাদান রয়েছে, স্থানীয় এপিআইসি (এলএপিআইসি) এবং আই/ও এপিআইসি। সিস্টেমে প্রতিটি সিপিইউতে একটি করে এলএপিআইসি রয়েছে। প্রথম বাস্তবায়নে (82489ডিএক্স), এলএপিআইসি একটি বিচ্ছিন্ন সার্কিট ছিল, ইন্টেল প্রসেসরের সিলিকোনে এর পরবর্তী বাস্তবায়নের বিপরীতে। সিস্টেমে প্রতিটি পেরিফেরাল বাসের জন্য সাধারণত একটি আই/ও এপিআইসি থাকে। মূল সিস্টেম ডিজাইনে, এল. এ. পি. আই. সি এবং আই/ও এ. পি. আই. সি একটি ডেডিকেটেড এ. পি. আই. সি বাস দ্বারা সংযুক্ত ছিল। নতুন সিস্টেমগুলি সমস্ত এপিআইসি উপাদানগুলির মধ্যে যোগাযোগের জন্য সিস্টেম বাস ব্যবহার করে। প্রতিটি এপিআইসি, তা সে পৃথক চিপই হোক বা সিপিইউতে সমন্বিত, তার নির্দিষ্ট এপিআইসি বাস্তবায়নের জন্য একটি চার-বিট সংস্করণ নম্বর সম্বলিত একটি সংস্করণ রেজিস্টার থাকে। উদাহরণস্বরূপ, 82489ডিএক্স-এর একটি এপিআইসি সংস্করণ নম্বর 0, যেখানে সংস্করণ 1 পেন্টিয়াম 90 এবং 100 প্রসেসরে সমন্বিত স্থানীয় এপিআইসি-র প্রথম প্রজন্মকে বরাদ্দ করা হয়েছিল। 8259 পি. আই. সি ধারণকারী সিস্টেমে, 8259 সিস্টেমের বুটস্ট্র্যাপ প্রসেসর (বি. এস. পি), সিস্টেমের আই/ও এ. পি. আই. সি-এর মধ্যে একটি বা উভয়ের মধ্যে এল. এ. পি. আই. সি-এর সাথে সংযুক্ত হতে পারে। যৌক্তিকভাবে, তবে, 8259 যে কোনও নির্দিষ্ট সময়ে শুধুমাত্র একবার সংযুক্ত করা হয়। বিচ্ছিন্ন এপিক প্রথম প্রজন্মের ইন্টেল এপিক চিপ, 82489ডিএক্স, যা ইন্টেল 80486 এবং প্রাথমিক পেন্টিয়াম প্রসেসরের সাথে ব্যবহার করার কথা ছিল, আসলে একটি বর্তনীতে একটি বাহ্যিক স্থানীয় এবং আই/ও এপিক। বেশিরভাগ পেন্টিয়াম প্রসেসরে পাওয়া "ইন্টিগ্রেটেড এপিআইসি"-র বিপরীতে ইন্টেল এমপি 1.4 নির্দিষ্টকরণ এটিকে "বিচ্ছিন্ন এপিআইসি" হিসাবে উল্লেখ করে। 82489ডিএক্স-এর 16টি ইন্টারাপ্ট লাইন ছিল; এটির একটি কৌতূহলও ছিল যে এটি কিছু আইএসএ ইন্টারাপ্ট হারাতে পারে। একটি মাল্টিপ্রোসেসর 486 সিস্টেমে, প্রতিটি সিপিইউকে তার নিজস্ব 82489ডিএক্সের সাথে যুক্ত করতে হত; অতিরিক্তভাবে একটি সম্পূরক 82489ডিএক্সকে আই/ও এপিআইসি হিসাবে ব্যবহার করতে হত। 82489ডিএক্স 8259এ (এক্সটি-পিআইসি) অনুকরণ করতে পারেনি তাই এগুলিকে পিছনের সামঞ্জস্যের জন্য শারীরিক চিপ হিসাবে অন্তর্ভুক্ত করতে হয়েছিল। 82489ডিএক্স একটি 132-পিন পি. কিউ. এফ. পি হিসাবে প্যাকেজ করা ছিল। সমন্বিত স্থানীয় এপিআইসি স্থানীয় এপিআইসি (এলএপিআইসি) একটি এসএমপি সিস্টেমে কিছু নির্দিষ্ট প্রসেসরের জন্য সমস্ত বাহ্যিক বাধা পরিচালনা করে। উপরন্তু, তারা এল. এ. পি. আই. সি-র মধ্যে ইন্টার-প্রসেসর ইন্টারাপ্ট (আই. পি. আই) গ্রহণ করতে এবং তৈরি করতে সক্ষম। এল. এ. পি. আই. সি একটি আই/ও এ. পি. আই. সি থেকে 224 টি ব্যবহারযোগ্য ইন্টারাপ্ট ভেক্টর সমর্থন করতে পারে। ভেক্টর সংখ্যা 0 থেকে 31,0 থেকে 255 এর মধ্যে, x86 প্রসেসর দ্বারা ব্যতিক্রম পরিচালনার জন্য সংরক্ষিত। পি5 মাইক্রোআর্কিটেকচার (পি54সি) দিয়ে শুরু হওয়া সমস্ত ইন্টেল প্রসেসরের একটি অন্তর্নির্মিত স্থানীয় এপিআইসি রয়েছে। যাইহোক, যদি স্থানীয় এপিআইসি একটি পি5 প্রসেসরে নিষ্ক্রিয় থাকে, তবে এটি সফ্টওয়্যার দ্বারা পুনরায় সক্ষম করা যাবে না; এই সীমাবদ্ধতা আর পি6 প্রসেসর এবং পরবর্তী প্রসেসরগুলিতে বিদ্যমান নেই। স্থানীয় এপিআইসি সক্রিয় না করে পিসিআই 2.2 এবং পরবর্তী নির্দিষ্টকরণের বার্তা সংকেত বিঘ্ন (এমএসআই) বৈশিষ্ট্য ব্যবহার করা যাবে না। এম. এস. আই-এর ব্যবহার আই/ও এপিআইসি-র প্রয়োজনীয়তা দূর করে। উপরন্তু, এম. এস. আই মোডে 224 টি পর্যন্ত বাধা সমর্থিত, এবং আই. আর. কিউ ভাগ করে নেওয়ার অনুমতি নেই। এপিআইসি টাইমার স্থানীয় এপিআইসি-র আরেকটি সুবিধা হল এটি একটি উচ্চ-রেজোলিউশন (এক মাইক্রোসেকেন্ড বা আরও ভাল ক্রমে) টাইমারও সরবরাহ করে যা বিরতি এবং ওয়ান-অফ মোড উভয় ক্ষেত্রেই ব্যবহার করা যেতে পারে। এপিআইসি টাইমারের প্রাথমিক গ্রহণযোগ্যতা সমস্যা ছিল। 2002 সালের একটি মাইক্রোসফ্ট নথি (যা পরিবর্তে উচ্চ নির্ভুলতা ইভেন্ট টাইমার গ্রহণের পক্ষে ছিল) এল. এ. পি. আই. সি টাইমারের "দুর্বল রেজোলিউশন" থাকার জন্য সমালোচনা করেছিল এবং বলেছিল যে "ঘড়ির সিলিকন কখনও কখনও খুব বাগ হয়"। তবুও, এপিআইসি টাইমার ব্যবহার করা হয় উদাহরণস্বরূপ উইন্ডোজ 7 দ্বারা যখন প্রোফাইলিং সক্ষম করা হয়, এবং উইন্ডোজ 8 দ্বারা সমস্ত পরিস্থিতিতে। (উইন্ডোজ 8 এই টাইমারের একচেটিয়া অধিকার দাবি করার আগে, এটি সিপিইউ-জেড এর মতো কিছু প্রোগ্রাম দ্বারাও ব্যবহৃত হত।) মাইক্রোসফ্ট উইন্ডোজের অধীনে এপিআইসি টাইমার শেয়ারযোগ্য সম্পদ নয়। এপিআইসি টাইমার দ্বারা প্রদত্ত এপেরিওডিক ইন্টারাপ্টগুলি লিনাক্স কার্নেল টিকলেস কার্নেল বৈশিষ্ট্য দ্বারা ব্যবহৃত হয়। এই ঐচ্ছিক কিন্তু ডিফল্ট বৈশিষ্ট্যটি 2.6.18-এর সঙ্গে নতুন। যখন একটি এপিআইসি টাইমার সহ একটি কম্পিউটারে সক্রিয় করা হয়, তখন কার্নেল সময়পালনের জন্য 8253 প্রোগ্রামেবল ব্যবধান টাইমার ব্যবহার করে না। একটি ভিএমওয়্যার নথিতে উল্লেখ করা হয়েছে যে "সফ্টওয়্যারটির ফ্রিকোয়েন্সি নির্ধারণের কোনও নির্ভরযোগ্য উপায় নেই। সাধারণত, স্থানীয় এপিআইসি টাইমারের ফ্রিকোয়েন্সি নির্ধারণের একমাত্র উপায় হল পিআইটি বা সিএমওএস টাইমার ব্যবহার করে এটি পরিমাপ করা, যা শুধুমাত্র একটি আনুমানিক ফলাফল দেয়। আই/ও এপিআইসি-র আই/ও এপিআইসি-তে একটি পুনর্নির্দেশ টেবিল থাকে, যা পেরিফেরাল বাস থেকে প্রাপ্ত বাধাগুলি এক বা একাধিক স্থানীয় এপিআইসি-তে রুট করতে ব্যবহৃত হয়। প্রথম দিকের আই/ও এপিআইসিগুলিতে (যেমন 82489ডিএক্স, SIO.A এবং পিসিইবি/ইএসসি) শুধুমাত্র 16টি ইন্টারাপ্ট লাইনের জন্য সমর্থন ছিল, কিন্তু পরবর্তী 82093এএ (পিআইআইএক্স3/পিআইআইএক্স4-এর জন্য পৃথক চিপ)-এর মতো 24টি ইন্টারাপ্ট লাইনের জন্য সমর্থন ছিল। এটি একটি 64-পিন পি. কিউ. এফ. পি হিসাবে প্যাকেজ করা হয়েছিল। 82093এএ সাধারণত পিআইআইএক্স3/পিআইআইএক্স4-এর সাথে সংযুক্ত থাকে এবং এর সমন্বিত উত্তরাধিকার 8259 পিআইসি ব্যবহার করে। আইসিএইচ1 এবং ইন্টেল 815 আই/ও এপিআইসি-কে একীভূত করেছে। লিনাক্স ব্যবহার করে 2009 সালের ইন্টেল বেঞ্চমার্ক অনুসারে, আই/ও এপিআইসি 8259 এমুলেশন (এক্সটি-পিআইসি)-এর তুলনায় প্রায় তিন গুণক দ্বারা বিরতি বিলম্বকে হ্রাস করেছে, যখন এমএসআই ব্যবহার করে বিলম্বকে আরও বেশি হ্রাস করেছে, এক্সটি-পিআইসি বেসলাইনের তুলনায় প্রায় সাত গুণক দ্বারা। xAPIC পেন্টিয়াম 4-এর সাথে চালু করা হয়েছিল, যেখানে x2APIC হল ইন্টেলের প্রোগ্রামেবল ইন্টারাপ্ট কন্ট্রোলারের সবচেয়ে সাম্প্রতিক প্রজন্ম, যা 2008 সালের নভেম্বরে নেহালেম মাইক্রোআরকিটেকচারের সাথে চালু করা হয়েছিল। x2APIC-এর প্রধান উন্নতিগুলি সমর্থিত CPU-এর সংখ্যা এবং ইন্টারফেসের কার্যকারিতাকে সম্বোধন করে। x2APIC এখন সিপিইউগুলিকে সম্বোধন করার জন্য 32 বিট ব্যবহার করে, যা শারীরিক গন্তব্য মোড ব্যবহার করে 232−1 সিপিইউ পর্যন্ত সম্বোধন করার অনুমতি দেয়। লজিক্যাল ডেস্টিনেশন মোড এখন ভিন্নভাবে কাজ করে এবং ক্লাস্টার প্রবর্তন করে; এই মোড ব্যবহার করে, কেউ 220−16 প্রসেসর পর্যন্ত সম্বোধন করতে পারে। উন্নত ইন্টারফেস আন্তঃপ্রসেসর ইন্টারাপ্ট (আই. পি. আই) পাঠানোর জন্য প্রয়োজনীয় এ. পি. আই. সি রেজিস্টার অ্যাক্সেসের সংখ্যা হ্রাস করে। এই সুবিধার কারণে, কেভিএম পুরানো প্রসেসরগুলির জন্য x2APIC অনুকরণ করতে পারে এবং করে যা এটিকে শারীরিকভাবে সমর্থন করে না, এবং এই সমর্থনটি কিউইএমইউ থেকে কনরোর কাছে ফিরে যাওয়া এবং এমনকি এএমডি অপ্টেরন জি-সিরিজ প্রসেসরগুলির জন্যও প্রকাশিত হয় (যার কোনওটিই স্থানীয়ভাবে x2APIC সমর্থন করে না)। এপিআইসিভি হল হার্ডওয়্যার ভার্চ্যুয়ালাইজেশন সমর্থনের জন্য ইন্টেলের ব্র্যান্ড নাম যার লক্ষ্য অতিথিদের মধ্যে ওভারহেডে বাধা হ্রাস করা। এপিআইসিভি আইভি ব্রিজ-ইপি প্রসেসর সিরিজে চালু করা হয়েছিল, যা জিওন ই 5-26 এক্সএক্স ভি2 (2013 সালের শেষের দিকে চালু) এবং জিওন ই 5-46 এক্সএক্স ভি2 (2014 সালের গোড়ার দিকে চালু) হিসাবে বিক্রি হয়। এ. এম. ডি এ. ভি. আই. সি নামে একটি অনুরূপ প্রযুক্তি ঘোষণা করেছে, এটি 6এক্স. এইচ (ক্যারিজো) প্রসেসর এবং নতুন 15এইচ মডেলের জন্য উপলব্ধ। সমস্যাগুলি এপিআইসি সিস্টেমগুলির বাস্তবায়নে বেশ কয়েকটি পরিচিত বাগ রয়েছে, বিশেষত 8254 কীভাবে সংযুক্ত রয়েছে তা নিয়ে উদ্বেগের সাথে। ত্রুটিপূর্ণ বিআইওএসগুলি ইন্টারাপ্ট রাউটিং সঠিকভাবে সেট আপ করতে পারে না, অথবা ভুল এসিপিআই টেবিল এবং ইন্টেল মাল্টিপ্রসেসর স্পেসিফিকেশন (এমপিএস) টেবিল সরবরাহ করতে পারে না। অপারেটিং সিস্টেমটি সঠিকভাবে সমর্থন না করলে এপিআইসি সিস্টেম ব্যর্থতার কারণও হতে পারে। পুরনো অপারেটিং সিস্টেমে, আই/ও এবং স্থানীয় এপিআইসিগুলিকে প্রায়শই নিষ্ক্রিয় করতে হত। যদিও প্রতিসম মাল্টিপ্রোসেসর এবং মাল্টি-কোর সিস্টেমের প্রাদুর্ভাবের কারণে এটি আর সম্ভব নয়, ফার্মওয়্যার এবং অপারেটিং সিস্টেমে বাগগুলি এখন একটি বিরল ঘটনা। প্রতিযোগিতা এএমডি এবং সাইরিক্স একবার 32 টি প্রসেসর সমর্থনকারী কিছুটা অনুরূপ-উদ্দেশ্যমূলক ওপেনপিআইসি স্থাপত্যের প্রস্তাব দিয়েছিল; 1995 সালের দিকে আইবিএম এবং কমপ্যাকের কাছ থেকে এটির কমপক্ষে ঘোষণামূলক সমর্থন ছিল। তবে ওপেনপিআইসি-র সঙ্গে কোনও x86 মাদারবোর্ড প্রকাশ করা হয়নি। x86 বাজারে ওপেনপিআইসি-র ব্যর্থতার পর, এএমডি তার এএমডি অ্যাথলন এবং পরবর্তী প্রসেসরগুলির জন্য ইন্টেলের এপিআইসি-কে লাইসেন্স দেয়। তবে আইবিএম ওপেনপিআইসি রেজিস্টারের নির্দিষ্টকরণের উপর ভিত্তি করে তাদের মাল্টিপ্রসেসর ইন্টারাপ্ট কন্ট্রোলার (এমপিআইসি) তৈরি করেছে। আইবিএম সহ পাওয়ারপিসি ভিত্তিক নকশায় এমপিআইসি ব্যবহার করা হয়েছিল, উদাহরণস্বরূপ কিছু আরএস/6000 সিস্টেমে, তবে অ্যাপলও তাদের পাওয়ার ম্যাক জি5এস পর্যন্ত দেরিতে ব্যবহার করেছিল। আরও দেখুন ইন্টেল 8259 প্রোগ্রামেবল ইন্টারাপ্ট কন্ট্রোলার (পি. আই. সি) ইন্টার-প্রসেসর ইন্টারাপ্ট (আই. পি. আই) ইন্টারাপ্ট ইন্টারাপ্ট হ্যান্ডলার ইন্টারাপ্ট লেটেন্সি মেসেজ সিগন্যালড ইন্টারাপ্টস (এম. এস. আই) নন-মাস্কেবল ইন্টারাপ্ট (এন. এম. আই) রেফারেন্স আইএ-32 ইন্টেল আর্কিটেকচার সফ্টওয়্যার ডেভেলপারের ম্যানুয়াল, ভলিউম 3এঃ সিস্টেম প্রোগ্রামিং গাইড, পার্ট 1, অধ্যায় 10। বাহ্যিক লিঙ্ক ইন্টেল 64 আর্কিটেকচার x2APIC নির্দিষ্টকরণ (পিডিএফ) ইন্টেল x2APIC আর্কিটেকচার সম্পর্কে আরও তথ্য ইন্টেল 64 এবং আইএ-32 আর্কিটেকচার সফ্টওয়্যার ডেভেলপারের ম্যানুয়াল মাদারবোর্ড ইন্টারাপ্টস এপিক আর্কিটেকচার আইবিএম পিসি কম্প্যাটিবলস এক্স86 আর্কিটেকচারে পাওয়া যাবে।