суббота, 7 февраля 2015 г.

Scalability and portability

Почему важны метрики кода такие как масшабируемость (scalability) и портируемость (portability)? Взглянем на результаты исследований IBM.

Видно, что программная разработка (количество строк кода/чип) увеличивается каждые 5 лет в 2 раза над аппаратной разработкой (количество транзисторов/чип) достигнув переломной точки где-то в 2010 году.

Потому будущие системы должны минимизировать затраты на повторные разработки из-за изменений в аппаратной архитектуре.

Замена на более производительные чипы (изменение физической архитектуры) или добавление новых процессорных узлов должно  как минимум не  приводить к деградации работы приложения, а более того, такое изменение в аппаратной архитектуре должно улучшать производительность приложения в целом.

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

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

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

Комментариев нет: