1 of 61

Структура процесора

  • CPU мора:
    • Fetch instructions – дохват инструкције
    • Interpret instructions - идентификација
    • Fetch data – дохват податка
    • Process data - обрада
    • Write data - копирање

2 of 61

CPU са системском магистралом

3 of 61

CPU интерно

4 of 61

Регистри

  • Меморија за процесор (temporary storage)
  • Врло хетерогено
  • Важна пројектантска одлука
  • На врху меморијске хијерархије

5 of 61

User Visible регистри

  • General Purpose
  • Data
  • Address
  • Condition Codes

6 of 61

General Purpose регистри (1)

  • Заиста опште намене, или
  • Са рестрикцијама
  • Чувају податке или адресе
  • Подаци
    • Accumulator
  • Адресе
    • Segment

7 of 61

General Purpose регистри (2)

  • Како да заиста буду општи:
    • Повећање флексибилности
    • Повећање богатства инструкција
  • Како да буду специјализовани:
    • Мање и брже инструкције
    • Мање флексибилности

8 of 61

Колико GP регистара?

  • Углавном 8 - 32
  • Мање = више обраћања меморији
  • Више регистара не даје значајан ефекат на смањење броја обраћања меморији

9 of 61

Величина?

  • Мора да прихвати целу мем. адресу
  • Мора да прихвати целу реч
  • Понекад могуће коришћење два регистра
    • C programming
    • double int a;
    • long int a;

10 of 61

Condition Code регистри

  • Скуп неколико бита
    • Индикују неко стање
  • Читају се имплицитно из програма
    • e.g. Jump if zero
  • Тешко се директно мењају програмски

11 of 61

Control & Status регистри

  • Program Counter
  • Instruction Decoding Register
  • Memory Address Register
  • Memory Buffer Register

12 of 61

13 of 61

Program Status Word

  • Скуп бита за:
  • Includes Condition Codes
  • Sign of last result
  • Zero
  • Carry
  • Equal
  • Overflow
  • Interrupt enable/disable
  • Supervisor

14 of 61

Supervisor Mode

  • Intel ring zero
  • Kernel mode
  • Извршење привилегованох инструкција
  • Used by operating system
  • Not available to user programs

15 of 61

Други регистри

  • Могу бити:
    • Process control blocks
    • Interrupt Vectors

16 of 61

Пример

17 of 61

Инструкцијски циклус

  • Домаћи задатак!!!

18 of 61

Индиректни циклус

  • ТРажи приступ меморији како би дохватио операнд
  • Инструкцијски подциклус!

19 of 61

Слика:

20 of 61

Дијаграм стања са индирекцијом

21 of 61

Ток података (Instruction Fetch)

  • Углавном:

  • Fetch
    • PC садржи адресу наредне инструкције
    • Адреса - > MAR
    • Адреса иде на адресну сабирницу
    • Control unit захтева memory read
    • Резултат иде на сабирницу за податке, копиран у MBR, па IR
    • PC инкрементиран за 1

22 of 61

Ток података (Data Fetch)

  • IR се посматра
  • Ако има индирекције, indirect cycle!
    • Десних N бита из MBR иду у MAR
    • Control unit захтева читање
    • Резултат (адреса операнда) иде уMBR

23 of 61

Ток података (Fetch Diagram)

24 of 61

Ток података (Indirect Diagram)

25 of 61

Ток података (Execute)

  • Хетерогено
  • Зависи од инструкције
  • Укључује
    • Memory read/write
    • Input/Output
    • Register transfers
    • ALU операције

26 of 61

Ток података (Interrupt)

  • Прост
  • Предвидљив
  • Тренутно PC сачуван да се настави после завршетка интерапта
  • Садржај PC иде уMBR
  • Special memory location (нпр stack pointer) иде у MAR
  • MBR се пише у меморију
  • PC садржи адресу interrupt handling routine
  • Следећа инструкција (прва у interrupt handler) може да се дохвати

27 of 61

Ток података (Interrupt Diagram)

28 of 61

Prefetch

  • Fetch захвата РАМ
  • Execution не тражи приступ меморији
  • Дакле fetch следеће инструкције док се тренутна извршава
  • Зове се instruction prefetch

29 of 61

Увећање перформанси

  • Не драстично:
    • Fetch краћи него execution
      • Prefetch више од једне инструкције?
    • Ако имамо следећу инструкцију jump или branch поништава се смисао за Prefetch
  • Мора комликованије!

30 of 61

Pipelining – Проточно извршавање

31 of 61

Two Stage Instruction Pipeline

32 of 61

Timing Diagram for �Instruction Pipeline Operation

33 of 61

The Effect of a Conditional Branch on Instruction Pipeline Operation

34 of 61

Шестофазни�Instruction Pipeline

35 of 61

Alternative Pipeline Depiction

36 of 61

Увећање брзине�за Instruction�Pipelining

37 of 61

Pipeline Hazards – Хазарди проточне обраде

  • Проток стаје, јер извршење није могуће, загушење!
  • Или pipeline bubble
  • Врсте хазарда
    • Resource
    • Data
    • Control

38 of 61

Resource Hazards

  • Две иструкције траже исти ресурс
  • Серијско извршење логичније
  • Зове се structural hazard
  • Узмимо петофазни циклус
    • Један такт по фази
  • Идеално једна инструкција долази синхроно са тактом
  • Главна меморија има један пролаз
  • Елементарне операције узимају један такт
  • Кеш занемарујемо
  • За операнде read or write не може паралелно са instruction fetch
  • Fetch instruction stage мирује један циклус док траје fetch за I3

  • Пример: више захтева за извршење у једнопроцесорској машини

  • Решење: increase available resources
    • Multiple main memory ports
    • Multiple ALUs

39 of 61

Data Hazards – Хазарди података

  • Адресе операнда су објекат хазарда
  • Инструкције морају да се изврше серијски
  • Захтев за приступ истој локацији
  • Ако је заиста серијски низ инструкција, ОК
  • Али, ако је проточна обрада, током паралелне обраде могућа је нежељена манипулација адресом операнда
  • E.g. x86 machine instruction sequence:

  • ADD EAX, EBX /* EAX = EAX + EBX
  • SUB ECX, EAX /* ECX = ECX – EAX

  • ADD instruction does not update EAX until end of stage 5, at clock cycle 5
  • SUB instruction needs value at beginning of its stage 2, at clock cycle 4
  • Pipeline стоји два циклуса
  • Потребан посебан хардвер

40 of 61

Data Hazard Diagram

41 of 61

Врсте Data Hazard-а

  • Read after write (RAW), или права зависност
    • Инструкција modifies регистар или мем. локацију
    • Наредна инструкција чита са те локације
    • Проблем ако читање почиње пре него је писање завршило
  • Write after read (RAW), или антизависност
    • Инструкција чита регистар или мем. локацију
    • Наредна инструкција уписује на локацију
    • Проблем ако писање заврши пре него почне читање
  • Write after write (RAW), или излазна зависност
    • Две инструкције пишу на исту локацију
    • Проблем ако писање иде у обрнутом редоследу

42 of 61

Resource Hazard Diagram

43 of 61

Control Hazard

  • Познат као branch hazard
  • Pipeline греши код гранања
  • Инструкција која се неће извршити долази у проточну обраду, грешком
  • Решења
    • Multiple Streams
    • Prefetch Branch Target
    • Loop buffer
    • Branch prediction
    • Delayed branching

44 of 61

Multiple Streams

  • Два тока обраде постоје
  • Prefetch сваку грану у свој pipeline
  • Изабрати исправан pipeline

  • Резултат: bus & register загушење
  • Вишеструко гранање тражи нове парове токова обраде

45 of 61

Примери

46 of 61

The example above instructs the processor to add r1 and r2 and put the result in r3, then subtract r4 from r5, storing the difference in r6. In the third instruction, beq stands for branch if equal. If the contents of r3 and r6 are equal, the processor should execute the instruction labeled "Loop." Otherwise, it should continue to the next instruction. In this example, the processor cannot make a decision about which branch to take because neither the value of r3 or r6 have been written into the registers yet.

47 of 61

Prefetch Branch Target

  • Објекат гранања је prefetched са иснтрукцијама које следе
  • Наставити до извршења гране
  • Пример: IBM 360/91

48 of 61

Loop Buffer

  • Брза меморија
  • Управља: fetch stage of pipeline
  • Провери buffer пре fetching из меморије
  • За кратке петље и проста гранања

49 of 61

Loop Buffer Diagram

50 of 61

Branch Prediction (1) – предикција гранања

  • Predict never taken – предикција линеарности
    • Нема скока!
    • Увек fetch next instruction
    • 68020 & VAX 11/780
  • Predict always taken – предикција нелинеарности
    • Увек скок!
    • Увек: fetch target instruction

51 of 61

Branch Prediction (2) предикција гранања

  • Predict by Opcode
    • Статистика!
    • До 75% успеха
  • Taken/Not taken switch
    • На основу историје гранања
    • Добро за петље
  • Correlation-based
    • Сложенија статистика

52 of 61

Branch Prediction (3) предикција гранања

  • Delayed Branch
    • Скок само ако мора
    • Препаковање инструкција

53 of 61

Branch Prediction Flowchart

54 of 61

Branch Prediction State Diagram

55 of 61

Dealing With �Branches

56 of 61

80486 Instruction Pipeline Examples

57 of 61

Pentium 4 Registers

58 of 61

EFLAGS Register

59 of 61

Control Registers

60 of 61

MMX Register Mapping

  • MMX uses several 64 bit data types
  • Use 3 bit register address fields
    • 8 registers
  • No MMX specific registers
    • Aliasing to lower 64 bits of existing floating point registers

61 of 61

Mapping of MMX Registers to �Floating-Point Registers