بخش اول آموزش ARM : آشنایی با انواع تراشه های ARM

بازگشت به آموزشگاه

پیش نیاز این دوره : دوره آموزشی AVR


مقدمه

مدت هاست که از سیستم های مبتنی بر معماری ARM در محصولاتی با کارایی بالا استفاده می شود. به عنوان مثال در کاربردهای تجاری و خانگی نظیر یخچال ، تلویزیون ، لباسشویی ها ، گوشی های همراه ، تبلت ها و … در کاربردهای صنعتی نظیر کنترل تجهیزات صنعتی کارخانه ها ، کنترل تجهیزات خودروها و … و در بسیاری کاربردهای تفریحی و سرگرمی نظیر اسباب بازی ها ، کوادکوپترها و… از این تراشه ها استفاده می شود. در شکل زیر بخشی از کاربردهای قدرت گرفته از ARM را مشاهده می کنید.

ARM Powered Application

پردازنده های ARM آنقدر ویژگی های خوب و بهینه داشته اند که پا از مرز کارایی فراتر گذاشته و در هر وسیله هوشمند چندین نوع از آن به چشم می خورد به طوری که هم اکنون بیش از ۱۰۰ بیلیون تراشه ARM در دنیا ساخته شده و استفاده می شود. برای مثال در یک خودروی هوشمند برای بسیاری از ویژگی ها از قبیل کنترل سوخت ، ترمزها ، GPS و … از انواع آنها استفاده می شود. شکل زیر یک نمونه خودرو هوشمند امروزی و پردازنده های ARM به کار رفته در آن را نشان می دهد.

ARM_In_Car


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 تقسیم می شوند که هر یک ویژگی های خاص خود را دارند. در این نمودار هر خانواده براساس قابلیت و کارایی در مکان خود قرار گرفته است.

cortex-M

نکته : خانواده های قدیمی تر از ARM7 منسوخ شده است و دیگر تولید نمی شود. همچنین به علت کارایی و قابلیت های یکسان یا بالاتر پردازنده های Cortex نسبت به سری Classic ، در اکثر پروژه ها از آنها استفاده شده و بر سری کلاسیک ترجیح داده می شوند. بنابراین این سری نیز تقریبا در حال منسوخ شدن است. برای مثال هسته Cortex M3 جایگزین قدرتمندی برای ARM7 می باشد که به علت سرعت پردازش و کارایی بالاتر و نیز مصرف توان پایین تر ترجیح داده می شوند.

در شکل زیر خانواده های جدیدتر پردازنده های ARM که هم اکنون بیشترین استفاده را دارند ، نشان شده است.

ARM Cortex Family

هر یک از خانواده های یاد شده دارای معماری براساس مجموعه دستورالعمل هایی می باشد که با نسخه های یکتا معرفی می شود. این نسخه ها که ARM Architecture Versions نام دارند شامل : ARM V4 ، ARM V5 ، ARM V6 ، ARM V7 و ARM V8 می باشند. هر کدام از این نسخه ها خود بر اساس ویژگی های اضافه شده به دستورالعمل های آن دارای استانداردهای اضافه تری نیز می باشند که در برخی پردازنده ها یک یا چند ویژگی وجود دارد. این ویژگی ها که Instruction Set Architecture یا ISA نام دارند ؛ نظیر Thumb ، Jazelle ، DSP ، NEON و … باعث افزایش کارایی پردازنده می شود. این ویژگی ها و اضافه شدن آن به ورژن های بالاتر معماری ARM را در شکل زیر مشاهده می کنید.

V5_to_V8_Architecture

نکته : نسخه های قبل از 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 در جدول شکل زیر با یکدیگر مقایسه شده اند.

ARM7_CotexM3_Comparision


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

سری های مختلف پردازنده های Cortex با یکدیگر علاوه بر معماری هسته و دستورالعمل از سه نظر دارای تفاوت هستند :

  1. کاربرد ها
  2. مصرف توان
  3. قابلیت ها

از نظر کاربردی هر یک از سه سری پردازنده های Cortex ویژگی های خاص خود را دارند که در شکل زیر تفاوت میان آن ها را مشاهده می کنید. از این میان ، پردازنده های Cortex M در کارهای کوچکتر و با توان مصرفی بسیار پایین مورد استفاده قرار می گیرد. پردازنده های Cortex R در کارهای صنعتی و کنترلی دقیق که نیازمند پردازش سریع و به موقع ( Real-Time ) هستند ، مورد استفاده قرار می گیرد. همچنین پردازنده های Cortex A در کارهای گرافیکی ( نمایشگر ها ) و پردازش های سطح بالا و انجام اپلیکشن های مختلف مورد استفاده قرار می گیرد.

 

