Mercurial > pygar
diff 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 diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/documents/pygar-slides-handout.lyx Wed May 12 02:25:34 2010 -0400 1.3 @@ -0,0 +1,217 @@ 1.4 +#LyX 1.6.4 created this file. For more info see http://www.lyx.org/ 1.5 +\lyxformat 345 1.6 +\begin_document 1.7 +\begin_header 1.8 +\textclass article 1.9 +\use_default_options true 1.10 +\language english 1.11 +\inputencoding auto 1.12 +\font_roman default 1.13 +\font_sans default 1.14 +\font_typewriter default 1.15 +\font_default_family default 1.16 +\font_sc false 1.17 +\font_osf false 1.18 +\font_sf_scale 100 1.19 +\font_tt_scale 100 1.20 + 1.21 +\graphics default 1.22 +\paperfontsize default 1.23 +\use_hyperref false 1.24 +\papersize default 1.25 +\use_geometry false 1.26 +\use_amsmath 1 1.27 +\use_esint 1 1.28 +\cite_engine basic 1.29 +\use_bibtopic false 1.30 +\paperorientation portrait 1.31 +\secnumdepth 3 1.32 +\tocdepth 3 1.33 +\paragraph_separation indent 1.34 +\defskip medskip 1.35 +\quotes_language english 1.36 +\papercolumns 1 1.37 +\papersides 1 1.38 +\paperpagestyle default 1.39 +\tracking_changes false 1.40 +\output_changes false 1.41 +\author "" 1.42 +\author "" 1.43 +\end_header 1.44 + 1.45 +\begin_body 1.46 + 1.47 +\begin_layout Title 1.48 +Pygar: Parallel Audio Processing 1.49 +\end_layout 1.50 + 1.51 +\begin_layout Author 1.52 +Laurel Pardue, Robert McIntyre 1.53 +\end_layout 1.54 + 1.55 +\begin_layout Subsection* 1.56 +Problem 1.57 +\end_layout 1.58 + 1.59 +\begin_layout Standard 1.60 +Music naturally comes in parallel sequences of samples called 1.61 +\emph on 1.62 +voices 1.63 +\emph default 1.64 + (ex. 1.65 + from multiple instruments). 1.66 + Pure-software mixers are forced to pass these voices through the Von Neuman 1.67 + bottleneck of a single processor, operating on these streams in series 1.68 + and switching between each one quickly. 1.69 + They are therefore naturally limited in the number of voices they can handle. 1.70 + Worse, since the processing of each voice has to share the same processor, 1.71 + too many voices at once can fully max out the processor and crash the system. 1.72 + On typical laptop hardware and a high end software tool like ProTools, 1.73 + this number is around 5. 1.74 + Embedded devices have an even tougher time at meeting any sort of reasonable 1.75 + timing requirements. 1.76 +\end_layout 1.77 + 1.78 +\begin_layout Standard 1.79 +[screenie Just 6 voices are enough to bring this session of ProTools to 1.80 + it's knees.] 1.81 +\end_layout 1.82 + 1.83 +\begin_layout Standard 1.84 +We want the power of writing transforms for voices in a high level language 1.85 + combined with a framework that applies these transforms to the voices in 1.86 + parallel. 1.87 +\end_layout 1.88 + 1.89 +\begin_layout Subsection* 1.90 +Vision --- Pygar 1.91 +\end_layout 1.92 + 1.93 +\begin_layout Standard 1.94 +Our system addresses the limitations of pure software mixers. 1.95 + It is a grid of SMIPS processors capped by a mixer. 1.96 + The voices flow through the processors in parallel and are combined at 1.97 + the final mixer into a single stream. 1.98 + Each processor can be loaded with any arbitrary C program. 1.99 +\end_layout 1.100 + 1.101 +\begin_layout Standard 1.102 +\begin_inset Float figure 1.103 +placement H 1.104 +wide false 1.105 +sideways false 1.106 +status collapsed 1.107 + 1.108 +\begin_layout Plain Layout 1.109 +\begin_inset Graphics 1.110 + filename ../../../../Pygar/documents/000402.png 1.111 + width 5in 1.112 + 1.113 +\end_inset 1.114 + 1.115 + 1.116 +\begin_inset Caption 1.117 + 1.118 +\begin_layout Plain Layout 1.119 +The audio data (“samples”) start in the memory, but are soon pulled into 1.120 + action by the DMA (direct memory access). 1.121 + The DMA sends the samples to a chain of 0 or more soft-cores, where they 1.122 + are transformed according to the soft-cores’ algorithms. 1.123 + After running the gauntlet of soft-cores, the samples flow first to a buffering 1.124 + FIFO, and finally to a mixer, which sends the samples off to be played 1.125 + by speakers or stored in a file. 1.126 + 1.127 +\end_layout 1.128 + 1.129 +\end_inset 1.130 + 1.131 + 1.132 +\end_layout 1.133 + 1.134 +\begin_layout Plain Layout 1.135 + 1.136 +\end_layout 1.137 + 1.138 +\end_inset 1.139 + 1.140 + 1.141 +\end_layout 1.142 + 1.143 +\begin_layout Subsection* 1.144 +Steps 1.145 +\end_layout 1.146 + 1.147 +\begin_layout Standard 1.148 +The difficult part of this project is managing code reuse. 1.149 + We need three things for success. 1.150 + 1.151 +\end_layout 1.152 + 1.153 +\begin_layout Itemize 1.154 +SMIPS processor -- Easy. 1.155 + Just use the Lab 5 processors. 1.156 +\end_layout 1.157 + 1.158 +\begin_layout Itemize 1.159 +Some way to program the processors 1.160 +\end_layout 1.161 + 1.162 +\begin_layout Itemize 1.163 +DMA (Direct Memory Access) to load voices into the processors. 1.164 +\end_layout 1.165 + 1.166 +\begin_layout Standard 1.167 +We use ScratchPad to load code into the processors. 1.168 + ScratchPad is an Intel module which implements a cache hierarchy. 1.169 + The hierarchy reaches all the way from RAM created on the FPGA to on-chip 1.170 + DRAM to RAM on the host computer all the way to the Hard Disk of the host 1.171 + computer. 1.172 + The first time a processor tries to access one of its instructions, the 1.173 + cache goes all the way to the hard disk of the host computer to retrieve 1.174 + the data. 1.175 + Subsequent attempts to access this data only go as far as the on-chip DRAM. 1.176 + Each processor has its own ScratchPad and thus can be programmed independently. 1.177 + The ScratchPad abstraction allows each processor to run a program of any 1.178 + size. 1.179 +\end_layout 1.180 + 1.181 +\begin_layout Standard 1.182 +Music access is achieved through RRR, another Intel abstraction which allows 1.183 + us to treat the hard disk of the host computer as if it were a normal FIFO. 1.184 +\end_layout 1.185 + 1.186 +\begin_layout Subsection* 1.187 +News 1.188 +\end_layout 1.189 + 1.190 +\begin_layout Standard 1.191 +We have run our system with 12 sample voices and various combinations of 1.192 + simple c voice processing programs and the results have been better than 1.193 + software implementations. 1.194 + Significantly, increasing the number of voices does not increase the processing 1.195 + load since each voice is processed in parallel. 1.196 +\end_layout 1.197 + 1.198 +\begin_layout Subsection* 1.199 +Contributions 1.200 +\end_layout 1.201 + 1.202 +\begin_layout Itemize 1.203 +Implemented Pygar, a system for quick parallel processing of audio. 1.204 + 1.205 +\end_layout 1.206 + 1.207 +\begin_layout Itemize 1.208 +Implemented 4 basic algorithms which serve as components for this system 1.209 + (identity, bit-shift, volume-change, and delay) 1.210 +\end_layout 1.211 + 1.212 +\begin_layout Itemize 1.213 +Demonstrated Pygar out-performs software-only systems. 1.214 + Pure-software systems have a limit of around 6 voices, while our system 1.215 + achieves 12 voices in parallel with no architecturally imposed limit on 1.216 + the number of voices. 1.217 +\end_layout 1.218 + 1.219 +\end_body 1.220 +\end_document