Недостатки архитектуры RISC


· Значительная загрузка локального интерфейса процессора(двунаправленная шина данных D, шина управления C, шина адреса A)

· Сложность программирования

· Значительная доля времени на дешифрацию команды: команды очень маленькие и их очень много и он получается на каждую операцию выполняет дешифрацию 18 команд.

Дальнейшее развитие архитектуры RISC:

За время развития архитектуры изменилась только лишь структура RF.

Дальнейшее развитие архитектуры RISC мы обсудим в двух аспектах:

1. Средства модульного программирования для аппаратной поддержки структурированных программ(методология структурного программирования).

Как нам реализовать поддержку на аппаратном уровне средств связанных с методологией структурного программирования?

Есть 2 механизма:

вызов подпрограммы

возврат из подпрограммы

Перед вызовом какого-то фрагмента надо выполнить какую-то последовательность команд.Перед возвратом в точку вызова надо также выполнить какую-то последовательность команд.Эти последовательности команд одинаковые. Хотелось бы хранить эти фрагменты хранить в одном месте. Мы должны вызывающие последовательности повторять во всех местах. В виде отдельных фрагментов мы их сделать не сможем, потому что для этих фрагментов нужно тоже формировать вызывающие последовательности. Единственным выходом из создавшегося положения является оформление вызывающей последовательности фрагмента кода и фрагмента кода возвращающего управление в точку вызова другого фрагмента в виде аппаратно-реализуемых команд. Тогда возникает интересная проблема: когда у нас фрагменты вызова и возврата находятся в основной памяти мы можем организовать сохранение тех данных которые называются адресом возврата в какой-то области памяти, которая специальным образом для этого зарезервирована. Получается, что в этом случае наш процессор должен хранить внутри себя не один адрес возврата, а несколько. Понятно, что глубина вложенности таких фрагментов может быть любая. Значит у нас должен быть механизм сохранения адресов возврата, а потом их восстановления при переходе от одного уровня вложенности фрагментов к другому.

Недостатки архитектуры RISC

Если внимательно посмотреть на последоватльность использования этих адресов, то окажется, что адрес 1 заносится в регистр, начинается выполнятся фрагмент 2, доходит до вызова фрагмента 3, в этом случае адрес 1 затирается как бы адресом 2, поэтому мы должны адрес 1 где-то сохранить, а иметь в этом регистре адрес 2. Но когда происходит вызов опять процедуры 2, здесь какой-то адрес возврата, который будет затирать регистр,где находится адрес 2. Но когда будет осуществлен возврат из 2 процедуры по 3 адресу (он находится в регистре) но когда будет возвращено в точку после вызова 2 то окажется этой команде требуется 2 адрес. Если он будет восстановлен в регистре, то окажется что когда дойдет до команды возврата в теле фрагмента 2 ему требуется адрес 1, что говорит о том что ЗУ хранения адресов возврато является стеком, которое работает по принципу LIFO.

Вывод: Анализируя последовательность использования адресов возврата вложенными фрагментами можно сделать вывод, что дисциплина хранения этих адресов соответствует такому устройству как стек. То есть попытка повысить эффективность использования памяти привела к тому что, мы должны реализовать специальные команды вызова фрагмента и возврата из этого фрагмента и для того чтобы использовать вложенные вызовы нам необходима аппаратная реализация такого механизма доступа к ячейкам памяти как стек.

Загрузка...