علی قهرمانی
علی قهرمانی
خواندن ۴ دقیقه·۳ سال پیش

هر چه لازمه از معماری پردازنده ها بدونید.

سلام به ویرگولی ها.

قبل از شروع دقت کنید که این مطلب نوشته من برای مجله کلیک از جام جم هست و انتشار این نوشته در ویرگول صرفا نقل از مطلب اصلی هست.


بد نیست ابتدا با ماهیت پردازنده‌ها آشنا شوید. پردازنده قطعه‌ای الکترونیک است که می‌تواند عملیات‌هایی را روی داده‌هایی که به آن می‌دهیم انجام دهد و نتیجه آن را به ما بازگرداند. این عملیات منطقی را توسط ترانزیستورهایی که درون آن تعبیه شده‌ انجام می‌دهد. هر پردازنده از مجموعه دستورالعمل‌هایی پشتیبانی می‌کند که به آنها instruction set  می‌گویند. از طرفی هر معماری پردازنده instruction set مخصوص به خود را دارد. نرم‌افزاری که ما روی رایانه یا گوشی‌های هوشمند خود اجرا می‌کنیم در واقع مجموعه‌ای از این دستورها هستند که به ترتیب اجرا می‌شوند. در نتیجه برنامه‌هایی را که برای معماری a نوشته می‌شوند، نمی‌توان روی پردازنده‌های معماری b اجرا کرد. چرا؟ چون این معماری‌ها instruction set‌های متفاوتی دارند.
ما در دنیای امروز از دو معماری معروف برای پردازنده‌ها استفاده می‌کنیم. یکی x۸۶ و دیگری ARM. معماری x۸۶ بسیار پیچیده تر از ARM است، طوری که فقط چند شرکت در جهان هستند که می‌توانند به صورت تجاری تولید کنند مثلا intel و AMD  و طبیعتا هزینه تمام شده بیشتری هم برای این شرکت‌ها چه از نظر تولید قطعات و چه از نظر هزینه تحقیق و توسعه دارد که باعث می‌شود قیمت این پردازنده‌ها نسبت به ARM‌ها بیشتر باشد ولی از طرفی نسبت به پردازنده‌های ARM  فهرست دستورات instruction set کامل‌تری دارند و این باعث می‌شود یک برنامه ثابت در x۸۶ با تعداد دستورات کمتری نسبت به ARM نوشته‌شود.
برای توضیح دقیق‌تر این موضوع به این مثال توجه کنید. فرض کنید دو پردازنده قصد دارند با یکدیگر مسابقه بدهند. هر دو فرکانس ۱GHz دارند ولی یکی با معماری ARM و دیگری معماری x۸۶ ساخته شده است. در این مسابقه پردازنده x۸۶ برنده می‌شود؛ زیرا با این‌که سرعت برابری دارند اما چون x۸۶ با تعداد دستورات کمتری می‌تواند محاسبات رو انجام بدهد پس برنده می‌شود.
اما پردازنده‌های ARM  دو مزیت رقابتی خیلی مهم نسبت به x۸۶‌ها دارند:

۱.  مصرف انرژی کمتر.
۲.  پیچیدگی کمتر در ساخت و طراحی.

این دو ویژگی از همان اول باعث شد این معماری بین تولید کننده‌های تلفن‌همراه محبوب بشود؛ چون مصرف انرژی برای تلفن‌‌های‌همراه که انرژی‌شان را از باتری تامین می‌کنند بسیار مهم است و پردازنده‌های x۸۶ با مصرف انرژی زیاد مناسب آنها نبودند و باتری را زود تمام می‌کردند. از طرفی مصرف انرژی زیاد به معنای تولید حرارت بالاست که در طراحی رایانه‌های رومیزی و لپ‌تاپ‌ها با گذاشتن فن خنک‌کننده حل می‌شود ولی فن خنک‌کننده روی تلفن‌همراه ایده چندان جالبی نیست. از طرفی پیچیدگی کمتر پردازنده‌ها باعث می‌شود قیمت پردازنده‌ها و در نهایت گوشی‌های تلفن‌همراه کمتر باشد و در بازار از این نوع پردازنده‌ها استقبال بیشتری شود.


 چالش‌های معماری ARM
اما دو دلیل همیشه مانع از این بود که این معماری جذاب وارد دنیای رایانه‌های رومیزی شود:

۱. توان پردازشی کم.
۲. نرم‌افزارهای زیادی که برای رایانه‌های رومیزی و بر اساس معماری x۸۶ توسعه داده شدند و به همین راحتی قابل تبدیل به معماری ARM نیستند.

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


ورود گوگل و مایکروسافت

گوگل با chrome os که یک سیستم‌عامل بر پایه لینوکس بود آمد و با همکاری با acer، dell و… کروم‌بوک‌ها را وارد بازار کرد که بسیاری از آنها بر پایه معماری ARM بودند. از طرفی مایکروسافت نسخه ARM برای ویندوز ساخت که فقط قادر به اجرای برنامه‌های مبتنی بر ARM بود. چند شرکت متفرقه هم به سمت تولید لپ‌تاپ‌های لینوکسی بر پایه ARM رفتند. ولی همچنان برنامه‌های x۸۶ روی ARM‌ها قابل اجرا نبودند و این یک مانع بزرگ برای مشتری‌هایی بود که قصد داشتند سیستمی با پردازنده ARM خریداری کنند.
در این برهه زمانی دیگر تولید این پردازنده‌ها در دست دو سه شرکت نبود و به دلیل سادگی معماری شرکت‌های زیادی پردازنده‌های ARM خود را تولید کردند اما همچنان قدرت پردازنده‌های ARM هنوز در حد پردازنده‌های میان‌رده x۸۶ بود. تا این‌که اپل در کنفرانس ۲۰۲۱ از پردازنده‌های ARM ساخت خود رونمایی کرد که از نظر توانایی پردازشی هم‌رده قوی‌ترین پردازنده‌های اینتل به حساب می‌آمد و البته بسیار ارزان و کم‌مصرف‌تر از رقیب خود بود. از طرفی اپل راه‌حلی برای تبدیل برنامه‌های x۸۶ به ARM به کاربرانش ارائه کرد که بتوانند برنامه‌های x۸۶ را روی رایانه‌های ARM اپلی اجرا کنند.

برنامه نویسیتکنولوژیموبایلarmx86
برنامه نویس، علاقه مند به لینوکس و نرم افزار آزاد. من در جاهای دیگه: ali77gh.ir
شاید از این پست‌ها خوشتان بیاید