Cortex Application

از بین سه سری تنها پردازنده های سری Cortex A است که قابلیت نصب سیستم عامل های مختلف لینوکسی و اندرویدی بر روی آن را دارد. در حالی که در سری M و R تنها میتوان سیستم عامل های RTOS نصب نمود که سرعت پایین تر و حجم کمتری دارند.

در سری Cortex R قابلیت ها و ویژگی های بیشتری نسبت به Cortex M در نظر گرفته شده است که همین مسئله باعث افزایش توان مصرفی این پردازنده های نیز می شود. این سری از پردازنده های کورتکس توانایی های زیادی دارند و عملکرد مطمئن تری در کاربرد های صنعتی و مخابراتی دارند. شکل زیر محدوده این توانایی ها را نشان می دهد.

CortexR_App

با کنار گذاشتن موارد فنی، 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 دارد، در حالی که قدرت پردازشی آن به سه برابر می‌رسد.

arm-cortex-a15

پردازنده ۶۴ بیتی Cortex-A72 جانشین Cortex-A57 است که ۳٫۵ برابر از نسل Cortex-A15 سریعتر می باشد و همچنین همان مقدار از انرژی را مصرف می کند. Cortex-A72 از ۷۵ درصد توان کمتر نسبت به دستگاههای مبتنی بر Cortex-A15 تحت میزان کار مشابه استفاده خواهد کرد.

Cortex A72


شرکت های سازنده تراشه های 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 و همچنین معماری یکی از هسته‌های طراحی شده توسط این شرکت بهره برده‌اند.

Apple A6

اما شرکت‌ها می‌توانند گواهی استفاده از معماری ARM را تهیه کرده و سپس بر اساس آن هسته سفارشی مورد نظرشان را طراحی کنند یعنی به جای اینکه هسته CPU را براساس Cortex-A9 یا Cortex-A15 یا دیگر هسته‌های ARM بسازنند، خودشان براساس معماری یکی از خانواده‌های ARM، هسته خاص خود را طراحی کنند. به عنوان مثال سیستم-روی-یک-چیپ A6 اپل، X-Gene ،Krait کوالکام، StrongARM شرکت DEC ،XScale شرکت Marvell اینتل یا Project Denver شرکت انویدیا اینگونه هستند و اگر چه بخش CPU از سیستم-روی-یک-چیپ‌ آنها براساس معماری ARM طراحی شده‌اند، اما طراحی هسته‌ها با آنچه ARM پیشنهاد کرده متفاوت هستند.

 


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

اما شرکت هایی که از هسته های پردازشی ARM در ساخت میکروکنترلرهای خود بهره می برند عبارتند از :

  1. شرکت Atmel : این شرکت که همان شرکت معروف سازنده میکروکنترلرهای AVR است ، میکروکنترلرهای ARM خود را در  خانواده های متعدد ارائه می کند به طوری که میکروکنترلرهای با هسته ARM7TDMI در خانواده AT91SAM7 ، میکروکنترلرهای ARM9 در خانواده AT91SAM9 ، میکروکنترلرهای Cortex M3 در خانواده AT91SAM3 ، میکروکنترلرهای Cortex A5 در خانواده SAMA5D3 قرار می گیرند. شکل زیر میکروکنترلرهای سری جدید این شرکت را نشان می دهد.ARM_Roadmap_Web_Lg_870x560
  2. شرکت NXP : یا همان شرکت فیلیپس می باشد که از پردازنده های ARM7TDMI ، Cortex M0/M1/M3/M4 و ARM9 در ساخت میکروکنترلرهای خانواده LPC استفاده نموده است. خانواده LPC خود به سری های LPC1000 ، LPC2000 ، LPC3000 و LPC4000 تقسیم می شود که هر یک ویژگی های خاص خود را دارند. NXP ARM
  3. شرکت ST Micro : این شرکت نیز از هسته های ARM7 ، ARM9 و Cortex M0/M3/M4/M7 در ساخت میکروکنترلرهای خود استفاده می کند. شکل زیر انواع خانواده های موجود این شرکت را نشان می دهد.ST Microمیکروکنترلرهای STM32 این شرکت از قابلیت های زیادی پشتیبانی می کند که جزئیات آن در شکل زیر آورده شده است. stm32_sc1169
  4. شرکت Texas Instrument : این شرکت از پردازنده های Cortex M3 ، Cortex A8 و ARM9 در ساخت میکروکنترلرهای خانواده Stellaris ، Sitara ، DaVinci و OMAP استفاده نموده است. شکل زیر انواع میکروکنترلرهای ARM این شرکت را نشان می دهد.

