معماری ARM چیست؟ چه تفاوتی با x86 اینتل دارد؟

دوشنبه ۴ دی ۱۳۹۱ - ۲۳:۲۶
مطالعه 16 دقیقه
ARM به چه معناست؟ معماری ARM چیست؟ چه تفاوتی با x86 اینتل می‌‌کند؟
تبلیغات

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

در این مقاله به معرفی ARM، تاریخچه آن و بررسی کلی نسل‌های مختلف CPUهای ARM می‌پردازیم اما در آینده نسل‌های پردازنده‌های ARM را با یکدیگر مقایسه نموده و توضیحات کاملی در مورد هر نسل ارائه خواهیم کرد.

تاریخچه ARM

ARM نوعی از معماری پردازنده‌های کامپیوتری است که بر طبق طراحی RISC CPU و توسط کمپانی بریتانیایی ARM Holding طراحی شده است. معماری ARM که دستورالعمل‌های 32 بیتی را پردازش می‌کند از دهه 1980 تا به امروز در حال توسعه است.

ARM مخفف Advanced RISC Machine است و از آنجایی که این معماری براساس طراحی RISC بنا شده، هسته اصلی CPU نیاز به 35 هزار ترانزیستور دارد این در حالی است که پردازنده‌های معمولی رایج x86 که براساس CISC طراحی شده‌اند حداقل نیاز به میلیون‌ها ترانزیستور دارند. مهمترین دلیل مصرف بسیار پایین انرژی در پردازنده‌های مبتنی بر ARM که باعث استفاده گسترده آنها در ابزارهای پرتابل مانند تلفن هوشمند یا تبلت شده نیز همین موضوع است.

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

در سال 2011 مشتریان ARM توانستند 7.9 میلیارد ابزار مبتنی بر این معماری را وارد بازار کنند. شاید تصور می‌کنید که پردازنده‌های مبتنی بر ARM تنها در تبلت و تلفن‌های هوشمند بکار گرفته می‌شوند، اما جالب است بدانید که در همین سال بیش از 95 درصد تلفن‌های هوشمند دنیا، 90 درصد دیسک‌های سخت (HDD)، حدود 40 درصد تلویزیون‌های دیجیتال و ست‌تاپ‌باکس‌ها، 15 درصد میکروکنترلرها و 20 درصد کامپیوترهای موبایل مجهز به پردازنده‌های مبتنی بر معماری ARM بوده‌اند. بدون شک این آمار در سال 2012 رشد فوق‌العاده چشم گیری را تجربه کرده است، چون بازار تلفن‌های هوشمند و تبلت‌های در سال جاری پیشرفت قابل ملاحظه‌ای داشته‌اند.

تا اینجای کار معماری ARM تنها برروی پلتفرم 32 بیتی با عرض حافظه 1 بایت کار می‌کرد. اما با معرفی ARMv8 این معماری پشتیبانی از دستورات 64 بیتی را نیز آغاز کرد که البته هنوز در سیستم-روی-یک-چیپ‌ها بکار گرفته نشده است. در سال 2012 مایکروسافت نیز نسخه ویندوز سازگار با معماری ARM را به همراه تبلت سرفیس RT معرفی کرد. AMD نیز اعلام نموده که قصد دارد در سال 2014 سرورهای مبتنی بر معماری 64 بیتی ARM را روانه بازار کند.

همانطور که پیش‌تر اشاره کردیم، ARM گواهی استفاده از معماری خود را به شرکت‌های دیگر می‌دهد، کمپانی‌هایی که در حال حاضر گواهی استفاده از ARM را دارند عبارتند از: AMD, آلکاتل, اپل, AppliedMicro, Atmel, Broadcom, Cirrus Logic, CSR plc, Digital Equipment Corporation, Ember, Energy Micro, Freescale, فوجیتسو, Fuzhou Rockchip, هواوی, اینتل توسط شرکت‌های زیر شاخه, ال جی, Marvell Technology Group, Microsemi, مایکروسافت, NEC, نینتندو, Nuvoton, انویدیا, NXP (formerly Philips Semiconductor), Oki, ON Semiconductor, پاناسونیک, کوالکام, Renesas, Research In Motion, سامسونگ, شارپ, Silicon Labs, سونی, اریکسون, STMicroelectronics, Symbios Logic, Texas Instruments, توشیبا, یاماها  و ZiiLABS

