Články v rubrice Kompilery a procesory

Architektura mikrořadičů s jádry ARM Cortex-M4

Pátý článek o mikrořadičích založených na RISCových jádrech s architekturou ARM je věnován popisu řady Cortex-M4(F). Čipy obsahující tato jádra se podobají již dříve popsaným jádrům Cortex-M3, ovšem ve skutečnosti mají mnoho společného i s minule popsanými nejvýkonnějšími mikrořadiči Cortex-M7.

Pavel Tišnovský

19. 1. 2016 0:00

RISCové mikroprocesory s komprimovanými instrukčními sadami (2)

V předchozí části článku o mikroprocesorech s RISCovou architekturou jsme si uvedli důvody, které vedly návrháře RISCových procesorů k zavedení takzvaných „komprimovaných“ instrukcí. Kromě minule popsané sady MIPS16e samozřejmě existují i sady další, především pak RVC (RISC-V „C“).

Pavel Tišnovský

22. 12. 2015 0:00

RISCové mikroprocesory s komprimovanými instrukčními sadami

Při popisu mikroprocesorů s RISCovou architekturou jsme se již zmínili o použití těchto čipů v mikrořadičích či SoC, což je oblast, pro kterou původní RISCy nebyly navrženy. A právě v této oblasti se ukazuje, jak může být výhodné používat instrukční sady s kratšími „komprimovanými“ instrukcemi.

Pavel Tišnovský

15. 12. 2015 0:00

Instrukční sady procesorových jader s otevřenou architekturou RISC-V (dokončení)

Dnes dokončíme popis instrukčních sad rozšiřujících základní 32bitovou instrukční sadu RV32I. Seznámíme se s rozšířením „D“ (operace s čísly double), „Q“ (čísla se čtyřnásobnou přesností), „A“ (atomické operace), 64bitovou instrukční sadou i s rozšířením „C“ (komprimované instrukce).

Pavel Tišnovský

26. 11. 2015 0:00
| 8

Rozšíření instrukční sady procesorových jader s otevřenou architekturou RISC-V

V dnešní části článku o otevřené architektuře RISCových jader RISC-V nejprve dokončíme popis základní instrukční sady nazvané RV32I a posléze se zaměříme na některá důležitá rozšíření této instrukční sady. Bude se jednat například o instrukce pro násobení a dělení a samozřejmě i o instrukce matematického koprocesoru.

Pavel Tišnovský

12. 11. 2015 0:00

Instrukční sada procesorových jader s otevřenou architekturou RISC-V

Navážeme na předchozí článek, v němž jsme se seznámili se základními vlastnosti otevřených RISCových procesorových jader OpenRISC a RISC-V. Popíšeme si instrukční sadu RV32I, která je určena pro 32bitové čipy s jádry RISC-V. Je navržena velmi elegantně a navíc její tvůrci dobře vysvětlují všechna svá rozhodnutí.

Pavel Tišnovský

5. 11. 2015 0:00

Otevřené RISCové architektury OpenRISC a RISC-V

Ve světě open-source hardware (OSH) se již poměrně dlouho rozvíjí dva velmi zajímavé projekty. Jedná se o otevřené RISCové architektury nazvané OpenRISC a RISC-V. Dnes se seznámíme jak s prvním zmíněným projektem používajícím licence GPL a LGPL, tak i s projektem RISC-V, který je mnohem promyšlenější.

Pavel Tišnovský

29. 10. 2015 0:00

Použití mikrořadičů s jádrem Cortex-M na reálných čipech

Na předchozí články, v nichž jsme si popsali základní vlastnosti jader Cortex-M, navážeme článkem dnešním, v němž se budeme věnovat stručnému popisu vlastností některých reálných čipů, které tato jádra obsahují. Začneme samozřejmě těmi čipy, v nichž je použito jádro Cortex-M0 či novější Cortex-M0+.

Pavel Tišnovský

23. 10. 2015 0:00
| 6

Nejvýkonnější MCU aneb architektura mikrořadičů s jádry ARM Cortex-M7

Třetí článek o mikrořadičích s architekturou ARM je věnován nejvýkonnějším jádrům, která jsou v současnosti v této oblasti nabízena. Jedná se o jádra s názvem Cortex-M7. Čipy s těmito jádry se v mnoha ohledech odlišují od již popsaných čipů založených na Cortex-M0, Cortex-M0+ a Cortex-M3.

Pavel Tišnovský

15. 10. 2015 9:30

Architektura mikrořadičů s jádry ARM Cortex-M3

Na článek z předchozího týdne, v němž jsme si popsali nejmenší jádra ARM s názvem Cortex-M0 a Cortex-M0+, navážeme článkem dnešním, který je věnován výkonnějším mikroprocesorovým a mikrořadičovým jádrům. Ta nesou označení Cortex-M3 a nalezneme je například v čipu, který pohání populární Arduino Due.

Pavel Tišnovský

6. 10. 2015 0:00

Architektura mikrořadičů s jádry ARM Cortex-M0 a ARM Cortex-M0+

Přibližně před pěti lety došlo na trhu s mikrořadiči k poměrně významné události: obrat z prodejů 32bitových mikrořadičů přesáhl obrat dosahovaný u mikrořadičů osmibitových (PIC, řada 51, Atmel AVR). Nezanedbatelný podíl zde mají jádra ARM Cortex-M0 a Cortex-M0+, jejichž architekturu si dnes popíšeme.

Pavel Tišnovský

1. 10. 2015 0:00

Interpretry, překladače, JIT překladače a transpřekladače programovacího jazyka Lua

Programovací jazyk Lua je standardně překládán do bajtkódu, který je následně interpretován, podobně jako je tomu u většiny dalších skriptovacích jazyků. Ve skutečnosti však mají vývojáři využívající tento programovací jazyk k dispozici i další možnosti: transpřekladače či JIT překladače.

Pavel Tišnovský

28. 7. 2015 0:00

LuaJIT – Just in Time překladač pro programovací jazyk Lua (12 – překlad operací s reálnými čísly)

V programovacím jazyku Lua jsou základním numerickým datovým typem čísla s plovoucí řádovou čárkou s dvojitou přesností (IEEE 754) známé v dalších jazycích pod názvem double. Pokud se s tímto datovým typem ve zdrojových kódech pracuje, musí LuaJIT při překladu vygenerovat příslušné strojové instrukce.

Pavel Tišnovský

15. 1. 2015 0:00
| 5

LuaJIT – Just in Time překladač pro programovací jazyk Lua (11 – JIT překlad do nativního kódu procesorů s architekturami x86 a ARM)

Třetím krokem JIT překladu prováděného LuaJITem je transformace pseudoinstrukcí do nativního kódu mikroprocesoru, na němž je LuaJIT spuštěn. LuaJIT podporuje překlad s využitím instrukčních sad mikroprocesorů Intel i AMD (32 bit, 64 bit), ARM (prozatím 32 bit), MIPS a PowerPC. Touto problematikou se budeme zabývat dnes.

Pavel Tišnovský

8. 1. 2015 0:00
| 2

LuaJIT – Just in Time překladač pro programovací jazyk Lua (10 – JIT překlad do nativního kódu)

V předchozích dvou článcích jsme se zabývali především způsobem detekce stop (traces) v bajtkódu aplikací naprogramovaných v jazyku Lua. Dnes se budeme zabývat druhým a částečně i třetím krokem, který musí trasovací JIT překladač provést. Jedná se o generování pseudoinstrukcí a následně i vytváření nativního kódu.

Pavel Tišnovský

16. 12. 2014 0:00
| 4

LuaJIT – Just in Time překladač pro programovací jazyk Lua (9 – další vlastnosti trasovacího JITu)

V další části seriálu o překladači LuaJIT budeme pokračovat v popisu funkce trasovacího překladače. Minule jsme si ukázali, jak trasovací překladač dokáže detekovat často používané programové smyčky, dnes se podíváme na způsob detekce větví ve smyčkách a detekci funkcí volaných s velkou frekvencí.

Pavel Tišnovský

11. 12. 2014 0:00
| 4

LuaJIT – Just in Time překladač pro programovací jazyk Lua (8 – základní vlastnosti trasovacího JITu)

V dalším článku o překladači LuaJIT si řekneme základní informace o činnosti trasovacího JITu používaného pro detekci těch částí kódu aplikace, které se budou v runtime překládat do nativního (strojového) kódu. Trasovací JIT tvoří zajímavou a dnes stále populárnější skupinu just-in-time překladačů.

Pavel Tišnovský

2. 12. 2014 0:00
| 3

LuaJIT – Just in Time překladač pro programovací jazyk Lua (7 – dokončení popisu mezijazyka LuaJITu)

V sedmé části článku o Just in Time překladači LuaJIT dokončíme popis mezijazyka, který v LuaJITu plní funkci bajtkódu. Minule jsme se zmínili o způsobu překladu programových smyček, dnes na toto téma navážeme a popíšeme si způsob překladu smyčky for-each a následně pak práci s uzávěry (closures).

Pavel Tišnovský

25. 11. 2014 0:00

LuaJIT – Just in Time překladač pro programovací jazyk Lua (6 – překlad programových smyček do mezijazyka LuaJITu)

V šesté části článku o Just in Time překladači nazvaném LuaJIT si vysvětlíme, jakým způsobem se překládají programové smyčky typu while, repeat-until i smyčky typu for-each používané jak při procházení běžných polí (s prvky adresovanými s využitím indexů), tak i při procházení všemi prvky asociativních polí.

Pavel Tišnovský

18. 11. 2014 0:00

LuaJIT – Just in Time překladač pro programovací jazyk Lua (5 – tabulky a pole)

V páté části článku o Just in Time překladači nazvaném LuaJIT se budeme zabývat způsobem překladu programů pracujících s tabulkami. Ukážeme si způsob tvorby jednorozměrných i dvourozměrných tabulek a taktéž přístup k prvkům tabulek, a to jak s využitím celočíselných indexů, tak i s použitím klíčů.

Pavel Tišnovský

11. 11. 2014 0:00

LuaJIT – Just in Time překladač pro programovací jazyk Lua (4)

Čtvrtá část článku o Just in Time překladači nazvaném LuaJIT bude věnována problematice volání funkcí, předávání parametrů do funkcí a taktéž způsobu vracení hodnoty či většího množství hodnot z volaných funkcí. Seznámíme se i s dalšími instrukcemi mezijazyka využívaného LuaJITem.

Pavel Tišnovský

4. 11. 2014 0:00

LuaJIT – Just in Time překladač pro programovací jazyk Lua (3)

Ve třetím článku o Just in Time překladači LuaJIT si popíšeme všechny instrukce mezijazyka (IR) implementující podmínky a relační operátory. Jedná se o rozšíření tématu, kterému jsme se věnovali minule, dnes se však budeme zabývat mj. i porovnáním obsahu proměnných s řetězci či se speciálními hodnotami true, false a nil.

Pavel Tišnovský

28. 10. 2014 0:00
| 4

LuaJIT – Just in Time překladač pro programovací jazyk Lua (2)

Ve druhé části článku o Just in Time překladači LuaJIT si popíšeme způsob překladu aritmetických výrazů do mezijazyka LuaJITu. Kromě toho se taktéž budeme zabývat instrukcemi IR, které slouží pro implementaci podmínek a skoků. Tyto instrukce jsou použity jak při větvení, tak i při překladu programových smyček.

Pavel Tišnovský

21. 10. 2014 0:00
| 4

LuaJIT – Just in Time překladač pro programovací jazyk Lua

Pro doplnění informací, které jsme si doposud v seriálu o jazyce Java (JVM) uvedli, si v několika článcích popíšeme velmi zajímavý projekt LuaJIT. Již z názvu tohoto projektu je zřejmé, že se jedná o „konkurenční “Just in Time překladač, který je možné použít společně s programovacím jazykem Lua.

Pavel Tišnovský

14. 10. 2014 0:00

Distcc: kompilujte distribuovaně a rychle

Sestavování binárních souborů ze zdrojových kódů může být někdy zdlouhavé. Dnes si představíme nástroj, pomocí kterého lze kompilaci paralelně zpracovávat na více počítačích a tím ušetřit spoustu času. To se může hodit nejen vývojářům, ale i uživatelům distribucí, které nepoužívají binární balíčky.

Ondřej Caletka

24. 1. 2013 0:00

Jednotky pro správu paměti (MMU) na mikroprocesorech ARM

Dnes se budeme zabývat popisem jednotek pro správu paměti (Memory Management Unit – MMU) implementovaných na některých mikroprocesorech s architekturou ARM. MMU je samozřejmě důležitou součástí těchto procesorů, protože zajišťuje ochranu paměti i využití virtuálního adresního prostoru.

Pavel Tišnovský

22. 5. 2012 0:00
| 2

Podpora instrukcí typu SIMD na mikroprocesorech ARM

V dnešní části seriálu o architekturách počítačů se budeme opět zabývat popisem mikroprocesorů patřících do rodiny ARM. Zaměříme se na popis SIMD instrukcí, které sice původně nebyly součástí mikroprocesorů ARM, ale postupně začaly být implementovány jako volitelná rozšíření do některých mikroprocesorových jader.

Pavel Tišnovský

15. 5. 2012 0:00
| 6

Mikroprocesory ARM a architektura VFP (Vector Floating Point)

V dnešní části seriálu o architekturách počítačů se již podruhé budeme zabývat způsobem zpracování numerických hodnot s plovoucí řádovou čárkou na mikroprocesorech ARM. Minule jsme si popsali technologii FPA (Floating Point Accelerator), dnes se zaměříme na alternativní technologii VFP (Vector Floating Point).

Pavel Tišnovský

24. 4. 2012 0:00
| 4

Práce s hodnotami s plovoucí řádovou čárkou na mikroprocesorech ARM

V seriálu o architekturách počítačů jsme se již seznámili se všemi třemi instrukčními sadami mikroprocesorů ARM – jak s původní RISCovou sadou, tak i se sadou Thumb a Thumb-2. Ještě jsme si však prakticky nic neřekli o podpoře práce s hodnotami s plovoucí řádovou čárkou. Nyní nastal pravý čas tuto informaci doplnit.

Pavel Tišnovský

17. 4. 2012 0:00
| 5

Instrukční sada Thumb-2 u mikroprocesorů ARM

Dnes si popíšeme další alternativní instrukční sadu, kterou jsou vybaveny novější modely mikroprocesorů ARM. Jedná se o instrukční sadu pojmenovanou Thumb-2, která byla navržena takovým způsobem, aby co nejlépe spojila přednosti původní RISCové 32bitové instrukční sady a 16bitové sady Thumb.

Pavel Tišnovský

10. 4. 2012 0:00
| 8
120na80.cz: Chtějí být jako Ken a Barbie. Končí jako trosky

Chtějí být jako Ken a Barbie. Končí jako trosky

120na80.cz: Kvalitní spánek bez chemie? Jde to

Kvalitní spánek bez chemie? Jde to

Vitalia.cz: Očkování a autismus ve světle vědeckého objevu

Očkování a autismus ve světle vědeckého objevu

120na80.cz: Nové trendy v zubních pastách

Nové trendy v zubních pastách

Lupa.cz: Jaký je Průvodce světem Arduina?

Jaký je Průvodce světem Arduina?

Lupa.cz: Jak na internetu sehnat poctivého řemeslníka?

Jak na internetu sehnat poctivého řemeslníka?

Vitalia.cz: Tyhle dorty se prostě nepovedly

Tyhle dorty se prostě nepovedly

Podnikatel.cz: Ve hře jsou další výjimky u EET

Ve hře jsou další výjimky u EET

Lupa.cz: Proč ve vlaku není signál? A který vagón je nejhorší?

Proč ve vlaku není signál? A který vagón je nejhorší?

Vitalia.cz: Farmářské trhy na Kulaťáku - už 250x

Farmářské trhy na Kulaťáku - už 250x

Podnikatel.cz: Cizinci v českém eshopu nechají miliardy

Cizinci v českém eshopu nechají miliardy

Podnikatel.cz: Google PageRank nadobro zmizel

Google PageRank nadobro zmizel

Podnikatel.cz: Stahujte přehledy pro všechny pojišťovny

Stahujte přehledy pro všechny pojišťovny

Vitalia.cz: Tyhle cupcaky je hřích sníst

Tyhle cupcaky je hřích sníst

Lupa.cz: Online budoucnost je v neviditelných platbách

Online budoucnost je v neviditelných platbách

Vitalia.cz: Takhle ne! Nesnažte se urychlit vývoj dítěte

Takhle ne! Nesnažte se urychlit vývoj dítěte

Lupa.cz: Pokus o český PayPal nevyšel. PaySec končí

Pokus o český PayPal nevyšel. PaySec končí

Podnikatel.cz: Kašlali na předpisy, byznys jim zavřeli

Kašlali na předpisy, byznys jim zavřeli

Podnikatel.cz: Marodí méně, ale když už, tak skoro 40 dnů

Marodí méně, ale když už, tak skoro 40 dnů

120na80.cz: Akce na podporu lidí s hemofilií

Akce na podporu lidí s hemofilií

Ušetřete