Архитектура Фон Неймана. Современные способы улучшения производительности вычислительной техники.

Архитектура фон Неймана.

Архитектура Фон Неймана. Современные способы улучшения производительности вычислительной техники. - student2.ru

Улучшение производительности ЭВМ

Конвейерная обработка. Что необходимо для сложения двух вещественных чисел,

представленных в форме с плавающей запятой? Целое множество мелких операций таких,как сравнение порядков, выравнивание порядков, сложение мантисс, нормализация и т.п.

Процессоры первых компьютеров выполняли все эти "микрооперации" для каждой пары

аргументов последовательно одна за одной до тех пор, пока не доходили до

окончательного результата, и лишь после этого переходили к обработке следующей пары

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

выполнения общей операции, причем каждый этап, выполнив свою работу, передавал бы

результат следующему, одновременно принимая новую порцию входных данных.

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

разнесенных во времени операций.

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

Суперскалярность. Как и в предыдущем примере, только при построении

конвейера используют несколько программно-аппаратных реализаций функциональных

устройств, например два или три АЛУ, три или четыре устройства выборки.

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

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

Hyper Threading. Перспективное направление развитие современных

микропроцессоров, основанное на многонитевой архитектуре. Основное препятствие на

пути повышения производительности за счет увеличения функциональных устройств –

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

коды не в состоянии загрузить работой все функциональные устройства, то можно

разрешить процессору выполнять более чем одну задачу (нить), чтобы дополнительные

нити загрузили – таки все ФУ (очень похоже на многозадачность).

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

микросхем, т.е. разместить на одном кристалле несколько процессоров (Power 4). Но если

взять микропроцессор вместе с памятью как ядра системы, то несколько таких ядер на

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

2. Структура программы. Source-файлы (исходный код). Header-файлы (заголовки). Объявление переменных. Объявления функций.

Объявления функций

Функции всегда определяются глобально. Они могут быть объявлены с классом памяти static или extern. Объявления функций на локальном и глобальном уровнях имеют одинаковый смысл.

Правила определения области видимости для функций отличаются от правил видимости для переменных и состоят в следующем.

1. Функция, объявленная как static, видима в пределах того файла, в котором она определена. Каждая функция может вызвать другую функцию с классом памяти static из своего исходного файла, но не может вызвать функцию определенную с классом static в другом исходном файле. Разные функции с классом памяти static имеющие одинаковые имена могут быть определены в разных исходных файлах, и это не ведет к конфликту.

2. Функция, объявленная с классом памяти extern, видима в пределах всех исходных файлов программы. Любая функция может вызывать функции с классом памяти extern.

3. Если в объявлении функции отсутствует спецификатор класса памяти, то по умолчанию принимается класс extern.

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

Прототип функции - показывает образец того как применять функцию в программе, какие значения в нее передаются и если она возвращает какое-то значение то прототип указывает тип возвращаемых данных. Прототип не имеет скобок { } а после скобок ( ) ставится ;

Функция - имеет { "тело" } в фигурных скобках. Тело это код на Си определяющий то что делает функция.

; после вызова функции не ставится !

Программа на языке Си это текстовый файл, обычно с расширением.c

Текст программы называют исходным или "исходником" или "сурцом"
от анг. source code - это вам ключевые слова для поиска

Весь исполняемый код программы на Си находится в функциях -
т.е. в фигурных скобках { исполняемый код программы }

Программа на Си имеет определенную структуру :

1) заголовок

2) включение необходимых внешних файлов - #include

3) ваши определения для удобства работы - #define

4) объявление глобальных переменных и констант

Глобальные переменные и константы

- объявляются вне какой либо функции.
т.е. не после фигурной скобки {

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

5) описание функций - обработчиков прерываний

6) описание других функций используемых в программе

7) функция main <- это единственный обязательный пункт !

Наши рекомендации