In general, a system and method is provided for dynamically reallocating computer memory. A mapper receives requests to access data. The requests include bus addresses, and the mapper maps the bus addresses to memory unit addresses based on a plurality of mappings maintained by the mapper. The memory unit addresses identify a plurality of memory locations including a destination memory location and a source memory location. Data requested by the requests received by the mapper is accessed based on the memory unit addresses mapped from the bus addresses included in the requests. When desired, a data value from the source memory location is dynamically moved to the destination memory location, and the mappings are updated such that a bus address mapped to a memory unit address identifying the source memory location is instead mapped to a memory unit address identifying the destination memory location.
In one embodiment, a system includes a plurality of memory controllers each coupled between a processor and a respective memory. Each memory controller includes a plurality of decoders. Each decoder of a given memory controller may be independently configurable to match on a respective value of a subset of address bits such as the low-order cache line address bits, for example, received in a memory request. In one specific implementation, the number of decoders included on a given memory controller may correspond to the number of ways in which the memory is interleaved.
A method for in-place interleaving and de-interleaving of a memory includes, in one embodiment, generating a new address corresponding to a new location in the memory by performing a bit-wise XOR operation on a number of bits of a first portion of a current address and a number of bits of a different portion of the current address. The current address corresponds to a current location in the memory. In addition, the method includes performing a data swap on data stored at the current location with data stored at the new location.
A resource controller allocates a portion of network memory to a receive path for receiving data and to a transmit path for transmitting data. Network traffic patterns are monitored including the amount of data received and transmitted by the network processing device. The resource controller determines based on the monitored traffic patterns if the transmit path or receive path has allocated a desire amount of network memory. The resource controller removes underutilized resources in the receive or transmit paths. Removed network memory is returned to a resource pool and made available for allocation to another receive path or transmit path that needs additional network memory. An artificial intelligence system predicts future network resource allocations to further increase the efficiency of the resource controller's network resource allocation. The resource controller can monitor multiple network interface cards with the resource controller dynamically reallocating network resources amongst the multiple network interfaces.