Централен процесор

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене
Емблема за пояснителна страница Вижте пояснителната страница за други значения на ЦПУ.

Емблема за пояснителна страница Тази статия е за принципите на работа на процесора. За отделните видове вижте Микропроцесор.

Ядро на микропроцесор Intel 80486DX2 (реални размери: 12×6,75 mm)

Централният процесор (от английски: Central processing unit, „централно обработващо устройство“), наричан още ЦП (CPU), е основна част на електронноизчислителна машина, която декодира и изпълнява инструкциите на програмното осигуряване. Често се наричана само процесор, макар че в много съвременни системи има и други процесори, изпълняващи специализирани функции.

Терминът процесор започва да се използва в началото на 60-те години на 20 век,[1] но макар че формата и устройството на централните процесори са се променили драстично оттогава поради напредъка на микроелектрониката, основните принципи на тяхната работа са същите. Първите процесори са проектирани за отделни големи компютри, но с времето се налага серийното производство на процесори, някои от които предназначени за множество разнообразни задачи.

Тенденцията към стандартизация започва още по времето на процесорите, съставени от дискретни транзистори и бързо се засилва с масовото въвеждане на интегралните схеми. С напредъка в тяхната миниатюризация, централните процесори все по-често се изпълняват като една интегрална схема и се наричат микропроцесори. Те са евтини, серийно произвеждани устройства и днес намират широк кръг приложения, далеч надхвърлящ първоначалното им предназначение в големите машини. Съвременните микропроцесори се използват в различни технически системи – от автомобили до мобилни телефони и детски играчки.

История[редактиране | редактиране на кода]

Ранни компютри[редактиране | редактиране на кода]

EDVAC, един от първите електронни компютри със съхранявана програма

Първите компютри, от типа на ENIAC, са механични, т.е. имат нужда от физическа промяна на свързването на работните компоненти, за да извършват различни действия и изпълняват задачи. Впоследствие те еволюират до електромеханични (използващи релета). Най-ранните устройства, които могат да бъдат наречени процесори, са свързани с концепцията за програмируем компютър, в който вътре в машината се записва последователност от инструкции (компютър със съхранявана компютърна програма). Идеята съществува още в проекта на Джон Преспър Екърт и Джон Мокли за ENIAC, но е изоставена, за да може машината да бъде завършена по-бързо. На 30 юни 1945 година, преди завършването на ENIAC, математикът Джон фон Нойман публикува изследване, озаглавено „Първа чернова на доклад за EDVAC“ („First Draft of a Report on the EDVAC“), в което описва принципите на компютър със съхранявана програма, който трябва да бъде завършен през август 1949 година.[2] EDVAC е проектиран за изпълнението на известен брой различни инструкции, които могат да бъдат съчетавани, така че да образуват полезни програми.

Най-важното нововъведение при EDVAC е, че програмите се съхраняват във високоскоростна памет, вместо да се определят чрез начина на физическо свързване на компонентите на компютъра. По този начин е преодоляно най-тежкото ограничение на ENIAC – значителното време и усилия, необходими за преконфигуриране на компютъра за изпълнение на нова задача. В компютъра на Фон Нойман програмата може да бъде променена само с промяната на съдържанието на паметта на компютъра. Още преди завършването на EDVAC, ENIAC е реконструиран по начин, позволяващ му също да съхранява програми.

Макар че обикновено заслугата за създаването на компютъра със съхранявана програма се приписва Джон фон Нойман, има и други преди него, които са предлагали и прилагали подобни идеи – например Конрад Цузе. Системата Mark I, завършена преди EDVAC, също използва съхранявани програми, но записани на хартиена перфолента, вместо в електронна памет. Основната разлика между EDVAC и Mark I в това, че при Mark I съхранението и обработката на данните и инструкциите е разделено, докато в системата на Фон Нойман, както и в повечето съвременни процесори, те използват една и съща памет.

