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
|