Transcript Les 4
Informatica
Deel II: les 4
geheugen – abstractie - GUI –
Von Neumann
Jan Lemeire
Informatica deel II
februari – mei 2014
Parallel Systems: Introduction
Waarmaken van Leibniz’s droom
(10) Artificiële
intelligentie
(9) Communicatie &
internet
(8) Operating system
(7) Computatietheorie & Software
(6) Efficiënt productieproces
(5) Hardware architectuur
Electronica: (3) ‘Relais’-schakeling,
(4) Geheugen
(2) Digitaal & binair
(1) Het idee
Informatica deel III: technologie, historiek en economische aspecten
Hoofdstuk 4: Geheugen
Ponskaarten
Beschrijven de programma’s
Informatica II: les 4
Jan Lemeire
Pag. 4 / 66
Moderne ponskaart?
Informatica II: les 4
Jan Lemeire
Pag. 5 / 66
Magnetische banden
zoals muziek- en videocassettes
Informatica II: les 9
Jan Lemeire
Pag. 6 / 66
Harde schijf
Non-volatile, rotating magnetic storage
Informatica II: les 4
Jan Lemeire
Pag. 7 / 66
Flashgeheugen
Non-volatile semiconductor storage
100× – 1000× faster than disk
Smaller, lower power, more robust
But more $/GB (between disk and DRAM)
Informatica II: les 4
Jan Lemeire
Pag. 8 / 66
Hoe electrisch maken?
1. Geleider
1.
Weerstand
2.
Spoel
3.
Verbinden van componenten
2. Isolator (dielectric)
1.
Condensator
2.
Scheiden van componenten
Extra component nodig…
Informatica II: les 4
Jan Lemeire
Pag. 9 / 66
Transistor
De spanning -VG bepaalt de geleidbaarheid van de
halfgeleider (semiconductor) tussen Source en Drain
Te gebruiken als versterker
Te gebruiken als relais, voor binaire operaties
halfgeleider
halfgeleider
Informatica II: les 9
Jan Lemeire
Pag. 10 / 66
Hoe werkt Flashgeheugen?
Electrische lading wordt bewaard in een
ingekapselde geleider (de floating gate).
50.000 electronen zijn voldoende, duurt meer dan 10 jaar
opdat deze ‘gelekt’ zijn door de isolator
De floating gate bepaalt geleidbaarheid van halfgeleider
Control gate
Floating gate
halfgeleider
Informatica II: les 9
Jan Lemeire
Flashgeheugen
bestaat uit een
matrix van cellen
Pag. 11 / 66
Op- of ontladen flash bit
Op- of ontladen van floating gate gebeurt door
isolator via tunneling (kwantum-mechanisch effect)
Geactiveerd via hoge spanning op control gate
opladen
ontladen
Floating gate
Informatica II: les 9
Jan Lemeire
Pag. 12 / 66
Permanent versus volatiel
geheugen
Permanent: “eeuwigdurend”
Optisch: Ponskaarten en CDs
Magnetisch: banden, diskettes en harde schijven
Flash-geheugen
Optisch & magnetisch enkel sequentieel leesbaar: je moet
eerst ‘doorspoelen’ naar de juiste positie
Vluchtig of volatiel: electriciteit nodig om
gegevens aktief te behouden
Wordt gebruikt als werkgeheugen
Random Access Memory (RAM): elke byte kan onmiddellijk
gelezen worden, is direct toegankelijk
Informatica II: les 4
Jan Lemeire
Pag. 13 / 66
Lading bewaren: capaciteit
Het geheugen dat de snelste transfer van bits van
en naar de processor toelaat is dat type van
geheugen waarbij elektrische schakelingen gebruikt
worden, waarbij 1 of 0 wordt voorgesteld als de aanof afwezigheid van spanning over een geleider.
Maar lading zal langzaam wegvloeien en lekken…
Informatica II: les 4
Jan Lemeire
Pag. 14 / 66
Volatiel geheugen: refreshen!
Waarde van geheugen hou je bij op een capaciteit, maar die
lading vloeit weg
regelmatig weer opladen!
Dynamic Random Access Memory (DRAM): elke cel slaat 1
bit op en bestaat uit een capaciteit voor de bitwaarde te
bewaren, en een transistor voor refreshen
Static Random Access Memory (SRAM): een alternatief
bestaande uit enkel transistors. SRAM is sneller, maar neemt
Informatica II: les 4
meer plaats in en is duurder.
Pag. 15 / 66
Jan Lemeire
Werk- versus perifeer geheugen
Werk- of primair geheugen: rechtsstreeks
bruikbaar in je programma’s
Elk programma krijgt een deel van het geheugen
toegewezen om in te ‘werken’
Heeft electriciteit nodig, bestaat enkel als computer opstaat,
is dus vluchtig of volatiel, dus niet voor het opslaan van
permanente gegevens
Perifeer of secundair geheugen: om gegevens
permanent op te slaan
Gebeurt via files
Vanuit programma lees en schrijf je files
Goedkoop, maar wel traag
Informatica II: les 4
Jan Lemeire
Pag. 16 / 66
Werkgeheugen: RAM
DRAM-geheugenchips in te pluggen zijn in de DDR-slots van het moederbord
Het cache geheugen (SRAM) is typisch in de CPU chip zelf ingebouwd en gebruikt
hoge snelheidsconnecties zodanig dat de data erin opgeslagen extreem snel kan
aangesproken worden. Het DRAM geheugen daarentegen is op afzonderlijke chips
ondergebracht en communiceert met de CPU tegen een lagere snelheid. De data
aanwezig in het DRAM-geheugen kan dus minder snel aangesproken worden dan
de data in het cache geheugen, maar het DRAM-geheugen is veel goedkoper.
Men zal daarom kostprijs tegenover performatie afwegen en een klein gedeelte
(meestal uitgedrukt in kilobyte) cache geheugen voorzien voor de opslag van
essentiële gegevens, terwijl men voor de overige gegevens RAM geheugen zal
voorzien (meestal uitgedrukt in megabyte of gigabyte). Er is naast het RAM
geheugen ook nog een beperkt gedeelte ROM (afkorting voor Read-only Memory)
aanwezig. Read-Only-Memory (ROM) is geheugen waarvan de inhoud permanent
is, het kan enkel gelezen worden en niet overschreven. Bovendien verdwijnt de
inhoud van dit geheugen niet wanneer de stroom komt weg te vallen. Typisch
wordt
het ROM geheugen gebruikt om permanente programma's in te stockeren
Informatica II: les 9
Pag. 17 / 66
zoals
die bv. nodig zijn wanneer de computer wordt aangezet.
Jandeze
Lemeire
Processorchip
Dual core CPU chip met aanduiding in blauw van registers.
Registers: zeer snel, klein geheugen voor het bijhouden van
tussentijdse waarden van berekeningen.
Het cache geheugen bevindt zich in het donkere linkergedeelte.
Informatica II: les 4
Jan Lemeire
Pag. 18 / 66
kort bij
Registers processor
Cachegeheugen (SRAM)
Werkgeheugen (DRAM)
Snelheid en kost
Capaciteit en energie
Geheugenhiërarchie
Harde schijf of flash drive
‘ver’ van
processor
Jan Lemeire
Pag. 19 / 66
Snelheid versus kost
Informatica II: les 4
Jan Lemeire
Pag. 20 / 66
Hoe werkt Flash geheugen?
1. Geleider
1.
2.
3.
Weerstand
Spoel
Verbinden van componenten
2. Isolator
1.
condensator
3. Halfgeleider
1.
2.
Versterker: transistor
Flashgeheugen
halfgeleider
Informatica II: les 4
Jan Lemeire
Pag. 21 / 66
Vandaag
1.
2.
3.
4.
5.
6.
Geheugen
Klasse-oefening
Abstractie: functies
Abstracte klasses
GUIs
Von Neumann-architectuur
Klasse-oefening
Abstractie: Functie
p. 49
Informatica II: les 3
Jan Lemeire
Pag. 26 / 66
p. 51
Functie als object
Informatica II: les 3
Jan Lemeire
Pag. 27 / 66
Functie: iets abstracts
Nulpunt zoeken via een Functie object
De methode werkt immers voor alle functies
Definiëren wat een functie is:
Methode: double f(double x)
Hiërarchie van functies
Informatica II: les 3
Jan Lemeire
Pag. 28 / 66
p. 2
Interfaces
Je definieert ze als interface ipv klasse
Informatica II: les 3
Jan Lemeire
Pag. 29 / 66
public interface Functie {
/** geeft functiewaarde in opgegeven punt */
double f(double x);
}
class Functie1 implements Functie{
public double f(double x) {
return 2 *(x - 3);
}
}
class Functie2 implements Functie{
public double f(double x) {
return x * x + 12 *(x - 3);
}
}
class Functie3 implements Functie{
public double f(double x) {
return - x * x * x / 8 + x * x + 20 *(x - 3);
}
}
Informatica II: les 3
Jan Lemeire
p. 50
Pag. 30 / 66
Klasses
Informatica II: les 3
Jan Lemeire
Pag. 31 / 66
Gebruik
Constructor: hier zonder parameters
Default constructor: moet je niet definiëren
Als je een andere constructor definieert, vervalt
deze. Met de andere constructor geef je aan dat
je parameters moet meegeven.
Functie functie = new Functie2();
double nulpunt = vindNulpunt(a, b, functie);
Informatica II: les 3
Jan Lemeire
Pag. 32 / 66
Niet in cursus
Extra klasses
Informatica II: les 3
Jan Lemeire
Pag. 33 / 66
Niet in cursus
class LineaireFunctie implements Functie{
double m, q;
public LineaireFunctie(double m, double q){
this.m = m;
this.q = q;
}
public double f(double x) {
return m * x + q;
}
}
class KwadratischeFunctie implements Functie{
double a, b, c;
public KwadratischeFunctie(double a, double b, double c){
this.a = a;
this.b = b;
this.c = c;
}
public double f(double x) {
return a * x * x + b * x + c;
}
}
Functie functie = new KwadratischeFunctie(1, 12, -36);
double nulpunt = vindNulpunt(a, b, functie);
Informatica II: les 3
Niet in cursus
Informatica II: les 3
Niet in cursus
Functie met specifieke parameters
class LineaireFunctie implements Functie{
double m, q;
public LineaireFunctie(double m, double q){
this.m = m;
this.q = q;
}
public double f(double x) {
return m * x + q;
}
}
class Functie1 extends LineaireFunctie{
Functie1(){
super(2, -6);
}
}
Informatica II: les 4
Jan Lemeire
Pag. 36 / 66
Niet in cursus
class KwadratischeFunctie implements Functie{
double a, b, c;
public KwadratischeFunctie(double a, double b, double c){
this.a = a;
this.b = b;
this.c = c;
}
public double f(double x) {
return a * x * x + b * x + c;
}
}
class Functie2 extends KwadratischeFunctie{
Functie2(){
super(1, 12, -36);
}
}
Informatica II: les 3
Jan Lemeire
Pag. 37 / 66
Abstracte klasses
Abstracte klasses en Interfaces
Tot hier regels van buiten kennen
p. 2
Polymorfisme
Figure
Draw()
Rectangle
Triangle
Draw()
Draw()
De methode is gedeclareerd
in de abstracte basisklasse
Ze is geïmplementeerd in de
verschillende concrete
subklasses
Dit laat toe dat elke subklasse
zijn eigen invulling aan de
methode geeft
Draw() is een polymorfe functie omdat
ze gedefinieerd is in meer dan 1 klasse
om hetzelfde doel te bekomen
Informatica II: les 4
Jan Lemeire
Pag. 42 / 66
Zonder Polymorfisme: Conditional logic
Figure object
Draw()
Draw (string figure)
{
if figure=“Triangle”
//draw Triangle
else if figure=
“Rectangle”
//draw Rectangle
}
Informatica II: les 4
Jan Lemeire
• Meerdere if-else
statements nodig (of
swith statement)
• De oude, ‘procedurele’
manier van werk
• Je moet je code
veranderen om nieuw
type toe te voegen
…
//Modify Draw() if you add a
new figure
else if figure = “Octagon”
//draw Octagon
Pag. 43 / 66
Polymorfisme: gemakkelijke uitbreiding
Figure
Draw()
Add new
derived class
Rectangle
Octagon
Draw()
Draw()
Je voegt nieuwe klasses
toe zonder iets aan de
oorspronkelijke te
moeten veranderen
Triangle
Draw()
Informatica II: les 4
Jan Lemeire
Pag. 44 / 66
Graphical User
Interface (GUI)
GUI
GUI = Graphical User Interface
Gebruiken van de java klasses van Swing
Online documentatie
Toont de kracht van object-georiënteerde talen
Encapsulatie
Overerving (Inheritance)
Abstractie/polymorphisme
Zie
Informatica II: les 4
Jan Lemeire
Pag. 46 / 66
Swing’s klassehiërarchie
Informatica II: les 4
Jan Lemeire
Pag. 47 / 66
Boek p. 38, 39, 43
Informatica II: les 1
Informatica II: les 3
Boek p. 35
Boek p. 45-46
Tekenvoorbeeld
Boek p. 69
en volgende
public class TekenVoorbeeld extends JFrame {
public TekenVoorbeeld(){
setSize( 400, 200 );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setTitle( "Voorbeeld 0301" );
setContentPane( new Paneel() );
setVisible( true );
}
public static void main( String args[] ) {
JFrame frame = new TekenVoorbeeld();
}
}
Informatica II: les 4
Jan Lemeire
Pag. 53 / 66
class Paneel extends JPanel {
private int a;
private int b;
private int antwoord;
public Paneel() {
setBackground( Color.WHITE );
a = 174;
b = 26;
antwoord = a + b;
}
public void paintComponent( Graphics g ) {
super.paintComponent( g );
// Zet de waarden van a, b en antwoord op het scherm:
g.drawString( "Overzicht van de berekening:", 40, 20 );
g.drawString( "a = " + a, 40, 40 );
g.drawString( "b = " + b, 40, 80 );
g.drawString( "De som is: " + antwoord, 40, 120 );
g.fillOval(40, 20, 10, 10);
g.drawOval(40, 40, 10, 10);
g.fillRect(40, 80, 10, 10);
g.drawRect(40, 120, 10, 10);
}
}
ute for Advanced Studies, New Jersey, USA
Hoofdstuk 5: Computerarchitectuur
De ivoren toren van IAS
Institute for Advanced Studies (IAS)
Voor de grote denkers/wetenschappers, maar niet
ingenieurs
Op de schoot
bij Einstein (op de
foto met Gödel,
Bekend logicus)…
Informatica II: les 4
Jan Lemeire
Pag. 58 / 66
John Von Neumann wilt een computer
bouwen beter dan de ENIAC…
John Von Neumann
Dit is echter tegen de statuten van het IAS, waar je enkel betaald wordt om te
denken, niet om experimenten uit te voeren of iets te bouwen.
Mede
doorII:zijn
Informatica
les 4 warme persoonlijkheid en populariteit mocht hij er toch aan
Pag. 59 / 66
Jan Lemeire
beginnen
in één van de kelders.
Programmeren = draadjes versteken,
oftewel de hardware veranderen
Informatica II: les 4
Jan Lemeire
Pag. 60 / 66
Von Neumann verbetert:
1. ‘Stored-program computer’
Een programma beschrijft wat de machine moet doen
Programma ook opslaan in het geheugen (de software)
Is ook ‘input’ van de computer en ‘data’
2. Een architectuur voor de logische opdeling van de
centrale verwerkingseenheid: de "Central
Processing Unit" of CPU. De CPU is het hart van de
computer.
3. De instructies van het programma worden één voor
één uitgevoerd
Informatica II: les 4
Jan Lemeire
Pag. 61 / 66
Waarmaken van Leibniz’s droom
(10) Artificiële
intelligentie
(9) Communicatie &
internet
(8) Operating system
(7) Computatietheorie & Software
(6) Efficiënt productieproces
(5) Hardware architectuur
Electronica: (3) ‘Relais’-schakeling,
(4) Geheugen
(2) Digitaal & binair
(1) Het idee
Informatica deel III: technologie, historiek en economische aspecten
De Von Neumann-architectuur
Jan Lemeire
Pag. 63 / 66
Programma = sequentie van instructies
Elke processorcyclus: uitvoeren van 1 instructie
Inwendig aangegeven door kloksignaal
Klokfrekwentie bepaalt aantal instructies/second (bvb 4GHz)
Interne verloop
voltages
kloksignaal
Informatica II: les 4
Jan Lemeire
Pag. 64 / 66
Von Neumann-elementen
Input Interface: binnenkomende gegevens
Voorbeelden: toetsenbord, muis, barcodelezer, internet, …
Sensoren laten toe fysische grootheden binnen het
meetbereik van computers te brengen
– Vbn: camera’s, fotocellen, bewegingssensoren (cf Ipad,
WII), ...
Interrupt (≈java-event) vertelt control unit dat er input is
Output Interface: uitgaande gegevens
Voorbeelden: scherm, printer, internet, kassa, …
Actuatoren geven aan computers de mogelijkheid
rechtstreeks hun fysische omgeving te beïnvloeden
– Vbn: motoren, elketromagneten, verwarmingselementen,
...
Informatica II: les 4
Jan Lemeire
Pag. 65 / 66
Von Neumann-elementen
Data Memory: geheugencellen voor binaire getallen.
Elke cel van 1 byte (8 bits) krijgt een adres.
Program Memory: opslag van programma.
In de praktijk: deel van datageheugen
Vroeger: ponskaarten, …
Toegang tot datageheugen: tot elk vakje, gegevens
onmiddellijk beschikbaar
Geheugen is een soort van schoolbord (scratchpad) waar de
tussenresultaten van de berekeningen worden bijgehouden
Voor bewerking wordt data uitgelezen en na bewerking geof overschreven
Informatica II: les 4
Jan Lemeire
Pag. 66 / 66
Data- en programmageheugen
In veel computers vindt men maar één enkel geheugen: het programma- en
het gegevensgeheugen zijn fysisch samengesmolten. Beide gaan immers om
het bijhouden van bytes, een programma is ook een collectie bytes. Deze
samensmelting laat toe om met éénzelfde type van computer zowel grote
programma's met maar weinig gegevens, als kleine programma's met veel
gegevens te verwerken. Vanzelfsprekend blijven beide geheugens logisch
gescheiden: de ene wordt enkel gebruikt voor data, de andere enkel voor het
opslaan van het programma. Er wordt voor gezorgd dat er geen data in het
programmagedeelte geschreven kan worden en omgekeerd. Dit zou namelijk
de bestaande inhoud (verkeerdelijk) overschrijven.
Informatica II: les 4
Jan Lemeire
Pag. 67 / 66
Von Neumann-elementen
Formaat van een rekeninstructie
Rekeninstructies bestaan uit een code voor de operatie
(OPC), de adressen van de operanden (OP1 & OP2) en het
adres naar waar het resultaat (RES) geschreven moet
worden
Arithmetic Unit voert bewerkingen uit
Op data van het geheugen
Schrijft data terug naar het geheugen
De ALU is het apparaat dat instaat voor de feitelijke verwerking van de informatie.
Het is in staat rekenkundige bewerkingen uit te voeren, getallen te vergelijken,
enz.Informatica
De ALU
krijgt de operanden (de te bewerken gegevens) uit het
II: les 4
gegevensgeheugen
en plaatst de resultaten van de bewerkingen er terug Pag.
in. 68 / 66
Jan Lemeire
Von Neumann-elementen
Control unit houdt bij waar we zitten in het
programma (Program Counter)
for/while/methodes zorgen ervoor dat een deel van je
programma meermaals uitgevoerd kan worden
‘If’ maakt het mogelijk dat een deel niet uitgevoerd wordt
De stuureenheid leest één voor één instructies uit het programmageheugen,
decodeert ze en zendt de nodige stuursignalen naar de verschillende
onderdelen van de computer om de uitvoering van de instructies te
verzekeren. Zo wordt de operatie samen met de adressen van de operanden
en het resultaat aan de ALU doorgegeven. De ALU leest de data uit het
geheugen
(adhv
de opgegeven adressen), voert de berekening uit en schrijft
Informatica II:
les 4
Pag. 69 / 66
Lemeire terug in het geheugen.
het Jan
resultaat
Niet in cursus
Voorbeeld: de machten van x
1.
2.
3.
4.
5.
6.
7.
Lees x van toetsenbord
Initialiseer macht m = x
Initialiseer teller t
Schrijf macht m
Verhoog macht: m = m * x
Verhoog teller: t = t + 1
Als macht m kleiner dan 1000 en teller
t kleiner dan 20, spring naar lijn 4
Jan Lemeire
Pag. 70 / 66
Niet in cursus
Stap 1: laden van programma
Jan Lemeire
Pag. 71 / 66
Stap 2: lees toetsenbord
23
Jan Lemeire
Pag. 72 / 66
Stap 3: initaliseer variabele
Jan Lemeire
Pag. 73 / 66
Stap 4: initaliseer variabele t
Jan Lemeire
Pag. 74 / 66
Stap 5: schrijf waarde
Jan Lemeire
Pag. 75 / 66
Stap 6: bereken product
Jan Lemeire
Pag. 76 / 66
Stap 7: verhoog teller
Jan Lemeire
Pag. 77 / 66
Stap 8: check condities
Jan Lemeire
Pag. 78 / 66
Herhaal stappen tot
eindconditie
Geheugen
m=7; t=1
m = 49 ; t = 2
m = 343 ; t = 3
m = 2401 ; t = 4
m = 16807 ; t = 5
Jan Lemeire
Op scherm
7
49
343
2401
Pag. 79 / 66