Используют ли процессоры ARM, такие как cortex-a9, микрокод?

используют ли процессоры ARM (последние и старые) микрокод?
Если это так, то зачем? Не инструкции достаточно просты для запуска напрямую не переводится на микро-ОПы?

5
задан unor
источник

1 ответов

TL,DR; в то время как процессоры ARM используют аналогичные концепции для микро-кодированных процессоров (например, есть аппаратный блок, который декодирует инструкции в один или несколько микро-операции), они не microcoded в традиционном смысле которое использует ROM для того чтобы хранить каждая микро -- инструкция, ни может эти микро -- инструкции/деятельности быть доработанным после произведенный в фактическом оборудовании. Действительно,ARM процессоры используют hardwired контроль в декодер команд для генерации микро-операций.

на практике, однако, изменение декодера инструкций может быть аналогично изменению микрокодированного процессора, так как ARM лицензирует язык описания оборудования (HDL) исходный код своих архитектур C. P. U. к индивидуальным изготовлениям, делая изменения аппаратн-уровня значительно более легким снабдить. Смотрите декодер инструкций в разделе в микропроцессоре Wikibook для более различия между типичными RISC и CISC декодерами команд.


в то время как сама архитектура ARM не microcoded в традиционном смысле, индивидуальные инструкции are расшифровано в более малые микро -- деятельности. Современный процессор ARM далек от "простого" - хотя сами инструкции очень ортогональны, существует много современных технологий (например, конвейеризация, сверхскалярные инструкции, не в порядке выполнение, кэширование, расширенные сложные инструкции, такие как блоки с плавающей запятой или неоновые инструкции), которые имеет современное ядро A9. Действительно, любой процессор может быть достаточно простым для выполнения без перевода на микро-операции, но это, по сути, помещает "все ваши яйца в одну корзину" - вы не можете исправить любые возможные ошибки в наборе инструкций или расширить/изменить его после производства.

однако, если мы говорим только о инструкция decode этап, затем действительно, многие процессоры ARM не microcoded в путе который позволяет изменению после -- факт, хотя это может быть потому что большинств изготовлениям лицензируя технологию рукоятки дают доступ к фактическому исходному коду оборудования (написанному в HDL). Это снижает энергопотребление, поскольку этап микрокода не требуется, но отдельные инструкции "компилируются" в фактические аппаратные блоки. Это также позволяет для коррекции опечаток каждым изготовлением.

действительно, даже в CISC-процессоре (например, x86) нет требование для использования микрокода. Однако на практике сложность набора инструкций в сочетании с различными различиями в лицензировании, энергопотреблении и приложениях делают выбор микрокода идеальным для x86. Однако в случае ARM это менее полезно, поскольку изменения в наборе команд (декодере) намного проще реализовать и контролировать с точки зрения самого оборудования (поскольку его можно настроить от производителя.)


хотя иметь микрокод может фактически упростить дизайн процессора в некоторых случаях (по мере того как каждая инструкция Существует как "микро-программа" в отличие от фактического оборудования), это эффектно как раз дешифратор инструкции (например Thumb - 2 extension, позволяя инструкции переменной длины, чтобы существовать, добавив отдельный дешифратор команд в линию с рукой дешифратор команд). Хотя функционально эти блоки можно снабдить используя микрокод, это не было бы велемудро оперируя понятиями расхода энергии, по мере того как вам нужно определить выход для каждого сигнала управления в C. P. U. самом, даже если необходимый. Это делает не имеют какое-либо отношение к тому, насколько "сложным" является сам ЦП, однако, поскольку ядра ARM имеют все современные конструкции, которые можно было бы ожидать (конвейеризация, кэш команд/данных, буферы micro-TLB, прогнозирование ветвей, виртуальная память и т. д...).

в случае рукоятки, учитывая ортогональность набора команд, сложность реализации такого подхода платформах будут перевешивать выгоды от изменения соответствующего оборудования непосредственно в инструкции блока дешифратора. Хотя это, безусловно, возможно, это заканчивается "изобретением колеса", так сказать, учитывая, что вы можете напрямую изменять (и компилировать/тестировать/эмулировать) изменения в оборудовании.


вы можете" думать " о самом исходном коде ARM как тип микрокодирования в этом случае, хотя вместо хранения каждой микрооперации / микропрограммы в ПЗУ, которые могут быть изменены после факта, они реализованы непосредственно в аппаратном обеспечении в декодере команд. Учитывая, что сам декодер инструкций написан на VHDL / Verilog, внесение изменений в существующие инструкции так же просто, как изменение исходного кода, перекомпиляция и тестирование нового оборудования (например, на FPGA или симуляторе). Это контрастирует со сложностью современных x86 аппаратное обеспечение, которое гораздо сложнее протестировать / смоделировать во время разработки, и еще сложнее модифицировать после производства (так как размер транзисторов намного превышает то, что можно запустить внутри даже самых дорогих современных Плис, тем самым добавляя преимущество в использовании микрокода). Конечно, то же самое относится и к ARM, но разница в разработке - можно внести изменения в аппаратное обеспечение процессора, а затем непосредственно увидеть/протестировать изменения на физическая оборудование использование ПЛИС.

11
отвечен Breakthrough 2015-07-03 18:44:32
источник

Другие вопросы arm cpu