DSP одновременный доступ к данным и инструкциям (итерации по циклам)
Я пытаюсь понять это основное понятие в архитектуре DSP и выполнении инструкций:
"Основываясь на гарвардской архитектуре, ЦП может одновременно извлекать данные и слова инструкций...- Извлечение инструкций может происходить во время выполнения предыдущих инструкций и не ждать завершения выполнения инструкций или останавливать работу процессора во время выполнения следующей инструкции. извлекается ".
Однако, из-за моего ограниченного знания компьютерной архитектуры, у меня возникает вопрос: "Если данные (операнды), которыми нужно манипулировать, предназначены командным словом, как это возможно!" Представьте себе, повторяя с самого первого цикла, instr. загружается из программной памяти, тогда два операнда должны быть загружены в следующем цикле, и здесь есть неоднозначность: теперь это время выполнения / оборот цикла, поэтому, если при загрузке данных следующий экземпляр загружался одновременно, предыдущий загруженный экземпляр был потерян, и, таким образом, что могло произойти с выполнением этого!? Или я ошибаюсь, и выполнение выполняется немедленно путем загрузки данных из памяти в регистр данных!? "
** пример кода: MPYF3 * (AR0) ++, * (AR1) ++, R0
* addendum: Я думаю, поскольку нет файла регистрации, поэтому нет никакой загрузки данных в любой регистр - напрямую через память!! Так что, на мой взгляд, после самого первого инстр. извлекла, в следующем цикле требуемые данные (операнды), предназначенные пред. инстр. манипулируют (например, exec.) через память функциональной единицей, а между тем следующий инстр. слово выбирается, и адрес операндов также обновляется (в результате исключения через адресный регистр ALU); Все потому, что каждая из этих операций (доступ к данным, арифметическая операция, обновление адреса, выборка команд) обрабатываются с помощью отличительной - физической - архитектуры.
Есть ли кто-нибудь, кто может заверить меня в этой моей интерпретации!? Объяснение типичной инструкции, повторяемой в циклах с использованием одновременного доступа к данным и инструкциям в архитектуре DSP Harvard, очень ценится.
заранее спасибо
1 ответ
Гарвардская архитектура - это та, которая имеет две разные памяти, кеши, шины и т. Д. Одна для инструкций, а другая для данных. Это резко контрастирует с архитектурой фон Неймана, которая имеет единую объединенную память для инструкций и данных.
Напомним: общая проблема с программным обеспечением C/C++ - переполнение буфера, когда вы (плохой парень) злонамеренно пишете множество и множество инструкций в качестве "входных данных" для программы в надежде, что кто-то не проверил длину ввода и случайно позволит вашим "данным" (на самом деле это программа, замаскированная под данные!) перезаписать часть "инструкций" памяти. Затем, когда программа сталкивается с этими новыми инструкциями: БАМ! Ваши "данные" (которые на самом деле являются программами) теперь имеют контроль над исходной программой. Гарвардские архитектуры не страдают от этой проблемы в силу своих двух отдельных пространств памяти.
Так как же этот процессор DSP выполняет несколько задач одновременно? Это волшебство? На самом деле, нет. Это означает, что процессор конвейеризован. Конвейер означает, что ЦП может одновременно выполнять начало одной инструкции, середину другой и конец третьей. Как? Сохраняя набор регистров промежуточных результатов, которые служат "выходом" для одной ступени конвейера и "входом" для другой.
Стоит отметить, что конвейеризация не имеет ничего общего с архитектурой Гарварда и фон Неймана. Оба могут быть конвейерными.