1460731779-52f1ffc5-17cd-4a7e-88bd-9c7e7d36e2ec

1. A method for adaptive runtime reconfiguration of a co-processor instruction set, in a computer system with at least a main processor communicatively connected to at least one reconfigurable co-processor, wherein the co-processor has been configured to implement an instruction set comprising one or more co-processor instructions, the method comprising the steps of:
issuing a co-processor instruction to the co-processor;
determining whether the instruction is mapped to the co-processor;
for an instruction not mapped to the co-processor instruction set, evaluating the need for reconfiguring the co-processor based on performance;
reconfiguring the instruction set of the co-processor when the evaluation indicates said reconfiguration is needed; and
executing the instruction.
2. The method of claim 1, wherein reconfiguring the co-processor instruction set comprises the steps of:
raising a stall signal to delay the main processor;
determining whether there is enough space in the co-processor for the unmapped instruction;
adding the unmapped instruction to the co-processor instruction set, if there is enough space for said instruction; and
clearing the stall signal.
3. The method of claim 2, further comprising the step of, for the case where there is insufficient space for the unmapped instruction, invalidating one or more instructions in the co-processor instruction set.
4. The method of claim 1, further comprising the step of measuring the occurrence of the co-processor instruction in either hardware or software, and determining whether to trigger reconfiguration of the co-processor instruction set by comparing an occurrence of an unmapped instruction to that of one or more mapped instructions.
5. The method of claim 4, wherein measuring the occurrence of the co-processor instruction comprises the steps of:
providing the co-processor instruction with a performance counter;
initializing said performance counter when said co-processor instruction is issued to the co-processor;
incrementing said performance counter when a co-processor miss occurs;
decrementing said performance counter when a different co-processor instruction is issued to the co-processor instruction; and
zeroing said performance counter when said instruction is removed from the co-processor.
6. The method of claim 5, wherein the determination to trigger reconfiguration is based on whether the performance counter of the unmapped instruction exceeds that of a mapped instruction of equal or greater size, or whether the performance counter of the unmapped instruction exceeds a sum of performance counters of those instructions that will be removed to free enough co-processor space to map the unmapped instruction.
7. The method of claim 1, further comprising the step of, for an instruction not implemented in the co-processor instruction set, bouncing the instruction back to the main processor, and emulating the bounced instruction in software.
8. The method of claim 1, further comprising the steps of locking one or more instructions of the co-processor instruction set, whereby said locking can be performed at either design time or at run-time, wherein said locked instructions are protected during reconfiguration of the co-processor, changing the locking state of a mapped, co-processor instruction, and comparing an occurrence of the mapped, unlocked co-processor instructions with un-mapped co-processor instructions in order to determine whether to trigger co-processor reconfiguration.
9. The method of claim 1, further comprising the steps of partitioning the reconfigurable co-processor into tiles, either logically or physically, wherein each co-processor instruction can occupy one or more tiles, and providing a co-processor instruction with one or more implementation options to allow mapping of said instruction onto different tiles of the co-processor.
10. A method for adaptive runtime reconfiguration of a co-processor instruction set, the method comprising the steps of:
providing a main processor and at least one reconfigurable co-processor that are communicatively connected to each other, configuring the co-processor to implement an instruction set comprising one or more co-processor instructions;
partitioning the reconfigurable co-processor into tiles, either logically or physically, wherein each co-processor instruction can occupy one or more tiles, and providing each co-processor instruction with one or more implementation options to allow mapping of said instruction onto different tiles of the co-processor. fetching, by the main processor, an instruction for execution;
at least partially decoding the instruction and determining whether the instruction is a valid co-processor instruction;
for a valid co-processor instruction, issuing the co-processor instruction to the co-processor;
determining whether the instruction is mapped to the co-processor;
for an instruction not mapped to the co-processor instruction set, raising a stall signal to delay the main processor;
determining whether there is enough space in the co-processor for the unmapped instruction;
adding the unmapped instruction to the co-processor instruction set, if there is sufficient space, otherwise invalidating one or more instructions in the co-processor instruction set;
clearing the stall signal; and
executing the instruction.
11. The method of claim 10, further comprising the step of measuring the occurrence of each co-processor instruction, said measuring comprising the steps of:
providing each co-processor instruction with a performance counter;
initializing a performance counter to an initial value when the corresponding co-processor instruction is issued to the co-processor;
incrementing the value of said performance counter by an increment value when said co-processor instruction is targeted to the co-processor but is not mapped to the co-processor;
decrementing the value of said performance counter by a decrement value when an issued co-processor instruction is targeting a different co-processor instruction, wherein said performance counter has a minimum value of zero; and
zeroing said performance counter when said instruction is removed from the co-processor,
wherein the initial value, increment value, and decrement value can be set andor modified under software control individually for each said performance counter corresponding to a co-processor instruction; and
wherein, when there is insufficient space in the co-processor for the unmapped instruction, determining whether to trigger reconfiguration of the co-processor instruction set by comparing the value of the performance counter of the unmapped instruction to that of one or more mapped instructions.
12. The method of claim 11, further comprising the steps of,
bouncing the instruction back to the main processor and emulating the bounced instruction in software, for an instruction not implemented in the co-processor instruction set;
locking one or more instructions of the co-processor instruction set, whereby said locking can be performed at either design time or at run-time, wherein said locked instructions are protected during reconfiguration of the co-processor; and
changing the locking state of a mapped, co-processor instruction, and comparing the performance counters of the mapped, unlocked co-processor instructions with those of un-mapped co-processor instructions in order to determine whether to trigger co-processor reconfiguration;
13. A method for adaptive runtime reconfiguration of a co-processor instruction set, in a computer system with at least a main processor communicatively connected to at least one reconfigurable co-processor, the method comprising the steps of:
configuring the co-processor to implement an instruction set comprising one or more co-processor instructions,
issuing a co-processor instruction to the co-processor;
determining whether the instruction is implemented in the co-processor; and for an instruction not implemented in the co-processor instruction set,
raising a stall signal to delay the main processor;
determining whether there is enough space in the co-processor for the non-implemented instruction;
reconfiguring the instruction set of the co-processor by adding the non-implemented instruction to the co-processor instruction set, if there is enough space for said instruction;
clearing the stall signal; and
executing the instruction.
14. The method of claim 13, further comprising the step of, for the case where there is insufficient space for the non-implemented instruction, invalidating one or more instructions in the co-processor instruction set.
15. The method of claim 13, further comprising the step of, for an instruction not implemented in the co-processor instruction set, bouncing the instruction back to the main processor, and emulating the bounced instruction in software.
16. The method of claim 13, further comprising the step of measuring the occurrence of each co-processor instruction, wherein said measuring comprises the steps of:
providing a co-processor instruction with a performance counter;
initializing said performance counter when said co-processor instruction is mapped to the co-processor, or issued to the co-processor when mapped to the co-processor;
incrementing said performance counter when said co-processor instruction is issued to the co-processor without being mapped to the co-processor;
decrementing said performance counter when a different co-processor instruction is issued to the co-processor, wherein said performance counter has a minimum value of zero; and
zeroing said performance counter when said instruction is removed from the co-processor.
17. The method of claim 16, further comprising the step of comparing an occurrence of an unmapped instruction to that of one or more mapped instructions and determining whether to trigger reconfiguration of the co-processor instruction set, wherein said determination is based on whether the performance counter of the unmapped instruction exceeds that of a mapped instruction of equal or greater size, or whether the performance counter of the unmapped instruction exceeds a sum of performance counters of those instructions that will be removed to free enough co-processor space to map the unmapped instruction.
18. The method of claim 16, further comprising the step of locking one or more instructions of the co-processor instruction set, whereby said locking can be performed at either design time or at run-time, wherein said locked instructions are protected during reconfiguration of the co-processor.
19. The method of claim 18, further comprising the steps of changing the locking state of a mapped, co-processor instruction, and comparing the performance counters of mapped, unlocked co-processor instructions with un-mapped co-processor instructions in order to determine whether to trigger co-processor reconfiguration.
20. The method of claim 1, further comprising the step of partitioning the reconfigurable co-processor into tiles, either logically or physically, wherein each co-processor instruction can occupy one or more tiles, and wherein a co-processor instruction is provided with one or more implementation options to allow mapping of said instruction onto different tiles of the co-processor.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A method comprising:
generating, by a computer, a model of a website using user interaction primitives to represent hierarchical and hypertextual structures of the website;
generating, by the computer, a linear aural flow of content of the website based upon the model and a set of user constraints;
audibly presenting, by the computer, the linear aural flow of the content such that the linear aural flow of content is controlled through the use of user supplied primitives,
wherein, the linear aural flow can be turned into a dynamic aural flow based upon the user supplied primitives.
2. The method of claim 1 wherein user supplied primitives comprises a spoken command.
3. The method of claim 1 wherein the linear aural flow is further based on a ranking of current topics based upon each topic’s page hits the website has received.
4. The method of claim 2 wherein interrupted audibly presented content is bookmarked such that the bookmark ages over a user stated period and is eliminated upon an ending of a user stated period.
5. The method of claim 1 wherein the set of user constraints is derived from a user’s past audio browsing history in conjunction with the device used to perform the past audio browsing.
6. The method of claim 1 wherein the user supplied primitives are interpreted in context of a user’s session.
7. The method of claim 1 wherein the linear aural flow sequences individual articles into dialogues for audio presentation including a dialog for an article’s headline, a dialog for the article’s summary, and a dialog for the article’s content.
8. The method of claim 2 wherein a spoken command is a name of a category of content available on the website.
9. The method of claim 1 wherein the set of user constraints is derived from popularity measures of articles present on the website.
10. A computer storage medium encoded with a computer program, the program comprising instructions that when executed by a user device cause the user device to perform operations comprising:
receiving a model of a website, the model representing hierarchical and hypertextual structures of the website, wherein the model uses user interaction primitives to represent the hierarchical and the hypertextual structures of the website;
receiving a set of user derived constraints;
generating a linear aural flow of content of the website based upon the model and a set of user derived constraints;
audibly presenting the linear aural flow of the content;
determining whether a user command indicates a desire for a dynamic aural flow;
upon determining that a user command indicates a desire for a dynamic aural flow, audibly presenting a dynamic aural flow.
11. The method of claim 10, wherein interrupted audibly presented content is bookmarked such that the bookmark ages over a user stated period and is eliminated upon an ending of a user stated period.
12. The method of claim 10 wherein the set of user constraints is derived in part from a user’s past audio browsing history in conjunction with the device used to perform the past audio browsing.
13. A system comprising:
a user device;
one or more computers operable to interact with the device;
instructions stored on a machine readable storage device for execution by the one or more computers, wherein upon execution the instructions cause the one or more computers to perform the operations of:
generate a model of a website, the model representing hierarchical and hypertextual structures of the website through usage of user interaction primitives;
generate a linear aural flow of content of the website based upon the model and a set of user constraints;
provide instructions to the user device causing the user device to audibly present the linear aural flow of the content;
upon receiving input from a user, provide instructions to the user device causing the user device to audibly present a dynamic aural flow of the content.
14. The system of claim 13, wherein the one or more computers comprise the user device.
15. The system of claim 13, wherein the linear aural flow is further based on a ranking of current topics based upon each topic’s page hits the website has received.
16. The system of claim 13, wherein the one or more computers comprise a server operable to interact with the device through a data communication network, and the user device is operable to interact with the server as a client.
17. The system of claim 13, wherein the one or more computers consist of one computer, the user device is a user interface device, and the one computer comprises the user interface device.