There has been no activity in the Zet project since 2013.
- "Zet - The x86 (IA-32) open implementation". Retrieved March 7, 2016.
There has been no activity in the Zet project since 2013.
1. Machine code – Machine code or machine language is a set of instructions executed directly by a computers central processing unit. Each instruction performs a specific task, such as a load. Every program directly executed by a CPU is made up of a series of such instructions, numerical machine code may be regarded as the lowest-level representation of a compiled or assembled computer program or as a primitive and hardware-dependent programming language. While it is possible to write directly in numerical machine code, it is tedious and error prone to manage individual bits and calculate numerical addresses. For this reason machine code is almost never used to programs in modern contexts. Almost all practical programs today are written in languages or assembly language. However, the interpreter itself, which may be seen as an executor or processor, performing the instructions of the source code, every processor or processor family has its own machine code instruction set. Instructions are patterns of bits that by physical design correspond to different commands to the machine, thus, the instruction set is specific to a class of processors using the same architecture. Successor or derivative processor designs often include all the instructions of a predecessor, systems may also differ in other details, such as memory arrangement, operating systems, or peripheral devices. Because a program normally relies on such factors, different systems will not run the same machine code. A machine code instruction set may have all instructions of the same length, how the patterns are organized varies strongly with the particular architecture and often also with the type of instruction. Not all machines or individual instructions have explicit operands, an accumulator machine has a combined left operand and result in an implicit accumulator for most arithmetic instructions. Other architectures have accumulator versions of common instructions, with the accumulator regarded as one of the general registers by longer instructions, a stack machine has most or all of its operands on an implicit stack. Special purpose instructions also often lack explicit operands and this distinction between explicit and implicit operands is important in machine code generators, especially in the register allocation and live range tracking parts. A good code optimizer can track implicit as well as explicit operands which may allow more frequent constant propagation, constant folding of registers, a computer program is a sequence of instructions that are executed by a CPU. While simple processors execute instructions one after another, superscalar processors are capable of executing several instructions at once, program flow may be influenced by special jump instructions that transfer execution to an instruction other than the numerically following one. Conditional jumps are taken or not depending on some condition, a much more readable rendition of machine language, called assembly language, uses mnemonic codes to refer to machine code instructions, rather than using the instructions numeric values directly. For example, on the Zilog Z80 processor, the machine code 00000101, the MIPS instruction set provides a specific example for a machine code whose instructions are always 32 bits long
2. X86 – X86 is a family of backward-compatible instruction set architectures based on the Intel 8086 CPU and its Intel 8088 variant. The term x86 came into being because the names of several successors to Intels 8086 processor end in 86, many additions and extensions have been added to the x86 instruction set over the years, almost consistently with full backward compatibility. The architecture has been implemented in processors from Intel, Cyrix, AMD, VIA and many companies, there are also open implementations. In the 1980s and early 1990s, when the 8088 and 80286 were still in common use, today, however, x86 usually implies a binary compatibility also with the 32-bit instruction set of the 80386. An 8086 system, including such as 8087 and 8089. There were also terms iRMX, iSBC, and iSBX – all together under the heading Microsystem 80, however, this naming scheme was quite temporary, lasting for a few years during the early 1980s. Today, x86 is ubiquitous in both stationary and portable computers, and is also used in midrange computers, workstations, servers. A large amount of software, including operating systems such as DOS, Windows, Linux, BSD, Solaris and macOS, functions with x86-based hardware. There have been attempts, including by Intel itself, to end the market dominance of the inelegant x86 architecture designed directly from the first simple 8-bit microprocessors. Examples of this are the iAPX432, the Intel 960, Intel 860, however, the continuous refinement of x86 microarchitectures, circuitry and semiconductor manufacturing would make it hard to replace x86 in many segments. The table below lists processor models and model series implementing variations of the x86 instruction set, each line item is characterized by significantly improved or commercially successful processor microarchitecture designs. Such x86 implementations are seldom simple copies but often employ different internal microarchitectures as well as different solutions at the electronic, quite naturally, early compatible microprocessors were 16-bit, while 32-bit designs were developed much later. For the personal computer market, real quantities started to appear around 1990 with i386 and i486 compatible processors, other companies, which designed or manufactured x86 or x87 processors, include ITT Corporation, National Semiconductor, ULSI System Technology, and Weitek. Some early versions of these microprocessors had heat dissipation problems, AMD later managed to establish itself as a serious contender with the K6 set of processors, which gave way to the very successful Athlon and Opteron. There were also other contenders, such as Centaur Technology, Rise Technology, VIA Technologies energy efficient C3 and C7 processors, which were designed by the Centaur company, have been sold for many years. Centaurs newest design, the VIA Nano, is their first processor with superscalar and it was, perhaps interestingly, introduced at about the same time as Intels first in-order processor since the P5 Pentium, the Intel Atom. The instruction set architecture has twice been extended to a word size. In 1999-2003, AMD extended this 32-bit architecture to 64 bits and referred to it as x86-64 in early documents, Intel soon adopted AMDs architectural extensions under the name IA-32e, later using the name EM64T and finally using Intel 64
3. System on a chip – A system on a chip or system on chip is an integrated circuit that integrates all components of a computer or other electronic systems. It may contain digital, analog, mixed-signal, and often radio-frequency functions—all on a single substrate, SoCs are very common in the mobile computing market because of their low power-consumption. A typical application is in the area of embedded systems, the contrast with a microcontroller, SoC integrates microcontroller with advanced peripherals like graphics processing unit, Wi-Fi module, or coprocessor. As long as we remember that the SoC does not necessarily contain built-in memory, in general, we can distinguish three types of SoC. SoC built around a microcontroller, SoC built around a microprocessor, a separate category may be Programmable SoC, part of elements is not permanently defined and can be programmable in a manner analogous to the FPGA or CPLD. When it is not feasible to construct a SoC for a particular application, in large volumes, SoC is believed to be more cost-effective than SiP since it increases the yield of the fabrication and because its packaging is simpler. Another option, as seen for example in cell phones, is package on package stacking during board assembly. The SoC includes processors and numerous digital peripherals, and comes in a ball grid package with lower and upper connections. The lower balls connect to the board and various peripherals, with the balls in a ring holding the memory buses used to access NAND flash. Memory packages could come from multiple vendors, DMA controllers route data directly between external interfaces and memory, bypassing the processor core and thereby increasing the data throughput of the SoC. A SoC consists of both the hardware, described above, and the controlling the microcontroller, microprocessor or DSP cores, peripherals. The design flow for a SoC aims to develop hardware and software in parallel. Most SoCs are developed from pre-qualified hardware blocks for the elements described above. Of particular importance are the protocol stacks that drive industry-standard interfaces like USB, the hardware blocks are put together using CAD tools, the software modules are integrated using a software-development environment. Once the architecture of the SoC has been defined, any new elements are written in an abstract language termed RTL which defines the circuit behaviour. These elements are connected together in the same RTL language to create the full SoC design, chips are verified for logical correctness before being sent to foundry. This process is called functional verification and it accounts for a significant portion of the time, with the growing complexity of chips, hardware verification languages like SystemVerilog, SystemC, e, and OpenVera are being used. Bugs found in the stage are reported to the designer
4. DOS – None of these systems were officially named DOS, and indeed DOS is a general term for disk operating system. MS-DOS dominated the IBM PC compatible market between 1981 and 1995, and Microsoft Windows, still ran on top of it until about 2001, dozens of other operating systems also use the acronym DOS, including DOS/360 from 1966. Others are Apple DOS, Apple ProDOS, Atari DOS, Commodore DOS, TRSDOS, see List of DOS operating systems § Other operating systems. IBM PC DOS and its predecessor, 86-DOS, resembled Digital Researchs CP/M—the dominant disk operating system for 8-bit Intel 8080, DOS instead ran on Intel 8086 16-bit processors. Starting with MS-DOS1.28 and PC DOS2.0 the operating system incorporated various features inspired by Xenix, when IBM introduced the IBM PC, built with the Intel 8088 microprocessor, they needed an operating system. Seeking an 8088-compatible build of CP/M, IBM initially approached Microsoft CEO Bill Gates, IBM was sent to Digital Research, and a meeting was set up. However, the negotiations for the use of CP/M broke down, Digital Research wished to sell CP/M on a royalty basis, while IBM sought a single license. Digital Research founder Gary Kildall refused, and IBM withdrew, Gates in turn approached Seattle Computer Products. There, programmer Tim Paterson had developed a variant of CP/M-80, the system was initially named QDOS, before being made commercially available as 86-DOS. Microsoft purchased 86-DOS, allegedly for $50,000 and this became Microsoft Disk Operating System, MS-DOS, introduced in 1981. Within a year Microsoft licensed MS-DOS to over 70 other companies, Microsoft later required the use of the MS-DOS name, with the exception of the IBM variant. IBM continued to develop their version, PC DOS, for the IBM PC, Digital Research became aware that an operating system similar to CP/M was being sold by IBM, and threatened legal action. IBM responded by offering an agreement, they would give PC consumers a choice of PC DOS or CP/M-86, side-by-side, CP/M cost almost $200 more than PC DOS, and sales were low. CP/M faded, with MS-DOS and PC DOS becoming the operating system for PCs. Microsoft originally sold MS-DOS only to original equipment manufacturers, one major reason for this was that not all early PCs were 100% IBM PC compatible. DOS was structured such that there was a separation between the specific device driver code and the DOS kernel. Microsoft provided an OEM Adaptation Kit which allowed OEMs to customize the device driver code to their particular system, by the early 1990s, most PCs adhered to IBM PC standards so Microsoft began selling MS-DOS in retail with MS-DOS5.0. In the mid-1980s Microsoft developed a version of DOS
5. Microsoft Windows – Microsoft Windows is a metafamily of graphical operating systems developed, marketed, and sold by Microsoft. It consists of families of operating systems, each of which cater to a certain sector of the computing industry with the OS typically associated with IBM PC compatible architecture. Active Windows families include Windows NT, Windows Embedded and Windows Phone, defunct Windows families include Windows 9x, Windows 10 Mobile is an active product, unrelated to the defunct family Windows Mobile. Microsoft introduced an operating environment named Windows on November 20,1985, Microsoft Windows came to dominate the worlds personal computer market with over 90% market share, overtaking Mac OS, which had been introduced in 1984. Apple came to see Windows as an encroachment on their innovation in GUI development as implemented on products such as the Lisa. On PCs, Windows is still the most popular operating system, however, in 2014, Microsoft admitted losing the majority of the overall operating system market to Android, because of the massive growth in sales of Android smartphones. In 2014, the number of Windows devices sold was less than 25% that of Android devices sold and this comparison however may not be fully relevant, as the two operating systems traditionally target different platforms. As of September 2016, the most recent version of Windows for PCs, tablets, smartphones, the most recent versions for server computers is Windows Server 2016. A specialized version of Windows runs on the Xbox One game console, Microsoft, the developer of Windows, has registered several trademarks each of which denote a family of Windows operating systems that target a specific sector of the computing industry. It now consists of three operating system subfamilies that are released almost at the time and share the same kernel. Windows, The operating system for personal computers, tablets. The latest version is Windows 10, the main competitor of this family is macOS by Apple Inc. for personal computers and Android for mobile devices. Windows Server, The operating system for server computers, the latest version is Windows Server 2016. Unlike its clients sibling, it has adopted a strong naming scheme, the main competitor of this family is Linux. Windows PE, A lightweight version of its Windows sibling meant to operate as an operating system, used for installing Windows on bare-metal computers. The latest version is Windows PE10.0.10586.0, Windows Embedded, Initially, Microsoft developed Windows CE as a general-purpose operating system for every device that was too resource-limited to be called a full-fledged computer. The following Windows families are no longer being developed, Windows 9x, Microsoft now caters to the consumers market with Windows NT. Windows Mobile, The predecessor to Windows Phone, it was a mobile operating system
6. Operating system – An operating system is system software that manages computer hardware and software resources and provides common services for computer programs. All computer programs, excluding firmware, require a system to function. Operating systems are found on many devices that contain a computer – from cellular phones, the dominant desktop operating system is Microsoft Windows with a market share of around 83. 3%. MacOS by Apple Inc. is in place, and the varieties of Linux is in third position. Linux distributions are dominant in the server and supercomputing sectors, other specialized classes of operating systems, such as embedded and real-time systems, exist for many applications. A single-tasking system can run one program at a time. Multi-tasking may be characterized in preemptive and co-operative types, in preemptive multitasking, the operating system slices the CPU time and dedicates a slot to each of the programs. Unix-like operating systems, e. g. Solaris, Linux, cooperative multitasking is achieved by relying on each process to provide time to the other processes in a defined manner. 16-bit versions of Microsoft Windows used cooperative multi-tasking, 32-bit versions of both Windows NT and Win9x, used preemptive multi-tasking. Single-user operating systems have no facilities to distinguish users, but may allow multiple programs to run in tandem, a distributed operating system manages a group of distinct computers and makes them appear to be a single computer. The development of networked computers that could be linked and communicate with each other gave rise to distributed computing, distributed computations are carried out on more than one machine. When computers in a work in cooperation, they form a distributed system. The technique is used both in virtualization and cloud computing management, and is common in large server warehouses, embedded operating systems are designed to be used in embedded computer systems. They are designed to operate on small machines like PDAs with less autonomy and they are able to operate with a limited number of resources. They are very compact and extremely efficient by design, Windows CE and Minix 3 are some examples of embedded operating systems. A real-time operating system is a system that guarantees to process events or data by a specific moment in time. A real-time operating system may be single- or multi-tasking, but when multitasking, early computers were built to perform a series of single tasks, like a calculator. Basic operating system features were developed in the 1950s, such as resident monitor functions that could run different programs in succession to speed up processing
7. Programmable logic device – A programmable logic device is an electronic component used to build reconfigurable digital circuits. Unlike a logic gate, which has a function, a PLD has an undefined function at the time of manufacture. Before the PLD can be used in a circuit it must be programmed, before PLDs were invented, read-only memory chips were used to create arbitrary combinational logic functions of a number of inputs. Consider a ROM with m inputs and n outputs, when used as a memory, the ROM contains 2m words of n bits each. Now imagine that the inputs are not by an m-bit address. Theoretically, there are 22m possible Boolean functions of these m input signals, by Boolean function in this context is meant a single function that maps each of the 2m possible combinations of the m Boolean inputs to a single Boolean output. There are 22m possible distinct ways to map each of 2m inputs to a Boolean value, now, consider that each of the n output pins acts, independently, as a logic device that is specially selected to sample just one of the possible 22m such functions. Note that the structure of the ROM allows just n of the 22m possible such Boolean functions to be produced at the output pins, the ROM therefore becomes equivalent to n separate logic circuits, each of which generates a chosen function of the m inputs. Also, PROMs, EPROMs and EEPROMs are available that can be programmed using a standard PROM programmer without requiring specialised hardware or software, since most ROMs do not have input or output registers, they cannot be used stand-alone for sequential logic. An external TTL register was used for sequential designs such as state machines. Common EPROMs, for example the 2716, are sometimes used in this way by hobby circuit designers. This use is called a poor mans PAL. In 1969, Motorola offered the XC157, a gate array with 12 gates and 30 uncommitted input/output pins. In 1970, Texas Instruments developed a mask-programmable IC based on the IBM read-only associative memory or ROAM and this device, the TMS2000, was programmed by altering the metal layer during the production of the IC. The TMS2000 had up to 17 inputs and 18 outputs with 8 JK flip flop for memory, TI coined the term programmable logic array for this device. In 1971, General Electric Company was developing a programmable logic device based on the new PROM technology and this experimental device improved on IBMs ROAM by allowing multilevel logic. Intel had just introduced the floating-gate UV erasable PROM so the researcher at GE incorporated that technology, the GE device was the first erasable PLD ever developed, predating the Altera EPLD by over a decade. GE obtained several patents on programmable logic devices
8. Application-specific integrated circuit – An application-specific integrated circuit /ˈeɪsɪk/, is an integrated circuit customized for a particular use, rather than intended for general-purpose use. For example, a designed to run in a digital voice recorder or a high-efficiency Bitcoin miner is an ASIC. Application-specific standard products are intermediate between ASICs and industry standard integrated circuits like the 7400 or the 4000 series, as feature sizes have shrunk and design tools improved over the years, the maximum complexity possible in an ASIC has grown from 5,000 gates to over 100 million. Modern ASICs often include entire microprocessors, memory blocks including ROM, RAM, EEPROM, flash memory, such an ASIC is often termed a SoC. Designers of digital ASICs often use a hardware description language, such as Verilog or VHDL, for smaller designs or lower production volumes, FPGAs may be more cost effective than an ASIC design even in production. The non-recurring engineering cost of an ASIC can run into the millions of dollars, the initial ASICs used gate array technology. An early successful commercial application was the gate array circuitry found in the 8-bit ZX81 and ZX Spectrum low-end personal computers and these were used by Sinclair Research essentially as a low-cost I/O solution aimed at handling the computers graphics. Customization occurred by varying the metal interconnect mask, Gate arrays had complexities of up to a few thousand gates. Later versions became more generalized, with different base dies customised by both metal and polysilicon layers, some base dies include RAM elements. In the mid-1980s, a designer would choose an ASIC manufacturer, most designers ended up using factory-specific tools to complete the implementation of their designs. A solution to problem, which also yielded a much higher density device, was the implementation of standard cells. Standard-cell design is the utilization of these blocks to achieve very high gate density. Standard-cell design fits between Gate Array and Full Custom design in terms of both its non-recurring engineering and recurring component cost, by the late 1990s, logic synthesis tools became available. Such tools could compile HDL descriptions into a gate-level netlist, the design team constructs a description of an ASIC to achieve these goals using an HDL. This process is analogous to writing a program in a high-level language. This is usually called the RTL design, suitability for purpose is verified by functional verification. This may include such techniques as logic simulation, formal verification, emulation, each technique has advantages and disadvantages, and often several methods are used. Logic synthesis transforms the RTL design into a collection of lower-level constructs called standard cells
9. Field-programmable gate array – A field-programmable gate array is an integrated circuit designed to be configured by a customer or a designer after manufacturing – hence field-programmable. The FPGA configuration is generally specified using a description language. Logic blocks can be configured to perform complex functions, or merely simple logic gates like AND. In most FPGAs, logic blocks also include elements, which may be simple flip-flops or more complete blocks of memory. Contemporary field-programmable gate arrays have large resources of logic gates and RAM blocks to implement complex digital computations, as FPGA designs employ very fast I/Os and bidirectional data buses, it becomes a challenge to verify correct timing of valid data within setup time and hold time. Floor planning enables resources allocation within FPGAs to meet time constraints. FPGAs can be used to implement any logical function that an ASIC could perform, some FPGAs have analog features in addition to digital functions. Fairly common are differential comparators on input pins designed to be connected to differential signaling channels, the FPGA industry sprouted from programmable read-only memory and programmable logic devices. PROMs and PLDs both had the option of being programmed in batches in a factory or in the field, however, programmable logic was hard-wired between logic gates. In the late 1980s, the Naval Surface Warfare Center funded an experiment proposed by Steve Casselman to develop a computer that would implement 600,000 reprogrammable gates, Casselman was successful and a patent related to the system was issued in 1992. Some of the foundational concepts and technologies for programmable logic arrays, gates. Xilinx co-founders Ross Freeman and Bernard Vonderschmitt invented the first commercially viable field-programmable gate array in 1985 – the XC2064, the XC2064 had programmable gates and programmable interconnects between gates, the beginnings of a new technology and market. The XC2064 had 64 configurable logic blocks, with two three-input lookup tables, more than 20 years later, Freeman was entered into the National Inventors Hall of Fame for his invention. Altera and Xilinx continued unchallenged and quickly grew from 1985 to the mid-1990s, by 1993, Actel was serving about 18 percent of the market. By 2010, Altera, Actel and Xilinx together represented approximately 77 percent of the FPGA market, the 1990s were an explosive period of time for FPGAs, both in sophistication and the volume of production. In the early 1990s, FPGAs were primarily used in telecommunications, by the end of the decade, FPGAs found their way into consumer, automotive, and industrial applications. This work mirrors the architecture by Ron Perlof and Hana Potash of Burroughs Advanced Systems Group which combined a reconfigurable CPU architecture on a chip called the SB24. That work was done in 1982, the Atmel FPSLIC is another such device, which uses an AVR processor in combination with Atmels programmable logic architecture
10. Logic block – In computing, a logic block or configurable logic block is a fundamental building block of field-programmable gate array technology. Logic blocks can be configured by the engineer to provide reconfigurable logic gates, logic blocks are the most common FPGA architecture, and are usually laid out within a logic block array. Logic blocks require I/O pads, and routing channels, programmable logic blocks were invented by David W. Page and LuVerne R. Peterson, and defined within their 1985 patents. An application circuit must be mapped into an FPGA with adequate resources, while the number of logic blocks and I/Os required is easily determined from the design, the number of routing tracks needed may vary considerably even among designs with the same amount of logic. For example, a crossbar switch requires much more routing than an array with the same gate count. This is determined by such as those derived from Rents rule or by experiments with existing designs. FPGAs are also used for systems validation including pre-silicon validation, post-silicon validation. This allows chip companies to validate their design before the chip is produced in the factory, in general, a logic block consists of a few logical cells. A typical cell consists of a 4-input LUT, a Full adder, the LUTs are in this figure split into two 3-input LUTs. In normal mode those are combined into a 4-input LUT through the left mux, in arithmetic mode, their outputs are fed to the FA. The selection of mode is programmed into the middle multiplexer, the output can be either synchronous or asynchronous, depending on the programming of the mux to the right, in the figure example. In practice, entire or parts of the FA are put as functions into the LUTs in order to save space, logic blocks typically contain a few ALMs/LEs/Slices. ALMs and Slices usually contain 2 or 4 structures similar to the example figure, in recent years, manufacturers have started moving to 6-input LUTs in their high performance parts, claiming increased performance. To shrink the size and power consumption of FPGAs, vendors such as Tabula, the technology stacks several active FPGA dice side-by-side on a silicon interposer – a single piece of silicon that carries passive interconnect. An FPGA built in this way is called a heterogeneous FPGA, since clock signals are normally routed via special-purpose dedicated routing networks in commercial FPGAs, they and other signals are separately managed. For this example architecture, the locations of the FPGA logic block pins are shown to the right. Each input is accessible from one side of the logic block, each logic block output pin can connect to any of the wiring segments in the channels adjacent to it. Similarly, an I/O pad can connect to any one of the segments in the channel adjacent to it