36:
227:
325:
writes to it) A read after write (RAW) data hazard refers to a situation where an instruction refers to a result that has not yet been calculated or retrieved. This can occur because even though an instruction is executed after a prior instruction, the prior instruction has been processed only partly
487:
Example: A situation in which multiple instructions are ready to enter the execute instruction phase and there is a single ALU (Arithmetic Logic Unit). One solution to such resource hazard is to increase available resources, such as having multiple ports into main memory and multiple ALU (Arithmetic
812:
In the event that a branch causes a pipeline bubble after incorrect instructions have entered the pipeline, care must be taken to prevent any of the wrongly-loaded instructions from having any effect on the processor state excluding energy wasted processing them before they were discovered to be
821:
Memory latency is another factor that designers must attend to, because the delay could reduce performance. Different types of memory have different accessing time to the memory. Thus, by choosing a suitable type of memory, designers can improve the performance of the pipelined data path.
483:
A structural hazard occurs when two (or more) instructions that are already in pipeline need the same resource. The result is that instruction must be executed in series rather than parallel for a portion of pipeline. Structural hazards are sometimes referred to as resource hazards.
152:
when the next instruction cannot execute in the following clock cycle, and can potentially lead to incorrect computation results. Three common types of hazards are data hazards, structural hazards, and control hazards (branching hazards).
193:
in a pipelined processor are performed in several stages, so that at any given time several instructions are being processed in the various stages of the pipeline, such as fetch and execute. There are many different instruction pipeline
496:
Control hazard occurs when the pipeline makes wrong decisions on branch prediction and therefore brings instructions into the pipeline that must subsequently be discarded. The term branch hazard also refers to a control hazard.
553:
occurs when a branch instruction jumps to a new memory location, invalidating all prior stages in the pipeline. These prior stages are cleared, allowing the pipeline to continue at the new instruction indicated by the branch.
546:
s equals the number of stages in the pipeline, the processor has been cleared of all instructions and can proceed free from hazards. All forms of stalling introduce a delay before the processor can resume execution.
720:
This error occurs because i2 reads
Register 1 before i1 has committed/stored the result of its write operation to Register 1. So when i2 is reading the contents of Register 1, register 1 still contains
532:, is a method to preclude data, structural, and branch hazards. As instructions are fetched, control logic determines whether a hazard could/will occur. If this is true, then the control logic inserts
542:
s) into the pipeline. Thus, before the next instruction (which would cause the hazard) executes, the prior one will have had sufficient time to finish and prevent the hazard. If the number of
2183:
260:
Data hazards occur when instructions that exhibit data dependence modify data in different stages of a pipeline. Ignoring potential data hazards can result in
654:
For example, to write the value 3 to register 1, (which already contains a 6), and then add 7 to register 1 and store the result in register 2, i.e.:
1155:
53:
2294:
1477:
1996:
245:
1274:
360:, when operands are fetched for the 2nd operation, the results from the first have not yet been saved, and hence a data dependency occurs.
100:
2153:
1719:
1536:
72:
2507:
758:
The effect is that i2 uses the correct (the more recent) value of
Register 1: the commit/store was made immediately and not pipelined.
1499:
17:
79:
2148:
2220:
2502:
1973:
984:"Design Example of Useful Memory Latency for Developing a Hazard Preventive Pipeline High-Performance Embedded-Microprocessor"
86:
1063:
1040:
2917:
2041:
1304:
1148:
2927:
2068:
765:(ID/EX) stage of the pipeline now has two inputs: the value read from the register specified (in this example, the value
68:
683:
to register 1) does not fully exit the pipeline before i2 starts executing, it means that R1 does not contain the value
1195:
2235:
2063:
2036:
1415:
1086:
119:
620:
The task of removing data dependencies can be delegated to the compiler, which can fill in an appropriate number of
3050:
2613:
1506:
1472:
1467:
1386:
1351:
624:
instructions between dependent instructions to ensure correct operation, or re-order instructions where possible.
3086:
3025:
2922:
2323:
2230:
2031:
1252:
1141:
735:
Forwarding (described below) helps correct such errors by depending on the fact that the output of i1 (which is
2051:
1205:
190:
57:
2225:
2073:
2046:
1907:
1521:
1482:
1339:
2662:
2424:
1900:
1861:
1516:
1511:
1445:
1257:
93:
2289:
1986:
1684:
1381:
1020:
202:. A hazard occurs when two or more of these simultaneous (possibly out of order) instructions conflict.
2939:
2586:
2003:
1494:
1462:
1232:
1220:
1200:
932:
3030:
2993:
2983:
1371:
862:
3045:
2452:
2388:
2365:
2215:
2177:
2013:
1963:
1958:
1435:
1329:
1237:
2998:
2781:
2675:
2639:
2556:
2540:
2382:
2171:
2130:
2118:
1981:
1895:
1816:
1581:
1242:
1185:
133:
46:
752:
there is no wait to commit/store the output of i1 in
Register 1 (in this example, the output is
2804:
2776:
2686:
2651:
2400:
2394:
2376:
2110:
2104:
2008:
1912:
1803:
1742:
1604:
1247:
832:
591:
574:
570:
whenever a read after write (RAW) dependency is encountered, guaranteed to increase latency, or
199:
185:
165:
1104:
957:
2978:
2887:
2633:
2345:
2163:
1922:
1890:
1848:
1760:
1561:
1376:
1366:
1356:
1346:
1316:
1299:
1164:
1074:
867:
794:
3008:
2944:
2530:
2252:
2142:
2089:
1621:
1334:
1190:
1172:
442:
357:
145:
804:
and essentially make educated guesses about which instructions to insert, in which case a
27:
Problems with the instruction pipeline in central processing unit (CPU) microarchitectures
8:
3055:
3040:
2860:
2711:
2693:
2657:
2645:
2299:
2246:
2023:
1939:
1821:
1676:
1571:
1430:
264:(also termed race hazards). There are three situations in which a data hazard can occur:
1123:
2912:
2904:
2756:
2731:
2535:
2410:
1934:
1875:
1755:
1487:
1215:
877:
847:
756:) before making that output available to the subsequent instruction (in this case, i2).
633:
609:
582:
516:
387:) A write after read (WAR) data hazard represents a problem with concurrent execution.
240:
173:
2865:
2832:
2748:
2680:
2581:
2571:
2561:
2492:
2487:
2482:
2405:
2334:
2240:
2200:
1833:
1783:
1733:
1709:
1591:
1531:
1526:
1408:
1324:
1082:
1059:
1036:
872:
837:
801:
613:
235:
195:
149:
3035:
2968:
2954:
2809:
2716:
2670:
2477:
2472:
2467:
2462:
2457:
2447:
2317:
2284:
2195:
2190:
2099:
1951:
1946:
1929:
1917:
1856:
1420:
1398:
1284:
1262:
1180:
1024:
995:
882:
769:
from
Register 1), and the new value of Register 1 (in this example, this value is
417:(i.e., with concurrent execution), it must be ensured that the result of register
2949:
2934:
2882:
2786:
2761:
2598:
2591:
2442:
2437:
2432:
2371:
2279:
2269:
1991:
1826:
1778:
1541:
1425:
1393:
1294:
1289:
1210:
1055:
1032:
842:
216:
3060:
2894:
2877:
2870:
2766:
2623:
2360:
2274:
2205:
1788:
1750:
1699:
1694:
1689:
1403:
1227:
887:
857:
852:
261:
157:
562:
There are several main solutions and algorithms used to resolve data hazards:
3080:
2855:
2771:
1811:
1793:
1586:
1279:
598:
352:, and the second is going to use this value to compute a result for register
169:
1714:
3065:
3003:
2819:
2796:
2608:
2329:
1267:
1000:
983:
491:
2850:
2814:
2525:
2497:
2355:
2210:
1133:
2736:
2726:
2721:
2703:
2603:
2576:
1838:
1671:
1641:
1361:
777:(EX/MEM). Added control logic is used to determine which input to use.
538:
137:
2827:
2824:
2566:
1636:
1614:
348:
The first instruction is calculating a value to be saved in register
35:
2842:
1661:
913:
1651:
1609:
1105:"Automatic Pipelining from Transactional Datapath Specifications"
1666:
1631:
1596:
1079:
Modern
Processor Design: Fundamentals of Superscalar Processors
901:
156:
There are several methods used to deal with hazards, including
2124:
1656:
1626:
2988:
2136:
2056:
1646:
808:
will only be needed in the case of an incorrect prediction
1576:
1566:
687:
when i2 performs its addition. In such an event, i2 adds
675:
Following execution, register 2 should contain the value
605:
is needed only when there is no functional unit available
492:
Control hazards (branch hazards or instruction hazards)
441:) A write after write (WAW) data hazard may occur in a
367:, as it is dependent on the completion of instruction
577:
to potentially prevent the need for pipeline bubbles
780:
60:. Unsourced material may be challenged and removed.
645:In the following examples, computed values are in
437:tries to write an operand before it is written by
383:tries to write a destination before it is read by
1049:
1019:
919:
907:
785:To avoid control hazards microarchitectures can:
3078:
1052:Computer Architecture: A Quantitative Approach
1149:
750:Forwarding applied to the example means that
586:to use data from later stages in the pipeline
616:, allowing continual issuing of instructions
290:Read after read (RAR) is not a hazard case.
2154:Computer performance by orders of magnitude
1072:
234:It has been suggested that this section be
1163:
1156:
1142:
1075:"2.2.3.2 Identication of Pipeline Hazards"
1073:Shen, John P.; Lipasti, Mikko H. (2013) .
793:(discussed above), guaranteed to increase
428:
363:A data dependency occurs with instruction
1050:Patterson, David; Hennessy, John (2011).
999:
739:) can be used by subsequent instructions
374:
312:
286:read after read (RAR), a false dependency
120:Learn how and when to remove this message
425:has had a chance to fetch the operands.
161:
14:
3079:
1121:
747:is committed to/stored in Register 1.
500:
1137:
981:
627:
478:
2125:Floating-point operations per second
863:Classic RISC pipeline § Hazards
773:) which is sent from the next stage
510:
409:In any situation with a chance that
220:
58:adding citations to reliable sources
29:
816:
69:"Hazard" computer architecture
24:
1081:. Waveland Press. pp. 73–78.
25:
3098:
1097:
775:Instruction Execute/Memory Access
649:, while Register numbers are not.
557:
3051:Semiconductor device fabrication
1122:Tulsen, Dean (18 January 2005).
1029:Computer Organization and Design
781:Control hazards (branch hazards)
691:to the old value of register 1 (
225:
34:
3026:History of general-purpose CPUs
1253:Nondeterministic Turing machine
982:Cheng, Ching-Hwa (2012-12-27).
210:
45:needs additional citations for
1206:Deterministic finite automaton
975:
950:
925:
695:), and so register 2 contains
321:tries to read a source before
13:
1:
1997:Simultaneous and heterogenous
920:Patterson & Hennessy 2009
908:Patterson & Hennessy 2009
894:
761:With forwarding enabled, the
594:, the algorithm used can be:
179:
2681:Integrated memory controller
2663:Translation lookaside buffer
1862:Memory dependence prediction
1305:Random-access stored program
1258:Probabilistic Turing machine
763:Instruction Decode/Execution
448:
390:
280:write after write (WAW), an
7:
2137:Synaptic updates per second
933:"Branch Prediction Schemes"
825:
638:
341:<- R5 + R8 i2. R4 <-
274:write after read (WAR), an
251:Proposed since August 2024.
10:
3103:
2541:Heterogeneous architecture
1463:Orthogonal instruction set
1233:Alternating Turing machine
1221:Quantum cellular automaton
1012:
958:"Data and Control Hazards"
631:
514:
505:
329:
293:Consider two instructions
268:read after write (RAW), a
214:
198:, and instructions may be
183:
3031:Microprocessor chronology
3018:
2994:Dynamic frequency scaling
2967:
2903:
2841:
2795:
2747:
2702:
2622:
2549:
2518:
2423:
2344:
2308:
2262:
2162:
2149:Cache performance metrics
2088:
2022:
1972:
1883:
1874:
1847:
1802:
1769:
1741:
1732:
1552:
1455:
1444:
1315:
1171:
18:Write after read (hazard)
3046:Hardware security module
2389:Digital signal processor
2366:Graphics processing unit
2178:Graphics processing unit
679:. However, if i1 (write
205:
2999:Dynamic voltage scaling
2782:Memory address register
2676:Branch target predictor
2640:Address generation unit
2383:Physics processing unit
2172:Central processing unit
2131:Transactions per second
2119:Instructions per second
2042:Array processing (SIMT)
1186:Stored-program computer
467:The write back (WB) of
429:Write after write (WAW)
134:central processing unit
3087:Instruction processing
2805:Hardwired control unit
2687:Memory management unit
2652:Memory management unit
2401:Secure cryptoprocessor
2395:Tensor Processing Unit
2377:Vision processing unit
2111:Cycles per instruction
2105:Instructions per cycle
2052:Associative processing
1743:Instruction pipelining
1165:Processor technologies
833:Feed forward (control)
592:out-of-order execution
575:out-of-order execution
471:must be delayed until
375:Write after read (WAR)
326:through the pipeline.
313:Read after write (RAW)
186:Instruction pipelining
166:out-of-order execution
144:are problems with the
2888:Sum-addressed decoder
2634:Arithmetic logic unit
1761:Classic RISC pipeline
1715:Epiphany architecture
1562:Motorola 68000 series
868:Speculative execution
551:Flushing the pipeline
522:Bubbling the pipeline
421:is not stored before
241:Data dependency#Types
200:executed out-of-order
184:Further information:
164:, and in the case of
3009:Performance per watt
2587:replacement policies
2253:Package on a package
2143:Performance per watt
2047:Pipelined processing
1817:Tomasulo's algorithm
1622:Clipper architecture
1478:Application-specific
1191:Finite-state machine
962:classes.soe.ucsc.edu
813:loaded incorrectly.
475:finishes executing.
443:concurrent execution
160:/pipeline bubbling,
146:instruction pipeline
54:improve this article
3041:Digital electronics
2694:Instruction decoder
2646:Floating-point unit
2300:Soft microprocessor
2247:System in a package
1822:Reservation station
1352:Transport-triggered
1001:10.1155/2013/425105
922:, pp. 335–343.
501:Eliminating hazards
488:Logic Unit) units.
2913:Integrated circuit
2757:Processor register
2411:Baseband processor
1756:Operand forwarding
1216:Cellular automaton
1124:"Pipeline hazards"
878:Branch predication
848:Control dependency
634:Operand forwarding
628:Operand forwarding
610:Tomasulo algorithm
601:, in which case a
583:operand forwarding
517:Bubble (computing)
479:Structural hazards
460:<- R4 + R7 i2.
413:may finish before
398:i1. R4 <- R1 +
309:in program order.
196:microarchitectures
174:Tomasulo algorithm
162:operand forwarding
150:microarchitectures
3074:
3073:
2963:
2962:
2582:Instruction cache
2572:Scratchpad memory
2419:
2418:
2406:Network processor
2335:Network on a chip
2290:Ultra-low-voltage
2241:Multi-chip module
2084:
2083:
1870:
1869:
1857:Branch prediction
1834:Register renaming
1728:
1727:
1710:VISC architecture
1532:Quantum computing
1527:VISC architecture
1409:Secondary storage
1325:Microarchitecture
1285:Register machines
1065:978-0-12-383872-8
1042:978-0-12-374493-7
873:Branch delay slot
838:Register renaming
802:branch prediction
614:register renaming
511:Pipeline bubbling
305:occurring before
282:output dependency
258:
257:
253:
132:In the domain of
130:
129:
122:
104:
16:(Redirected from
3094:
3036:Processor design
2928:Power management
2810:Instruction unit
2671:Branch predictor
2620:
2619:
2318:System on a chip
2260:
2259:
2100:Transistor count
2024:Flynn's taxonomy
1881:
1880:
1739:
1738:
1542:Addressing modes
1453:
1452:
1399:Memory hierarchy
1263:Hypercomputation
1181:Abstract machine
1158:
1151:
1144:
1135:
1134:
1130:
1128:
1118:
1116:
1114:
1109:
1092:
1069:
1054:(5th ed.).
1046:
1031:(4th ed.).
1021:Patterson, David
1006:
1005:
1003:
979:
973:
972:
970:
969:
954:
948:
947:
945:
944:
929:
923:
917:
911:
905:
883:Branch predictor
817:Other techniques
623:
545:
541:
535:
524:, also termed a
474:
470:
440:
436:
424:
420:
416:
412:
386:
382:
370:
366:
356:. However, in a
355:
351:
324:
320:
308:
304:
300:
296:
249:
229:
228:
221:
125:
118:
114:
111:
105:
103:
62:
38:
30:
21:
3102:
3101:
3097:
3096:
3095:
3093:
3092:
3091:
3077:
3076:
3075:
3070:
3056:Tick–tock model
3014:
2970:
2959:
2899:
2883:Address decoder
2837:
2791:
2787:Program counter
2762:Status register
2743:
2698:
2658:Load–store unit
2625:
2618:
2545:
2514:
2415:
2372:Image processor
2347:
2340:
2310:
2304:
2280:Microcontroller
2270:Embedded system
2258:
2158:
2091:
2080:
2018:
1968:
1866:
1843:
1827:Re-order buffer
1798:
1779:Data dependency
1765:
1724:
1554:
1548:
1447:
1446:Instruction set
1440:
1426:Multiprocessing
1394:Cache hierarchy
1387:Register/memory
1311:
1211:Queue automaton
1167:
1162:
1126:
1112:
1110:
1107:
1103:
1100:
1095:
1089:
1066:
1056:Morgan Kaufmann
1043:
1033:Morgan Kaufmann
1015:
1010:
1009:
980:
976:
967:
965:
956:
955:
951:
942:
940:
931:
930:
926:
918:
914:
906:
902:
897:
892:
843:Data dependency
828:
819:
806:pipeline bubble
791:pipeline bubble
783:
718:
699:instead, i.e.:
673:
641:
636:
630:
621:
603:pipeline bubble
590:In the case of
568:pipeline bubble
560:
543:
537:
533:
519:
513:
508:
503:
494:
481:
472:
468:
465:
451:
438:
434:
431:
422:
418:
414:
410:
407:
393:
384:
380:
377:
368:
364:
353:
349:
346:
332:
322:
318:
315:
306:
302:
298:
294:
276:anti-dependency
270:true dependency
262:race conditions
254:
230:
226:
219:
217:Data dependency
213:
208:
188:
182:
172:method and the
158:pipeline stalls
126:
115:
109:
106:
63:
61:
51:
39:
28:
23:
22:
15:
12:
11:
5:
3100:
3090:
3089:
3072:
3071:
3069:
3068:
3063:
3061:Pin grid array
3058:
3053:
3048:
3043:
3038:
3033:
3028:
3022:
3020:
3016:
3015:
3013:
3012:
3006:
3001:
2996:
2991:
2986:
2981:
2975:
2973:
2965:
2964:
2961:
2960:
2958:
2957:
2952:
2947:
2942:
2937:
2932:
2931:
2930:
2925:
2920:
2909:
2907:
2901:
2900:
2898:
2897:
2895:Barrel shifter
2892:
2891:
2890:
2885:
2878:Binary decoder
2875:
2874:
2873:
2863:
2858:
2853:
2847:
2845:
2839:
2838:
2836:
2835:
2830:
2822:
2817:
2812:
2807:
2801:
2799:
2793:
2792:
2790:
2789:
2784:
2779:
2774:
2769:
2767:Stack register
2764:
2759:
2753:
2751:
2745:
2744:
2742:
2741:
2740:
2739:
2734:
2724:
2719:
2714:
2708:
2706:
2700:
2699:
2697:
2696:
2691:
2690:
2689:
2678:
2673:
2668:
2667:
2666:
2660:
2649:
2643:
2637:
2630:
2628:
2617:
2616:
2611:
2606:
2601:
2596:
2595:
2594:
2589:
2584:
2579:
2574:
2569:
2559:
2553:
2551:
2547:
2546:
2544:
2543:
2538:
2533:
2528:
2522:
2520:
2516:
2515:
2513:
2512:
2511:
2510:
2500:
2495:
2490:
2485:
2480:
2475:
2470:
2465:
2460:
2455:
2450:
2445:
2440:
2435:
2429:
2427:
2421:
2420:
2417:
2416:
2414:
2413:
2408:
2403:
2398:
2392:
2386:
2380:
2374:
2369:
2363:
2361:AI accelerator
2358:
2352:
2350:
2342:
2341:
2339:
2338:
2332:
2327:
2324:Multiprocessor
2321:
2314:
2312:
2306:
2305:
2303:
2302:
2297:
2292:
2287:
2282:
2277:
2275:Microprocessor
2272:
2266:
2264:
2263:By application
2257:
2256:
2250:
2244:
2238:
2233:
2228:
2223:
2218:
2213:
2208:
2206:Tile processor
2203:
2198:
2193:
2188:
2187:
2186:
2175:
2168:
2166:
2160:
2159:
2157:
2156:
2151:
2146:
2140:
2134:
2128:
2122:
2116:
2115:
2114:
2102:
2096:
2094:
2086:
2085:
2082:
2081:
2079:
2078:
2077:
2076:
2066:
2061:
2060:
2059:
2054:
2049:
2044:
2034:
2028:
2026:
2020:
2019:
2017:
2016:
2011:
2006:
2001:
2000:
1999:
1994:
1992:Hyperthreading
1984:
1978:
1976:
1974:Multithreading
1970:
1969:
1967:
1966:
1961:
1956:
1955:
1954:
1944:
1943:
1942:
1937:
1927:
1926:
1925:
1920:
1910:
1905:
1904:
1903:
1898:
1887:
1885:
1878:
1872:
1871:
1868:
1867:
1865:
1864:
1859:
1853:
1851:
1845:
1844:
1842:
1841:
1836:
1831:
1830:
1829:
1824:
1814:
1808:
1806:
1800:
1799:
1797:
1796:
1791:
1786:
1781:
1775:
1773:
1767:
1766:
1764:
1763:
1758:
1753:
1751:Pipeline stall
1747:
1745:
1736:
1730:
1729:
1726:
1725:
1723:
1722:
1717:
1712:
1707:
1704:
1703:
1702:
1700:z/Architecture
1697:
1692:
1687:
1679:
1674:
1669:
1664:
1659:
1654:
1649:
1644:
1639:
1634:
1629:
1624:
1619:
1618:
1617:
1612:
1607:
1599:
1594:
1589:
1584:
1579:
1574:
1569:
1564:
1558:
1556:
1550:
1549:
1547:
1546:
1545:
1544:
1534:
1529:
1524:
1519:
1514:
1509:
1504:
1503:
1502:
1492:
1491:
1490:
1480:
1475:
1470:
1465:
1459:
1457:
1450:
1442:
1441:
1439:
1438:
1433:
1428:
1423:
1418:
1413:
1412:
1411:
1406:
1404:Virtual memory
1396:
1391:
1390:
1389:
1384:
1379:
1374:
1364:
1359:
1354:
1349:
1344:
1343:
1342:
1332:
1327:
1321:
1319:
1313:
1312:
1310:
1309:
1308:
1307:
1302:
1297:
1292:
1282:
1277:
1272:
1271:
1270:
1265:
1260:
1255:
1250:
1245:
1240:
1235:
1228:Turing machine
1225:
1224:
1223:
1218:
1213:
1208:
1203:
1198:
1188:
1183:
1177:
1175:
1169:
1168:
1161:
1160:
1153:
1146:
1138:
1132:
1131:
1119:
1099:
1098:External links
1096:
1094:
1093:
1087:
1070:
1064:
1047:
1041:
1025:Hennessy, John
1016:
1014:
1011:
1008:
1007:
974:
949:
937:cs.iastate.edu
924:
912:
910:, p. 335.
899:
898:
896:
893:
891:
890:
888:Race condition
885:
880:
875:
870:
865:
860:
858:Hazard pointer
855:
853:Hazard (logic)
850:
845:
840:
835:
829:
827:
824:
818:
815:
810:
809:
798:
782:
779:
706:i2: R2 = R1 +
701:
665:i2: R2 = R1 +
656:
652:
651:
640:
637:
632:Main article:
629:
626:
618:
617:
606:
588:
587:
578:
571:
559:
556:
530:pipeline stall
526:pipeline break
515:Main article:
512:
509:
507:
504:
502:
499:
493:
490:
480:
477:
464:<- R1 + R3
455:
450:
447:
430:
427:
406:<- R1 + R2
397:
392:
389:
376:
373:
336:
331:
328:
314:
311:
288:
287:
284:
278:
272:
256:
255:
233:
231:
224:
215:Main article:
212:
209:
207:
204:
181:
178:
128:
127:
42:
40:
33:
26:
9:
6:
4:
3:
2:
3099:
3088:
3085:
3084:
3082:
3067:
3064:
3062:
3059:
3057:
3054:
3052:
3049:
3047:
3044:
3042:
3039:
3037:
3034:
3032:
3029:
3027:
3024:
3023:
3021:
3017:
3010:
3007:
3005:
3002:
3000:
2997:
2995:
2992:
2990:
2987:
2985:
2982:
2980:
2977:
2976:
2974:
2972:
2966:
2956:
2953:
2951:
2948:
2946:
2943:
2941:
2938:
2936:
2933:
2929:
2926:
2924:
2921:
2919:
2916:
2915:
2914:
2911:
2910:
2908:
2906:
2902:
2896:
2893:
2889:
2886:
2884:
2881:
2880:
2879:
2876:
2872:
2869:
2868:
2867:
2864:
2862:
2859:
2857:
2856:Demultiplexer
2854:
2852:
2849:
2848:
2846:
2844:
2840:
2834:
2831:
2829:
2826:
2823:
2821:
2818:
2816:
2813:
2811:
2808:
2806:
2803:
2802:
2800:
2798:
2794:
2788:
2785:
2783:
2780:
2778:
2777:Memory buffer
2775:
2773:
2772:Register file
2770:
2768:
2765:
2763:
2760:
2758:
2755:
2754:
2752:
2750:
2746:
2738:
2735:
2733:
2730:
2729:
2728:
2725:
2723:
2720:
2718:
2715:
2713:
2712:Combinational
2710:
2709:
2707:
2705:
2701:
2695:
2692:
2688:
2685:
2684:
2682:
2679:
2677:
2674:
2672:
2669:
2664:
2661:
2659:
2656:
2655:
2653:
2650:
2647:
2644:
2641:
2638:
2635:
2632:
2631:
2629:
2627:
2621:
2615:
2612:
2610:
2607:
2605:
2602:
2600:
2597:
2593:
2590:
2588:
2585:
2583:
2580:
2578:
2575:
2573:
2570:
2568:
2565:
2564:
2563:
2560:
2558:
2555:
2554:
2552:
2548:
2542:
2539:
2537:
2534:
2532:
2529:
2527:
2524:
2523:
2521:
2517:
2509:
2506:
2505:
2504:
2501:
2499:
2496:
2494:
2491:
2489:
2486:
2484:
2481:
2479:
2476:
2474:
2471:
2469:
2466:
2464:
2461:
2459:
2456:
2454:
2451:
2449:
2446:
2444:
2441:
2439:
2436:
2434:
2431:
2430:
2428:
2426:
2422:
2412:
2409:
2407:
2404:
2402:
2399:
2396:
2393:
2390:
2387:
2384:
2381:
2378:
2375:
2373:
2370:
2367:
2364:
2362:
2359:
2357:
2354:
2353:
2351:
2349:
2343:
2336:
2333:
2331:
2328:
2325:
2322:
2319:
2316:
2315:
2313:
2307:
2301:
2298:
2296:
2293:
2291:
2288:
2286:
2283:
2281:
2278:
2276:
2273:
2271:
2268:
2267:
2265:
2261:
2254:
2251:
2248:
2245:
2242:
2239:
2237:
2234:
2232:
2229:
2227:
2224:
2222:
2219:
2217:
2214:
2212:
2209:
2207:
2204:
2202:
2199:
2197:
2194:
2192:
2189:
2185:
2182:
2181:
2179:
2176:
2173:
2170:
2169:
2167:
2165:
2161:
2155:
2152:
2150:
2147:
2144:
2141:
2138:
2135:
2132:
2129:
2126:
2123:
2120:
2117:
2112:
2109:
2108:
2106:
2103:
2101:
2098:
2097:
2095:
2093:
2087:
2075:
2072:
2071:
2070:
2067:
2065:
2062:
2058:
2055:
2053:
2050:
2048:
2045:
2043:
2040:
2039:
2038:
2035:
2033:
2030:
2029:
2027:
2025:
2021:
2015:
2012:
2010:
2007:
2005:
2002:
1998:
1995:
1993:
1990:
1989:
1988:
1985:
1983:
1980:
1979:
1977:
1975:
1971:
1965:
1962:
1960:
1957:
1953:
1950:
1949:
1948:
1945:
1941:
1938:
1936:
1933:
1932:
1931:
1928:
1924:
1921:
1919:
1916:
1915:
1914:
1911:
1909:
1906:
1902:
1899:
1897:
1894:
1893:
1892:
1889:
1888:
1886:
1882:
1879:
1877:
1873:
1863:
1860:
1858:
1855:
1854:
1852:
1850:
1846:
1840:
1837:
1835:
1832:
1828:
1825:
1823:
1820:
1819:
1818:
1815:
1813:
1812:Scoreboarding
1810:
1809:
1807:
1805:
1801:
1795:
1794:False sharing
1792:
1790:
1787:
1785:
1782:
1780:
1777:
1776:
1774:
1772:
1768:
1762:
1759:
1757:
1754:
1752:
1749:
1748:
1746:
1744:
1740:
1737:
1735:
1731:
1721:
1718:
1716:
1713:
1711:
1708:
1705:
1701:
1698:
1696:
1693:
1691:
1688:
1686:
1683:
1682:
1680:
1678:
1675:
1673:
1670:
1668:
1665:
1663:
1660:
1658:
1655:
1653:
1650:
1648:
1645:
1643:
1640:
1638:
1635:
1633:
1630:
1628:
1625:
1623:
1620:
1616:
1613:
1611:
1608:
1606:
1603:
1602:
1600:
1598:
1595:
1593:
1590:
1588:
1587:Stanford MIPS
1585:
1583:
1580:
1578:
1575:
1573:
1570:
1568:
1565:
1563:
1560:
1559:
1557:
1551:
1543:
1540:
1539:
1538:
1535:
1533:
1530:
1528:
1525:
1523:
1520:
1518:
1515:
1513:
1510:
1508:
1505:
1501:
1498:
1497:
1496:
1493:
1489:
1486:
1485:
1484:
1481:
1479:
1476:
1474:
1471:
1469:
1466:
1464:
1461:
1460:
1458:
1454:
1451:
1449:
1448:architectures
1443:
1437:
1434:
1432:
1429:
1427:
1424:
1422:
1419:
1417:
1416:Heterogeneous
1414:
1410:
1407:
1405:
1402:
1401:
1400:
1397:
1395:
1392:
1388:
1385:
1383:
1380:
1378:
1375:
1373:
1370:
1369:
1368:
1367:Memory access
1365:
1363:
1360:
1358:
1355:
1353:
1350:
1348:
1345:
1341:
1338:
1337:
1336:
1333:
1331:
1328:
1326:
1323:
1322:
1320:
1318:
1314:
1306:
1303:
1301:
1300:Random-access
1298:
1296:
1293:
1291:
1288:
1287:
1286:
1283:
1281:
1280:Stack machine
1278:
1276:
1273:
1269:
1266:
1264:
1261:
1259:
1256:
1254:
1251:
1249:
1246:
1244:
1241:
1239:
1236:
1234:
1231:
1230:
1229:
1226:
1222:
1219:
1217:
1214:
1212:
1209:
1207:
1204:
1202:
1199:
1197:
1196:with datapath
1194:
1193:
1192:
1189:
1187:
1184:
1182:
1179:
1178:
1176:
1174:
1170:
1166:
1159:
1154:
1152:
1147:
1145:
1140:
1139:
1136:
1125:
1120:
1106:
1102:
1101:
1090:
1088:9781478610762
1084:
1080:
1076:
1071:
1067:
1061:
1057:
1053:
1048:
1044:
1038:
1034:
1030:
1026:
1022:
1018:
1017:
1002:
997:
993:
989:
985:
978:
963:
959:
953:
938:
934:
928:
921:
916:
909:
904:
900:
889:
886:
884:
881:
879:
876:
874:
871:
869:
866:
864:
861:
859:
856:
854:
851:
849:
846:
844:
841:
839:
836:
834:
831:
830:
823:
814:
807:
803:
799:
796:
792:
788:
787:
786:
778:
776:
772:
768:
764:
759:
757:
755:
748:
746:
742:
738:
733:
731:
728:
724:
717:
713:
709:
705:
700:
698:
694:
690:
686:
682:
678:
672:
668:
664:
660:
655:
650:
648:
643:
642:
635:
625:
615:
612:, which uses
611:
607:
604:
600:
599:scoreboarding
597:
596:
595:
593:
585:
584:
579:
576:
572:
569:
565:
564:
563:
555:
552:
548:
540:
531:
527:
523:
518:
498:
489:
485:
476:
463:
459:
454:
453:For example:
446:
445:environment.
444:
426:
405:
401:
396:
395:For example:
388:
372:
361:
359:
344:
340:
335:
334:For example:
327:
310:
291:
285:
283:
279:
277:
273:
271:
267:
266:
265:
263:
252:
247:
243:
242:
237:
232:
223:
222:
218:
203:
201:
197:
192:
187:
177:
175:
171:
170:scoreboarding
167:
163:
159:
154:
151:
147:
143:
139:
135:
124:
121:
113:
102:
99:
95:
92:
88:
85:
81:
78:
74:
71: –
70:
66:
65:Find sources:
59:
55:
49:
48:
43:This article
41:
37:
32:
31:
19:
3066:Chip carrier
3004:Clock gating
2923:Mixed-signal
2820:Write buffer
2797:Control unit
2609:Clock signal
2348:accelerators
2330:Cypress PSoC
1987:Simultaneous
1804:Out-of-order
1770:
1436:Neuromorphic
1317:Architecture
1275:Belt machine
1268:Zeno machine
1201:Hierarchical
1111:. Retrieved
1078:
1051:
1028:
991:
987:
977:
966:. Retrieved
964:. 2004-02-23
961:
952:
941:. Retrieved
939:. 2001-04-06
936:
927:
915:
903:
820:
811:
805:
790:
784:
774:
770:
766:
762:
760:
753:
751:
749:
744:
740:
736:
734:
729:
726:
722:
719:
715:
711:
707:
703:
696:
692:
688:
684:
680:
676:
674:
670:
666:
662:
658:
653:
646:
644:
619:
602:
589:
581:
567:
561:
558:Data hazards
550:
549:
534:no operation
529:
525:
521:
520:
495:
486:
482:
466:
461:
457:
452:
432:
408:
403:
399:
394:
378:
362:
347:
342:
338:
333:
316:
292:
289:
281:
275:
269:
259:
250:
239:
211:Data hazards
191:Instructions
189:
155:
141:
131:
116:
110:January 2014
107:
97:
90:
83:
76:
64:
52:Please help
47:verification
44:
2851:Multiplexer
2815:Data buffer
2526:Single-core
2498:bit slicing
2356:Coprocessor
2211:Coprocessor
2092:performance
2014:Cooperative
2004:Speculative
1964:Distributed
1923:Superscalar
1908:Instruction
1876:Parallelism
1849:Speculative
1681:System/3x0
1553:Instruction
1330:Von Neumann
1243:Post–Turing
988:VLSI Design
2971:management
2866:Multiplier
2727:Logic gate
2717:Sequential
2624:Functional
2604:Clock rate
2577:Data cache
2550:Components
2531:Multi-core
2519:Core count
2009:Preemptive
1913:Pipelining
1896:Bit-serial
1839:Wide-issue
1784:Structural
1706:Tilera ISA
1672:MicroBlaze
1642:ETRAX CRIS
1537:Comparison
1382:Load–store
1362:Endianness
968:2014-07-19
943:2014-07-19
895:References
743:the value
180:Background
80:newspapers
2905:Circuitry
2825:Microcode
2749:Registers
2592:coherence
2567:CPU cache
2425:Word size
2090:Processor
1734:Execution
1637:DEC Alpha
1615:Power ISA
1431:Cognitive
1238:Universal
789:insert a
714:i1: R1 =
702:i0: R1 =
661:i1: R1 =
657:i0: R1 =
566:insert a
3081:Category
2843:Datapath
2536:Manycore
2508:variable
2346:Hardware
1982:Temporal
1662:OpenRISC
1357:Cellular
1347:Dataflow
1340:modified
1027:(2009).
994:: 1–10.
826:See also
639:Examples
358:pipeline
3019:Related
2950:Quantum
2940:Digital
2935:Boolean
2833:Counter
2732:Quantum
2493:512-bit
2488:256-bit
2483:128-bit
2326:(MPSoC)
2311:on chip
2309:Systems
2127:(FLOPS)
1940:Process
1789:Control
1771:Hazards
1657:Itanium
1652:Unicore
1610:PowerPC
1335:Harvard
1295:Pointer
1290:Counter
1248:Quantum
1113:23 July
1013:General
795:latency
506:Generic
449:Example
391:Example
330:Example
301:, with
246:Discuss
148:in CPU
142:hazards
94:scholar
2955:Switch
2945:Analog
2683:(IMC)
2654:(MMU)
2503:others
2478:64-bit
2473:48-bit
2468:32-bit
2463:24-bit
2458:16-bit
2453:15-bit
2448:12-bit
2285:Mobile
2201:Stream
2196:Barrel
2191:Vector
2180:(GPU)
2139:(SUPS)
2107:(IPC)
1959:Memory
1952:Vector
1935:Thread
1918:Scalar
1720:Others
1667:RISC-V
1632:SuperH
1601:Power
1597:MIPS-X
1572:PDP-11
1421:Fabric
1173:Models
1085:
1062:
1039:
741:before
236:merged
168:, the
138:design
136:(CPU)
96:
89:
82:
75:
67:
3011:(PPW)
2969:Power
2861:Adder
2737:Array
2704:Logic
2665:(TLB)
2648:(FPU)
2642:(AGU)
2636:(ALU)
2626:units
2562:Cache
2443:8-bit
2438:4-bit
2433:1-bit
2397:(TPU)
2391:(DSP)
2385:(PPU)
2379:(VPU)
2368:(GPU)
2337:(NoC)
2320:(SoC)
2255:(PoP)
2249:(SiP)
2243:(MCM)
2184:GPGPU
2174:(CPU)
2164:Types
2145:(PPW)
2133:(TPS)
2121:(IPS)
2113:(CPI)
1884:Level
1695:S/390
1690:S/370
1685:S/360
1627:SPARC
1605:POWER
1488:TRIPS
1456:Types
1127:(PDF)
1108:(PDF)
345:+ R8
238:into
206:Types
101:JSTOR
87:books
2989:ACPI
2722:Glue
2614:FIFO
2557:Core
2295:ASIP
2236:CPLD
2231:FPOA
2226:FPGA
2221:ASIC
2074:SPMD
2069:MIMD
2064:MISD
2057:SWAR
2037:SIMD
2032:SISD
1947:Data
1930:Task
1901:Word
1647:M32R
1592:MIPS
1555:sets
1522:ZISC
1517:NISC
1512:OISC
1507:MISC
1500:EPIC
1495:VLIW
1483:EDGE
1473:RISC
1468:CISC
1377:HUMA
1372:NUMA
1115:2014
1083:ISBN
1060:ISBN
1037:ISBN
992:2013
800:use
797:, or
647:bold
608:the
580:use
573:use
456:i1.
402:i2.
337:i1.
297:and
73:news
2984:APM
2979:PMU
2871:CPU
2828:ROM
2599:Bus
2216:PAL
1891:Bit
1677:LMC
1582:ARM
1577:x86
1567:VAX
996:doi
727:not
622:NOP
544:NOP
539:NOP
536:s (
528:or
244:. (
56:by
3083::
2918:3D
1077:.
1058:.
1035:.
1023:;
990:.
986:.
960:.
935:.
732:.
725:,
712:13
710:=
697:13
677:10
671:10
669:=
473:i1
469:i2
462:R5
458:R5
439:i1
435:i2
423:i1
419:R5
415:i1
411:i2
404:R5
400:R5
385:i1
381:i2
371:.
369:i1
365:i2
354:R4
350:R2
343:R2
339:R2
323:i1
319:i2
307:i2
303:i1
299:i2
295:i1
176:.
140:,
1157:e
1150:t
1143:v
1129:.
1117:.
1091:.
1068:.
1045:.
1004:.
998::
971:.
946:.
771:3
767:6
754:3
745:3
737:3
730:3
723:6
716:3
708:7
704:6
693:6
689:7
685:3
681:3
667:7
663:3
659:6
433:(
379:(
317:(
248:)
123:)
117:(
112:)
108:(
98:·
91:·
84:·
77:·
50:.
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.