Като цифрово устройство процесорът е ограничен до определено множество дискретни състояния и има нужда от някакъв вид превключващи елементи, за да разграничава и променя тези състояния. Преди широкото разпространение на транзисторите за тази цел обикновено се използват релета и електронни лампи. Въпреки че тези устройства са значително по-бързи от по-ранните механични превключватели, по различни причини те не са много надеждни. Така например изграждането на правотокови схеми с последователна логика от релета изисква допълнителен хардуер за елиминиране на проблема с контактните скокове. При електронните лампи този проблем не съществува, но те трябва да се нагреят, преди да станат напълно годни за използване, а с времето спират да работят, заради замърсяването на катодите им, което се получава в резултат на нормалния им начин на работа, а при разхерметизиране на лампата бързо се ускорява. При проблем с дадена лампа целият процесор трябва да се диагностицира, за да се локализира и да се подмени повредената лампа.

По изброените причини ранните електронни (лампови) компютри са като цяло по-бързи, но по-ненадеждни от електромеханичните (използващи релета) машини. Ламповите компютри, като EDVAC, работят средно около 8 часа между отделните повреди, докато релейни системи, като Mark I, се повреждат много рядко.[1] В крайна сметка ламповите процесори стават по-широко разпространени, тъй като значително по-голямата скорост се оказва по-важна от проблемите с надеждността.

Повечето от тези ранни синхронни процесори работят с ниска тактова честота, в сравнение със съвременните микроелектронни устройства. През този период обичайните честоти на системния часовник са от 100 kHz до 4 MHz, като основният ограничаващ фактор е скоростта на превключващите устройства.

Дискретни транзистори и интегрални схеми[редактиране | редактиране на кода]

Централен процесор, памет и външна шина на DEC PDP-8/I., изградени с интегрални схеми

Устройството на процесорите се усложнява, след като различни нови технологии улесняват създаването на по-малки и по-надеждни електронни устройства. Първото такова изобретение е транзисторът. През 50-те и 60-те години базираните на транзистори процесори вече не разчитат на обемисти, ненадеждни и нетрайни превключващи елементи, като електронните лампи и релетата. Това дава възможност за изграждането на по-сложни и надеждни процесори, съставени от една или повече печатни платки, съдържащи отделни компоненти.

През този период се разпространява един нов метод за производство на голям брой транзистори в ограничено пространство. Интегралната схема позволява множество транзистори да се включат в един общ полупроводников цокъл, наричан чип. Първоначално интегралните схеми се използват само за много прости неспециализирани схеми, например за отделни логически елементи. Процесорите, базирани на такива елементарни интегрални схеми, обикновено се наричат устройства със слаба интеграция (SSI). SSI интегралните схеми, използвани в компютри като Apollo Guidance Computer, обикновено съдържат по няколко десетки транзистори. Изграждането на цял процесор от SSI интегрални схеми изисква хиляди отделни чипове, но все пак отнема много по-малко пространство и има по-нисък разход на енергия от дотогавашните устройства с дискретни транзистори. С напредъка на микроелектрониката, интегралните схеми започват да включват все повече транзистори, намалявайки броя на отделните схеми, необходими за създаване на пълен процесор. Интегралните схеми със средна (MSI) и силна интеграция (LSI) вече имат стотици, а след това и хиляди транзистори. Така първият компютър на DEC с LSI устройство, вариант на модела PDP-11, има процесор с едва четири интегрални схеми.[3]

През 1964 година IBM въвеждат компютърната архитектура System/360, в която за пръв път е въведена идеята за микрокод и стандартизиране на програмите изпълнявани от процесорите. Дотогава повечето електронни компютри, включително такива от един и същ производител, са несъвместими и не могат да изпълняват едни и същи програми.[4] Архитектурата System/360 става толкова популярна, че в продължение на десетилетия доминира на пазара на мейнфрейм компютри.

Базираните на транзистори процесори имат няколко отчетливи предимства пред своите предшественици. Освен подобрената надеждност и по-ниската консумация на енергия, те имат и много по-висока скорост, поради по-краткото време на превключване на транзистора в сравнение с електронната лампа или релето. Благодарение на увеличената надеждност и значително по-високата скорост на превключващите елементи, през 60-те години процесорите достигат тактови честоти от десетки мегахерци. През този период се появяват и първите високоефективни векторни процесори, ранни предшественици на по-късните специализирани суперкомпютри.

Микропроцесори[редактиране | редактиране на кода]

Появата на микропроцесорите през 70-те години значително променя устройството и приложението на процесорите. След появата на пазара на първия микропроцесор (Intel 4004) през 1970 година и на първия модел, получил широко разпространение (Intel 8080) през 1974 година, тази група процесори измества почти напълно останалите видове. Основните производители на мейнфрейм компютри и миникомпютри започват собствени разработки, за да подобрят дотогавашните си компютърни архитектури, и създават микропроцесори с набори от инструкции, съвместими с използваните в по-старите им системи хардуер и софтуер. В резултат на този процес, съчетан с появата и масовия успех на персоналните компютри, днес понятието „процесор“ се отнася почти изключително до микропроцесорите.

Докато по-старите модели процесори са съставени от отделни компоненти и множество интегрални схеми, разположени върху една или повече Печатна платка, микропроцесорите съдържат само една или най-много няколко интегрални схеми. По-малкият общ размер на процесора, представляващ самостоятелен чип, позволява съкращаване на времето за превключване и синхронизирани микропроцесори могат да достигат тактови честоти от десетки мегахерци до няколко гигахерца. С нарастването на възможностите на технологията се конструират все по-малки елементи, а сложността и броят на транзисторите в отделния процесор силно се увеличават. Според закона на Мур технически постижимата плътност на транзисторите в интегралните схеми се удвоява за 18 до 24 месеца.

Въпреки това основните принципи на функциониране остават приблизително същите. Почти всички съвременни процесори могат да бъдат точно описани като машини на Фон Нойман със съхранявана програма. Въпреки че законът на Мур продължава да е в сила, през последните години се поставя въпроса за ограниченията в технологията на интегралните схеми. Крайната минитюаризация на логическите елементи увеличава въздействието на физични явления, като електромиграцията, които могат да попречат на този процес. Това е една от причините да се търсят нови конструкции на процесорите, като квантовия компютър, както и да се разширяват приложенията на паралелизма и на други методи, разширяващи класическия модел на Фон Нойман.

Общо описание[редактиране | редактиране на кода]

Съвременният микропроцесор най-общо се състои от ядро и кеш-памет (от първо, второ и трето ниво, а може и да липсва) и входни, изходни и контролни изводи от общ електрически характер. Той изпълнява набор от команди, реализирани логически от транзисторни схеми. Основни характеристики са: честота на работа на ядрото, честота на работа с входно/изходните канали и обем на кеш-паметта за всяко ниво. Процесорът също така може да бъде синхронен (синхронизиран с външен или вътрешен източник на честота – кварц) или асинхронен, който не използва синхронизиращ източник. Процесорът 80x86 се състои от две части: устройство за магистрален интерфейс (Bus interface unit), което образува интерфейса към адресната магистрала за данни, прочита инструкциите в паметта и обменя данни с паметта или периферните устройства, и изпълнително устройство което обработва прочетените инструкции и данни. Докато изпълнителният блок още обработва една инструкция, следващите байтове-инструкции се прочитат от паметта от устройството за магистрален интерфейс и се подреждат на опашка. Чрез този начин на паралелна работа се повишава значително скоростта на обработката. При Pentium паралелната обработка е развита още повече. При него освен по една свръхбързодействаща междинна памет (кеш-памет) за инструкции и за данни има още един предварително запълван буфер за инструкции и две паралелно работещи аритметично-логически устройства за цели числа (ALU), така че могат да се извършват паралелно две аритметични операции. Процесорът за обработка на числа с плаваща запетая е интегриран в чипа и работи също така паралелно с целочислените устройства. Той е реализиран с конвейерна структура – обработката на инструкциите протича на няколко стъпки. В устройството за магистрален интерфейс се намира блок от пет 16-разредни регистъра (при новите процесори, регистрите са 32-разредни), които посредством един суматор през магистралната система имат достъп до паметта (RAM/ROM).

Част от микропроцесорите включват в същата интегрална схема и контролера на паметта. Когато интегралната схема включва контролери за вход-изход, тя се нарича микроконтролер. През 1999 г. развитието на технологиите позволява съвместяването на два централни процесора в рамките на една интегрална схема и отделните процесори биват наричани процесорни ядра. В такъв контекст терминът „процесор“ се използва за обозначаване на цялата интегрална схема и се говори за едно-и дву- и многоядрени процесори.

Същност и предназначение[редактиране | редактиране на кода]

Централният процесор е най-големият чип на дънната платка. Той е сърцето на компютърната система, изпълнява инструкциите и борави с данните. Представлява малка капсулирана силициева пластина с вградени микроелектронни елементи (транзистори). Микропроцесорите дълго време представляваха един-единствен чип, който се свързваше към различни по размер гнезда (sockets) върху дънната платка. Много от по-новите модели се произвеждат върху обособена платка с интегрални схеми, която се поставя в специален процесорен слот върху дънната платка.

Най-важните характеристики на един процесор са:

  • Тип на процесора;
  • Скоростта, с която работи;
  • Размер и тип на включената в него кеш-памет;
  • Разредност на (колко битова е) шината за данни;
  • Колко битова адресна шина поддържа;
  • Допълнителни процесорни инструкции, които поддържа;
  • Тип на физическото свързване

Съставни части[редактиране | редактиране на кода]

ЦП се състои от две основни части:

  • Аритметико-логическо устройство (АЛУ)
  • Контролно (управляващо) устройство (УУ)

Тези части на процесора са свързани с електронна връзка - шина, която действа като високоскоростна магистрала между тях. За временно съхранение на данни и инструкции процесорът използва специални клетки памет, наречени регистри.

Аритметико-логическо устройство (АЛУ)[редактиране | редактиране на кода]

Аритметико-логическото устройство изпълнява всички аритметични и логически функции – събиране, изваждане, умножение, деление и сравняване на две числа (А>В, А≥В, А=В, А≠В, А≤В, А<В). Това устройство контролира скоростта на изчислителния процес. При по-старите микрокомпютри времето за изпълнение на една инструкция се измерва в милисекунди, а при новите - в наносекунди или в пикосекунди.

Изградено е от логически елементи (ЛЕ) ИЗКЛЮЧВАЩО ИЛИ, ИЛИ, ИЛИ-НЕ и НЕ. АЛУ е комбиниран компаратор с пълен суматор. АЛУ може да бъде 2 разреден, 4 разреден, 8 и т.н. 8 разрядните са изградени от над 300 отделни компонента.

Управляващо устройство (control unit)[редактиране | редактиране на кода]

Контролното устройство е сложна електронна схема, която извършва управлението и координирането на повечето от дейностите на процесора. То не изпълнява инструкции, а казва на отделните части на компютърната система какво да правят. То определя движението на електрическите сигнали между оперативната памет и аритметико-логическото устройство, а също и на контролните сигнали между централния процесор и входно-изходните устройства.

Шина (BUS)[редактиране | редактиране на кода]

Терминът адресна шина или просто шина означава електрическия път, по който битовете се пренасят между различните компютърни компоненти. В зависимост от типа на системата, могат да съществуват няколко вида шини. За потребителите най-съществена е шината за данни, която пренася данните от и към централния процесор. Колкото е по-широка тя, толкова по-голяма е изчислителната скорост (производителността) на процесора. Например процесор Intel Pentium II има 32 битова шина, което означава, че тя може да пренася 32 бита наведнъж.

Честота на процесора[редактиране | редактиране на кода]

Бързодействието на процесор (тактовата честота) се измерва в мегахерци – 1MHz означава един милион такта в секунда. Тактовата честота определя до голяма степен производителността на процесора. Съвременните процесори имат тактова честота от 2 и повече GHz, а някои от новите процесори като AMD Phenom II 980 са с честота 3,7 GHz.

Един цикъл е най-малкият интервал от време, който може да съществува в работата на процесора. Всяко действие продължава най-малко един, а обикновено и повече цикли. Например при прехвърлянето на данни от и към паметта на процесор 8086 са му необходими четири цикъла плюс състояние на изчакване. Състоянието на изчакване е цикъл, при който процесорът не извършва никакво действие, за да не изпревари останалата част от компютъра. За същото нещо на процесор 80286 са му необходими два цикъла плюс състояние на изчакване.

Времето, необходимо за изпълнение на инструкциите, е също различно за различните процесори. Оригиналните процесори 8086 и 8088 изпълняват една инструкция средно за 12 цикъла. Процесорите 80286 и 80386 извършват същата инструкция за около 4 – 5 цикъла, а 80486 за два цикъла. При Pentium процесорите една инструкция се изпълнява за един цикъл, а при Pentium 4 за половин.

Сравнението на различните системи само на базата на тактовата честота е трудно поради различните времена (в цикли) за изпълнение на инструкциите. Така един 100 MHz Pentium се равнява приблизително на 200 MHz 80486 процесор, или на 400 MHz процесор 80386, или 286. Както се вижда, сравняването на различните системи само на базата на тактовата честота не е правилно, тъй като има много други фактори, които влияят върху производителността на системата.

Как работи един процесор[редактиране | редактиране на кода]

Процесорите работят, като извършват изчисления на базата на конкретни инструкции, записани в софтуера, работещ на компютъра. Тези инструкции, които при стартиране на дадено приложение се зареждат в оперативната памет, указват на процесора как да обработва порциите от данни. Така процесорите непрекъснато „препускат“ през инструкции и данни, които се зареждат в тях от паметта. Освен, че работят с основната памет, процесорите използват и един специален тип бързодействаща памет, наричана „кеш памет“ (cache). Кеш-паметта спомага процесорите да бъдат по-продуктивни. Тя съхранява инструкции и данни, използвани наскоро от процесора. Благодарение на своята близост до главния изчислителен механизъм вътре в процесора и на факта, че процесорът често се нуждае от повторно използване на едни и същи инструкции и данни, кеш-паметта поддържа процесора активен и ускорява работата му като цяло. Всъщност през повечето време процесорите работят директно с различни типове кеш-памет, а тя от своя страна се свързва с основната оперативна памет. Така кеш-паметта служи като бързодействащ буфер между процесора и основната памет, прехвърляйки данните в процесора, когато се нуждае от тях и ги изисква.

Бързодействие[редактиране | редактиране на кода]

Въпреки, че номиналното бързодействие на процесора е важен фактор при определяне на бързината, с която той извършва изчисления, има и други важни различия в това как различните процесори вършат своята работа вътрешно. Например много процесори изпълняват няколко изчисления едновременно. Технологията, която поддържа този метод, се нарича „конвейрна обработка“. Освен това някои прескачат напред, за да изпълнят допълнителни изчисления, за които се предполага, че работещата програма ще ги поиска, преди програмата наистина да ги поиска. Това се нарича „спекулативно изпълнение“ и е една от многото сложни операции, които се срещат в съвременните процесори. Различните процесори реализират тези методи по разнообразни начини, с което се обясняват многото разлики в цялостната производителност на чипа, независимо от неговото бързодействие в MHz.

Друг важен фактор в общата производителност на чипа е доколко са работоспособни различните процесорни схеми. Процесорите могат да работят непрекъснато и да дават резултати толкова бързо, колкото им се задават задачи, над които да работят. Следователно в идеалния случай бихме искали да подаваме на процесора непрекъснат поток от данни, така че той да може да ги обработва с максимална скорост. В действителност обаче различни забавяния, които се получават в компютърната система, често принуждават процесора да стои „без работа“ за периодите от време, в които изчаква пристигането на следващите данни.

Важен метод за компенсиране на тези забавяния е добавянето на специална бързодействаща кеш-памет в цялостната схема на процесора. И в двата случая целта е процесорът да се накара да работи колкото е възможно повече, защото това се трансформира директно в по-голямо общо бързодействие на компютъра.

Кеш памет L1 и L2[редактиране | редактиране на кода]

Кеш-паметта играе особено важна роля за производителността на процесора. Тя може в голяма степен да подобри ефективността на процесора, като му предоставя достъп до необходимите данни по-бързо, отколкото това прави обикновената оперативна памет (RAM). Чиповете на кеш паметта са не само по-бързи, но осъществяват и по-бърза връзка с процесора.

