The invention disclosed herein generally relates to an implementation of a multiply-and-accumulate (MAc) operation in a microprocessor that is subject to size and/or power constraints. In particular, the invention provides a MAc implementation suitable for an implantable medical device (IMD), such as a microcontroller associated with a pacemaker.
IMDs for diagnostic or therapeutic purposes do not fully benefit from the accumulated advances in signal processing, data analysis and similar arts. This is because IMDs, just like embedded microprocessors in certain other applications, are subject to extreme constraints on size and/or power consumption. These quantities are correlated and cannot be reduced at the same time, considering that a faster circuit, with a higher degree of parallelization, will have a larger circuit footprint and higher power consumption. Thus, realistic IMDs sometimes fail to offer their programmers certain computational tools that would enable them to achieve clinical goals, to add new functionalities or to work around hardware limitations.
One example of such missing computational tools is the MAc operation, which maps given input vectors ƒ=(ƒ0, ƒ1, . . . ƒn-1), g=(g0, g1, . . . gn-1) to a scalar output
This operation, which is also known as product-sum, multiply-add, scalar product, dot product and inner product, occurs in finite-impulse response filters (FIR) and more complex operations such as convolution. More precisely, if the above vectors are regarded as discrete functions ƒ(k)=ƒk, g(k)=gk, 0≦k≦n−1, then a (discrete) convolution may be defined as the mapping from these functions to the function
where gper(k)=g(k mod n).
The design of multifunctional components is one way to increase the efficiency of microprocessors. US 2008/0229075 A1 discloses a MAc unit as part of a general-purpose central processing unit (CPU). In the interest of cost reduction, the MAc unit utilizes both dedicated hardware and existing CPU hardware to carry out a MAc operation. In particular, two CPU registers are reused and extended by further registers to accommodate wide operands. The MAc uses a sequential multiplier already provided within the CPU and performs the accumulation instruction by means of a dedicated adder and adder registers. The existing CPU bus has been extended in order to serve also the added, dedicated hardware. This known MAc unit offers the programmer a MAc operation similar to that available in dedicated digital signal processors (DSPs) without access to the full hardware set in such processors. A dedicated DSP will obviously perform better than this MAc unit, e.g., by requiring fewer clock cycles to accomplish one MAc operation. Alternative MAc units, that either perform better or are more economical, would therefore be an interesting prospect.
It is in view of the above concerns that the present invention has been made. One object of the invention is to provide a MAc unit comprising not only dedicated hardware, as an alternative to the prior art. Another object is to provide microprocessor extensions which form a MAc unit together with hardware already available in a microprocessor, particularly with hardware in a microcontroller in an embedded device, such as an IMD. A further object is to provide a way of operating a microprocessor that lacks a dedicated MAc functionality so that it performs or facilitates a MAc operation at an energy cost acceptable in practical IMD conditions.
Accordingly, the invention provides devices and methods with the features recited in the independent claims. Particular embodiments of the invention are defined by the dependent claims.
Typical IMD designs comprise a large number of interacting components, and both their performance and reliability critically depend on how efficiently these interactions run. A central component like the microprocessor may have been selected at an early stage, typically several years before the release of the product, to allow sufficient time for successive prototypes to be tested and tuned. The designer may have attempted to select a processor with the smallest possible circuit footprint (size), yet with sufficient computing ability (e.g., its maximum number of instructions per second or number of floating-point operations per second) that the processor utilization (e.g., its duty cycle) would be well below 100 percent in its expected normal operating regime. Neither was it desirable to include significant excess capacity, nor was it apparent several years in advance where such excess capacity would have been wisely spent among the various functionalities of the microprocessor. As a consequence of this workflow, new data-processing features that go beyond the original plan—or are introduced in subsequent product releases—can be enabled only to the extent available computational resources in the IMD permit.
The inventor has realized that reusing both the multiplier and accumulator functionalities in an existing microprocessor in a straightforward manner, such as by “for” loops in a high-level programming language, would lead to an overly slow implementation, extending the duty cycle and shortening battery life prohibitively already at a modest data sampling frequency. In terms of circuit footprint, it is not satisfactory either to use dedicated components for both the multiplication and accumulation tasks. The invention balances these considerations by providing, in a first aspect, a MAc unit having a multiplier implemented as a dedicated component with combinatorial logic, while utilizing the accumulation instruction in a sequential arithmetic-logic unit (ALU). The ALU is a shared resource in the sense that it is available for other duties when no MAc operation is being carried out. As the independent claims define in greater detail, the MAc unit includes extensions implemented in dedicated hardware for storage, communication and/or control purposes.
This configuration is advantageous since, firstly, accumulation can be efficiently implemented in sequential logic, wherein one memory can fulfil a double purpose, as a combined operand and result register; the ALU stores the result of an accumulation as one of the two terms for the next accumulation. Secondly, multiplication is a binary operation that lends itself well to a hardware implementation by combinatorial logic circuitry, which makes the product available a very short period after input of the operands and independently of any clock signal. The delay between input and reliable output is sometimes referred to as the FIFO depth (or instruction queue depth) of the combinatorial component. Further, the buffers and/or buses operate independently of the clock signal of the ALU (that is, without a regular or predictable time relationship to this signal, or in a non-synchronized manner, or without time coincidence, or without justification or alignment; alternatively, the buffers and/or buses are not driven by the ALU clock signal; alternatively, the buffers and/or buses initiate their operations at points in time which are variable with respect to the clock signal and which are located arbitrarily with respect to this signal, such as in suitable time intervals of non-zero length). This makes it possible to feed the ALU with new data for the next accumulation cycle in a sequence as soon as it has accomplished the previous one, thereby allowing that the ALU to be run continuously. As already noted, the design of a typical IMD may include a purposeful minimization of the computing ability of the ALU subject to other requirements, and the invention proposes a configuration allowing the limiting resource of the computing system to be run at maximum capacity for the duration of the MAc operation. In contrast, if a clock-synchronous (sequential) bus were used for the data fetching, several clock cycles would be occupied during which the ALU would not complete MAc-related tasks. Yet another advantage lies in the fact that simple, low-width communication buses may be used without detriment to the overall performance; indeed, by virtue of the ALU's independence from the buses (and obviously from the non-sequential combinatorial multiplier as well), the buses may complete the data fetch of an operand in two or more batches, which may still be accommodated within an accumulation instruction in the ALU. For these reasons, the solution proposed by the invention is an advantageous alternative to the device described in the prior art cited previously, and so the invention achieves at least one of its objects.
The microprocessor extensions alone and the MAc processor that they potentially form with an ALU independently fall within the scope of the invention. The microprocessor extensions comprise at least the buffers, the combinatorial multiplier and the first and second communication buses.
In a second aspect, the invention provides a method, preferably for implementation in a finite state machine (FSM), and more preferably for implementation in a FSM within the processing resources in an IMD, for performing a MAc operation. The method comprises:
In a third aspect of the invention, the method may be made available as a computer-program product, or more precisely as computer-readable instructions stored on a data carrier.
In a fourth aspect, the invention relates to use of a sequential ALU in a MAc processor, wherein input data are transferred from buffers to operand registers in a combinatorial multiplier using first communication buses, and intermediate product data from a result register of the multiplier are transferred into the operand register of the ALU using a second communication bus. These communication buses operate independently of the first clock signal. Preferably, the buses are direct, in the sense that they form dedicated transmission lines without passing through a bus controller.
The invention further provides, in a fifth aspect, a MAc unit comprising:
The microprocessor extensions alone and the MAc processor that they potentially form with an ALU independently fall within the scope of the invention. The microprocessor extensions comprise at least the buffers and the first communication buses.
Analogously with the fifth aspect, a sixth, seventh and eighth aspect of the invention respectively provide a method, computer-program product and an advantageous use of a sequential ALU with an accumulation faculty, a combinatorial multiplier and a sequential bus connecting these.
The variations and further developments which will be outlined below may be applied to any aspect of the present invention.
The first communication buses may extend from the buffers directly to the operand registers of the combinatorial multiplier. This means that the buses offer a dedicated communication line between the buffers and the multiplier, without passing through a bus controller or similar device. In particular, the bus may be direct in the sense that it is independent from a system bus or equivalent device that serves the ALU or a microprocessor that the ALU is part of. The first communication buses may further have a layout allowing data from two buffers to be fed into the operand registers of the multiplier. Also the second communication bus may run from the result register of the combinatorial multiplier directly to the operand register of the ALU.
The microprocessor extensions, and consequently the MAc system as well, may further comprise a FSM adapted to control the first communication buses (and second communication buses, if such are provided) in such manner that the operand register of the ALU stores fresh intermediate product data at initiation of each accumulation instruction in the sequence. More precisely, if only first communication buses are controlled by the FSM, the FSM may be adapted to provided new input data to the multiplier operand registers a suitable period before the clock cycle in which the sequential bus write data from the result register of the multiplier into the operand register of the ALU. Alternatively, if both first and second communication buses are controlled by the FSM, the latter may apply the relevant data at the inputs of the ALU some period before the next accumulation instruction is to be initiated. The FSM may verify that it provides the intermediate product data at the appropriate instants by fetching or receiving a signal that indicates the completion of an accumulation instruction. For instance, the ALU may store this information in status flag registers, which the FSM can poll.
As another option for ensuring correct timing, the FSM may listen to the first clock signal that controls the ALU. Assuming that the ALU effects a new accumulation instruction at every Nth positive or, as the case may be, negative clock signal edge, the FSM may verify that the intermediate product data were indeed provided to the ALU at the correct interval or point in time. The verifying may take place after each accumulation instruction or intermittently at regular or irregular time intervals. It is noted that the clock signal alone contains less information than the status signal, since the FSM may then need to count all clock cycles continuously to keep track of the beginnings of new accumulation instructions.
Additionally or alternatively, the FSM may retrieve an indication of whether intermediate product data are available in the result register of the combinatorial multiplier. This indication may consist in a change of the value of a status register or an output signal of the multiplier. In the absence of such an indication, the FSM may predict the instant at which the multiplication will have been completed. More precisely, this instant is likely to occur a period, which corresponds to the FIFO depth of the multiplier, after the latest change to the operands of the multiplier. When the indication has been received, the FSM may activate the second communication bus, so that intermediate product data are transferred to the ALU.
The FSM may be operable in a low-power mode. Hence, in addition to its normal mode, in which it controls the communication buses connecting the multiplier with buffers and/or ALU, it may enter a low-power mode until a subsequent MAc operation is to be executed. Such low-power mode may include suspending the output signals (see below) or logical components of the FSM or in interrupting any polling for data from the multiplier and/or the ALU.
There are several ways in which the FSM may control the communication buses. Advantageously, some or all of the buses are controlled by means of strobes. As used herein, a strobe is a selection signal that is active when data are correct on a bus. The strobe may also indicate the start or end of the data. It may be encoded with a different potential or time-length or may use a dedicated wire in a parallel bus. In general, a strobe is used to synchronize the data in an electric bus when the bus components lack a common clock. In the invention, one strobe may be used to facilitate the FSM's control of a first communication bus or both first communication buses; when the signal is active, the relevant bus(es) establish(es) a link (pass-through) between its endpoints, so that the operand register of the multiplier coincide with the data word at a current memory position in the corresponding buffer. Further, the FSM may use a different strobe to control the second communication bus, which in the active state of the strobe equates the data words at its endpoints.
If a low-width communication bus is employed, the FSM may be adapted to cause the bus to transfer data to an operand register by portions smaller than a number in the input data, that is, in two or more batches for each accumulation instruction.
The FSM may be a Moore machine (input-independent) or Mealy machine (input-dependent). Preferably, the FSM is a Mealy machine. A Mealy machine is typically capable to generate a pulse in response to a state transition, which may provide for a more efficient implementation.
As an alternative, while being independent from the first clock signal, which controls the operations of the ALU, the buses and/or buffers may be controlled by a different, second clock signal. The second clock signal may be generated by the FSM or some other component. There is no obvious advantage in synchronizing the first and second clock signals. Rather, a non-zero phase difference between these signals is advantageous and may allow use of a lower, less energyconsuming bus frequency, as will be explained in more detail below. In typical implementations, the second clock frequency is equal to the first frequency or higher.
It is to be noted that the FSM does not necessarily control all the communication buses. A possible alternative solution is the following: The FSM controls the first communication buses, whereas the second communication buses are activated by a separate controller adapted to activate the second communication bus in response to a change into an active state of a signal indicating that the multiplier output (intermediate product data) has stabilized and is available.
The buffers may include buffer logic for facilitating the addressing of the storage locations in the buffers. In each buffer, the buffer logic may include a read pointer register, which stores an effective address to which the next buffer read operation will refer and which will therefore be updated at every buffer read operation. The logic may further include a modifier register, which is responsible for said updates by storing an increment by which the read pointer register is modifled between consecutive read operations. Preferably, the increment is signed and may thus express either a forward or backward shift of the pointer in the address space. The logic may as well include a data length register, by which a periodicity may be imposed on the input data. The joint update action defined by a pointer register PTR, a modifier PMOD and a data length register PLEN, may be expressed as
PTR:=(PTR+PMOD)mod PLEN. (3)
A buffer read operation triggering said updating operation may be evidenced by an active period of a strobe signal controlling the first communication bus connecting the buffer to the multiplier. An active bus strobe signal may be easily detected by the buffer logic.
In a further development, the buffer logic may include a write pointer register as well and associated modifier and data length registers, analogously to the description already given. As a simple alternative, all buffer write operations may be directed to the same memory location, while shifting the already stored data away from the input location along the buffer.
The ALU may be a general-purpose component. Preferably it offers the set of instructions generally encountered in a Z80 architecture. This not only enables MAc-related operations but also makes the ALU well suited for the computational tasks other than MAc. Hence, an IMD equipped with a Z80-architecture ALU and the extensions proposed by the invention will be able to fulfil the normal computational duties expected from such a device while offering an efficient implementation of the MAc functionality. Neither does this require modifications to existing software modules, nor does it necessitate the provision of further hardware components. As used herein, Z80 architecture refers to the microprocessor Zilog Z80, which was originally conceived and sold by Zilog, Inc., San Jose Calif., United States, and its successors. The term Z80 architecture is also meant to cover devices which lack a relationship to Zilog Z80 or Zilog, Inc. but which are nevertheless suitable for replacing Zilog Z80 by offering similar capabilities, having a similar instruction set, or by being equipped with similar I/O interfaces or internal hardware and software. In particular, the term is meant to cover any microprocessor that offers a superset of the Zilog Z80 instruction set, since this microprocessor will be able to replace Zilog Z80. Alternatively, the ALU may be one of the following architectures: 6502, 6800, 68000, 8051, x86 and RISC.
Also with the aim of providing a general-purpose processing device, there may be a further connection between the ALU and the combinatorial multiplier. The connection is preferably provided in the form of a communication bus operating synchronously with the first clock signal. This communication bus may be (a portion of) a system bus. This allows the ALU to use the multiplier for speedy multiplication of large numbers even outside the context of MAc operations.
Further to fulfil the same aim, the ALU may be adapted to offer a minimal set of instructions. Such minimal set preferably includes the following instructions: and, compare, multiply, or, subtract, xor.
It is economical to activate only those components of the processor that are actually required to perform an operation or instruction. To this end, one or more of the buffers, multiplier, communication buses and, if such is provided, the finite state machine may be suppressed unless a MAc operation is being carried out. The suppression may simply consist in interrupting the electric power supply to these devices, possibly with the exception for power sufficient to avoid loss of stored data.
A processor formed by an ALU and the microprocessor extensions in accordance with the above teachings may advantageously form part of an implantable medical device. In particular, the processor thus formed may be used in an implantable pacemaker.
In one embodiment, there are provided microprocessor extensions for performing a MAc operation in cooperation with an ALU, which operates synchronously with a first clock signal, and a combinatorial multiplier. The ALU and the combinatorial multiplier are connected by a communication bus allowing intermediate product data to be transferred from a result register of the multiplier to an operand register of the ALU. The ALU is operable to perform an accumulation operation in respect of the operand register and a combined operand and result register. The extensions include:
In one embodiment, the invention provides a method for performing a MAc operation by means of a sequential arithmetic-logic unit, which operates synchronously with a first clock signal and is adapted to perform an accumulation instruction in respect of an operand register and a combined operand and result register. The method includes the steps of:
i) clearing the combined operand and result register;
ii) transferring input data from buffers into operand registers of a combinatorial multiplier using first communication buses;
iii) transferring intermediate product data from a result register of the combinatorial multiplier into the operand register of the ALU using a second communication bus;
iv) repeating steps ii) and iii) until all input data have been processed; and
v) allowing the arithmetic-logic unit to complete the last accumulation instruction and extracting output data from the combined operand and result register.
In this embodiment, step ii) includes using communication buses operating independently of the first clock signal. Step iii) may be performed by means of a communication bus operating synchronously with the first clock signal or a bus operating independently of this clock signal. Similarly to the previous embodiment, the ALU and possible connected clock-synchronous devices are allowed to operate at full speed for the duration of the MAc operation. A finite-state machine may control the first communication buses, and, possibly, the second communication buses as well.
These and other aspects of the invention will be apparent from and further elucidated by the following description of particular embodiments. Reference is made to the accompanying drawings, on which:
The ALU is a sequential component, which is a precondition for the twofold use of the operand and result register HL insofar as the significance of the stored data can be separated in time by belonging to clock cycles. The ALU is supplied with a clock signal CLK1, which may have the general appearance shown in
The combinatorial multiplier MULT has two operand inputs FAC1, FAC2 and one result output PROD. Since the multiplier is not clock-operated, the result of the multiplication appears at the output PROD instantly in an idealized model. A real multiplier may however be composed of cascaded logic components operating at finite speed, and so the output signal from the multiplier MULT as a whole may not stabilize until after a finite period of time. The period after which the output is reliable, the FIFO depth of the component, may be predetermined. An indication to a similar effect may be had from a select signal MULT_SEL which changes into a “ready” state when sufficient time has passed from the latest change of the input signals to the multiplier MULT.
The microcontroller unit MCU may comprise several other sections than the multiplier MULT and the ALU, including data lines (not shown) for linking these components to one another, in particular one or more system buses.
The microprocessor extensions that the invention proposes additionally include buffers BUF1 and BUF2 for storing the vectors that form the inputs to the MAc operation. As will be described in more detail below, the buffers BUF1, BUF2 comprises a plurality of memory spaces for storing vector entries (components). Hence, preferably, the size (width) of individual memory spaces is compatible with those of the inputs to the multiplier MULT. The buffers BUF1, BUF2 are adapted to provide input data (entries of the input vectors) to the operand inputs FAC1, FAC2 of the multiplier MULT via two first communication buses L1, L2 operating independently of the first clock signal CLK1. A second communication bus M1 is operable to connect the result register PROD of the multiplier to the (pure) operand register BC of the ALU. Its purpose is to forward intermediate product data corresponding to each term of the sum in equation (1) above. The second communication bus M1 forms part of the extensions provided by the invention and not of the microcontroller unit MCU itself; if the ALU and multiplier MULT are already connected through a system bus or the like, the second communication bus M1 is intended to provide a dedicated, direct data connection that is independent of the first clock signal CLK1.
The embodiment shown in
In another embodiment, the FSM may, as an alternative or a supplement, use a select signal MULT_SEL from the multiplier MULT in order to determine suitable time intervals in which to activate the communication buses L1, L2, M1. Such a signal MULT_SEL, which is not necessarily available, has been indicated by a dashed connection line in
With reference now to
As already noted, the updating may be triggered by a deactivation of the first communication bus L1 connected to the buffer BUF1, as evidenced by a change between active and inactive values of a corresponding strobe SL1. Alternatively, it may be triggered by the inverse of the second strobe SM1.
The functioning of the extensions described above, as well as their cooperation with an ALU performing a continuous sequence of accumulation instructions, will now be summarized with reference to the flowchart in
In a first step 501, the combined operand and result register HL in the ALU is cleared of its previous values, e.g., by writing a zero.
In a second step 502, the FSM transfers the first pair ƒ1,g1 of input data points from the respective buffers BUF1, BUF2 to the inputs of the multiplier MULT. To this end, the FSM may activate the first communication buses L1, L2, as discussed above. After a small or negligible delay corresponding to the FIFO depth of the multiplier, a reliable result of the multiplication is available at the output PROD, namely the intermediate product ƒ1g1.
In a third step 503 then, the FSM effects the transfer of the intermediate product data to the operand register BC of the ALU via the second communication bus M1. The third step is to be completed a short while prior to the next instant at which the ALU initiates the next accumulation instruction in the sequence, this instant being indicated by a vertical dashed line in
In a fourth step 504, it is assessed whether or not all data points have been processed. In terms of equation (2), it is checked whether the summation index has reached its final value k=n−1. If not, the second and third steps 502, 503 are repeated. On the first repetition, the ALU will be presented with the second intermediate product ƒ2g2, which will be added to the already stored first intermediate product, from which it will result that the combined register HL will contain ƒ1g1+ƒ2g2 after completion of the second accumulation instruction.
In a fifth step 505, it will have been established in the last repetition of the fourth step 504 that no more intermediate products need to be fed to the ALU. Since the ALU will perform the accumulation instruction in finite time, such as two clock cycles, this time must elapse before the result of the MAc operation is extracted from the combined register HL. This is the endpoint of the method.
Another additional, optional feature shown in
A particular embodiment includes the connection DATA_REC from the second buffer BUF2 to the FSM, the select signal MULT_SEL from the multiplier MULT to the FSM and the status signal INSTRD from the ALU to the FSM. The devices may then be configured as follows:
Still with reference to
LD BC,[mul_prod_reg_lo]
ADD HL,BC
for every occurrence of
ADD HL,BC
that would normally be given to a central processing unit controlling the ALU. The above LD instruction loads the content from the PROD register in the combinatorial multiplier MULT via the system bus N1 into the BC register of the ALU. As such, this embodiment provides a MAc processor which, in addition to a sequential ALU that operates synchronously with a first clock signal CLK1, comprises:
As
a is a time plot of five binary control signals CLK1, SL1, SL2 (wherein SL2=SL1), SM1 as described above and a second clock signal CLK2, which is provided to the microprocessor extensions. The vertical dashed lines indicate instants at which the ALU initiates an accumulation instruction, which is when data provided to the ALU by means of the second communication bus M1 is written into its operand register BC. In this example, the frequency of the sec- and clock signal CLK2 is 3/2 times the frequency of the first clock signal CLK1, and certain pairs of positive edges coincide in time. In this embodiment, the control signals SL1, SL2, SM1 to the communication buses L1, L2, M1 are strobes in the sense that they activate the concerned communication bus so that data words at its endpoints are equated. The first communication buses L1, L2 are activated in the 2nd cycle, prior to the activation of the second communication bus M1, which happens in the 3rd cycle. Hence, the output (intermediate product data) of the multiplier MULT will be allowed to stabilize during the 2nd cycle before it is forwarded to the ALU, thereby avoiding the risk of incorrect data being introduced into the MAc computation. Without any obvious inconvenience, the second clock signal CLK2 may operate at a higher frequency than 3/2 of the first clock frequency, as disclosed in
b is a time plot of the same control signals as in
A use currently envisioned for the processor formed by an ALU and the extensions disclosed herein is in an IMD and particularly a pacemaker device. The data processing may include subjecting cardiac data collected by sensors connected to the IMD to appropriate digital filters, so as to extract data relevant to diagnosis or therapy. The cardiac data may be obtained by sampling physiological electric signals.
Further embodiments of the present invention will become apparent to a person skilled in the art after studying the description above. Even though the present description and drawings disclose embodiments and examples, the invention is not restricted to these specific examples. Numerous modifications and variations can be made without departing from the scope of the present invention, which is defined by the accompanying claims. Technical features may be combined to advantage even though they are recited in different claims or in connection with different embodiments.
The systems and methods disclosed hereinabove may be implemented as software, firmware, hardware or a combination thereof. In a hardware implementation, the division of tasks between functional units referred to in the above description does not necessarily correspond to the division into physical units; to the contrary, one physical component may have multiple functionalities, and one task may be carried out by several physical components in cooperation. Certain components or all components may be implemented as software executed by a digital signal processor or microprocessor, or be implemented as hardware or as an application-specific integrated circuit. Such software may be distributed on computer readable media (or data carriers), which may comprise computer storage media (or non-transitory media) and communication media (or transitory media). As is well known to a person skilled in the art, computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer. Further, it is well known to the skilled person that communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
Number | Date | Country | Kind |
---|---|---|---|
PCT/EP2011/052929 | Feb 2011 | EP | regional |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/EP2011/055963 | 4/14/2011 | WO | 00 | 8/27/2013 |