Эффективность вычислительной системы. Часть 1.

Изучение языков и методов программирования, статистики употребления различных языковых конструкций позволило более эффективно использовать оборудование, а, следовательно, при заданном объеме оборудования повысить общую производительность машин. При разработке МВК «Эльбрус» все важные вопросы эффективности решались с опорой на базовые конструкции языков высокого уровня.

Это привело к значительным результатам в смысле эффективности. Рассмотрим ряд важных примеров.

В настоящее время возникают сложные проблемы при достижении высокого быстродействия машины с использованием быстрого процессора со сравнительно медленной, по крайней мере, с точки зрения времени доступа, оперативной памятью. Хорошим решением, предложенным фирмой IBM, является введение в процессоре сверхоперативной быстродействующей памяти сравнительно небольшого объема — кэш-памяти. Однако в этом решении есть определенный недостаток. Если программа работает с большим массивом, который полностью не вмещается в кэш-память (а это наиболее типичная ситуация), то происходит следующее. Обычно работа с массивом заключается в последовательном обращении к его элементам с шагом 1 или некоторой постоянной. В этом случае кэш-память бесполезна, так как любой считанный элемент массива либо никогда не затребуется повторно, либо затребуется после обращения ко всем остальным элементам массива, когда он этими обращениями будет вытеснен из кэш-памяти. Более того, в этом случае может произойти вытеснение и отдельных локальных данных процедуры, в которой размещен цикл. В результате важная работа с массивами — векторные вычисления — реализуется неэффективно. В МВК «Эльбрус-2» с учетом языковой семантики проводимых вычислений сверхоперативная память разделяется на четыре функционально специализированные части:

Четыре части сверхоперативной памяти

Такое разделение позволяет решить проблему эффективной стыковки процессора с памятью.

Частью, соответствующей по своему устройству кэш-памяти традиционных машин, является ассоциативное запоминающее устройство глобалов (АЗУГ). Оно используется для размещения информации, не попадающей по своему характеру в остальные буферные памяти. Это преимущественно глобальные данные программ и локальные данные процедур, не попавшие в буфер стека. Заметим, что если в процедуре или внешнем блоке программы был описан массив, то в АЗУГ может попасть дескриптор массива, а элементы массива в АЗУГ не подкачиваются и не вытесняют из него более важную информацию.