procesor centralny

Zobacz też: Architektura komputerowa i układ cyfrowy.

zakres enteroizdat

sposób reprezentowania liczb przez procesor to wybór projektu, który wpływa na najbardziej podstawowe sposoby działania urządzenia. Niektóre z wczesnych kalkulatorów cyfrowych wykorzystywały do reprezentowania liczb wewnętrzny model elektryczny wspólnego systemu liczb dziesiętnych(podstawa dziesięciu). Niektóre inne komputery używały bardziej egzotycznych systemów numeracji, takich jak Triple (base three). Prawie wszystkie procesory Moderna reprezentują liczby w postaci binarnej, gdzie każda cyfra jest reprezentowana przez pewną fizyczną liczbę dwóch wartości, takich jak ” wysokie „lub”niskie napięcie”.

mikroprocesor MOS 6502 w podwójnym pakiecie in-line( zamknięty w podwójnej linii), niezwykle popularna konstrukcja 8-bitowa.

z reprezentacją liczbową wiąże się rozmiar i dokładność liczb, które może reprezentować procesor. W przypadku procesora binarnego bit odnosi się do znaczącej pozycji w liczbach, z którymi pracuje procesor. Liczba bitów (lub pozycji liczbowych lub cyfr), których procesor używa do reprezentowania liczb, jest często określana jako „rozmiar słowa”, „szerokość bitu”, „szerokość ścieżki danych” lub „dokładność liczby całkowitej”, gdy zajmuje się liczbami całkowitymi (w przeciwieństwie do liczb zmiennoprzecinkowych). Liczba ta różni się między architekturami i często w różnych jednostkach tego samego procesora. Na przykład 8-bitowy procesor obsługuje zakres liczb, które mogą być reprezentowane przez osiem cyfr binarnych, każda cyfra o dwóch możliwych wartościach, oraz w kombinacji 8 bitów o 28 lub 256 dyskretnych liczb. Zasadniczo rozmiar liczby całkowitej nakłada ograniczenie sprzętowe na zakres liczb całkowitych, które oprogramowanie wykonuje i z których procesor może bezpośrednio korzystać.

Zakres liczby całkowitej może również wpływać na liczbę pozycji w pamięci, które procesor może adresować (lokalizować). Na przykład, Jeśli procesor binarny używa 32 bitów do reprezentowania adresu pamięci, a każdy adres pamięci reprezentuje jeden oktet (8 bitów), maksymalna ilość pamięci, jaką procesor może zaadresować, wynosi 232 oktety lub 4 GB. Jest to bardzo prosty rodzaj przestrzeni adresowej procesora, a wiele moderna używać znacznie bardziej zaawansowanych technik adresowania, takich jak stronicowania, aby znaleźć więcej pamięci niż twój zakres liczb całkowitych pozwoli na płaskiej przestrzeni adresowej.

wyższe poziomy zakresu liczb całkowitych wymagają więcej struktur do obsługi dodatkowych cyfr, a zatem większej złożoności, wielkości, zużycia energii i ogólnie kosztów. Tak więc, nie jest to dość rzadkie, aby zobaczyć 4-i 8-bitowe mikrokontrolery stosowane w Moderna aplikacji, nawet jeśli dostępne są procesory o znacznie wyższym zakresie (16, 32, 64, a nawet 128 bitów). Prostsze mikrokontrolery są zwykle tańsze, zużywają mniej energii, a tym samym rozpraszają mniej ciepła. Wszystko to może być ważnym czynnikiem projektowym dla urządzeń elektronicznych. Jednak w aplikacjach wysokiego poziomu korzyści wynikające z dodatkowego zakresu (najczęściej dodatkowej przestrzeni adresowej) są bardziej znaczące i często wpływają na wybór projektu. Aby uzyskać pewne korzyści wynikające zarówno z niższej, jak i wyższej długości bitów, wiele procesorów jest zaprojektowanych z różnymi szerokościami bitów dla różnych jednostek urządzenia. Na przykład IBM System / 370 zastosował procesor, który był w większości 32-bitowy, ale zastosował 128-bitową dokładność w swoich jednostkach zmiennoprzecinkowych, aby ułatwić większą dokładność i zakres liczb zmiennoprzecinkowych. Wiele późniejszych projektów procesorów wykorzystuje podobną szerokość bitów, szczególnie gdy procesor jest przeznaczony do użytku ogólnego, gdzie wymagana jest rozsądna równowaga między liczbami całkowitymi a możliwościami zmiennoprzecinkowymi.

