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
2099:
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
53:
1071:
2210:
1393:
764:
1912:
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
2069:
1635:
1452:
834:
720:
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
1415:
72:
2064:
2136:
79:
1889:
809:
853:
726:
2833:
1957:
1220:
1064:
86:
2843:
1984:
1111:
68:
2151:
1979:
1952:
1331:
817:
553:(ROM) and the remainder to a variety of other devices such as timers, counters, video display chips, sound generating devices, etc.
119:
1302:
845:
2966:
2529:
1422:
1388:
1383:
1267:
326:
of information with a fixed meaning, namely "an event that requires attention has occurred in a device on this interrupt line".
2941:
2838:
2239:
2146:
1947:
1190:
1168:
1057:
1686:
1121:
201:
57:
705:
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
2141:
1989:
1823:
1437:
1398:
1255:
596:
1:1 mapping of unique addresses to one hardware register (physical memory location). Involves checking every line of the
2578:
2423:
2418:
2340:
1816:
1777:
1432:
1427:
1361:
1173:
226:
of the I/O devices are mapped to (associated with) address values, so a memory address may refer to either a portion of
1297:
655:
449:
design. 64-bit architectures often technically have similar issues, but these only rarely have practical consequences.
144:
93:
2205:
1902:
1600:
979:
2855:
2502:
1919:
1410:
1378:
1148:
1136:
1116:
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.
46:
2946:
2909:
2899:
1287:
2961:
2368:
2304:
2281:
2131:
2093:
1929:
1879:
1874:
1351:
1245:
1153:
133:
1158:
416:
does not guarantee that the data will reach the peripherals in that order. Any program that does not include
2914:
2697:
2591:
2555:
2472:
2456:
2298:
2087:
2046:
2034:
1897:
1811:
1732:
1497:
1101:
1017:
177:
642:
debug facility. To enable this, the Linux kernel should be compiled with the corresponding option enabled.
2720:
2692:
2602:
2567:
2316:
2310:
2292:
2026:
2020:
1924:
1828:
1719:
1658:
1520:
1163:
958:
446:
396:
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"
230:
or to memory and registers of the I/O device. Thus, the CPU instructions used to access the memory (e.g.
3002:
2894:
2803:
2549:
2261:
2079:
1838:
1806:
1764:
1676:
1477:
1292:
1282:
1272:
1262:
1232:
1215:
1080:
343:
2924:
2860:
2446:
2168:
2058:
2005:
1537:
1250:
1106:
1088:
715:
611:
570:
546:
421:
optimizations might completely change the meaning and effect of writes to memory-mapped I/O regions.
311:
268:
often uses a special class of CPU instructions designed specifically for performing I/O, such as the
255:
223:
2971:
2573:
2956:
2776:
2627:
2609:
2561:
2215:
2162:
1967:
1962:
1939:
1855:
1737:
1592:
1487:
1346:
578:
2828:
2820:
2672:
2647:
2451:
2326:
1850:
1791:
1671:
1403:
1131:
666:
197:
137:
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:
388:
architecture to support 64-bit ports, so 64-bit transfers cannot be performed using port I/O.
239:
181:
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
2951:
2884:
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:
948:"AMD64 Architecture Programmer's Manual: Volume 3: General-Purpose and System Instructions"
2865:
2850:
2798:
2702:
2677:
2514:
2507:
2358:
2353:
2348:
2287:
2195:
2185:
1907:
1742:
1694:
1457:
1341:
1309:
1210:
1205:
1126:
1039:
558:
339:
227:
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 (
2976:
2810:
2793:
2786:
2682:
2539:
2276:
2190:
2121:
1704:
1666:
1615:
1610:
1605:
1319:
1143:
700:
538:
426:
417:
392:
247:
947:
577:, this character cell method was a popular technique for computer video displays (see
2996:
2771:
2687:
1727:
1709:
1502:
1195:
211:
915:
883:
2981:
2919:
2735:
2712:
2524:
2245:
1183:
434:
413:
298:
293:
251:
173:
1035:
17:
2766:
2730:
2441:
2413:
2271:
2126:
710:
597:
464:
215:
193:
192:). An alternative approach is using dedicated I/O processors, commonly known as
35:
2652:
2642:
2637:
2619:
2519:
2492:
1754:
1587:
1557:
1277:
869:
745:
A memory that besides registers is directly accessible by the processor, e.g.
562:
235:
219:
425:
address-space as selectors for memory-mapped I/O functions. For example, the
2743:
2740:
2482:
1552:
1530:
1021:
318:
143:"Port-mapped I/O" redirects here. For the related concept in computing, see
2758:
1630:
1577:
1049:
542:
541:
might provide 16-bit address lines, allowing it to address up to 64
438:
185:
150:"MMIO" redirects here. For the airport in Mexico with the code MMIO, see
1567:
1525:
569:
into a special area of RAM within the video controller. Prior to cheap
189:
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
2870:
1582:
1547:
1512:
1018:"Partial Address Decoding and I/O Space in Windows Operating Systems"
692:
686:
574:
385:
376:
359:
355:
351:
2040:
1572:
1542:
771:
674:
535:
395:, I/O devices on the chipset directly communicate via a dedicated
372:
2904:
2052:
1972:
1562:
746:
660:
335:
1053:
980:"What Is the Direct Media Interface (DMI) of Intel Processors?"
610:
Synonyms: foldback, multiply mapped, partially mapped, address
1492:
1482:
442:
381:
323:
277:
29:
923:
Intel 64 and IA-32 Architectures
Software Developer's Manual
891:
Intel 64 and IA-32 Architectures
Software Developer's Manual
384:
did not extend the port I/O instructions when defining the
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.
2934:
2883:
2819:
2757:
2711:
2663:
2618:
2538:
2465:
2434:
2339:
2260:
2224:
2178:
2078:
2004:
1938:
1888:
1799:
1790:
1763:
1718:
1685:
1657:
1648:
1468:
1371:
1360:
1231:
1087:
276:instructions found on microprocessors based on the
231:
60:. Unsourced material may be challenged and removed.
354:processors have become obsolete and replaced with
671:Early examples of computers with port-mapped I/O
842:Fundamentals of Computer Organization and Design
254:, which uses a form of memory mapping to cause
172:) are two complementary methods of performing
1065:
391:On newer Intel platforms beginning with 2008
8:
753:computers or Flash/SRAM in microcontrollers.
250:). An example of the latter is found in the
2070:Computer performance by orders of magnitude
663:, not to be confused with memory-mapped I/O
2535:
2175:
1796:
1654:
1368:
1072:
1058:
1050:
765:"10th Generation Intel Processor Families"
721:Advanced Configuration and Power Interface
456:
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
796:
738:
69:"Memory-mapped I/O and port-mapped I/O"
955:AMD64 Architecture Programmer's Manual
835:"Chapter 19 Input/Output Organization"
810:McGraw-Hill International Book Company
806:Computer Architecture and Organization
833:Dandamudi, Sivarama P. (2006-05-31).
727:Transient execution CPU vulnerability
7:
2041:Floating-point operations per second
58:adding citations to reliable sources
870:"Bochs VBE Extensions - OSDev Wiki"
961:. November 2009. pp. 117, 181
371:Memory-mapped I/O is preferred in
136:. For memory-mapped file I/O, see
25:
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
45:needs additional citations for
1122:Deterministic finite automaton
593:Complete (exhaustive) decoding
549:(RAM), another 16 KiB to
338:, and is also advantageous in
1:
1913:Simultaneous and heterogenous
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
2053:Synaptic updates per second
897:. June 2010. pp. 3–520
706:Ralf Brown's Interrupt List
626:Port I/O via device drivers
561:, and that establishes the
458:A sample system memory map
242:, or uses a dedicated bus.
27:Method of CPU communication
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
2910:Dynamic frequency scaling
2065:Cache performance metrics
2962:Hardware security module
2305:Digital signal processor
2282:Graphics processing unit
2094:Graphics processing unit
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
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:
18:Memory mapped I/O
16:(Redirected from
3010:
2952:Processor design
2844:Power management
2726:Instruction unit
2587:Branch predictor
2536:
2234:System on a chip
2176:
2016:Transistor count
1940:Flynn's taxonomy
1797:
1655:
1458:Addressing modes
1369:
1315:Memory hierarchy
1179:Hypercomputation
1097:Abstract machine
1074:
1067:
1060:
1051:
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:
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:
832:
831:
827:
820:
812:. p. 419.
803:
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:
3014:
3006:
3005:
2995:
2994:
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:
1079:
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:
24:
14:
13:
10:
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:
1028:
1024:. 2001-12-04.
1023:
1019:
1013:
1010:
1005:
999:
996:
985:
981:
975:
972:
960:
956:
949:
943:
940:
928:
924:
917:
911:
908:
896:
892:
885:
879:
876:
871:
865:
862:
857:
851:
847:
843:
836:
829:
826:
821:
819:0-07-027363-4
815:
811:
807:
800:
797:
790:
773:
766:
759:
756:
752:
748:
742:
739:
732:
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:
649:
647:
645:
641:
632:
625:
619:
616:
613:
609:
605:
602:
599:
595:
592:
591:
590:
584:
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:
452:
450:
448:
444:
440:
436:
432:
428:
422:
419:
415:
410:
402:
400:
398:
394:
389:
387:
383:
378:
374:
366:
364:
361:
357:
353:
348:
345:
341:
337:
331:
327:
325:
320:
315:
313:
305:
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
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:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.