CA1326566C - Computer with intelligent memory system - Google Patents

Computer with intelligent memory system

Info

Publication number
CA1326566C
CA1326566C CA000599426A CA599426A CA1326566C CA 1326566 C CA1326566 C CA 1326566C CA 000599426 A CA000599426 A CA 000599426A CA 599426 A CA599426 A CA 599426A CA 1326566 C CA1326566 C CA 1326566C
Authority
CA
Canada
Prior art keywords
memory
data
coder
data stored
storage means
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CA000599426A
Other languages
French (fr)
Inventor
Scott C. Knauer
Daniel Lin
Abhaya Asthana
Hosagrahar V. Jagadish
Jonathan A. Chandross
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AT&T Corp
Original Assignee
American Telephone and Telegraph Co Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by American Telephone and Telegraph Co Inc filed Critical American Telephone and Telegraph Co Inc
Application granted granted Critical
Publication of CA1326566C publication Critical patent/CA1326566C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Abstract

COMPUTER WITH INTELLIGENT MEMORY SYSTEM
Abstract A programmable memory system that interfaces with a computer's control and data manipulation units, and is capable of performing the manipulation, book-keeping, and checking that would normally be performed by the computer. The memory system comprises active structure modules that are interconnected in a network to form clusters. The clusters are interconnected toform an aggregate memory system. Each ASE contains a processor section and a conventional memory section.

Description

1 326~6~

- l -COMPIJTER WrrH INTELLIGENT MEMORY SYSTEM
Technical Field This invention relates io computer systems, and more particularly to memory systems ~or use in computer systems.
5 Back~round of the ~vention An impor~nt use for a computer system is d~e manipulation of data.
This manipulation is sometimes of value in itself, such as organizing a mass of infolmation into tables easily comprehensible by human beings. At other times, the data is manipulated as part of some task that ~e computer is perforrl~ing, such 10 as a linear program~ng opdmization process.
The data stored in a computer's memory must be accessed by the compllte~'s con~ol and manipulation circuitry. Conventional memory is composcd o~ multiple locations, each capable of storing in~ormation. Each of these locations is much like a post office box. To use the contents of a particular l~ 15 box, you must Icnow its unique identifying mlmber or addreiss. Whenew,r the computer requires a piece of data, it must know ~n which locationts) of memory the reslui~ed data resides. 'Ihe computer then specifies the address(es) of the app~opriate location(s) to the memory, which, in turn, fun~ishes the computer with e da~a present in thosc location(s). Thus, the mem~ry se~ves as a passive 20 reposito~y of whatever information the computer wishes to place in it.
A C~rnpuLer ~ms usefol tasks by executing programs that are written for it. These programs must have knowledge of the da~ to be accessed and manipulated as part of dle task at hand. Artisans who write these p~grams havc an arganizational scheme of data in their minds, but they ~equen~y find it 25 inco~venicnt s~ assign onique names or numbers to each elementa~y piece of data associated with a p~ogram at hand. Instead, programmers often orgar~ize the datainto groups called data s~uctures, a few common ones of which are desclibed below.
One common data structure is a stack. ~ a stack, items are placed on 30 "top" of one another like trays in a cafeteria. When an item is to be read from the stac~, it is always ~e one at the top of the stack tha~ is read. Similarly, when an i~em is to be written, it is always "pushed" onto the top of dle stack. Thus, the stack is a "last~ first~ut" (LIFO) data organizadon.
Another commorl data s~uc~e is a ~ee. A ~ee is much lilce a 35 genealogical chart. In a tree, the~e is a single piece of data that forms the head.
This piece of data is called the root. The root is the ISrst paren~, and each parent , . :.. ~

.

