1 of 35

Дефиниција

  • Опште инструкције(arithmetic, load/store, conditional branch) могу да се извршавају независно
  • Независно од RISC & CISC
  • Најчешће RISC

2 of 35

Зашто?

  • Операције углавном над скаларима
  • Оптимизација над тим операцијама

3 of 35

Општа организација

4 of 35

Супер-проточна обрада

  • Делови цикуса (фазе) траже мање од половине периоде циклуса
  • Ако је интерни генератор такта двоструко бржи од екстерног, имамо два процеса по једном ектерном тактном импулсу
  • Паралелно иде fetch execute

5 of 35

Superscalar v�Superpipeline

6 of 35

Ограничења

  • Паралелизам на нивоу инструкције
  • Оптимизације на нивоу компајлера
  • Хардверске технике
  • Разлози
    • Зависност података
    • Процедурална зависност
    • Конфликти ресурса
    • Излазна зависност
    • Антизависност

7 of 35

Зависност података

  • ADD r1, r2 (r1 := r1+r2;)
  • MOVE r3,r1 (r3 := r1;)
  • Може fetch and decode друге иснтрукције паралелно са првом
  • АЛИ – друга не може да се изврши пре прве!

8 of 35

Процедурална зависност

  • Немогуће извршење инструкције после селекције паралелно са инструкцијом пре селекције
  • Ако су инструкцје различите дужине, опет се мора проверавати колко је инстанци FETCH потребно
  • Паралелизам FETCH отежан!

9 of 35

Конфликти ресурса

  • Инструкције траже исти ресурс у истом тренутку
  • Нпр две аритметичке инструкције
  • Решење
    • Две АЛУ!

10 of 35

Effect of �Dependencies

11 of 35

Ефекти на пројектовање

  • Паралелизам на нивоу инструкције
    • Инструкције у секвенци су независне
    • Извршење може да се преклапа
    • Претходно објашњене зависности су кључне
  • Паралелизам на нивоу хардвера
    • Спосбност експлоатације паралелизма на нивоу инструкције
    • Зависи од паралелне проточне обраде

12 of 35

Издавање инструкција

  • Редослаед дохватања
  • Редослед извршења
  • Редослед права на манипулацију регистрима

13 of 35

In-Order Issue �In-Order Completion

  • Инструкције се издају како и долазе
  • Неефикасно!
  • Може да дохвати >1 инструкције
  • Застој инструкција могућ

14 of 35

In-Order Issue In-Order Completion (Diagram)

15 of 35

In-Order Issue �Out-of-Order Completion

  • Излазна зависност!
    • R3:= R3 + R5; (I1)
    • R4:= R3 + 1; (I2)
    • R3:= R5 + 1; (I3)
    • I2 зависи од резилтата I1 – зависност података
    • Ако I3 заврши пре I1, резултат I1 је погрешан- излазна (read-write) зависност

16 of 35

In-Order Issue Out-of-Order Completion (Diagram)

17 of 35

Out-of-Order Issue�Out-of-Order Completion

  • Раздваја се decode pipeline од execution pipeline
  • Наставља fetch и decode док се pipeline не попуни
  • Извршење кад је ресурс слободан
  • Инструкције су декодиране, процесор одмах може да ради

18 of 35

Out-of-Order Issue Out-of-Order Completion (Diagram)

19 of 35

Антизависност

  • Write-write зависност
    • R3:=R3 + R5; (I1)
    • R4:=R3 + 1; (I2)
    • R3:=R5 + 1; (I3)
    • R7:=R3 + R4; (I4)
    • I3 не може да се заврши пре него I2 почне јер I2 тражи вредност у R3 а I3 мења R3

20 of 35

Reorder Buffer

  • Привремено спремиште резултата

21 of 35

Логичка и физичка имена регистара!

  • R3b:=R3a + R5a (I1)
  • R4b:=R3b + 1 (I2)
  • R3c:=R5a + 1 (I3)
  • R7b:=R3c + R4b (I4)
  • Без малог слова – логички регистар
  • With subscript is hardware register allocated

22 of 35

Speedups of Machine Organizations Without Procedural Dependencies

23 of 35

Предвиђање гранања

  • 80486 извршава дохват обе инструкције у селекцији
  • Два циклуса кашњења ако се селекција деси

if a then b else c

24 of 35

RISC – одложено гранање

  • Нађи исход логичке операције у селекцији пре него се инструкција које неће бити извршена упути у pre-fetch
  • Дакле, само једна инструкција по гранању
  • Има проблема:
  • У каналу за одложено гранање има много инструкција!
    • Instruction dependence problems
  • Ипак предикција!

25 of 35

Superscalar Execution

26 of 35

Код суперскалара

  • Истовремени fetch више инструкција
  • Кола која траже зависност
  • Техника да се то саопшти елементима процесора
  • Ресурси за паралелно извршавање инструкција
  • Чивање и ресаурација стања процеса!

27 of 35

Pentium 4 Block Diagram

28 of 35

Pentium 4 Operation

  • Fetch instructions form memory in order of static program
  • Translate instruction into one or more fixed length RISC instructions (micro-operations)
  • Execute micro-ops on superscalar pipeline
    • micro-ops may be executed out of order
  • Commit results of micro-ops to register set in original program flow order
  • Outer CISC shell with inner RISC core
  • Inner RISC core pipeline at least 20 stages
    • Some micro-ops require multiple execution stages
      • Longer pipeline
    • c.f. five stage pipeline on x86 up to Pentium

29 of 35

Pentium 4 Pipeline

30 of 35

Pentium 4 Pipeline Operation (1)

31 of 35

Pentium 4 Pipeline Operation (2)

32 of 35

Pentium 4 Pipeline Operation (3)

33 of 35

Pentium 4 Pipeline Operation (4)

34 of 35

Pentium 4 Pipeline Operation (5)

35 of 35

Pentium 4 Pipeline Operation (6)