#! /usr/local/bin/gawk -f BEGIN{ Cpu = 4 Cycle = 1000000 Snapshot = 10000 Loadav = 0.3 # Bus priority controller for(i=0;i<Cpu;i++) Prio[i]=i; # 0,1,2,3... for(Clk=1;Clk<=Cycle;Clk++) { # Cpu Bus Request for(j=0;j<Cpu;j++) { if (Cpureq[j]>0) { Wait[j]++; } else { Cpureq[j]++; } } } # Bus grant Ack=-1; for(j=0;j<Cpu;j++){ r=Prio[j]; # access grant if (Cpureq[r]>0) { Cpureq[r]--; Ack=r; BusUsage++; roundrobin(j); break; } } if (Clk%Snapshot==0) report(); } # summary print "CPU= " Cpu print "LoadAvarage= " Loadav for(i=0;i<Cpu;i++) Loss+=Wait[i]/Cycle; Loss/=Cpu; print "Loss(%): " Loss*100 print "Spec: " Cpu*(1-Loss) } func roundrobin(n ,t,i) { t=Prio[n]; for(i=n;i<Cpu-1;i++) Prio[i]=Prio[i+1]; Prio[Cpu-1]=t; return; } func report( i) { return; }
Standard input is empty
Clk: 10000 Req: 1 0 0 0 Wait: 683 720 715 705 Ack: 1 Clk: 20000 Req: 0 0 1 1 Wait: 1416 1429 1429 1421 Ack: 1 Clk: 30000 Req: 1 0 0 0 Wait: 2111 2157 2124 2134 Ack: 1 Clk: 40000 Req: 0 0 1 0 Wait: 2806 2809 2858 2857 Ack: 1 Clk: 50000 Req: 0 0 0 0 Wait: 3582 3532 3601 3631 Ack: 0 Clk: 60000 Req: 1 1 0 0 Wait: 4279 4186 4319 4318 Ack: 3 Clk: 70000 Req: 0 0 0 0 Wait: 5029 4935 5092 5033 Ack: -1 Clk: 80000 Req: 0 1 0 0 Wait: 5759 5659 5822 5757 Ack: 3 Clk: 90000 Req: 0 0 0 0 Wait: 6477 6398 6527 6445 Ack: 2 Clk: 100000 Req: 0 0 0 0 Wait: 7212 7163 7249 7170 Ack: 0 Clk: 110000 Req: 0 0 0 0 Wait: 7970 7893 7958 7908 Ack: 2 Clk: 120000 Req: 0 0 1 1 Wait: 8745 8591 8700 8657 Ack: 0 Clk: 130000 Req: 0 0 0 0 Wait: 9489 9346 9465 9390 Ack: -1 Clk: 140000 Req: 1 0 0 0 Wait: 10256 10048 10178 10153 Ack: 1 Clk: 150000 Req: 0 0 0 0 Wait: 10975 10716 10909 10877 Ack: 3 Clk: 160000 Req: 0 0 0 0 Wait: 11700 11437 11680 11599 Ack: -1 Clk: 170000 Req: 0 0 1 0 Wait: 12392 12168 12419 12307 Ack: 1 Clk: 180000 Req: 0 0 1 0 Wait: 13136 12834 13133 13055 Ack: 3 Clk: 190000 Req: 1 0 0 1 Wait: 13869 13576 13875 13783 Ack: 1 Clk: 200000 Req: 0 0 0 0 Wait: 14604 14271 14608 14515 Ack: 3 Clk: 210000 Req: 0 0 0 1 Wait: 15257 14961 15314 15219 Ack: 2 Clk: 220000 Req: 0 0 0 0 Wait: 15936 15616 16055 15881 Ack: 3 Clk: 230000 Req: 0 0 1 0 Wait: 16614 16323 16777 16545 Ack: 1 Clk: 240000 Req: 0 0 0 0 Wait: 17376 17057 17524 17230 Ack: 1 Clk: 250000 Req: 0 0 0 1 Wait: 18113 17792 18257 17954 Ack: 1 Clk: 260000 Req: 0 0 0 1 Wait: 18821 18574 18999 18656 Ack: 2 Clk: 270000 Req: 1 1 1 0 Wait: 19557 19307 19687 19363 Ack: 3 Clk: 280000 Req: 1 0 0 0 Wait: 20251 19992 20404 20097 Ack: 1 Clk: 290000 Req: 0 0 0 0 Wait: 20919 20692 21149 20830 Ack: 3 Clk: 300000 Req: 0 0 0 1 Wait: 21631 21410 21872 21569 Ack: 1 Clk: 310000 Req: 1 1 0 0 Wait: 22346 22114 22575 22269 Ack: 2 Clk: 320000 Req: 1 1 0 1 Wait: 23052 22866 23293 22984 Ack: 2 Clk: 330000 Req: 1 0 1 0 Wait: 23816 23586 24040 23708 Ack: 3 Clk: 340000 Req: 1 0 0 0 Wait: 24558 24285 24760 24395 Ack: 3 Clk: 350000 Req: 0 1 0 1 Wait: 25245 25021 25449 25171 Ack: 2 Clk: 360000 Req: 1 0 0 0 Wait: 25957 25744 26122 25893 Ack: 3 Clk: 370000 Req: 0 0 0 0 Wait: 26686 26458 26800 26585 Ack: 3 Clk: 380000 Req: 0 0 0 0 Wait: 27362 27203 27496 27290 Ack: 0 Clk: 390000 Req: 0 0 1 0 Wait: 28084 27937 28202 27977 Ack: 0 Clk: 400000 Req: 1 0 0 0 Wait: 28802 28638 28916 28732 Ack: 1 Clk: 410000 Req: 0 1 0 0 Wait: 29479 29374 29585 29440 Ack: 2 Clk: 420000 Req: 0 0 0 0 Wait: 30174 30118 30291 30142 Ack: -1 Clk: 430000 Req: 0 0 0 0 Wait: 30826 30810 30997 30865 Ack: -1 Clk: 440000 Req: 0 1 0 1 Wait: 31545 31539 31715 31617 Ack: 2 Clk: 450000 Req: 0 0 0 0 Wait: 32268 32261 32437 32334 Ack: 1 Clk: 460000 Req: 0 0 0 0 Wait: 33002 32989 33142 33092 Ack: 3 Clk: 470000 Req: 1 0 1 0 Wait: 33717 33708 33883 33806 Ack: 3 Clk: 480000 Req: 0 0 0 1 Wait: 34453 34474 34603 34533 Ack: 0 Clk: 490000 Req: 1 1 1 0 Wait: 35177 35158 35315 35212 Ack: 3 Clk: 500000 Req: 0 0 1 0 Wait: 35901 35862 36051 35934 Ack: 1 Clk: 510000 Req: 1 0 0 0 Wait: 36652 36617 36749 36617 Ack: 3 Clk: 520000 Req: 0 0 1 0 Wait: 37325 37279 37422 37313 Ack: 3 Clk: 530000 Req: 0 0 0 0 Wait: 38059 38029 38131 38082 Ack: 1 Clk: 540000 Req: 0 1 0 1 Wait: 38778 38759 38771 38783 Ack: 2 Clk: 550000 Req: 0 0 0 0 Wait: 39515 39502 39515 39495 Ack: 3 Clk: 560000 Req: 1 0 1 0 Wait: 40261 40203 40189 40190 Ack: 1 Clk: 570000 Req: 0 0 0 0 Wait: 41011 40887 40920 40888 Ack: -1 Clk: 580000 Req: 0 0 1 0 Wait: 41739 41656 41590 41618 Ack: 3 Clk: 590000 Req: 0 0 0 1 Wait: 42438 42346 42306 42348 Ack: 2 Clk: 600000 Req: 1 0 0 0 Wait: 43160 43054 43094 43108 Ack: 1 Clk: 610000 Req: 1 0 0 0 Wait: 43860 43761 43773 43841 Ack: 1 Clk: 620000 Req: 0 1 0 0 Wait: 44607 44483 44557 44603 Ack: 2 Clk: 630000 Req: 0 1 0 1 Wait: 45372 45190 45249 45364 Ack: 0 Clk: 640000 Req: 0 1 0 0 Wait: 46040 45935 45953 46046 Ack: 3 Clk: 650000 Req: 0 1 0 0 Wait: 46740 46641 46656 46732 Ack: 0 Clk: 660000 Req: 1 0 0 1 Wait: 47477 47297 47349 47444 Ack: 1 Clk: 670000 Req: 0 0 0 0 Wait: 48217 48021 48066 48148 Ack: 1 Clk: 680000 Req: 0 0 0 1 Wait: 48922 48726 48783 48867 Ack: 1 Clk: 690000 Req: 0 0 0 0 Wait: 49615 49439 49484 49607 Ack: 3 Clk: 700000 Req: 1 1 1 0 Wait: 50366 50172 50187 50325 Ack: 3 Clk: 710000 Req: 0 0 0 0 Wait: 51126 50906 50913 51073 Ack: -1 Clk: 720000 Req: 0 0 0 0 Wait: 51856 51611 51607 51767 Ack: 0 Clk: 730000 Req: 1 0 0 0 Wait: 52579 52342 52342 52479 Ack: 2 Clk: 740000 Req: 0 0 1 0 Wait: 53284 53028 53089 53172 Ack: 0 Clk: 750000 Req: 0 0 1 0 Wait: 53985 53719 53830 53882 Ack: 3 Clk: 760000 Req: 0 1 0 1 Wait: 54696 54427 54541 54583 Ack: 0 Clk: 770000 Req: 1 0 0 0 Wait: 55414 55203 55315 55309 Ack: 1 Clk: 780000 Req: 0 0 0 0 Wait: 56153 55901 55969 55983 Ack: 3 Clk: 790000 Req: 1 0 1 0 Wait: 56860 56574 56676 56680 Ack: 3 Clk: 800000 Req: 0 0 0 0 Wait: 57550 57310 57390 57407 Ack: 0 Clk: 810000 Req: 0 1 0 1 Wait: 58250 57962 58102 58125 Ack: 0 Clk: 820000 Req: 0 0 0 0 Wait: 58986 58705 58832 58798 Ack: 1 Clk: 830000 Req: 0 0 0 0 Wait: 59736 59412 59565 59506 Ack: 3 Clk: 840000 Req: 0 0 0 1 Wait: 60445 60138 60293 60217 Ack: 2 Clk: 850000 Req: 0 1 0 1 Wait: 61154 60838 61045 60890 Ack: 2 Clk: 860000 Req: 1 0 0 0 Wait: 61829 61551 61718 61563 Ack: 2 Clk: 870000 Req: 1 1 0 0 Wait: 62512 62280 62425 62283 Ack: 2 Clk: 880000 Req: 0 1 0 1 Wait: 63182 62989 63118 63006 Ack: 2 Clk: 890000 Req: 0 0 0 0 Wait: 63893 63697 63805 63701 Ack: 1 Clk: 900000 Req: 1 0 0 0 Wait: 64633 64385 64507 64408 Ack: 2 Clk: 910000 Req: 0 0 0 0 Wait: 65337 65047 65193 65076 Ack: 2 Clk: 920000 Req: 1 0 0 0 Wait: 66017 65779 65899 65777 Ack: 3 Clk: 930000 Req: 1 0 1 0 Wait: 66742 66461 66671 66500 Ack: 3 Clk: 940000 Req: 0 0 1 0 Wait: 67499 67123 67368 67202 Ack: 3 Clk: 950000 Req: 0 0 0 0 Wait: 68210 67842 68098 67894 Ack: 3 Clk: 960000 Req: 0 1 0 0 Wait: 68986 68553 68784 68649 Ack: 0 Clk: 970000 Req: 0 0 1 0 Wait: 69747 69279 69509 69366 Ack: 0 Clk: 980000 Req: 0 0 0 0 Wait: 70477 70042 70264 70081 Ack: 3 Clk: 990000 Req: 0 0 0 1 Wait: 71220 70767 70980 70833 Ack: 2 Clk: 1000000 Req: 0 0 0 0 Wait: 71913 71457 71712 71546 Ack: 2 CPU= 4 LoadAvarage= 0.3 Loss(%): 7.1657 Spec: 3.71337