-
Data: 2012-10-17 22:28:30
Temat: Re: sortowanie
Od: Baranosiu <r...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- 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
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-10-09 Próby RCB SMS alarmowy
- 2024-10-09 Bye Bye Aero2
- 2024-10-09 Gdańsk => Technical Lead ( (Java Background)) <=
- 2024-10-09 Białystok => Technical Leader (Java Background) <=
- 2024-10-09 Katowice => QA Engineer <=
- 2024-10-09 Gdynia => Data Scientist <=
- 2024-10-09 Warszawa => Data Scientist / Data Engineer (modele predykcyjne) <=
- 2024-10-09 Warszawa => Programista Full Stack .Net <=
- 2024-10-09 Warszawa => Senior Account Manager <=
- 2024-10-09 Warszawa => Key Account Manager <=
- 2024-10-09 Warszawa => Sales Development Representative (z j. niemieckim) <=
- 2024-10-09 masowe programowanie AVR
- 2024-10-08 Fajny pomysł na monitor z klawiaturą
- 2024-10-08 Warszawa => Sales Development Representative (in German) <=
- 2024-10-08 Warszawa => WordPress Developer + ACF <=