Częstotliwość taktowania

artykuł główny: Szybkość zegara

większość procesorów i zasadniczo większość szeregowych urządzeń logicznych ma charakter synchroniczny. Oznacza to, że są zaprojektowane i działają w oparciu o sygnał synchronizacji. Sygnał ten, znany jako sygnał zegara, zwykle przyjmuje postać okresowej fali prostokątnej. Obliczając maksymalny czas, w którym sygnały elektryczne mogą przemieszczać się w różnych gałęziach wielu obwodów procesora, projektanci mogą wybrać odpowiedni okres dla sygnału zegara.

ten okres powinien być dłuższy niż czas potrzebny sygnałowi na przeniesienie lub propagację w najgorszym przypadku. Ustawiając okres zegara na dość większą wartość opóźnienia propagacji najgorszego przypadku, można zaprojektować cały procesor i sposób przenoszenia danych wzdłuż „krawędzi” zegara rosnącego i malejącego. Ma to tę zaletę, że znacznie upraszcza procesor, zarówno pod względem projektu, jak i liczby komponentów. Ma to jednak również tę wadę, że cały procesor powinien oczekiwać wolniejszych elementów, nawet jeśli niektóre jego dyski są znacznie szybsze. Ograniczenie to zostało w dużej mierze skompensowane różnymi metodami zwiększania współbieżności procesora (patrz poniżej).

jednak ulepszenia architektoniczne same w sobie nie usuwają wszystkich wad procesorów synchronicznych na całym świecie. Na przykład sygnał zegara podlega opóźnieniom jakiegokolwiek innego sygnału elektrycznego. Wyższe częstotliwości taktowania na coraz bardziej złożonych procesorów utrudniają utrzymanie sygnału synchronizacji w fazie (zsynchronizowane) w całym urządzeniu. Doprowadziło to do tego, że wiele nowoczesnych procesorów wymaga dostarczenia moderny wielu takich samych sygnałów Zegara, aby uniknąć opóźnienia pojedynczego sygnału wystarczającego do nieprawidłowego działania procesora. Innym ważnym problemem, w którym szybkość zegara gwałtownie wzrasta, jest ilość ciepła rozpraszanego przez procesor. Sygnał zegara ciągle się zmienia, powodując przełączanie wielu komponentów (zmiana stanu), niezależnie od tego, czy są one obecnie używane. Zazwyczaj składnik, który zmienia stan, zużywa więcej energii niż element w stanie statycznym. Tak więc wraz ze wzrostem częstotliwości zegara następuje również rozpraszanie ciepła, w wyniku czego procesor wymaga bardziej wydajnych rozwiązań chłodzenia.

