Programmable logic device virtualization
11804844 · 2023-10-31
Assignee
Inventors
- David Alexander Munday (Santa Cruz, CA, US)
- Randall Carl Bilbrey, Jr. (San Jose, CA, US)
- Evan Custodio (San Jose, CA, US)
Cpc classification
G06F30/331
PHYSICS
G06F9/44505
PHYSICS
G06F21/76
PHYSICS
G06F30/34
PHYSICS
H03K19/17756
ELECTRICITY
H04L65/403
ELECTRICITY
International classification
G06F21/76
PHYSICS
G06F30/331
PHYSICS
G06F30/34
PHYSICS
G06F9/50
PHYSICS
H03K19/17756
ELECTRICITY
Abstract
A device includes a programmable logic fabric. The programmable logic fabric includes a first area, wherein a first persona is configured to be programmed in the first area. The programmable logic fabric also includes a second area, wherein a second persona is configured to be programmed in the second area in a second persona programming time. The device is configured to be controlled by a host to switch from running the first persona to running the second persona in a time less than the second persona programming time.
Claims
1. A method comprising: running a virtual integrated circuit on first integrated circuitry; while the virtual integrated circuit is running a first persona, configuring a second persona of the virtual integrated circuit on second integrated circuitry; and migrating to the second persona of the virtual integrated circuit faster than a time involved in configuring the second persona.
2. The method of claim 1, wherein the first integrated circuitry and the second integrated circuitry are disposed on different parts of a physical integrated circuit.
3. The method of claim 1, comprising: stopping running the virtual integrated circuit in response to completing or approximately completing configuration of the second persona of the virtual integrated circuit on the second integrated circuitry.
4. The method of claim 1, wherein migrating to the second persona comprises a substantially imperceptible switch for a user of the virtual integrated circuit.
5. The method of claim 1, wherein configuring the second persona is imperceptible to a user of the virtual integrated circuit.
6. The method of claim 1, wherein the virtual integrated circuit is configurable to communicate with a host while the virtual integrated circuit is running on the first persona and while migrating to the second persona.
7. The method of claim 6, wherein the virtual integrated circuit communicates with the host using network control circuitry.
8. A system, comprising: physical integrated circuit of a first size comprising a virtual integrated circuit of a second size smaller than the first size; and a host to: cause the virtual integrated circuit to run a first persona; and cause the virtual integrated circuit to emulate partial reconfiguration to switch from running the first persona to running a second persona faster than it would take to physically perform the partial reconfiguration.
9. The system of claim 8, wherein the physical integrated circuit comprises field programmable gate array (FPGA) circuitry and the virtual integrated circuit comprises a virtual FPGA.
10. The system of claim 9, wherein the physical integrated circuit comprises field programmable gate array circuitry of at least twice the size of the virtual FPGA.
11. The system of claim 9, wherein the host is to program the first persona of the virtual integrated circuit and the second persona of the virtual integrated circuit onto the physical integrated circuit before causing the virtual integrated circuit to emulate partial reconfiguration to switch from running the first persona to running the second persona.
12. The system of claim 11, wherein the host is to stop the virtual integrated circuit from running the first persona in response to completing programming of the second persona of the virtual integrated circuit onto the physical integrated circuit.
13. The system of claim 11, wherein the first persona of the virtual integrated circuit is programmed into a first area of the physical integrated circuit and the second persona of the virtual integrated circuit is programmed into a second area of the physical integrated circuit.
14. The system of claim 13, wherein a total size of the first area and the second area is greater than the second size of the virtual integrated circuit.
15. The system of claim 14, wherein the virtual integrated circuit is to communicate with the host using network control circuitry.
16. One or more tangible, non-transitory, machine-readable media, comprising machine-readable instructions to: run a first persona of a virtual integrated circuit on first integrated circuitry; while the first persona of the virtual integrated circuit is running, configure a second persona of the virtual integrated circuit on second integrated circuitry; and migrate the virtual integrated circuit from the first persona to the second persona faster than a time involved in configuring the second persona.
17. The one or more tangible, non-transitory, machine-readable-media of claim 16, wherein the first integrated circuitry and the second integrated circuitry are disposed on different parts of a physical integrated circuit.
18. The one or more tangible, non-transitory, machine-readable-media of claim 16, wherein the second persona comprises configuration data that is different than that of the first persona.
19. The one or more tangible, non-transitory, machine-readable-media of claim 16, wherein the virtual integrated circuit is connected to a host while the virtual integrated circuit is running on the first integrated circuitry, while the second integrated circuitry is configured with the second persona, and while the virtual integrated circuit is migrated to the second persona.
20. The one or more tangible, non-transitory, machine-readable-media of claim 19, wherein the host is connected to the virtual integrated circuit via network control circuitry.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) Various aspects of this disclosure may be better understood upon reading the following detailed description and upon reference to the drawings in which:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS
(9) One or more specific embodiments will be described below. In an effort to provide a concise description of these embodiments, not all features of an actual implementation are described in the specification. It should be appreciated that in the development of any such actual implementation, as in any engineering or design project, numerous implementation-specific decisions must be made to achieve the developers' specific goals, such as compliance with system-related and business-related constraints, which may vary from one implementation to another. Moreover, it should be appreciated that such a development effort might be complex and time consuming, but would nevertheless be a routine undertaking of design, fabrication, and manufacture for those of ordinary skill having the benefit of this disclosure.
(10) This disclosure relates to enhancing the perceived performance of an integrated circuit device. In particular, a larger integrated circuit device may effectively emulate a smaller integrated circuit device (a “virtual” smaller integrated circuit device) that may perform partial reconfiguration faster, in at least some respects, than would an actual version of the smaller integrated circuit device. In one example, an initial programmable logic design may be programmed into programmable logic of the larger integrated circuit device. The initial programmable logic design may have multiple partitions (which may be separate or may overlap) that can be subsequently programmed through “partial reconfiguration” into particular personas. Thus, even while a first persona is running in a first partition, a second persona can be programmed into a second partition in the larger integrated circuit device. Outwardly, the appearance of the larger integrated circuit device may be that of a virtual smaller integrated circuit with comparatively lower partial reconfiguration latency than an actual smaller integrated circuit. That is, in effect, the latency of programming the subsequent persona may be hidden. Indeed, the time involved in switching from the first persona to the second persona may lower than the time it would take to reprogram the first persona into the second persona, since the second persona may already be programmed in the other partition.
(11) With the foregoing in mind,
(12) In the example of
(13) For example, a memory or storage device 22 may store a program file 24 that defines a partially reconfigurable initial programmable logic design and/or various partial reconfiguration personas. The memory device 22 may include, but is not limited to, random access memory (RAM), read only memory (ROM), Flash memory, and the like. The program file 24 may be generated using programmable logic device design software, such as a version of the Quartus® software by Altera Corporation. The initial programmable logic design in the program file 24 may include logic that, when programmed into the programmable region 16, may enable subsequent partial reconfiguration during runtime. That is, the initial programmable logic design may include certain logic elements that can be rapidly reconfigured during runtime through partial reconfiguration to produce specific program implementations known as different “personas.” As mentioned briefly above, partial reconfiguration involves programming an initial programmable logic design into the programmable logic device that can be rapidly reconfigured during runtime. Thus, while the initial programmable logic design may take a substantial amount of programming time (e.g., on the order of hours), partial reconfiguration during runtime may be faster (e.g., on the order of seconds). Since the initial programmable logic design may include a number of logic elements that can be rapidly reprogrammed during runtime, the initial programmable logic design may support many different partial reconfiguration personas.
(14) Since even the relatively quick latency of programming partial reconfiguration personas may be undesirable for certain use cases, the integrated circuit device 12 may be used to emulate a smaller “virtual” integrated circuit device to avoid some of these latency effects. By way of example, the integrated circuit device 12 may be an integrated circuit device such as the Stratix® 10 programmable logic device by Altera Corporation, and may be used to emulate one or more virtual versions of the Stratix® V programmable logic device by Altera Corporation. In general, the integrated circuit device 12 may be any suitable integrated circuit device having sufficient programmable logic in the programmable region 16 to support multiple partial reconfiguration personas being programmed in different partitions of the programmable region 16.
(15) To this end, the programmable region 16 may also be divisible into partitions that can respectively be programmed with different personas.
(16) By selectively using each partition 45, the integrated circuit device 12 may appear outwardly as a “virtual” smaller integrated circuit device with faster partial reconfiguration capabilities. In one particular example, each partition 45 may have approximately equal size and may possess approximately equal resources and capabilities. Under such conditions, each partition 45 may appear to support a different persona of a virtual integrated circuit device that is approximately one quarter the size of the original integrated circuit device 12. In some embodiments, each partition 45 may be different in size and/or possessing different quantities of resources and capabilities. Each partition 45 may also be programmed with one or more personas. For example, the first partition 41 may be programmed with a first persona, the second partition 42 may be programmed with a second persona, the third partition 43 may be programmed with a third persona, and the fourth partition 44 may be programmed with a fourth persona. The first partition 41 may also be programmed with a fifth persona.
(17) The partitions 45 may overlap or share resources.
(18) Turning now to programming and running the personas on the partitions 45 of the integrated circuit device 12,
(19) If the host 18 determines (node 74) that the first persona was programmed into the first partition 41 (node 74), the host 18 may run (block 76) the first persona. From an outward perspective, the integrated circuit device 12 may appear to be a virtual smaller integrated circuit device running the first persona. Since the actual integrated circuit device 12 may have more resources (e.g., programmable fabric) than the virtual smaller integrated circuit device that is running on the integrated circuit device 12, the integrated circuit device 12 may use the time that the first persona is running to prepare for future partial reconfiguration switches in personas. For example, while the first persona is running, the host 18 may take advantage these additional resources to program (block 78) a second persona into the second partition 42. During this time, the first partition 41 may appear as a virtual, smaller FPGA to the user. That is, the first partition 41 may appear to be an FPGA that is a fraction of the size and possesses a fraction of the resources of the integrated circuit device 12. The host 18 may determine (node 80) whether the second persona was programmed into the second partition 42. If not, the method may return to block 78. If so, the host 18 may determine (node 82) whether the first persona has finished running. If not, the method may return to block 78.
(20) The host 18 may also program subsequent personas into the subsequent partitions. For example, while the first persona is running, the host 18 may program a third persona into the third partition 43. In some embodiments, the host 18 may know the partial reconfiguration programming times of each persona it will be programming. For example, the host 18 may know that a fourth persona has a programming time that is significantly longer (e.g., four times longer) than programming times of the other personas. In these embodiments, the host 18 may begin programming the persona with the significantly longer programming time in the subsequent partitions prior to programming the personas with shorter programming times. For example, the host 18 may program the fourth persona that has a significantly longer programming time in the fourth partition 44 before programming the third persona that has a shorter programming time in the third partition 43.
(21) If the host 18 determines (node 82) that the first persona has finished running, the host 18 may be able to switch from running the first persona to running (block 84) the second persona; the switch may take place faster than the time it took to program the second persona. While the second persona is running, the host 18 may program subsequent personas into the subsequent partitions. For example, while the second persona is running, the host 18 may program the third persona into the third partition 43. In some embodiments, the host 18 may program the subsequent personas into previously used partitions that are not being programmed or run. For example, while the second persona is running, the host 18 may program the third persona into the first partition 41.
(22) The embodiment described in
(23) Turning now to
(24) At time t.sub.1, the host 18 may complete programming the first persona into the first partition 41. The host 18 may then run (item 128) the first persona for a period of time, T.sub.1, Run, from t.sub.1 to t.sub.1′. During the time period between t.sub.1 to t.sub.1′, the first partition 41 may appear as a virtual, smaller integrated circuit device 126 to the user. Additionally, the user may perceive that the virtual, smaller integrated circuit device 126 is running the first persona. Also during the time period between t.sub.1 to t.sub.1′, while the first persona runs (item 128) on the first partition 41, the host 18 may program (item 130) the second persona (P2) into the second partition 42. The user may not perceive that the host 18 is programming (item 130) the second persona into the second partition 42, and instead may only perceive the first persona running on the virtual, smaller integrated circuit device 126 (i.e., the first partition 41).
(25) At time t.sub.1′, the first persona may finish running. If the second persona is programmed, then the host 18 may run (block 132) the second persona. The user may perceive a change from the first persona to the second persona over a time from t.sub.1′ to t.sub.2, for a period of time T.sub.2. As discussed above, the time to program each persona may be the time T. The time to program each persona may be on the order of seconds. However, because the host 18 programmed (item 130) the second persona into the second partition 42 while the first persona ran (item 128) in the first partition 41, the programming time for the second persona may be hidden from the user. Thus, T.sub.2 may represent the time to change from the first persona to the second persona, and may not include the programming time for the second persona. Instead, the user may perceive that the first persona changes to the second persona almost instantaneously (i.e., on a scale of milliseconds). Accordingly, T.sub.2 may be a period of time significantly less than T (i.e., the programming time for the second persona).
(26) The host 18 may run (item 136) the second persona for a period of time, T.sub.2, Run, from t.sub.2 to t.sub.2′. During the time period between t.sub.2 to t.sub.2′, the second partition 42 may appear as a virtual, smaller FPGA 134 to the user. Additionally, the user may perceive that the virtual, smaller FPGA 134 is running the second persona. Also during the time period between t.sub.2 to t.sub.2′, while the second persona runs (item 136) on the second partition 42, the host 18 may program (item 138) the third persona (P3) into the third partition 43. The user may not perceive that the host 18 is programming (item 138) the third persona into the third partition 43, and instead may only perceive the second persona running on the virtual, smaller FPGA 134 (i.e., the second partition 42).
(27) At time t.sub.2′, the second persona may finish running. If the third persona is programmed, then the host 18 may run (block 140) the third persona. The user may perceive a change from the second persona to the third persona over a time from t.sub.2′ to t.sub.3, for a period of time T.sub.3. As discussed above, the time to program each persona may be the time T. The time to program each persona may be on the order of seconds. However, because the host 18 programmed (item 138) the third persona into the third partition 43 while the second persona ran (item 136) in the second partition 42, the programming time for the third persona may be hidden from the user. Thus, T.sub.3 may represent the time to change from the second persona to the third persona, and may not include the programming time for the third persona. Instead, the user may perceive that the second persona changes to the third persona almost instantaneously (i.e., on the scale of milliseconds). Accordingly, T.sub.3 may be a period of time significantly less than T (i.e., the programming time for the third persona).
(28) The host 18 may run (item 144) the third persona for a period of time, T.sub.3, Run, from t.sub.3 to t.sub.3′. During the time period between t.sub.3 to t.sub.3′, the third partition 43 may appear as a virtual, smaller FPGA 142 to the user. Additionally, the user may perceive that the virtual, smaller FPGA 142 is running the third persona. Also during the time period between t.sub.3 to t.sub.3′, while the third persona runs (item 144) on the third partition 43, the host 18 may program (item 146) the fourth persona (P4) into the fourth partition 44. The user may not perceive that the host 18 is programming (item 146) the fourth persona into the fourth partition 44, and instead may only perceive the third persona running on the virtual, smaller FPGA 142 (i.e., the third partition 43).
(29) At time t.sub.3′, the third persona may finish running. If the fourth persona is programmed, then the host 18 may run (block 148) the fourth persona. The user may perceive a change from the third persona to the fourth persona over a time from t.sub.3′ to t.sub.4, for a period of time T.sub.4. As discussed above, the time to program each persona may be the time T. The time to program each persona may be on the order of seconds. However, because the host 18 programmed (item 146) the fourth persona into the fourth partition 44 while the third persona ran (item 144) in the third partition 43, the programming time for the fourth persona may be hidden from the user. Thus, T.sub.4 may represent the time to change from the third persona to the fourth persona, and may not include the programming time for the fourth persona. Instead, the user may perceive that the third persona changes to the fourth persona almost instantaneously (i.e., on the scale of milliseconds). Accordingly, T.sub.4 may be a period of time significantly less than T (i.e., the programming time for the fourth persona).
(30) The host 18 may run (item 152) the fourth persona for a period of time, T.sub.4, Run, from t.sub.4 to t.sub.4′. During the time period between t.sub.4 to t.sub.4′, the fourth partition 44 may appear as a virtual, smaller FPGA 150 to the user. Additionally, the user may perceive that the virtual, smaller FPGA 150 is running the fourth persona. Also during the time period between t.sub.4 to t.sub.4′, while the fourth persona runs (item 152) on the fourth partition 44, the host 18 may program (item 154) the fifth persona into the first partition 41. As discussed above, each partition 45 may have multiple personas. The user may not perceive that the host 18 is programming (item 154) the fifth persona (P5) into the first partition 41, and instead may only perceive the fourth persona running on the virtual, smaller FPGA 150 (i.e., the fourth partition 44).
(31) At time t.sub.4′, the fourth persona may finish running. If the fifth persona is programmed, then the host 18 may run (block 156) the fifth persona. The user may perceive a change from the fourth persona to the fifth persona over a time from t.sub.4′ to t.sub.5, for a period of time T.sub.5. As discussed above, the time to program each persona is the time T. The time to program each persona may be on the order of seconds. However, because the host 18 programmed (item 154) the fifth persona into the first partition 41 while the fourth persona ran (item 152) in the fourth partition 44, the programming time for the fifth persona may be hidden from the user. Thus, T.sub.5 may represent the time to change from the fourth persona to the fifth persona, and may not include the programming time for the fifth persona. Instead, the user may perceive that the fourth persona changes to the fifth persona almost instantaneously (i.e., on the scale of milliseconds). Accordingly, T.sub.5 may be a period of time significantly less than T (i.e., the programming time for the fifth persona).
(32) While the host 18 runs (item 160) the fifth persona, the first partition 41 may appear as a virtual, smaller FPGA 158 to the user. Additionally, the user may perceive that the virtual, smaller FPGA 158 is running the fourth persona.
(33) The embodiment described in
(34) Turning now to
(35) At time t.sub.1, the host 18 may complete programming the first persona into the first partition 41. The host 18 may then run (item 238) the first persona for a period of time, T.sub.1, Run, from t.sub.1 to t.sub.1′. During the time period between t.sub.1 to t.sub.1′, the first partition 41 may appear as a virtual, smaller FPGA 236 to the user. Additionally, the user may perceive that the virtual, smaller FPGA 236 is running the first persona. Also during the time period between t.sub.1 to t.sub.1′, while the first persona runs (item 238) on the first partition 41, the host 18 may program (item 240) the second persona (P2) into the second partition 42. The user may not perceive that the host 18 is programming (item 240) the second persona into the second partition 42, and instead may only perceive the first persona running on the virtual, smaller FPGA 236 (i.e., the first partition 41).
(36) At time t.sub.1″, a time between t.sub.1 and t.sub.1′, the host 18 may finish programming (item 240) the second persona into the second partition 42 while the first persona continues running (item 238) in the first partition 41. The host 18 may then program (item 242) the fourth persona (P4) into the fourth partition 44. The host 18 programs (item 242) the fourth persona into the fourth partition 44 because the host 18 may access the program file 24 and know beforehand that the programming time of the fourth persona is significantly longer (i.e., four times longer in this example) than the programming time of the other three personas.
(37) At time t.sub.1′, the first persona may finish running. If the second persona is programmed, then the host 18 may run (block 244) the second persona. The user may perceive a change from the first persona to the second persona over a time from t.sub.1′ to t.sub.2, for a period of time T.sub.2. As discussed above, the time to program the second persona may be the time T. The time to program each persona may be on the scale of seconds. However, because the host 18 programmed (item 240) the second persona into the second partition 42 while the first persona ran (item 238) in the first partition 41, the programming time for the second persona may be hidden from the user. Thus, T.sub.2 may represent the time to change from the first persona to the second persona, and may not include the programming time for the second persona. Instead, the user may perceive that the first persona changes to the second persona almost instantaneously (i.e., on the order of milliseconds). Accordingly, T.sub.2 may be a period of time significantly less than T (i.e., the programming time for the second persona).
(38) The host 18 may run (item 248) the second persona for a period of time, T.sub.2, Run, from t.sub.2 to t.sub.2′. During the time period between t.sub.2 to t.sub.2′, the second partition 42 may appear as a virtual, smaller FPGA 246 to the user. Additionally, the user may perceive that the virtual, smaller FPGA 246 is running the second persona. Also during the time period between t.sub.2 to t.sub.2′, while the second persona runs 246 on the second partition 42, the host 18 may program (item 250) the third persona (P3) into the third partition 43. The user may not perceive that the host 18 is programming (item 250) the third persona into the third partition 43, and instead may only perceive the second persona running on the virtual, smaller FPGA 246 (i.e., the second partition 42).
(39) At time t.sub.2″, a time between t.sub.2 and t.sub.2′, the host 18 may finish programming (item 250) the third persona into the third partition 43 while the second persona continues running (item 248) in the second partition 42. The host 18 may then determine whether the fourth persona is programmed into the fourth partition 44. If not, the host 18 may program or continue programming (item 242) the fourth persona into the fourth partition 44. The host 18 programs (item 242) the fourth persona into the fourth partition 44 because the host 18 may access the program file 24 and know beforehand that the programming time of the fourth persona is significantly longer (i.e., four times longer in this example) than the programming time of the other three personas.
(40) At time t.sub.2′, the second persona may finish running. If the third persona is programmed, then the host 18 may run (block 252) the third persona. The user may perceive a change from the second persona to the third persona over a time from t.sub.2′ to t.sub.3, for a period of time T.sub.3. As discussed above, the time to program the third persona may be the time T. The time to program the third persona may be on the order of second. However, because the host 18 programmed (item 250) the third persona into the third partition 43 while the second persona ran (item 248) in the second partition 42, the programming time for the third persona may be hidden from the user. Thus, T.sub.3 may represent the time to change from the second persona to the third persona, and may not include the programming time for the third persona. Instead, the user may perceive that the second persona changes to the third persona almost instantaneously (i.e., on the order of milliseconds). Accordingly, T.sub.3 may be a period of time significantly less than T (i.e., the programming time for the third persona).
(41) The host 18 may run (item 144) the third persona for a period of time, T.sub.3, Run, from t.sub.3 to t.sub.3′. During the time period between t.sub.3 to t.sub.3′, the third partition 43 may appear as a virtual, smaller FPGA 254 to the user. Additionally, the user may perceive that the virtual, smaller FPGA 254 is running the third persona. The host 18 may determine whether the fourth persona is programmed into the fourth partition 44. If not, while the third persona runs (item 256) on the third partition 43, the host 18 may program or continue to program (item 242) the fourth persona into the fourth partition 44. The user may not perceive that the host 18 is programming (item 242) the fourth persona into the fourth partition 44, and instead may only perceive the third persona running on the virtual, smaller FPGA 254 (i.e., the third partition 43).
(42) At time t.sub.3′, the third persona may finish running. If the fourth persona is programmed, then the host 18 may run (block 258) the fourth persona. The user may perceive a change from the third persona to the fourth persona over a time from t.sub.3′ to t.sub.4, for a period of time T.sub.4. As discussed above, the time to program the fourth persona may be the time 4T. As discussed above, the time to program a persona typically is on the order of seconds. However, because the host 18 may have programmed (item 242) the fourth persona into the fourth partition 44 while the first persona, the second persona, and the third persona ran, the programming time for the fourth persona may be hidden from the user. Thus, T.sub.4 may represent the time to change from the third persona to the fourth persona, and may not include the programming time for the fourth persona. Instead, the user may perceive that the third persona changes to the fourth persona almost instantaneously (i.e., on the order of milliseconds). Accordingly, T.sub.4 may be a period of time significantly less than 4T (i.e., the programming time for the fourth persona).
(43) While the host 18 runs (item 262) the fourth persona, the fourth partition 44 may appear as a virtual, smaller FPGA 260 to the user. Additionally, the user may perceive that the virtual, smaller FPGA 260 is running the fourth persona.
(44) The embodiment described in
(45) While the embodiments set forth in the present disclosure may be susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and have been described in detail herein. However, it should be understood that the disclosure is not intended to be limited to the particular forms disclosed. The disclosure is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the disclosure as defined by the following appended claims.