Актуализация на микрокод на процесор Intel. Напълно алтернативен начин за актуализиране на микрокодове

💖 Харесва ли ви?Споделете връзката с приятелите си

Всъщност оригиналният метод, оборудване и микрокодове могат да бъдат намерени (директно инструкциите на AMI) и в повечето случаи използването на този метод не създава никакви проблеми и няма клопки, но в моята практика редовно се сблъсквах със следния проблем:

Тези. имаше банална липса на свободно пространство в изображението. Когато модифицирате BIOS за себе си за конкретен процесор, можете да игнорирате това, защото Винаги можете да заредите само един микрокод специално за вашия процесор или да изтриете някой стар микрокод, за да освободите място, но когато модифицирате с поток, трябва да потърсите друго решение, компромис.

Като компромис избрах следното решение - вземи най-новите версиимикрокодове за всички процесори от поколението CORE във всички дизайни (Celeron E, Pentium E, Core 2 Duo, Core 2 Quad, Xeon *3xxx/*5xxx) и заменете всичко, което е идвало преди с тях. Наборът от микрокодове се оказа следният:

Обемът на този комплект е само 76 килобайта. Този файлполучен чрез комбиниране на тези файлове:

cpu00010676_plat00000001_ver0000060f_date20100929.bin
cpu00010676_plat00000004_ver0000060f_date20100929.bin
cpu00010676_plat00000010_ver0000060f_date20100929.bin
cpu00010676_plat00000040_ver0000060f_date20100929.bin
cpu00010677_plat00000010_ver0000070a_date20100929.bin
cpu0001067a_plat00000011_ver00000a0b_date20100928.bin
cpu0001067a_plat00000044_ver00000a0b_date20100928.bin
cpu000006f2_plat00000001_ver0000005d_date20101002.bin
cpu000006f6_plat00000001_ver000000d0_date20100930.bin
cpu000006f6_plat00000004_ver000000d2_date20101001.bin
cpu000006f7_plat00000010_ver0000006a_date20101002.bin
cpu000006f7_plat00000040_ver0000006b_date20101002.bin
cpu000006fb_plat00000001_ver000000ba_date20101003.bin
cpu000006fb_plat00000004_ver000000bc_date20101003.bin
cpu000006fb_plat00000010_ver000000ba_date20101003.bin
cpu000006fb_plat00000040_ver000000bc_date20101003.bin
cpu000006fd_plat00000001_ver000000a4_date20101002.bin

Самата процедура за модификация също се промени малко и стана, ако не по-лесна, то по-бърза:

Стъпка 1— отворете изображението на BIOS в програмата MMTool:



Стъпка 2— за да проверите, отидете на последния раздел (CPU PATCH) и вижте броя на микрокодовете. Ето, например, има 31 от тях:

Стъпка 3— отидете в раздела Замяна и потърсете елемента „P6 Micro Code“ в него:

Стъпка 4— след като изберете елемента „P6 Micro Code“, натиснете бутона Ikshtsyu, изберете файла ncpucode.bin, описан по-горе, и го заменете с бутона Replace:





Стъпка 5— за да проверите, отидете на последния раздел (CPU PATCH) и вижте броя на микрокодовете. След смяната на микрокодовете останаха 17, последната версия:

Няма фундаментална разлика с процедурата за модификация, описана на delidded.com. В повечето случаи изходът със сигурност не е същият, но процесорът получава необходимия микрокод. От субективните положителни аспекти бих искал само да обърна внимание на факта, че микрокодовете за всички текущи процесори са гарантирано актуализирани, независимо дали са „цивилни“ или „сървърни“, и практически няма риск от получаване на съобщение за липса на място. Въпреки че в моята практика дори за такъв набор от микрокодове нямаше достатъчно място няколко пъти, това беше с BIOS за платките ECS P4M900T-M и ECS P4M900T-M2, които като цяло са съвместими с Xeon E5450.

По традиция публикувам линк към архива с инструменти - (zip, 234KB). Архивът съдържа изпълним файл MMTOL.exe(версия 3.22 BKMOD), файл с микрокодове за всички 45/65nm процесори от поколението core/xeon ncpucode.bin, както и два файла 45nm.binи 65nm.binс микрокодове само за 45nm процесори и само за 65nm. Използването на тези файлове може да бъде полезно в случаите, когато е необходимо да се освободи допълнително място в BIOS, например за нов фърмуер на някакъв контролер, мрежа, диск и др.

!NB: Нито файлът ncpucode.bin, нито файловете 45nm.bin/65nm.bin поддържат процесори Pentium 4, Celeron (без суфикси на букви), Pentium D, Celeron D и Xeon W (Xeon 5080 например). Това са процесори от поколение NetBrust.

Представям донора BioStar A740G M2L+ (AMD 740G / SB710) и реципиента BioStar A740G M2+ (AMD 740G / SB700). Дънната платка с буквата “L” е по-нова и официално поддържа AM3 процесори, за разлика от другата, която е ограничена до поддръжка само на AM2+ процесори. Техните BIOS изискват сравнителен анализ.
От офиса ние само зареждаме сайта последна актуализация BIOS фърмуер за всяка от тези дънни платки:
- за A740G M2+ най-новата бета версия A74GM916.BSSза септември 2009г
- за A740G M2L+ - файл 74GCU511.BSS- за месец май 2010г

След това се въоръжете с помощната програма MMTOOL (Използвах версии 3.22, 3.23 и 3.26 - не намерих разлики в работата). За да работи с MMTOOL, файловите разширения на фърмуера на BIOS трябва да бъдат преименувани на *.rom.

Сега стартираме два MMTOOL и зареждаме файловете на фърмуера от две подложки в тях. плат. Обръщаме внимание на различните размери в колоната „Размер на източника“ (и в „Размер в Rom“ също, разбира се) на модул 11 „P6 Micro Code“ във всеки от фърмуерите.

Нека отидем в раздела CPU PATCH за подробно сравнение:

Донорският файл 74GCU511.rom - cpu_list съдържа 14 реда с поддръжка на CPURev.ID + 1 празен (фиг. 1).

Бета версията на получателя A74GM916.rom - cpu_list съдържа 13 реда с поддръжка на CPURev.ID + 1 празен (фиг. 2).

След анализ на списъците на тези два BIOS-а става очевидно, че за по-новата дънна платка разработчиците са използвали по-нови корекции за AMD процесори, където микрокодът на два реда с CPURev.ID 1043 и 1062 (от 2009/07/31) е коригиран и е добавен един ред с CPURev.ID 10A0 (от 2010/02/17).

Метод No1 - модификация на отличителни линии.
Тези три отличителни реда са извлечени от донора 74GCU511.rom - действията „Извличане на данни за корекция“ + „Прилагане“ + 1 последен празен ред и записани в отделни файлове.

Първо, в раздела CPU PATCH на файла получател A74GM916.rom се изтриват два реда с CPURev.ID номера 1043 и 1062 (чийто микрокод е по-стар от този, който ще вмъкнем по-нататък) и последният празен ред - действията „Изтриване на корекция Данни” + “Приложи” ( Фиг.3).

След това един по един се вмъкват по-новият микрокод от четирите предварително получени пач файла за CPURev.ID 1043, 1062, 10A0 и празен ред (фиг. 4).

Моля, обърнете внимание на размерите („Размер на източника“ и „Размер в Rom“) на модул 11 „P6 Micro Code“ преди и след прилагане на тези промени към файла получател.
След прилагане тези размери за реципиента (фиг. 6) ще станат идентични с размерите на същия модул в донорския файл 74GCU511.rom (фиг. 5).
Струва си да се отбележи, че не е трудно да се разбере как се формира размерът на модула (всеки ред в раздела CPU PATCH отнема 2048 байта).

По-добре е да запазите промените под ново име на файл.
След това този файл се проверява, така че MMTOOL да се отваря отново без грешки.

Метод No2 - модификация чрез подмяна на целия модул.
Всъщност точно това е описано в интернет (например частично).

В MMTOOL зареждаме донорския файл 74GCU511.rom, отиваме в раздела „Извличане“ и търсим реда „P6 Micro Code“. След това го изберете, в полето „module file“ му дайте името ncpucode.bin и изпълнете Extract module „in uncompressed form“.

Сега заредете файла получател A74GM916.rom в MMTOOL, отидете на раздела „Замяна“ и отново потърсете реда „P6 Micro Code“. Изберете го, изчакайте Преглед и изберете нашия донорен модул ncpucode.bin. Щракнете върху Замяна и след това се съгласете да замените този модул.

Отново обърнете внимание на размерите („Размер на източника“ и „Размер в Rom“) на модул 11 „P6 Micro Code“ преди и след замяната на този модул във файла на получателя.
След прилагане тези размери за реципиента (фиг. 7) ще станат идентични с размерите на същия модул в донорския файл 74GCU511.rom (фиг. 5).

Ако сравним резултатите от двата метода (фиг. 6 и фиг. 7), тогава има забележима разлика от 10 байта в RomLoc адреса на модула „Defined или Reserved“ до актуализирания „P6 Micro Code“ модул - може би това са характеристики на работата на MMTOOL...

Заключение и послеслов.
По този начин, от различни фърмуери на BIOS, различен мат. платки на сокет AM2+ (и дори AM3 за сравнение), можете да намерите най-новите микрокодове за всеки тип CPURev.ID, както в Award, така и в AMI bios, след което да ги комбинирате в един ncpucode.bin.
Впоследствие се оказа, че е с размер 32768 байта от 16 реда (микрокодове) с най-новите дати от броя на изследваните фърмуери на различни BIOS: с 15 различни видоверевизии на процесора за сокет AM2+ (040A, 0413, 0414, 041B, 0433, 0680, 0C1B, 1000, 1020, 1022, 1040, 1041, 1043, 1062, 10A0) и 16-ти ред за RevID 0000 (очевидно някакъв универсален микрокод за ревизии на процесори, които не са описани в други редове - IMHO, например бъдещи).

Комбинирайки свой собствен ncpucode.bin чрез импортиране на необходимите пачове (микрокодове) за всяка необходима ревизия на процесора, можете да използвате абсолютно всеки фърмуер на AMI BIOS с модула “P6 Micro Code” като лабораторен.

При запазването на файла на фърмуера обаче беше забелязана неприятна характеристика на MMTOOL - по някаква причина помощната програма добави 8 нулеви байта към края на модула „P6 Micro Code“ - оказа се, че е с размер 32776 байта. При извличане на файла ncpucode.bin от лабораторния фърмуер, използвайки същия MMTOOL, изходният файл също стана с размер 32776 байта.
Можете да редактирате това с прости редактори, достъпни за всеки. Но аз също (случайно) открих алтернативен начин: когато универсалната помощна програма BIOS_EXT.EXE извлече всички модули от лабораторния фърмуер, файлът ncpucode.bin вече беше с правилния размер от 32768 байта - самата помощна програма BIOS_EXT.EXE идентифицира правилно края на модула „P6 Micro Code“ при запис го във файл.

Можете да оптимизирате производителността на процесора Intel или AMD, инсталиран във вашия компютър, като инсталирате най-новата версия на неговия микрокод. Оптимизацията се постига основно чрез коригиране на грешки в стандартния микрокод, получен от фърмуера на дънната платка.

Актуализациите на фърмуера на BIOS/UEFI за вашата дънна платка обикновено съдържат нови версии на фърмуера за поддържани дънна платкацентрални процесори. Поради тази причина първо трябва да се уверите, че използвате най-новата версия на BIOS/UEFI.

Това ръководство ви позволява да оптимизирате производителността само на онези централни процесори, които са разработени от Intel и AMD.

Бележки:

  • Инсталиране на пакета софтуерс микрокодове може да доведе до нестабилна работа на компютъра. Поради тази причина трябва да инсталирате този пакет само когато имате проблеми с функционирането на централния процесор на вашия компютър!
  • Не инсталирайте софтуерен пакет с микрокодове за централни процесори, ако е издаден по-рано от BIOS/UEFI фърмуера на дънната платка на вашия компютър!

1. Централни процесори, произведени от Intel

Ако използвате процесор Intel, можете да продължите по следния начин.

Забележка:имате ли нужда от софтуерен пакет с микрокодове за централни процесори, произведени от Intel, който е по-нов от това, което е в официалното хранилище за разпространение? В този случай можете да изтеглите файла на софтуерния пакет с разширение .debот

Мениджър на пакети Synaptic Софтуер

Мениджър на пакети Synaptic„Търсене във вашия компютър“), въведете вашата заявка "Синаптик" "Мениджър на пакети Synaptic" Мениджър на пакети Synaptic "търсене" "микрокод"и натиснете бутона "търсене"до него.

3.201501106.1 (в този случай версия 3 на пакета е създадена на 6 ноември 2015 г.).

« intel-микрокод"и натиснете бутона "Приложи"

dmesg | grep микрокод

Въведете

2. Централни процесори, произведени от AMD

Ако използвате процесори, произведени от AMD, това ръководство ще бъде от значение само за тези, които са пуснати след 2006 г. (AMD K10 и по-нови). Ако вашият компютър има един от тези процесори, можете да продължите по следния начин.

Забележка:Имате ли нужда от софтуерен пакет с микрокодове за AMD CPU, който е по-нов от това, което е в официалното хранилище за разпространение? В този случай можете да изтеглите файла на софтуерния пакет с разширение .debот хранилището за разпространение на Debian, в което са поставени пакетите най-новите версии. След като изтеглите пакетния файл, трябва да го намерите с помощта на файловия мениджър и да щракнете двукратно, за да инсталирате микрокодовете в системата. След като инсталацията приключи, трябва да рестартирате компютъра си.

A. Ако използвате дистрибуция на Ubuntu, ще трябва да инсталирате Мениджър на пакети Synaptic(това може да стане с помощта на приложението Софтуер). IN Linux MintТози мениджър на пакети присъства веднага след инсталирането.

Б. Първото нещо, което трябва да направите, е да бягате Мениджър на пакети Synaptic. В Ubuntu можете да направите това, като щракнете върху бялото лого на Ubuntu в горната част на страничната лента ( „Търсене във вашия компютър“), въведете вашата заявка "Синаптик"и изберете първата от предложените опции за приложение "Мениджър на пакети Synaptic". Няма нужда да използвате полето за бързо търсене на софтуерни пакети в главния прозорец Мениджър на пакети Synaptic, тъй като съответният механизъм е ненадежден; вместо това трябва да натиснете бутона "търсене"в лентата с инструменти въведете заявка в полето за търсене на диалоговия прозорец, който се отваря "amd64-микрокод"и натиснете бутона "търсене"до него.

C. Сега трябва да проверите датата на създаване на софтуерния пакет с микрокодовете на централните процесори: този пакет трябва да бъде създаден по-късно от фърмуера на BIOS / UEFI на дънната платка на вашия компютър! Датата на създаване на въпросния пакет е отразена например в номера на версията му 2.20160316.1 (в този случай версия 2 на пакета е създадена на 2 март 2016 г.).

D. Време е да поставите отметка в квадратчето до името на софтуерния пакет "amd64-микрокод"и натиснете бутона "Приложи"в лентата с инструменти на приложението.

Д. След като инсталацията на софтуерния пакет приключи, трябва да рестартирате компютъра си.

Е. След рестартиране си струва да проверите дали един от инсталираните микрокодове се е заредил правилно, като въведете следната команда в терминален прозорец (използвайте функциите за копиране/поставяне, за да избегнете грешки):

dmesg | grep микрокод

След като приключите с въвеждането на командата, натиснете клавиша Въведетеза нейното изпълнение. Ако микрокодът е изтеглен успешно, ще видите няколко съобщения, показващи това.

Искате ли да научите за други настройки и техники за работа с Linux системи? Този уебсайт съдържа голямо количество подобни материали.

От началото на януари беше трудно да пропуснете новините относно хардуерните уязвимости на Spectre и Meltdown - толкова сериозна и всеобхватна се оказа темата. Въпреки че производителите са наясно с тези проблеми от миналото лято, повечето изглежда са започнали да реагират едва след като подробностите бяха оповестени публично от екипа на Project Zero на Google.

Например през януари, наред с други корекции, Intel пусна актуализации на микрокод срещу Spectre за своите процесори Broadwell, Haswell, Skylake, Kaby Lake и Coffee Lake. Но почти веднага стана ясно, че те водят до провали и. Първоначално Intel каза, че проблемът засяга само чипове Broadwell и Haswell, но по-късно призна наличието на проблеми на компютри с процесори Skylake, Kaby Lake и Coffee Lake и че партньорите и потребителите засега ще се въздържат от инсталиране на пачове. И накрая, в началото на февруари, коригирана версия на микрокода, но само за мобилни и настолни потребителски чипове от семейството Skylake.

Сега, след месец на интензивно тестване и тестване на пачове от Intel и неговите партньори, дойде време за други повече или по-малко актуални процесори: бяха пуснати актуализации на микрокод за чипове, базирани на архитектурите Kaby Lake и Coffee Lake, както и Skylake -базирани платформи, които не са били засегнати от предишната актуализация. Говорим за процесори от 6-то, 7-мо и 8-мо поколение Intel Core i, както и най-новите семейства Core X, Xeon Scalable и Xeon D.

Новият микрокод ще бъде достъпен в повечето случаи чрез пускането на нов фърмуер от OEM производителите за дънни платки и лаптопи. Intel все още насърчава хората непрекъснато да актуализират своите системи до текущи версии, а също така публикува документ, в който описва състоянието на подобни корекции на микрокод за други свои продукти, включително по-ранни чипове, като се започне с 45 nm Core 2. За някои от тези чипове корекциите тепърва се планират, за други те са в процес прогрес ранно тестване, за други - вече съществуват под формата на бета версия. Обикновено колкото по-стара е архитектурата, толкова по-късно ще получи анти-Spectre фърмуер. Въпреки това, актуализациите на микрокод за повече или по-малко текущи архитектури Sandy Bridge, Ivy Bridge, Haswell и Broadwell вече са в бета тестване. Освен това редица чипове Atom и дори ускорителите Xeon Phi вече са получили корекции.

Intel напомни, че има други методи за борба с откритите уязвимости на блока за предсказване на клонове в модерни процесори. Например Retpoline, разработен от Google срещу Spectre CVE-2017-5715 (насочено инжектиране на клон или насочено инжектиране в клон). За тези, които се интересуват от повече информация за Retpoline и как работи, компанията публикува специален технически доклад.

Анти-Specter актуализациите на микрокод на Intel ще започнат да се разпространяват под формата на нов BIOS фърмуер за различни дънни платки през следващите дни и седмици. Чудя се дали те ще имат допълнителен ефект върху влошаването на производителността на крайните системи?

Съвременните процесори са сложни устройства, които могат да имат грешки. Освен това, вместо да изпълняват директно x86 инструкции, съвременните x86 процесори съдържат вътрешен код, който реализира поддръжка за набора от инструкции x86. Вътрешният код се нарича микрокод. Микрокодът може да се актуализира, за да коригира или смекчи грешките на процесора.

Някои грешки в процесора могат да доведат до срив на Firefox. Например, известно е, че Firefox 57 и по-нови версии от време на време се сриват на процесори Broadwell-U със стар микрокод по начин, който не се наблюдава при по-новите версии на микрокод Broadwell-U.

Актуализациите на микрокод могат да бъдат заредени в процесора чрез фърмуер (обикновено наричан BIOS дори на компютри, които технически имат UEFI фърмуер вместо стария BIOS) или от операционна система. Актуализациите на микрокода не се запазват при рестартиране, така че в случай на система с двойно зареждане, ако актуализацията на микрокода не се достави чрез BIOS, и двете операционни системи трябва да предоставят актуализацията.

На Mac, за да имате актуална система, приложете всички системни актуализации на OS X и актуализации на фърмуера на Apple, предлагани в панела Актуализации на приложението App Store.

За да позволите на Windows да зареди актуализиран микрокод в процесора, уверете се Актуализация на Windowsе активиран и настроен да инсталира актуализации.

За да видите микроархитектурата на процесора и коя версия на микрокода се използва, изпълнете командата reg query HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0 в командния ред на Windows. (Можете да отворите командния ред, като натиснете Windows + R, напишете cmd и натиснете Return.) Редът с надпис „VendorIdentifier“ показва доставчика на процесора (GenuineIntel за Intel или AuthenticAMD за AMD). Редът с надпис „Идентификатор“ дава микроархитектурата като три числа: „Семейство“, „Модел“ и „Стъпка“. Те са подходящи за идентифициране дали дадена грешка в процесора може да е от значение за процесора на вашия компютър. Редът с надпис „Актуализиране на ревизия“ показва текущата ревизия на микрокода (за конкретната микроархитектура) с нули от двете страни. Например Update Revision REG_BINARY 000000001E000000 означава, че ревизията е 1E (шестнадесетичен). Редът с надпис „Предишна версия на актуализацията“ показва версията на микрокода, заредена от BIOS.

Ако доставчикът е GenuineIntel, семейството е 6, моделът е 61 и степента е 4, за да се избегнат сривове с Firefox 57 или по-нова версия, ревизията на микрокода трябва да бъде 1A или по-висока.

Дали актуализациите на микрокод се използват по подразбиране зависи от дистрибуцията на Linux и може да се различава за процесорите Intel и AMD.

  • В базирани на Debian дистрибуции, включително Ubuntu, актуализациите на микрокод за процесори Intel се предоставят от пакета intel-microcode, а актуализациите на микрокод за процесори AMD се предоставят от пакета amd64-microcode.
  • В Arch актуализациите на микрокод на AMD са инсталирани по подразбиране, но актуализациите на микрокод на Intel изискват специални стъпки.
  • Във Fedora актуализациите на микрокод се инсталират по подразбиране.

За да видите микроархитектурата на процесора и коя версия на микрокода се използва, изпълнете командата less /proc/cpuinfo в терминала. Редът с етикет "vendor_id" показва доставчика на процесора (GenuineIntel за Intel или AuthenticAMD за AMD). Микроархитектурата е дадена като три числа на редове, обозначени като "семейство на процесора", "модел" и "стъпка". Те са подходящи за идентифициране дали дадена грешка в процесора може да е от значение за процесора на вашия компютър. Редът с надпис "микрокод" показва номера на версията на микрокода (за конкретната микроархитектура) в шестнадесетичен формат.

Кажете на приятели