Claims
- 1. A method of dynamically reconfiguring a computing platform in a process for executing at least one application on the platform, the platform comprising a reconfigurable processing device, the method comprising:
first-configuring the reconfigurable device so as to be capable of executing a first plurality of hardware tasks; after the first-configuring, executing a first set of tasks of an application substantially simultaneously on the platform, at least two of the first set of tasks being executed as hardware tasks on the reconfigurable device; interrupting the execution of the first set of tasks; second-configuring the reconfigurable device such that at least one new hardware task other than one of the first plurality of hardware tasks can be executed; and executing a second set of tasks substantially simultaneously on the platform to further execute the application, wherein at least two of the second set of tasks include the at least one new hardware task and are executed as hardware tasks on the reconfigurable device, wherein the application comprises a plurality of tasks, a number of the tasks being selectably executable as a software task on a programmable processor or as a hardware task on a hardware device.
- 2. The method of claim 1, wherein the reconfigurable device comprises a plurality of tiles, each tile being configurable in a variety of configurations, each of the tile configurations being capable of running a hardware task and wherein the second-configuring of the reconfigurable device changes at least one of the tiles from one configuration to another configuration.
- 3. The method of claim 2, wherein the reconfigurable device comprises a plurality of tiles and a communication network for providing communication between the tiles, wherein during the second-configuring of the reconfigurable device, the communication network remains fixed.
- 4. The method of claim 1, wherein the new hardware task is first executed on the programmable processor and thereafter, when the configuring is ready, executing the second set of the tasks, including the new task, substantially simultaneously on the platform, while at least two of the tasks of the second set, including the new task, are substantially simultaneously executed as hardware tasks on the reconfigurable device.
- 5. The method of claim 1, wherein a task is described in a description using a description language and being represented as a first set of objects with a first set of relationships therebetween.
- 6. The method of claim 5, further comprising transforming the description into a synthesizable code.
- 7. The method of claim 1, wherein the application is represented by codes, of which at least a first part is convertible in a first code, obtainable by mapping at least part of the application onto a virtual device which is hardware reconfigurable, further at least a second part of the code is convertible in a second code obtainable by mapping at least part of the application onto a virtual programmable processor, the first code comprising configuration information for hardware reconfiguring the virtual device, the hardware reconfiguring being required for enabling execution of the application on the virtual device, the second code comprising instructions compilable on a virtual programmable processor, and wherein the method further comprises:
transforming the first code into a third code, the third code comprising configuration information for hardware configuring the hardware reconfigurable device, the hardware reconfiguring being required for enabling execution of the application on the hardware reconfigurable device; transforming the second code into a fourth code, the fourth code comprising instructions compilable on the programmable processor; and executing on the device the application with the third and fourth code.
- 8. The method of claim 1, wherein the application is defined as a set of process threads in a description language, the set defining a representation of the application, at least part of the process thread representing a process which can be carried out on either the reconfigurable hardware device or the programmable processor, the description language including a function that suspends a thread, and wherein the method further comprises suspending at least one thread and storing the state information of the thread by invoking the function.
- 9. An operating system of a computing platform, capable of managing the execution of at least one application that includes a plurality of tasks, the operating system comprising:
a scheduler configured to schedule the tasks; and a reconfiguring section configured to reconfigure at run-time resources for a hardware task executed on a reconfigurable device, wherein a number of the tasks are selectably executable as a software task on a programmable processor or as a hardware task on a hardware device, on the computing platform comprising at least one programmable processor and the reconfigurable device.
- 10. The operating system of claim 9, further comprising means for allocating resources between the programmable processor and the reconfigurable device.
- 11. The operating system of claim 9, further comprising means for preempting and relocating tasks between the programmable processor and the reconfigurable device and vice versa.
- 12. The operating system of claim 9, further comprising means for storing state information for a task, executed as a hardware component, when preempted on the reconfigurable device.
- 13. The operating system of claim 9, wherein the tasks are capable of moving to a preemption state when receiving a pre-emption request, further comprising, when the preemption state is reached for a task, means for sending a message containing the current state of that task.
- 14. The operating system of claim 9, further comprising means for restoring state information on the reconfigurable device, when the corresponding task's execution is re-started.
- 15. The operating system of claim 9, further comprising means for invoking hard real time constraints on a task executed as a software task.
- 16. The operating system of claim 9, further comprising means for supporting uniform communication, allowing tasks to send/receive messages regardless of whether they are executed as hardware or as software tasks.
- 17. The operating system of claim 16, wherein the system is adapted for handling logical addresses as representations of the tasks, and wherein the means for supporting uniform communication comprises means for updating address translation tables, enabling translation of the logical addresses into physical addresses, and representing the location of a task within the reconfigurable device.
- 18. The operating system of claim 9, wherein the system is adapted for operating with a platform with a reconfigurable device, comprising a plurality of tiles, each tile being configurable in a variety of configurations, each of the tile configurations being capable of running a hardware component, and wherein the system further comprises means for storing the usage of tiles by the hardware components at any moment.
- 19. The operating system of claim 9, wherein the reconfigurable device comprises a plurality of tiles, each tile being configurable in a variety of configurations, each of the tile configurations being capable of running a hardware component, and wherein the operating system further comprises means for deciding on which tile a hardware task is executed.
- 20. The operating system of claim 19, further comprising means for adapting the configurations of the tiles by performing a partial reconfiguration of the reconfigurable device without rerouting.
- 21. The operating system of claim 9, wherein the reconfigurable device comprises a plurality of tiles and a communication network for providing communication between the tiles, and wherein the system further comprises means for message routing over the communication network by providing routing tables.
- 22. The operating system of claim 9, wherein the system is adapted for execution on the programmable processor in real-time mode.
- 23. The operating system of claim 9, further comprising a piece of middleware software, the middle software comprising: means for communicating with the operating system, and means for performing the selection of whether a task will be selected as software or as hardware component.
- 24. The operating system of claim 23, wherein the middleware software further comprises means for handling a representation of the application as a set of communicating threads.
- 25. The operating system of claim 24, wherein the middleware software further comprises means for automatic code generation for a task either as hardware component or as software component.
- 26. The operating system of claim 9, further comprising a device driver, dedicated for the reconfigurable device, configured to have a plurality of tiles, comprising means for communicating with the operating system, the means for communicating providing the operating system with information about the number of tiles and the speed of reconfigurability of the reconfigurable device.
- 27. The operating system of claim 9, further comprising a piece of middleware software configured to communicate with the operating system, and to perform the selection of whether a task will be selected as software or as hardware component.
- 28. A method of dynamically reconfiguring a computing platform that includes a reconfigurable processing device, the method comprising:
configuring the reconfigurable device so as to be capable of executing a first plurality of hardware tasks; multi-tasking a first set of tasks of an application on the platform, wherein at least two of the first set of tasks are hardware tasks being concurrently executed on the reconfigurable device; interrupting the execution of the first set of tasks; configuring the reconfigurable device such that at least one new hardware task other than one of the first plurality of hardware tasks can be executed; and multi-tasking a second set of tasks on the platform to further execute the application, wherein at least two of the second set of tasks are hardware tasks being concurrently executed on the reconfigurable device, and include the at least one new hardware task.
- 29. A system for dynamically reconfiguring a computing platform, wherein the computing platform is configured to execute at least one application, and the platform comprises a reconfigurable processing device, the system comprising:
means for configuring the reconfigurable device so as to be capable of executing a first plurality of hardware tasks; means for, after the configuring, executing a first set of tasks of an application substantially simultaneously on the platform, at least two of the first set of tasks being executed as hardware tasks on the reconfigurable device; means for interrupting the execution of the first set of tasks; means for configuring the reconfigurable device such that at least one new hardware task other than one of the first plurality of hardware tasks can be executed; and means for executing a second set of tasks substantially simultaneously on the platform to further execute the application, at least two of the second set of tasks including the at least one new hardware task and being executed as hardware tasks on the reconfigurable device, wherein the application comprises a plurality of tasks, a number of the tasks being selectably executable as a software task on a programmable processor or as a hardware task on a hardware device.
Priority Claims (1)
| Number |
Date |
Country |
Kind |
| 0304628.1 |
Feb 2003 |
GB |
|
RELATED APPLICATIONS
[0001] This application claims priority under 35 U.S.C. §119(e) from provisional application No. 60/384,881 filed May 31, 2002, which is hereby incorporated by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60384881 |
May 2002 |
US |