DE102006037907A1 - Verfahren und Anordnung zur Steuerung des Programmablaufs in einem Prozessor - Google Patents

Verfahren und Anordnung zur Steuerung des Programmablaufs in einem Prozessor Download PDF

Info

Publication number
DE102006037907A1
DE102006037907A1 DE102006037907A DE102006037907A DE102006037907A1 DE 102006037907 A1 DE102006037907 A1 DE 102006037907A1 DE 102006037907 A DE102006037907 A DE 102006037907A DE 102006037907 A DE102006037907 A DE 102006037907A DE 102006037907 A1 DE102006037907 A1 DE 102006037907A1
Authority
DE
Germany
Prior art keywords
program
sequence
processor
memory
program sequence
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.)
Ceased
Application number
DE102006037907A
Other languages
English (en)
Inventor
Hendrik Dipl.-Ing. Seidel
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.)
Technische Universitaet Dresden
Original Assignee
DRESDEN SILICON GmbH
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 DRESDEN SILICON GmbH filed Critical DRESDEN SILICON GmbH
Priority to DE102006037907A priority Critical patent/DE102006037907A1/de
Publication of DE102006037907A1 publication Critical patent/DE102006037907A1/de
Ceased 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching

Abstract

Der Erfindung, welche ein Verfahren und eine Anordnung zur Steuerung eines Programmablaufs in einem Prozessor betrifft, liegt die Aufgabe zugrunde, die eingangs genannten Nachteile des Stands der Technik zu überwinden. Gemäß der Erfindung wird die Aufgabe verfahrensseitig dadurch gelöst, dass eine vorher bestimmte Zeiteinteilung der Programm- und/oder Funktionsaufrufe auf dem Prozessor und eine vorher bestimmte Zeiteinteilung der Abfolge der Funktionen jeder einzelnen Ressource im Prozessor in einer Programmablauffolge in einem Programmablauffolgespeicher gespeichert wird und dass durch die Programmablauffolge die Programmabarbeitung im Prozessor zeitlich gesteuert wird.

Description

  • Die Erfindung betrifft ein Verfahren zur Steuerung eines Programmablaufs in einem Prozessor, wobei der Prozessor durch ein Programm derart gesteuert wird, dass mittels einer Programmsteuereinheit (PCU) eine Programmstartadresse in einem Programmspeicher aufgerufen und die der Programmstartadresse in Programmspeicher folgenden Befehle in dem Prozessor ausgeführt werden.
  • Die Erfindung betrifft auch eine Anordnung zur Steuerung eines Programmablaufs in einem Prozessor, bestehend aus mehreren Streifen, wobei ein Streifen mindestens eine Verarbeitungseinheit mit Eingabe- und Ausgaberegistern enthält, wobei die Streifen über ein Datenbussystem mit einem dem jeweiligen Streifen zugeordneten Speicherabschnitt eines Datenspeichers und über einen Befehlsbus mit einer Programmablaufsteuerung verbunden sind.
  • Prozessoren zur Ausführung von Signalverarbeitungsalgorithmen haben heutzutage einen Programmspeicher und mehrere Datenspeicher (TigerShark Analog Devices, Texas Instruments DSP). Der Kern der Prozessoren besitzt eine Programmsteuerungseinheit, die aus dem Programmspeicher kontinuierlich neue Instruktionen lädt. Die Instruktionen steuern dann die Datenpfade innerhalb des Prozessorkerns.
  • Um ein System, welches auf einem solchen Prozessor implementiert wurde, zu synchronisieren, werden Timer eingesetzt die in regelmaessigen Abstand einen Interrupt auslösen. Dieser Interrupt führt dazu, dass eine bestimmte Funktion des implementierten Programms aufgerufen wird. Diese als Interruptroutine bezeichnete Funktion kann dann bestimmte Flags innerhalb des Speichers setzen bzw. überprüfen. Das Hauptprogramm ist ebenfalls in der Lage, diese Flags zu überprüfen und das Programm in einem Wartezustand zu belassen oder nicht.
  • Bei einem System, welches aus mehreren Prozessoren zusammengesetzt wurde (zum Beispiel der Sandblaster Sandbridge) müssen mehrere Prozessoren, bzw. deren Programme untereinander synchronisiert werden. Die Synchronisationsmechanismen basieren meistens darauf, dass ein gemeinsamer Speicher von mehreren Prozessen geschrieben und gelesen wird. Die Speicherstellen werden als Semaphores bezeichnet. Damit alle Datenabhängigkeiten eingehalten werden, werden die Prozesse über die Semaphores synchronisiert.
  • Ein weiteres Bespiel ist die Nutzung eines gemeinsamen Speichermediums durch mehrere aktive Einheiten (Prozessoren etc.). Dabei kommt es oft dazu, dass die Einheiten gleichzeitig versuchen den gemeinsamen Speicher zu lesen oder zuschreiben. Bussysteme, wie z.B: der AMBA Bus von ARM setzen so genannte „Arbiter" ein, die nach einem Prioritätsprinzip oder Round-Robin Mechanismus den verschiedenen Einheiten den Zugriff auf die Ressource gewähren.
  • Die Entwicklung von harten Echtzeitsystemen für die Signalverarbeitung setzt eine deterministische Ausführungszeit der verschiedenen implementierten Aufgaben voraus. Eine Worst-Case Analyse kann daher Aufschluss über maximale Ausführungszeiten der einzelnen Prozesse geben. Auch die benötigte Speichermenge einzelner Prozesse kann im Voraus bestimmt werden. Unter anderem haben alle diese beschriebenen Methoden zum Aufbau von Multiprozessorsystemen die nachfolgend beschriebenen Nachteile.
  • Das kontinuierliche Überprüfen einer benötigten Speicherstelle führt zu unnötigen Datentransfers, was dazu führt, dass die Bandbreite des Kommunikationsnetzwerkes steigt, was zur Erhöhung der Chipfläche und des Energieverbrauchs führt.
  • Ein Arbiter im Kommunikationsnetzwerk führt durch die generell schwer vorhersagbare Speicherzugriffsdauer zu einer möglichen Verletzung der Echtzeitanforderungen. Die notwendige Auslegung mit einem hohen Sicherheitsfaktor führt auch zur Erhöhung der Chipfläche und des Energieverbrauchs.
  • Der generell neue Ansatz zur Lösung dieses Problems ist eine feste vorher bestimmte und optimierte Zeiteinteilung der Programm- bzw. der Funktionsaufrufe auf dem Prozessor sowie eine bestimmte und optimierte Zeiteinteilung der Datentransfers. Dies wird nicht durch den beschriebenen Timer-Interrupt durchgeführt, was zwar für einen einzelnen Prozessor eine gute und billige Möglichkeit zur zeitlichen Synchronisation darstellt, aber durch die Einschränkung auf einen einzelnen Prozessorkern nicht für Multiprozessorsysteme generell geeignet ist, sondern durch eine Erweiterung der bestehenden Architektur.
  • In 1 ist das gängige Verfahren dargstellt bei dem immer wieder der CPU die Fertigstellung eines Datentransfers signalisiert wird. Dabei kommt es zu sehr vielen Interaktionen mit der CPU.
  • Bei dem neuen Verfahren, welches in der 2 dargestellt ist, wird die komplette oder ein Teil der zeitlichen Abfolge der Aufgaben jeder einzelnen Resource (im Beispiel DSP und DMA) vorher bestimmt. Diese zeitliche Abfolge wird in einer einzigen Interaktion in den Speicher der Batch Control Unit (BCU) geschrieben. Die BCU übernimmt dann die Ablaufkoordination der Aufgaben auf dem DMA Controller bzw. der Signalverarbeitungseinheit.
  • In der 3 ist eine Ausführungsform der erfindungsgemäßen Anordnung dargestellt.
  • Eine Einheit (3/BCU) die über die Verbindung (5) mit einer Steuerungseinheit (6) eines Rechenwerkes oder Datentransferau tomaten (2 CPU/DMA) verbunden ist und einen lokalen Zeitgeber (4) besitzt. Der Wert des Zeitgebers (4) wird mit einem Teilsegments des Datenausgangs des Speichers (1) verglichen. Wenn beide Werte übereinstimmen wird eine Aufgabe über die Datenleitung (5) an das Steuerwerk (6) gesendet.
  • In den folgenden Ausführungsbeispielen wird diese Anordnung genutzt.
  • Das in 4 dargestellte System hat zwei Erweiterungen zum Stand der Technik. Die erste Erweiterung ist die BCU (Batch Control Unit) (DSP). Die BCU(DSP) ist direkt verbunden mit der Programmsteuerungseinheit (PCU) des DSPs. Ähnlich wie die PCU Instruktionen aus dem Instruktionsspeicher (IMEM) aufruft, ruft die BCU so genannte Batchprozesse aus dem Batch Speicher (BMEM) ab. Ein Batchprozess setzt den Programm Counter des DSPs auf eine bestimmte Position und startet dann den Prozessor. Ein Counter, welcher durch das CRST Signal zurückgesetzt werden kann, schafft eine vordefinierte Zeitbasis für alle BCUs. Der Start der Programme erfolgt daher erst dann, wenn die Startzeit des Batch-Prozesseintrags im BMEM mit der Systemzeit übereinstimmt.
  • Die zweite Erweiterung besteht aus einer weiteren mit dem DMA-Controller verbundenen zweiten BCU (BCU (DMA)), welche ebenfalls mit einem weiterem Batch Speicher (BMEM) verbunden ist. Auf der Grundlage vorhersagbarer Ausführungszeiten für die Tasks in den anwendungsspezifischen Prozessoren kann der herkömmliche automatische Cachemechanismus durch DMA-Controller ersetzt werden, die ein zeitlich exakt abgestimmtes Prefetching des benötigten Speicherplatzes ermöglichen. Insbesondere kann der erforderliche Speicherplatz im Verlauf der Ausführung ermittelt und in einem Batch-Prozess an den DMA-Controller gesandt werden, und zwar unter der Annahme, dass die Speicherplatzgröße gleich bleibt. Dieses Feature ist beispielsweise für eine effiziente Ausführung von Wörterbuch-basierten Kompressionsalgorithmen erforderlich.
  • Da die DSPs innerhalb der MPUs die Parallelität von Befehls- und Datenebenen durch den Einsatz von SIMD (Single Instruction Multiple Data) und VLIW (Very Long Instruction Word)-Techniken umsetzen, ist der Datenabgleich von großer Bedeutung. Neben den Standard-Interleavetechniken, die von lokalen Verbindungsnetzen ausgeführt werden, erfolgt dieser Abgleich ebenfalls durch die DMA-Controller. Da diese Daten permanent zwischen dem externen dynamischen Speicher und den internen temporären Speichern transferiert werden, können unterschiedliche Interleaving- und Übertragungstechniken mit geringen Kosten umgesetzt werden, indem sie sequenziell erfolgen. Für einen 32bit DMA-Controller haben integrierte Interleaving-Techniken eine Bereichserweiterung von 10 % (etwa 400 Gates) zur Folge, ohne Erhöhung der Transferzeiten. Für die meisten gängigen Techniken ist eine einfache Verweistabelle für die Adressumwandlung ausreichend. Die in SAMIRA DSP integrierte Verbindungseinheit nutzt etwa 12,000 Gates (Äquivalent zu NAND-Gate, der Bereich ist auf den Bereich eines einzelnen NAND-Gates standardisiert).
  • Somit können durch die erfindungsgemäße BCU, welche von dem jeweils zugehörigen Batch Speicher (BMEM) gespeist wird, zum einen verschiedene Tasks im DSP oder zum anderen Datentransfers durch den Versand von Befehlen an den DMA-Controller gestartet werden.
  • Ein Bespiel für eine BCU für einen digitalen Signalprozessor ist in 5 dargestellt. CRST ist mit dem Counter Register verbunden, um ein zeitgleiches Rücksetzen aller BCU Counter Register zu ermöglichen. Der Inkrementor (INC) erhöht in jedem Takt den Wert im Counter Register. Die COMP Einheit vergleicht dann den Zeitwert des Counter Registers mit den Zeiteinträgen oder Zeitstempeln im BCU-Speicher. Bei einer Übereinstimmung des Zeitwerts im Counter Registers mit einem Zeiteintrag im BCU-Speicher wird ein zu diesem Zeiteintrag gespeicherter Batchprozesse gestartet; das heißt, der Programm Counter des DSPs wird auf die zum Zeiteintrag abgespeicherte Adresse gesetzt und der Programmablauf an dieser Adresse fortgesetzt. Neben der zu einem Zeiteintrag gespeicherten Programmablaufadresse können noch Parameter abgespeichert werden, welche sodann in dem entsprechenden Batchprozess genutzt werden.
  • In der in der 5 dargestellten im Batch Speicher (BMEM) gespeicherten Tabelle ist in der ersten Spalte die Startadresse des Batchprozesses abgespeichert, welcher selbst im zum DSP zugehörigen Instruktionsspeicher (IMEM) gespeichert ist.
  • In der zweiten Spalte können im Batchprozess nutzbare Parameter abgespeichert werden.
  • Die dritte Spalte enthält den Zeiteintrag, welcher den Startzeitpunkt des jeweiligen Batchprozesses darstellt.
  • Falls ein bestimmtes Signal vom Prozessor, welches die erfolgreiche Ausführung des Algorithmus signalisiert, nicht gesetzt wurde, wird ein Fehlerinterrupt (ERR) ausgelöst und an den zentralen Controlprozessor geschickt. Eine weitere Interruptleitung (INT) signalisiert dem zentralen Controlprozessor einen leeren Batch Speicher (BMEM).
  • Eine weitere mögliche Ausführung ist eine Batch Control Unit für einen DMA (Direct Memory Access) Controller, dargestellt in 6. Hier werden anstatt eines neuen Program-Counters die Start und Zieladressen für einen Speichertransfer definiert. Der Vorteil dieses vorherdefinierten Speichertransfers ist ein vorhersagbarer Datentransfer und somit der mögliche Verzicht auf einen Arbiter im Kommunikationsnetzwerks.
  • In der 6 ist die im BCU Speicher (BMEM) gespeicherte Tabelle dargestellt. Bei einer Übereinstimmung des Zeitwerts im Counter Registers mit einem Zeiteintrag in der ganz rechten Spalte der Batch Speicher (BMEM) gespeicherten Tabelle, werden von der BCU die erforderlichen Informationen zum Kopieren der Daten aus einem zweidimensionalen Speicher an den DMA Controller ausgegeben.
  • Dabei ist beispielsweise in den X- und Y-Daten (Spalte 1 und 2) ein Pointer für eine Bildposition gespeichert. Weitere Elemente des Befehls (Spalte 3 und 4) übermitteln die Feldgröße in X- und/oder Y-Richtung. Ein Feld für die Bildbreite wird übermittelt, um die absolute, eindimensionale Adresse aus einer zweidimensionalen Darstellung zu berechnen. In einer weiteren Spal te (Spalte 5) ist ein Kennzeichen für die Richtung des Speichertransfers gespeichert, welches festlegt, ob der Transfer vom oder in den lokalen Speicher erfolgen soll.
  • Die Zusammenfassung verschiedener Aufgaben in Batchprozesse verringert außerdem die Anzahl der Interrupts, die an einen zentralen Kontrollprozessor gesendet werden. Dadurch wird die CPU-Last verringert.
  • 1
    Speicher
    2
    Rechenwerk oder Datentransferautomat
    3
    BCU (Batch Control Unit)
    4
    lokaler Zeitgeber
    5
    Steuerleitungen
    6
    Steuereinheit

