Nonblocking Algorithms and Scalable Multicore Programming

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

 

Related:

Unlocking Concurrency

Software and the Concurrency Revolution

Real-World Concurrency

 

FPGA Programming for the Masses

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

 

Related:

Abstraction in Hardware System Design

Computing without Processors

Of Processors and Processing

Multitier Programming in Hop

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.

http://queue.acm.org/detail.cfm?id=2330089

Related:

There’s Still Some Life Left in Ada

Extensible Programming for the 21st Century

Purpose-Built Languages 

 

A System is not a Product

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.

http://queue.acm.org/detail.cfm?id=2187657