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
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.