Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Explicitly parallel instruction computing
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Moving beyond VLIW== ''EPIC'' architectures add several features to get around the deficiencies of VLIW: * Each group of multiple software instructions is called a ''bundle''. Each of the bundles has a [[stop bit]] indicating if this set of operations is depended upon by the subsequent bundle. With this capability, future implementations can be built to issue multiple bundles in parallel. The dependency information is calculated by the compiler, so the hardware does not have to perform operand dependency checking. * A software prefetch instruction is used as a type of data prefetch. This prefetch increases the chances for a cache hit for loads, and can indicate the degree of temporal locality needed in various levels of the cache. * A speculative load instruction is used to speculatively load data before it is known whether it will be used (bypassing control dependencies), or whether it will be modified before it is used (bypassing data dependencies). * A check load instruction aids speculative loads by checking whether a speculative load was dependent on a later store, and thus must be reloaded. The ''EPIC'' architecture also includes a ''grab-bag'' of architectural concepts to increase [[Instruction-level_parallelism|''ILP'']]: * [[Branch predication|Predicated execution]] is used to decrease the occurrence of branches and to increase the [[speculative execution]] of instructions. In this feature, branch conditions are converted to predicate registers which are used to kill results of executed instructions from the side of the branch which is not taken. * Delayed exceptions, using a [[Not a thing (computing)|not a thing]] bit within the general purpose registers, allow speculative execution past possible exceptions. * Very large architectural [[register file]]s avoid the need for [[register renaming]]. * Multi-way branch instructions improve branch prediction by combining many alternative branches into one bundle. The [[Itanium]] architecture also added [[Register window|rotating register file]]s, a tool useful for [[software pipelining]] since it avoids having to manually [[Loop unrolling|unroll]] and rename registers.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)