Multi-dimensional parallel storage device

Disclosed is a multi-dimensional parallel storing device, particularly for use in digital storing of picture elements scanned according to a scanning pattern. The device includes a plurality of multi-dimensional storage elements each being provided with an address-computing circuit. The address-computing circuit is assembled of a subcircuit for the recursive computation of a storage element of a distinguished or reference array point for a linear storing function after shifting of the window; a subcircuit for recursive computation of a reference array point for an isotropic addressing function; a translator for isotropic, preferably linear, storing function to determine a spacing vector of an array point for which the address computation is being performed and which is stored in a storage element pertaining to the referenced array point; and an arrangement for ascertaining the address of an arbitrary storage element. The storage arrangement of this invention is suitable for use in high-speed computers and operates with short binary words and enables access to all types of memory windows, such as rectilinear, flat or spatial. The address-computing circuit of this invention requires only the data about coordinate changes and about the preceding memory window and the coded designation of the window. The address computation is recursive.

Skip to: Description  ·  Claims  ·  References Cited  · Patent History  ·  Patent History
Description
BACKGROUND OF THE INVENTION

The invention relates in general to digital data processing, especially to digital picture processing, and in particularly to a multi-dimensional parallel storage device having an improved access to stored picture elements which are to be subsequently processed in high-speed data processors.

Due to high computing speeds which are frequently required for processing images, extremely fast computers of specialized design are frequently employed for the digital image processing. Such fast computers require very large storing units for output data, intermediate results and final results of the processing, as well as a very fast access to such storing units, whereby though these requisite access times are still shorter than the access times of available storing elements. In contemporary data-processing units, these contradictory requirements are solved in such a manner that the storage devices are designed with a degree of parallelism.

In parallel storage devices, in a single access cycle for example several storage elements, and hence several storing locations, are addressed simultaneously. Provided that each storage location contains a picture element of an image, then several picture elements are simultaneously available at the output of the arrangement, or vice versa several picture elements are written in simultaneously into the storing arrangement.

The effective time of the cycle, when related to a single picture point or element, is thus reduced by the number of parallel-connected storage elements. In storage devices of this kind, those picture points are with advantage connected in parallel which in the computer are simultaneously required in one processing step, or are presented in the result of a computing step.

There are several forms of such picture segments. These forms of picture segments therefore must also bein agreement with access forms of a parallel storage device. The realization of such access forms requires that the picture points which are to be addressed in parallel be located as different storage elements and, in addition, that the determination of an address pertaining to each of these storage elements be performed with manageable expenditures for arithmetic-logic functional units.

Known are technological solutions which permit the parallel access to all multi-directional lines in a multi-dimensional array. The number of storage elements in such prior-art devices corresponds to a prime number, which in a two-dimensional array is larger than or equal to 5, and in a three-dimensional array is larger than or equal to 11. Such technological solutions are described for example in H. D. Shapiro, Theoretical limitations on the use of parallel memories, Ph. Thesis, December 1975, Report UIUCDSR-75-776, Dep. of Computer Science, University of Illinois, Urbana Ill. and in German Pat. No. 2,718,849.

In digital image processing, in which those groups of picture elements which are to be accessed in parallel and from one access to another are located close to one another, the prior-art arrangements exhibit certain disadvantages. More specifically, these disadvantages reside in the fact that during each access completely new coordinates i, j and k of a window must be applied in the address-computing circuit, and consequently the address computation must be carried out by using large numbers, necessitating the use of words of large width. For relatively small variations of the position of the window in a three-dimensional array, such prior-art arrangements are expensive and relatively slow.

Another disadvantage of such known arrangement is in the fact that parallel access to windows can be made in a straight-line form, whereas in the picture processing also flat and spatial windows are of interest.

SUMMARY OF THE INVENTION

It is therefore a general object of the present invention to overcome the aforementioned disadvantages.

More particularly, it is an object of the invention to provide an improved method of and a device for computing addresses in the storage device of the aforedescribed kind which can operate with substantially smaller word widths for computing the addresses.

An additional object of the invention is to provide such an improved multi-dimensional storage device which in addition to accesses in a straight-line form permits only access to flat and spatial windows.

A further object of the invention is to provide such an improved multi-dimensional storage device having a parallel access to all windows without interfering with isotropic, preferably linear, storing functions, namely the array points of the access format are stored in different storage elements.

A still further object of this invention is to provide such an improved storage device in which the access data to all windows in a straight-line form are given in a multi-dimensional array, whereby the circuit for computing the addresses does not operate with coordinates which describe the position of the window in the area but it operates with coordinate changes relative to the previously accessed window.

In this context, an isotropic storage function means that, if two array points are assigned to equal storage elements, then to the adjoining array points are also assigned equal storage elements.

Under the term "straight lines" are to be understood all, even interrupted, lines of N array points in a multi-dimensional array, whereby the spacing between two consecutive array points of interrupted lines is constant, and N means a prime number.

An arbitrary reference point of a spatial, flat or straight-line window under consideration is designated as a distinguished point of the window.

In keeping with these objects and others which will become apparent hereafter, one feature of the invention resides, in a multi-dimensional parallel storage device, in the provision of N storage elements each being provided with an address-computing circuit, each address-computing circuit having inputs for receiving values corresponding to coordinate changes of an access format for N array points, and these inputs being connected to corresponding inputs of an arrangement for recursive computation of a storage-element address for a distinguished array point for isotropic, preferably linear, storage functions after the shifting and also are connected to corresponding inputs of an arrangement for recursive computation of a distinguished array point for isotropic addressing function. The output of the arrangement for the recursive computation of the storage element of a distinguished array point is connected to an input of an interpreter of isotropic, preferably linear, storage functions for determining a spacing vector (x.sub.1, . . . , x.sub.n) of the array point which depends only on the storage element which is assigned to the distinguished array point and for which the address computation is being performed, and which is stored in a storage element pertaining to the corresponding address-computing circuit. The number of storage elements for which the address computation is being performed is applied to a second input of the interpreter, and a third, multi-channel input of the interpreter is fed a coded characteristic mark of the window. The outputs of the interpreter as well as the outputs of the arrangement for the recursive address computation of the distinguished array point are connected to an arrangement for determining the address of the corresponding storage element. At the output of the last arrangement occurs the computed address.

The change of memory window coordinates in principle is not subject to any limitations, even if in practice are preferred small changes of the coordinates and in practice it is assumed that .vertline..DELTA.i.vertline.<N.sub.1 .vertline..DELTA.j.vertline.<N.sub.1 .vertline..DELTA.k.vertline.<N. For changes which are larger than N (number of memory elements), the addressing-computing circuit can be readily modified so that suitable constants, which are multiples of N, are added to the spacings or coordinates of vectors x.sub.1, x.sub.2 and x.sub.3 which indicate the actual position of arbitrary storage or memory elements to the element S in which distinguished reference array point of the window at a time point t is located. Otherwise, even in this case, the address-computation circuit is unchanged.

As mentioned before, N denotes the number of all storage elements in the multi-dimensional memory. Constants a and b are determined from 0.ltoreq.a, b<N.

The functions f.sub.1.sup.F, f.sub.2.sup.F and f.sub.3.sup.F for an arbitrary permissible window F are given in the form of tables.

The tables for the above functions f.sub.1.sup.F, f.sub.2.sup.F, f.sub.3.sup.F for all possible window can be determined from a number Z of array points (Z.ltoreq.N), whereby the array points of an access format are stored in differing storage elements, and the storage functions are determined by the aforementioned parameters a and b. By the linear storage function S(i,j,k)=(a.multidot.i+j+b.multidot.k)modN, it is defined that the array point (i,j,k) of a three-dimensional array be stored in a storage element S(i,k,j). Then the window F under consideration is located in the array in such a manner that a distinguished reference point of the window coincides with an array point i.sub.1, j.sub.1, k.sub.1 with S(i.sub.1, j.sub.1, k.sub.1)=0. It is assumed that f.sub.1.sup.F (0)=f.sub.2.sup.F (0)=f.sub.3.sup.F (0)=0. In the further steps, an array point (i.sub.2,j.sub.2,k.sub.2) is to be found in the window location for which the expression S(i.sub.2,j.sub.2,k.sub.2 )=1. If there is such a point, then one sets f.sub.1.sup.F (1)=i.sub.2 -i.sub.1, f.sub.2.sup.F (1)=j.sub.2 -j.sub.1, f.sub.3.sup.F (1)=k.sub.2 -k.sub.1. If such a point is not found, then f.sub.1.sup.F (1), f.sub.2.sup.F (1) and f.sub.3.sup.F( 1) are not determined. Then a point (i.sub.3,j.sub.3,k.sub.3) is to be found in the window for which the expression S(i.sub.3,j.sub.3, k.sub.3)=2 is valid. If there is such a point in the window, the f.sub.1.sup.F (2)=i.sub.3 -i.sub.1, f.sub.2.sup.F (2)=j.sub.3 -j.sub.1, f.sub.3.sup.F (2)=k.sub.3 -k.sub.1 ; if there is no such point, then f.sub.1.sup.F (2), f.sub.2.sup.F (2) and f.sub.3.sup.F (2) are not determined.

Thereafter, the window is searched for a point (i.sub.4,j.sub.4,k.sub.4) for which S(i.sub.4,j.sub.4,k.sub.4)=3 is valid. When such a point is found, then F.sub.1.sup.F (3) is set to be equal to i.sub.4 -i.sub.1, f.sub.2.sup.F (3)=j.sub.4 -j.sub.1, f.sub.3.sup.F (3)=k.sub.4 -k.sub.1. If no such point is found, then the above functions f.sub.1.sup.F (3), f.sub.2.sup.F (3), f.sub.3.sup.F (3) are not determined. One continues in an analogous manner, until a point i.sub.N,j.sub.N,k.sub.N is found for which the expression S(i.sub.N,j.sub.N,k.sub.N)=N-1 is valid. When such point is found, then f.sub.1.sup.F (N-1) is set to equal i.sub.N -i.sub.1, f.sub.2.sup.F (N-1)=j.sub.N-j.sub.1, f.sub.3.sup.F (N-1)=k.sub.N -k.sub.1. If there is no such point, then the functions f.sub.1.sup.F (N-1), f.sub.2.sup.F (N-1), f.sub.3.sup.F (N-1) are undefined.

In this manner, the definition of functions f.sub.1.sup.F, f.sub.2.sup.F, f.sub.3.sup.F is completed.

If the window F consists of array points M<N, then the above functions f.sub.1.sup.F, f.sub.2.sup.F, f.sub.3.sup.F are partially defined. In operation of the address-computing circuit only the defined values of these functions are needed.

For the sake of simplicity, the linear storage function S(i,j,k) has been set in the form (a.multidot.i+j+b.multidot.k)modN.

The originally generally set storage function S(i,j,k)=(a*.multidot.i+c*.multidot.j+d*.multidot.k)modN can be transformed by a suitable transformation of coordinates and by renaming the storage elements, i.e. by formal division of S* by a constant modN into a desired form, provided that not each of the three constants a*, b*, c* in the function S* are not zero denominators of N. The modification of the address-computing circuit for memories of more than three dimensions can be readily made without problems. The three-dimensional memory is considered by way of example only, for reasons of simplicity.

The following conditions are to be observed for an arbitrary window in a rectilinear form in a three-dimensional array with linear addressing and storing functions which include the constants a and b:

N is a prime number larger than or equal to 11. Hence, N.sub.1 =N. The constants a and b are to be selected such that

(a+b)modN.noteq.0

(a-b)modN.noteq.0

(a+b.+-.1)modN.noteq.0

(a-b.+-.1)modN.noteq.0

2.ltoreq.a, b.ltoreq.N-2

For N.gtoreq.11, the constants a=2, b=4 fulfill all conditions. Furthermore, for .delta..sub.F =(a.multidot.e.sub.1 +b.multidot.e.sub.3 +e.sub.2)modN.noteq.0.

In the following examples, it is assumed that 0.ltoreq..vertline.e.sub.1 .vertline..sub.1 .vertline.e.sub.2 .vertline..sub.1 .vertline.e.sub.3 .vertline..sub.1 <N. The latter condition, however, is not obligatory. If any of the values .vertline.e.sub.i .vertline..gtoreq.N, then the address-computing circuit of this invention can be readily modified by adding to x a suitable constant which is a multiple of N. For a special case of the window, the condition that .delta..sub.F .noteq.0 can be always fulfilled by suitable selection of constants a and b.

The novel features which are considered characteristic for the invention are set forth in particular in the appended claims. The invention itself, however, both as to its construction and its method of operation, together with additional objects and advantages thereof, will be best understood from the following description of specific embodiments when read in connection with the accompanying drawing.

BRIEF DESCRIPTION OF THE DRAWING

FIG. 1 is a block circuit diagram of a storage device of this invention;

FIG. 2 is a block circuit diagram of an address-computing circuit for a storage element of a three-dimensional storage device;

FIG. 3 is a block circuit diagram of a translator of linear storing functions for determining spacing vectors x.sub.1, x.sub.2, x.sub.3 of memory windows in linear form in a three-dimensional array;

FIG. 4 is a schematic block circuit diagram of all groups of subcircuits for determining the spacing vectors x.sub.1, x.sub.2, x.sub.3 for an actual embodiment of FIG. 2;

FIG. 5 is a schematic block circuit diagram of further groups of subcircuits for determining an address a.sub.1 (P) for the i and j coordinates of a storage element, as applied in an actual embodiment of the circuit of FIG. 2; and

FIG. 6 is a block circuit diagram of a group of subcircuits for determining an address for the k-coordinate of a storage element pertaining to a computing circuit in the embodiment of FIG. 2.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1 shows the principal arrangement of a three-dimensional storage device of this invention, in which each address-computing circuit 2 is supplied at one input bus with values .DELTA.i, .DELTA.j, .DELTA.k corresponding to coordinate changes, and at the other input bus with a value F defining a memory window. It will be seen that each address-computing circuit is connected to the input of a single storage element 1.

An example of an address-computing circuit 2 for one storage element of a three-dimensional storage device is illustrated in FIG. 2. In this Figure, A denotes an arrangement for the recursive computation of a storage element of a distinguished array point for linear storing functions after the time point of shifting. Inputs .DELTA.i and .DELTA.k are connected to multipliers 3 and 4 which multiply coordinate changes .DELTA.k and .DELTA.i by constants b and a. The third input .DELTA.j of the arrangement and the outputs of the multipliers are connected to an adder 5. A fourth input of the adder 5 is connected to the output of a register 7. The output of the adder 5 is connected to another multiplier 6 where the output signal is multiplied by 1/N, i.e., it is divided by the number N of storage elements. The remainder of this division is applied to the inputs of register 7 to load a value S denoting a storage element pertaining to the distinguished array point in the register 7 and to feed this signal to the output of the circuit arrangement A.

The arrangement B serves for recursive address computation of the distinguished array point for isotropic addressing functions:

A multiplier 18 is connected to the input .DELTA.i for multiplying the corresponding coordinate change .DELTA.i with a constant value L. The output of the multiplier 18 and the input .DELTA.j are connected through an adder 19. A third input of the adder 19 is connected to the output of a shift register 20. The output of adder 19 is connected to a multiplier 21 where the output signal is multiplied by a value 1/1L, applied to the second input of the multiplier 21. The output bus of the multiplier 21 delivers a signal corresponding to the remainder of the division by the value 1L (modulo-1L-generator) are applied to the inputs of the register 20 and also to a first output of the circuit arrangement B. The input bus for .DELTA.k is connected to the input of a multiplier 25 where it is multiplied by a value M applied to the second input of the multiplier.

The output of the multiplier 25 is connected to the input of an adder 27. The second input of adder 27 is connected to the output of register 26, and the output of adder 27 is connected to the input of register 26 and also to the second output of the circuit arrangement B.

An interpreter or translator C serves for determining a spacing vector x.sub.1, x.sub.2, x.sub.3 :

The output of circuit arrangement A leads to a subtractor 8 whose second input is supplied with a value S' of the storage element for which the address computation is being made. The difference S'-S is supplied to the input of a multiplier (moduloN-generator) 34 whose second input is supplied with a value 1/N, so that the difference S'-S is divided by N. The output of the multiplier 34 which carries the remainder of the result of the division is applied to an ROM memory, which is assembled of three stores 31, 32, 33. The second input of each store is supplied with value F which denotes the memory window under consideration. The stores 31, 32, 33 forming the ROM memory produce the functions f.sub.1.sup.F, f.sub.2.sup.F, f.sub.3.sup.F as described above. The outputs of the translator C are buses x.sub.1, x.sub.2 and x.sub.3.

The arrangement D serves for the determination of an address of the corresponding storing element:

The output x.sub.1 of the translator C is connected to an input of a multiplier 23 whose second input is supplied with a constant value L. The output x.sub.3 of the translator is connected to the input of another multiplier 29 whose other input is supplied with a constant value M. The first output of the circuit arrangement B for computing the address of the distinguished array point is connected to the input of an adder 22. Another input of the adder 22 is connected to the output of the multiplier 23, and a third input of the adder is connected to the output x.sub.2 of the store 32 in the translator C. The output of adder 22 is connected to the input of a multiplier 30 whose second input is applied with a value 1/1L. An input bus of the adder 28 is connected to the output of the adder 27 in the circuit arrangement B, and another input bus of the adder 28 is connected to the output of multiplier 29.

The output of the adder 28 and the output of multiplier 30 supplying the remainder of the division by 1L are connected to the corresponding inputs of an adder 24. The output bus of the adder 24 is connected to the address inputs of storage elements 1 to determine the address of the element S'.

As described before, each storage element is provided with the above described address computing circuit, which computes the following relations:

(a) A number S of a storage element S in which a picture element is stored which in the preceding access was the distinguished array point of the memory window, is added (moduloN) with the sum of the coordinate change in the j-direction, with the product of a coordinate change in y-direction and a constant a, and with the product of a coordinate change in k-direction and a constant b, to produce a value S.

(b) A relative difference value d is generated as a difference modulo N from the number S' of the assigned storage element S' and the value S described above under (a).

(c) By means of the translator for determining the three functions f.sub.1.sup.F, f.sub.2.sup.F, f.sub.3.sup.F, three values (x.sub.1, x.sub.2, x.sub.3) are assigned to the difference (S'-S) computed above under paragraph (b) with the condition that different values (S'-S) modulo N are correlated to different tripel (x.sub.1, x.sub.2, x.sub.3); that all these components x.sub.1, x.sub.2, x.sub.3 of a triple are not simultaneously equal to n.multidot.N where n.gtoreq.1; and that the following relationship is valid: f.sub.1.sup.F (0)=f.sub.2.sup.F (0)=f.sub.3.sup.F (0)=0.

(d) An address portion a.sub.1 determined from i and j and time point t+.DELTA.t for the storage element in the distinguished array point is formed as a sum of the address portion a.sub.1 ' which was determined in the preceding access at the time point t, the product of coordinate change in the direction i and a constant L as well as of the coordinate change in the j-direction.

(e) An address portion a.sub.2 determined by k at a time point t+.DELTA.t for the storage element in the distinguished array point is formed as a sum of the address portion a.sub.2 ' which was determined in the preceding access at the time point t, and the product of the coordinate change in the k-direction and a constant M.

(f) The address portion a.sub.1.sup.(P) for the assigned storage element P is formed as the sum modulo 1.multidot.L of the address portion a.sub.1 (according to (d)) and the product of x.sub.1 and the constant L and the value x.sub.2.

(g) The address portion a.sub.2.sup.(P) for the assigned storage element P is formed as the sum of the address portion a.sub.2 (according to (e)) and the product of x.sub.3 and the value M.

(h) The address A.sup.(P) of the assigned store P is formed as the sum of a.sub.1.sup.(P) and a.sub.2.sup.(P).

Accordingly, for the individual functional groups of the above-described address-computing circuit, the following analytical relationships result:

(a) S: =(S+a.multidot..DELTA.i+.DELTA.j+b.multidot..DELTA.k) mod N,

(b) d: =(S'-S) mod N,

(c) x.sub.1 : =f.sub.1.sup.F (d), x.sub.2 =f.sub.2.sup.F (d), x.sub.3 =f.sub.3.sup.F (d),

(d) a.sub.1 : (a.sub.1 '+L.multidot..DELTA.i+.DELTA.j) mod 1.multidot.L,

(e) a.sub.2 : =(a.sub.2 '+M.multidot..DELTA.k),

(f) a.sub.1.sup.(P) : =(a.sub.1 +L.multidot.x.sub.1 +x.sub.2) mod 1.multidot.L,

(g) a.sub.2.sup.(P) : =(a.sub.2 +M.multidot.x.sub.3),

(h) A.sup.(P) : =a.sub.1.sup.(P) +a.sub.2.sup.(P).

For the operation of the circuit of this invention the following parameters are to be selected:

L is greater than or equal to the number of array points of a picture line in j-direction.

1 is to be selected such that the smallest common denominator of 1 and N.sub.1 is greater than or equal to the number of array points in one picture column (i-direction), whereby N.sub.1 is the smallest number so that N.sub.1 .multidot.a=0 mod N.

M is greater than or equal to the product of 1 and L.

Referring now to FIG. 3, there is shown a translator for the address-computing circuit of FIG. 2 which when designed on the basis of the aforementioned relationships serves for the address computation for all windows in straight-line form. In this circuit, e.sub.1, e.sub.2, e.sub.3 denote the spacings of window points in i-, j- and k-directions of the window in straight form, as a special case of F (coded designation of the window).

A multiplier 10 multiplies the value e.sub.1 by a, a second multiplier 11 multiples the value e.sub.3 by b. The outputs of the two multipliers 10 and 11 and the input bus of signals e.sub.2 are connected to corresponding inputs of an adder 12. The output of adder 12 is connected to the input of a divider 13 which produces a reciprocal value of the sum. The output of divider 13 is connected to the input of a further multiplier 9 whose other input is connected to the output of a subtractor 8. The output of multiplier 9 is connected to the input of another multiplier 14 whose second input is supplied with a value 1/N. The output bus of multiplier 14 carries the result of the division by N and is connected to assigned inputs of multipliers 15, 16, 17. The second input of multiplier 15 is connected to the conductor for value e.sub.1, the second input of multiplier 16 is connected to the input conductor e.sub.2 and the second input of multiplier 17 is connected to the input conductor e.sub.3. The output of multiplier 15 is connected to the input of a multiplier 23 whose other input is supplied with the value L. The output of multiplier 16 is connected to an input of the adder 22 (FIG. 2) whose other inputs are connected respectively to the multiplier 21 (modulo-1.multidot.L-generator) and to the multiplier 23 (arrangement D). The output of multiplier 17 in the translator of FIG. 3 is connected to an input of multiplier 29 (FIG. 2). The remainder of circuit elements in FIG. 3 corresponds to those described in FIG. 2.

The distance or spacing between two array points lying on a straight line one after the other in the i-direction is e.sub.1, in the j-direction is e.sub.2, and in the k-direction is e.sub.3.

Each of the recursive address-computing circuits assigned to respective storage elements and creating the aforedescribed relationships (a) through (h), can use the following relationships instead of the relations (b) and (c):

(i) A constant .delta..sub.F characterizing a window in a linear form is formed as a sum modulo N from the distance or spacing e.sub.2 between two array points arranged one after the other in the j-direction in the window, and the product of two array points arranged in the window one after the other in the i-direction and a constant a, and the product from the spacing e.sub.3 of two consecutive array points arranged in a window in k-direction, and a constant b.

(j) A relative difference value m is formed as a quotient modulo N from the difference of the number S' and the value S (defined in accordance with (a)), and divided by .delta..sub.F.

(k) The three spacings e.sub.1, e.sub.2, e.sub.3 are multiplied by the relative difference value m, and the results are the values x.sub.1, x.sub.2, x.sub.3.

For the above described functional groups the following analytical relationships are valid:

(i) .delta..sub.F : =(a.multidot.e.sub.1 +b.multidot.e.sub.3 +e.sub.2) mod N,

(j) m: =(S'-S)/.delta..sub.F mod N,

(k) x.sub.1 : =m.multidot.e.sub.1, x.sub.2 : =m.multidot.e.sub.2, x.sub.3 : =m.multidot.e.sub.3.

On the basis of the following disclosure various modifications and structural changes in the circuit for computing the address can be made. For instance, if only a small number of different access formats and window shifts are needed, then the input conduits for e.sub.1, e.sub.2, e.sub.3 and for .DELTA.j, .DELTA.i, .DELTA.k can be combined together by a suitable code.

An example of the actual embodiment of an address-computing circuit for a three-dimensional storage device will be explained in the following description:

Picture format: 256.times.256.times.32

N: 11

a: 2

b: 4

1: 32

L: 256

M: 2.sup.13

.DELTA.i: 0, 1, . . . , N-1

.DELTA.j: 0, 1, . . . , N-1

.DELTA.k: 0, 1, . . . , N-1

Considered are first two flat windows F.sub.1 and F.sub.2. F.sub.1 is square 3.times.3 window in a plane (i=const.); F.sub.2 is a rectangular 2.times.5 window in a plane (k=const.). These two windows F.sub.1 and F.sub.2 are designated by boxed fields in Table 1. The distinguished array point of windows F.sub.1 and F.sub.2 is the point (0,0,0,).

                TABLE 1                                                     

     ______________________________________                                    

     Table 1 illustrates the storage function S (i,j,k) = (2i + j + 4k)        

     mod 11, and also the windows F.sub.1 (delimited by full line) and         

     F.sub.2                                                                   

     (delimited by dashed line).                                               

     ______________________________________                                    

      ##STR1##                                                                 

      ##STR2##                                                                 

             ##STR3##                                                          

             ##STR4##                                                          

             6 7 8 9 10 0  1 2 3 4 5 6 7                                       

             8 9 10 0 1 2  3 4 5 6 7 8 9 k = 1                                 

            10 0 1 2 3 4  5 6 7 8 9 10 0                                       

             1 2 3 4 5 6  7 8 9 10 0 1 2                                       

             ##STR5##                                                          

            10 0 1 2 3 4 5 6 7 8 9 10 0                                        

             1 2 3 4 5 6 7 8 9 10 0 1 2                                        

             3 4 5 6 7 8 9 10 0 1 2 3 4 k = 2                                  

             5 6 7 8 9 10 0 1 2 3 4 5 6                                        

             7 8 9 10 0 1 2 3 4 5 6 7 8                                        

     ______________________________________                                    

The functions f.sub.1.sup.F.sbsp.1, f.sub.2.sup.F.sbsp.1, f.sub.3.sup.F.sbsp.1 and f.sub.1.sup.F.sbsp.2, f.sub.2.sup.F.sbsp.2, f.sub.3.sup.F.sbsp.2, which define the three stores 31, 32, 33 of the translator C, are determined from the windows F.sub.1 and F.sub.2, described before. These functions are illustrated in the following Table 2. In the Table, a hyphen denotes that the corresponding function is not defined.

                TABLE 2                                                     

     ______________________________________                                    

     of functions f.sub.i.sup.F.sbsp.1, f.sub.i.sup.F.sbsp.2                   

     u     f.sub.1.sup.F.sbsp.1 (u)                                            

                   f.sub.2.sup.F.sbsp.1 (u)                                    

                           f.sub.3.sup.F.sbsp.1 (u)                            

                                  f.sub.1.sup.F.sbsp.2 (u)                     

                                        f.sub.2.sup.F.sbsp.2                   

                                               f.sub.3.sup.F.sbsp.2            

     ______________________________________                                    

                                               (u)                             

     0     0       0       0      0     0      0                               

     1     0       1       0      0     1      0                               

     2     0       2       0      1     0      0                               

     3     --      --      --     1     1      0                               

     4     0       0       1      2     0      0                               

     5     0       1       1      2     1      0                               

     6     0       2       1      3     0      0                               

     7     --      --      --     3     1      0                               

     8     0       0       2      4     0      0                               

     9     0       1       2      4     1      0                               

     10    0       2       2      --    --     --                              

     ______________________________________                                    

It is evident from Table 2 that for this storage eleven address-computing circuits and eleven storage elements are necessary to achieve a 256K bit storing capacity.

FIGS. 4-6 illustrate the actual embodiment of the address-computing circuit of this invention. In this embodiment the multipliers 3 and 4 are represented by adding in adder 35 which also produces the intermediate sum of the summer 5 in FIG. 2. Adder 36 also produces an intermediate sum of input values and the two intermediate sums from the adders 35 and 36 are applied in corresponding digital order to the inputs of a third adder 37. The output value at the adder 37 has eight binary digits. The modulo-N-generator 6 in the embodiment of FIG. 4 is represented by the combinational ROM 38. Registers 40, 39 and the subtractor 41 function as the register 7 and subtractor 8 in FIG. 2. The functions of structural elements 31 through 34 in translator C are combined in an integrated circuit 42 which may be in the form of an ROM.

FIG. 5 illustrates the actual embodiment of a circuit arrangement for determining an address a.sub.1 (P) for i and j coordinates of an arbitrary storage element P. Input values denoting coordinate variations .DELTA.i and .DELTA.j at the outputs of the constant multiplier 18 and the adder 19 are added in the adder 43, and in accordance with the operations performed in the adder 19 and multiplier 21 (modulo 1.multidot.L generator) are added in the adder 44 to the contents of the register 45 which stores the address portion determined by i and j for the storage element of the distinguished array points at the time point t+.DELTA.t. Vectors x.sub.1 and x.sub.2 according to the operations performed in the multiplier 23 and adder 22 are added in the adder 46. Adder 47 performs the remaining adding function of the adder 22 with the subsequent modulo-division of the multiplier 30. Due to the values L, the coordinate changes .DELTA.i.multidot.L and .DELTA.j as well as x.sub.1 .multidot.L and x.sub.2 have no common binary word. The adders 43 and 46 illustrated in FIG. 5 represent the actual wiring with correct positions.

FIG. 6 depicts the remaining part of an address-computing circuit 1 which determines an address in the direction of the k-coordinate of a storage element. The adder 48 performs the functions of the constant multiplier 25 and of the adder 27. Shift register 49 stores the binary information pertaining to the address portion a.sub.2 of the k-coordinate. The adder 50 performs the addition according to the adder 28 by a value x.sub.3 and the multiplication by M. The adder 24 of FIG. 1 can be dispensed with, inasmuch as due to the selection of M the address portions a.sub.2.sup.(P) and a.sub.1.sup.(P) have no common range of binary words. Hence, a.sub.1.sup.(P) is the low value part of an address and a.sub.2.sup.(P) is the high value part of the address of the assigned storage element.

In windows of rectilinear form, the spacing values e.sub.1, e.sub.2, e.sub.3 are applied instead of F. Values selected for the spacings e.sub.1, e.sub.2, e.sub.3 are 0, 1 or 2.

The functions of elements 9-17 can be combined in an integrated circuit, for example in the form of a ROM 42 consisting of three stores for storing 64.times.5 bits each.

In FIG. 4 the inputs of the read-only memory 42 are designated both by values e.sub.1, e.sub.2 and e.sub.3 as well as by the coded designation of the window F.

It will be understood that each of the elements described above, or two or more together, may also find a useful application in other types of constructions differing from the types described above.

While the invention has been illustrated and described as embodied in a multi-dimensional storing device for use with picture scanning, it is not intended to be limited to the details shown, since various modifications and structural changes may be made without departing in any way from the spirit of the present invention.

Without further analysis, the foregoing will so fully reveal the gist of the present invention that others can, by applying current knowledge, readily adapt it for various applications without omitting features that, from the standpoint of prior art, fairly constitute essential characteristics of the generic or specific aspects of this invention.

Claims

1. A multi-dimensional parallel storage device assembled of a number N of storage elements, comprising a number N of address-computing circuits assigned to respective storage elements, each address-computing circuit including a circuit means A for recursive computation of a storage element for a distinguished array point for isotropic storage function after time point of shifting a memory window, said circuit means A having a plurality of inputs for receiving data pertaining to coordinate changes in a multi-dimensional storing array, and further including a plurality of outputs, a circuit means B for recursive address computation of a distinguished array point for isotropic addressing functions, said circuit means B having a plurality of inputs connected to the inputs of said circuit means A and further including a plurality of outputs; an interpreting circuit C for isotropic storing functions for determining a distance vector of an array point which is independent from the position of window and for which the address computation is made, said interpreting circuit including storage means for storing ascertained distance vectors from the distinguished array point, said interpreting circuit having an input connected to the output of said circuit means A an input for coded data of the considered window and further including a plurality of outputs for delivering values of said distance vectors x.sub.1,..., x.sub.n where n is the dimension of the array of points; and a circuit means D for determining an address of an arbitrary storage element pertaining to the address computation circuit, said circuit means having a plurality of inputs connected to the outputs of said interpreting circuit and to the outputs of said circuit means B, and an output for delivering the computed address.

2. A multi-dimensional parallel storage device as defined in claim 1, wherein said circuit means A for the recursive computation of a storage element of a distinguished array point comprises an adder having a plurality of inputs connected to respective inputs of the circuit means A, a register having its input connected to the output of the adder via a modulo-N-generator and having its output connected to an additional input of the adder, and further including constant multipliers connected in selected inputs to said adder to define the storage function.

3. A multi-dimensional parallel storage device as defined in claim 1, wherein the interpreting circuit includes a subtractor having its input connected to the output of the circuit means A, and having another input supplied with a number designating an arbitrary storing element, output of the subtractor being connected via a modulo-N-generator to addressing inputs of a plurality of stores constituting together an ROM memory, said stores of the ROM memory storing coordinate spacings of array points stored in individual storage elements whereby different spacing coordinates are assigned to different store addresses, the coordinate spacings being defined in response to a code for a memory window applied to another input of respective stores and in response to the selected storing function; and outputs of respective stores being connected to the outputs of said interpreting circuit.

4. A multi-dimensional parallel storage device as defined in claim 1 wherein the circuit means B for the recursive computation of the addresses of a distinguished array point for an isotropic addressing function according to the dimension n, n.gtoreq.2, of the multidimensional parallel storage device comprises n-1 adders, one input of each adder being connected to an assigned input of said circuit means A and the first adder having another input connected to an assigned input of the circuit means A, and further including constant multipliers connected in selected inputs to said adders, n-1 registers, the first having its input connected via a modulo generator to output of the first adder and having its output connected to an additional input of the first adder and each of the other registers having its input connected to output of exactly one of the other adders and having its output connected to an additional input of the adder, the output of which is connected to the input of the considered register, and the inputs of the registers being connected to the outputs of the circuit means B.

5. A multidimensional parallel storage device as defined in claim 4 wherein said circuit means D for determining an address of an arbitrary storage element comprises a first adder having a first input connected to the output of the said circuit means B which is directly connected to the input of the first register of said circuit means B and a second input being connected to an assigned output of the said interpreter C and a third input being connected to another assigned output of the interpreter C and output being connected to a modulo generator and for every further output of the circuit means B a further adder having a first input connected to the output of the circuit means B and a second input connected to an assigned output of the interpreter C where selected outputs of the circuit means C and the inputs of corresponding adders in circuit means D are connected via constant multipliers and output connected to an input of an additional adder which comprises an additional input being connected to the output to the last mentioned modulo generator and output of the additional adder delivers the computed address.

6. A three-dimensional parallel storage device according to claims 1, 2, 3, 4, or 5, having a plurality of N (N>0) storage elements associated with the address-computing circuit, comprising a circuit means A having three inputs for receiving data corresponding to coordinate changes.DELTA.i,.DELTA.j,.DELTA.k, an adder having a plurality of inputs, two of said inputs being connected to the inputs.DELTA.i and.DELTA.k via multipliers for multiplying the coordinate change value by constants a and b;

the circuit means B including an adder having a plurality of inputs, one of said inputs being connected to the input.DELTA.i via a multiplier multiplying with a constant L which is larger than or equal to number of array points in one line in j-direction, the other input of the adder being directly connected to the input.DELTA.j, and the input.DELTA.k being connected via a multiplier by a constant M to an additional adder whose output is connected to one output of the circuit means B;
and the circuit means D including three adders and three multipliers, each having two inputs and an output, an input of the first adder being connected to the output of the first adder in the circuit means B and the other input of the first adder being connected to j-coordinate in the interpreting circuit C and an additional input of the first adder being connected via a multiplier by a constant L to output of i-coordinate of the interpreting circuit C, an input of the second adder being connected to the output of the second adder in the circuit means B and a second input connected via a multiplier by a constant M to the output for k-coordinate of the interpreting circuit C, an input of the third adder being connected to the output of the second adder and the second input of the third adder being connected via a modulo 1.multidot.L generator to the output of the first adder and the output of the third adder delivering the computer address, whereby M is larger than or equal to 1.multidot.L and 1 is a number so that smallest common denominator of 1 and N.sub.1 is greater than or equal to the number of array points in one picture column (i-direction), whereby N.sub.1 is the smallest number so that N.sub.1.multidot.a=0 mod N.

7. A three-dimensional parallel storage device as defined in claim 5, wherein the interpreting circuit for a memory window having a rectilinear form in a three-dimensional array includes a subtractor having two inputs and an output; a first multiplier having two inputs and an output; six multipliers each having two inputs and an output; an adder having three inputs and an output and a reversing divider having an input and an output; said interpreting circuit having three inputs e.sub.1, e.sub.2, e.sub.3 connected to the inputs of said adder via two multipliers by constants a and b and to the first inputs of additional three multipliers, the second inputs of the additional three multipliers being connected via a multiplier connected as a modulo-N-generator to the output of a fixed multiplier, inputs of said fixed multiplier being connected to the output of said subtractor and to the output of said divider and the input of said divider being connected to the output of said adder.

Referenced Cited
U.S. Patent Documents
3995253 November 30, 1976 Morrin, II et al.
4101960 July 18, 1978 Stokes et al.
4174514 November 13, 1979 Sternberg
4400768 August 23, 1983 Tomlinson
Other references
  • "The Prime Memory System for Array Access" by Duncan H. Lawrie. "Parallel Memory with Recursive Address Computation" by M. Gossel and B. Rebel.
Patent History
Patent number: 4570236
Type: Grant
Filed: Oct 26, 1983
Date of Patent: Feb 11, 1986
Assignee: Akademie der Wissenschaften der DDR (Berlin)
Inventors: Burghard Rebel (Berlin), Michael Gossel (Berlin)
Primary Examiner: James D. Thomas
Assistant Examiner: Thomas Lee
Attorney: Michael J. Striker
Application Number: 6/545,739
Classifications
Current U.S. Class: 364/900; 364/200; 340/721; 340/750; 382/44
International Classification: G06F 1300; G06F 15347;