W 8-bitowym mikroprocesorze szyna danych składa się z 8 linii danych. W 16-bitowym mikroprocesorze magistrala danych składa się z 16 linii danych i tak dalej.
Dlaczego nie ma 256-bitowego mikroprocesora ani 512-bitowego mikroprocesora? Dlaczego po prostu nie zwiększają liczby linii danych i nie tworzą 256-bitowego mikroprocesora lub 512-bitowego mikroprocesora?
Jaka jest przeszkoda, która uniemożliwia utworzenie 256-bitowego mikroprocesora lub 512-bitowego mikroprocesora?
microcontroller
microprocessor
architecture
Michael Harris
źródło
źródło
Odpowiedzi:
Pomyśl o tym. Czym dokładnie jest procesor „256-bitowy”? Co sprawia, że bitowość procesora jest na pierwszym miejscu?
Myślę, że jeśli nie zostaną wykonane dalsze kwalifikacje, bitowość procesora odnosi się do jego szerokości ALU. Jest to szerokość liczby binarnej, którą może obsłużyć natywnie w jednej operacji. Procesor „32-bitowy” może zatem działać bezpośrednio na wartościach do 32 bitów w pojedynczych instrukcjach. Twój 256-bitowy procesor zawierałby zatem bardzo dużą jednostkę ALU zdolną do dodawania, odejmowania, ORowania, ANDowania itp. 256-bitowych liczb w pojedynczych operacjach. dlaczego tego chcesz? Jaki problem sprawia, że duża i kosztowna jednostka ALU jest warta posiadania i płacenia, nawet w przypadkach, gdy procesor liczy tylko 100 iteracji pętli i tym podobne?
Chodzi o to, że musisz zapłacić za szerokie ALU, niezależnie od tego, czy używasz go często, czy tylko niewielką część jego możliwości. Aby uzasadnić 256-bitową ALU, musisz znaleźć wystarczająco ważny problem, który naprawdę może przynieść korzyści z manipulowania 256-bitowymi słowami w pojedynczych instrukcjach. Chociaż prawdopodobnie możesz podać kilka przykładów, nie ma wystarczającej liczby takich problemów, które sprawiają, że producenci czują, że kiedykolwiek uzyskają zwrot znacznych inwestycji wymaganych do wyprodukowania takiego układu. Jeśli istnieją niszowe, ale ważne (dobrze finansowane) problemy, które mogą naprawdę skorzystać z szerokiego ALU, to zobaczylibyśmy bardzo drogie, wysoce ukierunkowane procesory dla tej aplikacji. Ich cena uniemożliwiłaby jednak szerokie zastosowanie poza wąską aplikacją, dla której została zaprojektowana. Na przykład, jeśli 256 bitów umożliwi wojskowym zastosowanie pewnych aplikacji kryptograficznych, prawdopodobnie pojawią się wyspecjalizowane 256-bitowe procesory kosztujące od 100 do 1000 dolarów. Nie umieściłbyś jednego z nich w tosterze, zasilaczu, a nawet samochodzie.
Powinienem również wyjaśnić, że szeroka ALU nie tylko sprawia, że ALU jest droższa, ale także inne części układu. ALU o szerokości 256 bitów oznacza również, że muszą istnieć ścieżki danych o szerokości 256 bitów. Samo to zajmie dużo krzemu. Dane muszą skądś pochodzić i gdzieś iść, więc aby efektywnie korzystać z szerokiej jednostki ALU, potrzebne byłyby rejestry, pamięć podręczna, inna pamięć itp.
Inną kwestią jest to, że możesz wykonać dowolną arytmetykę szerokości na dowolnym procesorze szerokości. Możesz dodać 32-bitowe słowo pamięci do innego 32-bitowego słowa pamięci na PIC 18 w 8 instrukcjach, podczas gdy możesz to zrobić w tej samej architekturze skalowanej do 32 bitów w zaledwie 2 instrukcjach. Chodzi o to, że wąska ALU nie powstrzymuje cię przed wykonywaniem szerokich obliczeń, tylko że szerokie obliczenia potrwają dłużej. Jest to zatem kwestia szybkości, a nie możliwości. Jeśli spojrzysz na spektrum aplikacji, które wymagają użycia określonych liczb szerokości, zobaczysz, że bardzo niewiele wymaga 256-bitowych słów. Koszt przyspieszenia tylko kilku aplikacji za pomocą sprzętu, który nie pomoże innym, po prostu nie jest tego wart i nie stanowi dobrej inwestycji w rozwój produktu.
źródło
Cóż, nie wiem o 256 lub 512 bitach, ale słyszałem o 1024 bitowym procesorze (nie mogę go teraz znaleźć). Słowo to brzmi VLIW , bardzo długie słowo instrukcji . To jest magistrala instrukcji, a nie szerokość magistrali danych. Zaletą jest to, że można wdrożyć równoległość poziomu instrukcji (ILP) na dużą skalę.
Moje pierwsze spotkanie z ILP musiało mieć miejsce 20 lat temu z DSP Motoroli, które miały instrukcje dotyczące wykonywania MAC (zwielokrotniania i gromadzenia AC) podczas przenoszenia danych do iz pamięci, abyś mógł wykonać nowy MAC na następnej instrukcji, bez marnowania czas między dwoma MAC do przenoszenia danych.
Obecnie istnieją również sterowniki ogólnego przeznaczenia oferujące tę opcję. VLIW stosuje to na znacznie większą skalę.
Dalsza lektura
Architektura VLIW
źródło
„Bitowość” mikroprocesora jest zwykle definiowana w kategoriach wielkości rejestrów ogólnego przeznaczenia. Rozmiar określa, jak duże liczby procesor może obsłużyć natywnie i do jakiej ilości pamięci może uzyskać dostęp. 64-bitowe liczby są wystarczające dla prawie każdego algorytmu, a ilość adresowalnej pamięci (16 milionów terabajtów) wystarcza na dość długi czas. Zwiększenie rozmiaru rejestrów ogólnego przeznaczenia po prostu nie ma żadnej korzyści. Z drugiej strony obszar jednostek logicznych arytmetycznych (ALU) służących do wykonywania operacji na rejestrach skaluje się z kwadratem liczby bitów. 256-bitowy ALU byłby 16-krotnie większy i znacznie wolniejszy.
Z drugiej strony warto rozszerzyć procesor, aby umożliwić wykonywanie wielu mniejszych operacji jednocześnie. W rzeczywistości procesory Intel Sandy Bridge i Ivy Bridge właśnie to robią, mają 256-bitowe rejestry SIMD i mogą wykonywać na nich dwie operacje arytmetyczne i jedną operację pamięci na cykl. Można więc usprawiedliwić nazwanie ich procesorami 256-bitowymi, a nawet 768-bitowymi, jeśli ktoś był sprytnym sprzedawcą, który chciałby naginać regularnie używane terminy.
źródło
Po pierwsze, rozmiar bitu procesora jest zwykle określany przez abstrakcyjną architekturę widoczną dla programisty języka maszynowego, a nie przez szczegóły implementacji, takie jak rozmiar magistrali danych.
Na przykład Motorola 68000 jest 32-bitowym procesorem. Posiada 32-bitowe rejestry danych i 32-bitowe rejestry adresów. Teraz pierwsza wersja tej rodziny architektonicznej ujawnia tylko 24 bity linii adresowej. Ponadto istnieją warianty, które mają tylko 8-bitową szynę danych (więc procesor 32-bitowej pamięci wykonuje procesor jako wiele cykli dostępu).
A teraz pytanie: dlaczego nie przejść do 256 i 512. Procesory „natywnie” manipulują kilkoma rodzajami danych, dlatego warto przyjrzeć się, co oznaczają 256 lub 512 bitów dla każdego z tych typów danych osobno. Mamy liczby całkowite, wskaźniki i zmiennoprzecinkowe.
Liczby całkowite: Programy mają duży przebieg z liczb całkowitych 32- i 64-bitowych. Jeśli ograniczenie to 64 bity, poprawką jest posiadanie zaimplementowanych programowo liczb całkowitych bignum. Języki wysokiego poziomu mogą implementować typy liczb całkowitych, dzięki czemu operacje płynnie przełączają się między „fixnums” i „bignums”. Oczywiście bierzesz wydajność za pomocą bignum, ale musisz wziąć to pod uwagę na dużym obrazie: ile operacji w programie to operacje bignum. Liczby 256 lub 512 bitów nie eliminują zapotrzebowania na bignum, zwiększają tylko zapas, zanim będziemy musieli przejść na bignum. Jeśli chcesz manipulować 2048-bitowymi kluczami publicznymi, 512-bitowe liczby całkowite nie będą działać (ale bignum z 512-bitowymi cyframi może być szybkie).
Wskaźniki: Szersze wskaźniki pozwalają na dwie rzeczy: szersze przestrzenie adresowe i dodatkowe metadane przechowywane we wskaźniku. Przestrzenie adresowe są w dzisiejszych czasach wirtualne i mogą się powiększać, nawet jeśli wspomnienia nie rosną. Zasugerowano, że jeśli masz 128-bitowe wskaźniki, przestrzeń adresowa jest tak ogromna, że możesz umieścić wszystkie procesy przestrzeni użytkownika systemu operacyjnego i jądra w losowych miejscach w pojedynczej niechronionej przestrzeni, i jest mało prawdopodobne kolidować. Zamiast po prostu tworzyć większą przestrzeń adresową, grubsze wskaźniki mogą być używane do przenoszenia bitów, które nie są bitami adresowymi, takich jak informacje o obiekcie referencyjnym (typ, rozmiar i inne informacje) lub informacje związane z bezpieczeństwem. Prawdopodobnie istnieje pewna „optymalna grubość” dla tego rodzaju rzeczy, a jeśli miałbym zgadywać, nadal ograniczałbym ją do 128 bitów. Nie robi Wydaje się, że sensowne jest przechodzenie do 256-bitowych wskaźników, nie wspominając o 512. Grubsze wskaźniki mają wadę: nadymają wszystkie struktury danych, które zawierają wskaźniki. I ogólnie rzecz biorąc, chcesz, aby wskaźniki miały ten sam rozmiar, w przeciwnym razie potrzebujesz komplikacji w architekturze zestawu instrukcji (np. Segmenty pamięci), dzięki czemu będziesz mieć pełne wskaźniki (deskryptor i przesunięcie segmentu) lub tylko wskaźniki lokalne (przesunięcie w obrębie pewnego zrozumiałego segmentu) .
Typy zmiennoprzecinkowe: więcej bitów w liczbach zmiennoprzecinkowych oznacza większą precyzję. Powiedziałbym, że typy zmiennoprzecinkowe odnoszą największe korzyści z szerszej reprezentacji. 256 lub 512-bitowy zmiennoprzecinkowy poprawi stabilność kodu numerycznego i jakość obliczeń naukowych wymagających wielu iteracji i będzie kumulował błędy po drodze. Precyzja w liczbach zmiennoprzecinkowych to nie to samo co precyzja w liczbach całkowitych: nie możemy rozdzielić typu liczb zmiennoprzecinkowych na zakresy, takie jak fixnum kontra bignum. Większa precyzja w zmiennoprzecinkowym wpływa na jakość wszystkich niedokładnych liczb, niezależnie od tego, czy są one bliskie zeru, czy mają dużą wielkość. Więcej bitów w wykładnikach zmiennoprzecinkowych może również znacznie rozszerzyć zakres liczb zmiennoprzecinkowych i znacznie szybciej niż dodawanie bitów do liczby całkowitej bignum.
Z tych powodów podejrzewam, że dominującym trendem w przyszłości będzie wzrost szerokości sprzętowych liczb zmiennoprzecinkowych, niekoniecznie po nim wzrost szerokości wskaźników i liczb całkowitych.
Pamiętaj, że liczby zmiennoprzecinkowe były wcześniej w porównaniu z innymi typami w przeszłości. Na przykład przez pewien czas mieliśmy przewagę 32-bitowych procesorów obsługujących 64-bitowe podwójne zmiennoprzecinkowe IEEE. Wynika to z faktu, że chociaż możesz wiele zrobić z 32-bitowymi wskaźnikami i liczbami całkowitymi, 32-bitowe zmiennoprzecinkowe są bardzo ograniczone do każdej poważnej pracy liczbowej.
Jedną bardzo, bardzo przydatną funkcją, która byłaby miło widzieć w reprezentacjach zmiennoprzecinkowych, byłoby kilka zapasowych bitów dla znacznika typu. Implementacja typów zmiennoprzecinkowych w dynamicznych językach wysokiego poziomu (w których obiekty mają typ, ale w lokalizacjach pamięci przechowują wartości dowolnego typu) jest trudnością, ponieważ podczas gdy zapasowe bity można znaleźć w wskaźnikach i obiektach podobnych do liczb całkowitych w celu umieszczenia części identyfikując typ, jest to trudne w przypadku liczb zmiennoprzecinkowych. Często zdarza się, że liczby zmiennoprzecinkowe są przydzielane do stosu. Niektóre schematy kradną bity z mantysy, więc typy zmiennoprzecinkowe w tym języku tracą precyzję w porównaniu do liczb zmiennoprzecinkowych w innych językach na tej samej maszynie.
źródło
W rzeczywistości nie pomaga ci to zrobić nic przydatnego. 64-bitowe liczby zapewniają wystarczającą precyzję do prawie wszystkich celów (choć systemy Intel mają 80-bitowy zmiennoprzecinkowy), ale dodatkowe linie zwiększają koszty i zużycie energii, a jednocześnie mają niewielki negatywny wpływ na szybkość zegara.
Historycznie procesory używają minimalnej liczby bitów, która ma praktyczny sens zgodnie z ich przeznaczeniem. Dzięki postępowi technologicznemu możliwe stały się szersze autobusy i ALU, stąd zwiększenie wielkości autobusów w celu szerszego zastosowania:
źródło
W rzeczywistości takie procesory istnieją i są wspólne, w zależności od tego, jak zdefiniujesz bitowość. Teraz prawie na pewno używasz jednego. Jak wyjaśnił Olin, w przypadku liczb 256-bitowych nie ma większego zastosowania, ale co z liczbami 4 x 32-bitowymi? Co jeśli ALU mógłby dodać 4 pary liczb 32-bitowych jednocześnie. Takie ALU (które znam) zostały po raz pierwszy zaimplementowane w superkomputerach wektorowych w 1970 roku. Pierwszy raz miałem taki komputer, kiedy miałem jedno z procesorów Intel Pentium z MMX.
Pamiętasz tych facetów?
Układy MMX miały zestaw instrukcji pojedynczej instrukcji - wiele danych ( SIMD ), co pozwala na dodanie 1 × 64-bitowej pary, 2 × 32-bitowej pary, 4 × 16-bitowej pary lub 8 × 8-bitowej pary.
Ale to nic. Nowoczesna karta graficzna ma procesor graficzny (który kiedyś oznaczał jednostkę przetwarzania grafiki, ale teraz oznacza jednostkę przetwarzania ogólnego). Są to często szerokie implementacje SIMD, zdolne do rozgałęziania, ładowania i przechowywania na 128 lub 256 bitach jednocześnie. Prototypowa mikroarchitektura Intel firmy Larrabee zawiera więcej niż dwa 512-bitowe rejestry SIMD na każdym z jej rdzeni.
Należy pamiętać, że SIMD nie należy mylić z wielordzeniowym. Każdy rdzeń procesora będzie miał swoją własną szeroką jednostkę ALU zdolną do dodania zestawu liczb całkowitych.
źródło
Ponieważ jeszcze tego nie potrzebujemy.
Zwykle bitowość (którą zdefiniowałbym jako liczbę bitów w rejestrze) przekłada się mniej więcej bezpośrednio na ilość pamięci adresowalnej. Jest to oczywiście uproszczone, ponieważ w zależności od procesora mogą istnieć rejestry o 2-krotności długości bitowej lub istnieją techniki pozwalające obejść te ograniczenia pamięci (czy ktoś pamięta programowanie w 16-bitowych oknach?).
źródło
„Dlaczego po prostu nie zwiększają liczby linii danych i nie tworzą 256-bitów”
Wszystkie procesory Intel pasujące do gniazda LGA-2011 mają w rzeczywistości 256 pinów danych, łączących się z 256 liniami danych na płycie głównej, które prowadzą do pamięci DRAM. Byłbym trochę zaskoczony, gdyby najnowszy laptop lub komputer stacjonarny, z którego korzystałeś, nie miał co najmniej 256 linii danych. Czy mogę zapytać, skąd bierze się ten błędny pomysł, że „nie ... po prostu zwiększają liczbę linii danych”?
LGA-2011 Gniazdo Zestawienie danych , punkt 6.1, wskazuje, że te procesory mają kołki 256 danych i 76 kołki adres (adresy Bank + adres pamięci).
źródło
ponieważ nie ma aplikacji, która potrzebuje lub ma możliwość reprezentowania danych przy użyciu więcej niż 128 bitów jednocześnie.
i wiesz, procesory multimedialne i karty graficzne dotrą tam znacznie wcześniej niż procesory na płytach głównych, tylko dlatego, że w przypadku zdjęć / filmów sensowne jest użycie tak dużych danych do przetworzenia na raz.
źródło
System komputerowy oznacza maszynę komputerową, która wymaga pewnych danych wejściowych i daje pewne dane wyjściowe. Musimy zadowolić komputer w tych liniach, dlatego programiści zaczęli testować, mając 3 magistrale, a mianowicie magistralę adresową, magistralę danych i magistralę sterującą. 1) Pobieranie magistrali adresowej / Wybierz konkretny adres w pamięci dla operacji odczytu / zapisu. 2) Magistrala danych następnie pobiera dane Prezentuje te dane do / z procesora i pamięci do celów przetwarzania / przechowywania. 3) Magistrala sterująca Utwórz protokół kontrolujący interfejs i prosi system o jego przestrzeganie.
Są one wymagane do wykonania użytecznych obliczeń dla użytkownika / serwera / klienta. Ogólnie wydajność (szybkość wykonania zadania, mniej błędów itp.) Zależy od wyczyszczenia szyjek butelek w systemie. tzn. jeśli procesor jest w stanie przetwarzać z szybkością znacznie wyższą niż prędkość transferu z dysku twardego, szyjka butelki występuje na dysku twardym. Podobnie musimy mieć odpowiednią szybkość przetwarzania dla określonych prędkości danych i szerokości kodu.
Od samego początku, z różnych powodów, takich jak złożoność sprzętu, koszt, wymaganie, efektywne algorytmy i główny powód, dla którego zakres rynku jest główną przeszkodą w produkcji wysokiej szerokości magistrali danych, jak wspomniał gospodarz pytania, powiedzmy 256 bit lub 512 bitów. To jest możliwe! Ale wymaganie nie jest jeszcze obecne, zakres rynku nie jest jeszcze widoczny w dzisiejszych potrzebach i braku komplementarnej obsługi oprogramowania.
256-bitowy procesor oznacza szerokość magistrali danych, którą dany procesor może obsłużyć, lub jednostka ALU może przetwarzać w jednym wykonaniu. Zaczęliśmy od 4 bitów, następnie 8,16,32, a obecnie 64, a nawet 128 bitów, które są obecnie produktami o zasięgu rynkowym.
Dlatego przed zadaniem tych pytań musisz zawsze zobaczyć popyt po stronie rynku i jego zakres. W historii jest to jedyny prosty sposób na zrozumienie sposobów życia. Jeśli nie możesz sobie na to pozwolić, jak możesz to kupić? a jeśli nie możesz go kupić, to w jaki sposób producent może produkować? a jeśli nie może produkować, to nie ma istnienia dla tego produktu !!
źródło