Почему важны метрики кода такие как масшабируемость (scalability) и портируемость (portability)? Взглянем на результаты исследований IBM.
Видно, что программная разработка (количество строк кода/чип) увеличивается каждые 5 лет в 2 раза над аппаратной разработкой (количество транзисторов/чип) достигнув переломной точки где-то в 2010 году.
Потому будущие системы должны минимизировать затраты на повторные разработки из-за изменений в аппаратной архитектуре.
Замена на более производительные чипы (изменение физической архитектуры) или добавление новых процессорных узлов должно как минимум не приводить к деградации работы приложения, а более того, такое изменение в аппаратной архитектуре должно улучшать производительность приложения в целом.
Следовательно, следует особенно тщательно выбирать программные среды и строить дизайн приложения таким образом, чтобы метрики масштабируемости и портируемости поддерживались сразу и без серьезных изменений в коде в будущем.
Стоит отметить, что портируемость очень хорошо реализуется средствами добавления нового абстрактного уровня в виде виртуальной машины. Процесс портирования всего стека разработанных приложений для выбранной виртуальной машины будет заключаться в реализации виртуальной машины согласно ее спецификации для целевой аппаратной архитектуры.
Масштабируемость приложения достигается таким проектированием кода, что вычисления распределяются там где это возможно между параллельными аппаратными потоками. В этом случае цель проектирования заключается в сокращении участков последовательного выполнения кода (места сериализации кода). Со стороны сред поддержки программного кода необходимо обеспечить удобный способ параллелизации кода, т.е. многопоточного программирования для процессоров общего назначения с многопроцессорной и многоядерной архитектурой. В местах интенсивных вычислений следует использовать архитектуру графических процессоров ориентированных на общую пропускную способность.
Видно, что программная разработка (количество строк кода/чип) увеличивается каждые 5 лет в 2 раза над аппаратной разработкой (количество транзисторов/чип) достигнув переломной точки где-то в 2010 году.
Потому будущие системы должны минимизировать затраты на повторные разработки из-за изменений в аппаратной архитектуре.
Замена на более производительные чипы (изменение физической архитектуры) или добавление новых процессорных узлов должно как минимум не приводить к деградации работы приложения, а более того, такое изменение в аппаратной архитектуре должно улучшать производительность приложения в целом.
Следовательно, следует особенно тщательно выбирать программные среды и строить дизайн приложения таким образом, чтобы метрики масштабируемости и портируемости поддерживались сразу и без серьезных изменений в коде в будущем.
Стоит отметить, что портируемость очень хорошо реализуется средствами добавления нового абстрактного уровня в виде виртуальной машины. Процесс портирования всего стека разработанных приложений для выбранной виртуальной машины будет заключаться в реализации виртуальной машины согласно ее спецификации для целевой аппаратной архитектуры.
Масштабируемость приложения достигается таким проектированием кода, что вычисления распределяются там где это возможно между параллельными аппаратными потоками. В этом случае цель проектирования заключается в сокращении участков последовательного выполнения кода (места сериализации кода). Со стороны сред поддержки программного кода необходимо обеспечить удобный способ параллелизации кода, т.е. многопоточного программирования для процессоров общего назначения с многопроцессорной и многоядерной архитектурой. В местах интенсивных вычислений следует использовать архитектуру графических процессоров ориентированных на общую пропускную способность.
Комментариев нет:
Отправить комментарий