1 of 44

Велике идеје

  • Фамилија рачунара
    • IBM System/360 1964
    • DEC PDP-8
    • Идеја раздвајања архитектуре од имплементације
  • Microporgrammed control unit
    • Wilkes 1951
    • IBM S/360 1964
  • Cache меморија
    • IBM S/360 model 85 1969

​

2 of 44

Велике идеје

  • Solid State RAM
    • Уместо језгара
  • Микропроцесор
    • Intel 4004 1971
  • Pipelining
    • Паралелизам у fetch execute cycle
  • Више процесора

​

3 of 44

Следећа велика идеја- RISC

  • Reduced Instruction Set Computer

​

  • особине
    • Много general purpose регистара
    • Или компајлер оптимизује број регистара
    • Прост скуп инструкција
    • Оптимизација instruction pipeline-а

​

4 of 44

Поређење

5 of 44

CISC

  • Трошкови софтвера већи од трошкова хардвера
  • Језиви вишег нивоа компликовани
  • Тешко учење, хардвер и софтвер се раздвајају неприродно
  • Добије се:
    • Велики скупови инструкција
    • Више адресних система
    • Хардверска имплементација структура програма
      • Пример CASE (switch) на VAX-у

6 of 44

Идеја CISC-а

  • Лако писање компајлера
  • Ефикасно извршење
    • Complex operations in microcode
  • Подршка још сложенијим језицима ВН

7 of 44

Особине циклуса извршења

  • Експерименти
    • Много операнада
    • Много циклсуа извршења
    • Много гранања
    • Сложене операције

​

  • Резултати:

8 of 44

Weighted Relative Dynamic Frequency of HLL Operations [PATT82a]

 

​

Dynamic Occurrence

​

Machine-Instruction Weighted

​

Memory-Reference Weighted

​

 

​

Pascal

​

C

​

Pascal

​

C

​

Pascal

​

C

​

ASSIGN

​

45%

​

38%

​

13%

​

13%

​

14%

​

15%

​

LOOP

​

5%

​

3%

​

42%

​

32%

​

33%

​

26%

​

CALL

​

15%

​

12%

​

31%

​

33%

​

44%

​

45%

​

IF

​

29%

​

43%

​

11%

​

21%

​

7%

​

13%

​

GOTO

​

—

​

3%

​

—

​

—

​

—

​

—

​

OTHER

​

6%

​

1%

​

3%

​

1%

​

2%

​

1%

​

9 of 44

Операнди

  • Углавном локалне варијабле, скалари
  • Дакле, фокус на дохватање локалних варијабли!

​

 

​

Pascal

​

C

​

Average

​

Integer Constant

​

16%

​

23%

​

20%

​

Scalar Variable

​

58%

​

53%

​

55%

​

Array/Structure

​

26%

​

24%

​

25%

​

10 of 44

Позивање процедура

  • Троши време
  • Зависи од броја параметара
  • Зависи од дубине петљи
  • Статистика: ретко!
  • Варијабле су локалне
  • (locality of reference)

11 of 44

Импликације

  • Оптимизовати операције које су најчешће и које троше највише времена
  • Много регистара
    • За дохват операнада
  • Посебан фокус на проточну обраду
    • Предвиђање гранања
  • И: reduced instruction set

​

12 of 44

Шта су велики регистри?

  • Software
  • Компајлер алоцира регистре
    • Критеријум: најчешће коришћени
    • Захтевна анализа
  • Hardware
    • Више физичких регистара
    • Више варијабли је у регистрима

13 of 44

Регистри за локалне варијабле

  • Локални скалари у регистре!
  • Позиви у РАМ смањени
  • Позив потпрограма руши локалност!
  • Параметри се шаљу
  • Резултати се враћају!
  • Поновно креирање варијабли!

14 of 44

Register Windows

  • Мало параметара
  • Ограничен начин позивања из ПП

​

15 of 44

Overlapping Register Windows

16 of 44

Circular Buffer diagram

17 of 44

Кружни бафер

  • Код позива у бафер, тренутни window pointer помера се на тренутно активан register window
  • Ако су сви прозори употребљени, генерише се interrupt и најстарији прозор иде у меморију
  • Сачувани window pointer показује где се позива сачувани прозор

​

18 of 44

Глобалне варијабле

  • Такође им дајемо посебан скуп регистара

19 of 44

Регистри и Cache

Large Register File

​

Cache

​

All local scalars

​

Recently-used local scalars

​

Individual variables

​

Blocks of memory

​

Compiler-assigned global variables

​

Recently-used global variables

​

Save/Restore based on procedure nesting depth

​

Save/Restore based on cache replacement algorithm

​

Register addressing

​

Memory addressing

​

20 of 44

Referencing a Scalar - �Window Based Register File

21 of 44

Referencing a Scalar - Cache

22 of 44

Compiler Based Register Optimization

  • Assume small number of registers (16-32)
  • Optimizing use is up to compiler
  • HLL programs have no explicit references to registers
    • usually - think about C - register int
  • Assign symbolic or virtual register to each candidate variable
  • Map (unlimited) symbolic registers to real registers
  • Symbolic registers that do not overlap can share real registers
  • If you run out of real registers some variables use memory

