Wyrównywanie danych

0

Dlaczego umiaszczenie danych w pamięci pod adresem podzielnym przez jej długość
gwarantuje że będzie odczytana w jednym cyklu dostępu do pamięci ?

0

Nie chodzi Ci zapewne o pojedynczą daną, ale na przykład wyrównanie pól w rekordach.. ?

Wynika to z następującego mechanizmu: jeśli rekord ma wyrównanie, adres jego N-tego pola można wyliczyć:
Adres pola = Adres rekordu + N * Rozmiar wyrównania pól

Przy braku wyrównania musisz po prostu zsumować rozmiary pól poprzedzających.

Tu masz artykuł o takiej tematyce do Delphi: Packed

0

Pojedyncze dane też są wyrównywane. O ten przypadek pytałem.

0

Chodzi o to, ze linia cache'u ma 32 bajty, dane zaś /jako pojedyńcze typy/ również mają rozmiar będący wielokrotnością 2. Jest jeden wyjątek - 80bitwa liczba zmiennoprzecinkowa. Wyrównanie do wielokrotności gwarantuje, że całość danej wartości znajduje się w tej samej linii.

1 użytkowników online, w tym zalogowanych: 0, gości: 1