This is basically just a subset of the information that Merchgod wrote about in his magnificent Subaru’s knock control strategy explained thread. However I want to present the most important concepts in a format that will hopefully be easier for new tuners to understand. After the stuff below makes sense to you, read Merchgod’s version if you want to know more.
Also note that Merchgod focused primarily on how the system works, whereas I’m adding my own theories on why the system works the way that it does. If the why is wrong, that’s my fault, not his.
1. First Principles
- Occasionally the ECU will hear what sounds like knock. Sometimes it really was knock, sometimes it was just noise.
- If the tune is good, the car can safely run full ignition advance at all times, as long as you’re using premium fuel. By ‘full ignition advance’ I mean that it can run the timing specified in the base timing table plus 100% of the timing specified in the ignition advance table.
- The main purpose of the knock correction system is to detect when you have put in a tank of 87 octane - when that happens, the ECU needs to pull timing across the board to keep the motor from blowing up.
2. Knock Learning
In order to detect low-octane fuel, the ECU remembers the RPM and load where knock has happened recently. It keeps track of this in the ‘fine learning knock correction’ table - I’ll refer to it as the ‘knock learning’ table for brevity. This table is not part of the ROM, because the contents are learned as you drive.
Merchgod’s “Learning View” utility shows the knock learning table. You can find a lot of screenshots
The ‘knock learning’ parameter in your data logs is just the value from this table, at the current RPM and load.
If knock has happened in just 2 or 3 different cells, that’s no big deal - probably just noise. This is normal even with a good factory tune. With a good tune, the majority of the knock events that the ECU detects will actually just be noise.
3. IAM: The solution to 87 octane
But if you are running 87 octane, you’ll get knock in many different cells. When the ECU sees many corrections in many cells, it reduces the ‘Ignition Advance Multiplier’ to pull timing broadly.
When it changes IAM, it clears the knock learning table, so it can observe how the engine behaves with the new IAM setting. (When IAM is less than 100%, the ECU can also put positive values into the knock learning table, to see if maybe you’re running on premium again.)
The ECU can also respond to knock by just pulling timing for a short period of time, without taking note of it in the knock learning table. This is what shows up in the ‘feedback knock correction’ column in your data logs.
Feedback correction is used when load is changing rapidly. The ECU seems to believe that if load is changing rapidly, you’re probably just shifting or something like that. When knock happens due to rapid throttle changes, there’s a good chance that the rapid throttle change (rather than poor fuel) triggered the knock. So the ECU pulls timing just in case, but it does not put the correction into the knock learning table.
At low loads, and/or low RPM the ECU ignores the knock sensor completely. Apparently there’s no point reducing timing at loads lower than about 1.0 or RPM lower than about 1000. The actual limits are set in the tune, and they vary a bit across the stock tunes.
6. Partial relevance
Feedback correction is active down to the aforementioned limits. The knock learning table is only used between about 1750 RPM and 5750 RPM, and between 0.7 and 2.0 load. Again the limits are configurable, and they vary.
IAM will only be adjusted in response to knock events that occur between roughly 1.0 and 2.75 load, and 1750–5750 RPM. Those numbers come from the factory tune on my Legacy GT, yours may be different. It’s widely believed that Subaru just doesn’t trust the knock sensor to be accurate outside those ranges - there’s too much false knock and not enough legitimate knock. So it uses feedback correction - since they’re short-lived, and not learned, it’s no big deal to have unnecessary corrections.
7. Choose your own relevance
Some tuners, myself included, increase the top end of the load and RPM ranges so that IAM and knock learning can be active beyond redline and beyond the maximum load the car will ever see. I have had no issues with false knock, and I have seen legitimate knock detected and mitigated appropriately at high RPM and load.
Some tuners raise the low end of the limits (for example, 1.0 load or 2000 RPM) to suppress knock corrections (learned and otherwise) at low-ish load or RPM. Some engines just seem to be more noisy than others. I’ve noticed a lot of alleged knock events below 2500 just driving around, though in my case they haven’t been significant enough to raise those limits.
 I believe that AccessTuner Race can show that table as well.
 Or they are legitimate knock, but they are rare enough that the engine can tolerate them. I don’t know which is the case. It happens periodically with the stock tune, and Subaru provides a 6/60 warranty on motors with those tunes, so I figure it can’t be too bad.
 Cobb calls it the Dynamic Advance Multiplier (DAM).
 Cobb class this ‘Knock Correction.’