У коментарі до цієї відповіді Кортук запитує, у чому полягає перевага ARM . Я спершу додав у свою відповідь кілька аргументів, але вважаю, що питання є досить цікавим, щоб бути питанням саме по собі, щоб отримати більше відповідей.
У коментарі до цієї відповіді Кортук запитує, у чому полягає перевага ARM . Я спершу додав у свою відповідь кілька аргументів, але вважаю, що питання є досить цікавим, щоб бути питанням саме по собі, щоб отримати більше відповідей.
Відповіді:
Продуктивність - одна перевага. Будучи 32-розрядним процесором, він перевершує (майже) всі 8-бітні контролери DMIPS-розумні. Ядро також пройшло кілька поколінь, читала оптимізації.
Ці оптимізації відображаються не лише у показниках продуктивності, але й у споживанні електроенергії . Останнє ядро вдвічі збільшило співвідношення DMIPS / МВт у порівнянні з попереднім поколінням (див. Також цю відповідь ).
ARM доступний у багатьох виробників , ніж будь-який інший мікроконтролер, і кожен з них має на вибір кілька варіантів, з різними комбінаціями на мікросхемі периферійних пристроїв, пам'яті та пакетів. Справа в суті: NXP пропонує не менше 35 контролерів з мікросхемою Ethernet .
Озброєння єнедорогий ; ARM був, мабуть, першим 32-розрядним контролером, який зламав бар'єр USD 1.
Ця комбінація продуктивності , широка пропозиція та низька вартість роблять його таким, що ви просто не можете ігнорувати ARM:
У 2005 році приблизно 98 відсотків усіх мобільних телефонів використовують хоча б одне ядро, розроблене ARM на своїх материнських платах, згідно з дослідженнями аналітичної фірми Linley Group. ( джерело )
Ринок мобільних телефонів має ще один ефект. Мобільні телефони дуже обмежені місцями і вимагають невеликих пакетів. LPC1102 NXP поставляється в пакеті WLP-16 всього 5 мм , що раніше використовувалося лише 8-бітовими мікроконтролерами з низьким числом контактів.
Один момент ще не згадується: У 1908 році хлопець на ім'я містер PL Робертсон винайшов нову вдосконалену головку гвинта та драйвер . Він хотів бути єдиною людиною, яка виробляє гвинти та драйвери для своєї конструкції. Десятиліття пізніше хтось інший на ім'я містер Генрі Ф. Філіпс придумав альтернативний дизайн . На відміну від містера Робертсона, містер Філіпс був більше зацікавлений у ліцензуванні його дизайну, ніж у виробництві гвинтів та драйверів.
Так само в 1970-х компаніях Sony винайшла технологія під назвою Betamax ; JVC придумав один під назвою VHS. Sony була зацікавлена у виробництві відеомагнітофонів; JVC більше зацікавився ліцензуванням.
Тут, здається, є закономірність. (Примітка: Intel на деякий час ліцензував свою технологію 80x86 , але вона протягом десятиліть була зосереджена більше на розробці технологій для внутрішнього використання.)
Те саме апаратне / програмне забезпечення для розробки ARM усіх постачальників. Ви купуєте JLINK / ULINK та деякі Keil IDE один раз і можете використовувати його для розробки, емуляції та налагодження майже будь-якого ARM на планеті.
Не потрібно вивчати нову архітектуру при переході до нового постачальника чіпів => менше постачальника замок => більше конкуренції => нижчі ціни
У сучасних технологічних процесах (0,18 і більше) ядро ARM настільки крихітне, що, пожертвувавши його 8-бітовим ядром, не врятує жодної видимої частки ціни. Звідси і причина стандартної високоефективної, але дешевої архітектури.
Продуктивність - лише за допомогою ARM ви можете мати одинарний тактовий примірник 32 * 32-> 32 та апаратну підтримку для 32 * 32-> 64 та поділ для пристроїв нижнього рівня (наприклад, для STM32 нижнього класу)
ARM не надто жадібний і не стягує необґрунтованих платежів за ліцензії, тому виробники можуть виробляти дешеві мікрофони.
Я зосереджуюсь на процесорах ARM середнього класу з цих причин:
Повна підтримка Linux
Це означає, що драйвери пристроїв майже безкоштовно. Я зробив досить USB-хост і код пристрою, більше не хочу цього робити. Я також не дуже в захваті від спроби додати TCP / IP до платформи випадкових процесорів (хоча LwIP / uIP не так вже й погано). Я ніколи навіть не намагався робити Wi-Fi, справжній стек Bluetooth, веб-камери тощо. Використання Linux означає, що дуже широкий набір пристроїв стає набагато простішим.
Я також був дуже вражений тим, наскільки раціонально та просто пишуть драйвери пристроїв Linux. Після виконання деяких драйверів пристроїв Windows Linux - це мрія. (Справедливо кажучи, рамки драйверів для Windows значно покращилися відтоді, як я це робив.)
Платформа програмного забезпечення також приголомшлива. Я отримую шифрування SSL, файлові системи, віддалене управління, прості оновлення програм (скопіюйте файл замість складного завантажувача) тощо. О, і багато існуючих утиліт, якщо вам потрібно щось зробити.
Крім того, роялті безкоштовно та набагато простіше прихилитися до своєї волі, ніж скажімо, що це буде платформа WinCE із закритим джерелом . (Не те, що я дуже багато ідеалістів з відкритим кодом. Це все дуже практичні міркування для мене.)
Я говорю про ядра ARM з фактичними MMU , тому це для мікросхем середнього та високого класу (хоча, напевно, ви можете використовувати μClinux ).
Споживання енергії
Це в основному повторення інших коментарів, але це для мене великий фактор. Моя поточна платформа ARM 454 МГц притягує 1/2 ват, 1 ват при максимальному процесорі. Ви навіть не можете наблизитися до цього з x86.
Це майже моє міркування. Я не бачу, як скоро змінюється рівняння.
АРМ прогресував:
Архітектура ARM дозволяє виконувати деякі досить складні операції дуже швидко - набагато швидше, ніж будь-який інший чіп. Наприклад (за допомогою ARM7-TDMI):
ldrh r0, [r10, # ADDR_BUS_OFS]; Читання адресної шини цільової системи (13 біт) ldrb r1, [r9, r0, lsr # 8]; Використовуйте верхні біти, щоб шукати адресу в таблиці обробників додати ПК, r9, r1 lsl №2; Перейдіть до відповідного обробника
Кожен обробник зберігається як байт, який дає 1/4 зміщення адреси з початку таблиці. Чистий ефект полягає в тому, що після того, як вміст адресної шини буде отримано, потрібно лише шість циклів (дві інструкції), щоб перейти до обробника на основі п’яти верхніх бітів отриманої таблиці, використовуючи 32-байтну таблицю переходу.
Відповідний код THUMB буде більше схожий на:
; Припускаючи, що нам не потрібно r6 / r7 ні для чого іншого, вони призначені з r9 / r10 ldrh r0, [r7, # ADDR_BUS_OFS] mov r1, r0 lsr r1, r1, # 8; THUMB вимагає, щоб джерело та місце призначення були однаковими ldrb r1, [r6, r1] lsl r1, r1, # 1; Можна використати shift-left-two, якщо цільові адреси були вирівняні повним словом додати ПК, r1
Це добре з точки зору щільності коду, враховуючи, що вказівки є лише наполовину більшими, ніж оригінали, але після вибору буде тривати дев'ять циклів, а не шість. У додатку, де шина, яку переглядають, буде працювати зі своєю швидкістю, незалежно від того, чи змогла ARM впоратися з цим чи ні, більш швидкі інструкції щодо ARM - це великий плюс.
Між іншим, Thumb2 є бінарним сумісним з Thumb, що полегшує використання попередніх інструментів, але означає, що є деякі речі, які він не може зробити так само, як оригінальний ARM. Наприклад, в ARM можна було "обертати" 8x8 біт-карту, що міститься в чотирьох регістрах, використовуючи близько 3 інструкцій на два біти:
movs r0, r4, lsl # 25; Помістіть верхній біт LSB в C і наступний біт в N orrcs r6, # 0x00000001 orrmi r6, # 0x00000100
У Thumb2 слід було б додати явні умовні вказівки:
movs r0, r4, lsl # 25; Помістіть верхній біт LSB в C і наступний біт в N itcs orrcs r6, # 0x00000001 itmi orrmi r6, # 0x00000100
Чисте зменшення ефективності часу та простору на 33% порівняно з ARM; це, мабуть, найгірший приклад того, що код Thumb є менш ефективним, ніж ARM, і навіть це не зовсім жахливо.
Ще один незначний недолік Thumb2 порівняно з ARM: в ARM-коді всі інструкції починаються з повноцінних меж слова, полегшуючи статичний аналіз. У Thumb2 вказівки можуть довільно починатись з меж півслова та обводити межі повних слів. Статичний аналіз може бути набагато складніше.
Трохи - це історія, Acorn захотів користувальницький процесор (наприклад, із вбудованими елементами управління пам’яттю тощо) для нового комп’ютера 1980-х років (8-бітний 6502 обмежував те, що вони могли зробити). Вони розмовляли з Intel, але Intel не надала їм ліцензований процесор.
Тож Acorn створив дуже простий процесор RISC, але оскільки вони не були виробником процесорів, вони готові були ліцензувати його будь-кому (і потрібні були всі швидкі гроші, які вони могли отримати!). (Я вважаю, що ЦП працював вперше, почасти тому, що це було так просто, а також дизайнер створив багато дослідницьких процесорів, перебуваючи в Кембриджському університеті.)
З роками дизайн процесора стає простішим і простішим для включення в дизайн клієнтських чіпів.
Виробник чіпів відчував безпечне ліцензування від Acorn, оскільки вони не були конкурентом. Також ніхто не думав, що вони збираються в рідне місто конкурента отримати ліцензію, оскільки Жолудь була в Кембриджі (справжній!) . (Чи мав шанс на поїздку «виявити факт» до Кембриджу, щоб відвідати Жолудь, впливає на скорочення переліку варіантів у будь-який момент…).
Багато конструкцій, які включають процесор Acorn Risc Machine для вбудовування системи, були важливими для використання енергії. Для процесора Acorn Risc Machine також були створені дешеві та хороші інструменти розробки.
Тож коли мобільні телефони почали потребувати користувацьких чіпів із вбудованим процесором, Acorn було перейменовано на ARM, а решта - історія. (Можливо, трохи було й те, що інші процесори здебільшого контролювали США, але мобільні спочатку стали нормальними в Європі)
(Чи нагадує щось із цього про Microsoft та Dos із невеликою невідомою командою від IBM?)
Той факт, що ARM був одним із найкращих процесорів на той час (і досі є) для багатьох завдань, також допоміг - але просто мати "найкращий" дизайн процесора недостатньо.
Крім технічних проблем, для ARM є багато нетехнічних причин. Але швидка відповідь така: це не Intel (або x86).
Якщо ви подивилися, куди зараз вкладаються долари для R&D процесора, вони в основному потрапляють у два табори: ARM та Intel. (Я ігнорую невеликі MCU, і я збираю AMD разом з Intel.) В PowerPC, MIPS, SPARC та інші великі процесори йде дуже мало грошей. ARM та Intel - єдині, які все ще стоять.
З процесорами Intel та іншими процесорами x86 ви отримуєте величезну кількість застарілого багажу. Наприклад, вам потрібен чіпсет, BIOS та інші речі. Навіть якщо процесор був надзвичайно енергоефективним, ці інші пристрої, як правило, зважують вашу систему та роблять її більшою, більш голодною та потужнішою. Просто розробка плати з процесором Intel - це величезна проблема, і тоді вам доведеться домовитись з постачальником BIOS і т. Д. Щоб гірше було, багато постачальників чіпсетів, BIOS, відео чіпів тощо просто не хочуть вести бізнес із маленькими людьми, які не продадуть менше мільйона одиниць на рік.
З ARM у вас немає цього багажу. Є багато джерел мікросхем від мікроконтролерів до багатоядерних монстрів. Вам не потрібно мати справу з ліцензуванням BIOS (це дуже схоже на продаж продавця вживаних автомобілів). А виробники та постачальники, як правило, вам приємні.
Порівняйте ARM7 / ARM9 з MIPS IV, і немає мало переваг, окрім питань, які вже були згадані щодо ліцензування. Внутрішній набір інструкцій MIPS та внутрішня шина роблять його вищим (продуктивність за вартість) для певних типів конструкцій; саме тому багато Wi-Fi маршрутизатори використовують ядра MIPS, а не ядра ARM.
Оскільки ARM-сердечники застосовувалися здебільшого для портативних пристроїв, ASIC додали більше функцій контролю потужності, тоді як MIPS більше фокусується на продуктивності за цикл, а не на меншій потужності. Перевага RISC над Intel x86 - це інша дискусія.