Claims (5)

  1. Verfahren zur Steuerung eines Programmablaufs in einem Prozessor, wobei der Prozessor durch ein Programm derart gesteuert wird, dass mittels einer Programmsteuereinheit (PCU) eine Programmstartadresse in einem Programmspeicher aufgerufen und die der Programmstartadresse in Programmspeicher folgenden Befehle in dem Prozessor ausgeführt werden, dadurch gekennzeichnet, dass eine vorher bestimmte Zeiteinteilung der Programm- und/oder Funktionsaufrufe auf dem Prozessor und eine vorher bestimmte Zeiteinteilung der Abfolge der Funktionen jeder einzelnen Ressouce im Prozessor in einer Programmablauffolge in einem Programmablauffolgespeicher gespeichert wird und dass durch die Programmablauffolge die Programmabarbeitung im Prozessor zeitlich gesteuert wird.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichet, dass die Speicherung der Programmablauffolge in einer einzigen Interaktion erfolgt.
  3. Verfahren nach Anspruch 1 oder 2 , dadurch gekennzeichet, das die Programmablauffolge mit Zeitmarken gespeichert wird.
  4. Verfahren nach einem der Anspruch 1 bis 3, dadurch gekennzeichnet, dass die zeitliche Steuerung des Programmablaufs durch einen Vergleich einer, von einem internen Zeitgeber erzeugten, Zeitgeberzeit mit den Zeitmarken der Programmablauffolge erfolgt und bei Übereinstimmung beider Zeiten eine zu dieser Zeitmarke gehörige Teilprogrammablauffolge abgearbeitet wird.
  5. Anordnung zur Steuerung eines Programmablaufs in einem Prozessor, bestehend aus mehreren Streifen, wobei ein Streifen mindestens eine Verarbeitungseinheit mit Eingabe- und Ausgaberegistern enthält, wobei die Streifen über ein Datenbussystem mit einem dem jeweiligen Streifen zugeordneten Speicherabschnitt eines Datenspeichers und über einen Befehlsbus mit einer Programmablaufsteuerung verbunden sind, dadurch gekennzeichnet, dass eine die Programmablaufsteuerung aus einem in einem Programmablauffolgespeicher gespeicherte Programmablauffolge zeitlich steuernde Batch Control Unit mit dem Programmablauffolgespeicher und der Programmablaufsteuerung verbunden ist.
