четвъртък, 19 април 2012 г.
Принципно устройство на процесора
Процесорът, CPU (Central Processing Unit) или още микропроцесорът, е сърцето на една компютърна система. Микропроцесорът прави изчисления, изпълнява логически операции и управлява потоците от данни като използва затова инструкции, които чете от паметта и след това ги изпълнява. В ранната епоха на компютрите, функционалните компоненти на процесора са били отделни (и във физически смисъл доста големи) единици. Тогава и възниква понятието CPU (Central Processing Unit). В модерните процесори всички тези отделни компоненти са обединени в една интегрална електронна схема, гравирана върху малка силиконова пластина. Понятията: процесор, CPU (Central Processing Unit) и микропроцесор се използват взаимозаменяемо в тази книга.
Процесорът работи с данни представени в двоичен вид; тези данни се състоят от единици и нули.
Тези нули и единици съответствуват на електрически ключ с положения "включен" и "изключен". Например десетичното число 42 има значението на "4 десетици и 2 единици", двоичните числа са поредица от нули и единици, всяка от които представя степен на числото 2. В този смисъл, степента показва, колко пъти числото се умножава само по себе си.Например: 10 на степен 1 е 10, 10 на степен 2 (102) е 10х10, 10 на степен 3 (103) е 10х10х10 и т. н. Двоичното число 0001 е равно на десетичното 1, двоичното число 0010 е равно на десетичното 2, двоичното число 0011 е равно на десетичното 3 и т. н. Така десетичното число 42 е равно на двоичното 101010 или (2 + 8 + 32 или 21 + 23 + 25). По-често в компютрите вместо двоичен се използва шестнадесетичен код.
В шестнадесетичен вид, всеки знак представя степен на числото 16. Тъй като числата обозначени с един знак са само от 0 до 9 то знаците от 10 до 15 се представят с буквите A, B, C, D, E и F. Например, шестнадесетичното Е е десетичното 14, а 2А е десетичното 42 (2 по 16 + 10). Използвайки нотацията на програмния език С (което правя по-нататък в книгата) шестнадесетичните числа се предшествуват от "0x"; така шестнадесетичното 2А се пише като 0х2А.
Процесорът може да изпълнява аритметични операции като събиране, умножение, деление, а също така и логически операции като "Х по-голямо ли е от Y?"
Действията на процесора се ръководят от един външен часовник. Този системен часовник генерира импулси към процесора и за всеки такъв импулс, процесорът извършва определена работа. Например, процесорът може да изпълнява една инструкция на всеки импулс. Скоростта на процесора се описва посредством тактовете на системния часовник. Един 100 MHz процесор може да приеме 100 000 000 такта за една секунда. Подвеждащо е да се отчита мощността на процесора, съобразно тактовата му честота, тъй като различните процесори изпълняват различно количество работа за един такт. Но ако всички фактори са идентични, то по-високата тактова честота е показател за по-мощен процесор. Инструкциите, които изпълнява процесора са доста прости, например "Прочети съдържанието на паметта от адрес Х и го запиши в регистър Y" Регистрите са вътрешна памет на самия процесор и служат за съхранение на данни и за извършване на действия с тях. По време на извършваните операции може да се предизвика едно прекъсване на текущата работа на процесора и да се прехвърли посредством друга инструкция на друго място в паметта. Това разделяне на работата на малки съставни части, дава на модерните процесори една почти безгранична мощ да изпълнява милиони, дори милиарди инструкции за секунда.
Инструкциите трябва да бъдат изведени от паметта за да могат да бъдат изпълнени. Инструкциите от друга страна могат да се отнасят до данни намиращи се в паметта, които също трябва да бъдат изведени оттам и запазени на подходящо място.
Размерът, броя и вида на регистрите в процесора зависят изцяло от неговия тип. Един Intel 4086 има различен тип регистри в сравнение с един Alpha AXP процесор, например за Intel те са с ширина 32 бита, а при Alpha AXP са с ширина 64 бита. Обикновено, обаче всеки процесор има няколко общи регистъра и малко по-малко на брой регистри със специално предназначение:
Program Counter (PC) - Програмен брояч
Този регистър съдържа адреса на следващата инструкция, която трябва да бъде изпълнена. Съдържанието на програмния брояч се допълва всеки път, когато се извежда една инструкция от паметта.
Stack Pointer (SP) - Указател на стека
Процесорите трябва да имат достъп до големи обеми от паметта за четене/писане (RАМ), което от своя страна изисква да се улесни временното съхранение на данни.Регистърът Указател на стека е един такъв начин за лесно съхраняване и извеждане на временни данни във външната (RAM) памет. Обикновено процесорът има специални инструкции, позволяващи му да въвежда и по-късно да извежда данни от този регистър.Стекът работи на принципа "това което е въведено последно се извежда първо". С други думи, ако въведете две стойности в последователност x и y, то извеждането на стойности от стека ще започне с у.
Стековете създавани от някои процесори се разширяват в посока към горните слоеве на паметта, докато при други това нарастване става в посока към долните участъци. Има процесори поддържащи и двата типа нарастване, например ARM.
Processor Status (PS) - Статус на Процесора
Инструкциите могат да извеждат и резултати, например "съдържанието на регистър Х по-голямо ли е от съдържанието на регистър Y", ще изведе съответния резултат "вярно" или "невярно". Регистърът Статус на процесора пази тези и други данни за моментното състояние на процесора. Например, повечето процесори имат най-малко два начина на работа, режим кърнъл (главен ръководител) и режим потребител. Регистърът Статус на процесора трябва да пази информация за текущия режим на процесора.
Системната шина свързва процесора с паметта и е отделена от останалите шини свързващи процесора с другите хардуерни компоненти.. Най-общо, тази област от паметта, където се пазят данните за периферните компоненти се нарича I/O (Input/Output) област. Тя от своя страна може да се разделя на подобласти, но ние няма да разглеждаме този въпрос за момента. Процесорът може да достига, както системната област на паметта, така и I/O областта, докато контролерите нямат пряк достъп до системната област, а само с помощта на процесора. От гледна точка на устройството, да речем флопи диск контролера, ще се види само тази област от паметта, където са неговите регистри (ISA), а не системната област. Обикновено процесора има различни инструкции за достъп до паметта и I/O областта. Например, това може да бъде инструкция от вида "прочети един байт от адрес 0x3f0 и го запиши в регистър Х" Това е начина по който процесора контролира хардуерните компоненти, като чете и пише в техните регистри в I/O областта на паметта.Мястото в I/O областта на паметта, където се намират регистрите на най-основните периферни компоненти (IDE контролерите, серийни портове, флопи диск контролер и т.н.) е определено и е общоприето в течение на развитието на РС архитектурата през годините. Адресът 0x3f0 от I/O областта например е адрес на един от контролните регистри на серийния порт (СОМ1).
Кеш (CACHE) паметта се използва с цел съгласуване бързодействието на централния процесор и оперативната памет. Когато времето за достъп до основната (DRAM) памет е много по-голямо в сравнение с такта на процесора, който директно управлява паметта, се налага генериране на състояния на изчакване с цел синхронизация. Това от своя страна води до неефективно използване производителността на процесора. Проблемът се разрешава чрез включване на бърза, с относително малък размер, статична RAM (SRAM) между процесора и DRAM. Поради тази причина кеш паметта е известна и като свръхбърза буферна памет. Идеята е процесора да работи само с бързата кеш памет, а обмена между оперативната и кеш паметта се реализира чрез така наречения контролер на паметта.
В една реална компютърна система може да има няколко буферни памети, изпълнени като кеш-памет. Например кеш за данни, кеш за команди, кеш за адресно таблици, локални кеш-памети,кеш-памети за ниските нива в запомнящата система и др.
• Архитектурата на процесор с разделни буферни памети за данни и за команди е известна под наименованието “архитектура Харвард”. Разделното изграждане на буферната памет позволява да се извърши независимо оптимизиране на параметрите (обем и степен на асоциация).
Разделните кеш-памети позволяват лесно реализиране на паралелен (едновременен) достъп (за данни и за команди). Разделните кеш-памети имат следните недостатъци:
- Първият недостатък се изявява в случаите, когато изпълняващата се програма се самомодифицира, като записва нови команди. Новите команди се записват като данни в кеш-паметта за данни и не могат да се изпълнят преди да бъдат прехбърлени в кеш-паметта за команди. Това става когато данните преминат през основната памет. Прехвърлянето на информацията в ОП може да направи единствено самомодифициращата се програма, всеки друг, който би могъл да се намеси в този процес, би объркал тази информация.
- Вторият недостатък се състои в това, че не е възможно динамично изменение на обема на едната кеш-памет за сметка на другата, което е нещо естествено в кеш-паметта с общо предназначение.
• Архитектурата на процесор с една обща за данни и за команди кеш-памет е известна под наименованието “архитектура Принстън”. Наименованията “Харвард” и “Принстън” произлизат от научните колективи които са ги разработвали.
Абонамент за:
Коментари за публикацията (Atom)
Няма коментари:
Публикуване на коментар