Atom is a
domain-specific language
A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging ...
(DSL) in
Haskell
Haskell () is a general-purpose, statically typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell pioneered several programming language ...
, for designing
real-time
Real-time, realtime, or real time may refer to:
Computing
* Real-time computing, hardware and software systems subject to a specified time constraint
* Real-time clock, a computer clock that keeps track of the current time
* Real-time Control Syst ...
embedded software
Embedded software is computer software, written to control machines or devices that are not typically thought of as computers, commonly known as embedded systems. It is typically specialized for the particular hardware that it runs on and has tim ...
.
History
Originally intended as a
high-level
High-level and low-level, as technical terms, are used to classify, describe and point to specific goals of a systematic operation; and are applied in a wide range of contexts, such as, for instance, in domains as widely varied as computer scienc ...
hardware description language
In computer engineering, a hardware description language (HDL) is a specialized computer language used to describe the structure and behavior of electronic circuits, usually to design application-specific integrated circuits (ASICs) and to progra ...
(HDL), Atom was created in early 2007 and released as
free and open-source software
Free and open-source software (FOSS) is software available under a license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term encompassing free ...
(FOSS) of April of that year. Inspired by TRS
and
Bluespec
Bluespec, Inc. is an American semiconductor device electronic design automation company based in Framingham, Massachusetts, and co-founded in June 2003 by computer scientists Arvind Mithal, professor of the Massachusetts Institute of Technology (M ...
, Atom
compiled circuit descriptions, that were based on guarded
atomic operations
Atomic may refer to:
* Of or relating to the atom, the smallest particle of a chemical element that retains its chemical properties
* Atomic physics, the study of the atom
* Atomic Age, also known as the "Atomic Era"
* Atomic scale, distances com ...
, or conditional term
rewriting
In mathematics, computer science, and logic, rewriting covers a wide range of methods of replacing subterms of a formula with other terms. Such methods may be achieved by rewriting systems (also known as rewrite systems, rewrite engines, or reduc ...
, into
Verilog
Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits, with the highest level of abstraction being at the re ...
netlist
In electronic design, a netlist is a description of the connectivity of an electronic circuit. In its simplest form, a netlist consists of a list of the electronic components in a circuit and a list of the nodes they are connected to. A netwo ...
s for simulation and
logic synthesis
In computer engineering, logic synthesis is a process by which an abstract specification of desired circuit behavior, typically at register transfer level (RTL), is turned into a design implementation in terms of logic gates, typically by a co ...
. As a hardware compiler, Atom's main objective is to maximize the number of operations, or rules, that can execute in a given
clock cycle
In electronics and especially synchronous digital circuits, a clock signal (historically also known as ''logic beat'') is an electronic logic signal (voltage or current) which oscillates between a high and a low state at a constant frequency and ...
without violating the semantics of atomic operation. By employing the properties of conflict-free and sequentially composable rules,
Atom reduced maximizing execution
concurrency to a
feedback arc set
In graph theory and graph algorithms, a feedback arc set or feedback edge set in a directed graph is a subset of the edges of the graph that contains at least one edge out of every cycle in the graph. Removing these edges from the graph breaks a ...
optimization of a rule-data dependency graph. This process was similar to
James Hoe's original algorithm.
When Atom's author switched careers in late 2007, from
logic design
In computer engineering, logic synthesis is a process by which an abstract specification of desired circuit behavior, typically at register transfer level (RTL), is turned into a design implementation in terms of logic gates, typically by a co ...
to
embedded system
An embedded system is a specialized computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is e ...
software engineering, Atom was redesigned from an HDL to a
domain-specific language
A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging ...
targeting hard
real-time computing
Real-time computing (RTC) is the computer science term for Computer hardware, hardware and software systems subject to a "real-time constraint", for example from Event (synchronization primitive), event to Event (computing), system response. Rea ...
embedded applications. As a result, Atom's compiler's main objective changed from maximizing rule concurrency to balancing processing load and minimizing
worst case timing latency. In September 2008, Atom was presented at the Commercial Users of Functional Programming (CUFP) conference. In April 2009, in its new form, it was released as FOSS.
ANN: atom-0.0.2
/ref>
Overview
Atom is a concurrent programming language intended for embedded applications. Atom features compile time
In computer science, compile time (or compile-time) describes the time window during which a language's statements are converted into binary instructions for the processor to execute. The term is used as an adjective to describe concepts relat ...
task scheduling
A schedule (, ) or a timetable, as a basic time-management tool, consists of a list of times at which possible tasks, events, or actions are intended to take place, or of a sequence of events in the chronological order in which such things ...
and generates code with deterministic
Determinism is the metaphysical view that all events within the universe (or multiverse) can occur only in one possible way. Deterministic theories throughout the history of philosophy have developed from diverse and sometimes overlapping mo ...
execution time and memory use, simplifying worst case execution time analysis for applications that need hard realtime performance. Atom's concurrency model is that of guarded atomic actions, which eliminates the need for, and the problems
A problem is a difficulty which may be resolved by problem solving.
Problem(s) or The Problem may also refer to:
People
* Problem (rapper), (born 1985) American rapper Books
* ''Problems'' (Aristotle), an Aristotelian (or pseudo-Aristotelian) co ...
of using, mutex locks.
By removing runtime task scheduling and mutex locking, two services traditionally served by a real-time operating system
A real-time operating system (RTOS) is an operating system (OS) for real-time computing applications that processes data and events that have critically defined time constraints. A RTOS is distinct from a time-sharing operating system, such as Unix ...
(RTOS), Atom can eliminate the need and overhead of an RTOS in embedded applications.
Limits
To provide guarantees of deterministic execution time and memory consumption, Atom places several restrictions on computing. First, Atom designs are always finite state: all variables are global and declared at compile time and dynamic memory allocation
Memory management (also dynamic memory management, dynamic storage allocation, or dynamic memory allocation) is a form of resource management applied to computer memory. The essential requirement of memory management is to provide ways to dyna ...
is disallowed. Second, Atom provides no function or looping constructs. Instead, state variable updates are pure combinational logic
In automata theory, combinational logic (also referred to as time-independent logic) is a type of digital logic that is implemented by Boolean circuits, where the output is a pure function of the present input only. This is in contrast to sequ ...
functions of the current state.
References
External links
*
*
{{Haskell programming
Declarative programming languages
Functional languages
Real-time computing
Synchronous programming languages
Statically typed programming languages
Haskell programming language family
Free software programmed in Haskell
Cross-platform free software
Free and open source compilers
Programming languages created in 2007
2007 software