LINUX.ORG.RU

Энтузиасты дизассемблировали микрокод i386 и создали открытый CPU z386

 , , , z386,

Энтузиасты дизассемблировали микрокод i386 и создали открытый CPU z386

6

5

Энтузиасты смогли успешно извлечь и дизассемблировать микрокод процессора Intel 80386, который из-за отсутствия документации считался «чёрным ящиком». Бинарный образ микрокода был воссоздан с привлечением AI по фотографиям кристалла в высоком разрешении, а логика работы разобрана через трассировку соединений на кристалле. Постепенно были определены структура микрокоманд (μ-ops), поля, порядок исполнения и маркеры конца инструкций. Наработки проекта опубликованы на GitHub как общественное достояние.

Выявлено, что в CPU 80386 каждая инструкция полностью исполняется через микрокод, в то время как в 8086 и современных процессорах часть инструкций обрабатывается напрямую. Кроме того, в отличие от процессоров 8086, в 80386 микрокод не реализует алгоритмы напрямую, а в основном настраивает аппаратные ускорители (умножитель, делитель, быстрый сдвиг, PTU (Protection Test Unit)).

В ходе исследования также была обнаружена возможная проблема с безопасностью при обработке битовой карты прав доступа к вводу/выводу (IO permission bitmap): при 4-байтовом обращении к портам проверялись биты прав доступа только для первых 3 байтов, а доступ к 4-му байту не проверялся, что теоретически допускало обращение к аппаратным регистрам, доступ к которым должен был быть запрещён.

На основе опубликованного микрокода разработан открытый CPU z386, реализованный на языке SystemVerilog и работающий с использованием FPGA. Вместо реализации каждой инструкции в форме отдельного RTL (wikipedia.org) (Register-transfer level) в z386 реализованы аппаратные структуры, которыми управляет оригинальный микрокод. Производительность подготовленной реализации соответствует быстрому 386 ПК (~70MHz). Под управлением z386 удалось успешно запустить DOS 6/7, DOS/4GW, DOS/32A и игры, такие как Doom и Cannon Fodder.

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



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

И что? При чём тут режимы работы проца? Теоретически можно даже сделать 286 проц + мост ISA-PCI + такую видеокарту, правда обратиться к фреймбуферу проц не сможет, но видеокарта всё так же будет всё что надо уметь.

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

К SVGA видеокарте прилагается SVGA-монитор, поддерживающий такую развёртку.

продавцов обязывали прилагать?
просто сменить сатрую вга-видяху на свга запрещали?
что ты несёшь, ты вообще сидел на элт-мониторах, там обычно писали, какие режимы у них в каких частотах

Тем, что big real mode = real mode с добавленным к нему быстовым прилагательным «big». Это не новый режим, а смысловое (не техническое) уточнение к старому. Unreal же это другое слово, которое к тому же антоним к real.

спасибо, поржал


Инструкция MOV CR0,EAX меняет ТОЛЬКО содержимое регистра CR0.

вероятно, ты изучил микрокод из темы поста, чтобы точно знать, что при этом происходит

Все остальные изменения - те, что применяются в реальном времени в зависимости от этого бита. Не сбрасывается даже декодированная в защищённом режиме очередь инструкций вперёд, из-за чего рекомедуется после переключения режиме делать JMP на следующую инструкцию, NEAR годится.

к чему ты мне всё это рассказываешь?
это никак не связано с тем, что такое поведение было недокументировано и не соответствовало спецификации реального режима
была версия, что инженеры интел знали и, вспоминая 286, просто забили, сэкономив транзисторы

Но в 286 лимитов больше 64к не было, понятное дело, а вот базовый адрес можно ставить за пределами 1МБ, чем и пользовался himem.sys.

нельзя, 286 не мог вернуться в реальный режим

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

ну это, согласись, несколько другое...

также как и недокументированная loadall без перехода в защищённый режим

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

Вопрос в том что хочет фиркакс, я за его мыслью не следил дальше двух сообщений.

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

к чему ты мне всё это рассказываешь?
это никак не связано с тем, что такое поведение было недокументировано

Прочитай наконец мануал к процу и перестань нести чушь. Работа теневых регистров документирована начиная с 286. То что нет каких-то неявных сбросов регистров при неких обстоятельствах - документирования не требует. Документируется то, что делается, а не то, что не делается.

нельзя, 286 не мог вернуться в реальный режим

А это и не надо, теневые регистры можно было записывать из реального, недокументированной командой. Повторю, himem.sys это использовал. Я с этим столкнулся, когда писал виртуалку с 286 процом, по официальной его спецификации, запускал в ней дос 5.0 и на работе himem.sys оно натыкалось на неизвестную инструкцию. В 386 аналогичная тоже есть (хотя нужды в ней уже почти не было), в пентиумах уже убрали.

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

Прочитай наконец мануал к процу и перестань нести чушь.

нет ты

А это и не надо, теневые регистры можно было записывать из реального, недокументированной командой.

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

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

ну ты сам себя-то читаешь?
недокументированной

Ты нить беседы теряешь? Прямая запись в теневые регистры - недокументированная. Но речь была не про неё, а про смену лимита штатным способом и переход назад в реальный режим - это уже документировано (и сами теневые регистры, и смена их лимита при записи селекторов в защищённом режиме, и переход в реальный режим).

а про аналогичную для 386 тогда вообще вроде бы никто не знал, и меняли лимиты через хождение в пм

Кто хотел знал, только нужды в ней уже не было, т.к. через защищённый режим надёжнее - он не пропадёт неожиданно в следующих моделях проца, и оверхеда по сравнению с недокументированной командой если и создаёт то совсем незначительно.

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

Но речь была не про неё, а про смену лимита штатным способом и переход назад в реальный режим - это уже документировано, как и сами теневые регистры.

ты упорно путаешь логику реализации и логику архитектуры х86
с точки зрения последней - такой возврат - дыра в безопасности
и посмотри что происходит с арифметикой указателей при этом

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

вопрос: как могли бы работать те старые ядра, масштабированные на современный кристалл. Там же реально должно получиться несколькотысяч ядер вместо 8

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

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

Жду когда это же сделают с пентиумом.

По мере повышения доступности ИИ для обычных людей - сделают. Восстановление топологии микросхем путем послойного копирования - совсем не новость. Другое дело что в случае процессоров уперлись в чисто человеческие ограничения так как структура очень сложная. Но ИИ и с ней справится. Особенно если заморочиться специальным обучением его под эти задачи. Еще и человеческие ошибки найдет, как вон в этом 386 нашел.

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

Мы в семье недавно обновили треть инструмента, что то быстро сдохло, отработав минимально приличный срок, а вот что то оказалось весьма качественным, похоже прослужит лет 5-10 а то и больше.

А я вот периодически завидую своему соседу - он обзаводится инструментом сейчас, а не как я лет 25-30 назад. И инструмент у него существенно лучше моего. Нередко при этом еще и дешевле! А мне чтобы купить такой же интересный инструмент - пришлось бы сначала найти куда «сплавить» свой, ибо два комплекта инструмента в моей домашней мастерской просто не поместятся физически.

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

Какая ещё дыра в безопасности? Запись в CR0 доступна только для ring0, соответственно этот переход одобрен ядром ОС. Всё что выполняется после перехода (любой код реального режима) имеет ring0 привилегии и официально может делать с процом (и остальной системой) что хочет. Если ты хочешь ограничить права выполняемому коду то для этого есть v86 режим.

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

им не продадут технологии для этого

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

их не пустят к себе на рынок

Их могут не пустить США и Евросоюз. В сумме это 350+450 млн потенциальных покупателей. А у Китая только внутренний рынок это 1400 млн покупателей. Это не считая всех остальных стран, которым всё равно у кого покупать лишь бы цена-качество устраивало.

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

На самом деле всё не так.

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

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

итить
вот ты создал лимит 4Г с базой 0 и загрузил этот селектор в свой fs
вернулся в реальный, не меняешь fs - ну, с натяжкой допустим, что всё ок, логика этого селектора(?!) остаётся нетронутой
но при записи в fs должна происходить запись в теневой регистр, и он обновляется лишь частично: перезаписывается база по правилам реального режима, а лимит и атрибуты не трогаются

ты считаешь, что так и должно быть, а интел - нет
и himem.sys на 386 изначально работал по официальным наставлениям интел, каждый раз прыгая в пм, эксплуатации этой фичи изначально хотели избежать

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

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

