آرتی‌ایکس ۲۰۰۰

**آرتی‌ایکس ۲۰۰۰** (*RTX 2000*), که در آغاز توسط شرکت **هریس نیمه‌رسانا** (*Harris Semiconductor*) طراحی شد و اکنون توسط **اینترسیل** (*Intersil*) تولید می‌شود، یک ریزمعماری ریزپردازنده‌ای ۱۶-بیتی با معماری ماشین پشته‌ای است که برای محاسبات بی‌درنگ طراحی شده و عمدتاً با زبان برنامه‌نویسی **Forth** برنامه‌نویسی می‌شود. نسخه‌های مقاوم‌شده در برابر پرتو، با عنوان سری **RTX 2010**، در فضاپیماهای متعددی مورد استفاده قرار گرفته‌اند.

طراحی اولیه توسط **چاک مور (رایانه)** (*Chuck Moore*), مخترع زبان Forth انجام شد. او در سال ۱۹۸۳ شرکت **Novix** را برای طراحی ریزپردازنده‌ای که بتواند مستقیماً این زبان را اجرا کند، بنیان نهاد. نخستین مدل به نام **NC4000** در ژوئن ۱۹۸۵ عرضه شد و اندکی بعد به **NC4016** تغییر نام یافت. این تراشه با فرکانس ۷٫۵ مگاهرتز اجرا می‌شد و تا ۱۰ میلیون دستور در ثانیه (MIPS) توان پردازش داشت. نسخهٔ به‌روزرسانی‌شده‌ای با نام **NC5016** با فرکانس ۱۰ مگاهرتز و توان پردازش ۱۲ MIPS عرضه شد، اما مدل برنامه‌ریزی‌شدهٔ **NC6016** ظاهراً هرگز وارد مرحله تولید نشد. شرکت Novix در همین دوره تعطیل شد.

شرکت **هریس** به‌زودی پس از معرفی طراحی **4016**، آن را تحت مجوز خود درآورد، تغییراتی در آن ایجاد کرد و سری جدیدی با نام **RTX** معرفی نمود که مخفف *Real Time eXpress* است. آن‌ها قابلیت‌هایی مانند **حافظهٔ نهان درون‌تراشه‌ای**، **واحد ضرب/تقسیم سخت‌افزاری** و **حافظهٔ برنامه** را به طراحی افزودند و در سال ۱۹۸۸ مدل **RTX2000** را عرضه کردند. همزمان مدلی به نام **RTX2001** نیز معرفی شد که فاقد واحد ضرب بود. نسخهٔ ارتقایافته‌ای که شامل سیستم‌های ورودی/خروجی، تایمرها و یک واحد ممیز شناور کامل بود با نام **RTX2010** شناخته می‌شود. تمام این مدل‌ها عمدتاً روی ویفرهای **سیلیکون روی یاقوت کبود** تولید شدند تا برای کاربردهای فضایی مناسب باشند.

طراحی مشابهی با معماری ۳۲-بیتی با نام **RTX 4000** در سال ۱۹۸۹ معرفی شد، اما هرگز وارد مرحله تولید نشد.

## ویژگی‌ها
یک ماشین پشته‌ای برخلاف طراحی‌های سنتی فاقد ثبات‌های پردازندهٔ عمومی تعریف‌شده در معماری دستورالعمل است. در عوض، از حالت‌های آدرس‌دهی مبتنی بر آفست‌ها در پشته استفاده می‌کند که معمولاً در حافظهٔ اصلی ذخیره شده یا به طور جزئی در ثبات‌هایی کش می‌شود که برای برنامه‌نویس قابل مشاهده نیستند.

برای مثال، یک پردازنده RISC مدرن معمولاً دستورالعملی مانند «ADD C,A,B» دارد که به معنی «جمع مقدار موجود در ثبات A با مقدار موجود در ثبات B و قرار دادن نتیجه در ثبات C» است. در ماشین پشته‌ای، این دستورالعمل تنها به صورت «ADD» وجود دارد که به طور ضمنی دو مقدار بالای پشته را حذف می‌کند، آن‌ها را جمع می‌زند و نتیجه را دوباره روی پشته قرار می‌دهد. یکی از مزایای این رویکرد این است که دستورالعمل‌ها معمولاً کوچک‌تر هستند؛ در ماشین‌هایی با ۳۲ ثبات قابل مشاهده برای کاربر مانند بسیاری از سیستم‌های RISC، هر یک از سه ارجاع به ثبات پنج بیت نیاز دارد که باعث می‌شود دستورالعمل حداقل سه بایت و معمولاً چهار بایت باشد. در ماشین پشته‌ای، کد عملیات تک بایتی می‌تواند بسیاری از دستورالعمل‌ها را پوشش دهد.

دسترسی به پارامترها از طریق پشته در حافظهٔ اصلی کندتر از ثبات‌های اختصاصی است و به همین دلیل ماشین‌های پشته‌ای اغلب عملکرد عمومی پایین‌تری دارند. با این حال، این در کاربردهای خاص جبران می‌شود. در ماشین ثباتی، مقادیر موجود در ثبات‌ها باید برای کارهایی مانند فراخوانی زیربرنامه و پردازش وقفه‌ها ذخیره شوند. اگر ماشین دارای ۳۲ ثبات ۳۲-بیتی باشد، این بدان معنی است که ۱ کیلوبایت باید ذخیره و بارگذاری شود. در ماشین پشته‌ای تعداد ثبات‌ها عملاً نامحدود است و مجموعه فعال را می‌توان با تغییر تنها یک مقدار، اشاره‌گر پشته، انتخاب کرد. این باعث می‌شود این سیستم‌ها در جابجایی سریع متن زمینه بسیار کارآمد باشند و می‌توانند در سیستم‌هایی با تعداد زیاد وقفه، مانند محاسبات بی‌درنگ، بهبود عملکرد قابل توجهی ارائه دهند.

ریزپردازندهٔ RTX 2000 یک ماشین دوپشته‌ای است که هر پشته ۲۵۶ کلمه عمق دارد و از اجرای مستقیم زبان Forth پشتیبانی می‌کند. فراخوانی زیربرنامه تنها یک سیکل پردازنده زمان می‌برد و بازگشت‌ها بدون زمان صرف می‌شوند. همچنین دارای تاخیر وقفه بسیار پایین و یکنواختی معادل چهار سیکل پردازنده است که آن را برای کاربردهای بی‌درنگ بسیار مناسب می‌کند. این پردازنده چندین گذرگاه دستور دارد که اجازه می‌دهد چندین دستور همزمان اجرا شوند، که به حذف توقف‌ها هنگام انتظار برای داده‌ها از حافظه اصلی کمک می‌کند. نهایتاً، چون دستورالعمل‌ها مستقیماً به مفاهیم سطح بالا نگاشت می‌شوند، کد دستورالعمل بسیار فشرده است و برنامه‌ها به مراتب کوچکتر از زبان‌های اسمبلی معمولی هستند.

## تاریخچه
در سال ۱۹۸۳، چاک مور پردازنده‌ای برای زبان برنامه‌نویسی خود، Forth، به صورت یک مدار گیت (gate array) پیاده‌سازی کرد. از آنجا که Forth را می‌توان به عنوان یک ماشین مجازی دوپشته‌ای در نظر گرفت، او پردازندهٔ **Novix N4000** (که بعدها به **NC4016** تغییر نام یافت) را به صورت یک ماشین دوپشته‌ای ساخت. این سیستم تنها از ۴۰۰۰ گیت ساخته شده بود که شامل ۱۶۰۰۰ ترانزیستور CMOS می‌شد، در حالی که پردازندهٔ **موتورولا ۶۸۰۰۰** سال ۱۹۷۹ دارای ۶۸۰۰۰ گیت بود. این تراشه قادر بود ۴۰ عملیات اولیه Forth و ۱۲۳ ترکیب آن‌ها را مستقیماً اجرا کند که نیاز به ماشین مجازی کامل را از بین می‌برد و عملکرد رایج‌ترین دستورالعمل‌ها را افزایش می‌داد.

در سال ۱۹۸۸، شرکت Harris Semiconductor حقوق خط تولید Novix را خریداری کرد و برنامه‌ای برای بهبود آن آغاز نمود. آن‌ها پشته‌های درون تراشه‌ای را اضافه کردند تا تعداد دسترسی‌ها به حافظهٔ اصلی کاهش یابد، تعدادی تایمر و شمارنده درون تراشه تعبیه کردند، کنترلر وقفه اختصاصی افزودند و یک ضرب‌کننده سخت‌افزاری با یک چرخه اجرا در تراشه گنجاندند. نسخهٔ جدید به نام **RTX 2000** بازنام‌گذاری شد و برای کاربردهای فضایی بازاریابی گردید.

## فضاپیماهای نمونه‌ای که از RTX2010 استفاده کرده‌اند

* کاوشگر ترکیب پیشرفته (Advanced Composition Explorer - ACE)
* مأموریت NEAR/Shoemaker
* ماهواره TIMED
* فرودگر روزتا – فیله (Rosetta's lander - Philae)

## منابع


## پیوندهای خارجی

* HS-RTX2010RH صفحه محصول اینترسیل (بایگانی شده)
* HS-RTX2010RH Data Sheet (PDF) دفترچه مشخصات اینترسیل، مارس ۲۰۰۰
* Space-Related Applications of Forth نوشته جیمز رش، مرکز پرواز فضایی گودارد ناسا (بایگانی شده)
* J. Tom Hand, "The Harris RTX2000 Microcontroller", Journal of Forth Application and Research, 1990 (PDF)
* "4.5 Architecture of the Harris RTX 2000" فصل ۴.۵ کتاب «Stack Computers: the new wave» اثر فیلیپ کوپمن، ۱۹۸۹
* RTX2000 Simulator: نسخه لینوکس از MSDOS اصلی (2018)
رده:ماشین‌های پشته‌ای
رده:رایانه‌های اویونیک