De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Les 1: Inleiding Computer Science is a science of abstraction -creating the right model for a problem and devising the appropriate mechanizable techniques.

Verwante presentaties


Presentatie over: "Les 1: Inleiding Computer Science is a science of abstraction -creating the right model for a problem and devising the appropriate mechanizable techniques."— Transcript van de presentatie:

1 Les 1: Inleiding Computer Science is a science of abstraction -creating the right model for a problem and devising the appropriate mechanizable techniques to solve it. - A. Aho and J. Ullman

2 Overzicht Een beetje geschiedenis Het von Neumann model
Logisch zicht Fysiek zicht Abstractieniveaus in computersystemen Architectuur vs. organisatie Hardwarecomponenten

3 Een beetje geschiedenis
Computer = rekenaar Materiële ondersteuning van rekenen is zeer oud Essentieel bij deze ondersteuning: algoritme een recept om via een opeenvolging van kleine transformaties een resultaat te berekenen Het woord “computer” komt van het Engels voor “rekenaar”: iemand die berekeningen uitvoert. Materiële ondersteuning voor dat rekenwerk, is al zeer oud, en steunt op het concept van het “algoritme”: een sluitende beschrijving om via een aantal transformaties van de gegevens, een gewenst eindresultaat te berekenen.

4 Algoritme Transformaties controle Toestand
We starten van een bepaalde begintoestand (de verzameling van gekende gegevens). Eén na één worden een aantal transformaties uitgevoerd. Typisch zal de toestand bij elke transformatie veranderen. De “controle” volgt de beschrijving (het algoritme) en geeft aan welke transformaties er moeten worden uitgevoerd. Dit kan gebonden zijn aan bepaalde voorwaarden waaraan de toestand moet voldoen. De controle houdt dus bij waar we zitten in het algoritme, en dicteert wat er moet gebeuren.

5 Uitvoering van een algoritme
controle + + transformaties 4 1 1181 + 237 + toestand Hier is een voorbeeld: een algoritme om 2 getallen op schoolse wijze op te tellen. Stap 1: De getallen worden onder elkaar geplaatst, uitgelijnd op het cijfer van de eenheden. Stap 2: De 2 cijfers van de eenheden (1 & 7) worden opgeteld en de som (8) wordt genoteerd onder de somstreep. Er is geen overdracht. Stap 3: De 2 cijfers van de tientallen (8 & 4) worden opgeteld en van de som (12) wordt de ‘2’ genoteerd onder de somstreep. Er is nu wel een overdracht, en de ‘1’ wordt bijgehouden voor de sommatie van de honderdtallen enzovoort… Op dergelijke wijze kan het maken van een eenvoudige som volledig beschreven worden in een algoritme, dat op sluitende wijze beschrijft welke kleine stapjes te maken om tot de som te komen, voor om het even welke inputgetallen. Het is belangrijk dat elk van de kleine stapjes zelf gekend en uitvoerbaar zijn voor de uitvoerder van het algoritme. 1 8

6 Automatiseringsgeschiedenis
Automatisering van de toestand: extern toestandsgeheugen Vingers, keitjes, knoopjes Telraam (13e eeuw; China) geschreven symbolen De eerste stap naar de automatisering van berekeningen, zat in het “uitwendig” maken van de toestand, zodat de hele berekening niet louter in het menselijk geheugen moest plaatsvinden. Ze ontlasten m.a.w. de rekenaar van het onthouden van (een deel van) de toestand. De dia geeft voorbeelden van zulke externe toestandsgeheugen. Bemerk hoe dit een scheiding betekent van toestandsopslag en transformatie-uitvoering. Wolfsbeenderen 5000 v.C. Steentijdperk

7 Automatiseringsgeschiedenis
Automatisering van de transformaties Zeventiende eeuw Rekenlat (1622) Mechanische calculatoren Een volgende stap in het automatiseren van de berekeningen, was het automatiseren van de transformaties, zodat deze sneller en preciezer konden worden uitgevoerd. De eerste stappen werden gezet in de 17e eeuw. In deze mechanische calculatoren wordt niet enkel een deel van de toestand bewaard, maar ook een aantal elementaire berekeningen uitgevoerd. Een menselijke operator is wel nog verantwoordelijk voor de controlefunctie. 1622 William Schickard 1642 sommen Blaise Pascal producten Gotfried Leibniz

8 Automatiseringsgeschiedenis
Automatisering van de controle Jacquardweefgetouw met ponskaarten (begin 19e eeuw) Babbage: eerste samenvoeging van toestand, transformatie en controle in één model. Speeltrommel beiaard 1659, Belfort Gent Als laatste werd ook de controle geautomatiseerd. In de eerste machines werd gebruik gemaakt van ponskaarten om het algoritme te beschrijven en aan de machine door te geven. In het begin van de 19e eeuw werd in the textielindustrie het Jacquardweefgetouw ontwikkeld. Dit is een weefmachine die patronen kon weven, gestuurd door informatie opgeslagen op een geperforeerde kartonnen band. Charles Babbage ( ) was de eerste die de concepten van mechanische controle, transformaties en opslag in een machine samenbracht.

9 Het Jacquardweefgetouw werkte met grote ponskaarten om een patroon te weven. De patronen in de kaarten werden vertaald in de beweging van de verticale draden die leiden tot het automatisch weven van patronen (zie volgende dia). Jacquardweefgetouw

10 Dit weefgetouw kon tot vier linten weven (met hetzelfde patroon, maar in vier verschillende kleuren – waarvan er één ontbreekt op deze foto genomen in het museum of Science and Industry in Manchester).

11 The difference engine 1822- 6 decimalen
Eenvoudige wiskundige bewerkingen Charles Babbage ( ) Babbage heeft zijn ontwerpen nooit in realiteit gebracht. In 1822 startte hij het ontwerp van een “difference machine” (specifiek om veeltermen te berekenen).

12 The analytical engine Charles Babbage (1791-1871) Ada Lovelace
( ) Later ontwikkelde Babbage de meer algemene analytical engine. Deze machine kon geprogrammeerd worden met ponskaarten en Ada Lovelace heeft hiervoor het eerste programma geschreven. Jammer genoeg werd deze machine in de tijd van Babbage nooit gebouwd waardoor ze dus niet konden nagaan of het programma effectief werkte. 1837-

13 Automatiseringsgeschiedenis
Echte doorbraak in de automatisering van de controle Ontwikkelingen in de telefonie (begin 20e eeuw) Konrad Zuse: eerste elektromechanisme computer: Z1 ( , 1989) Mauchly & Eckert: eerste computer: ENIAC: Electronic Numerical Integrator And Computer (1946) John von Neumann: eerste stored program computer: EDVAC (1949) Dit zijn nog een aantal mijlpalen in de ontwikkeling van de eerste echte computer, de EDVAC in 1949.

14 Z-1 (1938-1943,1989-) Mechanisch Konrad Zuse (1910-1995)
1 vermenigvuldiging = 5s

15 Z-3 (1941) met relais Eerste volwaardige elektromechanische computer
Plankalkül (1945) Rekende binair Vermenigvuldiging: 3s Deutsches Museum in München

16 Harvard Mark I (1944) met relais
IBM automatic sequence controlled calculator (ASCC) Howard Aiken ( ) De ASCC computer werd ontworpen door Howard Aiken in samenwerking met IBM. Deze machine leek veel op de analytical machine van Babbage door dewelke Aiken sterk beïnvloed was. De machine bestond uit een aaneenschakeling van elektromagnetische schakelaars. Ze woog 35 ton en bevatte 800 km bedrading. Verder kon ze rekenen met een nauwkeurigheid van 23 decimalen. Een optelling duurde 6s, een deling 12s. De programma’s waren gecodeerd op papertape. De invoer kwam van ponskaarten en de output kon gedrukt worden op ponskaarten of op kettingpapier. Later werd de machine aan de universiteit van Harvard geschonken en omgedoopt tot Mark I. Grace Hopper en Howard Aiken hebben de machine toen gebruikt om schiettabellen te berekenen. Howard Aiken heeft later ook nog de Mark II, Mark III en Mark IV (1952) ontwikkeld. Optelling = 6s "Only six electronic digital computers would be required to satisfy the computing needs of the entire United States." — Howard Aiken

17 Eerste bug: 9 september 1947 – Mark II
Op 9 september 1947 veroorzaakte een mot (bug) een kortsluiting in de Mark I. Tegenwoordig wordt een programmeerfout nog steeds een bug genoemd.

18 “I think there is a world market for maybe five computers”
1943 Thomas Watson ( ) IBM Chairman

