BACKGROUND

A linear memory model refers to a memory addressing paradigm in which memory appears as a single contiguous address space in which a client of the memory, such as central processing unit (CPU) can directly, and linearly, address all of the available memory locations. A key feature of the linear memory model is that the entire memory space is linear, sequential, and contiguous.

In a single tasking embedded application, where memory management is not needed nor desirable, the linear memory model is appropriate because it provides the simplest interface from a programmer's point of view, with direct access to all memory locations and minimum design complexity. A general-purpose computer system, however, requires multitasking, resource allocation, and protection. As such, memory management and address translation are often implemented on top of the linear memory model in order to facilitate, for example, functionality of an operating system, resource protection, or multitasking. Memory management is often implemented through a combination of dedicated hardware (inside or outside the CPU) and software built into the operating system. It is common for processor architectures to implement a linear memory model and, thus, implement advanced memory management and protection technology over the linear memory model.

SUMMARY

According to an example embodiment, a system comprises a centralized object-oriented memory device and a plurality of hardware clients configured to communicate, directly, with the centralized object-oriented memory device via object-oriented message transactions. The centralized object-oriented memory device effects inter-hardware-client communication among the plurality of hardware clients based on the object-oriented message transactions.

The centralized object-oriented memory device may include at least one physical memory. A plurality of objects may be instantiated in the at least one physical memory. Each object of the plurality of objects may be defined by a respective object class. Each object may include at least one respective data member and at least one respective method, as defined by the respective object class.

The at least one physical memory may have at least one object instantiated therein. The at least one object is associated with a respective object class and includes at least one respective data member and at least one respective method, as defined by the respective object class. The centralized object-oriented memory device may be configured to employ the at least one object to effect the inter-hardware-client communication.

A pair of first-in first-out (FIFO) objects may be instantiated in the at least one physical memory. The centralized object-oriented memory device may be configured to employ the pair of FIFO objects to effect the inter-hardware-client communication. It should be understood, however, that the centralized object-oriented memory device may employ other object(s) to effect such inter-hardware-client communication and is not limited to employing a pair of FIFO objects to effect same.

The centralized object-oriented memory device may include a hardware controller. The hardware controller may be configured to enable bi-directional communication between a first hardware client and a second hardware client of the plurality of hardware clients by managing the pair of FIFO objects intra the object-oriented memory device.

The object-oriented message transactions may include an unsolicited message associated with handles of the pair of FIFO objects. The hardware controller may be further configured to generate the unsolicited message and to broadcast the unsolicited message generated to the first and second hardware clients. The unsolicited message may indicate that the pair of FIFO objects are available for the bi-directional communication.

The centralized object-oriented memory device may be configured to employ a first FIFO object of the pair of FIFO objects to effect communication from a first hardware client of the plurality of hardware clients to a second hardware client of the plurality of hardware clients. The centralized object-oriented memory device may be further configured to employ a second FIFO object of the pair of FIFO objects to effect communication from the second hardware client to the first hardware client.

The object-oriented message transactions may include a first object-oriented message transmitted by the first hardware client to the centralized object-oriented memory device and a second object-oriented message transmitted by the centralized object-oriented memory device to the second hardware client.

The hardware controller may be configured to decode the first object-oriented message and execute a push method of the first FIFO object to push data received from the first hardware client. The data may be included in the first object-oriented message. The first FIFO object and push method may be identified in the first object-oriented message. The hardware controller may be further configured to generate an interrupt to the second hardware client by transmitting the second object-oriented message to the second hardware client. The interrupt may notify the second hardware client of an inter-hardware-client message from the first hardware client. The data may represent the inter-hardware-client message.

The object-oriented message transactions may include a third object-oriented message transmitted by the second hardware client to the centralized object-oriented memory device in response to servicing the interrupt, transmitted as the second object-oriented message. The object-oriented message transactions may include a fourth object-oriented message. The third object-oriented message may be a request to call a pop method and may include a handle to the first FIFO object. The hardware controller may be further configured to execute the pop method of the first FIFO object and transmit the data, returned by the pop method executed, to the second hardware client via the fourth object-oriented message, thereby passing the inter-hardware-client message from the first hardware client to the second hardware client.

The hardware controller may be configured to decode the second object-oriented message and execute a push method of the second FIFO object to push data received from the second hardware client. The data may be included in the second object-oriented message. The second FIFO object and push method may be identified in the second object-oriented message. The hardware controller may be further configured to generate an interrupt to the first hardware client by transmitting the first object-oriented message to the first hardware client. The interrupt may notify the first hardware client of an inter-hardware-client message from the second hardware client. The data may represent the inter-hardware-client message. The third object-oriented message may be transmitted by the first hardware client to the centralized object-oriented memory device in response to servicing the interrupt, transmitted as the first object-oriented message.

The third object-oriented message may be a request to call a pop method and may include a handle to the second FIFO object. The hardware controller may be further configured to execute the pop method of the second FIFO object and transmit the data, returned by the pop method executed, to the first hardware client via the fourth object-oriented message, thereby passing the inter-hardware-client message from the second hardware client to the first hardware client.

According to another example embodiment, a method may comprise communicating, directly, by a centralized object-oriented memory device, with a plurality of hardware clients via object-oriented message transactions. The method may further comprise effecting inter-hardware-client communication among the plurality of hardware clients based on the object-oriented message transactions.

Alternative method embodiments parallel those described above in connection with the example system embodiments.

According to another example embodiment, a system may comprise a plurality of object-oriented memory devices capable of inter-object-oriented-memory-device communication and a plurality of hardware clients. A hardware client of the plurality of hardware clients may be configured to communicate, directly, to a respective object-oriented memory device of the plurality of object oriented memory devices via object-oriented message transactions. The inter-object-oriented-memory-device communication may effect inter-hardware-client communication among the plurality of hardware clients based on the object-oriented message transactions.

According to another example embodiment, a method may comprise communicating, at an object-oriented memory device, directly with a hardware client of a plurality of hardware clients via object-oriented message transactions. The object-oriented memory device is capable of inter-object-oriented-memory-device communication. The method may further comprise effecting inter-hardware-client communication among the plurality of hardware clients based on the inter-object-oriented-memory-device communications and the object-oriented message transactions.

It should be understood that example embodiments disclosed herein can be implemented in the form of a method, apparatus, system, or computer readable medium with program codes embodied thereon.

