Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
ITERATIVE CHANNEL ESTIMATION AND EQUALIZATION WITH SUPERIMPOSED REFERENCE SIGNALS
Document Type and Number:
WIPO Patent Application WO/2017/201467
Kind Code:
A1
Abstract:
In a transmitter apparatus, a known reference signal is superimposed on top of a data signal that is typically not known a priori to a receiver and the combined signal is transmitted. At a receiver, an iterative channel estimation and equalization technique is used to recover the reference signal and the unknown data signal. In the initial iteration, the known reference signal is recovered by treating the data signal as noise. Subsequent iterations are used to improve estimation of received reference signal and the unknown data signal.

Inventors:
KONS SHACHAR (US)
HADANI RONNY (US)
TSATSANIS MICHAIL (US)
Application Number:
PCT/US2017/033632
Publication Date:
November 23, 2017
Filing Date:
May 19, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
COHERE TECH INC (US)
International Classes:
H04L23/02; H04L27/34; H04L27/01; H04L27/36
Foreign References:
US20120099669A12012-04-26
US7430253B22008-09-30
US20140036984A12014-02-06
US20100195774A12010-08-05
EP2713542A12014-04-02
Attorney, Agent or Firm:
SATHE, Vinay (US)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1. A wireless communication method for transmitting reference signals from a transmitter, comprising:

receiving information bits for transmission;

performing encoding operation on the information bits to generate encoded information bits;

mapping the encoded information bits to symbols of a constellation to generate a sequence of symbols; and

generating an output signal for transmission by either (a) first superimposing a reference signal on the sequence of symbols to generate a composite signal and by modulating the composite signal into the output signal, or (b) first modulating the sequence of symbols to produce a modulated signal and by superimposing the reference signal over the modulated signal to generate the output signal;

wherein the superimposing the reference signal refrains from increasing transmission bandwidth required for transmission of the output signal.

2. The method of claim 1, wherein the performing the encoding operation includes applying an error correction code to the information bits.

3. The method of claim 1, wherein the constellation comprises a quadrature phase shift keying (QPSK) or a quadrature amplitude modulation (QAM) constellation.

4. The method of claim 1, wherein the superimposing is performed in time domain by performing vector addition with instantaneous values of the reference signal.

5. The method of claim 1, wherein the superimposing is performed in frequency domain by performing vector addition with values of the reference signal.

6. A wireless communication method, implemented at a receiver-side, for receiving over a channel a signal comprising a known reference signal superimposed on an unknown data signal; comprising:

(A) generating a channel estimate using the known reference signal and by demodulating the signal;

(B) using the channel estimate to equalize the channel, thereby producing an estimation of the data symbols and the superimposed reference signal;

(C) removing the known reference signal from the estimation obtained in Step (B);

(D) decoding data output after removing the known reference signal in Step (C) thereby generating estimation of the unknown data signal and extrinsic estimations of encoded symbols in the signal;

(E) applying the channel estimate to the estimation of the unknown data signal and subtracting resulting signal from the received signal to generate a revised estimate of the received reference signal;

(F) generating a new channel estimation using the revised estimate of the received reference signal; and

(G) iterating Step (B) to step (G) until an exit criteria is met.

7. A wireless communication method, implemented at a receiver-side, for receiving over a channel a signal comprising a known reference signal superimposed on an unknown data signal; comprising:

(A) generating a channel estimate using the known reference signal and by demodulating the signal;

(B) applying the channel estimate obtained in Step (A) to the known reference signal and subtracting the result from the received signal;

(C) using the channel estimate to equalize the signal obtained in Step (B), thereby producing an estimation of the data symbols;

(D) decoding data output thereby generating estimation of the unknown data signal and extrinsic estimations of encoded symbols in the signal; (E) applying the channel estimate to the estimation of the unknown data signal and subtracting resulting signal from the received signal to generate a revised estimate of the received reference signal;

(F) generating a new channel estimation using the revised estimate of the received reference signal; and

(G) iterating Step (B) to step (G) until an exit criteria is met.

8. The method of claim 6 or 7, wherein the exit criteria comprises exceeding a number of iterations.

9. The method of claim 6 or 7, wherein the exit criteria comprises achieving an error-free decoding of the unknown data signal.

10. The method of claim 6 or 7, wherein in Step (A), the unknown data signal superimposed on the known reference signal are treated as noise.

11. The method of claim 6 or 7, wherein, in Step (A), the generating the channel estimate includes interpolating estimates at time-frequency locations where there is no known reference signal present.

12. The method of claim 11, wherein the interpolating includes using feedback information from a prior iteration to estimate the channel at the time-frequency locations where there is no known reference signal present.

13. A wireless communication method, implemented at a receiver-side, for receiving a signal comprising a known reference signal superimposed on an unknown data signal over a channel; comprising:

(A) generating a channel estimate using the known reference signal and by demodulating the signal;

(B) using the channel estimate to equalize the channel, and subtracting the known reference signal therefrom; (C) producing an estimation of the data symbols from signal resulting from subtracting in in Step (B);

(D) decoding data output from the estimation of the data symbols obtained in step (C), thereby generating estimation on the unknown data signal and extrinsic estimations of encoded symbols in the signal;

(E) applying the channel estimate on the estimation of the unknown data signal and subtracting resulting signal from the received samples to generate a revised estimate of the received reference signal;

(F) generating a new channel estimation using the revised estimate of the received reference signal; and

(G) iterating Step (B) to step (G) until an exit criteria is met.

14. A wireless communication method, implemented at a receiver-side, for receiving a signal comprising a known reference signal superimposed on an unknown data signal over a channel; comprising:

(A) generating a channel estimate using the known reference signal and by demodulating the signal;

(B) applying the channel estimate obtained in Step (A) to the known reference signal and subtracting the result from the received signal;

(C) using the channel estimate to equalize the signal obtained in Step (B), thereby producing an estimation of the data symbols;

(D) decoding data output from the estimation of the data symbols obtained in step (C), thereby generating estimation on the unknown data signal and extrinsic estimations of encoded symbols in the signal;

(E) applying the channel estimate on the estimation of the unknown data signal and subtracting resulting signal from the received samples to generate a revised estimate of the received reference signal;

(F) generating a new channel estimation using the revised estimate of the received reference signal; and

(G) iterating Step (B) to step (G) until an exit criteria is met.

15. The method of claim 13 or 14, wherein the exit criteria comprises exceeding a number of iterations.

16. The method of claim 13 or 14, wherein the exit criteria comprises achieving an error-free decoding of the unknown data signal.

17. The method of claim 13 or 14, wherein in Step (A), the unknown data signal

superimposed on the known reference signal are treated as noise.

18. A wireless communication device comprising a memory storing instruction and a processor, wherein the instructions, when executed by the processor, cause the processor to implement a method of any of claims 1 to 17.

15. A technique, method or apparatus disclosed in the present document.

Description:
ITERATIVE CHANNEL ESTIMATION AND EQUALIZATION WITH SUPERIMPOSED REFERENCE SIGNALS

TECHNICAL FIELD

[0001] The present document relates to wireless communication, and more particularly, transmission and reception of reference signals in single-input-single-output (SISO) and multiple-input-multiple-output (MIMO) systems.

BACKGROUND

[0002] Due to an explosive growth in the number of wireless user devices and the amount of wireless data that these devices can generate or consume, current wireless communication networks are fast running out of bandwidth to accommodate such a high growth in data traffic and provide high quality of service to users.

[0003] Various efforts are underway in the telecommunication industry to come up with next generation of wireless technologies that can keep up with the demand on performance of wireless devices and networks.

SUMMARY

[0004] This document discloses techniques for reduced overhead transmission and reception of reference signals that may be used for channel estimation.

[0005] In one example aspect, a transmitter-side technique for generating and transmitting a reference signal and information bits by superimposing on top of each other. The technique includes receiving information bits for transmission, performing encoding operation on the information bits to generate encoded information bits, mapping the encoded information bits to symbols of a constellation to generate a sequence of symbols, generating an output signal for transmission by either (a) first superimposing a reference signal on the sequence of symbols to generate a composite signal and by modulating the composite signal into the output signal, or (b) first modulating the sequence of symbols to produce a modulated signal and by superimposing the reference signal over the modulated signal to generate the output signal. The superimposing the reference signal refrains from increasing transmission bandwidth required for transmission of the output signal. [0006] In another example aspect, a receiver-side technique is disclosed. The technique includes (A) generating a channel estimate using the known reference signal and received and demodulated signal, (B) using the channel estimate to equalize the channel, thereby producing an estimation of the data symbols and the superimposed reference signal, (C) removing the known reference signal from the estimation obtained in Step (B), (D) decoding data output after removing the known reference signal in Step (C) thereby generating estimation on the unknown data signal and extrinsic estimations on the encoded symbols, (E) applying the channel estimate on the estimation of the unknown data signal and subtracting resulting signal from the received samples to generate a revised estimate of received reference signal, (F) generating a new channel estimation using the revised estimate of the received reference signal, and (G) iterating Step (B) to step (G) until an exit criteria is met.

[0007] In another example aspect, a receiver side technique is disclosed. The technique includes (A) generating a channel estimate using the known reference signal and by

demodulating the signal, (B) applying the channel estimate obtained in Step (A) to the known reference signal and subtracting the result from the received signal, (C) using the channel estimate to equalize the signal obtained in Step (B), thereby producing an estimation of the data symbols, (D) decoding data output thereby generating estimation of the unknown data signal and extrinsic estimations of encoded symbols in the signal, (E) applying the channel estimate to the estimation of the unknown data signal and subtracting resulting signal from the received signal to generate a revised estimate of the received reference signal, (F) generating a new channel estimation using the revised estimate of the received reference signal, and (G) iterating Step (B) to step (G) until an exit criteria is met.

[0008] In another example aspect, a receiver-side technique is disclosed. The technique includes (A) generating a channel estimate using the known reference signal and by

demodulating the signal; (B) using the channel estimate to equalize the channel, and subtracting the known reference signal therefrom; (C) producing an estimation of the data symbols from signal resulting from subtracting in in Step (B); (D) decoding data output from the estimation of the data symbols obtained in step (C), thereby generating estimation on the unknown data signal and extrinsic estimations of encoded symbols in the signal; (E) applying the channel estimate on the estimation of the unknown data signal and subtracting resulting signal from the received samples to generate a revised estimate of the received reference signal; (F) generating a new channel estimation using the revised estimate of the received reference signal; and (G) iterating Step (B) to step (G) until an exit criteria is met.

[0009] In another example aspect, a receiver-side technique is disclosed. The technique includes (A) generating a channel estimate using the known reference signal and received demodulated signal, (B) applying the channel estimate on the known reference signal and removing it from the received demodulated signal, (C) using the channel estimate to equalize the channel, thereby producing an estimation of the data symbols, (D) decoding data output thereby generating estimation on the unknown data signal and extrinsic estimations on the encoded symbols, (E) applying the channel estimate on the estimation of the unknown data signal and subtracting resulting signal from the received samples to generate a revised estimate of received reference signal, (F) generating a new channel estimation using the revised estimate of the received reference signal, and (G) iterating Step (B) to step (G) until an exit criteria is met.

[0010] These, and other, features are described in this document.

BRIEF DESCRIPTION OF THE DRAWINGS

[0011] Drawings described herein are used to provide a further understanding and constitute a part of this application. Example embodiments and illustrations thereof are used to explain the technology rather than limiting its scope.

[0012] FIG. 1 shows an example communication network.

[0013] FIG. 2 shows an example of a transmitter embodiment.

[0014] FIG. 3 shows another example of a transmitter embodiment.

[0015] FIG. 4 shows an example of a receiver embodiment.

[0016] FIG. 5 is a flowchart depiction of an example of an iterative channel estimation and equalization method.

[0017] FIG. 6 shows a flowchart of an example wireless communication transmission method.

[0018] FIG. 7A shows a flowchart of another example wireless communication reception method.

[0019] FIG. 7B shows a flowchart of another example wireless communication reception method.

[0020] FIG. 8 shows an example of a wireless transceiver apparatus. DETAILED DESCRIPTION

