shankar@src.honeywell.COM (Son of Knuth) (11/23/88)
In article <11562@cup.portal.com> bcase@cup.portal.com (Brian bcase Case) writes: >> mov lower,i >> bra entry >>body foo >> add step,i >>entry cmp i,upper >> bge body >> >>Statically, same number of instructions; dynamically, less except in the >>zero-trip case. But look, the add, compare, and branch are consecutive. > >Ok, but notice the label in the middle of the add-compare-branch sequence? >I don't think it is possible to specify the ACB instruction in a version >that has a branch destination in the middle! This is one of the points of >RISC: Hey, *I'M* the compiler, let *me* decide on the semantics of >instruction sequences. But this can be transformed into: bra entry body foo acb step,i,upper,body (or whatever the ACB operands are) entry cmp i,upper bge body This doesn't justify the ACB instruction - but it does point out its usefulness in the above example, assuming it doesn't take too many microcode cycles.
shankar@src.honeywell.COM (Son of Knuth) (11/23/88)
Sorry for the last post on CAMs - I got the wrong article. onward - It seems that content addressible memories, although present an awful lot in the literature over the years, have never really taken off. Any comments on why?
lpelleti@enint.Wichita.NCR.COM (Larry Pelletier) (12/07/88)
In article <12371@srcsip.UUCP>, shankar@src.honeywell.COM (Son of Knuth) writes: > > It seems that content addressible memories, although present an > awful lot in the literature over the years, have never really taken off. > Any comments on why? There was never a "popular" programming paradigm that could really take advantage of content addressible memories. Although some things could be done, it really didn't help the concepts of data and code in languages such as Fortran, Cobol, Pascal, or C. Now that we are seeing the emergence of object-oriented programming (it's no longer just a toy :-)), we will begin to see a growing popularity in content adressible memories. -- Larry Pelletier Advanced Development, E&M Wichita <L.Pelletier@Wichita.NCR.COM> <{ece-csc,hubcap,gould,rtech}!ncrcae!ncrwic!l.pelletier> <{sdcsvax,cbatt,dcdwest,nosc.ARPA,ihnp4}!ncr-sd!ncrwic!l.pelletier>
hammond@faline.bellcore.com (Rich A. Hammond) (12/09/88)
The reason that content addressable memories haven't caught on is rather simple. From an IC manufacturing view, there is no "one size fits all" version to make. To get reasonable performance one needs to have the entire word width on a chip, one can't make Nx1 chips and stack them up to the required word width. This gives severe I/O problems for interesting (48 bits and more) size words, either it takes chips with lots of pins (read lots of $$) or you multiplex I/O and performance falls down to the level of a RISC processor with cache, which means you also lost the sale. Appendix: Why can't you have x1 chips? Because you need to know that the whole word matched, matches of portions of the word aren't enough. So, an Nx1 chip would need roughly log (base 2) of N pins to communicate with the other chips and could take multiple cycles to arrive at a match/no match decision. Reducing the time to match/no match appears to require increasing the number of pins. And these communication pins have to have pretty hefty drivers on them. Rich Hammond
henry@utzoo.uucp (Henry Spencer) (12/10/88)
In article <367@enint.Wichita.NCR.COM> lpelleti@enint.Wichita.NCR.COM (Larry Pelletier) writes: >> It seems that content addressible memories, although present an >> awful lot in the literature over the years, have never really taken off. >> Any comments on why? > >There was never a "popular" programming paradigm that could really take >advantage of content addressible memories... Also, and more significantly, content-addressible memories are inflexible and are significantly more expensive to make than ordinary memory (they are more complex and there is much less demand to bring production volumes up). It has generally been more cost-effective to punt this problem to software. Schemes like hashing, done cleverly, are often almost as good. And they don't need expensive special hardware. (If you want a parallel, consider Multics vs. Unix. Despite its vastly greater complexity, Multics is arguably a better system. Unfortunately, it ran only on specialized and expensive hardware. Unix doesn't do some things nearly as nicely, but it runs on anything, which is why it is orders of magnitude more popular.) -- SunOSish, adj: requiring | Henry Spencer at U of Toronto Zoology 32-bit bug numbers. | uunet!attcan!utzoo!henry henry@zoo.toronto.edu
EGNILGES@pucc.Princeton.EDU (Ed Nilges) (12/12/88)
In article <367@enint.Wichita.NCR.COM>, lpelleti@enint.Wichita.NCR.COM (Larry Pelletier) writes: >There was never a "popular" programming paradigm that could really take >advantage of content addressible memories. Although some things could be >done, it really didn't help the concepts of data and code in languages such >as Fortran, Cobol, Pascal, or C. The REXX language has content-addressibility in software that could be hardware-assisted, but is not at this time. For example, in REXX, if name="MRED" and address.MRED="Happydale Farms", then address.name will get the address of Mr. Ed. Also, what about LISP? However, the problems described by subsequent posters to this thread apply to REXX. Edward Nilges "Where is the wisdom we lost in knowledge? Where is the knowledge we lost in information?" - T. S. Eliot
mslater@cup.portal.com (Michael Z Slater) (12/12/88)
> Why are there no content addressable memories?
A timely question - on Dec. 5, AMD introduced the 99C10, claimed to be the
first VLSI CAM. Size is 256 words, word width programmable to 16 bits or
48 bits. Match detection is 100 ns, technolog is CMOS, package is 28-pin
DIP, and price is $42.50 in 100s. Supposedly now in production.
Michael Slater, Microprocessor Report
shankar@src.honeywell.COM (Son of Knuth) (12/13/88)
In article <6694@pucc.Princeton.EDU> EGNILGES@pucc.Princeton.EDU writes: >In article <367@enint.Wichita.NCR.COM>, lpelleti@enint.Wichita.NCR.COM (Larry Pelletier) writes: >>There was never a "popular" programming paradigm that could really take >>advantage of content addressible memories. Although some things could be >>done, it really didn't help the concepts of data and code in languages such >>as Fortran, Cobol, Pascal, or C. That's probably correct with procedural languages, but how about languages like Prolog or other logic languages? I believe that the use of CAMs would lead to significantly greater performances then the use of the more traditional indexing schemes for rule unification and retrieval, despite problems with inherently sequential portions of the problem. CAMs can also be used for maintenance of the binding environments. As far as procedural languages go, what we need is a language that supports associative data structures (tables?), but perhaps this is a solution searching for a problem. Then again, maybe it's a feature that was never supported precisely because of the lack of CAMs. > Also, what about LISP? How do CAMs help LISP?
phil@diablo.amd.com (Phil Ngai) (12/13/88)
Since there has been all this talk about CAMs, I am taking the liberty of including a press release on my company's product. (if I get flamed for this then I won't do it anymore) "The industry's first VLSI CAM is now available from AMD. The high-performance Am99C10, with a capacity of 256 words and a user-programmable word width of 16 bits or 48 bits, features a totally new concept in memory devices -- memory with built-in logic on every cell. The Am99C10 CAM is composed of 256 words, each consisting of a 48-bit register and a 48-bit maskable comparator. Data presented to the CAM is simultaneously compared to all 256 addresses in a single 100 ns cycle. When a match occurs, the on-chip priority encoder generates a match-word address identifying the location of the data in the CAM. If multiple matches occur, the encoder generates the lowest matched address. Any or all bits of the comparand value can be selectively masked, allowing for comparison on only a portion of the data word. The CAM is ideal for use in high-speed Ethernet and FDDI local area networks, and in bridging applications where it can operate as an address filter and perform the network address look-up function. The Am99C10 CAM also has applications in database machines, file servers, image processing, and neural networks. For more information, contact Barbara Kern, (408) 982-7451." Please note the following disclaimers: * I am not an official spokesman for the company. * Any mistakes made in the transcription are my fault. * I know nothing about this device besides what you just read. I work in another group entirely and am merely posting this as a service to the readers of this group. Please contact the listed person if you have any questions or comments. -- Phil Ngai, phil@diablo.amd.com | Freeways used to be a low income {uunet,decwrl,ucbvax}!amdcad!phil | housing program.
aglew@mcdurb.Urbana.Gould.COM (12/14/88)
>"The industry's first VLSI CAM is now available from AMD. The >high-performance Am99C10, with a capacity of 256 words and a >user-programmable word width of 16 bits or 48 bits, features a totally >new concept in memory devices -- memory with built-in logic on every >cell. I think this press release expresses the basic problem with CAMs - they are too small. For the tasks that really need CAM type parallelism, 256 words is far too few. To process really large data sets this way you will have to load the CAM, match, load the CAM again, match, and so on... However, it's a start. AMD's CAM will be useful for applications that can afford to put enough of them together to make a real system, as well as for special purpose applications, like searching an entire track of a disk for a given pattern. Out of curiousity, what other applications are people buying the AMD CAM for (as opposed to wanting to apply it to)?
gsarff@meph.UUCP (Gary Sarff) (12/16/88)
In article <13308@srcsip.UUCP> shankar@src.honeywell.COM (Son of Knuth) writes: >As far as procedural languages go, what we need is a language that supports >associative data structures (tables?), but perhaps this is a solution >searching for a problem. Then again, maybe it's a feature that was never >supported precisely because of the lack of CAMs. The languages SNOBOL4,SPITBOL (and others of their relations) and the language Icon all have associative tables as first class data structures, i.e. they can be passed as arguments to functions, returned as results, assigned, compared, an entire table can be an element of a larger aggregate type such as a field in a record, an array element etc. CAM's sound ideal for this since these languages pass around descriptors for these tables rather than the tables themselves and the elements in the tables are also descriptors that would fit into CAM memory locations. ------------------------------------------------------------------------ "Those whom the gods would destroy, they first make mad" He who steals my core-dump, steals trash
seanf@sco.COM (Sean Fagan) (12/16/88)
In article <367@enint.Wichita.NCR.COM>, lpelleti@enint.Wichita.NCR.COM (Larry Pelletier) writes: >There was never a "popular" programming paradigm that could really take >advantage of content addressible memories. Although some things could be >done, it really didn't help the concepts of data and code in languages such >as Fortran, Cobol, Pascal, or C. I think that CAM would help AWK in many circumstances (accessing any member of an array would help *alot*), but I haven't actually sat down and done any work on it. Has anybody? -- Sean Eric Fagan | "Do not meddle in the affairs of wizards, seanf@sco.UUCP | for they are subtle, and quick to anger." (408) 458-1422 | Any opinions expressed are my own, not my employers'.
landman%hanami@Sun.COM (Howard A. Landman) (12/16/88)
>In article <12371@srcsip.UUCP>, shankar@src.honeywell.COM (Son of Knuth) writes: >> It seems that content addressible memories, although present an >> awful lot in the literature over the years, have never really taken off. >> Any comments on why? In article <367@enint.Wichita.NCR.COM> lpelleti@enint.Wichita.NCR.COM (Larry Pelletier) writes: >There was never a "popular" programming paradigm that could really take >advantage of content addressible memories. Although some things could be >done, it really didn't help the concepts of data and code in languages such >as Fortran, Cobol, Pascal, or C. The Connection Machine can quite easily perform as a CAM, and this ability is embedded in the CM versions of Lisp and C. For example, in C*, if m is a "mono" (scalar) variable and p is a "poly" (xector) variable, you can do things like: /* Set m to the maximum odd value in p. */ if (p & 1) m = (>?= p); or: /* Loop through all processors that have 61 in p. */ active = (p == 61); /* active is a poly var */ while (active) /* i.e., while *any* value of active is TRUE */ { /* Get address of first remaining one. */ m = (<?= my_address); /* my_address calculated elsewhere */ /* Make sure we don't try it again. */ m->active = FALSE; /*** OTHER OPERATIONS (using m) HERE ***/ } Of course most times you would try to do the OTHER OPERATIONS above in parallel. You can't if they talk to the outside world serially (e.g. printf()), but if you can it becomes simply: if (p == 61) { /*** OTHER OPERATIONS HERE ***/ } I find it pretty natural to express things this way; often it takes less code than straight C, because many loops become unnecessary. From the viewpoint of a CM, a CAM is just not very powerful, because it only implements a very small set of operations. >Now that we are seeing the emergence of >object-oriented programming (it's no longer just a toy :-)), we will begin >to see a growing popularity in content adressible memories. I've worked in Smalltalk, but I don't understand this comment at all. How are CAMs supposed to help OOP? Howard A. Landman landman@hanami.sun.com "It's a lesson to me."
ok@quintus.uucp (Richard A. O'Keefe) (12/16/88)
In article <13308@srcsip.UUCP> shankar@wabasha.UUCP (Subash Shankar) writes: >As far as procedural languages go, what we need is a language that supports >associative data structures (tables?), but perhaps this is a solution >searching for a problem. SAIL is just such a language. I'm surprised that no-one has mentioned the CWI(*) monograph "Associons and the Closure Statement" in this discussion. Its topic is "if we had large fast associative memories, how might we use them?" I'm also surprised that no-one has mentioned CAFS, described in ICL Tech J. ICL had several papers on using it; I think they used it in an expert system for hardware diagnosis amongst other things. (*) Well, the organisation is CWI now, but it was MC when this thing came out.
andrew@frip.gwd.tek.com (Andrew Klossner) (12/16/88)
[] "As far as procedural languages go, what we need is a language that supports associative data structures (tables?) ..." So soon we forget .. SNOBOL4, popular in the early 1970s, featured "tables," like arrays but the subscript could be anything (a string, a pattern, another table ...) The language sank under its dependence on Fortran-like unstructured control flow, and its father went on to invent Icon. I don't know whether Icon has tables. -=- Andrew Klossner (uunet!tektronix!hammer!frip!andrew) [UUCP] (andrew%frip.gwd.tek.com@relay.cs.net) [ARPA]
rik@june.cs.washington.edu (Rik Littlefield) (12/16/88)
In article <00051@meph.UUCP>, gsarff@meph.UUCP (Gary Sarff) writes: > > The languages SNOBOL4,SPITBOL ... and > Icon all have associative tables as first class data structures, i.e. they > can be passed as arguments to functions, returned as results, assigned, > compared, an entire table can be an element of a larger aggregate type such > as a field in a record, an array element etc. CAM's sound ideal for this > since these languages pass around descriptors for these tables rather than > the tables themselves and the elements in the tables are also descriptors > that would fit into CAM memory locations. > Yes, these tables are very slick. But when I use them, the "index" values usually end up being strings of substantially more than 32 or 64 bits, and the tables very often have more than 256 entries, sometimes several thousand. Furthermore, these languages don't have declarations that would allow a compiler to determine when a fixed-size CAM would be big enough, so there would be execution time overhead in deciding what implementation to use (pure software or CAM-assisted). I remain unconvinced that the current and foreseeable CAMs would provide enough improvement in this context to justify their cost. --Rik
shankar@src.honeywell.COM (Son of Knuth) (12/17/88)
In article <6746@june.cs.washington.edu> rik@june.cs.washington.edu (Rik Littlefield) writes: > [problems with using a fixed width CAM to access words when the number > of bits in the index is larger then the CAM width] > >--Rik It is not difficult to design CAMs with chaining capability. Probably the simplest way to include this capability is to store a multi-word record in contiguous words, and allow the capability to shift the mark bits (or response registers as some prefer to call it) one bit down. To match a multi-word record, you just match one word, then shift the mark bits one place, match the next word, and on and on. Does the AMD product described previously have chaining capability?
henry@utzoo.uucp (Henry Spencer) (12/17/88)
In article <1929@scolex> seanf@sco.COM (Sean Fagan) writes: >I think that CAM would help AWK in many circumstances (accessing any member >of an array would help *alot*), but I haven't actually sat down and done any >work on it. The question is not whether it would help, but whether it would help *more* than an equivalent investment in making the general-purpose CPU and memory faster, or in smarter hashing algorithms, or in more memory to speed up hashing by minimizing collisions. I doubt it. -- "God willing, we will return." | Henry Spencer at U of Toronto Zoology -Eugene Cernan, the Moon, 1972 | uunet!attcan!utzoo!henry henry@zoo.toronto.edu
aglew@mcdurb.Urbana.Gould.COM (12/17/88)
>/* Written 10:36 am Dec 15, 1988 by gsarff@meph.UUCP in mcdurb:comp.arch */ >The languages SNOBOL4,SPITBOL (and others of their relations) and the language >Icon all have associative tables as first class data structures, i.e. they >can be passed as arguments to functions, returned as results, assigned, >compared, an entire table can be an element of a larger aggregate type such >as a field in a record, an array element etc. CAM's sound ideal for this >since these languages pass around descriptors for these tables rather than >the tables themselves and the elements in the tables are also descriptors >that would fit into CAM memory locations. CAMs would be ideal for this, if they were large enough. Imagine trying to program on a machine where you had 64K of registers, that could not be indirectly addressed, and 256 words of randomly addressable memory. If you wanted to do things like indexing you would constantly be swapping stuff from the non-randomly-addressable memory to the randomly addressable memory. Unless you had a really good compiler that made this transparent, it would eventually become so onerous that you would try some other way, and even if the compiler were good it would probably be slow. Ideally, the entire memory would be both content and randomly addressable. Machines like the Connection Machine make this possible.
chris@mimsy.UUCP (Chris Torek) (12/17/88)
In article <1929@scolex> seanf@sco.COM (Sean Fagan) writes: >"Do not meddle in the affairs of wizards, > for they are subtle, and quick to anger." [And it is also said: Go not to the Elves for counsel, for they will say both no and yes.] >I think that CAM would help AWK in many circumstances .... Well, no and yes. Awk wants to associate by arbitrary-length strings. You would be faced with a choice of variable length matching in hardware, with a very long maximum, or limiting the match length, and both padding input as necessary and breaking up long associations. CAMs are, at present, much better with fixed-length tags. -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163) Domain: chris@mimsy.umd.edu Path: uunet!mimsy!chris
rajeevc@mipos2.intel.com (Rajeev Chandrasekhar) (12/19/88)
In article <10748@tekecs.TEK.COM> andrew@frip.gwd.tek.com (Andrew Klossner) writes: >[] > >The language sank under its dependence on Fortran-like unstructured >control flow, and its father went on to invent Icon. I don't know >whether Icon has tables. > I havent used icon for some time, but I remember it having tables, as a data structure. Rajeev Chandrasekhar Intel Corp >> theres someone in my head, and its not me << 2625, Walsh Ave MS SC4-59 (408) 765-4632 Santa Clara, CA 95051 {hplabs,oliveb}!intelca!mipos2!rajeevc
daveb@geaclib.UUCP (David Collier-Brown) (12/19/88)
> In article <1929@scolex> seanf@sco.COM (Sean Fagan) writes: >>I think that CAM would help AWK in many circumstances .... From article <15041@mimsy.UUCP>, by chris@mimsy.UUCP (Chris Torek): > Well, no and yes. > > Awk wants to associate by arbitrary-length strings. You would be faced > with a choice of variable length matching in hardware, with a very long > maximum, or limiting the match length, and both padding input as > necessary and breaking up long associations. CAMs are, at present, > much better with fixed-length tags. And then again, yes and no... Awk (and SNOBOL, and Icon) use a straightforward mapping of their variable-length strings into table (array) elements, aimed at fast execution on a sequential processor without CAM. That does not mean that one cannot come up with a mapping for processors with CAM... About 5 years ago, I worked on the NDX "fast indexing" machine, discussed in an IEEE Computer special issue (in a box here somewhere (:-)). Its purpose in life was finding documents [elements] containing data which matched certain boolean search terms [indices]. Since the search terms were NOT small or fixed-length, we munged them enthusiastically to allow a fast-search processor (29xx bit-slices) to look through a meg or so of surrogates [indices]. Specifically we used eight orthogonal hash functions to fold them into a fixed-size search space with small (and predictable) possibility of getting false drops [erronious fetches]. This is generalizable to languages like awk, and possibly to others with a need for fine-grained parallellism (prolog, I think). I do wonder if CAMs should not be treated as devices, though, and not folded into those language(s) which do not actually need them... As Henry Spencer points out, a machine with just CAMs runs a good chance of being outperformed by one with valves too. On the third hand, if a CAM was part of the critical "inner loop" of the language implementations (as in prolog unifications?), it would be an obvious candidate for inclusion in the machine... Perhaps in the fpp socket? --dave (I remember the CAFS. Whatever happened to the CAFS?) c-b -- David Collier-Brown. | yunexus!lethe!dave Interleaf Canada Inc. | 1550 Enterprise Rd. | He's so smart he's dumb. Mississauga, Ontario | --Joyce C-B
rik@june.cs.washington.edu (Rik Littlefield) (12/20/88)
In article <13582@srcsip.UUCP>,shankar@src.honeywell.COM (Son of Knuth) writes: > rik@june.cs.washington.edu (that's me) writes: > > [problems with using a fixed width CAM to access words when the number > > of bits in the index is larger then the CAM width, in languages like > > Icon and Awk that support associative tables] > > It is not difficult to design CAMs with chaining capability. > [description of one scheme involving matching the first part, then shifting > the match bits, marking the second part, and so on.] True, but misses the point. These languages are heavily interpreted, with dynamic typing and garbage collection. Most programs do NOT spend the bulk of their time executing table searches. You'd get much more bang for the buck by investing in faster cpu/memory than in CAM support for the tables. BTW, it isn't clear that small CAMs would even make the tables run faster. These languages require "exact match" on table indices. A good hash implementation should require less than 2 probes, independent of table size, and computing the hash is a matter of a few instructions. It's just very hard to believe that repeatedly reloading a CAM unit with hundreds or thousands of entries would be faster. CAM hardware might look better if you needed partial matches on some interior and unpredictable part of the index, so that it would be hard to avoid looking at all the entries. But how often does that come up? --Rik
hamid@goedel.uucp (Hamid Bacha) (01/26/89)
During the month of December, there was an interesting discussion concerning Content-Addressable Memories. With regard to some possible uses of the CAM, there was this exchange: In article <367@enint.Wichita.NCR.COM>, lpelleti@enint.Wichita.NCR.COM (Larry Pelletier) writes: >There was never a "popular" programming paradigm that could really take >advantage of content addressable memories. Although some things could be >done, it really didn't help the concepts of data and code in languages such >as Fortran, Cobol, Pascal, or C. and In article <13308@srcsip.UUCP>, shankar@src.honeywell.COM (Son of Knuth) writes: >That's probably correct with procedural languages, but how about languages >like Prolog or other logic languages? I believe that the use of CAMs would >lead to significantly greater performances then the use of the more >traditional indexing schemes for rule unification and retrieval, despite >problems with inherently sequential portions of the problem. CAMs can also >be used for maintenance of the binding environments. I recently developed a Prolog Abstract Machine for content-addressable memory (along the lines of the Warren Abstract Machine). This new abstract machine is shown to be superior to the WAM in many respects. It is discussed in detail in a paper that was submitted to the next International Conference on Logic Programming (Lisbon '89). It has also been published as a technical report by the CASE Center (New York State Center for Advanced Technology in Computer Applications and Software Engineering) at Syracuse University. Anybody interested in obtaining a free copy of this report should contact Donna McCammon at (315)-443-1066 or write to her at: CASE Center 120 Hinds Hall Syracuse University Syracuse, NY 13210 The technical report number is: 8816 and the title is: "Beyond the WAM: A PAM for the CAM" (a Prolog Abstract Machine for Content-Addressable Memory). Following is a brief list of the advantages that this abstract machine model enjoys over the Warren Abstract Machine: *When binding a variable, there is no need to check whether it should be trailed. *No trailing means no resetting of variables on failure, and no trail to manage. *No need to check for unsafe variables because there are none. *No read or write mode when dealing with lists and structures. This eliminates the S register. *No need to initialize unbound variables when a structure is built. Arguments of structures are accessed by position and their absence from the CAM indicates that they are unbound. *Fewer number of instructions means a less complex compiler and a smaller emulator. The 26 GET, PUT and UNIFY instructions from the WAM are replaced by 15 new instructions that are no more complex than their WAM counterparts.
aglew@mcdurb.Urbana.Gould.COM (01/28/89)
>/* Written 9:22 pm Jan 25, 1989 by hamid@goedel.uucp in mcdurb:comp.arch */ >I recently developed a Prolog Abstract Machine for content-addressable >memory (along the lines of the Warren Abstract Machine). This new abstract >machine is shown to be superior to the WAM in many respects. It is discussed So, how much CAM do you require for your PAM? All of memory? Or can you have just a small bit of CAM and a large amount of regular RAM? CAM is starting out behind the technology curve. Quite likely, given equal chances, the extra functionality of CAM might prove a win, but it's a long way behind. Possibly the only way to catch up will be to start building CAM based systems for specialized applications, trying to force the semiconductor houses into developing what you really need.
shankar@haarlem.SRC.Honeywell.COM (Son of Knuth) (02/02/89)
In article <28200263@mcdurb> aglew@mcdurb.Urbana.Gould.COM writes: > >>/* Written 9:22 pm Jan 25, 1989 by hamid@goedel.uucp in mcdurb:comp.arch */ >>I recently developed a Prolog Abstract Machine for content-addressable >>memory (along the lines of the Warren Abstract Machine). This new abstract >>machine is shown to be superior to the WAM in many respects. It is discussed > >So, how much CAM do you require for your PAM? >All of memory? Or can you have just a small bit of CAM and a large >amount of regular RAM? Well, perfect opportunity to give a plug for my paper presented at last year's ICLP (Intl Conf Logic Programming). I essentially used a small amount of CAM and larger amounts of RAM arranged in a hierarchy, and my performance estimates seemed to show that you could get good performances through such an approach due to the locality inherent in Prolog. That approach only used CAM to store rules for unification rather then for binding environments, though. In short, the answer is yes, you *can get performance benefits without needing huge amount of CAM storage. --- Subash Shankar Honeywell Systems & Research Center voice: (612) 782 7558 US Snail: 3660 Technology Dr., Minneapolis, MN 55418 shankar@srcsip.uucp {umn-cs,ems,bthpyd}!srcsip!shankar