-
Data: 2014-10-05 15:45:29
Temat: Re: Procesory wielordzeniowe
Od: "J.F." <j...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Dnia Sun, 5 Oct 2014 04:16:25 -0700 (PDT), s...@g...com
> W dniu niedziela, 5 października 2014 12:01:53 UTC+2 użytkownik Jacek Radzikowski
napisał:
> Fakt, że nie jest to odwzorowanie "wielkiego" obszaru pamiąci jest
> oczywisty. Natomiast mechanizm kojarzenia stron jest dla mnie
> niezrozumiały. Od strony HW, mamy jakiś tam adres zapisany na
> n-bitach. Jasne, że możemy ten adres w przypadku "dużych" pamięci
> podzielić na strony, bądź innymi słowy na kostki pamięci. OK, no
> ale wtedy cykl dostępu do pamięci to 2 kliknięcia zegarka na
> licznik adresowy, bądź 2 rozkazy zapisu od strony procka do
> jakiegoś tam rejestru adresowego. O co mi chodzi? Nosz
To robi sprzet a nie program. Ale owszem, trwa.
> kurdelebelans, nie da się z jednej kostki odczytać w tym samym
> czasie danych z 2-ch różnych adresów!! No bo niby jak ?
No, pamieci dwuportowe sa, moga byc i wiecej portowe, ale glowny RAM
taki nie jest. Natomiast cache ... kto wie.
>> Tym żeby wiedzieć jaki adres w cache odpowiada adresowi w pamięci
>> zajmuje się tablica translacji.
> A skąd owa tablica ma wiedzieć o wynikach działania programu/obliczeń
>i jak przypisać skoki tam gdie trzeba?
Nie, to sie dzieje automatycznie.
Masz pamiec cache C, moze i 32-bit, ale podzielona na ramki po np 16
bajtow. Adres w niej dzielimy bitowo na f:w, gdzie f to nr ramki, a w
- slowa/bajtu w ramce. Podobnie pamiec glowna R, gdzie adres dzielimy
na p:f:w.
f i w w obu pamieciach sa takie same, wiec kazda ramka f:* w C jest
przypisana do jednej z mozliwych lokalizacji *:f:* w pamieci R.
Do ktorej aktualnie - to jest zapisane w osobnej pamieci S, ktora
przechowuje starsza czesc adresu p.
No i teraz - jak procesor ma potrzebuje siegnac do jakiegos adresu
pamieci, to dzieli go na p:f:w, odczytuje S(f), i jesli tam jest
akurat p, to wie ze moze odczytac z pamieci C(f:w).
A jesli nie ma, to przepisujemy cala ramke R(p:f:*) do cache C(f:*),
a do S(f) zapisujemy p. I nastepnym razem juz jest.
Sam odczyt calej ramki z SDRAM idzie w miare szybko, bo sa do tego
stosowne funkcje.
Tak wyglada pierwsza wersja, ktora ma te wade, ze procesor moze sie
odwolywac do roznych obszarow pamieci o przypadkowo zgodnym f.
Wiec powiekszamy pamiec C np 4 razy, adresujac ja s:f:w, dajemy 4
pamieci S - nazwijmy je S0 do S3, i teraz jesli procesor potrzebuje
adresu p:f:w, odczytujemy wszystkie Sn(f), sprawdzamy czy jest w
ktorejs p, i jesli jest, do odczytujemy dane z C(n:f:w).
A jak nie ma, to dobrze by bylo znalezc najdawniej uzywane n,
po czym ponownie przepisujemy ramke do C(n:f), i w odpowiednia
Sn(f) wpisujemy p.
To wszystko robi sprzet wbudowany w procesor, a moze wrecz zewnetrzny
kontroler, tylko w procesorze szybciej.
>Czyżby kompilator najpierw wykonywał wszelakia możliwe obliczenia,
>a następnie odpowiednio to kompilował? David Copperfield?
No, to sie raczej nowym procesorom przypisuje.
Predykcja adresow itp.
>> Że to wszystko wymaga czasu - no cóż, "taką mamy pamięć". Dlatego szybkie
>> procesory mają po kilka poziomów pamięci cache o różnych szybkościach,
>> dlatego rozdziela się cache programu i danych. Temu też służą algorytmy
>> przewidywania skoków i cała masa innej magii zaimplementowanej w nowoczesnym
>> procesorze.
>>
> Ano właśnie ta magia.. Na czym owa predykcja polega?
> Może się mylę, ale coś mi tu pachnie marketingowym bełkotem.
No, potrafi byc np taka ze jak jest skok warunkowy w tyl, to zaklada
sie ze on bedzie, i wstepnie odczytuje rozkaz spod adresu skoku. Bo to
jakas petla w programie jest, a petla jest po to aby sie petlic :-)
>> Na szybkość działania programu bardzo duży wpływ ma też to jak zaplanujesz
>> dostępy do pamięci. Numerycy bardzo nie lubią operować na tablicach
>> wielowymiarowych, bo to potrafi dodać sporo niepotrzebnych przeładowań
>> stron.
> Hah!! Właśnie ja tak robię. Dzięki paru GB pamięci, DSP mogę robić na
> najpodlejszym laptopie w czasie rzeczywistym.
Jak trzeba to trzeba i tego nie unikniesz. Zlosliwe jest tu raczej
mnozenie, potrzebne do obliczenia adresu, plus np to ze robisz funkcje
biblioteczna, ktora nie zna rozmiaru, wiec kompilator nie moze
zoptymalizowac, a czesto nawet nie umozliwia .
Patrzac na opis powyzej, to cache nie lubi:
a) obszarow polozonych pod "okraglymi" adresami, bo jak sie okaze ze
np jedna tablica jest pod 1A0000, druga pod 1B0000 a trzecia pod 1D000
i chcemy dodac z pierwszej i drugiej i zapisac w trzeciej, to za
wszystkie maja te sama czesc adresu f i koliduja w cache. Lepiej zdac
sie na dynamiczny przydzial pamieci, moze lepiej rozrzuci.
b) skakania po adresach co kilkanascie bajtow - my tu cachujemy cala
ramke, a program uzywa z niej 1 bajt i przeskakuje do nastepnej.
J.
Następne wpisy z tego wątku
- 05.10.14 15:52 s...@g...com
- 05.10.14 16:30 A.L.
- 05.10.14 16:45 A.L.
- 05.10.14 17:12 s...@g...com
- 05.10.14 18:19 A.L.
- 05.10.14 18:57 s...@g...com
- 05.10.14 19:50 Jacek Radzikowski
- 05.10.14 20:29 A.L.
- 05.10.14 21:14 s...@g...com
- 05.10.14 21:23 Marek Borowski
- 05.10.14 21:49 s...@g...com
- 05.10.14 22:38 bartekltg
- 05.10.14 23:25 J.F.
- 06.10.14 00:35 Marek
- 06.10.14 00:58 A.L.
Najnowsze wątki z tej grupy
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- Problem z odczytem karty CF
- 74F vs 74HCT
- Newag ciąg dalszy
- Digikey, SN74CBT3253CD, FST3253, ktoś ma?
- Szukam: czujnik ruchu z możliwością zaączenia na stałe
- kabelek - kynar ?
Najnowsze wątki
- 2025-01-17 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi
- 2025-01-17 Katowice => Senior Field Sales (system ERP) <=
- 2025-01-17 Wróblewo => Analityk finansowy <=
- 2025-01-17 Żerniki => Specjalista ds. Employer Brandingu <=
- 2025-01-17 pradnica krokowa
- 2025-01-17 Warszawa => International Freight Forwarder <=
- 2025-01-17 Warszawa => Helpdesk Specialist <=
- 2025-01-17 Kraków => User Experience Designer <=
- 2025-01-17 Nieustający podziw...
- 2025-01-17 zawsze parkuj tyłem do ulicy
- 2025-01-16 nie będzie naprawy pod blokiem?
- 2025-01-16 korytarz zycia
- 2025-01-16 Katowice => Key Account Manager (ERP) <=
- 2025-01-16 Środa Wielkopolska => Specjalista ds. public relations <=
- 2025-01-16 Poznań => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i