RISC و CISC یا ARM در مقابل x86

RISC که مخفف Reduced instruction Set Computing یا مجموعه دستورات ساده شده است در واقع نوعی از طراحی CPU است که پایه و اساس آن، ساده سازی دستورات است که منجر به بازده بالا و سرعت بخشیدن به اجرای دستورات می‌شود. پردازده‌ای که براساس این طراحی ساخته می‌شود را RISC (بخوانید ریسک) می‌نامند. مهمترین و معروفترین معماری که براساس RISC طراحی شده، ARM است. درست نقطه مقابل ریسک، طراحی دیگری با نام CISC وجود دارد که مخفف Complex Instruction Set Computing یا مجموعه دستورات پیچیده است که معماری x86 اینتل براساس آن طراحی شده و پردازنده کامپیوترهای رومیزی و لپ تاپ‌ها و بسیاری از ابزارهای دیگر از آن بهره می‌برند.

ایده اصلی RISC اولین بار توسط جان کوکی از IBM و در سال 1974 شکل گرفت، نظریه او به این موضوع اشاره داشت که یک کامپیوتر تنها از 20 درصد از دستورات نیاز دارد و 80 درصد دیگر، دستورات غیرضروری هستند. پردازنده‌های ساخته شده براساس این طراحی از دستورات کمی پشتیبانی می‌کنند به این ترتیب به ترانزیستور کمتری نیز نیاز دارند و ساخت آنها نیز کم هزینه است. با کاهش تعداد ترانزیستورها و اجرای دستورات کمتر، پردازنده در زمان کمتری دستورات را پردازش می‌کند. کمی بعد اصطلاح RISC توسط یک استاد دانشگاه کالیفورنیا به نام دیوید پترسون ایجاد شد.

هر دو طراحی RISC و CISC به مراتب در انواع و اقسام ابزارها بکار گرفته می‌شوند، اما مفهوم کلی RISC در واقع سیستمی است که در آن به پردازش دستورات کوچک و به شدت بهینه شده پرداخته می‌شود، درست برخلاف CISC که در آن دستورات پیچیده ارسال می‌شوند. یکی از تفاوت‌های عمده بین RISC و CISC نیز در نحوه دسترسی به حافظه و ذخیره و اجرای اطلاعات برروی آن است. در ریسک دسترسی به حافظه تنها از طریق دستورالعمل‌های خاصلی قابل انجام است و به عنوان مثال نمی‌توان از بخشی از دستور add به حافظه دسترسی داشت.

علاوه بر ARM شرکت‌های بسیار دیگری از جمله Intel i860, AMD 29k, ARC و غیره از طراحی RISC برای ساخت پردازنده استفاده می‌کنند، اما به لطف گسترش تلفن و تبلت‌ها، معماری ARM به عنوان برجسته‌ترین معماری مبتنی بر RISC شناخته می‌شود.

CISC

در سیسک اوضاع دقیقا برعکس ریسک است و پردازنده قادر به پردازش دستورات پیچیده است به همین دلیل نیاز به تعداد بیشتر ترانزیستور و همچنین طراحی پیچیده‌تر و پردازنده‌های گران قیمت‌تر دارد. ایده اصلی پشت این طراحی این است که برنامه نویسان ساده‌تر بتوانند نرم افزارهای خود را تولید کنند و دستورات را ساده‌تر به CPU ارجاع دهند. به لطف پشتیبانی اینتل و تولیدکنندگان نرم افزار، CISC به شدت محبوب شد و تمام کامپیوترها از پردازنده مبتنی بر این طراحی بهره بردند.

برخی تصور می‌کنند که ریسک قادر به اجرای دستورات زیاد نیست اما در حقیقت ریسک به اندازه سیسک می‌تواند دستورات مختلف را اجرا کند اما مهمترین تفاوت این دو در این است که در RISC تمام دستورات با یک فرمت، دقیقا یک فرمت صادر می‌شوند و پردازش تمام دستورات یک زمان مشخص طول می‌کشد، معمولا در ریسک در هر سیکل، پردازنده یک دستور را اجرا می‌کند.

اما در CISC مجموعه‌ای از دستورات بصورت فشرده و با آدرس دهی مختلف به یکباره پردازش می‌شوند، مثل اعداد اعشاری یا تقسیم که در طراحی RISC وجود ندارند. از آنجایی که دستورات در RISC ساده‌تر هستند پس سریعتر اجرا می‌شوند و نیاز به ترانزیستور کمتری دارند، ترانزیستور کمتر هم به معنی دمای کمتر، مصرف پایین‌تر و فضای کمتر است که آن را برای ابزارهای موبایل مناسب می‌کند.

معماری پردازنده‌های مبتنی بر طراحی RISC طی‌ سال‌های گذشته پیشرفت چشم‌گیری داشته و اجرای دستورات پیچیده را نیز میسر کرده است و تولیدکنندگان نرم افزاری نیز به سمت ساخت نرم‌افزارهای مبتنی بر این معماری گرایش پیدا کرده‌اند. لازم است بدانید که کامپیوترهای اولیه مک نیز از پردازنده مبتنی بر RISC بهره می‌بردند.

اما در واقع پردازنده‌های CISC بسیار سریعتر و پرقدرت‌تر از RISCها هستند و قادر به پردازش امور سنگین می‌باشند اما در عوض گران‌قیمت‌تر، پرمصرف‌تر بوده و دمای بیشتری نیز تولید می‌کنند. در CISC تمرکز برروی سخت‌افزار است و در RISC برروی نرم‌افزار، در CISC دستورات بصورت پیچیده به پردازنده ارسال می‌شوند ولی در RISC نرم‌افزار دستورات را ساده‌ کرده و به عنوان مثال یک عملیات پیچیده را در قالب چندین دستور ساده به پردازنده ارسال می‌کند و پردازنده دستورات ساده را به سرعت پردازش نموده و نتیجه را باز می‌گرداند. پس کدهای نرم‌افزارهای سازگار با RISC طولانی تر ولی کدهای مربوط به نرم‌افزارهای CISC کوتاه‌تر و پیچیده‌تر هستند. البته این بدین معنا نیست که مثلا اگر قرار است برای اندروید یا iOS برنامه بنویسید باید چند هزار خط بیشتر از معادل کامپیوتر ویندوزی آن کد نویسی کنید، در واقع کامپایلرها کدها را به دستورات کوچک زیاد تبدیل می‌کنند و برنامه نویس به سختی متوجه نوع پردازش دستورات می‌شود.

اگر بخواهیم در مورد این دو طراحی صحبت کنیم بحث پیچیده و کسل کننده خواهد شد پس به همین جا بسنده می‌کنیم اما اگر تمایل دارید تا در مورد این طراحی‌ها بیشتر بدانید به این دو لینک مراجعه کنید: CISC و RISC

سیستم-روی-یک-چیپ‌ها و معماری ARM

