Fact-checked by Grok 2 weeks ago

Arithmetic logic unit

The Arithmetic Logic Unit (ALU) is a core digital circuit within a computer's (CPU) responsible for executing arithmetic operations, such as , , , and , as well as logical operations, including , NOT, and comparisons, on represented as electrical signals in 0s and 1s. As a key element of the , the ALU processes inputs from CPU registers, performs the specified computations under control signals from the CPU's , and outputs results back to registers or memory, enabling the fundamental data manipulation required for program execution. It represents the modern evolution of the central arithmetic component envisioned in early designs, primarily handling integer arithmetic and logical operations to support complex calculations in everything from simple embedded systems to high-performance processors, with floating-point operations typically managed by a separate (FPU). The ALU's design typically incorporates combinational logic gates and multiplexers to select between arithmetic and logical functions, with flags for status conditions like zero, carry, overflow, and sign to inform subsequent instructions. In multi-bit configurations, such as 32-bit or 64-bit ALUs common in contemporary CPUs, individual bit-slice units are interconnected via carry chains to enable efficient parallel processing of operands. This structure ensures high-speed operation, often pipelined in modern architectures to overlap instruction execution and boost overall system throughput.

Overview

Definition and Purpose

The arithmetic logic unit (ALU) is a combinational digital circuit designed to perform a variety of and logical operations on inputs. It processes pairs of operands to execute functions such as , , bitwise AND, OR, and XOR, producing corresponding outputs without relying on sequential storage elements. This design ensures that the ALU responds instantaneously to input changes, making it a fundamental building block for data manipulation in digital systems. In central processing units (CPUs), the ALU serves as the primary execution core for and logical instructions, handling the computational tasks essential to program execution. It enables the processor to perform basic data operations required by software, such as calculating sums or comparing values, thereby supporting the overall functionality of the computer system. As a critical component of the CPU, the ALU integrates with registers to fetch operands and store results, facilitating efficient instruction processing. The ALU occupies a central role in the , where the CPU is divided into distinct units: the ALU for computation, the for instruction decoding and sequencing, and for storing both programs and data. This separation allows the ALU to focus solely on processing, receiving inputs from registers or memory via the 's orchestration, while outputs are routed back for further use or . Unlike the control unit, which manages flow without direct computation, or memory, which provides passive , the ALU actively transforms to enable algorithmic execution. A textual representation of a basic ALU block diagram illustrates two operand inputs (A and B, typically n-bit wide), a function select input (a multi-bit control signal to choose the operation), and primary outputs consisting of the result (Y, n-bit) plus auxiliary status signals like carry-out or zero flag. This configuration positions the ALU as an interface between data sources in the CPU, ensuring operations align with instruction requirements while generating flags for conditional control.

Role in Computer Architecture

The arithmetic logic unit (ALU) is a core component of the (CPU) , where it receives input operands from the data read ports of the register file and delivers computation results back to the register file for storage. This integration enables efficient data flow within the processor, allowing operands to be fetched from general-purpose registers, processed by the ALU, and written back in a single cycle for basic operations. The ALU interacts closely with the , which decodes fetched instructions and generates control signals to route the appropriate to the ALU, thereby selecting the specific operation to perform. These signals direct the ALU's function selection mechanism, ensuring that the unit executes only the arithmetic or logical task mandated by the current instruction without unnecessary overhead. In the instruction cycle, the ALU plays a pivotal role during the execution stage, where it computes results for and logical instructions using the decoded operands from prior stages. This stage involves the ALU applying operations such as or bitwise AND directly on register-sourced , contributing to the overall throughput of instruction processing in the CPU. The scope of the ALU differs between RISC and CISC architectures; in RISC designs, it focuses on straightforward register-to-register operations to simplify and enable pipelining, while in CISC, it accommodates more intricate instructions that can reference alongside registers. This distinction influences efficiency, with RISC emphasizing ALU simplicity for faster execution cycles.

Signals and Interfaces

Data Inputs and Outputs

The arithmetic logic unit (ALU) receives two primary data inputs known as , typically denoted as A and B, each consisting of n bits representing integers. These are loaded from registers or into the ALU's input ports, often via multiplexers that select the appropriate paths based on the being executed. The ALU processes these inputs to produce an output result, which is generally an n-bit value matching the operand width, though certain operations may extend it to n+1 bits to accommodate carry or bits. Data bus widths in ALUs vary by processor architecture, commonly implemented as 8-bit, 16-bit, 32-bit, or 64-bit to align with the system's word size. Wider bus widths enable handling of larger numerical ranges and greater precision in computations, thereby increasing the ALU's processing capacity for complex applications, but they also demand more resources and can introduce in carry chains without optimized designs like carry-lookahead adders. For instance, a 64-bit ALU supports operands up to approximately 1.8 × 10^19 in unsigned magnitude, significantly expanding the scope of addressable memory and data manipulation compared to an 8-bit variant limited to 255. ALUs handle both signed and unsigned data representations, with the same hardware circuitry often supporting both through interpretive conventions rather than distinct paths. Unsigned operands treat all bits as magnitude, while signed ones use encoding, where the most significant bit indicates sign (0 for positive/zero, 1 for negative), allowing seamless extension for arithmetic without altering the core logic gates. In data flow, for example, multiplexers route values (e.g., from a general-purpose ) to the A and B inputs, ensuring operands are properly aligned and zero- or sign-extended if necessary before ALU processing. This setup permits opcode-driven selection of operations on the incoming data, integrating with broader control.

Control Signals

The opcode functions as a multi-bit control input to the arithmetic logic unit (ALU), typically 3 to 4 bits wide, enabling the selection of specific operations from a set of 8 to 16 functions, such as (ADD), logical AND (AND), and shift right (SHR). This is fed into the ALU's function selection mechanism, where a interprets it to route the appropriate arithmetic or logical circuitry for execution on the input operands. Enable signals complement the opcode by gating the ALU's activity, activating processing only when asserted to prevent unnecessary computations and ensure proper timing in synchronous designs. In clocked architectures, these signals synchronize ALU operations with the system clock, latching inputs and outputs at rising or falling edges to maintain across stages. Without an enable signal, the ALU may default to a pass-through or hold state, conserving power in idle cycles. A representative example of opcode decoding appears in single-cycle designs, where the signals derive from the instruction's primary and, for operations, the function code subfield. The following textual truth table illustrates a simplified 3-bit mapping for common ALU functions in a MIPS-like :
OpcodeOperation
000ADD
001SUBTRACT
010AND
011OR
100SLT (set on less than)
101NOR
110SHIFT LEFT
111SHIFT RIGHT
This ensures efficient selection without overlap, with the ALU refining the signal based on the full decode. The CPU's generates these and enable signals during the fetch and decode phases, extracting the from the fetched machine and it to ALU-specific controls via a or lookup. This process integrates with the broader , asserting enables only for instructions requiring ALU involvement, such as arithmetic or branch comparisons.

Status Flags

Status flags are specialized output signals produced by the arithmetic logic unit (ALU) to reflect specific conditions arising from the execution of arithmetic or logical operations. These flags provide essential about the result, such as whether it represents zero, a negative value, or an invalid signed magnitude due to , allowing the processor to make informed decisions for . Typically implemented as single-bit indicators, status flags are captured and stored in a dedicated (also called the or processor status word) immediately following an ALU operation. This register serves as a repository for conditional information that instructions can query to implement branching, looping, and error handling in software. The most common status flags in ALU designs include the (Z), (C), sign flag (S or N), (V or O), and parity flag (P). The is asserted (set to 1) when the ALU result is exactly zero, meaning every bit in the output is 0; otherwise, it is cleared to 0. This flag is generated by performing a logical NOR across all bits of the result or equivalently by detecting if the result equals zero through comparison circuitry. The is set to 1 if there is a carry-out from the most significant bit (MSB) position during an operation or a borrow-in to the MSB during subtraction, facilitating extended-precision arithmetic for unsigned numbers and multi-limb calculations. The sign flag reflects the sign of the ALU result in two's complement arithmetic and is simply set to the value of the MSB of the output: 1 for negative (MSB=1) and 0 for non-negative (MSB=0). The overflow flag indicates an arithmetic anomaly in signed operations, specifically when the result exceeds the representable range in notation, leading to an incorrect sign interpretation. It is generated by checking if the operands share the same sign but produce a result with the opposite sign; for of operands A and B yielding result Z, this is detected using the condition where both A and B are positive but Z is negative, or both are negative but Z is positive. In hardware, this is commonly implemented with the equation: \text{overflow} = (A_{\text{sign}} \oplus B_{\text{sign}}) \land (A_{\text{sign}} \oplus Z_{\text{sign}}) where \oplus denotes XOR and \land denotes AND, with the sign bits extracted from the MSB of each value; this circuit ensures overflow is flagged only when the sign inputs match but differ from the output sign. The parity flag is set to 1 if the number of 1s in the least significant byte (or word) of the result is even, computed via a parity-checking that folds the bits through XOR to yield the overall . These flags are latched into the upon completion of an ALU operation, overwriting previous values unless preserved by specific instructions, and are subsequently read by conditional instructions (e.g., branch if zero) to direct program execution based on the computational outcome. This mechanism integrates seamlessly with the processor's for efficient conditional processing without additional data transfers.

Operation

Circuit Functionality

The arithmetic logic unit (ALU) functions as a combinational digital circuit, primarily constructed from basic logic gates such as , and XOR, along with multiplexers to route and select outputs from various sub-units. These components enable the ALU to process without relying on memory elements for computation, ensuring that the output depends solely on the current inputs. In this design, the circuit evaluates operations instantaneously upon receiving stable inputs, making it ideal for high-speed processing within a processor's . Data flow through the ALU begins with two operands, typically n-bit binary values from processor registers, entering the circuit alongside a control opcode that dictates the operation. The opcode drives a selection mechanism, such as a multiplexer array, which routes the operands to the appropriate sub-circuit—for instance, an adder for arithmetic tasks or a bitwise logic unit for operations like AND or XOR—before combining the results into a single output. The final result, along with generated status flags (e.g., zero, carry, or overflow indicators), then exits the ALU for storage in a destination register or further processing. This streamlined path supports parallel evaluation of potential operations while ensuring only the selected one propagates. In synchronous ALU implementations, common in pipelined processors, clocked latches capture and stabilize input operands at the rising edge of the , preventing glitches or timing violations during computation. This allows the combinational core to operate reliably within a fixed , where the holds values steady until the next , aligning ALU results with the broader system's timing requirements.

Function Selection Mechanism

The function selection mechanism in an arithmetic logic unit (ALU) enables the dynamic choice of operations by routing inputs to the appropriate functional blocks—such as adders, logical , or shifters—and selecting their outputs based on signals derived from the processor's . This is commonly achieved through multiplexers (MUX) that integrate the outputs from multiple function units into a single result line, with selection lines controlled by the to determine which unit's output is propagated. For instance, signals from the direct the MUX to choose between the output for operations or the logic unit output for bitwise functions. Decoder circuits provide an alternative or complementary approach by converting the binary into one-hot enable signals that activate specific blocks while deactivating others, ensuring only the desired operation executes without interference. The takes the bits as input and generates distinct enable lines, each tied to a ; for example, in a with a 2-bit , a 2-to-4 produces four enable outputs (e.g., E0 for AND, E1 for OR, E2 for ADD, E3 for ), which are fed to the select inputs of a 4:1 MUX or directly gate the outputs of the respective blocks before . This setup minimizes power consumption and propagation delays by isolating inactive s. A practical example involves a 4-bit that, through partial decoding or a 4-to-16 , enables one of up to 16 paths, though often simplified to eight primary functions in basic ALUs; textually, the features the fed into a generating enable signals (e.g., EN_ADD, EN_AND), which connect to tri-state buffers or MUX select lines, with all function block outputs converging on a final output MUX—such that for 0010 (binary for ADD), EN_ADD asserts high, routing the adder's sum to the ALU result while others remain low. This -MUX combination allows efficient scaling for wider opcodes in modern designs. For compound functions like addition with carry-in (e.g., operations), the selection mechanism incorporates additional control bits to configure the arithmetic block via a sub-MUX that selects between a zero carry (for standard ADD) or an external carry-in signal, ensuring the function unit adapts without requiring separate hardware paths. This is typically handled by extending the opcode-derived controls to toggle the carry input MUX within the , maintaining compatibility with broader circuit flows where status flags influence subsequent selections.

Core Functions

Arithmetic Operations

The arithmetic operations in an arithmetic logic unit (ALU) primarily revolve around and , which form the foundation for more complex computations in systems. is typically implemented using a chain of full s, where each full processes one along with a carry-in from the previous stage. The bit S_i for the i-th is computed as S_i = A_i \oplus B_i \oplus C_i, where A_i and B_i are the input bits and C_i is the carry-in, while the carry-out C_{i+1} is generated as the C_{i+1} = A_i B_i + A_i C_i + B_i C_i. This structure ensures binary with carry propagation across multiple bits. Two common implementations for multi-bit addition in ALUs are the ripple-carry adder and the . In a ripple-carry adder, the carry-out from each full adder ripples sequentially to the next, resulting in a delay proportional to the number of bits, which can be a for wide operands. To mitigate this, carry-lookahead adders generate carry signals in parallel using propagate (P_i = A_i \oplus B_i) and generate (G_i = A_i B_i) terms, allowing faster computation for widths beyond 16 bits by reducing the critical path delay. These designs are integral to ALU performance in processors, balancing speed and hardware complexity. Subtraction in an ALU is commonly achieved by leveraging the circuit through representation, where the operation A - B is performed as A + (\neg B + 1), with \neg B denoting the bitwise complement of B. This method reuses the existing hardware, often incorporating a signal to invert the B input and set the initial carry-in to 1, enabling efficient without dedicated subtractor circuits. A dedicated subtractor may be used in some designs, but the approach predominates due to its simplicity and integration with addition. Increment and decrement operations are special cases of and , respectively, implemented by adding or subtracting to/from the using the ALU's . For increment, one input is set to all zeros except the least significant bit (which is ), while decrement uses the negation of added to the . These operations are essential for address arithmetic and counters in processors, often optimized with minimal additional logic beyond the core . In basic ALUs, multiplication and division are not typically performed in a single cycle but can be supported through iterative use of the for repeated or . , for instance, accumulates partial products by adding the multiplicand multiple times based on the multiplier bits, while employs repeated to determine and . These methods highlight the ALU's role as a foundational building block, though dedicated multipliers and dividers are used in advanced designs for efficiency.

Logical Operations

The logical operations performed by an arithmetic logic unit (ALU) encompass bitwise functions applied independently to each bit of the input operands, enabling efficient manipulation of without numerical interpretation or carry propagation. These operations, including , (XOR), and NOT, are realized through parallel arrays of basic logic gates, forming combinational circuits that process all bits simultaneously for high-speed execution. Unlike arithmetic functions, logical operations rely solely on gate-level logic, avoiding sequential dependencies to support applications in and . The bitwise AND operation generates an output bit that is true (1) only if both corresponding input bits are true, defined as \text{Output}_i = A_i \land B_i for each bit position i. This is implemented using a matrix of two-input AND gates, one per bit, where the inputs from operands A and B are directly fed into the gates without interconnection between bit positions. AND is widely used for masking in data manipulation, where ANDing with a mask value preserves selected bits while clearing others to zero, facilitating operations like extracting fields from registers. Similarly, the bitwise OR operation produces an output bit that is true if at least one of the corresponding input bits is true, expressed as \text{Output}_i = A_i \lor B_i, and is constructed via an array of OR gates applied in parallel across all bits. The XOR operation, yielding true when input bits differ (\text{Output}_i = A_i \oplus B_i), employs XOR gates and serves purposes such as detecting bit differences or computing in error-checking scenarios. The unary NOT operation inverts each bit of a single (\text{Output}_i = \neg A_i), implemented with NOT gates (inverters) for each position, often combined with other operations for complementation. These gate matrices ensure minimal propagation delay, as each output depends only on its local inputs. In practice, logical operations support bit toggling by XORing with a mask of ones in targeted positions, flipping those bits while leaving others unchanged, which is essential for flag manipulation and state updates in processor control. The selection of these functions occurs through control signals that multiplex the gate outputs, allowing the ALU to switch between logical modes as directed by instruction opcodes.

Shift and Rotate Operations

Shift operations in an ALU manipulate the positions of bits within a data word, enabling efficient multiplication or division by powers of 2 for unsigned integers, as well as alignment and extraction tasks. A logical shift left moves all bits to the left by a specified number of positions, filling the vacated least significant bits (LSBs) with zeros; this operation effectively multiplies the value by $2^n, where n is the shift amount. For example, shifting the 8-bit value 00000001 (1 in decimal) left by 3 positions yields 00001000 (8 in decimal). Conversely, a logical shift right moves bits to the right, filling the vacated most significant bits (MSBs) with zeros, which divides an unsigned value by $2^n. Arithmetic shifts preserve the sign of signed integers, differing from logical shifts primarily in the right-shift variant. An arithmetic shift right moves bits right by n positions but fills the vacated MSBs with copies of the original (0 for positive, 1 for negative), maintaining the number's sign and enabling signed division by $2^n. For instance, the 8-bit value 11111000 (-8 in decimal) arithmetically shifted right by 2 becomes 11111110 (-2 in decimal). Logical shifts, by contrast, do not preserve sign and are unsuitable for signed arithmetic. Left shifts are typically logical for both signed and unsigned representations, as is unnecessary. Rotate operations differ from shifts by wrapping bits around the ends of the word, preserving all bit values without loss or introduction of zeros. A rotate left shifts bits left, with the overflow bits from the MSB moving to the LSB positions; similarly, a rotate right shifts bits right, placing underflow bits from the LSB into the MSB. This is useful for circular data manipulation, such as in or bit-field rotations. For example, rotating 00001101 (13 in ) left by 3 positions produces 01101000 (104 in ), where the three MSBs wrap to the LSBs. Some ALUs support rotate through carry, incorporating the in the wrap-around. To handle variable shift amounts efficiently in a single clock cycle, ALUs often incorporate a , a combinational built from cascaded 2:1 multiplexers arranged in logarithmic stages. Each stage shifts by a power-of-2 amount (e.g., 1, 2, 4 bits for a 32-bit word), selected by bits of the shift input, allowing any shift from 0 to word size-1 with O(\log n) delay and O(n) hardware complexity. This design supports logical shifts, arithmetic shifts (via sign extension logic), and rotates by routing wrap-around paths through additional multiplexers. Barrel shifters are integral to modern processor ALUs, such as those in architectures, for high-performance .

Design and Implementation

Hardware Components

The arithmetic logic unit (ALU) is constructed from fundamental digital components that enable both arithmetic and logical processing. Core elements include basic logic gates such as , , and NOT, which form the basis for bitwise operations. For arithmetic functions, half adders and full adders are essential; a half adder processes two input bits to produce a sum and carry output using an for the sum and an for the carry, while a full adder extends this to three inputs (two bits plus a carry-in) by incorporating two half adders and an additional to combine carries. These adders are typically chained using parallel prefix schemes, such as carry-lookahead or Kogge-Stone adders, to handle multi-bit operations efficiently with logarithmic delay; simpler ripple-carry configurations are used in basic or low-power designs but limit performance due to linear carry propagation.) Multiplexers play a critical role in function selection, allowing the ALU to route inputs from different sub-units (such as the or paths) to a common output based on control signals. Typically, a 4-to-1 selects among /, logical AND/OR/XOR, or other operations for each bit position. This selection mechanism ensures efficient sharing of hardware resources across functions. The ALU is organized into key sub-units: the arithmetic unit, which relies on an circuit (implemented by XORing one with a signal to enable before feeding into the ); the logic unit, comprising an of parallel logic gates for bitwise , XOR, and similar operations; and the shifter unit, which performs bit shifts and rotations using either a serial shifter (for simple, low-cost designs that shift one bit per ) or a (a multi-stage enabling arbitrary shifts in a single ). The , in particular, uses logarithmic stages of 2:1 multiplexers to achieve O(log n) delay for n-bit shifts. In VLSI design, these components influence power consumption and chip area significantly, as each gate and translates to multiple transistors. For instance, a basic 4-bit ALU implementation may require around 100-200 gates, leading to hundreds of transistors depending on the node, with power scaling quadratically with transistor count in processes. Bit-slice design is commonly employed for , where a single 1-bit ALU slice—containing a full , gates, and a —is replicated n times for an n-bit ALU, with carry chains linking slices. This modular approach minimizes design complexity while optimizing for parallelism.

Combinational and Sequential Designs

Arithmetic logic units (ALUs) can be implemented using purely combinational logic, where the output depends solely on the current inputs without any memory elements. In such designs, the ALU consists of interconnected logic gates that directly compute arithmetic and logical operations, such as addition via a basic ripple-carry adder chain, though advanced designs employ carry-lookahead adders to reduce delays. The performance of combinational ALUs is limited by propagation delays through the circuit, particularly in the critical path of the carry chain during addition, where each bit's carry signal must propagate sequentially, resulting in delays proportional to the bit width (e.g., up to 33 gate delays for a 16-bit ripple-carry adder). This delay arises because the carry-out from one full adder serves as the carry-in for the next, creating a ripple effect that slows overall operation as operand size increases. To mitigate these timing constraints in high-performance systems, sequential ALU designs incorporate storage elements like flip-flops to register inputs and outputs, enabling synchronous, clocked operation. These flip-flops capture values at the clock edge, allowing the combinational core to process data in a controlled manner and facilitating pipelining, where multiple instructions overlap in execution stages. In pipelined ALUs, registers break the into stages (e.g., operand fetch, execution, result write-back), reducing the clock period to the longest stage delay rather than the full operation time, which has been a key enabler for clock frequencies exceeding 1 GHz in commercial microprocessors since the 1990s. The choice between combinational and sequential designs involves trade-offs in , , and throughput. Combinational ALUs offer lower for single operations due to the absence of clock overhead and simpler wiring, making them suitable for low-power or applications where speed is not paramount. However, sequential designs achieve higher overall clock rates and better scalability in multi-stage , despite added area for flip-flops and potential throughput penalties from pipeline hazards, prioritizing them in modern general-purpose CPUs. Most practical ALUs adopt a approach, with a core for computation surrounded by sequential elements such as input registers and output latches to with the processor's clock . This wrapper enables precise timing and status latching in sequential contexts, balancing the strengths of both paradigms.

Integration in Processors

In basic central processing units (CPUs), the arithmetic logic unit (ALU) serves as the core computational component within the processor's , positioned between the register file and the data unit to facilitate efficient fetching, processing, and result . Operands are typically loaded from the register file into the ALU for arithmetic or logical operations, with results either written back to the register file or forwarded to access stages. This integration ensures that the ALU handles computations directly as part of the execution , minimizing data movement overhead in simple, single-issue designs. To mitigate data hazards and reduce latency in pipelined processors, bypassing (also known as forwarding) paths are incorporated around the ALU, allowing results from prior instructions to be routed directly to subsequent ALU inputs without waiting for writes. These paths connect the outputs of the execute stage—where the ALU resides—to the inputs of later stages or earlier instructions in flight, enabling availability as soon as computation completes and preventing stalls that could otherwise degrade performance by up to several cycles per . Such mechanisms are essential in maintaining high instruction throughput, particularly when dependent operations chain together in the . In more advanced superscalar processors, which issue multiple instructions per cycle to exploit , ALUs are replicated and integrated as distinct execution units to handle concurrent operations, contrasting with the single ALU in basic CPUs. For instance, designs often include separate ALUs for general and specialized units for shifts or multiplications, alongside floating-point units, allowing execution of non-dependent instructions while the scheduler dispatches them based on resource availability. This multi-ALU approach significantly boosts throughput, as seen in early superscalar implementations like the R10000, which features two ALUs to support up to four . Modern processors, such as those implementing the architecture, incorporate 64-bit ALUs as integral parts of their integer execution pipelines, enabling wide data operations on 64-bit operands for enhanced performance in general computing tasks. Similarly, ARM-based cores in the Cortex-A series, like the Cortex-A78, employ multiple 64-bit ALUs within superscalar engines to process instructions efficiently, often issuing up to four operations per cycle across dedicated units. These integrations reflect the evolution toward wider, parallel datapaths that balance latency reduction via forwarding with scalability for high-performance workloads.

Applications

General-Purpose Computing

In general-purpose computing, the arithmetic logic unit (ALU) serves as the core component for executing fundamental arithmetic and logical within a (CPU). For instance, the ADD fetches two operands from , routes them to the ALU for summation, and stores the result back in a destination , enabling basic computational tasks in programs. Similarly, the CMP directs the ALU to perform a between operands without storing the result, instead updating status flags to indicate relational outcomes such as equality or greater-than, which are essential for in software. These operations form the backbone of execution pipelines in processors like x86 and architectures. The ALU plays a pivotal role in implementing structures such as and conditionals by generating status flags that influence branching decisions. In a , an ALU operation like or sets the if the result is zero, allowing a branch-on-zero to terminate the loop when a reaches the end condition. For conditionals, flags such as negative or carry enable selective execution paths, where the CPU evaluates ALU outputs to redirect program flow, optimizing sequential processing in general-purpose tasks. This integration with status flags, as detailed in processor documentation, ensures efficient handling of if-else constructs without excessive overhead. To maintain high execution efficiency, modern CPUs employ forwarding mechanisms that bypass file, directly supplying ALU results from prior as inputs to subsequent ALU operations. This technique resolves data hazards in designs by routing intermediate values—such as an result—straight to the next stage's ALU inputs, preventing pipeline stalls and preserving throughput. In processors, for example, ALU-to-ALU forwarding supports back-to-back execution of dependent , reducing in general-purpose workloads. Performance in general-purpose computing is often quantified by throughput metrics like instructions per cycle (IPC), which measures the average number of instructions completed per clock cycle, reflecting ALU utilization and pipeline efficiency. In integer-dominated benchmarks, superscalar CPUs achieve IPC values ranging from 1 to 4, constrained by ALU bandwidth and dependency chains, with forwarding enhancements boosting effective throughput by 3-7% in out-of-order execution scenarios. These metrics underscore the ALU's impact on overall system responsiveness for everyday computational tasks.

Specialized Arithmetic Tasks

In multi-precision arithmetic, ALUs are often cascaded to support operations on big integers larger than the native word size, with carry signals chained between units to propagate results across multiple stages. For instance, a 128-bit can be achieved by linking four 32-bit ALUs, where the carry-out from one ALU serves as the carry-in to the next, enabling seamless handling of while minimizing hardware redundancy. This approach is essential in cryptographic applications and scientific computing, where operands exceed standard 64-bit limits, and carry chaining ensures correct propagation without intermediate storage overhead. Fixed-point arithmetic adapts the ALU for representing fractional values with a fixed point position, typically aligning operands by shifting to match the point before or . In , the operation proceeds as after , with the result retaining the predefined point; scaling factors may be applied to prevent by adjusting the point position in software or hardware. follows similarly, using . detection is critical and occurs if a carry propagates across the point into the portion, potentially invalidating the fractional result. A basic fixed-point is expressed as: \text{result} = A + B where A and B are aligned fixed-point numbers, and overflow is flagged if the carry extends beyond the integer bits. Beyond basic operations, ALUs facilitate complex tasks like multiplication and division through algorithmic implementations relying on shifts and adds. Booth's multiplication algorithm, introduced in 1951, efficiently handles signed binary numbers by examining multiplier bits in pairs or triplets, replacing strings of ones with subtract-and-shift sequences to reduce add operations. This method uses the ALU's shifter and adder iteratively, achieving up to 50% fewer additions compared to standard shift-and-add for certain patterns. For division approximations, non-restoring algorithms employ successive shifts and conditional adds/subtracts to compute quotients without restoration steps, iterating through dividend bits while using the ALU for remainder updates. These techniques extend ALU utility for high-precision tasks in embedded systems and digital signal processing, where full hardware dividers are cost-prohibitive.

Use in Graphics and Vector Processing

In vector processing, arithmetic logic units (ALUs) are extended into multiple lanes to handle packed formats, enabling instructions to perform operations across several elements simultaneously. For instance, Intel's (SSE) and (AVX) in x86 processors incorporate vector ALUs that process 128-bit or 256-bit registers, allowing operations like four -precision floating-point additions in a single instruction. These SIMD units replicate scalar ALU functionality across lanes, such as executing packed multiplies or adds on arrays of values, which accelerates -parallel tasks in scientific computing and multimedia processing. further expands this to 512-bit vectors with up to 16 lanes for 32-bit floats, enhancing throughput for vectorized workloads. In graphics processing units (GPUs), ALUs are deployed in vast arrays within cores to support massively parallel computations for rendering pipelines. NVIDIA's GTX 280, for example, features 30 cores with 8 ALUs each, totaling 240 ALUs operating at 1.3 GHz to deliver 933 GFLOPS for fragment processing. Similarly, AMD's HD 4870 includes 10 cores with 80 ALUs per core, emphasizing SIMD widths of 64 threads to handle and operations concurrently. These ALUs execute instructions in SIMT () fashion, where warps of 32 threads share , allowing thousands of ALUs across the GPU to process independent fragments or vertices in parallel for high-resolution graphics. Graphics tasks heavily rely on these ALUs for core rendering operations, such as and calculations. In , ALUs perform bit shifts for address calculations and multiplies for of values, blending samples from texture memory to apply surface details without fixed-function dominance. Lighting computations, often in fragment shaders, use ALU multiplies for dot products in models like and adds for accumulating contributions from multiple light sources, enabling realistic illumination effects across millions of pixels. The evolution of ALUs in GPUs has shifted from scalar designs to highly parallel architectures, driven by unified shader models in NVIDIA and AMD hardware. Early NVIDIA GPUs like the G80 (2006) introduced scalar ALUs in place of vector units, with 128 CUDA cores per chip enabling flexible execution of vertex and pixel shaders. By the Fermi architecture (2010), this expanded to 512 CUDA cores with dedicated integer and floating-point ALUs per core, supporting IEEE-compliant operations for broader parallelism. AMD followed a similar path, transitioning from scalar ALUs in the 2004 Xenos GPU (96 calculations per cycle) to VLIW-based unified shaders in the 2007 RV600 series, where clusters of five stream processors executed SIMD instructions for enhanced graphics throughput. Modern iterations, such as NVIDIA's Ampere with 108 streaming multiprocessors containing 64 FP32 cores each, scale to thousands of ALUs for vectorized graphics and compute, achieving teraflop-scale performance.

Historical Development

