Компьютеры росли случайно.
Нужно увеличение удельной производительности компьютеров.
Способы увеличения производительности:
● увеличить тактовую частоту(при этом электропотребление увеличивается экспоненциально как и выделяемое тепло -> неэффективный => дорогой)
● оптимизация действий компьютера(оптимизация логики || стена памяти || перестройка процессора)
Закон Мура (не научный закон(совпадение)) - каждые 2 года скорость компьютеров увеличивается в 2 раза и др ресурсы компьютера также.
Проблема - доступ к памяти (внешняя память - ее много, но она медленная)
Решение - переработка работы с внешней памятью => улучшение работы процессора с оперативной памятью.
Процессоры сейчас не эффективны,т.к. в них много ядер - копипаста процессоров находящихся в одном процессоре.
При попытке разработки двух устройств которые бы работали параллельно возникает проблема - зависимость инструкции друг от друга ( когда для решения 2-й инструкции необходимо решить первую, иначе 2-я не имеет смысла => оптимизировать работу не выходит )
Так же есть проблема зависимости инструкций по выполнению, когда мы не можем понять какую инструкцию выполнять следующую. (переход || возврат функции)
Из-за этих проблем решение происходит не параллельно а последовательно => оптимизировать работу не получается.
Как ускорить работу процессора:
- увеличить количество вычислительных устройств
- научить процессор выполнять векторные операции (когда одна единственная инструкция кот может работать с данными большей/переменной длины )
Арифметика логического устройства - та часть процессора которая занимается вычислением.
Данные забиты в вектора с которыми работает процессор наученный работать с векторными операциями.
“Оптимизация на лету” - когда уже приехал готовый код с которым вы работаете.
Суперскалярные операции - когда процессор перепроектирован таким образом что он может выполнять несколько инструкций одновременно. ( выявление кусков кода независимых друг от друга которые можно выполнять параллельно )
Способ более эффективной загрузки многокомпонентного компьютера - упреждающее вычисление
Just and time - преобразования кода уже готового к выполнению в момент когда он выполняется.() Пеленгование регистра - нэ понэл (переименование регистра)
Pipeline - конвеер
Смысл: при спуске на уровень ниже
Стадии работы одного такта:
● выборка/получение новой инструкции
● декодирование инструкции
● получить данные инструкции
● вычисление инструкции
● раскладывание данных