#architecture #mips #processor
#архитектура #mips #процессор
Вопрос:
Я пытаюсь создать 32-разрядный процессор MIPS1 и, просматривая материал, у меня возникли сомнения относительно счетчика программ. Предположим, у нас есть программа, которая выполняет случайные операции одну за другой, в памяти команд операции уже указаны, и у нас есть доступ к ним в определенном порядке (ПК 4), не вызовет ли это проблемы?
При первом запуске программы мы переходим к определенному местоположению в памяти команд, но, тем не менее, следующие операции будут предопределены, поскольку мы не можем записывать в блок памяти команд. Мы будем обращаться к ней с помощью PC 4 каждый цикл, но как мы можем быть уверены, что это именно та операция, которая необходима программе?
Большое спасибо.
Комментарии:
1. Я не уверен, что полностью понимаю ваш вопрос, вы спрашиваете, как вы можете быть уверены, что следующая инструкция является правильной? Если это так, задача программиста — поместить правильную следующую инструкцию в следующий адрес, к которому обращается
PC
, будь то простоPC 4
или целевой объект ветки (после интервала задержки). Поскольку он точно знает, к какому адресу осуществляется доступ, программист может быть уверен, что знает, куда поместить эту следующую инструкцию. Если вас беспокоит то, как программа полностью предопределена, это вполне может быть, это зависит от того, на что я запускаю программу (например, пользовательский ввод).2. Спасибо за ваш своевременный ответ. Да, это вопрос, но мои сомнения остаются. Вы сказали, что «задача программиста — поместить правильную следующую инструкцию в следующий адрес, к которому обращается компьютер», Как именно? Память команд не может быть записана, она имеет один вход, поступающий с ПК, и один выход с инструкцией.
3. В книге Хеннеси и Паттерсона «Компьютерная организация» говорится: «Поскольку память команд выполняет только чтение, мы рассматриваем это как комбинационную логику: выходные данные в любое время отражают содержимое местоположения, указанного входным адресом, и сигнал управления чтением не требуется. (Нам нужно будет записать память команд при загрузке программы; это не сложно добавить, и мы игнорируем это для простоты.) » Как мы можем записать в нее, если у нее нет порта записи, а также что там должно быть записано, каждая отдельная комбинация команд / регистров? @Unn
4. Я думаю, что эта книга пытается объяснить, что память команд часто только считывается процессором, а не записывается. В реальных системах большая часть программы фактически существует в доступной для записи памяти, но многие системы включают в себя командное ПЗУ, память только для чтения. Значения в этих ПЗУ записываются один раз во время изготовления или синтеза RTL; поэтому они не могут измениться после завершения проектирования. Таким образом, в этом случае нет порта записи, поскольку процессор никогда не может выполнять запись в память во время выполнения, но память команд устанавливается при синтезе или изготовлении.