Explore MaverickCrunch

Penasaran juga tentang fitur kode MaverickCrunch yang ditawarkan oleh SoC EP93xx dari Cirrus Logic yang ada di board TS-7200. Fitur ini akan mempercepat eksekusi operasi-operasi floating point (misalnya multimedia decoder), dibandingkan dengan softfloat (atau emulasi FPU) yang biasanya digunakan di sistem embedded. Bagaimana cara mengimplementasikan MaverickCrunch ini di Linux?

Tentang MaverickCrunch

MaverickCrunch adalah core math coprosesor untuk floating point dari Cirrus Logic, yang saat ini diimplementasikan bersama core ARM920T di SoC EP9302, EP9307, EP9312 dan EP9315.

EP93xx mempunyai set instruksi sendiri yang mengimplementasikan 32- dan 64-bit integer dan IEEE-754 untuk operasi addition, subtraction, multiplication, negation, absolute value dan comparison, fungsi-fungsi multiply-and-accumulate, konversi antara integer dan floaing. Di MaverickCrunch terdapat 16 register 64-bit, 4 register multiply-and-accumulate 72-bit dan sebuah register status.

Perbaikan toolchain untuk mensupport MaverickCrunch


Binutils, gcc dan uClibc perlu dipatch agar bisa membangkitkan kode Crunch. Patch bisa diperoleh dari http://arm.cirrus.com/files/tools/crunch-tools-1.4.3.tar.bz2 yang berisi set patch untuk:

  • binutils-2.18
  • gcc-4.1.2
  • uClibc-0.9.29

Untuk sistem dengan library glibc bisa menggunakan patch yang diperoleh dari http://files.futaris.org/gcc/crunch.tar.bz2 yang berisi set patch untuk:

  • binutils-2.14 sampai binutils-2.17
  • gcc-4.0.0 sampai gcc-4.2.0
  • glibc-2.2.5 sampai glibc-2.5

Membuat toolchain

Dalam crunch-tools dari cirrus terdapat script untuk membuat toolchain untuk membangkitkan kode biner dari suatu aplikasi menggunakan opscode Crunch, yang meliputi download, extract, patch, configure, compile dan install.
Untuk sistem glibc dari futaris, prosedur untuk membuat toolchain ini dapat dilihat di http://martinwguy.co.uk/martin/ts7250/FPU/

Speed Test

Speed test ini diperoleh dari http://martinwguy.co.uk/martin/ts7250/FPU/. Tes ini dilakukan di board TS7250 yang menggunakan EP93xx 200MHz untuk mengkodekan 6460460-byte 16-bit stereo 44100Hz WAV file dengan durasi 30 seconds plus 6 seconds silence menggunakan LAME (MPEG 1 layer III v1 CBR 128 kbps joint-stereo).


Compiler
Flags
Text size
User CPU time
gcc-4.1.2 prerelease
(Debian arm)
none (emulated FPA)
267363
68m10.590s
gcc-4.2.1 (Debian armel)
none (soft-float)
302619
5m55.766s
5m54.12s
gcc-4.2.1 (Debian armel)
-mcpu=ep9312 -mfast-math
301891
6m10.106s (!)
gcc-4.1.2-futaris
-mcpu=ep9312 -mfpu=maverick -mfloat-abi=softfp
289693
2m28.8s
2m28.6s
2m27.544s
gcc-4.1.2-futaris
-mcpu=ep9312 -mfpu=maverick -mfloat-abi=softfp -Os
254291
2m31.5s
2m31.5s
gcc-4.2.0-futaris
-mcpu=ep9312 -mfpu=maverick -mfloat-abi=softfp
287061
2m29.85
2m29.86
2m28.394s
gcc-4.1.2-cirrus
-mcpu=ep9312 -mfpu=maverick -mfloat-abi=softfp
287065
2m28.514s

Terlihat bahwa softfloat bisa lebih cepat 11.5 kali dari emulated FPA, dan penggunaan Maverick mempercepat 3 kali lipat dari softfloat.

Benchmark juga telah dibuat oleh Andres Calderon dan Nelson Castillo tentang ARM EABI.

One Comment to “Explore MaverickCrunch”

  1. gak ngerti mas.. hehehehe.. mohon di bales email saya ya..🙂
    terimakasihh

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: