LINUX.ORG.RU

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

 , , , z386,

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

6

6

Энтузиасты смогли успешно извлечь и дизассемблировать микрокод процессора 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)
Ответ на: комментарий от saufesma

Я давно и успешно пользуюсь самой разной китайской техникой и ею очень доволен. У меня весь мой полностью автономный дом на китайской технике работает, в том числе собственная солнечная электростанция из китайских панелей. Так что я пою о том что лично хорошо знаю.

Более того, во многих «брендовых» изделиях, особенно электронных, от бренда остался только собственно бренд, а вся начинка делается китайцами.

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

Смею напомнить, что торговый оборот США с Китаем немножко триллион. В случае процессоров, особенно процессоров определённой производительности, цена перестаёт быть фактором.

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

Безусловно, есть случаи когда цена несущественна. Вот только таких случаев - мало. Боьшинству пользователей хватает производительности совсем не топовых процессоров. И цена для них важна, иначе покупали бы топовые, просто «чтоб было». И вот если будут доступны дешевые китайские «не топовые» процы то такие пользователи начнут покупать компы с ними. Аналогично тому как стали покупать например скутеры с китайскими моторами вместо расово чистых японских.

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

Вот только таких случаев - мало.

А вот в этом вопросе уже можно начинать дискусcию. Как считать? Что такое «мало»-«много»? Я привёл в пример пять ведущих производителей многоядерных процессоров (традиционных интел и амд умышленно отодвинул) - они вполне конкурируют и за внутренний рынок, покрывающий потребности самих компаний, так и выходят на внешний. Нужно иметь хорошую историю, почему кто-то захочет покупать Huawei или Loongson. При этом я не говорю, что оценка одинакова для США, Германии, России, Индии, Японии, или Китая. Каждая экономика имеет не только желание купить много и дёшево, но ещё имеет и национальные интересы. Кое-где могут не только по шапке дать за неправильный выбор, а и посерьёзней начать разбираться.

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

Мне кажется вы неоправданно много уделяете ширпотребу, так называемому массовому покупателю. Он не играет большой роли в экономике производителей многоядерных процессоров. Вы много знаете друзей/знакомых, которые сейчас использует 160-ядерные армы? 130-160 ядер сейчас уже устаревшие модели, мы ожидаем 250-380 ядер в этом году.

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

вы неоправданно много уделяете ширпотребу, так называемому массовому покупателю.

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

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

Как считать? Что такое «мало»-«много»?

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

При этом я не говорю, что оценка одинакова для США, Германии, России, Индии, Японии, или Китая.

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

watchcat382 ★★
()

С другой стороны, кто нибудь оценивал как на практике могла бы выглядеть 16-ядерная версия i386 на 12нм при частоте 3-4Ггц?

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

То что «расширители ДОСа» там пашут уже нихилый показатель успеха реверс-инжинирга, т.к. всё что перечислено использует недокументированные лайфаки (я про DPMI-расширители, а не игры)

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

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

это всё хорошо работает в теории и твоём хелловорде под дос-екстендером
на практике, в каком-нибудь браузере, может быть сразу миллионы буферов, строк, массивов и прочих котиков
а у x86 аппаратное ограничение на размер таблицы gdt/ldt, 8k, ты физически не выделишь сегмент даже под каждый объект в том же жс, я уж не говорю, какой это был бы адъ, манипулировать всем этим хозяйством
и вся твоя красивая схема никак не масштабируется в реальности

Более того, линкер от gcc сегменты умеет. Просто это не используется в линуксе.

брехня
линкер гцц умеет работать с секциями (.text, .data), которые в объектных файлах elf тоже называются «сегментами», но это чисто программное разделение для сборщика.
в дос-ексендере можно было, да
получаешь раздутые указатели, при каждом опбращении к памяти или переходе получаещь перезагрузку селектора, что само по себе уже тормозно, плюс сломанный конвейер предсказаний


В пределах сегмента она вполне работает. А за пределы сегмента и не должна. Попытка прибавить к указателю столько, что он вылезет за границу сегмента - должна вызывать ошибку.

это ты замахнулся на ломание стандарта iso c

Как я уже сказал - есть много применений, где надежность кода важнее скорости вычислений.

да, поэтому все пошли другим путём и отказались от сегментной модели
вместо этого заодно добавили всякие lam / mte

А миф о медленности сегментного механизма пошел вот как раз от первых 386 - потому что у них не было эффективного кэширования и за каждым обращением в таблицы они лазали в RAM.

а ты глянь на картинку в посте, видишь там segment desctriptor cache и page cache?
оно медленное по другим причинам
для страничной защиты используется быстрый кэш tlb, реализуемый на уровне битовых масок и прямых проводов, без лишних транзисторов
для сегментов произвольного размера надо сделать сразу несколько операций, проверить корректность селектора, взять из таблицы, посчитать база+смещение, сравнить с лимитом и хз чё там ещё

Даже уже у последних 386(и всех последующих) обращения к таблицам кэшировались.

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

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

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

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

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

что в 386 был vliw, если я верно понял, а потом они перешли на risc

А можно поподробнее, ссылку к-нить скинуть. Я только из ентой новости и узнал, что 3ка так же использовала к-то микрокод со своим ядром. Ранее думал, что у интела вся бодяга с микрокодом началась с пентюхов...

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

По проданным штукам и вырученным деньгам. И тут окажется что продавать очень много дешевых товаров среднего уровня выгоднее чем продавать мало очень дорогих, пусть и более высокого уровня.

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

Я сейчас пишу с i7-8700, но мой прежний i7-3400 был ничуть не хуже и смена не связана с производительностью. Уверен, вы тоже сейчас не на Xeon Platinum с 56 ядрами. Какие с нас с вами можно получить деньги кроме анализов? Причём с вас даже анализы можно получить только с помощью заинтересованной врачихи-казачка, иначе ни в какую. На нас расчитывать - давно банкротом будешь, что собственно IBM и Red Hat в своё время и просекли.

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

С другой стороны, кто нибудь оценивал как на практике могла бы выглядеть 16-ядерная версия i386 на 12нм при частоте 3-4Ггц?

а есть под рукой шина 3-4ГГц?
в противном случае к нему придётся приделать кэш и множитель, и получится 486

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

Это утверждение обосновывается вытеснением дорогих брендовых товаров из магазинов и заменой их на китайские.

Это происходит по сами знаете каким причинам.

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

Минский интеграл выпускал линейку от 286го до 486го проца. Причём компы на ентих процах серии ЕС спокойно продавались в магазах РБ, ну как спокойно - «квартиру продай и покупай»...

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

да я сам только сегодня узнал
пока понятно только, что его называют vliw-подобным, но в общепринятом понимании наверное не совсем

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

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

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

в каком-нибудь браузере, может быть сразу миллионы буферов, строк, массивов и прочих котиков а у x86 аппаратное ограничение на размер таблицы gdt/ldt,

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

линкер гцц умеет работать с секциями (.text, .data), которые в объектных файлах elf тоже называются «сегментами», но это чисто программное разделение для сборщика.

Если посмотрите на вариации gcc-шного линкера под микроконтроллеры то увидите что в нем есть всё чтобы работать с сегментированной памятью. Как кстати и в формате elf-файлов. И в микроконтроллерах нередко память не непрерывная как на десктопе, поэтому линкеру пишется файлик с указанием какие секции где размещать.

поэтому все пошли другим путём и отказались от сегментной модели

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

а ты глянь на картинку в посте

Мы не знаем с какого именно проца эта картинка. 386 было много и существенно разных. И первые от последних существенно отличались. Не говоря о том, что нынешние процы вообще сильно отличаются от 386. При этом сегментный механизм в них есть и работает. И насколько я слышал - используется во всяких спецприменениях где важна надежность вычислений. Понятно что эти применения далеки от бытового десктопа. Кстати, несколько лет назад Интел хотел выпустить упрощенный x86 без якобы «ненужного» сегментного механизма. Уже через пол-года от этой идеи отказались потому что всякие серьезные (и денежные) заказчики объяснили Интелу что он не прав.

для сегментов произвольного размера надо сделать сразу несколько операций, проверить корректность селектора, взять из таблицы, посчитать база+смещение, сравнить с лимитом и хз чё там ещё

Да, нужно. И это обеспечивает то, чего критически не хватает - надежность вычислений. А там где на надежность пофиг (просмотр котиков) - конечно можно по-прежнему всё пихать в один кусок адресного пространства.

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

Этот z386 не в кремнии же прогоняли на работу с думом. Вероятно в том же эмуляторе можно и шину нарисовать на современном техпроцессе а потом назначить ей нужную частоту. ДДР8 вон уже до 8 Ггц разгоняется и там реально примерно столько передач данных в секунду, хоть и жуткими лагами на кеширование.

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

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

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

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

В бытовом сегменте сейчас наиболее распространены ноутбуки из-за малогабаритности квартир в которых живут юзеры. А ноуты разбивают, заливают кофием, забывают в транспорте, они дохнут от забития пылью и перегрева, и так далее. Соответственно - люди покупают новые. И таких покупателей явно намного больше чем покупателей Xeon Platinum.

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

Это происходит во всем мире. Выше уже упоминали что только в США китайцы продают своих товаров на триллион долларов в год. Также напомню предвыборные выступления Трампа, который говорил о возрождении промышленности США (но не очень-то у него получается). А китайцы не говорят - они делают и продают.

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

