Hlavní navigace

Názor k článku
Pohled programátora na mikroprocesory ARM

Pavel Lang aura:56
13. 3. 2012 4:11 Nový

Re: poznámky

celé vlákno

Nechci být "první", ale... load store architektura je pro překladače transparentnější, tudíš efektivnější - a to platí i o "čtverečných metrech" (přímá implikace), to platí i o taktování, není třeba mnhoha taktů pro zpracování komlexní instrukce, ale o poznání méně taktů v RISC architekruře. Bez HW "tweaků" kolik cyklů trvá zpracování instrukce v CISC architekruře?

PC ať je to registr speciální nebo jen "obyčený", stejně je to paměťový prostor přímý (hardwarowě) k CPU (tím myslím přžímo těch pár křemíkových hradel), u RISC architektury (ARM, AVR nebo komplexnější) je to stejně pár čárek; u CISC to tak přímé nikdy být nemůže..

Háčky, jak lze přistupovat k registrům se dělaly kvůli kompatibilitě "odjakživa", tvrdit, že to jde automaticky lépe lze, ale není to pravda, stojí to sice méně než mikrosekundu, ale musí se to tak dělat.

load/store architektura, zejména AVR, která má jakýsi "barrel shifter" přímo v jádru instrukce, není schopná uchovat všechny konstanty v jádru programu, což se z hlediska vyšších programovacích jazyků může zdát neuspokojivé. Z hlediska často používaných algoritmů je to však v pořádku :-)

Jakýkoliv překladač nemá problém překládat volání externích procedur/metod/pod­programů, existuje několik různých techik jak zavolat vzdálený kód, proto se ostatně začalo v minulosti mluvit o swapu...

Strojová opimalizace kódu pro CISC architektury je mnohem optížnější (matematicky prokazatelně), stačí si jen uvědomit fakt, že existuje několik instrukcí v sekvenci, které vyřesí daný problém; je možné sai celý problém kvantifikovat do množství operací, které musejí hradla v obvodu provést, aby se vyřešila instrukce, to je sice optížnější na představivost, ale jako model pro výuku použitelnější a dnešní "grafiky" do dokážou znázornit, pokud si dají (učitelé|lekto­ři|pedagogové|pro­fesoři a kantoři) práci :-)

Optimalizace "nevhoné" konstanty spočívá právě v načtení datového prostoru z jiného "datového" (paměťového) prostoru, tudíž ta instrukce není o nic delší datově, ale je třeba adresace a trvá déle. Nicméně je to pořád zanedbatelná obstrukce vůči translaci některých komplexních instrukcí u CISC architektur.

Ano, překladač je nucen "překládat" nikdo nechtěl po strojovém kódu zpětnou přeložitelnost, to je jen implikace naivního výkladu opkódů CISC architektur. Sám jsem si pár programů v assembleru napsal, používal jsem návěští na adresy (jmp), ale stejně po dekompilaci jsem se v tom nevyznal. Děrné štítky jsem nepoznal, ale kdo by je dneska chtěl číst??

ARM neřeší problémy kodéra, ale "křemíku" a to kompromisní formou.