i6 ~
can have one or more "children" (each child being a piece of data itsel~, and these children have more children, and so forth. These s~uctures are, of course,abst~act entities imposed by the program upon the data, but ~hey do have a semantic significance to the users.
S Wheneve~ a computer program operates on data organized as a stack,for example, i~ is forced to translate its view of ~he s~ack into the terms the mem~ry can understand, that is, ~nto the numb~ed locatioms, or add~esses. To successfully implement a stsck, the prs~cessc>r must be able ~o remember where ~he c~rent top of the stack is. The address of the top of the s~ack is stored, in turn, 10 in another mem~r locatis~n. So to read the top item iD a stack, the computer must first obtain the address which identifies the top o~ thc s~:ack. Once that ad~ess has been located, then ~e actual datum at that address must be ~equested.Operadons such as adding an item to the top of the stack, dele~ng an item, etc.,rcquire analogous multiple memory accesses. In fact, c~en moqre accesses might 15 be required since a careful program ought also t~ check whether the stack is within tho location bounds allotted to it, or whether it is approaching a point where it may manipulate a location culTently allotted to a differenl data structure.
Clearly, there is a difference between the way memaqy is treated as a reposi~oryfor data, and the way memory locations ar~ doled out to programs.
A pr~grammer typically expends cor~sideTable effort keeping track of tho actual memoqry locations imQlved in each data slructure. This bo~k-~eeping is not only cumb~some a~ ror-~, it is te~ibly in~fficient. A simple task, such as a sta~k aCcesS id~ally would take but a single memo~y access. The burd~n of bounds checking a~d storage management c~uses this s~le task to 25 requ~re ~uay m~ accesses to mem~ry.
Summa~ of the ~Yentioo ~ in~ention enhanccs the operadon of computers by presen~rlg a genaralized, p~ ammable mcmo~y system which inse~aces wi~h a computer's contr~l and data manipulation units. This memo~y system is capable of 30 per~orming tho manipuladon, book-keeping, and chec~dng d~at would nonnally bepa~onned by thc computer. The system com~ses any number of active structure modules ~ASEs) that may be interconnected in a net~vo~ to fo~n memoly modules. The msmoqy modules may be interconnected to fonn an aggregate system compnsing a closely coupled memoly system. This memory system is then 35 interfaced with the compute~. Each ASE contains a processo~ secdon and a conventional memory secdon. The processor section might be a general purpose ,, , , ~
.: .. . .
,. .: ~ .

6~

programmable microprocessor, or a specially designed controller that is well suited to a particular function that the memory system is expected to accomplish. Also in accordance with our invention, more than one CPU can be connected to our memory system, and the connection can effectively be achieved through a plurality of ports.
In accordance with one aspect of the invention there is provided a computer including a CPU and a memory, where the memory is characterized by: a plurality of storage means for storing information for the CPU and a like plurality of processin means, with each processing means being associated with a storage means and arranged to manipulate data stored in its associated memory means in response to a command from the CPU, where the nature of the manipulating performed by said processing means is preloaded by the CPU.
In accordance with another aspect of the invention there is provided a memory system containing a plurality of memory modules, where each of the memorymodules comprises: a memory element; and an associated processing element, with each processing element including means for receiving instructions for performing specified data structure manipulations on data stored in the associated memory, and means for communicating with processing elements of other memory modules to enlist those other modules in the performance o~ its specified manipulations on data stored in the memory elements of those other modules.
In accordance with yet another aspect of the invention there is provided a memory comprising: a plurality of storage means for storing data structures; and a plurality of associated encoder and decoder means, for storing inforrnation imposing a structure on data stored in the associated storage means and for manipulating data stored in said associated storage means, and interconnected to permit communication to said memory via commands that call for manipulating of stored data by said encoder and decoder means.
In accordance with yet another aspect of the invention there is provided apparatus for storing information of ~ host processor comprising: a communication network;
a plurality of programmable coder means connected to said communication network for communicating information to and from said communication network and for accepting 3 o command definition information; and storage means associated with each of said coder means.
In accordance with yet another aspect of the invention there is provided a method for storing data in a memory, manipulating data in said memory and retrieving data .

~326S6~

- 3a -from said memory comprising the steps of: dividing said memory into memory blocks;
associating separate processing means with each of said memory blocks; storing data structure commands in said processing means characteristic of 2 selected set of manipulations of said data; and sending commands to said processing means that specify execution of selected ones of said stored data structure commands.
B~ieî Description of the Draw~in~s FIG. 1 depicts a prior art arrangement that includes two processors and peripheral equipment, including a memory;
FIG. Z presents a generalized block diagram of a computer system in accordance with the principles of our invention;
FIG. 3 presents a more detailed diagram of the memory system in FIG. 2;
FIG. 4 describes one implementation for the network that interconnects the ASE units of memory system 20;
FIG. 5 presents a block diagram of an ASE unit;
PII~. 6 depicts the microprogram memory of FIG. 5;
FIG. 7 depicts a portion of the microprogram address control logic of FIG.
5; and ~IG. 8 depicts memory control unit 27.
etailed Des~iption The concept of storing data structure elements into memory, manipulating data structure elements within memory, and retrieving data structure elements from memory has heretofore not been applied in the art of memory systems. To have a memory system that is capable of being programrned to thus operate with any chosen data structure arrangement, and have it coupled to a CPU that is no longer required to maintain a base of knowledge about the stored information is entirely novel.
Although the concept of "data structures" is well known to the cornputer science artisans, for purposes of this disclosure, it is useful to explicitly state what a "data structure" is. To that end, a paragraph form The C Programming Language, by Kernigham et al., Prentice-Hall, 1978, page 119, is quoted below:
3 o A structure is a collection of one or more variables, possibly of different types, grouped together under a single name for convenient handling.
(Structures are called "records" in some languages, most notably Pascal).

' '~ `'~ . ~ ` .
' ! ~ , ,. ~ :'. ' ,. ' ,''`' ' .

The traditional example of a structure is the payroll record:
an "employee" is described by a set of attributes such as name, address, social security number, salary, e~c. Some of these in turn could be s~uctures: 2 name has several components, as does an address and even salary.
Structures help to organize complica~ed data, particularly in large p~ograms, because in many situations they p~it a group of related variables to be treated as a unit instead of as separate entides.
In accordance with the principles of our invention, a memory is provided that contains enough intelligence to allow a user to down-lo~d infolmation into the memo~y to infolm it of the data s~ucture with which the user wishes to operate, and to infoxm it of the basic operations of which the memory is to be cognizant. Thereaft~,r, the CPU interacts widl the memory by simply 15 providing it with memory structure elements -- to wit, the data -- andlor the commands that tells the memory which of the operations the memory is to execute. Thus, the memo~y system of our invention, and a computer arranged with the memory system of our in~ention, operates in a manner that is totally analogoos to dle operation of conven~onal memones, savc for ~e ability to 20 program the memory for a chosen data structure and the ability to oporate with data structure dements, as cornpared to mere "words".
Therefore, to enaUe sldlled artisans to p~actice our invention, ~e following desc~ipdon is ~cted sdy to the structllre of our memory system rather than the manne~r of using i~
FIG. 1 psesents a generalized schematic diagram of a prior art multip~occssor aITangement. It includes processors 10 and 11, a common bus 12 to which p~wessoqs 10 and 11 are connected, and peripheral devi~es 13-18.
I~vicos 17 and 18 are memories. In operation, the processors contend for bus 12,and ~e p~essoT ~at is successful is given access to any one of the devices 30 connected to the bus. SuGh an arrangement clearly results in bus 12 being a potential bottleneck in the communication process between ~e processors and the de~ces. To alleviate the problem, some designers include a cache memory wi~
each processor. This app~oach helps to reduce bus contendon, but it does not solve the basic 'communication problem between the processor and the memory.
35 Memo~y accesses still ~ake the ~orm of elementary ~etches and stores.

~,:

~.

i`326~

FIG. 2 pr~sents a block dia~ram of a computer system in accordance with the principles of our invention. For purposes of exaEnple, it includes processors 10 and 11, and peripheral devices 13, 14, 15, and 16. In FIG. 2, the processors are connected to a swi~ching network 19. Also, in accordance with theS pnnciples of our inven~ion, the FIG. 2 compu~er system includes a memory system 20 connected to nerwork 19. Metnory sys;em ~0, unliXe the memor.es in FIG. 1, is composed of memory modules ~at include con~rolled processi;lg and communication c~abilities.
Networlc 19 permits one CPU to communicate with me;r,orv systern , 10 20 while another CPU is communicating with some other peripheral. Networ'c 19 `~ addresses the contention problem but not the low level of cotnmunication to and f~om the memory. The latter is addressed by the intelligence within memory system 20. It should be reali7ed~ of course, tha~ users who do not have a ;, contention problem te.g., in applications where conflict is not li~ely to occur), 15 networlc 19 can be e~minated. It should be also noted that there rnay often ~e comrnunication between the memory syslem and some peripherals without the i, invol~,~ement of any CPU.
FIG. 3 depicts rnemory 20 in somewhat ~reater detail. It contcuns memory modules 21, 22, and 23 that are lnterconnected with a networ~c, such as 20 with ~he networ~c comp}ising comrnunication lines 24, 25, arld 26. ~lodules ~1-23 are also connected to network 19. Each memory module contains a pLuralily of ASEs wi~h each ASE containing a processor element 30 and a memory 31.
P~cessor element 30 and associated memory 31 are an exarnple of an ASE. The ASEs are also intercormected in a network, such as the nctwork comprising , 25 ~ines 67, 68, and 69, ~,hat makes up the memory mo~ule.
FIG~ 4 presents one embadiment for memory rnodule. It contains a switching fabric of bidirectional communication lines arran~ed, aiaGr~mmatically, - in rows and colurr~ns, such as lines 78 and 2a. An ASE mociule, such as 33, forms a "crosS-point" ~etween each row line ar.d column line. Any of ~he row or 30 colurnn lines car. b,e desi~nated for communication wirh o~her ASEs, and, likewise, any row and colurm line can ~,e designated for cornmunic~UOn wiuh nerwork 19. Communicarion between ASEs in one memory module can be efIecled ~ria the row and colurnn lines irl combinanon w~h passing ;hroush otherASEs in any one oE a number of hlown ways. Most simply, communication can be 35 effected through packets, with each packet having a desrination address that~ in accordance with a prescribed procedure, permits each .~SE that encounters the .

.. . . .

., .
,, ~ ~ . .

~32~

packet to blow whether or not it should ~ansfer the packet from the row to the column, or vice versa. In that capacity, the ASE serves merely as a cross-over switeh.
FIG. S depicts the bloclc diagram of one embodiment for the 5 processing element in an ASE adapted for ope~a~ng in the switching envuonment of FIG. 4. It contains a switch 34 connected to two ports of the processing elcrnent, which serves as the cross-over switch discussed ab~ve~ and a common bus 35 to which a number of blocks are connected. Sp~cifically, bus 35 interfaces with a micropro~ memory 36, with register a~ray 37~ with ari~netic logic unit 10 (ALU) 3~, with microprogram address counter 39, and ~t:h memory control log~c 27.
In operation, memoly system 20 is subject to two types of access.
One is to program the memory system in general, and each of the needed ASEs in pa~cular. The programming specifies thc data struch~res d~at the memory s~stem 15 will be required to handle and ~e manner of performing the required opcratiorls on thcso data structures. For example, one pro~Fam dule would definc the processing that shall be expzcted of the ASEs, anodler program module would define the inte~ction between the different ASEs when more memory a~ data manipulsdon is needed for a particular task ~an is available to a par~cular 20 processor ml~dule, etc. The second type of access is to ins~uct the memo~y system to actually pe~form dle desired task. This can bo, fo~ example, to store a wo¢d s~f data in a LIFO s~ack, to access a "parent" of tho las~-accessed "child", etc.
Thc in~elligonce ~at permits ASEs to p~o~ e ~e of tasks men~ioned a~ove ~esides in rmcroprogsam memory 36. This memory is accessed 2S under coll~l of m~croprogram counter 39, and it provides ~e necessary controlsignal~ fo~ ~fecdng dle aecessary ac~ons at AI,U 38, registe~ set 37, and memo~ 40. Momory 36 can be a conven~ional memory but in our pre~erred embo~ellt, mic~pr~gram memo~y 36 comprises four 3~-bit memo~y modules of 256 words each, alraQged as depi ted in FIG. 6. The reason for this design lies in 30 our desire to ~t variable leng~h instruc~on to be stored effieiently, and at the same time, to permit parallel access to ~e stored ~ iabl& leng~ instruetion.
The conven~onal approach to storing variable length instructions in a program memo~y is to use sequen~al locations, with each holding some part of the instruction. YVhen the ins~ruction is needed, ~hese sequen~al locations are read 35 out, and the instlucdon is "built up" out of the successive reads. Alte~alively, one can store dle ins~ructions in a memory that possesses suffic;ent bits to store .
: ' .~ : , "

.

: ' ~2~5~6 the largest ins~uction, with ~he smaller instIuctions not using some bi~s. Such an a~angement would obviously be an inefficient use of available memory and is therefore no~ desi~ble in VLSI implernentations of the ASE. In accordance with our invenion, we diYide the hypc~hetical single program ~alemory where 5 instrucions are stored in se~uential locations into four modules, corresponding to addresses that are multiples of four (of the hypothetical memory) with an off.set of 0, 1, 2, and 3. Thus, in FIG. 6, a first instruction of, say, three 32-bi~ chunks is stored in location 0 of modules 41, 4~, and 43. A nex~ ins~ruc;ion of, say, two 32-'oit chunks is stored in location 0 of module 44 and in loca~on 1 of rnodule ~1, 10 etc. The acrual address (of tne hypothetical memory) is presen~ed to address register 45, and the ~,~,vo least significant bits combine to speciry the actual stamng address of the instruction; that is, the two least significant bit specify the memory module, while the remaining bits specify the Iccation in the memory modules.
Accordingly, FIG. 6 shows that register 45 has an eight lead bus a~ its ou~put, 15 with six of the leads going the memor,Y modules (through adder circuits 49, 50, and 57) and the two least significant bits going to decoder circuits. To achicYethe necessary logic, decoders 46, 47, and 48 are responsive to the two least sianificant bits of register 45, and the decoder outputs are applied to adders ¢9, 50, and 57 tha~ connect to modules 41, 42, and 43, respectively.
Ihe inslructions stored in modules 41-4~ contain inforrnation that specifies the instruction's leng~. Accordingly, forrnat decoder 51 is connec~ed (to the rele~ant bit of the memory rnoduIes' output) and to the two least significant bits of register 45 to determine the lengch of the instIuction. ~at information is applie~d to switch 52 and to increment circuit 54. CirCuit 54 is also responsive to 25 the output of register 45. In combination with the t~,vo le~s~ signific3nt bi~s of register 45, switch 52 directs the outputs of the memory modules to the four outputs, as re~uired, to form a single parallel instrucion word (178 bits wide). To a]low for a logic "0" output in the unused bits when shor. insLrucions ~-e present, switch 52 is show~; to include a "0" input. Las~y, to permit access to ~ne merrory 30 ~hrough other ~han the incrementing process7 such as when the memor,Y is ~o be loaded with instrucions or when a "branch" instrucion is to ~ ca~Tied out, FIG. 6 includes 2 multiplexer 84 inteIposed be~veen incremen~ circuit 5~1 and regis~er d5.
M:ultiplexer 84 is also responsiYe to incorning signals on lines 55, 56, 58, and 59.
Microprogram address control logic 39 ~FIG. 5) comprises a trap logic 35 block 60, and a branch logic bloclc 70. All are responsive to bus 35, and combine to provide signals to lines 55 and 56 which feed the rnultiple:cer of the ~ .

