|
Модераторы: Mazzi |
|
actuator |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 15.12.2011 Репутация: нет Всего: 3 |
Сам аппаратным синтезом не занимаюсь, но хотелось бы услышать мнение специалистов.
Когда-то я учился программировать микроконтроллеры на архитектуре MCS-51. Оттуда мне запомнилось наличие нескольких банков регистров, переключение между которыми практически бесплатно. Это ж во как здорово для любых видов многозадачности! Не нужно заталкивать регистры в стек, достаточно просто переключиться на другой банк. Я так делал для прерываний. Но регистров у процессоров всегда очень мало, так что выдавать их банками - непозволительная роскошь. Какому-нибудь конечному автомату их нужно всего три-четыре штуки. Привязывать функции к конкретным номерам регистров - тоже очень неудобно, придется делать для разных регистров разные копии функций. В связи с этим вопрос - можно ли сделать процессор с относительной адресацией регистров? Ну, чтобы использовать не целый банк, а столько, сколько их нужно, как мы поступаем со стеком? Например, сделать дополнительный регистр r с номером смещения в регистровом файле. Функции тогда будут обращаться не по абсолютному номеру "reg(4)", а по относительному "reg(r + 4)". Когда потребуется сохранить/восстановить контекст, компилятор в зависимости от наличия места в файле либо просто переключит номер регистра (дешево?), либо загрузит файл целиком из стека/памяти и тоже переключит номер. Так, я думаю, можно будет избавиться от большого количества сохранений контекста в стек. Забавно, выглядело бы это как стековый процессор, у которого в роли инструкций функции программы. К тому же, у меня подозрение, что именно так работает многозадачность на современных видеокартах - с аппаратным планировщиком и контроллером памяти, реализующими ту же стратегию. |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 1 Всего: 223 |
||||
|
||||
actuator |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 15.12.2011 Репутация: нет Всего: 3 |
Спасибо, похоже, я изобрел то, что уже сделано до меня, по научному Register Windows. И даже используется примерно так, как я подумал. Присмотрюсь к Спаркам повнимательнее.
|
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 1 Всего: 223 |
Еще посмотрите в сторону Itanium'а, там не только Register Windows, там есть полноценные косвенные адресации к регистрам (смотреть в сторону циклов с Software Pipeline)
|
|||
|
||||
ТарасАтавин |
|
|||
Опытный Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Количество банков всегда ограничено, кроме того, обычно требуется после сохранения регистров в стек переписать значения лишь некоторых регистров, а у остальных должны остаться значения, которые они имели до сохранения, переключение же на другой банк заменяет все регистры банка. Я писал для двухбанкового камня, но ни разу не смог использовать переключение банков. Более менее понятно, как программировать камень, у которого сразу несколько слотов, в каждый из которых можно выбирать банк регистров, или как программировать многобанковый камень, используя стек для восстановления части регистров после переключения банков. Это сообщение отредактировал(а) ТарасАтавин - 23.11.2013, 15:12 -------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
TarasProger |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 104 Регистрация: 5.8.2015 Репутация: нет Всего: нет |
Сколько у тебя банков? И сколько задач? Стек тупо больше. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разное (электроника) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |