Компьютеры росли случайно.

Нужно увеличение удельной производительности компьютеров.

Способы увеличения производительности:

● увеличить тактовую частоту(при этом электропотребление увеличивается экспоненциально как и выделяемое тепло -> неэффективный => дорогой)

● оптимизация действий компьютера(оптимизация логики || стена памяти || перестройка процессора)

Закон Мура (не научный закон(совпадение)) - каждые 2 года скорость компьютеров увеличивается в 2 раза и др ресурсы компьютера также.

Проблема - доступ к памяти (внешняя память - ее много, но она медленная)

Решение - переработка работы с внешней памятью => улучшение работы процессора с оперативной памятью.

Процессоры сейчас не эффективны,т.к. в них много ядер - копипаста процессоров находящихся в одном процессоре.

При попытке разработки двух устройств которые бы работали параллельно возникает проблема - зависимость инструкции друг от друга ( когда для решения 2-й инструкции необходимо решить первую, иначе 2-я не имеет смысла => оптимизировать работу не выходит )

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

Из-за этих проблем решение происходит не параллельно а последовательно => оптимизировать работу не получается.

Как ускорить работу процессора:

- увеличить количество вычислительных устройств

- научить процессор выполнять векторные операции (когда одна единственная инструкция кот может работать с данными большей/переменной длины )

Арифметика логического устройства - та часть процессора которая занимается вычислением.

Данные забиты в вектора с которыми работает процессор наученный работать с векторными операциями.

“Оптимизация на лету” - когда уже приехал готовый код с которым вы работаете.

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

Способ более эффективной загрузки многокомпонентного компьютера - упреждающее вычисление

Pipeline - конвеер

Смысл: при спуске на уровень ниже

Стадии работы одного такта:

● выборка/получение новой инструкции

● декодирование инструкции

● получить данные инструкции

● вычисление инструкции

● раскладывание данных

2.png

1.png

HSE/ProgrammingOS/02_PipelinePrediction/Conspect (последним исправлял пользователь Lecture_Uploads 2020-03-31 11:43:24)