خلاصه بگوییم، کمپانی انگلیسی آرم هیچ تراشهای نمیفروشد، کارش فقط طراحی است و مأموریت تولید و فروش تراشهها را به مشتریان بزرگ خود مثل اپل، سامسونگ، کوآلکام و دیگران سپرده است. این مشتریان برای دریافت انواع لایسنس یا گواهی و تولید هر تراشه هزینههایی متقبل میشوند و بدینوسیله آرم کسب درآمد میکند. توضیحات بیشتر در «» و «»
قبل از بررسی فعالیت اخیر آرم به بازار پیسیها سری بزنیم. در این بازار همواره با جدیدترین و بهترین معماریهای خود حضور پررنگی داشته است. یک معماری با تعداد هستهها، میزان کش یا حافظهی میانجی، فرکانس کاری و تفاوتهای کوچک دیگر به صورت پردازندههای مختلف وارد بازار میشود. امسال نسل چهارم پردازندههای Core موسوم به Haswell را در بازار شاهد هستیم که در مدلهای مختلف عرضه شدهاند.
اینتل در سال 2008 یک معماری دیگر برای وسایل ارزانقیمت و کممصرف تحت عنوان Atom معرفی کرده بود. قیمت برخی از مدلهای اتم حتی به اعداد دو رقمی کوچک هم میرسد و این در حالی است که پردازندههای Core ویژهی دسکتاپ چند صد دلار قیمت دارند. اینتل طراحیهای دیگری هم برای سرورها دارد که از بحث این مقاله خارج است.
اگر بحث را به وسایلی همچون گوشی هوشمند، تبلت و لپتاپ و دسکتاپ محدود کنیم، اینتل دو معماری ارایه کرده و آرم سه مورد. محصولات آرم را در تصویر زیر ببینید، آبیها تاکنون عرضه شده و در طیف وسیعی از وسایل الکترونیکی مورد استفاده قرار گرفتهاند و سبزها هنوز یک قدم تا کاربرد فاصله دارند.
البته در نمودار فوق به محور افقی توجه نکنید چرا که زمان فراهم شدن لایسنس را نشان میدهد نه تولید و عرضهی تراشهها. در کنار سه معماری فوق دو لایسنس دیگر یعنی Cortex R و Cortex M هم معرفی شده که اولی کاربرد داخلی یا جاسازی شده دارد و دومی در مایکروکنترلرها به کار میرود. این دو کاربرد هم از بحث این مقاله خارج است.
در حال حاضر Cortex A15 پرچمدار هستههای آرم است، Cortex A9 در ردهی متوسط قرار میگیرد و در انتها Cortex A7 است که در محصولات ارزانقیمت و ردهپایین بازار دیده میشود. اگر بخواهیم محصولات آرم را در برابر رقبای اینتلی بچینیم، A15 در برابر مدلهایی از خانوادهی Core با ولتاژ بسیار پایین و فرکانس کم مثل مدلهای سری Y قرار میگیرد. Cortex A9 در مقابل اتمها قد علم میکند و در نهایت Cortex A7 معماری کممصرف و ارزانی است که اینتل هنوز رقیبی برای آن ارائه نکرده است. همین دستهی سوم پاسخ این پرسش است که چرا اینتل دو معماری کلی ارایه کرده و آرم سه مورد، آرم با وجود A7 طیف وسیعتری از وسایل همراه ارزان و کممصرف را به سمت خود کشانده است.
توان مصرفی متغیرتر
اگر در چند سال اخیر گاهاً اخبار تراشهها و گجتها را دنبال کرده باشید، حتماً متوجه این موضوع شدهاید که تمام طراحان و سازندگان سعی در بهینه کردن مصرف انرژی دارند و یکی از راههای اصلی و اساسی طراحی تراشهای با توان مصرفی متغیرتر است. به این صورت که توان مصرفی در بارهای پردازشی متوسط روند نزولی داشته، اما بیشینهی توان مصرفی روند صعودی طی کرده است، بنابراین تراشههای امروزی در بار سبک پردازشی، کممصرفتر از گذشته هستند و در بار پردازشی سنگین، توان بیشتری مصرف کرده و قدرت پردازشی بسیار بالاتری ارایه میکنند.
به نمودار زیر توجه کنید، نموداری که پیشبینی آرم در مورد توان پردازشی هر هسته را تا سال 2017 به صورت تخمینی نشان میدهد. این روند صعودی نتیجهی بهبود روشهای تولید و طراحی بهینهتر معماری هستههاست.
خط آبی محصولات رده اول را نشان میدهد و مشخص است که در سال 2017 به مرحلهای میرسیم که هستههای رده اول از نظر اندازه، مصرف انرژی و قیمت برای وسایل همراه مناسب نیستند به این صورت که بزرگ و پرمصرف و گران تمام میشوند. اما چرا آرم اینگونه پیشبینی و برنامهریزی کرده است؟
پاسخ این است که آرم در آینده برای محصولاتی به غیر از گوشیها و تبلتها هم نقشه کشیده است. بازاری که اینتل از آن سود بسیاری کسب میکند. آرم در اولین قدم با Cortex A57 تغییر زیادی در تراشهها ایجاد کرده و به سمت سرورها و شاید پیسیها، ویندوز آرتیها و کروم بوکها حرکت میکند.
در حال حاضر Cortex A15 تنها در محصولات خوب بازار دیده میشود اما در سالهای آتی احتمال عرضهی محصولاتی با قدرت پردازشی مشابه و در عین حال کممصرفتر بالاست.
فلسفهی وجودی Cortex A12
در سالهای اخیر Cortex A8 و A9 در گوشیها به وفور به کار رفتهاند. جایگزینی برای A9 عرضه نشد و شاید آرم بهینه کردن A15 برای مصرف کمتر توسط مشتریانش را برنامهریزی کرده بود. اما بیشتر مشتریان آرم از مساحت نسبتاً زیاد A15 برای ایجاد توان پردازشی بالاتر استفاده کردند و لذا توجه کمتری به بهینه کردن مصرف انرژی آن نشان دادهاند. شاید تنها اپل بوده که از مساحت زیاد تراشه برای بهینه کردن توان مصرفی استفاده کرده است.
به هر حال این نیاز عمیقاً حس میشود که Cortex A9 به یک جانشین مناسب نیاز دارد. تاکنون فاصلهای که بین هستههای A9 و A15 وجود دارد، توسط برخی از هستههای کریت که کمپانی کوآلکام طراحی کرده پر شده است. بنابراین آرم هم به فکر افتاده و Cortex A12 را معرفی کرد تا مشتریان خود را از دست نداده و انتخاب بهینهتری برای ساخت گوشیهای آینده در اختیارشان قرار دهد.
معرفی Cortex A12 با تمام ریزهکاریهای ظاهری آن
در اولین نگاه میتوان گفت که A12 یک معماری با دو تخصیص یا Issue و OoOE است به این معنی که دستورات را خارج از نوبت پردازش میکند. کش سطح دوم به صورت مجتمع است و میتوان آن را به شکل چندهستهای مورد استفاده قرار داد.
تیمی که روی Cortex A9 کار نموده، روی A12 هم کار کرده است اما حاصل کار یک معماری مشتق شده از A9 نیست، A12 برگرفته از A9 است.
اما به تفاوتها بپردازیم. در A9 از کانال اطلاعات یا پایپلاینی با 8 تا 11 مرحله استفاده میشد و حالا در A12 این تعداد به 10 الی 12 مرحله افزایش یافته است. هنوز هم دو تخصیص در آن وجود دارد و به عبارت دیگر در هر سیکل کلاک دو دستور از صف Decode به صف مرتبسازی مجدد دستورات تخصیص مییابند. اما تفاوت A12 با A9 در این است که اجرای خارج از نوبت کامل است و لذا ذخیرهسازی و بارگذاری کاملاً خارج از نوبت صورت میگیرد. در نهایت از واحد پردازش کدهای FP/NEON هم در هر هسته استفاده شده است. منظور از FPU واحد پردازش اعداد ممیز شناور است و NEON هم یک روش اجرای بهینهی کدها برای کاربردهای خاصی مثل مالتیمدیا یعنی دیکد و اینکد ویدیو و صدا، گرافیک 2 بعدی و 3 بعدی، پردازش صدا یا تصویر و غیره است.
A12 از نظر معماری سلسله دستورات با Cortex A7 و A15 سازگاری داشته و همان قابلیتها را ارائه میکند. هر سه معماری از آدرسدهی فیزیکی 40 بیتی پشتیبانی میکنند. همگی واسط گذرگاه 128 بیتی AXI دارند و سلسله دستورات 32 بیتی ARM-v7A را پشتیبانی میکنند، البته NEON در A12 به صورت استاندارد درآمده است. سازگاری A12 با A7 و A15 به حدی است که در نهایت میتوان آن را به صورت big.LITTLE در کنار مجموعهای از هستههای A7 مورد استفاده قرار داد، البته در اولین نسخهها واسط منسجمی که جهت big.LITTLE لازم است، وجود نخواهد داشت. برای آشنایی بیشتر و دریافت اطلاعات کامل به در زومیت سری بزنید.
یکی از تفاوتهای A12 با A9 در حافظهی کش سطح 2 است که حالا به صورت مجتمع در آمده اما در A9 به صورت جداگانه وجود داشت. بنابراین حالا سیستم عامل نیازی به اطلاع از وضعیت کش سطح 2 ندارد، چیزی که در A15 و A7 شاهد آن هستیم. کش سطح 2 با ولتاژ و فرکانس کاری جداگانهای کار میکند و میتوان فرکانس را با فرکانس هستهها هم هماهنگ کرد. در A12 میتوان کش سطح 2 را بین 4 هسته و کمتر به اشتراک گذاشت. اگر به تراشههایی با هستههای بیشتر نیاز باشد، میبایست دستههای 4 تایی A12 را در کنار هم قرار داد.
کش L1 دستورات به صورت 4 «راههی شرکتپذیر جمعی» یا 4 Way Set Associative است و اندازهی آن 32 یا 64 کیلوبایت است. منظور از 4 راههی شرکتپذیر جمعی این است که هر یک از خانههای حافظهی اصلی در 4 خانه در حافظهی کش اندیس میخورد و به عبارتی آدرس آن در 4 موقعیت موجود است تا دسترسی به آن سریعتر شود. اندازهی خط کش در A12 نسبت به A9 دو برابر شده و 64 بایت است. علت این افزایش تطابق بهتر با کنترلر حافظههای DDR و نیز طراحیهای A7 و A15 است.
کش TLB که برای بهینه شدن ترجمهی آدرسهای مجازی به فیزیکی در پردازنده کاربرد دارد نیز مشابه Cortex A9 است، بنابراین این بار هم شاهد یک میکروتیالبی دستورات به صورت کاملاً شرکتپذیر و TLB اصلی به شکل یکپارچه هستیم گرچه ممکن است اندازهی این دو تغییر کرده باشد.
یکی از بهینهسازیهای دیگر A12 نسبت به A9، واحد پیشگوییکنندهی انشعاب است. در دستوراتی مثل if و که با انشعاباتی مثل else و then مواجه میشویم، هر اتفاق احتمالی یک انشعاب یا شاخه محسوب میشود و اگر بتوان قبل از اجرای منطقی دستور، نتیجه و شاخهی احتمالی را پیشبینی کرد، جریان دادهها در پایپلاین دستورات بهینهتر میشود. بنابراین واحد پیشگوی انشعاب یا Branch Predictor در بهینهسازی کارایی پردازندههایی که دارای پایپلاین هستند، نقش مهمی دارد.
درست 4 ماه پیش بود که تیم طراحی A12 با یک تصمیم مهم روبرو شد، آیا از پیشگوی شاخهای که در A9 استفاده کردیم، مجدداً استفاده کنیم؟ پیشگوی انشعابی که برای Cortex A9 طراحی شده نسبت به کارایی کلی A9 بیش از حد ضعیف بوده و لذا تیم طراحی به اشتباه خود در گذشته کاملاً واقف بود. بنابراین به فکر یک طراحی آماده و بهینهتر از A9 افتاد و در نهایت پیشگوی انشعاب Cortex A53 را انتخاب کرد و البته تغییرات کوچکی نیز در آن ایجاد کرد. بنابراین A12 با پیشگوی انشعابی مشابه A53 عرضه خواهد شد و لذا کارایی بالاتر و مصرف انرژی بهینهتری خواهد داشت.
معرفی Cortex A12 و بهینهسازیهای داخلی آن
تا اینجا در مورد تغییرات ظاهری A12 صحبت کردیم و از بهینهسازیهای کوچک و بزرگ آن گفتیم؛ اما عاملی که کارایی آن را به شدت بالا برده، بهینه شدن هستههایی است که دستورات را اجرا میکنند. در A12 هم مانند A15 چندین صف تخصیص مستقل قبل از اجرا وجود دارد. بهتر است اصطلاحات لازم را تعریف کنیم و بیشتر به بررسی هستهها و روند پردازش بپردازیم.
دستورات به دو نوع ریز عملیات یا میکروآپس رمزگشایی شده و بعد از تغییر نام به صف تخصیص ارسال میشوند. در صف تخصیص تا زمانی که عملوند موردنظرشان در دسترس قرار بگیرد، منتظر میمانند. تا قبل از تخصیص دستورات همه چیز به ترتیب انجام میشود ولی عمل تخصیص ممکن است به صورت خارج از نوبت یا Out of Order صورت گیرد.
در Cortex A9 تنها یک صف تخصیص پیش روی تمام واحدهای اجرایی بود، اما در A12 سه صف مستقل برای تخصیص در نظر گرفته شده است. تفاوت دیگر در اندازهی صف است، در A9 تنها 4 دستور رمزگشایی شده در صف تخصیص قرار میگرفت، اما در A12 این تعداد نیز افزایش داشته است. استفاده از صفوف تخصیص بزرگتر و مستقل در افزایش IPC یا تعداد دستورات اجرا شده در یک سیکل کلاک موثر است.
اما سه صفی که در A12 وجود دارد یکی برای اعداد صحیح است، یکی به بارگذاری و ذخیرهسازی داده مربوط میشود و آخرین مورد به FP/NEON اختصاص یافته است. خوشبختانه آرم تمام جزئیات را توضیح داده است و دیاگرام بلوکی زیر حاصل آن است. بلوکهای آبی بخشهای ترتیبی طراحی A12 را نمایش میدهند، بخشهای قرمز نیز خارج از نوبت هستند.
اما به دیاگرام بلوکی A9 هم نگاهی بیاندازیم و مقایسهای کنیم:
در Cortex A12 دو پایپلاین عدد صحیح که قبلاً در A9 به کار رفته بود، مجدداً استفاده شده با این تفاوت که پشتیبانی از تقسیم اعداد صحیح نیز به آن اضافه گشته است. در A7 و A15 نیز تقسیم اعداد صحیح به صورت سختافزاری وجود دارد، چیزی که در سایر معماریهای سری A آرم پشتیبانی نمیشود. سایر قابلیتهای پردازش اعداد صحیح تغییری نکرده است.
واحدهای FP و NEON کاملاً بهینه شدهاند. در زمان معرفی Cortex A9 از دستورات NEON به شکل نادری استفاده میشد و حتی انویدیا در تگرا 2 پشتیبانی از کدهای NEON را به کلی حذف کرد. حالا شرایط تغییر کرده و چنین کدهایی به شکل گستردهتری مورد استفاده قرار میگیرند.
در A12 رجیسترهای فیزیکی جداگانه برای اعمال صحیح و ممیز شناور یا FP در نظر گرفته شده، درست مثل A9 با این تفاوت که اندازهی رجیسترها افزایش یافته است.
Cortex A9 یک معماری خارج از نوبت است با اینوجود تمام دستورات ممیز شناور و NEON به صورت ترتیبی انجام میشوند. در A12 آرم یک معماری کاملاً خارج از نوبت معرفی کرده است. حداقل اگر اعمال حافظه را در نظر نگیریم، اینگونه است.
در A12 صف تخصیص دستورات ممیز شناور و NEON به صورت دو تخصیصی است و هر دو صف دستورات تخصیص داده شده به صورت کاملاً خارج از نوبت عمل میکنند. صفوف FP و NEON به شکل فشردهتری جفت شده و لذا حرکت اطلاعات بین واحدهای اینتیجر و ممیز شناوری سریعتر است.
به زودی در بنچمارکها شاهد اثر بهینهسازی واحدهای ممیز شناوری و NEON خواهیم بود. فعلاً آرم نتیجه را با اعمال بار پردازشی FFMPEG روی هستههای شبیهسازی شدهی A9 و A12 به ما نشان داده، هستهها و فرکانس کاری مشابه است:
48 درصد افزایش در سرعت اجرای کدهای NEON عجیب نیست، آن هم با در نظر گرفتن تغییرات بزرگی که در موتور اجرایی NEON صورت گرفته است.
جمعبندی و پیشبینی کارایی نهایی Cortex A12
لایسنس استفاده از هستههای Cortex A9 آرم اولین بار در سال 2009 عرضه شد در حالیکه طراحی آن از چند سال قبل شروع شده بود. از سال 2009 تا به امروز در بازار گوشیهای هوشمند اتفاقات زیادی رخ داده و شرایط به کلی تغییر کرده است. استفاده از کدهای NEON و اعداد ممیز شناور گسترش یافته، فرکانس دسترسی به حافظهی رم بالا رفته و نیاز به کارایی بالاتر هستهها کاملاً حس میشود. در این شرایط هستههای Cortex A9 پاسخ خوبی برای وسایل همراه نیست، اما خوشبختانه Cortex A12 ضعف A9 در بخش محاسبات ممیز شناوری و دسترسی به حافظه را پوشش میدهد.
آرم از Cortex A9 به عنوان هستههایی برای اجرای خارج از نوبت دستورات یاد میکند، اما در واقع محاسبات ممیز شناور و اعمال مرتبط با حافظه به صورت ترتیبی صورت میگیرد. خوشبختانه Cortex A12 این مشکل را ندارد و به سمت اجرای کاملاً خارج از نوبت تمام اعمال حرکت کرده است. عملکرد هستههای Cortex A9 در سالهای آتی با توجه به استفاده از لیتوگرافی 28 نانومتری HPM و در نتیجه افزایش فرکانس کاری هستهها، بهبود مییابد ولیکن Cortex A12 طراحی بهتری دارد و کارایی آن فراتر خواهد بود. از همه مهمتر بازدهی آن نیز بالاتر است.
آرم تنها با در نظر گرفتن IPC یا تعداد دستوراتی که در یک سیکل کلاک اجرا میشوند، افزایش 40 درصدی کارایی نسبت به Cortex A9 را در A12 عنوان کرده است. توان مصرفی و محدودیت مساحت تراشه جالبتر است. آرم مدعی است که اگر Cortex A12 با همان فرآیند تولید Cortex A9 ساخته شود، توان مصرفی آن همان مقدار قبل و حتی پایینتر خواهد بود. استفاده از هستههای A12 به مساحت بیشتری هم نیاز دارد که تا 40 درصد بیشتر از A9 است. در حقیقت برای افزایش کارایی و در عین حال بازدهی، مساحت بیشتری صرف شده است. قبلاً افزایش کارایی Cortex A15 مسبب طراحی دو معماری Cortex A9 و A12 شده و حالا با افزایش اندازه و کارایی A12 انتظار داریم که دو خانوادهی A7 و A53 تحت آن گسترش یابند.
نگرش خاص آرم در طراحی و تولید تراشه اجازهی استفادهی وسیع و دلخواه از معماریهای معرفی شده را به تولیدکنندگان بزرگ تراشه میدهد. همیشه اگر استفاده از یک هسته منجر به افزایش مساحت تراشه و توان مصرفی شود، میتوان از یک جایگزین کوچکتر با بازدهی بالاتر استفاده کرد.
لایسنس استفاده از طراحی Cortex A12 به مرحلهی نهایی رسیده و در حال حاضر برای مشتریان آرم قابل استفاده است. اولین تراشههای طراحی شده مبتنی بر هستههای جدید احتمالاً یک سال بعد عرضه میشود، بنابراین اولین محصولاتی که از معماری جدید آرم استفاده میکنند در اواخر سال 2014 و اوایل 2015 وارد بازار خواهند شد.
در این میان یک سوال مهم وجود دارد، اینکه زمان عرضهی Cortex A12 مناسب است یا حالا با وجود رقبای بهینه شده و کممصرفی مثل هستههای کریت 300 کوآلکام و هستههایی که در آینده رونمایی میشوند، جایی برای آن وجود ندارد؟
دوست نداریم هیچ محصولی را بد قلمداد کنیم، شاید قیمت مناسب منجر به جذب مشتری شود. بنابراین اگر آرم قیمت رقابتی و پایینتر از تراشهی S600 کوآلکام در نظر بگیرد، هستههای Cortex A12 برخی از مشتریان هستههای کریت 300 را جذب خواهد کرد.
در نهایت به نسخهی چهارم یا r4 هستههای Cortex A9 اشاره کنیم که از نظر پیشگویی انشعابات و سیستم حافظه بهبود پیدا کردهاند و فعلاً پرچم آرم را بالا نگه میدارند. آرم از کاربرد بهینهتر Cortex A15 هم سخن گفته است و باید منتظر تولید تراشههای بهتری نیز باشیم.