- مقدمه
- معماری پردازنده چیست؟
- RISC، CISC و تأثیر آن بر توسعه ساخت پردازندهها
- CISC
- RISC
- تاریخچه و توسعه معماریهای ARM و X86
- 16 بیتی، 32 بیتی یا 64 بودن معماری ARM و X86
- معماریهای ۶۴ بیتی مدرن CPU
- پردازش 64 بیتی در X86
- پردازش 64 بیتی در ARM
- پیروزی الگوی محاسبهی ناهمگن ARM در موبایل
- محاسبات ناهمگن در ARM
- Big.LITTLE بهترین راهکار مدیریت توان
- محاسبات ناهمگن و ترکیب هسته غیر همتراز در X86
- هستهها و مجموعه دستورالعملهای سفارشی Arm
- تفاوت ARM و X86 در سازگاری نرمافزاری
- جمعبندی
- پاسخ به سوالات پرتکرار
- کدام معماری بهتر است ARM یا X86؟
- تفاوت اصلی بین ARM و X86 چیست؟
بارها در مورد تفاوتها و شباهتهای معماری ARM و X86 صحبت شده ولی اگر با نگاهی جدید در سال 2024 به پردازندههای ساخته شده توسط این فناوریها نگاه کنیم باید گفت که این روزها به مرور در حال کمرنگتر شدن مرزهای بین پردازنده X86 و ARM هستیم. در این مطلب قصد داریم با بیانی ساده، شباهت و تفاوت ARM و X86 را به شما توضیح دهیم. با ما همراه باشید.
فهرست مطالب این مقاله:
– مقدمه
– معماری پردازنده چیست؟
– تاریخچه و توسعه معماریهای ARM و X86
– پیروزی الگوی محاسبهی ناهمگن ARM در موبایل
– هستهها و مجموعه دستورالعملهای سفارشی Arm
– تفاوت ARM و X86 در سازگاری نرمافزاری
– جمعبندی
– پاسخ به سوالات پرتکرار
مقدمه
ARM و X86 دو نمونه از معماریهای RISC و CISC هستند که نشاندهنده تفاوت در تعداد و پیچیدگی دستورالعملهای پردازنده هستند. ARM مخفف Advanced RISC Machine است که یک معماری RISC با دستورالعملهای ساده و کمتر است که به انجام عملیاتهای پایهای محدود میشوند. X86 نام یک خانواده از معماریهای CISC است که دستورالعملهای پیچیده و زیادی را شامل میشوند که قادر به انجام عملیاتهای پیشرفتهتر هستند.
معماریهای ARM و X86 در صنعت کامپیوتر نقش مهم و تاثیرگذاری دارند و در دستگاههای مختلفی مانند تلفنهای هوشمند، تبلتها، لپتاپها، سرورها و غیره استفاده میشوند. اما تفاوت ARM و X86 چیست و چه شباهتهایی بین این دو معماری وجود دارد؟ چه کاربردهایی برای هر کدام از آنها مناسب است و آیا میتوان برای یک کاربرد هم از پردازندههای X86 استفاده کرد و هم از ARM؟ و چه آیندهای برای آنها پیشبینی میشود؟ این موارد سوالات اصلی هستند که در این مقاله به آنها پاسخ داده میشود.
معماری پردازنده چیست؟
معماری پردازنده یا CPU Architecture نشاندهنده اصول و قواعدی است که تعیین میکنند، چگونه پردازنده با اجزای دیگر دستگاه الکترونیکی ارتباط برقرار کند، چگونه دستورالعملها را بخواند، تفسیر و اجرا کند و چگونه منابع مانند حافظه، رجیسترها و کش را مدیریت کند. معماری پردازنده میتواند بر اساس معیارهای مختلفی مانند تعداد بیتهای پردازنده، تعداد هستهها، تعداد دستورالعملها، نحوه اجرای دستورالعملها و غیره دستهبندی شود.
همانطور که در مقدمه این مطلب گفتیم، یکی از مهمترین معیارهای معماری پردازنده، تعداد و پیچیدگی دستورالعملهای پردازنده است که بر اساس آن معماریهای RISC و CISC تعریف میشوند. RISC مخفف Reduced Instruction Set Computer است که به معماریهایی گفته میشود که دستورالعملهای ساده و کمتری دارند و هر دستورالعمل تنها یک عملیات پایهای را انجام میدهد. CISC مخفف Complex Instruction Set Computer است که به معماریهایی گفته میشود که دستورالعملهای پیچیده و زیادی را دارند و هر دستورالعمل میتواند چندین عملیات پیشرفتهتر را انجام دهد.
در همین رابطه بخوانید:
معماریهای RISC و CISC در مقابل هم قرار میگیرند و هر کدام مزایا و معایب خود را دارند. معماریهای RISC معمولاً سریعتر، کممصرفتر و ارزانتر هستند ولی نیاز به برنامهنویسی دقیقتر و حافظه بیشتری دارند. معماریهای CISC معمولاً قدرتمندتر، پیچیدهتر و گرانتر هستند ولی نیاز به برنامهنویسی سادهتر و حافظه کمتری دارند.
معماریهای ARM و X86 دو نمونه از معماریهای RISC و CISC هستند که در ادامه مقاله به بررسی تفاوت ARM و X86 خواهیم پرداخت.
RISC، CISC و تأثیر آن بر توسعه ساخت پردازندهها
یک بحث قدیمی بین برنامهنویسان اولیه این است که چه چیزی منجر به انحراف بین دو فلسفهی اصلی در علوم کامپیوتر شد: سادهسازی کار برنامهنویس، یا سادهسازی کار میکروپروسسور. برای انجام هر کار مفیدی با یک کامپیوتر، سیستمعامل و برنامههایی که اجرا میکند باید با واحد پردازش مرکزی (CPU)، همچنین سختافزارهای دیگری مانند RAM، حافظه ذخیرهسازی و کارتهای شبکه ارتباط برقرار کنند.
CPU بین سیستمعامل (و برنامههای در حال اجرا) و این قطعات سختافزاری واسطه است. برای سادهسازی زندگی برنامهنویسان، CPU مجموعهای از اقدامات و محاسبات از پیش تعریف شده را دارد که مجموعه دستورالعمل یا ISA (معماری مجموعه دستورالعمل) نامیده میشود. سیستمعامل و برنامههایی که اجرا میکند (که هر دو توسط برنامهنویسان نوشته شدهاند) به این دستورالعملها تکیه میکنند تا عملکردهای سطح پایینی مانند ارتباطات بین CPU و سختافزار (RAM، حافظه ذخیره سازی، ارتباطات شبکه و غیره) عملیات حسابی (جمع، تفریق و غیره) کار ، با دادهها را انجام دهند.
CISC
از نظر فنی باید گفت که پردازندههای ساخته شده بر مبنای معماری x86 مجموعه دستورالعمل بسیار غنی و قدرتمندی را از قدیم به خدمت گرفتهاند که به مرور نیز این ISA توسعه یافته است. در این معماری یک دستورالعمل میتواند یک محاسبهی کامل (مانند ضرب) را انجام دهد یا یک قطعه مشخص داده را مستقیماً از یک مکان حافظه به مکان دیگری منتقل کند. این ادعا ممکن است در نگاه عادی چندان کار خارقالعادهای به نظر نرسد، اما حقیقت امر این است که عملیاتی مانند ضرب و جابجایی دادهها بین مکانهای مختلف حافظه نیاز به اجرای بسیاری از دستورالعملها در سطح پایین پردازشی دارد. با کامپیوترهای x86، این سری پیچیده از عملیات میتواند با یک چرخه اجرا شود. واحدهای پردازشی با این نوع مجموعه دستورالعمل، رایانههای مجموعه دستورالعمل پیچیده یا CISC نامیده میشوند.
در همین رابطه بخوانید:
– رشته در پردازنده چیست؟ چرا تعداد رشته ها در CPU مهم است؟
– معرفی بهترین پردازنده ها (CPU) برای برنامه نویسی
نکته مهمی که در این رویکرد وجود دارد این است که استفاده از مجموعه دستورالعملهای قدرتمند در یک رایانه CISC به این معنی است که شما برای ساخت آن نیز نیاز به ترانزیستورهای بیشتری دارید که این تعداد قطعه سیلیکونی بیشتر منجر به آن میشود که فضای کلی اشغال شده توسط پردازنده ساخته شده با این رویکرد بزرگتر شده و به طبع، توان مصرفی آن نیز افزایش پیدا کند.
RISC
از دید تاریخی، معماری CISC در ساخت پردازشگرها در اوایل دهه 1980 میلادی منجر به تولد چندین پروژه ساخت پردازشگرها شد که رویکرد کاهش مصرف انرژی پردازشگر و سادهسازی مجموعه دستورالعملها را دنبال میکردند. در این جستارها، پژوهشگران کشف کردند که در دنیای واقعی، بیشتر کامپیوترها فقط از یک زیرمجموعه کوچک از مجموعه بزرگ دستورالعملهای ارائه شده در یک رایانه CISC استفاده میکنند.در نهایت مهندسان طرحهای مختلفی را ارائه دادند که نتیجه آنها منجر به طراحی پردازندههای رایانههای مجموعه دستورالعمل کاهش یافته (RISC) شد. پردازندههای RISC یک مجموعه دستورالعمل دارند که در آن هر دستورالعمل فقط یک عملیات ساده را اجرا خواهد کرد که طبیعتاً برای آن نیز توان مصرفی کمتری مورد نیاز خواهد بود.
X86 به صورت سنتی حداکثر کارایی هدف گرفته و ARM حداکثر بازدهی انرژی
از زاویه دید برنامهنویسان ولی داستان متفاوت بود و ابداع RISC موجب شد که زندگی یک برنامهنویس زبان اسمبلی پیچیدهتر از قبل شود؛ با این هزینه که کار ساخت و توسعه پردازندهها بسیار راحتتر و سادهتر میشد.
اما اگر تصور کنید که این بار اضافی همیشه بر عهده برنامهنویسان هم مانده باید بگوییم که داستان چنین نیست؛ در واقع این روزها دشواری توسعه برنامههای پیچیده برای پردازندههای با مجموعه دستورالعمل کاهش یافته بر عهده کامپایلرها گذاشته شده و نه هسته پردازنده یا برنامهنویس آنها و این اهمیت استفاده از زبانهای برنامهنویسی و کامپایلرها را دوچندان میکند.
تاریخچه و توسعه معماریهای ARM و X86
در ادامه بررسی تفاوت ARM و X86 تاریخچه آنها را بررسی میکنیم. معماریهای ARM و X86 دو معماری پردازنده هستند که در طول تاریخ صنعت کامپیوتر شکل گرفته و توسعه یافتهاند.
معماری X86 در سال 1978 توسط شرکت Intel طراحی و ساخته شد. این شرکت که در زمینه تولید پردازندههای CISC فعالیت میکرد، به دنبال یک پردازنده 16 بیتی برای جایگزینی پردازنده 8 بیتی خود بود که به نام 8080 شناخته میشد. این پردازنده به نام 8086 نامگذاری شد که مخفف 80x86 بوده و با حدود 29000 ترانزیستور طراحی شده و تحت فرکانس ساعت 5 تا 10 مگاهرتز کار میکرد. این پردازنده برای اولین بار در سال 1981 و در یک کامپیوتر شخصی به نام IBM PC مورد استفاده قرار گرفت که با سیستمعامل PC DOS کار میکرد.
پروژه مجموعه دستورالعمل برای استفاده در پردازندههای RISC که صحبتش را کردیم و بعدها با نام ARM شناخته شد، در سال 1983 توسط دو تن از مهندسان شرکت Acorn Technology به نامهای سوفی ویلسون و استیو فوربر و تنها در 808 خط کُد طراحی شد. این شرکت به دنبال یک پردازنده قدرتمند و کممصرف برای دستگاههای خود بود که نتوانست مدلی با مشخصات مورد نظر خود را در میان محصولات شرکتهای موجود در بازار آن زمان مانند Intel و Motorola پیدا کند.
بنابراین مهندسان Acorn Computers دست به کار شده و تصمیم گرفتند تا یک پردازنده با مشخصاتی که مد نظر دارند و طبیعتاً با الگوی معماری RISC سازگار بود را بسازند. در نهایت تلاشهای این گروه نتیجه داد و پس از 6 نفر-سال تلاش، در سال 1985، اولین مدل پردازنده مد نظر آنها به نام ARM1 نامگذاری و معرفی شد؛ نامی که مخفف عبارت Acorn RISC Machine بود. این پردازنده تنها 25000 ترانزیستور داشت، با فناوری ساخت 3 میکرومتری شرکت VLSI Technology ساخته، با فرکانس 6 مگاهرتز کار میکرد و برای اولین بار در یک کامپیوتر شخصی از خانواده Acorn Archimedes مورد استفاده قرار گرفت. این پردازنده برای اولین بار توانست به 8 MIPS توان پردازشی برسد.
16 بیتی، 32 بیتی یا 64 بودن معماری ARM و X86
نسخههای 16 بیتی، 32 بیتی و 64 بیتی معماریهای ARM و X86 به ترتیب به تعداد بیتهای دادهای اشاره میکنند که پردازنده میتواند در هر دستورالعمل یا آدرس مورد استفاده قرار دهد. این تعداد بیتها تأثیر مستقیمی بر ظرفیت حافظه، سرعت عملیات و امنیت دستگاهها دارد. به طور کلی، نسخههای 64 بیتی قویتر و سریعتر از نسخههای 32 بیتی و 16 بیتی هستند. اما هر معماری نیز ویژگیها، مزایا و معایب خاص خود را دارد:
در همین رابطه بخوانید:
– تفاوت پردازنده های تری (Tray) و پردازنده های باکس (Boxed) اینتل
– سوکت CPU چیست؟ آشنایی با انواع سوکت پردازنده کامپیوتر و لپ تاپ
معماری ARM یک معماری RISC است که از دستورالعملهای ساده و کمتری استفاده میکند. این معماری در ابتدا با رویکرد 16 بیتی توسعه یافت ولی در حین ساخت مهندسان Acorn تصمیم گرفتند که آن را در ردای یک معماری 32 بیتی به دنیای تجارت وارد کنند. این روند برای مدتی طولانی ادامه داشت تا به دلایل مختلف و نیاز بازار، در سال 2011 نسخه 64 بیتی این معماری به نام ARMv8 معرفی شد.
در آن سوی بازار وقتی بخواهیم در مورد معماری X86 به عنوان یک معماری CISC است که از دستورالعملهای پیچیده و زیادی استفاده میکند صحبت کنیم نیز باید بگوییم که این معماری این معماری در ابتدا 16 بیتی بود و در سال 1985 با معرفی پردازنده 80386 یا i386 به 32 بیتی تبدیل شد. در سال 2003 و به دلایلی مانند نیاز روزافزون بازار، نسخه 64 بیتی این معماری به نام X86-64 یا AMD64 معرفی شد.
معماریهای ۶۴ بیتی مدرن CPU
این روزها معماریهای 64 بیتی در گوشیهای هوشمند و کامپیوترهای شخصی رایج هستند ولی حقیقت این است که این شرایط همیشه اینطور نبوده و دنیای گوشیهای هوشمند نزدیک به یک دهه در ارتقا به استفاده از معماریهای 64 بیتی از PCها عقبتر بوده است. به طور خلاصه، محاسبات ۶۴ بیتی از رجیسترها و آدرسهای حافظهای به اندازه کافی بزرگ استفاده میکنند که بتوانند از انواع دادههای ۶۴ بیتی (۱ و ۰) استفاده کنند.
نکته مهم این است که برای بهینگی بیشتر، علاوه بر سختافزار و دستورالعملهای سازگار، شما نیاز به یک سیستم عامل ۶۴ بیتی (مانند اندروید) هم دارید ولی ویندوز از سال 2001 با نسخه ویژه Windows XP 64-Bit Edition و اپل نیز در سال 2003 با Mac OS X 10.3 “Panther” پشتیبانی از پردازندههای 64 بیتی را شروع کردند. جالب است بدانید اولین سیستمعامل 64 بیتی دنیا در سال 1985 و توسط شرکت Cray با نام UNICOS و بر اساس سیستمعامل Unix عرضه شد.
قدیمیهای فعال در حوزه موبایل ممکن است به یاد داشته باشند که وقتی اپل اولین پردازندهی ۶۴ بیتی خود را با نام Apple A7 پیش از رقبای اندرویدی خود معرفی کرد، چه هیاهویی در حوزه پردازش موبایل به پا شد. از دید یک کاربر عادی انتقال به ۶۴ بیتی محاسبات روزمره را تحولی نمیدهد ولی اجرای عملیاتی ریاضی به طور کارآمد با استفاده از اعداد شناور با دقت بالا امری بسیار مهم برای توسعهدهندگان است. رجیسترهای ۶۴ بیتی دقت رندرینگ سه بعدی را بهبود میبخشند، سرعت رمزگذاری را افزایش میدهند و آدرسدهی بیش از ۴ گیگابایت رم را سادهتر میکنند.
در همین رابطه بخوانید:
– چرا پردازنده ۱۲۸ بیتی وجود ندارد؟
پردازش 64 بیتی در X86
امروزه، هر دو معماری X86 و ARM از ساختار آدرس دهی داده ۶۴ بیتی پشتیبانی میکنند. جالب است بدانید که این اینتل نبود که معماری مدرن X86-64 که به عنوان x64 نیز شناخته میشود را ابداع کرد. این افتخار متعلق به اعلامیهی AMD از سال ۱۹۹۹ است که معماری موجود x86 اینتل را بازسازی کرده و امکان استفاده از رجیسترهای 64 بیتی و بسیاری از بهبودهای دیگر را به آن افزود. این معماری در واقع جایگزین IA64 Itanium اینتل است که این روزها به فراموشی سپرده شده است.
پردازش 64 بیتی در ARM
همانطور که بالاتر اشاره کردیم، در آن سوی میدان و سال ۲۰۱۱ معماری ۶۴ بیتی ARMv8 معرفی شد. در این معماری جدید خانواده ARM تصمیم گرفته شد تا به جای گسترش مجموعه دستورالعملهای ۳۲ بیتی، یک پیادهسازی ۶۴ بیتی بینقص از آن ارائه شود. برای انجام این کار، معماری ARMv8 از دو حالت اجرا، AArch32 و AArch64 استفاده میکند. همانطور که از این نامها پیداست، یکی برای اجرای کد ۳۲ بیتی و یکی برای ۶۴ بیتی به کار میروند.
زیبایی طراحی ARM این است که پردازنده میتواند، به صورتی ساده و روان از یک حالت به حالت دیگر و در طول اجرای عادی خود تغییر وضعیت دهد. در این طراحی با وجود سازگاری با نسل قبلی، طراحی جدید تفسیر بلادرنگ دستورالعملهای ۶۴ بیتی نیازی به حفظ سازگاری با حالت اجرای ۳۲ بیتی خود نداشته و میتواند برنامههای 32 بیتی را نیز بدون کوچکترین مشکلی اجرا کند.
در همین رابطه بخوانید:
– تاریخچه پردازنده های کامپیوتر و معرفی تاثیرگذارترین CPU های تاریخ
– مقایسه پردازنده موبایل و دسکتاپ ؛ تشریح تفاوت ها به زبان ساده
اما آخرین پردازندههای Cortex-A Arm اکنون فقط ۶۴ بیتی هستند و پشتیبانی از برنامهها و سیستمعاملهای قدیمی ۳۲ بیتی را بر روی این CPUهای جدید متوقف کردهاند. تا پیش از این، تولیدکنندگان چیپست معمولاً حداقل یک هسته ۳۲ بیتی قابل اجرا در CPUهای خود داشتند اما آخرینها پردازندهها مانند CPU داخل چیپست کوالکام Snapdragon 8 Gen 3 فاقد این بخش است. البته باید این را بگوییم که همچنان شاهد این هستیم که برخی از تولیدکنندگان مانند شیائومی و وانپلاس لایههای ترجمهای را برای اجرای برنامههای قدیمی به نسخههای سیستمعامل مورد استفاده در دستگاههای خود اضافه میکنند که بتواند اجرای برنامههای 32 بیتی را برای کاربران میسر سازد ولی همچنان شما نمیتوانید برنامههای ۳۲ بیتی را روی گوشیهای دیگر، از جمله سری Pixel 8 گوگل اجرا کنید.
پیروزی الگوی محاسبهی ناهمگن ARM در موبایل
تفاوت معماری arm با x86 عنوان شده در بالا بخشی از موفقیتها و مشکلات فعلی دو غول چیپست را توضیح میدهند. رویکرد کم توان Arm به طور کامل با نیازهای TDP (توان طراحی حرارتی) زیر ۵ وات موبایل سازگار است و طی سالیان گذشته بازدهی و توان عملکردی محصولات ساخته شده بر اساس این معماری توانستهاند تا سطح چیپستهای لپتاپ اینتل هم افزایش یابند.
برای مثال در این زمینه سری M1 اپل از پردازندههای مبتنی بر ARM را میتوان نام برد که رقابت جدی را در فضای PC ایجاد کردهاند. در عین حال، محصولات Core i7 و i9 اینتل یا اعضای خانواده AMD Ryzen با TDP بیش از ۱۰۰ وات TDP نیز وجود دارند، که قادر به ارائه توان پردازشی بسیار بالایی هستند ولی اینتل و حتی AMD هر چه تلاش کردهاند تا طی سالیان گذشته بتواند به حد توان محصولات کممصرف ARM نزدیک شوند، در این زمینه موفق نبودهاند. نمونه تاریخی این ادعا را میتوان محصولات سری Intel Atom دانست که هیچگاه نتوانستند بستری را فراهم کنند که بتوان از آنها در لپتاپها و دستگاههای قابلحمل واقعاً قدرتمند استفاده کرد.
البته، نباید نقشی را که فرآیندهای تولید سیلیکون در بهبود قابل توجه کارایی توان در طول دهه گذشته ایفا کردهاند را فراموش کنیم. به طور کلی، ترانزیستورهای CPU کوچکتر کمتر توان مصرف میکنند. پردازندههای ۷ نانومتری اینتل (که با نام فناوری فرآیند Intel 4 شناخته میشوند) به تازگی وارد بازار شدهاند و عقب ماندگی چند نسلی اینتل در این زمینه بسیار به ضررش تمام شد.
در همین رابطه بخوانید:
– تراشه اسنپدراگون چیست؟ بررسی انواع پردازنده های اسنپدراگون و قابلیت های آنها
– رده بندی بهترین پردازنده های موبایل در سال 2023 + بررسی انواع پردازنده های گوشی
در این مدت، چیپستهای گوشی هوشمند از ۲۰ نانومتر به ۱۴، ۱۰ و ۷ نانومتر، ۵ نانومتر و حالا ۴ نانومتر رسیدهاند. این مهم تنها با بهرهگیری از رقابت بین کارخانههای سامسونگ و TSMC حاصل شده است. البته پتلفرم X86 باید در این زمینه قدردان AMD باشد که بدون تعصب خاصی در این بخش کوشیده و برای بستن شکاف جاری با دنیای ARM، پردازندههای رایزن را با فناوریهای ساخت 7 و 6 نانومتری نیز وارد بازار کرد که این امر موجب شد به موفقیتهای چشمگیری برای رسیدن به توان پردازشی و کاهش توان مصرفی در این خانواده نائل آید.
محاسبات ناهمگن در ARM
فارغ از همه موارد فوق باید گفت که محاسبات ناهمگن یا Heterogeneous Compute (سیستمی که بیش از یک نوع پردازنده یا هسته پردازشی را در یک لحظه مورد استفاده قرار میدهد) رویکردی بوده که طی سالیان گذشته توانسته تفاوتهای زیادی را رقم زده و ARM را یک پله جلوتر از X86 در این زمینه قرار دهد. ایده پیادهسازی این طرح برای حفظ الگوی TDP پایین برای اجرای برنامههای موبایلی که تا به امروز بسیار موثر نیز عمل کرده بسیار ساده است؛ یک معماری بسازید که اجازه دهد قسمتهای مختلف CPU (از نظر عملکرد و توان) به صورت همزمان ولی مستقل برای بهبود کارایی کار کنند.
Big.LITTLE بهترین راهکار مدیریت توان
یکی دیگر از تکنیکهای بسیار کارآمدی که ARM استفاده از آن را در الگوهای طراحی پردازنده خود ارائه کرده، فناوری DynamIQ big LITTLE است. این فناوری که به نوعی، ارتقا یافته تکنیک big.LITTLE است میکوشد تا با ارائه راهکارهای ترکیب هستههای پرقدرت و کممصرف در ساختارهای کارآمد، راهکاری ارائه دهد تا بتوان بار کاری بین هستههای CPU را به بهترین شکل ممکن به اشتراک گذاشت.
البته اولین تلاش ARM برای این ایده، تکنیک ترکیببندی هستههای big.LITTLE بود که در سال ۲۰۱۱ با هستهی بزرگ Cortex-A15 و کوچک Cortex-A7 ارائه شد. از نظر فنی ایده آنکه هستههای پرقدرت را به صورت مستقیم به تسکهایی که نیاز به توان پردازشی بالاتر داشته و هستههای کمتوان را برای اموری مانند پردازشهای پسزمینه اختصاص دهیم، ایدهای است که میتواند مناسب دستگاههای قابل حمل مانند گوشیهای هوشمند باشد.
Arm با DynamIQ و معماری ARMAv8.2 در سال ۲۰۱۷ به این ایده ساخت پردازنده اجازه داد که CPUهای مختلف در یک خوشه قرار گرفته و منابع حافظه را برای پردازش بسیار کارآمدتر به اشتراک بگذارند. DynamIQ همچنین امکان طراحی ۲+۶ پردازنده با ترکیب نامتفارن (مانند 2+6) را فراهم میکند که در چیپستهای میانرده رایج است، همچنین ترکیبهای هستههای پرقدرت، میانرده و کممصرف (۱+۳+۴ و ۲+۲+۴) که در SoCهای سطح پرچمدار دیده میشوند نیز طی چندین سال گذشته کارآمد بودن خود را به خوبی اثبات کردهاند.
محاسبات ناهمگن و ترکیب هسته غیر همتراز در X86
شاید بتوان به راحتی روی این ادعا صحه گذاشت که یکی از دلایلی که چیپستهای Atom اینتل در اردوگاه رقیب، بدون محاسبهی ناهمگن، نتوانستند تعادل عملکرد و کارایی خود را در حد پردازندههای ARM تنظیم کنند، ادعای گزافی نباشد. البته اینتل به شدت در این زمینه به دنبال راهکار بود و تا سال ۲۰۲۰ طول کشید که پروژههای Foveros، Embedded Multi-die Interconnect Bridge (EMIB) وHybrid Technology اینتل بتوانند یک طراحی چیپ رقابتی را به دست آورده و آن را در پردازندههای 10 نانومتری Lakefield به خدمت گیرند.
از نظر فنی برای اولین بار در پلتفرم X86 و همین نسل Lakefield بود که ترکیبی از یک هستهی عملکرد بالا Sunny Cove با چهار هستهی کارآمد از نظر توان Tremont، همراه با ویژگیهای گرافیکی و ارتباطات در کنار هم قرار گرفتند و اینتل توانست میزان توان TDP این پردازنده را برای استفاده در لپتاپها به ۷ وات برساند. البته باید گفت که این توان همچنان برای گوشیهای هوشمند بسیار زیاد است و باید بهینگی بیشتر از اینها را حاصل نمود تا یک تولیدکننده گوشی هوشمند جرأت کند ریسک پذیرش یک پردازنده X86 برای استفاده در گوشی هوشمند را بپذیرد.
در همین رابطه بخوانید:
– مقایسه تعداد هسته با سرعت کلاک پردازنده ؛ کدام یک برای کامپیوتر شما مهمتر است؟
– حافظه کش پردازنده چیست؟ چرا Cache در سی پی یو مهم است؟
از زوایای مختلف میتوان گفت که نسل پردازندههای اینتل Lakefield با تکنولوژی هیبریدی از اصول طراحی مشابه Arm big.LITTLE استفاده میکند. امروزه، Arm در مقابل پردازنده X86 بیشتر در بازار لپتاپ با TDP زیر ۱۰ وات مبارزه میکند، جایی که اینتل به سمت پایینتر آوردن توان مصرفی حرکت کرده و در عوض ARM تلاش میکند تا توان پردازشی را ارتقا دهد. تغییر اپل به استفاده از چیپستهای Arm سفارشی خود برای Mac تحت پروژه Apple Silicon یک مثال عالی از ارتقا قابل توجه توان پردازشی معماری Arm است که بخشی از آن به لطف محاسبهی ناهمگن همراه با بهینهسازیهای سفارشی انجام شده توسط اپل حاصل شده است.
هستهها و مجموعه دستورالعملهای سفارشی Arm
یک فرق بین پردازنده ARM و X86 این است که شرکتهایی مانند اینتل و ARM، هم کل فرایند طراحی و ساخت محصولاتشان را کنترل کرده و هم خودشان نسبت به فروش محصولات تولیدی خود اقدام میکنند. در آن سوی میدان اما شرکت Arm فقط مجوز استفاده از طراحیها خود را میفروشد. اینتل معماری، طراحی CPU و حتی تولید را کاملاً درون خانه خود نگه میدارد. اگرچه زمزمههایی که اخیراً مطرح شده، احتمال ماندن همیشگی در این ساختار را رد میکند ولی به هر حال وضعیت فعلی بازار تراشه به این صورت است.شرکت Arm، محصولات متنوعی را به شرکایی مانند اپل، سامسونگ و کوالکام ارائه میدهد. این محصولات شامل طراحیهای هستهی CPU آماده به کار مانند Cortex-X4 و A720، طراحیهایی که از طریق برنامه Arm CXC با همکاری دیگر شرکتها ساخته شدهاند، و مجوزهای معماری سفارشی که به شرکتهایی مانند اپل و سامسونگ و کوالکام اجازه میدهد هستههای CPU سفارشی خود را ساخته و حتی تغییراتی در مجموعه دستورالعمل ایجاد کنند.
اپل هستههای CPU سفارشی را برای استخراج بیشترین عملکرد در هر وات ممکن میسازد
ساخت هستههای CPU سفارشی یک فرآیند گران و دشوار است زمانی که به درستی انجام شود، نتایج فوقالعادهای را به دنبال داشته باشد. CPUهای اپل مثال بارزی در این زمینه هستند تا نشان دهیم که چگونه میتوان سختافزار و دستورالعملهای سفارشی Arm را به سطحی میرسانند که با پردازندههای ساخته شده بر مبنای x86-64 رایج و فراتر از آن رقابت کنند. البته مثال نشان دهنده شکست در این رویکرد نیز وجود دارد؛ هستههای Mongoose سامسونگ که سالها دنبال شدند، نتوانستند به موفقیت چشمگیری دست پیدا کرده و در نهایت این شرکت را به جایی رساندند که به کل پروژه هستههای کاستوم خود را تعطیل کند. یک حرکت جالب دیگر در این زمینه نیز کوالکام است که با خرید شرکت تحسین شده Nuvia با ارزش ۱.۴ میلیارد دلار، دوباره وارد بازی CPUهای Arm سفارشی شده تا محصولات جدیدی برای عرضه ARM در دنیای لپتاپها را طراحی و روانه بازار تشنه این حوزه کند.
اپل قصد دارد به تدریج CPUهای اینتل را در محصولات Mac خود با چیپستهای Arm سفارشی خود جایگزین کند. اپل M1 اولین چیپست اختصاصی در این زمینه بود که چندی پیش با ارتقاهای صورت گرفته، حالا شاهد استفاده از نسل سوم آنها و تراشههای M3 این شرکت در انبوه دستگاههای تولیدی کوپرتینوییها در لپتاپهای مک بوک گرفته تا انواع کامپیوترهای مک هستیم. نکته جالب توجه در این زمینه عرضه نسخههای Max و Ultra از سوی اپل است که به معنای واقعی به توان پردازشی عرضه شده توسط پردازندههای X86-64 نزدیک شده و در بسیاری از سناریوها شانه به شانه آنها میزند.
ابررایانه ژاپنی Fugaku که قدرتمندترین در نوع خود است نیز با پردازندههای ARM ساخته شده است.
البته باید به این نکته نیز اشاره کنیم که معماری X84-64 که توسط اینتل و AMD مورد استفاده قرار میگیرد، از نظر عملکرد خام در حوزه سختافزار مخصوص مصرفکنندگان همچنان با قدرت به پیش میرود اما ARM در بخشی که توجه همزمان به ارائه توان پردازشی با مصرف پایین بسیار مد نظر است به پیش میرود. این حوزه به صورت ویژه شامل بازار پردازش سرورها و مراکز داده میشود. در زمان نوشتن این مقاله برای اولین بار است که عنوان قدرتمندترین ابررایانهی دنیا از هستههای پردازنده ARM استفاده میکند. این ابررایانه که A64FX SOC نام دارد با طراحی فوجیتسو ژاپن، اولین محصولی است که معماری ARMV8-A SVE را نیز مورد بهرهبرداری قرار داده است.
تفاوت ARM و X86 در سازگاری نرمافزاری
همانطور که قبلاً اشاره کردیم، برنامهها و نرمافزارها باید برای معماری CPU که روی آن اجرا میشوند، کامپایل شوند. ارتباط بین CPUها و اکوسیستمها (مانند اندروید روی Arm و ویندوز روی X86) باعث شده که سازگاری یک برنامه کاربردی با هر دو پلتفرم، هرگز نگرانی واقعی توسعهدهندگان نباشد. در واقع به دلیل آنکه برنامهها نیازی ندارند که روی پلتفرمها و معماریهای مختلف اجرا شوند، نیازی هم به این مورد احساس نشده که شما به عنوان توسعهدهنده نرمافزاری برنامهای بنویسید که بتواند هم روی پردازندههای ARM اجرا شود و هم روی پردازنده X86. اما رشد برنامههای چند پلتفرمی و سیستمعاملهایی که روی معماریهای مختلف CPU اجرا میشوند، این چشمانداز را تغییر میدهد.
در همین رابطه بخوانید:
مکهای بر پایهی Arm اپل، Chrome OS گوگل و مایکروسافت ویندوز بر روی Arm همه مثالهای مدرنی هستند که نشان میدهند شرکتها در حال حرکت به سوی این استراتژی هستند که نرمافزارها باید بتوانند روی هر دو معماری Arm و x86-64 اجرا شوند. کامپایل نرمافزار بومی برای هر دو معماری، یک گزینه برای برنامههای جدید و توسعهدهندگانی است که رویکرد بازکامپایل را دنبال میکنند. برای پر ، فاصلهها در این حوزه، این پلتفرمها همچنین به شبیهسازی کد (Code Emulation) نیز تکیه میکنند.
به عبارت دیگر، این رویکرد امکان ترجمهی کدی که برای یک معماری CPU کامپایل شده است را فراهم میکند تا بتوان آن را روی پردازنده ساخته شده با معماری دیگری اجرا کرد. طبیعی است که در این شرایط میزان کارایی کاهش خواهد یافت و عملکرد برنامه ترجمه شده نسبت به نسخه اصلی آن در معماری مادرش، کمتر خواهد بود. البته سازندههای امولاتورها نیز در برخی زمینههای پرمخاطب توانستهاند به موفقیتهای قابل توجهی دست پیدا کنند که در آن فاصله چندان قابل توجهی برای اجرای برنامه در پلتفرم جدید مشاهده نمیشود.
اجرای ویندوز روی ARM نمونه بارزی از موفقیت در بهینه سازی امولاتورهاست
پس از سالها توسعه، شبیهسازی ویندوز بر روی Arm در وضعیت مناسبی قرار گرلفته و میتواند بسیاری از برنامهها را با کیفیت بالا اجرا کند. به طور مشابه، برنامههای اندروید روی ویندوز ۱۱ و کرومبوکهای اینتل نیز با ابزارهایی که شرکتهای مایکروسافت و گوگل ارائه کردهاند، به خوبی اجرا میشوند. اپل هم ابزار ترجمهی خود را با نام Rosetta 2 معرفی کرده که برای پشتیبانی از برنامههای مک قدیمی بر پایه پردازنده X86 طراحی شده است. اما حقیقت امر این است که در قیاس، به صورت ویژه عملکرد اجرای برنامهها، روی پلتفرم اصلی و نسخه ترجمه شده، پایینتر است.
جمعبندی
در این مقاله ما به بررسی تفاوت ARM و X86 پرداختیم. طی یک دهه گذشته که از رقابت سر به سر ARM و X86 برای تصاحب بازارهای بیشتر میگذرد، حقیقت این است که ARM توانسته در حوزه محصولات همراه از جمله گوشیهای هوشمند، به صورت کامل اینتل و x86 را کنار بزند. البته در همان ابتدای فراگیر شدن عمومی اندروید، اینتل تلاش کرد با پروژههایی مانند Android X86، بازار قابل توجهی را برای خود دست و پا کند ولی با توجه به هزینههای توسعه بالا و عدم استقبال شرکتهای تولید کننده، این پروژه نیز به موفقیت خاصی نرسیده و در آخر، متوقف شد.
معماری ARM همچنین در لپتاپها و سایر دستگاه ها نیز به مرور در حال پیشرفت است؛ دستگاههایی که قدرت پردازشی را در کنار صرفهجویی حداکثری در توان مصرفی مطالبه میکنند. علیرغم از دست دادن بازار گوشیهای هوشمند، هر دو شرکت اینتل و AMD رویکرد استفاده از فناوری محاسبات ناهمگون و هستههای با عملکرد شبیه به فناوری big.LITTLE یا به صورت کلی هستههای غیرهمسان داخل تراشه را در پیش گرفتهاند که توانسته به خصوص در حوزه لپتاپها جایگاه آنها را بهبود داده و امکان طراحی پردازندههای با توان مصرفی تا 15 وات را به راحتی میسر کند.
اگرچه هنوز هم مشخص است که حوزههای قدرتنمایی ARM و X86 از دیدگاه مهندسی با هم کاملاً متفاوت است و پردازنده X86 حوزه موارد پرقدرت را هدف گرفته و ARM بر کاهش هر چه بیشتر انرژی تمرکز دارد ولی باید در نظر داشت که این مرزها به تدریج در حال کمرنگتر شدن هستند. علت اصلی این نزدیکتر شدن این است پشتیبانی اکوسیستم های نرمافزاری مختلف به طور فزایندهای از هر دو معماری در حال افزایش است.
شاید بتوان گفت که اگر طی چند سال آینده انقلاب قابل توجهی در حوزه کاهش توان مصرفی در X86 برای لپتاپها پیش نیاید، ARM به راحتی وارد بازار شده و بتواند (همانند آنچه اپل با پروژه Apple Silicon رقم زد) این بازار را نیز تصاحب کرده و میزان توان پردازشی را به حدی برساند که تولیدکنندگان لپتاپ را قانع کند که از پردازندههای ساخت شده بر مبنای این فناوری در محصولات خود استفاده کنند.
پاسخ به سوالات پرتکرار
کدام معماری بهتر است ARM یا X86؟
اینکه کدام معماری بهتر است یا بدتر اصولاً در خصوص تفاوت arm و x86 مصداق ندارد. هر کدام از این معماریها کاربردهای خاص خود را دارند که البته این روزها در حال کمرنگتر شدن مرزهای بین آنها و ورود کاربردهایی هستیم که برای عملکرد روی هر دو در حال بهینهتر شدن هستند.
تفاوت اصلی بین ARM و X86 چیست؟
تفاوت اصلی بین ARM و X86 به نحوه طراحی مجموعه دستورالعملهای مورد استفاده آنها است. ARM به نحوی ساخته شده که با الگوی معماری RISC از سادگی و اجرای سریع دستورالعمل های منفرد حمایت می کند و x86 (CISC) دستورالعمل های پیچیده تری را اولویت بندی و مورد استفاده قرار میدهد.
منبع: https://www.shahrsakhtafzar.com/fa/articles-guides/cpu/49918-arm-x86-cpu