Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Shark19

Konstruujemy mega wydajny procesor.

Rekomendowane odpowiedzi

Obecnie w procesorach x86 dotępnych na rynku stosowane są trzy, różniące się od siebie architektury

 

- K8

- NEt Burst

- Architektura nazywana potocznie "P7", w mobilnyh procesorach Intela ( Banias, Dothan, Yonach )

 

 

Po Kolei :

 

1 ) Architektura Athlonów 64 - K8.

 

Architektura ta ma potężną moc obliczeniową - dysponuje aż trzema jednostkami ALU i zaawansowaną nierównoważną jednostą zmienno-przecinkową. Psiada 6 potoków wykonawczych:

- 3 główne potoki wykonawcze - wykonujące operacje arytmetyczno-logiczne

- 3 potoki wykonujące operacje zmiennoprzecinkowe, instrukcje MMX oraz instrukcje z grupy 3DNow

W skład zaawansowanej, superskalarnej jednostki zmiennoprzecinkowej, wchodzi 3 koprocesory ( FPU ) - jeden z nich wykonuje instrukcje MMX i 3DNow, drugi zmiennoprzecinkowe dodawanie i mnożenie, a trzeci służy do bezobliczeniowej manipulacji danymi zmiennoprzecinkowymi.

Ponadto architektura ta dysponuje pojemną pamięcią podręczną pierwszego poziomu - 128 kb pamięci L1 , z rozdziałem na osobną pamięc instrukcji i danych ( architektura Harvardza ).

 

W K8, tak jak i we wcześniejszych procesorach AMD ( z rodziny k7 i K6 ), stosowany jest charakterystyczny tryb dekodowania instrukcji kodu x86 – dekoder przetwarza je na makrooperacje typu VLIW (Very Long Instruction Word), z których każda zawiera jeden lub dwa rozkazy x86. Markooperacje VLIW zapisywane sa w kolejnosci od ostatniej wykonanej w globalnym liczniku odwołań, który ma pojemność 16 tyś pozycji.

Instrukcje tak jak i w architekturze K6 I P6 ( Pentium 3 ) wykonywane sa w sposób spekulatywny ( niekolejny ). Rozwiązanie to pozwala na lepsze wykorzystanie jednostek wykonawczych, co przekłąda sie na wzrost wydajności procesora.

Dekoder instrukcji w architekturze k8 pracuje trófazowo, przekazując makrooperacje do odpowiednich potoków bloku wykonawczego.

Potoki architektury K8 są nierównoważne, tzn mają zmienną ilość faz. Potoki arytmetyczno-logiczne są równoważne - mają taka samą ilośc faz działania, wynoszącą 12.

Z kolei potoki zmienno-przecinkowe są nierównoważne - w zależności od wykonywanych operacji mają zmienną ilość faz, wynoszącą od 14 do 17.

Architektura K8 cechuje się więc zmienną ilością faz, jest architekturą dwunasto-fazową dla operacji stałoprzecinkowych oraz od czternasto do siedemnasto-fazową dla operacji zmienno-przecinkowych.

 

Architektura k8 od podstaw projektowana była jako architektura wielordzeniowa. W tym celu zaopatrzoną ją w specjalny krzyżowy przełącznik, Cross Barr Switch. W procesorze znajduje się on pomiędzy rdzeniami a Cache L2 i umożliwa bezpośrednią komunikację i wymanę danych pomiędzy rdzeniami z pominięciem pamięci L2, dynamiczny przydział cache L2 dla każdego z rdzeni.

Pozatym wielordzeniowe procesory k8, niezależnie od ilości rdzeni posiadają jedną specjalną jednostkę służącą do komunikacji z systemem ( nazywaną System Request Intarface ) a dane rozdzielane są pomiędzy rdzenie przez Cross barr Switch, tak aby maxymalnie zrównoważyc stopień wykorzystania każdego z rdzeni.

Gdyby jednostek komunikujących się z chipsetemi pamięcią RAM było tyle ile rdzeni ( tak jest w Pentium D ), każda z nich "biła by się" z innymi o dane, co nie wpływało by najlepiej na wydajność całego procesora.

 

Samo otoczenie procesora K8 ( w znaczeniu logicznym, nie fizycnym ) jest bez precedensu - najnowocześniejszym i rewolucyjnym.

Architektura K8 posiada zintegorwany kontroler pamieci RAM. Dzięki niemu, procesor wymienia dane z pamięcią RAM bezpośrednio ( bez udziału chipsetu ) przez co skróceniu nawet o 40% ulegają opóźnienia w dostępie do danych umieszczonych w pamięci.

Zamiast przestarzałej magistrali FSB, która w innych procesorach jest już wąskim gardłem, w K8 mamy magistralę Hyper-Transport. Jest to superszybka 128 bitowa szeregowa magistrala służąca do komunikacji z chipsetem i poprzez chipset innymi urządzeniami systemu, o przeepustowość 8 GB/s w jedną stronę, a więc 16 GB/s w obie strony.

 

 

 

2 ) Architektura Pentium 4 ( NEt Burst )

 

Architektura Net Burst tak jak i architektura procesorów Pentium II i Pentium III ( architektura P6 ) posiada 4 potoki wykonawcze, 2 dla operacji zmienno-przecinkowych, i dwa dla operacji arytmetyczno-logicznych.

Jednostak zmienno przecinkowa, w której skład wchodzą 2 koprocesory, w Net Busrt została, wsparta nowym zestawem instrukcji SIMD - nazwanym SSE2 i liczącym sobie aż 144 instrukcje. Dodatkowo FPU Prescotta dysponuje jeszcze dodatkowymi 11 instrukcjami wchodzącymi w skład zestawu SSE3.

 

