You might take a multimeter on the ohm scale and an external infrared temperature sensor and check the resistance calibration of the IAC, CTS (intake air and coolant temperature sensors) at various temperatures and see if they have not drifted with age. Also if the Map sensor is off a little bit (need a good vacuum gauge) testing voltage readings at various vacuum readings, they can all affect the computers igniton timing and cause knocking. Lastly if your engine is running a little bit too hot, under heavy load it cause pre ignition (knocking).
Some injector cleaner might help a little bit for a while too.