LINUX.ORG.RU

Опубликовано описание набора привилегированных команд процессорной архитектуры RISC-V

 ,


0

5

Как обычно, тихо и незаметно, на сайте проекта RISC-V опубликована спецификация привилегированных команд (интересной возможностью RISC-V является разделение на 4 уровня привилегий, а не 2, как в традиционных RISC).

Чтобы два раза не вставать, вот последнее на данный момент сообщение о прогрессе работ по проекту lowRISC.

>>> Подробности

Не очень понятно, где это используется? В x86 вон тоже было 4 кольца защиты (привилегий), но на практике почти никто их не использовал, только два уровня: 0-е кольцо и 3-е. Возможно из-за накладок на переключения, но скорее, просто не очень нужно было на практике.

anonymous_incognito ★★★★★ ()
Ответ на: комментарий от anonymous_incognito

Думаю, что не используется пока нигде :) Но названия вполне говорящие: User/Application, Supervisor, Hypervisor, Machine.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

В 386-м примерно те же даже названия были, но не взлетело в своё время. Практически все ОС используют только 0-е и 3-е. Хотя про гипервизор не было.

anonymous_incognito ★★★★★ ()
Последнее исправление: anonymous_incognito (всего исправлений: 1)

такс такс што тут у нас RISC-V RISC-V RISC-v хахах

А если серьёзно, ждал этого с прошлого августа.

SystemD-hater ()
Ответ на: комментарий от anonymous_incognito

В 386-м примерно те же даже названия были

Даже и не близко.

Практически все ОС используют только 0-е и 3-е

В x86 есть SMM - фактически еще одно кольцо (в RISC-V ему соответствует Machine). Правда, учитывая, что на lowRISC переносят seL4, это скорее пугает.

tailgunner ★★★★★ ()

В железе оно существует?

Harald ★★★★★ ()
Ответ на: комментарий от tailgunner

прям ARMv7/v8... думаю и у современных MIPS подобное есть, так что боян :)

anonymous ()

Расскажите вкратце что это и зачем.

loz ★★★★★ ()
Ответ на: комментарий от anonymous

У классических SPARC и MIPS этого не было. Линк на 4 кольца в современных MIPS?

tailgunner ★★★★★ ()
Ответ на: комментарий от msgascii

Почитайте про взлом xbox360. Я сейчас боюсь наврать просто.

anonymous ()
Ответ на: комментарий от tailgunner

ему про современные ARM и MIPS, а он про классические SPARC и MIPS, прекращай употреблять уже!

anonymous ()
Ответ на: комментарий от anonymous

ему про современные ARM и MIPS, а он про классические SPARC и MIPS

Читать учись, недоумок:

tailgunner> Линк на 4 кольца в современных MIPS?

tailgunner ★★★★★ ()

А смысл? Интересно будет единицам. Писать asm-программы на RISC это как собирать ДНК по атомам

frame ★★★ ()
Ответ на: комментарий от frame

Считаешь, что спеки на ISA публикуются для того, чтобы писать на asm?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Сколько тут обитает писателей компиляторов, разработчиков ядра, которые хотя бы в отдаленном будущем смогут получить соотв. железо?

frame ★★★ ()
Ответ на: комментарий от frame

Сколько тут обитает писателей компиляторов, разработчиков ядра, которые хотя бы в отдаленном будущем смогут получить соотв. железо?

Здесь совершенно точно обитают люди, которые интересовались privileged ISA. Компиляторщики они, системщики или еще кто-то - неважно.

tailgunner ★★★★★ ()
Ответ на: комментарий от frame

тоесть gcc сам напишется,и новых взможностей туда не надо,также как и llvm сам соберется?

даже я слал багрепорты в гцц,и десяток крупных открытых пректов,и не только багрепорты а и фиксы,и фиксил локально под свой МК52

...походу ты очень далек раз непонимаешь как все просто(в плане кодинга) и открыто для всех

такчто да-тут пол лора будет фиксить/плеваться/мигрировать на винду с этими безопасностями

g1966464 ()
Ответ на: комментарий от tailgunner

Alpha имела 4 уровня привилегий, и VMS все их использовала. USER, SUPERUSER (в нем жил DCL-местный shell), EXEC(cutable) (в нем жили драйвера и модули файловой системы ну и куча модулей ОС), ну и KERNEL

