Switch module based non-volatile memory in a server
View Patent ↗A switch module having shared memory that is allocated to other blade servers. A memory controller partitions and enables access to partitions of the shared memory by requesting blade servers.
1. A switch module based non-volatile memory on a first blade server, the switch module comprising:
at least one non-volatile memory device;
a memory controller coupled to and configured to control the at least one non-volatile memory device and configured to deduplicate data written to shared memory on a blade server system;
an interface circuit coupled to the memory controller, the interface circuit configured to allocate memory of the at least one non-volatile memory device to a second blade server in the blade server system; and
a switching circuit for switching server signals to the memory controller.
2. The switch module of claim 1 wherein the at least one non-volatile memory device comprises a plurality of non-volatile memory devices having an address range at least partially allocated to the second blade server by the interface circuit.
3. The switch module of claim 1 further comprising an external management interface for interfacing the memory controller to a management console.
4. A switch module based shared memory on a blade server, the switch module comprising:
a solid state drive comprising a plurality of non-volatile memory devices and a memory controller, the solid state drive organized into a plurality of sectors; and
a Peripheral Component Interconnect Express (PCI-E) interface coupled to the solid state drive and configured to allocate the sectors of the solid state drive to blade servers in a blade server system and configured to deduplicate data written to shared memory on the blade server system.
5. The switch module of claim 4 wherein the memory controller is configured to map assignment of the plurality of sectors to a range of physical memory addresses for the plurality of non-volatile memory devices.
6. The switch module of claim 4 wherein the PCI-E interface is further configured to track mapping of the plurality of sectors to memory addresses assigned to the plurality of non-volatile memory devices.
7. The switch module of claim 4 wherein the memory controller is configured to enable access to the solid state drive in response to allocation of the sectors to the blade servers.
8. A method for operation of switch module based shared memory on a blade server, the method comprising:
locating unused memory locations in the shared memory on a blade server in a blade server system;
controlling the shared memory using a memory controller, wherein the memory controller is coupled to the shared memory, and wherein controlling the shared memory includes:
erasing unused memory locations if they are still programmed;
mapping unused memory locations to physical memory addresses of the shared memory; and
deduplicating data written to the shared memory using the memory controller; and
allocating access to unused memory locations from a predetermined blade server using an interface circuit, wherein the interface circuit is coupled to the memory controller.
9. The method of claim 8 further comprising receiving a request for allocation of at least a portion of the shared memory to a blade server.
10. The method of claim 8 wherein mapping unused memory locations comprises a peripheral component interconnect express interface circuit tracking a map of solid state disk sectors to physical memory addresses.
11. The method of claim 8 wherein the shared memory is organized as a solid state disk drive having a plurality of logical sectors wherein each logical sector is mapped to a physical memory address by a memory controller.
12. The method of claim 8 and further comprising enabling access to unused memory locations by the predetermined blade server.
13. The method of claim 8 and further including storing a database of unused memory locations in one of a memory controller or a peripheral component interconnect express interface circuit.
14. The method of claim 8 and further including compressing the data prior to writing the data to the shared memory and decompressing the data after reading the data from the shared memory.