19 ENIAC: Electronic Numerical Integrator And Computer (14 feb 1946)
Mauchly Eckert 23 m2, 30 ton, buizen, 200 kW De ENIAC (Electronic Numerical Integrator And Computer) werd ontworpen voor het berekenen van ballistische trajecten voor het Amerikaanse leger, tijdens wereldoorlog 2. Men begon eraan in 1943 en ze was klaar in De machine woog 30 ton, vereiste 150 vierkante meter vloeroppervlakte en bevatte vacuümbuizen. Deze machine kon 5000 optellingen per seconde uitvoeren of 14 vermenigvuldigingen per seconde. De machine werkte op decimale getallen. Het geheugen bestond uit 20 accumulatoren die elk een getal van 10 decimalen kon bevatten. Een cijfer werd voorgesteld door 10 vacuümbuizen waarvan er precies 1 aan stond, en de andere af. Toen de machine klaar was, was de oorlog voorbij en werd ze ingezet voor de ontwikkeling van de waterstofbom. In 1955 werd ze ontmanteld. 14 vermenigvuldigingen per s

20 "Computers in the future may weigh no more than 1.5 tons.“
— Popular Mechanics, 1949

21 Programmeren van de ENIAC
Programmeren gebeurde door het zetten van schakelaars en herleggen van kabels. Om niet telkens te moeten herbeginnen konden hele stekkerpanelen aangebracht en verwijderd worden. De programma’s bestonden m.a.w. uit fysieke bedrading die door de programmeur moest aangebracht worden.

22 Logisch zicht ENIAC computer Transformaties rekeneenheid controle
Toestand geheugen programma gegevens

23 Electronic Discrete Variable Automatic Computer
EDVAC 1949 John von Neumann ( ) Het programmeren van de ENIAC was zeer tijdrovend en onhandig. John von Neumann, een getalenteerde wiskundige kwam op het idee (ofschoon sommigen menen dat hij het idee gestolen heeft van anderen) om een representatie van het programma in het geheugen op te slaan en de computer de noodzakelijke verbindingen zelf te laten leggen. Op die manier werden zowel de gegevens al de programma’s in het geheugen opgeslagen. Alle hedendaagse computers zijn nog steeds op dit principe gebaseerd. De bouw van de EDVAC startte in 1946 en eindigde pas in 1952. Meer informatie over de computergeschiedenis vind je op: 300 vermenigvuldigingen per s

24 De Manchester Small-Scale Experimental Machine (SSEM), ook de “Baby” genoemd, was de eerste computer waarbij een programma in het werkgeheugen opgeslagen werd. De machine had slechts 8 instructies en voerde een eerste programma uit op 21 juni Het beeldscherm toonde het volledige geheugen bestaande uit 1024 bits, of 32 woorden van 32 bits en een 32 bit accumulator. Het eerste programma, dat de grootste deler van een getal berekende, gebruikte 17 instructies en 8 datawoorden, samen goed voor 25 van de 32 woorden. Het rekende 52 minuten om de grootste deler van te berekenen, dit komt overeen met een duizendtal instructies per seconde. Manchester baby

25 Logisch zicht EDVAC computer Transformaties rekeneenheid controle
Toestand programma gegevens Het ontstaan van software geheugen

26 Overzicht Een beetje geschiedenis Het von Neumann model
Logisch zicht Fysiek zicht Abstractieniveaus in computersystemen Architectuur vs. Organisatie Hardwarecomponenten

27 Von Neumann-machine Logisch zicht
ALU Geheugen data R, S Controle Het belangrijkste concept in de von Neumann-machine is dat de instructies (een beschrijving van het algoritme in computertaal) in hetzelfde geheugen worden bewaard als de gegevens. Dit is het zogenaamde “stored program” concept. Het logisch beeld van deze machine is dat de controle-eenheid instructies uit het geheugen haalt en op basis hiervan dicteert aan de ALU (Arithmetic and Logic Unit, ook wel functionele eenheid of operatorgedeelte) welke transformaties die moet uitvoeren op welke gegevens, en waar het resultaat moet terechtkomen. De klok dicteert de snelheid waarbij dit alles gebeurt. Bij elke klokpuls (typisch vele miljoenen keren per seconde) gaat de controle over tot de volgende (mini-)stap. De bitpatronen met de operandi (O1, O2), en het resultaat (R) hebben doorgaans dezelfde lengte, en men noemt dit de “woordlengte” van de machine. In moderne computers is dit 32 of 64 bit, maar er bestaan ook veel 4-, 8- en 16-bitmachines (o.a. in microcontrollers). Het bitpatroon S stelt toestandsinformatie door over het verloop van de transformatie, b.v. over het teken van het resultaat. Deze toestand bepaalt mee de volgende instructie die moet uitgevoerd worden. instructies klok

28 Von Neumann-machine Fysiek zicht
BUS CVE adres Controle cache ALU data klok controle registers Geheugen In een fysieke uitwerking van een von Neumann-machine, is het logisch concept “gestroomlijnd”. De computer is gepartitioneerd in 3 delen: CVE, geheugen en invoer/uitvoer. Op de snelle CVE (centrale verwerkingseenheid, CPU - Central Processing Unit) gebeurt de controle en de transformaties. Er zijn hier ook een aantal registers (snelle geheugenplaatsen voor het bewaren van data) en de cache, d.i. een klein maar snel geheugen om tijdelijk veelgebruikte gegevens bij te houden. De invoer/uitvoer eenheid staat in contact met extern geheugen (zoals harde schijven, floppy, etc) en met I/O (input/output) apparaten (toetsenbord, …). Het geheugen (RAM - random access memory) bestaat uit een aantal adresseerbare cellen (BAU - basic addressable unit) die elk een waarde kunnen bevatten. De communicatie tussen de 3 onderdelen gebeurt via de “systeembus”, die (b.v.) bestaat uit een databus (gegevens en instructies), adresbus (adressen voor geheugen of I/O) en een controlebus (die identificeert hoe de informatie wordt verzonden). Fysiek bestaat zo’n bus uit een aantal verbindingen, 1 per bit. De bus is gemeenschappelijk voor meerdere bronnen of gebruikers. Invoer/Uitvoer

29 Overzicht Een beetje geschiedenis Het von Neumann model
Logisch zicht Fysiek zicht Abstractieniveaus in computersystemen Architectuur vs. organisatie Hardwarecomponenten

30 Abstractieniveaus Een computersysteem bestaat uit een hiërarchie van lagen Elke laag heeft een goed gedefinieerde interface naar de bovenliggende en onderliggende lagen Essentieel bij de ondersteuning van opwaartste compatibiliteit Een computer is een complexe machine - zowel in constructie als in het gebruik. Om de complexiteit bevattelijk te houden, wordt de constructie en het gebruik behandeld en bestudeerd in verschillende lagen. Elke laag werkt onafhankelijk, en bouwt op een onderliggende laag. Tussen elke 2 lagen bestaat een goed gedefinieerde interface. Aldus is het mogelijk om op een laag te werken zonder zich te moeten verdiepen over de bijzonderheden van andere lagen. Het begrip van de onderliggende lagen helpt echter om de computer als geheel beter te begrijpen. Deze aanpak is essentieel bij de ondersteuning van opwaartse compatibiliteit (ook wel ‘voorwaartse’ compatibiliteit). Opwaartse compatibiliteit houdt in dat een systeem ontworpen wordt op zulke wijze dat ook toekomstige versies ervan dezelfde ondersteuning zullen (kunnen) bieden voor afhankelijke systemen. Zonder opwaartse compatibiliteit zal typisch het invoeren van een nieuwe generatie van een computersysteem betekenen dat ook de software en/of de randapparaten moeten vervangen worden. Bij opwaartse compatibiliteit spreekt men van een “familie van computers” waarbij latere generaties nog altijd dezelfde software kunnen uitvoeren.

31 Lagen Toepassingsprogramma’s Hoog-niveauprogrammeertalen Machinetaal
Datapad + Controlepad RTL-niveau Deze dia toont een gelaagde voorstelling van een computersysteem. Verderop zullen de lagen besproken worden. De bovenste lagen verwijzen naar software - het gebruik van de computerhardware. De onderste lagen zijn verschillende abstractieniveaus van de computerhardware. Poortnetwerken Transistors en verbindingen

32 Lagen Toepassingsprogramma’s Door de programmeur Door codegeneratoren
Hoog-niveauprogrammeertalen Machinetaal Datapad + Controlepad De bovenste laag van de computer, is de laag van de toepassingsprogramma’s die door de gebruiker gebruikt worden, wanneer hij gewoon gebruik maakt van de computer, zonder zich te bekommeren om de onderliggende software- en hardwaretechnieken. Deze programma’s worden veelal geschreven door programmeurs, en soms door codegeneratoren, gebruik makende van hoog-niveauprogrammeertalen zoals C++, Pascal of Java. RTL-niveau Poortnetwerken Transistors en verbindingen

33 Lagen Hoog-niveauprogrammeertalen Door de compiler (= vertaler)
Toepassingsprogramma’s Hoog-niveauprogrammeertalen Door de compiler (= vertaler) Machinetaal Datapad + Controlepad In een hoog-niveauprogrammeertaal ziet de programmeur enkel de abstracties geleverd door die taal (datatypes, instructies, …), en niet de ‘low-level’ onderliggende details. Hij moet niet weten hoe die abstracties gerealiseerd worden in de machine. De compiler is een programma die de vertaling verzorgt van het hoog-niveauprogramma naar de taal begrepen door de machine. Terwijl hoog-niveauprogrammeertalen vooral bedoeld zijn om de programmeur te dienen met logische en handig bruikbare constructies en datatypes, kijkt de machinetaal eerder “naar beneden” en is zij een spiegel van wat de onderliggende hardware aankan. De verzameling van instructies in de machinetaal, noemt men de “instructieset”. RTL-niveau Poortnetwerken Transistors en verbindingen

34 Lagen Machinetaal Controle-eenheid Datapad + Controlepad
Toepassingsprogramma’s Hoog-niveauprogrammeertalen Machinetaal Controle-eenheid Datapad + Controlepad De controle-eenheid (die in hardware is gemaakt) van de computer zal een programma in machinetaal inlezen en doorlopen, en voor elke instructie controlesignalen genereren, die de rest van de computer aan het werk zetten (datapad en controlepad). Hoe de controlesignalen aangemaakt worden, is van geen belang voor de schrijver van programma’s in machinetaal. RTL-niveau Poortnetwerken Transistors en verbindingen

35 Lagen Datapad + Controlepad Micro-architectuur RTL-niveau
Toepassingsprogramma’s Hoog-niveauprogrammeertalen Machinetaal Datapad + Controlepad Micro-architectuur Een datapad en een controlepad kunnen op tal van manieren geïmplementeerd worden. De keuze die men hier maakt wordt meestal omschreven als de microarchitectuur. Het bepaalt de diepte van de pijplijn, de structuur van de geheugenhiërarchie, enz. Dit niveau wordt beschreven aan de hand van functionele blokken zoals registers, rekeneenheden, buffers, enz. Men noemt dit het Register Transfer Level (RTL). RTL-niveau Poortnetwerken Transistors en verbindingen

36 Lagen RTL-niveau VHDL-compiler Poortnetwerken
Toepassingsprogramma’s Hoog-niveauprogrammeertalen Machinetaal Datapad + Controlepad RTL-niveau VHDL-compiler (vhsic hardware description language) Het RTL-niveau (Register Transfer Level) worden beschreven in een hardware description language (een soort programmeertaal voor hardware dus). Populaire talen zijn VHDL en Verilog. VHDL = VHSIC Hardware Description Language VHSIC = Very High Speed Integrated Circuit Een aangepaste compiler zet deze hardwarebeschrijvingen om in een representatie van het onderliggende niveau: poortnetwerken. Een “poort” is een eenvoudige elektronische schakeling en een bouwsteen in digitale circuits: AND, OR, NOT, enz. De operatie van poorten wordt beschreven aan de hand van hun digitale functie, typisch met 2 inputs en 1 output, die de toestanden 0 en1 kunnen aannemen. Poortnetwerken Transistors en verbindingen

37 Lagen Poortnetwerken Chip-ontwerper Routing-software
Toepassingsprogramma’s Hoog-niveauprogrammeertalen Machinetaal Datapad + Controlepad RTL-niveau Poortnetwerken Chip-ontwerper Routing-software Poortnetwerken worden opgebouwd uit transistors en verbindingen tussen die transistors. We zitten dan op het allerlaagste niveau van de elektronica. Het omzetten van poortnetwerken naar een schakeling van transistors gebeurt soms met de hand, soms automatisch, of is een combinatie van de twee. Poorten hebben doorgaans een vaste omzetting in transistorschakelingen. Het echte werk is dan de plaatsing van de poorten en het routeren van de fysieke verbindingen (draden) in het poortnetwerk. Voor dit laatste bestaat specifieke routing software. Transistors en verbindingen

38 Overzicht Een beetje geschiedenis Het von Neumann model
Logisch zicht Fysiek zicht Abstractieniveaus in computersystemen Architectuur vs. organisatie Hardwarecomponenten

