2012-10-30 37 views
5

Mam pewne wątpliwości dotyczące użycia instrukcji PLD w kamerze ARM A8. Ponieważ używam instrukcji wewnątrz pętli, istnieje możliwość braku dostępu do pamięci. Mam wątpliwości, czy to spowoduje błąd segmentacji, czy nie. Czytałem w ARM manual which states thatUżycie instrukcji PLD

Ponieważ instrukcja PLD jest traktowane jak każdy inny instrukcją obciążenia przez wszystkie poziomy pamięci podręcznej, instrukcja PLD następujące standardowe zasady danych z zależnościami i procedury eksmisji. Podczas dowolnego etapu wykonywania PLD instrukcja PLD jest ignorowana w przypadku błędu translacji adresu, trafienia w pamięci podręcznej lub przerwania.

Tak więc, jeśli zostanie wywołany brak dostępu do pamięci, odpowiednia instrukcja PLD zostanie zignorowana lub nie jest to moja wątpliwość.

+1

+1: Świetne pytanie, zastanawiałem się nad tym sam, ale nigdy nie zadałem sobie trudu, aby to sprawdzić. – Leo

+0

Dziękuję za pytanie @Rugger, z którym sam się spotkałem kilka lat temu. Poniższa odpowiedź jest poprawna. – poloolop

Odpowiedz

5

Instrukcja PLD nie powoduje błędu segmentacji. W przypadku, gdy PLD prosi system pamięci, aby sięgnął do nieistniejącego obszaru pamięci, jest on ignorowany.

Od ARM ARM

Instrukcje wstępne są podpowiedzi, a więc implementacje można traktować je jako NOP bez wpływu na funkcjonalną zachowanie urządzenia. Instrukcje nie generują wyjątków synchronizacji danych Przerwij, ale operacje w systemie pamięci mogą w wyjątkowych okolicznościach generować asynchroniczne przerywanie.

...

Jednak operacja wykonywana pamięć w wyniku jednego z tych systemów pamięci wskazówki może skutkować asynchronicznego zdarzenia, więc wpływającym na realizację procesora. Przykładami asynchronicznych zdarzeń, które mogą być wyzwalane, są asynchroniczne przerywanie i przerywanie.