User Tag List

Показано с 1 по 10 из 133

Тема: Ядро с 32 битами и виртуализацией

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от blackmirror Посмотреть сообщение
    Правильно ли я понимаю, что каждый порт этой памяти имеет шину адреса, прочитанных данных и данных для записи, но одновременно прочитать и записать через один порт мы не сможем?
    Да, правильно.

    Цитата Сообщение от blackmirror Посмотреть сообщение
    К примеру если тело цикла из одной команды, добавление djnz снизит его производительность в 2 раза
    А если выполнять по 2 команды за такт, то цикл из одной команды замедлится в 3 раза
    Нет, идея с регистрами мне не нравится. И в любом случае переход сбивает буфер инструкций (конвейер). Потом может для циклов придумаю что-нибудь.

    Цитата Сообщение от blackmirror Посмотреть сообщение
    Дополнительные размышления привели меня к мысли, что для обращения к памяти сложные формы адресации не требуются.
    Пусть будут, они не мешают. Load/store архитектура тоже имеет недостатки.

    Цитата Сообщение от blackmirror Посмотреть сообщение
    Во всяких Cortex команды push и pop в качестве аргумента имеют битовую маску какие регистры сохранять/загружать, а какие пропустить. Есть команды загрузки сохранения аналогичные pop и для других регистров. И еще есть команда загружающая/сохраняющая сразу по 2 произвольных регистра то есть: Ri=(Ra) Rj=(Ra+4) Ra+=8.
    Цитата Сообщение от blackmirror Посмотреть сообщение
    Требуется поделить банк регистров на чётные и нечётные, поставить два ALU, две шины записи и 4 шины чтения, и в коде команды указывать что подать на мультиплексоры для этих шин. Для записи в память несколько бит будут выбирать с какой из шин выдать адрес и данные. Для чтения нужно выбрать с какой шины выдавать адрес, и нужно ли прочитанные данные поместить в фиксированный регистр или выдать на шину записи. В итоге в 32 бита команды можно закодировать две регистровые операции по 12-13 бит и одну пересылку 5-6 бит, в достаточно ортогональном для удобства программирования виде.
    Для такого двойного процессора программист будет писать две команды в строке, или ассемблер соберёт две в одну? Потому что проектировать процессор с блокировками и байпасами меня что-то совсем не прёт.

    Разделение регистров позволяет и push сделать по маске, и два ALU с двумя операциями за такт, но я на данный момент вообще не понимаю как эту параллельность воткнуть в то, что есть. При 32-битных командах RISC всё получается просто, но надо сохранить совместимость с Z80, а он совсем не RISC, переменная длина команд всё портит. Предел, на котором по-моему надо остановиться - один байт кода за такт.

    По тактам минимум получается примерно так:
    mov A,R - 1 такт
    mov R,A - 1 такт
    mov R,R - 2 такта
    func A - 1 такт
    func R - 2 такта
    func A,R - 3 такта
    func R,A - 4 такта
    func A,imm32 - 6 байт, 8 тактов
    func [reg],imm32 - 7 байт, 17 тактов

    Доступ к памяти пока по 1 байту, поэтому так долго. Можно, конечно, и внутреннюю шину сделать 32 бита, и не ждать окончания записи, и что-то распараллелить, всё можно. Но я тогда закопаюсь в этих деталях и до главного - запуска процессора - не доберусь.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    А если выполнять по 2 команды за такт, то цикл из одной команды замедлится в 3 раза
    Нет, идея с регистрами мне не нравится. И в любом случае переход сбивает буфер инструкций (конвейер). Потом может для циклов придумаю что-нибудь.
    Конвейер сбивают непредсказанные переходы, а аппаратные циклы штука вполне предсказуемая.

    Цитата Сообщение от Bolt Посмотреть сообщение
    Для такого двойного процессора программист будет писать две команды в строке, или ассемблер соберёт две в одну? Потому что проектировать процессор с блокировками и байпасами меня что-то совсем не прёт.
    Можно либо ставить специальный знак, что к данной строке нужно прицепить команду из следующей, но мне больше нравится вариант продолжать команды в той же строке.

    Цитата Сообщение от Bolt Посмотреть сообщение
    Разделение регистров позволяет и push сделать по маске, и два ALU с двумя операциями за такт, но я на данный момент вообще не понимаю как эту параллельность воткнуть в то, что есть. При 32-битных командах RISC всё получается просто, но надо сохранить совместимость с Z80, а он совсем не RISC, переменная длина команд всё портит. Предел, на котором по-моему надо остановиться - один байт кода за такт.
    С переменной длинной может помочь только двоичная перекомпиляция, но наверно действительно лучше остановиться.

  4. #3

    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от blackmirror Посмотреть сообщение
    С переменной длинной может помочь только двоичная перекомпиляция, но наверно действительно лучше остановиться.
    О двоичной перекомпиляции тоже думал, в итоге остановился на таком вот гибридном процессоре.

    - - - Добавлено - - -

    Цитата Сообщение от andrews Посмотреть сообщение
    можно иметь в дальнейшем хоть дюжину более сложных и более совершенных версий архитектуры.
    Ага. Только желательно сохранить совместимость по коду.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Похожие темы

  1. Ответов: 465
    Последнее: 03.01.2020, 07:15
  2. Ответов: 16
    Последнее: 02.08.2005, 12:20

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •