Himik писал(а):
Давайте немного конкретики, каких данных вам не хватает.
Ну вот смотрите, например у нас есть программа, которую можно распараллелить на два потока с вычислением двух значений по двум формулам. Как я могу сказать процессору, что бы он задействовал ровно столько внутренних вычислителей для выполнения каждого потока, сколько необходимо на каждый такт вычисления ? Для простоты пусть пример будет таким:
Код:
int a=x*y;
int b=x-y;
Здесь необходимо выполнить две загрузки из памяти или кэша или регистров (для x и y) - как я могу понять, где конкретно находятся x и y ? Как я могу сказать системе заранее закэшировать эти переменные (за 200 тактов до реального вычитания/умножения) и не трогать это место в кэше ? Как я могу понять, за сколько же на самом деле тактов я должен подсуетиться и прочитать переменные в кэш ? И это только вопросы по операции загрузки двух переменных.
По вычислениям - например я знаю, что загруженные в кэш переменные доступны за два такта, значит за два такта до освобождения вычислителей от других дел я должен сказать процессору, что бы он подавал на вход вычислителей нужные переменные именно через два такта - как это сделать ? Кроме того, из программы очевидно, что потребуется один сумматор с инвертором знака (или явно выделенный вычитатель) и один умножитель - как я могу предложить процессору подать одну переменную на вход сумматора и другую на вход умножителя ?
Далее идёт сохранение данных. Нас интересуют две новых переменных - a и b. Если из дальнейшего текста программы я знаю, что a понадобится через 100 тактов, а b понадобится через 100 000 тактов - как я могу наиболее рационально разместить эти переменные в кэшах нужных уровней ?
И при всём при этом как я могу учесть наличие других задач, которые в виде обработчиков прерываний или в виде параллельных потоков потрут все мои кэши и похерят все мои ожидания ? То есть я хотел бы иметь возможность добавить в планировщик задач информацию о гарантированном хранении данных в течении заданного периода в заданном кэше - как я могу это сделать ?
Надеюсь возражения вроде:
Himik писал(а):
Я лично не вижу проблемы.
более не должны так легко озвучиваться