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

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

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

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

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

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

16 Апр 2024 в 16:30
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир