Origin 2100 (rok dodani 2000, 2 GB RAM, 8 CPUs) mame jako hlavni studentsky server, a az letos ho se slzou v oku nahrazujeme za novejsi.
Jinak procesory MIPS maji spoustu zajimavych vlastnosti, o kterych by se dalo mluvit, napriklad:
– nema instrukce pro praci se zasobnikem – proste se jen jeden obecny registr „dohodou“ vyhradi jako ukazatel zasobniku, a instrukce typu PUSH, POP se rozpadaji na LOAD/STORE a inkrement/dekrement toho registru
– CPU muze byt nabootovana v big-endian nebo little-endian rezimu (kdysi existovaly dve binarni verze Linuxu pro MIPS podle endianity).
– CPU neumi delat nezarovnane pristupy do pameti (x86 umi, ale je to pomale a stoji to hodne kremiku), takze treba LOAD dvoubajtoveho cisla z liche adresy vyvola vyjimku (IRIX ji pak reportuje jako SIGBUS).
SGI (a dnes vlastne vsechny NUMA systemy) pouzivaji variantu „cc-NUMA“ (cache-coherent), coz znamena, ze programator se nemusi starat o koherenci pameti v jednotlivych uzlech. Funguje to zhruba tak, ze sice jeden radek cache muze byt na vice NUMA uzlech, ale jen pokud ty uzly jen ctou. Pokud nekdo chce zapisovat, musi se podivat jestli zapisuje nekdo jiny (pokud ne, staci jen vsem ostatnim prislusny radek cache zneplatnit a je mozno zapisovat). Tohle ovsem dela HW, nikoliv programator.
To ze je procesor primo navrhovany pro NUMA systemy se da vyuzit i v dalsich vychytavkach. Treba na x86 se zamky (spinlocky, semafory, …) delaji pomoci atomickych instrukci (LOCK, CMPXCHG, …). Na MIPS je mozne zamek udelat napriklad tak, ze procesor udela obycejny LOAD a STORE, jen potom programator muze testovat, jestli mezi LOAD a STORE nedosel pozadavek na zneplatneni (cili jiny procesor zapisoval). A pak pripadne muze LOAD/STORE sekvenci opakovat. Tohle je pekne, ze to vubec nikde nezamyka sbernici, a na rozdil od x86 se takto na sbernici netlucou libovolne dve „atomicke“ instrukce, ale jen ty, ktere opravdu sahaji na ten stejny zamek.
Kazdopadne ale diky za clanek.
-Yenya, http://www.fi.muni.cz/~kas/blog/

