Embodiment
Fig. 2 has depicted the structural relation between controller 100 (hereinafter being called Cartesian controller (CC)) and the cellular engine 102 (hereinafter be called and connect engine (CE)).Utilize synchronous clock circuit 106 to coordinate the operation of CC 100 and CE 102, so that can send in many instructions and send CE 102 to, for executed in parallel and processing by CC100.
The clock period that described clock circuit 106 per seconds can be exported predetermined number, and described CC100 can carry out built-in function, CC 100 can carry out a kind of in the multiple built-in function like this, sends in many instructions one to CE 102 concurrently simultaneously in the single clock period.
As in Fig. 3, depicting, described CE 102 is made up of the array of active cell or treatment element, and be embodied in the RAM (random access memory) that connects storer (CM) 104 and comprise a plurality of vectors 108, each vector all has the memory capacity identical with CM 104, and therefore can store the full content of CM 104 selectively.That is to say that described CE 102 comprises CM 104 with n unit and the vector memory 108 that is associated, it is under the control of the CC 100 of serial.In one embodiment of the invention, as will be the more detailed argumentation after a while, the purposes of memory vectors 108 be make it possible to carry out on open ended character string is longer in than CM 104 the character string that search is searched, insertion and deletion action, and be used to provide cheaply embodiment and reduce power consumption.
Should be appreciated that under the prerequisite that does not break away from aspect the broad model of the present invention, the present invention will cover such situation, CE 102 can have the configuration of any amount of particular electrical circuit, as long as CC100 can give an order and receives data there from it to CE 102.
With reference to figure 3, each the n bit location among the CM 104 all comprises column register down:
' mark '---1 flag register;
' w '---master register, it is playing the part of the role of totalizer in the similar conventional design, and simultaneously it also is associated with many general-purpose registers that quantity equals the memory vectors number.
Mark: establishing x is the bit field of length m, and y is the bit field of length n, and then: { x, y} represent by y being added to the bit field of the last length m+n that constitutes of x.This mark can be generalized to any amount of bit field, for example, to the bit field of three variablees: { a, b, c}={a, { b, c}}={{a, b}, c}
Suppose that r is (n+1) bit register and n 〉=k 〉=0, then: r[k] expression from right-hand member (k=0) to left end (k=n) begin several r (k+1) position.
Suppose that r is (n+1) bit register and n 〉=m>k 〉=0, then: r[m:k] expression length m-k+1 bit field, r[m], r[m-1] ..., r[k] }.
Therefore, the content of the m bit location in CM 104 is the content that the content of its w register adds its mark register:
Unit [m-1:0]={ mark, value}
Numerical value [m-2:0]={ ext, symbol}
Symbol [m-3:0]
Wherein ext represents extension bits, is used for creating the alphabet of special value (for the situation of ext=1).
An importance of the present invention is: the ability of the active process data except that the storage data of each the m bit location in the CM 104.The processing of data can occur in each m bit location inside, and perhaps the processing of data takes place in left side by influencing scheduled unit or right side next-door neighbour's unit.Should be noted that: by improving the functional of each m bit location in the CM 104 in such a way, the present invention shows system-level behavior, just more complicated behavior, and surpassed the performance of other data handling system.
Another importance of the present invention is: the ability of each unit by will " mark " partly realizes the ability of the active process data of the cell level in the CM 104, this is the part of conditioned disjunction attribute, it is appointed as adjacent cells in itself or the CM 104 will be executed the task subsequently or the unit of executable operations number.
Turn back to Fig. 3, for purpose of the present invention, if one internal element register mark=1 then is considered as the unit " mark ", if mark=0 then be considered as " unmarked ".In addition, described CM104 has " the left boundary " and " right boundary " that can dynamically be regulated by sending special instruction.In addition, CM 104 " search volume " is the segmentation (segment) by the CM 104 of left boundary and the description of right boundary.Be appreciated that internal element register mark can be greater than one aspect length under the prerequisite that does not break away from aspect the broad model of the present invention.
Just as mentioned previously, the execution that offers the code of CE 102 is driven by CC 100.Described CE 102/CC 100 interfaces have used four special registers, as shown in Figure 3:
' INR ' 112---data input register---, and their (immediately) data variable (if any) all is provided from INR (being provided by CC 100) in all CE 102 instructions;
' OUTR ' 114 is according to output---comprise " unmarked " position and numerical value.If one of them unit is labeled, then OUTR comprises 0, and first contained numerical value in indexing unit is followed in the back; Otherwise OUTR comprises 1, and the special value relevant with embodiment followed in the back, such as 11...1;
' OPR ' 116---order register, and it comprises the operational code (this source is the specific field in CC 100 instructions) of current C E 102 instructions;
' VAR ' 118---be used for the address register of vector memory.Described VAR 118 registers are to be upgraded by specific CC 100 instructions, and are used as the variable of the instruction of explicit operation vector; Described VAR 118 registers also are used in to carry out and relate in all operations of the general-purpose register that is associated with the unit.
As further in Fig. 3, representing, can utilize input/output line 120 to visit the two ends of CM 104 selectively.As used herein, described input/output line 120 has following meanings:
' left_in ' 122={w, mark, eq, first}, all are 0 (eq=1 are meant that two operands in the unit equate as acquiescence; First=1 is meant that described unit is first unit of mark);
' left_out ' 124={w, mark, eq, first} is from first unit;
' right_in ' 126={w, mark, eq, first}, all are 0 as acquiescence;
' right_out ' 128={w, mark, eq, first} is from last unit.
Fig. 4 shows an embodiment of the inner structure of the m bit location in the CM 104.As shown in Figure 4, the inner structure of each unit all comprises column circuits down:
ALU: arithmetic logical unti 130, it carries out addition, subtraction, comparison and logic function by turn
LeftMux: multiplexer 131, it selects to be used for the left operand of ALU from following:
W: be stored in the numerical value in the accumulator register 134
In: the numerical value that in input register 112c, receives
MemOut: the numerical value that from vector memory, reads by vector address register VAR 118 addressings
AluMux: multiplexer 133, its selection from following will be loaded into the numerical value in the accumulator register (w 134):
W: be stored in the numerical value in the accumulator register 134
FromLeft: be stored in the numerical value in the accumulator register of left cell
FromRight: be stored in the numerical value in the totalizer of right sided cell
The output of ALU 130
W: accumulator register 134
Mark: flag register
Tristate output buffer
DECODE: combinational circuit 137, it is according to being come instruction is deciphered by the local environment of following generation:
LocalFlags: produce by ALU
LeftFlags: the sign that is received from left cell
RightFlags: the sign that is received from right sided cell
Class_i: the classification code that is received from TRANSCODER (code converter)
TRANSCODER produces:
The command code that is used for leftMux, rightMux, ALU, aluMux, mark, three-state buffer
Sign from adjacent unit
The state_i position that is used for the unit of TRANSCODER
Code converter
Fig. 5 shows the tissue of TRANSCODER (code converter), and it is with the integrated circuit of CE 102 and serves as a part of controlling interconnection network.That is to say, utilize TRANSCODER, according to following content:
Its mode bit (state i), (being local state)
The mode bit of all unit (being global state)
The present instruction that will carry out,
Following classification is assigned in each unit:
Indexing unit
First is indexing unit
Last is indexing unit
Unit in compass (this boundary is stored in the memory block of TRANSCODER)
Active cell.
Be appreciated that under the prerequisite that does not break away from aspect the broad model of the present invention, other unit classification can be added in the above-mentioned classification.
Described TRANSCODER from each unit the accepting state position (state_0, state_1 ..., state_ (n-1)), and will specify 3 all kinds of codes that it belongs to (class_0, class_1 ..., class_ (n-1)) send back to each unit.
The tectonic block of code converter (building block) is:
OR toe-in (Prefixes): the main circuit 140 that comes the relative position of computing unit according to the classification that will carry out
Boundary storer: be used to store two latchs 141 about the information of described boundary
MUXs: multiplexer 142, it selects the class of each unit according to present instruction
Can realize TRANSCODER by following two kinds of different modes, so that its size of optimization and speed:
The linear version that is used for little n value
(being used for big n value) two-dimentional version, it comprises LINE TRANSCODER and COLUMN TRANSCODER, and each all has the size of O (n1/2) magnitude.
Therefore, another importance of the present invention is this ability of CC 100: CC 100 gives an order to CE 102, and makes the instruction of this class be broadcast to all unit in the CM 104 concurrently in the single clock period.For example, those meet the unit of the standard that set by the instruction from CC 100, can in the identical clock period, carry out mark to self independently and selectively simultaneously, thus, in the back in the clock period, can in the single clock period, carry out follow-up instruction or operation once more concurrently according to this classification results.
Therefore, another importance of the present invention is: TRANSCODER (code converter) not only according to its local state (for example, it is mark or unlabelled state) classified in each unit, but also come to be classified in each unit according to its global state and present instruction.That is to say, the local state that may be discrete cell when an aspect of the unit classification of being undertaken by TRANSCODER (code converter) is " mark ", but it is also important that for this class unit and will " know " its " global state " with respect to all other unit, is " first is mark " unit or " last is mark " unit such as the unit of " mark ".
By an example, suppose in the clock period formerly, via attribute, these unit in the CM 104 have been carried out following mark: (the runic numeral is used in the unit of mark in this string) from some pointed unit of the instruction of CC 100:
CM:2?5?2?7?6?4?10...
Suppose that next will instruct " addr 5 " to be broadcast to all unit in the CM 104 again concurrently, wherein the vector 5 in the vector memory 108 is as follows in the single clock period:
The 5th row: 347825 12...
So all in the CM 104 will be added the content of their data field in the content of the corresponding element in the vector 5 unit of mark, consequently this operation is stored in each unit of CM104, and is as follows:
CM:5?9?2?7?6?9?10...
As top example was described, the mark/unmarked state of each unit in the CM 104 (was not referred in this example by the influence of the specific instruction sent by CC 100; Although just as mentioned, some instruction may influence the state of the mark of each unit in the CM 104).In addition, all additive operations all (be that is to say parallel ground) by side by side and carry out in the indexing unit at each in the single clock period.
As further illustrating in the above example, data handling system of the present invention can realize the operation of the vector definition of logarithm value on system-level; In this example, vector value is the vector 5 of CM 104 data and vector memory 108.In this, data handling system of the present invention comprises: have the CE of the CM 104 of the active cell of having (that is, treatment element) linear array, wherein each unit in the CM 104 all has one or more marker bits and a totalizer (134); Meanwhile, on the rank of each unit, can see the corresponding element of all vectors as one group of register that is associated.(number of the register that therefore, is associated equals the number of vector 108).
In addition, another importance of the present invention is: link by the independent related register that makes each unit in each totalizer and the CM 104 respectively respectively, data handling system of the present invention provides the operation of logarithm value vector, but realization matrix calculates or the like thus.
Compare with the MIMD system with the SIMD that is discussed in background technology of the present invention, data handling system of the present invention does not rely on the constant and strict description between the operation of processor and the storage arrangement that is linked.
In data handling system of the present invention, can store and be used for the message of searching for, but not be with conventional " storage address " notion at CM 104; Although each unit self in the CM 104 can respond order that the overall situation sends process information selectively, itself is not a processor, but such just as previously discussed, and each unit in the CM 104 all comprise treatment circuit; And the performance of data handling system of the present invention is the linear function of its size strictly, and it can be by mode that other known programmable machine had not showed and be applicable to the programs/applications of wide region.
Be appreciated that aspect the characteristic of the treatment circuit that is comprised in each unit in the n of data handling system of the present invention in CM 104 unit and the configuration unrestricted.
According to the present invention, described CE 102 has abundant instruction set, is divided into groups by following class:
Global administration's instruction---the setting and the replacement of CM 104 boundaries; Swap data between CM 104 and RAM vector 108;
Search/access instruction---the visit that links that one or more unit of CM 104 are carried out;
The mark control command;
Data storage and move instruction;
The arithmetic sum logical order;
Conditional order; With
Index.
Attention: all instructions that are used for CE 102 are all carried out in the cycle at individual machine.
It self does not possess described CE 102 program storage is conducted interviews to take out the access right of its instruction---and each cycle, the operational code of obtaining in the special register was all waited in its unit, but it will adopt different entities, in this example, utilize CC 100 to come to do this for them; Described code for order and need individual access point with its taking-up.Therefore, the groundwork of described CC 100 is exactly the program implementation that drives CE 102, that is, and and the instruction that taking-up will be carried out by independent unit, and place them in the internal register; Simultaneously, it serves as the gateway of CE 102 and therefore is responsible for all I/O mutual.Described CC 100 also carries out simple sequential operation, then it can not write significant code for this class machine as if the words that do not have described operation: a class of this generic operation is exactly so-called " control primitive ", it is the instruction of those decision sequence (for example, if, while, repeat or the like) that are used to encode.
False code
Hereinafter, utilize false code to come the semanteme of the major part instruction of regulation CE 102 off the record, false code is used a kind of mark that inspired by the c program design language.Be appreciated that this explanation is not to limit the actual expression that realizes of instruction, but the present invention has also imagined other expression.
Special-purpose pseudo-statement forall describes the action by unit group executed in parallel; Its syntax can be expressed as:
·<forall?statement>∷=forall[(<forall?condition>)]<statement>;
·<forall?condition>∷=marked
|in?searchSpace;
Consider following three kinds of variations of forall:
1.forall
<action>;
2.forall(in?searchSpace)
<action>;
3.forall(marked)
<action>;
Change 1 and can be used for stipulating the action carried out by all unit among the CM 104.Change 2 and can be used for relating to the action (referring to top) of all unit in the search volume, be applicable to when all situations the during action of the unit execution appointment of mark and change 3.
On the rank of each unit, carry out the title that all instruct needed complete data set to use in false code together with them, be:
The register of unit (comprising the register that is associated), i.e. w, mark, r0, r1 ..., rN; With
The content of unit the right and left adjacent cells promptly is respectively right_w, right_mark and left_w, left_mark.
Simultaneously, can on the unit rank, estimate prediction to first_mark and last_mark; The former is true to the indexing unit of the leftmost side among the CM, and the latter is true for the indexing unit of the rightmost side.
Global administration's instruction
Ldl<value 〉: instant load rows (load line immediate); According to reduce the content of all CM unit (mark and w register) by the selected memory vectors of numerical value that the input of VAR is produced:
CM=RAM[VAR];
Stl<value 〉: instant storage line (store line immediate); The content (mark and w register) of all CM unit is saved in the selected memory vectors of numerical value that is produced by the input to VAR:
RAM[VAR]=CM;
Llim: left boundary (left limit); The left boundary of search volume is set to first indexing unit.Do not influence mark.Notice that described left boundary is searched for/unit, the leftmost side of the influence of access instruction.
Rlim: right boundary (right limit); The right boundary of search volume is set to first indexing unit.Do not influence mark.Notice that described right boundary is the unit, the rightmost side that is subjected to the influence of basic search/access instruction.
Droplim: deletion boundary; Left boundary is set to the CM unit of the leftmost side, and right boundary is set to the CM unit of the rightmost side.Do not influence mark.
Search/access instruction
Attention: all instructions of describing in this section are only moved in the compass of search volume; Variable is a m-1 bit value available in input register (INR).
Find<value 〉: identify the unit that all have the numerical value that equals described variable.For each unit, the marker bit of adjacent unit, its right side is set to 1 when finding coupling; All other marker bit is set to 0:
forall(in?searchSpace)
mark=(left_w==INR)?1:0;
Match<value 〉: will be stored in all the numerical value in the indexing unit compare with described variable.If find coupling in the unit of appointment, then just the marker bit of the following units is set to 1; All other marker bit is set to 0:
forall(in?searchSpace)
mark=(left_mark?&&?left_w==INR)?1:0;
Lfind<value 〉: search left and mark (find and mark left); Identify the unit that all have the numerical value that equals described variable.For each unit, the marker bit of adjacent unit, its left side is set to 1 when finding coupling; All other marker bit is set to 0:
forall(in?searchSpace)
mark=(right_w==INR)?1:0;
Lmatch<value 〉: mate left and mark (match and mark left); Be stored in all the numerical value in the indexing unit compare with described variable.If find coupling in the unit of appointment, then the marker bit of the unit of front is set to 1; All other marker bit is set to 0:
forall(in?searchSpace)
mark=(right_mark?&&?right_w==INR)?1:0;
Markall: all unit in the mark search volume:
forall(in?searchSpace)
mark=1;
Addmark<value 〉: all comprise the unit of the numerical value that equals described variable mark; Do not influence other mark:
forall(in?searchSpace){
if(w==INR)
mark=1;
}
Mark<value 〉: all comprise the unit of the numerical value that equals described variable mark; All other marker bit is set to 0.
forall(in?searchSpace)
mark=(w==INR)?1:0;
Clr<value 〉: remove the marker bit that all comprise the unit of the numerical value that equals described variable.
forall(in?searchSpace){
if(w==INR)
mark=0;
}
The mark control command
Clrf: remove first; Remove first (that is the leftmost side) mark.
forall{
if(first_mark)
mark=0;
}
Trace: never mark left.
forall{
if(right_mark)
mark=1;
if(mark)
mark=1;
}
Keepl: keep last; Underlined except removing institute outside last (that is the rightmost side) one.
forall{
if(!last_mark)
mark=0;
}
Clrl: remove last; Remove last (that is the rightmost side) mark.
forall{
if(last_mark)
mark=0;
}
Left: with the underlined mobile to the left unit of institute.
Forall
mark=right_mark;
Right: with the underlined mobile to the right unit of institute.
forall
mark=left_mark;
Cright: with good conditionsi moving to right; With the underlined mobile to the right unit of institute,, and replace this numerical value with 11...1 in such cases unless adjacent unit, their right sides comprises the numerical value that equals described variable.
forall{
if(left_mark?&&?w==INR){
mark=0;
w=11...1;
}
if(left_mark?&&?w!=INR)
mark=1;
if(mark)
mark=0;
}
Cleft: with good conditionsi moving to left; With the underlined mobile to the left unit of institute,, and replace this numerical value with 11..1 in such cases unless their adjacent unit, left side comprise the numerical value of appointment.
forall{
if(right_mark?&&?w==INR){
mark=0;
w=11..1;
}
if(right_mark?&&?w!=INR)
mark=1;
if(mark)
mark=0;
}
Data storage and transfer instruction
Nop: do not have operation:
Reset<value 〉: store the numerical value in all unit.Do not influence mark.
forall
w=INR;
Get: will be stored in first the numerical value in the indexing unit send to CM output, and its mark position that moves right.Do not influence other mark.
forall{
if(first_mark){
OUTR=w;
mark=0;
}
if(left_mark?is?first_mark)
mark=1;
}
Back: will be stored in first the numerical value in the indexing unit send to CM output, and its mark is moved to the left a position.Do not influence other mark.
forall{
if(first_mark){
OUTR=w;
mark=0;
}
if(right_mark?is?first_mark)
mark=1;
}
Set<value 〉: store first numerical value in indexing unit.Do not influence mark.
forall(marked){
if(first_mark)
w=INR;
}
Setall<value 〉: store all numerical value in the indexing unit.Do not influence mark.
forall(marked)
w=INR;
Ins<value 〉: insert numerical value before the unit of mark at first.The content of all unit on right side, insertion point is shifted a position to the right.Attention: in this process, the numerical value that is kept at first in the unit, the rightmost side is lost.
forall{
if(right?of?first_mark)
w=left_w;
if(first_mark)
w=INR;
mark=left_mark;
}
Del: deletion is stored in first numerical value in indexing unit.Described unit keeps the state of mark, and the content that will delete all unit on some right sides shifts a position left.
forall{
if(first_mark)
w=right_w;
if(right?of?first_mark){
w=right_w;
mark=right_mark;
}
}
Cpr: duplicate to the right; For all unit of mark, whole unit content (w register and mark) is copied to adjacent unit, right side.
forall{
if(left_mark)
w=left_w;
mark=left_mark;
}
Cpl: duplicate left; For all unit of mark, whole unit content (w register and mark) is copied to adjacent unit, left side.
forall{
if(right_mark)
w=right_w;
mark=right_mark;
}
Ccpr<value 〉: with good conditionsily duplicate to the right; For all unit of mark, the numerical value that is kept among the register w is copied to adjacent unit, right side; Also never mark is unless store the numerical value that equals described variable in the w register.
forall{
if(left_mark?&&?left_w!=INR){
w=left_w;
mark=1;
}
else
mark=0;
}
Ccpl<value 〉: with good conditionsily duplicate left; For all unit of mark, the numerical value that is kept among the register w is copied to adjacent unit, left side; Also never mark is unless store the numerical value that equals described variable in the w register.
forall{
if(right_mark?&&?right_w!=INR){
w=right_w;
mark=1;
}
else
mark=0;
}
Ld<address 〉: the instant loading; For all unit of mark, will be kept at register<r〉in numerical value be loaded in the w register, with a part as the selected RAM vector of numerical value that produces by input to VAR.
forall(marked)
w=<r>;
St<address 〉: instant storage; For the unit of mark, the numerical value that is kept in the w register is moved to register<r for all 〉, with a part as the selected RAM vector of numerical value that produces by input to VAR.
forall(marked)
w=<r>;
The arithmetic sum logical order
All arithmetic instructions all are that the m-2 bit digital represented with 2 complement code is carried out: operand<op〉be one of them location register that is associated (part of the selected RAM vector of numerical value that produces by input) to VAR, or the m-2 bit digital that provides by controller:
<op〉∷=INR[m-3:0] (instant numerical value) | r (RAM vector element)
Add<op 〉: operand is added to all in the w register of indexing unit.Do not influence mark.
forall(marked)
w+=<op>;
Fadd<op 〉: add fully, wherein the right side expansion is worked as carry (referring to add).
forall{
if(mark)
w+=(<op>+right_w[m-2]);
if(left_mark)
w[m-2]=0;
}
Sub<op 〉: deduct operand value in the numerical value the w register of indexing unit from being stored in all.Do not influence mark.
forall(marked)
w-=<op>;
Fsub<op 〉: deduct fully, wherein the right side expansion is worked as carry (referring to sub).
forall{
if(mark)
w-=(<op>+right_w[m-2]));
if(left_mark)
w[m-2]=0;
}
Half[<op 〉]: for all unit of mark, with the register manipulation number divided by 2 and the result is stored in the w register.Do not influence mark.
forall(marked)
w={<op>[m-2:m-3],<op>[m-3:1];
Fhalf[<op 〉]: complete half; For all indexing units, the register manipulation number divided by 2 and the result is stored in the w register, if the least significant bit (LSB) of left cell is 1, is then added to 100..0 wherein.Do not influence mark.
forall(marked)
w={<op>[m-2],left_w[0],<op>[m-3:1];
Lt<op 〉: less than (or equaling); For all unit of mark, check whether register w holds and be less than or equal to be kept at<op〉in the value of numerical value; If w<op, then the w extension bits is set to 1; If op>w, then this marker bit is set to 0.
forall(marked){
if(w<<op>)
w[m-2]=1;
if(w><op>)
mark=0;
}
Flt<op 〉: complete lt; For all unit of mark, when w<op or its adjacent unit, left side have when being set to 1 w extension bits, this extension bits is set to 1; Remove the left side extension bits, and if w>op, then also remove this mark.This instruction was used in conjunction with when test, a plurality of continuous unit was compared being used for.
forall{
if(mark?&&?(w<<op>‖left_w[m-2]))
w[m-2]=1;
if(right_mark)
w[m-2]=0;
if(mark?&&?w>op?&&!left_w[m-2])
mark=0;
}
Gt<op 〉: greater than (or equaling); For all unit of mark, check whether register w has more than or equal to being kept at<op〉in the value of numerical value; If w>op, then the w extension bits is set to 1; If w<op, then this marker bit is set to 0.
forall(marked){
if(w><op>)
w[m-2]=1;
if(w<<op>)
mark=0;
}
Fgt<op 〉: for all unit of mark, when w>op or its adjacent unit, left side have when being set to 1 w extension bits, this extension bits is set to 1; This left side extension bits is eliminated, and if w<op, then also remove this mark.This instruction was used in conjunction with when test, a plurality of continuous unit was compared being used for.
forall{
if(mark?&&(w><op>‖left_w[m-2]))
w[m-2]=1;
if(right_mark)
w[m-2]=0;
if(mark?&&w<op?&&!left_w[m-2])
mark=0;
}
Test: for all indexing units that comprises the numerical value that equals INR, marker bit is set to 0, and if the extension bits of left cell be 1, be 11..1 and the extension bits of removing left cell then with register w assignment.
forall{
if(right_mark?&&?right_w==INR)
w[m-2]=0;
if(mark?&&?w==INR?&&?left_w[m-2])
w=11...1;
else?if(mark?&&?w==INR)
mark=0;
}
And<op 〉: step-by-step with; For all unit of mark, register w and<op>between carry out step-by-step with.Do not influence mark.
forall(marked)
w&=<op>;
Or<op 〉: step-by-step or; For all unit of mark, register w and<op between carry out step-by-step or.Do not influence mark.
forall(marked)
w|=<op>;
Xor<op 〉: the step-by-step XOR; For all unit of mark, register w and<op between carry out the step-by-step XOR.Do not influence mark.
forall(marked)
w^=<op>;
Conditional order
Operand register<r are used in following two instructions〉(part of the selected RAM vector of numerical value that produces by input) and the m-1 bit value that comes from INR to VAR.
<r〉∷=w (being used for register w) | r (RAM vector element)
Cond<value〉[<r 〉]: whether for all unit of mark, checking has at least one to be set to 1 carry out the step-by-step AND-operation between two operands after.
forall(marked)
mark=((<r>&INR)!=0)?1:0;
Ncond<value〉[<r 〉]: for all unit of mark, check whether the result who carries out the step-by-step AND-operation between two operands is 0.
forall(marked)
mark=((<r>&INR)==0)?1:0;
Indexed instruction
Index:, be the numerical value of unit with respect to the relative position of unit, the CM leftmost side (it has index 0) with register w assignment for all unit of mark.
As can seeing from above-mentioned instructions and accompanying drawing, the present invention provides the novel method of deal with data in such a way, and described mode just provides the processing power of enhancing, and significantly reduces processing time, silicon area and power consumption.Such just as discussed, data handling system of the present invention provides the instruction of any appointment and the operand that will transmit thereof to each CM unit concurrently, and described instruction is carried out in described each CM unit in the identical clock period.
The inherent advantage of another of data handling system of the present invention just is: each unit in the cellular engine not only executes instruction in the single clock period simultaneously, but also those carry out the ability of these unit of overall broadcasting instructions by utilizing local state information and global state information to come dynamic constraints.Specifically, by usage flag position on independent unit rank, the actual cell in the content-addressed memory (CAM) can influence those unit on indexing unit left side or right side in a kind of unknown up to now mode.Therefore, on system level, the present invention that is to say by the mechanism of linking, and the characteristic of the content by each unit in the CM 104 or attribute but not wherein specific assigned address address provide and selectively activated or the change of flag state.
Therefore, the present invention will handle with storer on very contiguous rank and be made up, and this means: storage block need not visited independently so that finish its operation in the independent unit of CM 104.In addition, operand resides on cell level in their local space, therefore makes the result keep motionless, thereby has saved communication and processing time, silicon area and power.
Should be noted that: some instruction operands is actually to be broadcasted away by CC 100 in overall broadcasting instructions.
Although the present invention has been described with reference to preferred embodiment, those skilled in the art will appreciate that under the situation that does not break away from essential scope of the present invention, can make various tangible changes, also can replace its element with equivalent.Therefore, the present invention does not want to be confined to disclosed specific embodiment, but the present invention includes the embodiment in all scopes that fall into claims.