W Wiliamette/Northwoord Intel zrezygnował z 2 jednostek ALU, i zastosował jedną taktowaną 2-krotnie szybciej niz sam procesor.

( PS. jest to rozwiązanie dla mnie zupełnie niezrozumiałe - wprawdzie jedna jednostka ALU taktowana 2 krotnie szybciej niż procesor będzie mogła wykonać więcej operacji od pojedyńczej jednostki taktowanej z tą samą częstotliwościa co procesor, to jednak nigdy nie jest w stanie wykonac tyle samo obliczeń co 2 jednostki taktowane tak samo szybko jak procesor, gdyż większść instrukcji będzie dostarczana do niej w co drugim takcie jej zegara. )

 

W Prescottcie cofnięto tą zmianę i powrócono do dwóch jednostek ALU taktowanych z pojedynczą częstotliwościa CPU.

Dodatkowo jednostki ALU Pescotta mają możliwość wykonywania operacji mnożenia liczb stałoprzecinkowych. Dotychczas operacje te wykonywane były przez jednostki zmiennoprzecinkowe procesora i odsyłane spowrotem do jednostek stałoprzecinkowych.

Mnożenie liczb stało przecinkowym jest dośc częstym działaniem wykonywanym przez procesor, więc na tej zmianie Prescoot zyskał wiele wydajności

 

Potoki Net Bursta liczą sobie 20 faz w przypadku Wiliamette/northwood, oraz aż 31 faz w Prescottcie i jego pochodnych. Długi Potok pozwola na uzyskanie wysokich częstotliwości zegara dzięki temu, że zwiekszenie ilości faz działania dekodera instrukcji i układów wykonawczych procesora powoduje rozłożenie pojedyńczej operacji na więcej kroków ( etapów - czyli faz ), a zatem pojedyńcze kroki sa upraszczane przez co dają sie wykonać w mniejszych przedziałach czasu, co z kolei powoduje ze takty zegara procesora mogą następować szybciej po sobie.

 

Wydłużanie potoku wykonawczego nie przynosi jednak tylko samych korzyści. Instrukcje skoku do innego fragmentu kodu programu i instrukcje warunkowe powodują wstrzymanie potoków , opróżnienie ich zawartości i ponowne pobieranie danych od momentu wykonania tejże instrukcji. Im dłuższy potok tym wieksze prawdopodobieństwo wystąpienia w nim takiej instrukcji, i tym dłuzej trrwa jego ponowne napełnianie danymi. A to przekłada sie na spadek wydajności procesora.

 

Dlategp Net Burst posiada zupełnie nową pamięć podręczna cache L1 dla instrukcji, nazwaną Execution Trace Cache.

Pamięć ta w porównaniu ze zwykłą pamięcią umieszczona jest nie przed lecz przy potoku wykonawczym za dekoderem instrukcji, i zawiera juz przedekodowane mikrorozkazy procesora.

Rozwiązanie to zwiększa szybkośc wykonywania kodu, gdyż w trakcie wykonywania ciągu instrukcji, po wykonaiu instrukcji skoku lub warunkowej i za każdym kolejnym razem wykonywania tej samej instrukcji nie trzeba jej ponownie dekodować . Pomijane sa więc fazy potoku w których następuje dekodowanie instrukcji, czyli Trace Cache efektywnie skraca długość potoku.

To nie jedyna zaleta Execution Trace Cache.

Oprócz przyśpieszenia wynikłego z pominięcia faz dekodowania, mikroinstrukcje są w niej zapisywane nie w kolejności w jakiej "wyszły" z dekodera instrukcji, lecz według przewidywanej kolejności ich wykonywania. Takie rozwiązanie zwiększa co prawda straty czasu w przypadku błędów predykcji, jednak skraca czas wykonywania całego ciągu instrukcji, gdyż w więkoszości przypadków nie jest konieczna zamiana ich kolejności w trakcie ich wykonywania przez układy REX ( REorder eXcution ).

Według Intela rozwiązanie to przynosi kilku-procentowy wzrost wydajności.

 

W Prescottcie pamięć Trace Cache została powiększona. Dodatkowo Intel zrobił sporo, by przechowywane w Trace Cache Prescotta instrukcje były dokładnie takie, jakich w danej chwili może potrzebować procesor.

 

 

Kolejną cechą architektury Net Burst jest zaawansowany system prognozowania nazwany Adwenced Dynamic Execution.

Oprócz systemów przewidywania i zmiany kolejności wykonywania instrukcji, oraz powiązanych z nimi układów zaządzających pamiecią trace cache, składają sie na niego:

bardzo rozbudowany system predykcji rozgałęzień, który cechuje sie dokładnością predykcji przekraczającą 95 %, oraz układ pobrań wyprzedzających - który działa w oparciu o systemy przewidywania kolejności wykonywania instrukcji kolejkujące pamiec Trace cache.

Układ ten, wiedząc jakie instrukcje zostana następnie wykonane może przyśpieszyć ładowanie potrzebnych danych z pamieci L2 do dekodera.

 

W Prescottcie system tem uległ dalszemu udoskonaleniu: poprawiono dokładność systemów analizy i przewidywania, udoskonalono też jednostki predykcji rozgałęzień programu, zwiększająć trafność predykcji oraz umożliwiając dokonywanie predykcji z wyprzedzeniem, np. systemy predykcji Prescotta potrafią decydować o rozpoczęciu dekodowania ciągu instrukcji stanowiącego wyjście z pętli lub gałęzi programu jeszcze przed wypełnieniem warunku skoku.

Zdekodowane odgałęzienie programu trafia wtedy do Execution Trace Cache, dzięki czemu w chwili wypełnienia warunku skoku procesor pobiera dalsze operacje bezpośrednio z Trace Cache, i nie musi czekać aż zostaną one zdekodowane.

 

Ponadto w Net burst zastosowano szynę słuzącą do komunikacji z chipsetem, nazywająca sie AGTL+ .

AGTL jest w stanie przesłac 4 słowa danych w jednym takcie zegara. Jednak w trybie x4 przesyłane są wyłącznie dane, zaś adresy transmitowane są po dwa na takt zegara, czyli z podwojoną częstotliwością taktowania szyny.

 

Wszytskie procesory zbudowane w opraciu o architekturę Net Burst począwszy od Northwooda ( Wiliamette nie miało HT ) posiadają technologię Hyper Threading, któtra dzieli procesor na dwa wirtualne procesory ( korzystające z tych samych jednostek obliczeniowych ) rozdzielające dane pomiędzy siebie.

 

 

 

3 ) Architektura procesorów Pentium-M

 

Architektura procesorów Pentium-M powstała w oparciu o architekture P6 stosowana w procesorach Pentium II oraz Pentium III. Czasem spotyka sie z nazywaniem jej jako "P7".

Pentium-M powstał na bazie procesora Pentium III Tualatin.

 

Posiada więc ona 4 potoki 12-fazowe potoki wykonawcze - 2 dla operacji stało-przecinkowych i 2 zmienno-przecinkowych oraz 2 jednostki wykonawcze arytmetyczno-logiczne ( ALU ) i 2 jednostki wykonawcze zmienno-przecinkowe ( koprocesory - FPU ). Instrukcję wykonywane są w sposób niekolejny ( spekulatywny ). Jednostki zmienno przecinkowe Pentium-M zostały usprawnione.

 

Architektura ta przejeła z architektury Net Burst, stosowanej w Pentium 4, pamięc podręczną L1 Trace Cache. W przypadku tej architrektury ma ona pojemności dwa razy większą niż w Prescottcie, wynoszącą 32 tyś instrukcji ( 32 k uOps ), a instrukcje nie są w niej zapisywane w kolejności w jakiej przewidywane jest ich wykonanie - tak jak to ma miejsce w Net Burst, lecz w kojelności z jakiej wychodzą z dekodera instrukcji.

Zastosowanie systemów przewidywania kolejności wykonywania instrukcji do ułożenia mikroinstrukcji w Trace Cache według przewidywanej kolejności ich wykonywania, mija sie z celem ze względu na zwiekszoną pojemność tej pamieci, a dodatkowo niepotrzebnie skomplikowało by układ i znacznie zwiększylo jego rozmiary i wydzielanie ciepła.

Oprócz Trace Cache architektura ta przejela z Net Burst także szyne AGTL+ słuząca do komunikacji z chipsetem.( Jak wiadomo AGTL+ jest zdolna przesłac 4 słowa danych w jednym takcie zegara. ), oraz instrukcje SSe2/SSe3

 

Zastosowana w Pentium-M technologia Micro-op Fusion analizuje wszystkie mikrooperacje i w miarę możliwości równolegle wprowadza (łączy ze sobą lub zastępuje inną) po dwie-trzy niezależne instrukcje do jednego potoku wykonawczego. Podobna metoda stosowana jest co prawda w procesorach Athlon ( VLIW ), lecz w odróżnieniu od układów AMD, mobilne procesory Intela potrafią niezależnie przekolejkowywać wykonywane operacje i w miarę dostępności przenosić je w dowolny sposób między poszczególnymi jednostkami wykonawczymi. Takie rozwiązanie znacząco zwiększa stopień wykorzystania jednostek wykonawczych, a więc wpływa dodatnio na końcową wydajność procesora.

Oprócz tego Pentium-M posiada dedykowanego menedżera stosu (Dedicated Stack Manager - DSM). Wszystkie instrukcje dotyczące stosu, takie jak np. push, pop, call i ret, wykonywane są właśnie przez moduł DSM. Zaopatrzenie Pentium-M w takiego "zarządce" stosu było konieczne, bo dowolne przekolejkowywanie mikrooperacji nie byłoby możliwe, gdyby nie sprawne zarządzanie stosem.

DSM ma oprócz tego nieznaczyny wpływ na wydajność procesora, który po części jest zwolniony z obsługi stosu i może się zająć wyłącznie przetwarzaniem zasadniczego programu. znajdującego się w jednostkach wykonawczych.

Inżynierowie Intela twierdzą, że mechanizm DSM daje do 5% wzrostu wydajności.

 

W Pentium-M zastosowano unowocześniony system predykcji rozgałęzień, nazwany Advanced Branch Prediction. Zamiast metod stosowanych dotychczas w Pentium II i III, zastosowano sprawdzone i skuteczne metody analizy, przewidywania i predykcji znane z Pentium 4.

Mało tego, systemy przewidywania i predykcji, usprawnione są same w sobie, to jeszcze mają zdecydowanie większe możliwości, bowiem zastosowano system łączący algorytmy analizy lokalnej z globalną, co sprawia że przeczesywana jest znaczna część kodu programu, co niepozostaje bez wpływu na wydajność, która dzięki temu rozwiązaniu znów zwiększa sie o kilka %

Dodatwo usprawnione zostały systemy odpowiedzialne za prefetching ( pobrania wyprzedzające )

 

Wszystkie te zmany są znaczące, a jednak spowodowały niewielki wzrost liczby tranzystorów względem Pentium III Tualatin ( z 11mln w Tualatinie do 16mln w Baniasie - nie licząc cache L2 )

 

Dodatkowo Pentium-M posiadają zaawanosowane systemy oszczędzania energi - potrafią całkowicie wyłączać niewykorzystywane w danym momencie bloki cache, rejestry, i inne obszary rdzenia.

 

 

______________________________________________________

 

 

Mamy więc Net Bursta, o stosunkowo małej mocy obliczeniowej ( 4 jednostki wykonawcze i 4 długie potoki ) ale z rozbudowanymi i prawie nieomylnymi systemami przewidywania i predykcji rozgałęzień, potrafiącego z wyprzedzeniem decydowac o rozpoczęciu dekodowania danych które będą potrzebne za chwilkę jednostka wykonawczym, czy ciągu instrukcji stanowiącego wyjście z pętli lub gałęzi programu jeszcze przed wypełnieniem warunku skoku

 

Pentium-M o stosunkowo średniej mocy obliczeniowej ( 4 jednostki wykonawcze i 4 krótkie potoki ), sprawnie zarządzającego stosem i potrafiącego dowolnie przekolejkowac instrukcje i ustawiać je tak, aby maxymalnie wykorzystywać swoje jednostki wykonawcze, ale nie tak rozbudowanego i znacznie chłodniejszego dzieki pominięciu rozbudowanych i komplikujących procesor systemów prognozowania i przewidywania rodem z Prescotta, i nie 64 bitowego.

 

Athlona, o dużej mocy obliczeniowej ( 6 jednostek wykonawczych, i 6 w miare krótkich potoków wykonawczych ), z doskonałymi rozwiązaniami w pracy wielordzeniowej i w komunikacji zewnętrznej, ale tracącego sporo swojej wydajności prez słabe panowanie nad bałaganem instrukcji, słabe systemy przewidywania i predykcji rozgałęzień programu.

 

 

 

Jest to wiec Kupa rozwiązań, w 3 różnych architekturach. Gdyby tak połączyć je logicznie i z sensem dodając jeszcze jakieś unowocześnienia, wyszedł by niezły procesor.

Oczywiście nie można przesadzic, bo wyszedłby procesor, którego jeden rdzeń składa się z 300 mln tranzystorów i jest jeszcze gorętszy od Prescotta.

 

 

Z czego zrezygnować ?

Napewno z HT, w procesorach wielordzeniowych stosowanie HT mija się z celem, co pokazuje dobrze przykład Pentium D z aktywnym HT, które niekiedy przez aktywne HT zwalnia, zamiast przyśpieszać. Pozatym w procesorach z krótkimi potokami HT przynosi ( jak twierdzi AMD ) znikomy wzrost wydajności, a tylko niepotrebnie komplikluje układ.

Pozatym zrezygnować trzeba z zaawansowanych systemów prognozowania rodem z Prescotta, stosując tylko niektóre rozwiązania z całego kompleksowego i rozbudowanego systemu jaki znajduje się w Pentium 4. Rozwiżania te znacznie komplikuja procesor i wymagają dużej ilości tranzystorów co wpływa na duże ilości wydzielanego ciepła.

 

 

Za podstawę dla takiego procesora posłuży Athlon 64 X2, dzięki doskonałym systemom pracy wielordzeniowej i komunikacji zewnętrznej, oraz dużej mocy obliczeniowej trzeba jedynie umożłiwić procesorowi ją właściwie wykorzystać ( poprawić trafność predykcji, przewidywania, i zastosowac systemy działajace z wyprzedzeniem ).

 

 

Przechodzimy więc do rzeczy :

 

Trzeba podobnie jak w Prescottcie umożliwić w potokach stałoprzecinkowych procesora wykonywanie operacji mnożenia liczb stałoprzecinkowych. Jestem jednak za innym sposobem rozwiązania tego, niż to zostało zrobione w Prescottcie, gdzie znacznie rozbudowano jednostki ALU. Wprawdzie jednostki ALU Prescotta mnożą liczby stało przecinkowe w czasie krótszym niż wymagało by to przesłanie tych instrukcji do jednostek zmienno przecinkowych i oczekiwanie na wynik, to jednak wciąż stosunkowo długo.

Poprostu w potokach stałoprzecinkowych trzeba dodać prosty koprocesor mnożący do jednostki ALU, zależny od niej i wspomagający tą jednostkę. W momencie "przyjścia" instrukcji wymagającej mnożenia liczb stało przecinkowych, koprocesor zajmował by się mnożeniem a ALU pozostałymi zadaniami, co w efekcie skracało by jeszcze czas wykonywania mnożenia liczb zmnienno-przecinkowych przez ALU.

 

Kolejna zmiana : Umożliwiamy procesorowi dowolną zmianę kolejności wykonywanych instrukcji, poprzez dowolne przekolejkowanie i możliwość przenoszenia instrukcji dowolnie pomiędzy poszczególnymi jednostkami wykonawczymi ( częśc rozwiązania Micro-op-Fusion z Pentium M ).

TO wpływa na lepsze wykorzystanie wszytskich 6 jednostek wykonawczych rdzenia.

Oprócz tego dodajemy mechanizm DSM ( Menedżer stosu ), stosowany w Pentium M.

 

 

I teraz uwaga: czas na implementacje Trace Cache drugiej generacji ( pomysł własny - wszelkie prawa zastrzerzone ).

Tutaj słowa wyjaśnienia. Zarówno w Pentium 4, jak i w Pentium-M, Trace Cache znajduje się w potoku zaraz za dekoderem. Pentium 4 korzystając z rozbudowanych i skomplikowanych systemów kolejkujących Trace Cache, ustawia w niej instrukcje w przewidywanej kolejności ich wykonywania. Następnie w potoku, w dalszej drodze do jednostek wykonawczych kolejność instrukcji jest zmieniania przez układy REX ( REorder Excution ) jezeli przewidywanie nie było trafne.

Natomiast Pentium-M nie korzysta z tych systemów gdyż znacznie zwiększają one rozmiar procesora i zużycie energi, a instrukcje w Trace Cache zapisuje w kolejności w jakiej wychodzą z dekodera instrukcji, jednocześnie kolejkując je i zmieniając kolejność ich wykonywania później ( realizowane przez technologię Micro-op Fusion ).

 

Trace Cache drugiej generacji nie znajduje się już tylko za dekoderam. Instrukcje zanim trafią do Trace Cache 2 generacji, przechodzą przez dekoder oraz zmieniana jest ich kolejność wykonywania przez układy REX ( REorder Excution ) ( w Pentium 4 realizowane za Trace Cache ), bez użycia skomplikowyach systemów rodem z Prescotta zwiększających powierzchnię krzemową i zużycie energi.

Rozwiązanie to,w porównaniu do wykłego Trace Cache zwiększa szybkośc wykonywania kodu, gdyż w trakcie wykonywania ciągu instrukcji, po wykonaiu instrukcji skoku lub warunkowej i za każdym kolejnym razem wykonywania tej samej instrukcji ( tzw. Pętla, lub powtarzające sie instrukcje ) nie trzeba nie tylko ponownie dekodować instrukcji, ale też ponownie zmieniać kolejność ich wykonywania.

Pomijane sa więc fazy potoku w których następuje dekodowanie i zmiana kolejności instrukcji, co istotnie wpływa na zwiekszenie szybkości przetwarzania danych przez procesor.

 

Do tego implementujemy zaawansowane i nieomylne systemy predykcji rozgałęzień programu stosowane w Prescottcie, mogące dokonywac predykcji z wyprzedzeniem, oraz układ pobrań wyprzedzających, który stara się przyśpieszyć wczytywanie instrukcji które będą zaraz potrzebne jednostą wykonawczym

 

Na koniec pamieć cache L2 zostaje zaopatrzona w najnowszą technologię AMD - SOI-Memory pozwalającą zwiększyć jej pojemność 5-krotnie pozostając przy takiej samej ilości tranzystorów i nie zwiększając zapotrzebowanie na enegrię, co w sumie daje 5 Mb cache L2 na rdzeń, czyli 10 Mb na oba rdzenie. Całość produkowana w technologii 65 nm.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

no to lutownice w łape i do boju... :P

 

a tak na poważnie to twoja wiedza imponuje. nie wiem gdzie pracujesz/ co studiujesz ale naprawde zdobycie tych wszystkich informacji na temat budowy i działania procesorów było baaardzo trudnym i czasochłonnym zajęciem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jak zrobić dobry procesor.

 

Bierzemy Jedno jądro Itanium2 i dodajemy do niego 2 jądra Northwood do tego 4MB wspólnej cache L2. Wszystko to zmniejszamy do 65nm. FSB 1.6GHz. Chipset obsługuje 2 kanały pamięci. Jeden o dużej wydajności ale niewielkim rozmiarze robiący za cache L3, drógi o mniejszej wydajności ale dużym rozmiarze będący konwencjonalnym RAMem. Procek ma zintegrowane chłodzenie wodne co umozliwia taktowanie 5GHz dla jąder NetBurst i 2.5GHz dal IA64.

 

W kolejnej generacji robimy 2 jądra IA64 i 1 NetBurst, w następnej już tylko IA64. MS robi Viste na x86 i IA64. kolejny Windows jest już tylko IA64. W tym momęcie kończymy przygodę z x86.

 

No ale niestety można sobie tylko o tym pomażyć.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Jak zrobić dobry procesor.

 

Bierzemy Jedno jądro Itanium2 i dodajemy do niego 2 jądra Northwood do tego 4MB wspólnej cache L2. Wszystko to zmniejszamy do 65nm. FSB 1.6GHz. Chipset obsługuje 2 kanały pamięci. Jeden o dużej wydajności ale niewielkim rozmiarze robiący za cache L3, drógi o mniejszej wydajności ale dużym rozmiarze będący konwencjonalnym RAMem. Procek ma zintegrowane chłodzenie wodne co umozliwia taktowanie 5GHz dla jąder NetBurst i 2.5GHz dal IA64.

 

W kolejnej generacji robimy 2 jądra IA64 i 1 NetBurst, w następnej już tylko IA64. MS robi Viste na x86 i IA64. kolejny Windows jest już tylko IA64. W tym momęcie kończymy przygodę z x86.

 

No ale niestety można sobie tylko o tym pomażyć.

 

Zintegrowane chłodzenie wodne, tzn jak ? małe cieniutkie rureczki z wodą wewnątrz rdzenia ?

 

 

Zgadzam się że x-86, kiedyś podstawa i nowoczesnośc, dziś jest już tylko zbędnym ograniczeniem, a procesor choćby niewiadomo jak złożony, musi emulować starego trupa 8086.

 

Niestety osoby które wymyślały x-86 ( a był to Intel ) nie wpadły na pomysł aby instrukcje miały równą długość i zaiwerały informację o sposobie w jakim powinny być wykonane. To podstawa, bo nie można już wymagac od myśli końca lat siedemdziesiątych, żeby stworzyli instrukcje które łatwo dadzą się przetwarzać równolegle - bo wtedy przetwarzanie równoległe jeszcze nie śniło się nikomu.

 

Niestety ale w drodze zgodności wstecznej, każdy nowy procesor musi być zgodny programowo z wszystkimi dotychczas wyprodukowanymi, aż do 8086, i zawierać funkcje które już wogóle nie są wykorzystywane, jak np. większość funkcji SISD, wyparta przez instrukcje operujace na kilku danych jednocześnie z gatunku SIMD.

 

Właśnie z powodu x-86, w obecnych procesorach mamy specjalne dekodery, systemy zmiany przemianowywania rejestrów ( ROB - Re0rderBuffer ), systemy zmiany kolejności instrukcji, systemy predykcji rozgałęzień programu i wiele innych, ogromnie komplikujących budowę procesorów.

 

Przetwarzanie potokowe wespół z platformą X - 86 sprawiają że najwięcej pracy mają systemy predykcji rozgałęzień i przewidywania , te niestety nie są doskonałe i zdażają im się błędy , a chybienie w przewidywaniach sporo kosztuje. Instrukcje skoku i warunkowe powodują opróżnianie potoków i ponowne ich napełnianie . W procesorze panuje mały bałagan powodujący że z przyczyn powyższych ( i nietylko ) jednostki obliczeniowe nie są do końca wykorzystywane.

 

Te wsyztskie "bajery" były by zbędne w przypadku stosowania instrukcji przystosowanych do równoległego przetwarzania, o równej długości i zawierających informację o sposobie własnego wykonywania.

 

 

Sądze że najwyższy czas wymyślić coś nowego, żeby CPU mogły wreszcie bez dodatkowych mega-uniedogodnień przetwarzać dane równolegle, czy pójść jeszcze bardziej w stronę pełnego RISCA.

 

Czy to może być architektura Itanium ? tak, ale potrzeba coś przejściowego. Całkiem możliwe że jedynym sposobem jest połączenie procesora PA-RISC z rdzeniem x-86 i stopniowa migracja od środowiska x-86.

 

 

Jednak wolałbym narazie coś innego. Mianowicie można popracować nad zupełnie nowym rodzajem dekodera instrukcji x-86, który podczas detekcji analizował by instrukcję pod kątem możliwości równoległego przetwarzania, i układał je w kilka równoległych ciągów bez wzajemnych relacji między nimi.

 

 

Załóżmy ze mamy procesor posiadający 6 potoków wykonawczych, 3 dla operacji stało i 3 dla zmienno-przecinkowych, w każdym potoku po jedej jednostce ALU lub FPU ( jest to bliskie temu co zawieraja procesory Athlon ). Jest więc on zdolny wykonać 6 instrukcji jednocześnie.

Teraz przeanalizujmy droge instrukcji zanim zostaną one wykonane. Najpierw trafiają do dekodera który zmienia je na mikroinstrukcje wewnetrzego kodu mikroprocesora. Z dekodera instrukcje wychodzą jedna po drugiej, czyli szeregowo. Nastepne poddawane są one analizie po której zmieniana jest ich kojelność wykonywania tak, aby dawały wykonywać sie równolegle w kilku potokach procesora.

Czy jednak po takiej optymalizacji będą one wykonywane zawsze po 6 naraz w każdym takcie zegara ? - napewno nie, gdyż trudno szeregowy ciąg instrukcji rozłozyć na 6 równoległych ciągów przeznaczonych z osobna dla każdego potoku. Oprócz tego dochodzi jeszcze problem rozgałęznień kodu programu które sprawiają że najwięcej pracy mają systemy predykcji rozgałęzień i przewidywania, a te niestety nie są doskonałe i zdażają im się błędy, a chybienie w predykcji powoduje wstrzymanie potoków, opróżnienie ich zawartości i ponowne pobieranie danych od momentu wykonania rozgałęznia.

 

Tak więc procesor superskalarny o architekturze wielo-potokowej nigdy nie osiągnie "pełnej" wydajności jaka wynikała by z przetwarzania potokowego. Zwykle w jednym takcie zegara będą wykonywane 2, 3 instrukcje, a przypadek w którym jednocześnie wykorzystane zostaną wszystkie jednostki wykonawcze, czyli w którym wykonane zostanie jednocześnie 6 instrukcji będzie stosunkowo rzadki.

 

 

 

I teraz mamy ten nowy dekoder instrukcji, który pełni taką samą funkcje jak zwykły dekoder instrukcji, czyli rozkłada instrukcje na mikroinstrukcje wewnętrznego kodu procesora ( kodu maszynowego ), jednak z ta róznią ze analizuje ciąg instrukcji pod kątem ich równoległego wykonywania, a później układa instrukcje w kilka równoległych ciągów, które nastepnie trafiają do potoków i sa w nich równolegle wykonywane. W każdym potoku znajduje sie jedna jednostka ALU wsparta koprocesorem.

Takie ułozenie instrukcji pozwoliło by na wyeliminowanie problemu przewidywania i predykcji rozgałęzień programu - w przypadku potencjalnego rozgałęzienia obie gałęzi programu wykonywane były by równolegle do czasu sprawdzenia warunku rozgałęzienia, a niepotrzebne wyniki po prosu pomijane.

 

Równoległe ułożenie instrukcji w zwykłej architekturze hiperskalarnej pozostawione procesorowi, który analizuje kod instrukcja po instrukcji, było by wykonywane "przy okazji" detekcji instrukcji na mikroinstrukcje wewnetrzego kodu procesora.

Wykonywanie tych zadań przez procesor powodowało, iż praca musiała być wykonywana przy każdorazowym wykonaniu instrukcji, a niekiedy wielokrotnie po sobie, a procesor tracił na dodatkową analizę swoją cenną moc obliczeniową. Oprócz tego wyeliminowana została by nieunikniona w stosowanych obecnie architekturach konieczność opróżniania i ponownego napełniania potoków w przypadku wykonania instrukcji skoku czy rozgałęzienia i wynikająca z niej strata czasu.

 

Przyśpieszenie przetwarzania ciągu instrukcji było by znaczące a budowa wewnętrzna procesora znacznie uproszczona - niepotrzebne były by systemy przewidywania i predykcji rozgałęzień oraz systemy zmiany kolejności instrukcji i przemianowywania rejestrów.

 

gdzie pracujesz/ co studiujesz

 

W kafejce internetowej - mam sporo czasu na pisanie na forum, czasem kogos trzeba obsłużyć. Praca spoko - płacą Ci za korzystanie z internetu.

Chętnie bym dołączył do redakcji jakiegoś portalu do działu - procesory.

 

A studiuje ma Politechnice Rzeszowskiej - informatyke zaocznie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po co dbać o zgodność z x86? W końcu Linux/xxxBSD działają na paru innych platformach, w tym i w pełni RISC-owych, nie mających nic wspólnego z x86.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

jakby ktos chcial poczytac o architekturach procow intela to zapraszam do zamowienia sobie manuali z ich strony, do polski z usa w 3 dni przychodza i to full darmo

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
jakby ktos chcial poczytac o architekturach procow intela to zapraszam do zamowienia sobie manuali z ich strony, do polski z usa w 3 dni przychodza i to full darmo

 

Podaj link to sobie zamówię :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
jakby ktos chcial poczytac o architekturach procow intela to zapraszam do zamowienia sobie manuali z ich strony, do polski z usa w 3 dni przychodza i to full darmo

 

na maila ? 3 dni ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No no no, zaimponowałeś chyba Nam wszystkim swoją procesorową wiedzą. Myśle, że powinieneś się starać o pracę w Intelu - zysk dwustronny, a Intel lubi Polaków :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Po co dbać o zgodność z x86? W końcu Linux/xxxBSD działają na paru innych platformach, w tym i w pełni RISC-owych, nie mających nic wspólnego z x86.

 

Tak nagle z dnia na dzień nie przepiszą wszystkich aplikacji i na inny kod.

 

patrz jak to teraz z x-86 mozolnie idzie

 

 

Potrzebe jest długofalowe rozwiązanie przejściowe, albo tak jak pisał Trinity - połączenie w jednym procesorze rdzeni x-86 z nie x-86, co jednak samo w sobie jest bardzo trudne, lub prostrze - dekoder który przerabiał by instrukcje x-86 przekolejkowane na kilka równoległych ciągów bez wzajemnych powiazań ze sobą co pozwoliło by zminić architekture procesorów na bardziej RISCową bez zbędnych komplikacji tak jak to jest w obecnych CPU ( predykcja rozgałęźień programu )

Do tego dekoder ten obsługiwał by też pełnego RISCa i mogracja od x-86 była by bezproblemowa, tak jak migracja do 64 bitów w prockach x-64-64 ( AMD64 i Intel Yamhill ).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja też byłbym wdzięczny za linka :) do tych książek :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak jak mówił Shark19 potrzeba właśnie czegoś długofalowego. Chyba, że wszyscy nagle by się przenieśli na Linuksa co nie byłoby złym rozwiązaniem :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
A studiuje ma Politechnice Rzeszowskiej - informatyke zaocznie.

A mowi ci cos nazwisko Swider??

Jest on moim promotorem

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Nie chcę się wgłębiać dokładnie w architekturę (nie mam tyle zapału na forum co Ty Shark :) ), ale wg mnie procesor marzeń jak na dzień dzisiejeszy, przy zachowaniu zgodności z x86 przedstawiałby się tak:

 

Generalnie architektura zaczerpnięta z Pentium M (Dothan) + zintegrowany kontroler pamięci + wyższe (obecnie jest 2.0) taktowanie + obsługa 64 bitów. Zmiótłby wszystko. Oczywiście możnaby wprowadzić szereg udoskonaleń w architekturze (Shark bez problemu pewnie by dopisał, co i jak).

W samym Pentium-M już niewiele można udoskonalić, predyckja rozgałęzień świetna, zmiana kolejności i dowolne przekolejkowanie instrukcji, menedżer stosu, systemy działające z wyprzedzeniem.

 

4 jednostki wykonawcze Pentium-M są już znacznie wykorzystywane.

 

Niski pobór energi Pentium-M wynika z możliwości wyłaczania lub usypiania danych obszarów niewykorzuystywanych w danym momencie, oraz z tego że Pentium-M nie ma 64 bitów.

 

Dołożenie 64 bitów wymaga zwiększenia rozmiaru samego rdzenia ( bez cache L1, L2 ) o 70-80 % , trzeba powiększyć dwukrotnie ( wydłużyć liczbę ich lini ) jednostki wykonawcze, schedulery, magistrale wewnętrzne, rejestry, stos... , jednym słowem prawie cały rdzeń ( bez cache L1 i L2 )

To z kolei zwiększa prawie dwukrotnie ilość najbardziej energożernych elementów procesora i zwiększa wydzielanie ciepła.

No więc dokładamy 64 bity do pentium-M i już nie jest ono tak energoszczędne.

 

Dlatego wciąż Pentium-M jest "tylko" 32 bitowe.

 

Można natomiast sporo udoskonalić w komunikacji zewnętrznej pentium M oraz w pracy wielordzeniowej stosując rozwiązania takie jak w Athlonach 64.

 

 

 

Natomiast sporo więcej można udoskonalić w Athlonie 64. Te procesory mają wciaż głębokie rezerwy, narazie dość często mylą się w przewidywaniach, nie mogą efektywnie skracać potoku, nie mogą dowolnie zmieniać kolejności instrukcji i przekolejkowywać je, nie mają zaawanoswanych systemów znacznie przyśpieszających przetwarzanie kodu - jak np. nie mają układu pobrań wyprzedzających czy nie potrafią decydować o rozpoczęciu dekodowania ciągu instrukcji stanowiącego wyjście z pętli lub gałęzi programu jeszcze przed wypełnieniem warunku skoku.

Generalnie słabo wykorzystują swoje 6 jednostek wykonawczych.

 

 

Z Architektury Pentium-M można wykrzesać jeszcze kilka- góra kilkanście % więcej wydajności + to co da zintegorwany kontroler DDR, natomiast z architektury Athlona 64 nawet ponad 50 %

 

 

Więc dodajemy do Athlona 64 :

- Trace Cache rozwiązane jak w Pentium-M ( wzrost wydajności 7-9 % )( lub najlepiej 2 generacji mojego pomysłu skracajace efektywnie potok i przyśpieszajace wykonywanie kodu jeszcze bardziej - około 10-12 % wzrost wydajności )

- Dowolne przekolejkowanie i zmiane kolejności wykonywanych instrukcji + menedżer stosu ( kilkanaście % więcej wydajności )

- Systemy predykcji rozgałęzień oraz układ pobrań wyprzedzajacych z Prescotta ( około 20-25 % więcej wydajności )

- koprocesor mnożący do jednostek ALU umożliwiając znacznie szybsze wykonywanie operacji mnożenia liczb stałoprzecinkowych w potokach stałoprzecinkowych. ( około 10 % więcej wydajności ).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Skąd wziąłeś te wszystkie informacje? Ja wiedziałem troche o procesorach ale tym artykułem mnie przygniotłeś :E:E

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

zbierało się od 1999 roku.

 

Zaczołem od ( w sumie słabego ) opisu architektury pierwszego Athlona w Chipie, i tak mnie to zafascynowało że połykałem wszystko co tylko znalazłem o architekturach porcesorów.

 

 

Looknij sobie tutaj , niezła stronka, szkoda że już nie publikują ze dwa lata : http://www.chip-architect.com/

 

Prescott/Northwod ;

 

http://www.chip-architect.com/news/2003_03...or_Yamhill.html

http://www.chip-architect.com/news/2003_04...cott_part2.html

 

 

Najlepsze jest to że Intel nie powiedział wszytskich zmian jakie dokonał w Prescottcie, ale Ci goscie z tej stronki w tych dwóch opisach ( linki powyrzej ) udowodnili np. że Prescott ma dwa zamiast jednego, bloki wykonawcze arytmetyczno-logiczne ( rapid execution units - patrz na obrazki )

 

Tamci kolesie z chip-architect to dopiero wymiatają. Zaglądają w głąb rdzenia i mówią co ma i jakie są zmiany w stosunku do starszego rdzenia.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

  • Tematy

  • Odpowiedzi

    • Ciekawy filozoficzny post, ja to odbieram inaczej - 9800X3D potrafi być 30% szybszy od 7800X3D i to przyrost w 18 miesięcy. Jeżeli upgrade dokonujesz w tej samych "widełkach" wydajnościowych zmieniajac starsze i5 na nowsze i5 to przyrost potrafi być przez 2 lata mniejszy niż nawet 5% za to energetycznie bywa że jest 30% lepiej, ostatecznie jest to jakaś ewolucja - pamiętaj że rozwój technologii jest iteratywny i polega na małych przyrostach które ostatecznie składają się na coś wielkiego ale ostatecznie masz rację - i7-2600 do dzisiaj może stanowić podstawę użytecznego komputera biurowego, skylake posłuszy pewnie i do 2030 w takich celach. Rasteryzacja w kartach graficznych faktycznie stoi nieco w miejscu, nVidia próbuje zrewolucjonizować rynek vendorlockowymi technikami jak swoje DLSSy, ostatecznie doprowadzi to do stagnacji gdzie bez zamydlonego ekranu nie pogramy w 4K, silniki graficzne też nie rozwijają się w oczekiwanym tempie - unity rozpadło się przez kiepski zarząd, unreal engine 5 to król mikroopóźnień, od zakończenia akceleracji sprzętowej dźwięku w windows vista (okolice 2007) nie było w audio żadnej rewolucji a wręcz ewolucji - id Tech to do dzisiaj jedyny engine który potrafi wyrysować łuk a nie koła z nakładanych trójkątów... Także sygnałów że branża kuleje nigdy nie brakowało - grunt to realizować swoje cele i jak tak jak ja od lat 2000 celujesz w średnią półkę cenową - szukać takich upgrade które faktycznie coś dają no i mieć świadomość że rtx 5090 to będzie 600w potwór z gddr7 i ceną na poziomie 12000 pln, takiej wydajności w kartach do 2000zł nie zobaczymy do 2030r. Pamiętam WOW jakie zrobił na mnie Teoria Chaosu splinter cella (mądrze zaprogramowana gra działająca również na konsolach) Far Cry 1 (był nieziemski na premierę) Crysis wyrywał z butów (8800gtx ledwo dawał radę), wszystko potem to sidegrade z momentami które pokazywały że 200 mln usd budżetu może dać jakościowy tytuł jak Red Dead 2, przez ostatnie 20 lat dobrych gier pctowych nie brakowało ale większość to ciągły sidegrade niepotrzebujący najmocniejszych sprzętów, dobieranie timingów pamięci to zawsze była nieco sztuka dla sztuki
    • Na ITH podobna wolność słowa jak na X/Twitterze. No cóż, trzeba będzie po prostu listę ignorowanych wydłużyć  
    • Tak, ale są związane z usługą udostępnienia platformy z ramienia podmiotu X. W tym wypadku RASP. Jeśli treść, nawet przerobioną na anonimową, przetwarzać zacząłby ktoś inny, nie wiem czy przypadkiem nie potrzeba uzyskać ponownie zgody na przetwarzanie wtórne/dziedziczne. Być może bezpośrednio z RASP, ale już stwierdzono, że nie ma takiej opcji. Głośno myślę jedynie, nie wczytywałem się tak głęboko w przepisy. Ok, ale co jeśli posty zawierają informacje mogące przyczynić się do ustalenia tożsamości piszącego/piszących? Tu już robi się niestety grubiej.    
    • Ja odpowiem bo nie wybieram się na tamto forum. Zależy czy masz boxy, gwarancję i jak szybko chcesz sprzedać ale coś koło 2100.
    • Polecam zapytać na Forum ITHardware.pl tutaj już raczej nikt ci nie odpowie, to forum się zamyka i wszyscy przeszli na ith.   @MuziPL .
  • Aktywni użytkownicy

×
×
  • Dodaj nową pozycję...