Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Маловичко лекции микропроцы(1).doc
Скачиваний:
37
Добавлен:
08.11.2018
Размер:
10.8 Mб
Скачать

36. Архитектурно независимая спецификация программ.

Архитектурно независимая спецификация программ (ANDF) предложена компанией X/Open CompanyLtd в рамках международной организации по стандартизации. По мнению разработчиков, эта спецификация позволит решить проблему переносимости программ. В рамках подхода по этой спецификации компиляция исходного кода программ предполагается 2-хэтапной.

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

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

37. Ява – технология (Java).

Ява – технология была предложена компанией SUN. В рамках второго подхода лежит понятие виртуальной Ява – машины, спецификации которой включают следующие виды данных:

byte – 8-миразрядное слово данных

short – 2-хбайтовое целое

integer – 4-хбайтовое целое

float – 4-хбайтовое вещественное

double – 8-мибайтовое вещественное

char – 2-хбайтовый символ

object – 4-хбайтовая ссылка на объект

return address – 4-хбайтовый адрес возврата.

В этом виртуальном Ява – процессоре предусмотрены следующие регистры:

PC – счётчик команд (состоит из счётных триггеров)

Vars – регистр для доступа к локальным переменным

Optop – указатель на стек операндов

Frame – указатель на окружение времени выполнения.

Большинство команд такого Ява – процессора имеют длину в 1 байт, что позволяет в Ява – процессоре уменьшить длину программ. Это требование короткого программного кода диктуется практически потребностью работы в компьютерных сетях типа Internet. Открытые системы, создаваемые в Internet, позволяют накапливать программные продукты и конструировать системы из уже существующих. Однако, одним из препятствий на пути Ява – технологии является низкая производительность исполнения Ява – кода. Тем не менее, в настоящее время имеются предпосылки этого представления, например, современные микропроцессоры с архитектурой компании Intel Х86 содержат специальные блоки на аппаратном уровне, транслирующие сложные команды в совокупности команд RISC процессора, далее RISC процессор использует эти команды, используя все преимущества своего подхода для достижения высокой производительности. Такой подход можно использовать и для транслятора Ява – кода, когда байт-код будет транслироваться в команды реального процессора.

Производительность микропроцессора.

Пиковая или техническая производительность микропроцессора.

Пиковая или техническая производительность представляет собой теоретический максимум быстродействия микропроцессорной системы при идеальных условиях. Определяется как число вычислительных операций, выполняемых в единицу времени, всеми, имеющимися в микропроцессоре, обрабатываемыми арифметико-логическими устройствами. Предельное быстродействие достигается при обработке бесконечной последовательности команд, не связанных между собой, и при не конфликтующих при доступе в память команд, т.е., когда результат любой операции не зависит от действий, выполняемых другими операциями. При этом предполагается, что все операнды выбираются из внутрикристальной КЭШ – памяти данных процессора, а команды – из КЭШ – памяти команд. Таким образом, ситуация чисто гипотетическая.

На практике ни одна вычислительная микропроцессорная система не может работать с пиковой производительностью, хотя и может приближаться к ней. Например, при исследовании микропроцессора при помощи специальных тестов при больших размерностях обрабатываемых матриц почти все процессоры дают производительность от 80 до 95% от пиковой.

Следует отметить, что пиковая производительность – единственный, по-настоящему объективный параметр, оценивающий быстродействие, не зависящий от выполняемой программы.

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

Чтобы определить пиковую производительность микропроцессора, надо умножить тактовую частоту микропроцессора на количество параллельно, т.е. одновременно, выполняемых операций. Например, арифметико-логическое устройство микропроцессора класса Pentium, каждый такт может формировать один результат полноразрядной, т.е. 64-хбитной, операции с плавающей точкой или два результата 32-хразрядной целочисленной операции. Следовательно, при тактовой частоте, например, 100 МГц его пиковая производительность будет равна 100 MFlOPS при выполнении операций с плавающей точкой или, соответственно, 200 MIPS при целочисленной 2-хразрядной обработке.

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

Реальная производительность микропроцессоров.

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

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

При оценке производительности микропроцессора на тестах приходится решать три проблемы, связанные с анализом результатов контрольного тестирования производительности:

1. Отделение показателей, которым можно доверять безоговорочно, от тех, которые должны восприниматься с определённой долей настороженности.

2. Выбор контрольно – оценочных тестов, наиболее точно характеризующих производительность при обработке типовых задач пользователя.

3. Правильное истолкование результата тестирования производительности, если они выражены в нестандартных единицах.

На сегодняшний день существуют целые группы тестов измерения производительности.

Первую группу составляют тесты компаний производителей микропроцессорных систем для оценки качества своей продукции. Они ориентируются на сравнении ограниченного множества однотипных систем, часто относящихся к одному семейству. Например, компания Intel, для оценки производительности своих микропроцессоров использует так называемый индекс производительности, называемый iCOMP. При этом в качестве эталонной модели принят микропроцессор Intel 80486 SX-25, значение индекса для которого берётся равным 100. К примеру, индекс iCOMP для микропроцессоров Pentium 100 и Pentium 166 получил, соответственно, 815 и 1308. Свои специализированные пакеты тестирование имеет и IBM.

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

Третья группа – пользовательские тесты, создаются крупными компаниями, специализирующимися на внедрении микропроцессорных систем или совместными усилиями групп пользователей, объединённых сходством решаемых задач.

Эти средства предназначены специально для выбора компьютеров и программного обеспечения, наиболее подходящих под определённые прикладные задачи. В принципе такой подход позволяет получить наиболее точные и объективные оценки производительности микропроцессорных систем.

На сегодняшний день наибольшее распространение получили наборы тестов компании SPEC. Эти тесты измеряют производительность не процессора, а всего компьютера, включая особенности его структуры, количество и пропускную способность шин и т.д.

Суперскалярные и мультискалярные процессоры.

Особенности архитектуры суперскалярных процессоров.

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

Команды называются скалярными, если входные операнды и результат являются числами, т.е. скалярами. Есть два подхода к отображению, присущего микропроцессору внутреннего параллелизма обработки данных на архитектурном уровне в системе команд.

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

Команды называются векторными, если входные операнды и, возможно, результат являются векторами (массивами) чисел.

2-ой подход полностью открывает все возможности параллельной обработки. В специально отведённых полях команды каждому из параллельно работающих обрабатывающих устройств, приписывается действие, которое устройство должно совершить. Такие процессоры называются процессорами с длинным командным словом.

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

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

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

В современных микропроцессорах широко используется принцип конвейерного выполнения отдельных элементарных операций. Конвейеризация процессов внутренней команды позволяет выполнить команду за каждый процессорный цикл.

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

Структура суперскалярного микропроцессора.

Рис.36.

Мультискалярные процессоры.

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

Рис.37.

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

Задача для выполнения назначается некоторому процессорному элементу передачей ему начального значения программного счётчика (счётчика команд).

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

Пример архитектуры мультискалярных микропроцессоров:

Рис.38.

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

Мультискалярный процессор во многом похож на многопроцессорную систему с общей памятью. Отличие заключается в том, что многопроцессорная система требует, чтобы все зависимости между задачами были известными, т.е. предусмотрены программистом путём использования специальных операторов синхронизаций задач и межпроцессорных коммуникаций. А мультискалярный процессор не требует никакого априорного знания относительно связи команд по управлению и данными.