چندین نوع مختلف از معماری برای پردازنده‌های ARM وجود دارد که از آن جمله می‌توان به ARM V2 ،ARMv3 Arm v7 و ...اشاره کرد. کمپانی‌ها برای استفاده از هر کدام از این طراحی‌ها باید گواهی مربوط به آن را از ARM Holder دریافت کنند.  کمپانی‌ها از این معماری در ساخت پردازنده های مورد نظر خود بهره برده و در نهایت یا یکپارچه سازی آن  با واحد پردازش گرفیک (GPU)، حافظه رم و قسمت کنترلر باند رادیویی (در تلفن‌های هوشمند) سیستم -روی-یک-چیپ خود را می سازند .

mobile phone chip soc

سیستم-روی-یک-چیپ (System on a Chip) که آن را به اختصار SoC می‌نامند در واقع یک تراشه است که در آن پردازنده اصلی (CPU)، پردازنده گرافیک (GPU)، حافظه رم، کنترلرهای ورودی و خروجی و بعضا کنترلر باند رادیویی قرار دارند. پس لازم است بدانید که کل SoC براساس معماری ARM تولید نمی‌شود و تنها بخش CPU آن بر مبنای معماری ARM طراحی و تولید می‌گردد. پس این باور که فلان SoC براساس معماری ARM ساخته شده، اشتباه است و بخش پردازنده اصلی اکثر SoCها براساس یکی از طراح‌های معماری ARM ساخته می‌شوند.

از جمله سیستم-روی-یک-چیپ‌هایی که هسته اصلی آن‌ها براساس معماری ARM طراحی شده‌اند می‌توان به 3 نسل اول تگرا انویدیا، 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 Holding خود نسبت به طراحی هسته براساس معماری ARM اقدام می‌کند و هسته‌های متفاوتی را براساس نسل‌های مختلف این معماری عرضه کرده است، جدیدترین معماری این شرکت ARM v8 است که از دستورات 64 بیتی پشتیبانی می‌کند و دو هسته Cortex A53 و Cortex A57 نیز براساس همین معماری طراحی و پیشنهاد شده‌اند. انتظار می‌رودی SoCهای سال آینده از این معماری بهره مند شوند، در جدول زیر کل هسته‌های طراحی شده توسط 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

4 MIPS @ 8 MHz

0.33

DMIPS

/MHz

ARMv2a

ARM250

Integrated MEMC (MMU), Graphics and IO processor. ARMv2a added the SWP and SWPB (swap) instructions.

None, MEMC1a

7 MIPS @ 12 MHz

ARM3

ARMv2a

ARM3

First integrated memory cache.

4 KB unified

12 MIPS @ 25 MHz

0.50 DMIPS/MHz

ARM6

ARMv3

ARM60

ARMv3 first to support 32-bit memory address space (previously 26-bit)

None

10 MIPS @ 12 MHz

ARM600

As ARM60, cache and coprocessor bus (for FPA10 floating-point unit).

4 KB unified

28 MIPS @ 33 MHz

ARM610

As ARM60, cache, no coprocessor bus.

4 KB unified

17 MIPS @ 20 MHz

0.65 DMIPS/MHz

ARM7

ARMv3

ARM700

 

8 KB unified

40 MHz

ARM710

As ARM700, no coprocessor bus.

8 KB unified

40 MHz

ARM710a

As ARM710

8 KB unified

40 MHz

0.68 DMIPS/MHz

ARM7TDMI

ARMv4T

ARM7TDMI(-S)

3-stage pipeline, Thumb

none

15 MIPS @ 16.8 MHz

63 DMIPS @ 70 MHz

ARM710T

As ARM7TDMI, cache

8 KB unified, MMU

36 MIPS @ 40 MHz

ARM720T

As ARM7TDMI, cache

8 KB unified, MMU with Fast Context Switch Extension

60 MIPS @ 59.8 MHz

ARM740T

As ARM7TDMI, cache

MPU

 

ARM7EJ

ARMv5TEJ

ARM7EJ-S

5-stage pipeline, Thumb, Jazelle DBX, Enhanced DSP instructions

none

 

ARM8

ARMv4

ARM810

[4]

[5]

