Claims
- 1. A system for processing a task having a plurality of component subtasks including a first subtask and a second subtask, the system comprising:
a plurality of processing elements including a first processing element and a second processing element, the first processing element adapted to process the first subtask of the task, the second processing element adapted to process the second subtask of the task; a plurality of data structures; a plurality of data managers, each data manager adapted to manage a data structure; and an interconnect that couples each processing element to at least one data manager; wherein the first processing element processes the first subtask of the task, and when the first processing element finishes the processing of the first subtask, the second processing element processes the second subtask of the task.
- 2. The system of claim 1 wherein at least one of the data structures comprises a list, and wherein at least one data manager is optimized to manipulate the list.
- 3. The system of claim 1 wherein at least one of the data structures comprises a table, and wherein at least one data manager is optimized to manipulate the table.
- 4. The system of claim 2 wherein the processing elements send packets to the data managers via the interconnect, the packets containing list-manipulation commands.
- 5. The system of claim 1 wherein the second processing element is adapted to process the second subtask of the task while the first processing element processes the first subtask of a next task.
- 6. The system of claim 1 wherein each processing element is optimized to process a subtask of the task.
- 7. The system of claim 1 wherein each data manager is optimized to manage a data structure.
- 8. The system of claim 1 wherein each processing element is adapted for processing a different subtask of the task.
- 9. The system of claim 1 wherein two or more processing elements comprise a first subset of the plurality of processing elements, wherein the first subset is adapted for processing a selected subtask of the plurality of subtasks, wherein each processing element of the first subset is adapted to process a portion of the selected subtask.
- 10. The system of claim 1 wherein the task includes a request for data from a pool of data storage resources.
- 11. The system of claim 1 wherein the interconnect includes a partial crosspoint interconnect.
- 12. The system of claim 1 wherein the interconnect includes a crossbar.
- 13. The system of claim 1 wherein the interconnect comprises a first and second interconnect, wherein at least one of the processing elements is coupled to the first interconnect and at least one data manager is coupled to the second interconnect, wherein the first interconnect is coupled to the second interconnect thereby coupling the processing element coupled to the first interconnect with the data manager coupled to the second interconnect.
- 14. The system of claim 1, wherein the system is for processing a plurality of ordered task1 to N, each taskn having a plurality of ordered subtasks1 to M, each subtaskm to be processed by at least one processing elementm of a plurality of processing elements1 to M, wherein while a processing elementm processes a subtaskm of a taskn+1, a processing elementm+1 processes a subtaskm+1 of a taskn, wherein the taskn is the task immediately preceding the taskn+1,and wherein the subtaskm is the subtask immediately preceding the subtaskm+1.
- 15. The system of claim 1, wherein a second subset of the plurality of processing elements is adapted to process one of the plurality of subtasks for a plurality of tasks in parallel.
- 16. The system of claim 1 wherein at least one of the processing elements decodes commands.
- 17. The system of claim 1 wherein at least one data structure is a cache state and at least one of the processing elements controls a cache state.
- 18. The system of claim 1 wherein at least one of the processing elements maps data addresses to logical block addresses of a disk drive.
- 19. The system of claim 1 wherein at least one of the processing elements interacts with a host.
- 20. The system of claim 1 further comprising a cache wherein one of the processing elements manages cache resource allocation.
- 21. The system of claim 1 further wherein the processing elements, interconnect, and the data managers comprise a single integrated circuit.
- 22. The system of claim 1 wherein at least one of the data structures has a message queue for facilitating communications between at least two of the processing elements, wherein one processing element sends a message to the message queue for the other processing element to retrieve.
- 23. The system of claim 1 wherein at least one data structure is stored in an internal memory.
- 24. The system of claim 1 wherein at least one data structure is stored in an external memory.
- 25. The system of claim 1 wherein the tasks are selected from the group consisting of: RAID requests; queue management commands, cache data request, read data requests, write data requests, block level read requests, block level write requests, file level data read requests, file level data write requests, directory structure commands, and database manipulation commands.
- 26. In a system having a plurality of processing elements including a first processing element and a second processing element; a plurality of data structures; a plurality of data managers, each data manager adapted to manage a data structure; and an interconnect coupling each processing element to at least one data manager, a method for processing a task having a plurality of component subtasks including a first subtask and a second subtask, each subtask corresponding to at least one processing element adapted to process the subtask, the method comprising:
managing one or more data structures with one or more data managers; processing the first subtask with the first processing element; processing the second subtask with the second processing element when the first processing element finishes the processing of the first subtask.
- 27. The method of claim 26 wherein at least one of the data structures comprises a list, and wherein at least one data manager is optimized to manipulate the list.
- 28. The method of claim 26 wherein at least one of the data structures comprises a table, and wherein at least one data manager is optimized to manipulate the table.
- 29. The method of claim 27 wherein the processing elements send packets to the data managers via the interconnect, the packets containing list-manipulation commands.
- 30. The method of claim 26, comprising processing the second subtask of the task with the second processing element while the first processing element processes the first subtask of a next task.
- 31. The method of claim 26 wherein each processing element is optimized to process a subtask of the task.
- 32. The method of claim 26 wherein each data manager is optimized to manage a data structure.
- 33. The method of claim 26 wherein each processing element is adapted for processing a different subtask of the task.
- 34. The method of claim 26, further comprising processing a selected subtask of the plurality of subtasks with two or more processing elements comprising a first subset of the plurality of processing elements, wherein each processing element of the first subset is adapted to process a portion of the selected subtask.
- 35. The method of claim 26 wherein the task includes a request for data from a pool of data storage resources.
- 36. The method of claim 26 wherein the interconnect includes a partial crosspoint interconnect.
- 37. The method of claim 26 wherein the interconnect includes a crossbar.
- 38. The method of claim 26 wherein the interconnect comprises a first and second interconnect, wherein at least one of the processing elements is coupled to the first interconnect and at least one data manager is coupled to the second interconnect, wherein the first interconnect is coupled to the second interconnect thereby coupling the processing element coupled to the first interconnect with the data manager coupled to the second interconnect.
- 39. The method of claim 26, comprising processing a plurality of ordered tasks1 to N, each taskn having a plurality of ordered subtasks1 to M, each subtaskm to be processed by at least one processing elementm of a plurality of processing elements1 to M, wherein while a processing elementmprocesses a subtaskm of a taskn, a processing elementm+1 processes a subtaskm+1 of a taskn+1, wherein the taskn is the task immediately preceding the taskn+1, and wherein the subtaskm is the subtask immediately preceding the subtaskm+1.
- 40. The method of claim 26, further comprising processing one of the plurality of subtasks for a plurality of tasks in parallel using a second subset of the plurality of processing elements, each of the processing elements of the second subset adapted to process the same subtask for a plurality of tasks.
- 41. The method of claim 26 comprising decoding commands with at least one of the processing elements.
- 42. The method of claim 26 comprising controlling at least one data structure comprising cache state.
- 43. The method of claim 26 comprising mapping addresses to logical block addresses with at least one of the processing elements.
- 44. The method of claim 26 wherein at least one of the processing elements interacts with a host.
- 45. The method of claim 26 comprising managing resource allocation of a cache with at least one of the processing elements.
- 46. The method of claim 26 facilitating communications between at least two of the processing elements with a message queue, wherein one processing element sends a message to the message queue for the other processing element to retrieve.
- 47. The method of claim 26 comprising storing at least one data structure in an internal memory.
- 48. The method of claim 26 comprising storing at least one data structure in an external memory.
- 49. The method of claim 26 wherein the tasks are selected from the group consisting of: RAID requests, queue management commands, cache data request, read data requests, write data requests, block level read requests, block level write requests, file level data read requests, file level data write requests, directory structure commands, and database manipulation commands.
RELATED APPLICATIONS
[0001] This application is based on provisional patent application serial No. 60/252,839 filed Nov. 17, 2000.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60252839 |
Nov 2000 |
US |