# HG changeset patch # User Noah Evans # Date 1307509215 0 # Node ID e72b21d5e7ab59020be343d61bf40379d603f353 # Parent c1ba3d50a74ac696e7a94627d564ce35736137a0 daily push: Tue Jun 7 07:00:04 CET 2011 diff -r c1ba3d50a74a -r e72b21d5e7ab doc/papers/nix/nix.ms --- a/doc/papers/nix/nix.ms Tue Jun 07 14:04:15 2011 +0000 +++ b/doc/papers/nix/nix.ms Wed Jun 08 05:00:15 2011 +0000 @@ -774,6 +774,25 @@ copy "results/rat.cycles.core.amd64.grap" .G2 .NH 2 +Two megabyte pages +.HP +We tested strid3 on a kernel built to support two Mbyte pages. +We show the results on tc and ac below. +.G1 +frame wid 5 top invis right invis +label bot "Strid3 on a tc" "Stride of 1 to 1024 by 1" "2 Mbyte pages" +label left "Slowdown over stride of 1" "Smaller is better" +draw solid +copy "results/strid3.2M.tc.grap" +.G2 +.G1 +frame wid 5 top invis right invis +label bot "Strid3 on an AC" "Stride of 1 to 1024 by 1" "2 Mbyte pages" +label left "Slowdown over stride of 1" "Smaller is better" +draw solid +copy "results/strid3.2M.ac.grap" +.G2 +.NH 2 ftq .HP FTQ, or Fixed Time Quantum, is a test designed to provide quantitative characterization of OS noise[4]. diff -r c1ba3d50a74a -r e72b21d5e7ab doc/papers/nix/nix.pdf Binary file doc/papers/nix/nix.pdf has changed diff -r c1ba3d50a74a -r e72b21d5e7ab doc/papers/nix/nix.ps --- a/doc/papers/nix/nix.ps Tue Jun 07 14:04:15 2011 +0000 +++ b/doc/papers/nix/nix.ps Wed Jun 08 05:00:15 2011 +0000 @@ -632,283 +632,343 @@ (J. Ballesteros) 3020 1770 w (Gorka Guardiola) 2653 1900 w (Enrique Soriano) 2671 2030 w -(Jim McKie) 2836 2160 w -(Charles) 2675 2290 w -(Forsyth) 3117 2290 w -(Noah Evans) 2784 2420 w -(ABSTRACT) 2817 2895 w -11 /LucidaSansUnicode00 f -(This) 1366 3175 w -(paper) 1647 3175 w -(describes) 2009 3175 w -(NIX,) 2573 3175 w -(a) 2847 3175 w -(prototype) 2965 3175 w -(operating) 3540 3175 w -(system) 4110 3175 w -(for) 4541 3175 w -(future) 4751 3175 w -(manycore) 1116 3305 w -(CPUs.) 1679 3305 w -(NIX) 2062 3305 w -(features) 2288 3305 w -(a) 2768 3305 w -(heterogeneous) 2873 3305 w -(CPU) 3713 3305 w -(model) 3970 3305 w -(and) 4346 3305 w -(a) 4588 3305 w -(change) 4693 3305 w -(from) 1116 3435 w -(the) 1443 3435 w -(traditional) 1687 3435 w -(Unix) 2309 3435 w -(memory) 2625 3435 w -(model) 3133 3435 w -(of) 3538 3435 w -(separate) 3719 3435 w -(virtual) 4249 3435 w -(address) 4658 3435 w -(spaces.) 1116 3565 w -(NIX) 1592 3565 w -(has) 1820 3565 w -(been) 2050 3565 w -(influenced) 2356 3565 w -(by) 2959 3565 w -(our) 3130 3565 w -(work) 3355 3565 w -(in) 3661 3565 w -(High) 3806 3565 w -(Performance) 4100 3565 w -(com\255) 4815 3565 w -(puting, both on Blue) 1116 3695 w -(Gene) 2243 3695 w -(and more) 2549 3695 w -(traditional) 3093 3695 w -(clusters.) 3677 3695 w -(NIX) 1366 3861 w -(partitions) 1586 3861 w -(cores) 2136 3861 w -(by) 2460 3861 w -(function:) 2624 3861 w -(Timesharing) 3138 3861 w -(Cores,) 3839 3861 w -(or) 4219 3861 w -(TCs;) 4370 3861 w -(Applica\255) 4645 3861 w -(tion) 1116 3991 w -(Cores,) 1360 3991 w -(or) 1737 3991 w -(ACs; and Kernel) 1885 3991 w -(Cores, or KCs.) 2772 3991 w -(There) 3604 3991 w -(is always at) 3945 3991 w -(least) 4592 3991 w -(one) 4879 3991 w -(TC,) 1116 4121 w -(and) 1350 4121 w -(it) 1602 4121 w -(runs) 1729 4121 w -(applications) 2020 4121 w -(in) 2718 4121 w -(the) 2872 4121 w -(traditional) 3097 4121 w -(model.) 3700 4121 w -(KCs) 4157 4121 w -(are) 4416 4121 w -(optional) 4639 4121 w -(cores) 1116 4251 w -(created) 1444 4251 w -(to) 1882 4251 w -(run) 2032 4251 w -(kernel) 2255 4251 w -(functions) 2630 4251 w -(on) 3169 4251 w -(demand.) 3346 4251 w -(ACs) 3889 4251 w -(are) 4138 4251 w -(also) 4347 4251 w -(optional,) 4604 4251 w -(and) 1116 4381 w -(are) 1351 4381 w -(entirely) 1556 4381 w -(turned) 1992 4381 w -(over) 2382 4381 w -(to) 2650 4381 w -(running) 2795 4381 w -(an) 3249 4381 w -(application,) 3416 4381 w -(with) 4077 4381 w -(no) 4341 4381 w -(interrupts;) 4514 4381 w -(not) 1116 4511 w -(even) 1349 4511 w -(clock) 1654 4511 w -(interrupts.) 1985 4511 w -(Unlike) 2638 4511 w -(traditional) 3028 4511 w -(HPC) 3633 4511 w -(Light) 3907 4511 w -(Weight) 4230 4511 w -(kernels,) 4652 4511 w -(functions) 1116 4641 w -(are) 1654 4641 w -(not) 1863 4641 w -(static:) 2080 4641 w -(the) 2443 4641 w -(number) 2655 4641 w -(of) 3110 4641 w -(TCs,) 3259 4641 w -(KCs,) 3536 4641 w -(and) 3817 4641 w -(ACs) 4057 4641 w -(can) 4307 4641 w -(change) 4534 4641 w -(as) 4959 4641 w -(needs) 1116 4771 w -(change.) 1495 4771 w -(Unlike) 2010 4771 w -(a) 2406 4771 w -(traditional) 2529 4771 w -(operating) 3140 4771 w -(system,) 3715 4771 w -(applications) 4186 4771 w -(can) 4891 4771 w -(access) 1116 4901 w -(services) 1506 4901 w -(by) 1976 4901 w -(sending) 2146 4901 w -(a) 2613 4901 w -(message) 2718 4901 w -(to) 3229 4901 w -(the) 3381 4901 w -(TC) 3596 4901 w -(kernel,) 3785 4901 w -(rather) 4197 4901 w -(than) 4563 4901 w -(by) 4845 4901 w -(a) 5015 4901 w -(system call) 1116 5031 w -(trap.) 1741 5031 w -(Control) 1366 5197 w -(of) 1804 5197 w -(ACs) 1954 5197 w -(is) 2204 5197 w -(managed) 2334 5197 w -(by) 2867 5197 w -(means) 3036 5197 w -(of) 3428 5197 w -(active) 3579 5197 w -(messages.) 3931 5197 w -(NIX) 4567 5197 w -(takes) 4792 5197 w -(advantage) 1116 5327 w -(of) 1713 5327 w -(the) 1870 5327 w -(shared-memory) 2090 5327 w -(nature) 2999 5327 w -(of) 3393 5327 w -(manycore) 3550 5327 w -(CPUs,) 4117 5327 w -(and) 4470 5327 w -(passes) 4716 5327 w -(pointers to both data) 1116 5457 w -(and code) 2281 5457 w -(to coordinate) 2803 5457 w -(among cores.) 3549 5457 w +(\(want) 2212 2160 w +(your) 2546 2160 w +(name here?) 2826 2160 w +(Just) 3479 2160 w +(ask!\)) 3723 2160 w +(ABSTRACT) 2817 2635 w +11 /LucidaSansUnicode00 f +(This) 1366 2915 w +(paper) 1647 2915 w +(describes) 2009 2915 w +(NIX,) 2573 2915 w +(a) 2847 2915 w +(prototype) 2965 2915 w +(operating) 3540 2915 w +(system) 4110 2915 w +(for) 4541 2915 w +(future) 4751 2915 w +(manycore) 1116 3045 w +(CPUs.) 1679 3045 w +(NIX) 2062 3045 w +(features) 2288 3045 w +(a) 2768 3045 w +(heterogeneous) 2873 3045 w +(CPU) 3713 3045 w +(model) 3970 3045 w +(and) 4346 3045 w +(a) 4588 3045 w +(change) 4693 3045 w +(from) 1116 3175 w +(the) 1443 3175 w +(traditional) 1687 3175 w +(Unix) 2309 3175 w +(memory) 2625 3175 w +(model) 3133 3175 w +(of) 3538 3175 w +(separate) 3719 3175 w +(virtual) 4249 3175 w +(address) 4658 3175 w +(spaces.) 1116 3305 w +(NIX) 1592 3305 w +(has) 1820 3305 w +(been) 2050 3305 w +(influenced) 2356 3305 w +(by) 2959 3305 w +(our) 3130 3305 w +(work) 3355 3305 w +(in) 3661 3305 w +(High) 3806 3305 w +(Performance) 4100 3305 w +(com\255) 4815 3305 w +(puting, both on Blue) 1116 3435 w +(Gene) 2243 3435 w +(and more) 2549 3435 w +(traditional) 3093 3435 w +(clusters.) 3677 3435 w +(NIX) 1366 3601 w +(partitions) 1586 3601 w +(cores) 2136 3601 w +(by) 2460 3601 w +(function:) 2624 3601 w +(Timesharing) 3138 3601 w +(Cores,) 3839 3601 w +(or) 4219 3601 w +(TCs;) 4370 3601 w +(Applica\255) 4645 3601 w +(tion) 1116 3731 w +(Cores,) 1360 3731 w +(or) 1737 3731 w +(ACs; and Kernel) 1885 3731 w +(Cores, or KCs.) 2772 3731 w +(There) 3604 3731 w +(is always at) 3945 3731 w +(least) 4592 3731 w +(one) 4879 3731 w +(TC,) 1116 3861 w +(and) 1350 3861 w +(it) 1602 3861 w +(runs) 1729 3861 w +(applications) 2020 3861 w +(in) 2718 3861 w +(the) 2872 3861 w +(traditional) 3097 3861 w +(model.) 3700 3861 w +(KCs) 4157 3861 w +(are) 4416 3861 w +(optional) 4639 3861 w +(cores) 1116 3991 w +(created) 1444 3991 w +(to) 1882 3991 w +(run) 2032 3991 w +(kernel) 2255 3991 w +(functions) 2630 3991 w +(on) 3169 3991 w +(demand.) 3346 3991 w +(ACs) 3889 3991 w +(are) 4138 3991 w +(also) 4347 3991 w +(optional,) 4604 3991 w +(and) 1116 4121 w +(are) 1351 4121 w +(entirely) 1556 4121 w +(turned) 1992 4121 w +(over) 2382 4121 w +(to) 2650 4121 w +(running) 2795 4121 w +(an) 3249 4121 w +(application,) 3416 4121 w +(with) 4077 4121 w +(no) 4341 4121 w +(interrupts;) 4514 4121 w +(not) 1116 4251 w +(even) 1349 4251 w +(clock) 1654 4251 w +(interrupts.) 1985 4251 w +(Unlike) 2638 4251 w +(traditional) 3028 4251 w +(HPC) 3633 4251 w +(Light) 3907 4251 w +(Weight) 4230 4251 w +(kernels,) 4652 4251 w +(functions) 1116 4381 w +(are) 1654 4381 w +(not) 1863 4381 w +(static:) 2080 4381 w +(the) 2443 4381 w +(number) 2655 4381 w +(of) 3110 4381 w +(TCs,) 3259 4381 w +(KCs,) 3536 4381 w +(and) 3817 4381 w +(ACs) 4057 4381 w +(can) 4307 4381 w +(change) 4534 4381 w +(as) 4959 4381 w +(needs) 1116 4511 w +(change.) 1495 4511 w +(Unlike) 2010 4511 w +(a) 2406 4511 w +(traditional) 2529 4511 w +(operating) 3140 4511 w +(system,) 3715 4511 w +(applications) 4186 4511 w +(can) 4891 4511 w +(access) 1116 4641 w +(services) 1506 4641 w +(by) 1976 4641 w +(sending) 2146 4641 w +(a) 2613 4641 w +(message) 2718 4641 w +(to) 3229 4641 w +(the) 3381 4641 w +(TC) 3596 4641 w +(kernel,) 3785 4641 w +(rather) 4197 4641 w +(than) 4563 4641 w +(by) 4845 4641 w +(a) 5015 4641 w +(system call) 1116 4771 w +(trap.) 1741 4771 w +(Control) 1366 4937 w +(of) 1804 4937 w +(ACs) 1954 4937 w +(is) 2204 4937 w +(managed) 2334 4937 w +(by) 2867 4937 w +(means) 3036 4937 w +(of) 3428 4937 w +(active) 3579 4937 w +(messages.) 3931 4937 w +(NIX) 4567 4937 w +(takes) 4792 4937 w +(advantage) 1116 5067 w +(of) 1713 5067 w +(the) 1870 5067 w +(shared-memory) 2090 5067 w +(nature) 2999 5067 w +(of) 3393 5067 w +(manycore) 3550 5067 w +(CPUs,) 4117 5067 w +(and) 4470 5067 w +(passes) 4716 5067 w +(pointers to both data) 1116 5197 w +(and code) 2281 5197 w +(to coordinate) 2803 5197 w +(among cores.) 3549 5197 w 11 /LucidaSans-Demi f -(1.) 720 5847 w -(Introduction) 888 5847 w -11 /LucidaSansUnicode00 f -(In) 720 6013 w -(many) 860 6013 w -(cases,) 1188 6013 w -(it) 1554 6013 w -(has) 1667 6013 w -(been) 1892 6013 w -(argued) 2193 6013 w -(that) 2606 6013 w -(the) 2857 6013 w -(operating) 3068 6013 w -(system) 3621 6013 w -(stands) 4035 6013 w -(in) 4427 6013 w -(the) 4568 6013 w -(way) 4780 6013 w -(of) 5024 6013 w -(appli\255) 5173 6013 w -(cations) 720 6143 w -(and) 1137 6143 w -(that) 1371 6143 w -(they cannot) 1617 6143 w -(increase) 2276 6143 w -(their performance) 2753 6143 w -(due) 3749 6143 w -(to system activities and due) 3983 6143 w -(to) 720 6273 w -(its) 869 6273 w -(implementation.) 1039 6273 w -(In) 1954 6273 w -(particular,) 2095 6273 w -(data) 2681 6273 w -(base) 2954 6273 w -(systems,) 3244 6273 w -(fine-tuned) 3751 6273 w -(servers,) 4368 6273 w -(applications) 4828 6273 w -(built) 720 6403 w -(using the) 997 6403 w -(exokernel) 1530 6403 w -(approach, with libOSes, all) 2094 6403 w -(share) 3547 6403 w -(this view.) 3874 6403 w -(However,) 970 6569 w -(in) 1521 6569 w -(the) 1678 6569 w -(era) 1906 6569 w -(of) 2131 6569 w -(multi-core) 2296 6569 w -(and) 2923 6569 w -(many-core) 3179 6569 w -(machines,) 3819 6569 w -(we) 4417 6569 w -(believe) 4622 6569 w -(that) 5056 6569 w -(we) 5325 6569 w -(could) 720 6699 w -(get) 1066 6699 w -(rid) 1291 6699 w -(of) 1491 6699 w -(the) 1652 6699 w -(entire) 1876 6699 w -(operating) 2239 6699 w -(system) 2805 6699 w -(kernel.) 3232 6699 w -(We) 3653 6699 w -(advocate) 3863 6699 w -(for) 4390 6699 w -(a) 4596 6699 w -(null-kernel) 4710 6699 w -(or) 5360 6699 w -(zero-kernel) 720 6829 w -(approach,) 1390 6829 w -(where) 1957 6829 w -(applications) 2315 6829 w -(are) 2995 6829 w -(assigned) 3199 6829 w -(to) 3708 6829 w -(cores) 3853 6829 w -(with) 4176 6829 w -(no) 4439 6829 w -(OS) 4611 6829 w -(interference;) 4793 6829 w -(that) 720 6959 w -(is, without) 966 6959 w -(an operating system kernel.) 1561 6959 w -(Following this idea, we) 3120 6959 w -(have) 4373 6959 w -(built) 4656 6959 w -(NIX.) 4933 6959 w +(1.) 720 5587 w +(Introduction) 888 5587 w +11 /LucidaSansUnicode00 f +(In) 720 5753 w +(many) 860 5753 w +(cases,) 1188 5753 w +(it) 1554 5753 w +(has) 1667 5753 w +(been) 1892 5753 w +(argued) 2193 5753 w +(that) 2606 5753 w +(the) 2857 5753 w +(operating) 3068 5753 w +(system) 3621 5753 w +(stands) 4035 5753 w +(in) 4427 5753 w +(the) 4568 5753 w +(way) 4780 5753 w +(of) 5024 5753 w +(appli\255) 5173 5753 w +(cations) 720 5883 w +(and) 1137 5883 w +(that) 1371 5883 w +(they cannot) 1617 5883 w +(increase) 2276 5883 w +(their performance) 2753 5883 w +(due) 3749 5883 w +(to system activities and due) 3983 5883 w +(to) 720 6013 w +(its) 869 6013 w +(implementation.) 1039 6013 w +(In) 1954 6013 w +(particular,) 2095 6013 w +(data) 2681 6013 w +(base) 2954 6013 w +(systems,) 3244 6013 w +(fine-tuned) 3751 6013 w +(servers,) 4368 6013 w +(applications) 4828 6013 w +(built) 720 6143 w +(using the) 997 6143 w +(exokernel) 1530 6143 w +(approach, with libOSes, all) 2094 6143 w +(share) 3547 6143 w +(this view.) 3874 6143 w +(However,) 970 6309 w +(in) 1521 6309 w +(the) 1678 6309 w +(era) 1906 6309 w +(of) 2131 6309 w +(multi-core) 2296 6309 w +(and) 2923 6309 w +(many-core) 3179 6309 w +(machines,) 3819 6309 w +(we) 4417 6309 w +(believe) 4622 6309 w +(that) 5056 6309 w +(we) 5325 6309 w +(could) 720 6439 w +(get) 1066 6439 w +(rid) 1291 6439 w +(of) 1491 6439 w +(the) 1652 6439 w +(entire) 1876 6439 w +(operating) 2239 6439 w +(system) 2805 6439 w +(kernel.) 3232 6439 w +(We) 3653 6439 w +(advocate) 3863 6439 w +(for) 4390 6439 w +(a) 4596 6439 w +(null-kernel) 4710 6439 w +(or) 5360 6439 w +(zero-kernel) 720 6569 w +(approach,) 1390 6569 w +(where) 1957 6569 w +(applications) 2315 6569 w +(are) 2995 6569 w +(assigned) 3199 6569 w +(to) 3708 6569 w +(cores) 3853 6569 w +(with) 4176 6569 w +(no) 4439 6569 w +(OS) 4611 6569 w +(interference;) 4793 6569 w +(that) 720 6699 w +(is, without) 966 6699 w +(an operating system kernel.) 1561 6699 w +(Following this idea, we) 3120 6699 w +(have) 4373 6699 w +(built) 4656 6699 w +(NIX.) 4933 6699 w +(NIX) 970 6865 w +(is) 1204 6865 w +(a) 1344 6865 w +(new) 1457 6865 w +(operating) 1724 6865 w +(system,) 2289 6865 w +(evolving) 2750 6865 w +(from) 3245 6865 w +(a) 3552 6865 w +(traditional) 3665 6865 w +(operating) 4266 6865 w +(system) 4831 6865 w +(in) 5258 6865 w +(a) 5411 6865 w +(way) 720 6995 w +(that) 971 6995 w +(preserves) 1230 6995 w +(binary) 1792 6995 w +(compatibility) 2172 6995 w +(but) 2911 6995 w +(also) 3136 6995 w +(enables) 3399 6995 w +(a) 3856 6995 w +(sharp) 3964 6995 w +(break) 4310 6995 w +(with) 4658 6995 w +(past) 4931 6995 w +(prac\255) 5205 6995 w +(tice.) 720 7125 w +(NIX) 1019 7125 w +(is) 1239 7125 w +(strongly) 1365 7125 w +(influenced) 1837 7125 w +(by) 2433 7125 w +(our) 2597 7125 w +(experiences) 2815 7125 w +(over) 3494 7125 w +(the) 3763 7125 w +(past) 3973 7125 w +(five) 4239 7125 w +(years) 4470 7125 w +(with) 4790 7125 w +(running) 5055 7125 w +(Plan) 720 7255 w +(9) 1005 7255 w +(on) 1137 7255 w +(some) 1335 7255 w +(of) 1685 7255 w +(the) 1856 7255 w +(largest) 2090 7255 w +(supercomputers) 2518 7255 w +(in) 3447 7255 w +(the) 3610 7255 w +(world.) 3844 7255 w +(It) 4275 7255 w +(has) 4411 7255 w +(been) 4658 7255 w +(said) 4981 7255 w +(that) 5261 7255 w cleartomark showpage saveobj restore @@ -918,590 +978,564 @@ mark 2 pagesetup 11 /LucidaSansUnicode00 f -(NIX) 970 850 w -(is) 1204 850 w -(a) 1344 850 w -(new) 1457 850 w -(operating) 1724 850 w -(system,) 2289 850 w -(evolving) 2750 850 w -(from) 3245 850 w -(a) 3552 850 w -(traditional) 3665 850 w -(operating) 4266 850 w -(system) 4831 850 w -(in) 5258 850 w -(a) 5411 850 w -(way) 720 980 w -(that) 971 980 w -(preserves) 1230 980 w -(binary) 1792 980 w -(compatibility) 2172 980 w -(but) 2911 980 w -(also) 3136 980 w -(enables) 3399 980 w -(a) 3856 980 w -(sharp) 3964 980 w -(break) 4310 980 w -(with) 4658 980 w -(past) 4931 980 w -(prac\255) 5205 980 w -(tice.) 720 1110 w -(NIX) 1019 1110 w -(is) 1239 1110 w -(strongly) 1365 1110 w -(influenced) 1837 1110 w -(by) 2433 1110 w -(our) 2597 1110 w -(experiences) 2815 1110 w -(over) 3494 1110 w -(the) 3763 1110 w -(past) 3973 1110 w -(five) 4239 1110 w -(years) 4470 1110 w -(with) 4790 1110 w -(running) 5055 1110 w -(Plan) 720 1240 w -(9) 980 1240 w -(on) 1087 1240 w -(some) 1260 1240 w -(of) 1585 1240 w -(the) 1731 1240 w -(largest) 1940 1240 w -(supercomputers) 2343 1240 w -(in) 3247 1240 w -(the) 3385 1240 w -(world.) 3594 1240 w -(It) 4000 1240 w -(has) 4111 1240 w -(been) 4334 1240 w -(said) 4633 1240 w -(that) 4888 1240 w -(super\255) 5136 1240 w -(computing) 720 1370 w -(technology) 1344 1370 w -(frequently) 1983 1370 w -(tests) 2581 1370 w -(out) 2890 1370 w -(ideas) 3119 1370 w -(that) 3452 1370 w -(later) 3716 1370 w -(appear) 4010 1370 w -(in) 4430 1370 w -(general) 4584 1370 w -(purpose) 5036 1370 w -(computing, and certainly our experience) 720 1500 w -(is no exception.) 2918 1500 w -(NIX) 970 1666 w -(is) 1206 1666 w -(designed) 1348 1666 w -(for) 1888 1666 w -(manycore) 2095 1666 w -(processors.) 2702 1666 w -(The) 3405 1666 w -(manycore) 3659 1666 w -(is) 4232 1666 w -(probably) 4375 1666 w -(obvious) 4899 1666 w -(at) 5370 1666 w -(this) 720 1796 w -(point.) 963 1796 w -(The) 1356 1796 w -(idea) 1601 1796 w -(of) 1871 1796 w -(hetereogeneity) 2025 1796 w -(derives) 2868 1796 w -(from) 3297 1796 w -(discussions) 3598 1796 w -(we) 4260 1796 w -(have) 4453 1796 w -(had) 4747 1796 w -(with) 4990 1796 w -(sev\255) 5261 1796 w -(eral) 720 1926 w -(vendors.) 966 1926 w -(First,) 1506 1926 w -(the) 1820 1926 w -(vendors) 2037 1926 w -(would) 2507 1926 w -(prefer) 2874 1926 w -(that) 3244 1926 w -(not) 3501 1926 w -(all) 3723 1926 w -(cores) 3894 1926 w -(run) 4227 1926 w -(an) 4455 1926 w -(OS) 4631 1926 w -(at) 4823 1926 w -(all) 4972 1926 w -(times.) 5144 1926 w -(Second,) 720 2056 w -(there) 1187 2056 w -(is) 1516 2056 w -(a) 1655 2056 w -(very) 1766 2056 w -(real) 2037 2056 w -(possibility) 2287 2056 w -(that) 2880 2056 w -(on) 3141 2056 w -(some) 3326 2056 w -(future) 3663 2056 w -(manycore) 4038 2056 w -(systems,) 4606 2056 w -(not) 5121 2056 w -(all) 5347 2056 w -(cores) 720 2186 w -(will) 1061 2186 w -(be) 1298 2186 w -(able) 1485 2186 w -(to) 1765 2186 w -(support) 1929 2186 w -(an) 2400 2186 w -(OS.) 2585 2186 w -(We) 2821 2186 w -(have) 3034 2186 w -(seen) 3338 2186 w -(some) 3642 2186 w -(flavor) 3985 2186 w -(of) 4344 2186 w -(this) 4508 2186 w -(with) 4761 2186 w -(the) 5043 2186 w -(Cell) 5270 2186 w -(which, while) 720 2316 w -(a) 1413 2316 w -(failed effort, does point) 1509 2316 w -(toward a) 2809 2316 w -(possible) 3308 2316 w -(future) 3786 2316 w -(direction.) 4146 2316 w -(NIX uses a) 970 2482 w -(messaging protocol) 1560 2482 w -(between cores based on) 2647 2482 w -(shared-memory) 3975 2482 w -(active) 4871 2482 w -(mes\255) 5216 2482 w -(sages. An active) 720 2612 w -(message) 1616 2612 w -(sends not) 2118 2612 w -(just) 2675 2612 w -(references to data, but) 2908 2612 w -(also to code.) 4160 2612 w -(The) 4913 2612 w -(proto\255) 5147 2612 w -(col) 720 2742 w -(uses) 913 2742 w -(a) 1193 2742 w -(shared) 1292 2742 w -(memory) 1691 2742 w -(data) 2164 2742 w -(structure,) 2434 2742 w -(containing) 2989 2742 w -(cache-aligned) 3589 2742 w -(fields.) 4387 2742 w -(In) 4788 2742 w -(particular,) 4927 2742 w -(it) 720 2872 w -(contains) 835 2872 w -(arguments,) 1326 2872 w -(a) 1974 2872 w -(function) 2077 2872 w -(pointer,) 2560 2872 w -(to) 3021 2872 w -(be) 3171 2872 w -(run) 3344 2872 w -(by) 3567 2872 w -(the) 3735 2872 w -(peer) 3948 2872 w -(core,) 4228 2872 w -(and) 4535 2872 w -(an) 4775 2872 w -(indication) 4946 2872 w -(for flushing TLB) 720 3002 w -(\(when required\).) 1602 3002 w +(supercomputing) 720 850 w +(technology) 1636 850 w +(frequently) 2267 850 w +(tests) 2857 850 w +(out) 3159 850 w +(ideas) 3381 850 w +(that) 3707 850 w +(later) 3964 850 w +(appear) 4251 850 w +(in) 4664 850 w +(general) 4810 850 w +(pur\255) 5254 850 w +(pose) 720 980 w +(computing, and certainly our experience) 1009 980 w +(is no exception.) 3207 980 w +(NIX) 970 1146 w +(is) 1206 1146 w +(designed) 1348 1146 w +(for) 1888 1146 w +(manycore) 2095 1146 w +(processors.) 2702 1146 w +(The) 3405 1146 w +(manycore) 3659 1146 w +(is) 4232 1146 w +(probably) 4375 1146 w +(obvious) 4899 1146 w +(at) 5370 1146 w +(this) 720 1276 w +(point.) 963 1276 w +(The) 1356 1276 w +(idea) 1601 1276 w +(of) 1871 1276 w +(hetereogeneity) 2025 1276 w +(derives) 2868 1276 w +(from) 3297 1276 w +(discussions) 3598 1276 w +(we) 4260 1276 w +(have) 4453 1276 w +(had) 4747 1276 w +(with) 4990 1276 w +(sev\255) 5261 1276 w +(eral) 720 1406 w +(vendors.) 966 1406 w +(First,) 1506 1406 w +(the) 1820 1406 w +(vendors) 2037 1406 w +(would) 2507 1406 w +(prefer) 2874 1406 w +(that) 3244 1406 w +(not) 3501 1406 w +(all) 3723 1406 w +(cores) 3894 1406 w +(run) 4227 1406 w +(an) 4455 1406 w +(OS) 4631 1406 w +(at) 4823 1406 w +(all) 4972 1406 w +(times.) 5144 1406 w +(Second,) 720 1536 w +(there) 1187 1536 w +(is) 1516 1536 w +(a) 1655 1536 w +(very) 1766 1536 w +(real) 2037 1536 w +(possibility) 2287 1536 w +(that) 2880 1536 w +(on) 3141 1536 w +(some) 3326 1536 w +(future) 3663 1536 w +(manycore) 4038 1536 w +(systems,) 4606 1536 w +(not) 5121 1536 w +(all) 5347 1536 w +(cores) 720 1666 w +(will) 1061 1666 w +(be) 1298 1666 w +(able) 1485 1666 w +(to) 1765 1666 w +(support) 1929 1666 w +(an) 2400 1666 w +(OS.) 2585 1666 w +(We) 2821 1666 w +(have) 3034 1666 w +(seen) 3338 1666 w +(some) 3642 1666 w +(flavor) 3985 1666 w +(of) 4344 1666 w +(this) 4508 1666 w +(with) 4761 1666 w +(the) 5043 1666 w +(Cell) 5270 1666 w +(which, while) 720 1796 w +(a) 1413 1796 w +(failed effort, does point) 1509 1796 w +(toward a) 2809 1796 w +(possible) 3308 1796 w +(future) 3786 1796 w +(direction.) 4146 1796 w +(NIX uses a) 970 1962 w +(messaging protocol) 1560 1962 w +(between cores based on) 2647 1962 w +(shared-memory) 3975 1962 w +(active) 4871 1962 w +(mes\255) 5216 1962 w +(sages. An active) 720 2092 w +(message) 1616 2092 w +(sends not) 2118 2092 w +(just) 2675 2092 w +(references to data, but) 2908 2092 w +(also to code.) 4160 2092 w +(The) 4913 2092 w +(proto\255) 5147 2092 w +(col) 720 2222 w +(uses) 913 2222 w +(a) 1193 2222 w +(shared) 1292 2222 w +(memory) 1691 2222 w +(data) 2164 2222 w +(structure,) 2434 2222 w +(containing) 2989 2222 w +(cache-aligned) 3589 2222 w +(fields.) 4387 2222 w +(In) 4788 2222 w +(particular,) 4927 2222 w +(it) 720 2352 w +(contains) 835 2352 w +(arguments,) 1326 2352 w +(a) 1974 2352 w +(function) 2077 2352 w +(pointer,) 2560 2352 w +(to) 3021 2352 w +(be) 3171 2352 w +(run) 3344 2352 w +(by) 3567 2352 w +(the) 3735 2352 w +(peer) 3948 2352 w +(core,) 4228 2352 w +(and) 4535 2352 w +(an) 4775 2352 w +(indication) 4946 2352 w +(for flushing TLB) 720 2482 w +(\(when required\).) 1602 2482 w 11 /LucidaSans-Demi f -(2.) 720 3262 w -(The) 888 3262 w -(NIX) 1137 3262 w -(approach:) 1367 3262 w -(core) 1957 3262 w -(roles) 2235 3262 w -11 /LucidaSansUnicode00 f -(There) 720 3428 w -(are) 1074 3428 w -(a) 1291 3428 w -(few) 1401 3428 w -(common) 1638 3428 w -(attributes) 2149 3428 w -(to) 2714 3428 w -(todays) 2871 3428 w -(manycore) 3271 3428 w -(systems.) 3838 3428 w -(The) 4387 3428 w -(systems) 4635 3428 w -(have) 5114 3428 w -(a) 5411 3428 w -(non-uniform) 720 3558 w -(topology.) 1458 3558 w -(Sockets) 2044 3558 w -(contain) 2497 3558 w -(CPUs,) 2938 3558 w -(and) 3290 3558 w -(CPUs) 3536 3558 w -(contain) 3853 3558 w -(cores.) 4294 3558 w -(Each) 4698 3558 w -(socket) 4990 3558 w -(is) 5384 3558 w -(connected) 720 3688 w -(to) 1317 3688 w -(a) 1473 3688 w -(local) 1582 3688 w -(memory,) 1878 3688 w -(and) 2396 3688 w -(can) 2642 3688 w -(reach) 2875 3688 w -(other) 3216 3688 w -(memory) 3548 3688 w -(only) 4032 3688 w -(via) 4305 3688 w -(other) 4504 3688 w -(sockets,) 4836 3688 w -(via) 5322 3688 w -(one) 720 3818 w -(or) 968 3818 w -(more) 1131 3818 w -(hops;) 1458 3818 w -(access) 1804 3818 w -(to) 2202 3818 w -(memory) 2361 3818 w -(is) 2847 3818 w -(hence) 2986 3818 w -(non-uniform.) 3353 3818 w -(Core-to-core) 4164 3818 w -(and) 4930 3818 w -(core-) 5178 3818 w -(to-memory communications time) 720 3948 w -(is non-uniform.) 2545 3948 w -(A) 970 4114 w -(very) 1083 4114 w -(important) 1341 4114 w -(aspect) 1904 4114 w -(of) 2286 4114 w -(these) 2431 4114 w -(designs) 2757 4114 w -(is) 3205 4114 w -(that) 3330 4114 w -(the) 3578 4114 w -(varying) 3786 4114 w -(aspects) 4211 4114 w -(of) 4649 4114 w -(the) 4795 4114 w -(topology) 5004 4114 w -(affect) 720 4244 w -(performance,) 1066 4244 w -(but) 1823 4244 w -(not) 2045 4244 w -(correctness.) 2265 4244 w -(We) 2993 4244 w -(preserve) 3194 4244 w -(an) 3696 4244 w -(old) 3869 4244 w -(but) 4080 4244 w -(very) 4301 4244 w -(important) 4565 4244 w -(princi\255) 5134 4244 w -(ple) 720 4374 w -(in) 937 4374 w -(successful) 1091 4374 w -(computer) 1696 4374 w -(projects,) 2260 4374 w -(both) 2778 4374 w -(hardware) 3077 4374 w -(and) 3627 4374 w -(software:) 3879 4374 w -(things) 4426 4374 w -(that) 4814 4374 w -(worked) 5080 4374 w -(will) 720 4504 w -(still) 938 4504 w -(work.) 1168 4504 w -(We) 1536 4504 w -(are) 1730 4504 w -(trying) 1934 4504 w -(to) 2281 4504 w -(avoid) 2425 4504 w -(the) 2747 4504 w -(high) 2954 4504 w -(risk) 3226 4504 w -(of) 3459 4504 w -(failure) 3603 4504 w -(that) 3980 4504 w -(comes) 4227 4504 w -(with) 4606 4504 w -(clean) 4868 4504 w -(sheet) 5183 4504 w -(designs.) 720 4634 w -(NIX thus begins life) 1236 4634 w -(with a) 2313 4634 w -(working kernel) 2670 4634 w -(and full) 3502 4634 w -(set) 3943 4634 w -(of) 4137 4634 w -(userland code.) 4280 4634 w -(The) 970 4800 w -(idea) 1214 4800 w -(is) 1484 4800 w -(to) 1618 4800 w -(keep) 1772 4800 w -(a) 2075 4800 w -(standard) 2182 4800 w -(time-sharing) 2698 4800 w -(kernel) 3443 4800 w -(as) 3822 4800 w -(it) 3985 4800 w -(is) 4104 4800 w -(now,) 4238 4800 w -(but) 4539 4800 w -(to) 4763 4800 w -(be) 4917 4800 w -(able) 5094 4800 w -(to) 5364 4800 w -(exploit) 720 4930 w -(other) 1133 4930 w -(cores) 1459 4930 w -(for) 1788 4930 w -(either) 1983 4930 w -(user) 2335 4930 w -(or) 2608 4930 w -(kernel) 2762 4930 w -(intensive) 3137 4930 w -(processes.) 3657 4930 w -(In) 4298 4930 w -(the) 4440 4930 w -(worst) 4653 4930 w -(case,) 4989 4930 w -(the) 5301 4930 w -(time-sharing) 720 5060 w -(kernel) 1463 5060 w -(will) 1840 5060 w -(be) 2065 5060 w -(able) 2240 5060 w -(to) 2508 5060 w -(work) 2660 5060 w -(as) 2965 5060 w -(it) 3127 5060 w -(does) 3245 5060 w -(now.) 3544 5060 w -(In) 3879 5060 w -(the) 4024 5060 w -(best) 4240 5060 w -(case,) 4513 5060 w -(applications) 4828 5060 w -(will) 720 5190 w -(be) 936 5190 w -(able) 1102 5190 w -(to run as fast) 1361 5190 w -(as permitted by the) 2106 5190 w -(raw) 3183 5190 w -(hardware.) 3409 5190 w -(NIX) 970 5356 w -(derives) 1209 5356 w -(from) 1649 5356 w -(Plan) 1961 5356 w -(9) 2240 5356 w -(from) 2366 5356 w -(Bell) 2678 5356 w -(Labs.) 2925 5356 w -(Source) 3296 5356 w -(code,) 3710 5356 w -(compiled) 4056 5356 w -(for) 4603 5356 w -(Plan) 4814 5356 w -(9,) 5094 5356 w -(also) 5256 5356 w -(works) 720 5486 w -(on) 1074 5486 w -(NIX.) 1246 5486 w -(We) 1535 5486 w -(make) 1729 5486 w -(an) 2055 5486 w -(even) 2221 5486 w -(stronger) 2507 5486 w -(guarantee:) 2996 5486 w -(if) 3604 5486 w -(a) 3714 5486 w -(binary) 3812 5486 w -(worked) 4181 5486 w -(on) 4610 5486 w -(Plan) 4782 5486 w -(9,) 5041 5486 w -(it) 5182 5486 w -(will) 5291 5486 w -(work) 720 5616 w -(on NIX.) 1016 5616 w -(NIX) 970 5782 w -(partitions) 1194 5782 w -(cores) 1748 5782 w -(by) 2076 5782 w -(function,) 2244 5782 w -(hence) 2763 5782 w -(implementing) 3122 5782 w -(a) 3903 5782 w -(type) 4007 5782 w -(of) 4279 5782 w -(heteregeneity.) 4430 5782 w -(The) 5273 5782 w -(basic) 720 5912 w -(x86) 1037 5912 w -(architecture) 1285 5912 w -(has,) 1965 5912 w -(since) 2228 5912 w -(the) 2545 5912 w -(advent) 2759 5912 w -(of) 3160 5912 w -(SMP,) 3311 5912 w -(divided) 3604 5912 w -(CPUs) 4037 5912 w -(into) 4349 5912 w -(two) 4600 5912 w -(basic) 4836 5912 w -(types:) 5152 5912 w -(BSP,) 720 6042 w -(or) 975 6042 w -(Boot) 1123 6042 w -(Strap) 1398 6042 w -(Processor;) 1709 6042 w -(and) 2295 6042 w -(AP,) 2529 6042 w -(or) 2737 6042 w -(Application) 2885 6042 w -(Processor\271.) 3524 6042 w -(In) 4191 6042 w -(a) 4327 6042 w -(sense,) 4424 6042 w -(x86) 4800 6042 w -(systems) 5042 6042 w -(have) 720 6172 w -(had) 1015 6172 w -(heterogeneity) 1260 6172 w -(from) 2042 6172 w -(the) 2344 6172 w -(start,) 2561 6172 w -(although) 2886 6172 w -(in) 3405 6172 w -(keeping) 3551 6172 w -(with) 4022 6172 w -(the) 4294 6172 w -("things) 4511 6172 w -(still) 4931 6172 w -(work") 5170 6172 w -(principle,) 720 6302 w -(it) 1268 6302 w -(was) 1389 6302 w -(not) 1639 6302 w -(visible) 1863 6302 w -(for) 2251 6302 w -(the) 2452 6302 w -(most) 2671 6302 w -(part) 2985 6302 w -(at) 3249 6302 w -(user) 3399 6302 w -(level.) 3678 6302 w -(NIX) 4042 6302 w -(preserves) 4273 6302 w -(this) 4836 6302 w -(distinc\255) 5082 6302 w -(tion, with a) 720 6432 w -(twist: we) 1355 6432 w -(create) 1862 6432 w -(three) 2224 6432 w -(new) 2537 6432 w -(classes of) 2787 6432 w -(cores:) 3344 6432 w -(1) 720 6598 w -(The) 970 6598 w -(first,) 1217 6598 w -(TC,) 1515 6598 w -(is) 1743 6598 w -(a) 1879 6598 w -(time) 1988 6598 w -(sharing) 2273 6598 w -(core.) 2720 6598 w -(The) 3069 6598 w -(BSP) 3317 6598 w -(is) 3550 6598 w -(always) 3687 6598 w -(a) 4088 6598 w -(TC.) 4198 6598 w -(There) 4427 6598 w -(can) 4782 6598 w -(be) 5016 6598 w -(more) 5196 6598 w -(than) 970 6728 w -(one) 1246 6728 w -(TC,) 1481 6728 w -(and) 1699 6728 w -(in) 1935 6728 w -(fact) 2073 6728 w -(a) 2310 6728 w -(system) 2409 6728 w -(can) 2821 6728 w -(consist) 3044 6728 w -(of) 3458 6728 w -(nothing) 3604 6728 w -(but) 4054 6728 w -(TCs,) 4270 6728 w -(as) 4543 6728 w -(determined) 4697 6728 w -(by) 5346 6728 w +(2.) 720 2742 w +(The) 888 2742 w +(NIX) 1137 2742 w +(approach:) 1367 2742 w +(core) 1957 2742 w +(roles) 2235 2742 w +11 /LucidaSansUnicode00 f +(There) 720 2908 w +(are) 1074 2908 w +(a) 1291 2908 w +(few) 1401 2908 w +(common) 1638 2908 w +(attributes) 2149 2908 w +(to) 2714 2908 w +(todays) 2871 2908 w +(manycore) 3271 2908 w +(systems.) 3838 2908 w +(The) 4387 2908 w +(systems) 4635 2908 w +(have) 5114 2908 w +(a) 5411 2908 w +(non-uniform) 720 3038 w +(topology.) 1458 3038 w +(Sockets) 2044 3038 w +(contain) 2497 3038 w +(CPUs,) 2938 3038 w +(and) 3290 3038 w +(CPUs) 3536 3038 w +(contain) 3853 3038 w +(cores.) 4294 3038 w +(Each) 4698 3038 w +(socket) 4990 3038 w +(is) 5384 3038 w +(connected) 720 3168 w +(to) 1317 3168 w +(a) 1473 3168 w +(local) 1582 3168 w +(memory,) 1878 3168 w +(and) 2396 3168 w +(can) 2642 3168 w +(reach) 2875 3168 w +(other) 3216 3168 w +(memory) 3548 3168 w +(only) 4032 3168 w +(via) 4305 3168 w +(other) 4504 3168 w +(sockets,) 4836 3168 w +(via) 5322 3168 w +(one) 720 3298 w +(or) 968 3298 w +(more) 1131 3298 w +(hops;) 1458 3298 w +(access) 1804 3298 w +(to) 2202 3298 w +(memory) 2361 3298 w +(is) 2847 3298 w +(hence) 2986 3298 w +(non-uniform.) 3353 3298 w +(Core-to-core) 4164 3298 w +(and) 4930 3298 w +(core-) 5178 3298 w +(to-memory communications time) 720 3428 w +(is non-uniform.) 2545 3428 w +(A) 970 3594 w +(very) 1083 3594 w +(important) 1341 3594 w +(aspect) 1904 3594 w +(of) 2286 3594 w +(these) 2431 3594 w +(designs) 2757 3594 w +(is) 3205 3594 w +(that) 3330 3594 w +(the) 3578 3594 w +(varying) 3786 3594 w +(aspects) 4211 3594 w +(of) 4649 3594 w +(the) 4795 3594 w +(topology) 5004 3594 w +(affect) 720 3724 w +(performance,) 1066 3724 w +(but) 1823 3724 w +(not) 2045 3724 w +(correctness.) 2265 3724 w +(We) 2993 3724 w +(preserve) 3194 3724 w +(an) 3696 3724 w +(old) 3869 3724 w +(but) 4080 3724 w +(very) 4301 3724 w +(important) 4565 3724 w +(princi\255) 5134 3724 w +(ple) 720 3854 w +(in) 937 3854 w +(successful) 1091 3854 w +(computer) 1696 3854 w +(projects,) 2260 3854 w +(both) 2778 3854 w +(hardware) 3077 3854 w +(and) 3627 3854 w +(software:) 3879 3854 w +(things) 4426 3854 w +(that) 4814 3854 w +(worked) 5080 3854 w +(will) 720 3984 w +(still) 938 3984 w +(work.) 1168 3984 w +(We) 1536 3984 w +(are) 1730 3984 w +(trying) 1934 3984 w +(to) 2281 3984 w +(avoid) 2425 3984 w +(the) 2747 3984 w +(high) 2954 3984 w +(risk) 3226 3984 w +(of) 3459 3984 w +(failure) 3603 3984 w +(that) 3980 3984 w +(comes) 4227 3984 w +(with) 4606 3984 w +(clean) 4868 3984 w +(sheet) 5183 3984 w +(designs.) 720 4114 w +(NIX thus begins life) 1236 4114 w +(with a) 2313 4114 w +(working kernel) 2670 4114 w +(and full) 3502 4114 w +(set) 3943 4114 w +(of) 4137 4114 w +(userland code.) 4280 4114 w +(The) 970 4280 w +(idea) 1214 4280 w +(is) 1484 4280 w +(to) 1618 4280 w +(keep) 1772 4280 w +(a) 2075 4280 w +(standard) 2182 4280 w +(time-sharing) 2698 4280 w +(kernel) 3443 4280 w +(as) 3822 4280 w +(it) 3985 4280 w +(is) 4104 4280 w +(now,) 4238 4280 w +(but) 4539 4280 w +(to) 4763 4280 w +(be) 4917 4280 w +(able) 5094 4280 w +(to) 5364 4280 w +(exploit) 720 4410 w +(other) 1133 4410 w +(cores) 1459 4410 w +(for) 1788 4410 w +(either) 1983 4410 w +(user) 2335 4410 w +(or) 2608 4410 w +(kernel) 2762 4410 w +(intensive) 3137 4410 w +(processes.) 3657 4410 w +(In) 4298 4410 w +(the) 4440 4410 w +(worst) 4653 4410 w +(case,) 4989 4410 w +(the) 5301 4410 w +(time-sharing) 720 4540 w +(kernel) 1463 4540 w +(will) 1840 4540 w +(be) 2065 4540 w +(able) 2240 4540 w +(to) 2508 4540 w +(work) 2660 4540 w +(as) 2965 4540 w +(it) 3127 4540 w +(does) 3245 4540 w +(now.) 3544 4540 w +(In) 3879 4540 w +(the) 4024 4540 w +(best) 4240 4540 w +(case,) 4513 4540 w +(applications) 4828 4540 w +(will) 720 4670 w +(be) 936 4670 w +(able) 1102 4670 w +(to run as fast) 1361 4670 w +(as permitted by the) 2106 4670 w +(raw) 3183 4670 w +(hardware.) 3409 4670 w +(NIX) 970 4836 w +(derives) 1209 4836 w +(from) 1649 4836 w +(Plan) 1961 4836 w +(9) 2240 4836 w +(from) 2366 4836 w +(Bell) 2678 4836 w +(Labs.) 2925 4836 w +(Source) 3296 4836 w +(code,) 3710 4836 w +(compiled) 4056 4836 w +(for) 4603 4836 w +(Plan) 4814 4836 w +(9,) 5094 4836 w +(also) 5256 4836 w +(works) 720 4966 w +(on) 1074 4966 w +(NIX.) 1246 4966 w +(We) 1535 4966 w +(make) 1729 4966 w +(an) 2055 4966 w +(even) 2221 4966 w +(stronger) 2507 4966 w +(guarantee:) 2996 4966 w +(if) 3604 4966 w +(a) 3714 4966 w +(binary) 3812 4966 w +(worked) 4181 4966 w +(on) 4610 4966 w +(Plan) 4782 4966 w +(9,) 5041 4966 w +(it) 5182 4966 w +(will) 5291 4966 w +(work) 720 5096 w +(on NIX.) 1016 5096 w +(NIX) 970 5262 w +(partitions) 1194 5262 w +(cores) 1748 5262 w +(by) 2076 5262 w +(function,) 2244 5262 w +(hence) 2763 5262 w +(implementing) 3122 5262 w +(a) 3903 5262 w +(type) 4007 5262 w +(of) 4279 5262 w +(heteregeneity.) 4430 5262 w +(The) 5273 5262 w +(basic) 720 5392 w +(x86) 1037 5392 w +(architecture) 1285 5392 w +(has,) 1965 5392 w +(since) 2228 5392 w +(the) 2545 5392 w +(advent) 2759 5392 w +(of) 3160 5392 w +(SMP,) 3311 5392 w +(divided) 3604 5392 w +(CPUs) 4037 5392 w +(into) 4349 5392 w +(two) 4600 5392 w +(basic) 4836 5392 w +(types:) 5152 5392 w +(BSP,) 720 5522 w +(or) 975 5522 w +(Boot) 1123 5522 w +(Strap) 1398 5522 w +(Processor;) 1709 5522 w +(and) 2295 5522 w +(AP,) 2529 5522 w +(or) 2737 5522 w +(Application) 2885 5522 w +(Processor\271.) 3524 5522 w +(In) 4191 5522 w +(a) 4327 5522 w +(sense,) 4424 5522 w +(x86) 4800 5522 w +(systems) 5042 5522 w +(have) 720 5652 w +(had) 1015 5652 w +(heterogeneity) 1260 5652 w +(from) 2042 5652 w +(the) 2344 5652 w +(start,) 2561 5652 w +(although) 2886 5652 w +(in) 3405 5652 w +(keeping) 3551 5652 w +(with) 4022 5652 w +(the) 4294 5652 w +("things) 4511 5652 w +(still) 4931 5652 w +(work") 5170 5652 w +(principle,) 720 5782 w +(it) 1268 5782 w +(was) 1389 5782 w +(not) 1639 5782 w +(visible) 1863 5782 w +(for) 2251 5782 w +(the) 2452 5782 w +(most) 2671 5782 w +(part) 2985 5782 w +(at) 3249 5782 w +(user) 3399 5782 w +(level.) 3678 5782 w +(NIX) 4042 5782 w +(preserves) 4273 5782 w +(this) 4836 5782 w +(distinc\255) 5082 5782 w +(tion, with a) 720 5912 w +(twist: we) 1355 5912 w +(create) 1862 5912 w +(three) 2224 5912 w +(new) 2537 5912 w +(classes of) 2787 5912 w +(cores:) 3344 5912 w +(1) 720 6078 w +(The) 970 6078 w +(first,) 1217 6078 w +(TC,) 1515 6078 w +(is) 1743 6078 w +(a) 1879 6078 w +(time) 1988 6078 w +(sharing) 2273 6078 w +(core.) 2720 6078 w +(The) 3069 6078 w +(BSP) 3317 6078 w +(is) 3550 6078 w +(always) 3687 6078 w +(a) 4088 6078 w +(TC.) 4198 6078 w +(There) 4427 6078 w +(can) 4782 6078 w +(be) 5016 6078 w +(more) 5196 6078 w +(than) 970 6208 w +(one) 1246 6208 w +(TC,) 1481 6208 w +(and) 1699 6208 w +(in) 1935 6208 w +(fact) 2073 6208 w +(a) 2310 6208 w +(system) 2409 6208 w +(can) 2821 6208 w +(consist) 3044 6208 w +(of) 3458 6208 w +(nothing) 3604 6208 w +(but) 4054 6208 w +(TCs,) 4270 6208 w +(as) 4543 6208 w +(determined) 4697 6208 w +(by) 5346 6208 w +(the) 970 6338 w +(needs) 1188 6338 w +(of) 1552 6338 w +(the) 1707 6338 w +(user.) 1925 6338 w +(When) 2238 6338 w +(all) 2578 6338 w +(the) 2750 6338 w +(cores) 2968 6338 w +(are) 3301 6338 w +(TC) 3516 6338 w +(cores,) 3708 6338 w +(behaviour) 4076 6338 w +(is) 4652 6338 w +(not) 4787 6338 w +(different) 5011 6338 w +(from a) 970 6468 w +(SMP) 1356 6468 w +(system.) 1606 6468 w +(2) 720 6634 w +(The) 970 6634 w +(second,) 1248 6634 w +(AC,) 1740 6634 w +(is) 2006 6634 w +(an) 2173 6634 w +(application) 2382 6634 w +(core:) 3050 6634 w +(only) 3395 6634 w +(APs) 3699 6634 w +(can) 3972 6634 w +(be) 4237 6634 w +(Application) 4448 6634 w +(Cores.) 5131 6634 w 9 /S1 f -(________________) 720 6838 w +(________________) 720 6744 w 9 /LucidaSansUnicode00 f -(\271) 720 6948 w -(It) 792 6948 w -(is) 885 6948 w -(actually) 991 6948 w -(a) 1359 6948 w -(bit) 1443 6948 w -(more) 1593 6948 w -(complex) 1853 6948 w -(than) 2261 6948 w -(that,) 2491 6948 w -(due) 2727 6948 w -(to) 2925 6948 w -(the) 3048 6948 w -(advent) 3222 6948 w -(of) 3550 6948 w -(multicore.) 3673 6948 w -(On) 4179 6948 w -(a) 4340 6948 w -(multi\255) 4425 6948 w -(core) 720 7058 w -(socket,) 940 7058 w -(only) 1283 7058 w -(one) 1499 7058 w -(core) 1692 7058 w -(is) 1912 7058 w -(the) 2016 7058 w -("BSP";) 2186 7058 w -(it) 2463 7058 w -(is) 2553 7058 w -(really) 2656 7058 w -(a) 2923 7058 w -(Boot) 3004 7058 w -(Strap) 3230 7058 w -(Core,) 3487 7058 w -(but) 3751 7058 w -(the) 3928 7058 w -(vendors) 4098 7058 w -(have) 4477 7058 w -(chosen) 720 7168 w -(to) 1058 7168 w -(maintain) 1175 7168 w -(the) 1585 7168 w -(older) 1753 7168 w -(name.) 2007 7168 w +(\271) 720 6854 w +(It) 792 6854 w +(is) 885 6854 w +(actually) 991 6854 w +(a) 1359 6854 w +(bit) 1443 6854 w +(more) 1593 6854 w +(complex) 1853 6854 w +(than) 2261 6854 w +(that,) 2491 6854 w +(due) 2727 6854 w +(to) 2925 6854 w +(the) 3048 6854 w +(advent) 3222 6854 w +(of) 3550 6854 w +(multicore.) 3673 6854 w +(On) 4179 6854 w +(a) 4340 6854 w +(multi\255) 4425 6854 w +(core) 720 6964 w +(socket,) 940 6964 w +(only) 1283 6964 w +(one) 1499 6964 w +(core) 1692 6964 w +(is) 1912 6964 w +(the) 2016 6964 w +("BSP";) 2186 6964 w +(it) 2463 6964 w +(is) 2553 6964 w +(really) 2656 6964 w +(a) 2923 6964 w +(Boot) 3004 6964 w +(Strap) 3230 6964 w +(Core,) 3487 6964 w +(but) 3751 6964 w +(the) 3928 6964 w +(vendors) 4098 6964 w +(have) 4477 6964 w +(chosen) 720 7074 w +(to) 1058 7074 w +(maintain) 1175 7074 w +(the) 1585 7074 w +(older) 1753 7074 w +(name.) 2007 7074 w cleartomark showpage saveobj restore @@ -1511,1222 +1545,1209 @@ mark 3 pagesetup 11 /LucidaSansUnicode00 f -(the) 970 850 w -(needs) 1188 850 w -(of) 1552 850 w -(the) 1707 850 w -(user.) 1925 850 w -(When) 2238 850 w -(all) 2578 850 w -(the) 2750 850 w -(cores) 2968 850 w -(are) 3301 850 w -(TC) 3516 850 w -(cores,) 3708 850 w -(behaviour) 4076 850 w -(is) 4652 850 w -(not) 4787 850 w -(different) 5011 850 w -(from a) 970 980 w -(SMP) 1356 980 w -(system.) 1606 980 w -(2) 720 1146 w -(The) 970 1146 w -(second,) 1206 1146 w -(AC,) 1656 1146 w -(is) 1880 1146 w -(an) 2005 1146 w -(application) 2172 1146 w -(core:) 2798 1146 w -(only) 3101 1146 w -(APs) 3363 1146 w -(can) 3594 1146 w -(be) 3817 1146 w -(Application) 3986 1146 w -(Cores.) 4627 1146 w -(Applica\255) 5041 1146 w -(tion) 970 1276 w -(cores) 1223 1276 w -(run) 1554 1276 w -(applications,) 1780 1276 w -(in) 2504 1276 w -(a) 2649 1276 w -(non-preemptive) 2755 1276 w -(mode,) 3668 1276 w -(and) 4048 1276 w -(never) 4291 1276 w -(field) 4630 1276 w -(interrupts.) 4910 1276 w -(In) 970 1406 w -(this) 1113 1406 w -(case,) 1353 1406 w -(applications) 1666 1406 w -(run) 2353 1406 w -(as) 2577 1406 w -(if) 2737 1406 w -(they) 2853 1406 w -(had) 3125 1406 w -(no) 3367 1406 w -(operating) 3546 1406 w -(system,) 4103 1406 w -(but) 4556 1406 w -(they) 4778 1406 w -(can) 5050 1406 w -(still) 5279 1406 w -(make) 970 1536 w -(system) 1303 1536 w -(calls) 1721 1536 w -(and) 2001 1536 w -(rely) 2242 1536 w -(on) 2481 1536 w -(OS) 2659 1536 w -(services) 2847 1536 w -(as) 3316 1536 w -(provided) 3476 1536 w -(by) 3989 1536 w -(other) 4158 1536 w -(cores.) 4484 1536 w -(But) 4848 1536 w -(for) 5064 1536 w -(per\255) 5260 1536 w -(formance,) 970 1666 w -(running) 1553 1666 w -(on) 2016 1666 w -(ACs) 2197 1666 w -(is) 2451 1666 w -(transparent) 2585 1666 w -(to) 3248 1666 w -(applications,) 3402 1666 w -(unless) 4127 1666 w -(they) 4515 1666 w -(want) 4789 1666 w -(to) 5090 1666 w -(take) 5244 1666 w -(control) 970 1796 w -(of) 1381 1796 w -(this feature.) 1524 1796 w -(3) 720 1962 w -(The) 970 1962 w -(third, KC, is a) 1204 1962 w -(kernel) 1966 1962 w -(core.) 2334 1962 w -(Kernel) 2669 1962 w -(cores can be) 3045 1962 w -(created under control) 3752 1962 w -(of) 4941 1962 w -(the) 5085 1962 w -(TC.) 5292 1962 w -(KCs) 970 2092 w -(do) 1210 2092 w -(nothing) 1382 2092 w -(but) 1830 2092 w -(run) 2044 2092 w -(OS) 2261 2092 w -(tasks) 2442 2092 w -(for the) 2756 2092 w -(TC. A) 3150 2092 w -(KC) 3476 2092 w -(might, for example, run a) 3659 2092 w -(file) 5065 2092 w -(sys\255) 5267 2092 w -(tem) 970 2222 w -(call.) 1229 2222 w -(KCs) 1534 2222 w -(never) 1792 2222 w -(run) 2140 2222 w -(user) 2375 2222 w -(mode) 2660 2222 w -(code.) 3014 2222 w -(Typical) 3392 2222 w -(usages) 3823 2222 w -(for) 4249 2222 w -(KCs) 4457 2222 w -(are) 4716 2222 w -(to) 4939 2222 w -(service) 5102 2222 w -(interrupts) 970 2352 w -(from) 1540 2352 w -(device) 1838 2352 w -(drivers) 2219 2352 w -(and) 2628 2352 w -(to) 2869 2352 w -(perform) 3020 2352 w -(system) 3494 2352 w -(calls) 3911 2352 w -(requested) 4191 2352 w -(to,) 4768 2352 w -(otherwise) 4954 2352 w -(overloaded, TCs.) 970 2482 w -(Cores) 720 2648 w -(hence) 1078 2648 w -(have) 1446 2648 w -(roles.) 1746 2648 w -(Part) 2130 2648 w -(of) 2390 2648 w -(the) 2551 2648 w -(motivation) 2775 2648 w -(for) 3396 2648 w -(the) 3602 2648 w -(creation) 3826 2648 w -(of) 4311 2648 w -(these) 4472 2648 w -(roles) 4814 2648 w -(comes) 5129 2648 w -(from) 720 2778 w -(discussions) 1016 2778 w -(with) 1673 2778 w -(vendors.) 1940 2778 w -(While) 2475 2778 w -(cores) 2805 2778 w -(on) 3132 2778 w -(current) 3308 2778 w -(systems) 3734 2778 w -(are) 4204 2778 w -(all) 4412 2778 w -(the) 4577 2778 w -(same) 4788 2778 w -(\255with) 5109 2778 w -(a) 5411 2778 w -(few) 720 2908 w -(exceptions,) 952 2908 w -(such) 1612 2908 w -(as) 1905 2908 w -(Cell\255) 2067 2908 w -(there) 2350 2908 w -(is) 2673 2908 w -(no) 2806 2908 w -(guarantee) 2986 2908 w -(of) 3567 2908 w -(such) 3720 2908 w -(homogeneity) 4013 2908 w -(in) 4752 2908 w -(future) 4897 2908 w -(sys\255) 5267 2908 w -(tems.) 720 3038 w -(In) 1097 3038 w -(fact,) 1243 3038 w -(heterogeneity) 1523 3038 w -(is) 2304 3038 w -(almost) 2438 3038 w -(guaranteed) 2843 3038 w -(by) 3494 3038 w -(a) 3666 3038 w -(simple) 3773 3038 w -(fact:) 4171 3038 w -(systems) 4450 3038 w -(with) 4925 3038 w -(1024) 5196 3038 w -(cores) 720 3168 w -(will) 1050 3168 w -(not) 1276 3168 w -(need) 1497 3168 w -(to) 1803 3168 w -(have) 1956 3168 w -(all) 2249 3168 w -(1024) 2419 3168 w -(cores) 2740 3168 w -(running) 3071 3168 w -(the) 3533 3168 w -(kernel.) 3749 3168 w -(Designers) 4197 3168 w -(see) 4774 3168 w -(potential) 4999 3168 w -(for) 720 3298 w -(die) 922 3298 w -(space) 1134 3298 w -(and) 1487 3298 w -(power) 1734 3298 w -(savings) 2110 3298 w -(if,) 2556 3298 w -(say,) 2712 3298 w -(a) 2969 3298 w -(system) 3078 3298 w -(with) 3500 3298 w +(Application) 970 850 w +(cores) 1639 850 w +(run) 1991 850 w +(applications,) 2238 850 w +(in) 2983 850 w +(a) 3149 850 w +(non-preemptive) 3276 850 w +(mode,) 4210 850 w +(and) 4611 850 w +(never) 4875 850 w +(field) 5236 850 w +(interrupts.) 970 980 w +(In) 1586 980 w +(this) 1740 980 w +(case,) 1991 980 w +(applications) 2315 980 w +(run) 3013 980 w +(as) 3248 980 w +(if) 3419 980 w +(they) 3546 980 w +(had) 3827 980 w +(no) 4078 980 w +(operating) 4266 980 w +(system,) 4832 980 w +(but) 5294 980 w +(they) 970 1110 w +(can) 1236 1110 w +(still) 1459 1110 w +(make) 1690 1110 w +(system) 2017 1110 w +(calls) 2429 1110 w +(and) 2704 1110 w +(rely) 2941 1110 w +(on) 3176 1110 w +(OS) 3350 1110 w +(services) 3534 1110 w +(as) 3999 1110 w +(provided) 4155 1110 w +(by) 4664 1110 w +(other) 4829 1110 w +(cores.) 5151 1110 w +(But) 970 1240 w +(for) 1202 1240 w +(performance,) 1414 1240 w +(running) 2186 1240 w +(on) 2661 1240 w +(ACs) 2854 1240 w +(is) 3120 1240 w +(transparent) 3266 1240 w +(to) 3941 1240 w +(applications,) 4107 1240 w +(unless) 4844 1240 w +(they) 5244 1240 w +(want) 970 1370 w +(to take) 1260 1370 w +(control) 1666 1370 w +(of) 2077 1370 w +(this feature.) 2220 1370 w +(3) 720 1536 w +(The) 970 1536 w +(third, KC, is a) 1204 1536 w +(kernel) 1966 1536 w +(core.) 2334 1536 w +(Kernel) 2669 1536 w +(cores can be) 3045 1536 w +(created under control) 3752 1536 w +(of) 4941 1536 w +(the) 5085 1536 w +(TC.) 5292 1536 w +(KCs) 970 1666 w +(do) 1210 1666 w +(nothing) 1382 1666 w +(but) 1830 1666 w +(run) 2044 1666 w +(OS) 2261 1666 w +(tasks) 2442 1666 w +(for the) 2756 1666 w +(TC. A) 3150 1666 w +(KC) 3476 1666 w +(might, for example, run a) 3659 1666 w +(file) 5065 1666 w +(sys\255) 5267 1666 w +(tem) 970 1796 w +(call.) 1229 1796 w +(KCs) 1534 1796 w +(never) 1792 1796 w +(run) 2140 1796 w +(user) 2375 1796 w +(mode) 2660 1796 w +(code.) 3014 1796 w +(Typical) 3392 1796 w +(usages) 3823 1796 w +(for) 4249 1796 w +(KCs) 4457 1796 w +(are) 4716 1796 w +(to) 4939 1796 w +(service) 5102 1796 w +(interrupts) 970 1926 w +(from) 1540 1926 w +(device) 1838 1926 w +(drivers) 2219 1926 w +(and) 2628 1926 w +(to) 2869 1926 w +(perform) 3020 1926 w +(system) 3494 1926 w +(calls) 3911 1926 w +(requested) 4191 1926 w +(to,) 4768 1926 w +(otherwise) 4954 1926 w +(overloaded, TCs.) 970 2056 w +(Cores) 720 2222 w +(hence) 1078 2222 w +(have) 1446 2222 w +(roles.) 1746 2222 w +(Part) 2130 2222 w +(of) 2390 2222 w +(the) 2551 2222 w +(motivation) 2775 2222 w +(for) 3396 2222 w +(the) 3602 2222 w +(creation) 3826 2222 w +(of) 4311 2222 w +(these) 4472 2222 w +(roles) 4814 2222 w +(comes) 5129 2222 w +(from) 720 2352 w +(discussions) 1016 2352 w +(with) 1673 2352 w +(vendors.) 1940 2352 w +(While) 2475 2352 w +(cores) 2805 2352 w +(on) 3132 2352 w +(current) 3308 2352 w +(systems) 3734 2352 w +(are) 4204 2352 w +(all) 4412 2352 w +(the) 4577 2352 w +(same) 4788 2352 w +(\255with) 5109 2352 w +(a) 5411 2352 w +(few) 720 2482 w +(exceptions,) 952 2482 w +(such) 1612 2482 w +(as) 1905 2482 w +(Cell\255) 2067 2482 w +(there) 2350 2482 w +(is) 2673 2482 w +(no) 2806 2482 w +(guarantee) 2986 2482 w +(of) 3567 2482 w +(such) 3720 2482 w +(homogeneity) 4013 2482 w +(in) 4752 2482 w +(future) 4897 2482 w +(sys\255) 5267 2482 w +(tems.) 720 2612 w +(In) 1097 2612 w +(fact,) 1243 2612 w +(heterogeneity) 1523 2612 w +(is) 2304 2612 w +(almost) 2438 2612 w +(guaranteed) 2843 2612 w +(by) 3494 2612 w +(a) 3666 2612 w +(simple) 3773 2612 w +(fact:) 4171 2612 w +(systems) 4450 2612 w +(with) 4925 2612 w +(1024) 5196 2612 w +(cores) 720 2742 w +(will) 1050 2742 w +(not) 1276 2742 w +(need) 1497 2742 w +(to) 1803 2742 w +(have) 1956 2742 w +(all) 2249 2742 w +(1024) 2419 2742 w +(cores) 2740 2742 w +(running) 3071 2742 w +(the) 3533 2742 w +(kernel.) 3749 2742 w +(Designers) 4197 2742 w +(see) 4774 2742 w +(potential) 4999 2742 w +(for) 720 2872 w +(die) 922 2872 w +(space) 1134 2872 w +(and) 1487 2872 w +(power) 1734 2872 w +(savings) 2110 2872 w +(if,) 2556 2872 w +(say,) 2712 2872 w +(a) 2969 2872 w +(system) 3078 2872 w +(with) 3500 2872 w 11 /LucidaSans-Italic f -(N) 3774 3298 w -11 /LucidaSansUnicode00 f -(cores) 3903 3298 w -(has) 4237 3298 w -(only) 4470 3298 w +(N) 3774 2872 w +11 /LucidaSansUnicode00 f +(cores) 3903 2872 w +(has) 4237 2872 w +(only) 4470 2872 w 11 /LucidaSans-Italic f -(sqrt) 4742 3298 w -11 /LucidaSansUnicode00 f -(\() 4967 3298 w +(sqrt) 4742 2872 w +11 /LucidaSansUnicode00 f +(\() 4967 2872 w 11 /LucidaSans-Italic f -(N) 5012 3298 w -11 /LucidaSansUnicode00 f -(\)) 5102 3298 w -(cores) 5186 3298 w -(complex) 720 3428 w -(enough) 1223 3428 w -(to) 1672 3428 w -(run) 1828 3428 w -(an) 2057 3428 w -(operating) 2234 3428 w -(system) 2795 3428 w -(and) 3218 3428 w -(manage) 3465 3428 w -(interrupts) 3936 3428 w -(and) 4512 3428 w -(I/O.) 4759 3428 w -(At) 5054 3428 w -(least) 5220 3428 w -(one) 720 3558 w -(vendor) 958 3558 w -(we) 1367 3558 w -(have) 1554 3558 w -(spoken) 1842 3558 w -(with) 2268 3558 w -(evinced) 2534 3558 w -(great) 2980 3558 w -(dismay) 3297 3558 w -(at) 3714 3558 w -(the) 3856 3558 w -(idea) 4067 3558 w -(of) 4331 3558 w -(taking) 4479 3558 w -(a) 4853 3558 w -(manycore) 4954 3558 w -(system and treating it) 720 3688 w -(as a) 1923 3688 w -(traditional) 2171 3688 w -(SMP) 2755 3688 w -(system\262.) 3005 3688 w -(The) 970 3854 w -(BSP) 1211 3854 w -(behaves) 1437 3854 w -(as) 1914 3854 w -(a) 2073 3854 w -(TC) 2176 3854 w -(and) 2363 3854 w -(coordinates) 2603 3854 w -(the) 3269 3854 w -(activity) 3482 3854 w -(of) 3901 3854 w -(other) 4051 3854 w -(cores) 4377 3854 w -(in) 4706 3854 w -(the) 4849 3854 w -(system.) 5063 3854 w -(After) 720 3984 w -(start-up,) 1028 3984 w -(ACs) 1551 3984 w -(sit) 1801 3984 w -(in) 1972 3984 w -(a) 2114 3984 w -(simple) 2217 3984 w -(command) 2612 3984 w -(loop,) 3179 3984 w +(N) 5012 2872 w +11 /LucidaSansUnicode00 f +(\)) 5102 2872 w +(cores) 5186 2872 w +(complex) 720 3002 w +(enough) 1223 3002 w +(to) 1672 3002 w +(run) 1828 3002 w +(an) 2057 3002 w +(operating) 2234 3002 w +(system) 2795 3002 w +(and) 3218 3002 w +(manage) 3465 3002 w +(interrupts) 3936 3002 w +(and) 4512 3002 w +(I/O.) 4759 3002 w +(At) 5054 3002 w +(least) 5220 3002 w +(one) 720 3132 w +(vendor) 958 3132 w +(we) 1367 3132 w +(have) 1554 3132 w +(spoken) 1842 3132 w +(with) 2268 3132 w +(evinced) 2534 3132 w +(great) 2980 3132 w +(dismay) 3297 3132 w +(at) 3714 3132 w +(the) 3856 3132 w +(idea) 4067 3132 w +(of) 4331 3132 w +(taking) 4479 3132 w +(a) 4853 3132 w +(manycore) 4954 3132 w +(system and treating it) 720 3262 w +(as a) 1923 3262 w +(traditional) 2171 3262 w +(SMP) 2755 3262 w +(system\262.) 3005 3262 w +(The) 970 3428 w +(BSP) 1211 3428 w +(behaves) 1437 3428 w +(as) 1914 3428 w +(a) 2073 3428 w +(TC) 2176 3428 w +(and) 2363 3428 w +(coordinates) 2603 3428 w +(the) 3269 3428 w +(activity) 3482 3428 w +(of) 3901 3428 w +(other) 4051 3428 w +(cores) 4377 3428 w +(in) 4706 3428 w +(the) 4849 3428 w +(system.) 5063 3428 w +(After) 720 3558 w +(start-up,) 1028 3558 w +(ACs) 1551 3558 w +(sit) 1801 3558 w +(in) 1972 3558 w +(a) 2114 3558 w +(simple) 2217 3558 w +(command) 2612 3558 w +(loop,) 3179 3558 w 11 /LucidaSans-Italic f -(acsched) 3491 3984 w -11 /LucidaSansUnicode00 f -(,) 3915 3984 w -(waiting) 3992 3984 w -(for) 4421 3984 w -(commands,) 4616 3984 w -(and) 5274 3984 w -(executing) 720 4114 w -(them) 1291 4114 w -(as) 1611 4114 w -(instructed.) 1775 4114 w -(KCs) 2430 4114 w -(do) 2681 4114 w -(the) 2864 4114 w -(same,) 3083 4114 w -(but) 3447 4114 w -(they) 3673 4114 w -(are) 3949 4114 w -(never) 4165 4114 w -(requested) 4507 4114 w -(to) 5089 4114 w -(exe\255) 5245 4114 w -(cute) 720 4244 w -(user) 997 4244 w -(code.) 1278 4244 w -(TCs) 1652 4244 w -(execute) 1903 4244 w -(standard) 2371 4244 w -(time-sharing) 2891 4244 w -(kernels,) 3640 4244 w -(similar) 4114 4244 w -(to) 4524 4244 w -(a) 4682 4244 w -(conventional) 4793 4244 w -(SMP) 720 4374 w -(system.) 970 4374 w -gsave -newpath -2232 5164 m +(acsched) 3491 3558 w +11 /LucidaSansUnicode00 f +(,) 3915 3558 w +(waiting) 3992 3558 w +(for) 4421 3558 w +(commands,) 4616 3558 w +(and) 5274 3558 w +(executing) 720 3688 w +(them) 1291 3688 w +(as) 1611 3688 w +(instructed.) 1775 3688 w +(KCs) 2430 3688 w +(do) 2681 3688 w +(the) 2864 3688 w +(same,) 3083 3688 w +(but) 3447 3688 w +(they) 3673 3688 w +(are) 3949 3688 w +(never) 4165 3688 w +(requested) 4507 3688 w +(to) 5089 3688 w +(exe\255) 5245 3688 w +(cute) 720 3818 w +(user) 997 3818 w +(code.) 1278 3818 w +(TCs) 1652 3818 w +(execute) 1903 3818 w +(standard) 2371 3818 w +(time-sharing) 2891 3818 w +(kernels,) 3640 3818 w +(similar) 4114 3818 w +(to) 4524 3818 w +(a) 4682 3818 w +(conventional) 4793 3818 w +(SMP) 720 3948 w +(system.) 970 3948 w +gsave +newpath +2232 4738 m /inpath true def 0.5 setgray -2160 4624 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2196 4732 m +2160 4198 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2196 4306 m /inpath true def 0.5 setgray -2160 4768 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2196 4876 m +2160 4342 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2196 4450 m /inpath true def 0.5 setgray -2160 4912 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2196 5020 m +2160 4486 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2196 4594 m /inpath true def 0.5 setgray -2160 5056 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2196 5164 m +2160 4630 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2196 4738 m /inpath true def 0.5 setgray -2160 5200 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2196 5308 m +2160 4774 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2196 4882 m /inpath true def 0.5 setgray -2160 5344 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2196 5452 m +2160 4918 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2196 5026 m /inpath true def 0.5 setgray -2160 5488 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2196 5596 m +2160 5062 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2196 5170 m /inpath true def 0.5 setgray -2160 5632 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2376 5164 m +2160 5206 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2376 4738 m /inpath true def 0.5 setgray -2304 4624 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2340 4732 m +2304 4198 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2340 4306 m /inpath true def 0.5 setgray -2304 4768 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2340 4876 m +2304 4342 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2340 4450 m /inpath true def 0.5 setgray -2304 4912 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2340 5020 m +2304 4486 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2340 4594 m /inpath true def 0.5 setgray -2304 5056 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2340 5164 m +2304 4630 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2340 4738 m /inpath true def 0.5 setgray -2304 5200 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2340 5308 m +2304 4774 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2340 4882 m /inpath true def 0.5 setgray -2304 5344 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2340 5452 m +2304 4918 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2340 5026 m /inpath true def 0.5 setgray -2304 5488 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2340 5596 m +2304 5062 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2340 5170 m /inpath true def 0.5 setgray -2304 5632 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2520 5164 m +2304 5206 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2520 4738 m /inpath true def 0.5 setgray -2448 4624 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2484 4732 m +2448 4198 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2484 4306 m /inpath true def 0.5 setgray -2448 4768 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2484 4876 m +2448 4342 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2484 4450 m /inpath true def 0.5 setgray -2448 4912 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2484 5020 m +2448 4486 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2484 4594 m /inpath true def 0.5 setgray -2448 5056 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2484 5164 m +2448 4630 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2484 4738 m /inpath true def 0.5 setgray -2448 5200 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2484 5308 m +2448 4774 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2484 4882 m /inpath true def 0.5 setgray -2448 5344 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2484 5452 m +2448 4918 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2484 5026 m /inpath true def 0.5 setgray -2448 5488 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2484 5596 m +2448 5062 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2484 5170 m /inpath true def 0.5 setgray -2448 5632 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2664 5164 m +2448 5206 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2664 4738 m /inpath true def 1 setgray -2592 4624 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2628 4732 m +2592 4198 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2628 4306 m /inpath true def 1 setgray -2592 4768 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2628 4876 m +2592 4342 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2628 4450 m /inpath true def 1 setgray -2592 4912 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2628 5020 m +2592 4486 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2628 4594 m /inpath true def 1 setgray -2592 5056 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2628 5164 m +2592 4630 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2628 4738 m /inpath true def 1 setgray -2592 5200 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2628 5308 m +2592 4774 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2628 4882 m /inpath true def 1 setgray -2592 5344 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2628 5452 m +2592 4918 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2628 5026 m /inpath true def 1 setgray -2592 5488 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2628 5596 m +2592 5062 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2628 5170 m /inpath true def 1 setgray -2592 5632 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2808 5164 m +2592 5206 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2808 4738 m /inpath true def 1 setgray -2736 4624 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2772 4732 m +2736 4198 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2772 4306 m /inpath true def 1 setgray -2736 4768 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2772 4876 m +2736 4342 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2772 4450 m /inpath true def 1 setgray -2736 4912 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2772 5020 m +2736 4486 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2772 4594 m /inpath true def 1 setgray -2736 5056 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2772 5164 m +2736 4630 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2772 4738 m /inpath true def 1 setgray -2736 5200 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2772 5308 m +2736 4774 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2772 4882 m /inpath true def 1 setgray -2736 5344 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2772 5452 m +2736 4918 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2772 5026 m /inpath true def 1 setgray -2736 5488 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2772 5596 m +2736 5062 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2772 5170 m /inpath true def 1 setgray -2736 5632 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2952 5164 m +2736 5206 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2952 4738 m /inpath true def 0.3 setgray -2880 4624 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2916 4732 m +2880 4198 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2916 4306 m /inpath true def 0.3 setgray -2880 4768 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2916 4876 m +2880 4342 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2916 4450 m /inpath true def 0.3 setgray -2880 4912 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2916 5020 m +2880 4486 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2916 4594 m /inpath true def 0.3 setgray -2880 5056 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2916 5164 m +2880 4630 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2916 4738 m /inpath true def 0.3 setgray -2880 5200 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2916 5308 m +2880 4774 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2916 4882 m /inpath true def 0.3 setgray -2880 5344 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2916 5452 m +2880 4918 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2916 5026 m /inpath true def 0.3 setgray -2880 5488 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -2916 5596 m +2880 5062 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +2916 5170 m /inpath true def 0.3 setgray -2880 5632 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3096 5164 m +2880 5206 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3096 4738 m /inpath true def 0.3 setgray -3024 4624 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3060 4732 m +3024 4198 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3060 4306 m /inpath true def 0.3 setgray -3024 4768 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3060 4876 m +3024 4342 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3060 4450 m /inpath true def 0.3 setgray -3024 4912 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3060 5020 m +3024 4486 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3060 4594 m /inpath true def 0.3 setgray -3024 5056 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3060 5164 m +3024 4630 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3060 4738 m /inpath true def 0.3 setgray -3024 5200 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3060 5308 m +3024 4774 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3060 4882 m /inpath true def 0.3 setgray -3024 5344 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3060 5452 m +3024 4918 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3060 5026 m /inpath true def 0.3 setgray -3024 5488 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3060 5596 m +3024 5062 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3060 5170 m /inpath true def 0.3 setgray -3024 5632 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3240 5164 m +3024 5206 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3240 4738 m /inpath true def 0.3 setgray -3168 4624 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3204 4732 m +3168 4198 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3204 4306 m /inpath true def 0.3 setgray -3168 4768 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3204 4876 m +3168 4342 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3204 4450 m /inpath true def 0.3 setgray -3168 4912 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3204 5020 m +3168 4486 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3204 4594 m /inpath true def 0.3 setgray -3168 5056 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3204 5164 m +3168 4630 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3204 4738 m /inpath true def 0.3 setgray -3168 5200 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3204 5308 m +3168 4774 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3204 4882 m /inpath true def 0.3 setgray -3168 5344 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3204 5452 m +3168 4918 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3204 5026 m /inpath true def 0.3 setgray -3168 5488 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3204 5596 m +3168 5062 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3204 5170 m /inpath true def 0.3 setgray -3168 5632 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3384 5164 m +3168 5206 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3384 4738 m /inpath true def 0.3 setgray -3312 4624 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3348 4732 m +3312 4198 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3348 4306 m /inpath true def 0.3 setgray -3312 4768 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3348 4876 m +3312 4342 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3348 4450 m /inpath true def 0.3 setgray -3312 4912 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3348 5020 m +3312 4486 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3348 4594 m /inpath true def 0.3 setgray -3312 5056 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3348 5164 m +3312 4630 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3348 4738 m /inpath true def 0.3 setgray -3312 5200 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3348 5308 m +3312 4774 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3348 4882 m /inpath true def 0.3 setgray -3312 5344 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3348 5452 m +3312 4918 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3348 5026 m /inpath true def 0.3 setgray -3312 5488 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3348 5596 m +3312 5062 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3348 5170 m /inpath true def 0.3 setgray -3312 5632 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3528 5164 m +3312 5206 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3528 4738 m /inpath true def 0.3 setgray -3456 4624 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3492 4732 m +3456 4198 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3492 4306 m /inpath true def 0.3 setgray -3456 4768 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3492 4876 m +3456 4342 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3492 4450 m /inpath true def 0.3 setgray -3456 4912 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3492 5020 m +3456 4486 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3492 4594 m /inpath true def 0.3 setgray -3456 5056 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3492 5164 m +3456 4630 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3492 4738 m /inpath true def 0.3 setgray -3456 5200 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3492 5308 m +3456 4774 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3492 4882 m /inpath true def 0.3 setgray -3456 5344 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3492 5452 m +3456 4918 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3492 5026 m /inpath true def 0.3 setgray -3456 5488 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3492 5596 m +3456 5062 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3492 5170 m /inpath true def 0.3 setgray -3456 5632 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -gsave -newpath -3996 4768 m +3456 5206 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +gsave +newpath +3996 4342 m /inpath true def 0.5 setgray -3960 4732 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -(TC) 4067 4754 w -gsave -newpath -3996 5200 m +3960 4306 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +(TC) 4067 4328 w +gsave +newpath +3996 4774 m /inpath true def 1 setgray -3960 5164 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -(KC) 4067 5186 w -gsave -newpath -3996 5632 m +3960 4738 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +(KC) 4067 4760 w +gsave +newpath +3996 5206 m /inpath true def 0.3 setgray -3960 5596 72 72 De - gsave eofill grestore 0 setgray stroke -grestore -/inpath false def -(AC) 4067 5618 w +3960 5170 72 72 De + gsave eofill grestore 0 setgray stroke +grestore +/inpath false def +(AC) 4067 5192 w 10 /LucidaSans-Demi f -(Figure 1) 1314 6004 w +(Figure 1) 1314 5578 w 10 /LucidaSansUnicode00 f -(Different) 1800 6004 w -(cores) 2298 6004 w -(have) 2626 6004 w -(different) 2919 6004 w -(roles.) 3405 6004 w -(TCs) 3743 6004 w -(are) 3994 6004 w -(Time-Sharing) 4214 6004 w -(cores;) 1314 6124 w -(KCs) 1652 6124 w -(are) 1883 6124 w -(Kernel) 2081 6124 w -(cores;) 2436 6124 w -(ACs) 2774 6124 w -(are) 3009 6124 w -(Application) 3207 6124 w -(cores.) 3801 6124 w -(The) 4139 6124 w -(BSP) 4366 6124 w -(\(a) 4579 6124 w -(TC\)) 4713 6124 w -(coordinates the roles for other cores, which may change during time.) 1314 6244 w -11 /LucidaSansUnicode00 f -(Therefore,) 720 6470 w -(there) 1323 6470 w -(are) 1648 6470 w -(two) 1863 6470 w -(different) 2104 6470 w -(types) 2613 6470 w -(of) 2946 6470 w -(kernel) 3102 6470 w -(in) 3483 6470 w -(the) 3631 6470 w -(system:) 3850 6470 w -(TCs) 4307 6470 w -(and) 4556 6470 w -(KCs) 4802 6470 w -(execute) 5054 6470 w -(the) 720 6600 w -(standard) 941 6600 w -(time-sharing) 1461 6600 w -(kernel.) 2210 6600 w -(ACs) 2628 6600 w -(execute) 2886 6600 w -(almost) 3354 6600 w -(without) 3763 6600 w -(a) 4215 6600 w -(kernel,) 4326 6600 w -(but) 4744 6600 w -(for) 4972 6600 w -(a) 5174 6600 w -(few) 5284 6600 w -(exception) 720 6730 w -(handlers) 1306 6730 w -(and) 1829 6730 w -(their) 2089 6730 w -(main) 2399 6730 w -(scheduling) 2725 6730 w -(loop,) 3367 6730 w +(Different) 1800 5578 w +(cores) 2298 5578 w +(have) 2626 5578 w +(different) 2919 5578 w +(roles.) 3405 5578 w +(TCs) 3743 5578 w +(are) 3994 5578 w +(Time-Sharing) 4214 5578 w +(cores;) 1314 5698 w +(KCs) 1652 5698 w +(are) 1883 5698 w +(Kernel) 2081 5698 w +(cores;) 2436 5698 w +(ACs) 2774 5698 w +(are) 3009 5698 w +(Application) 3207 5698 w +(cores.) 3801 5698 w +(The) 4139 5698 w +(BSP) 4366 5698 w +(\(a) 4579 5698 w +(TC\)) 4713 5698 w +(coordinates the roles for other cores, which may change during time.) 1314 5818 w +11 /LucidaSansUnicode00 f +(Therefore,) 720 6044 w +(there) 1323 6044 w +(are) 1648 6044 w +(two) 1863 6044 w +(different) 2104 6044 w +(types) 2613 6044 w +(of) 2946 6044 w +(kernel) 3102 6044 w +(in) 3483 6044 w +(the) 3631 6044 w +(system:) 3850 6044 w +(TCs) 4307 6044 w +(and) 4556 6044 w +(KCs) 4802 6044 w +(execute) 5054 6044 w +(the) 720 6174 w +(standard) 941 6174 w +(time-sharing) 1461 6174 w +(kernel.) 2210 6174 w +(ACs) 2628 6174 w +(execute) 2886 6174 w +(almost) 3354 6174 w +(without) 3763 6174 w +(a) 4215 6174 w +(kernel,) 4326 6174 w +(but) 4744 6174 w +(for) 4972 6174 w +(a) 5174 6174 w +(few) 5284 6174 w +(exception) 720 6304 w +(handlers) 1306 6304 w +(and) 1829 6304 w +(their) 2089 6304 w +(main) 2399 6304 w +(scheduling) 2725 6304 w +(loop,) 3367 6304 w 11 /LucidaSans-Italic f -(acsched) 3700 6730 w -11 /LucidaSansUnicode00 f -(.) 4124 6730 w -(This) 4257 6730 w -(has) 4545 6730 w -(a) 4793 6730 w -(significant) 4917 6730 w -(impact) 720 6860 w -(on) 1166 6860 w -(the) 1386 6860 w -(interference) 1642 6860 w -(caused) 2371 6860 w -(by) 2828 6860 w -(the) 3039 6860 w -(system) 3295 6860 w -(to) 3754 6860 w -(application) 3946 6860 w -(code,) 4618 6860 w -(which) 4991 6860 w -(is) 5384 6860 w +(acsched) 3700 6304 w +11 /LucidaSansUnicode00 f +(.) 4124 6304 w +(This) 4257 6304 w +(has) 4545 6304 w +(a) 4793 6304 w +(significant) 4917 6304 w +(impact) 720 6434 w +(on) 1124 6434 w +(the) 1302 6434 w +(interference) 1516 6434 w +(caused) 2203 6434 w +(by) 2617 6434 w +(the) 2785 6434 w +(system) 2998 6434 w +(to) 3414 6434 w +(application) 3564 6434 w +(code,) 4194 6434 w +(which) 4525 6434 w +(is) 4876 6434 w +(neggligi\255) 5006 6434 w +(ble) 720 6564 w +(on) 934 6564 w +(ACs.) 1120 6564 w +(Nevertheless,) 1414 6564 w +(ACs) 2184 6564 w +(may) 2443 6564 w +(execute) 2714 6564 w +(arbitrary) 3184 6564 w +(kernel) 3692 6564 w +(code) 4077 6564 w +(as) 4383 6564 w +(found) 4552 6564 w +(in) 4917 6564 w +(the) 5069 6564 w +(TC,) 5292 6564 w +(because) 720 6694 w +(of) 1189 6694 w +(the) 1332 6694 w +(shared memory assumption, if) 1538 6694 w +(the) 3202 6694 w +(architecture) 3408 6694 w +(is compatible.) 4080 6694 w 9 /S1 f -(________________) 720 6970 w +(________________) 720 6850 w 9 /LucidaSansUnicode00 f -(\262) 720 7080 w -(Direct) 791 7080 w -(quote:) 1084 7080 w +(\262) 720 6960 w +(Direct) 791 6960 w +(quote:) 1084 6960 w 9 /LucidaSansUnicode20 f -(\030\030) 1397 7080 w +(\030\030) 1397 6960 w 9 /LucidaSansUnicode00 f -(It) 1455 7080 w -(would) 1547 7080 w -(be) 1843 7080 w -(a) 1983 7080 w -(terrible) 2066 7080 w -(waste) 2415 7080 w -(to) 2696 7080 w -(run) 2817 7080 w -(Linux) 2999 7080 w -(on) 3273 7080 w -(every) 3418 7080 w -(core) 3683 7080 w -(of) 3905 7080 w -(this) 4027 7080 w -(processor,) 4222 7080 w -(but) 720 7190 w -(that) 895 7190 w +(It) 1455 6960 w +(would) 1547 6960 w +(be) 1843 6960 w +(a) 1983 6960 w +(terrible) 2066 6960 w +(waste) 2415 6960 w +(to) 2696 6960 w +(run) 2817 6960 w +(Linux) 2999 6960 w +(on) 3273 6960 w +(every) 3418 6960 w +(core) 3683 6960 w +(of) 3905 6960 w +(this) 4027 6960 w +(processor,) 4222 6960 w +(but) 720 7070 w +(that) 895 7070 w 9 /LucidaSansUnicode20 f -(\031) 1067 7190 w +(\031) 1067 7070 w 9 /LucidaSansUnicode00 f -(s) 1096 7190 w -(all) 1171 7190 w -(most) 1302 7190 w -(people) 1549 7190 w -(are) 1873 7190 w -(thinking) 2039 7190 w -(of) 2429 7190 w +(s) 1096 7070 w +(all) 1171 7070 w +(most) 1302 7070 w +(people) 1549 7070 w +(are) 1873 7070 w +(thinking) 2039 7070 w +(of) 2429 7070 w 9 /LucidaSansUnicode20 f -(\031\031) 2517 7190 w +(\031\031) 2517 7070 w 9 /LucidaSansUnicode00 f -(.) 2575 7190 w +(.) 2575 7070 w cleartomark showpage saveobj restore @@ -2736,506 +2757,541 @@ mark 4 pagesetup 11 /LucidaSansUnicode00 f -(neggligible) 720 850 w -(on) 1349 850 w -(ACs.) 1520 850 w -(Nevertheless,) 1799 850 w -(ACs) 2554 850 w -(may) 2798 850 w -(execute) 3054 850 w -(arbitrary) 3508 850 w -(kernel) 4000 850 w -(code) 4369 850 w -(as) 4660 850 w -(found) 4814 850 w -(in) 5164 850 w -(the) 5301 850 w -(TC, because) 720 980 w -(of) 1404 980 w -(the) 1547 980 w -(shared memory assumption, if) 1753 980 w -(the) 3417 980 w -(architecture) 3623 980 w -(is compatible.) 4295 980 w -(Cores) 970 1146 w -(can) 1314 1146 w -(change) 1537 1146 w -(roles,) 1959 1146 w -(again) 2295 1146 w -(under) 2624 1146 w -(the) 2975 1146 w -(control) 3185 1146 w -(of) 3600 1146 w -(the) 3747 1146 w -(TC.) 3957 1146 w -(A) 4176 1146 w -(core) 4291 1146 w -(might) 4560 1146 w -(be) 4910 1146 w -(needed) 5080 1146 w -(for) 720 1276 w -(applications,) 920 1276 w -(in) 1646 1276 w -(which) 1793 1276 w -(case) 2149 1276 w -(NIX) 2431 1276 w -(can) 2660 1276 w -(direct) 2892 1276 w -(the) 3244 1276 w -(core) 3462 1276 w -(to) 3738 1276 w -(enter) 3892 1276 w -(the) 4216 1276 w -(AC) 4433 1276 w -(command) 4631 1276 w -(loop.) 5202 1276 w -(Later,) 720 1406 w -(the) 1061 1406 w -(TC) 1271 1406 w -(might) 1455 1406 w -(instruct) 1805 1406 w -(the) 2251 1406 w -(core) 2461 1406 w -(to) 2730 1406 w -(exit) 2877 1406 w -(the) 3118 1406 w -(AC) 3328 1406 w -(loop) 3519 1406 w -(and) 3793 1406 w -(re-enter) 4031 1406 w -(the) 4520 1406 w -(group) 4731 1406 w -(of) 5088 1406 w -(TCs.) 5236 1406 w -(At) 720 1536 w -(present,) 875 1536 w -(only) 1351 1536 w -(one) 1613 1536 w -(core) 1848 1536 w -(\255the) 2116 1536 w -(BSP\255) 2361 1536 w -(boots) 2619 1536 w -(to) 2957 1536 w -(become) 3103 1536 w -(a) 3558 1536 w -(TC;) 3656 1536 w -(all) 3873 1536 w -(other) 4035 1536 w -(cores) 4355 1536 w -(boot) 4678 1536 w -(and) 4959 1536 w -(enter) 5194 1536 w -(the) 720 1666 w -(AC) 926 1666 w -(command loop.) 1113 1666 w -(This will) 2013 1666 w -(be) 2489 1666 w -(fixed soon.) 2655 1666 w +(Cores) 970 850 w +(can) 1314 850 w +(change) 1537 850 w +(roles,) 1959 850 w +(again) 2295 850 w +(under) 2624 850 w +(the) 2975 850 w +(control) 3185 850 w +(of) 3600 850 w +(the) 3747 850 w +(TC.) 3957 850 w +(A) 4176 850 w +(core) 4291 850 w +(might) 4560 850 w +(be) 4910 850 w +(needed) 5080 850 w +(for) 720 980 w +(applications,) 920 980 w +(in) 1646 980 w +(which) 1793 980 w +(case) 2149 980 w +(NIX) 2431 980 w +(can) 2660 980 w +(direct) 2892 980 w +(the) 3244 980 w +(core) 3462 980 w +(to) 3738 980 w +(enter) 3892 980 w +(the) 4216 980 w +(AC) 4433 980 w +(command) 4631 980 w +(loop.) 5202 980 w +(Later,) 720 1110 w +(the) 1061 1110 w +(TC) 1271 1110 w +(might) 1455 1110 w +(instruct) 1805 1110 w +(the) 2251 1110 w +(core) 2461 1110 w +(to) 2730 1110 w +(exit) 2877 1110 w +(the) 3118 1110 w +(AC) 3328 1110 w +(loop) 3519 1110 w +(and) 3793 1110 w +(re-enter) 4031 1110 w +(the) 4520 1110 w +(group) 4731 1110 w +(of) 5088 1110 w +(TCs.) 5236 1110 w +(At) 720 1240 w +(present,) 875 1240 w +(only) 1351 1240 w +(one) 1613 1240 w +(core) 1848 1240 w +(\255the) 2116 1240 w +(BSP\255) 2361 1240 w +(boots) 2619 1240 w +(to) 2957 1240 w +(become) 3103 1240 w +(a) 3558 1240 w +(TC;) 3656 1240 w +(all) 3873 1240 w +(other) 4035 1240 w +(cores) 4355 1240 w +(boot) 4678 1240 w +(and) 4959 1240 w +(enter) 5194 1240 w +(the) 720 1370 w +(AC) 926 1370 w +(command loop.) 1113 1370 w +(This will) 2013 1370 w +(be) 2489 1370 w +(fixed soon.) 2655 1370 w 11 /LucidaSans-Demi f -(3.) 720 1926 w -(Inter-Core) 888 1926 w -(Communication) 1525 1926 w -11 /LucidaSansUnicode00 f -(In) 720 2092 w -(other) 866 2092 w -(systems) 1195 2092 w -(addressing) 1671 2092 w -(heterogeneous) 2303 2092 w -(many-core) 3145 2092 w -(architectures,) 3773 2092 w -(message) 4548 2092 w -(passing) 5062 2092 w -(is) 720 2222 w -(the) 855 2222 w -(basis) 1073 2222 w -(for) 1394 2222 w -(coordination.) 1593 2222 w -(Some) 2347 2222 w -(of) 2683 2222 w -(them) 2837 2222 w -(handle) 3156 2222 w -(the) 3562 2222 w -(different) 3779 2222 w -(cores) 4286 2222 w -(as) 4618 2222 w -(a) 4781 2222 w -(distributed) 4888 2222 w -(system.) 720 2352 w -(While) 970 2518 w -(future) 1299 2518 w -(manycore) 1664 2518 w -(systems) 2223 2518 w -(may) 2694 2518 w -(have) 2955 2518 w -(heterogeneous) 3244 2518 w -(CPUs,) 4081 2518 w -(one) 4426 2518 w -(aspect) 4664 2518 w -(of) 5050 2518 w -(them) 5199 2518 w -(it) 720 2648 w -(appears) 833 2648 w -(will) 1296 2648 w -(not) 1517 2648 w -(change:) 1733 2648 w -(there) 2191 2648 w -(will) 2509 2648 w -(still) 2730 2648 w -(be) 2963 2648 w -(shared) 3134 2648 w -(memory) 3535 2648 w -(addressable) 4010 2648 w -(from) 4692 2648 w -(all) 4987 2648 w -(cores.) 5151 2648 w -(NIX) 720 2778 w -(takes) 956 2778 w -(advantage) 1294 2778 w -(of) 1896 2778 w -(this) 2058 2778 w -(property) 2309 2778 w -(in) 2818 2778 w -(the) 2973 2778 w -(current) 3199 2778 w -(design.) 3639 2778 w -(NIX-specific) 4119 2778 w -(communica\255) 4824 2778 w -(tions) 720 2908 w -(for) 1029 2908 w -(management) 1227 2908 w -(are) 1967 2908 w -(performed) 2180 2908 w -(via) 2787 2908 w +(3.) 720 1630 w +(Inter-Core) 888 1630 w +(Communication) 1525 1630 w +11 /LucidaSansUnicode00 f +(In) 720 1796 w +(other) 866 1796 w +(systems) 1195 1796 w +(addressing) 1671 1796 w +(heterogeneous) 2303 1796 w +(many-core) 3145 1796 w +(architectures,) 3773 1796 w +(message) 4548 1796 w +(passing) 5062 1796 w +(is) 720 1926 w +(the) 855 1926 w +(basis) 1073 1926 w +(for) 1394 1926 w +(coordination.) 1593 1926 w +(Some) 2347 1926 w +(of) 2683 1926 w +(them) 2837 1926 w +(handle) 3156 1926 w +(the) 3562 1926 w +(different) 3779 1926 w +(cores) 4286 1926 w +(as) 4618 1926 w +(a) 4781 1926 w +(distributed) 4888 1926 w +(system.) 720 2056 w +(While) 970 2222 w +(future) 1299 2222 w +(manycore) 1664 2222 w +(systems) 2223 2222 w +(may) 2694 2222 w +(have) 2955 2222 w +(heterogeneous) 3244 2222 w +(CPUs,) 4081 2222 w +(one) 4426 2222 w +(aspect) 4664 2222 w +(of) 5050 2222 w +(them) 5199 2222 w +(it) 720 2352 w +(appears) 833 2352 w +(will) 1296 2352 w +(not) 1517 2352 w +(change:) 1733 2352 w +(there) 2191 2352 w +(will) 2509 2352 w +(still) 2730 2352 w +(be) 2963 2352 w +(shared) 3134 2352 w +(memory) 3535 2352 w +(addressable) 4010 2352 w +(from) 4692 2352 w +(all) 4987 2352 w +(cores.) 5151 2352 w +(NIX) 720 2482 w +(takes) 956 2482 w +(advantage) 1294 2482 w +(of) 1896 2482 w +(this) 2058 2482 w +(property) 2309 2482 w +(in) 2818 2482 w +(the) 2973 2482 w +(current) 3199 2482 w +(design.) 3639 2482 w +(NIX-specific) 4119 2482 w +(communica\255) 4824 2482 w +(tions) 720 2612 w +(for) 1029 2612 w +(management) 1227 2612 w +(are) 1967 2612 w +(performed) 2180 2612 w +(via) 2787 2612 w 11 /LucidaSans-Italic f -(active) 2982 2908 w -11 /LucidaSansUnicode00 f -(messages,) 3340 2908 w -(called) 3942 2908 w +(active) 2982 2612 w +11 /LucidaSansUnicode00 f +(messages,) 3340 2612 w +(called) 3942 2612 w 11 /LucidaSansUnicode20 f -(\030\030) 4298 2908 w -11 /LucidaSansUnicode00 f -(inter-core-calls) 4368 2908 w +(\030\030) 4298 2612 w +11 /LucidaSansUnicode00 f +(inter-core-calls) 4368 2612 w 11 /LucidaSansUnicode20 f -(\031\031) 5211 2908 w -11 /LucidaSansUnicode00 f -(,) 5281 2908 w -(or) 5360 2908 w -(ICCs.) 720 3038 w -(An) 970 3204 w -(ICC) 1162 3204 w -(consists) 1394 3204 w -(of) 1874 3204 w -(a) 2030 3204 w -(structure) 2139 3204 w -(containing) 2669 3204 w -(a) 3278 3204 w -(pointer) 3387 3204 w -(to) 3819 3204 w -(a) 3976 3204 w -(function,) 4086 3204 w -(an) 4611 3204 w -(indication) 4789 3204 w -(to) 5364 3204 w -(flush) 720 3334 w -(the) 1026 3334 w -(TLB,) 1238 3334 w -(and) 1505 3334 w -(a) 1744 3334 w -(set) 1846 3334 w -(of) 2046 3334 w -(arguments.) 2195 3334 w -(Each) 2877 3334 w -(core) 3162 3334 w -(has) 3432 3334 w -(a) 3657 3334 w -(unique) 3758 3334 w -(ICC) 4165 3334 w -(structure) 4389 3334 w -(associated) 4911 3334 w -(to) 720 3464 w -(it,) 878 3464 w -(and) 1036 3464 w -(polls) 1284 3464 w -(for) 1590 3464 w -(a) 1793 3464 w -(new) 1904 3464 w -(message) 2169 3464 w -(while) 2686 3464 w -(idle.) 3015 3464 w -(The) 3330 3464 w -(core,) 3579 3464 w -(upon) 3894 3464 w -(receiving) 4216 3464 w -(the) 4748 3464 w -(message,) 4970 3464 w -(calls) 720 3594 w -(the) 997 3594 w -(supplied) 1207 3594 w -(function) 1703 3594 w -(with) 2183 3594 w -(the) 2448 3594 w -(arguments) 2658 3594 w -(given.) 3268 3594 w -(Note) 3664 3594 w -(that) 3954 3594 w -(the) 4204 3594 w -(arguments,) 4414 3594 w -(and) 5059 3594 w -(not) 5296 3594 w -(just) 720 3724 w -(the) 953 3724 w -(function, can be) 1159 3724 w -(pointers, because) 2056 3724 w -(we) 3035 3724 w -(are) 3217 3724 w -(sharing memory.) 3420 3724 w -(The) 970 3890 w -(BSP) 1221 3890 w -(reaches) 1457 3890 w -(other) 1919 3890 w -(cores) 2254 3890 w -(mostly) 2592 3890 w -(by) 2999 3890 w -(means) 3177 3890 w -(of) 3578 3890 w -(ICCs.) 3738 3890 w -(Inter-Processor) 4065 3890 w -(Interrupts) 4945 3890 w -(\(IPIs\)) 720 4020 w -(are) 1009 4020 w -(seldom) 1213 4020 w -(used. They are) 1637 4020 w -(relegated for those) 2456 4020 w -(cases when asynchronous comunica\255) 3510 4020 w -(tion) 720 4150 w -(cannot) 967 4150 w -(be) 1367 4150 w -(avoided;) 1537 4150 w -(for) 2029 4150 w -(example,) 2222 4150 w -(when) 2752 4150 w -(a) 3075 4150 w -(user) 3176 4150 w -(wants) 3447 4150 w -(to) 3798 4150 w -(interrupt) 3946 4150 w -(a) 4457 4150 w -(program) 4558 4150 w -(running) 5055 4150 w -(in its AC.) 720 4280 w +(\031\031) 5211 2612 w +11 /LucidaSansUnicode00 f +(,) 5281 2612 w +(or) 5360 2612 w +(ICCs.) 720 2742 w +(An) 970 2908 w +(ICC) 1162 2908 w +(consists) 1394 2908 w +(of) 1874 2908 w +(a) 2030 2908 w +(structure) 2139 2908 w +(containing) 2669 2908 w +(a) 3278 2908 w +(pointer) 3387 2908 w +(to) 3819 2908 w +(a) 3976 2908 w +(function,) 4086 2908 w +(an) 4611 2908 w +(indication) 4789 2908 w +(to) 5364 2908 w +(flush) 720 3038 w +(the) 1026 3038 w +(TLB,) 1238 3038 w +(and) 1505 3038 w +(a) 1744 3038 w +(set) 1846 3038 w +(of) 2046 3038 w +(arguments.) 2195 3038 w +(Each) 2877 3038 w +(core) 3162 3038 w +(has) 3432 3038 w +(a) 3657 3038 w +(unique) 3758 3038 w +(ICC) 4165 3038 w +(structure) 4389 3038 w +(associated) 4911 3038 w +(to) 720 3168 w +(it,) 878 3168 w +(and) 1036 3168 w +(polls) 1284 3168 w +(for) 1590 3168 w +(a) 1793 3168 w +(new) 1904 3168 w +(message) 2169 3168 w +(while) 2686 3168 w +(idle.) 3015 3168 w +(The) 3330 3168 w +(core,) 3579 3168 w +(upon) 3894 3168 w +(receiving) 4216 3168 w +(the) 4748 3168 w +(message,) 4970 3168 w +(calls) 720 3298 w +(the) 997 3298 w +(supplied) 1207 3298 w +(function) 1703 3298 w +(with) 2183 3298 w +(the) 2448 3298 w +(arguments) 2658 3298 w +(given.) 3268 3298 w +(Note) 3664 3298 w +(that) 3954 3298 w +(the) 4204 3298 w +(arguments,) 4414 3298 w +(and) 5059 3298 w +(not) 5296 3298 w +(just) 720 3428 w +(the) 953 3428 w +(function, can be) 1159 3428 w +(pointers, because) 2056 3428 w +(we) 3035 3428 w +(are) 3217 3428 w +(sharing memory.) 3420 3428 w +(The) 970 3594 w +(BSP) 1221 3594 w +(reaches) 1457 3594 w +(other) 1919 3594 w +(cores) 2254 3594 w +(mostly) 2592 3594 w +(by) 2999 3594 w +(means) 3177 3594 w +(of) 3578 3594 w +(ICCs.) 3738 3594 w +(Inter-Processor) 4065 3594 w +(Interrupts) 4945 3594 w +(\(IPIs\)) 720 3724 w +(are) 1009 3724 w +(seldom) 1213 3724 w +(used. They are) 1637 3724 w +(relegated for those) 2456 3724 w +(cases when asynchronous comunica\255) 3510 3724 w +(tion) 720 3854 w +(cannot) 967 3854 w +(be) 1367 3854 w +(avoided;) 1537 3854 w +(for) 2029 3854 w +(example,) 2222 3854 w +(when) 2752 3854 w +(a) 3075 3854 w +(user) 3176 3854 w +(wants) 3447 3854 w +(to) 3798 3854 w +(interrupt) 3946 3854 w +(a) 4457 3854 w +(program) 4558 3854 w +(running) 5055 3854 w +(in its AC.) 720 3984 w 11 /LucidaSans-Demi f -(4.) 720 4540 w -(User) 888 4540 w -(interface) 1182 4540 w -11 /LucidaSansUnicode00 f -(In) 720 4706 w -(many) 857 4706 w -(cases,) 1182 4706 w -(user) 1545 4706 w -(programs) 1813 4706 w -(may) 2363 4706 w -(forget) 2620 4706 w -(about) 2981 4706 w -(NIX) 3324 4706 w -(and) 3543 4706 w -(behave) 3778 4706 w -(as) 4194 4706 w -(they) 4348 4706 w -(would) 4614 4706 w -(in) 4973 4706 w -(a) 5111 4706 w -(stan\255) 5210 4706 w -(dard) 720 4836 w -(Plan) 1006 4836 w -(9) 1270 4836 w -(system.) 1381 4836 w -(The) 1832 4836 w -(kernel) 2073 4836 w -(may) 2448 4836 w -(assign) 2710 4836 w -(an) 3093 4836 w -(AC) 3264 4836 w -(to) 3458 4836 w -(a) 3608 4836 w -(process,) 3711 4836 w -(for) 4199 4836 w -(example,) 4393 4836 w -(because) 4924 4836 w -(it) 5399 4836 w -(is) 720 4966 w -(consuming) 850 4966 w -(full) 1477 4966 w -(quanta) 1692 4966 w -(and) 2102 4966 w -(is) 2342 4966 w -(considered) 2472 4966 w -(as) 3100 4966 w -(CPU) 3259 4966 w -(bound.) 3514 4966 w -(In) 3932 4966 w -(the) 4074 4966 w -(same) 4287 4966 w -(way,) 4610 4966 w -(an) 4890 4966 w -(AC) 5061 4966 w -(pro\255) 5255 4966 w -(cess) 720 5096 w -(that) 1000 5096 w -(issues) 1261 5096 w -(frequent) 1641 5096 w -(system) 2147 5096 w -(calls) 2570 5096 w -(might) 2856 5096 w -(be) 3216 5096 w -(transparently) 3396 5096 w -(moved) 4151 5096 w -(to) 4557 5096 w -(a) 4714 5096 w -(TC,) 4824 5096 w -(or) 5053 5096 w -(a) 5214 5096 w -(KC) 5324 5096 w -(might) 720 5226 w -(be) 1068 5226 w -(assigned) 1236 5226 w -(to) 1745 5226 w -(execute) 1890 5226 w -(its) 2345 5226 w -(system) 2511 5226 w -(calls.) 2922 5226 w -(In) 3231 5226 w -(all) 3368 5226 w -(cases,) 3530 5226 w -(this) 3894 5226 w -(happens) 4129 5226 w -(transparently) 4620 5226 w -(to) 5364 5226 w -(the) 720 5356 w -(process.) 926 5356 w -(For) 970 5522 w -(those) 1190 5522 w -(who) 1533 5522 w -(care,) 1802 5522 w -(manual) 2110 5522 w -(control) 2552 5522 w -(is) 2978 5522 w -(also) 3116 5522 w -(possible.) 3382 5522 w -(There) 3910 5522 w -(are) 4266 5522 w -(two) 4484 5522 w -(primary) 4727 5522 w -(inter\255) 5188 5522 w -(faces to the) 720 5652 w -(new) 1380 5652 w -(activeity:) 1630 5652 w +(4.) 720 4244 w +(User) 888 4244 w +(interface) 1182 4244 w +11 /LucidaSansUnicode00 f +(In) 720 4410 w +(many) 857 4410 w +(cases,) 1182 4410 w +(user) 1545 4410 w +(programs) 1813 4410 w +(may) 2363 4410 w +(forget) 2620 4410 w +(about) 2981 4410 w +(NIX) 3324 4410 w +(and) 3543 4410 w +(behave) 3778 4410 w +(as) 4194 4410 w +(they) 4348 4410 w +(would) 4614 4410 w +(in) 4973 4410 w +(a) 5111 4410 w +(stan\255) 5210 4410 w +(dard) 720 4540 w +(Plan) 1006 4540 w +(9) 1270 4540 w +(system.) 1381 4540 w +(The) 1832 4540 w +(kernel) 2073 4540 w +(may) 2448 4540 w +(assign) 2710 4540 w +(an) 3093 4540 w +(AC) 3264 4540 w +(to) 3458 4540 w +(a) 3608 4540 w +(process,) 3711 4540 w +(for) 4199 4540 w +(example,) 4393 4540 w +(because) 4924 4540 w +(it) 5399 4540 w +(is) 720 4670 w +(consuming) 850 4670 w +(full) 1477 4670 w +(quanta) 1692 4670 w +(and) 2102 4670 w +(is) 2342 4670 w +(considered) 2472 4670 w +(as) 3100 4670 w +(CPU) 3259 4670 w +(bound.) 3514 4670 w +(In) 3932 4670 w +(the) 4074 4670 w +(same) 4287 4670 w +(way,) 4610 4670 w +(an) 4890 4670 w +(AC) 5061 4670 w +(pro\255) 5255 4670 w +(cess) 720 4800 w +(that) 1000 4800 w +(issues) 1261 4800 w +(frequent) 1641 4800 w +(system) 2147 4800 w +(calls) 2570 4800 w +(might) 2856 4800 w +(be) 3216 4800 w +(transparently) 3396 4800 w +(moved) 4151 4800 w +(to) 4557 4800 w +(a) 4714 4800 w +(TC,) 4824 4800 w +(or) 5053 4800 w +(a) 5214 4800 w +(KC) 5324 4800 w +(might) 720 4930 w +(be) 1068 4930 w +(assigned) 1236 4930 w +(to) 1745 4930 w +(execute) 1890 4930 w +(its) 2345 4930 w +(system) 2511 4930 w +(calls.) 2922 4930 w +(In) 3231 4930 w +(all) 3368 4930 w +(cases,) 3530 4930 w +(this) 3894 4930 w +(happens) 4129 4930 w +(transparently) 4620 4930 w +(to) 5364 4930 w +(the) 720 5060 w +(process.) 926 5060 w +(For) 970 5226 w +(those) 1190 5226 w +(who) 1533 5226 w +(care,) 1802 5226 w +(manual) 2110 5226 w +(control) 2552 5226 w +(is) 2978 5226 w +(also) 3116 5226 w +(possible.) 3382 5226 w +(There) 3910 5226 w +(are) 4266 5226 w +(two) 4484 5226 w +(primary) 4727 5226 w +(inter\255) 5188 5226 w +(faces to the) 720 5356 w +(new) 1380 5356 w +(activeity:) 1630 5356 w 11 /LucidaSansUnicode22 f -(\031) 720 5818 w -11 /LucidaSansUnicode00 f -(A) 970 5818 w -(new) 1081 5818 w -(system call:) 1331 5818 w +(\031) 720 5522 w +11 /LucidaSansUnicode00 f +(A) 970 5522 w +(new) 1081 5522 w +(system call:) 1331 5522 w 9 /LucidaTypewriter f -(execac\(int) 940 5988 w -(core,) 1655 5988 w -(char) 2045 5988 w -(*path,) 2370 5988 w -(char) 2825 5988 w -(*args[]\);) 3150 5988 w +(execac\(int) 940 5692 w +(core,) 1655 5692 w +(char) 2045 5692 w +(*path,) 2370 5692 w +(char) 2825 5692 w +(*args[]\);) 3150 5692 w 11 /LucidaSansUnicode22 f -(\031) 720 6214 w -11 /LucidaSansUnicode00 f -(Two new) 970 6214 w -(flags for the) 1476 6214 w +(\031) 720 5918 w +11 /LucidaSansUnicode00 f +(Two new) 970 5918 w +(flags for the) 1476 5918 w 11 /LucidaSans-Italic f -(rfork) 2163 6214 w -11 /LucidaSansUnicode00 f -(system call:) 2473 6214 w +(rfork) 2163 5918 w +11 /LucidaSansUnicode00 f +(system call:) 2473 5918 w 9 /LucidaTypewriter f -(rfork\(RFCORE\);) 940 6384 w -(rfork\(RFCCORE\);) 1980 6384 w +(rfork\(RFCORE\);) 940 6088 w +(rfork\(RFCCORE\);) 1980 6088 w 11 /LucidaSans-Italic f -(Execac) 720 6610 w -11 /LucidaSansUnicode00 f -(is) 1118 6610 w -(similar) 1249 6610 w -(to) 1652 6610 w +(Execac) 720 6314 w +11 /LucidaSansUnicode00 f +(is) 1118 6314 w +(similar) 1249 6314 w +(to) 1652 6314 w 11 /LucidaSans-Italic f -(exec) 1803 6610 w -11 /LucidaSansUnicode00 f -(,) 2033 6610 w -(but) 2111 6610 w -(includes) 2332 6610 w -(a) 2818 6610 w +(exec) 1803 6314 w +11 /LucidaSansUnicode00 f +(,) 2033 6314 w +(but) 2111 6314 w +(includes) 2332 6314 w +(a) 2818 6314 w 11 /LucidaSans-Italic f -(core) 2922 6610 w -11 /LucidaSansUnicode00 f -(number) 3195 6610 w -(as) 3653 6610 w -(its) 3814 6610 w -(first) 3987 6610 w -(argument.) 4246 6610 w -(If) 4840 6610 w -(this) 4957 6610 w -(num\255) 5198 6610 w -(ber) 720 6740 w -(is) 935 6740 w -(0,) 1062 6740 w -(the) 1205 6740 w -(standard) 1415 6740 w +(core) 2922 6314 w +11 /LucidaSansUnicode00 f +(number) 3195 6314 w +(as) 3653 6314 w +(its) 3814 6314 w +(first) 3987 6314 w +(argument.) 4246 6314 w +(If) 4840 6314 w +(this) 4957 6314 w +(num\255) 5198 6314 w +(ber) 720 6444 w +(is) 935 6444 w +(0,) 1062 6444 w +(the) 1205 6444 w +(standard) 1415 6444 w 11 /LucidaSans-Italic f -(exec) 1924 6740 w -11 /LucidaSansUnicode00 f -(system) 2193 6740 w -(call) 2606 6740 w -(is) 2826 6740 w -(performed,) 2953 6740 w -(except) 3589 6740 w -(that) 3985 6740 w -(all) 4235 6740 w -(pages) 4399 6740 w -(are) 4754 6740 w -(faulted) 4960 6740 w -(in) 5372 6740 w -(before) 720 6870 w -(the) 1118 6870 w -(process) 1341 6870 w -(starts.) 1804 6870 w -(If) 2191 6870 w -(this) 2316 6870 w -(number) 2565 6870 w -(is) 3031 6870 w -(negative,) 3171 6870 w -(the) 3709 6870 w -(process) 3932 6870 w -(is) 4395 6870 w -(moved) 4535 6870 w -(to) 4944 6870 w -(an) 5104 6870 w -(AC,) 5285 6870 w -(chosen) 720 7000 w -(by) 1141 7000 w -(the) 1311 7000 w -(kernel.) 1526 7000 w -(If) 1938 7000 w -(this) 2055 7000 w -(number) 2295 7000 w -(is) 2752 7000 w -(positive,) 2883 7000 w -(the) 3377 7000 w -(process) 3591 7000 w -(moves) 4045 7000 w -(to) 4432 7000 w -(the) 4583 7000 w -(AC) 4797 7000 w -(with) 4992 7000 w -(that) 5261 7000 w -(core) 720 7130 w -(number; if) 985 7130 w -(available, otherwise) 1577 7130 w -(the) 2667 7130 w -(system call) 2873 7130 w -(fails.) 3498 7130 w +(exec) 1924 6444 w +11 /LucidaSansUnicode00 f +(system) 2193 6444 w +(call) 2606 6444 w +(is) 2826 6444 w +(performed,) 2953 6444 w +(except) 3589 6444 w +(that) 3985 6444 w +(all) 4235 6444 w +(pages) 4399 6444 w +(are) 4754 6444 w +(faulted) 4960 6444 w +(in) 5372 6444 w +(before) 720 6574 w +(the) 1118 6574 w +(process) 1341 6574 w +(starts.) 1804 6574 w +(If) 2191 6574 w +(this) 2316 6574 w +(number) 2565 6574 w +(is) 3031 6574 w +(negative,) 3171 6574 w +(the) 3709 6574 w +(process) 3932 6574 w +(is) 4395 6574 w +(moved) 4535 6574 w +(to) 4944 6574 w +(an) 5104 6574 w +(AC,) 5285 6574 w +(chosen) 720 6704 w +(by) 1141 6704 w +(the) 1311 6704 w +(kernel.) 1526 6704 w +(If) 1938 6704 w +(this) 2055 6704 w +(number) 2295 6704 w +(is) 2752 6704 w +(positive,) 2883 6704 w +(the) 3377 6704 w +(process) 3591 6704 w +(moves) 4045 6704 w +(to) 4432 6704 w +(the) 4583 6704 w +(AC) 4797 6704 w +(with) 4992 6704 w +(that) 5261 6704 w +(core) 720 6834 w +(number; if) 985 6834 w +(available, otherwise) 1577 6834 w +(the) 2667 6834 w +(system call) 2873 6834 w +(fails.) 3498 6834 w +11 /LucidaSans-Italic f +(RFCORE) 970 7000 w +11 /LucidaSansUnicode00 f +(is) 1448 7000 w +(a) 1595 7000 w +(new) 1715 7000 w +(flag) 1989 7000 w +(for) 2250 7000 w +(the) 2462 7000 w +(standard) 2692 7000 w +(Plan) 3221 7000 w +(9) 3502 7000 w +11 /LucidaSans-Italic f +(rfork) 3630 7000 w +11 /LucidaSansUnicode00 f +(system) 3964 7000 w +(call,) 4397 7000 w +(which) 4672 7000 w +(controls) 5040 7000 w +(resources) 720 7130 w +(for) 1279 7130 w +(the) 1474 7130 w +(process.) 1687 7130 w +(This) 2175 7130 w +(flag) 2442 7130 w +(asks) 2686 7130 w +(the) 2965 7130 w +(kernel) 3178 7130 w +(to) 3553 7130 w +(move) 3703 7130 w +(the) 4033 7130 w +(process) 4246 7130 w +(to) 4698 7130 w +(an) 4847 7130 w +(AC,) 5017 7130 w +(cho\255) 5245 7130 w +(sen) 720 7260 w +(by) 948 7260 w +(the) 1116 7260 w +(kernel.) 1329 7260 w +(A) 1739 7260 w +(counterpart,) 1857 7260 w +11 /LucidaSans-Italic f +(RFCCORE) 2557 7260 w +11 /LucidaSansUnicode00 f +(,) 3051 7260 w +(may) 3128 7260 w +(be) 3390 7260 w +(used) 3563 7260 w +(to) 3860 7260 w +(ask) 4010 7260 w +(the) 4233 7260 w +(kernel) 4446 7260 w +(to) 4821 7260 w +(move) 4971 7260 w +(the) 5301 7260 w cleartomark showpage saveobj restore @@ -3244,443 +3300,418 @@ /saveobj save def mark 5 pagesetup +11 /LucidaSansUnicode00 f +(process back) 720 850 w +(to a) 1451 850 w +(TC.) 1690 850 w +(Thus,) 970 1016 w +(processes) 1303 1016 w +(can) 1870 1016 w +(also) 2093 1016 w +(change) 2347 1016 w +(their) 2768 1016 w +(mode.) 3054 1016 w +(Most) 3462 1016 w +(processes) 3759 1016 w +(are) 4326 1016 w +(started) 4532 1016 w +(on) 4945 1016 w +(the) 5118 1016 w +(TC) 5327 1016 w +(and,) 720 1146 w +(depending) 998 1146 w +(on) 1610 1146 w +(the) 1789 1146 w +(type) 2004 1146 w +(of) 2277 1146 w 11 /LucidaSans-Italic f -(RFCORE) 970 850 w -11 /LucidaSansUnicode00 f -(is) 1448 850 w -(a) 1595 850 w -(new) 1715 850 w -(flag) 1989 850 w -(for) 2250 850 w -(the) 2462 850 w -(standard) 2692 850 w -(Plan) 3221 850 w -(9) 3502 850 w +(rfork) 2429 1146 w +11 /LucidaSansUnicode00 f +(or) 2748 1146 w 11 /LucidaSans-Italic f -(rfork) 3630 850 w -11 /LucidaSansUnicode00 f -(system) 3964 850 w -(call,) 4397 850 w -(which) 4672 850 w -(controls) 5040 850 w -(resources) 720 980 w -(for) 1279 980 w -(the) 1474 980 w -(process.) 1687 980 w -(This) 2175 980 w -(flag) 2442 980 w -(asks) 2686 980 w -(the) 2965 980 w -(kernel) 3178 980 w -(to) 3553 980 w -(move) 3703 980 w -(the) 4033 980 w -(process) 4246 980 w -(to) 4698 980 w -(an) 4847 980 w -(AC,) 5017 980 w -(cho\255) 5245 980 w -(sen) 720 1110 w -(by) 948 1110 w -(the) 1116 1110 w -(kernel.) 1329 1110 w -(A) 1739 1110 w -(counterpart,) 1857 1110 w +(exec) 2904 1146 w +11 /LucidaSansUnicode00 f +(being) 3178 1146 w +(performed,) 3521 1146 w +(can) 4162 1146 w +(optionally) 4391 1146 w +(transition) 4961 1146 w +(to an AC. If) 720 1276 w +(the) 1357 1276 w +(process takes a) 1563 1276 w +(fault, makes a) 2424 1276 w +(system call, or has some) 3213 1276 w +(other) 4563 1276 w +(problem,) 4882 1276 w +(it) 5399 1276 w +(will) 720 1406 w +(transition) 937 1406 w +(back) 1484 1406 w +(to) 1770 1406 w +(the) 1914 1406 w +(TC) 2121 1406 w +(for) 2302 1406 w +(service.) 2491 1406 w +(Once) 2967 1406 w +(serviced, the) 3275 1406 w +(process may resume) 3990 1406 w +(execu\255) 5121 1406 w +(tion) 720 1536 w +(in) 975 1536 w +(the) 1122 1536 w +(AC.) 1340 1536 w +(Note) 1574 1536 w +(that) 1872 1536 w +(this) 2130 1536 w +(is) 2374 1536 w +(a) 2509 1536 w +(description) 2617 1536 w +(of) 3261 1536 w +(behavior,) 3416 1536 w +(and) 3960 1536 w +(not) 4206 1536 w +(of) 4430 1536 w +(the) 4586 1536 w +(implementa\255) 4805 1536 w +(tion. In the) 720 1666 w +(implementation, there) 1339 1666 w +(is no process migration.) 2561 1666 w +(user) 1361 2082 w +1296 2420 1656 2420 Dl +1656 2420 -180 0 0 -180 Da +1476 2240 0 180 -180 0 Da +1656 2492 1296 2492 Dl +1296 2492 180 0 0 180 Da +1476 2672 0 -180 180 0 Da +(kernel) 1184 2874 w +(\(TC\)) 1552 2874 w +2106 2456 2142 2456 Dl +2180 2456 2216 2456 Dl +2253 2456 2289 2456 Dl +2327 2456 2363 2456 Dl +2401 2456 2437 2456 Dl +2475 2456 2511 2456 Dl +2549 2456 2585 2456 Dl +2622 2456 2658 2456 Dl +2697 2456 2733 2456 Dl +2771 2456 2807 2456 Dl +2844 2456 2880 2456 Dl +2918 2456 2954 2456 Dl +2993 2456 3029 2456 Dl +3066 2456 3102 2456 Dl +3140 2456 3176 2456 Dl +3214 2456 3250 2456 Dl +3288 2456 3324 2456 Dl +3362 2456 3398 2456 Dl +3435 2456 3471 2456 Dl +3510 2456 3546 2456 Dl +3474 2474 3546 2456 Dl +3474 2438 3546 2456 Dl +(move) 2517 2413 w +(to AC) 2840 2413 w +(user) 4601 2082 w +4536 2420 4896 2420 Dl +4896 2420 -180 0 0 -180 Da +4716 2240 0 180 -180 0 Da +4356 2492 3996 2492 Dl +3996 2492 180 0 0 180 Da +4176 2672 0 -180 180 0 Da +(kernel) 3884 2874 w +(\(TC\)) 4252 2874 w +(AC) 4640 2849 w +10 /LucidaSans-Demi f +(Figure 2) 1314 3296 w +10 /LucidaSansUnicode00 f +(A traditional Plan) 1800 3296 w +(9) 2665 3296 w +(process) 2761 3296 w +(has) 3168 3296 w +(its) 3369 3296 w +(user) 3519 3296 w +(space) 3762 3296 w +(in) 4071 3296 w +(the) 4195 3296 w +(same) 4383 3296 w +(con\255) 4671 3296 w +(text) 1314 3416 w +(used) 1540 3416 w +(for) 1807 3416 w +(its) 1981 3416 w +(kernel) 2133 3416 w +(space.) 2470 3416 w +(After) 2812 3416 w +(moving) 3086 3416 w +(to) 3479 3416 w +(an) 3611 3416 w +(AC,) 3762 3416 w +(the) 3966 3416 w +(user) 4155 3416 w +(context) 4399 3416 w +(is) 4798 3416 w +(found on a different core, but the) 1314 3536 w +(kernel) 2978 3536 w +(part) 3313 3536 w +(remains) 3542 3536 w +(in) 3962 3536 w +(the) 4086 3536 w +(TC) 4274 3536 w +(as) 4439 3536 w +(a) 4578 3536 w +(han\255) 4666 3536 w +(dler for system calls and traps.) 1314 3656 w +11 /LucidaSansUnicode00 f +(Binary) 720 3882 w +(compatibility) 1088 3882 w +(for) 1820 3882 w +(processes) 2014 3882 w +(is) 2584 3882 w +(hence) 2713 3882 w +(rather) 3070 3882 w +(easy:) 3433 3882 w +(old) 3745 3882 w +(processes) 3954 3882 w +(only) 4524 3882 w +(run) 4789 3882 w +(on) 5012 3882 w +(a) 5189 3882 w +(TC,) 5292 3882 w +(unless) 720 4012 w +(the) 1102 4012 w +(kernel) 1313 4012 w +(decides) 1686 4012 w +(otherwise.) 2132 4012 w +(If) 2760 4012 w +(a) 2873 4012 w +(user) 2974 4012 w +(makes) 3245 4012 w +(a) 3630 4012 w +(mistake) 3731 4012 w +(and) 4189 4012 w +(starts) 4426 4012 w +(an) 4765 4012 w +(old) 4933 4012 w +(binary) 5140 4012 w +(on) 720 4142 w +(an) 900 4142 w +(AC,) 1074 4142 w +(it) 1307 4142 w +(will) 1426 4142 w +(simply) 1653 4142 w +(move) 2047 4142 w +(back) 2381 4142 w +(to) 2677 4142 w +(a) 2831 4142 w +(TC) 2938 4142 w +(at) 3129 4142 w +(the) 3277 4142 w +(first) 3494 4142 w +(system) 3755 4142 w +(call) 4175 4142 w +(and) 4402 4142 w +(stay) 4646 4142 w +(there) 4907 4142 w +(until) 5231 4142 w +(directed) 720 4272 w +(to) 1202 4272 w +(move.) 1356 4272 w +(If) 1760 4272 w +(the) 1879 4272 w +(binary) 2096 4272 w +(is) 2473 4272 w +(mostly) 2606 4272 w +(spending) 3006 4272 w +(its) 3543 4272 w +(time) 3717 4272 w +(on) 3999 4272 w +(computation,) 4179 4272 w +(it) 4931 4272 w +(can) 5049 4272 w +(still) 5279 4272 w +(move) 720 4402 w +(back) 1056 4402 w +(out) 1354 4402 w +(to) 1578 4402 w +(an) 1734 4402 w +(AC) 1911 4402 w +(for) 2111 4402 w +(the) 2312 4402 w +(duration) 2531 4402 w +(of) 3030 4402 w +(the) 3186 4402 w +(time) 3405 4402 w +(spent) 3690 4402 w +(in) 4034 4402 w +(a) 4182 4402 w +(computational) 4291 4402 w +(kernel.) 5104 4402 w +(No checkpointing is needed: this movement) 720 4532 w +(works because) 3102 4532 w +(the) 3923 4532 w +(cores share) 4129 4532 w +(memory.) 4777 4532 w +11 /LucidaSans-Demi f +(5.) 720 4792 w +(Semaphores) 888 4792 w +(and) 1617 4792 w +(tubes) 1863 4792 w +11 /LucidaSansUnicode00 f +(Because) 720 4958 w +(in) 1194 4958 w +(NIX) 1339 4958 w +(applications) 1566 4958 w +(may) 2255 4958 w +(run) 2520 4958 w +(in) 2746 4958 w +(ACs) 2891 4958 w +(undisturbed) 3144 4958 w +(by) 3836 4958 w +(other) 4007 4958 w +(kernel) 4335 4958 w +(activities,) 4714 4958 w +(it) 5265 4958 w +(is) 5384 4958 w +(important) 720 5088 w +(to) 1282 5088 w +(be) 1426 5088 w +(able) 1593 5088 w +(to) 1853 5088 w +(perform) 1997 5088 w +(inter process communication wihout) 2464 5088 w +(the) 4444 5088 w +(help of) 4650 5088 w +(the) 5059 5088 w +(ker\255) 5265 5088 w +(nel) 720 5218 w +(if) 931 5218 w +(feasible.) 1053 5218 w +(Besides) 1552 5218 w +(the) 2002 5218 w +(standard) 2222 5218 w +(toolkit) 2741 5218 w +(of) 3134 5218 w +(IPC) 3291 5218 w +(mechanisms) 3509 5218 w +(in) 4221 5218 w +(Plan) 4371 5218 w +(9,) 4643 5218 w +(NIX) 4797 5218 w +(includes) 5029 5218 w +(two mechanisms for this purpose:) 720 5348 w +11 /LucidaSansUnicode22 f +(\031) 720 5514 w +11 /LucidaSansUnicode00 f +(Optimistic user-level) 970 5514 w +(semaphores, and) 2127 5514 w +11 /LucidaSansUnicode22 f +(\031) 720 5680 w +11 /LucidaSansUnicode00 f +(Tubes.) 970 5680 w +(NIX) 720 5846 w +(semaphores) 948 5846 w +(use) 1643 5846 w +(atomic) 1876 5846 w +(increment) 2282 5846 w +(and) 2865 5846 w +(decrement) 3110 5846 w +(operations,) 3724 5846 w +(as) 4374 5846 w +(found) 4538 5846 w +(on) 4898 5846 w +(AMD64) 5080 5846 w +(and) 720 5976 w +(other) 973 5976 w +(architectures,) 1311 5976 w +(to) 2094 5976 w +(update) 2257 5976 w +(a) 2682 5976 w +(semaphore) 2798 5976 w +(value) 3445 5976 w +(in) 3780 5976 w +(order) 3935 5976 w +(to) 4278 5976 w +(synchronize.) 4441 5976 w +(If) 5173 5976 w +(the) 5301 5976 w +(operation) 720 6106 w +(performed) 1299 6106 w +(in) 1928 6106 w +(the) 2095 6106 w +(semaphore) 2333 6106 w +(may) 2992 6106 w +(proceed) 3279 6106 w +(without) 3776 6106 w +(blocking) 4245 6106 w +(\(and) 4768 6106 w +(without) 5070 6106 w +(requiring) 720 6236 w +(to) 1252 6236 w +(awake) 1403 6236 w +(a) 1779 6236 w +(peer) 1883 6236 w +(process\),) 2164 6236 w +(it) 2689 6236 w +(is) 2805 6236 w +(performed) 2936 6236 w +(by) 3541 6236 w +(the) 3710 6236 w +(user) 3924 6236 w +(library) 4198 6236 w +(without) 4582 6236 w +(entering) 5026 6236 w +(the) 720 6366 w +(kernel.) 926 6366 w +(Otherwise, the) 1364 6366 w +(kernel) 2177 6366 w +(is called to either block) 2545 6366 w +(or awake) 3826 6366 w +(another process.) 4341 6366 w +(The) 970 6532 w +(interface) 1220 6532 w +(provided) 1739 6532 w +(for) 2260 6532 w +(semaphores) 2464 6532 w +(contains) 3163 6532 w +(the) 3664 6532 w +(two) 3887 6532 w +(standard) 4132 6532 w +(operations) 4654 6532 w +(and) 5274 6532 w +(another one,) 720 6662 w 11 /LucidaSans-Italic f -(RFCCORE) 2557 1110 w -11 /LucidaSansUnicode00 f -(,) 3051 1110 w -(may) 3128 1110 w -(be) 3390 1110 w -(used) 3563 1110 w -(to) 3860 1110 w -(ask) 4010 1110 w -(the) 4233 1110 w -(kernel) 4446 1110 w -(to) 4821 1110 w -(move) 4971 1110 w -(the) 5301 1110 w -(process back) 720 1240 w -(to a) 1451 1240 w -(TC.) 1690 1240 w -(Thus,) 970 1406 w -(processes) 1303 1406 w -(can) 1870 1406 w -(also) 2093 1406 w -(change) 2347 1406 w -(their) 2768 1406 w -(mode.) 3054 1406 w -(Most) 3462 1406 w -(processes) 3759 1406 w -(are) 4326 1406 w -(started) 4532 1406 w -(on) 4945 1406 w -(the) 5118 1406 w -(TC) 5327 1406 w -(and,) 720 1536 w -(depending) 998 1536 w -(on) 1610 1536 w -(the) 1789 1536 w -(type) 2004 1536 w -(of) 2277 1536 w +(altsems) 1434 6662 w +11 /LucidaSansUnicode00 f +(, which is not) 1843 6662 w +(usual.) 2591 6662 w +9 /LucidaTypewriter f +(void) 1200 6832 w +(upsem\(int) 1525 6832 w +(*sem\);) 2175 6832 w +(void) 1200 6942 w +(downsem\(int) 1525 6942 w +(*sem\);) 2305 6942 w +(int) 1200 7052 w +(altsems\(int) 1460 7052 w +(*sems[],) 2240 7052 w +(int) 2825 7052 w +(nsems\);) 3085 7052 w 11 /LucidaSans-Italic f -(rfork) 2429 1536 w -11 /LucidaSansUnicode00 f -(or) 2748 1536 w +(Upsem) 720 7278 w +11 /LucidaSansUnicode00 f +(and) 1118 7278 w 11 /LucidaSans-Italic f -(exec) 2904 1536 w -11 /LucidaSansUnicode00 f -(being) 3178 1536 w -(performed,) 3521 1536 w -(can) 4162 1536 w -(optionally) 4391 1536 w -(transition) 4961 1536 w -(to an AC. If) 720 1666 w -(the) 1357 1666 w -(process takes a) 1563 1666 w -(fault, makes a) 2424 1666 w -(system call, or has some) 3213 1666 w -(other) 4563 1666 w -(problem,) 4882 1666 w -(it) 5399 1666 w -(will) 720 1796 w -(transition) 937 1796 w -(back) 1484 1796 w -(to) 1770 1796 w -(the) 1914 1796 w -(TC) 2121 1796 w -(for) 2302 1796 w -(service.) 2491 1796 w -(Once) 2967 1796 w -(serviced, the) 3275 1796 w -(process may resume) 3990 1796 w -(execu\255) 5121 1796 w -(tion) 720 1926 w -(in) 975 1926 w -(the) 1122 1926 w -(AC.) 1340 1926 w -(Note) 1574 1926 w -(that) 1872 1926 w -(this) 2130 1926 w -(is) 2374 1926 w -(a) 2509 1926 w -(description) 2617 1926 w -(of) 3261 1926 w -(behavior,) 3416 1926 w -(and) 3960 1926 w -(not) 4206 1926 w -(of) 4430 1926 w -(the) 4586 1926 w -(implementa\255) 4805 1926 w -(tion. In the) 720 2056 w -(implementation, there) 1339 2056 w -(is no process migration.) 2561 2056 w -(user) 1361 2472 w -1296 2810 1656 2810 Dl -1656 2810 -180 0 0 -180 Da -1476 2630 0 180 -180 0 Da -1656 2882 1296 2882 Dl -1296 2882 180 0 0 180 Da -1476 3062 0 -180 180 0 Da -(kernel) 1184 3264 w -(\(TC\)) 1552 3264 w -2106 2846 2142 2846 Dl -2180 2846 2216 2846 Dl -2253 2846 2289 2846 Dl -2327 2846 2363 2846 Dl -2401 2846 2437 2846 Dl -2475 2846 2511 2846 Dl -2549 2846 2585 2846 Dl -2622 2846 2658 2846 Dl -2697 2846 2733 2846 Dl -2771 2846 2807 2846 Dl -2844 2846 2880 2846 Dl -2918 2846 2954 2846 Dl -2993 2846 3029 2846 Dl -3066 2846 3102 2846 Dl -3140 2846 3176 2846 Dl -3214 2846 3250 2846 Dl -3288 2846 3324 2846 Dl -3362 2846 3398 2846 Dl -3435 2846 3471 2846 Dl -3510 2846 3546 2846 Dl -3474 2864 3546 2846 Dl -3474 2828 3546 2846 Dl -(move) 2517 2803 w -(to AC) 2840 2803 w -(user) 4601 2472 w -4536 2810 4896 2810 Dl -4896 2810 -180 0 0 -180 Da -4716 2630 0 180 -180 0 Da -4356 2882 3996 2882 Dl -3996 2882 180 0 0 180 Da -4176 3062 0 -180 180 0 Da -(kernel) 3884 3264 w -(\(TC\)) 4252 3264 w -(AC) 4640 3239 w -10 /LucidaSans-Demi f -(Figure 2) 1314 3686 w -10 /LucidaSansUnicode00 f -(A traditional Plan) 1800 3686 w -(9) 2665 3686 w -(process) 2761 3686 w -(has) 3168 3686 w -(its) 3369 3686 w -(user) 3519 3686 w -(space) 3762 3686 w -(in) 4071 3686 w -(the) 4195 3686 w -(same) 4383 3686 w -(con\255) 4671 3686 w -(text) 1314 3806 w -(used) 1540 3806 w -(for) 1807 3806 w -(its) 1981 3806 w -(kernel) 2133 3806 w -(space.) 2470 3806 w -(After) 2812 3806 w -(moving) 3086 3806 w -(to) 3479 3806 w -(an) 3611 3806 w -(AC,) 3762 3806 w -(the) 3966 3806 w -(user) 4155 3806 w -(context) 4399 3806 w -(is) 4798 3806 w -(found on a different core, but the) 1314 3926 w -(kernel) 2978 3926 w -(part) 3313 3926 w -(remains) 3542 3926 w -(in) 3962 3926 w -(the) 4086 3926 w -(TC) 4274 3926 w -(as) 4439 3926 w -(a) 4578 3926 w -(han\255) 4666 3926 w -(dler for system calls and traps.) 1314 4046 w -11 /LucidaSansUnicode00 f -(Binary) 720 4272 w -(compatibility) 1088 4272 w -(for) 1820 4272 w -(processes) 2014 4272 w -(is) 2584 4272 w -(hence) 2713 4272 w -(rather) 3070 4272 w -(easy:) 3433 4272 w -(old) 3745 4272 w -(processes) 3954 4272 w -(only) 4524 4272 w -(run) 4789 4272 w -(on) 5012 4272 w -(a) 5189 4272 w -(TC,) 5292 4272 w -(unless) 720 4402 w -(the) 1102 4402 w -(kernel) 1313 4402 w -(decides) 1686 4402 w -(otherwise.) 2132 4402 w -(If) 2760 4402 w -(a) 2873 4402 w -(user) 2974 4402 w -(makes) 3245 4402 w -(a) 3630 4402 w -(mistake) 3731 4402 w -(and) 4189 4402 w -(starts) 4426 4402 w -(an) 4765 4402 w -(old) 4933 4402 w -(binary) 5140 4402 w -(on) 720 4532 w -(an) 900 4532 w -(AC,) 1074 4532 w -(it) 1307 4532 w -(will) 1426 4532 w -(simply) 1653 4532 w -(move) 2047 4532 w -(back) 2381 4532 w -(to) 2677 4532 w -(a) 2831 4532 w -(TC) 2938 4532 w -(at) 3129 4532 w -(the) 3277 4532 w -(first) 3494 4532 w -(system) 3755 4532 w -(call) 4175 4532 w -(and) 4402 4532 w -(stay) 4646 4532 w -(there) 4907 4532 w -(until) 5231 4532 w -(directed) 720 4662 w -(to) 1202 4662 w -(move.) 1356 4662 w -(If) 1760 4662 w -(the) 1879 4662 w -(binary) 2096 4662 w -(is) 2473 4662 w -(mostly) 2606 4662 w -(spending) 3006 4662 w -(its) 3543 4662 w -(time) 3717 4662 w -(on) 3999 4662 w -(computation,) 4179 4662 w -(it) 4931 4662 w -(can) 5049 4662 w -(still) 5279 4662 w -(move) 720 4792 w -(back) 1056 4792 w -(out) 1354 4792 w -(to) 1578 4792 w -(an) 1734 4792 w -(AC) 1911 4792 w -(for) 2111 4792 w -(the) 2312 4792 w -(duration) 2531 4792 w -(of) 3030 4792 w -(the) 3186 4792 w -(time) 3405 4792 w -(spent) 3690 4792 w -(in) 4034 4792 w -(a) 4182 4792 w -(computational) 4291 4792 w -(kernel.) 5104 4792 w -(No checkpointing is needed: this movement) 720 4922 w -(works because) 3102 4922 w -(the) 3923 4922 w -(cores share) 4129 4922 w -(memory.) 4777 4922 w -11 /LucidaSans-Demi f -(5.) 720 5182 w -(Semaphores) 888 5182 w -(and) 1617 5182 w -(tubes) 1863 5182 w -11 /LucidaSansUnicode00 f -(Because) 720 5348 w -(in) 1194 5348 w -(NIX) 1339 5348 w -(applications) 1566 5348 w -(may) 2255 5348 w -(run) 2520 5348 w -(in) 2746 5348 w -(ACs) 2891 5348 w -(undisturbed) 3144 5348 w -(by) 3836 5348 w -(other) 4007 5348 w -(kernel) 4335 5348 w -(activities,) 4714 5348 w -(it) 5265 5348 w -(is) 5384 5348 w -(important) 720 5478 w -(to) 1282 5478 w -(be) 1426 5478 w -(able) 1593 5478 w -(to) 1853 5478 w -(perform) 1997 5478 w -(inter process communication wihout) 2464 5478 w -(the) 4444 5478 w -(help of) 4650 5478 w -(the) 5059 5478 w -(ker\255) 5265 5478 w -(nel) 720 5608 w -(if) 931 5608 w -(feasible.) 1053 5608 w -(Besides) 1552 5608 w -(the) 2002 5608 w -(standard) 2222 5608 w -(toolkit) 2741 5608 w -(of) 3134 5608 w -(IPC) 3291 5608 w -(mechanisms) 3509 5608 w -(in) 4221 5608 w -(Plan) 4371 5608 w -(9,) 4643 5608 w -(NIX) 4797 5608 w -(includes) 5029 5608 w -(two mechanisms for this purpose:) 720 5738 w -11 /LucidaSansUnicode22 f -(\031) 720 5904 w -11 /LucidaSansUnicode00 f -(Optimistic user-level) 970 5904 w -(semaphores, and) 2127 5904 w -11 /LucidaSansUnicode22 f -(\031) 720 6070 w -11 /LucidaSansUnicode00 f -(Tubes.) 970 6070 w -(NIX) 720 6236 w -(semaphores) 948 6236 w -(use) 1643 6236 w -(atomic) 1876 6236 w -(increment) 2282 6236 w -(and) 2865 6236 w -(decrement) 3110 6236 w -(operations,) 3724 6236 w -(as) 4374 6236 w -(found) 4538 6236 w -(on) 4898 6236 w -(AMD64) 5080 6236 w -(and) 720 6366 w -(other) 973 6366 w -(architectures,) 1311 6366 w -(to) 2094 6366 w -(update) 2257 6366 w -(a) 2682 6366 w -(semaphore) 2798 6366 w -(value) 3445 6366 w -(in) 3780 6366 w -(order) 3935 6366 w -(to) 4278 6366 w -(synchronize.) 4441 6366 w -(If) 5173 6366 w -(the) 5301 6366 w -(operation) 720 6496 w -(performed) 1299 6496 w -(in) 1928 6496 w -(the) 2095 6496 w -(semaphore) 2333 6496 w -(may) 2992 6496 w -(proceed) 3279 6496 w -(without) 3776 6496 w -(blocking) 4245 6496 w -(\(and) 4768 6496 w -(without) 5070 6496 w -(requiring) 720 6626 w -(to) 1252 6626 w -(awake) 1403 6626 w -(a) 1779 6626 w -(peer) 1883 6626 w -(process\),) 2164 6626 w -(it) 2689 6626 w -(is) 2805 6626 w -(performed) 2936 6626 w -(by) 3541 6626 w -(the) 3710 6626 w -(user) 3924 6626 w -(library) 4198 6626 w -(without) 4582 6626 w -(entering) 5026 6626 w -(the) 720 6756 w -(kernel.) 926 6756 w -(Otherwise, the) 1364 6756 w -(kernel) 2177 6756 w -(is called to either block) 2545 6756 w -(or awake) 3826 6756 w -(another process.) 4341 6756 w -(The) 970 6922 w -(interface) 1220 6922 w -(provided) 1739 6922 w -(for) 2260 6922 w -(semaphores) 2464 6922 w -(contains) 3163 6922 w -(the) 3664 6922 w -(two) 3887 6922 w -(standard) 4132 6922 w -(operations) 4654 6922 w -(and) 5274 6922 w -(another one,) 720 7052 w -11 /LucidaSans-Italic f -(altsems) 1434 7052 w -11 /LucidaSansUnicode00 f -(, which is not) 1843 7052 w -(usual.) 2591 7052 w +(downsem) 1357 7278 w +11 /LucidaSansUnicode00 f +(do) 1896 7278 w +(not) 2073 7278 w +(deserve) 2290 7278 w +(any) 2744 7278 w +(comment,) 2971 7278 w +(other) 3546 7278 w +(than) 3871 7278 w +(their) 4151 7278 w +(optimism) 4441 7278 w +(and) 4984 7278 w +(their) 5224 7278 w cleartomark showpage saveobj restore @@ -3689,494 +3720,494 @@ /saveobj save def mark 6 pagesetup -9 /LucidaTypewriter f -(void) 1200 830 w -(upsem\(int) 1525 830 w -(*sem\);) 2175 830 w -(void) 1200 940 w -(downsem\(int) 1525 940 w -(*sem\);) 2305 940 w -(int) 1200 1050 w -(altsems\(int) 1460 1050 w -(*sems[],) 2240 1050 w -(int) 2825 1050 w -(nsems\);) 3085 1050 w +11 /LucidaSansUnicode00 f +(ability) 720 850 w +(to) 1094 850 w +(run) 1252 850 w +(at) 1483 850 w +(user-level) 1634 850 w +(when) 2223 850 w +(feasible.) 2555 850 w +(In) 3054 850 w +(the) 3203 850 w +(worst) 3423 850 w +(case,) 3766 850 w +(they) 4085 850 w +(call) 4362 850 w +(two) 4592 850 w +(new) 4834 850 w +(system) 5098 850 w +(calls) 720 980 w +(\() 1021 980 w 11 /LucidaSans-Italic f -(Upsem) 720 1276 w -11 /LucidaSansUnicode00 f -(and) 1118 1276 w +(semsleep) 1057 980 w +11 /LucidaSansUnicode00 f +(,) 1540 980 w +(and) 1639 980 w 11 /LucidaSans-Italic f -(downsem) 1357 1276 w -11 /LucidaSansUnicode00 f -(do) 1896 1276 w -(not) 2073 1276 w -(deserve) 2290 1276 w -(any) 2744 1276 w -(comment,) 2971 1276 w -(other) 3546 1276 w -(than) 3871 1276 w -(their) 4151 1276 w -(optimism) 4441 1276 w -(and) 4984 1276 w -(their) 5224 1276 w -(ability) 720 1406 w -(to) 1094 1406 w -(run) 1252 1406 w -(at) 1483 1406 w -(user-level) 1634 1406 w -(when) 2223 1406 w -(feasible.) 2555 1406 w -(In) 3054 1406 w -(the) 3203 1406 w -(worst) 3423 1406 w -(case,) 3766 1406 w -(they) 4085 1406 w -(call) 4362 1406 w -(two) 4592 1406 w -(new) 4834 1406 w -(system) 5098 1406 w -(calls) 720 1536 w -(\() 1021 1536 w +(semwakeup) 1901 980 w +11 /LucidaSansUnicode00 f +(\)) 2525 980 w +(to) 2625 980 w +(block) 2797 980 w +(or) 3149 980 w +(wake) 3325 980 w +(up) 3661 980 w +(another) 3862 980 w +(process,) 4338 980 w +(if) 4848 980 w +(required.) 4985 980 w +(Optionally,) 720 1110 w +(before) 1342 1110 w +(blocking,) 1730 1110 w 11 /LucidaSans-Italic f -(semsleep) 1057 1536 w -11 /LucidaSansUnicode00 f -(,) 1540 1536 w -(and) 1639 1536 w +(downsem) 2262 1110 w +11 /LucidaSansUnicode00 f +(may) 2801 1110 w +(spin,) 3062 1110 w +(busy) 3363 1110 w +(waiting) 3654 1110 w +(for) 4082 1110 w +(a) 4276 1110 w +(chance) 4378 1110 w +(to) 4790 1110 w +(perform) 4939 1110 w +(a) 5411 1110 w +(down on the) 720 1240 w +(semaphore) 1420 1240 w +(without) 2047 1240 w +(blocking.) 2484 1240 w 11 /LucidaSans-Italic f -(semwakeup) 1901 1536 w -11 /LucidaSansUnicode00 f -(\)) 2525 1536 w -(to) 2625 1536 w -(block) 2797 1536 w -(or) 3149 1536 w -(wake) 3325 1536 w -(up) 3661 1536 w -(another) 3862 1536 w -(process,) 4338 1536 w -(if) 4848 1536 w -(required.) 4985 1536 w -(Optionally,) 720 1666 w -(before) 1342 1666 w -(blocking,) 1730 1666 w +(Altsems) 970 1406 w +11 /LucidaSansUnicode00 f +(is) 1427 1406 w +(a) 1554 1406 w +(novel) 1654 1406 w +(operation,) 1979 1406 w +(which) 2566 1406 w +(tries) 2915 1406 w +(to) 3191 1406 w +(perform) 3339 1406 w +(a) 3810 1406 w 11 /LucidaSans-Italic f -(downsem) 2262 1666 w -11 /LucidaSansUnicode00 f -(may) 2801 1666 w -(spin,) 3062 1666 w -(busy) 3363 1666 w -(waiting) 3654 1666 w -(for) 4082 1666 w -(a) 4276 1666 w -(chance) 4378 1666 w -(to) 4790 1666 w -(perform) 4939 1666 w -(a) 5411 1666 w -(down on the) 720 1796 w -(semaphore) 1420 1796 w -(without) 2047 1796 w -(blocking.) 2484 1796 w +(downsem) 3911 1406 w +11 /LucidaSansUnicode00 f +(in) 4449 1406 w +(one) 4589 1406 w +(of) 4826 1406 w +(the) 4974 1406 w +(given) 5185 1406 w +(semaphores.) 720 1536 w +(It) 1444 1536 w +(is) 1557 1536 w +(not) 1685 1536 w +(known) 1901 1536 w +(in) 2293 1536 w +(advance) 2433 1536 w +(in) 2907 1536 w +(which) 3047 1536 w +(semaphore) 3396 1536 w +(will) 4028 1536 w +(be) 4249 1536 w +(the) 4420 1536 w +(down) 4631 1536 w +(operation) 4960 1536 w +(performed.) 720 1666 w +(If) 1355 1666 w +(several) 1466 1666 w +(semaphores) 1879 1666 w +(are) 2565 1666 w +(ready) 2771 1666 w +(for) 3103 1666 w +(a) 3294 1666 w +(down) 3393 1666 w +(without) 3720 1666 w +(blocking,) 4160 1666 w +(one) 4689 1666 w +(of) 4925 1666 w +(them) 5072 1666 w +(is) 5384 1666 w +(selected) 720 1796 w +(and) 1222 1796 w +(the) 1482 1796 w +(down) 1715 1796 w +(is) 2066 1796 w +(performed;) 2216 1796 w +(the) 2875 1796 w +(function) 3107 1796 w +(returns) 3609 1796 w +(an) 4055 1796 w +(index) 4245 1796 w +(value) 4604 1796 w +(indicating) 4945 1796 w +(which one. If) 720 1926 w +(none) 1439 1926 w +(of) 1739 1926 w +(the) 1882 1926 w +(downs may proceed, the) 2088 1926 w +(operation calls the) 3429 1926 w +(kernel) 4454 1926 w +(and blocks.) 4822 1926 w +(Therefore,) 970 2092 w +(in) 1567 2092 w +(the) 1709 2092 w +(best) 1922 2092 w +(case,) 2192 2092 w 11 /LucidaSans-Italic f -(Altsems) 970 1962 w -11 /LucidaSansUnicode00 f -(is) 1427 1962 w -(a) 1554 1962 w -(novel) 1654 1962 w -(operation,) 1979 1962 w -(which) 2566 1962 w -(tries) 2915 1962 w -(to) 3191 1962 w -(perform) 3339 1962 w -(a) 3810 1962 w +(altsems) 2504 2092 w +11 /LucidaSansUnicode00 f +(performs) 2955 2092 w +(a) 3484 2092 w +(down) 3587 2092 w +(in) 3918 2092 w +(user) 4060 2092 w +(space,) 4333 2092 w +(without) 4714 2092 w +(enter\255) 5158 2092 w +(ing) 720 2222 w +(the) 930 2222 w +(kernel,) 1143 2222 w +(in) 1553 2222 w +(a) 1695 2222 w +(non-determinist) 1798 2222 w +(way.) 2717 2222 w +(In) 3032 2222 w +(the) 3174 2222 w +(worst) 3386 2222 w +(case,) 3721 2222 w +(the) 4032 2222 w +(kernel) 4244 2222 w +(is) 4618 2222 w +(used) 4747 2222 w +(to) 5043 2222 w +(await) 5192 2222 w +(for) 720 2352 w +(a) 924 2352 w +(chance) 1036 2352 w +(to) 1458 2352 w +(down) 1617 2352 w +(one) 1957 2352 w +(of) 2205 2352 w +(the) 2365 2352 w +(semaphores.) 2588 2352 w +(Before) 3323 2352 w +(doing) 3716 2352 w +(so,) 4072 2352 w +(the) 4282 2352 w +(operation) 4505 2352 w +(may) 5069 2352 w +(be) 5341 2352 w +(configured to spin and busy wait) 720 2482 w +(for a) 2506 2482 w +(while.) 2790 2482 w +(Optimistic) 970 2648 w +(semaphores,) 1555 2648 w +(as) 2276 2648 w +(described,) 2431 2648 w +(are) 3024 2648 w +(used) 3230 2648 w +(in) 3523 2648 w +(NIX) 3661 2648 w +(to) 3881 2648 w +(implement) 4028 2648 w +(shared) 4637 2648 w +(memory) 5037 2648 w +(communication) 720 2778 w +(channels) 1609 2778 w +(called) 2149 2778 w 11 /LucidaSans-Italic f -(downsem) 3911 1962 w -11 /LucidaSansUnicode00 f -(in) 4449 1962 w -(one) 4589 1962 w -(of) 4826 1962 w -(the) 4974 1962 w -(given) 5185 1962 w -(semaphores.) 720 2092 w -(It) 1444 2092 w -(is) 1557 2092 w -(not) 1685 2092 w -(known) 1901 2092 w -(in) 2293 2092 w -(advance) 2433 2092 w -(in) 2907 2092 w -(which) 3047 2092 w -(semaphore) 3396 2092 w -(will) 4028 2092 w -(be) 4249 2092 w -(the) 4420 2092 w -(down) 4631 2092 w -(operation) 4960 2092 w -(performed.) 720 2222 w -(If) 1355 2222 w -(several) 1466 2222 w -(semaphores) 1879 2222 w -(are) 2565 2222 w -(ready) 2771 2222 w -(for) 3103 2222 w -(a) 3294 2222 w -(down) 3393 2222 w -(without) 3720 2222 w -(blocking,) 4160 2222 w -(one) 4689 2222 w -(of) 4925 2222 w -(them) 5072 2222 w -(is) 5384 2222 w -(selected) 720 2352 w -(and) 1222 2352 w -(the) 1482 2352 w -(down) 1715 2352 w -(is) 2066 2352 w -(performed;) 2216 2352 w -(the) 2875 2352 w -(function) 3107 2352 w -(returns) 3609 2352 w -(an) 4055 2352 w -(index) 4245 2352 w -(value) 4604 2352 w -(indicating) 4945 2352 w -(which one. If) 720 2482 w -(none) 1439 2482 w -(of) 1739 2482 w -(the) 1882 2482 w -(downs may proceed, the) 2088 2482 w -(operation calls the) 3429 2482 w -(kernel) 4454 2482 w -(and blocks.) 4822 2482 w -(Therefore,) 970 2648 w -(in) 1567 2648 w -(the) 1709 2648 w -(best) 1922 2648 w -(case,) 2192 2648 w +(tubes) 2530 2778 w +11 /LucidaSansUnicode00 f +(.) 2819 2778 w +(A) 2958 2778 w +(tube) 3103 2778 w +(is) 3411 2778 w +(a) 3567 2778 w +(buffered) 3696 2778 w +(unidirectional) 4221 2778 w +(channel.) 5022 2778 w +(Fixed-size) 720 2908 w +(messages) 1324 2908 w +(can) 1885 2908 w +(be) 2108 2908 w +(sent) 2277 2908 w +(and) 2542 2908 w +(received) 2778 2908 w +(from) 3261 2908 w +(it) 3554 2908 w +(\(but) 3665 2908 w +(different) 3917 2908 w +(tubes) 4416 2908 w +(may) 4750 2908 w +(have) 5008 2908 w +(dif\255) 5294 2908 w +(ferent) 720 3038 w +(message) 1074 3038 w +(sizes\).) 1576 3038 w +(The) 970 3204 w +(implementation) 1230 3204 w +(is) 2130 3204 w +(a) 2279 3204 w +(simple) 2401 3204 w +(producer-consumer,) 2815 3204 w +(but,) 3981 3204 w +(because) 4256 3204 w +(of) 4752 3204 w +(the) 4922 3204 w +(sema\255) 5155 3204 w +(phores) 720 3334 w +(used,) 1127 3334 w +(it) 1457 3334 w +(is) 1570 3334 w +(able) 1698 3334 w +(to) 1962 3334 w +(run) 2110 3334 w +(at) 2331 3334 w +(user) 2473 3334 w +(space) 2744 3334 w +(without) 3088 3334 w +(entering) 3530 3334 w +(the) 4016 3334 w +(kernel) 4227 3334 w +(when) 4600 3334 w +(sends) 4923 3334 w +(and) 5274 3334 w +(receives may proceed.) 720 3464 w +(It) 970 3630 w +(is) 1079 3630 w +(feasible) 1203 3630 w +(to) 1654 3630 w +(try) 1798 3630 w +(to) 1977 3630 w +(perform) 2121 3630 w +(multiple) 2588 3630 w +(sends) 3062 3630 w +(and) 3409 3630 w +(receives) 3643 3630 w +(at) 4111 3630 w +(the) 4250 3630 w +(same) 4458 3630 w +(time,) 4776 3630 w +(waiting) 5085 3630 w +(for) 720 3760 w +(the) 926 3760 w +(chance) 1149 3760 w +(to) 1572 3760 w +(execute) 1732 3760 w +(one) 2202 3760 w +(of) 2451 3760 w +(them.) 2611 3760 w +(This) 2971 3760 w +(operation) 3248 3760 w +(exploits) 3812 3760 w 11 /LucidaSans-Italic f -(altsems) 2504 2648 w -11 /LucidaSansUnicode00 f -(performs) 2955 2648 w -(a) 3484 2648 w -(down) 3587 2648 w -(in) 3918 2648 w -(user) 4060 2648 w -(space,) 4333 2648 w -(without) 4714 2648 w -(enter\255) 5158 2648 w -(ing) 720 2778 w -(the) 930 2778 w -(kernel,) 1143 2778 w -(in) 1553 2778 w -(a) 1695 2778 w -(non-determinist) 1798 2778 w -(way.) 2717 2778 w -(In) 3032 2778 w -(the) 3174 2778 w -(worst) 3386 2778 w -(case,) 3721 2778 w -(the) 4032 2778 w -(kernel) 4244 2778 w -(is) 4618 2778 w -(used) 4747 2778 w -(to) 5043 2778 w -(await) 5192 2778 w -(for) 720 2908 w -(a) 924 2908 w -(chance) 1036 2908 w -(to) 1458 2908 w -(down) 1617 2908 w -(one) 1957 2908 w -(of) 2205 2908 w -(the) 2365 2908 w -(semaphores.) 2588 2908 w -(Before) 3323 2908 w -(doing) 3716 2908 w -(so,) 4072 2908 w -(the) 4282 2908 w -(operation) 4505 2908 w -(may) 5069 2908 w -(be) 5341 2908 w -(configured to spin and busy wait) 720 3038 w -(for a) 2506 3038 w -(while.) 2790 3038 w -(Optimistic) 970 3204 w -(semaphores,) 1555 3204 w -(as) 2276 3204 w -(described,) 2431 3204 w -(are) 3024 3204 w -(used) 3230 3204 w -(in) 3523 3204 w -(NIX) 3661 3204 w -(to) 3881 3204 w -(implement) 4028 3204 w -(shared) 4637 3204 w -(memory) 5037 3204 w -(communication) 720 3334 w -(channels) 1609 3334 w -(called) 2149 3334 w +(altsems) 4290 3760 w +11 /LucidaSansUnicode00 f +(to) 4751 3760 w +(operate) 4911 3760 w +(at) 5370 3760 w +(user-level) 720 3890 w +(if) 1307 3890 w +(possible,) 1427 3890 w +(calling) 1952 3890 w +(the) 2348 3890 w +(kernel) 2566 3890 w +(otherwise.) 2947 3890 w +(It) 3583 3890 w +(suffices) 3704 3890 w +(to) 4164 3890 w +(fill) 4320 3890 w +(an) 4505 3890 w +(array) 4682 3890 w +(of) 4999 3890 w +(sema\255) 5155 3890 w +(phores) 720 4020 w +(with) 1132 4020 w +(either) 1403 4020 w +(the) 1757 4020 w +(ones) 1972 4020 w +(representing) 2269 4020 w +(messages) 2991 4020 w +(in) 3558 4020 w +(a) 3702 4020 w +(tube,) 3807 4020 w +(or) 4126 4020 w +(the) 4282 4020 w +(ones) 4497 4020 w +(representing) 4794 4020 w +(empty) 720 4150 w +(slots) 1095 4150 w +(in) 1391 4150 w +(a) 1535 4150 w +(tube,) 1640 4150 w +(depending) 1959 4150 w +(on) 2570 4150 w +(whether) 2749 4150 w +(a) 3224 4150 w +(receive) 3329 4150 w +(or) 3749 4150 w +(a) 3905 4150 w +(send) 4010 4150 w +(operation) 4309 4150 w +(is) 4865 4150 w +(selected.) 4997 4150 w +(Then, calling) 720 4280 w 11 /LucidaSans-Italic f -(tubes) 2530 3334 w -11 /LucidaSansUnicode00 f -(.) 2819 3334 w -(A) 2958 3334 w -(tube) 3103 3334 w -(is) 3411 3334 w -(a) 3567 3334 w -(buffered) 3696 3334 w -(unidirectional) 4221 3334 w -(channel.) 5022 3334 w -(Fixed-size) 720 3464 w -(messages) 1324 3464 w -(can) 1885 3464 w -(be) 2108 3464 w -(sent) 2277 3464 w -(and) 2542 3464 w -(received) 2778 3464 w -(from) 3261 3464 w -(it) 3554 3464 w -(\(but) 3665 3464 w -(different) 3917 3464 w -(tubes) 4416 3464 w -(may) 4750 3464 w -(have) 5008 3464 w -(dif\255) 5294 3464 w -(ferent) 720 3594 w -(message) 1074 3594 w -(sizes\).) 1576 3594 w -(The) 970 3760 w -(implementation) 1230 3760 w -(is) 2130 3760 w -(a) 2279 3760 w -(simple) 2401 3760 w -(producer-consumer,) 2815 3760 w -(but,) 3981 3760 w -(because) 4256 3760 w -(of) 4752 3760 w -(the) 4922 3760 w -(sema\255) 5155 3760 w -(phores) 720 3890 w -(used,) 1127 3890 w -(it) 1457 3890 w -(is) 1570 3890 w -(able) 1698 3890 w -(to) 1962 3890 w -(run) 2110 3890 w -(at) 2331 3890 w -(user) 2473 3890 w -(space) 2744 3890 w -(without) 3088 3890 w -(entering) 3530 3890 w -(the) 4016 3890 w -(kernel) 4227 3890 w -(when) 4600 3890 w -(sends) 4923 3890 w -(and) 5274 3890 w -(receives may proceed.) 720 4020 w -(It) 970 4186 w -(is) 1079 4186 w -(feasible) 1203 4186 w -(to) 1654 4186 w -(try) 1798 4186 w -(to) 1977 4186 w -(perform) 2121 4186 w -(multiple) 2588 4186 w -(sends) 3062 4186 w -(and) 3409 4186 w -(receives) 3643 4186 w -(at) 4111 4186 w -(the) 4250 4186 w -(same) 4458 4186 w -(time,) 4776 4186 w -(waiting) 5085 4186 w -(for) 720 4316 w -(the) 926 4316 w -(chance) 1149 4316 w -(to) 1572 4316 w -(execute) 1732 4316 w -(one) 2202 4316 w -(of) 2451 4316 w -(them.) 2611 4316 w -(This) 2971 4316 w -(operation) 3248 4316 w -(exploits) 3812 4316 w -11 /LucidaSans-Italic f -(altsems) 4290 4316 w -11 /LucidaSansUnicode00 f -(to) 4751 4316 w -(operate) 4911 4316 w -(at) 5370 4316 w -(user-level) 720 4446 w -(if) 1307 4446 w -(possible,) 1427 4446 w -(calling) 1952 4446 w -(the) 2348 4446 w -(kernel) 2566 4446 w -(otherwise.) 2947 4446 w -(It) 3583 4446 w -(suffices) 3704 4446 w -(to) 4164 4446 w -(fill) 4320 4446 w -(an) 4505 4446 w -(array) 4682 4446 w -(of) 4999 4446 w -(sema\255) 5155 4446 w -(phores) 720 4576 w -(with) 1132 4576 w -(either) 1403 4576 w -(the) 1757 4576 w -(ones) 1972 4576 w -(representing) 2269 4576 w -(messages) 2991 4576 w -(in) 3558 4576 w -(a) 3702 4576 w -(tube,) 3807 4576 w -(or) 4126 4576 w -(the) 4282 4576 w -(ones) 4497 4576 w -(representing) 4794 4576 w -(empty) 720 4706 w -(slots) 1095 4706 w -(in) 1391 4706 w -(a) 1535 4706 w -(tube,) 1640 4706 w -(depending) 1959 4706 w -(on) 2570 4706 w -(whether) 2749 4706 w -(a) 3224 4706 w -(receive) 3329 4706 w -(or) 3749 4706 w -(a) 3905 4706 w -(send) 4010 4706 w -(operation) 4309 4706 w -(is) 4865 4706 w -(selected.) 4997 4706 w -(Then, calling) 720 4836 w -11 /LucidaSans-Italic f -(altsems) 1441 4836 w -11 /LucidaSansUnicode00 f -(guarantees that, upon return, the) 1885 4836 w -(operation may proceed.) 3705 4836 w +(altsems) 1441 4280 w +11 /LucidaSansUnicode00 f +(guarantees that, upon return, the) 1885 4280 w +(operation may proceed.) 3705 4280 w 11 /LucidaSans-Demi f -(6.) 720 5096 w -(Implementation) 888 5096 w -11 /LucidaSansUnicode00 f -(As) 720 5262 w -(of) 893 5262 w -(today,) 1042 5262 w -(the) 1413 5262 w -(kernel) 1625 5262 w -(is) 1999 5262 w -(operational,) 2128 5262 w -(although) 2809 5262 w -(not) 3323 5262 w -(in) 3540 5262 w -(production.) 3681 5262 w -(More) 4339 5262 w -(work) 4649 5262 w -(is) 4951 5262 w -(needed) 5080 5262 w -(in) 720 5392 w -(system) 866 5392 w -(interfaces,) 1286 5392 w -(role) 1891 5392 w -(changing,) 2143 5392 w -(and) 2713 5392 w -(memory) 2957 5392 w -(management;) 3438 5392 w -(but) 4213 5392 w -(the) 4436 5392 w -(kernel) 4652 5392 w -(is) 5030 5392 w -(active) 5163 5392 w -(enough to be) 720 5522 w -(used, at) 1465 5522 w -(least) 1927 5522 w -(for testing.) 2214 5522 w -(We) 970 5688 w -(have) 1163 5688 w -(changed) 1447 5688 w -(a) 1935 5688 w -(surprisingly) 2032 5688 w -(small) 2696 5688 w -(amount) 3016 5688 w -(of) 3460 5688 w -(code) 3605 5688 w -(at) 3896 5688 w -(this) 4035 5688 w -(point.) 4269 5688 w -(There) 4618 5688 w -(are) 4961 5688 w -(about) 5166 5688 w -(400) 720 5818 w -(lines) 977 5818 w -(of) 1277 5818 w -(new) 1435 5818 w -(assembler) 1700 5818 w -(source,) 2295 5818 w -(about) 2734 5818 w -(80) 3089 5818 w -(lines) 3276 5818 w -(of) 3575 5818 w -(platform) 3732 5818 w -(independent) 4239 5818 w -(C) 4958 5818 w -(source,) 5083 5818 w -(and) 720 5948 w -(about) 975 5948 w -(350) 1338 5948 w -(lines) 1602 5948 w -(of) 1909 5948 w -(AMD64) 2074 5948 w -(C) 2523 5948 w -(source) 2656 5948 w -(code.) 3067 5948 w -(To) 3413 5948 w -(this,) 3607 5948 w -(we) 3897 5948 w -(have) 4102 5948 w -(to) 4408 5948 w -(add) 4574 5948 w -(a) 4831 5948 w -(few) 4950 5948 w -(extra) 5196 5948 w -(source) 720 6078 w -(lines in the) 1110 6078 w -(start-up code, system call, and trap handlers.) 1736 6078 w -(This implementation is) 4250 6078 w -(being both developed and tested only in the) 720 6208 w -(AMD64 architecture.) 3117 6208 w -(We) 970 6374 w -(found) 1171 6374 w -(that) 1528 6374 w -(there) 1783 6374 w -(seems) 2105 6374 w -(to) 2487 6374 w -(be) 2639 6374 w -(no) 2814 6374 w -(performance) 2993 6374 w -(penalty) 3715 6374 w -(for) 4149 6374 w -(pre-paging,) 4346 6374 w -(which) 5031 6374 w -(is) 5384 6374 w -(interesting on its own.) 720 6504 w -(To) 970 6670 w -(dispatch) 1158 6670 w -(a) 1662 6670 w -(process) 1775 6670 w -(for) 2238 6670 w -(execution) 2443 6670 w -(at) 3018 6670 w -(one) 3172 6670 w -(AC) 3421 6670 w -(we) 3625 6670 w -(use) 3825 6670 w -(the) 4064 6670 w -(inter-core-call,) 4288 6670 w -(active) 5163 6670 w -(message, mechanism. This figure) 720 6800 w -(explains how) 2545 6800 w -(it) 3282 6800 w -(works:) 3390 6800 w +(6.) 720 4540 w +(Implementation) 888 4540 w +11 /LucidaSansUnicode00 f +(As) 720 4706 w +(of) 893 4706 w +(today,) 1042 4706 w +(the) 1413 4706 w +(kernel) 1625 4706 w +(is) 1999 4706 w +(operational,) 2128 4706 w +(although) 2809 4706 w +(not) 3323 4706 w +(in) 3540 4706 w +(production.) 3681 4706 w +(More) 4339 4706 w +(work) 4649 4706 w +(is) 4951 4706 w +(needed) 5080 4706 w +(in) 720 4836 w +(system) 866 4836 w +(interfaces,) 1286 4836 w +(role) 1891 4836 w +(changing,) 2143 4836 w +(and) 2713 4836 w +(memory) 2957 4836 w +(management;) 3438 4836 w +(but) 4213 4836 w +(the) 4436 4836 w +(kernel) 4652 4836 w +(is) 5030 4836 w +(active) 5163 4836 w +(enough to be) 720 4966 w +(used, at) 1465 4966 w +(least) 1927 4966 w +(for testing.) 2214 4966 w +(We) 970 5132 w +(have) 1163 5132 w +(changed) 1447 5132 w +(a) 1935 5132 w +(surprisingly) 2032 5132 w +(small) 2696 5132 w +(amount) 3016 5132 w +(of) 3460 5132 w +(code) 3605 5132 w +(at) 3896 5132 w +(this) 4035 5132 w +(point.) 4269 5132 w +(There) 4618 5132 w +(are) 4961 5132 w +(about) 5166 5132 w +(400) 720 5262 w +(lines) 977 5262 w +(of) 1277 5262 w +(new) 1435 5262 w +(assembler) 1700 5262 w +(source,) 2295 5262 w +(about) 2734 5262 w +(80) 3089 5262 w +(lines) 3276 5262 w +(of) 3575 5262 w +(platform) 3732 5262 w +(independent) 4239 5262 w +(C) 4958 5262 w +(source,) 5083 5262 w +(and) 720 5392 w +(about) 975 5392 w +(350) 1338 5392 w +(lines) 1602 5392 w +(of) 1909 5392 w +(AMD64) 2074 5392 w +(C) 2523 5392 w +(source) 2656 5392 w +(code.) 3067 5392 w +(To) 3413 5392 w +(this,) 3607 5392 w +(we) 3897 5392 w +(have) 4102 5392 w +(to) 4408 5392 w +(add) 4574 5392 w +(a) 4831 5392 w +(few) 4950 5392 w +(extra) 5196 5392 w +(source) 720 5522 w +(lines in the) 1110 5522 w +(start-up code, system call, and trap handlers.) 1736 5522 w +(This implementation is) 4250 5522 w +(being both developed and tested only in the) 720 5652 w +(AMD64 architecture.) 3117 5652 w +(We) 970 5818 w +(found) 1171 5818 w +(that) 1528 5818 w +(there) 1783 5818 w +(seems) 2105 5818 w +(to) 2487 5818 w +(be) 2639 5818 w +(no) 2814 5818 w +(performance) 2993 5818 w +(penalty) 3715 5818 w +(for) 4149 5818 w +(pre-paging,) 4346 5818 w +(which) 5031 5818 w +(is) 5384 5818 w +(interesting on its own.) 720 5948 w +(To) 970 6114 w +(dispatch) 1158 6114 w +(a) 1662 6114 w +(process) 1775 6114 w +(for) 2238 6114 w +(execution) 2443 6114 w +(at) 3018 6114 w +(one) 3172 6114 w +(AC) 3421 6114 w +(we) 3625 6114 w +(use) 3825 6114 w +(the) 4064 6114 w +(inter-core-call,) 4288 6114 w +(active) 5163 6114 w +(message, mechanism. This figure) 720 6244 w +(explains how) 2545 6244 w +(it) 3282 6244 w +(works:) 3390 6244 w +2376 7139 2376 6779 Dl +2376 6779 2916 6779 Dl +2916 6779 2916 7139 Dl +2916 7139 2376 7139 Dl +(runac) 2497 6981 w +2988 6941 2916 6959 Dl +2988 6977 2916 6959 Dl +8 /LucidaSansUnicode00 f +(.) 2905 6962 w +(.) 2941 6962 w +(.) 2977 6962 w +(.) 3013 6962 w +(.) 3049 6962 w +(.) 3085 6962 w +(.) 3121 6962 w +(.) 3157 6962 w +(.) 3193 6962 w +(.) 3229 6962 w +(.) 3265 6962 w +3204 6977 3276 6959 Dl +3204 6941 3276 6959 Dl +3276 7139 3276 6779 Dl +3276 6779 3816 6779 Dl +3816 6779 3816 7139 Dl +3816 7139 3276 7139 Dl +11 /LucidaSansUnicode00 f +(acsched) 3332 6981 w +(TC) 2574 6621 w +(AC) 3470 6621 w cleartomark showpage saveobj restore @@ -4185,530 +4216,501 @@ /saveobj save def mark 7 pagesetup -2376 1570 2376 1210 Dl -2376 1210 2916 1210 Dl -2916 1210 2916 1570 Dl -2916 1570 2376 1570 Dl -11 /LucidaSansUnicode00 f -(runac) 2497 1412 w -2988 1372 2916 1390 Dl -2988 1408 2916 1390 Dl +11 /LucidaSansUnicode00 f +(The) 720 850 w +(function) 955 850 w +11 /LucidaSans-Italic f +(acsched) 1432 850 w +11 /LucidaSansUnicode00 f +(runs) 1892 850 w +(on) 2165 850 w +(ACs,) 2336 850 w +(as) 2615 850 w +(part) 2768 850 w +(of) 3020 850 w +(its) 3164 850 w +(start-up) 3329 850 w +(sequence.) 3810 850 w +(It) 4384 850 w +(sits) 4493 850 w +(in) 4715 850 w +(a) 4852 850 w +(tight) 4950 850 w +(loop) 5237 850 w +(spinning) 720 980 w +(on) 1231 980 w +(an) 1416 980 w +(active) 1594 980 w +(message) 1952 980 w +(function) 2468 980 w +(pointer.) 2958 980 w +(To) 3426 980 w +(ask) 3611 980 w +(the) 3841 980 w +(AC) 4061 980 w +(to) 4262 980 w +(execute) 4419 980 w +(a) 4886 980 w +(function,) 4996 980 w +(the) 720 1110 w +(TC) 929 1110 w +(sets) 1112 1110 w +(in) 1365 1110 w +(the) 1503 1110 w +(ICC) 1712 1110 w +(structure) 1935 1110 w +(for) 2456 1110 w +(the) 2648 1110 w +(AC) 2858 1110 w +(the) 3049 1110 w +(arguments,) 3259 1110 w +(indication) 3904 1110 w +(to) 4469 1110 w +(flush) 4616 1110 w +(the) 4920 1110 w +(TLB) 5130 1110 w +(or) 5360 1110 w +(not,) 720 1240 w +(and) 970 1240 w +(the) 1207 1240 w +(function) 1417 1240 w +(pointer) 1897 1240 w +(and) 2320 1240 w +(then) 2557 1240 w +(changes) 2835 1240 w +(the) 3313 1240 w +(process) 3523 1240 w +(state) 3973 1240 w +(to) 4273 1240 w +11 /LucidaSans-Italic f +(Exotic) 4419 1240 w +11 /LucidaSansUnicode00 f +(,) 4731 1240 w +(which) 4804 1240 w +(would) 5151 1240 w +(block) 720 1370 w +(the) 1047 1370 w +(process) 1258 1370 w +(for) 1709 1370 w +(the) 1902 1370 w +(moment.) 2113 1370 w +(When) 2665 1370 w +(the) 2998 1370 w +(pointer) 3209 1370 w +(becomes) 3633 1370 w +(non-nil,) 4147 1370 w +(the) 4621 1370 w +(AC) 4832 1370 w +(calls) 5024 1370 w +(the) 5301 1370 w +(function.) 720 1500 w +(The) 1269 1500 w +(function) 1506 1500 w +(pointer) 1985 1500 w +(uses) 2407 1500 w +(a) 2687 1500 w +(cache) 2786 1500 w +(line) 3127 1500 w +(and) 3359 1500 w +(all) 3595 1500 w +(other) 3758 1500 w +(arguments) 4079 1500 w +(use) 4688 1500 w +(a) 4912 1500 w +(different) 5011 1500 w +(cache) 720 1630 w +(line,) 1070 1630 w +(so) 1346 1630 w +(that) 1517 1630 w +(polling) 1776 1630 w +(can) 2192 1630 w +(be) 2425 1630 w +(efficient) 2604 1630 w +(regarding) 3087 1630 w +(bus) 3653 1630 w +(transactions.) 3894 1630 w +(Once) 4664 1630 w +(the) 4984 1630 w +(func\255) 5203 1630 w +(tion) 720 1760 w +(is) 970 1760 w +(done,) 1100 1760 w +(the) 1443 1760 w +(AC) 1656 1760 w +(sets) 1850 1760 w +(the) 2107 1760 w +(function) 2320 1760 w +(pointer) 2803 1760 w +(to) 3229 1760 w +(nil) 3379 1760 w +(and) 3553 1760 w +(calls) 3793 1760 w +11 /LucidaSans-Italic f +(ready) 4072 1760 w +11 /LucidaSansUnicode00 f +(on) 4420 1760 w +(the) 4597 1760 w +(process) 4809 1760 w +(that) 5261 1760 w +(scheduled the) 720 1890 w +(function for execution.) 1503 1890 w +(You think) 2795 1890 w +(of) 3341 1890 w +(this as a) 3484 1890 w +(soft) 3964 1890 w +(IPI.) 4204 1890 w +(While) 970 2056 w +(an) 1296 2056 w +(AC) 1462 2056 w +(is) 1651 2056 w +(performing) 1776 2056 w +(an) 2412 2056 w +(action) 2578 2056 w +(dictated) 2940 2056 w +(by) 3408 2056 w +(a) 3571 2056 w +(process) 3670 2056 w +(in) 4119 2056 w +(the) 4257 2056 w +(TC,) 4466 2056 w +(its) 4684 2056 w +11 /LucidaSans-Italic f +(Mach) 4851 2056 w +11 /LucidaSansUnicode00 f +(struc\255) 5170 2056 w +(ture) 720 2186 w +(points) 976 2186 w +(to) 1348 2186 w +(the) 1495 2186 w +(process) 1705 2186 w +(so) 2155 2186 w +(that) 2317 2186 w +11 /LucidaSans-Italic f +(up) 2567 2186 w +11 /LucidaSansUnicode00 f +(in) 2741 2186 w +(the) 2880 2186 w +(AC) 3090 2186 w +(refers) 3281 2186 w +(to) 3631 2186 w +(the) 3778 2186 w +(process.) 3988 2186 w +(The) 4473 2186 w +(process) 4711 2186 w +(refers) 5161 2186 w +(to) 720 2316 w +(the) 866 2316 w +(AC) 1075 2316 w +(via) 1265 2316 w +(a) 1453 2316 w +(new) 1552 2316 w +(field) 1805 2316 w +11 /LucidaSans-Italic f +(Mach.ac) 2079 2316 w +11 /LucidaSansUnicode00 f +(.) 2517 2316 w +(Should) 2625 2316 w +(the) 3026 2316 w +(AC) 3235 2316 w +(become) 3425 2316 w +(idle,) 3881 2316 w +(its) 4150 2316 w +11 /LucidaSans-Italic f +(Mach.proc) 4318 2316 w +11 /LucidaSansUnicode00 f +(field) 4911 2316 w +(is) 5186 2316 w +(set) 5313 2316 w +(to nil.) 720 2446 w +(This) 970 2612 w +(mechanism) 1234 2612 w +(is) 1881 2612 w +(kind) 2009 2612 w +(of) 2282 2612 w +(like) 2430 2612 w +(a) 2660 2612 w +(vm_exit\(\).) 2761 2612 w +(While) 3359 2612 w +(we) 3688 2612 w +(could) 3875 2612 w +(think) 4207 2612 w +(about) 4520 2612 w +(implement\255) 4866 2612 w +(ing) 720 2742 w +(this) 936 2742 w +(with) 1181 2742 w +(vm_enter\(\),) 1455 2742 w +(it) 2102 2742 w +11 /LucidaSansUnicode20 f +(\031) 2175 2742 w +11 /LucidaSansUnicode00 f +(s) 2210 2742 w +(not) 2314 2742 w +(quite) 2538 2742 w +(clear) 2858 2742 w +(we) 3161 2742 w +(should) 3355 2742 w +(take) 3762 2742 w +(that) 4037 2742 w +(step.) 4295 2742 w +(VMs) 4640 2742 w +(have) 4910 2742 w +(over\255) 5205 2742 w +(head,) 720 2872 w +(at) 1064 2872 w +(least) 1216 2872 w +(when) 1518 2872 w +(compared) 1851 2872 w +(to) 2432 2872 w +(the) 2590 2872 w +(mechanism) 2811 2872 w +(we) 3468 2872 w +(use.) 3665 2872 w +(This) 3971 2872 w +(mechanism) 4246 2872 w +(is) 4903 2872 w +(used) 5041 2872 w +(by) 5346 2872 w +(NIX to dispatch processes to ACs, as shown:) 720 3002 w +1926 3537 1926 3177 Dl +1926 3177 2466 3177 Dl +2466 3177 2466 3537 Dl +2466 3537 1926 3537 Dl +(user code) 1936 3379 w +2196 3537 2196 3897 Dl +2178 3825 2196 3897 Dl +2214 3825 2196 3897 Dl +1926 4257 1926 3897 Dl +1926 3897 2466 3897 Dl +2466 3897 2466 4257 Dl +2466 4257 1926 4257 Dl +(execac) 2014 4099 w +2466 4077 2826 4077 Dl +2754 4095 2826 4077 Dl +2754 4059 2826 4077 Dl +2826 4257 2826 3897 Dl +2826 3897 3366 3897 Dl +3366 3897 3366 4257 Dl +3366 4257 2826 4257 Dl +(runacore) 2860 4099 w 8 /LucidaSansUnicode00 f -(.) 2905 1393 w -(.) 2941 1393 w -(.) 2977 1393 w -(.) 3013 1393 w -(.) 3049 1393 w -(.) 3085 1393 w -(.) 3121 1393 w -(.) 3157 1393 w -(.) 3193 1393 w -(.) 3229 1393 w -(.) 3265 1393 w -3204 1408 3276 1390 Dl -3204 1372 3276 1390 Dl -3276 1570 3276 1210 Dl -3276 1210 3816 1210 Dl -3816 1210 3816 1570 Dl -3816 1570 3276 1570 Dl -11 /LucidaSansUnicode00 f -(acsched) 3332 1412 w -(TC) 2574 1052 w -(AC) 3470 1052 w -(The) 720 1820 w -(function) 955 1820 w +(.) 3355 4080 w +(.) 3391 4080 w +(.) 3427 4080 w +(.) 3463 4080 w +(.) 3499 4080 w +(.) 3535 4080 w +(.) 3571 4080 w +(.) 3607 4080 w +(.) 3643 4080 w +(.) 3679 4080 w +(.) 3715 4080 w +3654 4095 3726 4077 Dl +3654 4059 3726 4077 Dl +3726 4257 3726 3897 Dl +3726 3897 4266 3897 Dl +4266 3897 4266 4257 Dl +4266 4257 3726 4257 Dl +11 /LucidaSansUnicode00 f +(actouser) 3768 4099 w +3996 3897 3996 3537 Dl +4014 3609 3996 3537 Dl +3978 3609 3996 3537 Dl +3726 3537 3726 3177 Dl +3726 3177 4266 3177 Dl +4266 3177 4266 3537 Dl +4266 3537 3726 3537 Dl +(user code) 3736 3379 w +(A) 720 4507 w +(process) 855 4507 w +(that) 1325 4507 w +(calls) 1595 4507 w +(the) 1891 4507 w +(new) 2122 4507 w +(system) 2397 4507 w +(call,) 2831 4507 w 11 /LucidaSans-Italic f -(acsched) 1432 1820 w -11 /LucidaSansUnicode00 f -(runs) 1892 1820 w -(on) 2165 1820 w -(ACs,) 2336 1820 w -(as) 2615 1820 w -(part) 2768 1820 w -(of) 3020 1820 w -(its) 3164 1820 w -(start-up) 3329 1820 w -(sequence.) 3810 1820 w -(It) 4384 1820 w -(sits) 4493 1820 w -(in) 4715 1820 w -(a) 4852 1820 w -(tight) 4950 1820 w -(loop) 5237 1820 w -(spinning) 720 1950 w -(on) 1231 1950 w -(an) 1416 1950 w -(active) 1594 1950 w -(message) 1952 1950 w -(function) 2468 1950 w -(pointer.) 2958 1950 w -(To) 3426 1950 w -(ask) 3611 1950 w -(the) 3841 1950 w -(AC) 4061 1950 w -(to) 4262 1950 w -(execute) 4419 1950 w -(a) 4886 1950 w -(function,) 4996 1950 w -(the) 720 2080 w -(TC) 929 2080 w -(sets) 1112 2080 w -(in) 1365 2080 w -(the) 1503 2080 w -(ICC) 1712 2080 w -(structure) 1935 2080 w -(for) 2456 2080 w -(the) 2648 2080 w -(AC) 2858 2080 w -(the) 3049 2080 w -(arguments,) 3259 2080 w -(indication) 3904 2080 w -(to) 4469 2080 w -(flush) 4616 2080 w -(the) 4920 2080 w -(TLB) 5130 2080 w -(or) 5360 2080 w -(not,) 720 2210 w -(and) 970 2210 w -(the) 1207 2210 w -(function) 1417 2210 w -(pointer) 1897 2210 w -(and) 2320 2210 w -(then) 2557 2210 w -(changes) 2835 2210 w -(the) 3313 2210 w -(process) 3523 2210 w -(state) 3973 2210 w -(to) 4273 2210 w +(execac) 3107 4507 w +11 /LucidaSansUnicode00 f +(\(or) 3519 4507 w +(uses) 3727 4507 w +(the) 4029 4507 w 11 /LucidaSans-Italic f -(Exotic) 4419 2210 w -11 /LucidaSansUnicode00 f -(,) 4731 2210 w -(which) 4804 2210 w -(would) 5151 2210 w -(block) 720 2340 w -(the) 1047 2340 w -(process) 1258 2340 w -(for) 1709 2340 w -(the) 1902 2340 w -(moment.) 2113 2340 w -(When) 2665 2340 w -(the) 2998 2340 w -(pointer) 3209 2340 w -(becomes) 3633 2340 w -(non-nil,) 4147 2340 w -(the) 4621 2340 w -(AC) 4832 2340 w -(calls) 5024 2340 w -(the) 5301 2340 w -(function.) 720 2470 w -(The) 1269 2470 w -(function) 1506 2470 w -(pointer) 1985 2470 w -(uses) 2407 2470 w -(a) 2687 2470 w -(cache) 2786 2470 w -(line) 3127 2470 w -(and) 3359 2470 w -(all) 3595 2470 w -(other) 3758 2470 w -(arguments) 4079 2470 w -(use) 4688 2470 w -(a) 4912 2470 w -(different) 5011 2470 w -(cache) 720 2600 w -(line,) 1070 2600 w -(so) 1346 2600 w -(that) 1517 2600 w -(polling) 1776 2600 w -(can) 2192 2600 w -(be) 2425 2600 w -(efficient) 2604 2600 w -(regarding) 3087 2600 w -(bus) 3653 2600 w -(transactions.) 3894 2600 w -(Once) 4664 2600 w -(the) 4984 2600 w -(func\255) 5203 2600 w -(tion) 720 2730 w -(is) 970 2730 w -(done,) 1100 2730 w -(the) 1443 2730 w -(AC) 1656 2730 w -(sets) 1850 2730 w -(the) 2107 2730 w -(function) 2320 2730 w -(pointer) 2803 2730 w -(to) 3229 2730 w -(nil) 3379 2730 w -(and) 3553 2730 w -(calls) 3793 2730 w +(RFCORE) 4260 4507 w +11 /LucidaSansUnicode00 f +(flag) 4739 4507 w +(in) 5001 4507 w 11 /LucidaSans-Italic f -(ready) 4072 2730 w -11 /LucidaSansUnicode00 f -(on) 4420 2730 w -(the) 4597 2730 w -(process) 4809 2730 w -(that) 5261 2730 w -(scheduled the) 720 2860 w -(function for execution.) 1503 2860 w -(You think) 2795 2860 w -(of) 3341 2860 w -(this as a) 3484 2860 w -(soft) 3964 2860 w -(IPI.) 4204 2860 w -(While) 970 3026 w -(an) 1296 3026 w -(AC) 1462 3026 w -(is) 1651 3026 w -(performing) 1776 3026 w -(an) 2412 3026 w -(action) 2578 3026 w -(dictated) 2940 3026 w -(by) 3408 3026 w -(a) 3571 3026 w -(process) 3670 3026 w -(in) 4119 3026 w -(the) 4257 3026 w -(TC,) 4466 3026 w -(its) 4684 3026 w +(rfork) 5161 4507 w +11 /LucidaSansUnicode00 f +(\)) 5436 4507 w +(makes) 720 4637 w +(the) 1112 4637 w +(kernel) 1330 4637 w +(call) 1710 4637 w 11 /LucidaSans-Italic f -(Mach) 4851 3026 w -11 /LucidaSansUnicode00 f -(struc\255) 5170 3026 w -(ture) 720 3156 w -(points) 976 3156 w -(to) 1348 3156 w -(the) 1495 3156 w -(process) 1705 3156 w -(so) 2155 3156 w -(that) 2317 3156 w +(runacore) 1938 4637 w +11 /LucidaSansUnicode00 f +(in) 2470 4637 w +(the) 2617 4637 w +(context) 2835 4637 w +(of) 3284 4637 w +(the) 3439 4637 w +(process.) 3657 4637 w +(This) 4150 4637 w +(function) 4422 4637 w +(makes) 4910 4637 w +(the) 5301 4637 w +(process) 720 4767 w +(become) 1172 4767 w +(a) 1631 4767 w +(handler) 1733 4767 w +(for) 2179 4767 w +(the) 2373 4767 w +(actual) 2585 4767 w +(process,) 2945 4767 w +(which) 3432 4767 w +(would) 3783 4767 w +(be) 4146 4767 w +(running) 4319 4767 w +(from) 4778 4767 w +(now) 5075 4767 w +(on) 5337 4767 w +(on) 720 4897 w +(the) 895 4897 w +(AC.) 1106 4897 w +(To) 1368 4897 w +(do) 1544 4897 w +(so,) 1720 4897 w 11 /LucidaSans-Italic f -(up) 2567 3156 w -11 /LucidaSansUnicode00 f -(in) 2741 3156 w -(the) 2880 3156 w -(AC) 3090 3156 w -(refers) 3281 3156 w -(to) 3631 3156 w -(the) 3778 3156 w -(process.) 3988 3156 w -(The) 4473 3156 w -(process) 4711 3156 w -(refers) 5161 3156 w -(to) 720 3286 w -(the) 866 3286 w -(AC) 1075 3286 w -(via) 1265 3286 w -(a) 1453 3286 w -(new) 1552 3286 w -(field) 1805 3286 w +(runacore) 1918 4897 w +11 /LucidaSansUnicode00 f +(calls) 2443 4897 w 11 /LucidaSans-Italic f -(Mach.ac) 2079 3286 w -11 /LucidaSansUnicode00 f -(.) 2517 3286 w -(Should) 2625 3286 w -(the) 3026 3286 w -(AC) 3235 3286 w -(become) 3425 3286 w -(idle,) 3881 3286 w -(its) 4150 3286 w +(runac) 2720 4897 w +11 /LucidaSansUnicode00 f +(to) 3070 4897 w +(execute) 3217 4897 w 11 /LucidaSans-Italic f -(Mach.proc) 4318 3286 w -11 /LucidaSansUnicode00 f -(field) 4911 3286 w -(is) 5186 3286 w -(set) 5313 3286 w -(to nil.) 720 3416 w -(This) 970 3582 w -(mechanism) 1234 3582 w -(is) 1881 3582 w -(kind) 2009 3582 w -(of) 2282 3582 w -(like) 2430 3582 w -(a) 2660 3582 w -(vm_exit\(\).) 2761 3582 w -(While) 3359 3582 w -(we) 3688 3582 w -(could) 3875 3582 w -(think) 4207 3582 w -(about) 4520 3582 w -(implement\255) 4866 3582 w -(ing) 720 3712 w -(this) 936 3712 w -(with) 1181 3712 w -(vm_enter\(\),) 1455 3712 w -(it) 2102 3712 w -11 /LucidaSansUnicode20 f -(\031) 2175 3712 w -11 /LucidaSansUnicode00 f -(s) 2210 3712 w -(not) 2314 3712 w -(quite) 2538 3712 w -(clear) 2858 3712 w -(we) 3161 3712 w -(should) 3355 3712 w -(take) 3762 3712 w -(that) 4037 3712 w -(step.) 4295 3712 w -(VMs) 4640 3712 w -(have) 4910 3712 w -(over\255) 5205 3712 w -(head,) 720 3842 w -(at) 1064 3842 w -(least) 1216 3842 w -(when) 1518 3842 w -(compared) 1851 3842 w -(to) 2432 3842 w -(the) 2590 3842 w -(mechanism) 2811 3842 w -(we) 3468 3842 w -(use.) 3665 3842 w -(This) 3971 3842 w -(mechanism) 4246 3842 w -(is) 4903 3842 w -(used) 5041 3842 w -(by) 5346 3842 w -(NIX to dispatch processes to ACs, as shown:) 720 3972 w -1926 4507 1926 4147 Dl -1926 4147 2466 4147 Dl -2466 4147 2466 4507 Dl -2466 4507 1926 4507 Dl -(user code) 1936 4349 w -2196 4507 2196 4867 Dl -2178 4795 2196 4867 Dl -2214 4795 2196 4867 Dl -1926 5227 1926 4867 Dl -1926 4867 2466 4867 Dl -2466 4867 2466 5227 Dl -2466 5227 1926 5227 Dl -(execac) 2014 5069 w -2466 5047 2826 5047 Dl -2754 5065 2826 5047 Dl -2754 5029 2826 5047 Dl -2826 5227 2826 4867 Dl -2826 4867 3366 4867 Dl -3366 4867 3366 5227 Dl -3366 5227 2826 5227 Dl -(runacore) 2860 5069 w -8 /LucidaSansUnicode00 f -(.) 3355 5050 w -(.) 3391 5050 w -(.) 3427 5050 w -(.) 3463 5050 w -(.) 3499 5050 w -(.) 3535 5050 w -(.) 3571 5050 w -(.) 3607 5050 w -(.) 3643 5050 w -(.) 3679 5050 w -(.) 3715 5050 w -3654 5065 3726 5047 Dl -3654 5029 3726 5047 Dl -3726 5227 3726 4867 Dl -3726 4867 4266 4867 Dl -4266 4867 4266 5227 Dl -4266 5227 3726 5227 Dl -11 /LucidaSansUnicode00 f -(actouser) 3768 5069 w -3996 4867 3996 4507 Dl -4014 4579 3996 4507 Dl -3978 4579 3996 4507 Dl -3726 4507 3726 4147 Dl -3726 4147 4266 4147 Dl -4266 4147 4266 4507 Dl -4266 4507 3726 4507 Dl -(user code) 3736 4349 w -(A) 720 5477 w -(process) 855 5477 w -(that) 1325 5477 w -(calls) 1595 5477 w -(the) 1891 5477 w -(new) 2122 5477 w -(system) 2397 5477 w -(call,) 2831 5477 w +(actouser) 3674 4897 w +11 /LucidaSansUnicode00 f +(on) 4173 4897 w +(the) 4347 4897 w +(AP) 4557 4897 w +(selected.) 4733 4897 w +(This) 5247 4897 w +(transfers) 720 5027 w +(control) 1231 5027 w +(to) 1643 5027 w +(user-mode,) 1787 5027 w +(restoring) 2453 5027 w +(the) 2973 5027 w +(state) 3181 5027 w +(as) 3479 5027 w +(saved) 3633 5027 w +(in) 3975 5027 w +(the) 4112 5027 w 11 /LucidaSans-Italic f -(execac) 3107 5477 w -11 /LucidaSansUnicode00 f -(\(or) 3519 5477 w -(uses) 3727 5477 w -(the) 4029 5477 w +(Ureg) 4320 5027 w +11 /LucidaSansUnicode00 f +(kept) 4611 5027 w +(by) 4884 5027 w +(the) 5047 5027 w +(pro\255) 5255 5027 w +(cess) 720 5157 w +(in) 993 5157 w +(its) 1136 5157 w +(kernel) 1308 5157 w +(stack.) 1684 5157 w +(Both) 2040 5157 w 11 /LucidaSans-Italic f -(RFCORE) 4260 5477 w -11 /LucidaSansUnicode00 f -(flag) 4739 5477 w -(in) 5001 5477 w +(actouser) 2323 5157 w +11 /LucidaSansUnicode00 f +(and) 2826 5157 w +(any) 3067 5157 w +(kernel) 3296 5157 w +(handler) 3672 5157 w +(executing) 4120 5157 w +(in) 4686 5157 w +(the) 4828 5157 w +(AC) 5041 5157 w +(runs) 5235 5157 w +(using the) 720 5287 w 11 /LucidaSans-Italic f -(rfork) 5161 5477 w -11 /LucidaSansUnicode00 f -(\)) 5436 5477 w -(makes) 720 5607 w -(the) 1112 5607 w -(kernel) 1330 5607 w -(call) 1710 5607 w -11 /LucidaSans-Italic f -(runacore) 1938 5607 w -11 /LucidaSansUnicode00 f -(in) 2470 5607 w -(the) 2617 5607 w -(context) 2835 5607 w -(of) 3284 5607 w -(the) 3439 5607 w -(process.) 3657 5607 w -(This) 4150 5607 w -(function) 4422 5607 w -(makes) 4910 5607 w -(the) 5301 5607 w -(process) 720 5737 w -(become) 1172 5737 w -(a) 1631 5737 w -(handler) 1733 5737 w -(for) 2179 5737 w -(the) 2373 5737 w -(actual) 2585 5737 w -(process,) 2945 5737 w -(which) 3432 5737 w -(would) 3783 5737 w -(be) 4146 5737 w -(running) 4319 5737 w -(from) 4778 5737 w -(now) 5075 5737 w -(on) 5337 5737 w -(on) 720 5867 w -(the) 895 5867 w -(AC.) 1106 5867 w -(To) 1368 5867 w -(do) 1544 5867 w -(so,) 1720 5867 w -11 /LucidaSans-Italic f -(runacore) 1918 5867 w -11 /LucidaSansUnicode00 f -(calls) 2443 5867 w -11 /LucidaSans-Italic f -(runac) 2720 5867 w -11 /LucidaSansUnicode00 f -(to) 3070 5867 w -(execute) 3217 5867 w -11 /LucidaSans-Italic f -(actouser) 3674 5867 w -11 /LucidaSansUnicode00 f -(on) 4173 5867 w -(the) 4347 5867 w -(AP) 4557 5867 w -(selected.) 4733 5867 w -(This) 5247 5867 w -(transfers) 720 5997 w -(control) 1231 5997 w -(to) 1643 5997 w -(user-mode,) 1787 5997 w -(restoring) 2453 5997 w -(the) 2973 5997 w -(state) 3181 5997 w -(as) 3479 5997 w -(saved) 3633 5997 w -(in) 3975 5997 w -(the) 4112 5997 w -11 /LucidaSans-Italic f -(Ureg) 4320 5997 w -11 /LucidaSansUnicode00 f -(kept) 4611 5997 w -(by) 4884 5997 w -(the) 5047 5997 w -(pro\255) 5255 5997 w -(cess) 720 6127 w -(in) 993 6127 w -(its) 1136 6127 w -(kernel) 1308 6127 w -(stack.) 1684 6127 w -(Both) 2040 6127 w -11 /LucidaSans-Italic f -(actouser) 2323 6127 w -11 /LucidaSansUnicode00 f -(and) 2826 6127 w -(any) 3067 6127 w -(kernel) 3296 6127 w -(handler) 3672 6127 w -(executing) 4120 6127 w -(in) 4686 6127 w -(the) 4828 6127 w -(AC) 5041 6127 w -(runs) 5235 6127 w -(using the) 720 6257 w -11 /LucidaSans-Italic f -(Mach) 1253 6257 w -11 /LucidaSansUnicode00 f -(stack.) 1569 6257 w -(The) 970 6423 w -(user) 1217 6423 w -(code) 1496 6423 w -(runs) 1798 6423 w -(undisturbed) 2083 6423 w -(in) 2778 6423 w -(the) 2926 6423 w -(AC) 3146 6423 w -(while) 3347 6423 w -(the) 3675 6423 w -(\(handler\)) 3895 6423 w -(process) 4421 6423 w -(is) 4881 6423 w -(blocked,) 5018 6423 w -(waiting) 720 6553 w -(for) 1143 6553 w -(the) 1332 6553 w -(ICC) 1539 6553 w -(to) 1759 6553 w -(complete.) 1903 6553 w -(That) 2465 6553 w -(happens) 2740 6553 w -(as) 3229 6553 w -(soon) 3382 6553 w -(as) 3676 6553 w -(there) 3829 6553 w -(is a) 4142 6553 w -(fault) 4361 6553 w -(or a) 4639 6553 w -(system call) 4882 6553 w -(in the) 720 6683 w -(AC.) 1061 6683 w -(When) 970 6849 w -(an) 1300 6849 w -(AP) 1466 6849 w -(takes) 1640 6849 w -(a) 1961 6849 w -(fault,) 2059 6849 w -(the) 2374 6849 w -(AP) 2582 6849 w -(transfers) 2756 6849 w -(control) 3268 6849 w -(of) 3681 6849 w -(the) 3827 6849 w -(process) 4036 6849 w -(back) 4485 6849 w -(to) 4773 6849 w -(the) 4919 6849 w -(TC,) 5128 6849 w -(by) 5346 6849 w -(finishing) 720 6979 w -(the) 1231 6979 w -(ICC,) 1448 6979 w -(and) 1713 6979 w -(then) 1957 6979 w -(waits) 2242 6979 w -(for) 2563 6979 w -(directions.) 2761 6979 w -(That) 3369 6979 w -(is,) 3653 6979 w -(the) 3821 6979 w -(AP) 4037 6979 w -(spins) 4219 6979 w -(on) 4545 6979 w -(the) 4725 6979 w -(ICC) 4941 6979 w -(struc\255) 5170 6979 w -(ture) 720 7109 w -(waiting for a) 971 7109 w -(new) 1677 7109 w -(call.) 1927 7109 w +(Mach) 1253 5287 w +11 /LucidaSansUnicode00 f +(stack.) 1569 5287 w +(The) 970 5453 w +(user) 1217 5453 w +(code) 1496 5453 w +(runs) 1798 5453 w +(undisturbed) 2083 5453 w +(in) 2778 5453 w +(the) 2926 5453 w +(AC) 3146 5453 w +(while) 3347 5453 w +(the) 3675 5453 w +(\(handler\)) 3895 5453 w +(process) 4421 5453 w +(is) 4881 5453 w +(blocked,) 5018 5453 w +(waiting) 720 5583 w +(for) 1143 5583 w +(the) 1332 5583 w +(ICC) 1539 5583 w +(to) 1759 5583 w +(complete.) 1903 5583 w +(That) 2465 5583 w +(happens) 2740 5583 w +(as) 3229 5583 w +(soon) 3382 5583 w +(as) 3676 5583 w +(there) 3829 5583 w +(is a) 4142 5583 w +(fault) 4361 5583 w +(or a) 4639 5583 w +(system call) 4882 5583 w +(in the) 720 5713 w +(AC.) 1061 5713 w +(When) 970 5879 w +(an) 1300 5879 w +(AP) 1466 5879 w +(takes) 1640 5879 w +(a) 1961 5879 w +(fault,) 2059 5879 w +(the) 2374 5879 w +(AP) 2582 5879 w +(transfers) 2756 5879 w +(control) 3268 5879 w +(of) 3681 5879 w +(the) 3827 5879 w +(process) 4036 5879 w +(back) 4485 5879 w +(to) 4773 5879 w +(the) 4919 5879 w +(TC,) 5128 5879 w +(by) 5346 5879 w +(finishing) 720 6009 w +(the) 1231 6009 w +(ICC,) 1448 6009 w +(and) 1713 6009 w +(then) 1957 6009 w +(waits) 2242 6009 w +(for) 2563 6009 w +(directions.) 2761 6009 w +(That) 3369 6009 w +(is,) 3653 6009 w +(the) 3821 6009 w +(AP) 4037 6009 w +(spins) 4219 6009 w +(on) 4545 6009 w +(the) 4725 6009 w +(ICC) 4941 6009 w +(struc\255) 5170 6009 w +(ture) 720 6139 w +(waiting for a) 971 6139 w +(new) 1677 6139 w +(call.) 1927 6139 w cleartomark showpage saveobj restore @@ -5463,263 +5465,279 @@ (cores.) 1903 3688 w 11 /LucidaSans-Demi f (7.) 720 3948 w -(Things) 888 3948 w -(not done) 1317 3948 w -(yet) 1856 3948 w -11 /LucidaSansUnicode00 f -(There) 720 4114 w -(are) 1061 4114 w -(a) 1264 4114 w -(few) 1360 4114 w -(other) 1584 4114 w -(things) 1903 4114 w -(that) 2272 4114 w -(have) 2519 4114 w -(to) 2803 4114 w -(be) 2947 4114 w -(done.) 3114 4114 w -(To) 3451 4114 w -(name) 3623 4114 w -(a) 3952 4114 w -(few:) 4049 4114 w -(Including) 4308 4114 w -(more) 4837 4114 w -(statis\255) 5149 4114 w -(tics) 720 4244 w -(in) 949 4244 w -(the) 1093 4244 w -11 /LucidaTypewriter f -(/proc) 1308 4244 w -11 /LucidaSansUnicode00 f -(interface) 1747 4244 w -(to) 2259 4244 w -(reflect) 2411 4244 w -(the) 2794 4244 w -(state) 3009 4244 w -(of) 3314 4244 w -(the) 3465 4244 w -(system,) 3679 4244 w -(considering) 4131 4244 w -(the) 4797 4244 w -(different) 5011 4244 w -(kind) 720 4374 w -(of) 991 4374 w -(cores) 1137 4374 w -(in) 1461 4374 w -(it;) 1599 4374 w -(adding) 1745 4374 w -(an) 2150 4374 w -(interface) 2317 4374 w -(to) 2823 4374 w -(let) 2969 4374 w -(the) 3142 4374 w -(user) 3351 4374 w -(code) 3621 4374 w -(\(or) 3914 4374 w -(the) 4101 4374 w -(kernel\)) 4311 4374 w -(request) 4719 4374 w -(that) 5161 4374 w -(a) 5411 4374 w -(process) 720 4504 w -(should) 1170 4504 w -(continue) 1569 4504 w -(in) 2070 4504 w -(the) 2209 4504 w -(TC) 2419 4504 w -(node) 2603 4504 w -(\(the) 2907 4504 w -(transfer) 3152 4504 w -(has) 3609 4504 w -(been) 3832 4504 w -(implemented) 4131 4504 w -(and) 4870 4504 w -(tested,) 5106 4504 w -(but) 720 4634 w -(there) 937 4634 w -(is) 1254 4634 w -(no) 1381 4634 w -(interface) 1555 4634 w -(yet) 2062 4634 w -(to) 2261 4634 w -(trigger) 2408 4634 w -(it\);) 2808 4634 w -(deciding) 2991 4634 w -(which) 3486 4634 w -(interface) 3834 4634 w -(to) 4342 4634 w -(adopt) 4490 4634 w -(for) 4837 4634 w -(the) 5030 4634 w -(user) 5241 4634 w -(to) 720 4764 w -(call) 883 4764 w -(the) 1119 4764 w -(new) 1345 4764 w -(service,) 1615 4764 w -(and) 2075 4764 w -(to) 2328 4764 w -(what) 2491 4764 w -(extent) 2800 4764 w -(the) 3195 4764 w -(mechanism) 3420 4764 w -(has) 4081 4764 w -(to) 4320 4764 w -(be) 4482 4764 w -(its) 4667 4764 w -(own) 4850 4764 w -(policy;) 5124 4764 w -(implementing) 720 4894 w -(KCs) 1504 4894 w -(\(which) 1754 4894 w -(should) 2145 4894 w -(not) 2551 4894 w -(require) 2773 4894 w -(any) 3202 4894 w -(code,) 3434 4894 w -(because) 3769 4894 w -(they) 4249 4894 w -(must) 4523 4894 w -(execute) 4836 4894 w -(the) 5301 4894 w -(standard) 720 5024 w -(kernel\);) 1238 5024 w -(testing) 1690 5024 w -(and) 2106 5024 w -(debugging) 2352 5024 w -(note) 2972 5024 w -(handling) 3258 5024 w -(for) 3771 5024 w -(AC) 3971 5024 w -(processes;) 4170 5024 w -(more) 4781 5024 w -(testing) 5104 5024 w -(and fine) 720 5154 w -(tuning.) 1191 5154 w -11 /LucidaSans-Demi f -(8.) 720 5414 w -(Evaluation) 888 5414 w -(8.1.) 720 5674 w -(strid3) 986 5674 w -11 /LucidaSansUnicode00 f -(Strid3) 970 5840 w -(is) 1321 5840 w -(part) 1445 5840 w -(of) 1697 5840 w -(the) 1841 5840 w -("tasty) 2048 5840 w -(loops") 2381 5840 w -(set) 2749 5840 w -(of) 2944 5840 w -(benchmarks,) 3088 5840 w -(and) 3810 5840 w -(is) 4044 5840 w -(widely) 4168 5840 w -(used) 4541 5840 w -(in) 4832 5840 w -(HPC) 4969 5840 w -(eval\255) 5224 5840 w -(uation) 720 5970 w -(of) 1111 5970 w -(architectures.) 1273 5970 w -(In) 2055 5970 w -(addition) 2209 5970 w -(to) 2702 5970 w -(performance) 2864 5970 w -(measurement) 3596 5970 w -(it) 4378 5970 w -(has) 4504 5970 w -(been) 4742 5970 w -(used) 5056 5970 w -(to) 5364 5970 w -(find bugs in implementations, such as the) 720 6100 w -(Barcelona) 3002 6100 w -(L3 bug.) 3553 6100 w -(Strid3 models) 970 6266 w -11 /LucidaSans-Italic f -(S) 1743 6266 w -11 /S f -(=) 1831 6266 w -11 /LucidaSans-Italic f -(AX) 1910 6266 w -11 /S f -(+) 2081 6266 w -11 /LucidaSans-Italic f -(Y) 2160 6266 w -11 /LucidaSansUnicode00 f -(, or SAXPY, i.e. this loop) 2227 6266 w -9 /LucidaTypewriter f -(void) 940 6436 w -(saxpy\(float*) 1265 6436 w -(x,) 2110 6436 w -(float*) 2305 6436 w -(y,) 2760 6436 w -(int) 2955 6436 w -(n,) 3215 6436 w -(float) 3410 6436 w -(a\)) 3800 6436 w -({) 3995 6436 w -(int) 1070 6546 w -(i;) 1330 6546 w -(for) 1070 6656 w -(\(i) 1330 6656 w -(=) 1525 6656 w -(0;) 1655 6656 w -(i) 1850 6656 w -(<) 1980 6656 w -(n;) 2110 6656 w -(i++\)) 2305 6656 w -({) 2630 6656 w -(y[i]) 1200 6766 w -(=) 1525 6766 w -(a) 1655 6766 w -(*) 1785 6766 w -(x[i]) 1915 6766 w -(+) 2240 6766 w -(y[i];) 2370 6766 w -(}) 1070 6876 w -(}) 940 6986 w -11 /LucidaSansUnicode00 f -(with) 720 7176 w -(a) 990 7176 w -(crucial) 1095 7176 w -(difference:) 1489 7176 w -(the) 2106 7176 w -(stride) 2321 7176 w -(1) 2670 7176 w -(of) 2783 7176 w -(the) 2935 7176 w -(above) 3150 7176 w -(loop) 3510 7176 w -(is) 3789 7176 w -(made) 3922 7176 w -(stride) 4261 7176 w -11 /LucidaSans-Italic f -(n) 4611 7176 w -11 /LucidaSansUnicode00 f -(,) 4679 7176 w -(where) 4759 7176 w -(n) 5126 7176 w -(is) 5239 7176 w -(in) 5372 7176 w -(the) 720 7306 w -(range) 931 7306 w -(of) 1275 7306 w -(1) 1423 7306 w -(to) 1532 7306 w -(1024) 1680 7306 w -(and) 1996 7306 w -(is) 2234 7306 w -(incremented) 2362 7306 w -(each) 3069 7306 w -(time) 3356 7306 w -(through) 3633 7306 w -(the) 4098 7306 w -(loop.) 4308 7306 w -(The) 4617 7306 w -(loop) 4855 7306 w -(is) 5129 7306 w -(also) 5256 7306 w +(Queue) 888 3948 w +(based) 1289 3948 w +(system) 1663 3948 w +(calls?) 2105 3948 w +11 /LucidaSansUnicode00 f +(As) 720 4114 w +(an) 894 4114 w +(experiment,) 1065 4114 w +(we) 1752 4114 w +(implemented) 1941 4114 w +(a) 2685 4114 w +(small) 2789 4114 w +(thread) 3115 4114 w +(library) 3504 4114 w +(supporting) 3888 4114 w +(queue-based) 4514 4114 w +(sys\255) 5267 4114 w +(tem) 720 4244 w +(calls) 965 4244 w +(similar) 1242 4244 w +(to) 1642 4244 w +(those) 1790 4244 w +(in) 2124 4244 w +([5].) 2264 4244 w +(Threads) 2480 4244 w +(are) 2950 4244 w +(cooperatively) 3158 4244 w +(scheduled) 3905 4244 w +(within) 4486 4244 w +(the) 4851 4244 w +(process) 5061 4244 w +(and not) 720 4374 w +(known to the) 1164 4374 w +(kernel.) 1900 4374 w +(Each) 970 4540 w +(process) 1288 4540 w +(has) 1773 4540 w +(been) 2032 4540 w +(provided) 2367 4540 w +(with) 2911 4540 w +(two) 3211 4540 w +(queues:) 3478 4540 w +(one) 3972 4540 w +(to) 4243 4540 w +(record) 4425 4540 w +(system) 4843 4540 w +(call) 5291 4540 w +(requests,) 720 4670 w +(and) 1255 4670 w +(another) 1494 4670 w +(to) 1947 4670 w +(record) 2096 4670 w +(system) 2481 4670 w +(call) 2896 4670 w +(replies.) 3118 4670 w +(When) 3551 4670 w +(a) 3884 4670 w +(thread) 3985 4670 w +(issues) 4371 4670 w +(a) 4741 4670 w +(system) 4842 4670 w +(call,) 5256 4670 w +(it) 720 4800 w +(fills) 837 4800 w +(up) 1074 4800 w +(an) 1255 4800 w +(slot) 1428 4800 w +(in) 1668 4800 w +(the) 1812 4800 w +(system) 2027 4800 w +(call) 2445 4800 w +(queue,) 2670 4800 w +(instead) 3078 4800 w +(of) 3511 4800 w +(making) 3663 4800 w +(an) 4102 4800 w +(actual) 4276 4800 w +(system) 4640 4800 w +(call.) 5059 4800 w +(At) 5355 4800 w +(that) 720 4930 w +(point,) 967 4930 w +(the) 1315 4930 w +(thread) 1522 4930 w +(library) 1904 4930 w +(marks) 2281 4930 w +(the) 2645 4930 w +(thread as blocked and proceeds to execute) 2852 4930 w +(other) 5189 4930 w +(threads.) 720 5060 w +(When) 1214 5060 w +(all) 1564 5060 w +(the) 1746 5060 w +(threads) 1974 5060 w +(are) 2433 5060 w +(blocked,) 2658 5060 w +(the) 3169 5060 w +(process) 3397 5060 w +(waits) 3865 5060 w +(for) 4197 5060 w +(replies) 4407 5060 w +(in) 4822 5060 w +(the) 4979 5060 w +(reply) 5207 5060 w +(queue.) 720 5190 w +(Before) 970 5356 w +(using) 1352 5356 w +(the) 1685 5356 w +(queue) 1897 5356 w +(mechanism,) 2268 5356 w +(the) 2952 5356 w +(process) 3165 5356 w +(issues) 3618 5356 w +(a) 3990 5356 w +(real) 4093 5356 w +(system) 4335 5356 w +(call) 4751 5356 w +(to) 4974 5356 w +(let) 5124 5356 w +(the) 5301 5356 w +(kernel) 720 5486 w +(know.) 1104 5486 w +(In) 1474 5486 w +(response) 1625 5486 w +(to) 2161 5486 w +(this) 2320 5486 w +(call,) 2568 5486 w +(the) 2835 5486 w +(kernel) 3056 5486 w +(creates) 3439 5486 w +(a) 3872 5486 w +(\(kernel\)) 3983 5486 w +(process) 4438 5486 w +(sharing) 4899 5486 w +(all) 5347 5486 w +(segments) 720 5616 w +(with) 1281 5616 w +(the) 1553 5616 w +(caller.) 1770 5616 w +(This) 2139 5616 w +(process) 2410 5616 w +(is) 2867 5616 w +(responsible) 3001 5616 w +(for) 3665 5616 w +(executing) 3864 5616 w +(the) 4435 5616 w +(queued) 4653 5616 w +(system) 5098 5616 w +(calls and placing replies for them in the) 720 5746 w +(reply queue.) 2876 5746 w +(With) 970 5912 w +(this) 1245 5912 w +(implementation,) 1481 5912 w +(we) 2394 5912 w +(made) 2580 5912 w +(several) 2913 5912 w +(performance) 3327 5912 w +(measurements) 4044 5912 w +(before) 4869 5912 w +(pro\255) 5255 5912 w +(ceeding) 720 6042 w +(further.) 1192 6042 w +(In) 1652 6042 w +(particular,) 1807 6042 w +(we) 2407 6042 w +(measured) 2609 6042 w +(how) 3189 6042 w +(long) 3464 6042 w +(it) 3754 6042 w +(takes) 3882 6042 w +(for) 4221 6042 w +(a) 4428 6042 w +(program) 4543 6042 w +(with) 5054 6042 w +(50) 5334 6042 w +(threads to execute) 720 6172 w +(5000 system calls in each thread.) 1753 6172 w +(For) 3579 6172 w +(the) 3786 6172 w +(experiment,) 3993 6172 w +(the) 4674 6172 w +(system) 4881 6172 w +(call) 5291 6172 w +(used does not) 720 6302 w +(block) 1510 6302 w +(and does nothing.) 1833 6302 w +(It) 970 6468 w +(takes) 1102 6468 w +(this) 1445 6468 w +(program) 1702 6468 w +(0.17) 2219 6468 w +(seconds) 2521 6468 w +(to) 3015 6468 w +(complete) 3183 6468 w +(when) 3734 6468 w +(run) 4077 6468 w +(on) 4318 6468 w +(the) 4513 6468 w +(TC) 4744 6468 w +(using) 4949 6468 w +(the) 5301 6468 w +(queue) 720 6598 w +(based) 1094 6598 w +(mechanism.) 1456 6598 w +(However,) 2143 6598 w +(it) 2682 6598 w +(takes) 2800 6598 w +(only) 3129 6598 w +(0.06) 3398 6598 w +(seconds) 3685 6598 w +(to) 4164 6598 w +(complete) 4317 6598 w +(when) 4853 6598 w +(using) 5180 6598 w +(the) 720 6728 w +(standard) 941 6728 w +(system) 1461 6728 w +(call) 1885 6728 w +(mechanism.) 2116 6728 w +(Therefore,) 2808 6728 w +(at) 3414 6728 w +(least) 3567 6728 w +(for) 3870 6728 w +(this) 4074 6728 w +(program,) 4322 6728 w +(the) 4865 6728 w +(mecha\255) 5087 6728 w +(nism) 720 6858 w +(is) 1014 6858 w +(more) 1138 6858 w +(an) 1450 6858 w +(overhead) 1615 6858 w +(than) 2142 6858 w +(a) 2416 6858 w +(benefit.) 2513 6858 w +(It) 2959 6858 w +(is likely that) 3068 6858 w +(the) 3751 6858 w +(total) 3957 6858 w +(number of) 4234 6858 w +(system calls) 4826 6858 w +(per) 720 6988 w +(second) 943 6988 w +(that) 1368 6988 w +(could) 1626 6988 w +(be) 1965 6988 w +(performed) 2143 6988 w +(in) 2752 6988 w +(the) 2899 6988 w +(machine) 3117 6988 w +(might) 3613 6988 w +(increase) 3971 6988 w +(due) 4460 6988 w +(to) 4707 6988 w +(the) 4863 6988 w +(smaller) 5082 6988 w +(number) 720 7118 w +(of) 1178 7118 w +(domain) 1330 7118 w +(crossings.) 1773 7118 w +(However,) 2356 7118 w +(for) 2894 7118 w +(a) 3091 7118 w +(single) 3196 7118 w +(program,) 3558 7118 w +(that) 4094 7118 w +(does) 4349 7118 w +(not) 4646 7118 w +(seem) 4865 7118 w +(to) 5190 7118 w +(be) 5341 7118 w +(the) 720 7248 w +(case.) 926 7248 w cleartomark showpage saveobj restore @@ -5729,1269 +5747,465 @@ mark 10 pagesetup 11 /LucidaSansUnicode00 f -(run many times to make) 720 850 w -(sure) 2054 850 w -(the) 2320 850 w -(computation is long enough to) 2526 850 w -(hide) 4206 850 w -(startup) 4473 850 w -(overheads.) 4890 850 w -(The) 720 980 w -(code) 954 980 w -(thus looks like:) 1243 980 w +(As) 970 850 w +(another) 1143 850 w +(experiment,) 1596 850 w +(running) 2282 850 w +(the) 2740 850 w +(same) 2953 850 w +(program) 3276 850 w +(on) 3775 850 w +(the) 3952 850 w +(AC) 4165 850 w +(takes) 4359 850 w +(240.3) 4685 850 w +(seconds) 5038 850 w +(when) 720 980 w +(using) 1045 980 w +(the) 1379 980 w +(standard) 1592 980 w +(system) 2104 980 w +(call) 2520 980 w +(mechanism,) 2742 980 w +(and) 3425 980 w +(0.17) 3664 980 w +(seconds) 3947 980 w +(when) 4422 980 w +(using) 4746 980 w +(queue-) 5079 980 w +(based) 720 1110 w +(system) 1083 1110 w +(calls.) 1503 1110 w +(The) 1821 1110 w +(AC) 2066 1110 w +(is) 2264 1110 w +(not) 2398 1110 w +(meant) 2620 1110 w +(to) 3000 1110 w +(perform) 3154 1110 w +(system) 3631 1110 w +(calls.) 4052 1110 w +(A) 4406 1110 w +(system) 4529 1110 w +(call) 4950 1110 w +(made) 5178 1110 w +(while) 720 1240 w +(running) 1039 1240 w +(on) 1496 1240 w +(it) 1671 1240 w +(implies) 1784 1240 w +(a) 2209 1240 w +(trip) 2309 1240 w +(to) 2535 1240 w +(the) 2682 1240 w +(TC) 2892 1240 w +(and) 3076 1240 w +(another) 3313 1240 w +(trip) 3764 1240 w +(back) 3990 1240 w +(to) 4279 1240 w +(the) 4426 1240 w +(AC.) 4636 1240 w +(As) 4862 1240 w +(a) 5033 1240 w +(result,) 5133 1240 w +(issuing) 720 1370 w +(system) 1142 1370 w +(calls) 1558 1370 w +(from) 1837 1370 w +(the) 2134 1370 w +(AC) 2347 1370 w +(is) 2541 1370 w +(utterly) 2671 1370 w +(expensive.) 3059 1370 w +(Looking) 3706 1370 w +(at) 4173 1370 w +(the) 4318 1370 w +(second) 4532 1370 w +(time,) 4953 1370 w +(it) 5268 1370 w +(is) 5384 1370 w +(similar) 720 1500 w +(to) 1121 1500 w +(one) 1270 1500 w +(for) 1508 1500 w +(running) 1701 1500 w +(in) 2158 1500 w +(the) 2298 1500 w +(TC.) 2509 1500 w +(Therefore,) 2729 1500 w +(we) 3325 1500 w +(may) 3512 1500 w +(conclude) 3772 1500 w +(that) 4290 1500 w +(queue) 4541 1500 w +(based) 4910 1500 w +(sys\255) 5267 1500 w +(tem calls may make) 720 1630 w +(system calls affordable) 1811 1630 w +(even for ACs.) 3075 1630 w +(However,) 970 1796 w +(a) 1509 1796 w +(more) 1615 1796 w +(simple) 1936 1796 w +(mechanism) 2334 1796 w +(is) 2986 1796 w +(to) 3119 1796 w +(keep) 3273 1796 w +(in) 3576 1796 w +(the) 3722 1796 w +(TC) 3939 1796 w +(those) 4130 1796 w +(processes) 4470 1796 w +(that) 5045 1796 w +(did) 5302 1796 w +(not) 720 1926 w +(consume) 943 1926 w +(all) 1469 1926 w +(its) 1641 1926 w +(quantum) 1816 1926 w +(at) 2339 1926 w +(user) 2487 1926 w +(level,) 2764 1926 w +(and) 3090 1926 w +(move) 3334 1926 w +(to) 3668 1926 w +(ACs) 3822 1926 w +(only) 4076 1926 w +(those) 4346 1926 w +(processes) 4686 1926 w +(that) 5261 1926 w +(do) 720 2056 w +(so.) 901 2056 w +(As) 1104 2056 w +(a) 1281 2056 w +(result,) 1387 2056 w +(we) 1771 2056 w +(have) 1963 2056 w +(decided) 2256 2056 w +(not) 2720 2056 w +(to) 2941 2056 w +(include) 3094 2056 w +(queue) 3526 2056 w +(based) 3900 2056 w +(system) 4262 2056 w +(calls) 4681 2056 w +(\(although) 4963 2056 w +(tubes can still) 720 2186 w +(be) 1499 2186 w +(used for IPC\).) 1665 2186 w +11 /LucidaSans-Demi f +(8.) 720 2446 w +(Things) 888 2446 w +(not done) 1317 2446 w +(yet) 1856 2446 w +11 /LucidaSansUnicode00 f +(There) 720 2612 w +(are) 1061 2612 w +(a) 1264 2612 w +(few) 1360 2612 w +(other) 1584 2612 w +(things) 1903 2612 w +(that) 2272 2612 w +(have) 2519 2612 w +(to) 2803 2612 w +(be) 2947 2612 w +(done.) 3114 2612 w +(To) 3451 2612 w +(name) 3623 2612 w +(a) 3952 2612 w +(few:) 4049 2612 w +(Including) 4308 2612 w +(more) 4837 2612 w +(statis\255) 5149 2612 w +(tics) 720 2742 w +(in) 949 2742 w +(the) 1093 2742 w +11 /LucidaTypewriter f +(/proc) 1308 2742 w +11 /LucidaSansUnicode00 f +(interface) 1747 2742 w +(to) 2259 2742 w +(reflect) 2411 2742 w +(the) 2794 2742 w +(state) 3009 2742 w +(of) 3314 2742 w +(the) 3465 2742 w +(system,) 3679 2742 w +(considering) 4131 2742 w +(the) 4797 2742 w +(different) 5011 2742 w +(kind) 720 2872 w +(of) 991 2872 w +(cores) 1137 2872 w +(in) 1461 2872 w +(it;) 1599 2872 w +(adding) 1745 2872 w +(an) 2150 2872 w +(interface) 2317 2872 w +(to) 2823 2872 w +(let) 2969 2872 w +(the) 3142 2872 w +(user) 3351 2872 w +(code) 3621 2872 w +(\(or) 3914 2872 w +(the) 4101 2872 w +(kernel\)) 4311 2872 w +(request) 4719 2872 w +(that) 5161 2872 w +(a) 5411 2872 w +(process) 720 3002 w +(should) 1170 3002 w +(continue) 1569 3002 w +(in) 2070 3002 w +(the) 2209 3002 w +(TC) 2419 3002 w +(node) 2603 3002 w +(\(the) 2907 3002 w +(transfer) 3152 3002 w +(has) 3609 3002 w +(been) 3832 3002 w +(implemented) 4131 3002 w +(and) 4870 3002 w +(tested,) 5106 3002 w +(but) 720 3132 w +(there) 937 3132 w +(is) 1254 3132 w +(no) 1381 3132 w +(interface) 1555 3132 w +(yet) 2062 3132 w +(to) 2261 3132 w +(trigger) 2408 3132 w +(it\);) 2808 3132 w +(deciding) 2991 3132 w +(which) 3486 3132 w +(interface) 3834 3132 w +(to) 4342 3132 w +(adopt) 4490 3132 w +(for) 4837 3132 w +(the) 5030 3132 w +(user) 5241 3132 w +(to) 720 3262 w +(call) 883 3262 w +(the) 1119 3262 w +(new) 1345 3262 w +(service,) 1615 3262 w +(and) 2075 3262 w +(to) 2328 3262 w +(what) 2491 3262 w +(extent) 2800 3262 w +(the) 3195 3262 w +(mechanism) 3420 3262 w +(has) 4081 3262 w +(to) 4320 3262 w +(be) 4482 3262 w +(its) 4667 3262 w +(own) 4850 3262 w +(policy;) 5124 3262 w +(implementing) 720 3392 w +(KCs) 1504 3392 w +(\(which) 1754 3392 w +(should) 2145 3392 w +(not) 2551 3392 w +(require) 2773 3392 w +(any) 3202 3392 w +(code,) 3434 3392 w +(because) 3769 3392 w +(they) 4249 3392 w +(must) 4523 3392 w +(execute) 4836 3392 w +(the) 5301 3392 w +(standard) 720 3522 w +(kernel\);) 1238 3522 w +(testing) 1690 3522 w +(and) 2106 3522 w +(debugging) 2352 3522 w +(note) 2972 3522 w +(handling) 3258 3522 w +(for) 3771 3522 w +(AC) 3971 3522 w +(processes;) 4170 3522 w +(more) 4781 3522 w +(testing) 5104 3522 w +(and fine) 720 3652 w +(tuning.) 1191 3652 w +11 /LucidaSans-Demi f +(9.) 720 3912 w +(Evaluation) 888 3912 w +(9.1.) 720 4172 w +(strid3) 986 4172 w +11 /LucidaSansUnicode00 f +(Strid3) 970 4338 w +(is) 1321 4338 w +(part) 1445 4338 w +(of) 1697 4338 w +(the) 1841 4338 w +("tasty) 2048 4338 w +(loops") 2381 4338 w +(set) 2749 4338 w +(of) 2944 4338 w +(benchmarks,) 3088 4338 w +(and) 3810 4338 w +(is) 4044 4338 w +(widely) 4168 4338 w +(used) 4541 4338 w +(in) 4832 4338 w +(HPC) 4969 4338 w +(eval\255) 5224 4338 w +(uation) 720 4468 w +(of) 1111 4468 w +(architectures.) 1273 4468 w +(In) 2055 4468 w +(addition) 2209 4468 w +(to) 2702 4468 w +(performance) 2864 4468 w +(measurement) 3596 4468 w +(it) 4378 4468 w +(has) 4504 4468 w +(been) 4742 4468 w +(used) 5056 4468 w +(to) 5364 4468 w +(find bugs in implementations, such as the) 720 4598 w +(Barcelona) 3002 4598 w +(L3 bug.) 3553 4598 w +(Strid3 models) 970 4764 w +11 /LucidaSans-Italic f +(S) 1743 4764 w +11 /S f +(=) 1831 4764 w +11 /LucidaSans-Italic f +(AX) 1910 4764 w +11 /S f +(+) 2081 4764 w +11 /LucidaSans-Italic f +(Y) 2160 4764 w +11 /LucidaSansUnicode00 f +(, or SAXPY, i.e. this loop) 2227 4764 w 9 /LucidaTypewriter f -(for\() 1200 1150 w -(j=0;) 1525 1150 w -(j mf.cycles.amd64 echo "Plan 9, amd64 core Red" >> mf.cycles.amd64 -{cat graphtc ; awk '{print $1 " " $4}' < cycles.amd64 ; echo .G2} > rat.cycles.amd64.grap +awk '{print $1 " " $4}' < strid3.2M.ac > rat.strid3.2M.ac +echo "Plan 9, amd64 2M ac Yellow" >> rat.strid3.2M.ac +awk '{print $1 " " $3}' < strid3.2M.ac > mf.strid3.2M.ac +echo "Plan 9, amd64 core Yellow" >> mf.strid3.2M.ac -{cat graphac ; awk '{print $1 " " $4}' < cycles.core.amd64 ; echo .G2} > rat.cycles.core.amd64.grap +awk '{print $1 " " $4}' < strid3.2M.tc > rat.strid3.2M.tc +echo "Plan 9, amd64 core Purple" >> rat.strid3.2M.tc +awk '{print $1 " " $3}' < strid3.2M.tc > mf.strid3.2M.tc +echo "Plan 9, amd64 core Purple" >> mf.strid3.2M.tc +{ awk '{print $1 " " $4}' < cycles.amd64 ;} > rat.cycles.amd64.grap + +{ awk '{print $1 " " $4}' < cycles.core.amd64 } > rat.cycles.core.amd64.grap + +{ awk '{print $1 " " $4}' < strid3.2M.tc } > strid3.2M.tc.grap + +{ awk '{print $1 " " $4}' < strid3.2M.ac } > strid3.2M.ac.grap + diff -r c1ba3d50a74a -r e72b21d5e7ab doc/papers/nix/results/rat.cycles.amd64.grap --- a/doc/papers/nix/results/rat.cycles.amd64.grap Tue Jun 07 14:04:15 2011 +0000 +++ b/doc/papers/nix/results/rat.cycles.amd64.grap Wed Jun 08 05:00:15 2011 +0000 @@ -1,9 +1,3 @@ -.G1 -frame wid 5 top invis right invis -label bot "Strid3 on a tc" "Stride of 1 to 1024 by 1" -label left "Slowdown over stride of 1" "Smaller is better" -draw solid - 1 1.0000000e+00 1 1.0011000e+00 2 1.0011669e+00 @@ -1029,4 +1023,3 @@ 1022 8.6598860e+00 1023 1.1031969e+01 1024 1.2844779e+01 -.G2 diff -r c1ba3d50a74a -r e72b21d5e7ab doc/papers/nix/results/rat.cycles.core.amd64.grap --- a/doc/papers/nix/results/rat.cycles.core.amd64.grap Tue Jun 07 14:04:15 2011 +0000 +++ b/doc/papers/nix/results/rat.cycles.core.amd64.grap Wed Jun 08 05:00:15 2011 +0000 @@ -1,8 +1,3 @@ -.G1 -frame wid 5 top invis right invis -label bot "Strid3 on an AC" "Stride of 1 to 1024 by 1" -label left "Slowdown over stride of 1" "Smaller is better" -draw solid 1 1.0000000e+00 1 1.0003895e+00 2 1.0003599e+00 @@ -1028,4 +1023,3 @@ 1022 8.6453636e+00 1023 1.1024192e+01 1024 1.2627533e+01 -.G2 diff -r c1ba3d50a74a -r e72b21d5e7ab src/9kron/k8/9k8cpufs Binary file src/9kron/k8/9k8cpufs has changed diff -r c1ba3d50a74a -r e72b21d5e7ab src/9kron/k8/k8cpufs --- a/src/9kron/k8/k8cpufs Tue Jun 07 14:04:15 2011 +0000 +++ b/src/9kron/k8/k8cpufs Wed Jun 08 05:00:15 2011 +0000 @@ -12,7 +12,7 @@ ssl cap kprof -# pmc + pmc segment # add to get cec in the kernel @@ -26,8 +26,9 @@ uart +dev uarti8250 uartpci pci -#pmc +dev -# pmcio +pmc +dev + pmcio + ip +dev tcp @@ -80,6 +81,7 @@ /amd64/bin/auth/factotum factotum /amd64/bin/ip/ipconfig ipconfig ../root/nvram nvram + ./strid3 conf int cpuserver = 1; diff -r c1ba3d50a74a -r e72b21d5e7ab src/9kron/k8/k8cpufs.c --- a/src/9kron/k8/k8cpufs.c Tue Jun 07 14:04:15 2011 +0000 +++ b/src/9kron/k8/k8cpufs.c Wed Jun 08 05:00:15 2011 +0000 @@ -20,6 +20,7 @@ extern Dev ssldevtab; extern Dev capdevtab; extern Dev kprofdevtab; +extern Dev pmcdevtab; extern Dev segmentdevtab; extern Dev etherdevtab; extern Dev ipdevtab; @@ -38,6 +39,7 @@ &ssldevtab, &capdevtab, &kprofdevtab, + &pmcdevtab, &segmentdevtab, ðerdevtab, &ipdevtab, @@ -65,6 +67,8 @@ extern usize _amd64_bin_ip_ipconfiglen; extern uchar ___root_nvramcode[]; extern usize ___root_nvramlen; +extern uchar __strid3code[]; +extern usize __strid3len; extern void ether8169link(void); extern void ether82557link(void); extern void ether82563link(void); @@ -85,6 +89,7 @@ addbootfile("factotum", _amd64_bin_auth_factotumcode, _amd64_bin_auth_factotumlen); addbootfile("ipconfig", _amd64_bin_ip_ipconfigcode, _amd64_bin_ip_ipconfiglen); addbootfile("nvram", ___root_nvramcode, ___root_nvramlen); + addbootfile("strid3", __strid3code, __strid3len); ether8169link(); ether82557link(); ether82563link(); diff -r c1ba3d50a74a -r e72b21d5e7ab src/9kron2/k8/9k8cpufs Binary file src/9kron2/k8/9k8cpufs has changed diff -r c1ba3d50a74a -r e72b21d5e7ab src/9kron2/k8/k8cpufs --- a/src/9kron2/k8/k8cpufs Tue Jun 07 14:04:15 2011 +0000 +++ b/src/9kron2/k8/k8cpufs Wed Jun 08 05:00:15 2011 +0000 @@ -12,7 +12,7 @@ ssl cap kprof -# pmc + pmc segment # add to get cec in the kernel @@ -26,8 +26,8 @@ uart +dev uarti8250 uartpci pci -#pmc +dev -# pmcio +pmc +dev + pmcio ip +dev tcp @@ -79,6 +79,7 @@ /amd64/bin/cat cat /amd64/bin/auth/factotum factotum /amd64/bin/ip/ipconfig ipconfig + strid3 ../root/nvram nvram conf diff -r c1ba3d50a74a -r e72b21d5e7ab src/9kron2/k8/k8cpufs.c --- a/src/9kron2/k8/k8cpufs.c Tue Jun 07 14:04:15 2011 +0000 +++ b/src/9kron2/k8/k8cpufs.c Wed Jun 08 05:00:15 2011 +0000 @@ -20,6 +20,7 @@ extern Dev ssldevtab; extern Dev capdevtab; extern Dev kprofdevtab; +extern Dev pmcdevtab; extern Dev segmentdevtab; extern Dev etherdevtab; extern Dev ipdevtab; @@ -38,6 +39,7 @@ &ssldevtab, &capdevtab, &kprofdevtab, + &pmcdevtab, &segmentdevtab, ðerdevtab, &ipdevtab, @@ -63,6 +65,8 @@ extern usize _amd64_bin_auth_factotumlen; extern uchar _amd64_bin_ip_ipconfigcode[]; extern usize _amd64_bin_ip_ipconfiglen; +extern uchar strid3code[]; +extern usize strid3len; extern uchar ___root_nvramcode[]; extern usize ___root_nvramlen; extern void ether8169link(void); @@ -84,6 +88,7 @@ addbootfile("cat", _amd64_bin_catcode, _amd64_bin_catlen); addbootfile("factotum", _amd64_bin_auth_factotumcode, _amd64_bin_auth_factotumlen); addbootfile("ipconfig", _amd64_bin_ip_ipconfigcode, _amd64_bin_ip_ipconfiglen); + addbootfile("strid3", strid3code, strid3len); addbootfile("nvram", ___root_nvramcode, ___root_nvramlen); ether8169link(); ether82557link(); @@ -153,5 +158,5 @@ int cpuserver = 1; -char* conffile = "/sys/src/9kron/k8/k8cpufs"; +char* conffile = "/sys/src/9kron2/k8/k8cpufs"; ulong kerndate = KERNDATE;