Где мы видим, что прогнозирование будущего может привести к более быстрым компьютерам, и как это связано с древним Китаем и Месопотамией.

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

Это происходит в ЦП, что означает центральный процессор и является мозгом вашего компьютера. Функция процессора обманчиво проста: он считывает инструкции, например сложение двух чисел, и выполняет их. Но не все числа и данные, с которыми работает ЦП, хранятся в ЦП. Скорее, они хранятся в основной памяти компьютера (отдельный набор микросхем). Таким образом, перед выполнением математических расчетов ЦП должен получить значения из основной памяти. Этот тип операции называется доступом к памяти.

Интересно, что эта компьютерная архитектура похожа на клерка в древнем Китае или Месопотамии, использующего счеты и лист бумаги для учета своих продаж. Счеты использовались для вычислений (как и ЦП), а бумага использовалась для доступа и хранения результатов (память). Таким образом, тысячелетняя архитектура была переосмыслена в 1940-х годах, чтобы породить современный компьютер. Ключевой фигурой, предложившей это, был Джон фон Нейман, американский математик, ученый-компьютерщик и гений с венгерскими корнями.

Но вернемся к доступу к памяти, который является относительно медленным процессом. На одно обращение уходит около одной миллионной доли секунды, а за тот же промежуток времени ЦП может выполнять сотни или тысячи других операций! Так что же делает ЦП, пока он ожидает выборки данных из памяти? Конечно, можно было просто подождать, но это было бы пустой тратой времени, не так ли?

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

Но что, если ЦП предвидит неправильное будущее? Ну, тогда нужно отменить операции, иначе настоящее будет неправильным — немного как в тех фантастических фильмах, о которых мы упоминали в начале!

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