Механический калькулятор 1950-х годов впадает в хаос при делении на ноль
Деление на ноль — одна из самых известных ошибок в вычислительной технике. Но даже в додигитальную эпоху эта операция могла приводить механические калькуляторы в состояние хаоса. Яркий пример демонстрирует видео, которым поделился энтузиаст математики и науки Vixhal в социальной сети X (ранее Twitter). Технологическое чудо 1950-х годов начинает бешено вращать шестерёнки, будто «крича» от невозможности выполнить команду и отправиться в математическое небытие.
Что происходит, когда вы делите на ноль на механическом калькуляторе 1950-х? В 1950-х у механических калькуляторов не было защитных механизмов современных машин. Поэтому при попытке деления на ноль калькулятор не показывал ошибку. Вместо этого он впадал в…
Знаменитый микропроцессор Intel 4004, выпущенный в 1971 году, был спроектирован как сердце калькулятора. Однако даже у этой микросхемы не было аппаратной защиты от ошибочного деления на ноль. Более того, ограниченный набор команд 4004 изначально не поддерживал даже простую инструкцию деления.
Тем не менее, калькулятор Busicom 141-PF, первое коммерческое устройство на базе чипа Intel, уже имел прошивку для обнаружения деления на ноль и вывода сообщения об ошибке. Это гораздо предпочтительнее, чем сбой, бесконечный цикл вычислений или другое неожиданное поведение.
Аппаратные исключения при делении на ноль появились только с запуском новаторского процессора Intel 8086 в 1978 году. Этот знаменитый первый CPU архитектуры x86 ввёл нативную инструкцию DIV, а также генерацию исключения DE (Divide Error) в случае обнаружения нулевого делителя.
Этот шаг Intel в некоторой степени защитил приложения от проблем с делением на ноль. Следующим важным этапом стало принятие в 1985 году стандарта IEEE 754 для чисел с плавающей запятой, который предписывал возвращать в таких случаях значение Infinity (бесконечность) или NaN (не число) вместо сбоя. Эта реализация впервые появилась в массовом оборудовании, начиная с математического сопроцессора Intel 80387.
Сбои INT_DIVIDE_BY_ZERO в World of Warcraft на процессорах Raptor Lake в 2025 году
В 2025 году, хотя современные ядра операционных систем могут перехватывать исключения деления на ноль на аппаратном уровне, предотвращая крахи, некоторые приложения и игры всё ещё могут иметь проблемы, если разработчики не предусмотрели такую ситуацию. Сообщения игроков World of Warcraft (WoW) на Reddit и форумах, появлявшиеся ещё несколько месяцев назад, указывают на то, что в игре на процессорах Raptor Lake/Refresh в начале 2025 года всё ещё происходили сбои с кодом INT_DIVIDE_BY_ZERO.
Так что, если в 2025 году вы столкнётесь с внезапным закрытием игры или программы, вспомните, пожалуйста, о бедном механическом калькуляторе 1950-х, перезагружая компьютер.
Источник: Tomshardware.com







0 комментариев