proč není podmíněné přesunutí zranitelné pro selhání branch prediction?
<p>po přečtení <a href="https://stackoverflow.com/a/11227902/155137">tento příspěvek (odpověď na stackoverflow)</a> (v sekci optimalizace) jsem přemýšlel, proč podmíněné pohyby nejsou zranitelné pro selhání branch prediction. našel jsem na <a href="https://www.cs.tufts.edu/comp/40-2011f/readings/amd-cmovcc.pdf">článek o cond se pohybuje zde (pdf amd)</a> . také tam, oni prohlašují výkonnostní výhodu cond. se pohybuje. ale proč je to? nevidím to. v okamžiku vyhodnocení instrukce asm ještě není znám výsledek předchozí instrukce cmp.</p><p>dík.</p>
<h2>odlišné předpovědi jsou drahé</h2><p>moderní procesor obecně vykonává mezi jedním a třemi instrukcemi každý cyklus, pokud věci jdou dobře (pokud to nezastaví čekání na datové závislosti pro tyto instrukce přijít z předchozích pokynů nebo z paměti).</p><p>výše uvedené tvrzení je překvapivě dobré pro těsné smyčky, ale to by vás nemělo zaslepit na jednu další závislost, která může zabránit provedení instrukce při jejím cyklu: pro provedení instrukce, procesor musí mít začal ji načítat a dekódovat 15-20 cyklů dříve.</p><p>co by měl procesor dělat, když narazí na pobočku? načítání a dekódování obou cílů se nemění (pokud následuje více větví, exponenciální počet cest by musel být vyvolán paralelně). procesor tedy pouze vyvolá a dekóduje jednu ze dvou větví spekulativně.</p><p>to je důvod, proč chybně předvídané větve jsou drahé: stojí 15-20 cyklů, které jsou obvykle neviditelné díky efektivnímu instrukčnímu potrubí.</p><h2>podmíněný pohyb není nikdy příliš drahý</h2><p>podmíněný pohyb nevyžaduje předpověď, takže tento trest nikdy nemůže mít. má závislost na údajích, stejně jako běžné pokyny. podmíněný pohyb má ve skutečnosti více závislostí na datech než běžné instrukce, protože datové závislosti zahrnují případy „podmínka true&ldquo; a „podmínka false&ldquo;. po instrukci, která podmíněně přesune <code>r1</code> do <code>r2</code>, se zdá, že obsah <code>r2</code> závisí na předchozí hodnotě <code>r2</code> a na <code>r1</code>. dobře předvídaná podmíněná větev umožňuje procesoru odvodit přesnější závislosti. závislosti na údajích však obvykle trvají jeden až dva cykly, pokud potřebují čas na to, aby dorazily vůbec.</p><p>všimněte si, že podmíněný přesun z paměti do registru by byl někdy nebezpečnou sázkou: pokud je podmínka taková, že hodnota načtená z paměti není přiřazena registru, čekali jste na paměť nic. instrukce podmíněného pohybu nabízené v sadách instrukcí se však zpravidla registrují, aby zabránily této chybě na straně programátora.</p>
SSD nema zadne mechanicke pohyblive casti, takze mu nevadi pohyb, otresy ani ze se na nej bude prasit.Jde jen o to, aby nebyl umisteny tak nestastne, aby o nej nejkdo zakopl a vytrhal ti draty z bedny.Kazdopadne je to ale prasecina, aby hardware cumel ven z bedny. Dnes je přetaktování procesorů o dost snadnější i v jistých mezích bezpečnější jak v minulosti. Ale rizika jsou i dnes. Paušálně nelze říct o kolik konkrétní typ CPU je schpný snést přetaktování. Procesory nejsou absolutně stejné, a kvalitativně se můžou lišit dle výrobní šarže. Nebudu rozepisovat proč tomu tak je a jak se ve výrobě testují a vybírají procesory pro provoz určitého taktu. Ale je běžné že máš dva stejné procesory vedle sebe a jeden zvládne třeba 4.8 Ghz ale druhý nedá víc jak 4.5Ghz. Při taktování v domácích podmínkách se nejčastěji postupuje po krocích. Přetaktuješ třeba o 100 Mhz a testuješ procesor stress testem kvůli stabilitě. A zastavíš se v momentě kdy to začne být nestabilní, v ten moment se vrátiš o jeden či dva kroky zpět a mělo být to být v pořádku. Pokud je dostatečně kvalitně řešené chlazení nemělo by se stát že by odešel teplem dřív než zareaguje vnitřní tepelná ochrana. Větší rizika jsou spíš při zvedání pracovního napětí procesoru, ale o trochu jde přetaktovat praktickykaždý procesor. Je možné že budeš mít dobrý kus a půjde taktovat snadno na větší frekvence, je to o náhodě jak kvalitní kus křemíku máš doma. Riziko je tam ale vždy, a proto je dobré zvážit jestli případný přínos vyváží případné rizika. No jestli si můj CPU myslí, že se bude, za ty prachy co sem do něj vrazil, loudat, tak to má smůlu hošík. Pěkně počítat bude. Jen doufám, že to bude k něčemu dobré, protože ač tyhle systémy už fungují dlouho, ještě jsem neslyšel, že by jejich výsledky něco zásadního vyřešily. Možná je ještě moc brzo. Rozhodně ale mi tenhle ajc výpočet přijde užitečnější, než hledat nějaké MZáky. Jen si všiml na tuto otázku.


To je jeden z použití Nans že IEEE 754 Výbor má na mysli (byl jsem členem výboru). Pravidla pro šíření pro Nans v aritmetice, aby to velmi atraktivní, protože pokud máte výsledek z dlouhé posloupnosti výpočtů, které se týkají některé inicializovaná data nebude splést výsledek za platný výsledek. To může také zpětné vysledování prostřednictvím vašich výpočtů zjistit, kde používáte inicializační údaje mnohem přímočařejší.


To znamená, že existuje několik úskalí, které jsou mimo kontrolu 754 výboru: jak si všimli jiní, ne všichni hardware podporuje hodnoty rychlostí, což může mít za následek nebezpečí výkonu NaN. Naštěstí se člověk nemusí často mnoho operací na inicializovaných dat v prostředí výkonu kritických. Jediným důvodem, proč jsem nechtěl používat `ThreadPool`levnou multithreading je, když potřebuji ...


1. interract s metodou chodu (např zabít to)
2. spustit kód na [podproces STA](http://msdn.microsoft.com/en-us/library/system.stathreadattribute.aspx "Single-Threaded Apartment nit;  viz např tohoto referenčního stránce MSDN STAThreadAttribute") (to se mi stalo)
3. udržet nit živý po mé žádosti zemřel ( `ThreadPool`závity jsou na pozadí nitě)
4. v případě, že musím změnit prioritu závitu. Nemůžeme měnit prioritu nití ThreadPool která je ve výchozím nastavení Normal.



> 
> **PS:** Tento článek MSDN [*„Managed Thread Pool“*](http://msdn.microsoft.com/en-us/library/0ka9477y.aspx "Managed Thread Pool (stránky na webu MSDN)") obsahuje oddíl s názvem *„Kdy nepoužít Thread Pool příze“* , s velmi podobným, ale o něco více kompletní seznam možných důvodů nepoužívá vlákno bazén.
> 
> 
> 


Existuje spousta důvodů, proč byste museli přeskočit `ThreadPool`, ale pokud je neznáte, pak `ThreadPool`by mělo být dost dobré i pro vás.


Alternativně, podívejte se na nový [rámec Paralelní rozšíření](http://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba) , která má nějaké úhledné věci tam, které mohou vyhovovat vašim potřebám, aniž by museli používat `ThreadPool`. Pro programování potřebujete 16vláken na procesoru?Jinak klidně asi může být, ale pro to CPU bych rozhodně použil nějaký alternativní chladič. A paměti bych dával rozhodně nízké (menší riziko kolize při osazení většího vzduchového chlazení.A co se SSD týče... Na sekvenční čtení a zápis bych zvysoka kašlal. Není to reprezentativní využití disku. Ano ta ADATA má lepší řadič a je TLC, ale pro normální použití se opravdu nejvíce vyplatí ti dva druzí. Oni totiž v běžném nasazení nejsou o moc pomalejší:Mrkněte tady, pokud umíte anglicky:[https://www.youtube.com/watch](https://www.youtube.com/watch?v=GlGjd1GZWdo)A2000 je MLC a má garantováno více přepisů, 660P je QLC s méně přepisy. Papírově je tedy A2000 o něco lepší než 660p. Je to ale jedno. Důležité je, že mají oba ty disky záruku 5let. Předpokládám, že neplánujete nějaká brutální přepisování dat po celém disku, to by jste nevybíral v této kategorii. Horsi cpu a lepsi gpu, ale to AMD so jsi vybral je myslím slušný, přeci jen, v dnešní době je procesorový výkon dlouho dostačující, to hlavní se udává na poli grafických karet. Tak samozřejmě může mít vadná prodlužka negativní vliv na funkčnost nebo elektrickou bezpečnost PC. Ale rozhodně se to nebude projevovat vyšší teplotou GPU. Ahoj taktovaní nepomůže u AMD fx 6300 když ho přetaktuješ tak herně nezískáš nic, to taktování je spíš na programy a práci,,opakuji herní výkon nezvedne ani o 1%a taktování gtx 660 2GB ? zbytečnost,,a ano HW požadavky to +- splňuje, ale počítej 30-40 fps,, Pokud ten problém není způsoben neaktuálními drivery chipsetu desky (řízení sběrnic) nebo grafiky (neodinstalování původních driverů), tak možné to je. Pokud procesor nedokáže GK předpočítat fyziku, může to jiné - výkonnější - grafice vadit víc než méně výkonné.