X87

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

x87 — это, если говорить человеческим языком (что для Лурка, конечно, моветон), сопроцессор для x86-процессоров, заточенный под FPU (Floating Point Unit), то бишь под операции с плавающей запятой. А если не говорить человеческим языком, то это исчадие ада, порожденное сумрачным гением инженеров Intel, призванное заставить программистов страдать, рыдать и биться головой об стену, бормоча проклятия на ассемблере.

Зачем, спросите вы, нужен этот ваш x87, если современные процессоры и так умеют в математику? А затем, мой юный падаван, что в стародавние времена, когда компы были большими, а дискеты — маленькими, основному процессору было не до ваших этих синусов с косинусами. Ему бы байтики туда-сюда перетасовать, а вы тут со своими иррациональными числами лезете! Вот и придумали x87 — отдельный чип, который берет на себя всю эту математическую чертовщину.

Стек, регистры и прочие радости[править]

Архитектура x87 — это отдельная песня, способная довести до нервного тика даже Шелдона Купера. Вместо привычных регистров общего назначения, тут у нас, внезапно, стек. Да-да, тот самый, который вы представляете себе в виде стопки тарелок, откуда можно взять только верхнюю. Только вместо тарелок у нас числа с плавающей запятой, а вместо рук — кривые лапки программиста, пытающегося все это дело не уронить и не перепутать.

Восемь 80-битных регистров, которые обозначаются как ST(0), ST(1), …, ST(7), образуют этот самый стек. Все операции производятся с вершиной стека (ST(0)), а результаты, как правило, тоже помещаются в ST(0). Представь себе, что тебе нужно сложить два числа. Ты загружаешь первое в ST(0), второе — тоже в ST(0) (предыдущее при этом сдвигается в ST(1)), выполняешь сложение, а результат… правильно, снова оказывается в ST(0)! И так со всеми операциями. Это как пытаться забить гвоздь микроскопом, одновременно танцуя чечетку и читая рэп.

Команды и прочие непотребства[править]

Система команд x87 — это отдельный вид извращенного удовольствия. FLD, FST, FADD, FMUL, FSUB, FDIV… Все эти акронимы, словно заклинания из неведомого языка Ктулху, способны вызвать у неподготовленного человека приступ неконтролируемого смеха (истерического, разумеется). А еще есть команды для вычисления трансцендентных функций типа FYL2X (это, если что, y * log2(x)) или FPATAN (арктангенс, чтоб вы знали). И попробуй только с первого раза запомнить, в каком порядке там аргументы передаются!

А еще x87 умеет работать с разными форматами чисел: с одинарной точностью (32 бита), двойной (64 бита) и, та-дам, расширенной (80 бит). Зачем нужны 80 бит, когда всем хватает 64, спросите вы? А затем, что Intel так захотелось! Ну и чтобы жизнь медом не казалась, очевидно же.

Совместимость, точность и прочие неприятности[править]

Несмотря на то, что x87 уже давно морально устарел, его эмуляция все еще присутствует в современных процессорах ради обратной совместимости со старым говном мамонта. Правда, эта эмуляция не всегда работает идеально, что иногда приводит к забавным (и не очень) багам. Например, результат одной и той же операции может немного отличаться на разных процессорах или даже на разных версиях ОС. Это как если бы 2 + 2 на одном калькуляторе было 4, а на другом — 3.99999997.

Кроме того, из-за своей стековой архитектуры и особенностей реализации, x87 может накапливать ошибки округления, особенно при выполнении длинных цепочек вычислений. Это, конечно, не Therac-25, но приятного мало.

Зеленая магия и x87[править]

PhysX — это, если кто не в курсе, такой себе физический движок, который изначально разрабатывался компанией Ageia, а потом был куплен зелеными и прикручен к их видеокартам. Типа, чтобы все эти взрывы, тряпки и разлетающиеся осколки выглядели «реалистично» (ну, насколько это вообще возможно в компьютерной игре). И все бы ничего, если бы не одно «но»: когда PhysX работает на CPU (то есть, когда у тебя нет видеокарты NVIDIA), он, внезапно, начинает использовать… правильно, x87!

И вот тут-то начинается самое интересное. В 2010 году некий Дэвид Кантер, эксперт по чипам, предположил, что NVIDIA специально использует устаревший x87, чтобы PhysX на CPU работал медленнее. Типа, чтобы на фоне тормозящего CPU их видеокарты с аппаратным ускорением PhysX выглядели еще круче.

Цимес ситуации в том, что современные процессоры уже давно умеют в SSE (и его последующие версии), который гораздо быстрее и эффективнее, чем x87. Использование SSE вместо x87 могло бы, по некоторым оценкам, ускорить PhysX на CPU в 2-4 раза! Но NVIDIA, почему-то, этого не делает.

См. также[править]

Мышо.png Там счёт идет, баббага свет из афедрона поступает
ОсновыКомпьютерЭлектронно-вычислительная машинаПодсветка компьютераГрафические артефактыMacBook / МакбукДва монитораКомпьютеры Ворон и БобёрКалькуляторУгольный компМеждулициеКлавиатураМассовая компьютерная безграмотностьКомпуктерМемристорАппаратное ускорениеСистемный блокРасовое превосходство ПКОтупение человечества из-за компьютеровГенератор случайных чиселМикросхемаКомпьютеры пятого поколенияШифровкаИБП
ПроцессорыРоссийский процессорRyzen 5 9600XDisable Core 0Infinity FabricX87
ВидеокартыСгорание видеокартыGeForce 256GeForce 600NVIDIA OptiXNVIDIA Frame GenerationNvidia 3D VisionRTX 5090PhysX RIPNvidia Pre-rendered FramesRTX Mega GeometryMVSSМайнингНародный DLSSNvidia QuadroNvidia TeslaRTX PRO 6000GainwardPrecision Boost OverdriveAMD TruFormInno3d
Хранилища данныхМесто на дискеКомпакт-дискПроверка памяти компьютераДедикОперативная памятьКривые флопыАрхивация и резервное копирование на оптический дискОптический дискДефрагментацияЗагрузите больше РАМROMЖёсткий дискSSDAMD FEMFX
ПрочееВиртуальная реальностьAMD vs IntelЕда за компьютеромПролил кофе на клавиатуруКомпьютерно-техническая экспертизаЗаправка картриджейAlt-TabКулерКремниевая пирамидаНоутбукATI vs NvidiaКомпьютерная мышьКомпьютерное зрениеКомпьютерная мышь в холодильникеRDNA 4ZalmanОверклокинг ЭЛТ-мониторовLG Optimus 3DЧастота опроса мышиТоп производителей блоков питанияДребезг контактовСкроллингRGB LEDKingSpec80 PLUSBe quiet!DINKioxia
МемыЖивотные за компьютеромСиний экран в публичном местеПеределка фамиклона из PAL в NTSCТысячеричная система счисленияБезопасность через умолчаниеПК vs консолиКрэкерСтруйный принтерЗмея в принтереПостукивание пальцем по клавиатуреВампир на клавиатуреЗмея в системном блокеЭникейщикКот за комьютером