Hlavní navigace

Názor k článku Instrukční sada procesorových jader s otevřenou architekturou RISC-V od Pavel Píša - V mnoha případech je potřeba dále zachovat i...

  • Článek je starý, nové názory již nelze přidávat.
  • 5. 11. 2015 17:40

    Pavel Píša (neregistrovaný)

    V mnoha případech je potřeba dále zachovat i obě vstupní hodnoty. Zkusím z hlavy například na klasické binární vyhledávání), key x18 (a0), array start x19 (a1), array size x20 (a2), návrat index x16 (v0), a uvidíme jak to vyjde (za chyby neručím, nekompiloval jsem to)

    add x21, x0, x0 /* spodní limit */
    loop:
    beq x20, x21, not_found
    add x16, x21, x20
    srli x16, x16, 1 /* 1. 2op */
    slli x22, x16, 2
    add x22, x22, a1 /* 2. 2op */
    lw x22, x22, 0
    beq x18, x22, found
    blt x18, x22, smaller
    add x20, x16, x0 /* 3. 2op */
    jal x0, loop
    smaller:
    add x21, x16, x0 /* 4. 2op */
    jal x0, loop
    not_found:
    add x16, x9, -1
    found:
    jalr x0, x1

    Tak zrovna tady je to tak půl na půl. Na druhou stranu přidání více instrukcí v případě dvouoperandového kódování povede na více souběžné řešení více závislostí a více problémů s přejmenováváním registrů a jejich plánování v superskalární implementaci, takže to buď výkon zpomalí nebo bude vyžadovat složitější HW.

    Jinak si lze RISC-V také spustit v JavaScriptu

    http://riscv.org/angel/

    ale na rozdíl od jor1k se zdá, že přímo na webu není k dispozici image s GCC ani možnost si do běžícího simulátoru něco nahrát.