A method comprising: retrieving, by a request unit, a number of requests for security operations from a host memory, the security operation being a primitive security operation or a macro security operation, and wherein the number of requests are in an order within the host memory and at least one of the number of requests include macro security operation (407, 409, 423, 425), the macro security operation representing a plurality of primitive security operations; wherein various levels of granularity of macro security operations are implemented; wherein primitive security operations are grouped to macro security operations depending on factors that include a security protocol or data dependencies or based on reprogrammable microcode blocks for executing units to allow flexibility in the selection of security operations, distributing, by the request unit, the number of requests for the security operations to a number of execution units (216A to 2161, 217A to 2171), wherein the distribution is based on availability of the number of execution units (216A to 2161, 217A to 2171); processing the number of requests for the security operations by the number of execution units (216A to 2161, 217A to 2171); and outputting results of the number of requests for the security operations to locations within the host memory, wherein the results are outputted in an order based on when the number of execution units (216A to 2161, 217A to217I) complete processing of the requests, using a continuous flow capable task delivery and result return mechanism for an in-order distributing of the number of requests and an out-of-order outputting the results of the number of requests, wherein at least one of the number of requests include a primitive security operation, the primitive security operation selected from a group of primitive security operations including a decrypt operation, an encrypt operation, a hash operation and a set of modular arithmetic operations. retrieving, by a request unit, a number of requests for security operations from a host memory, the security operation being a primitive security operation or a macro security operation, and wherein the number of requests are in an order within the host memory and at least one of the number of requests include macro security operation (407, 409, 423, 425), the macro security operation representing a plurality of primitive security operations; wherein various levels of granularity of macro security operations are implemented; wherein primitive security operations are grouped to macro security operations depending on factors that include a security protocol or data dependencies or based on reprogrammable microcode blocks for executing units to allow flexibility in the selection of security operations, distributing, by the request unit, the number of requests for the security operations to a number of execution units (216A to 2161, 217A to 2171), wherein the distribution is based on availability of the number of execution units (216A to 2161, 217A to 2171); processing the number of requests for the security operations by the number of execution units (216A to 2161, 217A to 2171); and outputting results of the number of requests for the security operations to locations within the host memory, wherein the results are outputted in an order based on when the number of execution units (216A to 2161, 217A to217I) complete processing of the requests, using a continuous flow capable task delivery and result return mechanism for an in-order distributing of the number of requests and an out-of-order outputting the results of the number of requests, wherein at least one of the number of requests include a primitive security operation, the primitive security operation selected from a group of primitive security operations including a decrypt operation, an encrypt operation, a hash operation and a set of modular arithmetic operations.