Hello everyone,
I recently have been testing the direct internal memory access of the Cortex A53 on the Xilinx ultrascale+ SoC, most notably to access the L1 data cache (data portion) and L1 instruction cache (data portion). I can successfully access the contents of both caches through the CP15 operations as described in the TRM but the issue I'm facing is that after disabling the instruction cache, the content in instruction cache is different when comparing previous reads on the instruction cache. The TRM has a section on the behavior of disabling the instruction cache but nothing that would explain the instruction cache contents changing other than perhaps cache maintenance operations (which I am not directly running). The procedure I have been using to test this behavior is:
The result of this procedure is that multiple (probably more than 50 or so) print messages appear notifying a difference between the array with the instruction cache contents and the current instruction contents. I can perform the same procedure on the L1 data cache that results in not receiving any print messages which is expected but not the instruction cache. It's completely possible that I am not accessing or storing the instruction cache correctly but the data cache I implemented is working as expected and I have made the necessary changes so that the instruction cache should perform in a similar way by using the TRM section on accessing the instruction cache. This brings me to a couple of questions:
Any help would be greatly appreciated. Thank you.
Best Regards,
Nathan
Hi Nathan,
The disabled behavior means that fetches won't trigger lookups or allocations, but the cache will continue to be used for internal buffering (this usage is associated with the pre-decoder).
That would make sense. Thank you for the response, Eugene. I imagine this means that there is no way to prevent the cache being used for internal buffering?
Yes. Disabling instruction cache does not seem to meet your purpose.
ResolutionFor system build with Intel® Boxed Processors, these are the possible causes with tips to try:-
Overheating: When overheating, the CPU’s temp control circuit will attempt to throttle the CPU’s clock (stop/go/stop/go) to try and cool the CPU. That condition is called PROHOT. If the CPU continues to heat further, then the temperature control circuit (TCC) will halt the CPU completely, full stop to prevent damage. That’s call THERMTRIP and is an unrecoverable condition requiring a hard reboot (AC unplug, reboot).
Make sure the thermal solution is compatible and installed properly. Refer to troubleshooting overheating issues.Power Fault: Power fault, lower than necessary total power supply (for example, a 450W power supply for system with 550W of desired power). It is common to see a hang here when loading an application that causes a power spike. Some low-cost power supplies, even if rated for enough power, often do not have robust enough power components to handle a large/instant power increase.Memory Issues: Either bad devices, DIMM improperly seated, DIMM edge connector, or size. Make sure the memory is seated well.Try a different memory.Try to have sufficient amount of memory in your build system.Motherboard issues: If possible, swap with a good working motherboard.Try to update system BIOS to the latest version, or reset BIOS to defaults, You can also try to clear CMOS.For laptops, All-In-Ones, or notebooks, refer to your to OEM (original equipment manufacturer): Computer Manufacturer Support Websites.
Other reasons could be:
CPU reaches 100% of usage. Refer to how to fix high CPU usage.Drivers not updated: Open the Start menu, then Settings. Click Updates & Security, then the Check for Updates button. This will update critical drivers.
Windows* operating system needs to be updated.
Greeting,
Rachel Gomez