Developing and deploying algorithmic kernels and end-to-end applications using stochastic logic has proven to be an extremely challenging, time-consuming, and error-prone process, which discourages designers from adopting this approach. In our experience with developing bitstream-based linear solvers, algorithms are first developed in Matlab using floating-point data types, then rewritten to emulate stochastic logic in a high-level simulator, and finally prototyped using Verilog RTL on an FPGA substrate. Implementation and validation of three separate realizations is error-prone and requires significant duplication of effort.
To address this challenge, we have developed BitSAD, the first domain-specific language for bitstream computing. BitSAD allows users to write high-level algorithms like an iterative SVD in a Matlab-like syntax, utilizing high-level programming language features, custom data types for bitstream computing and libraries to perform convenient linear algebra matrix operations. Any algorithm developed in BitSAD can be simulated at the software-level to debug bitstream-level issues quickly, and the code automatically generates synthesizable Verilog that implements the algorithm. The Verilog can then be effortlessly deployed on a field-programmable gate array (FPGA) or even synthesized into a custom chip. In order to facilitate widespread adoption of this language, we have released the BitSAD compiler under an open source license.
This implementation is completely written in the Java programming language, making use of the Java Servlet API and the JDBC API for database connectivity. Running this benchmark requires the use of a servlet-capable web server as well as a relational database system. We have tested this implementation with the IBM WebSphere , Apache/JServ, Sun Java Web Server, and Jigsaw Web Servers, as well as the IBM DB2 relational database system.
Amit Manjhi at CMU has adapted this implementation of TPC-W to run with Tomcat and Mysql. Check here for more information.
Christian Plattner has adapted this implementation of TPC-W to run with Postgresql. Check http://www.inf.ethz.ch/~cplattne/work/tpcw-postgresql.html for more information. NOTE: This link to ETHZ no longer works, so I took the liberty of creating a local copy of the document from web.archive.org: click here to read it.
Jan Kiefer has created an installer for this software, available from http://tpcw.deadpixel.de>.
Download a copy of the TPC-W Java source
code (~700 KB gzipped tar file).
[No longer up]Browse the TPC-W bookstore website implemented by our Java servlet code (for best results, turn off cookies in your browser).
Here are the presentation slides.
We characterize our implementation of TPC-W by running it under a full-system simulation environment in a single-tier configuration. Work is in progress to bring up our TPC-W implementation under two different instruction sets (PowerPC and SPARC) running under their respective full-system simulators (SimOS-PPC and SimICS). We will discuss the challenges we faced in bringing up a complex, networked, multitier workload implemented in a new language (Java) on a full system simulator. We will also present preliminary data characterizing the instruction stream, branch predictability, cache behavior, and multiprocessor data sharing patterns of this new workload.