home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.realtime
- Path: sparky!uunet!munnari.oz.au!sol.deakin.OZ.AU!news.cs.uow.edu.au!seagoon.newcastle.edu.au!wombat.newcastle.edu.au!eepjm
- From: eepjm@wombat.newcastle.edu.au (Peter Moylan)
- Subject: Re: novel idea?
- Message-ID: <1993Jan13.121354.1@wombat.newcastle.edu.au>
- Lines: 54
- Sender: news@seagoon.newcastle.edu.au
- Organization: University of Newcastle, AUSTRALIA
- References: <erempel.726720401@sol.UVic.CA> <1993Jan11.171954.1@wombat.newcastle.edu.au> <C0onL4.2qE@newcastle.ac.uk>
- Date: Wed, 13 Jan 1993 01:13:54 GMT
-
- In article <C0onL4.2qE@newcastle.ac.uk>, Adrian.Waterworth@newcastle.ac.uk (Adrian Waterworth) writes:
- > eepjm@wombat.newcastle.edu.au (Peter Moylan) writes:
- >
- >>In article <erempel.726720401@sol.UVic.CA>, erempel@sol.UVic.CA (Evan Rempel) writes:
- >>>
- >>> I know that the single task on the 040 would run slower than on the
- >>> i860, but if the i860 was bogged down, the net result would
- >>> be a system speedup.
- >
- >>You must be joking. The machine languages of these two processors
- >>are totally different. Would you plan to run an 860 simulator on
- >>the 68040, or recompile the source code each time you switched
- >>processors? Either way, the overheads are mind-boggling.
- >
- >>"Run slower" is a gross understatement.
- >
- > I'm not sure that I entirely agree. In particular, why should
- > it be necessary "to re-compile the source code each time you switched
- > processors"? Assuming that enough memory or on-line storage is
- > available, what's wrong with having two _pre-compiled_ versions of the
- > task (one for each processor)? The task switching problem then becomes
- > a simple case of suspending on one processor and loading/running on the
- > other. I can't think of any references straight off the top of my head,
- > but I know that this kind of technique has long been proposed (and
- > probably used by now) as a means of supporting load-balancing and
- > process migration in heterogeneous distributed systems.
-
- The tricky part would be to keep track of where a task was up to
- at the time of a task switch - i.e. which bit of object code in
- one machine language corresponded to which bit in the other version.
- Preemptive task switching would be completely out of the question,
- because you'd have to guarantee that the machine registers were not
- holding anything useful at the time of the switch. This means that
- the compilers could not be permitted to optimise across
- statement boundaries, either, which would be a bit of performance
- hit. It looks to me that you'd have to have a rule that task
- switching happened only at pre-designated checkpoints which both
- compilers knew about.
-
- This sort of solution is not impossible, but it would be a major
- headache to implement, and it would have some significant performance
- penalties. Given that the point of the original proposal was to
- get a performance increase, you might be better off throwing away
- one of the processors and using a decent compiler and low-overhead
- OS on the other.
-
- For similar reasons, I didn't mention interpreted languages in my
- original response. Using an interpreter on both machines is clearly
- the easiest way to solve the incompatibility problem - this could
- be implemented with very little trouble - but why bother? The
- overall speed of the two-processor system would be lower than any
- decent single-processor solution.
- --
- Peter Moylan eepjm@wombat.newcastle.edu.au
-