Как в архитектурах risc одинаковые виртуальные адреса разных контекстов задач различаются? В cisc x86 есть специальные дескрипторы cr3. В risc вроде там куча csr регистров, но я среди них не нашел похожего. Каким образом одинаковые адреса различаются. Или они просто не могут быть одинаковыми(типа ос позаботиться)? Как они в tlb обрабатываются, если вдруг они реально могут быть одинаковыми, и там нету ни каких дополнительных индексов процесса) В добавок не очень понятно, почему на разных компиляторах одна си операция ассемблируется то в комбинацию lui + addi, то в комбинацию auipc +addi. Понятно что абсолютная относительная от счетчика. Но где какая используется не совсем понимаю. Постоянно в состоянии пинг-понг, то понимаю, то понимаю что не понимаю.

20 Мар 2023 в 19:53
90 +1
0
Ответы
1

В архитектурах RISC, различие между виртуальными адресами разных контекстов обычно осуществляется через использование разных базовых адресов страниц (base address). Каждый контекст задачи имеет свой собственный базовый адрес страницы, который добавляется к виртуальному адресу для получения физического адреса.

В отличие от архитектуры x86, в RISC архитектурах обычно отсутствуют специальные регистры для базовых адресов страниц. Вместо этого используются регистры контекста (context registers), которые хранят информацию о текущем контексте выполнения задачи. Таким образом, при обращении к виртуальному адресу происходит проверка текущего контекста выполнения и применяется соответствующий базовый адрес страницы.

Что касается TLB, она обрабатывает виртуальные адреса, однако при обращении к TLB также используется информация о текущем контексте выполнения для выбора соответствующего физического адреса.

Относительно комбинаций инструкций в ассемблере, выбор между lui + addi и auipc + addi зависит от положения целевого адреса и от адреса команды. Если целевой адрес находится в пределах 12 бит относительно адреса команды, то используется комбинация lui + addi. Если же целевой адрес находится за пределами диапазона 12 бит, то используется комбинация auipc + addi. Это делается для оптимизации размера команд и сокращения числа бит, которые требуются для представления адресов.

16 Апр в 16:30
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 706 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир