В информационных технологиях память только для записи ( WOM ) — это область памяти или регистр, в который можно записывать, но нельзя читать. В дополнение к своему буквальному значению этот термин может применяться к ситуации, когда данные, записанные одной схемой, могут быть прочитаны только другой схемой. Наиболее распространенным случаем последней ситуации является ситуация, когда процессор записывает данные в регистр только для записи оборудования, которым управляет процессор. Оборудование может прочитать инструкцию, но процессор не может. Это может привести к проблемам при создании драйверов устройств для оборудования.
Память, доступная только для записи, также находит применение в сфере безопасности и криптографии как средство предотвращения перехвата данных во время их расшифровки.
В 1972 году в качестве внутренней шутки, устроенной Signetics , была представлена WOM, антитеза постоянной памяти (ПЗУ) . [1] Однако вскоре было признано, что эта концепция на самом деле описывает определенные функциональные возможности в микропроцессорных системах. [2]
Наиболее частыми случаями использования памяти только для записи являются случаи, когда ячейки памяти являются регистрами или интегральной схемой , используемой для управления или передачи информации оборудованию за пределами процессора. Центральный процессор (ЦП) может записывать данные в эти ячейки и, таким образом, управлять оборудованием, но не может считывать информацию и определять текущее состояние оборудования. Память доступна только для записи только с точки зрения ЦП. Такие схемы распространены в небольших встроенных микроконтроллерных системах для экономии затрат и могут вызывать трудности у авторов программного обеспечения драйверов устройств . [3] Когда текущее состояние оборудования неизвестно ЦП, он может перевести его в известное состояние, только отправив новую команду, что может привести к изменению состояния. [4] [5] Чтобы облегчить эту трудность, содержимое WOM может быть отражено ЦП в обычной памяти. [6] Однако эта стратегия надежна только в том случае, если регистр доступен только для чтения с точки зрения оборудования. Если внешнее оборудование способно изменять свое состояние независимо от ЦП, то состояние оборудования может отличаться от образа этого состояния, отраженного в памяти ЦП.
Пример такого использования касается доступа к памяти на ранних ПК. Первоначальные ПК использовали процессоры 8086 или 8088, которые могли адресовать только 1 МБ памяти. Большая ее часть была занята BIOS и видеокартой, в результате чего было доступно только 640 КБ непрерывно адресуемой оперативной памяти . Потребность в памяти многих приложений вскоре превзошла эту цифру. Одним из методов преодоления ограничения было использование оперативной памяти с переключением банков . Предоставляется несколько банков оперативной памяти, но они не назначаются на постоянной основе ячейке памяти. В конкретной реализации к компьютеру добавляется специальная плата, которая управляет распределением банков в пространстве памяти. Плата управления имеет собственную микросхему памяти. Компьютер может записывать данные в эту микросхему, но только сама плата управления может считывать микросхему, [примечание 1] поэтому ее называют памятью «только для записи». [7] : 200–202
Другой пример касается некоторых функций, выполняемых графическими процессорами (GPU). Например, GPU может выполнять обработку шейдеров на содержимом графической памяти. Для GPU может быть быстрее и эффективнее принимать входные данные для процесса шейдера из мест, доступных только для чтения, и записывать выходные данные шейдера в разные места, доступные только для записи, без необходимости копировать данные между буферами чтения и записи после каждой итерации. [8]
Пример, который все еще актуален в наше время, можно найти в 16550 UART , чьи производные все еще широко используются. Чтобы добавить данные FIFO, не нарушая совместимости с восемью регистрами конфигурации 8250 UART , "регистру управления FIFO" только для записи был назначен тот же адрес порта, что и "регистру идентификации прерывания" только для чтения. Записи по этому адресу программируют регистр управления FIFO, но нет возможности прочитать его обратно.
Этот термин также используется для описания компьютерного вида некоторых устройств отображения, таких как экраны на электронных чернилах, используемые в электронных книгах . [9]
Блокировка кадрового буфера графического процессора для эффективного превращения его в память только для записи может быть полезна для защиты зашифрованных данных. Когда зашифрованные данные поступают в пункт назначения, их необходимо расшифровать, прежде чем они могут быть отображены пользователю. Наличие незашифрованного материала в памяти, к которому может получить доступ ЦП или периферийные устройства, является потенциальной уязвимостью безопасности. Эту уязвимость можно устранить, выполнив расшифровку в графическом процессоре и записав незашифрованные данные непосредственно в память дисплея. Ничто другое не может прочитать данные, пока кадровый буфер заблокирован, а когда он разблокирован, он будет отображать что-то другое. [10] Можно также сказать, что все современные смарт-карты, оснащенные чипом, полагаются на технологию WOM, поскольку они программируются на заводе с определенными ключами шифрования, которые не могут быть напрямую прочитаны устройством чтения карт. Вместо этого ключи косвенно используются алгоритмами, которые проверяют пароли или расшифровывают определенный контент. У Nintendo был патент, описывающий использование частей жесткого диска в качестве временного хранилища только для записи для игрового кода, который сохраняется только для записи до тех пор, пока этот раздел не будет проверен с помощью авторизующей цифровой подписи. [11]
В теории вычислимости добавление WOM к некоторым моделям вычислений может увеличить их вычислительную мощность. [12]
/dev/null
еще одна концепция «только для записи»