ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 июля
684522 Топик полностью
Ксения (02.07.2016 15:58 - 16:26, просмотров: 62) ответил Dingo на Эм.. Не знаю, как делается сейчас, но что если пишем данные, потом опкод "чего делать, и по этим же адресам забираем результат. По разным адресам делаем таких штук параллельно столько, сколько нужно. И DMA можно задействовать вроде.
А вот сопроцессоры из рода x87 работали напрямую с памятью - сами данные из нее выбирали и записывали, если было нужно. А сейчас сам CPU должен заниматься тем, что читать из памяти данные и выкладывать в специальные регистры, с которыми арифметика работает, а потом самому же и результаты записывать в память. А во времена x87 CPU лишь давал сопроцессору команду, не ожидая ее выполнения и не помогая в трансфере данных. Перефикс у float-операций есть и сейчас, и надо было лишь расширить его всего на один байт, чтобы указывать, для какого из 256-сопроцесоров данная команда предназначена. А дальше логика стандартная - свободен данный сопроцессор - CPU проходит дальше, не ожидая завершения операции, а если занят, то висит на этой команде и ждет завершения. Этого примитивного механизма было бы вполне достаточно, чтобы к тому времени, когда CPU завершит раздачу заданий всем сопроцессорам, первый из них свое задание выполнил. Но даже в том случае, если завершение работы первого пришлось подождать, то остальных уже ждать не придется, если все они выполняют одну и ту же по сложности операцию.