cquenel@polyslo.CalPoly.EDU (24 more school days) (05/04/89)
In 9680 yair@tybalt.caltech.edu.UUCP (Yair Zadik) sez: >A couple of years ago there was an article in Byte about a proposed design >which they called WISC for Writeable Instruction Set Computer. The idea >was to do a RISC or microcoded processor which had an on board memory >containing macros which behaved like normal instructions (I guess it was >on EEPROM like memory). That way, each compiler could optimize the >instruction set for its language. The end result (theoreticly) is that >you get the efficiency of RISC with the memory bandwith of CISC. I haven't >heard else about it. Is anyone out there working on such a processor or is >it just a bad idea? > >Yair Zadik >yair@tybalt.caltech.edu I believe the Clipper CPU chip does this, but it is not setable for each process. It is fixed for a given chip. This set of built-in subroutines was used for testing, some floating point (I think), and whatever code they thought they didn't want to have to come through the i-cache. As has already been pointed out, doing this on a process specifiable level would be a hassle for context switching. If you already have an icache and a dcache on-chip, you could have a micro-code cache as well. If you didn't worry about "mixing" them, you could have room for 2 or 4 sets of micro-code and have each set tagged with the process ID in some way. You could either fault each set of micro-code in in chunks, or do the whole thing at one time. Another alternative would be to have a fixed number of sets of micro-code, tailored for (for example) The kernel : with micro-code routines for process management (load/store process context) virtual memory management (cache flushing etc) pascal : maybe a different calling sequence fortran : with more tolerant aligment for handling COMMMON block difficulties. LISP : get ideas from the bujillion micro-coded LISP-stations on the market. C : be sure to put those nasty str* routines in micro-code ! etc etc etc Anyway, you could have software traps to replace micro-code that wasn't configured into the system, with slower conventional routines. The site could decide which sets of micro-code they wanted to install at kernel-link time. Well, what do people think ? I know it's a lot of trouble, but you could relieve a lot of the pressure that RISC puts on the icache (and consequently the memory bus). --chris All I ask of life is a constant and exaggerated sense of my own importance. -- @---@ ----------------------------------------------------------------- @---@ \. ./ | Chris (The Lab Rat) Quenelle cquenel@polyslo.calpoly.edu | \. ./ \ / | You can keep my things, they've come to take me home -- PG | \ / ==o== ----------------------------------------------------------------- ==o==
bcase@cup.portal.com (Brian bcase Case) (05/05/89)
>Well, what do people think [about WISC]? >I know it's a lot of trouble, but you could relieve a lot of the pressure >that RISC puts on the icache (and consequently the memory bus). Oh, OH, OH MY GOD, my instruction cache is about to BLOW UP from all that pressure!! It's gonna blow! RUN FOR YOUR LIVES!! [Oh come on, it's just a joke. I'm not flaming.] The point I want to make is that if RISC (or anything else) keeps the instruction cache 100% busy, THAT IS GOOD, NOT BAD. This means that the trouble spent building the damn thing was really worth it, to say it one way. This is not "pressure." The fact is that instruction caches work really well. There is no need to "help them out" or "relieve a lot of the pressure put on them." People seem to think that cache designs and bus designs are right at the breaking point. We're just lucky that we were able to build satisfactory caches and buses for this generation of machines, but, "Oh m'God, what about the next generation? There's just nothing left, we've run out of trickery!" This is not true. Cache and bus designs are right at the edge of what is needed for a particular generation of machines *BY DESIGN*. To build something radically beyond what is needed is a waste of money, and designers know it. Sure, this is hard stuff at 50 MHz and beyond. But to think that we need to go back to CISC or soft machines as a solution is probably not right. To me, arguing for CISC in the face of high-frequency implementation problems is equivalent to saying: "These machines is runnin' too fast; what say let's slow 'em down agin." David Letterman: "We are very near the end of civilization."
koopman@a.gp.cs.cmu.edu (Philip Koopman) (05/05/89)
In article <10978@polyslo.CalPoly.EDU>, cquenel@polyslo.CalPoly.EDU (24 more school days) writes: > In 9680 yair@tybalt.caltech.edu.UUCP (Yair Zadik) sez: > >A couple of years ago there was an article in Byte about a proposed design > >which they called WISC for Writeable Instruction Set Computer. The idea > >was to do a RISC or microcoded processor which had an on board memory > >containing macros which behaved like normal instructions (I guess it was > >on EEPROM like memory). That way, each compiler could optimize the > >instruction set for its language. The end result (theoreticly) is that > >you get the efficiency of RISC with the memory bandwith of CISC. I haven't > >heard else about it. Is anyone out there working on such a processor or is > >it just a bad idea? > >Yair Zadik > >yair@tybalt.caltech.edu WISC Technologies built two such processors, a 16-bit and a 32-bit processor. The Byte article described the 16-bit processor in somewhat generic terms. The technology has since been licensed to Harris Semiconductor, and forms the basis for their 32-bit RTX (Real Time Express) chip now in development. > As has already been pointed out, doing this on a process specifiable > level would be a hassle for context switching. If you already have > an icache and a dcache on-chip, you could have a micro-code cache > as well. If you didn't worry about "mixing" them, you could have > room for 2 or 4 sets of micro-code and have each set tagged with the > process ID in some way. You could either fault each set of micro-code in > in chunks, or do the whole thing at one time. The original processors used RAM control store and required a host processor. Real-live chips that could be used in a stand-alone mode are being built that have ROM for a core instruction set and RAM for application-specific instructions. Since the primary application is real-time embedded control, it is *not* important to worry about managing the control store RAM, since the programmer gets to determine the instruction set at compile time. This is not at all like a multi-user workstation environment, where contention for a limited amount of control store by several large programs written by different companies can be a problem. Phil Koopman koopman@greyhound.ece.cmu.edu Arpanet 5551 Beacon St. Pittsburgh, PA 15217 Recent PhD graduate at CMU and sometime consultant to Harris Semiconductor. I speak only for me, etc. But, I am the one who wrote the Byte Article. --
kds@blabla.intel.com (Ken Shoemaker) (05/06/89)
I think the problem isn't one to get solved by downloadable microcode. As discussed previously, this is really almost the as just having a risc with a good high speed instruction cache. Complex instructions implemented just a branches into the high speed downloadable cache don't really go any faster. However, if you have complex instructions, then this really is low hanging fruit in terms of superscaler implementations because a single instruction specifies multiple things to do. If you can do all these things in a single clock, voila. However, solving this problem requires adding more functional blocks, e.g., adders, address paths, register ports, etc. to the implementation. ------------ I've decided to take George Bush's advice and watch his press conferences with the sound turned down... -- Ian Shoales Ken Shoemaker, Microprocessor Design, Intel Corp., Santa Clara, California uucp: ...{hplabs|decwrl|pur-ee|hacgate|oliveb}!intelca!mipos3!kds
schow@bnr-public.uucp (Stanley Chow) (05/08/89)
In article <17933@cup.portal.com> bcase@cup.portal.com (Brian bcase Case) writes: >>Well, what do people think [about WISC]? > >>I know it's a lot of trouble, but you could relieve a lot of the pressure >>that RISC puts on the icache (and consequently the memory bus). > >The point I want to make is that if RISC (or anything else) keeps the >instruction cache 100% busy, THAT IS GOOD, NOT BAD. Actually, it is bad. Keeping the i-cache 100% busy means it is the bottle neck, so the original argument applies. Stanley Chow BitNet: schow@BNR.CA BNR UUCP: ..!psuvax1!BNR.CA.bitnet!schow (613) 763-2831 ..!utgpu!bnr-vpa!bnr-fos!schow%bnr-public I am just a small cog in a big machine. I don't represent nobody.
bcase@cup.portal.com (Brian bcase Case) (05/08/89)
>>The point I want to make is that if RISC (or anything else) keeps the >>instruction cache 100% busy, THAT IS GOOD, NOT BAD. > >Actually, it is bad. >Keeping the i-cache 100% busy means it is the bottle neck, so the original >argument applies. If 100% busy means that the instruction cache is always missing, yes, it is the bottleneck. If 100% busy means that the instruction cache is delivering an instruction to the processor every cycle, no it is not the bottleneck. Assuming the processor can execute 1 instruction per cycle and the instruction cache is delivering 1 instruction per cycle (a safe assumption for a RISC machine with a Harvard implementation), the instruction cache is NOT the bottleneck. The instruction cache and processor are working at their maximum rates, a fact which indicates a good design. I thought it was clear that by 100% busy, I meant delivering an instruction to the processor on every cycle (or very nearly so, which is the case for most RISC machines). Similarly, if the processor's instructions specify two source registers and one destination register and the register file can source two operands and sink one operand, the register file is not the bottleneck, even for a long sequence of arithmetic/logical/shift ops in which the register file is kept 100% busy.