ещё наглядный пример - другая страна, далеко не третьего мира и не нищая, с 80-х не может повторить технологии в микроэлектронике

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

тепловые пакеты в киловатт+ это новинка

И какому проценту потенциальных покупателей нужна такая «новинка», и уж те более - дома? Хотя в российском климате можно для отопления использовать, аналогично тому как сейчас продаются «криптокотлы» (майнер-отопитель).

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

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

Но даже недокументированность конкретно этой особенности не делает недокументированным способ в целом, когда селектор после перехода больше не перезаписываем.

А где это написано что «интел так не считает»? Скорее им просто всё равно.

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

Начнём с начала - что вы называете «энергоэффективный процессор»

Энергоэффективность это способность делать работу тратя мало энергии. UVL.

Я с этим определением полностью согласен. Для того, чтобы применять такие термины, как «много», «мало» и сравнивать разные устройства терминами «больше», «меньше», предлагаю ввести метрику. Раз мы говорим про «способность делать работу», примем описание «работы» как выполнение инструкций, тем самым избегая дискуссий по-поводу программ измерения и качества генерации кода. Раз мы говорим про «тратя мало энергии», примем «мощность» как мерило затрат. Тем самым наша метрика - количество выполненных инструкций выполненных на 1 ватт затрат (или по простому инструкций на ватт).

Теперь выберем предмет для сравнения. Как вы сами заметили, термин «Атом» является маркетинговым, под ним кроется что попало. Поэтому нам надо выбрать конкретную микроархитектуру. Я назвал SilverMont, поскольку в прошлом много с ней работал, вы назвали Bonnell и Saltwell по своим соображениям. Выберем один. Предлагайте.

Про всё остальное комментировать пока очень рано. Мы же серьёзно подходим у вопросу, поэтому корпусы, игрушки, лаптопы, и батарейки в одну кучу смешивать не будем. Возможно до них тоже дело дойдёт, но я думаю, что вряд ли. Если мы будем всё делать правильно и шаг за шагом, нам эти вещи просто не понадобятся.

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

«Введение в архитектуру микропроцессора 80386»

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

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

«мы не союзники, мы партнёры».

Это совершенно нормально в межгосударственных отношениях.

Вот как «партнёру» станет не выгодно, посмотрим, что он будет тогда говорить.

Нисколько не спорю что России нужно восстанавливать свою промышленность. Но пока не восстановили - можно и продукцией партнёра попользоваться. Да и вообще - партнёрство всегда выгоднее конфронтации.

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

они обеи нынче документированы
SYSRET - это loadall от 386

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

Поэтому пусть код перекомпилируется прямо во время исполнения в более паралельный? Ведь даже спекуляцию можно развернуть в явном виде!

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

Сплавить известно куда - на авито. У кого мастерская побольше бывает что 2 набора инструмента заменяют 3-ю руку.

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

И какому проценту потенциальных покупателей нужна такая «новинка»

боюсь 80% рынка... Нвидия вообще свернула домашние видеокарты всех назначений в малозначительный побочный бизнес.

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

Выберем один. Предлагайте.

Saltwell. SilverMont насколько я понял был перепроектирован практически полностью, так что «атомом» называется скорее маркетингово. Мои соображения в том, что первые 2 версии породили целых 2 класса устройств, ставших очень популярными в своё время. Плюс оригинальные идеи в основе.

kirill_rrr ★★★★★
()

Выявлено, что в CPU 80386 каждая инструкция полностью исполняется через микрокод

это как? Вот, есть дешифратор, и чо?

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

Вот смотрите что получается. Saltwell - это микроядро 2011 года, 32нм, in-order, dual-issue, 2 threads per core, 1300-1600 MHz. По разным оценкам, производительность на ватт отмечена в пределах 5-6.6 DMIPS per milliwatt.

Его прямой конкурент ARM Cortex-A9, 65-32нм, out-of-order, dual-issue, 1 thread, 800-1500 MHz. Измеряют 10-16 DMIPS per milliwatt.

То есть просто сравнивая цифры, Saltwell хуже лучших образцов на тот период примерно в три раза.

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

А контроллера жесткого диска советская система не сделала. Ни на 10 ни на 20 мегабайт.

