acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) (11/24/89)
Since people seem to be posting their favourite lies from computer reps, I thought I'd add this one I heard from an IBM demo guy at the Northeast Computer Show. We were discussing the virtues of the Motorola 68020 vs. the Intel '386, and he came out with this beauty: "Well, of course segmented architecture enables you to produce tighter, more modular code." Craig. /// /// \\\/// \XX/ acm131@eric.ccs.northeastern.edu
mike@ames.arc.nasa.gov (Mike Smithwick) (11/26/89)
In article <4737@nigel.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: > > >Since people seem to be posting their favourite lies from computer >reps, I thought I'd add this one I heard from an IBM demo guy at the >Northeast Computer Show. We were discussing the virtues of the >Motorola 68020 vs. the Intel '386, and he came out with this beauty: > >"Well, of course segmented architecture enables you to produce tighter, >more modular code." > > > Craig. Hey, that's nothing. Check out the December issue of Compute's "Amiga Resource" magazine, page 13. Arlan Levitan went "under cover" to a number of PeeCee/EssTee/Mack dealers playing dumb and asked about the Amiga. In the writeup he gives 10 responses he received, some bordering on slander. A must read if you need your blood pressure raised. (Example : "The Amiga is an overpriced, modified C64", or "Amiga 500 power supplies are dangerous and had started fires in people's homes by shorting out. . .") happy reading! mike *** mike smithwick *** "When I was 18 I joined the centrifigal Air-force" [disclaimer : nope, I don't work for NASA, I take full blame for my ideas]
doug@xdos.UUCP (Doug Merritt) (11/29/89)
In article <4737@nigel.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: > >Since people seem to be posting their favourite lies from computer >reps, I thought I'd add this one I heard from an IBM demo guy [...] >Motorola 68020 vs. the Intel '386, and he came out with this beauty: > >"Well, of course segmented architecture enables you to produce tighter, >more modular code." Devil's advocate coming up. But first: I *HATE* segmented architectures! Ok, that said, he's not altogether wrong. But it should be rephrased: "...*forces* you to write more modular code". Mostly :-) about that part. There's nothing wonderful about being forced to break huge data structures into smaller 64K chunks. Nor for code, for that matter. But. He's (partially) right on target about tighter code. Granted segments are a pain in the ass, but code written using 16 bit pointers plus pain-in-the-ass workarounds for dealing with other 64K segments *IS* often tighter than code that uses purely 32 bit pointers. Such code can maybe a third smaller on the 68000, and smaller yet on 80x86's (due to sometimes more compact instruction coding). My usual rebuttal to *that* argument is: sure, but you *can* use 16 bit offsets rather than 32 bit pointers on the 68000, too, and for small programs, people often tell the C compiler to use small model to do exactly that. But there's a counter-rebuttal: it's much, much harder to do this for *large* programs on the 68000, due in part to the 68000's architecture (16 bit offsets are not supported by all instructions that allow 32 bit pointers), and in part due to limited support by C compilers, and even in part by the definition of the C language (i.e. it's more feasible to do this for large programs in assembler than in C). And more to the point, people usually don't try to use "small model" constructs/compiler modes with large programs, whether written in C or not. But then it gets complex, because if someone *does* make the attempt, then you can counter-argue that the result will be tighter on the 68000 than on the 80x86 due to the larger register set and more orthogonal architecture. And in my experience, this tends to be the last word. The Intel architecture *forces* people to use more compact constructs than does the 68000, but when people try to be compact on the 68000, it's an even bigger win than it is on the 80x86. It's a really big win to have lots of registers. This is part of the reason that RISC machines do well on benchmarks (not the only reason, but look at the kludgy Clipper processor...it's very slow for a RISC in part because of its small register set). So back to the salesman: he's right, and he's wrong. Doug -- Doug Merritt {pyramid,apple}!xdos!doug Member, Crusaders for a Better Tomorrow Professional Wildeyed Visionary
rehrauer@apollo.HP.COM (Steve Rehrauer) (11/29/89)
In article <4737@nigel.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: >Since people seem to be posting their favourite lies from computer >reps, I thought I'd add this one I heard from an IBM demo guy at the >Northeast Computer Show. We were discussing the virtues of the >Motorola 68020 vs. the Intel '386, and he came out with this beauty: > >"Well, of course segmented architecture enables you to produce tighter, >more modular code." Well, the "tighter" portion of that statement can be true, IF you can live within a segment for whatever you're doing (code or data). But the headache of handling segment-spanning cases more than makes up for it, in my opinion -- give me a flat address-space any day! -- >>"Aaiiyeeee! Death from above!"<< | Steve Rehrauer, rehrauer@apollo.hp.com "Flee, lest we be trod upon!" | The Apollo System Division of H.P.
acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) (11/30/89)
In Message-Id: <544@xdos.UUCP> Doug Merritt <doug@xdos.CCS.Northeastern.EDU> writes: > Ok, that said, he's not altogether wrong. But it should be rephrased: > "...*forces* you to write more modular code". Mostly :-) about that part. > There's nothing wonderful about being forced to break huge data structures > into smaller 64K chunks. Nor for code, for that matter. Well, according to the IBM rep, there *is*. And this is one place where I couldn't figure out if he was giving me a line of crap or not. But he said that segmented architecture makes multi-tasking more efficient, because to change context you merely reload the code, data, and stack segments. Instead of copying the entire contents of page zero, out and in, etc. etc. Of course, whe I pressed him as to why 8 Mhz Amiga 1000's with 512K can multi-task better than his 33Mhz PS/2's he had no satisfactory answer, but still... for future reference, I'd like to know, is this a legitimate issue? > So back to the salesman: he's right, and he's wrong. > Doug > -- > Doug Merritt {pyramid,apple}!xdos!doug > Member, Crusaders for a Better Tomorrow Professional Wildeyed Visionary Craig. /// /// "Hey OS/2, wanna race???" \\\/// \XX/ acm131@eric.ccs.northestern.edu
rogers@iris.ucdavis.edu (Brewski Rogers) (11/30/89)
In article <5003@nigel.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: >Well, according to the IBM rep, there *is*. And this is one place where I >couldn't figure out if he was giving me a line of crap or not. But he said >that segmented architecture makes multi-tasking more efficient, because to >change context you merely reload the code, data, and stack segments. Instead >of copying the entire contents of page zero, out and in, etc. etc. Of >course, whe I pressed him as to why 8 Mhz Amiga 1000's with 512K can >multi-task better than his 33Mhz PS/2's he had no satisfactory answer, >but still... for future reference, I'd like to know, is this a legitimate >issue? > > /// "Hey OS/2, wanna race???" > \XX/ acm131@eric.ccs.northestern.edu page zero? I thought only 6502's had zero page stuff to worry about? Maybe the IBM salesman thought the Amiga ran on a 6502. Well, maybe the IBM salesman's right, the IBM w/80386 multitasks a little bit better than a commodore 64. Where do these people get these ideas? Its a weird and stupid world we live in. ------------------------------------------------------ Quantum _\/_ 2727 Eel Bruce (6502 RULES!) Rogers |\ Duck ( 0 0) Davis, Ca 95616 Quantum Duck Software, |\ \______/ / \\\ 916-756-2684 rogers@iris.ucdavis.edu |\ < < | \/ "It's better to be the real thing than the right thing." \________/ Quark!
limonce@pilot.njin.net (Tom Limoncelli) (11/30/89)
In article <5003@nigel.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: > Well, according to the IBM rep, there *is*. And this is one place where I > couldn't figure out if he was giving me a line of crap or not. But he said > that segmented architecture makes multi-tasking more efficient, because to > change context you merely reload the code, data, and stack segments. Instead > of copying the entire contents of page zero, out and in, etc. etc. Of ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > course, whe I pressed him as to why 8 Mhz Amiga 1000's with 512K can > multi-task better than his 33Mhz PS/2's he had no satisfactory answer, > but still... for future reference, I'd like to know, is this a legitimate > issue? Is there any multitasking OS that swaps between tasks/processes by swapping all of page 0? I can't think of any. Is this the technique that Mac's Switcher (is that what it's called?) or any of the similar programs for the Atari ST do? "Page 0" reminds me of "Zero Page" mode" like on the 6502. I remember Chris Lane (of Yale) published some code that permitted a VIC-20 to multitask. It swapped page 0, 1 and 2 (the stack) and the registers. It was so slow that rather than swapping every quantum, each program would have to SYS to a memory location once in their main loop. ( Now that I'm off the subject... ) He even hacked with the video chip to get a really bad split screen; each with a different program running. It was amazing! Each screen was at a different memory location and there was a interrupt driven routine that would switch which video buffer was being displayed at whichever starting scan-line. You couldn't predict when a IRQ would happen (in relation to the raster) so he did these crazy timeing loops and it flickered horribly. Ugh. But it was great to watch. Later when the Commodore-64 was shipping I was amazed because split-screens could be done as easily as writing a couple bytes of 6502 code. Is Chris net.accessible? Maybe we should have a vote for comp.sys.i.remember.the.vic.20? :-) Ok. I've rambled enough, -Tom -- Tom Limoncelli -- limonce@pilot.njin.net -- tlimonce@drunivac.bitnet rutgers!njin!tlimonce -- Drew University, Madison, NJ -- 201-408-5389 "All's well that ends well... if your a functional rationalist."
gregg@cbnewsc.ATT.COM (gregg.g.wonderly) (12/01/89)
From article <Nov.29.22.45.00.1989.15112@pilot.njin.net>, by limonce@pilot.njin.net (Tom Limoncelli): > In article <5003@nigel.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: > >> Well, according to the IBM rep, there *is*. And this is one place where I >> couldn't figure out if he was giving me a line of crap or not. But he said >> that segmented architecture makes multi-tasking more efficient, because to >> change context you merely reload the code, data, and stack segments. Instead >> of copying the entire contents of page zero, out and in, etc. etc. Of > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> course, whe I pressed him as to why 8 Mhz Amiga 1000's with 512K can >> multi-task better than his 33Mhz PS/2's he had no satisfactory answer, >> but still... for future reference, I'd like to know, is this a legitimate >> issue? Originally, way back when, UN*X used to move things around so that the current processes U structure was located at an absolute location in the kernels address space. This may have been something like what he as alluding to. The 80[23]86 processors segment registers contain what is actually an index (segment selector) into the segment descriptor table. Whenever the segment registers are reloaded, the contents of the segment descriptor table entry indexed by the loaded value is loaded into the processor (expensive 8-16 byte read). The 80[23]86 solution to the task switching problem is the TSS (Task State Segment). This is a segment with a descriptor in the GDT (Global Descriptor Table) which has a special attribute (read special bit set). Any time that the selector for this segment is loaded into CS via a JMPI or CALLI instruction, the state of the current task (registers etc) is saved in the area of memory described by the contents of the GDT descriptor indexed by the current value in the TSR (Task State Register, another segment register if you will). The registers are then loaded from the area of memory described by the destination segment selector (the offset is ignored) which is then loaded into the TSR. We ported XINU to the 80286 in school, and used this mechanism to context switch. It provided a very clean mechanism. Each task had a TSS in its proc[] entry with a descriptor for that segment in the GDT. Task switching still involves saving and restoring some number of hardware registers. The cheapest task switch comes from processors which support mulitple register sets. The TMS9900 has only 3 hardware registers, the PC (program counter), ST (status) and WP (Workspace Pointer). WP points into memory where the next 32 bytes are used as 16 general purpose registers. Of course this is expensive in terms of memory access, but a well designed 9900 based application would use ultra fast RAM for the register area of memory. The BLWP (Branch and Link with Workspace Pointer, bullwhip for short) instruction of the 9900 places the previous WP in R13, the the previous PC in R14 and the previous ST in R15. Thus you had complete access to the calling procedures environment (and as far back in the chain of calls as you wanted to go). The resulting RAM based applications were generally pretty nasty because people got into the habit of passing arguments relative to the PC as in ... BLWP @foobar DEFW parm1,parm2,parm3 ABS R0,R0 BEQ badcall ... regs2 DEFS 32 FOOBAR DEFW regs2,$+2 MOVL (R14)+,R1 Get the parameters MOVL (R14)+,R2 MOVL (R14)+,R3 ... RTWP Return to caller The other neat thing is that you could use BLWP with the target being the registers as in "BLWP R1". The register are address would then be taken from R1 and the new PC value from R2. Oh well, enough of the past... -- ----- gregg.g.wonderly@att.com (AT&T bell laboratories)
daveh@cbmvax.UUCP (Dave Haynie) (12/01/89)
in article <5003@nigel.udel.EDU>, acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) says: > In Message-Id: <544@xdos.UUCP> Doug Merritt <doug@xdos.CCS.Northeastern.EDU> > writes: >> There's nothing wonderful about being forced to break huge data structures >> into smaller 64K chunks. Nor for code, for that matter. > Well, according to the IBM rep, there *is*. ... But he said that segmented > architecture makes multi-tasking more efficient, because to change context > you merely reload the code, data, and stack segments. Instead of copying the > entire contents of page zero, out and in, etc. etc. First of all, nothing I've heard of in recent times needs to copy page 0 in and out. Who'd do something that foolish? Multifinder? In any case, that would be multitasking programs never designed to multitask in the first place. Real multitasking on the Amiga doesn't require anything like that for a context swap, and no modern UNIX would either. This guy is obviously a salesman, and I bet he's not a bad comedian either... On the other hand, you might ask him what happens to segmented architectures when you want virtual memory, like under OS/2. It's much the same reason they added paging (though rather primitive compared to the '030's paging) to the '386 and use it under real operating systems like UNIX. He might not know, but based on the lines he's fed you so far, it's a fair question and I'd like to hear the answer he comes up with. >> Doug -- Dave Haynie Commodore-Amiga (Systems Engineering) "The Crew That Never Rests" {uunet|pyramid|rutgers}!cbmvax!daveh PLINK: hazy BIX: hazy Too much of everything is just enough
jtreworgy@eagle.wesleyan.edu (12/01/89)
In article <5003@nigel.udel.EDU>, acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: > In Message-Id: <544@xdos.UUCP> Doug Merritt <doug@xdos.CCS.Northeastern.EDU> > writes: > >> Ok, that said, he's not altogether wrong. But it should be rephrased: >> "...*forces* you to write more modular code". Mostly :-) about that part. >> There's nothing wonderful about being forced to break huge data structures >> into smaller 64K chunks. Nor for code, for that matter. > > Well, according to the IBM rep, there *is*. And this is one place where I > couldn't figure out if he was giving me a line of crap or not. But he said > that segmented architecture makes multi-tasking more efficient, because to > change context you merely reload the code, data, and stack segments. Instead > of copying the entire contents of page zero, out and in, etc. etc. Of > course, whe I pressed him as to why 8 Mhz Amiga 1000's with 512K can > multi-task better than his 33Mhz PS/2's he had no satisfactory answer, > but still... for future reference, I'd like to know, is this a legitimate > issue? > He's full of it... the Amiga doesn't copy code in and out of page 0 (maybe a Macintosh does for task switching)... the Amiga simply uses relocatable code. The 33Mhz PS/2 was not designed with task switching in mind. However, doesn't the '386 fix the 64k chunk problem (in virtual mode)? I think it has something like 2^32 bit chunks instead of 2^16 bit chunks. > > Craig. > > /// > /// "Hey OS/2, wanna race???" > \\\/// > \XX/ acm131@eric.ccs.northestern.edu -- James A. Treworgy -- No quote here for insurance reasons -- jtreworgy@eagle.wesleyan.edu jtreworgy%eagle@WESLEYAN.BITNET
lsr@Apple.COM (Larry Rosenstein) (12/02/89)
In article <Nov.29.22.45.00.1989.15112@pilot.njin.net> limonce@pilot.njin.net (Tom Limoncelli) writes: > Is there any multitasking OS that swaps between tasks/processes by > swapping all of page 0? I can't think of any. Is this the technique > that Mac's Switcher (is that what it's called?) or any of the similar > programs for the Atari ST do? The Macintosh does maintain some global state in low-memory, and MultiFinder has to swap the variables that are task-specific. Larry Rosenstein, Apple Computer, Inc. Object Specialist Internet: lsr@Apple.com UUCP: {nsc, sun}!apple!lsr AppleLink: Rosenstein1
fenske@dfsun1.electro.swri.edu (Robert Fenske Jr) (12/02/89)
In article <4385@eagle.wesleyan.edu> you write: >In article <5003@nigel.udel.EDU>, acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: >> In Message-Id: <544@xdos.UUCP> Doug Merritt <doug@xdos.CCS.Northeastern.EDU> >> writes: >> of copying the entire contents of page zero, out and in, etc. etc. Of ^ ^ Does ANY OS do this sort of thing now days? I thought this stuff went out with the '70's. > >However, doesn't the '386 fix the 64k chunk problem (in virtual mode)? I think >it has something like 2^32 bit chunks instead of 2^16 bit chunks. > Yes, in protected mode the '386 has 32-bit offsets; coupled with the 16-bit selectors makes for a 64TB virtual address space (should be enough for the '90's :-) ). I believe it also has a flat space mechanism where all the selectors are effectively 0, giving a more normal 4GB address space. -- Robert Fenske, Jr. Sw | The Taming the C*sm*s series: Electromagnetics Division /R---\ | Southwest Research Institute | I | | "The Martian canals were the dfsun1.electro.swri.edu 129.162.160.4 \----/ | Martian's last ditch effort."
doug@xdos.UUCP (Doug Merritt) (12/03/89)
In article <1469@dfsun1.electro.swri.edu> fenske@dfsun1.UUCP (Robert Fenske Jr) writes: >>> [ attribution lost: ] >>> of copying the entire contents of page zero, out and in, etc. etc. Of > ^ > ^ >Does ANY OS do this sort of thing now days? I thought this stuff went out >with the '70's. Yes, Minix does this, at least on the Atari and on the semi-mythical Amiga port of it. It's been a long time, but if I recall correctly even on the PC it does task switching by copying the contents of the address space around, to get around the lack of MMU. So it's even worse than just "page zero". Doug -- Doug Merritt {pyramid,apple}!xdos!doug Member, Crusaders for a Better Tomorrow Professional Wildeyed Visionary
a218@mindlink.UUCP (Charlie Gibbs) (12/05/89)
In article <5003@nigel.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: >In Message-Id: <544@xdos.UUCP> Doug Merritt <doug@xdos.CCS.Northeastern.EDU> >writes: > >> Ok, that said, he's not altogether wrong. But it should be rephrased: >> "...*forces* you to write more modular code". Mostly :-) about that part. >> There's nothing wonderful about being forced to break huge data structures >> into smaller 64K chunks. Nor for code, for that matter. > >Well, according to the IBM rep, there *is*. And this is one place where I >couldn't figure out if he was giving me a line of crap or not. But he said >that segmented architecture makes multi-tasking more efficient, because to >change context you merely reload the code, data, and stack segments. Instead >of copying the entire contents of page zero, out and in, etc. etc. Of >course, whe I pressed him as to why 8 Mhz Amiga 1000's with 512K can >multi-task better than his 33Mhz PS/2's he had no satisfactory answer, >but still... for future reference, I'd like to know, is this a legitimate >issue? He's giving you crap, whether he realizes it or not. Change context by reloading segment registers? What about the rest of the registers? I know Intel doesn't like having too many registers, but I can't think of very many programs which would appreciate having their registers trashed by a context switch. Of course, a clever Intel salesman could argue that having fewer registers is actually an advantage because there's less to save and restore :-) but unless the 286 or 386 has an equivalent to the 68000's MOVEM instruction I can't see much time being saved. Besides, a 68000 program which accesses things relative to address registers uses those address registers the same way an 80x86 program uses segment registers, except that it's not limited to a 64K segment size. Heck, even Intel realizes that 64K segments suck rocks; the 386 lifts that limitation, although it's too late for MS-DOS victims. And speaking of crap, what's all this about shuffling the contents of page zero? What operating system does that as part of a context switch? Bravo for nailing him on the multitasking capability. Of course, before OS/2 came along, there was always the stock IBM answer: "If we don't have it, you don't need it!" It'll be a while yet before IBM devotees truly appreciate multitasking the way we have been doing for four years now - but eventually they'll come to enjoy it, and will remain forever grateful to IBM and Microsoft for "inventing" it. Flame off. OBJ: Q: What's the difference between a computer salesman and a used car salesman? A: The used car salesman knows when he's lying. Charlie_Gibbs@mindlink.UUCP "I could never get the hang of ideology. I do the rock, myself." -- Tim Curry
acm131%eric.ccs.northeastern.edu@cunyvm.cuny.edu (12/06/89)
In Message-Id: <544@xdos.UUCP> Doug Merritt <doug@xdos.CCS.Northeastern.EDU> writes: > Ok, that said, he's not altogether wrong. But it should be rephrased: > "...*forces* you to write more modular code". Mostly :-) about that part. > There's nothing wonderful about being forced to break huge data structures > into smaller 64K chunks. Nor for code, for that matter. Well, according to the IBM rep, there *is*. And this is one place where I couldn't figure out if he was giving me a line of crap or not. But he said that segmented architecture makes multi-tasking more efficient, because to change context you merely reload the code, data, and stack segments. Instead of copying the entire contents of page zero, out and in, etc. etc. Of course, whe I pressed him as to why 8 Mhz Amiga 1000's with 512K can multi-task better than his 33Mhz PS/2's he had no satisfactory answer, but still... for future reference, I'd like to know, is this a legitimate issue? > So back to the salesman: he's right, and he's wrong. > Doug > -- > Doug Merritt {pyramid,apple}!xdos!doug > Member, Crusaders for a Better Tomorrow Professional Wildeyed Visionary Craig. /// /// "Hey OS/2, wanna race???" \\\/// \XX/ acm131@eric.ccs.northestern.edu
rogers%iris.ucdavis.edu@cunyvm.cuny.edu (12/07/89)
In article <5003@nigel.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: >Well, according to the IBM rep, there *is*. And this is one place where I >couldn't figure out if he was giving me a line of crap or not. But he said >that segmented architecture makes multi-tasking more efficient, because to >change context you merely reload the code, data, and stack segments. Instead >of copying the entire contents of page zero, out and in, etc. etc. Of >course, whe I pressed him as to why 8 Mhz Amiga 1000's with 512K can >multi-task better than his 33Mhz PS/2's he had no satisfactory answer, >but still... for future reference, I'd like to know, is this a legitimate >issue? > > /// "Hey OS/2, wanna race???" > \XX/ acm131@eric.ccs.northestern.edu page zero? I thought only 6502's had zero page stuff to worry about? Maybe the IBM salesman thought the Amiga ran on a 6502. Well, maybe the IBM salesman's right, the IBM w/80386 multitasks a little bit better than a commodore 64. Where do these people get these ideas? Its a weird and stupid world we live in. ------------------------------------------------------ Quantum _\/_ 2727 Eel Bruce (6502 RULES!) Rogers |\ Duck ( 0 0) Davis, Ca 95616 Quantum Duck Software, |\ \______/ / \\\ 916-756-2684 rogers@iris.ucdavis.edu |\ < < | \/ "It's better to be the real thing than the right thing." \________/ Quark!
limonce%pilot.njin.net@cunyvm.cuny.edu (12/07/89)
In article <5003@nigel.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes: > Well, according to the IBM rep, there *is*. And this is one place where I > couldn't figure out if he was giving me a line of crap or not. But he said > that segmented architecture makes multi-tasking more efficient, because to > change context you merely reload the code, data, and stack segments. Instead > of copying the entire contents of page zero, out and in, etc. etc. Of ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > course, whe I pressed him as to why 8 Mhz Amiga 1000's with 512K can > multi-task better than his 33Mhz PS/2's he had no satisfactory answer, > but still... for future reference, I'd like to know, is this a legitimate > issue? Is there any multitasking OS that swaps between tasks/processes by swapping all of page 0? I can't think of any. Is this the technique that Mac's Switcher (is that what it's called?) or any of the similar programs for the Atari ST do? "Page 0" reminds me of "Zero Page" mode" like on the 6502. I remember Chris Lane (of Yale) published some code that permitted a VIC-20 to multitask. It swapped page 0, 1 and 2 (the stack) and the registers. It was so slow that rather than swapping every quantum, each program would have to SYS to a memory location once in their main loop. ( Now that I'm off the subject... ) He even hacked with the video chip to get a really bad split screen; each with a different program running. It was amazing! Each screen was at a different memory location and there was a interrupt driven routine that would switch which video buffer was being displayed at whichever starting scan-line. You couldn't predict when a IRQ would happen (in relation to the raster) so he did these crazy timeing loops and it flickered horribly. Ugh. But it was great to watch. Later when the Commodore-64 was shipping I was amazed because split-screens could be done as easily as writing a couple bytes of 6502 code. Is Chris net.accessible? Maybe we should have a vote for comp.sys.i.remember.the.vic.20? :-) Ok. I've rambled enough, -Tom -- Tom Limoncelli -- limonce@pilot.njin.net -- tlimonce@drunivac.bitnet rutgers!njin!tlimonce -- Drew University, Madison, NJ -- 201-408-5389 "All's well that ends well... if your a functional rationalist."
tron1@tronsbox.UUCP (HIM) (12/21/89)
>that segmented architecture makes multi-tasking more efficient, because to >change context you merely reload the code, data, and stack segments. Instead >of copying the entire contents of page zero, out and in, etc. etc. Of This IBM rep is not really with it. To do multitasking on a OS that has been DESIGNED for it , you only change contexts by changing stacks and registers. On "single user" OS's , where programs have been written with HARD CODED addresses for DOS cals and all, you would have to load "page 0" and execute from there. THE REASON the Amiga OS doesnt USE any fixed addresses is in part to avoide some of this. (Its late , I know what I am trying to say , but can't say it well. **************************************************************************** "Perfume and leather baby , you and me together baby, what good is living in paradise, if you don't let yourself once or twice." -Tiffany Kenneth J. Jamieson ---- THE BOSS at Xanadu Enterprises Inc. UUCP: tron1@tronsbox.UUCP BEST PATH ---> uunet!tronsbox!tron1 Sysop, The Penthouse ]I[ BBS - (201)759-8450 / (201)759-8568 ****************************************************************************
cmcmanis@stpeter.Sun.COM (Chuck McManis) (12/22/89)
The original comment was :
that segmented architecture makes multi-tasking more efficient,
because to change context you merely reload the code, data, and
stack segments. Instead of copying the entire contents of page
zero, out and in, etc. etc.
And as usual a lot of helpful people gave their interpretation of what he
meant such as this one :
In another article Kenneth J. Jamieson writes:
This IBM rep is not really with it. To do multitasking on a OS
that has been DESIGNED for it , you only change contexts by
changing stacks and registers.
All of the explanations are well and good. As a former Intel employee
I can imagine the information that the sales critter actually heard and
how he translated it.
One of the big "features" of the x86 [x > 2] architecture is that the
processor is _designed_ to multitask. What this means is that there is
a hardware notion of what a task is and the CPU can deal with those as
individual units. One of the ways in which it does this is through 'gates'.
When an important even occurs such as an exception or an interrupt, the
CPU switches tasks and stores all of the context for the previous task
and loads all of the context for the new task.
This can be an advantage or a disadvantage depending on how you look at it.
Take something innocuous like hardware multiply, the M88000 RISC chip has
it and the SPARC RISC chip doesn't. Both can multiply though.
The page zero reference was undoubtedly pointed at the Macintosh which has
some absolute references in the OS but this kind of situation can occur
whenever you build an OS without an MMU unless you are careful.
--Chuck McManis
uucp: {anywhere}!sun!cmcmanis BIX: cmcmanis ARPAnet: cmcmanis@Eng.Sun.COM
These opinions are my own and no one elses, but you knew that didn't you.
"If it didn't have bones in it, it wouldn't be crunchy now would it?!"