39 Lagen Toepassingsprogramma’s Archi-tectuur Hoog-niveauprogrammeertalen
Machinetaal Datapad + Controlepad Organi-satie RTL-niveau In de strikte nomenclatuur verwijst computerarchitectuur naar het functionele gedrag van een computersysteem, zoals het gezien wordt door de gebruikers en programmeur. Dit omvat aspecten als datatypes, en instructietypes. In de getoonde hiërarchie komt dit dus overeen met de bovenste 3 lagen. Computerorganisatie heeft te maken met de structurele opbouw van de computer, die onzichtbaar is voor de gebruiker. Het gaat dan om interne opbouw, interfaces met randapparatuur, kloksnelheden, enz. In de getoonde hiërarchie gaat het om de onderste 4 lagen. Poortnetwerken Transistors en verbindingen

40 Architectuur vs. Organisatie
“zichtbaar” Architectuur 1 Architectuur 2 Architectuur Hardware/software interface Organisatie 1 Organisatie 2 Organisatie 3 Een strikte scheiding van architectuur en organisatie heeft interessante gevolgen. Terwijl de architectuur het zichtbare deel van de computer is, en de organisatie het onzichtbare deel, moeten architectuur en organisatie samenwerken, via de zgn. “hardware/software interface”. De scheiding van de lagen laat bijvoorbeeld toe dat een computersysteem gebruik makend van (uiteraard) één organisatie, in staat is meerdere architecturen te ondersteunen - en tussen die 2 architecturen om te schakelen. Anderzijds is het mogelijk om in een familie van computers, ervoor te zorgen dat elk systeem, zij het met een verschillende organisatie (b.v. aangepast aan verschillende vereisten qua kosten/snelheid, of gebruik makend van nieuwere en snellere technologieën en concepten) dezelfde architectuur ondersteunt (en daardoor ook dezelfde software kan uitvoeren en randapparaten kan ondersteunen). Organisatie “onzichtbaar”

41 Compatibiliteit Toepassingsprogramma’s Hoog-niveauprogrammeertalen
Binaire compatibiliteit Machinetaal Wanneer verschillende machines dezelfde machinetaal ondersteunen, en dus (zonder hercompileren) programma’s kunnen uitvoeren geschreven in die machinetaal, dan spreken we over “binaire compatibiliteit”. Het bekendste voorbeeld hiervan is ongetwijfeld de Intel 80x86 reeks (waarvan de Pentium 4 de recentste generatie is). Het oudste voorbeeld is de IBM 360 reeks. Hardware 1 Hardware 2 Hardware 3

42 Compatibiliteit Toepassingsprogramma’s Broncodecompatibiliteit
Hoog-niveauprogrammeertalen Machinetaal1 Machinetaal2 Machinetaal3 Wanneer voor verschillende computersystemen, elk met hun eigen machinetaal, compilers bestaan zodat dezelfde hoog-niveauprogrammeertaal kan vertaald worden naar machinetaal voor elke machine (en als de programma’s voorhanden zijn in niet-gecompileerde versie, dus in de hoog-niveautaal), dan zeggen we dat de machines “broncodecompatibel” zijn. Hardware 1 Hardware 2 Hardware 3

43 Toepassingsprogramma’s
Platform Toepassingsprogramma’s Besturingssysteem Machinetaal Men spreekt vaak over “het platform” waarop een programma wordt uitgevoerd. Dit is de combinatie van de machine zelf (hardware en machinetaal) en het besturingssysteem. Een besturingssysteem is zowat de manager van het computersysteem, en vaak zijn er meerdere besturingssystemen voorhanden die kunnen dienst doen (b.v. Linux, Windows 9x, Win 2000, UNIX). Wanneer een toepassingsprogramma gecompileerd wordt, past het zich niet alleen aan aan de specifieke machinetaal, maar ook aan het besturingssysteem. Een programma spreekt het besturingssysteem aan om toegang te krijgen tot een aantal randapparaten en andere bronnen (resources) in de computer. Elke besturingssysteem heeft zijn eigen interface om zulke “aanvragen” te ontvangen. Hardware

