دوستان و همراهان گرامی، پس از انتشار خبر ((استفاده از پردازنده Apple A12X در مک بوک ها))، متوجه شدیم که برخی از دوستان و خوانندگان، با قابلیت 64 بیتی (x86) در این پردازنده ها بیگانه بوده و اطلاعات محدود آنها در این زمینه موجب گمراهی و برداشت اشتباه این عزیزان شده است. در نتیجه تصمیم گرفتیم تا در یک مطلب کوتاه و ساده، این بخش را برای این عزیزان باز نمائیم.
معماری x86 که امروزه توسط 2 کمپانی Intel و AMD مورد استفاده قرار می گیرند، دارای ریشه بسیار قدیمی هستند که عمر آن به دهه 70 میلادی باز می گردد. RISC که مخفف Reduced instruction Set Computing به واقع معماری ساختاری پردازنده های شرکت آرم هولدینگ (ARM) است. شرکت ARM از سال 1980 میلادی در حال توسعه است و بر خلاف تصور بسیاری، این شرکت فاقد خطوط ریخته گری است و معماری های خود را به شرکت های بسیاری فروخته و کمپانی ها با استفاده از معماری های ARM به تولید تراشه های SOC می پردازند.
همانطور که گفته شد، معماری پردازنده های ARM بر اساس RISC بوده و از این رو با معماری x86 که بر پایه Complex Instruction Set Computing یا CISC هستند، متفاوت است. شیوه ورودی اطلاعات به منظور پردازش، بزرگترین تفاوت این دو معماری است. گذرگاه های 32 و 64 بیتی، نخستین بخش هایی هستند که در دروس دانشگاه های مرتبط با رشته های کامپیوتر تدریس می شود. پس از طراحی این 2 معماری، تولید برنامه های نرم افزاری نیز بر اساس آنها توسعه یافته و تا به امروز نیز ادامه دارد. اما با گذشت زمان و پیشرفت تکنولوژی، شرکت ARM و شرکای تجاری آن تصمیم به توسعه پردازنده های مجتمع نوع SOC گرفتند.
علت این تغییر چه بود عزیزان؟ برنامه های 64 بیتی به طور فزاینده ای در حال توسعه بوده و CPUهای ARM شاید از پس برنامه هایی نظیر گوشی های هوشمند، اندروید، اینترنت اشیاء و… به خوبی بر می آمدند، اما برای کاربردهای دیگر دچار مشکل بودند. البته این مسئله را یادآور می شویم که معماری 32 بیتی ARM هم دارای مزایایی مانند توان حرارتی (TDP) پایین و رندر بسیار مناسب بود. عدم پیچیدگی در فرآیند پردازش به دلیل دسته بندی اعداد صحیح و اعشاری، از جمله مواردی است که معماری ARM را قدرتمند جلوه می داد. اما آرم هولدینگ با معرفی پردازنده ARMv8، قابلیت های 64 بیتی را به درون قلب پردازنده های خود آورده و رویه سنتی 32 بیتی را پایان داد.
پس تا به اینجای کار، متوجه شدیم که ARM پشتیبانی از برنامه های 64 بیتی را به درون پردازنده و معماری های خود آورد. همانطور که می دانید، چند سالی است که Microsoft تصمیم گرفته است تا با همکاری “کوالکام” و استفاده از معماری ARM، ویندوز 10 را بر روی لپ تاپ ها پیاده سازی نماید. برای این کار مایکروسافت راه نسبتا دشواری را پیش رو داشت چرا که برنامه های ویندوز بر اساس معماری CISC و معماری x86 نوشته و توسعه داده می شوند و این در حالی بود که پردازنده های ARM با وجود پشتیبانی از گیت های 64 بیتی، نیازمند استفاده از تکنیک های CISC و x86 بودند که عملا کار را دچار مشکل می کرد.
از این رو ARM که متوجه این مسئله شده بود، از سال 2012 کار بر روی این ویژگی را آغاز کرده و در نهایت موفق به تزریق قابلیت های x86 به معماری خود شد. برای این منظور یک کامپایلر سخت افزاری برای پردازشگرهای ARM طراحی شد که می توانست دستورات x86 را برای پردازش در معماری ARM آماده سازد. این کامپایلر با نام Compiled Hybrid Portable Execution DLL یا به اختصار CHPE، امکان پشتیبانی از دستورات x86 را به صورت کاملا بومی برای پردازنده های ARM فراهم می کند. شاید در برخی از بنچمارکها دیده باشید که در جلوی CPUهای ARM واژه x86 درج شده است که این مسئله به دلیل پشتیبانی بنچمارک از صرفا معماری x86 است. پردازنده های معماری ARM با توجه به این 2 قابلیت امروزه از پلتفرم های مکینتاش و ویندوز پشتیبانی می کنند.
پس معماری های ARM امروزه نه تنها 64 بیتی هستند، بلکه از ورودی های x86 نیز پشتیبانی می کنند. امیدواریم این مطلب که به صورت ساده و شفاف نوشته شده است، پاسخ اشتباه این دسته از عزیزان را داده باشد.
اقای اریایی شما اگه لینکی یا منبعی دارید در مورد اینکه CHPE یک کامپایلر سخت افزاری هست در ساختار پردازندههای ARM لطفا ارائه بدید تا دوستانی که از رو بی اطلاعی نظر میدن ساکت بشند.
دوست عزیز احتمالا شما منظورت silicon compiler یا hardware compilation هست که کلاً یک مبحث دیگه است و اصلا ارتباطی به گفته های اقای اریای نداره.
یک منبع دیگه از سایت تخصصی لینک ([url]”https://en.wikichip.org/wiki/apple/ax/a12x”[/url])
جالب ترین بخش این نظرات اینه که میگن من گفتم 64 بیت نیست
اگر برن خبر که لینک داده شده میبینن من تو کامنتم یه لینک دادم و عکس دوم این مطلب از اون لینک هست
چیزی که اتفاقا میفته مثل امولاتور اندروید رو ویندوزه منتها برعکس یعنی امولاتور کردن هسته ویندوز لذا برای نرم افزارهای پیش پا افتاده میتونه جوابگو باشه مثل تبلت های برای وبگردی ولی بهینگی نداره
اما سیتم عامل هایی هست که توسط apache توسعه داده یا مثلا hadoop که توسط یاهو ایجاد شده
میتونه در بخش سرور و پردازش از raspery pi استفاده کرد به این صورت که خوشه بندی میکنه و پردازش ها رو به نود های پردازشی میده
و بسیار کاربردی جون میده برای داده کاوی
arm اینده خیلی خوبی داره
………
کاری نداره برید تو گوگل بزنید
hardware compiler
شاید چیزی پیدا شد ما هم فیض بردیم
یک رفرنس بدید لطفا در مورد کامپایلر سخت افزاری
آقای آریایی یه چیزی میگم ناراحت نشی.بخاطر یک نفر آدم که فکر کنم اسمش محمد باشه شما نباید همه خواننده هارو جمع میبستی.ایشون به نظرم سن سالی نداره تازه دارن رشته کامپیوتر میخونن.کسی که بگه کلا کامپایلر سخت افزاری نداریم وضعیت روشنه.به قول اون دوستمون زیادی کشش دادین.اینم بگم عکسهای پروفایل توی سایتتون چرا نمیاد دیگه.مرسی
متاسفانه اکثر دوستان گفته های غلط این آقای آریایی رو بدون اینکه مورد بررسی قرار بدند تایید کردنند و پذیرفتند :emoji3
کدهای باینری یا همون دستورات زبان ماشین قابل تبدیل یا قابل اجرا توسط ماشین دیگر نیست. یعنی مثلا نمیشه دستورالعمل های x86 رو در ARM اجرا کرد.
درضمن مجموعه دستورات x86 رو هم نمیشه به معماری ARM اضافه کرد.
این آقا ظاهرا Emulator رو با کامپایلر و زبان ماشین قاطی کرده. اجرا شدن اندروید روی یک پلتفرم x86 یا اجرای برنامه های ویندوز بر روی ARM نیاز به یک Emulator داره. از جمله Emulator های اندروید میشه به BlueStacks اشاره کرد
الان شما موضع خودت رو چرا روشن نمیکنی؟شما تا دیروز میگفتی نه 64 بیتی هستش از معماری x86 پشتیبانی میکنه.الان داری یه چیز دیگه میگی کلا.صحبت سر اینه پشتیبانی میکنه الان اول اعتراف کن که پشتیبانی میکنه
فقط به شما باید تبسم زد
حداقل برو کامنتای اونجا رو بخون
سرچ کن ببین 64 بیت اصلا چی هست
اقای اریایی منو یاد این این ضرب المثل میندازه
خود گویی خود خندی عجب مرد هنرمندی
کامپایلر سخت افزاری اصلا چی هست
کامپایلر خودش یه نرم افزاره
صحبت با شما ها که حتما درسته جناب سید جواد
اصلا میدونی کامپایلر چی هست
مهندس 64 بیت یعنی پهنای داده
معماری سی پی یو x86
من کی گفتم
اشتباه اطلاعات ندید من درسشو خوندم
این چیزها رو وجدانا از کجا سر هم کردین؟؟ :-)):-))
اصلا در پردازنده ARM چیزی به نام کامپایلر وجود نداره. اصطلاح “کامپایلر سخت افزاری” 😮 رو این آقا از خودش در آورده و اصلا وجود خارجی نداره.
این (Compiled Hybrid Portable Executable (CHPE نه کامپایلر هست و نه درون پردازنده. در متن زیر مختصرا در این مورد توضیح داده شده :
On ARM though, running the DLLs in emulation has more of an overhead, so Windows on ARM does this translation slightly differently. The native system DLLs are a new type of file called CHPE (Compiled Hybrid Portable Executable) files. They’re compiled to ARM 64 code using the same source code as the native 64-bit versions of the DLL
همون طور که در متن گفته شده (CHPE) نوعی فایل DLLs هست که با استفاده از سورس کد اصلی کامپایل و تبدیل به دستورات قابل اجرا در پردازنده ARM شده. کاملا واضحه که گفته های ایشون در این مورد کاملا غلط و بی پایه است.
حتی تعریف کامپایلر برای ایشون ناشناخته است. (چیزی به نام “کامپایلر سخت افزاری” نداریم)
A compiler is computer software that primarily translates computer code from a high-level programming language to machine code to create an executable program
A compiler is a special program(software, not hardware) that processes statements written in a particular programming language and turns them into machine language or “code” that a computer’s processor uses
در دو متن بالا اشاره شده که اولا کامپایلر یک نرم افزار هست (نه سخت افزار) و ثانیا، صرفا کدهای یک زبان سطح بالا رو به کدهای ماشین مقصد تبدیل میکنه و کدهای یک ماشین (مثل x86) رو به ماشین دیگر (مثل ARM) تبدیل یا قابل اجرا نخواهد کرد. اما طبق تصورات و افاضات این آقا (CHPE) یک کامپایلر سخت افزاری! درون پردازنده هست که کدهای x86 روبرای ARM قابل اجرا میکند.!! :smiley3
به اون بچه ها که میگن نه x86 نیست خواستم بگم به صورت بومی دستورات x86 بومی میشن و وارد arm میشن پس در نتیجه چون پشتیبانی می کنه بهش میگن تراشه x86 که درسته.اون کسایی هم که گفتن کلا arm تراشه 64 بیتی نیست که دیگه فکر میکنم باید پارکشون رو عوض کنن.این بحث چقدر الکی بخاطر چند نفر تینیجر کش پیدا کرده بیخیال بابا همه میدونیم 64 بیتیه.ارزش نداشت بخاطر نظر چند تا بچه مقاله بنویسین
عب نداره دوست عزیز ما عادت داریم به این بازی ها.تا چند ساعت پیش میگفتند اصلا ARM پردازشگر 64 بیتی نیست!
درود بر شما ممنون 😡
متاسفانه یکی از بزرگترین مشکلات ما هم همین هستش بله :-bd
Cpu 128bit و windows 128 bit تا ۱۰۰ سال دیگه هم مورد نیاز ما نمیباشه
تو که توی اون مقاله قبلی میگفتی کلا ARM مدل 64 بیتی نداریم حالا چی شد زده جاده خاکی؟الان تکلیفت رو معلوم کن خلاصه.بار علمی نداری مگه مجبوری غرعز کنی:emoji0
وقتی نخوان متوجه بشی نمیشی دیگه.صحبت با امثال شما اشتباهه.وقتی هنوز نمیدونید کامپایلر سخت افزاری چی هستش دیگه نمیشه بات حرف زد.ویندوز ۱۰ روی پردازنده arm بهینه نیست؟مریض بودن پس اینکارو بکنن؟
سخت نگیرید
ملتی داریم که فکر میکنن خیلی حالیشونه و در همه مسائل اعلم هستند
مهم ترین تفاوت در زبان اسمبلی این دو معماری نهفته است
و تفاوت معماری ها و احتمالا تفاوت اجزای سخت افزاری مانند رجیسترها و سگمنت ها
کامپایلر ابتدا باید به زبان اسمبلی یا ماشین تبدیل کنه بعد تازه کامپایلر arm اونو به اسمبلی یا زبان ماشین مخصوص arm تبدیل کنه تا بتونه اجرا بشه
سلام ممنون بسیار مفید بود
اینکه خودتون گفتین با یک کامپایلر ران میکنه که یعنی افتضاح
اگر کارایی داشت ویندوز نسخه قابل اجرا بر arm تولید نمیکرد
این کارایی مانند dalvick cache اندروید قبل کیت کت هست
که سیستم اندروید رو ییک شبیه ساز اجرا میشد لذا کند و مصرف حافظه ی وحشتناکی داشت
لذا بعد از کیت کت سرعت و بهینگی اندروید بالاتر رفت
لذا کرنل جداگانه نوشته شد براش تا رو کرنل لینوکس اجرا نشه
باید قبول کنیم این دو تا یکی نیست
ندونستن عیب نیست نپرسیدن عیب
مهمترین دلیل اینکه احتمال جایگزینی با x86 بعیده اینه که
چند تا زبان برنامه نویسی رو arm کامپایل میشه که بشه باهاش نرم افزارهای غنی رو توسعه داد !!!!
زبان های کمی هستن
اگر به عکسی که از ای ام دی گذاشتین نگاه کنید این دو تا متفاوت هستند