jedna z metod pracy z przełączaniem niepotrzebnych komponentów nazywa się clock gating, która polega na wyłączeniu sygnału zegara na niepotrzebnych komponentach, skutecznie je wyłączając. Jednak jest to często postrzegane jako trudne do wdrożenia, a zatem nie widzi ogólnego zastosowania poza konstrukcjami bardzo małej mocy. Jedną z godnych uwagi późnych konstrukcji procesora, która wykorzystuje szeroką bramę Zegara, aby zmniejszyć zapotrzebowanie na moc konsoli do gier, jest Xbox 360 oparty na IBM PowerPC. Inną metodą rozwiązania niektórych problemów globalnego zegara jest całkowite usunięcie go. Chociaż usunięcie globalnego sygnału z zegara pod wieloma względami znacznie komplikuje proces projektowania, w porównaniu z podobnymi projektami synchronicznymi, projekty asynchroniczne (lub bez zegara) mają zauważalne zalety w zakresie zużycia energii i rozpraszania ciepła. Chociaż jest to rzadkie, pełne procesory zostały zbudowane bez użycia globalnego sygnału zegara. Dwa godne uwagi przykłady to AMULET, który implementuje architekturę ARM, oraz MiniMIPS kompatybilny z MIPS R3000. Zamiast całkowicie usuwać sygnał zegara, niektóre konstrukcje procesora pozwalają niektórym jednostkom urządzenia być asynchronicznym, na przykład za pomocą ALU w połączeniu z potokiem superskalarnym, aby osiągnąć pewien zysk w wydajności arytmetycznej. Chociaż nie jest do końca jasne, czy w pełni asynchroniczne układy mogą działać na porównywalnym poziomie, czy lepiej niż ich synchroniczne odpowiedniki, oczywiste jest, że przynajmniej dobrze sobie radzą w najprostszych operacjach matematycznych. To, w połączeniu z doskonałymi charakterystykami zużycia energii i rozpraszania ciepła, sprawia, że są one bardzo odpowiednie dla systemów wbudowanych.

ParalelismoEditar

Główny artykuł: obliczenia równoległe
model procesora zmniejszyć rozmiar. Zauważ, że ukończenie trzech instrukcji zajmuje piętnaście cykli.

opis podstawowej operacji procesora zaproponowany w poprzedniej sekcji opisuje najprostszą formę, jaką może przyjąć procesor. Ten typ procesora, powszechnie określany jako podskalar, działa i wykonuje jedną instrukcję z jedną lub dwiema częściami danych jednocześnie.

ten proces prowadzi do nieefektywności związanej z podkalarami procesorów. Ponieważ tylko jedna instrukcja jest wykonywana jednocześnie, cały procesor musi poczekać na zakończenie tej instrukcji przed przejściem do następnej instrukcji. W rezultacie procesor podskalarny staje się” sparaliżowany ” w instrukcjach, które wymagają więcej niż jednego cyklu zegara, aby zakończyć jego wykonanie. Nawet dodanie drugiego bloku wykonania (patrz poniżej) nie poprawia znacząco wydajności. Zamiast jednej drogi zamarzniętej, teraz dwie drogi są sparaliżowane, a liczba nieużywanych tranzystorów rośnie. Ta konstrukcja, w której zasoby wykonawcze procesora mogą działać tylko z jedną instrukcją na raz, może osiągnąć tylko wydajność skalarną (jedna instrukcja na cykl zegara). Jednak wydajność jest prawie zawsze podskalarna (mniej niż jedno polecenie na cykl).

próby osiągnięcia wyższej wydajności skalarnej doprowadziły do powstania różnych metodologii projektowania, które sprawiają, że procesory są mniej liniowe i bardziej równoległe. Jeśli chodzi o współbieżność w procesorach, zwykle stosuje się dwa terminy do klasyfikacji tych metod projektowania.

  • równoległość na poziomie instrukcji (ILP) ma na celu zwiększenie prędkości, z jaką instrukcje są wykonywane wewnątrz procesora, to znaczy zwiększenie wykorzystania zasobów wykonawczych na tablecie.
  • współbieżność na poziomie wątku wykonania, w języku angielskim parallelizm poziomu wątku (TLP), który ma na celu zwiększenie liczby wątków (w rzeczywistości oddzielnych programów), które procesor może wykonać jednocześnie.

każda metodologia różni się zarówno sposobem ich implementacji, jak i względną wydajnością, jaką zapewniają w zwiększaniu wydajności procesora dla aplikacji.

ILP: segmentacja i architektura superskalarna

główne artykuły: segmentacja (elektroniczna) i Superskalarna.
rury są główne pięć etapów. W najlepszym przypadku rurociąg ten może wytrzymać współczynnik ukończenia jednej instrukcji na cykl.

