Jenže přírodní zákony obcházíme naprosto běžně. Nemůžeme získat více energie z vazebné energie? Fajn, tak si energii vezmeme ve štěpné reakci. Nemůžeme překonat výrazně rychlost zvuku vrtulovým pohonem? Fajn, obejdeme to proudovým motorem. V historii se mnohokrát stalo, že lidé tvrdili, že něco nejde a podložili to patřičnými fyzikálními zákony. Měli pravdu a přesto se mýlili - vždy se našel někdo, kdo se na problém podíval úplně jinak a zákon nijak neporušil, pouze ho obešel, protože našel úplně jinou cestu, jiný způsob (a pochopitelně se omezil zase jinými zákony, protože u všeho existuje nějaké omezení).Amdahlův zákon není špatný, problém je, že prostě nepostihuje situace, kde není předem změřitelný a tedy spočítatelný rozdíl. Typicky ve chvíli, kdy existuje systém, který se umí učit - typicky to je v tom příkladu na sčítání. Jistě - můžeme tupě sčítat 1+2+3+4+5+...+1000 a budeme přesně znát náročnost. Ovšem v momentě, kdy se systém bude schopen učit, může rychle zjistit, že rychlejší cesta je (1+1000)/500.Že si vymýšlím a fantazíruju? Co takhle on-the-fly kompilace bytecode? Navíc s postupnou optimalizací při opakovaném běhu. To jsou existující techniky. Zatím softwarové, ale jsou zde snahy tyto možnosti převést do hadwaru, např. díky memristorům. Pak už nelze předem jednoznačně říct, jak bude systém rychlý, protože při zvětšení systému (zvýšení počtu jader) může docházet k vyšší specializaci jednotlivých částí.A s tím pak souvisí mnou zmiňovaný běh jednovláknových operací na více jádrech. Nikde jsem tam netvrdil, že poběží najednou, to jste špatně pochopil a tento význam si domyslel. Nikde to tam ale není. Jde o to, že jednotlivé části mohou být POSTUPNĚ spouštěny v různých jádrech podle jejich specializace. Ve výsledku pak úloha poběží mnohem rychleji.A opět to není žádné fantazírování, ale už existující techniky, navíc naprosto samozřejmě používané. Máte za sebou instrukce, kdy potřebujete sečíst INT, následuje pár závislých operací s plovoucí čárkou a výsledek jde zase zpět na INT. Tohle pochopitelně nepočítají stejné obvody, ale prožene se to přes ALU, pak přes FPU a zase zpět do ALU. A teď si představte, že budete mít CPU s tolika jádry, že bude možné pro určité úlohy velmi komplexně specializovat různá jádra natolik, že v jediném rychlém výpočtu provedou tak složité operace, že byste na to dnes potřeboval tisíce taktů. Dnes se takové postupy volí jen pro některé specifické operace (typicky specializované jednotky pro šifrování, kódování videa atd.), problém je, že se to musí předem navrhnout, funkce jsou natvrdo "zadrátované" a i když to jsou specialozované jednotky, přesto jsou stále ještě velmi univerzální. Ovšem ve chvíli, kdy by bylo jader tolik, že by se jimi dalo de facto plýtvat na jednoúčelové jednotky, daly by se to udělat ještě rychlejší. A Amdahlův zákon je v tu chvíli neaplikovatelný a ne proto, že by přestal platit, ale protože neexistují předem předvídatelné konstanty.Zkusím to popsat ještě trochu jinak - přestavte si, že budete mít firmu na výkopové práce. Musíte být schopen udělat jak velké práce, tak i ty nejdrobnější, kde se musí hlídat nepoškození žádného vedení v zemi. Pokud si můžete dovolit jednoho zaměstnance, bude muset umět hlavně dobře pracovat s lopatou, bude muset umět s krumpáčem, možná s bagrem či další technikou. Bude muset být dost univerzální, ale půjde mu to pomalu, bude omezen střídáním nářadí apod.Když budete mít pět lidí, můžete si už dovolit určité specializace (bude tam někdo na těžkou techniku, někdo jen na na práci s lopatou). Přesto pořád tam bude zdržovat, když se musí vyměnit technika apod. Přesto ten malý tým pořád musí být navzájem dost zastupitelný, specializace nemůže být příliš úzká.A teď si představte, že máte tisíc lidí a můžete si vybrat specializovanou techniku. V tu chvíli se vám už nevyplatí držet si moc univerzálních lidí, naopak se vám vyplatí mít připravené velmi úzce specializované lidi, kteří sice umí třeba jen jednu jedinou činnost, za to ji ale umí perfektně a rychle.