Hlavní navigace

Názor k článku Mikroprocesory s architekturou ARM od zimiston - Tahle úvaha předpokládá, že CISC (x86) má nějak...

  • Článek je starý, nové názory již nelze přidávat.
  • 12. 3. 2012 9:03

    zimiston (neregistrovaný) ---.251.broadband13.iol.cz

    Tahle úvaha předpokládá, že CISC (x86) má nějak dobře optimalizované kódování instrukcí. Ve skutečnosti rozdíl mezi RISC a CISC není až zas tak propastný, protože x86 (i x64) má kódování ušité horkou jehlou, kdy protahovali osmibit (8080) do délky. 8086 nebyl pro Intel prioritou, proto dopadnul, jak dopadnul. U x86 na jedné straně zabírají jednobajtové kódy nepoužívané (nebo minimálně používané) nesmysly typu DAA, XLAT, LAHF. CISCy komplexnější instrukce dnes už moc nepoužívají, protože se špatně optimalizují. Podívejte se na tabulku instrukcí u nejnovějších Intelů. Na některé se prostě vykašlali a trvají x taktů. A z x64 jich většinu vyházeli.
    Na druhé straně RISCy mají občas instrukce (např. u ARMu podmíněný součet r1 a r2 s uložením do r3), které na x86 musíte nahradit několika (minimálně třemi v praxi spíš více) instrukcemi.
    A mrkněte se někdy co vám leze z assembleru na x86, když překládáte céčkový kód. Protože má x86 málo registrů, tak je to samý PUSH, POP, čtení, zápis do lokálních tmp proměnných. Tohle všechno je u RISCů silně redukované.
    Navíc má ARM i 16bitové kódování Thumb, které zkracuje délku kódu.
    Navíc moderní x86 procesory do instrukční cache neodkládají x86 kód, ale tzv. microops, což je x86 přeložený do RISCových instrukcí.
    Navíc např. Alpha (délka instrukce 32 bitů) nebo Itanium (41 bitů) vznikaly v době, když se o pomalosti pamětí dávno vědělo, takže tohle konstruktéři zjevně jako problém nevnímali.
    No a taky moc nechápu, proč AMD, když už stvořilo nekompatibilní x64 aspoň trošku nezoptimalizovalo délku instrukcí a dokonce přidalo další prefixy, jednobajtové blbosti typu LAHF zachovalo...