پیش‌نویس:وقفه برداری

این مقاله در حال ترجمه از ویکی انگلیسی است لطفا حذف نشود.

وقفه برداری (به انگلیسی: Vectored interrupt) در علوم رایانه و معماری کامپیوتر، یک تکنیک پردازشی است که در آن، دستگاه درخواست‌کنندهٔ وقفه، پردازنده را به طور مستقیم به سمت روتین خدمت‌رسانی به وقفه (ISR) مربوطه هدایت می‌کند. این روش دقیقاً در تضاد با «سیتم وقفه مبتنی بر نظرسنجی» (Polled interrupt) قرار دارد؛ در روش نظرسنجی، یک روتین خدمت‌رسانی واحد مجبور است با بررسی تک‌تک منابع احتمالی وقفه، منبع اصلی را پیدا کند که فرآیندی کند و نسبتاً طاقت‌فرسا است. پیاده‌سازی وقفه‌های برداری به این صورت انجام می‌شود که به هر دستگاهِ تولیدکنندهٔ وقفه، یک کد منحصربه‌فرد (معمولاً با طول ۴ تا ۸ بیت) اختصاص می‌یابد.Hamacher, Carl (2002). "INPUT/OUTPUT Organization". Computer Organization (5th ed.). McGraw Hill. p. 214. ISBN 0072320869. هنگامی که درخواست وقفهٔ یک دستگاه از سوی پردازنده تأیید (Acknowledge) می‌شود، آن دستگاه کد منحصربه‌فرد خود را از طریق گذرگاه داده (Data Bus) به پردازنده ارسال می‌کند و به پردازنده اعلام می‌کند که کدام روتین خدمت‌رسانی به وقفه باید اجرا شود.

 پیاده‌سازی 
وقفه‌های برداری به طور گسترده در ریزپردازنده‌ها پیاده‌سازی می‌شوند. حتی ریزپردازنده ۸ بیتی اینتل ۸۰۰۸ (ساخت سال ۱۹۷۱) که اولین ریزپردازنده تجاری جهان بود، حداقل از ۷ بردار وقفه پشتیبانی می‌کرد؛ اگرچه به طرز عجیبی توانایی ذخیره وضعیت خود (State) را در طول وقوع وقفه نداشت. در ادامه چند نمونه از نحوه پیاده‌سازی وقفه‌های برداری در ریزپردازنده‌های مختلف آورده شده است:

 اینتل ۸۰۸۰ 
ریزپردازنده اینتل ۸۰۸۰ (ساخت سال ۱۹۷۴) می‌تواند با حداقل سخت‌افزار از ۷ بردار وقفه، و با استفاده از تراشه کنترل‌کننده وقفه اینتل ۸۲۵۹ تا ۶۴ بردار وقفه را پشتیبانی کند.

در روشی که به حداقل سخت‌افزار نیاز دارد، سخت‌افزار خارجی باید یک دستورالعمل یک‌بایتی `RST` (مخفف Restart) وابسته به دستگاه وقفه را روی گذرگاه (Bus) قرار دهد. دستورالعمل ری‌استارت در واقع یک فراخوانی (Call) به یکی از هشت مکان حافظه شامل: ۰، ۸، ۱۶، ۲۴، ۳۲، ۴۰، ۴۸ و ۵۶ است که امکان دسترسی مستقیم به ۷ روتین خدمت‌رسانی به وقفه را فراهم می‌کند. (مکان ۰ معمولاً قابل استفاده نیست زیرا با فرآیند بازنشانی یا همان Reset سیستم مشترک است)."8080A/8080A-1/8080A-2 8-Bit N Channel Microprocessor" (PDF). Intel. Archived (PDF) from the original on November 15, 2021.

هنگام استفاده از تراشه اینتل ۸۲۵۹، می‌توان به جای دستور `RST` از دستور `CALL` استفاده کرد که اجازه می‌دهد وقفه به هر نقطه‌ای از حافظه ارسال شود. امکان اتصال آبشاری (Cascaded) تا ۹ تراشه ۸۲۵۹ وجود دارد که پشتیبانی از حداکثر ۶۴ بردار وقفه را ممکن می‌سازد."8259A Programmable Interrupt Controller" (PDF). Intel.

 زیلاگ زد۸۰ 
