آرم هولدینگز (ARM Holdings plc) یک شرکت نیمههادی سطح اول است که محصولات آن پردازندهها، سیستمهای برونتراشهای (System-on-Chips)، نرمافزارهای کامپیوتری و غیره است. معماری آرم یا ARM که مخفف Advanced RISC Machine به معنی ماشینهای RISC پیشرفته است، در سال 1990 ساخته شد RISC یا ریسک، مخفف Reduced Instruction Set Computer به معنی رایانه کمدستور و نوع معماری ساخت کامپیوتر یا ریزپردازنده است که در آن به جای استفاده از دستورالعملهای خاص سایر معماریها، از یک مجموعه دستورالعمل حداقلی و بسیار بهینهسازی شده استفاده میشود. ریسک (RISC) اصلیترین استراتژی طراحی CPU است که در پردازندههای آن اجرا میشود.
آرم ارائه دهنده پیشرو ریزپردازندههای مبتنی بر RISC و سایر IPهای نیمههادی با بیش از 85 میلیارد تراشه مبتنی بر ARM است. ARM مانند سایر شرکتهای تولید ریزپردازنده همچون اینتل (Intel)، هیتاچی (Hitachi)، فریاسکیل (Freescale) و غیره، پردازنده یا سایر ادوات نیمههادی را تولید نمیکند بلکه، به عنوان مالکیت فکری (IP) مجوز ساخت هستههای نیمههادی را به سایر شرکتهای نیمههادی مانند اتمل (ATMEL)، فیلیپس (اکنون NXP)، سامسونگ (Samsung) و غیره میدهد. مهمترین مالکیتهای فکری ARM شامل ریزپردازندههای RISC توانپایین، کمهزینه و با کارایی بالا، سیستم برونتراشهای و سایر لوازم جانبی است.
جدا از پردازندهها و مالکیت فکری هستهها، ARM ابزارهای توسعه نرمافزاری کاملی مانند Keil و DS-5 را برای توسعه سیستمهای کامل مبتنی بر میکروکنترلر ARM و سیستم برونتراشهای ارائه میدهد.
امروزه پردازندههای ARM تقریباً در هر زمینهای مانند دستگاههای الکترونیکی دستی، دستگاههای برقی، رباتیک، اتوماسیون و غیره یافت میشوند. پردازندههای تولید شده از مالکیت فکری ARM در سیستمهای تعبیه شده یا توکار یا نهفته (Embedded) مانند تلویزیونهای هوشمند، ساعتهای هوشمند، تبلتها و غیره استفاده میشوند.
پردازندههای ARM مبتنی بر معماری رایانه کمدستور یا ریسک (RISC) هستند، اما بر اساس الزامات سیستمهای تعبیه شده، برخی از اصلاحات نیز در معماری RISC انجام میشود. پردازندههای ARM معماری نوع انتقال داده (Load-Store) را دنبال میکنند که پردازش دادهها فقط بر روی محتویات ثباتها یا رجیسترها انجام میشود و نه مستقیماً روی حافظه. دستورالعمل پردازش دادهها در رجیسترها با دسترسی به حافظه متفاوت است.
مجموعه دستورالعمل ARM یکنواخت و طول آن ثابت است. پردازندههای آرم ۳۲بیتی دو مجموعه دستورالعمل دارند: به طور کلی، مجموعه دستورالعمل آرم ۳۲ بیتی و مجموعه دستورالعمل Thumb با ۱۶ بیت است (Thumb شیوهای برای فشردهسازی دستورات پرکاربرد 32 بیتی به صورت 16 بیتی جهت کاهش حجم برنامه، در ازای کاهش سرعت اجرای آن است).
پردازنده ARM از چندین مرحله خط لوله (Pipeline) برای سرعت بخشیدن به جریان دستورالعملها پشتیبانی میکند. در خط لوله سهمرحلهای ساده، دستورالعملها از سه مرحله پیروی میکنند: واکشی (fetch)، رمزگشایی (decode) و اجرا (execute).
برخی از ویژگیهای عمومی ARM به شرح زیر هستند:
آرم دارای چندین خانواده پردازنده است که بر اساس هسته پردازشی که با آن پیادهسازی شدهاند، تقسیم میشود. معماری پردازندههای ARM با تکامل در هر خانواده ادامه دارد. برخی از خانوادههای معروف پردازنده آرم، عبارتند از: ARM10 ،ARM9 ،ARM7 و ARM11. در جدول زیر تعدادی از خانوادههای رایج ARM در کنار معماری آنها ارائه شده است.
برای توصیف پیادهسازی پردازندهها در ARM از نامگذاری مشابه شکل زیر استفاده میشود:
حروف یا کلمات بعد از “ARM” برای نشان دادن ویژگیهای پردازنده استفاده میشود.
x – خانواده یا سری
y – واحد مدیریت/حفاظت از حافظه
z – حافظه نهان
دیکدر Thumb شانزده بیتی(T): پردازندههای ARM از هر دو مجموعه دستورالعمل 32 بیتی ARM و مجموعه دستورالعمل Thumb شانزده بیتی پشتیبانی میکنند. دستورالعملهای اصلی 32 بیتی ARM شامل کدهای دستور آپکدهای 32 بیتی است که به نوبه خود الگوی باینری 4 بایتی است.دستورالعملهای Thumb شانزده بیتی شامل کدهای 16 بیتی یا الگوی باینری 2 بایتی برای بهبود تراکم کد است.
اشکالزدایی JTAG :(D)JTAG یک پروتکل سریال است که توسط ARM برای انتقال اطلاعات اشکالزدایی یا دیباگ بین پردازنده و تجهیز تست استفاده میشود.
ضربکننده سریع(M): پردازندههای قدیمی ARM از یک واحد ضربکننده کوچک و ساده استفاده میکردند. این واحد ضربکننده برای تکمیل یک ضربکنندگی به سیکل ساعت بیشتری نیاز دارد. با وجود واحد ضربکننده سریع (Fast Multiplier)، سیکلهای ساعت مورد نیاز برای ضرب به طور قابل توجهی کاهش مییابد و پردازندههای مدرن ARM قادر به محاسبه ضرب ۳۲ بیتی در یک سیکل واحد هستند.
شبیهساز درونمدار (ICE) تعبیه شده ماکروسل (Macrocell) (I): پردازندههای ARM دارای سختافزار اشکالزدایی بر روی تراشه هستند که به پردازنده اجازه میدهد breakpoints و watchpoints را تنظیم یا Set کند.
دستورالعملهای پیشرفته برای DSP (فرض TDMI): پردازندههای ARM در این مُد از مجموعه دستورالعمل تعمیم یافته DSP برای برنامههای DSP با کارایی بالا پشتیبانی میکنند. با استفاده از این دستورالعملهای DSP تعمیمی، میتوان عملکرد DSP پردازندههای ARM را بدون فرکانسهای ساعت بالا افزایش داد.
فناوری Jazelle (J)(برای اجرای سریع JAVA): از پردازندههای ARM با فناوری Jazelle میتوان در اجرای سریع کدهای جاوا استفاده کرد. Jazelle DBX یا Direct Bytecode eXrection در تلفنهای همراه و سایر لوازم برقی برای اجرای جاوا با کارایی بالا بدون تأثیرگذاری بر حافظه یا باتری استفاده میشود.
واحد ممیز شناور (FPU) برداری(F): معماری ممیز شناور (Floating Point) در پردازندههای ARM اجرای عملیات حسابی شناور را ارائه میدهد. محدوده دینامیکی و دقت ارائه شده توسط معماری ممیز شناور در پردازندههای ARM در بسیاری از برنامههای زمان واقعی (Real Time) در حوزههای صنعتی و خودروسازی استفاده میشود.
نسخه Synthesizable (S): هسته پردازنده ARM به عنوان کد منبع (سورس کد) در دسترس است. این هسته نرمافزاری را میتوان به فرمی کامپایل کرد که توسط EDA Tools به راحتی قابل درک باشد. با استفاده از کد منبع پردازنده میتوان معماری پردازنده ARM را اصلاح کرد. نمونهای در پردازندههای خانواده ARM7، پردازنده LPC2148 مبتنی بر معماری ARM7TDMI-S است.
پردازندههای ARM را میتوان به پردازندههای کلاسیک آرم (ARM Classic Processors)، پردازندههای توکار آرم (ARM Embedded Processors) و پردازندههای کاربردی آرم (ARM Application Processors) تقسیمبندی کرد.
پردازندههای کلاسیک ARM شامل خانوادههای ARM9 ،ARM7 و ARM11 هستند و ARM7TMDI هنوز پراستفادهترین پردازنده 32 بیتی است. پردازندههای مبتنی بر ARM7 هنوز هم در بسیاری از دستگاههای کوچک و ساده 32 بیتی استفاده میشوند.
میتوان از ARM7 یا سایر پردازندههای کلاسیک ARM برای سیستمهای تعبیه شده در مقیاس کوچک استفاده کرد که با استفاده از پردازندههای پیشرفته تعبیه شده ARM یا پردازندههای Cortex-M و پردازندههای Cortex-R ساخته میشوند. پردازندههای Cortex-M دارای مشخصات میکروکنترلری هستند، در حالی که پردازندههای Cortex-R زمان واقعیاند.
پردازندههای Cortex-M دارای انرژی کارآمد بوده و برای اجرا ساده هستند و عمدتاً برای برنامههای پیشرفته تعبیه شده توسعه یافتهاند. پردازندههای Cortex-M ARM به چندین هسته پردازنده مانند Cortex-M0،Cortex-M0+ ،Cortex-M3 ،Cortex-M4 و Cortex-M7 تقسیم میشوند.
سری Cortex-A بالاترین عملکرد را در بین پردازندههای ARM دارند. این پردازندهها در دستگاههای تلفن همراه، محصولات فناورانه مانند تجهیزات شبکه، لوازم برقی، سیستمهای اتوماسیون، خودروها و سایر سیستمها توکار به کار میروند.
پردازندههای Cortex-A خود به انواع پردازندههای عملکرد بالا (High Performance)، بازده بالا (High Efficiency) و بازده بسیار بالا (Ultra-high Efficiency) تقسیم میشوند. هریک از اینها نیز خود انواع هستههای متخلفی دارند.
میکروکنترلر ARM خانواده STM32 مبتنی بر Cortex-M است. خانواده STM32 به طور کلی به چهار دسته کلی طبقهبندی میشوند که هر یک بازار خاص خودش را دارد. این چهار دسته عبارتند از: کارایی بالا، اصلی، توان بسیار کم و بیسیم. خانواده STM32 از میکروکنترلر ARM ساخت استیمایکروالکترونیکس(STMicroelectronics) است.
میکروکنترلرهای STM32 امکانات جانبی ارتباطی سریال و موازی را ارائه میدهند که میتوانند با انواع قطعات الکترونیکی از جمله سنسورها، نمایشگرها، دوربینها، موتورها و سایر تجهیزات ارتباط برقرار کنند. هر نوع میکروکنترلر ARM از خانواده STM32 دارای حافظه داخلی فلش و رم هستند.
دامنه عملکرد میکروکنترلر ARM خانواده STM32 بسیار گسترده است. برخی از ابتداییترین انواع این خانواده، سری STM32F0 و STM32F1 است که از فرکانس ساعت تنها 24 مگاهرتز شروع میشوند و در بستههایی با حداقل 16 پین در دسترس هستند.
از طرف دیگر، میکروکنترلر ARM سری STM32H7 با کارایی بسیار عالی، در بستههایی با حداکثر 240 پین موجود است. این میکروکنترلر، یک میکروکنترلر ARM تک یا دو هستهای است که از یک هسته Cortex-M7 با فرکانس 480 مگاهرتز و یک هسته Cortex-M7 با فرکانس ۲۴0مگاهرتز اضافه برای نسخههای دو هستهای تشکیل شده است. دسته عملکرد بالا، بهترین عملکرد را در اجرای کد و انتقال دادهها ارائه میدهد. مدلهای پیشرفتهتر با واحدهای ممیز شناور (FPU) برای کاربردهای نیازمند پردازش عددی در دسترس هستند. این مدلهای پیشرفته خط بین میکروکنترلر و یک میکروپروسسور را حذف میکنند.
سرانجام، سری STM32L به طور خاص برای کاربردهای قابل حمل با توان کم (از یک باتری کوچک) طراحی شده است.
ابزارهای توسعه برای تهیه کد، برنامهنویسی میکروکنترلر و آزمایش و اشکالزدایی کد مورد نیاز هستند. ابزارهای توسعه شامل موارد زیر است:
چندین ابزرا توسعه نرمافزاری برای تهیه کد در میکروکنترلرهای STM32 وجود دارد. ابزارهای نرمافزاری به عنوان محیط یکپارچه توسعه نرمافزار (IDE) در دسترس هستند که تمام ابزارهای لازم را در یک محیط یکپارچه در خود دارند.
دو بسته توسعه رایج به شرح زیر هستند:
محیط Keil MDK ARM IDE :Keil MDK ARM یک محیط توسعه بسیار پایدار است که به صورت رایگان قابل است. با Keil میتوان یک برنامه کد را تا اندازه 32 کیلوبایت توسعه داد. برای تهیه برنامههای بزرگتر، یک نسخه مجاز پولی را خریداری کرد.
زنجیره CoIDE: یک زنجیره ابزار رایگان مبتنی بر نسخه مختصر شدهای از Eclipse IDE است که به همراه یک نسخه ARM تعبیه شده از کامپایلر GCC ساخته شده است.
چندین IDE دیگر نیز وجود دارند که برای کار با میکروکنترلرهای STM32 در دسترس هستند. جدا از ابزارهای نرمافزاری، یک برنامهنویس سریالی درونمداری (ICSP) برای پروگرام و تست کد روی میکروکنترلر ARM مورد نیاز است. ICSP باید از طریق درگاه USB میکروکنترلر را با ابزارهای نرم افزاری PC متصل کند.
میکروکنترلرهای Cortex-M از دو پروتکل برنامهنویسی پشتیبانی می کنند: JTAG و SWD. چندین ICSP وجود دارد که از این پروتکلها پشتیبانی میکنند، از جمله: Keil U-Link 2 و Segger J-Link و ST-Link.
سیستمهای Acorn: اولین کامپیوتر مبتنی بر معماری ARM، کامپیوتر شخصی Acorn بود که از سیستمعاملی به نام Arthur بهره میبرد. سیستمعاملی مبتنی بر RISC OS که از معماری ARM پشتیبانی میکرد و Acorn و برخی دیگر از تولیدکنندگان از آن استفاده میکردند.
سیستمعاملهای توکار: معماری ARM از طیف وسیعی از سیستمعاملهای توکار مانند Windows CE, Windows RT, Symbian, ChibiOS/RT, FreeRTOS, eCos, Integrity, Nucleus PLUS, MicroC/OS-II, QNX, RTEMS, CoOS, BRTOS, RTXC Quadros, ThreadX, Unison Operating System, uTasker, VxWorks, MQX و OSE پشتیبانی میکند.
یونیکس: یونیکس و برخی از سیستمعاملهای مبتنی بر یونیکس مانند: Inferno, Plan 9, QNX و Solaris از ARM پشتیبانی میکنند.
لینوکس: بسیاری از توزیعهای لینوکس از ARM پشتیبانی میکنند از آن جمله میتوان به اندروید و کروم گوگل، Arch Linux، بادا سامسونگ، Debian, Fedora,OpenSuse, Ubuntu و WebOS اشاره کرد.
سیستم عامل BSD: برخی از مشتقهای BSD مانند OpenBSD و iOS و OS X اپل نیز از ARM پشتیبانی میکند.
ویندوز: معماریهای ARMv 5, 6 و ۷ از ویندوز CE که در ابزارهای صنعتی و PDAها استفاده میشود، پشتیبانی میکند. ویندوز RT و ویندوز فون نیز از معماری ARMv7 پشتیبانی میکنند.
روش کار آرم بسیار ساده است و با آنچه در دنیای رایانه شخصی شاهد هستیم، متفاوت میباشد. بهطور کلی آرم سه نوع لایسنس اصلی به مشتریان واگذار میکند: POP، پردازنده و معماری.
لایسنس پردازنده اجازهٔ استفادهٔ مایکروپراسسور یا پردازندهٔ گرافیکی طراحی شده توسط آرم است. در این صورت نمیتوان طراحی را تغییر داد، اما میتوان از آن به هر شکل ممکن استفاده کرد. به عنوان مثال تراشههای اگزینوس اُکتای سامسونگ را در نظر بگیرید، در این تراشهها از ۴ هستهٔ ARM Cortex A7 و ۴ هستهٔ Cortex A15 استفاده شدهاست. این روش استفاده بیانگر لایسنس استفاده از پردازنده است.
آرم در مورد کاربرد طرحها در سیلیکون راهنماییهایی میکند، اما در نهایت تیم بهکارگیری فیزیکی پردازنده است که برای رسیدن به بهترین فرکانس در توان مصرفی مورد نظر تصمیم میگیرد.
بستهٔ بهینهسازی پردازنده یا Processor Optimization Pack یک قدم فراتر از لایسنس استفاده از پردازنده است. اگر مشتری در کاربرد فیزیکی پردازنده ماهر نباشد، آرم با فروش POP به آنها کمک میکند یا به عبارت دیگر یک طرح یک پردازندهٔ بهینه را به مشتری میفروشد تا پس از تولید در یک کارخانهٔ خاص، حداقل کارایی مشخص شده را دارا باشد.
در مورد هستههای Cortex A8 آرم، اپل و سامسونگ به شکل خاصی از آن استفاده کردند که باعث بهینه شدن فرکانس در برابر توان مصرفی شد. این دو کمپانی به مواردی که طراحی و کاربرد Cortex A8 را دشوار میکرد، دسترسی داشتند؛ اما بسیاری از دیگر تولیدکنندگان پهنای باند لازم یا بودجهٔ کافی برای انجام بهینهسازیها را نداشتند.
بهینه سازی پردازندهها یا POPها برای ترکیبی از پردازندهها، کارخانهها و فرایندهای تولیدی مختلف آماده شدهاست. به عنوان مثال برای تولید پردازندهٔ Cortex A12 در کارخانهٔ TSMC طی فرایند تولید ۲۸نانومتری HPM یک POP مشخص وجود دارد.
آخرین و کاملترین لایسنس، لایسنس معماری است. در این روش آرم لایسنس یکی از معماریها مثل ARMv7 یا ARMv8 را به مشتری واگذار میکند و مشتری میتواند به هر شکل دلخواهی از آن استفاده کند.
کوآلکام برای طراحی و تولید هستههای Krait و اپل برای طراحی هستههای Swift از این لایسنس استفاده کردهاند. چنین مایکروپراسسورهایی با معماری استاندارد صنعتی (یا ISA) هستههای Cortex A15 سازگاری دارند، اما کاربرد خاصی از معماری استاندارد صنعتی آرم هستند. برای تأیید سازگاری باید طبق دستورالعمل آرم عمل کرده و تستها را یکی پس از دیگری انجام داد. آرم پشتیبانیهایی برای طراحان در نظر گرفته ولی تصمیم نهایی، استفاده و بررسی اعتبار طرحها بر عهدهٔ مشتری است.
از نگاه آماری آرم حدود ۱۰۰۰ لایسنس به ۳۲۰ کمپانی مختلف فروختهاست. از این ۳۲۰کمپانی تنها ۱۵مورد لایسنس معماری را در اختیار دارند.
با تشکر از وقتی که گذاشتید امیدوارم مطالب این مقاله براتون مفید بوده باشه.