From: bill@triangle.cs.uofs.edu on behalf of Bill Gunshannon [bill@cs.uofs.edu] Sent: Tuesday, August 23, 2005 9:06 PM To: Info-VAX@Mvb.Saic.Com Subject: Re: Simh. How to triple the speed In article , Alan Greig writes: > > > Dan Foster wrote: > >> >> That's not bad. SIMH emulates the MicroVAX 3900, which has a VUPS rating >> of 3.8. > >> Mr. Quayle, a CHARON reseller, mentioned it was ~95 VUPS on a 'high end >> PC' (making me think 3 GHz Xeon or some such) for CHARON, last year. > > I've just tried the demo of Charon VAX (I know there may be faster > Charon products so take this as indicitive of the demo only as per the > agreement I clicked on)and it gets 11 VUPS on my PC. Simh gets me 7.8 > so there is obviously some scope for speeding up simh. But simh is a > free emulator which doesn't have full time staff and commercial funded > development. I think simh does rather well. I'd be amazed if anyone is > getting 95 VUPS out of Charon VAX unless it's a cluster emulated on an > SMP system. And you can do that with simh has well. Simh also emulates a > huge range of proecssors other than VAX of course. > >> >> Could you make the DCL scripts available or mention more details such >> that I could locate them via a web search? I think I've heard of the >> ones you used but can't remember enough useful details to find them again. > > Watch as it may wrap. > > $! CALCULATE_VUPS: > $! > $ set noon > $ orig_privs = f$setprv("ALTPRI") > $ process_priority = f$getjpi(0,"PRIB") > $ cpu_multiplier = 10 ! VAX = 10 - Alpha/AXP = 40 > $ cpu_round_add = 1 ! VAX = 1 - Alpha/AXP = 9 > $ cpu_round_divide = cpu_round_add + 1 > $ init_counter = cpu_multiplier * 525 > $ init_loop_maximum = 205 > $ start_cputime = f$getjpi(0,"CPUTIM") > $ loop_index = 0 > $ 10$: > $ loop_index = loop_index + 1 > $ if loop_index .ne. init_loop_maximum then goto 10$ > $ end_cputime = f$getjpi(0,"CPUTIM") > $ init_vups = ((init_counter / (end_cputime - start_cputime) + - > cpu_round_add) / cpu_round_divide) * cpu_round_divide > $ loop_maximum = (init_vups * init_loop_maximum) / 10 > $ base_counter = (init_counter * init_vups) / 10 > $ vups = 0 > $ times_through_loop = 0 > $ 20$: > $ start_cputime = f$getjpi(0,"CPUTIM") > $ loop_index = 0 > $ 30$: > $ loop_index = loop_index + 1 > $ if loop_index .ne. loop_maximum then goto 30$ > $ end_cputime = f$getjpi(0,"CPUTIM") > $ new_vups = ((base_counter / (end_cputime - start_cputime) + - > cpu_round_add) / cpu_round_divide) * cpu_round_divide > $ if new_vups .eq. vups then goto 40$ > $ vups = new_vups > $ times_through_loop = times_through_loop + 1 > $ if times_through_loop .le. 5 then goto 20$ > $ 40$: > $ new_privs = f$setprv(orig_privs) > $ set message /nofacility/noidentification/noseverity/notext > $! ASSIGN/SYSTEM/EXEC 'vups' MACHINE_VUPS_RATING > $ set message /facility/identification/severity/text > $ write sys$output "Approximate System VUPs Rating : ", - > vups / 10,".", vups - ((vups / 10) * 10) > $ exit > $ > > >> I'd be happy to try it on SIMH+VMS 7.3 setup running on a P4/3.0 GHz and >> report back results. >> I couldn't resist. I ran it on the VAX here. Approximate System VUPs Rating : 28.0 That should keep the students happy. bill -- Bill Gunshannon | de-moc-ra-cy (di mok' ra see) n. Three wolves bill@cs.scranton.edu | and a sheep voting on what's for dinner. University of Scranton | Scranton, Pennsylvania | #include