44 Porteren Toepassingsprogramma’s Hoog-niveauprogrammeertalen OS 1 OS 2
Men spreekt van porteren wanneer men een programma omzet van één platform naar een ander platform. Afhankelijk van de verschillen tussen de 2 platformen, komt hier al dan niet veel werk bij kijken. Soms kan het volstaan het programma te hercompileren, indien de beschrijving in de hoog-niveautaal geen platform-afhankelijke delen bevat, en als er een compiler beschikbaar is voor het 2e platform. Echter, sommige delen van programma’s, hoewel geschreven in hoog-niveautalen, zijn specifiek voor een bepaald platform (b.v. de grafische routines in Windows programma’s). Dan kan het vereist zijn deze te herschrijven. Wanneer voor het 2e platform geen compiler beschikbaar is voor de gebruikte hoog-niveautaal, moet het programma herschreven worden in een andere programmeertaal. Machinetaal 1 Machinetaal 2 Hardware 1 Hardware 2 Platform 1 Platform 2

45 Emulatie Toepassingsprogramma’s Hoog-niveauprogrammeertalen
Machinetaal 1 Emulatie Wanneer men een bepaalde architectuur wil ondersteunen met een machine die een andere machinetaal heeft, dan kan men in het uiterste geval aan “emulatie” doen. Het is dan mogelijk om programma’s die gecompileerd zijn voor machinetaal1 uit te voeren op een machine met een andere eigen machinetaal. De emulatiesoftware vertaalt dan de instructies uit machinetaal 1 in instructies uit machinetaal 2. Een gekend voorbeeld is de Apple Computer die emulatie gebruikte toen bij een nieuwe generatie werd overgestapt van processors naar PowerPC processors. Dankzij emulatie werd binaire compatibiliteit aangeboden zodat de oude programma’s konden blijven dienen. Meer recent worden in processors zoals de Crusoe van Transmeta Pentium-instructies tijdens de uitvoering vertaald naar een speciale (en niet-gekende) architectuur. Deze techniek wordt code morphing genoemd en laat toe om binaire compatibiliteit te garanderen op een totaal verschillend platform. Machinetaal 2 Hardware

46 Java Virtuele Machine Toepassingsprogramma Java (java-files)
Java bytecode (class-files) Java virtuele machine (JVM) Interpreter (=vertolker) De programmeertaal Java wordt op een bijzondere wijze ingepast op een computersysteem. Java programmacode wordt gecompileerd naar Java bytecode. De Java bytecode kan gezien worden als de machinetaal van de Java Virtuele Machine (JVM). De JVM is nu net virtueel omdat het software is, die een vertaling doet van de bytecode naar de machinetaal van de machine waarvoor de JVM gemaakt is. Door JVM’s te maken voor de verschillende populaire platforms, en door Java programma’s te verspreiden in Java bytecode, ontstaat een verzameling software die op zowat elk platform kan draaien, zonder enige bijkomende porteer-activiteit. Als dusdanig kan de JVM ook gezien worden als een (eerder complexe) emulator. Een interpreter is een programma dat een vertaling doet van een hoog-niveauprogrammeertaal naar machinetaal, zoals een compiler. Maar in tegenstelling tot de compiler gebeurt de vertaling van een programma niet eenmalig, maar bij elke uitvoering van het programma. Aldus kan de JVM ook als interpreter bestempeld worden (ook al is de Java bytecode geen echte hoog-niveauprogrammeertaal) Machinetaal Hardware

47 Java Virtuele Machine Toepassingsprogramma Java (java-files)
Bytecodecompatibel Java bytecode (class-files) JVM 1 JVM 2 JVM 3 Door JVM’s te maken voor de verschillende populaire platforms, en door Java programma’s te verspreiden in Java bytecode, ontstaat een verzameling software die op zowat elk platform kan draaien, zonder enige bijkomende porteer-activiteit. Deze verschillende machines, met eigen JVM zijn dus bytecode-compatibel. Machinetaal1 Machinetaal2 Machinetaal3 Hardware 1 Hardware 2 Hardware 3

48 Voorbeelden interpreters
Java virtuele machine .NET Visual Basic interpreter Web-browser Postscript interpreter Pdf-interpreter Perl interpreter Lisp, Prolog Zie eerder voor een verklaring van “interpreter”. Hier is een lijstje van nog andere populaire interpreters.

49 Overzicht Een beetje geschiedenis Het von Neumann model
Logisch zicht Fysiek zicht Abstractieniveaus in computersystemen Architectuur vs. organisatie Hardwarecomponenten

50 Moederbord Het moederbord is de “verbindingsplaat” voor de verschillende onderdelen van het computersysteem. De processor, het geheugen, de cache, de schijven… alle worden ze hierop ingeplugd, om aldus via het moederbord te communiceren. Het witte vierkant rechts midden is de voet waarin de processor geplugd wordt.

