Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Kermin Fleming

dblp:24/4815 · also Kermin Elliott Fleming · DBLP profile ↗
← Back
24ranked-venue papers
5as first author
0since 2021 · last 2017
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Systems, architecture and hardware · 16 · 2 first-authorSoftware engineering, systems software and programming languages · 5 · 3 first-authorTheory of computation · 4 · 2 first-authorComputer networks · 3

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Computer architecture, parallel and distributed computing, and storage systems
9 papers
Reconfigurable computing and FPGAs · 40% Memory systems · 17% Electronic design automation · 13%
Software engineering, system software, and programming languages
4 papers
Compilers and program optimization · 94% Operating systems · 6%
Theoretical computer science
1 paper
Coding theory · 100%

Topics — the 21 heaviest of 27, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Reconfigurable computing and FPGAs
FPGA accelerator
0.832017
Custom Multicache Architectures for Heap Manipulating Programs · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 2017
A Study of Pointer-Chasing Performance on Shared-Memory Processor-FPGA Systems · FPGA 2016
MATCHUP: Memory Abstractions for Heap Manipulating Programs · FPGA 2015
Electronic design automation
high-level synthesis
0.632017
Custom Multicache Architectures for Heap Manipulating Programs · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 2017
MATCHUP: Memory Abstractions for Heap Manipulating Programs · FPGA 2015
Automatic Construction of Program-Optimized FPGA Memory Networks · FPGA 2017
Reconfigurable computing and FPGAs
FPGA memory architecture
0.522017
Automatic Construction of Program-Optimized FPGA Memory Networks · FPGA 2017
LMC: Automatic Resource-Aware Program-Optimized Memory Partitioning · FPGA 2016
Memory systems
cache design
0.422017
Custom Multicache Architectures for Heap Manipulating Programs · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 2017
LMC: Automatic Resource-Aware Program-Optimized Memory Partitioning · FPGA 2016
Compilers and program optimization
memory optimization
0.312017
Automatic Construction of Program-Optimized FPGA Memory Networks · FPGA 2017
Compilers and program optimization › compiler optimization
memory partitioning
0.212016
LMC: Automatic Resource-Aware Program-Optimized Memory Partitioning · FPGA 2016
Reconfigurable computing and FPGAs
coarse-grained reconfigurable architecture
0.212015
Efficient Control and Communication Paradigms for Coarse-Grained Spatial Architectures · ACM Trans. Comput. Syst. 2015
Memory systems
on-chip memory
0.212015
MATCHUP: Memory Abstractions for Heap Manipulating Programs · FPGA 2015
Hardware accelerators and domain-specific architectures
spatial architecture
0.212015
Efficient Control and Communication Paradigms for Coarse-Grained Spatial Architectures · ACM Trans. Comput. Syst. 2015
Storage systems › flash and SSD › flash memory
flash storage
0.212014
Scalable multi-access flash store for big data analytics · FPGA 2014
Reconfigurable computing and FPGAs › FPGA partitioning
multi-FPGA partitioning
0.112012
Leveraging latency-insensitivity to ease multiple FPGA design · FPGA 2012
Coding theory › error-correcting codes
rateless codes
0.112012
Spinal codes · SIGCOMM 2012
Coding theory › error-correcting codes › rateless codes
spinal codes
0.112012
Spinal codes · SIGCOMM 2012
Memory systems
cache management
0.112011
Leap scratchpads: automatic memory and cache management for reconfigurable logic · FPGA 2011
Memory systems
shared memory
0.112016
A Study of Pointer-Chasing Performance on Shared-Memory Processor-FPGA Systems · FPGA 2016
Performance modeling and evaluation
workload characterization
0.112016
A Study of Pointer-Chasing Performance on Shared-Memory Processor-FPGA Systems · FPGA 2016
Parallel and multicore computing
pipeline parallelism
0.112015
Efficient Control and Communication Paradigms for Coarse-Grained Spatial Architectures · ACM Trans. Comput. Syst. 2015
Physical-layer communications
channel coding
0.012012
Spinal codes · SIGCOMM 2012
Physical-layer communications › channel coding › decoding algorithms
maximum-likelihood decoding
0.012012
Spinal codes · SIGCOMM 2012
Physical-layer communications › channel modeling
time-varying channels
0.012012
Spinal codes · SIGCOMM 2012
Operating systems › resource management › memory management
virtual memory
0.012011
Leap scratchpads: automatic memory and cache management for reconfigurable logic · FPGA 2011

