Member
Статус: Не в сети Регистрация: 05.12.2006 Откуда: Из-за компутера
maco прошу прощения, если пропустил, но что вы подразумеваете тогда под микрокодом /firmware для других устройств/, если это ни исполняемый так или иначе код, ни данные, то что же это? firmware ODD - скоростные хар-ки болванок разных фирм производителей, HDD - алгоритмы и способы обработки секторов, напр. NCQ - как коромысло ездить будет по оптим.траектории, BIOS'ы железок - код реального режима для инициализации оборудования, SPD - тайминги во флеш-памяти для разных режимов работы + EPP всякие там И вопрос - каким образом обновлением микрокода C2D подправили проблемы с TLB и возможностю его эксплуатации чужеродным кодом?
Advanced member
Статус: Не в сети Регистрация: 27.02.2007 Откуда: Москва Фото: 89
Russian писал(а):
HertZ вопрос при комилировании ядра линукса 2.6 там пунтик есть
Цитата:
/dev/cpu/microcode - Intel IA32 CPU microcode support - НЕТ (можно и ДА) поддержка доступа к микрокоду процессора
это что такое?
Если этот пунктик не отключать, то в системе будет присутствовать устройство /dev/cpu/microcode, через которое можно будет загружать в процессор новый микрокод налету (во время загрузки системы, например). Перезагрузки при этом не требуется, удобно для серверов с большим аптаймом, которые перезагружать чревато..
З.Ы. после аппаратного сброса микрокод придется обновлять заново.
asmfan Микрокод CPU и прошивки всякой периферии-это далеко не одно и то же, не занимайтесь сравниванием несравнимого.
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
maco, как тебе эта каша?
Как правило, любое устройство имеет ASIC или процессор в том или ином виде. При включении устройства запускается ASIC и настраивает устройство. Очень часто программа для него записана в нем (в ROM), причем сделано маской - т.е. сразу при изготовлении чипа. Естественно, ее изменить невозможно. Типичный пример - DSP. В этом ROM хранится или вся программа или только загрузчик, который должен откуда-то взять саму программу. Загрузчик должен выполнить первичную инициализацию ASIC и канала ввода-вывода до устройства хранения программы (до внешней памяти). После этого ASIC переходит в режим загрузки внешней программы. Если вся программа прописана в ROM, то для работы устройства может потребоваться дополнительная и настраиваемая информация. При этом внешняя память используется для хранения этой настраиваемой информации. Классический вариант - EEPROM на сетевых картах, там лежит режим устройства и MAC адрес. Если устройство достаточно продвинутое, то EEPROM встраивают в сам chip. Например, процессоры старше Pentium - значительная часть характеристик может меняться по желанию фирмы-изготовителя (например, тот-же множитель). Микрокод несколько другое, это ни программа и не данные. Я затрудняюсь точно классифицировать, скорее это смесь исполняемых макроинструкций и настроек регистров для ASIC внутри процессора.
Кстати, функция обновления микрокода есть и на AMD. Добавлено спустя 3 минуты, 53 секунды Кстати, сам микрокод во-первых, написан на странном языке, кажется с разрядностью не кратным 8 бит, во-вторых - зашифрован. Изменить его нельзя, Intel специально этим озаботилась. Сама загрузка осуществляется запихиванием данных через пару MSR и в случае заталкивания неверной информации можно повредить встроенные настройки процессора (необратимо). Я это не делал и вам не советую.
Member
Статус: Не в сети Регистрация: 22.05.2006 Откуда: Мариуполь, Ua
serj писал(а):
Кстати, сам микрокод во-первых, написан на странном языке, кажется с разрядностью не кратным 8 бит, во-вторых - зашифрован. Изменить его нельзя, Intel специально этим озаботилась. Сама загрузка осуществляется запихиванием данных через пару MSR и в случае заталкивания неверной информации можно повредить встроенные настройки процессора (необратимо). Я это не делал и вам не советую.
Хех. То есть, это все-таки возможно? Мнения разделились.
Поймите, никакой энергозависимой/энергонезависимой памяти в процах нет. Иначе давно бы уже появились Black Edition из обычных атлонов/феномов и Extreem из корок. Вся инфа о множителе/частоте/напряжении зашивается в проц железно (в буквальном смысле). И подвержена модификациям эта информация также только железным способом.
А насчет микрокода - вообще бредни.... Зачем внутри процессора создавать еще один процессор? Похоже на "сидит жучек, на нем значок, а на значке - жучек, а на груди еще значок..." Все команды в процессоре исполняются отнюдь не программно. Вся исполнительная часть постоена на транзистор-транзисторной логике, и больше ни на чем. Внутри проца - только транзюки, и никакого кода. Так понятней?
Member
Статус: Не в сети Регистрация: 25.02.2008 Откуда: Москва
да, serj правильно охарактеризовал микрокод процессора.
Имхо этот микрокод по своей сути ближе к аналогичному микрокоду от ПЛИС, которым задаётся его структура, + макроинструкции и прочая информация для инициализации компонентов cpu.
В самом процессоре (современном) записан только загрузчик, а сам микрокод загружает биос. От сюда получается некоторая гибкость архитектуры и возможность "программно" исправить ошибки допущенные при проектировании проца.
Думаю можно, взяв соответствующую утилиту для ковыряния биосов, вытащить бинарный код, загружаемый в процессор, но вот что потом с ним делать - ХЗ. Ибо документов по его структуре найти сложно, да и действительно возможно что он зашифрован и подписан ЭЦП.
_________________ ...Нас добьёт конкретный сильный дождь...
PS. Прошиваю биосы матерей, 200р - без пайки, 400р - с пайкой.
Что именно подразумевается под словом "это" ? Я, кстати, четко определил место действия - IBM PC совместимые компы, т.е. как раз от model 5150 и более поздние (иначе говоря, получившие широкое распространение).
asmfan Микрокод - это набор микроинструкций, которые могут изменять микроархитектуру процессора/контроллера. Т.е. можно (при закладке таких возможностей на уровне разработки) изменять принцип выполнения существующих инструкций и формировать новые. Такая модель позволяет исправлять найденные ошибки и легче формировать новые инструкции при проектировании очередной серии процессоров/контроллеров. Исполняемый код - это набор инструкций (с операндами), которые может выполнить процессор/контроллер. Данные - это то, над чем выполняются действия.
asmfan писал(а):
BIOS'ы железок - код реального режима для инициализации оборудования
Уже не только реального режима .
serj Насчет загрузчика как отдельного программного/микропрограммного модуля - это IMHO сильно зависит от архитектуры конкретного процессора/контроллера.
Murlika Вытаскивать необязательно, можно просто скачать отдельным файлом набор микрокодов для некоторого количества процессоров. О загрузчике в современных x86-совместимых процессорах IMHO говорить как-то странновато - имеется определенное состояние, в которое переходит процессор после reset'а. Это состояние позволяет строить дальнейшую модель запуска системы без участия "загрузчика в процессоре".
Some hardware vendors, especially IBM, also use the term microcode as a synonym for firmware, whether or not it actually implements the microprogramming of a processor.[1] Even simple firmware, such as the one used in a hard drive, is sometimes described as microcode.[2]
firmware is a computer program that is embedded in a hardware device, for example a microcontroller. It can also be provided on flash memory or as a binary image file that can be uploaded onto existing hardware by a user.
Добавлено спустя 5 минут, 20 секунд Там же про интелы
Цитата:
Several Intel CPUs in the IA32 architecture family have writable microcode[5]. This has allowed bugs in the Intel Core 2 microcode and Intel Xeon microcode to be fixed in software, rather than requiring the entire chip to be replaced. Such fixes can be installed by Linux[6], Microsoft Windows[7], or the motherboard BIOS[8].
asmfan В данной теме под микрокодом подразумевается термин, отличающийся от исполняемого кода и данных.
А вот трактовка слова "микрокод" разными источниками в контексте собственных высказываний - это уже вопрос терминологии.
Кстати, эта статья в Wikipedia как раз говорит о том, что термин "микрокод" в общем случае понимается именно в виде
Wikipedia писал(а):
Microprogramming (i.e. writing microcode) is a method that can be employed to implement machine instructions in a CPU relatively easily, often using less hardware than with other methods. It is a set of very detailed and rudimentary lowest-level routines which controls and sequences the actions needed to execute (perform) particular instructions, sometimes also to decode (interpret) them. A machine instruction implemented by a series of microinstructions is thus loosely comparable to how an interpreter implements a high-level language statement using a series of machine instructions.
The microcode is normally written by the CPU engineer during the design phase. It is generally not meant to be visible or changeable by a normal programmer, not even an assembly programmer, one of the reasons being that microcode (by design) can be dramatically changed with a new microarchitecture generation. Machine code often retains backwards compatibility. Microcode has often been used to let one microarchitecture emulate another, usually more powerful, architecture.
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
asmfan, запомните - BIOS, в том числе, переводит процессор в защищенный режим. Это нужно для настройки дескрипторов. Если этого не сделать, то банально не будут работать E** регистры.
Member
Статус: Не в сети Регистрация: 05.12.2006 Откуда: Из-за компутера
serj я в ступоре от таких сведений. Т.е. после POST мы в защитном режиме или BIOS обратно его сбрасывает в real? В ДОС мы пользуемся сервисами bios, которые используют e* регистры? при условии, что дос 16разрядная ОС.
serj поясните сказанное вами. Добавлено спустя 1 минуту, 5 секунд maco это было *к сведению
Member
Статус: Не в сети Регистрация: 05.12.2006 Откуда: Из-за компутера
serj писал(а):
E-регистры использует сам BIOS и постоянно.
отуда информация? анализировали дамп биоса? тогда какой именно код там 32битный, если все сервисы 16 битн.? И "постоянно" это когда, если биос по большому счёту только для запуска загрузчика нужен.
Member
Статус: Не в сети Регистрация: 30.07.2006 Откуда: Москва-Ярик
Припоминаю, что команды в микрокоде в основном записаны "тяжелые" - более чем из n-мопов (к оным относятся вроде-бы все SIMD/float инструкции), их фактически процессор извлекает оттуда в реальном времени, на этапе декодирования команд. Мопы потом распределяются по исполнительным устройствам. Во всяком случае так было во времена PIII, когда я с ассемблером занимался.
_________________ Плавайте поездами Аэрофлота! И синий BSOD нам заменяет небосвод...
Сейчас этот форум просматривают: Google [Bot] и гости: 22
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения