От клавиатуры к фотону: часть вторая | ВесьТоп создание и продвижение сайтов

Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

Эффективность стратегий продвижения подтверждается сотрудничеством с крупными клиентами и отзывами о нашей работе.

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

От клавиатуры к фотону: часть вторая

От клавиатуры к фотону: часть вторая

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

Компьютерная система

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

От клавиатуры к фотону: часть вторая

Задержку реакции компьютерной системы можно разделить на следующие основные части:

  • Задержка ввода — клавиатура
  • Задержка обработки — программное обеспечение
  • Задержка вывода — монитор

Давайте сосредоточимся на каждом из этих элементов.

Задержка ввода

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

Сканирование клавиатуры

Обычная клавиатура включает более 100 клавиш, что немало. Чтобы свести к минимуму количество проводов и входов на процессоре клавиатуры, клавиши обычно объединяются в общую матрицу, в которой пересекаются строки и столбцы. Таким образом, количество проводов и входных контактов контроллера клавиатуры уменьшается с «X * Y» до «X + Y» — например, со 121 до 22.

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

Отскок контакта

Независимо от типа клавиатуры, клавишные переключатели механически несовершенные и имеют так называемый «дребезг контактов» — вместо простого включения и выключения переключатель переключается очень быстро и часто с включения на выключение и наоборот, прежде чем остановиться. устойчивое состояние. Продолжительность этого процесса зависит от используемой технологии переключения — например, для устройств Cherry MX производитель заявляет, что дребезг контактов составляет менее 5 миллисекунд. Накопленная статистика показывает, что среднее значение отскока контакта составляет около 1,5 миллисекунды.

Устранение дребезга контакта

Поскольку частота сканирования матрицы клавиатуры довольно высока, дребезг при контакте интерпретируется как несколько нажатий клавиш. Чтобы устранить этот неприятный эффект, контроллер клавиатуры усредняет сигналы за определенный период времени, чтобы получить абсолютно надежный результат, независимо от того, нажата ли клавиша, удерживается или отпущена. Но такая фильтрация приводит к дополнительным задержкам, которые зависят от прошивки клавиатуры и ее процессора. Здесь интересно то, что производители практически никогда не сообщают характеристики своей прошивки в фирменной прошивке. Таким образом, мы можем остановиться на типичных алгоритмах устранения отказов контакта и предположить, что фильтрация добавляет еще 7 миллисекунд задержки, а максимальное время обработки отказов контакта составляет около 12 миллисекунд (в среднем 8,5 миллисекунд).

Прерывания USB

USB — это шина, которая управляется компьютерной системой, и клавиатура должна ждать запроса от этой системы, чтобы отправить данные о зарегистрированных нажатиях клавиш (процессор управления клавиатурой имеет свой собственный буфер, в который записываются все события). Но хотя клавиатуру можно сканировать и обновлять с частотой 1000 Гц, операционные системы обычно используют 125 Гц для работы с USB-устройствами. То есть максимальная задержка этого процесса составляет около 8 миллисекунд (в среднем 4 мс). Здесь пора подчеркнуть, что эту частоту можно увеличить вручную.

Преобразование USB

Конечно, для преобразования данных требуется время. Здесь только отметим, что это время составляет около 1 мс, но с новыми портами USB таких задержек почти нет.

Давайте сложим все эти задержки, чтобы увидеть, насколько клавиатура может нас замедлить:

Максимальная задержка USB-клавиатуры достигает 22 мс, минимальная — 4 мс, а средняя — 8 мс. Он не маленький.

Эти результаты соответствуют некоторым экспериментальным результатам по измерению задержки, вызванной клавиатурой.

Сможем ли мы справиться с этим? Конечно можно — это несложно. Необходимо использовать профессиональную клавиатуру со следующими функциями:

  • Переключатели с небольшим дребезгом контакта, хорошие результаты дают оптические переключатели
  • Высокая частота сканирования матрицы
  • Адаптивный алгоритм удаления дребезга контакта
  • Прошивка клавиатуры позволяет производить настройки
  • Использование новых USB-портов

Все это значительно снижает как максимальную, так и среднюю латентность клавиатуры. Я использую немного старую клавиатуру Kinesis Advantage, но когда я взял ее, я сразу почувствовал разницу по сравнению с моей предыдущей обычной клавиатурой.

Игровые клавиатуры идут еще дальше — если вы предпочитаете бескомпромиссное решение, вы можете взглянуть на устройство с технологией Cherry RealKey, в котором считывание состояния клавиши осуществляется аналоговым образом, а дребезг контактов полностью отсутствует.

Задержка компьютерной системы

