Cilj predmeta je študentom računalništva in informatike predstaviti osnovne metode in pristope na področjih računalniške zanesljivosti in zmogljivosti. Obe sta ključni za uspešnost delovanja kakršnegakoli računalniškega sistema. Predmet naj bi študentom podal tako teoretične osnove in metode obeh področij, kot tudi skušal čimbolje predstaviti uporabo teoretičnih osnov in metod na konkretnih problemih načrtovanja in vzdževanja računalniških sistemov.

Študenta želimo naučiti za samostojno uporabo in načrtovanje digitalnih vezij z uporabo načrtovalskega orodja. Pri tem ga opozorimo na specifičnosti le-tega in naučimo upoštevati in izkoriščati le-te rešitve. Uvod v načrtovanje in testiranje digitalnih sistemov; Jeziki za opis strojne opreme (VHDL, Verilog, Abel, …);Tehnologija in pregled programabilnih vezij; Računalniška aritmetika in načrtovanje in sinteza odločitvenih vezij, modulske in dvonivojske realizacije;Načrtovanje sekvenčnih vezij: sinhrona in asinhrona vezja, pomnilne celice, register, registerski niz, števci, splošni končni avtomat, pomnilnik, …);Urin signal: sinteza, distribucija, »clock gating«;Načrtovanje (mikro)procesorja: podatkovne poti, kontrolna enota, vh/izh vmesniki; Modularna gradnja sistemov: sistem na čipu (SOC, System-on-Chip);

Tehnologija izdelovanja polprevodnikov je trčila ob
fizikalne omejitve, ki trenutno preprečujejo večjo miniaturizacijo čipov in z
njo izdelovanje varčnejših in hitrejših procesorjev. V zadnjem času nas zato
mediji dnevno zasipavajo z novicami o novih in novih napravah z večjedrnimi
procesorji ter splošno namenskimi grafičnimi procesnimi enotami na eni strani
in najrazličnejšimi računalniškimi gručami ter storitvami v oblaku na drugi
strani.

To take
full advantage of these devices, it is necessary to know the architecture of
these systems and appropriate software interfaces. During the semester we will
learn how to make multithreaded programs, Open MP programs for multicore
processors, how to exploit general purpose graphics processing units with Open
CL library, MPI library for working with clusters, grid systems and computing
clouds.

We will
learn about the traps of parallel and distributed systems, try to understand them
and find the ways to avoid them. At the end of the course you will be able to select
the most appropriate hardware platform and write an efficient parallel program
for a problem at hand.

Homework
assignments for the course are required and are being assessed. Every week students
get a short assignment, which is linked to the lectures. To get a positive grade
from the homework assignments you need to successfully complete at least 80% of
short assignments. Short assignments represent one-third of the final grade. Second-third
is obtained from parallelization of more comprehensive algorithm on two
different parallel platforms. The last third of the grade is obtained on the
oral exam.