پیش نیاز این دوره : دوره آموزشی AVR
مقدمه
مدت هاست که از سیستم های مبتنی بر معماری ARM در محصولاتی با کارایی بالا استفاده می شود. به عنوان مثال در کاربردهای تجاری و خانگی نظیر یخچال ، تلویزیون ، لباسشویی ها ، گوشی های همراه ، تبلت ها و … در کاربردهای صنعتی نظیر کنترل تجهیزات صنعتی کارخانه ها ، کنترل تجهیزات خودروها و … و در بسیاری کاربردهای تفریحی و سرگرمی نظیر اسباب بازی ها ، کوادکوپترها و… از این تراشه ها استفاده می شود. در شکل زیر بخشی از کاربردهای قدرت گرفته از ARM را مشاهده می کنید.
پردازنده های ARM آنقدر ویژگی های خوب و بهینه داشته اند که پا از مرز کارایی فراتر گذاشته و در هر وسیله هوشمند چندین نوع از آن به چشم می خورد به طوری که هم اکنون بیش از ۱۰۰ بیلیون تراشه ARM در دنیا ساخته شده و استفاده می شود. برای مثال در یک خودروی هوشمند برای بسیاری از ویژگی ها از قبیل کنترل سوخت ، ترمزها ، GPS و … از انواع آنها استفاده می شود. شکل زیر یک نمونه خودرو هوشمند امروزی و پردازنده های ARM به کار رفته در آن را نشان می دهد.
ARM چیست ؟
ARM مخفف عبارت Advanced Risc Machine به معنای ” ماشین ساختار یافته با دستورالعمل های کاهش یافته ” می باشد. در حقیقت ARM معرف یک پردازنده ( CPU ) با معماری RISC و مجموعه دستورالعمل های ۳۲ یا ۶۴ بیتی است که مخترع آن شرکت سهامی تجاری ARM یا ARM Holding واقع در شهر کمبریج انگلستان است. این شرکت که در سال ۱۹۹۰ تاسیس شده است ، شهرت عمده خود را به خاطر طراحی پردازنده های ARM کسب نموده است. از دیگر محصولات این شرکت میتوان به طراحی انواع سیستم های روی تراشه ( System On Chip ) و محصولات نرم افزاری نظیر Real View و KEIL اشاره نمود.
.
ویژگی های منحصر به فرد ARM
- مصرف توان بهینه که ARM را به گزینه برتر برای استفاده در تجهیزات قابل حمل تبدیل نموده است.
- استاندارد بودن تراشه ARM ؛ یعنی میتوان برنامه ی نوشته شده برای یک تراشه را بدون نیاز به تغییر ، توسط تراشه های دیگر تولید کنندگان نیز استفاده نمود.
- معماری ساده ARM که با استفاده از تعداد ترانزیستورهای بسیار کمتر از پردازنده های CISC قابل پیاده سازی است.
- کارایی بالا در عین ابعاد کوچک ؛ برای مثال کارایی پردازنده ARM که با فرکانس ۴۰۰Mhz کار می کند ، با کارایی پردازنده PENTIUM2 با فرکانس ۳۰۰Mhz تقریبا برابر است اما مصرف توان ARM مثلا یک پنجاهم پردازنده پنتیوم است.
- قابلیت استفاده از سیستم عامل هایی نظیر Linux ، Windows CE ، Android و… که به صورت رایگان و متن باز در دسترس است.
نسل های مختلف پردازنده های ARM
پردازنده های ARM بر اساس معماری ساخت هسته و همچنین دستورالعمل های پیاده سازی شده بر روی آن دسته بندی می شود.
انواع خانواده های پردازنده های ARM شامل ARM7 ، ARM9 ، ARM11 ، Cortex و SecurCore می باشد. هر یک از این خانواده ها خود تقسیم بندی های جزئی تری دارند که در نمودار شکل زیر مشاهده می کنید. خانواده Cortex خود به سه سری Cortex M ، Cortex R و Cortex A تقسیم می شوند که هر یک ویژگی های خاص خود را دارند. در این نمودار هر خانواده براساس قابلیت و کارایی در مکان خود قرار گرفته است.
نکته : خانواده های قدیمی تر از ARM7 منسوخ شده است و دیگر تولید نمی شود. همچنین به علت کارایی و قابلیت های یکسان یا بالاتر پردازنده های Cortex نسبت به سری Classic ، در اکثر پروژه ها از آنها استفاده شده و بر سری کلاسیک ترجیح داده می شوند. بنابراین این سری نیز تقریبا در حال منسوخ شدن است. برای مثال هسته Cortex M3 جایگزین قدرتمندی برای ARM7 می باشد که به علت سرعت پردازش و کارایی بالاتر و نیز مصرف توان پایین تر ترجیح داده می شوند.
در شکل زیر خانواده های جدیدتر پردازنده های ARM که هم اکنون بیشترین استفاده را دارند ، نشان شده است.
هر یک از خانواده های یاد شده دارای معماری براساس مجموعه دستورالعمل هایی می باشد که با نسخه های یکتا معرفی می شود. این نسخه ها که ARM Architecture Versions نام دارند شامل : ARM V4 ، ARM V5 ، ARM V6 ، ARM V7 و ARM V8 می باشند. هر کدام از این نسخه ها خود بر اساس ویژگی های اضافه شده به دستورالعمل های آن دارای استانداردهای اضافه تری نیز می باشند که در برخی پردازنده ها یک یا چند ویژگی وجود دارد. این ویژگی ها که Instruction Set Architecture یا ISA نام دارند ؛ نظیر Thumb ، Jazelle ، DSP ، NEON و … باعث افزایش کارایی پردازنده می شود. این ویژگی ها و اضافه شدن آن به ورژن های بالاتر معماری ARM را در شکل زیر مشاهده می کنید.
نکته : نسخه های قبل از ARMv4 منسوخ شده است و نسخه ARMv4 نیز که در معماری دستورالعمل های پردازنده های خانواده ARM7 و ARM9 از آن استفاده شده است ، در حال منسوخ شدن می باشد.
Thumb
مجموعه دستورالعمل های Thumb در نسخه چهارم معماری ARM معرفی شده است که کدهای بیشتری را برای کاربردهای تولیدکنندگان مختلف فراهم می کند. Thumb یک زیرمجموعه از عمومی ترین دستورالعمل های ARM سی و دو بیتی را که درون کدهای عملیاتی (Opcode- کدهای عملیاتی بخشی از دستورالعمل های زبان ماشین هستند که اجرا شدن عملیات را مشخص می کند) با اندازه شانزده بیت فشرده شده است، فراهم می کند. در زمان اجرا، این دستورالعمل های شانزده بیتی می توانند از وضعیت فشرده خارج شده و به دستورالعمل های ARM سی و دو بیتی مبدل شود یا به طور مستقیم توسط یک واحد رمزگشایی اختصاصی Thumb اجرا شوند. اگر چه کد Thumb نسبت به کد ARM سی و دو بیتی معادل، چهل درصد بیشتر دستورالعمل استفاده می کند، اما به سی درصد فضای کمتر نیاز دارد. همچنین کد Thumb نسبت به کد ARM چهل درصد آهسته تر است. بنابراین Thumb موجب کاهش کارایی می شود و به طور معمول در کارهایی که حساس به کارایی نیستند، کاربرد دارد. Thumb اگرچه موجب کاهش کارایی می شود، اما موجب کاهش مصرف توان سیستم می شود که یک معیار بسیار مناسب برای سیسستم های همراه به شمار می آید.
Thumb 2
یک مجموعه از دستورالعمل های سی و دو بیتی است که در کنار دستورالعمل های شانزده بیتی سنتی که در Thumb بکار گرفته شده بود، اجرا می شود. Thumb 2 می تواند نیاز به Thumb را در یک سیستم کاهش داده یا به طور کامل حذف کند. این فناوری موجب بهبود کارایی در برخی مواقع نیز موجب کاهش مصرف توان می شود.
Jazell
فناوری Jazell سخت افزاری است که به پردازنده های ARM اجازه می دهد تا «بایت کدهای» جاوا را اجرا کند. آن دسته از معماری هایی که دارای چنین ویژگی هستند، در کاربردهای جاوا کارایی بالاتر به همراه مصرف توان پایین تر را فراهم می کنند.
بسط های DSP
سیستم های مبتنی بر ARM وظایف پردازش سیگنال را با استفاده از کمک پردازنده DSP اختصاصی اجرا می کنند. در برخی از مواقع پشتیبانی از DSP به وسیله هسته اصلی ARM مناسب است. یک بسط ISA متناظر در پنجمین نسخه این معماری معرفی شده است. این ویژگی هنگامی که عملیات جمع و تفریق و ضرب شانزده بیتی اشباع شود از آن ها پشتیبانی می کند. این ویژگی در ششمین نسخه ARM به کار گرفته شد و به بسط مجموعه دستورالعمل های SIMD اضافه شد که اجازه می دهد دو دستورالعمل محاسباتی شانزده بیتی یا چهار دستورالعمل محاسباتی هشت بیتی به طور همزمان اجرا شود.
NEON
این فناوری که گاهی با نام Advanced SIMD شناخته می شود، در معماری نسل هفتم مورد استفاده قرار گرفته و برای کاربردهای حرفه ای، وسایل همراه کم مصرف و علاقمندان به رسانه ها طراحی شده است. فناوری NEON یک معماری هایبرید SIMD نوع ۶۴ یا ۱۲۸ بیت است که به وسیله ARM برای شتاب دادن به کارایی چند رسانه ای و برنامه های کاربردی پردازش سیگنال شامل رمزگذاری/ رمزگشایی ویدئویی، گرافیک سه بعدی، فشرده سازی رمزگشایی صوتی و پردازش تصاویر توسعه داده شده است.
معماری خط لوله ای پردازنده های ARM
پردازنده های ARM از خط لوله برای پردازش استفاده می کنند. پردازنده های مبتنی بر خط لوله دارای سه وضعیت کاری برای اجرای یک دستورالعمل هستند: FETCH ، DECODE و EXECUTE. به عبارت ساده تر، در سیکل اول، دستور اول واکشی می شود، در سیکل دوم، دستور اول رمزگشایی و دستور دوم واکشی می شود و در سیکل سوم، دستور اول اجرا و دستور دوم رمزگشایی و دستور سوم واکشی می شود. به این نوع سیستم خط لوله سه مرحله ای گفته می شود. خط لوله ها از اولین پردازنده ARM تا هسته ARM7TDMI سه مرحله ای هستند و در نسخه های بالاتر تعداد مراحل خط لوله ها افزایش پیدا کرده است. به طور مثال، پردازنده های ARM9 دارای خط لوله های پنج مرحله ای هستند که عملیات خواندن و نوشتن از حافظه ها نیز جزء این عملیات قرار گرفته است. خط لوله ها در ARM10 شش مرحله ای و در ARM11 هشت مرحله ای هستند. به طور کلی، هرچه تعداد مراحل خط لوله ها افزایش پیدا کند، قدرت پردازش پردازنده و در نتیجه کارایی آن افزایش می یابد.
هدف هر دو طراحی خط لوله و ARM ISA، به حداقل رساندن مصرف انرژی است. مصرف توان کمتر یکی از فاکتورهای مهمی است که در وسایل همراه مورد توجه قرار می گیرد. سازندگان چنین وسایلی همواره تمایل دارند از قطعاتی با مصرف توان پایین تر در محصولات خود استفاده کنند. معماری ARM انعطاف پذیری بالایی دارد ، به طوری که تنها بخش اجباری یک پردازنده ARM ، مسیر پردازشی عدد صحیح آن است و اجزای دیگر شامل حافظه نهان ، MMU ، ممیز شناور و دیگر اجزای پردازنده اختیاری هستند. این موضوع نیز انعطاف پذیری بالایی را در ساختمان پردازنده های مبتنی بر ARM فراهم کرده است. در نهایت اگر چه این پردازنده ها کوچک و کم مصرف هستند، اما کارایی بالایی در برنامه های کاربردی فراهم می کنند. به عنوان مثال، پردازنده PXA255 XScale با فرکانس چهارصد مگاهرتز کارایی تقریباً برابری با «پنتیوم ۲» سیصد مگاهرتزی ارائه می کند، در حالی که مصرف توان آن پنجاه برابر کمتر است.
هسته های کمک پردازشی(Coprocessors)
معماری ARM از یک مکانیزم عمومی برای توسعه مجموعه دستورالعمل ها از طریق افزایش کمک پردازنده ها پشتیبانی می کند. برای نمونه، واحدهای ممیز شناور به عنوان یک کمک پردازنده به کار گرفته می شوند. یک مثال دیگر از کمک پردازنده، کمک پردازنده کنترل سیستم است که بافر نوشتن، TLB، حافظه نهان و MMUها را مدیریت می کند.
معماری ARM یک پروتکل برای تعامل بین هسته ARM و کمک پردازنده ها و همچنین دستورالعمل هایی برای انتقال داده بین ARM و کمک پردازنده ها معین کرده است. کمک پردازنده ها نیازمند یک معماری بارگذاری ذخیره سازی (Load-Store) هستند. هر کمک پردازنده می تواند حداکثر شانزده ثبات از هر نوع اندازه ای داشته باشد. به طور کلی، سه نوع دستورالعمل مربوط به کمک پردازنده توسط هسته ARM اصلی به رسمیت شناخته شده است.
جمع بندی انواع تراشه های ARM
همانطور که پیشتر اشاره کردیم، شرکت ARM Holding نسبت به طراحی هسته براساس معماری ARM اقدام میکند و هستههای متفاوتی را براساس نسلهای مختلف این معماری عرضه کرده است، جدیدترین معماری این شرکت ARM v8 است که از دستورات ۶۴ بیتی پشتیبانی میکند. در جدول زیر کل هستههای طراحی شده توسط ARM را به همراه ویژگی ها و مشخصات آن مشاهده می کنید.
ARM Family |
ARM Architecture |
ARM Core |
Feature |
Cache (I/D), MMU |
Typical MIPS @ MHz |
---|---|---|---|---|---|
ARM1 |
ARMv1 |
ARM1 |
First implementation |
None |
|
ARM2 |
ARMv2 |
ARM2 |
ARMv2 added the MUL (multiply) instruction |
None |
۴ MIPS @ 8 MHz۰٫۳۳ DMIPS/MHz |
ARMv2a |
ARM250 |
Integrated MEMC (MMU), Graphics and IO processor. ARMv2a added the SWP and SWPB (swap) instructions. |
None, MEMC1a |
۷ MIPS @ 12 MHz |
|
ARM3 |
ARMv2a |
ARM3 |
First integrated memory cache. |
۴ KB unified |
۱۲ MIPS @ 25 MHz۰٫۵۰ DMIPS/MHz |
ARM6 |
ARMv3 |
ARM60 |
ARMv3 first to support 32-bit memory address space (previously 26-bit) |
None |
۱۰ MIPS @ 12 MHz |
ARM600 |
As ARM60, cache and coprocessor bus (for FPA10 floating-point unit). |
۴ KB unified |
۲۸ MIPS @ 33 MHz |
||
ARM610 |
As ARM60, cache, no coprocessor bus. |
۴ KB unified |
۱۷ MIPS @ 20 MHz۰٫۶۵ DMIPS/MHz |
||
ARM7 |
ARMv3 |
ARM700 |
۸ KB unified |
۴۰ MHz |
|
ARM710 |
As ARM700, no coprocessor bus. |
۸ KB unified |
۴۰ MHz |
||
ARM710a |
As ARM710 |
۸ KB unified |
۴۰ MHz۰٫۶۸ DMIPS/MHz |
||
ARM7TDMI |
ARMv4T |
ARM7TDMI(-S) |
۳-stage pipeline, Thumb |
none |
۱۵ MIPS @ 16.8 MHz۶۳ DMIPS @ 70 MHz |
ARM710T |
As ARM7TDMI, cache |
۸ KB unified, MMU |
۳۶ MIPS @ 40 MHz |
||
ARM720T |
As ARM7TDMI, cache |
۸ KB unified, MMU with Fast Context Switch Extension |
۶۰ MIPS @ 59.8 MHz |
||
ARM740T |
As ARM7TDMI, cache |
MPU |
|||
ARM7EJ |
ARMv5TEJ |
ARM7EJ-S |
۵-stage pipeline, Thumb, Jazelle DBX, Enhanced DSP instructions |
none |
|
ARM8 |
ARMv4 |
ARM810 |
۵-stage pipeline, static branch prediction, double-bandwidth memory |
۸ KB unified, MMU |
۸۴ MIPS @ 72 MHz۱٫۱۶ DMIPS/MHz |
ARM9TDMI |
ARMv4T |
ARM9TDMI |
۵-stage pipeline, Thumb |
none |
|
ARM920T |
As ARM9TDMI, cache |
۱۶ KB/16 KB, MMU with FCSE (Fast Context Switch Extension) |
۲۰۰ MIPS @ 180 MHz |
||
ARM922T |
As ARM9TDMI, caches |
۸ KB/8 KB, MMU |
|||
ARM940T |
As ARM9TDMI, caches |
۴ KB/4 KB, MPU |
|||
ARM9E |
ARMv5TE |
ARM946E-S |
Thumb, Enhanced DSP instructions, caches |
variable, tightly coupled memories, MPU |
|
ARM966E-S |
Thumb, Enhanced DSP instructions |
no cache, TCMs |
|||
ARM968E-S |
As ARM966E-S |
no cache, TCMs |
|||
ARMv5TEJ |
ARM926EJ-S |
Thumb, Jazelle DBX, Enhanced DSP instructions |
variable, TCMs, MMU |
۲۲۰ MIPS @ 200 MHz |
|
ARMv5TE |
ARM996HS |
Clockless processor, as ARM966E-S |
no caches, TCMs, MPU |
||
ARM10E |
ARMv5TE |
ARM1020E |
۶-stage pipeline, Thumb, Enhanced DSP instructions, (VFP) |
۳۲ KB/32 KB, MMU |
|
ARM1022E |
As ARM1020E |
۱۶ KB/16 KB, MMU |
|||
ARMv5TEJ |
ARM1026EJ-S |
Thumb, Jazelle DBX, Enhanced DSP instructions, (VFP) |
variable, MMU or MPU |
||
ARM11 |
ARMv6 |
ARM1136J(F)-S |
۸-stage pipeline, SIMD, Thumb, Jazelle DBX, (VFP), Enhanced DSP instructions |
variable, MMU |
۷۴۰ @ ۵۳۲–۶۶۵ MHz (i.MX31 SoC), 400–۵۲۸ MHz |
ARMv6T2 |
ARM1156T2(F)-S |
۸-stage pipeline, SIMD, Thumb-2, (VFP), Enhanced DSP instructions |
variable, MPU |
||
ARMv6Z |
ARM1176JZ(F)-S |
As ARM1136EJ(F)-S |
variable, MMU + TrustZone |
۹۶۵ DMIPS @ 772 MHz, up to 2 600 DMIPS with four processors |
|
ARMv6K |
ARM11 MPCore |
As ARM1136EJ(F)-S, 1–۴ core SMP |
variable, MMU |
||
SecureCore |
ARMv6-M |
SC000 |
۰٫۹ DMIPS/MHz |
||
ARMv4T |
SC100 |
||||
ARMv7-M |
SC300 |
۱٫۲۵ DMIPS/MHz |
|||
Cortex-M |
ARMv6-M |
Cortex-M0 |
Microcontroller profile, Thumb + Thumb-2 subset (BL, MRS, MSR, ISB, DSB, DMB), hardware multiply instruction (optional small), optional system timer, optional bit-banding memory |
No cache, No TCM, No MPU |
۰٫۸۴ DMIPS/MHz |
Cortex-M0+ |
Microcontroller profile, Thumb + Thumb-2 subset (BL, MRS, MSR, ISB, DSB, DMB),hardware multiply instruction (optional small), optional system timer, optional bit-banding memory |
No cache, No TCM, optional MPU with 8 regions |
۰٫۹۳ DMIPS/MHz |
||
Cortex-M1 |
Microcontroller profile, Thumb + Thumb-2 subset (BL, MRS, MSR, ISB, DSB, DMB),hardware multiply instruction (optional small), OS option adds SVC / banked stack pointer, optional system timer, no bit-banding memory |
No cache, 0-1024 KB I-TCM, 0-1024 KB D-TCM, No MPU |
۱۳۶ DMIPS @ 170 MHz,(0.8 DMIPS/MHz FPGA-dependent) |
||
ARMv7-M |
Cortex-M3 |
Microcontroller profile, Thumb / Thumb-2, hardware multiply and divide instructions, optional bit-banding memory |
No cache, No TCM, optional MPU with 8 regions |
۱٫۲۵ DMIPS/MHz |
|
ARMv7E-M |
Cortex-M4 |
Microcontroller profile, Thumb / Thumb-2 / DSP / optional FPv4 single-precision FPU, hardware multiply and divide instructions, optional bit-banding memory |
No cache, No TCM, optional MPU with 8 regions |
۱٫۲۵ DMIPS/MHz |
|
Cortex-R |
ARMv7-R |
Cortex-R4 |
Real-time profile, Thumb / Thumb-2 / DSP / optional VFPv3 FPU, hardware multiply and optional divide instructions, optional parity & ECC for internal buses / cache / TCM, 8-stage pipeline dual-core running lockstep with fault logic |
۰-۶۴ KB / 0-64 KB, 0-2 of 0-8 MB TCM, opt MPU with 8/12 regions |
|
Cortex-R5 (MPCore) |
Real-time profile, Thumb / Thumb-2 / DSP / optional VFPv3 FPU and precision, hardware multiply and optional divide instructions, optional parity & ECC for internal buses / cache / TCM, 8-stage pipeline dual-core running lock-step with fault logic / optional as 2 independent cores, low-latency peripheral port (LLPP), accelerator coherency port (ACP) |
۰-۶۴ KB / 0-64 KB, 0-2 of 0-8 MB TCM, opt MPU with 12/16 regions |
|||
Cortex-R7 (MPCore) |
Real-time profile, Thumb / Thumb-2 / DSP / optional VFPv3 FPU and precision, hardware multiply and optional divide instructions, optional parity & ECC for internal buses / cache / TCM, 11-stage pipeline dual-core running lock-step with fault logic / out-of-order execution / dynamic register renaming / optional as 2 independent cores, low-latency peripheral port (LLPP), ACP [19] |
۰-۶۴ KB / 0-64 KB, ? of 0-128 KB TCM, opt MPU with 16 regions |
|||
Cortex-A |
ARMv7-A |
Cortex-A5 |
Application profile, ARM / Thumb / Thumb-2 / DSP / SIMD / Optional VFPv4-D16 FPU / Optional NEON / Jazelle RCT and DBX, 1–۴ cores / optional MPCore, snoop control unit (SCU), generic interrupt controller (GIC), accelerator coherence port (ACP) |
۴-۶۴ KB / 4-64 KB L1, MMU + TrustZone |
۱٫۵۷ DMIPS / MHz per core |
Cortex-A7 MPCore |
Application profile, ARM / Thumb / Thumb-2 / DSP / VFPv4-D16 FPU / NEON / Jazelle RCT and DBX / Hardware virtualization, in-order execution, superscalar, 1–۴ SMP cores, Large Physical Address Extensions (LPAE), snoop control unit (SCU), generic interrupt controller (GIC), ACP, architecture and feature set are identical to A15, 8-10 stage pipeline, low-power design |
۳۲ KB / 32 KB L1, 0-4 MB L2, L1 & L2 have Parity & ECC, MMU + TrustZone |
۱٫۹ DMIPS / MHz per core |
||
Cortex-A8 |
Application profile, ARM / Thumb / Thumb-2 / VFPv3 FPU / Optional NEON / Jazelle RCT and DAC, 13-stage superscalar pipeline |
۱۶-۳۲ KB / 16-32 KB L1, 0-1 MB L2 opt ECC, MMU + TrustZone |
up to 2000 (2.0 DMIPS/MHz in speed from 600 MHz to greater than 1 GHz) |
||
Cortex-A9 MPCore |
Application profile, ARM / Thumb / Thumb-2 / DSP / Optional VFPv3 FPU / Optional NEON / Jazelle RCT and DBX, out-of-order speculative issue superscalar, 1–۴ SMP cores, snoop control unit (SCU), generic interrupt controller (GIC), accelerator coherence port (ACP) |
۱۶-۶۴ KB / 16-64 KB L1, 0-8 MB L2 opt Parity, MMU + TrustZone |
۲٫۵ DMIPS/MHz per core, 10,000 DMIPS @ 2 GHz on Performance Optimized TSMC 40G (dual core) |
||
Cortex-A15 MPCore |
Application profile, ARM / Thumb / Thumb-2 / DSP / VFPv4 FPU / NEON / Jazelle RCT / Hardware virtualization, out-of-order speculative issue superscalar, 1–۴ SMP cores, Large Physical Address Extensions (LPAE), snoop control unit (SCU), generic interrupt controller (GIC), ACP, 15-24 stage pipeline[23] |
۳۲ KB / 32 KB L1, 0-4 MB L2, L1 & L2 have Parity & ECC, MMU + TrustZone |
At least 3.5 DMIPS/MHz per core (Up to 4.01 DMIPS/MHz depending on implementation). |
||
ARMv8-A |
Cortex-A53 |
Application profile, AArch32 and AArch64, 1-4 SMP cores, Trustzone, NEON advanced SIMD, VFPv4, hardware virtualization, dual issue, in-order pipeline |
۸~۶۴ KB/8~64 KB L1 per core, 128 KB~2 MB L2 shared, 40-bit physical addresses |
۲٫۳ DMIPS/MHz |
|
Cortex-A57 |
Application profile, AArch32 and AArch64, 1-4 SMP cores, Trustzone, NEON advanced SIMD, VFPv4, hardware virtualization, multi-issue, deeply out-of-order pipeline |
۴۸ KB/32 KB L1 per core, 512 KB~2 MB L2 shared, 44-bit physical addresses |
At least 4.1 DMIPS/MHz per core (Up to 4.76 DMIPS/MHz depending on implementation). |
||
ARM Family |
ARM Architecture |
ARM Core |
Feature |
Cache (I/D), MMU |
Typical MIPS @ MHz |
اما برخی از تولیدکنندگان مانند کوالکام، انویدیا یا اپل، با اجازه از شرکت ARM خود نسبت به طراحی هسته سفارشی بر مبنای معماری ARM اقدام میکنند. در جدول زیر هستههای طراحی شده توسط شرکتهای دیگر که البته بر مبنای معماری یکی از خانودههای ARM هستند را مشاهده میکنید.
Family |
ARM Architecture |
Core |
Feature |
Cache (I/D), MMU |
Typical MIPS @ MHz |
---|---|---|---|---|---|
StrongARM |
ARMv4 |
SA-1 |
۵-stage pipeline |
۱۶ KB/8–۱۶ KB, MMU |
۲۰۳–۲۰۶ MHz۱٫۰ DMIPS/MHz |
XScale |
ARMv5TE |
XScale |
۷-stage pipeline, Thumb, Enhanced DSP instructions |
۳۲ KB/32 KB, MMU |
۱۳۳–۴۰۰ MHz |
Bulverde |
Wireless MMX, Wireless SpeedStep added |
۳۲ KB/32 KB, MMU |
۳۱۲–۶۲۴ MHz |
||
Monahans[30] |
Wireless MMX2 added |
۳۲ KB/32 KB (L1), optional L2 cache up to 512 KB, MMU |
up to 1.25 GHz |
||
Snapdragon |
ARMv7-A |
Scorpion [31] |
Used by some members of the Snapdragon S1, S2, and S3 families. 1 or 2 cores. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv3 FPU / NEON (128-bit wide) |
۲۵۶ KB L2 per core |
۲٫۱ DMIPS / MHz per core |
Krait [31] |
Used by some members of the Snapdragon S4 family. 1, 2, or 4 cores. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON (128-bit wide) |
۴ KB / 4 KB L0, 16 KB / 16 KB L1, 512 KB L2 per core |
۳٫۳ DMIPS / MHz per core |
||
Apple Ax |
ARMv7-A |
Apple Swift [32] |
Custom ARM core used in the Apple A6 and Apple A6X. 2 cores. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON |
L1: 32 kB instruction + 32 kB data, L2: 1 MB |
۳٫۵ DMIPS / MHz Per Core |
Family |
ARM Architecture |
Core |
Feature |
Cache (I/D), MMU |
Typical MIPS @ MHz |
مقایسه ویژگی های مختلف پردازنده های ARM
پردازنده های ARM از نظر ویژگی ها و قابلیت های زیر قابل مقایسه با یکدیگر هستند :
- حداکثر کلاک سیستم( Max Clk ) : سرعت پردازش CPU را مشخص می کند.
- معماری دستور العمل ها ( Architecture ) : به دو صورت ۳۲ بیتی یا ۶۴ بیتی هستند.
- ویژگی های دستور العمل ها ( ISA ) : ویژگی های اضافه شده نظیر Thumb و… که باعث افزایش کارایی سیستم می شود.
- معماری حافظه ( Memory sys ) : به یکی از دو صورت قدیمی ( Von Neuman ) و مدرن ( Harvard ) می باشد.
- تعداد طبقات معماری خط لوله ای ( Pipeline Stage ) : در پردازنده های مختلف بین ۳ تا ۱۳ طبقه متفاوت است.
- میزان حافظه نهان ( Cashe ) : هر چه میزان این حافظه بیشتر باشد قابلیت های پردازنده افزایش می یابد.
برای مثال دو پردازنده ARM7 و Cortex M3 در جدول شکل زیر با یکدیگر مقایسه شده اند.
تفاوت پردازنده های سری Cortex با یکدیگر
سری های مختلف پردازنده های Cortex با یکدیگر علاوه بر معماری هسته و دستورالعمل از سه نظر دارای تفاوت هستند :
- کاربرد ها
- مصرف توان
- قابلیت ها
از نظر کاربردی هر یک از سه سری پردازنده های Cortex ویژگی های خاص خود را دارند که در شکل زیر تفاوت میان آن ها را مشاهده می کنید. از این میان ، پردازنده های Cortex M در کارهای کوچکتر و با توان مصرفی بسیار پایین مورد استفاده قرار می گیرد. پردازنده های Cortex R در کارهای صنعتی و کنترلی دقیق که نیازمند پردازش سریع و به موقع ( Real-Time ) هستند ، مورد استفاده قرار می گیرد. همچنین پردازنده های Cortex A در کارهای گرافیکی ( نمایشگر ها ) و پردازش های سطح بالا و انجام اپلیکشن های مختلف مورد استفاده قرار می گیرد.
از بین سه سری تنها پردازنده های سری Cortex A است که قابلیت نصب سیستم عامل های مختلف لینوکسی و اندرویدی بر روی آن را دارد. در حالی که در سری M و R تنها میتوان سیستم عامل های RTOS نصب نمود که سرعت پایین تر و حجم کمتری دارند.
در سری Cortex R قابلیت ها و ویژگی های بیشتری نسبت به Cortex M در نظر گرفته شده است که همین مسئله باعث افزایش توان مصرفی این پردازنده های نیز می شود. این سری از پردازنده های کورتکس توانایی های زیادی دارند و عملکرد مطمئن تری در کاربرد های صنعتی و مخابراتی دارند. شکل زیر محدوده این توانایی ها را نشان می دهد.
با کنار گذاشتن موارد فنی، ARM Cortex A8 در مدلهای یک هستهای و Cortex A9 و A15 در مدلهای چندهستهای به کار گرفته میشود. از جمله معروفترین مواردی که پردازشگرهای ARM Cortex A9 در آنها به کار گرفته شده است میتوان به سیستم تک تراشهای A5 اپل یا تگرا ۲ و ۳ انویدیا اشاره نمود.
هستههای ۶۴ بیتی Cortex-A57 و Cortex-A53 به نوعی حاصل تکامل هستههای ۳۲ بیتی Cortex-A15 و Cortex-A7 هستند و معمولاً با نوع مشابه مقایسه میشوند. به این صورت که A57 جانشین ۶۴ بیتی هستهی A15 و A53 جانشین A7 است. Cortex-A53 قدرت پردازشی تقریبا معادل با Cortex-A15 خواهد داشت ولی مصرف انرژی آن یک چهارم است. Cortex-A57 مصرف انرژی تقریبا معادل با Cortex-A15 دارد، در حالی که قدرت پردازشی آن به سه برابر میرسد.
پردازنده ۶۴ بیتی Cortex-A72 جانشین Cortex-A57 است که ۳٫۵ برابر از نسل Cortex-A15 سریعتر می باشد و همچنین همان مقدار از انرژی را مصرف می کند. Cortex-A72 از ۷۵ درصد توان کمتر نسبت به دستگاههای مبتنی بر Cortex-A15 تحت میزان کار مشابه استفاده خواهد کرد.
شرکت های سازنده تراشه های ARM
همانطور که متوجه شدید شرکت ARM خود تولید کننده تراشه های ARM نیست بلکه تنها آن ها را طراحی می کند و سپس به دیگر شرکت های نیمه هادی می فروشد. شرکت هایی نظیر SUMSUNG ، Sony ، Apple ، Atmel ، ST Micro ، NXP ، Texas Instrument و بسیاری کمپانیهای دیگر به راحتی تراشههای خود را براساس معماری ARM تولید میکنند.
سیستم-روی-یک-چیپ (System on a Chip) که آن را به اختصار SoC مینامند در واقع یک تراشه است که در آن پردازنده اصلی (CPU)، پردازنده گرافیک (GPU)، حافظه رم، کنترلرهای ورودی و خروجی و بعضا کنترلر باند رادیویی قرار دارند. پس لازم است بدانید که کل SoC براساس معماری ARM تولید نمیشود و تنها بخش CPU آن بر مبنای معماری ARM طراحی و تولید میگردد. پس این باور که فلان SoC براساس معماری ARM ساخته شده، اشتباه است و بخش پردازنده اصلی اکثر SoCها براساس یکی از طراحهای معماری ARM ساخته میشوند.
از جمله سیستم-روی-یک-چیپهایی که هسته اصلی آنها براساس معماری ARM طراحی شدهاند میتوان به ۳ نسل اول تگرا انویدیا، Quatro شرکت CSRT، نوا شرکت اریکسون، OMAP شرکت تکزاس، Exynos شرکت سامسونگ و Ax شرکت اپل اشاره کرد. این شرکت ها از معماری ARM و همچنین معماری یکی از هستههای طراحی شده توسط این شرکت بهره بردهاند.
اما شرکتها میتوانند گواهی استفاده از معماری ARM را تهیه کرده و سپس بر اساس آن هسته سفارشی مورد نظرشان را طراحی کنند یعنی به جای اینکه هسته CPU را براساس Cortex-A9 یا Cortex-A15 یا دیگر هستههای ARM بسازنند، خودشان براساس معماری یکی از خانوادههای ARM، هسته خاص خود را طراحی کنند. به عنوان مثال سیستم-روی-یک-چیپ A6 اپل، X-Gene ،Krait کوالکام، StrongARM شرکت DEC ،XScale شرکت Marvell اینتل یا Project Denver شرکت انویدیا اینگونه هستند و اگر چه بخش CPU از سیستم-روی-یک-چیپ آنها براساس معماری ARM طراحی شدهاند، اما طراحی هستهها با آنچه ARM پیشنهاد کرده متفاوت هستند.
شرکت های سازنده میکروکنترلرهای مبتنی بر پردازنده ARM
اما شرکت هایی که از هسته های پردازشی ARM در ساخت میکروکنترلرهای خود بهره می برند عبارتند از :
- شرکت Atmel : این شرکت که همان شرکت معروف سازنده میکروکنترلرهای AVR است ، میکروکنترلرهای ARM خود را در خانواده های متعدد ارائه می کند به طوری که میکروکنترلرهای با هسته ARM7TDMI در خانواده AT91SAM7 ، میکروکنترلرهای ARM9 در خانواده AT91SAM9 ، میکروکنترلرهای Cortex M3 در خانواده AT91SAM3 ، میکروکنترلرهای Cortex A5 در خانواده SAMA5D3 قرار می گیرند. شکل زیر میکروکنترلرهای سری جدید این شرکت را نشان می دهد.
- شرکت NXP : یا همان شرکت فیلیپس می باشد که از پردازنده های ARM7TDMI ، Cortex M0/M1/M3/M4 و ARM9 در ساخت میکروکنترلرهای خانواده LPC استفاده نموده است. خانواده LPC خود به سری های LPC1000 ، LPC2000 ، LPC3000 و LPC4000 تقسیم می شود که هر یک ویژگی های خاص خود را دارند.
- شرکت ST Micro : این شرکت نیز از هسته های ARM7 ، ARM9 و Cortex M0/M3/M4/M7 در ساخت میکروکنترلرهای خود استفاده می کند. شکل زیر انواع خانواده های موجود این شرکت را نشان می دهد.میکروکنترلرهای STM32 این شرکت از قابلیت های زیادی پشتیبانی می کند که جزئیات آن در شکل زیر آورده شده است.
- شرکت Texas Instrument : این شرکت از پردازنده های Cortex M3 ، Cortex A8 و ARM9 در ساخت میکروکنترلرهای خانواده Stellaris ، Sitara ، DaVinci و OMAP استفاده نموده است. شکل زیر انواع میکروکنترلرهای ARM این شرکت را نشان می دهد.
ARMv8 و پلتفرم ۶۴ بیتی
در سال ۲۰۱۱ نسل جدید ARMv8 رسما معرفی شد و پشتیبانی از معماری ۶۴ بیتی به آن اضافه گردید. در ARMv8 دستورات ۳۲ بیتی برروی سیستمعامل ۶۴ بیتی قابل اجرا هستند و در آن سیستمعاملهای ۳۲ بیتی نیز از طریق مجازی سازی ۶۴ بیتی اجرا میشوند. شرکتهای AMD, Micro, Brodom, Calxeda, Hisilicon, Samsung و ST Microelectronics گواهی استفاده از معماری ARMv8 را دریافت کردهاند و اعلام نمودهاند SoCهای مبتنی بر این معماری را تولید خواهند کرد. خود ARM نیز دو طراحی Cortex-A53 و Cortex-A57 را در ۳۰ اکتبر ۲۰۱۲ معرفی کرد که هر دو مبتنی بر معماری ARMv8 هستند.
لینوکس که هسته اندروید نیز است به تازگی هسته اصلی سیستمعامل (Kernel) خود را بروز کرده تا از ARMv8 پشتیبانی کند. انتظار میرود در سال ۲۰۱۳ بسیاری از سیستم-روی-یک-چیپهای دنیا از معماری ARMv8 بهره ببرند.
چه سیستمعاملهایی از ARM پشتیبانی میکنند؟
سیستمهای 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 پشتیبانی میکنند.
گواهی و هزینه استفاده از معماری ARM
ARM خود تولیدکننده نیمه هادی نیست و در عوض از راه صدور مجوز استفاده از طراحیهای خود، درآمد کسب میکند. گواهی استفاده از معماری ARM شرایط خاص و متنوعی را دارد و در شرایط مختلف هزینه مربوط به استفاده از آن نیز تفاوت میکند. ARM به همراه گواهینامه خود اطلاعات جامعی در مورد نحوه یکپارچگی قسمتهای مختلف با هستهها را ارائه میکند تا تولیدکنندگان به راحتی بتوانند از این معماری در سیستم-روی-یک-چیپهای خود بهره ببرند.
ARM در سال ۲۰۰۶ و در گزارش سالانه خود اعلام کرد که ۱۶۴٫۱ میلیون دلار از بابت حق امتیاز یا حق اختراع، درآمد داشته که این مبلغ از بابت فروش گواهی استفاده از معماری این شرکت در ۲٫۴۵ میلیارد دستگاه مبتنی بر ARM بدست آمده است. این یعنی ARM Holding بابت هر گواهی ۰٫۰۶۷ دلار درآمد کسب نموده، اما این رقم میانگین است و براساس نسلهای مختلف و نوع هستهها متفاوت خواهد بود. مثلا هستههای قدیمی ارزانتر و معماری جدید گرانتر است.
اما در سال ۲۰۰۶ این شرکت از بابت گواهی استفاده از طراحی هسته پردازنده، نزدیک به ۱۱۹٫۵ میلیون دلار درآمد بدست آورده است. در آن سال ۶۵ پردازنده براساس معماری هسته های ARM ساخته شده بودند که به این ترتیب بابت هر گواهی پردازنده مبلغ ۱٫۸۴ میلیون دلار درآمد کسب کرده است. این عدد نیز بصورت میانگین میباشد و براساس نوع و نسل هستهها متفاوت خواهد بود.
در واقع شرکت ARM Holding از معماری ARM دو نوع درآمد دارد یکی بابت استفاده از معماری این شرکت در ابزارهای مختلف که بابت هر تلفن یا تبلت یا هر ابزار دیگری مبلغی بدست میآورد و دیگری بابت هر پردازنده مبتنی بر معماری هستههای ARM نیز یک رقم نسبتا سنگین حدود ۲ میلیون دلار دریافت میکند. در سال ۲۰۰۶ نزدیک به ۶۰ درصد درآمد ARM از بابت حق امتیاز و ۴۰ درصد بابت گواهی ساخت پردازنده براساس معماری ARM بوده است.
برای ادامه آموزش ARM روی تصویر زیر کلیک کنید.
در صورتی که این مطلب مورد پسندتان بود لایک و اشتراک گذاری فراموش نشود
دیدگاه (11)
لطفا بخش های بعدی رو زودتر بزارید
روند آموزش های ARM از هفته آینده سرعت خواهد گرفت
سلام. ممنون از آموزش های خوبتون.
میشه یه مقدار بیشتر پروژه بذارید؟ آدم تا کار عملی نکنه یاد نمیگیره.
بازم ممنون. خدا خیرتون بده
سلام دوست عزیز…خواهش می کنم…بله حتما…
بهترین آموزش ها و پروژه های AVR که قرار داده شده است …
آموزش و پروژه های ARM هم در حال تهیه است …
پروژه های عملی الکترونیک هم ب امید خدا کامل خواهد شد …
با سلام و عر ض خداقوت.
دستتون درد نکنه.عالیه.
سلام سپاسگذارم دوست عزیز
سلام جناب مهندس
با تشکر از اینکه این همه مطالب مفید در وبسایتتون قرار میدید در جهته آموزش به علاقمندان/
اگر محبت کنید و سوال من رو جواب بدیدسپاسگزار میشم
اول اینکه زمینه کاری من الکترونیک هستش ولی به تازگی قصد دارم وارد دنیای بر نامه نویسی بشم و از جهت زبان برنامه نویسی میدونم که باید سی و سی پلاس پلاس رو باید فرا بگیرم ولی مشکل من انتخاب یکی از این سه ( arm-avr-pic) برای بارنامه نویسی هست =با توجه به آخرین و پیشرفته ترین نسل میکرو کنترلرها بنده نظرم به سمتarm هستش /نظر شما در این مورد چی هست؟ و اینکه اگر من در جهت یادگیری برنامه نویسی آموزش arm رو فرا بگیرم آیا توانایی نوشتن برنامه برای نسلهای پیشین میکروکنترلرها یعنی pic _avr رو خو اهم داشت یا خیر ؟
کلن پیشنهاد شما چی هستش _البته من خارج از ایران بسر میبرم بدین جهت عرض کردم که از لحاظ محبوبیت نوع میکرو در ایران به من پیشنهاد ندید _ سپاسگزارم
سلام دوست عزیز ممنونم از لطفتون
هر سه این میکروکنترلرها زبان برنامه نویسی یکسانی دارند در نتیجه با یادگیری یکی از آنها میتوان برای بقیه نیز با کمی یادگیری برنامه نوشت پیشنهاد می کنم از ساده به پیشرفته یادگیری را شروع کنید. اگر حیطه کاری الکترونیک مورد نظرتون هست از avr شروع کنید و اگر حیطه کاری قدرت مورد نظر است از pic سپس میتوانید arm را که پیشرفته تر از بقیه است یاد بگیرید موفق باشید
سلام
در مورد برنامه نویسی اتصال پورت usb lpc2148 به پورت usb دستگاه های دیگر اموزش دارید?
با تشکر
سلام دوست عزیز سری LPC21XX پورت USB ندارند و برای کار شما میتونید از سری های LPC176X استفاده نمایید
نفوق العاده بود ممنون