An embedded information system, comprising: a load control circuit (168, 230) coupleable to an external memory (170, 216) that contains instructions and constant data associated with at least one application code of a software application, at least one processor (250..258) coupled to at least one interconnect and configured to execute the at least one application code; characterized in that the system comprises an internal memory coupled to the at least one interconnect and configured to store data for the software application as main system memory in a first part of the internal memory and as a cache for storing the instructions and constant data for an execution of the at least one application code from the external memory (170, 216) in a second part of the internal memory; a cache control circuit (150, 260, 350) coupled to the at least one interconnect and further coupled to, or comprising the load control circuit (168, 230), wherein the instructions and constant data are organized by variable sized load units, LUs, and wherein at least two properties of a LU are specified within metadata (128, 220, 328), wherein the at least two properties of the LU comprise a start address of the LU in the internal memory and at least one of: a size of the LU and an end address of the LU; wherein the load control circuit (168, 230) is configured to load the LUs associated with the at least one application code from the external memory (170, 216) with a granularity of a single LU into the internal memory (128, 266, 328); and wherein the cache control circuit (150, 260, 350) is configured to manage the second part of the internal memory that is configured as a cache, based on metadata corresponding to the LUs, by being configured to: observe the execution of at least a part of the at least one application code by detecting at least one of: an LU being executed, and a change from one LU to another LU within the internal memory; load metadata information corresponding to a LU instance from the external memory (170, 216) or the internal memory; specify a next LU to be loaded by the load control circuit (168, 230) into the second part of the internal memory; and specify a next LU to be evicted from the second part of the internal memory when there is insufficient space for loading the next LU. a load control circuit (168, 230) coupleable to an external memory (170, 216) that contains instructions and constant data associated with at least one application code of a software application, at least one processor (250..258) coupled to at least one interconnect and configured to execute the at least one application code; characterized in that the system comprises an internal memory coupled to the at least one interconnect and configured to store data for the software application as main system memory in a first part of the internal memory and as a cache for storing the instructions and constant data for an execution of the at least one application code from the external memory (170, 216) in a second part of the internal memory; a cache control circuit (150, 260, 350) coupled to the at least one interconnect and further coupled to, or comprising the load control circuit (168, 230), wherein the instructions and constant data are organized by variable sized load units, LUs, and wherein at least two properties of a LU are specified within metadata (128, 220, 328), wherein the at least two properties of the LU comprise a start address of the LU in the internal memory and at least one of: a size of the LU and an end address of the LU; wherein the load control circuit (168, 230) is configured to load the LUs associated with the at least one application code from the external memory (170, 216) with a granularity of a single LU into the internal memory (128, 266, 328); and wherein the cache control circuit (150, 260, 350) is configured to manage the second part of the internal memory that is configured as a cache, based on metadata corresponding to the LUs, by being configured to: observe the execution of at least a part of the at least one application code by detecting at least one of: an LU being executed, and a change from one LU to another LU within the internal memory; load metadata information corresponding to a LU instance from the external memory (170, 216) or the internal memory; specify a next LU to be loaded by the load control circuit (168, 230) into the second part of the internal memory; and specify a next LU to be evicted from the second part of the internal memory when there is insufficient space for loading the next LU. observe the execution of at least a part of the at least one application code by detecting at least one of: an LU being executed, and a change from one LU to another LU within the internal memory; load metadata information corresponding to a LU instance from the external memory (170, 216) or the internal memory; specify a next LU to be loaded by the load control circuit (168, 230) into the second part of the internal memory; and specify a next LU to be evicted from the second part of the internal memory when there is insufficient space for loading the next LU.