A system is a functionality related assembly of parts. This invention relates to a man made system. Such an assembly may include both organic and inorganic subassemblies and subsystems. Currently, most man made systems are assembled almost entirely from man made parts, such as electronic components; optical components; mechanical parts and or similar. Most of the behavioural complexity relating to today's systems is contained within integrated circuit assemblies, especially but not exclusively in the form of programmable circuits, such as microprocessors or state machines.
In some applications it is desirable to identify uniquely a system in order to distinguish it from other similar systems. One method of identifying biological systems, like humans, is to create a numeric value based on the system's uniquely distinguishing features (biometrics) such as a fingerprint or iris pattern. It is desirable to have a comparable form of identification for synthetic systems, (machines) and is known as an ICmetric. Like biometrics, ICmetrics can be derived from properties that change with time but have a core underlying feature which is deterministic and can be reliably extracted. Such properties are useful for identification purposes including signatures and other security applications like passports.
Although system properties can be stable, properties can also be unstable, non-deterministic and have no extractable core underlying feature. By deriving a unique value/key from a highly dynamic property, the key can be changed frequently, providing a high degree of confidence that a system or its communications have not been compromised by another, possibly malicious entity. A value derived in this way is ideal for security applications such as key generation for an asymmetric encryption system.
A conventional approach to generating unique values in a machine is a random number generating algorithm which may be realised as software or a hardware circuit. The problem with algorithms is that they are inherently deterministic unless based on samples of real world non-deterministic properties. A value derived from carefully chosen system properties can be naturally non-deterministic. The execution path through a program is changed greatly by the applied data as is the sequence of values that pass over the buses. This is further enhanced in high-performance computer architectures that incorporate circuits with pipelines and caches, which have highly non-deterministic effects. Even a small change on a position sensor can have an apparently chaotic impact on certain derived values.
Well designed integrated circuits normally include infrastructure circuits designed to help the developer debug and improve the system. Debug infrastructure can include monitoring circuitry such as; event detection trigger circuits, trace circuits and profiling circuitry which observe critical connections within circuits. Event detection circuits produce a stimulus for use by other circuits upon a signal meeting preset conditions. Trace circuits create a log that records the transitions of a chosen signal such as the data and address buses. Profiling circuitry contains counters that can record how many iterations of an action or event have occurred.