gns ★★★★ ()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от frame

Я как-то пробовал. Для альфы. То, что я уложил в 16 команд, компилятор уложил в 15. После этого я бросил писать на асме для риска :)

gns ★★★★ ()
Ответ на: комментарий от tailgunner

И на альфе — тоже. Зуб даю. Реализовано микропрограммно. Рядом с процессором стояла одна или две ПЗУшки, которые содержали набор микропрограмм (PAL-codes), Для юникса и WiindowsNT было достаточно наличия одной ПЗУ, VMSу было нужно две.

http://download.majix.org/dec/alpha_arch_ref.pdf

Alpha Architecture Reference Manual, глава 10:

CHME Change mode to executive 10.1.3 CHMK Change mode to kernel 10.1.4 CHMS Change mode to supervisor 10.1.5 CHMU Change mode to user 10.1.6

gns ★★★★ ()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от anonymous_incognito

Возможно из-за накладок на переключения, но скорее, просто не очень нужно было на практике.

Да, обычно не нужно. Я использовал 2-е кольцо (дополнительно к 0 и 3) в своих патчах для Linux 2.0, чтобы эксплойт не мог слишком легко (до выполнения им почти произвольного кода) переключиться на исполняемый стек. Т.е. у меня был неисполняемый стек в 3-м кольце, и исполняемый во 2-м (включался для пользовательского кода на время выполнения обработчиков сигналов и gcc trampolines). Тогда же заметил, что в 386 не везде полностью реализована поддержка 4-х колец: в обработчик page fault передается только один бит - было ли кольцо 3 или любое другое - http://wiki.osdev.org/Exceptions#Page_Fault - но это была легко решаемая мелочь (один лишний if в патче). Начиная с Linux 2.2, я от использования 2-го кольца ушел (придумал для возврата из обработчиков сигналов и для gcc trampolines решения, не требующие временного переключения на исполняемый стек). Давно это было.

VAX и Alpha здесь уже упомянули. (Кстати, режим выполнения PALcode в каком-то смысле уже сам по себе является еще одним уровнем привилегий, даже если конкретный PALcode не реализует более двух уровней для остальной системы.) Упомяну еще PA-RISC - четыре уровня привилегий, кодируемые в младших двух битах адреса инструкции (которые иначе были бы всегда нулями из-за выравнивания на 32 бита). И еще Multics и соответствующее железо конца 1960-х - 8 уровней:

http://people.cs.clemson.edu/~mark/architects.html

GE-645 [...] 1965 [...] added advanced segmented and paged memory system along with protection rings to 635 processor; initial plans for 32 protection rings reduced to 8 rings in final hardware

http://www.osronline.com/showThread.CFM?link=266387

Назначение каждого из 8-ми уровней (подзаголовок Rings of Privilege):

ftp://ftp.stratus.com/vos/multics/pg/mvm.html

Интересно, что уровни 5, 6, 7 выделялись под пониженные привилегии относительно обычного пользовательского уровня - т.е.sandbox в Chrome и т.п. ;-) Возможно, это опередило свое время.

Disclaimer: к сожалению, с Multics не игрался совсем. VAX, Alpha, PA-RISC есть дома, но давно не включались. На ассемблере чуть-чуть писать пробовал под все три (под Alpha ощутимо, под PA-RISC и VAX совсем мелочи), но не системный код (strnlen_user() в ядре не считается т.к. такой же код был бы и в user space и т.к. мелочь).

solardiz ()
Ответ на: комментарий от tailgunner

В современных x86 ещё микрокод есть. А в хасвелле вообще целый ARC600 переехал из PCH в проц, и хрен его знает, что он там делает.

intelfx ★★★★★ ()

Новость про какое-то сильное колдунство. Вы бы мужики, дополняли такие новости ссылками на то, с чем это едят. Не, ничего не имею против, просто хотелось бы почитать, что это такое, хотя-бы в стиле вводного повествования.

ЗЫ: Ответы в виде «если ты не знаешь, что это такое, то значит тебе не нужно» - не принимаются. Иначе так все человеческое существование можно свести к тезису «жрать-срать-спать».

ioway ()