23 of 44

Graph Coloring

  • Given a graph of nodes and edges
  • Assign a color to each node
  • Adjacent nodes have different colors
  • Use minimum number of colors
  • Nodes are symbolic registers
  • Two registers that are live in the same program fragment are joined by an edge
  • Try to color the graph with n colors, where n is the number of real registers
  • Nodes that can not be colored are placed in memory

24 of 44

Graph Coloring Approach

25 of 44

Why CISC (1)?

  • Compiler simplification?
    • Disputed…
    • Complex machine instructions harder to exploit
    • Optimization more difficult
  • Smaller programs?
    • Program takes up less memory but…
    • Memory is now cheap
    • May not occupy less bits, just look shorter in symbolic form
      • More instructions require longer op-codes
      • Register references require fewer bits

​

​

​

26 of 44

Why CISC (2)?

  • Faster programs?
    • Bias towards use of simpler instructions
    • More complex control unit
    • Microprogram control store larger
    • thus simple instructions take longer to execute

​

  • It is far from clear that CISC is the appropriate solution

​

27 of 44

RISC Characteristics

  • One instruction per cycle
  • Register to register operations
  • Few, simple addressing modes
  • Few, simple instruction formats
  • Hardwired design (no microcode)
  • Fixed instruction format
  • More compile time/effort

28 of 44

RISC v CISC

  • Not clear cut
  • Many designs borrow from both philosophies
  • e.g. PowerPC and Pentium II

29 of 44

RISC Pipelining

  • Most instructions are register to register
  • Two phases of execution
    • I: Instruction fetch
    • E: Execute
      • ALU operation with register input and output
  • For load and store
    • I: Instruction fetch
    • E: Execute
      • Calculate memory address
    • D: Memory
      • Register to memory or memory to register operation

30 of 44

Effects of Pipelining

31 of 44

Optimization of Pipelining

  • Delayed branch
    • Does not take effect until after execution of following instruction
    • This following instruction is the delay slot
  • Delayed Load
    • Register to be target is locked by processor
    • Continue execution of instruction stream until register required
    • Idle until load complete
    • Re-arranging instructions can allow useful work whilst loading
  • Loop Unrolling
    • Replicate body of loop a number of times
    • Iterate loop fewer times
    • Reduces loop overhead
    • Increases instruction parallelism
    • Improved register, data cache or TLB locality

32 of 44

Loop Unrolling Twice �Example

do i=2, n-1

a[i] = a[i] + a[i-1] * a[i+l]

end do

​

Becomes

​

do i=2, n-2, 2

a[i] = a[i] + a[i-1] * a[i+i]

a[i+l] = a[i+l] + a[i] * a[i+2]

end do

if (mod(n-2,2) = i) then

a[n-1] = a[n-1] + a[n-2] * a[n]

end if

​

33 of 44

Normal and Delayed Branch

Address

​

Normal Branch

​

Delayed Branch

​

Optimized Delayed Branch

​

100

​

LOAD X, rA

​

LOAD X, rA

​

LOAD X, rA

​

101

​

ADD 1, rA

​

ADD 1, rA

​

JUMP 105

​

102

​

JUMP 105

​

JUMP 106

​

ADD 1, rA

​

103

​

ADD rA, rB

​

NOOP

​

ADD rA, rB

​

104

​

SUB rC, rB

​

ADD rA, rB

​

SUB rC, rB

​

105

​

STORE rA, Z

​

SUB rC, rB

​

STORE rA, Z

​

106

​

 

​

STORE rA, Z

​

 

​

34 of 44

Use of Delayed �Branch

35 of 44

Controversy

  • Quantitative
    • compare program sizes and execution speeds
  • Qualitative
    • examine issues of high level language support and use of VLSI real estate
  • Problems
    • No pair of RISC and CISC that are directly comparable
    • No definitive set of test programs
    • Difficult to separate hardware effects from complier effects
    • Most comparisons done on “toy” rather than production machines
    • Most commercial devices are a mixture

36 of 44

Required Reading

  • Stallings chapter 13
  • Manufacturer web sites

37 of 44

MIPS

38 of 44

MIPS

The instruction set consists of a variety of basic instructions, including:

  • 21 arithmetic instructions (+, -, *, /, %)
  • 8 logic instructions (&, |, ~)
  • 8 bit manipulation instructions
  • 12 comparison instructions (>, <, =, >=, <=, ¬)
  • 25 branch/jump instructions
  • 15 load instructions
  • 10 store instructions
  • 8 move instructions
  • 4 miscellaneous instructions

​

39 of 44

RISC pipeline

RISC Pipelines�

  • fetch instructions from memory
  • read registers and decode the instruction
  • execute the instruction or calculate an address
  • access an operand in data memory
  • write the result into a register

​

40 of 44

41 of 44

42 of 44

CISC

MULT 2:3, 5:2

43 of 44

RISC

LOAD A, 2:3�LOAD B, 5:2�PROD A, B�STORE 2:3, A

44 of 44

Разлика у приступу смањењу времена обраде

CISC

RISC