5-stage pipeline, static branch prediction, double-bandwidth memory

8 KB unified, MMU

84 MIPS @ 72 MHz

1.16 DMIPS/MHz

ARM9TDMI

ARMv4T

ARM9TDMI

5-stage pipeline, Thumb

none

 

ARM920T

As ARM9TDMI, cache

16 KB/16 KB, MMU with FCSE (Fast Context Switch Extension)

[6]

200 MIPS @ 180 MHz

ARM922T

As ARM9TDMI, caches

8 KB/8 KB, MMU

 

ARM940T

As ARM9TDMI, caches

4 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

220 MIPS @ 200 MHz

ARMv5TE

ARM996HS

Clockless processor, as ARM966E-S

no caches, TCMs, MPU

 

ARM10E

ARMv5TE

ARM1020E

6-stage pipeline, Thumb, Enhanced DSP instructions, (VFP)

32 KB/32 KB, MMU

 

ARM1022E

As ARM1020E

16 KB/16 KB, MMU

 

ARMv5TEJ

ARM1026EJ-S

Thumb, Jazelle DBX, Enhanced DSP instructions, (VFP)

variable, MMU or MPU

 

ARM11

ARMv6

ARM1136J(F)-S

[7]

8-stage pipeline, SIMD, Thumb, Jazelle DBX, (VFP), Enhanced DSP instructions

variable, MMU

740 @ 532–665 MHz (i.MX31 SoC), 400–528 MHz

ARMv6T2

ARM1156T2(F)-S

8-stage pipeline, SIMD, Thumb-2, (VFP), Enhanced DSP instructions

variable, MPU

 

ARMv6Z

ARM1176JZ(F)-S

As ARM1136EJ(F)-S

variable, MMU + TrustZone

965 DMIPS @ 772 MHz, up to 2 600 DMIPS with four processors

[8]

ARMv6K

ARM11 MPCore

As ARM1136EJ(F)-S, 1–4 core SMP

variable, MMU

 

SecureCore

ARMv6-M

SC000

 

 

0.9 DMIPS/MHz

ARMv4T

SC100

 

 

 

ARMv7-M

SC300

 

 

1.25 DMIPS/MHz

Cortex-M

ARMv6-M

Cortex-M0

[9]

Microcontroller profile, Thumb + Thumb-2 subset (BL, MRS, MSR, ISB, DSB, DMB),

[10]

hardware multiply instruction (optional small), optional system timer, optional bit-banding memory

No cache, No TCM, No MPU

0.84 DMIPS/MHz

Cortex-M0+

[11]

Microcontroller profile, Thumb + Thumb-2 subset (BL, MRS, MSR, ISB, DSB, DMB),

[10]

hardware multiply instruction (optional small), optional system timer, optional bit-banding memory

No cache, No TCM, optional MPU with 8 regions

0.93 DMIPS/MHz

Cortex-M1

[12]

Microcontroller profile, Thumb + Thumb-2 subset (BL, MRS, MSR, ISB, DSB, DMB),

[10]

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

136 DMIPS @ 170 MHz,

[13]

(0.8 DMIPS/MHz FPGA-dependent)

[14]

ARMv7-M

Cortex-M3

[15]

Microcontroller profile, Thumb / Thumb-2, hardware multiply and divide instructions, optional bit-banding memory

No cache, No TCM, optional MPU with 8 regions

1.25 DMIPS/MHz

ARMv7E-M

Cortex-M4

[16]

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

1.25 DMIPS/MHz

Cortex-R

ARMv7-R

Cortex-R4

[17]

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

0-64 KB / 0-64 KB, 0-2 of 0-8 MB TCM, opt MPU with 8/12 regions

 

Cortex-R5 (MPCore)

[18]

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)

[19]

0-64 KB / 0-64 KB, 0-2 of 0-8 MB TCM, opt MPU with 12/16 regions

 

