Loop unrolling, the Glossary
Loop unrolling, also known as loop unwinding, is a loop transformation technique that attempts to optimize a program's execution speed at the expense of its binary size, which is an approach known as space–time tradeoff.[1]
Table of Contents
33 relations: Assembly language, Base address, Binary file, Branch predictor, Branch table, C (programming language), Code bloat, Don't repeat yourself, Dot product, Duff's device, Formal verification, IBM System/360, Inline expansion, Instruction-level parallelism, Just-in-time compilation, Linux kernel mailing list, Loop fission and fusion, Loop optimization, Loop splitting, Machine code, Macro (computer science), Michael Abrash, Model checking, Optimizing compiler, Out-of-order execution, Overhead (computing), Parallel computing, Pointer (computer programming), Register renaming, Software pipelining, Space–time tradeoff, XFree86, Z/Architecture.
Assembly language
In computer programming, assembly language (alternatively assembler language or symbolic machine code), often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence between the instructions in the language and the architecture's machine code instructions.
See Loop unrolling and Assembly language
Base address
In computing, a base address is an address serving as a reference point ("base") for other addresses.
See Loop unrolling and Base address
Binary file
A binary file is a computer file that is not a text file.
See Loop unrolling and Binary file
Branch predictor
In computer architecture, a branch predictor is a digital circuit that tries to guess which way a branch (e.g., an if–then–else structure) will go before this is known definitively.
See Loop unrolling and Branch predictor
Branch table
In computer programming, a branch table or jump table is a method of transferring program control (branching) to another part of a program (or a different program that may have been dynamically loaded) using a table of branch or jump instructions.
See Loop unrolling and Branch table
C (programming language)
C (pronounced – like the letter c) is a general-purpose programming language.
See Loop unrolling and C (programming language)
Code bloat
In computer programming, code bloat is the production of program code (source code or machine code) that is perceived as unnecessarily long, slow, or otherwise wasteful of resources.
See Loop unrolling and Code bloat
Don't repeat yourself
"Don't repeat yourself" (DRY) is a principle of software development aimed at reducing repetition of information which is likely to change, replacing it with abstractions that are less likely to change, or using data normalization which avoids redundancy in the first place.
See Loop unrolling and Don't repeat yourself
Dot product
In mathematics, the dot product or scalar productThe term scalar product means literally "product with a scalar as a result".
See Loop unrolling and Dot product
Duff's device
In the C programming language, Duff's device is a way of manually implementing loop unrolling by interleaving two syntactic constructs of C: the - loop and a switch statement.
See Loop unrolling and Duff's device
Formal verification
In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of a system with respect to a certain formal specification or property, using formal methods of mathematics.
See Loop unrolling and Formal verification
IBM System/360
The IBM System/360 (S/360) is a family of mainframe computer systems that was announced by IBM on April 7, 1964, and delivered between 1965 and 1978. It was the first family of computers designed to cover both commercial and scientific applications and a complete range of applications from small to large.
See Loop unrolling and IBM System/360
Inline expansion
In computing, inline expansion, or inlining, is a manual or compiler optimization that replaces a function call site with the body of the called function. Loop unrolling and inline expansion are compiler optimizations.
See Loop unrolling and Inline expansion
Instruction-level parallelism
Instruction-level parallelism (ILP) is the parallel or simultaneous execution of a sequence of instructions in a computer program. Loop unrolling and instruction-level parallelism are parallel computing.
See Loop unrolling and Instruction-level parallelism
Just-in-time compilation
In computing, just-in-time (JIT) compilation (also dynamic translation or run-time compilations) is compilation (of computer code) during execution of a program (at run time) rather than before execution.
See Loop unrolling and Just-in-time compilation
Linux kernel mailing list
The Linux kernel mailing list (LKML) is the main electronic mailing list for Linux kernel development, where the majority of the announcements, discussions, debates, and flame wars over the kernel take place.
See Loop unrolling and Linux kernel mailing list
Loop fission and fusion
In computer science, loop fission (or loop distribution) is a compiler optimization in which a loop is broken into multiple loops over the same index range with each taking only a part of the original loop's body. Loop unrolling and loop fission and fusion are compiler optimizations.
See Loop unrolling and Loop fission and fusion
Loop optimization
In compiler theory, loop optimization is the process of increasing execution speed and reducing the overheads associated with loops. Loop unrolling and loop optimization are compiler optimizations.
See Loop unrolling and Loop optimization
Loop splitting
Loop splitting is a compiler optimization technique. Loop unrolling and Loop splitting are compiler optimizations.
See Loop unrolling and Loop splitting
Machine code
In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU).
See Loop unrolling and Machine code
Macro (computer science)
In computer programming, a macro (short for "macro instruction") is a rule or pattern that specifies how a certain input should be mapped to a replacement output.
See Loop unrolling and Macro (computer science)
Michael Abrash
Michael Abrash is an American programmer and technical writer.
See Loop unrolling and Michael Abrash
Model checking
In computer science, model checking or property checking is a method for checking whether a finite-state model of a system meets a given specification (also known as correctness).
See Loop unrolling and Model checking
Optimizing compiler
An optimizing compiler is a compiler designed to generate code that is optimized in aspects such as minimizing program execution time, memory use, storage size, and power consumption. Loop unrolling and optimizing compiler are compiler optimizations.
See Loop unrolling and Optimizing compiler
Out-of-order execution
In computer engineering, out-of-order execution (or more formally dynamic execution) is a paradigm used in high-performance central processing units to make use of instruction cycles that would otherwise be wasted.
See Loop unrolling and Out-of-order execution
Overhead (computing)
In computer science, overhead is any combination of excess or indirect computation time, memory, bandwidth, or other resources that are required to perform a specific task.
See Loop unrolling and Overhead (computing)
Parallel computing
Parallel computing is a type of computation in which many calculations or processes are carried out simultaneously.
See Loop unrolling and Parallel computing
Pointer (computer programming)
In computer science, a pointer is an object in many programming languages that stores a memory address.
See Loop unrolling and Pointer (computer programming)
Register renaming
In computer architecture, register renaming is a technique that abstracts logical registers from physical registers.
See Loop unrolling and Register renaming
Software pipelining
In computer science, software pipelining is a technique used to optimize loops, in a manner that parallels hardware pipelining. Loop unrolling and software pipelining are compiler optimizations.
See Loop unrolling and Software pipelining
Space–time tradeoff
A space–time trade-off, also known as time–memory trade-off or the algorithmic space-time continuum in computer science is a case where an algorithm or program trades increased space usage with decreased time.
See Loop unrolling and Space–time tradeoff
XFree86
XFree86 is an implementation of the X Window System.
See Loop unrolling and XFree86
Z/Architecture
z/Architecture, initially and briefly called ESA Modal Extensions (ESAME), is IBM's 64-bit complex instruction set computer (CISC) instruction set architecture, implemented by its mainframe computers.
See Loop unrolling and Z/Architecture
References
[1] https://en.wikipedia.org/wiki/Loop_unrolling
Also known as Loop unwinding, Unroll loops, Unrolling the loop.