Early Concepts and Inventions

The origins of the arithmetic logic unit (ALU) trace back to mechanical precursors designed for automated arithmetic computations. In the 1820s, English mathematician conceived , a mechanical device intended to calculate mathematical tables through the method of finite differences, relying exclusively on repeated operations to avoid the complexities of and in mechanical form. This machine represented an early effort to mechanize arithmetic, using gears and levers to perform sequential additions that could generate polynomial values up to the seventh degree with 31-digit precision, though it was never fully constructed during Babbage's lifetime. Babbage's work laid conceptual groundwork for separating computational mechanisms from human calculation, influencing later designs by emphasizing hardware. The transition to electronic arithmetic began in the 1940s with the development of vacuum-tube-based computers, marking the first practical implementations of electronic adders and logic units. The (Electronic Numerical Integrator and Computer), completed in 1945 and designed by and at the , was the first general-purpose electronic digital computer and featured 20 accumulators that performed addition and subtraction using approximately 18,000 vacuum tubes for high-speed arithmetic operations. These accumulators functioned as early arithmetic units, capable of adding 10-digit numbers in a few thousandths of a second, though reconfiguration for different operations required manual rewiring, highlighting the limitations of pre-programmable designs. Eckert's engineering contributions were pivotal in scaling vacuum-tube technology for reliable arithmetic, enabling to compute artillery firing tables for the U.S. Army. A seminal advancement in ALU conceptualization came from John von Neumann's 1945 proposal for the (Electronic Discrete Variable Automatic Computer), which formalized the idea of a dedicated central arithmetic unit within a stored-program architecture. In his "First Draft of a Report on the EDVAC," von Neumann outlined a single arithmetic organ to handle all basic operations—addition, subtraction, multiplication, and division—using binary representation and vacuum tubes, integrated with a for sequencing. This design shifted arithmetic hardware from ad-hoc accumulators to a unified, programmable module, emphasizing efficiency through serial processing and a 32-bit word length. Von Neumann's framework, developed during meetings at the Moore School of Electrical Engineering, influenced subsequent machines by prioritizing a centralized ALU for both arithmetic and logical tasks. By the early 1950s, these ideas materialized in commercial systems like the , delivered in 1951 by Eckert and Mauchly's company to the U.S. Census Bureau. The incorporated a using representation and vacuum tubes for floating-point operations on 72-bit words (including sign, exponent, and ), supporting , , , and division at speeds on the order of hundreds of microseconds per . This drew on principles while adapting to formats for business applications, featuring input with error checking, and represented the first commercially available electronic computer with an integrated ALU-like component for general tasks. Eckert's role extended from to UNIVAC, where he refined vacuum-tube circuitry for more reliable and versatile processing.

Evolution in Modern Processors

The evolution of the arithmetic logic unit (ALU) in modern processors began in the 1970s with the advent of microprocessors, marking a shift from discrete components to on-chip integration. The , released in 1971, featured the first commercially available 4-bit ALU on a single chip, capable of performing basic arithmetic operations such as and , as well as logical operations including , and NOT. This ALU processed 4-bit data words and was integral to the 4004's role as a complete (CPU), enabling programmable computations for applications like calculators. Its design laid the foundation for scaling ALU complexity within microprocessors, transitioning from specialized devices to general-purpose computing elements. By the 1980s and 1990s, ALU designs advanced to support wider data paths and faster arithmetic, driven by the demand for personal computing. The , introduced in 1978, incorporated a 16-bit ALU that handled integer arithmetic and logic operations using a Manchester carry chain for efficient carry propagation, reducing delays compared to simple ripple-carry adders. This architecture supported a 16-bit data bus and was pivotal in the x86 family, enabling broader memory addressing through a 20-bit bus. In the mid-1990s, the Intel Pentium processor extended this to a 32-bit ALU, employing a parallel prefix adder—a variant of carry-lookahead logic—to generate carries more rapidly across bits, significantly improving and speeds for and scientific workloads. These enhancements allowed ALUs to operate at clock speeds exceeding 100 MHz, facilitating the rise of 32-bit operating systems and applications. Entering the 2000s, ALU evolution incorporated parallelism through (SIMD) extensions, augmenting scalar ALUs with vector processing capabilities to handle and data-intensive tasks efficiently. Intel's MMX instructions, introduced in 1996 with the processor, repurposed floating-point registers for 64-bit SIMD operations, effectively extending the ALU for parallel arithmetic on packed data. Subsequent extensions like (1999) and AVX (2011) further widened vector widths to 128 bits and 256 bits, respectively, integrating dedicated vector ALUs that performed simultaneous operations on multiple elements, such as fused multiply-add for graphics and . Concurrently, in processors like the series, starting from 2006, utilized multiple ALUs per core—typically 3-4 execution units—to dispatch and complete independent arithmetic instructions dynamically, maximizing throughput by reordering operations as dependencies resolved. This combination enabled modern CPUs to sustain several ALU operations per cycle, with metrics showing up to four additions dispatched across ports in high-performance cores. In recent years up to 2025, ALU designs in AI accelerators have shifted toward custom operations optimized for , diverging from general-purpose ALUs. Google's (TPUs), evolving through versions like TPU v5e and v5p in 2023, incorporate specialized units in systolic arrays for high-throughput matrix multiplications and activations, supporting bfloat16 and int8 formats with custom fused operations that provide up to 2.5x higher throughput per dollar compared to TPU v4. In 2025, Google introduced the TPU, its seventh-generation model, offering more than 4x performance improvement over predecessors for AI inference tasks. These units handle tensor natively, bypassing traditional ALU limitations for scalar processing, and integrate with multi-core architectures for scalable AI training. Similarly, neural processing units (NPUs) in processors like Intel's Lunar Lake (2024) feature dedicated ALUs for low-precision operations, enabling on-device AI acceleration while maintaining compatibility with x86 SIMD extensions.

References

  1. [1]
    What is an arithmetic logic unit (ALU) and how does it work?
    May 16, 2025 · An arithmetic logic unit (ALU) is a part of a central processing unit (CPU) that carries out arithmetic and logic operations.
  2. [2]
    What Is an Arithmetic Logic Unit (ALU)? 7 Key Components
    Apr 24, 2023 · ALU is a circuit in the CPU which performs mathematical and logical operations using electrical signals in 0s and 1s.
  3. [3]
    ALU Functions and Bus Organization - GeeksforGeeks
    Oct 13, 2025 · Arithmetic Logic Unit (ALU)​​ The ALU is a digital circuit within the CPU that performs all arithmetic and logical operations. It takes input ...
  4. [4]
    5.2. The von Neumann Architecture - Dive Into Systems
    The processing unit of the von Neumann machine consists of two parts. The first is the arithmetic/logic unit (ALU), which performs mathematical operations such ...
  5. [5]
    [PDF] Von Neumann Computers 1 Introduction - Purdue Engineering
    Jan 30, 1998 · The ALU combines and transforms data using arithmetic operations, such as addition, subtraction, multiplication, and division, and logical.
  6. [6]
    [PDF] ARCHITECTURE BASICS - Milwaukee School of Engineering
    The arithmetic and logic unit is the modern version of von Neumann's central arithmetic part. The ALU completes arithmetic and bitwise-logic operations on two n ...
  7. [7]
    Arithmetic Logic Unit: Functions & Operations - StudySmarter
    Aug 7, 2023 · The Arithmetic Logic Unit (ALU) is a crucial component of a computer's central processing unit (CPU), responsible for performing mathematical ...Arithmetic Logic Unit Explained · Arithmetic Logic Unit Functions<|control11|><|separator|>
  8. [8]
    Arithmetic Logic Unit in Digital Electronics - Tutorials Point
    ALU is basically a combination logic circuit that can perform arithmetic and logical operation on digital data (data in binary format).
  9. [9]
    Arithmetic Logic Unit | ALU Definition, Function & Operation - Lesson
    The function of an ALU is to take binary inputs, execute the operation, and create, store, and distribute binary output. ALUs make arithmetic and logical ...What is ALU? · What does the ALU do? · Function of ALU · Applications of ALU
  10. [10]
  11. [11]
    CS 240 Lab 4
    An Arithmetic Logic Unit (ALU) is a combinational circuit used to perform all the arithmetic and logical operations for a computer processor, and can be built ...
  12. [12]
    How The Computer Works: The CPU and Memory
    The arithmetic/logic unit (ALU) contains the electronic circuitry that executes all arithmetic and logical operations. The arithmetic/logic unit can perform ...
  13. [13]
    Design and Simulation of Arithmetic Logic Unit (Theory)
    Arithmetic Logic Unit (ALU) is a critical component of a microprocessor and is the core component of central processing unit. Fig.1 Central Processing Unit (CPU).Missing: definition | Show results with:definition
  14. [14]
    Components of the CPU - Dr. Mike Murphy
    Mar 29, 2022 · The Arithmetic Logic Unit (ALU) is responsible for performing basic calculations, implementing the CA part of the von Neumann Architecture.
  15. [15]
    Von Neumann Architecture - Kalamazoo College
    Arithmetic Logic Unit (ALU); Set of registers; Control unit that reads in the next instruction, parses it, and controls what happens in the ALU and registers.
  16. [16]
    Organization of Computer Systems: Processor & Datapath - UF CISE
    Result from ALU is applied as an address to the data memory. Data retrieved from the memory unit is written into the register file, where the register index is ...<|control11|><|separator|>
  17. [17]
    Datapath – Clayton Cafiero - University of Vermont
    Oct 15, 2025 · The arithmetic logic unit (ALU) performs: ... The ALU receives its operands from the register file, performs the computation, and returns the ...
  18. [18]
    [PDF] 16.1 / micro-operations 577
    A control signal from the control unit tem- porarily opens the gate to let data pass. • ALU: The control unit controls the operation of the ALU by a set of ...
  19. [19]
    [PDF] Datapath and Control (Chapter 4) - Auburn University
    Control: Datapath for each step is set up by control signals that set up dataflow directions on communication buses and select ALU and memory functions. ...Missing: interaction | Show results with:interaction
  20. [20]
    5.6. The Processor's Execution of Program Instructions
    After the Decode stage determines the operation to perform and the operand sources, the ALU performs the operation in the next stage, the Execution stage. The ...
  21. [21]
    CS3130: Processors
    Fetch, reads an instruction from memory; Decode, retrieves values from registers; Execute, uses the ALU; Memory, reads from or writes to one address of memory ...
  22. [22]
    [PDF] INSTRUCTION SETS - Milwaukee School of Engineering
    CISC machines have these general characteristics: • The most important identifying characteristic is arithmetic instructions that can access both ALU registers ...Missing: versus | Show results with:versus
  23. [23]
    [PDF] Performs arithmetic and logic operations on
    ALU Inputs and Outputs. Integer Representation. • We have the smallest possible alphabet: the symbols 0 & 1 represent everything. • No minus sign. • No period.
  24. [24]
    [PDF] The Arithmetic/Logic Unit - UCSB ECE
    Computer Architecture, The Arithmetic/Logic Unit. Slide 47. An ALU for. MiniMIPS. Figure 10.19 A multifunction ALU with 8 control signals (2 for function class ...
  25. [25]
    Chapter 5: The Processor: Datapath and Control
    No readable text found in the HTML.<|separator|>
  26. [26]
    [PDF] Control Logic for the Single-Cycle CPU
    ALU control input lw. 00 load word xxxxxx add. 010 sw. 00 store word xxxxxx add. 010 beq. 01 branch eq xxxxxx subtract 110. R-type. 10 add. 100000.
  27. [27]
    [PDF] Control Overview - cs.wisc.edu
    ALU-ctrl = f(opcode, function). Page 3. CS/ECE 552 Lecture Notes: Chapter 5. 5 ... Control Signals Needed (Fig. 5.19). PC. Instruction memory. Read address.
  28. [28]
    [PDF] CS/ECE 250: Computer Architecture Basics of Logic Design: ALU ...
    Sep 10, 2020 · CS/ECE 250: Computer Architecture. Basics of Logic Design: ALU ... − If no enable signal shown, implies always enabled. • Get output ...
  29. [29]
    Control Signal - CS2100 - NUS Computing
    The control signals are generated based on the instruction to be executed. This can be found by looking at the opcode field.
  30. [30]
    13.1 Annotated Slides | Computation Structures
    The ALUFN control signals tell the ALU what operation to perform. These control signals are determined by control logic from the 6-bit opcode field. For ...<|separator|>
  31. [31]
    Status Register - an overview | ScienceDirect Topics
    Overflow Flag (OF) Set if the result of the instruction overflowed. Parity Flag (PF) Set if the result has an even number of bits set. Carry Flag (CF) Used for ...
  32. [32]
    [PDF] CHAPTER SIXTEEN - Intel 80x86 Base Architecture
    The flags of the 80x86 processor are divided into two categories: control flags and status flags. The control flags are modified by the software to change ...
  33. [33]
    Condition Codes 1: Condition Flags and Codes - Arm Developer
    Sep 11, 2013 · C : Carry (or Unsigned Overflow)​​ The C flag is set if the result of an unsigned operation overflows the 32-bit result register. This bit can be ...Missing: ALU | Show results with:ALU
  34. [34]
    Two's Complement Overflow Rules
    The rules for detecting overflow in a two's complement sum are simple: If the sum of two positive numbers yields a negative result, the sum has overflowed.
  35. [35]
    Calculating the Overflow Flag in an ALU
    Dec 30, 2015 · Overflow occurs if the addition of two positive numbers gives a negative number and if the addition of two negative numbers gives a positive.
  36. [36]
    Implementation of an ALU using modified carry select adder for low ...
    In digital computer, an Arithmetic logic unit (ALU) is a powerful combinational circuit that executes arithmetic and logical functions.
  37. [37]
    An Optimization Design Approach for Arithmetic Logic Unit
    An arithmetic logic unit (ALU) is a combination of various digital circuits merged together to execute data processing instruction (i.e. arithmetic ...
  38. [38]
    [PDF] 6.2: Sequential Circuits - cs.Princeton
    Arithmetic Logic Unit. TOY ALU. □. Big combinational circuit. □. 16-bit bus. □. Add, subtract, and, xor, shift left, shift right, copy input 2. ALU select. 16.<|control11|><|separator|>
  39. [39]
    [PDF] Building an ALU (Part 1): - Publish
    These generally control how data flows and what operations are performed. ▫ E.g., the SUB signal. ... Selecting the desired logical operation. ▫We need a ...
  40. [40]
  41. [41]
    [PDF] 8-Bit Arithmetic Logic Unit (ALU) PURPOSE - University of Florida
    Oct 8, 2004 · The register should be synchronously loadable from its 8-bit input d, on the rising edge of the clock. Simulate the register design using a ...
  42. [42]
    [PDF] CS240 Laboratory 4 ALU and Sequential/Memory Circuits Arithmetic ...
    To synchronize when the latch changes state, add a clock input: In a clocked latch, whenever the clock is high, the outputs/state of the latch can change.
  43. [43]
    [PDF] 410 Lab Assignment
    In this project, the register file and ALU/shifter will be synchronized by two non- overlapping clock phases that determine when data is latched into the ...Missing: synchronous clocked stabilization
  44. [44]
    [PDF] Exceptions and Interrupts
    Check for invalid opcode/function field values. ○. ALU modified to detect overflow. ○. Exception handling address input to PC multiplexer. ○. Control signals ...
  45. [45]
    [PDF] ECE 250 / CS 250 Introduction to Computer Architecture Exceptions ...
    ▫ Detect unknown opcode. • Arithmetic overflow. ▫ Add logic in the ALU to detect overflow. ▫ Provide overflow signal as ALU output. • Unaligned access. ▫ Add ...
  46. [46]
    [PDF] Arithmetic And Logic Unit Alu
    Based on control signals from the control unit, multiplexers choose between different inputs and direct the output accordingly. This selection mechanism allows ...
  47. [47]
    [PDF] design and implementation of an alu using a decoder for operation ...
    Abstract. This paper presents the design of an Arithmetic Logic Unit (ALU) using a decoder to select the operation based on the control signals.
  48. [48]
    [PDF] Lecture 3 Control Unit, ALU, and Memory
    Three lines are used to select the ALU's function via a decoder (which is not bit sliced of course). Notice that all the logic is combinatorial. The speed of ...
  49. [49]
    [PDF] Design of 4-bit Arithmetic and Logic Unit - GW Engineering
    have extra control circuits or components to control the data flow so that the correct operation of the circuit is always guaranteed. The core of the module ...
  50. [50]
    [PDF] CS240 Laboratory 4 ALU and Sequential/Memory Circuits Arithmetic ...
    Invert A is used to complement the input A. Negate B/Carry in used to complement input B for logical operations, and as a carry-in when addition is performed.
  51. [51]
    [PDF] The Multiplexor Different Implementations Building a 32 bit ALU
    • A Ripple carry ALU. • Two bits decide operation. – Add/Sub. – AND. – OR. – LESS. • 1 bit decide add/sub operation. • A carry in bit. • Bit 31 generates ...
  52. [52]
    [PDF] ARITHMETIC COMBINATIONAL MODULES AND NETWORKS
    SPECIFICATION OF ADDER MODULES FOR POSITIVE INTEGERS. • HALF-ADDER AND FULL-ADDER MODULES. • CARRY-RIPPLE AND CARRY-LOOKAHEAD ADDER MODULES.
  53. [53]
    [PDF] Basic Arithmetic and the ALU - cs.wisc.edu
    • Add/Sub ALU. • full adder, ripple carry, subtraction, together. • Carry-Lookahead addition, etc. • Logical operations. • and, or, xor, nor, shifts - barrel ...
  54. [54]
    [PDF] CS 140 Lecture 6
    The carry-lookahead adder has 4-bit blocks. Assume that each two-input gate delay is 100 ps and the full adder delay is 300 ps. Adder Delay ...
  55. [55]
    [PDF] Lecture 8:
    Digital Design and Computer Architecture: ARM® Edition © 2015. • Carry in ... ALU with Status Flags: Negative. N = 1 if: Result is negative. So, N is ...
  56. [56]
    [PDF] Chapter 5: Adders
    Sep 11, 2024 · An N-bit carry-lookahead adder is generally much faster than a ripple-carry adder for N > 16 ... ALU with Status Flags: Carry. C = 1 if: Cout ...
  57. [57]
    [PDF] Subtraction: Addition's Tricky Pal A 16-bit ALU This Unit
    How to subtract using an adder? • sub A, B = add A, -B. • Negate B before adding (fast negation trick: –B = ...
  58. [58]
    [PDF] Lecture 4 Arithmetic-Logic Unit - Semantic Scholar
    Addition and Subtraction. ❑ Normal binary addition circuitry. ❑ Take two's complement of subtrahend and add to minuend. i.e. a - b = a + (-b). ❑ Need only ...
  59. [59]
    [PDF] Constructing a Basic Arithmetic Logic Unit
    The arithmetic logic unit (ALU) is the brawn of the computer, the device that per- forms the arithmetic operations like addition and subtraction or logical ...Missing: architecture | Show results with:architecture
  60. [60]
    [PDF] Arithmetic logic UNIT (ALU) design using reconfigurable CMOS logic
    The ALU can perform four arithmetic and four logical operations. Multi-input floating gate (MIFG) transistors have been promising in realizing increased ...
  61. [61]
    [PDF] Arithmetic-Logic Unit (ALU) - Computation Structures Group - MIT
    Feb 10, 2012 · 6.S078 - Computer Architecture: A Constructive Approach ... function Bit#(width) alu(Bit#(width) a,. Bit#(width) b, AluFunc op);. Bit ...Missing: definition | Show results with:definition
  62. [62]
    Binary Arithmetic
    Jan 31, 2016 · multiplication is repeated addition; division is repeated subtraction. Binary addition. To add in binary, we just remember that we only have 0 ...
  63. [63]
    [PDF] Arithmetic And Logic In Computer Systems Mi Lu
    Bitwise operations manipulate individual bits within binary representations, allowing efficient data processing and manipulation, such as masking, toggling ...
  64. [64]
    Logic Gates - Building an ALU
    1 Introduction. The goal of this tutorial is to understand the basics of building complex circuit from simple AND, OR, NOT and XOR logical gates.Missing: combinational | Show results with:combinational
  65. [65]
    CS3410 Spring 2012 Lab 1 - Cornell: Computer Science
    Feb 6, 2023 · The logical and (&), or (|), xor (^), nor, and complement (~) operators are all bit-wise. Don't duplicate components. Your ALU should use your ...
  66. [66]
    Shift Operation - an overview | ScienceDirect Topics
    We refer to both shift and rotate generically as shift operations. ARM shift operations are LSL (logical shift left), LSR (logical shift right), ASR (arithmetic ...
  67. [67]
    2.3. Arithmetic Logic Unit - Intel
    The ALU supports shift and rotate operations ... The ALU supports arithmetic shift right and logical shift right/left. The ALU supports rotate left/right.
  68. [68]
    Organization of Computer Systems: § 3: Computer Arithmetic
    3.2.​​ In order to implement a shifter external to the ALU, we consider the design of a barrel shifter, shown schematically in Figure 3.13. Here, the closed ...
  69. [69]
    [PDF] Design alternatives for barrel shifters - Princeton University
    The logical right shifter can be extended to also perform shift right arithmetic and rotate right operations by adding additional multiplexors. This approach ...Missing: explanation | Show results with:explanation
  70. [70]
    22C:60 Notes, Chapter 8 - University of Iowa
    We now have the parts we need to build a simple arithmetic logic unit that combines an adder-subtractor with three simple logic gates using a multiplexer.
  71. [71]
    [PDF] Combinational Circuits | CS 261 Fall 2017 - Computer Science - JMU
    ○ Combine adders and multiplexors to make arithmetic/logic units. ○ Combine flip-flops to make register files and memory. Basic Arithmetic Logic Unit (ALU).
  72. [72]
    Arithmetic Logic Unit for the BOMB!
    The arithmetic logic unit performs six functions - add, subtract, logical AND, logical OR, shift left and shift right on 4-bit two's complement binary numbers.
  73. [73]
    [PDF] Arithmetic and ALU Design Shifts Rotations Barrel Shifter
    Control algorithm: repeat 8 times (not 16!) • Based on 3b groups, add/subtract shifted/unshifted multiplicand. • Shift product/multiplier right by 2.Missing: operations | Show results with:operations
  74. [74]
    [PDF] Design of a 4 bit Arithmetic and Logical unit with Low Power and ...
    Mar 30, 2021 · Abstract: In this presented work we designed the 4- bit. Arithmetic & Logical Unit (ALU) by using the different modules.
  75. [75]
    [PDF] Lecture 7: Arithmetic Logic Unit - UMBC
    1-bit ALUs, using Carry In and. Carry Out lines. • Chain Carry Out from one adder to Carry In of next adder (a ripple carry adder). • Slow due to gate ...
  76. [76]
    [PDF] cG 2018 Bhargava Reddy Gopireddy - The i-acoma group at UIUC
    Despite the slowdown caused, pipelined ALU designs have been employed in commercial microprocessors since Alpha 21064 to reach high frequencies. Therefore ...
  77. [77]
    [PDF] The Microarchitecture of Superscalar Processors - cs.wisc.edu
    Aug 20, 1995 · Superscalar processors execute multiple instructions per clock cycle by exploiting instruction-level parallelism, fetching and decoding ...
  78. [78]
    [PDF] x86 Instruction Set
    Assume 0x0201 is machine code for an ADD instruction of R2. = R0 + R1. • Control Logic will… – select the registers (R0 and R1). – tell the ALU to add. – select ...
  79. [79]
    Decision-Making in Assembly Language - UMBC
    Comparing numbers. The cmp instruction has two operands: cmp reg/mem, reg/mem/constant. The computer will perform a subtraction of operand2 from operand1 ...
  80. [80]
    [PDF] Lecture 17: - ARM Assembly Language
    • Hardware to decode and execute instructions kept simple, small, and fast ... • Method 1: Compare instruction: CMP. Example: CMP R5, R6. ▫ Performs: R5 ...
  81. [81]
    15. Inside a Modern CPU - University of Iowa
    The ALU/MA stage, as digital logic​​ Both a and c depend on whether the instruction is a memory reference instruction or an arithmetic instruction. Control input ...
  82. [82]
    Conditional Instructions – ECE353
    Conditional instructions allow us to implement high level language constructs like if/else and for loops.<|separator|>
  83. [83]
    Ramping Up Open-Source RISC-V Cores: Assessing the Energy ...
    Jul 4, 2025 · ALU-to-ALU Operand Forwarding: Lightweight operand forwarding was implemented for scenarios where two ALU instructions are issued in the ...
  84. [84]
    A Metric-Guided Method for Discovering Impactful Features and ...
    IPC —Instructions Per Cycle. Useful performance metric for comparing two microarchitectures at iso-frequency. FLOPC —Arithmetic FLoating-point OPerations ...
  85. [85]
    Arithmetic, computer - ACM Digital Library
    Fixed-point arithmetic is done essentially like ordinary binary arithmetic, except for the restriction that nega- tive numbers are generally stored in some ...
  86. [86]
    SIGNED BINARY MULTIPLICATION TECHNIQUE - Oxford Academic
    A technique is described whereby binary numbers of either sign may be multiplied together by a uniform process which is independent of any foreknowledge of the ...
  87. [87]
    (PDF) An Algorithm for Non-Restoring Division - ResearchGate
    An Algorithm for Non-Restoring Division. May 1977. Authors: Sugata Sanyal at University of Louisiana at Lafayette.
  88. [88]
  89. [89]
    [PDF] Introduction to Intel® Advanced Vector Extensions - | HPC @ LLNL
    May 23, 2011 · At the lowest programming level, most common x86 assemblers now support Intel® AVX, FMA,. AES, and the VPCLMULQDQ instructions, including ...
  90. [90]
    [PDF] A closer look at GPUs - Stanford Computer Graphics Laboratory
    Processing Resources. A large fraction of a GPU's resources exist within programmable processing cores responsible for executing shader functions. While ...
  91. [91]
    [PDF] From Shader Code to a Teraflop: How Shader Cores Work
    Part 1: throughput processing. • Three key concepts behind how modern. GPU processing cores run code. • Knowing these concepts will help you:.
  92. [92]
    [PDF] FermiTM - NVIDIA
    Oct 4, 2009 · The Fermi architecture is the most significant leap forward in GPU architecture since the original G80. G80 was our initial vision of what a ...
  93. [93]
    [PDF] NVIDIA A100 Tensor Core GPU Architecture
    The diversity of compute-intensive applications running in modern cloud data centers has driven the explosion of NVIDIA GPU-accelerated cloud computing.Missing: ALU evolution
  94. [94]
    AMD's Unified Shader GPU History | IEEE Computer Society
    May 3, 2023 · The GPU's ALUs were 32-bit IEEE 754 floating-point compliant (with typical graphics simplifications of rounding modes), denormalized numbers ( ...
  95. [95]
    Difference Engines | National Museum of American History
    In the early 1800s, the English mathematician Charles Babbage proposed a machine called a difference engine that would compute and print automatically a large ...Missing: arithmetic | Show results with:arithmetic
  96. [96]
    [PDF] Difference Engine - cs.Princeton
    Jan 21, 2007 · Babbage's design could evaluate 7th order polynomials to 31 digits of accuracy. I set out to build a working. Difference Engine using standard ...
  97. [97]
    [PDF] Charles Babbage and his Inventions
    For each cycle of the machine, it computes f(x+1) given f(x) as follows: Recall: Δf(x) = f(x+1) – f(x) or: f(x+1) = f(x) + Δf(x). So the machine adds the Δf(x) ...
  98. [98]
    ENIAC - Penn Engineering
    Mauchly was very much the visionary of the ENIAC's use of mechanical and vacuum tube technologies. Eckert was the engineer of the project who solved its ...Missing: adders | Show results with:adders
  99. [99]
    J. Presper Eckert - eniac - National Inventors Hall of Fame®
    Oct 31, 2025 · J. Presper Eckert was co-inventor of ENIAC, introduced to the public at the University of Pennsylvania in 1946.Missing: 1945 adders
  100. [100]
    [PDF] First draft report on the EDVAC by John von Neumann - MIT
    Turing, "Proposals for Development in the Mathematics. Division of an Automatic Computing Engine (ACE)," presented to the National Physical Laboratory, 1945.
  101. [101]
  102. [102]
    [PDF] History of Electronic Computers
    ▷ arithmetic unit: binary, floating point, word length 22-bits. (sign, 7-bit ... UNIVAC (1951). (taken over by Sperry. Rand Co; for several years was ...
  103. [103]
    History Of Computers 1937-2011
    3 UNIVAC 1. The UNIVAC 1 (Universal Automatic Computer 1) was the first commercial computer produced in the United States. It was designed by J. Presper ...
  104. [104]
    The Surprising Story of the First Microprocessors - IEEE Spectrum
    Aug 30, 2016 · The 4-bit 4004 (meaning that it manipulated data words that were only 4 bits wide) is often considered the first microprocessor.
  105. [105]
    Announcing a New Era of Integrated Electronics - Intel
    Intel's 4004 microprocessor began as a contract project for Japanese calculator company Busicom. Intel repurchased the rights to the 4004 from Busicom.Missing: ALU | Show results with:ALU
  106. [106]
    Reverse-engineering the 8086's Arithmetic/Logic Unit from die photos
    Aug 22, 2020 · In this blog post, I reverse-engineer the 8086's ALU and explain how it works. It's more complex than other vintage ALUs that I've studied.
  107. [107]
    Reverse-engineering a carry-lookahead adder in the Pentium
    Jan 18, 2025 · The Pentium's adder implements the carry lookahead in a different way, called the "parallel prefix adder."7 The idea is to produce the propagate ...
  108. [108]
    Intel® Instruction Set Extensions Technology
    Explains Instruction Set Extensions include SSE Streaming SIMD Extensions technologies, including SSE2, SSE3, SSE4, and AVX (Advanced Vector Extensions).
  109. [109]
    Manuals for Intel® 64 and IA-32 Architectures
    ### Summary of Out-of-Order Execution and Multiple Execution Units in Intel Core Processors
  110. [110]
    CPU Metrics Reference - Intel
    This metric represents Core cycles fraction CPU dispatched uops on execution port 1 (ALU). Port 2. Metric Description. This metric represents Core cycles ...
  111. [111]
    Tensor Processing Units (TPUs) - Google Cloud
    Google Cloud TPUs are custom-designed AI accelerators, which are optimized for training and inference of AI models.
  112. [112]