jednym z najprostszych sposobów osiągnięcia przyrostu równoległości jest rozpoczęcie pierwszych kroków czytania i dekodowania instrukcji przed zakończeniem wykonywania poprzedniej instrukcji. Jest to najprostsza forma metody znanej jako segmentacja (instruction pipelining) i jest stosowana w prawie wszystkich nowoczesnych procesorach ogólnego przeznaczenia moderna. Dzieląc ścieżkę wykonania na dyskretne etapy, potok umożliwia wykonanie więcej niż jednej instrukcji w dowolnym momencie. Ten podział można porównać do potoku, w którym instrukcja staje się bardziej kompletna na każdym etapie, dopóki nie wyjdzie z potoku i nie zostanie z niego usunięta.

jednak potok wprowadza możliwość sytuacji, w której konieczne jest zakończenie wyniku poprzedniej operacji w celu zakończenia następnej operacji; warunek często nazywany konfliktem zależności danych. Aby sobie z tym poradzić, należy zachować szczególną ostrożność w celu sprawdzenia tego rodzaju warunków, a jeśli tak się stanie, część rurociągu instrukcji musi zostać opóźniona. Oczywiście wymaga to dodatkowego obwodu, obudowy procesorów są bardziej złożone niż podskalary, ale nie tak bardzo. Obudowany procesor może stać się prawie całkowicie skalarem, tylko zablokowany przez nagłe zatrzymania rurociągu (Instrukcja trwa więcej niż jeden cykl zegara na jednym etapie).

prosta segmentacja superskalarna. Podczas czytania i wysyłania dwóch instrukcji jednocześnie można wykonać maksymalnie dwie instrukcje na cykl.

dalsza poprawa w stosunku do idei rurociągu szkoleniowego (instruction pipelining) doprowadziła do opracowania metody, która dodatkowo skraca przestoje komponentów procesora. Konstrukcje, o których mówi się, że są superskalarne, obejmują długi rurociąg instrukcji i kilka identycznych jednostek wykonawczych. W potoku superskalarnym wiele instrukcji jest odczytywanych i przekazywanych do dyspozytora, który decyduje, czy instrukcje można wykonywać równolegle (jednocześnie). Jeśli tak, są one wysyłane do dostępnych jednostek wykonawczych, co skutkuje możliwością wykonywania wielu instrukcji jednocześnie. Ogólnie rzecz biorąc, im więcej instrukcji superskalarny procesor jest w stanie wysyłać zapasowe jednostki wykonawcze w tym samym czasie, tym więcej instrukcji zostanie wykonanych w danej pętli.

duża część trudności w opracowaniu superskalarnej architektury procesora polega na stworzeniu wydajnego menedżera. Dyspozytor musi być w stanie szybko i poprawnie ustalić, czy instrukcje mogą być wykonywane równolegle, a także wysyłać je w sposób, który zajmuje jak najwięcej jednostek wykonawczych. Wymaga to, aby potok instrukcji wypełniał się tak często, jak to możliwe, a zapotrzebowanie na znaczne ilości pamięci podręcznej procesora wzrasta w architekturach supersekalarnych. Stwarza to również techniki, aby uniknąć zagrożeń, takich jak przewidywanie rozgałęzienia, egzekucji spekulacyjnej i egzekucji w trybie offline, które mają kluczowe znaczenie dla utrzymania wysokiego poziomu wydajności. Próbując przewidzieć, która gałąź (lub trajektoria) zaakceptuje instrukcję warunkową, procesor może zminimalizować liczbę razy, kiedy cały kanał musi czekać na zakończenie instrukcji warunkowej. Często spekulacyjne wykonanie zapewnia niewielki wzrost wydajności poprzez wykonanie fragmentów kodu, które mogą nie być konieczne po zakończeniu operacji warunkowej. Poza kolejnością wykonania, w jakiś sposób zmienia kolejność wykonywania instrukcji, aby zmniejszyć opóźnienia spowodowane zależnościami danych. Również w przypadku pojedynczych instrukcji z wieloma danymi — nowoczesne procesory, jeśli przetwarzana jest duża ilość danych tego samego typu, mogą wyłączyć części potoku, dzięki czemu podczas wykonywania jednej instrukcji wiele razy procesor pomija akceptację i dekoduje fazy, a tym samym w niektórych przypadkach znacznie poprawia wydajność, szczególnie w przypadku wysoce monotonicznych moderna, takich jak oprogramowanie do tworzenia wideo i przetwarzania zdjęć.

w przypadku, gdy część procesora jest superskalarna, a część nie, część, która nie jest superskalarna, cierpi na wydajność z powodu przerw na wykresie. Oryginalny Intel Pentium (P5) miał dwa superskalarne ALUs, które mogły przyjmować każdą instrukcję na cykl zegara, ale twój FPU nie mógł zaakceptować jednej instrukcji na cykl zegara. Zatem P5 był superskalarny w części liczb całkowitych, ale nie był superskalarny z liczb średnikowych (lub zmiennoprzecinkowych). Następca architektury Intel Pentium, P6, dodał superskalarne możliwości do swoich funkcji zmiennoprzecinkowych, co spowodowało znaczny wzrost wydajności takich instrukcji.

zarówno superskalarna konstrukcja, jak i prosta powłoka zwiększają ILP procesora, umożliwiając jednemu procesorowi wykonywanie instrukcji o współczynnikach większych niż jedna instrukcja na cykl (IPC). Większość obecnych projektów procesorów Moderna jest co najmniej nieco supersekalarna, aw ostatniej dekadzie prawie wszystkie konstrukcje procesorów ogólnego przeznaczenia są supersekalarne. W ostatnich latach część nacisku na projektowanie komputerów o wysokim poziomie ILP przeniosła się ze sprzętu procesora na interfejs oprogramowania lub ISA. Strategia very long instruction word lub VLIW, powoduje, że niektóre ILP są bezpośrednio implikowane przez oprogramowanie, zmniejszając ilość pracy, jaką procesor musi wykonać, aby zapewnić znaczny impuls ILP, a tym samym zmniejszyć złożoność projektu.

współbieżność na poziomie wątku, opublikuj

inną strategią osiągnięcia wydajności jest równoległe wykonywanie wielu programów lub wątków. Ten obszar badań jest znany jako obliczenia równoległe. W taksonomii Flynna strategia ta jest znana jako instrukcje wieloprocesorowe lub MIMD.

jedną z technologii wykorzystywanych do tego celu było przetwarzanie wieloprocesorowe (MP). Początek tej technologii jest znany jako symetryczne przetwarzanie wieloprocesorowe (SMP), w którym niewielka liczba procesorów dzieli spójny widok swojego systemu pamięci. W tym schemacie każdy procesor ma dodatkowy sprzęt, aby stale aktualizować widok pamięci. Aby uniknąć zjełczałych wizyt w pamięci, procesory mogą komunikować się w tym samym programie, a programy mogą przenosić się z jednego procesora do drugiego. Aby zwiększyć liczbę współdziałających procesorów poza kilkoma, w 1990 r.wprowadzono Schematy, takie jak non-uniform Memory Access (non-uniform Memory Access) (NUMA) i protokoły spójności oparte na katalogach. Systemy SMP są ograniczone do niewielkiej liczby procesorów, a systemy NUMA zostały zbudowane z tysiącami procesorów. Początkowo wieloprocesorowość została zbudowana przy użyciu wielu dyskretnych procesorów i płyt w celu realizacji relacji między procesorami. Gdy procesory i ich wzajemne połączenia zostały zaimplementowane na jednym chipie krzemowym, technologia ta jest znana jako procesor wielordzeniowy.

uznano następnie, że istnieje bardzo wąska współbieżność z jednym programem. JEDEN program może mieć wiele wątków (lub funkcji), które mogą być uruchamiane osobno lub równolegle. Niektóre z wczesnych przykładów tej technologii realizowane przetwarzania i / o, takie jak bezpośredni dostęp do pamięci jako oddzielny wątek od strumienia obliczeniowego. W latach siedemdziesiątych wprowadzono bardziej ogólne podejście do tej technologii, gdy systemy zostały zaprojektowane do równoległego działania wielu wątków obliczeniowych. Ta technologia jest znana jako wielowątkowość (MT).

takie podejście jest uważane za bardziej ekonomiczne niż wielowątkowość, ponieważ tylko niewielka liczba komponentów w procesorze jest replikowana w celu obsługi MT, w przeciwieństwie do całego procesora w przypadku MP. W MT jednostki wykonawcze i system pamięci, w tym pamięci podręczne, są dzielone między wiele wątków. Minusem MT jest to, że sprzętowa obsługa wielowątkowości jest bardziej widoczna dla oprogramowania niż MP, a zatem oprogramowanie nadzorcze, podobnie jak systemy operacyjne, musi przejść duże zmiany w celu obsługi MT. Jeden typ MT, który został zaimplementowany, jest znany jako blok wielowątkowy, w którym wątek jest wykonywany, dopóki się nie zatrzyma, czekając na powrót danych z pamięci zewnętrznej. W tym schemacie, procesor będzie następnie szybko przełączyć się do innego wątku, który jest gotowy do pracy, przełącznik wielokrotnie wykonuje cykl zegara procesora, jak technologia UltraSPARC. Inny typ MT nazywa się równoczesnym wielowątkowością, w której wielowątkowe instrukcje są wykonywane równolegle w jednym cyklu zegara procesora.

współbieżność danych

główne artykuły: procesor wektorowy I SIMD.

mniej powszechny, ale coraz ważniejszy paradygmat procesora (i tak naprawdę obliczeń w ogóle) dotyczy wektorów. Omówione powyżej procesory są nazywane określonym typem urządzenia skalarnego. Jak sama nazwa wskazuje, procesory wektorowe zajmują się wieloma częściami danych w kontekście instrukcji, co kontrastuje z procesorami skalarnymi, które przetwarzają jedną część danych dla każdej instrukcji. Te dwa schematy przetwarzania danych są zwykle nazywane SISD (single instruction, single data) i SIMD (single instruction, multiple data). Wielką użytecznością w tworzeniu procesorów, które zajmują się wektorami danych jest optymalizacja zadań, które zazwyczaj wymagają tej samej operacji, takich jak suma lub iloczyn skalarny, które muszą być wykonywane na dużym zbiorze danych. Niektóre klasyczne przykłady takich zadań są aplikacje multimedialne (obrazy, wideo i dźwięk), a także wiele rodzajów zadań naukowych i inżynieryjnych. Chociaż procesor skalarny musi zakończyć cały proces odczytu, dekodowania i wykonywania każdej instrukcji i wartości w zestawie danych, procesor wektorowy może wykonać prostą operację na stosunkowo dużym zestawie danych z jedną instrukcją. Oczywiście jest to możliwe tylko wtedy, gdy aplikacja wymaga wielu kroków, które stosują operację do dużego zestawu danych.

większość wczesnych procesorów wektorowych, takich jak Cray-1, była prawie wyłącznie związana z aplikacjami badawczo-rozwojowymi i kryptograficznymi. Ponieważ jednak multimedia w dużej mierze przesunęły się na media cyfrowe, zapotrzebowanie na określoną formę SIMD w procesorach ogólnego przeznaczenia stało się znaczne. Wkrótce po tym, jak powszechne stało się włączanie jednostek zmiennoprzecinkowych do procesorów ogólnego przeznaczenia, zaczęły pojawiać się specyfikacje i implementacje jednostek wykonawczych SIMD dla procesorów ogólnego przeznaczenia. Niektóre z tych wczesnych specyfikacji SIMD, takich jak Intel MMX, dotyczyły tylko liczb całkowitych. Okazało się to znaczącą przeszkodą dla niektórych twórców oprogramowania, ponieważ wiele aplikacji, które korzystały z SIMD, zajmowało się głównie liczbami zmiennoprzecinkowymi. Stopniowo te wczesne projekty zostały udoskonalone i przerobione na niektóre z typowych, Moderna SIMD specyfikacji, które są zwykle związane z ISA. Niektóre znane Moderna przykłady są INTEL SSE i Altivec związane z PowerPC (znany również jako VMX).

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.