Тіркелу терезесі - Register window

4 терезелі регистрлік терезе жүйесінің мысалы

Жылы компьютерлік инженерия, терезелерді тіркеу кейбіреулерінде ерекшелік болып табылады нұсқаулық жиынтығының архитектурасы өнімділігін жақсарту қоңыраулар, өте кең таралған операция. Тіркелу терезелері басты ерекшеліктерінің бірі болды Беркли RISC кейінірек коммерциаландырылатын дизайн AMD Am29000, Intel i960, Sun Microsystems СПАРК және Intel Итан.

Мәтінмән

Көпшілігі Орталық Есептеуіш Бөлім конструкцияларға өте жоғары жылдамдықты жадының аз мөлшері кіреді регистрлер. Процессор регистрлерді командалардың ұзын жолдарымен жұмыс жасау кезінде уақытша мәндерді ұстап тұру үшін қолданады. Үлкен регистрі бар дизайнға айтарлықтай өнімділікті қосуға болады. Алайда, регистрлер процессордың көрінетін бөлігі болғандықтан нұсқаулар жинағы, дизайн шыққаннан кейін нөмірді өзгерту мүмкін емес.

Регистрлер өнімділіктің әмбебап шешімі болғанымен, олардың кемшілігі бар. Компьютерлік бағдарламаның әр түрлі бөліктері өздерінің уақытша мәндерін пайдаланады, сондықтан регистрлерді қолдану үшін бәсекелеседі. Бағдарлама ағынының табиғатын жақсы түсінетіндіктен жұмыс уақыты өте қиын, әзірлеушіге қанша регистрді қолдану керектігін және бағдарламаның басқа бөліктеріне қалдыру үшін алдын-ала білудің оңай жолы жоқ. Жалпы алғанда, бұл пікірлерге мән берілмейді, ал әзірлеушілер және, мүмкін құрастырушылар олар өздеріне көрінетін барлық регистрлерді қолданады, қолдануға тырысады. Регистрлері өте аз процессорлар үшін басталуы керек, бұл сонымен қатар жалғыз ақылға қонымды әрекет.

Іске асыру

Тіркеу терезелері осы мәселені шешуге бағытталған. Бағдарламаның әр бөлігі регистрлерді өзінің қолдануы үшін қалайтындықтан, бағдарламаның әртүрлі бөліктері үшін бірнеше регистрлер жиынтығы ұсынылады. Егер бұл регистрлер көрініп тұрса, бәсекелесуге арналған регистрлер көп болар еді, яғни оларды көрінбейтін етіп жасау керек.

Тізілімдерді көрінбейтін етіп көрсету тиімді жүзеге асырылуы мүмкін; процессор шақыру кезінде орталық процессор бағдарламаның бір бөлігінен екінші бөлігіне қозғалысты таниды. Мұны біреуі орындайды нұсқаулардың аз саны (пролог) және а-ның біреуімен аяқталады ұқсас шағын жиынтық (эпилог). Беркли дизайнында бұл қоңыраулар жаңа регистрлер жиынтығын сол кезде «ауыстыруға» немесе қоңырау аяқталғаннан кейін «өлі» (немесе «қайта пайдалануға болады») деп белгілеуге мәжбүр етеді.

Орталық процессорларда қолдану

Беркли RISC дизайнында бағдарламаларға барлығы 64-тен сегіз регистр ғана көрінеді. Реестрлердің толық жиынтығы ретінде белгілі файлды тіркеу, және а ретінде кез-келген нақты сегіз жиынтығы терезе. Файл сегізге дейін процедуралық қоңырауларға өздерінің регистрлер жиынтығын алуға мүмкіндік береді. Бағдарлама сегіз қоңыраудан ұзын тізбектерді өшірмегенше, регистрлер міндетті түрде болмайды төгілді, яғни негізгі жадқа немесе кэшке сақталады, бұл тіркеуге қол жеткізумен салыстырғанда баяу процесс.

Салыстыру үшін Sun Microsystems СПАРК сәулет бір уақытта сегіз регистрдің төрт жиынтығына көрінуді қамтамасыз етеді. Әрқайсысы сегіз регистрден тұратын үш терезе «терезеде» орналасқан. Сегіз регистр (i0 - i7) кіріс регистрлерін процедураның ағымдағы деңгейіне құрайды. Сегіз регистр (L0-ден L7-ге дейін) ағымдағы процедура деңгейіне локальді болып табылады, ал сегіз регистр (o0-тен o7-ге дейін) ағымдағы процедуралар деңгейінен келесі деңгейге деп аталады. Процедура шақырылған кезде, регистр терезесі ескі кіріс регистрлерін және ескі жергілікті регистрлерді жасырып, ескі шығыс регистрлерін жаңа енгізу регистрлеріне айналдырып, он алты регистрге ауысады. Жалпы регистрлер (ескі шығу регистрлері және жаңа кіріс регистрлері) параметр үшін қолданылады. өту. Сонымен, сегіз регистр (g0-ден g7-ге дейін) бүкіл процедуралар деңгейіне глобалды түрде көрінеді.

AMD 29000 дизайны жақсартылды, бұл терезелердің өлшемдері өзгермелі болуы мүмкін, бұл қоңырау шалу үшін сегіз регистр қажет болған жағдайда қолдануға мүмкіндік береді. Ол сонымен қатар тізілімдерді 64 жиынтыққа, ал терезелер үшін қосымша 128-ге бөлді. Сол сияқты IA-64 (Itanium) архитектурасында айнымалы өлшемді терезелер қолданылған, олардың 32 жаһандық регистрлері және 96 терезелері бар.

Ішінде Infineon C166 архитектурасы, көптеген регистрлер - бұл ішкі оперативті жадыдағы регистрлер сияқты қол жетімділіктің қосымша қасиеттеріне ие орындар. Оның ішінде 16 жалпы мақсаттағы регистрлердің мекен-жайы (R0-R15) тіркелген емес. Оның орнына R0 регистрі «Контексттік сілтеме» (CP) регистрі көрсетілген мекен-жайда орналасқан, ал қалған 15 регистр кейіннен кейіннен жүреді.[1]

Тіркелу терезелері де оңай жаңартудың жолын ұсынады. Қосымша регистрлер бағдарламаларға көрінбейтін болғандықтан, кез-келген уақытта қосымша терезелер қосуға болады. Мысалы, объектіге бағытталған бағдарламалау көбінесе терезелерді сегізден он алтыға дейін көбейту арқылы орналастырылатын «кіші» қоңыраулардың көбейуіне әкеледі. Бұл архитектураның жаңа буындары бар регистрлік терезелерді қамтыған SPARC-де қолданылған тәсіл. Ақырғы нәтиже - баяу тіркелу терезесі төгілу және толтыру операциялар, себебі тіркелу терезелері жиі толып кетеді.

Сын

Тіркеу терезелері тіркелімнің жұмысын жақсартудың жалғыз әдісі емес. Топ Стэнфорд университеті жобалау MIPS Берклидің жұмысын көріп, мәселе регистрлердің жетіспеуі емес, қолданыстағылардың нашар пайдаланылуында деп шешті. Олар орнына өздеріне көбірек уақыт жұмсады құрастырушы Келіңіздер тіркеу бөлу, MIPS-те қол жетімді үлкен жиынтықты ақылмен пайдаланғанына көз жеткізіңіз. Бұл микросхеманың күрделілігінің төмендеуіне әкеліп соқтырды, жалпы регистрлердің жалпы санының жартысы, сонымен бірге бір процедура көрінетін регистр кеңістігін қолдана алатын жағдайларда әлеуетті жоғары өнімділікті ұсынады. Ақыр соңында, заманауи компиляторлармен MIPS өзінің регистрлік кеңістігін процедуралық қоңыраулар кезінде де жақсы пайдаланады.[дәйексөз қажет ]

Әдебиеттер тізімі

  1. ^ «Infineon C166 отбасылық нұсқаулық жиынтығы» (PDF). Кил. Алынған 2020-03-12.