TU Wien:Codegeneratoren VO (Krall)/Index Skriptum WS10

Aus VoWi
Zur Navigation springen Zur Suche springen

Papers[Bearbeiten | Quelltext bearbeiten]

Architecture[Bearbeiten | Quelltext bearbeiten]

The PowerPC 604 RISC Microprocessor - Song & Denman (Seite 1)[Bearbeiten | Quelltext bearbeiten]

  • out-of-order Execution (Seite 1)
  • Register renaming (Seite 2)
  • Branch prediction, speculative execution (Seite 3)
  • Serialazation (Seite 3)

Link: https://ieeexplore.ieee.org/document/363071/

Alpha AXP Architecture - Sites (Seite 11)[Bearbeiten | Quelltext bearbeiten]

  • Definition Computer Architecture (Seite 11)
  • Definition Implemetation (Micro Architecture)(Seite 11)
  • Load-Store architecture (Seite 12)

Link: https://www.linux-mips.org/pub/linux/mips/people/macro/DEC/DTJ/DTJ801/DTJ801PF.PDF

Discovery 6, Intels Sternenschiff P6 im Detail - Schnurer (Seite 23)[Bearbeiten | Quelltext bearbeiten]

Hinweis: Bei diesem Artikel sind die Seiten vertauscht. Die richtige Reihenfolge: 23, 24, 28, 29, 26, 25

Compiler Optimizations[Bearbeiten | Quelltext bearbeiten]

Advanced Compiler Optimizations For Supercomputers - Padua & Wolfe (Seite 29)[Bearbeiten | Quelltext bearbeiten]

  • Data Dependence (Seite 30)
  • true dependence/flow dependance (Seite 30)
  • antidependence (Seite 30)
  • output dependence, write-after-write (WAW) (Seite 30)
  • control dependence (Seite 30)
  • Loop Vectorication (Seite 32)
  • Loop Concurrentization (Seite 33)

Link: http://polaris.cs.uiuc.edu/~padua/cs320/p1184-padua.pdf

The CONVEX FORTRAN 5.0 Compiler - Mercer (Seite 47)[Bearbeiten | Quelltext bearbeiten]

Hinweis: Seite 53/54 vertauscht.

  • Local Scalar Optimization (Seite 53)
    • redundant assignment elimination
    • redundant use elimination
    • assignment substitution
    • common expression elimination
    • simple strength reduction
    • algebraic simplification
    • branch simplification
    • constant folding
  • Global Scalar Optimization (Seite 53/55)
    • constant propagation
    • copy propagation
    • unreachable/useless code elimination
    • induction variable optimization
    • common expression elimination
  • Inline Expansion/Inlining (Seite 56)

Effectiveness of a Machine-Level, Global Optimizer - Johnson & Miller (Seite 59)[Bearbeiten | Quelltext bearbeiten]

Link: http://dl.acm.org/citation.cfm?id=13321&bnc=1

Code Generators[Bearbeiten | Quelltext bearbeiten]

Engineering a Simple, Efficient Code Generator Generator - Fraser & Hanson & Proebsting (Seite 69)[Bearbeiten | Quelltext bearbeiten]

Link: http://dl.acm.org/citation.cfm?id=151642&bnc=1

Engineering a Simple, Efficient Code Generator Generator - Fraser & Hanson & Proebsting (Seite 83)[Bearbeiten | Quelltext bearbeiten]

  • BURG
  • iBURG


Fast and Flexible Instruction Selection with Constraints - Thier & Ertl & Krall[Bearbeiten | Quelltext bearbeiten]

  • FFISC

Link: http://www.complang.tuwien.ac.at/andi/papers/cc_18.pdf


Generalized Instruction Selection using SSA Graphs - Ebner & Brandner & Scholz & Krall & Wiedermann & Kadlec (Seite 108)[Bearbeiten | Quelltext bearbeiten]

  • SSA

Link: http://llvm.org/pubs/2008-06-LCTES-ISelUsingSSAGraphs.pdf

Register Allocation[Bearbeiten | Quelltext bearbeiten]

Coloring Heuristics for Register Allocation - Briggs & Cooper & Kennedy & Torczon (Seite 118)[Bearbeiten | Quelltext bearbeiten]

  • Register Allocation
  • Graph Coloring
  • Chaitin's Heuristic (Seite 119)

Link: http://dl.acm.org/citation.cfm?id=74843&bnc=1

Register Allocation & Spilling via Graph Coloring - Chaitin (Seite 128)[Bearbeiten | Quelltext bearbeiten]

  • Register Allocation
  • Graph Coloring
  • Interference Graph (Seite 129)
  • Coalescing (Seite 129)
  • Variable Propagation/Subsumption (Seite 129)

Link: http://dl.acm.org/citation.cfm?id=806984&bnc=1

Register Allocation via Coloring - Chaitin & Auslander & Chandra & Cocke & Hopkins & Markstein (Seite 136)[Bearbeiten | Quelltext bearbeiten]

  • Register Allocation
  • Graph Coloring
  • Interference
  • Register Pressure (Seite 142)
  • Rematerialization (Seite 143)

Link: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.452.8606&rep=rep1&type=pdf

The Priority-Based Coloring Approacht to Register Allocation - Chow & Hennessy (Seite 147)[Bearbeiten | Quelltext bearbeiten]

  • Register Allocation
  • Chromatic Number (Seite 148, links unten)
  • Live Ranges (Seite 150)
  • Priority Based Coloring (Seite 152)
  • Live Range Splitting (Seite 153)

Link: http://dl.acm.org/citation.cfm?id=88621&bnc=1

