Here is some information on how Subaru ECUs work, and the general principles involved in tuning.
The standard 99/00 model year Subaru Impreza ECU is extremely powerful. It contains a 32-bit RISC processor running at 20MHz, which can easily perform the tasks required of it, and in a more flexible manner than many other systems. Because of all this spare power, the ECU is able to send and receive diagnostic data as fast as the diagnostic lines can take it.
Each basic engine function (such as ignition, fuelling and boost control) is governed by one or more 2-dimensional maps. Let's look at boost control as an example.
A typical boost control map is an 8 by 8 grid of numbers. The rows represent RPM, whilst the colums represent engine load. The values in this grid are the desired boost pressures. Many times per second, the ecu will check the current engine RPM and engine load, and will look up the boost pressure that it should try to maintain. In the example above, each row in the grid might represent 1000 RPM steps, the 8 steps being equivalent to 1000, 2000, 3000, 4000, 5000, 6000, 7000 & 8000 RPM.
An 8 by 8 grid will contain 64 values, but this does not mean that only one of those values may be chosen. The ECU uses a method called 'interpolation' to calculate values that lie in between the values in the grid. For example, a map may contain entries for 1000 (say 10PSI) & 2000 RPM (say 11PSI), whilst the engine is actually sitting at 1600 RPM. The ECU will take the two values and 'draw a line between them'. It then travels along that line until it gets to the required RPM values. This interpolated value is what it will use, and in this case would be 10.6 PSI. (This is only a simple example of how 1-dimensional interpolation works. On a 2-d map, the interpolation must be done in 2 dimensions).
Whilst interpolation greatly increases the accuracy of values retrieved from a map, it is no substitute for a larger map. The larger (X by Y) a map is, the closer all guessed values will be to a 'real' map value.
The more rows and columns that a map has, the finer the control over that engine parameter. Ignition and fuelling maps in the Impreza ECU are 16 by 16. Compare these sizes of with other ECUs when making your choice.
When tuning a car for increased performance, there will become a greater difference between the minimum and maximum power (load) that the engine can produce. This is when a large number of load zones becomes very useful. The Subaru fuelling and ignition maps have 16 load zones. Compare this with aftermarket ecus when making your choice.
Scaling maps allow finer engine control in the areas where it is needed most. Many ECUs do not use scaling maps at all as in the simple example above. Subaru use them on all maps.
Again, let's consider how a scaling map might apply to boost control. For the majority of the rev range, the desired boost pressure will be the same. However, in the low and high extremes of the range, finer control may be required. This is where a scaling map can help.
Take the previous example: There are 8 RPM zones at equally spaced 1000 RPM intervals. Fine control over boost may be needed between 500-2500 and 6000-7000 RPM, with the mid range boost being constant. A scaling map allows you to specify the row headings, so to speak - it allows you to space the rows in the main map unequally across the rev range. So instead of fixed 1000 RPM intervals, as an example you could have 750, 1250, 1750, 2500, 3000, 6000, 6500, 7000 RPM - that's still 8 zones, but used where you need them most. Interpolation takes care of the wide gaps, and you get the resolution where you need it.
The Impreza has scaling maps on all its fuelling, ignition and boost maps, greatly increasing the effective size of the maps.