annotate documents/pygar-slides-handout.lyx @ 74:31fef269ae58 pygar svn.75

[svn r75] presentation for wednesdaty
author rlm
date Wed, 12 May 2010 02:25:34 -0400
parents
children
rev   line source
rlm@74 1 #LyX 1.6.4 created this file. For more info see http://www.lyx.org/
rlm@74 2 \lyxformat 345
rlm@74 3 \begin_document
rlm@74 4 \begin_header
rlm@74 5 \textclass article
rlm@74 6 \use_default_options true
rlm@74 7 \language english
rlm@74 8 \inputencoding auto
rlm@74 9 \font_roman default
rlm@74 10 \font_sans default
rlm@74 11 \font_typewriter default
rlm@74 12 \font_default_family default
rlm@74 13 \font_sc false
rlm@74 14 \font_osf false
rlm@74 15 \font_sf_scale 100
rlm@74 16 \font_tt_scale 100
rlm@74 17
rlm@74 18 \graphics default
rlm@74 19 \paperfontsize default
rlm@74 20 \use_hyperref false
rlm@74 21 \papersize default
rlm@74 22 \use_geometry false
rlm@74 23 \use_amsmath 1
rlm@74 24 \use_esint 1
rlm@74 25 \cite_engine basic
rlm@74 26 \use_bibtopic false
rlm@74 27 \paperorientation portrait
rlm@74 28 \secnumdepth 3
rlm@74 29 \tocdepth 3
rlm@74 30 \paragraph_separation indent
rlm@74 31 \defskip medskip
rlm@74 32 \quotes_language english
rlm@74 33 \papercolumns 1
rlm@74 34 \papersides 1
rlm@74 35 \paperpagestyle default
rlm@74 36 \tracking_changes false
rlm@74 37 \output_changes false
rlm@74 38 \author ""
rlm@74 39 \author ""
rlm@74 40 \end_header
rlm@74 41
rlm@74 42 \begin_body
rlm@74 43
rlm@74 44 \begin_layout Title
rlm@74 45 Pygar: Parallel Audio Processing
rlm@74 46 \end_layout
rlm@74 47
rlm@74 48 \begin_layout Author
rlm@74 49 Laurel Pardue, Robert McIntyre
rlm@74 50 \end_layout
rlm@74 51
rlm@74 52 \begin_layout Subsection*
rlm@74 53 Problem
rlm@74 54 \end_layout
rlm@74 55
rlm@74 56 \begin_layout Standard
rlm@74 57 Music naturally comes in parallel sequences of samples called
rlm@74 58 \emph on
rlm@74 59 voices
rlm@74 60 \emph default
rlm@74 61 (ex.
rlm@74 62 from multiple instruments).
rlm@74 63 Pure-software mixers are forced to pass these voices through the Von Neuman
rlm@74 64 bottleneck of a single processor, operating on these streams in series
rlm@74 65 and switching between each one quickly.
rlm@74 66 They are therefore naturally limited in the number of voices they can handle.
rlm@74 67 Worse, since the processing of each voice has to share the same processor,
rlm@74 68 too many voices at once can fully max out the processor and crash the system.
rlm@74 69 On typical laptop hardware and a high end software tool like ProTools,
rlm@74 70 this number is around 5.
rlm@74 71 Embedded devices have an even tougher time at meeting any sort of reasonable
rlm@74 72 timing requirements.
rlm@74 73 \end_layout
rlm@74 74
rlm@74 75 \begin_layout Standard
rlm@74 76 [screenie Just 6 voices are enough to bring this session of ProTools to
rlm@74 77 it's knees.]
rlm@74 78 \end_layout
rlm@74 79
rlm@74 80 \begin_layout Standard
rlm@74 81 We want the power of writing transforms for voices in a high level language
rlm@74 82 combined with a framework that applies these transforms to the voices in
rlm@74 83 parallel.
rlm@74 84 \end_layout
rlm@74 85
rlm@74 86 \begin_layout Subsection*
rlm@74 87 Vision --- Pygar
rlm@74 88 \end_layout
rlm@74 89
rlm@74 90 \begin_layout Standard
rlm@74 91 Our system addresses the limitations of pure software mixers.
rlm@74 92 It is a grid of SMIPS processors capped by a mixer.
rlm@74 93 The voices flow through the processors in parallel and are combined at
rlm@74 94 the final mixer into a single stream.
rlm@74 95 Each processor can be loaded with any arbitrary C program.
rlm@74 96 \end_layout
rlm@74 97
rlm@74 98 \begin_layout Standard
rlm@74 99 \begin_inset Float figure
rlm@74 100 placement H
rlm@74 101 wide false
rlm@74 102 sideways false
rlm@74 103 status collapsed
rlm@74 104
rlm@74 105 \begin_layout Plain Layout
rlm@74 106 \begin_inset Graphics
rlm@74 107 filename ../../../../Pygar/documents/000402.png
rlm@74 108 width 5in
rlm@74 109
rlm@74 110 \end_inset
rlm@74 111
rlm@74 112
rlm@74 113 \begin_inset Caption
rlm@74 114
rlm@74 115 \begin_layout Plain Layout
rlm@74 116 The audio data (“samples”) start in the memory, but are soon pulled into
rlm@74 117 action by the DMA (direct memory access).
rlm@74 118 The DMA sends the samples to a chain of 0 or more soft-cores, where they
rlm@74 119 are transformed according to the soft-cores’ algorithms.
rlm@74 120 After running the gauntlet of soft-cores, the samples flow first to a buffering
rlm@74 121 FIFO, and finally to a mixer, which sends the samples off to be played
rlm@74 122 by speakers or stored in a file.
rlm@74 123
rlm@74 124 \end_layout
rlm@74 125
rlm@74 126 \end_inset
rlm@74 127
rlm@74 128
rlm@74 129 \end_layout
rlm@74 130
rlm@74 131 \begin_layout Plain Layout
rlm@74 132
rlm@74 133 \end_layout
rlm@74 134
rlm@74 135 \end_inset
rlm@74 136
rlm@74 137
rlm@74 138 \end_layout
rlm@74 139
rlm@74 140 \begin_layout Subsection*
rlm@74 141 Steps
rlm@74 142 \end_layout
rlm@74 143
rlm@74 144 \begin_layout Standard
rlm@74 145 The difficult part of this project is managing code reuse.
rlm@74 146 We need three things for success.
rlm@74 147
rlm@74 148 \end_layout
rlm@74 149
rlm@74 150 \begin_layout Itemize
rlm@74 151 SMIPS processor -- Easy.
rlm@74 152 Just use the Lab 5 processors.
rlm@74 153 \end_layout
rlm@74 154
rlm@74 155 \begin_layout Itemize
rlm@74 156 Some way to program the processors
rlm@74 157 \end_layout
rlm@74 158
rlm@74 159 \begin_layout Itemize
rlm@74 160 DMA (Direct Memory Access) to load voices into the processors.
rlm@74 161 \end_layout
rlm@74 162
rlm@74 163 \begin_layout Standard
rlm@74 164 We use ScratchPad to load code into the processors.
rlm@74 165 ScratchPad is an Intel module which implements a cache hierarchy.
rlm@74 166 The hierarchy reaches all the way from RAM created on the FPGA to on-chip
rlm@74 167 DRAM to RAM on the host computer all the way to the Hard Disk of the host
rlm@74 168 computer.
rlm@74 169 The first time a processor tries to access one of its instructions, the
rlm@74 170 cache goes all the way to the hard disk of the host computer to retrieve
rlm@74 171 the data.
rlm@74 172 Subsequent attempts to access this data only go as far as the on-chip DRAM.
rlm@74 173 Each processor has its own ScratchPad and thus can be programmed independently.
rlm@74 174 The ScratchPad abstraction allows each processor to run a program of any
rlm@74 175 size.
rlm@74 176 \end_layout
rlm@74 177
rlm@74 178 \begin_layout Standard
rlm@74 179 Music access is achieved through RRR, another Intel abstraction which allows
rlm@74 180 us to treat the hard disk of the host computer as if it were a normal FIFO.
rlm@74 181 \end_layout
rlm@74 182
rlm@74 183 \begin_layout Subsection*
rlm@74 184 News
rlm@74 185 \end_layout
rlm@74 186
rlm@74 187 \begin_layout Standard
rlm@74 188 We have run our system with 12 sample voices and various combinations of
rlm@74 189 simple c voice processing programs and the results have been better than
rlm@74 190 software implementations.
rlm@74 191 Significantly, increasing the number of voices does not increase the processing
rlm@74 192 load since each voice is processed in parallel.
rlm@74 193 \end_layout
rlm@74 194
rlm@74 195 \begin_layout Subsection*
rlm@74 196 Contributions
rlm@74 197 \end_layout
rlm@74 198
rlm@74 199 \begin_layout Itemize
rlm@74 200 Implemented Pygar, a system for quick parallel processing of audio.
rlm@74 201
rlm@74 202 \end_layout
rlm@74 203
rlm@74 204 \begin_layout Itemize
rlm@74 205 Implemented 4 basic algorithms which serve as components for this system
rlm@74 206 (identity, bit-shift, volume-change, and delay)
rlm@74 207 \end_layout
rlm@74 208
rlm@74 209 \begin_layout Itemize
rlm@74 210 Demonstrated Pygar out-performs software-only systems.
rlm@74 211 Pure-software systems have a limit of around 6 voices, while our system
rlm@74 212 achieves 12 voices in parallel with no architecturally imposed limit on
rlm@74 213 the number of voices.
rlm@74 214 \end_layout
rlm@74 215
rlm@74 216 \end_body
rlm@74 217 \end_document