Knowledge

Hazard (computer architecture)

Source đź“ť

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:)

Index

Write after read (hazard)

verification
improve this article
adding citations to reliable sources
"Hazard" computer architecture
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
central processing unit
design
instruction pipeline
microarchitectures
pipeline stalls
operand forwarding
out-of-order execution
scoreboarding
Tomasulo algorithm
Instruction pipelining
Instructions
microarchitectures
executed out-of-order
Data dependency
merged
Data dependency#Types
Discuss
race conditions

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