NSWI120 Principy počítačů (ZS 2018/2019)

Informace o předmětu

Semestrzimní 2018/2019
PřednášejícíPavel Ježek
Informace v SISuSIS/Předměty/NSWI120
Rozvrh Po 12:20 + St 15:40 v S9 (1. paralelka)
Po 15:40 + Čt 10:40 v S9 (2. paralelka)
Čt 15:40 + Út 9:00 v S9 (3. paralelka v anglickém jazyce)

Detailní rozpis jednotlivých přednášek (PDF)
(aktualizováno 3.12.2018: 15.+16. hodina po/st paralelky + 19.11.2018: 12.+13. hodina po/st paralelky) (2018.12.13: updated schedule of 17th lecture + 2018.11.08: updated schedule of 11th and further lectures of the English class)

Náplň přednášek

(Popis rozdělení látky a příkladů do jednotlivých přednášek odpovídá tomu, jak byly probrány ve čtvrtečně-páteční, tj. 2. paralelce = paralelka, ve které je pořizován video záznam. Ve všech ostatních paralelkách bude vždy probrána stejná látka, pouze občas o přednášku dříve nebo o přednášku později než v referenční čtvrtečně-páteční paralelce.)
  • 1. přednáška (1. paralelka: 1.10.2018 [po] & 2. paralelka: 4.10.2018 [čt] & 3. paralelka: 4.10.2018 [čt])
    Stručný obsah:
    Představení předmětu ♦ Harvardská architektura počítače → koncept CPU, datové a programové paměti, periferních zařízení • Charles Babbage a Analytical Engine (1837) → Ada Lovelace → interpretace informace (dat) jako sekvence čísel ♦ přenos čísel: analogový vs. digitální přenos → sériová digitální linka • bit (b) • třístavová logika a floating stav a možnost jeho detekce • diferenciální přenos ♦ typické mocniny dvojky ♦ přenos dat po sériové lince → bit order • přenosová rychlost • idle stav → start condition → stop condition • přenos dat po RS-232 • simplex vs. half-duplex vs. full-duplex • byte/bajt (B) • efektivita přenosu a reálná přenosová rychlost ♦ hodinový signál
    Materiály:
    • http://www.falstad.com/circuit/ - Circuits Simulator Applet, on-line verze simulátoru elektrických obvodů, offline verze v Javě http://www.falstad.com/circuit-java/ (lokální kopie 01-circuits.zip včetně příkladu [viz níže] - lze otevřít přes File→Import a vybrat nswi120_DetectingFloatingState.txt v adresáři circuits)
    • nswi120_DetectingFloatingState.txt - ukázkový elektrický obvod pro přenos binární informace (0 nebo 1) po datovém vodiči pro výše uvedený simulátor • v obvodu je zapojení je společnou zemí (GND) a napájením (Vcc), které pomocí dvou vysokoohmových odporů umožňuje detekovat i třetí stav datového vodiče = floatig state = odpojení vysílače
    • nswi120_TwoTransmittersWrong.txt - ukázkový elektrický obvod s nesprávným zapojením dvou vysílačů a dvou přijímačů
    • Self Assessment Úlohy k této přednášce:
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 2. přednáška - 11. přednáška (WORK IN PROGRESS)
    Stručný obsah:
    Materiály:
    • 02-11-MaterialyNetridene.zip - materialy a příklady ze 2. až 11. přednášky (pozor - čísla příkladů neodpovídají přesně přednáškám, kde byly prezentované). Obsahuje také bonusové příklady označené -XX-, ke kterým bude i bonusové video. Příklad 07-MemoryAccessViaPointers2017 byl pouze v 1. paralelce, ve video paralelce byly prezentovány stejné koncepty na novějších příkladech.

  • 2. přednáška
    Stručný obsah:
    Materiály:
    • Případné příklady a slidy k této přednášce zatím najdete výše v archivu materiálů pro 2 až 11 přednášku.
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 3. přednáška
    Stručný obsah:
    Materiály:
    • Případné příklady a slidy k této přednášce zatím najdete výše v archivu materiálů pro 2 až 11 přednášku.
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 4. přednáška
    Stručný obsah:
    Materiály:
    • Případné příklady a slidy k této přednášce zatím najdete výše v archivu materiálů pro 2 až 11 přednášku.
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 5. přednáška
    Stručný obsah:
    Materiály:
    • Případné příklady a slidy k této přednášce zatím najdete výše v archivu materiálů pro 2 až 11 přednášku.
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 6. přednáška
    Stručný obsah:
    Materiály:
    • Případné příklady a slidy k této přednášce zatím najdete výše v archivu materiálů pro 2 až 11 přednášku.
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 7. přednáška
    Stručný obsah:
    Materiály:
    • Případné příklady a slidy k této přednášce zatím najdete výše v archivu materiálů pro 2 až 11 přednášku.
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 8. přednáška
    Stručný obsah:
    Materiály:
    • Případné příklady a slidy k této přednášce zatím najdete výše v archivu materiálů pro 2 až 11 přednášku.
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 9. přednáška
    Stručný obsah:
    Materiály:
    • Případné příklady a slidy k této přednášce zatím najdete výše v archivu materiálů pro 2 až 11 přednášku.
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 10. přednáška
    Stručný obsah:
    Materiály:
    • Případné příklady a slidy k této přednášce zatím najdete výše v archivu materiálů pro 2 až 11 přednášku.
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 11. přednáška
    Stručný obsah:
    Materiály:
    • Případné příklady a slidy k této přednášce zatím najdete výše v archivu materiálů pro 2 až 11 přednášku.
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 12. přednáška
    Stručný obsah:
    Druhy Unicode znaků • řídící Unicode znaky • combining characters a více znakové sekvence tvořící 1 grafém • reprezentace nového řádku (CR LF vs. LF vs. CR vs. LS vs. PS) ♦ koncept textových souborů • signature/BOM (Byte Order Mark) v textových souborech v Unicode kódováních ♦ textové řerězce v binárních souborech a v paměti • rezervní prostor pro prodlužování řetězce vs. přesně vyhrazené místo pro platné znaky → proměnný offset dalších dat v binárních souborech vs. řetězce v paměti • platné znaky řetězce ⇒ řetezce s explicitní délkou vs. null-terminated strings (pozor: znak s kódem 0 vs. znak pro číslici 0) • srovnání s řetezci s délkou • možnost/nemožnost využít v záznamech (record)
    Materiály:
    • http://unicode.org/reports/tr9/ - Unicode Bidirectional Algorithm jako příklad netriviálnosti Unicode
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 13. přednáška
    Stručný obsah:
    Vyzkoušení práce s null-terminated řetězci • pointerová aritmetika ve FreePascalu (stejně jako v jazyce C) • využití pointerové aritmetiky pro praci s různě velkými poli + možnost práce s částí pole • různé pohledy na stejná binární data (beznaménkové vs. znaménkové celé číslo vs. floatin-point reálná čísla vs. fixed-point vs. text vs. pixel obrazu) ♦ Jednočipové počítace (microcontroller) • typické příklady Microchip a Atmel • pračka jako příklad zařízení řízeného mikrokontrolerem → koncept firmware • základní periférie: převodníky ADC (Analog Digital Converter) a DAC (Digital Analog Converter), digitální vstupy/výstupy pomocí GPIO • připojení tlačítka a LED diody ke GPIO • koncept řadiče (controller) • přehled typických sběrnic u jednočipových počítačů: již známé I2C, RS-232, a další (jen zmínka o existenci) SPI, RS-485, CAN, USB • koncept HCI (Host Controller Interface) → příklad HCI GPIO řadiče • koncept bridge mezi sběrnicemi → příklady: RS-232 to I2C bridge (a jeho HCI) → USB to RS-232 bridge ⇒ postupná stavba a přenos požadavků přes řetěz sběrnic • odhalení používání USB to RS-232 bridge od začátku semestru
    Materiály:
  • 14. přednáška
    Stručný obsah:
    Programovací jazyk → strojový kód ⇒ instrukce vs. instrukční sada vs. procesorová architektura • strojový kód jako posloupnost bytů • regist IP (Instruction Pointer), resp. PC (Program Counter) ♦ von Neumannovská architektura → výhody: možnost spouštění programů & nevýhody: možnost virů • operační systém jako program loader (zařizuje spouštění programů) • koncept instrukce skoku (jump) ♦ koncept ukazatelů na funkce a procedury → deklarace v Pascalu → dereference ukazatele na fci/proc ♦ využití ukazatelů na proceduru/fci pro spuštění "dat" jako kód • využití ukazatelů na proceduru/fci pro zobecnění kódu aplikace ♦ přehled referenčních architektur 6502 (8-bit) a x86 (32-bit) + zmínka o ARM a MIPS • logická vs. fyzická adresa (adresový prostor)
    Materiály:
  • 15. přednáška
    Stručný obsah:
    Srovnání strojového kódu vs. assembleru • instrukce NOP • instrukce přímého nepodmíněného skoku • instrukce nepřímého nepodmíněného skoku • absolutní vs. relativní skok • variabilita instrukční sady (různé možnosti zápisu stejného programu) • Překlad z assembleru do strojového kódu → překladač (compiler): zdrojový kód → strojový kód → memory dump → spustitelný soubor (executable) • překlad z vyššího programovacího jazyka • stejný program v Pascalu + různé překladače Pascalu → různý strojový kód • přenositelnost na úrovni zdrojového kódu (source code portability) → koncept decompileru, resp. disassembleru ♦ struktura programu v Pascalu a zakladní představa jeho překladu • základní organizace paměti programu: strojový kód hlavního programu + strojový kód procedur a funkcí + globální proměnné a konstanty • volání procedury přímo a pomocí ukazatele → přímý skok a nepřímý skok ♦ koncept HW podpory zásobníku • registr SP (stack pointer) • základní pohled na instrukce PUSH a POP • práce s více zásobníky pomocí jednoho registru SP
    Materiály:
    • Principles 2018-19 - 15th Lecture.pptx
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 16. přednáška
    Stručný obsah:
    Implementace instrukcí PUSH a POP na x86 • WORD vs. DWORD vs. QWORD • možné argumenty instrukcí: immediate (konstanta), absolutní adresa • různé velikosti argumentů PUSH a POP → • na HW zásobníku nejsou hranice mezi položkami • možná špatná interpretace dat na zásobníku ♦ návrat z podprogramu - potřeba instrukce RET (RTS na 6502) • volání podprogramu - potřeba instrukce CALL (JSR na 6502) • volací zásobník (call stack) • problémy stack overflow a stack underflow ♦ ukládání parametrů na volací zásobník → stack frame (zásobníkový rámec) • potřeba dohody o volací konvenci (calling convention) • předávání konstant jako argument procedury • předání obsahu proměnné jako argument • předání promenné odkazem • potřeba odstranění argumentů z volacího zásobníku • přístup k argumentům v proceduře - zatím v pseudokódu • ukládání lokálních proměnných na volací zásobník • prolog a epilog procedury • volání funkce a uložení návratové hodnoty • dvoufázový překlad (opravení adres po znalosti finálního umístnění kódu) • koncept labelů v assembleru ♦ přehled paměti při spuštěném vývojovém prostředí → editor (update a draw smyčka) + překladač + debugger + disaasembler • vynucení C volací konvence pomocí cdecl • breakpoint na řádku v Pascalu → breakpoint na instrukci • princip fungování debuggeru přepisováním instrukcí • debug info (symboly) • univerzalita debuggeru ♦ základní koncept aritmetických instrukcí • registry procesoru • akumulátorová archtektura (př. CPU 6502) a registr akumulátoru a pomocné registry
    Materiály:
    • Principles 2018-19 - 16th Lecture.pptx
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 17. přednáška
    Stručný obsah:
    Materiály:
    • Principles 2018-19 - 17th Lecture.pptx
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 18. přednáška
    Stručný obsah:
    Materiály:
    • Principles 2018-19 - 18th Lecture.pptx
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 19. přednáška
    Stručný obsah:
    Materiály:
  • 20. přednáška (proběhla 7.1.2019)
    Stručný obsah:
    Materiály:
    • Principles 2018-19 - 20th Lecture.pptx
    • 20-PCA9564 - System bus (any parallel bus) to I2C controller (HBA).pdf - příklad specifikace řadiče I2C sběrnice (I2C HBA) určeného pro systémové sběrnice (přesněji pro paralelní systémovou sběrnici, tedy pro připojení na PCI Express systémovou sběrnici, jak ji známe z přednášky, tak bychom potřebovali před tento HBA přidat PCI Express bus interface), na přednášce využito: strana 4 → přehled základní architektury řadiče, jeho registů, a jeho signálů • strana X → zbytek specifikace byl použit pro tvorbu slidů popisujících základní HCI nutné pro poslání I2C paketu [původní zdroj: http://www.nxp.com/documents/data_sheet/PCA9564.pdf]
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         

  • 21. přednáška (proběhne st/čt)
    Stručný obsah:
    Materiály:
    • Principles 2018-19 - 21st Lecture.pptx
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (pondělně-čtvrteční video) paralelka   1. (pondělně-středeční) paralelka   3. (anglická) paralelka
         


Zkouška

Zkouška probíhá písemnou formou a v každé zkouškové písemce je 10 otázek (některé obsahují podotázky). Z každé otázky lze získat 1 nebo 0,5 nebo 0 bodů - 1 bod v případě, že je odpověď na otázku správně; 0,5 bodu, pokud odpověď není zcela kompletní, ale jinak je správná (tj. nějaká malá část odpovědi chybí nebo je nepřesná); v ostatních případech 0 bodů (tj. pokud v odpovědi chybí větší část, nebo je odpověď na otázku plně nebo i jen z části nesprávná). Celkem lze tedy získat maximálně 10 bodů. Mapování získaných bodů na výslednou známku je následující:
Body z písemky Výsledná známka
10 – 8,5
{x | x ≥ 8,5}
1
8 – 6,5
{x | 8,5 > x ≥ 6,5}
2
6 – 5
{x | 6,5 > x ≥ 5}
3
4,5 – 0
{x | 5 > x}
4
Každá zkoušková písemka trvá 4 hodiny, tj. ideálně 20 minut na každou otázku + 40 minut antistresová rezerva.

Níže budou pro ilustraci uvedena zadání písemek z již proběhlých termínů v letošním roce (AR 2018/2019): Níže jsou pro ilustraci uvedena zadání zkouškových písemek z dřívějších let, kdy již výuka předmětu Principy počítačů probíhala dle aktuálního formátu (nicméně i tak pozor, že obsah přednášek nemusí být každý akademický rok stejný úplně "do posledního písmenka" - zároveň platí, že se vždy zkouší jen látka opravdu odpřednesená v daném akademickém roce, tj. aktuální písemky mohou obsahovat i otázky na témata, která se ve starších písemkách nevyskytují, resp. ve starších písemkách mohou být otázky na témata, která byla letos vypuštěna, a tedy se nezkouší).

AR 2017/2018: AR 2016/2017: AR 2015/2016: AR 2014/2015: AR 2013/2014: AR 2012/2013:

Doporučená literatura

Primárním zdrojem informací na zkoušku jsou přednášky tohoto předmětu - tedy vaše pozdnámky z hodin, případně pořízené videozáznamy. Pokud byste potřebovali ještě nějaké další zdroje informací, tak relevantní jsou např. doporučení kolegy Buleje z dřívějších let platná pro starou akreditaci (do AR 2011/2012)- viz níže:

Odborná literatura se zaměřením na tématiku předmětu existuje především v anglickém jazyce. Primárním zdrojem pro HW část předmětu je kniha Computer Organization and Design od dvojice autorů D. A. Patterson a J. L. Hennessy. Jedná se o jednu z nejlepších knih věnovanou návrhu a architektuře počítačů, podle níž probíhá výuka v bakalářškých programech většiny západních univerzit (ale pozor: ve stávající akreditaci jsou některé z pokročilejších konceptů týkající se samotného návrhu počítače probírány ve volně navazující přednášce NSWI143 Architektura počítačů). V principu je však možné ke studiu použít v podstatě jakoukoliv rozumnou knihu:

  • A. Tanenbaum: Structured Computer Organization
  • W. Stallings: Computer Organization and Architecture
  • V. Heuring, H. Jordan: Computer Systems Design and Architecture

Část předmětu věnovaná operačním systémům pokrývá základní principy, které je opět možné najít v prakticky libovolné knize:

  • A. Tanenbaum: Modern Operating Systems
  • A. Silberschatz, G. Gagne, P. Galvin: Operating System Concepts
  • H. Deitel, P. Deitel, D. Choffnes: Operating Systems

Vedle knih je možné najít velké množství relevatních informací také na webu, např. v anglické verzi encyklopedie Wikipedia. Články k jednotlivým tématům také typicky obsahují řadu odkazů na zdroje, které je možné ke studiu použít.

Domácí literatura

S náplní přednášek se částečně kryje seriál Pavla Tišnovského Co se děje v počítači, který vychází na serveru Root.cz. V celé řadě věcí zachází do větších detailů než je možné prezentovat v omezeném čase přednášek, což však rozhodně není na škodu věci (ale pozor: ve stávající akreditaci jsou některé z pokročilejších konceptů probírány ve volně navazující přednášce NSWI143 Architektura počítačů).

Vedle doporučené zahraniční literatury je možné ke studiu vybraných témat využít jako doplněk česky psanou literaturu, ať už ve formě skript z technických škol jako ČVUT, nebo knih vydávaných technickými nakladatelstvími. Uvedené tituly jsou pouze orientační.

  • J. Hlavička: Architektura počítačů. Skripta ČVUT.
  • J. Douša, A. Pluháček: Úvod do počítačových systémů. Skripta ČVUT.
  • J. Bayer, P. Píša, Z. Šebek: Počítače pro řízení. Skripta ČVUT.
  • J. Horejš, J. Brodský, J. Staudek: Struktura počítačů a jejich programové vybavení. SNTL Praha.

Stránky předmětu z předchozí akreditace

Stránky Lubomíra Buleje k poslednímu běhu (AR 2011/2012) předmětu Principy počítačů v minulém formátu (předchozí akreditace) najdete na http://d3s.mff.cuni.cz/teaching/principles_of_computers/ar-20112012/. POZOR: do akademického roku 2011/2012 měl předmět jiný rozsah látky než je v aktuálním formátu.
Logo of Faculty of Mathematics and Physics
  • Phone: +420 951 554 267, +420 951 554 236
  • Email: info<at-sign>d3s.mff.cuni.cz
  •  
  • How to find us?
Modified on 2012-10-16