1. An apparatus for pooling memory resources across multiple nodes, comprising: a plurality of shared memory controllers, wherein each node of the multiple nodes is connected to one or more of the plurality of shared memory controllers, and wherein each shared memory controller is connected through a Plattsmouth Link, a link that supports both memory semantics and an input/output (I/O) protocol using a common set of pins, a networking stack, or any combination thereof; and a pool of memory connected to a shared memory controller, the pool of memory comprising a far memory, a persistent memory, and a block memory, wherein a portion of the pool of memory is allocated to each node of the multiple nodes.