Optimistic Register Coalescing - Park & Moon (Seite 166)[Bearbeiten | Quelltext bearbeiten]

  • Agressive Coalescing (Seite 168)
  • Conservative Coalescing (Seite 168)
    • rematerialization
  • Optimistic Coalescing (Seite 169)

Link: https://ieeexplore.ieee.org/document/727246/

Optimal and Near-optimal Global Register Allocation Using 0-1 Integer Programming - Goodwin & Wilken (Seite 175)[Bearbeiten | Quelltext bearbeiten]

  • Optimal Register Allocation (ORA) (Seite 176)
  • CPLEX (Solver) (Seite 177)

Link: http://onlinelibrary.wiley.com/doi/10.1002/(SICI)1097-024X(199608)26:8%3C929::AID-SPE40%3E3.0.CO;2-T/abstract

A Faster Optimal Register Allocation - Wilken (Seite 194)[Bearbeiten | Quelltext bearbeiten]

Link: https://ieeexplore.ieee.org/document/1176254/

Interprocedural Register Allocation[Bearbeiten | Quelltext bearbeiten]

Global Register Allocation at Link Time - Wall (Seite 206)[Bearbeiten | Quelltext bearbeiten]

  • Link Time Register Allocation

Link: http://dl.acm.org/citation.cfm?id=13338

Register Allocation Across Procedure and Module Boundries - Santharnam & Odnert (Seite 218)[Bearbeiten | Quelltext bearbeiten]

  • Link Time Register Allocation
  • L_REF (Local Reference Set) (Seite 220)
  • C_REF (Child Reference Set) (Seite 220)
  • P_REF (Parent Reference Set) (Seite 220)
  • Spill Code Movement/Spill Code Motion (Seite 222)

Link: http://dl.acm.org/citation.cfm?id=93551&bnc=1

Instruction Scheduling[Bearbeiten | Quelltext bearbeiten]

Instruction scheduling for the IBM RISC System/6000 processor - Warren (Seite 230)[Bearbeiten | Quelltext bearbeiten]

  • IBM Paper zu Instruction Scheduling
  • List Scheduling (Seite 234/235)

Link: https://ieeexplore.ieee.org/document/5389862/?arnumber=5389862 (nicht verfügbar über die UB)

Das Paper ist auch auf Sci Hub via "10.1147/rd.341.0085" zu finden.

Efficient Instruction Scheduling for a Pipelined Architecture - Gibbons & Muchnick (Seite 238)[Bearbeiten | Quelltext bearbeiten]

  • HP Paper zu Instruction Scheduling

Link: http://dl.acm.org/citation.cfm?id=13312&bnc=1

Integrated Register Allocation and Instruction Scheduling[Bearbeiten | Quelltext bearbeiten]

Code Scheduling an Register Allocation in Large Basic Blocks - Goodman & Hsu (Seite 244)[Bearbeiten | Quelltext bearbeiten]

  • CSP (Code Scheduling for Pipelined processors) (Seite 245)
  • CSR (Code Scheduling to minimize Register usage) (Seite 246)
  • AVLREG (bumber of Available Registers) (Seite 247)
  • Integrated Scheduling Algorithm (Algorithm 1) (Seite 247)
  • Free WAR (write-after-read) Dependencies
  • DAG-Driven Allocation Algorithm (Algorithm 2) (Seite 252)

Link: http://dl.acm.org/citation.cfm?id=55407&bnc=1

Integrated Register Allocation and Instruction Scheduling for RISCs - Bradlee & Eggers & Henry (Seite 254)[Bearbeiten | Quelltext bearbeiten]

  • RASE (Register Allocation with Schedule Estimates) (Seite 255)
  • RASE Code Generation (TODO:?) (Seite 257)

Link: http://dl.acm.org/citation.cfm?id=106986&bnc=1

Phase Ordering of Register Allocation and Instruction Scheduling - Freudenberger & Ruttenberg (Seite 264)[Bearbeiten | Quelltext bearbeiten]

Trace: Pfad von Instruktionen mit Ein- und Aussprüngen aber ohne Schleife außer zum Anfang. (TODO: wording)

  • VLM Data Structure (Value-Location Mapping) (Seite 267)

Software Pipelining[Bearbeiten | Quelltext bearbeiten]

Software Pipelining: An Effective Scheduling Technique for VLIW Machines - LAM (Seite 283)[Bearbeiten | Quelltext bearbeiten]

  • Modulo variable expansion (Seite 287)

Link: http://dl.acm.org/citation.cfm?id=53990.54022

A Realistic Resouce-Comstrained Sowfware Pipelining Algorithm - Aiken & Nicolau (Seite 294)[Bearbeiten | Quelltext bearbeiten]

Problem: Keine Heuristik zum auswählen der Befehle angegeben

Link: https://theory.stanford.edu/~aiken/publications/papers/ieeetpds95.pdf

Iterative Modulo Scheduling: An Algorithm For Software Pipelining Loops - Rau (Seite 303)[Bearbeiten | Quelltext bearbeiten]

  • MII (minimum initiation interval) (Seite 304)
  • Iterative modulo scheduling (Seite 307)
  • Characterization of iterative modulo scheduling (Seite 311)

Link: http://dl.acm.org/citation.cfm?id=192731&bnc=1

Compiler optimazations for processors with SIMD instructions - Pryanishnikov & Krall & Horspool (Seite 314)[Bearbeiten | Quelltext bearbeiten]

  • SIMD (single instruction multiple data)
  • Generation of LOAD & STORE SIMD instructions (Seite 320)
  • Alignment Analysis (Seite 323)

Link: http://onlinelibrary.wiley.com/doi/10.1002/spe.751/abstract