Methods — techniques the papers use, named apart from their topics

resource-aware compilation · 0.5pointer analysis · 0.4parallelization · 0.4high-level synthesis · 0.4approximate maximum-likelihood decoding · 0.3FPGA prototyping · 0.3program analysis · 0.3performance estimation · 0.3processor assistance · 0.2linked-list traversal · 0.2latency-insensitive channels · 0.2chip-to-chip backplane networking · 0.2virtual memory · 0.1scratchpad memory · 0.1
YearPublicationVenuePosition
2017 Automatic Construction of Program-Optimized FPGA Memory Networks
Hsin-Jung Yang, Kermin Fleming, Felix Winterstein, Annie I. Chen, Michael Adler, Joel S. Emer
FPGA2
2017 Custom Multicache Architectures for Heap Manipulating Programs
abstract
Memory-intensive implementations often require access to an external, off-chip memory which can substantially slow down an field-programmable gate array accelerator due to memory bandwidth limitations. Buffering frequently reused data on chip is a common approach to address this problem and the optimization of the cache architecture introduces yet another complex design space. This paper presents a high-level synthesis (HLS) design aid that automatically generates parallel multicache systems which are tailored to the specific requirements of the application. Our program analysis identifies nonoverlapping memory regions, supported by private caches, and regions which are shared by parallel units after parallelization, which are supported by coherent caches and synchronization primitives. It also decides whether the parallelization is legal with respect to data dependencies. The novelty of this paper is the focus on programs using dynamically allocated, pointer-based data structures which, while common in software engineering, remain difficult to analyze and are beyond the scope of the overwhelming majority of HLS techniques to date. Second, we devise a high-level cache performance estimation to find a heterogeneous configuration of cache sizes that maximizes the performance of the multicache system subject to an on-chip memory resource constraint. We demonstrate our technique with three case studies of applications using dynamic data structures and use Xilinx Vivado HLS as an exemplary HLS tool. We show up to 15× speedup after parallelization of the HLS implementations and the insertion of the application-specific distributed hybrid multicache architecture.
Felix Winterstein, Kermin Fleming, Hsin-Jung Yang, George A. Constantinides
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.2
2017 (FPL 2015) Scavenger: Automating the Construction of Application-Optimized Memory Hierarchies
abstract
High-level abstractions separate algorithm design from platform implementation, allowing programmers to focus on algorithms while building complex systems. This separation also provides system programmers and compilers an opportunity to optimize platform services on an application-by-application basis. In field-programmable gate arrays (FPGAs), platform-level malleability extends to the memory system: Unlike general-purpose processors, in which memory hardware is fixed at design time, the capacity, associativity, and topology of FPGA memory systems may all be tuned to improve application performance. Since application kernels may only explicitly use few memory resources, substantial memory capacity may be available to the platform for use on behalf of the user program. In this work, we present Scavenger, which utilizes spare resources to construct program-optimized memories, and we also perform an initial exploration of methods for automating the construction of these application-specific memory hierarchies. Although exploiting spare resources can be beneficial, naïvely consuming all memory resources may cause frequency degradation. To relieve timing pressure in large block RAM (BRAM) structures, we provide microarchitectural techniques to trade memory latency for design frequency. We demonstrate, by examining a set of benchmarks, that our scalable cache microarchitecture achieves performance gains of 7% to 74% (with a 26% geometric mean on average) over the baseline cache microarchitecture when scaling the size of first-level caches to the maximum.
Hsin-Jung Yang, Kermin Fleming, Felix Winterstein, Michael Adler, Joel S. Emer
ACM Trans. Reconfigurable Technol. Syst.2
2016 A Study of Pointer-Chasing Performance on Shared-Memory Processor-FPGA Systems
abstract
The advent of FPGA acceleration platforms with direct coherent access to processor memory creates an opportunity for accelerating applications with irregular parallelism governed by large in-memory pointer-based data structures. This paper uses the simple reference behavior of a linked-list traversal as a proxy to study the performance potentials of accelerating these applications on shared-memory processor-FPGA systems. The linked-list traversal is parameterized by node layout in memory, per-node data payload size, payload dependence, and traversal concurrency to capture the main performance effects of different pointer-based data structures and algorithms. The paper explores the trade-offs over a wide range of implementation options available on shared-memory processor-FPGA architectures, including using tightly-coupled processor assistance. We make observations of the key effects on currently available systems including the Xilinx Zynq, the Intel QuickAssist QPI FPGA Platform, and the Convey HC-2. The key results show: (1) the FPGA fabric is least efficient when traversing a single list with non-sequential node layout and a small payload size; (2) processor assistance can help alleviate this shortcoming; and (3) when appropriate, a fabric only approach that interleaves multiple linked list traversals is an effective way to maximize traversal performance.
Gabriel Weisz, Joseph Melber, Yu Wang 0110, Kermin Fleming, Eriko Nurvitadhi, James C. Hoe
FPGA4
2016 LMC: Automatic Resource-Aware Program-Optimized Memory Partitioning
abstract
As FPGAs have grown in size and capacity, FPGA memory systems have become both richer and more diverse in order to support the increased computational capacity of FPGA fabrics. Using these resources, and using them well, has become commensurately more difficult, especially in the context of legacy designs ported from smaller, simpler FPGA systems. This growing complexity necessitates resource-aware compilers that can make good use of memory resources on behalf of the programmer. In this work, we introduce the LEAP Memory Compiler (LMC), which can synthesize application-optimized cache networks for systems with multiple memory resources, enabling user programs to automatically take advantage of the expanded memory capabilities of modern FPGA systems. In our experiments, the optimized cache network achieves up to 49% performance gains for throughput-oriented applications and 15% performance gains for latency-oriented applications, while increasing design area by less than 6% of the total chip area.
Hsin-Jung Yang, Kermin Fleming, Michael Adler, Felix Winterstein, Joel S. Emer
FPGA2
2015 MATCHUP: Memory Abstractions for Heap Manipulating Programs
abstract
Memory-intensive implementations often require access to an external, off-chip memory which can substantially slow down an FPGA accelerator due to memory bandwidth limitations. Buffering frequently reused data on chip is a common approach to address this problem and the optimization of the cache architecture introduces yet another complex design space. This paper presents a high-level synthesis (HLS) design aid that generates parallel application-specific multi-scratchpad architectures including on-chip caches. Our program analysis identifies non-overlapping memory regions, supported by private scratchpads, and regions which are shared by parallel units after parallelization and which are supported by coherent scratchpads and synchronization primitives. It also decides whether the parallelization is legal with respect to data dependencies. The novelty of this work is the focus on programs using dynamic, pointer-based data structures and dynamic memory allocation which, while common in software engineering, remain difficult to analyze and are beyond the scope of the overwhelming majority of HLS techniques to date. We demonstrate our technique with three case studies of applications using dynamically allocated data structures and use Xilinx Vivado HLS as an exemplary HLS tool. We show up to 10x speed-up after parallelization of the HLS implementations and the insertion of the application-specific distributed hybrid scratchpad architecture.
Felix Winterstein, Kermin Fleming, Hsin-Jung Yang, Samuel Bayliss, George A. Constantinides
FPGA2
2015 Scavenger: Automating the construction of application-optimized memory hierarchies
abstract
High-level abstractions separate algorithm design from platform implementation, allowing programmers to focus on algorithms while building increasingly complex systems. This separation also provides system programmers and compilers an opportunity to optimize platform services for each application. In FPGAs, this platform-level malleability extends to the memory system: unlike general-purpose processors, in which memory hardware is fixed at design time, the capacity, associativity, and topology of FPGA memory systems may all be tuned to improve application performance. Since application kernels often use few memory resources, substantial memory capacity may be available to the platform for use on behalf of the user program. In this work, we perform an initial exploration of methods for automating the construction of these application-specific memory hierarchies. Although exploiting spare resources can be beneficial, naïvely consuming all memory resources may cause frequency degradation. To relieve timing pressure in large BRAM structures, we provide microarchitectural techniques to trade memory latency for design frequency. We demonstrate, by examining both hand-assembled and HLS-compiled benchmarks, that our application-optimized memory system can improve pre-existing application runtime by 25% on average.
Hsin-Jung Yang, Kermin Fleming, Michael Adler, Felix Winterstein, Joel S. Emer
FPL2
2015 Custom-sized caches in application-specific memory hierarchies
abstract
Developing FPGA implementations with an input specification in a high-level programming language such as C/C++ or OpenCL allows for a substantially shortened design cycle compared to a design entry at register transfer level. This work targets high-level synthesis (HLS) implementations that process large amounts of data and therefore require access to an off-chip memory. We leverage the customizability of the FPGA on-chip memory to automatically construct a multi-cache architecture in order to enhance the performance of the interface between parallel functional units of the HLS core and an external memory. Our focus is on automatic cache sizing. Firstly, our technique determines and uses up unused left-over block RAM resources for the construction of on-chip caches. Secondly, we devise a high-level cache performance estimation based on the memory access trace of the program. We use this memory trace to find a heterogeneous configuration of cache sizes, tailored to the application's memory access characteristic, that maximizes the performance of the multi-cache system subject to an on-chip memory resource constraint. We evaluate our technique with three benchmark implementations on an FPGA board and obtain a reduction in execution latency of up to 2× (1.5× on average) when compared to a one-size-fits-all cache sizing. We also quantify the impact of our automatically generated cache system on the overall energy consumption of the implementation.
Felix Winterstein, Kermin Fleming, Hsin-Jung Yang, John Wickerson, George A. Constantinides
FPT2
2015 Efficient Control and Communication Paradigms for Coarse-Grained Spatial Architectures
abstract
There has been recent interest in exploring the acceleration of nonvectorizable workloads with spatially programmed architectures that are designed to efficiently exploit pipeline parallelism. Such an architecture faces two main problems: how to efficiently control each processing element (PE) in the system, and how to facilitate inter-PE communication without the overheads of traditional shared-memory coherent memory. In this article, we explore solving these problems using triggered instructions and latency-insensitive channels. Triggered instructions completely eliminate the program counter (PC) and allow programs to transition concisely between states without explicit branch instructions. Latency-insensitive channels allow efficient communication of inter-PE control information while simultaneously enabling flexible code placement and improving tolerance for variable events such as cache accesses. Together, these approaches provide a unified mechanism to avoid overserialized execution, essentially achieving the effect of techniques such as dynamic instruction reordering and multithreading. Our analysis shows that a spatial accelerator using triggered instructions and latency-insensitive channels can achieve 8 × greater area-normalized performance than a traditional general-purpose processor. Further analysis shows that triggered control reduces the number of static and dynamic instructions in the critical paths by 62% and 64%, respectively, over a PC-style baseline, increasing the performance of the spatial programming approach by 2.0 ×.
Michael Pellauer, Angshuman Parashar, Michael Adler, Bushra Ahsan, Randy L. Allmon, Neal Clayton Crago, Kermin Fleming, Mohit Gambhir, Aamer Jaleel, Tushar Krishna, Daniel Lustig, Stephen Maresh, Vladimir Pavlov, Rachid Rayess, Antonia Zhai, Joel S. Emer
ACM Trans. Comput. Syst.7
2014 LEAP Shared Memories: Automating the Construction of FPGA Coherent Memories
abstract
Parallel programming has been widely used in many scientific and technical areas to solve large problems. While general-purpose processors have rich infrastructure to support parallel programming on shared memory, such as coherent caches and synchronization libraries, parallel programming infrastructure for FPGAs is limited. Thus, development of FPGA-based parallel algorithms remains difficult. In this work, we seek to simplify parallel programming on FPGAs. We provide a set of easy-to-use declarative primitives to maintain coherency and consistency of accesses to shared memory resources. We propose a shared-memory service that automatically manages coherent caches on multiple FPGAs. Experimental results of a 2-dimensional heat transfer equation show that the shared memory service with our distributed coherent caches outperforms a centralized cache by 2.6x. To handle synchronization, we provide new lock and barrier primitives that leverage native FPGA communication capabilities and outperform traditional through-memory primitives by 1.8x.
Hsin-Jung Yang, Kermin Fleming, Michael Adler, Joel S. Emer
FCCM2
2014 Scalable multi-access flash store for big data analytics
abstract
For many "Big Data" applications, the limiting factor in performance is often the transportation of large amount of data from hard disks to where it can be processed, i.e. DRAM. In this paper we examine an architecture for a scalable distributed flash store which aims to overcome this limitation in two ways. First, the architecture provides a high-performance, high-capacity, scalable random-access storage. It achieves high-throughput by sharing large numbers of flash chips across a low-latency, chip-to-chip backplane network managed by the flash controllers. The additional latency for remote data access via this network is negligible as compared to flash access time. Second, it permits some computation near the data via a FPGA-based programmable flash controller. The controller is located in the datapath between the storage and the host, and provides hardware acceleration for applications without any additional latency. We have constructed a small-scale prototype whose network bandwidth scales directly with the number of nodes, and where average latency for user software to access flash store is less than 70mus, including 3.5mus of network overhead.
Sang Woo Jun, Kermin Fleming, Arvind 0001
FPGA3
2014 The LEAP FPGA operating system
abstract
FPGAs offer attractive power and performance for many applications, especially relative to traditional sequential architectures. In spite of these advantages, FPGAs have been deployed in only a few, niche domains.We argue that the difficulty of programming FPGAs all but precludes their use in more general systems: FPGA programmers are currently exposed to all the gory system details that software operating systems long ago abstracted away. In this work, we present the Latency-insensitive Environment for Application Programming (LEAP), an FPGA operating system built around latency-insensitive communications channels. LEAP alleviates the FPGA programming problem by providing a rich set of portable latency-insensitive abstraction layers for program development. Unlike software operating systems services, which are generally dynamic, the nature of FPGAs requires that many configuration decisions be made at compile time. We present an extensible interface for compile-time management of resources. We demonstrate that LEAP provides design portability, while consuming as little as 3% of FPGA area, by mapping several designs on to various FPGA platforms.
Kermin Fleming, Hsin-Jung Yang, Michael Adler, Joel S. Emer
FPL1
2013 Optimizing under abstraction: Using prefetching to improve FPGA performance
abstract
In an effort to speed the development of FPGA-based accelerators, recent research has focused on providing FPGA developers with memory and communications abstractions. Because abstraction decouples the function of these interfaces from their implementation, these new interfaces present an enormous opportunity for optimization. In this paper we examine stride prefetching as a means of improving the performance of an automatically synthesized, abstract memory hierarchy. We demonstrate, by applying our technique to several large benchmarks, that prefetching can improve preexisting application runtime by 15% on average, and up to 40%, without requiring program modification.
Hsin-Jung Yang, Kermin Fleming, Michael Adler, Joel S. Emer
FPL2
2012 A hardware spinal decoder
abstract
Spinal codes are a recently proposed capacity-achieving rateless code. While hardware encoding of spinal codes is straightforward, the design of an efficient, high-speed hardware decoder poses significant challenges. We present the first such decoder. By relaxing data dependencies inherent in the classic M-algorithm decoder, we obtain area and throughput competitive with 3GPP turbo codes as well as greatly reduced latency and complexity. The enabling architectural feature is a novel alpha-beta incremental approximate selection algorithm. We also present a method for obtaining hints which anticipate successful or failed decoding, permitting early termination and/or feedback-driven adaptation of the decoding parameters.
Peter Iannucci, Kermin Fleming, Jonathan Perry 0001, Hari Balakrishnan, Devavrat Shah
ANCS2
2012 Leveraging latency-insensitivity to ease multiple FPGA design
abstract
Traditionally, hardware designs partitioned across multiple FPGAs have had low performance due to the inefficiency of maintaining cycle-by-cycle timing among discrete FPGAs. In this paper, we present a mechanism by which complex designs may be efficiently and automatically partitioned among multiple FPGAs using explicitly programmed latency-insensitive links. We describe the automatic synthesis of an area efficient, high performance network for routing these inter-FPGA links. By mapping a diverse set of large research prototypes onto a multiple FPGA platform, we demonstrate that our tool obtains significant gains in design feasibility, compilation time, and even wall-clock performance.
Kermin Fleming, Michael Adler, Michael Pellauer, Angshuman Parashar, Arvind 0001, Joel S. Emer
FPGA1
2012 ZIP-IO: Architecture for application-specific compression of Big Data
abstract
We have entered the “Big Data” age: scaling of networks and sensors has led to exponentially increasing amounts of data. Compression is an effective way to deal with many of these large data sets, and application-specific compression algorithms have become popular in problems with large working sets. Unfortunately, these compression algorithms are often computationally difficult and can result in application-level slow-down when implemented in software. To address this issue, we investigate ZIP-IO, a framework for FPGA-accelerated compression. Using this system we demonstrate that an unmodified industrial software workload can be accelerated 3x while simultaneously achieving more than 1000x compression in its data set.
Sang Woo Jun, Kermin Fleming, Michael Adler, Joel S. Emer
FPT2
2012 Spinal codes
abstract
Spinal codes are a new class of rateless codes that enable wireless networks to cope with time-varying channel conditions in a natural way, without requiring any explicit bit rate selection. The key idea in the code is the sequential application of a pseudo-random hash function to the message bits to produce a sequence of coded symbols for transmission. This encoding ensures that two input messages that differ in even one bit lead to very different coded sequences after the point at which they differ, providing good resilience to noise and bit errors. To decode spinal codes, this paper develops an approximate maximum-likelihood decoder, called the bubble decoder, which runs in time polynomial in the message size and achieves the Shannon capacity over both additive white Gaussian noise (AWGN) and binary symmetric channel (BSC) models. Experimental results obtained from a software implementation of a linear-time decoder show that spinal codes achieve higher throughput than fixed-rate LDPC codes, rateless Raptor codes, and the layered rateless coding approach of Strider, across a range of channel conditions and message sizes. An early hardware prototype that can decode at 10 Mbits/s in FPGA demonstrates that spinal codes are a practical construction.
Jonathan Perry 0001, Peter Iannucci, Kermin Fleming, Hari Balakrishnan, Devavrat Shah
SIGCOMM3
2011 Leap scratchpads: automatic memory and cache management for reconfigurable logic
abstract
Developers accelerating applications on FPGAs or other reconfigurable logic have nothing but raw memory devices in their standard toolkits. Each project typically includes tedious development of single-use memory management. Software developers expect a programming environment to include automatic memory management. Virtual memory provides the illusion of very large arrays and processor caches reduce access latency without explicit programmer instructions.
Michael Adler, Kermin Fleming, Angshuman Parashar, Michael Pellauer, Joel S. Emer
FPGA2
2011 WiLIS: Architectural modeling of wireless systems
abstract
The performance of a wireless system depends on the wireless channel as well as the algorithms used in the transceiver pipelines. Because physical phenomena affect transceiver pipelines in difficult to predict ways, detailed simulation of the entire transceiver system is needed to evaluate even a single processing block. Further, some protocol validations require simulation of rare events (say, 1 bit error in 109bits), which means the protocol must simulate for a long enough time for such events to materialize. This requirement coupled with the heavy computation typical of most physical-layer processing, rules out pure software solutions. In this paper we describe WiLIS, an FPGA-based hybrid hardware-software system designed to facilitate the development of wireless protocols. We then use WiLIS to evaluate several microarchitectures for measuring very low bit-error rates (BER). We demonstrate, for the first time, that the recently proposed SoftPHY can be implemented efficiently in hardware.
Kermin Fleming, Man Cheuk Ng, Samuel Gross, Arvind 0001
ISPASS1
2010 Airblue: a system for cross-layer wireless protocol development
abstract
Over the past few years, researchers have developed many cross-layer wireless protocols to improve the performance of wireless networks. Experimental evaluations of these protocols have been carried out mostly using software-defined radios, which are typically two to three orders of magnitude slower than commodity hardware. FPGA-based platforms provide much better speeds but are quite difficult to modify because of the way high-speed designs are typically implemented. Experimenting with cross-layer protocols requires a flexible way to convey information beyond the data itself from lower to higher layers, and a way for higher layers to configure lower layers dynamically and within some latency bounds. One also needs to be able to modify a layer's processing pipeline without triggering a cascade of changes. We have developed Airblue, an FPGA-based software radio platform, that has all these properties and runs at speeds comparable to commodity hardware. We discuss the design philosophy underlying Airblue that makes it relatively easy to modify it, and present early experimental results.
Man Cheuk Ng, Kermin Fleming, Mythili Vutukuru, Samuel Gross, Arvind 0001, Hari Balakrishnan
ANCS2
2009 Implementing a fast cartesian-polar matrix interpolator
abstract
The 2009 MEMOCODE Hardware/Software Co-Design Contest assignment was the implementation of a cartesian-to-polar matrix interpolator. We discuss our hardware and software design submissions.
Abhinav Agarwal, Nirav Dave, Kermin Fleming, Asif Khan 0005, Myron King, Man Cheuk Ng, Muralidaran Vijayaraghavan
MEMOCODE3
2008 High-throughput Pipelined Mergesort
abstract
We present an implementation of a high-throughput cryptosorter, capable of sorting an encrypted database of eight megabytes in .15 seconds; 1102 times faster than a software implementation.
Kermin Fleming, Myron King, Man Cheuk Ng, Asif Khan 0005, Muralidaran Vijayaraghavan
MEMOCODE1
2008 H.264 Decoder: A Case Study in Multiple Design Points
abstract
H.264, a state-of-the-art video compression standard, is used across a range of products from cellphones to HDTV. These products have vastly different performance, power and cost requirements, necessitating different hardware-software solutions for H.264 decoding. We show that a design methodology and associated tools which support synthesis from high-level descriptions and which allow modular refinement throughout the design cycle, can share the majority of design effort across multiple design points. Using Bluespec SystemVerilog, we have created a variety of designs for the H.264 decoder tuned to support decoding at resolutions ranging from QCIF video (176 times 144 @ 15 frames/second) to 1080p video ((1280 times 1080)p @60 frames/second) in a 180 nm process. Some of these design points require major transformations of pipelining to increase performance or to reduce area. We also explore several common design issues surrounding memory structures, such as caches and on-chip vs. off-chip memories. We believe the design methodology used in this paper is directly applicable to many IP blocks involving algorithmic specifications. The same design capabilities also permit rapid microarchitecture exploration and changes in RTL late in the design process even in non-algorithmic IP blocks.
Kermin Fleming, Chun-Chieh Lin, Nirav Dave, Arvind 0001, Gopal Raghavan, Jamey Hicks
MEMOCODE1
2007 Hardware Acceleration of Matrix Multiplication on a Xilinx FPGA
abstract
The first MEMOCODE hardware/software co-design contest posed the following problem: optimize matrix-matrix multiplication in such a way that it is split between the FPGA and PowerPC on a Xilinx Virtex IIPro30. In this paper we discuss our solution, which we implemented on a Xilinx XUP development board with 256 MB of DRAM. The design was done by the five authors over a span of approximately 3 weeks, though of the 15 possible man-weeks, about 9 were actually spent working on this problem. All hardware design was done using Blue-spec SystemVerilog (BSV), with the exception of an imported Verilog multiplication unit, necessary only due to the limitations of the Xilinx FPGA toolflow optimizations.
Nirav Dave, Kermin Fleming, Myron King, Michael Pellauer, Muralidaran Vijayaraghavan
MEMOCODE2