Ну если скорость переключения контекстов будет как на x86 то больше двух наврятли есть смысл использовать, если только кто будет писать самое безопасное и тормозное ядро. :)

TheMixa ★★★ ()
Ответ на: комментарий от intelfx

А в хасвелле вообще целый ARC600 переехал из PCH в проц, и хрен его знает, что он там делает.

Стучит, ес-нно.

Pavval ★★★★★ ()
Ответ на: комментарий от ioway

Иначе так все человеческое существование можно свести к тезису «жрать-срать-спать».

Давно пора. А понавыдумывали линуксов - их никто в глаза не видел, а люди задротствуют.

Pavval ★★★★★ ()
Ответ на: комментарий от ioway

Если очень просто то это изоляция пользователя, от прав админа на уровне железа. Прочитайте про кольца защиты, гипервизоры и тд.

Наибольший спрос имеется у производителей игровых консолей. Там, а не на каком-то банковском мейнфрейме, или серваке анб это используется в полный рост. Поэтому владельцы консолей любят плавить чипы кислотой, или устраивать хардварную атаку на ЦП стремясь подсунуть свой код.

anonymous ()
Ответ на: комментарий от TheMixa

В который раз слышу о скорости переключения контекстов там, где речь должна идти о переключении колец защиты. И кстати, что не так на x86 со скоростью переключения того и другого?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Посмотрел, оказывается я знаю о чем идет речь. Помнишь такие старые издания, «Братья Фроловы, Библиотека системного программиста»? Но не думал, что это все еще актуально

ioway ()
Ответ на: комментарий от ioway

Помнишь такие старые издания, «Братья Фроловы, Библиотека системного программиста»?

Помню. Правда, они относятся к теме чуть менее, чем никак.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Ну микропрограммы не были новостью на момент появления альфы, считать ли вызов микропрограммы инструкцией процессора — скорее инженерно-философский. Как была реализована инструкция CALL_PAL я уже не помню, давно это было.

DEC перетащил все, что было на ваксе как смог. Даже двоичный транслятор написали — можно было преобразовать прикладной исполняемый модуль вакса в исполняемый модуль альфы. Если исходный код использовал только системные вызовы, то полученное даже работало. :)

gns ★★★★ ()

меня одно слово в заголовке сразу навело на определенные мысли

kto_tama ★★★★★ ()
Ответ на: комментарий от gns

PALcode - это отдельная песня.

Ну микропрограммы не были новостью на момент появления альфы

PALcode - не микропрограммы.

DEC перетащил все, что было на ваксе как смог

Ну это понятно... только я не нашел в хэндбуках Alpha конкретного ответа на вопрос «сколько у процессора уровней привилегий?». Оно там вообще есть?

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous_incognito

Во всяких там VAX/VMS очень даже использовалось по 4 уровня.

anonymous ()
Ответ на: комментарий от frame

Железо ты можешь на FPGA хоть сейчас завести.

anonymous ()

>>> Подробности
Summer of Code students

студентота пишет заготовки для спецификаций?

reprimand ★★★★★ ()
Ответ на: комментарий от anonymous_incognito

Не очень понятно, где это используется? В x86 вон тоже было 4 кольца защиты (привилегий), но на практике почти никто их не использовал, только два уровня: 0-е кольцо и 3-е.

В OS/2 использовалось: https://web.archive.org/web/20130616221644/http://www.warpspeed.com.au/cgi-bi.....\html\book\ddk\PDRREF.INF+5

И еще в VirtualBox: https://en.wikipedia.org/wiki/VirtualBox#Software-based_virtualization

The system reconfigures the guest OS code, which would normally run in ring 0, to execute in ring 1 on the host hardware.

SZT ★★★★ ()
Ответ на: комментарий от tailgunner

ой да, перепутал... что это со мной такое...

и читать не умеешь

ну а давай ты не будешь делать выводы заранее, ладно?

reprimand ★★★★★ ()
Последнее исправление: reprimand (всего исправлений: 1)
Ответ на: комментарий от reprimand

ну а давай ты не будешь делать выводы заранее, ладно?

Заранее я и не делал.

tailgunner ★★★★★ ()
Ответ на: комментарий от intelfx

хрен его знает, что он там делает.

ARC? Удалённое управление делает.

devl547 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.