Компютърни системи с 64-битови процесори на Intel и AMD.
Основни характеристики
1.Кратка хронология на 64-битовите процесори
От появата на компютрите с първите 32-битови процесори 80386 през 1986 г., всички процесори за PC, които се произвеждат в продължение на около 15 години (до Intel Pentium 4 и AMD Athlon XP), са 32-битови, каквито и подобрения в архитектурата да имат.
Едва през 2001 г., Intel представят първия 64-битов процесор за сървъри Itanium (произнася се ai’teiniəm) последван през 2002 г. от подобрения Itanium 2. През 2003 г. AMD представя първите 64-битови процесори за x86-съвместими настолни компютри Athlon 64 и Athlon 64FX и първия 64-битов процесор за сървъри Opteron. През 2004 г. Intel представя серия от версии на процесора Pentium 4 за настолни компютри, които поддържат 64-битовото разширение Intel 64. След това през 2005 г., Intel въвеждат 64-битовите версии на процесорите Xeon за работни станции и сървъри и двуядрените 64-битови процесори Pentium D и Pentium Extreme Edition, които са последните процесори, използващи NetBurst. След изчерпване възможностите на NetBurst архитектурата, Intel създават редица 64-битови процесори, базирани на микроархитектурите Core, Atom и Nehalem. Успоредно с развитието на процесорите на Интел и в конкуренция с тях се развиват и процесорите на AMD. През 2005 г. са представени 64-битовите процесори от семейството Athlon 64 X2, които са първите двуядрени процесори за настолни компютри на AMD. През 2007 г. започва производството на 64-битови процесори с новата архитектура AMD K10, с кодово име Phenom.
2.Подходи при създаването на 64-битови процесори
При създаването на 64-битови процесори се използват два основни подхода:
-
създаване на изцяло нова 64-битова архитектура, несъвместима с архитектурата х86 – използван от Intel и Hewlett Packard в архитектурата IA-64, приложена в процесорите Itanium и Itanium 2. Основното предназначение на тази архитектура е за сървъри. Отначало се предлагала и в качеството на платформа за настолни компютри, но след появата на архитектурата AMD64, запазваща съвместимостта с x86, производителите, в това число и Intel, се отказват да я използват за друго, освен за сървъри; въпреки че в края на 2001 г. е създадена специална 64-битова версия на Windows XP за IA-64.
-
еволюция на съществуващата x86 архитектура, чрез добавяне на 64-битови изчислителни възможности – предложена от AMD през 1999 г. и за пръв път приложена през 2003 г. за процесорите Opteron – за сървъри и Athlon 64 и Athlon 64FX – за настолни компютри. Следвайки AMD, Интел създават своя версия на тази архитектура и за пръв път я използват през 2004 г. в процесорите Xeon с кодово име Nocona. Такава технология се осъществява и от други фирми като Via.
При първия подход архитектурата IA-64 (наречена по-късно Itanium) е основана на технологията EPIC (explicitly parallel instruction computing – изчислeния с явна паралелност на инструкциите), което позволява да се извършват до 20 операции за такт. Технологията EPIC съчетава в себе си силните страни на архитектурите RISC и VLIW.
Според Джон Крофорд (John Crawford)1, един от създателите на Itanium архитектурата, особеностите на архитектурата EPIC са:
-
Явен паралелизъм в машинния код. Търсенето на зависимости между командите се извършва от компилатора (програмата за превод на машинен език), а не от процесора;
-
Голямо количество регистри;
-
Мащабируемост на архитектурата до голямо количество функционални устройства;
-
Предикация (Predication). Командите от различните разклонения на условния оператор се снабдяват с предикатни полета (полета за условия) и се стартират паралелно;
-
Зареждане по предположение (Speculative loading). Данните от бавната основна памет се зареждат предварително.
Главният принцип на EPIC е да се даде възможност на програмиста или компилатора явно да укаже вътрешната паралелност на инструкциите в програмата, като в същото време позволява и на апаратната част да открива участъците, подходящи за разпаралелване.
С други думи, при тази технология компилаторът взема решения кои инструкции да се изпълняват паралелно за разлика от другите суперскаларни архитектури, които разчитат на сложни схеми в процесора, за да се следят зависимостите на инструкциите по време на изпълнение.
Архитектурата е с 64-битови регистри. Базовата дума за данни е 64 бита, байт адресируема. Логическото адресно пространство е 264 байта. Архитектурата реализира предикация, предположения (speculation) и предсказване на разклоненията. Тя използва хардуерен механизъм за преименуване на регистъра. Същият механизъм се използва и за разрешаване на паралелно изпълнение на циклите. Предположенията, прогнозите, предикацията и преименуването са под управление на компилатора: всяка дума с инструкция включва допълнителни битове за това. Този подход е отличителната характеристика на архитектурата.
Архитектурата IA-64 реализира 128 целочислени регистри, 128 регистри с плаваща запетая, 64 еднобитови предикати (твърдения) и осем регистъра на разклоненията. Регистрите с плаваща запетая са 82 бита дълги, за да се запази точността за междинните резултати.
Вторият подход (еволюционен) е разработен от Advanced Micro Devices (AMD) като алтернатива на коренно новата архитектура IA-64 на Intel и Hewlett Packard. При него се добавят 64-битови изчислителни възможности към съществуващата x86 архитектура.
Оригиналното наименование на 64-битовото разширение на набора инструкции за x86, специфициран от Advanced Micro Devices (AMD) е x86-64. При него се осигуряват 64-битови процесорни регистри за обща употреба, удвоява се широчината на целочислените регистри за аритметични и логически операции от 32 до 64 бита, увеличава се броят на целочислените регистри, разширяват се виртуалните и физически адресни пространства, и други разширения и усъвършенствания. То е напълно обратно съвместимо с 32-битовия код, без намаляване на производителността. По-късно този набор инструкции се представя от AMD под името AMD64, а реализацията на Intel отначало се нарича EM64T (Extended Memory 64 Technology), а от 2006 г. е под името Intel 64 (подобно на начина на именуване на AMD).
Най-значимите промени на x86-64 са:
-
64-битови възможности за целите числа: Всички регистри за обща употреба са разширени от 32 на 64 бита и всички аритметични и логически операции, операции „памет към регистър” и „регистър към памет” могат да работят директно с 64-битови цели числа. Поставянията и свалянията на данни от стека са винаги в 8-байтови крачки и указателите са широки 8 байта.
-
Допълнителни регистри. Като допълнение към увеличения размер на регистрите за обща употреба, броят на именуваните регистри за обща употреба е увеличен от 8 (eax, ebx, ecx, edx, ebp, esp, esi, edi) при 32-битовата архитектура, на 16 (rax, rbx, rcx, rdx, rbp, rsp, rsi, rdi, r8, r9, r10, r11, r12, r13, r14, r15). Следователно е възможно да се съхраняват повече локални променливи в регистрите, отколкото в стека, и се позволява на регистрите да държат често използвани константи. Аргументите за малки и бързи процедури могат също да бъдат подадени в регистрите в по-голям обхват. При все това AMD64 има значително по-малък брой регистри в сравнение с други 64-битови машини като RISC ISA (32-64 регистъра) или Itanium (128 регистъра)
-
Допълнителни XMM (SSE) регистри: Броят на 128-битовите XMM регистри (използвани за Streaming SIMD инструкциите) също е увеличен от 8 на 16
-
По-голямо пространство на виртуални адреси: При 32-битовите x86 то е 4 GB1 (232 байта), а при AMD64 е увеличено на 256 TB (248 байта), с възможности за увеличение в бъдещи реализации до 16 EB (264 байта).
-
По-голямо пространство на физическите адреси: При 32-битовите x86 то е 64 GB (236 байта). Сегашните реализации (от AMD К10) могат да адресират до 256 TB (248 байта) RAM, а архитектурата позволява разширяване до 4 PB (252 байта).
-
Указателят към инструкциите е относителен спрямо достъпа до данните: Инструкциите могат сега да се обръщат към данните спрямо указателя на инструкции (RIP регистър). Това прави независимия от позицията код 2 по-ефективен.
-
SSE инструкции: Оригиналната AMD64 архитектура възприема SSE и SSE2 като инструкции на ядрото. Инструкциите SSE3 са добавени през април 2005. SSE2 инструкциите използват 32-битова или 64-битова математика с плаваща запетая. Инструкциите SSE и SSE2 също са разширени да оперират с новите осем XMM регистри. Освен това тези инструкции са по-бързи и дублират повечето от традиционните x87 инструкции MMX и 3DNow!
-
NX бит (No-Execute bit - бит за неизпълнение) е бит 63 от таблицата на страницата, който позволява на операционната система да определи кои страници от пространството на виртуални адреси могат да съдържат изпълним код и кои не могат. Опитът да се стартира код от страница, маркирана като „неизпълнима” ще доведе до забрана за достъп до паметта, подобно на опита да се записва в страница „само за четене”. Това прави по-трудно за вредния код да поема управлението върху системата чрез атаки от типа „препълване на буфера” или „непроверен буфер”.
Литература
-
Mueller, Scott Upgrading and Repairing Pcs, 17th Edition. Que. 2006.
-
Mueller, Scott Upgrading and Repairing Pcs, 19th Edition. USA, Que, 2009.
-
Официален сайт на Интел http://www.intel.com
-
Официален сайт на AMD http://www.amd.com
Сподели с приятели: |