Abstract:
In one embodiment, a processor comprises a plurality of hardware resources, each hardware resource having a clock cycle. The processor also comprises a plurality of work stores, each work store assigned into one of a plurality of virtual functions if a mode of the processor is set to a virtual function mode, and each work store assigned into one physical function if the mode of the processor is set to a physical function mode. The processor further comprises dispatch logic configured to dispatch work from any work store corresponding to any virtual function or physical function to any released hardware resources.

Description:
BACKGROUND 
       [0001]    In the field of computer networking and other packet-switched telecommunication networks, quality of service (QoS) refers to an ability to provide different priority to different applications, users, or data flows, or to guarantee a certain level of performance to a data flow. For example, a QoS scheme may guarantee a required bit rate, delay, jitter, packet dropping probability and/or bit error rate. QoS guarantees are important for real-time streaming multimedia applications that are delay sensitive and have fixed bit rates, such as voice over IP, online games and video. 
         [0002]    In processors with multiple cores, a host or software will often view the processor as one machine despite the processor having multiple cores. When the host or software runs several simultaneous processes, it will treat the processor as one machine, when it could be advantageous to treat it as multiple machines for the multiple processes. Few hardware mechanisms currently exist that regulate QoS of instructions from a host or software. 
       SUMMARY 
       [0003]    In one embodiment, a processor comprises a plurality of hardware resources, each hardware resource having a clock cycle. The processor also comprises a plurality of work stores, each work store assigned into one of a plurality of virtual functions if a mode of the processor is set to a virtual function mode, and each work store assigned into one physical function if the mode of the processor is set to a physical function mode. The processor further comprises dispatch logic configured to dispatch work from any work store corresponding to any virtual function or physical function to any released hardware resources. 
         [0004]    In one embodiment, a method in a processor having a plurality of hardware resources comprises, on at least one clock cycle, setting a mode of the processor, the mode being one of a virtual function mode or a physical function mode, assigning a plurality of work stores into a plurality of virtual functions if the mode of the processor is set to the virtual function mode, and assigning the plurality of work stores into one physical function if the mode of the processor is set to the physical function mode. On each clock cycle, the processor releases any idle hardware resource to be available for any virtual function or physical function and dispatches work from any work store corresponding to any virtual function or physical function to any released hardware resources. 
         [0005]    In some embodiments, the hardware resources include processing cores. The work stores can include instruction queues. The virtual function can be a group of work stores, where the group of work stores is at least one of eight work stores, sixteen work stores, thirty-two work stores, and sixty-four work stores. 
         [0006]    Other embodiments of the processor can include an arbitration unit configured to distribute work from the virtual functions among the released hardware resources if the mode is virtual function mode and distribute work from the physical function among the released hardware resources if the mode is physical function mode. 
         [0007]    Another embodiment of the processor includes a plurality of work execution masks, each work execution mask corresponding to a work store and configured to permit or exclude the work from its corresponding work store from being dispatched to any hardware resource as to affect the quality of service among the hardware resources. The processor also includes a plurality of group execution masks, each group execution mask corresponding to a class of work and is configured to permit or exclude the class of work from being dispatched to any hardware resource as to affect the quality of service among the hardware resources. The processor can also configure the virtual functions to share the plurality of hardware resources if the mode of the processor is the virtual function mode, and can configure the physical function to share the plurality of hardware resources among the work stores if the mode is physical function mode. The process can further configure the virtual function to share resources of the processor other than the plurality of hardware resources among the plurality of virtual functions. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0008]    The foregoing will be apparent from the following more particular description of example embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating embodiments of the present invention. 
           [0009]      FIG. 1  is a diagram of a work dispatch process  100 . 
           [0010]      FIG. 2A  is an example assignment scheme  200  of work stores to eight VFs. 
           [0011]      FIG. 2B  is an example assignment scheme  220  of work stores to 16 VFs. 
           [0012]      FIG. 2C  is an example assignment scheme  240  of work stores to 32 VFs. 
           [0013]      FIG. 2D  is an example assignment scheme  260  of work stores to 64 VFs. 
           [0014]      FIG. 3  is an example embodiment of a PF shared resource allocation scheme  300 . 
           [0015]      FIG. 4  is an example embodiment of a VF shared resource allocation scheme  400 . 
           [0016]      FIG. 5  is another example embodiment of a VF shared resource allocation scheme  500 . 
       
    
    
     DETAILED DESCRIPTION 
       [0017]    A description of example embodiments of the invention follows. 
         [0018]    The teachings of all patents, published applications and references cited herein are incorporated by reference in their entirety. 
         [0019]    Treating the cores as one machine makes regulation of the QoS difficult among multiple processes in a host or software. Creating a QoS scheme within a processor would allow software to prioritize different processes or groups of processes without using additional software resources or memory. 
         [0020]    In one embodiment, a chip partitions resources into virtual functions (“VFs”) or a physical function (“PF”). This “hard partitioning” is programmable during a chip configuration phase for certain hardware resources. The chip then dynamically assigns other functions and hardware resources within the chip to virtual functions or the physical function on a shared, on demand basis. 
         [0021]    In one embodiment, the chip has five different modes: 1) Physical Function (“PF”) (no virtual functions); 2) VF8 (eight VFs); 3) VF16 (16 VFs), VF32 (32 VFs), and VF64—(64 VFs). In each mode, during hard partitioning, the chip statically distributes some hardware resources among the virtual functions. In one embodiment, these partitioned resources are 64 cryptography work store managers, 64 compression work store managers, and 128 completion and coalescing interrupt counters and timers. These resources are distributed evenly among the VFs, the number of which is determined by software configuration. The work store manager resources fetch work from a host&#39;s main memory and dispatch the work to an execution resource for execution. Work stores assigned to a particular virtual function only contain work belonging to that virtual function. Virtual functions are isolated from one another and operate independently. 
         [0022]    The chip dynamically assigns other hardware resources within the chip to virtual functions on a shared, on demand basis. In one embodiment, the processor dynamically assigns 64 microprogrammable cryptography processors and 4 compression/decompression processors to the VFs. Each of these processors is dedicated to the virtual function that designates an assigned work unit for the duration of that single work unit or operation. The processor performs memory operations on behalf of the virtual function in the virtual function&#39;s address space. The processor also generates updates to the completion and coalescing counters, which may result in interrupts to the virtual function. The counters are evenly distributed among the enabled virtual functions, with each counter receiving completion messages from a work store manager of its virtual function. When the instruction&#39;s execution is complete, the processor is available to execute another instruction from a set of qualifying virtual functions. 
         [0023]    In one embodiment, when the chip is configured to run in PF mode, and therefore not support VFs, the hardware resources are evenly distributed among eight groups. 
         [0024]    Rather than duplicating hardware resources for each VF, the chip shares hardware resources, such as cryptographic processors and the compression/decompression processors, because a hardware resource can only perform one operation at a time. This decreases the amount of required hardware resources to support flexible virtual function partitioning. Hardware resources are repurposed in the different VF modes, reducing the total hardware required to implement the various modes. Another advantage of this processor implementation is the dedication of hardware resources can be proportioned to different VFs dynamically. This feature allows for prioritization and various qualities of service between virtual functions. 
         [0025]      FIG. 1  is a diagram of a work dispatch process  100 . First, a mode of a chip is set to either virtual function (VF) or physical function (PF) in a mode setting step  102 . When the mode is set to VF, the chip uses the VF branch  120  of the work dispatch process  100 . First, the chip assigns work stores to VFs  122 . Next, the chip releases any idle hardware resource  124 . Last, the chip dispatches work from any VF to any idle hardware resource  126 . 
         [0026]    When the mode is set to PF, the chip uses the PF branch  140  of the work dispatch process  100 . First, the chip assigns work stores to a physical function  142 . Next, the chip releases any idle hardware resource  144 . Last, the chip dispatches work from the one physical function to any idle hardware resource  146 . 
         [0027]      FIG. 2A  is an example assignment scheme  200  of work stores to eight VFs. Assignment scheme  200  shows a list of VFs  202  and the corresponding work stores assigned to each VF  204 . Each row is a typical set of work stores within one VF  206 . 
         [0028]      FIG. 2B  is an example assignment scheme  220  of work stores to 16 VFs. Assignment scheme  220  shows a list of VFs  222  and the corresponding work stores assigned to each VF  224 . Each row is a typical set of work stores within one VF  226 . 
         [0029]      FIG. 2C  is an example assignment scheme  240  of work stores to 32 VFs. Assignment scheme  240  shows a list of VFs  242  and the corresponding work stores assigned to each VF  244 . Each row is a typical set of work stores within one VF  246 . 
         [0030]      FIG. 2D  is an example assignment scheme  260  of work stores to 64 VFs. Assignment scheme  260  shows a list of VFs  262  and the corresponding work store assigned to each VF  264 . Note that the second table is simply a continuation of the list of VFs  262  and the corresponding work store assigned to each VF  264 . Each row is a typical work store within one VF  266 . 
         [0031]      FIG. 3  is an example embodiment of a PF shared resource allocation scheme  300 . PF shared resource allocation scheme  300  contains a plurality of work stores  302 ,  304 ,  306 . One of ordinary skill in the art will appreciate that greater quantities of work stores can be implemented in PF shared resource allocation scheme  300 . In addition, multiple sets of different types of work stores can also be integrated into the PF shared resource allocation scheme  300 . In one embodiment, a type of work store can be an instruction queue. In one embodiment, 64 work stores  302 ,  304 ,  306  can be implemented. Work store  306  is the “N−1”th work store, where N represents the total number of work stores in the chip. 
         [0032]    The work stores  302 ,  304 ,  306  are coupled with a PF arbitration unit  308 . The PF arbitration unit  308  is configured to arbitrate among the physical work stores  302 ,  304 ,  306  to choose appropriate work for an idle core  314  of a plurality of cores  312 . PF arbitration unit  308  uses fixed priority arbitration, round robin arbitration, or other arbitration methods. Idle cores  314  are identified in the core availability vector  310 , which is coupled to the PF arbitration unit  308 . When the PF arbitration unit  308  chooses an appropriate work store  302 ,  304 ,  306  for an idle core, it signals the work store  302 ,  304 ,  306  to dispatch its work to the idle core  314  through the system bus  320 . 
         [0033]      FIG. 4  is an example embodiment of a VF shared resource allocation scheme  400 . The VF shared resource allocation scheme  400  includes workstores  402 ,  404 ,  406 ,  408 ,  410 , and  412 . One of ordinary skill in the art will appreciate that greater quantities of work stores could be implemented in VF shared resource allocation scheme  400 . In addition, multiple sets of different types of work stores could also be integrated into the VF shared resource allocation scheme  400 . In one embodiment, the type of work store can be an instruction queue. In one embodiment, 64 work stores  402 ,  404 ,  406 ,  408 ,  410 , and  412  can be implemented. 
         [0034]    A plurality of work stores  402 ,  406 , and  410  are coupled with Virtual Function 0 (VF0)  414 . Similarly, a plurality of work stores  404 ,  408 , and  412  are coupled with Virtual Function 1 (VF1)  416 . This example is simplified, as a VF shared resource allocation scheme  400  can contain more than two virtual functions and more than three work stores per virtual function. A person of ordinary skill of the art will appreciate that the coupling of work stores  402 - 412  with VFs  414  and  416  illustrates how work stores are “hard partitioned” to a VF after an initial configuration of the chip. In addition, it can be appreciated from  FIG. 4 , in light of  FIG. 2A-D , that work stores can be allocated to a VF based on the modulus operator. In other words, when the chip has M VFs, each VF will be coupled with work stores indexed an integer N=VF#+M*jj, where the VF# is the index of the VF, jj is an integer greater than or equal to 0 and N is less than the number of work stores. In other embodiments, work stores can be assigned to virtual functions based on other criteria or formulas, however. 
         [0035]    The VFs  414  and  416  are coupled with Per-VF Arbitration Units  418  and  418 . As an illustrative example, the Per-VF Arbitration Units  418  arbitrates between all eligible work within VF0  414 , and from that set nominates one winning work unit from VF0  414 . The Per-VF Arbitration Units  418  use fixed priority arbitration, round robin arbitration, or other arbitration methods. The nominated work unit is transmitted to a Collected VF Arbitration Unit  420 , which is coupled to all Per-VF Arbitration Units  418 . One of ordinary skill in the art will appreciate that the Per-VF Arbitration Units  418  will be able to perform the same arbitration with any VF. Such a configuration will send a nominated work unit from each Per-VF Arbitration Unit  418  to the Collected VF Arbitration Unit  420   
         [0036]    The Collected VF Arbitration Unit  420  will then arbitrate between all the nominated work units from each Per-VF Arbitration Unit  418 . The Collected VF Arbitration Unit  420  uses fixed priority arbitration, round robin arbitration, or other arbitration methods. The Collected VF Arbitration Unit  420  selects a work unit for processing by an idle core  426  among a plurality of cores  424 . The Collected VF Arbitration Unit  420  determines which cores are idle by the core availability vector  422 . Then, the Collected VF Arbitration Unit  420  signals the VF  414  and  416  of the work unit, which signals the work store  402 - 412  of the work unit. The work store  402 - 412  then dispatches the work unit along the system bus  428  to the idle core  426 . 
         [0037]      FIG. 5  is another example embodiment of a VF shared resource allocation scheme  500 . VF shared resource allocation scheme  500  is similar to VF shared resource allocation scheme  400  in many aspects. A person of ordinary skill of the art will appreciate that  FIG. 5  includes a plurality of hardware resources  524 , where  FIG. 4  included a plurality of cores  424 . Hardware resources  524  can include cores, but also include other resources in a chip, such as random access memory. Likewise,  FIG. 5  features idle hardware resources  526  and a hardware resources availability vector  522 . The work stores  502 - 512  can be of a type compatible with the plurality of hardware resources  524 . For example, a hardware resource of cores would require work stores of instructions, but a hardware resource of memory would require work stores with appropriate work for a memory resource. 
         [0038]    While this invention has been particularly shown and described with references to example embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention encompassed by the appended claims.