Зато как раз в этой нише всё решала цена а не какие то там неудобства. Пока эти 160-ядерные армы за строе большую цену едва дотягивались до зиона - все покупали зионы. Сейчас новые арм-ядра стали пожирнее, число ядер нарастили, а цену удалось снизить. Короче итоговый сервер на ХХХ попугаев на арм стал дешевле и опа, большинство новых облаков и хостингов на них!

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

А я про товары на полках. Хорошая болгарка стоит условные 5000р. Так поему же китайская болгарка за 2800р, вторая снзу по цене, такая же качественная как и за 5000 или даже 7000? Не каждая, как повезёт. Но если повезёт - бери сразу 2-3 штуки, потом будешь пользоваться и радоваться.

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

не совсем понимаю сути вопроса
проц же не суперскалярный, не с кешами, блоками предсказаний итп
если растактовка и отличается где-то от оригинала, то производительность всё равно легко и однозначно предсказуема - частота/(тактов на инструкцию)

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

шикарное бошевское качество от какого нибудь ноунейма.

Более того, сейчас всё чаще можно получить надпись Бош, а качество - обычное среднекитайское. Потому что именно там этот Бош и делается. У меня вон электропила, правда не Бош, а Макита, но тоже ведь «солидный бренд». И мелко-мелко made in China. Как ни странно - пилит. Только натяжитель цепи пришлось переделать с развалившегося инновационного «бесключевого» на самый обычный,с винтиком под отвертку (от бензопилы купил и поставил). Пила кстати согласно русской инструкции «не предназначена для заготовки дров», а я уж который год тонны по три ею заготавливаю - ибо иначе для чего еще нужна цепная пила?

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

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

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

Я про количество не спорю. Я про бизнес.

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

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

Соответствено вопрос: как могли бы работать те старые ядра, масштабированные на современный кристалл. Там же реально должно получиться несколькотысяч ядер вместо 8. Даже если это будет 1000 ядер с производительностью атома (который уступал Р3 и иногда Р2) - кажется это должно нагнуть i9, а то и Зиона.

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

Xeon уже давно не является конкурентом Arm. Многядерный Arm сейчас конкурирует между собой, и ещё где-то на горизонте маячит тень Power.

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

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

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

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

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

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

и ещё более сложные кодомясорубки,

И ещё более упрощённые по-минимуму кодомясорубки. Длину конвейера уменьшают, плавзапятую уменьшают, векторизацию упрощают, вводят всякую чушь - типа fp16 vnn только для инференс, короче бардак! Всё только чтобы впендюрить как можно больше как можно более простых ядер лишь бы только влезть в ограничения по площади (до 800 квадратов) и мощности (до киловатта). И тут Интел опять показала себя с лучшей своей стороны, выпустив 64-ядерный KNL не ко времени и не к месту, снять с производства, чтобы потом опять догонять с какими-то E-ядрами.

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

Первый звонок был когда Гири перешёл из Марвел в Нвидиа и начал работать (точнее переделывать) над Grace из частей Вулкана. А было это на минуточку 2018.

VIT ★★
()

Это конечно, хорошо, но лучше бы Альфу попробовали воссоздать. Или Вакс, что тоже интересно.

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

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

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

Там же реально должно получиться несколькотысяч ядер вместо 8.

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

с производительностью атома

нет, атом быстрее где-то в десяток раз на той же частоте
это ещё не касаясь того, что в нём даже fpu нет

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

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

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

Разве? В х86 ядра только жирнеют. Да и тепловые пакеты в киловатт+ это новинка а не то от чего хотят отказаться. Как и чиплы размером с 2 ладони и больше.

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

Не говоря о том, что нынешние процы вообще сильно отличаются от 386.

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

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

в них сегментную модель упразднили

Нет, в интеловских процах по сей день сегментная модель есть и работает. Это общеупотребительные ОС ее толком не умеют использовать.

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

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

Казалось бы, ещё в 2005-08 стало понятно что нужно распаралеливать вычисления и наращивать каналы памяти. Лет 10-15 назад придумали микросервисы. Мне казалось в IT-бзнесе уже не осталось задач которые нельзя распределить по бесконечному числу 4-8 ядерных узлов. Потом LLM подъхали, но кажется задача запуска большой модели на куче узлов в процессе.

столкнёшься с теми же проблемами, что и современные процы

Задача то решена. Меш-сеть из небольших кластеров 4-8 ядер с общим кешем и модулем соединений. Масштабируй сколько на кристалл влезет, только точки входов каналов памяти грамотно распредели.

атом быстрее где-то в десяток раз на той же частоте

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

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