Texas Instrument MCU


 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 روی تصویر زیر کلیک کنید.

next-image


در صورتی که این مطلب مورد پسندتان بود لایک و اشتراک گذاری فراموش نشود

دیدگاه (11)

  • mehrzad پاسخ

    لطفا بخش های بعدی رو زودتر بزارید

    1394-08-12 در 06:37
    • محمد حسین پاسخ

      روند آموزش های ARM از هفته آینده سرعت خواهد گرفت

      1394-08-12 در 08:23
  • basira پاسخ

    سلام. ممنون از آموزش های خوبتون.
    میشه یه مقدار بیشتر پروژه بذارید؟ آدم تا کار عملی نکنه یاد نمیگیره.
    بازم ممنون. خدا خیرتون بده

    1394-09-22 در 06:40
    • محمد حسین پاسخ

      سلام دوست عزیز…خواهش می کنم…بله حتما…
      بهترین آموزش ها و پروژه های AVR که قرار داده شده است …
      آموزش و پروژه های ARM هم در حال تهیه است …
      پروژه های عملی الکترونیک هم ب امید خدا کامل خواهد شد …

      1394-09-22 در 20:06
  • porsan پاسخ

    با سلام و عر ض خداقوت.
    دستتون درد نکنه.عالیه.

    1395-01-11 در 04:34
    • محمد حسین پاسخ

      سلام سپاسگذارم دوست عزیز

      1395-01-13 در 06:02
  • farhad پاسخ

    سلام جناب مهندس
    با تشکر از اینکه این همه مطالب مفید در وبسایتتون قرار میدید در جهته آموزش به علاقمندان/
    اگر محبت کنید و سوال من رو جواب بدیدسپاسگزار میشم
    اول اینکه زمینه کاری من الکترونیک هستش ولی به تازگی قصد دارم وارد دنیای بر نامه نویسی بشم و از جهت زبان برنامه نویسی میدونم که باید سی و سی پلاس پلاس رو باید فرا بگیرم ولی مشکل من انتخاب یکی از این سه ( arm-avr-pic) برای بارنامه نویسی هست =با توجه به آخرین و پیشرفته ترین نسل میکرو کنترلرها بنده نظرم به سمتarm هستش /نظر شما در این مورد چی هست؟ و اینکه اگر من در جهت یادگیری برنامه نویسی آموزش arm رو فرا بگیرم آیا توانایی نوشتن برنامه برای نسلهای پیشین میکروکنترلرها یعنی pic _avr رو خو اهم داشت یا خیر ؟
    کلن پیشنهاد شما چی هستش _البته من خارج از ایران بسر میبرم بدین جهت عرض کردم که از لحاظ محبوبیت نوع میکرو در ایران به من پیشنهاد ندید _ سپاسگزارم

    1395-01-25 در 00:15
    • محمد حسین پاسخ

      سلام دوست عزیز ممنونم از لطفتون
      هر سه این میکروکنترلرها زبان برنامه نویسی یکسانی دارند در نتیجه با یادگیری یکی از آنها میتوان برای بقیه نیز با کمی یادگیری برنامه نوشت پیشنهاد می کنم از ساده به پیشرفته یادگیری را شروع کنید. اگر حیطه کاری الکترونیک مورد نظرتون هست از avr شروع کنید و اگر حیطه کاری قدرت مورد نظر است از pic سپس میتوانید arm را که پیشرفته تر از بقیه است یاد بگیرید موفق باشید

      1395-01-28 در 18:40
  • Shadowsh123 پاسخ

    سلام
    در مورد برنامه نویسی اتصال پورت usb lpc2148 به پورت usb دستگاه های دیگر اموزش دارید?
    با تشکر

    1396-11-15 در 17:30
    • ادمین الکترو ولت پاسخ

      سلام دوست عزیز سری LPC21XX پورت USB ندارند و برای کار شما میتونید از سری های LPC176X استفاده نمایید

      1396-11-16 در 00:10
  • سارا پاسخ

    نفوق العاده بود ممنون

    1397-04-05 در 15:58

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بازگشت به آموزشگاه