Knowledge

Memory-mapped I/O and port-mapped I/O

Source đź“ť

36: 607:
cheaper logic that examines only some address lines, when not all of the CPU's address space is needed. Commonly, the decoding itself is programmable, so the system can reconfigure its own memory map as required, though this is a newer development and generally in conflict with the intent of being cheaper.
621:
there are few devices on the bus, as using purely linear addressing for more than one device usually wastes a lot of address space) but instead is combined with one of the other methods to select a device or group of devices within which the linear addressing selects a single register or memory location.
568:
Assuming the fourth register of the video controller sets the background colour of the screen, the CPU can set this colour by writing a value to the memory location A003 using its standard memory write instruction. Using the same method, graphs can be displayed on a screen by writing character values
379:
based architectures because the instructions that perform port-based I/O are limited to one register: EAX, AX, and AL are the only registers that data can be moved into or out of, and either a byte-sized immediate value in the instruction or a value in register DX determines which port is the source
630:
In Windows-based computers, memory can also be accessed via specific drivers such as DOLLx8KD which gives I/O access in 8-, 16- and 32-bit on most Windows platforms starting from Windows 95 up to Windows 7. Installing I/O port drivers will ensure memory access by activating the drivers with simple
620:
Address lines are used directly without any decoding logic. This is done with devices such as RAMs and ROMs that have a sequence of address inputs, and with peripheral chips that have a similar sequence of inputs for addressing a bank of registers. Linear addressing is rarely used alone (only when
424:
Lack of foresight in the choice of memory-mapped I/O regions led to many of the RAM-capacity barriers in older generations of computers. Designers rarely expected machines to grow to make full use of an architecture's theoretical RAM capacity, and thus often used some of the high-order bits of the
420:
instructions after each write in the sequence may see unintended IO effects if a cache system optimizes the write order. Writes to memory can often be reordered to reduce redundancy or to make better use of memory access cycles without changing the final state of what got stored; whereas, the same
362:
in general use, reserving ranges of memory address space for I/O is less of a problem, as the memory address space of the processor is usually much larger than the required space for all memory and I/O devices in a system. Therefore, it has become more frequently practical to take advantage of the
321:
are another communication method between the CPU and peripheral devices, however, for a number of reasons, interrupts are always treated separately. An interrupt is device-initiated, as opposed to the methods mentioned above, which are CPU-initiated. It is also unidirectional, as information flows
606:
n:1 mapping of n unique addresses to one hardware register. Partial decoding allows a memory location to have more than one address, allowing the programmer to reference a memory location using n different addresses. It may also be done to simplify the decoding hardware by using simpler and often
245:
To accommodate the I/O devices, some areas of the address bus used by the CPU must be reserved for I/O and must not be available for normal physical memory; the range of addresses used for I/O devices is determined by the hardware. The reservation may be permanent, or temporary (as achieved via
346:
operation directly on a memory operand (loading an operand from a memory location, storing the result to a memory location, or both) can be used with I/O device registers as well. In contrast, port-mapped I/O instructions are often very limited, often providing only for simple load-and-store
296:
or one of that register's subdivisions on the CPU and a specified I/O port address which is assigned to an I/O device. I/O devices have a separate address space from general memory, either accomplished by an extra "I/O" pin on the CPU's physical interface, or an entire
347:
operations between CPU registers and I/O ports, so that, for example, to add a constant to a port-mapped device register would require three instructions: read the port to a CPU register, add the constant to the CPU register, and write the result back to the port.
333:
One merit of memory-mapped I/O is that, by discarding the extra complexity that port I/O brings, a CPU requires less internal logic and is thus cheaper, faster, easier to build, consumes less power and can be physically smaller; this follows the basic tenets of
329:
I/O operations can slow memory access if the address and data buses are shared. This is because the peripheral device is usually much slower than main memory. In some architectures, port-mapped I/O operates via a dedicated I/O bus, alleviating the problem.
411:
mediate accesses to memory addresses, data written to different addresses may reach the peripherals' memory or registers out of the program order, i.e. if software writes data to an address and then writes data to another address, the cache
363:
benefits of memory-mapped I/O. However, even with address space being no longer a major concern, neither I/O mapping method is universally superior to the other, and there will be cases where using port-mapped I/O is still preferable.
380:
or destination port of the transfer. Since any general-purpose register can send or receive data to or from memory and memory-mapped I/O devices, memory-mapped I/O uses fewer instructions and can run faster than port I/O.
301:
dedicated to I/O. Because the address space for I/O is isolated from that for main memory, this is sometimes referred to as isolated I/O. On the x86 architecture, index/data pair is often used for port-mapped I/O.
342:. The other advantage is that, because regular memory instructions are used to address devices, all of the CPU's addressing modes are available for the I/O as well as the memory, and instructions that perform an 556:
The hardware of the system is arranged so that devices on the address bus will only respond to particular addresses which are intended for them, while all other addresses are ignored. This is the job of the
565:
of the system. As a result, system's memory map may look like in the table on the right. This memory map contains gaps, which is also quite common in actual system architectures.
234:) can also be used for accessing devices. Each I/O device either monitors the CPU's address bus and responds to any CPU access of an address assigned to that device, connecting the 764: 2099: 638:
utility to allow reading from and writing to MMIO addresses. The Linux kernel also allows tracing MMIO access from kernel modules (drivers) using the kernel's
53: 834: 100: 433:. This choice initially made little impact, but it eventually limited the total amount of RAM available within the 20-bit available address space. The 72: 1071: 79: 2210: 1393: 1912: 1190: 86: 2069: 1635: 1452: 2423: 720: 68: 1415: 553:(ROM) and the remainder to a variety of other devices such as timers, counters, video display chips, sound generating devices, etc. 2064: 2136: 326:
of information with a fixed meaning, namely "an event that requires attention has occurred in a device on this interrupt line".
2418: 1889: 809: 853: 726: 2833: 1957: 1220: 1064: 631:
DLL calls allowing port I/O and when not needed, the driver can be closed to prevent unauthorized access to the I/O ports.
429:
in the IBM PC and derivatives is due to reserving the region between 640 and 1024 KB (64k segments 10 through 16) for the
2843: 1984: 596:
1:1 mapping of unique addresses to one hardware register (physical memory location). Involves checking every line of the
226:
of the I/O devices are mapped to (associated with) address values, so a memory address may refer to either a portion of
1111: 449:
design. 64-bit architectures often technically have similar issues, but these only rarely have practical consequences.
93: 2151: 1979: 1952: 1331: 979: 817: 119: 2966: 2529: 1422: 1388: 1383: 1302: 1267: 845: 589:
Address decoding types, in which a device may decode addresses completely or incompletely, include the following:
314:(DMA) for a device, because, by definition, DMA is a memory-to-device communication method that bypasses the CPU. 2941: 2838: 2239: 2146: 1947: 1168: 1057: 1967: 1686: 1121: 705: 201: 57: 2141: 1989: 1962: 1823: 1437: 1398: 1255: 416:
does not guarantee that the data will reach the peripherals in that order. Any program that does not include
1017: 2578: 2340: 1816: 1777: 1432: 1427: 1361: 1173: 642:
debug facility. To enable this, the Linux kernel should be compiled with the corresponding option enabled.
2205: 1902: 1600: 1297: 916:"Intel 64 and IA-32 Architectures Software Developer's Manual: Volume 2B: Instruction Set Reference, N-Z" 884:"Intel 64 and IA-32 Architectures Software Developer's Manual: Volume 2A: Instruction Set Reference, A-M" 655: 230:
or to memory and registers of the I/O device. Thus, the CPU instructions used to access the memory (e.g.
144: 2855: 2502: 1919: 1410: 1378: 1148: 1136: 1116: 2946: 2909: 2899: 1287: 421:
optimizations might completely change the meaning and effect of writes to memory-mapped I/O regions.
268:
often uses a special class of CPU instructions designed specifically for performing I/O, such as the
2961: 2368: 2304: 2281: 2131: 2093: 1929: 1879: 1874: 1351: 1245: 1153: 133: 17: 2914: 2697: 2591: 2555: 2472: 2456: 2298: 2087: 2046: 2034: 1897: 1811: 1732: 1497: 1158: 1101: 177: 46: 2720: 2692: 2602: 2567: 2316: 2310: 2292: 2026: 2020: 1924: 1828: 1719: 1658: 1520: 1163: 958: 446: 396: 388:
architecture to support 64-bit ports, so 64-bit transfers cannot be performed using port I/O.
3002: 2894: 2803: 2549: 2261: 2079: 1838: 1806: 1764: 1676: 1477: 1292: 1282: 1272: 1262: 1232: 1215: 1080: 545:(KiB) of memory. On such a system, the first 32 KiB of address space may be allotted to 441:
are similar manifestations of this with 32-bit address spaces, exacerbated by details of the
343: 2924: 2860: 2446: 2168: 2058: 2005: 1537: 1250: 1106: 1088: 948:"AMD64 Architecture Programmer's Manual: Volume 3: General-Purpose and System Instructions" 715: 611: 570: 546: 311: 255: 223: 8: 2971: 2956: 2776: 2627: 2609: 2573: 2561: 2215: 2162: 1939: 1855: 1737: 1592: 1487: 1346: 578: 310:
Different CPU-to-device communication methods, such as memory mapping, do not affect the
280:
architecture. Different forms of these two instructions can copy one, two or four bytes (
2828: 2820: 2672: 2647: 2451: 2326: 1850: 1791: 1671: 1403: 1131: 666: 197: 137: 947: 577:, this character cell method was a popular technique for computer video displays (see 2781: 2748: 2664: 2596: 2497: 2487: 2477: 2408: 2403: 2398: 2321: 2250: 2156: 2116: 1749: 1699: 1649: 1625: 1507: 1447: 1442: 1324: 1240: 926: 894: 849: 813: 750: 679: 430: 408: 239: 181: 915: 883: 2951: 2884: 2870: 2725: 2632: 2586: 2393: 2388: 2383: 2378: 2373: 2363: 2233: 2200: 2111: 2106: 2015: 1867: 1862: 1845: 1833: 1772: 1336: 1314: 1200: 1178: 1096: 550: 151: 2865: 2850: 2798: 2702: 2677: 2514: 2507: 2358: 2353: 2348: 2287: 2195: 2185: 1907: 1742: 1694: 1457: 1341: 1309: 1210: 1205: 1126: 1039: 1035: 558: 339: 227: 192:). An alternative approach is using dedicated I/O processors, commonly known as 2976: 2810: 2793: 2786: 2682: 2539: 2276: 2190: 2121: 1704: 1666: 1615: 1610: 1605: 1319: 1143: 700: 538: 426: 417: 392: 247: 869: 745:
A memory that besides registers is directly accessible by the processor, e.g.
2996: 2771: 2687: 1727: 1709: 1502: 1195: 425:
address-space as selectors for memory-mapped I/O functions. For example, the
211: 1630: 143:"Port-mapped I/O" redirects here. For the related concept in computing, see 2981: 2919: 2735: 2712: 2524: 2245: 1183: 434: 413: 298: 293: 251: 173: 2766: 2730: 2441: 2413: 2271: 2126: 1049: 710: 597: 541:
might provide 16-bit address lines, allowing it to address up to 64 
464: 215: 193: 150:"MMIO" redirects here. For the airport in Mexico with the code MMIO, see 2652: 2642: 2637: 2619: 2519: 2492: 1754: 1587: 1557: 1277: 569:
into a special area of RAM within the video controller. Prior to cheap
562: 235: 219: 1004:
ARM Cortex-A Series Programmer's Guide. Literature number ARM DEN0013D
689:, an early example of a computer architecture using memory-mapped I/O 322:
only from device to CPU. Lastly, each interrupt line carries only one
2743: 2740: 2482: 1552: 1530: 1021: 1018:"Partial Address Decoding and I/O Space in Windows Operating Systems" 318: 35: 2758: 1577: 542: 438: 185: 395:, I/O devices on the chipset directly communicate via a dedicated 1567: 1525: 189: 1582: 1547: 1512: 980:"What Is the Direct Media Interface (DMI) of Intel Processors?" 692: 686: 610:
Synonyms: foldback, multiply mapped, partially mapped, address
574: 385: 376: 359: 355: 351: 2040: 1572: 1542: 771: 674: 535: 372: 923:
Intel 64 and IA-32 Architectures Software Developer's Manual
891:
Intel 64 and IA-32 Architectures Software Developer's Manual
2904: 2052: 1972: 1562: 746: 660: 384:
did not extend the port I/O instructions when defining the
335: 1492: 1482: 442: 381: 323: 277: 762:
See Intel datasheets on specific CPU family e.g. 2014
132:
For more generic meanings of input/output ports, see
646:
is used for debugging closed-source device drivers.
276:instructions found on microprocessors based on the 60:. Unsourced material may be challenged and removed. 584: 354:processors have become obsolete and replaced with 671:Early examples of computers with port-mapped I/O 2994: 842:Fundamentals of Computer Organization and Design 254:, which uses a form of memory mapping to cause 1010: 625: 172:) are two complementary methods of performing 1065: 391:On newer Intel platforms beginning with 2008 996: 753:computers or Flash/SRAM in microcontrollers. 250:). An example of the latter is found in the 2070:Computer performance by orders of magnitude 908: 876: 663:, not to be confused with memory-mapped I/O 1079: 1072: 1058: 765:"10th Generation Intel Processor Families" 721:Advanced Configuration and Power Interface 832: 797: 695:, a memory and I/O bus used by the PDP-11 517:Video controller/text-mapped display RAM 120:Learn how and when to remove this message 972: 826: 940: 69:"Memory-mapped I/O and port-mapped I/O" 14: 2995: 955:AMD64 Architecture Programmer's Manual 835:"Chapter 19 Input/Output Organization" 810:McGraw-Hill International Book Company 806:Computer Architecture and Organization 1053: 833:Dandamudi, Sivarama P. (2006-05-31). 803: 727:Transient execution CPU vulnerability 2041:Floating-point operations per second 58:adding citations to reliable sources 29: 870:"Bochs VBE Extensions - OSDev Wiki" 24: 1028: 961:. November 2009. pp. 117, 181 402: 371:Memory-mapped I/O is preferred in 136:. For memory-mapped file I/O, see 25: 3014: 336:reduced instruction set computing 258:or I/O hardware to appear in the 2967:Semiconductor device fabrication 534:A simple system built around an 34: 2942:History of general-purpose CPUs 1169:Nondeterministic Turing machine 846:Springer Science+Business Media 585:Basic types of address decoding 231: 45:needs additional citations for 1122:Deterministic finite automaton 862: 756: 739: 593:Complete (exhaustive) decoding 549:(RAM), another 16 KiB to 338:, and is also advantageous in 13: 1: 1913:Simultaneous and heterogenous 790: 603:Incomplete (partial) decoding 2597:Integrated memory controller 2579:Translation lookaside buffer 1778:Memory dependence prediction 1221:Random-access stored program 1174:Probabilistic Turing machine 292:, respectively) between the 188:(often mediating access via 7: 2053:Synaptic updates per second 897:. June 2010. pp. 3–520 706:Ralf Brown's Interrupt List 649: 626:Port I/O via device drivers 561:, and that establishes the 458:A sample system memory map 452: 305: 242:, or uses a dedicated bus. 27:Method of CPU communication 10: 3019: 2457:Heterogeneous architecture 1379:Orthogonal instruction set 1149:Alternating Turing machine 1137:Quantum cellular automaton 929:. June 2010. pp. 4–22 559:address decoding circuitry 200:, which execute their own 149: 142: 131: 2947:Microprocessor chronology 2934: 2910:Dynamic frequency scaling 2883: 2819: 2757: 2711: 2663: 2618: 2538: 2465: 2434: 2339: 2260: 2224: 2178: 2078: 2065:Cache performance metrics 2004: 1938: 1888: 1799: 1790: 1763: 1718: 1685: 1657: 1648: 1468: 1371: 1360: 1231: 1087: 2962:Hardware security module 2305:Digital signal processor 2282:Graphics processing unit 2094:Graphics processing unit 732: 238:to the desired device's 134:Computer port (hardware) 2915:Dynamic voltage scaling 2698:Memory address register 2592:Branch target predictor 2556:Address generation unit 2299:Physics processing unit 2088:Central processing unit 2047:Transactions per second 2035:Instructions per second 1958:Array processing (SIMT) 1102:Stored-program computer 804:Hayes, John P. (1978). 656:Programmed input–output 178:central processing unit 145:Programmed input–output 2721:Hardwired control unit 2603:Memory management unit 2568:Memory management unit 2317:Secure cryptoprocessor 2311:Tensor Processing Unit 2293:Vision processing unit 2027:Cycles per instruction 2021:Instructions per cycle 1968:Associative processing 1659:Instruction pipelining 1081:Processor technologies 959:Advanced Micro Devices 397:Direct Media Interface 366: 2804:Sum-addressed decoder 2550:Arithmetic logic unit 1677:Classic RISC pipeline 1631:Epiphany architecture 1478:Motorola 68000 series 2925:Performance per watt 2503:replacement policies 2169:Package on a package 2059:Performance per watt 1963:Pipelined processing 1733:Tomasulo's algorithm 1538:Clipper architecture 1394:Application-specific 1107:Finite-state machine 716:Direct memory access 547:random access memory 495:General-purpose I/O 312:direct memory access 54:improve this article 2957:Digital electronics 2610:Instruction decoder 2562:Floating-point unit 2216:Soft microprocessor 2163:System in a package 1738:Reservation station 1268:Transport-triggered 634:Linux provides the 579:Text user interface 575:bit-mapped displays 459: 427:640 KB barrier 198:mainframe computers 2829:Integrated circuit 2673:Processor register 2327:Baseband processor 1672:Operand forwarding 1132:Cellular automaton 1036:"Address aliasing" 667:Memory-mapped file 457: 182:peripheral devices 176:(I/O) between the 138:Memory-mapped file 2990: 2989: 2879: 2878: 2498:Instruction cache 2488:Scratchpad memory 2335: 2334: 2322:Network processor 2251:Network on a chip 2206:Ultra-low-voltage 2157:Multi-chip module 2000: 1999: 1786: 1785: 1773:Branch prediction 1750:Register renaming 1644: 1643: 1626:VISC architecture 1448:Quantum computing 1443:VISC architecture 1325:Secondary storage 1241:Microarchitecture 1201:Register machines 1006:. pp. 10–13. 927:Intel Corporation 895:Intel Corporation 855:978-0-387-21566-2 751:IBM PC compatible 532: 531: 506:Sound controller 445:boot process and 435:3 GB barrier 431:Upper Memory Area 240:hardware register 222:. The memory and 208:Memory-mapped I/O 158:Memory-mapped I/O 130: 129: 122: 104: 16:(Redirected from 3010: 2952:Processor design 2844:Power management 2726:Instruction unit 2587:Branch predictor 2536: 2535: 2234:System on a chip 2176: 2175: 2016:Transistor count 1940:Flynn's taxonomy 1797: 1796: 1655: 1654: 1458:Addressing modes 1369: 1368: 1315:Memory hierarchy 1179:Hypercomputation 1097:Abstract machine 1074: 1067: 1060: 1051: 1050: 1044: 1043: 1032: 1026: 1025: 1014: 1008: 1007: 1000: 994: 993: 991: 990: 976: 970: 969: 967: 966: 952: 944: 938: 937: 935: 934: 920: 912: 906: 905: 903: 902: 888: 880: 874: 873: 866: 860: 859: 839: 830: 824: 823: 801: 784: 782: 780: 779: 769: 760: 754: 743: 637: 551:read-only memory 522:C000–FFFF 511:A000–A7FF 500:9000–90FF 489:8000–80FF 478:0000–7FFF 460: 456: 340:embedded systems 291: 287: 283: 275: 271: 261: 233: 214:to address both 152:Saltillo Airport 125: 118: 114: 111: 105: 103: 62: 38: 30: 21: 3018: 3017: 3013: 3012: 3011: 3009: 3008: 3007: 2993: 2992: 2991: 2986: 2972:Tick–tock model 2930: 2886: 2875: 2815: 2799:Address decoder 2753: 2707: 2703:Program counter 2678:Status register 2659: 2614: 2574:Load–store unit 2541: 2534: 2461: 2430: 2331: 2288:Image processor 2263: 2256: 2226: 2220: 2196:Microcontroller 2186:Embedded system 2174: 2074: 2007: 1996: 1934: 1884: 1782: 1759: 1743:Re-order buffer 1714: 1695:Data dependency 1681: 1640: 1470: 1464: 1363: 1362:Instruction set 1356: 1342:Multiprocessing 1310:Cache hierarchy 1303:Register/memory 1227: 1127:Queue automaton 1083: 1078: 1048: 1047: 1040:Hewlett-Packard 1034: 1033: 1029: 1016: 1015: 1011: 1002: 1001: 997: 988: 986: 978: 977: 973: 964: 962: 950: 946: 945: 941: 932: 930: 918: 914: 913: 909: 900: 898: 886: 882: 881: 877: 868: 867: 863: 856: 837: 831: 827: 820: 812:. p. 419. 802: 798: 793: 788: 787: 777: 775: 767: 763: 761: 757: 744: 740: 735: 652: 635: 628: 617:Linear decoding 587: 503:256 bytes 492:256 bytes 463:Address range ( 455: 405: 403:Memory barriers 369: 308: 289: 285: 281: 273: 269: 266:Port-mapped I/O 259: 166:port-mapped I/O 155: 148: 141: 126: 115: 109: 106: 63: 61: 51: 39: 28: 23: 22: 15: 12: 11: 5: 3016: 3006: 3005: 2988: 2987: 2985: 2984: 2979: 2977:Pin grid array 2974: 2969: 2964: 2959: 2954: 2949: 2944: 2938: 2936: 2932: 2931: 2929: 2928: 2922: 2917: 2912: 2907: 2902: 2897: 2891: 2889: 2881: 2880: 2877: 2876: 2874: 2873: 2868: 2863: 2858: 2853: 2848: 2847: 2846: 2841: 2836: 2825: 2823: 2817: 2816: 2814: 2813: 2811:Barrel shifter 2808: 2807: 2806: 2801: 2794:Binary decoder 2791: 2790: 2789: 2779: 2774: 2769: 2763: 2761: 2755: 2754: 2752: 2751: 2746: 2738: 2733: 2728: 2723: 2717: 2715: 2709: 2708: 2706: 2705: 2700: 2695: 2690: 2685: 2683:Stack register 2680: 2675: 2669: 2667: 2661: 2660: 2658: 2657: 2656: 2655: 2650: 2640: 2635: 2630: 2624: 2622: 2616: 2615: 2613: 2612: 2607: 2606: 2605: 2594: 2589: 2584: 2583: 2582: 2576: 2565: 2559: 2553: 2546: 2544: 2533: 2532: 2527: 2522: 2517: 2512: 2511: 2510: 2505: 2500: 2495: 2490: 2485: 2475: 2469: 2467: 2463: 2462: 2460: 2459: 2454: 2449: 2444: 2438: 2436: 2432: 2431: 2429: 2428: 2427: 2426: 2416: 2411: 2406: 2401: 2396: 2391: 2386: 2381: 2376: 2371: 2366: 2361: 2356: 2351: 2345: 2343: 2337: 2336: 2333: 2332: 2330: 2329: 2324: 2319: 2314: 2308: 2302: 2296: 2290: 2285: 2279: 2277:AI accelerator 2274: 2268: 2266: 2258: 2257: 2255: 2254: 2248: 2243: 2240:Multiprocessor 2237: 2230: 2228: 2222: 2221: 2219: 2218: 2213: 2208: 2203: 2198: 2193: 2191:Microprocessor 2188: 2182: 2180: 2179:By application 2173: 2172: 2166: 2160: 2154: 2149: 2144: 2139: 2134: 2129: 2124: 2122:Tile processor 2119: 2114: 2109: 2104: 2103: 2102: 2091: 2084: 2082: 2076: 2075: 2073: 2072: 2067: 2062: 2056: 2050: 2044: 2038: 2032: 2031: 2030: 2018: 2012: 2010: 2002: 2001: 1998: 1997: 1995: 1994: 1993: 1992: 1982: 1977: 1976: 1975: 1970: 1965: 1960: 1950: 1944: 1942: 1936: 1935: 1933: 1932: 1927: 1922: 1917: 1916: 1915: 1910: 1908:Hyperthreading 1900: 1894: 1892: 1890:Multithreading 1886: 1885: 1883: 1882: 1877: 1872: 1871: 1870: 1860: 1859: 1858: 1853: 1843: 1842: 1841: 1836: 1826: 1821: 1820: 1819: 1814: 1803: 1801: 1794: 1788: 1787: 1784: 1783: 1781: 1780: 1775: 1769: 1767: 1761: 1760: 1758: 1757: 1752: 1747: 1746: 1745: 1740: 1730: 1724: 1722: 1716: 1715: 1713: 1712: 1707: 1702: 1697: 1691: 1689: 1683: 1682: 1680: 1679: 1674: 1669: 1667:Pipeline stall 1663: 1661: 1652: 1646: 1645: 1642: 1641: 1639: 1638: 1633: 1628: 1623: 1620: 1619: 1618: 1616:z/Architecture 1613: 1608: 1603: 1595: 1590: 1585: 1580: 1575: 1570: 1565: 1560: 1555: 1550: 1545: 1540: 1535: 1534: 1533: 1528: 1523: 1515: 1510: 1505: 1500: 1495: 1490: 1485: 1480: 1474: 1472: 1466: 1465: 1463: 1462: 1461: 1460: 1450: 1445: 1440: 1435: 1430: 1425: 1420: 1419: 1418: 1408: 1407: 1406: 1396: 1391: 1386: 1381: 1375: 1373: 1366: 1358: 1357: 1355: 1354: 1349: 1344: 1339: 1334: 1329: 1328: 1327: 1322: 1320:Virtual memory 1312: 1307: 1306: 1305: 1300: 1295: 1290: 1280: 1275: 1270: 1265: 1260: 1259: 1258: 1248: 1243: 1237: 1235: 1229: 1228: 1226: 1225: 1224: 1223: 1218: 1213: 1208: 1198: 1193: 1188: 1187: 1186: 1181: 1176: 1171: 1166: 1161: 1156: 1151: 1144:Turing machine 1141: 1140: 1139: 1134: 1129: 1124: 1119: 1114: 1104: 1099: 1093: 1091: 1085: 1084: 1077: 1076: 1069: 1062: 1054: 1046: 1045: 1027: 1009: 995: 971: 939: 907: 875: 861: 854: 825: 818: 795: 794: 792: 789: 786: 785: 755: 737: 736: 734: 731: 730: 729: 724: 718: 713: 708: 703: 701:Bank switching 698: 697: 696: 684: 683: 682: 677: 669: 664: 658: 651: 648: 627: 624: 623: 622: 618: 615: 608: 604: 601: 594: 586: 583: 539:microprocessor 530: 529: 526: 523: 519: 518: 515: 512: 508: 507: 504: 501: 497: 496: 493: 490: 486: 485: 482: 479: 475: 474: 471: 468: 454: 451: 418:cache-flushing 404: 401: 368: 365: 307: 304: 248:bank switching 210:uses the same 128: 127: 42: 40: 33: 26: 9: 6: 4: 3: 2: 3015: 3004: 3001: 3000: 2998: 2983: 2980: 2978: 2975: 2973: 2970: 2968: 2965: 2963: 2960: 2958: 2955: 2953: 2950: 2948: 2945: 2943: 2940: 2939: 2937: 2933: 2926: 2923: 2921: 2918: 2916: 2913: 2911: 2908: 2906: 2903: 2901: 2898: 2896: 2893: 2892: 2890: 2888: 2882: 2872: 2869: 2867: 2864: 2862: 2859: 2857: 2854: 2852: 2849: 2845: 2842: 2840: 2837: 2835: 2832: 2831: 2830: 2827: 2826: 2824: 2822: 2818: 2812: 2809: 2805: 2802: 2800: 2797: 2796: 2795: 2792: 2788: 2785: 2784: 2783: 2780: 2778: 2775: 2773: 2772:Demultiplexer 2770: 2768: 2765: 2764: 2762: 2760: 2756: 2750: 2747: 2745: 2742: 2739: 2737: 2734: 2732: 2729: 2727: 2724: 2722: 2719: 2718: 2716: 2714: 2710: 2704: 2701: 2699: 2696: 2694: 2693:Memory buffer 2691: 2689: 2688:Register file 2686: 2684: 2681: 2679: 2676: 2674: 2671: 2670: 2668: 2666: 2662: 2654: 2651: 2649: 2646: 2645: 2644: 2641: 2639: 2636: 2634: 2631: 2629: 2628:Combinational 2626: 2625: 2623: 2621: 2617: 2611: 2608: 2604: 2601: 2600: 2598: 2595: 2593: 2590: 2588: 2585: 2580: 2577: 2575: 2572: 2571: 2569: 2566: 2563: 2560: 2557: 2554: 2551: 2548: 2547: 2545: 2543: 2537: 2531: 2528: 2526: 2523: 2521: 2518: 2516: 2513: 2509: 2506: 2504: 2501: 2499: 2496: 2494: 2491: 2489: 2486: 2484: 2481: 2480: 2479: 2476: 2474: 2471: 2470: 2468: 2464: 2458: 2455: 2453: 2450: 2448: 2445: 2443: 2440: 2439: 2437: 2433: 2425: 2422: 2421: 2420: 2417: 2415: 2412: 2410: 2407: 2405: 2402: 2400: 2397: 2395: 2392: 2390: 2387: 2385: 2382: 2380: 2377: 2375: 2372: 2370: 2367: 2365: 2362: 2360: 2357: 2355: 2352: 2350: 2347: 2346: 2344: 2342: 2338: 2328: 2325: 2323: 2320: 2318: 2315: 2312: 2309: 2306: 2303: 2300: 2297: 2294: 2291: 2289: 2286: 2283: 2280: 2278: 2275: 2273: 2270: 2269: 2267: 2265: 2259: 2252: 2249: 2247: 2244: 2241: 2238: 2235: 2232: 2231: 2229: 2223: 2217: 2214: 2212: 2209: 2207: 2204: 2202: 2199: 2197: 2194: 2192: 2189: 2187: 2184: 2183: 2181: 2177: 2170: 2167: 2164: 2161: 2158: 2155: 2153: 2150: 2148: 2145: 2143: 2140: 2138: 2135: 2133: 2130: 2128: 2125: 2123: 2120: 2118: 2115: 2113: 2110: 2108: 2105: 2101: 2098: 2097: 2095: 2092: 2089: 2086: 2085: 2083: 2081: 2077: 2071: 2068: 2066: 2063: 2060: 2057: 2054: 2051: 2048: 2045: 2042: 2039: 2036: 2033: 2028: 2025: 2024: 2022: 2019: 2017: 2014: 2013: 2011: 2009: 2003: 1991: 1988: 1987: 1986: 1983: 1981: 1978: 1974: 1971: 1969: 1966: 1964: 1961: 1959: 1956: 1955: 1954: 1951: 1949: 1946: 1945: 1943: 1941: 1937: 1931: 1928: 1926: 1923: 1921: 1918: 1914: 1911: 1909: 1906: 1905: 1904: 1901: 1899: 1896: 1895: 1893: 1891: 1887: 1881: 1878: 1876: 1873: 1869: 1866: 1865: 1864: 1861: 1857: 1854: 1852: 1849: 1848: 1847: 1844: 1840: 1837: 1835: 1832: 1831: 1830: 1827: 1825: 1822: 1818: 1815: 1813: 1810: 1809: 1808: 1805: 1804: 1802: 1798: 1795: 1793: 1789: 1779: 1776: 1774: 1771: 1770: 1768: 1766: 1762: 1756: 1753: 1751: 1748: 1744: 1741: 1739: 1736: 1735: 1734: 1731: 1729: 1728:Scoreboarding 1726: 1725: 1723: 1721: 1717: 1711: 1710:False sharing 1708: 1706: 1703: 1701: 1698: 1696: 1693: 1692: 1690: 1688: 1684: 1678: 1675: 1673: 1670: 1668: 1665: 1664: 1662: 1660: 1656: 1653: 1651: 1647: 1637: 1634: 1632: 1629: 1627: 1624: 1621: 1617: 1614: 1612: 1609: 1607: 1604: 1602: 1599: 1598: 1596: 1594: 1591: 1589: 1586: 1584: 1581: 1579: 1576: 1574: 1571: 1569: 1566: 1564: 1561: 1559: 1556: 1554: 1551: 1549: 1546: 1544: 1541: 1539: 1536: 1532: 1529: 1527: 1524: 1522: 1519: 1518: 1516: 1514: 1511: 1509: 1506: 1504: 1503:Stanford MIPS 1501: 1499: 1496: 1494: 1491: 1489: 1486: 1484: 1481: 1479: 1476: 1475: 1473: 1467: 1459: 1456: 1455: 1454: 1451: 1449: 1446: 1444: 1441: 1439: 1436: 1434: 1431: 1429: 1426: 1424: 1421: 1417: 1414: 1413: 1412: 1409: 1405: 1402: 1401: 1400: 1397: 1395: 1392: 1390: 1387: 1385: 1382: 1380: 1377: 1376: 1374: 1370: 1367: 1365: 1364:architectures 1359: 1353: 1350: 1348: 1345: 1343: 1340: 1338: 1335: 1333: 1332:Heterogeneous 1330: 1326: 1323: 1321: 1318: 1317: 1316: 1313: 1311: 1308: 1304: 1301: 1299: 1296: 1294: 1291: 1289: 1286: 1285: 1284: 1283:Memory access 1281: 1279: 1276: 1274: 1271: 1269: 1266: 1264: 1261: 1257: 1254: 1253: 1252: 1249: 1247: 1244: 1242: 1239: 1238: 1236: 1234: 1230: 1222: 1219: 1217: 1216:Random-access 1214: 1212: 1209: 1207: 1204: 1203: 1202: 1199: 1197: 1196:Stack machine 1194: 1192: 1189: 1185: 1182: 1180: 1177: 1175: 1172: 1170: 1167: 1165: 1162: 1160: 1157: 1155: 1152: 1150: 1147: 1146: 1145: 1142: 1138: 1135: 1133: 1130: 1128: 1125: 1123: 1120: 1118: 1115: 1113: 1112:with datapath 1110: 1109: 1108: 1105: 1103: 1100: 1098: 1095: 1094: 1092: 1090: 1086: 1082: 1075: 1070: 1068: 1063: 1061: 1056: 1055: 1052: 1041: 1037: 1031: 1024:. 2001-12-04. 1023: 1019: 1013: 1005: 999: 985: 981: 975: 960: 956: 949: 943: 928: 924: 917: 911: 896: 892: 885: 879: 871: 865: 857: 851: 847: 843: 836: 829: 821: 819:0-07-027363-4 815: 811: 807: 800: 796: 773: 766: 759: 752: 748: 742: 738: 728: 725: 722: 719: 717: 714: 712: 709: 707: 704: 702: 699: 694: 691: 690: 688: 685: 681: 678: 676: 673: 672: 670: 668: 665: 662: 659: 657: 654: 653: 647: 645: 641: 632: 619: 616: 613: 609: 605: 602: 599: 595: 592: 591: 590: 582: 580: 576: 573:that enabled 572: 566: 564: 560: 554: 552: 548: 544: 540: 537: 527: 524: 521: 520: 516: 513: 510: 509: 505: 502: 499: 498: 494: 491: 488: 487: 483: 480: 477: 476: 472: 469: 466: 462: 461: 450: 448: 444: 440: 436: 432: 428: 422: 419: 415: 410: 400: 398: 394: 389: 387: 383: 378: 374: 364: 361: 357: 353: 348: 345: 341: 337: 331: 327: 325: 320: 315: 313: 303: 300: 295: 279: 267: 263: 260:0xD000-0xDFFF 257: 253: 249: 243: 241: 237: 229: 225: 221: 217: 213: 212:address space 209: 205: 203: 199: 195: 191: 187: 183: 179: 175: 171: 167: 163: 159: 153: 146: 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: 3003:Input/output 2982:Chip carrier 2920:Clock gating 2839:Mixed-signal 2736:Write buffer 2713:Control unit 2525:Clock signal 2264:accelerators 2246:Cypress PSoC 1903:Simultaneous 1720:Out-of-order 1352:Neuromorphic 1233:Architecture 1191:Belt machine 1184:Zeno machine 1117:Hierarchical 1030: 1012: 1003: 998: 987:. Retrieved 983: 974: 963:. Retrieved 954: 942: 931:. Retrieved 922: 910: 899:. Retrieved 890: 878: 864: 841: 828: 805: 799: 776:. Retrieved 774:. April 2020 758: 741: 643: 639: 633: 629: 588: 567: 555: 533: 525:16 KiB 481:32 KiB 423: 414:write buffer 406: 390: 370: 349: 332: 328: 316: 309: 294:EAX register 265: 264: 252:Commodore 64 244: 228:physical RAM 207: 206: 202:instructions 174:input/output 169: 165: 161: 157: 156: 116: 107: 97: 90: 83: 76: 64: 52:Please help 47:verification 44: 2767:Multiplexer 2731:Data buffer 2442:Single-core 2414:bit slicing 2272:Coprocessor 2127:Coprocessor 2008:performance 1930:Cooperative 1920:Speculative 1880:Distributed 1839:Superscalar 1824:Instruction 1792:Parallelism 1765:Speculative 1597:System/3x0 1469:Instruction 1246:Von Neumann 1159:Post–Turing 711:Coprocessor 598:address bus 514:2 KiB 465:hexadecimal 399:(DMI) bus. 220:I/O devices 216:main memory 110:August 2010 2887:management 2782:Multiplier 2643:Logic gate 2633:Sequential 2540:Functional 2520:Clock rate 2493:Data cache 2466:Components 2447:Multi-core 2435:Core count 1925:Preemptive 1829:Pipelining 1812:Bit-serial 1755:Wide-issue 1700:Structural 1622:Tilera ISA 1588:MicroBlaze 1558:ETRAX CRIS 1453:Comparison 1298:Load–store 1278:Endianness 989:2023-06-05 965:2010-08-21 933:2010-08-21 901:2010-08-21 791:References 778:2023-06-05 563:memory map 407:Since the 319:interrupts 236:system bus 180:(CPU) and 80:newspapers 2821:Circuitry 2741:Microcode 2665:Registers 2508:coherence 2483:CPU cache 2341:Word size 2006:Processor 1650:Execution 1553:DEC Alpha 1531:Power ISA 1347:Cognitive 1154:Universal 1022:Microsoft 644:mmiotrace 640:mmiotrace 543:kibibytes 317:Hardware 224:registers 2997:Category 2759:Datapath 2452:Manycore 2424:variable 2262:Hardware 1898:Temporal 1578:OpenRISC 1273:Cellular 1263:Dataflow 1256:modified 650:See also 612:aliasing 453:Examples 439:PCI hole 393:5 series 306:Overview 194:channels 186:computer 18:I/O port 2935:Related 2866:Quantum 2856:Digital 2851:Boolean 2749:Counter 2648:Quantum 2409:512-bit 2404:256-bit 2399:128-bit 2242:(MPSoC) 2227:on chip 2225:Systems 2043:(FLOPS) 1856:Process 1705:Control 1687:Hazards 1573:Itanium 1568:Unicore 1526:PowerPC 1251:Harvard 1211:Pointer 1206:Counter 1164:Quantum 473:Device 262:range. 232:MOV ... 190:chipset 94:scholar 2871:Switch 2861:Analog 2599:(IMC) 2570:(MMU) 2419:others 2394:64-bit 2389:48-bit 2384:32-bit 2379:24-bit 2374:16-bit 2369:15-bit 2364:12-bit 2201:Mobile 2117:Stream 2112:Barrel 2107:Vector 2096:(GPU) 2055:(SUPS) 2023:(IPC) 1875:Memory 1868:Vector 1851:Thread 1834:Scalar 1636:Others 1583:RISC-V 1548:SuperH 1517:Power 1513:MIPS-X 1488:PDP-11 1337:Fabric 1089:Models 852:  816:  723:(ACPI) 693:Unibus 687:PDP-11 636:pcimem 409:caches 386:x86-64 377:x86-64 360:64-bit 356:32-bit 352:16-bit 164:) and 96:  89:  82:  75:  67:  2927:(PPW) 2885:Power 2777:Adder 2653:Array 2620:Logic 2581:(TLB) 2564:(FPU) 2558:(AGU) 2552:(ALU) 2542:units 2478:Cache 2359:8-bit 2354:4-bit 2349:1-bit 2313:(TPU) 2307:(DSP) 2301:(PPU) 2295:(VPU) 2284:(GPU) 2253:(NoC) 2236:(SoC) 2171:(PoP) 2165:(SiP) 2159:(MCM) 2100:GPGPU 2090:(CPU) 2080:Types 2061:(PPW) 2049:(TPS) 2037:(IPS) 2029:(CPI) 1800:Level 1611:S/390 1606:S/370 1601:S/360 1543:SPARC 1521:POWER 1404:TRIPS 1372:Types 984:Intel 951:(PDF) 919:(PDF) 887:(PDF) 838:(PDF) 772:Intel 768:(PDF) 733:Notes 675:PDP-8 536:8-bit 470:Size 373:IA-32 184:in a 101:JSTOR 87:books 2905:ACPI 2638:Glue 2530:FIFO 2473:Core 2211:ASIP 2152:CPLD 2147:FPOA 2142:FPGA 2137:ASIC 1990:SPMD 1985:MIMD 1980:MISD 1973:SWAR 1953:SIMD 1948:SISD 1863:Data 1846:Task 1817:Word 1563:M32R 1508:MIPS 1471:sets 1438:ZISC 1433:NISC 1428:OISC 1423:MISC 1416:EPIC 1411:VLIW 1399:EDGE 1389:RISC 1384:CISC 1293:HUMA 1288:NUMA 850:ISBN 814:ISBN 747:DRAM 680:Nova 661:mmap 528:ROM 484:RAM 437:and 375:and 358:and 290:outl 288:and 286:outw 282:outb 272:and 218:and 170:PMIO 162:MMIO 73:news 2900:APM 2895:PMU 2787:CPU 2744:ROM 2515:Bus 2132:PAL 1807:Bit 1593:LMC 1498:ARM 1493:x86 1483:VAX 749:in 581:). 571:RAM 447:MMU 443:x86 382:AMD 367:x86 350:As 344:ALU 324:bit 299:bus 278:x86 274:out 256:RAM 196:on 56:by 2999:: 2834:3D 1038:. 1020:. 982:. 957:. 953:. 925:. 921:. 893:. 889:. 848:. 844:. 840:. 808:. 770:. 467:) 284:, 270:in 204:. 1073:e 1066:t 1059:v 1042:. 992:. 968:. 936:. 904:. 872:. 858:. 822:. 783:; 781:. 614:. 600:. 168:( 160:( 154:. 147:. 140:. 123:) 117:( 112:) 108:( 98:· 91:· 84:· 77:· 50:. 20:)

Index

I/O port

verification
improve this article
adding citations to reliable sources
"Memory-mapped I/O and port-mapped I/O"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
Computer port (hardware)
Memory-mapped file
Programmed input–output
Saltillo Airport
input/output
central processing unit
peripheral devices
computer
chipset
channels
mainframe computers
instructions
address space
main memory
I/O devices
registers
physical RAM
system bus

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

↑