1

Я пытаюсь понять это основное понятие в DSP архитектуры и инструкции исполнения:DSP параллельных данных и доступ к инструкции (итерации по циклам)

«на основе Гарвардской архитектуры, процессор может одновременно получать данные и инструкции слова. ..- Исключения команд могут выполняться во время предыдущего выполнения команды и не дожидаться завершения инструкции или прекратить работу процессора при получении следующей инструкции. "

Однако из-за моих ограниченных знаний об архитектуре компьютера этот вопрос возникает у меня: «Если данные (операнды), которыми нужно манипулировать, предназначены словом инструкции, как это возможно! Представьте себе итерацию с самого первого цикл, instr. загружается из prog. memory, то два операнда должны быть загружены в следующий цикл, и вот двусмысленность: теперь это время выполнения/цикла, поэтому, если во время загрузки данных следующий instr. была загружена одновременно, предыдущий загруженный instr. был потерян и, следовательно, что могло случиться с выполнением этого !? Или я ошибаюсь, и выполнение выполняется немедленно, загружая данные из памяти в регистр данных !? "

** пример кода: MPYF3 * (AR0) ++ * (П1) ++, R0

* Приложение: Я думаю, Так как нет регистрового файла, поэтому нет никакой нагрузки любого данные в любой регистр - прямо через память! Так что, на мой взгляд, после очень первого инст. в следующем цикле выбрал требуемые данные (операнды), предназначенные превью. инстр. управляются (instr. exec.) через память функциональным блоком, а между тем следующий instr. слово извлекается, а адрес операндов также обновляется (в результате исключения через адресный регистр ALU); Все потому, что каждая из этих операций (доступ к данным, арифметическая операция, обновление адреса, выборка команд) обрабатываются через отличительную физическую архитектуру.

Есть ли кто-нибудь, кто может заверить меня в этом моем толковании !? Понятно, что объясняется типичная инструкция, повторяющаяся по циклам, использующая одновременный доступ к данным и инструкциям в архитектуре Гарварда DSP.

Заранее спасибо

ответ

0

Гарвардская архитектура является тот, который имеет два различных воспоминания, кэши, автобусы и т.д. Одним из них является для инструкций и другой для данных. Это резко контрастирует с архитектурой фон Неймана, которая имеет единую единую память для инструкций и данных.

В стороне: Общей проблемой с программным обеспечением C/C++ является переполнение буфера, где вы (плохой парень) злонамеренно пишите много-много инструкций в качестве «входных данных» в программу в надежде, что кто-то сделал Не проверяйте длину ввода и случайно разрешите «данные» (которые на самом деле представляют собой программу, замаскированную под данные!), чтобы перезаписать часть «инструкций» памяти. Затем, когда программа запускается в эти новые инструкции: BAM! Ваши «данные» (которые на самом деле являются программой) теперь имеют контроль над исходной программой. Гарвардские архитектуры не страдают от этой проблемы в силу их двух отдельных пространств памяти.

Так как же этот ЦПЦ ЦП выполняет несколько действий за раз? Это волшебство? На самом деле, нет. Это означает, что CPU конвейерный. Конвейеризованное средство означает, что центральный процессор может одновременно запускать одну команду, середину другого и конец третьей. Как? Сохраняя набор промежуточных регистров результатов, которые служат «выходом» для одного этапа трубопровода и «входа» в другой.

Стоит отметить, что конвейерная обработка не имеет ничего общего с архитектурой Гарварда/Фон Неймана. Оба могут быть конвейерными.