Migracja z Cortex-M3 do Cortex-M4

 

Tab. 5.

  Cortex-M3 Cortex-M4
xN = *x++; 2 2
yN = xN * b0; 3-7 1
yN += xNm1 * b1; 3-7 1
yN += xNm2 * b2; 3-7 1
yN -= yNm1 * a1; 3-7 1
yN -= yNm2 * a2; 3-7 1
*y++ = yN; 2 2
xNm2 = xNm1; 1 1
xNm1 = xN; 1 1
yNm2 = yNm1; 1 1
yNm1 = yN; 1 1
Zmniejszenie licznika pętli o 1
(Decrement loop counter)
1 1
Rozgałęzienie warunkowe
(Branch)
2 2
  26~46 cykli 16 cykli

 

Aby wykonać ten sam kod źródłowy, rdzeń Cortex-M3 potrzebuje od 26 do 46 cykli (czas wykonania operacji mnożenia zależy od typu danych), natomiast Cortex-M4 potrzebuje tylko 16 cykli. Cortex-M4 zapewnia od 1.6-krotną do 2.9-krotną poprawę wydajności obliczeń filtru IIR. Przyglądając się szczegółowo można zauważyć, że różnica występuje w wierszach kodu, w których wykonywane są kolejne operacje mnożenia i sumowania. Do wykonania tych operacji Cortex-M3 wymaga wielu instrukcji i potrzebuje na to od 3 do 7 cykli, podczas gdy Cortex-M4 wymaga tylko jednej instrukcji wykonywanej w ciągu 1 cyklu. Jest to przykład rzeczywistego przetwarzania sygnałów, pokazujący wydajność rdzenia Cortex-M4.

Podsumowanie

Cortex-M4 oferuje zaawansowane możliwości cyfrowego przetwarzania sygnałów, które były niedostępne w poprzednich produktach rodziny Cortex-M. Korzystając z tej samej platformy sprzętowej i kompatybilnego zestawu instrukcji, projektanci mogą przeprowadzić migrację z Cortex-M3 do M4 przy niewielkim wysiłku, z zachowaniem dotychczasowego oprogramowania.

Opracowanie wykonane na podstawie dokumentacji „Migrating from Cortex-M3 to Cortex-M4”.

O autorze