Это задержка от приема входного сигнала с клавиатуры до генерации входного символа с видеокарты. Или, точнее, задержка компьютерной системы.

Эта задержка обработки определяется не только производительностью — теоретически мы можем иметь компьютерную систему, которая выдает 300 FPS, но появление символа на экране задерживается на 5 секунд после нажатия соответствующей клавиши на клавиатуре. Наиболее часто используемые методы решения этой проблемы — это упаковка и буферизация. В целом, в компьютерной системе существует множество источников задержки, но они настолько напрямую связаны с использованием конкретного редактора для написания текста и кода, что задержка измеряется непосредственно для соответствующего редактора. Конкретные номера протестированных редакторов и источников для написания исходного кода будут указаны в следующем разделе.

Операционная система

Как только USB-хост, или, другими словами, USB-порт компьютера, получает данные с клавиатуры, он инициирует аппаратное прерывание, чтобы драйвер операционной системы мог прочитать эти данные через интерфейс этого USB-хоста — обычно интерфейс PCI или PCIe. Затем эти данные обрабатываются подсистемой человеческого интерфейса (HID) ОС, что в конечном итоге приводит к тому, что событие «Нажатие клавиши» (такое как WM_KEYDOWN) помещается в очередь сообщений операционной системы. Затем событие переходит в цикл событий активного окна прикладной программы.

От клавиатуры к фотону: часть вторая

Все эти действия требуют времени, но для нашей цели — быстрого набора текста и быстрой реакции — его ничтожно мало. Здесь важно кое-что еще: основные операционные системы Windows, Mac и различные дистрибутивы Linux не являются операционными системами реального времени, и нет никакой гарантии, какая именно будет задержка. Аппаратные процессы в стандартных операционных системах и многозадачность программного обеспечения могут непредсказуемо (и бесконечно) увеличивать время обработки.

Здесь для упрощения анализа предположим, что наш компьютер не слишком занят вводом информации с клавиатуры и имеет задержку менее 1 мс.

Виртуальная машина

Если текстовый редактор или IDE работают в среде виртуальной машины, такой как Java JVM или CLR в .NET Framework, возникает дополнительная задержка, поскольку они также не работают в реальном времени с точно определенными задержками. Сегодня виртуальные машины значительно улучшены, но изначально дают некоторую задержку, которая быстро уменьшается во время работы.

Текстовый редактор или среда программирования

Используемый редактор имеет наибольшее значение — именно он обеспечивает наибольшую задержку в работе компьютерной системы. Довольно много случаев, когда редактор вводит задержку в 1-2 секунды.

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

Есть и другие способы. В конце концов, нам не нужен суперкомпьютер для ввода наших текстов и кода. Ввод информации в текстовом редакторе — относительно простой процесс, и даже компьютеры с 286 процессорами обеспечивали мгновенный ввод. В современном и сложном редакторе IDE вполне возможно добиться практически нулевой задержки при вводе текста с клавиатуры, что фактически и делается в режиме печати с нулевой задержкой в ​​IntelliJ IDEA. Это относительно новая и довольно сложная технология с ключевыми идеями, которые можно использовать для создания новых типов графических интерфейсов.

Среды IDE и редакторы кода сильно различаются по задержке ввода информации. В следующем разделе мы покажем тесты редакторов и IDE, работающих в разных компьютерных конфигурациях.

Конвейер рендеринга

CPU и GPU работают параллельно и взаимодействуют через буфер инструкций, дополненный буфером драйвера видеокарты. Большинство команд рендеринга являются асинхронными, и их не нужно выполнять немедленно, а нужно ждать завершения других процессов. Команды рендеринга накапливаются в буфере драйвера видеокарты, затем упаковываются и отправляются в буфер команд графического процессора с целью получения большего количества кадров за счет задержки, которая может значительно варьироваться.

Типичное настольное приложение чаще всего выполняется в среде рендеринга графического интерфейса. Обычно это вполне приемлемо для настольных приложений, которые не чувствительны к задержке, накопленной таким образом. Однако есть процессы, которые очень чувствительны к этой задержке — например, ввод данных в IDE. Поэтому редакторы используют технологию для «проталкивания» своих команд в буфер, чтобы эти команды могли быть выполнены в следующем кадре и, таким образом, уменьшают задержку. В качестве примера можно привести синхронизацию в OpenGL. Есть и другие методы подобного типа.

Конец второй части. В следующей части мы рассмотрим эффект двойной буферизации, вертикальной синхронизации и оценим эффект задержки вывода — времени отклика мониторов.

Читайте так же:
Not found

Нам доверяют

Интернет магазин