~,, , ~ .

: .
, -. ; : : ~ ' - . - '; , ,.
.. .. .

~ . , ~32~

microprQZgraml momory shown in FM. 6. The trap logic blocl; is illustrated in Z FIG. 7.
In many applications it n~ght be desi~able to test the state of processor 33, and perform different acdons based on thc processor's statc. Such 5 tests may ~e made at different locations, such as at the register set, at the ALU, and at the memory control block. At each sueh poin~ vf interest, a comparator, avalue register, and a trap address registe~ are p~ovided ~e.g., 61, 62 and 63) in ` processoq~ 33. Many such sets can be provided within pr~cess~r 33, but for sake o~ simplicity FIC}. 7 shows only two sets. The comparator comp~es observed 10 data to the value s~red in the value registsr. E~ch comparat~ p~duces a "yes/no" respon~e, and its ou~put enters trap con~oller unit 85. Unit 85 considers each response and makcs a decision whether an action should be taken or the processing should continus uninterrupted. A t~pic~l action would be to impose thc value in the trap address registe.r on the Imcroprogram mem~ry. Unit 85 i5 15 responsive to ~e output signals of the comparators (only comparators 61 and 64 shown) and to dle value in ~e ~ap address registe.rs (only regist~. 63 and 66 ~ shown~. The ~ap enable and mask logic block contains a fixed priori~
designadon fcr the various comparator signals and, in addi~on, it contains a ammablc maslc re~ster (loaded from bus 35~ thst holds the iden~r of ~ose 20 comparato~s which a~e ~tted to be "ac~ve". The "inac~ve" comparators are masked out, a~d are ignored by the ~ap unit. Based on the ac~vity masking and on the fixed p~i~ity, block 85 iden~fies the highest prioqity ~ap tha~ should beres~30nd~d to and, based o~ that iderltification, if any, ehe value of the appropriate ~ap ~ss ~ster is passed to line 55, toge~her ~th a signal on line 56 that 25 con~ls muldple~er 84.
B~2ch logic block 70 causes a b~nch ad~ss specified in ~e c~e~lg e~ccudng microinstruc~on to be sent to mul~plexer 54 on line 58 (along wi~h a co~l sigll~l o~ line S9) p~>Yided ~hai any ALU condition (such as, ~he result of ALU op~adon b~ing positive) specified in the microinsfruc~on is 30 satisfiedL at the output of thc ALU. Upon the occu~ence of the specified condition, multiplexcr 84 loads ~ss register 45 wid~ this branch address radler . than d~e i~crement of dle old ad~ess, unless a erap is idelldfied by block 60. The dotails of tbe b~anch logic blo~k are per~ectly convendonal and are, there~ore, not descnbed in detail herein.

, ~ .

~ 3~r~

E~e~ster set 37 includes a collection of registers that are used to store various ~ansitory values of the ALU and the memory. ~ example, registers 37 are involved in circuitry that perfonns pattern matching by keeping a m~atch pattern in tbe re~sters, and comparing the stored values to dlata obtained from S me~y 40 in ALU 38.
A pattern match is effected through the use of the trap ~acili~
described earlier. Some of dle registers contain values to be compa~ed with the cu~nt character during a patte~n match. The ~egisters contaLn value~ to match onsuch as: "star" which is the Kleene star operator (wild card), "new line" which is 10 the new line cha~er, "end of file" which is the end of fib ma~e~, etc. Wi~
each cycle, a cha~acter is read and compa~ed against a cha~acter in the pattem memory. If the cu~r~nt character matches any one of the specia} values, a trap is generated, and the appropriate add~ess taken. If thc eomparison is successful, then thc pattern index is incremen~ If dle character does not match dle patte~
15 charactei, then the memory address is incremented. An unsuccessfill ma~ch maycause the pattern index to be reset to the be~g of the pattem and the pattern memo~y to be reloaded.
Memory control 27 is shown in FIG. 8, and consists of two ~ress registers 81 and 82, one incre~nent register 83, and two offset registers 86 and 87.
20 Thç memory control unit applies an add~ess to d~e memory 40. This a~ss is compu~ed as the sum of ~e solec~cd ~ss r¢gister arld ~c selected offse~
Offsets may c~ firom eithe~ offs~t regis~e~, M from the C~e~lt microinst~c~on.
The result of a me~ re~d is placed on ~ bus 35, and may be reco~ed in any of ~e r~glsters ill 37. Tho swrce of a memoIy wnte may similarly bc any OI the 25 registen in 37, ~}~ugh ~e bus 3S. Each of ~e men~ry add~ess regis~ers 86 and 87 may be ~men~ decremented by dle amount s~ified in the culTent ~sroi~uctio~. Thh amount may be 0, 1, 4, or the valuc of ~e increment re~s~ 83.
The Arithmedc Logic Unit of the processoq ean be of any 30 cor~veodonal design and, th~refo~e, it is not in detail herein.
The following ~iefly details use of tho abow-described structure the context of our inven~on.
Considenng the saac~ data structuIe de~bed earlier, it iS easily seen that two p~im~y commands are required to manipulate a stack; namely a push, 35 which adds an element to the top of ~he stack, and a pop, which removes the top element from ~e stack. Two secondary co~ds, one to create and initialize a .
, .

