AT500858A4 - Instruction cache für echtzeitsysteme - Google Patents

Instruction cache für echtzeitsysteme Download PDF

Info

Publication number
AT500858A4
AT500858A4 AT0138304A AT13832004A AT500858A4 AT 500858 A4 AT500858 A4 AT 500858A4 AT 0138304 A AT0138304 A AT 0138304A AT 13832004 A AT13832004 A AT 13832004A AT 500858 A4 AT500858 A4 AT 500858A4
Authority
AT
Austria
Prior art keywords
cache
function
instruction cache
functions
real
Prior art date
Application number
AT0138304A
Other languages
English (en)
Other versions
AT500858B8 (de
AT500858B1 (de
Inventor
Martin Schoeberl
Original Assignee
Martin Schoeberl
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 Martin Schoeberl filed Critical Martin Schoeberl
Priority to AT0138304A priority Critical patent/AT500858B8/de
Priority to AT0932505A priority patent/AT505203A5/de
Priority to PCT/AT2005/000326 priority patent/WO2006017874A2/de
Application granted granted Critical
Publication of AT500858A4 publication Critical patent/AT500858A4/de
Publication of AT500858B1 publication Critical patent/AT500858B1/de
Publication of AT500858B8 publication Critical patent/AT500858B8/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

/1 • · · · • · · • ♦ · • · · Μ ···· • ·· • ·· ·· · · • • · • · • • ·· • · ···· · · • · • · · ··· ···· • ··
Die Erfindung bezieht sich auf einen echtzeitfähigen Instruction Cache.
In Echtzeitsystemen ist die Korrektheit eines Programms nur gegeben, wenn neben der algorithmischen Korrektheit auch zeitliche Bedingungen eingehalten werden. Um diese zeitlichen Bedingungen einhalten zu können muss die maximale Ausführungszeit von Programmen bekannt sein. Diese Werte sind die Basis jeder ’schedulability‘ Analyse.
Die maximale Ausführungszeit von Programmen muss durch Analyse der Programme und der dazu notwendigen Modellierung des Systems erfolgen. Eine Messung der Ausführungszeit ist nicht möglich, da nicht sichergestellt werden kann, dass alle Kombinationen von Ausführungspfaden durchlaufen wurden.
Cache Speicher sind ein wichtiger Bestandteil von Prozessoren um den Geschwindigkeitsunterschied zwischen Hauptspeicherund Prozessor auszugleichen. Die bekannten Cache Architekturen sind jedoch für die durchschnittliche Perfor-manz und nicht für vorhersagbare Performanz optimiert. Dies führt zu schwer vorhersagbaren bzw. sehr pessimistischen WCET Werten. In (Proc. of the IEEE, 91(7):1038-1054, Jul. 2003) werden Caches von realen Prozessoren analysiert. Architekturmerkmale führen dazu, dass nur 1/2 bzw. 1/4 des vorhandenen Cache Speicher modelliert werden können.
Ein Ansatz zur Lösung dieser Problematik besteht aus der Teilung des Instruction Caches in einen Block für allgemeine Programme und einen Block für echtzeit relevanten Code (z.B.: EP 0 529 217 Al oder US 5,913,224). Der Echtzeitcode wird vor der Ausführung in einen Cacheblock geladen und dieser Block gesperrt. Dieser Block enthält dann während der kompletten Laufzeit den echtzeit relevanten Programmteil. Diese Lösung ist jedoch sehr inflexibel und beschränkt die maximale Größe der Echtzeitprogramme auf die Cachegröße.
Der Erfindung liegt die Aufgabe zugrunde einen Instruction Cache zu gestalten, dessen Echtzeitverhalten genauer modelliert werden kann ohne die Programmgröße einzuschränken.
Die Aufgabe wird dadurch gelöst, dass komplette Funktionen im Instruction Cache gespeichert werden. Das Laden des Instruction Caches erfolgt nur, wenn notwendig, bei einem Funktionsaufruf bzw. bei einer Funktionsrückkehr.
Da sichergestellt ist, dass eine Funktion bei der Ausführung komplett im Instruction Cache geladen ist, fallen keine Cache bedingten Wartezeiten während der Ausführung der Funktion an. Der Cache muss daher nur bei Funktionsaufruf und Funktionsrückkehr in der WCET Analyse berücksichtigt werden. Die Entscheidung ob ein ’cach hit‘ oder ’cache miss‘ vorliegt ist nur vom Aufrufbaum der Funktionen bestimmt und nicht von den Adressen der einzelnen Instruktionen.
Funktionen werden nur relativ adressiert. D.h. es sind innerhalb der Funktion nur relative Sprünge möglich. Diese Bedingung ist z.B. in dem Zwischenkode der Sprache Java erfüllt. Daher eignet sich dieser Instruction Cache sehr gut für einen 1 • · ·· • ·· • ·· • t • · ·· · · • · • • • • • • • · ·· • · • • · ···· · • • • • • · • · • ·« ···· ♦ ·· ···· • ·· / echtzeitfähigen Java Prozessor. Java ist aber nur als Beispiel für die Anwendung dieses Instruction Caches zu verstehen. Auch andere Programmiersprachen, wie z.B.: C, lassen sich auf eine Weise Übersetzen, die nur relative Sprünge innerhalb von Funktionen enthält.
Durch die relative Adressierung ist es während der Funktionsausführung irrelevant an welcher Cacheposition die Funktion beginnt. Der Program Counter 102 muss nur beim Funktionsaufruf mit der Startadresse im Cache geladen werden.
Um mehr als nur eine Funktion im Instruction Cache halten zu können wird dieser in Blöcke eingeteilt. Eine Funktion kann sich über mehrere zusammenhängende Blöcke erstrecken. Wobei ein Zusammenhang auch vom letzen Block zum ersten Block besteht, da der Program Counter auf die Cacheadressierung begrenzt ist und es dadurch zu einem automatisch korrekten Über- bzw. Unterlauf kommt.
Durch die relative Adressierung können der Programm Counter 102 und die zughörigen Busse und Multiplexer einfacher, da kleiner, realisiert werden. Auch die Adressübersetzung für die Implementierung eines virtuellen Speichers ist nur mehr beim Laden einer Funktion notwendig.
Die Feststellung eines ’cach hit‘ ist nur beim Funktionsaufruf bzw. bei der Rückkehr notwendig und wird durch Lesen des Block RAM 105 gelöst. Das in konventionellen Caches notwendig ’tag RAM4, das bei jedem Cachezugriff gelesen werden und mit der Adresse verglichen werden muss, kann dadurch entfallen. Der Zugriff auf das ’tag RAM4 und der Adressenvergleich liegen normalerweise im kritischen Pfad der Hardware und bestimmen dadurch die minimale Zugriffszeit auf den Cache. Ohne Vergleich bei jedem Zugriff, wie in dieser Erfindung, kann die Zugriffszeit auf den Cache bei gleicher Technologie verringert werden.
Das Laden kompletter Funktionen, und damit größerer Blöcke als bei einem konventionellen Cache, wirkt sich auch positiv bei Verwendung von dynamischen Speichern für den Hauptspeicher 201 aus. Diese Speichertechnologie zeichnet sich dadurch aus, dass das erste Wort erst nach einer beträchtlichen Verzögerung verfügbar ist, jedoch die folgenden nach kürzerer Zeit. Diese Initialverzögerung wirkt sich bei größeren Blocken weniger aus, als bei kleinen Blöcken.
In Fig. 1 wird die Architektur eines Prozessors dargestellt, der den Erfindungsgegenstand enthält. Fig. 2 zeigt exemplarisch die Belegung der Cache Blöcke bei der Ausführung des Programmfragments in Fig. 3.
Der Instruction Cache 103 liegt zwischen dem Prozessorkem 101 und dem Bus Interface 104. Instruktionen werden über den Bus 112 vom Instruction Cache 103 geholt. Der Instruction Cache 103 wird über den Program Counter 102 adressiert. Da dieser nur den Cache adressiert muss dieser und die zugeörigen Busse 110 und 111 log2(Cachegröße) Bits breit sein.
Der Instruction Cache 103 wird vom Bus Interface 104 aus dem Hauptspeicher 201 mit kompletten Funktionen gefüllt. Die Busse 113 und 114 sind die Adress-bzw. Datenbusse zwischen dem Bus Interface 104 und dem Instruction Cache 103. 2 ·· 99 9 99 9 99 • 9 9 9 99 9 9 9 9 9 9 9 9 9 9 9 9 99 9 9 9 9 9 9999 9 9 9 9 9 9 9 9 9 9 99 9999 999 9999 9 ·· Über den Adressbus 117 und dem Datenbus 118 werden Lade- und Speicheranforderungen des Prozessorkems 101 abgewickelt.
Das Bus Interface 104 wickelt den Datenaustausch und das Laden des Instruction Caches 103 mit dem Hauptspeicher 201 über den Adressbus 210 und dem Datenbus 211 ab. Da das Laden des Instruction Caches 103 nur bei einem Funktionsaufruf oder einer Rückkehr aus einer Funktion passiert, kommt es zu keinen Konflikten mit den Lade- und Speicheranforderungen des Prozessorkems 101.
Der Block RAM 105 dient dem Prozessor zur Speicherung welche Blöcke des Instruction Caches 103 von welchen Funktionen belegt sind. Er wird über den Adressbus 116 und den Datenbus 115 angesprochen.
Fig. 2 zeigt die Belegung von Cache Blöcken während der Ausführung des in Fig. 3 skizzierte Programms. Die Anzahl der Blöcke und die Strategie welche Blöcke ersetzt werden ist nur exemplarisch. Die Ersetzungsstrategie kann komplexer als bei herkömmlichen Instruction Caches ausfallen, da die Entscheidung seltener (nur beim Laden einer kompletten Funktion) anfallt. Die Belegung der Blöcke wird in Block RAM 105 gespeichert. Dieser muss gelesen werden um festzustellen ob ein ’cach hit‘ vorliegt und geschrieben werden, wenn eine Funktion neu in den Instruction Cache geladen wird.
Das Beispiel in Fig. 2 besteht aus 4 Funktionen, wobei die Funktionen A() und D() klein genug sind um in einen Block zu passen. Funktonen B() und C() sind größer und belegen zwei Blöcke. 301 zeigt den Zustand nach dem Aufruf der Funktion A(). Der erste Block ist belegt, die restlichen drei sind frei. Der Aufruf der Funktion B() innerhalb von A0 fuhrt zur Belegung wie in 302 gezeigt. Es ist nur mehr ein Block frei. Die Funktion C(), die von B0 aufgerufen wird benötigt jedoch zwei Blöcke. Wie in 303 gezeigt wird C() in Block 4 und Block 1 geladen, wodurch Funktion A0 nicht mehr im Cache ist.
Die Adressierung der Funktion C() über das Cacheende (Block 4) zum Cacheanfang (Block 1) geschieht implizit durch die Begrenzung vom Program Counter 102 auf die Cachegröße. Die Addition bzw. Subtraktion über die Cachgrenze hinaus ergibt implizit den korreten Überlauf bzw. Unterlauf des Program Counters 102.
Bei der Rückkehr von Funktion C() zur Funktion B0 ist kein Laden des Caches notwendig, da Sich Funktion B0 zu diesem Zeitpunkt noch im Cache befindet. Der Aufruf von Funktion D() führt zur Belegung wie in 304 gezeigt. Obwohl D() nur einen Block belegt und damit einen Teil BO verdrängt, ist Block 3 als unbelegt markiert. Dies ist Notwendig, da nur komplette Funktionen gültig sind.
Die Entscheidung ob D() Funktion B() oder Funktion CO aus dem Cache verdrängt ist abhängig von der Ersatzstrategie. In diesem Beispiel wird jeweils der nächste Block nach einer geladenen Funktion als Startblock für eine neue zu ladende Funktion verwendet. Dies ist aber nur eine Möglichkeit von vielen (z.B.: ’last recently used’ oder ’best fit’). Ebenfalls ist die Einteilung in vier Blöcken nur 3 ·· ·· • · · • ·* # · # · ·· · · • · · • · • • · 1 1 ·· • · • • · • •M t · • · t • · • · · ·· ···· ··· t··· • ·· exemplarisch zur Vereinfachung der Illustration. 4

Claims (4)

  1. ·· • · • *· • 1· • · • · ·· · · • · · • · • • · • · ·· • · • • · ···· · · • · • • · • · · t« ···· ··· mm • ·· "Ί Patentansprüche 1. Instruction Cache der dadurch gekennzeichnet ist, dass komplette Funktionen gespeichert werden, die nur bei einem Funktionsaufruf oder einem Rücksprung aus einer Funktion geladen werden und dadurch das Echtzeitverhalten dieses Instruction Caches genau Modellierbar ist.
  2. 2. Instruciton Cache nach Anspruch 1, dadurch gekennzeichnet, dass Funktionen innerhalb des Caches nur relativ adressiert werden und dadurch mehrere Funktionen jeweils in aufeinanderfolgenden Blocken gehalten werden können.
  3. 3. Instruction Cache nach Anspruch 1, dadurch gekennzeichnet, dass kein ’tag memory‘ notwendig ist und der Ersatz, das Block RAM (105), nur bei Funktionsaufruf bzw. Funktionsrückkehr vom Prozessorkem (101) gelesen bzw. geschrieben werden muss.
  4. 4. Instruciton Cache nach Anspruch 1, dadurch gekennzeichnet, dass durch die relative Adressierung der Hardwareaufwand für den Program Counter (102) und alle assoziierten Hardware (z.B.: Busse, Multiplexer, Adressüber-setzung) gering ist. 5
AT0138304A 2004-08-17 2004-08-17 Instruction cache für echtzeitsysteme AT500858B8 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
AT0138304A AT500858B8 (de) 2004-08-17 2004-08-17 Instruction cache für echtzeitsysteme
AT0932505A AT505203A5 (de) 2004-08-17 2005-08-12 Instruction cache für echtzeitsysteme
PCT/AT2005/000326 WO2006017874A2 (de) 2004-08-17 2005-08-12 Befehls-cachespeicher für echtzeitsysteme

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AT0138304A AT500858B8 (de) 2004-08-17 2004-08-17 Instruction cache für echtzeitsysteme

Publications (3)

Publication Number Publication Date
AT500858A4 true AT500858A4 (de) 2006-04-15
AT500858B1 AT500858B1 (de) 2006-04-15
AT500858B8 AT500858B8 (de) 2007-02-15

Family

ID=35134456

Family Applications (2)

Application Number Title Priority Date Filing Date
AT0138304A AT500858B8 (de) 2004-08-17 2004-08-17 Instruction cache für echtzeitsysteme
AT0932505A AT505203A5 (de) 2004-08-17 2005-08-12 Instruction cache für echtzeitsysteme

Family Applications After (1)

Application Number Title Priority Date Filing Date
AT0932505A AT505203A5 (de) 2004-08-17 2005-08-12 Instruction cache für echtzeitsysteme

Country Status (2)

Country Link
AT (2) AT500858B8 (de)
WO (1) WO2006017874A2 (de)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4755935A (en) * 1986-01-27 1988-07-05 Schlumberger Technology Corporation Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction
JPH01205228A (ja) * 1988-02-10 1989-08-17 Hitachi Ltd 命令バツフアシステム
US5490262A (en) * 1989-09-01 1996-02-06 Oki Electric Industry Co., Ltd. Dual cache memory device with cache monitoring
GB9118312D0 (en) * 1991-08-24 1991-10-09 Motorola Inc Real time cache implemented by dual purpose on-chip memory
US5353425A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
US5974534A (en) * 1994-02-14 1999-10-26 Hewlett-Packard Company Predecoding and steering mechanism for instructions in a superscalar processor
WO1997036234A1 (en) * 1996-03-28 1997-10-02 International Business Machines Corporation Cache multi-block touch mechanism for object oriented computer system
US5893142A (en) * 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor
US5913224A (en) * 1997-02-26 1999-06-15 Advanced Micro Devices, Inc. Programmable cache including a non-lockable data way and a lockable data way configured to lock real-time data
US6157981A (en) * 1998-05-27 2000-12-05 International Business Machines Corporation Real time invariant behavior cache
US7143268B2 (en) * 2000-12-29 2006-11-28 Stmicroelectronics, Inc. Circuit and method for instruction compression and dispersal in wide-issue processors
DE10204345A1 (de) * 2002-02-01 2003-08-14 Systemonic Ag Verfahren zur Befehlsbearbeitung

Also Published As

Publication number Publication date
AT500858B8 (de) 2007-02-15
WO2006017874A3 (de) 2006-11-23
WO2006017874A2 (de) 2006-02-23
AT500858B1 (de) 2006-04-15
AT505203A5 (de) 2008-11-15

Similar Documents

Publication Publication Date Title
DE69129919T2 (de) Verfahren zur Kompilierung von Rechnerbefehlen, um Cachespeicherleistung zu verbessern
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
DE69824688T2 (de) System und Verfahren zur Leistungsoptimierung eines Rechnersystems
DE69032812T2 (de) Vorrichtung und Verfahren zur parallelen Verarbeitung
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE69721368T2 (de) Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher
DE69816686T2 (de) Hochfrequenzabtastung von Leistungszählern
DE69224084T2 (de) Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür
DE3280446T2 (de) Digitales Datenverarbeitungssystem.
DE69427734T2 (de) Linearadressierter Mikroprozessorcachespeicher
DE2716051C2 (de) Datenverarbeitungsanlage mit einem oder mehreren Prozessoren mit mindestem einem Ein-/Ausgabekanal mit mehreren Unterkanälen und mit einer Speicheranordnung, bei der zum Speicherzugriff Schlüssel verwendet werden
DE69132018T2 (de) Rechner mit Vorausholungs-Cache-Speicher
DE10393803T5 (de) Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff
DE69322244T2 (de) Verfahren und System zur Erhöhung der Systemspeichergleichzeitigkeit eines Multiprozessor-Rechnersystems
DE112019002336T5 (de) Speicherpoolzuordnung für ein mehrkern-system
DE112004000694B4 (de) Ein Verfahren und eine Vorrichtung zur Verbesserung der Multi-CPU-Systemleistung für Speicherzugriffe
DE69626263T2 (de) System zur Zuteilung mehrerer Befehle ohne Verzweigungsunterbrechung in einem Pipelineprozessor
WO2003060747A2 (de) Reconfigurierbarer prozessor
AT500858A4 (de) Instruction cache für echtzeitsysteme
DE2717700C2 (de) Speicherzugriffsanordnung
DE102009032071A1 (de) Technik für das Disponieren von Threads
DE69129252T2 (de) Verfahren zum Betrieb eines Rechnerspeichers und Anordnung
US7779230B2 (en) Data flow execution of methods in sequential programs
DE4330119C1 (de) Verfahren zum gesteuerten Vorladen von Informationsblöcken in Cacheblockgröße in einen Cachespeicher eines Rechners bei Ablauf eines Programms
EP0579633B1 (de) Verfahren zum maschinellen erstellen eines aus mehreren programmteilen bestehenden programmes

Legal Events

Date Code Title Description
ELJ Ceased due to non-payment of the annual fee