these machines don't use GPU's. not needed. the approach is completely different. you don;t need shaders and polygon stuff . it's not a gaming machine. what you do need is a 2d image composer that has high bandwidth. you can't cram that through pci , you'll be boggin the system down.
i have had a technical explanation on how they do these things. what i am explaining now is based on the infiniium architecture ( and the older 546xx series. ) in essence the megazoom system.
1) let's assume we have infinite acquiition memory. we have a convertor that digitizes the incoming signal at a fixed speed ( as hard as it is designed to go). lets say 1 gigasample per second.
there is a trigger comparator that looks at the data coming from the convertor. when 'trigger' this logic block resets a counter.
the counter controls the address lines of this infinite memory.
so now you have a basic acquisistion system. we have a valid trigger event : reset the counter , at every subsequent clocktick a sample is written to memory and the address counter is incremented so the next sample will fall in the next memory slot.
so far so good ( forget about pretrigeer and other stuff , i'll come back to that later...
this memory has a second address bus and second data bus . this port allows random access to samples in the memory. this bus runs at amuch lower speed. This kind of memory is called a FISO : Fast-in , slow out. it's not a fifo ! data will be overwritten when a trigger comes. the output is not sequential as in a fifo but random as in normal memory. the agilent scopes today still ave this FISO memory, it is on board the a/d convertor and runs at full throttle. pure static ram. the backend pipe goes to the slower ddr ram. ( ddr can't follow the breakneck speed the frontend runs at)
2) we have a display system. the display consists of an lcd deisplay that is refreshing itself at a reasonaby low speed. 60 times a second it can refresh its pixels.
the display gets its data from an image buffer. this buffer is dual ported. this means that the block filling the buffer does not have to wait for the display.
the image buffer itself gets its data from an image composer. and this is where the magic happens.
3) the image composer behaves like a stack of transparencies . remeber the plastic sheets used on a projector. you draw with colored pen. you can put one or more transparencies on top of each other to create a composite image. that is exavlty what the image composer does. it has drawing 'planes'
one plane per channel ( 4 channels is 4 planes ) 1 plane for static images like the graticule , 1 plane for quasi static text , 1 plane for the graphical menuing system and so on.
what you see through the projector is a composite image.
the cpu plots its text and buttons on the allocated planes. it never gets to see the trace data as that is drawn on other planes , by the trace plotter.
4) the trace plotter. for clarity and ease understanding. let's assume our viewport on the lcd display is 16 pixels wide. i know very bad resolution but this is explanation.
there is two thing. timebase and time offset. timebase dictates how far the points are apart from each other. time offset dictates how far from the trigger point we begin.
if i display at fastst timebae with zero time offset i need to show sample 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 and im done.
if i scroll in time i show sample 25,26,27 .... up till (25+16)
if i decrease timebase 1 step the distance between samples changes.
i now show sample 0,2,4,6,8 ...
take it down another notch and it becomes 0,5,10,15,20,25 .. and so on.
if i scroll now. it could be sample 27,27+5 , 27+10 , 27 +15 .... to 27 + (16x5)
so this image composers goes to to FISO and grabs only the samples it is interested in. it does not care about the rest ! the sample value gives it the vertical position on the screen the pixel needs to be plotted.
it puts a byte there with value 255 (max intenisty )
5) the grader. this blok does the image decay. a sample is a point taken from memory and plotted with max intensity. on every sweep of the lcd refresh all the pixels on the plane are now decremented in value (intensity ! , NOT position ! )
that is how you create the afterglow.
control the speed of the decay (how many times a second you decrement and by what value you decrement ) and you control image persistence.
and there you have it. the basics of the megazoom system
there ismore at play. the megazoom actually interpolates between groups of pixels so you don't miss spikes
the memory is not infinite , bt is timed in such a way that the a/d sampling speed does not need to come down for a long time. the deeper the memory the longer you can go flat out . once you hit slower timebase speed you hit the end of memeory before a screen refreh and then you need to throttle down the a/d
the image composer keeps writing as hard as it can to the plane. even if the lcd can only refresh 60 times a second the drawing plane can collect millions of waveforms. so that is what they mean with the waveform rate : how many waveforms can we overlay on each other inbetween an lcd refresh cycle. the more you can write there the bigger the chance is one waveform will be the glitch you were looking for. on the next lcd refresh it gets shown on screen and then the decay kicks in..