Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem
First Claim
1. A host-fabric adapter, comprising:
- at least one Micro-Engine (ME) arranged to establish connections and support data transfers, via a switched fabric, in response to work requests from a host system for data transfers;
interface blocks arranged to interface said switched fabric and said host system, and send/receive work requests and/or data for data transfers, via said switched fabric, and configured to provide context information needed for said Micro-Engine (ME) to process said work requests for data transfers, via said switched fabric, wherein said Micro-Engine (ME) is implemented with a pipelined instruction execution architecture to handle one or more ME instructions and/or one or more tasks so as to process data for data transfers;
wherein said Micro-Engine (ME) processes multiple ME instructions in parallel, when said ME instructions are deterministic logic and arithmetic instructions by;
processing a first instruction at a first cycle in which an OpCode, source address and destination address are read from an Instruction Memory;
providing a source address to the interface blocks for the first instruction at a second cycle, and processing a second instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
when data for the first instruction is available from the interface blocks at a third cycle, providing the source address to the interface blocks for the second instruction, and processing a third instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
processing data messages from the interface blocks for the first instruction at a fourth cycle, and when data for the second instruction is available from the interface blocks, providing the source address to the interface blocks for the third instruction and processing a fourth instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
providing destination and write controls of the first instruction for the interface blocks at a fifth cycle, processing data messages from the interface blocks for the second instruction and when data for the third instruction is available from the interface blocks, providing the source address to the interface blocks for the fourth instruction and processing a fifth instruction in which the OpCode, source address and destination address are read from the Instruction Memory; and
when the first instruction is retired at a sixth cycle, providing destination and write controls of the second instruction for the interface blocks, processing the data from the interface blocks for the third instruction, and when data for the fourth instruction is available from the interface blocks, providing the source address to the interface blocks for the fifth instruction and processing a sixth instruction in which the OpCode, source address and destination address are read from the Instruction Memory.
1 Assignment
0 Petitions
Accused Products
Abstract
A host system is provided with one or more host-fabric adapters installed therein for connecting to a switched fabric of a data network. The host-fabric adapter may comprise at least one Micro-Engine (ME) arranged to establish connections and support data transfers, via a switched fabric, in response to work requests from a host system for data transfers; interface blocks arranged to interface the switched fabric and the host system, and send/receive work requests and/or data messages for data transfers, via the switched fabric, and configured to provide context information needed for said Micro-Engine (ME) to process work requests for data transfers, via the switched fabric, wherein the Micro-Engine (ME) is implemented with a pipelined instruction execution architecture to handle one or more ME instructions and/or one or more tasks in parallel in order to process data messages.
62 Citations
24 Claims
-
1. A host-fabric adapter, comprising:
-
at least one Micro-Engine (ME) arranged to establish connections and support data transfers, via a switched fabric, in response to work requests from a host system for data transfers;
interface blocks arranged to interface said switched fabric and said host system, and send/receive work requests and/or data for data transfers, via said switched fabric, and configured to provide context information needed for said Micro-Engine (ME) to process said work requests for data transfers, via said switched fabric, wherein said Micro-Engine (ME) is implemented with a pipelined instruction execution architecture to handle one or more ME instructions and/or one or more tasks so as to process data for data transfers;
wherein said Micro-Engine (ME) processes multiple ME instructions in parallel, when said ME instructions are deterministic logic and arithmetic instructions by;
processing a first instruction at a first cycle in which an OpCode, source address and destination address are read from an Instruction Memory;
providing a source address to the interface blocks for the first instruction at a second cycle, and processing a second instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
when data for the first instruction is available from the interface blocks at a third cycle, providing the source address to the interface blocks for the second instruction, and processing a third instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
processing data messages from the interface blocks for the first instruction at a fourth cycle, and when data for the second instruction is available from the interface blocks, providing the source address to the interface blocks for the third instruction and processing a fourth instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
providing destination and write controls of the first instruction for the interface blocks at a fifth cycle, processing data messages from the interface blocks for the second instruction and when data for the third instruction is available from the interface blocks, providing the source address to the interface blocks for the fourth instruction and processing a fifth instruction in which the OpCode, source address and destination address are read from the Instruction Memory; and
when the first instruction is retired at a sixth cycle, providing destination and write controls of the second instruction for the interface blocks, processing the data from the interface blocks for the third instruction, and when data for the fourth instruction is available from the interface blocks, providing the source address to the interface blocks for the fifth instruction and processing a sixth instruction in which the OpCode, source address and destination address are read from the Instruction Memory. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A host-fabric adapter, comprising:
-
at least one Micro-Engine (ME) arranged to establish connections and support data transfers, via a switched fabric, in response to work requests from a host system for data transfers;
interface blocks arranged to interface said switched fabric and said host system, and send/receive work requests and/or data for data transfers, via said switched fabric, and configured to provide context information needed for said Micro-Engine (ME) to process said work requests for data transfers, via said switched fabric, wherein said Micro-Engine (ME) is implemented with a pipelined instruction execution architecture to handle one or more ME instructions and/or one or more tasks so as to process data for data transfers;
wherein said Micro-Engine (ME) processes multiple ME instructions in parallel, when said ME instructions are non-deterministic logic and arithmetic instructions by;
processing a first instruction at a first cycle in which an OpCode, source address and destination address are read from an Instruction Memory;
providing the source address to the interface blocks for the first instruction at a second cycle, and processing a second instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
when data for the first instruction is available from the interface blocks at a third cycle, and a conditional Jump instruction based on Flags is set for the first instruction, processing a third instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
processing data from the interface blocks for the first instruction at a fourth cycle, providing the source address to the interface blocks for the third instruction processing a fourth instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
when data for the third instruction is available from the interface blocks at a fifth cycle, providing destination and write controls of the fourth instruction for the interface blocks;
if the Jump condition is not TRUE, processing a fifth instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
if the Jump condition is TRUE, processing the conditional Jump instruction in which the OpCode, source address and destination address are read from the Instruction Memory corresponding to a Jump Address;
when the first instruction is retired at a sixth cycle, flushing the third instruction and data for the fourth instruction available from the interface blocks, and providing the source address to the interface blocks for the conditional Jump instruction corresponding to the Jump Address if the Jump condition is TRUE; and
if the Jump condition is FALSE, providing the source address to the interface blocks for the fifth instruction and processing the conditional Jump instruction in which the OpCode, source address and destination address are read from the Instruction Memory corresponding to the Jump Address. - View Dependent Claims (8, 9, 10, 11)
-
-
12. A host-fabric adapter, comprising:
-
at least one Micro-Engine (ME) arranged to establish connections and support data transfers, via a switched fabric, in response to work requests from a host system for data transfers;
interface blocks arranged to interface said switched fabric and said host system, and send/receive work requests and/or data for data transfers, via said switched fabric, and configured to provide context information needed for said Micro-Engine (ME) to process said work requests for data transfers, via said switched fabric, wherein said Micro-Engine (ME) is implemented with a pipelined instruction execution architecture to handle one or more ME instructions and/or one or more tasks so as to process data for data transfers;
wherein said Micro-Engine (ME) processes multiple tasks in parallel by;
processing a first instruction at a first cycle in which an OpCode, source address and destination address are read from an Instruction Memory;
providing the source address to the interface blocks for the first instruction at a second cycle, and processing a second instruction indicating a Task Switching Instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
when data for the first instruction is available from the interface blocks and there is no data processing at a third cycle, processing a third instruction for a new task in which the OpCode, source address and destination address are read from the Instruction Memory;
processing data for the first instruction from the interface blocks at a fourth cycle and providing the source address to the interface blocks for the third instruction for the new task;
providing destination and write controls of the first instruction for the interface blocks at a fifth cycle and, when data for the new task for the third instruction is available from the interface blocks, providing the source address to the interface blocks for a fourth instruction and processing a fifth instruction for the new task in which the OpCode, source address and destination address are read from the Instruction Memory;
when the first instruction is retired at a sixth cycle, processing data from the interface blocks for the third instruction for the new task, and when data for the new task for the fourth instruction is available from the interface blocks, providing the source address to the interface blocks for the fifth instruction and processing a sixth instruction for the new task in which the OpCode, source address and destination address are read from the Instruction Memory; and
when the second instruction is retired at a seventh cycle, providing destination and write controls for the interface blocks for the third instruction, processing data from the interface blocks for the fourth instruction for the new task, and when data for the new task for the fifth instruction is available from the interface blocks, providing the source address to the interface blocks for the sixth instruction and processing a seventh instruction for the new task in which the OpCode, source address and destination address are read from the Instruction Memory. - View Dependent Claims (13, 14, 15)
-
-
16. A host-fabric adapter installed at a host system for connecting to a switched fabric of a data network, comprising:
-
at least one Micro-Engine (ME) arranged to establish connections and support data transfers via said switched fabric;
a serial interface arranged to receive and transmit data from said switched fabric for data transfers;
a host interface arranged to receive and transmit work requests from said host system for data transfers; and
a context memory interface arranged to store context information needed for said Micro-Engine (ME) to process work requests for data transfers, wherein said Micro-Engine (ME) is implemented with a pipelined instruction execution architecture to handle one or more ME instructions and/or one or more tasks in parallel so as to process data for data transfers;
wherein said Micro-Engine (ME) processes multiple ME instructions in parallel, when said ME instructions are deterministic logic and arithmetic instructions by;
processing a first instruction at a first cycle in which an OpCode, source address and destination address are read from an Instruction Memory;
providing a source address to the interface blocks for Instruction #1 at a second cycle, and processing a second instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
when data for the first instruction is available from the interface blocks at a third cycle, providing the source address to the interface blocks for the second instruction, and processing a third instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
processing data messages from the interface blocks for the first instruction at a fourth cycle, and when data for the second instruction is available from the interface blocks, providing the source address to the interface blocks for the third instruction and processing a fourth instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
providing destination and write controls of the first instruction for the interface blocks at a fifth cycle, processing data messages from the interface blocks for the second instruction, and when data for the third instruction is available from the interface blocks, providing the source address to the interface blocks for the fourth instruction and processing a fifth instruction in which the OpCode, source address and destination address are read from the Instruction Memory; and
when the first instruction is retired at a sixth cycle, providing destination and write controls of the second instruction for the interface blocks, processing the data from the interface blocks for the third instruction, and when data for the fourth instruction is available from the interface blocks, providing the source address to the interface blocks for the fifth instruction and processing a sixth instruction in which the OpCode, source address and destination address are read from the Instruction Memory. - View Dependent Claims (17)
-
-
18. A host-fabric adapter installed at a host system for connecting to a switched fabric of a data network, comprising:
-
at least one Micro-Engine (ME) arranged to establish connections and support data transfers via said switched fabric;
a serial interface arranged to receive and transmit data from said switched fabric for data transfers;
a host interface arranged to receive and transmit work requests from said host system for data transfers; and
a context memory interface arranged to store context information needed for said Micro-Engine (ME) to process work requests for data transfers, wherein said Micro-Engine (ME) is implemented with a pipelined instruction execution architecture to handle one or more MB instructions and/or one or more tasks in parallel so as to process data for data transfers;
wherein said Micro-Engine (ME) processes multiple ME instructions in parallel, when said ME instructions are non-deterministic logic and arithmetic instructions by;
processing a first instruction at a first cycle in which an OpCode, source address and destination address are read from an Instruction Memory;
providing the source address to the interface blocks for the first instruction at a second cycle, and processing a second instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
when data for the first instruction is available from the interface blocks at a third cycle, and a conditional Jump instruction based on Flags is set for the first instruction, processing a third instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
processing data from the interface blocks for the first instruction at a fourth cycle, providing the source address to the interface blocks for the third instruction, processing a fourth instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
when data for the third instruction is available from the interface blocks at a fifth cycle, providing destination and write controls of the fourth instruction for the interface blocks;
if the Jump condition is not TRUE, processing a fifth instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
if the Jump condition is TRUE, processing the conditional Jump instruction in which the OpCode, source address and destination address are read from the Instruction Memory corresponding to a Jump Address;
when the first instruction is retired at a sixth cycle, flushing the third instruction and data for the fourth instruction available from the interface blocks, and providing the source address to the interface blocks for the conditional Jump instruction corresponding to the Jump Address if the Jump condition is TRUE; and
if the Jump condition is FALSE, providing the source address to the interface blocks for the fifth instruction and processing the conditional Jump instruction in which the OpCode, source address and destination address are read from the Instruction Memory corresponding to the Jump Address. - View Dependent Claims (19)
-
-
20. A host-fabric adapter installed at a host system for connecting to a switched fabric of a data network, comprising:
-
at least one Micro-Engine (ME) arranged to establish connections and support data transfers via said switched fabric;
a serial interface arranged to receive and transmit data from said switched fabric for data transfers;
a host interface arranged to receive and transmit work requests from said host system for data transfers; and
a context memory interface arranged to store context information needed for said Micro-Engine (ME) to process work requests for data transfers, wherein said Micro-Engine (ME) is implemented with a pipelined instruction execution architecture to handle one or more ME instructions and/or one or more tasks in parallel so as to process data for data transfers;
wherein said Micro-Engine (ME) processes multiple tasks in parallel by;
processing a first instruction at a first cycle in which an OpCode, source address and destination address are read from an Instruction Memory;
providing the source address to the interface blocks for the first instruction at a second cycle, and processing a second instruction indicating a Task Switching Instruction in which the OpCode, source address and destination address are read from the Instruction Memory;
when data for the first instruction is available from the interface blocks and there is no data processing at a third cycle, processing a third instruction for a new task in which the OpCode, source address and destination address are read from the Instruction Memory;
processing data for the first instruction from the interface blocks at a fourth cycle and providing the source address to the interface blocks for the third instruction for the new task;
providing destination and write controls of the first instruction for the interface blocks at a fifth cycle and, when data for the new task for the third instruction is available from the interface blocks, providing the source address to the interface blocks for a fourth instruction and processing a fifth instruction for the new task in which the OpCode, source address and destination address are read from the Instruction Memory;
when the first instruction is retired at a sixth cycle, processing data from the interface blocks for the third instruction for the new task, and when data for the new task for the fourth instruction is available from the interface blocks, providing the source address to the interface blocks for the fifth instruction and processing a sixth instruction for the new task in which the OpCode, source address and destination address are read from the Instruction Memory; and
when the second instruction is retired at a seventh cycle, providing destination and write controls for the interface blocks for the third instruction, processing data from the interface blocks for the fourth instruction for the new task, and when data for the new task for the fifth instruction is available from the interface blocks, providing the source address to the interface blocks for the sixth instruction and processing a seventh instruction for the new task in which the OpCode, source address and destination address are read from the Instruction Memory. - View Dependent Claims (21, 22, 23, 24)
-
Specification