Sunday, March 20, 2016

Data Distribution Service(DDS)


  • The Data Distribution Service for Real-Time Systems (DDS) is an Object Management Group (OMG) machine-to-machine middleware "m2m" standard that aims to enable scalable, real-time, dependable, high-performance and interoperable data exchanges between publishers and subscribers. DDS addresses the needs of applications like financial trading, air-traffic control, smart grid management, and other big data applications.

https://en.wikipedia.org/wiki/Data_Distribution_Service


  • OpenDDS is an open source C++ implementation of the Object Management Group (OMG) Data Distribution Service (DDS). Java applications can use OpenDDS through JNI bindings. OpenDDS is supported by OCI and the source code is hosted on GitHub.

http://opendds.org/

JVM (Java Virtual Machine) vs CLR (Common Language Runtime)

We present empirical evidence to demonstrate that there is
little or no difference between the Java Virtual Machine and
the .NET Common Language Runtime, as regards the compilation
and execution of object-oriented programs

The JVM . . .
• is stack-based
• is secure—type safety is guaranteed by preventing explicit
pointer manipulation
• has automatic memory management (garbage collection)
• is object-oriented, with primitive instructions for creating
objects, accessing object members

https://www.cs.utah.edu/~asbill/jsinger.pdf



  • Application virtualization software refers to both application virtual machines and software responsible for implementing them. Application virtual machines are typically used to allow application bytecode to run portably on many different computer architectures and operating systems. The application is usually run on the computer using an interpreter or just-in-time compilation (JIT).

https://en.wikipedia.org/wiki/Comparison_of_application_virtualization_software

Open Data Protocol (OData)


  • OData, short for Open Data Protocol, defines a protocol for the querying and updating of data utilizing existing Web protocols. OData is a REST-based protocol for querying and updating data and is built on standardized technologies such as HTTP, Atom/XML, and JSON. It is different from other REST-based web services in that it provides a uniform way to describe both the data and the data model.

It is considered to be a flexible technology for enabling interoperability between disparate data sources, applications, services and clients
http://www.webopedia.com/TERM/O/odata-open-data-protocol.html




  • OData - the best way to REST

An open protocol to allow the creation and consumption of queryable and interoperable RESTful APIs in a simple and standard way.
http://www.odata.org


  • In computing, Open Data Protocol (OData) is an open protocol which allows the creation and consumption of queryable and interoperable RESTful APIs in a simple and standard way.

https://en.wikipedia.org/wiki/Open_Data_Protocol


  • The purpose of the Open Data protocol (hereafter referred to as OData) is to provide a REST-based protocol for CRUD-style operations (Create, Read, Update and Delete) against resources exposed as data services. A “data service” is an endpoint where there is data exposed from one or more “collections” each with zero or more “entries”, which consist of typed named-value pairs. OData is published by Microsoft under OASIS (Organization for the Advancement of Structured Information Standards) Standards so that anyone that wants to can build servers, clients or tools without royalties or restrictions.

https://msdn.microsoft.com/en-us/library/ff478141.aspx

Systems-on-a-Chip (SoCs)


  • server specialization and flexibility of the network is on the increase – and this means different workloads can be directed to the most appropriate hardware. Some applications require more compute, while others need more memory bandwidth or storage I/O. Some would benefit from Digital Signal Processing (DSP) functionality, while others would prefer a Field-Programmable Gate Array (FPGA)

The future of data center compute is in Systems-on-a-Chip (SoCs) customized for different workloads

Examples of existing ARM chips bound for the data center include the X-Gene SoC from Applied Micro, AMD’s Opteron A1100 (codenamed ‘Seattle’), and Cavium’s ThunderX.

http://www.datacenterdynamics.com/colo-cloud-/dcd-converged-arm-is-finally-arriving-to-the-data-center/92006.fullarticle


  • SoC vs. CPU 

What is a CPU?
it is ultimately a very fast calculator. It fetches data from memory, and then performs some kind of arithmetic (add, multiply) or logical (and, or, not) operation on that data.

What is an SoC?
An SoC, or system-on-a-chip to give its full name, integrates almost all of these components into a single silicon chip. Along with a CPU, an SoC usually contains a GPU (a graphics processor), memory, USB controller, power management circuits, and wireless radios (WiFi, 3G, 4G LTE, and so on). Whereas a CPU cannot function without dozens of other chips, it’s possible to build complete computers with just a single SoC.

The difference between an SoC and CPU
The number one advantage of an SoC is its size: An SoC is only a little bit larger than a CPU, and yet it contains a lot more functionality
Due to its very high level of integration and much shorter wiring, an SoC also uses considerably less power
Cutting down on the number of physical chips means that it’s much cheaper to build a computer using an SoC
The only real disadvantage of an SoC is a complete lack of flexibility. With your PC, you can put in a new CPU, GPU, or RAM at any time — you cannot do the same for your smartphone
http://www.extremetech.com/computing/126235-soc-vs-cpu-the-battle-for-the-future-of-computing



  • In hardware design, there are two approaches to solving the vast computing needs of a site like Facebook. There's the approach of “scale up” — building ever-increasing amounts of computing power in a given system. Or you can “scale out,” building an ever-increasing fleet of simple systems, each with a moderate amount of computing power.