51 Processor Links ziet U een processor (boven- en onderaanzicht). Deze processor heeft 1366 aansluitingen waarvan ongeveer de helft gebruikt worden voor de voeding.

52 Socket De processorchip wordt in een zgn socket geplaatst. Voor de Intel-processors bestaat een een dergelijke socket uit een matrix van pinnen waar de processor gewoon opgelegd wordt en nadien vastgeklemd wordt.

53 Koeler De processor wordt bij werking enorm heet. Om te vermijden dat de hitte schade kan aanbrengen, moet die afgevoerd worden. Hiervoor dienen de koelvin en de ventilator. De koelvin heeft een groter oppervlak door zijn speciale vorm, wat toelaat de warmte over een groter oppervlak af te voeren. De ventilator zorgt voor een verhoogde luchtstroom langs de koelvin.

54 Warmtegeleiding Om de warmteoverdracht tussen de processor en de koeler optimaal te laten gebeuren wordt er warmtegeleidende pasta aangebracht tussen de processor en de koeler.

55 Chipset Integreert verschillende functies:
klokgenerator, busregelaar, timer, onderbrekingsregelaar, DMA-regelaar, klok, toetsenbordregelaar Naast de processor zijn er nog heel wat andere chips nodig die toelaten dat deze processor met zijn omgeving kan praten. De verzameling van deze chips wordt de chipset genoemd.

56 Systeemarchitectuur

57

58 Geheugenmodules Dit zijn twee voorbeelden van geheugenmodules. Deze geheugenmodujles worden ook in slots aangebracht. Zij laten toe om de hoeveelheid geheugen aan te passen aan de noden van de gebruiker. Tegenwoordig vindt men courant enkele GiB aan geheugen in een PC.

59 Geheugemodules op het moederbord

60 PCI-kaart (Peripheral Component Interconnect)
PCI uitbreidingskaarten zorgen doorgaans voor de communicatie met randapparatuur (geluidskaarten, scanners, beeldscherm, …). De connectie met het moederbord is gestandaardiseerd. Hier ziet U een PCI-kaart, d.i. een kaart die past in een PCI-slot van een moederbord (via de metalen contacten onderaan).

61 PCI-slots De 3 witte slots zijn PCI slots. Hier worden de PCI kaarten ingeplugd. De zwarte slots bovenaan zijn ISA slots, een oudere standaard voor uitbreidingskaarten.

62 PCI express

63 PCI-Express slots

64 Harde schijf Een harde schijf is heel klein in volume, maar kan vele GB aan gegevens opslaan.

65 EIDE (Enhanced Integrated Device Electronics)
Aansluiting voor de harde schijven en sommige andere randapparatuur (vnl. CDROM en CD-RW). Links de kabel (flatcable), en rechts de connectoren op het moederbord.

66 Harde schijf met EIDE connector
Dit zijn de externe connectoren van een harddisk. Via jumpers (schuivertjes) kunnen bepaalde instellingen gerealiseerd worden. Rechts merk je de vier pinnen van de stroomvoorziening (voeding) op. Links zit de connector die moet verbonden worden met de EIDE kabel langswaar de gegevens van een naar het moederbord getransfereerd worden.

67 Harde schijf met SATA connector
Serial ATA (Advanced Technology Attachment) is de hedendaagse interface die gebruikt worden om harde schijven en DVD-lezers aan te sluiten aan het moederbord. De connectoren zijn kleiner dan de IDE connectoren (ook Parallel ATA genoemd) en kunnen niet verkeerd aangesloten worden.

68 Videokaart NVIDIA GeForce 9800 GTX
Heel wat moederborden hebben een elementaire aansturing van de videohardware aan boord. Voor de meereisende gebruikers zijn er de meer geavanceerde grafische kaarten van Nvidia, ATI, Matrox, VIA en weldra ook Intel (met Larrabee). NVIDIA GeForce 9800 GTX

69 Moederbord Processorslot Chip-set PCI-slots Geheugenslots IDE SATA
Het moederbord is de “verbindingsplaat” voor de verschillende onderdelen van het computersysteem. De processor, het geheugen, de cache, de schijven… alle worden ze hierop ingeplugd, om aldus via het moederbord te communiceren. Het witte vierkant rechts midden is de voet waarin de processor geplugd wordt.

70 Pauze


Download ppt "Les 1: Inleiding Computer Science is a science of abstraction -creating the right model for a problem and devising the appropriate mechanizable techniques."

Verwante presentaties


Ads door Google