Важная информация

User Tag List

Страница 12 из 14 ПерваяПервая ... 891011121314 ПоследняяПоследняя
Показано с 111 по 120 из 133

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

  1. #111
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от omercury Посмотреть сообщение
    Вместо вычитания производится сложение с дополнительным кодом.
    Не в курсе за Z80, но у ВМ80 именно так и есть:


  2. #112
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Не в курсе за Z80, но у ВМ80 именно так и есть:
    Да оно везде так - никто в здравом уме не будет раскошеливаться на мифический "вычитатель" вместо дешёвой логической функции получения дополнительного кода.
    Только разве в софтядрах по незнанию.

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

    Цитата Сообщение от Bolt Посмотреть сообщение
    Задумался о длине и кодировании инструкций.
    Если инструкции переменной длины...
    Если инструкции по 2 байта...
    Если по 4 байта...
    Не жадничай, делай как в микроконтроллерах, память нонче недорога.

    Цитата Сообщение от Bolt Посмотреть сообщение
    но как кодировать 16/32-битные константы?
    А каков размер адресного пространства планируется?
    Если меньше 4 гигабайт, то всё не так уж и плохо - скажем, если ограничится 1Tb(Хватит всем!(с)) то 2 старших разряда уйдут на кодирование инструкций загрузки аккумулятора (в пределах двух триллионов (например 1xxx.. - загрузка числа в аккумулятор).
    Ещё 2 разряда можно отвести на инструкции типа CALL и JP (скажем 01xx... в этом случае 00xx... укажут на следующий тип инструкций). Или 3 разряда, если переходы и вызовы подпрограмм сделать только относительными, правда это не имеет смысла, так как нужно ещё задать направление относительно текущего адреса)).
    А дальше уже по вкусу, в 28 бит влезет мнооого.
    Последний раз редактировалось omercury; 26.07.2020 в 16:15.

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

    По умолчанию

    Цитата Сообщение от omercury Посмотреть сообщение
    А каков размер адресного пространства планируется?
    16 мегабайт.

    Цитата Сообщение от omercury Посмотреть сообщение
    Не жадничай, делай как в микроконтроллерах,
    Это как?

    С остальными даже фантазировать не приходится, они в 32 бита укладываются, а вот "reg,reg" какая-то полупустая получается.

  4. #114
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Это как?
    Фиксированная длина инструкций.

    Цитата Сообщение от Bolt Посмотреть сообщение
    16 мегабайт.
    В предыдущем посте описан случай с 31 битом для констант и 30 битами для адресов (для 32-битных команд кратность адресации 4, доступ к памяти сохраняется побайтный - можно даже восьмибитку делать)))

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

    Цитата Сообщение от Bolt Посмотреть сообщение
    Можно попытаться затолкать 2 штуки, и даже выполнять обе за цикл
    Это уже фишки DSP, в данном случае не нужны особо, если интересно, посмотри например эти, достаточно простые и понятно расписаны.


    Цитата Сообщение от Bolt Посмотреть сообщение
    а вот "reg,reg" какая-то полупустая получается.
    Ну и пёс с ними, "лишними" битами. Зато логика работы намного проще.
    Сейчас хард намного дешевле софта.
    Побереги своё время.

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

    По умолчанию

    Цитата Сообщение от omercury Посмотреть сообщение
    Побереги своё время.
    Вот.

    В общем нашёл решение. Там такой мелочёвки ещё набралось, можно сделать "суб-опкоды":
    0x00 - nop
    0x01 - func reg,reg
    0x02 - ...
    0x1? - func reg,imm16
    0x2? - ...

    Интересно, сколько в итоге займёт декодер?

  6. #116
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Интересно, сколько в итоге займёт декодер?
    Если его делать так
    Цитата Сообщение от Bolt Посмотреть сообщение
    0x00 - nop
    0x01 - func reg,reg
    0x02 - ...
    0x1? - func reg,imm16
    0x2? - ...
    то много.

    Не с той стороны начал.
    Разбей опкоды на биты, например:
    {тип команды, код команды, источник, приёмник}
    и получишь 3 декодера, работающих параллельно (по-факту не совсем параллельно, но значительно быстрей общего большого декодера, в котором будет полно длинных цепочек из элементарной логики). Да и поменьше он будет.

    UPD
    Помнишь ограничение в ~50МГц для t80/tv80 ?
    причина как раз в этом.
    Последний раз редактировалось omercury; 26.07.2020 в 19:15. Причина: дописал

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

    По умолчанию

    С той, с той Это и есть "тип команды, код команды"...

  8. #118
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    С той, с той Это и есть "тип команды, код команды"...
    Мне понадобился всего один бит кода команды, чтоб загрузить
    Цитата Сообщение от Bolt Посмотреть сообщение
    func reg,imm16
    , только imm31

    Впрочем, дело твоё

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

    По умолчанию

    А 32-битный BC как загружать, тоже через аккумулятор? Две инструкции, 31 бит загружен, ещё и аккумулятор испорчен. А есть ещё 16-битный BC.

    У меня грузятся отдельно нижние 16 бит, отдельно верхние, причём это не только ld, но и add, sub, xor... То есть 32 бита add это 16-битные add и adc, с коррекцией флагов. Или вообще один add, если 32 бита можно упаковать в 16. И эта же инструкция для 8 бит, только один байт не используется. И эта же инструкция добавлением одного бита превращается в bit, set, res любой разрядности 8/16/32. И inc/dec туда же.

  10. #120
    Activist Аватар для omercury
    Регистрация
    13.02.2016
    Адрес
    г. Королёв
    Сообщений
    493
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    11 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    А 32-битный BC как загружать, тоже через аккумулятор? Две инструкции, 31 бит загружен, ещё и аккумулятор испорчен. А есть ещё 16-битный BC.
    А 32-битная организация мешает в Cortex-ах использовать 16-битные инструкции thumb?

    Я просто предложил вариант, как говорится, не нравится - не ешь.

Страница 12 из 14 ПерваяПервая ... 891011121314 ПоследняяПоследняя

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

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

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

Похожие темы

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

Ваши права

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