موضوع مقاله: ZPU (پردازنده) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # ZPU (پردازنده) | مقدمه: ZPU یک ریزپردازنده از نوع ماشین پشته‌ای است که توسط شرکت نروژی Zylin AS طراحی شده است تا کد نظارتی را در سیستم‌های الکترونیکی که شامل یک مدار مجتمع دیجیتال برنامه‌پذیر (FPGA) هستند، اجرا کند. | ## بخش 1: ZPU (پردازنده) | ZPU یک ماشین پشته‌ای نسبتاً جدید است که جایگاه اقتصادی کوچکی دارد و تعداد کاربران و پیاده‌سازی‌های آن در حال رشد است. این پردازنده به‌گونه‌ای طراحی شده که به مقادیر بسیار کمی از منطق الکترونیکی نیاز دارد، که این امر باعث می‌شود منطق الکترونیکی بیشتری برای سایر مقاصد در FPGA در دسترس باشد. این ویژگی باعث می‌شود استفاده از آن نسبت به پردازنده‌هایی که فاقد کامپایلر هستند، بسیار ساده‌تر باشد. با فدا کردن سرعت در ازای اندازه کوچک‌تر، نتایج میانی محاسبات در حافظه و در یک پشته قرار می‌گیرند، نه در ثبات‌ها. ZPU به‌طور خاص برای انجام وظایف مختلف سیستم طراحی شده است که بهترین شیوه انجام آن‌ها از طریق نرم‌افزار است، مانند رابط کاربری. یکی دیگر از مشکلات این است که بیشتر پردازنده‌ها برای FPGA‌ها بسته‌منبع هستند و فقط از یک سازنده خاص قابل دسترسی هستند. گاهی اوقات یک پروژه نیاز دارد که طراحی آن به‌طور گسترده توزیع شود، برای بازرسی‌های امنیتی، استفاده‌های آموزشی یا دلایل دیگر. برخی از پروژه‌ها نیاز دارند که کد آن‌ها کوچک باشد، اما باید روی پردازنده‌ای اجرا شوند که ذاتاً کد بزرگ‌تری دارد. به‌طور متناوب، یک پروژه ممکن است از تنوع وسیع کدها، کامپایلرها و ابزارهای دیباگ موجود برای مجموعه کامپایلر GNU بهره‌مند شود. در این موارد، می‌توان یک شبیه‌ساز نوشت تا مجموعه دستورالعمل‌های ZPU را بر روی پردازنده هدف پیاده‌سازی کند و از کامپایلرهای ZPU برای تولید کد استفاده شود. | ## بخش 2: ZPU (پردازنده) | سیستم حاصل کند است، اما کد را در حافظه‌ای کمتر از بسیاری از پردازنده‌ها فشرده می‌کند و به پروژه این امکان را می‌دهد که از انواع مختلف کامپایلرها و کدها استفاده کند. این پردازنده مجموعه دستورالعمل حداقلی دارد، اما می‌تواند برای مجموعه کامپایلر GNU کدگذاری شود. همچنین تعداد ثبات‌هایی که باید در FPGA وجود داشته باشد را به حداقل می‌رساند و تعداد فلیپ‌فلاپ‌ها را کاهش می‌دهد. در نهایت، حدود ۲/۳ از دستورالعمل‌های آن می‌توانند توسط ثابت افزار پیاده‌سازی شده با استفاده از ۱/۳ باقی‌مانده دستورالعمل‌های "ضروری" شبیه‌سازی شوند. اگرچه نتیجه بسیار کند است، پردازنده حاصل می‌تواند تنها به ۴۴۶ جدول جستجو نیاز داشته باشد (که معیاری از پیچیدگی FPGA است و تقریباً معادل ۱۷۰۰ گیت منطقی الکترونیکی است). ZPU دارای یک بردار بازنشانی است که از ۳۲ بایت فضای کد تشکیل شده و از موقعیت صفر شروع می‌شود. همچنین یک وقفه حساس به لبه دارد که برداری از ۳۲ بایت فضای کد را شامل می‌شود و از آدرس ۳۲ آغاز می‌شود. بردارهای ۲ تا ۶۳ هر کدام ۳۲ بایت فضا دارند، اما برای شبیه‌سازی دستورالعمل‌های ۳۳ تا ۶۳ رزرو شده‌اند. همچنین نسخه‌ای از ZPU وجود دارد که دارای مسیر داده ۱۶ بیتی است تا منطق بیشتری صرفه‌جویی شود. علاقه‌مندان و مهندسان ثابت‌افزار نسخه‌های ECos، فری‌آرتی‌اواس و یوسی‌لینوکسرا پورت کرده‌اند. | ## بخش 3: ZPU (پردازنده) | حداقل یک گروه از علاقه‌مندان، محیط توسعه محبوب آردوینو را کپی کرده و آن را به ZPU تطبیق داده‌اند. ZPUino بهبودهای عملی برای سرعت دارد، می‌تواند دستورالعمل‌های شبیه‌سازی‌شده را با سخت‌افزار جایگزین کند و در یک چارچوب سیستم روی تراشه (SoC) جاسازی شده است. ZPUFlex برای استفاده از بلوک‌های حافظه خارجی طراحی شده و می‌تواند دستورالعمل‌های شبیه‌سازی‌شده را با سخت‌افزار جایگزین کند. پروژه‌های علمی شامل مطالعات و بهبودهای کارایی انرژی و مطالعات قابلیت اطمینان می‌باشند. برای بهبود سرعت، اکثر پیاده‌سازها دستورالعمل‌های شبیه‌سازی‌شده را پیاده‌سازی کرده‌اند و یک کش پشته اضافه کرده‌اند. علاوه بر این، یکی از پیاده‌سازها گفته است که یک معماری دو پشته‌ای می‌تواند اجازه دهد که پایپ‌لاینینگ انجام شود (یعنی سرعت به یک دستورالعمل در هر چرخه ساعت بهبود یابد)، اما این ممکن است نیاز به تغییراتی در کامپایلر داشته باشد. یکی از پیاده‌سازها توان مصرفی را با استفاده از کش پشته و درج خودکار گیتینگ ساعت ۴۶٪ کاهش داد. بخش‌های ZPU که بیشترین کمک را از نظر مقاوم‌سازی در برابر خطا دریافت می‌کنند، شامل خط باس آدرس، نشانگر پشته و شمارنده برنامه هستند. | ## جمع‌بندی | NOP 00001011 بدون عملیات (معمولاً برای حلقه‌های تأخیر یا جداول کد استفاده می‌شود).