Процесорът работи много по-ефективно, когато има по-бърз достъп до вече използвани данни и инструкции, или до „кеш-паметта“. След като процесорът завърши това, над което е работил, той може да се обърне към нея, вместо към по-бавната RAM памет, която се намира по-далеч и получаването на данни от нея изисква повече време.

Двата най-разпространени типа кеш-памет се означават като L1 и L2 (на английски: Level – ниво). Има и кеш-памет L3, но този вид не е много популярен. Въпреки че в техническо отношение кеш-паметта е вид оперативна памет, в повечето случаи L1 и L2 са вградени в процесорния чип или монтирани на самата процесорна платка. Така че тази памет е по-скоро част от процесора, отколкото от паметта.

Всяко ниво на кеш паметта представлява отделна част памет и се третира от процесора като независимо. По традиция кеш паметта L1 е по-малка от двете и се разполага в самия процесор, а L2 се разполага в непосредствена близост извън него. Когато процесорът работи с няколко вида кеш памет, първо проверява L1, след това L2 и накрая – основната памет.

Реално кешът е прозрачен за процесора, тъй като CPU се обръща към RAM паметта чрез виртуални адреси, а кеш паметта използва своите механизми за да определи дали има съвпадение на даден адрес вътре в регистрите си. При съответствие на адрес кеш паметта подава данните към процесора, като заявката към основната памет се прекратява.

Друга съществена разлика между кеш L1 и L2 е бързината, с която процесорът може да осъществява достъп до различните видове памет. Тъй като L1 е интегрирана в микропроцесора, тя обикновено работи със същата бързина, с каквато и той; така например при процесор с тактова честота 500 MHz скоростта на връзката към L1 е също 500 MHz. При по-старите системи кеш паметта L2 се свързва с процесора със същата скорост както и оперативната памет. Тази скорост се определя от системната шина на компютъра, която обикновено работи при 66, 100, 133 MHz, а при процесори Pentium 4 – при 400, 533, 667, 800 MHz. За Pentium EE честотата е 1067 MHz, а за Intel's Core 2 Quadro – 1333 MHz. Ако кеш паметта се намира в самия процесор или на процесорната платка, както е при повечето процесори Pentium II и Pentium III, връзката процесор – кеш L2 става през така наречената „задна шина“ (на английски: backside bus). Тя работи по-бързо от системната шина, но с половината от скоростта на процесора. Това се нарича „съотношение 1:2“. Така при процесор Pentium III с тактова честота 500 MHz скоростта на връзката процесор – кеш L2 е 250 MHz. При системи, при които кеш паметта L2 е вградена в самия чип, има съотношение 1:1 между скоростта на процесора и скоростта на връзка процесор – кеш L1. Вече всички производители вграждат L2 кеша в самия чип, тъй като настоящите, а и бъдещи процесори, са зависими до голяма степен от неговата скорост. Тоест при работа в режим 1:1 времето за зареждане от L2 е много по-малко.

При Pentium D моделите от серия 9хх L2 кешът е общ за двата процесора (ядра), като по този начин се постига динамично разпределение на кеша; ако едното ядро не е активно, другото може да ползва целия обем L2. За Core 2 Quadro се използва подобна организация, но с разликата, че има 2 кеша от второ ниво, тъй като общо има 4 ядра. Или получаваме следната конфигурация: L1 data-4x32 KB за L1 Code-4x32 KB и L2-2x4096 KB.

Производители на процесори[редактиране | редактиране на кода]

Бележки[редактиране | редактиране на кода]

  1. а б Weik, Martin H. A Third Survey of Domestic Electronic Digital Computing Systems. // Antique (lonesome) Computers. Ed Thelen's Nike Missile Web Site, 2010. Посетен на 26 юни 2010.
  2. von Neumann, John. First Draft of a Report on the EDVAC (PDF). // 1945. Посетен на 10 юли 2010.
  3. Digital Equipment Corporation. LSI-11 Module Descriptions. // LSI-11, PDP-11/03 user's manual. 2nd. Maynard, Massachusetts, Digital Equipment Corporation, November 1975. с. 4 – 3.
  4. Amdahl, G. M.; G. A. Blaauw, F. P. Brooks Jr. (1964)."Architecture of the IBM System/360". IBM Research.

Вижте също[редактиране | редактиране на кода]