регистрационен прозорец

извикване

Прозорецът на регистърае един от методите за организиране на работа с регистрите на процесора, използван за намаляване на натоварването при работа със стека при извикване на подпрограми.

Съдържание

Парадигмата на регистърния прозорец е разработена по време на проекта за микропроцесор RISC в UC Berkeley през 1980-1984 г.

По-голямата част от процесорите съдържат ограничен брой регистри - свръхбързи клетки с памет, използвани за съхраняване на служебна информация (сервизни регистри) и междинни резултати от работата на програмата (регистри с общо предназначение). В традиционната парадигма, в момента на извикване на подпрограмата, процесорът трябва да запази текущото си състояние (съдържанието на повечето служебни регистри и някои регистри с общо предназначение), да прехвърли контрола в началото на процедурата и след нейното завършване да възстанови предварително запазените стойности на регистъра. На практика това означава необходимостта да се записват десетки или стотици байтове информация в RAM с всяко извикване на процедура.

В парадигмата на регистърния прозорец регистрите на процесора с общо предназначение са разделени на глобални регистри (за съхраняване на глобални променливи) и регистърен файл, който не е напълно видим за никоя програма.

Нека регистровият файл се състои от K регистъра, подредени в кръг. Само L = L1 + L2 + L3 регистри са достъпни за всяка програма (L[1][2]

Указателят към началото на прозореца на текущия регистър се съхранява в специален CWP (Current Window Pointer) регистър и се променя от хардуера. [3]

Ако се използват всички регистри, за да се извика следващата подпрограма, стойностите на първите регистри трябва да се съхраняват в RAM (действие, подобно на размянатастраници).

Класическият модел предполага, че размерът на прозореца на регистъра е фиксиран. Някои реализации (като AMD Am29000) използват регистрационни прозорци с променлив размер.

Регистрационните прозорци се използват в процесорите SPARC, Elbrus, Intel i960 и AMD Am29000.

Основното предимство на регистрационните прозорци е липсата на работа със стека при извикване на подпрограми. В допълнение, регистрационните прозорци прилагат защита на паметта: подпрограмата не може да промени стойностите на повечето от регистрите на програмата, която я е извикала. Сред недостатъците на този подход може да се отбележи наличието на максимална дълбочина на влагане на подпрограми, над която режийните разходи при извикване на подпрограми рязко се увеличават. Джон Хенеси, главен дизайнер на конкурентната RISC архитектура MIPS, смята, че компилаторът може да свърши по-добра работа при намирането на безплатни регистри за предаване на параметри на подпрограма. Извършването на тази работа на хардуерно ниво той счита за неоправдано.