Кіріспе
Динамикалық жадтың (RAM) екі портты нұсқасы – графикалық адаптерлерде фреймбуферді сақтау үшін кеңінен қолданылған динамикалық жадтың (DRAM) екі портты нұсқасы. Екі портты жад CPU-ға деректерді әдеттегі DRAM чипі сияқты оқуға және жазуға мүмкіндік береді, сонымен қатар деректерді тізбектей оқитын екінші портты қосады. Бұл бейне дисплей контроллерімен (VDC) байланыстыруды жеңілдетеді, ол жадқа синхронизация сигналын жібереді және экранды салу кезінде деректерді дұрыс ретпен қабылдайды. CPU және VDC әртүрлі порттар арқылы жадқа бір уақытта қол жеткізе алатындықтан, екі портты жад VDC жадты пайдаланғанда CPU-дың тоқтауына қажеттілік тудырмайды, осылайша күту күйлерін болдырмай, жүйенің жалпы өнімділігін арттырады. Екі портты жад 1980-жылдардың ортасынан 1990-жылдардың ортасына дейін жиі қолданылды. Одан кейін жаңа, жоғары өнімді жад түрлері пайда бола бастады, олар біртіндеп екі портты конструкцияны ығыстырды. Бұл басқа жад түрлері де бейне жад ретінде танылатындықтан, кейде олардың бұл ескі түрімен шатасуы мүмкін.
Dual ported video RAM (VRAM) is a dual ported variant of dynamic RAM (DRAM), which was once commonly used to store the framebuffer in graphics adapters. Dual ported RAM allows the CPU to read and write data to memory as if it were a conventional DRAM chip, while adding a second port that reads out data in a serial fashion. This makes it easy to interface with a video display controller (VDC), which sends a timing signal to the memory and receives data in the correct sequence as it draws the screen. Because the CPU and VDC access the memory simultaneously on different ports, dual ported RAM does not require the CPU to pause while the VDC uses memory, thereby eliminating the associated wait states and improving overall system performance. Dual ported RAM was common from the mid 1980s into the mid 1990s. After that date, new forms of high performance memory began to be used that eventually replaced dual ported designs. As these other forms of memory are also known as video memory, and thus VRAM, it sometimes confused with this older form of memory.
Тарих
Ертедегі компьютерлер видео деректерін сақтау үшін динамикалық жадты пайдаланды, оларды әдеттегі теледидарға немесе композиттік бейне кірісін қабылдайтын теледидардың қарапайым түрлендірілген нұсқасына шығару үшін. Мұндай дисплеймен жұмыс істеу үшін бейне жабдығының өте дәл уақытталған сигналды шығаруы өте маңызды. Сол кездегі жадтың жылдамдығымен деректерді бейне жабдығына беру үшін оқу, жад құрылғыларының мүмкін болатын өнімділігінің көп бөлігін жұмсады. Бұл, видео жүйесіне оқу үшін орталық процессордың (CPU) жадына дерек жазу қажеттілігімен қақтығысты, себебі екеуі де бір уақытта бір жадыны пайдалана алмады. Уақытты синхрондау мәселесін шешу үшін екі негізгі тәсіл қолданылды. Жоғары бағалы жүйелерде бейне жүйелерінің өздеріне арналған жеке жады болды және CPU деректерді сақтау үшін бөлек жүйе қолданды. Бұл жад үшін күрестің кез келген мүмкіндігін жойды, бірақ жад өте қымбат болған кезде жеке жадты қажет етуге түсті. Сондай-ақ, ол әдетте экрандағы өзгерістердің жылдамдығын шектейтін баяу жүйелік шина арқылы байланыс жасады, бұл интерактивті графиканы қиын етті. Басқа тәсіл, көптеген үй компьютерлерінде қолданылған, жадтың ортақ бөлігін пайдалану және бейне жабдығына жадқа кіруді басқаруға рұқсат беру, қажет болған кезде CPU-ны тоқтату болды. Бұл CPU-ны осы "күту күйіне" жиі түсіру арқылы есептеу өнімділігінің төмендеуіне әкелуі мүмкін, бірақ ол арзан болды және CPU-ға дисплейді жылдам жаңартуға және осылайша жақсырақ интерактивтілікті қамтамасыз етуге мүмкіндік берді. 1980 жылдардың басында әлдеқайда жоғары ажыратымдылық мониторларының пайда болуы, олар үлкен фрейм-буферлерді қажет етті, және жаңадан енгізілген графикалық интерфейстер (GUI), олар жоғары ажыратымдылық пен жалпы өнімділікті қажет етті, бейне жүйесінің өнімділігін күрделі мәселеге айналдырды. Amiga Agnus сияқты күрделі жүйелер жадқа кіруді мұқият басқару және күресті азайту үшін пайда болды, бірақ олар мәселені азайтты, бірақ толығымен жойған жоқ. Шешім – CPU және бейне жабдығы бір уақытта қол жеткізе алатын жадты пайдалану болды. Оны 1980 жылы IBM зерттеу орталығында F. Dill, D. Ling және R. Matick ойлап тапты, ал 1985 жылы патент алды (АҚШ патенты 4,541,075). VRAM-ның алғашқы коммерциялық қолданылуы 1986 жылы IBM-нің RT PC жүйесі үшін шығарылған жоғары ажыратымдылық графикалық адаптерде болды, ол графикалық дисплейлер үшін жаңа стандартты белгіледі. VRAM-ды жасамас бұрын, екі портты жад өте қымбат болды, бұл жоғары ажыратымдылықтағы растрлік графиканы жоғары деңгейдегі жұмыс станцияларымен шектеді. VRAM жалпы фрейм-буфердің өтімділігін жақсартты, төмен бағалы, жоғары ажыратымдылықты, жоғары жылдамдықты, түсті графикаға мүмкіндік берді. Қазіргі заманғы графикалық интерфейске негізделген операциялық жүйелер осыдан пайдаланды, сондықтан ол сол кезде әлемдегі графикалық интерфейстердің (GUI) кең таралуына маңызды фактор болды.
Сипаттама
Динамикалық жад (RAM) конденсаторлардың қатарлары мен бағаналарынан тұратын массив түрінде ұйымдастырылған, әр қатар/бағана қиылысында жад ұяшығында бір бит сақталады. Көбінесе, DRAM-ға қатынасатын процессор (CPU) бір уақытта аз көлемдегі деректерді, мысалы, бір байтты сұрайды. CPU үшін байтты оқу үшін DRAM ұсынылған адресті сегіз жад ұяшығынан тұратын тізбекке түрлендіреді, осы ұяшықтарды қамтитын бүкіл қатарды оқиды және сұралған деректерді дерек шинасы арқылы оқуға дайындайды. Бұл кезде қатарлар әдетте 1024 жад ұяшығынан тұратын. DRAM құрылғыларының ерекшелігі – олардың деректерді жою қабілеті, яғни қатарды оқу операциясы оның ішіндегі деректерді өшіреді. Деректерді сақтау үшін DRAM оқылған деректі сол қатарға қайта жазуы керек. Бұл үшін бүкіл қатарға арналған жеке жад тіркегіштері (latch) қосылуы тиіс, ал деректер CPU сұралған байтты оқып жатқанда қатарға жазылады. Нәтижесінде, DRAM деректердің толық қатарларын қайта-қайта оқып, осы деректерден бір байтты таңдап, қалғанын жойып, содан кейін барлығын қайта жазады. VRAM қатардағы артық биттерді жоймай жұмыс істейді. Оның орнына, қатарлық сақтауға оқылған деректер екінші жад тіркегіштері жинағына және оған байланысты бит жылдырғышқа (bit shifter) жіберіледі. Бұдан кейін деректерді биттер бойынша оқуға болады, бұл үшін тек бір түйреуіш (pin) қажет. VRAM әдетте екі адрес шинасын (address bus) пайдаланбайды, яғни CPU мен графикалық процессор чипке қатынасуды кезеңдеп жүзеге асыруы керек. Бірақ графикалық драйверге деректердің толық қатары оқылады, ал бұл қатар экрандағы бірнеше жолдарды білдіруі мүмкін, сондықтан CPU-ны үзу жиілігі азаяды. Мұндай операция "All points addressable raster display memory" атты мақалада сипатталған, авторлары: R. Matick, D. Ling, S. Gupta және F. Dill, IBM Journal of R&D, 28-том, 4-сан, 1984 жылғы шілде, 379–393 беттер. Видео портын пайдалану үшін контроллер DRAM портын пайдаланып, алдымен дисплейге көрсетілетін жад массивінің қатарын таңдайды. VRAM содан кейін осы қатардың толық көшірмесін ішкі қатарлық буферге (shift register) көшіреді. Контроллер осыдан кейін дисплейдегі нысандарды салу үшін DRAM портын пайдалануын жалғастыра алады. Осы уақытта контроллер VRAM бейне портына ауысу сағаты (SCLK) деп аталатын такта береді. Әрбір SCLK импульсі VRAM-ды келесі дерек битін, қатаң адрес тәртібімен, ауысу регистрінен бейне портына жіберуге мәжбүрлейді. Қарапайымдылық үшін графикалық адаптер әдетте бір қатардың мазмұны, демек ауысу регистрінің мазмұны дисплейдегі толық көлденең сызыққа сәйкес келеді.
SDRAM-қа ауысу
1990 жылдары көптеген графикалық жүйелер VRAM-ды пайдаланды, мегабиттері сату артықшылығы ретінде жарналанды. 1990 жылдардың соңында синхронды DRAM технологиялары біртіндеп қолжетімді, тығыз және VRAM-ды ығыстыруға жеткілікті жылдам болды, тіпті ол бір ғана портты және қосымша шығындарды талап ететін болса да. Дегенмен, VRAM-ның ішкі, чиптегі буферлеу және ұйымдастыру тұжырымдары қазіргі заманғы графикалық адаптерлерде қолданылып, жақсартылды.