# HG changeset patch # User rlm # Date 1273645534 14400 # Node ID 31fef269ae58bbdb29a5746845e912f7ee88d272 # Parent 0f86d486e38e5ed49bf3ce3cab2a0bf4a40769d1 [svn r75] presentation for wednesdaty diff -r 0f86d486e38e -r 31fef269ae58 documents/Pygar-slides.odp Binary file documents/Pygar-slides.odp has changed diff -r 0f86d486e38e -r 31fef269ae58 documents/pygar-slides-handout.lyx --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/documents/pygar-slides-handout.lyx Wed May 12 02:25:34 2010 -0400 @@ -0,0 +1,217 @@ +#LyX 1.6.4 created this file. For more info see http://www.lyx.org/ +\lyxformat 345 +\begin_document +\begin_header +\textclass article +\use_default_options true +\language english +\inputencoding auto +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 + +\graphics default +\paperfontsize default +\use_hyperref false +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 1 +\cite_engine basic +\use_bibtopic false +\paperorientation portrait +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\defskip medskip +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\author "" +\author "" +\end_header + +\begin_body + +\begin_layout Title +Pygar: Parallel Audio Processing +\end_layout + +\begin_layout Author +Laurel Pardue, Robert McIntyre +\end_layout + +\begin_layout Subsection* +Problem +\end_layout + +\begin_layout Standard +Music naturally comes in parallel sequences of samples called +\emph on +voices +\emph default + (ex. + from multiple instruments). + Pure-software mixers are forced to pass these voices through the Von Neuman + bottleneck of a single processor, operating on these streams in series + and switching between each one quickly. + They are therefore naturally limited in the number of voices they can handle. + Worse, since the processing of each voice has to share the same processor, + too many voices at once can fully max out the processor and crash the system. + On typical laptop hardware and a high end software tool like ProTools, + this number is around 5. + Embedded devices have an even tougher time at meeting any sort of reasonable + timing requirements. +\end_layout + +\begin_layout Standard +[screenie Just 6 voices are enough to bring this session of ProTools to + it's knees.] +\end_layout + +\begin_layout Standard +We want the power of writing transforms for voices in a high level language + combined with a framework that applies these transforms to the voices in + parallel. +\end_layout + +\begin_layout Subsection* +Vision --- Pygar +\end_layout + +\begin_layout Standard +Our system addresses the limitations of pure software mixers. + It is a grid of SMIPS processors capped by a mixer. + The voices flow through the processors in parallel and are combined at + the final mixer into a single stream. + Each processor can be loaded with any arbitrary C program. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +placement H +wide false +sideways false +status collapsed + +\begin_layout Plain Layout +\begin_inset Graphics + filename ../../../../Pygar/documents/000402.png + width 5in + +\end_inset + + +\begin_inset Caption + +\begin_layout Plain Layout +The audio data (“samples”) start in the memory, but are soon pulled into + action by the DMA (direct memory access). + The DMA sends the samples to a chain of 0 or more soft-cores, where they + are transformed according to the soft-cores’ algorithms. + After running the gauntlet of soft-cores, the samples flow first to a buffering + FIFO, and finally to a mixer, which sends the samples off to be played + by speakers or stored in a file. + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection* +Steps +\end_layout + +\begin_layout Standard +The difficult part of this project is managing code reuse. + We need three things for success. + +\end_layout + +\begin_layout Itemize +SMIPS processor -- Easy. + Just use the Lab 5 processors. +\end_layout + +\begin_layout Itemize +Some way to program the processors +\end_layout + +\begin_layout Itemize +DMA (Direct Memory Access) to load voices into the processors. +\end_layout + +\begin_layout Standard +We use ScratchPad to load code into the processors. + ScratchPad is an Intel module which implements a cache hierarchy. + The hierarchy reaches all the way from RAM created on the FPGA to on-chip + DRAM to RAM on the host computer all the way to the Hard Disk of the host + computer. + The first time a processor tries to access one of its instructions, the + cache goes all the way to the hard disk of the host computer to retrieve + the data. + Subsequent attempts to access this data only go as far as the on-chip DRAM. + Each processor has its own ScratchPad and thus can be programmed independently. + The ScratchPad abstraction allows each processor to run a program of any + size. +\end_layout + +\begin_layout Standard +Music access is achieved through RRR, another Intel abstraction which allows + us to treat the hard disk of the host computer as if it were a normal FIFO. +\end_layout + +\begin_layout Subsection* +News +\end_layout + +\begin_layout Standard +We have run our system with 12 sample voices and various combinations of + simple c voice processing programs and the results have been better than + software implementations. + Significantly, increasing the number of voices does not increase the processing + load since each voice is processed in parallel. +\end_layout + +\begin_layout Subsection* +Contributions +\end_layout + +\begin_layout Itemize +Implemented Pygar, a system for quick parallel processing of audio. + +\end_layout + +\begin_layout Itemize +Implemented 4 basic algorithms which serve as components for this system + (identity, bit-shift, volume-change, and delay) +\end_layout + +\begin_layout Itemize +Demonstrated Pygar out-performs software-only systems. + Pure-software systems have a limit of around 6 voices, while our system + achieves 12 voices in parallel with no architecturally imposed limit on + the number of voices. +\end_layout + +\end_body +\end_document diff -r 0f86d486e38e -r 31fef269ae58 documents/pygar-slides.pdf Binary file documents/pygar-slides.pdf has changed