>Не, там покруче на пару порядков. Грубо говоря - это такой идеальный
>неймановец.Настолько идеальный что даже у general purpose регистров CPU есть ...
>адрес (да, это вам не х86).Вах. Аппаратное переименование регистров появилось аж в Pentium-е, если мне склероз не изменяет, для его суперскалярной архитектуры с двумя конвеерами это было полезно, а он появился аж в 1993 году.
>Крыша еще на хлопает в ладоши?
С какого это перепугу?
>Не вижу проблем чуть доразвить эту идею и сделать по образу и
>подобию но с переключением привилегий и полного состояния CPU, буквально еще
>пара-тройка регистров к контексту (Program Counter, mode, flags, ...).Тогда проц мог
>бы спокойно прыгать между пачкой процессов и режимов характерных для микроядра
>за буквально время выполнения 1 команды пишущей указатель, т.е. несколько тактов.
>Если б кого приперло микроядра всерьез и много юзать - давно
>б сделали.
Бла-бла-бла. Понимаете, разница между мной и вами в том, что у меня был курс микроэлектроники и я умею пользоваться калькулятором, а у вас всего этого не было.
Давайте посчитаем, сколько же памяти занимает контекст. Забегая вперёд скажу что в самом распоследнем Core i7 всего 32K L1 кеша данных, тобишь самой быстрой памяти с низким latency у нас всего кот наплакал. Но давайте посчитаем размер контекста:
16 x 64bit (регистры общего назначения) = 128b
8 x 80bit (FPU) = 80b
16 x 128bit (SSE) = 256b
64bit RIP = 8b
64bit RFLAGS = 8b
5 x 32bit (CRx) = 20b
1 x 64bit (EFER) = 8b
тобишь только один контекст уже занимает 508b. Тобишь в L1 кеш влезет аж 64 контекста, а ведь там ещё данные хранить нужно. Добавьте в контекст каталоги страниц, чтобы за ними в память не лазить и не тормозить (одна PDPT, на которую cr3 указывает, занимает 512 x 48bit = 3kb). В общем на такой идее можно смело ставить крест.
>А вот немцам оказалось не слабо - в конкретном
>железе при том.Немолодом весьма.Забавно, а?
Ещё раз - у немцев задача была на порядки проще.
>Немцы в их добре наверное могли бы поддерживать сколько угодно наборов регистров,
>ограничиваясь только адресным пространством. По факту оно у них ограничено объемом
>накристальной RAM.И ничем более.Это явно не 2 задачи а, гм, довольно-таки
>неплохая кучка.
Ещё раз - 80C167, который конкурент 8051, поддерживал только основную программу и два прерывания: итого 3 контекста и в общей сложности < 48b на всё про всё.
>Если вспомнить про размер кешей у современных топовых CPU и предусмотреть на
>пиковый случай сброс добра в обычную оперативу (уже с потерей скорости
>ессно) можно понять что таким манером вполне реально очень быстро переключать
>контексты всех процессов и потоков в ОС. Если б кому зудело
>- давно б сделали уже.
Вы просто с реальностью не дружите, вот и всё. Контекст в современном проце это намного больше чем десяток восьми битных регистров. Даже если не учитывать каталоги страниц, то уже набегает пол килобайта, при этом их прийдётся вытаскивать из памяти и никакого одного такта не получится.
>Просто всем и так хорошо -
>вот и не дергаются. Но в теории это не запрещается. И
>даже как видите на практике в минимальном варианте существовало, блин.
Просто на практике это нереализуемо. Или вы думаете что разрабы добавляют L3 кеш на много мегабайт просто из лени нарастить на столько же L1?
>>контекст нужно проверить уровень привелегий, сохранить текущий контекст в медленную
>>память
>А что помешает присобачить резвую локальную память спецом под хранеение контекста, на
>манер немцев, если задаться такой целью? Немцы вон в простом виде
>вон смогли. И красиво так запихали это все в неймановскую архитектуру.
Потому что нет этой резвой локальной, а та что есть - мало. Вы в своих познаниях относительно архитектуры процессоров застряли в районе конца 80-х начала 90-х.
>Дык разговор вроде был не о том как все паршиво может быть
>(у какойнить унылой байды типа х86 уродца) а о том как
>в принципе можно было сделать если б задаться целью. Проц похожий
>на это (хоть и отдаленно) я даже показал.
Давайте возьмём какой-нить RISC. У них регистров ещё больше и контекст занимает ещё больше. Можно всё сделать, если захотеть, только это никому не нужно будет, банально не взлетит ибо нет софта, который бы на нём работал.
>Это все не столь уж принципиально, т.к. буфером в случае накристальной памяти
>она может быть сама себе.
Ещё как принципиально. На размер контекста влияет.
>Но в обычной ситуации оно вообще юзаться не должно - этакая
>запасная фича, по аналогии с свопом :).
У меня сейчас на машинке запущено 245 процессов, сколько там потоков (тех самых execution context) - бог знает, считать лень. Тобишь уже места не хватает.
> И, собссно, зачем привязываться к тому как у х86 урода сделано?
потому что это сделано, это работает, под это написано много кода.
>Можно ведь и иначе.
>Просто и изящно приделать это к новой архитектурке, заранее предусмотрев какойнить
>обработчик исключений по этому поводу, отливая в заведомо non-pageable память и
>прочая (да, читать контекст проца из свопа - не рулит как
>бы, ни разу! :D).
Делайте, кто вам мешает?