Mercurial > pygar
view 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 |
line wrap: on
line source
1 #LyX 1.6.4 created this file. For more info see http://www.lyx.org/2 \lyxformat 3453 \begin_document4 \begin_header5 \textclass article6 \use_default_options true7 \language english8 \inputencoding auto9 \font_roman default10 \font_sans default11 \font_typewriter default12 \font_default_family default13 \font_sc false14 \font_osf false15 \font_sf_scale 10016 \font_tt_scale 10018 \graphics default19 \paperfontsize default20 \use_hyperref false21 \papersize default22 \use_geometry false23 \use_amsmath 124 \use_esint 125 \cite_engine basic26 \use_bibtopic false27 \paperorientation portrait28 \secnumdepth 329 \tocdepth 330 \paragraph_separation indent31 \defskip medskip32 \quotes_language english33 \papercolumns 134 \papersides 135 \paperpagestyle default36 \tracking_changes false37 \output_changes false38 \author ""39 \author ""40 \end_header42 \begin_body44 \begin_layout Title45 Pygar: Parallel Audio Processing46 \end_layout48 \begin_layout Author49 Laurel Pardue, Robert McIntyre50 \end_layout52 \begin_layout Subsection*53 Problem54 \end_layout56 \begin_layout Standard57 Music naturally comes in parallel sequences of samples called58 \emph on59 voices60 \emph default61 (ex.62 from multiple instruments).63 Pure-software mixers are forced to pass these voices through the Von Neuman64 bottleneck of a single processor, operating on these streams in series65 and switching between each one quickly.66 They are therefore naturally limited in the number of voices they can handle.67 Worse, since the processing of each voice has to share the same processor,68 too many voices at once can fully max out the processor and crash the system.69 On typical laptop hardware and a high end software tool like ProTools,70 this number is around 5.71 Embedded devices have an even tougher time at meeting any sort of reasonable72 timing requirements.73 \end_layout75 \begin_layout Standard76 [screenie Just 6 voices are enough to bring this session of ProTools to77 it's knees.]78 \end_layout80 \begin_layout Standard81 We want the power of writing transforms for voices in a high level language82 combined with a framework that applies these transforms to the voices in83 parallel.84 \end_layout86 \begin_layout Subsection*87 Vision --- Pygar88 \end_layout90 \begin_layout Standard91 Our system addresses the limitations of pure software mixers.92 It is a grid of SMIPS processors capped by a mixer.93 The voices flow through the processors in parallel and are combined at94 the final mixer into a single stream.95 Each processor can be loaded with any arbitrary C program.96 \end_layout98 \begin_layout Standard99 \begin_inset Float figure100 placement H101 wide false102 sideways false103 status collapsed105 \begin_layout Plain Layout106 \begin_inset Graphics107 filename ../../../../Pygar/documents/000402.png108 width 5in110 \end_inset113 \begin_inset Caption115 \begin_layout Plain Layout116 The audio data (“samples”) start in the memory, but are soon pulled into117 action by the DMA (direct memory access).118 The DMA sends the samples to a chain of 0 or more soft-cores, where they119 are transformed according to the soft-cores’ algorithms.120 After running the gauntlet of soft-cores, the samples flow first to a buffering121 FIFO, and finally to a mixer, which sends the samples off to be played122 by speakers or stored in a file.124 \end_layout126 \end_inset129 \end_layout131 \begin_layout Plain Layout133 \end_layout135 \end_inset138 \end_layout140 \begin_layout Subsection*141 Steps142 \end_layout144 \begin_layout Standard145 The difficult part of this project is managing code reuse.146 We need three things for success.148 \end_layout150 \begin_layout Itemize151 SMIPS processor -- Easy.152 Just use the Lab 5 processors.153 \end_layout155 \begin_layout Itemize156 Some way to program the processors157 \end_layout159 \begin_layout Itemize160 DMA (Direct Memory Access) to load voices into the processors.161 \end_layout163 \begin_layout Standard164 We use ScratchPad to load code into the processors.165 ScratchPad is an Intel module which implements a cache hierarchy.166 The hierarchy reaches all the way from RAM created on the FPGA to on-chip167 DRAM to RAM on the host computer all the way to the Hard Disk of the host168 computer.169 The first time a processor tries to access one of its instructions, the170 cache goes all the way to the hard disk of the host computer to retrieve171 the data.172 Subsequent attempts to access this data only go as far as the on-chip DRAM.173 Each processor has its own ScratchPad and thus can be programmed independently.174 The ScratchPad abstraction allows each processor to run a program of any175 size.176 \end_layout178 \begin_layout Standard179 Music access is achieved through RRR, another Intel abstraction which allows180 us to treat the hard disk of the host computer as if it were a normal FIFO.181 \end_layout183 \begin_layout Subsection*184 News185 \end_layout187 \begin_layout Standard188 We have run our system with 12 sample voices and various combinations of189 simple c voice processing programs and the results have been better than190 software implementations.191 Significantly, increasing the number of voices does not increase the processing192 load since each voice is processed in parallel.193 \end_layout195 \begin_layout Subsection*196 Contributions197 \end_layout199 \begin_layout Itemize200 Implemented Pygar, a system for quick parallel processing of audio.202 \end_layout204 \begin_layout Itemize205 Implemented 4 basic algorithms which serve as components for this system206 (identity, bit-shift, volume-change, and delay)207 \end_layout209 \begin_layout Itemize210 Demonstrated Pygar out-performs software-only systems.211 Pure-software systems have a limit of around 6 voices, while our system212 achieves 12 voices in parallel with no architecturally imposed limit on213 the number of voices.214 \end_layout216 \end_body217 \end_document