OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 27.04.2024, 08:11

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 33 ]  Přejít na stránku Předchozí  1, 2, 3
Autor Zpráva
 Předmět příspěvku: Re: SGI Indigo až Fuel
PříspěvekNapsal: 03.02.2024, 22:13 
Offline
Kecálek

Registrován: 16.09.2022, 16:24
Příspěvky: 204
Has thanked: 8 times
Been thanked: 36 times
Venoval jsem chvili casu disassemblingu Boot PROMky, a je to zajimave. Je tam pomerne dlouha cast hned po startu, ktera inicializuje zakladni periferie, testuje "data path" (zda obvody na desce alespon nejak odpovidaji, testuje se napr. zapisem do vice registru nejakeho obvodu a pak zpetnym ctenim), nebo inicializuje a zjistuje velikost RAMky. Zadny z tohohle kodu (ktery je opravdu kilometrovy) nepotrebuje ke sve fci nic krome registru procesoru, hodnoty ktere se nevchazely si ten POST uklada do floating point registru. Tohle jsem jeste nikde nevidel, zatim kazda bootrom vyzadovala alespon funkcni kousek nejake RAMky.

Dalsi zajimavost je, ze DMA controller v memory controlleru se pouziva na clear pameti. Pro emulaci tohle musi byt peklo, protoze oni dokonce nejprve testuji, zda se DMA rozebehlo:

Kód:
ROM:1FC012B0 3C 04 BF A0 34 84 20 4C                 li      $a0, 0xBFA0204C  # DMA_RUN
ROM:1FC012B8 8C 85 00 00                             lw      $a1, 0($a0)
ROM:1FC012BC 30 A6 00 40                             andi    $a2, $a1, 0x40
ROM:1FC012C0 10 C0 00 3F                             beqz    $a2, mc_vdma_failtostart
ROM:1FC012C4 00 00 00 00                             nop
ROM:1FC012C8
ROM:1FC012C8                         wait_for_vdma_to_finish:               
ROM:1FC012C8 8C 85 00 00                             lw      $a1, 0($a0)
ROM:1FC012CC 30 A6 00 40                             andi    $a2, $a1, 0x40
ROM:1FC012D0 14 C0 FF FD                             bnez    $a2, wait_for_vdma_to_finish
ROM:1FC012D4 00 00 00 00                             nop


(emulace v MAME spousti DMA na timer, coz mi prijde jako strelit se do nohy ...)

Nez se rozjede grafika, je tam nejaky seriovy port, na ktery to sype vzdy textove kde co selhalo. Pouzivaji tam na seriak Zilog 85230, ktery je zrejme jako IP blok nekolikrat pouzit v jejich IOC2. Cele tohle bezi bez jedineho bajtu potrebne RAM.


PS: Uplne si nejsem jist jestli takovehle veci tady nekoho zajimaji. A to obecne, i treba s tou mapou CSSR pocitacu a operacnich systemu (nemusim tady spamovat, mam na mailu par vytrvalych pomocniku).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SGI Indigo až Fuel
PříspěvekNapsal: 03.02.2024, 23:39 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1524
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 386 times
Za mne - rád si přečtu, ne vždy je čas reagovat (a známe to - kdo nezareaguje hned a nechá to na později, nemisí se k tomu už vrátit…).
Je to toiž opravdu zajímavé.
Tichá většina to hádám má stejně.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SGI Indigo až Fuel
PříspěvekNapsal: 04.02.2024, 14:12 
Offline
Kecálek

Registrován: 16.09.2022, 16:24
Příspěvky: 204
Has thanked: 8 times
Been thanked: 36 times
No jenom abyste nebyli ta "ticha vetsina" nakonec dva ;).

Par dalsich zajimavosti:

- V ARCS firmware (ta boot ROM, https://en.wikipedia.org/wiki/ARCS_(computing) ) vidim znamky moznosti prepnuti z BIG endian na Little endian. AFAIK nebyl zadny obecny system krome Windows NT, ktery by mipsel pouzival, takze mozna byl nejaky plan tam mit moznost behat WinNT ? Jen spekuluji. Muze jit taky o nejaky historicky relikt spoluprace RISC vendori & MS.

- Zajimavosti taky je, ze ARCS firmware se nejak propsal do x86 NTLOADERu (non-UEFI), napr. tam jsou podobne cesty - v SGI Indy ARCS se najdou retezce jako "scsi(%d)disk(%d)part(%d)". Mozna tohle Microsoft z nejakeho duvodu chtel pouzit i na PC, nakonec tu mame UEFI

- ARCS z 90. let exposuje sluzby pro kernel podobne jako UEFI - na nejake adrese je struktura, ze ktere se daji vytahnout pointery na fce typu print, open, atd. Akorat to neni "extensible".

- Prestoze SGI Indy BootROM je 32bitova, procesor R4600 je 64bitovy. Doplneni 64bit instrukci do 32bit ISA je tak jen o pridani par dalsich opkodu, na load/store 64bit hodnot a pak vypocty nad 64bit (SPARC tohle ma jestli se nepletu bez rozdilu, je jedno kolikabitove cislo scitam). Tohle mi napr. proti x86 prijde nadherne ciste reseni.

- MIPS mi prijde tez zajimavy primitivnim memory managementem (TLB), kde je jen par radek TLB, kdyz dojde k "miss"-u, je vyvolana exception, ktera musi TLB naplnit spravnou radkou. Tohle mely i nejake PowerPC. A MIPS ma take branch delay, tzn. kdyz dam instrukci skoku (call,jmp), tak se provede jeste nasledujici instrukce aby se neplytvalo pipeline (to jsou ty nopy za skoky v kodu v mem predchozim postu). Oboji je samozrejme slepa ulicka, ale zajimavy zpusob jak s minimem gates vytriskat maximum vykonu.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 33 ]  Přejít na stránku Předchozí  1, 2, 3

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 26 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz