To find a representation of a byte-array, or of an arbitrary byte-stream is not a trivial problem. We selected two suitable display types for our program visualization.
Firstly, we take the byte-array, and map it into a fractal landscape (Figure 4). Mountains in this landscape mean a lot of activity in this part of the memory, and valleys mean no activity. As a consequence, the user can see which part of the program needs to be discovered in detail. For example, the user can set bounds for an array to visualize this part of the program in another representation (color-maps, rubber-sheets, ...).
The second representation is a tunnel (schematic sketch in Figure 5),
where every single byte takes one small slice of the
tunnel. The color in this tunnel shows the amount of activity in the program. Red colors
mean much activity, whereas blue color indicates less activity.
The problem of this approach is, that the tunnel can get very long, because of the large amount of data. Image, the program has 1 MB in memory, the byte-stream would be 1.048.576 bytes. Reserving 1 cm for 1 byte, the actor would have to ``walk'' 10 km. And this is impossible! Hence, this representation is only effective with small programs.
Both, the fractal landscape and the tunnel are displayed in the CAVE.
As for parallel processes, the user can choose out one of the
active processes, and either fly over the landscape or navigate through the tunnel.
As mentioned before, the CAVE provides an immersive feeling so that the user feels as if being in the
program, which is supplemented by a full three-dimensional effect because of stereoscopy.
The benefits are obvious. The user has the opportunity to see, what is happening in the program and can see enforced activity regions. For example, regarding a poisson equation, the user can see a big mountain range and one lonesome mountain peak. The range represents the array, in which the color values are calculated, and the peak represents the - the barrier for the calculation.