~ 3 ~ g new stack, and another to remove an existing stack, are also needed.
In using our memory system, first, one must locate one or more ASlEs that are currently not being used for any o~her task. Then rnic~code to p~ocess the desi~d commands must be down-loaded. The stack pointer is set to point ~o S th~ first a~ailable memory location, which will be ~eated as the bottom of thestack. The size of each stack element is down-loaded tO the ASEs as well, although this infolmadon could be hardwDred into the micr~code program. A~ter the down-load is completed, the ASEs enter an "accept commands" state. In this state they accept commands to manipulate the stack, including: push, pop, and 10 delete.
One of these ASEs can be denoted as ~e "head", and all commands will be sent ~o î~ Ano~e~ of the ASEs can be denoted as ~ "tail". lE~ch ASl~
will hlow dle idendty of the ASE ahead of it as well as the idendty oî the ASE
behind it in dlis selected group o~ ASEs, except for the head whieh has no 15 predccessor and the tail which has no successor. The head ASE is ini~ally theowner of ehe cunent stacl~ pointer. In the ev~nt of a seack overflow, that is, if the stack grows to a point where two or more ASEs are needed to hold the stack, one of ~e head AS~'s successo}~s is denoted as the owne~ of ehe stacl~ pointer.
When sn ASE recdvcs a r~quest to pe~f~qm a "push", ehe following 20 things happcn: First ~e ASE chec~s to s~ whcther it is thc ownar of dle cuIrent stack po~ter, and if llOt, dle roqusst is relaycd to its successor ASE. Eventually, J. thc commar~ will ~ve at tbe ASE ~at owns tho cu~nt stack pointer. Then the J~ actual prOCeSshl~ bo~s. The item ~o be pushed is ~ans~aTed f~om network 19 onto the stac~ Then ~he stack pointer is incremen~id by dle si~e of the item, sllch 25 that it now po~nts ~ Ihe n~itt availablc loca~on once again. Finally, dle ad~ess of thc s~c pointer is chocked to see if the~e is sufficient storage to push another item. If ~re i~, ~e ASE r~ns a successful comple~on ~ssage to ~e host. If insofficiell~ space exis~, ~e ASE checks to see if it has a successor. If a successor docs nM exist, the ASE retums a "need more storage" messagc to ~e 30 host. If a successor exists, then the ASE trans~ers the o~vnership of dle stack pointer IO it, and retums a successful compledon m~ssage to dle hosL In all cases, the ASE~ r~s to the accep~ command scate upo~ completion of dle command.
When an ASE receives a request to perf~rm a "pop", ~e following 35 dlings happen: First the ASE checks to see whether it is dle owne~ of dle cur~erlt stack poinoer, and if not, tJhe request is ~slayed to its successor ASE. Eventually, : ' , ,~ , .

:~ ' ` ' '' " ' '' : . ~
,, .
,~ .

132~

the command will a~ive at the ASE that owns the culTent stack pointer. Then the actual processing begins. The stask pointer is dec~mented so it points to the item at the top of the stack. If this decrement causes the stack pointer to go below the bottom of ~h¢ stack the reques~ is relay¢d back to its predecessor, if it exists. If it 5 does not exist, then the ASE retorns an under~qow erroq message to the host.
Finally, the item eo be popped is transferred from the stack into network 19, and transmitted to the host. In all cases, the ASE reverts to th~e accept command state upon compledon of ths command.
Deletion of an exisdng stack allows the allocated ASEs to be 10 reclaimed. It simply involves the marking of each ASE as free.

. . .

, . . . ~.

Claims (15)

