Patent Publication Number: US-11398856-B2

Title: Beamforming techniques to choose transceivers in a wireless mesh network

Description:
BACKGROUND 
     Description of the Related Art 
     A wireless communication link can be used to send a video stream from a computer (or other device) to a virtual reality (VR) headset (or head mounted display (HMD). Transmitting the VR video stream wirelessly eliminates the need for a cable connection between the computer and the user wearing the HMD, thus allowing for unrestricted movement by the user. A traditional cable connection between a computer and HMD typically includes one or more data cables and one or more power cables. Allowing the user to move around without a cable tether and without having to be cognizant of avoiding the cable creates a more immersive VR system. Sending the VR video stream wirelessly also allows the VR system to be utilized in a wider range of applications than previously possible. 
     However, a VR application is a low latency application which does not typically buffer video data. For example, when the user moves their head, this is detected by the HMD or console, and then the subsequently rendered video frames are updated to reflect the new viewing position of the user. Additionally, changing conditions of the link can affect video quality. When the link deteriorates and video data is lost or corrupted, this can result in a poor user experience. Accordingly, improved techniques for wireless streaming of data are desired. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The advantages of the methods and mechanisms described herein may be better understood by referring to the following description in conjunction with the accompanying drawings, in which: 
         FIG. 1  is a block diagram of one embodiment of a system. 
         FIG. 2  is a block diagram of one embodiment of a wireless virtual reality (VR) system. 
         FIG. 3  is a block diagram of one embodiment of performing a beamforming training procedure to determine which transceiver has the best link to the receiver. 
         FIG. 4  is a block diagram of one embodiment of a multi-transceiver wireless VR environment. 
         FIG. 5  is a generalized flow diagram illustrating one embodiment of a method for transferring encoded video data to a receiver using a wireless path through a wireless mesh network. 
         FIG. 6  is a generalized flow diagram illustrating one embodiment of a method for determining a path for transferring an encoded video stream from a master transceiver to a receiver. 
         FIG. 7  is a generalized flow diagram illustrating one embodiment of a method for determining a path from a master transceiver to a receiver. 
         FIG. 8  is a generalized flow diagram illustrating one embodiment of a method for changing a path for conveying an encoded video bitstream to a receiver. 
     
    
    
     DETAILED DESCRIPTION OF EMBODIMENTS 
     In the following description, numerous specific details are set forth to provide a thorough understanding of the methods and mechanisms presented herein. However, one having ordinary skill in the art should recognize that the various embodiments may be practiced without these specific details. In some instances, well-known structures, components, signals, computer program instructions, and techniques have not been shown in detail to avoid obscuring the approaches described herein. It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements. 
     Various systems, apparatuses, methods, and computer-readable mediums for utilizing beamforming techniques to choose transceivers in a wireless mesh network are disclosed herein. In one embodiment, a wireless communication system includes a plurality of transceivers and a receiver. In one embodiment, a master transceiver is coupled to a video source which is configured to render and encode a video stream. In one embodiment, the video stream represents a virtual reality (VR) rendered environment. The master transceiver is configured to wirelessly transmit the encoded video stream on a path through the plurality of transceivers to the receiver. 
     In a wireless VR environment, when a master transceiver and receiver (e.g., head-mounted display (HMD)) can see other and have a line of sight connection which is devoid of obstructions, then the master transceiver sends the encoded video stream directly to the receiver. But, when the master transceiver and the receiver do not have a line of sight connection, such as when some obstruction gets in between the master transceiver and the receiver, then the link quality is degraded, and the data bit rate will be decreased. In order to mitigate this scenario, multiple transceivers are deployed in the VR environment. For example, in one embodiment, when the VR environment is a room or office, a different transceiver is deployed in each corner of the room. In this deployment, only one of the transceivers will connect to the video source (e.g., the graphics card), and this transceiver is referred to as the master transceiver. 
     In one embodiment, the wireless VR environment includes one master transceiver and a plurality of passive transceivers. Multiple transceivers can be utilized to transfer the video data from the master transceiver to the receiver. For example, if transceiver #4 has the best line of sight to the receiver, then the master transceiver can transfer to transceiver #2, then from transceiver #2 to transceiver #4, and then from transceiver #4 to the HMD. In other embodiments, other paths from the master transceiver to the receiver can be utilized. 
     In one embodiment, the best links to use among the different transceivers are determined during one or more beamforming training procedures. During beamforming training, the system determines which transceiver has the best line of sight link to the receiver. Then, the best path from the master transceiver to this transceiver is determined within the mesh network of transceivers. In one embodiment, beamforming training procedures are performed on a predefined schedule. In this embodiment, the transceivers and the receiver are synchronized in time, allowing the transceivers and the receivers to start the beamforming training procedure at the same time. In this embodiment, each transceiver turns on an omni-directional antenna and transmits at the same time and at the same power, and the receiver scans the received signals in a 360 degree arc to determine the direction of the strongest signal. In one scenario, in the VR environment, the receiver knows the location of the transceivers, and so the receiver can determine which transceiver has the best line of sight to the receiver based on the direction of the strongest received signal. Then, this transceiver is utilized to transfer the video data to the receiver. 
     In another scenario, the transceivers can utilize different channels to transmit during the beamforming training procedure(s). For example, the receiver can turn on an omni-directional antenna, and each transceiver transmits on a different channel, and then the receiver can determine which channel has the strongest received signal. In a further embodiment, the transceivers are scheduled to transmit at different times, and then the receiver measures the signal strength of each of the transceivers to determine which transceiver has the highest signal strength. Then, this transceiver is used to send the video data to the receiver. 
     Referring now to  FIG. 1 , a block diagram of one embodiment of a system  100  is shown. System  100  includes at least a first communications device (e.g., transmitter  105 ) and a second communications device (e.g., receiver  110 ) operable to communicate with each other wirelessly. It is noted that receiver  110  can also transmit data and/or acknowledgments to transmitter  105 . Accordingly, transmitter  105  and receiver  110  can also be referred to as transceivers. In one embodiment, transmitter  105  and receiver  110  communicate wirelessly over the unlicensed 60 Gigahertz (GHz) frequency band. For example, transmitter  105  and receiver  110  can communicate in accordance with the Institute of Electrical and Electronics Engineers (IEEE) 802.11ad standard (i.e., WiGig). In other embodiments, transmitter  105  and receiver  110  can communicate wirelessly over other frequency bands and/or by complying with other wireless communication standards. 
     Wireless communication devices that operate within extremely high frequency (EHF) bands, such as the 60 GHz frequency band, are able to transmit and receive signals using relatively small antennas. However, such signals are subject to high atmospheric attenuation when compared to transmissions over lower frequency bands. In order to reduce the impact of such attenuation and boost communication range, EHF devices typically incorporate beamforming technology. For example, the IEEE 802.11ad specification details a beamforming training procedure, also referred to as sector-level sweep (SLS), during which a wireless station tests and negotiates the best transmit and/or receive antenna combinations with a remote station. In various embodiments, transmitter  105  and receiver  110  are configured to perform periodic beamforming training procedures to determine the transmit and/or receive antenna combinations for wireless data transmission. 
     Transmitter  105  and receiver  110  are representative of any type of communication devices and/or computing devices. For example, in various embodiments, transmitter  105  and/or receiver  110  can be a mobile phone, tablet, computer, server, television, game console, head-mounted display (HMD), another type of display, router, or other types of computing or communication devices. In various embodiments, system  100  is configured to execute latency sensitive applications. For example, in one embodiment, system  100  executes a virtual reality (VR) application for wirelessly transmitting frames of a rendered virtual environment from transmitter  105  to receiver  110 . In other embodiments, other types of latency sensitive applications can be implemented by system  100  that take advantage of the methods and mechanisms described herein. 
     In one embodiment, transmitter  105  includes at least radio frequency (RF) transceiver module  125 , processor  130 , memory  135 , and antenna  140 . RF transceiver module  125  is configured to transmit and receive RF signals. In one embodiment, RF transceiver module  125  is a mm-wave transceiver module operable to wirelessly transmit and receive signals over one or more channels in the 60 GHz band. RF transceiver module  125  converts baseband signals into RF signals for wireless transmission, and RF transceiver module  125  converts RF signals into baseband signals for the extraction of data by transmitter  105 . It is noted that RF transceiver module  125  is shown as a single unit for illustrative purposes. It should be understood that RF transceiver module  125  can be implemented with any number of different units (e.g., chips) depending on the embodiment. Similarly, processor  130  and memory  135  are representative of any number and type of processors and memory devices, respectively, that can be implemented as part of transmitter  105 . 
     Transmitter  105  also includes antenna  140  for transmitting and receiving RF signals. Antenna  140  represents one or more antennas, such as a phased array, a single element antenna, a set of switched beam antennas, etc., that can be configured to change the directionality of the transmission and reception of radio signals. As an example, antenna  140  includes one or more antenna arrays, where the amplitude or phase for each antenna within an antenna array can be configured independently of other antennas within the array. Although antenna  140  is shown as being external to transmitter  105 , it should be understood that antenna  140  can be included internally within transmitter  105  in various embodiments. Additionally, it should be understood that transmitter  105  can also include any number of other components which are not shown to avoid obscuring the figure. Similar to transmitter  105 , the components implemented within receiver  110  include at least RF transceiver module  145 , processor  150 , memory  155 , and antenna  160 , which are similar to the components described above for transmitter  105 . It should be understood that receiver  110  can also include or be coupled to other components (e.g., a display). 
     In cases where transmitter  105  is connected to a video source (e.g., graphics card), transmitter  105  can be referred to as a “master transmitter”. Although not shown in  FIG. 1 , one or more other transmitters can also be included within system  100  as passive transmitters. These passive transmitters can be utilized when the link between transmitter  105  and receiver  110  deteriorates. In a typical wireless virtual reality (VR) environment, the link between transmitter  105  and receiver  110  has capacity characteristics that fluctuate with variations in the environment. For example, in cases where receiver  110  is mobile, various obstructions can interfere with the wireless link between transmitter  105  and receiver  110 . When this happens, system  100  can perform a beamforming training procedure to find another path from the master transmitter through the passive transmitters for sending the encoded video stream to receiver  110 . The remainder of this disclosure describes various techniques for utilizing a wireless mesh network to mitigate the fluctuating capacity characteristics of the link between a master transmitter and a receiver. 
     Turning now to  FIG. 2 , a block diagram of one embodiment of a wireless virtual reality (VR) system  200  is shown. System  200  includes at least computer  210 , transceivers  215 A-B, and head-mounted display (HMD)  220 . Computer  210  is representative of any type of computing device which includes one or more processors, memory devices, input/output (I/O) devices, RF components, antennas, and other components indicative of a personal computer or other computing device. In other embodiments, other computing devices, besides a personal computer, can be utilized to send video data wirelessly to head-mounted display (HMD)  220 . For example, computer  210  may be a gaming console, smart phone, set top box, television set, video streaming device, wearable device, a component of a theme park amusement ride, or otherwise. 
     Transceivers  215 A-B are representative of any number and type of transceivers that can be included within the environment of wireless VR system  200  to facilitate connections when computer  210  and HMD  220  are unable to communicate directly. In one embodiment, transceivers  215 A-B are located in corners of the room. In other embodiments, transceivers  215 A-B can be located in other locations that have good line-of-sight connections to most locations within the VR environment. As the user wearing HMD  220  moves around in the VR environment, various obstructions can get block the link between computer  210  and HMD  220 . When this occurs, computer  210  sends the encoded video stream on a path to a transceiver  215 A-B with a line of sight link to HMD  220 . As used herein, a “line-of-sight link” is defined as a link where no obstructions exist between two wireless transceivers, allowing wireless communication to be performed with a low probability of data loss. 
     Computer  210 , transceivers  215 A-B, and HMD  220  each include circuitry and/or components to communicate wirelessly. It should be understood that while computer  210  and transceivers  215 A-B are shown as having external antennas, this is shown merely to illustrate that the video data is being sent wirelessly. It should be understood that computers  210  and transceivers  215 A-B can have internal antennas. Additionally, while computer  210  can be powered using a wired power connection, HMD  220  is typically battery powered. Alternatively, computer  210  can be a laptop computer, or other mobile computing device, powered by a battery. 
     In one embodiment, computer  210  includes circuitry configured to dynamically render a representation of a VR environment to be presented to a user wearing HMD  220 . For example, in one embodiment, computer  210  includes one or more graphics processing units (GPUs) to render a VR environment. In other embodiments, computer  210  can include other types of processors, including a central processing unit (CPU), application specific integrated circuit (ASIC), field programmable gate array (FPGA), digital signal processor (DSP), or another processor type. HMD  220  includes circuitry to receive and decode a compressed bit stream sent by computer  210  (or one of transceivers  215 A-B) to generate frames of the rendered VR environment. HMD  220  then drives the generated frames to the display integrated within HMD  220 . 
     After rendering a frame of a virtual environment video stream, computer  210  encodes (i.e., compresses) the rendered frame and then sends the encoded frame wirelessly to HMD  220  or to one of transceivers  215 A-B if the direct wireless link to HMD  220  is deemed less than desirable. In one embodiment, HMD  220 , computer  210 , and transceivers  215 A-B are configured to perform a beamforming training procedure to determine a path for wirelessly sending each encoded frame from computer  210  to HMD  220 . The selected path can change over time as operating conditions vary, and so HMD  220 , computer  210 , and transceivers  215 A-B are configured to perform periodic beamforming training procedures to update the path from computer  210  to HMD  220 . 
     Referring now to  FIG. 3 , a block diagram of one embodiment of performing a beamforming training procedure to determine which transceiver has the best link to the receiver  305  is shown. In one embodiment, receiver  305  is a HMD configured to receive an encoded video bitstream, decode the video bitstream, and then drive the video to the display. In other embodiments, receiver  305  can be implemented as part of other types of devices. 
     In various embodiments, receiver  305  is a wireless receiver, and the user wearing receiver  305  is able to move around the VR environment. Accordingly, the quality of the links between receiver  305  and the transceivers  310 A-N can vary over time as the position between receiver  305  and each of transceivers  310 A-N changes. For example, one or more obstructions  315 A-B can be present in the VR environment, and as the location of receiver  305  changes, the obstructions  315 A-B can interfere with the wireless link between receiver  305  and one or more of transceivers  310 A-N. 
     Accordingly, to maintain a high quality link between the video source and receiver  305  within a changing VR environment, receiver  305  and transceivers  310 A-N perform periodic beamforming training procedures to determine the quality of the links between devices. In one embodiment, receiver  305  can initiate a beamforming training procedure by notifying transceivers  310 A-N. In another embodiment, beamforming training procedures can be performed on a fixed schedule. In this embodiment, receiver  305  and transceivers  310 A-N are synchronized in time so that the beamforming training procedures can be initiated at specific times. 
     In one embodiment, performing a beamforming training procedure entails each transceiver  310 A-N turning on an omni-directional antenna and transmitting with the same power output. Receiver  305  scans the receiver beam in a 360 degree span of the environment to determine where the strongest signal is coming from. In one embodiment, when receiver  305  is a HMD, the orientation of the HMD is being monitored so as to render the VR environment based on the user&#39;s head movements. In this embodiment, each transceiver  310 A-N is in a fixed location, and since the location and orientation of receiver  305  is known, this allows receiver  305  to determine which transceiver  310  generated the strongest signal. This transceiver  310  is then identified as the transceiver with the best link to receiver  305 , and the encoded video stream will be routed through this transceiver  310  to be sent wirelessly to receiver  305 . In another embodiment, each transceiver  310 A-N uses a separate channel to transmit a signal. For example, transceiver  310 A utilizes a first channel, transceiver  310 B utilizes a second channel, and so on. In this embodiment, receiver  305  scans the different channels to determine which channel has the strongest received signal. 
     Turning now to  FIG. 4 , one embodiment of a multi-transceiver wireless VR environment  400  is shown. In one embodiment, a wireless VR environment  400  includes a plurality of transceivers  410 A-N positioned at various locations throughout the environment  400 . For example, in one embodiment, transceivers  410 B-N are located in the corners of the room to provide good line-of-sight connections to any possible location of the receiver  405  in the wireless VR system. It is assumed for the purposes of this discussion that master transceiver  410 A is connected to a video source  402 . In one embodiment, the video source  402  includes a graphics card with one or more GPUs. 
     As the receiver  405  moves about the room, the quality of the signal path from the master transceiver  410 A to the receiver  405  can change. The wireless VR system is configured to perform periodic beamforming training procedures to determine a path from master transceiver  410 A through transceivers  410 A-N to the receiver. In various embodiments, the beamforming training procedure is configured to determine the quality of various signal paths and select a path(s) with a better quality than otherwise. In some cases, the selected path is the path that shows the best signal quality. In other cases, the selected path may not be the path with the best quality, but is a path the still has relatively good quality as compared to other paths. For example, if there is an obstruction between master transceiver  410 A and the receiver  405 , master transceiver  410 A sends the encoded video bitstream to another transceiver  410 B-N with a better line of sight connection to the receiver  405 . In some cases, master transceiver  410 A sends the encoded video bitstream to a first transceiver  410 B, the first transceiver  410 B sends the encoded video bitstream to a second transceiver  410 C, and so on, until the encoded video bitstream is sent to the receiver  405 . In this way, the wireless VR system is able to adaptively adjust the path used to convey the encoded video bitstream to the receiver  405  as the operating conditions vary. 
     Referring now to  FIG. 5 , one embodiment of a method  500  for transferring encoded video data to a receiver using a wireless path through a wireless mesh network is shown. For purposes of discussion, the steps in this embodiment and those of  FIG. 6-8  are shown in sequential order. However, it is noted that in various embodiments of the described methods, one or more of the elements described are performed concurrently, in a different order than shown, or are omitted entirely. Other additional elements are also performed as desired. Any of the various systems or apparatuses described herein are configured to implement method  500 . 
     A wireless VR system determines which transceiver of a plurality of transceivers has relatively good quality wireless link to a receiver (block  505 ). In one embodiment, the wireless VR system performs a beamforming training procedure to determine which transceiver has a relatively good wireless link to the receiver. Next, the system determines a path from a master transceiver through the plurality of transceivers to a given transceiver which has a relatively good quality wireless link to the receiver (block  510 ). In one embodiment, the system identifies a path from the master transceiver to the given transceiver such that each link between transceivers has a link quality greater than a threshold. In this embodiment, the received signal strength of a signal sent on the link can be utilized as a measure of the link quality. In other embodiments, other metrics can be utilized to represent link quality. It is noted that the master transceiver is connected to a video source (e.g., graphics card). Depending on the layout of the VR environment and obstructions within the environment, the path can traverse multiple transceivers in between the master transceiver and the given transceiver. Then, the system sends an encoded video bitstream on the path from the master transceiver to the given transceiver (block  515 ). Next, the given transceiver sends the encoded video bitstream to the receiver (block  520 ). After block  520 , method  500  ends. 
     Turning now to  FIG. 6 , one embodiment of a method  600  for determining a path for transferring an encoded video stream from a master transceiver to a receiver is shown. A wireless VR system initiates a beamforming training procedure (block  605 ). In one embodiment, the receiver (e.g., HMD) initiates the beamforming training procedure by notifying all of the transceivers in the wireless VR environment that a beamforming training procedure will be performed. In another embodiment, the beamforming training procedure can be performed on a fixed schedule. In this embodiment, the transceivers and receiver of the wireless VR system are synchronized in time so that they can start the beamforming training procedure at the same time. 
     Next, the wireless VR system determines which transceiver has the best line-of-sight connection to the receiver during a first phase of the beamforming training procedure (block  610 ). A line-of-sight connection refers to a link between a transceiver and the receiver which is devoid of obstructions. In one embodiment, the best line-of-sight connection is determined by measuring and comparing the signal strength of each transceiver&#39;s signals at the receiver. The transceiver that generates a signal with the highest signal strength, as measured by the receiver, is designated as having the best line-of-sight connection to the receiver. In other embodiments, the best line-of-sight connection can be determined during the beamforming training procedure using other suitable techniques. 
     Then, the wireless VR system determines a path from the master transceiver to the transceiver with a relatively good connection to the receiver during a second phase of the beamforming training procedure (block  615 ). If the system determines that the master transceiver has the best line-of-sight connection to the receiver in block  610 , then block  615  can be skipped. After block  615 , method  600  ends. It is noted that method  600  can be performed at various times during operation of the wireless VR system. For example, method  600  can be performed on a periodic basis. Alternatively, method  600  can be performed in response to detecting deterioration in the wireless link and/or the detecting a loss of data being sent over the wireless link. 
     Referring now to  FIG. 7 , one embodiment of a method  700  for determining a path from a master transceiver to a receiver is shown. A wireless VR system initiates a beamforming training procedure to find a path to use from a master transceiver to a receiver (block  705 ). In one embodiment, the wireless VR system has a plurality of transceivers positioned at different locations within the wireless VR environment. During a first phase of the beamforming training procedure, the system determines which transceiver of the plurality of transceivers has a relatively good quality link to the receiver (block  710 ). For example, in one embodiment, the receiver turns on an omni-directional antenna to receive signals from the plurality of transceivers, and the received signal with the highest signal strength is used to identify the transceiver with a relatively good link to the receiver. If the given transceiver with the relatively good link to the receiver is the master transceiver (conditional block  715 , “yes” leg), then method  700  ends. In this case, the encoded video bitstream is sent directly from the master transceiver to the receiver. 
     If the given transceiver with the relatively good link to the receiver is not the master transceiver (conditional block  715 , “no” leg), then the system determines if the link quality from the master transceiver to the given transceiver is above a programmable threshold (conditional block  720 ). In one embodiment, the system implements another phase of the beamforming training procedure to determine if the link quality of the link from the master transceiver to the given transceiver is above the programmable threshold. If the link quality from the master transceiver to the given transceiver is above the programmable threshold (conditional block  720 , “yes” leg), then method  700  ends. In this case, the master transceiver sends the encoded video bitstream to the given transceiver and then the given transceiver sends the encoded video bitstream to the receiver. 
     If the link quality from the master transceiver to the given transceiver is below the programmable threshold (conditional block  720 , “no” leg), then the system identifies an intermediary transceiver with a link quality to the given transceiver that is above the programmable threshold (block  725 ). In one embodiment, the system implements another phase of the beamforming training procedure to identify an intermediary transceiver with a link quality to the given transceiver that is above the programmable threshold. Next, the system determines if the link quality from the master transceiver to the intermediary transceiver is above the programmable threshold (conditional block  730 ). If the link quality from the master transceiver to the intermediary transceiver is above the programmable threshold (conditional block  730 , “yes” leg), then method  700  ends. In this case, the encoded video bitstream is sent from the master transceiver to the intermediary transceiver to the given transceiver and then to the receiver. 
     If the link quality from the master transceiver to the intermediary transceiver is less than the programmable threshold (conditional block  730 , “no” leg), then the system identifies another intermediary transceiver with a link quality to the previous intermediary transceiver that is above the programmable threshold (block  735 ). In one embodiment, the system implements another phase of the beamforming training procedure to identify another intermediary transceiver with a link quality to the previous intermediary transceiver that is above the programmable threshold. Next, the system determines if the link quality from the master transceiver to the other intermediary transceiver is above the programmable threshold (conditional block  730 ). This last phase of method  700  can be repeated any number of times until a suitable path to the receiver is found with each link on the path having a link quality above the programmable threshold. 
     Turning now to  FIG. 8 , one embodiment of a method  800  for changing a path for conveying an encoded video bitstream to a receiver is shown. A system determines that a measure of the link quality between a first transceiver and a receiver is less than a threshold (block  805 ). For example, in a wireless VR system, a user wearing a HMD moves within the VR environment, and an obstruction comes between the first transceiver and the HMD. When this happens, the first transceiver will not have a line-of-sight connection to the receiver. In one embodiment, the system can determine that a measure of the link quality between a first transceiver and a receiver is less than the threshold by performing a beamforming training procedure. 
     In response to determining that the link quality between the first transceiver and the receiver is less than the threshold, the system sends an encoded video bitstream from the first transceiver to a second transceiver (block  810 ). In one embodiment, the system determines that a measure of the link quality between the first transceiver and the second transceiver is greater than the threshold by performing a beamforming training procedure. Next, the system sends the encoded video bitstream from the second transceiver to the receiver (block  815 ). In one embodiment, the system determines that a measure of the link quality between the second transceiver and the receiver is greater than the threshold by performing a beamforming training procedure. After block  815 , method  800  ends. It is noted that in other embodiments, the encoded video bitstream can be sent on a path through a plurality of transceivers between the first transceiver and the receiver if the second transceiver does not have a line of sight connection to the receiver. 
     In various embodiments, program instructions of a software application are used to implement the methods and/or mechanisms described herein. For example, program instructions executable by a general or special purpose processor are contemplated. In various embodiments, such program instructions can be represented by a high level programming language. In other embodiments, the program instructions can be compiled from a high level programming language to a binary, intermediate, or other form. Alternatively, program instructions can be written that describe the behavior or design of hardware. Such program instructions can be represented by a high-level programming language, such as C. Alternatively, a hardware design language (RDL) such as Verilog can be used. In various embodiments, the program instructions are stored on any of a variety of non-transitory computer readable storage mediums. The storage medium is accessible by a computing system during use to provide the program instructions to the computing system for program execution. Generally speaking, such a computing system includes at least one or more memories and one or more processors configured to execute program instructions. 
     It should be emphasized that the above-described embodiments are only non-limiting examples of implementations. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.