EVENT-BASED BRANCHING FOR SERIAL PROTOCOL PROCESSOR-BASED DEVICES
20190258486 ยท 2019-08-22
Inventors
- Oren Nishry (Bet Lham HaGlilit, IL)
- Tomer Rafael Ben-Chen (Amikam, IL)
- Sharon Graif (Zichron Yaakov, IL)
- Felix Kolmakov (Netanya, IL)
Cpc classification
International classification
Abstract
Event-based branching for serial protocol processor-based devices is disclosed. In this regard, a serial protocol processor-based device provides an event mesh control circuit comprising a mapping table circuit and a register control array corresponding to rows of the mapping table circuit. Each row of the mapping table circuit of the event mesh control circuit represents an implementation-specific grouping of events, with each column of the row representing a last known status or outcome for a corresponding event. A microcontroller of the serial protocol processor-based device is configured to use the register control array to select which event (i.e., which column of a corresponding row) will be used to make a branching determination. A branch custom instruction provided by the microcontroller indicates a selected row, a branch target address, and a comparison value to compare against the event indicated by the register control array entry corresponding to the selected row.
Claims
1. A serial protocol processor-based device supporting event-based branching, comprising: a microcontroller configured to execute a plurality of program instructions; and an event mesh control circuit communicatively coupled to the microcontroller, the event mesh control circuit comprising: a mapping table circuit comprising a plurality of rows, each row of the plurality of rows comprising a plurality of columns storing a corresponding plurality of event indicators; and a register control array comprising a plurality of entries corresponding to the plurality of rows of the mapping table circuit, each entry of the plurality of entries storing a selected column value indicating a selected column of the plurality of columns of a corresponding row of the plurality of rows; and the event mesh control circuit configured to: receive, from the microcontroller, a selected row indicator and a comparison value; identify a selected column based on a selected column value of an entry of the plurality of entries of the register control array indicated by the selected row indicator; retrieve, from the mapping table circuit, an event indicator stored in the selected column of a row of the plurality of rows indicated by the selected row indicator; and generate a branch indicator based on a comparison of the comparison value and the event indicator.
2. The serial protocol processor-based device of claim 1, wherein the microcontroller is further configured to: provide the selected row indicator and the comparison value to the event mesh control circuit; receive, from the event mesh control circuit, the branch indicator; determine whether the branch indicator indicates that a branch should be performed; and responsive to the branch indicator indicating that the branch should be performed, transfer program control to a program instruction of the plurality of program instructions at a branch target address.
3. The serial protocol processor-based device of claim 1, wherein the microcontroller is further configured to, responsive to the branch indicator indicating that a branch should not be performed, execute a next instruction of the plurality of program instructions in program order.
4. The serial protocol processor-based device of claim 2, wherein: the microcontroller is further configured to execute a custom branch instruction comprising a branch opcode, the selected row indicator, the comparison value, and the branch target address; and the microcontroller is configured to provide the selected row indicator and the comparison value from the executed custom branch instruction to the event mesh control circuit.
5. The serial protocol processor-based device of claim 1, wherein the event mesh control circuit further comprises: a mask array comprising a plurality of masks corresponding to the plurality of rows of the mapping table circuit; and an aggregation circuit configured to: logically aggregate two or more of the plurality of event indicators into a composite event indicator, based on the register control array and the mask array; and store the composite event indicator in a column of the plurality of columns of a row of the plurality of rows of the mapping table circuit.
6. The serial protocol processor-based device of claim 5, wherein the aggregation circuit is configured to logically aggregate the two or more of the plurality of event indicators into the composite event indicator by comparing the two or more of the plurality of event indicators using one or more logical operators.
7. The serial protocol processor-based device of claim 5, wherein the microcontroller is further configured to provide a mask value to indicate the two or more of the plurality of event indicators to be logically aggregated.
8. The serial protocol processor-based device of claim 1 integrated into an integrated circuit (IC).
9. The serial protocol processor-based device of claim 1 integrated into a device selected from the group consisting of: a set top box; an entertainment unit; a navigation device; a communications device; a fixed location data unit; a mobile location data unit; a global positioning system (GPS) device; a mobile phone; a cellular phone; a smart phone; a session initiation protocol (SIP) phone; a tablet; a phablet; a server; a computer; a portable computer; a mobile computing device; a wearable computing device; a desktop computer; a personal digital assistant (PDA); a monitor; a computer monitor; a television; a tuner; a radio; a satellite radio; a music player; a digital music player; a portable music player; a digital video player; a video player; a digital video disc (DVD) player; a portable digital video player; an automobile; a vehicle component; avionics systems; a drone; and a multicopter.
10. A method for supporting event-based branching, comprising: receiving, by an event mesh control circuit of a serial protocol processor-based device from a microcontroller of the serial protocol processor-based device, a selected row indicator and a comparison value, wherein the event mesh control circuit comprises: a mapping table circuit comprising a plurality of rows, each row of the plurality of rows comprising a plurality of columns storing a corresponding plurality of event indicators; and a register control array comprising a plurality of entries corresponding to the plurality of rows of the mapping table circuit, each entry of the plurality of entries storing a selected column value indicating a selected column of the plurality of columns of a corresponding row of the plurality of rows; identifying a selected column based on a selected column value of an entry of the plurality of entries of the register control array indicated by the selected row indicator; retrieving, from the mapping table circuit, an event indicator stored in the selected column of a row of the plurality of rows of the mapping table circuit indicated by the selected row indicator; and generating a branch indicator based on a comparison of the comparison value and the event indicator.
11. The method of claim 10, further comprising: providing, by the microcontroller, the selected row indicator and the comparison value to the event mesh control circuit; receiving, by the microcontroller, the branch indicator from the event mesh control circuit; determining, by the microcontroller, whether the branch indicator indicates that a branch should be performed; and responsive to the branch indicator indicating that the branch should be performed, transferring program control to a program instruction of a plurality of program instructions at a branch target address.
12. The method of claim 11, further comprising, responsive to the branch indicator indicating that the branch should not be performed, executing a next instruction of the plurality of program instructions in program order.
13. The method of claim 11, further comprising: executing, by the microcontroller, a custom branch instruction comprising a branch opcode, the selected row indicator, the comparison value, and the branch target address; wherein providing the selected row indicator and the comparison value to the event mesh control circuit comprises providing the selected row indicator and the comparison value from the executed custom branch instruction to the event mesh control circuit.
14. The method of claim 10, further comprising: logically aggregating, by an aggregation circuit of the event mesh control circuit, two or more of the plurality of event indicators into a composite event indicator, based on the register control array and a mask array comprising a plurality of masks corresponding to the plurality of rows of the mapping table circuit; and storing the composite event indicator in a column of the plurality of columns of a row of the plurality of rows of the mapping table circuit.
15. The method of claim 14, wherein logically aggregating the two or more of the plurality of event indicators into the composite event indicator comprises comparing the two or more of the plurality of event indicators using one or more logical operators.
16. The method of claim 14, further comprising providing, by the microcontroller, a mask value to indicate the two or more of the plurality of event indicators to be logically aggregated.
17. A serial protocol processor-based device for supporting event-based branching, comprising: a means for receiving a selected row indicator and a comparison value; a means for identifying a selected column of a mapping table circuit based on a selected column value of an entry of a plurality of entries of a register control array indicated by the selected row indicator, wherein: the mapping table circuit comprises a plurality of rows, each row of the plurality of rows comprising a plurality of columns storing a corresponding plurality of event indicators; and the register control array comprises a plurality of entries corresponding to the plurality of rows of the mapping table circuit, each entry of the plurality of entries storing a selected column value indicating a selected column of the plurality of columns of a corresponding row of the plurality of rows; a means for retrieving, from the mapping table circuit, an event indicator stored in the selected column of a row of the plurality of rows of the mapping table circuit indicated by the selected row indicator; and a means for generating a branch indicator based on a comparison of the comparison value and the event indicator.
18. The serial protocol processor-based device of claim 17, further comprising: a means for determining whether the branch indicator indicates that a branch should be performed; a means for transferring program control to a program instruction at a branch target address, responsive to the branch indicator indicating that the branch should be performed; and a means for executing a next instruction in program order, responsive to the branch indicator indicating that the branch should not be performed.
19. The serial protocol processor-based device of claim 18, further comprising a means for executing a custom branch instruction comprising a branch opcode, the selected row indicator, the comparison value, and the branch target address.
20. The serial protocol processor-based device of claim 17, further comprising: a means for logically aggregating two or more of the plurality of event indicators into a composite event indicator, based on the register control array and a mask array comprising a plurality of masks corresponding to the plurality of rows of the mapping table circuit; and a means for storing the composite event indicator in a column of the plurality of columns of a row of the plurality of rows of the mapping table circuit.
21. The serial protocol processor-based device of claim 20, wherein the means for logically aggregating the two or more of the plurality of event indicators into the composite event indicator comprises a means for comparing the two or more of the plurality of event indicators using one or more logical operators.
22. The serial protocol processor-based device of claim 20, further comprising a means for providing a mask value to indicate the two or more of the plurality of event indicators to be logically aggregated.
Description
BRIEF DESCRIPTION OF THE FIGURES
[0013]
[0014]
[0015]
[0016]
[0017]
DETAILED DESCRIPTION
[0018] With reference now to the drawing figures, several exemplary aspects of the present disclosure are described. The word exemplary is used herein to mean serving as an example, instance, or illustration. Any aspect described herein as exemplary is not necessarily to be construed as preferred or advantageous over other aspects.
[0019] Aspects disclosed in the detailed description include event-based branching in serial protocol processor-based devices. In this regard,
[0020] It is to be understood that some aspects of the serial protocol processor-based device 100 may include more or fewer data transmission lines than the TX line 120 and the RX line 122 illustrated in
[0021] In the example of
[0022] In some aspects, it may be desirable for the microcontroller 104, in the course of executing the program instructions 105(0)-105(P), to implement branching (i.e., a conditional transfer of program control) based on one or more of the events 124(0)-124(N). However, as noted above, conventional mechanisms for implementing branching may be inefficient or impracticable in the context of serial protocol processing, due to the number of instructions and processor cycles that may be required to evaluate the outcome of multiple events 124(0)-124(N) to determine if a branch should be taken. Accordingly, it is desirable to provide an improved mechanism for implementing branching in serial protocol processor-based devices such as the serial protocol processor-based device 100 of
[0023] In this regard, the serial protocol processor-based device 100 in this example includes the event mesh control circuit 102 for implementing event-based branching. As discussed in more detail below with respect to
[0024] The microcontroller 104 is configured to perform event-based branching using the event mesh control circuit 102 by providing (e.g., as part of a custom branch instruction, as a non-limiting example) a selected row indicator 126 and a comparison value 128 to the event mesh control circuit 102. The selected row indicator 126 indicates which row of the mapping table circuit of the event mesh control circuit 102 contains the column corresponding to the event 124(0)-124(N) that will be used to determine whether to branch. The event mesh control circuit 102 compares the event indicator stored in the column to the comparison value 128, and returns a branch indicator 130 to the microcontroller 104 to indicate whether the comparison of the comparison value 128 and the event indicator results in a logical value of true. Based on the value of the branch indicator 130, the microcontroller 104 then either performs a branch, or continues executing the program instruction 105(0)-105(P) in conventional program order. As discussed in greater detail with respect to
[0025] To illustrate the constituent elements of and exemplary operations performed by the event mesh control circuit 102 in greater detail,
[0026] To enable multiple events to be evaluated when performing event-based branching, the event mesh control circuit 102 further provides a mask array 210 and an aggregation circuit 212. The mask array 210 comprises a plurality of masks 214(0)-214(X) that correspond to the plurality of rows 204(0)-204(X), and that may be used to select two or more of the plurality of rows 204(0)-204(X) containing events to be aggregated into a composite event. As a non-limiting example, each of the masks 214(0)-214(X) may either be set to zero (0) to indicate that the event contained in the corresponding row 204(0)-204(X) will not be aggregated into the composite event, or may be set to one (1) to indicate that the event contained in the corresponding row 204(0)-204(X) is to be aggregated into the composite event. In some aspects, the masks 214(0)-214(X) may be configured by the event mesh control circuit 102 and/or the microcontroller 104 using the mask value 132. For example, upon receiving the mask value 132, the event mesh control circuit 102 may set each of the masks 214(0)-214(X) to a value of a corresponding bit of the mask value 132.
[0027] The event indicators from the rows 204(0)-204(X) selected by the mask array 210 are then aggregated into a single composite event indicator by the aggregation circuit 212. In some aspects, the aggregation circuit 212 may be configured to generate the composite event indicator by comparing the event indicators from each column 206(0,0)-206(X,Y) indicated by the selected column values 209(0)-209(X) of the rows 204(0)-204(X) selected by the mask array 210 using any conventional logical or comparison operators. The result is then stored as a composite event indicator in a column of the columns 206(0,0)-206(X,Y) of the mapping table circuit 200 by the aggregation circuit 212. In some aspects, a composite event indicator cannot be used as an input into another composite event. Thus, in such aspects, any row 204(0)-204(X) containing a composite event indicator must be masked off by the mask array 210 to prevent its inclusion when generating a composite event.
[0028] To illustrate aggregation of a composite event in the example of
[0029]
[0030] Thus, in exemplary operation, the custom branch instruction 222 may provide a selected row indicator 226 that selects the entry 208(X) of the register control array 202, as indicated by arrow 232. Assuming that the entry 208(X) indicates that the event indicator stored in the column 206(X,Y) (i.e., the composite event discussed in greater detail above) is to be used for event-based branching, the event mesh control circuit 102 performs a comparison of the comparison value 228 supplied by the custom branch instruction 222 with the event indicator stored in the column 206(X,Y). If the comparison results in a logical value of true, then the event mesh control circuit 102 returns the branch indicator 130 of
[0031]
[0032] (TX FIFO EMPTY!=0) & (RX FIFO FULL!=1) & (GPC #0!=0).
[0033] It is to be understood that some aspects may provide that the event indicators 308(0,0), 308(1,0), and 308(2,0) are evaluated in a different manner to determine the value to be stored by the event indicator 308(3,1) as a composite event.
[0034] To illustrate exemplary operations for supporting event-based branching by the serial protocol processor-based device 100 of
[0035] In some aspects, the microcontroller 104 may also provide the mask value 132 to the event mesh control circuit 102 to indicate the two or more of a plurality of event indicators, such as the event indicators 308(0,0), 308(1,0), 308(2,0), to be logically aggregated (block 404). Accordingly, the microcontroller 104 may be referred to herein as a means for providing a mask value to indicate the two or more of the plurality of event indicators to be logically aggregated. The aggregation circuit 212 may then logically aggregate the two or more of the plurality of event indicators 308(0,0), 308(1,0), 308(2,0) into the composite event indicator 308(3,1), based on the register control array 202 and the mask array 210 comprising the plurality of masks 214(0)-214(X) corresponding to the plurality of rows 204(0)-204(X) of the mapping table circuit 200 (block 406). The aggregation circuit 212 thus may be referred to herein as a means for logically aggregating two or more of the plurality of event indicators into a composite event indicator, based on the register control array and a mask array comprising a plurality of masks corresponding to the plurality of rows of the mapping table circuit. In some aspects, operations of block 406 for logically aggregating the two or more of the plurality of event indicators 308(0,0), 308(1,0), 308(2,0) into the composite event indicator 308(3,1) may comprise comparing the two or more of the plurality of event indicators 308(0,0)-308(3,1) using one or more logical operators (block 408). In this regard, the aggregation circuit 212 may be referred to herein as a means for comparing the two or more of the plurality of event indicators using one or more logical operators. The aggregation circuit 212 in such aspects then stores the composite event indicator 308(3,1) in a column of the plurality of columns 206(0,0)-206(X,Y) of a row of the plurality of rows 204(0)-204(X) of the mapping table circuit 200 (block 410). Accordingly, the aggregation circuit 212 may be referred to herein as a means for storing the composite event indicator in a column of the plurality of columns of a row of the plurality of rows of the mapping table circuit.
[0036] The event mesh control circuit 102 next receives, from the microcontroller 104 of the serial protocol processor-based device 100, the selected row indicator 226 and the comparison value 228 (block 412). In this regard, the event mesh control circuit 102 may be referred to herein as a means for receiving a selected row indicator and a comparison value. Processing then resumes at block 414 of
[0037] Referring now to
[0038] In some aspects, the microcontroller 104 next receives the branch indicator 130 from the event mesh control circuit 102 (block 422). The microcontroller 104 then determines whether the branch indicator 130 indicates that a branch should be performed (block 424). In this regard, the microcontroller 104 may be referred to herein as a means for determining whether the branch indicator indicates that a branch should be performed. If the microcontroller 104 determines at decision block 424 that the branch indicator 130 indicates that a branch should be performed, then the microcontroller 104 transfers program control to a program instruction of the plurality of program instructions 105(0)-105(P) at the branch target address 230 (block 426). Accordingly, the microcontroller 104 may be referred to herein as a means for transferring program control to a program instruction at the branch target address, responsive to the branch indicator indicating that the branch should be performed. However, if the microcontroller 104 determines at decision block 424 that the branch indicator 130 indicates that a branch should not be performed, then the microcontroller 104 executes a next instruction of the plurality of program instructions 105(0)-105(P) in program order (block 428). The microcontroller 104 thus may be referred to herein as a means for executing a next instruction in program order, responsive to the branch indicator indicating that the branch should not be performed.
[0039] Event-based branching in serial protocol processor-based devices according to aspects disclosed herein may be provided in or integrated into any processor-based device. Examples, without limitation, include a set top box, an entertainment unit, a navigation device, a communications device, a fixed location data unit, a mobile location data unit, a global positioning system (GPS) device, a mobile phone, a cellular phone, a smart phone, a session initiation protocol (SIP) phone, a tablet, a phablet, a server, a computer, a portable computer, a mobile computing device, a wearable computing device, a desktop computer, a personal digital assistant (PDA), a monitor, a computer monitor, a television, a tuner, a radio, a satellite radio, a music player, a digital music player, a portable music player, a digital video player, a video player, a digital video disc (DVD) player, a portable digital video player, an automobile, a vehicle component, avionics systems, a drone, and a multicopter.
[0040] In this regard,
[0041] Other master and slave devices can be connected to the system bus 508. As illustrated in
[0042] The CPU(s) 502 may also be configured to access the display controller(s) 520 over the system bus 508 to control information sent to one or more displays 526. The display controller(s) 520 sends information to the display(s) 526 to be displayed via one or more video processors 528, which process the information to be displayed into a format suitable for the display(s) 526. The display(s) 526 can include any type of display, including, but not limited to, a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display, etc.
[0043] Those of skill in the art will further appreciate that the various illustrative logical blocks, modules, circuits, and algorithms described in connection with the aspects disclosed herein may be implemented as electronic hardware, instructions stored in memory or in another computer readable medium and executed by a processor or other processing device, or combinations of both. The master devices, and slave devices described herein may be employed in any circuit, hardware component, integrated circuit (IC), or IC chip, as examples. Memory disclosed herein may be any type and size of memory and may be configured to store any type of information desired. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. How such functionality is implemented depends upon the particular application, design choices, and/or design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
[0044] The various illustrative logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a processor, a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microprocessor, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).
[0045] The aspects disclosed herein may be embodied in hardware and in instructions that are stored in hardware, and may reside, for example, in Random Access Memory (RAM), flash memory, Read Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer readable medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a remote station. In the alternative, the processor and the storage medium may reside as discrete components in a remote station, base station, or server.
[0046] It is also noted that the operational steps described in any of the exemplary aspects herein are described to provide examples and discussion. The operations described may be performed in numerous different sequences other than the illustrated sequences. Furthermore, operations described in a single operational step may actually be performed in a number of different steps. Additionally, one or more operational steps discussed in the exemplary aspects may be combined. It is to be understood that the operational steps illustrated in the flowchart diagrams may be subject to numerous different modifications as will be readily apparent to one of skill in the art. Those of skill in the art will also understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
[0047] The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the spirit or scope of the disclosure. Thus, the disclosure is not intended to be limited to the examples and designs described herein, but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.