DE102006037907A 2005-08-11 2006-08-11 Verfahren und Anordnung zur Steuerung des Programmablaufs in einem Prozessor Ceased DE102006037907A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102006037907A DE102006037907A1 (de) 2005-08-11 2006-08-11 Verfahren und Anordnung zur Steuerung des Programmablaufs in einem Prozessor

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102005038317 2005-08-11
DE102005038317.3 2005-08-11
DE102006037907A DE102006037907A1 (de) 2005-08-11 2006-08-11 Verfahren und Anordnung zur Steuerung des Programmablaufs in einem Prozessor

Publications (1)

Publication Number Publication Date
DE102006037907A1 true DE102006037907A1 (de) 2007-05-31

Family

ID=38037894

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006037907A Ceased DE102006037907A1 (de) 2005-08-11 2006-08-11 Verfahren und Anordnung zur Steuerung des Programmablaufs in einem Prozessor

Country Status (1)

Country Link
DE (1) DE102006037907A1 (de)

Similar Documents

Publication Publication Date Title
DE10297856B4 (de) Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt
DE112011105298B4 (de) Reduzieren des Energieverbrauchs von Uncore-Schaltkreisen eines Prozessors
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
EP2575002B1 (de) Verfahren und Virtualisierungssoftware für die Bereitstellung von unabhängigen Zeitquellen für virtuelle Laufzeitumgebungen
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
EP2466466B1 (de) Verfahren zur Fehlererkennung bei der Ausführung eines Echtzeit-Betriebssystems
EP2962205B1 (de) Mehrkern-prozessorsystem mit fehleranalysefunktion
EP1537482B1 (de) Verfahren und schaltungsanordnung zur synchronisation synchron oder asynchron getakteter verarbeitungseinheiten
EP1398701A1 (de) Verfahren zur Ereignissynchronisation, insbesondere für Prozessoren fehlertoleranter Systeme
DE102020214951A1 (de) Verfahren zum dynamischen Zuweisen von Speicherbandbreite
DE102006037907A1 (de) Verfahren und Anordnung zur Steuerung des Programmablaufs in einem Prozessor
DE102010003512A1 (de) Geteilte zentrale Verarbeitung von Daten
EP1308846B1 (de) Datenübertragungseinrichtung
WO2004034172A2 (de) Verfahren zur ereignissynchronisation, damit synchronisierte prozessoren und fehlertoleranter systeme mit derartigen prozessoren
DE102020133748A1 (de) Fahrzeugsteuergerät mit synchronem treiber
DE102007026982B4 (de) Prozessor, programmgesteuerte Einheit und Verfahren zur Regelung eines Prozessortaktes
DE102022003661B3 (de) Rechenvorrichtung, Verfahren zur Lastverteilung für eine solche Rechenvorrichtung und Computersystem
DE3603240A1 (de) Schaltungsanordnung zur bereinigung von operandenkonflikten in nach dem fliessbandprinzip arbeitenden datenverarbeitungsanlagen
EP1594063B1 (de) Verfahren zum Überprüfen von Steuerungsprogrammen
DE19910451C2 (de) Multiprozessor
DE102014111305A1 (de) Prozessor-Modell, das ein einziges großes, lineares Register verwendet, mit FIFO-basierten I/O-Ports unterstützenden neuen Interface-Signalen und unterbrechungsgesteuerten Bus-Transfers, die DMA, Brücken und einen externen I/O-Bus eliminieren
EP2662773B1 (de) Redundantes Mehrprozessorsystem und zugehöriges Verfahren
EP0477597A2 (de) Verfahren zu parallelen Verarbeitung von Befehlen eines Programms und Prozessor zur Durchführung des Verfahrens
DE112020001287T5 (de) Elektronische rechenvorrichtung
DE102007060783A1 (de) Asynchroner Steuerungstransfer

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: TECHNISCHE UNIVERSITAET DRESDEN, 01069 DRESDEN, DE

8131 Rejection