Введение
Двойной портовый вариант динамической оперативной памяти.
Двойной портовый видео-RAM (VRAM) – это двойной портовый вариант динамической оперативной памяти (DRAM), который ранее широко использовался для хранения буфера кадров в графических адаптерах. Двойной портовый RAM позволяет процессору читать и записывать данные в память, как если бы это был обычный чип DRAM, при этом добавляется второй порт для последовательного считывания данных. Это упрощает взаимодействие с контроллером видеодисплея (VDC), который передает сигналы синхронизации в память и получает данные в правильной последовательности при отрисовке изображения на экране. Поскольку процессор и VDC одновременно получают доступ к памяти через разные порты, двойной портовый RAM не требует приостановки работы процессора во время использования памяти VDC, что устраняет связанные с этим состояния ожидания и повышает общую производительность системы. Двойной портовый RAM был распространен с середины 1980-х до середины 1990-х годов. После этого стали использоваться новые типы высокопроизводительной памяти, которые в конечном итоге заменили двойные портовые решения. Поскольку эти другие типы памяти также известны как видеопамять и, следовательно, VRAM, их иногда путают с этой более старой разновидностью памяти.
История
Ранние компьютеры использовали динамическую оперативную память для хранения видеоданных, предназначенных для вывода на обычный телевизор или простую модификацию телевизора, принимавшего композитный видеосигнал. Для работы с таким дисплеем критически важно, чтобы видеоаппаратное обеспечение выдавало очень точно синхронизированный сигнал. При скоростях работы современной памяти, чтение данных для передачи в видеоаппаратное обеспечение потребляло значительную часть доступной производительности устройств памяти. Это противоречило необходимости центрального процессора (ЦП) записывать данные в память для последующего чтения видеосистемой, поскольку оба не могли одновременно использовать одну и ту же память. Для решения проблем с синхронизацией использовалось два основных подхода. В более дорогих системах видеосистемы имели собственную выделенную память и использовали отдельную систему для записи данных в нее центральным процессором. Это исключало любую возможность конфликта за доступ к памяти, но требовало использования отдельной памяти в эпоху, когда она была очень дорогой. Кроме того, связь обычно осуществлялась через медленную системную шину, которая ограничивала скорость изменения изображения на экране, затрудняя реализацию интерактивной графики. Другой подход, использовавшийся в большинстве домашних компьютеров, заключался в использовании единого общего банка памяти и предоставлении видеоаппаратуре контроля над доступом к памяти, с приостановкой работы ЦП при необходимости. Это могло приводить к снижению вычислительной производительности, поскольку ЦП неоднократно переводился в состояния ожидания, но имело преимущество в виде меньшей стоимости и возможности более быстрого обновления дисплея, обеспечивая тем самым большую интерактивность. К началу 1980-х годов появление мониторов с гораздо более высоким разрешением, требовавших больших буферов кадров, и новых графических пользовательских интерфейсов (GUI), нуждавшихся в высоком разрешении и общей производительности, сделали производительность видеосистемы все более сложной проблемой. Сложные системы, такие как Amiga Agnus, были разработаны для тщательного контроля доступа к памяти и снижения конфликтов, однако, хотя они и уменьшали проблему, не устраняли ее полностью. Решением стало использование памяти, к которой могли одновременно обращаться ЦП и видеоаппаратное обеспечение. Она была изобретена Ф. Диллом, Д. Лингом и Р. Матиком в IBM Research в 1980 году, патент на нее был выдан в 1985 году (патент США 4,541,075). Первое коммерческое применение VRAM произошло в 1986 году в высокоразрешающем графическом адаптере, представленном IBM для своей системы RT PC, который установил новый стандарт для графических дисплеев. До разработки VRAM, память с двойным портом была довольно дорогой, что ограничивало использование графики с растровым изображением высокого разрешения высокопроизводительными рабочими станциями. VRAM повысила общую пропускную способность буфера кадров, обеспечив возможность создания недорогой, высокоразрешающей, быстрой цветной графики. Современные операционные системы с графическим пользовательским интерфейсом (GUI) извлекли из этого пользу, что стало ключевым фактором распространения графических пользовательских интерфейсов (GUI) по всему миру в то время.
Описание
Динамическая оперативная память внутренне организована в виде массива строк и столбцов конденсаторов, где каждое пересечение строки и столбца содержит один бит в ячейке. При обычном использовании процессор, обращающийся к DRAM, запрашивает небольшое количество данных за раз, например, один байт. Для чтения байта для процессора, DRAM декодирует предоставленный адрес в серию из восьми ячеек, считывает всю строку, содержащую эти ячейки, и фиксирует запрошенные данные для последующего чтения по шине данных. В то время строки обычно содержали 1024 ячейки. Устройства DRAM являются деструктивными, то есть операция чтения строки также приводит к стиранию данных в ней. Чтобы сохранить данные, после каждого чтения DRAM должна записывать те же данные обратно в эту строку. Для этого необходимо предусмотреть отдельные защелки для всей строки, и данные записываются обратно в строку, пока процессор считывает запрошенный байт. Если рассматривать процесс в целом, это означает, что DRAM многократно считывает целые строки данных, выбирает один байт из этих данных и отбрасывает остальное, а затем снова записывает все обратно. VRAM работает, не отбрасывая избыточные биты в строке. Вместо этого данные, прочитанные в строчное хранилище, также отправляются во второй набор защелок и связанный с ним сдвиговый регистр. С этого момента данные можно считывать по одному биту, активируя сдвиговый регистр, и для этого требуется только один вывод. VRAM обычно не имеет двух шин адреса, что означает, что процессору и графическому устройству все еще приходится чередовать доступ к чипу, но поскольку целая строка данных считывается драйвером графики, и эта строка может представлять несколько строк развертки на экране, количество прерываний процессора может быть значительно уменьшено. Такая операция описана в статье "All points addressable raster display memory" (Растровая память с возможностью адресации каждой точки) Р. Матика, Д. Линга, С. Гупты и Ф. Дилла, IBM Journal of R&D, Vol 28, No. 4, июль 1984 г., стр. 379–393. Для использования видеопорта контроллер сначала использует порт DRAM для выбора строки массива памяти, которая должна быть отображена. VRAM затем копирует всю эту строку во внутренний буфер строки, который является сдвиговым регистром. Контроллер может затем продолжать использовать порт DRAM для рисования объектов на дисплее. Тем временем контроллер подает тактовый сигнал, называемый сигналом сдвига (SCLK), на видеопорт VRAM. Каждый импульс SCLK заставляет VRAM передавать следующий бит данных, в строгом порядке адресации, из сдвигового регистра на видеопорт. Для упрощения графический адаптер обычно проектируется таким образом, чтобы содержимое строки, а следовательно, и содержимое сдвигового регистра, соответствовало полной горизонтальной линии на дисплее.
Переход на SDRAM
В 1990-х годах многие графические подсистемы использовали VRAM, и количество мегабит активно рекламировалось как ключевое преимущество. В конце 1990-х годов синхронные технологии DRAM постепенно становились более доступными, плотными и достаточно быстрыми, чтобы заменить VRAM, несмотря на то, что она однопортовая и требует больших накладных расходов. Тем не менее, многие концепции VRAM, касающиеся внутренней буферизации и организации на кристалле, были использованы и усовершенствованы в современных графических адаптерах.