Knowledge (XXG)

C.mmp

Source 📝

280:(MTBF) of one processor was 24 hours, then the overall system reliability was 16/24 hours, or about 40 minutes. Overall, the system usually ran for between two and six hours. Many of these failures were due to timing glitches in the many custom circuits added to the processors. Great effort was expended to improve hardware reliability, and when a processor was noticeably failing, it was partitioned out, and would run diagnostics for several hours. When it had passed a first set of diagnostics, it was partitioned back in as an 1859: 1849: 284:
and would not run application code (but its peripheral devices were now available); it continued to run diagnostics. If it passed these after several more hours, it was reinstated as a full member of the processor set. Similarly, if a block of memory (one page) was detected as faulty, it was removed
17: 186:
board was designed that intercepted certain instructions and implemented the protected operating system requirements. For example, it was necessary, for operating system integrity, that the stack pointer register never be odd. On the 11/20, this was done by clipping the lead to the low-order bit of
128:
on the other. If all 16 processors were accessing different banks of memory, the memory accesses would all be concurrent. If two or more processors were trying to access the same bank of memory, one of them would be granted access on one cycle and the remainder would be negotiated on subsequent
167:
The original processors were PDP-11/20 processors, but in the final system, only five of these were used; the remaining 11 were PDP-11/40 processors, which were modified by having extra writeable microcode space. All modifications to these machines were designed and built at CMU.
145:, and the two high-order bits were used to select one of four relocation registers which selected a bank of memory. Properly managing these registers was one of the challenges of programming the 99:(I/O) system (designed by Roy Levin) hid the connectivity of the devices and routed the requests to the hosting processor. If a processor went down, the devices connected to its 469: 920: 1853: 462: 374: 91:
minicomputers were used as the processing elements, named Compute Modules (CMs) in the system. Each CM had a local memory of 8K and a local set of
276:
Because overall system reliability depended on having all 16 CPUs running, there were serious problems with overall hardware reliability. If the
753: 285:
from the pool of available pages, and until otherwise notified, the OS would ignore this page. Thus, the OS became an early example of a
455: 33: 1629: 436: 322: 187:
the stack register. On the 11/40, any access to the stack was intercepted by the proc-mod board and generated an illegal data access
417: 1654: 137:
of 16-bits, another address translation unit was added to expand the address space to 25 bits for the shared memory space. The
1538: 1512: 1506: 1500: 1494: 1890: 1693: 85: 1185: 661: 493: 405: 1895: 1885: 1107: 529: 212: 117:
An Interprocessor bus – used to distribute system-wide clock, interrupt, and process control messaging among the CMs
1834: 1681: 1431: 566: 514: 277: 95:
devices. One of the challenges was that a device was only available through its unique connected processor, so the
41: 1721: 1699: 1596: 1338: 1269: 1224: 1203: 1142: 976: 774: 746: 603: 553: 524: 224: 208: 150: 1714: 1675: 1550: 1256: 1135: 651: 593: 346: 204: 1667: 1462: 1209: 519: 499: 478: 61: 1052: 1012: 1863: 1378: 1309: 1262: 993: 804: 783: 613: 1842: 1687: 1349: 969: 739: 638: 235: 231: 161: 157: 1801: 534: 216: 20:
The C.mmp memory unit, with three racks visible, including the front panel of the crossbar switch.
1710: 1245: 928: 720: 584: 261: 1786: 1771: 1751: 831: 504: 432: 413: 328: 318: 250: 1072: 1023: 810: 549: 200: 188: 146: 142: 394:
C.mmp: The CMU Multiminiprocessor Computer: Requirements and Overview of the Initial Design
103:
became unavailable, which became a problem in overall system reliability. Processor 0 (the
1756: 1454: 849: 561: 509: 287: 121: 37: 1796: 1781: 1761: 1283: 899: 799: 715: 622: 242: 1879: 1806: 1776: 947: 710: 134: 125: 1811: 1581: 1561: 1191: 892: 886: 705: 700: 646: 393: 389: 96: 57: 45: 76:. As of 2020, the machine is on display at CMU, in Wean Hall, on the ninth floor. 1641: 1291: 1287: 766: 762: 671: 385: 370: 308: 220: 53: 1743: 1647: 1611: 963: 679: 628: 92: 447: 332: 1791: 1766: 1530: 1400: 1390: 1298: 1084: 1044: 821: 618: 179: 175: 172: 731: 406:"Reflections in a Pool of Processors: An Experience Report on C.mmp/Hydra" 1617: 1574: 1438: 1370: 1178: 1058: 986: 954: 838: 598: 265: 257: 1733: 1660: 1623: 1543: 1520: 1489: 1468: 1443: 1416: 1409: 1318: 1099: 1090: 1005: 999: 539: 105: 1727: 1604: 1364: 1358: 1331: 1324: 1250: 1239: 1233: 1154: 1123: 905: 588: 580: 576: 571: 312: 291:
system, able to deal with hardware problems which arose, inevitably.
246: 138: 100: 88: 427:
Wulf, Wm. A.; Harbison, Samuel P. III; Levin, Roy (1 January 1981).
1480: 1276: 1197: 1148: 1078: 1065: 1034: 876: 793: 656: 608: 238: 15: 113:
Each of the Compute Modules shared these communication pathways:
1161: 864: 858: 695: 735: 451: 256:
Among the programming languages available on the system was an
16: 1635: 1129: 936: 171:
Most of the 11/20 modifications were custom changes to the
124:– used to connect the 16 CMs on one side and 16 banks of 160:, but during its lifetime, higher performance dynamic 164:(RAM) became available and the system was upgraded. 1742: 1709: 1560: 1529: 1479: 1453: 1399: 1389: 1348: 1308: 1223: 1170: 1043: 1033: 1022: 875: 848: 820: 782: 773: 688: 670: 637: 548: 486: 412:. Gulf Professional Publishing. pp. 561–573. 178:, but because the PDP-11/40 was implemented in 68:, a variant was noted by the dot notation, and 1854:Category: Microkernel-based operating systems 747: 463: 260:variant which included extensions supporting 8: 429:HYDRA/C.mmp: An Experimental Computer System 399:(Report). Carnegie Mellon University (CMU). 380:(Report). Carnegie Mellon University (CMU). 264:, to make good use of the C.mmp. The ALGOL 1396: 1040: 1030: 779: 754: 740: 732: 470: 456: 448: 404:Wulf, Wm. A.; Harbison, S. P. III (2000). 314:Computer structures: readings and examples 300: 223:. System resources were represented as 7: 227:and protected through capabilities. 30:multiple instruction, multiple data 14: 410:Readings in Computer Architecture 347:"Loosely Coupled Multiprocessors" 141:architecture provided 18 bits of 1858: 1857: 1848: 1847: 110:) had the disk drives attached. 156:The original C.mmp design used 133:Since the PDP-11 had a logical 52:came from the PMS notation of 1: 388:; Broadley, W.; Wulf, W. A.; 375:C.mmp: A multi-mini-processor 86:Digital Equipment Corporation 494:Principle of least privilege 191:if the low-order bit was 1. 1108:Multi-Environment Real-Time 530:Capability-based addressing 1912: 278:mean time between failures 249:. The OS used very little 42:Carnegie Mellon University 1820: 525:Capability-based security 268:ran native on Hydra OS. 64:(CPU) was designated as 520:Object-capability model 500:Confused deputy problem 62:central processing unit 1864:Category: Microkernels 392:; Pierson, C. (1971). 373:; Bell, C. G. (1972). 351:www.edwardbosworth.com 21: 639:Programming languages 48:(1971). The notation 19: 1891:History of computing 1843:Open-source software 1350:Java virtual machine 689:Specialised hardware 241:-11, which required 236:programming language 232:application software 162:random-access memory 158:magnetic-core memory 74:Multi-Mini-Processor 40:system developed at 1802:Andrew S. Tanenbaum 234:was written in the 1896:Parallel computing 1886:Capability systems 721:Plessey System 250 262:parallel computing 22: 1873: 1872: 1787:James G. Mitchell 1772:Per Brinch Hansen 1591: 1590: 1426: 1425: 1219: 1218: 915: 914: 832:Mac OS nanokernel 729: 728: 550:Operating systems 505:Ambient authority 479:Object-capability 251:assembly language 1903: 1861: 1860: 1851: 1850: 1397: 1225:Capability-based 1041: 1031: 780: 756: 749: 742: 733: 535:Zooko's triangle 472: 465: 458: 449: 442: 423: 400: 398: 381: 379: 361: 360: 358: 357: 343: 337: 336: 305: 230:The OS and most 201:operating system 195:Operating system 147:operating system 143:physical address 1911: 1910: 1906: 1905: 1904: 1902: 1901: 1900: 1876: 1875: 1874: 1869: 1846: 1816: 1757:Thomas Bushnell 1738: 1705: 1587: 1556: 1525: 1475: 1449: 1422: 1385: 1344: 1304: 1215: 1166: 1025: 1018: 911: 871: 844: 816: 769: 760: 730: 725: 684: 666: 633: 544: 510:File descriptor 482: 476: 446: 439: 431:. McGraw-Hill. 426: 420: 403: 396: 384: 377: 369: 365: 364: 355: 353: 345: 344: 340: 325: 317:. McGraw-Hill. 309:Bell, C. Gordon 307: 306: 302: 297: 274: 243:cross-compiling 213:object-oriented 203:(OS) was named 197: 122:crossbar switch 82: 12: 11: 5: 1909: 1907: 1899: 1898: 1893: 1888: 1878: 1877: 1871: 1870: 1868: 1867: 1838: 1830: 1828:= discontinued 1821: 1818: 1817: 1815: 1814: 1809: 1804: 1799: 1797:Richard Rashid 1794: 1789: 1784: 1782:Jochen Liedtke 1779: 1774: 1769: 1764: 1762:David Cheriton 1759: 1754: 1748: 1746: 1740: 1739: 1737: 1731: 1725: 1719: 1717: 1707: 1706: 1704: 1703: 1697: 1691: 1672: 1664: 1658: 1651: 1645: 1639: 1633: 1627: 1621: 1615: 1609: 1601: 1592: 1589: 1588: 1586: 1585: 1566: 1564: 1558: 1557: 1555: 1554: 1547: 1541: 1535: 1533: 1527: 1526: 1524: 1523: 1518: 1517: 1516: 1513:Icaros Desktop 1510: 1504: 1492: 1486: 1484: 1477: 1476: 1474: 1459: 1457: 1451: 1450: 1448: 1447: 1439:Classic Mac OS 1435: 1427: 1424: 1423: 1421: 1420: 1413: 1405: 1403: 1394: 1387: 1386: 1384: 1383: 1375: 1354: 1352: 1346: 1345: 1343: 1342: 1336: 1328: 1322: 1315: 1313: 1306: 1305: 1303: 1302: 1284:HarmonyOS NEXT 1280: 1273: 1266: 1260: 1253: 1229: 1227: 1221: 1220: 1217: 1216: 1214: 1213: 1207: 1201: 1195: 1189: 1183: 1174: 1172: 1168: 1167: 1165: 1158: 1151: 1146: 1139: 1133: 1127: 1120: 1104: 1096: 1095: 1094: 1088: 1076: 1069: 1062: 1056: 1049: 1047: 1038: 1028: 1020: 1019: 1017: 1016: 1009: 1006:TI-RTOS kernel 1003: 997: 990: 983: 982:Off++ → Plan B 980: 973: 967: 960: 959: 958: 944: 941: 933: 925: 916: 913: 912: 910: 909: 902: 897: 896: 895: 882: 880: 873: 872: 870: 869: 854: 852: 846: 845: 843: 842: 835: 827: 825: 818: 817: 815: 814: 808: 789: 787: 777: 771: 770: 761: 759: 758: 751: 744: 736: 727: 726: 724: 723: 718: 716:Intel iAPX 432 713: 708: 703: 698: 692: 690: 686: 685: 683: 682: 676: 674: 668: 667: 665: 664: 659: 654: 649: 643: 641: 635: 634: 632: 631: 626: 623:HarmonyOS NEXT 616: 611: 606: 601: 596: 591: 574: 569: 564: 558: 556: 546: 545: 543: 542: 537: 532: 527: 522: 517: 512: 507: 502: 497: 490: 488: 484: 483: 477: 475: 474: 467: 460: 452: 445: 444: 438:978-0070721203 437: 424: 418: 401: 382: 366: 363: 362: 338: 324:978-0070043572 323: 299: 298: 296: 293: 288:fault-tolerant 273: 270: 196: 193: 131: 130: 129:memory cycles. 118: 81: 78: 38:multiprocessor 13: 10: 9: 6: 4: 3: 2: 1908: 1897: 1894: 1892: 1889: 1887: 1884: 1883: 1881: 1866: 1865: 1856: 1855: 1845: 1844: 1839: 1837: 1836: 1831: 1829: 1826: 1823: 1822: 1819: 1813: 1810: 1808: 1807:Avie Tevanian 1805: 1803: 1800: 1798: 1795: 1793: 1790: 1788: 1785: 1783: 1780: 1778: 1777:Gernot Heiser 1775: 1773: 1770: 1768: 1765: 1763: 1760: 1758: 1755: 1753: 1750: 1749: 1747: 1745: 1741: 1735: 1732: 1729: 1726: 1723: 1720: 1718: 1716: 1712: 1708: 1701: 1698: 1695: 1692: 1690: 1689: 1684: 1683: 1678: 1677: 1673: 1670: 1669: 1665: 1662: 1659: 1657: 1656: 1652: 1649: 1646: 1643: 1640: 1637: 1634: 1631: 1628: 1625: 1622: 1619: 1616: 1613: 1610: 1607: 1606: 1602: 1599: 1598: 1594: 1593: 1584: 1583: 1578: 1576: 1571: 1568: 1567: 1565: 1563: 1559: 1553: 1552: 1548: 1545: 1542: 1540: 1537: 1536: 1534: 1532: 1528: 1522: 1519: 1514: 1511: 1508: 1505: 1502: 1499: 1498: 1496: 1493: 1491: 1488: 1487: 1485: 1482: 1478: 1472: 1470: 1465: 1464: 1460: 1458: 1456: 1452: 1445: 1441: 1440: 1436: 1434: 1433: 1429: 1428: 1419: 1418: 1414: 1412: 1411: 1407: 1406: 1404: 1402: 1398: 1395: 1392: 1388: 1381: 1380: 1376: 1373: 1372: 1368:^ integrates 1367: 1366: 1361: 1360: 1356: 1355: 1353: 1351: 1347: 1340: 1337: 1334: 1333: 1329: 1326: 1323: 1320: 1317: 1316: 1314: 1311: 1307: 1301: 1300: 1295: 1293: 1289: 1285: 1281: 1279: 1278: 1274: 1272: 1271: 1267: 1264: 1261: 1259: 1258: 1254: 1252: 1248: 1247: 1242: 1241: 1236: 1235: 1231: 1230: 1228: 1226: 1222: 1211: 1208: 1205: 1202: 1199: 1196: 1193: 1190: 1187: 1184: 1182: 1180: 1176: 1175: 1173: 1169: 1164: 1163: 1159: 1157: 1156: 1152: 1150: 1147: 1145: 1144: 1140: 1137: 1134: 1131: 1128: 1126: 1125: 1121: 1118: 1114: 1110: 1109: 1105: 1102: 1101: 1097: 1092: 1089: 1086: 1083: 1082: 1080: 1077: 1075: 1074: 1070: 1068: 1067: 1063: 1060: 1057: 1055: 1054: 1050: 1048: 1046: 1042: 1039: 1036: 1032: 1029: 1027: 1021: 1015: 1014: 1010: 1007: 1004: 1001: 998: 996: 995: 991: 989: 988: 984: 981: 979: 978: 974: 971: 968: 966: 965: 961: 956: 953: 952: 950: 949: 945: 943:Little Kernel 942: 939: 938: 934: 931: 930: 926: 923: 922: 918: 917: 908: 907: 903: 901: 898: 894: 891: 890: 889: 888: 884: 883: 881: 878: 874: 867: 866: 861: 860: 856: 855: 853: 851: 847: 841: 840: 836: 834: 833: 829: 828: 826: 823: 819: 812: 809: 806: 802: 801: 796: 795: 791: 790: 788: 785: 781: 778: 776: 772: 768: 764: 757: 752: 750: 745: 743: 738: 737: 734: 722: 719: 717: 714: 712: 711:IBM System/38 709: 707: 704: 702: 701:Cambridge CAP 699: 697: 694: 693: 691: 687: 681: 678: 677: 675: 673: 669: 663: 660: 658: 655: 653: 650: 648: 645: 644: 642: 640: 636: 630: 627: 624: 620: 617: 615: 612: 610: 607: 605: 602: 600: 597: 595: 592: 590: 586: 582: 578: 575: 573: 570: 568: 565: 563: 560: 559: 557: 555: 551: 547: 541: 538: 536: 533: 531: 528: 526: 523: 521: 518: 516: 513: 511: 508: 506: 503: 501: 498: 495: 492: 491: 489: 485: 480: 473: 468: 466: 461: 459: 454: 453: 450: 440: 434: 430: 425: 421: 419:9781558605398 415: 411: 407: 402: 395: 391: 387: 383: 376: 372: 368: 367: 352: 348: 342: 339: 334: 330: 326: 320: 316: 315: 310: 304: 301: 294: 292: 290: 289: 283: 282:I/O processor 279: 271: 269: 267: 263: 259: 254: 252: 248: 244: 240: 237: 233: 228: 226: 222: 218: 214: 210: 206: 202: 194: 192: 190: 185: 182:, a separate 181: 177: 174: 169: 165: 163: 159: 154: 152: 148: 144: 140: 136: 135:address space 127: 126:shared memory 123: 119: 116: 115: 114: 111: 109: 107: 102: 98: 94: 90: 87: 79: 77: 75: 71: 67: 63: 59: 55: 51: 47: 43: 39: 35: 31: 28:was an early 27: 18: 1862: 1852: 1840: 1832: 1827: 1824: 1812:William Wulf 1686: 1680: 1674: 1666: 1653: 1603: 1595: 1582:Workplace OS 1580: 1573: 1569: 1562:AIM alliance 1549: 1467: 1461: 1437: 1430: 1415: 1408: 1377: 1369: 1363: 1357: 1330: 1297: 1282: 1275: 1268: 1255: 1244: 1238: 1232: 1192:Nucleus RTOS 1177: 1160: 1153: 1141: 1122: 1116: 1112: 1106: 1098: 1071: 1064: 1051: 1011: 992: 985: 975: 962: 946: 935: 927: 919: 904: 885: 863: 857: 837: 830: 798: 792: 763:Microkernels 672:File systems 428: 409: 354:. Retrieved 350: 341: 313: 303: 286: 281: 275: 255: 229: 198: 183: 173:wire-wrapped 170: 166: 155: 132: 112: 104: 97:input/output 83: 73: 69: 65: 58:Allen Newell 49: 46:William Wulf 29: 25: 23: 1752:Gordon Bell 1642:OpenComRTOS 1539:Singularity 1365:Chorus/Jazz 1288:OpenHarmony 767:nanokernels 386:Bell, C. G. 371:Wulf, W. A. 272:Reliability 221:microkernel 54:Gordon Bell 1880:Categories 1744:Developers 1711:Frameworks 1648:Phantom OS 1612:ChibiOS/RT 970:µ-velOSity 964:MicroEmpix 680:Tahoe-LAFS 629:Phantom OS 390:Newell, A. 356:2018-09-11 295:References 217:multi-user 209:capability 93:peripheral 72:stood for 60:, where a 1835:Real-time 1792:Ike Nassi 1767:Dan Dodge 1531:Microsoft 1401:Unix-like 1391:Macintosh 1299:HarmonyOS 1186:Integrity 1085:Minix-vmd 1045:Unix-like 1024:Operating 822:Macintosh 619:HarmonyOS 333:633760282 207:. It was 180:microcode 176:backplane 108:processor 80:Structure 44:(CMU) by 1618:FreeRTOS 1575:Taligent 1507:Broadway 1501:AspireOS 1371:ChorusOS 1292:Oniro OS 1179:ChorusOS 1059:GNU Hurd 1013:Vanguard 955:GNU Mach 839:NuKernel 599:iMAX 432 562:Capsicum 540:Petnames 487:Concepts 481:security 311:(1981). 266:compiler 258:ALGOL 68 219:, and a 211:-based, 184:proc-mod 120:A 16x16 84:Sixteen 1825:Italics 1734:TI-RTOS 1682:Harmony 1661:SharpOS 1655:RC 4000 1624:HelenOS 1544:ThreadX 1521:MorphOS 1490:AmigaOS 1469:Symbian 1446:kernel) 1444:PowerPC 1432:Copland 1417:MacMach 1410:MachTen 1171:Partial 1117:Unix-RT 1100:MkLinux 1091:Minix 3 1037:support 1026:systems 1000:RTLinux 994:PowerUP 977:nucleus 775:Kernels 567:Fuchsia 554:kernels 225:objects 1728:Genode 1722:Cosmos 1700:Zephyr 1605:BeRTOS 1597:Amoeba 1393:hosted 1359:JavaOS 1339:Wombat 1332:REX OS 1325:PikeOS 1319:LLinux 1312:kernel 1270:Midori 1251:CapROS 1240:KeyKOS 1234:GNOSIS 1155:UNICOS 1143:Spring 1124:OS2000 1073:MeikOS 906:WarpOS 893:ExecSG 824:hosted 786:family 647:Cajita 604:Midori 589:CapROS 581:KeyKOS 577:GNOSIS 572:Genode 515:C-list 496:(PoLP) 435:  416:  331:  321:  247:PDP-10 151:kernel 139:Unibus 101:Unibus 89:PDP-11 1676:Thoth 1630:µC/OS 1551:Verve 1483:-type 1481:Amiga 1455:Psion 1277:NLTSS 1257:Hydra 1198:NuttX 1149:Tinix 1136:Redox 1079:Minix 1066:Lites 1035:POSIX 921:ADEOS 900:Quark 879:-type 877:Amiga 850:Psion 794:Eumel 662:Joule 657:Joe-E 609:NLTSS 594:Hydra 397:(PDF) 378:(PDF) 245:on a 239:BLISS 205:Hydra 149:(OS) 50:C.mmp 26:C.mmp 1841:° = 1833:^ = 1715:kits 1694:VRTX 1685:^ → 1679:^ → 1668:SPIN 1570:Pink 1495:AROS 1463:EPOC 1263:seL4 1246:EROS 1210:RIOT 1162:VSTa 1113:MERT 987:Opus 948:Mach 929:EROS 887:Exec 865:EKA2 859:EKA1 811:OKL4 706:Flex 696:BiiN 614:seL4 585:EROS 433:ISBN 414:ISBN 329:OCLC 319:ISBN 199:The 189:trap 106:boot 56:and 34:MIMD 24:The 1636:MQX 1204:OSE 1130:QNX 1111:^ ( 1053:ARX 937:K42 70:mmp 1882:: 1736:^° 1713:, 1702:^° 1650:^° 1632:^° 1620:^° 1614:^° 1608:^° 1579:→ 1577:OS 1572:→ 1497:° 1473:^° 1471:OS 1466:→ 1379:JX 1374:^) 1341:^° 1321:^° 1310:L4 1296:→ 1290:, 1265:^° 1249:→ 1243:→ 1237:→ 1212:^° 1200:^° 1115:– 1081:° 1008:^° 951:° 932:^° 868:^° 862:→ 805:L4 803:→ 800:L3 797:→ 784:L4 587:→ 583:→ 579:→ 552:, 408:. 349:. 327:. 253:. 215:, 153:. 36:) 1730:° 1724:° 1696:^ 1688:V 1671:° 1663:° 1644:^ 1638:^ 1626:° 1600:° 1546:^ 1515:° 1509:° 1503:° 1442:( 1382:° 1362:( 1335:^ 1327:^ 1294:) 1286:( 1206:^ 1194:^ 1188:^ 1181:^ 1138:° 1132:^ 1119:) 1103:° 1093:° 1087:° 1061:° 1002:° 972:^ 957:° 940:° 924:° 813:° 807:° 765:- 755:e 748:t 741:v 652:E 625:) 621:( 471:e 464:t 457:v 443:) 441:. 422:. 359:. 335:. 66:C 32:(

Index


MIMD
multiprocessor
Carnegie Mellon University
William Wulf
Gordon Bell
Allen Newell
central processing unit
Digital Equipment Corporation
PDP-11
peripheral
input/output
Unibus
boot
crossbar switch
shared memory
address space
Unibus
physical address
operating system
kernel
magnetic-core memory
random-access memory
wire-wrapped
backplane
microcode
trap
operating system
Hydra
capability

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