MIPs Measurements for Components
NOTE: Be sure to
see the notes below the tables for details on how to correctly
interpret the contents of these tables.
[MeasurementMethod][Rx
MIPs][Tx MIPs][System MIPs]
Component |
Analog Devices ADSP |
ARM |
Texas Instruments TMS320 |
LSI Logic ZSP |
||||||
BF53x |
219x |
21xx/218x |
ARM9e | C3000 |
C5400 |
C5500 |
C6200 |
C6400 |
ZSP400 |
|
Silence |
- |
0.60‡ | 0.24 |
- | 0.28 |
0.20 |
0.34† |
0.32Ψ |
0.32Ψ |
- |
Baudot TDD |
- |
- | - | - | - | 0.59 |
- | - | 1.51Ψ | |
Call Progress |
- |
1.55‡ | 0.72 |
1.77* | 0.76 |
0.76 |
0.94† |
1.85Ψ |
1.85Ψ |
1.97* |
Caller ID (Bellcore/ETSI) |
2.13Ψ |
1.48‡ | 0.66 |
1.84* | - |
0.53 |
0.81 |
1.97Ψ |
1.97Ψ |
2.04* |
Caller ID (Japan) |
- |
- | - |
1.83* | - |
0.61 |
9.09 |
1.97Ψ |
1.97Ψ |
- |
Caller ID (DTMF) |
- |
- | - |
1.71* | - |
0.74 |
1.07 |
1.96Ψ |
1.96Ψ |
- |
DTMF |
2.05Ψ |
1.44‡ | 0.89 |
1.74* | 0.88 |
0.90 |
0.97 |
1.82Ψ |
1.66Ψ |
2.22* |
G.726 decoder |
- |
- | - |
- | - |
4.20 |
- |
- |
- |
- |
FSVS-210
(2400) |
- |
- | - |
- | - |
- |
- |
- |
2.38Ψ |
- |
MF(R1, R2-F, R2-B) |
2.05Ψ |
1.44‡ | 0.89 |
1.74* | 0.88 |
0.90 |
1.05 |
1.82Ψ |
1.68Ψ |
- |
Software UART |
- |
- |
- |
- | - |
3.02 |
- |
- | - | - |
V.17 |
4.46Ψ |
2.30‡ | 1.1 |
3.56* | 1.2 |
1.2 |
1.58 |
2.35Ψ |
2.01Ψ |
4.16* |
V.21, Bell 103 |
2.00Ψ |
1.34‡ | 0.54 |
1.73* | 0.44 |
0.45 |
0.78 |
1.73Ψ |
0.96Ψ |
1.92* |
V.22bis |
3.41Ψ |
2.13‡ | - |
2.77* | 0.92 |
0.83 |
1.42 |
1.85Ψ |
2.25Ψ |
3.44* |
V.23, Bell 202 |
- |
1.36‡ | 0.63 |
- | - |
0.53 |
0.80 |
- |
- |
- |
V.26 |
2.79Ψ |
1.79‡ | 0.84 |
- | 0.88 |
0.80 |
- |
3.40Ψ |
3.40Ψ |
- |
V.27ter |
4.10Ψ |
2.07‡ | 0.95 |
2.79* | 1.0 |
1.0 |
1.41 |
1.94Ψ |
1.84Ψ |
3.34* |
V.29 |
5.05Ψ |
2.21‡ | 1.1 |
3.59* | 1.3 |
1.0 |
1.46 |
2.14Ψ |
1.93Ψ |
4.26* |
V.32(non-TCM) |
5.83Ψ |
2.35‡ | 1.1 |
- | 1.1 |
1.0 |
1.39† |
2.0Ψ | 2.0Ψ | - |
V.32bis |
5.35Ψ |
2.42‡ | 1.1 |
3.65* | 1.3 |
1.3 |
1.78 |
2.79Ψ | 2.8Ψ | - |
V.34 |
16.8Ψ |
- | - |
7.64* | - |
6.08Ψ |
8.58Ψ |
- | 9.78Ψ | - |
V.42 |
- |
1.67‡ |
2.41Ψ |
- |
- |
0.99* |
0.90* |
- | - | - |
V.42+V.42bis |
- |
- |
- |
- |
- |
- |
- |
- | - | - |
Component |
Analog Devices ADSP |
ARM |
Texas Instruments TMS320 |
LSI Logic ZSP |
||||||
BF53x |
219x |
21xx/218x |
ARM9e | C3000 |
C5400 |
C5500 |
C6200 |
C6400 |
ZSP400 |
|
Idle |
- |
0.65‡ | 0.25 |
- | 0.20 |
0.20 |
0.47† |
0.74Ψ |
0.74Ψ |
- |
Baudot TDD |
- |
- | - | - | - | 0.78 |
- | - | 1.50Ψ | - |
Call Progress |
- |
1.37‡ | 0.43 |
2.54* | 0.66 |
1.35 |
1.77 |
1.47Ψ |
1.47Ψ |
2.74* |
Caller ID (Bellcore/ETSI) |
3.54Ψ |
2.12‡ | 1.15 |
3.91* | - |
0.98 |
1.48 |
2.71Ψ |
2.71Ψ |
5.32* |
Caller ID (Japan) |
- |
- | - |
4.10* | - |
1.73 |
2.72 |
2.70v |
2.70v |
- |
Caller ID (DTMF) |
- |
- | - |
2.48* | - |
0.97 |
1.31 |
4.72Ψ |
4.72Ψ |
- |
DTMF | 3.73Ψ |
1.48‡ | 0.98 |
3.01* | 1.10 |
1.14 |
1.34 |
4.57Ψ |
2.17Ψ |
3.57* |
G.726 encoder |
- |
- | - |
- |
4.60 |
- |
- |
- |
- | |
FSVS-210
(2400) |
- |
- | - |
- | - |
- |
- |
- |
6.02Ψ |
- |
MF(R1, R2-F, R2-B) |
3.64Ψ |
1.75‡ | 0.79 |
2.94* | 0.96 |
0.86 |
1.33 |
3.78Ψ |
1.60Ψ |
25.0* |
Software UART |
- |
- |
- |
- | - |
13.6 |
- |
- | - | - |
V.17 |
21.0Ψ |
8.63‡ | 5.6 |
18.5* | 5.7 |
7.01 |
9.05 |
10.1Ψ |
11.0Ψ |
27.6* |
V.21, Bell 103 |
2.21Ψ |
1.58‡ | 0.67 |
3.38* | 0.64 |
0.99 |
0.91 |
3.23Ψ |
2.10Ψ |
3.67* |
V.22bis |
2.27Ψ |
2.42‡ | - |
3.43* | 1.5 |
1.3 |
2.54 |
1.90Ψ |
2.67Ψ |
9.49* |
V.23, Bell 202 |
- |
1.86‡ | 1.01 |
- | - |
1.17 |
1.27 |
- |
- |
- |
V.26 |
6.75Ψ |
5.49‡ | 1.6 | - | 2.6 |
1.3/3.4 |
- |
6.3Ψ |
6.3Ψ |
- |
V.27ter |
5.46Ψ |
3.81‡ | 2.2 |
7.53* | 2.7 |
2.3 |
3.19 |
4.41Ψ |
4.84Ψ |
10.2* |
V.29 |
7.71Ψ |
6.19‡ | 4.1 |
19.5* | 5.4 |
4.43 |
6.29 |
6.46Ψ |
7.93Ψ |
25.5* |
V.32 (non-TCM) |
12.9Ψ |
9.20‡ | 4.5 |
- | 4.6 |
4.6 |
- |
16.0Ψ | 12.0Ψ | - |
V.32bis |
18.8Ψ |
11.6‡ | 8.20 |
37.8* | 8.20 |
9.51 |
11.7 |
18.5Ψ | 14.5Ψ | - |
V.34 (non-TCM) |
- |
- | - |
- 71.1* - - |
- |
15.0Ψ |
- |
- |
- 32.2Ψ - - |
- |
V.42 |
- |
1.76‡ |
4.35Ψ |
- |
- |
0.99* |
2.87* |
- | - | - |
V.42+V.42bis |
- |
- |
- |
- |
- |
- |
- |
- | - | - |
Product |
Analog Devices ADSP |
ARM |
Texas Instruments TMS320 |
LSI Logic |
||||||
BF53x |
219x |
21xx/218x |
ARM9e | C3000 |
C5400 |
C5500 |
C6200 |
C6400 |
ZSP400 |
|
G.168-2002 |
15.0 |
- | - |
- |
4.60 |
- |
- |
- |
9.3 | |
STU-III Relay System | 13.2Ψ | 16.0Ψ | ||||||||
T.38 Fax Relay |
39.2Ψ |
14.6 | - |
21.7* | - |
9.96Ψ |
13.6Ψ |
- |
18.5Ψ |
28.0* |
In these tables, MIPs actually refers to Millions of Instruction cycles per Second. These measurements were made using the processor's on-chip timer to measure the number of CPU cycles required for a call to each Component listed at the default frame rate of 20 samples per frame. You can accurately estimate your channel MIPs density using your CPU clock rate and these measurements.
The Transmitter() table includes signal generation components such as modulators, digit generators, tone generators, etc. The Receiver() table includes signal processors such as de-modulators, digit detectors, tone detectors, etc. In some applications you would run both components simultaneously, such as a full-duplex v32bis modem. In other applications you might run the transmitter() in "silence" mode while the receiver() is running a detector, such as Caller ID. Conversely, you might run the receiver() in "idle" mode while the transmitter() is running a generator, such as DTMF. When estimating for a multi-channel system you should consider the worst-case transmitter() plus receiver() sustained MIPs load aggregate totals. Please refer to the User Manual for more details on the transmitter() and receiver() functions.
Items marked with an asterisk (*) are measured from compiled-C code and have not yet been ported to Assembly nor optimized. Assembly-optimized C Source speed-up factors can vary from less than 4 to greater than 20.
Items marked with psi (Ψ) are measured from mixed C and optimized Assembly Source for MIPs-intensive algorithms, such as Hilbert filters, FIR interpolator/decimators, adaptive equalizers, and adaptive echo cancellers. The C source is mainly for the initialization, control, and protocol sequencing operations and compiled versus assembly source performance is very similar. This may be the only form (mixed C and Assembly) available for some devices.
Items marked with a dagger (†) are measured from un-optimized assembly code from a translator program or other non-optimal code generation technique, and do not represent the best performance that can be achieved once optimization has been completed.
Items marked with a double dagger (‡) are measured from 21xx assembly code non-optimally ported to 219x, and do not represent the best performance that can be achieved once optimization has been completed. Native 219x assembly code can be expected to perform equal to or better than 21xx or 218x assembly code.
These measurements assume all data memory (RAM) and program memory (ROM) is on-chip and operating at full speed. Locating data memory and/or program memory in off-chip memory will degrade the MIPs performance.
MIPs Measurement Method
Most MESi Components have demonstration programs that include a built-in utility to make MIPs measurements using the processor's internal timer functionality and a logging buffer. If you have full C or Assembly Source code available (not Object code products), then at build-time either the MEASURE_TX_MIPS or MEASURE_RX_MIPS symbol can be defined, and the transmitter() or receiver() function will be built with the MIPs measurement function enabled. When enabled, immediately upon entry to transmitter() or receiver(), the CPU's timer is reset and started, and the current state ID is saved to stack. Then, just prior to returning from receiver() or transmitter, the timer is stopped, and the timer count and stored state ID are written to the dump[] buffer. Thus, after several calls, the dump[] buffer will contain measurements of the number of CPU cycles elapsed, and the pre-existing state ID. Since all MESi Component algorithms operate under the "transmitter()/receiver()" API, this method provides a uniform measurement tool that is independent of the target type and development tool. If the program can be loaded and run to a target and the dump[] buffer can be read, then target MIPs can be measured. A simple command-line post-processor utility called MIPFORM.EXE (click here to download) processes the raw contents of the dump[] buffer to display the peak and average, or sustained MIPs for each state ID.
As an example, if the Bellcore Caller ID demonstration program, CIDDEMO, were built for a Texas Instruments TMS320C54x DSP using the -dMEASURE_RX_MIPS and -dDIGITAL_LOOPBACK, then the contents of the dump buffer might be:
0x0501
0x03AF
0x0501
0x0A55
0x0501
0x03AF
:
:
You would then save the contents of the dump[] buffer to a file using the File->Data->Save Store Data dialog to save to a file, perhaps called RXMIPS.DAT. Then, use MIPFORM to process the file and get results similar to the example below:
C:\products\components\modems\C5400\CIDdemo>mipform rxmips.dat
file name: rxmips.dat
format: %lx
ID: 0501 ( 1281) MIPs (avg,peak): 7.88e+05 1.21e+06
ID: 0503 ( 1283) MIPs (avg,peak): 9.89e+05 1.06e+06
ID: 0504 ( 1284) MIPs (avg,peak): 1.00e+06 1.06e+06
ID: 0505 ( 1285) MIPs (avg,peak): 9.46e+05 9.62e+05
ID: 0540 ( 1344) MIPs (avg,peak): 9.83e+05 1.03e+06
ID: 0501 ( 1281) MIPs (avg,peak): 7.45e+05 1.28e+06
Run MIPFORM with no arguments to see usage information.