Современная типовая иерархия памяти имеет следующую структуру:
· регистры 64 – 256 слов со временем доступа 1 такт процессора;
· кэш 1 уровня – 8к слов со временем доступа 1 – 2 такта;
· кэш 2-го уровня – 256к слов со временем доступа 3 – 5 тактов;
· основная память – до 4 Гигаслов со временем доступа 12 – 55 тактов.
Использую помимо основной памяти небольшую и более быструю буферную память, можно значительно сократить количество обращений к основной памяти, за счёт аккумуляции фрагмента программного кода в буферной памяти. Создание иерархической памяти за время, пока предшествующие блоки программ и данных между уровнями памяти за время пока предшествующие блоки обрабатываются микропроцессором, позволяет существенно сократить простои процессора в ожидании данных. При этом эффект уменьшения времени доступа к памяти будет тем больше, чем больше время обработки данных в буферной памяти по сравнению со временем пересылки между буферной и основной памятью. Это достигается при локальности обрабатываемых данных, когда процессор многократно использует одни и те же данные для выработки некоторого результата.
В связи с тем, что локально обрабатываемые данные могут возникать в динамике вычислений, и не обязательно сконцентрированы в одной области при статическом размещении в основной памяти, буферную память организуют как ассоциативную, в которой данные содержатся в совокупности с их адресом в основной памяти. Такая буферная память получила название кэш-память.
Кэш имеет совокупность строк, каждая из которых состоит из фиксированного количества единиц в памяти (байтов, слов с последовательными адресами Типичный размер строки: 16,64,256 байтов).
Наиболее часто используются три способа организации кэш-памяти, отличающиеся объёмом аппаратуры, требуемой для их реализации. Это так называемая кэш-память с прямым отображением (direct-mapped cache), частично ассоциативная кэш-память (set-associative cache) и ассоциативная кэш память (full associative cache).
Расслоение памяти. Другим структурным способом уменьшения времени доступа к памяти служит расслоение памяти. В предположении, что выборка из памяти выполняется по последовательным адресам возможно использование k блоков памяти с размещением в блоке I, где I=0,…, k-1, слов с адресами n=I+krrp mod k, где p=0,1,…,M. В этом случае возможно k параллельных обращение в память по адресам, принадлежащим различным блокам. Поэтому выборка команд программы за исключением команд, выбираемых как результат ветвления, может быть ускорена применением расслоения памяти. Аналогично может быть ускорена обработка массивов данных
Многоуровневая иерархия и расслоение памяти могут использоваться совместно.
Способы измерения производительности
Пиковая (техническая) производительность представляют собой теоретический максимум быстродействия компьютера при идеальных условиях. Данный максимум определяется как число вычислительных операций, выполняемых в единицу времени всеми имеющимися в процессоре обрабатывающими логико-арифметическими устройствами. Предельное быстродействие достигается при обработке бесконечной последовательности не связанных между собой и не конфликтующих при доступе в память команд (т.е. когда результат любой операции не зависит от действий, выполненных другими командами). При этом предполагается, что все операнды выбираются из внутрикристальной кэш-памяти данных, а команды – из кэш-памяти команд. Разумеется, подобная ситуация чисто гипотетическая, и на практике ни одна система не в состоянии работать сколь-нибудь длительное время с пиковой производительностью, хотя и может приближаться к этой величине. Например, на текстах Linpack при больших размерностях обрабатываемых матриц (1000H1000) почти все компьютеры демонстрируют производительность в диапазоне от 0,8 до 0,95 от пикового значения.
Пиковая производительность является единственной по-настоящему объективным параметром (для его определения необходимо знать несколько параметров процессора) и совершенно не зависит от типа выполняемой программы. Речь идёт о тактовой частоте процессора, которая для подавляющего большинства современных компьютеров определяет темп формирования результатов на выходе арифметического конвейера, и числе арифметических конвейеров. Не трудно установить соответствие между единицами измерения тактовой частоты и производительности процессора. Очевидно, что 1 Мгц соответствует 1 MFLOPS или 1 MIPS-пиковой производительности одного конвейера, в зависимости от того, какой тип операций рассматривается – с плавающей или с фиксированной точкой. Не следует забывать также о разрядности обрабатываемых чисел, чтобы избежать не корректного сравнения производительности для 32- 64- разрядных данных. Но в любом случае правила вычисления пиковой производительности, при всей их внешней простоте, могут оказаться чрезвычайно полезными при обсуждении достоинств компьютеров. Чтобы определить пиковую производительность машин, надо умножить тактовую частоту на количество параллельно выполняемых операций. Например, арифметическое устройство Pentium каждый такт может формировать один результат полноразрядной (64 бит) операций с плавающей точкой или два результата 32-х разрядных целочисленных операций. Следовательно, для Pentium/90 пиковая производительность равна 90 MFLOPS при выполнении вычислений с плавающей точкой и 180 MIPS при целочисленной 32-х разрядной обработке.
Особенно удобно использовать показатели предельного быстродействия для сравнения возможностей процессоров в первом приближении. Американские специалисты по контролю за экспортом вооружений при оценке уровня производительности компьютеров используют показатель основной теоретической производительности (CTP), измеряемой в Mtops – миллионах теоретических операций в секунду. CTP зависит только от аппаратных средств компьютера (тактовой частоты, набора функциональных устройств, пропускной способности и набора внутренних шин, длины разрядной сетки и так далее).
Реальная производительность
При выполнении реальных прикладных программ эффективная (реальная) производительность микропроцессора может весьма существенно (до нескольких раз) быть меньше пиковой. Это объясняется тем, что современные высокопроизводительные микропроцессоры имеют весьма сложную архитектуру (суперконвейерная и суперскалярная обработка, многоуровневая система памяти и так далее). Характеристики их функционирования на уровне внутренних устройств существенно зависят от программы и обрабатываемых данных. Поэтому не возможно с необходимой точностью оценить производительность только на основании тактовой частоты их работы, числа затрачиваемых на выполнение одной команды тактов процессора и числа устройств обработки.
Для оценки производительности различных вычислительных средств в мировой практике наибольшее распространение получило использование наборов характерных для той или иной области применения вычислительной техники задач. Время выполнения одной каждой из задач набора составляет основу для расчёта индекса производительности исследуемой вычислительной установки. Индекс производительности является относительной оценкой, несущей информацию о том, на сколько быстрее или медленнее исследуемая вычислительная установка выполняет подобные задачи по сравнению с некоторой широко распространенной ЭВМ (последнюю часто называют базовой или эталонной).
Способы измерения реальной производительности
При оценке производительности на тестах приходится решать три проблемы, связанные с анализом результатов контрольного тестирования производительности:
· отделение показателей, которым можно доверять безоговорочно, от тех, которые должны восприниматься с известной долей настороженности (проблема достоверности оценок);
· выбор конторольно-оценочных тестов, наиболее точно характеризующих производительность при обработке типовых задач пользователя (проблема адекватности оценок);
· правильное истолкование результатов тестирования производительности, особенно если они выражены в довольно экзотических единицах типа MWIPS, Drystoones/s и т.д. (проблема интерпретации).
Первую группу тестов измерения производительности составляют тесты производителей, разрабатываемые компаниями-изготовителями компьютеров для «внутреннего» применения – оценивая качества собственных продуктов. Главная особенность этих тестов заключается в том, что они ориентированы на сравнение ограниченного множества однотипных компьютеров, часто относящихся к одному семейству.
Пользовательские тесты создаются крупными компаниями, специализирующимися на внедрение компьютерных технологий, или совместными усилиями групп пользователей, объединённых сходством решаемых задач. Эти средства предназначены для выбора компьютеров и ПО, наиболее подходящие под определённые прикладные задачи. В принципе такой подход позволяет получить наиболее точные оценки производительности для конкретного класса приложений, хотя и сопряжён со значительными усилиями пользователей по созданию тестовых программ и проведению испытаний компьютеров.
Сегодня наиболее распространенными являются наборы тестов компании SPEC (Standard Performance Evolution Corporation) – SPEC (89, 92,95), которые и будут рассматриваться ниже
Пакет тестовых программ SPEC 89 включает в себя два тестовых набора – Cint 89, состоящий из четырёх программ с целочисленной обработкой, и Cfp 89, объединяющий шесть программ со значительным объемом информации над числами с плавающей точкой двойной точности.
Все десять модулей представляют собой достаточно сложные программы на языках C и FORTRAN с широким спектром решаемых задач – от оптимизации матриц булевой алгебры до моделирования замещения атомов в квантовой химии.
Пакет тестовых программ SPEC 92
SPEC 92 состоит из наборов тестовых пакетов Сint92 и Cfp92.