As we continued to evolve our infrastructure, we realized 2S was the wrong tool for some of our needs. To provide our infrastructure with capacity that scales out with the demand, we designed a modular chassis that contains high-powered system-on-a-chip (SoC) processor cards, code-named “Yosemite.
https://code.facebook.com/posts/1616052405274961/introducing-yosemite-the-first-open-source-modular-chassis-for-high-powered-microservers-/



  • FPGAs provide a unique combination of highly parallel custom computation, relatively low manufacturing/engineering costs, and low power requirements.


FPGAs can be applied to assist a wide variety of enterprise applications.
    Offloading Communication Protocol Processing
    Encryption
    Spam Filtering
    Quantifying Speedup and Characterizing FPGA-Appropriate Applications
   
    Offloading Communication Protocol Processing
    Any time that information is transferred from one processor to another, some communication is necessary. If this communication does not go through shared memory, it requires the serialization and deserialization of various data structures and objects.  This translation overhead may be significant when considering the performance of large distributed or networked systems. In this case study, we look at how we can offload object marshaling for Remote Procedure Calls (RPCs) to an FPGA.
   
    Encryption
    As networked systems and services gain popularity, the security and computational overhead of encrypted communication becomes more important. Reconfigurable computing platforms seem to be ideal for accelerating encryption due to their adaptability and highly parallel execution model
   
    Spam Filtering
    Regular expressions are used by many e-mail systems to filter for spam. These systems may match against tens to hundreds of thousands of regular expressions. While this highly parallel problem can be mapped to FPGAs quite effectively, the conventional FPGA design methodology and execution model presents several practical problems for developers trying to create
   
   research.microsoft.com/en-us/projects/fpga_apps/



  • A set of FPGAs built onto a datacenter server rack could function as a GPU to boost the performance of one workload and get a software update that turns half into CPUs and the other half into image- or video-processing specialists – without requiring users to buy new hardware or even switch servers in between workloads.

In one example of FPGA-boosted datacenters, Microsoft was able to boost the throughput of servers running its Bing search engine by 95 percent at a cost of an additional 10 percent per server and 30 percent overall, according to a Microsoft report published in June 2014.
https://goparallel.sourceforge.net/intel-creates-xeon-fpga-powerhouse-with-16-7b-altera-buy



  • A field-programmable gate array (FPGA) is an integrated circuit designed to be configured by a customer or a designer after manufacturing – hence "field-programmable". 

https://en.wikipedia.org/wiki/Field-programmable_gate_array

RISC vs CISC

The CISC Approach
the entire task of multiplying two numbers can be completed with one instruction:
MULT is what is known as a "complex instruction." It operates directly on the computer's memory banks and does not require the programmer to explicitly call any loading or storing functions. It closely resembles a command in a higher level language. For instance, if we let "a" represent the value of 2:3 and "b" represent the value of 5:2, then this command is identical to the C statement "a = a * b."

One of the primary advantages of this system is that the compiler has to do very little work to translate a high-level language statement into assembly. Because the length of the code is relatively short, very little RAM is required to store instructions. The emphasis is put on building complex instructions directly into the hardware.


The RISC Approach
RISC processors only use simple instructions that can be executed within one clock cycle. Thus, the "MULT" command described above could be divided into three separate commands: "LOAD," which moves data from the memory bank to a register, "PROD," which finds the product of two operands located within the registers, and "STORE," which moves data from a register to the memory banks. In order to perform the exact series of steps described in the CISC approach, a programmer would need to code four lines of assembly:

there are more lines of code, more RAM is needed to store the assembly level instructions. The compiler must also perform more work to convert a high-level language statement into code of this form

https://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/

Advanced RISC Machines (ARM)


  • An ARM processor is one of a family of CPUs based on the RISC (reduced instruction set computer) architecture developed by Advanced RISC Machines (ARM).

http://whatis.techtarget.com/definition/ARM-processor

  • ARM architecture
ARM is a family of instruction set architectures for computer processors developed by British company ARM Holdings, based on a reduced instruction set computing (RISC) architecture.
http://en.wikipedia.org/wiki/ARM_architecture

  • An ARM processor is one of a family of CPUs based on the RISC (reduced instruction set computer) architecture developed by Advanced RISC Machines (ARM).
ARM makes 32-bit and 64-bit RISC multi-core processors. RISC processors are designed to perform a smaller number of types of computer instructions so that they can operate at a higher speed, performing more millions of instructions per second (MIPS).
http://whatis.techtarget.com/definition/ARM-processor

OpenCL(Open Computing Language)


  • OpenCL(Open Computing Language) is the open, royalty-free standard for cross-platform, parallel programming of diverse processors found in personal computers, servers, mobile devices and embedded platforms.

https://www.khronos.org/opencl/


  • Open Computing Language (OpenCL) is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs) and other processors or hardware accelerators.

https://en.wikipedia.org/wiki/OpenCL