Pipelined processor architecture with configurable grouping of processor elements
The present disclosure describes apparatuses and methods for implementing a pipelined processor with configurable grouping of processor elements. In aspects, an apparatus comprises a host interface configured for communication with a host system, a media interface configured to enable access to storage media, and a plurality of processor elements operably coupled to at least one of the host interface and the media interface. The plurality of processor elements is organized into multiple stages of a pipelined processor for processing data access commands associated with the host system. In various implementations, the plurality of processor elements can be selectively grouped to form the multiple stages of the pipelined processor and loaded with microcode to implement respective functions of each stage of the pipelined processor. By so doing, the pipelined processor may be configured based on various parameters to improve processing performance when processing the data access commands of the host system.
1 . An apparatus comprising:
a host interface configured for communication with a host system;
a media interface configured to enable access to storage media;
a plurality of processor elements operably coupled to at least one of the host interface and the media interface, the plurality of processor elements organized into multiple stages of a pipelined processor for processing data access commands associated with the host system, at least two of the multiple stages being configured to implement a different function to process the data access commands, the plurality of processor elements comprising general purpose processor elements that are configurable to implement respective ones of the different functions for processing the data access commands or other commands of the apparatus; and
a memory storing processor-executable instructions, the processor-executable instructions comprising multiple portions of microcode useful to configure the general purpose processor elements to implement the respective functions of at least some of the multiple stages for processing the data access command or the other commands of the apparatus.
2 . The apparatus of claim 1 , wherein the plurality of processor elements further comprises multiple task specific processor elements that are preconfigured to implement respective ones of the different functions for processing the data access commands or the other commands of the apparatus.
3 . The apparatus of claim 1 , wherein one of the multiple stages comprises at least two general purpose processor elements configured with a same portion of microcode of the multiple portions of the microcode, the at least two general purpose processor elements configured to implement a same one of the respective functions for processing the data access command or the other commands of the apparatus.
4 . The apparatus of claim 1 , wherein:
each of the multiple stages of the pipelined processor comprise at least one of the processor elements; and
each of the multiple stages of the pipelined processor is identifiable or addressable by a respective processor element group identifier assigned to the at least one of the processor elements of a corresponding one of the multiple stages.
5 . The apparatus of claim 4 , wherein the plurality of processor elements comprises at least one processor element that is not allocated to one of the multiple stages and does not have an assigned group identifier.
6 . The apparatus of claim 1 , wherein a number of the plurality of processor elements is different from a number of the multiple stages of the pipelined processor.
7 . The apparatus of claim 1 , wherein at least one of the multiple stages of the pipelined processor comprises at least two processor elements of the plurality of processor elements of the apparatus.
8 . The apparatus of claim 1 , further comprising an inter-processor switch that operably couples the plurality of the processor elements in a topology in which the processor elements of each of the multiple stages communicate with respective processor elements of others of the multiple stages through the inter-processor switch.
9 . The apparatus of claim 8 , wherein the inter-processor switch is operably coupled to each processor element of the plurality of processor elements and enables a processor element to communicate an inter-processor packet with any other processor element of the plurality of processor elements based on a group identifier assigned to the processor elements of the stage into which the other processor element is organized.
10 . The apparatus of claim 9 , wherein at least one of the processor elements of the plurality of processor elements comprises a first-in, first-out (FIFO) buffer configured to enable re-ordering of the inter-processor packet among other inter-processor packets based on a priority of the inter-processor packet and respective priorities of the other inter-processor packets.
11 . The apparatus of claim 9 , wherein the inter-processor switch is configured to route inter-processor packets between respective processor elements of the multiple stages of the pipelined processor based on the group identifier assigned to the respective processor elements of each stage of the multiple stages of the pipelined processor.
12 . A method for configuring a plurality of processor elements of a storage controller to form a pipelined processor for processing data access commands of a host system or other commands of the storage controller, the method comprising:
selecting a first group of processor elements of the plurality of processor elements to form a first stage of the pipelined processor, the first group of processor elements comprising general purpose processor elements that are configurable to implement functions for processing the data access commands or the other commands of the storage controller;
selecting a second group of the processor elements of the plurality of processor elements to form a second stage of the pipelined processor, and
loading, from a memory storing multiple portions of microcode, one of the multiple portions of the microcode to the first group of processor elements to configure the first stage of the pipelined processor to implement a first function of the pipelined processor, the first function of the first stage being different from a second function of the second stage, the multiple portions of microcode useful to configure the general purpose processor elements of the storage controller to implement respective functions of at least some of stages of the pipelined processor for processing the data access command or the other commands of the storage controller.
13 . The method of claim 12 , wherein the second group of processor elements are task specific processor elements that are preconfigured to implement the second function of the second stage for processing the data access commands or other commands of the storage controller.
14 . The method of claim 12 , wherein the portion of microcode comprises a first portion of microcode, the general purpose processor elements of the first group of processor elements comprise first general purpose processor elements, and the method further comprises:
selecting a third group of processor elements of the plurality of processor elements to form a third stage of the pipelined processor, the third group of processor elements comprising second general purpose processor elements that are configurable to implement functions for processing the data access commands or the other commands of the storage controller; and
loading a second portion of the multiple portions of microcode to the second group of general purpose processor elements to configure the third stage of the pipelined processor to implement the third function of the pipelined processor.
15 . The method of claim 12 , further comprising:
determining one of a bandwidth parameter, a throughput parameter, a latency parameter, or a timing parameter of the pipelined processor, and wherein:
the selecting of the first group of processor elements comprises selecting a number of the plurality of the processor elements to include in the first group based on the bandwidth parameter, the throughput parameter, the latency parameter, or the timing parameter; or
the selecting of the second group of processor elements comprises selecting a number of the plurality of the processor elements to include in the second group based on the bandwidth parameter, the throughput parameter, the latency parameter, or the timing parameter.
16 . The method of claim 15 , further comprising:
redetermining one of the bandwidth parameter, the throughput parameter, the latency parameter, or the timing parameter of the pipelined processor; and
altering the number of the plurality of the processor elements included in the first group based on the redetermined bandwidth parameter, the redetermined throughput parameter, the redetermined latency parameter, or the redetermined timing parameter; or
altering the number of the plurality of the processor elements included in the second group based on the redetermined bandwidth parameter, the redetermined throughput parameter, the redetermined latency parameter, or the redetermined timing parameter.
17 . The method of claim 15 , further comprising:
evaluating performance of the first stage or the second stage of the stage pipeline in relation to the bandwidth parameter, the throughput parameter, the latency parameter, or the timing parameter of the pipelined processor; and
altering the number of the plurality of the processor elements included in the first group based on the performance of the first stage of the pipelined processor; or
altering the number of the plurality of the processor elements included in the second group based the performance of the second stage of the pipelined processor.
18 . The method of claim 12 , further comprising:
assigning a first group identifier to the first group of processor elements of the first stage to enable identification, addressing, or interaction with the first stage of the pipelined processor; or
assigning a second group identifier to the second group of processor elements of the second stage to enable identification, addressing, or interaction with the second stage of the pipelined processor.
19 . The method of claim 18 , further comprising:
communicating an inter-processor packet between the first group of processor elements and the second group of processor elements based on the first group identifier or the second group identifier.
20 . The method of claim 19 , further comprising:
re-ordering, via a first-in, first-out (FIFO) buffer of a processor element of the first group of processor elements, the inter-processor packet among first other inter-processor packets based on a priority of the inter-processor packet and respective priorities of the first other inter-processor packets; or
re-ordering, via a FIFO buffer of a processor element of the second group of processor elements, the inter-processor packet among second other inter-processor packets based on the priority of the inter-processor packet and respective priorities of the second other inter-processor packets.