Skip to content

Latest commit

 

History

History
194 lines (145 loc) · 13.2 KB

File metadata and controls

194 lines (145 loc) · 13.2 KB

Тема 2: Компютърни системи. (продължение)

Съдържание

  1. Какво се случва в процесора? (преговор от миналата лекция)
  2. Видове регистри на процесора
  3. Управление на IO устройства
  4. Прекъсвания (Interrupts)

1. Какво се случва в процесора? (преговор от миналата лекция)

Структура на централния процесор

Фиг. 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.

2. Видове регистри на процесора

Процесорните регистри се разделят на два типа:

  • Регистри с общо предназначение

    • Достъпни са за всички програми.

    • Могат да се адресират като се използва езика Assembly

      Пример:

      MOV AX, 42

      MOV е кратък код за инструкцията за "преместване". Използва се за копиране на данни от едно място на друго. AX е регистър. , е разделител, а 42 е константа, която се премества в регистъра AX.

    • Има два подтипа регистри с общо предназначение:

      • Регистри за данни:
        • Използват се за променливи.
      • Адресни регистри:
        • Използват се за реализация на различни схеми за адресация.
        • Използват се за индексанция и указатели.
  • Контролни регистри

    • Използват се от процесора за да контролират работата му.
    • Използват се от операционната система за да контролират изпълнението на приложните програми.
    • Не са достъпни директно от потребителските програми.
    • Примери за контролни регистри са:
      • Програмен брояч (Program Counter – PC)
        • Съдържа адреса на следващата инструкция, която трябва да бъде извлечена.
      • Регистър за инструкция (Instruction Register – IR)
        • Съдържа последната извлечена от паметта инструкция.
      • Регистър на състоянието (Program Status Word – PSW)
        • Резултат от сравнения.
        • Разрешаване и забрана на прекъсванията (виж т. 2.4.)
        • Потребителски режим и защитен режим на процесора

3. Управление на IO устройства

В последната точка се споменава, че регистърът за състоянието се използва "разрешаване и забрана на прекъсванията". Но какво всъщност представляват прекъсванията?

  • Има няколко начина за управление на входно/изходните устройства от процесора:

    • Синхронно изпълнение на входно/изходните операции (Programmed IO)

      • Нарича се синхронно, защото операционната система не прави нищо друго, освен да чака, докато не получи сигнал, че работата е свършила.

      • Oперационната система непрекъснато проверява дали IO устройството е свършило определена задача.

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

      • Тогава то дава резултата в буфер, който операционната система прехвърля в оперативната памет.

        Синхронно изпълнение на входно/изходните операции (Programmed IO)

        Фиг. 2.3.1.: Синхронно изпълнение на входно/изходните операции (Programmed IO)

    • Асинхронно изпълнение на входно/изходните операции (Interrupt-Driven IO)

      • Процесорът се обръща към контролера на входно/изходното устройство и подава заявка за извършване на операцията.

      • След подаване на заявката, процесорът е свободен да се занимава с други задачи.

      • Когато изпълнението на операцията завърши, контролерът на входно/изходното устройство прекъсва работата на процесора.

      • Процесорът трябва да прехвърли данните от буферите на контролера в оперативната памет или регистрите си.

        Асинхронно изпълнение на входно/изходните операции (Interrup-Driven IO)

        Фиг. 2.3.2.: Асинхронно изпълнение на входно/изходните операции (Interrupt-Driven IO)

    • Пряк достъп до паметта (Direct Memory Access)

      • Прекият достъп до паметта съществено подобрява скоростта на трансфер на данни между входно/изходните устройства и оперативната памет.

      • Типично прекият достъп до паметта (DMA) се използва от бързи входно изходни устройства – твърди дискове, мрежови контролери и т.н.

      • Контролерът на устройството прехвърля блок от данни директно в/от оперативната памет без намеса на централния процесор.

      • Генерира се само едно прекъсване за целия блок от данни.

        Пряк достъп до паметта (Direct Memory Access)

        Фиг. 2.3.3.: Пряк достъп до паметта (Direct Memory Access)

4. Прекъсвания (Interrupts)

  • Както видяхме при асинхронното обработване на IO операции, нормалната работа на процесора може да бъде прекъсната от прекъсвания (Interrupt).

  • Обработка на прекъсванията

    • Прекъсват нормалната последователност на изпълнение на команди от процесора (от там идва и името им).

    • Когато се появи прекъсване, процесорът преминава в защитен режим на работа.

    • Прекъсването на настоящата задача на процесора става по такъв начин, че да е възможно възстановяване на нейната обработка след обработката на прекъсването, т.е. запазва състоянието на процесора като запазва регистрите, програмния брояч и т.н.

    • След това трябва да се реши дали ще се обработи това прекъсване:

      • ако не, процесорът се връща в състоянието си преди прекъсването.
      • ако да, първо запазва състоянието си на работа в момента и след това обработва прекъсването, т.е. изпълнява конкретна функция в зависимост от вида на прекъсването.
    • За всеки тип прекъсване има Interrupt handler. Прекъсванията се пазят в приоритетна опашка. Interrupt handler се пази в оперативната памет.

    • Прекъсване не може да прекъсне обработката на друго прекъсване.

  • Видове прекъсвания

    • Софтуерни прекъсвания (trap):
      • препълване при аритметични операции
      • делене на нула
      • изпълнение на неправилна инструкция
      • опит за достъп до защитена част от паметта
    • Прекъсвания от таймера.
    • Прекъсвания от входно/изходните устройства.
    • Прекъсвания предизвикани от повреди в хардуера.
  • Обработка на много прекъсвания

    • Става последователно, като може да е в реда на постъпване на прекъсванията или по приоритет на прекъсванията.