TCP/IP Stack Platform Support Package for EVMDM642

Version 1.94.01.001 

TCP/IP Stack Benchmarking

For the performance measurements supplied here, the benchmarks are designed to use methods for best performance, but that still fit into typical operating paradigms. For example, the socket buffer size is about 8K bytes, not 32K or 64K, which would be unreasonable for some embedded environments.

Specifically, these tests use the non-copy mode of TCP, and the extended sockets API that allows applications to receive non-copy data directly. The socket buffer size used is 8192 bytes. The test is performed by running the data servers on one DSP board and a client application running on a second DSP board connected via a crossover cable.  The CPU load is measured by comparing the amount of work a low priority task can get done when the system is at idle, to when the benchmark applications are executing.

The values obtained in the next sections measure the throughput and CPU load from the data server (testee) side.  Both the data server and the client application run the C6000 TCP/IP stack.  Previous published values used a client Windows based platform (tester) to gather performance data.  The client application was Windows configuration specific, which caused varied results on different PCs.  Therefore to provide a more consistent way of measuring performance, the new benchmark values are being gathered using two DSP boards connected via crossover cable. The DSP client application (tester) configuration is as follows:

·        Board: C6455 DSK rev B

·        Compiler Options: -o2

·        CPU Speed: 1GHz

·        Cache configuration: L2 – 256kB,  L1P – 32kB, L1D – 32kB

·        Code/Data Placement: Internal memory (IRAM)

Similar benchmarks can be measured by using the included NDK Client example program and the send/recv Windows applications in the “winapps” directory.  Note:  The PCs TCP/IP protocol (send/receive) throughput is limited by various factors (machine speed, memory, operating system versions and configurations, etc).  Therefore running these tests may vary from published results.

C6400 Performance

The following performance results are measured by using the following test configurations:

·        Board: DM642 EVM (Rev. 3)

·        Compiler Options: –o2

·        CPU Speed: 720MHz

·        Cache Configuration: 256kB (all internal memory)

·        Code/Data Placement:  External memory (SDRAM)

For the purposes of keeping the tests "fair", no internal memory was directly utilized - even when available. The test measures sustained Mb/s throughput of the TCP data payload (the actual application data). The DM642 internal EMAC is tested with a TCP socket buffer size of 8KB. Network Management Interface Unit (NIMU) is introduced in NDK 1.94.00.001. Results show performance of NDK 1.94.00.001 with NIMU and LL architectures separately.The results are as follows:

With LL Architecture

Driver/Hardware Used

TCP Operation

Sustained Data Rate

CPU Loading

DM642

Transmit

94Mb/s

36%

DM642

Receive

94Mb/s

29%

With NIMU Architecture

Driver/Hardware Used

TCP Operation

Sustained Data Rate

CPU Loading

DM642

Transmit

94Mb/s

27%

DM642

Receive

95Mb/s

28%

 

 

TCP/IP Stack Library Footprint

The code size measurements are taken for both the C6400 and C64PLUS.  All values are in 8-bit bytes.

Program Memory

C6400

 

The sizing measurements are generated at packaging time and are provided under the lib directory in text files identified by the <lib_name>_size.txt. Please refer to the individual library size file for more sizing details.

 

Data Memory

The Data memory depends on the application. The Client example provided in this release uses a total of 120 KB: 48 KB for scratch pad and 72 KB for Ethernet buffers. This memory can be further reduced if necessary, when the application will allow it.