eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › CPU nie wykonujący pustych procedur
Ilość wypowiedzi w tym wątku: 15

  • 11. Data: 2009-07-25 22:07:08
    Temat: Re: CPU nie wykonujący pustych procedur
    Od: "Mariusz Marszałkowski" <b...@N...gazeta.pl>

    Wojciech Muła <w...@p...null.onet.pl.invalid> napisał(a):

    > On Sat, 25 Jul 2009 21:58:33 +0100 Bronek Kozicki <b...@s...net>
    > wrote:
    >
    > > P. Owca wrote:
    > > >>> i tak musi odczyta=E6 zawarto=B6=E6 pami=EAci, gdzie jest kod
    > > >>> programu pro-
    > > >>> cedury.
    > > >> To mog=B3oby by=E6 ta=F1sze ni=BF od=B3o=BFenie bie=BF=B1cego PC na st=
    > os, zmiana
    > > >> PC, wykonanie powrotu (odtworznie PC). Szczeg=F3lnie w procesorach
    > > >> potokowych, gdzie mo=BFna to wykona=E6 w miar=EA wcze=B6nie.
    > >=20
    > > wykonanie tych wszystkich instrukcji na nowoczesnych procesorach to=20
    > > jeden do kilkudziesi=EAciu cykli. Odczytanie pami=EAci RAM (znalezienie
    > > tego samotnego "ret" z pami=EAci kt=F3ra nie jest w cache) mo=BFe trwa=E6
    > > ponad 200 cykli.
    >
    > Chybiony argument - przecie=BF ta pami=EA=E6 i tak musi zosta=E6 odczytana
    > w celu wykonania instrukcji tam zapisanych.

    Jeśli interesuje Cię to na poważnie, to przygotuj dane (na ile to możliwe) i
    policz esperancje.

    Pozdrawiam



    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 12. Data: 2009-07-26 13:44:22
    Temat: Re: CPU nie wykonujący pustych procedur
    Od: Bronek Kozicki <b...@s...net>

    Wojciech Muła wrote:
    > On Sat, 25 Jul 2009 21:58:33 +0100 Bronek Kozicki <b...@s...net>
    > wrote:
    >
    >> P. Owca wrote:
    >>>>> i tak musi odczytać zawartość pamięci, gdzie jest kod
    >>>>> programu pro-
    >>>>> cedury.
    >>>> To mogłoby być tańsze niż odłożenie bieżącego PC na stos, zmiana
    >>>> PC, wykonanie powrotu (odtworznie PC). Szczególnie w procesorach
    >>>> potokowych, gdzie można to wykonać w miarę wcześnie.
    >> wykonanie tych wszystkich instrukcji na nowoczesnych procesorach to
    >> jeden do kilkudziesięciu cykli. Odczytanie pamięci RAM (znalezienie
    >> tego samotnego "ret" z pamięci która nie jest w cache) może trwać
    >> ponad 200 cykli.
    >
    > Chybiony argument - przecież ta pamięć i tak musi zostać odczytana
    > w celu wykonania instrukcji tam zapisanych.

    no właśnie - i dlatego nie warto optymalizować wykonania instrukcji.
    Optymalizowany jest dostęp do pamięci (predykcja skoków, cache itd.),
    aby zamiast kilkudziesięciu było kilka albo jeden, oraz aby tych ponad
    200 cykli czekania na pamięć nie było.


    B.


    --
    Remove -trap- when replying. Usun -trap- gdy odpisujesz.


  • 13. Data: 2009-07-26 16:23:51
    Temat: Re: CPU nie wykonujący pustych procedur
    Od: Adam Przybyla <a...@r...pl>

    Wojciech Muła <w...@p...null.onet.pl.invalid> wrote:
    > Czy jest jakiś procesor, który "widząc", że pierwszym
    > rozkazem procedury jest powrót z podprogramu, w ogóle
    > nie przekazuje tam sterowania?
    ... tym zajmoje sie kompilator, przyklad z gcc:
    smtp:/home/adam>gcc -S x.c
    smtp:/home/adam>mv x.s x.s1
    smtp:/home/adam>gcc -O2 -S x.c
    smtp:/home/adam>diff x.s x.s1
    3d2
    < .p2align 4,,15
    12c11
    < .section .rodata.str1.1,"aMS",@progbits,1
    ---
    > .section .rodata
    16d14
    < .p2align 4,,15
    28a27
    > call x
    smtp:/home/adam>cat x.c
    #include <stdio.h>
    void x() { };
    int main() {
    printf("123\n");
    x();
    }
    smtp:/home/adam>

    jak widzisz, kod wygenerowany przy optymalizacji -O2 nie wywoluje procedury
    pustej. Inne kompilatory maja tak samo IMHO. Z powazaniem
    Adam Przybyla


  • 14. Data: 2009-07-26 16:39:19
    Temat: Re: CPU nie wykonujący pustych procedur
    Od: Jacek Czerwinski <...@...z.pl>

    Adam Przybyla pisze:
    > Wojciech Muła <w...@p...null.onet.pl.invalid> wrote:
    >> Czy jest jakiś procesor, który "widząc", że pierwszym
    >> rozkazem procedury jest powrót z podprogramu, w ogóle
    >> nie przekazuje tam sterowania?
    > ... tym zajmoje sie kompilator, przyklad z gcc:
    > smtp:/home/adam>gcc -S x.c
    > smtp:/home/adam>mv x.s x.s1
    > smtp:/home/adam>gcc -O2 -S x.c
    > smtp:/home/adam>diff x.s x.s1
    > 3d2
    > < .p2align 4,,15
    > 12c11
    > < .section .rodata.str1.1,"aMS",@progbits,1
    > ---
    >> .section .rodata
    > 16d14
    > < .p2align 4,,15
    > 28a27
    >> call x
    > smtp:/home/adam>cat x.c
    > #include <stdio.h>
    > void x() { };
    > int main() {
    > printf("123\n");
    > x();
    > }
    > smtp:/home/adam>
    >
    > jak widzisz, kod wygenerowany przy optymalizacji -O2 nie wywoluje procedury
    > pustej. Inne kompilatory maja tak samo IMHO.
    rzekłeś wodu:
    a) kompilatory (wątek chyba jest zainteresowany CPU)
    b) funkcja lokalna w jednostce kompilacji (module) bo tylko wtedy
    kompilator posiada tę wiedzę. Ciekaw będę twojego testu, czy
    kwalifikatory przy funkcji x coś zmieniają (np. static ale i
    niestandardowe) lub f. x jest zewnętrzna.

    W podanych warunkach minusów nie ma, tylko można zyskać.


  • 15. Data: 2009-07-26 16:48:05
    Temat: Re: CPU nie wykonujący pustych procedur
    Od: Adam Przybyla <a...@r...pl>

    Jacek Czerwinski <...@...z.pl> wrote:
    > Adam Przybyla pisze:
    >> Wojciech Muła <w...@p...null.onet.pl.invalid> wrote:
    >>> Czy jest jakiś procesor, który "widząc", że pierwszym
    >>> rozkazem procedury jest powrót z podprogramu, w ogóle
    >>> nie przekazuje tam sterowania?
    >> ... tym zajmoje sie kompilator, przyklad z gcc:
    >> smtp:/home/adam>gcc -S x.c
    >> smtp:/home/adam>mv x.s x.s1
    >> smtp:/home/adam>gcc -O2 -S x.c
    >> smtp:/home/adam>diff x.s x.s1
    >> 3d2
    >> < .p2align 4,,15
    >> 12c11
    >> < .section .rodata.str1.1,"aMS",@progbits,1
    >> ---
    >>> .section .rodata
    >> 16d14
    >> < .p2align 4,,15
    >> 28a27
    >>> call x
    >> smtp:/home/adam>cat x.c
    >> #include <stdio.h>
    >> void x() { };
    >> int main() {
    >> printf("123\n");
    >> x();
    >> }
    >> smtp:/home/adam>
    >>
    >> jak widzisz, kod wygenerowany przy optymalizacji -O2 nie wywoluje procedury
    >> pustej. Inne kompilatory maja tak samo IMHO.
    > rzekłeś wodu:
    > a) kompilatory (wątek chyba jest zainteresowany CPU)
    > b) funkcja lokalna w jednostce kompilacji (module) bo tylko wtedy
    > kompilator posiada tę wiedzę. Ciekaw będę twojego testu, czy
    > kwalifikatory przy funkcji x coś zmieniają (np. static ale i
    > niestandardowe) lub f. x jest zewnętrzna.
    >
    > W podanych warunkach minusów nie ma, tylko można zyskać.
    ... hmm, JIT moze miec ta wiedze. Bo jesli jest zewnetrza,
    to nie ma co liczyc na funkcje wrozki kompilatora;-)
    Z powazaniem
    Adam Przybyla

strony : 1 . [ 2 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: