eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingsortowanieRe: sortowanie
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!news.task.gda.pl!not-for-mail
    From: Baranosiu <r...@w...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: sortowanie
    Date: Wed, 17 Oct 2012 20:28:30 +0000 (UTC)
    Organization: CI TASK http://www.task.gda.pl/
    Lines: 78
    Message-ID: <k5n4dd$ms1$1@news.task.gda.pl>
    References: <k59gbj$be7$1@node2.news.atman.pl> <k59jvr$360$1@node1.news.atman.pl>
    <k59q5n$np3$1@mx1.internetia.pl> <k5bc6k$4ea$1@mx1.internetia.pl>
    <50795bb6$0$1297$65785112@news.neostrada.pl>
    <k5bo04$n79$2@mx1.internetia.pl>
    <507968f5$0$1220$65785112@news.neostrada.pl>
    <k5hr1v$a5s$1@adenine.netfront.net>
    <s...@n...notb-home>
    <k5kbuv$rbj$1@node1.news.atman.pl>
    <c...@g...com>
    <f...@g...com>
    <k5m1uh$s3v$2@news.task.gda.pl>
    <e...@g...com>
    <e...@g...com>
    <k5maho$i8s$2@news.task.gda.pl>
    <8...@g...com>
    <k5md5l$p6n$1@news.task.gda.pl>
    <a...@g...com>
    <k5mga6$290$2@news.task.gda.pl>
    <c...@g...com>
    <k5mjui$boi$2@news.task.gda.pl> <k5mnbq$vak$1@mx1.internetia.pl>
    Reply-To: Baranosiu <r...@w...pl>
    NNTP-Posting-Host: user-46-113-67-145.play-internet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=iso-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: news.task.gda.pl 1350505710 23425 46.113.67.145 (17 Oct 2012 20:28:30 GMT)
    X-Complaints-To: a...@n...task.gda.pl
    NNTP-Posting-Date: Wed, 17 Oct 2012 20:28:30 +0000 (UTC)
    User-Agent: slrn/pre1.0.0-18 (Linux)
    Xref: news-archive.icm.edu.pl pl.comp.programming:200068
    [ ukryj nagłówki ]

    Dnia 17.10.2012 Edek Pienkowski <e...@g...com> napisał/a:
    >> Nie mam pojęcia co przyświecało "geniuszowi" który postanowił
    >> zaoszczędzić na pamięci rejestrów, przecież gdyby to były fizycznie
    >> osobne komórki pamięci w procesorze, to nie byłoby żadnych problemów z
    >> tym związanych.
    >
    > Rejestr to nie jest komórka pamięci. To znaczy może masz generalnie
    > rację, ale to nie jest takie proste. Na wszystkim większym od jakiegoś
    > małego Atomka istnieje "register rename", "retire unit", i pozostałe
    > elementy pipeline, a z tego wynika, że rejestr o ile w ogóle
    > istnieje jako komórka pamięci (jedna lub w ogóle) to łączy się z całą
    > architekturą wokoło. Być może MMX/FPU są prościej zaimplementowane,
    > być może też jest to historyczna naleciałość - nawet nie wiedziałem.

    Z technicznego punktu widzenia rejestr to taka sama pamięć jak RAM czy
    cache, a że nie jest podpięty do szyny adresowej i że jego
    szyna danych jest podpięta pod inne komponenty, to już inna
    bajka, tak po prostu jest w przypadku x86, ale już na przykład w
    niektórych procesorach RISC (choćby takie małe Atmegi z rdzeniem AVR)
    rejestry są jak najbardziej adresowalne. Takie pierdoły jak "register
    rename" wynikają z prostego faktu, że nawet tanie mikrokontrolery za
    20zł mają 32 ortogonalne rejestry (nawet Amiga 30 lat temu miała
    16 rejestrów 32-bitowych, choć nie w pełni ortogonalnych) a Intel robi
    "wielką rewolucję" że w 64-bitowej maszynie raptem dodaje 8
    dodatkowych rejestrów do 4 już istniejących (reszta to indeksowe i
    segmentowe) i tylko dlatego, że AMD to zrobiło wcześniej, więc trzeba
    było "dogonić" konkurencję :D

    Pipeline? W 1996 roku na studiach programowałem procesor
    SparcUltra, który (pomijając że w pełni 64-bitowy) wykonywał dwie
    instrukcje w jednym cyklu zegara i trzeba było uważać jak się pisało
    programy w assemblerze, bo jak się po CALL _adres nie dało instrukcji
    NOP, to drugi potok mógł zdążyć wykonać instrukcję za "CALL" zanim się
    skok wykonał :D Nie daj się złapać na Intelowski marketing, tam po
    prostu wewnętrznie siedzi "normalny" RISC na którym chodzi
    "interpreter" x86 tylko po to, żeby że tak powiem API procesora było
    zgodne w dół (zresztą Intel sam oficjalnie twierdzi, że nie jest to
    procesor hardwired, tylko działa na zasadzie mikrokodu :D).

    Programowałem w swoim życiu w assemblerze na kilkanaście różnych
    architektur, od małych mikrokontrolerów, które nie miały nawet pamięci
    RAM (jedyną pamięcią było 16 rejestrów, nawet stosu nie było,
    architektura harvardzka, program w pamięci EPROM), do
    wieloprocesorowych maszyn SunMicrosystems (EP10000 z 32 dwurdzeniowymi
    64-bitowymi, wielopotokowymi procesorami na pokładzie :D) i przyznam
    szczerze, że moim zdaniem dwa najgorzej zaprojektowane procesory z
    jakimi miałem do czynienia, to rodzina Zilog Z80 i rodzina Intel
    x86 (no i mój własnego projektu 6-bitowy procesor zbudowany na
    układach TTL, ale to inna bajka, po pół roku pracy cieszyłem się, że w
    ogóle ruszył, a zainspirował mnie projekt www.homebrewcpu.com :D)

    Podejrzewam (to tylko hipoteza), że w momencie gdy AMD zaczęło
    stanowić poważną konkurencję dla Intela (na samych początkach Intel
    współpracował z AMD i nawet zlecał im niektóre projekty :D), to trzeba
    było wymyśleć jakiś chwyt marketingowy i wymyślili MMX,
    zaimplementowali te instrukcje w mikrokodzie i wykorzystali rejestry
    FPU aby nie trzeba było hardware modyfikować :D No a potem zgodnie z
    filozofią pełnej zgodności wstecz, ta niedoróbka ciągnie się do
    dzisiaj (AMD miało odwagę zrezygnować z 3DNow! :D).

    > W każdym razie takie eax na pewno istnieje w asm i jako zapisany
    > przed context switchem stan (czy w core), ale istnienia fizycznego
    > dawno nikt nie udowodnił. Asm definiuje maszynę a procesor ją
    > implementuje, ale ma wolną rękę jak to robi.

    Definiuje to specyfikacja a nie assembler, assemblerów na dany
    procesor może być bardzo wiele i nie mam tu na myśli samych programów
    assemblujących czy mnemoniki rozkazów tylko kod maszynowy. Na
    przykład w procesorach zrealizowanych na bazie układów FPGA można w
    trakcie pracy zmieniać ich architekturę (nie poprzez podmianę
    mikrokodu, tylko fizycznie zmienić konfigurację bramek logicznych!).

    "Nikt nie widział eax" bo pewnie nikt do środka nie zaglądał :D A tak
    na serio, to Intele nie są procesorami tzw. hardwired (takie są na
    przykład ARM-y, AVR-y itd.) tylko mają prosty rdzeń i mikrokodem
    załatwiają resztę :D W sumie mogliby udostępnić możliwość ładowania
    własnego mikrokodu, wtedy każdy mógłby stworzyć swój assembler (choć
    od takich rzeczy, to akurat układy FPGA są lepsze :D).

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: