پوریا احمدی
پوریا احمدی
خواندن ۷ دقیقه·۳ سال پیش

معماری ARM

میکروکنترلر ARM مخفف Advance RISC Machine است. یکی از هسته های پردازشی گسترده در جهان است. اولین پردازنده ARM در سال 1978 توسط دانشگاه کمبریج توسعه یافت و اولین پردازنده ARM RISC توسط گروه کامپیوترهای Acorn در سال 1985 تولید شد. این پردازنده ها به طور خاص در دستگاه های قابل حمل مانند دوربین های دیجیتال، تلفن های همراه، شبکه های خانگی استفاده می شوند. ماژول ها و فناوری های ارتباطی بی سیم و سایر سیستم های تعبیه شده به دلیل مزایایی مانند مصرف انرژی کم، عملکرد مناسب ان.

ARM Architecture

پردازنده معماری ARM یک ماشین محاسباتی مجموعه دستورالعمل کاهش یافته پیشرفته [RISC] است و یک میکروکنترلر کامپیوتری با مجموعه دستورات کاهش یافته 32 بیتی (RISC) است. این ARM یک خانواده میکروکنترلر است که توسط سازندگانی مانند ST Microelectronics، Motorola و غیره ساخته شده است. معماری ARM دارای نسخه های کاملاً متفاوتی مانند ARMv1، ARMv2 و غیره است و هر کدام مزایا و معایب خاص خود را دارند.

مجوعه ARM یک میکروکنترلر پیچیده در خانواده ARM است که دارای طراحی ARMv7 است. 3 زیر خانواده در مجموعه ARM وجود دارد

سری ARM Cortex Axe

سری ARM-Cortex Rx

سری ARM-Cortex Mx



اجزای معماری ارم عبارنت از :

Arithmetic Logic Unit

Booth multiplier

Barrel shifter

Control unit

Register file

در ادامه به شرح موارد بالا میپردازیم



پردازنده ARM به طور مشترک دارای اجزای دیگری مانند ثبت وضعیت برنامه است که حاوی پرچم های پردازنده (Z، S، V و C) است.بیت‌های حالت به طور پیوسته در رجیستر ایستاده برنامه وجود دارند، علاوه بر بیت‌های غیرفعال کردن وقفه و قطع سریع. و همچنین برخی از ثبات های ویژه: برخی از ثبات ها مانند دستورالعمل ها، ثبات های خواندن و نوشتن اطلاعات حافظه و ثبات آدرس حافظه استفاده می شوند.

مالتی پلکسرها: چندین مالتی پلکسر به عملکرد مدیریت گذرگاه های پردازنده عادت دارند. به دلیل زمان محدود پردازش، ما تمایل داریم این مؤلفه ها را در یک مدل بسیار رفتاری پیاده سازی کنیم. هر جزء با یک موجود توصیف می شود. هر موجودیت معماری خاص خود را دارد که بسته به کاربرد آن می توان آن را برای نیازهای خاصی بهینه کرد. این باعث می شود طراحی آسان تر ساخته و نگهداری شود.

بلاک های طراحی معماری ارم
بلاک های طراحی معماری ارم

Arithmetic Logic Unit(واحد منطق حسابی)

واحد منطق حسابی (ALU)دارای دو ورودی 32 بیتی است. اولیه از فایل ثبات می آید، در حالی که دیگری از شیفتر می آید. Status پرچم هایی را که توسط خروجی های ALU اصلاح شده اند ثبت می کند. خروجی V بیت به پرچم V می رود و همچنین تعداد به پرچم C می رود. در حالی که مهم ترین بیت واقعاً پرچم S را نشان می دهد، عملیات خروجی ALU توسط NORed برای دریافت پرچم Z انجام می شود. ALU دارای یک گذرگاه تابع 4 بیتی است که امکان پیاده سازی حداکثر 16 کد عملیاتی را فراهم می کند.

Booth Multiplier Factor

ضریب ضرب دارای 3 ورودی 32 بیتی است و ورودی ها از فایل ثبت برمی گردند. خروجی ضریب به ندرت 32 بیت مهم قابل توجه را شامل میشود نمایش موجودیت ضریب در بلوک دیاگرام بالا نشان داده شده است. هر زمان که ورودی ابتدایی 04 فعال شود، ضرب شروع می شود. پره خروجی هنگام اتمام بالا می رود.

Booth Algorithm(الگوریتم غرفه)

الگوریتم غرفه یک قانون الگوریتمی ضرب قابل توجه برای اعداد متمم 2 است. این اعداد مثبت و منفی را به طور یکسان رفتار می کند. علاوه بر این، اجرای 0 یا 1 در ضریب ضرب بدون انجام هیچ گونه جمع یا تفریق نادیده گرفته می‌شود و در نتیجه ضرب سریع‌تر ممکن را ایجاد می‌کند. شکل، نتایج شبیه سازی را برای میز تست ضریب نشان می دهد. واضح است که ضرب فقط در چرخه ساعت 16 به پایان می رسد.

Barrel Shifter

در Barrel Shifter دارای یک ورودی 32 بیتی برای جابجایی است. این ورودی از فایل ثبت برمی گردد یا ممکن است داده های فوری باشد. شیفتر دارای ورودی های کنترلی مختلفی است که از رجیستر دستورالعمل باز می گردند. فیلد Shift در دستورالعمل عملکرد Barrel Shifter را کنترل می کند. این فیلد نوع شیفتی را که باید انجام شود (منطقی به چپ یا راست، حسابی به راست یا چرخش به راست) نشان می دهد. مقداری که رجیستر باید توسط آن جابجا شود در یک فیلد فوری در دستورالعمل موجود است یا ممکن است 6 بیت پایینی یک ثبات در فایل ثبات باشد.

گذرگاه ورودی shift_val 6 بیتی است که امکان جابجایی تا 32 بیت را فراهم می کند. نوع شیفت نشان می دهد که مرتب سازی جابجایی مورد نیاز 00، 01، 10، 11 به ترتیب مربوط به تغییر به چپ، شیفت راست، یک شیفت حسابی به راست و چرخش به راست است. شیفتر بشکه مخصوصاً با مالتی پلکسرها ایجاد می شود.

Control Unit(واحد کنترل)

برای هر ریزپردازنده، واحد کنترل قلب کل فرآیند است و مسئولیت عملیات سیستم را بر عهده دارد، بنابراین طراحی واحد کنترل مهمترین بخش در کل طراحی است. واحد کنترل گاهی اوقات یک طرح مدار ترکیبی خالص است. زمان بندی پردازنده علاوه بر این در واحد کنترل گنجانده شده است. سیگنال های واحد کنترل به هر جزء در پردازنده متصل می شوند تا بر عملکرد آن نظارت کنند.

نمودار عملکرد ARM7

نکته نهایی که باید توضیح داده شود نحوه استفاده از ARM است. سیگنال های مختلفی که با پردازنده ارتباط دارند سیگنال های ورودی، خروجی یا نظارتی هستند که برای کنترل عملکرد ARM استفاده می شوند.

نمودار عملکرد
نمودار عملکرد


حالت های ثبت میکروکنترلر ARM

یک میکروکنترلر ARM یک ذخیره‌سازی بار است که مجموعه دستورالعمل‌های معماری رایانه را کاهش می‌دهد به این معنی که هسته نمی‌تواند مستقیماً با حافظه کار کند. عملیات داده باید توسط رجیسترها انجام شود و اطلاعات توسط یک آدرس در حافظه ذخیره می شود. قشر ARM-M3 از 37 مجموعه ثبت تشکیل شده است که در آن 31 ثبت با هدف عمومی و 6 مورد ثبت وضعیت هستند. ARM از هفت حالت پردازش برای اجرای وظایف کاربر استفاده می کند.

USER Mode

FIQ Mode

IRQ Mode

SVC Mode

UNDEFINED Mode

ABORT Mode

Monitor Mode

USER Mode:

حالت کاربر یک حالت عادی است که کمترین تعداد ثبت را دارد. SPSR ندارد و دسترسی محدودی به CPSR دارد

FIQ Mode

در FIQ و IRQ دو حالت ایجاد وقفه در CPU هستند. FIQ وقفه پردازش و IRQ وقفه استاندارد است. حالت FIQ دارای پنج رجیستر اضافی برای ارائه انعطاف پذیری بیشتر و عملکرد بالا در هنگام مدیریت وقفه های بحرانی است.

SVC Mode

حالت Supervisor حالت وقفه نرم افزاری پردازنده برای راه اندازی یا تنظیم مجدد است

UNDEFINED Mode

حالت Undefined هنگامی که دستورالعمل های غیرقانونی اجرا می شوند و ان ها را شناسایی می کند. هسته ARM از گذرگاه داده 32 بیتی و جریان داده سریعتر تشکیل شده است.

THUMB Mode

در حالت THUMB داده های 32 بیتی به 16 بیت تقسیم می شوند و سرعت پردازش را افزایش می دهند.



ثبات های رزرو شده برای توابع خاص استفاده می شوند. SPSR و CPSR حاوی بیت های کنترل وضعیت هستند که برای ذخیره داده های موقت استفاده می شوند. رجیستر SPSR و CPSR دارای ویژگی هایی هستند که حالت های عملیاتی تعریف شده، پرچم های فعال یا غیرفعال وقفه و پرچم وضعیت ALU را دارند. هسته ARM در دو حالت 32 بیتی یا حالت THUMBS کار می کند.

برنامه نویسی میکروکنترلر ARM-Cortex

در حال حاضر، میکروکنترلرهای 32 بیتی را بر اساس معماری ARM cortex-m3 در بازار موجودند. بسیاری از توسعه دهندگان سیستم های جاسازی شده شروع به استفاده از این میکروکنترلرهای 32 بیتی برای پروژه های خود کرده اند. میکروکنترلرهای ARM از زبان های برنامه نویسی سطح پایین و سطح بالا پشتیبانی می کنند. برخی از معماری‌های میکروکنترلر سنتی با محدودیت‌های زیادی ساخته شده‌اند، بنابراین استفاده از زبان برنامه‌نویسی سطح بالا دشوار است.

به عنوان مثال، اندازه حافظه محدود است و ممکن است عملکرد کافی نباشد. میکروکنترلرهای ARM با فرکانس 100 مگاهرتز و عملکرد بالاتر کار می کنند، بنابراین از زبان های سطح بالاتر پشتیبانی می کنند. میکروکنترلر ARM با IDES های مختلف مانند keiluvision3، keiluvision4، coocox و غیره برنامه ریزی شده است. یک میکروکنترلر 8 بیتی از دستورالعمل های 8 بیتی و ARM cortex-M از دستورالعمل های 32 بیتی استفاده می کند.

کاربردهای اضافی پردازنده کورتکس

این یک کنترلر محاسباتی مجموعه دستورالعمل کاهش یافته است

واحد پردازش مرکزی 32 بیتی با کارایی بالا

خط لوله 3 مرحله ای و فشرده

دارای تکنولوژی THUMB-2 است

ادغام بهینه با دستورالعمل های 16/32 بیتی

از ابزارها و RTOS و اشکال زدایی و ردیابی Sight هسته آن پشتیبانی می کند

حالت های کم مصرف

از حالت های خواب پشتیبانی می کند

بسته نرم افزاری را کنترل کنید

دامنه های قدرت چندگانه

کنترل کننده وقفه برداری تودرتو (NVIC)

تأخیر کم، نویز کم پاسخ را قطع می کند

بدون نیاز به برنامه نویسی اسمبلی



میکروکنترلر قشر ARM یک میکروکنترلر 32 بیتی است بنابراین تمام دستورالعمل ها 32 بیتی هستند که در یک چرخه اجرا می شوند. این شامل یک مجموعه دستورالعمل برای انجام عملیات حسابی، منطقی و بولی است. ARM یک معماری load-store است، سپس دستورالعمل ها به صورت مشروط اجرا می شوند.

برنامه نویسی زبان اسمبلی توسط حافظه های مانند ADD، SUB، MUL و غیره توسعه یافته است، اما برای برنامه نویسی ARM، دستورالعمل های اضافی مانند ADCNES و SWINE و غیره اضافه شده است.

پوریا احمدی - دانشگاه صدرا

شاید از این پست‌ها خوشتان بیاید