DE2753062C2 - Einrichtung zur wiederholten Durchführung von Programmschleifen - Google Patents

Einrichtung zur wiederholten Durchführung von Programmschleifen

Info

Publication number
DE2753062C2
DE2753062C2 DE2753062A DE2753062A DE2753062C2 DE 2753062 C2 DE2753062 C2 DE 2753062C2 DE 2753062 A DE2753062 A DE 2753062A DE 2753062 A DE2753062 A DE 2753062A DE 2753062 C2 DE2753062 C2 DE 2753062C2
Authority
DE
Germany
Prior art keywords
counter
command
instruction
value
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
DE2753062A
Other languages
English (en)
Other versions
DE2753062A1 (de
Inventor
Stanley Edward Willingboro N.J. Ozga
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
RCA Corp
Original Assignee
RCA Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by RCA Corp filed Critical RCA Corp
Publication of DE2753062A1 publication Critical patent/DE2753062A1/de
Application granted granted Critical
Publication of DE2753062C2 publication Critical patent/DE2753062C2/de
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Description

dadurch gekennzeichnet, daß
die Zähleranordnuiig (Ci bis CV) eine Mehrzahl von Zählern aufweist, von dem;· jeweils ein Zähler einem Speicherregistcr (SWA bis SWD) und somit einer Verschachtelungstiefe zugeordnet ist, daß die Steuereinrichtung eine Hinweisanordnung (41 bis 43) aufweist, die die Verschachlclungstiefc aus dem Auftreten von ersten, bestimmten Befehlen (LNC) und von Signalen (POP) ermittelt, und damit den der jeweiligen Verschachtelungstiefc entsprechenden Zähler aus der Zähleranordnung (Ci bb C4) auswählt.
daß der durch die Hinweisanordnung (41 bis 43) ausgewählte Zähler gesteuert durch den ersten bestimmten Befehl (LNC). der einen Sprungbefehl darstellt, den jeweils im Adressenteil dieses Befehls (LNC) enthaltenen, die Anzahl der Durchlaufe durch einen Programmabschnitt festlegenden Wert ab- to speichert,
daß eine Dekrementiervorrichtung vorgesehen ist, die durch den zweiten bestimmten Befehl (DCC) aus dem Operationsteil eine Dekrcmenticrung des in dem jeweiligen Zähler gespeicherten Wertes um eins durch UND-Glieder (46) bewirkt, daß eine Null-Detektoranordnung (AQ) vorgesehen ist, die in Antwort auf den Wert des jeweiligen Zählers und den zweiten, bestimmten Befehl (DCC) ein erstes Ausgangssignal erzeugt, wenn der dekremen- mi tierte Wert von Null verschieden ist, wobei eine dritte Gatterschaltung (G 10 bis C 13) das erste Ausgangssignal zur Steuereinrichtung (18, F i g. 1 ;49,44, 411 F i g. 4) überträgt, die die erste Gatteranordnung (G 3) durchschallet, wodurch der erste Befehl der hl Programmschleife in ilen Befehlszähler (10) übertrugen wird,
und daß die Null-Dutckloranordnung (AQ)^m /weites Ausgangssignal erzeugt, wenn der Wert des jeweiligen Zählers beim zweiten, bestimmten Befehl (DCC) Null ist, wobei die Steuereinrichtung (18 F i g. 1:49,44,411 F i g. 4) das Signal (POP) erzeugt, durch das die zuletzt in den Stapelspeicher (15) eingeschriebene Speicheradresse des ersten Befehls der Programmschleife aus dem Stapelspeicher (15) herausgeschoben wird.
Dic vorliegende Erfindung betrifft cine Einrichtung zur wiederholten Durchführung von Programmschleifin nach dem Oberbegriff des Patentanspruchs.
Bei den meisten elektronischen Rechen- oder Datenverarbeitungsanlagen muß man irgendwelche Instruktions- oder Programmschleifen durchführen. Beispielsweise erfordert jedes iterative Verfahren solche Programmschleifen, d. h. die wiederholte Durchführung einer Befehls- oder Operationsfolge. Bei Matrixrechnungen oder -manipüiaiionen, beispielsweise beim Lösen simultaner Gleichungen, werden mehrere Schleifen oder wiederholte Programmfolgen während der Durchführung des Programms benötigt. Ein weiteres Beispiel ist das Durchsuchen einer Tabelle; eine Gruppe von Speicherplätzen kann einen sequentiellen Zugriff unter Verwendung des gleichen Satzes von Befehlen zur Prüfung gewisser Kriterien erfordern.
Programmschleifen müssen gewöhnlich als Teil des Programmes in die.^s, also in die sog. »Software« eingebaut werden. Dabei bedient man sich bestimmter Befehle zur Festlegung der Anzahl der Wiederholungen einer Schleife, und andere Befehle, welche an geeigneten Stellen im Programmablauf eingebaut sind, prüfen die Iterationswerte unter Durchführung von Verzweigungsbefchlcn auf Grund der geprüften Werte. Der Iterationswert oder die Schleifenzahl oder -nummer kann bei jedem Durchlaufen der Schleife erniedrigt oder erhöht werden. Wenn anfänglich dieGesanv.iihl der Schleifenwicderholungen in einem entsprechenden Zähler gespeichert wird, verringert man den Zählerinhalt bei jedem Durchlaufen der Schleife und prüft auf den Wert null. Ein derartiges Verfahren ist beispielsweise aus der DE-PS 11 80 171 bekannt. Wenn der Zähler anfänglich auf null eingestellt wird, erhöht man den Zählwert bei jedem Durchlaufen der Schleife und man prüft dann auf die insgesamt gewünschte Anzahl von Schleifenwiederholungcn.
Bei den meisten modernen Computern werden für die Schleifensteuerung mindestens zwei Befehle benötigt, nachdem der Itcrationswcrt bzw. die Iterationszahl in einem geeigneten Speicherplatz oder einem Mehrzweckregister gespeichert worden ist. Ein Befehl dient zum Verringern des im Register gespeicherten Wertes am F.nde des Schlcifcndurchlaufes und zum Festsetzen von Bcdicnungscodc, die davon abhängen, ob das Resultat der Verringerung des Wertes positiv, negativ oder null ist. Ein Verzweigungsbefehl, der gewöhnlich als bedingte Verzweigung bezeichnet wird, bestimmt auf der Basis des Bedingungscodc nach dem Wcrtevcrringerungs- oder Dckrenicntbefchl. ob die Schleife erneut begonnen werden soll. Bei anderen Maschinen, wie der KCA 501, ist ein Organisationsbefehl (beispielsweise ein Tally- oder COBOI.-Bcfchl) vorgesehen, der das Zählwerulekrem'Mit. die Prüfung und die Verzweigung bewirkt. Mil solchen Befehlen läßt sich die Anzahl der für clic Durchführung von Programmschleifen erfordcrli-
hen Befehlen auf eins verringern.
Die Anzahl der Programmschleifen, die insgesamt lurchlaufen werden muß, ist gewöhnlich ziemlich groß. >ie erhöht sich bei verschachtelten Schleifen, also bei Schleifen, die innerhalb anderer Schleien durchlaufen werden müssen, noch mehr. Bei der Manipulation mehriimensionaler Systeme muß für jede Dimension des Syitems gewöhnlich mindestens eine verschachtelte Schleife durchgeführt werden. Manchmal sind mehr Schleifen zu durchlaufen als Dimensionen vorhanden sind, wie unten anhand eines Beispiels erläutert wird. Bei einer dreidimensionalen Matrix mit einer Breite von 10 Wörtern sind zur Bearbeitung jeder Zelle des Systems oder der Anordnung 1000 Iterationen erforderlich. Operationen, wie das System auf Anfangs-Null-Werte einzustellen, können hinsichtlich des Befehlsbedarfes recht aufwendig sein, wenn es auf die Verarbeitungsgesehwindigkeit ankommt. Eine Multiplikation zweier Matrizen aus zehn mal zehn Werten erfordert ebenfalls 1000 Schleifenwiederholungen. Beim Multiplizieren zweier Matrizen mil zwanzig mal zwanzig Werten müssen insgesamt 8000 Programmschleifen duiehlaufen werden.
Aus der US-PS 33 48 211 ist eine Anordnung bekannt, die einen eine Mehrzahl von Speicherregistein aufweisenden Stapelspeicher besitzt, in den in Ausführung von jeweils am Beginn einer Programmschleife stehenden bestimmten Befehlen die Speicheradresse des gerade in Ausführung befindlichen Befehls aus einem Befehlszähler sequentiell einspeicherbar ist. Durch einen am Ende einer Programmschleife stehenden bestimmten Befehl wird bewirkt, daß die zuletzt im Stapelspeicher gespeicherte Speicheradresse zum Befehlszähler geliefert wird. Die Aufgabe der vorliegenden Erfindung besteht darin, eine Einrichtung zur Durchführung programmierter Befehle anzugeben, durch die bei der Durchführung von mehreren ineinander verschachtelten Unterprogrammschleifen der Befehlsaufwand verringert und dadurch die Arbeitsgeschwindigkeit erhöht werden kann.
Diese Augabe wird durch eine wie eingangs bereits erwähnte Einrichtung zur Durchführung programmierter Befehle gelöst, die durch die in dem kennzeichnenden Teil des Patentanspruchs angegebenen Merkmale gekennzeichnet ist.
Ein wesentlicher Vorteil der vorliegenden Erfindung besteht darin, daß die Schleifensteutrbcfehlc durch spezielle Schaltungsmaßnahmen (»Hardware«) ersetzt werden.
Im folgenden wird die Erfindung im Zusammenhang mit den Figuren näher erläutert. Es zeigt
Fig. 1 ein Logikschallbild eines Teiles einer elektronischen Rechen- oder Datenverarbeitungsanlage nach einem Ausführungsbeispiel der Erfindung;
F i g. 2a und 2b Schaltungen von Verknüpfungsschaltwerken, auf die bei der Erläuterung einer bevorzugten Ausführungsiorm der Erfindung Be/.ug genommen wird;
F i g. 3 ein Schaltbild einer Spalte eines Vier- Register-LIFO-Stapelspeichers;
Fig.4 ein Schaltbild eines Teiles einer Steuerschaltung, die bei einem Ausführungsbeispiel der erfindungsgemäßen Einrichtung Verwendung findet;
F i g. 5 eine graphische Darstellung eines typischen Programmes für eine Matrixmultiplikation; und
F i g. 6 eine graphische Darstellung der Arbeitsweise einer Einrichtung gemäß der Erfindung bei einer Matrixmultiplikation.
Die in F i g. 1 dargestellte Einrichtung enthält einen Befehlszähler 10, der auch als Befehlsadressenregister bezeichnet werden kann und für die Aufnahme von Adressen von einer Speicheradressenschiene 11, einer Speicherdaienschiene 12 oder einem Stapelregister 15 geschaltet ist. Die Information von der Speicherdatenschiene IZ die mit einem nichtdargestellten Speicherdalenregister gekoppelt ist, ist ferner einem Befehlsregister 14 zuführbar. Das Befehlsregister 14, das auch als Befehlsausführungsregister bezeichnet werden kann,
ίο enthält zwei Teile. Der erste Teil OP enthält den Operationscode und der zweite Teil »Address« enthält die OperatioRsadresse oder Bezeichnung des Befehls, der durchgeführt wird. Das Befehlsregister 14, der Befehlszähler 10, die Speichcradressenschiene 11 und die Speicherdatenschienc 12 sowie eine Steuereinrichtung 18 sind in irgendeiner Form in elektronischen Datenverarbeitungs- und Rechengeräten- oder -anlagen vorhanden.
Die Erfindung wird im folgenden am Beispiel eines »Ein Adresbcnw-Computers beschrieben. Bei einem solchen Computer enthält jeder Befeh; ;iinen Operationscode, der die durchzuführende Operati >n angibt, und einen Adressencode, der die Speicheradresse eines Operanden oder ein Literal enthält. Ein Literal ist ein Binärwori, das als Sofortoperand, Konstantenwert oder Bezeichner für eine spezielle Operation dient. Bei Befehlen, die zwei Operanden erfordern, wie den arithmetischen Befehlen, ist die Binärzahl in einem Akkumulator der zugehörige zweite Operand.
Die Einrichtung arbeitet normalerweise wie folgt: Die Adresse im Befehlszähler 10 wird durch ein Torsignal G 1 auf die Speicheradressenschiene 11 übertragen. Die Adresse wird dem Adressenregister eines Speicherwerks und einem Schienenaddierer zugeführt. Der Zweck des Schienenaddierers besteht darin, den Inhalt des Programmzählers um einen vorgegebenen Wert zu erhöhen oder zu erniedrigen. Gewöhnlich wird der Befehlszählerwcrt erhöht, daß anschließend die Adresse des nächsten Befehls adressiert wird. Ein Beispiti eines Schienenaddierers ist z. B. in der US-PS 33 72 382 beschrieben. Der geänderte Wert vom Schienenaddierer wird von der Adressenschiene 11 durch ein Torsignal G 2 wieder zurück in den Befehlszähler 10 übertragen. Die Daten, die in dem durch den Befehlszähler 10 adressierten Speicherplatz gespeichert sind, werder» in das Speichcrdatenregistcr und auf die Speicherdatenschienc 12 übergeführt und im Befehlsregister 14 gespeichert, was durch ein Steuersignal G 5 bewirkt wird. Der Operationscode im Befehlsregister 14 wird decodiert und liefert geeignete Steuersignale von der Steuereinrichtung 18.
Die oben beschriebene Folge von Vorgängen wird gewöhnlich als Abrufzyklus oder Befehlsübernahme bezeiennet. Hieran schließen sich ein oder mehrere Ausführungs/yklen an. Die Konfiguration der Steuereinrichtung 18 hängt vom Befehlsrepertore der betreffenden Datenverarbeitungsanlage ab. Der Steuereinrichtung 18 werden außer dem Operationscode noch mehrere andere Ein^angssignalc zugeführt, was jedoch in
ω der Zeichnung nicht im einzelnen dargestellt ist. Beispielsweise wird der Steuereinrichtung 18 ein Resultatsignal für das vorherige Resultat zugeführt, das anzeigt, ob der Wert im Akkumulator negativ. Null oder positiv ist. Ein bedingter Verzweigungsbefehl gibt an, ob eine
h5 Prüfung oder Prüfungen durchzuführen sind. Wenn das Ergebnis der Prüfung positiv (richtig) ist, wird der Adressentcii im Befehlsregister 14 durch ein Steuersignal C 4 in den Befehlszähler 10 übertragen. Wenn also
der Operationscode anzeigt, daß eine Prugrammvcrzweigung zu dem durch den Adressenteil des Befehls bezeichneten Speicherplatz stattzufinden hat, wenn der Inhalt des Akkumulators gleich Null ist, erzeugt die Kombination aus dem Signa! vom Opcrationsdecodie- ι rer und dem Zustand des dem Wert Null entsprechenden Resultatsignals das Steuersignal G 4.
Um die Durchführung von Schleifenbcfehlen zu erleichtern, enthält die in Fig. I dargestellte Logikschaltung außerdem einen Keller- oder Stapelspeicher 15 in und eine Zähleranordnung 17. Ein Keller- oder Stapelspeicher ist ein Stapel oder eine Folge von Registern, in denen die Information nach unten (»Push«) oder nach oben (»Pop«) übertragen oder transportiert werden kann. Derartige Speicher werden manchmal auch als Ablagespeicher oder LIFO-Register bezeichnet, wobei die letzterwähnte Bezeichnung bedeutet, daß die zuletzt gespeicherte Information beim Lesen als erstes wieder äüs den-, Speicher cnir.cmme:; wird. Beim Abiagespeichern wird das oberste Register, das als Stapclworl-A-Speicher-Register (SWA) bezeichnet werden soll, auf den Wert der über eine SWA-Eingangslcitung SWA EIN zugeführten Signale eingestellt. Die vorher in dem Speicher-Register SWA enthaltene Adresse wird in das zweite Speicher-Register des Stapelspeichers übcrtra- .?■; gen, das als Stapelwort-B-Speicher-Rcgistcr SWB bezeichnet werden soll und dessen vorheriger Inhalt in das dritte Speicher-Register, das Stapelwort-C-Spciehcr-Register SWC übertragen wird. Der vorherige Inhalt des Speicher-Registers SWC wird in das vierte Speicher-Register übertragen, das als Stapelwort-D-Spcicher-Register SWD bezeichnet werden soll und dessen vorheriger Inhalt verlorengeht. Beim Lesen oder Abfragen wird der Inhalt von SWB in SWA übertragen, der Inhalt von SWC in SWB und der Inhalt von SWD in r> SWC. Der Inhalt von SWD wird durch diese Operation nicht beeinfluß!. Der Inhalt des .Speicher-Registers SWA erscheint als Ausgangssignal SWA AUS des Stapelspeichers.
Bevor im einzelnen auf die Konstruktion eines gccigneten Stapelspeichers, der in der oben beschriebenen Weise arbeitet, eingegangen wird, soll ein verwendetes, spezielles Symbol erläutert werden. Dieses Symbol ist in F i g. 2(b) dargestellt und die Operation der durch dieses Schaltungssymbol dargestellten Schaltung entspricht der der in F i g. 2(a) dargestellten Schaltungsanordnung. Zwei Paare von Eingangssignalen werden also entsprechenden UND-Gliedern 21 und 22 zugeführt, deren Ausgangssignale ein ODER-Glied 23 steuern. Das Ausgangssignal des ODER-Gliedes 23 wird einer D-Eingangsklemme ekios Flipflops 24 zugeführt. Wenn einer Taktklemme Cdes Flipflops 24 ein Taktsignal zugeführt wird, speichert das Flipflop einen Wert D entsprechend der Gleichung:
D = AB + EF.
d. h. wenn A und B oder E und F richtig sind, wird das Flipflop 24 gesetzt. (Wie üblich werden die Richtig-Werte der UND-Verknüfpung vor den Richtigwerten der t>o ODER-Verknüpfung bestimmt). Das in F i g. 2(b) dargestellte Flipflop 25 wird gesetzt, wenn die gleichen Eingangsbedingungen wie bei F i g. 2a vorliegen.
In F i g. 3 ist ein Logikschaltbild einer einzelnen Spalte eines Stapelspeichers dargestellt, der in der oben er- hi läuterten Weise arbeitet und bei einer Einrichtung gemäß der Erfindung verwendet werden kann. Für jedes Bit im Befehlszähler 10 (Fig. 1) ist eine solche Spalte vorgesehen. Die Schallungsanordnung gemäß F i g. 3 enthalt vier Flipflops 31 bis 34. Beim Auftreten eines Steuersignals PUSH, das »Speichern« bedeutet, werden das ITipflop 31 auf den Wert des Signals auf der Eingangslcitung SWA-EIN, das Flipflop 32 auf den vorher im Flipflop 31 gespeicherten Wert, das Flipflop 33 auf den vorher im Hipflop 32 gespeicherten Wert und das Flipflop 34 auf den vorher im Flipflop 33 gespeicherten Wert gesetzt. Das Steuersignal PUSH tastet ferner ein ODF.R-Glicd 36 auf. das das Taktsignal für jedes der Flipflops 31 bis 34 liefert. Ein Steuersignal POP, das einen Lese- oder Endspeicherbefehl darstellt, liefert wieder ein Taktsignal über das ODER-Glied 36 und verschiebt die gespeicherten Werte vom Flipflop 32 in das llipflop 31, vom Flipflop 33 in das Flipflop 32 und vom Flipflop 34 in das Flipflop 33. Das Ausgangssignai SWA-AUS des Flipflops 31 steht auf einer entsprechenden Ausgangslcitung zur Verfugung.
Bri der Einrichtung gemäß F i g. 1 kann der Inhalt des Befehlszählers 10 also durch ein Speicherkommando in den Stapelspeicher 15 geschoben werden und der Inhalt des Speicher-Registers SWA kann durch das Steuersignal G 3 im Befehlszähler 10 eingestellt werden. Die Leitungen zwischen dem Stapelspeicher 15 und dem Befehlszähler 10, d.h. die Leitungen SWA-AUS und SWA-EIN sind Sammelleitungen oder Schienen, die jeweils dnc Ader für jedes Bit im Befehlszähler 10 enthalten.
Der Zähler 17 enthält vier Zählcranordnungen C1 bis ("4 die jeweils einem Platz im Registerstapel des Stapelregisters 15 entsprechen. Beispielsweise ist dem Stapelwort A eine Zählanordnung C1 zugeordnet, dem Stapclwort B eine Zähleranordnung C2 usw. Anfänglich wird der Inhalt jeder Zählanordnung durch Steuersignalc Gb bis G 9 auf den Wert im Adressenteil des Befehlsregisters 14 eingestellt. Jede Zähleranordnung hat ferner einen Signalcingang zum Verringern oder Dekrcmenticren des Zählerinhalts und am Ausgang jeder Zählanordnung ist ein Null-Detektor vorgesehen. Der Ntilldclcklor kann einfach durch eine UND-Verknüpfung der Ausgangssignale von den verschiedenen Stufen der zugehörigen Zählanordnung oder m X) für einen ni-slufigcn Zähler realisiert werden. Das Nullausgangssignal jeder Zähleranordnung wird durch Steuersignale G 10 bis G 13 zur Steuereinrichtung 18 durchgeschleust.
Ks ist /war möglich. Befehle vorzusehen, um die einzelnen Zähleranordnungen in dem Zähler 17 individuell unter Steuerung durch das Programm einzustellen, eine automatische Steuerung der Zähleranordnung wird jedoch vorgezogen und liefert dasselbe Ergebnis. Γ i g. 4 zeigt ein Schaltbild eines Teiles der Einrichtung 17, die für die Verwendung als automatisches Zählerhinweislogikschaltwcrk geeignet ist. Die Steuereinrichtung 17 enthält einen Zähler 41 mit dem Bereich 4, der in bekannter Weise als zweistufiger Ripple-Vorwärts-Rückwärls-Zähler realisiert werden kann und Eingangssignale an einen Eins-Aus-Vier-Dccodierer 42 liefert. Die Ausgangslcitungen des Dccodierers 42 geben an, welehe Zählanordnung die gerade benötigte Zähleranordnung ist. Ein erster bestimmter Befehl, wie »Nächste Zähleranordnung beschicken« (LNC) kann verwendet werden, um den Stapelspeicher automatisch zu beschikken (PUSH) und den Zähler 41 für die nächste Schleife einzustellen. Der Zähler 41 wird anfänglich auf den Wert Null (Binär 00>) eingestellt, so daß ein erster bestimmter Befehl LNC ein Steuersignal G 6 von einem UND-Glied 43 erzeugt. Das Steuersignal G 6 schleust in
δι
F i g. I den Adressenteil des Befehls im Befehlsregister 14 in die Zähleranordnung Cl. In einem /./VC-Bcfchl besteht die Befehlsadresse aus einem Wert, der die Anzahl der SchleifenJurchläufc oiler -Wiederholungen angibt, die beginnend bei der Adresse durchzuführen sind, welche durch den i-A/C'-Befehl im Stapelspeicher gespeichert wird. Da der Befehlszähler IO inkremeniiert wordoHst, wird der erste Schlcifcnbefehl derjenige Befehl sein, der auf den LNC-Befehl folgt. Ein im Schaltwerk gemäß Fig.4 vorgesehenes Vcrzögerungselcment 45 gestattet eine Beschickung ier Zähleranordnung, bevor der Bcreich-vier-Zähler 41 auf den nächst höheren Zählwert wcitergeschaltet wird, in diesem Beispiel auf Oh, entsprechend der Zähleranordnung C 2. Das verzögerte LA/C-Signal erzeugt ferner ein Speicherbefehlsignal für den Stapelspeicher 15 (Fig. 1).
Ein zweiter bestimmter Befehl, wie »laufenden Zähler dckrcmcniicrer! und prüfen« (DCC) mach", einen •Sat-' von UND-Gliedern für die Dekrcmentierung der laufenden Zähleranordnung ansprechbereit. Die zu dckrementierende Zähleranordnung, d. h.die »laufende« Zähleranordnung ist immer die Zähleranordnung, die zuletzt beschickt worden ist. Die Steuerung oder Durchschleusung ist daher so ausgebildet, daß das Speicherregister, das durch den Zähler 41 minus Eins bezeichnet wird, durch den Befehl dekremcntiert wird. Bei diesem Beispiel wird, da die Zähleranordnung CI (entsprechend dem Zählwert OOj) beschickt worden war, ein Dekrementsignal D1 durch das UND-Glied 46 erzeugt, das ^urch das Ausgangssignal Oh vom Decodierer 42 aktiviert wird. Durch ein Verzögcrungselcmcnt 47 wird ein Zeitintervall vorgesehen, das eine Stabilisierung des Zählerwertes nach dem Dekrementsignal gestattet und dann das Null-Ausgangssignal von den Null-Detektoren (mit einem der Steuersignale C IO bis G 13) an die Steuereinrichtung 18 durchschleust. Das Steuersignal C 10 entspricht dem eben dekrementierten Zähler. Die Ausgangssignale der Null-Detektoren werden einem ODER-Glied 49 zugeführt, das ein Ausgangssignal des Wertes Eins abgibt, wenn die geprüfte Zähleranordnungauf Null steht.
Nach einem weiteren, kurzen Zeitintervall, das durch ein Verzögerungselement 48 eingeführt wird, um den Signallaufzeiten in den Tor- oder Verknüpfungsschaltungen Rechnung zu tragen, werden die UND-Glieder 410 und 411 durch das den zweiten bestimmten Befehl DCC ansprechbereit gemacht. Wenn die geprüfte Zähleranordnung auf Null steht, wird das UND-Glied 410 aufgetastet und der Stapelspeicher wird abgefragt (POP). Der Abrufzyklus bewirkt dann einen Abruf des nächsten Befehls der Folge, der durch den Inhalt des Befehlszählers 10 (Fig. 1) bezeichnet wird. Wenn der Inhalt der geprüften Zähleranordnung nicht Null ist, wird das Ausgangssignal des Werts Null vom ODER-Glied 49 durch einen Inverter 44 invertiert und tastet das UND-Glied 411 auf. Das Ausgangssignal des UND-Gliedes 411 ist das Steuersignal GX das wie Fig. 1 zeigt, das Stapeispeicherwort A in den Befehlszähler 10 schleust Dies bewirkt, daß das Programm zum Anfangspunkt der laufenden Schleife zurückkehrt. Wenn in der beschriebenen ersten Schleife eine zweite Schleife verschachtelt ist, wird der Befehl LNC bei der eben beschriebenen Schaltungsanordnung offensichtlich die Anzahl der Wiederholungen der verschachtelten Schleife in der Zähleranordnung C2 mit dem Steuersignal G 7 einstellen. Der nächste Befehl DCC wird die Zähleranordnung C2 zurückschallen und prüfen, wobei jedesmal υοζ
die Befühle der verschachtelten Schleife durchgeführt werden, bis der Zählerstand Null ist, worauf dann der Befehl PC)P den Zähler 41 zurückschaltet, so daß er die /ähleranordniing CI bezeichnet.
ι Die obige lirliiuiming erfolgte im Zusammenhang mit dem speziellen /X1C-Befehl »Beiehl dekrcincntieren und Zähler prüfen«, in der l'nixis wird dieser Befehl DCC jedoch nicht wirklich benötigt. Für die Angabe der Dekrement- und Zählerprüffunktion kann nämlich ein
I» spezieller Bereich oder ein spezielles Bit in jedem Befehlswort verwendet werden. So kann z. B. in jedem Befehlswort ein besonderes Bit vorgesehen sein, das, wenn es einen bestimmten Wert hat, den DCC-Befehl erzeugt, nachdem der Befehl ausgeführt worden ist, so daß bei der Beendigung des Befehls eine Dekrementierung, Prüfung und anschließende Übertragung ohne die Verwendung eines weiteren Befehles durchgeführt werden können.
F i g. 5 zeigt als Beispiel für verschachtelte Schleifen,
2n wie eine spezielle Mairixmultiplikation unter Steuerung durch ein entsprechendes Programm durchgeführt werden kann. Wenn die Anzahl der Zeilen in einer ersten Matrix A gleich L ist und die Anzahl der Spalten in einer zweiten Matrix B gleich M ist, so hat die Ausgangs- oder Ergebnismatrix eine Dimension mit L Zeilen mal M Spalten. Die Konstante N bedeutet Anzahl der Spalten der Matrix A und die Anzahl der Zeilen der Matrix ß, da diese bei einer MatrixmuUiplikation gleich sein müssen. Die Elemente der Ergebnismatrix Csind dann durch den folgenden Ausdruck gegeben:
Σβ'
Jr- 1
Ί, 2...,L und = 1, 2 ,A/.
Bei dem Vcrfahrensablaufdiagramm gemäß Fig.5 für den Multiplikationsalgorithmus wird /anfänglich auf den Wert Eins eingestellt. Als nächstes wird der Wert von / auf Eins eingestellt. Dann wird der anfängliche Wert des Resullaielements auf Null eingestellt und K wird auf den Wert Eins eingestellt. Anschließend wird das Resultatelement c„ inkrementiert, indem zu ihm das Produkt der Elemente ;i,t und bi, addiert wird, dann wird K geprüft um festzustellen, ob es gleich /V ist oder nicht. Beim negativen Ausfall der Prüfung wird K um Eins vergrößert und die Inkrcmentierung des Resultatelemcnts wird wiederholt, dies jedoch wegen der Änderung von K mit anderen Elementen a,* und b. Wenn de;r Wert von K den Wert N erreicht, wird der Wert / geprüft, um festzustellen, ob er gleich L ist oder nicht. Wenn die Prüfung negativ ausfällt, wird / um Eins vergrößert, das neue Resultatelemenl q, wird auf Null eingestellt und der Wert von K wieder auf Eins eingestellt. Mit dem neuen Wert von / wird dann das Resultatelement für jeden Wert von K in der verschachtelten Schleife erhöht. Wenn /seinen Maximalwert L erreicht, wird J auf seinen Maximalwert M geprüft. Wenn / nicht gleich M ist, wird es um Eins vergrößert, / wird dann wieder auf Eins eingestellt und die beiden inneren ver-
bo schachtelten Schleifen für jeden Wert von J wiederholt. Wenn j den Wert M erreicht, ist die Matrixmultiplikation beendet. Da K die Werte 1 bis N für jeden Wert von / annimmt, stellen die inneren beiden Schleifen insgesamt L ■ N Wiederholungen dar, die für jeden Wert von
b5 I von Eins bis M einmal ausgeführt werden. Bei dem Programm gemäß F i g. 5 ist also die Anzahl der Schleifenwiederholungen gleich dem Produkt M-N-L F i g. 6 zeigt, wie sich dieser Algorithmus durch die
Funktion der in Fig. 1 beispielsweise dargestcstcllten Schaltungsmaßnahmen ändert. Der erste Befehl, d. h. der Befehl LNC, bewirk! die Speicherung des Wertes M und der zweite Befehl LA/Cstcllt den Wert von L ein. In diesem Falle bewirkt der erste Befehl LNCdie Speicherung des Wertes von M in der Zählanordnung Cl, was durch den Adressenteil des Befehls angegeben wird. Dies bewirkt, d?Q die Adresse des nächsten Befehls im Befehlszähler 10 in das Stapelregistcr 15 als Stapclspcicherwort A eingespeichert wird. Der nächste Befehl, in ebenfalls ein LA/C-Befehl, bewirkt das Speichern des Wertes L im zweiten Zähler C2 und bewirkt das Einspeichern des Inhaltes des Befehlszählers 10 in das Stapelregister 15. Die durch den zweiten LNC-Bcfehl in das Stapelregister 15 eingeschobene Befehlsadresse bc- r> zeichnet den Platz eines Befehls, welcher den Wert eines Cy speichernden Register- oder Speicherplatzes auf Null stellt. Der nächste Befehl stellt die dritte Zahleranordnung C3 auf den Wert N ein und bewirkt, dall die Adresse des nächsten Befehls vom Befehlszähler iö in zo das Stapelregister 15 geschoben wird. Dieser nächste Befehl bewirkt die Multiplikation a,t, ■ £>*,. Der nächste Befehl addiert das resultierende Produkt zum gegenwärtigen Wert ei), der durch die Summe ersetzt wird. Der Additionsbefehl hat beispielsweise in der letzten Stelle ein Bit eines Wertes, das die erwähnte DCC-Funktion veranlaßt, so daß K durch den Wert K - I ersetzt wird und eine Prüfung erfolgt, ob AC gleich Null ist. Wenn K nicht gleich Null ist, wird das Stapclspcicherwort A, das den Multiplikationsbefehl (a,n i>t,)cnihält, vom Speicherregister SWA in den Befehlszähler 10 übertragen. Die Multiplikation- und Additionsbcfehlc laufen also weiter, bis die dritte Zählanordnung C3 auf Null zurückgeschaltet ist. Wenn K gleich Null ist. werden die Inhalte des Stapclregisters nach oben gc- r> schoben (POP) und beim nächsten Befehl wird der Wert / geprüft. Da der Wert / in der zweiten Zähleranordnung C2 ais nächstes zu prüfen ist, kann ein Befehl NOOP verwendet werden mit einem letzten Bit, das so eingestellt ist, daß die laufende Zählanordnung nun die zweite Zähleranordnung C2 geprüft wird. Der Befehl NOOP'isl ein Befehl, der keine Operation veranlaßt, er wird lediglich übernommen. Da die Information im Stapelregister nach oben geschoben worden war, ist der nächste Befehl, der vom Speicher-Register SWA in den v> Befehlszähler 10 (F i g. 1) durchgeschleust wird, derjenige Befehl, der das Resuliatelcmcnt o, auf Null einstellt. Auf diesen Befehl folgt der Befehl LNC, um die dritte Zähleranordnung C3 auf den Wert N einzustellen. Dies bewirkt.wieder eine Speicherung im .Stapelregistcr 15 vt und die innere Schleife wird in der oben beschriebenen Weise durchlaufen, bis der Wert von / gleich Null geworden ist. Ein weiterer Befehl NOOP, dessen letztes Bit einem DCC-Befehl entspricht, bewirkt die Prüfung der ersten Zähleranordnung Cl auf den Wert Null. Wenn die Zähleranordnung nicht auf Null steht, wird der Inhalt des Speicher-Registers SWA des Stapelregisters, also der Befehl, der die zweite Zähleranordnung Cl auf den Wert von L einstellt, in den Befehlszähler übertragen. Es erfolgt eine Speicherung im Stapelregi- bo ster (PUSH) und die inneren beiden Schleifen werden wiederholt. Wenn der Wert von / den Wert Null erreicht, wird das Stapelregister gelesen (POP) und das Programm geht weiter.
Den Befehlen kann jeweils ein weiteres Bit angefügt μ werden, um zusätzliche Zähleranordnungen zu bezeichnen, die zu prüfen sind, nachdem die laufende Zählcranordnung auf den Wert Null geschaltet worden ist. Für vier Stapclspcichcrwörtcr und vier Zähleranordnungen können vier Bits angefügt werden, um anzugeben, daß wenn die laufende Zähleranordnung auf Null stchl. das Stiipclrcgislcr zu lesen ist (POP) und daß die nächste Zählcriinordnung zu clekrcmcnlicren sowie zu testen ist. usw. Die Nützlichkeit dieser Maßnahme ergibt sich aus dem Beispiel des Algorithmus, der durch das Ablaufdiagramm in !■' i g. 6 dargestellt ist.
Hierzu 3 Blatt Zeichnungen

Claims (1)

  1. Patentanspruch:
    Einrichtung zur wiederholten Durchführung von Programmschleifen mit einem Befehlszähler zum Speichern der Speicheradresse eines Befehls, wobei der Befehlszählerinhah zur Festlegung der Adresse des folgenden Befehls erhöht werden kann,
    mit einem Befehlsregister, das einen aus einem Operationsteil und einem Adressenteil bestehenden Befehl aufnimmt,
    mit einer eine Taktanordnung enthaltenen Steuereinrichtung zur Erzeugung von Steuersignalen in Auswertung des Inhalts des Befehlsregisters, und mit einem Stapelspeicher, der eine Mehrzahl von Speicherregistern aufweist, in diein Ausführung von ersten, jeweils am Beginn einer Programmschleife stehenden, bestimmten Befehlen die Speicheradressen der gerade in Ausführung befindlichen Befehle aus dem Befehlszähler sequentiell einspeicherbar sind, wobei dem Stapelspeicher eine durch einen zweiten am Ende einer Programmschleife stehenden bestimmten Befehl gesteuerte erste Gatterschaltung zugeordnet ist, die die zuletzt gespeicherte Speicheradresse zum Befehlszähler liefern kann, und mit einer Zählanordnung, in der die Anzahl der Durchläufe der Programmschleifen abgelegt ist, wobei dieser Wert bei jedem Durchlauf der Programmschleife dekrementiert wird, jo
