- Какво се случва в процесора? (преговор от миналата лекция)
- Видове регистри на процесора
- Управление на IO устройства
- Прекъсвания (Interrupts)
Фиг. 2.1.1.: Структура на централния процесор
-
ALU - Аритметико-логическия блок (Arithmetic Logic Unit)
- Използва се за извършване на аритметични операции и логически операции – събиране, изваждане, умножение, деление и сравняване на две числа.
- Обработва данните от регистрите на процесора.
- От него зависи скоростта на изчислителния процес.
- Изграден е от логически елементи -
OR
,NOR
,AND
,NAND
,XOR
,NOT
, т.н. (които логически елементи са изградени от транзистори)
-
Регистри (Registers)
- Те са най-бързата памет в една компютърна система
- Използват се при изчисленията на от аритметико-логическия блок
- Разделят на 2 вида:
- Регистри с общо предназначение.
- Контролни регистри.
- Виж следващата точка за повече информация.
-
Кеш памет (Cache Memory)
-
Малка, но доста бърза памет.
-
Използва се за да се запазят данните, които са използвани най-често при изпълнение на инструкции от процесора, за да се ускори достъпа до тях
-
Това се налага, защото извличането на данни от RAM паметта е скъпа операция (т.е. става доста бавно), в срaвнение от това да се извика от кеш паметта.
-
Kеш паметта бива на няколко нива L(evel)1, L2 и L3 (L3 от 2003 година, с Pentium 4 Extreme Edition)
-
L1 кеш
- Директно комуникира с регистрите.
- Разделя на 2 части
- L1D (Data) - за съхраняване на стойности като числа, адреси, т.н., които са използвани най-често.
- L1I (Instruction) - за съхранение на инструкциите, които са използвани най-често.
- L1I минава през процес на извличане и декодиране на самите инструкции.
- Типичният размер на L1 кеша е от 16KB до 1MB.
-
L2 и L3 кеш
- Те представляват медиаторите между L1 и RAM паметта.
- По-бавни са от L1, но са в пъти по-бързи от RAM паметта.
- По-големи са от L1 - с размери от 256KB до 64MB.
-
Процесорните регистри се разделят на два типа:
-
Регистри с общо предназначение
-
Достъпни са за всички програми.
-
Могат да се адресират като се използва езика Assembly
Пример:
MOV AX, 42
MOV
е кратък код за инструкцията за "преместване". Използва се за копиране на данни от едно място на друго.AX
е регистър.,
е разделител, а42
е константа, която се премества в регистъра AX. -
Има два подтипа регистри с общо предназначение:
- Регистри за данни:
- Използват се за променливи.
- Адресни регистри:
- Използват се за реализация на различни схеми за адресация.
- Използват се за индексанция и указатели.
- Регистри за данни:
-
-
Контролни регистри
- Използват се от процесора за да контролират работата му.
- Използват се от операционната система за да контролират изпълнението на приложните програми.
- Не са достъпни директно от потребителските програми.
- Примери за контролни регистри са:
- Програмен брояч (Program Counter – PC)
- Съдържа адреса на следващата инструкция, която трябва да бъде извлечена.
- Регистър за инструкция (Instruction Register – IR)
- Съдържа последната извлечена от паметта инструкция.
- Регистър на състоянието (Program Status Word – PSW)
- Резултат от сравнения.
- Разрешаване и забрана на прекъсванията (виж т. 2.4.)
- Потребителски режим и защитен режим на процесора
- Програмен брояч (Program Counter – PC)
В последната точка се споменава, че регистърът за състоянието се използва "разрешаване и забрана на прекъсванията". Но какво всъщност представляват прекъсванията?
-
Има няколко начина за управление на входно/изходните устройства от процесора:
-
Синхронно изпълнение на входно/изходните операции (Programmed IO)
-
Нарича се синхронно, защото операционната система не прави нищо друго, освен да чака, докато не получи сигнал, че работата е свършила.
-
Oперационната система непрекъснато проверява дали IO устройството е свършило определена задача.
-
Влиза се в безкраен цикъл, на изпращане на заявки към устройството, дали е свършило работата. Този цикъл едва ще приключи чак когато чак когато устройството си свърши работата.
-
Тогава то дава резултата в буфер, който операционната система прехвърля в оперативната памет.
Фиг. 2.3.1.: Синхронно изпълнение на входно/изходните операции (Programmed IO)
-
-
Асинхронно изпълнение на входно/изходните операции (Interrupt-Driven IO)
-
Процесорът се обръща към контролера на входно/изходното устройство и подава заявка за извършване на операцията.
-
След подаване на заявката, процесорът е свободен да се занимава с други задачи.
-
Когато изпълнението на операцията завърши, контролерът на входно/изходното устройство прекъсва работата на процесора.
-
Процесорът трябва да прехвърли данните от буферите на контролера в оперативната памет или регистрите си.
Фиг. 2.3.2.: Асинхронно изпълнение на входно/изходните операции (Interrupt-Driven IO)
-
-
Пряк достъп до паметта (Direct Memory Access)
-
Прекият достъп до паметта съществено подобрява скоростта на трансфер на данни между входно/изходните устройства и оперативната памет.
-
Типично прекият достъп до паметта (DMA) се използва от бързи входно изходни устройства – твърди дискове, мрежови контролери и т.н.
-
Контролерът на устройството прехвърля блок от данни директно в/от оперативната памет без намеса на централния процесор.
-
Генерира се само едно прекъсване за целия блок от данни.
Фиг. 2.3.3.: Пряк достъп до паметта (Direct Memory Access)
-
-
-
Както видяхме при асинхронното обработване на IO операции, нормалната работа на процесора може да бъде прекъсната от прекъсвания (Interrupt).
-
Обработка на прекъсванията
-
Прекъсват нормалната последователност на изпълнение на команди от процесора (от там идва и името им).
-
Когато се появи прекъсване, процесорът преминава в защитен режим на работа.
-
Прекъсването на настоящата задача на процесора става по такъв начин, че да е възможно възстановяване на нейната обработка след обработката на прекъсването, т.е. запазва състоянието на процесора като запазва регистрите, програмния брояч и т.н.
-
След това трябва да се реши дали ще се обработи това прекъсване:
- ако не, процесорът се връща в състоянието си преди прекъсването.
- ако да, първо запазва състоянието си на работа в момента и след това обработва прекъсването, т.е. изпълнява конкретна функция в зависимост от вида на прекъсването.
-
За всеки тип прекъсване има Interrupt handler. Прекъсванията се пазят в приоритетна опашка. Interrupt handler се пази в оперативната памет.
-
Прекъсване не може да прекъсне обработката на друго прекъсване.
-
-
Видове прекъсвания
- Софтуерни прекъсвания (trap):
- препълване при аритметични операции
- делене на нула
- изпълнение на неправилна инструкция
- опит за достъп до защитена част от паметта
- Прекъсвания от таймера.
- Прекъсвания от входно/изходните устройства.
- Прекъсвания предизвикани от повреди в хардуера.
- Софтуерни прекъсвания (trap):
-
Обработка на много прекъсвания
- Става последователно, като може да е в реда на постъпване на прекъсванията или по приоритет на прекъсванията.