1. A computer including a CPU and a memory, where the memory is characterized by:
a plurality of storage means for storing information for the CPU and a like plurality of processing means, with each processing means being associated with a storage means and arranged to manipulate data stored in its associated memory means in response to a command from the CPU, where the nature of the manipulating performed by said processing means is preloaded by the CPU.
2. The computer of claim 1 where the data stored in a first of said memory means is related to the data stored in at least one other of said memory means, and the relationship is controlled by the processing means of said first of those memory means.
3. A memory system containing a plurality of memory modules, where each of the memory modules comprises:
a memory element; and an associated processing element, with each processing element including means for receiving instructions for performing specified data structure manipulations on data stored in the associated memory, and means for communicating with processing elements of other memory modules to enlist those other modules in the performance of its specified manipulations on data stored in the memory elements of those other modules.
4. A memory comprising:
a plurality of storage means for storing data structures; and a plurality of associated encoder and decoder means, for storing information imposing a structure on data stored in the associated storage means and for manipulating data stored in said associated storage means, and interconnected to permit communication to said memory via commands that call for manipulating of stored data by said encoder and decoder means.
5. Apparatus for storing information for a host processor comprising:
a communication network;
a plurality of programmable coder means connected to said communication network for communicating information to and from said communication network and for accepting command definition information; and storage means associated with each of said coder means.
6. The apparatus of claim 5 wherein each of said coder means includes at least two ports connected to said communication network, and the communicating performed by said coder means includes switching of information over said communication network.
7. The apparatus of claim 5 wherein said commands related to selected data structure manipulations.
8. The apparatus of claim 5 wherein said communication network includes a plurality of ports for connecting to a host.
9. The apparatus of claim 5 wherein said communication network includes a plurality of ports, and a host interface network connected to said plurality of ports.
10. A computer comprising:
a central processing unit; and a memory for storing information for the central processing unit, where said memory comprises a plurality of storage means for storing data structures; and a plurality of associated programmable encoder and decoder means, for storing information imposing a structure on data stored in the associated storage means and for manipulating data stored in said associated storage means, and interconnected to permit communication to said memory via commands that call for manipulating of stored data by said encoder decoder means.
11. The apparatus of claim 5 wherein said coder includes pattern match hardware comprising:

a pattern memory used to hold the pattern to be matched;
a source of characters to be matched against the pattern; and a comparator that matches the contents of said pattern memory against said source of characters.
12. The apparatus of claim 5 wherein said coder means includes memory for storing data manipulation programs.
13. The apparatus of claim 12 including a processing means for branching said coder means to a selected location in its included memory upon the occurrence of specified conditions in said coder means.
14. The apparatus of claim 12 wherein said included memory stores variable width instructions, said included memory is divided into banks, each of said memory banks produces a word upon a "read"
instruction, and the outputs of said memory banks are multiplexed to form an instruction for said coder means.
15. A method for storing data in a memory, manipulating data in said memory and retrieving data from said memory comprising the steps of:
dividing said memory into memory blocks;
associating separate processing means with each of said memory blocks;
storing data structure commands in said processing means characteristic of a selected set of manipulations of said data; and sending commands to said processing means that specify execution of selected ones of said stored data structure commands.
CA000599426A 1988-05-13 1989-05-11 Computer with intelligent memory system Expired - Fee Related CA1326566C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US193,987 1988-05-13
US07/193,987 US5134711A (en) 1988-05-13 1988-05-13 Computer with intelligent memory system

Publications (1)

Publication Number Publication Date
CA1326566C true CA1326566C (en) 1994-01-25

Family

ID=22715870

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000599426A Expired - Fee Related CA1326566C (en) 1988-05-13 1989-05-11 Computer with intelligent memory system

Country Status (5)

