# HG changeset patch # User Noah Evans # Date 1307768412 0 # Node ID 2c893c82f4ebd317f706773787f6a446d90bad75 # Parent d6ef69cc6c4b1e5354f3190e873eb232eaf20f82 daily push: Fri Jun 10 07:00:04 CET 2011 diff -r d6ef69cc6c4b -r 2c893c82f4eb doc/papers/nix/nix.ms --- a/doc/papers/nix/nix.ms Fri Jun 10 05:00:10 2011 +0000 +++ b/doc/papers/nix/nix.ms Sat Jun 11 05:00:12 2011 +0000 @@ -482,7 +482,8 @@ .PP To dispatch a process for execution at one AC we use the inter-core-call, active message, -mechanism. This figure explains how it works: +mechanism. Figure 3 explains how it works: +.F1 .PS boxht=.5 right @@ -492,6 +493,10 @@ box invis "TC" with .s at 1st box.n box invis "AC" with .s at 2nd box.n .PE +.F2 +Inter-core calls. The scheduller in the AC is waiting for pointers to functions to +be called in the AC context. +.F3 .LP The function .I acsched @@ -529,7 +534,8 @@ about implementing this with vm_enter(), it's not quite clear we should take that step. VMs have overhead, at least when compared to the mechanism we use. -This mechanism is used by NIX to dispatch processes to ACs, as shown: +This mechanism is used by NIX to dispatch processes to ACs, as shown in figure 4: +.F1 .PS down box "user code" @@ -542,6 +548,9 @@ arrow from last box.n up box "user code" .PE +.F2 +Migration of a user process to an AC using execac. +.F3 .LP A process that calls the new system call, .I execac @@ -577,6 +586,7 @@ fault, the AP transfers control of the process back to the TC, by finishing the ICC, and then waits for directions. That is, the AP spins on the ICC structure waiting for a new call. +.F1 .PS down box "user code" @@ -585,11 +595,15 @@ arrow left from last box.w dotted box "runacore" .PE +.F2 +Call path for trap handling in AC context +.F3 The handling process, running .I runacore , handles the fault and issues a new ICC to make the AP return from the trap, so that the process continues execution in its core. The trap might kill the process, in which case the AC is released and becomes idle. +.F1 .PS right box "runacore" @@ -600,6 +614,9 @@ arrow <-> from 1st box.s down box "trap()" .PE +.F2 +Return path for trap handling in AC context +.F3 .LP Handling page faults requires the handling process to get access to the .I "faulting address" , @@ -707,7 +724,8 @@ With this implementation, we made several performance measurements before proceeding further. In particular, we measured how long it takes for a program with 50 threads to execute 500 system calls in each thread. For the experiment, -the system call used does not block and does nothing. The table shows the result: +the system call used does not block and does nothing. Table 1 shows the result. +.T1 .TS center, allbox; cfB cfB cfB @@ -716,7 +734,11 @@ TC 0.02s 0.06s AC 0.20s 0.04s .TE -.PP +.T2 +Times in seconds, of elapsed real time, for a series of syscall calls and queue-based +system calls from the TC and the AC. +.T3 +.LP It takes this program 0.06 seconds (of elapsed, real time) to complete when run on the TC using the queue based mechanism. However, it takes only 0.02 seconds to complete diff -r d6ef69cc6c4b -r 2c893c82f4eb doc/papers/nix/nix.pdf Binary file doc/papers/nix/nix.pdf has changed diff -r d6ef69cc6c4b -r 2c893c82f4eb doc/papers/nix/nix.ps --- a/doc/papers/nix/nix.ps Fri Jun 10 05:00:10 2011 +0000 +++ b/doc/papers/nix/nix.ps Sat Jun 11 05:00:12 2011 +0000 @@ -4340,294 +4340,406 @@ (the) 4064 2814 w (inter-core-call,) 4288 2814 w (active) 5163 2814 w -(message, mechanism. This figure) 720 2944 w -(explains how) 2545 2944 w -(it) 3282 2944 w -(works:) 3390 2944 w -2376 3839 2376 3479 Dl -2376 3479 2916 3479 Dl -2916 3479 2916 3839 Dl -2916 3839 2376 3839 Dl -(runac) 2497 3681 w -2988 3641 2916 3659 Dl -2988 3677 2916 3659 Dl +(message, mechanism. Figure) 720 2944 w +(3 explains how) 2303 2944 w +(it) 3144 2944 w +(works:) 3252 2944 w +2376 3878 2376 3518 Dl +2376 3518 2916 3518 Dl +2916 3518 2916 3878 Dl +2916 3878 2376 3878 Dl +(runac) 2497 3720 w +2988 3680 2916 3698 Dl +2988 3716 2916 3698 Dl 8 /LucidaSansUnicode00 f -(.) 2905 3662 w -(.) 2941 3662 w -(.) 2977 3662 w -(.) 3013 3662 w -(.) 3049 3662 w -(.) 3085 3662 w -(.) 3121 3662 w -(.) 3157 3662 w -(.) 3193 3662 w -(.) 3229 3662 w -(.) 3265 3662 w -3204 3677 3276 3659 Dl -3204 3641 3276 3659 Dl -3276 3839 3276 3479 Dl -3276 3479 3816 3479 Dl -3816 3479 3816 3839 Dl -3816 3839 3276 3839 Dl -11 /LucidaSansUnicode00 f -(acsched) 3332 3681 w -(TC) 2574 3321 w -(AC) 3470 3321 w -(The) 720 4089 w -(function) 955 4089 w +(.) 2905 3701 w +(.) 2941 3701 w +(.) 2977 3701 w +(.) 3013 3701 w +(.) 3049 3701 w +(.) 3085 3701 w +(.) 3121 3701 w +(.) 3157 3701 w +(.) 3193 3701 w +(.) 3229 3701 w +(.) 3265 3701 w +3204 3716 3276 3698 Dl +3204 3680 3276 3698 Dl +3276 3878 3276 3518 Dl +3276 3518 3816 3518 Dl +3816 3518 3816 3878 Dl +3816 3878 3276 3878 Dl +11 /LucidaSansUnicode00 f +(acsched) 3332 3720 w +(TC) 2574 3360 w +(AC) 3470 3360 w +10 /LucidaSans-Demi f +(Figure 3) 1314 4142 w +10 /LucidaSansUnicode00 f +(Inter-core) 1800 4142 w +(calls.) 2333 4142 w +(The) 2622 4142 w +(scheduller) 2845 4142 w +(in) 3387 4142 w +(the) 3520 4142 w +(AC) 3717 4142 w +(is) 3897 4142 w +(waiting) 4019 4142 w +(for) 4412 4142 w +(point\255) 4593 4142 w +(ers to functions to be called in the AC context.) 1314 4262 w +11 /LucidaSansUnicode00 f +(The) 720 4488 w +(function) 955 4488 w 11 /LucidaSans-Italic f -(acsched) 1432 4089 w -11 /LucidaSansUnicode00 f -(runs) 1892 4089 w -(on) 2165 4089 w -(ACs,) 2336 4089 w -(as) 2615 4089 w -(part) 2768 4089 w -(of) 3020 4089 w -(its) 3164 4089 w -(start-up) 3329 4089 w -(sequence.) 3810 4089 w -(It) 4384 4089 w -(sits) 4493 4089 w -(in) 4715 4089 w -(a) 4852 4089 w -(tight) 4950 4089 w -(loop) 5237 4089 w -(spinning) 720 4219 w -(on) 1231 4219 w -(an) 1416 4219 w -(active) 1594 4219 w -(message) 1952 4219 w -(function) 2468 4219 w -(pointer.) 2958 4219 w -(To) 3426 4219 w -(ask) 3611 4219 w -(the) 3841 4219 w -(AC) 4061 4219 w -(to) 4262 4219 w -(execute) 4419 4219 w -(a) 4886 4219 w -(function,) 4996 4219 w -(the) 720 4349 w -(TC) 929 4349 w -(sets) 1112 4349 w -(in) 1365 4349 w -(the) 1503 4349 w -(ICC) 1712 4349 w -(structure) 1935 4349 w -(for) 2456 4349 w -(the) 2648 4349 w -(AC) 2858 4349 w -(the) 3049 4349 w -(arguments,) 3259 4349 w -(indication) 3904 4349 w -(to) 4469 4349 w -(flush) 4616 4349 w -(the) 4920 4349 w -(TLB) 5130 4349 w -(or) 5360 4349 w -(not,) 720 4479 w -(and) 970 4479 w -(the) 1207 4479 w -(function) 1417 4479 w -(pointer) 1897 4479 w -(and) 2320 4479 w -(then) 2557 4479 w -(changes) 2835 4479 w -(the) 3313 4479 w -(process) 3523 4479 w -(state) 3973 4479 w -(to) 4273 4479 w +(acsched) 1432 4488 w +11 /LucidaSansUnicode00 f +(runs) 1892 4488 w +(on) 2165 4488 w +(ACs,) 2336 4488 w +(as) 2615 4488 w +(part) 2768 4488 w +(of) 3020 4488 w +(its) 3164 4488 w +(start-up) 3329 4488 w +(sequence.) 3810 4488 w +(It) 4384 4488 w +(sits) 4493 4488 w +(in) 4715 4488 w +(a) 4852 4488 w +(tight) 4950 4488 w +(loop) 5237 4488 w +(spinning) 720 4618 w +(on) 1231 4618 w +(an) 1416 4618 w +(active) 1594 4618 w +(message) 1952 4618 w +(function) 2468 4618 w +(pointer.) 2958 4618 w +(To) 3426 4618 w +(ask) 3611 4618 w +(the) 3841 4618 w +(AC) 4061 4618 w +(to) 4262 4618 w +(execute) 4419 4618 w +(a) 4886 4618 w +(function,) 4996 4618 w +(the) 720 4748 w +(TC) 929 4748 w +(sets) 1112 4748 w +(in) 1365 4748 w +(the) 1503 4748 w +(ICC) 1712 4748 w +(structure) 1935 4748 w +(for) 2456 4748 w +(the) 2648 4748 w +(AC) 2858 4748 w +(the) 3049 4748 w +(arguments,) 3259 4748 w +(indication) 3904 4748 w +(to) 4469 4748 w +(flush) 4616 4748 w +(the) 4920 4748 w +(TLB) 5130 4748 w +(or) 5360 4748 w +(not,) 720 4878 w +(and) 970 4878 w +(the) 1207 4878 w +(function) 1417 4878 w +(pointer) 1897 4878 w +(and) 2320 4878 w +(then) 2557 4878 w +(changes) 2835 4878 w +(the) 3313 4878 w +(process) 3523 4878 w +(state) 3973 4878 w +(to) 4273 4878 w 11 /LucidaSans-Italic f -(Exotic) 4419 4479 w -11 /LucidaSansUnicode00 f -(,) 4731 4479 w -(which) 4804 4479 w -(would) 5151 4479 w -(block) 720 4609 w -(the) 1047 4609 w -(process) 1258 4609 w -(for) 1709 4609 w -(the) 1902 4609 w -(moment.) 2113 4609 w -(When) 2665 4609 w -(the) 2998 4609 w -(pointer) 3209 4609 w -(becomes) 3633 4609 w -(non-nil,) 4147 4609 w -(the) 4621 4609 w -(AC) 4832 4609 w -(calls) 5024 4609 w -(the) 5301 4609 w -(function.) 720 4739 w -(The) 1269 4739 w -(function) 1506 4739 w -(pointer) 1985 4739 w -(uses) 2407 4739 w -(a) 2687 4739 w -(cache) 2786 4739 w -(line) 3127 4739 w -(and) 3359 4739 w -(all) 3595 4739 w -(other) 3758 4739 w -(arguments) 4079 4739 w -(use) 4688 4739 w -(a) 4912 4739 w -(different) 5011 4739 w -(cache) 720 4869 w -(line,) 1070 4869 w -(so) 1346 4869 w -(that) 1517 4869 w -(polling) 1776 4869 w -(can) 2192 4869 w -(be) 2425 4869 w -(efficient) 2604 4869 w -(regarding) 3087 4869 w -(bus) 3653 4869 w -(transactions.) 3894 4869 w -(Once) 4664 4869 w -(the) 4984 4869 w -(func\255) 5203 4869 w -(tion) 720 4999 w -(is) 970 4999 w -(done,) 1100 4999 w -(the) 1443 4999 w -(AC) 1656 4999 w -(sets) 1850 4999 w -(the) 2107 4999 w -(function) 2320 4999 w -(pointer) 2803 4999 w -(to) 3229 4999 w -(nil) 3379 4999 w -(and) 3553 4999 w -(calls) 3793 4999 w +(Exotic) 4419 4878 w +11 /LucidaSansUnicode00 f +(,) 4731 4878 w +(which) 4804 4878 w +(would) 5151 4878 w +(block) 720 5008 w +(the) 1047 5008 w +(process) 1258 5008 w +(for) 1709 5008 w +(the) 1902 5008 w +(moment.) 2113 5008 w +(When) 2665 5008 w +(the) 2998 5008 w +(pointer) 3209 5008 w +(becomes) 3633 5008 w +(non-nil,) 4147 5008 w +(the) 4621 5008 w +(AC) 4832 5008 w +(calls) 5024 5008 w +(the) 5301 5008 w +(function.) 720 5138 w +(The) 1269 5138 w +(function) 1506 5138 w +(pointer) 1985 5138 w +(uses) 2407 5138 w +(a) 2687 5138 w +(cache) 2786 5138 w +(line) 3127 5138 w +(and) 3359 5138 w +(all) 3595 5138 w +(other) 3758 5138 w +(arguments) 4079 5138 w +(use) 4688 5138 w +(a) 4912 5138 w +(different) 5011 5138 w +(cache) 720 5268 w +(line,) 1070 5268 w +(so) 1346 5268 w +(that) 1517 5268 w +(polling) 1776 5268 w +(can) 2192 5268 w +(be) 2425 5268 w +(efficient) 2604 5268 w +(regarding) 3087 5268 w +(bus) 3653 5268 w +(transactions.) 3894 5268 w +(Once) 4664 5268 w +(the) 4984 5268 w +(func\255) 5203 5268 w +(tion) 720 5398 w +(is) 970 5398 w +(done,) 1100 5398 w +(the) 1443 5398 w +(AC) 1656 5398 w +(sets) 1850 5398 w +(the) 2107 5398 w +(function) 2320 5398 w +(pointer) 2803 5398 w +(to) 3229 5398 w +(nil) 3379 5398 w +(and) 3553 5398 w +(calls) 3793 5398 w 11 /LucidaSans-Italic f -(ready) 4072 4999 w -11 /LucidaSansUnicode00 f -(on) 4420 4999 w -(the) 4597 4999 w -(process) 4809 4999 w -(that) 5261 4999 w -(scheduled the) 720 5129 w -(function for execution.) 1503 5129 w -(You think) 2795 5129 w -(of) 3341 5129 w -(this as a) 3484 5129 w -(soft) 3964 5129 w -(IPI.) 4204 5129 w -(While) 970 5295 w -(an) 1296 5295 w -(AC) 1462 5295 w -(is) 1651 5295 w -(performing) 1776 5295 w -(an) 2412 5295 w -(action) 2578 5295 w -(dictated) 2940 5295 w -(by) 3408 5295 w -(a) 3571 5295 w -(process) 3670 5295 w -(in) 4119 5295 w -(the) 4257 5295 w -(TC,) 4466 5295 w -(its) 4684 5295 w +(ready) 4072 5398 w +11 /LucidaSansUnicode00 f +(on) 4420 5398 w +(the) 4597 5398 w +(process) 4809 5398 w +(that) 5261 5398 w +(scheduled the) 720 5528 w +(function for execution.) 1503 5528 w +(You think) 2795 5528 w +(of) 3341 5528 w +(this as a) 3484 5528 w +(soft) 3964 5528 w +(IPI.) 4204 5528 w +(While) 970 5694 w +(an) 1296 5694 w +(AC) 1462 5694 w +(is) 1651 5694 w +(performing) 1776 5694 w +(an) 2412 5694 w +(action) 2578 5694 w +(dictated) 2940 5694 w +(by) 3408 5694 w +(a) 3571 5694 w +(process) 3670 5694 w +(in) 4119 5694 w +(the) 4257 5694 w +(TC,) 4466 5694 w +(its) 4684 5694 w 11 /LucidaSans-Italic f -(Mach) 4851 5295 w -11 /LucidaSansUnicode00 f -(struc\255) 5170 5295 w -(ture) 720 5425 w -(points) 976 5425 w -(to) 1348 5425 w -(the) 1495 5425 w -(process) 1705 5425 w -(so) 2155 5425 w -(that) 2317 5425 w +(Mach) 4851 5694 w +11 /LucidaSansUnicode00 f +(struc\255) 5170 5694 w +(ture) 720 5824 w +(points) 976 5824 w +(to) 1348 5824 w +(the) 1495 5824 w +(process) 1705 5824 w +(so) 2155 5824 w +(that) 2317 5824 w 11 /LucidaSans-Italic f -(up) 2567 5425 w -11 /LucidaSansUnicode00 f -(in) 2741 5425 w -(the) 2880 5425 w -(AC) 3090 5425 w -(refers) 3281 5425 w -(to) 3631 5425 w -(the) 3778 5425 w -(process.) 3988 5425 w -(The) 4473 5425 w -(process) 4711 5425 w -(refers) 5161 5425 w -(to) 720 5555 w -(the) 866 5555 w -(AC) 1075 5555 w -(via) 1265 5555 w -(a) 1453 5555 w -(new) 1552 5555 w -(field) 1805 5555 w +(up) 2567 5824 w +11 /LucidaSansUnicode00 f +(in) 2741 5824 w +(the) 2880 5824 w +(AC) 3090 5824 w +(refers) 3281 5824 w +(to) 3631 5824 w +(the) 3778 5824 w +(process.) 3988 5824 w +(The) 4473 5824 w +(process) 4711 5824 w +(refers) 5161 5824 w +(to) 720 5954 w +(the) 866 5954 w +(AC) 1075 5954 w +(via) 1265 5954 w +(a) 1453 5954 w +(new) 1552 5954 w +(field) 1805 5954 w 11 /LucidaSans-Italic f -(Mach.ac) 2079 5555 w -11 /LucidaSansUnicode00 f -(.) 2517 5555 w -(Should) 2625 5555 w -(the) 3026 5555 w -(AC) 3235 5555 w -(become) 3425 5555 w -(idle,) 3881 5555 w -(its) 4150 5555 w +(Mach.ac) 2079 5954 w +11 /LucidaSansUnicode00 f +(.) 2517 5954 w +(Should) 2625 5954 w +(the) 3026 5954 w +(AC) 3235 5954 w +(become) 3425 5954 w +(idle,) 3881 5954 w +(its) 4150 5954 w 11 /LucidaSans-Italic f -(Mach.proc) 4318 5555 w -11 /LucidaSansUnicode00 f -(field) 4911 5555 w -(is) 5186 5555 w -(set) 5313 5555 w -(to nil.) 720 5685 w -(This) 970 5851 w -(mechanism) 1234 5851 w -(is) 1881 5851 w -(kind) 2009 5851 w -(of) 2282 5851 w -(like) 2430 5851 w -(a) 2660 5851 w -(vm_exit\(\).) 2761 5851 w -(While) 3359 5851 w -(we) 3688 5851 w -(could) 3875 5851 w -(think) 4207 5851 w -(about) 4520 5851 w -(implement\255) 4866 5851 w -(ing) 720 5981 w -(this) 936 5981 w -(with) 1181 5981 w -(vm_enter\(\),) 1455 5981 w -(it) 2102 5981 w +(Mach.proc) 4318 5954 w +11 /LucidaSansUnicode00 f +(field) 4911 5954 w +(is) 5186 5954 w +(set) 5313 5954 w +(to nil.) 720 6084 w +(This) 970 6250 w +(mechanism) 1234 6250 w +(is) 1881 6250 w +(kind) 2009 6250 w +(of) 2282 6250 w +(like) 2430 6250 w +(a) 2660 6250 w +(vm_exit\(\).) 2761 6250 w +(While) 3359 6250 w +(we) 3688 6250 w +(could) 3875 6250 w +(think) 4207 6250 w +(about) 4520 6250 w +(implement\255) 4866 6250 w +(ing) 720 6380 w +(this) 936 6380 w +(with) 1181 6380 w +(vm_enter\(\),) 1455 6380 w +(it) 2102 6380 w 11 /LucidaSansUnicode20 f -(\031) 2175 5981 w -11 /LucidaSansUnicode00 f -(s) 2210 5981 w -(not) 2314 5981 w -(quite) 2538 5981 w -(clear) 2858 5981 w -(we) 3161 5981 w -(should) 3355 5981 w -(take) 3762 5981 w -(that) 4037 5981 w -(step.) 4295 5981 w -(VMs) 4640 5981 w -(have) 4910 5981 w -(over\255) 5205 5981 w -(head,) 720 6111 w -(at) 1064 6111 w -(least) 1216 6111 w -(when) 1518 6111 w -(compared) 1851 6111 w -(to) 2432 6111 w -(the) 2590 6111 w -(mechanism) 2811 6111 w -(we) 3468 6111 w -(use.) 3665 6111 w -(This) 3971 6111 w -(mechanism) 4246 6111 w -(is) 4903 6111 w -(used) 5041 6111 w -(by) 5346 6111 w -(NIX to dispatch processes to ACs, as shown:) 720 6241 w +(\031) 2175 6380 w +11 /LucidaSansUnicode00 f +(s) 2210 6380 w +(not) 2314 6380 w +(quite) 2538 6380 w +(clear) 2858 6380 w +(we) 3161 6380 w +(should) 3355 6380 w +(take) 3762 6380 w +(that) 4037 6380 w +(step.) 4295 6380 w +(VMs) 4640 6380 w +(have) 4910 6380 w +(over\255) 5205 6380 w +(head,) 720 6510 w +(at) 1064 6510 w +(least) 1216 6510 w +(when) 1518 6510 w +(compared) 1851 6510 w +(to) 2432 6510 w +(the) 2590 6510 w +(mechanism) 2811 6510 w +(we) 3468 6510 w +(use.) 3665 6510 w +(This) 3971 6510 w +(mechanism) 4246 6510 w +(is) 4903 6510 w +(used) 5041 6510 w +(by) 5346 6510 w +(NIX to dispatch processes to ACs, as shown in figure) 720 6640 w +(4:) 3569 6640 w +(A) 720 6806 w +(process) 855 6806 w +(that) 1325 6806 w +(calls) 1595 6806 w +(the) 1891 6806 w +(new) 2122 6806 w +(system) 2397 6806 w +(call,) 2831 6806 w +11 /LucidaSans-Italic f +(execac) 3107 6806 w +11 /LucidaSansUnicode00 f +(\(or) 3519 6806 w +(uses) 3727 6806 w +(the) 4029 6806 w +11 /LucidaSans-Italic f +(RFCORE) 4260 6806 w +11 /LucidaSansUnicode00 f +(flag) 4739 6806 w +(in) 5001 6806 w +11 /LucidaSans-Italic f +(rfork) 5161 6806 w +11 /LucidaSansUnicode00 f +(\)) 5436 6806 w +(makes) 720 6936 w +(the) 1112 6936 w +(kernel) 1330 6936 w +(call) 1710 6936 w +11 /LucidaSans-Italic f +(runacore) 1938 6936 w +11 /LucidaSansUnicode00 f +(in) 2470 6936 w +(the) 2617 6936 w +(context) 2835 6936 w +(of) 3284 6936 w +(the) 3439 6936 w +(process.) 3657 6936 w +(This) 4150 6936 w +(function) 4422 6936 w +(makes) 4910 6936 w +(the) 5301 6936 w +(process) 720 7066 w +(become) 1172 7066 w +(a) 1631 7066 w +(handler) 1733 7066 w +(for) 2179 7066 w +(the) 2373 7066 w +(actual) 2585 7066 w +(process,) 2945 7066 w +(which) 3432 7066 w +(would) 3783 7066 w +(be) 4146 7066 w +(running) 4319 7066 w +(from) 4778 7066 w +(now) 5075 7066 w +(on) 5337 7066 w +(on) 720 7196 w +(the) 895 7196 w +(AC.) 1106 7196 w +(To) 1368 7196 w +(do) 1544 7196 w +(so,) 1720 7196 w +11 /LucidaSans-Italic f +(runacore) 1918 7196 w +11 /LucidaSansUnicode00 f +(calls) 2443 7196 w +11 /LucidaSans-Italic f +(runac) 2720 7196 w +11 /LucidaSansUnicode00 f +(to) 3070 7196 w +(execute) 3217 7196 w +11 /LucidaSans-Italic f +(actouser) 3674 7196 w +11 /LucidaSansUnicode00 f +(on) 4173 7196 w +(the) 4347 7196 w +(AP) 4557 7196 w +(selected.) 4733 7196 w +(This) 5247 7196 w +(transfers) 720 7326 w +(control) 1249 7326 w +(to) 1679 7326 w +(user-mode,) 1841 7326 w +(restoring) 2526 7326 w +(the) 3065 7326 w +(state) 3291 7326 w +(as) 3607 7326 w +(saved) 3779 7326 w +(in) 4139 7326 w +(the) 4294 7326 w +11 /LucidaSans-Italic f +(Ureg) 4520 7326 w +11 /LucidaSansUnicode00 f +(kept) 4829 7326 w +(by) 5120 7326 w +(the) 5301 7326 w cleartomark showpage saveobj restore @@ -4636,321 +4748,428 @@ /saveobj save def mark 8 pagesetup -1926 1210 1926 850 Dl -1926 850 2466 850 Dl -2466 850 2466 1210 Dl -2466 1210 1926 1210 Dl -11 /LucidaSansUnicode00 f -(user code) 1936 1052 w -2196 1210 2196 1570 Dl -2178 1498 2196 1570 Dl -2214 1498 2196 1570 Dl -1926 1930 1926 1570 Dl -1926 1570 2466 1570 Dl -2466 1570 2466 1930 Dl -2466 1930 1926 1930 Dl -(execac) 2014 1772 w -2466 1750 2826 1750 Dl -2754 1768 2826 1750 Dl -2754 1732 2826 1750 Dl -2826 1930 2826 1570 Dl -2826 1570 3366 1570 Dl -3366 1570 3366 1930 Dl -3366 1930 2826 1930 Dl -(runacore) 2860 1772 w +1926 1294 1926 934 Dl +1926 934 2466 934 Dl +2466 934 2466 1294 Dl +2466 1294 1926 1294 Dl +11 /LucidaSansUnicode00 f +(user code) 1936 1136 w +2196 1294 2196 1654 Dl +2178 1582 2196 1654 Dl +2214 1582 2196 1654 Dl +1926 2014 1926 1654 Dl +1926 1654 2466 1654 Dl +2466 1654 2466 2014 Dl +2466 2014 1926 2014 Dl +(execac) 2014 1856 w +2466 1834 2826 1834 Dl +2754 1852 2826 1834 Dl +2754 1816 2826 1834 Dl +2826 2014 2826 1654 Dl +2826 1654 3366 1654 Dl +3366 1654 3366 2014 Dl +3366 2014 2826 2014 Dl +(runacore) 2860 1856 w 8 /LucidaSansUnicode00 f -(.) 3355 1753 w -(.) 3391 1753 w -(.) 3427 1753 w -(.) 3463 1753 w -(.) 3499 1753 w -(.) 3535 1753 w -(.) 3571 1753 w -(.) 3607 1753 w -(.) 3643 1753 w -(.) 3679 1753 w -(.) 3715 1753 w -3654 1768 3726 1750 Dl -3654 1732 3726 1750 Dl -3726 1930 3726 1570 Dl -3726 1570 4266 1570 Dl -4266 1570 4266 1930 Dl -4266 1930 3726 1930 Dl -11 /LucidaSansUnicode00 f -(actouser) 3768 1772 w -3996 1570 3996 1210 Dl -4014 1282 3996 1210 Dl -3978 1282 3996 1210 Dl -3726 1210 3726 850 Dl -3726 850 4266 850 Dl -4266 850 4266 1210 Dl -4266 1210 3726 1210 Dl -(user code) 3736 1052 w -(A) 720 2180 w -(process) 855 2180 w -(that) 1325 2180 w -(calls) 1595 2180 w -(the) 1891 2180 w -(new) 2122 2180 w -(system) 2397 2180 w -(call,) 2831 2180 w +(.) 3355 1837 w +(.) 3391 1837 w +(.) 3427 1837 w +(.) 3463 1837 w +(.) 3499 1837 w +(.) 3535 1837 w +(.) 3571 1837 w +(.) 3607 1837 w +(.) 3643 1837 w +(.) 3679 1837 w +(.) 3715 1837 w +3654 1852 3726 1834 Dl +3654 1816 3726 1834 Dl +3726 2014 3726 1654 Dl +3726 1654 4266 1654 Dl +4266 1654 4266 2014 Dl +4266 2014 3726 2014 Dl +11 /LucidaSansUnicode00 f +(actouser) 3768 1856 w +3996 1654 3996 1294 Dl +4014 1366 3996 1294 Dl +3978 1366 3996 1294 Dl +3726 1294 3726 934 Dl +3726 934 4266 934 Dl +4266 934 4266 1294 Dl +4266 1294 3726 1294 Dl +(user code) 3736 1136 w +10 /LucidaSans-Demi f +(Figure 4) 1619 2278 w +10 /LucidaSansUnicode00 f +(Migration of a user process to an AC using execac.) 2105 2278 w +11 /LucidaSansUnicode00 f +(process) 720 2468 w +(in) 1180 2468 w +(its) 1329 2468 w +(kernel) 1507 2468 w +(stack.) 1890 2468 w +(Both) 2253 2468 w 11 /LucidaSans-Italic f -(execac) 3107 2180 w -11 /LucidaSansUnicode00 f -(\(or) 3519 2180 w -(uses) 3727 2180 w -(the) 4029 2180 w +(actouser) 2543 2468 w +11 /LucidaSansUnicode00 f +(and) 3053 2468 w +(any) 3301 2468 w +(kernel) 3537 2468 w +(handler) 3920 2468 w +(executing) 4375 2468 w +(in) 4949 2468 w +(the) 5099 2468 w +(AC) 5320 2468 w +(runs using the) 720 2598 w 11 /LucidaSans-Italic f -(RFCORE) 4260 2180 w -11 /LucidaSansUnicode00 f -(flag) 4739 2180 w -(in) 5001 2180 w +(Mach) 1525 2598 w +11 /LucidaSansUnicode00 f +(stack.) 1841 2598 w +(The) 970 2764 w +(user) 1217 2764 w +(code) 1496 2764 w +(runs) 1798 2764 w +(undisturbed) 2083 2764 w +(in) 2778 2764 w +(the) 2926 2764 w +(AC) 3146 2764 w +(while) 3347 2764 w +(the) 3675 2764 w +(\(handler\)) 3895 2764 w +(process) 4421 2764 w +(is) 4881 2764 w +(blocked,) 5018 2764 w +(waiting) 720 2894 w +(for) 1143 2894 w +(the) 1332 2894 w +(ICC) 1539 2894 w +(to) 1759 2894 w +(complete.) 1903 2894 w +(That) 2465 2894 w +(happens) 2740 2894 w +(as) 3229 2894 w +(soon) 3382 2894 w +(as) 3676 2894 w +(there) 3829 2894 w +(is a) 4142 2894 w +(fault) 4361 2894 w +(or a) 4639 2894 w +(system call) 4882 2894 w +(in the) 720 3024 w +(AC.) 1061 3024 w +(When) 970 3190 w +(an) 1300 3190 w +(AP) 1466 3190 w +(takes) 1640 3190 w +(a) 1961 3190 w +(fault,) 2059 3190 w +(the) 2374 3190 w +(AP) 2582 3190 w +(transfers) 2756 3190 w +(control) 3268 3190 w +(of) 3681 3190 w +(the) 3827 3190 w +(process) 4036 3190 w +(back) 4485 3190 w +(to) 4773 3190 w +(the) 4919 3190 w +(TC,) 5128 3190 w +(by) 5346 3190 w +(finishing) 720 3320 w +(the) 1231 3320 w +(ICC,) 1448 3320 w +(and) 1713 3320 w +(then) 1957 3320 w +(waits) 2242 3320 w +(for) 2563 3320 w +(directions.) 2761 3320 w +(That) 3369 3320 w +(is,) 3653 3320 w +(the) 3821 3320 w +(AP) 4037 3320 w +(spins) 4219 3320 w +(on) 4545 3320 w +(the) 4725 3320 w +(ICC) 4941 3320 w +(struc\255) 5170 3320 w +(ture) 720 3450 w +(waiting for a) 971 3450 w +(new) 1677 3450 w +(call.) 1927 3450 w +3276 4024 3276 3664 Dl +3276 3664 3816 3664 Dl +3816 3664 3816 4024 Dl +3816 4024 3276 4024 Dl +(user code) 3286 3866 w +3546 4024 3546 4384 Dl +3528 4312 3546 4384 Dl +3564 4312 3546 4384 Dl +(trap) 3581 4226 w +3276 4744 3276 4384 Dl +3276 4384 3816 4384 Dl +3816 4384 3816 4744 Dl +3816 4744 3276 4744 Dl +(actrap) 3380 4586 w +8 /LucidaSansUnicode00 f +(.) 3265 4567 w +(.) 3229 4567 w +(.) 3193 4567 w +(.) 3157 4567 w +(.) 3121 4567 w +(.) 3085 4567 w +(.) 3049 4567 w +(.) 3013 4567 w +(.) 2977 4567 w +(.) 2941 4567 w +(.) 2905 4567 w +2988 4546 2916 4564 Dl +2988 4582 2916 4564 Dl +2376 4744 2376 4384 Dl +2376 4384 2916 4384 Dl +2916 4384 2916 4744 Dl +2916 4744 2376 4744 Dl +11 /LucidaSansUnicode00 f +(runacore) 2410 4586 w +10 /LucidaSans-Demi f +(Figure 5) 1865 5008 w +10 /LucidaSansUnicode00 f +(Call path for trap handling in AC context) 2351 5008 w +11 /LucidaSansUnicode00 f +(The) 720 5198 w +(handling) 978 5198 w +(process,) 1503 5198 w +(running) 2009 5198 w 11 /LucidaSans-Italic f -(rfork) 5161 2180 w -11 /LucidaSansUnicode00 f -(\)) 5436 2180 w -(makes) 720 2310 w -(the) 1112 2310 w -(kernel) 1330 2310 w -(call) 1710 2310 w +(runacore) 2486 5198 w +11 /LucidaSansUnicode00 f +(,) 2971 5198 w +(handles) 3066 5198 w +(the) 3542 5198 w +(fault) 3773 5198 w +(and) 4076 5198 w +(issues) 4334 5198 w +(a) 4724 5198 w +(new) 4845 5198 w +(ICC) 5120 5198 w +(to) 5364 5198 w +(make) 720 5328 w +(the) 1056 5328 w +(AP) 1274 5328 w +(return) 1458 5328 w +(from) 1834 5328 w +(the) 2136 5328 w +(trap,) 2354 5328 w +(so) 2652 5328 w +(that) 2822 5328 w +(the) 3079 5328 w +(process) 3296 5328 w +(continues) 3753 5328 w +(execution) 4317 5328 w +(in) 4886 5328 w +(its) 5032 5328 w +(core.) 5207 5328 w +(The) 720 5458 w +(trap might) 954 5458 w +(kill) 1551 5458 w +(the) 1746 5458 w +(process, in which case) 1952 5458 w +(the) 3182 5458 w +(AC) 3388 5458 w +(is released and becomes idle.) 3575 5458 w +(Handling) 720 5624 w +(page) 1274 5624 w +(faults) 1609 5624 w +(requires) 1983 5624 w +(the) 2497 5624 w +(handling) 2743 5624 w +(process) 3284 5624 w +(to) 3770 5624 w +(get) 3953 5624 w +(access) 4200 5624 w +(to) 4623 5624 w +(the) 4807 5624 w 11 /LucidaSans-Italic f -(runacore) 1938 2310 w -11 /LucidaSansUnicode00 f -(in) 2470 2310 w -(the) 2617 2310 w -(context) 2835 2310 w -(of) 3284 2310 w -(the) 3439 2310 w -(process.) 3657 2310 w -(This) 4150 2310 w -(function) 4422 2310 w -(makes) 4910 2310 w -(the) 5301 2310 w -(process) 720 2440 w -(become) 1172 2440 w -(a) 1631 2440 w -(handler) 1733 2440 w -(for) 2179 2440 w -(the) 2373 2440 w -(actual) 2585 2440 w -(process,) 2945 2440 w -(which) 3432 2440 w -(would) 3783 2440 w -(be) 4146 2440 w -(running) 4319 2440 w -(from) 4778 2440 w -(now) 5075 2440 w -(on) 5337 2440 w -(on) 720 2570 w -(the) 895 2570 w -(AC.) 1106 2570 w -(To) 1368 2570 w -(do) 1544 2570 w -(so,) 1720 2570 w +(faulting) 5054 5624 w +(address) 720 5754 w +11 /LucidaSansUnicode00 f +(,) 1140 5754 w 11 /LucidaSans-Italic f -(runacore) 1918 2570 w -11 /LucidaSansUnicode00 f -(calls) 2443 2570 w +(cr2) 1216 5754 w +11 /LucidaSansUnicode00 f +(register) 1433 5754 w +(as) 1884 5754 w +(found) 2041 5754 w +(in) 2394 5754 w +(the) 2534 5754 w +(AC.) 2745 5754 w +(We) 2972 5754 w +(have) 3169 5754 w +(virtualized) 3457 5754 w +(the) 4059 5754 w +(register.) 4270 5754 w +(The) 4756 5754 w +(TC) 4995 5754 w +(saves) 5180 5754 w +(the) 720 5884 w +(hardware) 929 5884 w +(register) 1463 5884 w +(into) 1912 5884 w +(a) 2159 5884 w +(software) 2259 5884 w +(copy,) 2756 5884 w +(kept) 3079 5884 w +(in) 3354 5884 w +(the) 3493 5884 w 11 /LucidaSans-Italic f -(runac) 2720 2570 w -11 /LucidaSansUnicode00 f -(to) 3070 2570 w -(execute) 3217 2570 w +(Mach) 3703 5884 w +11 /LucidaSansUnicode00 f +(structure.) 4023 5884 w +(The) 4579 5884 w +(AC) 4817 5884 w +(does) 5008 5884 w +(the) 5301 5884 w +(same.) 720 6014 w +(The) 1077 6014 w +(function) 1317 6014 w 11 /LucidaSans-Italic f -(actouser) 3674 2570 w -11 /LucidaSansUnicode00 f -(on) 4173 2570 w -(the) 4347 2570 w -(AP) 4557 2570 w -(selected.) 4733 2570 w -(This) 5247 2570 w -(transfers) 720 2700 w -(control) 1231 2700 w -(to) 1643 2700 w -(user-mode,) 1787 2700 w -(restoring) 2453 2700 w -(the) 2973 2700 w -(state) 3181 2700 w -(as) 3479 2700 w -(saved) 3633 2700 w -(in) 3975 2700 w -(the) 4112 2700 w +(runacore) 1799 6014 w +11 /LucidaSansUnicode00 f +(updates) 2325 6014 w +(the) 2792 6014 w +(TC) 3004 6014 w +(software) 3190 6014 w +(cr2) 3689 6014 w +(with) 3900 6014 w +(the) 4167 6014 w +(one) 4379 6014 w +(found) 4616 6014 w +(in) 4969 6014 w +(the) 5109 6014 w +(AC) 5320 6014 w +(before) 720 6144 w +(calling) 1101 6144 w 11 /LucidaSans-Italic f -(Ureg) 4320 2700 w -11 /LucidaSansUnicode00 f -(kept) 4611 2700 w -(by) 4884 2700 w -(the) 5047 2700 w -(pro\255) 5255 2700 w -(cess) 720 2830 w -(in) 993 2830 w -(its) 1136 2830 w -(kernel) 1308 2830 w -(stack.) 1684 2830 w -(Both) 2040 2830 w +(trap) 1485 6144 w +11 /LucidaSansUnicode00 f +(, so that) 1714 6144 w +(trap handling code) 2188 6144 w +(does not) 3229 6144 w +(need to) 3729 6144 w +(know) 4169 6144 w +(which) 4489 6144 w +(core) 4834 6144 w +(caused) 5100 6144 w +(the) 720 6274 w +(fault.) 926 6274 w +(Floating) 970 6440 w +(point) 1441 6440 w +(traps) 1762 6440 w +(are) 2078 6440 w +(handled) 2290 6440 w +(directly) 2763 6440 w +(in) 3201 6440 w +(the) 3345 6440 w +(AC,) 3560 6440 w +(instead) 3791 6440 w +(of) 4224 6440 w +(dispatching) 4376 6440 w +(the) 5040 6440 w +(pro\255) 5255 6440 w +(cess) 720 6570 w +(to) 988 6570 w +(the) 1133 6570 w +(TC;) 1341 6570 w +(for) 1558 6570 w +(efficiency.) 1748 6570 w +(Only) 2327 6570 w +(when) 2607 6570 w +(they) 2927 6570 w +(cause) 3192 6570 w +(an) 3532 6570 w +(event) 3698 6570 w +(or) 4025 6570 w 11 /LucidaSans-Italic f -(actouser) 2323 2830 w -11 /LucidaSansUnicode00 f -(and) 2826 2830 w -(any) 3067 2830 w -(kernel) 3296 2830 w -(handler) 3672 2830 w -(executing) 4120 2830 w -(in) 4686 2830 w -(the) 4828 2830 w -(AC) 5041 2830 w -(runs) 5235 2830 w -(using the) 720 2960 w -11 /LucidaSans-Italic f -(Mach) 1253 2960 w -11 /LucidaSansUnicode00 f -(stack.) 1569 2960 w -(The) 970 3126 w -(user) 1217 3126 w -(code) 1496 3126 w -(runs) 1798 3126 w -(undisturbed) 2083 3126 w -(in) 2778 3126 w -(the) 2926 3126 w -(AC) 3146 3126 w -(while) 3347 3126 w -(the) 3675 3126 w -(\(handler\)) 3895 3126 w -(process) 4421 3126 w -(is) 4881 3126 w -(blocked,) 5018 3126 w -(waiting) 720 3256 w -(for) 1143 3256 w -(the) 1332 3256 w -(ICC) 1539 3256 w -(to) 1759 3256 w -(complete.) 1903 3256 w -(That) 2465 3256 w -(happens) 2740 3256 w -(as) 3229 3256 w -(soon) 3382 3256 w -(as) 3676 3256 w -(there) 3829 3256 w -(is a) 4142 3256 w -(fault) 4361 3256 w -(or a) 4639 3256 w -(system call) 4882 3256 w -(in the) 720 3386 w -(AC.) 1061 3386 w -(When) 970 3552 w -(an) 1300 3552 w -(AP) 1466 3552 w -(takes) 1640 3552 w -(a) 1961 3552 w -(fault,) 2059 3552 w -(the) 2374 3552 w -(AP) 2582 3552 w -(transfers) 2756 3552 w -(control) 3268 3552 w -(of) 3681 3552 w -(the) 3827 3552 w -(process) 4036 3552 w -(back) 4485 3552 w -(to) 4773 3552 w -(the) 4919 3552 w -(TC,) 5128 3552 w -(by) 5346 3552 w -(finishing) 720 3682 w -(the) 1231 3682 w -(ICC,) 1448 3682 w -(and) 1713 3682 w -(then) 1957 3682 w -(waits) 2242 3682 w -(for) 2563 3682 w -(directions.) 2761 3682 w -(That) 3369 3682 w -(is,) 3653 3682 w -(the) 3821 3682 w -(AP) 4037 3682 w -(spins) 4219 3682 w -(on) 4545 3682 w -(the) 4725 3682 w -(ICC) 4941 3682 w -(struc\255) 5170 3682 w -(ture) 720 3812 w -(waiting for a) 971 3812 w -(new) 1677 3812 w -(call.) 1927 3812 w -3276 4347 3276 3987 Dl -3276 3987 3816 3987 Dl -3816 3987 3816 4347 Dl -3816 4347 3276 4347 Dl -(user code) 3286 4189 w -3546 4347 3546 4707 Dl -3528 4635 3546 4707 Dl -3564 4635 3546 4707 Dl -(trap) 3581 4549 w -3276 5067 3276 4707 Dl -3276 4707 3816 4707 Dl -3816 4707 3816 5067 Dl -3816 5067 3276 5067 Dl -(actrap) 3380 4909 w -8 /LucidaSansUnicode00 f -(.) 3265 4890 w -(.) 3229 4890 w -(.) 3193 4890 w -(.) 3157 4890 w -(.) 3121 4890 w -(.) 3085 4890 w -(.) 3049 4890 w -(.) 3013 4890 w -(.) 2977 4890 w -(.) 2941 4890 w -(.) 2905 4890 w -2988 4869 2916 4887 Dl -2988 4905 2916 4887 Dl -2376 5067 2376 4707 Dl -2376 4707 2916 4707 Dl -2916 4707 2916 5067 Dl -2916 5067 2376 5067 Dl -11 /LucidaSansUnicode00 f -(runacore) 2410 4909 w -(The) 720 5281 w -(handling) 978 5281 w -(process,) 1503 5281 w -(running) 2009 5281 w -11 /LucidaSans-Italic f -(runacore) 2486 5281 w -11 /LucidaSansUnicode00 f -(,) 2971 5281 w -(handles) 3066 5281 w -(the) 3542 5281 w -(fault) 3773 5281 w -(and) 4076 5281 w -(issues) 4334 5281 w -(a) 4724 5281 w -(new) 4845 5281 w -(ICC) 5120 5281 w -(to) 5364 5281 w -(make) 720 5411 w -(the) 1056 5411 w -(AP) 1274 5411 w -(return) 1458 5411 w -(from) 1834 5411 w -(the) 2136 5411 w -(trap,) 2354 5411 w -(so) 2652 5411 w -(that) 2822 5411 w -(the) 3079 5411 w -(process) 3296 5411 w -(continues) 3753 5411 w -(execution) 4317 5411 w -(in) 4886 5411 w -(its) 5032 5411 w -(core.) 5207 5411 w -(The) 720 5541 w -(trap might) 954 5541 w -(kill) 1551 5541 w -(the) 1746 5541 w -(process, in which case) 1952 5541 w -(the) 3182 5541 w -(AC) 3388 5541 w -(is released and becomes idle.) 3575 5541 w +(note) 4174 6570 w +11 /LucidaSansUnicode00 f +(to) 4442 6570 w +(be) 4587 6570 w +(posted) 4755 6570 w +(to) 5156 6570 w +(the) 5301 6570 w +(process, is the) 720 6700 w +(process transferred to the) 1530 6700 w +(TC) 2955 6700 w +(\(usually to be) 3135 6700 w +(killed\).) 3889 6700 w +(When) 970 6866 w +(an) 1304 6866 w +(AP) 1474 6866 w +(makes) 1652 6866 w +(a) 2038 6866 w +(system) 2140 6866 w +(call,) 2555 6866 w +(the) 2812 6866 w +(kernel) 3024 6866 w +(handler) 3398 6866 w +(in) 3844 6866 w +(the) 3985 6866 w +(AP) 4198 6866 w +(returns) 4377 6866 w +(control) 4804 6866 w +(back) 5222 6866 w +(to) 720 6996 w +(the) 867 6996 w +(TC) 1077 6996 w +(in) 1261 6996 w +(the) 1400 6996 w +(same) 1610 6996 w +(way) 1930 6996 w +(it) 2171 6996 w +(is) 2282 6996 w +(done) 2408 6996 w +(for) 2712 6996 w +(faults,) 2903 6996 w +(by) 3275 6996 w +(completing) 3439 6996 w +(the) 4074 6996 w +(ICC.) 4283 6996 w +(The) 4575 6996 w +(handler) 4812 6996 w +(pro\255) 5255 6996 w +(cess) 720 7126 w +(in) 989 7126 w +(the) 1128 7126 w +(TC) 1338 7126 w +(serves) 1522 7126 w +(the) 1899 7126 w +(system) 2109 7126 w +(call) 2522 7126 w +(and) 2742 7126 w +(then) 2979 7126 w +(transfers) 3257 7126 w +(control) 3771 7126 w +(back) 4186 7126 w +(to) 4475 7126 w +(the) 4622 7126 w +(AC,) 4832 7126 w +(by) 5058 7126 w +(issu\255) 5224 7126 w +(ing) 720 7256 w +(a) 939 7256 w +(new) 1051 7256 w +(ICC) 1317 7256 w +(to) 1552 7256 w +(let) 1711 7256 w +(the) 1897 7256 w +(process) 2119 7256 w +(continue) 2581 7256 w +(its) 3094 7256 w +(execution) 3274 7256 w +(after) 3848 7256 w +(returning) 4149 7256 w +(to) 4697 7256 w +(user) 4856 7256 w +(mode.) 5137 7256 w cleartomark showpage saveobj restore @@ -4959,550 +5178,478 @@ /saveobj save def mark 9 pagesetup -2376 1930 2376 1570 Dl -2376 1570 2916 1570 Dl -2916 1570 2916 1930 Dl -2916 1930 2376 1930 Dl -11 /LucidaSansUnicode00 f -(runacore) 2410 1772 w +2376 2014 2376 1654 Dl +2376 1654 2916 1654 Dl +2916 1654 2916 2014 Dl +2916 2014 2376 2014 Dl +11 /LucidaSansUnicode00 f +(runacore) 2410 1856 w 8 /LucidaSansUnicode00 f -(.) 2905 1753 w -(.) 2941 1753 w -(.) 2977 1753 w -(.) 3013 1753 w -(.) 3049 1753 w -(.) 3085 1753 w -(.) 3121 1753 w -(.) 3157 1753 w -(.) 3193 1753 w -(.) 3229 1753 w -(.) 3265 1753 w -3204 1768 3276 1750 Dl -3204 1732 3276 1750 Dl -3276 1930 3276 1570 Dl -3276 1570 3816 1570 Dl -3816 1570 3816 1930 Dl -3816 1930 3276 1930 Dl -11 /LucidaSansUnicode00 f -(actrapret) 3306 1772 w -3546 1570 3546 1210 Dl -3564 1282 3546 1210 Dl -3528 1282 3546 1210 Dl -3276 1210 3276 850 Dl -3276 850 3816 850 Dl -3816 850 3816 1210 Dl -3816 1210 3276 1210 Dl -(user code) 3286 1052 w -2664 2002 2646 1930 Dl -2628 2002 2646 1930 Dl -2646 1930 2646 2290 Dl -2628 2218 2646 2290 Dl -2664 2218 2646 2290 Dl -2376 2650 2376 2290 Dl -2376 2290 2916 2290 Dl -2916 2290 2916 2650 Dl -2916 2650 2376 2650 Dl -(trap\(\)) 2502 2492 w -(Handling) 720 2900 w -(page) 1274 2900 w -(faults) 1609 2900 w -(requires) 1983 2900 w -(the) 2497 2900 w -(handling) 2743 2900 w -(process) 3284 2900 w -(to) 3770 2900 w -(get) 3953 2900 w -(access) 4200 2900 w -(to) 4623 2900 w -(the) 4807 2900 w +(.) 2905 1837 w +(.) 2941 1837 w +(.) 2977 1837 w +(.) 3013 1837 w +(.) 3049 1837 w +(.) 3085 1837 w +(.) 3121 1837 w +(.) 3157 1837 w +(.) 3193 1837 w +(.) 3229 1837 w +(.) 3265 1837 w +3204 1852 3276 1834 Dl +3204 1816 3276 1834 Dl +3276 2014 3276 1654 Dl +3276 1654 3816 1654 Dl +3816 1654 3816 2014 Dl +3816 2014 3276 2014 Dl +11 /LucidaSansUnicode00 f +(actrapret) 3306 1856 w +3546 1654 3546 1294 Dl +3564 1366 3546 1294 Dl +3528 1366 3546 1294 Dl +3276 1294 3276 934 Dl +3276 934 3816 934 Dl +3816 934 3816 1294 Dl +3816 1294 3276 1294 Dl +(user code) 3286 1136 w +2664 2086 2646 2014 Dl +2628 2086 2646 2014 Dl +2646 2014 2646 2374 Dl +2628 2302 2646 2374 Dl +2664 2302 2646 2374 Dl +2376 2734 2376 2374 Dl +2376 2374 2916 2374 Dl +2916 2374 2916 2734 Dl +2916 2734 2376 2734 Dl +(trap\(\)) 2502 2576 w +10 /LucidaSans-Demi f +(Figure 6) 1795 2998 w +10 /LucidaSansUnicode00 f +(Return path for trap handling in AC context) 2281 2998 w +11 /LucidaSansUnicode00 f +(Like) 720 3188 w +(in) 984 3188 w +(traps,) 1132 3188 w +(the) 1487 3188 w +(user) 1706 3188 w +(context) 1985 3188 w +(is) 2435 3188 w +(kept) 2571 3188 w +(in) 2855 3188 w +(the) 3003 3188 w +(the) 3222 3188 w +(handler) 3441 3188 w +(process) 3894 3188 w +(kernel) 4353 3188 w +(stack,) 4734 3188 w +(as) 5096 3188 w +(it) 5262 3188 w +(is) 5384 3188 w +(done) 720 3318 w +(for) 1036 3318 w +(all) 1239 3318 w +(other) 1413 3318 w +(processes.) 1745 3318 w +(In) 2358 3318 w +(particular,) 2507 3318 w +(it) 3101 3318 w +(is) 3223 3318 w +(kept) 3360 3318 w +(within) 3645 3318 w +(the) 4020 3318 w 11 /LucidaSans-Italic f -(faulting) 5054 2900 w -(address) 720 3030 w -11 /LucidaSansUnicode00 f -(,) 1140 3030 w +(Ureg) 4240 3318 w +11 /LucidaSansUnicode00 f +(data) 4543 3318 w +(structure) 4824 3318 w +(as) 5355 3318 w +(found in that) 720 3448 w +(stack.) 1449 3448 w +(The) 970 3614 w +(handler) 1231 3614 w +(process,) 1698 3614 w +(that) 2206 3614 w +(is,) 2479 3614 w +(the) 2664 3614 w +(original) 2898 3614 w +(time-sharing) 3366 3614 w +(process) 4128 3614 w +(when) 4602 3614 w +(executing) 4948 3614 w 11 /LucidaSans-Italic f -(cr2) 1216 3030 w -11 /LucidaSansUnicode00 f -(register) 1433 3030 w -(as) 1884 3030 w -(found) 2041 3030 w -(in) 2394 3030 w -(the) 2534 3030 w -(AC.) 2745 3030 w -(We) 2972 3030 w -(have) 3169 3030 w -(virtualized) 3457 3030 w -(the) 4059 3030 w -(register.) 4270 3030 w -(The) 4756 3030 w -(TC) 4995 3030 w -(saves) 5180 3030 w -(the) 720 3160 w -(hardware) 929 3160 w -(register) 1463 3160 w -(into) 1912 3160 w -(a) 2159 3160 w -(software) 2259 3160 w -(copy,) 2756 3160 w -(kept) 3079 3160 w -(in) 3354 3160 w -(the) 3493 3160 w +(runacore) 720 3744 w +11 /LucidaSansUnicode00 f +(,) 1205 3744 w +(behaves) 1291 3744 w +(like) 1777 3744 w +(the) 2018 3744 w +(red) 2240 3744 w +(line) 2467 3744 w +(separating) 2712 3744 w +(the) 3326 3744 w +(user) 3548 3744 w +(code) 3830 3744 w +(\(now) 4135 3744 w +(in) 4442 3744 w +(the) 4593 3744 w +(AC\)) 4815 3744 w +(and) 5053 3744 w +(the) 5301 3744 w +(kernel) 720 3874 w +(code) 1095 3874 w +(\(run) 1391 3874 w +(in) 1650 3874 w +(the) 1792 3874 w +(TC\).) 2005 3874 w +(It) 2264 3874 w +(is) 2380 3874 w +(feasible) 2511 3874 w +(to) 2969 3874 w +(bring) 3120 3874 w +(the) 3445 3874 w +(process) 3659 3874 w +(back) 4113 3874 w +(to) 4406 3874 w +(the) 4557 3874 w +(TC,) 4771 3874 w +(as) 4994 3874 w +(it) 5154 3874 w +(was) 5270 3874 w +(before) 720 4004 w +(calling) 1110 4004 w 11 /LucidaSans-Italic f -(Mach) 3703 3160 w -11 /LucidaSansUnicode00 f -(structure.) 4023 3160 w -(The) 4579 3160 w -(AC) 4817 3160 w -(does) 5008 3160 w -(the) 5301 3160 w -(same.) 720 3290 w -(The) 1077 3290 w -(function) 1317 3290 w +(execac) 1503 4004 w +11 /LucidaSansUnicode00 f +(.) 1855 4004 w +(To) 1969 4004 w +(do) 2149 4004 w +(so,) 2329 4004 w 11 /LucidaSans-Italic f -(runacore) 1799 3290 w -11 /LucidaSansUnicode00 f -(updates) 2325 3290 w -(the) 2792 3290 w -(TC) 3004 3290 w -(software) 3190 3290 w -(cr2) 3689 3290 w -(with) 3900 3290 w -(the) 4167 3290 w -(one) 4379 3290 w -(found) 4616 3290 w -(in) 4969 3290 w -(the) 5109 3290 w -(AC) 5320 3290 w -(before) 720 3420 w -(calling) 1101 3420 w +(runacore) 2531 4004 w +11 /LucidaSansUnicode00 f +(returns) 3060 4004 w +(and,) 3489 4004 w +(only) 3766 4004 w +(this) 4034 4004 w +(case,) 4275 4004 w +(both) 4589 4004 w 11 /LucidaSans-Italic f -(trap) 1485 3420 w -11 /LucidaSansUnicode00 f -(, so that) 1714 3420 w -(trap handling code) 2188 3420 w -(does not) 3229 3420 w -(need to) 3729 3420 w -(know) 4169 3420 w -(which) 4489 3420 w -(core) 4834 3420 w -(caused) 5100 3420 w -(the) 720 3550 w -(fault.) 926 3550 w -(Floating) 970 3716 w -(point) 1441 3716 w -(traps) 1762 3716 w -(are) 2078 3716 w -(handled) 2290 3716 w -(directly) 2763 3716 w -(in) 3201 3716 w -(the) 3345 3716 w -(AC,) 3560 3716 w -(instead) 3791 3716 w -(of) 4224 3716 w -(dispatching) 4376 3716 w -(the) 5040 3716 w -(pro\255) 5255 3716 w -(cess) 720 3846 w -(to) 988 3846 w -(the) 1133 3846 w -(TC;) 1341 3846 w -(for) 1558 3846 w -(efficiency.) 1748 3846 w -(Only) 2327 3846 w -(when) 2607 3846 w -(they) 2927 3846 w -(cause) 3192 3846 w -(an) 3532 3846 w -(event) 3698 3846 w -(or) 4025 3846 w +(execac) 4878 4004 w +11 /LucidaSansUnicode00 f +(and) 5274 4004 w 11 /LucidaSans-Italic f -(note) 4174 3846 w -11 /LucidaSansUnicode00 f -(to) 4442 3846 w -(be) 4587 3846 w -(posted) 4755 3846 w -(to) 5156 3846 w -(the) 5301 3846 w -(process, is the) 720 3976 w -(process transferred to the) 1530 3976 w -(TC) 2955 3976 w -(\(usually to be) 3135 3976 w -(killed\).) 3889 3976 w -(When) 970 4142 w -(an) 1304 4142 w -(AP) 1474 4142 w -(makes) 1652 4142 w -(a) 2038 4142 w -(system) 2140 4142 w -(call,) 2555 4142 w -(the) 2812 4142 w -(kernel) 3024 4142 w -(handler) 3398 4142 w -(in) 3844 4142 w -(the) 3985 4142 w -(AP) 4198 4142 w -(returns) 4377 4142 w -(control) 4804 4142 w -(back) 5222 4142 w -(to) 720 4272 w -(the) 867 4272 w -(TC) 1077 4272 w -(in) 1261 4272 w -(the) 1400 4272 w -(same) 1610 4272 w -(way) 1930 4272 w -(it) 2171 4272 w -(is) 2282 4272 w -(done) 2408 4272 w -(for) 2712 4272 w -(faults,) 2903 4272 w -(by) 3275 4272 w -(completing) 3439 4272 w -(the) 4074 4272 w -(ICC.) 4283 4272 w -(The) 4575 4272 w -(handler) 4812 4272 w -(pro\255) 5255 4272 w -(cess) 720 4402 w -(in) 989 4402 w -(the) 1128 4402 w -(TC) 1338 4402 w -(serves) 1522 4402 w -(the) 1899 4402 w -(system) 2109 4402 w -(call) 2522 4402 w -(and) 2742 4402 w -(then) 2979 4402 w -(transfers) 3257 4402 w -(control) 3771 4402 w -(back) 4186 4402 w -(to) 4475 4402 w -(the) 4622 4402 w -(AC,) 4832 4402 w -(by) 5058 4402 w -(issu\255) 5224 4402 w -(ing) 720 4532 w -(a) 939 4532 w -(new) 1051 4532 w -(ICC) 1317 4532 w -(to) 1552 4532 w -(let) 1711 4532 w -(the) 1897 4532 w -(process) 2119 4532 w -(continue) 2581 4532 w -(its) 3094 4532 w -(execution) 3274 4532 w -(after) 3848 4532 w -(returning) 4149 4532 w -(to) 4697 4532 w -(user) 4856 4532 w -(mode.) 5137 4532 w -(Like) 720 4662 w -(in) 984 4662 w -(traps,) 1132 4662 w -(the) 1487 4662 w -(user) 1706 4662 w -(context) 1985 4662 w -(is) 2435 4662 w -(kept) 2571 4662 w -(in) 2855 4662 w -(the) 3003 4662 w -(the) 3222 4662 w -(handler) 3441 4662 w -(process) 3894 4662 w -(kernel) 4353 4662 w -(stack,) 4734 4662 w -(as) 5096 4662 w -(it) 5262 4662 w -(is) 5384 4662 w -(done) 720 4792 w -(for) 1036 4792 w -(all) 1239 4792 w -(other) 1413 4792 w -(processes.) 1745 4792 w -(In) 2358 4792 w -(particular,) 2507 4792 w -(it) 3101 4792 w -(is) 3223 4792 w -(kept) 3360 4792 w -(within) 3645 4792 w -(the) 4020 4792 w +(syscall) 720 4134 w +11 /LucidaSansUnicode00 f +(are) 1115 4134 w +(careful) 1323 4134 w +(not) 1728 4134 w +(do) 1944 4134 w +(anything) 2120 4134 w +(but) 2623 4134 w +(returning) 2841 4134 w +(to) 3378 4134 w +(the) 3526 4134 w +(caller.) 3738 4134 w +(The) 4102 4134 w +(reason) 4342 4134 w +(is) 4742 4134 w +(that) 4871 4134 w +(calling) 5123 4134 w 11 /LucidaSans-Italic f -(Ureg) 4240 4792 w -11 /LucidaSansUnicode00 f -(data) 4543 4792 w -(structure) 4824 4792 w -(as) 5355 4792 w -(found in that) 720 4922 w -(stack.) 1449 4922 w -(The) 970 5088 w -(handler) 1231 5088 w -(process,) 1698 5088 w -(that) 2206 5088 w -(is,) 2479 5088 w -(the) 2664 5088 w -(original) 2898 5088 w -(time-sharing) 3366 5088 w -(process) 4128 5088 w -(when) 4602 5088 w -(executing) 4948 5088 w +(runacore) 720 4264 w +11 /LucidaSansUnicode00 f +(was) 1260 4264 w +(like) 1517 4264 w +(returning) 1762 4264 w +(from) 2314 4264 w 11 /LucidaSans-Italic f -(runacore) 720 5218 w -11 /LucidaSansUnicode00 f -(,) 1205 5218 w -(behaves) 1291 5218 w -(like) 1777 5218 w -(the) 2018 5218 w -(red) 2240 5218 w -(line) 2467 5218 w -(separating) 2712 5218 w -(the) 3326 5218 w -(user) 3548 5218 w -(code) 3830 5218 w -(\(now) 4135 5218 w -(in) 4442 5218 w -(the) 4593 5218 w -(AC\)) 4815 5218 w -(and) 5053 5218 w -(the) 5301 5218 w -(kernel) 720 5348 w -(code) 1095 5348 w -(\(run) 1391 5348 w -(in) 1650 5348 w -(the) 1792 5348 w -(TC\).) 2005 5348 w -(It) 2264 5348 w -(is) 2380 5348 w -(feasible) 2511 5348 w -(to) 2969 5348 w -(bring) 3120 5348 w -(the) 3445 5348 w -(process) 3659 5348 w -(back) 4113 5348 w -(to) 4406 5348 w -(the) 4557 5348 w -(TC,) 4771 5348 w -(as) 4994 5348 w -(it) 5154 5348 w -(was) 5270 5348 w -(before) 720 5478 w -(calling) 1110 5478 w +(exec) 2624 4264 w +11 /LucidaSansUnicode00 f +(or) 2909 4264 w 11 /LucidaSans-Italic f -(execac) 1503 5478 w -11 /LucidaSansUnicode00 f -(.) 1855 5478 w -(To) 1969 5478 w -(do) 2149 5478 w -(so,) 2329 5478 w +(rfork) 3076 4264 w +11 /LucidaSansUnicode00 f +(to) 3406 4264 w +(user) 3569 4264 w +(code) 3855 4264 w +(\(only) 4163 4264 w +(that) 4477 4264 w +(in) 4742 4264 w +(a) 4896 4264 w +(different) 5011 4264 w +(core\).) 720 4394 w +(All) 1082 4394 w +(book-keeping) 1283 4394 w +(to) 2100 4394 w +(be) 2269 4394 w +(done) 2461 4394 w +(while) 2788 4394 w +(returning,) 3129 4394 w +(was) 3723 4394 w +(already) 3987 4394 w +(done) 4436 4394 w +(by) 4764 4394 w 11 /LucidaSans-Italic f -(runacore) 2531 5478 w -11 /LucidaSansUnicode00 f -(returns) 3060 5478 w -(and,) 3489 5478 w -(only) 3766 5478 w -(this) 4034 5478 w -(case,) 4275 5478 w -(both) 4589 5478 w +(runacore) 4952 4394 w +11 /LucidaSansUnicode00 f +(.) 5437 4394 w +(Also,) 720 4524 w +(because) 1027 4524 w +(the) 1502 4524 w 11 /LucidaSans-Italic f -(execac) 4878 5478 w -11 /LucidaSansUnicode00 f -(and) 5274 5478 w +(Ureg) 1714 4524 w +11 /LucidaSansUnicode00 f +(in) 2008 4524 w +(the) 2148 4524 w +(bottom) 2359 4524 w +(of) 2786 4524 w +(the) 2934 4524 w +(kernel) 3145 4524 w +(stack) 3518 4524 w +(for) 3836 4524 w +(the) 4029 4524 w +(process) 4240 4524 w +(has) 4691 4524 w +(been) 4916 4524 w +(used) 5217 4524 w +(as) 720 4654 w +(the) 887 4654 w +(place) 1108 4654 w +(to) 1438 4654 w +(keep) 1597 4654 w +(the) 1905 4654 w +(user) 2127 4654 w +(context,) 2409 4654 w +(the) 2897 4654 w +(code) 3119 4654 w +(executed) 3424 4654 w +(after) 3962 4654 w +(returning) 4263 4654 w +(from) 4811 4654 w 11 /LucidaSans-Italic f -(syscall) 720 5608 w -11 /LucidaSansUnicode00 f -(are) 1115 5608 w -(careful) 1323 5608 w -(not) 1728 5608 w -(do) 1944 5608 w -(anything) 2120 5608 w -(but) 2623 5608 w -(returning) 2841 5608 w -(to) 3378 5608 w -(the) 3526 5608 w -(caller.) 3738 5608 w -(The) 4102 5608 w -(reason) 4342 5608 w -(is) 4742 5608 w -(that) 4871 5608 w -(calling) 5123 5608 w +(syscall) 5117 4654 w +11 /LucidaSansUnicode00 f +(would) 720 4784 w +(restore) 1082 4784 w +(the) 1500 4784 w +(user) 1711 4784 w +(context) 1982 4784 w +(as) 2424 4784 w +(it) 2581 4784 w +(was) 2694 4784 w +(when) 2936 4784 w +(the) 3259 4784 w +(process) 3470 4784 w +(left) 3921 4784 w +(the) 4137 4784 w +(AC) 4348 4784 w +(to) 4540 4784 w +(go) 4688 4784 w +(back) 4863 4784 w +(to) 5153 4784 w +(the) 5301 4784 w +(TC.) 720 4914 w +(Hardware) 970 5080 w +(interrupts) 1526 5080 w +(are) 2100 5080 w +(all) 2316 5080 w +(routed) 2489 5080 w +(to) 2889 5080 w +(BSP.) 3045 5080 w +(ACs) 3347 5080 w +(should) 3603 5080 w +(not) 4011 5080 w +(take) 4235 5080 w +(any) 4511 5080 w +(interrupts,) 4745 5080 w +(as) 5355 5080 w +(they) 720 5210 w +(cause) 986 5210 w +(jitter.) 1327 5210 w +(We) 1689 5210 w +(changed) 1884 5210 w +(the) 2374 5210 w +(round-robin) 2583 5210 w +(allocation) 3283 5210 w +(code) 3838 5210 w +(to) 4129 5210 w +(find) 4274 5210 w +(the) 4521 5210 w +(first) 4729 5210 w +(core) 4981 5210 w +(able) 5248 5210 w +(to) 720 5340 w +(take) 869 5340 w +(interrupts) 1138 5340 w +(and) 1706 5340 w +(route) 1945 5340 w +(all) 2269 5340 w +(to) 2435 5340 w +(that.) 2584 5340 w +(We) 2906 5340 w +(assume) 3104 5340 w +(that) 3550 5340 w +(first) 3802 5340 w +(core) 4058 5340 w +(is) 4329 5340 w +(the) 4458 5340 w +(BSP.) 4671 5340 w +(\(Note) 4932 5340 w +(that) 5261 5340 w +(is) 720 5470 w +(still) 868 5470 w +(feasible) 1121 5470 w +(to) 1596 5470 w +(route) 1764 5470 w +(interrupts) 2107 5470 w +(to) 2694 5470 w +(other) 2861 5470 w +(TCs) 3203 5470 w +(or) 3463 5470 w +(KCs,) 3634 5470 w +(and) 3932 5470 w +(we) 4189 5470 w +(might) 4395 5470 w +(do) 4765 5470 w +(so) 4960 5470 w +(in) 5142 5470 w +(the) 5301 5470 w +(future\).) 720 5600 w +(Also,) 1209 5600 w +(no) 1533 5600 w +(APIC) 1727 5600 w +(timer) 2031 5600 w +(interrupts) 2372 5600 w +(are) 2958 5600 w +(enabled) 3185 5600 w +(on) 3667 5600 w +(ACs.) 3861 5600 w +(User) 4198 5600 w +(code) 4496 5600 w +(in) 4809 5600 w +(ACs) 4968 5600 w +(runs) 5235 5600 w +(undisturbed, until) 720 5730 w +(it) 1713 5730 w +(faults or makes a) 1821 5730 w +(system call.) 2778 5730 w +(The) 970 5896 w +(AC) 1228 5896 w +(requires) 1439 5896 w +(a) 1937 5896 w +(few) 2057 5896 w +(new) 2304 5896 w +(assembler) 2578 5896 w +(routines) 3182 5896 w +(to) 3680 5896 w +(transfer) 3847 5896 w +(control) 4325 5896 w +(to/from) 4760 5896 w +(user) 5241 5896 w +(space,) 720 6026 w +(while) 1095 6026 w +(using) 1410 6026 w +(the) 1738 6026 w +(standard) 1945 6026 w 11 /LucidaSans-Italic f -(runacore) 720 5738 w -11 /LucidaSansUnicode00 f -(was) 1260 5738 w -(like) 1517 5738 w -(returning) 1762 5738 w -(from) 2314 5738 w +(Ureg) 2451 6026 w +11 /LucidaSansUnicode00 f +(space) 2741 6026 w +(in the) 3080 6026 w +(bottom of) 3421 6026 w +(the) 3986 6026 w +(process kernel) 4192 6026 w +(stack) 5006 6026 w +(for) 5319 6026 w +(saving) 720 6156 w +(and) 1121 6156 w +(restoring) 1378 6156 w +(process) 1921 6156 w +(context.) 2391 6156 w +(The) 2887 6156 w +(process) 3145 6156 w +(kernel) 3615 6156 w +(stack) 4008 6156 w +(is) 4346 6156 w +(not) 4494 6156 w +(used) 4730 6156 w +(\(but) 5045 6156 w +(for) 5319 6156 w +(keeping) 720 6286 w +(the) 1201 6286 w 11 /LucidaSans-Italic f -(exec) 2624 5738 w -11 /LucidaSansUnicode00 f -(or) 2909 5738 w +(Ureg) 1428 6286 w +11 /LucidaSansUnicode00 f +(\)) 1682 6286 w +(while) 1774 6286 w +(in) 2109 6286 w +(the) 2264 6286 w +(ACs;) 2490 6286 w +(instead,) 2788 6286 w +(the) 3267 6286 w +(per-core) 3493 6286 w +(stack,) 4018 6286 w +(known) 4386 6286 w +(as) 4793 6286 w +(the) 4965 6286 w 11 /LucidaSans-Italic f -(rfork) 3076 5738 w -11 /LucidaSansUnicode00 f -(to) 3406 5738 w -(user) 3569 5738 w -(code) 3855 5738 w -(\(only) 4163 5738 w -(that) 4477 5738 w -(in) 4742 5738 w -(a) 4896 5738 w -(different) 5011 5738 w -(core\).) 720 5868 w -(All) 1082 5868 w -(book-keeping) 1283 5868 w -(to) 2100 5868 w -(be) 2269 5868 w -(done) 2461 5868 w -(while) 2788 5868 w -(returning,) 3129 5868 w -(was) 3723 5868 w -(already) 3987 5868 w -(done) 4436 5868 w -(by) 4764 5868 w -11 /LucidaSans-Italic f -(runacore) 4952 5868 w -11 /LucidaSansUnicode00 f -(.) 5437 5868 w -(Also,) 720 5998 w -(because) 1027 5998 w -(the) 1502 5998 w -11 /LucidaSans-Italic f -(Ureg) 1714 5998 w -11 /LucidaSansUnicode00 f -(in) 2008 5998 w -(the) 2148 5998 w -(bottom) 2359 5998 w -(of) 2786 5998 w -(the) 2934 5998 w -(kernel) 3145 5998 w -(stack) 3518 5998 w -(for) 3836 5998 w -(the) 4029 5998 w -(process) 4240 5998 w -(has) 4691 5998 w -(been) 4916 5998 w -(used) 5217 5998 w -(as) 720 6128 w -(the) 887 6128 w -(place) 1108 6128 w -(to) 1438 6128 w -(keep) 1597 6128 w -(the) 1905 6128 w -(user) 2127 6128 w -(context,) 2409 6128 w -(the) 2897 6128 w -(code) 3119 6128 w -(executed) 3424 6128 w -(after) 3962 6128 w -(returning) 4263 6128 w -(from) 4811 6128 w -11 /LucidaSans-Italic f -(syscall) 5117 6128 w -11 /LucidaSansUnicode00 f -(would) 720 6258 w -(restore) 1082 6258 w -(the) 1500 6258 w -(user) 1711 6258 w -(context) 1982 6258 w -(as) 2424 6258 w -(it) 2581 6258 w -(was) 2694 6258 w -(when) 2936 6258 w -(the) 3259 6258 w -(process) 3470 6258 w -(left) 3921 6258 w -(the) 4137 6258 w -(AC) 4348 6258 w -(to) 4540 6258 w -(go) 4688 6258 w -(back) 4863 6258 w -(to) 5153 6258 w -(the) 5301 6258 w -(TC.) 720 6388 w -(Hardware) 970 6554 w -(interrupts) 1526 6554 w -(are) 2100 6554 w -(all) 2316 6554 w -(routed) 2489 6554 w -(to) 2889 6554 w -(BSP.) 3045 6554 w -(ACs) 3347 6554 w -(should) 3603 6554 w -(not) 4011 6554 w -(take) 4235 6554 w -(any) 4511 6554 w -(interrupts,) 4745 6554 w -(as) 5355 6554 w -(they) 720 6684 w -(cause) 986 6684 w -(jitter.) 1327 6684 w -(We) 1689 6684 w -(changed) 1884 6684 w -(the) 2374 6684 w -(round-robin) 2583 6684 w -(allocation) 3283 6684 w -(code) 3838 6684 w -(to) 4129 6684 w -(find) 4274 6684 w -(the) 4521 6684 w -(first) 4729 6684 w -(core) 4981 6684 w -(able) 5248 6684 w -(to) 720 6814 w -(take) 869 6814 w -(interrupts) 1138 6814 w -(and) 1706 6814 w -(route) 1945 6814 w -(all) 2269 6814 w -(to) 2435 6814 w -(that.) 2584 6814 w -(We) 2906 6814 w -(assume) 3104 6814 w -(that) 3550 6814 w -(first) 3802 6814 w -(core) 4058 6814 w -(is) 4329 6814 w -(the) 4458 6814 w -(BSP.) 4671 6814 w -(\(Note) 4932 6814 w -(that) 5261 6814 w -(is) 720 6944 w -(still) 868 6944 w -(feasible) 1121 6944 w -(to) 1596 6944 w -(route) 1764 6944 w -(interrupts) 2107 6944 w -(to) 2694 6944 w -(other) 2861 6944 w -(TCs) 3203 6944 w -(or) 3463 6944 w -(KCs,) 3634 6944 w -(and) 3932 6944 w -(we) 4189 6944 w -(might) 4395 6944 w -(do) 4765 6944 w -(so) 4960 6944 w -(in) 5142 6944 w -(the) 5301 6944 w -(future\).) 720 7074 w -(Also,) 1209 7074 w -(no) 1533 7074 w -(APIC) 1727 7074 w -(timer) 2031 7074 w -(interrupts) 2372 7074 w -(are) 2958 7074 w -(enabled) 3185 7074 w -(on) 3667 7074 w -(ACs.) 3861 7074 w -(User) 4198 7074 w -(code) 4496 7074 w -(in) 4809 7074 w -(ACs) 4968 7074 w -(runs) 5235 7074 w -(undisturbed, until) 720 7204 w -(it) 1713 7204 w -(faults or makes a) 1821 7204 w -(system call.) 2778 7204 w +(Mach) 5191 6286 w +11 /LucidaSansUnicode00 f +(stack, is used for the) 720 6416 w +(few) 1875 6416 w +(kernel) 2098 6416 w +(routines executed in the) 2466 6416 w +(AC.) 3803 6416 w +(Because) 970 6582 w +(the) 1441 6582 w +(instructions) 1654 6582 w +(used) 2326 6582 w +(to) 2623 6582 w +(enter) 2773 6582 w +(the) 3093 6582 w +(kernel,) 3306 6582 w +(and) 3716 6582 w +(the) 3956 6582 w +(sequence,) 4170 6582 w +(is) 4751 6582 w +(exactly) 4882 6582 w +(the) 5301 6582 w +(same) 720 6712 w +(in) 1040 6712 w +(both) 1179 6712 w +(the) 1463 6712 w +(TC) 1673 6712 w +(and) 1857 6712 w +(the) 2094 6712 w +(AC,) 2304 6712 w +(no) 2530 6712 w +(change) 2704 6712 w +(is) 3126 6712 w +(needed) 3253 6712 w +(in) 3684 6712 w +(the) 3823 6712 w +(C) 4032 6712 w +(library) 4146 6712 w +(\(other) 4525 6712 w +(than) 4882 6712 w +(a) 5158 6712 w +(new) 5257 6712 w +(system) 720 6842 w +(for) 1143 6842 w +(using) 1345 6842 w +(the) 1686 6842 w +(new) 1906 6842 w +(service\).) 2170 6842 w +(All) 2660 6842 w +(system) 2849 6842 w +(calls) 3272 6842 w +(may) 3558 6842 w +(proceed,) 3827 6842 w +(transparently) 4342 6842 w +(for) 5098 6842 w +(the) 5301 6842 w +(user, in both kinds of) 720 6972 w +(cores.) 1903 6972 w cleartomark showpage saveobj restore @@ -5511,575 +5658,566 @@ /saveobj save def mark 10 pagesetup -11 /LucidaSansUnicode00 f -(The) 970 850 w -(AC) 1228 850 w -(requires) 1439 850 w -(a) 1937 850 w -(few) 2057 850 w -(new) 2304 850 w -(assembler) 2578 850 w -(routines) 3182 850 w -(to) 3680 850 w -(transfer) 3847 850 w -(control) 4325 850 w -(to/from) 4760 850 w -(user) 5241 850 w -(space,) 720 980 w -(while) 1095 980 w -(using) 1410 980 w -(the) 1738 980 w -(standard) 1945 980 w +11 /LucidaSans-Demi f +(7.) 720 850 w +(Queue) 888 850 w +(based) 1289 850 w +(system) 1663 850 w +(calls?) 2105 850 w +11 /LucidaSansUnicode00 f +(As) 720 1016 w +(an) 894 1016 w +(experiment,) 1065 1016 w +(we) 1752 1016 w +(implemented) 1941 1016 w +(a) 2685 1016 w +(small) 2789 1016 w +(thread) 3115 1016 w +(library) 3504 1016 w +(supporting) 3888 1016 w +(queue-based) 4514 1016 w +(sys\255) 5267 1016 w +(tem) 720 1146 w +(calls) 965 1146 w +(similar) 1242 1146 w +(to) 1642 1146 w +(those) 1790 1146 w +(in) 2124 1146 w +([5].) 2264 1146 w +(Threads) 2480 1146 w +(are) 2950 1146 w +(cooperatively) 3158 1146 w +(scheduled) 3905 1146 w +(within) 4486 1146 w +(the) 4851 1146 w +(process) 5061 1146 w +(and not) 720 1276 w +(known to the) 1164 1276 w +(kernel.) 1900 1276 w +(Each) 970 1442 w +(process) 1288 1442 w +(has) 1773 1442 w +(been) 2032 1442 w +(provided) 2367 1442 w +(with) 2911 1442 w +(two) 3211 1442 w +(queues:) 3478 1442 w +(one) 3972 1442 w +(to) 4243 1442 w +(record) 4425 1442 w +(system) 4843 1442 w +(call) 5291 1442 w +(requests,) 720 1572 w +(and) 1255 1572 w +(another) 1494 1572 w +(to) 1947 1572 w +(record) 2096 1572 w +(system) 2481 1572 w +(call) 2896 1572 w +(replies.) 3118 1572 w +(When) 3551 1572 w +(a) 3884 1572 w +(thread) 3985 1572 w +(issues) 4371 1572 w +(a) 4741 1572 w +(system) 4842 1572 w +(call,) 5256 1572 w +(it) 720 1702 w +(fills) 837 1702 w +(up) 1074 1702 w +(an) 1255 1702 w +(slot) 1428 1702 w +(in) 1668 1702 w +(the) 1812 1702 w +(system) 2027 1702 w +(call) 2445 1702 w +(queue,) 2670 1702 w +(instead) 3078 1702 w +(of) 3511 1702 w +(making) 3663 1702 w +(an) 4102 1702 w +(actual) 4276 1702 w +(system) 4640 1702 w +(call.) 5059 1702 w +(At) 5355 1702 w +(that) 720 1832 w +(point,) 967 1832 w +(the) 1315 1832 w +(thread) 1522 1832 w +(library) 1904 1832 w +(marks) 2281 1832 w +(the) 2645 1832 w +(thread as blocked and proceeds to execute) 2852 1832 w +(other) 5189 1832 w +(threads.) 720 1962 w +(When) 1214 1962 w +(all) 1564 1962 w +(the) 1746 1962 w +(threads) 1974 1962 w +(are) 2433 1962 w +(blocked,) 2658 1962 w +(the) 3169 1962 w +(process) 3397 1962 w +(waits) 3865 1962 w +(for) 4197 1962 w +(replies) 4407 1962 w +(in) 4822 1962 w +(the) 4979 1962 w +(reply) 5207 1962 w +(queue.) 720 2092 w +(Before) 970 2258 w +(using) 1352 2258 w +(the) 1685 2258 w +(queue) 1897 2258 w +(mechanism,) 2268 2258 w +(the) 2952 2258 w +(process) 3165 2258 w +(issues) 3618 2258 w +(a) 3990 2258 w +(real) 4093 2258 w +(system) 4335 2258 w +(call) 4751 2258 w +(to) 4974 2258 w +(let) 5124 2258 w +(the) 5301 2258 w +(kernel) 720 2388 w +(know.) 1104 2388 w +(In) 1474 2388 w +(response) 1625 2388 w +(to) 2161 2388 w +(this) 2320 2388 w +(call,) 2568 2388 w +(the) 2835 2388 w +(kernel) 3056 2388 w +(creates) 3439 2388 w +(a) 3872 2388 w +(\(kernel\)) 3983 2388 w +(process) 4438 2388 w +(sharing) 4899 2388 w +(all) 5347 2388 w +(segments) 720 2518 w +(with) 1281 2518 w +(the) 1553 2518 w +(caller.) 1770 2518 w +(This) 2139 2518 w +(process) 2410 2518 w +(is) 2867 2518 w +(responsible) 3001 2518 w +(for) 3665 2518 w +(executing) 3864 2518 w +(the) 4435 2518 w +(queued) 4653 2518 w +(system) 5098 2518 w +(calls and placing replies for them in the) 720 2648 w +(reply queue.) 2876 2648 w +(With) 970 2814 w +(this) 1245 2814 w +(implementation,) 1481 2814 w +(we) 2394 2814 w +(made) 2580 2814 w +(several) 2913 2814 w +(performance) 3327 2814 w +(measurements) 4044 2814 w +(before) 4869 2814 w +(pro\255) 5255 2814 w +(ceeding) 720 2944 w +(further.) 1192 2944 w +(In) 1652 2944 w +(particular,) 1807 2944 w +(we) 2407 2944 w +(measured) 2609 2944 w +(how) 3189 2944 w +(long) 3464 2944 w +(it) 3754 2944 w +(takes) 3882 2944 w +(for) 4221 2944 w +(a) 4428 2944 w +(program) 4543 2944 w +(with) 5054 2944 w +(50) 5334 2944 w +(threads) 720 3074 w +(to) 1162 3074 w +(execute) 1310 3074 w +(500) 1768 3074 w +(system) 2015 3074 w +(calls) 2429 3074 w +(in) 2706 3074 w +(each) 2846 3074 w +(thread.) 3133 3074 w +(For) 3554 3074 w +(the) 3766 3074 w +(experiment,) 3978 3074 w +(the) 4664 3074 w +(system) 4876 3074 w +(call) 5291 3074 w +(used does not) 720 3204 w +(block) 1510 3204 w +(and does nothing. Table) 1833 3204 w +(1 shows the) 3165 3204 w +(result.) 3842 3204 w +11 /S f +(_) 2108 3328 w +(___________________________________) 2159 3328 w +11 /LucidaSans-Demi f +(Core) 2163 3458 w +(System) 2591 3458 w +(Call) 3033 3458 w +(Queue) 3413 3458 w +(Call) 3814 3458 w +11 /S f +(_) 2108 3478 w +(___________________________________) 2159 3478 w +11 /LucidaSans-Demi f +(TC) 2217 3608 w +11 /LucidaTypewriter f +(0.02s) 2722 3608 w +11 /LucidaSansUnicode00 f +(0.06s) 3572 3608 w +11 /S f +(_) 2108 3628 w +(___________________________________) 2159 3628 w +11 /LucidaSans-Demi f +(AC) 2215 3758 w +11 /LucidaTypewriter f +(0.20s) 2722 3758 w +11 /LucidaSansUnicode00 f +(0.04s) 3572 3758 w +11 /S f +(_) 2108 3778 w +(___________________________________) 2159 3778 w +(\347) 2108 3778 w +(\347) 2108 3768 w +(\347) 2108 3658 w +(\347) 2108 3548 w +(\347) 2108 3438 w +(\347) 2508 3778 w +(\347) 2508 3768 w +(\347) 2508 3658 w +(\347) 2508 3548 w +(\347) 2508 3438 w +(\347) 3330 3778 w +(\347) 3330 3768 w +(\347) 3330 3658 w +(\347) 3330 3548 w +(\347) 3330 3438 w +(\347) 4084 3778 w +(\347) 4084 3768 w +(\347) 4084 3658 w +(\347) 4084 3548 w +(\347) 4084 3438 w +10 /LucidaSans-Demi f +(Table 1) 1314 4023 w +10 /LucidaSansUnicode00 f +(Times) 1760 4023 w +(in) 2098 4023 w +(seconds,) 2235 4023 w +(of) 2709 4023 w +(elapsed) 2854 4023 w +(real) 3274 4023 w +(time,) 3502 4023 w +(for) 3796 4023 w +(a) 3982 4023 w +(series) 4084 4023 w +(of) 4415 4023 w +(syscall) 4560 4023 w +(calls and queue-based system calls from the TC and the AC.) 1314 4143 w +11 /LucidaSansUnicode00 f +(It) 720 4369 w +(takes) 835 4369 w +(this) 1161 4369 w +(program) 1400 4369 w +(0.06) 1899 4369 w +(seconds) 2183 4369 w +(\(of) 2659 4369 w +(elapsed,) 2845 4369 w +(real) 3333 4369 w +(time\)) 3575 4369 w +(to) 3890 4369 w +(complete) 4040 4369 w +(when) 4573 4369 w +(run) 4899 4369 w +(on) 5123 4369 w +(the) 5301 4369 w +(TC) 720 4499 w +(using) 904 4499 w +(the) 1235 4499 w +(queue) 1445 4499 w +(based) 1813 4499 w +(mechanism.) 2169 4499 w +(However,) 2850 4499 w +(it) 3383 4499 w +(takes) 3495 4499 w +(only) 3818 4499 w +(0.02) 4081 4499 w +(seconds) 4362 4499 w +(to) 4835 4499 w +(complete) 4981 4499 w +(when) 720 4629 w +(using) 1051 4629 w +(the) 1392 4629 w +(standard) 1612 4629 w +(system) 2131 4629 w +(call) 2554 4629 w +(mechanism.) 2784 4629 w +(Therefore,) 3475 4629 w +(at) 4080 4629 w +(least) 4231 4629 w +(for) 4532 4629 w +(this) 4734 4629 w +(program,) 4980 4629 w +(the) 720 4759 w +(mechanism) 939 4759 w +(is) 1594 4759 w +(more) 1729 4759 w +(an) 2052 4759 w +(overhead) 2228 4759 w +(than) 2766 4759 w +(a) 3051 4759 w +(benefit) 3159 4759 w +(in) 3581 4759 w +(the) 3728 4759 w +(TC.) 3946 4759 w +(It) 4173 4759 w +(is) 4293 4759 w +(likely) 4428 4759 w +(that) 4754 4759 w +(the) 5012 4759 w +(total) 5230 4759 w +(number) 720 4889 w +(of) 1198 4889 w +(system) 1370 4889 w +(calls) 1808 4889 w +(per) 2109 4889 w +(second) 2349 4889 w +(that) 2791 4889 w +(could) 3066 4889 w +(be) 3423 4889 w +(performed) 3619 4889 w +(in) 4246 4889 w +(the) 4411 4889 w +(machine) 4647 4889 w +(might) 5161 4889 w +(increase) 720 5019 w +(due) 1198 5019 w +(to) 1433 5019 w +(the) 1577 5019 w +(smaller) 1784 5019 w +(number) 2210 5019 w +(of) 2660 5019 w +(domain) 2804 5019 w +(crossings.) 3239 5019 w +(However, for a) 3814 5019 w +(single) 4627 5019 w +(program,) 4980 5019 w +(that) 720 5149 w +(does not) 966 5149 w +(seem to be) 1466 5149 w +(the) 2092 5149 w +(case.) 2298 5149 w +(As) 970 5315 w +(another) 1149 5315 w +(experiment,) 1608 5315 w +(running) 2300 5315 w +(the) 2764 5315 w +(same) 2982 5315 w +(program) 3310 5315 w +(on) 3814 5315 w +(the) 3997 5315 w +(AC) 4216 5315 w +(takes) 4416 5315 w +(0.20) 4748 5315 w +(seconds) 5038 5315 w +(when) 720 5445 w +(using) 1045 5445 w +(the) 1379 5445 w +(standard) 1592 5445 w +(system) 2104 5445 w +(call) 2520 5445 w +(mechanism,) 2742 5445 w +(and) 3425 5445 w +(0.04) 3664 5445 w +(seconds) 3947 5445 w +(when) 4422 5445 w +(using) 4746 5445 w +(queue-) 5079 5445 w +(based) 720 5575 w +(system) 1083 5575 w +(calls.) 1503 5575 w +(The) 1821 5575 w +(AC) 2066 5575 w +(is) 2264 5575 w +(not) 2398 5575 w +(meant) 2620 5575 w +(to) 3000 5575 w +(perform) 3154 5575 w +(system) 3631 5575 w +(calls.) 4052 5575 w +(A) 4406 5575 w +(system) 4529 5575 w +(call) 4950 5575 w +(made) 5178 5575 w +(while) 720 5705 w +(running) 1039 5705 w +(on) 1496 5705 w +(it) 1671 5705 w +(implies) 1784 5705 w +(a) 2209 5705 w +(trip) 2309 5705 w +(to) 2535 5705 w +(the) 2682 5705 w +(TC) 2892 5705 w +(and) 3076 5705 w +(another) 3313 5705 w +(trip) 3764 5705 w +(back) 3990 5705 w +(to) 4279 5705 w +(the) 4426 5705 w +(AC.) 4636 5705 w +(As) 4862 5705 w +(a) 5033 5705 w +(result,) 5133 5705 w +(issuing) 720 5835 w +(system) 1142 5835 w +(calls) 1558 5835 w +(from) 1837 5835 w +(the) 2134 5835 w +(AC) 2347 5835 w +(is) 2541 5835 w +(expensive.) 2671 5835 w +(Looking) 3318 5835 w +(at) 3784 5835 w +(the) 3928 5835 w +(time) 4141 5835 w +(when) 4420 5835 w +(using) 4745 5835 w +(queue-) 5079 5835 w +(based) 720 5965 w +(calls,) 1084 5965 w +(it) 1403 5965 w +(is) 1523 5965 w +(similar) 1658 5965 w +(to) 2065 5965 w +(one) 2220 5965 w +(for) 2464 5965 w +(running) 2664 5965 w +(in) 3128 5965 w +(the) 3274 5965 w +(TC) 3491 5965 w +(\(but) 3682 5965 w +(more) 3942 5965 w +(expensive\).) 4264 5965 w +(Therefore,) 4916 5965 w +(we) 720 6095 w +(may) 907 6095 w +(conclude) 1167 6095 w +(that) 1685 6095 w +(queue) 1936 6095 w +(based) 2305 6095 w +(system) 2662 6095 w +(calls) 3076 6095 w +(may) 3353 6095 w +(make) 3613 6095 w +(system) 3942 6095 w +(calls) 4356 6095 w +(affordable) 4634 6095 w +(even) 5223 6095 w +(for ACs.) 720 6225 w +(However,) 970 6391 w +(a) 1509 6391 w +(more) 1615 6391 w +(simple) 1936 6391 w +(mechanism) 2334 6391 w +(is) 2986 6391 w +(to) 3119 6391 w +(keep) 3273 6391 w +(in) 3576 6391 w +(the) 3722 6391 w +(TC) 3939 6391 w +(those) 4130 6391 w +(processes) 4470 6391 w +(that) 5045 6391 w +(did) 5302 6391 w +(not) 720 6521 w +(consume) 943 6521 w +(all) 1469 6521 w +(its) 1641 6521 w +(quantum) 1816 6521 w +(at) 2339 6521 w +(user) 2487 6521 w +(level,) 2764 6521 w +(and) 3090 6521 w +(move) 3334 6521 w +(to) 3668 6521 w +(ACs) 3822 6521 w +(only) 4076 6521 w +(those) 4346 6521 w +(processes) 4686 6521 w +(that) 5261 6521 w +(do) 720 6651 w +(so.) 901 6651 w +(As) 1104 6651 w +(a) 1281 6651 w +(result,) 1387 6651 w +(we) 1771 6651 w +(have) 1963 6651 w +(decided) 2256 6651 w +(not) 2720 6651 w +(to) 2941 6651 w +(include) 3094 6651 w +(queue) 3526 6651 w +(based) 3900 6651 w +(system) 4262 6651 w +(calls) 4681 6651 w +(\(although) 4963 6651 w +(tubes can still) 720 6781 w +(be) 1499 6781 w +(used for IPC\).) 1665 6781 w +(During) 970 6947 w +(the) 1377 6947 w +(experiment,) 1591 6947 w +(we) 2279 6947 w +(found) 2469 6947 w +(an) 2825 6947 w +(interesting) 2997 6947 w +(bug) 3615 6947 w +(in) 3863 6947 w +(the) 4006 6947 w +(implementation) 4220 6947 w +(of) 5103 6947 w +(NIX.) 5255 6947 w +(Usually,) 720 7077 w +(when) 1188 7077 w +(a) 1522 7077 w +(processor) 1634 7077 w +(has) 2208 7077 w +(no) 2444 7077 w +(ready) 2630 7077 w +(process,) 2975 7077 w +(the) 3472 7077 w +(scheduler) 3694 7077 w +(calls) 4262 7077 w 11 /LucidaSans-Italic f -(Ureg) 2451 980 w -11 /LucidaSansUnicode00 f -(space) 2741 980 w -(in the) 3080 980 w -(bottom of) 3421 980 w -(the) 3986 980 w -(process kernel) 4192 980 w -(stack) 5006 980 w -(for) 5319 980 w -(saving) 720 1110 w -(and) 1121 1110 w -(restoring) 1378 1110 w -(process) 1921 1110 w -(context.) 2391 1110 w -(The) 2887 1110 w -(process) 3145 1110 w -(kernel) 3615 1110 w -(stack) 4008 1110 w -(is) 4346 1110 w -(not) 4494 1110 w -(used) 4730 1110 w -(\(but) 5045 1110 w -(for) 5319 1110 w -(keeping) 720 1240 w -(the) 1201 1240 w -11 /LucidaSans-Italic f -(Ureg) 1428 1240 w -11 /LucidaSansUnicode00 f -(\)) 1682 1240 w -(while) 1774 1240 w -(in) 2109 1240 w -(the) 2264 1240 w -(ACs;) 2490 1240 w -(instead,) 2788 1240 w -(the) 3267 1240 w -(per-core) 3493 1240 w -(stack,) 4018 1240 w -(known) 4386 1240 w -(as) 4793 1240 w -(the) 4965 1240 w -11 /LucidaSans-Italic f -(Mach) 5191 1240 w -11 /LucidaSansUnicode00 f -(stack, is used for the) 720 1370 w -(few) 1875 1370 w -(kernel) 2098 1370 w -(routines executed in the) 2466 1370 w -(AC.) 3803 1370 w -(Because) 970 1536 w -(the) 1441 1536 w -(instructions) 1654 1536 w -(used) 2326 1536 w -(to) 2623 1536 w -(enter) 2773 1536 w -(the) 3093 1536 w -(kernel,) 3306 1536 w -(and) 3716 1536 w -(the) 3956 1536 w -(sequence,) 4170 1536 w -(is) 4751 1536 w -(exactly) 4882 1536 w -(the) 5301 1536 w -(same) 720 1666 w -(in) 1040 1666 w -(both) 1179 1666 w -(the) 1463 1666 w -(TC) 1673 1666 w -(and) 1857 1666 w -(the) 2094 1666 w -(AC,) 2304 1666 w -(no) 2530 1666 w -(change) 2704 1666 w -(is) 3126 1666 w -(needed) 3253 1666 w -(in) 3684 1666 w -(the) 3823 1666 w -(C) 4032 1666 w -(library) 4146 1666 w -(\(other) 4525 1666 w -(than) 4882 1666 w -(a) 5158 1666 w -(new) 5257 1666 w -(system) 720 1796 w -(for) 1143 1796 w -(using) 1345 1796 w -(the) 1686 1796 w -(new) 1906 1796 w -(service\).) 2170 1796 w -(All) 2660 1796 w -(system) 2849 1796 w -(calls) 3272 1796 w -(may) 3558 1796 w -(proceed,) 3827 1796 w -(transparently) 4342 1796 w -(for) 5098 1796 w -(the) 5301 1796 w -(user, in both kinds of) 720 1926 w -(cores.) 1903 1926 w -11 /LucidaSans-Demi f -(7.) 720 2186 w -(Queue) 888 2186 w -(based) 1289 2186 w -(system) 1663 2186 w -(calls?) 2105 2186 w -11 /LucidaSansUnicode00 f -(As) 720 2352 w -(an) 894 2352 w -(experiment,) 1065 2352 w -(we) 1752 2352 w -(implemented) 1941 2352 w -(a) 2685 2352 w -(small) 2789 2352 w -(thread) 3115 2352 w -(library) 3504 2352 w -(supporting) 3888 2352 w -(queue-based) 4514 2352 w -(sys\255) 5267 2352 w -(tem) 720 2482 w -(calls) 965 2482 w -(similar) 1242 2482 w -(to) 1642 2482 w -(those) 1790 2482 w -(in) 2124 2482 w -([5].) 2264 2482 w -(Threads) 2480 2482 w -(are) 2950 2482 w -(cooperatively) 3158 2482 w -(scheduled) 3905 2482 w -(within) 4486 2482 w -(the) 4851 2482 w -(process) 5061 2482 w -(and not) 720 2612 w -(known to the) 1164 2612 w -(kernel.) 1900 2612 w -(Each) 970 2778 w -(process) 1288 2778 w -(has) 1773 2778 w -(been) 2032 2778 w -(provided) 2367 2778 w -(with) 2911 2778 w -(two) 3211 2778 w -(queues:) 3478 2778 w -(one) 3972 2778 w -(to) 4243 2778 w -(record) 4425 2778 w -(system) 4843 2778 w -(call) 5291 2778 w -(requests,) 720 2908 w -(and) 1255 2908 w -(another) 1494 2908 w -(to) 1947 2908 w -(record) 2096 2908 w -(system) 2481 2908 w -(call) 2896 2908 w -(replies.) 3118 2908 w -(When) 3551 2908 w -(a) 3884 2908 w -(thread) 3985 2908 w -(issues) 4371 2908 w -(a) 4741 2908 w -(system) 4842 2908 w -(call,) 5256 2908 w -(it) 720 3038 w -(fills) 837 3038 w -(up) 1074 3038 w -(an) 1255 3038 w -(slot) 1428 3038 w -(in) 1668 3038 w -(the) 1812 3038 w -(system) 2027 3038 w -(call) 2445 3038 w -(queue,) 2670 3038 w -(instead) 3078 3038 w -(of) 3511 3038 w -(making) 3663 3038 w -(an) 4102 3038 w -(actual) 4276 3038 w -(system) 4640 3038 w -(call.) 5059 3038 w -(At) 5355 3038 w -(that) 720 3168 w -(point,) 967 3168 w -(the) 1315 3168 w -(thread) 1522 3168 w -(library) 1904 3168 w -(marks) 2281 3168 w -(the) 2645 3168 w -(thread as blocked and proceeds to execute) 2852 3168 w -(other) 5189 3168 w -(threads.) 720 3298 w -(When) 1214 3298 w -(all) 1564 3298 w -(the) 1746 3298 w -(threads) 1974 3298 w -(are) 2433 3298 w -(blocked,) 2658 3298 w -(the) 3169 3298 w -(process) 3397 3298 w -(waits) 3865 3298 w -(for) 4197 3298 w -(replies) 4407 3298 w -(in) 4822 3298 w -(the) 4979 3298 w -(reply) 5207 3298 w -(queue.) 720 3428 w -(Before) 970 3594 w -(using) 1352 3594 w -(the) 1685 3594 w -(queue) 1897 3594 w -(mechanism,) 2268 3594 w -(the) 2952 3594 w -(process) 3165 3594 w -(issues) 3618 3594 w -(a) 3990 3594 w -(real) 4093 3594 w -(system) 4335 3594 w -(call) 4751 3594 w -(to) 4974 3594 w -(let) 5124 3594 w -(the) 5301 3594 w -(kernel) 720 3724 w -(know.) 1104 3724 w -(In) 1474 3724 w -(response) 1625 3724 w -(to) 2161 3724 w -(this) 2320 3724 w -(call,) 2568 3724 w -(the) 2835 3724 w -(kernel) 3056 3724 w -(creates) 3439 3724 w -(a) 3872 3724 w -(\(kernel\)) 3983 3724 w -(process) 4438 3724 w -(sharing) 4899 3724 w -(all) 5347 3724 w -(segments) 720 3854 w -(with) 1281 3854 w -(the) 1553 3854 w -(caller.) 1770 3854 w -(This) 2139 3854 w -(process) 2410 3854 w -(is) 2867 3854 w -(responsible) 3001 3854 w -(for) 3665 3854 w -(executing) 3864 3854 w -(the) 4435 3854 w -(queued) 4653 3854 w -(system) 5098 3854 w -(calls and placing replies for them in the) 720 3984 w -(reply queue.) 2876 3984 w -(With) 970 4150 w -(this) 1245 4150 w -(implementation,) 1481 4150 w -(we) 2394 4150 w -(made) 2580 4150 w -(several) 2913 4150 w -(performance) 3327 4150 w -(measurements) 4044 4150 w -(before) 4869 4150 w -(pro\255) 5255 4150 w -(ceeding) 720 4280 w -(further.) 1192 4280 w -(In) 1652 4280 w -(particular,) 1807 4280 w -(we) 2407 4280 w -(measured) 2609 4280 w -(how) 3189 4280 w -(long) 3464 4280 w -(it) 3754 4280 w -(takes) 3882 4280 w -(for) 4221 4280 w -(a) 4428 4280 w -(program) 4543 4280 w -(with) 5054 4280 w -(50) 5334 4280 w -(threads) 720 4410 w -(to) 1162 4410 w -(execute) 1310 4410 w -(500) 1768 4410 w -(system) 2015 4410 w -(calls) 2429 4410 w -(in) 2706 4410 w -(each) 2846 4410 w -(thread.) 3133 4410 w -(For) 3554 4410 w -(the) 3766 4410 w -(experiment,) 3978 4410 w -(the) 4664 4410 w -(system) 4876 4410 w -(call) 5291 4410 w -(used does not) 720 4540 w -(block) 1510 4540 w -(and does nothing. The) 1833 4540 w -(table) 3071 4540 w -(shows the) 3371 4540 w -(result:) 3944 4540 w -11 /S f -(_) 2108 4625 w -(___________________________________) 2159 4625 w -11 /LucidaSans-Demi f -(Core) 2163 4755 w -(System) 2591 4755 w -(Call) 3033 4755 w -(Queue) 3413 4755 w -(Call) 3814 4755 w -11 /S f -(_) 2108 4775 w -(___________________________________) 2159 4775 w -11 /LucidaSans-Demi f -(TC) 2217 4905 w -11 /LucidaTypewriter f -(0.02s) 2722 4905 w -11 /LucidaSansUnicode00 f -(0.06s) 3572 4905 w -11 /S f -(_) 2108 4925 w -(___________________________________) 2159 4925 w -11 /LucidaSans-Demi f -(AC) 2215 5055 w -11 /LucidaTypewriter f -(0.20s) 2722 5055 w -11 /LucidaSansUnicode00 f -(0.04s) 3572 5055 w -11 /S f -(_) 2108 5075 w -(___________________________________) 2159 5075 w -(\347) 2108 5075 w -(\347) 2108 5065 w -(\347) 2108 4955 w -(\347) 2108 4845 w -(\347) 2108 4735 w -(\347) 2508 5075 w -(\347) 2508 5065 w -(\347) 2508 4955 w -(\347) 2508 4845 w -(\347) 2508 4735 w -(\347) 3330 5075 w -(\347) 3330 5065 w -(\347) 3330 4955 w -(\347) 3330 4845 w -(\347) 3330 4735 w -(\347) 4084 5075 w -(\347) 4084 5065 w -(\347) 4084 4955 w -(\347) 4084 4845 w -(\347) 4084 4735 w -11 /LucidaSansUnicode00 f -(It) 970 5306 w -(takes) 1082 5306 w -(this) 1405 5306 w -(program) 1641 5306 w -(0.06) 2137 5306 w -(seconds) 2418 5306 w -(\(of) 2891 5306 w -(elapsed,) 3075 5306 w -(real) 3561 5306 w -(time\)) 3801 5306 w -(to) 4114 5306 w -(complete) 4262 5306 w -(when) 4793 5306 w -(run) 5116 5306 w -(on) 5337 5306 w -(the) 720 5436 w -(TC) 932 5436 w -(using) 1118 5436 w -(the) 1451 5436 w -(queue) 1663 5436 w -(based) 2033 5436 w -(mechanism.) 2390 5436 w -(However,) 3072 5436 w -(it) 3606 5436 w -(takes) 3719 5436 w -(only) 4043 5436 w -(0.02) 4307 5436 w -(seconds) 4589 5436 w -(to) 5063 5436 w -(com\255) 5211 5436 w -(plete) 720 5566 w -(when) 1031 5566 w -(using) 1359 5566 w -(the) 1697 5566 w -(standard) 1914 5566 w -(system) 2430 5566 w -(call) 2850 5566 w -(mechanism.) 3077 5566 w -(Therefore,) 3765 5566 w -(at) 4367 5566 w -(least) 4515 5566 w -(for) 4813 5566 w -(this) 5012 5566 w -(pro\255) 5255 5566 w -(gram,) 720 5696 w -(the) 1075 5696 w -(mechanism) 1289 5696 w -(is) 1939 5696 w -(more) 2070 5696 w -(an) 2389 5696 w -(overhead) 2561 5696 w -(than) 3095 5696 w -(a) 3376 5696 w -(benefit) 3480 5696 w -(in) 3898 5696 w -(the) 4041 5696 w -(TC.) 4255 5696 w -(It) 4478 5696 w -(is) 4594 5696 w -(likely) 4725 5696 w -(that) 5047 5696 w -(the) 5301 5696 w -(total) 720 5826 w -(number) 1004 5826 w -(of) 1460 5826 w -(system) 1610 5826 w -(calls) 2026 5826 w -(per) 2305 5826 w -(second) 2523 5826 w -(that) 2944 5826 w -(could) 3198 5826 w -(be) 3533 5826 w -(performed) 3707 5826 w -(in) 4312 5826 w -(the) 4455 5826 w -(machine) 4669 5826 w -(might) 5161 5826 w -(increase) 720 5956 w -(due) 1198 5956 w -(to) 1433 5956 w -(the) 1577 5956 w -(smaller) 1784 5956 w -(number) 2210 5956 w -(of) 2660 5956 w -(domain) 2804 5956 w -(crossings.) 3239 5956 w -(However, for a) 3814 5956 w -(single) 4627 5956 w -(program,) 4980 5956 w -(that) 720 6086 w -(does not) 966 6086 w -(seem to be) 1466 6086 w -(the) 2092 6086 w -(case.) 2298 6086 w -(As) 970 6252 w -(another) 1149 6252 w -(experiment,) 1608 6252 w -(running) 2300 6252 w -(the) 2764 6252 w -(same) 2982 6252 w -(program) 3310 6252 w -(on) 3814 6252 w -(the) 3997 6252 w -(AC) 4216 6252 w -(takes) 4416 6252 w -(0.20) 4748 6252 w -(seconds) 5038 6252 w -(when) 720 6382 w -(using) 1045 6382 w -(the) 1379 6382 w -(standard) 1592 6382 w -(system) 2104 6382 w -(call) 2520 6382 w -(mechanism,) 2742 6382 w -(and) 3425 6382 w -(0.04) 3664 6382 w -(seconds) 3947 6382 w -(when) 4422 6382 w -(using) 4746 6382 w -(queue-) 5079 6382 w -(based) 720 6512 w -(system) 1083 6512 w -(calls.) 1503 6512 w -(The) 1821 6512 w -(AC) 2066 6512 w -(is) 2264 6512 w -(not) 2398 6512 w -(meant) 2620 6512 w -(to) 3000 6512 w -(perform) 3154 6512 w -(system) 3631 6512 w -(calls.) 4052 6512 w -(A) 4406 6512 w -(system) 4529 6512 w -(call) 4950 6512 w -(made) 5178 6512 w -(while) 720 6642 w -(running) 1039 6642 w -(on) 1496 6642 w -(it) 1671 6642 w -(implies) 1784 6642 w -(a) 2209 6642 w -(trip) 2309 6642 w -(to) 2535 6642 w -(the) 2682 6642 w -(TC) 2892 6642 w -(and) 3076 6642 w -(another) 3313 6642 w -(trip) 3764 6642 w -(back) 3990 6642 w -(to) 4279 6642 w -(the) 4426 6642 w -(AC.) 4636 6642 w -(As) 4862 6642 w -(a) 5033 6642 w -(result,) 5133 6642 w -(issuing) 720 6772 w -(system) 1142 6772 w -(calls) 1558 6772 w -(from) 1837 6772 w -(the) 2134 6772 w -(AC) 2347 6772 w -(is) 2541 6772 w -(expensive.) 2671 6772 w -(Looking) 3318 6772 w -(at) 3784 6772 w -(the) 3928 6772 w -(time) 4141 6772 w -(when) 4420 6772 w -(using) 4745 6772 w -(queue-) 5079 6772 w -(based) 720 6902 w -(calls,) 1084 6902 w -(it) 1403 6902 w -(is) 1523 6902 w -(similar) 1658 6902 w -(to) 2065 6902 w -(one) 2220 6902 w -(for) 2464 6902 w -(running) 2664 6902 w -(in) 3128 6902 w -(the) 3274 6902 w -(TC) 3491 6902 w -(\(but) 3682 6902 w -(more) 3942 6902 w -(expensive\).) 4264 6902 w -(Therefore,) 4916 6902 w -(we) 720 7032 w -(may) 907 7032 w -(conclude) 1167 7032 w -(that) 1685 7032 w -(queue) 1936 7032 w -(based) 2305 7032 w -(system) 2662 7032 w -(calls) 3076 7032 w -(may) 3353 7032 w -(make) 3613 7032 w -(system) 3942 7032 w -(calls) 4356 7032 w -(affordable) 4634 7032 w -(even) 5223 7032 w -(for ACs.) 720 7162 w +(idlehands) 4549 7077 w +11 /LucidaSansUnicode00 f +(to) 5112 7077 w +(halt) 5270 7077 w +(the) 720 7207 w +(processor.) 941 7207 w +(It) 1549 7207 w +(will) 1672 7207 w +(wake) 1903 7207 w +(up) 2225 7207 w +(on) 2412 7207 w +(the) 2597 7207 w +(next) 2818 7207 w +(interrupt.) 3106 7207 w +(However,) 3662 7207 w +(it) 4206 7207 w +(can) 4329 7207 w +(now) 4564 7207 w +(be) 4834 7207 w +(the) 5015 7207 w +(case) 5237 7207 w cleartomark showpage saveobj restore @@ -6089,448 +6227,456 @@ mark 11 pagesetup 11 /LucidaSansUnicode00 f -(However,) 970 850 w -(a) 1509 850 w -(more) 1615 850 w -(simple) 1936 850 w -(mechanism) 2334 850 w -(is) 2986 850 w -(to) 3119 850 w -(keep) 3273 850 w -(in) 3576 850 w -(the) 3722 850 w -(TC) 3939 850 w -(those) 4130 850 w -(processes) 4470 850 w -(that) 5045 850 w -(did) 5302 850 w -(not) 720 980 w -(consume) 943 980 w -(all) 1469 980 w -(its) 1641 980 w -(quantum) 1816 980 w -(at) 2339 980 w -(user) 2487 980 w -(level,) 2764 980 w -(and) 3090 980 w -(move) 3334 980 w -(to) 3668 980 w -(ACs) 3822 980 w -(only) 4076 980 w -(those) 4346 980 w -(processes) 4686 980 w -(that) 5261 980 w -(do) 720 1110 w -(so.) 901 1110 w -(As) 1104 1110 w -(a) 1281 1110 w -(result,) 1387 1110 w -(we) 1771 1110 w -(have) 1963 1110 w -(decided) 2256 1110 w -(not) 2720 1110 w -(to) 2941 1110 w -(include) 3094 1110 w -(queue) 3526 1110 w -(based) 3900 1110 w -(system) 4262 1110 w -(calls) 4681 1110 w -(\(although) 4963 1110 w -(tubes can still) 720 1240 w -(be) 1499 1240 w -(used for IPC\).) 1665 1240 w -(During) 970 1406 w -(the) 1377 1406 w -(experiment,) 1591 1406 w -(we) 2279 1406 w -(found) 2469 1406 w -(an) 2825 1406 w -(interesting) 2997 1406 w -(bug) 3615 1406 w -(in) 3863 1406 w -(the) 4006 1406 w -(implementation) 4220 1406 w -(of) 5103 1406 w -(NIX.) 5255 1406 w -(Usually,) 720 1536 w -(when) 1188 1536 w -(a) 1522 1536 w -(processor) 1634 1536 w -(has) 2208 1536 w -(no) 2444 1536 w -(ready) 2630 1536 w -(process,) 2975 1536 w -(the) 3472 1536 w -(scheduler) 3694 1536 w -(calls) 4262 1536 w +(than) 720 850 w +(an) 1001 850 w +(AC) 1173 850 w +(replies) 1368 850 w +(to) 1769 850 w +(a) 1920 850 w +(previous) 2024 850 w +(request) 2523 850 w +(made) 2969 850 w +(by) 3306 850 w +(the) 3475 850 w +(TC) 3689 850 w +(\(e.g.,) 3877 850 w +(to) 4191 850 w +(run) 4342 850 w +(a) 4566 850 w +(user) 4670 850 w +(program\).) 4944 850 w +(By) 720 980 w +(that) 890 980 w +(time,) 1150 980 w +(the) 1471 980 w +(TC) 1691 980 w +(might) 1885 980 w +(be) 2245 980 w +(idle) 2425 980 w +(and) 2669 980 w +(it) 2916 980 w +(would) 3038 980 w +(miss) 3408 980 w +(the) 3703 980 w +(reply) 3923 980 w +(until) 4237 980 w +(the) 4527 980 w +(next) 4747 980 w +(external) 5034 980 w +(interrupt. The) 720 1110 w +(temporary fix was not) 1495 1110 w +(to call) 2702 1110 w 11 /LucidaSans-Italic f -(idlehands) 4549 1536 w -11 /LucidaSansUnicode00 f -(to) 5112 1536 w -(halt) 5270 1536 w -(the) 720 1666 w -(processor.) 941 1666 w -(It) 1549 1666 w -(will) 1672 1666 w -(wake) 1903 1666 w -(up) 2225 1666 w -(on) 2412 1666 w -(the) 2597 1666 w -(next) 2818 1666 w -(interrupt.) 3106 1666 w -(However,) 3662 1666 w -(it) 4206 1666 w -(can) 4329 1666 w -(now) 4564 1666 w -(be) 4834 1666 w -(the) 5015 1666 w -(case) 5237 1666 w -(than) 720 1796 w -(an) 1001 1796 w -(AC) 1173 1796 w -(replies) 1368 1796 w -(to) 1769 1796 w -(a) 1920 1796 w -(previous) 2024 1796 w -(request) 2523 1796 w -(made) 2969 1796 w -(by) 3306 1796 w -(the) 3475 1796 w -(TC) 3689 1796 w -(\(e.g.,) 3877 1796 w -(to) 4191 1796 w -(run) 4342 1796 w -(a) 4566 1796 w -(user) 4670 1796 w -(program\).) 4944 1796 w -(By) 720 1926 w -(that) 890 1926 w -(time,) 1150 1926 w -(the) 1471 1926 w -(TC) 1691 1926 w -(might) 1885 1926 w -(be) 2245 1926 w -(idle) 2425 1926 w -(and) 2669 1926 w -(it) 2916 1926 w -(would) 3038 1926 w -(miss) 3408 1926 w -(the) 3703 1926 w -(reply) 3923 1926 w -(until) 4237 1926 w -(the) 4527 1926 w -(next) 4747 1926 w -(external) 5034 1926 w -(interrupt. The) 720 2056 w -(temporary fix was not) 1495 2056 w -(to call) 2702 2056 w +(idlehands) 3061 1110 w +11 /LucidaSansUnicode00 f +(on the) 3609 1110 w +(coordinating TC) 3985 1110 w +(\(the) 4874 1110 w +(BSP\).) 5116 1110 w +11 /LucidaSans-Demi f +(8.) 720 1370 w +(Things) 888 1370 w +(not done) 1317 1370 w +(yet) 1856 1370 w +11 /LucidaSansUnicode00 f +(There) 720 1536 w +(are) 1061 1536 w +(a) 1264 1536 w +(few) 1360 1536 w +(other) 1584 1536 w +(things) 1903 1536 w +(that) 2272 1536 w +(have) 2519 1536 w +(to) 2803 1536 w +(be) 2947 1536 w +(done.) 3114 1536 w +(To) 3451 1536 w +(name) 3623 1536 w +(a) 3952 1536 w +(few:) 4049 1536 w +(Including) 4308 1536 w +(more) 4837 1536 w +(statis\255) 5149 1536 w +(tics) 720 1666 w +(in) 949 1666 w +(the) 1093 1666 w +11 /LucidaTypewriter f +(/proc) 1308 1666 w +11 /LucidaSansUnicode00 f +(interface) 1747 1666 w +(to) 2259 1666 w +(reflect) 2411 1666 w +(the) 2794 1666 w +(state) 3009 1666 w +(of) 3314 1666 w +(the) 3465 1666 w +(system,) 3679 1666 w +(considering) 4131 1666 w +(the) 4797 1666 w +(different) 5011 1666 w +(kind) 720 1796 w +(of) 994 1796 w +(cores) 1143 1796 w +(in) 1470 1796 w +(it;) 1611 1796 w +(deciding) 1761 1796 w +(if) 2259 1796 w +(the) 2374 1796 w +(current) 2587 1796 w +(interface) 3014 1796 w +(for) 3524 1796 w +(the) 3719 1796 w +(new) 3932 1796 w +(service) 4189 1796 w +(is) 4601 1796 w +(the) 4731 1796 w +(right) 4944 1796 w +(one,) 5240 1796 w +(and) 720 1926 w +(to) 966 1926 w +(what) 1122 1926 w +(extent) 1425 1926 w +(the) 1814 1926 w +(mechanism) 2033 1926 w +(has) 2688 1926 w +(to) 2920 1926 w +(be) 3075 1926 w +(its) 3253 1926 w +(own) 3429 1926 w +(policy;) 3696 1926 w +(implementing) 4091 1926 w +(KCs) 4876 1926 w +(\(which) 5127 1926 w +(should) 720 2056 w +(not) 1129 2056 w +(require) 1354 2056 w +(any) 1787 2056 w +(code,) 2023 2056 w +(because) 2362 2056 w +(they) 2846 2056 w +(must) 3124 2056 w +(execute) 3441 2056 w +(the) 3909 2056 w +(standard) 4130 2056 w +(kernel\);) 4650 2056 w +(testing) 5104 2056 w +(and debugging note) 720 2186 w +(handling for AC) 1833 2186 w +(processes; more) 2709 2186 w +(testing and fine) 3619 2186 w +(tuning.) 4493 2186 w +11 /LucidaSans-Demi f +(9.) 720 2446 w +(Evaluation) 888 2446 w +(9.1.) 720 2706 w +(strid3) 986 2706 w +11 /LucidaSansUnicode00 f +(Strid3) 970 2872 w +(is) 1321 2872 w +(part) 1445 2872 w +(of) 1697 2872 w +(the) 1841 2872 w +("tasty) 2048 2872 w +(loops") 2381 2872 w +(set) 2749 2872 w +(of) 2944 2872 w +(benchmarks,) 3088 2872 w +(and) 3810 2872 w +(is) 4044 2872 w +(widely) 4168 2872 w +(used) 4541 2872 w +(in) 4832 2872 w +(HPC) 4969 2872 w +(eval\255) 5224 2872 w +(uation) 720 3002 w +(of) 1111 3002 w +(architectures.) 1273 3002 w +(In) 2055 3002 w +(addition) 2209 3002 w +(to) 2702 3002 w +(performance) 2864 3002 w +(measurement) 3596 3002 w +(it) 4378 3002 w +(has) 4504 3002 w +(been) 4742 3002 w +(used) 5056 3002 w +(to) 5364 3002 w +(find bugs in implementations, such as the) 720 3132 w +(Barcelona) 3002 3132 w +(L3 bug.) 3553 3132 w +(Strid3 models) 970 3298 w 11 /LucidaSans-Italic f -(idlehands) 3061 2056 w -11 /LucidaSansUnicode00 f -(on the) 3609 2056 w -(coordinating TC) 3985 2056 w -(\(the) 4874 2056 w -(BSP\).) 5116 2056 w -11 /LucidaSans-Demi f -(8.) 720 2316 w -(Things) 888 2316 w -(not done) 1317 2316 w -(yet) 1856 2316 w -11 /LucidaSansUnicode00 f -(There) 720 2482 w -(are) 1061 2482 w -(a) 1264 2482 w -(few) 1360 2482 w -(other) 1584 2482 w -(things) 1903 2482 w -(that) 2272 2482 w -(have) 2519 2482 w -(to) 2803 2482 w -(be) 2947 2482 w -(done.) 3114 2482 w -(To) 3451 2482 w -(name) 3623 2482 w -(a) 3952 2482 w -(few:) 4049 2482 w -(Including) 4308 2482 w -(more) 4837 2482 w -(statis\255) 5149 2482 w -(tics) 720 2612 w -(in) 949 2612 w -(the) 1093 2612 w -11 /LucidaTypewriter f -(/proc) 1308 2612 w -11 /LucidaSansUnicode00 f -(interface) 1747 2612 w -(to) 2259 2612 w -(reflect) 2411 2612 w -(the) 2794 2612 w -(state) 3009 2612 w -(of) 3314 2612 w -(the) 3465 2612 w -(system,) 3679 2612 w -(considering) 4131 2612 w -(the) 4797 2612 w -(different) 5011 2612 w -(kind) 720 2742 w -(of) 994 2742 w -(cores) 1143 2742 w -(in) 1470 2742 w -(it;) 1611 2742 w -(deciding) 1761 2742 w -(if) 2259 2742 w -(the) 2374 2742 w -(current) 2587 2742 w -(interface) 3014 2742 w -(for) 3524 2742 w -(the) 3719 2742 w -(new) 3932 2742 w -(service) 4189 2742 w -(is) 4601 2742 w -(the) 4731 2742 w -(right) 4944 2742 w -(one,) 5240 2742 w -(and) 720 2872 w -(to) 966 2872 w -(what) 1122 2872 w -(extent) 1425 2872 w -(the) 1814 2872 w -(mechanism) 2033 2872 w -(has) 2688 2872 w -(to) 2920 2872 w -(be) 3075 2872 w -(its) 3253 2872 w -(own) 3429 2872 w -(policy;) 3696 2872 w -(implementing) 4091 2872 w -(KCs) 4876 2872 w -(\(which) 5127 2872 w -(should) 720 3002 w -(not) 1129 3002 w -(require) 1354 3002 w -(any) 1787 3002 w -(code,) 2023 3002 w -(because) 2362 3002 w -(they) 2846 3002 w -(must) 3124 3002 w -(execute) 3441 3002 w -(the) 3909 3002 w -(standard) 4130 3002 w -(kernel\);) 4650 3002 w -(testing) 5104 3002 w -(and debugging note) 720 3132 w -(handling for AC) 1833 3132 w -(processes; more) 2709 3132 w -(testing and fine) 3619 3132 w -(tuning.) 4493 3132 w -11 /LucidaSans-Demi f -(9.) 720 3392 w -(Evaluation) 888 3392 w -(9.1.) 720 3652 w -(strid3) 986 3652 w -11 /LucidaSansUnicode00 f -(Strid3) 970 3818 w -(is) 1321 3818 w -(part) 1445 3818 w -(of) 1697 3818 w -(the) 1841 3818 w -("tasty) 2048 3818 w -(loops") 2381 3818 w -(set) 2749 3818 w -(of) 2944 3818 w -(benchmarks,) 3088 3818 w -(and) 3810 3818 w -(is) 4044 3818 w -(widely) 4168 3818 w -(used) 4541 3818 w -(in) 4832 3818 w -(HPC) 4969 3818 w -(eval\255) 5224 3818 w -(uation) 720 3948 w -(of) 1111 3948 w -(architectures.) 1273 3948 w -(In) 2055 3948 w -(addition) 2209 3948 w -(to) 2702 3948 w -(performance) 2864 3948 w -(measurement) 3596 3948 w -(it) 4378 3948 w -(has) 4504 3948 w -(been) 4742 3948 w -(used) 5056 3948 w -(to) 5364 3948 w -(find bugs in implementations, such as the) 720 4078 w -(Barcelona) 3002 4078 w -(L3 bug.) 3553 4078 w -(Strid3 models) 970 4244 w +(S) 1743 3298 w +11 /S f +(=) 1831 3298 w 11 /LucidaSans-Italic f -(S) 1743 4244 w +(AX) 1910 3298 w 11 /S f -(=) 1831 4244 w +(+) 2081 3298 w 11 /LucidaSans-Italic f -(AX) 1910 4244 w -11 /S f -(+) 2081 4244 w +(Y) 2160 3298 w +11 /LucidaSansUnicode00 f +(, or SAXPY, i.e. this loop) 2227 3298 w +9 /LucidaTypewriter f +(void) 940 3468 w +(saxpy\(float*) 1265 3468 w +(x,) 2110 3468 w +(float*) 2305 3468 w +(y,) 2760 3468 w +(int) 2955 3468 w +(n,) 3215 3468 w +(float) 3410 3468 w +(a\)) 3800 3468 w +({) 3995 3468 w +(int) 1070 3578 w +(i;) 1330 3578 w +(for) 1070 3688 w +(\(i) 1330 3688 w +(=) 1525 3688 w +(0;) 1655 3688 w +(i) 1850 3688 w +(<) 1980 3688 w +(n;) 2110 3688 w +(i++\)) 2305 3688 w +({) 2630 3688 w +(y[i]) 1200 3798 w +(=) 1525 3798 w +(a) 1655 3798 w +(*) 1785 3798 w +(x[i]) 1915 3798 w +(+) 2240 3798 w +(y[i];) 2370 3798 w +(}) 1070 3908 w +(}) 940 4018 w +11 /LucidaSansUnicode00 f +(with) 720 4208 w +(a) 990 4208 w +(crucial) 1095 4208 w +(difference:) 1489 4208 w +(the) 2106 4208 w +(stride) 2321 4208 w +(1) 2670 4208 w +(of) 2783 4208 w +(the) 2935 4208 w +(above) 3150 4208 w +(loop) 3510 4208 w +(is) 3789 4208 w +(made) 3922 4208 w +(stride) 4261 4208 w 11 /LucidaSans-Italic f -(Y) 2160 4244 w -11 /LucidaSansUnicode00 f -(, or SAXPY, i.e. this loop) 2227 4244 w +(n) 4611 4208 w +11 /LucidaSansUnicode00 f +(,) 4679 4208 w +(where) 4759 4208 w +(n) 5126 4208 w +(is) 5239 4208 w +(in) 5372 4208 w +(the) 720 4338 w +(range) 931 4338 w +(of) 1275 4338 w +(1) 1423 4338 w +(to) 1532 4338 w +(1024) 1680 4338 w +(and) 1996 4338 w +(is) 2234 4338 w +(incremented) 2362 4338 w +(each) 3069 4338 w +(time) 3356 4338 w +(through) 3633 4338 w +(the) 4098 4338 w +(loop.) 4308 4338 w +(The) 4617 4338 w +(loop) 4855 4338 w +(is) 5129 4338 w +(also) 5256 4338 w +(run many times to make) 720 4468 w +(sure) 2054 4468 w +(the) 2320 4468 w +(computation is long enough to) 2526 4468 w +(hide) 4206 4468 w +(startup) 4473 4468 w +(overheads.) 4890 4468 w +(The) 720 4598 w +(code) 954 4598 w +(thus looks like:) 1243 4598 w 9 /LucidaTypewriter f -(void) 940 4414 w -(saxpy\(float*) 1265 4414 w -(x,) 2110 4414 w -(float*) 2305 4414 w -(y,) 2760 4414 w -(int) 2955 4414 w -(n,) 3215 4414 w -(float) 3410 4414 w -(a\)) 3800 4414 w -({) 3995 4414 w -(int) 1070 4524 w -(i;) 1330 4524 w -(for) 1070 4634 w -(\(i) 1330 4634 w -(=) 1525 4634 w -(0;) 1655 4634 w -(i) 1850 4634 w -(<) 1980 4634 w -(n;) 2110 4634 w -(i++\)) 2305 4634 w -({) 2630 4634 w -(y[i]) 1200 4744 w -(=) 1525 4744 w -(a) 1655 4744 w -(*) 1785 4744 w -(x[i]) 1915 4744 w -(+) 2240 4744 w -(y[i];) 2370 4744 w -(}) 1070 4854 w -(}) 940 4964 w -11 /LucidaSansUnicode00 f -(with) 720 5154 w -(a) 990 5154 w -(crucial) 1095 5154 w -(difference:) 1489 5154 w -(the) 2106 5154 w -(stride) 2321 5154 w -(1) 2670 5154 w -(of) 2783 5154 w -(the) 2935 5154 w -(above) 3150 5154 w -(loop) 3510 5154 w -(is) 3789 5154 w -(made) 3922 5154 w -(stride) 4261 5154 w +(for\() 1200 4768 w +(j=0;) 1525 4768 w +(j