Download Inhoudsopgave Inhoud Print deze pagina

Geheugen Voor Programma's En Constanten; Datageheugen; Stapelprocessor - Conrad C-Control II Unit Gebruiksaanwijzing

Inhoudsopgave

Advertenties

doorschakeling voortijdig plaats. De prioriteit van elke thread kan tijdens de uitvoering van het programma
aangepast worden aan de actuele prestatie – eisen.
De moeilijkheid bij het maken van een programma met multithreading zit hem in de uitgebalanceerde
uitgifte van de prioriteitswaarden. Bij 255 threads en 256 prioriteitsstappen zijn er praktisch ontelbare
mogelijkheden om rekentijd te verdelen. Bij de toewijzing van zeer lage prioriteiten aan alle threads krijgt
men zeer snelle omlooptijden en daardoor een relatief geringe vertraging, tot
n enkele thread op een
gebeurtenis kan reageren. Daarentegen wordt de performance van het totale systeem minder, omdat er
per tijdeenheid meer rekenvermogen van de virtuele machine voor het omschakelen van threads
verbruikt wordt.
Daarom is het niet zinvol, aan alle threads de prioriteit 1 toe te wijzen. De performance wordt beter
naarmate er meer hogere prioriteiten uitgegeven worden. Dat heeft echter langere reactietijden tot
gevolg. In het niet aan te bevelen extreme geval hebben alle threads de prioriteit 255.
Het heeft zijn waarde aangetoond om de meeste threads met een tamelijk lage standaardprioriteit (b.v.
32) te laten lopen. Slechts aan een paar onderdelen van het programma, die lange tijd op een
gebeurtenis wachten, maar dan ook met hoge snelheid moeten reageren, zou een hogere waarde
toegewezen moeten worden.
Opmerking – multithreading vs multitasking:
Men spreekt in het algemeen over tasks in samenhang met parallel onder een besturingssysteem
lopende, onafhankelijke programma's, b.v. een tekstverwerker, een e-mail -cliënt en een databank, die
gelijktijdig op een PC gestart zijn. Threads zijn daarentegen zogenaamde "lichtgewicht processen" binnen
een programma. Meerdere threads in een programma delen een gezamenlijke adresruimte en kunnen via
globale variabelen relatief gemakkelijk data uitwisselen. De vraag of de C-Control II unit multithreading of
multitasking gebruikt, als de unit een lichtdiode laat knipperen en parallel data van de seriële interface
ontvangt, is eerder van academische dan van praktische betekenis. Voor de gebruiker is het voldoende
dat het functioneert.
4.4.4 Programma - en constante - geheugens
De maximale lengte van de binaire code bedraagt 128kB. Hiervoor is plaats in twee segmenten van de
FLASH-ROM. De adressering van een binaire code in het programmageheugen vindt woordsgewijs
plaats via een 16bit-offset.
Gescheiden van het programmageheugen gebruikt de virtuele machine nog twee andere FLASH –
segmenten voor 128kB constante - geheugens. Aan het begin van het constante geheugen zijn de
initialiseringswaarden voor elke thread van het gebruikersprogramma opgeslagen. Dan volgen constante
getalswaarden, tabellen en strings, die in het programma gebruikt worden. De toegang tot het constante -
geheugen door het gebruikersprogramma vindt woordsgewijs plaats door speciale binaire codes en een
16bit-offset.

4.4.5 Datageheugen

Het derde geheugenblok is het datageheugen, dat zich bevindt in de externe SRAM van de C-Control II
unit. Van de 64kB staan ca. 60kB ter beschikking voor data van het gebruikersprogramma, minus het
benodigde geheugen voor de stapelprocessor. De adressering van de data vindt byte -gewijs plaats via
een 16bit-offset.

4.4.6 Stapelprocessor

De virtuele machine van de C-Control II unit werkt als stapelprocessor. Deze implementeert niet, zoals
vele microcontrollers en microprocessors, speciale rekenregisters of een telwerk. In plaats daarvan
worden alle opdrachtelementen op een stapel (stack) geladen. De operaties van de virtuele processor
manipuleren steeds de bovenste waarde op de stapel of koppelen de twee bovenste waarden tot een
resultaat. Geheugenoperaties nemen een waarde van de stapel en leggen die af op een adres in het
datageheugen.
De stapelcontroller van de C-Control II unit ondersteunt rekenopdrachten met van voortekens voorziene
16bit- en 32bit- integere waarden alsmede met 64bit- getallen met zwevende komma. Bytes worden altijd
verwerkt als 16bit- integer.
De stapel dient ook als tussengeheugen voor locale variabelen van threads en subfuncties alsmede voor
het doorgeven van parameters en antwoordwaarden bij het oproepen van subfuncties. Bovendien worden
antwoordadres en geheugencontext (BP) voor het oproepen van een functie op de stapel beveiligd en bij
het antwoord opnieuw hersteld. Elke thread van het gebruikersprogramma beschikt over een eigen
stapel. De voor de stapel van een thread ter beschikking staande geheugenplaats bedraagt in theorie
22

Advertenties

Inhoudsopgave
loading

Deze handleiding is ook geschikt voor:

19 11 11

Inhoudsopgave