Кіріспе

RISC нұсқаулар жиынтығы архитектурасы

Fujitsu сонымен қатар SPARC өндірісін тоқтатады (өздерінің ARM негізіндегі процессорларын өндіруге көшкен), 2020–22 жылдары (бұрын 2021 жылға жоспарланған) және 2026–27 жылдары Fujitsu-дің ескі SPARC M12 серверінің екі "жақсартылған" нұсқасын шығарғаннан кейін, UNIX серверлерін сатуды 2029 жылы аяқтайды, ал негізгі жүйелерін сатуды бір жылдан соң, 2030 жылы аяқтайды және 2034 жылы қолдауды тоқтатады, "клиенттердің жаңғыруына көмектесу үшін".

Ерекшеліктері

SPARC архитектурасы бұрынғы RISC жобаларының, соның ішінде Калифорния университетінің (Беркли) RISC I және II, сондай-ақ IBM 801 үлгілерінің күшті ықпалында болды. Бұл бастапқы RISC жобалары ең қарапайым болды, мүмкіндігінше аз мүмкіндіктер мен операциялық кодтарды қамтыды және сағат цикліне шамамен бір нұсқауды орындау мақсатында жасалды. Бұл оларды MIPS архитектурасына көптеген жағынан ұқсас етті, соның ішінде көбейту немесе бөлу сияқты нұсқаулардың жоқтығымен. SPARC архитектурасына осы ерте RISC қозғалысының әсерінен туындаған тағы бір ерекшелік – тармақ кешіктіру ұясы. SPARC процессорында әдетте 160 жалпы мақсаттағы тіркегіш болады. "Oracle SPARC Architecture 2015" спецификациясына сәйкес, "жұмылдану кезінде 72-ден 640-қа дейін 64 биттік жалпы мақсаттағы" тіркегіштер болуы мүмкін. Кез келген уақытта олардың тек 32-сі ғана бағдарламалық қамтамасыз ету үшін тікелей көрінеді – 8-і жаһандық тіркегіштер жиынтығы (олардың бірі, g0, нөлге қатаң түрде бекітілген, сондықтан олардың тек жетісін тіркегіш ретінде пайдалануға болады), ал қалған 24-і – тіркегіштер стегінен. Бұл 24 тіркегіштің жиынтығы "тіркегіш терезесі" деп аталады, ал функцияны шақыру/қайтару кезінде бұл терезе тіркегіш стегінің бойымен жоғары және төмен жылжытылады. Әрбір терезеде сегіз жергілікті тіркегіш бар және әрбір көрші тереземен сегіз тіркегіш ортақ пайдаланылады. Ортақ тіркегіштер функция параметрлерін беру және мәндерді қайтару үшін қолданылады, ал жергілікті тіркегіштер функция шақырулары арасында жергілікті мәндерді сақтау үшін қолданылады. SPARC-тағы "кеңейтілмелі" есім SPARC спецификациясының іске асыруларға кіріктірілген процессорлардан бастап үлкен серверлік процессорларға дейін масштабтауға мүмкіндік беретінінен туындайды, олардың барлығы бірдей негізгі (артық құқықтары жоқ) нұсқаулар жиынтығын пайдаланады. Архитектураның масштабталатын параметрлерінің бірі – іске асырылған тіркегіш терезелерінің саны; спецификация үштен 32 терезеге дейін іске асыруға мүмкіндік береді, сондықтан іске асыру максималды шақыру стегінің тиімділігін қамтамасыз ету үшін барлық 32 терезені іске асыруды немесе жобаның құны мен күрделілігін азайту үшін тек үшті іске асыруды немесе олардың арасындағы бірнеше санды іске асыруды таңдай алады. Intel i960, IA 64 және AMD 29000 сияқты ұқсас тіркегіш файл мүмкіндіктеріне ие басқа архитектуралар да бар. Архитектура бірнеше қайта қараудан өтті. 8-ші нұсқада аппараттық көбейту және бөлу мүмкіндігі қосылды. 1994 жылы жарияланған SPARC спецификациясының 9-шы нұсқасына 64 биттік (адрестеу және деректер) қосылды. "Белгіленген" (tagged) қосу және алу нұсқаулары екі операндтың ең төменгі екі биті 0 екенін тексеріп, егер олар 0 болмаса, үстіне өту туралы хабарлайды. Бұл ML, Lisp және ұқсас тілдердің орындалу уақытын іске асыруда пайдалы болуы мүмкін, олар белгіленген бүтін сандық форматты қолдануы мүмкін. 32 биттік SPARC V8 архитектурасының енділігі (endianness) – тек үлкен енділік (big endian). 64 биттік SPARC V9 архитектурасы үлкен енділік нұсқауларын қолданады, бірақ деректерге үлкен енділік немесе кіші енділік байт ретімен қол жеткізе алады, бұл қолданба нұсқаулары (жүктеу-сақтау) деңгейінде немесе жад беті деңгейінде (MMU параметрлері арқылы) таңдалады. Соңғысы көбінесе PCI шиналарындағы сияқты, табиғи түрде кіші енділік құрылғылардан деректерге қол жеткізу үшін қолданылады.

Жүк және қоймалар

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