System and method for hardware-software multitasking on a reconfigurable computing platform
원문보기
IPC분류정보
국가/구분
United States(US) Patent
등록
국제특허분류(IPC7판)
G06F-009/46
G06F-001/24
G06F-015/78
출원번호
US-0332281
(2008-12-10)
등록번호
US-9038072
(2015-05-19)
발명자
/ 주소
Nollet, Vincent
Coene, Paul
Mignolet, Jean-Yves
Vernalde, Serge
Verkest, Diederik
Marescaux, Theodore
Bartic, Andrei
출원인 / 주소
XILINX, INC.
대리인 / 주소
Knobbe Martens Olson & Bear
인용정보
피인용 횟수 :
4인용 특허 :
6
초록▼
A platform supporting reconfigurable computing, enabling the introduction of reconfigurable hardware into portable devices is described. Dynamic hardware/software multitasking methods for a reconfigurable computing platform including reconfigurable hardware devices such as gate arrays, especially FP
A platform supporting reconfigurable computing, enabling the introduction of reconfigurable hardware into portable devices is described. Dynamic hardware/software multitasking methods for a reconfigurable computing platform including reconfigurable hardware devices such as gate arrays, especially FPGA's, and software, such as dedicated hardware/software operating systems and middleware, adapted for supporting the methods, especially multitasking, are described. A computing platform, which is a heterogeneous multi-processor platform, containing one or more instruction set processors (ISP) and a reconfigurable matrix (for instance a gate array, especially an FPGA), adapted for (dynamic) hardware/software multitasking is described.
대표청구항▼
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 p
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 wherein the interruption occurs while executing a task;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; andexecuting 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, and wherein the execution of the second set of tasks includes the resumed execution of the interrupted task,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;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; andwherein the reconfigurable device comprises a communication network for providing communication between the tiles, and during the second-configuring of the reconfigurable device, the communication network remains fixed. 2. 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. 3. 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. 4. The method of claim 3, further comprising transforming the description into a synthesizable code. 5. 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; andexecuting on the device the application with the third and fourth code. 6. 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. 7. A system comprising: a reconfigurable device;a programmable processor configured to communicate with the reconfigurable device; andan operating system of a computing platform, configured to execute on the programmable processor and 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; anda reconfiguring section configured to reconfigure at run-time resources for a hardware task executed on the reconfigurable device,wherein the operating 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;wherein a number of the tasks are selectably executable as a software task on the 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;wherein the reconfigured tasks are not required to be rerouted to a different resource. 8. The system of claim 7, wherein the operating system is further configured to allocate resources between the programmable processor and the reconfigurable device. 9. The system of claim 7, wherein the operating system is further configured to pre-empt and relocate tasks between the programmable processor and the reconfigurable device and vice versa. 10. The system of claim 7, wherein the operating system is further configured to store state information for a task, executed as a hardware component, when preempted on the reconfigurable device. 11. The system of claim 7, wherein the tasks of the operating system 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. 12. The system of claim 7, wherein the operating system is further configured to restore state information on the reconfigurable device, when the corresponding task's execution is re-started. 13. The system of claim 7, wherein the operating system is further configured to invoke hard real time constraints on a task executed as a software task. 14. The system of claim 7, wherein the operating system is further configured for uniform communication, wherein tasks send and/or receive messages regardless of whether they are executed as hardware or as software tasks. 15. The system of claim 14 wherein the operating 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. 16. The system of claim 7, 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. 17. The system of claim 16 wherein the operating system is further configured for adapting the configurations of the tiles by performing a partial reconfiguration of the reconfigurable device without rerouting. 18. The system of claim 7, 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. 19. The system of claim 7, wherein the operating system is adapted for execution on the programmable processor in real-time mode. 20. The system of claim 7, wherein the operating system comprises: 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. 21. The system of claim 20, wherein the middleware software further comprises means for handling a representation of the application as a set of communicating threads. 22. The system of claim 21, wherein the middleware software further comprises means for automatic code generation for a task either as hardware component or as software component. 23. The system of claim 7, wherein the operating system comprises: 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. 24. The system of claim 7, wherein the operating system comprises: 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. 25. 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; andmulti-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,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;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 configuring of the reconfigurable device with the one new hardware task changes at least one of the tiles from one configuration to another configuration; andwherein the reconfigurable device comprises a communication network for providing communication between the tiles, and during the configuring of the reconfigurable device with the one new hardware task, the communication network remains fixed. 26. 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; andmeans 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;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 configuring of the reconfigurable device such that at least one new hardware task can be executed changes at least one of the tiles from one configuration to another configuration; andwherein the interruption of the first set of tasks comprises, pre-empting the interrupted task and storing its associated state information for a task,restoring associated state information on the reconfigurable device when the interrupted task's execution is resumed. 27. The method of claim 26, wherein the interrupted task's execution is associated with one of the hardware tiles, and wherein the interrupted task is resumed to either the same hardware tile as before the interruption or else resumed on a different hardware tile. 28. A non-transitory computer readable medium storing an operating system, that when executed performs a 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; andmulti-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,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;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 configuring of the reconfigurable device with the one new hardware task changes at least one of the tiles from one configuration to another configuration; andwherein the reconfigurable device comprises a communication network for providing communication between the tiles, and during the configuring of the reconfigurable device with the one new hardware task, the communication network remains fixed.
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
이 특허에 인용된 특허 (6)
Walsh Robert J. (Ashland MA), Adaptive mechanism for efficient interrupt processing.
Schaumont Patrick,BEX ; Vernalde Serge,BEX ; Cockx Johan,BEX, Design environment and a method for generating an implementable description of a digital system.
De Bonis-Hamelin, Marie-Antoinette; Menyhart, Zoltan; Sorace, Jean-Dominique, Process for reconfiguring an information processing system upon detection of a component failure.
Schultz, David P.; Lu, Weiguang; Kolze, Paige A., Circuit arrangement for and a method of enabling a partial reconfiguration of a circuit implemented in an integrated circuit device.
Atta, Islam Mohamed Hatem Abdulfattah Mohamed; Pettey, Christopher Joseph; Bshara, Nafea; Khan, Asif; Davis, Mark Bradley; Tandon, Prateek, Logic repository service using encrypted configuration data.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.