Hardware abstractions are sets of routines in software that provide programs with access to hardware resources through programming interfaces. The programming interface allows all devices in a particular class C of hardware devices to be accessed through identical interfaces even though C may contain different subclasses of devices that each provide a different hardware interface.
61-478: Hardware abstractions often allow programmers to write device -independent, high performance applications by providing standard operating system (OS) calls to hardware. The process of abstracting pieces of hardware is often done from the perspective of a CPU . Each type of CPU has a specific instruction set architecture or ISA. The ISA represents the primitive operations of the machine that are available for use by assembly programmers and compiler writers. One of
122-452: A compiled language , interpreter , and script language . In the Unix operating system, most types of input and output operations are considered to be streams of bytes read from a device or written to a device. This stream of bytes model is used for file I/O, socket I/O, and terminal I/O in order to provide device independence. In order to read and write to a device at the application level,
183-432: A monitor , mouse , keyboard , and speakers . By contrast, software is a set of written instructions that can be stored and run by hardware. Hardware derived its name from the fact it is hard or rigid with respect to changes, whereas software is soft because it is easy to change. Hardware is typically directed by the software to execute any command or instruction . A combination of hardware and software forms
244-410: A "least common denominator" model. Thus, certain deep architectural decisions from the implementation may become relevant to users of a particular instantiation of an abstraction. A good metaphor is the abstraction of transportation. Both bicycling and driving a car are transportation. They both have commonalities (e.g., you must steer) and physical differences (e.g., use of feet). One can always specify
305-458: A GPU integrated into the motherboard. Most computers also have an external data bus to connect peripheral devices to the motherboard. Most commonly, Universal Serial Bus (USB) is used. Unlike the internal bus, the external bus is connected using a bus controller that allows the peripheral system to operate at a different speed from the CPU. Input and output devices are used to receive data from
366-485: A centralized memory that stored both data and programs, a central processing unit (CPU) with priority of access to the memory, and input and output (I/O) units . Von Neumann used a single bus to transfer data, meaning that his solution to the storage problem by locating programs and data adjacent to each other created the Von Neumann bottleneck when the system tries to fetch both at the same time—often throttling
427-590: A commensurate increase in energy use and cooling demand. The personal computer is one of the most common types of computer due to its versatility and relatively low price. Virtual hardware is software that mimics the function of hardware; it is commonly used in infrastructure as a Service (IaaS) and platform as a Service (PaaS). Embedded systems have the most variation in their processing power and cost: from an 8-bit processor that could cost less than USD $ 0.10, to higher-end processors capable of billions of operations per second and costing over USD$ 100. Cost
488-419: A cord, light or takes some kind of battery. Some companies, such as Dell and Apple , will recycle computers of their make or any other make. Otherwise, a computer can be donated to Computer Aid International which is an organization that recycles and refurbishes old computers for hospitals, schools, universities, etc. Abstraction layer In computing , an abstraction layer or abstraction level
549-430: A good abstraction layer allows for easy reuse by distilling a useful concept or design pattern so that situations, where it may be accurately applied, can be quickly recognized. Just composing lower-level elements into a construct doesn't count as an abstraction layer unless it shields users from its underlying complexity. A layer is considered to be on top of another if it depends on it. Every layer can exist without
610-428: A minimum of code modification. Operating systems having a defined HAL are more easily portable across different hardware. This is especially important for embedded systems that run on dozens of different platforms. The Windows NT kernel has a HAL in the kernel space between hardware and the executive services that are contained in the file NTOSKRNL.EXE under %WINDOWS%\system32\hal.dll . This allows portability of
671-421: A usable computing system, although other systems exist with only hardware. Early computing devices were more complicated than the ancient abacus date to the seventeenth century. French mathematician Blaise Pascal designed a gear-based device that could add and subtract, selling around 50 models. The stepped reckoner was invented by Gottfried Leibniz by 1676, which could also divide and multiply. Due to
SECTION 10
#1732798713759732-400: A variety of plastics that are present in bulk in computers or other electronics can reduce the costs of constructing new systems. Components frequently contain copper , gold , tantalum , silver , platinum , palladium , and lead as well as other valuable materials suitable for reclamation. The central processing unit contains many toxic materials. It contains lead and chromium in
793-465: A variety of different platforms. Many early computer systems did not have any form of hardware abstraction. This meant that anyone writing a program for such a system would have to know how each hardware device communicated with the rest of the system. This was a significant challenge to software developers since they then had to know how every hardware device in a system worked to ensure the software's compatibility . With hardware abstraction, rather than
854-444: A very similar commodity . Profit margins have also been reduced. Even when the performance is not increasing, the cost of components has been dropping over time due to improved manufacturing techniques that have fewer components rejected at quality assurance stage. The most common instruction set architecture (ISA)—the interface between a computer's hardware and software—is based on the one devised by von Neumann in 1945. Despite
915-495: Is a growing movement to recycle old and outdated parts. Computer hardware contain dangerous chemicals such as lead, mercury, nickel, and cadmium. According to the EPA these e-wastes have a harmful effect on the environment unless they are disposed of properly. Making hardware requires energy, and recycling parts will reduce air pollution , water pollution, as well as greenhouse gas emissions. Disposing unauthorized computer equipment
976-427: Is a particular concern with these systems, with designers often choosing the cheapest option that satisfies the performance requirements. A computer case encloses most of the components of a desktop computer system. It provides mechanical support and protection for internal elements such as the motherboard, disk drives, and power supply, and controls and directs the flow of cooling air over internal components. The case
1037-691: Is a way of hiding the working details of a subsystem. Examples of software models that use layers of abstraction include the OSI model for network protocols , OpenGL , and other graphics libraries , which allow the separation of concerns to facilitate interoperability and platform independence . In computer science , an abstraction layer is a generalization of a conceptual model or algorithm , away from any specific implementation. These generalizations arise from broad similarities that are best encapsulated by models that express similarities present in various specific implementations. The simplification provided by
1098-464: Is also part of the system to control electromagnetic interference radiated by the computer and protects internal parts from electrostatic discharge. Large tower cases provide space for multiple disk drives or other peripherals and usually stand on the floor, while desktop cases provide less expansion room. All-in-one style designs include a video display built into the same case. Portable and laptop computers require cases that provide impact protection for
1159-452: Is an Android-based HAL used by several mobile operating systems such as Ubuntu Touch and LuneOS to run on smartphones with Android pre-installed. Computer hardware Computer hardware includes the physical parts of a computer , such as the central processing unit (CPU), random access memory (RAM) , motherboard , computer data storage , graphics card , sound card , and computer case . It includes external devices such as
1220-484: Is either true or false. Boolean algebra is now the basis of the circuits that model the transistors and other components of integrated circuits that make up modern computer hardware. In 1945, Turing finished the design for a computer (the Automatic Computing Engine ) that was never built. Around this time, technological advancement in relays and vacuum tubes enabled the construction of
1281-527: Is in fact illegal. Legislation makes it mandatory to recycle computers through the government approved facilities. Recycling a computer can be made easier by taking out certain reusable parts. For example, the RAM , DVD drive, the graphics card , hard drive or SSD , and other similar removable parts can be reused. Many materials used in computer hardware can be recovered by recycling for use in future production. Reuse of tin , silicon , iron , aluminum , and
SECTION 20
#17327987137591342-470: Is often deliberately misquoted with "abstraction" substituted for "indirection." It is also sometimes misattributed to Butler Lampson . Kevlin Henney 's corollary to this is, "...except for the problem of too many layers of indirection." In a computer architecture , a computer system is usually represented as consisting of several abstraction levels such as: Programmable logic is often considered part of
1403-408: Is readable/writable through an API which many joystick-like devices might share. Most joystick-devices might report movement directions. Many joystick-devices might have sensitivity-settings that can be configured by an outside application. A Joystick abstraction hides details (e.g., register format, I2C address) of the hardware so that a programmer using the abstracted API, does not need to understand
1464-434: Is surrounded by cooling fluid) and direct-to-chip (where the cooling fluid is directed to each computer chip) can be more expensive but are also more efficient. Most computers are designed to be more powerful than their cooling system, but their sustained operations cannot exceed the capacity of the cooling system. While performance can be temporarily increased when the computer is not hot ( overclocking ), in order to protect
1525-537: Is the main component of a computer. It is a board with integrated circuitry that connects the other parts of the computer including the CPU , the RAM , the disk drives ( CD , DVD , hard disk , or any others) as well as any peripherals connected via the ports or the expansion slots . The integrated circuit (IC) chips in a computer typically contain billions of tiny metal–oxide–semiconductor field-effect transistors (MOSFETs). Components directly attached to or to part of
1586-401: The operating system to map virtual memory to different areas of the finite physical memory. Computer processors generate heat, and excessive heat impacts their performance and can harm the components. Many computer chips will automatically throttle their performance to avoid overheating. Computers also typically have mechanisms for dissipating excessive heat, such as air or liquid coolers for
1647-574: The API and communicates with the hardware by calling functions in the API. A hardware abstraction layer ( HAL ) is an abstraction layer , implemented in software, between the physical hardware of a computer and the software that runs on that computer. Its function is to hide differences in hardware from most of the operating system kernel , so that most of the kernel-mode code does not need to be changed to run on systems with different hardware. On Microsoft Windows, HAL can basically be considered to be
1708-403: The CPU and GPU and heatsinks for other components, such as the RAM . Computer cases are also often ventilated to help dissipate heat from the computer. Data centers typically use more sophisticated cooling solutions to keep the operating temperature of the entire center safe. Air-cooled systems are more common in smaller or older data centers, while liquid-cooled immersion (where each computer
1769-695: The HAL, Windows 2000 was able to run on them. Since Windows Vista and Windows Server 2008 , the HAL used is automatically determined during startup . An "extreme" example of a HAL can be found in the System/38 and AS/400 architectures, currently implemented in the IBM i operating system. Most compilers for those systems generate an abstract machine code; the Licensed Internal Code, or LIC, translates this virtual machine code into native code for
1830-523: The Windows NT kernel-mode code to a variety of processors, with different memory management unit architectures, and a variety of systems with different I/O bus architectures; most of that code runs without change on those systems, when compiled for the instruction set applicable to those systems. For example, the SGI Intel x86-based workstations were not IBM PC compatible workstations, but due to
1891-475: The ability to insert one while running, like Adeos . The NetBSD operating system is widely known as having a clean hardware abstraction layer which allows it to be highly portable. As part of this system are uvm(9) / pmap(9) , bus_space(9) , bus_dma(9) and other subsystems. Popular buses which are used on more than one architecture are also abstracted, such as ISA , EISA , PCI , PCIe , etc., allowing drivers to also be highly portable with
Hardware abstraction - Misplaced Pages Continue
1952-457: The abstraction "drive to" and let the implementor decide whether bicycling or driving a car is best. The "wheeled terrestrial transport" function is abstracted and the details of "how to drive" are encapsulated. Examples of "abstractions" on a PC include video input, printers, audio input and output, block devices (e.g. hard disk drives or USB flash drive ), etc. In certain computer science domains, such as operating systems or embedded systems,
2013-413: The abstractions have slightly different appearances (for instance, operating systems tend to have more standardized interfaces), but the concept of abstraction and encapsulation of complexity are common, and deep. The hardware abstraction layer resides below the application programming interface (API) in a software stack, whereas the application layer (often written in a high level language) resides above
2074-548: The annual rate of improvement in hardware performance exceeded 50 percent, enabling the development of new computing devices such as tablets and mobiles. Alongside the density of transistors, DRAM memory as well as flash and magnetic disk storage also became exponentially more compact and cheaper. The rate of improvement slackened off in the twenty-first century. In the twenty-first century, increases in performance have been driven by increasing exploitation of parallelism . Applications are often parallelizable in two ways: either
2135-650: The atmosphere, landfill or waterways. While electronics consist a small fraction of total waste generated, they are far more dangerous. There is stringent legislation designed to enforce and encourage the sustainable disposal of appliances, the most notable being the Waste Electrical and Electronic Equipment Directive of the European Union and the United States National Computer Recycling Act. E-cycling ,
2196-443: The design of the CPU, memory, and memory interconnect . Memory hierarchy ensures that the memory quicker to access (and more expensive) is located closer to the CPU, while slower, cheaper memory for large-volume storage is located further away. Memory is typically segregated to separate programs from data and limit an attacker's ability to alter programs. Most computers use virtual memory to simplify addressing for programs, using
2257-440: The design was incorporated into the earliest computers: punch cards for input and output, memory , an arithmetic unit analogous to central processing units , and even a primitive programming language similar to assembly language . In 1936, Alan Turing developed the universal Turing machine to model any type of computer, proving that no computer would be able to solve the decision problem . The universal Turing machine
2318-546: The details of the device's physical interface. This also allows code reuse since the same code can process standardized messages from any kind of implementation which supplies the "joystick" abstraction. A "nudge forward" can be from a potentiometer or from a capacitive touch sensor that recognises "swipe" gestures, as long as they both provide a signal related to "movement". As physical limitations (e.g. resolution of sensor, temporal update frequency) may vary with hardware, an API can do little to hide that, other than by assuming
2379-411: The driver for the motherboard and allows instructions from higher level computer languages to communicate with lower level components, but prevents direct access to the hardware. CP/M ( CP/M BIOS ), DOS ( DOS BIOS ), Solaris , Linux , BSD , macOS , and some other portable operating systems also have a HAL, even if it is not explicitly designated as such. Some operating systems, such as Linux, have
2440-631: The external world or write data respectively. Common examples include keyboards and mice (input) and displays and printers (output). Network interface controllers are used to access the Internet . USB ports also allow power to connected devices—a standard USB supplies power at 5 volts and up to 500 milliamps (2.5 watts ), while powered USB ports with additional pins may allow the delivery of more power—up to 6 amps at 24v. Global revenue from computer hardware in 2023 reached $ 705.17 billion. Because computer parts contain hazardous materials, there
2501-578: The fact that the underlying hardware has been changed dramatically; at least three different types of processors have been in use. Android introduced a HAL known as the "vendor interface" (codenamed "Project Treble") on version 8.0 "Oreo" . It abstracts low-level code from the Android OS framework, and they must be made forward compatible to support future versions of Android to ease the development of firmware updates. Before Project Treble Android relied on various non-standardized legacy HALs. Halium
Hardware abstraction - Misplaced Pages Continue
2562-608: The first computers. Building on Babbage's design, relay computers were built by George Stibitz at Bell Laboratories and Harvard University 's Howard Aiken , who engineered the MARK I . Also in 1945, mathematician John von Neumann —working on the ENIAC project at the University of Pennsylvania —devised the underlying von Neumann architecture that has served as the template for most modern computers. Von Neumann's design featured
2623-461: The hardware from excessive heat, the system will automatically reduce performance or shut down the processor if necessary. Processors also will shut off or enter a low power mode when inactive to reduce heat. Power delivery as well as heat dissipation are the most challenging aspects of hardware design, and have been the limiting factor to the development of smaller and faster chips since the early twenty-first century. Increases in performance require
2684-576: The hardware, while the logical definitions are also sometimes seen as part of a device's software or firmware. Firmware may include only low-level software, but can also include all software, including an operating system and applications. The software layers can be further divided into hardware abstraction layers, physical and logical device drivers, repositories such as filesystems, operating system kernels, middleware, applications, and others. A distinction can also be made from low-level programming languages like VHDL , machine language , assembly language to
2745-518: The layers above it, and requires the layers below it to function. Frequently abstraction layers can be composed into a hierarchy of abstraction levels. The OSI model comprises seven abstraction layers. Each layer of the model encapsulates and addresses a different part of the needs of digital communications, thereby reducing the complexity of the associated engineering solutions. A famous aphorism of David Wheeler is, "All problems in computer science can be solved by another level of indirection ." This
2806-413: The limitations of contemporary fabrication and design flaws, Leibniz' reckoner was not very functional, but similar devices ( Leibniz wheel ) remained in use into the 1970s. In the 19th century, Englishman Charles Babbage invented the difference engine , a mechanical device to calculate polynomials for astronomical purposes. Babbage also designed a general-purpose computer that was never built. Much of
2867-525: The lungs, liver, and kidneys. Computer components contain many toxic substances, like dioxins , polychlorinated biphenyls (PCBs), cadmium , chromium , radioactive isotopes and mercury . Circuit boards contain considerable quantities of lead-tin solders that are more likely to leach into groundwater or create air pollution due to incineration. Recycling of computer hardware is considered environmentally friendly because it prevents hazardous waste , including heavy metals and carcinogens, from entering
2928-521: The main functions of a compiler is to allow a programmer to write an algorithm in a high-level language without having to care about CPU-specific instructions. Then it is the job of the compiler to generate a CPU-specific executable. The same type of abstraction is made in operating systems, but OS APIs now represent the primitive operations of the machine, rather than an ISA. This allows a programmer to use OS-level operations (e.g. task creation/deletion) in their programs while retaining portability over
2989-506: The metal plates. Resistors, semiconductors, infrared detectors, stabilizers, cables, and wires contain cadmium. The circuit boards in a computer contain mercury, and chromium. When these types of materials, and chemicals are disposed improperly will become hazardous for the environment. When e-waste byproducts leach into groundwater, are burned, or get mishandled during recycling, it causes harm. Health problems associated with such toxins include impaired mental development, cancer, and damage to
3050-443: The motherboard include: An expansion card in computing is a printed circuit board that can be inserted into an expansion slot of a computer motherboard or backplane to add functionality to a computer system via the expansion bus. Expansion cards can be used to obtain or expand on features not offered by the motherboard. Using expansion cards for a video processor used to be common, but modern computers are more likely to instead have
3111-509: The number of instructions the machines need to use. Based on a recognition that only a few instructions are commonly used, RISC shrinks the instruction set for added simplicity, which also enables the inclusion of more registers . After the invention of RISC in the 1980s, RISC based architectures that used pipelining and caching to increase performance displaced CISC architectures, particularly in applications with restrictions on power usage or space (such as mobile phones ). From 1986 to 2003,
SECTION 50
#17327987137593172-461: The processor on which it is running and executes the resulting native code. (The exceptions are compilers that generate the LIC itself; those compilers are not available outside IBM.) This was so successful that application software and operating system software above the LIC layer that were compiled on the original S/38 run without modification and without recompilation on the latest AS/400 systems, despite
3233-442: The program calls a function to open the device, which may be a real device such as a terminal or a virtual device such as a network port or a file in a file system. The device's physical characteristics are mediated by the operating system which in turn presents an abstract interface that allows the programmer to read and write bytes from/to the device. The operating system then performs the actual transformation needed to read and write
3294-447: The program communicating directly with the hardware device, it communicates to the operating system what the device should do, which then generates a hardware-dependent instruction to the device. This meant programmers didn't need to know how specific devices worked, making their programs compatible with any device. An example of this might be a "joystick" abstraction. The joystick device, of which there are many physical implementations,
3355-552: The recycling of computer hardware, refers to the donation, reuse, shredding and general collection of used electronics. Generically, the term refers to the process of collecting, brokering, disassembling, repairing and recycling the components or metals contained in used or discarded electronic equipment, otherwise known as electronic waste (e-waste). E-cyclable items include, but are not limited to: televisions, computers, microwave ovens, vacuum cleaners, telephones and cellular phones, stereos, and VCRs and DVDs just about anything that has
3416-646: The same function is running across multiple areas of data ( data parallelism ) or different tasks can be performed simultaneously with limited interaction ( task parallelism ). These forms of parallelism are accommodated by various hardware strategies, including instruction-level parallelism (such as instruction pipelining ), vector architectures and graphical processing units (GPUs) that are able to implement data parallelism, thread-level parallelism and request-level parallelism (both implementing task-level parallelism). Microarchitecture , also known as computer organization, refers to high-level hardware questions such as
3477-454: The separation of the computing unit and the I/O system in many diagrams, typically the hardware is shared, with a bit in the computing unit indicating whether it is in computation or I/O mode. Common types of ISAs include CISC ( complex instruction set computer ), RISC ( reduced instruction set computer ), vector operations , and hybrid modes. CISC involves using a larger expression set to minimize
3538-412: The stream of bytes to the device. Most graphics libraries such as OpenGL provide an abstract graphical device model as an interface. The library is responsible for translating the commands provided by the programmer into the specific device commands needed to draw the graphical elements and objects. The specific device commands for a plotter are different from the device commands for a CRT monitor , but
3599-445: The system's performance. Computer architecture requires prioritizing between different goals, such as cost, speed, availability, and energy efficiency. The designer must have a good grasp of the hardware requirements and many different aspects of computing, from compilers to integrated circuit design. Cost has also become a significant constraint for manufacturers seeking to sell their products for less money than competitors offering
3660-449: The unit. Hobbyists may decorate the cases with colored lights, paint, or other features, in an activity called case modding . Most personal computer power supply units meet the ATX standard and convert from alternating current (AC) at between 120 and 277 volts provided from a power outlet to direct current (DC) at a much lower voltage: typically 12, 5, or 3.3 volts. The motherboard
3721-451: Was a type of stored-program computer capable of mimicking the operations of any Turing machine (computer model) based on the software instructions passed to it. The storage of computer programs is key to the operation of modern computers and is the connection between computer hardware and software. Even prior to this, in the mid-19th century mathematician George Boole invented Boolean algebra —a system of logic where each proposition
SECTION 60
#1732798713759#758241