تراشه زیلاگ زد۸۰ (Zilog Z80 ساخت سال ۱۹۷۶) علاوه بر پشتیبانی از روش‌های وقفه پردازنده ۸۰۸۰، چند روش اختصاصی نیز به آن‌ها اضافه کرده است. پردازنده Z80 در «حالت ۲» (Mode 2) از ۱۲۸ بردار وقفه پشتیبانی می‌کند. در این حالت، ثبات `I` (ثبات وقفه در Z80) بایت پرارزش (High Byte) آدرس پایه را برای یک جدول ۱۲۸ عضوی (که حاوی آدرس روتین‌های خدمت‌رسانی است) تأمین می‌کند. دستگاه درخواست‌کنندهٔ وقفه نیز بایت کم‌ارزش (Low Byte) مربوط به ردیف اختصاصی خود در آن جدول را ارائه می‌دهد. سپس Z80 مقدار شمارنده برنامه (`PC`) را در پشته ذخیره (Push) کرده و با ترکیب این دو بایت، آدرس نهایی را تشکیل می‌دهد تا آدرس روتین خدمت‌رسانی به وقفه را در `PC` بارگذاری کند و یک جهش (Jump) به آن مکان صورت گیرد."Timing". Z80 Family CPU User Manual (PDF). Zilog. 2016. p. 7. UM008011-0816.

 وسترن دیجیتال WD16 
پردازنده WD16 (ساخت سال ۱۹۷۶) از ۱۶ بردار وقفه پشتیبانی می‌کند. هنگام دریافت یک وقفه برداری، وضعیت پردازنده (Status) و شمارنده برنامه (`PC`) به درون پشته فرستاده می‌شوند. در طول فرآیند تأیید وقفه، WD16 یک شماره وقفه ۴ بیتی را که توسط دستگاه درخواست‌کننده ارائه شده، می‌پذیرد. آدرس جدول بردار وقفه از مکان حافظه `0x0028` واکشی شده و شماره وقفه به آن اضافه می‌شود که به یکی از ۱۶ کلمه (Word) موجود در جدول اشاره می‌کند. سپس یک مقدار جابه‌جایی کلمه (Word Offset) از جدول واکشی شده و به آدرس جدول خود اضافه می‌شود. نتیجه نهایی در `PC` بارگذاری شده و باعث جهش به روتین خدمت‌رسانی به وقفه می‌شود.Wilcox, Dick (October 4, 1976). WD16 Microcomputer Programmer's reference Manual (PDF). Western Digital.

 اینتل ۸۰۸۶ 
پردازنده اینتل ۸۰۸۶ (ساخت سال ۱۹۷۸) از ۲۵۶ بردار وقفه پشتیبانی می‌کند. وقفه‌ها در این پردازنده از نوع فراخوانی‌های طولانی (Long Calls) هستند که وضعیت پردازنده را نیز ذخیره می‌کنند. تمام وقفه‌ها یک شماره وقفه ۸ بیتی وابسته به خود دارند. از این شماره برای جستجوی یک ساختار «سگمنت:آفست» (Segment:Offset) در یک جدول بردار وقفه با ۲۵۶ عضو استفاده می‌شود که در آدرس‌های `0` تا `0x3FF` حافظه ذخیره شده است. هنگامی که هر نوع وقفه‌ای رخ می‌دهد، ابتدا وضعیت پردازنده، ثبات `CS` و ثبات `IP` در پشته ذخیره می‌شوند؛ سپس شماره وقفه در عدد ۴ ضرب می‌شود تا نمایه (Index) آدرس اجرای جدید به دست آید و این آدرس از جدول بردار بارگذاری می‌شود. روتین‌های وقفه معمولاً با دستورالعمل `IRET` (مخفف Interrupt Return) به پایان می‌رسند."8086 16-BIT HMOS Processor datasheet" (PDF). Intel. Archived from the original (PDF) on 26 November 2021.

 منابع 

:رده:معماری رایانه
:رده:وقفه‌ها