Собственно, вся программа состоит из пар "отправитель" - "получатель". Если регистр на чтение и на запись, то адреса для чтения и записи могут различаться (чтобы не потерять много адресов из-за односторонних регистров). А вот если получатель 00000000 (в моем случае 0000, т.к. в железе я планирую восьмибитную команду), то вместо отправителя команда без адреса (например, NOP, или перевод адреса с регистра адреса в счетчики адреса, по условию или без. Получатель 00000000 - это как бы модуль команд без параметров). Если 11111111, то вместо отправителя константа, которая пропихивается в следующие n-бит регистра для сбора константы (при полном заполнении регистра счетчик сбрасывается и заполнения регистра сборки константы начинается опять с младших битов). Вот вам и конструктивная особенность, связанная с железной реализацией - выбор 11111111 и 00000000 адресов для команд. Потому что их проще реализовать в железе, меньше микросхем потребуется. Все остальное - это просто комбинация адреса регистра, сбрасывающего значения на шину, и адреса регистра, на который мультиплексором уйдет такт для записи.
Итого, чтобы сложить 2 константы, необходимо в моем случае (восмибитном как для команд, так и для данных) дважды закинуть 4 бита, выполнить перенос с регистра набора константы в регистр первого операнда, далее тоже самое повторить для регистра второго операнда, а затем просто взять значение с регистра суммы туда, куда пожелаем. Итого 7 тактов. Тоже самое для других операций, выполняемых фактически за один такт (имею ввиду, что вычисления происходят каждый такт над тем, что там в операндах лежит). Но при этом такт у нас состоит только из восходящего фронта, а не из пары фронтов как в атмеге например.
Конечно же такую архитектуру я для себя избрал только по одной причине: я планирую доделать это в железе. Поэтому опирался исключительно на то, что будет красиво с моей точки зрения (однотипность операций) и легко реализуемо в железе. То есть я заранее соглашусь, что моя разрядность не оптимальна, архитектура для высоких частот не оптимальна. Ведь куда проще брать исходные данные за 1 такт широкой командой, а за следующий (или нисходящим фронтом) выкидывать результат. Но еще раз: у меня нет завода по производству чипов во владении. А вот с точки зрения обзорной модели "как работает процессор" или "ого, вот он процессор своими клешнями" - для этого такая архитектура в самый раз. Вы могли заметить, что в моем случае кусок АЛУ под свободные адреса запросто может сесть на шину, остается лишь компилятору об этом рассказать. То есть процессор сборный и кроме 0000 и 1111 (штатных команд в небольшом количестве и команды сборки константы) все остальное можно подключать и отключать. А как в железе упростить понимание адреса каждым модулем за исключением этих двух "особенных"? С дешифратора отправляем на шину не только биты, но и их инверсии. А на модулях просто собираем также, как сделано в любом мультиплексоре (от каждого бита либо его основу, либо инверсию). Короче, все у меня придумано конкретно для железа и конкретно для ручной сборки.
К этому и был мой первый вопрос. Ну.. процессоров виртуальных мы можем наделать кучу. Можем мечтать об этом, можем реально экспериментировать. Но как только дойдет до железа, то мы ловим сразу две причины сделать все совсем по-другому:
1) Высокие частоты (вы упомянули про провода, но там частоты были явно минимальные). И это главная причина.
2) Совместимость. При реорганизации слишком большие издержки, в нашем случае пришлось бы ПО переделывать на корню.
///
От себя еще добавлю, что лично на мой взгляд процессор должен быть законченным объектом. Это я говорю как программист. Потому что наборов функций АЛУ типовых может быть лишь несколько, дальнейшая оптимизация в этом месте не приведет к существенному приросту. Также не вижу перспектив в наращивании последовательных шин. В связи с тем, что все упирается в частоты, будущее наверное за архитектурой параллельного включения процессоров, возможно даже в одну широкую шину. Ну или как частный случай, в утолщении шины. Поэтому ни ваша идея, ни моя идея, кроме академического интереса позиций не имеют.
Добавлено after 2 hours 44 minutes 42 seconds:
Re: Микропроцессоры: Попытки разработки собственной архитектуры
И в довесок схема какого-то наипростейшего допотопного процессора, который еще динозаврам служил. А вы все шутите про ноги сумматора...
Спойлер



