The embedded world looks a lot like the computing world as technology evolves, so it’s worth taking a look at the full computer engineering stack. This kind of stack refers to the structures built on top of each other that combine to form computers, not the memory register stack that processors use and can sometimes overflow. Sometimes you can understand snippets but can’t place the context in the big picture. Maybe a discussion of the big picture from the point of view of the computer engineering stack can help. The layers in the computer engineering stack are shown in Figure 1.
The application layer is the one almost anyone who’s used a computer or a smartphone has used and is familiar with. The application interfaces directly with the user in terms that the user can understand, whether through audio, visual, or tactile means (or even through electrodes that capture brain waves.)
An Algorithm is the basic flow of events, often depicted in a flow chart. Almost everyone has worked out an algorithm at one point when trying to organize a process, and it’s not much different for working out what you want a program to do on a given piece of hardware.
The Programming Language is a high-level language that translates the algorithm into discrete steps. The high-level language is translated by a compiler into machine language that the processor can understand. Ultimately, the machine language is translated into very, very long strings of 0s and 1s.
The Operating System greatly affects the presentation of the applications to the user but does much more than organizing the computer. The operating system manages the low-level hardware, including peripherals such as a touch screen, microphone, speaker, interfaces like USB, inputs from all manner of sensors including buttons, and much more. The operating system interacts with the processor to execute instructions at the machine level.
The Instruction Set Architecture (ISA) is a finite set of instructions that are specific to that processor. Each processor, whether it be MIPS, x86, or ARM, has its own instruction set architecture that works with that processor. The particular way that the ISA is implemented is called the Microarchitecture. Intel® x86 processors, for instance, store the least significant byte in the lowest address. This practice in storing memory is called little endian. Other processors are either big endian (storing the most significant bytes beginning at the lowest address) or allow the engineer to choose (called bi-endian). This question of endianness has to do with the microarchitecture of the processor chip.
The Register-Transfer Level (RTL) physically affects how data flows through the system and is part of the logic design of an integrated circuit. RTL is also a hardware description language that is used in the design of digital circuits at the gate-level. RTL is an abstraction layer that allows an engineer to specify the operations on data and data transfers at the digital (gate) level, i.e., in terms of 0s and 1s. The RTL can be thought of as a programming tool for circuit design.
The Gate Level is the layout of the digital logic that was described in broader terms at the register-transfer level. Here, Boolean logic transacts simple decisions on long strings of 0s and 1s to make higher level decisions that can be more easily seen at the register-transfer level.
Circuits are networks of interconnected devices such as transistors (which act like simple switches to decide where the 0s and 1s go). Combinations of devices (components) work together to arrive at results and accomplish tasks that were designated at a higher level up the stack. At this point, at the Device Level, the 0s and 1s become voltage-level signals to circuit designers. A 0 is near to 0 volts and a 1 might be 0.9 V, 1.8 V, 3.3 V, or even 5 V. The physics of electricity begin to play a large part when electronic components work together to make billions of decisions a second. The term “one Giga Hertz (GHz)” with respect to a CPU means that one billion (1,000,000,000) instructions per second are executing at the ISA level. At the device level, that number is even higher as billions (or trillions) of transistors crammed onto a square of silicon (smaller than a Chiclet) make decisions for each 0 and 1 flowing through them. These minor decisions are based on what was programmed way up the stack, in a language that a human can understand (C+, Python, Basic, Fortran, SQL, Google voice translation, etc.)
Technology is a broad term used at the foundation of the stack to indicate the Silicon Process Technology. However, technology involves more than the materials science of silicon processes or processes of other chemical compounds (e.g., GaN, SiC) to create processors and surrounding devices on integrated circuits. Technology transcends the stack.
juhee says
Thanks, Its good article.
Staphan says
stop all stack overflow from system, and control all privacy risks