Re: Zelety architektury Von Neumannna w uC ARM?

Nov 08, 2009 Last reply: 16 years ago 3 Replies

Dzięki za pomoc.



Jeszcze mam jedną sprawę tak trochę tylko związaną z tematem. Mówi się ze dane z pamięci Flash są pobierane wolniej niż z RAM. czy jest to gdzieć napisane. Przykład. Spotkałem opis programu na ARM typu AT91SAM7S256 w którym w celu przyspieszenia pracy zrobiono "sztuczkę" polegającą na przerzuceniu programu z FLASHa do RAM. Dlaczego.Przecież to odczyt. Rozumiem zapis do pamięci, ale odczyt miałby być dłuższy? Skąd to się bierze?


Z osiaganych czasow dostepu w technologii SRAM i FLASH ?

Bo tak jak siegam pamiecia to SRAM byly szybsze, choc to czasem trudno porownac.

J.

Wszystko jest dokładnie opisane w dokumentacji do procesora. W zależności od częstotliwości zegara programuje się odpowiednie opóźnienia przy dostępie do pamięci Flash. Tak więc w praktyce wykonywanie programu w pamięci RAM zwykle jest znacznie szybsze.

Paweł

Paweł pisze:

100% true. A do tego jeżeli już mówimy o AT91SAM7Sxx to tam wewnątrz jest AFAIR pamięć Flash o organizacji 16-bitowej i dlatego wykonywanie programu w trybie ARM (o instrukcjach 32-bitowych) jest powoolne. Dodatkowo pamięć Flash ma 1 waitstate powyżej chyba 33 MHz zegara (a ten procek musi śmigać na 48MHz gdy działa USB). Pobrania z pamięci programu są "pakowane" w kawałki 32-bitowe (taki mini cache). Ale i tak w praktyce warto kompilować wszystko w trybie Thumb (z instrukcjami 16-bitowe) - nie dość, że kod jest krótszy to jeszcze szybciej działa niż w trybie Thumb. A krytyczne czasowo funkcje kompilować w trybie ARM i wykonywać z RAMu.

Jak miło, że nie trzeba takich kombinacji alpejskich robić w ARM9 (np. AT91SAM9260), bo pamięć cache programu śmiga z pełną prędkością (a dane pobiera np. z SDRAM całymi liniami do cache). W tym przypadku kompilacja w trybie Thumb daje co prawda krótszy kod wynikowy, ale wolniejszy.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required