Exploring some alternatives to lock-based synchronization
SAMY AL BAHRA, APPNEXUS
Real-world systems with complicated quality-of-service guarantees may require a delicate balance between throughput and latency to meet operating requirements in a cost-efficient manner. The increasing availability and decreasing cost of commodity multicore and many-core systems make concurrency and parallelism increasingly necessary for meeting demanding performance requirements. Unfortunately, the design and implementation of correct, efficient, and scalable concurrent software is often a daunting task.
> Nonblocking Algorithms and Scalable Multicore Programming
Software and the Concurrency Revolution
The programmability of FPGAs must improve if they are to be part of mainstream computing.
DAVID F. BACON, RODRIC RABBAH, SUNIL SHUKLA, T.J. WATSON RESEARCH CENTER
When looking at how hardware influences computing performance, we have GPPs (general-purpose processors) on one end of the spectrum and ASICs (application-specific integrated circuits) on the other. Processors are highly programmable but often inefficient in terms of power and performance. ASICs implement a dedicated and fixed function and provide the best power and performance characteristics, but any functional change requires a complete (and extremely expensive) re-spinning of the circuits.
Fortunately, several architectures exist between these two extremes. PLDs (programmable logic devices) are one such example, providing the best of both worlds. They are closer to the hardware and can be reprogrammed.
FPGA Programming for the Masses
Abstraction in Hardware System Design
Computing without Processors
Of Processors and Processing
A first step toward programming 21st-century applications
MANUEL SERRANO AND GÉRARD BERRY, INRIA
The Web is becoming the richest platform on which to create computer applications. Its power comes from three elements: (1) modern Web browsers enable highly sophisticated GUIs with 3D, multimedia, fancy typesetting, etc.; (2) calling existing services through Web APIs makes it possible to develop sophisticated applications from independently available components; and (3) open data availability allows applications to access a wide set of information that was unreachable or that simply did not exist before. The combination of these three elements has already given birth to revolutionary applications such as Google Maps, radio podcasts, and social networks.
There’s Still Some Life Left in Ada
Extensible Programming for the 21st Century
Stopping to smell the code before wasting time reentering configuration data
GEORGE V. NEVILLE-NEIL, NEVILLE-NEIL CONSULTING
Every once in a while, I come across a piece of good code and like to take a moment to recognize this fact, if only to keep my blood pressure low before my yearly medical checkup.