А как же Истра-4816?

В зависимости от конфигурации комплектовалась НЖМД MFM от 10 Мб (советский) до 20 Мб (ST-225 фирмы Seagate),

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

без пейсания в порты ты на cga/ega/vga вообще никакой графики не нарисуешь, а какие-то функции рисования биоса были только для галочки

Чёй-та?

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

ок, нарисуй мне что-нибудь в вга-шном 640*480*16 хотя бы на уровне борландовских bgi
ну или не знаю, хоть спрайтик с прозрачным цветом или по маске

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

хуже лучших образцов на тот период примерно в три раза.

Примерно об этом я и говорю. Причём не знаю точных цифр (и просто тупо не найду за приемлимое время), но некоторые статьи утверждают, что uvl-core2 на частотах ниже 1500Мгц тоже серьёзно превосходит Saltwell. Это решение той же фирмы в то же время, причём не заточенное под энергоэффективность.

Нужно обратить внимание: кроме прямого сравнения в цифрах DMIPS per milliwatt есть ещё вопрос потребления в idle. Само по себе ядро Saltwell не так уж и плохо, но оно не включено в SoC и хронически комплектовалось прожорливыми чипсетами, убивающими все преимущества. А вот Cortex-A9 сразу разрабатывались как часть SoC и уже в 2011 году в плане idle-потребления предоставляли куда больше чем самые лучшие х86 когда либо, включая сейчас.

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

Вот только мы с вами по разному говорим. Я вам показал, как надо говорить аргументированно, а не на глазок по каким-то играм и ощущениям.

Idle time вообще вещь мутная и конечно, можно поизучать этот вопрос немножко поглубже. Однако, если мы продолжаем говорить серьёзно, то следующим этапом нужно провести сравнение «инструкций», ведь DMPIS - это величина, которая учитывает просто количество retired инструкций, не вдаваясь в подробности, что же это за инструкции.

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

ведь DMPIS - это величина, которая учитывает просто количество retired инструкций, не вдаваясь в подробности, что же это за инструкции.

Потом мы перейдём к бенчмаркам, потом начнём пересчитывать количество попугаев на ватт, решим что нужно строить графики в зависимости от режимов частоты и числа потоков, а в итоге всё упрётся в то что данные для анализа в открытых источнках отсутствуют и нужно физически брать эти процессоры и тестировать. По итогу получится что некие игры на глаз по ощущениям показывают ту же самую картину что и научная аналитика, только первое доступно а второе нет. Как по мне лучше на глазок и ошибиться +/- 2 раза чем совершенно точно сказать что мы ничего не можем сказать.

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

Мы больше ничего делать не будем. Я вам не нянька. Умеете делать выводы - делайте, не умеете - не делайте. Я свои выводы уже давно сделал, теперь уж вы как-нибудь сами.

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

Контроллеры там скорее всего американские были. Не знаю, машина редкая, мне не известно советских контроллеров жесткого, кроме Поиск—3, он мифический, и скорее всего, не работал.

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

А, вы об этом! Ну, да, без портов можно только в монохроме 640х480 рисовать. Но, 320х200 256 цветов уж точно можно без портов рисовать. А это стандартный режим VGA.

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

Но, 320х200 256 цветов уж точно можно без портов рисовать. А это стандартный режим VGA.

в стандартном(и единственном) ты ограничен только одним видимым экранным буфером, а также лишён аппаратного скроллинга и прочих фишек, что делало его в то время(до pci или vlb) практически бесполезным для полноценной динамической графики
а это единственное, для чего 256-цветный режим был нужен(ну не виндовые же гуи или сапр гонять на таких разрешениях, в самом деле)

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

в стандартном(и единственном) ты ограничен только одним видимым экранным буфером

А что в этом плохого?

а также лишён аппаратного скроллинга и прочих фишек

Если можно полноценно рисовать без этих фишек - на кой они нужны?

Опять же, не забываем режим 640х480 в монохроме. Вспоминаем кучу игр, профессионального софта и винду 3.1, умеющих в монохром

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

А что в этом плохого?

я же написал

Если можно полноценно рисовать без этих фишек - на кой они нужны?

нельзя

Опять же, не забываем режим 640х480 в монохроме.

зачем?

madcore ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.