TECHNISCHE UNIVERSITEIT EINDHOVEN FACULTEIT DER TECHNISCHE NATUURKUNDE
Tentamen Computers bij fysische experimenten (3BB20) op dinsdag 25 oktober 2005 Het tentamen duurt 90 minuten en wordt gemaakt zonder boeken, collegedictaten, en meegebrachte notities.
1. Quiz Geef een kort antwoord op de volgende vragen en geef daarbij een korte argumentatie, of een korte berekening. Een goed antwoord met een goede argumentatie levert 6 punten op. Een goed antwoord zonder argumentatie levert g´e´en punten op. (6 pnt)
(a) Met behulp van een ADC wordt een (wit) ruissignaal bemonsterd met bemonsterperiode ts , waarbij steeds gemiddeld wordt gedurende ∆t. x
ts
t
Dt
Wat is de hoogste frequentie in het bemonsterde signaal ? (6 pnt)
(b) Is het waar dat de correlatiefunctie y(τ ) = hx(t + τ ) x(t)i van witte ruis x(t) overal nul is ?
(6 pnt)
(c) Hoe lang kan er met dit meetinstrument onafgebroken gemeten worden ? Is dat 512 (=29 ), 256 (=28 ), of 128 (=27 ) seconden ? x(t)
buffer (1 M Byte)
12 bits ADC
computer
klok (1kHz)
(gebruik 1 M = 220 , 1 k = 210 ). (6 pnt)
(d) Is het waar dat DMA transport naar het werkgeheugen van een computer snel is omdat de CPU zich alleen maar met het DMA transport bezighoudt ?
(6 pnt)
(e) Van het volgende (fysische) RC filter R = 100 kW
x(t)
C = 1 nF
1
y(t)
wil je een discrete versie maken yn =
N X
ai xn−i ,
i=0
met xn = x(n∆t), en ∆t = 0.1 ms. Hoeveel discrete filtercoefficienten N zijn er nodig om de discrete versie binnen 1% gelijk te laten zijn aan het fysische filter ? 2. Multichannel analyser In een experiment worden gebeurtenissen verzameld waarvan de grootte met 12 bit gedigitaliseerd wordt. Die grootte is een maat voor de energie van een deeltje. Er wordt een spectrum gemaakt, een grafiek met horizontaal de energie van het deeltje en verticaal het aantal events met die energie. Daarbij wordt gebruik gemaakt van een multichannel analyser. opteller
geheugen
adres
(5 pnt)
(a) Hoeveel bits bevat, minimaal het adres ?
(5 pnt)
(b) Als het geheugen 1 M Byte (220 bytes) groot is, en de gemiddelde event frequentie 1 MHz is, hoe lang kunnen we dan meten ?
(5 pnt)
(c) De meetmethode volgens de figuur bevalt ons niet, omdat we zo de informatie hebben over de aankomsttijd van het deeltje hebben verloren. We willen het geheugen (zonder de opteller) nu gebruiken om alle events op te slaan. Hoe lang kunnen we nu meten ?
(15 pnt)
(d) Ontwerp nu een meetsysteem waarme we onbeperkt kunnen meten. Indentificeer de bottlenecks in dit meetsysteem. 3. Interrupts Het doel van het volgende meetsysteem is om verschillende datastromen (die ook met verschillende snelheden komen) ononderbroken naar het geheugen van de CPU te schrijven. Het systeem bevat 2 ADC-modules, ADC1 en ADC2. ADC1 heeft 5 analoge ingangen, 0 t/m 4 en wordt getriggerd door een externe klok met een frequentie f1 . Bij iedere klokpuls worden de spanningen op de vijf analoge ingangen geconverteerd en als 16-bits binaire waarden opgeslagen. De uitgang van ADC1 is hiertoe via BUS 0 (bandbreedte 40 Mbyte/s) verbonden met een interleaved memory, bestaande uit 2 blokken (MEM0 en MEM1) van elk 10 kbyte. Als ´e´en van deze geheugenblokken vol is, wordt een interrupt (IRQ1) gegenereerd, en wordt automatisch omgeschakeld naar het andere blok. In de interrupt service routine (ISR1), die door IRQ1 wordt geactiveerd, wordt achtereenvolgens het gevulde geheugenblok via BUS 2 uitgelezen en door de CPU verwerkt. De module ADC2 heeft ´e´en analoge ingang (0), en wordt getriggerd door eeen externe klok met een frequentie f2 . Bij iedere klokpuls wordt de analoge ingangsspanning geconverteerd en als een 16-bits binaire waarde opgeslagen. De uitgang van ADC2 is 2
hiertoe via BUS 1 (bandbreedte 40 Mbyte/s) verbonden met een interleaved memory, bestaande uit 2 blokken (MEM2 en MEM3) van elk 20 kbyte. Als ´e´en van deze geheugenblokken vol is, wordt een interrupt (IRQ2) gegenereerd, en wordt automatisch omgeschakeld naar het andere blok. In de interrupt service routine (ISR2), die door IRQ2 wordt geactiveerd, wordt achtereenvolgens het gevulde geheugenblok via BUS 2 uitgelezen en door de CPU verwerkt. BUS 2 40 MByte/s
0 1 2 3 4 klok
BUS 0 40 MByte/s 10 kByte MEM 0 ADC 1
2,5 MByte/s
MEM 1
DMA
0
MEM 2 Memory
ADC 2
IRQ2 IRQ1
MEM 3
klok
CPU
BUS 1 40 MByte/s
De snelheid van het gegevenstransport over BUS 2 bedraagt 10 Mbyte/s. Het transport van gegevens over BUS 2, via BUS 3 (bandbreedte 40 Mbyte/s), naar het werkgeheugen van de CPU wordt verzorgd door een DMA-controller, die een maximale transportsnelheid heeft van 2.5 Mbyte/s. De service routines ISR1 en ISR2 bevatten een aantal procedures, waarmee de gegevens die van het betreffende interleaved memory afkomstig zijn, nadat ze door de DMA-controller naar het werkgeheugen van de CPU zijn gekopieerd, een factor 10 in omvang worden gereduceerd. Hierna worden ze naar de disk (bandbreedte 0.5 Mbyte/s) weggeschreven. De service routines ISR1 en ISR2 kunnen, terwijl zij aktief zijn, een gemiddelde inkomende gegevensstroom verwerken van 1 Mbyte/s (De invloed van het DMA-transport is hierbij al in rekening gebracht ). De latency van ISR1 en ISR2 mag worden verwaarloosd. We beschouwen eerst de situatie waarbij ADC2 nog geen spanningen converteert (f2 = 0). (5 pnt)
(a) Geef voor een trigger-frequentie f1 = 25 kHz aan hoe de opslag van de gegevens in MEM0/MEM1, het transport van deze gegevens en de verwerking ervan in de tijd verloopt: maak een tijddiagram. Geef daarin aan op welke tijdstippen de interrupts IRQ1 optreden en gedurende welke tijdsintervallen ISR1 aktief is. Welke fractie van de tijdsduur van ISR1 wordt gebruikt voor het DMA transport ?
(5 pnt)
(b) Wat is de maximale triggerfrequentie f1 waarbij nog kan worden gemeten, zonder dat er meetgegevens verloren gaan ? Waar gaat het vervolgens mis ? Nu wordt ook ADC2 in gebruik genomen en wel met een triggerfrequentie f2 = 3
200 kHz. Om de data-acquisitie desgewenst te kunnen be¨ınvloeden, worden de interrupts IRQ1 en IRQ2 van prioriteiten voorzien. Ga ervan uit dat de beide ADCmodules exact tegelijkertijd worden gestart. (5 pnt)
(c) Geef voor het geval dat de prioriteit van IRQ1 hoger is dan die van IRQ2, aan hoe de verzameling en verwerking van de meetgegevens in de tijd verloopt. Geef hiertoe een tijddiagram waarin tenminste is aangegeven op welke tijdstippen de interrupts IRQ1 en IRQ2 optreden en gedurende welke tijdsintervallen ISR1 en ISR2 aktief zijn (Het vullen van de interleaved memories en het DMA-transport hoeft dus niet te worden weergegeven). Gaan er in dit geval meetgegevens verloren?
(10 pnt)
(d) Kunnen de prioriteiten van de interrupts verwisseld worden ?
(5 pnt)
(e) De triggerfrequentie van ADC2 wordt nu verhoogd tot f2 = 300 kHz. Om het aantal malen dat IRQ2 optreedt te beperken, wordt besloten de capaciteit van het interleaved memory MEM2/MEM3 aan te passen, en wel zodanig dat de geheugenblokken van dit memory vergroot worden van 20 kbyte tot 60 kbyte. Bekijk eerst het geval dat de prioriteit van IRQ1 hoger is dan die van IRQ2, kan er nu onoinderbroken gemeten worden ?
(10 pnt)
(f) Kunnen de prioriteiten van de interrupts verwisseld worden ?
4
Antwoorden Computers bij fysische experimenten (3BB20), 25 oktober 2005
1. Quiz (a) Er zijn twee antwoorden die allebei goed zijn: (1) Aangezien gemiddeld wordt over ∆t kunnen er geen hogere frequenties bijdragen dan 1/∆t, die bijdrage is dan wel via aliasing. (2) Het frequentiespectrum gaat niet verder dan 1/2t s . (b) Nee, de correlatiefunctie heeft een piek bij τ = 0, die ge¨ıntegreerd precies de variantie van de ruis geeft. (c) 12 bits gaan noodzakelijkerwijs in 2 bytes, per seconde zijn dat dus 210+1 bytes, dus de meettijd is 220−11 = 512 s. (d) Nee, DMA transport gebeurt buiten de processor om. (e) De RC tijd van dit filter is RC = 10−9 × 10−5 = 10−4 s. De coefficienten van een discreet filter zijn machten van (RC/∆t)(1 + RC/∆t)−1 = 1/2. Daarvan zijn er dus op zijn minst 7 nodig (1/128 = 0.8%). 2. Multichannel analyser (a) Een multichannel analyzer maakt histogrammen van gebeurtenissen. Een gebeurtenis is een gediscretiseerde spanning; er zijn dus 212 = 4096 geheugenplaatsen, en het adres bevat minimaal 12 bits; in de praktijk dus 16 bits. (b) Het geheugen is groot genoeg om het te kunnen addresseren als words (4 bytes = 32 bits). De langste meettijd is dan 232 /220 = 212 s (meer dan een uur). Als we kunnen addresseren in 8 byte integers kunnen we maar liefst 1012 s meten. (c) Nu is de meettijd heel kort geworden: 220 /(2 × 220 ) = 0.5 s. (d) We moeten nu gebruik maken van een interleaved geheugen dat uit twee delen bestaat: als in ´e´en deel gemeten wordt, wordt het andere deel uitgelezen. Dat gebeurt dus 2 maal per s. Een bottleneck is de verbinding met de computer die een snelheid groter dan 2 MB/s moet hebben. 3. Interrupts (a) Per klokcyclus verschijnen aan de uitgang van ADC1 vijf geconverteerde ingangsspanningen (16 bits elk) , dus 10 bytes. De gegevensstroom is dus 10 × f1 bytes/s. Bij een triggerfrequentie f1 = 25 kHz geeft dit 250 × 103 bytes/s. E´en van de geheugenblokken MEM0 of MEM1 (10 kbyte) is dus vol (10×103 )/(250× 103 ) = 40 ms. Dit komt overeen met het tijdsinterval tussen twee opeenvolgende interrupts IRQ1. Het transport van een dergelijk blok gegevens op DMA basis tijdens ISR1 duurt (10 × 103 )/(2.5 × 106 ) = 4 ms. De verwerking van een dergelijk blok, inclusief het DMA transport, duurt (10 × 103 )/(1 × 106 ) = 10 ms. De netto verwerkingstijd door de CPU bedraagt dus 10 - 4= 6 ms; de fractie van de tijd van ISR1 die aan het DMA transport wordt besteed is dus 40 %.
1
I R
M
E
M
I S D
Q
1
1
R
I R
M
E
M
Q
I R 1
Q
1
I R
Q
1
I R
Q
1
. . . . . . . 2
M
1 A
1
0 4
0 8
0
1
2
1 0
6
0
2
0
0
t ( m
s )
(b) Onder (a) is te zien dat het DMA-transport en de verwerking van de gegevens per tijdsinterval van 40 ms een tijdsduur van 10 ms in beslag neemt. De interrupt service routine ISR1 moet afgelopen zijn voordat weer een volgende IRQ1 optreedt, omdat anders al weer naar een van de geheugenblokken MEM0 of MEM1 geschreven wordt voordat dit blok geheel is gelezen, waardoor er meetgegevens verloren gaan. De gemiddelde verwerkingssnelheid van ISR1 bedraagt 1 Mbyte/s; dit is tevens de maximale gegevensstroom aan de uitgang van ADC1 die nog correct verwerkt kan worden. De maximale trigger-frequentie van ADC1 bedraagt dus ( 1 × 106 )/10 = 100 kHz. De beperking is dus de snelheid waarmee de CPU de meetgegevens kan verwerken (middels de interrupt service routines). (c) De gegevensstroom aan de uitgang van ADC2 bedraagt 2 × (200 × 103 ) = 400 kbyte/s. E´en van de geheugenblokken MEM2 of MEM3 (20 kbyte) is dus vol in (20 × 103 )/(400 × 103 ) = 50 ms. Dit komt overeen met het tijdsinterval tussen twee opeenvolgende interrupts IRQ2. Het transport van een dergelijk blok gegevens op DMA basis tijdens ISR2 duurt (20 × 103 )/(2.5 × 106 ) = 8 ms. De verwerking van een dergelijk blok, inclusief het DMA-transport, duurt (20 × 103 )/(1 × 106 ) = 20 ms. Als de prioriteit van IRQ1 hoger is dan die van IRQ2 krijgt de routine ISR1 altijd voorrang; ISR1 wordt na een IRQ1 altijd direct opgestart; een lopende ISR2 wordt hierdoor (tijdelijk) onderbroken of opgeschort. Dit is weergegeven in onderstaand tijddiagram. I R
I R
I S I S
0
R
R
Q
1
Q
I R 2
I R
Q
1
Q
2
I R
I R
Q
1
Q
2
I R
I R
Q
1
I R
Q
I R 2
Q
1
I R
Q
Q
2
1
1 2
4
0 8
0
1
2
1 0
6
0
2
0
0
2 t ( m
4
0
s )
(d) Als de prioriteit van IRQ1 lager is dan die van IRQ2, krijgt de routine ISR2 altijd voorrang; ISR2 wordt na een IRQ2 altijd direct opgestart; een lopende ISR1 wordt hierdoor (tijdelijk) onderbroken of opgeschort. Dit is weergegeven in onderstaand tijddiagram: het datatransport is nog steeds ononderbroken.
2
I R
I R
I S I S
R
Q
1
Q
I R 2
I R
Q
2
I R
I R
Q
1
Q
1
Q
2
I R
I R
2
1
I R
Q
I R
Q
Q
1
I R
Q
Q
2
1
1
R
2
0 4
0 8
0
1
1
2
6
0
0
2
2
0
0
t ( m
4
0
s )
(e) De gegevensstroom aan de uitgang van ADC2 bedraagt nu 600 kbyte/s. E´en van de geheugenblokken MEM2 of MEM3 (nu 60 kbyte) is dus vol in (60×103 )/(600× 103 ) = 100 ms. Dit komt overeen met de tijd tussen twee opeenvolgende interrupts IRQ2. Het transport van een dergelijk blok gegevens op DMA-basis tijdens ISR2 duurt (60 × 103 )/(2.5 × 106 ) = 24 ms. De verwerking van een dergelijk blok, inclusief het DMA transport, duurt (60 × 103 )/(1 × 106 ) = 60 ms. Als de prioriteit van IRQ1 hoger is dan die van IRQ2, gaan er geen meetgegevens verloren, zoals te zien is in onderstaand tijddiagram. I R
I R
I S I S
R
Q
1
I R
Q
2
I R
I R
Q
1
Q
1
I R
Q
2
1
I R
Q
Q
1
I R
Q
1
1
R
2
0 4
0 8
0
1
1
2
6
0
0
2
2
0
0
t ( m
4
0
s )
(f) Als de prioriteit van IRQ1 lager is dan die van IRQ2, gaan er meetgegevens van ADC1 verloren, omdat ISR1 niet altijd is afgehandeld voordat de volgende IRQ1 optreedt. Zoals te zien is in onderstaand tijddiagram treedt dit probleem op bij t = 160 ms na het starten van ADC1 en ADC2, en vervolgens elke 100 ms later. I R
I R
I S
0
I S
R
R
Q
1
I R
Q
1
Q
2
I R
I R
Q
1
I R
Q
1
I R
Q
2
Q
1
I R
Q
1
1 2
4
0 8
0
1
2
1 0
3
6
0
2
0
0
2 t ( m
s )
4
0