DE2753062A 1976-12-13 1977-11-28 Einrichtung zur wiederholten Durchführung von Programmschleifen Expired DE2753062C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/749,971 US4097920A (en) 1976-12-13 1976-12-13 Hardware control for repeating program loops in electronic computers

Publications (2)

Publication Number Publication Date
DE2753062A1 DE2753062A1 (de) 1978-06-15
DE2753062C2 true DE2753062C2 (de) 1984-10-18

Family

ID=25015990

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2753062A Expired DE2753062C2 (de) 1976-12-13 1977-11-28 Einrichtung zur wiederholten Durchführung von Programmschleifen

Country Status (6)

Country Link
US (1) US4097920A (de)
JP (1) JPS5374331A (de)
DE (1) DE2753062C2 (de)
FR (1) FR2373829A1 (de)
GB (1) GB1560147A (de)
IT (1) IT1088638B (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54149439A (en) * 1978-05-16 1979-11-22 Nippon Telegr & Teleph Corp <Ntt> Sequence control circuit
JPS54149438A (en) * 1978-05-16 1979-11-22 Nippon Telegr & Teleph Corp <Ntt> Sequence control circuit
US4309753A (en) * 1979-01-03 1982-01-05 Honeywell Information System Inc. Apparatus and method for next address generation in a data processing system
US4296470A (en) * 1979-06-21 1981-10-20 International Business Machines Corp. Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system
US4279016A (en) * 1979-06-21 1981-07-14 International Business Machines Corporation Instruction pre-fetch microprocessor interrupt system
US4379328A (en) * 1979-06-27 1983-04-05 Burroughs Corporation Linear sequencing microprocessor facilitating
US4292667A (en) * 1979-06-27 1981-09-29 Burroughs Corporation Microprocessor system facilitating repetition of instructions
US4481608A (en) * 1979-12-26 1984-11-06 Varian Associates, Inc. Reentrant asynchronous FIFO
US4375676A (en) * 1979-12-26 1983-03-01 Varian Associates, Inc. Feedback FIFO for cyclic data acquisition and instrument control
US4462074A (en) * 1981-11-19 1984-07-24 Codex Corporation Do loop circuit
US4463422A (en) * 1982-07-12 1984-07-31 Csp, Inc. Method of processing an iterative program loop
EP0100804A1 (de) * 1982-08-12 1984-02-22 Universite De Bordeaux I Verfahren zum Zusammenbringen von logischen Referenzeinheiten und logischen Einheiten einer Datei
JPS59128670A (ja) * 1983-01-12 1984-07-24 Hitachi Ltd ベクトル処理装置
JPS607536A (ja) * 1983-06-24 1985-01-16 Mitsubishi Electric Corp 情報処理装置
JPS60132242A (ja) * 1983-12-20 1985-07-15 Matsushita Electric Ind Co Ltd プログラム制御装置
FR2557712B1 (fr) * 1983-12-30 1988-12-09 Trt Telecom Radio Electr Processeur pour traiter des donnees en fonction d'instructions provenant d'une memoire-programme
US4727483A (en) * 1984-08-15 1988-02-23 Tektronix, Inc. Loop control system for digital processing apparatus
US4783736A (en) * 1985-07-22 1988-11-08 Alliant Computer Systems Corporation Digital computer with multisection cache
US4794521A (en) * 1985-07-22 1988-12-27 Alliant Computer Systems Corporation Digital computer with cache capable of concurrently handling multiple accesses from parallel processors
JPS6341932A (ja) * 1985-08-22 1988-02-23 Nec Corp 分岐命令処理装置
US4652997A (en) * 1985-11-27 1987-03-24 Motorola, Inc. Method and apparatus for minimizing overhead when executing nested do loops
JPS62180427A (ja) * 1986-02-03 1987-08-07 Nec Corp プログラム制御回路
GB2187577B (en) * 1986-03-07 1989-11-15 Stc Plc Digital computer systems
EP0374419A3 (de) * 1988-12-21 1991-04-10 International Business Machines Corporation Verfahren und Anordnung zur wirkungsvollen Errichtung von Schleifen in Hardware und Mikrokodierung
JP3102027B2 (ja) * 1990-11-20 2000-10-23 日本電気株式会社 ループ制御のネスティング管理機構
FR2693572B1 (fr) * 1992-07-13 1994-09-30 Texas Instruments France Système de traitement de données comportant un dispositif amélioré de traitement des boucles de programme.
WO1994002894A2 (en) * 1992-07-13 1994-02-03 Texas Instruments France Data-processing system with a device for handling program loops
JPH07200292A (ja) * 1993-12-28 1995-08-04 Mitsubishi Electric Corp パイプライン式プロセッサ
US5664167A (en) * 1995-03-27 1997-09-02 Delco Electronics Corporation Microprogrammed timer processor having a variable loop resolution architecture
US5727194A (en) * 1995-06-07 1998-03-10 Hitachi America, Ltd. Repeat-bit based, compact system and method for implementing zero-overhead loops
US5828875A (en) * 1997-05-29 1998-10-27 Telefonaktiebolaget Lm Ericsson Unroll of instructions in a micro-controller
EP1039375A1 (de) * 1999-03-19 2000-09-27 Motorola, Inc. Verfahren und Vorrichtung zur Durchführung von Schleifen mit kleinem Verwaltungsaufwand
US6766445B2 (en) * 2001-03-23 2004-07-20 Hewlett-Packard Development Company, L.P. Storage system for use in custom loop accelerators and the like
US7991984B2 (en) * 2005-02-17 2011-08-02 Samsung Electronics Co., Ltd. System and method for executing loops in a processor

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3297999A (en) * 1963-08-26 1967-01-10 Burroughs Corp Multi-programming computer
US3328763A (en) * 1963-10-01 1967-06-27 Monroe International Inc Electronic desk-type computer
US3348211A (en) * 1964-12-10 1967-10-17 Bell Telephone Labor Inc Return address system for a data processor
US3366929A (en) * 1964-12-30 1968-01-30 Ibm Computing system embodying flexible subroutine capabilities
US3546677A (en) * 1967-10-02 1970-12-08 Burroughs Corp Data processing system having tree structured stack implementation
US3593306A (en) * 1969-07-25 1971-07-13 Bell Telephone Labor Inc Apparatus for reducing memory fetches in program loops
US3593313A (en) * 1969-12-15 1971-07-13 Computer Design Corp Calculator apparatus
US3736567A (en) * 1971-09-08 1973-05-29 Bunker Ramo Program sequence control
US3868644A (en) * 1973-06-26 1975-02-25 Ibm Stack mechanism for a data processor
JPS535140B2 (de) * 1973-07-11 1978-02-24
JPS5069946A (de) * 1973-10-24 1975-06-11
JPS518829A (de) * 1974-07-09 1976-01-24 Hitachi Ltd
US3988717A (en) * 1975-08-06 1976-10-26 Litton Systems, Inc. General purpose computer or logic chip and system

Also Published As

Publication number Publication date
FR2373829A1 (fr) 1978-07-07
JPS5374331A (en) 1978-07-01
GB1560147A (en) 1980-01-30
FR2373829B1 (de) 1982-02-05
JPS618451B2 (de) 1986-03-14
DE2753062A1 (de) 1978-06-15
US4097920A (en) 1978-06-27
IT1088638B (it) 1985-06-10

Similar Documents

Publication Publication Date Title
DE2753062C2 (de) Einrichtung zur wiederholten Durchführung von Programmschleifen
DE3424962C2 (de)
DE2724125C2 (de)
DE3210816C2 (de)
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE2714805A1 (de) Datenverarbeitungssystem
DE1146290B (de) Elektronisches Datenverarbeitungssystem
DE3732808A1 (de) Verfahren und vorrichtung zum erzeugen und bearbeiten von unterbrechungspunkten in einem monitorprogramm
DE2910839A1 (de) Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion
DE2712224A1 (de) Datenverarbeitungsanlage
DE1275800B (de) Steuerwerk fuer datenverarbeitende Maschinen
DE1285219B (de) Steuerwerk zur Ausfuehrung von Unterprogrammen
DE3507584C2 (de)
DE3043653A1 (de) Datenverarbeitungsanlage
EP0134831A1 (de) Einrichtung im Befehlswerk eines Fliessbandprozessors zur Befehlsunterbrechung und -wiederholung
WO1995010803A1 (de) Prozessor für zeichenketten variabler länge
DE2617485C3 (de) Schaltungsanordnung für Datenverarbeitungsanlagen zur Abarbeitung von Mikrobefehlsfolgen
DE1524114C3 (de) Adreßrecheneinrichtung für eine Datenverarbeitungsanlage
DE2245284A1 (de) Datenverarbeitungsanlage
DE2658950A1 (de) Mikroprogrammierte verarbeitungseinheit sowie verfahren zur organisation derselben
DE1774421B1 (de) Mehrprogramm datenverarbeitungsanlage
DE2759120A1 (de) Prozessor fuer datenverarbeitungssysteme
DE3535215C2 (de)
DE1499286B2 (de) Datenbearbeitungsanlage
DE3104256C2 (de)

Legal Events

Date Code Title Description
OAP Request for examination filed
OD Request for examination
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee