Альфа — это не только планета жестоких эльфов из фильма Кин-Дза-Дза, но еще и компьютерная архитектура

a81a2e62e3666b0669d2bb6f1b32a40c.jpeg

Году в 1993 мой приятель микрософтовец Лев Белов при встрече с безумными глазами произнес «Ты понимаешь, что это все! Window NT спортировали на Альфу! Все, архитектура x86 с Интелом закончилась!»

И вот архитектура DEC Alpha вновь возникла в моем дискусе в диалогах на линкдине пару дней назад. Инженер по имени Александр Кушнеров высказал утверждение, что на Альфе не получилось или было принцииально невозможно достичь низкого энергопотребления.

Тезис про «принципиально невозможно» мне кажется сомнительным. Поэтому я высказал вот какие соображения:

Почему у DEC Alpha якобы принципиально нельзя добиться низкого энергопотребления? Архитектура Alpha никак прямо это не запрещает. Низкое энергопотребление — это результат нескольких факторов, в том числе:

1. Статическое энергопотребление — прямо пропорционально площади, что пропорционально количеству логики, сложности дизайна. x86 жрет так много в частности из-за размера /накопленных с 1970-х годов фич.

2. Динамическое энергопотребление — пропорционально частоте и квадрату напряжения. Alpha жрала так много в частности из-за высокой частоты для своего времени (середина 1990-х), но не только:

3. Динамическое энергопотребление варьируется с количеством переключений как D-триггеров, так и транзисторов комбинационной логики дизайна.

Количество переключений можно контролировать разными трюками на уровне дизайна, в первую очередь временным отключением локального тактового сигнала — fine clock gating и mid-level clock gating (не буду расшифровывать).

Во времена Alpha (середина 1990-х) эти трюки не считались важными, дизайнеры их не использовали, и это вероятно главная причина, почему Alpha жрала больше чем могла бы для своей частоты и техпроцесса.

4. Статическое энергопотребление обычно меньше чем динамическое, но не на порядок. Пропорция между первым и вторым зависит от техпроцесса и дизайна.

5. Помимо вышеописанных методов энергосбережения на уровне дизайна (разные формы clock gating-а) есть и всякие более физические (временное отключение питания подблоков, динамическая подстройка частоты и напряжения) и особые трюки (инвертирование шины например). Они не были развиты во времена DEC Alpha, и это еще одна причина почему она жрала больше чем могла бы.

На это Александр процитировал Wiki — StrongARM:

According to Allen Baum, the StrongARM traces its history to attempts to make a low-power version of the DEC Alpha, which DEC’s engineers quickly concluded was not possible.

Я не знаю, почему они так concluded. Возможно среди факторов:

1. У Alpha был гораздо больше размер регистрового файла (64 регистра (32 целочисленных и 32 FP) по 64 бита, чем у ARM (16 по 32 бита).

2. У ARM в некий момент появился специальный набор команд нефиксированной длины (16/32) с низким memory footprint (а значит и меньше кэши итд) — ARM Thumb — хотя это вроде было позже чем Alpha. Также у ARM были команды условного выполнения инструкций без переходов, что может тоже сыграло роль.

3. Но я скорее склоняюсь, что они осмотрели уже сделанный дизайн и сказали «тут трудно везде поставить clock gating, слишком много работы ковыряться».

А что думаете вы?

© Habrahabr.ru