Znajdujesz się w sekcji Blogosfera. Zamieszczone tutaj materiały zostały opracowane przez użytkowników serwisu, bądź są owocem samodzielnej pracy redaktorów. Redakcja ITHardware nie ponosi odpowiedzialności za treść poniższej publikacji.

Co ma wspólnego Intel 8086 (1978) z Core i7-8700K (2017)?

Co ma wspólnego Intel 8086 (1978) z Core i7-8700K (2017)?

Ostatnio kolega Opson popełnił ciekawy, retrospekcyjny wpis na temat historii procesorów Pentium. Powspominaliśmy stare czasy roniąc przy tym łezkę nostalgii. Niejako przy okazji zacząłem zastanawiać się, dlaczego nikt nie pyta o etymologię i znaczenie określenia "architektura x86". Koniec końców towarzyszy ono nam nieprzerwanie od 1978 roku, kiedy to odbyła się premiera układu Intel 8086, w równym stopniu dotycząc zarówno rzeczonej jednostki, jak i najnowszego Core i7-8700K. Śledząc rynek komputerowy przyzwyczailiśmy się, iż nawet rok czasu może zaowocować znaczącym postępem, a tymczasem architekturze x86 stuknie niebawem okrągła czterdziestka. I w najbliższym czasie nie zanosi się na jej zmianę. O co zatem chodzi z tym x86? Jeśli zainteresowałem Was tematem, to gorąco zachęcam do dalszej lektury.

Procesor Intel C8086 / źródło: Wikipedia

Pojęcie architektury bywa niezwykle często mylone (i stosowane zamiennie) z pojęciem mikroarchitektury, co stanowi poważny błąd. To, co znamy jako Skylake czy Zen nie jest architekturą, ale mikroarchitekturą i definiuje detale związane z fizyczną budową procesora - rozkład i funkcje poszczególnych bloków, sposób ich połączenia, itd. Sama architektura jest natomiast synonimem modelu programowego, czyli jak słusznie punktuje Wikipedia, ogólnym określeniem dotyczącym organizacji, funkcjonalności i zasad działania procesora, widocznym z punktu widzenia programisty jako dostępne mechanizmy programowania. Mniej enigmatycznie można nazwać to zestawem dostępnych instrukcji i cech charakterystycznych takich jak typy danych, liczba dostępnych rejestrów czy tryby adresowania, które muszą być wzajemnie zgodne pomimo różnic w mikroarchitekturze. Jak już zdążyłem wspomnieć, architekturę x86 zapoczątkował w 1978 roku Intel 8086. Jest to procesor 16-bitowy, a zatem wszystkie adresy, słowa i dane muszą zmieścić się na 16 bitach. Termin x86 wynika bezpośrednio z jego oznaczenia. Co oczywiste, Intel 8086 znacząco odbiega od współczesnych, skomplikowanych układów. Przede wszystkim bazuje na porzuconej lata temu koncepcji CISC, co sprawia, że wykonuje złożone rozkazy, ale wymaga do tego niekiedy kilkunastu cykli zegara, a to negatywnie rzutuje na wydajność. Nawiasem mówiąc, w późniejszych latach porzucono takie podejście na rzecz RISC, a więc niewielkiej liczby prostych i szybko wykonywanych rozkazów, by wreszcie przejść do znanego po dziś dzień "rozkładania" poleceń CISC we front-endzie na RISC, ale o tym może następnym razem. Teraz najistotniejsze jest to, iż każdy PC-towy procesor wydany po Intelu 8086 musi być z nim wstecznie zgodny.

Schemat blokowy procesora Intel 8086 / źródło: Wikipedia

A co takiego potrafi ten Intel 8086? Cóż, aktualnie może zabrzmieć to cokolwiek zabawnie, ale na swoje czasy był to naprawdę skomplikowany układ. Składa się na bowiem z dwóch skoordynowanych zespołów - jednostki wykonawczej oraz interfejsowej, łączącej całość z magistralą systemową. Jednostka wykonawcza współtworzona jest przez blok rejestrów ogólnego przeznaczenia i jednostkę arytmetyczno-logiczną (ALU). Z kolei w skład jednostki interfejsowej wchodzą blok rejestrów segmentowych wraz z licznikiem rozkazów, 20-bitowy sumator zwany też generatorem adresu fizycznego, kolejka rozkazów, sześć komórek pamięci o rozmiarze jednego bajta każda, kontroler interfejsu i układ kontrolny. Zainteresowanych dokładną budową procesora Intel 8086 odsyłam do Wikipedii, gdzie jest to niezwykle czytelnie opisane. Z perspektywy dzisiejszego tematu najlepiej priorytetowo skupić się na trybach adresowania. Oczywiście, jak to w przypadku technologii bywa, architektura x86 także ulega rozwojowi. W roku 1985 wprowadzono procesor Intel 80386, który jako pierwszy korzystał z 32-bitowego słowa, dając zalążek dla architektury x86_32 lub, jak kto woli, IA-32 (od Intel Architecture 32). Swoją drogą, to właśnie ten układ stanowi podwaliny dla serii Pentium. Parę lat później, a dokładnie w roku 2003 AMD wprowadziło procesor Athlon 64, a wraz z nim instrukcje 64-bitowe. Cały czas jednak wszystkie układy musiały być wstecznie zgodne, a więc wykonywać kod napisany pierwotnie dla Intela 8086. W międzyczasie pojawiło się też pojęcie zestawu instrukcji, np. MMX czy SSE, czyli rozszerzenia wprowadzającego nowe rozkazy w obrębie niezmiennej architektury. W tym miejscu warto doczytać chociażby o Pentium MMX (czyli 32-bitowym Pentium z rozszerzeniem MMX) czy AMD K6.

Ostatecznie, odpowiadając zwięźle na pytanie postawione w tytule, wygląda to tak, iż każdy PC-towy procesor po dziś dzień musi co najmniej oddawać funkcjonalność blisko czterdziestoletniego Intela 8086 - wykonać te same rozkazy, obsłużyć identyczne typy danych, itd. Korzysta więc z tej samej architektury, pomimo zupełnie odmiennej mikroarchitektury, czyli fizycznych cech budowy. I tak długo, jak producenci będą chcieli zachować pełną kompatybilność wsteczną ze starszymi chipami bez konieczności uciekania się do ich emulacji (programowego symulowania cech platformy), architektura x86 musi pozostać z nami.

Pokaż / Dodaj komentarze do: Co ma wspólnego Intel 8086 (1978) z Core i7-8700K (2017)?

 0