| На главную | Новости | Подписка | Поиск по сайту | Форум | E-Mail | | Участие в базе цен | Реклама на сайте | |
||
|
||
ТехподдержкаСтатьи |
Техподдержка: |
Процессоры Transmeta CrusoeВведениеПроцесс представления процессора Transmeta Crusoe широкой публике вызвал горячий интерес к новинке, благодаря обещаниям высокой производительности и продлению жизни батарей. А параллельное заявление целого ряда ведущих производителей ноутбуков о начале разработки мобильных компьютеров на базе процессоров Transmeta подстегнуло интерес потребителей, так как новые системы должны бы вроде существенно отличаться от существующих по уровню цена/производительность, причем в лучшую сторону. На самом деле Transmeta не просто разработала новый процессор. Она создала новый подход к проектированию микропроцессоров. Современные процессоры создаются с аппаратно зашитой системой команд (например, любой x86, типа Intel Pentium III), и затем пишется программное обеспечение, использующее этот набор команд. Transmeta же пошла по принципиально другому пути. Вместо того чтобы как все иметь полный аппаратный набор x86 команд, процессор Crusoe состоит из компактного аппаратного ядра-движка окруженного программным уровнем. Аппаратная компонента очень проста, это высокопроизводительный VLIW (Very Long Instruction Word) движок, характеризующийся малым энергопотреблением, имеющий набор команд абсолютно непохожий на команды процессоров x86. А программный уровень создает у исполняющихся приложений впечатление работы на процессоре x86. Этот программный уровень называется Code Morphing (программное обеспечение трансформации кода), из-за того, что он транслирует инструкции x86 в "родной" аппаратный набор команд движка. Подобный уникальный подход к исполнению x86 кода позволяет отказаться от миллионов микротранзисторов, заменив их программным обеспечением. Например, существующие варианты процессоров Crusoe используют, грубо говоря, одну четверть от количества микротранзисторов, требуемых для аппаратной реализации процессора подобной сложности. Кроме очевидного уменьшения стоимости, данный подход имеет следующие положительные стороны:
Однако, программная реализация не может оказаться столь же быстрой как аппаратная. Даже будучи закодированной в машинных кодах, "родном" языке программирования процессора. Ниже мы постараемся дать вам некоторое представление о том, как же функционирует Crusoe и проанализировать предполагаемую производительность. Code MorphingПрограммное обеспечение Code Morphing представляет собой динамическую систему трансляции; программу, которая компилирует команды набора одной архитектуры в собственную систему команд. Все программное обеспечение Code Morphing размещается во flash ROM и является первой программой, с которой начинается загрузка. Вот почему программы, исполняясь на Crusoe, не могут отличить его от обычного x86 процессора, ведь все, что они видят это Code Morphing, работающий в точности как любой другой x86 процессор. Единственной программой, которая была написана специально для движка Crusoe VLIW, является программное обеспечение Code Morphing. Благодаря Code Morphing, все программы x86, и BIOS и операционная система изолированы от аппаратного набора инструкций. Поэтому "родной" набор инструкций процессора может быть изменен без всякого воздействия на любое программное обеспечение. Единственное, что надо при этом изменить, так это Code Morphing. Следующим большим преимуществом является решение проблемы, которая давно препятствовала принятию VLIW процессоров. Традиционный VLIW процессор дает доступ компилятору к своему конвейеру, в результате чего любое изменение конвейера ведет к полной перекомпиляции всех подпрограмм, чтобы они были совместимы с измененным конвейером. Другими словами, любая модификация аппаратной реализации процессора требует перекомпиляции всех подпрограмм. Проблемы изменения аппаратной части процессора мы уже все наблюдали. Вспомните наборы команд MMX, SSE и 3DNow!, все аппаратные реализации, которые потребовали изменения и перекомпиляции программного обеспечения. Однако для Crusoe это не проблема, так как Code Morphing всегда прозрачно перетранслирует x86 инструкции, в то, что требуется. За подобную трансляцию набора команд одной системы в набор команд другой, естественно, приходится платить. Процессор вынужден выделять часть своих ресурсов на исполнение Code Morphing, в то время как обычный x86 процессор полностью занят исполнением кода программ. И хотя Transmeta разработала Code Morphing максимально эффективным, программное обеспечение никогда не сможет сравниться по производительности с аппаратной реализацией набора команд в процессорах x86 на одних и тех же частотах. Исполнение, декодирование, планированиеИспользуя программное обеспечение Code Morphing, обеспечивающее совместимость с x86, проектировщики Transmeta создали очень простой, высокопроизводительный, аппаратный VLIW движок с двумя целочисленными модулями, модулем с плавающей запятой, модулем управления памяти и модулем перехода. Процессор Transmeta Crusoe использует VLIW, Very Long Instruction Word, которые называются "молекулами", и могут быть от 64 бит до 128 бит длиной и содержать до четырех RISC-подобных инструкций, называемых "атомами". Все атомы в пределах молекулы исполняются параллельно, а формат молекулы определяет, каким образом атомы направляются к функциональным блокам в пределах процессора. Такое, зависящее от формата, перенаправление сильно упрощает декодирование. Существующие суперскалярные x86 процессоры, такие как Pentium III, так же имеют множество функциональных блоков, которые способны исполнять RISC-подобные операции параллельно, однако из-за нарушения очередности исполнения требуется дополнительная аппаратная часть, восстанавливающая оригинальную последовательность x86 команд, и контролирующая порядок их исполнения. В результате такой тип процессора оказывается гораздо сложнее, чем VLIW движок у Crusoe. Как уже говорилось выше, из-за нарушения порядка исполнения команд обычного x86 процессора, ему требуется дополнительный аппаратный блок для проверки того. Что все команды выполнены в правильном порядке. Code Morphing же, напротив, способен исполнить целую группу x86 инструкций за один раз, учитывая, что обычный x86 процессор транслирует каждую команду отдельно. Кроме того, Code Morphing транслирует инструкции только один раз и сохраняет результат в "кэш трансляции", в следующий же раз, как только исполняется тот же код, процессор немедленно получает его из кэша. Такая программная трансляция открывает множество новых возможностей. При помощи Code Morphing процесс трансляции может быть оптимизирован выбором сгенерированного кода и уменьшением количества исполняемых инструкций. Другими словами, Code Morphing может повысить скорость исполнения и одновременно уменьшить потребляемую мощность. Однако с первой же итерации максимальной производительности не достичь. Для этого понадобится множество проходов, так как оптимизация кода выполнена ступенчато. Сначала весь код рекомпилируется быстро, но необязательно эффективно, в целях поддержания нормального процесса исполнения программы. Затем, когда тот же участок кода исполняется вторично, он помещается в очередь для оптимизации, так что те участки кода, которые исполняются один раз не оптимизируются. А те, которые исполняются несколько раз оптимизируются полностью, в несколько проходов. Кэширование и оптимизацияХотя программное обеспечение Code Morphing находится в ROM, при загрузке системы оно копируется в оперативную память для увеличения производительности. И постоянно находится в отдельном участке памяти наряду с кэшем трансляции. Оптимизация процесса трансляции программным обеспечением Code Morphing позволяет наиболее эффективно использовать кэш трансляции, в результате чего аппаратная часть процессора может функционировать наиболее эффективно с максимальной производительностью. Кроме того, как часть этой оптимизации, Code Morphing во время исполнения непрерывно "изучает" исполняемый код и постоянно его все больше оптимизирует, что еще больше ускоряет исполнение. Code Morphing имеет множество способов для обратной связи с исполняемой программой. Одним из них является "инструментальная" трансляция. Во время трансляции используется добавочные код, единственная цель которого состоит в том, чтобы собрать информацию о блоке, который будет исполняться. В последствии эти данные используются для принятия решения, что необходимо оптимизировать и транслировать. Хорошим примером является, опять-таки, упомянутая уже ситуация, когда уже известно как часто исполняется та или иная часть x86 кода, и если часто, то ее стоит оптимизировать, а если она исполняется один-два раза, то и терять время на нее не стоит, транслировать как есть, и всех делов. Однако, так как Code Morphing исполняется в оперативной памяти, то частично производительность процессора будет зависеть и от пропускной способности интерфейса между памятью и процессором и от типа используемой технологии памяти. То, что и данные, подлежащие обработке и Code Morphing, находятся в оперативной памяти, является существенным преимуществом по сравнению с технологией обычного процессора x86, который в памяти хранит только данные. Управление питаниемБольшинство процессоров x86 регулируют энергопотребление быстрым переключением процессора из режима работы на полной скорости в режим полного отключения. Разные уровни производительности могут быть получены путем изменения коэффициента частоты включения/выключения, или "рабочего цикла". Этот подход имеет ряд серьезных недостатков. Например, процессор оказался выключен, в тот момент, когда его работа была необходима исполняющейся программе, или наоборот, работал на полной скорости в момент абсолютного простоя. Transmeta Crusoe корректирует потребляемую мощность налету, динамически уменьшая или увеличивая рабочую частоту. В результате программное обеспечение непрерывно контролирует потребность в ресурсах процессора и динамически выбирает соответствующую рабочую частоту для него, необходимую для исполнения приложения, не более и не менее, управляя, таким образом, потребляемой мощностью процессора. И, наконец, Code Morphing корректирует напряжение ядра процессора налету. Поскольку мощность меняется в линейной зависимости от рабочей частоты и квадрата напряжения, то, регулируя оба параметра, можно очень серьезно влиять на объем потребляемой мощности. Предположим, что прикладная программа использует только 90% скорости процессора. На обычном процессоре мы уменьшим скорость на 10% и получим уменьшение потребляемой энергии на те же 10%. А при тех же условиях, управление питанием Crusoe "LongRun" может сэкономить почти 30% энергии (30% = 100% x (1-(.9 x .92))). ЗаключениеПроцессор Transmeta Crusoe устанавливает новые стандарты как проектирования процессоров, так и программной трансляции наборов команд. Значение подобного подхода для компьютерной промышленности оценить пока сложно, но в течение ближайших нескольких лет этот вопрос прояснится. Данная технология масштабируема и не ограничивается ни проектированием исключительно малопотребляющих мобильных процессоров, ни архитектурой x86-совместимых процессоров. Однако, из-за этой аппаратно-программной архитектуры данный процессор не может предложить тот же уровень производительности, что и любой другой процессор на той же частоте. Производительность данного процессора может очень серьезно отличаться при исполнении разных программ, в зависимости от того, как часто повторяются одни и те же участки кода. Не забывайте, что Code Morphing разработан исключительно для оптимизации многократно повторяющихся инструкций, и оптимизация происходит после каждой итерации. Не стоит ожидать, что ноутбуки на процессоре Transmeta Crusoe потрясут вас своей производительностью. Очень большая часть кода не предназначена для оптимизации, а встречаются части кода и без того оптимизированные донельзя. Просто помните, что процессор Crusoe эмулирует систему команд другого процессора, а пока еще не было эмулятора, который превзошел бы по быстродействию оригинал. Пусть рекламные лозунги уверяют вас в обратном, но потеря производительности при использовании этого процессора будет ощущаться всегда. Если, конечно, не появится специально оптимизированного под него программного обеспечения.
Опубликовано 23 ноября 2000 г. |
$bott=getenv("DOCUMENT_ROOT"); include ($bott . "/imgs/bottom.htm") ?> |