CYBERNETICS AND CONTROL THEORY
G. M. Adelson-Velsky, A. L. Brudno, A. S. Kronrod,
Submitted 1964-01-01 | RussiaRxiv: ru-196401.44522 | Translated from Russian

Full Text

CYBERNETICS AND CONTROL THEORY

G. M. Adelson-Velsky, A. L. Brudno, A. S. Kronrod,
P. T. Reznikovsky

ON AN INSTRUCTION SYSTEM FOR A THREE-ADDRESS MACHINE WITHOUT AN ADDRESS REGISTER

(Presented by Academician M. V. Keldysh on 27 VII 1963)

. The exposition is for a machine with 4096 memory cells containing 43-bit words. Machine-distinguished cells are: \(S\), the standard end \(\Omega\), and the unforgettable zero in the zero cell.

. Bits in words are numbered from right to left; \(A_k\) denotes the \(k\)-th bit of the word \(A\). Words may be interpreted:

a) as instructions \((A_{43} \div A_{37}\) — code, \(A_{36} \div A_{25}\) — address I, \(A_{24} \div A_{13}\) — address II, \(A_{12} \div A_1\) — address III).

b) as numbers in normal form \((A_{43}\) — sign, \(A_{42} \div A_{37}\) — order \(+ 100_8\), further — mantissa).

c) as positive integer 43-bit numbers.

. Everywhere the following notation is used: \(KA\) is the code of the word \(A\); \(\operatorname{Ad} A\) is the address part of \(A\) (from \(A_1\) to \(A_{36}\)). The I–III addresses of the word \(A\) are denoted \(A1, A2, A3\). In the case of possible ambiguity, the 12-bit number constituting \(As\) is denoted by “\(As\).” The address of the cell containing the word \(A\) is denoted by \(A0\). Everywhere \(\alpha, \beta, \gamma, \delta\), and \(\varepsilon\) denote, respectively, 1, 2, 3, 6, and 7 bits taken consecutively. The cell containing the instruction under consideration is denoted by \(Я\), and the one following it by \(Я + 1\).

. The instruction system is given in the table. In the text, explanations are given only for instructions that are not clear from the table. Work with external devices and block memory is not considered.

. Explanations to the code table

The immediate-execution instruction \(НИ\, A,B,C\) (001) executes the instruction from the cell \(A3 + \langle B\rangle\). Before this, “\(C\)” enters the address register of the instruction.

\(\operatorname{Prf}[A],\ B = C\) (002) serves to form the addresses of the cell \(C\) by algebraic addition of the addresses (and the code) \(B\). Let

\[ A = \alpha_0 \beta_0 \alpha_1 \beta_1 \alpha_2 \beta_2 \alpha_3 \beta_3. \]

Then “\(Bs\)” \(\times (-1)^{\alpha_s}\) is an addend for \(C\beta_s\) \((s = 1,2,3)\). If \(\beta_s = 0\), the number “\(Bs\)” is not used. \(KC = KB\) when \(\alpha_0 = \beta_0 = 0\), and \(KC = 0\) in all other cases. If \(\beta_0 \ne 0\), the quantity \(KB \times (-1)^{\alpha_0}\) is an addend for \(C\beta_0\).

The instruction \(\Phi(A,B,C)\) (003), executed immediately after \(\operatorname{Inf}\ ABC\) (103), makes it possible to refer in one instruction to a function of one variable with specification of the addresses of the argument and of the result.

The address-formation instruction (004). Let

\[ \begin{aligned} Я: &\quad \Phi A,\quad A,\quad B,\quad C,\\ Я + 1: &\quad K,\quad P,\quad Q,\quad R. \end{aligned} \]

The instruction \((K,\ P + \langle A3\rangle,\ Q + \langle B3\rangle,\ R + \langle C3\rangle)\) will be executed, with the address register of the instruction containing not \(Я\), but \(Я + 1\).

The instruction-formation instruction (005). Let

