Vlákno názorů k článku Navrhujeme a vyrábíme vlastní CPU: architektura instrukční sady od kvr kvr - 16 registrů je užitečných, ale není zbytečné použít...

  • Článek je starý, nové názory již nelze přidávat.
  • 18. 3. 2025 0:29

    kvr kvr

    16 registrů je užitečných, ale není zbytečné použít 3 z nich na velmi speciální operace? Nebylo by lepší PC, FLAGS a IA přesunout spíš do kategorie CSR? PC je tedy trochu na hraně, bo procesory pak mají speciální instrukce na load-pc-relative, takže chápu trochu redukci instrukcí, ale ty FLAGS a IA mi smysl nedávají.

    V každém případě jednoduchý a docela efektivní návrh.

  • 18. 3. 2025 1:12

    Martin Beran

    Nebylo by lepší PC, FLAGS a IA přesunout spíš do kategorie CSR?

    CSR umí jen operace přečtení nebo uložení hodnoty. V dalších pokračováních tohoto seriálu bude vidět, že pro PC a FLAGS se hodí mít i další operace: exchange (výměna hodnot dvou registrů), load/store (čtení/zápis hodnot v paměti), aritmetické a bitové operace.

    S IA máte pravdu. Až poměrně pozdě jsem přišel na to, jak přesně se bude tento registr používat, a už se mi nechtělo měnit návrh.

  • 18. 3. 2025 2:07

    RDa

    Ja tam popravde cekal i "constant 0" a "constant 1" registry.

    Pokud bych navrhoval v dnesni dobe procesor, tak bych sel taky touto cestou - ze mit sadu registru, ze kterych nektere maji specialnim chovani, nebo tvori aliasy na ruzne HW ficury (napr. v pripade velikeho cpu meshe bych na 4 registry aliasoval fifa na svetove strany).

    Ona pak ta ortogonalita instrukci sady a kodovani instrukci, potazmo nasledna tvorba kompilatoru a optimalizaci odvdeci nasobne vice, a vykon je pak lepsi nez v pripade MMIO, hlavne u riscu kde nejsou tak bohate adresni rezimy jako u cisc.

    Takze klasicky pripad: neni vhodne setrit na nespravnem miste.

    Optimalizace ve smeru ktery navrhujete se hodi az pri opravdu pidi mikrokontrolerech, kde chcete usetrit kazdy LE a celkove zahustit a koncentrovat design.. rekneme ze pro 8-bit mcu ktere je mensi nez autoruv procesor by to smysl davalo.

  • 18. 3. 2025 8:56

    Martin Beran

    Ja tam popravde cekal i "constant 0" a "constant 1" registry.

    Nad registrem "constant 0" jsem přemýšlel, ale při návrhu ISA mi nebylo moc jasné, k čemu by se používal, a následně při programování jsem neměl pocit, že bych ho potřeboval. Registr "constant 1" mi připadá možná ještě méně užitečný. Chápu, že se hodí registr 0 např. v RISC-V, kde má každá instrukce dva zdrojové a jeden cílový registr a navíc ještě konstantu. Ale u mých dvouregistrových instrukcí mi to moc smysl nedává.