-
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).
Następne wpisy z tego wątku
- 18.10.12 01:33 Andrzej Jarzabek
- 18.10.12 02:30 Baranosiu
- 18.10.12 11:07 slawek
- 18.10.12 11:28 slawek
- 18.10.12 11:48 slawek
- 18.10.12 11:52 slawek
- 18.10.12 12:49 Edek Pienkowski
- 18.10.12 12:53 Michoo
- 18.10.12 13:09 Edek Pienkowski
- 18.10.12 13:11 Michoo
- 18.10.12 13:17 Edek Pienkowski
- 18.10.12 15:45 slawek
- 18.10.12 15:46 bartekltg
- 18.10.12 15:57 bartekltg
- 18.10.12 19:33 slawek
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-24 Aby WKOOOORWIĆ ekofaszystów ;-)
- 2024-11-22 OC - podwyżka
- 2024-11-22 wyszedł z domu bez buta
- 2024-11-22 Bieda hud.
- 2024-11-24 DS1813-10 się psuje
- 2024-11-23 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-11-23 Szczecin => QA Engineer <=
- 2024-11-23 Warszawa => SEO Specialist (15-20h tygodniowo) <=
- 2024-11-22 Warszawa => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-22 Warszawa => Senior Account Manager <=
- 2024-11-22 Warszawa => Key Account Manager <=
- 2024-11-22 Warszawa => DevOps Specialist <=
- 2024-11-22 Kraków => IT Expert (Network Systems area) <=
- 2024-11-22 Warszawa => Infrastructure Automation Engineer <=
- 2024-11-22 Warszawa => Presales / Inżynier Wsparcia Technicznego IT <=