System and method for accessing non processor-addressable memory
AssigneeCray Inc.
InventorRoger A. Bethard
Life of this patent
Estimating the term…
Abstract
A system and method for addressing memory and transferring data, which in some embodiments include one or more processor translation look-aside buffers (TLBs) and optionally one or more I/O TLBs, and/or a block transfer engine (BTE) that optionally includes a serial cabinet-to-cabinet communications path (MLINK). In some embodiments, the processor TLBs are located within one or more common memory sections, each memory section being connected to a plurality of processors, wherein each processor TLB is associated with one of the processors. The BTE performs efficient memory-to-memory data transfers without further processor intervention. The MLINK extends the BTE functionality beyond a single cabinet.
Claims23
An information-handling system, comprising:
- a plurality of processing elements;
- and
- a memory having a first memory section, wherein the first memory section is operatively coupled to each processing element, and wherein the first memory section comprises:
- a memory array having processor-addressable and non processor-addressable memory;
- a memory interface operatively connecting the memory array to each of the processing elements;
- and
- a block transfer engine operatively coupled to between the memory interface and the memory array, wherein the block transfer engine operates to receive a block transfer command from one of the processing elements and to transfer data from a first memory location in the non processor-addressable memory of the memory array to a second memory location in the processor-addressable memory of that memory array, wherein the first memory location can be accessed only indirectly by one or more of the plurality of processing elements via the block transfer engine and wherein the second memory location can be accessed directly by one or more of the plurality of processing elements using a processor address generated by a corresponding processing element;
- wherein the memory interface includes one or more FIFOs, wherein the one or more FIFOs accept block transfer commands from one or more of the processing elements and transmit transmits the block transfer commands to the block transfer engine.
An information-handling system, comprising:
- a plurality of processing elements;
- and
- a memory having a first memory section, wherein the first memory section is operatively coupled to each processing element, and wherein the first memory section comprises:
- a memory array having processor-addressable and non processor-addressable memory;
- a memory interface operatively connecting the memory array to each of the processing elements;
- a block transfer engine operatively coupled between the memory interface and the memory array, wherein the block transfer engine operates to receive a block transfer command from one of the processing elements and to transfer data from a first memory location in the non processor-addressable memory of the memory array to a second memory location in the processor-addressable memory of that memory array, wherein the first memory location can be accessed only indirectly by one or more of the plurality of processing elements via the block transfer engine and wherein the second memory location can be accessed directly by one or more of the plurality of processing elements using a processor address generated by a corresponding processing element;
- and
- a plurality of processor translation look-aside buffers that are each operatively coupled to the memory array, wherein each of the processor translation look-aside buffers is associated with each of the processing elements, and wherein each of the processor translation look-aside buffers has a first plurality of entries, each of the first plurality of entries being used to map a processor address into a first memory array address of the memory array.
A method for transferring data in a memory including a memory array, a block transfer engine and a memory interface, wherein the memory interface includes a FIFO, the method comprising:
- creating a block transfer command in one of a plurality of processors, wherein the block transfer command includes an amount of transfer data, a source transfer address, and a destination transfer address, wherein the source transfer address is a first memory location in a non processor-addressable memory of the memory array and wherein the destination transfer address is a second memory location in a processor-addressable memory of that memory array, wherein the first memory location can be accessed only indirectly by one or more of the plurality of processors via the block transfer engine included in the memory and wherein the second memory location can be accessed directly by one or more of the plurality of processors using a processor address generated by a corresponding processor;
- routing the block transfer command from the processor that generated the block transfer command to the memory, wherein the routing of the block transfer command includes receiving the bock transfer command in the FIFO, transmitting the block transfer command from the FIFO to the block transfer engine and processing the block transfer command in the block transfer engine;
- and
- transferring the amount of transfer data from the source transfer address to the destination transfer address.
An information-handling system comprising:
- a memory including a memory array and a memory interface, wherein the memory array includes processor-addressable and non processor-addressable memory;
- and
- a plurality of processing elements, wherein each of the processing elements is operatively coupled to the memory;
- wherein the memory includes transferring means for transferring data from a first memory location in the non processor-addressable memory of the memory array to a second memory location in the processor-addressable memory of that memory array, wherein the first memory location can be accessed only indirectly by one or more of the plurality of processing elements via the transferring means and wherein the second memory location can be accessed directly by one or more of the plurality of processing elements using a processor address generated by a corresponding processing element;
- and
- wherein the memory interface includes one or more FIFOs, and wherein the one or more FIFOs accept block transfer commands from one or more of the processing elements and transmit the block transfer commands to the transferring means.
A system comprising:
- a first information-handling system, the first information-handling system comprising:
- a plurality of first processing elements;
- and
- a first memory section, wherein the first memory section is operatively coupled to each of the first processing elements, and wherein the first memory section comprises:
- a first memory array having processor-addressable and non processor-addressable memory;
- a first memory interface associated with the first memory array;
- and
- a first block transfer engine operatively coupled between the first memory interface and the first memory array, wherein the first block transfer engine is associated with each of the first processing elements through the first memory interface and operates to receive a block transfer command from one of the first processing elements and to transfer data from a first memory location in the non processor-addressable memory of the first memory array to a second memory location in the processor-addressable memory of the first memory array, wherein the first memory location can be accessed only indirectly by one or more of the plurality of first processing elements via the first block transfer engine and the second memory location can be accessed directly by one or more of the plurality of first processing elements using a processor address generated by a corresponding first processing element;
- wherein the first memory interface includes one or more FIFOs, and wherein the one or more FIFOs accept block transfer
- commands from one or more of the plurality of first processing elements and
- transmit the block transfer commands to the first block transfer engine;
- a second information-handling system, the second information-handling system comprising:
- a plurality of second processing elements;
- and
- a second memory section, wherein the second memory section is operatively coupled to each of the second processing elements, and wherein the second memory section comprises:
- a second memory array;
- a second memory interface associated with the second memory array;
- and
- a second block transfer engine operatively coupled to the second memory array, wherein the second block transfer engine is associated with each of the second processing elements through the second memory interface;
- and
- a communications channel connecting the first and second information-handling systems;
- wherein the second block transfer engine transfers an amount of data from a first memory address in the second memory array to a second memory address in the first memory array over the communications channel.
A system comprising:
- a first information-handling system, the first information-handling system comprising:
- a plurality of first processing elements;
- and
- a first memory section, wherein the first memory section is operatively coupled to each of the first processing elements, and wherein the first memory section comprises:
- a first memory array having processor-addressable and non processor-addressable memory;
- a first memory interface associated with the first memory array;
- a first block transfer engine operatively coupled between the first memory interface and the first memory array, wherein the first block transfer engine is associated with each of the first processing elements through the first memory interface and operates to receive a block transfer command from one of the first processing elements and to transfer data from a first memory location in the non processor-addressable memory of the first memory array to a second memory location in the processor-addressable memory of the first memory array, wherein the first memory location can be accessed only indirectly by one or more of the plurality of first processing elements via the first block transfer engine and the second memory location can be accessed directly by one or more of the plurality of first processing elements using a processor address generated by a corresponding first processing element;
- and
- a processor translation look-aside buffer associated with each of the plurality of first processing elements, and wherein each processor translation look-aside buffer has a plurality of entries, each of the entries being used to map a processor address received from its associated processing element into a memory array address within the first memory array;
- a second information-handling system, the second information-handling system comprising:
- a plurality of second processing elements;
- and
- a second memory section, wherein the second memory section is operatively coupled to each of the second processing elements, and wherein the second memory section comprises:
- a second memory array;
- a second memory interface associated with the second memory array;
- and
- a second block transfer engine operatively coupled to the second memory array, wherein the second block transfer engine is associated with each of the plurality of second processing elements through the second memory interface;
- and
- a communications channel connecting the first and second information-handling systems;
- wherein the second block transfer engine transfers an amount of data from a first memory address in the second memory array to a second memory address in the first memory array over the communications channel.
A method for transferring data in a system including a first information-handling system and a second information-handing system, wherein the first and second information-handling system includes a first and second memory, respectively, wherein the first memory includes a first memory array, a first block transfer engine and a first memory interface, wherein the first memory interface includes a FIFO, the method comprising:
- creating a first block transfer command in one of a plurality of first processors of the first information-handling system, wherein the first block transfer command includes a first amount of transfer data, a first source transfer address, and a first destination transfer address, wherein the first source transfer address is a first memory location in a non processor-addressable memory of the first memory array and wherein the first destination transfer address is a second memory location in a processor-addressable memory of the first memory array, wherein the first memory location can be accessed only indirectly by one or more of the plurality of first processors via the first block transfer engine included in the first memory and wherein the second memory location can be accessed directly by one or more of the plurality of first processors using a processor address generated by a corresponding first processor;
- creating a second block transfer command in a second processor of the first information-handling system, wherein the second block transfer command includes a second amount of transfer data, a second source transfer address, and a second destination transfer address, wherein the second source transfer address is a third memory location of the first memory and wherein the second destination transfer address is a fourth memory location of the second memory;
- routing at least one of the first and second block transfer command from corresponding processors that generated the block transfer command to the first memory of the first information-handling system, wherein the routing of the at least one of the first and second block transfer command includes receiving the at least one of the first and second bock transfer command in the FIFO, transmitting the at least one of the first and second block transfer command from the FIFO to the first block transfer engine and processing the at least one of the first and second block transfer command in the first block transfer engine on a first in first out basis with regard to a plurality of other commands;
- and
- transferring the amount of transfer data indicated by the routed block transfer command from its corresponding source transfer address to its corresponding destination transfer address.
A system comprising:
- a first information-handling system comprising a first memory and a plurality of first processing elements, wherein the first memory includes a first memory interface and a first memory array having processor-addressable and non processor-addressable memory and wherein each of the first processing elements is operatively coupled to the first memory;
- a second information-handling system comprising a second memory and a plurality of second processing elements, wherein each of the second processing elements is operatively coupled to the second memory;
- first means for transferring data from a first memory location of the first memory to a second memory location of the second memory;
- and
- second means for transferring data from a third memory location in the non processor-addressable memory of the first memory array to a fourth memory location in the processor-addressable memory of the first memory array, wherein the third memory location can be accessed only indirectly by one or more of the plurality of first processing elements via the means for transferring data and wherein the fourth memory location can be accessed directly by one or more of the plurality of first processing elements using a processor address generated by a corresponding first processing element;
- wherein the first memory interface includes one or more FIFOs, wherein the one or more FIFOs accept block transfer commands from one or more of the plurality of first processing elements and transmit the block transfer commands to the first or second means.
Dependencies are inferred from the claim text.