[0021] To make the purposes, technical solutions and advantages of this disclosure more apparent, various embodiments are described in detail below with reference to the drawings. Unless otherwise noted, embodiments and features in embodiments of the present document may be combined with each other.

[0022] Section headings are used in the present document to improve readability of the description and do not in any way limit the discussion to the respective sections only.

[0023] Many communication systems use reference signals (sometimes also called pilot symbols), which are pre-determined signals that are transmitted over the channel and used in the receiver to improve the quality of reception by allowing estimation of unknown parameters such as channel response, frequency offset, etc. These signals are typically separated from the information data signals and require additional resources such as bandwidth or throughput.

[0024] This document addresses the problem of training signal (or pilot signal) overhead that is required in wireless communication systems in order for the receiver to estimate the channel. This overhead increases significantly for fast varying channels found in cases of high mobility. Further, this overhead increases significantly with large numbers of transmit and receive antennas in MIMO (Multiple-Input-Multiple-Output) systems, since each information stream transmitted over the MFMO system typically requires a separate set of pilot signals. Due to these difficulties in channel estimation, current systems and prior art limit MIMO transmission to low mobility use cases.

[0025] Using the techniques described in the present document, some embodiments may implement a transmission scheme in which the reference signals are super-imposed on the information data signals and therefore do not require any additional bandwidth or throughput. The present document also provides, among other things, a method for channel estimation and equalization using pilots that are overlaid on the data on the same time and bandwidth resources eliminating the need for pilot bandwidth overhead.

[0026] Some implementations of the disclosed technique may be incorporated into a system that includes a transmitter, an unknown channel and a receiver. One example method disclosed herein provides ways for joint channel estimation and equalization without any loss of bandwidth or throughput. [0027] FIG. 1 shows an example communication network 100 in which the disclosed technologies can be implemented. The network 100 may include a base station transmitter that transmits wireless signals s(t) (downlink signals) to one or more receivers 102, the received signal being denoted as r(t), which may be located in a variety of locations, including inside or outside a building and in a moving vehicle. The receivers may transmit uplink transmissions to the base station, typically located near the wireless transmitter. The technology described herein may be implemented at a receiver 102.

[0028] Example transmitter embodiments

[0029] The transmitter encodes information data and maps the encoded bits to data symbols. Figure 2 shows an example transmitter embodiment 201 in which known reference signal 203 is super-imposed on the data signal before modulation. The data is received by an encoder 205 that performs data encoding and produces encoded data output. The encoded data output is converted into symbols by a symbol mapper 207. The super-imposition operation is performed by the module 211. The superimposed signal is then modulated using a modulator 209 and the output is upconverted and transmitted over the transmission medium using one or more antennas. By super-imposing the reference signal on the data signal, there is no loss of bandwidth of throughput comparing to only transmitting the data symbols.

[0030] Figure 3 shows an example transmitter embodiment 301 in which a known reference signal is super-imposed on the data signal after modulation.

[0031] Examples of transmission channel

[0032] The signal is transmitted over an unknown channel, such as a fading wireless channel. Various mathematical models are known to one of skill in the art.

[0033] Example receiver embodiments and reception methods

[0034] Figure 4 shows an example receiver apparatus 401. The receiver 401 jointly estimates the channel, equalizes it and decodes the data symbols to generate estimates of the information data. The receiver 401 includes one or more antennas that receive signal over the wireless channel and demodulate the received signal to generate a symbol stream. The symbol stream is fed into a channel equalizer that uses results from channel estimation to equalize the channel and generate channel equalized signal. The known reference signal is locally generated and is coupled to a subtracter that removes the reference signal from the channel equalized signal. The output of the subtraction is fed into a symbol demapper. The output of the demapper is input to a decoder that decodes data bits. The decoder also provides its output to a symbol mapper, whose output is fed back to the channel estimation process, as further described below.

[0035] The receiver 401 iteratively performs the following operations. The numbering of operations matches the numbering provided in FIG. 4 example.

[0036] (1) Generate an initial estimation of the channel using the known reference signal and the received demodulated signal. In this step, the data symbols which are super-imposed on the reference signal are treated as noise.

[0037] (2) Use the channel estimation from the previous step to equalize the channel. The result is an estimation of the data symbols and the reference signal.

[0038] (3) Remove the known reference signal from the equalized data of step 2.

[0039] (4) Decode the data output of step 3. Generate estimation on the source information data and extrinsic estimations on the encoded symbols.

[0040] (5) Apply the channel estimation (from steps 1 or 6) on the estimated encoded symbols (step 4) and subtract the result from the received samples, to generate a new and cleaner received reference signal.

[0041] (6) Generate a new channel estimation using the reference signal of step 5.

[0042] Go to step 2. The iteration is terminated when an exit criterion is met. In some embodiments, the receiver 401 may also include an arrangement in which the output of symbol mapper is connected to the channel estimation module and may be used to improve channel estimates at time-frequency locations where no reference signals are sent.

[0043] FIG. 5 is a flowchart depiction of an example method 501 of signal reception. The method 501 may be implemented by a receiver apparatus in a wireless communication system. For example, the receiver 102 may implement the method 501.

[0044] At 503, prior probabilities of the transmitted data are initialized. For example, the initialization operation may include accessing previously calculated probabilities stored in a local memory. These probabilities may have been computed in a previous iteration of method 501. At 505, estimated data may be subtracted, or removed, from the received waveform. At 507, channel estimation may be performed from the result of data subtraction. At 509, based on the results of channel estimate, the channel transfer function may be equalized and the transmitted data probabilities are updated (e.g., for subsequent use in a next iteration of operation 503). [0045] At 513, data decoding is performed. The output of the data decoding may be used for deciding whether or not to perform additional iterations to improve the receiver operation. At 511, a check is made regarding a termination condition for the method 501. For example, a check may be made for whether a maximum number of iterations has been performed. Other possible conditions may include passage of an allotted amount of time or improvement in data estimates in successive iterations falling below an improvement threshold or being able to successfully decode and recover data in Step 513. As per the decision in 513, a next iteration of data estimation is performed starting at operation 505.

[0046] FIG. 6 is a flowchart of a method 200 implemented at a transmitter for generating and transmitting a reference signal and information bits by superimposing on top of each other.

[0047] The method 200 includes receiving (202) information bits for transmission. The information bits may form data symbols and may be generated by, e.g., user applications and thus be generally unknown a priori to the transmitter and the receiver.

[0048] The method 200 includes performing (204) encoding operation on the information bits to generate encoded information bits. Various encoding operations are known in the art to increase data protection, e.g., error correction coding. The encoding operation may also include bandwidth improving operations that reduce inter-data bit transitions (e.g., RZ coding, differential coding, gray coding, etc.).

[0049] The method 200 includes mapping (206) the encoded information bits to symbols of a constellation to generate a sequence of symbols. Various symbol mapping techniques may be used to map to QAM or QPSK constellations. In general, the transmission system may map a vector of input data bits on to a SISO or an MIMO OFDM symbols.

[0050] The method 200 includes generating (208) an output signal for transmission by either (a) first superimposing a reference signal on the sequence of symbols to generate a composite signal and by modulating the composite signal into the output signal, or (b) first modulating the sequence of symbols to produce a modulated signal and by superimposing the reference signal over the modulated signal to generate the output signal. The superimposing the reference signal refrains from increasing transmission bandwidth required for transmission of the output signal. The resulting composite signal is the transmitted on a wireless channel.

[0051] FIG. 7A depicts a flow chart for a receiver-side method 300 of receiving signals. [0052] The method 300 includes (A) generating (302) a channel estimate using the known reference signal and received demodulated signal. In some embodiments, reference signals may be sent only on a subset of all time-frequency locations. In such embodiments, the method 300 may include interpolating channel estimates at the locations of the reference signal to other time- frequency locations where reference signal is not present. In some embodiments, the channel estimates at these location may be improved by using feedback based on data estimates from previous iterations.

[0053] The method 300 includes (B) using the channel estimate to equalize the channel, thereby producing (304) an estimation of the received symbols, e.g., data symbols and the superimposed reference signal.

[0054] The method 300 includes (C) removing (306) the known reference signal from the estimation obtained in Step (B), (D) decoding data output after removing the known reference signal in Step (C) thereby generating estimation on the unknown data signal and extrinsic estimations on the encoded symbols.

[0055] The method 300 further includes (E) applying the channel estimate on the estimation of the unknown data signal and subtracting resulting signal from the received samples to generate a revised estimate of received reference signal (308).

[0056] The method 300 also includes (F) generating a new channel estimation using the revised estimate of the received reference signal (310).

[0057] The method 300 may iterate the previous steps until an exit criteria is met. The exit criteria may be, e.g., number of iterations performed, a time budget allocated for the iterative process, resources available for the computations, whether or not there is sufficient improvement over the previous iteration, etc. The exit criteria may also be error-free decoding of the unknown information signal.

[0058] In an alternate method 350 to method 300, as depicted in the flowchart of FIG. 7B, after channel estimation (352), the reference signal may be removed from the received signal (354) by applying the channel estimate to the reference signal and subtracting thus estimated contribution of the reference signal from the receiving signal. At this point, the subsequent channel equalization will thus provide estimation of the data symbol portion (356) of the received signal. This step may be followed by a decoding operation to generate data estimates (358) and the data estimates may be used to revise the estimate of the received reference signal (360). Such alternative processing flow may be obtained, e.g., by reversing order of Step (B) and Step (C) described with respect to method 300.

[0059] Alternatively, in methods 300 and 350, steps 310 and 360 could be modified to use the estimates of received data may be used in addition to or in lieu of the estimates of reference signals.

[0060] In some embodiments, a receiver-side method includes (A) generating a channel estimate using the known reference signal and received demodulated signal, (B) applying the channel estimate on the known reference signal and removing it from the received demodulated signal, (C) using the channel estimate to equalize the channel, thereby producing an estimation of the data symbols, (D) decoding data output thereby generating estimation on the unknown data signal and extrinsic estimations on the encoded symbols, (E) applying the channel estimate on the estimation of the unknown data signal and subtracting resulting signal from the received samples to generate a revised estimate of received reference signal, (F) generating a new channel estimation using the revised estimate of the received reference signal, and (G) iterating Step (B) to step (G) until an exit criteria is met.

[0061] FIG. 8 shows an example of a wireless transceiver apparatus 500. The apparatus 500 may be used to implement method 200 or 300. The apparatus 500 includes a processor 502, a memory 504 that stores processor-executable instructions and data during computations performed by the processor. The apparatus 500 includes reception and/or transmission circuitry 506, e.g., including radio frequency operations for receiving or transmitting signals.

[0062] The methods described herein can be used in an OFDM (orthogonal frequency division multiplexing) or OTFS (orthogonal time frequency space modulation) system. The known reference signal can be added to the data symbols in the delay -Doppler plane (in OTFS) or in the time-frequency plane (in OFDM and OTFS). It may also be defined over the whole plane or part of it.

[0063] In some embodiments, the methods described herein may be embodied in the form of code and stored into memory of a wireless apparatus. The wireless apparatus may also include a processor that reads the instructions from the memory and implements the

corresponding method.

[0064] It will be appreciated that techniques for wireless data reception are disclosed in which reference signal superimposed on top of data signal are transmitted and are received at a receiver. It will further be appreciated that, in one advantageous aspect, the disclosed technique reduces transmission resource overhead required for transmission of test signals, reference signals or pilots in a convention digital communication system.

[0065] The disclosed and other embodiments, modules and the functional operations described in this document can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or in combinations of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more them. The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus.

[0066] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.

[0067] The processes and logic flows described in this document can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).

[0068] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices.

Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0069] While this patent document contains many specifics, these should not be construed as limitations on the scope of an invention that is claimed or of what may be claimed, but rather as descriptions of features specific to particular embodiments. Certain features that are described in this document in the context of separate embodiments can also be implemented in

combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or a variation of a sub-combination. Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results.

[0070] Only a few examples and implementations are disclosed. Variations, modifications, and enhancements to the described examples and implementations and other implementations can be made based on what is disclosed.