Country Link
US (1) US5134711A (en)
EP (2) EP0341905B1 (en)
JP (1) JPH0229849A (en)
CA (1) CA1326566C (en)
DE (2) DE68929080T2 (en)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544347A (en) 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5367637A (en) * 1992-03-26 1994-11-22 International Business Machines Corporation Self-tuning virtual storage management for dedicated real-time computer system
CH683665B5 (en) * 1992-05-27 1994-10-31 Ebauchesfabrik Eta Ag local calling receiver.
KR940004434A (en) * 1992-08-25 1994-03-15 윌리엄 이. 힐러 Smart Dynamic Random Access Memory and Its Processing Method
JPH08507888A (en) * 1993-03-23 1996-08-20 シウ フ チャン,デイヴィッド Intelligent memory architecture
AU673069B2 (en) * 1993-03-23 1996-10-24 David Siu Fu Chung Intelligent memory architecture
CA2145106C (en) * 1994-04-22 1999-08-24 Abhaya Asthana Intelligent memory-based input/output system
JP3658072B2 (en) * 1996-02-07 2005-06-08 株式会社ルネサステクノロジ Data processing apparatus and data processing method
US6052797A (en) * 1996-05-28 2000-04-18 Emc Corporation Remotely mirrored data storage system with a count indicative of data consistency
US5901327A (en) * 1996-05-28 1999-05-04 Emc Corporation Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring
US6658552B1 (en) * 1998-10-23 2003-12-02 Micron Technology, Inc. Processing system with separate general purpose execution unit and data string manipulation unit
DE69923539T2 (en) * 1999-05-03 2006-02-16 Stmicroelectronics S.A. A multi-port storage
AU2001258545A1 (en) * 2000-05-19 2001-11-26 Neale Bremner Smith Distributed processing multi-processor computer
US20040252547A1 (en) * 2003-06-06 2004-12-16 Chengpu Wang Concurrent Processing Memory
JP4845591B2 (en) * 2006-05-24 2011-12-28 本田技研工業株式会社 Arrangement structure of electronic control device of self-propelled lawn mower
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US8930618B2 (en) 2010-08-24 2015-01-06 Futurewei Technologies, Inc. Smart memory
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1128576A (en) * 1967-07-29 1968-09-25 Ibm Data store
US3609702A (en) * 1967-10-05 1971-09-28 Ibm Associative memory
US3757312A (en) * 1970-10-09 1973-09-04 Us Navy General purpose associative processor
US3699534A (en) * 1970-12-15 1972-10-17 Us Navy Cellular arithmetic array
US3753238A (en) * 1971-08-27 1973-08-14 Bell Telephone Labor Inc Distributed logic memory cell with source and result buses
US3787817A (en) * 1972-06-21 1974-01-22 Us Navy Memory and logic module
US3962706A (en) * 1974-03-29 1976-06-08 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of stored programs
US4149240A (en) * 1974-03-29 1979-04-10 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of data structure operations
GB1540996A (en) * 1975-05-12 1979-02-21 Plessey Co Ltd Associative processors
US4631666A (en) * 1982-10-25 1986-12-23 Burroughs Corporation Data transfer network for variable protocol management
US4580215A (en) * 1983-03-08 1986-04-01 Itt Corporation Associative array with five arithmetic paths
US4710868A (en) * 1984-06-29 1987-12-01 International Business Machines Corporation Interconnect scheme for shared memory local networks
US4734848A (en) * 1984-07-17 1988-03-29 Hitachi, Ltd. Combination reduction processing method and apparatus
US4819152A (en) * 1985-04-05 1989-04-04 Raytheon Company Method and apparatus for addressing a memory by array transformations
CA1263760A (en) * 1985-09-27 1989-12-05 Alan L. Davis Apparatus for multiprocessor communication
US4731737A (en) * 1986-05-07 1988-03-15 Advanced Micro Devices, Inc. High speed intelligent distributed control memory system
JPS6364178A (en) * 1986-08-29 1988-03-22 インタ−ナショナル・ビジネス・マシ−ンズ・コ−ポレ−ション Image processing system
US4959776A (en) * 1987-12-21 1990-09-25 Raytheon Company Method and apparatus for addressing a memory by array transformations
JPH01261772A (en) * 1988-04-08 1989-10-18 Cogent Res Inc Computer and operation thereof

Also Published As

Publication number Publication date
EP0779584B1 (en) 1999-09-29
DE68928759D1 (en) 1998-09-03
DE68929080T2 (en) 2000-05-25
DE68929080D1 (en) 1999-11-04
EP0779584A1 (en) 1997-06-18
DE68928759T2 (en) 1998-12-24
EP0341905A3 (en) 1992-01-22
EP0341905A2 (en) 1989-11-15
JPH0229849A (en) 1990-01-31
EP0341905B1 (en) 1998-07-29
US5134711A (en) 1992-07-28

Similar Documents

Publication Publication Date Title
CA1326566C (en) Computer with intelligent memory system
US4435752A (en) Allocation of rotating memory device storage locations
US4084224A (en) System of controlling procedure execution using process control blocks
US4369494A (en) Apparatus and method for providing synchronization between processes and events occurring at different times in a data processing system
US4077058A (en) Method and apparatus for executing an extended decor instruction
US4084228A (en) Process management structures and hardware/firmware control
US4395757A (en) Process synchronization utilizing semaphores
US4044334A (en) Database instruction unload
US4394725A (en) Apparatus and method for transferring information units between processes in a multiprocessing system
US4130867A (en) Database instruction apparatus for determining a database record type
US4707784A (en) Prioritized secondary use of a cache with simultaneous access
US4128882A (en) Packet memory system with hierarchical structure
US4320455A (en) Queue structure for a data processing system
US5010482A (en) Multi-event mechanism for queuing happened events for a large data processing system
US4025901A (en) Database instruction find owner
US4498132A (en) Data processing system using object-based information and a protection scheme for determining access rights to such information and using multilevel microcode techniques
JPH04505977A (en) Object-oriented distributed processing system
JPS602689B2 (en) Internal program data processing device
US4042912A (en) Database set condition test instruction
JPH01500377A (en) Apparatus and method for providing a cache memory unit with write operations that utilize two system clock cycles
US3812475A (en) Data synchronizer
GB1561697A (en) Memory systems for use in data processing
US4351024A (en) Switch system base mechanism
US4901274A (en) Method and system for data driven information processing
JPS6039259A (en) Hierarchical structure controller

Legal Events

Date Code Title Description
MKLA Lapsed