Cortex-R7 (MPCore)

[20]

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]

0-64 KB / 0-64 KB, ? of 0-128 KB TCM, opt MPU with 16 regions

 

Cortex-A

ARMv7-A

Cortex-A5

[21]

Application profile, ARM / Thumb / Thumb-2 / DSP / SIMD / Optional VFPv4-D16 FPU / Optional NEON / Jazelle RCT and DBX, 1–4 cores / optional MPCore, snoop control unit (SCU), generic interrupt controller (GIC), accelerator coherence port (ACP)

4-64 KB / 4-64 KB L1, MMU + TrustZone

1.57 DMIPS / MHz per core

Cortex-A7 MPCore

[22]

Application profile, ARM / Thumb / Thumb-2 / DSP / VFPv4-D16 FPU / NEON / Jazelle RCT and DBX / Hardware virtualization, in-order execution, superscalar, 1–4 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

[23]

32 KB / 32 KB L1, 0-4 MB L2, L1 & L2 have Parity & ECC, MMU + TrustZone

1.9 DMIPS / MHz per core

Cortex-A8

[24]

Application profile, ARM / Thumb / Thumb-2 / VFPv3 FPU / Optional NEON / Jazelle RCT and DAC, 13-stage superscalar pipeline

16-32 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

[25]

Application profile, ARM / Thumb / Thumb-2 / DSP / Optional VFPv3 FPU / Optional NEON / Jazelle RCT and DBX, out-of-order speculative issue superscalar, 1–4 SMP cores, snoop control unit (SCU), generic interrupt controller (GIC), accelerator coherence port (ACP)

16-64 KB / 16-64 KB L1, 0-8 MB L2 opt Parity, MMU + TrustZone

2.5 DMIPS/MHz per core, 10,000 DMIPS @ 2 GHz on Performance Optimized TSMC

40G

(dual core)

Cortex-A15 MPCore

[26]

Application profile, ARM / Thumb / Thumb-2 / DSP / VFPv4 FPU / NEON / Jazelle RCT / Hardware virtualization, out-of-order speculative issue superscalar, 1–4 SMP cores, Large Physical Address Extensions (LPAE), snoop control unit (SCU), generic interrupt controller (GIC), ACP, 15-24 stage pipeline

[23]

32 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).

[27]

ARMv8-A

Cortex-A53

[28]

Application profile, AArch32 and AArch64, 1-4 SMP cores, Trustzone, NEON advanced SIMD, VFPv4, hardware virtualization, dual issue, in-order pipeline

8~64 KB/8~64 KB L1 per core, 128 KB~2 MB L2 shared, 40-bit physical addresses

2.3 DMIPS/MHz

Cortex-A57

[29]

Application profile, AArch32 and AArch64, 1-4 SMP cores, Trustzone, NEON advanced SIMD, VFPv4, hardware virtualization, multi-issue, deeply out-of-order pipeline

48 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 Holding را قبول ندارند و خود نسبت به طراحی هسته سفارشی بر مبنای معماری ARM اقدام می‌کنند. در جدول زیر هسته‌های طراحی شده توسط شرکت‌های دیگر که البته بر مبنای معماری یکی از خانوده‌های ARM هستند را مشاهده می‌کنید:

Family

ARM Architecture

Core

Feature

Cache (I/D), MMU

Typical MIPS @ MHz

StrongARM

ARMv4

SA-1

5-stage pipeline

16 KB/8–16 KB, MMU

203–206 MHz

1.0 DMIPS/MHz

XScale

ARMv5TE

XScale

7-stage pipeline, Thumb, Enhanced DSP instructions

32 KB/32 KB, MMU

133–400 MHz

Bulverde

Wireless MMX, Wireless SpeedStep added

32 KB/32 KB, MMU

312–624 MHz

Monahans

Wireless MMX2 added

32 KB/32 KB (L1), optional L2 cache up to 512 KB, MMU

