Подобно тому, как возникновение механизмов для перевозки и
обработки повысило скорости процессов материального производства,
изобретение и быстрое развитие компьютеров было вызвано потребностью ускорить процессы обработки
нематериальной субстанции – информации. Основной критерий при
использовании средств компьютерной техники – насколько велико достигаемое
ускорение.
В течение периода с
1940-х годов до 1990-х основным средством ускорения компьютеров было повышение
тактовой частоты (приблизительно в миллион раз к 2000 г). Производительность
компьютеров при этом росла пропорционально и почти не зависела от того, как
программист писал код.
Однако с середины 1980-х годов все больший вклад в ускорение
стало вкладывать структурное усложнение аппаратуры. При этом структура
алгоритмов и особенности их программной реализации все сильнее оказываются
связаны с этой усложняющейся аппаратной структурой.
Язык программирования Си/Си++ разрабатывался и в последующем
используется для достижения максимальной эффективности, проявляющейся в высокой
скорости исполнения.
Различие по скорости исполнения между более удачной и менее
удачной программной реализацией одного алгоритма на языке Си/Си++ может
составлять по скорости 10 и более раз, в зависимости от того, насколько
программист учитывает влияние на эту скорость связей между структурой
аппаратной части компьютера и структурой реализации алгоритма в программе.
Во столько же раз будут различаться суммарные затраты на
компьютерные вычисления, достигающие для сложных задач многих миллионов
долларов.
Если программист осведомлен об этих связях, он может при
реализации программы принимать решения, дающие повышение скорости исполнения
кода.
Эта программа реализуется как Дополнительная общеобразовательная общеразвивающая программа с выдачей сертификата установленного образца.
Знания и умения, полученные в результате обучения
Вот некоторые вопросы, ответы на которые будут даны в курсе:
- Как располагаются данные (операнды) в памяти компьютера,
и почему некоторые способы размещения оказываются более эффективными, нежели
прочие.
- Какой набор действий с операндами (система
команд) бывает обычно реализован в цифровом процессоре.
- В чем могут состоять причины расширения (либо
сокращения) набора команд, и как набор команд может быть связан со скоростью
исполнения и с размером памяти, требуемыми для исполнения программы
- Какие структурные и схемные приемы были
изобретены разработчиками аппаратной части, чтобы получить дополнительное
ускорение исполнения программы без повышения скорости работы (тактовой частоты)
элементной базы компьютера.
- Что привело к организации компьютерной памяти в
виде многоуровневой иерархической структуры, как переход к такой структуре памяти
позволил максимизировать скорость исполнения программы при той же цене системы.
- Как связаны многоуровневая организация памяти и
программная реализация алгоритма, и как эта связь может влиять на скорость
исполнения.
- Что способствует и что препятствует разбиению
программы на части, которые могут выполняться в компьютере одновременно
(многоядерная архитектура).
- Какие структурные изобретения в организации
компьютера позволяют максимизировать степень использования процессора в целом и
отдельных его блоков....
И многие другие ответы, которые помогут программистам
повысить эффективность разрабатываемых ими программ.
В ходе изложения многие рассматриваемые темы будут
иллюстрироваться примерами исполнения реальных фрагментов программ с
демонстрацией способов, позволяющих выполнять количественные измерения (оценки)
скорости исполнения.