\[ \begin{aligned} Я: &\quad \Phi K\quad \alpha'_1 \alpha'_2 \alpha'_3 \alpha_1 \beta_1 \alpha_2 \beta_2 \alpha_3 \beta_3\quad M\quad T,\\ Я + 1: &\quad K\quad L_1\quad L_2\quad L_3. \end{aligned} \]

If \(T \ne 0\), the instruction

\[ KT = K,\qquad Ts = Ms \cdot \alpha_s' + (-1)^{\alpha_s}\cdot Ls\,\gamma_s \]

will enter the cell \(T\).

If \(T = 0\), then the instruction formed in the indicated way will not be written into memory, but will be executed immediately, as one located in \(Я + 1\).

Example.

\[ \begin{aligned} Я: &\quad \Phi K\ 101\ 13\ 02\ 00\ S\ T\\ Я + 1: &\quad \times\qquad A\qquad B\ C \end{aligned} \]

Group designation 0 …1 …2 …3 …4 …5 …6 …7
00. Interpreting and service commands 2-address commands
\((0,0,C)\)—unconditional transfer of control
NI \(A,B,C\)
(see text)
[[unclear: command name]] \((A)B \to A\)
reforming
(see text)
\(\Phi(A,B,C)\)
\(S\downarrow \leftarrow A\)
\((B-S2;S2)\to C\)
FA
formation of addresses
(see text)
FK
formation of operands
(see text)
conditional commands
GOP
group operation
(see text)
Work with external devices
10. Unconditional transfer of control \(C\) Stop \(A,B,C\)
write \(A\) and \(B\)
on punched tape
Command for working with long memory Multiple command MNP \((A,B,C)\)
\(A \to S\)
\([(0,0,0; q^{n+1})-1]\to \Omega\)
\(A \to B:C\) \(A \to B:\Omega\)
\([(0,0,0; q^{n+1})-1]\to \Omega\)
\(A^* \to B,{}^3C\)
\((0,0,0,\ldots,A^*)\to -B\)
\(A^* \to B:{}^3C\)
\((0,0,0,\ldots,A^*)\to -B\)
\((0,0,0,q^{n+1})\to \Omega\)
01. Addition action \(A+B=C\) \(A-B=C\) \(A\times B=C\) \(A:B=C\) \(A+{}_{n}B^*=C\) \(A-{}_{n}B^*=C\) \(A\times{}_{n}B^*=C\) \(A:{}_{n}B^*=C\)
11. Addition action, result in \(S\); conditional transfer of control \(C\) \(A+B:C\)
if \(S<0\)
\(A-B:C\)
if \(S<0\)
\(A\times B:C\)
on overflow
\(A:B:C\)
on overflow
\(A+{}_{n}B^*:C\)
if \(S<0\)
\(A-{}_{n}B^*:C\)
if \(S<0\)
\(A\times{}_{n}B^*:C\)
on overflow
\(\lvert A\rvert-\lvert B\rvert:C\)
if \(S<0\)
02. Complex tabular action
\(A\times B\) result: \(-A\times B\)
\(A:B\) result: \(-(A:B)\)
\((A\times B)+C=C\) \((A\times B)+C=C\) \(A\times(B+C)=C\) \(A:(B+C)=C\) \((A:B)+C=C\) \((A:B)+C=C\) \(A\times B\times C=C\) \((A:B)\times C=C\)
12. Complex tabular action, result entered in \(S\) \((A\times B)+C=S\) \((A\times B)+C=S\) \(A\times(B+C)=S\) \(A:(B+C)=S\) \((A:B)+C=S\) \((A:B)+C=S\) \(A\times B\times C=S\) \((A:B)\times C=S\)
03. Actions with whole cycles \(A+B=C\) \(A-B=C\) \(A\times B=C\)
tail in \(C\)
head in \(S\)
\(A(\bmod B)=C\)
quotient in \(S\)
\(A+{}_{n}B^*=C\) \(A-{}_{n}B^*=C\) \(A^* \cdot B=C\)
tail in \(C\)
head in \(S\)
\(A(\bmod B^*)=C\)
quotient in \(S\)
13. Actions with whole cycles, result entered in \(S\); conditional transfer of control \(C\) \(A+B:C\)
on overflow
\(A-B:C\)
if \(S<0\)
\(A\times B:C\)
tail in \(S\)
on overflow
\(A(\bmod B):C\)
if \(S=0\)
\(A+{}_{n}B^*:C\)
on overflow
\(A-{}_{n}B^*:C\)
if \(S<0\)
\(A\times{}_{n}B^*:C\)
tail in \(S\)
on overflow
\(A(\bmod B^*):C\)
if \(S=0\)
Group name .0 .1 2 .3 .4 .5 .6 .7
04 Logical operations \(A \vee B = C\)
logical addition
\(A \wedge B = C\)
logical multiplication
\(A \wedge B = C\)
logical multiplication
\(A * B = C\)
top
\((C_i=1,\ \text{if } A_i \ne B_i)\)
\([\delta]\wedge B = C\)
tracking
(see text)
\([f]\to B = C\)
word shift by address
(see text)
\(f\to B = C\)
word shift by address
(see text)
\(f\to B = C\)
shift of address part by address
(see text)
14 Logical operations; result sign in \(S\), condition for storing result in \(C\) \(A\vee B : C\)
provided \(S=0\)
\(A\wedge B : C\)
provided \(S=0\)
\(A\wedge B : C\)
provided \(S=0\)
\(A*B : C\)
provided \(S\ne0\)
\([\delta]\wedge B : C\)
provided \(S=0\)
\([f]\to B : C\)
(see text)
\(f_3\to B : C\)
provided \(S=0\)
\(f_3\to B : C\)
provided \(S=0\)
05 Forward shift
(see text)
\(f_{-\log B}=C\) \(f_{-1,\,B''}=C\) \(f_{-2,\,B''}=C\) \(f_{-3,\,B''}=C\) \(f_{-13}B=C\) \(f_{-23}B=C\) \(f_{-33}B=C\) \(f_{-\mathrm{adr}B}=C\)
15 Forward shift; result sign in \(S\), condition for storing result in \(C\)
(see text)
\(f_{-\log B}:C\)
provided \(\log S<0\)
\(f_{-1,\,B''}:C\)
provided \(S1<0\)
\(f_{-2,\,B''}:C\)
provided \(S2<0\)
\(f_{-3,\,B''}:C\)
provided \(S3<0\)
\(f_{-13}B:C\)
provided \(S1<0\)
\(f_{-23}B:C\)
provided \(S2<0\)
\(f_{-33}B:C\)
provided \(S3<0\)
\(f_{-\mathrm{adr}B}:C\)
provided \(\mathrm{adr}S<0\)
06 Backward shift
(see text)
\(f_{+\log B}=C\) \(f_{+1,\,B''}=C\) \(f_{+2,\,B''}=C\) \(f_{+3,\,B''}=C\) \(f_{+13}B=C\) \(f_{+23}B=C\) \(f_{+33}B=C\) \(f_{+\mathrm{adr}B}=C\)
16 Conditional transfer of control to \(C\) with changing of the index \(f^{+}_{3}\Rightarrow B'' : C\)
provided \(f3^{*}\ge B''\)
\(\ldots f3^{*}+1=f3''\)
\(f^{+}_{3}\le B'' : C\)
provided \(f3^{*}<B''\)
\(\ldots f3^{*}+1=f3''\)
\(f^{-}_{3}\Rightarrow B'' : C\)
provided \(f3^{*}>B''\)
\(\ldots f3^{*}-1=f3''\)
\(f^{-}_{3}<B'' : C\)
provided \(f3^{*}\le B''\)
\(\ldots f3^{*}-1=f3''\)
\(f^{+}_{3}\Rightarrow B3'' : C\)
provided \(f3^{*}\ge B3''\)
\(\ldots f3^{*}+1=f3''\)
\(f^{+}_{3}<B3'' : C\)
provided \(f3^{*}<B3''\)
\(\ldots f3^{*}+1=f3''\)
\(f^{-}_{3}\Rightarrow B3'' : C\)
provided \(f3^{*}>B3''\)
\(\ldots f3^{*}-1=f3''\)
\(f^{-}_{3}<B3'' : C\)
provided \(f3^{*}\le B3''\)
\(\ldots f3^{*}-1=f3''\)
07 Arithmetic, miscellaneous \(\lvert A\rvert+\lvert B\rvert=C\) \(\lvert A\rvert\,\mathrm{sign}\,B=C\) \(\sqrt{A+B}=C\) \(\{A:B\}=C\)
fractional part of \(A\) divided by \(B\)
\(A\oplus B=C\)
cyclic addition
\(A\ominus B=C\)
cyclic subtraction
\(A''\ldots B'=C\)
result without cyclic transfer through one digit
command for operation with decimal point
17 Boolean, miscellaneous \(C[[A]]B=C\)
selection
(see text)
\(P3F[[A]]B=C\)
disassembly
(see text)
\((A3''+B'')\to C\) \(f\leftarrow(-B^{*}+C3'')\) Set the special-function digit
(see text)
\(\operatorname{sign}f[(\delta S)](A B)\to C\)
(see text)
\(\max |A B|=C\)
\(\min A,B,S\)
\(\max |A|\,|B|=C\)
\(\min |A|,|B|,S\)

the command \((S1 - A3) \times B2 = (S3 + \text{“}C\text{”})\) will enter \(T\).

Group operation (006). Let

\[ \begin{array}{rcccc} Я: & ГOП & \alpha_0\beta_0\alpha_1\beta_1\alpha_2\beta_2\alpha_3\beta_3 & B & C\\ Я+1: & \ldots & \ldots & \ldots & \ldots \end{array} \]

Then the command located in \(Я+1\) is executed in a cycle “\(C\)” times if \(\beta_0=0\), and \(C\beta_0\) times if \(\beta_0 \ne 0\). To the \(s\)-th execution address of \(Я+1\), at each step there is added \((-1)^s\cdot\text{“}B\beta_s\text{”}\) if \(\alpha_0=1,\ \beta_s\ne 0\), and \((-1)^s\cdot\text{“}B\text{”}\) if \(\alpha_0=0,\ \beta_s\ne 0\). If \(\beta_s=0\), the \(s\)-th execution address of \(Я+1\) is not changed. At the end of the cycle, control passes to \(Я+2\), unless in the cycle it has been transferred to another command. The command \(Я+1\) itself remains unchanged.

Cut-out \([\delta_1\delta_2]\wedge B=C\) (044). If \(\delta_1\leqslant\delta_2\), then \(C_i=B_i\) for \(\delta_1\leqslant i\leqslant\delta_2\) and \(C_i=0\) for \(i<\delta_1\) or \(i>\delta_2\). If \(\delta_1>\delta_2\), then \(C_i=B_i\) for \(i\geqslant\delta_1\) or \(i\leqslant\delta_2\), and \(C_i=0\) for \(\delta_2<i<\delta_1\).

Complex shift \([A]\Rightarrow B=C\) (045). Let \(A=\alpha_{-1}\alpha_0\alpha_1\alpha_2\alpha_3\varepsilon\). Let \(\tau=\varepsilon-100_8\).

The shift is by \(|\tau|\) digits to the left for \(\tau\geqslant0\) and to the right for \(\tau<0\). Shifted are: the code \(B\) if \(\alpha_0\ne0\), and the addresses \(Bs\) for which \(\alpha_s\ne0\). Let \(M\) be the set of numbers of digits subject to shifting. Let \(T_i=1\) for \(i\in M\) and \(T_i=0\) for \(i\notin M\). Into \(C\) goes \(Q\), the shifted part of \(B\), intersected with \(T\). If \(\alpha_{-1}=1\), then the unshifted part of \(B\) is also added to \(Q\). Command 145 is executed analogously. Control is transferred to \(C\) when \(Q=0\).

Shifts by address (046, 146, 047, and 147). Let \(\tau=\text{“}A3\text{”}-100_8\). The shift is by \(|\tau|\) digits to the left for \(\tau\geqslant0\) and to the right for \(\tau<0\). The commands \(A_3\to B=C\) and \(A_3\to B; C\) (046 and 146) shift the whole word \(B\), while \(A_3\Rightarrow, B=C\) and \(A_3\Rightarrow, B; C\) (047 and 147) shift only the address part of \(B\), with \(KC=KB\).

Commands \(A\mathbin{\underline{\pm}}_i\text{“}B\text{”}\) (051—053; 151—153 and 061—063) are executed as follows: \(Ai\mathbin{\underline{\pm}}\text{“}B\text{”}=Ci\). The remaining addresses and the code of \(C\) coincide with the code and the corresponding addresses of \(A\).

Commands \(A\mathbin{\underline{\pm}}_{i3}B\) (054—056, 154—156 and 064—066) add (subtract) “\(B3\)” to \(Ai\); the remaining addresses and the code are preserved.

Assembly Сб \([A],\,B=C\) (170) and disassembly Рзб \([A],\,B=C\) (171). Let \(i_1<i_2<\cdots<i_k\) be the numbers of all digits of \(A\) for which \(A_{i_s}\ne0\). Then in assembly \(C_s=B_{i_s}\) for \(s\leqslant k\) and \(C_s=0\) for \(s>k\), while in disassembly \(C_{i_s}=B_s\) \((1\leqslant s\leqslant k)\), and the remaining digits of \(C\) are equal to 0. Selection of the most significant one. St. ed. \(A,B,C\) (174). Let \(\lambda=\max i\ (A_i=1)\). Then \(B_\lambda=1;\ B_s=0\ (s\ne\lambda),\ KC=C1=C2=0\) and \(C3=\lambda\).

Count \([\delta_1\delta_2]\wedge B=C\) (175). If \(\delta_1\leqslant\delta_2\), the number of digits \(B_i=1\) for \(\delta_1\leqslant i\leqslant\delta_2\) is placed in \(C3\), and if \(\delta_1\geqslant\delta_2\), the number of digits \(B_i=1\) for \(i\geqslant\delta_1\) and \(i\leqslant\delta_2\). In both cases \(KC=C1=C2=0\).

6°. In addition to the designated cells \(0\), \(S\), and \(\Omega\), it is useful to have also a “stopwatch” \(T\)—a counter cell in which the right 10—12 digits are electronic. To this counter, upon execution of each command (or, still better, of a standard cycle), 1 is added.

7°. It is important that numbers of cells be assigned to the command register, to several RAM units, and to the register containing in address III the address of the preceding command.

8°. When operations with normalized numbers are performed, an emergency stop must occur upon an attempt to operate on the number \(-0\) (zero in the result of a floating-point operation must be issued as \(+0\)). This same number, as a command, is a stop. Provision should be made for memory layout—0 from the console.

Institute of Theoretical and Experimental Physics
of the State Committee for the Utilization of Atomic Energy
Institute of Electronic Control Machines
Central Scientific-Research Institute of Complex Automation

Received
8 VII 1963

Submission history

CYBERNETICS AND CONTROL THEORY