up to 1.25 GHz

Snapdragon

ARMv7-A

Scorpion

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)

256 KB L2 per core

2.1 DMIPS / MHz per core

Krait 

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)

4 KB / 4 KB L0, 16 KB / 16 KB L1, 512 KB L2 per core

3.3 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

3.5 DMIPS / MHz Per Core

Family

ARM Architecture

Core

Feature

Cache (I/D), MMU

Typical MIPS @ MHz

ARMv8 و پلتفرم 64 بیتی

در سال 2011 نسل جدید ARMv8 رسما معرفی شد و پشتیبانی از معماری 64 بیتی به آن اضافه گردید. در ARMv8 دستورات 32 بیتی برروی سیستم‌عامل 64 بیتی قابل اجرا هستند و در آن سیستم‌عامل‌های 32 بیتی نیز از طریق مجازی سازی 64 بیتی اجرا می‌شوند. شرکت‌های AMD, Micro, Brodom, Calxeda, Hisilicon, Samsung و ST Microelectronics گواهی استفاده از معماری ARMv8 را دریافت کرده‌اند و اعلام نموده‌اند SoCهای مبتنی بر این معماری را تولید خواهند کرد. خود ARM نیز دو طراحی Cortex-A53 و Cortex-A57 را در 30 اکتبر 2012 معرفی کرد که هر دو مبتنی بر معماری ARMv8 هستند.

لینوکس که هسته اندروید نیز است به تازگی هسته اصلی سیستم‌عامل (Kernel) خود را بروز کرده تا از ARMv8 پشتیبانی کند. انتظار می‌رود در سال 2013 بسیاری از سیستم‌-روی-یک-چیپ‌های دنیا از معماری 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 و 7 از ویندوز CE که در ابزارهای صنعتی و PDAها استفاده می‌شود، پشتیبانی می‌کند. ویندوز RT و ویندوز فون نیز از معماری ARMv7 پشتیبانی می‌کنند.

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

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

ARM در سال 2006 و در گزارش سالانه خود اعلام کرد که 164.1 میلیون دلار از بابت حق امتیاز یا حق اختراع، درآمد داشته که این مبلغ از بابت  فروش گواهی استفاده از معماری این شرکت در 2.45 میلیارد دستگاه مبتنی بر ARM بدست آمده است. این یعنی ARM Holding بابت هر گواهی 0.067 دلار درآمد کسب نموده، اما این رقم میانگین است و براساس نسل‌های مختلف و نوع هسته‌ها متفاوت خواهد بود. مثلا هسته‌های قدیمی ارزان‌تر و معماری جدید گران‌تر است.

اما در سال 2006 این شرکت از بابت گواهی استفاده از طراحی هسته پردازنده، نزدیک به 119.5 میلیون دلار درآمد بدست آورده است. در آن سال 65 پردازنده براساس معماری هسته های ARM ساخته شده بودند که به این ترتیب بابت هر گواهی پردازنده مبلغ 1.84 میلیون دلار درآمد کسب کرده است. این عدد نیز بصورت میانگین می‌باشد و براساس نوع و نسل هسته‌ها متفاوت خواهد بود.

در واقع شرکت ARM Holding از معماری ARM دو نوع درآمد دارد یکی بابت استفاده از معماری این شرکت در ابزارهای مختلف که بابت هر تلفن یا تبلت یا هر ابزار دیگری مبلغی بدست می‌آورد و دیگری بابت هر پردازنده مبتنی بر معماری هسته‌های ARM نیز یک رقم نسبتا سنگین حدود 2 میلیون دلار دریافت می‌کند. در سال 2006 نزدیک به 60 درصد درآمد ARM از بابت حق امتیاز و 40 درصد بابت گواهی ساخت پردازنده براساس معماری ARM بوده است.

تبلیغات
داغ‌ترین مطالب روز

نظرات

تبلیغات